From b01f59c0345924847dcb0e514b7342f7e3aadbca Mon Sep 17 00:00:00 2001 From: tymmesyde Date: Mon, 14 Aug 2023 12:09:31 +0000 Subject: [PATCH] deploy: cbf28a4e1d85872d68ff921c80ae92c7a7957ee6 --- .../binaries/stremio_core_web_bg.wasm | Bin 0 -> 3289753 bytes .../favicons/favicon.ico | Bin .../favicons/icon-96.png | Bin .../fonts/Roboto-Bold.ttf | Bin .../fonts/Roboto-BoldItalic.ttf | Bin .../fonts/Roboto-Light.ttf | Bin .../fonts/Roboto-LightItalic.ttf | Bin .../fonts/Roboto-Medium.ttf | Bin .../fonts/Roboto-MediumItalic.ttf | Bin .../fonts/Roboto-Regular.ttf | Bin .../fonts/Roboto-RegularItalic.ttf | Bin .../images/anonymous.png | Bin .../images/default_avatar.png | Bin .../images/empty.png | Bin .../images/icon_x192.png | Bin .../images/icon_x512.png | Bin .../images/intro_background.jpg | Bin .../images/maskable_icon_x192.png | Bin .../images/maskable_icon_x512.png | Bin .../images/stremio_symbol.png | Bin .../manifest.json | 0 .../scripts/main.js | 2 ++ .../scripts/main.js.map | 1 + .../scripts/worker.js | 2 +- .../scripts/worker.js.map | 2 +- .../styles/main.css | 6 +++--- .../styles/main.css.map | 1 + .../binaries/stremio_core_web_bg.wasm | Bin 3288208 -> 0 bytes .../scripts/main.js | 2 -- .../scripts/main.js.map | 1 - .../styles/main.css.map | 1 - development/index.html | 2 +- development/service-worker.js | 2 +- development/service-worker.js.map | 2 +- 34 files changed, 12 insertions(+), 12 deletions(-) create mode 100644 development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/binaries/stremio_core_web_bg.wasm rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/favicons/favicon.ico (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/favicons/icon-96.png (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/fonts/Roboto-Bold.ttf (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/fonts/Roboto-BoldItalic.ttf (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/fonts/Roboto-Light.ttf (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/fonts/Roboto-LightItalic.ttf (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/fonts/Roboto-Medium.ttf (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/fonts/Roboto-MediumItalic.ttf (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/fonts/Roboto-Regular.ttf (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/fonts/Roboto-RegularItalic.ttf (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/images/anonymous.png (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/images/default_avatar.png (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/images/empty.png (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/images/icon_x192.png (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/images/icon_x512.png (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/images/intro_background.jpg (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/images/maskable_icon_x192.png (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/images/maskable_icon_x512.png (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/images/stremio_symbol.png (100%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/manifest.json (100%) create mode 100644 development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/main.js create mode 100644 development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/main.js.map rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/scripts/worker.js (91%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/scripts/worker.js.map (95%) rename development/{f4f59074954b11898de7b384b6320863c5aa1fba => cbf28a4e1d85872d68ff921c80ae92c7a7957ee6}/styles/main.css (97%) create mode 100644 development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/styles/main.css.map delete mode 100644 development/f4f59074954b11898de7b384b6320863c5aa1fba/binaries/stremio_core_web_bg.wasm delete mode 100644 development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/main.js delete mode 100644 development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/main.js.map delete mode 100644 development/f4f59074954b11898de7b384b6320863c5aa1fba/styles/main.css.map diff --git a/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/binaries/stremio_core_web_bg.wasm b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/binaries/stremio_core_web_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..28f42dc0fad74abbf71465fb196044531cebb8ef GIT binary patch literal 3289753 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

#xsd!&?n^TY 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

5P4m+Wq30iku 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 z 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

pTwFF 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

eHH$ly0V?L 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

  • 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ϡ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�eZxJ~-#i-Z(}c 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

    (146mucOt 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 E0U-sMf&c&j literal 0 HcmV?d00001 diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/favicons/favicon.ico b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/favicons/favicon.ico similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/favicons/favicon.ico rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/favicons/favicon.ico diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/favicons/icon-96.png b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/favicons/icon-96.png similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/favicons/icon-96.png rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/favicons/icon-96.png diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Bold.ttf b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Bold.ttf similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Bold.ttf rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Bold.ttf diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-BoldItalic.ttf b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-BoldItalic.ttf similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-BoldItalic.ttf rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-BoldItalic.ttf diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Light.ttf b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Light.ttf similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Light.ttf rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Light.ttf diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-LightItalic.ttf b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-LightItalic.ttf similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-LightItalic.ttf rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-LightItalic.ttf diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Medium.ttf b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Medium.ttf similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Medium.ttf rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Medium.ttf diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-MediumItalic.ttf b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-MediumItalic.ttf similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-MediumItalic.ttf rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-MediumItalic.ttf diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Regular.ttf b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Regular.ttf similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Regular.ttf rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Regular.ttf diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-RegularItalic.ttf b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-RegularItalic.ttf similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-RegularItalic.ttf rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-RegularItalic.ttf diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/images/anonymous.png b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/anonymous.png similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/images/anonymous.png rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/anonymous.png diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/images/default_avatar.png b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/default_avatar.png similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/images/default_avatar.png rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/default_avatar.png diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/images/empty.png b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/empty.png similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/images/empty.png rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/empty.png diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/images/icon_x192.png b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/icon_x192.png similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/images/icon_x192.png rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/icon_x192.png diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/images/icon_x512.png b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/icon_x512.png similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/images/icon_x512.png rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/icon_x512.png diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/images/intro_background.jpg b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/intro_background.jpg similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/images/intro_background.jpg rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/intro_background.jpg diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/images/maskable_icon_x192.png b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/maskable_icon_x192.png similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/images/maskable_icon_x192.png rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/maskable_icon_x192.png diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/images/maskable_icon_x512.png b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/maskable_icon_x512.png similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/images/maskable_icon_x512.png rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/maskable_icon_x512.png diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/images/stremio_symbol.png b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/stremio_symbol.png similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/images/stremio_symbol.png rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/stremio_symbol.png diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/manifest.json b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/manifest.json similarity index 100% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/manifest.json rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/manifest.json diff --git a/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/main.js b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/main.js new file mode 100644 index 000000000..5f13cf5a5 --- /dev/null +++ b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/main.js @@ -0,0 +1,2 @@ +(()=>{var e={7228:e=>{e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{e.exports=function(e){if(Array.isArray(e))return e},e.exports.default=e.exports,e.exports.__esModule=!0},8926:e=>{function t(e,t,o,a,n,i,r){try{var s=e[i](r),E=s.value}catch(e){return void o(e)}s.done?t(E):Promise.resolve(E).then(a,n)}e.exports=function(e){return function(){var o=this,a=arguments;return new Promise((function(n,i){var r=e.apply(o,a);function s(e){t(r,n,i,s,E,"next",e)}function E(e){t(r,n,i,s,E,"throw",e)}s(void 0)}))}},e.exports.default=e.exports,e.exports.__esModule=!0},4575:e=>{e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},3913:e=>{function t(e,t){for(var o=0;o{e.exports=function(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e},e.exports.default=e.exports,e.exports.__esModule=!0},5318:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.default=e.exports,e.exports.__esModule=!0},3884:e=>{e.exports=function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i}},e.exports.default=e.exports,e.exports.__esModule=!0},521:e=>{e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},6479:(e,t,o)=>{var a=o(7316);e.exports=function(e,t){if(null==e)return{};var o,n,i=a(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i},e.exports.default=e.exports,e.exports.__esModule=!0},7316:e=>{e.exports=function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a=0||(n[o]=e[o]);return n},e.exports.default=e.exports,e.exports.__esModule=!0},3038:(e,t,o)=>{var a=o(2858),n=o(3884),i=o(379),r=o(521);e.exports=function(e,t){return a(e)||n(e,t)||i(e,t)||r()},e.exports.default=e.exports,e.exports.__esModule=!0},8:e=>{function t(o){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=t=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=t=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),t(o)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0},379:(e,t,o)=>{var a=o(7228);e.exports=function(e,t){if(e){if("string"==typeof e)return a(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?a(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},7757:(e,t,o)=>{e.exports=o(5666)},6553:(e,t,o)=>{"use strict";var a=o(5318),n=a(o(7757)),i=a(o(8926));e.exports=function(e,t){t.addEventListener("message",(function(){var o=(0,i.default)(n.default.mark((function o(a){var i,r,s,E,_,T,l;return n.default.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(i=a.data.request){o.next=3;break}return o.abrupt("return");case 3:if(r=i.id,s=i.path,E=i.args,o.prev=4,"function"!=typeof(_=s.reduce((function(e,t){return e[t]}),e))){o.next=13;break}return l=s.slice(0,s.length-1).reduce((function(e,t){return e[t]}),e),o.next=10,_.apply(l,E);case 10:T=o.sent,o.next=16;break;case 13:return o.next=15,_;case 15:T=o.sent;case 16:t.postMessage({response:{id:r,result:{data:T}}}),o.next=22;break;case 19:o.prev=19,o.t0=o.catch(4),t.postMessage({response:{id:r,result:{error:o.t0}}});case 22:case"end":return o.stop()}}),o,null,[[4,19]])})));return function(e){return o.apply(this,arguments)}})()),this.call=(function(){var e=(0,i.default)(n.default.mark((function e(o,a){var i;return n.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=Math.random().toString(32).slice(2),e.abrupt("return",new Promise((function(e,n){t.addEventListener("message",(function o(a){var r=a.data.response;r&&r.id===i&&(t.removeEventListener("message",o),"error"in r.result?n(r.result.error):e(r.result.data))})),t.postMessage({request:{id:i,path:o,args:a}})})));case 2:case"end":return e.stop()}}),e)})));return function(t,o){return e.apply(this,arguments)}})()}},5796:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(1785),r=a.forwardRef((function(e,t){var o=i[e.icon];return o?a.createElement("svg",Object.assign({viewBox:o.viewBox},e,{ref:t}),o.paths.map((function(e,t){return a.createElement("path",{key:t,d:e})}))):null}));r.displayName="Icon",r.propTypes={icon:n.oneOf(Object.keys(i))},e.exports=r},2601:(e,t,o)=>{var a=o(5796);e.exports=a},792:(e,t,o)=>{var a=o(6729),n=o(9657);function i(e){var t=(e=e||{}).containerElement;if(!(t instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var o=e.chromecastTransport;if(!o)throw new Error("Chromecast transport required");var i=o.getCastDevice();if(null===i)throw new Error("Chromecast session must be started");var r=document.createElement("div");r.style.display="flex",r.style.flexDirection="row",r.style.alignItems="center",r.style.justifyContent="center",r.style.width="100%",r.style.height="100%",r.style.backgroundColor="black";var s=document.createElement("div");s.style.flex="none",s.style.maxWidth="80%",s.style.fontSize="5vmin",s.style.lineHeight="1.2em",s.style.maxHeight="3.6em",s.style.textAlign="center",s.style.color="#FFFFFF90",s.innerText="Casting to "+i.friendlyName,r.appendChild(s),t.appendChild(r),o.on("message",u),o.on("message-error",S);var E=new a,_=!1,T={stream:!1,loaded:!1,paused:!1,time:!1,duration:!1,buffering:!1,buffered:!1,audioTracks:!1,selectedAudioTrackId:!1,subtitlesTracks:!1,selectedSubtitlesTrackId:!1,subtitlesOffset:!1,subtitlesSize:!1,subtitlesTextColor:!1,subtitlesBackgroundColor:!1,subtitlesOutlineColor:!1,volume:!1,muted:!1,playbackSpeed:!1,extraSubtitlesTracks:!1,selectedExtraSubtitlesTrackId:!1,extraSubtitlesDelay:!1,extraSubtitlesSize:!1,extraSubtitlesOffset:!1,extraSubtitlesTextColor:!1,extraSubtitlesBackgroundColor:!1,extraSubtitlesOutlineColor:!1};function l(e,t){E.emit("error",Object.assign({},n.CHROMECAST_SENDER_VIDEO.MESSAGE_SEND_FAILED,{error:e,action:t}))}function S(e){E.emit("error",Object.assign({},n.CHROMECAST_SENDER_VIDEO.INVALID_MESSAGE_RECEIVED,{error:e}))}function u(e){if(e&&"string"==typeof e.event){var t=Array.isArray(e.args)?e.args:[];E.emit.apply(E,[e.event].concat(t))}else S(new Error("Invalid message: "+e))}function d(e,t){T[e]&&E.emit("propChanged",e,t)}this.on=function(e,t){if(_)throw new Error("Video is destroyed");E.on(e,t)},this.dispatch=function(e){if(_)throw new Error("Video is destroyed");if(e)switch(e.type){case"observeProp":return n=e.propName,T.hasOwnProperty(n)&&(T[n]=!0),void o.sendMessage(e).catch((function(t){l(t,e)}));case"setProp":return void o.sendMessage(e).catch((function(t){l(t,e)}));case"command":return a=e.commandName,e.commandArgs,"destroy"===a&&(_=!0,d("stream",null),d("loaded",null),d("paused",null),d("time",null),d("duration",null),d("buffering",null),d("buffered",null),d("audioTracks",[]),d("selectedAudioTrackId",[]),d("subtitlesTracks",[]),d("selectedSubtitlesTrackId",null),d("subtitlesOffset",null),d("subtitlesSize",null),d("subtitlesTextColor",null),d("subtitlesBackgroundColor",null),d("subtitlesOutlineColor",null),d("volume",null),d("muted",null),d("playbackSpeed",null),d("extraSubtitlesTracks",[]),d("selectedExtraSubtitlesTrackId",null),d("extraSubtitlesDelay",null),d("extraSubtitlesSize",null),d("extraSubtitlesOffset",null),d("extraSubtitlesTextColor",null),d("extraSubtitlesBackgroundColor",null),d("extraSubtitlesOutlineColor",null),E.removeAllListeners(),o.off("message",u),t.removeChild(r)),void o.sendMessage(e).catch((function(t){l(t,e)}))}var a,n;throw new Error("Invalid action dispatched: "+JSON.stringify(e))}}i.canPlayStream=function(){return Promise.resolve(!0)},i.manifest={name:"ChromecastSenderVideo",external:!0,props:["stream","loaded","paused","time","duration","buffering","buffered","audioTracks","selectedAudioTrackId","subtitlesTracks","selectedSubtitlesTrackId","subtitlesOffset","subtitlesSize","subtitlesTextColor","subtitlesBackgroundColor","subtitlesOutlineColor","volume","muted","playbackSpeed","extraSubtitlesTracks","selectedExtraSubtitlesTrackId","extraSubtitlesDelay","extraSubtitlesSize","extraSubtitlesOffset","extraSubtitlesTextColor","extraSubtitlesBackgroundColor","extraSubtitlesOutlineColor"],commands:["load","unload","destroy","addExtraSubtitlesTracks"],events:["propValue","propChanged","ended","error","subtitlesTrackLoaded","audioTrackLoaded","extraSubtitlesTrackLoaded","implementationChanged"]},e.exports=i},3153:(e,t,o)=>{var a=o(792);e.exports=a},1431:(e,t,o)=>{var a=o(6729),n=o(7631),i=o(3465),r=o(2682),s=o(6767),E=o(9657),_=o(8973),T=o(1566);function l(e){var t=(e=e||{}).containerElement;if(!(t instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var o=document.createElement("style");t.appendChild(o),o.sheet.insertRule("video::cue { font-size: 4vmin; color: rgb(255, 255, 255); background-color: rgba(0, 0, 0, 0); text-shadow: rgb(34, 34, 34) 1px 1px 0.1em; }");var l=document.createElement("video");l.style.width="100%",l.style.height="100%",l.style.backgroundColor="black",l.controls=!1,l.onerror=function(){!(function(){if(d)return;var e;switch(l.error.code){case 1:e=E.HTML_VIDEO.MEDIA_ERR_ABORTED;break;case 2:e=E.HTML_VIDEO.MEDIA_ERR_NETWORK;break;case 3:e=E.HTML_VIDEO.MEDIA_ERR_DECODE;break;case 4:e=E.HTML_VIDEO.MEDIA_ERR_SRC_NOT_SUPPORTED;break;default:e=E.UNKNOWN_ERROR}R(Object.assign({},e,{critical:!0,error:l.error}))})()},l.onended=function(){u.emit("ended")},l.onpause=function(){m("paused")},l.onplay=function(){m("paused")},l.ontimeupdate=function(){m("time"),m("buffered")},l.ondurationchange=function(){m("duration")},l.onwaiting=function(){m("buffering"),m("buffered")},l.onseeking=function(){m("time"),m("buffering"),m("buffered")},l.onseeked=function(){m("time"),m("buffering"),m("buffered")},l.onstalled=function(){m("buffering"),m("buffered")},l.onplaying=function(){m("time"),m("buffering"),m("buffered")},l.oncanplay=function(){m("buffering"),m("buffered")},l.canplaythrough=function(){m("buffering"),m("buffered")},l.onloadedmetadata=function(){m("loaded")},l.onloadeddata=function(){m("buffering"),m("buffered")},l.onvolumechange=function(){m("volume"),m("muted")},l.onratechange=function(){m("playbackSpeed")},l.textTracks.onchange=function(){m("subtitlesTracks"),m("selectedSubtitlesTrackId"),N(),Array.from(l.textTracks).forEach((function(e){e.oncuechange=N}))},t.appendChild(l);var S=null,u=new a,d=!1,c=null,A=0,I={stream:!1,loaded:!1,paused:!1,time:!1,duration:!1,buffering:!1,buffered:!1,subtitlesTracks:!1,selectedSubtitlesTrackId:!1,subtitlesOffset:!1,subtitlesSize:!1,subtitlesTextColor:!1,subtitlesBackgroundColor:!1,subtitlesOutlineColor:!1,audioTracks:!1,selectedAudioTrackId:!1,volume:!1,muted:!1,playbackSpeed:!1};function O(e){switch(e){case"stream":return c;case"loaded":return null===c?null:l.readyState>=l.HAVE_METADATA;case"paused":return null===c?null:!!l.paused;case"time":return null!==c&&null!==l.currentTime&&isFinite(l.currentTime)?Math.floor(1e3*l.currentTime):null;case"duration":return null!==c&&null!==l.duration&&isFinite(l.duration)?Math.floor(1e3*l.duration):null;case"buffering":return null===c?null:l.readyState0?e.lang:"string"==typeof e.name&&e.name.length>0?e.name:String(e.id),label:"string"==typeof e.name&&e.name.length>0?e.name:"string"==typeof e.lang&&e.lang.length>0?e.lang:String(e.id),origin:"EMBEDDED",embedded:!0})})):[];case"selectedAudioTrackId":return null!==S&&null!==S.audioTrack&&isFinite(S.audioTrack)&&-1!==S.audioTrack?"EMBEDDED_"+String(S.audioTrack):null;case"volume":return d||null===l.volume||!isFinite(l.volume)?null:Math.floor(100*l.volume);case"muted":return d?null:!!l.muted;case"playbackSpeed":return d||null===l.playbackRate||!isFinite(l.playbackRate)?null:l.playbackRate;default:return null}}function N(){Array.from(l.textTracks).forEach((function(e){Array.from(e.cues||[]).forEach((function(e){e.snapToLines=!1,e.line=100-A}))}))}function R(e){u.emit("error",e),e.critical&&p("unload")}function m(e){I[e]&&u.emit("propChanged",e,O(e))}function p(e,a){switch(e){case"load":p("unload"),a&&a.stream&&"string"==typeof a.stream.url?(c=a.stream,m("stream"),m("loaded"),l.autoplay="boolean"!=typeof a.autoplay||a.autoplay,l.currentTime=null!==a.time&&isFinite(a.time)?parseInt(a.time,10)/1e3:0,m("paused"),m("time"),m("duration"),m("buffering"),m("buffered"),m("subtitlesTracks"),m("selectedSubtitlesTrackId"),m("audioTracks"),m("selectedAudioTrackId"),_(c).then((function(e){c===a.stream&&("application/vnd.apple.mpegurl"===e&&n.isSupported()?((S=new n(T)).on(n.Events.AUDIO_TRACKS_UPDATED,(function(){m("audioTracks"),m("selectedAudioTrackId")})),S.on(n.Events.AUDIO_TRACK_SWITCHED,(function(){m("audioTracks"),m("selectedAudioTrackId")})),S.loadSource(c.url),S.attachMedia(l)):l.src=c.url)})).catch((function(){c===a.stream&&(l.src=c.url)}))):R(Object.assign({},E.UNSUPPORTED_STREAM,{critical:!0,stream:a?a.stream:null}));break;case"unload":c=null,Array.from(l.textTracks).forEach((function(e){e.oncuechange=null})),null!==S&&(S.removeAllListeners(),S.detachMedia(l),S.destroy(),S=null),l.removeAttribute("src"),l.load(),l.currentTime=0,m("stream"),m("loaded"),m("paused"),m("time"),m("duration"),m("buffering"),m("buffered"),m("subtitlesTracks"),m("selectedSubtitlesTrackId"),m("audioTracks"),m("selectedAudioTrackId");break;case"destroy":p("unload"),d=!0,m("subtitlesOffset"),m("subtitlesSize"),m("subtitlesTextColor"),m("subtitlesBackgroundColor"),m("subtitlesOutlineColor"),m("volume"),m("muted"),m("playbackSpeed"),u.removeAllListeners(),l.onerror=null,l.onended=null,l.onpause=null,l.onplay=null,l.ontimeupdate=null,l.ondurationchange=null,l.onwaiting=null,l.onseeking=null,l.onseeked=null,l.onstalled=null,l.onplaying=null,l.oncanplay=null,l.canplaythrough=null,l.onloadeddata=null,l.onvolumechange=null,l.onratechange=null,l.textTracks.onchange=null,t.removeChild(l),t.removeChild(o)}}this.on=function(e,t){if(d)throw new Error("Video is destroyed");u.on(e,t)},this.dispatch=function(e){if(d)throw new Error("Video is destroyed");if(e)switch((e=r(i(e))).type){case"observeProp":return t=e.propName,void(I.hasOwnProperty(t)&&(u.emit("propValue",t,O(t)),I[t]=!0));case"setProp":return void(function(e,t){switch(e){case"paused":null!==c&&(t?l.pause():l.play(),m("paused"));break;case"time":null!==c&&null!==t&&isFinite(t)&&(l.currentTime=parseInt(t,10)/1e3,m("time"));break;case"selectedSubtitlesTrackId":if(null!==c){Array.from(l.textTracks).forEach((function(e,o){e.mode="EMBEDDED_"+String(o)===t?"showing":"disabled"}));var a=O("subtitlesTracks").find((function(e){return e.id===t}));a&&(m("selectedSubtitlesTrackId"),u.emit("subtitlesTrackLoaded",a))}break;case"subtitlesOffset":null!==t&&isFinite(t)&&(A=Math.max(0,Math.min(100,parseInt(t,10))),N(),m("subtitlesOffset"));break;case"subtitlesSize":null!==t&&isFinite(t)&&(o.sheet.cssRules[0].style.fontSize=Math.floor(Math.max(0,parseInt(t,10))/25)+"vmin",m("subtitlesSize"));break;case"subtitlesTextColor":if("string"==typeof t){try{o.sheet.cssRules[0].style.color=s(t).rgb().string()}catch(e){console.error("HTMLVideo",e)}m("subtitlesTextColor")}break;case"subtitlesBackgroundColor":if("string"==typeof t){try{o.sheet.cssRules[0].style.backgroundColor=s(t).rgb().string()}catch(e){console.error("HTMLVideo",e)}m("subtitlesBackgroundColor")}break;case"subtitlesOutlineColor":if("string"==typeof t){try{o.sheet.cssRules[0].style.textShadow=s(t).rgb().string()+" 1px 1px 0.1em"}catch(e){console.error("HTMLVideo",e)}m("subtitlesOutlineColor")}break;case"selectedAudioTrackId":if(null!==S){var n=O("audioTracks").find((function(e){return e.id===t}));S.audioTrack=n?parseInt(n.id.split("_").pop(),10):-1,n&&(m("selectedAudioTrackId"),u.emit("audioTrackLoaded",n))}break;case"volume":null!==t&&isFinite(t)&&(l.muted=!1,l.volume=Math.max(0,Math.min(100,parseInt(t,10)))/100,m("muted"),m("volume"));break;case"muted":l.muted=!!t,m("muted");break;case"playbackSpeed":null!==t&&isFinite(t)&&(l.playbackRate=parseFloat(t),m("playbackSpeed"))}})(e.propName,e.propValue);case"command":return void p(e.commandName,e.commandArgs)}var t;throw new Error("Invalid action dispatched: "+JSON.stringify(e))}}l.canPlayStream=function(e){return!e||e.behaviorHints&&e.behaviorHints.notWebReady?Promise.resolve(!1):_(e).then((function(e){return!!document.createElement("video").canPlayType(e)||"application/vnd.apple.mpegurl"===e&&n.isSupported()})).catch((function(){return!1}))},l.manifest={name:"HTMLVideo",external:!1,props:["stream","loaded","paused","time","duration","buffering","buffered","audioTracks","selectedAudioTrackId","subtitlesTracks","selectedSubtitlesTrackId","subtitlesOffset","subtitlesSize","subtitlesTextColor","subtitlesBackgroundColor","subtitlesOutlineColor","volume","muted","playbackSpeed"],commands:["load","unload","destroy"],events:["propValue","propChanged","ended","error","subtitlesTrackLoaded","audioTrackLoaded"]},e.exports=l},8973:e=>{e.exports=function(e){return e&&"string"==typeof e.url?e.behaviorHints&&e.behaviorHints.proxyHeaders&&e.behaviorHints.proxyHeaders.response&&"string"==typeof e.behaviorHints.proxyHeaders.response["content-type"]?Promise.resolve(e.behaviorHints.proxyHeaders.response["content-type"]):fetch(e.url,{method:"HEAD"}).then((function(e){if(e.ok)return e.headers.get("content-type");throw new Error(e.status+" ("+e.statusText+")")})):Promise.reject(new Error("Invalid stream parameter!"))}},1566:e=>{e.exports={debug:!1,enableWorker:!0,lowLatencyMode:!1,backBufferLength:30,maxBufferLength:50,maxMaxBufferLength:80,maxFragLookUpTolerance:0,maxBufferHole:0,appendErrorMaxRetry:20,nudgeMaxRetry:20,manifestLoadingTimeOut:3e4,manifestLoadingMaxRetry:10}},9222:(e,t,o)=>{var a=o(1431);e.exports=a},8879:(e,t,o)=>{var a=o(6729),n=o(3465),i=o(2682),r=o(9657);function s(e){var t=(e=e||{}).containerElement;if(!(t instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var o=document.createElement("iframe");o.style.width="100%",o.style.height="100%",o.style.border=0,o.style.backgroundColor="black",o.allowFullscreen=!1,o.allow="autoplay",t.appendChild(o);var s=new a,E=!1,_={stream:!1,loaded:!1,paused:!1,time:!1,duration:!1,buffering:!1,buffered:!1,volume:!1,muted:!1,playbackSpeed:!1};function T(e){if(e.source===o.contentWindow){var t=e.data||e.message;if(t&&"string"==typeof t.event){var a=t.event,n=Array.isArray(t.args)?t.args:[];s.emit.apply(s,[a].concat(n))}}}function l(e){o.contentWindow.postMessage(e,"*")}function S(e,t){_[e]&&s.emit("propChanged",e,t)}function u(e,a){switch(e){case"load":return u("unload"),a&&a.stream&&"string"==typeof a.stream.playerFrameUrl?(window.addEventListener("message",T,!1),o.onload=function(){l({type:"command",commandName:e,commandArgs:a})},o.src=a.stream.playerFrameUrl):(n=Object.assign({},r.UNSUPPORTED_STREAM,{critical:!0,stream:a?a.stream:null}),s.emit("error",n),n.critical&&u("unload")),!0;case"unload":return window.removeEventListener("message",T),o.onload=null,o.removeAttribute("src"),S("stream",null),S("loaded",null),S("paused",null),S("time",null),S("duration",null),S("buffering",null),S("buffered",null),S("volume",null),S("muted",null),S("playbackSpeed",null),!0;case"destroy":return u("unload"),E=!0,s.removeAllListeners(),t.removeChild(o),!0}var n}this.on=function(e,t){if(E)throw new Error("Video is destroyed");s.on(e,t)},this.dispatch=function(e){if(E)throw new Error("Video is destroyed");if(e)switch((e=i(n(e))).type){case"observeProp":return t=e.propName,_.hasOwnProperty(t)&&(_[t]=!0),void l(e);case"setProp":return void l(e);case"command":return void(u(e.commandName,e.commandArgs)||l(e))}var t;throw new Error("Invalid action dispatched: "+JSON.stringify(e))}}s.canPlayStream=function(e){return Promise.resolve(e&&"string"==typeof e.playerFrameUrl)},s.manifest={name:"IFrameVideo",external:!0,props:["stream","loaded","paused","time","duration","buffering","buffered","audioTracks","selectedAudioTrackId","subtitlesTracks","selectedSubtitlesTrackId","subtitlesOffset","subtitlesSize","subtitlesTextColor","subtitlesBackgroundColor","subtitlesOutlineColor","volume","muted","playbackSpeed","extraSubtitlesTracks","selectedExtraSubtitlesTrackId","extraSubtitlesDelay","extraSubtitlesSize","extraSubtitlesOffset","extraSubtitlesTextColor","extraSubtitlesBackgroundColor","extraSubtitlesOutlineColor"],commands:["load","unload","destroy","addExtraSubtitlesTracks"],events:["propValue","propChanged","ended","error","subtitlesTrackLoaded","audioTrackLoaded","extraSubtitlesTrackLoaded","implementationChanged"]},e.exports=s},7685:(e,t,o)=>{var a=o(8879);e.exports=a},8945:(e,t,o)=>{var a=o(6729),n=o(3465),i=o(2682),r=o(9657),s=.0066,E={stream:null,paused:"pause",time:"time-pos",duration:"duration",buffering:"buffering",volume:"volume",muted:"mute",playbackSpeed:"speed",audioTracks:"audioTracks",selectedAudioTrackId:"aid",subtitlesTracks:"subtitlesTracks",selectedSubtitlesTrackId:"sid",subtitlesSize:"sub-scale",subtitlesTextColor:"sub-color",subtitlesBackgroundColor:"sub-back-color",subtitlesOutlineColor:"sub-border-color"};function _(e){var t=(e=e||{}).shellTransport,o={};Object.keys(E).forEach((function(e){E[e]&&(o[E[e]]=e)})),t.send("mpv-command",["stop"]),t.send("mpv-observe-prop","path"),t.send("mpv-observe-prop","time-pos"),t.send("mpv-observe-prop","volume"),t.send("mpv-observe-prop","pause"),t.send("mpv-observe-prop","seeking"),t.send("mpv-observe-prop","eof-reached"),t.send("mpv-observe-prop","duration"),t.send("mpv-observe-prop","metadata"),t.send("mpv-observe-prop","video-params"),t.send("mpv-observe-prop","track-list"),t.send("mpv-observe-prop","paused-for-cache"),t.send("mpv-observe-prop","cache-buffering-state"),t.send("mpv-observe-prop","aid"),t.send("mpv-observe-prop","vid"),t.send("mpv-observe-prop","sid"),t.send("mpv-observe-prop","sub-scale"),t.send("mpv-observe-prop","sub-pos"),t.send("mpv-observe-prop","speed"),t.send("mpv-observe-prop","mpv-version"),t.send("mpv-observe-prop","ffmpeg-version");var _=new a,T=!1,l=null,S={},u=0,d=0,c={};function A(t){for(var o=t?"":"transparent",a=e.containerElement;a;a=a.parentElement)a.style.background=o}var I=0;function O(e){return E[e]?c[E[e]]:(console.log("Unsupported prop requested",e),null)}function N(e){_.emit("error",e),e.critical&&m("unload")}function R(e){S[e]&&_.emit("propChanged",e,O(e))}function m(o,a){switch(o){case"load":if(m("unload"),a&&a.stream&&"string"==typeof a.stream.url){l=a.stream,R("stream"),u=null!==a.time&&isFinite(a.time)?parseInt(a.time,10)/1e3:0,A(!1),t.send("mpv-set-prop",["no-sub-ass"]);var n="Win32"===navigator.platform?"direct3d":"opengl",i=e.mpvSeparateWindow?n:"opengl-cb",s=e.mpvSeparateWindow?"yes":"no";t.send("mpv-set-prop",["vo",i]),t.send("mpv-set-prop",["osc",s]),t.send("mpv-set-prop",["input-defalt-bindings",s]),t.send("mpv-set-prop",["input-vo-keyboard",s]),t.send("mpv-command",["loadfile",l.url]),t.send("mpv-set-prop",["pause",!1]),t.send("mpv-set-prop",["speed",c.speed]),t.send("mpv-set-prop",["aid",c.aid]),t.send("mpv-set-prop",["mute","no"]),R("paused"),R("time"),R("duration"),R("buffering"),R("volume"),R("muted"),R("subtitlesTracks"),R("selectedSubtitlesTrackId")}else N(Object.assign({},r.UNSUPPORTED_STREAM,{critical:!0,stream:a?a.stream:null}));break;case"unload":c={mute:!1,speed:1,subtitlesTracks:[],buffering:!0,aid:null,sid:null},u=0,d=0,t.send("mpv-command",["stop"]),R("stream"),R("paused"),R("time"),R("duration"),R("buffering"),R("volume"),R("muted"),R("subtitlesTracks"),R("selectedSubtitlesTrackId"),A(!0);break;case"destroy":m("unload"),T=!0,_.removeAllListeners()}}t.on("mpv-prop-change",(function(e){switch(e.name){case"mpv-version":case"ffmpeg-version":c[e.name]=(function(e){console.log(e.name+": "+e.data)})(e);break;case"duration":var a=0|e.data;c[e.name]=e.data>=30&&(!d||a===d)?Math.round(1e3*e.data):null,d=d?d+a>>1:a;break;case"time-pos":c[e.name]=Math.round(1e3*e.data),u&&(t.send("mpv-set-prop",["time-pos",u]),c[e.name]=Math.round(u),u=0);break;case"sub-scale":c[e.name]=Math.round(e.data/s);break;case"paused-for-cache":case"seeking":c.buffering!==e.data&&(c.buffering=e.data,R("buffering"));break;case"aid":case"sid":case"vid":c[e.name]=(function(e){return e.data?"EMBEDDED_"+e.data.toString():null})(e);break;case"track-list":c.audioTracks=e.data.filter((function(e){return"audio"===e.type})).map((function(e,t){return{id:"EMBEDDED_"+e.id,lang:void 0===e.lang?"Track"+(t+1):e.lang,label:void 0===e.title||void 0===e.lang?"":e.title||e.lang,origin:"EMBEDDED",embedded:!0,mode:e.id===c.aid?"showing":"disabled"}})),R("audioTracks"),c.subtitlesTracks=e.data.filter((function(e){return"sub"===e.type})).map((function(e,t){return{id:"EMBEDDED_"+e.id,lang:void 0===e.lang?"Track "+(t+1):e.lang,label:void 0===e.title||void 0===e.lang?"":e.title||e.lang,origin:"EMBEDDED",embedded:!0,mode:e.id===c.sid?"showing":"disabled"}})),R("subtitlesTracks");break;default:c[e.name]=e.data}var n="time-pos"===e.name?Math.floor(c["time-pos"]/1e3):null;n&&I===n||!o[e.name]||(n&&(I=n),R(o[e.name]))})),t.on("mpv-event-ended",(function(e){e.error?N(e.error):_.emit("ended")})),this.on=function(e,t){if(T)throw new Error("Video is destroyed");_.on(e,t)},this.dispatch=function(e){if(T)throw new Error("Video is destroyed");if(e)switch((e=i(n(e))).type){case"observeProp":o=e.propName,_.emit("propValue",o,O(o)),S[o]=!0;break;case"setProp":return void(function(e,o){switch(e){case"paused":null!==l&&t.send("mpv-set-prop",["pause",o]);break;case"time":null!==l&&null!==o&&isFinite(o)&&t.send("mpv-set-prop",["time-pos",o/1e3]);break;case"playbackSpeed":null!==l&&null!==o&&isFinite(o)&&t.send("mpv-set-prop",["speed",o]);break;case"volume":null!==l&&null!==o&&isFinite(o)&&(c.mute=!1,t.send("mpv-set-prop",["mute","no"]),t.send("mpv-set-prop",["volume",o]),R("muted"),R("volume"));break;case"muted":null!==l&&(t.send("mpv-set-prop",["mute",o?"yes":"no"]),c.mute=o,R("muted"));break;case"selectedAudioTrackId":if(null!==l){var a=o.slice("EMBEDDED_".length);t.send("mpv-set-prop",["aid",a])}break;case"selectedSubtitlesTrackId":null!==l&&(o?(a=o.slice("EMBEDDED_".length),t.send("mpv-set-prop",["sid",a]),_.emit("subtitlesTrackLoaded",o)):(t.send("mpv-set-prop",["sid","no"]),c.sid=null)),R("selectedSubtitlesTrackId");break;case"subtitlesSize":t.send("mpv-set-prop",[E[e],o*s]);break;case"subtitlesOffset":t.send("mpv-set-prop",[E[e],o]);break;case"subtitlesTextColor":case"subtitlesBackgroundColor":case"subtitlesOutlineColor":var n=o.replace(/^#(\w{6})(\w{2})$/,"#$2$1");t.send("mpv-set-prop",[E[e],n]);break;default:console.log("Unhandled setProp for",e)}})(e.propName,e.propValue);case"command":return void m(e.commandName,e.commandArgs)}var o}}_.canPlayStream=function(){return Promise.resolve(!0)},_.manifest={name:"ShellVideo",external:!1,props:Object.keys(E),commands:["load","unload","destroy"],events:["propValue","propChanged","ended","error","subtitlesTrackLoaded"]},e.exports=_},2024:(e,t,o)=>{var a=o(8945);e.exports=a},8117:(e,t,o)=>{var a=o(6729),n=o(3465),i=o(2682),r=o(2081),s=o(9657);function E(){var e=null,t=new a,o=!1;this.on=function(e,a){if(o)throw new Error("Video is destroyed");t.on(e,a)},this.dispatch=function(a,E){if(o)throw new Error("Video is destroyed");if(!a)throw new Error("Invalid action dispatched: "+JSON.stringify(a));if(E=E||{},"command"===(a=i(n(a))).type&&"load"===a.commandName&&a.commandArgs){var _=r(a.commandArgs,E);if(null!==e&&e.constructor!==_&&(e.dispatch({type:"command",commandName:"destroy"}),e=null),null===e){if(null===_)return void t.emit("error",Object.assign({},s.UNSUPPORTED_STREAM,{error:new Error("No video implementation was selected"),critical:!0,stream:a.commandArgs.stream}));(e=new _(E)).on("ended",(function(){t.emit("ended")})),e.on("error",(function(e){t.emit("error",e)})),e.on("propValue",(function(e,o){t.emit("propValue",e,o)})),e.on("propChanged",(function(e,o){t.emit("propChanged",e,o)})),e.on("subtitlesTrackLoaded",(function(e){t.emit("subtitlesTrackLoaded",e)})),e.on("audioTrackLoaded",(function(e){t.emit("audioTrackLoaded",e)})),e.on("extraSubtitlesTrackLoaded",(function(e){t.emit("extraSubtitlesTrackLoaded",e)})),_.manifest.external?e.on("implementationChanged",(function(e){t.emit("implementationChanged",e)})):t.emit("implementationChanged",_.manifest)}}if(null!==e)try{e.dispatch(a)}catch(t){console.error(e.constructor.manifest.name,t)}"command"===a.type&&"destroy"===a.commandName&&(e=null)},this.destroy=function(){o=!0,null!==e&&(e.dispatch({type:"command",commandName:"destroy"}),e=null),t.removeAllListeners()}}E.ERROR=s,e.exports=E},5010:(e,t,o)=>{var a=o(8117);e.exports=a},2081:(e,t,o)=>{var a=o(3153),n=o(2024),i=o(9222),r=o(5682),s=o(8846),E=o(7685),_=o(3142),T=o(5690),l=o(4282);e.exports=function(e,t){return e.stream&&"string"!=typeof e.stream.externalUrl?t.chromecastTransport&&t.chromecastTransport.getCastState()===cast.framework.CastState.CONNECTED?a:"string"==typeof e.stream.ytId?l(_):"string"==typeof e.stream.playerFrameUrl?E:t.shellTransport?T(l(n)):"string"==typeof e.streamingServerURL?void 0!==o.g.tizen?T(l(r)):void 0!==o.g.webOS?T(l(s)):T(l(i)):"string"==typeof e.stream.url?void 0!==o.g.webOS?l(s):void 0!==o.g.tizen?l(r):l(i):null:null}},5071:(e,t,o)=>{var a=o(6729),n=o(3465),i=o(2682),r=o(6767),s=o(9657);function E(e){var t=!0,o=1,E=null,_=null,T=(e=e||{}).containerElement;if(!(T instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var l,S=!1,u=100,d=0,c="rgb(255, 255, 255)",A="rgba(0, 0, 0, 0)",I="rgb(34, 34, 34)",O=document.createElement("object");O.type="application/avplayer",O.style.width="100%",O.style.height="100%",O.style.backgroundColor="black";var N=!1;function R(){if(l){var e=l.duration-(v("time")-l.now);e>0&&m(e,l.text)}}function m(e,t){if(!N){for(l={duration:e,text:t,now:v("time")},p&&(clearTimeout(p),p=!1);L.hasChildNodes();)L.removeChild(L.lastChild);L.style.bottom=d+"%";var a=document.createElement("span");a.innerHTML=t,a.style.display="inline-block",a.style.padding="0.2em",a.style.fontSize=Math.floor(u/25)+"vmin",a.style.color=c,a.style.backgroundColor=A,a.style.textShadow="1px 1px 0.1em "+I,L.appendChild(a),L.appendChild(document.createElement("br")),e&&(p=setTimeout((function(){for(;L.hasChildNodes();)L.removeChild(L.lastChild)}),parseInt(e*o)))}}var p=!1,h={onbufferingstart:function(){t=!0,y("buffering")},onbufferingprogress:function(){t=!0,y("buffering")},onbufferingcomplete:function(){t=!1,y("buffering")},oncurrentplaytime:function(){y("time")},onerror:function(){!(function(){if(C)return;var e;e=s.UNKNOWN_ERROR,P(Object.assign({},e,{critical:!0,error:e}))})()},onsubtitlechange:function(e,t){m(e,t)},onstreamcompleted:function(){f.emit("ended")}};window.webapis.avplay.setListener(h),T.appendChild(O);var L=document.createElement("div");L.style.position="absolute",L.style.right="0",L.style.bottom="0",L.style.left="0",L.style.zIndex="1",L.style.textAlign="center",T.style.position="relative",T.style.zIndex="0",T.appendChild(L);var f=new a,C=!1,D=null,g={stream:!1,paused:!1,time:!1,duration:!1,buffering:!1,subtitlesTracks:!1,selectedSubtitlesTrackId:!1,subtitlesOffset:!1,subtitlesSize:!1,subtitlesTextColor:!1,subtitlesBackgroundColor:!1,subtitlesOutlineColor:!1,audioTracks:!1,selectedAudioTrackId:!1,playbackSpeed:!1};function v(e){switch(e){case"stream":return D;case"paused":if(null===D)return null;var a=!("PAUSED"!==window.webapis.avplay.getState());return!a&&S&&(window.webapis.avplay.setSelectTrack("AUDIO",parseInt(S.replace("EMBEDDED_",""))),S=!1),a;case"time":var n=window.webapis.avplay.getCurrentTime();return null!==D&&null!==n&&isFinite(n)?Math.floor(n):null;case"duration":var i=window.webapis.avplay.getDuration();return null!==D&&null!==i&&isFinite(i)?Math.floor(i):null;case"buffering":return null===D?null:t;case"subtitlesTracks":if(null===D)return[];for(var r=window.webapis.avplay.getTotalTrackInfo(),s=[],T=0;T{var a=o(5071);e.exports=a},4333:(e,t,o)=>{var a=o(6729),n=o(3465),i=o(2682),r=o(9657);function s(e,t,o,a){t&&(e.onSuccess=t||function(){}),e.onFailure=function(){o&&o()},window.webOS.service.request(a||"luna://com.webos.media",e)}function E(e,t){window.webOS.service.request("luna://com.webos.applicationManager",{method:"launch",parameters:{id:e.need,params:{payload:[{fullPath:e.url,artist:"",subtitle:"",dlnaInfo:{flagVal:4096,cleartextSize:"-1",contentLength:"-1",opVal:1,protocolInfo:"http-get:*:video/x-matroska:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000",duration:0},mediaType:"VIDEO",thumbnail:"",deviceType:"DMR",album:"",fileName:e.name,lastPlayPosition:e.position}]}},onSuccess:function(){},onFailure:function(){"com.webos.app.photovideo"===e.need?(e.need="com.webos.app.smartshare",E(e)):"com.webos.app.smartshare"===e.need?(e.need="com.webos.app.mediadiscovery",E(e)):"com.webos.app.mediadiscovery"===e.need&&t()}})}var _=["black","white","yellow","red","green","blue"],T={"rgba(0, 0, 0, 255)":"black","rgba(255, 255, 255, 255)":"white","rgba(255, 255, 0, 255)":"yellow","rgba(255, 0, 0, 255)":"red","rgba(0, 255, 0, 255)":"green","rgba(0, 0, 255, 255)":"blue","rgba(0, 0, 0, 1)":"black","rgba(255, 255, 255, 1)":"white","rgba(255, 255, 0, 1)":"yellow","rgba(255, 0, 0, 1)":"red","rgba(0, 255, 0, 1)":"green","rgba(0, 0, 255, 1)":"blue","rgba(0, 0, 0)":"black","rgba(255, 255, 255)":"white","rgba(255, 255, 0)":"yellow","rgba(255, 0, 0)":"red","rgba(0, 255, 0)":"green","rgba(0, 0, 255)":"blue","#000000FF":"black","#FFFFFFFF":"white","#FFFF00FF":"yellow","#FF0000FF":"red","#00FF00FF":"green","#0000FFFF":"blue","#000000":"black","#FFFFFF":"white","#FFFF00":"yellow","#FF0000":"red","#00FF00":"green","#0000FF":"blue"};function l(e){var t=(e=e||{}).containerElement;if(!(t instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var o=!1,l=75,S=!0,u=!1,d=!1,c=!1,A=[],I=[],O=0,N=function(e){if(!u){u=!0;var t=!1;s({method:"subscribe",parameters:{mediaId:o,subscribe:!0}},(function(a){if(a.sourceInfo&&!t){t=!0;var n=a.sourceInfo.programInfo[0];!(function(e){if(A=[],e.numSubtitleTracks){for(var t=0;t=h.HAVE_METADATA&&null!==t&&isFinite(t))try{h.currentTime=parseInt(t,10)/1e3}catch(e){}break;case"selectedSubtitlesTrackId":if(null!==P)if(0===(t||"").indexOf("EMBEDDED_")){S&&m(!0),d=t;var a=parseInt(t.replace("EMBEDDED_",""));s({method:"selectTrack",parameters:{type:"text",mediaId:o,index:a}},(function(){var e=M("subtitlesTracks").find((function(e){return e.id===t}));A=A.map((function(e){return e.mode=e.id===d?"showing":"disabled",e})),e&&(g.emit("subtitlesTrackLoaded",e),G("selectedSubtitlesTrackId"))}))}else t||m(!1);break;case"subtitlesOffset":if(null!==t&&isFinite(t)){B=Math.max(0,Math.min(100,parseInt(t,10)));var n=0===(O=5)?-3:O<=2?-2:O<=3?-1:O<=5?0:O<=10?1:O<=25?2:O<=50?3:O<=100&&4;!1===n&&(n=0),s({method:"setSubtitlePosition",parameters:{mediaId:o,position:n}},(function(){})),G("subtitlesOffset")}break;case"subtitlesSize":if(null!==t&&isFinite(t)){l=Math.max(0,parseInt(t,10));var i=(u=l)<=75?1:u<=100?2:u<=150?3:u<=250&&4;!1===i&&(i=2),s({method:"setSubtitleFontSize",parameters:{mediaId:o,fontSize:i}},(function(){})),G("subtitlesSize")}break;case"subtitlesTextColor":if("string"==typeof t){var r="white";T[t]&&_.indexOf(T[t])>-1&&(r=T[t]),s({method:"setSubtitleCharacterColor",parameters:{mediaId:o,charColor:r}},(function(){})),L=t,G("subtitlesTextColor")}break;case"subtitlesBackgroundColor":"string"==typeof t&&(T[t]&&_.indexOf(T[t])>-1?s({method:"setSubtitleBackgroundColor",parameters:{mediaId:o,color:T[t]}},(function(){C||s({method:"setSubtitleBackgroundOpacity",parameters:{mediaId:o,bgOpacity:255}},(function(){C=255}))})):s({method:"setSubtitleBackgroundOpacity",parameters:{mediaId:o,bgOpacity:0}},(function(){C=0})),f=t,G("subtitlesBackgroundColor"));break;case"selectedAudioTrackId":if(0===(t||"").indexOf("EMBEDDED_")){c=t;a=parseInt(t.replace("EMBEDDED_",""));if(s({method:"selectTrack",parameters:{type:"audio",mediaId:o,index:a}},(function(){var e=M("audioTracks").find((function(e){return e.id===t}));I=I.map((function(e){return e.mode=e.id===c?"showing":"disabled",e})),e&&(g.emit("audioTrackLoaded",e),G("selectedAudioTrackId"))})),h.audioTracks){for(var E=0;E4&&(clearInterval(s),i())}),300)}else W(Object.assign({},r.UNSUPPORTED_STREAM,{critical:!0,stream:a?a.stream:null}));break;case"unload":P=null,y=null,Array.from(h.textTracks).forEach((function(e){e.oncuechange=null})),h.removeAttribute("src"),h.load(),G("stream"),G("paused"),G("time"),G("duration"),G("buffering"),G("buffered"),G("subtitlesTracks"),G("selectedSubtitlesTrackId"),G("audioTracks"),G("selectedAudioTrackId");break;case"destroy":k("unload"),v=!0,G("subtitlesOffset"),G("subtitlesSize"),G("subtitlesTextColor"),G("subtitlesBackgroundColor"),G("volume"),G("muted"),G("playbackSpeed"),g.removeAllListeners(),h.onerror=null,h.onended=null,h.onpause=null,h.onplay=null,h.ontimeupdate=null,h.ondurationchange=null,h.onwaiting=null,h.onseeking=null,h.onseeked=null,h.onstalled=null,h.onplaying=null,h.oncanplay=null,h.canplaythrough=null,h.onloadeddata=null,h.onloadedmetadata=null,h.onvolumechange=null,h.onratechange=null,h.textTracks.onchange=null,t.removeChild(h),t.removeChild(p)}var i,s}this.on=function(e,t){if(v)throw new Error("Video is destroyed");g.on(e,t)},this.dispatch=function(e){if(v)throw new Error("Video is destroyed");if(e)switch((e=i(n(e))).type){case"observeProp":return t=e.propName,void(b.hasOwnProperty(t)&&(g.emit("propValue",t,M(t)),b[t]=!0));case"setProp":return void F(e.propName,e.propValue);case"command":return void k(e.commandName,e.commandArgs)}var t;throw new Error("Invalid action dispatched: "+JSON.stringify(e))}}l.canPlayStream=function(){return Promise.resolve(!0)},l.manifest={name:"WebOsVideo",external:!1,props:["stream","paused","time","duration","buffering","buffered","audioTracks","selectedAudioTrackId","subtitlesTracks","selectedSubtitlesTrackId","subtitlesOffset","subtitlesSize","subtitlesTextColor","subtitlesBackgroundColor","volume","muted","playbackSpeed"],commands:["load","unload","destroy"],events:["propValue","propChanged","ended","error","subtitlesTrackLoaded","audioTrackLoaded"]},e.exports=l},8846:(e,t,o)=>{var a=o(4333);e.exports=a},9736:(e,t,o)=>{var a=o(6729),n=o(3465),i=o(2682),r=o(9657);function s(e){var t=null!==(e=e||{}).timeChangedTimeout&&isFinite(e.timeChangedTimeout)?parseInt(e.timeChangedTimeout,10):100,o=e.containerElement;if(!(o instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var s=document.createElement("script");s.type="text/javascript",s.src="https://www.youtube.com/iframe_api",s.onload=function(){if(d)return;if(!YT||"function"!=typeof YT.ready)return void O();YT.ready((function(){d||(YT&&YT.PlayerState&&"function"==typeof YT.Player?T=new YT.Player(E,{width:"100%",height:"100%",playerVars:{autoplay:1,cc_load_policy:3,controls:0,disablekb:1,enablejsapi:1,fs:0,iv_load_policy:3,loop:0,modestbranding:1,playsinline:1,rel:0},events:{onError:N,onReady:R,onApiChange:m,onStateChange:p}}):O())}))},s.onerror=O,o.appendChild(s);var E=document.createElement("div");E.style.width="100%",E.style.height="100%",E.style.backgroundColor="black",o.appendChild(E);var _=window.setInterval((function(){f("time"),f("volume"),f("muted")}),t),T=null,l=!1,S=null,u=new a,d=!1,c=null,A=null,I={stream:!1,loaded:!1,paused:!1,time:!1,duration:!1,buffering:!1,volume:!1,muted:!1,subtitlesTracks:!1,selectedSubtitlesTrackId:!1};function O(){d||L(Object.assign({},r.YOUTUBE_VIDEO.API_LOAD_FAILED,{critical:!0}))}function N(e){if(!d){var t;switch(e.data){case 2:t=r.YOUTUBE_VIDEO.INVALID_PARAMETER;break;case 5:t=r.YOUTUBE_VIDEO.HTML5_VIDEO;break;case 100:t=r.YOUTUBE_VIDEO.VIDEO_NOT_FOUND;break;case 101:case 150:t=r.YOUTUBE_VIDEO.VIDEO_NOT_EMBEDDABLE;break;default:t=r.UNKNOWN_ERROR}L(Object.assign({},t,{critical:!0,error:e}))}}function R(){d||(l=!0,null!==S&&(C("load",S),S=null))}function m(){d||("function"==typeof T.loadModule&&T.loadModule("captions"),"function"==typeof T.setOption&&T.setOption("captions","track",{}),f("paused"),f("time"),f("duration"),f("buffering"),f("volume"),f("muted"),f("subtitlesTracks"),f("selectedSubtitlesTrackId"))}function p(e){switch(f("buffering"),e.data){case YT.PlayerState.ENDED:u.emit("ended");break;case YT.PlayerState.CUED:case YT.PlayerState.UNSTARTED:case YT.PlayerState.PAUSED:case YT.PlayerState.PLAYING:f("paused"),f("time"),f("duration")}}function h(e){switch(e){case"stream":return c;case"loaded":return null!==c||null;case"paused":return null===c||"function"!=typeof T.getPlayerState?null:T.getPlayerState()!==YT.PlayerState.PLAYING;case"time":return null!==c&&"function"==typeof T.getCurrentTime&&null!==T.getCurrentTime()&&isFinite(T.getCurrentTime())?Math.floor(1e3*T.getCurrentTime()):null;case"duration":return null!==c&&"function"==typeof T.getDuration&&null!==T.getDuration()&&isFinite(T.getDuration())?Math.floor(1e3*T.getDuration()):null;case"buffering":return null===c||"function"!=typeof T.getPlayerState?null:T.getPlayerState()===YT.PlayerState.BUFFERING;case"volume":return null!==c&&"function"==typeof T.getVolume&&null!==T.getVolume()&&isFinite(T.getVolume())?T.getVolume():null;case"muted":return null===c||"function"!=typeof T.isMuted?null:T.isMuted();case"subtitlesTracks":return null===c||"function"!=typeof T.getOption?[]:(T.getOption("captions","tracklist")||[]).filter((function(e){return e&&"string"==typeof e.languageCode})).map((function(e,t){return Object.freeze({id:"EMBEDDED_"+String(t),lang:e.languageCode,label:"string"==typeof e.displayName?e.displayName:e.languageCode,origin:"EMBEDDED",embedded:!0})}));case"selectedSubtitlesTrackId":return null===c?null:A;default:return null}}function L(e){u.emit("error",e),e.critical&&C("unload")}function f(e){I[e]&&u.emit("propChanged",e,h(e))}function C(e,t){switch(e){case"load":if(C("unload"),t&&t.stream&&"string"==typeof t.stream.ytId)if(l){c=t.stream,f("stream"),f("loaded");var a="boolean"!=typeof t.autoplay||t.autoplay,n=null!==t.time&&isFinite(t.time)?parseInt(t.time,10)/1e3:0;a&&"function"==typeof T.loadVideoById?T.loadVideoById({videoId:t.stream.ytId,startSeconds:n}):"function"==typeof T.cueVideoById&&T.cueVideoById({videoId:t.stream.ytId,startSeconds:n}),f("paused"),f("time"),f("duration"),f("buffering"),f("volume"),f("muted"),f("subtitlesTracks"),f("selectedSubtitlesTrackId")}else S=t;else L(Object.assign({},r.UNSUPPORTED_STREAM,{critical:!0,stream:t?t.stream:null}));break;case"unload":S=null,c=null,f("stream"),f("loaded"),A=null,l&&"function"==typeof T.stopVideo&&T.stopVideo(),f("paused"),f("time"),f("duration"),f("buffering"),f("volume"),f("muted"),f("subtitlesTracks"),f("selectedSubtitlesTrackId");break;case"destroy":C("unload"),d=!0,u.removeAllListeners(),clearInterval(_),l&&"function"==typeof T.destroy&&T.destroy(),o.removeChild(s),o.removeChild(E)}}this.on=function(e,t){if(d)throw new Error("Video is destroyed");u.on(e,t)},this.dispatch=function(e){if(d)throw new Error("Video is destroyed");if(e)switch((e=i(n(e))).type){case"observeProp":return t=e.propName,void(I.hasOwnProperty(t)&&(u.emit("propValue",t,h(t)),I[t]=!0));case"setProp":return void(function(e,t){switch(e){case"paused":null!==c&&(t?"function"==typeof T.pauseVideo&&T.pauseVideo():"function"==typeof T.playVideo&&T.playVideo());break;case"time":null!==c&&"function"==typeof T.seekTo&&null!==t&&isFinite(t)&&T.seekTo(parseInt(t,10)/1e3);break;case"volume":null!==c&&null!==t&&isFinite(t)&&("function"==typeof T.unMute&&T.unMute(),"function"==typeof T.setVolume&&T.setVolume(Math.max(0,Math.min(100,parseInt(t,10)))),f("muted"),f("volume"));break;case"muted":null!==c&&(t?"function"==typeof T.mute&&T.mute():"function"==typeof T.unMute&&T.unMute(),f("muted"));break;case"selectedSubtitlesTrackId":if(null!==c){A=null;var o=h("subtitlesTracks").find((function(e){return e.id===t}));"function"==typeof T.setOption&&(o?(A=o.id,T.setOption("captions","track",{languageCode:o.lang}),u.emit("subtitlesTrackLoaded",o)):T.setOption("captions","track",{})),f("selectedSubtitlesTrackId")}}})(e.propName,e.propValue);case"command":return void C(e.commandName,e.commandArgs)}var t;throw new Error("Invalid action dispatched: "+JSON.stringify(e))}}s.canPlayStream=function(e){return Promise.resolve(e&&"string"==typeof e.ytId)},s.manifest={name:"YouTubeVideo",external:!1,props:["stream","loaded","paused","time","duration","buffering","volume","muted","subtitlesTracks","selectedSubtitlesTrackId"],commands:["load","unload","destroy"],events:["propValue","propChanged","ended","error","subtitlesTrackLoaded"]},e.exports=s},3142:(e,t,o)=>{var a=o(9736);e.exports=a},9657:e=>{e.exports={CHROMECAST_SENDER_VIDEO:{INVALID_MESSAGE_RECEIVED:{code:100,message:"Invalid message received"},MESSAGE_SEND_FAILED:{code:101,message:"Failed to send message"}},YOUTUBE_VIDEO:{API_LOAD_FAILED:{code:90,message:"YouTube player iframe API failed to load"},INVALID_PARAMETER:{code:91,message:"The request contains an invalid parameter value"},HTML5_VIDEO:{code:92,message:"The requested content cannot be played in an HTML5 player"},VIDEO_NOT_FOUND:{code:93,message:"The video requested was not found"},VIDEO_NOT_EMBEDDABLE:{code:94,message:"The owner of the requested video does not allow it to be played in embedded players"}},HTML_VIDEO:{MEDIA_ERR_ABORTED:{code:80,message:"Fetching process aborted"},MEDIA_ERR_NETWORK:{code:81,message:"Error occurred when downloading"},MEDIA_ERR_DECODE:{code:82,message:"Error occurred when decoding"},MEDIA_ERR_SRC_NOT_SUPPORTED:{code:83,message:"Video is not supported"}},WITH_HTML_SUBTITLES:{LOAD_FAILED:{code:70,message:"Failed to load external subtitles"}},WITH_STREAMING_SERVER:{CONVERT_FAILED:{code:60,message:"Streaming server failed to convert torrent stream"}},UNKNOWN_ERROR:{code:1,message:"Unknown error"},UNSUPPORTED_STREAM:{code:2,message:"Stream is not supported"}}},1654:(e,t,o)=>{var a=o(5010);e.exports=a},5015:e=>{var t,o=[{codec:"h264",mime:'video/mp4; codecs="avc1.42E01E"'},{codec:"h265",mime:'video/mp4; codecs="hev1.1.6.L150.B0"',aliases:["hevc"]},{codec:"vp8",mime:'video/mp4; codecs="vp8"'},{codec:"vp9",mime:'video/mp4; codecs="vp9"'}],a=[{codec:"aac",mime:'audio/mp4; codecs="mp4a.40.2"'},{codec:"mp3",mime:'audio/mp4; codecs="mp3"'},{codec:"ac3",mime:'audio/mp4; codecs="ac-3"'},{codec:"eac3",mime:'audio/mp4; codecs="ec-3"'},{codec:"vorbis",mime:'audio/mp4; codecs="vorbis"'},{codec:"opus",mime:'audio/mp4; codecs="opus"'}];function n(e,t){return t.mediaElement.canPlayType(e.mime)?[e.codec].concat(e.aliases||[]):[]}e.exports=(t=document.createElement("video"),{formats:["mp4"],videoCodecs:o.map((function(e){return n(e,{mediaElement:t})})).reduce((function(e,t){return e.concat(t)}),[]),audioCodecs:a.map((function(e){return n(e,{mediaElement:t})})).reduce((function(e,t){return e.concat(t)}),[]),maxAudioChannels:(function(){if(/firefox/i.test(window.navigator.userAgent))return 6;if(!window.AudioContext)return 2;var e=(new AudioContext).destination.maxChannelCount;return e>0?e:2})()})},9490:e=>{e.exports=function(e,t){if(tt?a=i-1:(e[i]{var a=o(4253);e.exports=a},6950:e=>{function t(e){for(var t="",o=(e=e.replace(/<[a-zA-Z/][^>]*>/g,"")).split(/\n/);o.length>3;){for(var a=3;a\s*(\d+):(\d+):(\d+)(?:,(\d+))?/);return i?(t+=i[1]+":"+i[2]+":"+i[3]+"."+i[4]+" --\x3e "+i[5]+":"+i[6]+":"+i[7]+"."+i[8]+"\n",o[n+=1]&&(t+=o[n]+"\n\n"),t):""}e.exports={convert:function(e){if(e.includes("WEBVTT"))return e;try{return(function(e){var o=e.replace(/\r+/g,""),a=(o=o.replace(/^\s+|\s+$/g,"")).split("\n\n"),n="";if(a.length>0){n+="WEBVTT\n\n";for(var i=0;i{var a=o(8369),n=o(9490);e.exports={parse:function(e){return new Promise((function(t,o){var i=new a.WebVTT.Parser(window,a.WebVTT.StringDecoder()),r=[],s=[],E={};i.oncue=function(e){var t={startTime:1e3*e.startTime|0,endTime:1e3*e.endTime|0,text:e.text};s.push(t),E[t.startTime]=E[t.startTime]||[],E[t.endTime]=E[t.endTime]||[]},i.onparsingerror=function(e){0===e.code?(i.oncue=null,i.onparsingerror=null,i.onflush=null,o(e)):(console.warn("Subtitles parsing error",e),r.push(e))},i.onflush=function(){E.times=Object.keys(E).map((function(e){return parseInt(e,10)})).sort((function(e,t){return e-t}));for(var e=0;e{var a=o(8369),n=o(9490);e.exports={render:function(e,t){var o=[],i=n(e.times,t);if(-1!==i)for(var r=e[e.times[i]],s=0;s{var a=o(6729),n=o(3465),i=o(2682),r=o(6767),s=o(9657),E=o(1494),_=o(2913),T=o(6950);e.exports=function(e){function t(t){var o=new e(t=t||{});o.on("error",(function(e){c.emit("error",e),e.critical&&y("unload")})),o.on("propValue",D.bind(null,"propValue")),o.on("propChanged",D.bind(null,"propChanged")),e.manifest.events.filter((function(e){return!["error","propValue","propChanged"].includes(e)})).forEach((function(e){o.on(e,(function(e){return function(){c.emit.apply(c,[e].concat(Array.from(arguments)))}})(e))}));var l=t.containerElement;if(!(l instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var S=document.createElement("div");S.style.position="absolute",S.style.right="0",S.style.bottom="0",S.style.left="0",S.style.zIndex="1",S.style.textAlign="center",l.style.position="relative",l.style.zIndex="0",l.appendChild(S);var u={time:null},d=null,c=new a,A=!1,I=[],O=null,N=null,R=100,m=0,p="rgb(255, 255, 255)",h="rgba(0, 0, 0, 0)",L="rgb(34, 34, 34)",f={extraSubtitlesTracks:!1,selectedExtraSubtitlesTrackId:!1,extraSubtitlesDelay:!1,extraSubtitlesSize:!1,extraSubtitlesOffset:!1,extraSubtitlesTextColor:!1,extraSubtitlesBackgroundColor:!1,extraSubtitlesOutlineColor:!1};function C(){for(;S.hasChildNodes();)S.removeChild(S.lastChild);null!==d&&null!==u.time&&isFinite(u.time)&&(S.style.bottom=m+"%",_.render(d,u.time+N).forEach((function(e){e.style.display="inline-block",e.style.padding="0.2em",e.style.fontSize=Math.floor(R/25)+"vmin",e.style.color=p,e.style.backgroundColor=h,e.style.textShadow="1px 1px 0.1em "+L,S.appendChild(e),S.appendChild(document.createElement("br"))})))}function D(e,t,o){if("time"===t)u.time=o,C();c.emit(e,t,v(t,o))}function g(e){f[e]&&c.emit("propChanged",e,v(e,null))}function v(e,t){switch(e){case"extraSubtitlesTracks":return A?[]:I.slice();case"selectedExtraSubtitlesTrackId":return A?null:O;case"extraSubtitlesDelay":return A?null:N;case"extraSubtitlesSize":return A?null:R;case"extraSubtitlesOffset":return A?null:m;case"extraSubtitlesTextColor":return A?null:p;case"extraSubtitlesBackgroundColor":return A?null:h;case"extraSubtitlesOutlineColor":return A?null:L;default:return t}}function P(e,t){switch(e){case"selectedExtraSubtitlesTrackId":d=null,O=null,N=null;var a=I.find((function(e){return e.id===t}));return a&&(O=a.id,N=0,fetch(a.url).then((function(e){if(e.ok)return e.text();throw new Error(e.status+" ("+e.statusText+")")})).then((function(e){return T.convert(e)})).then((function(e){return E.parse(e)})).then((function(e){O===a.id&&(d=e,C(),c.emit("extraSubtitlesTrackLoaded",a))})).catch((function(e){O===a.id&&(function(e){c.emit("error",e),e.critical&&(y("unload"),o.dispatch({type:"command",commandName:"unload"}))})(Object.assign({},s.WITH_HTML_SUBTITLES.LOAD_FAILED,{error:e,track:a,critical:!1}))}))),C(),g("selectedExtraSubtitlesTrackId"),g("extraSubtitlesDelay"),!0;case"extraSubtitlesDelay":return null!==O&&null!==t&&isFinite(t)&&(N=parseInt(t,10),C(),g("extraSubtitlesDelay")),!0;case"extraSubtitlesSize":return null!==t&&isFinite(t)&&(R=Math.max(0,parseInt(t,10)),C(),g("extraSubtitlesSize")),!0;case"extraSubtitlesOffset":return null!==t&&isFinite(t)&&(m=Math.max(0,Math.min(100,parseInt(t,10))),C(),g("extraSubtitlesOffset")),!0;case"extraSubtitlesTextColor":if("string"==typeof t){try{p=r(t).rgb().string()}catch(e){console.error("withHTMLSubtitles",e)}C(),g("extraSubtitlesTextColor")}return!0;case"extraSubtitlesBackgroundColor":if("string"==typeof t){try{h=r(t).rgb().string()}catch(e){console.error("withHTMLSubtitles",e)}C(),g("extraSubtitlesBackgroundColor")}return!0;case"extraSubtitlesOutlineColor":if("string"==typeof t){try{L=r(t).rgb().string()}catch(e){console.error("withHTMLSubtitles",e)}C(),g("extraSubtitlesOutlineColor")}return!0;default:return!1}}function y(e,t){switch(e){case"addExtraSubtitlesTracks":return t&&Array.isArray(t.tracks)&&(I=I.concat(t.tracks).filter((function(e,t,o){return e&&"string"==typeof e.id&&"string"==typeof e.url&&"string"==typeof e.lang&&"string"==typeof e.label&&"string"==typeof e.origin&&!e.embedded&&t===o.findIndex((function(t){return t.id===e.id}))})),g("extraSubtitlesTracks")),!0;case"load":return y("unload"),t.stream&&Array.isArray(t.stream.subtitles)&&y("addExtraSubtitlesTracks",{tracks:t.stream.subtitles.map((function(e){return Object.assign({},e,{origin:"EXCLUSIVE",exclusive:!0,embedded:!1})}))}),!1;case"unload":return d=null,I=[],O=null,N=null,C(),g("extraSubtitlesTracks"),g("selectedExtraSubtitlesTrackId"),g("extraSubtitlesDelay"),!1;case"destroy":return y("unload"),A=!0,g("extraSubtitlesSize"),g("extraSubtitlesOffset"),g("extraSubtitlesTextColor"),g("extraSubtitlesBackgroundColor"),g("extraSubtitlesOutlineColor"),o.dispatch({type:"command",commandName:"destroy"}),c.removeAllListeners(),l.removeChild(S),!0;default:return!1}}this.on=function(e,t){if(A)throw new Error("Video is destroyed");c.on(e,t)},this.dispatch=function(e){if(A)throw new Error("Video is destroyed");if(e)switch((e=i(n(e))).type){case"observeProp":if((function(e){switch(e){case"extraSubtitlesTracks":case"selectedExtraSubtitlesTrackId":case"extraSubtitlesDelay":case"extraSubtitlesSize":case"extraSubtitlesOffset":case"extraSubtitlesTextColor":case"extraSubtitlesBackgroundColor":case"extraSubtitlesOutlineColor":return c.emit("propValue",e,v(e,null)),f[e]=!0,!0;default:return!1}})(e.propName))return;break;case"setProp":if(P(e.propName,e.propValue))return;break;case"command":if(y(e.commandName,e.commandArgs))return}o.dispatch(e)}}return t.canPlayStream=function(t){return e.canPlayStream(t)},t.manifest={name:e.manifest.name+"WithHTMLSubtitles",external:e.manifest.external,props:e.manifest.props.concat(["extraSubtitlesTracks","selectedExtraSubtitlesTrackId","extraSubtitlesDelay","extraSubtitlesSize","extraSubtitlesOffset","extraSubtitlesTextColor","extraSubtitlesBackgroundColor","extraSubtitlesOutlineColor"]).filter((function(e,t,o){return o.indexOf(e)===t})),commands:e.manifest.commands.concat(["load","unload","destroy","addExtraSubtitlesTracks"]).filter((function(e,t,o){return o.indexOf(e)===t})),events:e.manifest.events.concat(["propValue","propChanged","error","extraSubtitlesTrackLoaded"]).filter((function(e,t,o){return o.indexOf(e)===t}))},t}},7054:(e,t,o)=>{var a=o(9566),n=o(7190);e.exports=function(e,t,o){return new Promise((function(i,r){if("string"!=typeof t.url)"string"!=typeof t.infoHash?r(new Error("Stream cannot be converted")):n(e,t.infoHash,t.fileIdx,t.announce,o).then((function(e){i(e)})).catch((function(e){r(e)}));else if(0===t.url.indexOf("magnet:")){var s;try{if(!(s=a.decode(t.url))||"string"!=typeof s.infoHash)throw new Error("Failed to decode magnet url")}catch(e){return void r(e)}var E=Array.isArray(s.announce)?s.announce.map((function(e){return"tracker:"+e})):[];n(e,s.infoHash,null,E,o).then((function(e){i(e)})).catch((function(e){r(e)}))}else i(t.url)}))}},7190:(e,t,o)=>{var a=o(8575);function n(e,t,o,n){var i=Array.isArray(n)&&n.length>0?"?"+new URLSearchParams(n.map((function(e){return["tr",e]}))):"";return a.resolve(e,"/"+encodeURIComponent(t)+"/"+encodeURIComponent(o))+i}e.exports=function(e,t,o,i,r){if((!Array.isArray(i)||0===i.length)&&null!==o&&isFinite(o))return Promise.resolve(n(e,t,o,i));var s={torrent:{infoHash:t}};return Array.isArray(i)&&i.length>0&&(s.peerSearch={sources:["dht:"+t].concat(i).filter((function(e,t,o){return o.indexOf(e)===t})),min:40,max:200}),null!==o&&isFinite(o)?s.guessFileIdx=!1:(s.guessFileIdx={},r&&(null!==r.season&&isFinite(r.season)&&(s.guessFileIdx.season=r.season),null!==r.episode&&isFinite(r.episode)&&(s.guessFileIdx.episode=r.episode))),fetch(a.resolve(e,"/"+encodeURIComponent(t)+"/create"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(s)}).then((function(e){if(e.ok)return e.json();throw new Error(e.status+" ("+e.statusText+")")})).then((function(a){return n(e,t,s.guessFileIdx?a.guessedFileIdx:o,s.peerSearch?s.peerSearch.sources:[])}))}},5690:(e,t,o)=>{var a=o(7746);e.exports=a},7746:(e,t,o)=>{var a=o(6729),n=o(8575),i=o(542),r=o(3465),s=o(2682),E=o(5015),_=o(7054),T=o(9657);e.exports=function(e){function t(o){var l=new e(o=o||{});l.on("error",(function(e){A.emit("error",e),e.critical&&h("unload")})),l.on("propValue",N.bind(null,"propValue")),l.on("propChanged",N.bind(null,"propChanged")),e.manifest.events.filter((function(e){return!["error","propValue","propChanged"].includes(e)})).forEach((function(e){l.on(e,(function(e){return function(){A.emit.apply(A,[e].concat(Array.from(arguments)))}})(e))}));var S=this,u=null,d=!1,c=[],A=new a,I=!1,O={stream:!1};function N(e,t,o){A.emit(e,t,p(t,o))}function R(e){O[e]&&A.emit("propChanged",e,p(e,null))}function m(e){A.emit("error",e),e.critical&&(h("unload"),l.dispatch({type:"command",commandName:"unload"}))}function p(e,t){return"stream"===e?null!==u?u.stream:null:t}function h(e,o){switch(e){case"load":return o&&o.stream&&"string"==typeof o.streamingServerURL?(h("unload"),l.dispatch({type:"command",commandName:"unload"}),u=o,R("stream"),_(o.streamingServerURL,o.stream,o.seriesInfo).then((function(e){var a=Array.isArray(o.formats)?o.formats:E.formats,r=Array.isArray(o.videoCodecs)?o.videoCodecs:E.videoCodecs,s=Array.isArray(o.audioCodecs)?o.audioCodecs:E.audioCodecs,_=null!==o.maxAudioChannels&&isFinite(o.maxAudioChannels)?o.maxAudioChannels:E.maxAudioChannels,T=Object.assign({},o,{formats:a,videoCodecs:r,audioCodecs:s,maxAudioChannels:_});return(o.forceTranscoding?Promise.resolve(!1):t.canPlayStream({url:e},T)).catch((function(e){return console.warn("Media probe error",e),!1})).then((function(t){if(t)return{url:e};var a=i(),E=new URLSearchParams([["mediaURL",e]]);return o.forceTranscoding&&E.set("forceTranscoding","1"),r.forEach((function(e){E.append("videoCodecs",e)})),s.forEach((function(e){E.append("audioCodecs",e)})),E.set("maxAudioChannels",_),{url:n.resolve(o.streamingServerURL,"/hlsv2/"+a+"/master.m3u8?"+E.toString()),subtitles:Array.isArray(o.stream.subtitles)?o.stream.subtitles.map((function(e){return Object.assign({},e,{url:"string"==typeof e.url?n.resolve(o.streamingServerURL,"/subtitles.vtt?"+new URLSearchParams([["from",e.url]]).toString()):e.url})})):[],behaviorHints:{headers:{"content-type":"application/vnd.apple.mpegurl"}}}}))})).then((function(e){o===u&&(l.dispatch({type:"command",commandName:"load",commandArgs:Object.assign({},o,{stream:e})}),d=!0,(function(){for(;c.length>0;){var e=c.shift();S.dispatch.call(S,e)}})())})).catch((function(e){o===u&&m(Object.assign({},T.WITH_STREAMING_SERVER.CONVERT_FAILED,{error:e,critical:!0,stream:o.stream,streamingServerURL:o.streamingServerURL}))}))):m(Object.assign({},T.UNSUPPORTED_STREAM,{critical:!0,stream:o?o.stream:null,streamingServerURL:o&&"string"==typeof o.streamingServerURL?o.streamingServerURL:null})),!0;case"addExtraSubtitlesTracks":return u&&o&&Array.isArray(o.tracks)&&(d?l.dispatch({type:"command",commandName:"addExtraSubtitlesTracks",commandArgs:Object.assign({},o,{tracks:o.tracks.map((function(e){return Object.assign({},e,{url:"string"==typeof e.url?n.resolve(u.streamingServerURL,"/subtitles.vtt?"+new URLSearchParams([["from",e.url]]).toString()):e.url})}))})}):c.push({type:"command",commandName:"addExtraSubtitlesTracks",commandArgs:o})),!0;case"unload":return u=null,d=!1,c=[],R("stream"),!1;case"destroy":return h("unload"),I=!0,l.dispatch({type:"command",commandName:"destroy"}),A.removeAllListeners(),!0;default:return!d&&(c.push({type:"command",commandName:e,commandArgs:o}),!0)}}this.on=function(e,t){if(I)throw new Error("Video is destroyed");A.on(e,t)},this.dispatch=function(e){if(I)throw new Error("Video is destroyed");if(e)switch((e=s(r(e))).type){case"observeProp":if("stream"===(t=e.propName)&&(A.emit("propValue",t,p(t,null)),O[t]=!0,1))return;break;case"command":if(h(e.commandName,e.commandArgs))return}var t;l.dispatch(e)}}return t.canPlayStream=function(t,o){return e.canPlayStream(t).then((function(e){if(!e)throw new Error("Fallback using /hlsv2/probe");return e})).catch((function(){var e=new URLSearchParams([["mediaURL",t.url]]);return fetch(n.resolve(o.streamingServerURL,"/hlsv2/probe?"+e.toString())).then((function(e){return e.json()})).then((function(e){var t=o.formats.some((function(t){return-1!==e.format.name.indexOf(t)})),a=e.streams.every((function(e){return"audio"===e.track?e.channels<=o.maxAudioChannels&&-1!==o.audioCodecs.indexOf(e.codec):"video"!==e.track||-1!==o.videoCodecs.indexOf(e.codec)}));return t&&a}))}))},t.manifest={name:e.manifest.name+"WithStreamingServer",external:e.manifest.external,props:e.manifest.props.concat(["stream"]).filter((function(e,t,o){return o.indexOf(e)===t})),commands:e.manifest.commands.concat(["load","unload","destroy","addExtraSubtitlesTracks"]).filter((function(e,t,o){return o.indexOf(e)===t})),events:e.manifest.events.concat(["propValue","propChanged","error"]).filter((function(e,t,o){return o.indexOf(e)===t}))},t}},3746:function(e){"undefined"!=typeof self&&self,e.exports=(function(e){var t={};function o(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(a,n,function(t){return e[t]}.bind(null,n));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=1)})([function(e,t,o){"use strict";var a=o(3);function n(e){return!0===a(e)&&"[object Object]"===Object.prototype.toString.call(e)}e.exports=function(e){var t,o;return!1!==n(e)&&"function"==typeof(t=e.constructor)&&!1!==n(o=t.prototype)&&!1!==o.hasOwnProperty("isPrototypeOf")}},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=t.PALETTE_MATERIAL_CHROME=t.PALETTE_MATERIAL_500=t.COLOR_NAMES=t.getLuminance=t.intToRgb=t.rgbToInt=t.rgbToHsv=t.rgbToHsl=t.hslToRgb=t.rgbToHex=t.parseColor=t.parseColorToHsla=t.parseColorToHsl=t.parseColorToRgba=t.parseColorToRgb=t.from=t.createPicker=void 0;var a=(function(){function e(e,t){for(var o=0;o-1,S="undefined"!=typeof window&&window.navigator.userAgent.indexOf("rv:")>-1,u={id:null,attachTo:"body",showHSL:!0,showRGB:!0,showHEX:!0,showAlpha:!1,color:"#ff0000",palette:null,paletteEditable:!1,useAlphaInPalette:"auto",slBarSize:[232,150],hueBarSize:[150,11],alphaBarSize:[150,11]},d="COLOR",c="RGBA_USER",A="HSLA_USER";function I(e,t,o){return e?e instanceof HTMLElement?e:e instanceof NodeList?e[0]:"string"==typeof e?document.querySelector(e):e.jquery?e.get(0):o?t:null:t}function O(e){var t=e.getContext("2d"),o=+e.width,a=+e.height,r=t.createLinearGradient(1,1,1,a-1);return r.addColorStop(0,"white"),r.addColorStop(1,"black"),{setHue:function(e){var n=t.createLinearGradient(1,0,o-1,0);n.addColorStop(0,"hsla("+e+", 100%, 50%, 0)"),n.addColorStop(1,"hsla("+e+", 100%, 50%, 1)"),t.fillStyle=r,t.fillRect(0,0,o,a),t.fillStyle=n,t.globalCompositeOperation="multiply",t.fillRect(0,0,o,a),t.globalCompositeOperation="source-over"},grabColor:function(e,o){return t.getImageData(e,o,1,1).data},findColor:function(e,t,r){var s=(0,i.rgbToHsv)(e,t,r),E=n(s,3),_=E[1],T=E[2];return[_*o,a-T*a]}}}function N(e,t,o){return null===e?t:/^\s*$/.test(e)?o:!!/true|yes|1/i.test(e)||!/false|no|0/i.test(e)&&t}function R(e,t,o){if(null===e)return t;if(/^\s*$/.test(e))return o;var a=e.split(",").map(Number);return 2===a.length&&a[0]&&a[1]?a:t}var m=(function(){function e(t,o){if(_(this,e),o?(t=I(t),this.options=Object.assign({},u,o)):t&&(0,r.default)(t)?(this.options=Object.assign({},u,t),t=I(this.options.attachTo)):(this.options=Object.assign({},u),t=I((0,i.nvl)(t,this.options.attachTo))),!t)throw new Error("Container not found: "+this.options.attachTo);!(function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"acp-";if(t.hasAttribute(o+"show-hsl")&&(e.showHSL=N(t.getAttribute(o+"show-hsl"),u.showHSL,!0)),t.hasAttribute(o+"show-rgb")&&(e.showRGB=N(t.getAttribute(o+"show-rgb"),u.showRGB,!0)),t.hasAttribute(o+"show-hex")&&(e.showHEX=N(t.getAttribute(o+"show-hex"),u.showHEX,!0)),t.hasAttribute(o+"show-alpha")&&(e.showAlpha=N(t.getAttribute(o+"show-alpha"),u.showAlpha,!0)),t.hasAttribute(o+"palette-editable")&&(e.paletteEditable=N(t.getAttribute(o+"palette-editable"),u.paletteEditable,!0)),t.hasAttribute(o+"sl-bar-size")&&(e.slBarSize=R(t.getAttribute(o+"sl-bar-size"),u.slBarSize,[232,150])),t.hasAttribute(o+"hue-bar-size")&&(e.hueBarSize=R(t.getAttribute(o+"hue-bar-size"),u.hueBarSize,[150,11]),e.alphaBarSize=e.hueBarSize),t.hasAttribute(o+"palette")){var a=t.getAttribute(o+"palette");switch(a){case"PALETTE_MATERIAL_500":e.palette=i.PALETTE_MATERIAL_500;break;case"PALETTE_MATERIAL_CHROME":case"":e.palette=i.PALETTE_MATERIAL_CHROME;break;default:e.palette=a.split(/[;|]/)}}t.hasAttribute(o+"color")&&(e.color=t.getAttribute(o+"color"))})(this.options,t),this.H=0,this.S=0,this.L=0,this.R=0,this.G=0,this.B=0,this.A=1,this.palette={},this.element=document.createElement("div"),this.options.id&&(this.element.id=this.options.id),this.element.className="a-color-picker",this.element.innerHTML=s.default,t.appendChild(this.element);var a=this.element.querySelector(".a-color-picker-h");this.setupHueCanvas(a),this.hueBarHelper=O(a),this.huePointer=this.element.querySelector(".a-color-picker-h+.a-color-picker-dot");var n=this.element.querySelector(".a-color-picker-sl");this.setupSlCanvas(n),this.slBarHelper=O(n),this.slPointer=this.element.querySelector(".a-color-picker-sl+.a-color-picker-dot"),this.preview=this.element.querySelector(".a-color-picker-preview"),this.setupClipboard(this.preview.querySelector(".a-color-picker-clipbaord")),this.options.showHSL?(this.setupInput(this.inputH=this.element.querySelector(".a-color-picker-hsl>input[nameref=H]")),this.setupInput(this.inputS=this.element.querySelector(".a-color-picker-hsl>input[nameref=S]")),this.setupInput(this.inputL=this.element.querySelector(".a-color-picker-hsl>input[nameref=L]"))):this.element.querySelector(".a-color-picker-hsl").remove(),this.options.showRGB?(this.setupInput(this.inputR=this.element.querySelector(".a-color-picker-rgb>input[nameref=R]")),this.setupInput(this.inputG=this.element.querySelector(".a-color-picker-rgb>input[nameref=G]")),this.setupInput(this.inputB=this.element.querySelector(".a-color-picker-rgb>input[nameref=B]"))):this.element.querySelector(".a-color-picker-rgb").remove(),this.options.showHEX?this.setupInput(this.inputRGBHEX=this.element.querySelector("input[nameref=RGBHEX]")):this.element.querySelector(".a-color-picker-rgbhex").remove(),this.options.paletteEditable||this.options.palette&&this.options.palette.length>0?this.setPalette(this.paletteRow=this.element.querySelector(".a-color-picker-palette")):(this.paletteRow=this.element.querySelector(".a-color-picker-palette"),this.paletteRow.remove()),this.options.showAlpha?(this.setupAlphaCanvas(this.element.querySelector(".a-color-picker-a")),this.alphaPointer=this.element.querySelector(".a-color-picker-a+.a-color-picker-dot")):this.element.querySelector(".a-color-picker-alpha").remove(),this.element.style.width=this.options.slBarSize[0]+"px",this.onValueChanged(d,this.options.color)}return a(e,[{key:"setupHueCanvas",value:function(e){var t=this;e.width=this.options.hueBarSize[0],e.height=this.options.hueBarSize[1];for(var o=e.getContext("2d"),a=o.createLinearGradient(0,0,this.options.hueBarSize[0],0),n=0;n<=1;n+=1/360)a.addColorStop(n,"hsl("+360*n+", 100%, 50%)");o.fillStyle=a,o.fillRect(0,0,this.options.hueBarSize[0],this.options.hueBarSize[1]);var r=function(o){var a=(0,i.limit)(o.clientX-e.getBoundingClientRect().left,0,t.options.hueBarSize[0]),n=Math.round(360*a/t.options.hueBarSize[0]);t.huePointer.style.left=a-7+"px",t.onValueChanged("H",n)},s=function e(){document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",e)};e.addEventListener("mousedown",(function(e){r(e),document.addEventListener("mousemove",r),document.addEventListener("mouseup",s)}))}},{key:"setupSlCanvas",value:function(e){var t=this;e.width=this.options.slBarSize[0],e.height=this.options.slBarSize[1];var o=function(o){var a=(0,i.limit)(o.clientX-e.getBoundingClientRect().left,0,t.options.slBarSize[0]-1),n=(0,i.limit)(o.clientY-e.getBoundingClientRect().top,0,t.options.slBarSize[1]-1),r=t.slBarHelper.grabColor(a,n);t.slPointer.style.left=a-7+"px",t.slPointer.style.top=n-7+"px",t.onValueChanged("RGB",r)},a=function e(){document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",e)};e.addEventListener("mousedown",(function(e){o(e),document.addEventListener("mousemove",o),document.addEventListener("mouseup",a)}))}},{key:"setupAlphaCanvas",value:function(e){var t=this;e.width=this.options.alphaBarSize[0],e.height=this.options.alphaBarSize[1];var o=e.getContext("2d"),a=o.createLinearGradient(0,0,e.width-1,0);a.addColorStop(0,"hsla(0, 0%, 50%, 0)"),a.addColorStop(1,"hsla(0, 0%, 50%, 1)"),o.fillStyle=a,o.fillRect(0,0,this.options.alphaBarSize[0],this.options.alphaBarSize[1]);var n=function(o){var a=(0,i.limit)(o.clientX-e.getBoundingClientRect().left,0,t.options.alphaBarSize[0]),n=+(a/t.options.alphaBarSize[0]).toFixed(2);t.alphaPointer.style.left=a-7+"px",t.onValueChanged("ALPHA",n)},r=function e(){document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",e)};e.addEventListener("mousedown",(function(e){n(e),document.addEventListener("mousemove",n),document.addEventListener("mouseup",r)}))}},{key:"setupInput",value:function(e){var t=this,o=+e.min,a=+e.max,n=e.getAttribute("nameref");e.hasAttribute("select-on-focus")&&e.addEventListener("focus",(function(){e.select()})),"text"===e.type?e.addEventListener("change",(function(){t.onValueChanged(n,e.value)})):((l||S)&&e.addEventListener("keydown",(function(r){"Up"===r.key?(e.value=(0,i.limit)(+e.value+1,o,a),t.onValueChanged(n,e.value),r.returnValue=!1):"Down"===r.key&&(e.value=(0,i.limit)(+e.value-1,o,a),t.onValueChanged(n,e.value),r.returnValue=!1)})),e.addEventListener("change",(function(){var r=+e.value;t.onValueChanged(n,(0,i.limit)(r,o,a))})))}},{key:"setupClipboard",value:function(e){var t=this;e.title="click to copy",e.addEventListener("click",(function(){e.value=(0,i.parseColor)([t.R,t.G,t.B,t.A],"hexcss4"),e.select(),document.execCommand("copy")}))}},{key:"setPalette",value:function(e){var t=this,o="auto"===this.options.useAlphaInPalette?this.options.showAlpha:this.options.useAlphaInPalette,a=null;switch(this.options.palette){case"PALETTE_MATERIAL_500":a=i.PALETTE_MATERIAL_500;break;case"PALETTE_MATERIAL_CHROME":a=i.PALETTE_MATERIAL_CHROME;break;default:a=(0,i.ensureArray)(this.options.palette)}if(this.options.paletteEditable||a.length>0){var n=function(o,a,n){var i=e.querySelector('.a-color-picker-palette-color[data-color="'+o+'"]')||document.createElement("div");i.className="a-color-picker-palette-color",i.style.backgroundColor=o,i.setAttribute("data-color",o),i.title=o,e.insertBefore(i,a),t.palette[o]=!0,n&&t.onPaletteColorAdd(o)},r=function(o,a){o?(e.removeChild(o),t.palette[o.getAttribute("data-color")]=!1,a&&t.onPaletteColorRemove(o.getAttribute("data-color"))):(e.querySelectorAll(".a-color-picker-palette-color[data-color]").forEach((function(t){e.removeChild(t)})),Object.keys(t.palette).forEach((function(e){t.palette[e]=!1})),a&&t.onPaletteColorRemove())};if(a.map((function(e){return(0,i.parseColor)(e,o?"rgbcss4":"hex")})).filter((function(e){return!!e})).forEach((function(e){return n(e)})),this.options.paletteEditable){var s=document.createElement("div");s.className="a-color-picker-palette-color a-color-picker-palette-add",s.innerHTML="+",e.appendChild(s),e.addEventListener("click",(function(e){/a-color-picker-palette-add/.test(e.target.className)?e.shiftKey?r(null,!0):n(o?(0,i.parseColor)([t.R,t.G,t.B,t.A],"rgbcss4"):(0,i.rgbToHex)(t.R,t.G,t.B),e.target,!0):/a-color-picker-palette-color/.test(e.target.className)&&(e.shiftKey?r(e.target,!0):t.onValueChanged(d,e.target.getAttribute("data-color")))}))}else e.addEventListener("click",(function(e){/a-color-picker-palette-color/.test(e.target.className)&&t.onValueChanged(d,e.target.getAttribute("data-color"))}))}else e.style.display="none"}},{key:"updatePalette",value:function(e){this.paletteRow.innerHTML="",this.palette={},this.paletteRow.parentElement||this.element.appendChild(this.paletteRow),this.options.palette=e,this.setPalette(this.paletteRow)}},{key:"onValueChanged",value:function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{silent:!1};switch(e){case"H":this.H=t;var a=(0,i.hslToRgb)(this.H,this.S,this.L),r=n(a,3);this.R=r[0],this.G=r[1],this.B=r[2],this.slBarHelper.setHue(t),this.updatePointerH(this.H),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case"S":this.S=t;var s=(0,i.hslToRgb)(this.H,this.S,this.L),E=n(s,3);this.R=E[0],this.G=E[1],this.B=E[2],this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case"L":this.L=t;var _=(0,i.hslToRgb)(this.H,this.S,this.L),T=n(_,3);this.R=T[0],this.G=T[1],this.B=T[2],this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case"R":this.R=t;var l=(0,i.rgbToHsl)(this.R,this.G,this.B),S=n(l,3);this.H=S[0],this.S=S[1],this.L=S[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGBHEX(this.R,this.G,this.B);break;case"G":this.G=t;var u=(0,i.rgbToHsl)(this.R,this.G,this.B),I=n(u,3);this.H=I[0],this.S=I[1],this.L=I[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGBHEX(this.R,this.G,this.B);break;case"B":this.B=t;var O=(0,i.rgbToHsl)(this.R,this.G,this.B),N=n(O,3);this.H=N[0],this.S=N[1],this.L=N[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGBHEX(this.R,this.G,this.B);break;case"RGB":var R=n(t,3);this.R=R[0],this.G=R[1],this.B=R[2];var m=(0,i.rgbToHsl)(this.R,this.G,this.B),p=n(m,3);this.H=p[0],this.S=p[1],this.L=p[2],this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case c:var h=n(t,4);this.R=h[0],this.G=h[1],this.B=h[2],this.A=h[3];var L=(0,i.rgbToHsl)(this.R,this.G,this.B),f=n(L,3);this.H=f[0],this.S=f[1],this.L=f[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B),this.updatePointerA(this.A);break;case A:var C=n(t,4);this.H=C[0],this.S=C[1],this.L=C[2],this.A=C[3];var D=(0,i.hslToRgb)(this.H,this.S,this.L),g=n(D,3);this.R=g[0],this.G=g[1],this.B=g[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B),this.updatePointerA(this.A);break;case"RGBHEX":var v=(0,i.cssColorToRgb)(t)||[this.R,this.G,this.B],P=n(v,3);this.R=P[0],this.G=P[1],this.B=P[2];var y=(0,i.rgbToHsl)(this.R,this.G,this.B),B=n(y,3);this.H=B[0],this.S=B[1],this.L=B[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B);break;case d:var b=(0,i.parseColor)(t,"rgba")||[0,0,0,1],M=n(b,4);this.R=M[0],this.G=M[1],this.B=M[2],this.A=M[3];var U=(0,i.rgbToHsl)(this.R,this.G,this.B),W=n(U,3);this.H=W[0],this.S=W[1],this.L=W[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B),this.updatePointerA(this.A);break;case"ALPHA":this.A=t}1===this.A?this.preview.style.backgroundColor="rgb("+this.R+","+this.G+","+this.B+")":this.preview.style.backgroundColor="rgba("+this.R+","+this.G+","+this.B+","+this.A+")",o&&o.silent||this.onchange&&this.onchange(this.preview.style.backgroundColor)}},{key:"onPaletteColorAdd",value:function(e){this.oncoloradd&&this.oncoloradd(e)}},{key:"onPaletteColorRemove",value:function(e){this.oncolorremove&&this.oncolorremove(e)}},{key:"updateInputHSL",value:function(e,t,o){this.options.showHSL&&(this.inputH.value=e,this.inputS.value=t,this.inputL.value=o)}},{key:"updateInputRGB",value:function(e,t,o){this.options.showRGB&&(this.inputR.value=e,this.inputG.value=t,this.inputB.value=o)}},{key:"updateInputRGBHEX",value:function(e,t,o){this.options.showHEX&&(this.inputRGBHEX.value=(0,i.rgbToHex)(e,t,o))}},{key:"updatePointerH",value:function(e){var t=this.options.hueBarSize[0]*e/360;this.huePointer.style.left=t-7+"px"}},{key:"updatePointerSL",value:function(e,t,o){var a=(0,i.hslToRgb)(e,t,o),r=n(a,3),s=r[0],E=r[1],_=r[2],T=this.slBarHelper.findColor(s,E,_),l=n(T,2),S=l[0],u=l[1];S>=0&&(this.slPointer.style.left=S-7+"px",this.slPointer.style.top=u-7+"px")}},{key:"updatePointerA",value:function(e){if(this.options.showAlpha){var t=this.options.alphaBarSize[0]*e;this.alphaPointer.style.left=t-7+"px"}}}]),e})(),p=(function(){function e(t){_(this,e),this.name=t,this.listeners=[]}return a(e,[{key:"on",value:function(e){e&&this.listeners.push(e)}},{key:"off",value:function(e){this.listeners=e?this.listeners.filter((function(t){return t!==e})):[]}},{key:"emit",value:function(e,t){for(var o=this.listeners.slice(0),a=0;a1&&void 0!==arguments[1]&&arguments[1];o.onValueChanged(d,e,{silent:t})},get all(){if(r){var e=[o.R,o.G,o.B,o.A],t=o.A<1?"rgba("+o.R+","+o.G+","+o.B+","+o.A+")":i.rgbToHex.apply(void 0,e);(s=(0,i.parseColor)(e,s)).toString=function(){return t},r=!1}return Object.assign({},s)},get onchange(){return a.change&&a.change.listeners[0]},set onchange(e){this.off("change").on("change",e)},get oncoloradd(){return a.coloradd&&a.coloradd.listeners[0]},set oncoloradd(e){this.off("coloradd").on("coloradd",e)},get oncolorremove(){return a.colorremove&&a.colorremove.listeners[0]},set oncolorremove(e){this.off("colorremove").on("colorremove",e)},get palette(){return Object.keys(o.palette).filter((function(e){return o.palette[e]}))},set palette(e){o.updatePalette(e)},show:function(){o.element.classList.remove("hidden")},hide:function(){o.element.classList.add("hidden")},toggle:function(){o.element.classList.toggle("hidden")},on:function(e,t){return e&&a[e]&&a[e].on(t),this},off:function(e,t){return e&&a[e]&&a[e].off(t),this},destroy:function(){a.change.off(),a.coloradd.off(),a.colorremove.off(),o.element.remove(),a=null,o=null}};return o.onchange=function(){for(var e=arguments.length,t=Array(e),o=0;ostyle[data-source="a-color-picker"]')){var L=o(5).toString(),f=document.createElement("style");f.setAttribute("type","text/css"),f.setAttribute("data-source","a-color-picker"),f.innerHTML=L,document.querySelector("head").appendChild(f)}t.createPicker=h,t.from=function(e,t){var o=(function(e){return e?Array.isArray(e)?e:e instanceof HTMLElement?[e]:e instanceof NodeList?[].concat(T(e)):"string"==typeof e?[].concat(T(document.querySelectorAll(e))):e.jquery?e.get():[]:[]})(e).map((function(e,o){var a=h(e,t);return a.index=o,a}));return o.on=function(e,t){return o.forEach((function(o){return o.on(e,t)})),this},o.off=function(e){return o.forEach((function(t){return t.off(e)})),this},o},t.parseColorToRgb=i.parseColorToRgb,t.parseColorToRgba=i.parseColorToRgba,t.parseColorToHsl=i.parseColorToHsl,t.parseColorToHsla=i.parseColorToHsla,t.parseColor=i.parseColor,t.rgbToHex=i.rgbToHex,t.hslToRgb=i.hslToRgb,t.rgbToHsl=i.rgbToHsl,t.rgbToHsv=i.rgbToHsv,t.rgbToInt=i.rgbToInt,t.intToRgb=i.intToRgb,t.getLuminance=i.getLuminance,t.COLOR_NAMES=i.COLOR_NAMES,t.PALETTE_MATERIAL_500=i.PALETTE_MATERIAL_500,t.PALETTE_MATERIAL_CHROME=i.PALETTE_MATERIAL_CHROME,t.VERSION="1.2.1"},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.nvl=t.ensureArray=t.limit=t.getLuminance=t.parseColor=t.parseColorToHsla=t.parseColorToHsl=t.cssHslaToHsla=t.cssHslToHsl=t.parseColorToRgba=t.parseColorToRgb=t.cssRgbaToRgba=t.cssRgbToRgb=t.cssColorToRgba=t.cssColorToRgb=t.intToRgb=t.rgbToInt=t.rgbToHsv=t.rgbToHsl=t.hslToRgb=t.rgbToHex=t.PALETTE_MATERIAL_CHROME=t.PALETTE_MATERIAL_500=t.COLOR_NAMES=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return(function(e,t){var o=[],a=!0,n=!1,i=void 0;try{for(var r,s=e[Symbol.iterator]();!(a=(r=s.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){n=!0,i=e}finally{try{!a&&s.return&&s.return()}finally{if(n)throw i}}return o})(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},n=(function(e){return e&&e.__esModule?e:{default:e}})(o(0));function i(e){if(Array.isArray(e)){for(var t=0,o=Array(e.length);to?o:e}function E(e,t){return null==e?t:e}function _(e,t,o){var a=[s(e,0,255),s(t,0,255),s(o,0,255)];return"#"+("000000"+((e=a[0])<<16|(t=a[1])<<8|(o=a[2])).toString(16)).slice(-6)}function T(e,t,o){var a=void 0,n=void 0,i=void 0,r=[s(e,0,360)/360,s(t,0,100)/100,s(o,0,100)/100];if(e=r[0],o=r[2],0==(t=r[1]))a=n=i=o;else{var E=function(e,t,o){return o<0&&(o+=1),o>1&&(o-=1),o<1/6?e+6*(t-e)*o:o<.5?t:o<2/3?e+(t-e)*(2/3-o)*6:e},_=o<.5?o*(1+t):o+t-o*t,T=2*o-_;a=E(T,_,e+1/3),n=E(T,_,e),i=E(T,_,e-1/3)}return[255*a,255*n,255*i].map(Math.round)}function l(e,t,o){var a=[s(e,0,255)/255,s(t,0,255)/255,s(o,0,255)/255];e=a[0],t=a[1],o=a[2];var n=Math.max(e,t,o),i=Math.min(e,t,o),r=void 0,E=void 0,_=(n+i)/2;if(n==i)r=E=0;else{var T=n-i;switch(E=_>.5?T/(2-n-i):T/(n+i),n){case e:r=(t-o)/T+(t>16&255,e>>8&255,255&e]},t.cssColorToRgb=u,t.cssColorToRgba=d,t.cssRgbToRgb=c,t.cssRgbaToRgba=A,t.parseColorToRgb=function(e){return Array.isArray(e)?e=[s(e[0],0,255),s(e[1],0,255),s(e[2],0,255)]:u(e)||c(e)},t.parseColorToRgba=I,t.cssHslToHsl=O,t.cssHslaToHsla=N,t.parseColorToHsl=function(e){return Array.isArray(e)?e=[s(e[0],0,360),s(e[1],0,100),s(e[2],0,100)]:O(e)},t.parseColorToHsla=R,t.parseColor=function(e,t){if(t=t||"rgb",null!=e){var o=void 0;if((o=I(e))||(o=R(e))&&(o=[].concat(i(T.apply(void 0,i(o))),[o[3]])))return(0,n.default)(t)?["rgb","rgbcss","rgbcss4","rgba","rgbacss","hsl","hslcss","hslcss4","hsla","hslacss","hex","hexcss4","int"].reduce((function(e,t){return e[t]=m(o,t),e}),t||{}):m(o,t.toString().toLowerCase())}},t.getLuminance=function(e,t,o){return.2126*(e=(e/=255)<.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.7152*(t=(t/=255)<.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.0722*((o/=255)<.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))},t.limit=s,t.ensureArray=function(e){return e?Array.from(e):[]},t.nvl=E},function(e,t,o){"use strict";e.exports=function(e){return null!=e&&"object"==typeof e&&!1===Array.isArray(e)}},function(e,t){e.exports='

    '},function(e,t,o){var a=o(6);e.exports="string"==typeof a?a:a.toString()},function(e,t,o){(e.exports=o(7)(!1)).push([e.i,"/*!\n * a-color-picker\n * https://github.com/narsenico/a-color-picker\n *\n * Copyright (c) 2017-2018, Gianfranco Caldi.\n * Released under the MIT License.\n */.a-color-picker{background-color:#fff;padding:0;display:inline-flex;flex-direction:column;user-select:none;width:232px;font:400 10px Helvetica,Arial,sans-serif;border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,.05),0 2px 4px rgba(0,0,0,.25)}.a-color-picker,.a-color-picker-row,.a-color-picker input{box-sizing:border-box}.a-color-picker-row{padding:15px;display:flex;flex-direction:row;align-items:center;justify-content:space-between;user-select:none}.a-color-picker-row-top{padding:0}.a-color-picker-row:not(:first-child){border-top:1px solid #f5f5f5}.a-color-picker-column{display:flex;flex-direction:column}.a-color-picker-cell{flex:1 1 auto;margin-bottom:4px}.a-color-picker-cell:last-child{margin-bottom:0}.a-color-picker-stack{position:relative}.a-color-picker-dot{position:absolute;width:14px;height:14px;top:0;left:0;background:#fff;pointer-events:none;border-radius:50px;z-index:1000;box-shadow:0 1px 2px rgba(0,0,0,.75)}.a-color-picker-a,.a-color-picker-h,.a-color-picker-sl{cursor:cell}.a-color-picker-a+.a-color-picker-dot,.a-color-picker-h+.a-color-picker-dot{top:-2px}.a-color-picker-a,.a-color-picker-h{border-radius:2px}.a-color-picker-preview{box-sizing:border-box;width:30px;height:30px;user-select:none;border-radius:15px}.a-color-picker-circle{border-radius:50px;border:1px solid #eee}.a-color-picker-hsl,.a-color-picker-rgb,.a-color-picker-single-input{justify-content:space-evenly}.a-color-picker-hsl>label,.a-color-picker-rgb>label,.a-color-picker-single-input>label{padding:0 8px;flex:0 0 auto;color:#969696}.a-color-picker-hsl>input,.a-color-picker-rgb>input,.a-color-picker-single-input>input{text-align:center;padding:2px 0;width:0;flex:1 1 auto;border:1px solid #e0e0e0;line-height:20px}.a-color-picker-hsl>input::-webkit-inner-spin-button,.a-color-picker-rgb>input::-webkit-inner-spin-button,.a-color-picker-single-input>input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.a-color-picker-hsl>input:focus,.a-color-picker-rgb>input:focus,.a-color-picker-single-input>input:focus{border-color:#04a9f4;outline:none}.a-color-picker-transparent{background-image:linear-gradient(-45deg,#cdcdcd 25%,transparent 0),linear-gradient(45deg,#cdcdcd 25%,transparent 0),linear-gradient(-45deg,transparent 75%,#cdcdcd 0),linear-gradient(45deg,transparent 75%,#cdcdcd 0);background-size:11px 11px;background-position:0 0,0 -5.5px,-5.5px 5.5px,5.5px 0}.a-color-picker-sl{border-radius:3px 3px 0 0}.a-color-picker.hide-alpha [show-on-alpha],.a-color-picker.hide-hsl [show-on-hsl],.a-color-picker.hide-rgb [show-on-rgb],.a-color-picker.hide-single-input [show-on-single-input]{display:none}.a-color-picker-clipbaord{width:100%;height:100%;opacity:0;cursor:pointer}.a-color-picker-palette{flex-flow:wrap;flex-direction:row;justify-content:flex-start;padding:10px}.a-color-picker-palette-color{width:15px;height:15px;flex:0 1 15px;margin:3px;box-sizing:border-box;cursor:pointer;border-radius:3px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1)}.a-color-picker-palette-add{text-align:center;line-height:13px;color:#607d8b}.a-color-picker.hidden{display:none}",""])},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var o=(function(e,t){var o=e[1]||"",a=e[3];if(!a)return o;if(t&&"function"==typeof btoa){var n=(function(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"})(a),i=a.sources.map((function(e){return"/*# sourceURL="+a.sourceRoot+e+" */"}));return[o].concat(i).concat([n]).join("\n")}return[o].join("\n")})(t,e);return t[2]?"@media "+t[2]+"{"+o+"}":o})).join("")},t.i=function(e,o){"string"==typeof e&&(e=[[null,e,""]]);for(var a={},n=0;n{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=o(1341);e.exports=a},9239:(e,t,o)=>{var a=o(7294),n=o(3662).useServices,i=o(6590).useToast;e.exports=function(){var e=n(),t=e.core,o=e.dragAndDrop,r=i();return a.useEffect((function(){var e=function(e){var t=e.event,o=e.args;switch(t){case"Error":if("UserPulledFromAPI"===o.source.event&&null===o.source.args.uid)break;if("LibrarySyncWithAPIPlanned"===o.source.event&&null===o.source.args.uid)break;if("Other"===o.error.type&&3===o.error.code&&"AddonInstalled"===o.source.event&&o.source.args.transport_url.startsWith("https://www.strem.io/trakt/addon"))break;r.show({type:"error",title:o.source.event,message:o.error.message,timeout:4e3,dataset:{type:"CoreEvent"}});break;case"TorrentParsed":r.show({type:"success",title:"Torrent file parsed",timeout:4e3});break;case"MagnetParsed":r.show({type:"success",title:"Magnet link parsed",timeout:4e3});break;case"PlayingOnDevice":r.show({type:"success",title:"Stream opened in ".concat(o.device),timeout:4e3})}},a=function(e){var t;r.show({type:"error",title:e.message,message:null===(t=e.file)||void 0===t?void 0:t.name,timeout:4e3})};return t.transport.on("CoreEvent",e),o.on("error",a),function(){t.transport.off("CoreEvent",e),o.off("error",a)}}),[]),null}},4008:(e,t,o)=>{var a=o(5677);e.exports=a},9884:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t{function a(){return a=Object.assign||function(e){for(var t=1;t{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(9872),E=o(8135),_=function(e){var t=e.className,o=e.id,n=e.name,_=e.version,T=e.logo,l=e.description,S=e.types,u=e.transportUrl,d=e.official,c=a.useCallback((function(){return a.createElement(r,{className:E.icon,icon:"ic_addons"})}),[]);return a.createElement("div",{className:i(t,E["addon-details-container"])},a.createElement("div",{className:E["title-container"]},a.createElement(s,{className:E.logo,src:T,alt:" ",renderFallback:c}),a.createElement("div",{className:E["name-container"]},a.createElement("span",{className:E.name},"string"==typeof n&&n.length>0?n:o),"string"==typeof _&&_.length>0?a.createElement("span",{className:E.version},"v. ",_):null)),"string"==typeof l&&l.length>0?a.createElement("div",{className:E["section-container"]},a.createElement("span",{className:E["section-label"]},l)):null,"string"==typeof u&&u.length>0?a.createElement("div",{className:E["section-container"]},a.createElement("span",{className:E["section-header"]},"URL: "),a.createElement("span",{className:i(E["section-label"],E["transport-url-label"])},u)):null,Array.isArray(S)&&S.length>0?a.createElement("div",{className:E["section-container"]},a.createElement("span",{className:E["section-header"]},"Supported types: "),a.createElement("span",{className:E["section-label"]},1===S.length?S[0]:S.slice(0,-1).join(", ")+" & "+S[S.length-1])):null,d?null:a.createElement("div",{className:E["section-container"]},a.createElement("div",{className:i(E["section-label"],E["disclaimer-label"])},"Using third-party add-ons will always be subject to your responsibility and the governing law of the jurisdiction you are located.")))};_.propTypes={className:n.string,id:n.string,name:n.string,version:n.string,logo:n.string,description:n.string,types:n.arrayOf(n.string),transportUrl:n.string,official:n.bool},e.exports=_},5368:(e,t,o)=>{var a=o(5471);e.exports=a},8029:(e,t,o)=>{var a=["remoteAddon","localAddon"];function n(){return n=Object.assign||function(e){for(var t=1;t=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(8253),_=o(6672).withCoreSuspender,T=o(3662).useServices,l=(function(e){var t=function(t){var o=t.remoteAddon,s=t.localAddon,E=i(t,a),_=null!==o&&"Ready"===o.content.type?o.content.content:null!==s?s:null;return null===_?null:r.createElement(e,n({},E,{id:_.manifest.id,name:_.manifest.name,version:_.manifest.version,logo:_.manifest.logo,description:_.manifest.description,types:_.manifest.types,transportUrl:_.transportUrl,official:_.flags.official}))};return t.displayName="withRemoteAndLocalAddon",t})(o(5368)),S=o(9208),u=o(355);var d=function(e){var t=e.transportUrl,o=e.onCloseRequest,a=T().core,n=S(t),i=r.useMemo((function(){var e={className:u["cancel-button"],label:"Cancel",props:{onClick:function(e){"function"==typeof o&&o({type:"cancel",reactEvent:e,nativeEvent:e.nativeEvent})}}},i=null!==n.remoteAddon&&"Ready"===n.remoteAddon.content.type&&n.remoteAddon.content.content.manifest.behaviorHints.configurable?{className:u["configure-button"],label:"Configure",props:{onClick:function(e){window.open(t.replace("manifest.json","configure")),"function"==typeof o&&o({type:"configure",reactEvent:e,nativeEvent:e.nativeEvent})}}}:null,r=null!==n.localAddon?{className:u["uninstall-button"],label:"Uninstall",props:{onClick:function(e){a.transport.dispatch({action:"Ctx",args:{action:"UninstallAddon",args:n.localAddon}}),"function"==typeof o&&o({type:"uninstall",reactEvent:e,nativeEvent:e.nativeEvent})}}}:null!==n.remoteAddon&&"Ready"===n.remoteAddon.content.type?{className:u["install-button"],label:"Install",props:{onClick:function(e){a.transport.dispatch({action:"Ctx",args:{action:"InstallAddon",args:n.remoteAddon.content.content}}),"function"==typeof o&&o({type:"install",reactEvent:e,nativeEvent:e.nativeEvent})}}}:null;return null!==r?i?[e,i,r]:[e,r]:[e]}),[n,o]);return r.createElement(E,{className:u["addon-details-modal-container"],title:"Stremio addon",buttons:i,onCloseRequest:o},null===n.selected?r.createElement("div",{className:u["addon-details-message-container"]},"Loading addon manifest"):null===n.remoteAddon||"Loading"===n.remoteAddon.content.type?r.createElement("div",{className:u["addon-details-message-container"]},"Loading addon manifest from ",n.selected.transportUrl):"Err"===n.remoteAddon.content.type&&null===n.localAddon?r.createElement("div",{className:u["addon-details-message-container"]},"Failed to get addon manifest from ",n.selected.transportUrl,r.createElement("div",null,n.remoteAddon.content.content.message)):r.createElement(l,{className:u["addon-details-container"],remoteAddon:n.remoteAddon,localAddon:n.localAddon}))};d.propTypes={transportUrl:s.string,onCloseRequest:s.func};var c=function(e){var t=e.onCloseRequest;return r.createElement(E,{className:u["addon-details-modal-container"],title:"Stremio addon",onCloseRequest:t},r.createElement("div",{className:u["addon-details-message-container"]},"Loading addon manifest"))};c.propTypes=d.propTypes,e.exports=_(d,c)},8512:(e,t,o)=>{var a=o(8029);e.exports=a},9208:(e,t,o)=>{var a=o(7294),n=o(1535);e.exports=function(e){var t=a.useMemo((function(){return"string"==typeof e?{action:"Load",args:{model:"AddonDetails",args:{transportUrl:e}}}:{action:"Unload"}}),[e]);return n({model:"addon_details",action:t})}},7458:(e,t,o)=>{var a=["className","href","disabled","children","onLongPress"];function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;t=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=o(4184),l=o(4520),S=o(243).useLongPress,u=E.forwardRef((function(e,t){var o=e.className,n=e.href,r=e.disabled,_=e.children,u=e.onLongPress,d=s(e,a),c=S(u,{detect:"pointer"}),A=E.useCallback((function(e){"function"==typeof d.onKeyDown&&d.onKeyDown(e),"Enter"===e.key&&(e.preventDefault(),e.nativeEvent.buttonClickPrevented||e.currentTarget.click())}),[d.onKeyDown]),I=E.useCallback((function(e){"function"==typeof d.onMouseDown&&d.onMouseDown(e),e.nativeEvent.buttonBlurPrevented||(e.preventDefault(),document.activeElement instanceof HTMLElement&&document.activeElement.blur())}),[d.onMouseDown]);return E.createElement("string"==typeof n&&n.length>0?"a":"div",i(i({tabIndex:0},d),{},{ref:t,className:T(o,l["button-container"],{disabled:r}),href:n,onKeyDown:A,onMouseDown:I},c()),_)}));u.displayName="Button",u.propTypes={className:_.string,href:_.string,disabled:_.bool,children:_.node,onKeyDown:_.func,onMouseDown:_.func,onLongPress:_.func},e.exports=u},6851:(e,t,o)=>{var a=o(7458);e.exports=a},2734:e=>{var t={movie:10,series:9,channel:8,tv:7,music:6,radio:5,podcast:4,game:3,book:2,adult:1,other:-1/0},o=new Map([["movie","ic_movies"],["series","ic_series"],["channel","ic_channels"],["tv","ic_tv"],["book","ic_book"],["game","ic_games"],["music","ic_music"],["adult","ic_adult"],["radio","ic_radio"],["podcast","ic_podcast"],["other","ic_movies"]]);e.exports={CHROMECAST_RECEIVER_APP_ID:"1634F54B",SUBTITLES_SIZES:[75,100,125,150,175,200,250],SUBTITLES_FONTS:["Roboto","Arial","Halvetica","Times New Roman","Verdana","Courier","Lucida Console","sans-serif","serif","monospace"],SEEK_TIME_DURATIONS:[5e3,1e4,15e3,2e4,25e3,3e4],NEXT_VIDEO_POPUP_DURATIONS:[0,5e3,1e4,15e3,2e4,25e3,3e4,35e3,4e4,45e3,5e4],CATALOG_PREVIEW_SIZE:10,CATALOG_PAGE_SIZE:100,NONE_EXTRA_VALUE:"None",SKIP_EXTRA_NAME:"skip",META_LINK_CATEGORY:"meta",IMDB_LINK_CATEGORY:"imdb",SHARE_LINK_CATEGORY:"share",WRITERS_LINK_CATEGORY:"Writers",TYPE_PRIORITIES:t,ICON_FOR_TYPE:o}},3064:(e,t,o)=>{var a=["className","checked","children"];function n(){return n=Object.assign||function(e){for(var t=1;t=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(4184),_=o(2601),T=o(6851),l=o(1726),S=r.forwardRef((function(e,t){var o=e.className,s=e.checked,S=e.children,u=i(e,a);return r.createElement(T,n({},u,{ref:t,className:E(o,l["checkbox-container"],{checked:s})}),s?r.createElement("svg",{className:l.icon,viewBox:"0 0 100 100"},r.createElement(_,{x:"10",y:"10",width:"80",height:"80",icon:"ic_check"})):r.createElement(_,{className:l.icon,icon:"ic_box_empty"}),S)}));S.displayName="Checkbox",S.propTypes={className:s.string,checked:s.bool,children:s.node},e.exports=S},9666:(e,t,o)=>{var a=o(3064);e.exports=a},4750:(e,t,o)=>{var a=["className","value","dataset","onChange"];function n(){return n=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=o(4184),l=o(3746),S=o(1468).useTranslation,u=o(6851),d=o(8253),c=o(4024),A=o(7711),I=o(5461),O=function(e){var t=l.parseColor(e,"hexcss4");return"string"==typeof t?t:"#ffffffff"},N=function(e){var t=e.className,o=e.value,r=e.dataset,_=e.onChange,l=s(e,a),N=S().t,R=i(c(!1),3),m=R[0],p=R[1],h=R[2],L=i(E.useState((function(){return O(o)})),2),f=L[0],C=L[1],D=E.useMemo((function(){return{backgroundColor:o}}),[o]),g=E.useMemo((function(){return O(o).endsWith("00")}),[o]),v=E.useCallback((function(e){"function"==typeof l.onClick&&l.onClick(e),e.nativeEvent.openModalPrevented||p()}),[l.onClick]),P=E.useCallback((function(e){e.nativeEvent.openModalPrevented=!0}),[]),y=E.useMemo((function(){return[{label:"Select",props:{"data-autofocus":!0,onClick:function(e){"function"==typeof _&&_({type:"change",value:f,dataset:r,reactEvent:e,nativeEvent:e.nativeEvent}),h()}}}]}),[f,r,_]),B=E.useCallback((function(e){C(O(e.value))}),[]);return E.useLayoutEffect((function(){C(O(o))}),[o,m]),E.createElement(u,n({title:g?N("BUTTON_COLOR_TRANSPARENT"):o},l,{style:D,className:T(t,I["color-input-container"]),onClick:v}),g?E.createElement("div",{className:I["transparent-label-container"]},E.createElement("div",{className:I["transparent-label"]},N("BUTTON_COLOR_TRANSPARENT"))):null,m?E.createElement(d,{title:"Choose a color:",buttons:y,onCloseRequest:h,onClick:P},E.createElement(A,{className:I["color-picker-container"],value:f,onInput:B})):null)};N.propTypes={className:_.string,value:_.string,dataset:_.object,onChange:_.func,onClick:_.func},e.exports=N},3378:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(3746),s=o(4809),E=function(e){return r.parseColor(e,"hexcss4")},_=function(e){var t=e.className,o=e.value,n=e.onInput,_=a.useRef(null),T=a.useRef(null);return a.useLayoutEffect((function(){_.current=r.createPicker(T.current,{color:E(o),showHSL:!1,showHEX:!1,showRGB:!1,showAlpha:!0});var e=T.current.querySelector(".a-color-picker-clipbaord");e instanceof HTMLElement&&(e.tabIndex=-1)}),[]),a.useLayoutEffect((function(){return"function"==typeof n&&_.current.on("change",(function(e,t){n({type:"input",value:E(t)})})),function(){_.current.off("change")}}),[n]),a.useLayoutEffect((function(){var e=E(o);e!==E(_.current.color)&&(_.current.color=e)}),[o]),a.createElement("div",{ref:T,className:i(t,s["color-picker-container"])})};_.propTypes={className:n.string,value:n.string,onInput:n.func},e.exports=_},7711:(e,t,o)=>{var a=o(3378);e.exports=a},8809:(e,t,o)=>{var a=o(4750);e.exports=a},6672:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o1&&void 0!==arguments[1]?arguments[1]:function(){};return function(o){var n=r().core,T=_(),l=a(i.useState(null===T),2),S=l[0],u=l[1],d=i.useRef({}),c=i.useRef({}),A=i.useCallback((function(e){return d.current[e]||(d.current[e]=E(n.transport.getState(e))),d.current[e].read()}),[]),I=i.useCallback((function(e){return c.current[e]||(c.current[e]=E(n.transport.decodeStream(e))),c.current[e].read()}),[]),O=i.useMemo((function(){return{getState:A,decodeStream:I}}),[]);return i.useLayoutEffect((function(){S||u(!0)}),[]),S?i.createElement(i.Suspense,{fallback:i.createElement(t,o)},i.createElement(s.Provider,{value:O},i.createElement(e,o))):null}},useCoreSuspender:_}},7473:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=o(7473);e.exports=a},9504:(e,t,o)=>{var a=["className","src","alt","fallbackSrc","renderFallback"];function n(){return n=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=function(e){var t=e.className,o=e.src,r=e.alt,_=e.fallbackSrc,T=e.renderFallback,l=s(e,a),S=i(E.useState(!1),2),u=S[0],d=S[1],c=E.useCallback((function(e){"function"==typeof l.onError&&l.onError(e),d(!0)}),[l.onError]);return E.useLayoutEffect((function(){d(!1)}),[o]),!u&&"string"==typeof o&&0!==o.length||"function"!=typeof T&&"string"!=typeof _?E.createElement("img",n({},l,{className:t,src:o,alt:r,onError:c})):"function"==typeof T?T():E.createElement("img",n({},l,{className:t,src:_,alt:r}))};T.propTypes={className:_.string,src:_.string,alt:_.string,fallbackSrc:_.string,renderFallback:_.func,onError:_.func},e.exports=T},9872:(e,t,o)=>{var a=o(9504);e.exports=a},859:(e,t,o)=>{var a=["_id","removable"];function n(){return n=Object.assign||function(e){for(var t=1;t=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var _=o(7294),T=o(3662).useServices,l=o(5697),S=o(8277),u=o(7049),d=o(6073).t,c=[{label:"LIBRARY_PLAY",value:"play"},{label:"LIBRARY_DETAILS",value:"details"},{label:"LIBRARY_RESUME_DISMISS",value:"dismiss"},{label:"LIBRARY_REMOVE",value:"remove"}],A=function(e){var t=e._id,o=e.removable,i=E(e,a),s=T().core,l=u(),A=_.useMemo((function(){var e,o,a,n=null!==(e=null===(o=l.items)||void 0===o||null===(a=o[t])||void 0===a?void 0:a.length)&&void 0!==e?e:0;return Math.min(Math.max(n,0),99)}),[t,l.items]),I=_.useMemo((function(){return c.filter((function(e){switch(e.value){case"play":return i.deepLinks&&"string"==typeof i.deepLinks.player;case"details":return i.deepLinks&&("string"==typeof i.deepLinks.metaDetailsVideos||"string"==typeof i.deepLinks.metaDetailsStreams);case"dismiss":return"string"==typeof t&&null!==i.progress&&!isNaN(i.progress);case"remove":return"string"==typeof t&&o}})).map((function(e){return r(r({},e),{},{label:d(e.label)})}))}),[t,o,i.progress,i.deepLinks]),O=_.useCallback((function(e){if("function"==typeof i.optionOnSelect&&i.optionOnSelect(e),!e.nativeEvent.optionSelectPrevented)switch(e.value){case"play":i.deepLinks&&"string"==typeof i.deepLinks.player&&(window.location=i.deepLinks.player);break;case"details":i.deepLinks&&("string"==typeof i.deepLinks.metaDetailsVideos?window.location=i.deepLinks.metaDetailsVideos:"string"==typeof i.deepLinks.metaDetailsStreams&&(window.location=i.deepLinks.metaDetailsStreams));break;case"dismiss":"string"==typeof t&&(s.transport.dispatch({action:"Ctx",args:{action:"RewindLibraryItem",args:t}}),s.transport.dispatch({action:"Ctx",args:{action:"DismissNotificationItem",args:t}}));break;case"remove":"string"==typeof t&&s.transport.dispatch({action:"Ctx",args:{action:"RemoveFromLibrary",args:t}})}}),[t,i.deepLinks,i.optionOnSelect]);return _.createElement(S,n({},i,{newVideos:A,options:I,optionOnSelect:O}))};A.propTypes={_id:l.string,removable:l.bool,progress:l.number,deepLinks:l.shape({metaDetailsVideos:l.string,metaDetailsStreams:l.string,player:l.string}),optionOnSelect:l.func},e.exports=A},5748:(e,t,o)=>{var a=o(859);e.exports=a},3364:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2935),s=r.VerticalNavBar,E=r.HorizontalNavBar,_=o(9684),T=[{id:"board",label:"Board",icon:"ic_board",href:"#/"},{id:"discover",label:"Discover",icon:"ic_discover",href:"#/discover"},{id:"library",label:"Library",icon:"ic_library",href:"#/library"},{id:"settings",label:"SETTINGS",icon:"ic_settings",href:"#/settings"},{id:"addons",label:"ADDONS",icon:"ic_addons",href:"#/addons"}],l=a.memo((function(e){var t=e.className,o=e.route,n=e.query,r=e.children;return a.createElement("div",{className:i(t,_["main-nav-bars-container"])},a.createElement(E,{className:_["horizontal-nav-bar"],route:o,query:n,backButton:!1,searchBar:!0,addonsButton:!0,fullscreenButton:!0,navMenu:!0}),a.createElement(s,{className:_["vertical-nav-bar"],selected:o,tabs:T}),a.createElement("div",{className:_["nav-content-container"]},r))}));l.displayName="MainNavBars",l.propTypes={className:n.string,route:n.string,query:n.string,children:n.node},e.exports=l},1297:(e,t,o)=>{var a=o(3364);e.exports=a},3037:(e,t,o)=>{var a=["className","type","name","poster","posterShape","playIcon","progress","newVideos","options","deepLinks","dataset","optionOnSelect"];function n(){return n=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=o(4184),l=o(7280).Z,S=o(2601),u=o(6851),d=o(9872),c=o(3981),A=o(926),I=o(4024),O=o(2734).ICON_FOR_TYPE,N=o(4661),R=E.memo((function(e){var t=e.className,o=e.type,r=e.name,_=e.poster,R=e.posterShape,m=e.playIcon,p=e.progress,h=e.newVideos,L=e.options,f=e.deepLinks,C=e.dataset,D=e.optionOnSelect,g=s(e,a),v=i(I(!1),3),P=v[0],y=v[1],B=v[2],b=E.useMemo((function(){return f?"string"==typeof f.player?f.player:"string"==typeof f.metaDetailsStreams?f.metaDetailsStreams:"string"==typeof f.metaDetailsVideos?f.metaDetailsVideos:null:null}),[f]),M=E.useCallback((function(e){"function"==typeof g.onClick&&g.onClick(e),e.nativeEvent.selectPrevented&&e.preventDefault()}),[g.onClick]),U=E.useCallback((function(e){e.nativeEvent.selectPrevented=!0}),[]),W=E.useCallback((function(e){"function"==typeof D&&D({type:"select-option",value:e.value,dataset:C,reactEvent:e.reactEvent,nativeEvent:e.nativeEvent})}),[C,D]),G=E.useCallback((function(){return E.createElement(S,{className:N["placeholder-icon"],icon:O.has(o)?O.get(o):O.get("other")})}),[o]),F=E.useCallback((function(){return E.createElement(S,{className:N.icon,icon:"ic_more"})}),[]);return E.createElement(u,n({title:r,href:b},l(g),{className:T(t,N["meta-item-container"],N["poster-shape-poster"],N["poster-shape-".concat(R)],{active:P}),onClick:M}),E.createElement("div",{className:N["poster-container"]},E.createElement("div",{className:N["poster-image-layer"]},E.createElement(d,{className:N["poster-image"],src:_,alt:" ",renderFallback:G})),m?E.createElement("div",{className:N["play-icon-layer"]},E.createElement(A,{className:N["play-icon"]})):null,p>0?E.createElement("div",{className:N["progress-bar-layer"]},E.createElement("div",{className:N["progress-bar"],style:{width:"".concat(100*Math.max(0,Math.min(1,p)),"%")}})):null,h>0?E.createElement("div",{className:N["new-videos"]},E.createElement("div",{className:N.layer}),E.createElement("div",{className:N.layer}),E.createElement("div",{className:N.layer},"+",h)):null),"string"==typeof r&&r.length>0||Array.isArray(L)&&L.length>0?E.createElement("div",{className:N["title-bar-container"]},E.createElement("div",{className:N["title-label"]},"string"==typeof r&&r.length>0?r:""),Array.isArray(L)&&L.length>0?E.createElement(c,{className:N["menu-label-container"],renderLabelContent:F,options:L,onOpen:y,onClose:B,onSelect:W,tabIndex:-1,onClick:U}):null):null)}));R.displayName="MetaItem",R.propTypes={className:_.string,type:_.string,name:_.string,poster:_.string,posterShape:_.oneOf(["poster","landscape","square"]),playIcon:_.bool,progress:_.number,newVideos:_.number,options:_.array,deepLinks:_.shape({metaDetailsVideos:_.string,metaDetailsStreams:_.string,player:_.string}),dataset:_.object,optionOnSelect:_.func,onClick:_.func},e.exports=R},8277:(e,t,o)=>{var a=o(3037);e.exports=a},4902:(e,t,o)=>{var a=["className","icon","label"];function n(){return n=Object.assign||function(e){for(var t=1;t=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(4184),_=o(2601),T=o(6851),l=o(5883),S=function(e){var t=e.className,o=e.icon,s=e.label,S=i(e,a);return r.createElement(T,n({title:s},S,{className:E(t,l["action-button-container"])}),"string"==typeof o&&o.length>0?r.createElement("div",{className:l["icon-container"]},r.createElement(_,{className:l.icon,icon:o})):null,"string"==typeof s&&s.length>0?r.createElement("div",{className:l["label-container"]},r.createElement("div",{className:l.label},s)):null)};S.propTypes={className:s.string,icon:s.string,label:s.string},e.exports=S},217:(e,t,o)=>{var a=o(4902);e.exports=a},8049:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(6851),E=o(7621),_=function(e){var t=e.className,o=e.label,n=e.links,_=r().t;return a.createElement("div",{className:i(t,E["meta-links-container"])},"string"==typeof o&&o.length>0?a.createElement("div",{className:E["label-container"]},_("LINKS_".concat(o.toUpperCase()))):null,Array.isArray(n)&&n.length>0?a.createElement("div",{className:E["links-container"]},n.map((function(e,t){var o=e.label,n=e.href;return a.createElement(s,{key:t,className:E["link-container"],title:o,href:n},_(o))}))):null)};_.propTypes={className:n.string,label:n.string,links:n.arrayOf(n.shape({label:n.string,href:n.string}))},e.exports=_},7818:(e,t,o)=>{var a=o(8049);e.exports=a},6314:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o0&&(e.has(o)||e.set(o,[]),e.get(o).push({label:a,href:"https://www.stremio.com/warning#".concat(encodeURIComponent(n))})),e}),new Map):new Map}),[y]),H=r.useMemo((function(){return P?"string"==typeof P.player?P.player:"string"==typeof P.metaDetailsStreams?P.metaDetailsStreams:"string"==typeof P.metaDetailsVideos?P.metaDetailsVideos:null:null}),[P]),V=r.useMemo((function(){return Array.isArray(B)&&0!==B.length?B[0].deepLinks.player:null}),[B]),Y=r.useCallback((function(){return r.createElement("div",{className:p["logo-placeholder"]},I?null:m)}),[I,m]);return r.createElement("div",{className:E(s,p["meta-preview-container"],(t={},o=p.compact,i=I,o in t?Object.defineProperty(t,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[o]=i,t))},"string"==typeof f&&f.length>0?r.createElement("div",{className:p["background-image-layer"]},r.createElement(u,{className:p["background-image"],src:f,alt:" "})):null,r.createElement("div",{className:p["meta-info-container"]},"string"==typeof L&&L.length>0?r.createElement(u,{className:p.logo,src:L,alt:" ",title:m,renderFallback:Y}):Y(),"string"==typeof D&&D.length>0||g instanceof Date&&!isNaN(g.getTime())||"string"==typeof C&&C.length>0||w.has(A.IMDB_LINK_CATEGORY)?r.createElement("div",{className:p["runtime-release-info-container"]},"string"==typeof C&&C.length>0?r.createElement("div",{className:p["runtime-label"]},C):null,"string"==typeof D&&D.length>0?r.createElement("div",{className:p["release-info-label"]},D):g instanceof Date&&!isNaN(g.getTime())?r.createElement("div",{className:p["release-info-label"]},g.getFullYear()):null,w.has(A.IMDB_LINK_CATEGORY)?r.createElement(S,a({className:p["imdb-button-container"],title:w.get(A.IMDB_LINK_CATEGORY).label,href:w.get(A.IMDB_LINK_CATEGORY).href,target:"_blank"},I?{tabIndex:-1}:null),r.createElement(l,{className:p.icon,icon:"ic_imdbnoframe"}),r.createElement("div",{className:p.label},w.get(A.IMDB_LINK_CATEGORY).label)):null):null,I&&"string"==typeof m&&m.length>0?r.createElement("div",{className:p["name-container"]},m):null,I&&"string"==typeof v&&v.length>0?r.createElement("div",{className:p["description-container"]},v):null,Array.from(w.keys()).filter((function(e){return e!==A.IMDB_LINK_CATEGORY&&e!==A.SHARE_LINK_CATEGORY&&e!==A.WRITERS_LINK_CATEGORY})).map((function(e,t){return r.createElement(R,{key:t,className:p["meta-links"],label:e,links:w.get(e)})}))),r.createElement("div",{className:p["action-buttons-container"]},"function"==typeof M?r.createElement(N,{className:p["action-button"],icon:b?"ic_removelib":"ic_addlib",label:U(b?"REMOVE_FROM_LIB":"ADD_TO_LIB"),tabIndex:I?-1:0,onClick:M}):null,"string"==typeof V?r.createElement(N,{className:p["action-button"],icon:"ic_movies",label:U("TRAILER"),tabIndex:I?-1:0,href:V}):null,"string"==typeof H&&I?r.createElement(N,{className:p["action-button"],icon:"ic_play",label:U("SHOW"),tabIndex:I?-1:0,href:H}):null,w.has(A.SHARE_LINK_CATEGORY)&&!I?r.createElement(r.Fragment,null,r.createElement(N,{className:p["action-button"],icon:"ic_share",label:U("CTX_SHARE"),tabIndex:I?-1:0,onClick:F}),G?r.createElement(d,{title:U("CTX_SHARE"),onCloseRequest:k},r.createElement(c,{className:p["share-prompt"],url:w.get(A.SHARE_LINK_CATEGORY).href})):null):null))};L.Placeholder=m,L.propTypes={className:s.string,compact:s.bool,name:s.string,logo:s.string,background:s.string,runtime:s.string,releaseInfo:s.string,released:s.instanceOf(Date),description:s.string,deepLinks:s.shape({metaDetailsVideos:s.string,metaDetailsStreams:s.string,player:s.string}),links:s.arrayOf(s.shape({category:s.string,name:s.string,url:s.string})),trailerStreams:s.array,inLibrary:s.bool,toggleInLibrary:s.func},e.exports=L},2641:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(6506),s=function(e){var t=e.className;return a.createElement("div",{className:i(t,r["meta-preview-placeholder-container"])},a.createElement("div",{className:r["meta-info-container"]},a.createElement("div",{className:r["logo-container"]}),a.createElement("div",{className:r["duration-release-info-container"]},a.createElement("div",{className:r["duration-container"]}),a.createElement("div",{className:r["release-info-container"]})),a.createElement("div",{className:r["description-container"]},a.createElement("div",{className:r["description-label-container"]}),a.createElement("div",{className:r["description-label-container"]})),a.createElement("div",{className:r["genres-container"]},a.createElement("div",{className:r["genres-header-container"]}),a.createElement("div",{className:r["genre-label-container"]})),a.createElement("div",{className:r["genres-container"]},a.createElement("div",{className:r["genres-header-container"]}),a.createElement("div",{className:r["genre-label-container"]}))),a.createElement("div",{className:r["action-buttons-container"]},a.createElement("div",{className:r["action-button-container"]},a.createElement("div",{className:r["action-button-icon"]}),a.createElement("div",{className:r["action-button-label"]})),a.createElement("div",{className:r["action-button-container"]},a.createElement("div",{className:r["action-button-icon"]}),a.createElement("div",{className:r["action-button-label"]})),a.createElement("div",{className:r["action-button-container"]},a.createElement("div",{className:r["action-button-icon"]}),a.createElement("div",{className:r["action-button-label"]}))))};s.propTypes={className:n.string},e.exports=s},4322:(e,t,o)=>{var a=o(2641);e.exports=a},3070:(e,t,o)=>{var a=o(6314);e.exports=a},8370:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t0||d&&("string"==typeof d.discover||"string"==typeof d.library)?r.createElement("div",{className:c["header-container"]},"string"==typeof o&&o.length>0?r.createElement("div",{className:c["title-container"],title:o},o):null,!d||"string"!=typeof d.discover&&"string"!=typeof d.library?null:r.createElement(S,{className:c["see-all-container"],title:A("BUTTON_SEE_ALL"),href:d.discover||d.library,tabIndex:-1},r.createElement("div",{className:c.label},A("BUTTON_SEE_ALL")),r.createElement(l,{className:c.icon,icon:"ic_arrow_thin_right"}))):null,"string"==typeof a&&a.length>0?r.createElement("div",{className:c["message-container"],title:a},a):r.createElement("div",{className:c["meta-items-container"]},s.isValidElementType(E)?i.slice(0,u.CATALOG_PREVIEW_SIZE).map((function(e,t){return r.createElement(E,n(n({},e),{},{key:t,className:_(c["meta-item"],c["poster-shape-poster"],c["poster-shape-".concat(e.posterShape)])}))})):null,Array(Math.max(0,u.CATALOG_PREVIEW_SIZE-i.length)).fill(null).map((function(e,t){return r.createElement("div",{key:t,className:_(c["meta-item"],c["poster-shape-poster"])})}))))};A.Placeholder=d,A.propTypes={className:E.string,title:E.string,message:E.string,items:E.arrayOf(E.shape({posterShape:E.string})),itemComponent:E.elementType,deepLinks:E.shape({discover:E.string,library:E.string})},e.exports=A},2268:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(2601),E=o(6851),_=o(2734),T=o(7841),l=function(e){var t=e.className,o=e.title,n=e.deepLinks,l=r().t;return a.createElement("div",{className:i(t,T["meta-row-placeholder-container"])},a.createElement("div",{className:T["header-container"]},a.createElement("div",{className:T["title-container"],title:"string"==typeof o&&o.length>0?o:null},"string"==typeof o&&o.length>0?o:null),n&&"string"==typeof n.discover?a.createElement(E,{className:T["see-all-container"],title:l("BUTTON_SEE_ALL"),href:n.discover,tabIndex:-1},a.createElement("div",{className:T.label},l("BUTTON_SEE_ALL")),a.createElement(s,{className:T.icon,icon:"ic_arrow_thin_right"})):null),a.createElement("div",{className:T["meta-items-container"]},Array(_.CATALOG_PREVIEW_SIZE).fill(null).map((function(e,t){return a.createElement("div",{key:t,className:T["meta-item"]},a.createElement("div",{className:T["poster-container"]}),a.createElement("div",{className:T["title-bar-container"]},a.createElement("div",{className:T["title-label"]})))}))))};l.propTypes={className:n.string,title:n.string,deepLinks:n.shape({discover:n.string})},e.exports=l},411:(e,t,o)=>{var a=o(2268);e.exports=a},9321:(e,t,o)=>{var a=o(8370);e.exports=a},8787:(e,t,o)=>{var a=["className","title","buttons","children","dataset","onCloseRequest"];function n(){return n=Object.assign||function(e){for(var t=1;t=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(4184),_=o(1665),T=_.useRouteFocused,l=_.useModalsContainer,S=o(6851),u=o(2601),d=o(1665).Modal,c=o(1621),A=function(e){var t=e.className,o=e.title,s=e.buttons,_=e.children,A=e.dataset,I=e.onCloseRequest,O=i(e,a),N=T(),R=l(),m=r.useRef(null),p=r.useCallback((function(e){"function"==typeof I&&I({type:"close",dataset:A,reactEvent:e,nativeEvent:e.nativeEvent})}),[A,I]),h=r.useCallback((function(e){e.nativeEvent.closeModalDialogPrevented||"function"!=typeof I||I({type:"close",dataset:A,reactEvent:e,nativeEvent:e.nativeEvent})}),[A,I]),L=r.useCallback((function(e){e.nativeEvent.closeModalDialogPrevented=!0}),[]);return r.useEffect((function(){var e=function(e){"Escape"===e.code&&R.childNodes[R.childElementCount-2]===m.current&&"function"==typeof I&&I({type:"close",dataset:A,nativeEvent:e})};return N&&window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[N,A,I]),r.createElement(d,n({ref:m},O,{className:E(t,c["modal-container"]),onMouseDown:h}),r.createElement("div",{className:c["modal-dialog-container"],onMouseDown:L},r.createElement(S,{className:c["close-button-container"],title:"Close",onClick:p},r.createElement(u,{className:c.icon,icon:"ic_x"})),"string"==typeof o&&o.length>0?r.createElement("div",{className:c["title-container"],title:o},o):null,r.createElement("div",{className:c["modal-dialog-content"]},_),Array.isArray(s)&&s.length>0?r.createElement("div",{className:c["buttons-container"]},s.map((function(e,t){var o=e.className,a=e.label,i=e.icon,s=e.props;return r.createElement(S,n({title:a},s,{key:t,className:E(o,c["action-button"])}),"string"==typeof i&&i.length>0?r.createElement(u,{className:c.icon,icon:i}):null,"string"==typeof a&&a.length>0?r.createElement("div",{className:c.label},a):null)}))):null))};A.propTypes={className:s.string,title:s.string,buttons:s.arrayOf(s.shape({className:s.string,label:s.string,icon:s.string,props:s.object})),children:s.oneOfType([s.arrayOf(s.node),s.node]),dataset:s.object,onCloseRequest:s.func},e.exports=A},8253:(e,t,o)=>{var a=o(8787);e.exports=a},2035:(e,t,o)=>{var a=["className","mode","direction","title","disabled","dataset","renderLabelContent","renderLabelText","onOpen","onClose","onSelect"],n=["children","className"];function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function r(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var S=o(7294),u=o(5697),d=o(4184),c=o(2601),A=o(6851),I=o(9418),O=o(8253),N=o(4024),R=o(7409),m=function(e){var t=e.className,o=e.mode,i=e.direction,s=e.title,T=e.disabled,u=e.dataset,m=e.renderLabelContent,p=e.renderLabelText,h=e.onOpen,L=e.onClose,f=e.onSelect,C=l(e,a),D=_(N(!1),4),g=D[0],v=D[2],P=D[3],y=S.useMemo((function(){return Array.isArray(C.options)?C.options.filter((function(e){return e&&"string"==typeof e.value})):[]}),[C.options]),B=S.useMemo((function(){return Array.isArray(C.selected)?C.selected.filter((function(e){return"string"==typeof e})):[]}),[C.selected]),b=S.useCallback((function(e){"function"==typeof C.onClick&&C.onClick(e),e.nativeEvent.toggleMenuPrevented||P()}),[C.onClick,P]),M=S.useCallback((function(e){e.nativeEvent.toggleMenuPrevented=!0}),[]),U=S.useCallback((function(e){e.nativeEvent.buttonClickPrevented=!0}),[]),W=S.useCallback((function(e){"function"==typeof f&&f({type:"select",value:e.currentTarget.dataset.value,reactEvent:e,nativeEvent:e.nativeEvent,dataset:u}),e.nativeEvent.closeMenuPrevented||v()}),[u,f]),G=S.useRef(!1);S.useLayoutEffect((function(){G.current&&(g?"function"==typeof h&&h({type:"open",dataset:u}):"function"==typeof L&&L({type:"close",dataset:u})),G.current=!0}),[g]);var F=S.useCallback((function(e){var t=e.children,o=e.className,a=l(e,n);return S.createElement(A,E({},a,{className:d(o,R["label-container"],{active:g}),title:s,disabled:T,onClick:b}),"function"==typeof m?m():S.createElement(S.Fragment,null,S.createElement("div",{className:R.label},"function"==typeof p?p():B.length>0?B.map((function(e){var t=y.find((function(t){return t.value===e}));return t&&"string"==typeof t.label?t.label:e})).join(", "):s),S.createElement(c,{className:R.icon,icon:"ic_arrow_thin_down"})),t)}),[g,s,T,y,B,b,m,p]),k=S.useCallback((function(){return S.createElement("div",{className:R["menu-container"],onKeyDown:U,onClick:M},y.length>0?y.map((function(e){var t=e.label,o=e.title,a=e.value;return S.createElement(A,{key:a,className:d(R["option-container"],{selected:B.includes(a)}),title:"string"==typeof o?o:"string"==typeof t?t:a,"data-value":a,onClick:W},S.createElement("div",{className:R.label},"string"==typeof t?t:a),S.createElement("div",{className:R.icon}))})):S.createElement("div",{className:R["no-options-container"]},S.createElement("div",{className:R.label},"No options available")))}),[y,B,U,M,W]),w=S.useMemo((function(){return function(e){return F(r(r(r({},e),C),{},{className:d(t,e.className)}))}}),[C,t,F]);return"modal"===o?F(r(r({},C),{},{className:t,children:g?S.createElement(O,{className:R["modal-container"],title:s,onCloseRequest:v,onKeyDown:U,onClick:M},k()):null})):S.createElement(I,{open:g,direction:i,onCloseRequest:v,renderLabel:w,renderMenu:k})};m.propTypes={className:u.string,mode:u.oneOf(["popup","modal"]),direction:u.any,title:u.string,options:u.arrayOf(u.shape({value:u.string.isRequired,title:u.string,label:u.string})),selected:u.arrayOf(u.string),disabled:u.bool,dataset:u.object,renderLabelContent:u.func,renderLabelText:u.func,onOpen:u.func,onClose:u.func,onSelect:u.func,onClick:u.func},e.exports=m},3981:(e,t,o)=>{var a=o(2035);e.exports=a},6934:(e,t,o)=>{var a=["className","route","query","title","backButton","searchBar","addonsButton","fullscreenButton","navMenu"];function n(){return n=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=o(4184),l=o(2601),S=o(6851),u=o(9872),d=o(8489),c=o(5430),A=o(923),I=o(4887),O=o(6073).t,N=E.memo((function(e){var t=e.className,r=e.route,_=e.query,N=e.title,R=e.backButton,m=e.searchBar,p=e.addonsButton,h=e.fullscreenButton,L=e.navMenu,f=s(e,a),C=E.useCallback((function(){window.history.back()}),[]),D=i(d(),3),g=D[0],v=D[1],P=D[2],y=E.useCallback((function(e){var t=e.ref,o=e.className,a=e.onClick,n=e.children;return E.createElement(S,{ref:t,className:T(o,I["button-container"],I["menu-button-container"]),tabIndex:-1,onClick:a},E.createElement(l,{className:I.icon,icon:"ic_more"}),n)}),[]);return E.createElement("nav",n({},f,{className:T(t,I["horizontal-nav-bar-container"])}),R?E.createElement(S,{className:T(I["button-container"],I["back-button-container"]),tabIndex:-1,onClick:C},E.createElement(l,{className:I.icon,icon:"ic_back_ios"})):E.createElement("div",{className:I["logo-container"]},E.createElement(u,{className:I.logo,src:o(5313),alt:" "})),"string"==typeof N&&N.length>0?E.createElement("h2",{className:I.title},N):null,E.createElement("div",{className:I.spacing}),m?E.createElement(c,{className:I["search-bar"],query:_,active:"search"===r}):null,E.createElement("div",{className:I.spacing}),p?E.createElement(S,{className:I["button-container"],href:"#/addons",title:O("ADDONS"),tabIndex:-1},E.createElement(l,{className:I.icon,icon:"ic_addons"})):null,h?E.createElement(S,{className:I["button-container"],title:O(g?"EXIT_FULLSCREEN":"ENTER_FULLSCREEN"),tabIndex:-1,onClick:g?P:v},E.createElement(l,{className:I.icon,icon:g?"ic_exit_fullscreen":"ic_fullscreen"})):null,L?E.createElement(A,{renderLabel:y}):null)}));N.displayName="HorizontalNavBar",N.propTypes={className:_.string,route:_.string,query:_.string,title:_.string,backButton:_.bool,searchBar:_.bool,addonsButton:_.bool,fullscreenButton:_.bool,navMenu:_.bool},e.exports=N},1229:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{function a(e,t,o,a,n,i,r){try{var s=e[i](r),E=s.value}catch(e){return void o(e)}s.done?t(E):Promise.resolve(E).then(a,n)}function n(e){return function(){var t=this,o=arguments;return new Promise((function(n,i){var r=e.apply(t,o);function s(e){a(r,n,i,s,E,"next",e)}function E(e){a(r,n,i,s,E,"throw",e)}s(void 0)}))}}function i(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return r(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=o(1229);e.exports=a},3833:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(2601),E=o(1665).useRouteFocused,_=o(6851),T=o(6230),l=o(1657),S=o(6672).withCoreSuspender,u=o(7551),d=function(e){var t=e.className,o=e.query,n=e.active,S=r().t,d=E(),c=l().createTorrentFromMagnet,A=a.useRef(null),I=a.useCallback((function(){n||(window.location="#/search")}),[n]),O=a.useCallback((function(){try{c(A.current.value)}catch(e){}}),[]),N=a.useCallback((function(){if(null!==A.current){var e=new URLSearchParams([["search",A.current.value]]);window.location="#/search?".concat(e.toString())}}),[]);return a.useEffect((function(){d&&n&&A.current.focus()}),[d,n,o]),a.createElement("label",{className:i(t,u["search-bar-container"],{active:n}),onClick:I},n?a.createElement(T,{key:o,ref:A,className:u["search-input"],type:"text",placeholder:S("SEARCH_OR_PASTE_LINK"),defaultValue:o,tabIndex:-1,onChange:O,onSubmit:N}):a.createElement("div",{className:u["search-input"]},a.createElement("div",{className:u["placeholder-label"]},S("SEARCH_OR_PASTE_LINK"))),a.createElement(_,{className:u["submit-button-container"],tabIndex:-1,onClick:N},a.createElement(s,{className:u.icon,icon:"ic_search_link"})))};d.propTypes={className:n.string,query:n.string,active:n.bool};var c=function(e){var t=e.className,o=r().t;return a.createElement("label",{className:i(t,u["search-bar-container"])},a.createElement("div",{className:u["search-input"]},a.createElement("div",{className:u["placeholder-label"]},o("SEARCH_OR_PASTE_LINK"))),a.createElement(_,{className:u["submit-button-container"],tabIndex:-1},a.createElement(s,{className:u.icon,icon:"ic_search_link"})))};c.propTypes=d.propTypes,e.exports=S(d,c)},5430:(e,t,o)=>{var a=o(3833);e.exports=a},1871:(e,t,o)=>{var a=o(6934);e.exports=a},2878:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(6851),E=o(9872),_=o(9842),T=function(e){var t=e.className,o=e.logo,n=e.icon,T=e.label,l=e.href,S=e.selected,u=e.onClick,d=a.useCallback((function(){return"string"==typeof n&&n.length>0?a.createElement(r,{className:_.icon,icon:n}):null}),[n]);return a.createElement(s,{className:i(t,_["nav-tab-button-container"],{selected:S}),title:T,tabIndex:-1,href:l,onClick:u},"string"==typeof o&&o.length>0?a.createElement(E,{className:_.logo,src:o,alt:" ",renderFallback:d}):"string"==typeof n&&n.length>0?a.createElement(r,{className:_.icon,icon:n}):null,"string"==typeof T&&T.length>0?a.createElement("div",{className:_.label},T):null)};T.propTypes={className:n.string,logo:n.string,icon:n.string,label:n.string,href:n.string,selected:n.bool,onClick:n.func},e.exports=T},3908:(e,t,o)=>{var a=o(2878);e.exports=a},6063:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(3908),E=o(7636),_=a.memo((function(e){var t=e.className,o=e.selected,n=e.tabs,_=r().t;return a.createElement("nav",{className:i(t,E["vertical-nav-bar-container"])},Array.isArray(n)?n.map((function(e,t){return a.createElement(s,{key:t,className:E["nav-tab-button"],selected:e.id===o,href:e.href,logo:e.logo,icon:e.icon,label:_(e.label),onClick:e.onClick})})):null)}));_.displayName="VerticalNavBar",_.propTypes={className:n.string,selected:n.string,tabs:n.arrayOf(n.shape({id:n.string,label:n.string,logo:n.string,icon:n.string,href:n.string,onClick:n.func}))},e.exports=_},9798:(e,t,o)=>{var a=o(6063);e.exports=a},2935:(e,t,o)=>{var a=o(1871),n=o(9798);e.exports={HorizontalNavBar:a,VerticalNavBar:n}},8417:(e,t,o)=>{var a=["className","label","dataset","onSelect"];function n(){return n=Object.assign||function(e){for(var t=1;t=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(4184),_=o(2601),T=o(6851),l=o(2168),S=function(e){var t=e.className,o=e.label,s=e.dataset,S=e.onSelect,u=i(e,a),d=r.useCallback((function(e){"function"==typeof S&&S({type:"change-page",value:e.currentTarget.dataset.value,dataset:s,reactEvent:e,nativeEvent:e.nativeEvent})}),[s,S]);return r.createElement("div",n({},u,{className:E(t,l["pagination-input-container"])}),r.createElement(T,{className:l["prev-button-container"],title:"Previous page","data-value":"prev",onClick:d},r.createElement(_,{className:l.icon,icon:"ic_arrow_left"})),r.createElement("div",{className:l["label-container"],title:o},r.createElement("div",{className:l.label},o)),r.createElement(T,{className:l["next-button-container"],title:"Next page","data-value":"next",onClick:d},r.createElement(_,{className:l.icon,icon:"ic_arrow_right"})))};S.propTypes={className:s.string,label:s.string,dataset:s.object,onSelect:s.func},e.exports=S},2391:(e,t,o)=>{var a=o(8417);e.exports=a},7206:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(9192),r=function(e){var t=e.className;return a.createElement("svg",{className:t,viewBox:"0 0 100 100"},a.createElement("circle",{className:i.background,cx:"50",cy:"50",r:"50"}),a.createElement("svg",{className:i.icon,x:"0",y:"25",width:"100",height:"50",viewBox:"0 0 37.14 32"},a.createElement("path",{d:"M 9.14,0 37.14,16 9.14,32 Z"})))};r.propTypes={className:n.string},e.exports=r},926:(e,t,o)=>{var a=o(7206);e.exports=a},1804:(e,t,o)=>{var a=["open","direction","renderLabel","renderMenu","dataset","onCloseRequest"];function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var T=o(7294),l=o(5697),S=o(4184),u=o(6413).ZP,d=o(1665).useRouteFocused,c=o(194),A=function e(t){if(t===document.documentElement)return t;var o=window.getComputedStyle(t);return-1!==o.overflowY.indexOf("auto")||-1!==o.overflowY.indexOf("scroll")?t:e(t.parentElement)},I=function(e){var t=e.open,o=e.direction,n=e.renderLabel,E=e.renderMenu,l=e.dataset,I=e.onCloseRequest,O=_(e,a),N=d(),R=T.useRef(null),m=T.useRef(null),p=s(T.useState(null),2),h=p[0],L=p[1],f=T.useCallback((function(e){e.nativeEvent.closePopupPrevented=!0}),[]);return T.useEffect((function(){var e=function(e){if(!e.closePopupPrevented&&"function"==typeof I){var t={type:"close",nativeEvent:e,dataset:l};switch(e.type){case"keydown":"Escape"===e.code&&I(t);break;case"mousedown":case"pointerdown":e.target===document.documentElement||R.current.contains(e.target)||I(t)}}};return N&&t&&(window.addEventListener("keydown",e),window.addEventListener("mousedown",e),window.addEventListener("pointerdown",e)),function(){window.removeEventListener("keydown",e),window.removeEventListener("mousedown",e),window.removeEventListener("pointerdown",e)}}),[N,t,I,l]),T.useLayoutEffect((function(){if(t){var e=[],o=A(R.current).getBoundingClientRect(),a=R.current.getBoundingClientRect(),n=m.current.getBoundingClientRect(),i={left:a.left-o.left,top:a.top-o.top,right:o.width+o.left-(a.left+a.width),bottom:o.height+o.top-(a.top+a.height)};n.height<=i.bottom?e.push("bottom"):n.height<=i.top?e.push("top"):i.bottom>=i.top?e.push("bottom"):e.push("top"),n.width<=i.right+a.width?e.push("right"):n.width<=i.left+a.width?e.push("left"):i.right>i.left?e.push("right"):e.push("left"),L(e.join("-"))}else L(null)}),[t]),n(i(i({},O),{},{ref:R,className:S(c["label-container"],O.className,{active:t}),children:t?T.createElement(u,{ref:m,className:S(c["menu-container"],r({},c["menu-direction-".concat(h)],!o),r({},c["menu-direction-".concat(o)],o)),autoFocus:!1,lockProps:{onMouseDown:f}},E()):null}))};I.propTypes={open:l.bool,direction:l.oneOf(["top-left","bottom-left","top-right","bottom-right"]),renderLabel:l.func.isRequired,renderMenu:l.func.isRequired,dataset:l.object,onCloseRequest:l.func},e.exports=I},9418:(e,t,o)=>{var a=o(1804);e.exports=a},6182:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(6230),E=o(4830),_=o(330),T=function(e){var t=e.className,o=e.title,n=e.value,E=e.onChange;return a.createElement("label",{title:o,className:i(t,_["search-bar-container"])},a.createElement(s,{className:_["search-input"],type:"text",placeholder:o,value:n,onChange:E}),a.createElement(r,{className:_.icon,icon:"ic_search"}))};T.Placeholder=E,T.propTypes={className:n.string,title:n.string,value:n.string,onChange:n.func},e.exports=T},3994:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(3109),E=function(e){var t=e.className,o=e.title;return a.createElement("div",{className:i(t,s["search-bar-container"])},a.createElement("div",{className:s["search-input"]},o),a.createElement(r,{className:s.icon,icon:"ic_search"}))};E.propTypes={className:n.string,title:n.string},e.exports=E},4830:(e,t,o)=>{var a=o(3994);e.exports=a},6798:(e,t,o)=>{var a=o(6182);e.exports=a},5005:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(2601),E=o(1665).useRouteFocused,_=o(3662).useServices,T=o(6851),l=o(6230),S=o(4530),u=function(e){var t=e.className,o=e.url,n=r().t,u=_().core,d=a.useRef(null),c=E(),A=a.useCallback((function(){null!==d.current&&d.current.select()}),[]),I=a.useCallback((function(){null!==d.current&&(d.current.select(),document.execCommand("copy"))}),[]);return a.useEffect((function(){c&&null!==d.current&&d.current.select()}),[c]),a.useEffect((function(){u.transport.analytics({event:"Share",args:{url:o}})}),[o]),a.createElement("div",{className:i(t,S["share-prompt-container"])},a.createElement("div",{className:S["buttons-container"]},a.createElement(T,{className:i(S["button-container"],S["facebook-button"]),title:"Facebook",href:"https://www.facebook.com/sharer/sharer.php?u=".concat(o),target:"_blank"},a.createElement(s,{className:S.icon,icon:"ic_facebook"}),a.createElement("div",{className:S.label},"Facebook")),a.createElement(T,{className:i(S["button-container"],S["twitter-button"]),title:"Twitter",href:"https://twitter.com/home?status=".concat(o),target:"_blank"},a.createElement(s,{className:S.icon,icon:"ic_twitter"}),a.createElement("div",{className:S.label},"Twitter"))),a.createElement("div",{className:S["url-container"]},a.createElement(l,{ref:d,className:S["url-text-input"],type:"text",readOnly:!0,defaultValue:o,onClick:A,tabIndex:-1}),a.createElement(T,{className:S["copy-button"],title:"Copy to clipboard",onClick:I},a.createElement(s,{className:S.icon,icon:"ic_link"}),a.createElement("div",{className:S.label},n("COPY")))))};u.propTypes={className:n.string,url:n.string},e.exports=u},9393:(e,t,o)=>{var a=o(5005);e.exports=a},4068:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=o(4068);e.exports=a},9009:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;tDate.now()?null:r.createElement("div",{className:_(t,d["warning-container"])},r.createElement("div",{className:d["warning-statement"]},o("SETTINGS_SERVER_UNAVAILABLE")),r.createElement("a",{href:"https://www.stremio.com/download-service",target:"_blank",rel:"noreferrer"},r.createElement(l,{className:d["warning-button"],title:o("SERVICE_INSTALL"),tabIndex:-1},r.createElement("div",{className:d["warning-label"]},o("SERVICE_INSTALL")))),r.createElement(l,{className:d["warning-button"],title:o("WARNING_STREAMING_SERVER_LATER"),onClick:E,tabIndex:-1},r.createElement("div",{className:d["warning-label"]},o("WARNING_STREAMING_SERVER_LATER"))),r.createElement(l,{className:d["warning-button"],title:o("DONT_SHOW_AGAIN"),onClick:u,tabIndex:-1},r.createElement("div",{className:d["warning-label"]},o("DONT_SHOW_AGAIN"))))};c.propTypes={className:E.string},e.exports=u(c)},861:(e,t,o)=>{var a=o(9009);e.exports=a},1007:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;t{var a=o(1007);e.exports=a},6049:(e,t,o)=>{var a=o(7294).createContext({show:function(){},clear:function(){}});a.displayName="ToastContext",e.exports=a},3345:(e,t,o)=>{var a=["title","message","dataset","onSelect","onClose"];function n(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var i=o(7294),r=o(5697),s=o(4184),E=o(2601),_=o(6851),T=o(9775),l=function(e){var t=e.title,o=e.message,r=e.dataset,l=e.onSelect,S=e.onClose,u=n(e,a),d=i.useMemo((function(){return["success","alert","error"].includes(u.type)?u.type:"success"}),[u.type]),c=i.useMemo((function(){return"string"==typeof u.icon?u.icon:"success"===d?"ic_check":"error"===d?"ic_warning":null}),[d,u.icon]),A=i.useCallback((function(e){e.nativeEvent.selectToastPrevented||"function"!=typeof l||l({type:"select",dataset:r,reactEvent:e,nativeEvent:e.nativeEvent}),e.nativeEvent.closeToastPrevented||"function"!=typeof S||S({type:"close",dataset:r,reactEvent:e,nativeEvent:e.nativeEvent})}),[r,l,S]),I=i.useCallback((function(e){e.nativeEvent.selectToastPrevented=!0,"function"==typeof S&&S({type:"close",dataset:r,reactEvent:e,nativeEvent:e.nativeEvent})}),[r,S]);return i.createElement(_,{className:s(T["toast-item-container"],T[d]),tabIndex:-1,onClick:A},"string"==typeof c&&c.length>0?i.createElement("div",{className:T["icon-container"]},i.createElement(E,{className:T.icon,icon:c})):null,i.createElement("div",{className:T["info-container"]},"string"==typeof t&&t.length>0?i.createElement("div",{className:T["title-container"]},t):null,"string"==typeof o&&o.length>0?i.createElement("div",{className:T["message-container"]},o):null),i.createElement(_,{className:T["close-button-container"],title:"Close",tabIndex:-1,onClick:I},i.createElement(E,{className:T.icon,icon:"ic_x"})))};l.propTypes={type:r.oneOf(["success","alert","error"]),title:r.string,message:r.string,icon:r.string,dataset:r.object,onSelect:r.func,onClose:r.func},e.exports=l},5008:(e,t,o)=>{var a=o(3345);e.exports=a},9076:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o-1&&e.splice(o,1)},show:function(t){if(!e.some((function(e){return e(t)}))){var o="number"!=typeof t.timeout||isNaN(t.timeout)?3e3:t.timeout,a=setTimeout((function(){c({type:"remove",id:a})}),o);c({type:"add",item:i(i({},t),{},{id:a,dataset:i(i({},t.dataset),{},{id:a}),onClose:A})})}},clear:function(){c({type:"clear"})}}}),[]);return _.createElement(S.Provider,{value:I},r instanceof HTMLElement?o:null,_.createElement("div",{ref:E,className:t},d.map((function(e,t){return _.createElement(l,a({key:t},e))}))))};u.propTypes={className:T.string,children:T.node},e.exports=u},18:(e,t,o)=>{var a=o(9076),n=o(7263);e.exports={ToastProvider:a,useToast:n}},7263:(e,t,o)=>{var a=o(7294),n=o(6049);e.exports=function(){return a.useContext(n)}},9309:e=>{e.exports=function(e){return function(t,o){return isNaN(e[t])&&isNaN(e[o])?t.localeCompare(o):isNaN(e[t])?e[o]===Number.NEGATIVE_INFINITY?-1:1:isNaN(e[o])?e[t]===Number.NEGATIVE_INFINITY?1:-1:e[o]-e[t]}}},3418:(e,t,o)=>{var a=o(335),n=[{label:"EXTERNAL_PLAYER_DISABLED",value:"internal"}];n="ios"===a.name?n.concat([{label:"VLC",value:"vlc"},{label:"Outplayer",value:"outplayer"}]):"android"===a.name?n.concat([{label:"EXTERNAL_PLAYER_ALLOW_CHOOSING",value:"choose"},{label:"VLC",value:"vlc"},{label:"Just Player",value:"justplayer"},{label:"MX Player",value:"mxplayer"}]):["windows","macos","linux"].includes(a.name)?n.concat([{label:"VLC",value:"vlc"}]):n.concat([{label:"M3U Playlist",value:"m3u"}]),e.exports=n},9324:e=>{e.exports=function(e){return Array.from(e.children).reduce((function(t,o,a){return(function(e,t){var o=t.offsetTop,a=t.offsetTop+t.clientHeight,n=e.scrollTop,i=e.scrollTop+e.clientHeight;return o>=n&&a<=i||o{var a=o(8512),n=o(6851),i=o(9666),r=o(8809),s=o(8006),E=o(9872),_=o(5748),T=o(1297),l=o(8277),S=o(3070),u=o(9321),d=o(8253),c=o(3981),A=o(2935),I=A.HorizontalNavBar,O=A.VerticalNavBar,N=o(2391),R=o(926),m=o(9418),p=o(6798),h=o(861),L=o(9393),f=o(6e3),C=o(6230),D=o(18),g=D.ToastProvider,v=D.useToast,P=o(9309),y=o(2734),B=o(6672),b=B.withCoreSuspender,M=B.useCoreSuspender,U=o(9324),W=o(5232),G=o(8832),F=o(8803),k=o(6649),w=o(4),H=o(4024),V=o(8489),Y=o(1549),z=o(1535),x=o(7049),K=o(3760),j=o(552),Q=o(432),X=o(1657),$=o(335),q=o(3418);e.exports={AddonDetailsModal:a,Button:n,Checkbox:i,ColorInput:r,DelayedRenderer:s,Image:E,LibItem:_,MainNavBars:T,MetaItem:l,MetaPreview:S,MetaRow:u,ModalDialog:d,Multiselect:c,HorizontalNavBar:I,VerticalNavBar:O,PaginationInput:N,PlayIconCircleCentered:R,Popup:m,SearchBar:p,StreamingServerWarning:h,SharePrompt:L,Slider:f,TextInput:C,ToastProvider:g,useToast:v,comparatorWithPriorities:P,CONSTANTS:y,withCoreSuspender:b,useCoreSuspender:M,getVisibleChildrenRange:U,interfaceLanguages:W,languageNames:G,routesRegexp:F,translateOption:k,useAnimationFrame:w,useBinaryState:H,useFullscreen:V,useLiveRef:Y,useModelState:z,useNotifications:x,useOnScrollToBottom:K,useProfile:j,useStreamingServer:Q,useTorrent:X,platform:$,externalPlayerOptions:q}},335:(e,t,o)=>{var a,n;var i=o(1206).parse((null===(a=window.navigator)||void 0===a?void 0:a.userAgent)||""),r=["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document?"ios":((null==i||null===(n=i.os)||void 0===n?void 0:n.name)||"unknown").toLowerCase();e.exports={name:r,isMobile:function(){return"ios"===r||"android"===r}}},8803:e=>{e.exports={intro:{regexp:/^\/intro$/,urlParamsNames:[]},board:{regexp:/^\/?$/,urlParamsNames:[]},discover:{regexp:/^\/discover(?:\/([^/]*)\/([^/]*)\/([^/]*))?$/,urlParamsNames:["transportUrl","type","catalogId"]},library:{regexp:/^\/library(?:\/([^/]*))?$/,urlParamsNames:["type"]},continuewatching:{regexp:/^\/continuewatching(?:\/([^/]*))?$/,urlParamsNames:["type"]},search:{regexp:/^\/search$/,urlParamsNames:[]},metadetails:{regexp:/^\/(?:metadetails|detail)\/([^/]*)\/([^/]*)(?:\/([^/]*))?$/,urlParamsNames:["type","id","videoId"]},addons:{regexp:/^\/addons(?:\/([^/]*)(?:\/([^/]*)\/([^/]*))?)?$/,urlParamsNames:["type","transportUrl","catalogId"]},settings:{regexp:/^\/settings$/,urlParamsNames:[]},player:{regexp:/^\/player\/([^/]*)(?:\/([^/]*)\/([^/]*)\/([^/]*)\/([^/]*)\/([^/]*))?$/,urlParamsNames:["stream","streamTransportUrl","metaTransportUrl","type","id","videoId"]}}},6649:(e,t,o)=>{var a=o(6073).t;e.exports=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",o="".concat(t).concat(e),n=a(o,{defaultValue:a(o.toUpperCase(),{defaultValue:null})});return null!=n?n:e.charAt(0).toUpperCase()+e.slice(1)}},4:(e,t,o)=>{var a=o(7294);e.exports=function(){var e=a.useRef(null),t=a.useCallback((function(){cancelAnimationFrame(e.current),e.current=null}),[]);return[a.useCallback((function(o){t(),e.current=requestAnimationFrame((function(){o(),e.current=null}))}),[]),t]}},4024:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=o(7294);e.exports=function(e){var t=a.useRef();return t.current=e,t}},1535:(e,t,o)=>{var a=["action"];function n(e,t,o,a,n,i,r){try{var s=e[i](r),E=s.value}catch(e){return void o(e)}s.done?t(E):Promise.resolve(E).then(a,n)}function i(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return r(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(3096),T=o(2307),l=o(394),S=o(6672).useCoreSuspender,u=o(1665).useRouteFocused,d=o(3662).useServices;e.exports=function(e){var t=e.action,o=s(e,a),r=d().core,c=u(),A=E.useRef(!1),I=i(E.useMemo((function(){return[o.model,o.timeout,o.map,o.deps]}),[]),4),O=I[0],N=I[1],R=I[2],m=I[3],p=S().getState,h=i(E.useReducer((function(e,t){return Object.keys(e).reduce((function(o,a){return o[a]=T(e[a],t[a])?e[a]:t[a],o}),{})}),void 0,(function(){return"function"==typeof R?R(p(O)):p(O)})),2),L=h[0],f=h[1];return E.useInsertionEffect((function(){t&&r.transport.dispatch(t,O)}),[t]),E.useInsertionEffect((function(){return function(){r.transport.dispatch({action:"Unload"},O)}}),[]),E.useInsertionEffect((function(){var e=(function(){var e,t=(e=regeneratorRuntime.mark((function e(t){var o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(-1!==t.indexOf(O)||Array.isArray(m)&&0!==l(m,t).length){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,r.transport.getState(O);case 4:o=e.sent,f("function"==typeof R?R(o):o);case 6:case"end":return e.stop()}}),e)})),function(){var t=this,o=arguments;return new Promise((function(a,i){var r=e.apply(t,o);function s(e){n(r,a,i,s,E,"next",e)}function E(e){n(r,a,i,s,E,"throw",e)}s(void 0)}))});return function(e){return t.apply(this,arguments)}})(),t=_(e,N);return c&&(r.transport.on("NewState",t),A.current&&e([O])),function(){t.cancel(),r.transport.off("NewState",t)}}),[c]),E.useInsertionEffect((function(){A.current=!0}),[]),L}},7049:(e,t,o)=>{var a=o(1535),n=function(e){return e.notifications};e.exports=function(){return a({model:"ctx",map:n})}},3760:(e,t,o)=>{var a=o(7294);e.exports=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=a.useRef(!1),n=a.useCallback((function(a){a.target.scrollTop+a.target.clientHeight>=a.target.scrollHeight-t?o.current||(o.current=!0,"function"==typeof e&&e(a)):o.current=!1}),[e]);return n}},552:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t{var a=o(1535);e.exports=function(){return a({model:"streaming_server"})}},1657:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=["className","autoFocus","disabled","children"];function n(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var i=o(7294),r=o(3935),s=o(5697),E=o(4184),_=o(6413).ZP,T=o(8795).useModalsContainer,l=i.forwardRef((function(e,t){var o=e.className,s=e.autoFocus,l=e.disabled,S=e.children,u=n(e,a),d=T();return r.createPortal(i.createElement(_,{ref:t,className:E(o,"modal-container"),autoFocus:!!s,disabled:!!l,lockProps:u},S),d)}));l.displayName="Modal",l.propTypes={className:s.string,autoFocus:s.bool,disabled:s.bool,children:s.node},e.exports=l},5717:(e,t,o)=>{var a=o(9900);e.exports=a},7033:(e,t,o)=>{var a=o(7294).createContext(null);a.displayName="ModalsContainerContext",e.exports=a},115:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=o(115),n=o(4163);e.exports={ModalsContainerProvider:a,useModalsContainer:n}},4163:(e,t,o)=>{var a=o(7294),n=o(7033);e.exports=function(){return a.useContext(n)}},9314:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(8795).ModalsContainerProvider,r=function(e){var t=e.children;return a.createElement("div",{className:"route-container"},a.createElement(i,null,a.createElement("div",{className:"route-content"},t)))};r.propTypes={children:n.node},e.exports=r},4777:(e,t,o)=>{var a=o(9314);e.exports=a},9010:(e,t,o)=>{var a=o(7294).createContext(!0);a.displayName="RouteFocusedContext",e.exports=a},6267:(e,t,o)=>{var a=o(9010),n=o(1517);e.exports={RouteFocusedProvider:a.Provider,useRouteFocused:n}},1517:(e,t,o)=>{var a=o(7294),n=o(9010);e.exports=function(){return a.useContext(n)}},8968:(e,t,o)=>{var a=["className","onPathNotMatch","onRouteChange"];function n(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return i(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return i(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var s=o(7294),E=o(9864),_=o(5697),T=o(4184),l=o(8575),S=o(2307),u=o(6267).RouteFocusedProvider,d=o(4777),c=o(3295),A=o(598),I=function(e){var t=e.className,o=e.onPathNotMatch,i=e.onRouteChange,_=r(e,a),I=s.useMemo((function(){return _.viewsConfig}),[]),O=n(s.useState((function(){return Array(I.length).fill(null)})),2),N=O[0],R=O[1];return s.useLayoutEffect((function(){var e=function(){var e=l.parse(window.location.hash.slice(1)),t=e.pathname,a=e.query,n=new URLSearchParams("string"==typeof a?a:""),r=c(I,"string"==typeof t?t:"");if(null!==r){var s=A(r,"string"==typeof t?t:""),_=I.findIndex((function(e){return e.includes(r)})),T=I[_].findIndex((function(e){return e===r}));"function"==typeof i&&i(r,s,n)||R((function(e){return e.slice(0,I.length).map((function(e,t){return t<_?e:t===_?{key:"".concat(_).concat(T),component:r.component,urlParams:null!==e&&S(e.urlParams,s)?e.urlParams:s,queryParams:null!==e&&S(Array.from(e.queryParams.entries()),Array.from(n.entries()))?e.queryParams:n}:null}))}))}else if("function"==typeof o){var u=o();E.isValidElementType(u)&&R((function(e){return e.slice(0,I.length).concat({key:"-1",component:u})}))}};return window.addEventListener("hashchange",e),e(),function(){window.removeEventListener("hashchange",e)}}),[o,i]),s.createElement("div",{className:T(t,"routes-container")},N.filter((function(e){return null!==e})).map((function(e,t,o){var a=e.key,n=e.component,i=e.urlParams,r=e.queryParams;return s.createElement(u,{key:a,value:t===o.length-1},s.createElement(d,null,s.createElement(n,{urlParams:i,queryParams:r})))})))};I.propTypes={className:_.string,onPathNotMatch:_.func,onRouteChange:_.func,viewsConfig:_.arrayOf(_.arrayOf(_.exact({regexp:_.instanceOf(RegExp).isRequired,urlParamsNames:_.arrayOf(_.string).isRequired,component:_.elementType.isRequired}))).isRequired},e.exports=I},6013:(e,t,o)=>{var a=o(8968);e.exports=a},3295:e=>{function t(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=(function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(e);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return o(e,t)})(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,s=!0,E=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return s=e.done,e},e:function(e){E=!0,r=e},f:function(){try{s||null==a.return||a.return()}finally{if(E)throw r}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{e.exports=function(e,t){var o=t.match(e.regexp);return e.urlParamsNames.reduce((function(e,t,a){return Array.isArray(o)&&"string"==typeof o[a+1]?e[t]=decodeURIComponent(o[a+1]):e[t]=null,e}),{path:t})}},1665:(e,t,o)=>{var a=o(6267).useRouteFocused,n=o(8795).useModalsContainer,i=o(5717),r=o(6013);e.exports={useRouteFocused:a,useModalsContainer:n,Modal:i,Router:r}},2788:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(2601),E=o(6590),_=E.Button,T=E.Image,l=o(2638),S=function(e){var t=e.className,o=e.id,n=e.name,E=e.version,S=e.logo,u=e.description,d=e.types,c=e.behaviorHints,A=e.installed,I=e.onToggle,O=e.onConfigure,N=e.onShare,R=e.dataset,m=r().t,p=a.useCallback((function(e){"function"==typeof I&&I({type:"toggle",nativeEvent:e.nativeEvent,reactEvent:e,dataset:R})}),[I,R]),h=a.useCallback((function(e){"function"==typeof O&&O({type:"configure",nativeEvent:e.nativeEvent,reactEvent:e,dataset:R})}),[O,R]),L=a.useCallback((function(e){"function"==typeof N&&N({type:"share",nativeEvent:e.nativeEvent,reactEvent:e,dataset:R})}),[N,R]),f=a.useCallback((function(e){"Enter"===e.key&&"function"==typeof I&&I({type:"toggle",nativeEvent:e.nativeEvent,reactEvent:e,dataset:R})}),[I,R]),C=a.useCallback((function(){return a.createElement(s,{className:l.icon,icon:"ic_addons"})}),[]);return a.createElement(_,{className:i(t,l["addon-container"]),onKeyDown:f},a.createElement("div",{className:l["logo-container"]},a.createElement(T,{className:l.logo,src:S,alt:" ",renderFallback:C})),a.createElement("div",{className:l["info-container"]},a.createElement("div",{className:l["name-container"],title:"string"==typeof n&&n.length>0?n:o},"string"==typeof n&&n.length>0?n:o),"string"==typeof E&&E.length>0?a.createElement("div",{className:l["version-container"],title:"v.".concat(E)},"v.",E):null,Array.isArray(d)&&d.length>0?a.createElement("div",{className:l["types-container"]},1===d.length?d.join(""):d.slice(0,-1).join(", ")+" & "+d[d.length-1]):null,"string"==typeof u&&u.length>0?a.createElement("div",{className:l["description-container"],title:u},u):null),a.createElement("div",{className:l["buttons-container"]},a.createElement("div",{className:l["action-buttons-container"]},!c.configurationRequired&&c.configurable?a.createElement(_,{className:l["configure-button-container"],title:m("ADDON_CONFIGURE"),tabIndex:-1,onClick:h},a.createElement(s,{className:l.icon,icon:"ic_settings"})):null,a.createElement(_,{className:A?l["uninstall-button-container"]:l["install-button-container"],title:A?m("ADDON_UNINSTALL"):c.configurationRequired?m("ADDON_CONFIGURE"):m("ADDON_INSTALL"),tabIndex:-1,onClick:!A&&c.configurationRequired?h:p},a.createElement("div",{className:l.label},A?m("ADDON_UNINSTALL"):c.configurationRequired?m("ADDON_CONFIGURE"):m("ADDON_INSTALL")))),a.createElement(_,{className:l["share-button-container"],title:m("SHARE_ADDON"),tabIndex:-1,onClick:L},a.createElement(s,{className:l.icon,icon:"ic_share"}),a.createElement("div",{className:l.label},m("SHARE_ADDON")))))};S.propTypes={className:n.string,id:n.string,name:n.string,version:n.string,logo:n.string,description:n.string,types:n.arrayOf(n.string),behaviorHints:n.shape({adult:n.bool,configurable:n.bool,configurationRequired:n.bool,p2p:n.bool}),installed:n.bool,onToggle:n.func,onConfigure:n.func,onShare:n.func,dataset:n.object},e.exports=S},4845:(e,t,o)=>{var a=o(2788);e.exports=a},2994:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o0?Q.manifest.name:Q.manifest.id),"string"==typeof Q.manifest.version&&Q.manifest.version.length>0?r.createElement("span",{className:g.version},"v. ",Q.manifest.version):null)),r.createElement(N,{className:g["share-prompt-container"],url:Q.transportUrl})):null,"string"==typeof v?r.createElement(S,{transportUrl:v,onCloseRequest:ee}):null)};v.propTypes={urlParams:s.shape({path:s.string,transportUrl:s.string,catalogId:s.string,type:s.string}),queryParams:s.instanceOf(URLSearchParams)};e.exports=p(v,(function(){return r.createElement(A,{className:g["addons-container"],route:"addons"})}))},7165:(e,t,o)=>{var a=o(2994);e.exports=a},290:(e,t,o)=>{var a=o(7294);e.exports=function(e,t){var o=a.useMemo((function(){return t.get("addon")}),[t]),n=a.useCallback((function(o){var a=new URLSearchParams(t);"string"==typeof o?a.set("addon",o):a.delete("addon"),window.location.replace("#".concat(e.path,"?").concat(a))}),[e,t]);return[o,n]}},8061:(e,t,o)=>{var a=o(7294),n=o(6590).useModelState;e.exports=function(e){var t=a.useMemo((function(){return"string"!=typeof e.transportUrl&&"string"!=typeof e.catalogId?{action:"Load",args:{model:"InstalledAddonsWithFilters",args:{request:{type:"string"==typeof e.type?e.type:null}}}}:{action:"Unload"}}),[e]);return n({model:"installed_addons",action:t})}},8916:(e,t,o)=>{var a=o(7294),n=o(6590).useModelState;e.exports=function(e){var t=a.useMemo((function(){return"string"==typeof e.type&&"string"==typeof e.transportUrl&&"string"==typeof e.catalogId?{action:"Load",args:{model:"CatalogWithFilters",args:{request:{base:e.transportUrl,path:{resource:"addon_catalog",type:e.type,id:e.catalogId,extra:[]}}}}}:{action:"Unload"}}),[e]);return n({model:"remote_addons",action:t,deps:["ctx"]})}},146:(e,t,o)=>{var a=o(7294),n=o(6073).t,i=o(6590).translateOption;e.exports=function(e,t){var o=a.useMemo((function(){return(function(e,t){var o={title:n("SELECT_CATALOG"),options:t.selectable.catalogs.concat(e.selectable.catalogs).map((function(e){var t=e.name;return{value:e.deepLinks.addons,label:i(t,"ADDON_"),title:i(t,"ADDON_")}})),selected:t.selectable.catalogs.concat(e.selectable.catalogs).filter((function(e){return e.selected})).map((function(e){return e.deepLinks.addons})),renderLabelText:null!==t.selected?function(){var e=t.selectable.catalogs.find((function(e){return e.id===t.selected.request.path.id}));return e?i(e.name,"ADDON_"):t.selected.request.path.id}:null,onSelect:function(e){window.location=e.value}},a={title:n("SELECT_TYPE"),options:null!==e.selected?e.selectable.types.map((function(e){var t=e.type;return{value:e.deepLinks.addons,label:null!==t?i(t,"TYPE_"):n("TYPE_ALL")}})):t.selectable.types.map((function(e){var t=e.type;return{value:e.deepLinks.addons,label:i(t,"TYPE_")}})),selected:null!==e.selected?e.selectable.types.filter((function(e){return e.selected})).map((function(e){return e.deepLinks.addons})):t.selectable.types.filter((function(e){return e.selected})).map((function(e){return e.deepLinks.addons})),renderLabelText:function(){return null!==e.selected?null===e.selected.request.type?n("TYPE_ALL"):i(e.selected.request.type,"TYPE_"):null!==t.selected?i(t.selected.request.path.type,"TYPE_"):a.title},onSelect:function(e){window.location=e.value}};return[o,a]})(e,t)}),[e,t]);return o}},1180:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o0?1:0,p=i.useRef(),h=i.useCallback((function(){var e=I(p.current);if(null!==e){var t=Math.max(0,e.start-m-5),o=e.end-m+5;o0?i.createElement(l,{className:r(R["board-row"],R["continue-watching-row"],"animation-fade-in"),title:e("BOARD_CONTINUE_WATCHING"),items:o.items,itemComponent:S,deepLinks:o.deepLinks}):null,_.catalogs.map((function(e,t){var o;switch(null===(o=e.content)||void 0===o?void 0:o.type){case"Ready":return i.createElement(l,{key:t,className:r(R["board-row"],R["board-row-".concat(e.content.content[0].posterShape)],"animation-fade-in"),title:e.title,items:e.content.content,itemComponent:u,deepLinks:e.deepLinks});case"Err":return i.createElement(l,{key:t,className:r(R["board-row"],"animation-fade-in"),title:e.title,message:e.content.content,deepLinks:e.deepLinks});default:return i.createElement(l.Placeholder,{key:t,className:r(R["board-row"],R["board-row-poster"],"animation-fade-in"),title:e.title,deepLinks:e.deepLinks})}})))),null!==t.settings&&"Err"===t.settings.type?i.createElement(d,{className:R["board-warning-container"]}):null)}),(function(){return i.createElement("div",{className:R["board-container"]},i.createElement(T,{className:R["board-content-container"],route:"board"}))}))},8823:(e,t,o)=>{var a=o(1180);e.exports=a},6981:(e,t,o)=>{var a=o(7294),n=o(3662).useServices,i=o(6590).useModelState;e.exports=function(){var e=n().core,t=a.useMemo((function(){return{action:"Load",args:{model:"CatalogsWithExtra",args:{extra:[]}}}}),[]),o=a.useCallback((function(t){e.transport.dispatch({action:"CatalogsWithExtra",args:{action:"LoadRange",args:t}},"board")}),[]);return[i({model:"board",timeout:1500,action:t}),o]}},2916:(e,t,o)=>{var a=o(6590).useModelState;e.exports=function(){return a({model:"continue_watching_preview"})}},9694:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=o(9694);e.exports=a},83:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t0?{action:"Load",args:{model:"CatalogWithFilters",args:{request:{base:e.transportUrl,path:{resource:"catalog",type:e.type,id:e.catalogId,extra:Array.from(t.entries())}}}}}:{action:"Unload"}}),[e,t]);return[_({model:"discover",action:n,map:T,deps:["ctx"]}),a]}},8674:(e,t,o)=>{function a(e){return(function(e){if(Array.isArray(e))return n(e)})(e)||(function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)})(e)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e)||(function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=["className","label","link","href","onToggle"];function n(){return n=Object.assign||function(e){for(var t=1;t=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(4184),_=o(6590),T=_.Button,l=_.Checkbox,S=o(6947),u=r.forwardRef((function(e,t){var o=e.className,s=e.label,_=e.link,u=e.href,d=e.onToggle,c=i(e,a),A=r.useCallback((function(e){"function"==typeof c.onClick&&c.onClick(e),e.nativeEvent.togglePrevented||"function"!=typeof d||d({type:"toggle",reactEvent:e,nativeEvent:e.nativeEvent})}),[d,c.onClick]),I=r.useCallback((function(e){e.nativeEvent.togglePrevented=!0}),[]);return r.createElement(l,n({},c,{ref:t,className:E(o,S["consent-checkbox-container"]),onClick:A}),r.createElement("div",{className:S.label},s," ","string"==typeof _&&_.length>0&&"string"==typeof u&&u.length>0?r.createElement(T,{className:S.link,href:u,target:"_blank",tabIndex:-1,onClick:I},_):null))}));u.displayName="ConsentCheckbox",u.propTypes={className:s.string,checked:s.bool,label:s.string,link:s.string,href:s.string,onToggle:s.func,onClick:s.func},e.exports=u},6050:(e,t,o)=>{var a=o(8465);e.exports=a},2130:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;t{var a=o(2130);e.exports=a},5398:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o0&&void 0!==arguments[0]?arguments[0]:{},t=e.user;if(!t||"string"!=typeof t.email||"string"!=typeof t.fbLoginToken)throw new Error("Login failed at getting token from Stremio");return{email:t.email,password:t.fbLoginToken}}))})).then((function(e){var t=e.email,o=e.password;a.transport.dispatch({action:"Ctx",args:{action:"Authenticate",args:{type:"Login",email:t,password:o,facebook:!0}}})})).catch((function(e){k(),Y({type:"error",error:e.message})}))}),[]),x=E.useCallback((function(){"string"==typeof V.email&&0!==V.email.length&&S.current.validity.valid?"string"==typeof V.password&&0!==V.password.length?(F(),a.transport.dispatch({action:"Ctx",args:{action:"Authenticate",args:{type:"Login",email:V.email,password:V.password}}})):Y({type:"error",error:"Invalid password"}):Y({type:"error",error:"Invalid email"})}),[V.email,V.password]),K=E.useCallback((function(){V.termsAccepted?window.location="#/":Y({type:"error",error:"You must accept the Terms of Service"})}),[V.termsAccepted]),j=E.useCallback((function(){"string"==typeof V.email&&0!==V.email.length&&S.current.validity.valid?"string"==typeof V.password&&0!==V.password.length?V.password===V.confirmPassword?V.termsAccepted?V.privacyPolicyAccepted?(F(),a.transport.dispatch({action:"Ctx",args:{action:"Authenticate",args:{type:"Register",email:V.email,password:V.password,gdpr_consent:{tos:V.termsAccepted,privacy:V.privacyPolicyAccepted,marketing:V.marketingAccepted,from:"web"}}}})):Y({type:"error",error:"You must accept the Privacy Policy"}):Y({type:"error",error:"You must accept the Terms of Service"}):Y({type:"error",error:"Passwords do not match"}):Y({type:"error",error:"Invalid password"}):Y({type:"error",error:"Invalid email"})}),[V.email,V.password,V.confirmPassword,V.termsAccepted,V.privacyPolicyAccepted,V.marketingAccepted]),Q=E.useCallback((function(e){Y({type:"change-credentials",name:"email",value:e.currentTarget.value})}),[]),X=E.useCallback((function(){A.current.focus()}),[]),$=E.useCallback((function(e){Y({type:"change-credentials",name:"password",value:e.currentTarget.value})}),[]),q=E.useCallback((function(){V.form===f?D.current.focus():x()}),[V.form,x]),J=E.useCallback((function(e){Y({type:"change-credentials",name:"confirmPassword",value:e.currentTarget.value})}),[]),Z=E.useCallback((function(){g.current.focus()}),[]),ee=E.useCallback((function(){Y({type:"toggle-checkbox",name:"termsAccepted"})}),[]),te=E.useCallback((function(){Y({type:"toggle-checkbox",name:"privacyPolicyAccepted"})}),[]),oe=E.useCallback((function(){Y({type:"toggle-checkbox",name:"marketingAccepted"})}),[]),ae=E.useCallback((function(){var e=new URLSearchParams([["form",V.form===f?C:f]]);window.location="#/intro?".concat(e.toString())}),[V.form]);return E.useEffect((function(){[C,f].includes(t.get("form"))&&Y({type:"set-form",form:t.get("form")})}),[t]),E.useEffect((function(){s&&"string"==typeof V.error&&V.error.length>0&&y.current.scrollIntoView()}),[V.error]),E.useEffect((function(){s&&S.current.focus()}),[V.form,s]),E.useEffect((function(){var e=function(e){var t=e.event,o=e.args;switch(t){case"UserAuthenticated":k(),s&&(window.location="#/");break;case"Error":"UserAuthenticated"===o.source.event&&k()}};return a.transport.on("CoreEvent",e),function(){a.transport.off("CoreEvent",e)}}),[s]),E.createElement("div",{className:L["intro-container"]},E.createElement("div",{className:L["form-container"]},E.createElement("div",{className:L["logo-container"]},E.createElement(O,{className:L.logo,src:o(5313),alt:" "}),E.createElement(l,{className:L.name,icon:"ic_stremio"})),E.createElement(I,{className:T(L["form-button"],L["facebook-button"]),onClick:z},E.createElement(l,{className:L.icon,icon:"ic_facebook"}),E.createElement("div",{className:L.label},"Continue with Facebook")),V.form===f?E.createElement(I,{className:T(L["form-button"],L["login-form-button"]),onClick:ae},"Already have an account?"," ",E.createElement("span",{className:L["login-label"]},"LOG IN")):null,E.createElement(R,{ref:S,className:L["credentials-text-input"],type:"email",placeholder:"Email",value:V.email,onChange:Q,onSubmit:X}),E.createElement(R,{ref:A,className:L["credentials-text-input"],type:"password",placeholder:"Password",value:V.password,onChange:$,onSubmit:q}),V.form===f?E.createElement(E.Fragment,null,E.createElement(R,{ref:D,className:L["credentials-text-input"],type:"password",placeholder:"Confirm Password",value:V.confirmPassword,onChange:J,onSubmit:Z}),E.createElement(m,{ref:g,className:L["consent-checkbox"],label:"I have read and agree with the Stremio",link:"Terms and conditions",href:"https://www.stremio.com/tos",checked:V.termsAccepted,onToggle:ee}),E.createElement(m,{ref:v,className:L["consent-checkbox"],label:"I have read and agree with the Stremio",link:"Privacy Policy",href:"https://www.stremio.com/privacy",checked:V.privacyPolicyAccepted,onToggle:te}),E.createElement(m,{ref:P,className:L["consent-checkbox"],label:"I agree to receive marketing communications from Stremio",checked:V.marketingAccepted,onToggle:oe})):E.createElement("div",{className:L["forgot-password-link-container"]},E.createElement(I,{className:L["forgot-password-link"],onClick:M},"Forgot password?")),V.error.length>0?E.createElement("div",{ref:y,className:L["error-message"]},V.error):null,E.createElement(I,{className:T(L["form-button"],L["submit-button"]),onClick:V.form===f?j:x},E.createElement("div",{className:L.label},V.form===f?"Sign up":"Log in")),V.form===f?E.createElement(I,{className:T(L["form-button"],L["guest-login-button"]),onClick:K},E.createElement("div",{className:L.label},"GUEST LOGIN")):null,V.form===C?E.createElement(I,{className:T(L["form-button"],L["signup-form-button"]),onClick:ae},E.createElement("div",{className:L.label},"SIGN UP WITH EMAIL")):null),b?E.createElement(p,{email:V.email,onCloseRequest:U}):null,G?E.createElement(u,{className:L["loading-modal-container"]},E.createElement("div",{className:L["loader-container"]},E.createElement(l,{className:L.icon,icon:"ic_user"}),E.createElement("div",{className:L.label},"Authenticating..."))):null)};D.propTypes={queryParams:_.instanceOf(URLSearchParams)},e.exports=D},8142:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o0&&u.current.validity.valid?window.open("https://www.strem.io/reset-password/"+u.current.value,"_blank"):S("Invalid email")}),[]),c=i.useMemo((function(){return[{className:T["cancel-button"],label:"Cancel",props:{onClick:o}},{label:"Send",props:{onClick:d}}]}),[o]),A=i.useCallback((function(){S("")}),[]);return i.useEffect((function(){n&&u.current.focus()}),[n]),i.createElement(E,{className:T["password-reset-modal-container"],title:"Password reset",buttons:c,onCloseRequest:o},i.createElement(_,{ref:u,className:T["credentials-text-input"],type:"email",placeholder:"Email",defaultValue:"string"==typeof t?t:"",onChange:A,onSubmit:d}),l.length>0?i.createElement("div",{className:T["error-message"]},l):null)};l.propTypes={email:r.string,onCloseRequest:r.func},e.exports=l},2015:(e,t,o)=>{var a=o(8142);e.exports=a},6732:(e,t,o)=>{var a=o(5398);e.exports=a},4167:(e,t,o)=>{var a=o(7294);e.exports=function(){var e=a.useCallback((function(){return new Promise((function(e,t){"undefined"!=typeof FB?FB.getLoginStatus((function(o){o&&o.authResponse&&"string"==typeof o.authResponse.accessToken?e(o.authResponse.accessToken):FB.login((function(o){o&&o.authResponse&&"string"==typeof o.authResponse.accessToken?e(o.authResponse.accessToken):t(new Error("Failed to get token from Facebook"))}))})):t(new Error("Failed to connect to Facebook"))}))}),[]);return a.useEffect((function(){window.fbAsyncInit=function(){FB.init({appId:"1537119779906825",status:!0,xfbml:!1,version:"v2.7"})};var e=document.createElement("script");return e.src="https://connect.facebook.net/en_US/sdk.js",e.async=!0,e.defer=!0,document.body.appendChild(e),function(){document.body.removeChild(e)}}),[]),e}},8171:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=o(8171);e.exports=a},3242:(e,t,o)=>{var a=o(7294),n=o(6590).useModelState;e.exports=function(e,t,o){var i=a.useMemo((function(){return{action:"Load",args:{model:"LibraryWithFilters",args:{request:{type:"string"==typeof t.type?t.type:null,sort:o.has("sort")?o.get("sort"):void 0,page:o.has("page")?parseInt(o.get("page"),10):void 0}}}}}),[t,o]);return n({model:e,action:i})}},3780:(e,t,o)=>{var a=o(7294),n=o(1468).useTranslation,i=o(6590).translateOption;e.exports=function(e){var t=n().t,o=a.useMemo((function(){return(function(e,t){return[{title:t("SELECT_TYPE"),options:e.selectable.types.map((function(e){var o=e.type;return{value:e.deepLinks.library,label:null===o?t("TYPE_ALL"):i(o,"TYPE_")}})),selected:e.selectable.types.filter((function(e){return e.selected})).map((function(e){return e.deepLinks.library})),onSelect:function(e){window.location=e.value}},{title:t("SELECT_SORT"),options:e.selectable.sorts.map((function(e){var t=e.sort;return{value:e.deepLinks.library,label:i(t,"SORT_")}})),selected:e.selectable.sorts.filter((function(e){return e.selected})).map((function(e){return e.deepLinks.library})),onSelect:function(e){window.location=e.value}},e.selectable.prevPage||e.selectable.nextPage?{label:e.selected.request.page.toString(),onSelect:function(t){"prev"===t.value&&e.selectable.prevPage&&(window.location=e.selectable.prevPage.deepLinks.library),"next"===t.value&&e.selectable.nextPage&&(window.location=e.selectable.nextPage.deepLinks.library)}}:null]})(e,t)}),[e]);return o}},8493:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o0?i.createElement(T,{className:p["vertical-nav-bar"],tabs:C,selected:null!==D?D.url:null}):null,null===P?i.createElement(c,{delay:500},i.createElement("div",{className:p["meta-message-container"]},i.createElement(d,{className:p.image,src:o(7740),alt:" "}),i.createElement("div",{className:p["message-label"]},"No meta was selected!"))):null===_.metaItem?i.createElement("div",{className:p["meta-message-container"]},i.createElement(d,{className:p.image,src:o(7740),alt:" "}),i.createElement("div",{className:p["message-label"]},"No addons ware requested for this meta!")):"Err"===_.metaItem.content.type?i.createElement("div",{className:p["meta-message-container"]},i.createElement(d,{className:p.image,src:o(7740),alt:" "}),i.createElement("div",{className:p["message-label"]},"No metadata was found!")):"Loading"===_.metaItem.content.type?i.createElement(S.Placeholder,{className:p["meta-preview"]}):i.createElement(i.Fragment,null,"string"==typeof _.metaItem.content.content.background&&_.metaItem.content.content.background.length>0?i.createElement("div",{className:p["background-image-layer"]},i.createElement(d,{className:p["background-image"],src:_.metaItem.content.content.background,renderFallback:W,alt:" "})):null,i.createElement(S,{className:s(p["meta-preview"],"animation-fade-in"),name:_.metaItem.content.content.name,logo:_.metaItem.content.content.logo,runtime:_.metaItem.content.content.runtime,releaseInfo:_.metaItem.content.content.releaseInfo,released:_.metaItem.content.content.released,description:null!==B&&"string"==typeof B.overview&&B.overview.length>0?B.overview:_.metaItem.content.content.description,links:_.metaItem.content.content.links,trailerStreams:_.metaItem.content.content.trailerStreams,inLibrary:_.metaItem.content.content.inLibrary,toggleInLibrary:_.metaItem.content.content.inLibrary?M:b})),i.createElement("div",{className:p.spacing}),null!==y?i.createElement(I,{className:p["streams-list"],streams:_.streams}):null!==P?i.createElement(O,{className:p["videos-list"],metaItem:_.metaItem,season:h,seasonOnSelect:U}):null),null!==D?i.createElement(u,{className:p["meta-extension-modal-container"],title:D.name,onCloseRequest:g},i.createElement("iframe",{className:p["meta-extension-modal-iframe"],sandbox:"allow-forms allow-scripts allow-same-origin",src:D.url})):null)};h.propTypes={urlParams:r.shape({type:r.string,id:r.string,videoId:r.string}),queryParams:r.instanceOf(URLSearchParams)};e.exports=A(h,(function(){return i.createElement("div",{className:p["metadetails-container"]},i.createElement(l,{className:p["nav-bar"],backButton:!0,addonsButton:!0,fullscreenButton:!0,navMenu:!0}))}))},2742:(e,t,o)=>{var a=["className","addonName","name","description","thumbnail","progress","deepLinks"];function n(){return n=Object.assign||function(e){for(var t=1;t=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(4184),_=o(2601),T=o(6590),l=T.Button,S=T.Image,u=T.PlayIconCircleCentered,d=T.useProfile,c=T.platform,A=T.useStreamingServer,I=T.useToast,O=o(3662).useServices,N=o(4134),R=o(3458),m=function(e){var t=e.className,o=e.addonName,s=e.name,T=e.description,N=e.thumbnail,m=e.progress,p=e.deepLinks,h=i(e,a),L=d(),f=A(),C=O().core,D=I(),g=r.useMemo((function(){var e=null!==f.settings&&"Ready"===f.settings.type;return p?L.settings.playerType&&"internal"!==L.settings.playerType?c.isMobile()||!e?(p.externalPlayer.openPlayer||{})[c.name]||p.externalPlayer.href:null:"string"==typeof p.player?p.player:null:null}),[p,L,f]),v=r.useCallback((function(e){null===g?C.transport.dispatch({action:"StreamingServer",args:{action:"PlayOnDevice",args:{device:"vlc",source:p.externalPlayer.streaming}}}):"external"===L.settings.playerType&&D.show({type:"success",title:"Stream opened in external player",timeout:4e3}),h.onClick(e)}),[g,p,h.onClick,L,D]),P=r.useMemo((function(){return g===p.externalPlayer.href&&p.externalPlayer.fileName}),[g]),y=r.useCallback((function(){return r.createElement(_,{className:R["placeholder-icon"],icon:"ic_broken_link"})}),[]);return r.createElement(l,n({href:g,download:P},h,{onClick:v,className:E(t,R["stream-container"]),title:o}),"string"==typeof N&&N.length>0?r.createElement("div",{className:R["thumbnail-container"],title:s||o},r.createElement(S,{className:R.thumbnail,src:N,alt:" ",renderFallback:y})):r.createElement("div",{className:R["addon-name-container"],title:s||o},r.createElement("div",{className:R["addon-name"]},s||o)),r.createElement("div",{className:R["info-container"],title:T},T),r.createElement(u,{className:R["play-icon"]}),null!==m&&!isNaN(m)&&m>0?r.createElement("div",{className:R["progress-bar-container"]},r.createElement("div",{className:R["progress-bar"],style:{width:"".concat(100*Math.min(m,1),"%")}})):null)};m.Placeholder=N,m.propTypes={className:s.string,addonName:s.string,name:s.string,description:s.string,thumbnail:s.string,progress:s.number,deepLinks:s.shape({player:s.string,externalPlayer:s.shape({href:s.string,fileName:s.string,streaming:s.string,openPlayer:s.shape({choose:{ios:s.string,android:s.string,windows:s.string,macos:s.string,linux:s.string},vlc:{ios:s.string,android:s.string,windows:s.string,macos:s.string,linux:s.string},outplayer:{ios:s.string,android:s.string,windows:s.string,macos:s.string,linux:s.string},infuse:{ios:s.string,android:s.string,windows:s.string,macos:s.string,linux:s.string},justplayer:{ios:s.string,android:s.string,windows:s.string,macos:s.string,linux:s.string},mxplayer:{ios:s.string,android:s.string,windows:s.string,macos:s.string,linux:s.string}})})}),onClick:s.func},e.exports=m},3210:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(926),s=o(1384),E=function(e){var t=e.className;return a.createElement("div",{className:i(t,s["stream-placeholder-container"])},a.createElement("div",{className:s["addon-container"]},a.createElement("div",{className:s["addon-name"]})),a.createElement("div",{className:s["info-container"]},a.createElement("div",{className:s["description-container"]}),a.createElement("div",{className:s["description-container"]})),a.createElement(r,{className:s["play-icon"]}))};E.propTypes={className:n.string},e.exports=E},4134:(e,t,o)=>{var a=o(3210);e.exports=a},4674:(e,t,o)=>{var a=o(2742);e.exports=a},4176:(e,t,o)=>{var a=["className"];function n(){return n=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var u=o(7294),d=o(5697),c=o(4184),A=o(1468).useTranslation,I=o(2601),O=o(6590),N=O.Button,R=O.Image,m=O.Multiselect,p=o(3662).useServices,h=o(4674),L=o(6796),f="ALL",C=function(e){var t=e.className,r=S(e,a),E=A().t,T=p().core,l=_(u.useState(f),2),d=l[0],O=l[1],C=u.useCallback((function(e){O(e.value)}),[]),D=u.useMemo((function(){return r.streams.filter((function(e){return"Ready"===e.content.type})).reduce((function(e,t){return e[t.addon.transportUrl]={addon:t.addon,streams:t.content.content.map((function(e){return s(s({},e),{},{onClick:function(){T.transport.analytics({event:"StreamClicked",args:{stream:e}})},addonName:t.addon.manifest.name})}))},e}),{})}),[r.streams]),g=u.useMemo((function(){return d===f?Object.values(D).map((function(e){return e.streams})).flat(1):D[d]?D[d].streams:[]}),[D,d]),v=u.useMemo((function(){return{title:"Select Addon",options:[{value:f,label:E("ALL_ADDONS"),title:E("ALL_ADDONS")}].concat(i(Object.keys(D).map((function(e){return{value:e,label:D[e].addon.manifest.name,title:D[e].addon.manifest.name}})))),selected:[d],onSelect:C}}),[D,d]);return u.createElement("div",{className:c(t,L["streams-list-container"])},0===r.streams.length?u.createElement("div",{className:L["message-container"]},u.createElement(R,{className:L.image,src:o(7740),alt:" "}),u.createElement("div",{className:L.label},"No addons were requested for streams!")):r.streams.every((function(e){return"Err"===e.content.type}))?u.createElement("div",{className:L["message-container"]},u.createElement(R,{className:L.image,src:o(7740),alt:" "}),u.createElement("div",{className:L.label},E("NO_STREAM"))):0===g.length?u.createElement("div",{className:L["streams-container"]},u.createElement(h.Placeholder,null),u.createElement(h.Placeholder,null)):u.createElement(u.Fragment,null,Object.keys(D).length>1?u.createElement(m,n({},v,{className:L["select-input-container"]})):null,u.createElement("div",{className:L["streams-container"]},g.map((function(e,t){return u.createElement(h,{key:t,addonName:e.addonName,name:e.name,description:e.description,thumbnail:e.thumbnail,progress:e.progress,deepLinks:e.deepLinks,onClick:e.onClick})})))),u.createElement(N,{className:L["install-button-container"],title:E("ADDON_CATALOGUE_MORE"),href:"#/addons"},u.createElement(I,{className:L.icon,icon:"ic_addons"}),u.createElement("div",{className:L.label},E("ADDON_CATALOGUE_MORE"))))};C.propTypes={className:d.string,streams:d.arrayOf(d.object).isRequired},e.exports=C},2231:(e,t,o)=>{var a=o(4176);e.exports=a},2813:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(6073).t,s=o(2601),E=o(6590),_=E.Button,T=E.Multiselect,l=o(3570),S=o(6351),u=function(e){var t=e.className,o=e.seasons,n=e.season,E=e.onSelect,l=a.useMemo((function(){return o.map((function(e){return{value:String(e),label:e>0?"".concat(r("SEASON")," ").concat(e):r("SPECIAL")}}))}),[o]),u=a.useMemo((function(){return[String(n)]}),[n]),d=a.useCallback((function(e){if("function"==typeof E){var t=o.indexOf(n),a="next"===e.currentTarget.dataset.action?t+1=0?t-1:0,i=o[a];E({type:"select",value:i,reactEvent:e,nativeEvent:e.nativeEvent})}}),[n,o,E]),c=a.useCallback((function(e){var t=parseFloat(e.value);"function"==typeof E&&E({type:"select",value:t,reactEvent:e.reactEvent,nativeEvent:e.nativeEvent})}),[E]);return a.createElement("div",{className:i(t,S["seasons-bar-container"])},a.createElement(_,{className:S["prev-season-button"],title:"Previous season","data-action":"prev",onClick:d},a.createElement(s,{className:S.icon,icon:"ic_arrow_thin_left"}),a.createElement("div",{className:S.label},"Prev")),a.createElement(T,{className:S["seasons-popup-label-container"],title:n>0?"".concat(r("SEASON")," ").concat(n):r("SPECIAL"),direction:"bottom-left",options:l,selected:u,onSelect:c}),a.createElement(_,{className:S["next-season-button"],title:"Next season","data-action":"next",onClick:d},a.createElement("div",{className:S.label},"Next"),a.createElement(s,{className:S.icon,icon:"ic_arrow_thin_right"})))};u.Placeholder=l,u.propTypes={className:n.string,seasons:n.arrayOf(n.number).isRequired,season:n.number.isRequired,onSelect:n.func},e.exports=u},9319:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(2180),E=function(e){var t=e.className;return a.createElement("div",{className:i(t,s["seasons-bar-placeholder-container"])},a.createElement("div",{className:s["prev-season-button"]},a.createElement(r,{className:s.icon,icon:"ic_arrow_thin_left"}),a.createElement("div",{className:s.label},"Prev")),a.createElement("div",{className:s["seasons-popup-label-container"]},a.createElement("div",{className:s["seasons-popup-label"]},"Season 1"),a.createElement(r,{className:s["seasons-popup-icon"],icon:"ic_arrow_thin_down"})),a.createElement("div",{className:s["next-season-button"]},a.createElement("div",{className:s.label},"Next"),a.createElement(r,{className:s.icon,icon:"ic_arrow_thin_right"})))};E.propTypes={className:n.string},e.exports=E},3570:(e,t,o)=>{var a=o(9319);e.exports=a},3424:(e,t,o)=>{var a=o(2813);e.exports=a},2824:(e,t,o)=>{var a=["className","id","title","thumbnail","episode","released","upcoming","watched","progress","scheduled","deepLinks"],n=["className","id","title","thumbnail","episode","released","upcoming","watched","progress","scheduled","children"];function i(){return i=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var _=o(7294),T=o(5697),l=o(4184),S=o(6073).t,u=o(3662).useServices,d=o(1665).useRouteFocused,c=o(2601),A=o(6590),I=A.Button,O=A.Image,N=A.Popup,R=A.useBinaryState,m=o(9922),p=o(4486),h=function(e){var t=e.className,o=e.id,s=e.title,T=e.thumbnail,A=e.episode,m=e.released,h=e.upcoming,L=e.watched,f=e.progress,C=e.scheduled,D=e.deepLinks,g=E(e,a),v=u().core,P=d(),y=r(R(!1),4),B=y[0],b=y[2],M=y[3],U=_.useCallback((function(e){e.nativeEvent.togglePopupPrevented||(e.nativeEvent.ctrlKey||2===e.nativeEvent.button)&&(e.preventDefault(),M())}),[]),W=_.useCallback((function(e){e.nativeEvent.togglePopupPrevented||e.nativeEvent.ctrlKey||e.preventDefault()}),[M]),G=_.useCallback((function(e){"mouse"===e.nativeEvent.pointerType||e.nativeEvent.togglePopupPrevented||M()}),[M]),F=_.useCallback((function(e){e.nativeEvent.togglePopupPrevented=!0}),[]),k=_.useCallback((function(e){e.nativeEvent.togglePopupPrevented=!0}),[]),w=_.useCallback((function(e){e.nativeEvent.togglePopupPrevented=!0}),[]),H=_.useCallback((function(e){e.nativeEvent.buttonClickPrevented=!0}),[]),V=_.useCallback((function(e){e.preventDefault(),b(),v.transport.dispatch({action:"MetaDetails",args:{action:"MarkVideoAsWatched",args:[o,!L]}})}),[o,L]),Y=_.useMemo((function(){return D?"string"==typeof D.player?D.player:"string"==typeof D.metaDetailsStreams?D.metaDetailsStreams:null:null}),[D]),z=_.useMemo((function(){return function(e){var t=e.className,o=e.id,a=e.title,r=e.thumbnail,s=e.episode,T=e.released,S=e.upcoming,u=e.watched,d=e.progress,A=e.scheduled,N=e.children,R=E(e,n);return _.createElement(I,i({},R,{className:l(t,p["video-container"]),title:a}),"string"==typeof r&&r.length>0?_.createElement("div",{className:p["thumbnail-container"]},_.createElement(O,{className:p.thumbnail,src:r,alt:" ",renderFallback:function(){return _.createElement(c,{className:p["placeholder-icon"],icon:"ic_stremio_tray"})}})):null,_.createElement("div",{className:p["info-container"]},_.createElement("div",{className:p["title-container"]},null===s||isNaN(s)?null:"".concat(s,". "),"string"==typeof a&&a.length>0?a:o),_.createElement("div",{className:p["flex-row-container"]},T instanceof Date&&!isNaN(T.getTime())?_.createElement("div",{className:p["released-container"]},T.toLocaleString(void 0,{year:"numeric",month:"short",day:"numeric"})):A?_.createElement("div",{className:p["released-container"],title:"To be announced"},"TBA"):null,_.createElement("div",{className:p["upcoming-watched-container"]},S?_.createElement("div",{className:p["upcoming-container"]},_.createElement("div",{className:p["flag-label"]},"Upcoming")):null,u?_.createElement("div",{className:p["watched-container"]},_.createElement("div",{className:p["flag-label"]},"Watched")):null))),null!==d&&!isNaN(d)&&d>0?_.createElement("div",{className:p["progress-bar-container"]},_.createElement("div",{className:p["progress-bar"],style:{width:"".concat(100*Math.min(d,1),"%")}})):null,N)}}),[]),x=_.useMemo((function(){return function(){return _.createElement("div",{className:p["context-menu-content"],onPointerDown:F,onContextMenu:k,onClick:w,onKeyDown:H},_.createElement(I,{className:p["context-menu-option-container"],title:"Watch"},_.createElement("div",{className:p["context-menu-option-label"]},S("CTX_WATCH"))),_.createElement(I,{className:p["context-menu-option-container"],title:L?"Mark as non-watched":"Mark as watched",onClick:V},_.createElement("div",{className:p["context-menu-option-label"]},S(L?"CTX_MARK_NON_WATCHED":"CTX_MARK_WATCHED"))))}}),[L,V]);return _.useEffect((function(){P||b()}),[P]),_.createElement(N,i({className:t,id:o,title:s,thumbnail:T,episode:A,released:m,upcoming:h,watched:L,progress:f,scheduled:C,href:Y},g,{onMouseUp:U,onLongPress:G,onContextMenu:W,open:B,onCloseRequest:b,renderLabel:z,renderMenu:x}))};h.Placeholder=m,h.propTypes={className:T.string,id:T.string,title:T.string,thumbnail:T.string,episode:T.number,released:T.instanceOf(Date),upcoming:T.bool,watched:T.bool,progress:T.number,scheduled:T.bool,deepLinks:T.shape({metaDetailsStreams:T.string,player:T.string})},e.exports=h},8509:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(5507),s=function(e){var t=e.className;return a.createElement("div",{className:i(t,r["video-placeholder-container"])},a.createElement("div",{className:r["info-container"]},a.createElement("div",{className:r["name-container"]}),a.createElement("div",{className:r["released-container"]})))};s.propTypes={className:n.string},e.exports=s},9922:(e,t,o)=>{var a=o(8509);e.exports=a},123:(e,t,o)=>{var a=o(2824);e.exports=a},1702:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o0?e[e.length-1]:A.length>0?A[A.length-1]:null}),[A,r]),O=i.useMemo((function(){return c.filter((function(e){return null===I||e.season===I})).sort((function(e,t){return e.episode-t.episode}))}),[c,I]),N=a(i.useState(""),2),R=N[0],m=N[1],p=i.useCallback((function(e){m(e.currentTarget.value)}),[]);return i.createElement("div",{className:s(t,u["videos-list-container"])},n&&"Loading"!==n.content.type?"Err"===n.content.type||0===O.length?i.createElement("div",{className:u["message-container"]},i.createElement(_,{className:u.image,src:o(7740),alt:" "}),i.createElement("div",{className:u.label},"No videos found for this meta!")):i.createElement(i.Fragment,null,A.length>0?i.createElement(l,{className:u["seasons-bar"],season:I,seasons:A,onSelect:d}):null,i.createElement(T,{className:u["search-bar"],title:E("SEARCH_VIDEOS"),value:R,onChange:p}),i.createElement("div",{className:u["videos-container"]},O.filter((function(e){return 0===R.length||"string"==typeof e.title&&e.title.toLowerCase().includes(R.toLowerCase())||!isNaN(e.released.getTime())&&e.released.toLocaleString(void 0,{year:"2-digit",month:"short",day:"numeric"}).toLowerCase().includes(R.toLowerCase())})).map((function(e,t){return i.createElement(S,{key:t,id:e.id,title:e.title,thumbnail:e.thumbnail,episode:e.episode,released:e.released,upcoming:e.upcoming,watched:e.watched,progress:e.progress,deepLinks:e.deepLinks,scheduled:e.scheduled})})))):i.createElement(i.Fragment,null,i.createElement(l.Placeholder,{className:u["seasons-bar"]}),i.createElement(T.Placeholder,{className:u["search-bar"],title:E("SEARCH_VIDEOS")}),i.createElement("div",{className:u["videos-scroll-container"]},i.createElement(S.Placeholder,null),i.createElement(S.Placeholder,null),i.createElement(S.Placeholder,null),i.createElement(S.Placeholder,null),i.createElement(S.Placeholder,null))))};d.propTypes={className:r.string,metaItem:r.object,season:r.number,seasonOnSelect:r.func},e.exports=d},8437:(e,t,o)=>{var a=o(1702);e.exports=a},9005:(e,t,o)=>{var a=o(8493);e.exports=a},8450:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=o(7294);e.exports=function(e,t){var o=a.useMemo((function(){return t.has("season")&&!isNaN(t.get("season"))?parseInt(t.get("season"),10):null}),[t]),n=a.useCallback((function(o){var a=new URLSearchParams(t);a.set("season",o),window.location.replace("#".concat(e.path,"?").concat(a))}),[e,t]);return[o,n]}},9096:(e,t,o)=>{var a=o(7294),n=o(6590),i=n.Image,r=n.HorizontalNavBar,s=o(5142);e.exports=function(){return a.createElement("div",{className:s["not-found-container"]},a.createElement(r,{className:s["nav-bar"],title:"Page not found",backButton:!0,fullscreenButton:!0,navMenu:!0}),a.createElement("div",{className:s["not-found-content"]},a.createElement(i,{className:s["not-found-image"],src:o(7740),alt:" "}),a.createElement("div",{className:s["not-found-label"]},"Page not found!")))}},353:(e,t,o)=>{var a=o(9096);e.exports=a},9579:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(6590).Image,s=o(1391),E=function(e){var t=e.className,n=e.logo;return a.createElement("div",{className:i(t,s["buffering-loader-container"])},a.createElement(r,{className:s["buffering-loader"],src:n,alt:" ",fallbackSrc:o(5313)}))};E.propTypes={className:n.string,logo:n.string},e.exports=E},3475:(e,t,o)=>{var a=o(9579);e.exports=a},2479:(e,t,o)=>{var a=["className","paused","time","duration","buffered","volume","muted","playbackSpeed","subtitlesTracks","audioTracks","metaItem","nextVideo","stream","statistics","onPlayRequested","onPauseRequested","onMuteRequested","onUnmuteRequested","onVolumeChangeRequested","onSeekRequested","onToggleSubtitlesMenu","onToggleInfoMenu","onToggleSpeedMenu","onToggleVideosMenu","onToggleOptionsMenu","onToggleStatisticsMenu"];function n(){return n=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var _=o(7294),T=o(5697),l=o(4184),S=o(2601),u=o(6590).Button,d=o(3662).useServices,c=o(5280),A=o(7429),I=o(578),O=o(6590).useBinaryState,N=o(6073).t,R=function(e){var t,o,s=e.className,T=e.paused,R=e.time,m=e.duration,p=e.buffered,h=e.volume,L=e.muted,f=e.playbackSpeed,C=e.subtitlesTracks,D=e.audioTracks,g=e.metaItem,v=e.nextVideo,P=e.stream,y=e.statistics,B=e.onPlayRequested,b=e.onPauseRequested,M=e.onMuteRequested,U=e.onUnmuteRequested,W=e.onVolumeChangeRequested,G=e.onSeekRequested,F=e.onToggleSubtitlesMenu,k=e.onToggleInfoMenu,w=e.onToggleSpeedMenu,H=e.onToggleVideosMenu,V=e.onToggleOptionsMenu,Y=e.onToggleStatisticsMenu,z=E(e,a),x=d().chromecast,K=r(_.useState((function(){return x.active})),2),j=K[0],Q=K[1],X=r(O(!1),4),$=X[0],q=X[3],J=_.useCallback((function(e){e.nativeEvent.subtitlesMenuClosePrevented=!0}),[]),Z=_.useCallback((function(e){e.nativeEvent.infoMenuClosePrevented=!0}),[]),ee=_.useCallback((function(e){e.nativeEvent.speedMenuClosePrevented=!0}),[]),te=_.useCallback((function(e){e.nativeEvent.videosMenuClosePrevented=!0}),[]),oe=_.useCallback((function(e){e.nativeEvent.optionsMenuClosePrevented=!0}),[]),ae=_.useCallback((function(e){e.nativeEvent.statisticsMenuClosePrevented=!0}),[]),ne=_.useCallback((function(){T?"function"==typeof B&&B():"function"==typeof b&&b()}),[T,B,b]),ie=_.useCallback((function(){null!==v&&"object"===i(v.deepLinks)&&(null!==v.deepLinks.player?window.location.replace(v.deepLinks.player):null!==v.deepLinks.metaDetailsStreams&&window.location.replace(v.deepLinks.metaDetailsStreams))}),[v]),re=_.useCallback((function(){L?"function"==typeof U&&U():"function"==typeof M&&M()}),[L,M,U]),se=_.useCallback((function(){"function"==typeof F&&F()}),[F]),Ee=_.useCallback((function(){"function"==typeof k&&k()}),[k]),_e=_.useCallback((function(){"function"==typeof w&&w()}),[w]),Te=_.useCallback((function(){"function"==typeof H&&H()}),[H]),le=_.useCallback((function(){"function"==typeof V&&V()}),[V]),Se=_.useCallback((function(){"function"==typeof Y&&Y()}),[Y]),ue=_.useCallback((function(){x.transport.requestSession()}),[]);return _.useEffect((function(){var e=function(){Q(x.active)};return x.on("stateChanged",e),function(){x.off("stateChanged",e)}}),[]),_.createElement("div",n({},z,{className:l(s,I["control-bar-container"])}),_.createElement(c,{className:I["seek-bar"],time:R,duration:m,buffered:p,onSeekRequested:G}),_.createElement("div",{className:I["control-bar-buttons-container"]},_.createElement(u,{className:l(I["control-bar-button"],{disabled:"boolean"!=typeof T}),title:N(T?"PLAYER_PLAY":"PLAYER_PAUSE"),tabIndex:-1,onClick:ne},_.createElement(S,{className:I.icon,icon:"boolean"!=typeof T||T?"ic_play":"ic_pause"})),null!==v?_.createElement(u,{className:l(I["control-bar-button"]),title:N("PLAYER_NEXT_VIDEO"),tabIndex:-1,onClick:ie},_.createElement(S,{className:I.icon,icon:"ic_play_next"})):null,_.createElement(u,{className:l(I["control-bar-button"],{disabled:"boolean"!=typeof L}),title:N(L?"PLAYER_UNMUTE":"PLAYER_MUTE"),tabIndex:-1,onClick:re},_.createElement(S,{className:I.icon,icon:"boolean"==typeof L&&L?"ic_volume0":null===h||isNaN(h)?"ic_volume3":h<30?"ic_volume1":h<70?"ic_volume2":"ic_volume3"})),_.createElement(A,{className:I["volume-slider"],volume:h,onVolumeChangeRequested:W}),_.createElement("div",{className:I.spacing}),_.createElement(u,{className:I["control-bar-buttons-menu-button"],onClick:q},_.createElement(S,{className:I.icon,icon:"ic_more"})),_.createElement("div",{className:l(I["control-bar-buttons-menu-container"],{open:$})},_.createElement(u,{className:l(I["control-bar-button"],{disabled:null===y||"Err"===y.type||null===P||"string"!=typeof P.infoHash||"number"!=typeof P.fileIdx}),tabIndex:-1,onMouseDown:ae,onClick:Se},_.createElement(S,{className:I.icon,icon:"ic_network"})),_.createElement(u,{className:l(I["control-bar-button"],{disabled:null===f}),tabIndex:-1,onMouseDown:ee,onClick:_e},_.createElement(S,{className:I.icon,icon:"ic_speedometer"})),_.createElement(u,{className:l(I["control-bar-button"],{disabled:null===g||"Ready"!==g.type}),tabIndex:-1,onMouseDown:Z,onClick:Ee},_.createElement(S,{className:I.icon,icon:"ic_info"})),_.createElement(u,{className:l(I["control-bar-button"],{disabled:!j}),tabIndex:-1,onClick:ue},_.createElement(S,{className:I.icon,icon:"ic_cast"})),_.createElement(u,{className:l(I["control-bar-button"],{disabled:!(Array.isArray(C)&&0!==C.length||Array.isArray(D)&&0!==D.length)}),tabIndex:-1,onMouseDown:J,onClick:se},_.createElement(S,{className:I.icon,icon:"ic_sub"})),(null==g||null===(t=g.content)||void 0===t||null===(o=t.videos)||void 0===o?void 0:o.length)>0?_.createElement(u,{className:I["control-bar-button"],tabIndex:-1,onMouseDown:te,onClick:Te},_.createElement(S,{className:I.icon,icon:"ic_videos"})):null,_.createElement(u,{className:I["control-bar-button"],tabIndex:-1,onMouseDown:oe,onClick:le},_.createElement(S,{className:I.icon,icon:"ic_more"})))))};R.propTypes={className:T.string,paused:T.bool,time:T.number,duration:T.number,buffered:T.number,volume:T.number,muted:T.bool,playbackSpeed:T.number,subtitlesTracks:T.array,audioTracks:T.array,metaItem:T.object,nextVideo:T.object,stream:T.object,statistics:T.object,onPlayRequested:T.func,onPauseRequested:T.func,onMuteRequested:T.func,onUnmuteRequested:T.func,onVolumeChangeRequested:T.func,onSeekRequested:T.func,onToggleSubtitlesMenu:T.func,onToggleInfoMenu:T.func,onToggleSpeedMenu:T.func,onToggleVideosMenu:T.func,onToggleOptionsMenu:T.func,onToggleStatisticsMenu:T.func},e.exports=R},6181:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var t=function(e){return("0"+e).slice(-1*Math.max(e.toString().length,2))};e.exports=function(e){if(null===e||isNaN(e))return"--:--:--";var o=Math.floor(e/36e5),a=Math.floor(e/6e4%60),n=Math.floor(e/1e3%60);return"".concat(t(o),":").concat(t(a),":").concat(t(n))}},5280:(e,t,o)=>{var a=o(6181);e.exports=a},4932:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=o(4932);e.exports=a},9292:(e,t,o)=>{var a=o(2479);e.exports=a},8928:(e,t,o)=>{var a=["className"];function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;t=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=o(4184),l=o(6590),S=l.MetaPreview,u=l.CONSTANTS,d=o(3800),c=function(e){var t=e.className,o=s(e,a),n=E.useMemo((function(){return null!==o.metaItem?i(i({},o.metaItem),{},{links:o.metaItem.links.filter((function(e){return e.category===u.SHARE_LINK_CATEGORY}))}):null}),[o.metaItem]),r=E.useCallback((function(e){e.nativeEvent.infoMenuClosePrevented=!0}),[]);return E.createElement("div",{className:T(t,d["info-menu-container"]),onMouseDown:r},null!==n?E.createElement(S,{className:d["meta-preview"],compact:!0,name:n.name,logo:n.logo,runtime:n.runtime,releaseInfo:n.releaseInfo,released:n.released,description:n.description,links:n.links}):null)};c.propTypes={className:_.string,metaItem:_.object,addon:_.object,stream:_.object},e.exports=c},5458:(e,t,o)=>{var a=o(8928);e.exports=a},2690:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=o(2690);e.exports=a},9252:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(6590).Button,E=o(1530),_=function(e){var t=e.icon,o=e.label,n=e.deviceId,_=e.disabled,T=e.onClick,l=a.useCallback((function(){"function"==typeof T&&T(n)}),[T,n]);return a.createElement(s,{className:i(E["option-container"],{disabled:_}),disabled:_,onClick:l},a.createElement(r,{className:E.icon,icon:t}),a.createElement("div",{className:E.label},o))};_.propTypes={icon:n.string,label:n.string,deviceId:n.string,disabled:n.bool,onClick:n.func},e.exports=_},9944:(e,t,o)=>{var a=o(9252);e.exports=a},1366:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=o(1366);e.exports=a},2230:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o0||Array.isArray(Y.extraSubtitlesTracks)&&Y.extraSubtitlesTracks.length>0||Array.isArray(Y.audioTracks)&&Y.audioTracks.length>0)&&Ie();break;case"KeyI":Se(),Ae(),Le(),ge(),We(),null!==K.metaItem&&"Ready"===K.metaItem.type&&me();break;case"KeyR":Se(),Re(),Ae(),ge(),We(),null!==Y.playbackSpeed&&fe();break;case"KeyV":Se(),Re(),Ae(),Le(),We(),null!==K.metaItem&&"Ready"===K.metaItem.type&&ve();break;case"KeyD":Se(),Re(),Ae(),Le(),ge(),null!==Z.statistics&&"Err"!==Z.statistics.type&&K.selected&&"string"==typeof K.selected.stream.infoHash&&"number"==typeof K.selected.stream.fileIdx&&Ge();break;case"Escape":Se(),Ae(),Re(),Le(),ge(),We(),ut()}},t=function(e){e.deltaY>0?ce||Ne||De||he||le||Ue||null===Y.volume||nt(Y.volume-5):ce||Ne||De||he||le||Ue||null===Y.volume||nt(Y.volume+5)};return ee&&(window.addEventListener("keydown",e),window.addEventListener("wheel",t)),function(){window.removeEventListener("keydown",e),window.removeEventListener("wheel",t)}}),[K.metaItem,K.selected,Z.statistics,q.seekTimeDuration,ee,ce,Ne,De,he,le,Ue,Y.paused,Y.time,Y.volume,Y.audioTracks,Y.subtitlesTracks,Y.extraSubtitlesTracks,Y.playbackSpeed,Ie,me,ve,Ge]),E.useLayoutEffect((function(){return function(){_e.cancel(),Ze.cancel(),tt.cancel()}}),[]),E.createElement("div",{className:T(G["player-container"],i({},G.immersed,se&&!ne&&null!==Y.paused&&!Y.paused&&!ce&&!Ne&&!he&&!De&&!ye&&!le&&!Ue)),onMouseDown:It,onMouseMove:Ot,onMouseOver:Ot,onMouseLeave:Nt},E.createElement(M,{ref:ze,className:G.layer,onEnded:Qe,onError:Xe,onPropValue:je,onPropChanged:je,onSubtitlesTrackLoaded:$e,onExtraSubtitlesTrackLoaded:qe,onImplementationChanged:Ke}),Y.buffering?E.createElement(f,{className:G.layer}):null,E.createElement("div",{className:G.layer,onClick:ct,onDoubleClick:At}),null!==Ve?E.createElement("div",{className:T(G.layer,G["error-layer"])},E.createElement("div",{className:G["error-label"],title:Ve.message},Ve.message),2===Ve.code?E.createElement("div",{className:G["error-sub"],title:a("EXTERNAL_PLAYER_HINT")},a("EXTERNAL_PLAYER_HINT")):null,null!==K.selected?E.createElement(O,{className:G["playlist-button"],title:a("PLAYER_OPEN_IN_EXTERNAL"),href:K.selected.stream.deepLinks.externalPlayer.href,download:K.selected.stream.deepLinks.externalPlayer.fileName,target:"_blank"},E.createElement(L,{className:G.icon,icon:"ic_downloads"}),E.createElement("div",{className:G.label},a("PLAYER_OPEN_IN_EXTERNAL"))):null):null,ce||Ne||De||he||le||Ue?E.createElement("div",{className:G.layer}):null,E.createElement(I,{className:T(G.layer,G["nav-bar-layer"]),title:null!==K.title?K.title:"",backButton:!0,fullscreenButton:!0,onMouseMove:Rt,onMouseOver:Rt}),E.createElement(C,{className:T(G.layer,G["control-bar-layer"]),paused:Y.paused,time:Y.time,duration:Y.duration,buffered:Y.buffered,volume:Y.volume,muted:Y.muted,playbackSpeed:Y.playbackSpeed,subtitlesTracks:Y.subtitlesTracks.concat(Y.extraSubtitlesTracks),audioTracks:Y.audioTracks,metaItem:K.metaItem,nextVideo:K.nextVideo,stream:null!==K.selected?K.selected.stream:null,statistics:Z.statistics,onPlayRequested:Je,onPauseRequested:et,onMuteRequested:ot,onUnmuteRequested:at,onVolumeChangeRequested:nt,onSeekRequested:it,onToggleOptionsMenu:ue,onToggleSubtitlesMenu:Ie,onToggleInfoMenu:me,onToggleSpeedMenu:fe,onToggleVideosMenu:ve,onToggleStatisticsMenu:Ge,onMouseMove:Rt,onMouseOver:Rt}),ye?E.createElement(D,{className:T(G.layer,G["menu-layer"]),metaItem:null!==K.metaItem&&"Ready"===K.metaItem.type?K.metaItem.content:null,nextVideo:K.nextVideo,onDismiss:ut,onPlayNextVideoRequested:dt}):null,Ue?E.createElement(g,{className:T(G.layer,G["menu-layer"]),stream:null!==K.selected?K.selected.stream:null,statistics:Z.statistics}):null,ce?E.createElement(B,{className:T(G.layer,G["menu-layer"]),audioTracks:Y.audioTracks,selectedAudioTrackId:Y.selectedAudioTrackId,subtitlesTracks:Y.subtitlesTracks,selectedSubtitlesTrackId:Y.selectedSubtitlesTrackId,subtitlesOffset:Y.subtitlesOffset,subtitlesSize:Y.subtitlesSize,extraSubtitlesTracks:Y.extraSubtitlesTracks,selectedExtraSubtitlesTrackId:Y.selectedExtraSubtitlesTrackId,extraSubtitlesOffset:Y.extraSubtitlesOffset,extraSubtitlesDelay:Y.extraSubtitlesDelay,extraSubtitlesSize:Y.extraSubtitlesSize,onSubtitlesTrackSelected:st,onExtraSubtitlesTrackSelected:Et,onAudioTrackSelected:_t,onSubtitlesOffsetChanged:St,onSubtitlesSizeChanged:lt,onExtraSubtitlesOffsetChanged:St,onExtraSubtitlesDelayChanged:Tt,onExtraSubtitlesSizeChanged:lt}):null,Ne?E.createElement(v,{className:T(G.layer,G["menu-layer"]),stream:null!==K.selected?K.selected.stream:null,addon:K.addon,metaItem:null!==K.metaItem&&"Ready"===K.metaItem.type?K.metaItem.content:null}):null,he?E.createElement(b,{className:T(G.layer,G["menu-layer"]),playbackSpeed:Y.playbackSpeed,onPlaybackSpeedChanged:rt}):null,De?E.createElement(y,{className:T(G.layer,G["menu-layer"]),metaItem:null!==K.metaItem&&"Ready"===K.metaItem.type?K.metaItem.content:null,seriesInfo:K.seriesInfo}):null,le?E.createElement(P,{className:T(G.layer,G["menu-layer"]),stream:K.selected.stream,playbackDevices:null!==Z.playbackDevices&&"Ready"===Z.playbackDevices.type?Z.playbackDevices.content:[]}):null)};F.propTypes={urlParams:_.shape({stream:_.string,streamTransportUrl:_.string,metaTransportUrl:_.string,type:_.string,id:_.string,videoId:_.string}),queryParams:_.instanceOf(URLSearchParams)};e.exports=h(F,(function(){return E.createElement("div",{className:T(G["player-container"])})}))},7764:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(6590).Button,s=o(4805),E=function(e){var t=e.className,o=e.value,n=e.selected,E=e.onSelect,_=a.useCallback((function(){"function"==typeof E&&E(o)}),[E,o]);return a.createElement(r,{className:i(t,s.option,{selected:n}),onClick:_},a.createElement("div",{className:s.label},o,"x"),a.createElement("div",{className:s.icon}))};E.propTypes={className:n.string,value:n.number,selected:n.bool,onSelect:n.func},e.exports=E},9396:(e,t,o)=>{var a=o(7764);e.exports=a},5296:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(9396),E=o(9715),_=Array.from(Array(8).keys(),(function(e){return.25*e+.25})).reverse(),T=function(e){var t=e.className,o=e.playbackSpeed,n=e.onPlaybackSpeedChanged,T=r().t,l=a.useCallback((function(e){e.nativeEvent.speedMenuClosePrevented=!0}),[]),S=a.useCallback((function(e){"function"==typeof n&&n(e)}),[n]);return a.createElement("div",{className:i(t,E["speed-menu-container"]),onMouseDown:l},a.createElement("div",{className:E.title},T("PLAYBACK_SPEED")),a.createElement("div",{className:E["options-container"]},_.map((function(e){return a.createElement(s,{className:E.option,key:e,value:e,selected:e===o,onSelect:S})}))))};T.propTypes={className:n.string,playbackSpeed:n.number,onPlaybackSpeedChanged:n.func},e.exports=T},1998:(e,t,o)=>{var a=o(5296);e.exports=a},2763:(e,t,o)=>{var a=o(7294),n=o(4184),i=o(5697),r=o(1289),s=function(e){var t=e.className,o=e.stream,i=e.statistics,s=a.useMemo((function(){var e;return"Ready"===i.type&&null!==(e=i.content)&&void 0!==e&&e.peers?i.content.peers:0}),[i]),E=a.useMemo((function(){var e;return"Ready"===i.type&&null!==(e=i.content)&&void 0!==e&&e.downloadSpeed?(i.content.downloadSpeed/1e3/1e3).toFixed(2):0}),[i]),_=a.useMemo((function(){var e;return"Ready"===i.type&&null!==(e=i.content)&&void 0!==e&&e.streamProgress?(100*i.content.streamProgress).toFixed(2):0}),[i]);return a.createElement("div",{className:n(t,r["statistics-menu-container"])},a.createElement("div",{className:r.title},"Statistics"),a.createElement("div",{className:r.stats},a.createElement("div",{className:r.stat},a.createElement("div",{className:r.label},"Peers"),a.createElement("div",{className:r.value},s)),a.createElement("div",{className:r.stat},a.createElement("div",{className:r.label},"Speed"),a.createElement("div",{className:r.value},E," MB/s")),a.createElement("div",{className:r.stat},a.createElement("div",{className:r.label},"Completed"),a.createElement("div",{className:r.value},_," %"))),a.createElement("div",{className:r["info-hash"]},a.createElement("div",{className:r.label},"Info Hash"),a.createElement("div",{className:r.value},o.infoHash)))};s.propTypes={className:i.string,stream:i.object,statistics:i.object},e.exports=s},4426:(e,t,o)=>{var a=o(2763);e.exports=a},569:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(6590).Button,E=o(3283),_=function(e){var t=e.className,o=e.value,n=e.label,_=e.disabled,T=e.dataset,l=e.onChange,S=a.useCallback((function(e){"function"==typeof l&&l({type:"change",value:e.currentTarget.dataset.type,dataset:T,reactEvent:e,nativeEvent:e.nativeEvent})}),[T,l]);return a.createElement("div",{className:i(t,E["discrete-input-container"],{disabled:_})},a.createElement("div",{className:E.header},n),a.createElement("div",{className:E["input-container"],title:_?"".concat(n," is not configurable"):null},a.createElement(s,{className:i(E["button-container"],{disabled:_}),"data-type":"decrement",onClick:S},a.createElement(r,{className:E.icon,icon:"ic_minus"})),a.createElement("div",{className:E["option-label"],title:o},o),a.createElement(s,{className:i(E["button-container"],{disabled:_}),"data-type":"increment",onClick:S},a.createElement(r,{className:E.icon,icon:"ic_plus"}))))};_.propTypes={className:n.string,value:n.string,label:n.string,disabled:n.bool,dataset:n.object,onChange:n.func},e.exports=_},3132:(e,t,o)=>{var a=o(569);e.exports=a},1346:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(6590),s=r.Button,E=r.CONSTANTS,_=r.comparatorWithPriorities,T=r.languageNames,l=o(3132),S=o(3889),u=o(6073).t,d={EMBEDDED:2,EXCLUSIVE:1},c={eng:1},A=a.memo((function(e){var t=a.useMemo((function(){return(Array.isArray(e.subtitlesTracks)?e.subtitlesTracks:[]).concat(Array.isArray(e.extraSubtitlesTracks)?e.extraSubtitlesTracks:[]).reduce((function(e,t){var o=t.lang;return e.includes(o)||e.push(o),e}),[]).sort(_(c))}),[e.subtitlesTracks,e.extraSubtitlesTracks]),o=a.useMemo((function(){return"string"==typeof e.selectedSubtitlesTrackId?(Array.isArray(e.subtitlesTracks)?e.subtitlesTracks:[]).reduce((function(t,o){var a=o.id,n=o.lang;return a===e.selectedSubtitlesTrackId?n:t}),null):"string"==typeof e.selectedExtraSubtitlesTrackId?(Array.isArray(e.extraSubtitlesTracks)?e.extraSubtitlesTracks:[]).reduce((function(t,o){var a=o.id,n=o.lang;return a===e.selectedExtraSubtitlesTrackId?n:t}),null):null}),[e.subtitlesTracks,e.extraSubtitlesTracks,e.selectedSubtitlesTrackId,e.selectedExtraSubtitlesTrackId]),n=a.useMemo((function(){return(Array.isArray(e.subtitlesTracks)?e.subtitlesTracks:[]).concat(Array.isArray(e.extraSubtitlesTracks)?e.extraSubtitlesTracks:[]).filter((function(e){return e.lang===o})).sort((function(e,t){return _(d)(e.origin,t.origin)}))}),[e.subtitlesTracks,e.extraSubtitlesTracks,o]),r=a.useCallback((function(e){e.nativeEvent.subtitlesMenuClosePrevented=!0}),[]),A=a.useCallback((function(t){var o=(Array.isArray(e.subtitlesTracks)?e.subtitlesTracks:[]).concat(Array.isArray(e.extraSubtitlesTracks)?e.extraSubtitlesTracks:[]).filter((function(e){return e.lang===t.currentTarget.dataset.lang})).sort((function(e,t){return _(d)(e.origin,t.origin)})).shift();o?o.embedded?"function"==typeof e.onSubtitlesTrackSelected&&e.onSubtitlesTrackSelected(o.id):"function"==typeof e.onExtraSubtitlesTrackSelected&&e.onExtraSubtitlesTrackSelected(o.id):("function"==typeof e.onSubtitlesTrackSelected&&e.onSubtitlesTrackSelected(null),"function"==typeof e.onExtraSubtitlesTrackSelected&&e.onExtraSubtitlesTrackSelected(null))}),[e.subtitlesTracks,e.extraSubtitlesTracks,e.onSubtitlesTrackSelected,e.onExtraSubtitlesTrackSelected]),I=a.useCallback((function(t){"true"===t.currentTarget.dataset.embedded?"function"==typeof e.onSubtitlesTrackSelected&&e.onSubtitlesTrackSelected(t.currentTarget.dataset.id):"function"==typeof e.onExtraSubtitlesTrackSelected&&e.onExtraSubtitlesTrackSelected(t.currentTarget.dataset.id)}),[e.onSubtitlesTrackSelected,e.onExtraSubtitlesTrackSelected]),O=a.useCallback((function(t){var o="increment"===t.value?250:-250;if("string"==typeof e.selectedExtraSubtitlesTrackId&&null!==e.extraSubtitlesDelay&&!isNaN(e.extraSubtitlesDelay)){var a=e.extraSubtitlesDelay+o;"function"==typeof e.onExtraSubtitlesDelayChanged&&e.onExtraSubtitlesDelayChanged(a)}}),[e.selectedExtraSubtitlesTrackId,e.extraSubtitlesDelay,e.onExtraSubtitlesDelayChanged]),N=a.useCallback((function(t){var o="increment"===t.value?1:-1;if("string"==typeof e.selectedSubtitlesTrackId){if(null!==e.subtitlesSize&&!isNaN(e.subtitlesSize)){var a=E.SUBTITLES_SIZES.indexOf(e.subtitlesSize),n=E.SUBTITLES_SIZES[Math.max(0,Math.min(E.SUBTITLES_SIZES.length-1,a+o))];"function"==typeof e.onSubtitlesSizeChanged&&e.onSubtitlesSizeChanged(n)}}else if("string"==typeof e.selectedExtraSubtitlesTrackId&&null!==e.extraSubtitlesSize&&!isNaN(e.extraSubtitlesSize)){var i=E.SUBTITLES_SIZES.indexOf(e.extraSubtitlesSize),r=E.SUBTITLES_SIZES[Math.max(0,Math.min(E.SUBTITLES_SIZES.length-1,i+o))];"function"==typeof e.onExtraSubtitlesSizeChanged&&e.onExtraSubtitlesSizeChanged(r)}}),[e.selectedSubtitlesTrackId,e.selectedExtraSubtitlesTrackId,e.subtitlesSize,e.extraSubtitlesSize,e.onSubtitlesSizeChanged,e.onExtraSubtitlesSizeChanged]),R=a.useCallback((function(t){var o="increment"===t.value?1:-1;if("string"==typeof e.selectedSubtitlesTrackId){if(null!==e.extraSubtitlesOffset&&!isNaN(e.extraSubtitlesOffset)){var a=Math.max(0,Math.min(100,Math.floor(e.extraSubtitlesOffset+o)));"function"==typeof e.onExtraSubtitlesOffsetChanged&&e.onExtraSubtitlesOffsetChanged(a)}}else if("string"==typeof e.selectedExtraSubtitlesTrackId&&null!==e.subtitlesOffset&&!isNaN(e.subtitlesOffset)){var n=Math.max(0,Math.min(100,Math.floor(e.subtitlesOffset+o)));"function"==typeof e.onSubtitlesOffsetChanged&&e.onSubtitlesOffsetChanged(n)}}),[e.selectedSubtitlesTrackId,e.selectedExtraSubtitlesTrackId,e.subtitlesOffset,e.extraSubtitlesOffset,e.onSubtitlesOffsetChanged,e.onExtraSubtitlesOffsetChanged]),m=a.useCallback((function(t){"function"==typeof e.onAudioTrackSelected&&e.onAudioTrackSelected(t.currentTarget.dataset.id)}),[e.onAudioTrackSelected]);return a.createElement("div",{className:i(e.className,S["subtitles-menu-container"]),onMouseDown:r},Array.isArray(e.audioTracks)&&e.audioTracks.length>1?a.createElement("div",{className:S["languages-container"]},a.createElement("div",{className:S["languages-header"]},"Audio Languages"),a.createElement("div",{className:S["languages-list"]},e.audioTracks.map((function(t,o){var n=t.id,r=t.label,E=t.lang;return a.createElement(s,{key:o,title:r,className:i(S["language-option"],{selected:e.selectedAudioTrackId===n}),"data-id":n,onClick:m},a.createElement("div",{className:S["language-label"]},"string"==typeof T[E]?T[E]:E),e.selectedAudioTrackId===n?a.createElement("div",{className:S.icon}):null)})))):null,a.createElement("div",{className:S["languages-container"]},a.createElement("div",{className:S["languages-header"]},u("PLAYER_SUBTITLES_LANGUAGES")),a.createElement("div",{className:S["languages-list"]},a.createElement(s,{title:u("OFF"),className:i(S["language-option"],{selected:null===o}),onClick:A},a.createElement("div",{className:S["language-label"]},u("OFF")),null===o?a.createElement("div",{className:S.icon}):null),t.map((function(e,t){return a.createElement(s,{key:t,title:"string"==typeof T[e]?T[e]:e,className:i(S["language-option"],{selected:o===e}),"data-lang":e,onClick:A},a.createElement("div",{className:S["language-label"]},"string"==typeof T[e]?T[e]:e),o===e?a.createElement("div",{className:S.icon}):null)})))),a.createElement("div",{className:S["variants-container"]},a.createElement("div",{className:S["variants-header"]},u("PLAYER_SUBTITLES_VARIANTS")),n.length>0?a.createElement("div",{className:S["variants-list"]},n.map((function(t,o){return a.createElement(s,{key:o,title:t.label,className:i(S["variant-option"],{selected:e.selectedSubtitlesTrackId===t.id||e.selectedExtraSubtitlesTrackId===t.id}),"data-id":t.id,"data-origin":t.origin,"data-embedded":t.embedded,onClick:I},a.createElement("div",{className:S["variant-label"]},t.origin),e.selectedSubtitlesTrackId===t.id||e.selectedExtraSubtitlesTrackId===t.id?a.createElement("div",{className:S.icon}):null)}))):a.createElement("div",{className:S["no-variants-container"]},a.createElement("div",{className:S["no-variants-label"]},u("PLAYER_SUBTITLES_DISABLED")))),a.createElement("div",{className:S["subtitles-settings-container"]},a.createElement("div",{className:S["settings-header"]},"Subtitles Settings"),a.createElement(l,{className:S["discrete-input"],label:u("DELAY"),value:"string"!=typeof e.selectedExtraSubtitlesTrackId||null===e.extraSubtitlesDelay||isNaN(e.extraSubtitlesDelay)?"--":"".concat((e.extraSubtitlesDelay/1e3).toFixed(2),"s"),disabled:"string"!=typeof e.selectedExtraSubtitlesTrackId||null===e.extraSubtitlesDelay||isNaN(e.extraSubtitlesDelay),onChange:O}),a.createElement(l,{className:S["discrete-input"],label:u("SIZE"),value:"string"==typeof e.selectedSubtitlesTrackId?null===e.subtitlesSize||isNaN(e.subtitlesSize)?"--":"".concat(e.subtitlesSize,"%"):"string"==typeof e.selectedExtraSubtitlesTrackId?null===e.extraSubtitlesSize||isNaN(e.extraSubtitlesSize)?"--":"".concat(e.extraSubtitlesSize,"%"):"--",disabled:"string"==typeof e.selectedSubtitlesTrackId?null===e.subtitlesSize||isNaN(e.subtitlesSize):"string"!=typeof e.selectedExtraSubtitlesTrackId||(null===e.extraSubtitlesSize||isNaN(e.extraSubtitlesSize)),onChange:N}),a.createElement(l,{className:S["discrete-input"],label:u("PLAYER_SUBTITLES_VERTICAL_POSIITON"),value:"string"==typeof e.selectedSubtitlesTrackId?null===e.subtitlesOffset||isNaN(e.subtitlesOffset)?"--":"".concat(e.subtitlesOffset,"%"):"string"==typeof e.selectedExtraSubtitlesTrackId?null===e.extraSubtitlesOffset||isNaN(e.extraSubtitlesOffset)?"--":"".concat(e.extraSubtitlesOffset,"%"):"--",disabled:"string"==typeof e.selectedSubtitlesTrackId?null===e.subtitlesOffset||isNaN(e.subtitlesOffset):"string"!=typeof e.selectedExtraSubtitlesTrackId||(null===e.extraSubtitlesOffset||isNaN(e.extraSubtitlesOffset)),onChange:R}),a.createElement("div",{className:S.spacing}),a.createElement(s,{className:i(S["advanced-button"],"disabled"),title:"Advanced"},"Advanced")))}));A.displayName="MainNavBars",A.propTypes={className:n.string,subtitlesTracks:n.arrayOf(n.shape({id:n.string.isRequired,lang:n.string.isRequired,origin:n.string.isRequired})),selectedSubtitlesTrackId:n.string,subtitlesOffset:n.number,subtitlesSize:n.number,extraSubtitlesTracks:n.arrayOf(n.shape({id:n.string.isRequired,lang:n.string.isRequired,origin:n.string.isRequired,label:n.string.isRequired})),selectedExtraSubtitlesTrackId:n.string,extraSubtitlesOffset:n.number,extraSubtitlesDelay:n.number,extraSubtitlesSize:n.number,audioTracks:n.arrayOf(n.shape({id:n.string.isRequired,lang:n.string.isRequired,origin:n.string.isRequired,label:n.string.isRequired})),selectedAudioTrackId:n.string,onSubtitlesTrackSelected:n.func,onExtraSubtitlesTrackSelected:n.func,onAudioTrackSelected:n.func,onSubtitlesOffsetChanged:n.func,onSubtitlesSizeChanged:n.func,onExtraSubtitlesOffsetChanged:n.func,onExtraSubtitlesDelayChanged:n.func,onExtraSubtitlesSizeChanged:n.func},e.exports=A},9646:(e,t,o)=>{var a=o(1346);e.exports=a},5245:(e,t,o)=>{var a=["className"];function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;t=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=o(4184),l=o(1654),S=o(6590).useLiveRef,u=o(4236),d=E.forwardRef((function(e,t){var o=e.className,n=s(e,a),r=S(n.onEnded),_=S(n.onError),d=S(n.onPropValue),c=S(n.onPropChanged),A=S(n.onSubtitlesTrackLoaded),I=S(n.onExtraSubtitlesTrackLoaded),O=S(n.onImplementationChanged),N=E.useRef(null),R=E.useRef(null),m=E.useCallback((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null!==R.current)try{R.current.dispatch(e,i(i({},t),{},{containerElement:N.current}))}catch(e){console.error("Video",e)}}),[]);return E.useImperativeHandle(t,(function(){return{dispatch:m}}),[]),E.useEffect((function(){return null!==N.current&&(R.current=new l,R.current.on("ended",(function(){"function"==typeof r.current&&r.current()})),R.current.on("error",(function(e){"function"==typeof _.current&&_.current(e)})),R.current.on("propValue",(function(e,t){"function"==typeof d.current&&d.current(e,t)})),R.current.on("propChanged",(function(e,t){"function"==typeof c.current&&c.current(e,t)})),R.current.on("subtitlesTrackLoaded",(function(e){"function"==typeof A.current&&A.current(e)})),R.current.on("extraSubtitlesTrackLoaded",(function(e){"function"==typeof I.current&&I.current(e)})),R.current.on("implementationChanged",(function(e){"function"==typeof O.current&&O.current(e)}))),function(){R.current.destroy()}}),[]),E.createElement("div",{className:T(o,u["video-container"])},E.createElement("div",{ref:N,className:u.video}))}));d.displayName="Video",d.propTypes={className:_.string,onEnded:_.func,onError:_.func,onPropValue:_.func,onPropChanged:_.func,onSubtitlesTrackLoaded:_.func,onExtraSubtitlesTrackLoaded:_.func,onImplementationChanged:_.func},e.exports=d},5711:(e,t,o)=>{var a=o(5245);e.exports=a},4027:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(123),s=o(674),E=function(e){var t=e.className,o=e.metaItem,n=e.seriesInfo,E=a.useCallback((function(e){e.nativeEvent.videosMenuClosePrevented=!0}),[]),_=a.useMemo((function(){return n&&"number"==typeof n.season&&Array.isArray(o.videos)?o.videos.filter((function(e){return e.season===n.season})):o.videos}),[o,n]);return a.createElement("div",{className:i(t,s["videos-menu-container"]),onMouseDown:E},_.map((function(e,t){return a.createElement(r,{key:t,id:e.id,title:e.title,thumbnail:e.thumbnail,episode:e.episode,released:e.released,upcoming:e.upcoming,watched:e.watched,progress:e.progress,deepLinks:e.deepLinks,scheduled:e.scheduled})})))};E.propTypes={className:n.string,metaItem:n.object,seriesInfo:n.shape({season:n.number,episode:n.number})},e.exports=E},6429:(e,t,o)=>{var a=o(4027);e.exports=a},7793:(e,t,o)=>{var a=o(2230);e.exports=a},5852:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o{var a=o(4853);e.exports=a},4182:(e,t,o)=>{var a=o(7294),n=o(6590).useModelState,i=o(3662).useServices;e.exports=function(e){var t=i().core,o=a.useMemo((function(){return e.has("search")&&e.get("search").length>0?{action:"Load",args:{model:"CatalogsWithExtra",args:{extra:[["search",e.get("search")]]}}}:{action:"Unload"}}),[e]),r=a.useCallback((function(e){t.transport.dispatch({action:"CatalogsWithExtra",args:{action:"LoadRange",args:e}},"search")}),[]);return[n({model:"search",action:o}),r]}},5674:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var o=0,a=new Array(t);o=Ne.current.scrollHeight-50)De(Le[Le.length-1].id);else for(var e=Le.length-1;e>=0;e--)if(Le[e].ref.current.offsetTop-Ne.current.offsetTop<=Ne.current.scrollTop){De(Le[e].id);break}}),[]),ve=s.useCallback((function(e){var t=Le.find((function(t){return t.id===e.currentTarget.dataset.section}));Ne.current.scrollTo({top:t.ref.current.offsetTop-Ne.current.offsetTop,behavior:"smooth"})}),[]),Pe=s.useCallback(_((function(){ge()}),50),[]);return s.useEffect((function(){Se&&Te&&(t.transport.dispatch({action:"Ctx",args:{action:"InstallTraktAddon"}}),le(!1))}),[Se,Te]),s.useEffect((function(){null!==U.exportUrl&&"string"==typeof U.exportUrl&&window.open(U.exportUrl)}),[U.exportUrl]),s.useLayoutEffect((function(){r&&ge(),re()}),[r]),s.createElement(I,{className:P["settings-container"],route:"settings"},s.createElement("div",{className:E(P["settings-content"],"animation-fade-in")},s.createElement("div",{className:P["side-menu-container"]},s.createElement(c,{className:E(P["side-menu-button"],n({},P.selected,Ce===y)),title:e("SETTINGS_NAV_GENERAL"),"data-section":y,onClick:ve},e("SETTINGS_NAV_GENERAL")),s.createElement(c,{className:E(P["side-menu-button"],n({},P.selected,Ce===B)),title:e("SETTINGS_NAV_PLAYER"),"data-section":B,onClick:ve},e("SETTINGS_NAV_PLAYER")),s.createElement(c,{className:E(P["side-menu-button"],n({},P.selected,Ce===b)),title:e("SETTINGS_NAV_STREAMING"),"data-section":b,onClick:ve},e("SETTINGS_NAV_STREAMING")),s.createElement(c,{className:E(P["side-menu-button"],n({},P.selected,Ce===M)),title:e("SETTINGS_NAV_SHORTCUTS"),"data-section":M,onClick:ve},e("SETTINGS_NAV_SHORTCUTS")),s.createElement("div",{className:P.spacing}),s.createElement("div",{className:P["version-info-label"],title:"5.0.0"},"App Version: ","5.0.0"),null!==G.settings&&"Ready"===G.settings.type?s.createElement("div",{className:P["version-info-label"],title:G.settings.content.serverVersion},"Server Version: ",G.settings.content.serverVersion):null),s.createElement("div",{ref:Ne,className:P["sections-container"],onScroll:Pe},s.createElement("div",{ref:Re,className:P["section-container"]},s.createElement("div",{className:P["section-title"]},e("SETTINGS_NAV_GENERAL")),s.createElement("div",{className:E(P["option-container"],P["user-info-option-container"])},s.createElement("div",{className:P["avatar-container"],style:{backgroundImage:null===d.auth?"url('".concat(o(3028),"')"):d.auth.user.avatar?"url('".concat(d.auth.user.avatar,"')"):"url('".concat(o(1251),"')")}}),s.createElement("div",{className:P["email-logout-container"]},s.createElement("div",{className:P["email-label-container"],title:null===d.auth?"Anonymous user":d.auth.user.email},s.createElement("div",{className:P["email-label"]},null===d.auth?"Anonymous user":d.auth.user.email)),null!==d.auth?s.createElement(c,{className:P["logout-button-container"],title:e("LOG_OUT"),onClick:de},s.createElement("div",{className:P["logout-label"]},e("LOG_OUT"))):null),s.createElement(c,{className:P["user-panel-container"],title:"User panel",target:"_blank",href:"https://www.stremio.com/acc-settings"},s.createElement("div",{className:P["user-panel-label"]},e("USER_PANEL")))),null===d.auth?s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["button-container"]),title:"".concat(e("LOG_IN")," / ").concat(e("SIGN_UP")),href:"#/intro"},s.createElement("div",{className:P.label},e("LOG_IN")," / ",e("SIGN_UP")))):null,s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_INTERFACE_LANGUAGE"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"]),tabIndex:-1},w))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},"Trakt Scrobbling")),s.createElement(c,{className:E(P["option-input-container"],P["button-container"]),title:"Authenticate",disabled:null===d.auth,tabIndex:-1,onClick:ce},s.createElement(l,{className:P.icon,icon:"ic_trakt"}),s.createElement("div",{className:P.label},null!==d.auth&&null!==d.auth.user&&null!==d.auth.user.trakt?e("LOG_OUT"):e("SETTINGS_TRAKT_AUTHENTICATE")))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("Calendar"))),s.createElement(c,{className:E(P["option-input-container"],P["button-container"]),title:"Subscribe",disabled:!(d.auth&&d.auth.user&&d.auth.user._id),tabIndex:-1,onClick:Ae},s.createElement(l,{className:P.icon,icon:"ic_calendar"}),s.createElement("div",{className:P.label},e("SETTINGS_CALENDAR_SUBSCRIBE")))),s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["link-container"]),title:e("SETTINGS_DATA_EXPORT"),tabIndex:-1,onClick:Ie},s.createElement("div",{className:P.label},e("SETTINGS_DATA_EXPORT")))),s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["link-container"]),title:e("SETTINGS_SUPPORT"),target:"_blank",href:"https://stremio.zendesk.com/hc/en-us"},s.createElement("div",{className:P.label},e("SETTINGS_SUPPORT")))),s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["link-container"]),title:"Source code",target:"_blank",href:"https://github.com/stremio/stremio-web/tree/".concat("cbf28a4e1d85872d68ff921c80ae92c7a7957ee6")},s.createElement("div",{className:P.label},"Source code"))),s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["link-container"]),title:e("TERMS_OF_SERVICE"),target:"_blank",href:"https://www.stremio.com/tos"},s.createElement("div",{className:P.label},e("TERMS_OF_SERVICE")))),s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["link-container"]),title:e("PRIVACY_POLICY"),target:"_blank",href:"https://www.stremio.com/privacy"},s.createElement("div",{className:P.label},e("PRIVACY_POLICY"))))),s.createElement("div",{ref:me,className:P["section-container"]},s.createElement("div",{className:P["section-title"]},e("SETTINGS_NAV_PLAYER")),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SUBTITLES_LANGUAGE"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},H))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SUBTITLES_SIZE"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},V))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SUBTITLES_COLOR"))),s.createElement(N,a({className:E(P["option-input-container"],P["color-input-container"])},Y))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SUBTITLES_COLOR_BACKGROUND"))),s.createElement(N,a({className:E(P["option-input-container"],P["color-input-container"])},z))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SUBTITLES_COLOR_OUTLINE"))),s.createElement(N,a({className:E(P["option-input-container"],P["color-input-container"])},x))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_DEFAULT_AUDIO_TRACK"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},K))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_REWIND_FAST_FORWARD_DURATION"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},j))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("AUTO_PLAY"))),s.createElement(A,a({className:E(P["option-input-container"],P["checkbox-container"])},$))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_NEXT_VIDEO_POPUP_DURATION"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"]),disabled:!d.settings.bingeWatching},X))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_PLAY_IN_BACKGROUND"))),s.createElement(A,a({className:E(P["option-input-container"],P["checkbox-container"]),disabled:!0,tabIndex:-1},q))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_PLAY_IN_EXTERNAL_PLAYER"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},Q))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_HWDEC"))),s.createElement(A,a({className:E(P["option-input-container"],P["checkbox-container"]),disabled:!0,tabIndex:-1},J)))),s.createElement("div",{ref:pe,className:P["section-container"]},s.createElement("div",{className:P["section-title"]},e("SETTINGS_NAV_STREAMING")),s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["button-container"]),title:"Reload",onClick:Oe},s.createElement("div",{className:P.label},e("RELOAD")))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("STATUS"))),s.createElement("div",{className:E(P["option-input-container"],P["info-container"])},s.createElement("div",{className:P.label},null===G.settings?"NotLoaded":"Ready"===G.settings.type?e("SETTINGS_SERVER_STATUS_ONLINE"):"Error"===G.settings.type?"".concat(e("SETTINGS_SERVER_STATUS_ERROR"),": (").concat(G.settings.content,")"):G.settings.type))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},"Url")),s.createElement("div",{className:E(P["option-input-container"],P["configure-input-container"])},s.createElement("div",{className:P.label,title:Z.value},Z.value),s.createElement(c,{className:P["configure-button-container"],title:"Configure server url",onClick:ie},s.createElement(l,{className:P.icon,icon:"ic_settings"})))),null!==te?s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SERVER_CACHE_SIZE"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},te))):null,null!==oe?s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SERVER_TORRENT_PROFILE"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},oe))):null),s.createElement("div",{ref:he,className:P["section-container"]},s.createElement("div",{className:P["section-title"]},e("SETTINGS_NAV_SHORTCUTS")),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_PLAY_PAUSE"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,e("SETTINGS_SHORTCUT_SPACE")))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_SEEK_FORWARD"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"→"),s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_OR")),s.createElement("kbd",null,"⇧ ",e("SETTINGS_SHORTCUT_SHIFT")),s.createElement("div",{className:P.label},"+"),s.createElement("kbd",null,"→"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_SEEK_BACKWARD"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"←"),s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_OR")),s.createElement("kbd",null,"⇧ ",e("SETTINGS_SHORTCUT_SHIFT")),s.createElement("div",{className:P.label},"+"),s.createElement("kbd",null,"←"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_VOLUME_UP"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"↑"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_VOLUME_DOWN"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"↓"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_MENU_SUBTITLES"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"S"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_MENU_INFO"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"I"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_FULLSCREEN"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"F"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_NAVIGATE_MENUS"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"1"),s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_TO")),s.createElement("kbd",null,"5"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_GO_TO_SEARCH"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"0"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_EXIT_BACK"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,e("SETTINGS_SHORTCUT_ESC"))))))),ne?s.createElement(m,{className:P["configure-server-url-modal-container"],title:e("SETTINGS_SERVER_CONFIGURE_TITLE"),buttons:ue,onCloseRequest:re},s.createElement(R,{ref:se,autoFocus:!0,className:P["server-url-input"],type:"text",defaultValue:Z.value,placeholder:e("SETTINGS_SERVER_CONFIGURE_INPUT"),onSubmit:Ee})):null)}),(function(){return s.createElement(I,{className:P["settings-container"],route:"settings"})}))},2465:(e,t,o)=>{var a=o(5674);e.exports=a},4137:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t{var a=o(7165),n=o(8823),i=o(1901),r=o(7965),s=o(9005),E=o(353),_=o(6375),T=o(2465),l=o(7793),S=o(6732);e.exports={Addons:a,Board:n,Discover:i,Library:r,MetaDetails:s,NotFound:E,Search:_,Settings:T,Player:l,Intro:S}},1099:(e,t,o)=>{var a=o(6729),n=o(5482);e.exports=function(){var e=!1,t=null,o=!1,i=null,r=new a;function s(){e=!0,t=null,o=!1,_()}function E(a){console.error(a),e=!1,t=new Error("Google Cast API not available",{cause:a}),o=!1,_(),i=null}function _(){r.emit("stateChanged")}Object.defineProperties(this,{active:{configurable:!1,enumerable:!0,get:function(){return e}},error:{configurable:!1,enumerable:!0,get:function(){return t}},starting:{configurable:!1,enumerable:!0,get:function(){return o}},transport:{configurable:!1,enumerable:!0,get:function(){return i}}}),this.start=function(){e||t instanceof Error||o||(o=!0,(i=new n).on("init",s),i.on("init-error",E),_())},this.stop=function(){e=!1,t=null,o=!1,_(),null!==i&&(i.removeAllListeners(),i=null)},this.on=function(e,t){r.on(e,t)},this.off=function(e,t){r.off(e,t)}}},5482:(e,t,o)=>{var a=o(6729),n=o(542),i="urn:x-cast:com.stremio",r=2e4,s=null,E=new a;window.__onGCastApiAvailable=function(e){delete window.__onGCastApiAvailable,s=!!e,E.emit("availabilityChanged")};e.exports=function(){var e=new a,t={};function o(o,a){try{var n=JSON.parse(a),i=n.id,r=n.chunk,s=n.index,E=n.length;if(t[i]=t[i]||[],t[i][s]=r,Object.keys(t[i]).length===E){var _=JSON.parse(t[i].join(""));delete t[i],e.emit("message",_)}}catch(t){e.emit("message-error",t)}}function _(t){e.emit(cast.framework.CastSession.APPLICATION_STATUS_CHANGED,t)}function T(t){e.emit(cast.framework.CastSession.APPLICATION_METADATA_CHANGED,t)}function l(t){e.emit(cast.framework.CastSession.ACTIVE_INPUT_STATE_CHANGED,t)}function S(t){e.emit(cast.framework.CastSession.VOLUME_CHANGED,t)}function u(t){e.emit(cast.framework.CastSession.MEDIA_SESSION,t)}function d(t){e.emit(cast.framework.CastContextEventType.CAST_STATE_CHANGED,t)}function c(t){switch(e.emit(cast.framework.CastContextEventType.SESSION_STATE_CHANGED,t),t.sessionState){case cast.framework.SessionState.SESSION_STARTED:t.session.addMessageListener(i,o),t.session.addEventListener(cast.framework.CastSession.APPLICATION_STATUS_CHANGED,_),t.session.addEventListener(cast.framework.CastSession.APPLICATION_METADATA_CHANGED,T),t.session.addEventListener(cast.framework.CastSession.ACTIVE_INPUT_STATE_CHANGED,l),t.session.addEventListener(cast.framework.CastSession.VOLUME_CHANGED,S),t.session.addEventListener(cast.framework.CastSession.MEDIA_SESSION,u);break;case cast.framework.SessionState.SESSION_ENDED:t.session.removeMessageListener(i,o),t.session.removeEventListener(cast.framework.CastSession.APPLICATION_STATUS_CHANGED,_),t.session.removeEventListener(cast.framework.CastSession.APPLICATION_METADATA_CHANGED,T),t.session.removeEventListener(cast.framework.CastSession.ACTIVE_INPUT_STATE_CHANGED,l),t.session.removeEventListener(cast.framework.CastSession.VOLUME_CHANGED,S),t.session.removeEventListener(cast.framework.CastSession.MEDIA_SESSION,u)}}new Promise((function(e,t){function o(){E.off("availabilityChanged",o),s?e():t(new Error("window.cast api not available"))}null!==s?o():E.on("availabilityChanged",o)})).then((function(){cast.framework.CastContext.getInstance().addEventListener(cast.framework.CastContextEventType.CAST_STATE_CHANGED,d),cast.framework.CastContext.getInstance().addEventListener(cast.framework.CastContextEventType.SESSION_STATE_CHANGED,c)})).then((function(){try{e.emit("init")}catch(e){console.error("ChromecastTransport",e)}})).catch((function(t){e.emit("init-error",t)})),this.on=function(t,o){e.on(t,o)},this.off=function(t,o){e.off(t,o)},this.removeAllListeners=function(){e.removeAllListeners()},this.getCastState=function(){return cast.framework.CastContext.getInstance().getCastState()},this.getSessionState=function(){return cast.framework.CastContext.getInstance().getSessionState()},this.getCastDevice=function(){var e=cast.framework.CastContext.getInstance().getCurrentSession();return null!==e?e.getCastDevice():null},this.setOptions=function(e){cast.framework.CastContext.getInstance().setOptions(e)},this.requestSession=function(){return cast.framework.CastContext.getInstance().requestSession()},this.endCurrentSession=function(e){cast.framework.CastContext.getInstance().endCurrentSession(e)},this.sendMessage=function(e){var t=cast.framework.CastContext.getInstance().getCurrentSession();if(null!==t){for(var o=JSON.stringify(e),a=Math.ceil(o.length/r),s=[],E=0;E{var a=o(1099);e.exports=a},6194:(e,t,o)=>{var a=o(6729),n=o(6806);e.exports=function(e){var t=!1,o=null,i=!1,r=null,s=new a;function E(){t=!0,o=null,i=!1,T()}function _(e){console.error(e),t=!1,o=new Error("Stremio Core Transport initialization failed",{cause:e}),i=!1,T(),r=null}function T(){s.emit("stateChanged")}Object.defineProperties(this,{active:{configurable:!1,enumerable:!0,get:function(){return t}},error:{configurable:!1,enumerable:!0,get:function(){return o}},starting:{configurable:!1,enumerable:!0,get:function(){return i}},transport:{configurable:!1,enumerable:!0,get:function(){return r}}}),this.start=function(){t||o instanceof Error||i||(i=!0,(r=new n(e)).on("init",E),r.on("error",_),T())},this.stop=function(){t=!1,o=null,i=!1,T(),null!==r&&(r.removeAllListeners(),r=null)},this.on=function(e,t){s.on(e,t)},this.off=function(e,t){s.off(e,t)}}},6806:(e,t,o)=>{function a(e,t,o,a,n,i,r){try{var s=e[i](r),E=s.value}catch(e){return void o(e)}s.done?t(E):Promise.resolve(E).then(a,n)}function n(e){return function(){var t=this,o=arguments;return new Promise((function(n,i){var r=e.apply(t,o);function s(e){a(r,n,i,s,E,"next",e)}function E(e){a(r,n,i,s,E,"throw",e)}s(void 0)}))}}var i=o(6729),r=o(6553);e.exports=function(e){var t=new i,o=new Worker("".concat("cbf28a4e1d85872d68ff921c80ae92c7a7957ee6","/scripts/worker.js")),a=new r(window,o);window.onCoreEvent=function(e){var o=e.name,a=e.args;try{t.emit(o,a)}catch(e){console.error("CoreTransport",e)}},a.call(["init"],[e]).then((function(){try{t.emit("init")}catch(e){console.error("CoreTransport",e)}})).catch((function(e){t.emit("error",e)})),this.on=function(e,o){t.on(e,o)},this.off=function(e,o){t.off(e,o)},this.removeAllListeners=function(){t.removeAllListeners()},this.getState=(function(){var e=n(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.call(["getState"],[t]));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}})(),this.getDebugState=n(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.call(["getDebugState"],[]));case 1:case"end":return e.stop()}}),e)}))),this.dispatch=(function(){var e=n(regeneratorRuntime.mark((function e(t,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.call(["dispatch"],[t,o,location.hash]));case 1:case"end":return e.stop()}}),e)})));return function(t,o){return e.apply(this,arguments)}})(),this.analytics=(function(){var e=n(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.call(["analytics"],[t,location.hash]));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}})(),this.decodeStream=(function(){var e=n(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.call(["decodeStream"],[t]));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}})()}},4937:(e,t,o)=>{var a=o(6194);e.exports=a},8634:(e,t,o)=>{function a(e,t,o,a,n,i,r){try{var s=e[i](r),E=s.value}catch(e){return void o(e)}s.done?t(E):Promise.resolve(E).then(a,n)}function n(e){return function(){var t=this,o=arguments;return new Promise((function(n,i){var r=e.apply(t,o);function s(e){a(r,n,i,s,E,"next",e)}function E(e){a(r,n,i,s,E,"throw",e)}s(void 0)}))}}var i=o(6729);e.exports=function(e){var t=e.core,o=!1,a=new i;function r(e){e.preventDefault()}function s(e){return E.apply(this,arguments)}function E(){return(E=n(regeneratorRuntime.mark((function e(o){var n,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o.preventDefault(),!(o.dataTransfer.files instanceof FileList&&o.dataTransfer.files.length>0)){e.next=18;break}n=o.dataTransfer.files[0],e.t0=n.type,e.next="application/x-bittorrent"===e.t0?6:17;break;case 6:return e.prev=6,e.next=9,n.arrayBuffer();case 9:i=e.sent,t.transport.dispatch({action:"StreamingServer",args:{action:"CreateTorrent",args:Array.from(new Uint8Array(i))}}),e.next=16;break;case 13:e.prev=13,e.t1=e.catch(6),a.emit("error",{message:"Failed to process file",file:{name:n.name,type:n.type}});case 16:return e.abrupt("break",18);case 17:a.emit("error",{message:"Unsupported file",file:{name:n.name,type:n.type}});case 18:case"end":return e.stop()}}),e,null,[[6,13]])})))).apply(this,arguments)}function _(){a.emit("stateChanged")}Object.defineProperties(this,{active:{configurable:!1,enumerable:!0,get:function(){return o}}}),this.start=function(){o||(window.addEventListener("dragover",r),window.addEventListener("drop",s),o=!0,_())},this.stop=function(){window.removeEventListener("dragover",r),window.removeEventListener("drop",s),o=!1,_()},this.on=function(e,t){a.on(e,t)},this.off=function(e,t){a.off(e,t)}}},8500:(e,t,o)=>{var a=o(8634);e.exports=a},9093:(e,t,o)=>{var a=o(6729);e.exports=function(){var e=!1,t=new a;function o(e){if(!(e.keyboardShortcutPrevented||"INPUT"===e.target.tagName||e.ctrlKey||e.altKey||e.shiftKey||e.metaKey))switch(e.code){case"Digit0":e.preventDefault(),window.location="#/search";break;case"Digit1":e.preventDefault(),window.location="#/";break;case"Digit2":e.preventDefault(),window.location="#/discover";break;case"Digit3":e.preventDefault(),window.location="#/library";break;case"Digit4":e.preventDefault(),window.location="#/settings";break;case"Digit5":e.preventDefault(),window.location="#/addons";break;case"Backspace":e.preventDefault(),e.ctrlKey?window.history.forward():window.history.back();break;case"KeyF":e.preventDefault(),document.fullscreenElement===document.documentElement?document.exitFullscreen():document.documentElement.requestFullscreen()}}function n(){t.emit("stateChanged")}Object.defineProperties(this,{active:{configurable:!1,enumerable:!0,get:function(){return e}}}),this.start=function(){e||(window.addEventListener("keydown",o),e=!0,n())},this.stop=function(){window.removeEventListener("keydown",o),e=!1,n()}}},7369:(e,t,o)=>{var a=o(9093);e.exports=a},2207:(e,t,o)=>{var a=o(7294).createContext({});a.displayName="ServicesContext",e.exports=a},8261:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(2207),r=function(e){var t=e.services,o=void 0===t?{}:t,n=e.children;return a.createElement(i.Provider,{value:o},n)};r.propTypes={services:n.object,children:n.oneOfType([n.arrayOf(n.node),n.node])},e.exports=r},3487:(e,t,o)=>{var a=o(8261),n=o(1806);e.exports={ServicesProvider:a,useServices:n}},1806:(e,t,o)=>{var a=o(7294),n=o(2207);e.exports=function(){return a.useContext(n)}},3015:(e,t,o)=>{var a=o(6729),n=o(755);e.exports=function(){var e=!1,t=null,o=!1,i=null,r=new a;function s(){e=!0,t=null,o=!1,_()}function E(a){console.error(a),e=!1,t=new Error(a),o=!1,_(),i=null}function _(){r.emit("stateChanged")}Object.defineProperties(this,{active:{configurable:!1,enumerable:!0,get:function(){return e}},error:{configurable:!1,enumerable:!0,get:function(){return t}},starting:{configurable:!1,enumerable:!0,get:function(){return o}},transport:{configurable:!1,enumerable:!0,get:function(){return i}}}),this.start=function(){e||t instanceof Error||o||(e=!1,o=!0,(i=new n).on("init",s),i.on("init-error",E),_())},this.stop=function(){e=!1,t=null,o=!1,_()},this.on=function(e,t){r.on(e,t)},this.off=function(e,t){r.off(e,t)}}},755:(e,t,o)=>{var a=o(6729),n=!1,i=new a,r=1,s=3,E=6,_=7,T="transport";window.initShellComm=function(){delete window.initShellComm,i.emit("availabilityChanged")};e.exports=function(){var e=new a;this.props={};var t=this;(window.qt?new Promise((function(e){function t(){i.off("availabilityChanged",t),n=!0,e()}n?t():i.on("availabilityChanged",t)})):Promise.reject("Qt API not found")).then((function(){var o=window.qt&&window.qt.webChannelTransport;if(!o)throw"no viable transport found (qt.webChannelTransport)";var a=0;function n(e){e.id=a++,o.send(JSON.stringify(e))}o.onmessage=function(o){var a=JSON.parse(o.data);if(0===a.id){var i=a.data[T];i.properties.slice(1).forEach((function(e){t.props[e[1]]=e[3]})),"string"==typeof t.props.shellVersion&&(t.shellVersionArr=(t.props.shellVersion.match(/(\d+)\.(\d+)\.(\d+)/)||[]).slice(1,4).map(Number)),e.emit("received-props",t.props),i.signals.forEach((function(e){n({type:_,object:T,signal:e[1]})}));var s=i.methods.filter((function(e){return"onEvent"===e[0]}))[0];t.send=function(e,t){n({type:E,object:T,method:s[1],args:[e,t||{}]})},t.send("app-ready",{})}a.object===T&&a.type===r&&e.emit(a.args[0],a.args[1]),e.emit("init")},n({type:s})})).catch((function(t){e.emit("init-error",t)})),this.on=function(t,o){e.on(t,o)},this.off=function(t,o){e.off(t,o)},this.removeAllListeners=function(){e.removeAllListeners()}}},1921:(e,t,o)=>{var a=o(3015);e.exports=a},3662:(e,t,o)=>{var a=o(6623),n=o(4937),i=o(8500),r=o(7369),s=o(3487),E=s.ServicesProvider,_=s.useServices,T=o(1921);e.exports={Chromecast:a,Core:n,DragAndDrop:i,KeyboardShortcuts:r,ServicesProvider:E,useServices:_,Shell:T}},9742:(e,t)=>{"use strict";t.byteLength=function(e){var t=E(e),o=t[0],a=t[1];return 3*(o+a)/4-a},t.toByteArray=function(e){var t,o,i=E(e),r=i[0],s=i[1],_=new n((function(e,t,o){return 3*(t+o)/4-o})(0,r,s)),T=0,l=s>0?r-4:r;for(o=0;o>16&255,_[T++]=t>>8&255,_[T++]=255&t;2===s&&(t=a[e.charCodeAt(o)]<<2|a[e.charCodeAt(o+1)]>>4,_[T++]=255&t);1===s&&(t=a[e.charCodeAt(o)]<<10|a[e.charCodeAt(o+1)]<<4|a[e.charCodeAt(o+2)]>>2,_[T++]=t>>8&255,_[T++]=255&t);return _},t.fromByteArray=function(e){for(var t,a=e.length,n=a%3,i=[],r=16383,s=0,E=a-n;sE?E:s+r));1===n?(t=e[a-1],i.push(o[t>>2]+o[t<<4&63]+"==")):2===n&&(t=(e[a-2]<<8)+e[a-1],i.push(o[t>>10]+o[t>>4&63]+o[t<<2&63]+"="));return i.join("")};for(var o=[],a=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=0,s=i.length;r0)throw new Error("Invalid string. Length must be a multiple of 4");var o=e.indexOf("=");return-1===o&&(o=t),[o,o===t?0:4-o%4]}function _(e,t,a){for(var n,i,r=[],s=t;s>18&63]+o[i>>12&63]+o[i>>6&63]+o[63&i]);return r.join("")}a["-".charCodeAt(0)]=62,a["_".charCodeAt(0)]=63},7500:e=>{function t(e){return e.reduce(((e,t,o,a)=>{const n=t.split("-").map((e=>parseInt(e)));return e.concat(((e,t=e)=>Array.from({length:t-e+1},((t,o)=>o+e)))(...n))}),[])}e.exports=t,e.exports.parse=t,e.exports.compose=function(e){return e.reduce(((e,t,o,a)=>(0!==o&&t===a[o-1]+1||e.push([]),e[e.length-1].push(t),e)),[]).map((e=>e.length>1?`${e[0]}-${e[e.length-1]}`:`${e[0]}`))}},1206:function(e){e.exports=(function(e){var t={};function o(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(a,n,function(t){return e[t]}.bind(null,n));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=90)})({17:function(e,t,o){"use strict";t.__esModule=!0,t.default=void 0;var a=o(18),n=(function(){function e(){}return e.getFirstMatch=function(e,t){var o=t.match(e);return o&&o.length>0&&o[1]||""},e.getSecondMatch=function(e,t){var o=t.match(e);return o&&o.length>1&&o[2]||""},e.matchAndReturnConst=function(e,t,o){if(e.test(t))return o},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,o,a){void 0===a&&(a=!1);var n=e.getVersionPrecision(t),i=e.getVersionPrecision(o),r=Math.max(n,i),s=0,E=e.map([t,o],(function(t){var o=r-e.getVersionPrecision(t),a=t+new Array(o+1).join(".0");return e.map(a.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(a&&(s=r-Math.min(n,i)),r-=1;r>=s;){if(E[0][r]>E[1][r])return 1;if(E[0][r]===E[1][r]){if(r===s)return 0;r-=1}else if(E[0][r]1?n-1:0),r=1;r0){var r=Object.keys(o),E=s.default.find(r,(function(e){return t.isOS(e)}));if(E){var _=this.satisfies(o[E]);if(void 0!==_)return _}var T=s.default.find(r,(function(e){return t.isPlatform(e)}));if(T){var l=this.satisfies(o[T]);if(void 0!==l)return l}}if(i>0){var S=Object.keys(n),u=s.default.find(S,(function(e){return t.isBrowser(e,!0)}));if(void 0!==u)return this.compareVersion(n[u])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var o=this.getBrowserName().toLowerCase(),a=e.toLowerCase(),n=s.default.getBrowserTypeByAlias(a);return t&&n&&(a=n.toLowerCase()),a===o},t.compareVersion=function(e){var t=[0],o=e,a=!1,n=this.getBrowserVersion();if("string"==typeof n)return">"===e[0]||"<"===e[0]?(o=e.substr(1),"="===e[1]?(a=!0,o=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?o=e.substr(1):"~"===e[0]&&(a=!0,o=e.substr(1)),t.indexOf(s.default.compareVersions(n,o,a))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e})();t.default=_,e.exports=t.default},92:function(e,t,o){"use strict";t.__esModule=!0,t.default=void 0;var a,n=(a=o(17))&&a.__esModule?a:{default:a},i=/version\/(\d+(\.?_?\d+)+)/i,r=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},o=n.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},o=n.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},o=n.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},o=n.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},o=n.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},o=n.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},o=n.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},o=n.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},o=n.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},o=n.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},o=n.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},o=n.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},o=n.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},o=n.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},o=n.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return o&&(t.version=o),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},o=n.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},o=n.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},o=n.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},o=n.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},o=n.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},o=n.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},o=n.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},o=n.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},o=n.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},o=n.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},o=n.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},o=n.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:function(e){var t=!e.test(/like android/i),o=e.test(/android/i);return t&&o},describe:function(e){var t={name:"Android Browser"},o=n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},o=n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},o=n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:n.default.getFirstMatch(t,e),version:n.default.getSecondMatch(t,e)}}}];t.default=r,e.exports=t.default},93:function(e,t,o){"use strict";t.__esModule=!0,t.default=void 0;var a,n=(a=o(17))&&a.__esModule?a:{default:a},i=o(18),r=[{test:[/Roku\/DVP/],describe:function(e){var t=n.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:i.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=n.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:i.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=n.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),o=n.default.getWindowsVersionName(t);return{name:i.OS_MAP.Windows,version:t,versionName:o}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:i.OS_MAP.iOS},o=n.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return o&&(t.version=o),t}},{test:[/macintosh/i],describe:function(e){var t=n.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),o=n.default.getMacOSVersionName(t),a={name:i.OS_MAP.MacOS,version:t};return o&&(a.versionName=o),a}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=n.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:i.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),o=e.test(/android/i);return t&&o},describe:function(e){var t=n.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),o=n.default.getAndroidVersionName(t),a={name:i.OS_MAP.Android,version:t};return o&&(a.versionName=o),a}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=n.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),o={name:i.OS_MAP.WebOS};return t&&t.length&&(o.version=t),o}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=n.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||n.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||n.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:i.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=n.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:i.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=n.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:i.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:i.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:i.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=n.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:i.OS_MAP.PlayStation4,version:t}}}];t.default=r,e.exports=t.default},94:function(e,t,o){"use strict";t.__esModule=!0,t.default=void 0;var a,n=(a=o(17))&&a.__esModule?a:{default:a},i=o(18),r=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=n.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",o={type:i.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(o.model=t),o}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),o=e.test(/like (ipod|iphone)/i);return t&&!o},describe:function(e){var t=n.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:i.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:i.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:i.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:i.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:i.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.tv}}}];t.default=r,e.exports=t.default},95:function(e,t,o){"use strict";t.__esModule=!0,t.default=void 0;var a,n=(a=o(17))&&a.__esModule?a:{default:a},i=o(18),r=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:i.ENGINE_MAP.Blink};var t=n.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:i.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:i.ENGINE_MAP.Trident},o=n.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:i.ENGINE_MAP.Presto},o=n.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:function(e){var t=e.test(/gecko/i),o=e.test(/like gecko/i);return t&&!o},describe:function(e){var t={name:i.ENGINE_MAP.Gecko},o=n.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:i.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:i.ENGINE_MAP.WebKit},o=n.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}}];t.default=r,e.exports=t.default}})},8764:(e,t,o)=>{"use strict";const a=o(9742),n=o(645),i="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=E,t.SlowBuffer=function(e){+e!=e&&(e=0);return E.alloc(+e)},t.INSPECT_MAX_BYTES=50;const r=2147483647;function s(e){if(e>r)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,E.prototype),t}function E(e,t,o){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return l(e)}return _(e,t,o)}function _(e,t,o){if("string"==typeof e)return(function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!E.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const o=0|c(e,t);let a=s(o);const n=a.write(e,t);n!==o&&(a=a.slice(0,n));return a})(e,t);if(ArrayBuffer.isView(e))return(function(e){if(X(e,Uint8Array)){const t=new Uint8Array(e);return u(t.buffer,t.byteOffset,t.byteLength)}return S(e)})(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(X(e,ArrayBuffer)||e&&X(e.buffer,ArrayBuffer))return u(e,t,o);if("undefined"!=typeof SharedArrayBuffer&&(X(e,SharedArrayBuffer)||e&&X(e.buffer,SharedArrayBuffer)))return u(e,t,o);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const a=e.valueOf&&e.valueOf();if(null!=a&&a!==e)return E.from(a,t,o);const n=(function(e){if(E.isBuffer(e)){const t=0|d(e.length),o=s(t);return 0===o.length||e.copy(o,0,0,t),o}if(void 0!==e.length)return"number"!=typeof e.length||$(e.length)?s(0):S(e);if("Buffer"===e.type&&Array.isArray(e.data))return S(e.data)})(e);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return E.from(e[Symbol.toPrimitive]("string"),t,o);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function T(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function l(e){return T(e),s(e<0?0:0|d(e))}function S(e){const t=e.length<0?0:0|d(e.length),o=s(t);for(let a=0;a=r)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r.toString(16)+" bytes");return 0|e}function c(e,t){if(E.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||X(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const o=e.length,a=arguments.length>2&&!0===arguments[2];if(!a&&0===o)return 0;let n=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return o;case"utf8":case"utf-8":return K(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*o;case"hex":return o>>>1;case"base64":return j(e).length;default:if(n)return a?-1:K(e).length;t=(""+t).toLowerCase(),n=!0}}function A(e,t,o){let a=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===o||o>this.length)&&(o=this.length),o<=0)return"";if((o>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,o);case"utf8":case"utf-8":return C(this,t,o);case"ascii":return g(this,t,o);case"latin1":case"binary":return v(this,t,o);case"base64":return f(this,t,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return y(this,t,o);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}function I(e,t,o){const a=e[t];e[t]=e[o],e[o]=a}function O(e,t,o,a,n){if(0===e.length)return-1;if("string"==typeof o?(a=o,o=0):o>2147483647?o=2147483647:o<-2147483648&&(o=-2147483648),$(o=+o)&&(o=n?0:e.length-1),o<0&&(o=e.length+o),o>=e.length){if(n)return-1;o=e.length-1}else if(o<0){if(!n)return-1;o=0}if("string"==typeof t&&(t=E.from(t,a)),E.isBuffer(t))return 0===t.length?-1:N(e,t,o,a,n);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(e,t,o):Uint8Array.prototype.lastIndexOf.call(e,t,o):N(e,[t],o,a,n);throw new TypeError("val must be string, number or Buffer")}function N(e,t,o,a,n){let i,r=1,s=e.length,E=t.length;if(void 0!==a&&("ucs2"===(a=String(a).toLowerCase())||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(e.length<2||t.length<2)return-1;r=2,s/=2,E/=2,o/=2}function _(e,t){return 1===r?e[t]:e.readUInt16BE(t*r)}if(n){let a=-1;for(i=o;is&&(o=s-E),i=o;i>=0;i--){let o=!0;for(let a=0;an&&(a=n):a=n;const i=t.length;let r;for(a>i/2&&(a=i/2),r=0;r>8,n=o%256,i.push(n),i.push(a);return i})(t,e.length-o),e,o,a)}function f(e,t,o){return 0===t&&o===e.length?a.fromByteArray(e):a.fromByteArray(e.slice(t,o))}function C(e,t,o){o=Math.min(e.length,o);const a=[];let n=t;for(;n239?4:t>223?3:t>191?2:1;if(n+r<=o){let o,a,s,E;switch(r){case 1:t<128&&(i=t);break;case 2:o=e[n+1],128==(192&o)&&(E=(31&t)<<6|63&o,E>127&&(i=E));break;case 3:o=e[n+1],a=e[n+2],128==(192&o)&&128==(192&a)&&(E=(15&t)<<12|(63&o)<<6|63&a,E>2047&&(E<55296||E>57343)&&(i=E));break;case 4:o=e[n+1],a=e[n+2],s=e[n+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(E=(15&t)<<18|(63&o)<<12|(63&a)<<6|63&s,E>65535&&E<1114112&&(i=E))}}null===i?(i=65533,r=1):i>65535&&(i-=65536,a.push(i>>>10&1023|55296),i=56320|1023&i),a.push(i),n+=r}return(function(e){const t=e.length;if(t<=D)return String.fromCharCode.apply(String,e);let o="",a=0;for(;aa.length?(E.isBuffer(t)||(t=E.from(t)),t.copy(a,n)):Uint8Array.prototype.set.call(a,t,n);else{if(!E.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(a,n)}n+=t.length}return a},E.byteLength=c,E.prototype._isBuffer=!0,E.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;to&&(e+=" ... "),""},i&&(E.prototype[i]=E.prototype.inspect),E.prototype.compare=function(e,t,o,a,n){if(X(e,Uint8Array)&&(e=E.from(e,e.offset,e.byteLength)),!E.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===o&&(o=e?e.length:0),void 0===a&&(a=0),void 0===n&&(n=this.length),t<0||o>e.length||a<0||n>this.length)throw new RangeError("out of range index");if(a>=n&&t>=o)return 0;if(a>=n)return-1;if(t>=o)return 1;if(this===e)return 0;let i=(n>>>=0)-(a>>>=0),r=(o>>>=0)-(t>>>=0);const s=Math.min(i,r),_=this.slice(a,n),T=e.slice(t,o);for(let e=0;e>>=0,isFinite(o)?(o>>>=0,void 0===a&&(a="utf8")):(a=o,o=void 0)}const n=this.length-t;if((void 0===o||o>n)&&(o=n),e.length>0&&(o<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");let i=!1;for(;;)switch(a){case"hex":return R(this,e,t,o);case"utf8":case"utf-8":return m(this,e,t,o);case"ascii":case"latin1":case"binary":return p(this,e,t,o);case"base64":return h(this,e,t,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,e,t,o);default:if(i)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),i=!0}},E.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const D=4096;function g(e,t,o){let a="";o=Math.min(e.length,o);for(let n=t;na)&&(o=a);let n="";for(let a=t;ao)throw new RangeError("Trying to access beyond buffer length")}function b(e,t,o,a,n,i){if(!E.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||te.length)throw new RangeError("Index out of range")}function M(e,t,o,a,n){V(t,a,n,e,o,7);let i=Number(t&BigInt(4294967295));e[o++]=i,i>>=8,e[o++]=i,i>>=8,e[o++]=i,i>>=8,e[o++]=i;let r=Number(t>>BigInt(32)&BigInt(4294967295));return e[o++]=r,r>>=8,e[o++]=r,r>>=8,e[o++]=r,r>>=8,e[o++]=r,o}function U(e,t,o,a,n){V(t,a,n,e,o,7);let i=Number(t&BigInt(4294967295));e[o+7]=i,i>>=8,e[o+6]=i,i>>=8,e[o+5]=i,i>>=8,e[o+4]=i;let r=Number(t>>BigInt(32)&BigInt(4294967295));return e[o+3]=r,r>>=8,e[o+2]=r,r>>=8,e[o+1]=r,r>>=8,e[o]=r,o+8}function W(e,t,o,a,n,i){if(o+a>e.length)throw new RangeError("Index out of range");if(o<0)throw new RangeError("Index out of range")}function G(e,t,o,a,i){return t=+t,o>>>=0,i||W(e,0,o,4),n.write(e,t,o,a,23,4),o+4}function F(e,t,o,a,i){return t=+t,o>>>=0,i||W(e,0,o,8),n.write(e,t,o,a,52,8),o+8}E.prototype.slice=function(e,t){const o=this.length;(e=~~e)<0?(e+=o)<0&&(e=0):e>o&&(e=o),(t=void 0===t?o:~~t)<0?(t+=o)<0&&(t=0):t>o&&(t=o),t>>=0,t>>>=0,o||B(e,t,this.length);let a=this[e],n=1,i=0;for(;++i>>=0,t>>>=0,o||B(e,t,this.length);let a=this[e+--t],n=1;for(;t>0&&(n*=256);)a+=this[e+--t]*n;return a},E.prototype.readUint8=E.prototype.readUInt8=function(e,t){return e>>>=0,t||B(e,1,this.length),this[e]},E.prototype.readUint16LE=E.prototype.readUInt16LE=function(e,t){return e>>>=0,t||B(e,2,this.length),this[e]|this[e+1]<<8},E.prototype.readUint16BE=E.prototype.readUInt16BE=function(e,t){return e>>>=0,t||B(e,2,this.length),this[e]<<8|this[e+1]},E.prototype.readUint32LE=E.prototype.readUInt32LE=function(e,t){return e>>>=0,t||B(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},E.prototype.readUint32BE=E.prototype.readUInt32BE=function(e,t){return e>>>=0,t||B(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},E.prototype.readBigUInt64LE=J((function(e){Y(e>>>=0,"offset");const t=this[e],o=this[e+7];void 0!==t&&void 0!==o||z(e,this.length-8);const a=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,n=this[++e]+256*this[++e]+65536*this[++e]+o*2**24;return BigInt(a)+(BigInt(n)<>>=0,"offset");const t=this[e],o=this[e+7];void 0!==t&&void 0!==o||z(e,this.length-8);const a=t*2**24+65536*this[++e]+256*this[++e]+this[++e],n=this[++e]*2**24+65536*this[++e]+256*this[++e]+o;return(BigInt(a)<>>=0,t>>>=0,o||B(e,t,this.length);let a=this[e],n=1,i=0;for(;++i=n&&(a-=Math.pow(2,8*t)),a},E.prototype.readIntBE=function(e,t,o){e>>>=0,t>>>=0,o||B(e,t,this.length);let a=t,n=1,i=this[e+--a];for(;a>0&&(n*=256);)i+=this[e+--a]*n;return n*=128,i>=n&&(i-=Math.pow(2,8*t)),i},E.prototype.readInt8=function(e,t){return e>>>=0,t||B(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},E.prototype.readInt16LE=function(e,t){e>>>=0,t||B(e,2,this.length);const o=this[e]|this[e+1]<<8;return 32768&o?4294901760|o:o},E.prototype.readInt16BE=function(e,t){e>>>=0,t||B(e,2,this.length);const o=this[e+1]|this[e]<<8;return 32768&o?4294901760|o:o},E.prototype.readInt32LE=function(e,t){return e>>>=0,t||B(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},E.prototype.readInt32BE=function(e,t){return e>>>=0,t||B(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},E.prototype.readBigInt64LE=J((function(e){Y(e>>>=0,"offset");const t=this[e],o=this[e+7];void 0!==t&&void 0!==o||z(e,this.length-8);const a=this[e+4]+256*this[e+5]+65536*this[e+6]+(o<<24);return(BigInt(a)<>>=0,"offset");const t=this[e],o=this[e+7];void 0!==t&&void 0!==o||z(e,this.length-8);const a=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(a)<>>=0,t||B(e,4,this.length),n.read(this,e,!0,23,4)},E.prototype.readFloatBE=function(e,t){return e>>>=0,t||B(e,4,this.length),n.read(this,e,!1,23,4)},E.prototype.readDoubleLE=function(e,t){return e>>>=0,t||B(e,8,this.length),n.read(this,e,!0,52,8)},E.prototype.readDoubleBE=function(e,t){return e>>>=0,t||B(e,8,this.length),n.read(this,e,!1,52,8)},E.prototype.writeUintLE=E.prototype.writeUIntLE=function(e,t,o,a){if(e=+e,t>>>=0,o>>>=0,!a){b(this,e,t,o,Math.pow(2,8*o)-1,0)}let n=1,i=0;for(this[t]=255&e;++i>>=0,o>>>=0,!a){b(this,e,t,o,Math.pow(2,8*o)-1,0)}let n=o-1,i=1;for(this[t+n]=255&e;--n>=0&&(i*=256);)this[t+n]=e/i&255;return t+o},E.prototype.writeUint8=E.prototype.writeUInt8=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,1,255,0),this[t]=255&e,t+1},E.prototype.writeUint16LE=E.prototype.writeUInt16LE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},E.prototype.writeUint16BE=E.prototype.writeUInt16BE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},E.prototype.writeUint32LE=E.prototype.writeUInt32LE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},E.prototype.writeUint32BE=E.prototype.writeUInt32BE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},E.prototype.writeBigUInt64LE=J((function(e,t=0){return M(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),E.prototype.writeBigUInt64BE=J((function(e,t=0){return U(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),E.prototype.writeIntLE=function(e,t,o,a){if(e=+e,t>>>=0,!a){const a=Math.pow(2,8*o-1);b(this,e,t,o,a-1,-a)}let n=0,i=1,r=0;for(this[t]=255&e;++n>0)-r&255;return t+o},E.prototype.writeIntBE=function(e,t,o,a){if(e=+e,t>>>=0,!a){const a=Math.pow(2,8*o-1);b(this,e,t,o,a-1,-a)}let n=o-1,i=1,r=0;for(this[t+n]=255&e;--n>=0&&(i*=256);)e<0&&0===r&&0!==this[t+n+1]&&(r=1),this[t+n]=(e/i>>0)-r&255;return t+o},E.prototype.writeInt8=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},E.prototype.writeInt16LE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},E.prototype.writeInt16BE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},E.prototype.writeInt32LE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},E.prototype.writeInt32BE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},E.prototype.writeBigInt64LE=J((function(e,t=0){return M(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),E.prototype.writeBigInt64BE=J((function(e,t=0){return U(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),E.prototype.writeFloatLE=function(e,t,o){return G(this,e,t,!0,o)},E.prototype.writeFloatBE=function(e,t,o){return G(this,e,t,!1,o)},E.prototype.writeDoubleLE=function(e,t,o){return F(this,e,t,!0,o)},E.prototype.writeDoubleBE=function(e,t,o){return F(this,e,t,!1,o)},E.prototype.copy=function(e,t,o,a){if(!E.isBuffer(e))throw new TypeError("argument should be a Buffer");if(o||(o=0),a||0===a||(a=this.length),t>=e.length&&(t=e.length),t||(t=0),a>0&&a=this.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),e.length-t>>=0,o=void 0===o?this.length:o>>>0,e||(e=0),"number"==typeof e)for(n=t;n=a+4;o-=3)t=`_${e.slice(o-3,o)}${t}`;return`${e.slice(0,o)}${t}`}function V(e,t,o,a,n,i){if(e>o||e3?0===t||t===BigInt(0)?`>= 0${a} and < 2${a} ** ${8*(i+1)}${a}`:`>= -(2${a} ** ${8*(i+1)-1}${a}) and < 2 ** ${8*(i+1)-1}${a}`:`>= ${t}${a} and <= ${o}${a}`,new k.ERR_OUT_OF_RANGE("value",n,e)}!(function(e,t,o){Y(t,"offset"),void 0!==e[t]&&void 0!==e[t+o]||z(t,e.length-(o+1))})(a,n,i)}function Y(e,t){if("number"!=typeof e)throw new k.ERR_INVALID_ARG_TYPE(t,"number",e)}function z(e,t,o){if(Math.floor(e)!==e)throw Y(e,o),new k.ERR_OUT_OF_RANGE(o||"offset","an integer",e);if(t<0)throw new k.ERR_BUFFER_OUT_OF_BOUNDS;throw new k.ERR_OUT_OF_RANGE(o||"offset",`>= ${o?1:0} and <= ${t}`,e)}w("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),w("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),w("ERR_OUT_OF_RANGE",(function(e,t,o){let a=`The value of "${e}" is out of range.`,n=o;return Number.isInteger(o)&&Math.abs(o)>2**32?n=H(String(o)):"bigint"==typeof o&&(n=String(o),(o>BigInt(2)**BigInt(32)||o<-(BigInt(2)**BigInt(32)))&&(n=H(n)),n+="n"),a+=` It must be ${t}. Received ${n}`,a}),RangeError);const x=/[^+/0-9A-Za-z-_]/g;function K(e,t){let o;t=t||1/0;const a=e.length;let n=null;const i=[];for(let r=0;r55295&&o<57344){if(!n){if(o>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(r+1===a){(t-=3)>-1&&i.push(239,191,189);continue}n=o;continue}if(o<56320){(t-=3)>-1&&i.push(239,191,189),n=o;continue}o=65536+(n-55296<<10|o-56320)}else n&&(t-=3)>-1&&i.push(239,191,189);if(n=null,o<128){if((t-=1)<0)break;i.push(o)}else if(o<2048){if((t-=2)<0)break;i.push(o>>6|192,63&o|128)}else if(o<65536){if((t-=3)<0)break;i.push(o>>12|224,o>>6&63|128,63&o|128)}else{if(!(o<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(o>>18|240,o>>12&63|128,o>>6&63|128,63&o|128)}}return i}function j(e){return a.toByteArray((function(e){if((e=(e=e.split("=")[0]).trim().replace(x,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e})(e))}function Q(e,t,o,a){let n;for(n=0;n=t.length||n>=e.length);++n)t[n+o]=e[n];return n}function X(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function $(e){return e!=e}const q=(function(){const e="0123456789abcdef",t=new Array(256);for(let o=0;o<16;++o){const a=16*o;for(let n=0;n<16;++n)t[a+n]=e[o]+e[n]}return t})();function J(e){return"undefined"==typeof BigInt?Z:e}function Z(){throw new Error("BigInt not supported")}},4184:(e,t)=>{var o;!(function(){"use strict";var a={}.hasOwnProperty;function n(){for(var e=[],t=0;t{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},9818:(e,t,o)=>{var a=o(8874),n=o(1110),i=Object.hasOwnProperty,r=Object.create(null);for(var s in a)i.call(a,s)&&(r[a[s]]=s);var E=e.exports={to:{},get:{}};function _(e,t,o){return Math.min(Math.max(t,e),o)}function T(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}E.get=function(e){var t,o;switch(e.substring(0,3).toLowerCase()){case"hsl":t=E.get.hsl(e),o="hsl";break;case"hwb":t=E.get.hwb(e),o="hwb";break;default:t=E.get.rgb(e),o="rgb"}return t?{model:o,value:t}:null},E.get.rgb=function(e){if(!e)return null;var t,o,n,r=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(n=t[2],t=t[1],o=0;o<3;o++){var s=2*o;r[o]=parseInt(t.slice(s,s+2),16)}n&&(r[3]=parseInt(n,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(n=(t=t[1])[3],o=0;o<3;o++)r[o]=parseInt(t[o]+t[o],16);n&&(r[3]=parseInt(n+n,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(o=0;o<3;o++)r[o]=parseInt(t[o+1],0);t[4]&&(t[5]?r[3]=.01*parseFloat(t[4]):r[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(t=e.match(/^(\w+)$/))?"transparent"===t[1]?[0,0,0,0]:i.call(a,t[1])?((r=a[t[1]])[3]=1,r):null:null;for(o=0;o<3;o++)r[o]=Math.round(2.55*parseFloat(t[o+1]));t[4]&&(t[5]?r[3]=.01*parseFloat(t[4]):r[3]=parseFloat(t[4]))}for(o=0;o<3;o++)r[o]=_(r[o],0,255);return r[3]=_(r[3],0,1),r},E.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var o=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,_(parseFloat(t[2]),0,100),_(parseFloat(t[3]),0,100),_(isNaN(o)?1:o,0,1)]}return null},E.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var o=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,_(parseFloat(t[2]),0,100),_(parseFloat(t[3]),0,100),_(isNaN(o)?1:o,0,1)]}return null},E.to.hex=function(){var e=n(arguments);return"#"+T(e[0])+T(e[1])+T(e[2])+(e[3]<1?T(Math.round(255*e[3])):"")},E.to.rgb=function(){var e=n(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},E.to.rgb.percent=function(){var e=n(arguments),t=Math.round(e[0]/255*100),o=Math.round(e[1]/255*100),a=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+o+"%, "+a+"%)":"rgba("+t+"%, "+o+"%, "+a+"%, "+e[3]+")"},E.to.hsl=function(){var e=n(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},E.to.hwb=function(){var e=n(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},E.to.keyword=function(e){return r[e.slice(0,3)]}},6767:(e,t,o)=>{const a=o(9818),n=o(978),i=["keyword","gray","hex"],r={};for(const e of Object.keys(n))r[[...n[e].labels].sort().join("")]=e;const s={};function E(e,t){if(!(this instanceof E))return new E(e,t);if(t&&t in i&&(t=null),t&&!(t in n))throw new Error("Unknown model: "+t);let o,_;if(null==e)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof E)this.model=e.model,this.color=[...e.color],this.valpha=e.valpha;else if("string"==typeof e){const t=a.get(e);if(null===t)throw new Error("Unable to parse color from string: "+e);this.model=t.model,_=n[this.model].channels,this.color=t.value.slice(0,_),this.valpha="number"==typeof t.value[_]?t.value[_]:1}else if(e.length>0){this.model=t||"rgb",_=n[this.model].channels;const o=Array.prototype.slice.call(e,0,_);this.color=S(o,_),this.valpha="number"==typeof e[_]?e[_]:1}else if("number"==typeof e)this.model="rgb",this.color=[e>>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;const t=Object.keys(e);"alpha"in e&&(t.splice(t.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);const a=t.sort().join("");if(!(a in r))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=r[a];const{labels:i}=n[this.model],s=[];for(o=0;o(e%360+360)%360)),saturationl:T("hsl",1,l(100)),lightness:T("hsl",2,l(100)),saturationv:T("hsv",1,l(100)),value:T("hsv",2,l(100)),chroma:T("hcg",1,l(100)),gray:T("hcg",2,l(100)),white:T("hwb",1,l(100)),wblack:T("hwb",2,l(100)),cyan:T("cmyk",0,l(100)),magenta:T("cmyk",1,l(100)),yellow:T("cmyk",2,l(100)),black:T("cmyk",3,l(100)),x:T("xyz",0,l(95.047)),y:T("xyz",1,l(100)),z:T("xyz",2,l(108.833)),l:T("lab",0,l(100)),a:T("lab",1),b:T("lab",2),keyword(e){return void 0!==e?new E(e):n[this.model].keyword(this.color)},hex(e){return void 0!==e?new E(e):a.to.hex(this.rgb().round().color)},hexa(e){if(void 0!==e)return new E(e);const t=this.rgb().round().color;let o=Math.round(255*this.valpha).toString(16).toUpperCase();return 1===o.length&&(o="0"+o),a.to.hex(t)+o},rgbNumber(){const e=this.rgb().color;return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},luminosity(){const e=this.rgb().color,t=[];for(const[o,a]of e.entries()){const e=a/255;t[o]=e<=.04045?e/12.92:((e+.055)/1.055)**2.4}return.2126*t[0]+.7152*t[1]+.0722*t[2]},contrast(e){const t=this.luminosity(),o=e.luminosity();return t>o?(t+.05)/(o+.05):(o+.05)/(t+.05)},level(e){const t=this.contrast(e);return t>=7?"AAA":t>=4.5?"AA":""},isDark(){const e=this.rgb().color;return(2126*e[0]+7152*e[1]+722*e[2])/1e4<128},isLight(){return!this.isDark()},negate(){const e=this.rgb();for(let t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten(e){const t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken(e){const t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate(e){const t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate(e){const t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten(e){const t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken(e){const t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale(){const e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return E.rgb(t,t,t)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){const t=this.hsl();let o=t.color[0];return o=(o+e)%360,o=o<0?360+o:o,t.color[0]=o,t},mix(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);const o=e.rgb(),a=this.rgb(),n=void 0===t?.5:t,i=2*n-1,r=o.alpha()-a.alpha(),s=((i*r==-1?i:(i+r)/(1+i*r))+1)/2,_=1-s;return E.rgb(s*o.red()+_*a.red(),s*o.green()+_*a.green(),s*o.blue()+_*a.blue(),o.alpha()*n+a.alpha()*(1-n))}};for(const e of Object.keys(n)){if(i.includes(e))continue;const{channels:t}=n[e];E.prototype[e]=function(...t){return this.model===e?new E(this):t.length>0?new E(t,e):new E([...(o=n[this.model][e].raw(this.color),Array.isArray(o)?o:[o]),this.valpha],e);var o},E[e]=function(...o){let a=o[0];return"number"==typeof a&&(a=S(o,t)),new E(a,e)}}function _(e){return function(t){return(function(e,t){return Number(e.toFixed(t))})(t,e)}}function T(e,t,o){e=Array.isArray(e)?e:[e];for(const a of e)(s[a]||(s[a]=[]))[t]=o;return e=e[0],function(a){let n;return void 0!==a?(o&&(a=o(a)),n=this[e](),n.color[t]=a,n):(n=this[e]().color[t],o&&(n=o(n)),n)}}function l(e){return function(t){return Math.max(0,Math.min(e,t))}}function S(e,t){for(let o=0;o{const a=o(8900),n={};for(const e of Object.keys(a))n[a[e]]=e;const i={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};e.exports=i;for(const e of Object.keys(i)){if(!("channels"in i[e]))throw new Error("missing channels property: "+e);if(!("labels"in i[e]))throw new Error("missing channel labels property: "+e);if(i[e].labels.length!==i[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:t,labels:o}=i[e];delete i[e].channels,delete i[e].labels,Object.defineProperty(i[e],"channels",{value:t}),Object.defineProperty(i[e],"labels",{value:o})}i.rgb.hsl=function(e){const t=e[0]/255,o=e[1]/255,a=e[2]/255,n=Math.min(t,o,a),i=Math.max(t,o,a),r=i-n;let s,E;i===n?s=0:t===i?s=(o-a)/r:o===i?s=2+(a-t)/r:a===i&&(s=4+(t-o)/r),s=Math.min(60*s,360),s<0&&(s+=360);const _=(n+i)/2;return E=i===n?0:_<=.5?r/(i+n):r/(2-i-n),[s,100*E,100*_]},i.rgb.hsv=function(e){let t,o,a,n,i;const r=e[0]/255,s=e[1]/255,E=e[2]/255,_=Math.max(r,s,E),T=_-Math.min(r,s,E),l=function(e){return(_-e)/6/T+.5};return 0===T?(n=0,i=0):(i=T/_,t=l(r),o=l(s),a=l(E),r===_?n=a-o:s===_?n=1/3+t-a:E===_&&(n=2/3+o-t),n<0?n+=1:n>1&&(n-=1)),[360*n,100*i,100*_]},i.rgb.hwb=function(e){const t=e[0],o=e[1];let a=e[2];const n=i.rgb.hsl(e)[0],r=1/255*Math.min(t,Math.min(o,a));return a=1-1/255*Math.max(t,Math.max(o,a)),[n,100*r,100*a]},i.rgb.cmyk=function(e){const t=e[0]/255,o=e[1]/255,a=e[2]/255,n=Math.min(1-t,1-o,1-a);return[100*((1-t-n)/(1-n)||0),100*((1-o-n)/(1-n)||0),100*((1-a-n)/(1-n)||0),100*n]},i.rgb.keyword=function(e){const t=n[e];if(t)return t;let o,i=1/0;for(const t of Object.keys(a)){const n=a[t],E=(s=n,((r=e)[0]-s[0])**2+(r[1]-s[1])**2+(r[2]-s[2])**2);E.04045?((t+.055)/1.055)**2.4:t/12.92,o=o>.04045?((o+.055)/1.055)**2.4:o/12.92,a=a>.04045?((a+.055)/1.055)**2.4:a/12.92;return[100*(.4124*t+.3576*o+.1805*a),100*(.2126*t+.7152*o+.0722*a),100*(.0193*t+.1192*o+.9505*a)]},i.rgb.lab=function(e){const t=i.rgb.xyz(e);let o=t[0],a=t[1],n=t[2];o/=95.047,a/=100,n/=108.883,o=o>.008856?o**(1/3):7.787*o+16/116,a=a>.008856?a**(1/3):7.787*a+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;return[116*a-16,500*(o-a),200*(a-n)]},i.hsl.rgb=function(e){const t=e[0]/360,o=e[1]/100,a=e[2]/100;let n,i,r;if(0===o)return r=255*a,[r,r,r];n=a<.5?a*(1+o):a+o-a*o;const s=2*a-n,E=[0,0,0];for(let e=0;e<3;e++)i=t+1/3*-(e-1),i<0&&i++,i>1&&i--,r=6*i<1?s+6*(n-s)*i:2*i<1?n:3*i<2?s+(n-s)*(2/3-i)*6:s,E[e]=255*r;return E},i.hsl.hsv=function(e){const t=e[0];let o=e[1]/100,a=e[2]/100,n=o;const i=Math.max(a,.01);a*=2,o*=a<=1?a:2-a,n*=i<=1?i:2-i;return[t,100*(0===a?2*n/(i+n):2*o/(a+o)),100*((a+o)/2)]},i.hsv.rgb=function(e){const t=e[0]/60,o=e[1]/100;let a=e[2]/100;const n=Math.floor(t)%6,i=t-Math.floor(t),r=255*a*(1-o),s=255*a*(1-o*i),E=255*a*(1-o*(1-i));switch(a*=255,n){case 0:return[a,E,r];case 1:return[s,a,r];case 2:return[r,a,E];case 3:return[r,s,a];case 4:return[E,r,a];case 5:return[a,r,s]}},i.hsv.hsl=function(e){const t=e[0],o=e[1]/100,a=e[2]/100,n=Math.max(a,.01);let i,r;r=(2-o)*a;const s=(2-o)*n;return i=o*n,i/=s<=1?s:2-s,i=i||0,r/=2,[t,100*i,100*r]},i.hwb.rgb=function(e){const t=e[0]/360;let o=e[1]/100,a=e[2]/100;const n=o+a;let i;n>1&&(o/=n,a/=n);const r=Math.floor(6*t),s=1-a;i=6*t-r,0!=(1&r)&&(i=1-i);const E=o+i*(s-o);let _,T,l;switch(r){default:_=s,T=E,l=o;break;case 1:_=E,T=s,l=o;break;case 2:_=o,T=s,l=E;break;case 3:_=o,T=E,l=s;break;case 4:_=E,T=o,l=s;break;case 5:_=s,T=o,l=E}return[255*_,255*T,255*l]},i.cmyk.rgb=function(e){const t=e[0]/100,o=e[1]/100,a=e[2]/100,n=e[3]/100;return[255*(1-Math.min(1,t*(1-n)+n)),255*(1-Math.min(1,o*(1-n)+n)),255*(1-Math.min(1,a*(1-n)+n))]},i.xyz.rgb=function(e){const t=e[0]/100,o=e[1]/100,a=e[2]/100;let n,i,r;return n=3.2406*t+-1.5372*o+-.4986*a,i=-.9689*t+1.8758*o+.0415*a,r=.0557*t+-.204*o+1.057*a,n=n>.0031308?1.055*n**(1/2.4)-.055:12.92*n,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,r=r>.0031308?1.055*r**(1/2.4)-.055:12.92*r,n=Math.min(Math.max(0,n),1),i=Math.min(Math.max(0,i),1),r=Math.min(Math.max(0,r),1),[255*n,255*i,255*r]},i.xyz.lab=function(e){let t=e[0],o=e[1],a=e[2];t/=95.047,o/=100,a/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,o=o>.008856?o**(1/3):7.787*o+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;return[116*o-16,500*(t-o),200*(o-a)]},i.lab.xyz=function(e){let t,o,a;o=(e[0]+16)/116,t=e[1]/500+o,a=o-e[2]/200;const n=o**3,i=t**3,r=a**3;return o=n>.008856?n:(o-16/116)/7.787,t=i>.008856?i:(t-16/116)/7.787,a=r>.008856?r:(a-16/116)/7.787,t*=95.047,o*=100,a*=108.883,[t,o,a]},i.lab.lch=function(e){const t=e[0],o=e[1],a=e[2];let n;n=360*Math.atan2(a,o)/2/Math.PI,n<0&&(n+=360);return[t,Math.sqrt(o*o+a*a),n]},i.lch.lab=function(e){const t=e[0],o=e[1],a=e[2]/360*2*Math.PI;return[t,o*Math.cos(a),o*Math.sin(a)]},i.rgb.ansi16=function(e,t=null){const[o,a,n]=e;let r=null===t?i.rgb.hsv(e)[2]:t;if(r=Math.round(r/50),0===r)return 30;let s=30+(Math.round(n/255)<<2|Math.round(a/255)<<1|Math.round(o/255));return 2===r&&(s+=60),s},i.hsv.ansi16=function(e){return i.rgb.ansi16(i.hsv.rgb(e),e[2])},i.rgb.ansi256=function(e){const t=e[0],o=e[1],a=e[2];if(t===o&&o===a)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;return 16+36*Math.round(t/255*5)+6*Math.round(o/255*5)+Math.round(a/255*5)},i.ansi16.rgb=function(e){let t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const o=.5*(1+~~(e>50));return[(1&t)*o*255,(t>>1&1)*o*255,(t>>2&1)*o*255]},i.ansi256.rgb=function(e){if(e>=232){const t=10*(e-232)+8;return[t,t,t]}let t;e-=16;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},i.rgb.hex=function(e){const t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},i.hex.rgb=function(e){const t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let o=t[0];3===t[0].length&&(o=o.split("").map((e=>e+e)).join(""));const a=parseInt(o,16);return[a>>16&255,a>>8&255,255&a]},i.rgb.hcg=function(e){const t=e[0]/255,o=e[1]/255,a=e[2]/255,n=Math.max(Math.max(t,o),a),i=Math.min(Math.min(t,o),a),r=n-i;let s,E;return s=r<1?i/(1-r):0,E=r<=0?0:n===t?(o-a)/r%6:n===o?2+(a-t)/r:4+(t-o)/r,E/=6,E%=1,[360*E,100*r,100*s]},i.hsl.hcg=function(e){const t=e[1]/100,o=e[2]/100,a=o<.5?2*t*o:2*t*(1-o);let n=0;return a<1&&(n=(o-.5*a)/(1-a)),[e[0],100*a,100*n]},i.hsv.hcg=function(e){const t=e[1]/100,o=e[2]/100,a=t*o;let n=0;return a<1&&(n=(o-a)/(1-a)),[e[0],100*a,100*n]},i.hcg.rgb=function(e){const t=e[0]/360,o=e[1]/100,a=e[2]/100;if(0===o)return[255*a,255*a,255*a];const n=[0,0,0],i=t%1*6,r=i%1,s=1-r;let E=0;switch(Math.floor(i)){case 0:n[0]=1,n[1]=r,n[2]=0;break;case 1:n[0]=s,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=r;break;case 3:n[0]=0,n[1]=s,n[2]=1;break;case 4:n[0]=r,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=s}return E=(1-o)*a,[255*(o*n[0]+E),255*(o*n[1]+E),255*(o*n[2]+E)]},i.hcg.hsv=function(e){const t=e[1]/100,o=t+e[2]/100*(1-t);let a=0;return o>0&&(a=t/o),[e[0],100*a,100*o]},i.hcg.hsl=function(e){const t=e[1]/100,o=e[2]/100*(1-t)+.5*t;let a=0;return o>0&&o<.5?a=t/(2*o):o>=.5&&o<1&&(a=t/(2*(1-o))),[e[0],100*a,100*o]},i.hcg.hwb=function(e){const t=e[1]/100,o=t+e[2]/100*(1-t);return[e[0],100*(o-t),100*(1-o)]},i.hwb.hcg=function(e){const t=e[1]/100,o=1-e[2]/100,a=o-t;let n=0;return a<1&&(n=(o-a)/(1-a)),[e[0],100*a,100*n]},i.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},i.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},i.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},i.gray.hsl=function(e){return[0,0,e[0]]},i.gray.hsv=i.gray.hsl,i.gray.hwb=function(e){return[0,100,e[0]]},i.gray.cmyk=function(e){return[0,0,0,e[0]]},i.gray.lab=function(e){return[e[0],0,0]},i.gray.hex=function(e){const t=255&Math.round(e[0]/100*255),o=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(o.length)+o},i.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},978:(e,t,o)=>{const a=o(2956),n=o(7774),i={};Object.keys(a).forEach((e=>{i[e]={},Object.defineProperty(i[e],"channels",{value:a[e].channels}),Object.defineProperty(i[e],"labels",{value:a[e].labels});const t=n(e);Object.keys(t).forEach((o=>{const a=t[o];i[e][o]=(function(e){const t=function(...t){const o=t[0];if(null==o)return o;o.length>1&&(t=o);const a=e(t);if("object"==typeof a)for(let e=a.length,t=0;t1&&(t=o),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t})(a)}))})),e.exports=i},7774:(e,t,o)=>{const a=o(2956);function n(e){const t=(function(){const e={},t=Object.keys(a);for(let o=t.length,a=0;a{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},2682:e=>{e.exports=function e(t){return Object.freeze(t),Object.getOwnPropertyNames(t).forEach((function(o){!t.hasOwnProperty(o)||null===t[o]||"object"!=typeof t[o]&&"function"!=typeof t[o]||Object.isFrozen(t[o])||e(t[o])})),t}},6729:e=>{"use strict";var t=Object.prototype.hasOwnProperty,o="~";function a(){}function n(e,t,o){this.fn=e,this.context=t,this.once=o||!1}function i(e,t,a,i,r){if("function"!=typeof a)throw new TypeError("The listener must be a function");var s=new n(a,i||e,r),E=o?o+t:t;return e._events[E]?e._events[E].fn?e._events[E]=[e._events[E],s]:e._events[E].push(s):(e._events[E]=s,e._eventsCount++),e}function r(e,t){0==--e._eventsCount?e._events=new a:delete e._events[t]}function s(){this._events=new a,this._eventsCount=0}Object.create&&(a.prototype=Object.create(null),(new a).__proto__||(o=!1)),s.prototype.eventNames=function(){var e,a,n=[];if(0===this._eventsCount)return n;for(a in e=this._events)t.call(e,a)&&n.push(o?a.slice(1):a);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},s.prototype.listeners=function(e){var t=o?o+e:e,a=this._events[t];if(!a)return[];if(a.fn)return[a.fn];for(var n=0,i=a.length,r=new Array(i);n{"use strict";t.Z=function(e){var t={};for(var o in e)e.hasOwnProperty(o)&&s(o)&&(t[o]=e[o]);return t};var a,n=o(2047),i=(a=n)&&a.__esModule?a:{default:a};var r={onCopy:!0,onCut:!0,onPaste:!0,onLoad:!0,onError:!0,onWheel:!0,onScroll:!0,onCompositionEnd:!0,onCompositionStart:!0,onCompositionUpdate:!0,onKeyDown:!0,onKeyPress:!0,onKeyUp:!0,onFocus:!0,onBlur:!0,onChange:!0,onInput:!0,onSubmit:!0,onClick:!0,onContextMenu:!0,onDoubleClick:!0,onDrag:!0,onDragEnd:!0,onDragEnter:!0,onDragExit:!0,onDragLeave:!0,onDragOver:!0,onDragStart:!0,onDrop:!0,onMouseDown:!0,onMouseEnter:!0,onMouseLeave:!0,onMouseMove:!0,onMouseOut:!0,onMouseOver:!0,onMouseUp:!0,onSelect:!0,onTouchCancel:!0,onTouchEnd:!0,onTouchMove:!0,onTouchStart:!0,onAnimationStart:!0,onAnimationEnd:!0,onAnimationIteration:!0,onTransitionEnd:!0};function s(e){return r[e]||i.default[e]||/^(data|aria)-/.test(e)}},542:e=>{var t=e.exports=function(e,o){if(o||(o=16),void 0===e&&(e=128),e<=0)return"0";for(var a=Math.log(Math.pow(2,e))/Math.log(o),n=2;a===1/0;n*=2)a=Math.log(Math.pow(2,e/n))/Math.log(o)*n;var i=a-Math.floor(a),r="";for(n=0;n=Math.pow(2,e)?t(e,o):r};t.rack=function(e,o,a){var n=function(n){var r=0;do{if(r++>10){if(!a)throw new Error("too many ID collisions, use more bits");e+=a}var s=t(e,o)}while(Object.hasOwnProperty.call(i,s));return i[s]=n,s},i=n.hats={};return n.get=function(e){return n.hats[e]},n.set=function(e,t){return n.hats[e]=t,n},n.bits=e||128,n.base=o||16,n}},7631:function(e){var t;"undefined"!=typeof window&&(t=function(){return(function(e){var t={};function o(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(a,n,function(t){return e[t]}.bind(null,n));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="/dist/",o(o.s="./src/hls.ts")})({"./node_modules/eventemitter3/index.js":function(e,t,o){"use strict";var a=Object.prototype.hasOwnProperty,n="~";function i(){}function r(e,t,o){this.fn=e,this.context=t,this.once=o||!1}function s(e,t,o,a,i){if("function"!=typeof o)throw new TypeError("The listener must be a function");var s=new r(o,a||e,i),E=n?n+t:t;return e._events[E]?e._events[E].fn?e._events[E]=[e._events[E],s]:e._events[E].push(s):(e._events[E]=s,e._eventsCount++),e}function E(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function _(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),_.prototype.eventNames=function(){var e,t,o=[];if(0===this._eventsCount)return o;for(t in e=this._events)a.call(e,t)&&o.push(n?t.slice(1):t);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o},_.prototype.listeners=function(e){var t=n?n+e:e,o=this._events[t];if(!o)return[];if(o.fn)return[o.fn];for(var a=0,i=o.length,r=new Array(i);a0}),!1)}e.exports=function(e,t){t=t||{};var n={main:o.m},i=t.all?{main:Object.keys(n.main)}:(function(e,t){for(var o={main:[t]},a={main:[]},n={main:{}};E(o);)for(var i=Object.keys(o),r=0;r=2*l/u||N<=m)){var p,h=Number.POSITIVE_INFINITY;for(p=e.level-1;p>c&&!((h=l*d[p].maxBitrate/(6.4*O))=N)){var L=this.bwEstimator.getEstimate();_.logger.warn("Fragment "+e.sn+(t?" part "+t.index:"")+" of level "+e.level+" is loading too slowly and will cause an underbuffer; aborting and switching to level "+p+"\n Current BW estimate: "+(Object(a.isFiniteNumber)(L)?(L/1024).toFixed(3):"Unknown")+" Kb/s\n Estimated load time for current fragment: "+N.toFixed(3)+" s\n Estimated load time for the next fragment: "+h.toFixed(3)+" s\n Time to underbuffer: "+m.toFixed(3)+" s"),o.nextLoadLevel=p,this.bwEstimator.sample(S,T.loaded),this.clearTimer(),e.loader&&(this.fragCurrent=this.partCurrent=null,e.loader.abort()),o.trigger(i.Events.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:T})}}}}}},S.onFragLoaded=function(e,t){var o=t.frag,n=t.part;if(o.type===E.PlaylistLevelType.MAIN&&Object(a.isFiniteNumber)(o.sn)){var r=n?n.stats:o.stats,s=n?n.duration:o.duration;if(this.clearTimer(),this.lastLoadedFragLevel=o.level,this._nextAutoLevel=-1,this.hls.config.abrMaxWithRealBitrate){var _=this.hls.levels[o.level],T=(_.loaded?_.loaded.bytes:0)+r.loaded,l=(_.loaded?_.loaded.duration:0)+s;_.loaded={bytes:T,duration:l},_.realBitrate=Math.round(8*T/l)}if(o.bitrateTest){var S={stats:r,frag:o,part:n,id:o.type};this.onFragBuffered(i.Events.FRAG_BUFFERED,S)}}},S.onFragBuffered=function(e,t){var o=t.frag,a=t.part,n=a?a.stats:o.stats;if(!n.aborted&&o.type===E.PlaylistLevelType.MAIN&&"initSegment"!==o.sn){var i=n.parsing.end-n.loading.start;this.bwEstimator.sample(i,n.loaded),n.bwEstimate=this.bwEstimator.getEstimate(),o.bitrateTest?this.bitrateTestDelay=i/1e3:this.bitrateTestDelay=0}},S.onError=function(e,t){switch(t.details){case s.ErrorDetails.FRAG_LOAD_ERROR:case s.ErrorDetails.FRAG_LOAD_TIMEOUT:this.clearTimer()}},S.clearTimer=function(){self.clearInterval(this.timer),this.timer=void 0},S.getNextABRAutoLevel=function(){var e=this.fragCurrent,t=this.partCurrent,o=this.hls,a=o.maxAutoLevel,n=o.config,i=o.minAutoLevel,s=o.media,E=t?t.duration:e?e.duration:0,T=s?s.currentTime:0,l=s&&0!==s.playbackRate?Math.abs(s.playbackRate):1,S=this.bwEstimator?this.bwEstimator.getEstimate():n.abrEwmaDefaultEstimate,u=(r.BufferHelper.bufferInfo(s,T,n.maxBufferHole).end-T)/l,d=this.findBestLevel(S,i,a,u,n.abrBandWidthFactor,n.abrBandWidthUpFactor);if(d>=0)return d;_.logger.trace((u?"rebuffering expected":"buffer is empty")+", finding optimal quality level");var c=E?Math.min(E,n.maxStarvationDelay):n.maxStarvationDelay,A=n.abrBandWidthFactor,I=n.abrBandWidthUpFactor;if(!u){var O=this.bitrateTestDelay;O&&(c=(E?Math.min(E,n.maxLoadingDelay):n.maxLoadingDelay)-O,_.logger.trace("bitrate test took "+Math.round(1e3*O)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*c)+" ms"),A=I=1)}return d=this.findBestLevel(S,i,a,u+c,A,I),Math.max(d,0)},S.findBestLevel=function(e,t,o,a,n,i){for(var r,s=this.fragCurrent,E=this.partCurrent,T=this.lastLoadedFragLevel,l=this.hls.levels,S=l[T],u=!(null==S||null===(r=S.details)||void 0===r||!r.live),d=null==S?void 0:S.codecSet,c=E?E.duration:s?s.duration:0,A=o;A>=t;A--){var I=l[A];if(I&&(!d||I.codecSet===d)){var O=I.details,N=(E?null==O?void 0:O.partTarget:null==O?void 0:O.averagetargetduration)||c,R=void 0;R=A<=T?n*e:i*e;var m=l[A].maxBitrate,p=m*N/R;if(_.logger.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: "+A+"/"+Math.round(R)+"/"+m+"/"+N+"/"+a+"/"+p),R>m&&(!p||u&&!this.bitrateTestDelay||p0&&-1===e?(this.log("Override startPosition with lastCurrentTime @"+t.toFixed(3)),e=t,this.state=n.State.IDLE):(this.loadedmetadata=!1,this.state=n.State.WAITING_TRACK),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()},R.doTick=function(){switch(this.state){case n.State.IDLE:this.doTickIdle();break;case n.State.WAITING_TRACK:var t,o=this.levels,a=this.trackId,i=null==o||null===(t=o[a])||void 0===t?void 0:t.details;if(i){if(this.waitForCdnTuneIn(i))break;this.state=n.State.WAITING_INIT_PTS}break;case n.State.FRAG_LOADING_WAITING_RETRY:var s,E=performance.now(),_=this.retryDate;(!_||E>=_||null!==(s=this.media)&&void 0!==s&&s.seeking)&&(this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded(this.trackId),this.state=n.State.IDLE);break;case n.State.WAITING_INIT_PTS:var T=this.waitingData;if(T){var l=T.frag,S=T.part,u=T.cache,c=T.complete;if(void 0!==this.initPTS[l.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=n.State.FRAG_LOADING;var A={frag:l,part:S,payload:u.flush(),networkDetails:null};this._handleFragmentLoadProgress(A),c&&e.prototype._handleFragmentLoadComplete.call(this,A)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log("Waiting fragment cc ("+l.cc+") cancelled because video is at cc "+this.videoTrackCC),this.clearWaitingFragment();else{var I=this.getLoadPosition(),O=r.BufferHelper.bufferInfo(this.mediaBuffer,I,this.config.maxBufferHole);Object(d.fragmentWithinToleranceTest)(O.end,this.config.maxFragLookUpTolerance,l)<0&&(this.log("Waiting fragment cc ("+l.cc+") @ "+l.start+" cancelled because another fragment at "+O.end+" is needed"),this.clearWaitingFragment())}}else this.state=n.State.IDLE}this.onTickEnd()},R.clearWaitingFragment=function(){var e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=n.State.IDLE)},R.resetLoadingState=function(){this.clearWaitingFragment(),e.prototype.resetLoadingState.call(this)},R.onTickEnd=function(){var e=this.media;if(e&&e.readyState){var t=(this.mediaBuffer?this.mediaBuffer:e).buffered;!this.loadedmetadata&&t.length&&(this.loadedmetadata=!0),this.lastCurrentTime=e.currentTime}},R.doTickIdle=function(){var e,t,o=this.hls,a=this.levels,r=this.media,s=this.trackId,E=o.config;if(a&&a[s]&&(r||!this.startFragRequested&&E.startFragPrefetch)){var l=a[s].details;if(!l||l.live&&this.levelLastLoaded!==s||this.waitForCdnTuneIn(l))this.state=n.State.WAITING_TRACK;else{var S=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&S&&(this.bufferFlushed=!1,this.afterBufferFlushed(S,T.ElementaryStreamTypes.AUDIO,_.PlaylistLevelType.AUDIO));var u=this.getFwdBufferInfo(S,_.PlaylistLevelType.AUDIO);if(null!==u){var d=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,_.PlaylistLevelType.MAIN),c=u.len,A=this.getMaxBufferLength(null==d?void 0:d.len),I=this.audioSwitch;if(!(c>=A)||I){if(!I&&this._streamEnded(u,l))return o.trigger(i.Events.BUFFER_EOS,{type:"audio"}),void(this.state=n.State.ENDED);var O=l.fragments[0].start,N=u.end;if(I&&r){var R=this.getLoadPosition();N=R,l.PTSKnown&&RO||u.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),r.currentTime=O+.05)}if(!(d&&N>d.end+l.targetduration)&&(d&&d.len||!u.len)){var m=this.getNextFragment(N,l);m?"identity"!==(null===(e=m.decryptdata)||void 0===e?void 0:e.keyFormat)||null!==(t=m.decryptdata)&&void 0!==t&&t.key?this.loadFragment(m,l,N):this.loadKey(m,l):this.bufferFlushed=!0}}}}}},R.getMaxBufferLength=function(t){var o=e.prototype.getMaxBufferLength.call(this);return t?Math.max(o,t):o},R.onMediaDetaching=function(){this.videoBuffer=null,e.prototype.onMediaDetaching.call(this)},R.onAudioTracksUpdated=function(e,t){var o=t.audioTracks;this.resetTransmuxer(),this.levels=o.map((function(e){return new E.Level(e)}))},R.onAudioTrackSwitching=function(e,t){var o=!!t.url;this.trackId=t.id;var a=this.fragCurrent;null!=a&&a.loader&&a.loader.abort(),this.fragCurrent=null,this.clearWaitingFragment(),o?this.setInterval(100):this.resetTransmuxer(),o?(this.audioSwitch=!0,this.state=n.State.IDLE):this.state=n.State.STOPPED,this.tick()},R.onManifestLoading=function(){this.mainDetails=null,this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=!1},R.onLevelLoaded=function(e,t){this.mainDetails=t.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(i.Events.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)},R.onAudioTrackLoaded=function(e,t){var o;if(null!=this.mainDetails){var a=this.levels,i=t.details,r=t.id;if(a){this.log("Track "+r+" loaded ["+i.startSN+","+i.endSN+"],duration:"+i.totalduration);var s=a[r],E=0;if(i.live||null!==(o=s.details)&&void 0!==o&&o.live){var _=this.mainDetails;if(i.fragments[0]||(i.deltaUpdateFailed=!0),i.deltaUpdateFailed||!_)return;!s.details&&i.hasProgramDateTime&&_.hasProgramDateTime?(Object(c.alignMediaPlaylistByPDT)(i,_),E=i.fragments[0].start):E=this.alignPlaylists(i,s.details)}s.details=i,this.levelLastLoaded=r,this.startFragRequested||!this.mainDetails&&i.live||this.setStartPosition(s.details,E),this.state!==n.State.WAITING_TRACK||this.waitForCdnTuneIn(i)||(this.state=n.State.IDLE),this.tick()}else this.warn("Audio tracks were reset while loading level "+r)}else this.cachedTrackLoadedData=t},R._handleFragmentLoadProgress=function(e){var t,o=e.frag,a=e.part,i=e.payload,r=this.config,s=this.trackId,E=this.levels;if(E){var T=E[s];console.assert(T,"Audio track is defined on fragment load progress");var d=T.details;console.assert(d,"Audio track details are defined on fragment load progress");var c=r.defaultAudioCodec||T.audioCodec||"mp4a.40.2",A=this.transmuxer;A||(A=this.transmuxer=new S.default(this.hls,_.PlaylistLevelType.AUDIO,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));var I=this.initPTS[o.cc],O=null===(t=o.initSegment)||void 0===t?void 0:t.data;if(void 0!==I){var N=a?a.index:-1,R=-1!==N,m=new u.ChunkMetadata(o.level,o.sn,o.stats.chunkCount,i.byteLength,N,R);A.push(i,O,c,"",o,a,d.totalduration,!1,m,I)}else this.log("Unknown video PTS for cc "+o.cc+", waiting for video PTS before demuxing audio frag "+o.sn+" of ["+d.startSN+" ,"+d.endSN+"],track "+s),(this.waitingData=this.waitingData||{frag:o,part:a,cache:new l.default,complete:!1}).cache.push(new Uint8Array(i)),this.waitingVideoCC=this.videoTrackCC,this.state=n.State.WAITING_INIT_PTS}else this.warn("Audio tracks were reset while fragment load was in progress. Fragment "+o.sn+" of level "+o.level+" will not be buffered")},R._handleFragmentLoadComplete=function(t){this.waitingData?this.waitingData.complete=!0:e.prototype._handleFragmentLoadComplete.call(this,t)},R.onBufferReset=function(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1},R.onBufferCreated=function(e,t){var o=t.tracks.audio;o&&(this.mediaBuffer=o.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)},R.onFragBuffered=function(e,t){var o=t.frag,a=t.part;o.type===_.PlaylistLevelType.AUDIO&&(this.fragContextChanged(o)?this.warn("Fragment "+o.sn+(a?" p: "+a.index:"")+" of level "+o.level+" finished buffering, but was aborted. state: "+this.state+", audioSwitch: "+this.audioSwitch):("initSegment"!==o.sn&&(this.fragPrevious=o,this.audioSwitch&&(this.audioSwitch=!1,this.hls.trigger(i.Events.AUDIO_TRACK_SWITCHED,{id:this.trackId}))),this.fragBufferedComplete(o,a)))},R.onError=function(t,o){switch(o.details){case A.ErrorDetails.FRAG_LOAD_ERROR:case A.ErrorDetails.FRAG_LOAD_TIMEOUT:case A.ErrorDetails.KEY_LOAD_ERROR:case A.ErrorDetails.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(_.PlaylistLevelType.AUDIO,o);break;case A.ErrorDetails.AUDIO_TRACK_LOAD_ERROR:case A.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:this.state!==n.State.ERROR&&this.state!==n.State.STOPPED&&(this.state=o.fatal?n.State.ERROR:n.State.IDLE,this.warn(o.details+" while loading frag, switching to "+this.state+" state"));break;case A.ErrorDetails.BUFFER_FULL_ERROR:if("audio"===o.parent&&(this.state===n.State.PARSING||this.state===n.State.PARSED)){var a=!0,i=this.getFwdBufferInfo(this.mediaBuffer,_.PlaylistLevelType.AUDIO);i&&i.len>.5&&(a=!this.reduceMaxBufferLength(i.len)),a&&(this.warn("Buffer full error also media.currentTime is not buffered, flush audio buffer"),this.fragCurrent=null,e.prototype.flushMainBuffer.call(this,0,Number.POSITIVE_INFINITY,"audio")),this.resetLoadingState()}}},R.onBufferFlushed=function(e,t){t.type===T.ElementaryStreamTypes.AUDIO&&(this.bufferFlushed=!0)},R._handleTransmuxComplete=function(e){var t,o="audio",a=this.hls,r=e.remuxResult,s=e.chunkMeta,E=this.getCurrentContext(s);if(!E)return this.warn("The loading context changed while buffering fragment "+s.sn+" of level "+s.level+". This chunk will not be buffered."),void this.resetStartWhenNotLoaded(s.level);var _=E.frag,l=E.part,S=E.level.details,u=r.audio,d=r.text,c=r.id3,A=r.initSegment;if(!this.fragContextChanged(_)&&S){if(this.state=n.State.PARSING,this.audioSwitch&&u&&this.completeAudioSwitch(),null!=A&&A.tracks&&(this._bufferInitSegment(A.tracks,_,s),a.trigger(i.Events.FRAG_PARSING_INIT_SEGMENT,{frag:_,id:o,tracks:A.tracks})),u){var O=u.startPTS,N=u.endPTS,R=u.startDTS,m=u.endDTS;l&&(l.elementaryStreams[T.ElementaryStreamTypes.AUDIO]={startPTS:O,endPTS:N,startDTS:R,endDTS:m}),_.setElementaryStreamInfo(T.ElementaryStreamTypes.AUDIO,O,N,R,m),this.bufferFragmentData(u,_,l,s)}if(null!=c&&null!==(t=c.samples)&&void 0!==t&&t.length){var p=I({id:o,frag:_,details:S},c);a.trigger(i.Events.FRAG_PARSING_METADATA,p)}if(d){var h=I({id:o,frag:_,details:S},d);a.trigger(i.Events.FRAG_PARSING_USERDATA,h)}}},R._bufferInitSegment=function(e,t,o){if(this.state===n.State.PARSING){e.video&&delete e.video;var a=e.audio;if(a){a.levelCodec=a.codec,a.id="audio",this.log("Init audio buffer, container:"+a.container+", codecs[parsed]=["+a.codec+"]"),this.hls.trigger(i.Events.BUFFER_CODECS,e);var r=a.initSegment;if(null!=r&&r.byteLength){var s={type:"audio",frag:t,part:null,chunkMeta:o,parent:t.type,data:r};this.hls.trigger(i.Events.BUFFER_APPENDING,s)}this.tick()}}},R.loadFragment=function(t,o,i){var r=this.fragmentTracker.getState(t);this.fragCurrent=t,(this.audioSwitch||r===s.FragmentState.NOT_LOADED||r===s.FragmentState.PARTIAL)&&("initSegment"===t.sn?this._loadInitSegment(t):o.live&&!Object(a.isFiniteNumber)(this.initPTS[t.cc])?(this.log("Waiting for video PTS in continuity counter "+t.cc+" of live stream before loading audio fragment "+t.sn+" of level "+this.trackId),this.state=n.State.WAITING_INIT_PTS):(this.startFragRequested=!0,e.prototype.loadFragment.call(this,t,o,i)))},R.completeAudioSwitch=function(){var t=this.hls,o=this.media,a=this.trackId;o&&(this.log("Switching audio track : flushing all audio"),e.prototype.flushMainBuffer.call(this,0,Number.POSITIVE_INFINITY,"audio")),this.audioSwitch=!1,t.trigger(i.Events.AUDIO_TRACK_SWITCHED,{id:a})},N})(n.default);t.default=N},"./src/controller/audio-track-controller.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/events.ts"),n=o("./src/errors.ts"),i=o("./src/controller/base-playlist-controller.ts"),r=o("./src/types/loader.ts");function s(e,t){for(var o=0;o=t.length)this.warn("Invalid id passed to audio-track controller");else{this.clearTimer();var o=t[this.trackId];this.log("Now switching to audio-track index "+e);var n=t[e],i=n.id,r=n.groupId,s=void 0===r?"":r,E=n.name,_=n.type,T=n.url;if(this.trackId=e,this.trackName=E,this.selectDefaultTrack=!1,this.hls.trigger(a.Events.AUDIO_TRACK_SWITCHING,{id:i,groupId:s,name:E,type:_,url:T}),!n.details||n.details.live){var l=this.switchParams(n.url,null==o?void 0:o.details);this.loadPlaylist(l)}}},S.selectInitialTrack=function(){var e=this.tracksInGroup;console.assert(e.length,"Initial audio track should be selected when tracks are known");var t=this.trackName,o=this.findTrackId(t)||this.findTrackId();-1!==o?this.setAudioTrack(o):(this.warn("No track found for running audio group-ID: "+this.groupId),this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.AUDIO_TRACK_LOAD_ERROR,fatal:!0}))},S.findTrackId=function(e){for(var t=this.tracksInGroup,o=0;ot.partTarget&&(_+=1)}if(Object(a.isFiniteNumber)(E))return new n.HlsUrlParameters(E,Object(a.isFiniteNumber)(_)?_:void 0,n.HlsSkip.No)}}},t.loadPlaylist=function(e){},t.shouldLoadTrack=function(e){return this.canLoad&&e&&!!e.url&&(!e.details||e.details.live)},t.playlistLoaded=function(e,t,o){var a=this,n=t.details,r=t.stats,s=r.loading.end?Math.max(0,self.performance.now()-r.loading.end):0;if(n.advancedDateTime=Date.now()-s,n.live||null!=o&&o.live){if(n.reloaded(o),o&&this.log("live playlist "+e+" "+(n.advanced?"REFRESHED "+n.lastPartSn+"-"+n.lastPartIndex:"MISSED")),o&&n.fragments.length>0&&Object(i.mergeDetails)(o,n),!this.canLoad||!n.live)return;var E,_=void 0,T=void 0;if(n.canBlockReload&&n.endSN&&n.advanced){var l=this.hls.config.lowLatencyMode,S=n.lastPartSn,u=n.endSN,d=n.lastPartIndex,c=S===u;-1!==d?(_=c?u+1:S,T=c?l?0:d:d+1):_=u+1;var A=n.age,I=A+n.ageHeader,O=Math.min(I-n.partTarget,1.5*n.targetduration);if(O>0){if(o&&O>o.tuneInGoal)this.warn("CDN Tune-in goal increased from: "+o.tuneInGoal+" to: "+O+" with playlist age: "+n.age),O=0;else{var N=Math.floor(O/n.targetduration);_+=N,void 0!==T&&(T+=Math.round(O%n.targetduration/n.partTarget)),this.log("CDN Tune-in age: "+n.ageHeader+"s last advanced "+A.toFixed(2)+"s goal: "+O+" skip sn "+N+" to part "+T)}n.tuneInGoal=O}if(E=this.getDeliveryDirectives(n,t.deliveryDirectives,_,T),l||!c)return void this.loadPlaylist(E)}else E=this.getDeliveryDirectives(n,t.deliveryDirectives,_,T);var R=Object(i.computeReloadInterval)(n,r);void 0!==_&&n.canBlockReload&&(R-=n.partTarget||1),this.log("reload live playlist "+e+" in "+Math.round(R)+" ms"),this.timer=self.setTimeout((function(){return a.loadPlaylist(E)}),R)}else this.clearTimer()},t.getDeliveryDirectives=function(e,t,o,a){var i=Object(n.getSkipValue)(e,o);return null!=t&&t.skip&&e.deltaUpdateFailed&&(o=t.msn,a=t.part,i=n.HlsSkip.No),new n.HlsUrlParameters(o,a,i)},t.retryLoadingOrFail=function(e){var t,o=this,a=this.hls.config,n=this.retryCount-1&&null!==(t=e.context)&&void 0!==t&&t.deliveryDirectives)this.warn("retry playlist loading #"+this.retryCount+' after "'+e.details+'"'),this.loadPlaylist();else{var i=Math.min(Math.pow(2,this.retryCount)*a.levelLoadingRetryDelay,a.levelLoadingMaxRetryTimeout);this.timer=self.setTimeout((function(){return o.loadPlaylist()}),i),this.warn("retry playlist loading #"+this.retryCount+" in "+i+' ms after "'+e.details+'"')}else this.warn('cannot recover from error "'+e.details+'"'),this.clearTimer(),e.fatal=!0;return n},e})()},"./src/controller/base-stream-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"State",(function(){return p})),o.d(t,"default",(function(){return h}));var a=o("./src/polyfills/number.ts"),n=o("./src/task-loop.ts"),i=o("./src/controller/fragment-tracker.ts"),r=o("./src/utils/buffer-helper.ts"),s=o("./src/utils/logger.ts"),E=o("./src/events.ts"),_=o("./src/errors.ts"),T=o("./src/types/transmuxer.ts"),l=o("./src/utils/mp4-tools.ts"),S=o("./src/utils/discontinuities.ts"),u=o("./src/controller/fragment-finders.ts"),d=o("./src/controller/level-helper.ts"),c=o("./src/loader/fragment-loader.ts"),A=o("./src/crypt/decrypter.ts"),I=o("./src/utils/time-ranges.ts"),O=o("./src/types/loader.ts");function N(e,t){for(var o=0;o=t.endSN&&!e.nextStart){var n=t.partList;if(null!=n&&n.length){var s=n[n.length-1];return r.BufferHelper.isBuffered(this.media,s.start+s.duration/2)}var E=a.getState(o);return E===i.FragmentState.PARTIAL||E===i.FragmentState.OK}return!1},C.onMediaAttached=function(e,t){var o=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),o.addEventListener("seeking",this.onvseeking),o.addEventListener("ended",this.onvended);var a=this.config;this.levels&&a.autoStartLoad&&this.state===p.STOPPED&&this.startLoad(a.startPosition)},C.onMediaDetaching=function(){var e=this.media;null!=e&&e.ended&&(this.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),e&&this.onvseeking&&this.onvended&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvended=null),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.fragmentTracker.removeAllFragments(),this.stopLoad()},C.onMediaSeeking=function(){var e=this.config,t=this.fragCurrent,o=this.media,n=this.mediaBuffer,i=this.state,s=o?o.currentTime:0,E=r.BufferHelper.bufferInfo(n||o,s,e.maxBufferHole);if(this.log("media seeking to "+(Object(a.isFiniteNumber)(s)?s.toFixed(3):s)+", state: "+i),i===p.ENDED)this.resetLoadingState();else if(t&&!E.len){var _=e.maxFragLookUpTolerance,T=t.start-_,l=s>t.start+t.duration+_;(s0&&i&&i.key&&i.iv&&"AES-128"===i.method){var r=self.performance.now();return t.decrypter.webCryptoDecrypt(new Uint8Array(n),i.key.buffer,i.iv.buffer).then((function(t){var n=self.performance.now();return a.trigger(E.Events.FRAG_DECRYPTED,{frag:e,payload:t,stats:{tstart:r,tdecrypt:n}}),o.payload=t,o}))}return o})).then((function(o){var a=t.fragCurrent,n=t.hls,i=t.levels;if(!i)throw new Error("init load aborted, missing levels");var r=i[e.level].details;console.assert(r,"Level details are defined when init segment is loaded");var s=e.stats;t.state=p.IDLE,t.fragLoadError=0,e.data=new Uint8Array(o.payload),s.parsing.start=s.buffering.start=self.performance.now(),s.parsing.end=s.buffering.end=self.performance.now(),o.frag===a&&n.trigger(E.Events.FRAG_BUFFERED,{stats:s,frag:a,part:null,id:e.type}),t.tick()})).catch((function(o){t.state!==p.STOPPED&&t.state!==p.ERROR&&(t.warn(o),t.resetFragmentLoading(e))}))},C.fragContextChanged=function(e){var t=this.fragCurrent;return!e||!t||e.level!==t.level||e.sn!==t.sn||e.urlId!==t.urlId},C.fragBufferedComplete=function(e,t){var o=this.mediaBuffer?this.mediaBuffer:this.media;this.log("Buffered "+e.type+" sn: "+e.sn+(t?" part: "+t.index:"")+" of "+("[stream-controller]"===this.logPrefix?"level":"track")+" "+e.level+" "+(o?I.default.toString(r.BufferHelper.getBuffered(o)):"(detached)")),this.state=p.IDLE,o&&(!this.loadedmetadata&&o.buffered.length&&this.fragCurrent===this.fragPrevious&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())},C.seekToStartPos=function(){},C._handleFragmentLoadComplete=function(e){var t=this.transmuxer;if(t){var o=e.frag,a=e.part,n=e.partsLoaded,i=!n||0===n.length||n.some((function(e){return!e})),r=new T.ChunkMetadata(o.level,o.sn,o.stats.chunkCount+1,0,a?a.index:-1,!i);t.flush(r)}},C._handleFragmentLoadProgress=function(e){},C._doFragLoad=function(e,t,o,n){var i=this;if(void 0===o&&(o=null),!this.levels)throw new Error("frag load aborted, missing levels");if(o=Math.max(e.start,o||0),this.config.lowLatencyMode&&t){var r=t.partList;if(r&&n){o>e.end&&t.fragmentHint&&(e=t.fragmentHint);var s=this.getNextPart(r,e,o);if(s>-1){var _=r[s];return this.log("Loading part sn: "+e.sn+" p: "+_.index+" cc: "+e.cc+" of playlist ["+t.startSN+"-"+t.endSN+"] parts [0-"+s+"-"+(r.length-1)+"] "+("[stream-controller]"===this.logPrefix?"level":"track")+": "+e.level+", target: "+parseFloat(o.toFixed(3))),this.nextLoadPosition=_.start+_.duration,this.state=p.FRAG_LOADING,this.hls.trigger(E.Events.FRAG_LOADING,{frag:e,part:r[s],targetBufferTime:o}),this.doFragPartsLoad(e,r,s,n).catch((function(e){return i.handleFragLoadError(e)}))}if(!e.url||this.loadedEndOfParts(r,o))return Promise.resolve(null)}}return this.log("Loading fragment "+e.sn+" cc: "+e.cc+" "+(t?"of ["+t.startSN+"-"+t.endSN+"] ":"")+("[stream-controller]"===this.logPrefix?"level":"track")+": "+e.level+", target: "+parseFloat(o.toFixed(3))),Object(a.isFiniteNumber)(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=p.FRAG_LOADING,this.hls.trigger(E.Events.FRAG_LOADING,{frag:e,targetBufferTime:o}),this.fragmentLoader.load(e,n).catch((function(e){return i.handleFragLoadError(e)}))},C.doFragPartsLoad=function(e,t,o,a){var n=this;return new Promise((function(i,r){var s=[];!(function o(_){var T=t[_];n.fragmentLoader.loadPart(e,T,a).then((function(a){s[T.index]=a;var r=a.part;n.hls.trigger(E.Events.FRAG_LOADED,a);var l=t[_+1];if(!l||l.fragment!==e)return i({frag:e,part:r,partsLoaded:s});o(_+1)})).catch(r)})(o)}))},C.handleFragLoadError=function(e){var t=e.data;return t&&t.details===_.ErrorDetails.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(E.Events.ERROR,t),null},C._handleTransmuxerFlush=function(e){var t=this.getCurrentContext(e);if(t&&this.state===p.PARSING){var o=t.frag,a=t.part,n=t.level,i=self.performance.now();o.stats.parsing.end=i,a&&(a.stats.parsing.end=i),this.updateLevelTiming(o,a,n,e.partial)}else this.fragCurrent||(this.state=p.IDLE)},C.getCurrentContext=function(e){var t=this.levels,o=e.level,a=e.sn,n=e.part;if(!t||!t[o])return this.warn("Levels object was unset while buffering fragment "+a+" of level "+o+". The current chunk will not be buffered."),null;var i=t[o],r=n>-1?Object(d.getPartWith)(i,a,n):null,s=r?r.fragment:Object(d.getFragmentWithSN)(i,a,this.fragCurrent);return s?{frag:s,part:r,level:i}:null},C.bufferFragmentData=function(e,t,o,a){if(e&&this.state===p.PARSING){var n=e.data1,i=e.data2,r=n;if(n&&i&&(r=Object(l.appendUint8Array)(n,i)),r&&r.length){var s={type:e.type,frag:t,part:o,chunkMeta:a,parent:t.type,data:r};this.hls.trigger(E.Events.BUFFER_APPENDING,s),e.dropped&&e.independent&&!o&&this.flushBufferGap(t)}}},C.flushBufferGap=function(e){var t=this.media;if(t)if(r.BufferHelper.isBuffered(t,t.currentTime)){var o=t.currentTime,a=r.BufferHelper.bufferInfo(t,o,0),n=e.duration,i=Math.min(2*this.config.maxFragLookUpTolerance,.25*n),s=Math.max(Math.min(e.start-i,a.end-i),o+i);e.start-s>i&&this.flushMainBuffer(s,e.start)}else this.flushMainBuffer(0,e.start)},C.getFwdBufferInfo=function(e,t){var o=this.config,n=this.getLoadPosition();if(!Object(a.isFiniteNumber)(n))return null;var i=r.BufferHelper.bufferInfo(e,n,o.maxBufferHole);if(0===i.len&&void 0!==i.nextStart){var s=this.fragmentTracker.getBufferedFrag(n,t);if(s&&i.nextStart=o&&(t.maxMaxBufferLength/=2,this.warn("Reduce max buffer length to "+t.maxMaxBufferLength+"s"),!0)},C.getNextFragment=function(e,t){var o=t.fragments,a=o.length;if(!a)return null;var n,i=this.config,r=o[0].start;if(t.live){var s=i.initialLiveManifestSize;if(a-1&&oo.start&&o.loaded},C.getInitialLiveFragment=function(e,t){var o=this.fragPrevious,a=null;if(o){if(e.hasProgramDateTime&&(this.log("Live playlist, switching playlist, load frag with same PDT: "+o.programDateTime),a=Object(u.findFragmentByPDT)(t,o.endProgramDateTime,this.config.maxFragLookUpTolerance)),!a){var n=o.sn+1;if(n>=e.startSN&&n<=e.endSN){var i=t[n-e.startSN];o.cc===i.cc&&(a=i,this.log("Live playlist, switching playlist, load frag with next SN: "+a.sn))}a||(a=Object(u.findFragWithCC)(t,o.cc))&&this.log("Live playlist, switching playlist, load frag with same CC: "+a.sn)}}else{var r=this.hls.liveSyncPosition;null!==r&&(a=this.getFragmentAtPosition(r,this.bitrateTest?e.fragmentEnd:e.edge,e))}return a},C.getFragmentAtPosition=function(e,t,o){var a,n=this.config,r=this.fragPrevious,s=o.fragments,E=o.endSN,_=o.fragmentHint,T=n.maxFragLookUpTolerance,l=!!(n.lowLatencyMode&&o.partList&&_);if(l&&_&&!this.bitrateTest&&(s=s.concat(_),E=_.sn),et-T?0:T;a=Object(u.findFragmentByPTS)(r,s,e,S)}else a=s[s.length-1];if(a){var d=a.sn-o.startSN;if(r&&a.sn===r.sn&&!l&&r&&a.level===r.level){var c=s[d+1];a.sn=i-t.maxFragLookUpTolerance&&n<=r;if(null!==a&&o.duration>a&&(n"+e.startSN+" prev-sn: "+(i?i.sn:"na")+" fragments: "+s),l}return E},C.waitForCdnTuneIn=function(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)},C.setStartPosition=function(e,t){var o=this.startPosition;if(o"+e))}}])&&N(h.prototype,L),f&&N(h,f),Object.defineProperty(h,"prototype",{writable:!1}),n})(n.default)},"./src/controller/buffer-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return u}));var a=o("./src/polyfills/number.ts"),n=o("./src/events.ts"),i=o("./src/utils/logger.ts"),r=o("./src/errors.ts"),s=o("./src/utils/buffer-helper.ts"),E=o("./src/utils/mediasource-helper.ts"),_=o("./src/loader/fragment.ts"),T=o("./src/controller/buffer-operation-queue.ts"),l=Object(E.getMediaSource)(),S=/([ha]vc.)(?:\.[^.,]+)+/,u=(function(){function e(e){var t=this;this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.appendError=0,this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this._onMediaSourceOpen=function(){var e=t.hls,o=t.media,a=t.mediaSource;i.logger.log("[buffer-controller]: Media source opened"),o&&(t.updateMediaElementDuration(),e.trigger(n.Events.MEDIA_ATTACHED,{media:o})),a&&a.removeEventListener("sourceopen",t._onMediaSourceOpen),t.checkPendingTracks()},this._onMediaSourceClose=function(){i.logger.log("[buffer-controller]: Media source closed")},this._onMediaSourceEnded=function(){i.logger.log("[buffer-controller]: Media source ended")},this.hls=e,this._initSourceBuffer(),this.registerListeners()}var t=e.prototype;return t.hasSourceTypes=function(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0},t.destroy=function(){this.unregisterListeners(),this.details=null},t.registerListeners=function(){var e=this.hls;e.on(n.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(n.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(n.Events.BUFFER_RESET,this.onBufferReset,this),e.on(n.Events.BUFFER_APPENDING,this.onBufferAppending,this),e.on(n.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.on(n.Events.BUFFER_EOS,this.onBufferEos,this),e.on(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(n.Events.FRAG_PARSED,this.onFragParsed,this),e.on(n.Events.FRAG_CHANGED,this.onFragChanged,this)},t.unregisterListeners=function(){var e=this.hls;e.off(n.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(n.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(n.Events.BUFFER_RESET,this.onBufferReset,this),e.off(n.Events.BUFFER_APPENDING,this.onBufferAppending,this),e.off(n.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.off(n.Events.BUFFER_EOS,this.onBufferEos,this),e.off(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(n.Events.FRAG_PARSED,this.onFragParsed,this),e.off(n.Events.FRAG_CHANGED,this.onFragChanged,this)},t._initSourceBuffer=function(){this.sourceBuffer={},this.operationQueue=new T.default(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]}},t.onManifestParsed=function(e,t){var o=2;(t.audio&&!t.video||!t.altAudio)&&(o=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=o,this.details=null,i.logger.log(this.bufferCodecEventsExpected+" bufferCodec event(s) expected")},t.onMediaAttaching=function(e,t){var o=this.media=t.media;if(o&&l){var a=this.mediaSource=new l;a.addEventListener("sourceopen",this._onMediaSourceOpen),a.addEventListener("sourceended",this._onMediaSourceEnded),a.addEventListener("sourceclose",this._onMediaSourceClose),o.src=self.URL.createObjectURL(a),this._objectUrl=o.src}},t.onMediaDetaching=function(){var e=this.media,t=this.mediaSource,o=this._objectUrl;if(t){if(i.logger.log("[buffer-controller]: media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){i.logger.warn("[buffer-controller]: onMediaDetaching: "+e.message+" while calling endOfStream")}this.onBufferReset(),t.removeEventListener("sourceopen",this._onMediaSourceOpen),t.removeEventListener("sourceended",this._onMediaSourceEnded),t.removeEventListener("sourceclose",this._onMediaSourceClose),e&&(o&&self.URL.revokeObjectURL(o),e.src===o?(e.removeAttribute("src"),e.load()):i.logger.warn("[buffer-controller]: media.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(n.Events.MEDIA_DETACHED,void 0)},t.onBufferReset=function(){var e=this;this.getSourceBufferTypes().forEach((function(t){var o=e.sourceBuffer[t];try{o&&(e.removeBufferListeners(t),e.mediaSource&&e.mediaSource.removeSourceBuffer(o),e.sourceBuffer[t]=void 0)}catch(e){i.logger.warn("[buffer-controller]: Failed to reset the "+t+" buffer",e)}})),this._initSourceBuffer()},t.onBufferCodecs=function(e,t){var o=this,a=this.getSourceBufferTypes().length;Object.keys(t).forEach((function(e){if(a){var n=o.tracks[e];if(n&&"function"==typeof n.buffer.changeType){var r=t[e],s=r.id,E=r.codec,_=r.levelCodec,T=r.container,l=r.metadata,u=(n.levelCodec||n.codec).replace(S,"$1"),d=(_||E).replace(S,"$1");if(u!==d){var c=T+";codecs="+(_||E);o.appendChangeType(e,c),i.logger.log("[buffer-controller]: switching codec "+u+" to "+d),o.tracks[e]={buffer:n.buffer,codec:E,container:T,levelCodec:_,metadata:l,id:s}}}}else o.pendingTracks[e]=t[e]})),a||(this.bufferCodecEventsExpected=Math.max(this.bufferCodecEventsExpected-1,0),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks())},t.appendChangeType=function(e,t){var o=this,a=this.operationQueue,n={execute:function(){var n=o.sourceBuffer[e];n&&(i.logger.log("[buffer-controller]: changing "+e+" sourceBuffer type to "+t),n.changeType(t)),a.shiftAndExecuteNext(e)},onStart:function(){},onComplete:function(){},onError:function(t){i.logger.warn("[buffer-controller]: Failed to change "+e+" SourceBuffer type",t)}};a.append(n,e)},t.onBufferAppending=function(e,t){var o=this,a=this.hls,E=this.operationQueue,_=this.tracks,T=t.data,l=t.type,S=t.frag,u=t.part,d=t.chunkMeta,c=d.buffering[l],A=self.performance.now();c.start=A;var I=S.stats.buffering,O=u?u.stats.buffering:null;0===I.start&&(I.start=A),O&&0===O.start&&(O.start=A);var N=_.audio,R="audio"===l&&1===d.id&&"audio/mpeg"===(null==N?void 0:N.container),m={execute:function(){if(c.executeStart=self.performance.now(),R){var e=o.sourceBuffer[l];if(e){var t=S.start-e.timestampOffset;Math.abs(t)>=.1&&(i.logger.log("[buffer-controller]: Updating audio SourceBuffer timestampOffset to "+S.start+" (delta: "+t+") sn: "+S.sn+")"),e.timestampOffset=S.start)}}o.appendExecutor(T,l)},onStart:function(){},onComplete:function(){var e=self.performance.now();c.executeEnd=c.end=e,0===I.first&&(I.first=e),O&&0===O.first&&(O.first=e);var t=o.sourceBuffer,a={};for(var i in t)a[i]=s.BufferHelper.getBuffered(t[i]);o.appendError=0,o.hls.trigger(n.Events.BUFFER_APPENDED,{type:l,frag:S,part:u,chunkMeta:d,parent:S.type,timeRanges:a})},onError:function(e){i.logger.error("[buffer-controller]: Error encountered while trying to append to the "+l+" SourceBuffer",e);var t={type:r.ErrorTypes.MEDIA_ERROR,parent:S.type,details:r.ErrorDetails.BUFFER_APPEND_ERROR,err:e,fatal:!1};e.code===DOMException.QUOTA_EXCEEDED_ERR?t.details=r.ErrorDetails.BUFFER_FULL_ERROR:(o.appendError++,t.details=r.ErrorDetails.BUFFER_APPEND_ERROR,o.appendError>a.config.appendErrorMaxRetry&&(i.logger.error("[buffer-controller]: Failed "+a.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),t.fatal=!0,a.stopLoad())),a.trigger(n.Events.ERROR,t)}};E.append(m,l)},t.onBufferFlushing=function(e,t){var o=this,a=this.operationQueue,r=function(e){return{execute:o.removeExecutor.bind(o,e,t.startOffset,t.endOffset),onStart:function(){},onComplete:function(){o.hls.trigger(n.Events.BUFFER_FLUSHED,{type:e})},onError:function(t){i.logger.warn("[buffer-controller]: Failed to remove from "+e+" SourceBuffer",t)}}};t.type?a.append(r(t.type),t.type):this.getSourceBufferTypes().forEach((function(e){a.append(r(e),e)}))},t.onFragParsed=function(e,t){var o=this,a=t.frag,r=t.part,s=[],E=r?r.elementaryStreams:a.elementaryStreams;E[_.ElementaryStreamTypes.AUDIOVIDEO]?s.push("audiovideo"):(E[_.ElementaryStreamTypes.AUDIO]&&s.push("audio"),E[_.ElementaryStreamTypes.VIDEO]&&s.push("video")),0===s.length&&i.logger.warn("Fragments must have at least one ElementaryStreamType set. type: "+a.type+" level: "+a.level+" sn: "+a.sn),this.blockBuffers((function(){var e=self.performance.now();a.stats.buffering.end=e,r&&(r.stats.buffering.end=e);var t=r?r.stats:a.stats;o.hls.trigger(n.Events.FRAG_BUFFERED,{frag:a,part:r,stats:t,id:a.type})}),s)},t.onFragChanged=function(e,t){this.flushBackBuffer()},t.onBufferEos=function(e,t){var o=this;this.getSourceBufferTypes().reduce((function(e,a){var n=o.sourceBuffer[a];return t.type&&t.type!==a||n&&!n.ended&&(n.ended=!0,i.logger.log("[buffer-controller]: "+a+" sourceBuffer now EOS")),e&&!(n&&!n.ended)}),!0)&&this.blockBuffers((function(){var e=o.mediaSource;e&&"open"===e.readyState&&e.endOfStream()}))},t.onLevelUpdated=function(e,t){var o=t.details;o.fragments.length&&(this.details=o,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())},t.flushBackBuffer=function(){var e=this.hls,t=this.details,o=this.media,i=this.sourceBuffer;if(o&&null!==t){var r=this.getSourceBufferTypes();if(r.length){var E=t.live&&null!==e.config.liveBackBufferLength?e.config.liveBackBufferLength:e.config.backBufferLength;if(Object(a.isFiniteNumber)(E)&&!(E<0)){var _=o.currentTime,T=t.levelTargetDuration,l=Math.max(E,T),S=Math.floor(_/T)*T-l;r.forEach((function(o){var a=i[o];if(a){var r=s.BufferHelper.getBuffered(a);r.length>0&&S>r.start(0)&&(e.trigger(n.Events.BACK_BUFFER_REACHED,{bufferEnd:S}),t.live&&e.trigger(n.Events.LIVE_BACK_BUFFER_REACHED,{bufferEnd:S}),e.trigger(n.Events.BUFFER_FLUSHING,{startOffset:0,endOffset:S,type:o}))}}))}}}},t.updateMediaElementDuration=function(){if(this.details&&this.media&&this.mediaSource&&"open"===this.mediaSource.readyState){var e=this.details,t=this.hls,o=this.media,n=this.mediaSource,r=e.fragments[0].start+e.totalduration,s=o.duration,E=Object(a.isFiniteNumber)(n.duration)?n.duration:0;e.live&&t.config.liveDurationInfinity?(i.logger.log("[buffer-controller]: Media Source duration is set to Infinity"),n.duration=1/0,this.updateSeekableRange(e)):(r>E&&r>s||!Object(a.isFiniteNumber)(s))&&(i.logger.log("[buffer-controller]: Updating Media Source duration to "+r.toFixed(3)),n.duration=r)}},t.updateSeekableRange=function(e){var t=this.mediaSource,o=e.fragments;if(o.length&&e.live&&null!=t&&t.setLiveSeekableRange){var a=Math.max(0,o[0].start),n=Math.max(a,a+e.totalduration);t.setLiveSeekableRange(a,n)}},t.checkPendingTracks=function(){var e=this.bufferCodecEventsExpected,t=this.operationQueue,o=this.pendingTracks,a=Object.keys(o).length;if(a&&!e||2===a){this.createSourceBuffers(o),this.pendingTracks={};var i=this.getSourceBufferTypes();if(0===i.length)return void this.hls.trigger(n.Events.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,reason:"could not create source buffer for media codec(s)"});i.forEach((function(e){t.executeNext(e)}))}},t.createSourceBuffers=function(e){var t=this.sourceBuffer,o=this.mediaSource;if(!o)throw Error("createSourceBuffers called when mediaSource was null");var a=0;for(var s in e)if(!t[s]){var E=e[s];if(!E)throw Error("source buffer exists for track "+s+", however track does not");var _=E.levelCodec||E.codec,T=E.container+";codecs="+_;i.logger.log("[buffer-controller]: creating sourceBuffer("+T+")");try{var l=t[s]=o.addSourceBuffer(T),S=s;this.addBufferListener(S,"updatestart",this._onSBUpdateStart),this.addBufferListener(S,"updateend",this._onSBUpdateEnd),this.addBufferListener(S,"error",this._onSBUpdateError),this.tracks[s]={buffer:l,codec:_,container:E.container,levelCodec:E.levelCodec,metadata:E.metadata,id:E.id},a++}catch(e){i.logger.error("[buffer-controller]: error while trying to add sourceBuffer: "+e.message),this.hls.trigger(n.Events.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,mimeType:T})}}a&&this.hls.trigger(n.Events.BUFFER_CREATED,{tracks:this.tracks})},t._onSBUpdateStart=function(e){this.operationQueue.current(e).onStart()},t._onSBUpdateEnd=function(e){var t=this.operationQueue;t.current(e).onComplete(),t.shiftAndExecuteNext(e)},t._onSBUpdateError=function(e,t){i.logger.error("[buffer-controller]: "+e+" SourceBuffer error",t),this.hls.trigger(n.Events.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.BUFFER_APPENDING_ERROR,fatal:!1});var o=this.operationQueue.current(e);o&&o.onError(t)},t.removeExecutor=function(e,t,o){var n=this.media,r=this.mediaSource,s=this.operationQueue,E=this.sourceBuffer[e];if(!n||!r||!E)return i.logger.warn("[buffer-controller]: Attempting to remove from the "+e+" SourceBuffer, but it does not exist"),void s.shiftAndExecuteNext(e);var _=Object(a.isFiniteNumber)(n.duration)?n.duration:1/0,T=Object(a.isFiniteNumber)(r.duration)?r.duration:1/0,l=Math.max(0,t),S=Math.min(o,_,T);S>l?(i.logger.log("[buffer-controller]: Removing ["+l+","+S+"] from the "+e+" SourceBuffer"),console.assert(!E.updating,e+" sourceBuffer must not be updating"),E.remove(l,S)):s.shiftAndExecuteNext(e)},t.appendExecutor=function(e,t){var o=this.operationQueue,a=this.sourceBuffer[t];if(!a)return i.logger.warn("[buffer-controller]: Attempting to append to the "+t+" SourceBuffer, but it does not exist"),void o.shiftAndExecuteNext(t);a.ended=!1,console.assert(!a.updating,t+" sourceBuffer must not be updating"),a.appendBuffer(e)},t.blockBuffers=function(e,t){var o=this;if(void 0===t&&(t=this.getSourceBufferTypes()),!t.length)return i.logger.log("[buffer-controller]: Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);var a=this.operationQueue,n=t.map((function(e){return a.appendBlocker(e)}));Promise.all(n).then((function(){e(),t.forEach((function(e){var t=o.sourceBuffer[e];t&&t.updating||a.shiftAndExecuteNext(e)}))}))},t.getSourceBufferTypes=function(){return Object.keys(this.sourceBuffer)},t.addBufferListener=function(e,t,o){var a=this.sourceBuffer[e];if(a){var n=o.bind(this,e);this.listeners[e].push({event:t,listener:n}),a.addEventListener(t,n)}},t.removeBufferListeners=function(e){var t=this.sourceBuffer[e];t&&this.listeners[e].forEach((function(e){t.removeEventListener(e.event,e.listener)}))},e})()},"./src/controller/buffer-operation-queue.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return n}));var a=o("./src/utils/logger.ts"),n=(function(){function e(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}var t=e.prototype;return t.append=function(e,t){var o=this.queues[t];o.push(e),1===o.length&&this.buffers[t]&&this.executeNext(t)},t.insertAbort=function(e,t){this.queues[t].unshift(e),this.executeNext(t)},t.appendBlocker=function(e){var t,o=new Promise((function(e){t=e})),a={execute:t,onStart:function(){},onComplete:function(){},onError:function(){}};return this.append(a,e),o},t.executeNext=function(e){var t=this.buffers,o=this.queues,n=t[e],i=o[e];if(i.length){var r=i[0];try{r.execute()}catch(t){a.logger.warn("[buffer-operation-queue]: Unhandled exception executing the current operation"),r.onError(t),n&&n.updating||(i.shift(),this.executeNext(e))}}},t.shiftAndExecuteNext=function(e){this.queues[e].shift(),this.executeNext(e)},t.current=function(e){return this.queues[e][0]},e})()},"./src/controller/cap-level-controller.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/events.ts");function n(e,t){for(var o=0;o0&&this.mediaWidth>0){var e=this.hls.levels;if(e.length){var t=this.hls;t.autoLevelCapping=this.getMaxLevel(e.length-1),t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}},r.getMaxLevel=function(t){var o=this,a=this.hls.levels;if(!a.length)return-1;var n=a.filter((function(a,n){return e.isLevelAllowed(n,o.restrictedLevels)&&n<=t}));return this.clientRect=null,e.getMaxLevelByMediaSize(n,this.mediaWidth,this.mediaHeight)},r.startCapping=function(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,this.hls.firstLevel=this.getMaxLevel(this.firstLevel),self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())},r.stopCapping=function(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)},r.getDimensions=function(){if(this.clientRect)return this.clientRect;var e=this.media,t={width:0,height:0};if(e){var o=e.getBoundingClientRect();t.width=o.width,t.height=o.height,t.width||t.height||(t.width=o.right-o.left||e.width||0,t.height=o.bottom-o.top||e.height||0)}return this.clientRect=t,t},e.isLevelAllowed=function(e,t){return void 0===t&&(t=[]),-1===t.indexOf(e)},e.getMaxLevelByMediaSize=function(e,t,o){if(!e||!e.length)return-1;for(var a,n,i=e.length-1,r=0;r=t||s.height>=o)&&(a=s,!(n=e[r+1])||a.width!==n.width||a.height!==n.height)){i=r;break}}return i},t=e,(o=[{key:"mediaWidth",get:function(){return this.getDimensions().width*this.contentScaleFactor}},{key:"mediaHeight",get:function(){return this.getDimensions().height*this.contentScaleFactor}},{key:"contentScaleFactor",get:function(){var e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch(e){}return e}}])&&n(t.prototype,o),i&&n(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e})();t.default=i},"./src/controller/cmcd-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return S}));var a=o("./src/events.ts"),n=o("./src/types/cmcd.ts"),i=o("./src/utils/buffer-helper.ts"),r=o("./src/utils/logger.ts");function s(e,t){for(var o=0;o=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o-1?i+1:a.levels.length;t=a.levels.slice(0,r)}for(var s,E=_(t);!(s=E()).done;){var T=s.value;T.bitrate>o&&(o=T.bitrate)}return o>0?o:NaN},t.getBufferLength=function(e){var t=this.hls.media,o=e===n.CMCDObjectType.AUDIO?this.audioBuffer:this.videoBuffer;return o&&t?1e3*i.BufferHelper.bufferInfo(o,t.currentTime,this.config.maxBufferHole).len:NaN},t.createPlaylistLoader=function(){var e=this.config.pLoader,t=this.applyPlaylistData,o=e||this.config.loader;return(function(){function e(e){this.loader=void 0,this.loader=new o(e)}var a=e.prototype;return a.destroy=function(){this.loader.destroy()},a.abort=function(){this.loader.abort()},a.load=function(e,o,a){t(e),this.loader.load(e,o,a)},E(e,[{key:"stats",get:function(){return this.loader.stats}},{key:"context",get:function(){return this.loader.context}}]),e})()},t.createFragmentLoader=function(){var e=this.config.fLoader,t=this.applyFragmentData,o=e||this.config.loader;return(function(){function e(e){this.loader=void 0,this.loader=new o(e)}var a=e.prototype;return a.destroy=function(){this.loader.destroy()},a.abort=function(){this.loader.abort()},a.load=function(e,o,a){t(e),this.loader.load(e,o,a)},E(e,[{key:"stats",get:function(){return this.loader.stats}},{key:"context",get:function(){return this.loader.context}}]),e})()},e.uuid=function(){var e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)},e.serialize=function(e){for(var t,o=[],a=function(e){return!Number.isNaN(e)&&null!=e&&""!==e&&!1!==e},n=function(e){return Math.round(e)},i=function(e){return 100*n(e/100)},r={br:n,d:n,bl:i,dl:i,mtp:i,nor:function(e){return encodeURIComponent(e)},rtp:i,tb:n},s=_(Object.keys(e||{}).sort());!(t=s()).done;){var E=t.value,T=e[E];if(a(T)&&!("v"===E&&1===T||"pr"==E&&1===T)){var l=r[E];l&&(T=l(T));var S=typeof T,u=void 0;u="ot"===E||"sf"===E||"st"===E?E+"="+T:"boolean"===S?E:"number"===S?E+"="+T:E+"="+JSON.stringify(T),o.push(u)}}return o.join(",")},e.toHeaders=function(t){for(var o={},a=["Object","Request","Session","Status"],n=[{},{},{},{}],i={br:0,d:0,ot:0,tb:0,bl:1,dl:1,mtp:1,nor:1,nrr:1,su:1,cid:2,pr:2,sf:2,sid:2,st:2,v:2,bs:3,rtp:3},r=0,s=Object.keys(t);r3)return void this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0});var _=3-this._requestLicenseFailureCount+1;i.logger.warn("Retrying license request, "+_+" attempts left"),this._requestLicense(o,r)}},_._generateLicenseRequestChallenge=function(e,t){if(e.mediaKeySystemDomain===r.KeySystems.WIDEVINE)return t;throw new Error("unsupported key-system: "+e.mediaKeySystemDomain)},_._requestLicense=function(e,t){i.logger.log("Requesting content license for key-system");var o=this._mediaKeysList[0];if(!o)return i.logger.error("Fatal error: Media is encrypted but no key-system access has been obtained yet"),void this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_NO_ACCESS,fatal:!0});try{var r=this.getLicenseServerUrl(o.mediaKeySystemDomain),s=this._createLicenseXhr(r,e,t);i.logger.log("Sending license request to URL: "+r);var E=this._generateLicenseRequestChallenge(o,e);s.send(E)}catch(e){i.logger.error("Failure requesting DRM license: "+e),this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0})}},_.onMediaAttached=function(e,t){if(this._emeEnabled){var o=t.media;this._media=o,o.addEventListener("encrypted",this._onMediaEncrypted)}},_.onMediaDetached=function(){var e=this._media,t=this._mediaKeysList;e&&(e.removeEventListener("encrypted",this._onMediaEncrypted),this._media=null,this._mediaKeysList=[],Promise.all(t.map((function(e){if(e.mediaKeysSession)return e.mediaKeysSession.close().catch((function(){}))}))).then((function(){return e.setMediaKeys(null)})).catch((function(){})))},_.onManifestParsed=function(e,t){if(this._emeEnabled){var o=t.levels.map((function(e){return e.audioCodec})).filter((function(e){return!!e})),a=t.levels.map((function(e){return e.videoCodec})).filter((function(e){return!!e}));this._attemptKeySystemAccess(r.KeySystems.WIDEVINE,o,a)}},t=e,(o=[{key:"requestMediaKeySystemAccess",get:function(){if(!this._requestMediaKeySystemAccess)throw new Error("No requestMediaKeySystemAccess function configured");return this._requestMediaKeySystemAccess}}])&&s(t.prototype,o),E&&s(t,E),Object.defineProperty(t,"prototype",{writable:!1}),e})();t.default=E},"./src/controller/fps-controller.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/events.ts"),n=o("./src/utils/logger.ts"),i=(function(){function e(e){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=e,this.registerListeners()}var t=e.prototype;return t.setStreamController=function(e){this.streamController=e},t.registerListeners=function(){this.hls.on(a.Events.MEDIA_ATTACHING,this.onMediaAttaching,this)},t.unregisterListeners=function(){this.hls.off(a.Events.MEDIA_ATTACHING,this.onMediaAttaching)},t.destroy=function(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null},t.onMediaAttaching=function(e,t){var o=this.hls.config;if(o.capLevelOnFPSDrop){var a=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=a,a&&"function"==typeof a.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),o.fpsDroppedMonitoringPeriod)}},t.checkFPS=function(e,t,o){var i=performance.now();if(t){if(this.lastTime){var r=i-this.lastTime,s=o-this.lastDroppedFrames,E=t-this.lastDecodedFrames,_=1e3*s/r,T=this.hls;if(T.trigger(a.Events.FPS_DROP,{currentDropped:s,currentDecoded:E,totalDroppedFrames:o}),_>0&&s>T.config.fpsDroppedMonitoringThreshold*E){var l=T.currentLevel;n.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: "+l),l>0&&(-1===T.autoLevelCapping||T.autoLevelCapping>=l)&&(l-=1,T.trigger(a.Events.FPS_DROP_LEVEL_CAPPING,{level:l,droppedLevel:T.currentLevel}),T.autoLevelCapping=l,this.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=o,this.lastDecodedFrames=t}},t.checkFPSInterval=function(){var e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){var t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)},e})();t.default=i},"./src/controller/fragment-finders.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"findFragmentByPDT",(function(){return i})),o.d(t,"findFragmentByPTS",(function(){return r})),o.d(t,"fragmentWithinToleranceTest",(function(){return s})),o.d(t,"pdtWithinToleranceTest",(function(){return E})),o.d(t,"findFragWithCC",(function(){return _}));var a=o("./src/polyfills/number.ts"),n=o("./src/utils/binary-search.ts");function i(e,t,o){if(null===t||!Array.isArray(e)||!e.length||!Object(a.isFiniteNumber)(t))return null;if(t<(e[0].programDateTime||0))return null;if(t>=(e[e.length-1].endProgramDateTime||0))return null;o=o||0;for(var n=0;ne&&o.start?-1:0}function E(e,t,o){var a=1e3*Math.min(t,o.duration+(o.deltaPTS?o.deltaPTS:0));return(o.endProgramDateTime||0)-a>e}function _(e,t){return n.default.search(e,(function(e){return e.cct?-1:0}))}},"./src/controller/fragment-tracker.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"FragmentState",(function(){return a})),o.d(t,"FragmentTracker",(function(){return r}));var a,n=o("./src/events.ts"),i=o("./src/types/loader.ts");!(function(e){e.NOT_LOADED="NOT_LOADED",e.APPENDING="APPENDING",e.PARTIAL="PARTIAL",e.OK="OK"})(a||(a={}));var r=(function(){function e(e){this.activeFragment=null,this.activeParts=null,this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hls=e,this._registerListeners()}var t=e.prototype;return t._registerListeners=function(){var e=this.hls;e.on(n.Events.BUFFER_APPENDED,this.onBufferAppended,this),e.on(n.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.on(n.Events.FRAG_LOADED,this.onFragLoaded,this)},t._unregisterListeners=function(){var e=this.hls;e.off(n.Events.BUFFER_APPENDED,this.onBufferAppended,this),e.off(n.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.off(n.Events.FRAG_LOADED,this.onFragLoaded,this)},t.destroy=function(){this._unregisterListeners(),this.fragments=this.timeRanges=null},t.getAppendedFrag=function(e,t){if(t===i.PlaylistLevelType.MAIN){var o=this.activeFragment,a=this.activeParts;if(!o)return null;if(a)for(var n=a.length;n--;){var r=a[n],s=r?r.end:o.appendedPTS;if(r.start<=e&&void 0!==s&&e<=s)return n>9&&(this.activeParts=a.slice(n-9)),r}else if(o.start<=e&&void 0!==o.appendedPTS&&e<=o.appendedPTS)return o}return this.getBufferedFrag(e,t)},t.getBufferedFrag=function(e,t){for(var o=this.fragments,a=Object.keys(o),n=a.length;n--;){var i=o[a[n]];if((null==i?void 0:i.body.type)===t&&i.buffered){var r=i.body;if(r.start<=e&&e<=r.end)return r}}return null},t.detectEvictedFragments=function(e,t,o){var a=this;Object.keys(this.fragments).forEach((function(n){var i=a.fragments[n];if(i)if(i.buffered){var r=i.range[e];r&&r.time.some((function(e){var o=!a.isTimeBuffered(e.startPTS,e.endPTS,t);return o&&a.removeFragment(i.body),o}))}else i.body.type===o&&a.removeFragment(i.body)}))},t.detectPartialFragments=function(e){var t=this,o=this.timeRanges,a=e.frag,n=e.part;if(o&&"initSegment"!==a.sn){var i=E(a),r=this.fragments[i];r&&(Object.keys(o).forEach((function(e){var i=a.elementaryStreams[e];if(i){var s=o[e],E=null!==n||!0===i.partial;r.range[e]=t.getBufferedTimes(a,n,E,s)}})),r.loaded=null,Object.keys(r.range).length?r.buffered=!0:this.removeFragment(r.body))}},t.fragBuffered=function(e){var t=E(e),o=this.fragments[t];o&&(o.loaded=null,o.buffered=!0)},t.getBufferedTimes=function(e,t,o,a){for(var n={time:[],partial:o},i=t?t.start:e.start,r=t?t.end:e.end,s=e.minEndPTS||r,E=e.maxStartPTS||i,_=0;_=T&&s<=l){n.time.push({startPTS:Math.max(i,a.start(_)),endPTS:Math.min(r,a.end(_))});break}if(iT)n.partial=!0,n.time.push({startPTS:Math.max(i,a.start(_)),endPTS:Math.min(r,a.end(_))});else if(r<=T)break}return n},t.getPartialFragment=function(e){var t,o,a,n=null,i=0,r=this.bufferPadding,E=this.fragments;return Object.keys(E).forEach((function(_){var T=E[_];T&&s(T)&&(o=T.body.start-r,a=T.body.end+r,e>=o&&e<=a&&(t=Math.min(e-o,a-e),i<=t&&(n=T.body,i=t)))})),n},t.getState=function(e){var t=E(e),o=this.fragments[t];return o?o.buffered?s(o)?a.PARTIAL:a.OK:a.APPENDING:a.NOT_LOADED},t.isTimeBuffered=function(e,t,o){for(var a,n,i=0;i=a&&t<=n)return!0;if(t<=a)return!1}return!1},t.onFragLoaded=function(e,t){var o=t.frag,a=t.part;if("initSegment"!==o.sn&&!o.bitrateTest&&!a){var n=E(o);this.fragments[n]={body:o,loaded:t,buffered:!1,range:Object.create(null)}}},t.onBufferAppended=function(e,t){var o=this,a=t.frag,n=t.part,r=t.timeRanges;if(a.type===i.PlaylistLevelType.MAIN)if(this.activeFragment=a,n){var s=this.activeParts;s||(this.activeParts=s=[]),s.push(n)}else this.activeParts=null;this.timeRanges=r,Object.keys(r).forEach((function(e){var t=r[e];if(o.detectEvictedFragments(e,t),!n)for(var i=0;ie&&a.removeFragment(r)}}))},t.removeFragment=function(e){var t=E(e);e.stats.loaded=0,e.clearElementaryStreamInfo(),delete this.fragments[t]},t.removeAllFragments=function(){this.fragments=Object.create(null),this.activeFragment=null,this.activeParts=null},e})();function s(e){var t,o;return e.buffered&&((null===(t=e.range.video)||void 0===t?void 0:t.partial)||(null===(o=e.range.audio)||void 0===o?void 0:o.partial))}function E(e){return e.type+"_"+e.level+"_"+e.urlId+"_"+e.sn}},"./src/controller/gap-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"STALL_MINIMUM_DURATION_MS",(function(){return s})),o.d(t,"MAX_START_GAP_JUMP",(function(){return E})),o.d(t,"SKIP_BUFFER_HOLE_STEP_SECONDS",(function(){return _})),o.d(t,"SKIP_BUFFER_RANGE_START",(function(){return T})),o.d(t,"default",(function(){return l}));var a=o("./src/utils/buffer-helper.ts"),n=o("./src/errors.ts"),i=o("./src/events.ts"),r=o("./src/utils/logger.ts"),s=250,E=2,_=.1,T=.05,l=(function(){function e(e,t,o,a){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=e,this.media=t,this.fragmentTracker=o,this.hls=a}var t=e.prototype;return t.destroy=function(){this.media=null,this.hls=this.fragmentTracker=null},t.poll=function(e,t){var o=this.config,n=this.media,i=this.stalled;if(null!==n){var _=n.currentTime,T=n.seeking,l=this.seeking&&!T,S=!this.seeking&&T;if(this.seeking=T,_===e){if((S||l)&&(this.stalled=null),!(n.paused&&!T||n.ended||0===n.playbackRate)&&a.BufferHelper.getBuffered(n).length){var u=a.BufferHelper.bufferInfo(n,_,0),d=u.len>0,c=u.nextStart||0;if(d||c){if(T){var A=u.len>E,I=!c||t&&t.start<=_||c-_>E&&!this.fragmentTracker.getPartialFragment(_);if(A||I)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var O,N=Math.max(c,u.start||0)-_,R=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,m=(null==R||null===(O=R.details)||void 0===O?void 0:O.live)?2*R.details.targetduration:E;if(N>0&&N<=m)return void this._trySkipBufferHole(null)}var p=self.performance.now();if(null!==i){var h=p-i;if(T||!(h>=s)||(this._reportStall(u),this.media)){var L=a.BufferHelper.bufferInfo(n,_,o.maxBufferHole);this._tryFixBufferStall(L,h)}}else this.stalled=p}}}else if(this.moved=!0,null!==i){if(this.stallReported){var f=self.performance.now()-i;r.logger.warn("playback not stuck anymore @"+_+", after "+Math.round(f)+"ms"),this.stallReported=!1}this.stalled=null,this.nudgeRetry=0}}},t._tryFixBufferStall=function(e,t){var o=this.config,a=this.fragmentTracker,n=this.media;if(null!==n){var i=n.currentTime,s=a.getPartialFragment(i);if(s&&(this._trySkipBufferHole(s)||!this.media))return;e.len>o.maxBufferHole&&t>1e3*o.highBufferWatchdogPeriod&&(r.logger.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}},t._reportStall=function(e){var t=this.hls,o=this.media;!this.stallReported&&o&&(this.stallReported=!0,r.logger.warn("Playback stalling at @"+o.currentTime+" due to low buffer ("+JSON.stringify(e)+")"),t.trigger(i.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!1,buffer:e.len}))},t._trySkipBufferHole=function(e){var t=this.config,o=this.hls,s=this.media;if(null===s)return 0;for(var E=s.currentTime,l=0,S=a.BufferHelper.getBuffered(s),u=0;u=l&&Ea.startDate&&e.push(o),e}),[]).sort((function(e,t){return e.startDate.getTime()-t.startDate.getTime()}))[0];A&&(d=T(A.startDate,I),_=!0)}for(var R,m=Object.keys(a.attr),p=0;p.05&&this.forwardBufferLength>1){var _=Math.min(2,Math.max(1,i)),T=Math.round(2/(1+Math.exp(-.75*s-this.edgeStalled))*20)/20;e.playbackRate=Math.min(_,Math.max(1,T))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}}}}},E.estimateLiveEdge=function(){var e=this.levelDetails;return null===e?null:e.edge+e.age},E.computeLatency=function(){var e=this.estimateLiveEdge();return null===e?null:e-this.currentTime},t=e,(o=[{key:"latency",get:function(){return this._latency||0}},{key:"maxLatency",get:function(){var e=this.config,t=this.levelDetails;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}},{key:"targetLatency",get:function(){var e=this.levelDetails;if(null===e)return null;var t=e.holdBack,o=e.partHoldBack,a=e.targetduration,n=this.config,i=n.liveSyncDuration,r=n.liveSyncDurationCount,s=n.lowLatencyMode,E=this.hls.userConfig,_=s&&o||t;(E.liveSyncDuration||E.liveSyncDurationCount||0===_)&&(_=void 0!==i?i:r*a);var T=a;return _+Math.min(1*this.stallCount,T)}},{key:"liveSyncPosition",get:function(){var e=this.estimateLiveEdge(),t=this.targetLatency,o=this.levelDetails;if(null===e||null===t||null===o)return null;var a=o.edge,n=e-t-this.edgeStalled,i=a-o.totalduration,r=a-(this.config.lowLatencyMode&&o.partTarget||o.targetduration);return Math.min(Math.max(i,n),r)}},{key:"drift",get:function(){var e=this.levelDetails;return null===e?1:e.drift}},{key:"edgeStalled",get:function(){var e=this.levelDetails;if(null===e)return 0;var t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}},{key:"forwardBufferLength",get:function(){var e=this.media,t=this.levelDetails;if(!e||!t)return 0;var o=e.buffered.length;return(o?e.buffered.end(o-1):t.edge)-this.currentTime}}])&&r(t.prototype,o),s&&r(t,s),Object.defineProperty(t,"prototype",{writable:!1}),e})()},"./src/controller/level-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return d}));var a=o("./src/types/level.ts"),n=o("./src/events.ts"),i=o("./src/errors.ts"),r=o("./src/utils/codecs.ts"),s=o("./src/controller/level-helper.ts"),E=o("./src/controller/base-playlist-controller.ts"),_=o("./src/types/loader.ts");function T(){return T=Object.assign?Object.assign.bind():function(e){for(var t=1;t0){o=_[0].bitrate,_.sort((function(e,t){return e.bitrate-t.bitrate})),this._levels=_;for(var I=0;I<_.length;I++)if(_[I].bitrate===o){this._firstLevel=I,this.log("manifest loaded, "+_.length+" level(s) found, first bitrate: "+o);break}var O=A&&!c,N={levels:_,audioTracks:T,subtitleTracks:l,firstLevel:this._firstLevel,stats:t.stats,audio:A,video:c,altAudio:!O&&T.some((function(e){return!!e.url}))};this.hls.trigger(n.Events.MANIFEST_PARSED,N),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}else this.hls.trigger(n.Events.ERROR,{type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,reason:"no level with compatible codecs found in manifest"})},I.onError=function(t,o){var a;if(e.prototype.onError.call(this,t,o),!o.fatal){var n=o.context,r=this._levels[this.currentLevelIndex];if(n&&(n.type===_.PlaylistContextType.AUDIO_TRACK&&r.audioGroupIds&&n.groupId===r.audioGroupIds[r.urlId]||n.type===_.PlaylistContextType.SUBTITLE_TRACK&&r.textGroupIds&&n.groupId===r.textGroupIds[r.urlId]))this.redundantFailover(this.currentLevelIndex);else{var s,E=!1,T=!0;switch(o.details){case i.ErrorDetails.FRAG_LOAD_ERROR:case i.ErrorDetails.FRAG_LOAD_TIMEOUT:case i.ErrorDetails.KEY_LOAD_ERROR:case i.ErrorDetails.KEY_LOAD_TIMEOUT:if(o.frag){var l=o.frag.type===_.PlaylistLevelType.MAIN?o.frag.level:this.currentLevelIndex,S=this._levels[l];S?(S.fragmentError++,S.fragmentError>this.hls.config.fragLoadingMaxRetry&&(s=l)):s=l}break;case i.ErrorDetails.LEVEL_LOAD_ERROR:case i.ErrorDetails.LEVEL_LOAD_TIMEOUT:n&&(n.deliveryDirectives&&(T=!1),s=n.level),E=!0;break;case i.ErrorDetails.REMUX_ALLOC_ERROR:s=null!=(a=o.level)?a:this.currentLevelIndex,E=!0}void 0!==s&&this.recoverLevel(o,s,E,T)}}},I.recoverLevel=function(e,t,o,a){var n=e.details,i=this._levels[t];if(i.loadError++,o){if(!this.retryLoadingOrFail(e))return void(this.currentLevelIndex=-1);e.levelRetry=!0}if(a){var r=i.url.length;if(r>1&&i.loadError-1&&this.currentLevelIndex!==s&&(this.warn(n+": switch to "+s),e.levelRetry=!0,this.hls.nextAutoLevel=s)}}},I.redundantFailover=function(e){var t=this._levels[e],o=t.url.length;if(o>1){var a=(t.urlId+1)%o;this.warn("Switching to redundant URL-id "+a),this._levels.forEach((function(e){e.urlId=a})),this.level=e}},I.onFragLoaded=function(e,t){var o=t.frag;if(void 0!==o&&o.type===_.PlaylistLevelType.MAIN){var a=this._levels[o.level];void 0!==a&&(a.fragmentError=0,a.loadError=0)}},I.onLevelLoaded=function(e,t){var o,a,n=t.level,i=t.details,r=this._levels[n];if(!r)return this.warn("Invalid level index "+n),void(null!==(a=t.deliveryDirectives)&&void 0!==a&&a.skip&&(i.deltaUpdateFailed=!0));n===this.currentLevelIndex?(0===r.fragmentError&&(r.loadError=0,this.retryCount=0),this.playlistLoaded(n,t,r.details)):null!==(o=t.deliveryDirectives)&&void 0!==o&&o.skip&&(i.deltaUpdateFailed=!0)},I.onAudioTrackSwitched=function(e,t){var o=this.hls.levels[this.currentLevelIndex];if(o&&o.audioGroupIds){for(var a=-1,n=this.hls.audioTracks[t.id].groupId,i=0;i0){var a=o.urlId,i=o.url[a];if(e)try{i=e.addDirectives(i)}catch(e){this.warn("Could not construct new URL with HLS Delivery Directives: "+e)}this.log("Attempt loading level index "+t+(e?" at sn "+e.msn+" part "+e.part:"")+" with URL-id "+a+" "+i),this.clearTimer(),this.hls.trigger(n.Events.LEVEL_LOADING,{url:i,level:t,id:a,deliveryDirectives:e||null})}},I.removeLevel=function(e,t){var o=function(e,o){return o!==t},a=this._levels.filter((function(a,n){return n!==e||a.url.length>1&&void 0!==t&&(a.url=a.url.filter(o),a.audioGroupIds&&(a.audioGroupIds=a.audioGroupIds.filter(o)),a.textGroupIds&&(a.textGroupIds=a.textGroupIds.filter(o)),a.urlId=0,!0)})).map((function(e,t){var o=e.details;return null!=o&&o.fragments&&o.fragments.forEach((function(e){e.level=t})),e}));this._levels=a,this.hls.trigger(n.Events.LEVELS_UPDATED,{levels:a})},d=E,(c=[{key:"levels",get:function(){return 0===this._levels.length?null:this._levels}},{key:"level",get:function(){return this.currentLevelIndex},set:function(e){var t,o=this._levels;if(0!==o.length&&(this.currentLevelIndex!==e||null===(t=o[e])||void 0===t||!t.details)){if(e<0||e>=o.length){var a=e<0;if(this.hls.trigger(n.Events.ERROR,{type:i.ErrorTypes.OTHER_ERROR,details:i.ErrorDetails.LEVEL_SWITCH_ERROR,level:e,fatal:a,reason:"invalid level idx"}),a)return;e=Math.min(e,o.length-1)}this.clearTimer();var r=this.currentLevelIndex,s=o[r],E=o[e];this.log("switching to level "+e+" from "+r),this.currentLevelIndex=e;var _=T({},E,{level:e,maxBitrate:E.maxBitrate,uri:E.uri,urlId:E.urlId});delete _._urlId,this.hls.trigger(n.Events.LEVEL_SWITCHING,_);var l=E.details;if(!l||l.live){var S=this.switchParams(E.uri,null==s?void 0:s.details);this.loadPlaylist(S)}}}},{key:"manualLevel",get:function(){return this.manualLevelIndex},set:function(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(e){this._firstLevel=e}},{key:"startLevel",get:function(){if(void 0===this._startLevel){var e=this.hls.config.startLevel;return void 0!==e?e:this._firstLevel}return this._startLevel},set:function(e){this._startLevel=e}},{key:"nextLoadLevel",get:function(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel},set:function(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}}])&&l(d.prototype,c),A&&l(d,A),Object.defineProperty(d,"prototype",{writable:!1}),E})(E.default)},"./src/controller/level-helper.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"addGroupId",(function(){return s})),o.d(t,"assignTrackIdsByGroup",(function(){return E})),o.d(t,"updatePTS",(function(){return _})),o.d(t,"updateFragPTSDTS",(function(){return l})),o.d(t,"mergeDetails",(function(){return S})),o.d(t,"mapPartIntersection",(function(){return u})),o.d(t,"mapFragmentIntersection",(function(){return d})),o.d(t,"adjustSliding",(function(){return c})),o.d(t,"addSliding",(function(){return A})),o.d(t,"computeReloadInterval",(function(){return I})),o.d(t,"getFragmentWithSN",(function(){return O})),o.d(t,"getPartWith",(function(){return N}));var a=o("./src/polyfills/number.ts"),n=o("./src/utils/logger.ts"),i=o("./src/loader/date-range.ts");function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;te.sn?(i=o-e.start,n=e):(i=e.start-o,n=t),n.duration!==i&&(n.duration=i)}else t.sn>e.sn?e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration:t.start=Math.max(e.start-t.duration,0)}function l(e,t,o,i,r,s){i-o<=0&&(n.logger.warn("Fragment should have a positive duration",t),i=o+t.duration,s=r+t.duration);var E=o,_=i,l=t.startPTS,S=t.endPTS;if(Object(a.isFiniteNumber)(l)){var u=Math.abs(l-o);Object(a.isFiniteNumber)(t.deltaPTS)?t.deltaPTS=Math.max(u,t.deltaPTS):t.deltaPTS=u,E=Math.max(o,l),o=Math.min(o,l),r=Math.min(r,t.startDTS),_=Math.min(i,S),i=Math.max(i,S),s=Math.max(s,t.endDTS)}t.duration=i-o;var d=o-t.start;t.appendedPTS=i,t.start=t.startPTS=o,t.maxStartPTS=E,t.startDTS=r,t.endPTS=i,t.minEndPTS=_,t.endDTS=s;var c,A=t.sn;if(!e||Ae.endSN)return 0;var I=A-e.startSN,O=e.fragments;for(O[I]=t,c=I;c>0;c--)T(O[c],O[c-1]);for(c=I;c=0;E--){var _=s[E].initSegment;if(_){o=_;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;var T,S,A,I,O,N=0;if(d(e,t,(function(e,n){e.relurl&&(N=e.cc-n.cc),Object(a.isFiniteNumber)(e.startPTS)&&Object(a.isFiniteNumber)(e.endPTS)&&(n.start=n.startPTS=e.startPTS,n.startDTS=e.startDTS,n.appendedPTS=e.appendedPTS,n.maxStartPTS=e.maxStartPTS,n.endPTS=e.endPTS,n.endDTS=e.endDTS,n.minEndPTS=e.minEndPTS,n.duration=e.endPTS-e.startPTS,n.duration&&(T=n),t.PTSKnown=t.alignedSliding=!0),n.elementaryStreams=e.elementaryStreams,n.loader=e.loader,n.stats=e.stats,n.urlId=e.urlId,e.initSegment&&(n.initSegment=e.initSegment,o=e.initSegment)})),o&&(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((function(e){var t;e.initSegment&&e.initSegment.relurl!==(null===(t=o)||void 0===t?void 0:t.relurl)||(e.initSegment=o)})),t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((function(e){return!e})),t.deltaUpdateFailed){n.logger.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(var R=t.skippedSegments;R--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=(S=e.dateRanges,A=t.dateRanges,I=t.recentlyRemovedDateranges,O=r({},S),I&&I.forEach((function(e){delete O[e]})),Object.keys(A).forEach((function(e){var t=new i.DateRange(A[e].attr,O[e]);t.isValid?O[e]=t:n.logger.warn('Ignoring invalid Playlist Delta Update DATERANGE tag: "'+JSON.stringify(A[e].attr)+'"')})),O));var m=t.fragments;if(N){n.logger.warn("discontinuity sliding from playlist, take drift into account");for(var p=0;p=a.length||A(t,a[o].start)}function A(e,t){if(t){for(var o=e.fragments,a=e.skippedSegments;a0&&i<3*a,s=t.loading.end-t.loading.start,E=e.availabilityDelay;if(!1===e.updated)if(r){var _=333*e.misses;o=Math.max(Math.min(n,2*s),_),e.availabilityDelay=(e.availabilityDelay||0)+o}else o=n;else r?(E=Math.min(E||a/2,i),e.availabilityDelay=E,o=E+a-i):o=a-s;return Math.round(o)}function O(e,t,o){if(!e||!e.details)return null;var a=e.details,n=a.fragments[t-a.startSN];return n||((n=a.fragmentHint)&&n.sn===t?n:t1?(a=0,this.bitrateTest=!0):a=o.nextAutoLevel),this.level=o.nextLoadLevel=a,this.loadedmetadata=!1}t>0&&-1===e&&(this.log("Override startPosition with lastCurrentTime @"+t.toFixed(3)),e=t),this.state=n.State.IDLE,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=n.State.STOPPED},m.stopLoad=function(){this._forceStartLoad=!1,e.prototype.stopLoad.call(this)},m.doTick=function(){switch(this.state){case n.State.IDLE:this.doTickIdle();break;case n.State.WAITING_LEVEL:var e,t=this.levels,o=this.level,a=null==t||null===(e=t[o])||void 0===e?void 0:e.details;if(a&&(!a.live||this.levelLastLoaded===this.level)){if(this.waitForCdnTuneIn(a))break;this.state=n.State.IDLE;break}break;case n.State.FRAG_LOADING_WAITING_RETRY:var i,r=self.performance.now(),s=this.retryDate;(!s||r>=s||null!==(i=this.media)&&void 0!==i&&i.seeking)&&(this.log("retryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded(this.level),this.state=n.State.IDLE)}this.onTickEnd()},m.onTickEnd=function(){e.prototype.onTickEnd.call(this),this.checkBuffer(),this.checkFragmentChanged()},m.doTickIdle=function(){var e,t,o=this.hls,a=this.levelLastLoaded,i=this.levels,s=this.media,l=o.config,S=o.nextLoadLevel;if(null!==a&&(s||!this.startFragRequested&&l.startFragPrefetch)&&(!this.altAudio||!this.audioOnly)&&i&&i[S]){var u=i[S];this.level=o.nextLoadLevel=S;var d=u.details;if(!d||this.state===n.State.WAITING_LEVEL||d.live&&this.levelLastLoaded!==S)this.state=n.State.WAITING_LEVEL;else{var c=this.getMainFwdBufferInfo();if(null!==c&&!(c.len>=this.getMaxBufferLength(u.maxBitrate))){if(this._streamEnded(c,d)){var A={};return this.altAudio&&(A.type="video"),this.hls.trigger(r.Events.BUFFER_EOS,A),void(this.state=n.State.ENDED)}this.backtrackFragment&&this.backtrackFragment.start>c.end&&(this.backtrackFragment=null);var I=this.backtrackFragment?this.backtrackFragment.start:c.end,O=this.getNextFragment(I,d);if(this.couldBacktrack&&!this.fragPrevious&&O&&"initSegment"!==O.sn&&this.fragmentTracker.getState(O)!==E.FragmentState.OK){var N,R=(null!=(N=this.backtrackFragment)?N:O).sn-d.startSN,m=d.fragments[R-1];m&&O.cc===m.cc&&(O=m,this.fragmentTracker.removeFragment(m))}else this.backtrackFragment&&c.len&&(this.backtrackFragment=null);if(O&&this.fragmentTracker.getState(O)===E.FragmentState.OK&&this.nextLoadPosition>I){var p=this.audioOnly&&!this.altAudio?T.ElementaryStreamTypes.AUDIO:T.ElementaryStreamTypes.VIDEO;s&&this.afterBufferFlushed(s,p,_.PlaylistLevelType.MAIN),O=this.getNextFragment(this.nextLoadPosition,d)}O&&(!O.initSegment||O.initSegment.data||this.bitrateTest||(O=O.initSegment),"identity"!==(null===(e=O.decryptdata)||void 0===e?void 0:e.keyFormat)||null!==(t=O.decryptdata)&&void 0!==t&&t.key?this.loadFragment(O,d,I):this.loadKey(O,d))}}}},m.loadFragment=function(t,o,a){var n,i=this.fragmentTracker.getState(t);this.fragCurrent=t,i===E.FragmentState.NOT_LOADED?"initSegment"===t.sn?this._loadInitSegment(t):this.bitrateTest?(this.log("Fragment "+t.sn+" of level "+t.level+" is being downloaded to test bitrate and will not be buffered"),this._loadBitrateTestFrag(t)):(this.startFragRequested=!0,e.prototype.loadFragment.call(this,t,o,a)):i===E.FragmentState.APPENDING?this.reduceMaxBufferLength(t.duration)&&this.fragmentTracker.removeFragment(t):0===(null===(n=this.media)||void 0===n?void 0:n.buffered.length)&&this.fragmentTracker.removeAllFragments()},m.getAppendedFrag=function(e){var t=this.fragmentTracker.getAppendedFrag(e,_.PlaylistLevelType.MAIN);return t&&"fragment"in t?t.fragment:t},m.getBufferedFrag=function(e){return this.fragmentTracker.getBufferedFrag(e,_.PlaylistLevelType.MAIN)},m.followingBufferedFrag=function(e){return e?this.getBufferedFrag(e.end+.5):null},m.immediateLevelSwitch=function(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)},m.nextLevelSwitch=function(){var e=this.levels,t=this.media;if(null!=t&&t.readyState){var o,a=this.getAppendedFrag(t.currentTime);if(a&&a.start>1&&this.flushMainBuffer(0,a.start-1),!t.paused&&e){var n=e[this.hls.nextLoadLevel],i=this.fragLastKbps;o=i&&this.fragCurrent?this.fragCurrent.duration*n.maxBitrate/(1e3*i)+1:0}else o=0;var r=this.getBufferedFrag(t.currentTime+o);if(r){var s=this.followingBufferedFrag(r);if(s){this.abortCurrentFrag();var E=s.maxStartPTS?s.maxStartPTS:s.start,_=s.duration,T=Math.max(r.end,E+Math.min(Math.max(_-this.config.maxFragLookUpTolerance,.5*_),.75*_));this.flushMainBuffer(T,Number.POSITIVE_INFINITY)}}}},m.abortCurrentFrag=function(){var e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,null!=e&&e.loader&&e.loader.abort(),this.state){case n.State.KEY_LOADING:case n.State.FRAG_LOADING:case n.State.FRAG_LOADING_WAITING_RETRY:case n.State.PARSING:case n.State.PARSED:this.state=n.State.IDLE}this.nextLoadPosition=this.getLoadPosition()},m.flushMainBuffer=function(t,o){e.prototype.flushMainBuffer.call(this,t,o,this.altAudio?"video":null)},m.onMediaAttached=function(t,o){e.prototype.onMediaAttached.call(this,t,o);var a=o.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),a.addEventListener("playing",this.onvplaying),a.addEventListener("seeked",this.onvseeked),this.gapController=new u.default(this.config,a,this.fragmentTracker,this.hls)},m.onMediaDetaching=function(){var t=this.media;t&&this.onvplaying&&this.onvseeked&&(t.removeEventListener("playing",this.onvplaying),t.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),e.prototype.onMediaDetaching.call(this)},m.onMediaPlaying=function(){this.tick()},m.onMediaSeeked=function(){var e=this.media,t=e?e.currentTime:null;Object(a.isFiniteNumber)(t)&&this.log("Media seeked to "+t.toFixed(3)),this.tick()},m.onManifestLoading=function(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(r.Events.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=0,this.fragPlaying=null,this.backtrackFragment=null},m.onManifestParsed=function(e,t){var o,a=!1,n=!1;t.levels.forEach((function(e){(o=e.audioCodec)&&(-1!==o.indexOf("mp4a.40.2")&&(a=!0),-1!==o.indexOf("mp4a.40.5")&&(n=!0))})),this.audioCodecSwitch=a&&n&&!Object(i.changeTypeSupported)(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1},m.onLevelLoading=function(e,t){var o=this.levels;if(o&&this.state===n.State.IDLE){var a=o[t.level];(!a.details||a.details.live&&this.levelLastLoaded!==t.level||this.waitForCdnTuneIn(a.details))&&(this.state=n.State.WAITING_LEVEL)}},m.onLevelLoaded=function(e,t){var o,a=this.levels,i=t.level,s=t.details,E=s.totalduration;if(a){this.log("Level "+i+" loaded ["+s.startSN+","+s.endSN+"], cc ["+s.startCC+", "+s.endCC+"] duration:"+E);var _=this.fragCurrent;!_||this.state!==n.State.FRAG_LOADING&&this.state!==n.State.FRAG_LOADING_WAITING_RETRY||_.level!==t.level&&_.loader&&(this.state=n.State.IDLE,this.backtrackFragment=null,_.loader.abort());var T=a[i],l=0;if(s.live||null!==(o=T.details)&&void 0!==o&&o.live){if(s.fragments[0]||(s.deltaUpdateFailed=!0),s.deltaUpdateFailed)return;l=this.alignPlaylists(s,T.details)}if(T.details=s,this.levelLastLoaded=i,this.hls.trigger(r.Events.LEVEL_UPDATED,{details:s,level:i}),this.state===n.State.WAITING_LEVEL){if(this.waitForCdnTuneIn(s))return;this.state=n.State.IDLE}this.startFragRequested?s.live&&this.synchronizeToLiveEdge(s):this.setStartPosition(s,l),this.tick()}else this.warn("Levels were reset while loading level "+i)},m._handleFragmentLoadProgress=function(e){var t,o=e.frag,a=e.part,n=e.payload,i=this.levels;if(i){var r=i[o.level],s=r.details;if(s){var E=r.videoCodec,T=s.PTSKnown||!s.live,u=null===(t=o.initSegment)||void 0===t?void 0:t.data,d=this._getAudioCodec(r),c=this.transmuxer=this.transmuxer||new l.default(this.hls,_.PlaylistLevelType.MAIN,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),A=a?a.index:-1,I=-1!==A,O=new S.ChunkMetadata(o.level,o.sn,o.stats.chunkCount,n.byteLength,A,I),N=this.initPTS[o.cc];c.push(n,u,d,E,o,a,s.totalduration,T,O,N)}else this.warn("Dropping fragment "+o.sn+" of level "+o.level+" after level details were reset")}else this.warn("Levels were reset while fragment load was in progress. Fragment "+o.sn+" of level "+o.level+" will not be buffered")},m.onAudioTrackSwitching=function(e,t){var o=this.altAudio,a=!!t.url,n=t.id;if(!a){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;var i=this.fragCurrent;null!=i&&i.loader&&(this.log("Switching to main audio track, cancel main fragment load"),i.loader.abort()),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();var s=this.hls;o&&s.trigger(r.Events.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),s.trigger(r.Events.AUDIO_TRACK_SWITCHED,{id:n})}},m.onAudioTrackSwitched=function(e,t){var o=t.id,a=!!this.hls.audioTracks[o].url;if(a){var n=this.videoBuffer;n&&this.mediaBuffer!==n&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=n)}this.altAudio=a,this.tick()},m.onBufferCreated=function(e,t){var o,a,n=t.tracks,i=!1;for(var r in n){var s=n[r];if("main"===s.id){if(a=r,o=s,"video"===r){var E=n[r];E&&(this.videoBuffer=E.buffer)}}else i=!0}i&&o?(this.log("Alternate track found, use "+a+".buffered to schedule main fragment loading"),this.mediaBuffer=o.buffer):this.mediaBuffer=this.media},m.onFragBuffered=function(e,t){var o=t.frag,a=t.part;if(!o||o.type===_.PlaylistLevelType.MAIN){if(this.fragContextChanged(o))return this.warn("Fragment "+o.sn+(a?" p: "+a.index:"")+" of level "+o.level+" finished buffering, but was aborted. state: "+this.state),void(this.state===n.State.PARSED&&(this.state=n.State.IDLE));var i=a?a.stats:o.stats;this.fragLastKbps=Math.round(8*i.total/(i.buffering.end-i.loading.first)),"initSegment"!==o.sn&&(this.fragPrevious=o),this.fragBufferedComplete(o,a)}},m.onError=function(e,t){switch(t.details){case d.ErrorDetails.FRAG_LOAD_ERROR:case d.ErrorDetails.FRAG_LOAD_TIMEOUT:case d.ErrorDetails.KEY_LOAD_ERROR:case d.ErrorDetails.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(_.PlaylistLevelType.MAIN,t);break;case d.ErrorDetails.LEVEL_LOAD_ERROR:case d.ErrorDetails.LEVEL_LOAD_TIMEOUT:this.state!==n.State.ERROR&&(t.fatal?(this.warn(""+t.details),this.state=n.State.ERROR):t.levelRetry||this.state!==n.State.WAITING_LEVEL||(this.state=n.State.IDLE));break;case d.ErrorDetails.BUFFER_FULL_ERROR:if("main"===t.parent&&(this.state===n.State.PARSING||this.state===n.State.PARSED)){var o=!0,a=this.getFwdBufferInfo(this.media,_.PlaylistLevelType.MAIN);if(a&&a.len>.5&&(o=!this.reduceMaxBufferLength(a.len)),o)this.warn("buffer full error also media.currentTime is not buffered, flush main"),this.immediateLevelSwitch();else{var i=this.fragCurrent;this.abortCurrentFrag(),i&&(this.flushMainBuffer(i.start,Number.POSITIVE_INFINITY),this.nextLoadPosition=i.start)}this.resetTransmuxer(),this.resetLoadingState()}}},m.checkBuffer=function(){var e=this.media,t=this.gapController;if(e&&t&&e.readyState){if(this.loadedmetadata||!s.BufferHelper.getBuffered(e).length){var o=this.state!==n.State.IDLE?this.fragCurrent:null;t.poll(this.lastCurrentTime,o)}this.lastCurrentTime=e.currentTime}},m.onFragLoadEmergencyAborted=function(){this.state=n.State.IDLE,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()},m.onBufferFlushed=function(e,t){var o=t.type;if(o!==T.ElementaryStreamTypes.AUDIO||this.audioOnly&&!this.altAudio){var a=(o===T.ElementaryStreamTypes.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(a,o,_.PlaylistLevelType.MAIN)}},m.onLevelsUpdated=function(e,t){this.levels=t.levels},m.swapAudioCodec=function(){this.audioCodecSwap=!this.audioCodecSwap},m.seekToStartPos=function(){var e=this.media;if(e){var t=e.currentTime,o=this.startPosition;if(o>=0&&t0&&(n1&&!1===e.seeking){var o=e.currentTime;if(s.BufferHelper.isBuffered(e,o)?t=this.getAppendedFrag(o):s.BufferHelper.isBuffered(e,o+.1)&&(t=this.getAppendedFrag(o+.1)),t){this.backtrackFragment=null;var a=this.fragPlaying,n=t.level;a&&t.sn===a.sn&&a.level===n&&t.urlId===a.urlId||(this.hls.trigger(r.Events.FRAG_CHANGED,{frag:t}),a&&a.level===n||this.hls.trigger(r.Events.LEVEL_SWITCHED,{level:n}),this.fragPlaying=t)}}},O=I,(N=[{key:"nextLevel",get:function(){var e=this.nextBufferedFrag;return e?e.level:-1}},{key:"currentFrag",get:function(){var e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}},{key:"currentProgramDateTime",get:function(){var e=this.media;if(e){var t=e.currentTime,o=this.currentFrag;if(o&&Object(a.isFiniteNumber)(t)&&Object(a.isFiniteNumber)(o.programDateTime)){var n=o.programDateTime+1e3*(t-o.start);return new Date(n)}}return null}},{key:"currentLevel",get:function(){var e=this.currentFrag;return e?e.level:-1}},{key:"nextBufferedFrag",get:function(){var e=this.currentFrag;return e?this.followingBufferedFrag(e):null}},{key:"forceStartLoad",get:function(){return this._forceStartLoad}}])&&c(O.prototype,N),R&&c(O,R),Object.defineProperty(O,"prototype",{writable:!1}),I})(n.default)},"./src/controller/subtitle-stream-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"SubtitleStreamController",(function(){return d}));var a=o("./src/events.ts"),n=o("./src/utils/buffer-helper.ts"),i=o("./src/controller/fragment-finders.ts"),r=o("./src/utils/discontinuities.ts"),s=o("./src/controller/level-helper.ts"),E=o("./src/controller/fragment-tracker.ts"),_=o("./src/controller/base-stream-controller.ts"),T=o("./src/types/loader.ts"),l=o("./src/types/level.ts");function S(e,t){for(var o=0;o=n[s].start&&r<=n[s].end){i=n[s];break}var E=o.start+o.duration;i?i.end=E:(i={start:r,end:E},n.push(i)),this.fragmentTracker.fragBuffered(o)}}},N.onBufferFlushing=function(e,t){var o=t.startOffset,a=t.endOffset;if(0===o&&a!==Number.POSITIVE_INFINITY){var n=this.currentTrackId,i=this.levels;if(!i.length||!i[n]||!i[n].details)return;var r=a-i[n].details.targetduration;if(r<=0)return;t.endOffsetSubtitles=Math.max(0,r),this.tracksBuffered.forEach((function(e){for(var t=0;t=T.length||n!==E)&&l){if(this.mediaBuffer=this.mediaBufferTimeRanges,a.live||null!==(o=l.details)&&void 0!==o&&o.live){var S=this.mainDetails;if(a.deltaUpdateFailed||!S)return;var u=S.fragments[0];l.details?0===this.alignPlaylists(a,l.details)&&u&&Object(s.addSliding)(a,u.start):a.hasProgramDateTime&&S.hasProgramDateTime?Object(r.alignMediaPlaylistByPDT)(a,S):u&&Object(s.addSliding)(a,u.start)}l.details=a,this.levelLastLoaded=n,this.tick(),a.live&&!this.fragCurrent&&this.media&&this.state===_.State.IDLE&&(Object(i.findFragmentByPTS)(null,a.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),l.details=void 0))}}},N._handleFragmentLoadComplete=function(e){var t=e.frag,o=e.payload,n=t.decryptdata,i=this.hls;if(!this.fragContextChanged(t)&&o&&o.byteLength>0&&n&&n.key&&n.iv&&"AES-128"===n.method){var r=performance.now();this.decrypter.webCryptoDecrypt(new Uint8Array(o),n.key.buffer,n.iv.buffer).then((function(e){var o=performance.now();i.trigger(a.Events.FRAG_DECRYPTED,{frag:t,payload:e,stats:{tstart:r,tdecrypt:o}})}))}},N.doTick=function(){if(this.media){if(this.state===_.State.IDLE){var e=this.currentTrackId,t=this.levels;if(!t.length||!t[e]||!t[e].details)return;var o=t[e].details,a=o.targetduration,r=this.config,s=this.media,T=n.BufferHelper.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],s.currentTime-a,r.maxBufferHole),l=T.end;if(T.len>this.getMaxBufferLength()+a)return;console.assert(o,"Subtitle track details are defined on idle subtitle stream controller tick");var S,u=o.fragments,d=u.length,c=o.edge,A=this.fragPrevious;if(l>>=0)>a-1)throw new DOMException("Failed to execute '"+t+"' on 'TimeRanges': The index provided ("+o+") is greater than the maximum bound ("+a+")");return e[o][t]};this.buffered={get length(){return e.length},end:function(o){return t("end",o,e.length)},start:function(o){return t("start",o,e.length)}}}},"./src/controller/subtitle-track-controller.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/events.ts"),n=o("./src/utils/texttrack-utils.ts"),i=o("./src/controller/base-playlist-controller.ts"),r=o("./src/types/loader.ts");function s(e,t){for(var o=0;o-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))},u.pollTrackChange=function(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.trackChangeListener,e)},u.onMediaDetaching=function(){this.media&&(self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId),T(this.media.textTracks).forEach((function(e){Object(n.clearCurrentCues)(e)})),this.subtitleTrack=-1,this.media=null)},u.onManifestLoading=function(){this.tracks=[],this.groupId=null,this.tracksInGroup=[],this.trackId=-1,this.selectDefaultTrack=!0},u.onManifestParsed=function(e,t){this.tracks=t.subtitleTracks},u.onSubtitleTrackLoaded=function(e,t){var o=t.id,a=t.details,n=this.trackId,i=this.tracksInGroup[n];if(i){var r=i.details;i.details=t.details,this.log("subtitle track "+o+" loaded ["+a.startSN+"-"+a.endSN+"]"),o===this.trackId&&(this.retryCount=0,this.playlistLoaded(o,t,r))}else this.warn("Invalid subtitle track id "+o)},u.onLevelLoading=function(e,t){this.switchLevel(t.level)},u.onLevelSwitching=function(e,t){this.switchLevel(t.level)},u.switchLevel=function(e){var t=this.hls.levels[e];if(null!=t&&t.textGroupIds){var o=t.textGroupIds[t.urlId];if(this.groupId!==o){var n=this.tracksInGroup?this.tracksInGroup[this.trackId]:void 0,i=this.tracks.filter((function(e){return!o||e.groupId===o}));this.tracksInGroup=i;var r=this.findTrackId(null==n?void 0:n.name)||this.findTrackId();this.groupId=o;var s={subtitleTracks:i};this.log("Updating subtitle tracks, "+i.length+' track(s) found in "'+o+'" group-id'),this.hls.trigger(a.Events.SUBTITLE_TRACKS_UPDATED,s),-1!==r&&this.setSubtitleTrack(r,n)}}},u.findTrackId=function(e){for(var t=this.tracksInGroup,o=0;o=n.length)){this.clearTimer();var i=n[e];if(this.log("Switching to subtitle track "+e),this.trackId=e,i){var r=i.id,s=i.groupId,E=void 0===s?"":s,_=i.name,T=i.type,l=i.url;this.hls.trigger(a.Events.SUBTITLE_TRACK_SWITCH,{id:r,groupId:E,name:_,type:T,url:l});var S=this.switchParams(i.url,null==t?void 0:t.details);this.loadPlaylist(S)}else this.hls.trigger(a.Events.SUBTITLE_TRACK_SWITCH,{id:e})}}else this.queuedDefaultTrack=e},u.onTextTracksChanged=function(){if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),this.media&&this.hls.config.renderTextTracksNatively){for(var e=-1,t=T(this.media.textTracks),o=0;o-1&&this.toggleTrackModes(this.trackId)}},{key:"subtitleTracks",get:function(){return this.tracksInGroup}},{key:"subtitleTrack",get:function(){return this.trackId},set:function(e){this.selectDefaultTrack=!1;var t=this.tracksInGroup?this.tracksInGroup[this.trackId]:void 0;this.setSubtitleTrack(e,t)}}])&&s(_.prototype,l),S&&s(_,S),Object.defineProperty(_,"prototype",{writable:!1}),i})(i.default);function T(e){for(var t=[],o=0;o=0&&(S[0]=Math.min(S[0],t),S[1]=Math.max(S[1],o),T=!0,u/(o-t)>.5))return}if(T||i.push([t,o]),this.config.renderTextTracksNatively){var d=this.captionsTracks[e];this.Cues.newCue(d,t,o,a)}else{var c=this.Cues.newCue(null,t,o,a);this.hls.trigger(n.Events.CUES_PARSED,{type:"captions",cues:c,track:e})}},t.onInitPtsFound=function(e,t){var o=this,a=t.frag,i=t.id,r=t.initPTS,s=t.timescale,E=this.unparsedVttFrags;"main"===i&&(this.initPTS[a.cc]=r,this.timescale[a.cc]=s),E.length&&(this.unparsedVttFrags=[],E.forEach((function(e){o.onFragLoaded(n.Events.FRAG_LOADED,e)})))},t.getExistingTrack=function(e){var t=this.media;if(t)for(var o=0;o>>8^255&A^99,e[u]=A,t[A]=u;var I=S[u],O=S[I],N=S[O],R=257*S[A]^16843008*A;a[u]=R<<24|R>>>8,n[u]=R<<16|R>>>16,i[u]=R<<8|R>>>24,r[u]=R,R=16843009*N^65537*O^257*I^16843008*u,E[A]=R<<24|R>>>8,_[A]=R<<16|R>>>16,T[A]=R<<8|R>>>24,l[A]=R,u?(u=I^S[S[S[N^I]]],d^=S[S[d]]):u=d=1}},t.expandKey=function(e){for(var t=this.uint8ArrayToUint32Array_(e),o=!0,a=0;a>>6);var d=(60&t[o+2])>>>2;if(!(d>u.length-1))return _=(1&t[o+2])<<2,_|=(192&t[o+3])>>>6,a.logger.log("manifest codec:"+r+", ADTS type:"+s+", samplingIndex:"+d),/firefox/i.test(l)?d>=6?(s=5,T=new Array(4),E=d-3):(s=2,T=new Array(2),E=d):-1!==l.indexOf("android")?(s=2,T=new Array(2),E=d):(s=5,T=new Array(4),r&&(-1!==r.indexOf("mp4a.40.29")||-1!==r.indexOf("mp4a.40.5"))||!r&&d>=6?E=d-3:((r&&-1!==r.indexOf("mp4a.40.2")&&(d>=6&&1===_||/vivaldi/i.test(l))||!r&&1===_)&&(s=2,T=new Array(2)),E=d)),T[0]=s<<3,T[0]|=(14&d)>>1,T[1]|=(1&d)<<7,T[1]|=_<<3,5===s&&(T[1]|=(14&E)>>1,T[2]=(1&E)<<7,T[2]|=8,T[3]=0),{config:T,samplerate:u[d],channelCount:_,codec:"mp4a.40."+s,manifestCodec:S};e.trigger(i.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+d})}function s(e,t){return 255===e[t]&&240==(246&e[t+1])}function E(e,t){return 1&e[t+1]?7:9}function _(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function T(e,t){return t+5=e.length)return!1;var a=_(e,t);if(a<=o)return!1;var n=t+a;return n===e.length||l(e,n)}return!1}function d(e,t,o,n,i){if(!e.samplerate){var s=r(t,o,n,i);if(!s)return;e.config=s.config,e.samplerate=s.samplerate,e.channelCount=s.channelCount,e.codec=s.codec,e.manifestCodec=s.manifestCodec,a.logger.log("parsed codec:"+e.codec+", rate:"+s.samplerate+", channels:"+s.channelCount)}}function c(e){return 9216e4/e}function A(e,t){var o=E(e,t);if(t+o<=e.length){var a=_(e,t)-o;if(a>0)return{headerLength:o,frameLength:a}}}function I(e,t,o,a,n){var i,r=a+n*c(e.samplerate),s=A(t,o);if(s){var E=s.frameLength,_=s.headerLength,T=_+E,l=Math.max(0,o+T-t.length);l?(i=new Uint8Array(T-_)).set(t.subarray(o+_,t.length),0):i=t.subarray(o+_,o+T);var S={unit:i,pts:r};return l||e.samples.push(S),{sample:S,length:T,missing:l}}var u=t.length-o;return(i=new Uint8Array(u)).set(t.subarray(o,t.length),0),{sample:{unit:i,pts:r},length:u,missing:-1}}},"./src/demux/base-audio-demuxer.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"initPTSFn",(function(){return T}));var a=o("./src/polyfills/number.ts"),n=o("./src/demux/id3.ts"),i=o("./src/types/demuxer.ts"),r=o("./src/demux/dummy-demuxed-track.ts"),s=o("./src/utils/mp4-tools.ts"),E=o("./src/utils/typed-array.ts"),_=(function(){function e(){this._audioTrack=void 0,this._id3Track=void 0,this.frameIndex=0,this.cachedData=null,this.basePTS=null,this.initPTS=null}var t=e.prototype;return t.resetInitSegment=function(e,t,o,a){this._id3Track={type:"id3",id:3,pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0}},t.resetTimeStamp=function(e){this.initPTS=e,this.resetContiguity()},t.resetContiguity=function(){this.basePTS=null,this.frameIndex=0},t.canParse=function(e,t){return!1},t.appendFrame=function(e,t,o){},t.demux=function(e,t){this.cachedData&&(e=Object(s.appendUint8Array)(this.cachedData,e),this.cachedData=null);var o,_,l=n.getID3Data(e,0),S=l?l.length:0,u=this._audioTrack,d=this._id3Track,c=l?n.getTimeStamp(l):void 0,A=e.length;for((null===this.basePTS||0===this.frameIndex&&Object(a.isFiniteNumber)(c))&&(this.basePTS=T(c,t,this.initPTS)),l&&l.length>0&&d.samples.push({pts:this.basePTS,dts:this.basePTS,data:l,type:i.MetadataSchema.audioId3}),_=this.basePTS;Se?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,e-=(t=e>>3)>>3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)},t.readBits=function(e){var t=Math.min(this.bitsAvailable,e),o=this.word>>>32-t;return e>32&&a.logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0?this.word<<=t:this.bytesAvailable>0&&this.loadWord(),(t=e-t)>0&&this.bitsAvailable?o<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()},t.skipUEG=function(){this.skipBits(1+this.skipLZ())},t.skipEG=function(){this.skipBits(1+this.skipLZ())},t.readUEG=function(){var e=this.skipLZ();return this.readBits(e+1)-1},t.readEG=function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)},t.readBoolean=function(){return 1===this.readBits(1)},t.readUByte=function(){return this.readBits(8)},t.readUShort=function(){return this.readBits(16)},t.readUInt=function(){return this.readBits(32)},t.skipScalingList=function(e){for(var t=8,o=8,a=0;a0)return e.subarray(o,o+a)},s=function(e,t){var o=0;return o=(127&e[t])<<21,o|=(127&e[t+1])<<14,o|=(127&e[t+2])<<7,o|=127&e[t+3]},E=function(e,t){return n(e,t)&&s(e,t+6)+10<=e.length-t},_=function(e){for(var t=S(e),o=0;o>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:_+=String.fromCharCode(i);break;case 12:case 13:r=e[T++],_+=String.fromCharCode((31&i)<<6|63&r);break;case 14:r=e[T++],s=e[T++],_+=String.fromCharCode((15&i)<<12|(63&r)<<6|(63&s)<<0)}}return _},N={decodeTextFrame:c};function R(){return a||void 0===self.TextDecoder||(a=new self.TextDecoder("utf-8")),a}},"./src/demux/mp3demuxer.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/demux/base-audio-demuxer.ts"),n=o("./src/demux/id3.ts"),i=o("./src/utils/logger.ts"),r=o("./src/demux/mpegaudio.ts");function s(e,t){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},s(e,t)}var E=(function(e){var t,o;function a(){return e.apply(this,arguments)||this}o=e,(t=a).prototype=Object.create(o.prototype),t.prototype.constructor=t,s(t,o);var E=a.prototype;return E.resetInitSegment=function(t,o,a,n){e.prototype.resetInitSegment.call(this,t,o,a,n),this._audioTrack={container:"audio/mpeg",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"mp3",samples:[],manifestCodec:o,duration:n,inputTimeScale:9e4,dropped:0}},a.probe=function(e){if(!e)return!1;for(var t=(n.getID3Data(e,0)||[]).length,o=e.length;t16384?e.subarray(0,16384):e,Object(i.findBox)(e,["moof"]).length>0},t.demux=function(e,t){this.timeOffset=t;var o=e,a=this.videoTrack,n=this.txtTrack;if(this.config.progressive){this.remainderData&&(o=Object(i.appendUint8Array)(this.remainderData,e));var r=Object(i.segmentValidRange)(o);this.remainderData=r.remainder,a.samples=r.valid||new Uint8Array}else a.samples=o;var s=this.extractID3Track(a,t);return n.samples=Object(i.parseSamples)(t,a),{videoTrack:a,audioTrack:this.audioTrack,id3Track:s,textTrack:this.txtTrack}},t.flush=function(){var e=this.timeOffset,t=this.videoTrack,o=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;var a=this.extractID3Track(t,this.timeOffset);return o.samples=Object(i.parseSamples)(e,t),{videoTrack:t,audioTrack:Object(r.dummyTrack)(),id3Track:a,textTrack:Object(r.dummyTrack)()}},t.extractID3Track=function(e,t){var o=this.id3Track;if(e.samples.length){var r=Object(i.findBox)(e.samples,["emsg"]);r&&r.forEach((function(e){var r=Object(i.parseEmsg)(e);if(s.test(r.schemeIdUri)){var E=Object(a.isFiniteNumber)(r.presentationTime)?r.presentationTime/r.timeScale:t+r.presentationTimeDelta/r.timeScale,_=r.payload;o.samples.push({data:_,len:_.byteLength,dts:E,pts:E,type:n.MetadataSchema.emsg})}}))}return o},t.demuxSampleAes=function(e,t,o){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))},t.destroy=function(){},e})();t.default=E},"./src/demux/mpegaudio.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"appendFrame",(function(){return E})),o.d(t,"parseHeader",(function(){return _})),o.d(t,"isHeaderPattern",(function(){return T})),o.d(t,"isHeader",(function(){return l})),o.d(t,"canParse",(function(){return S})),o.d(t,"probe",(function(){return u}));var a=null,n=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],i=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],r=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],s=[0,1,1,4];function E(e,t,o,a,n){if(!(o+24>t.length)){var i=_(t,o);if(i&&o+i.frameLength<=t.length){var r=a+n*(9e4*i.samplesPerFrame/i.sampleRate),s={unit:t.subarray(o,o+i.frameLength),pts:r,dts:r};return e.config=[],e.channelCount=i.channelCount,e.samplerate=i.sampleRate,e.samples.push(s),{sample:s,length:i.frameLength,missing:0}}}}function _(e,t){var o=e[t+1]>>3&3,E=e[t+1]>>1&3,_=e[t+2]>>4&15,T=e[t+2]>>2&3;if(1!==o&&0!==_&&15!==_&&3!==T){var l=e[t+2]>>1&1,S=e[t+3]>>6,u=1e3*n[14*(3===o?3-E:3===E?3:4)+_-1],d=i[3*(3===o?0:2===o?1:2)+T],c=3===S?1:2,A=r[o][E],I=s[E],O=8*A*I,N=Math.floor(A*u/d+l)*I;if(null===a){var R=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);a=R?parseInt(R[1]):0}return!!a&&a<=87&&2===E&&u>=224e3&&0===S&&(e[t+3]=128|e[t+3]),{sampleRate:d,channelCount:c,frameLength:N,samplesPerFrame:O}}}function T(e,t){return 255===e[t]&&224==(224&e[t+1])&&0!=(6&e[t+1])}function l(e,t){return t+1=e.length)return void o();if(!(e[t].unit.length<32)){var a=this.decrypter.isSync();if(this.decryptAacSample(e,t,o,a),!a)return}}},t.getAvcEncryptedData=function(e){for(var t=16*Math.floor((e.length-48)/160)+16,o=new Int8Array(t),a=0,n=32;n=e.length)return void a();for(var n=e[t].units;!(o>=n.length);o++){var i=n[o];if(!(i.data.length<=48||1!==i.type&&5!==i.type)){var r=this.decrypter.isSync();if(this.decryptAvcSample(e,t,o,a,i,r),!r)return}}}},e})();t.default=i},"./src/demux/transmuxer-interface.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return l}));var a=o("./node_modules/webworkify-webpack/index.js"),n=o("./src/events.ts"),i=o("./src/demux/transmuxer.ts"),r=o("./src/utils/logger.ts"),s=o("./src/errors.ts"),E=o("./src/utils/mediasource-helper.ts"),_=o("./node_modules/eventemitter3/index.js"),T=Object(E.getMediaSource)()||{isTypeSupported:function(){return!1}},l=(function(){function e(e,t,o,E){var l=this;this.hls=void 0,this.id=void 0,this.observer=void 0,this.frag=null,this.part=null,this.worker=void 0,this.onwmsg=void 0,this.transmuxer=null,this.onTransmuxComplete=void 0,this.onFlush=void 0,this.hls=e,this.id=t,this.onTransmuxComplete=o,this.onFlush=E;var S=e.config,u=function(t,o){(o=o||{}).frag=l.frag,o.id=l.id,e.trigger(t,o)};this.observer=new _.EventEmitter,this.observer.on(n.Events.FRAG_DECRYPTED,u),this.observer.on(n.Events.ERROR,u);var d={mp4:T.isTypeSupported("video/mp4"),mpeg:T.isTypeSupported("audio/mpeg"),mp3:T.isTypeSupported('audio/mp4; codecs="mp3"')},c=navigator.vendor;if(S.enableWorker&&"undefined"!=typeof Worker){var A;r.logger.log("demuxing in webworker");try{A=this.worker=a("./src/demux/transmuxer-worker.ts"),this.onwmsg=this.onWorkerMessage.bind(this),A.addEventListener("message",this.onwmsg),A.onerror=function(t){e.trigger(n.Events.ERROR,{type:s.ErrorTypes.OTHER_ERROR,details:s.ErrorDetails.INTERNAL_EXCEPTION,fatal:!0,event:"demuxerWorker",error:new Error(t.message+" ("+t.filename+":"+t.lineno+")")})},A.postMessage({cmd:"init",typeSupported:d,vendor:c,id:t,config:JSON.stringify(S)})}catch(e){r.logger.warn("Error in worker:",e),r.logger.error("Error while initializing DemuxerWorker, fallback to inline"),A&&self.URL.revokeObjectURL(A.objectURL),this.transmuxer=new i.default(this.observer,d,S,c,t),this.worker=null}}else this.transmuxer=new i.default(this.observer,d,S,c,t)}var t=e.prototype;return t.destroy=function(){var e=this.worker;if(e)e.removeEventListener("message",this.onwmsg),e.terminate(),this.worker=null,this.onwmsg=void 0;else{var t=this.transmuxer;t&&(t.destroy(),this.transmuxer=null)}var o=this.observer;o&&o.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null},t.push=function(e,t,o,a,n,s,E,_,T,l){var S,u,d=this;T.transmuxing.start=self.performance.now();var c=this.transmuxer,A=this.worker,I=s?s.start:n.start,O=n.decryptdata,N=this.frag,R=!(N&&n.cc===N.cc),m=!(N&&T.level===N.level),p=N?T.sn-N.sn:-1,h=this.part?T.part-this.part.index:-1,L=0===p&&T.id>1&&T.id===(null==N?void 0:N.stats.chunkCount),f=!m&&(1===p||0===p&&(1===h||L&&h<=0)),C=self.performance.now();(m||p||0===n.stats.parsing.start)&&(n.stats.parsing.start=C),!s||!h&&f||(s.stats.parsing.start=C);var D=!(N&&(null===(S=n.initSegment)||void 0===S?void 0:S.url)===(null===(u=N.initSegment)||void 0===u?void 0:u.url)),g=new i.TransmuxState(R,f,_,m,I,D);if(!f||R||D){r.logger.log("[transmuxer-interface, "+n.type+"]: Starting new transmux session for sn: "+T.sn+" p: "+T.part+" level: "+T.level+" id: "+T.id+"\n discontinuity: "+R+"\n trackSwitch: "+m+"\n contiguous: "+f+"\n accurateTimeOffset: "+_+"\n timeOffset: "+I+"\n initSegmentChange: "+D);var v=new i.TransmuxConfig(o,a,t,E,l);this.configureTransmuxer(v)}if(this.frag=n,this.part=s,A)A.postMessage({cmd:"demux",data:e,decryptdata:O,chunkMeta:T,state:g},e instanceof ArrayBuffer?[e]:[]);else if(c){var P=c.push(e,O,T,g);Object(i.isPromise)(P)?P.then((function(e){d.handleTransmuxComplete(e)})):this.handleTransmuxComplete(P)}},t.flush=function(e){var t=this;e.transmuxing.start=self.performance.now();var o=this.transmuxer,a=this.worker;if(a)a.postMessage({cmd:"flush",chunkMeta:e});else if(o){var n=o.flush(e);Object(i.isPromise)(n)?n.then((function(o){t.handleFlushResult(o,e)})):this.handleFlushResult(n,e)}},t.handleFlushResult=function(e,t){var o=this;e.forEach((function(e){o.handleTransmuxComplete(e)})),this.onFlush(t)},t.onWorkerMessage=function(e){var t=e.data,o=this.hls;switch(t.event){case"init":self.URL.revokeObjectURL(this.worker.objectURL);break;case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":r.logger[t.data.logType]&&r.logger[t.data.logType](t.data.message);break;default:t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,o.trigger(t.event,t.data)}},t.configureTransmuxer=function(e){var t=this.worker,o=this.transmuxer;t?t.postMessage({cmd:"configure",config:e}):o&&o.configure(e)},t.handleTransmuxComplete=function(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)},e})()},"./src/demux/transmuxer-worker.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return s}));var a=o("./src/demux/transmuxer.ts"),n=o("./src/events.ts"),i=o("./src/utils/logger.ts"),r=o("./node_modules/eventemitter3/index.js");function s(e){var t=new r.EventEmitter,o=function(t,o){e.postMessage({event:t,data:o})};t.on(n.Events.FRAG_DECRYPTED,o),t.on(n.Events.ERROR,o),e.addEventListener("message",(function(n){var r=n.data;switch(r.cmd){case"init":var s=JSON.parse(r.config);e.transmuxer=new a.default(t,r.typeSupported,s,r.vendor,r.id),Object(i.enableLogs)(s.debug),(function(){var e=function(e){i.logger[e]=function(t){o("workerLog",{logType:e,message:t})}};for(var t in i.logger)e(t)})(),o("init",null);break;case"configure":e.transmuxer.configure(r.config);break;case"demux":var _=e.transmuxer.push(r.data,r.decryptdata,r.chunkMeta,r.state);Object(a.isPromise)(_)?_.then((function(t){E(e,t)})):E(e,_);break;case"flush":var l=r.chunkMeta,S=e.transmuxer.flush(l);Object(a.isPromise)(S)?S.then((function(t){T(e,t,l)})):T(e,S,l)}}))}function E(e,t){if(!((o=t.remuxResult).audio||o.video||o.text||o.id3||o.initSegment))return!1;var o,a=[],n=t.remuxResult,i=n.audio,r=n.video;return i&&_(a,i),r&&_(a,r),e.postMessage({event:"transmuxComplete",data:t},a),!0}function _(e,t){t.data1&&e.push(t.data1.buffer),t.data2&&e.push(t.data2.buffer)}function T(e,t,o){t.reduce((function(t,o){return E(e,o)||t}),!1)||e.postMessage({event:"transmuxComplete",data:t[0]}),e.postMessage({event:"flush",data:o})}},"./src/demux/transmuxer.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return c})),o.d(t,"isPromise",(function(){return I})),o.d(t,"TransmuxConfig",(function(){return O})),o.d(t,"TransmuxState",(function(){return N}));var a,n=o("./src/events.ts"),i=o("./src/errors.ts"),r=o("./src/crypt/decrypter.ts"),s=o("./src/demux/aacdemuxer.ts"),E=o("./src/demux/mp4demuxer.ts"),_=o("./src/demux/tsdemuxer.ts"),T=o("./src/demux/mp3demuxer.ts"),l=o("./src/remux/mp4-remuxer.ts"),S=o("./src/remux/passthrough-remuxer.ts"),u=o("./src/utils/logger.ts");try{a=self.performance.now.bind(self.performance)}catch(e){u.logger.debug("Unable to use Performance API on this environment"),a=self.Date.now}var d=[{demux:_.default,remux:l.default},{demux:E.default,remux:S.default},{demux:s.default,remux:l.default},{demux:T.default,remux:l.default}],c=(function(){function e(e,t,o,a,n){this.observer=void 0,this.typeSupported=void 0,this.config=void 0,this.vendor=void 0,this.id=void 0,this.demuxer=void 0,this.remuxer=void 0,this.decrypter=void 0,this.probe=void 0,this.decryptionPromise=null,this.transmuxConfig=void 0,this.currentTransmuxState=void 0,this.observer=e,this.typeSupported=t,this.config=o,this.vendor=a,this.id=n}var t=e.prototype;return t.configure=function(e){this.transmuxConfig=e,this.decrypter&&this.decrypter.reset()},t.push=function(e,t,o,n){var i=this,r=o.transmuxing;r.executeStart=a();var s=new Uint8Array(e),E=this.config,_=this.currentTransmuxState,T=this.transmuxConfig;n&&(this.currentTransmuxState=n);var l=n||_,S=l.contiguous,u=l.discontinuity,d=l.trackSwitch,c=l.accurateTimeOffset,I=l.timeOffset,O=l.initSegmentChange,N=T.audioCodec,R=T.videoCodec,m=T.defaultInitPts,p=T.duration,h=T.initSegmentData;(u||d||O)&&this.resetInitSegment(h,N,R,p),(u||O)&&this.resetInitialTimestamp(m),S||this.resetContiguity();var L=(function(e,t){var o=null;return e.byteLength>0&&null!=t&&null!=t.key&&null!==t.iv&&null!=t.method&&(o=t),o})(s,t);if(L&&"AES-128"===L.method){var f=this.getDecrypter();if(!E.enableSoftwareAES)return this.decryptionPromise=f.webCryptoDecrypt(s,L.key.buffer,L.iv.buffer).then((function(e){var t=i.push(e,null,o);return i.decryptionPromise=null,t})),this.decryptionPromise;var C=f.softwareDecrypt(s,L.key.buffer,L.iv.buffer);if(!C)return r.executeEnd=a(),A(o);s=new Uint8Array(C)}this.needsProbing(s,u,d)&&this.configureTransmuxer(s,T);var D=this.transmux(s,L,I,c,o),g=this.currentTransmuxState;return g.contiguous=!0,g.discontinuity=!1,g.trackSwitch=!1,r.executeEnd=a(),D},t.flush=function(e){var t=this,o=e.transmuxing;o.executeStart=a();var r=this.decrypter,s=this.currentTransmuxState,E=this.decryptionPromise;if(E)return E.then((function(){return t.flush(e)}));var _=[],T=s.timeOffset;if(r){var l=r.flush();l&&_.push(this.push(l,null,e))}var S=this.demuxer,u=this.remuxer;if(!S||!u)return this.observer.emit(n.Events.ERROR,n.Events.ERROR,{type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"no demux matching with content found"}),o.executeEnd=a(),[A(e)];var d=S.flush(T);return I(d)?d.then((function(o){return t.flushRemux(_,o,e),_})):(this.flushRemux(_,d,e),_)},t.flushRemux=function(e,t,o){var n=t.audioTrack,i=t.videoTrack,r=t.id3Track,s=t.textTrack,E=this.currentTransmuxState,_=E.accurateTimeOffset,T=E.timeOffset;u.logger.log("[transmuxer.ts]: Flushed fragment "+o.sn+(o.part>-1?" p: "+o.part:"")+" of level "+o.level);var l=this.remuxer.remux(n,i,r,s,T,_,!0,this.id);e.push({remuxResult:l,chunkMeta:o}),o.transmuxing.executeEnd=a()},t.resetInitialTimestamp=function(e){var t=this.demuxer,o=this.remuxer;t&&o&&(t.resetTimeStamp(e),o.resetTimeStamp(e))},t.resetContiguity=function(){var e=this.demuxer,t=this.remuxer;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())},t.resetInitSegment=function(e,t,o,a){var n=this.demuxer,i=this.remuxer;n&&i&&(n.resetInitSegment(e,t,o,a),i.resetInitSegment(e,t,o))},t.destroy=function(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)},t.transmux=function(e,t,o,a,n){return t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,o,a,n):this.transmuxUnencrypted(e,o,a,n)},t.transmuxUnencrypted=function(e,t,o,a){var n=this.demuxer.demux(e,t,!1,!this.config.progressive),i=n.audioTrack,r=n.videoTrack,s=n.id3Track,E=n.textTrack;return{remuxResult:this.remuxer.remux(i,r,s,E,t,o,!1,this.id),chunkMeta:a}},t.transmuxSampleAes=function(e,t,o,a,n){var i=this;return this.demuxer.demuxSampleAes(e,t,o).then((function(e){return{remuxResult:i.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,o,a,!1,i.id),chunkMeta:n}}))},t.configureTransmuxer=function(e,t){for(var o,a=this.config,n=this.observer,i=this.typeSupported,r=this.vendor,s=t.audioCodec,_=t.defaultInitPts,T=t.duration,l=t.initSegmentData,c=t.videoCodec,A=0,I=d.length;A>4>1){if((P=D+5+e[D+4])===D+188)continue}else P=D+4;switch(v){case u:g&&(d&&(n=I(d))&&this.parseAVCPES(i,S,n,!1),d={data:[],size:0}),d&&(d.data.push(e.subarray(P,D+188)),d.size+=D+188-P);break;case O:if(g){if(R&&(n=I(R)))switch(r.segmentCodec){case"aac":this.parseAACPES(r,n);break;case"mp3":this.parseMPEGPES(r,n)}R={data:[],size:0}}R&&(R.data.push(e.subarray(P,D+188)),R.size+=D+188-P);break;case N:g&&(m&&(n=I(m))&&this.parseID3PES(l,n),m={data:[],size:0}),m&&(m.data.push(e.subarray(P,D+188)),m.size+=D+188-P);break;case 0:g&&(P+=e[P]+1),L=this._pmtId=c(e,P);break;case L:g&&(P+=e[P]+1);var y=A(e,P,this.typeSupported,o);(u=y.avc)>0&&(i.pid=u),(O=y.audio)>0&&(r.pid=O,r.segmentCodec=y.segmentCodec),(N=y.id3)>0&&(l.pid=N),null===p||h||(_.logger.log("unknown PID '"+p+"' in TS found"),p=null),h=this.pmtParsed=!0;break;case 17:case 8191:break;default:p=v}}else C++;C>0&&this.observer.emit(s.Events.ERROR,s.Events.ERROR,{type:T.ErrorTypes.MEDIA_ERROR,details:T.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"Found "+C+" TS packet/s that do not start with 0x47"}),i.pesData=d,r.pesData=R,l.pesData=m;var B={audioTrack:r,videoTrack:i,id3Track:l,textTrack:S};return a&&this.extractRemainingSamples(B),B},t.flush=function(){var e,t=this.remainderData;return this.remainderData=null,e=t?this.demux(t,-1,!1,!0):{videoTrack:this._avcTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(e),this.sampleAes?this.decrypt(e,this.sampleAes):e},t.extractRemainingSamples=function(e){var t,o=e.audioTrack,a=e.videoTrack,n=e.id3Track,i=e.textTrack,r=a.pesData,s=o.pesData,E=n.pesData;if(r&&(t=I(r))?(this.parseAVCPES(a,i,t,!0),a.pesData=null):a.pesData=r,s&&(t=I(s))){switch(o.segmentCodec){case"aac":this.parseAACPES(o,t);break;case"mp3":this.parseMPEGPES(o,t)}o.pesData=null}else null!=s&&s.size&&_.logger.log("last AAC PES packet truncated,might overlap between fragments"),o.pesData=s;E&&(t=I(E))?(this.parseID3PES(n,t),n.pesData=null):n.pesData=E},t.demuxSampleAes=function(e,t,o){var a=this.demux(e,o,!0,!this.config.progressive),n=this.sampleAes=new r.default(this.observer,this.config,t);return this.decrypt(a,n)},t.decrypt=function(e,t){return new Promise((function(o){var a=e.audioTrack,n=e.videoTrack;a.samples&&"aac"===a.segmentCodec?t.decryptAacSamples(a.samples,0,(function(){n.samples?t.decryptAvcSamples(n.samples,0,0,(function(){o(e)})):o(e)})):n.samples&&t.decryptAvcSamples(n.samples,0,0,(function(){o(e)}))}))},t.destroy=function(){this._duration=0},t.parseAVCPES=function(e,t,o,a){var n,r=this,s=this.parseAVCNALu(e,o.data),_=this.avcSample,T=!1;o.data=null,_&&s.length&&!e.audFound&&(O(_,e),_=this.avcSample=d(!1,o.pts,o.dts,"")),s.forEach((function(a){switch(a.type){case 1:n=!0,_||(_=r.avcSample=d(!0,o.pts,o.dts,"")),_.frame=!0;var s=a.data;if(T&&s.length>4){var l=new i.default(s).readSliceType();2!==l&&4!==l&&7!==l&&9!==l||(_.key=!0)}break;case 5:n=!0,_||(_=r.avcSample=d(!0,o.pts,o.dts,"")),_.key=!0,_.frame=!0;break;case 6:n=!0,Object(E.parseSEIMessageFromNALu)(N(a.data),o.pts,t.samples);break;case 7:if(n=!0,T=!0,!e.sps){var S=new i.default(a.data).readSPS();e.width=S.width,e.height=S.height,e.pixelRatio=S.pixelRatio,e.sps=[a.data],e.duration=r._duration;for(var u=a.data.subarray(1,4),c="avc1.",A=0;A<3;A++){var I=u[A].toString(16);I.length<2&&(I="0"+I),c+=I}e.codec=c}break;case 8:n=!0,e.pps||(e.pps=[a.data]);break;case 9:n=!1,e.audFound=!0,_&&O(_,e),_=r.avcSample=d(!1,o.pts,o.dts,"");break;case 12:n=!0;break;default:n=!1,_&&(_.debug+="unknown NAL "+a.type+" ")}_&&n&&_.units.push(a)})),a&&_&&(O(_,e),this.avcSample=null)},t.getLastNalUnit=function(e){var t,o,a=this.avcSample;if(a&&0!==a.units.length||(a=e[e.length-1]),null!==(t=a)&&void 0!==t&&t.units){var n=a.units;o=n[n.length-1]}return o},t.parseAVCNALu=function(e,t){var o,a,n=t.byteLength,i=e.naluState||0,r=i,s=[],E=0,_=-1,T=0;for(-1===i&&(_=0,T=31&t[0],i=0,E=1);E=0){var l={data:t.subarray(_,E-i-1),type:T};s.push(l)}else{var S=this.getLastNalUnit(e.samples);if(S&&(r&&E<=4-r&&S.state&&(S.data=S.data.subarray(0,S.data.byteLength-r)),(a=E-i-1)>0)){var u=new Uint8Array(S.data.byteLength+a);u.set(S.data,0),u.set(t.subarray(0,a),S.data.byteLength),S.data=u,S.state=0}}E=0&&i>=0){var d={data:t.subarray(_,n),type:T,state:i};s.push(d)}if(0===s.length){var c=this.getLastNalUnit(e.samples);if(c){var A=new Uint8Array(c.data.byteLength+t.byteLength);A.set(c.data,0),A.set(t,c.data.byteLength),c.data=A}}return e.naluState=i,s},t.parseAACPES=function(e,t){var o,n,i,r,E,l=0,S=this.aacOverFlow,u=t.data;if(S){this.aacOverFlow=null;var d=S.missing,c=S.sample.unit.byteLength;if(-1===d){var A=new Uint8Array(c+u.byteLength);A.set(S.sample.unit,0),A.set(u,c),u=A}else{var I=c-d;S.sample.unit.set(u.subarray(0,d),I),e.samples.push(S.sample),l=S.missing}}for(o=l,n=u.length;o1;){var E=new Uint8Array(s[0].length+s[1].length);E.set(s[0]),E.set(s[1],s[0].length),s[0]=E,s.splice(1,1)}if(1===((t=s[0])[0]<<16)+(t[1]<<8)+t[2]){if((o=(t[4]<<8)+t[5])&&o>e.size-6)return null;var T=t[7];192&T&&(n=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&T?n-(i=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2)>54e5&&(_.logger.warn(Math.round((n-i)/9e4)+"s delta between PTS and DTS, align them"),n=i):i=n);var l=(a=t[8])+9;if(e.size<=l)return null;e.size-=l;for(var S=new Uint8Array(e.size),u=0,d=s.length;uc){l-=c;continue}t=t.subarray(l),c-=l,l=0}S.set(t,r),r+=c}return o&&(o-=a+3),{data:S,pts:n,dts:i,len:o}}return null}function O(e,t){if(e.units.length&&e.frame){if(void 0===e.pts){var o=t.samples,a=o.length;if(!a)return void t.dropped++;var n=o[a-1];e.pts=n.pts,e.dts=n.dts}t.samples.push(e)}e.debug.length&&_.logger.log(e.pts+"/"+e.dts+":"+e.debug)}function N(e){for(var t=e.byteLength,o=[],a=1;a=t)return a;return 0}},{key:"maxAutoLevel",get:function(){var e=this.levels,t=this.autoLevelCapping;return-1===t&&e&&e.length?e.length-1:t}},{key:"nextAutoLevel",get:function(){return Math.min(Math.max(this.abrController.nextAutoLevel,this.minAutoLevel),this.maxAutoLevel)},set:function(e){this.abrController.nextAutoLevel=Math.max(this.minAutoLevel,e)}},{key:"playingDate",get:function(){return this.streamController.currentProgramDateTime}},{key:"audioTracks",get:function(){var e=this.audioTrackController;return e?e.audioTracks:[]}},{key:"audioTrack",get:function(){var e=this.audioTrackController;return e?e.audioTrack:-1},set:function(e){var t=this.audioTrackController;t&&(t.audioTrack=e)}},{key:"subtitleTracks",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTracks:[]}},{key:"subtitleTrack",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTrack:-1},set:function(e){var t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}},{key:"media",get:function(){return this._media}},{key:"subtitleDisplay",get:function(){var e=this.subtitleTrackController;return!!e&&e.subtitleDisplay},set:function(e){var t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}},{key:"lowLatencyMode",get:function(){return this.config.lowLatencyMode},set:function(e){this.config.lowLatencyMode=e}},{key:"liveSyncPosition",get:function(){return this.latencyController.liveSyncPosition}},{key:"latency",get:function(){return this.latencyController.latency}},{key:"maxLatency",get:function(){return this.latencyController.maxLatency}},{key:"targetLatency",get:function(){return this.latencyController.targetLatency}},{key:"drift",get:function(){return this.latencyController.drift}},{key:"forceStartLoad",get:function(){return this.streamController.forceStartLoad}}])&&I(t.prototype,o),O&&I(t,O),Object.defineProperty(t,"prototype",{writable:!1}),e})();O.defaultConfig=void 0},"./src/is-supported.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"isSupported",(function(){return i})),o.d(t,"changeTypeSupported",(function(){return r}));var a=o("./src/utils/mediasource-helper.ts");function n(){return self.SourceBuffer||self.WebKitSourceBuffer}function i(){var e=Object(a.getMediaSource)();if(!e)return!1;var t=n(),o=e&&"function"==typeof e.isTypeSupported&&e.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),i=!t||t.prototype&&"function"==typeof t.prototype.appendBuffer&&"function"==typeof t.prototype.remove;return!!o&&!!i}function r(){var e,t=n();return"function"==typeof(null==t||null===(e=t.prototype)||void 0===e?void 0:e.changeType)}},"./src/loader/date-range.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"DateRangeAttribute",(function(){return a})),o.d(t,"DateRange",(function(){return _}));var a,n=o("./src/polyfills/number.ts"),i=o("./src/utils/attr-list.ts"),r=o("./src/utils/logger.ts");function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(!this.endOnNext||!!this.class)}}])&&E(t.prototype,o),_&&E(t,_),Object.defineProperty(t,"prototype",{writable:!1}),e})()},"./src/loader/fragment-loader.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return l})),o.d(t,"LoadError",(function(){return u}));var a=o("./src/polyfills/number.ts"),n=o("./src/errors.ts");function i(e){var t="function"==typeof Map?new Map:void 0;return i=function(e){if(null===e||(o=e,-1===Function.toString.call(o).indexOf("[native code]")))return e;var o;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,a)}function a(){return r(e,arguments,_(this).constructor)}return a.prototype=Object.create(e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),E(a,e)},i(e)}function r(e,t,o){return r=s()?Reflect.construct.bind():function(e,t,o){var a=[null];a.push.apply(a,t);var n=new(Function.bind.apply(e,a));return o&&E(n,o.prototype),n},r.apply(null,arguments)}function s(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function E(e,t){return E=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},E(e,t)}function _(e){return _=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},_(e)}var T=Math.pow(2,17),l=(function(){function e(e){this.config=void 0,this.loader=null,this.partLoadTimeout=-1,this.config=e}var t=e.prototype;return t.destroy=function(){this.loader&&(this.loader.destroy(),this.loader=null)},t.abort=function(){this.loader&&this.loader.abort()},t.load=function(e,t){var o=this,a=e.url;if(!a)return Promise.reject(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,networkDetails:null},"Fragment does not have a "+(a?"part list":"url")));this.abort();var i=this.config,r=i.fLoader,s=i.loader;return new Promise((function(a,E){o.loader&&o.loader.destroy();var _=o.loader=e.loader=r?new r(i):new s(i),l=S(e),d={timeout:i.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:i.fragLoadingMaxRetryTimeout,highWaterMark:"initSegment"===e.sn?1/0:T};e.stats=_.stats,_.load(l,d,{onSuccess:function(t,n,i,r){o.resetLoader(e,_),a({frag:e,part:null,payload:t.data,networkDetails:r})},onError:function(t,a,i){o.resetLoader(e,_),E(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:t,networkDetails:i}))},onAbort:function(t,a,i){o.resetLoader(e,_),E(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.INTERNAL_ABORTED,fatal:!1,frag:e,networkDetails:i}))},onTimeout:function(t,a,i){o.resetLoader(e,_),E(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,networkDetails:i}))},onProgress:function(o,a,n,i){t&&t({frag:e,part:null,payload:n,networkDetails:i})}})}))},t.loadPart=function(e,t,o){var a=this;this.abort();var i=this.config,r=i.fLoader,s=i.loader;return new Promise((function(E,_){a.loader&&a.loader.destroy();var l=a.loader=e.loader=r?new r(i):new s(i),d=S(e,t),c={timeout:i.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:i.fragLoadingMaxRetryTimeout,highWaterMark:T};t.stats=l.stats,l.load(d,c,{onSuccess:function(n,i,r,s){a.resetLoader(e,l),a.updateStatsFromPart(e,t);var _={frag:e,part:t,payload:n.data,networkDetails:s};o(_),E(_)},onError:function(o,i,r){a.resetLoader(e,l),_(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:o,networkDetails:r}))},onAbort:function(o,i,r){e.stats.aborted=t.stats.aborted,a.resetLoader(e,l),_(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,networkDetails:r}))},onTimeout:function(o,i,r){a.resetLoader(e,l),_(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,networkDetails:r}))}})}))},t.updateStatsFromPart=function(e,t){var o=e.stats,a=t.stats,n=a.total;if(o.loaded+=a.loaded,n){var i=Math.round(e.duration/t.duration),r=Math.min(Math.round(o.loaded/n),i),s=(i-r)*Math.round(o.loaded/r);o.total=o.loaded+s}else o.total=Math.max(o.loaded,o.total);var E=o.loading,_=a.loading;E.start?E.first+=_.first-_.start:(E.start=_.start,E.first=_.first),E.end=_.end},t.resetLoader=function(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()},e})();function S(e,t){void 0===t&&(t=null);var o=t||e,n={frag:e,part:t,responseType:"arraybuffer",url:o.url,headers:{},rangeStart:0,rangeEnd:0},i=o.byteRangeStartOffset,r=o.byteRangeEndOffset;return Object(a.isFiniteNumber)(i)&&Object(a.isFiniteNumber)(r)&&(n.rangeStart=i,n.rangeEnd=r),n}var u=(function(e){var t,o;function a(t){for(var o,a=arguments.length,n=new Array(a>1?a-1:0),i=1;i>8*(15-o)&255;return t},o.setDecryptDataFromLevelKey=function(e,t){var o=e;return"AES-128"===(null==e?void 0:e.method)&&e.uri&&!e.iv&&((o=s.LevelKey.fromURI(e.uri)).method=e.method,o.iv=this.createInitializationVector(t),o.keyFormat="identity"),o},o.setElementaryStreamInfo=function(e,t,o,a,n,i){void 0===i&&(i=!1);var r=this.elementaryStreams,s=r[e];s?(s.startPTS=Math.min(s.startPTS,t),s.endPTS=Math.max(s.endPTS,o),s.startDTS=Math.min(s.startDTS,a),s.endDTS=Math.max(s.endDTS,n)):r[e]={startPTS:t,endPTS:o,startDTS:a,endDTS:n,partial:i}},o.clearElementaryStreamInfo=function(){var e=this.elementaryStreams;e[a.AUDIO]=null,e[a.VIDEO]=null,e[a.AUDIOVIDEO]=null},S(t,[{key:"decryptdata",get:function(){if(!this.levelkey&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkey){var e=this.sn;"number"!=typeof e&&(this.levelkey&&"AES-128"===this.levelkey.method&&!this.levelkey.iv&&r.logger.warn('missing IV for initialization segment with method="'+this.levelkey.method+'" - compliance issue'),e=0),this._decryptdata=this.setDecryptDataFromLevelKey(this.levelkey,e)}return this._decryptdata}},{key:"end",get:function(){return this.start+this.duration}},{key:"endProgramDateTime",get:function(){if(null===this.programDateTime)return null;if(!Object(n.isFiniteNumber)(this.programDateTime))return null;var e=Object(n.isFiniteNumber)(this.duration)?this.duration:0;return this.programDateTime+1e3*e}},{key:"encrypted",get:function(){var e;return!(null===(e=this.decryptdata)||void 0===e||!e.keyFormat||!this.decryptdata.uri)}}]),t})(u),c=(function(e){function t(t,o,a,n,i){var r;(r=e.call(this,a)||this).fragOffset=0,r.duration=0,r.gap=!1,r.independent=!1,r.relurl=void 0,r.fragment=void 0,r.index=void 0,r.stats=new E.LoadStats,r.duration=t.decimalFloatingPoint("DURATION"),r.gap=t.bool("GAP"),r.independent=t.bool("INDEPENDENT"),r.relurl=t.enumeratedString("URI"),r.fragment=o,r.index=n;var s=t.enumeratedString("BYTERANGE");return s&&r.setByteRange(s,i),i&&(r.fragOffset=i.fragOffset+i.duration),r}return _(t,e),S(t,[{key:"start",get:function(){return this.fragment.start+this.fragOffset}},{key:"end",get:function(){return this.start+this.duration}},{key:"loaded",get:function(){var e=this.elementaryStreams;return!!(e.audio||e.video||e.audiovideo)}}]),t})(u)},"./src/loader/key-loader.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return r}));var a=o("./src/events.ts"),n=o("./src/errors.ts"),i=o("./src/utils/logger.ts"),r=(function(){function e(e){this.hls=void 0,this.loaders={},this.decryptkey=null,this.decrypturl=null,this.hls=e,this.registerListeners()}var t=e.prototype;return t.startLoad=function(e){},t.stopLoad=function(){this.destroyInternalLoaders()},t.registerListeners=function(){this.hls.on(a.Events.KEY_LOADING,this.onKeyLoading,this)},t.unregisterListeners=function(){this.hls.off(a.Events.KEY_LOADING,this.onKeyLoading)},t.destroyInternalLoaders=function(){for(var e in this.loaders){var t=this.loaders[e];t&&t.destroy()}this.loaders={}},t.destroy=function(){this.unregisterListeners(),this.destroyInternalLoaders()},t.onKeyLoading=function(e,t){var o=t.frag,n=o.type,r=this.loaders[n];if(o.decryptdata){var s=o.decryptdata.uri;if(s!==this.decrypturl||null===this.decryptkey){var E=this.hls.config;if(r&&(i.logger.warn("abort previous key loader for type:"+n),r.abort()),!s)return void i.logger.warn("key uri is falsy");var _=E.loader,T=o.loader=this.loaders[n]=new _(E);this.decrypturl=s,this.decryptkey=null;var l={url:s,frag:o,responseType:"arraybuffer"},S={timeout:E.fragLoadingTimeOut,maxRetry:0,retryDelay:E.fragLoadingRetryDelay,maxRetryDelay:E.fragLoadingMaxRetryTimeout,highWaterMark:0},u={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)};T.load(l,S,u)}else this.decryptkey&&(o.decryptdata.key=this.decryptkey,this.hls.trigger(a.Events.KEY_LOADED,{frag:o}))}else i.logger.warn("Missing decryption data on fragment in onKeyLoading")},t.loadsuccess=function(e,t,o){var n=o.frag;n.decryptdata?(this.decryptkey=n.decryptdata.key=new Uint8Array(e.data),n.loader=null,delete this.loaders[n.type],this.hls.trigger(a.Events.KEY_LOADED,{frag:n})):i.logger.error("after key load, decryptdata unset")},t.loaderror=function(e,t){var o=t.frag,i=o.loader;i&&i.abort(),delete this.loaders[o.type],this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.KEY_LOAD_ERROR,fatal:!1,frag:o,response:e})},t.loadtimeout=function(e,t){var o=t.frag,i=o.loader;i&&i.abort(),delete this.loaders[o.type],this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.KEY_LOAD_TIMEOUT,fatal:!1,frag:o})},e})()},"./src/loader/level-details.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"LevelDetails",(function(){return i}));var a=o("./src/polyfills/number.ts");function n(e,t){for(var o=0;oe.endSN||t>0||0===t&&o>0,this.updated||this.advanced?this.misses=Math.floor(.6*e.misses):this.misses=e.misses+1,this.availabilityDelay=e.availabilityDelay},t=e,(o=[{key:"hasProgramDateTime",get:function(){return!!this.fragments.length&&Object(a.isFiniteNumber)(this.fragments[this.fragments.length-1].programDateTime)}},{key:"levelTargetDuration",get:function(){return this.averagetargetduration||this.targetduration||10}},{key:"drift",get:function(){var e=this.driftEndTime-this.driftStartTime;return e>0?1e3*(this.driftEnd-this.driftStart)/e:1}},{key:"edge",get:function(){return this.partEnd||this.fragmentEnd}},{key:"partEnd",get:function(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}},{key:"fragmentEnd",get:function(){var e;return null!==(e=this.fragments)&&void 0!==e&&e.length?this.fragments[this.fragments.length-1].end:0}},{key:"age",get:function(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}},{key:"lastPartIndex",get:function(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].index:-1}},{key:"lastPartSn",get:function(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}])&&n(t.prototype,o),i&&n(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e})()},"./src/loader/level-key.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"LevelKey",(function(){return i}));var a=o("./node_modules/url-toolkit/src/url-toolkit.js");function n(e,t){for(var o=0;o2){var o=t.shift()+".";return o+=parseInt(t.shift()).toString(16),o+=("000"+parseInt(t.shift()).toString(16)).slice(-4)}return e},e.resolve=function(e,t){return n.buildAbsoluteURL(t,e,{alwaysNormalize:!0})},e.parseMasterPlaylist=function(t,o){var a,n=[],i={},r=!1;for(S.lastIndex=0;null!=(a=S.exec(t));)if(a[1]){var s=new _.AttrList(a[1]),E={attrs:s,bitrate:s.decimalInteger("AVERAGE-BANDWIDTH")||s.decimalInteger("BANDWIDTH"),name:s.NAME,url:e.resolve(a[2],o)},T=s.decimalResolution("RESOLUTION");T&&(E.width=T.width,E.height=T.height),O((s.CODECS||"").split(/[ ,]+/).filter((function(e){return e})),E),E.videoCodec&&-1!==E.videoCodec.indexOf("avc1")&&(E.videoCodec=e.convertAVC1ToAVCOTI(E.videoCodec)),n.push(E)}else if(a[3]){var l=new _.AttrList(a[3]);l["DATA-ID"]&&(r=!0,i[l["DATA-ID"]]=l)}return{levels:n,sessionData:r?i:null}},e.parseMasterPlaylistMedia=function(t,o,a,n){var i;void 0===n&&(n=[]);var r=[],s=0;for(u.lastIndex=0;null!==(i=u.exec(t));){var E=new _.AttrList(i[1]);if(E.TYPE===a){var T={attrs:E,bitrate:0,id:s++,groupId:E["GROUP-ID"],instreamId:E["INSTREAM-ID"],name:E.NAME||E.LANGUAGE||"",type:a,default:E.bool("DEFAULT"),autoselect:E.bool("AUTOSELECT"),forced:E.bool("FORCED"),lang:E.LANGUAGE,url:E.URI?e.resolve(E.URI,o):""};if(n.length){var l=e.findGroup(n,T.groupId)||n[0];N(T,l,"audioCodec"),N(T,l,"textCodec")}r.push(T)}}return r},e.parseLevelPlaylist=function(e,t,o,l,S){var u,I,O,N=new s.LevelDetails(t),p=N.fragments,h=null,L=0,f=0,C=0,D=0,g=null,v=new r.Fragment(l,t),P=-1,y=!1;for(d.lastIndex=0,N.m3u8=e;null!==(u=d.exec(e));){y&&(y=!1,(v=new r.Fragment(l,t)).start=C,v.sn=L,v.cc=D,v.level=o,h&&(v.initSegment=h,v.rawProgramDateTime=h.rawProgramDateTime,h.rawProgramDateTime=null));var B=u[1];if(B){v.duration=parseFloat(B);var b=(" "+u[2]).slice(1);v.title=b||null,v.tagList.push(b?["INF",B,b]:["INF",B])}else if(u[3])Object(a.isFiniteNumber)(v.duration)&&(v.start=C,O&&(v.levelkey=O),v.sn=L,v.level=o,v.cc=D,v.urlId=S,p.push(v),v.relurl=(" "+u[3]).slice(1),R(v,g),g=v,C+=v.duration,L++,f=0,y=!0);else if(u[4]){var M=(" "+u[4]).slice(1);g?v.setByteRange(M,g):v.setByteRange(M)}else if(u[5])v.rawProgramDateTime=(" "+u[5]).slice(1),v.tagList.push(["PROGRAM-DATE-TIME",v.rawProgramDateTime]),-1===P&&(P=p.length);else{if(!(u=u[0].match(c))){T.logger.warn("No matches on slow regex match for level playlist!");continue}for(I=1;I-1){T.logger.warn("Keyformat "+q+" is not supported from the manifest");continue}if("identity"!==q)continue;K&&(O=E.LevelKey.fromURL(t,j),j&&["AES-128","SAMPLE-AES","SAMPLE-AES-CENC"].indexOf(K)>=0&&(O.method=K,O.keyFormat=q,$&&(O.keyID=$),X&&(O.keyFormatVersions=X),O.iv=Q));break;case"START":var J=new _.AttrList(W).decimalFloatingPoint("TIME-OFFSET");Object(a.isFiniteNumber)(J)&&(N.startTimeOffset=J);break;case"MAP":var Z=new _.AttrList(W);if(v.duration){var ee=new r.Fragment(l,t);m(ee,Z,o,O),h=ee,v.initSegment=h,h.rawProgramDateTime&&!v.rawProgramDateTime&&(v.rawProgramDateTime=h.rawProgramDateTime)}else m(v,Z,o,O),h=v,y=!0;break;case"SERVER-CONTROL":var te=new _.AttrList(W);N.canBlockReload=te.bool("CAN-BLOCK-RELOAD"),N.canSkipUntil=te.optionalFloat("CAN-SKIP-UNTIL",0),N.canSkipDateRanges=N.canSkipUntil>0&&te.bool("CAN-SKIP-DATERANGES"),N.partHoldBack=te.optionalFloat("PART-HOLD-BACK",0),N.holdBack=te.optionalFloat("HOLD-BACK",0);break;case"PART-INF":var oe=new _.AttrList(W);N.partTarget=oe.decimalFloatingPoint("PART-TARGET");break;case"PART":var ae=N.partList;ae||(ae=N.partList=[]);var ne=f>0?ae[ae.length-1]:void 0,ie=f++,re=new r.Part(new _.AttrList(W),v,t,ie,ne);ae.push(re),v.duration+=re.duration;break;case"PRELOAD-HINT":var se=new _.AttrList(W);N.preloadHint=se;break;case"RENDITION-REPORT":var Ee=new _.AttrList(W);N.renditionReports=N.renditionReports||[],N.renditionReports.push(Ee);break;default:T.logger.warn("line parsed but not handled: "+u)}}}g&&!g.relurl?(p.pop(),C-=g.duration,N.partList&&(N.fragmentHint=g)):N.partList&&(R(v,g),v.cc=D,N.fragmentHint=v);var _e=p.length,Te=p[0],le=p[_e-1];if((C+=N.skippedSegments*N.targetduration)>0&&_e&&le){N.averagetargetduration=C/_e;var Se=le.sn;N.endSN="initSegment"!==Se?Se:0,Te&&(N.startCC=Te.cc,Te.initSegment||N.fragments.every((function(e){return e.relurl&&(t=e.relurl,A.test(null!=(o=null===(a=n.parseURL(t))||void 0===a?void 0:a.path)?o:""));var t,o,a}))&&(T.logger.warn("MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX"),(v=new r.Fragment(l,t)).relurl=le.relurl,v.level=o,v.sn="initSegment",Te.initSegment=v,N.needSidxRanges=!0))}else N.endSN=0,N.startCC=0;return N.fragmentHint&&(C+=N.fragmentHint.duration),N.totalduration=C,N.endCC=D,P>0&&(function(e,t){for(var o=e[t],a=t;a--;){var n=e[a];if(!n)return;n.programDateTime=o.programDateTime-1e3*n.duration,o=n}})(p,P),N},e})();function O(e,t){["video","audio","text"].forEach((function(o){var a=e.filter((function(e){return Object(l.isCodecType)(e,o)}));if(a.length){var n=a.filter((function(e){return 0===e.lastIndexOf("avc1",0)||0===e.lastIndexOf("mp4a",0)}));t[o+"Codec"]=n.length>0?n[0]:a[0],e=e.filter((function(e){return-1===a.indexOf(e)}))}})),t.unknownCodecs=e}function N(e,t,o){var a=t[o];a&&(e[o]=a)}function R(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),Object(a.isFiniteNumber)(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function m(e,t,o,a){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=o,e.sn="initSegment",a&&(e.levelkey=a),e.initSegment=null}},"./src/loader/playlist-loader.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/polyfills/number.ts"),n=o("./src/events.ts"),i=o("./src/errors.ts"),r=o("./src/utils/logger.ts"),s=o("./src/utils/mp4-tools.ts"),E=o("./src/loader/m3u8-parser.ts"),_=o("./src/types/loader.ts"),T=o("./src/utils/attr-list.ts");function l(e,t){var o=e.url;return void 0!==o&&0!==o.indexOf("data:")||(o=t.url),o}var S=(function(){function e(e){this.hls=void 0,this.loaders=Object.create(null),this.hls=e,this.registerListeners()}var t=e.prototype;return t.startLoad=function(e){},t.stopLoad=function(){this.destroyInternalLoaders()},t.registerListeners=function(){var e=this.hls;e.on(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(n.Events.LEVEL_LOADING,this.onLevelLoading,this),e.on(n.Events.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(n.Events.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},t.unregisterListeners=function(){var e=this.hls;e.off(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(n.Events.LEVEL_LOADING,this.onLevelLoading,this),e.off(n.Events.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(n.Events.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},t.createInternalLoader=function(e){var t=this.hls.config,o=t.pLoader,a=t.loader,n=new(o||a)(t);return e.loader=n,this.loaders[e.type]=n,n},t.getInternalLoader=function(e){return this.loaders[e.type]},t.resetInternalLoader=function(e){this.loaders[e]&&delete this.loaders[e]},t.destroyInternalLoaders=function(){for(var e in this.loaders){var t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}},t.destroy=function(){this.unregisterListeners(),this.destroyInternalLoaders()},t.onManifestLoading=function(e,t){var o=t.url;this.load({id:null,groupId:null,level:0,responseType:"text",type:_.PlaylistContextType.MANIFEST,url:o,deliveryDirectives:null})},t.onLevelLoading=function(e,t){var o=t.id,a=t.level,n=t.url,i=t.deliveryDirectives;this.load({id:o,groupId:null,level:a,responseType:"text",type:_.PlaylistContextType.LEVEL,url:n,deliveryDirectives:i})},t.onAudioTrackLoading=function(e,t){var o=t.id,a=t.groupId,n=t.url,i=t.deliveryDirectives;this.load({id:o,groupId:a,level:null,responseType:"text",type:_.PlaylistContextType.AUDIO_TRACK,url:n,deliveryDirectives:i})},t.onSubtitleTrackLoading=function(e,t){var o=t.id,a=t.groupId,n=t.url,i=t.deliveryDirectives;this.load({id:o,groupId:a,level:null,responseType:"text",type:_.PlaylistContextType.SUBTITLE_TRACK,url:n,deliveryDirectives:i})},t.load=function(e){var t,o,a,n,i,s,E=this.hls.config,T=this.getInternalLoader(e);if(T){var l=T.context;if(l&&l.url===e.url)return void r.logger.trace("[playlist-loader]: playlist request ongoing");r.logger.log("[playlist-loader]: aborting previous loader for type: "+e.type),T.abort()}switch(e.type){case _.PlaylistContextType.MANIFEST:o=E.manifestLoadingMaxRetry,a=E.manifestLoadingTimeOut,n=E.manifestLoadingRetryDelay,i=E.manifestLoadingMaxRetryTimeout;break;case _.PlaylistContextType.LEVEL:case _.PlaylistContextType.AUDIO_TRACK:case _.PlaylistContextType.SUBTITLE_TRACK:o=0,a=E.levelLoadingTimeOut;break;default:o=E.levelLoadingMaxRetry,a=E.levelLoadingTimeOut,n=E.levelLoadingRetryDelay,i=E.levelLoadingMaxRetryTimeout}if(T=this.createInternalLoader(e),null!==(t=e.deliveryDirectives)&&void 0!==t&&t.part&&(e.type===_.PlaylistContextType.LEVEL&&null!==e.level?s=this.hls.levels[e.level].details:e.type===_.PlaylistContextType.AUDIO_TRACK&&null!==e.id?s=this.hls.audioTracks[e.id].details:e.type===_.PlaylistContextType.SUBTITLE_TRACK&&null!==e.id&&(s=this.hls.subtitleTracks[e.id].details),s)){var S=s.partTarget,u=s.targetduration;S&&u&&(a=Math.min(1e3*Math.max(3*S,.8*u),a))}var d={timeout:a,maxRetry:o,retryDelay:n,maxRetryDelay:i,highWaterMark:0},c={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)};T.load(e,d,c)},t.loadsuccess=function(e,t,o,a){if(void 0===a&&(a=null),o.isSidxRequest)return this.handleSidxRequest(e,o),void this.handlePlaylistLoaded(e,t,o,a);this.resetInternalLoader(o.type);var n=e.data;0===n.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),n.indexOf("#EXTINF:")>0||n.indexOf("#EXT-X-TARGETDURATION:")>0?this.handleTrackOrLevelPlaylist(e,t,o,a):this.handleMasterPlaylist(e,t,o,a)):this.handleManifestParsingError(e,o,"no EXTM3U delimiter",a)},t.loaderror=function(e,t,o){void 0===o&&(o=null),this.handleNetworkError(t,o,!1,e)},t.loadtimeout=function(e,t,o){void 0===o&&(o=null),this.handleNetworkError(t,o,!0)},t.handleMasterPlaylist=function(e,t,o,a){var i=this.hls,s=e.data,_=l(e,o),S=E.default.parseMasterPlaylist(s,_),u=S.levels,d=S.sessionData;if(u.length){var c=u.map((function(e){return{id:e.attrs.AUDIO,audioCodec:e.audioCodec}})),A=u.map((function(e){return{id:e.attrs.SUBTITLES,textCodec:e.textCodec}})),I=E.default.parseMasterPlaylistMedia(s,_,"AUDIO",c),O=E.default.parseMasterPlaylistMedia(s,_,"SUBTITLES",A),N=E.default.parseMasterPlaylistMedia(s,_,"CLOSED-CAPTIONS");I.length&&(I.some((function(e){return!e.url}))||!u[0].audioCodec||u[0].attrs.AUDIO||(r.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),I.unshift({type:"main",name:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new T.AttrList({}),bitrate:0,url:""}))),i.trigger(n.Events.MANIFEST_LOADED,{levels:u,audioTracks:I,subtitles:O,captions:N,url:_,stats:t,networkDetails:a,sessionData:d})}else this.handleManifestParsingError(e,o,"no level found in manifest",a)},t.handleTrackOrLevelPlaylist=function(e,t,o,r){var s=this.hls,S=o.id,u=o.level,d=o.type,c=l(e,o),A=Object(a.isFiniteNumber)(S)?S:0,I=Object(a.isFiniteNumber)(u)?u:A,O=(function(e){switch(e.type){case _.PlaylistContextType.AUDIO_TRACK:return _.PlaylistLevelType.AUDIO;case _.PlaylistContextType.SUBTITLE_TRACK:return _.PlaylistLevelType.SUBTITLE;default:return _.PlaylistLevelType.MAIN}})(o),N=E.default.parseLevelPlaylist(e.data,c,I,O,A);if(N.fragments.length){if(d===_.PlaylistContextType.MANIFEST){var R={attrs:new T.AttrList({}),bitrate:0,details:N,name:"",url:c};s.trigger(n.Events.MANIFEST_LOADED,{levels:[R],audioTracks:[],url:c,stats:t,networkDetails:r,sessionData:null})}if(t.parsing.end=performance.now(),N.needSidxRanges){var m,p=null===(m=N.fragments[0].initSegment)||void 0===m?void 0:m.url;this.load({url:p,isSidxRequest:!0,type:d,level:u,levelDetails:N,id:S,groupId:null,rangeStart:0,rangeEnd:2048,responseType:"arraybuffer",deliveryDirectives:null})}else o.levelDetails=N,this.handlePlaylistLoaded(e,t,o,r)}else s.trigger(n.Events.ERROR,{type:i.ErrorTypes.NETWORK_ERROR,details:i.ErrorDetails.LEVEL_EMPTY_ERROR,fatal:!1,url:c,reason:"no fragments found in level",level:"number"==typeof o.level?o.level:void 0})},t.handleSidxRequest=function(e,t){var o=new Uint8Array(e.data),a=Object(s.findBox)(o,["sidx"])[0];if(a){var n=Object(s.parseSegmentIndex)(a);if(n){var i=n.references,r=t.levelDetails;i.forEach((function(e,t){var a=e.info,n=r.fragments[t];if(0===n.byteRange.length&&n.setByteRange(String(1+a.end-a.start)+"@"+String(a.start)),n.initSegment){var i=Object(s.findBox)(o,["moov"])[0],E=i?i.length:null;n.initSegment.setByteRange(String(E)+"@0")}}))}}},t.handleManifestParsingError=function(e,t,o,a){this.hls.trigger(n.Events.ERROR,{type:i.ErrorTypes.NETWORK_ERROR,details:i.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:t.type===_.PlaylistContextType.MANIFEST,url:e.url,reason:o,response:e,context:t,networkDetails:a})},t.handleNetworkError=function(e,t,o,a){void 0===o&&(o=!1),r.logger.warn("[playlist-loader]: A network "+(o?"timeout":"error")+" occurred while loading "+e.type+" level: "+e.level+" id: "+e.id+' group-id: "'+e.groupId+'"');var s=i.ErrorDetails.UNKNOWN,E=!1,T=this.getInternalLoader(e);switch(e.type){case _.PlaylistContextType.MANIFEST:s=o?i.ErrorDetails.MANIFEST_LOAD_TIMEOUT:i.ErrorDetails.MANIFEST_LOAD_ERROR,E=!0;break;case _.PlaylistContextType.LEVEL:s=o?i.ErrorDetails.LEVEL_LOAD_TIMEOUT:i.ErrorDetails.LEVEL_LOAD_ERROR,E=!1;break;case _.PlaylistContextType.AUDIO_TRACK:s=o?i.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:i.ErrorDetails.AUDIO_TRACK_LOAD_ERROR,E=!1;break;case _.PlaylistContextType.SUBTITLE_TRACK:s=o?i.ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT:i.ErrorDetails.SUBTITLE_LOAD_ERROR,E=!1}T&&this.resetInternalLoader(e.type);var l={type:i.ErrorTypes.NETWORK_ERROR,details:s,fatal:E,url:e.url,loader:T,context:e,networkDetails:t};a&&(l.response=a),this.hls.trigger(n.Events.ERROR,l)},t.handlePlaylistLoaded=function(e,t,o,a){var i=o.type,r=o.level,s=o.id,E=o.groupId,T=o.loader,l=o.levelDetails,S=o.deliveryDirectives;if(null!=l&&l.targetduration){if(T)switch(l.live&&(T.getCacheAge&&(l.ageHeader=T.getCacheAge()||0),T.getCacheAge&&!isNaN(l.ageHeader)||(l.ageHeader=0)),i){case _.PlaylistContextType.MANIFEST:case _.PlaylistContextType.LEVEL:this.hls.trigger(n.Events.LEVEL_LOADED,{details:l,level:r||0,id:s||0,stats:t,networkDetails:a,deliveryDirectives:S});break;case _.PlaylistContextType.AUDIO_TRACK:this.hls.trigger(n.Events.AUDIO_TRACK_LOADED,{details:l,id:s||0,groupId:E||"",stats:t,networkDetails:a,deliveryDirectives:S});break;case _.PlaylistContextType.SUBTITLE_TRACK:this.hls.trigger(n.Events.SUBTITLE_TRACK_LOADED,{details:l,id:s||0,groupId:E||"",stats:t,networkDetails:a,deliveryDirectives:S})}}else this.handleManifestParsingError(e,o,"invalid target duration",a)},e})();t.default=S},"./src/polyfills/number.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"isFiniteNumber",(function(){return a})),o.d(t,"MAX_SAFE_INTEGER",(function(){return n}));var a=Number.isFinite||function(e){return"number"==typeof e&&isFinite(e)},n=Number.MAX_SAFE_INTEGER||9007199254740991},"./src/remux/aac-helper.ts":function(e,t,o){"use strict";o.r(t);var a=(function(){function e(){}return e.getSilentFrame=function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}},e})();t.default=a},"./src/remux/mp4-generator.ts":function(e,t,o){"use strict";o.r(t);var a=Math.pow(2,32)-1,n=(function(){function e(){}return e.init=function(){var t;for(t in e.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},e.types)e.types.hasOwnProperty(t)&&(e.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);var o=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),a=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);e.HDLR_TYPES={video:o,audio:a};var n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),i=new Uint8Array([0,0,0,0,0,0,0,0]);e.STTS=e.STSC=e.STCO=i,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);var r=new Uint8Array([105,115,111,109]),s=new Uint8Array([97,118,99,49]),E=new Uint8Array([0,0,0,1]);e.FTYP=e.box(e.types.ftyp,r,E,r,s),e.DINF=e.box(e.types.dinf,e.box(e.types.dref,n))},e.box=function(e){for(var t=8,o=arguments.length,a=new Array(o>1?o-1:0),n=1;n>24&255,s[1]=t>>16&255,s[2]=t>>8&255,s[3]=255&t,s.set(e,4),i=0,t=8;i>24&255,t>>16&255,t>>8&255,255&t,n>>24,n>>16&255,n>>8&255,255&n,i>>24,i>>16&255,i>>8&255,255&i,85,196,0,0]))},e.mdia=function(t){return e.box(e.types.mdia,e.mdhd(t.timescale,t.duration),e.hdlr(t.type),e.minf(t))},e.mfhd=function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))},e.minf=function(t){return"audio"===t.type?e.box(e.types.minf,e.box(e.types.smhd,e.SMHD),e.DINF,e.stbl(t)):e.box(e.types.minf,e.box(e.types.vmhd,e.VMHD),e.DINF,e.stbl(t))},e.moof=function(t,o,a){return e.box(e.types.moof,e.mfhd(t),e.traf(a,o))},e.moov=function(t){for(var o=t.length,a=[];o--;)a[o]=e.trak(t[o]);return e.box.apply(null,[e.types.moov,e.mvhd(t[0].timescale,t[0].duration)].concat(a).concat(e.mvex(t)))},e.mvex=function(t){for(var o=t.length,a=[];o--;)a[o]=e.trex(t[o]);return e.box.apply(null,[e.types.mvex].concat(a))},e.mvhd=function(t,o){o*=t;var n=Math.floor(o/(a+1)),i=Math.floor(o%(a+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,n>>24,n>>16&255,n>>8&255,255&n,i>>24,i>>16&255,i>>8&255,255&i,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return e.box(e.types.mvhd,r)},e.sdtp=function(t){var o,a,n=t.samples||[],i=new Uint8Array(4+n.length);for(o=0;o>>8&255),i.push(255&n),i=i.concat(Array.prototype.slice.call(a));for(o=0;o>>8&255),r.push(255&n),r=r.concat(Array.prototype.slice.call(a));var s=e.box(e.types.avcC,new Uint8Array([1,i[3],i[4],i[5],255,224|t.sps.length].concat(i).concat([t.pps.length]).concat(r))),E=t.width,_=t.height,T=t.pixelRatio[0],l=t.pixelRatio[1];return e.box(e.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,E>>8&255,255&E,_>>8&255,255&_,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),s,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),e.box(e.types.pasp,new Uint8Array([T>>24,T>>16&255,T>>8&255,255&T,l>>24,l>>16&255,l>>8&255,255&l])))},e.esds=function(e){var t=e.config.length;return new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e.config).concat([6,1,2]))},e.mp4a=function(t){var o=t.samplerate;return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,o>>8&255,255&o,0,0]),e.box(e.types.esds,e.esds(t)))},e.mp3=function(t){var o=t.samplerate;return e.box(e.types[".mp3"],new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,o>>8&255,255&o,0,0]))},e.stsd=function(t){return"audio"===t.type?"mp3"===t.segmentCodec&&"mp3"===t.codec?e.box(e.types.stsd,e.STSD,e.mp3(t)):e.box(e.types.stsd,e.STSD,e.mp4a(t)):e.box(e.types.stsd,e.STSD,e.avc1(t))},e.tkhd=function(t){var o=t.id,n=t.duration*t.timescale,i=t.width,r=t.height,s=Math.floor(n/(a+1)),E=Math.floor(n%(a+1));return e.box(e.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,o>>24&255,o>>16&255,o>>8&255,255&o,0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s,E>>24,E>>16&255,E>>8&255,255&E,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>8&255,255&i,0,0,r>>8&255,255&r,0,0]))},e.traf=function(t,o){var n=e.sdtp(t),i=t.id,r=Math.floor(o/(a+1)),s=Math.floor(o%(a+1));return e.box(e.types.traf,e.box(e.types.tfhd,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i])),e.box(e.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,s>>24,s>>16&255,s>>8&255,255&s])),e.trun(t,n.length+16+20+8+16+8+8),n)},e.trak=function(t){return t.duration=t.duration||4294967295,e.box(e.types.trak,e.tkhd(t),e.mdia(t))},e.trex=function(t){var o=t.id;return e.box(e.types.trex,new Uint8Array([0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))},e.trun=function(t,o){var a,n,i,r,s,E,_=t.samples||[],T=_.length,l=12+16*T,S=new Uint8Array(l);for(o+=8+l,S.set(["video"===t.type?1:0,0,15,1,T>>>24&255,T>>>16&255,T>>>8&255,255&T,o>>>24&255,o>>>16&255,o>>>8&255,255&o],0),a=0;a>>24&255,i>>>16&255,i>>>8&255,255&i,r>>>24&255,r>>>16&255,r>>>8&255,255&r,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.paddingValue<<1|s.isNonSync,61440&s.degradPrio,15&s.degradPrio,E>>>24&255,E>>>16&255,E>>>8&255,255&E],12+16*a);return e.box(e.types.trun,S)},e.initSegment=function(t){e.types||e.init();var o=e.moov(t),a=new Uint8Array(e.FTYP.byteLength+o.byteLength);return a.set(e.FTYP),a.set(o,e.FTYP.byteLength),a},e})();n.types=void 0,n.HDLR_TYPES=void 0,n.STTS=void 0,n.STSC=void 0,n.STCO=void 0,n.STSZ=void 0,n.VMHD=void 0,n.SMHD=void 0,n.STSD=void 0,n.FTYP=void 0,n.DINF=void 0,t.default=n},"./src/remux/mp4-remuxer.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return d})),o.d(t,"normalizePts",(function(){return c})),o.d(t,"flushTextTrackMetadataCueSamples",(function(){return A})),o.d(t,"flushTextTrackUserdataCueSamples",(function(){return I}));var a=o("./src/polyfills/number.ts"),n=o("./src/remux/aac-helper.ts"),i=o("./src/remux/mp4-generator.ts"),r=o("./src/events.ts"),s=o("./src/errors.ts"),E=o("./src/utils/logger.ts"),_=o("./src/types/loader.ts"),T=o("./src/utils/timescale-conversion.ts");function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t0?e:o.pts}),e[0].pts);return t&&E.logger.debug("PTS rollover detected"),o},t.remux=function(e,t,o,a,n,i,r,s){var T,l,S,u,d,O,N=n,R=n,m=e.pid>-1,p=t.pid>-1,h=t.samples.length,L=e.samples.length>0,f=r&&h>0||h>1;if((!m||L)&&(!p||f)||this.ISGenerated||r){this.ISGenerated||(S=this.generateIS(e,t,n));var C,D=this.isVideoContiguous,g=-1;if(f&&(g=(function(e){for(var t=0;t0){E.logger.warn("[mp4-remuxer]: Dropped "+g+" out of "+h+" video samples due to a missing keyframe");var v=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(g),t.dropped+=g,C=R+=(t.samples[0].pts-v)/t.inputTimeScale}else-1===g&&(E.logger.warn("[mp4-remuxer]: No keyframe found out of "+h+" video samples"),O=!1);if(this.ISGenerated){if(L&&f){var P=this.getVideoStartPts(t.samples),y=(c(e.samples[0].pts,P)-P)/t.inputTimeScale;N+=Math.max(0,y),R+=Math.max(0,-y)}if(L){if(e.samplerate||(E.logger.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),S=this.generateIS(e,t,n)),l=this.remuxAudio(e,N,this.isAudioContiguous,i,p||f||s===_.PlaylistLevelType.AUDIO?R:void 0),f){var B=l?l.endPTS-l.startPTS:0;t.inputTimeScale||(E.logger.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),S=this.generateIS(e,t,n)),T=this.remuxVideo(t,R,D,B)}}else f&&(T=this.remuxVideo(t,R,D,0));T&&(T.firstKeyFrame=g,T.independent=-1!==g,T.firstKeyFramePTS=C)}}return this.ISGenerated&&(o.samples.length&&(d=A(o,n,this._initPTS,this._initDTS)),a.samples.length&&(u=I(a,n,this._initPTS))),{audio:l,video:T,initSegment:S,independent:O,text:u,id3:d}},t.generateIS=function(e,t,o){var n,r,s,E=e.samples,_=t.samples,T=this.typeSupported,l={},S=!Object(a.isFiniteNumber)(this._initPTS),u="audio/mp4";if(S&&(n=r=1/0),e.config&&E.length&&(e.timescale=e.samplerate,"mp3"===e.segmentCodec&&(T.mpeg?(u="audio/mpeg",e.codec=""):T.mp3&&(e.codec="mp3")),l.audio={id:"audio",container:u,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&T.mpeg?new Uint8Array(0):i.default.initSegment([e]),metadata:{channelCount:e.channelCount}},S&&(s=e.inputTimeScale,n=r=E[0].pts-Math.round(s*o))),t.sps&&t.pps&&_.length&&(t.timescale=t.inputTimeScale,l.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:i.default.initSegment([t]),metadata:{width:t.width,height:t.height}},S)){s=t.inputTimeScale;var d=this.getVideoStartPts(_),A=Math.round(s*o);r=Math.min(r,c(_[0].dts,d)-A),n=Math.min(n,d-A)}if(Object.keys(l).length)return this.ISGenerated=!0,S&&(this._initPTS=n,this._initDTS=r),{tracks:l,initPTS:n,timescale:s}},t.remuxVideo=function(e,t,o,a){var n,_,d=e.inputTimeScale,A=e.samples,I=[],N=A.length,R=this._initPTS,m=this.nextAvcDts,p=8,h=this.videoSampleDuration,L=Number.POSITIVE_INFINITY,f=Number.NEGATIVE_INFINITY,C=!1;o&&null!==m||(m=t*d-(A[0].pts-c(A[0].dts,A[0].pts)));for(var D=0;D0?D-1:D].dts&&(C=!0)}C&&A.sort((function(e,t){var o=e.dts-t.dts,a=e.pts-t.pts;return o||a})),n=A[0].dts;var v=(_=A[A.length-1].dts)-n,P=v?Math.round(v/(N-1)):h||e.inputTimeScale/30;if(o){var y=n-m,B=y>P;if(B||y<-1){B?E.logger.warn("AVC: "+Object(T.toMsFromMpegTsClock)(y,!0)+" ms ("+y+"dts) hole between fragments detected, filling it"):E.logger.warn("AVC: "+Object(T.toMsFromMpegTsClock)(-y,!0)+" ms ("+y+"dts) overlapping between fragments detected"),n=m;var b=A[0].pts-y;A[0].dts=n,A[0].pts=b,E.logger.log("Video: First PTS/DTS adjusted: "+Object(T.toMsFromMpegTsClock)(b,!0)+"/"+Object(T.toMsFromMpegTsClock)(n,!0)+", delta: "+Object(T.toMsFromMpegTsClock)(y,!0)+" ms")}}n=Math.max(0,n);for(var M=0,U=0,W=0;W0?q.dts-A[$-1].dts:P;if(ie=$>0?q.pts-A[$-1].pts:P,re.stretchShortVideoTrack&&null!==this.nextAudioPts){var Ee=Math.floor(re.maxBufferHole*d),_e=(a?L+a*d:this.nextAudioPts)-q.pts;_e>Ee?((h=_e-se)<0?h=se:x=!0,E.logger.log("[mp4-remuxer]: It is approximately "+_e/90+" ms to the next segment; using duration "+h/90+" ms for the last video frame.")):h=se}else h=se}var Te=Math.round(q.pts-q.dts);K=Math.min(K,h),Q=Math.max(Q,h),j=Math.min(j,ie),X=Math.max(X,ie),I.push(new O(q.key,h,Z,Te))}if(I.length)if(S){if(S<70){var le=I[0].flags;le.dependsOn=2,le.isNonSync=0}}else if(u&&X-j0&&(a&&Math.abs(L-h)<9e3||Math.abs(c(m[0].pts-A,L)-h)<20*d),m.forEach((function(e){e.pts=c(e.pts-A,L)})),!o||h<0){if(m=m.filter((function(e){return e.pts>=0})),!m.length)return;h=0===_?0:a&&!R?Math.max(0,L):m[0].pts}if("aac"===e.segmentCodec)for(var f=this.config.maxAudioFramesDrift,C=0,D=h;C=f*d&&y<1e4&&R){var B=Math.round(P/d);(D=v-B*d)<0&&(B--,D+=d),0===C&&(this.nextAudioPts=h=D),E.logger.warn("[mp4-remuxer]: Injecting "+B+" audio frame @ "+(D/T).toFixed(3)+"s due to "+Math.round(1e3*P/T)+" ms gap.");for(var b=0;b0))return;k+=p;try{W=new Uint8Array(k)}catch(e){return void this.observer.emit(r.Events.ERROR,r.Events.ERROR,{type:s.ErrorTypes.MUX_ERROR,details:s.ErrorDetails.REMUX_ALLOC_ERROR,fatal:!1,bytes:k,reason:"fail allocating audio mdat "+k})}I||(new DataView(W.buffer).setUint32(0,k),W.set(i.default.types.mdat,4))}W.set(z,p);var K=z.byteLength;p+=K,N.push(new O(!0,u,K,0)),F=x}var j=N.length;if(j){var Q=N[N.length-1];this.nextAudioPts=h=F+S*Q.duration;var X=I?new Uint8Array(0):i.default.moof(e.sequenceNumber++,G/S,l({},e,{samples:N}));e.samples=[];var $=G/T,q=h/T,J={data1:X,data2:W,startPTS:$,endPTS:q,startDTS:$,endDTS:q,type:"audio",hasAudio:!0,hasVideo:!1,nb:j};return this.isAudioContiguous=!0,console.assert(W.length,"MDAT length must not be zero"),J}},t.remuxEmptyAudio=function(e,t,o,a){var i=e.inputTimeScale,r=i/(e.samplerate?e.samplerate:i),s=this.nextAudioPts,_=(null!==s?s:a.startDTS*i)+this._initDTS,T=a.endDTS*i+this._initDTS,l=1024*r,S=Math.ceil((T-_)/l),u=n.default.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(E.logger.warn("[mp4-remuxer]: remux empty Audio"),u){for(var d=[],c=0;c4294967296;)e+=o;return e}function A(e,t,o,a){var n=e.samples.length;if(n){for(var i=e.inputTimeScale,r=0;r0?this.lastEndTime=N:(s.logger.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());var R=!!c.audio,m=!!c.video,p="";R&&(p+="audio"),m&&(p+="video");var h={data1:u,startPTS:O,startDTS:O,endPTS:N,endDTS:N,type:p,hasAudio:R,hasVideo:m,nb:1,dropped:0};S.audio="audio"===h.type?h:void 0,S.video="audio"!==h.type?h:void 0,S.initSegment=d;var L=null!=(_=this.initPTS)?_:0;return S.id3=Object(n.flushTextTrackMetadataCueSamples)(o,E,L,L),r.samples.length&&(S.text=Object(n.flushTextTrackUserdataCueSamples)(r,E,L)),S},e})();function _(e,t){var o=null==e?void 0:e.codec;return o&&o.length>4?o:"hvc1"===o||"hev1"===o?"hvc1.1.c.L120.90":"av01"===o?"av01.0.04M.08":"avc1"===o||t===r.ElementaryStreamTypes.VIDEO?"avc1.42e01e":"mp4a.40.5"}t.default=E},"./src/task-loop.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return a}));var a=(function(){function e(){this._boundTick=void 0,this._tickTimer=null,this._tickInterval=null,this._tickCallCount=0,this._boundTick=this.tick.bind(this)}var t=e.prototype;return t.destroy=function(){this.onHandlerDestroying(),this.onHandlerDestroyed()},t.onHandlerDestroying=function(){this.clearNextTick(),this.clearInterval()},t.onHandlerDestroyed=function(){},t.hasInterval=function(){return!!this._tickInterval},t.hasNextTick=function(){return!!this._tickTimer},t.setInterval=function(e){return!this._tickInterval&&(this._tickInterval=self.setInterval(this._boundTick,e),!0)},t.clearInterval=function(){return!!this._tickInterval&&(self.clearInterval(this._tickInterval),this._tickInterval=null,!0)},t.clearNextTick=function(){return!!this._tickTimer&&(self.clearTimeout(this._tickTimer),this._tickTimer=null,!0)},t.tick=function(){this._tickCallCount++,1===this._tickCallCount&&(this.doTick(),this._tickCallCount>1&&this.tickImmediate(),this._tickCallCount=0)},t.tickImmediate=function(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)},t.doTick=function(){},e})()},"./src/types/cmcd.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"CMCDVersion",(function(){return r})),o.d(t,"CMCDObjectType",(function(){return a})),o.d(t,"CMCDStreamingFormat",(function(){return n})),o.d(t,"CMCDStreamType",(function(){return i}));var a,n,i,r=1;!(function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"})(a||(a={})),(function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"})(n||(n={})),(function(e){e.VOD="v",e.LIVE="l"})(i||(i={}))},"./src/types/demuxer.ts":function(e,t,o){"use strict";var a;o.r(t),o.d(t,"MetadataSchema",(function(){return a})),(function(e){e.audioId3="org.id3",e.dateRange="com.apple.quicktime.HLS",e.emsg="https://aomedia.org/emsg/ID3"})(a||(a={}))},"./src/types/level.ts":function(e,t,o){"use strict";function a(e,t){for(var o=0;oNumber.MAX_SAFE_INTEGER?1/0:t},t.hexadecimalInteger=function(e){if(this[e]){var t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;for(var o=new Uint8Array(t.length/2),a=0;aNumber.MAX_SAFE_INTEGER?1/0:t},t.decimalFloatingPoint=function(e){return parseFloat(this[e])},t.optionalFloat=function(e,t){var o=this[e];return o?parseFloat(o):t},t.enumeratedString=function(e){return this[e]},t.bool=function(e){return"YES"===this[e]},t.decimalResolution=function(e){var t=a.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}},e.parseAttrList=function(e){var t,o={};for(n.lastIndex=0;null!==(t=n.exec(e));){var a=t[2];0===a.indexOf('"')&&a.lastIndexOf('"')===a.length-1&&(a=a.slice(1,-1)),o[t[1]]=a}return o},e})()},"./src/utils/binary-search.ts":function(e,t,o){"use strict";o.r(t),t.default={search:function(e,t){for(var o=0,a=e.length-1,n=null,i=null;o<=a;){var r=t(i=e[n=(o+a)/2|0]);if(r>0)o=n+1;else{if(!(r<0))return i;a=n-1}}return null}}},"./src/utils/buffer-helper.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"BufferHelper",(function(){return i}));var a=o("./src/utils/logger.ts"),n={length:0,start:function(){return 0},end:function(){return 0}},i=(function(){function e(){}return e.isBuffered=function(t,o){try{if(t)for(var a=e.getBuffered(t),n=0;n=a.start(n)&&o<=a.end(n))return!0}catch(e){}return!1},e.bufferInfo=function(t,o,a){try{if(t){var n,i=e.getBuffered(t),r=[];for(n=0;nr&&(a[i-1].end=e[n].end):a.push(e[n])}else a.push(e[n])}else a=e;for(var s,E=0,_=t,T=t,l=0;l=S&&t=e&&n.logger.log(this.time+" ["+e+"] "+t)},e})(),c=function(e){for(var t=[],o=0;oE&&(this.logger.log(a.DEBUG,"Too large cursor position "+this.pos),this.pos=E)},t.moveCursor=function(e){var t=this.pos+e;if(e>1)for(var o=this.pos+1;o=144&&this.backSpace();var t=r(e);this.pos>=E?this.logger.log(a.ERROR,"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!"):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))},t.clearFromPos=function(e){var t;for(t=e;t0&&(o=e?"["+t.join(" | ")+"]":t.join("\n")),o},t.getTextAndFormat=function(){return this.rows},e})(),R=(function(){function e(e,t,o){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new N(o),this.nonDisplayedMemory=new N(o),this.lastOutputScreen=new N(o),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=o}var t=e.prototype;return t.reset=function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null},t.getHandler=function(){return this.outputFilter},t.setHandler=function(e){this.outputFilter=e},t.setPAC=function(e){this.writeScreen.setPAC(e)},t.setBkgData=function(e){this.writeScreen.setBkgData(e)},t.setMode=function(e){e!==this.mode&&(this.mode=e,this.logger.log(a.INFO,"MODE="+e),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)},t.insertChars=function(e){for(var t=0;t=46,t.italics)t.foreground="white";else{var o=Math.floor(e/2)-16;t.foreground=["white","green","blue","cyan","red","yellow","magenta"][o]}this.logger.log(a.INFO,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)},t.outputDataUpdate=function(e){void 0===e&&(e=!1);var t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen),e&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:t):this.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))},t.cueSplitAtTime=function(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))},e})(),m=(function(){function e(e,t,o){this.channels=void 0,this.currentChannel=0,this.cmdHistory=void 0,this.logger=void 0;var a=new d;this.channels=[null,new R(e,t,a),new R(e+1,o,a)],this.cmdHistory={a:null,b:null},this.logger=a}var t=e.prototype;return t.getHandler=function(e){return this.channels[e].getHandler()},t.setHandler=function(e,t){this.channels[e].setHandler(t)},t.addData=function(e,t){var o,n,i,r=!1;this.logger.time=e;for(var s=0;s ("+c([n,i])+")"),(o=this.parseCmd(n,i))||(o=this.parseMidrow(n,i)),o||(o=this.parsePAC(n,i)),o||(o=this.parseBackgroundAttributes(n,i)),!o&&(r=this.parseChars(n,i))){var E=this.currentChannel;E&&E>0?this.channels[E].insertChars(r):this.logger.log(a.WARNING,"No channel found yet. TEXT-MODE?")}o||r||this.logger.log(a.WARNING,"Couldn't parse cleaned data "+c([n,i])+" orig: "+c([t[s],t[s+1]]))}},t.parseCmd=function(e,t){var o=this.cmdHistory;if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47||(23===e||31===e)&&t>=33&&t<=35))return!1;if(h(e,t,o))return p(null,null,o),this.logger.log(a.DEBUG,"Repeated command ("+c([e,t])+") is dropped"),!0;var n=20===e||21===e||23===e?1:2,i=this.channels[n];return 20===e||21===e||28===e||29===e?32===t?i.ccRCL():33===t?i.ccBS():34===t?i.ccAOF():35===t?i.ccAON():36===t?i.ccDER():37===t?i.ccRU(2):38===t?i.ccRU(3):39===t?i.ccRU(4):40===t?i.ccFON():41===t?i.ccRDC():42===t?i.ccTR():43===t?i.ccRTD():44===t?i.ccEDM():45===t?i.ccCR():46===t?i.ccENM():47===t&&i.ccEOC():i.ccTO(t-32),p(e,t,o),this.currentChannel=n,!0},t.parseMidrow=function(e,t){var o=0;if((17===e||25===e)&&t>=32&&t<=47){if((o=17===e?1:2)!==this.currentChannel)return this.logger.log(a.ERROR,"Mismatch channel in midrow parsing"),!1;var n=this.channels[o];return!!n&&(n.ccMIDROW(t),this.logger.log(a.DEBUG,"MIDROW ("+c([e,t])+")"),!0)}return!1},t.parsePAC=function(e,t){var o,a=this.cmdHistory;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127||(16===e||24===e)&&t>=64&&t<=95))return!1;if(h(e,t,a))return p(null,null,a),!0;var n=e<=23?1:2;o=t>=64&&t<=95?1===n?_[e]:l[e]:1===n?T[e]:S[e];var i=this.channels[n];return!!i&&(i.setPAC(this.interpretPAC(o,t)),p(e,t,a),this.currentChannel=n,!0)},t.interpretPAC=function(e,t){var o,a={color:null,italics:!1,indent:null,underline:!1,row:e};return o=t>95?t-96:t-64,a.underline=1==(1&o),o<=13?a.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(o/2)]:o<=15?(a.italics=!0,a.color="white"):a.indent=4*Math.floor((o-16)/2),a},t.parseChars=function(e,t){var o,n,i=null,s=null;if(e>=25?(o=2,s=e-8):(o=1,s=e),s>=17&&s<=19?(n=17===s?t+80:18===s?t+112:t+144,this.logger.log(a.INFO,"Special char '"+r(n)+"' in channel "+o),i=[n]):e>=32&&e<=127&&(i=0===t?[e]:[e,t]),i){var E=c(i);this.logger.log(a.DEBUG,"Char codes = "+E.join(",")),p(e,t,this.cmdHistory)}return i},t.parseBackgroundAttributes=function(e,t){var o;if(!((16===e||24===e)&&t>=32&&t<=47||(23===e||31===e)&&t>=45&&t<=47))return!1;var a={};16===e||24===e?(o=Math.floor((t-32)/2),a.background=u[o],t%2==1&&(a.background=a.background+"_semi")):45===t?a.background="transparent":(a.foreground="black",47===t&&(a.underline=!0));var n=e<=23?1:2;return this.channels[n].setBkgData(a),p(e,t,this.cmdHistory),!0},t.reset=function(){for(var e=0;e=16?l--:l++;var I=Object(a.fixLineBreaks)(S.trim()),O=Object(n.generateCueId)(t,o,I);e&&e.cues&&e.cues.getCueById(O)||((_=new d(t,o,I)).id=O,_.line=c+1,_.align="left",_.position=10+Math.min(80,10*Math.floor(8*l/32)),u.push(_))}return e&&u.length&&(u.sort((function(e,t){return"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line})),u.forEach((function(t){return Object(i.addCueToTrack)(e,t)}))),u}};t.default=s},"./src/utils/discontinuities.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"findFirstFragWithCC",(function(){return r})),o.d(t,"shouldAlignOnDiscontinuities",(function(){return s})),o.d(t,"findDiscontinuousReferenceFrag",(function(){return E})),o.d(t,"adjustSlidingStart",(function(){return T})),o.d(t,"alignStream",(function(){return l})),o.d(t,"alignPDT",(function(){return S})),o.d(t,"alignFragmentByPDTDelta",(function(){return u})),o.d(t,"alignMediaPlaylistByPDT",(function(){return d}));var a=o("./src/polyfills/number.ts"),n=o("./src/utils/logger.ts"),i=o("./src/controller/level-helper.ts");function r(e,t){for(var o=null,a=0,n=e.length;ao.startCC||e&&e.cc=this.minWeight_},t.getEstimate=function(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_},t.destroy=function(){},e})();t.default=n},"./src/utils/ewma.ts":function(e,t,o){"use strict";o.r(t);var a=(function(){function e(e,t,o){void 0===t&&(t=0),void 0===o&&(o=0),this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=e,this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=t,this.totalWeight_=o}var t=e.prototype;return t.sample=function(e,t){var o=Math.pow(this.alpha_,e);this.estimate_=t*(1-o)+o*this.estimate_,this.totalWeight_+=e},t.getTotalWeight=function(){return this.totalWeight_},t.getEstimate=function(){if(this.alpha_){var e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_},e})();t.default=a},"./src/utils/fetch-loader.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"fetchSupported",(function(){return S}));var a=o("./src/polyfills/number.ts"),n=o("./src/loader/load-stats.ts"),i=o("./src/demux/chunk-cache.ts");function r(e){var t="function"==typeof Map?new Map:void 0;return r=function(e){if(null===e||(o=e,-1===Function.toString.call(o).indexOf("[native code]")))return e;var o;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,a)}function a(){return s(e,arguments,T(this).constructor)}return a.prototype=Object.create(e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),_(a,e)},r(e)}function s(e,t,o){return s=E()?Reflect.construct.bind():function(e,t,o){var a=[null];a.push.apply(a,t);var n=new(Function.bind.apply(e,a));return o&&_(n,o.prototype),n},s.apply(null,arguments)}function E(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _(e,t){return _=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},_(e,t)}function T(e){return T=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},T(e)}function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t=a&&n(t,o,r.flush(),e)):n(t,o,E,e),i()})).catch((function(){return Promise.reject()}))})()},e})();function d(e,t){return new self.Request(e.url,t)}var c=(function(e){var t,o;function a(t,o,a){var n;return(n=e.call(this,t)||this).code=void 0,n.details=void 0,n.code=o,n.details=a,n}return o=e,(t=a).prototype=Object.create(o.prototype),t.prototype.constructor=t,_(t,o),a})(r(Error));t.default=u},"./src/utils/imsc1-ttml-parser.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"IMSC1_CODEC",(function(){return T})),o.d(t,"parseIMSC1",(function(){return d}));var a=o("./src/utils/mp4-tools.ts"),n=o("./src/utils/vttparser.ts"),i=o("./src/utils/vttcue.ts"),r=o("./src/demux/id3.ts"),s=o("./src/utils/timescale-conversion.ts"),E=o("./src/utils/webvtt-parser.ts");function _(){return _=Object.assign?Object.assign.bind():function(e){for(var t=1;t"):a}function s(e){if(self.console&&!0===e||"object"==typeof e){!(function(e){for(var t=arguments.length,o=new Array(t>1?t-1:0),a=1;a>24,e[t+1]=o>>16&255,e[t+2]=o>>8&255,e[t+3]=255&o}function d(e,t){var o=[];if(!t.length)return o;for(var a=e.byteLength,n=0;n1?n+i:a;if(_(e.subarray(n+4,n+8))===t[0])if(1===t.length)o.push(e.subarray(n+8,r));else{var E=d(e.subarray(n+8,r),t.slice(1));E.length&&s.apply(o,E)}n=r}return o}function c(e){var t=[],o=e[0],a=8,n=l(e,a);a+=4,a+=0===o?8:16,a+=2;var i=e.length+0,r=T(e,a);a+=2;for(var s=0;s>>31)return console.warn("SIDX has hierarchical references (not supported)"),null;var u=l(e,E);E+=4,t.push({referenceSize:S,subsegmentDuration:u,info:{duration:u/n,start:i,end:i+S-1}}),i+=S,a=E+=4}return{earliestPresentationTime:0,timescale:n,version:o,referencesCount:r,references:t}}function A(e){for(var t=[],o=d(e,["moov","trak"]),a=0;a=a.length)break;r+=_=a[n++]}while(255===_);s=0;do{if(n>=a.length)break;s+=_=a[n++]}while(255===_);var S=a.length-n;if(!E&&4===r&&n16){for(var m=[],p=0;p<16;p++){var h=a[n++].toString(16);m.push(1==h.length?"0"+h:h),3!==p&&5!==p&&7!==p&&9!==p||m.push("-")}for(var L=s-16,f=new Uint8Array(L),C=0;CS)break}}function C(e){var t=e[0],o="",a="",n=0,i=0,r=0,s=0,E=0,T=0;if(0===t){for(;"\0"!==_(e.subarray(T,T+1));)o+=_(e.subarray(T,T+1)),T+=1;for(o+=_(e.subarray(T,T+1)),T+=1;"\0"!==_(e.subarray(T,T+1));)a+=_(e.subarray(T,T+1)),T+=1;a+=_(e.subarray(T,T+1)),T+=1,n=l(e,12),i=l(e,16),s=l(e,20),E=l(e,24),T=28}else if(1===t){n=l(e,T+=4);var S=l(e,T+=4),u=l(e,T+=4);for(T+=4,r=Math.pow(2,32)*S+u,Number.isSafeInteger(r)||(r=Number.MAX_SAFE_INTEGER,console.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),s=l(e,T),E=l(e,T+=4),T+=4;"\0"!==_(e.subarray(T,T+1));)o+=_(e.subarray(T,T+1)),T+=1;for(o+=_(e.subarray(T,T+1)),T+=1;"\0"!==_(e.subarray(T,T+1));)a+=_(e.subarray(T,T+1)),T+=1;a+=_(e.subarray(T,T+1)),T+=1}return{schemeIdUri:o,value:a,timeScale:n,presentationTime:r,presentationTimeDelta:i,eventDuration:s,id:E,payload:e.subarray(T,e.byteLength)}}},"./src/utils/output-filter.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return a}));var a=(function(){function e(e,t){this.timelineController=void 0,this.cueRanges=[],this.trackName=void 0,this.startTime=null,this.endTime=null,this.screen=null,this.timelineController=e,this.trackName=t}var t=e.prototype;return t.dispatchCue=function(){null!==this.startTime&&(this.timelineController.addCues(this.trackName,this.startTime,this.endTime,this.screen,this.cueRanges),this.startTime=null)},t.newCue=function(e,t,o){(null===this.startTime||this.startTime>e)&&(this.startTime=e),this.endTime=t,this.screen=o,this.timelineController.createCaptionsTrack(this.trackName)},t.reset=function(){this.cueRanges=[],this.startTime=null},e})()},"./src/utils/texttrack-utils.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"sendAddTrackEvent",(function(){return n})),o.d(t,"addCueToTrack",(function(){return i})),o.d(t,"clearCurrentCues",(function(){return r})),o.d(t,"removeCuesInRange",(function(){return s})),o.d(t,"getCuesInRange",(function(){return E}));var a=o("./src/utils/logger.ts");function n(e,t){var o;try{o=new Event("addtrack")}catch(e){(o=document.createEvent("Event")).initEvent("addtrack",!1,!1)}o.track=e,t.dispatchEvent(o)}function i(e,t){var o=e.mode;if("disabled"===o&&(e.mode="hidden"),e.cues&&!e.cues.getCueById(t.id))try{if(e.addCue(t),!e.cues.getCueById(t.id))throw new Error("addCue is failed for: "+t)}catch(o){a.logger.debug("[texttrack-utils]: "+o);var n=new self.TextTrackCue(t.startTime,t.endTime,t.text);n.id=t.id,e.addCue(n)}"disabled"===o&&(e.mode=o)}function r(e){var t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(var o=e.cues.length;o--;)e.removeCue(e.cues[o]);"disabled"===t&&(e.mode=t)}function s(e,t,o,a){var n=e.mode;if("disabled"===n&&(e.mode="hidden"),e.cues&&e.cues.length>0)for(var i=E(e.cues,t,o),r=0;re[o].endTime)return-1;for(var a=0,n=o;a<=n;){var i=Math.floor((n+a)/2);if(te[i].startTime&&a-1)for(var i=n,r=e.length;i=t&&s.endTime<=o)a.push(s);else if(s.startTime>o)return a}return a}},"./src/utils/time-ranges.ts":function(e,t,o){"use strict";o.r(t),t.default={toString:function(e){for(var t="",o=e.length,a=0;a1?t-1:0),a=1;a100)throw new Error("Position must be between 0 and 100.");N=e,this.hasBeenReset=!0}})),Object.defineProperty(s,"positionAlign",n({},E,{get:function(){return R},set:function(e){var t=a(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");R=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"size",n({},E,{get:function(){return m},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");m=e,this.hasBeenReset=!0}})),Object.defineProperty(s,"align",n({},E,{get:function(){return p},set:function(e){var t=a(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");p=t,this.hasBeenReset=!0}})),s.displayState=void 0}return i.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},i})()},"./src/utils/vttparser.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"parseTimeStamp",(function(){return i})),o.d(t,"fixLineBreaks",(function(){return l})),o.d(t,"VTTParser",(function(){return S}));var a=o("./src/utils/vttcue.ts"),n=(function(){function e(){}return e.prototype.decode=function(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))},e})();function i(e){function t(e,t,o,a){return 3600*(0|e)+60*(0|t)+(0|o)+parseFloat(a||0)}var o=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return o?parseFloat(o[2])>59?t(o[2],o[3],0,o[4]):t(o[1],o[2],o[3],o[4]):null}var r=(function(){function e(){this.values=Object.create(null)}var t=e.prototype;return t.set=function(e,t){this.get(e)||""===t||(this.values[e]=t)},t.get=function(e,t,o){return o?this.has(e)?this.values[e]:t[o]:this.has(e)?this.values[e]:t},t.has=function(e){return e in this.values},t.alt=function(e,t,o){for(var a=0;a=0&&o<=100)return this.set(e,o),!0}return!1},e})();function s(e,t,o,a){var n=a?e.split(a):[e];for(var i in n)if("string"==typeof n[i]){var r=n[i].split(o);2===r.length&&t(r[0],r[1])}}var E=new a.default(0,0,""),_="middle"===E.align?"middle":"center";function T(e,t,o){var a=e;function n(){var t=i(e);if(null===t)throw new Error("Malformed timestamp: "+a);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function T(){e=e.replace(/^\s+/,"")}if(T(),t.startTime=n(),T(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+a);e=e.slice(3),T(),t.endTime=n(),T(),(function(e,t){var a=new r;s(e,(function(e,t){var n;switch(e){case"region":for(var i=o.length-1;i>=0;i--)if(o[i].id===t){a.set(e,o[i].region);break}break;case"vertical":a.alt(e,t,["rl","lr"]);break;case"line":n=t.split(","),a.integer(e,n[0]),a.percent(e,n[0])&&a.set("snapToLines",!1),a.alt(e,n[0],["auto"]),2===n.length&&a.alt("lineAlign",n[1],["start",_,"end"]);break;case"position":n=t.split(","),a.percent(e,n[0]),2===n.length&&a.alt("positionAlign",n[1],["start",_,"end","line-left","line-right","auto"]);break;case"size":a.percent(e,t);break;case"align":a.alt(e,t,["start",_,"end","left","right"])}}),/:/,/\s/),t.region=a.get("region",null),t.vertical=a.get("vertical","");var n=a.get("line","auto");"auto"===n&&-1===E.line&&(n=-1),t.line=n,t.lineAlign=a.get("lineAlign","start"),t.snapToLines=a.get("snapToLines",!0),t.size=a.get("size",100),t.align=a.get("align",_);var i=a.get("position","auto");"auto"===i&&50===E.position&&(i="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=i})(e,t)}function l(e){return e.replace(//gi,"\n")}var S=(function(){function e(){this.state="INITIAL",this.buffer="",this.decoder=new n,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}var t=e.prototype;return t.parse=function(e){var t=this;function o(){var e=t.buffer,o=0;for(e=l(e);o>>0).toString()};function l(e,t,o){return T(e.toString())+T(t.toString())+T(o)}function S(e,t,o,T,S,u,d,c){var A,I=new n.VTTParser,O=Object(i.utf8ArrayToStr)(new Uint8Array(e)).trim().replace(E,"\n").split("\n"),N=[],R=Object(r.toMpegTsClockFromTimescale)(t,o),m="00:00.000",p=0,h=0,L=!0;I.oncue=function(e){var t=T[S],o=T.ccOffset,a=(p-R)/9e4;null!=t&&t.new&&(void 0!==h?o=T.ccOffset=t.start:(function(e,t,o){var a=e[t],n=e[a.prevCC];if(!n||!n.new&&a.new)return e.ccOffset=e.presentationOffset=a.start,void(a.new=!1);for(;null!==(i=n)&&void 0!==i&&i.new;){var i;e.ccOffset+=a.start-n.start,a.new=!1,n=e[(a=n).prevCC]}e.presentationOffset=o})(T,S,a)),a&&(o=a-T.presentationOffset);var n=e.endTime-e.startTime,i=Object(s.normalizePts)(9e4*(e.startTime+o-h),9e4*u)/9e4;e.startTime=Math.max(i,0),e.endTime=Math.max(i+n,0);var r=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(r)),e.id||(e.id=l(e.startTime,e.endTime,r)),e.endTime>0&&N.push(e)},I.onparsingerror=function(e){A=e},I.onflush=function(){A?c(A):d(N)},O.forEach((function(e){if(L){if(_(e,"X-TIMESTAMP-MAP=")){L=!1,e.slice(16).split(",").forEach((function(e){_(e,"LOCAL:")?m=e.slice(6):_(e,"MPEGTS:")&&(p=parseInt(e.slice(7)))}));try{h=(function(e){var t=parseInt(e.slice(-3)),o=parseInt(e.slice(-6,-4)),n=parseInt(e.slice(-9,-7)),i=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(Object(a.isFiniteNumber)(t)&&Object(a.isFiniteNumber)(o)&&Object(a.isFiniteNumber)(n)&&Object(a.isFiniteNumber)(i)))throw Error("Malformed X-TIMESTAMP-MAP: Local:"+e);return t+=1e3*o,(t+=6e4*n)+36e5*i})(m)/1e3}catch(e){A=e}return}""===e&&(L=!1)}I.parse(e+"\n")})),I.flush()}},"./src/utils/xhr-loader.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/utils/logger.ts"),n=o("./src/loader/load-stats.ts"),i=/^age:\s*[\d.]+\s*$/m,r=(function(){function e(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=void 0,this.loader=null,this.stats=void 0,this.xhrSetup=e?e.xhrSetup:null,this.stats=new n.LoadStats,this.retryDelay=0}var t=e.prototype;return t.destroy=function(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null},t.abortInternal=function(){var e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))},t.abort=function(){var e;this.abortInternal(),null!==(e=this.callbacks)&&void 0!==e&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)},t.load=function(e,t,o){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=o,this.retryDelay=t.retryDelay,this.loadInternal()},t.loadInternal=function(){var e=this.config,t=this.context;if(e){var o=this.loader=new self.XMLHttpRequest,a=this.stats;a.loading.first=0,a.loaded=0;var n=this.xhrSetup;try{if(n)try{n(o,t.url)}catch(e){o.open("GET",t.url,!0),n(o,t.url)}o.readyState||o.open("GET",t.url,!0);var i=this.context.headers;if(i)for(var r in i)o.setRequestHeader(r,i[r])}catch(e){return void this.callbacks.onError({code:o.status,text:e.message},t,o)}t.rangeEnd&&o.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),o.onreadystatechange=this.readystatechange.bind(this),o.onprogress=this.loadprogress.bind(this),o.responseType=t.responseType,self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),e.timeout),o.send()}},t.readystatechange=function(){var e=this.context,t=this.loader,o=this.stats;if(e&&t){var n=t.readyState,i=this.config;if(!o.aborted&&n>=2)if(self.clearTimeout(this.requestTimeout),0===o.loading.first&&(o.loading.first=Math.max(self.performance.now(),o.loading.start)),4===n){t.onreadystatechange=null,t.onprogress=null;var r=t.status;if(r>=200&&r<300){var s,E;if(o.loading.end=Math.max(self.performance.now(),o.loading.first),E="arraybuffer"===e.responseType?(s=t.response).byteLength:(s=t.responseText).length,o.loaded=o.total=E,!this.callbacks)return;var _=this.callbacks.onProgress;if(_&&_(o,e,s,t),!this.callbacks)return;var T={url:t.responseURL,data:s};this.callbacks.onSuccess(T,o,e,t)}else o.retry>=i.maxRetry||r>=400&&r<499?(a.logger.error(r+" while loading "+e.url),this.callbacks.onError({code:r,text:t.statusText},e,t)):(a.logger.warn(r+" while loading "+e.url+", retrying in "+this.retryDelay+"..."),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,i.maxRetryDelay),o.retry++)}else self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout)}},t.loadtimeout=function(){a.logger.warn("timeout while loading "+this.context.url);var e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))},t.loadprogress=function(e){var t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)},t.getCacheAge=function(){var e=null;if(this.loader&&i.test(this.loader.getAllResponseHeaders())){var t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e},e})();t.default=r}}).default},e.exports=t())},2047:e=>{"use strict";e.exports={abbr:"abbr",accept:"accept",acceptCharset:"accept-charset",accessKey:"accesskey",action:"action",allowFullScreen:"allowfullscreen",allowTransparency:"allowtransparency",alt:"alt",async:"async",autoComplete:"autocomplete",autoFocus:"autofocus",autoPlay:"autoplay",cellPadding:"cellpadding",cellSpacing:"cellspacing",challenge:"challenge",charset:"charset",checked:"checked",cite:"cite",class:"class",className:"class",cols:"cols",colSpan:"colspan",command:"command",content:"content",contentEditable:"contenteditable",contextMenu:"contextmenu",controls:"controls",coords:"coords",crossOrigin:"crossorigin",data:"data",dateTime:"datetime",default:"default",defer:"defer",dir:"dir",disabled:"disabled",download:"download",draggable:"draggable",dropzone:"dropzone",encType:"enctype",for:"for",form:"form",formAction:"formaction",formEncType:"formenctype",formMethod:"formmethod",formNoValidate:"formnovalidate",formTarget:"formtarget",frameBorder:"frameBorder",headers:"headers",height:"height",hidden:"hidden",high:"high",href:"href",hrefLang:"hreflang",htmlFor:"for",httpEquiv:"http-equiv",icon:"icon",id:"id",inputMode:"inputmode",isMap:"ismap",itemId:"itemid",itemProp:"itemprop",itemRef:"itemref",itemScope:"itemscope",itemType:"itemtype",kind:"kind",label:"label",lang:"lang",list:"list",loop:"loop",manifest:"manifest",max:"max",maxLength:"maxlength",media:"media",mediaGroup:"mediagroup",method:"method",min:"min",minLength:"minlength",multiple:"multiple",muted:"muted",name:"name",noValidate:"novalidate",open:"open",optimum:"optimum",pattern:"pattern",ping:"ping",placeholder:"placeholder",poster:"poster",preload:"preload",radioGroup:"radiogroup",readOnly:"readonly",rel:"rel",required:"required",role:"role",rows:"rows",rowSpan:"rowspan",sandbox:"sandbox",scope:"scope",scoped:"scoped",scrolling:"scrolling",seamless:"seamless",selected:"selected",shape:"shape",size:"size",sizes:"sizes",sortable:"sortable",span:"span",spellCheck:"spellcheck",src:"src",srcDoc:"srcdoc",srcSet:"srcset",start:"start",step:"step",style:"style",tabIndex:"tabindex",target:"target",title:"title",translate:"translate",type:"type",typeMustMatch:"typemustmatch",useMap:"usemap",value:"value",width:"width",wmode:"wmode",wrap:"wrap"}},1613:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>S});var a=o(1739),n=o.n(a),i=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function r(e){var t={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},o=e.match(/<\/?([^\s]+?)[/\s>]/);if(o&&(t.name=o[1],(n()[o[1]]||"/"===e.charAt(e.length-2))&&(t.voidElement=!0),t.name.startsWith("!--"))){var a=e.indexOf("--\x3e");return{type:"comment",comment:-1!==a?e.slice(4,a):""}}for(var r=new RegExp(i),s=null;null!==(s=r.exec(e));)if(s[0].trim())if(s[1]){var E=s[1].trim(),_=[E,""];E.indexOf("=")>-1&&(_=E.split("=")),t.attrs[_[0]]=_[1],r.lastIndex--}else s[2]&&(t.attrs[s[2]]=s[3].trim().substring(1,s[3].length-1));return t}var s=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,E=/^\s*$/,_=Object.create(null);function T(e,t){switch(t.type){case"text":return e+t.content;case"tag":return e+="<"+t.name+(t.attrs?(function(e){var t=[];for(var o in e)t.push(o+'="'+e[o]+'"');return t.length?" "+t.join(" "):""})(t.attrs):"")+(t.voidElement?"/>":">"),t.voidElement?e:e+t.children.reduce(T,"")+"";case"comment":return e+"\x3c!--"+t.comment+"--\x3e"}}var l={parse:function(e,t){t||(t={}),t.components||(t.components=_);var o,a=[],n=[],i=-1,T=!1;if(0!==e.indexOf("<")){var l=e.indexOf("<");a.push({type:"text",content:-1===l?e:e.substring(0,l)})}return e.replace(s,(function(s,_){if(T){if(s!=="")return;T=!1}var l,S="/"!==s.charAt(1),u=s.startsWith("\x3c!--"),d=_+s.length,c=e.charAt(d);if(u){var A=r(s);return i<0?(a.push(A),a):((l=n[i]).children.push(A),a)}if(S&&(i++,"tag"===(o=r(s)).type&&t.components[o.name]&&(o.type="component",T=!0),o.voidElement||T||!c||"<"===c||o.children.push({type:"text",content:e.slice(d,e.indexOf("<",d))}),0===i&&a.push(o),(l=n[i-1])&&l.children.push(o),n[i]=o),(!S||o.voidElement)&&(i>-1&&(o.voidElement||o.name===s.slice(2,-1))&&(i--,o=-1===i?a:n[i]),!T&&"<"!==c&&c)){l=-1===i?a:n[i].children;var I=e.indexOf("<",d),O=e.slice(d,-1===I?void 0:I);E.test(O)&&(O=" "),(I>-1&&i+l.length>=0||" "!==O)&&l.push({type:"text",content:O})}})),a},stringify:function(e){return e.reduce((function(e,t){return e+T("",t)}),"")}};const S=l},6073:(e,t,o)=>{"use strict";var a=o(7021),n=o(949),i=o(4813),r=o(5627),s=o(6433),E=o(8542),_=o(2411),T=o(2401),l=o(9394);function S(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=S(a),d=S(n),c=S(i),A=S(r),I=S(s),O=S(E),N=S(_),R=S(T),m=S(l);function p(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function h(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};d.default(this,e),this.init(t,o)}return c.default(e,[{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=t.prefix||"i18next:",this.logger=e||L,this.options=t,this.debug=t.debug}},{key:"setDebug",value:function(e){this.debug=e}},{key:"log",value:function(){for(var e=arguments.length,t=new Array(e),o=0;o1?t-1:0),a=1;a-1?e.replace(/###/g,"."):e}function n(){return!e||"string"==typeof e}for(var i="string"!=typeof t?[].concat(t):t.split(".");i.length>1;){if(n())return{};var r=a(i.shift());!e[r]&&o&&(e[r]=new o),e=Object.prototype.hasOwnProperty.call(e,r)?e[r]:{}}return n()?{}:{obj:e,k:a(i.shift())}}function y(e,t,o){var a=P(e,t,Object);a.obj[a.k]=o}function B(e,t){var o=P(e,t),a=o.obj,n=o.k;if(a)return a[n]}function b(e,t,o){var a=B(e,o);return void 0!==a?a:B(t,o)}function M(e,t,o){for(var a in t)"__proto__"!==a&&"constructor"!==a&&(a in e?"string"==typeof e[a]||e[a]instanceof String||"string"==typeof t[a]||t[a]instanceof String?o&&(e[a]=t[a]):M(e[a],t[a],o):e[a]=t[a]);return e}function U(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var W={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function G(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,(function(e){return W[e]})):e}var F="undefined"!=typeof window&&window.navigator&&void 0===window.navigator.userAgentData&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1,k=[" ",",","?","!",";"];function w(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function H(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:".";if(e){if(e[t])return e[t];for(var a=t.split(o),n=e,i=0;ii+r;)r++,E=n[s=a.slice(i,i+r).join(o)];if(void 0===E)return;if(null===E)return null;if(t.endsWith(s)){if("string"==typeof E)return E;if(s&&"string"==typeof E[s])return E[s]}var _=a.slice(i+r).join(o);return _?Y(E,_,o):void 0}n=n[a[i]]}return n}}var z=(function(e){I.default(o,e);var t=V(o);function o(e){var a,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};return d.default(this,o),a=t.call(this),F&&C.call(A.default(a)),a.data=e||{},a.options=n,void 0===a.options.keySeparator&&(a.options.keySeparator="."),void 0===a.options.ignoreJSONStructure&&(a.options.ignoreJSONStructure=!0),a}return c.default(o,[{key:"addNamespaces",value:function(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}},{key:"removeNamespaces",value:function(e){var t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}},{key:"getResource",value:function(e,t,o){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=void 0!==a.keySeparator?a.keySeparator:this.options.keySeparator,i=void 0!==a.ignoreJSONStructure?a.ignoreJSONStructure:this.options.ignoreJSONStructure,r=[e,t];o&&"string"!=typeof o&&(r=r.concat(o)),o&&"string"==typeof o&&(r=r.concat(n?o.split(n):o)),e.indexOf(".")>-1&&(r=e.split("."));var s=B(this.data,r);return s||!i||"string"!=typeof o?s:Y(this.data&&this.data[e]&&this.data[e][t],o,n)}},{key:"addResource",value:function(e,t,o,a){var n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},i=this.options.keySeparator;void 0===i&&(i=".");var r=[e,t];o&&(r=r.concat(i?o.split(i):o)),e.indexOf(".")>-1&&(a=t,t=(r=e.split("."))[1]),this.addNamespaces(t),y(this.data,r,a),n.silent||this.emit("added",e,t,o,a)}},{key:"addResources",value:function(e,t,o){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var n in o)"string"!=typeof o[n]&&"[object Array]"!==Object.prototype.toString.apply(o[n])||this.addResource(e,t,n,o[n],{silent:!0});a.silent||this.emit("added",e,t,o)}},{key:"addResourceBundle",value:function(e,t,o,a,n){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},r=[e,t];e.indexOf(".")>-1&&(a=o,o=t,t=(r=e.split("."))[1]),this.addNamespaces(t);var s=B(this.data,r)||{};a?M(s,o,n):s=H(H({},s),o),y(this.data,r,s),i.silent||this.emit("added",e,t,o)}},{key:"removeResourceBundle",value:function(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}},{key:"hasResourceBundle",value:function(e,t){return void 0!==this.getResource(e,t)}},{key:"getResourceBundle",value:function(e,t){return t||(t=this.options.defaultNS),"v1"===this.options.compatibilityAPI?H(H({},{}),this.getResource(e,t)):this.getResource(e,t)}},{key:"getDataByLanguage",value:function(e){return this.data[e]}},{key:"hasLanguageSomeTranslations",value:function(e){var t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find((function(e){return t[e]&&Object.keys(t[e]).length>0}))}},{key:"toJSON",value:function(){return this.data}}]),o})(C),x={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,t,o,a,n){var i=this;return e.forEach((function(e){i.processors[e]&&(t=i.processors[e].process(t,o,a,n))})),t}};function K(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function j(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return d.default(this,o),a=t.call(this),F&&C.call(A.default(a)),v(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],e,A.default(a)),a.options=n,void 0===a.options.keySeparator&&(a.options.keySeparator="."),a.logger=f.create("translator"),a}return c.default(o,[{key:"changeLanguage",value:function(e){e&&(this.language=e)}},{key:"exists",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}};if(null==e)return!1;var o=this.resolve(e,t);return o&&void 0!==o.res}},{key:"extractFromKey",value:function(e,t){var o=void 0!==t.nsSeparator?t.nsSeparator:this.options.nsSeparator;void 0===o&&(o=":");var a=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,n=t.ns||this.options.defaultNS||[],i=o&&e.indexOf(o)>-1,r=!(this.options.userDefinedKeySeparator||t.keySeparator||this.options.userDefinedNsSeparator||t.nsSeparator||(function(e,t,o){t=t||"",o=o||"";var a=k.filter((function(e){return t.indexOf(e)<0&&o.indexOf(e)<0}));if(0===a.length)return!0;var n=new RegExp("(".concat(a.map((function(e){return"?"===e?"\\?":e})).join("|"),")")),i=!n.test(e);if(!i){var r=e.indexOf(o);r>0&&!n.test(e.substring(0,r))&&(i=!0)}return i})(e,o,a));if(i&&!r){var s=e.match(this.interpolator.nestingRegexp);if(s&&s.length>0)return{key:e,namespaces:n};var E=e.split(o);(o!==a||o===a&&this.options.ns.indexOf(E[0])>-1)&&(n=E.shift()),e=E.join(a)}return"string"==typeof n&&(n=[n]),{key:e,namespaces:n}}},{key:"translate",value:function(e,t,a){var n=this;if("object"!==u.default(t)&&this.options.overloadTranslationOptionHandler&&(t=this.options.overloadTranslationOptionHandler(arguments)),t||(t={}),null==e)return"";Array.isArray(e)||(e=[String(e)]);var i=void 0!==t.returnDetails?t.returnDetails:this.options.returnDetails,r=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,s=this.extractFromKey(e[e.length-1],t),E=s.key,_=s.namespaces,T=_[_.length-1],l=t.lng||this.language,S=t.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(l&&"cimode"===l.toLowerCase()){if(S){var d=t.nsSeparator||this.options.nsSeparator;return i?(c.res="".concat(T).concat(d).concat(E),c):"".concat(T).concat(d).concat(E)}return i?(c.res=E,c):E}var c=this.resolve(e,t),A=c&&c.res,I=c&&c.usedKey||E,O=c&&c.exactUsedKey||E,N=Object.prototype.toString.apply(A),R=["[object Number]","[object Function]","[object RegExp]"],m=void 0!==t.joinArrays?t.joinArrays:this.options.joinArrays,p=!this.i18nFormat||this.i18nFormat.handleAsObject,h="string"!=typeof A&&"boolean"!=typeof A&&"number"!=typeof A;if(p&&A&&h&&R.indexOf(N)<0&&("string"!=typeof m||"[object Array]"!==N)){if(!t.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");var L=this.options.returnedObjectHandler?this.options.returnedObjectHandler(I,A,j(j({},t),{},{ns:_})):"key '".concat(E," (").concat(this.language,")' returned an object instead of string.");return i?(c.res=L,c):L}if(r){var f="[object Array]"===N,C=f?[]:{},D=f?O:I;for(var g in A)if(Object.prototype.hasOwnProperty.call(A,g)){var v="".concat(D).concat(r).concat(g);C[g]=this.translate(v,j(j({},t),{joinArrays:!1,ns:_})),C[g]===v&&(C[g]=A[g])}A=C}}else if(p&&"string"==typeof m&&"[object Array]"===N)(A=A.join(m))&&(A=this.extendTranslation(A,e,t,a));else{var P=!1,y=!1,B=void 0!==t.count&&"string"!=typeof t.count,b=o.hasDefaultValue(t),M=B?this.pluralResolver.getSuffix(l,t.count,t):"",U=t["defaultValue".concat(M)]||t.defaultValue;!this.isValidLookup(A)&&b&&(P=!0,A=U),this.isValidLookup(A)||(y=!0,A=E);var W=t.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey,G=W&&y?void 0:A,F=b&&U!==A&&this.options.updateMissing;if(y||P||F){if(this.logger.log(F?"updateKey":"missingKey",l,T,E,F?U:A),r){var k=this.resolve(E,j(j({},t),{},{keySeparator:!1}));k&&k.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}var w=[],H=this.languageUtils.getFallbackCodes(this.options.fallbackLng,t.lng||this.language);if("fallback"===this.options.saveMissingTo&&H&&H[0])for(var V=0;V1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e&&(e=[e]),e.forEach((function(e){if(!r.isValidLookup(t)){var E=r.extractFromKey(e,s),_=E.key;o=_;var T=E.namespaces;r.options.fallbackNS&&(T=T.concat(r.options.fallbackNS));var l=void 0!==s.count&&"string"!=typeof s.count,S=l&&!s.ordinal&&0===s.count&&r.pluralResolver.shouldUseIntlApi(),u=void 0!==s.context&&("string"==typeof s.context||"number"==typeof s.context)&&""!==s.context,d=s.lngs?s.lngs:r.languageUtils.toResolveHierarchy(s.lng||r.language,s.fallbackLng);T.forEach((function(e){r.isValidLookup(t)||(i=e,!X["".concat(d[0],"-").concat(e)]&&r.utils&&r.utils.hasLoadedNamespace&&!r.utils.hasLoadedNamespace(i)&&(X["".concat(d[0],"-").concat(e)]=!0,r.logger.warn('key "'.concat(o,'" for languages "').concat(d.join(", "),'" won\'t get resolved as namespace "').concat(i,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),d.forEach((function(o){if(!r.isValidLookup(t)){n=o;var i,E=[_];if(r.i18nFormat&&r.i18nFormat.addLookupKeys)r.i18nFormat.addLookupKeys(E,_,o,e,s);else{var T;l&&(T=r.pluralResolver.getSuffix(o,s.count,s));var d="".concat(r.options.pluralSeparator,"zero");if(l&&(E.push(_+T),S&&E.push(_+d)),u){var c="".concat(_).concat(r.options.contextSeparator).concat(s.context);E.push(c),l&&(E.push(c+T),S&&E.push(c+d))}}for(;i=E.pop();)r.isValidLookup(t)||(a=i,t=r.getResource(o,e,i,s))}})))}))}})),{res:t,usedKey:o,exactUsedKey:a,usedLng:n,usedNS:i}}},{key:"isValidLookup",value:function(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}},{key:"getResource",value:function(e,t,o){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,t,o,a):this.resourceStore.getResource(e,t,o,a)}}],[{key:"hasDefaultValue",value:function(e){var t="defaultValue";for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&t===o.substring(0,t.length)&&void 0!==e[o])return!0;return!1}}]),o})(C);function q(e){return e.charAt(0).toUpperCase()+e.slice(1)}var J=(function(){function e(t){d.default(this,e),this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=f.create("languageUtils")}return c.default(e,[{key:"getScriptPartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return null;var t=e.split("-");return 2===t.length?null:(t.pop(),"x"===t[t.length-1].toLowerCase()?null:this.formatLanguageCode(t.join("-")))}},{key:"getLanguagePartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return e;var t=e.split("-");return this.formatLanguageCode(t[0])}},{key:"formatLanguageCode",value:function(e){if("string"==typeof e&&e.indexOf("-")>-1){var t=["hans","hant","latn","cyrl","cans","mong","arab"],o=e.split("-");return this.options.lowerCaseLng?o=o.map((function(e){return e.toLowerCase()})):2===o.length?(o[0]=o[0].toLowerCase(),o[1]=o[1].toUpperCase(),t.indexOf(o[1].toLowerCase())>-1&&(o[1]=q(o[1].toLowerCase()))):3===o.length&&(o[0]=o[0].toLowerCase(),2===o[1].length&&(o[1]=o[1].toUpperCase()),"sgn"!==o[0]&&2===o[2].length&&(o[2]=o[2].toUpperCase()),t.indexOf(o[1].toLowerCase())>-1&&(o[1]=q(o[1].toLowerCase())),t.indexOf(o[2].toLowerCase())>-1&&(o[2]=q(o[2].toLowerCase()))),o.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}},{key:"isSupportedCode",value:function(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}},{key:"getBestMatchFromCodes",value:function(e){var t,o=this;return e?(e.forEach((function(e){if(!t){var a=o.formatLanguageCode(e);o.options.supportedLngs&&!o.isSupportedCode(a)||(t=a)}})),!t&&this.options.supportedLngs&&e.forEach((function(e){if(!t){var a=o.getLanguagePartFromCode(e);if(o.isSupportedCode(a))return t=a;t=o.options.supportedLngs.find((function(e){if(0===e.indexOf(a))return e}))}})),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t):null}},{key:"getFallbackCodes",value:function(e,t){if(!e)return[];if("function"==typeof e&&(e=e(t)),"string"==typeof e&&(e=[e]),"[object Array]"===Object.prototype.toString.apply(e))return e;if(!t)return e.default||[];var o=e[t];return o||(o=e[this.getScriptPartFromCode(t)]),o||(o=e[this.formatLanguageCode(t)]),o||(o=e[this.getLanguagePartFromCode(t)]),o||(o=e.default),o||[]}},{key:"toResolveHierarchy",value:function(e,t){var o=this,a=this.getFallbackCodes(t||this.options.fallbackLng||[],e),n=[],i=function(e){e&&(o.isSupportedCode(e)?n.push(e):o.logger.warn("rejecting language code not found in supportedLngs: ".concat(e)))};return"string"==typeof e&&e.indexOf("-")>-1?("languageOnly"!==this.options.load&&i(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&i(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&i(this.getLanguagePartFromCode(e))):"string"==typeof e&&i(this.formatLanguageCode(e)),a.forEach((function(e){n.indexOf(e)<0&&i(o.formatLanguageCode(e))})),n}}]),e})(),Z=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],ee={1:function(e){return Number(e>1)},2:function(e){return Number(1!=e)},3:function(e){return 0},4:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},5:function(e){return Number(0==e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5)},6:function(e){return Number(1==e?0:e>=2&&e<=4?1:2)},7:function(e){return Number(1==e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},8:function(e){return Number(1==e?0:2==e?1:8!=e&&11!=e?2:3)},9:function(e){return Number(e>=2)},10:function(e){return Number(1==e?0:2==e?1:e<7?2:e<11?3:4)},11:function(e){return Number(1==e||11==e?0:2==e||12==e?1:e>2&&e<20?2:3)},12:function(e){return Number(e%10!=1||e%100==11)},13:function(e){return Number(0!==e)},14:function(e){return Number(1==e?0:2==e?1:3==e?2:3)},15:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2)},16:function(e){return Number(e%10==1&&e%100!=11?0:0!==e?1:2)},17:function(e){return Number(1==e||e%10==1&&e%100!=11?0:1)},18:function(e){return Number(0==e?0:1==e?1:2)},19:function(e){return Number(1==e?0:0==e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3)},20:function(e){return Number(1==e?0:0==e||e%100>0&&e%100<20?1:2)},21:function(e){return Number(e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0)},22:function(e){return Number(1==e?0:2==e?1:(e<0||e>10)&&e%10==0?2:3)}},te=["v1","v2","v3"],oe={zero:0,one:1,two:2,few:3,many:4,other:5};function ae(){var e={};return Z.forEach((function(t){t.lngs.forEach((function(o){e[o]={numbers:t.nr,plurals:ee[t.fc]}}))})),e}var ne=(function(){function e(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};d.default(this,e),this.languageUtils=t,this.options=o,this.logger=f.create("pluralResolver"),this.options.compatibilityJSON&&"v4"!==this.options.compatibilityJSON||"undefined"!=typeof Intl&&Intl.PluralRules||(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=ae()}return c.default(e,[{key:"addRule",value:function(e,t){this.rules[e]=t}},{key:"getRule",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(e,{type:t.ordinal?"ordinal":"cardinal"})}catch(e){return}return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}},{key:"needsPlural",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=this.getRule(e,t);return this.shouldUseIntlApi()?o&&o.resolvedOptions().pluralCategories.length>1:o&&o.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.getSuffixes(e,o).map((function(e){return"".concat(t).concat(e)}))}},{key:"getSuffixes",value:function(e){var t=this,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=this.getRule(e,o);return a?this.shouldUseIntlApi()?a.resolvedOptions().pluralCategories.sort((function(e,t){return oe[e]-oe[t]})).map((function(e){return"".concat(t.options.prepend).concat(e)})):a.numbers.map((function(a){return t.getSuffix(e,a,o)})):[]}},{key:"getSuffix",value:function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=this.getRule(e,o);return a?this.shouldUseIntlApi()?"".concat(this.options.prepend).concat(a.select(t)):this.getSuffixRetroCompatible(a,t):(this.logger.warn("no plural rule found for: ".concat(e)),"")}},{key:"getSuffixRetroCompatible",value:function(e,t){var o=this,a=e.noAbs?e.plurals(t):e.plurals(Math.abs(t)),n=e.numbers[a];this.options.simplifyPluralSuffix&&2===e.numbers.length&&1===e.numbers[0]&&(2===n?n="plural":1===n&&(n=""));var i=function(){return o.options.prepend&&n.toString()?o.options.prepend+n.toString():n.toString()};return"v1"===this.options.compatibilityJSON?1===n?"":"number"==typeof n?"_plural_".concat(n.toString()):i():"v2"===this.options.compatibilityJSON||this.options.simplifyPluralSuffix&&2===e.numbers.length&&1===e.numbers[0]?i():this.options.prepend&&a.toString()?this.options.prepend+a.toString():a.toString()}},{key:"shouldUseIntlApi",value:function(){return!te.includes(this.options.compatibilityJSON)}}]),e})();function ie(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function re(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};d.default(this,e),this.logger=f.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||function(e){return e},this.init(t)}return c.default(e,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.interpolation||(e.interpolation={escapeValue:!0});var t=e.interpolation;this.escape=void 0!==t.escape?t.escape:G,this.escapeValue=void 0===t.escapeValue||t.escapeValue,this.useRawValueToEscape=void 0!==t.useRawValueToEscape&&t.useRawValueToEscape,this.prefix=t.prefix?U(t.prefix):t.prefixEscaped||"{{",this.suffix=t.suffix?U(t.suffix):t.suffixEscaped||"}}",this.formatSeparator=t.formatSeparator?t.formatSeparator:t.formatSeparator||",",this.unescapePrefix=t.unescapeSuffix?"":t.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":t.unescapeSuffix||"",this.nestingPrefix=t.nestingPrefix?U(t.nestingPrefix):t.nestingPrefixEscaped||U("$t("),this.nestingSuffix=t.nestingSuffix?U(t.nestingSuffix):t.nestingSuffixEscaped||U(")"),this.nestingOptionsSeparator=t.nestingOptionsSeparator?t.nestingOptionsSeparator:t.nestingOptionsSeparator||",",this.maxReplaces=t.maxReplaces?t.maxReplaces:1e3,this.alwaysFormat=void 0!==t.alwaysFormat&&t.alwaysFormat,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var e="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=new RegExp(e,"g");var t="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(t,"g");var o="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=new RegExp(o,"g")}},{key:"interpolate",value:function(e,t,o,a){var n,i,r,s=this,E=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function _(e){return e.replace(/\$/g,"$$$$")}var T=function(e){if(e.indexOf(s.formatSeparator)<0){var n=b(t,E,e);return s.alwaysFormat?s.format(n,void 0,o,re(re(re({},a),t),{},{interpolationkey:e})):n}var i=e.split(s.formatSeparator),r=i.shift().trim(),_=i.join(s.formatSeparator).trim();return s.format(b(t,E,r),_,o,re(re(re({},a),t),{},{interpolationkey:r}))};this.resetRegExp();var l=a&&a.missingInterpolationHandler||this.options.missingInterpolationHandler,S=a&&a.interpolation&&void 0!==a.interpolation.skipOnVariables?a.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:function(e){return _(e)}},{regex:this.regexp,safeValue:function(e){return s.escapeValue?_(s.escape(e)):_(e)}}].forEach((function(t){for(r=0;n=t.regex.exec(e);){var o=n[1].trim();if(void 0===(i=T(o)))if("function"==typeof l){var E=l(e,n,a);i="string"==typeof E?E:""}else if(a&&a.hasOwnProperty(o))i="";else{if(S){i=n[0];continue}s.logger.warn("missed to pass in variable ".concat(o," for interpolating ").concat(e)),i=""}else"string"==typeof i||s.useRawValueToEscape||(i=g(i));var _=t.safeValue(i);if(e=e.replace(n[0],_),S?(t.regex.lastIndex+=i.length,t.regex.lastIndex-=n[0].length):t.regex.lastIndex=0,++r>=s.maxReplaces)break}})),e}},{key:"nest",value:function(e,t){var o,a,n,i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};function s(e,t){var o=this.nestingOptionsSeparator;if(e.indexOf(o)<0)return e;var a=e.split(new RegExp("".concat(o,"[ ]*{"))),i="{".concat(a[1]);e=a[0];var r=(i=this.interpolate(i,n)).match(/'/g),s=i.match(/"/g);(r&&r.length%2==0&&!s||s.length%2!=0)&&(i=i.replace(/'/g,'"'));try{n=JSON.parse(i),t&&(n=re(re({},t),n))}catch(t){return this.logger.warn("failed parsing options string in nesting for key ".concat(e),t),"".concat(e).concat(o).concat(i)}return delete n.defaultValue,e}for(;o=this.nestingRegexp.exec(e);){var E=[];(n=re({},r)).applyPostProcessor=!1,delete n.defaultValue;var _=!1;if(-1!==o[0].indexOf(this.formatSeparator)&&!/{.*}/.test(o[1])){var T=o[1].split(this.formatSeparator).map((function(e){return e.trim()}));o[1]=T.shift(),E=T,_=!0}if((a=t(s.call(this,o[1].trim(),n),n))&&o[0]===e&&"string"!=typeof a)return a;"string"!=typeof a&&(a=g(a)),a||(this.logger.warn("missed to resolve ".concat(o[1]," for nesting ").concat(e)),a=""),_&&(a=E.reduce((function(e,t){return i.format(e,t,r.lng,re(re({},r),{},{interpolationkey:o[1].trim()}))}),a.trim())),e=e.replace(o[0],a),this.regexp.lastIndex=0}return e}}]),e})();function Ee(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function _e(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};d.default(this,e),this.logger=f.create("formatter"),this.options=t,this.formats={number:Te((function(e,t){var o=new Intl.NumberFormat(e,t);return function(e){return o.format(e)}})),currency:Te((function(e,t){var o=new Intl.NumberFormat(e,_e(_e({},t),{},{style:"currency"}));return function(e){return o.format(e)}})),datetime:Te((function(e,t){var o=new Intl.DateTimeFormat(e,_e({},t));return function(e){return o.format(e)}})),relativetime:Te((function(e,t){var o=new Intl.RelativeTimeFormat(e,_e({},t));return function(e){return o.format(e,t.range||"day")}})),list:Te((function(e,t){var o=new Intl.ListFormat(e,_e({},t));return function(e){return o.format(e)}}))},this.init(t)}return c.default(e,[{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}},o=t.interpolation;this.formatSeparator=o.formatSeparator?o.formatSeparator:o.formatSeparator||","}},{key:"add",value:function(e,t){this.formats[e.toLowerCase().trim()]=t}},{key:"addCached",value:function(e,t){this.formats[e.toLowerCase().trim()]=Te(t)}},{key:"format",value:function(e,t,o,a){var n=this;return t.split(this.formatSeparator).reduce((function(e,t){var i=(function(e){var t=e.toLowerCase().trim(),o={};if(e.indexOf("(")>-1){var a=e.split("(");t=a[0].toLowerCase().trim();var n=a[1].substring(0,a[1].length-1);"currency"===t&&n.indexOf(":")<0?o.currency||(o.currency=n.trim()):"relativetime"===t&&n.indexOf(":")<0?o.range||(o.range=n.trim()):n.split(";").forEach((function(e){if(e){var t=e.split(":"),a=m.default(t),n=a[0],i=a.slice(1).join(":").trim().replace(/^'+|'+$/g,"");o[n.trim()]||(o[n.trim()]=i),"false"===i&&(o[n.trim()]=!1),"true"===i&&(o[n.trim()]=!0),isNaN(i)||(o[n.trim()]=parseInt(i,10))}}))}return{formatName:t,formatOptions:o}})(t),r=i.formatName,s=i.formatOptions;if(n.formats[r]){var E=e;try{var _=a&&a.formatParams&&a.formatParams[a.interpolationkey]||{},T=_.locale||_.lng||a.locale||a.lng||o;E=n.formats[r](e,T,_e(_e(_e({},s),a),_))}catch(e){n.logger.warn(e)}return E}return n.logger.warn("there was no format function for ".concat(r)),e}),e)}}]),e})();function Se(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function ue(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:{};return d.default(this,o),i=t.call(this),F&&C.call(A.default(i)),i.backend=e,i.store=a,i.services=n,i.languageUtils=n.languageUtils,i.options=r,i.logger=f.create("backendConnector"),i.waitingReads=[],i.maxParallelReads=r.maxParallelReads||10,i.readingCalls=0,i.maxRetries=r.maxRetries>=0?r.maxRetries:5,i.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,i.state={},i.queue=[],i.backend&&i.backend.init&&i.backend.init(n,r.backend,r),i}return c.default(o,[{key:"queueLoad",value:function(e,t,o,a){var n=this,i={},r={},s={},E={};return e.forEach((function(e){var a=!0;t.forEach((function(t){var s="".concat(e,"|").concat(t);!o.reload&&n.store.hasResourceBundle(e,t)?n.state[s]=2:n.state[s]<0||(1===n.state[s]?void 0===r[s]&&(r[s]=!0):(n.state[s]=1,a=!1,void 0===r[s]&&(r[s]=!0),void 0===i[s]&&(i[s]=!0),void 0===E[t]&&(E[t]=!0)))})),a||(s[e]=!0)})),(Object.keys(i).length||Object.keys(r).length)&&this.queue.push({pending:r,pendingCount:Object.keys(r).length,loaded:{},errors:[],callback:a}),{toLoad:Object.keys(i),pending:Object.keys(r),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(E)}}},{key:"loaded",value:function(e,t,o){var a=e.split("|"),n=a[0],i=a[1];t&&this.emit("failedLoading",n,i,t),o&&this.store.addResourceBundle(n,i,o),this.state[e]=t?-1:2;var r={};this.queue.forEach((function(o){var a,s,E,_,T,l;a=o.loaded,s=i,_=P(a,[n],Object),T=_.obj,l=_.k,T[l]=T[l]||[],E&&(T[l]=T[l].concat(s)),E||T[l].push(s),(function(e,t){void 0!==e.pending[t]&&(delete e.pending[t],e.pendingCount--)})(o,e),t&&o.errors.push(t),0!==o.pendingCount||o.done||(Object.keys(o.loaded).forEach((function(e){r[e]||(r[e]={});var t=o.loaded[e];t.length&&t.forEach((function(t){void 0===r[e][t]&&(r[e][t]=!0)}))})),o.done=!0,o.errors.length?o.callback(o.errors):o.callback())})),this.emit("loaded",r),this.queue=this.queue.filter((function(e){return!e.done}))}},{key:"read",value:function(e,t,o){var a=this,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this.retryTimeout,r=arguments.length>5?arguments[5]:void 0;if(!e.length)return r(null,{});if(this.readingCalls>=this.maxParallelReads)this.waitingReads.push({lng:e,ns:t,fcName:o,tried:n,wait:i,callback:r});else{this.readingCalls++;var s=function(s,E){if(a.readingCalls--,a.waitingReads.length>0){var _=a.waitingReads.shift();a.read(_.lng,_.ns,_.fcName,_.tried,_.wait,_.callback)}s&&E&&n2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),n&&n();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof t&&(t=[t]);var i=this.queueLoad(e,t,a,n);if(!i.toLoad.length)return i.pending.length||n(),null;i.toLoad.forEach((function(e){o.loadOne(e)}))}},{key:"load",value:function(e,t,o){this.prepareLoading(e,t,{},o)}},{key:"reload",value:function(e,t,o){this.prepareLoading(e,t,{reload:!0},o)}},{key:"loadOne",value:function(e){var t=this,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",a=e.split("|"),n=a[0],i=a[1];this.read(n,i,"read",void 0,void 0,(function(a,r){a&&t.logger.warn("".concat(o,"loading namespace ").concat(i," for language ").concat(n," failed"),a),!a&&r&&t.logger.log("".concat(o,"loaded namespace ").concat(i," for language ").concat(n),r),t.loaded(e,a,r)}))}},{key:"saveMissing",value:function(e,t,o,a,n){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:function(){};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(t))this.logger.warn('did not save key "'.concat(o,'" as the namespace "').concat(t,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");else if(null!=o&&""!==o){if(this.backend&&this.backend.create){var s=ue(ue({},i),{},{isUpdate:n}),E=this.backend.create.bind(this.backend);if(E.length<6)try{var _;(_=5===E.length?E(e,t,o,a,s):E(e,t,o,a))&&"function"==typeof _.then?_.then((function(e){return r(null,e)})).catch(r):r(null,_)}catch(e){r(e)}else E(e,t,o,a,r,s)}e&&e[0]&&this.store.addResource(e[0],t,o,a)}}}]),o})(C);function Ae(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(e){var t={};if("object"===u.default(e[1])&&(t=e[1]),"string"==typeof e[1]&&(t.defaultValue=e[1]),"string"==typeof e[2]&&(t.tDescription=e[2]),"object"===u.default(e[2])||"object"===u.default(e[3])){var o=e[3]||e[2];Object.keys(o).forEach((function(e){t[e]=o[e]}))}return t},interpolation:{escapeValue:!0,format:function(e,t,o,a){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function Ie(e){return"string"==typeof e.ns&&(e.ns=[e.ns]),"string"==typeof e.fallbackLng&&(e.fallbackLng=[e.fallbackLng]),"string"==typeof e.fallbackNS&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function Oe(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function Ne(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(d.default(this,o),e=t.call(this),F&&C.call(A.default(e)),e.options=Ie(a),e.services={},e.logger=f,e.modules={external:[]},pe(A.default(e)),n&&!e.isInitialized&&!a.isClone){if(!e.options.initImmediate)return e.init(a,n),O.default(e,A.default(e));setTimeout((function(){e.init(a,n)}),0)}return e}return c.default(o,[{key:"init",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1?arguments[1]:void 0;"function"==typeof t&&(o=t,t={}),!t.defaultNS&&!1!==t.defaultNS&&t.ns&&("string"==typeof t.ns?t.defaultNS=t.ns:t.ns.indexOf("translation")<0&&(t.defaultNS=t.ns[0]));var a=Ae();function n(e){return e?"function"==typeof e?new e:e:null}if(this.options=Ne(Ne(Ne({},a),this.options),Ie(t)),"v1"!==this.options.compatibilityAPI&&(this.options.interpolation=Ne(Ne({},a.interpolation),this.options.interpolation)),void 0!==t.keySeparator&&(this.options.userDefinedKeySeparator=t.keySeparator),void 0!==t.nsSeparator&&(this.options.userDefinedNsSeparator=t.nsSeparator),!this.options.isClone){var i;this.modules.logger?f.init(n(this.modules.logger),this.options):f.init(null,this.options),this.modules.formatter?i=this.modules.formatter:"undefined"!=typeof Intl&&(i=le);var r=new J(this.options);this.store=new z(this.options.resources,this.options);var s=this.services;s.logger=f,s.resourceStore=this.store,s.languageUtils=r,s.pluralResolver=new ne(r,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),!i||this.options.interpolation.format&&this.options.interpolation.format!==a.interpolation.format||(s.formatter=n(i),s.formatter.init(s,this.options),this.options.interpolation.format=s.formatter.format.bind(s.formatter)),s.interpolator=new se(this.options),s.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},s.backendConnector=new ce(n(this.modules.backend),s.resourceStore,s,this.options),s.backendConnector.on("*",(function(t){for(var o=arguments.length,a=new Array(o>1?o-1:0),n=1;n1?o-1:0),n=1;n0&&"dev"!==E[0]&&(this.options.lng=E[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined");var _=["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"];_.forEach((function(t){e[t]=function(){var o;return(o=e.store)[t].apply(o,arguments)}}));var T=["addResource","addResources","addResourceBundle","removeResourceBundle"];T.forEach((function(t){e[t]=function(){var o;return(o=e.store)[t].apply(o,arguments),e}}));var l=D(),S=function(){var t=function(t,a){e.isInitialized&&!e.initializedStoreOnce&&e.logger.warn("init: i18next is already initialized. You should call init just once!"),e.isInitialized=!0,e.options.isClone||e.logger.log("initialized",e.options),e.emit("initialized",e.options),l.resolve(a),o(t,a)};if(e.languages&&"v1"!==e.options.compatibilityAPI&&!e.isInitialized)return t(null,e.t.bind(e));e.changeLanguage(e.options.lng,t)};return this.options.resources||!this.options.initImmediate?S():setTimeout(S,0),l}},{key:"loadResources",value:function(e){var t=this,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:me,a=o,n="string"==typeof e?e:this.language;if("function"==typeof e&&(a=e),!this.options.resources||this.options.partialBundledLanguages){if(n&&"cimode"===n.toLowerCase())return a();var i=[],r=function(e){e&&t.services.languageUtils.toResolveHierarchy(e).forEach((function(e){i.indexOf(e)<0&&i.push(e)}))};if(n)r(n);else{var s=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);s.forEach((function(e){return r(e)}))}this.options.preload&&this.options.preload.forEach((function(e){return r(e)})),this.services.backendConnector.load(i,this.options.ns,(function(e){e||t.resolvedLanguage||!t.language||t.setResolvedLanguage(t.language),a(e)}))}else a(null)}},{key:"reloadResources",value:function(e,t,o){var a=D();return e||(e=this.languages),t||(t=this.options.ns),o||(o=me),this.services.backendConnector.reload(e,t,(function(e){a.resolve(),o(e)})),a}},{key:"use",value:function(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&x.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}},{key:"setResolvedLanguage",value:function(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1))for(var t=0;t-1)&&this.store.hasLanguageSomeTranslations(o)){this.resolvedLanguage=o;break}}}},{key:"changeLanguage",value:function(e,t){var o=this;this.isLanguageChangingTo=e;var a=D();this.emit("languageChanging",e);var n=function(e){o.language=e,o.languages=o.services.languageUtils.toResolveHierarchy(e),o.resolvedLanguage=void 0,o.setResolvedLanguage(e)},i=function(i){e||i||!o.services.languageDetector||(i=[]);var r="string"==typeof i?i:o.services.languageUtils.getBestMatchFromCodes(i);r&&(o.language||n(r),o.translator.language||o.translator.changeLanguage(r),o.services.languageDetector&&o.services.languageDetector.cacheUserLanguage&&o.services.languageDetector.cacheUserLanguage(r)),o.loadResources(r,(function(e){!(function(e,i){i?(n(i),o.translator.changeLanguage(i),o.isLanguageChangingTo=void 0,o.emit("languageChanged",i),o.logger.log("languageChanged",i)):o.isLanguageChangingTo=void 0,a.resolve((function(){return o.t.apply(o,arguments)})),t&&t(e,(function(){return o.t.apply(o,arguments)}))})(e,r)}))};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(i):this.services.languageDetector.detect(i):i(e):i(this.services.languageDetector.detect()),a}},{key:"getFixedT",value:function(e,t,o){var a=this,n=function e(t,n){var i;if("object"!==u.default(n)){for(var r=arguments.length,s=new Array(r>2?r-2:0),E=2;E1&&void 0!==arguments[1]?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var a=this.resolvedLanguage||this.languages[0],n=!!this.options&&this.options.fallbackLng,i=this.languages[this.languages.length-1];if("cimode"===a.toLowerCase())return!0;var r=function(e,o){var a=t.services.backendConnector.state["".concat(e,"|").concat(o)];return-1===a||2===a};if(o.precheck){var s=o.precheck(this,r);if(void 0!==s)return s}return!!this.hasResourceBundle(a,e)||(!(this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages))||!(!r(a,e)||n&&!r(i,e)))}},{key:"loadNamespaces",value:function(e,t){var o=this,a=D();return this.options.ns?("string"==typeof e&&(e=[e]),e.forEach((function(e){o.options.ns.indexOf(e)<0&&o.options.ns.push(e)})),this.loadResources((function(e){a.resolve(),t&&t(e)})),a):(t&&t(),Promise.resolve())}},{key:"loadLanguages",value:function(e,t){var o=D();"string"==typeof e&&(e=[e]);var a=this.options.preload||[],n=e.filter((function(e){return a.indexOf(e)<0}));return n.length?(this.options.preload=a.concat(n),this.loadResources((function(e){o.resolve(),t&&t(e)})),o):(t&&t(),Promise.resolve())}},{key:"dir",value:function(e){if(e||(e=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!e)return"rtl";var t=this.services&&this.services.languageUtils||new J(Ae());return["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(t.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}},{key:"cloneInstance",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:me,n=Ne(Ne(Ne({},this.options),t),{isClone:!0}),i=new o(n);void 0===t.debug&&void 0===t.prefix||(i.logger=i.logger.clone(t));var r=["store","services","language"];return r.forEach((function(t){i[t]=e[t]})),i.services=Ne({},this.services),i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i.translator=new $(i.services,i.options),i.translator.on("*",(function(e){for(var t=arguments.length,o=new Array(t>1?t-1:0),a=1;a0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return new he(e,t)}));var Le=he.createInstance();Le.createInstance=he.createInstance,e.exports=Le},645:(e,t)=>{t.read=function(e,t,o,a,n){var i,r,s=8*n-a-1,E=(1<>1,T=-7,l=o?n-1:0,S=o?-1:1,u=e[t+l];for(l+=S,i=u&(1<<-T)-1,u>>=-T,T+=s;T>0;i=256*i+e[t+l],l+=S,T-=8);for(r=i&(1<<-T)-1,i>>=-T,T+=a;T>0;r=256*r+e[t+l],l+=S,T-=8);if(0===i)i=1-_;else{if(i===E)return r?NaN:1/0*(u?-1:1);r+=Math.pow(2,a),i-=_}return(u?-1:1)*r*Math.pow(2,i-a)},t.write=function(e,t,o,a,n,i){var r,s,E,_=8*i-n-1,T=(1<<_)-1,l=T>>1,S=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,u=a?0:i-1,d=a?1:-1,c=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,r=T):(r=Math.floor(Math.log(t)/Math.LN2),t*(E=Math.pow(2,-r))<1&&(r--,E*=2),(t+=r+l>=1?S/E:S*Math.pow(2,1-l))*E>=2&&(r++,E/=2),r+l>=T?(s=0,r=T):r+l>=1?(s=(t*E-1)*Math.pow(2,n),r+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,n),r=0));n>=8;e[o+u]=255&s,u+=d,s/=256,n-=8);for(r=r<0;e[o+u]=255&r,u+=d,r/=256,_-=8);e[o+u-d]|=128*c}},5457:e=>{e.exports=[{name:"Abkhaz",local:"Аҧсуа",1:"ab",2:"abk","2T":"abk","2B":"abk",3:"abk"},{name:"Afar",local:"Afaraf",1:"aa",2:"aar","2T":"aar","2B":"aar",3:"aar"},{name:"Afrikaans",local:"Afrikaans",1:"af",2:"afr","2T":"afr","2B":"afr",3:"afr"},{name:"Akan",local:"Akan",1:"ak",2:"aka","2T":"aka","2B":"aka",3:"aka"},{name:"Albanian",local:"Shqip",1:"sq",2:"sqi","2T":"sqi","2B":"alb",3:"sqi"},{name:"Amharic",local:"አማርኛ",1:"am",2:"amh","2T":"amh","2B":"amh",3:"amh"},{name:"Arabic",local:"العربية",1:"ar",2:"ara","2T":"ara","2B":"ara",3:"ara"},{name:"Aragonese",local:"Aragonés",1:"an",2:"arg","2T":"arg","2B":"arg",3:"arg"},{name:"Armenian",local:"Հայերեն",1:"hy",2:"hye","2T":"hye","2B":"arm",3:"hye"},{name:"Assamese",local:"অসমীয়া",1:"as",2:"asm","2T":"asm","2B":"asm",3:"asm"},{name:"Avaric",local:"Авар",1:"av",2:"ava","2T":"ava","2B":"ava",3:"ava"},{name:"Avestan",local:"avesta",1:"ae",2:"ave","2T":"ave","2B":"ave",3:"ave"},{name:"Aymara",local:"Aymar",1:"ay",2:"aym","2T":"aym","2B":"aym",3:"aym"},{name:"Azerbaijani",local:"Azərbaycanca",1:"az",2:"aze","2T":"aze","2B":"aze",3:"aze"},{name:"Bambara",local:"Bamanankan",1:"bm",2:"bam","2T":"bam","2B":"bam",3:"bam"},{name:"Bashkir",local:"Башҡортса",1:"ba",2:"bak","2T":"bak","2B":"bak",3:"bak"},{name:"Basque",local:"Euskara",1:"eu",2:"eus","2T":"eus","2B":"baq",3:"eus"},{name:"Belarusian",local:"Беларуская",1:"be",2:"bel","2T":"bel","2B":"bel",3:"bel"},{name:"Bengali",local:"বাংলা",1:"bn",2:"ben","2T":"ben","2B":"ben",3:"ben"},{name:"Bihari",local:"भोजपुरी",1:"bh",2:"bih","2T":"bih","2B":"bih",3:"bih"},{name:"Bislama",local:"Bislama",1:"bi",2:"bis","2T":"bis","2B":"bis",3:"bis"},{name:"Bosnian",local:"Bosanski",1:"bs",2:"bos","2T":"bos","2B":"bos",3:"bos"},{name:"Breton",local:"Brezhoneg",1:"br",2:"bre","2T":"bre","2B":"bre",3:"bre"},{name:"Bulgarian",local:"Български",1:"bg",2:"bul","2T":"bul","2B":"bul",3:"bul"},{name:"Burmese",local:"မြန်မာဘာသာ",1:"my",2:"mya","2T":"mya","2B":"bur",3:"mya"},{name:"Catalan",local:"Català",1:"ca",2:"cat","2T":"cat","2B":"cat",3:"cat"},{name:"Chamorro",local:"Chamoru",1:"ch",2:"cha","2T":"cha","2B":"cha",3:"cha"},{name:"Chechen",local:"Нохчийн",1:"ce",2:"che","2T":"che","2B":"che",3:"che"},{name:"Chichewa",local:"Chichewa",1:"ny",2:"nya","2T":"nya","2B":"nya",3:"nya"},{name:"Chinese",local:"中文",1:"zh",2:"zho","2T":"zho","2B":"chi",3:"zho"},{name:"Chuvash",local:"Чӑвашла",1:"cv",2:"chv","2T":"chv","2B":"chv",3:"chv"},{name:"Cornish",local:"Kernewek",1:"kw",2:"cor","2T":"cor","2B":"cor",3:"cor"},{name:"Corsican",local:"Corsu",1:"co",2:"cos","2T":"cos","2B":"cos",3:"cos"},{name:"Cree",local:"ᓀᐦᐃᔭᐍᐏᐣ",1:"cr",2:"cre","2T":"cre","2B":"cre",3:"cre"},{name:"Croatian",local:"Hrvatski",1:"hr",2:"hrv","2T":"hrv","2B":"hrv",3:"hrv"},{name:"Czech",local:"Čeština",1:"cs",2:"ces","2T":"ces","2B":"cze",3:"ces"},{name:"Danish",local:"Dansk",1:"da",2:"dan","2T":"dan","2B":"dan",3:"dan"},{name:"Divehi",local:"Divehi",1:"dv",2:"div","2T":"div","2B":"div",3:"div"},{name:"Dutch",local:"Nederlands",1:"nl",2:"nld","2T":"nld","2B":"dut",3:"nld"},{name:"Dzongkha",local:"རྫོང་ཁ",1:"dz",2:"dzo","2T":"dzo","2B":"dzo",3:"dzo"},{name:"English",local:"English",1:"en",2:"eng","2T":"eng","2B":"eng",3:"eng"},{name:"Esperanto",local:"Esperanto",1:"eo",2:"epo","2T":"epo","2B":"epo",3:"epo"},{name:"Estonian",local:"Eesti",1:"et",2:"est","2T":"est","2B":"est",3:"est"},{name:"Ewe",local:"Eʋegbe",1:"ee",2:"ewe","2T":"ewe","2B":"ewe",3:"ewe"},{name:"Faroese",local:"Føroyskt",1:"fo",2:"fao","2T":"fao","2B":"fao",3:"fao"},{name:"Fijian",local:"Na Vosa Vaka-Viti",1:"fj",2:"fij","2T":"fij","2B":"fij",3:"fij"},{name:"Finnish",local:"Suomi",1:"fi",2:"fin","2T":"fin","2B":"fin",3:"fin"},{name:"French",local:"Français",1:"fr",2:"fra","2T":"fra","2B":"fre",3:"fra"},{name:"Fula",local:"Fulfulde",1:"ff",2:"ful","2T":"ful","2B":"ful",3:"ful"},{name:"Galician",local:"Galego",1:"gl",2:"glg","2T":"glg","2B":"glg",3:"glg"},{name:"Georgian",local:"ქართული",1:"ka",2:"kat","2T":"kat","2B":"geo",3:"kat"},{name:"German",local:"Deutsch",1:"de",2:"deu","2T":"deu","2B":"ger",3:"deu"},{name:"Greek",local:"Ελληνικά",1:"el",2:"ell","2T":"ell","2B":"gre",3:"ell"},{name:"Guaraní",local:"Avañe'ẽ",1:"gn",2:"grn","2T":"grn","2B":"grn",3:"grn"},{name:"Gujarati",local:"ગુજરાતી",1:"gu",2:"guj","2T":"guj","2B":"guj",3:"guj"},{name:"Haitian",local:"Kreyòl Ayisyen",1:"ht",2:"hat","2T":"hat","2B":"hat",3:"hat"},{name:"Hausa",local:"هَوُسَ",1:"ha",2:"hau","2T":"hau","2B":"hau",3:"hau"},{name:"Hebrew",local:"עברית",1:"he",2:"heb","2T":"heb","2B":"heb",3:"heb"},{name:"Herero",local:"Otjiherero",1:"hz",2:"her","2T":"her","2B":"her",3:"her"},{name:"Hindi",local:"हिन्दी",1:"hi",2:"hin","2T":"hin","2B":"hin",3:"hin"},{name:"Hiri Motu",local:"Hiri Motu",1:"ho",2:"hmo","2T":"hmo","2B":"hmo",3:"hmo"},{name:"Hungarian",local:"Magyar",1:"hu",2:"hun","2T":"hun","2B":"hun",3:"hun"},{name:"Interlingua",local:"Interlingua",1:"ia",2:"ina","2T":"ina","2B":"ina",3:"ina"},{name:"Indonesian",local:"Bahasa Indonesia",1:"id",2:"ind","2T":"ind","2B":"ind",3:"ind"},{name:"Interlingue",local:"Interlingue",1:"ie",2:"ile","2T":"ile","2B":"ile",3:"ile"},{name:"Irish",local:"Gaeilge",1:"ga",2:"gle","2T":"gle","2B":"gle",3:"gle"},{name:"Igbo",local:"Igbo",1:"ig",2:"ibo","2T":"ibo","2B":"ibo",3:"ibo"},{name:"Inupiaq",local:"Iñupiak",1:"ik",2:"ipk","2T":"ipk","2B":"ipk",3:"ipk"},{name:"Ido",local:"Ido",1:"io",2:"ido","2T":"ido","2B":"ido",3:"ido"},{name:"Icelandic",local:"Íslenska",1:"is",2:"isl","2T":"isl","2B":"ice",3:"isl"},{name:"Italian",local:"Italiano",1:"it",2:"ita","2T":"ita","2B":"ita",3:"ita"},{name:"Inuktitut",local:"ᐃᓄᒃᑎᑐᑦ",1:"iu",2:"iku","2T":"iku","2B":"iku",3:"iku"},{name:"Japanese",local:"日本語",1:"ja",2:"jpn","2T":"jpn","2B":"jpn",3:"jpn"},{name:"Javanese",local:"Basa Jawa",1:"jv",2:"jav","2T":"jav","2B":"jav",3:"jav"},{name:"Kalaallisut",local:"Kalaallisut",1:"kl",2:"kal","2T":"kal","2B":"kal",3:"kal"},{name:"Kannada",local:"ಕನ್ನಡ",1:"kn",2:"kan","2T":"kan","2B":"kan",3:"kan"},{name:"Kanuri",local:"Kanuri",1:"kr",2:"kau","2T":"kau","2B":"kau",3:"kau"},{name:"Kashmiri",local:"كشميري",1:"ks",2:"kas","2T":"kas","2B":"kas",3:"kas"},{name:"Kazakh",local:"Қазақша",1:"kk",2:"kaz","2T":"kaz","2B":"kaz",3:"kaz"},{name:"Khmer",local:"ភាសាខ្មែរ",1:"km",2:"khm","2T":"khm","2B":"khm",3:"khm"},{name:"Kikuyu",local:"Gĩkũyũ",1:"ki",2:"kik","2T":"kik","2B":"kik",3:"kik"},{name:"Kinyarwanda",local:"Kinyarwanda",1:"rw",2:"kin","2T":"kin","2B":"kin",3:"kin"},{name:"Kyrgyz",local:"Кыргызча",1:"ky",2:"kir","2T":"kir","2B":"kir",3:"kir"},{name:"Komi",local:"Коми",1:"kv",2:"kom","2T":"kom","2B":"kom",3:"kom"},{name:"Kongo",local:"Kongo",1:"kg",2:"kon","2T":"kon","2B":"kon",3:"kon"},{name:"Korean",local:"한국어",1:"ko",2:"kor","2T":"kor","2B":"kor",3:"kor"},{name:"Kurdish",local:"Kurdî",1:"ku",2:"kur","2T":"kur","2B":"kur",3:"kur"},{name:"Kwanyama",local:"Kuanyama",1:"kj",2:"kua","2T":"kua","2B":"kua",3:"kua"},{name:"Latin",local:"Latina",1:"la",2:"lat","2T":"lat","2B":"lat",3:"lat"},{name:"Luxembourgish",local:"Lëtzebuergesch",1:"lb",2:"ltz","2T":"ltz","2B":"ltz",3:"ltz"},{name:"Ganda",local:"Luganda",1:"lg",2:"lug","2T":"lug","2B":"lug",3:"lug"},{name:"Limburgish",local:"Limburgs",1:"li",2:"lim","2T":"lim","2B":"lim",3:"lim"},{name:"Lingala",local:"Lingála",1:"ln",2:"lin","2T":"lin","2B":"lin",3:"lin"},{name:"Lao",local:"ພາສາລາວ",1:"lo",2:"lao","2T":"lao","2B":"lao",3:"lao"},{name:"Lithuanian",local:"Lietuvių",1:"lt",2:"lit","2T":"lit","2B":"lit",3:"lit"},{name:"Luba-Katanga",local:"Tshiluba",1:"lu",2:"lub","2T":"lub","2B":"lub",3:"lub"},{name:"Latvian",local:"Latviešu",1:"lv",2:"lav","2T":"lav","2B":"lav",3:"lav"},{name:"Manx",local:"Gaelg",1:"gv",2:"glv","2T":"glv","2B":"glv",3:"glv"},{name:"Macedonian",local:"Македонски",1:"mk",2:"mkd","2T":"mkd","2B":"mac",3:"mkd"},{name:"Malagasy",local:"Malagasy",1:"mg",2:"mlg","2T":"mlg","2B":"mlg",3:"mlg"},{name:"Malay",local:"Bahasa Melayu",1:"ms",2:"msa","2T":"msa","2B":"may",3:"msa"},{name:"Malayalam",local:"മലയാളം",1:"ml",2:"mal","2T":"mal","2B":"mal",3:"mal"},{name:"Maltese",local:"Malti",1:"mt",2:"mlt","2T":"mlt","2B":"mlt",3:"mlt"},{name:"Māori",local:"Māori",1:"mi",2:"mri","2T":"mri","2B":"mao",3:"mri"},{name:"Marathi",local:"मराठी",1:"mr",2:"mar","2T":"mar","2B":"mar",3:"mar"},{name:"Marshallese",local:"Kajin M̧ajeļ",1:"mh",2:"mah","2T":"mah","2B":"mah",3:"mah"},{name:"Mongolian",local:"Монгол",1:"mn",2:"mon","2T":"mon","2B":"mon",3:"mon"},{name:"Nauru",local:"Dorerin Naoero",1:"na",2:"nau","2T":"nau","2B":"nau",3:"nau"},{name:"Navajo",local:"Diné Bizaad",1:"nv",2:"nav","2T":"nav","2B":"nav",3:"nav"},{name:"Northern Ndebele",local:"isiNdebele",1:"nd",2:"nde","2T":"nde","2B":"nde",3:"nde"},{name:"Nepali",local:"नेपाली",1:"ne",2:"nep","2T":"nep","2B":"nep",3:"nep"},{name:"Ndonga",local:"Owambo",1:"ng",2:"ndo","2T":"ndo","2B":"ndo",3:"ndo"},{name:"Norwegian Bokmål",local:"Norsk (Bokmål)",1:"nb",2:"nob","2T":"nob","2B":"nob",3:"nob"},{name:"Norwegian Nynorsk",local:"Norsk (Nynorsk)",1:"nn",2:"nno","2T":"nno","2B":"nno",3:"nno"},{name:"Norwegian",local:"Norsk",1:"no",2:"nor","2T":"nor","2B":"nor",3:"nor"},{name:"Nuosu",local:"ꆈꌠ꒿ Nuosuhxop",1:"ii",2:"iii","2T":"iii","2B":"iii",3:"iii"},{name:"Southern Ndebele",local:"isiNdebele",1:"nr",2:"nbl","2T":"nbl","2B":"nbl",3:"nbl"},{name:"Occitan",local:"Occitan",1:"oc",2:"oci","2T":"oci","2B":"oci",3:"oci"},{name:"Ojibwe",local:"ᐊᓂᔑᓈᐯᒧᐎᓐ",1:"oj",2:"oji","2T":"oji","2B":"oji",3:"oji"},{name:"Old Church Slavonic",local:"Словѣ́ньскъ",1:"cu",2:"chu","2T":"chu","2B":"chu",3:"chu"},{name:"Oromo",local:"Afaan Oromoo",1:"om",2:"orm","2T":"orm","2B":"orm",3:"orm"},{name:"Oriya",local:"ଓଡି଼ଆ",1:"or",2:"ori","2T":"ori","2B":"ori",3:"ori"},{name:"Ossetian",local:"Ирон æвзаг",1:"os",2:"oss","2T":"oss","2B":"oss",3:"oss"},{name:"Panjabi",local:"ਪੰਜਾਬੀ",1:"pa",2:"pan","2T":"pan","2B":"pan",3:"pan"},{name:"Pāli",local:"पाऴि",1:"pi",2:"pli","2T":"pli","2B":"pli",3:"pli"},{name:"Persian",local:"فارسی",1:"fa",2:"fas","2T":"fas","2B":"per",3:"fas"},{name:"Polish",local:"Polski",1:"pl",2:"pol","2T":"pol","2B":"pol",3:"pol"},{name:"Pashto",local:"پښتو",1:"ps",2:"pus","2T":"pus","2B":"pus",3:"pus"},{name:"Portuguese",local:"Português",1:"pt",2:"por","2T":"por","2B":"por",3:"por"},{name:"Quechua",local:"Runa Simi",1:"qu",2:"que","2T":"que","2B":"que",3:"que"},{name:"Romansh",local:"Rumantsch",1:"rm",2:"roh","2T":"roh","2B":"roh",3:"roh"},{name:"Kirundi",local:"Kirundi",1:"rn",2:"run","2T":"run","2B":"run",3:"run"},{name:"Romanian",local:"Română",1:"ro",2:"ron","2T":"ron","2B":"rum",3:"ron"},{name:"Russian",local:"Русский",1:"ru",2:"rus","2T":"rus","2B":"rus",3:"rus"},{name:"Sanskrit",local:"संस्कृतम्",1:"sa",2:"san","2T":"san","2B":"san",3:"san"},{name:"Sardinian",local:"Sardu",1:"sc",2:"srd","2T":"srd","2B":"srd",3:"srd"},{name:"Sindhi",local:"سنڌي‎",1:"sd",2:"snd","2T":"snd","2B":"snd",3:"snd"},{name:"Northern Sami",local:"Sámegiella",1:"se",2:"sme","2T":"sme","2B":"sme",3:"sme"},{name:"Samoan",local:"Gagana Sāmoa",1:"sm",2:"smo","2T":"smo","2B":"smo",3:"smo"},{name:"Sango",local:"Sängö",1:"sg",2:"sag","2T":"sag","2B":"sag",3:"sag"},{name:"Serbian",local:"Српски",1:"sr",2:"srp","2T":"srp","2B":"srp",3:"srp"},{name:"Gaelic",local:"Gàidhlig",1:"gd",2:"gla","2T":"gla","2B":"gla",3:"gla"},{name:"Shona",local:"ChiShona",1:"sn",2:"sna","2T":"sna","2B":"sna",3:"sna"},{name:"Sinhala",local:"සිංහල",1:"si",2:"sin","2T":"sin","2B":"sin",3:"sin"},{name:"Slovak",local:"Slovenčina",1:"sk",2:"slk","2T":"slk","2B":"slo",3:"slk"},{name:"Slovene",local:"Slovenščina",1:"sl",2:"slv","2T":"slv","2B":"slv",3:"slv"},{name:"Somali",local:"Soomaaliga",1:"so",2:"som","2T":"som","2B":"som",3:"som"},{name:"Southern Sotho",local:"Sesotho",1:"st",2:"sot","2T":"sot","2B":"sot",3:"sot"},{name:"Spanish",local:"Español",1:"es",2:"spa","2T":"spa","2B":"spa",3:"spa"},{name:"Sundanese",local:"Basa Sunda",1:"su",2:"sun","2T":"sun","2B":"sun",3:"sun"},{name:"Swahili",local:"Kiswahili",1:"sw",2:"swa","2T":"swa","2B":"swa",3:"swa"},{name:"Swati",local:"SiSwati",1:"ss",2:"ssw","2T":"ssw","2B":"ssw",3:"ssw"},{name:"Swedish",local:"Svenska",1:"sv",2:"swe","2T":"swe","2B":"swe",3:"swe"},{name:"Tamil",local:"தமிழ்",1:"ta",2:"tam","2T":"tam","2B":"tam",3:"tam"},{name:"Telugu",local:"తెలుగు",1:"te",2:"tel","2T":"tel","2B":"tel",3:"tel"},{name:"Tajik",local:"Тоҷикӣ",1:"tg",2:"tgk","2T":"tgk","2B":"tgk",3:"tgk"},{name:"Thai",local:"ภาษาไทย",1:"th",2:"tha","2T":"tha","2B":"tha",3:"tha"},{name:"Tigrinya",local:"ትግርኛ",1:"ti",2:"tir","2T":"tir","2B":"tir",3:"tir"},{name:"Tibetan Standard",local:"བོད་ཡིག",1:"bo",2:"bod","2T":"bod","2B":"tib",3:"bod"},{name:"Turkmen",local:"Türkmençe",1:"tk",2:"tuk","2T":"tuk","2B":"tuk",3:"tuk"},{name:"Tagalog",local:"Tagalog",1:"tl",2:"tgl","2T":"tgl","2B":"tgl",3:"tgl"},{name:"Tswana",local:"Setswana",1:"tn",2:"tsn","2T":"tsn","2B":"tsn",3:"tsn"},{name:"Tonga",local:"faka Tonga",1:"to",2:"ton","2T":"ton","2B":"ton",3:"ton"},{name:"Turkish",local:"Türkçe",1:"tr",2:"tur","2T":"tur","2B":"tur",3:"tur"},{name:"Tsonga",local:"Xitsonga",1:"ts",2:"tso","2T":"tso","2B":"tso",3:"tso"},{name:"Tatar",local:"Татарча",1:"tt",2:"tat","2T":"tat","2B":"tat",3:"tat"},{name:"Twi",local:"Twi",1:"tw",2:"twi","2T":"twi","2B":"twi",3:"twi"},{name:"Tahitian",local:"Reo Mā’ohi",1:"ty",2:"tah","2T":"tah","2B":"tah",3:"tah"},{name:"Uyghur",local:"ئۇيغۇرچه",1:"ug",2:"uig","2T":"uig","2B":"uig",3:"uig"},{name:"Ukrainian",local:"Українська",1:"uk",2:"ukr","2T":"ukr","2B":"ukr",3:"ukr"},{name:"Urdu",local:"اردو",1:"ur",2:"urd","2T":"urd","2B":"urd",3:"urd"},{name:"Uzbek",local:"O‘zbek",1:"uz",2:"uzb","2T":"uzb","2B":"uzb",3:"uzb"},{name:"Venda",local:"Tshivenḓa",1:"ve",2:"ven","2T":"ven","2B":"ven",3:"ven"},{name:"Vietnamese",local:"Tiếng Việt",1:"vi",2:"vie","2T":"vie","2B":"vie",3:"vie"},{name:"Volapük",local:"Volapük",1:"vo",2:"vol","2T":"vol","2B":"vol",3:"vol"},{name:"Walloon",local:"Walon",1:"wa",2:"wln","2T":"wln","2B":"wln",3:"wln"},{name:"Welsh",local:"Cymraeg",1:"cy",2:"cym","2T":"cym","2B":"wel",3:"cym"},{name:"Wolof",local:"Wolof",1:"wo",2:"wol","2T":"wol","2B":"wol",3:"wol"},{name:"Western Frisian",local:"Frysk",1:"fy",2:"fry","2T":"fry","2B":"fry",3:"fry"},{name:"Xhosa",local:"isiXhosa",1:"xh",2:"xho","2T":"xho","2B":"xho",3:"xho"},{name:"Yiddish",local:"ייִדיש",1:"yi",2:"yid","2T":"yid","2B":"yid",3:"yid"},{name:"Yoruba",local:"Yorùbá",1:"yo",2:"yor","2T":"yor","2B":"yor",3:"yor"},{name:"Zhuang",local:"Cuengh",1:"za",2:"zha","2T":"zha","2B":"zha",3:"zha"},{name:"Zulu",local:"isiZulu",1:"zu",2:"zul","2T":"zul","2B":"zul",3:"zul"}]},7576:(e,t,o)=>{var a=o(5457),n={all:function(){return a},has:function(e,t){return void 0!==i(e,t)},codes:function(e){if((function(e){return-1!==[1,2,3,"1","2","2B","2T","3"].indexOf(e)})(e))return r(a,(function(t){return t[e]}))},names:function(e){return r(a,(function(t){return e?t.local:t.name}))},where:i};function i(e,t){for(var o=0;o{e=o.nmd(e);var a="__lodash_hash_undefined__",n=9007199254740991,i="[object Arguments]",r="[object Boolean]",s="[object Date]",E="[object Function]",_="[object GeneratorFunction]",T="[object Map]",l="[object Number]",S="[object Object]",u="[object Promise]",d="[object RegExp]",c="[object Set]",A="[object String]",I="[object Symbol]",O="[object WeakMap]",N="[object ArrayBuffer]",R="[object DataView]",m="[object Float32Array]",p="[object Float64Array]",h="[object Int8Array]",L="[object Int16Array]",f="[object Int32Array]",C="[object Uint8Array]",D="[object Uint8ClampedArray]",g="[object Uint16Array]",v="[object Uint32Array]",P=/\w*$/,y=/^\[object .+?Constructor\]$/,B=/^(?:0|[1-9]\d*)$/,b={};b[i]=b["[object Array]"]=b[N]=b[R]=b[r]=b[s]=b[m]=b[p]=b[h]=b[L]=b[f]=b[T]=b[l]=b[S]=b[d]=b[c]=b[A]=b[I]=b[C]=b[D]=b[g]=b[v]=!0,b["[object Error]"]=b[E]=b[O]=!1;var M="object"==typeof o.g&&o.g&&o.g.Object===Object&&o.g,U="object"==typeof self&&self&&self.Object===Object&&self,W=M||U||Function("return this")(),G=t&&!t.nodeType&&t,F=G&&e&&!e.nodeType&&e,k=F&&F.exports===G;function w(e,t){return e.set(t[0],t[1]),e}function H(e,t){return e.add(t),e}function V(e,t,o,a){var n=-1,i=e?e.length:0;for(a&&i&&(o=e[++n]);++n-1},De.prototype.set=function(e,t){var o=this.__data__,a=Be(o,e);return a<0?o.push([e,t]):o[a][1]=t,this},ge.prototype.clear=function(){this.__data__={hash:new Ce,map:new(de||De),string:new Ce}},ge.prototype.delete=function(e){return Ge(this,e).delete(e)},ge.prototype.get=function(e){return Ge(this,e).get(e)},ge.prototype.has=function(e){return Ge(this,e).has(e)},ge.prototype.set=function(e,t){return Ge(this,e).set(e,t),this},ve.prototype.clear=function(){this.__data__=new De},ve.prototype.delete=function(e){return this.__data__.delete(e)},ve.prototype.get=function(e){return this.__data__.get(e)},ve.prototype.has=function(e){return this.__data__.has(e)},ve.prototype.set=function(e,t){var o=this.__data__;if(o instanceof De){var a=o.__data__;if(!de||a.length<199)return a.push([e,t]),this;o=this.__data__=new ge(a)}return o.set(e,t),this};var ke=Te?x(Te,Object):function(){return[]},we=function(e){return te.call(e)};function He(e,t){return!!(t=null==t?n:t)&&("number"==typeof e||B.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=n})(e.length)&&!Qe(e)}var je=le||function(){return!1};function Qe(e){var t=Xe(e)?te.call(e):"";return t==E||t==_}function Xe(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function $e(e){return Ke(e)?Pe(e):(function(e){if(!Ve(e))return Se(e);var t=[];for(var o in Object(e))ee.call(e,o)&&"constructor"!=o&&t.push(o);return t})(e)}e.exports=function(e){return be(e,!0,!0)}},1296:(e,t,o)=>{var a=/^\s+|\s+$/g,n=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,r=/^0o[0-7]+$/i,s=parseInt,E="object"==typeof o.g&&o.g&&o.g.Object===Object&&o.g,_="object"==typeof self&&self&&self.Object===Object&&self,T=E||_||Function("return this")(),l=Object.prototype.toString,S=Math.max,u=Math.min,d=function(){return T.Date.now()};function c(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function A(e){if("number"==typeof e)return e;if((function(e){return"symbol"==typeof e||(function(e){return!!e&&"object"==typeof e})(e)&&"[object Symbol]"==l.call(e)})(e))return NaN;if(c(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=c(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(a,"");var o=i.test(e);return o||r.test(e)?s(e.slice(2),o?2:8):n.test(e)?NaN:+e}e.exports=function(e,t,o){var a,n,i,r,s,E,_=0,T=!1,l=!1,I=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function O(t){var o=a,i=n;return a=n=void 0,_=t,r=e.apply(i,o)}function N(e){return _=e,s=setTimeout(m,t),T?O(e):r}function R(e){var o=e-E;return void 0===E||o>=t||o<0||l&&e-_>=i}function m(){var e=d();if(R(e))return p(e);s=setTimeout(m,(function(e){var o=t-(e-E);return l?u(o,i-(e-_)):o})(e))}function p(e){return s=void 0,I&&a?O(e):(a=n=void 0,r)}function h(){var e=d(),o=R(e);if(a=arguments,n=this,E=e,o){if(void 0===s)return N(E);if(l)return s=setTimeout(m,t),O(E)}return void 0===s&&(s=setTimeout(m,t)),r}return t=A(t)||0,c(o)&&(T=!!o.leading,i=(l="maxWait"in o)?S(A(o.maxWait)||0,t):i,I="trailing"in o?!!o.trailing:I),h.cancel=function(){void 0!==s&&clearTimeout(s),_=0,a=E=n=s=void 0},h.flush=function(){return void 0===s?r:p(d())},h}},394:(e,t,o)=>{var a="__lodash_hash_undefined__",n=9007199254740991,i=/^\[object .+?Constructor\]$/,r="object"==typeof o.g&&o.g&&o.g.Object===Object&&o.g,s="object"==typeof self&&self&&self.Object===Object&&self,E=r||s||Function("return this")();function _(e,t,o){switch(o.length){case 0:return e.call(t);case 1:return e.call(t,o[0]);case 2:return e.call(t,o[0],o[1]);case 3:return e.call(t,o[0],o[1],o[2])}return e.apply(t,o)}function T(e,t){return!!(e?e.length:0)&&(function(e,t,o){if(t!=t)return(function(e,t,o,a){var n=e.length,i=o+(a?1:-1);for(;a?i--:++i-1}function l(e,t,o){for(var a=-1,n=e?e.length:0;++a-1&&e%1==0&&e<=n})(e.length)&&!Y(e)})(e)})(e)?e:[]}function F(e,t){var o,a,n=e.__data__;return("string"==(a=typeof(o=t))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==o:null===o)?n["string"==typeof t?"string":"hash"]:n.map}function k(e,t){var o=(function(e,t){return null==e?void 0:e[t]})(e,t);return W(o)?o:void 0}y.prototype.clear=function(){this.__data__=P?P(null):{}},y.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},y.prototype.get=function(e){var t=this.__data__;if(P){var o=t[e];return o===a?void 0:o}return h.call(t,e)?t[e]:void 0},y.prototype.has=function(e){var t=this.__data__;return P?void 0!==t[e]:h.call(t,e)},y.prototype.set=function(e,t){return this.__data__[e]=P&&void 0===t?a:t,this},B.prototype.clear=function(){this.__data__=[]},B.prototype.delete=function(e){var t=this.__data__,o=U(t,e);return!(o<0)&&(o==t.length-1?t.pop():C.call(t,o,1),!0)},B.prototype.get=function(e){var t=this.__data__,o=U(t,e);return o<0?void 0:t[o][1]},B.prototype.has=function(e){return U(this.__data__,e)>-1},B.prototype.set=function(e,t){var o=this.__data__,a=U(o,e);return a<0?o.push([e,t]):o[a][1]=t,this},b.prototype.clear=function(){this.__data__={hash:new y,map:new(v||B),string:new y}},b.prototype.delete=function(e){return F(this,e).delete(e)},b.prototype.get=function(e){return F(this,e).get(e)},b.prototype.has=function(e){return F(this,e).has(e)},b.prototype.set=function(e,t){return F(this,e).set(e,t),this},M.prototype.add=M.prototype.push=function(e){return this.__data__.set(e,a),this},M.prototype.has=function(e){return this.__data__.has(e)};var w,H,V=(w=function(e){var t=S(e,G);return t.length&&t[0]===e[0]?(function(e,t,o){for(var a=o?l:T,n=e[0].length,i=e.length,r=i,s=Array(i),E=1/0,_=[];r--;){var u=e[r];r&&t&&(u=S(u,d(t))),E=g(u.length,E),s[r]=!o&&(t||n>=120&&u.length>=120)?new M(r&&u):void 0}u=e[0];var A=-1,I=s[0];e:for(;++A{e=o.nmd(e);var a="__lodash_hash_undefined__",n=9007199254740991,i="[object Arguments]",r="[object Array]",s="[object Boolean]",E="[object Date]",_="[object Error]",T="[object Function]",l="[object Map]",S="[object Number]",u="[object Object]",d="[object Promise]",c="[object RegExp]",A="[object Set]",I="[object String]",O="[object Symbol]",N="[object WeakMap]",R="[object ArrayBuffer]",m="[object DataView]",p=/^\[object .+?Constructor\]$/,h=/^(?:0|[1-9]\d*)$/,L={};L["[object Float32Array]"]=L["[object Float64Array]"]=L["[object Int8Array]"]=L["[object Int16Array]"]=L["[object Int32Array]"]=L["[object Uint8Array]"]=L["[object Uint8ClampedArray]"]=L["[object Uint16Array]"]=L["[object Uint32Array]"]=!0,L[i]=L[r]=L[R]=L[s]=L[m]=L[E]=L[_]=L[T]=L[l]=L[S]=L[u]=L[c]=L[A]=L[I]=L[N]=!1;var f="object"==typeof o.g&&o.g&&o.g.Object===Object&&o.g,C="object"==typeof self&&self&&self.Object===Object&&self,D=f||C||Function("return this")(),g=t&&!t.nodeType&&t,v=g&&e&&!e.nodeType&&e,P=v&&v.exports===g,y=P&&f.process,B=(function(){try{return y&&y.binding&&y.binding("util")}catch(e){}})(),b=B&&B.isTypedArray;function M(e,t){for(var o=-1,a=null==e?0:e.length;++os))return!1;var _=i.get(e);if(_&&i.get(t))return _==t;var T=-1,l=!0,S=2&o?new Re:void 0;for(i.set(e,t),i.set(t,e);++T-1},Oe.prototype.set=function(e,t){var o=this.__data__,a=he(o,e);return a<0?(++this.size,o.push([e,t])):o[a][1]=t,this},Ne.prototype.clear=function(){this.size=0,this.__data__={hash:new Ie,map:new(ie||Oe),string:new Ie}},Ne.prototype.delete=function(e){var t=ye(this,e).delete(e);return this.size-=t?1:0,t},Ne.prototype.get=function(e){return ye(this,e).get(e)},Ne.prototype.has=function(e){return ye(this,e).has(e)},Ne.prototype.set=function(e,t){var o=ye(this,e),a=o.size;return o.set(e,t),this.size+=o.size==a?0:1,this},Re.prototype.add=Re.prototype.push=function(e){return this.__data__.set(e,a),this},Re.prototype.has=function(e){return this.__data__.has(e)},me.prototype.clear=function(){this.__data__=new Oe,this.size=0},me.prototype.delete=function(e){var t=this.__data__,o=t.delete(e);return this.size=t.size,o},me.prototype.get=function(e){return this.__data__.get(e)},me.prototype.has=function(e){return this.__data__.has(e)},me.prototype.set=function(e,t){var o=this.__data__;if(o instanceof Oe){var a=o.__data__;if(!ie||a.length<199)return a.push([e,t]),this.size=++o.size,this;o=this.__data__=new Ne(a)}return o.set(e,t),this.size=o.size,this};var be=te?function(e){return null==e?[]:(e=Object(e),(function(e,t){for(var o=-1,a=null==e?0:e.length,n=0,i=[];++o-1&&e%1==0&&e-1&&e%1==0&&e<=n}function Ye(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function ze(e){return null!=e&&"object"==typeof e}var xe=b?(function(e){return function(t){return e(t)}})(b):function(e){return ze(e)&&Ve(e.length)&&!!L[Le(e)]};function Ke(e){return null!=(t=e)&&Ve(t.length)&&!He(t)?pe(e):ge(e);var t}e.exports=function(e,t){return Ce(e,t)}},3096:(e,t,o)=>{var a="Expected a function",n=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,s=/^0o[0-7]+$/i,E=parseInt,_="object"==typeof o.g&&o.g&&o.g.Object===Object&&o.g,T="object"==typeof self&&self&&self.Object===Object&&self,l=_||T||Function("return this")(),S=Object.prototype.toString,u=Math.max,d=Math.min,c=function(){return l.Date.now()};function A(e,t,o){var n,i,r,s,E,_,T=0,l=!1,S=!1,A=!0;if("function"!=typeof e)throw new TypeError(a);function N(t){var o=n,a=i;return n=i=void 0,T=t,s=e.apply(a,o)}function R(e){return T=e,E=setTimeout(p,t),l?N(e):s}function m(e){var o=e-_;return void 0===_||o>=t||o<0||S&&e-T>=r}function p(){var e=c();if(m(e))return h(e);E=setTimeout(p,(function(e){var o=t-(e-_);return S?d(o,r-(e-T)):o})(e))}function h(e){return E=void 0,A&&n?N(e):(n=i=void 0,s)}function L(){var e=c(),o=m(e);if(n=arguments,i=this,_=e,o){if(void 0===E)return R(_);if(S)return E=setTimeout(p,t),N(_)}return void 0===E&&(E=setTimeout(p,t)),s}return t=O(t)||0,I(o)&&(l=!!o.leading,r=(S="maxWait"in o)?u(O(o.maxWait)||0,t):r,A="trailing"in o?!!o.trailing:A),L.cancel=function(){void 0!==E&&clearTimeout(E),T=0,n=_=i=E=void 0},L.flush=function(){return void 0===E?s:h(c())},L}function I(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function O(e){if("number"==typeof e)return e;if((function(e){return"symbol"==typeof e||(function(e){return!!e&&"object"==typeof e})(e)&&"[object Symbol]"==S.call(e)})(e))return NaN;if(I(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=I(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(n,"");var o=r.test(e);return o||s.test(e)?E(e.slice(2),o?2:8):i.test(e)?NaN:+e}e.exports=function(e,t,o){var n=!0,i=!0;if("function"!=typeof e)throw new TypeError(a);return I(o)&&(n="leading"in o?!!o.leading:n,i="trailing"in o?!!o.trailing:i),A(e,t,{leading:n,maxWait:t,trailing:i})}},9566:(e,t,o)=>{var a=o(8764).Buffer;e.exports=r,e.exports.decode=r,e.exports.encode=function(e){e=Object.assign({},e);let t=new Set;e.xt&&"string"==typeof e.xt&&t.add(e.xt);e.xt&&Array.isArray(e.xt)&&(t=new Set(e.xt));e.infoHashBuffer&&t.add(`urn:btih:${e.infoHashBuffer.toString("hex")}`);e.infoHash&&t.add(`urn:btih:${e.infoHash}`);e.infoHashV2Buffer&&t.add(e.xt=`urn:btmh:1220${e.infoHashV2Buffer.toString("hex")}`);e.infoHashV2&&t.add(`urn:btmh:1220${e.infoHashV2}`);const o=Array.from(t);1===o.length&&(e.xt=o[0]);o.length>1&&(e.xt=o);e.publicKeyBuffer&&(e.xs=`urn:btpk:${e.publicKeyBuffer.toString("hex")}`);e.publicKey&&(e.xs=`urn:btpk:${e.publicKey}`);e.name&&(e.dn=e.name);e.keywords&&(e.kt=e.keywords);e.announce&&(e.tr=e.announce);e.urlList&&(e.ws=e.urlList,delete e.as);e.peerAddresses&&(e["x.pe"]=e.peerAddresses);let a="magnet:?";return Object.keys(e).filter((e=>2===e.length||"x.pe"===e)).forEach(((t,o)=>{const n=Array.isArray(e[t])?e[t]:[e[t]];n.forEach(((e,n)=>{(o>0||n>0)&&("kt"!==t&&"so"!==t||0===n)&&(a+="&"),"dn"===t&&(e=encodeURIComponent(e).replace(/%20/g,"+")),"tr"!==t&&"as"!==t&&"ws"!==t||(e=encodeURIComponent(e)),"xs"!==t||e.startsWith("urn:btpk:")||(e=encodeURIComponent(e)),"kt"===t&&(e=encodeURIComponent(e)),"so"!==t&&(a+="kt"===t&&n>0?`+${e}`:`${t}=${e}`)})),"so"===t&&(a+=`${t}=${i.compose(n)}`)})),a};const n=o(5017),i=o(7500);function r(e){const t={},o=e.split("magnet:?")[1];let r;if((o&&o.length>=0?o.split("&"):[]).forEach((e=>{const o=e.split("=");if(2!==o.length)return;const a=o[0];let n=o[1];"dn"===a&&(n=decodeURIComponent(n).replace(/\+/g," ")),"tr"!==a&&"xs"!==a&&"as"!==a&&"ws"!==a||(n=decodeURIComponent(n)),"kt"===a&&(n=decodeURIComponent(n).split("+")),"ix"===a&&(n=Number(n)),"so"===a&&(n=i.parse(decodeURIComponent(n).split(","))),t[a]?(Array.isArray(t[a])||(t[a]=[t[a]]),t[a].push(n)):t[a]=n})),t.xt){(Array.isArray(t.xt)?t.xt:[t.xt]).forEach((e=>{if(r=e.match(/^urn:btih:(.{40})/))t.infoHash=r[1].toLowerCase();else if(r=e.match(/^urn:btih:(.{32})/)){const e=n.decode(r[1]);t.infoHash=a.from(e,"binary").toString("hex")}else(r=e.match(/^urn:btmh:1220(.{64})/))&&(t.infoHashV2=r[1].toLowerCase())}))}if(t.xs){(Array.isArray(t.xs)?t.xs:[t.xs]).forEach((e=>{(r=e.match(/^urn:btpk:(.{64})/))&&(t.publicKey=r[1].toLowerCase())}))}return t.infoHash&&(t.infoHashBuffer=a.from(t.infoHash,"hex")),t.infoHashV2&&(t.infoHashV2Buffer=a.from(t.infoHashV2,"hex")),t.publicKey&&(t.publicKeyBuffer=a.from(t.publicKey,"hex")),t.dn&&(t.name=t.dn),t.kt&&(t.keywords=t.kt),t.announce=[],("string"==typeof t.tr||Array.isArray(t.tr))&&(t.announce=t.announce.concat(t.tr)),t.urlList=[],("string"==typeof t.as||Array.isArray(t.as))&&(t.urlList=t.urlList.concat(t.as)),("string"==typeof t.ws||Array.isArray(t.ws))&&(t.urlList=t.urlList.concat(t.ws)),t.peerAddresses=[],("string"==typeof t["x.pe"]||Array.isArray(t["x.pe"]))&&(t.peerAddresses=t.peerAddresses.concat(t["x.pe"])),t.announce=Array.from(new Set(t.announce)),t.urlList=Array.from(new Set(t.urlList)),t.peerAddresses=Array.from(new Set(t.peerAddresses)),t}},6499:e=>{e.exports={"error-container":"error-container-OJnoc","error-image":"error-image-qU9Qo","error-message":"error-message-kW59Z","buttons-container":"buttons-container-tQonN","button-container":"button-container-vLSQK",label:"label-Up_te"}},9448:e=>{e.exports={"fade-in":"fade-in-pFkt_","toasts-container":"toasts-container-oKECy",router:"router-_65XU","error-container":"error-container-VZXwH","loader-container":"loader-container-vwvnb"}},8135:e=>{e.exports={"addon-details-container":"addon-details-container-ZQqDB","title-container":"title-container-fR02m",icon:"icon-ScXNu",logo:"logo-BujW_","name-container":"name-container-Gfhqw",name:"name-XNqfo",version:"version-w_xoN","section-container":"section-container-l3YaI","section-header":"section-header-bs8iy","section-label":"section-label-rYxQh","transport-url-label":"transport-url-label-EW7I5","disclaimer-label":"disclaimer-label-IGdd3"}},355:e=>{e.exports={"addon-details-modal-container":"addon-details-modal-container-_bwQ0","addon-details-container":"addon-details-container-AmNx2","addon-details-message-container":"addon-details-message-container-VEzeN","cancel-button":"cancel-button-luYIO","install-button":"install-button-XUzqz","uninstall-button":"uninstall-button-X2JXr"}},4520:e=>{e.exports={"button-container":"button-container-HNufV"}},1726:e=>{e.exports={"checkbox-container":"checkbox-container-heGq4",icon:"icon-NUvac"}},4809:e=>{e.exports={"color-picker-container":"color-picker-container-deFkW"}},5461:e=>{e.exports={"color-input-container":"color-input-container-jRZsi","transparent-label-container":"transparent-label-container-Tx2fI","transparent-label":"transparent-label-omLaY","color-picker-container":"color-picker-container-C4puR"}},9684:e=>{e.exports={"main-nav-bars-container":"main-nav-bars-container-fA7pO","horizontal-nav-bar":"horizontal-nav-bar-x5sxp","vertical-nav-bar":"vertical-nav-bar-JNw53","nav-content-container":"nav-content-container-VHwOU"}},4661:e=>{e.exports={"meta-item-container":"meta-item-container-drt6V","poster-shape-poster":"poster-shape-poster-F_CO5","poster-container":"poster-container-Fruke","poster-shape-square":"poster-shape-square-UCby3","poster-shape-landscape":"poster-shape-landscape-BPmb1","poster-image-layer":"poster-image-layer-CdxrT","poster-image":"poster-image-lt9zC","placeholder-icon":"placeholder-icon-uYwsv","play-icon-layer":"play-icon-layer-_75Lo","play-icon":"play-icon-d9_ll","progress-bar-layer":"progress-bar-layer-r81Qx","progress-bar":"progress-bar-E3QY9","new-videos":"new-videos-gZv0w",layer:"layer-RqXo1","title-bar-container":"title-bar-container-DFXJK","title-label":"title-label-dZZ_A","menu-label-container":"menu-label-container-dlL1I",icon:"icon-IfJ81"}},5883:e=>{e.exports={"action-button-container":"action-button-container-TmbQ2","icon-container":"icon-container-hvLw4",icon:"icon-DG4TM","label-container":"label-container-eh2bk",label:"label-YhHvD"}},7621:e=>{e.exports={"meta-links-container":"meta-links-container-wSrm1","label-container":"label-container-zWFke","links-container":"links-container-o4RUG","link-container":"link-container-HUDqV"}},6506:e=>{e.exports={"meta-preview-placeholder-container":"meta-preview-placeholder-container-AQ4ld","meta-info-container":"meta-info-container-pEOFb","logo-container":"logo-container-g5eNB","duration-release-info-container":"duration-release-info-container-lNaI6","duration-container":"duration-container-x2E01","release-info-container":"release-info-container-PEmeu","description-container":"description-container-yGOO4","description-label-container":"description-label-container-G_0pj","genres-container":"genres-container-v3H7A","genres-header-container":"genres-header-container-lsPLU","genre-label-container":"genre-label-container-z7kU8","action-buttons-container":"action-buttons-container-U3sbl","action-button-container":"action-button-container-xJmjB","action-button-icon":"action-button-icon-E7Epc","action-button-label":"action-button-label-R7UPL"}},6037:e=>{e.exports={"meta-preview-container":"meta-preview-container-bgBNf",compact:"compact-Wbl4Q","meta-info-container":"meta-info-container-tlmcb",logo:"logo-X9v1A","logo-placeholder":"logo-placeholder-kIy0x","runtime-release-info-container":"runtime-release-info-container-lXo3K","release-info-label":"release-info-label-XmqSY","runtime-label":"runtime-label-B29EN","description-container":"description-container-eSGft","action-buttons-container":"action-buttons-container-qQrnO","action-button":"action-button-R44aX","background-image-layer":"background-image-layer-GstuA","background-image":"background-image-B0d6i","imdb-button-container":"imdb-button-container-qCbl7",icon:"icon-MBu8k",label:"label-_DfnK","name-container":"name-container-HsS4c","meta-links":"meta-links-mTHUo","share-prompt":"share-prompt-F8qOC"}},7841:e=>{e.exports={"meta-row-placeholder-container":"meta-row-placeholder-container-wpHNk","header-container":"header-container-GCHdB","title-container":"title-container-Bjp93","see-all-container":"see-all-container-FnlIf",label:"label-dU3S2",icon:"icon-FLhtv","meta-items-container":"meta-items-container-dbGXx","meta-item":"meta-item-IegjY","poster-container":"poster-container-RlQMV","title-bar-container":"title-bar-container-YJZrl","title-label":"title-label-Ka1vs"}},676:e=>{e.exports={"meta-row-container":"meta-row-container-ucOuu","header-container":"header-container-RherZ","title-container":"title-container-SJ0nR","see-all-container":"see-all-container-HlJ4b",label:"label-isJw8",icon:"icon-PO0GH","message-container":"message-container-bIcjN","meta-items-container":"meta-items-container-TqzFs","meta-item":"meta-item-x28TU","poster-shape-poster":"poster-shape-poster-B1QR0","poster-shape-square":"poster-shape-square-m5r_O","poster-shape-landscape":"poster-shape-landscape-_FSOH"}},1621:e=>{e.exports={"modal-container":"modal-container-jZglc","modal-dialog-container":"modal-dialog-container-QgsId","close-button-container":"close-button-container-QrgQo",icon:"icon-hRjWc","title-container":"title-container-wqhp3","modal-dialog-content":"modal-dialog-content-ChXwF","buttons-container":"buttons-container-EJKJF","action-button":"action-button-bi6FL",label:"label-_ADoX"}},7409:e=>{e.exports={"label-container":"label-container-ZHk2S",label:"label-kz1K0",icon:"icon-YGvLz","modal-container":"modal-container-BQwj3","menu-container":"menu-container-Z1Pou","option-container":"option-container-yVj1o","no-options-container":"no-options-container-NYx9Z"}},8147:e=>{e.exports={"nav-menu-container":"nav-menu-container-VSzwW","user-info-container":"user-info-container-BR8yb","avatar-container":"avatar-container-jmlBM","email-container":"email-container-fvFrL","email-label":"email-label-WBX2T","logout-button-container":"logout-button-container-hSW_i","logout-label":"logout-label-dUa8B","nav-menu-section":"nav-menu-section-oMELF","nav-menu-option-container":"nav-menu-option-container-gZ1gT",icon:"icon-OSgm6","nav-menu-option-label":"nav-menu-option-label-XNuY6"}},7551:e=>{e.exports={"search-bar-container":"search-bar-container-TNPzI","search-input":"search-input-aOiJ2","placeholder-label":"placeholder-label-Irklk","submit-button-container":"submit-button-container-jPP5J",icon:"icon-FT4bG"}},4887:e=>{e.exports={"horizontal-nav-bar-container":"horizontal-nav-bar-container-jFw5Y","logo-container":"logo-container-fnFzY",logo:"logo-RVSxt",spacing:"spacing-jzj7t",title:"title-_UxXH","search-bar":"search-bar-NopQ6","button-container":"button-container-B23qB","back-button-container":"back-button-container-K9AwF",icon:"icon-wrBcp","menu-button-container":"menu-button-container-WWcwa"}},9842:e=>{e.exports={"nav-tab-button-container":"nav-tab-button-container-r8HUb",icon:"icon-vxKmB",label:"label-mc9eB",logo:"logo-ST06l"}},7636:e=>{e.exports={"vertical-nav-bar-container":"vertical-nav-bar-container-AsGLM","nav-tab-button":"nav-tab-button-noMv6"}},2168:e=>{e.exports={"pagination-input-container":"pagination-input-container-vXhi6","next-button-container":"next-button-container-zNwG6","prev-button-container":"prev-button-container-qmJ1m",icon:"icon-UoyQ9","label-container":"label-container-VwInD",label:"label-cJKC1"}},9192:e=>{e.exports={background:"background-FNyrF",icon:"icon-XXj2q"}},194:e=>{e.exports={"label-container":"label-container-iBMb9","menu-container":"menu-container-bfvDO","menu-direction-top-left":"menu-direction-top-left-KpAQN","menu-direction-bottom-left":"menu-direction-bottom-left-Uw06K","menu-direction-top-right":"menu-direction-top-right-jOtwq","menu-direction-bottom-right":"menu-direction-bottom-right-XZ9Ch"}},3109:e=>{e.exports={"search-bar-container":"search-bar-container-Vb_fz","search-input":"search-input-BWyeG",icon:"icon-poa62"}},330:e=>{e.exports={"search-bar-container":"search-bar-container-MpNBA","search-input":"search-input-ge2wu",icon:"icon-Z_Hni"}},4530:e=>{e.exports={"share-prompt-container":"share-prompt-container-YsJwl","buttons-container":"buttons-container-Oc7PG","button-container":"button-container-oMOnv",icon:"icon-FVvQH",label:"label-iOGrs","facebook-button":"facebook-button-KaNwb","twitter-button":"twitter-button-pJka2","url-container":"url-container-fMSp4","url-text-input":"url-text-input-Yka4x","copy-button":"copy-button-ShwCB"}},5036:e=>{e.exports={"active-slider-within":"active-slider-within-lQFc1","slider-container":"slider-container-aRzVq","track-after":"track-after-iD0ee",track:"track-jWhBI",thumb:"thumb-tfDk6",layer:"layer-FqnD7","track-before":"track-before-FwOXh"}},7985:e=>{e.exports={"warning-container":"warning-container-FIITF","warning-statement":"warning-statement-I7pdD","warning-button":"warning-button-zlx_V","warning-label":"warning-label-XJnBc"}},5725:e=>{e.exports={"text-input":"text-input-jR2Nr"}},9775:e=>{e.exports={"toast-item-container":"toast-item-container-nG0uk",success:"success-eIDTa","icon-container":"icon-container-rjAiH",icon:"icon-Y4I_O",error:"error-quyOd","info-container":"info-container-xD9V6","title-container":"title-container-VFReJ","message-container":"message-container-znkCj","close-button-container":"close-button-container-YtyYE"}},2638:e=>{e.exports={"addon-container":"addon-container-lC5KN","logo-container":"logo-container-ZcSSC",logo:"logo-WrsGF",icon:"icon-GxVbY","info-container":"info-container-AdMB6","name-container":"name-container-qIAg8","version-container":"version-container-zdPyN","types-container":"types-container-DaOrg","description-container":"description-container-v7Jhe","buttons-container":"buttons-container-g0xXr","action-buttons-container":"action-buttons-container-xMVmz","configure-button-container":"configure-button-container-VwVAQ","install-button-container":"install-button-container-yfcq5","share-button-container":"share-button-container-s3gwP","uninstall-button-container":"uninstall-button-container-oV4Yo",label:"label-OnWh2"}},5531:e=>{e.exports={"addons-container":"addons-container-ogGYu","addons-content":"addons-content-zhFBl","selectable-inputs-container":"selectable-inputs-container-tUul1","add-button-container":"add-button-container-SkafT",icon:"icon-HsyZS","add-button-label":"add-button-label-NN6bu","select-input-container":"select-input-container-KqG8N",spacing:"spacing-wH1w5","search-bar":"search-bar-k7MXd","filter-button":"filter-button-lLJ1X","filter-icon":"filter-icon-LUDTS","message-container":"message-container-GBw0P","addons-list-container":"addons-list-container-Ovr2Z",addon:"addon-whmdO","filters-modal":"filters-modal-w6oWY","add-addon-modal-container":"add-addon-modal-container-KR5ny",notice:"notice-UQkO1","addon-url-input":"addon-url-input-ucetZ","cancel-button":"cancel-button-R2AxR","share-modal-container":"share-modal-container-DkzPM","title-container":"title-container-La49g",logo:"logo-PmYDP","name-container":"name-container-m_Sz0",name:"name-YD0xd",version:"version-wuAFB","share-prompt-container":"share-prompt-container-vaK4P"}},969:e=>{e.exports={"board-container":"board-container-DTN_b","board-content-container":"board-content-container-ToQTz","board-content":"board-content-nPWv1","board-row":"board-row-CoJrZ","board-warning-container":"board-warning-container-a4m04","board-row-landscape":"board-row-landscape-FRGXx","board-row-poster":"board-row-poster-QPQqC","board-row-square":"board-row-square-pgaZ3","continue-watching-row":"continue-watching-row-ZiNSa"}},820:e=>{e.exports={"discover-container":"discover-container-L6OGL","discover-content":"discover-content-CRsRg","catalog-container":"catalog-container-VNK_T","selectable-inputs-container":"selectable-inputs-container-IRz50","select-input":"select-input-CHDbe","filter-container":"filter-container-BVkqT","filter-icon":"filter-icon-zlFnX","missing-addon-warning-container":"missing-addon-warning-container-IXGuv","warning-label":"warning-label-f19Jg","install-button":"install-button-SmJe1",label:"label-ToW4S","message-container":"message-container-Zv9eF",image:"image-txC9E","message-label":"message-label-mRyRX","meta-items-container":"meta-items-container-n8vNz","meta-item-placeholder":"meta-item-placeholder-wxG4I","poster-container":"poster-container-Dch4R","title-bar-container":"title-bar-container-dtDnk","title-label":"title-label-vHdQd","meta-preview-container":"meta-preview-container-CoWs5","selectable-inputs-modal":"selectable-inputs-modal-ChpOa"}},6947:e=>{e.exports={"consent-checkbox-container":"consent-checkbox-container-WV60T",label:"label-l3LSw",link:"link-UppYg"}},9070:e=>{e.exports={"password-reset-modal-container":"password-reset-modal-container-KzJPQ","credentials-text-input":"credentials-text-input-ncrIR","error-message":"error-message-DkekN","cancel-button":"cancel-button-AneJE"}},8999:e=>{e.exports={"intro-container":"intro-container-tkNS6","form-container":"form-container-HMlEh","logo-container":"logo-container-W49kt",logo:"logo-WJ36F",name:"name-BNo9R","form-button":"form-button-vyqqj",icon:"icon-L_6b6",label:"label-uHD7L","facebook-button":"facebook-button-LZ_kG","login-form-button":"login-form-button-DqJUV","login-label":"login-label-AelYq","credentials-text-input":"credentials-text-input-QMCZz","forgot-password-link-container":"forgot-password-link-container-ygZqb","forgot-password-link":"forgot-password-link-NxNUD","error-message":"error-message-cKdzB","submit-button":"submit-button-x3L8z","guest-login-button":"guest-login-button-D8DWZ","signup-form-button":"signup-form-button-UGmSk","loading-modal-container":"loading-modal-container-eLyTm","loader-container":"loader-container-oe8rU",flash:"flash-wUFXY"}},1596:e=>{e.exports={"library-container":"library-container-zM_bj","library-content":"library-content-PgX4O","selectable-inputs-container":"selectable-inputs-container-hR3or","select-input-container":"select-input-container-H1VZ1","filter-container":"filter-container-oRBlw","filter-icon":"filter-icon-ZhMyS",spacing:"spacing-Rdiyt","pagination-input":"pagination-input-DvMtv","pagination-input-placeholder":"pagination-input-placeholder-vZeuq","message-container":"message-container-MhY5t","no-user-message-container":"no-user-message-container-KMLpE","login-button-container":"login-button-container-RoEh7",label:"label-QqYmf",image:"image-csRHm","message-label":"message-label-UExl3","meta-items-container":"meta-items-container-IKrND","selectable-inputs-modal":"selectable-inputs-modal-rHlo7"}},1384:e=>{e.exports={"stream-placeholder-container":"stream-placeholder-container-T1nxv","addon-container":"addon-container-pm1P0","addon-name":"addon-name-zAOKP","info-container":"info-container-Z1Dl6","description-container":"description-container-ZOMcn","play-icon":"play-icon-MXqj3"}},3458:e=>{e.exports={"stream-container":"stream-container-JPdah","play-icon":"play-icon-w1yb5","addon-name-container":"addon-name-container-IZ2De","thumbnail-container":"thumbnail-container-ptbAk",thumbnail:"thumbnail-whoms","placeholder-icon":"placeholder-icon-znYz0","addon-name":"addon-name-tC8PX","info-container":"info-container-TihQo","progress-bar-container":"progress-bar-container-ADRp_","progress-bar":"progress-bar-XrEBL","stream-containerfocus":"stream-containerfocus-xiWVj"}},6796:e=>{e.exports={"streams-list-container":"streams-list-container-xYMJo","message-container":"message-container-f9_L4",image:"image-rIyu6",label:"label-luvnO","select-input-container":"select-input-container-irGn_","streams-container":"streams-container-bbSc4","install-button-container":"install-button-container-Q60yJ",icon:"icon-SoFgF"}},2180:e=>{e.exports={"seasons-bar-placeholder-container":"seasons-bar-placeholder-container-M81RN","next-season-button":"next-season-button-oGnlT","prev-season-button":"prev-season-button-TCbOq",icon:"icon-UzQjF",label:"label-lmBnj","seasons-popup-label-container":"seasons-popup-label-container-r2UDB","seasons-popup-label":"seasons-popup-label-xBinL","seasons-popup-icon":"seasons-popup-icon-p1T5d"}},6351:e=>{e.exports={"seasons-bar-container":"seasons-bar-container-nOZjG","next-season-button":"next-season-button-RrYAq","prev-season-button":"prev-season-button-bs1GQ",label:"label-uJbfD",icon:"icon-_ZBEE","seasons-popup-label-container":"seasons-popup-label-container-fZcu4"}},5507:e=>{e.exports={"video-placeholder-container":"video-placeholder-container-uDsav","info-container":"info-container-KTKtT","name-container":"name-container-Jvesr","released-container":"released-container-uoc4E"}},4486:e=>{e.exports={"video-container":"video-container-UBBpR","thumbnail-container":"thumbnail-container-n_jp7",thumbnail:"thumbnail-MiS3K","placeholder-icon":"placeholder-icon-LzVIO","info-container":"info-container-szYxP","title-container":"title-container-EMXpV","flex-row-container":"flex-row-container-ExEua","released-container":"released-container-zA91y","upcoming-watched-container":"upcoming-watched-container-y_ijd","upcoming-container":"upcoming-container-ASE1L","watched-container":"watched-container-LCso2","flag-label":"flag-label-dIdBb","progress-bar-container":"progress-bar-container-gMpiB","progress-bar":"progress-bar-Yhl4z","context-menu-content":"context-menu-content-MGBhW","context-menu-option-container":"context-menu-option-container-VlNjD","context-menu-option-label":"context-menu-option-label-hOUnH"}},2759:e=>{e.exports={"videos-list-container":"videos-list-container-NepX5","message-container":"message-container-_hhmQ",image:"image-_xAbP",label:"label-Ff1_X","seasons-bar":"seasons-bar-Ma8vp","search-bar":"search-bar-mZHWa","videos-container":"videos-container-msX8s"}},9514:e=>{e.exports={"metadetails-container":"metadetails-container-K_Dqa","nav-bar":"nav-bar-MH6Vk","metadetails-content":"metadetails-content-Uz5EV","vertical-nav-bar":"vertical-nav-bar-B39nq","background-image-layer":"background-image-layer-wJa90","background-image":"background-image-tSjYu","meta-message-container":"meta-message-container-MJZN5",image:"image-R1LcJ","message-label":"message-label-Uz4_P","meta-preview":"meta-preview-ES0h3",spacing:"spacing-rgIYg","streams-list":"streams-list-Y1lCM","videos-list":"videos-list-nE0LJ","meta-extension-modal-container":"meta-extension-modal-container-gHjqy","meta-extension-modal-iframe":"meta-extension-modal-iframe-GGHlm"}},5142:e=>{e.exports={"not-found-container":"not-found-container-Q1qsP","nav-bar":"nav-bar-Eu3_y","not-found-content":"not-found-content-z_Eza","not-found-image":"not-found-image-Qab4G","not-found-label":"not-found-label-mmwyZ"}},1391:e=>{e.exports={"buffering-loader-container":"buffering-loader-container-P7S0m","buffering-loader":"buffering-loader-fMSpb"}},8982:e=>{e.exports={"seek-bar-container":"seek-bar-container-JGGTa",slider:"slider-hBDOf",label:"label-QFbsS"}},6708:e=>{e.exports={"volume-slider":"volume-slider-G_xAt"}},578:e=>{e.exports={"control-bar-container":"control-bar-container-xsWA7","seek-bar":"seek-bar-I7WeY","control-bar-buttons-container":"control-bar-buttons-container-SWhkU","control-bar-button":"control-bar-button-FQUsj",icon:"icon-qy6I6","volume-slider":"volume-slider-U9jfo",spacing:"spacing-p8NJQ","control-bar-buttons-menu-button":"control-bar-buttons-menu-button-h0MWd","control-bar-buttons-menu-container":"control-bar-buttons-menu-container-M6L0_"}},3800:e=>{e.exports={"info-menu-container":"info-menu-container-R1QKH",stream:"stream-MY2Oy"}},5626:e=>{e.exports={"next-video-popup-container":"next-video-popup-container-H4wnL","slide-fade-in":"slide-fade-in-rk2M8","poster-container":"poster-container-tXZjA","poster-image":"poster-image-2D6wg","placeholder-icon":"placeholder-icon-fu1rK","info-container":"info-container-KLOMx","details-container":"details-container-bUOTZ",name:"name-sIiDL",description:"description-gIXiC","buttons-container":"buttons-container-iYrpZ",spacing:"spacing-iFwsN","button-container":"button-container-i4F7t","play-button":"play-button-Dluk6",icon:"icon-N3Ewm",label:"label-zOq_w"}},1530:e=>{e.exports={"option-container":"option-container-m_jZq",icon:"icon-krR0X",label:"label-cmqqu"}},8183:e=>{e.exports={"options-menu-container":"options-menu-container-qlzLt"}},4805:e=>{e.exports={option:"option-_O96j",icon:"icon-kqaPF",label:"label-FEOiu"}},9715:e=>{e.exports={"speed-menu-container":"speed-menu-container-ABjzc",title:"title-Hu2Dm","options-container":"options-container-DNn3D",option:"option-GcPlB"}},1289:e=>{e.exports={"statistics-menu-container":"statistics-menu-container-DhiHn",title:"title-NCwWH",label:"label-h6nN_",value:"value-E8Ftb",stats:"stats-Tr37t",stat:"stat-zoq5A","info-hash":"info-hash-GT1Cv"}},3283:e=>{e.exports={"discrete-input-container":"discrete-input-container-CMThy",header:"header-n0jWL","input-container":"input-container-TNuI2","button-container":"button-container-ciSB5",icon:"icon-JDltr","option-label":"option-label-tjeeT"}},3889:e=>{e.exports={"subtitles-menu-container":"subtitles-menu-container-PxBRZ","languages-container":"languages-container-NS7H9","subtitles-settings-container":"subtitles-settings-container-LhRGS","variants-container":"variants-container-XglzH","languages-header":"languages-header-jGNcK","settings-header":"settings-header-eaWnm","variants-header":"variants-header-TsVSR","languages-list":"languages-list-sxIwI","variants-list":"variants-list-yZo6B","language-option":"language-option-O1Yr9","variant-option":"variant-option-t7_LA","language-label":"language-label-FjjqA","variant-label":"variant-label-opjnP",icon:"icon-I1Ruh","no-variants-container":"no-variants-container-q6u1Q","no-variants-label":"no-variants-label-RmDKZ",spacing:"spacing-AWJpt","discrete-input":"discrete-input-fXELp","advanced-button":"advanced-button-YGN5T"}},4236:e=>{e.exports={"video-container":"video-container-v9_vA",video:"video-tkpQm"}},674:e=>{e.exports={"videos-menu-container":"videos-menu-container-ATzKq"}},9731:e=>{e.exports={"player-container":"player-container-wIELK",immersed:"immersed-Y0hn1","control-bar-layer":"control-bar-layer-m2jto","menu-layer":"menu-layer-HZFG9","nav-bar-layer":"nav-bar-layer-r9HT5",layer:"layer-qalDW","error-layer":"error-layer-RCEZC","error-label":"error-label-FPIMw","error-sub":"error-sub-Myxw2","playlist-button":"playlist-button-CB2WC",icon:"icon-aMPEE",label:"label-njZqk"}},5532:e=>{e.exports={"search-container":"search-container-uXEFf","search-content":"search-content-LX6un","search-row":"search-row-EQLaD","search-hints-container":"search-hints-container-FHpPM","search-hint-container":"search-hint-container-kd8iX",icon:"icon-fOZZl",label:"label-l6wxz","message-container":"message-container-YAunr",image:"image-Xuwya","message-label":"message-label-K8LPz","search-row-landscape":"search-row-landscape-o3Lfv","search-row-poster":"search-row-poster-m7CUE","search-row-square":"search-row-square-VesJA"}},9819:e=>{e.exports={"settings-container":"settings-container-b0DCu","settings-content":"settings-content-lLXmk","side-menu-container":"side-menu-container-NG17D","side-menu-button":"side-menu-button-vbkJ1",selected:"selected-yhdng",spacing:"spacing-fpLUM","version-info-label":"version-info-label-uMkm7","sections-container":"sections-container-EUKAe","section-container":"section-container-twzKQ","section-title":"section-title-Nt71Z","option-container":"option-container-EGlcv","user-info-option-container":"user-info-option-container-oRLJc","avatar-container":"avatar-container-YWq9E","email-logout-container":"email-logout-container-kYQDM","email-label-container":"email-label-container-oVmiO","logout-button-container":"logout-button-container-jLrU2","email-label":"email-label-Q__sJ","logout-label":"logout-label-zo4ES","user-panel-container":"user-panel-container-kkrJG","user-panel-label":"user-panel-label-beAQl","option-input-container":"option-input-container-NPgpT","option-name-container":"option-name-container-exGMI",icon:"icon-REQkK",label:"label-FFamJ","button-container":"button-container-ENMae","multiselect-container":"multiselect-container-w0c9l","link-container":"link-container-ERYsD","checkbox-container":"checkbox-container-R9LLN","color-input-container":"color-input-container-WclA_","info-container":"info-container-wfFcS",selectable:"selectable-eucrJ","configure-input-container":"configure-input-container-PMyIY","configure-button-container":"configure-button-container-xGFgg","shortcut-container":"shortcut-container-ZSm5O","configure-server-url-modal-container":"configure-server-url-modal-container-vSL44","server-url-input":"server-url-input-Dfazw","cancel-button":"cancel-button-iydew"}},2703:(e,t,o)=>{"use strict";var a=o(414);function n(){}function i(){}i.resetWarningCache=n,e.exports=function(){function e(e,t,o,n,i,r){if(r!==a){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var o={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:n};return o.PropTypes=o,o}},5697:(e,t,o)=>{e.exports=o(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4971:function(e,t,o){var a;e=o.nmd(e),(function(n){t&&t.nodeType,e&&e.nodeType;var i="object"==typeof o.g&&o.g;i.global!==i&&i.window!==i&&i.self;var r,s=2147483647,E=36,_=/^xn--/,T=/[^\x20-\x7E]/,l=/[\x2E\u3002\uFF0E\uFF61]/g,S={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},u=Math.floor,d=String.fromCharCode;function c(e){throw RangeError(S[e])}function A(e,t){for(var o=e.length,a=[];o--;)a[o]=t(e[o]);return a}function I(e,t){var o=e.split("@"),a="";return o.length>1&&(a=o[0]+"@",e=o[1]),a+A((e=e.replace(l,".")).split("."),t).join(".")}function O(e){for(var t,o,a=[],n=0,i=e.length;n=55296&&t<=56319&&n65535&&(t+=d((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=d(e)})).join("")}function R(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function m(e,t,o){var a=0;for(e=o?u(e/700):e>>1,e+=u(e/t);e>455;a+=E)e=u(e/35);return u(a+36*e/(e+38))}function p(e){var t,o,a,n,i,r,_,T,l,S,d,A=[],I=e.length,O=0,R=128,p=72;for((o=e.lastIndexOf("-"))<0&&(o=0),a=0;a=128&&c("not-basic"),A.push(e.charCodeAt(a));for(n=o>0?o+1:0;n=I&&c("invalid-input"),((T=(d=e.charCodeAt(n++))-48<10?d-22:d-65<26?d-65:d-97<26?d-97:E)>=E||T>u((s-O)/r))&&c("overflow"),O+=T*r,!(T<(l=_<=p?1:_>=p+26?26:_-p));_+=E)r>u(s/(S=E-l))&&c("overflow"),r*=S;p=m(O-i,t=A.length+1,0==i),u(O/t)>s-R&&c("overflow"),R+=u(O/t),O%=t,A.splice(O++,0,R)}return N(A)}function h(e){var t,o,a,n,i,r,_,T,l,S,A,I,N,p,h,L=[];for(I=(e=O(e)).length,t=128,o=0,i=72,r=0;r=t&&A<_&&(_=A);for(_-t>u((s-o)/(N=a+1))&&c("overflow"),o+=(_-t)*N,t=_,r=0;rs&&c("overflow"),A==t){for(T=o,l=E;!(T<(S=l<=i?1:l>=i+26?26:l-i));l+=E)h=T-S,p=E-S,L.push(d(R(S+h%p,0))),T=u(h/p);L.push(d(R(T,0))),i=m(o,N,a==n),o=0,++a}++o,++t}return L.join("")}r={version:"1.3.2",ucs2:{decode:O,encode:N},decode:p,encode:h,toASCII:function(e){return I(e,(function(e){return T.test(e)?"xn--"+h(e):e}))},toUnicode:function(e){return I(e,(function(e){return _.test(e)?p(e.slice(4).toLowerCase()):e}))}},void 0===(a=function(){return r}.call(t,o,t,e))||(e.exports=a)})()},2587:e=>{"use strict";function t(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,o,a,n){o=o||"&",a=a||"=";var i={};if("string"!=typeof e||0===e.length)return i;var r=/\+/g;e=e.split(o);var s=1e3;n&&"number"==typeof n.maxKeys&&(s=n.maxKeys);var E=e.length;s>0&&E>s&&(E=s);for(var _=0;_=0?(T=d.substr(0,c),l=d.substr(c+1)):(T=d,l=""),S=decodeURIComponent(T),u=decodeURIComponent(l),t(i,S)?Array.isArray(i[S])?i[S].push(u):i[S]=[i[S],u]:i[S]=u}return i}},2361:e=>{"use strict";var t=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,o,a,n){return o=o||"&",a=a||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(n){var i=encodeURIComponent(t(n))+a;return Array.isArray(e[n])?e[n].map((function(e){return i+encodeURIComponent(t(e))})).join(o):i+encodeURIComponent(t(e[n]))})).join(o):n?encodeURIComponent(t(n))+a+encodeURIComponent(t(e)):""}},7673:(e,t,o)=>{"use strict";t.decode=t.parse=o(2587),t.encode=t.stringify=o(2361)},4448:(e,t,o)=>{"use strict";var a=o(7294),n=o(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=1;o
    الاتصال بنا .","WEBSITE_P2P_CONTACT_EXTRA":"سنكون سعداء لمساعدتك على دمج المحتوى الخاص بك مع Stremio!","WEBSITE_P2P":"من حين لآخر ، تأتي تقنية تغير اسم اللعبة. لقد استثمرنا الكثير من الوقت والجهد في بناء محرك دفق الفيديو من نظير إلى نظير (P2P) الذي يوفر أداءً رائعًا وتعدد الاستخدامات للتكيف مع أي حالة استخدام. \\n اتصل بنا للحصول على فيديو P2P ممكّن بواسطة DRM عند الطلب أو البث المباشر.","WEBSITE_THOUGHTS":"الأفكار التي نشاركها:","WEBSITE_SPREAD":"انشر الخبر حول Stremio:","WEBSITE_CONTACT":"اتصل بنا ، يسعدنا أن نسمع منك!","WEBSITE_OPENSOURCE":"لمشاريعنا مفتوحة المصدر ، انتقل إلى","WEBSITE_BITCOIN":"تبرع بعملة البيتكوين:","WEBSITE_FAQ":"أسئلة مكررة","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"أسئلة","WEBSITE_TOS":"تعليمات الاستخدام","WEBSITE_LEGAL":"قانوني","WEBSITE_PAGE_ABOUT":"حول","WEBSITE_PAGE_BECOME_PARTNER":"كن شريكا معنا","WEBSITE_ALL_YOU_CAN_WATCH":"حرية المشاهدة \\n كل ما تريد.","WEBSITE_FREEDOM_TO_STREAM":"الحرية للبث","WEBSITE_WHAT_IS_STREMIO":"ما هو Stremio ?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio هو مركز شامل لتجميع محتوى الفيديو. اكتشف ، نظم ، وشاهد الفيديو من جميع أنواع المصادر على أي جهاز تملكه.","WEBSITE_WHAT_IS_STREMIO_P2":"الأفلام والبرامج التلفزيونية والمسلسلات والتلفزيون المباشر أو قنوات الويب مثل YouTube و Twitch.tv - يمكنك العثور على كل هذا على Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio هو مركز وسائط حديث يمثل حلاً شاملاً لترفيه الفيديو الخاص بك. يمكنك اكتشاف محتوى الفيديو ومشاهدته وتنظيمه من الوظائف الإضافية سهلة التثبيت.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"الأفلام والبرامج التلفزيونية والتلفزيون المباشر أو قنوات الويب - ابحث عن كل هذا على Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"استمتع على جميع أجهزة الوسائط الخاصة بك","WEBSITE_DEVICES_COLLECT":"جمع من Stremio","WEBSITE_DEVICES_IMPORT_FB":"استيراد من فيسبوك","WEBSITE_DEVICES_LOCAL":"اضافة من القرص الصلب","WEBSITE_JOIN_THE_PARTY_NOW":"انضم إلى الحفلة الآن","WEBSITE_DEVICES_ALL":"سهل الاستخدام على جميع أجهزتك؛","WEBSITE_EXTENDABLE_CATALOG":"مجموعة كبيرة من الفيديوهات يمكنك توسعتها ايضا","WEBSITE_ORGANIZE_YOUR_MEDIA":"ميزات رائعة لتنظيم الوسائط الخاصة بك ؛","WEBSITE_AS_SEEN_ON":"كما شوهد على","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"معلومات عنا","WEBSITE_LINK_TECHNOLOGY":"التقنية","WEBSITE_LINK_APPS":"التطبيقات","WEBSITE_LINK_DOWNLOADS":"تنزيل","WEBSITE_MORE":"المزيد","WEBSITE_LINK_ADDONS":"الأضافات","WEBSITE_LINK_ADDON_SDK":"حزمة مساعدة لأنشاء أضافات","WEBSITE_LINK_CONTRIBUTE":"ساهم معنا","WEBSITE_LINK_COMMUNITY":"المجتمع","WEBSITE_LINK_BLOG":"المدونة","WEBSITE_MORE_MORE":"... و المزيد","WEBSITE_LINK_HELP":"مركز المساعدة","WEBSITE_LINK_CONTACTS":"استفسارات الأعمال","WEBSITE_LINK_TOS":"البنود و الشروط","WEBSITE_LINK_PRAVACY":"سياسة الخصوصية","WEBSITE_SUBSCRIBE":"اشتراك","WEBSITE_NEWSLETTER":"انضم إلى النشرة الإخبارية لدينا لأشياء مذهلة","WEBSITE_PLACEHOLDER_EMAIL":"بريدك الالكتروني","WEBSITE_COMMUNITY":"المجتمع","WEBSITE_LINK_PRAVACY_LEGAL":"الخصوصية والقانونية","WEBSITE_WHY":"لماذا نقوم بذلك","WEBSITE_WHY_P1":"في Stremio ، نأتي إلى العمل كل يوم لأننا نريد حل مشكلة مهمة لصناعة الفيديو عند الطلب. يتم نشر الكثير من المحتوى الجديد كل دقيقة بحيث يكاد يكون من المستحيل العثور على ما تريده.","WEBSITE_WHY_P2":"نحن نساعد الأشخاص على التنقل في هذا العالم الضخم من الترفيه بالفيديو واكتشاف محتوى جديد للاستمتاع به. تجمع تطبيقاتنا بين الأفلام والمسلسلات والبث التلفزيوني المباشر وقنوات الويب والمزيد. نحن ملتزمون بجعل من السهل جدًا على المستخدمين العثور على العناوين والمذيعين الذين يحبونهم.","WEBSITE_WHY_P3":"يمكنك استخدام خدمتنا على أي جهاز وفي أي وقت ، مما يجعل Stremio مركز الترفيه بالفيديو الوحيد الذي ستحتاج إليه على الإطلاق.","WEBSITE_TEAM":"الفريق","WEBSITE_TEAM_P":"فريق Stremio صغير ولكنه قوي: بين العشرة منا ، نقوم بالبرمجة بلغات X ، ونتشارك الخبرات في تطوير البرمجيات ، وتصميم UI و UX ، والتسويق والإعلان ، والأعمال التجارية والشركات الناشئة.","WEBSITE_FEATURES":"المميزات","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"اكتشف محتوى جديدًا بسهولة","WEBSITE_FEATURES_DISCOVER_P":"اكتشف بسهولة الأفلام والبرامج التلفزيونية والمسلسلات والقنوات الجديدة لمشاهدتها. تصفح حسب الفئة أو النوع أو التصنيف أو الحداثة أو ما إلى ذلك ، أو ببساطة اكتب اسمًا للبحث عنه. يجعل Stremio العثور على محتوى فيديو جديد بمثابة قطعة من الكعكة.","WEBSITE_FEATURES_ALL_CONTENT":"كل محتوى الفيديو الخاص بك على شاشة واحدة","WEBSITE_FEATURES_ALL_CONTENT_P1":"تعرف على الأفلام أو المسلسلات أو مقاطع الفيديو التي لم تنته واستمر في مشاهدتها ؛ الحصول على إشعارات بشأن الحلقات والإصدارات الجديدة ؛ وتصفح التوصيات التي ستحصل عليها بناءً على عادات المشاهدة لديك.","WEBSITE_FEATURES_LIBRARY":"تنظيم مكتبة الفيديو الخاصة بك","WEBSITE_FEATURES_LIBRARY_P1":"أضف أي عنوان إلى مكتبة Stremio الخاصة بك بنقرة واحدة وابحث عن طريقك حول المحتوى الخاص بك ، مرتبة بدقة حسب النوع أو الحداثة أو الترتيب الأبجدي.","WEBSITE_FEATURES_CALENDAR":"تتبع كل ما تشاهده","WEBSITE_FEATURES_CALENDAR_P1":"احصل على تصور تقويم لجميع الأفلام والمسلسلات التي تضيفها إلى مكتبتك. قم بتصدير تقويم Stremio الخاص بك وقم بمزامنته حتى تعرف دائمًا موعد حلقة جديدة أو عرض أول.","WEBSITE_FEATURES_BIG_SCREEN":"استمتع بمحتوى الفيديو الخاص بك على شاشة أكبر","WEBSITE_FEATURES_BIG_SCREEN_P1":"قم بإرسال كل ما تشاهده إلى جهاز آخر - سواء كان هاتفًا أو جهازًا لوحيًا أو تلفزيونًا بنقرة واحدة.","WEBSITE_FEATURES_SOURCES":"شاهد الفيديو من عدة مصادر مختلفة","WEBSITE_FEATURES_SOURCES_P":"قم بتثبيت الوظائف الإضافية الرسمية والمجتمعية للاستمتاع بمقاطع الفيديو التي يتم الحصول عليها من العديد من المزودين المختلفين - كل ذلك في تطبيق واحد أنيق وسهل الاستخدام.","WEBSITE_CREATE_AN_ADDON":"أنشاء أضافة","WEBSITE_FEATURES_SYNC":"قم بمزامنة مكتبتك عبر أجهزة مختلفة واستأنف التشغيل","WEBSITE_FEATURES_SYNC_P1":"قم بتسجيل الدخول بحسابك عبر جميع أجهزتك واستمتع بمكتبتك ووظائفك الإضافية والتشغيل والتقويم المتزامن.","WEBSITE_FEATURES_EXTENDABLE":"كتالوج الفيديو القابل للتوسيع من خلال الإضافات","WEBSITE_FEATURES_EXTENDABLE_P1":"يوفر كتالوج Stremio الملحق عددًا من الوظائف الإضافية لتثبيت ومشاهدة مجموعة متنوعة من محتوى الفيديو. يتضمن ذلك الأفلام والعروض والتلفزيون المباشر والرياضة والأخبار والبودكاست وقنوات الويب وألعاب الفيديو والمزيد.","WEBSITE_FEATURES_AUTO_SUBS":"ترجمة تلقائية","WEBSITE_FEATURES_AUTO_SUBS_P1":"من خلال إضافات الترجمة لدينا ، ستحصل تلقائيًا على خيارات محددة للغتك المفضلة.","WEBSITE_FEATURES_CHROMECAST":"الإرسال إلى Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"استمتع بمحتوى الفيديو الخاص بك على شاشة أكبر أو قم فقط بإرسال كل ما تشاهده إلى جهاز آخر.","WEBSITE_FEATURES_KEEP_TRACK":"تتبع البرامج التلفزيونية وقنوات الويب المفضلة لديك","WEBSITE_FEATURES_KEEP_TRACK_P1":"احصل على تصور للتقويم وإشعارات لحلقات جديدة من مسلسلاتك وقنوات الويب المفضلة لديك.","WEBSITE_FEATURES_POWER_USER":"ميزات المستخدم القوي","WEBSITE_FEATURES_POWER_USER_P1":"التشغيل على مشغل خارجي","WEBSITE_FEATURES_POWER_USER_P2":"التشغيل من رابط تورنيت","WEBSITE_FEATURES_POWER_USER_P3":"الاستيراد إلى مكتبتك من الإعجابات على Facebook أو القرص المحلي","WEBSITE_ADD_ONS":"الأضافات","WEBSITE_ADD_ONS_P1":"يتم الحصول على كل محتوى الفيديو الذي يوفره Stremio من خلال نظام إضافي - لم يتم تضمين أي محتوى أو مزود محتوى في التطبيق.","WEBSITE_ADD_ONS_P2":"هناك مجموعتان من الاضافات المتاحة: الاضافات الرسمية واضافات المجتمع.","WEBSITE_ADD_ONS_P3":"يتم تطوير الاضافات الرسمية واستضافتها بواسطة Stremio ، بينما يتم إنشاء الإضافات المجتمعية من قبل أعضاء مجتمعنا ، والذين يستضيفونها أيضًا.","WEBSITE_ADDONS_OFFICIAL":"الاضافات الرسمية","WEBSITE_ADDONS_WATCHUB":"قم ببث أفلامك ومسلسلاتك وعروضك المفضلة من مزودين مثل iTunes و Hulu و Amazon وغيرها من خدمات المملكة المتحدة / الولايات المتحدة.","WEBSITE_ADDONS_YOUTUBE":"شاهد قنوات YouTube المفضلة لديك بدون إعلانات واحصل على إشعارات بالتحميلات الجديدة من المساهمين الذين تتابعهم.","WEBSITE_ADDONS_FILMON":"شاهد البث التلفزيوني المباشر والأفلام والتلفزيون الاجتماعي مجانًا. 600 قناة تلفزيونية و 45000 فيلم مجاني ووثائقي وغير ذلك.","WEBSITE_ADDONS_OPENSUBTITLES":"ترجمات الأفلام والتلفزيون بلغات متعددة ، يتم تحميل آلاف الترجمات المترجمة كل يوم.","WEBSITE_ADDONS_COMMUNITY":"أضافات المجتمع","WEBSITE_ADDONS_FILMON_VOD":"شاهد الفيديو عند الطلب من Filmon.tv","WEBSITE_ADDONS_TWICH":"شاهد البث المباشر من Twitch.tv - منصة بث فيديو لصناعة الرياضة الإلكترونية.","WEBSITE_ADDONS_VODO":"مشاهدة الافلام المستقلة تماما مجانا.","WEBSITE_ADDONS_NETFLIX":"شاهد أفلام Netflix ومسلسلات الويب.","WEBSITE_ADDONS_CREATE":"أنشىء أضافة جديدة","WEBSITE_ADDONS_CREATE_P1":"إذا كنت ترغب في ذلك ، يمكنك تطوير الأضافة الخاصة بك. بهذه الطريقة ، يمكنك منح نفسك ومجتمعنا إمكانية الوصول إلى محتوى فيديو جديد والوصول إلى جمهور مستهدف جديد من ملايين المستخدمين حول العالم.","WEBSITE_ADDONS_START_CREATE":"للبدء ، قم بزيارة صفحة Stremio Addon SDK:","WEBSITE_DOWNLOADS":"التنزيلات","WEBSITE_DOWNLOADS_P1":"للحصول على الأداء الأمثل ، نوصي باستخدام أحدث إصدار متوفر من تطبيقات Stremio. ومع ذلك ، إذا كنت ترغب في استخدام إصدار أقدم لسبب ما ، فيمكنك تنزيله من هنا.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio لأجهزة الويندوز","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio لأجهزة ماك","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio لأجهزة لينوكس","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio لأجهزة الأندرويد","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio لأجهزة تلفاز الأندرويد","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio لأجهزة الأندرويد","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio لجهاز ستيم ديك","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio لأجهزة الأيفون (نسخة محدودة)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"شارك في التطوير","WEBSITE_CONTRIBUTE_P1":"منصة Stremio مفتوحة المصدر ويمكنك بسهولة إنشاء أضافات للمحتوى غير المصدر حاليًا.","WEBSITE_CONTRIBUTE_WHY":"لماذا يجب عليك إنشاء أضافة ؟","WEBSITE_CONTRIBUTE_WHY_P1":"الوصول إلى جمهور جديد لمحتوى الفيديو الخاص بك","WEBSITE_CONTRIBUTE_WHY_P2":"تنمو قاعدة مستخدمي Stremio بسرعة - خلال العام الأول من الإطلاق ، اكتسبت Stremio مليون مستخدم حول العالم ، وفي العام الثاني من وجود النظام الأساسي ارتفع هذا الرقم إلى 2.5 مليون.","WEBSITE_CONTRIBUTE_WHY_P3":"باستخدام الأضافة الخاصة بك ، يمكنك الوصول بسهولة إلى هذا الجمهور وتوزيع محتوى الفيديو الخاص بك عليهم.","WEBSITE_CONTRIBUTE_ALL":"شاهد أفلامك ومقاطع الفيديو والمسلسلات والقنوات المفضلة لديك في مكان واحد.","WEBSITE_CONTRIBUTE_ALL_P1":"هل أنت معجب بنوع معين من المحتوى غير متوفر على Stremio حتى الآن؟ قم بإنشاء أضافة له واستمتع بمشاهدة مقاطع الفيديو المفضلة لديك في واحدة من أكبر وأسهل مراكز الترفيه في السوق من حيث الاستخدام.","WEBSITE_CONTRIBUTE_ALL_P2":"علاوة على ذلك ، ستحصل على الامتنان اللانهائي لأعضاء مجتمع Stremio الآخرين المتشابهين في التفكير.","WEBSITE_CONTRIBUTE_MONETIZE":"استثمر الأضافة الخاصة بك واكسب المال بمساعدته","WEBSITE_CONTRIBUTE_MONETIZE_P1":"بمجرد تطوير أضافة جديدة لـ Stremio ، يمكنك بسهولة تحقيق الدخل منه من خلال عدد من الطرق المختلفة. إذا كنت تفكر في ذلك ، فلا تتردد في الاتصال بنا على","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":"- يسعدنا أن نتشاور معك وننصحك بخيارات تحقيق الدخل الإضافي.","WEBSITE_CONTRIBUTE_TRANSLATE":"كن مترجمًا متطوعًا","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"إذا كنت ترغب في الاستمتاع بتطبيقات Stremio بلغات مختلفة ، فيمكنك الانضمام إلى مجتمع المترجمين المتطوعين لدينا. يساعدوننا في إضافة إصدارات من Stremio بعدة لغات مختلفة.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"هل أنت متشوق للبدء؟","WEBSITE_TRANSALTE_STREMIO":"ترجمة Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"المجتمع الرسمي","WEBSITE_COMMUNITY_OFFICIALS_P1":"كن جزءًا من مجتمع Stremio المتنامي. تابعنا على وسائل التواصل الاجتماعي ولا تخجل من إلقاء التحية - فنحن نحب أن نسمع من معجبينا!","WEBSITE_COMMUNITY_UNOFFICIALS":"المجتمعات غير الرسمية","STREMIO_COMMUNITY_NL":"Stremio في هولندا","STREMIO_COMMUNITY_BRASIL":"Stremio في البرازيل","STREMIO_COMMUNITY_GERMANY":"Stremio في المانيا","STREMIO_COMMUNITY_BELGIUM":"Stremio في بلجيكا","STREMIO_COMMUNITY_FRANCE":"Stremio في فرنسا","STREMIO_COMMUNITY_PORTUGAL":"Stremio في البرتغال","STREMIO_COMMUNITY_ITALY":"Stremio في ايطاليا","STREMIO_COMMUNITY_UK":"Stremio الممكلة المتحدة","STREMIO_COMMUNITY_USA":"Stremio الولايات المتحدة الأمريكية","STREMIO_COMMUNITY_MEXICO":"Stremio في المكسيك","STREMIO_COMMUNITY_ADDONS":"Stremio أضافات","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"الشركاء والداعمون","WEBSITE_COMMUNITY_GOODIES":"الأشياء الجيدة Stremio","WEBSITE_COMMUNITY_WALLPAPERS":"خلفيات الشاشة","WEBSITE_COMMUNITY_ART":"معرض الفنون","WEBSITE_LINK_ART":"معرض الفنون","WEBSITE_CONTACT_US":"تواصل معنا","WEBSITE_CONTACT_US_P1":"إذا كان لديك أي أسئلة أو تعليقات أو اقتراحات ، فلا تتردد في الاتصال بنا من خلال نموذج الاتصال أدناه.","WEBSITE_CONTACT_US_P2":"ضع في اعتبارك أننا موجودون في بلغاريا ، لذا قد يكون هناك تأخير في معالجة استفسارك بسبب اختلافات المنطقة الزمنية.","WEBSITE_CONTACT_US_SUCCESS":"تم ارسال رسالتك. سنعود إليك في أقرب وقت ممكن.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"يرجى إدخال البريد الإلكتروني الصحيح!","WEBSITE_CONTACT_US_Q_RELATED_TO":"بماذا يتعلق سؤالك؟","WEBSITE_CONTACT_US_Q_OS":"ما هو نظام التشغيل الخاص بك؟","WEBSITE_CONTACT_US_PH_EMAIL":"بريدك الالكتروني","WEBSITE_CONTACT_US_PH_MESSAGE":"رسالتك","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"أرسال","WEBSITE_CONTACT_US_Q_1":"كيفية التثبيت ؟","WEBSITE_CONTACT_US_Q_2":"كيفية ألغاء التثبيت ؟","WEBSITE_CONTACT_US_Q_3":"(HTML) كيف تصنع اللازانيا؟","WEBSITE_CONTACT_US_Q_4":"أضافات","WEBSITE_CONTACT_US_OS_1":"ويندوز","WEBSITE_CONTACT_US_OS_2":"ماك","WEBSITE_CONTACT_US_OS_3":"لينوكس","WEBSITE_CONTACT_US_OS_4":"أندرويد","WEBSITE_CONTACT_US_OS_5":"أيفون","WEBSITE_TECHNOLOGY":"التقنية","WEBSITE_TECHNOLOGY_P1":"نحن نحب التكنولوجيا والعلم المجنون.
    هنا ما يمدك بالطاقة Stremio (كلها مفتوحة المصدر).","WEBSITE_TECHNOLOGY_P_QT":"تطوير البرامج عبر الأنظمة الأساسية في أفضل حالاتها.","WEBSITE_TECHNOLOGY_P_MPV":"مشغل وسائط مجاني ومفتوح المصدر ومتعدد المنصات.","WEBSITE_TECHNOLOGY_P_RN":"يتيح لك React Native إنشاء تطبيقات جوال باستخدام JavaScript فقط.","WEBSITE_TECHNOLOGY_P_VLC":"إطار الوسائط المضمن في التطبيق للحصول على الوسائط المتعددة.","WEBSITE_TECHNOLOGY_P_REALM":"Realm هي منصة متنقلة وبديل لبيانات SQLite & Core.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js هي بيئة تشغيل JavaScript مفتوحة المصدر ومتعددة المنصات.","WEBSITE_TECHNOLOGY_P_RUST":"Rust هي لغة برمجة نظام متعددة النماذج تركز على السلامة ، وخاصة التزامن الآمن.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"المساهمة في المشروع","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"هناك طريقتان يمكنك من خلالهما المساهمة في Stremio ومساعدتنا على تحسين المنتج.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"يمكنك التبرع بمهاراتك اللغوية القيمة من خلال ترجمة المنصة ...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"أو","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... يمكنك توظيف مهاراتك في البرمجة لإنشاء إضافات مجتمعية.","WEBSITE_TRANSLATE_STREMIO":"ترجمة Stremio","WEBSITE_404_OH_NO":"عذرًا! الصفحة التي تبحث عنها ليست هنا ...","WEBSITE_GO_HOME":"الرئيسية","WEBSITE_LINK_OTHER_DOWNLOADS":"تنزيلات أخرى","WEBSITE_FAQ_ABR":"أسئلة متكررة","WEBSITE_SUPPORT":"الدعم","WEBSITE_DOWNLOAD_4_0_BETA":"قم بتنزيل Stremio 4 beta الآن","WEBSITE_GET_FOR_DESKTOP":"احصل عليه للكمبيوتر","WEBSITE_LINK_ADDON_COMPETITION":"منافسة الأضافات","WEBSITE_LINK_ART_CONTEST":"مسابقه الفنون","WEBSITE_MY_ACCOUNT":"حسابي الشخصي","WEBSITE_MAINPAGE_FAQ_001_H1":"ما هو Stremio ؟ ","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio هو مركز وسائط حديث يمنحك حرية مشاهدة كل ما تريد.","WEBSITE_MAINPAGE_FAQ_002_H1":"كيف يعمل؟","WEBSITE_MAINPAGE_FAQ_002_P1":"بمجرد تثبيت Stremio على جهازك وإنشاء حساب ، كل ما عليك فعله هو زيارة الكتالوج الإضافي وتثبيت أي أداة إضافية تريدها ، وأنت على ما يرام!","WEBSITE_MAINPAGE_FAQ_002_P2":"بعد ذلك ، يمكنك الانتقال إلى قسم الأكتشاف أو لوحة التحكم لبدء استكشاف المحتوى.","WEBSITE_MAINPAGE_FAQ_003_H1":"ماذا يمكنني أن أشاهد هنا؟","WEBSITE_MAINPAGE_FAQ_003_P1":"الكثير: الأفلام والبرامج التلفزيونية وقنوات الويب والرياضة والقنوات التلفزيونية والاستماع إلى البودكاست والمزيد. بفضل نظام الأضافات الخاص بنا ، يمكنك الوصول إلى مجموعة متنوعة من المحتويات.","WEBSITE_MAINPAGE_FAQ_004_H1":"هل Stremio مفتوح المصدر؟","WEBSITE_MAINPAGE_FAQ_004_P1":"يمكنك التحقق من بعض الروابط : ${1}برنامج سطح المكتب${2} و ${3}GitHub المنظمة${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"هل Stremio آمن؟","WEBSITE_MAINPAGE_FAQ_005_P1":"نعم: نظرًا لأنه برنامج مفتوح المصدر ، فإن الكود قابل للتدقيق بشكل عام ويمكنك مراجعته بنفسك.","WEBSITE_MAINPAGE_FAQ_006_H1":"ماذا عن خصوصيتي؟","WEBSITE_MAINPAGE_FAQ_006_P1":"نحترم خصوصية المستخدمين ولا نجمع أي بيانات شخصية إلى جانب الحد الأدنى الأساسي لإنشاء حسابك ومزامنته.","WEBSITE_MAINPAGE_FAQ_006_P2":"يوجد أيضًا ${1} وضع الضيف ${2} عند التسجيل ، والذي لا يتطلب أي بيانات على الإطلاق: في هذا الوضع ، لا يتم إجراء مكالمات إلى الواجهة الخلفية لدينا. ومع ذلك ، فإنه يأتي على حساب الميزات المفيدة ، مثل القدرة على مزامنة مكتبتك عبر الأجهزة.","WEBSITE_MAINPAGE_FAQ_007_H1":"هل يمكنني ارسال البث إلى التلفزيون الخاص بي؟","WEBSITE_MAINPAGE_FAQ_007_P1":"نعم ، نحن ندعم Chromecast ويمكنك الإرسال من تطبيقات سطح المكتب والأجهزة المحمولة (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"كم عدد الإضافات التي يمتلكها Stremio؟","WEBSITE_MAINPAGE_FAQ_008_P1":"اعتبارًا من أواخر عام 2019 ، أكثر من 50 - لمزيد من المعلومات ، راجع كتالوج الملحقات الخاصة بنا.","WEBSITE_MAINPAGE_FAQ_009_H1":"هل يمكن تمديد Stremio بما يتجاوز ما هو موجود في الكتالوج الإضافي؟","WEBSITE_MAINPAGE_FAQ_009_P1":"نعم ، يجب عليك التحقق مما يلي: ${1} PimpMyStremio ${2} ، ${3} مجتمعات Reddit ${4} ، ${5} Stremio Downloader ${6} ، إلخ.","WEBSITE_MAINPAGE_FAQ_010_H1":"ما هي الأجهزة التي يدعمها Stremio؟","WEBSITE_MAINPAGE_FAQ_010_P1":"لدينا تطبيقات سطح مكتب لأنظمة Windows و Mac و Linux. بالنسبة للجوال ، ندعم Android و iOS ، على الرغم من أن ضع في اعتبارك أن وظائف iOS محدودة (لا تدعم معظم الوظائف الإضافية).","WEBSITE_MAINPAGE_FAQ_010_P2":"هناك العديد من الأجهزة التي تعمل بنظام Android والتي يمكنك تشغيل Stremio عليها ، مثل NVIDIA Shield و Amazon Fire Stick ، ​​لكننا لا ندعمها رسميًا.","WEBSITE_MAINPAGE_FAQ_011_H1":"هل يمكنك إضافة محتوى معين إلى Stremio؟","WEBSITE_MAINPAGE_FAQ_011_P1":"عذرًا ، لا نقدم أي محتوى بأنفسنا ، ولكن كلما قمت بتثبيت المزيد من إضافات Stremio ، ستتمكن من العثور على المزيد من المحتوى.","WEBSITE_MAINPAGE_FAQ_012_H1":"هل يستطيع Stremio تشغيل روابط التورنيت ؟","WEBSITE_MAINPAGE_FAQ_012_P1":"نعم ، ويمكنه أيضًا تشغيل روابط HTTP العادية وملفات التورنت (السحب والإفلات).","WEBSITE_MAINPAGE_FAQ_013_H1":"هل يمكنني تنزيل مقطع فيديو ومشاهدته بلا إنترنت؟","WEBSITE_MAINPAGE_FAQ_013_P1":"تعد الميزة المتاحة في وضع عدم الاتصال ميزة قادمة ، ولكن إذا سمحت لـ Stremio بالتخزين المؤقت على جهازك (من لوحة الإعدادات) ، يمكنك مشاهدة مقاطع الفيديو لاحقًا دون اتصال.","WEBSITE_MAINPAGE_FAQ_014_H1":"لا شيء يعمل ، ساعدني!","WEBSITE_MAINPAGE_FAQ_014_P1":"هل أنت متأكد أنك قمت بتثبيت الوظائف الإضافية؟ إذا كانت الإجابة بنعم ، فراجع ${1} مركز المساعدة ${2} الخاص بنا.","WEBSITE_MAINPAGE_FAQ_015_H1":"كيف يحافظ Stremio على عمليات التطوير الخاصة به؟","WEBSITE_MAINPAGE_FAQ_015_P1":"نعرض إعلانات غير تدخلية من حين لآخر ، لكننا نفكر في الانتقال إلى نموذج التبرع.","WEBSITE_MAINPAGE_FAQ_015_P2":"لمزيد من الأسئلة ، انتقل إلى مركز المساعدة $ {1}${2}.","HELP_LEARN_MORE":"ساعدنا في معرفة المزيد عنك.","LIFESTYLE":"أسلوب الحياة","SPORTS":"الرياضة","FOOD_HEALTH":"الطعام والصحة","BEAUTY_FASHION":"جمال و موضة","NEWS":"أخبار","GAMING":"ألعاب","SCIENCE_EDUCATION":"علم و تعليم","MUSIC":"موسيقى","TRAVEL":"السفر","LATE_NIGHT":"أخر الليل","REALITY":"واقعي","COMEDY":"كوميديا","DIY":"كيف تفعلها بنفسك","TECH":"تقنية","CINEMA":"سينيما","CONTINUE":"متابعة","SLOW_LOADING":"تحميل بطيئ ؟","I_GIVE_UP":"أنا أستسلم","LEARN_MORE":"معرفة المزيد","POOR_SOURCE":"هذا المصدر غير متاح بشكل جيد أو أن اتصالك بالإنترنت ليس سريعًا بما يكفي","PICK_CATEGORIES_ERR":"عليك أن تختار 3 فئات على الأقل","ADJUST_TIMING":"ضبط التوقيت باستخدام","ADJUST_SIZE":"ضبط الحجم مع","SEARCH_ANYTHING":"يمكنك البحث عن أي شيء ...","ALL_CATEGORIES":"الجميع","SEARCH_CATEGORIES":"أفلام ومسلسلات ويوتيوب وتلفزيون","SEARCH_PERSONS":"الممثلين والمخرجين والكتاب","SEARCH_PROTOCOLS":"روابط HTTP و التورنيت","SEARCH_TYPES":"IMDB / TVDB روابط","WATCHED":"تمت المشاهدة","SHOW_LESS":"إظهار أقل","LAST_SEARCHES":"أخر عمليات البحث","CLEAR_HISTORY":"مسح السجل","CHOOSE_SOME":"اختر بعضًا من هذا:","NO_WEB_REMOTE":"تعذر تحميل Web Remote","STREMIO_OFFLINE":"Stremio غير متصل","STREMIO_EXPENSIVE_CONNECTION":"لقد اكتشفنا أنك تستخدم اتصال بيانات الجوال ، هل تريد المتابعة؟","USE_DATA":"استخدم البيانات","WARNING":"تحذير","MORE_INFO":"مزيد من المعلومات ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"جار التحميل ...","STREMIO_TV_BACK_TO_LANGUAGES":"رجوع إلى اللغات","STREMIO_TV_REMOTE":"ريموت","STREMIO_TV_GO_TO":"أذهب الى:","STREMIO_TV_OR_SCAN":"أو قم بمسح:","STREMIO_TV_ADDON_INSTRUCTIONS":"يرجى اتباع التعليمات لتثبيت الإضافات المفضلة لديك.","STREMIO_TV_LIVE_TV":"تلفاز مباشر","STREMIO_TV_RESUME_WATCHING":"تابع المشاهدة","STREMIO_TV_LOADING_BACKGROUND":"التحميل في الخلفية","STREMIO_TV_CHECKING_AUTHENTICATION":"التحقق من المصادقة","STREMIO_TV_LOADING_BOARD":"تحميل لوحة التحكم","STREMIO_TV_LOGIN_HEADER_LINE_1":"نريد لمستخدمينا الحصول على أفضل تجربة شخصية ممكنة مع برنامجنا.","STREMIO_TV_LOGIN_HEADER_LINE_2":"لهذا السبب نطلب منك التفضل بإنشاء و / أو تسجيل الدخول إلى حسابك.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"شكرا لتفهمك،","STREMIO_TV_LOGIN_FOOTER_LINE_2":"فريق Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"من أجل استخدام Web Remote مع الهاتف الذكي / الجهاز اللوحي / سطح المكتب:","STREMIO_TV_WIFI_SETUP":"Wi-Fi ضبط","STREMIO_TV_WIFI_HEADER_LINE_1":"لم يكتشف Stremio Circle اتصالاً بالإنترنت.","STREMIO_TV_WIFI_DETAILS_1":"الاتصال بـ:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"استخدم كلمة المرور:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"افتح متصفح الويب بالرابط:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"تلقائي","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"باخر مرة تمت المشاهدة","STREMIO_TV_LIBRARY_SORT_NAME":"بالاسم","STREMIO_TV_LIBRARY_TIMES_WATCHED":"بعدد مرات المشاهدة","STREMIO_TV_DETAILS_SEASON_NUMBER":"موسم ${1}","STREMIO_TV_STREAMS_LOADING":"حملت ${1} / ${2} الاضافات...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} االاضافة لازالت قيد التحميل...","STREMIO_TV_PLAYER_SETTINGS":"اعدادات المشغل","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"تاخير الترجمة","STREMIO_TV_PLAYER_AUDIO_DELAY":"تاخير الصوت","STREMIO_TV_PLAYER_VIDEO_SCALING":"مقياس الفيديو","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"مصدر بث غير مدعوم","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"فشل فتح الرابط الحارجي","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"تشغيل بـ ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"تشغيل بـ libVLC مشغل","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"استعمل stremio على هاتفك او حاسوبك واعد تثبيت او اضبط الاضافات ثم اضغط على \\"اعادة المزامنة\\"","STREMIO_TV_ADDONS_SUBTITLE":"ملاحظة: تاكد من استعمال نفس حساب stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"مزامنة الاضافات","STREMIO_TV_ADDONS_SYNC_SUCCESS":"تمت مزامنة الاضافات بنجاح","STREMIO_TV_ADDONS_SYNC_FAILED":"فشل مزامنة الاضافات","STREMIO_TV_META_LINK_FAILED":"فشل فتح ارتباط التعريف","STREMIO_TV_CATALOG_LOADING":"لم يتم تحميل الفهرس بعد ...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"تم تحديث لغة الواجهة","STREMIO_TV_SETTINGS_THEME_UPDATED":"تم تحديث المظهر","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"المشغل الافتراضي","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"المشغل الخارجي","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"اللغة المفضلة","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"اللغة المفضلة الثانية","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"تشغيل عبر الانفاق","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"قد يكون هنالك مشاكل تشغيل محتملة على بعض الأجهزة","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"بعض انواع الفيديوهات قد لا تعمل","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"بدون تخزين مؤقت","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"تلقائي","STREMIO_TV_SETTINGS_PROFILE_SOFT":"ناعم","STREMIO_TV_SETTINGS_PROFILE_FAST":"سريع","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"سريع جدا","STREMIO_TV_SETTINGS_SERVER_URL":"رابط سيرفر المشاهدة","STREMIO_TV_SETTINGS_SERVER_VERSION":"اصدار السيرفر","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"مجهول","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio اصدار","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"تغير رابط السريفر","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"ادخل عنوان رابط السيرفر","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"لقراءت سايسة الخصوصية زر:","STREMIO_TV_SETTINGS_TOS_TEXT":"لقراءت الاحكام والشروط زر:","STREMIO_TV_NAV_SEARCH":"البحث","STREMIO_TV_NAV_HOME":"الرئيسية","STREMIO_TV_NAV_DISCOVER":"اكتشاف","STREMIO_TV_NAV_LIBRARY":"المكتبة","STREMIO_TV_NAV_MOVIES":"افلام","STREMIO_TV_NAV_SERIES":"مسلسلات","STREMIO_TV_NAV_CHANNELS":"قنوات","STREMIO_TV_NAV_TV":"قنوات تلفزيونية مباشرة","STREMIO_TV_NAV_SETTINGS":"الاعدادات","STREMIO_TV_NAV_ADDONS":"اضافات","STREMIO_TV_LOGIN_TITLE":"ربط الحساب","STREMIO_TV_LOGIN_EXPIRES_IN":"تنتهي الصلاحية في","STREMIO_TV_LOGIN_STEP_ONE":"امسح QR Code اعلاه او اذهب الى","STREMIO_TV_LOGIN_STEP_TWO":"تسجيل الدحول لحساب Stremio الخاص بك","STREMIO_TV_LOGIN_NEW_LINK":"طلب رابط جديد","STREMIO_TV_LOGIN_LINK_REFRESHED":"تم تحديث كود تسجيل الدحول","STREMIO_TV_SEARCH_PLACEHOLDER":"اكتب شيئا ما","STREMIO_TV_SEARCH_NO_ADDONS":"لم يتم طلب اي اضافة لهذا الفهرس!","STREMIO_TV_SEARCH_BUTTON":"بحث","STREMIO_TV_SEARCH_KEY_DEL":"حذف","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"مسح","STREMIO_TV_SEARCH_HISTORY_TITLE":"سجل البحث","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"يمكنك البحث عن عناوين, ممثلين, قنوات والمزيد ...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"مسح سجل البحث","STREMIO_TV_FILTERS_DESCRIPTION":"اختر احد الفلترات اسفله","FILTERS":"قلترات","SETTINGS":"الاعدادات","ACCOUNT":"الحساب","LOGOUT":"تسجيل الخروج","THEMES":"مظاهر","PLAYBACK":"العرض","PLAYBACK_SPEED":"سرعة العرض","AUDIO_TRACKS":"مسار صوت","VIDEOS":"فديوهات","SERVER":"السيرفر","LINKS":"روابط","ABOUT":"حول","INTERFACE":"الواجهة","ANIMATIONS":"التاثيرات","STATUS":"الحالة","LANGUAGE":"اللغة","SIZE":"الحجم","DELAY":"التاخير","BOLD":"عريض","TEXT_COLOR":"لون الكتابة","OUTLINE_COLOR":"لون الخط الخارجي","BACKGROUND_COLOR":"لون الخلفية","BACKGROUND_BLUR":"ضبابية الخلفية","SEEK_TIME_DURATION":"مدة وقت التقديم","AUTO_PLAY":"التشعيل التلقائي للحلقة القادمة","PLAY_NOW":"شغل الان","MARK_AS_WATCHED":"تعليم كتمت مشاهدته","MARK_AS_UNWATCHED":"تعليم كلم تتم مشاهدته","REWIND_TO_BEGINNING":"اعادة من الاول","CONTINUE_WATCHING":"اكمل المشاهدة","ALL":"الكل","SECONDS":"ثواني","ON":"مفعل","OFF":"معطل","RELOAD":"اعادة تحميل","EDIT_URL":"تعديل الرابط","NONE":"لاشيء","EMBEDDED":"مضمن","REMOTE_SWITCH_DEVICES":"تبديل الأجهزة","REMOTE_VIDEOS":"فيديوهات","REMOTE_ADJUST_TIMING":"ضبط التوقيت","REMOTE_ADJUST_SIZE":"ضبط الحجم","REMOTE_COULD_NOT_BE_LOADED":"تعذر تحميل Web Remote","REMOTE_RETRY":"أعادة المحاولة","TORRENT_PROFILE_DEFAULT":"إفتراضي","TORRENT_PROFILE_SOFT":"معتدل","TORRENT_PROFILE_FAST":"سريع","TORRENT_PROFILE_ULTRA_FAST":"فائقة السرعة","FAQ_001_H1":"ما هو Stremio؟","FAQ_001_P1":"Stremio هو برنامج مركز وسائط مصمم للترفيه بالفيديو مع وضع سهولة الاستخدام في الاعتبار. يسمح لك Stremio بتنظيم شاهد مجموعتك الخاصة من الأفلام والمسلسلات والقنوات والبث التلفزيوني المباشر.","FAQ_001_P2":"يقوم Stremio بجمع المحتوى الذي يعرضه لك من القرص المحلي ونظام الوظائف الإضافية الخاص بنا.","FAQ_001_P3":"سيُعلمك أيضًا عند ظهور حلقات / مقاطع فيديو / أفلام جديدة تهتم بها ، ويقدم لك توصيات بشأن الأفلام.","FAQ_02_H1":"كيف يقارن Stremio بـ Kodi و Plex؟","FAQ_02_P1":"نحن مستوحون من هذين البرنامجين. لكن لدينا أهدافًا مختلفة - يستهدف Stremio بشكل خاص الفيديو الترفيهي ، ويسعى جاهداً ليصبح الحل السائد لذلك من خلال كونه سهل الاستخدام للغاية.","FAQ_02_P2":"لن يكون Stremio أبدًا قابلاً للتخصيص وغنيًا بالميزات مثل Kodi و Plex ، ولكنه أسهل كثيرًا في الاستخدام. فقط ${1} احصل عليه واطلع على ${2} :)","FAQ_03_H1":"كيف يقارن Stremio بـ Netflix؟","FAQ_03_P1":"مرة أخرى ، يعد Netflix أحد مصادر إلهامنا. نحن نسعى جاهدين لتحقيق تجربة مستخدم Netflix ، بالإضافة إلى الكثير من الأشياء الجيدة المضافة. ولكن الأهم من ذلك ، أننا نمنحك حرية إدارة مكتبتك الخاصة وإضافة مصادر محتوى جديدة باستخدام نظام الملحق الخاص بنا.","FAQ_03_P2":"هذا يجعل Stremio قابلًا للتمديد بشكل لا نهائي ، لذلك عندما تستخدم Stremio ، فأنت لا تقتصر أبدًا على المحتوى الذي تقرر Netflix ترخيصه. على سبيل المثال ، من خلال Stremio ، يمكنك مشاهدة محتوى من $ {1} Filmon.tv ${2} ، ${3} Twitch.tv ${4} ، ${5} YouTube ${6} ، ${7} Vodo ${8} وحتى ${9} Netflix ${10} نفسها!","FAQ_04_H1":"كيف يقارن Stremio بـ Flipboard؟","FAQ_04_P1":"لا نتلقى هذا السؤال كثيرًا ، إلا عند التحدث إلى أشخاص مبتدئين :)","FAQ_04_P2":"يعد Stremio عن طريق تصميم مجمع محتوى ، مما يجعله بشكل أساسي Flipboard للفيديو. هذا واضح جدًا في قسم Board الخاص بنا ، والذي يمنحك كتالوجات وإشعارات حلقة جديدة / فيديو جديد لما تتابعه ، تمامًا مثل Flipboard.","FAQ_05_H1":"كيف يقارن Stremio بـ Popcorn Time؟","FAQ_05_P1":"يتشابه كل من Stremio و Popcorn Time في واجهة المستخدم ، لأنه لا توجد طرق عديدة لعمل كتالوجات فيديو ترفيهية بشكل صحيح :)","FAQ_05_P2":"ولكن بينما يركز Popcorn Time على بث التورنت من مصادر محددة ، فإن Stremio غير مقيد وهو مجرد مجمع محتوى - فهو غير مقيد بمصدر محتوى معين.","FAQ_05_P3":"علاوة على ذلك ، نحن لا نقدم أي إضافات تورنت افتراضيًا ، لذلك لا يغطي Stremio حالة استخدام Popcorn Time بالوظائف الرسمية.","FAQ_05_P4":"الفرق الملحوظ الآخر هو أن Popcorn Time مفتوح المصدر بالكامل ، بينما Stremio ${1} مفتوح المصدر جزئيًا ${2}.","FAQ_06_H1":"هل ستضيف هذا الفيلم / المسلسل؟","FAQ_06_P1":"لا آسف :(","FAQ_06_P2":"كما هو مذكور في معظم الأسئلة الأخرى ، لا يوفر Stremio أي محتوى بمفرده - تتم إضافة كل شيء من خلال نظام الوظائف الإضافية. في حالة وجود طلب محتوى ، يمكنك استخدام الزر إبلاغ في المشغل ، والذي سيرسل بريدًا إلكترونيًا إلى مؤلف الوظيفة الإضافية التي تستخدمها حاليًا.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"هل ستقوم بإنشاء أضافة لـ X؟","FAQ_08_P1":"إنه ممكن تمامًا.","FAQ_08_P2":"إذا كانت لديك فكرة عن أضافة ، فأرسل لنا سطرًا على ${1}office@stremio.com ${2} ، ولكن يُرجى التأكد من أن فكرة الملحق لن تنتهك أي حقوق طبع ونشر أو شروط استخدام.","FAQ_08_P3":"في الوقت الحالي ، الأشياء التالية في خارطة الطريق هي الإضافات لـ FandangoNOW ، فيديو Filmon.tv عند الطلب و Crunchyroll.","FAQ_09_H1":"هل يستخدم Stremio برنامج BitTorrent؟","FAQ_09_P1":"نعم ، يدعم Stremio BitTorrent كبروتوكول دفق. يمكنك استخدام ذلك إما مع أضافة تورنت ، أو عن طريق سحب وإفلات ملف .torrent في Stremio ، أو عن طريق لصق رابط تورينت في شريط البحث.","FAQ_09_P2":"يرجى ملاحظة أن الملحق الرسمي الوحيد الذي يستخدم BitTorrent هو ${1} Vodo ${2} ، والذي يوفر محتوى مستقل ، وكلها مسموح بتوزيعها باستخدام BitTorrent.","FAQ_09_P3":"نحن لا ندعم استخدام أي أدوات إضافية لطرف ثالث والتي قد تتيح انتهاك حقوق النشر.","FAQ_10_H1":"ما الذي يمكنني مشاهدته في Stremio باستخدام الإضافات الرسمية؟","FAQ_10_P1":"بشكل افتراضي ، يمكنك مشاهدة محتوى Filmon.tv و YouTube و Vodo داخل Stremio نفسها ، باستخدام مشغلها المضمن. بالإضافة إلى ذلك ، لدينا ملحق لـ Twitch.tv وعدد قليل من البرامج الأخرى.","FAQ_10_P2":"يوفر هذا مجتمعة مجموعة مختارة من:","FAQ_10_L1":"قنوات تلفزيونية شهيرة ، تقدمها Filmon.tv - على سبيل المثال E4 و BBC و Bollyworld TV","FAQ_10_L2":"كل شيء من YouTube - على سبيل المثال BBC News و Top Gear و Vevo و PewDiePie","FAQ_10_L3":"الأفلام المستقلة مع Vodo","FAQ_10_L4":"يتم بث الألعاب عبر الإنترنت باستخدام Twitch.tv","FAQ_10_P3":"بالإضافة إلى ذلك ، هناك العديد من مصادر المحتوى المتوفرة مع Guidebox ووظائف Netflix الإضافية ، والتي لا تعمل بالكامل داخل Stremio ، ولكنها ستعيد التوجيه إلى الخدمة المحددة. على سبيل المثال ، ستمنحك الوظيفة الإضافية Guidebox مجموعة مختارة من الأفلام التي يمكنك بثها في الولايات المتحدة مجانًا ، من خدمات مثل TubiTV و Crackle.","FAQ_11_H1":"لن يتم تثبيت Stremio ، فماذا أفعل؟","FAQ_11_P1":"إذا كنت تستخدم نظام التشغيل Windows ، فجرّب ${1} أداة التثبيت البديلة هذه ${2}.","FAQ_11_P2":"إذا كنت تستخدم نظام التشغيل Mac OS X ، فيرجى العلم أننا لا ندعم أي شيء أقدم من OS X Mavericks (10.9).","FAQ_11_P3":"إذا كنت تستخدم نظام Linux ، فاعلم أننا ندعم نظام Linux 64 بت (x64) فقط في الوقت الحالي.","FAQ_11_P4":"إذا كنت لا تزال غير قادر على حل مشكلتك ، فيرجى مراسلتنا على ${1} Facebook group ${2}.","FAQ_12_H1":"لماذا يشتكي برنامج مكافحة الفيروسات الخاص بي؟ هل Stremio آمن؟","FAQ_12_P1":"نؤكد لك أن Stremio هو ${1} 100٪ نظيف ${2}.","FAQ_12_P2":"يشكو برنامج مكافحة الفيروسات الخاص بك لأننا نقوم بتضمين إعلانات في أداة التثبيت الخاصة بنا ، والتي تتعرف عليها بعض برامج مكافحة الفيروسات على أنها أدوات إعلانية.","FAQ_12_P3":"إذا كنت لا تزال غير متأكد ، فيمكنك تجربة ${1} المثبت البديل ${2}.","FAQ_13_H1":"كيف يمكنني عمل أضافة جديدة ؟","FAQ_13_P1":"بالنسبة للمبتدئين ، نوصيك بالتحقق من وحدة نظام الإضافات ${1} الخاصة بنا ${2} على GitHub.","FAQ_13_P2":"بعد ذلك ، يمكنك اتباع البرنامج التعليمي ${1} Hello World ${2}.","FAQ_13_P3":"إذا لم تكن لديك أي مهارات برمجية ، فالرجاء نشر فكرتك على ${1} مجتمع Reddit ${2} والاتصال بنا لتقديم فكرة الملحق الخاص بك على ${3}office@stremio.com${4}.","FAQ_14_H1":"كيف يتم نشر الإضافات؟","FAQ_14_P1":"عندما تنشئ ملحقًا ومضيفًا ، وتضع حقل نقطة نهاية في البيان الخاص بك ، والذي يشير إلى عنوان ملحق يعمل ، فإن الوظيفة الإضافية ستنشر نفسها تلقائيًا في كتالوج ${1} Addon ${2} .","FAQ_14_P2":"يحدث هذا لأن جزء الخادم من وحدة stremio-addons يقوم تلقائيًا بإجراء مكالمة إلى واجهة برمجة التطبيقات الخاصة بنا للإعلان عن الملحق. عندما تتحقق واجهة برمجة التطبيقات الخاصة بنا من نقطة النهاية كإضافة صالحة ، ستبدأ في الظهور في الكتالوج.","FAQ_15_H1":"هل يمكنني تشغيل Stremio في المتصفح الخاص بي؟","FAQ_15_P1":"ليس في الوقت الحالي ، لكن هذا قادم!","FAQ_15_P2":"إذا كنت مهتمًا برؤية ألفا ، فيمكنك رؤيته هنا: ${1} alpha4.strem.io ${2}. ضع في اعتبارك أن البث معطل في هذا الإصدار ألفا. نحن ندعم Chrome و Firefox و Opera و Edge.","FAQ_16_H1":"الإرسال إلى التلفزيون لا يعمل / لا تعمل الترجمة","FAQ_16_P1":"يستخدم Casting to TV تقنية DLNA وهي غير متسقة للغاية بين مختلف العلامات التجارية والموديلات. لهذا السبب ، ليس لدينا القدرة على اختباره في كل حالة ، لذا فهو بعيد عن الكمال. على الرغم من ذلك ، نحن نعمل على تحسينه باستمرار ولكن لا يمكننا منحك تقديرًا للوقت حول موعد بدء DLNA في العمل بشكل صحيح مع تلفزيونك.","FAQ_16_P2":"إذا كنت لا ترى التلفزيون الخاص بك في قائمة الإرسال ، فالرجاء محاولة تعطيل اتصال الشبكة وإعادة تمكينه (في Windows ، انقر بزر الماوس الأيمن فوق الشبكة واستخدم تمكين / تعطيل) ، وكذلك إعادة تشغيل جهاز التوجيه والتلفزيون والكمبيوتر .","FAQ_16_P3":"إذا كنت لا تزال تواجه مشكلات ، فيمكنك مساعدتنا عن طريق إرسال معلومات الطراز والعلامة التجارية التلفزيونية الخاصة بك على ${1}office@stremio.com${2}.","FAQ_16_P4":"في غضون ذلك ، نوصي باستخدام Chromecast ، الذي ندعمه جيدًا ، أو ببساطة قم بتوصيل التلفزيون بجهاز الكمبيوتر باستخدام كابل HDMI.","FAQ_17_H1":"يتجمد Stremio و / أو يتعطل ، ماذا يمكنني أن أفعل؟","FAQ_17_P1":"بادئ ذي بدء ، إذا كنت تستخدم Windows 7 مع برنامج مكافحة الفيروسات AVG: لدينا مشكلة في هذه المجموعة. المشكلة في AVG نفسه ، وليس هناك طريقة معقولة لحلها من جانبنا. لسوء الحظ ، لن تعمل الاستثناءات أو تعطيل برنامج مكافحة الفيروسات. الحل الوحيد هو استبدال AVG بشيء آخر.","FAQ_17_P2":"إذا لم تكن هذه هي المشكلة ، ولكنك لا تزال تستخدم Windows ، فيرجى التحديث إلى أحدث حزمة خدمة وتحديث / إعادة تثبيت برامج تشغيل GPU ، ثم حاول مرة أخرى.","FAQ_17_P3":"إذا لم يتم حل المشكلة بعد ، أو إذا كنت تستخدم نظام التشغيل Mac أو Linux ، فيرجى مراسلتنا للإبلاغ عن التفاصيل الدقيقة للمشكلة على ${1} مجموعة Facebook ${2}.","FAQ_18_H1":"كيف يمكنني عمل أضافة ؟","FAQ_18_P1":"بالنسبة للمبتدئين ، نوصيك بالتحقق من وحدة نظام الإضافات ${1} الخاصة بنا ${2} على GitHub.","FAQ_18_P2":"بعد ذلك ، يمكنك اتباع البرنامج التعليمي ${1} Hello World ${2}.","FAQ_18_P3":"إذا لم تكن لديك أي مهارات برمجية ، فالرجاء نشر فكرتك على ${1} مجتمع Reddit ${2} والاتصال بنا لتقديم فكرة الملحق الخاص بك على ${3}office@stremio.com${4}.","FAQ_19_H1":"لماذا يشغل Stremio مساحة على القرص؟","FAQ_19_P1":"يحتوي Stremio على ذاكرة تخزين مؤقت محلية للاحتفاظ مؤقتًا بملفات الفيديو التي تقوم بدفقها.","FAQ_19_P2":"هذا له فائدتان: أولاً ، يسمح لـ Stremio بالتخزين المؤقت للفيديو مسبقًا لضمان تدفق أكثر سلاسة. ثانيًا ، يحتفظ بمقاطع الفيديو في ذاكرة التخزين المؤقت المحلية حتى تتمكن من متابعة مشاهدتها في وضع عدم الاتصال.","FAQ_19_P3":"يعتمد مقدار ما يحتفظ به Stremio على إعداد ذاكرة التخزين المؤقت في لوحة الإعدادات. قد يحافظ Stremio على الكمية المحددة (على سبيل المثال 2 جيجا بايت) على القرص الخاص بك ، ما لم يكن الفيديو المتدفق حاليًا أكبر من ذلك ، وفي هذه الحالة يجب عليه تخصيص مساحة تخزين كافية للاحتفاظ به حتى تقوم بدفقه.","FAQ_20_H1":"أين هو مجلد ذاكرة التخزين المؤقت؟","FAQ_20_P1":"في Windows ، يكون stremio-cache في محرك الأقراص الذي اخترته في الإعدادات (مثال \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"على MacOS ، إنه \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"على Linux ، إنه \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"تلقيت خطأ لم يتم العثور على خادم البث ، فماذا أفعل؟","FAQ_21_P1":"إذا تلقيت هذا الخطأ ، فهذا يعني أحد الأشياء القليلة:","FAQ_21_P2":"1) أنت تحاول استخدام ملحق مدعوم من مصدر YouTube / BitTorrent ، من خلال إصدار الويب ${1} الخاص بنا ${2}. في هذه الحالة ، يجب عليك تثبيت إصدار سطح المكتب من $ {3} موقعنا $ {4}.","FAQ_21_P3":"2) هناك خطأ ما في تثبيت Stremio. في هذه الحالة ، حاول إعادة تثبيت أحدث إصدار لسطح المكتب من ${1} موقع الويب ${2}. إذا لم يساعدك ذلك ، فحاول تعطيل برامج مكافحة الفيروسات والجدران النارية وإعادة تشغيل الكمبيوتر والمحاولة مرة أخرى. إذا لم يفلح هذا أيضًا ، يرجى مراسلتنا على ${3} مجموعتنا على Facebook ${4}.","FAQ_22_H1":"لا يمكنني رؤية / استخدام معظم الوظائف الإضافية على iOS","FAQ_22_P1":"نظرًا للقيود الواردة في شروط وأحكام متجر تطبيقات Apple ، فقد قصرنا تطبيق iOS على مجموعة معينة من الوظائف الإضافية.","FAQ_22_P2":"لكن كن مطمئنًا - سيكون هناك المزيد من الوظائف الإضافية لنظام iOS في المستقبل ، وقد نضيف أيضًا تكاملًا يسمح لك باستخدام جميع إضافات Stremio بفضل توصيل تطبيق iOS بخادم Stremio Streaming Server."}')},7726:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Филм","TYPE_series":"Сериал","TYPE_tv":"TV канал","TYPE_channel":"Канал","TYPE_other":"Друго","TYPE_movie_PL":"Филми","TYPE_series_PL":"Сериали","TYPE_tv_PL":"TV канали","TYPE_channel_PL":"Канали","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Назад","MORE":"Още","DONE":"Готово","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Открий","Board":"Табло","Library":"Библиотека","My Library":"Моята библиотека","Calendar":"Календар","NOTIFICATION_ONLINE":"Вече сте онлайн","NOTIFICATION_OFFLINE":"В момента сте офлайн","INTERNET_CONNECTION":"Интернет връзка","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"търси","SEARCH_NO_RESULTS":"Не са намерени резултати","SEARCH_EXPLANATION_CONTENT":"Търсете за филми, сериали, TV и YouTube канали","SEARCH_EXPLANATION_PEOPLE":"Търсете за актьори и режисьори","SEARCH_PASTE_LINKS":"Поставете HTTP или Magnet линк","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Добави","REMOVE_FROM_LIB":"Премахни","ADDED_TO_LIB":"Добавено към библиотека","REMOVED_FROM_LIB":"Премахнато от библиотека","TRAILER":"Трейлър","WATCH_TRAILER":"Трейлър","WATCH_NOW":"Гледай","SHOW":"Покажи","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb рейтинг","YEAR":"Година","DIRECTOR":"Режисьор","WRITER":"Автор","LEAD_ACTORS":"В главните роли","CAST":"Състав","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Излъчено","SEASONS":"Сезони","GENRE":"Жанр","CATALOG":"Каталог","SUMMARY":"Описание","SHOW_MORE":"Show More","SIMILAR":"Подобни","UPCOMING":"Очаквайте","ENDED":"Прекратено","DURATION":"Продължителност","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"търси видеа","SEARCH_PLACEHOLDER":"search or paste magnet link","ADDON":"addon","ADDONS":"Addons","OFFICIAL":"официални","ADDONS_OFFICIAL":"Официални addon-и","ADDONS_POPULAR":"Популярни в района ви","ADDON_FREE":"безплатно","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"subscription","ADDON_STREAM_GEORESTRICTED":"недостъпно във вашия район","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Достъпни източници","NO_STREAM":"Няма достъпни източници","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Show all addons »","ADDON_CATALOGUE_MORE":"More addons »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Защитен addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Предупреждение: съществуващ addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Филмът е все още по кината","WATCH_IN_CINEMA":"Гледайте го в киното","IN_THEATER":"По кината","GET_TICKETS":"Купи билети","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Нямаме информация за този канал все още.
    Върнете се след няколко минути.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Добавете го в библиотеката, за да получите известие.","GET_NOTIFIED_WHEN_AVAILABLE":"Ще получите известие като излезе.","WARNING_STREAMING_SERVER":"Предупреждение: локалният streaming server не е свързан. Не е възможно стриймване от YouTube и BitTorrent.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"Изглежда като","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"стриймваме от","CASTING_TO":"Възпроизвеждаме на","NETWORK_STATUS":"Мрежа","STREAM_SPEED":"Скорост:","STREAM_BUFFERED":"Буфер:","PEERS_INFO":"Пиърове","PEERS_ACTIVE":"Активни:","PEERS_CONNECTED":"Свързани:","PEERS_WAITING":"Чакащи:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"зареждане...","PLAYING_LOCAL":"възпроизвеждане от локален файл","PLAYING_CACHE":"възпроизвеждане от кеш","WRONG_SUBS":"Грешни субтитри?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Изберете устройство","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Телефон / Таблет","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Смени субтитрите на ","SUBTITLES_CHANGE_NONE":"Няма други субтитри за този език.","SUBTITLES_CHANGE_ACIVE":"В момента субтитри #{{subtitlesDialog.activeIdx + 1}} са активирани. Кликнете \\"Продължи\\" за да активирате #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Алтернативно,","SUBTITLES_ADJUST_DELAY":"Настройте забавяне на субтитрите:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Или използвайте G / H, за да настроите субтитрите.","SUBTITLES_ADJUST_DELAY_TIP":"Съвет: може да ползвате G / H, за да настроите субтитрите.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Сезон","EPISODE":"Епизод","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"популярни","SORT_RECENT":"последни","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"рейтинг","SORT_WATCHED":"гледани","SORT_YEAR":"година","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"продължи","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Избрано","DISCOVER_TOP":"Топ","DISCOVER_OSCAR":"Носители на Оскар","DISCOVER_WARNING_TITLE":"Опа!","DISCOVER_EMPTY_CATALOG":"Този addon върна празно съдържание.","DISCOVER_ADULT_WARNING":"Това съдържание е достъпно само за възрастни. Имаш ли навършени 18 години?","DISCOVER_NOADDON_WARNING":"Внимание: няма активен Stremio addon за този тип съдържание. Тук виждате запазена информация, тя няма да се обнови.","DISCOVER_LOAD_ERR":"Съдържанието не може да се зареди. Възникна грешка.","DISCOVER_ADDON_UNINSTALLED":"Това съдържание вече не е достъпно. Може би addon-ът е премахнат.","UNINSTALL_THIS_ADDON":"Деинсталирай този addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Стартирай новата версия!","UPGRADE":"Достъпна е нова версия","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Обновете вашата версия на Stremio","MANUAL_UPDATE_LINE1":"Използвате стара версия на Stremio.","MANUAL_UPDATE_LINE2":"Моля обновете колкото може по-скоро.","BUTTON_UPDATE_LATTER":"По-късно","BUTTON_UPDATE_NOW":"Обнови сега","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Влизане с Facebook","FB_NOTHINGSHARED":"Нищо не се споделя без ваше разрешение.","FB_NOPOST":"We won’t post anything on your behalf","OR":"или","I_ACCEPT":"Прочетох и приемам","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Общите условия","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Паролите се разминават","SIGN_UP":"Регистрирай се","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Вход","LOG_OUT":"Отписване","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Влизане като гост","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"кликнете тук","WRONG_PASSWORD":"Грешна парола. В случай, че сте я забравили, ","SET_A_PASS":"сложете ваша парола","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"Този email е използван с Фейсбук логин.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Избраният адон не се поддържа на тази платформа.","ADDON_DISCLAIMER":"Използването на addon-и от трети лица е ваша отговорност.","ADDON_ACTIVATE":"Активирай този addon?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Какво ново?","BUTTON_CONTINUE":"Продължи","BUTTON_ACTIVATE":"Активирай","BUTTON_ACTIVATED":"Активирано","BUTTON_CANCEL":"Отказ","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Отхвърли всички","BUTTON_VIEW_ALL":"виж всички","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Библиотеката ви е празна. Открийте колко е полезна :) ","HOW_START":"Започнете така:","LIB_EMPTY_CAL":"Календарът показва епизоди от сериалите във вашата Библиотека.","HOW_START_CAL":"Ето как добавяте сериали:","LIB_EMPTY_BOARD":"Тук ще видите каталог от популярно съдържание, както и известия и препоръки, свързани с Библиотеката ви.","HOW_START_BOARD_WAIT":"Моля, добавете няколко канала/сериала и ни дайте няколко минути да съберем известия :)","HOW_START_BOARD":"Ето как добавяте филми и сериали в библиотеката:","IMPORT_FB":"Добавяне от Facebook","IMPORT_TRAKT":"Import your media library from Trakt","IMPORT_DISCOVER":"Намерете интересни неща в Discover","IMPORT_DISK":"Сканирайте за филми и сериали от вашия локален диск","PLEASE_CREATE_ACC":"Моля, създайте акаунт, за да използвате Library и Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from Discover","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your local disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Настройки","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Промяна на парола","SETTINGS_TOS":"Условия за ползване","SETTINGS_SUPPORT":"Поддръжка","SETTING_LANGUAGE":"Език","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Спиране","CONNECTED":"Connected","AUTHENTICATE":"оторизация","CACHING":"Кеширане","SETTINGS_CACHING_DRIVE":"Изберете диск за кеш","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Януари","February":"Февруари","March":"Март","April":"Април","May":"Май","June":"Юни","July":"Юли","August":"Август","September":"Септември","October":"Октомври","November":"Ноември","December":"Декември","Monday":"Понеделник","Tuesday":"Вторник","Wednesday":"Сряда","Thursday":"Четвъртък","Friday":"Петък","Saturday":"Събота","Sunday":"Неделя","Action":"Екшън","Comedy":"Комедия","War":"Военни","Family":"Семейни","Animation":"Анимация","Adventure":"Приключенски","Fantasy":"Фентъзи","Crime":"Криминални","Mystery":"Мистерия","Romance":"Романтични","Drama":"Драма","Horror":"Ужаси","Thriller":"Трилъри","Sci-Fi":"Sci-Fi","Music":"Музикални","Biography":"Биографични","Documentary":"Документални","Sport":"Спортни","Musical":"Мюзикъли","Western":"Уестърн","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"ново видео","new episode":"нов епизод","new movie":"нов филм","recommended":"препоръчано","we recommend":"we recommend","offer of the day":"offer of the day","news":"новини","music video":"музикално видео","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Премахни известия","CTX_DISMISS_ALL":"Премахни всички","CTX_SHARE":"Сподели","CTX_COPY_SHARE_LINK":"Копирай линк за споделяне","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Покажи","CTX_PLAY":"Гледай","CTX_PLAY_IN":"Гледай в","CTX_PLAY_ON":"Гледай на","CTX_WATCH_ON":"Гледай на","CTX_WATCH":"Гледай","CTX_WATCHED":"Гледано","CTX_WATCH_BEGINNING":"Гледай от началото","CTX_WATCH_MOBILE":"Гледай на мобилно устройство","CTX_REWIND":"Превърти до началото","CTX_MARK_WATCHED":"Маркирай като гледано","CTX_MARK_NON_WATCHED":"Маркирай като негледано","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Получавай нови известия","CTX_REMOVE_CACHE":"Премахни от кеш","CTX_REMOVE_CACHE_EP":"Премахни епизод от кеш","CTX_OPEN_CONTAINING":"Отвори папка","CTX_REMOVE":"Премахни от библиотеката","CTX_AVAILABLE_OFFLINE":"Достъпно офлайн","CTX_PAUSED":"Пауза","CTX_ALWAYS_ON_TOP":"Винаги отгоре","CTX_FULLSCREEN":"Цял екран","CTX_WRONG_SUBS":"Грешни субтитри?","CTX_REPORT_ISSUES":"Докладвай проблем","CTX_COPY":"Копирай","CTX_PASTE":"Постави","CTX_CLEAR":"Изчисти","CTX_CLEAR_RECENT_SEARCHES":"Изчисти последни търсения","HELLO_THERE":"Здравейте","HOPE_YOU_ENJOY":"Надяваме се, че харесвате Stremio и вече ви е едно от любимите приложения!","WHO_ARE_WE":"Кои сме ние? Ние сме двама и работихме усилено всеки ден в последните 3 години, за да подобряваме този продукт.","SUPPORT_US":"Ако продуктът ни ви е полезен и ви прави щастливи, подкрепете ни!","SPREAD_THE_WORD":"Споделете с приятелите си, разгласете Stremio","MORE_PEOPLE":"Колкото повече хора ползват Stremio, толкова по-добро ще става!","SEND_A_LINK":"Или изпратете линк към уебсайта","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"Моите Addons","ADDON_COMMUNITY":"Неофициални Addons","ADDON_OFFICIAL":"Официални Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Търси addons","ADDON_INSTALL":"Инсталирай","ADDON_CONFIGURE":"Конфигурирай","ADDON_UNINSTALL":"Деинсталирай","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Инсталирано","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon страница","ADDON_TOP_CONTENT":"Най-доброто от този Addon","ADDON_PROVIDES":"предоставя","ADDON_WATCH":"Гледай #{types} сега!","ADDON_WATCH_FREE":"Гледай #{types} БЕЗПЛАТНО сега!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"Повече #{types} в Discover","ADDON_PROVIDES_STREAMS":"Гледай #{types}","ADDON_PROVIDES_STREAMS_FREE":"Гледай #{types} БЕЗПЛАТНО","ADDON_PROVIDES_SUBTITLES":"Субтитри за #{types}","ADDON_CANTDETECT":"Не успяхме да засечем работещо Stremio, затова не можем да засечем кои addons са ви инсталирани.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Продължи да гледаш","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},8569:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Pel·lícula","TYPE_series":"Sèries","TYPE_tv":"Canal de TV","TYPE_channel":"Canal","TYPE_other":"Altres","TYPE_movie_PL":"Pel·lícules","TYPE_series_PL":"Sèries","TYPE_tv_PL":"Canals de TV","TYPE_channel_PL":"Canals","TYPE_other_PL":"Altres","TYPE_ALL":"All","VIDEO":"Vídeo","BACK":"Enrere","MORE":"Més","DONE":"Fet","COPY":"Copia","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Mode d\'emissió","CASTING_MODE_HLSV2":"Per defecte","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Sense transcodificació","Discover":"Descobrir","Board":"Panell","Library":"Biblioteca","My Library":"La meva Biblioteca","Calendar":"Calendari","NOTIFICATION_ONLINE":"Ara esteu en línia","NOTIFICATION_OFFLINE":"Ara esteu fora de línia","INTERNET_CONNECTION":"Connexió de xarxa","STORAGE_FULL_TITLE":"Advertència: Emmagatzematge ple!","STORAGE_FULL_TEXT":"Stremio no podrà desar la configuració, les preferències ni la informació d\'inici de sessió. Penseu a reiniciar o tornar a instal·lar Stremio.","SEARCH":"cerca","SEARCH_NO_RESULTS":"No s\'han trobat resultats","SEARCH_EXPLANATION_CONTENT":"Cerca pel·lícules, sèries, canals de YouTube i TV","SEARCH_EXPLANATION_PEOPLE":"Cerca actors, directors i escriptors","SEARCH_PASTE_LINKS":"Enganxa enllaços HTTP i Magnètics","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Afegir a la Biblioteca","REMOVE_FROM_LIB":"Elimina de la Biblioteca","ADDED_TO_LIB":"Afegit a la Biblioteca","REMOVED_FROM_LIB":"Eliminat de la Biblioteca","TRAILER":"Tràiler","WATCH_TRAILER":"Mirar el tràiler","WATCH_NOW":"Mirar ara","SHOW":"Mirar","SHOW_MOVIE":"Mirar Pel·lícula","WATCH_RANDOM":"Mirar aleatòriament","IMDB_RATING":"Qualificació IMDb","YEAR":"Any","DIRECTOR":"Director","WRITER":"Escriptor","LEAD_ACTORS":"Actors principals","CAST":"Elenc","CREW":"Equip tècnic","SHOW_MORE_CAST":"Mostra més »","AIRED":"Emès","SEASONS":"Temporades","GENRE":"Gènere","CATALOG":"Catàleg","SUMMARY":"Resum","SHOW_MORE":"Mostra Més","SIMILAR":"Similar","UPCOMING":"Properament","ENDED":"Finalitzat","DURATION":"Duració","FEATURED":"Destacat","METADATA":"Metadades","CATEGORY":"categoria","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"cercar vídeos","SEARCH_PLACEHOLDER":"cercar o enganxar URL","ADDON":"complement","ADDONS":"Complements","OFFICIAL":"oficial","ADDONS_OFFICIAL":"Complements Stremio oficials","ADDONS_POPULAR":"Popular a la vostra regió","ADDON_FREE":"gratuït","ADDON_PEERED":"compartit","ADDON_SUBSCRIPTION":"subscripció","ADDON_STREAM_GEORESTRICTED":"no disponible a la vostra regió","ADDON_STREAM_OFFLINECACHE":"Memòria cau fora de línia","ADDON_STREAM_LOCALFILE":"Fitxer local","SHARE_ADDON":"Comparteix el complement","AVAILABLE_STREAMS":"Streams disponibles","NO_STREAM":"No s\'ha trobat cap stream","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Per obtenir més streams, instal·leu més complements","STREAM_NOT_SUPPORTED":"El stream seleccionat no és compatible amb aquesta plataforma.","ADDON_CATALOGUE":"Mostra tots els complements »","ADDON_CATALOGUE_MORE":"Instal·la complements","REPO_ADDED":"Repositori afegit","ADDON_REPO_EXIST_ERR":"Aquesta col·lecció de complements ja existeix","ADDON_REPO_ERR":"S\'ha produït un error en afegir la col·lecció","ADDON_ADD_ERR":"S\'ha produït un error en afegir un complement","ERR_ADDON_PROTECTED":"No es pot desinstal·lar el complement, està protegit","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Hi ha hagut un problema - l\'autenticació pot haver fallat","ERR_NOT_COLLECTION_URL":"No és un URL de col·lecció","ERR_NOT_ADDON_URL":"No és un URL de complement vàlid","ERR_DETECTFROMURL":"No es pot trobar cap complement/col·lecció en aquest URL","ADDON_DUPLICATE_WARNING":"Advertència: complement duplicat","ADDON_COLLECTION_SET_FAILED":"Ha fallat la sincronització de complements instal·lats al vostre compte","SETTINGS_DATA_EXPORT":"Exporta dades d\'usuari","ADDON_PULL_FAILED":"Ha fallat la sincronització dels complements instal·lats del vostre compte","REFRESH_ON_CLICK":"Prem per reintentar","STILL_IN_THEATER":"Pel·lícula encara als cinemes","WATCH_IN_CINEMA":"Mireu-lo al vostre cinema local","IN_THEATER":"En el cinema","GET_TICKETS":"Obtenir entrades","UPCOMING_EPISODE":"Pròxim episodi","UPCOMING_EPISODE_MESSAGE":"Aquest episodi s’emetrà al","MISSING_DATE_EPISODE":"Falta la data de l\'episodi","MISSING_DATE_EPISODE_MESSAGE":"És possible que aquest episodi encara no s’hagi emès","CHANNEL_NOT_SCRAPED":"Aquest canal encara no s\'ha habilitat.
    Si us plau, torneu d\'aquí a uns minuts.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Afegiu-lo a la vostra Biblioteca per rebre una notificació un cop estigui disponible.","GET_NOTIFIED_WHEN_AVAILABLE":"Rebràs una notificació un cop estigui disponible.","WARNING_STREAMING_SERVER":"Advertència: no s\'ha trobat el servidor d\'streaming local. L\'streaming des de fitxers locals, YouTube i BitTorrent no estarà disponible.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Advertència: és possible que aquest vídeo no sigui compatible amb el vostre maquinari. Tingueu en compte que la reproducció pot ser lenta.","PLAYER_ERROR":"Vaja, error del reproductor","PLAYER_ERROR_LOOKSLIKE":"Sembla que","PLAYER_ORIENTATION":"Orientació del reproductor","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Bloquejat","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"L\'orientació del reproductor bloquejada en horitzontal","PLAYER_ORIENTATION_SENSOR":"Orientació del reproductor automàtica (sensor)","PLAYER_PLAYBACK_SPEED":"Velocitat de reproducció","PLAYER_PLAYBACK_ERROR":"Error de reproducció, torneu-ho a provar","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Error desconegut","PLAYER_PLAYBACK_ERROR_DEFAULT":"Ho sentim, aquest vídeo no pot ser reproduït per {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"En directe","PLAYER_NEXT_VIDEO_TITLE":"A continuació","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Descartar","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Veure ara","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"transmissió des de","CASTING_TO":"S\'està emetent a","NETWORK_STATUS":"Estat de la xarxa","STREAM_SPEED":"Velocitat del stream:","STREAM_BUFFERED":"Emmagatzemat:","PEERS_INFO":"Informació dels pars","PEERS_ACTIVE":"Actiu:","PEERS_CONNECTED":"Connectat:","PEERS_WAITING":"Esperant:","TRANSCODING_WARNING":"Advertència: transcodificant vídeo.","STREAM_LOADING":"carregant ...","PLAYING_LOCAL":"reproduint des del fitxer local","PLAYING_CACHE":"reproduint des de la memòria cau","WRONG_SUBS":"Subtítols incorrectes?","ERR_SUBS_LOADING_TITLE":"Error en carregar els subtítols","ERR_SUBS_LOADING":"Ha fallat la càrrega de subtítols: això podria ser un problema amb el complement que utilitzeu o amb la vostra connexió de xarxa","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Els següents complements de subtítols han fallat","ERR_CASTING_UPDATE_TITLE":"No s\'ha pogut actualitzar la informació del dispositiu d\'emissió: el servidor d\'streaming podria estar fora de línia","CHOOSE_DEVICE":"Trieu un dispositiu on mirar-lo","NO_CAST_DEVICES":"No hi ha dispositius d\'emissió disponibles.","NO_SETTINGS":"No hi ha cap configuració disponible.","PHONE_TABLET":"Telèfon / Tauleta","SUBTITLES":"Subtítols","SUBTITLES_CHANGE":"Canvia els subtítols per a ","SUBTITLES_CHANGE_NONE":"No hi ha cap altre subtítol en aquest idioma, ho sento.","SUBTITLES_CHANGE_ACIVE":"Actualment els subtítols #{{subtitlesDialog.activeIdx + 1}} estan activats. Prem \\"Continua\\" per activar els subtítols #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativament,","SUBTITLES_ADJUST_DELAY":"Ajustar el retard de subtítols:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"O usa les tecles G / H durant la reproducció per ajustar.","SUBTITLES_ADJUST_DELAY_TIP":"Nota: podeu utilitzar les tecles G / H durant la reproducció per ajustar.","SUBTITLES_DELAY":"Retard de subtítols:","SUBTITLES_LOADING":"Carregant els subtítols...","SUBTITLES_UNAVAILABLE":"No hi ha subtítols externs disponibles","SUBTITLES_DISABLED":"Desactivat","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Àudio","DEFAULT_LANGUAGE":"Idioma per Defecte","DEFAULT_SECONDARY_LANGUAGE":"Idioma Secundari per Defecte","SEASON":"Temporada","EPISODE":"Episodi","SPECIAL":"Especial","SORT":"ordenar","SORT_BY":"Ordenar per","FILTER":"filtrar","SORT_TRENDING":"tendències","SORT_RECENT":"recent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"qualificació","SORT_WATCHED":"vist","SORT_YEAR":"any","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Nou per a tu","New Episodes":"Nous episodis","New Videos":"Nous vídeos","Recommendations":"Recomanacions","LIBRARY_RESUME":"Reprendre","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Detalls","LIBRARY_RESUME_DISMISS":"Descartar","LIBRARY_CLEAR_PROGRESS":"Esborrar progrés","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Destacat","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Guanyadors d\'Oscar","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"Aquest complement ha retornat un contingut buit.","DISCOVER_ADULT_WARNING":"El contingut només és visible per a adults. Teniu més de 18 anys?","DISCOVER_NOADDON_WARNING":"Avís: no hi ha cap complement Stremio actiu per a aquest tipus. Mostrant elements desats, res d\'aquí s\'actualitzarà.","DISCOVER_LOAD_ERR":"El contingut no s\'ha carregat, s\'ha produït un error.","DISCOVER_ADDON_UNINSTALLED":"Aquest contingut ja no està disponible, és possible que hàgiu desinstal·lat el complement.","UNINSTALL_THIS_ADDON":"Desinstal·la aquest complement","ERR_ADDON_NOT_INSTALLED":"Aquest complement no està instal·lat. Instal·lar-lo ara?","DETAIL_RECEIVE_NOTIF_SERIES":"Rep notificacions d\'episodis nous","DETAIL_RECEIVE_NOTIF_VIDEOS":"Rep notificacions de vídeos nous","SIDEBAR_SHOW_STREAMS":"Mostra streams","RELAUNCH":"Rellançar ara!","UPGRADE":"Hi ha disponible una nova versió. Actualitzeu a la darrera versió d\'Stremio","RELOAD_UI":"Recarregar la interfície d\'usuari","MANUAL_UPDATE_TITLE":"Actualitza la teva versió d\'Stremio","MANUAL_UPDATE_LINE1":"Esteu executant una versió obsoleta d\'Stremio, que és molt poc recomanable.","MANUAL_UPDATE_LINE2":"Actualitzeu el més aviat possible.","BUTTON_UPDATE_LATTER":"Ara no","BUTTON_UPDATE_NOW":"Actualitza","ANONYMOUS_USER":"Usuari anònim","DONT_HAVE_ACC":"No teniu cap compte?","HAVE_ACC":"Ja tens un compte?","PASSWORD":"Contrasenya","PASSWORD_CONFIRM":"Confirma la contrasenya","EMAIL":"Correu electrònic","FB_LOGIN":"Continueu amb Facebook","FB_NOTHINGSHARED":"No es comparteix res sense el vostre permís","FB_NOPOST":"No publicarem res en nom vostre","OR":"o","I_ACCEPT":"Accepto els","I_ACCEPT_BY_CLICKING":"En fer clic al botó superior, declaro que accepto els ","TOS":"Termes i condicions","MUST_ACCEPT_TERMS":"Heu d\'acceptar els termes","PASSWORDS_NOMATCH":"Les contrasenyes no coincideixen","SIGN_UP":"Registra\'t","SIGN_UP_EMAIL":"Registra\'t amb el correu electrònic","CLICK_TO_SIGN_UP":"Feu clic aquí per registrar-vos.","LOG_IN":"Iniciar Sessió","LOG_OUT":"Tancar sessió","EXIT_FULLSCREEN":"Surt del mode de pantalla completa","ENTER_FULLSCREEN":"Introduïu el mode de pantalla completa","PLAY_URL_MAGNET_LINK":"Reprodueix URL/Enllaç magnètic","HELP_FEEDBACK":"Ajuda i comentaris","TERMS_OF_SERVICE":"Termes del servei","PRIVACY_POLICY":"Política de Privacitat","ABOUT_STREMIO":"Quant a Stremio","USER_PANEL":"Tauler d\'usuaris","LOGIN_LABEL":"Inicia sessió","GUEST_LOGIN":"Inici de sessió de convidat","GUEST_LOGIN_NOTICE":"No es recomana l\'inici de sessió de convidat. Si feu servir un inici de sessió habitual, Stremio pot sincronitzar la Biblioteca i rebre notificacions de sèries o canals preferits. Esteu segur que voleu continuar?","GUEST_LOGIN_NOTICE_2":"No es recomana l\'inici de sessió com a convidat: no tindreu notificacions sincronitzades de la Biblioteca i del fòrum, que són funcions fonamentals d\'Stremio. Esteu segur que voleu continuar?","CLICK_HERE":"clica aquí","WRONG_PASSWORD":"Correu electrònic o contrasenya incorrectes. En cas que hagueu oblidat la vostra contrasenya, ","SET_A_PASS":"definiu una contrasenya","RESET_PASSWORD":"Restablir la contrasenya","FORGOT_PASSWORD":"Has oblidat la contrasenya?","EMAIL_USED_WITH_FB":"Aquest correu electrònic s\'ha utilitzat amb un inici de sessió de Facebook.","INVALID_EMAIL":"si us plau, introdueixi una adreça de correu electrònic vàlida","INVALID_PASSWORD":"Introduïu una contrasenya vàlida","CONN_ERR":"Error de connexió - torneu-ho a provar més tard.\\n\\nSi això persisteix, desactiveu els tallafocs/antivirus (especialment Bitdefender).","IMPORT_FROM_GUEST":"Importeu la Biblioteca des del vostre compte de convidat","RECEIVE_UPDATES_EMAIL":"Rebeu actualitzacions al vostre correu electrònic des d\'Stremio","LOGIN_FAILED":"Error a l\'iniciar sessió.","SIGNUP_FAILED":"Ha fallat el registre.","SEARCH_FAILED":"La cerca ha fallat","EMAIL_USED":"Aquest correu electrònic ja està en ús.","WAITING_FB_LOGIN":"Iniciant la sessió amb Facebook...","EXTERNAL_PLAYER_TITLE":"Reprodueix en un reproductor extern","EXTERNAL_REMEMBER_PLAYER":"Voleu recordar la vostra elecció?","EXTERNAL_ALWAYS_PLAY":"Sí","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Millor encaix","FIT_SCREEN":"Encaixar la Pantalla","FILL":"Omplir","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Explica\'ns què t\'agrada","INTRO_TASTE_LONG":"Explica\'ns què voleu veure","INTRO_TASTE_PICK":"Selecciona {{interestsRemaining}} interessos","INTRO_TASTE_PICK_MORE":"Selecciona {{interestsRemaining}} interessos més","INTRO_TASTE_HELP_US":"Ajudeu-nos a aprendre més informació sobre vosaltres.","INTRO_TASTE_CHOOSE_THESE":"Trieu alguns d\'aquests:","INTRO_TASTE_CHOOSE_MIN":"Trieu com a mínim 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"Heu de triar almenys 3 categories.","INTRO_TASTE_LIFESTYLE":"Estil de vida","INTRO_TASTE_SPORTS":"Esports","INTRO_TASTE_FOOD_HEALTH":"Alimentació i Salut","INTRO_TASTE_BEAUTY_FASHION":"Bellesa i Moda","INTRO_TASTE_NEWS":"Notícies","INTRO_TASTE_GAMING":"Jocs","INTRO_TASTE_SCIENCE_EDU":"Ciència i Educació","INTRO_TASTE_MUSIC":"Música","INTRO_TASTE_TRAVEL":"Viatges","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comèdia","INTRO_TASTE_DIY":"Fes-ho tu mateix (DIY)","INTRO_TASTE_TECH":"Tecnologia","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Aquesta plataforma no admet el complement seleccionat.","ADDON_DISCLAIMER":"L\'ús de complements de tercers sempre estarà subjecte a la vostra responsabilitat i a la legislació vigent de la jurisdicció on esteu ubicat.","ADDON_ACTIVATE":"Activar aquest complement?","ADDON_REPO_ADD":"URL del repositori de complements","ADDON_ADD":"Afegir","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Que hi ha de nou","BUTTON_CONTINUE":"Continua","BUTTON_ACTIVATE":"Activa","BUTTON_ACTIVATED":"Activat","BUTTON_CANCEL":"Cancel·lar","BUTTON_SUBMIT":"Envia","BUTTON_DISMISS_ALL":"Descartar-ho tot","BUTTON_VIEW_ALL":"veure-ho tot","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"La vostra Biblioteca sembla buida. Esbrineu lo útil que és :)","HOW_START":"Així és com podeu començar:","LIB_EMPTY_CAL":"El vostre calendari mostra sèries a la Biblioteca.","HOW_START_CAL":"Així és com podeu afegir sèries:","LIB_EMPTY_BOARD":"El Tauler mostra notificacions i recomanacions relacionades amb la vostra Biblioteca.","HOW_START_BOARD_WAIT":"Afegiu unes quantes sèries o canals a la vostra Biblioteca i doneu-nos uns minuts per processar :)","HOW_START_BOARD":"Així és com podeu afegir-hi sèries i pel·lícules:","IMPORT_FB":"Importeu les coses que us agradin de Facebook","IMPORT_TRAKT":"Importeu la vostra biblioteca multimèdia de Trakt","IMPORT_DISCOVER":"Troba coses interessants de Descobrir","IMPORT_DISK":"Importeu pel·lícules o sèries que tingueu al disc local","PLEASE_CREATE_ACC":"Creeu un compte per habilitar la sincronització de la Biblioteca i el Tauler.","IMPORT_DISCOVER_SIGNUP":"Registreu-vos i trobeu coses interessants a Descobrir","IMPORT_DISK_SIGNUP":"Inscriviu-vos i importeu pel·lícules o espectacles que tingueu al vostre disc local","LIB_EMPTY_CLOUD":"Biblioteca al núvol","LIB_EMPTY_CLOUD_DESC":"Biblioteca personal al núvol sincronitzada a tots els dispositius","LIB_EMPTY_EARLY":"Accés aviat","LIB_EMPTY_EARLY_DESC":"Rep notificacions d\'episodis nous","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Obteniu recomanacions personalitzades","LIB_EMPTY_CALENDAR_DESC":"Programa el teu calendari de visualització personal","LIB_EMPTY_ALL":"Registreu-vos per obtenir tot això:","LIB_EMPTY_BEST":"Registreu-vos per obtenir el millor d\'Stremio","LIB_EMPTY_OTHER":"Registreu-vos per activar el calendari i altres funcions interessants","CALENDAR_ADDED":"El calendari d\'Stremio s\'ha afegit al calendari d\'escriptori predeterminat.","CALENDAR_ADDED_MSG":"Si això no funciona, afegiu aquest URL manualment a la vostra aplicació de calendari","TRAKT_EXPIRED":"L\'autenticació de Trakt ha caducat, aneu a Configuració i torneu a autenticar-la","TRAKT_REQUIRES_LOGIN":"Error de Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Cal iniciar sessió","SETTINGS_LABEL":"Configuració","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Reproductor","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Dreceres","SETTINGS_SHORTCUT_RELOAD_APP":"Recarregar l\'aplicació","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Obrir Configuració","SETTINGS_SHORTCUT_SWITCH_TABS":"Canviar Pestanya","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Mou Entre Pestanyes Cap Endavant","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Mou Entre Pestanyes Cap Enrere","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Sortir / Tornar enrere","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Commuta la Pantalla Completa","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Mostra els Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Reproduir / Pausa","SETTINGS_SHORTCUT_VOLUME_UP":"Pujar volum","SETTINGS_SHORTCUT_VOLUME_DOWN":"Baixar volum","SETTINGS_SHORTCUT_SEEK_NEXT":"Moure Endavant","SETTINGS_SHORTCUT_SEEK_PREV":"Moure Enrere","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Reproduir Següent","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Augmentar Mida Subtítols","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Disminuir Mida Subtítols","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Augmentar Retard Subtítols","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Disminuir Retard Subtítols","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Commutar Barra Lateral","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Iniciar al arrancar l\'equip","SETTINGS_VLC_DEFAULT":"Reproduir amb VLC","SETTINGS_UI_LANGUAGE":"Idioma de la interfície","SETTINGS_FULLSCREEN_EXIT":"Tecla per sortir de la pantalla completa","SETTINGS_GAMEPAD":"Activa la compatibilitat amb el gamepad","SETTINGS_CLOSE_WINDOW":"Tanca l\'aplicació quan la finestra estigui tancada","SETTINGS_SUBTITLES_LANGUAGE":"Idioma dels subtítols predeterminat","SETTINGS_SUBTITLES_SIZE":"Mida dels subtítols predeterminada","SETTINGS_SUBTITLES_BACKGROUND":"Fons dels subtítols","SETTINGS_SUBTITLES_COLOR":"Color dels subtítols","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Color de l\'esquema dels subtítols","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Color de fons dels subtítols","SETTINGS_SEEK_KEY":"Les tecles de fletxa et mouen en el temps","SETTINGS_SEEK_KEY_SHIFT":"Les tecles de fletxa et mouen en el temps quan es manté premuda la tecla Shift","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Reprodueix automàticament el proper episodi","SETTINGS_NEXT_VIDEO":"Mostra la notificació per iniciar el proper episodi","SETTINGS_NEXT_VIDEO_TRIGGER":"Mostra la notificació del següent episodi per a:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Canvieu la mida de la finestra abans de reproduir","SETTINGS_OVERRIDE_SERVER":"Substitueix l\'URL del servidor de transmissió (avançat)","SETTINGS_SERVER_URL":"URL del servidor de transmissió: ","SETTINGS_SERVER_AVAILABLE":"El servidor de transmissió està disponible.","SETTINGS_SERVER_UNAVAILABLE":"El servidor de transmissió no està disponible.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Endpoint de transmissió HTTPS: ","SETTINGS_USE_BETA":"Utilitzeu sempre l\'última versió Beta","SETTINGS_IMPORT_FB":"Importar de Facebook","SETTINGS_IMPORT_DISK":"Importar del disc local","SETTINGS_IMPORT_TRAKT":"Importar de Trakt","SETTINGS_PAUSE_MINIMIZED":"Pausar la reproducció quan es minimitzi","SETTINGS_HWDEC":"Descodificació accelerada per maquinari","SETTINGS_BACKGROUND":"Reproducció en segon pla","SETTINGS_SUBSCRIBE_CALENDAR":"Subscriu-te al calendari","SETTINGS_REQ_EXPORT":"Sol·licitar l\'exportació de dades","SETTINGS_ACC_DELETE":"Sol·licitar eliminació del compte","SETTINGS_CHANGE_PASSWORD":"Canvia la contrasenya","SETTINGS_TOS":"Termes del servei","SETTINGS_SUPPORT":"Contactar suport","SETTING_LANGUAGE":"Llenguatge","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Tanca la sessió de Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Escaneja el codi QR per obrir el comandament a distància","SETTINGS_DESKTOP_NOTIFICATIONS":"Notificacions d\'escriptori","SETTINGS_DATA_SAVER":"Estalviador de dades","SETTINGS_LANGUAGE_INTERFACE":"interfície","SETTINGS_LANGUAGE_SUBS":"subtítols per defecte","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Seleccionar Automàticament la Pista d\'Àudio","SETTINGS_DEFAULT_AUDIO_TRACK":"Pista d\'Àudio Predeterminada","SETTINGS_ACCOUNT":"compte","SETTINGS_VERSION":"versió","SETTINGS_MPV_WINDOW":"Inicia el reproductor en una finestra separada (avançat)","SETTINGS_PLAY_IN_EXTERNAL":"Inicieu sempre el vídeo en un reproductor extern","SETTINGS_STORAGE_BUTTON":"Esborra l\'emmagatzematge local","SETTINGS_STORAGE_MODAL_TITLE":"Estàs segur ?","SETTINGS_STORAGE_MODAL_MESSAGE":"Això esborrarà l\'emmagatzematge local i tancarà la sessió.","SETTINGS_HWDEC_PICKER":"Trieu la configuració de descodificació accelerada per maquinari","SETTINGS_HW_AUTOMATIC":"Automàtic","SETTINGS_HW_DISABLED":"Desactivat","SETTINGS_HW_ACCELERATED":"Acceleració de descodificació","SETTINGS_HW_FULL":"Acceleració total","SETTINGS_HW_LEGACY":"Heretat","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Àudio","SUBSPICKER_SUBTITLES":"Subtítols dels complements","SUBSPICKER_BLACK_BACKGROUND":"Utilitzar negre com color de fons","SUBSPICKER_VERTICAL_OFFSET":"Desplaçament vertical","SUBSPICKER_SIZE":"Mida","SUBSPICKER_DELAY":"Retard","SUBSPICKER_EMBEDDED_SUBS":"Subtítols incrustats","MOBILE_PRIVACY_POLICY":"Política de privacitat","MOBILE_CRASH_REPORTING":"Informe de fallades","MOBILE_ZOOM_TO_FILL":"Ampliar per omplir la pantalla","MOBILE_PASSTHROUGH":"Sortida d\'àudio digital (passthrough)","MOBILE_RUN_LOW_BATTERY":"Executar amb bateria baixa","MOBILE_RUN_FOREGROUND":"Executar com a servei de primer pla","MOBILE_PERFORMANCE":"RENDIMENT I ESTABILITAT","MOBILE_SERVER_ONLINE":"En línia","MOBILE_SERVER_OFFLINE":"Fora de línia","MOBILE_QR_EXPIRES":"El codi QR caduca en ","MOBILE_LOG_INTO":"Iniciar sessió al compte Stremio ","MOBILE_SCAN_QR":"Escaneja el codi QR de dalt o ves a ","MOBILE_LINK_ACCOUNT":"Enllaçar el compte","MOBILE_SPEEDPICKER_CANCEL":"Cancel·lar","MOBILE_SPEEDPICKER_LABEL":"Seleccionar Velocitat de Reproducció","MOBILE_EMPTY_LIBRARY":"La teva biblioteca està buida","MOBILE_NO_ADDON_ACTIVE":"No hi ha cap complement Stremio actiu per a aquest tipus.","MOBILE_ORGANIZER_WARNING":"L\'aplicació Stremio Organizer ofereix una funcionalitat limitada. Per obtenir una llista de reproduccions i l\'experiència completa d\'Stremio, feu servir Stremio a l\'escriptori.","MOBILE_ADDON_LOADING":"encara està carregant","MOBILE_ADDONS_LOADING":"els complements encara estan carregant","MOBILE_ADDON":"Complement","MOBILE_CONFIGURE_ADDON":"Configura el teu complement","MOBILE_CONFIGURE_ADDON_LABEL":"Configurar Complement","MOBILE_ORGANIZER_ADDONS_WARNING":"L\'aplicació Stremio Organizer ofereix una selecció limitada de complements. Per gaudir de l\'experiència Stremio completa, utilitzeu Stremio a l\'escriptori.","MOBILE_DISCONNECT":"Desconnectar","MOBILE_LOOKING_FOR_DEVICES":"Buscant dispositius...","MOBILE_CAST_TO":"Emet a","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"Encès","NAVIGATION_OFF":"Apagat","MARKETING_AGREE":"Accepto rebre comunicacions de màrqueting d\'Stremio","QUIT":"Sortir","CONNECTED":"Connectat","AUTHENTICATE":"Autenticar","CACHING":"Memòria cau","SETTINGS_CACHING_DRIVE":"Disc de memòria cau","ENABLE_LOCAL_FILES_ADDON":"Activa el complement de fitxers locals (requereix un reinici)","LOCAL_ADDON_NOT_ENABLED":"El complement local no està habilitat. Feu clic aquí per anar a la configuració i activar-lo","ENABLE_REMOTE_HTTPS_CONN":"Activeu les connexions HTTPS remotes","TORRENT_PROFILE":"Perfil del torrent","DATA_CACHING":"Memòria cau emmagatzemada","MAGNET_PARSING":"Analitzant un enllaç magnètic","January":"Gener","February":"Febrer","March":"Març","April":"Abril","May":"Maig","June":"Juny","July":"Juliol","August":"Agost","September":"Setembre","October":"Octubre","November":"Novembre","December":"Desembre","Monday":"Dilluns","Tuesday":"Dimarts","Wednesday":"Dimecres","Thursday":"Dijous","Friday":"Divendres","Saturday":"Dissabte","Sunday":"Diumenge","Action":"Acció","Comedy":"Comèdia","War":"Bèl·lic","Family":"Família","Animation":"Animació","Adventure":"Aventura","Fantasy":"Fantasia","Crime":"Crim","Mystery":"Misteri","Romance":"Romanç","Drama":"Drama","Horror":"Terror","Thriller":"Suspens","Sci-Fi":"Ciència-ficció","Music":"Musical","Biography":"Biogràfic","Documentary":"Documental","Sport":"Esports","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"Notícies","History":"Història","Game-Show":"Concursos","Reality-TV":"Reality shows","Talk-Show":"Entrevistes","Film & Entertainment":"Cinema i entreteniment","Gaming":"Videojocs","From TV":"De la TV","Lifestyle":"Estil de vida","Science & Education":"Ciència i educació","Cooking & Health":"Cuina i salut","Beauty & Fashion":"Bellesa i moda","Sports":"Esports","News & Politics":"Notícies i política","How-to & DIY":"Com fer-ho i DIY","Tech":"Tecnologia","Automotive":"Automoció","Causes & Non-Profits":"Causes i organitzacions sense ànim de lucre","Movies":"Pel·lícules","Uk Live Tv":"TV britànica en directe","Fashion":"Moda","Business News Radio":"Ràdio - Notícies de negocis","Business Tv":"TV negocis","Cars & Auto":"Automòbils","Comedy Radio":"Ràdio - Comèdia","Lifestyle Radio":"Ràdio - Estil de vida","News Tv":"TV notícies","Food And Wine":"Menjar i Vi","Latino Tv":"TV Llatina","Shopping Tv":"TV compres","Religion":"Religió","Kids":"Nens","Body & Soul":"Cos i ànima","Education":"Educació","Indian Tv":"TV índia","Extreme Sports":"Esports extrems","Middle Eastern Tv":"TV de l\'Orient Mitjà","Celebrity Tv":"TV famosos","Science Tv":"TV ciència","Bikini babe":"Bikini babe","Outdoors":"A l\'aire lliure","German Tv":"TV alemanya","French Tv":"Tv francesa","Italian Tv":"TV italiana","Gamer Tv":"TV videojocs","Travel":"Viatges","Asian Tv":"TV asiàtica","Entertainment":"Entreteniment","News Radio":"Ràdio - Notícies","Music Radio":"Ràdio - Música","Language Learning":"Aprenentatge d\'idiomes","Science Radio":"Ràdio - Ciències","Tech Radio":"Ràdio - Tecnologia","Science & Technology Vod":"Ciència i tecnologia sota demanda","new video":"nou vídeo","new episode":"nou episodi","new movie":"nova pel·lícula","recommended":"recomanat","we recommend":"recomanem","offer of the day":"oferta del dia","news":"notícies","music video":"vídeo musical","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Descarta les notificacions","CTX_DISMISS_ALL":"Descarta-ho tot","CTX_SHARE":"Comparteix","CTX_COPY_SHARE_LINK":"Copia l\'enllaç per compartir","CTX_COPY_MAGNET_LINK":"Copia enllaç magnètic","CTX_COPY_STREAM_LINK":"Copia enllaç de l\'stream","CTX_DOWNLOAD_VIDEO":"Descarregar aquest vídeo","CTX_DOWNLOAD_SUBS":"Descarregar els subtítols","CTX_VIEW_ON_YOUTUBE":"Veure a YouTube","CTX_SHOW":"Mostra","CTX_PLAY":"Reproduir","CTX_PLAY_IN":"Reprodueix aquí","CTX_PLAY_ON":"Reprodueix a","CTX_WATCH_ON":"Veure a","CTX_WATCH":"Veure","CTX_WATCHED":"Vist","CTX_WATCH_BEGINNING":"Veure des del principi","CTX_WATCH_MOBILE":"Veure en un dispositiu mòbil","CTX_REWIND":"Rebobinar fins al començament","CTX_MARK_WATCHED":"Marca com a vist","CTX_MARK_NON_WATCHED":"Marca com a no vist","CTX_MARK_UNWATCHED":"Marca com sense mirar","CTX_MARK_REST":"Marca la resta com a vist","CTX_UNMARK_REST":"Marca la resta com a no vist","CTX_RECEIVE_NEW_NOTIF":"Rebre notificacions noves","CTX_REMOVE_CACHE":"Elimina de la memòria cau","CTX_REMOVE_CACHE_EP":"Elimina l\'episodi de la memòria cau","CTX_OPEN_CONTAINING":"Obre la carpeta que conté","CTX_REMOVE":"Elimina de la biblioteca","CTX_AVAILABLE_OFFLINE":"Disponible fora de línia","CTX_PAUSED":"En pausa","CTX_ALWAYS_ON_TOP":"Sempre a la part superior","CTX_FULLSCREEN":"Pantalla completa","CTX_WRONG_SUBS":"Subtítols incorrectes?","CTX_REPORT_ISSUES":"Informar del problema","CTX_COPY":"Copia","CTX_PASTE":"Enganxa","CTX_CLEAR":"Esborra","CTX_CLEAR_RECENT_SEARCHES":"Esborra les cerques recents","HELLO_THERE":"Hola","HOPE_YOU_ENJOY":"Esperem que gaudiu d\'Stremio i ja sigui una de les vostres aplicacions preferides.","WHO_ARE_WE":"Qui som? Som l\'equip que hi ha darrere: dos nois que treballen molt cada dia durant els darrers 3 anys per fer que aquest producte sigui cada vegada millor.","SUPPORT_US":"Si us agrada utilitzar Stremio, si Stremio és valuós per a vosaltres, correu la veu!","SPREAD_THE_WORD":"Comparteix amb els teus amics ara, difon la notícia sobre Stremio","MORE_PEOPLE":"Com més gent utilitzi Stremio, millor serà.","SEND_A_LINK":"O envieu un enllaç al nostre lloc web","TIP_LOCALFILES":"Consell: podeu arrossegar i deixar anar fitxers de vídeo locals a Stremio","ADDON_MY":"Els meus complements","ADDON_COMMUNITY":"Complements de la comunitat","ADDON_OFFICIAL":"Complements oficials","ADDON_REPOS":"Col·leccions de complements","ADDON_SEARCH":"Cerca de complements","ADDON_INSTALL":"Instal·la","ADDON_CONFIGURE":"Configura","ADDON_UNINSTALL":"Desinstal·la","ADDON_UPGRADE":"Actualitza","ADDON_INSTALLED":"Instal·lat","ADDON_INSTALLED_MSG":"Complement instal·lat!","ADDON_UPGRADED_MSG":"Complement actualitzat!","ADDON_UNKNOWN":"Desconegut","ADDON_ERR":"Error d\'instal·lació del complement!","ADDON_DISCONNECTED":"Desconnectat","ADDON_APP_MISSING":"l\'aplicació d\'aquesta font no està instal·lada. Voleu instal·lar-la ara?","ADDON_APP_INSTALL":"Instal·lar ara","ADDON_PAGE":"Pàgina del complement","ADDON_TOP_CONTENT":"El millor d\'aquest complement","ADDON_PROVIDES":"Aquest complement proporciona:","ADDON_WATCH":"Mireu #{types} ara!","ADDON_WATCH_FREE":"Mireu #{types} GRATIS ara!","ADDON_ADDON":"Complement","ADDON_SUPPORTED_TYPES":"Tipus compatibles","ADDON_SUPPORTED_CATALOGS":"Catàlegs compatibles","ADDON_PROVIDES_DISCOVER":"Més #{types} a Descobreix","ADDON_PROVIDES_STREAMS":"Mira #{types}","ADDON_PROVIDES_STREAMS_FREE":"Mireu #{types} GRATIS","ADDON_PROVIDES_SUBTITLES":"Subtítols per #{types}","ADDON_CANTDETECT":"No hem pogut detectar un Stremio en execució, de manera que no hem pogut detectar quins complements heu instal·lat.","ERR_NO_META":"No s\'ha trobat informació sobre això ","ERR_GETTING_META":"Error en recuperar informació sobre això.","ERR_CANT_PARSE_MAGNET":"No es pot analitzar l\'enllaç magnètic","ERR_NO_MAGNET_INFOHASH":"No hi ha cap hash d\'informació magnet vàlida","ERR_NO_FILE_PATH":"No es pot enviar la sol·licitud sense una ruta al fitxer","ERR_NO_TORRENT":"No s\'ha retornat cap torrent","ERR_NO_SUPPORTERD_FILES":"No s\'han trobat fitxers compatibles","ERR_OPENING_FILES":"No s\'han pogut obrir els fitxers externs","ERR_INVALID_LINK":"Enllaç invàlid","ERR_REGISTERED_ONLY":"Aquesta opció només està disponible per als usuaris registrats.","ERR_CLIPBOARD":"No es pot reproduir des del porta-retalls","ERR_CLIPBOARD_READ":"No es pot llegir el porta-retalls d\'aquesta plataforma","ERR_CLIPBOARD_GENERIC":"No s\'ha trobat cap URL reproduïble al porta-retalls. Copieu un URL (per exemple, un enllaç magnètic) a un vídeo.","BOARD_CONTINUE_WATCHING":"Continuar mirant","BOARD_EXPLANATION_RECOMMENDATIONS":"Pel·lícules seleccionades especialment per a vosaltres.
    Aquesta pel·lícula és una recomanació d\'exemple.","BOARD_EXPLANATION_EPISODES":"Els nous episodis de les vostres Sèries preferides arriben aquí.
    Afegiu sèries que seguiu a la Biblioteca.","BOARD_EXPLANATION_VIDEOS":"Els nous episodis dels vostres Canals preferits arriben aquí.
    Afegiu a la Biblioteca els canals de YouTube que seguiu.","WEBSITE_SLOGAN_WATCH":"Veure instantàniament","WEBSITE_SLOGAN_ALL":"Tot el contingut de vídeo que gaudiu d\'un sol lloc","WEBSITE_SLOGAN_NEW":"Tot el que podeu veure","WEBSITE_SLOGAN_NEW_NEW":"Llibertat d\'emissió","WEBSITE_WATCH_FROM":"Veure des de","WEBSITE_DOWNLOAD":"Baixa-ho ara","WEBSITE_DOWNLOAD_FOR":"Baixeu-lo ara per","WEBSITE_IS_DESKTOP":"Stremio és una aplicació d\'escriptori, obriu aquesta pàgina al vostre PC i descarregueu-la","WEBSITE_DESKTOP_DEMO_VID":"Demostració d\'escriptori","WEBSITE_PAGE_HOME":"Inici","WEBSITE_PAGE_FEATURES":"Característiques","WEBSITE_PAGE_ADDONS":"Complements","WEBSITE_PAGE_TECH":"Tecnologia","WEBSITE_PAGE_CREATE_ADDON":"Crea un Complement","WEBSITE_PAGE_CONTACTS":"Contactes","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Pel·lícules","WEBSITE_TYPE_series_PL":"Sèries","WEBSITE_TYPE_tv":"TV en directe","WEBSITE_TYPE_channel":"Canals","WEBSITE_STREMIO_WHAT_IS":"Stremio és una aplicació que us ajuda a organitzar i veure a l\'instant els vostres vídeos, pel·lícules, sèries i canals de televisió preferits.","WEBSITE_FEATURES_WATCH":"Veure instantàniament en HD","WEBSITE_FEATURES_WATCH_DETAIL":"Feu clic i reproduïu els vostres pel·lícules, programes de televisió, vídeos i canals de TV preferits.","WEBSITE_FEATURES_SUBS":"Subtítols automàtics","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio selecciona automàticament els subtítols sincronitzats per al vostre idioma.","WEBSITE_FEATURES_SUBS_LABEL":"Tu mous, mestre.","WEBSITE_FEATURES_CAST":"Reprodueix a la TV i dispositius mòbils","WEBSITE_FEATURES_CAST_DETAIL":"Emet a AppleTV, Chromecast, Smart TV (DLNA/UPnP) i dispositius mòbils.","WEBSITE_LIB":"Gaudeix de la teva biblioteca personal sincronitzada en tots els teus dispositius","WEBSITE_LIB_COLLECT":"Recopila informació d\'Stremio","WEBSITE_LIB_IMPORT":"Importa de Facebook","WEBSITE_LIB_LOCAL":"Afegeix des del vostre disc local","WEBSITE_BOARD":"El tauler - El lloc principal per a Notificacions i Recomanacions","WEBSITE_BOARD_RECOMMEND":"Programa de televisió recomanat","WEBSITE_BOARD_TRENDING":"Tendències de pel·lícules","WEBSITE_BOARD_NEW":"Nou vídeo","WEBSITE_BOARD_EPISODE":"Nou episodi","WEBSITE_BOARD_1":"Busqueu alguna cosa interessant per veure? Obteniu recomanacions segons el vostre gust!","WEBSITE_BOARD_2":"Sigues notificat quan surti un nou episodi del vostre programa de televisió o canal de YouTube preferit.","WEBSITE_BOARD_YOUTUBE":"Nous vídeos de canals de YouTube","WEBSITE_BOARD_EPISODES":"Nous episodis de sèries que seguiu","WEBSITE_ADDONS":"Complements de contingut","WEBSITE_TECH_DETAIL":"Ens encanta la tecnologia, ens encanta la ciència boja!\\nStremio utilitza les següents tecnologies de codi obert:","WEBSITE_TECH_WCJS":"WebChimera.js permet a Stremio reproduir qualsevol format de vídeo amb un bon rendiment.","WEBSITE_TECH_WCJS_EXTRA":"Som col·laboradors principals del projecte","WEBSITE_TECH_ELECTRON":"Electron proporciona una plataforma innovadora per construir Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Som col·laboradors del projecte","WEBSITE_TECH_LINVODB":"Una tecnologia de base de dades que garanteix que les vostres dades estiguin organitzades i disponibles a qualsevol lloc on us inicieu la sessió.","WEBSITE_TECH_LINVODB_EXTRA":"Tecnologia pròpia","WEBSITE_CREATE_ADDON":"Creeu el vostre complement","WEBSITE_CREATE_ADDON_DETAIL":"Teniu un servei que proporcioni contingut de vídeo? Us ajudarem a beneficiar-vos de les funcions d\'Stremio creant el vostre complement","WEBSITE_CREATE_ADDON_BENEFITS":"Avantatges de crear un complement per a Stremio","WEBSITE_P2P_BEAUTY":"La bellesa de la transmissió d\'igual a igual (P2P)","WEBSITE_P2P_1":"Vídeo HD / 4K fiable i assequible a petició o en directe","WEBSITE_P2P_2":"Plataforma de distribució que proporciona una gran experiència d\'usuari","WEBSITE_P2P_3":"Crearem un complement que compleixi les vostres necessitats exactes","WEBSITE_P2P_CONTACT":"T\'interessa? Et convidem a contactar-nos.","WEBSITE_P2P_CONTACT_EXTRA":"Estarem encantats d\'ajudar-vos a integrar el vostre contingut amb Stremio!","WEBSITE_P2P":"De tant en tant, arriba una tecnologia que canvia el joc. Invertim tones de temps i esforç en la creació del nostre motor de transmissió de vídeo d\'igual a igual (P2P) que proporciona un gran rendiment i versatilitat a adapteu-vos amb qualsevol cas d\'ús.\\nContacteu amb nosaltres per obtenir vídeos P2P habilitats per a DRM a la carta o en directe.","WEBSITE_THOUGHTS":"Pensaments que compartim:","WEBSITE_SPREAD":"Difon la notícia sobre Stremio:","WEBSITE_CONTACT":"Poseu-vos en contacte amb nosaltres, estarem encantats de conèixer-vos!","WEBSITE_OPENSOURCE":"Per als nostres projectes de codi obert, aneu al nostre","WEBSITE_BITCOIN":"Feu una donació de bitcoins:","WEBSITE_FAQ":"Preguntes freqüents","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Preguntes","WEBSITE_TOS":"Condicions d\'ús","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"Quant a","WEBSITE_PAGE_BECOME_PARTNER":"Feu-vos soci","WEBSITE_ALL_YOU_CAN_WATCH":"Llibertat de visualització\\nTot el que desitgeu.","WEBSITE_FREEDOM_TO_STREAM":"Llibertat d\'emissió","WEBSITE_WHAT_IS_STREMIO":"Què és Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio és un centre únic per a l\'agregació de contingut de vídeo. Descobriu, organitzeu i mireu vídeos de tot tipus de fonts en qualsevol dispositiu que tingueu.","WEBSITE_WHAT_IS_STREMIO_P2":"Pel·lícules, programes de televisió, sèries, televisió en directe o canals web com YouTube i Twitch.tv - tot això ho podeu trobar a Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio és un modern centre multimèdia que és una solució única per al vostre entreteniment de vídeo. Descobriu, mireu i organitzeu contingut de vídeo des de complements fàcils d\'instal·lar.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Pel·lícules, programes de televisió, TV en directe o canals web: trobeu tot això a Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Gaudeix en tots els teus dispositius multimèdia","WEBSITE_DEVICES_COLLECT":"Recopila informació d\'Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importa de Facebook","WEBSITE_DEVICES_LOCAL":"Afegeix des del disc local","WEBSITE_JOIN_THE_PARTY_NOW":"Uniu-vos a la festa ara","WEBSITE_DEVICES_ALL":"Fàcil d\'utilitzar en tots els vostres dispositius;","WEBSITE_EXTENDABLE_CATALOG":"Catàleg de vídeo extensible infinitament;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Funcions fantàstiques per organitzar el vostre contingut multimèdia;","WEBSITE_AS_SEEN_ON":"Com es veu a","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Sobre nosaltres","WEBSITE_LINK_TECHNOLOGY":"Tecnologia","WEBSITE_LINK_APPS":"Aplicacions","WEBSITE_LINK_DOWNLOADS":"Descàrregues","WEBSITE_MORE":"Més","WEBSITE_LINK_ADDONS":"Complements","WEBSITE_LINK_ADDON_SDK":"SDK Complements","WEBSITE_LINK_CONTRIBUTE":"Contribuir","WEBSITE_LINK_COMMUNITY":"Comunitat","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... i més","WEBSITE_LINK_HELP":"Centre d\'ajuda","WEBSITE_LINK_CONTACTS":"Consultes empresarials","WEBSITE_LINK_TOS":"Termes i Condicions","WEBSITE_LINK_PRAVACY":"Política de privacitat","WEBSITE_SUBSCRIBE":"Subscriu-te","WEBSITE_NEWSLETTER":"Uniu-vos al nostre butlletí de coses increïbles","WEBSITE_PLACEHOLDER_EMAIL":"El teu correu electrònic","WEBSITE_COMMUNITY":"Comunitat","WEBSITE_LINK_PRAVACY_LEGAL":"Privadesa i legal","WEBSITE_WHY":"Per què ho fem?","WEBSITE_WHY_P1":"A Stremio, treballem cada dia perquè volem resoldre un problema important per a la indústria del vídeo a la carta. Hi ha tants continguts nous publicats cada minut que és pràcticament impossible trobar-hi el camí.","WEBSITE_WHY_P2":"Ajudem la gent a navegar per aquest enorme món d\'entreteniment en vídeo i a descobrir contingut nou per gaudir-ne. Les nostres aplicacions reuneixen pel·lícules, sèries, TV en directe, canals web i molt més. Ens dediquem a facilitar als usuaris la possibilitat de trobar títols i emissores que els encanten.","WEBSITE_WHY_P3":"Podeu utilitzar el nostre servei en qualsevol dispositiu i en qualsevol moment, cosa que converteix Stremio en l\'únic centre d\'entreteniment de vídeo que necessiteu.","WEBSITE_TEAM":"EQUIP","WEBSITE_TEAM_P":"L\'equip d\'Stremio és petit però potent: entre els deu programem en X idiomes i compartim experiència en desenvolupament de programari, disseny UI i UX, màrqueting i publicitat, i empreses i startups.","WEBSITE_FEATURES":"Característiques","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Descobriu contingut nou amb facilitat","WEBSITE_FEATURES_DISCOVER_P":"Descobriu fàcilment noves pel·lícules, programes de televisió, sèries i canals per veure. Navegueu per categoria, gènere, classificació, actualitat, etc. o simplement escriviu un nom per trobar-lo. Stremio fa que trobar contingut de vídeo nou sigui bufar i fer ampolles.","WEBSITE_FEATURES_ALL_CONTENT":"Tot el contingut de vídeo en una sola pantalla","WEBSITE_FEATURES_ALL_CONTENT_P1":"Vegeu quines pel·lícules, sèries o vídeos no heu acabat i continueu veient-les; rebre notificacions de nous episodis i llançaments; i navegueu per les recomanacions que obtindreu en funció dels vostres hàbits de visualització.","WEBSITE_FEATURES_LIBRARY":"Organitzeu la vostra videoteca","WEBSITE_FEATURES_LIBRARY_P1":"Afegiu qualsevol títol a la vostra biblioteca Stremio amb un sol clic i cerqueu el vostre contingut, ordenat per tipus, actualitat o ordre alfabètic.","WEBSITE_FEATURES_CALENDAR":"Feu un seguiment de tot el que mireu","WEBSITE_FEATURES_CALENDAR_P1":"Obteniu una visualització del calendari de totes les pel·lícules i sèries que afegiu a la biblioteca. Exporteu el calendari Stremio i sincronitzeu-lo perquè sempre sàpiga quan s\'ha de produir un episodi nou o una premier.","WEBSITE_FEATURES_BIG_SCREEN":"Gaudeix del teu contingut de vídeo en una pantalla més gran","WEBSITE_FEATURES_BIG_SCREEN_P1":"Emet qualsevol cosa que estigueu veient a un altre dispositiu, ja sigui un telèfon, una tauleta o un televisor amb un sol clic.","WEBSITE_FEATURES_SOURCES":"Mireu el vídeo de moltes fonts diferents","WEBSITE_FEATURES_SOURCES_P":"Instal·leu complements oficials i de la comunitat per gaudir de vídeos provinents de molts proveïdors diferents - tot en una aplicació elegant i fàcil d\'utilitzar.","WEBSITE_CREATE_AN_ADDON":"Creeu un complement","WEBSITE_FEATURES_SYNC":"Sincronitzeu la biblioteca entre diferents dispositius i repreneu la reproducció","WEBSITE_FEATURES_SYNC_P1":"Inicieu la sessió amb el vostre compte a tots els vostres dispositius i gaudiu de la vostra biblioteca, complements, reproducció i calendari sincronitzats.","WEBSITE_FEATURES_EXTENDABLE":"Catàleg de vídeo ampliable amb complements","WEBSITE_FEATURES_EXTENDABLE_P1":"El catàleg de complements Stremio proporciona diversos complements per instal·lar i veure una gran varietat de contingut de vídeo. Això inclou pel·lícules, programes, TV en directe, esports, notícies, podcasts, canals web, videojocs i molt més.","WEBSITE_FEATURES_AUTO_SUBS":"Subtítols automàtics","WEBSITE_FEATURES_AUTO_SUBS_P1":"Amb els nostres complements de subtítols obtindreu opcions seleccionades automàticament per al vostre idioma preferit.","WEBSITE_FEATURES_CHROMECAST":"Emetent a Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Gaudeix del contingut de vídeo en una pantalla més gran o simplement emet el que estiguis mirant a un altre dispositiu.","WEBSITE_FEATURES_KEEP_TRACK":"Feu un seguiment dels vostres programes de televisió i canals web preferits","WEBSITE_FEATURES_KEEP_TRACK_P1":"Obteniu una visualització del calendari i notificacions de capítols nous de les vostres sèries i canals web preferits.","WEBSITE_FEATURES_POWER_USER":"Funcions d\'usuari avançat","WEBSITE_FEATURES_POWER_USER_P1":"Reprodueix en un reproductor extern","WEBSITE_FEATURES_POWER_USER_P2":"Reprodueix des d\'un fitxer torrent o un enllaç magnètic","WEBSITE_FEATURES_POWER_USER_P3":"Importa a la teva biblioteca des de m\'agrada de Facebook o discs locals","WEBSITE_ADD_ONS":"Complements","WEBSITE_ADD_ONS_P1":"Tot el contingut de vídeo que proporciona Stremio s\'obté a través d\'un sistema de complements - no hi ha cap contingut ni proveïdor de contingut integrat a l\'aplicació.","WEBSITE_ADD_ONS_P2":"Hi ha dos grups de complements disponibles: complements oficials i de comunitat.","WEBSITE_ADD_ONS_P3":"Els oficials són desenvolupats i allotjats per Stremio, mentre que els complements de la comunitat els creen els membres de la comunitat, que també els allotgen.","WEBSITE_ADDONS_OFFICIAL":"Complements oficials","WEBSITE_ADDONS_WATCHUB":"Reprodueix les teves pel·lícules, sèries i programes preferits de proveïdors com iTunes, Hulu, Amazon i altres serveis del Regne Unit i dels Estats Units.","WEBSITE_ADDONS_YOUTUBE":"Mireu els vostres canals de YouTube preferits sense anuncis i obteniu notificacions de les contribucions que heu seguit sobre les càrregues noves.","WEBSITE_ADDONS_FILMON":"Mireu TV en directe, pel·lícules i televisió social de franc. 600 canals de televisió, 45.000 pel·lícules gratuïtes, documentals i molt més.","WEBSITE_ADDONS_OPENSUBTITLES":"Subtítols de pel·lícules i TV en diversos idiomes, milers de subtítols traduïts penjats cada dia.","WEBSITE_ADDONS_COMMUNITY":"Complements de la comunitat","WEBSITE_ADDONS_FILMON_VOD":"Mireu el vídeo a la carta de Filmon.tv","WEBSITE_ADDONS_TWICH":"Mireu en directe des de Twitch.tv - una plataforma de transmissió de vídeo per a la indústria dels esports electrònics.","WEBSITE_ADDONS_VODO":"Mireu pel·lícules independents de forma totalment gratuïta.","WEBSITE_ADDONS_NETFLIX":"Mireu pel·lícules i sèries web de Netflix.","WEBSITE_ADDONS_CREATE":"Creeu un complement","WEBSITE_ADDONS_CREATE_P1":"Si ho desitgeu, podeu desenvolupar el vostre propi complement. D\'aquesta manera, podeu oferir a vosaltres mateixos i a la nostra comunitat accés a contingut de vídeo nou i arribar a un públic nou i dirigit de milions d\'usuaris de tot el món.","WEBSITE_ADDONS_START_CREATE":"Per començar, visiteu la pàgina del SDK de Complements Stremio:","WEBSITE_DOWNLOADS":"Descàrregues","WEBSITE_DOWNLOADS_P1":"Per obtenir un rendiment òptim, us recomanem que utilitzeu la versió més recent disponible de les aplicacions Stremio. Tanmateix, si per algun motiu voleu utilitzar una versió anterior, la podeu descarregar aquí.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio per a Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio per a macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio per a Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio per a Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio per a Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio per a Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio per a Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio per a iOS (versió limitada)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribuir","WEBSITE_CONTRIBUTE_P1":"La plataforma Stremio és de codi obert i podeu crear fàcilment un complement per al contingut que actualment no existeix.","WEBSITE_CONTRIBUTE_WHY":"Per què heu de crear un complement?","WEBSITE_CONTRIBUTE_WHY_P1":"Arribeu a un públic nou pel contingut del vostre vídeo","WEBSITE_CONTRIBUTE_WHY_P2":"La base d\'usuaris d\'Stremio creix ràpidament - el primer any del llançament, Stremio va guanyat un milió d\'usuaris a tot el món i, el segon any d\'existència de la plataforma, aquest nombre va créixer fins als 2,5 milions.","WEBSITE_CONTRIBUTE_WHY_P3":"Amb el vostre complement, podeu arribar fàcilment a aquest públic i distribuir-hi el vostre contingut de vídeo.","WEBSITE_CONTRIBUTE_ALL":"Mireu les vostres pel·lícules, vídeos, sèries i canals preferits en un sol lloc.","WEBSITE_CONTRIBUTE_ALL_P1":"Sou fans d\'un tipus de contingut concret que encara no està disponible a Stremio? Crea un complement i gaudeix veient els teus vídeos preferits en un dels centres d\'entreteniment més grans i fàcils d\'utilitzar del mercat.","WEBSITE_CONTRIBUTE_ALL_P2":"A més, obtindreu l\'agraïment interminable d\'altres membres de la comunitat Stremio amb idees semblants.","WEBSITE_CONTRIBUTE_MONETIZE":"Obteniu ingressos del vostre complement i guanyeu diners amb la seva ajuda","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Un cop hàgiu desenvolupat un nou complement per a Stremio, podeu obtenir ingressos fàcilment a través de diverses maneres. Si ho teniu en compte, no dubteu a posar-vos en contacte amb nosaltres a ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - estarem encantats de consultar-los i assessorar-vos sobre les opcions de monetització dels complements.","WEBSITE_CONTRIBUTE_TRANSLATE":"Feu-vos traductor voluntari","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Si voleu gaudir de les aplicacions Stremio en diferents idiomes, podeu unir-vos a la nostra comunitat de traductors voluntaris. Ens ajuden a afegir versions d\'Stremio en molts idiomes diferents.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Teniu moltes ganes de començar?","WEBSITE_TRANSALTE_STREMIO":"Tradueix Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Comunitats oficials","WEBSITE_COMMUNITY_OFFICIALS_P1":"Formeu part de la creixent comunitat Stremio. Seguiu-nos a les xarxes socials i no tingueu por de saludar - ens encanta escoltar els nostres fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Comunitats no oficials","STREMIO_COMMUNITY_NL":"Stremio Països Baixos","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Alemanya","STREMIO_COMMUNITY_BELGIUM":"Stremio Bèlgica","STREMIO_COMMUNITY_FRANCE":"Stremio França","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Itàlia","STREMIO_COMMUNITY_UK":"Stremio Regne Unit","STREMIO_COMMUNITY_USA":"Stremio EUA","STREMIO_COMMUNITY_MEXICO":"Stremio Mèxic","STREMIO_COMMUNITY_ADDONS":"Complements Stremio","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Socis i simpatitzants","WEBSITE_COMMUNITY_GOODIES":"Llaminadures Stremio","WEBSITE_COMMUNITY_WALLPAPERS":"Fons de pantalla","WEBSITE_COMMUNITY_ART":"Galeria d\'Art de la Comunitat","WEBSITE_LINK_ART":"Galeria d\'art de la comunitat","WEBSITE_CONTACT_US":"Contacteu-nos","WEBSITE_CONTACT_US_P1":"Si teniu cap pregunta, comentari o suggeriment, no dubteu a posar-vos en contacte amb nosaltres a través del formulari de contacte següent.","WEBSITE_CONTACT_US_P2":"Tingueu en compte que estem ubicats a Bulgària, de manera que pot haver-hi un retard en atendre la vostra consulta a causa de les diferències de zona horària.","WEBSITE_CONTACT_US_SUCCESS":"El teu missatge ha estat enviat. Ens posarem en contacte amb vostè el més aviat possible.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Introduïu un correu electrònic vàlid!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Amb què està relacionada la vostra pregunta?","WEBSITE_CONTACT_US_Q_OS":"Quin és el vostre Sistema Operatiu?","WEBSITE_CONTACT_US_PH_EMAIL":"El teu correu electrònic","WEBSITE_CONTACT_US_PH_MESSAGE":"Missatge","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ENVIAR","WEBSITE_CONTACT_US_Q_1":"Com instal·lar?","WEBSITE_CONTACT_US_Q_2":"Com es desinstal·la?","WEBSITE_CONTACT_US_Q_3":"(HTML) Com fer lasanya?","WEBSITE_CONTACT_US_Q_4":"Complements","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Tecnologia","WEBSITE_TECHNOLOGY_P1":"Ens encanta la tecnologia i la ciència boja.
    Això és el que potencia Stremio (tot és de codi obert).","WEBSITE_TECHNOLOGY_P_QT":"Desenvolupament de programari multiplataforma al màxim.","WEBSITE_TECHNOLOGY_P_MPV":"Un reproductor multimèdia gratuït, de codi obert i multiplataforma.","WEBSITE_TECHNOLOGY_P_RN":"React Native us permet crear aplicacions per a mòbils només amb JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Framework multimèdia incrustat a l\'aplicació per obtenir multimèdia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm és una plataforma mòbil i un substitut de SQLite i Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js és un entorn de temps d\'execució de JavaScript de multiplataforma i de codi obert.","WEBSITE_TECHNOLOGY_P_RUST":"Rust és un llenguatge de programació de sistemes multi-paradigma centrat en la seguretat, sobretot la concurrència.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribuir al projecte","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Hi ha dues maneres de contribuir a Stremio i ajudar-nos a millorar el producte.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Podeu donar les vostres valuoses habilitats lingüístiques traduint la plataforma ...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"o bé","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... podeu emprar les vostres habilitats de codificació per crear complements de la comunitat. ","WEBSITE_TRANSLATE_STREMIO":"Tradueix Stremio","WEBSITE_404_OH_NO":"Uh-oh! La pàgina que cerqueu no és aquí...","WEBSITE_GO_HOME":"Anar a l\'inici","WEBSITE_LINK_OTHER_DOWNLOADS":"Altres descàrregues","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Suport","WEBSITE_DOWNLOAD_4_0_BETA":"Descarregueu Stremio 4 beta ara","WEBSITE_GET_FOR_DESKTOP":"Per a escriptori","WEBSITE_LINK_ADDON_COMPETITION":"Competició de complements","WEBSITE_LINK_ART_CONTEST":"Concurs d\'art","WEBSITE_MY_ACCOUNT":"El meu compte","WEBSITE_MAINPAGE_FAQ_001_H1":"Què és Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio és un modern centre de comunicació que us ofereix la llibertat de veure tot el que desitgeu.","WEBSITE_MAINPAGE_FAQ_002_H1":"Com funciona?","WEBSITE_MAINPAGE_FAQ_002_P1":"Un cop instal·leu Stremio al dispositiu i creeu un compte, tot el que heu de fer és visitar el catàleg de complements i instal·lar qualsevol que vulgueu, i llestos!","WEBSITE_MAINPAGE_FAQ_002_P2":"Després d\'això, podeu anar a les seccions Descobreix o Tauler per començar a explorar el contingut.","WEBSITE_MAINPAGE_FAQ_003_H1":"Què puc veure aquí?","WEBSITE_MAINPAGE_FAQ_003_P1":"Molt: pel·lícules, programes de televisió, canals web, esports, canals de TV, escoltar podcasts i molt més. Gràcies al nostre sistema de complements, podeu accedir a diversos continguts.","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio és de codi obert?","WEBSITE_MAINPAGE_FAQ_004_P1":"Sí, podeu consultar els enllaços següents: ${1}aplicació d\'escriptori${2} i ${3}organització GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"És segur Stremio?","WEBSITE_MAINPAGE_FAQ_005_P1":"Sí: com que és programari de codi obert, el codi es pot auditar públicament i el podeu revisar vosaltres mateixos.","WEBSITE_MAINPAGE_FAQ_006_H1":"I la meva privadesa?","WEBSITE_MAINPAGE_FAQ_006_P1":"Respectem la privadesa dels usuaris i no recopilem cap dada personal a més del mínim essencial per crear i sincronitzar el vostre compte.","WEBSITE_MAINPAGE_FAQ_006_P2":"També hi ha un ${1}mode de convidat${2} al registre, que no requereix cap mena de dades: en aquest mode, no es realitzen crides al nostre backend. No obstant, a costa de funcions útils com ara poder sincronitzar la biblioteca entre dispositius.","WEBSITE_MAINPAGE_FAQ_007_H1":"Puc emetre al meu televisor?","WEBSITE_MAINPAGE_FAQ_007_P1":"Sí, donem suport a Chromecast i podeu emetre-les des d\'aplicacions d\'escriptori i mòbils (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Quants complements té Stremio?","WEBSITE_MAINPAGE_FAQ_008_P1":"A finals de 2019, més de 50 - per a més informació, consulteu el nostre catàleg de complements.","WEBSITE_MAINPAGE_FAQ_009_H1":"Es pot ampliar Stremio més enllà del que hi ha al catàleg de complements?","WEBSITE_MAINPAGE_FAQ_009_P1":"Sí, hauríeu de comprovar els següents: ${1}PimpMyStremio${2}, ${3}comunitats Reddit${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"Quins dispositius admeten Stremio?","WEBSITE_MAINPAGE_FAQ_010_P1":"Disposem d\'aplicacions d\'escriptori per a Windows, Mac i Linux. Per a mòbils, admetem Android i iOS, tot i que tingueu en compte que la funcionalitat d\'IOS és limitada (no admet la majoria dels complements).","WEBSITE_MAINPAGE_FAQ_010_P2":"Hi ha molts dispositius basats en Android en els quals podeu executar Stremio, com NVIDIA Shield i Amazon Fire Stick, però no els admetem oficialment.","WEBSITE_MAINPAGE_FAQ_011_H1":"Podeu afegir un determinat contingut a Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Ho sentim, nosaltres mateixos no proporcionem contingut, però com més complements Stremio tingueu instal·lats, més contingut podreu trobar.","WEBSITE_MAINPAGE_FAQ_012_H1":"Pot Stremio reproduir enllaços magnètics?","WEBSITE_MAINPAGE_FAQ_012_P1":"Sí, i també pot reproduir enllaços HTTP normals i fitxers torrent (arrossegar i deixar anar)..","WEBSITE_MAINPAGE_FAQ_013_H1":"Puc descarregar un vídeo i mirar-lo fora de línia?","WEBSITE_MAINPAGE_FAQ_013_P1":"Disponible fora de línia és una característica pròxima, però si permeteu que Stremio emmagatzemi memòria cau al dispositiu (des del tauler de configuració) podreu veure els vídeos més endavant sense connexió.","WEBSITE_MAINPAGE_FAQ_014_H1":"Res funciona, ajuda\'m!","WEBSITE_MAINPAGE_FAQ_014_P1":"Esteu segur que teniu instal·lats complements? Si és així, consulteu el nostre ${1}centre d\'ajuda${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Com manté Stremio les seves operacions de desenvolupament?","WEBSITE_MAINPAGE_FAQ_015_P1":"Publicem anuncis no intrusius de tant en tant, però estem considerant passar a un model de donació.","WEBSITE_MAINPAGE_FAQ_015_P2":"Per obtenir més preguntes, aneu al nostre ${1}centre d\'ajuda${2}.","HELP_LEARN_MORE":"Ajudeu-nos a obtenir més informació sobre vosaltres.","LIFESTYLE":"Estil de vida","SPORTS":"Esports","FOOD_HEALTH":"Alimentació i salut","BEAUTY_FASHION":"Bellesa i moda","NEWS":"Notícies","GAMING":"Videojocs","SCIENCE_EDUCATION":"Ciència i educació","MUSIC":"Música","TRAVEL":"Viatges","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comèdia","DIY":"Fes-ho tu mateix (DIY)","TECH":"Tecnologia","CINEMA":"Cinema","CONTINUE":"Continua","SLOW_LOADING":"CÀRREGA LENTA?","I_GIVE_UP":"EM RENDEIXO","LEARN_MORE":"Aprèn més","POOR_SOURCE":"Aquesta font té poca disponibilitat o la vostra connexió a Internet no és prou ràpida","PICK_CATEGORIES_ERR":"Heu de triar com a mínim 3 categories","ADJUST_TIMING":"Ajusteu el temps amb ","ADJUST_SIZE":"Ajusta la mida amb ","SEARCH_ANYTHING":"Podeu cercar qualsevol cosa...","ALL_CATEGORIES":"Tots","SEARCH_CATEGORIES":"Pel·lícules, Sèries, YouTube i TV","SEARCH_PERSONS":"Actors, directors i escriptors","SEARCH_PROTOCOLS":"Enllaços HTTP i magnètics","SEARCH_TYPES":"Enllaços IMDB / TVDB","WATCHED":"Vist","SHOW_LESS":"Mostrar menys","LAST_SEARCHES":"Darreres cerques","CLEAR_HISTORY":"Neteja l’historial","CHOOSE_SOME":"TRIA ALGUNS D\'AQUEST:","NO_WEB_REMOTE":"No s\'ha pogut carregar el comandament a distància web","STREMIO_OFFLINE":"Stremio està fora de línia","STREMIO_EXPENSIVE_CONNECTION":"Hem detectat que utilitzeu una connexió de dades mòbils, voleu continuar?","USE_DATA":"Utilitzeu dades","WARNING":"Avís","MORE_INFO":"Més informació ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Carregant ...","STREMIO_TV_BACK_TO_LANGUAGES":"Torna als idiomes","STREMIO_TV_REMOTE":"Remot","STREMIO_TV_GO_TO":"Anar a:","STREMIO_TV_OR_SCAN":"o escaneja:","STREMIO_TV_ADDON_INSTRUCTIONS":"Seguiu les instruccions per instal·lar els vostres complements preferits.","STREMIO_TV_LIVE_TV":"TV en directe","STREMIO_TV_RESUME_WATCHING":"Reprèn la visualització","STREMIO_TV_LOADING_BACKGROUND":"Carregant el fons","STREMIO_TV_CHECKING_AUTHENTICATION":"Comprovant l\'autenticació","STREMIO_TV_LOADING_BOARD":"Carregant el Tauler","STREMIO_TV_LOGIN_HEADER_LINE_1":"Volem que els nostres usuaris tinguin la millor experiència personalitzada possible amb el nostre programari.","STREMIO_TV_LOGIN_HEADER_LINE_2":"És per aquest motiu que us demanem que creeu i/o inicieu sessió al vostre compte.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Gràcies per la comprensió,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"L\'equip d\'Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Per utilitzar el comandament a distància web amb el vostre telèfon / tauleta / escriptori:","STREMIO_TV_WIFI_SETUP":"Configuració Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle no ha detectat connexió a Internet.","STREMIO_TV_WIFI_DETAILS_1":"Connecta\'t amb:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Utilitzeu la contrasenya:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Obriu un navegador web amb l\'enllaç:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Per defecte","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Per Última Visualització","STREMIO_TV_LIBRARY_SORT_NAME":"Per Nom","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Per Cops Vist","STREMIO_TV_DETAILS_SEASON_NUMBER":"Temporada ${1}","STREMIO_TV_STREAMS_LOADING":"Carregat ${1} / ${2} complements...","STREMIO_TV_STREAMS_STILL_LOADING":"Complement ${1} encara està carregant...","STREMIO_TV_PLAYER_SETTINGS":"Configuració del Reproductor","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Retard dels subtítols","STREMIO_TV_PLAYER_AUDIO_DELAY":"Retard d\'àudio","STREMIO_TV_PLAYER_VIDEO_SCALING":"Escalat de vídeo","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Font de reproducció no compatible","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"No s\'ha pogut obrir l\'enllaç extern","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Reprodueix amb ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Reprodueix amb el reproductor libVLC","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Canviant al reproductor libVLC a causa d\'un error de reproducció","STREMIO_TV_ADDONS_TITLE":"Utilitzeu Stremio al vostre telèfon o PC per instal·lar o configurar complements i premeu \\"Sincronitza complements\\"","STREMIO_TV_ADDONS_SUBTITLE":"Nota: assegureu-vos que feu servir el mateix compte de Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sincronitza complements","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Els complements s\'han sincronitzat correctament","STREMIO_TV_ADDONS_SYNC_FAILED":"No s\'han pogut sincronitzar els complements","STREMIO_TV_META_LINK_FAILED":"No s\'ha pogut obrir el metaenllaç","STREMIO_TV_CATALOG_LOADING":"El catàleg encara s\'està carregant...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Idioma de la interfície actualitzat","STREMIO_TV_SETTINGS_THEME_UPDATED":"Tema actualitzat","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Reproductor per Defecte","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"Reproductor Extern","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Idioma preferit","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Idioma secundari preferit","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Reproducció en túnel","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possibles problemes de reproducció en alguns dispositius","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"És possible que alguns formats de vídeo no funcionin","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Sense memòria cau","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Per defecte","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Suau","STREMIO_TV_SETTINGS_PROFILE_FAST":"Ràpid","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra-Ràpid","STREMIO_TV_SETTINGS_SERVER_URL":"URL del servidor de transmissió","STREMIO_TV_SETTINGS_SERVER_VERSION":"Versió del servidor","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Desconegut","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Versió d\'Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edita l\'URL del servidor","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Introduïu l\'URL d\'un servidor de transmissió","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Per llegir la Política de Privadesa de Stremio, visiteu:","STREMIO_TV_SETTINGS_TOS_TEXT":"Per llegir els Termes i Condicions de Stremio, visiteu:","STREMIO_TV_NAV_SEARCH":"Cerca","STREMIO_TV_NAV_HOME":"Inici","STREMIO_TV_NAV_DISCOVER":"Descobreix","STREMIO_TV_NAV_LIBRARY":"Biblioteca","STREMIO_TV_NAV_MOVIES":"Pel·lícules","STREMIO_TV_NAV_SERIES":"Sèries","STREMIO_TV_NAV_CHANNELS":"Canals","STREMIO_TV_NAV_TV":"TV en directe","STREMIO_TV_NAV_SETTINGS":"Configuració","STREMIO_TV_NAV_ADDONS":"Complements","STREMIO_TV_LOGIN_TITLE":"Enllaça Compte","STREMIO_TV_LOGIN_EXPIRES_IN":"Caduca en","STREMIO_TV_LOGIN_STEP_ONE":"Escaneja el codi QR de dalt o ves a","STREMIO_TV_LOGIN_STEP_TWO":"Inicieu sessió al vostre compte Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Demana un enllaç nou","STREMIO_TV_LOGIN_LINK_REFRESHED":"S\'ha actualitzat el codi d\'inici de sessió","STREMIO_TV_SEARCH_PLACEHOLDER":"Escriu alguna cosa","STREMIO_TV_SEARCH_NO_ADDONS":"No s\'han demanat complements per als catàlegs!","STREMIO_TV_SEARCH_BUTTON":"Cerca","STREMIO_TV_SEARCH_KEY_DEL":"Supr","STREMIO_TV_SEARCH_KEY_SPACE":"Espai","STREMIO_TV_SEARCH_KEY_CLEAR":"Retrocés","STREMIO_TV_SEARCH_HISTORY_TITLE":"Historial de cerques","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Pots cercar Títols, Actors, Canals i més...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Esborrar l\'historial de cerques","STREMIO_TV_FILTERS_DESCRIPTION":"Trieu un dels filtres següents","FILTERS":"Filtres","SETTINGS":"Configuració","ACCOUNT":"Compte","LOGOUT":"Tancar sessió","THEMES":"Temes","PLAYBACK":"Reproducció","PLAYBACK_SPEED":"Velocitat de reproducció","AUDIO_TRACKS":"Pistes d\'Àudio","VIDEOS":"Vídeos","SERVER":"Servidor","LINKS":"Enllaços","ABOUT":"Quant a","INTERFACE":"Interfície","ANIMATIONS":"Animacions","STATUS":"Estat","LANGUAGE":"Idioma","SIZE":"Mida","DELAY":"Retard","BOLD":"Negreta","TEXT_COLOR":"Color del text","OUTLINE_COLOR":"Color del contorn","BACKGROUND_COLOR":"Color de fons","BACKGROUND_BLUR":"Desenfocament de fons","SEEK_TIME_DURATION":"Cerca la durada del temps","AUTO_PLAY":"Reprodueix automàticament el següent episodi","PLAY_NOW":"Reprodueix Ara","MARK_AS_WATCHED":"Marca com a Vist","MARK_AS_UNWATCHED":"Marca com a No vist","REWIND_TO_BEGINNING":"Rebobina al principi","CONTINUE_WATCHING":"Continuar Mirant","ALL":"Tot","SECONDS":"segons","ON":"ON","OFF":"OFF","RELOAD":"Recarrega","EDIT_URL":"Edita l\'URL","NONE":"Cap","EMBEDDED":"Incrustat","REMOTE_SWITCH_DEVICES":"Canviar dispositius","REMOTE_VIDEOS":"Vídeos","REMOTE_ADJUST_TIMING":"Ajusteu el temps","REMOTE_ADJUST_SIZE":"Ajusta la mida","REMOTE_COULD_NOT_BE_LOADED":"No s\'ha pogut carregar el comandament a distància web","REMOTE_RETRY":"Reintentar","TORRENT_PROFILE_DEFAULT":"Per defecte","TORRENT_PROFILE_SOFT":"Suau","TORRENT_PROFILE_FAST":"Ràpid","TORRENT_PROFILE_ULTRA_FAST":"Ultra-Ràpid","FAQ_001_H1":"Què és Stremio?","FAQ_001_P1":"Stremio és un centre multimèdia dissenyat per a l\'entreteniment en vídeo tenint en compte la facilitat d\'ús. Stremio us permet organitzar & mirar la vostra pròpia col·lecció de pel·lícules, sèries, canals i TV en directe.","FAQ_001_P2":"Stremio recopila el contingut que us mostra del vostre disc local i del nostre sistema de complements.","FAQ_001_P3":"També us notificarà quan surten nous episodis/vídeos/pel·lícules que us interessin i us recomanarà pel·lícules.","FAQ_02_H1":"Com es compara Stremio amb Kodi i Plex?","FAQ_02_P1":"Ens inspiren aquests dos programes. Però tenim objectius diferents - Stremio s\'orienta específicament cap al entreteniment en vídeo i s\'esforça per convertir-se en la solució principal per ser molt fàcil d\'utilitzar.","FAQ_02_P2":"Stremio mai serà tan personalitzable i ric en funcions com Kodi i Plex, però és molt més fàcil d\'utilitzar. Només ${1} proveu-lo i veureu ${2} :)","FAQ_03_H1":"Com es compara Stremio amb Netflix?","FAQ_03_P1":"Una vegada més, Netflix és una de les nostres inspiracions. Ens esforcem per aconseguir l\'experiència d\'usuari de Netflix, a més d\'un munt de coses addicionals. Però el més important és que us oferim la llibertat de gestionar la vostra pròpia biblioteca i afegir noves fonts de contingut amb el nostre sistema de complements.","FAQ_03_P2":"Això fa que Stremio sigui infinitament extensible, de manera que quan feu servir Stremio mai no es limita al contingut que Netflix decideix llicenciar. Per exemple, mitjançant Stremio podeu veure contingut de ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} i fins i tot el mateix ${9}Netflix${10}!","FAQ_04_H1":"Com es compara Stremio amb Flipboard?","FAQ_04_P1":"Aquesta pregunta no ens arriba tan sovint, excepte quan parlem amb emprenedors :)","FAQ_04_P2":"Stremio és per disseny d\'un agregador de continguts, que bàsicament el converteix en Flipboard per a vídeo. Això és molt evident a la nostra secció de Tauler, que us proporciona catàlegs i notificacions de episodis/vídeos nous del que seguiu, igual que Flipboard.","FAQ_05_H1":"Com es compara Stremio amb Popcorn Time?","FAQ_05_P1":"Stremio i Popcorn Time són similars a la interfície d\'usuari, perquè no hi ha moltes maneres de fer els catàlegs d\'entreteniment de vídeo correctament :)","FAQ_05_P2":"Però, mentre que Popcorn Time se centra en la transmissió de torrents de fonts específiques, Stremio no té restriccions i és només un agregador de continguts - no està bloquejat en una font de contingut específica.","FAQ_05_P3":"A més, no proporcionem cap complement de torrent per defecte, de manera que Stremio no cobreix el cas d\'ús Popcorn Time amb la funcionalitat oficial.","FAQ_05_P4":"Una altra diferència notable és que Popcorn Time és completament de codi obert, mentre que Stremio és ${1} parcialment de codi obert${2}.","FAQ_06_H1":"Afegireu aquesta pel·lícula/sèrie?","FAQ_06_P1":"No, ho sento :(","FAQ_06_P2":"Com s\'esmenta a la majoria de les altres preguntes, Stremio no proporciona cap contingut per si mateix - tot s\'afegeix a través del sistema de complements. En cas que tingueu una sol·licitud de contingut, podeu fer servir el botó “Informa” del reproductor, que enviarà un correu electrònic a l\'autor del complement que esteu utilitzant actualment.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Creeu un complement per a X?","FAQ_08_P1":"És del tot possible.","FAQ_08_P2":"Si teniu una idea per a un complement, envieu-nos una línia a ${1}office@stremio.com${2}, però assegureu-vos que la vostra idea de complement no infringeixi cap copyright ni les condicions d\'ús.","FAQ_08_P3":"De moment, les següents coses del nostre full de ruta són complements per a FandangoNOW, el vídeo a la carta de Filmon.tv i Crunchyroll.","FAQ_09_H1":"Stremio utilitza BitTorrent?","FAQ_09_P1":"Sí, Stremio admet BitTorrent com a protocol de transmissió. Podeu fer-ho amb un complement de torrent, arrossegant i deixant anar un fitxer .torrent a Stremio o enganxant un enllaç magnètic a la barra de cerca.","FAQ_09_P2":"Tingueu en compte que l\'únic complement oficial que utilitza BitTorrent és ${1}Vodo${2}, que proporciona contingut independent, tot el que es pot distribuir amb BitTorrent.","FAQ_09_P3":"No admetem l\'ús de complements de tercers que puguin permetre la infracció dels drets d\'autor.","FAQ_10_H1":"Què puc veure a Stremio amb els complements oficials?","FAQ_10_P1":"Per defecte, podeu veure el contingut de Filmon.tv, YouTube i Vodo dins del mateix Stremio, amb el reproductor incrustat. A més, tenim un complement per a Twitch.tv i alguns altres.","FAQ_10_P2":"Aquesta combinació proporciona una selecció de:","FAQ_10_L1":"Canals de televisió populars, proporcionats per Filmon.tv - per exemple E4, BBC, Bollyworld TV","FAQ_10_L2":"Tot des de YouTube - per exemple BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Pel·lícules independents amb Vodo","FAQ_10_L4":"Emissions de jocs en línia amb Twitch.tv","FAQ_10_P3":"A més, hi ha moltes fonts de contingut que es proporcionen amb Guidebox i els complements Netflix, que no es reprodueixen completament dins Stremio, però que redirigiran al servei indicat. Per exemple, el complement Guidebox us proporcionarà una selecció de pel·lícules que podeu reproduir gratuïtament als Estats Units, des de serveis com TubiTV i Crackle.","FAQ_11_H1":"Stremio no s\'instal·la, què he de fer?","FAQ_11_P1":"Si utilitzeu Windows, proveu ${1}aquest instal·lador alternatiu${2}.","FAQ_11_P2":"Si utilitzeu Mac OS X, tingueu en compte que no admetem res més antic que OS X Mavericks (10.9).","FAQ_11_P3":"Si utilitzeu Linux, tingueu en compte que en aquest moment només admetem Linux de 64 bit (x64).","FAQ_11_P4":"Si encara no podeu resoldre el vostre problema, escriviu-nos al nostre ${1}grup de Facebook${2}.","FAQ_12_H1":"Per què es queixa del meu antivirus? És segur Stremio?","FAQ_12_P1":"Us assegurem que Stremio és ${1}100% net${2}.","FAQ_12_P2":"El vostre antivirus es queixa perquè incloem publicitat al nostre instal·lador, que alguns programes antivirus reconeixen com a ad-ware.","FAQ_12_P3":"Si encara no esteu segur, podeu provar el nostre ${1}instal·lador alternatiu${2}.","FAQ_13_H1":"Com puc fer un complement?","FAQ_13_P1":"Per començar, us recomanem que consulteu el nostre ${1}mòdul del sistema de complements${2} a GitHub.","FAQ_13_P2":"Després, podeu seguir el ${1}tutorial Hola Món${2}.","FAQ_13_P3":"Si no teniu cap habilitat de programació, publiqueu la vostra idea a ${1}la comunitat Reddit${2} i poseu-vos en contacte amb nosaltres amb la vostra idea de complement a ${3}office@stremio.com${4}.","FAQ_14_H1":"Com es publiquen els complements?","FAQ_14_P1":"Quan creeu un complement i un host, i col·loqueu un camp endpoint al manifest, que apunti a una adreça de complement funcional, el complement es publicarà automàticament al nostre ${1}catàleg de complements${2}.","FAQ_14_P2":"Això passa perquè la part del servidor del mòdul stremio-addons fa una crida automàticament a la nostra API per anunciar-lo. Quan la nostra API validi el vostre endpoint com a complement vàlid, començarà a aparèixer al catàleg.","FAQ_15_H1":"Puc executar Stremio al meu navegador?","FAQ_15_P1":"De moment no, però s\'acosta!","FAQ_15_P2":"Si teniu curiositat per veure un Alpha, el podeu veure aquí: ${1}alpha4.strem.io${2}. Recordeu que la transmissió està desactivada en aquest alfa. Admetem Chrome, Firefox, Opera i Edge.","FAQ_16_H1":"Emetre a la televisió no funciona / els subtítols no funcionen","FAQ_16_P1":"La transmissió a TV utilitza la tecnologia DLNA, que és molt inconsistent entre les diferents marques i models de televisors. Per aquest motiu, no tenim la capacitat de provar-ho en tots els casos, de manera que no és ni molt menys perfecte. Tot i això, estem treballant per millorar-lo constantment, però no podem proporcionar-vos una estimació de temps sobre quan DLNA començarà a funcionar correctament amb el vostre televisor.","FAQ_16_P2":"Si ni tan sols veieu el televisor al menú d\'emissió, proveu de desactivar la connexió de xarxa i tornar-la a activar (a Windows, feu clic amb el botó dret a la xarxa i utilitzeu Activa/Desactiva), així com reiniciar el router, el televisor i l\'ordinador.","FAQ_16_P3":"Si encara teniu problemes, podeu ajudar-nos enviant la informació de la vostra marca i model de televisió a ${1}office@stremio.com${2}.","FAQ_16_P4":"Mentrestant, recomanem Chromecast, que funciona molt bé, o simplement connecteu el televisor al PC amb un cable HDMI.","FAQ_17_H1":"Stremio es congela o es bloqueja, què puc fer?","FAQ_17_P1":"En primer lloc, si utilitzeu Windows 7 amb antivirus AVG: tenim aquesta problemàtica. El problema es troba en la pròpia AVG i no hi ha cap manera raonable de resoldre-ho per nosaltres mateixos. Malauradament, les excepcions o la desactivació de l\'antivirus no funcionaran. L\'única solució és substituir AVG per un altre.","FAQ_17_P2":"Si aquest no és el problema, però encara esteu utilitzant Windows, actualitzeu-lo a la versió més recent i actualitzeu/reinstal·leu els controladors de la GPU, llavors torneu-ho a provar.","FAQ_17_P3":"Si el problema encara no s\'ha resolt o si utilitzeu un Mac o Linux, escriviu-nos informant dels detalls exactes del problema al ${1}grup de Facebook${2}.","FAQ_18_H1":"Com puc fer un complement?","FAQ_18_P1":"Per començar, us recomanem que consulteu el nostre ${1}mòdul del sistema de complements${2} a GitHub.","FAQ_18_P2":"Després, podeu seguir el ${1}tutorial Hola Món${2}.","FAQ_18_P3":"Si no teniu cap habilitat de programació, publiqueu la vostra idea a ${1}la comunitat Reddit${2} i poseu-vos en contacte amb nosaltres amb la vostra idea de complement a ${3}office@stremio.com${4}.","FAQ_19_H1":"Per què Stremio ocupa espai al disc?","FAQ_19_P1":"Stremio té una memòria cau local per conservar temporalment els fitxers de vídeo que transmets.","FAQ_19_P2":"Això té dos avantatges: en primer lloc, permet a Stremio pre-emmagatzemar el vídeo per garantir una transmissió més fluida. En segon lloc, manté els vídeos a la memòria cau local perquè pugueu continuar veient-los fora de línia.","FAQ_19_P3":"La quantitat que guarda Stremio depèn del paràmetre Memòria cau del tauler de configuració. És possible que Stremio mantingui la quantitat establerta (ex: 2GB) al disc, tret que el vídeo que es reprodueixi actualment sigui més gran que aquest. En aquest cas ha d\'assignar prou emmagatzematge per conservar-lo mentre que l\'estiguis reproduint.","FAQ_20_H1":"On és la carpeta de memòria cau?","FAQ_20_P1":"A Windows, és stremio-cache a la unitat que heu seleccionat a Configuració (per exemple \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"A MacOS, és \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"A Linux, és \\"~/.stremio/stremio-cache\\" o \\"~/stremio-cache\\"","FAQ_21_H1":"Tinc l\'error \\"El servidor de transmissió no s\'ha trobat\\" què puc fer?","FAQ_21_P1":"Si obteniu aquest error, significa alguna d\'aquestes coses:","FAQ_21_P2":"1) Esteu provant d\'utilitzar un complement compatible amb la font de YouTube/BitTorrent a través de la nostra ${1}versió web${2}. En aquest cas, hauríeu d\'instal·lar la nostra versió d\'escriptori des del ${3}nostre lloc web${4}.","FAQ_21_P3":"2) Hi ha un problema amb la instal·lació d\'Stremio. En aquest cas, proveu de tornar a instal·lar la nostra versió d\'escriptori més recent des del ${1}lloc web${2}. Si això no ajuda, proveu de desactivar els programes antivirus i els tallafocs, reinicieu el PC i torneu-ho a provar. Si això també no funciona, escriviu-nos al nostre ${3}grup de Facebook${4}.","FAQ_22_H1":"No puc veure/utilitzar la majoria dels complements a iOS","FAQ_22_P1":"A causa de les restriccions dels termes i condicions de l\'App Store d\'Apple, hem restringit l\'aplicació iOS només a un conjunt concret de complements.","FAQ_22_P2":"Però tingueu la seguretat: hi haurà més complements per a iOS en el futur, i també podem afegir una integració que us permetrà utilitzar tots els complements Stremio gràcies a la connexió de l\'aplicació iOS al servidor de transmissió Stremio."}')},2840:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Seriály","TYPE_tv":"Televizní kanál","TYPE_channel":"Kanál","TYPE_other":"Ostatní","TYPE_movie_PL":"Filmy","TYPE_series_PL":"Seriály","TYPE_tv_PL":"Televizní kanály","TYPE_channel_PL":"Kanály","TYPE_other_PL":"Ostatní","TYPE_ALL":"All","VIDEO":"Video","BACK":"Dozadu","MORE":"Více","DONE":"Hotovo","COPY":"Kopírovat","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Discover","Board":"Rozdání","Library":"Knihovna","My Library":"Moje knihovna","Calendar":"Kalendář","NOTIFICATION_ONLINE":"Nyní jste online","NOTIFICATION_OFFLINE":"V současné době jste offline","INTERNET_CONNECTION":"Připojení k síti","STORAGE_FULL_TITLE":"Varování: Úložiště je plné!","STORAGE_FULL_TEXT":"Stremio nebude moci uložit vaše nastavení, preference ani přihlašovací údaje. Zvažte opětovné spuštění nebo přeinstalování aplikace Stremio.","SEARCH":"hledat","SEARCH_NO_RESULTS":"Nebyly nalezeny žádné výsledky","SEARCH_EXPLANATION_CONTENT":"Vyhledávání filmů, seriálů, YouTube a televizních kanálů","SEARCH_EXPLANATION_PEOPLE":"Hledání herců, režisérů a scénáristů","SEARCH_PASTE_LINKS":"Vkládání odkazů HTTP a Magnet","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Přidat do knihovny","REMOVE_FROM_LIB":"Odebrat z knihovny","ADDED_TO_LIB":"Přidáno do knihovny","REMOVED_FROM_LIB":"Odstraněno z knihovny","TRAILER":"Přívěs","WATCH_TRAILER":"Sledovat trailer","WATCH_NOW":"Sledujte nyní","SHOW":"Zobrazit","SHOW_MOVIE":"Zobrazit film","WATCH_RANDOM":"Sledovat náhodné","IMDB_RATING":"IMDb hodnocení","YEAR":"Rok","DIRECTOR":"Režie","WRITER":"Spisovatel/ka","LEAD_ACTORS":"Hlavní herci","CAST":"Herec","CREW":"Posádka","SHOW_MORE_CAST":"Zobrazit více »","AIRED":"Vysíláno na","SEASONS":"Série","GENRE":"Žánr","CATALOG":"Katalog","SUMMARY":"Shrnutí","SHOW_MORE":"Zobrazit více","SIMILAR":"Podobné stránky","UPCOMING":"Nadcházející","ENDED":"Skončilo","DURATION":"Délka","FEATURED":"Doporučené","METADATA":"Metadata","CATEGORY":"kategorie","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"vyhledávání videí","SEARCH_PLACEHOLDER":"vyhledat nebo vložit adresu URL","ADDON":"doplněk","ADDONS":"Doplňky","OFFICIAL":"oficiální","ADDONS_OFFICIAL":"Oficiální doplňky Stremio","ADDONS_POPULAR":"Oblíbené ve vaší oblasti","ADDON_FREE":"zdarma","ADDON_PEERED":"nahlédl na","ADDON_SUBSCRIPTION":"předplatné","ADDON_STREAM_GEORESTRICTED":"není ve vaší oblasti k dispozici","ADDON_STREAM_OFFLINECACHE":"Offline mezipaměť","ADDON_STREAM_LOCALFILE":"Místní soubor","SHARE_ADDON":"Sdílet doplněk","AVAILABLE_STREAMS":"Dostupné proudy","NO_STREAM":"Nebyly nalezeny žádné toky","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Chcete-li získat více streamů, nainstalujte si další doplňky","STREAM_NOT_SUPPORTED":"Vybraný stream není na této platformě podporován.","ADDON_CATALOGUE":"Zobrazit všechny doplňky \\"","ADDON_CATALOGUE_MORE":"Instalace doplňků","REPO_ADDED":"Přidáno úložiště","ADDON_REPO_EXIST_ERR":"Tato kolekce doplňků již existuje","ADDON_REPO_ERR":"Při přidávání kolekce došlo k chybě","ADDON_ADD_ERR":"Při přidávání doplňku došlo k chybě","ERR_ADDON_PROTECTED":"Nelze odinstalovat doplněk, je chráněn","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Něco se pokazilo - možná selhalo ověřování","ERR_NOT_COLLECTION_URL":"Nejedná se o adresu URL sbírky","ERR_NOT_ADDON_URL":"Není platná adresa URL doplňku","ERR_DETECTFROMURL":"Nelze najít doplněk/sbírku z této adresy URL","ADDON_DUPLICATE_WARNING":"Varování: duplicitní addon","ADDON_COLLECTION_SET_FAILED":"Synchronizace nainstalovaných doplňků s vaším účtem se nezdařila","SETTINGS_DATA_EXPORT":"Export uživatelských dat","ADDON_PULL_FAILED":"Synchronizace nainstalovaných doplňků z vašeho účtu se nezdařila","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Film stále v kinech","WATCH_IN_CINEMA":"Podívejte se na něj v místním kině","IN_THEATER":"V kině","GET_TICKETS":"Získat vstupenky","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Tento kanál ještě není seškrábán.
    Vraťte se prosím za několik minut.
    ","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Přidejte si ji do své knihovny, abyste byli informováni, jakmile bude k dispozici.","GET_NOTIFIED_WHEN_AVAILABLE":"Jakmile bude k dispozici, budete o tom informováni.","WARNING_STREAMING_SERVER":"Varování: místní streamovací server nebyl nalezen. Streamování z místních souborů, YouTube a BitTorrent nebude k dispozici.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Varování: toto video nemusí být podporováno vaším hardwarem. Mějte na paměti, že přehrávání může být pomalé.","PLAYER_ERROR":"Oops, chyba hráče","PLAYER_ERROR_LOOKSLIKE":"Vypadá to, že","PLAYER_ORIENTATION":"Orientace hráče","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Uzamčeno","PLAYER_ORIENTATION_SENSOR_SHORT":"Senzor","PLAYER_ORIENTATION_LANDSCAPE":"Orientace přehrávače uzamčená na šířku","PLAYER_ORIENTATION_SENSOR":"Automatická orientace hráče (senzor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Chyba přehrávání, zkuste to prosím znovu","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Neznámá chyba","PLAYER_PLAYBACK_ERROR_DEFAULT":"Je nám líto, ale toto video nelze přehrát pomocí {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Příště v pořadu","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Skrýt","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Sledovat nyní","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streamování z","CASTING_TO":"Obsazení do","NETWORK_STATUS":"Stav sítě","STREAM_SPEED":"Rychlost proudu:","STREAM_BUFFERED":"Vyrovnávací paměť:","PEERS_INFO":"Informace o vrstevnících","PEERS_ACTIVE":"Používáno:","PEERS_CONNECTED":"Připojeno:","PEERS_WAITING":"Čekání:","TRANSCODING_WARNING":"Varování: překódování videa.","STREAM_LOADING":"načítám...","PLAYING_LOCAL":"přehrávání z místního souboru","PLAYING_CACHE":"přehrávání z mezipaměti","WRONG_SUBS":"Špatné titulky?","ERR_SUBS_LOADING_TITLE":"Chyba při načítání titulků","ERR_SUBS_LOADING":"Neúspěšné načítání titulků: může se jednat o problém s používaným doplňkem nebo se síťovým připojením","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Následující doplňky titulků selhaly","ERR_CASTING_UPDATE_TITLE":"Nelze aktualizovat informace o zařízení pro odlévání: streamovací server může být offline","CHOOSE_DEVICE":"Výběr zařízení, na kterém chcete sledovat","NO_CAST_DEVICES":"Žádné odlévací zařízení není k dispozici.","NO_SETTINGS":"Žádné nastavení není k dispozici.","PHONE_TABLET":"Telefon / tablet","SUBTITLES":"Titulky","SUBTITLES_CHANGE":"Změna titulků pro","SUBTITLES_CHANGE_NONE":"Pro tento jazyk nejsou k dispozici žádné další titulky, omlouváme se.","SUBTITLES_CHANGE_ACIVE":"Aktuálně jsou aktivovány titulky #{{subtitlesDialog.activeIdx + 1}}. Kliknutím na \\"Pokračovat\\" aktivujete titulky #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Případně,","SUBTITLES_ADJUST_DELAY":"Nastavení zpoždění titulků:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Nebo můžete při přehrávání použít klávesy G / H pro nastavení.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: při hraní můžete použít klávesy G / H pro nastavení.","SUBTITLES_DELAY":"Zpoždění titulků:","SUBTITLES_LOADING":"Načítání titulků...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Vypnuto","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Období","EPISODE":"Epizody","SPECIAL":"Special","SORT":"řazení","SORT_BY":"Seřadit podle","FILTER":"filtr","SORT_TRENDING":"trendy","SORT_RECENT":"nedávné","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"hodnocení","SORT_WATCHED":"sledoval","SORT_YEAR":"rok","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Novinky pro vás","New Episodes":"Nové epizody","New Videos":"Nové články a videa","Recommendations":"Doporučení","LIBRARY_RESUME":"Pokračovat","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Detaily","LIBRARY_RESUME_DISMISS":"Skrýt","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Doporučené","DISCOVER_TOP":"Nahoře","DISCOVER_OSCAR":"Vítězové Oscara","DISCOVER_WARNING_TITLE":"Jejda!","DISCOVER_EMPTY_CATALOG":"Tento doplněk vrátil prázdný obsah.","DISCOVER_ADULT_WARNING":"Obsah je viditelný pouze pro dospělé. Jste starší 18 let?","DISCOVER_NOADDON_WARNING":"Varování: pro tento typ není aktivní žádný doplněk Stremio. Zobrazuje uložené položky, nic se zde neaktualizuje.","DISCOVER_LOAD_ERR":"Obsah se nenačetl, došlo k chybě.","DISCOVER_ADDON_UNINSTALLED":"Tento obsah již není k dispozici, možná jste doplněk odinstalovali.","UNINSTALL_THIS_ADDON":"Odinstalování tohoto doplňku","ERR_ADDON_NOT_INSTALLED":"Tento doplněk není nainstalován. Nainstalovat nyní?","DETAIL_RECEIVE_NOTIF_SERIES":"Přijímání oznámení o nových epizodách","DETAIL_RECEIVE_NOTIF_VIDEOS":"Přijímání upozornění na nová videa","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Opětovné spuštění nyní!","UPGRADE":"Nová verze je k dispozici! Upgrade na nejnovější verzi Stremio","RELOAD_UI":"Opětovné načtení uživatelského rozhraní","MANUAL_UPDATE_TITLE":"Aktualizace verze aplikace Stremio","MANUAL_UPDATE_LINE1":"Používáte zastaralou verzi aplikace Stremio, která se nedoporučuje.","MANUAL_UPDATE_LINE2":"Prosíme o co nejrychlejší aktualizaci.","BUTTON_UPDATE_LATTER":"Nyní ne","BUTTON_UPDATE_NOW":"Aktualizovat","ANONYMOUS_USER":"Anonymní uživatel","DONT_HAVE_ACC":"Nemáte účet?","HAVE_ACC":"Již máte účet?","PASSWORD":"Heslo","PASSWORD_CONFIRM":"Potvrďte heslo","EMAIL":"E-mail","FB_LOGIN":"Pokračovat na Facebooku","FB_NOTHINGSHARED":"Nic není sdíleno bez vašeho souhlasu","FB_NOPOST":"Vaším jménem nic nezveřejníme","OR":"nebo","I_ACCEPT":"Přijímám","I_ACCEPT_BY_CLICKING":"Kliknutím na výše uvedené tlačítko stvrzuji, že souhlasím s tím, že","TOS":"Obchodní podmínky","MUST_ACCEPT_TERMS":"Musíte přijmout podmínky","PASSWORDS_NOMATCH":"Heslo se neshodují","SIGN_UP":"Registrovat se","SIGN_UP_EMAIL":"Zaregistrujte se pomocí e-mailu","CLICK_TO_SIGN_UP":"Klikněte zde a zaregistrujte se.","LOG_IN":"Přihlásit","LOG_OUT":"Odhlásit se","EXIT_FULLSCREEN":"Ukončení celoobrazovkového režimu","ENTER_FULLSCREEN":"Vstup do celoobrazovkového režimu","PLAY_URL_MAGNET_LINK":"Přehrát adresu URL / odkaz na magnet","HELP_FEEDBACK":"Nápověda a zpětná vazba","TERMS_OF_SERVICE":"Podmínky služby","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"O Stremio","USER_PANEL":"Uživatelský panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Přihlášení hosta","GUEST_LOGIN_NOTICE":"Přihlášení hosta se nedoporučuje. Použití běžného přihlášení umožňuje službě Stremio synchronizovat vaši knihovnu a přijímat oznámení o oblíbených seriálech/kanálech. Jste si jisti, že chcete pokračovat?","GUEST_LOGIN_NOTICE_2":"Přihlášení hosta se nedoporučuje - nebudete mít synchronizované oznámení o knihovně a nástěnce, což jsou důležité funkce aplikace Stremio. Jste si jisti, že chcete pokračovat?","CLICK_HERE":"klikněte sem","WRONG_PASSWORD":"Špatný e-mail nebo heslo. V případě, že jste zapomněli heslo,","SET_A_PASS":"nastavit heslo","RESET_PASSWORD":"Obnovit heslo","FORGOT_PASSWORD":"Zapomenuté heslo?","EMAIL_USED_WITH_FB":"Tento e-mail byl použit s přihlášením na Facebook.","INVALID_EMAIL":"Zadejte prosím platnou emailovou adresu","INVALID_PASSWORD":"Zadejte prosím platné heslo","CONN_ERR":"Chyba připojení - zkuste to prosím později.\\n\\nPokud přetrvává, vypněte firewall/antivirový software (zejména Bitdefender).","IMPORT_FROM_GUEST":"Import knihovny z účtu hosta","RECEIVE_UPDATES_EMAIL":"Přijímání aktualizací do e-mailu od Stremio","LOGIN_FAILED":"Přihlášení se nezdařilo.","SIGNUP_FAILED":"Registrace se nezdařila.","SEARCH_FAILED":"Vyhledávání se nezdařilo","EMAIL_USED":"E-mail je už používán.","WAITING_FB_LOGIN":"Přihlášení pomocí Facebooku...","EXTERNAL_PLAYER_TITLE":"Přehrávání v externím přehrávači","EXTERNAL_REMEMBER_PLAYER":"Chcete si svou volbu zapamatovat","EXTERNAL_ALWAYS_PLAY":"Ano","EXTERNAL_ONLY_ONCE":"Ne","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Řekněte nám, co se vám líbí","INTRO_TASTE_LONG":"Řekněte nám, co byste chtěli sledovat","INTRO_TASTE_PICK":"Vyberte {{interestsRemaining}} zájmy","INTRO_TASTE_PICK_MORE":"Vyberte {{interestsRemaining}} dalších zájmů","INTRO_TASTE_HELP_US":"Pomozte nám dozvědět se o vás více.","INTRO_TASTE_CHOOSE_THESE":"Vyberte si některé z nich:","INTRO_TASTE_CHOOSE_MIN":"Vyberte alespoň 3 kategorie","INTRO_TASTE_CHOOSE_MIN_ERR":"Musíte vybrat alespoň 3 kategorie!","INTRO_TASTE_LIFESTYLE":"Životní styl","INTRO_TASTE_SPORTS":"Sporty","INTRO_TASTE_FOOD_HEALTH":"Potraviny a zdraví","INTRO_TASTE_BEAUTY_FASHION":"Krása a móda","INTRO_TASTE_NEWS":"Novinky","INTRO_TASTE_GAMING":"Hry","INTRO_TASTE_SCIENCE_EDU":"Věda a vzdělávání","INTRO_TASTE_MUSIC":"Hudba","INTRO_TASTE_TRAVEL":"Cestovní kancelář","INTRO_TASTE_LATE_NIGHT":"Pozdní noční show","INTRO_TASTE_REALITY":"Realita","INTRO_TASTE_COMEDY":"Komedie","INTRO_TASTE_DIY":"Jak na kutilství","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Kino","ADDON_NOT_SUPPORTED":"Vybraný doplněk není na této platformě podporován.","ADDON_DISCLAIMER":"Používání doplňků třetích stran vždy podléhá vaší odpovědnosti a právním předpisům jurisdikce, ve které se nacházíte.","ADDON_ACTIVATE":"Aktivovat tento doplněk?","ADDON_REPO_ADD":"Adresa URL sbírky doplňků","ADDON_ADD":"Přidat","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Co je nového","BUTTON_CONTINUE":"Pokračovat","BUTTON_ACTIVATE":"Aktivovat","BUTTON_ACTIVATED":"Aktivovaný","BUTTON_CANCEL":"Zrušit","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Odmítnout vše","BUTTON_VIEW_ALL":"zobrazit vše","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Vaše knihovna vypadá prázdná. Zjistěte, jak je užitečná :)","HOW_START":"Zde je návod, jak začít:","LIB_EMPTY_CAL":"V kalendáři se zobrazují série ve vaší knihovně.","HOW_START_CAL":"Zde je návod, jak můžete přidávat série:","LIB_EMPTY_BOARD":"Tabule zobrazuje oznámení & doporučení týkající se vaší knihovny.","HOW_START_BOARD_WAIT":"Prosím, přidejte do své knihovny několik seriálů nebo kanálů a dejte nám pár minut na zpracování :)","HOW_START_BOARD":"Zde je návod, jak do něj můžete přidat seriály & filmy:","IMPORT_FB":"Import věcí, které se vám líbí, ze služby Facebook","IMPORT_TRAKT":"Import knihovny médií ze služby Trakt","IMPORT_DISCOVER":"Najděte zajímavé věci ze služby Discover","IMPORT_DISK":"Importovat filmy nebo pořady, které máte na místním disku","PLEASE_CREATE_ACC":" Vytvořte si účet, abyste mohli synchronizovat knihovnu a tabuli.","IMPORT_DISCOVER_SIGNUP":"Zaregistrujte se a najděte zajímavé věci z Discover","IMPORT_DISK_SIGNUP":"Zaregistrujte se a importujte filmy nebo pořady, které máte na místním disku","LIB_EMPTY_CLOUD":"Cloudová knihovna","LIB_EMPTY_CLOUD_DESC":"Osobní cloudová knihovna synchronizovaná na všech zařízeních","LIB_EMPTY_EARLY":"Brzy","LIB_EMPTY_EARLY_DESC":"Přijímání oznámení o nových epizodách","LIB_EMPTY_PERSONAL":"Osobní","LIB_EMPTY_PERSONAL_DESC":"Získejte osobní doporučení","LIB_EMPTY_CALENDAR_DESC":"Naplánujte si osobní kalendář sledování","LIB_EMPTY_ALL":"Zaregistrujte se a získejte je všechny:","LIB_EMPTY_BEST":"Zaregistrujte se a získejte to nejlepší ze Stremio","LIB_EMPTY_OTHER":"Zaregistrujte se a povolte Kalendář a další skvělé funkce","CALENDAR_ADDED":"Kalendář Stremio byl přidán do vašeho výchozího kalendáře na ploše.","CALENDAR_ADDED_MSG":"Pokud to nefunguje, přidejte tuto adresu URL do aplikace kalendáře ručně","TRAKT_EXPIRED":"Platnost ověření Traktu vypršela, přejděte prosím do Nastavení a znovu se ověřte","TRAKT_REQUIRES_LOGIN":"Chyba traktu","TRAKT_REQUIRES_LOGIN_MSG":"Musíte se přihlásit","SETTINGS_LABEL":"Nastavení","SETTINGS_NAV_GENERAL":"Obecné","SETTINGS_NAV_PLAYER":"Hráci","SETTINGS_NAV_STREAMING":"Streamování","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Spuštění při spuštění","SETTINGS_VLC_DEFAULT":"Přehrávání pomocí VLC","SETTINGS_UI_LANGUAGE":"Jazyk uživatelského rozhraní","SETTINGS_FULLSCREEN_EXIT":"Klávesa Escape ukončí celou obrazovku","SETTINGS_GAMEPAD":"Povolení podpory gamepadu","SETTINGS_CLOSE_WINDOW":"Zavření aplikace při zavření okna","SETTINGS_SUBTITLES_LANGUAGE":"Výchozí jazyk titulků","SETTINGS_SUBTITLES_SIZE":"Výchozí velikost titulků","SETTINGS_SUBTITLES_BACKGROUND":"Pozadí titulků","SETTINGS_SUBTITLES_COLOR":"Barva titulků","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Barva obrysu titulků","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Barva pozadí titulků","SETTINGS_SEEK_KEY":"Klávesy se šipkami hledají čas","SETTINGS_SEEK_KEY_SHIFT":"Klávesy se šipkami hledají čas při podržení klávesy Shift","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Automatické přehrávání další epizody","SETTINGS_NEXT_VIDEO":"Upozornění na spuštění další epizody","SETTINGS_NEXT_VIDEO_TRIGGER":"Zobrazit upozornění na další epizodu:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Automatická změna velikosti okna před přehráváním","SETTINGS_OVERRIDE_SERVER":"Přepsání adresy URL streamovacího serveru (pro pokročilé)","SETTINGS_SERVER_URL":"Adresa URL streamovacího serveru","SETTINGS_SERVER_AVAILABLE":"Streamovací server je k dispozici.","SETTINGS_SERVER_UNAVAILABLE":"Streamovací server není k dispozici.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Koncový bod HTTPS pro streamování","SETTINGS_USE_BETA":"Vždy používejte nejnovější betaverzi","SETTINGS_IMPORT_FB":"Import ze služby Facebook","SETTINGS_IMPORT_DISK":"Import z místního disku","SETTINGS_IMPORT_TRAKT":"Import ze služby Trakt","SETTINGS_PAUSE_MINIMIZED":"Pozastavení přehrávání při minimalizaci","SETTINGS_HWDEC":"Hardwarově akcelerované dekódování","SETTINGS_BACKGROUND":"Přehrávání na pozadí","SETTINGS_SUBSCRIBE_CALENDAR":"Přihlásit se k odběru kalendáře","SETTINGS_REQ_EXPORT":"Žádost o export dat","SETTINGS_ACC_DELETE":"Žádost o odstranění účtu","SETTINGS_CHANGE_PASSWORD":"Změnit heslo","SETTINGS_TOS":"Podmínky služby","SETTINGS_SUPPORT":"Kontaktovat podporu","SETTING_LANGUAGE":"Jazyk","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Odhlášení z Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Naskenujte QR kód pro otevření dálkového ovládání","SETTINGS_DESKTOP_NOTIFICATIONS":"Oznámení na ploše","SETTINGS_DATA_SAVER":"Spořič dat","SETTINGS_LANGUAGE_INTERFACE":"rozhraní","SETTINGS_LANGUAGE_SUBS":"výchozí titulky","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"účet","SETTINGS_VERSION":"verze","SETTINGS_MPV_WINDOW":"Spuštění přehrávače v samostatném okně (pokročilé)","SETTINGS_PLAY_IN_EXTERNAL":"Vždy spustit video v externím přehrávači","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Odejít","CONNECTED":"Připojeno","AUTHENTICATE":"Ověřit","CACHING":"Mezipaměť","SETTINGS_CACHING_DRIVE":"Jednotka mezipaměti","ENABLE_LOCAL_FILES_ADDON":"Povolení doplňku pro místní soubory (vyžaduje restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Povolení vzdálených připojení HTTPS","TORRENT_PROFILE":"Profil Torrent","DATA_CACHING":"Ukládání dat do mezipaměti","MAGNET_PARSING":"Rozbor odkazu magnetu","January":"Leden","February":"Únor","March":"Březen","April":"Duben","May":"Květen","June":"Červen","July":"Červenec","August":"Srpen","September":"Září","October":"Říjen","November":"Listopad","December":"Prosinec","Monday":"Pondělí","Tuesday":"Úterý","Wednesday":"Středa","Thursday":"Čtvrtek","Friday":"Pátek","Saturday":"Sobota","Sunday":"Neděle","Action":"Akce","Comedy":"Komedie","War":"Válka","Family":"Rodina","Animation":"Animace","Adventure":"Dobroudružná hra","Fantasy":"Fantasy","Crime":"Zločin","Mystery":"Záhada","Romance":"Romantické","Drama":"Drama","Horror":"Horory","Thriller":"Thriller","Sci-Fi":"Sci-fi","Music":"Hudba","Biography":"Životopis","Documentary":"Dokumentární film","Sport":"Sport","Musical":"Hudební","Western":"Západní","Film-Noir":"Film-noir","News":"Novinky","History":"Historie","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film a zábava","Gaming":"Hry","From TV":"Z televize","Lifestyle":"Životní styl","Science & Education":"Věda a vzdělávání","Cooking & Health":"Vaření a zdraví","Beauty & Fashion":"Krása a móda","Sports":"Sporty","News & Politics":"Zprávy a politika","How-to & DIY":"Jak na to & Udělej si sám","Tech":"Tech","Automotive":"Automobilový průmysl","Causes & Non-Profits":"Kauzy a neziskové organizace","Movies":"Filmy","Uk Live Tv":"Spojené království Živá televize","Fashion":"Móda","Business News Radio":"Business News Radio","Business Tv":"Obchodní televize","Cars & Auto":"Automobily a auta","Comedy Radio":"Komediální rádio","Lifestyle Radio":"Rádio životního stylu","News Tv":"Zpravodajská televize","Food And Wine":"Jídlo a víno","Latino Tv":"Latinskoamerická televize","Shopping Tv":"Nákupní televize","Religion":"Náboženství","Kids":"Děti","Body & Soul":"Tělo a duše","Education":"Vzdělání","Indian Tv":"Indická televize","Extreme Sports":"Extrémní sporty","Middle Eastern Tv":"Blízkovýchodní televize","Celebrity Tv":"Celebrity Tv","Science Tv":"Vědecká televize","Bikini babe":"Kočka v bikinách","Outdoors":"Venku","German Tv":"Německá televize","French Tv":"Francouzská televize","Italian Tv":"Italská televize","Gamer Tv":"Gamer Tv","Travel":"Cestovní kancelář","Asian Tv":"Asijská televize","Entertainment":"Zábava","News Radio":"Zpravodajské rádio","Music Radio":"Hudební rádio","Language Learning":"Výuka jazyků","Science Radio":"Vědecké rádio","Tech Radio":"Tech Radio","Science & Technology Vod":"Věda a technika Vod","new video":"nové video","new episode":"nová epizoda","new movie":"nový film","recommended":"doporučené","we recommend":"doporučujeme","offer of the day":"nabídka dne","news":"novinky","music video":"hudební video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Odmítnutí oznámení","CTX_DISMISS_ALL":"Odmítnout všechny","CTX_SHARE":"Sdílet","CTX_COPY_SHARE_LINK":"Kopírovat odkaz na sdílení","CTX_COPY_MAGNET_LINK":"Kopírovat odkaz na magnet","CTX_COPY_STREAM_LINK":"Kopírovat odkaz na stream","CTX_DOWNLOAD_VIDEO":"Stáhněte si toto video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Zobrazit","CTX_PLAY":"Přehrát","CTX_PLAY_IN":"Přehrát v","CTX_PLAY_ON":"Přehrát na","CTX_WATCH_ON":"Sledujte na","CTX_WATCH":"Sledovat","CTX_WATCHED":"Sledováno","CTX_WATCH_BEGINNING":"Sledujte od začátku","CTX_WATCH_MOBILE":"Sledování na mobilním zařízení","CTX_REWIND":"Přetočení na začátek","CTX_MARK_WATCHED":"Označit jako sledované","CTX_MARK_NON_WATCHED":"Označit jako nesledované","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Zbytek označte jako sledovaný","CTX_UNMARK_REST":"Zbytek označte jako nesledovaný","CTX_RECEIVE_NEW_NOTIF":"Přijímání nových oznámení","CTX_REMOVE_CACHE":"Odstranění z mezipaměti","CTX_REMOVE_CACHE_EP":"Odstranění epizody z mezipaměti","CTX_OPEN_CONTAINING":"Otevřít složku obsahující","CTX_REMOVE":"Odebrat z knihovny","CTX_AVAILABLE_OFFLINE":"Dostupné offline","CTX_PAUSED":"Pozastaveno","CTX_ALWAYS_ON_TOP":"Vždy na vrcholu","CTX_FULLSCREEN":"Celá obrazovka","CTX_WRONG_SUBS":"Špatné titulky?","CTX_REPORT_ISSUES":"Nahlásit problém","CTX_COPY":"Kopírovat","CTX_PASTE":"Vložit","CTX_CLEAR":"Vymazat","CTX_CLEAR_RECENT_SEARCHES":"Vymazat poslední vyhledávání","HELLO_THERE":"Dobrý den","HOPE_YOU_ENJOY":"Doufáme, že se vám Stremio bude líbit a že se stane jednou z vašich oblíbených aplikací!","WHO_ARE_WE":"Kdo jsme? Jsme tým, který za tím stojí - dva kluci, kteří už tři roky každý den tvrdě pracují na tom, aby byl tento produkt stále lepší a lepší.","SUPPORT_US":"Pokud se vám Stremio líbí, pokud je pro vás Stremio přínosné - šiřte tuto informaci dál!","SPREAD_THE_WORD":"Sdílejte se svými přáteli, rozšiřte informace o Stremiu","MORE_PEOPLE":"Čím více lidí bude Stremio používat, tím lepší bude!","SEND_A_LINK":"Nebo pošlete odkaz na naše webové stránky","TIP_LOCALFILES":"Tip: do aplikace Stremio můžete přetáhnout místní video soubory","ADDON_MY":"Moje doplňky","ADDON_COMMUNITY":"Doplňky komunity","ADDON_OFFICIAL":"Oficiální doplňky","ADDON_REPOS":"Sbírky doplňků","ADDON_SEARCH":"Vyhledávání doplňků","ADDON_INSTALL":"Instalovat","ADDON_CONFIGURE":"Konfigurovat","ADDON_UNINSTALL":"Odinstalovat","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Nainstalováno","ADDON_INSTALLED_MSG":"Addon nainstalován!","ADDON_UPGRADED_MSG":"Addon upgradován!","ADDON_UNKNOWN":"Neznámý","ADDON_ERR":"Chyba při instalaci doplňku!","ADDON_DISCONNECTED":"Odpojeno","ADDON_APP_MISSING":"aplikace pro tento zdroj není nainstalována. Chcete ji nyní nainstalovat?","ADDON_APP_INSTALL":"Nainstalovat nyní","ADDON_PAGE":"Stránka doplňku","ADDON_TOP_CONTENT":"To nejlepší z tohoto doplňku","ADDON_PROVIDES":"Tento doplněk vám poskytne:","ADDON_WATCH":"Sledujte #{types} nyní!","ADDON_WATCH_FREE":"Sledujte #{types} nyní ZDARMA!","ADDON_ADDON":"Doplněk","ADDON_SUPPORTED_TYPES":"Podporované typy","ADDON_SUPPORTED_CATALOGS":"Podporované katalogy","ADDON_PROVIDES_DISCOVER":"Další #{types} v aplikaci Discover","ADDON_PROVIDES_STREAMS":"Sledujte #{types}","ADDON_PROVIDES_STREAMS_FREE":"Sledujte #{types} ZDARMA","ADDON_PROVIDES_SUBTITLES":"Titulky pro #{types}","ADDON_CANTDETECT":"Nepodařilo se nám zjistit spuštěné Stremio, takže jsme nemohli zjistit, jaké máte nainstalované doplňky.","ERR_NO_META":"O tomto nebyly nalezeny žádné informace","ERR_GETTING_META":"Chyba při načítání informací o tomto.","ERR_CANT_PARSE_MAGNET":"Nelze analyzovat magnet","ERR_NO_MAGNET_INFOHASH":"Žádný platný informační hash pro magnet","ERR_NO_FILE_PATH":"Nelze odeslat požadavek bez cesty k souboru","ERR_NO_TORRENT":"Žádný torrent se nevrátil","ERR_NO_SUPPORTERD_FILES":"Nebyly nalezeny žádné podporované soubory","ERR_OPENING_FILES":"Nelze otevřít externí soubory","ERR_INVALID_LINK":"Neplatný odkaz","ERR_REGISTERED_ONLY":"Tato možnost je k dispozici pouze pro registrované uživatele.","ERR_CLIPBOARD":"Nelze přehrávat ze schránky","ERR_CLIPBOARD_READ":"Na této platformě nelze číst schránku","ERR_CLIPBOARD_GENERIC":"Ve schránce nebyla nalezena žádná přehrávatelná adresa URL. Zkopírujte prosím adresu URL (např. odkaz na magnet) na video.","BOARD_CONTINUE_WATCHING":"Pokračovat ve sledování","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmy vybrané speciálně pro vás.
    Tento film je ukázkovým doporučením.","BOARD_EXPLANATION_EPISODES":"Zde se objevují nové epizody vašich oblíbených seriálů.
    Přidejte si sledované seriály do své knihovny.","BOARD_EXPLANATION_VIDEOS":"Zde se objevují nové epizody vašich oblíbených kanálů.
    Přidejte si sledované kanály YouTube do své knihovny.","WEBSITE_SLOGAN_WATCH":"Sledujte okamžitě","WEBSITE_SLOGAN_ALL":"Veškerý videoobsah, který si užíváte, na jednom místě","WEBSITE_SLOGAN_NEW":"Vše, co můžete sledovat","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Sledujte od","WEBSITE_DOWNLOAD":"Stáhnout nyní","WEBSITE_DOWNLOAD_FOR":"Stáhnout nyní pro","WEBSITE_IS_DESKTOP":"Stremio je aplikace pro stolní počítače, otevřete tuto stránku v počítači a stáhněte si ji","WEBSITE_DESKTOP_DEMO_VID":"Demonstrační verze pro stolní počítače","WEBSITE_PAGE_HOME":"Domů","WEBSITE_PAGE_FEATURES":"Vlastnosti","WEBSITE_PAGE_ADDONS":"Doplňky","WEBSITE_PAGE_TECH":"Technologie","WEBSITE_PAGE_CREATE_ADDON":"Vytvořit doplněk","WEBSITE_PAGE_CONTACTS":"Kontakty","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filmy","WEBSITE_TYPE_series_PL":"Seriály","WEBSITE_TYPE_tv":"Živý televizní přenos","WEBSITE_TYPE_channel":"Kanály","WEBSITE_STREMIO_WHAT_IS":"Stremio je aplikace, která vám pomůže uspořádat a okamžitě sledovat vaše oblíbená videa, filmy, seriály a televizní kanály.","WEBSITE_FEATURES_WATCH":"Sledujte okamžitě v HD","WEBSITE_FEATURES_WATCH_DETAIL":"Klikněte a přehrávejte své oblíbené filmy, televizní pořady, videa a televizní kanály.","WEBSITE_FEATURES_SUBS":"Automatické titulky","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automaticky vybere synchronizované titulky pro váš jazyk.","WEBSITE_FEATURES_SUBS_LABEL":"Váš tah, šéfe.","WEBSITE_FEATURES_CAST":"Přehrávání na televizoru a mobilních zařízeních","WEBSITE_FEATURES_CAST_DETAIL":"Cast na AppleTV, Chromecast, Smart TV (DLNA/UPnP) a mobilní zařízení.","WEBSITE_LIB":"Užívejte si svou osobní knihovnu synchronizovanou na všech zařízeních","WEBSITE_LIB_COLLECT":"Sbírat od Stremio","WEBSITE_LIB_IMPORT":"Import ze služby Facebook","WEBSITE_LIB_LOCAL":"Přidání z místní jednotky","WEBSITE_BOARD":"Rada - Vaše jediné místo pro oznámení a doporučení","WEBSITE_BOARD_RECOMMEND":"Doporučený televizní pořad","WEBSITE_BOARD_TRENDING":"Trendy film","WEBSITE_BOARD_NEW":"Nové video","WEBSITE_BOARD_EPISODE":"Nová epizoda","WEBSITE_BOARD_1":"Hledáte něco zajímavého ke sledování? Získejte doporučení podle svého vkusu!","WEBSITE_BOARD_2":"Nechte se upozornit na nový díl svého oblíbeného televizního pořadu nebo kanálu YouTube!","WEBSITE_BOARD_YOUTUBE":"Nová videa kanálů YouTube","WEBSITE_BOARD_EPISODES":"Nové epizody seriálů, které sledujete","WEBSITE_ADDONS":"Doplňky obsahu","WEBSITE_TECH_DETAIL":"Milujeme technologie, milujeme šílenou vědu!\\nStremio používá následující open source technologie:","WEBSITE_TECH_WCJS":"WebChimera.js umožňuje službě Stremio přehrávat jakýkoli formát videa s dobrým výkonem.","WEBSITE_TECH_WCJS_EXTRA":"Jsme hlavními přispěvateli projektu","WEBSITE_TECH_ELECTRON":"Electron poskytuje inovativní platformu, na které lze vytvořit Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Jsme přispěvatelé projektu","WEBSITE_TECH_LINVODB":"Databázová technologie, která zajišťuje, že vaše data jsou uspořádaná a dostupná kdekoli, kde se přihlásíte.","WEBSITE_TECH_LINVODB_EXTRA":"Vlastní technologie","WEBSITE_CREATE_ADDON":"Vytvoření doplňku","WEBSITE_CREATE_ADDON_DETAIL":"Máte službu poskytující videoobsah? Pomůžeme vám využít funkce Stremio vytvořením vašeho doplňku.","WEBSITE_CREATE_ADDON_BENEFITS":"Výhody vytvoření doplňku pro Stremio","WEBSITE_P2P_BEAUTY":"Krása peer-to-peer streamování","WEBSITE_P2P_1":"Spolehlivé a cenově dostupné video v rozlišení Full HD / 4K na vyžádání nebo živé vysílání","WEBSITE_P2P_2":"Distribuční platforma poskytující skvělý uživatelský zážitek","WEBSITE_P2P_3":"Vytvoříme doplněk, který bude přesně odpovídat vašim potřebám","WEBSITE_P2P_CONTACT":"Máte zájem? Můžete nás kontaktovat.","WEBSITE_P2P_CONTACT_EXTRA":"Rádi vám pomůžeme s integrací vašeho obsahu do služby Stremio!","WEBSITE_P2P":"Jednou za čas se objeví technologie, která změní název hry. Investovali jsme spoustu času a úsilí do vytvoření našeho enginu pro streamování videa P2P (Peer-to-Peer), který poskytuje skvělý výkon a všestrannost, aby se přizpůsobil jakémukoli případu použití.\\nKontaktujte nás pro P2P video na vyžádání nebo živé streamování s podporou DRM.","WEBSITE_THOUGHTS":"Myšlenky, které sdílíme:","WEBSITE_SPREAD":"Šíření informací o Stremio:","WEBSITE_CONTACT":"Kontaktujte nás, budeme rádi, když se nám ozvete!","WEBSITE_OPENSOURCE":"Naše projekty s otevřeným zdrojovým kódem naleznete na adrese","WEBSITE_BITCOIN":"Darujte bitcoin:","WEBSITE_FAQ":"Nejčastější dotazy","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Otázky","WEBSITE_TOS":"Podmínky použití","WEBSITE_LEGAL":"Právo","WEBSITE_PAGE_ABOUT":"O nás","WEBSITE_PAGE_BECOME_PARTNER":"Staňte se partnerem","WEBSITE_ALL_YOU_CAN_WATCH":"Svoboda sledování\\nVše, co chcete.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Co je stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio je komplexní centrum pro agregaci video obsahu. Objevujte, organizujte a sledujte videa ze všech zdrojů na jakémkoli zařízení, které vlastníte.","WEBSITE_WHAT_IS_STREMIO_P2":"Filmy, televizní pořady, seriály, živé televizní vysílání nebo webové kanály jako YouTube a Twitch.tv - to vše najdete na Stremiu.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio je moderní multimediální centrum, které představuje komplexní řešení pro vaši videozábavu. Objevujete, sledujete a organizujete videoobsah ze snadno instalovatelných doplňků.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Filmy, televizní pořady, živé vysílání nebo webové kanály - to vše najdete na Stremiu.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Užívejte si na všech svých multimediálních zařízeních","WEBSITE_DEVICES_COLLECT":"Sbírat od Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import z facebooku","WEBSITE_DEVICES_LOCAL":"Přidání z místní jednotky","WEBSITE_JOIN_THE_PARTY_NOW":"Připojte se k večírku nyní","WEBSITE_DEVICES_ALL":"Snadné použití na všech zařízeních;","WEBSITE_EXTENDABLE_CATALOG":"Nekonečně rozšiřitelný katalog videa;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Skvělé funkce pro organizaci médií;","WEBSITE_AS_SEEN_ON":"Neviděno","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"O nás","WEBSITE_LINK_TECHNOLOGY":"Technologie","WEBSITE_LINK_APPS":"Aplikace","WEBSITE_LINK_DOWNLOADS":"Stahování","WEBSITE_MORE":"Více","WEBSITE_LINK_ADDONS":"Doplňky","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Делать вклад","WEBSITE_LINK_COMMUNITY":"Komunita","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"Dnes již máte procvičeno. Buď přidejte více karet, nebo začněte znovu zítra.","WEBSITE_LINK_HELP":"Centrum nápovědy","WEBSITE_LINK_CONTACTS":"Obchodní dotazy","WEBSITE_LINK_TOS":"Podmínky a pravidla","WEBSITE_LINK_PRAVACY":"Zásady ochrany osobních údajů","WEBSITE_SUBSCRIBE":"Odebírat","WEBSITE_NEWSLETTER":"Připojte se k našemu zpravodaji pro úžasné věci","WEBSITE_PLACEHOLDER_EMAIL":"Váš e-mail","WEBSITE_COMMUNITY":"Komunita","WEBSITE_LINK_PRAVACY_LEGAL":"Ochrana soukromí a právní předpisy","WEBSITE_WHY":"Proč to děláme","WEBSITE_WHY_P1":"Ve Stremio chodíme každý den do práce, protože chceme vyřešit důležitý problém pro odvětví videa na vyžádání. Každou minutu je zveřejněno tolik nového obsahu, že je prakticky nemožné se v něm zorientovat.","WEBSITE_WHY_P2":"Pomáháme lidem orientovat se v obrovském světě video zábavy a objevovat nový obsah. Naše aplikace sdružují filmy, seriály, živé televizní vysílání, webové kanály a další. Snažíme se uživatelům neuvěřitelně usnadnit vyhledávání oblíbených titulů a televizních stanic.","WEBSITE_WHY_P3":"Naši službu můžete používat na jakémkoli zařízení a kdykoli, takže Stremio je jediné centrum video zábavy, které kdy budete potřebovat.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"Tým Stremio je malý, ale výkonný: deset z nás programuje v X jazycích a sdílíme odborné znalosti v oblasti vývoje softwaru, designu uživatelského rozhraní a UX, marketingu a reklamy a podnikání a startupů.","WEBSITE_FEATURES":"Vlastnosti","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Snadné objevování nového obsahu","WEBSITE_FEATURES_DISCOVER_P":"Snadno objevujte nové filmy, televizní pořady, seriály a kanály ke sledování. Procházejte podle kategorie, žánru, hodnocení, oblíbenosti atd. nebo jednoduše zadejte název a vyhledejte. Se službou Stremio je vyhledávání nového videoobsahu hračka.","WEBSITE_FEATURES_ALL_CONTENT":"Veškerý video obsah na jedné obrazovce","WEBSITE_FEATURES_ALL_CONTENT_P1":"Podívejte se, které filmy, seriály nebo videa jste nedokoukali, a pokračujte v jejich sledování, nechte si posílat upozornění na nové epizody a novinky a procházejte doporučení, která dostanete na základě svých diváckých návyků.","WEBSITE_FEATURES_LIBRARY":"Uspořádejte svou knihovnu videí","WEBSITE_FEATURES_LIBRARY_P1":"Jedním kliknutím přidáte do knihovny Stremio libovolný titul a můžete se orientovat v obsahu, který je přehledně uspořádán podle typu, aktuálnosti nebo abecedního pořadí.","WEBSITE_FEATURES_CALENDAR":"Sledujte vše, co sledujete","WEBSITE_FEATURES_CALENDAR_P1":"Získejte vizualizaci všech filmů a seriálů, které přidáte do své knihovny, v kalendáři. Exportujte svůj kalendář Stremio a synchronizujte jej, abyste vždy věděli, kdy se má objevit nová epizoda nebo premiéra.","WEBSITE_FEATURES_BIG_SCREEN":"Vychutnejte si video obsah na větší obrazovce","WEBSITE_FEATURES_BIG_SCREEN_P1":"Jediným kliknutím můžete přehrát cokoli, co sledujete, do jiného zařízení - telefonu, tabletu nebo televizoru.","WEBSITE_FEATURES_SOURCES":"Sledování videí z mnoha různých zdrojů","WEBSITE_FEATURES_SOURCES_P":"Nainstalujte si oficiální a komunitní doplňky, abyste si mohli vychutnat videa od mnoha různých poskytovatelů - to vše v jedné elegantní a snadno použitelné aplikaci.","WEBSITE_CREATE_AN_ADDON":"Vytvoření doplňku","WEBSITE_FEATURES_SYNC":"Synchronizace knihovny mezi různými zařízeními a obnovení přehrávání","WEBSITE_FEATURES_SYNC_P1":"Přihlaste se pomocí svého účtu do všech zařízení a užívejte si synchronizovanou knihovnu, doplňky, přehrávání a kalendář.","WEBSITE_FEATURES_EXTENDABLE":"Rozšiřitelný katalog videí pomocí doplňků","WEBSITE_FEATURES_EXTENDABLE_P1":"Katalog doplňků Stremio nabízí řadu doplňků, které si můžete nainstalovat a sledovat z nich nejrůznější videoobsah. Patří sem filmy, seriály, živé televizní vysílání, sport, zprávy, podcasty, webové kanály, videohry a další.","WEBSITE_FEATURES_AUTO_SUBS":"Automatické titulky","WEBSITE_FEATURES_AUTO_SUBS_P1":"S našimi doplňky titulků získáte automaticky vybrané možnosti pro preferovaný jazyk.","WEBSITE_FEATURES_CHROMECAST":"Casting do Chromecastu","WEBSITE_FEATURES_CHROMECAST_P1":"Vychutnejte si videoobsah na větší obrazovce nebo jen přenášejte sledované video do jiného zařízení.","WEBSITE_FEATURES_KEEP_TRACK":"Sledování oblíbených televizních pořadů a webových kanálů","WEBSITE_FEATURES_KEEP_TRACK_P1":"Získejte vizualizaci kalendáře a upozornění na nové epizody oblíbených seriálů a webových kanálů.","WEBSITE_FEATURES_POWER_USER":"Funkce pro výkonné uživatele","WEBSITE_FEATURES_POWER_USER_P1":"Přehrávání v externím přehrávači","WEBSITE_FEATURES_POWER_USER_P2":"Přehrávání ze souboru torrent nebo odkazu magnet","WEBSITE_FEATURES_POWER_USER_P3":"Import do knihovny ze služby Facebook likes nebo z místního disku","WEBSITE_ADD_ONS":"Doplňky","WEBSITE_ADD_ONS_P1":"Veškerý videoobsah, který Stremio poskytuje, je získáván prostřednictvím systému doplňků - aplikace neobsahuje žádný obsah ani poskytovatele obsahu.","WEBSITE_ADD_ONS_P2":"K dispozici jsou dvě skupiny doplňků: oficiální a komunitní.","WEBSITE_ADD_ONS_P3":"Oficiální doplňky vyvíjí a hostuje Stremio, zatímco komunitní doplňky vytvářejí členové naší komunity, kteří je také hostují.","WEBSITE_ADDONS_OFFICIAL":"Oficiální doplňky","WEBSITE_ADDONS_WATCHUB":"Streamujte své oblíbené filmy, seriály a pořady od poskytovatelů, jako jsou iTunes, Hulu, Amazon a další britské/americké služby.","WEBSITE_ADDONS_YOUTUBE":"Sledujte své oblíbené kanály YouTube bez reklam a dostávejte upozornění na nové příspěvky od autorů, které sledujete.","WEBSITE_ADDONS_FILMON":"Sledujte živé televizní vysílání, filmy a sociální televizi zdarma. 600 televizních kanálů, 45 000 bezplatných filmů, dokumentů a další.","WEBSITE_ADDONS_OPENSUBTITLES":"Filmové a televizní titulky ve více jazycích, tisíce přeložených titulků nahraných každý den.","WEBSITE_ADDONS_COMMUNITY":"Doplňky komunity","WEBSITE_ADDONS_FILMON_VOD":"Sledujte video na vyžádání z Filmon.tv","WEBSITE_ADDONS_TWICH":"Sledujte živé přenosy z Twitch.tv - platformy pro streamování videa z e-sportů.","WEBSITE_ADDONS_VODO":"Sledujte nezávislé filmy zcela zdarma.","WEBSITE_ADDONS_NETFLIX":"Sledování filmů a webových seriálů Netflix.","WEBSITE_ADDONS_CREATE":"Vytvoření doplňku","WEBSITE_ADDONS_CREATE_P1":"Pokud chcete, můžete si vytvořit vlastní doplněk. Tímto způsobem můžete sobě i naší komunitě poskytnout přístup k novému videoobsahu a oslovit nové, cílené publikum milionů uživatelů po celém světě.","WEBSITE_ADDONS_START_CREATE":"Chcete-li začít, navštivte stránku Stremio Addon SDK:","WEBSITE_DOWNLOADS":"Stahování","WEBSITE_DOWNLOADS_P1":"Pro optimální výkon doporučujeme používat nejnovější dostupnou verzi aplikací Stremio. Pokud však z nějakého důvodu chcete používat starší verzi, můžete si ji stáhnout zde.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio pro Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio pro macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio pro Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio pro Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio pro iOS (omezená verze)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Делать вклад","WEBSITE_CONTRIBUTE_P1":"Platforma Stremio má otevřený zdrojový kód a můžete snadno vytvořit doplněk pro obsah, který v současné době nemá zdrojový kód.","WEBSITE_CONTRIBUTE_WHY":"Proč byste si měli vytvořit doplněk?","WEBSITE_CONTRIBUTE_WHY_P1":"Oslovte nové publikum pro svůj video obsah","WEBSITE_CONTRIBUTE_WHY_P2":"Uživatelská základna Stremio rychle roste - během prvního roku od spuštění získalo Stremio 1 milion uživatelů po celém světě a ve druhém roce existence platformy se jejich počet zvýšil na 2,5 milionu.","WEBSITE_CONTRIBUTE_WHY_P3":"S vaším doplňkem můžete toto publikum snadno oslovit a distribuovat mu svůj videoobsah.","WEBSITE_CONTRIBUTE_ALL":"Sledujte své oblíbené filmy, videa, seriály a kanály na jednom místě.","WEBSITE_CONTRIBUTE_ALL_P1":"Jste fanouškem určitého typu obsahu, který zatím není na Stremiu k dispozici? Vytvořte si pro něj doplněk a užijte si sledování oblíbených videí v jednom z největších a nejsnadněji použitelných zábavních center na trhu.","WEBSITE_CONTRIBUTE_ALL_P2":"Kromě toho získáte nekonečnou vděčnost dalších podobně smýšlejících členů komunity Stremio.","WEBSITE_CONTRIBUTE_MONETIZE":"Zpeněžujte svůj doplněk a vydělávejte peníze s jeho pomocí","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Jakmile vyvinete nový doplněk pro Stremio, můžete jej snadno zpeněžit několika různými způsoby. Pokud o tom uvažujete, neváhejte nás kontaktovat na adrese","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - rádi s vámi zkonzultujeme možnosti zpeněžení doplňků a poradíme vám.","WEBSITE_CONTRIBUTE_TRANSLATE":"Staňte se dobrovolným překladatelem","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Pokud chcete využívat aplikace Stremio v různých jazycích, můžete se připojit k naší komunitě dobrovolných překladatelů. Ti nám pomáhají přidávat verze aplikace Stremio v mnoha různých jazycích.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Máte chuť začít?","WEBSITE_TRANSALTE_STREMIO":"Přeložit Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Oficiální komunity","WEBSITE_COMMUNITY_OFFICIALS_P1":"Staňte se součástí rostoucí komunity Stremio. Sledujte nás na sociálních sítích a nestyďte se nás pozdravit - rádi se ozýváme našim fanouškům!","WEBSITE_COMMUNITY_UNOFFICIALS":"Neoficiální komunity","STREMIO_COMMUNITY_NL":"Stremio Nizozemsko","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Německo","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgie","STREMIO_COMMUNITY_FRANCE":"Stremio Francie","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugalsko","STREMIO_COMMUNITY_ITALY":"Stremio Itálie","STREMIO_COMMUNITY_UK":"Stremio Česká republika","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexiko","STREMIO_COMMUNITY_ADDONS":"Doplňky Stremio","STREMIO_COMMUNITY_AWESOME":"Úžasné Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partneři a podporovatelé","WEBSITE_COMMUNITY_GOODIES":"Stremio dobroty","WEBSITE_COMMUNITY_WALLPAPERS":"Tapety na plochu","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Kontaktujte nás","WEBSITE_CONTACT_US_P1":"Máte-li jakékoli dotazy, připomínky nebo návrhy, neváhejte nás kontaktovat prostřednictvím níže uvedeného kontaktního formuláře.","WEBSITE_CONTACT_US_P2":"Mějte na paměti, že se nacházíme v Bulharsku, takže může dojít ke zpoždění při řešení vašeho dotazu kvůli rozdílům v časových pásmech.","WEBSITE_CONTACT_US_SUCCESS":"Vaše zpráva byla odeslána. Ozveme se vám v nejbližším možném termínu.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Zadejte prosím platný e-mail!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Čeho se vaše otázka týká?","WEBSITE_CONTACT_US_Q_OS":"Jaký je váš operační systém?","WEBSITE_CONTACT_US_PH_EMAIL":"Váš e-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Zpráva","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ODESLAT","WEBSITE_CONTACT_US_Q_1":"Jak nainstalovat?","WEBSITE_CONTACT_US_Q_2":"Jak odinstalovat?","WEBSITE_CONTACT_US_Q_3":"(HTML) Jak připravit lasagne?","WEBSITE_CONTACT_US_Q_4":"Doplňky","WEBSITE_CONTACT_US_OS_1":"Umístěním databáze na síťovou jednotku je ve Windows zakázáno, aby se předešlo poškození dat. Mnemosyne bude nyní uzavřeno.","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technologie","WEBSITE_TECHNOLOGY_P1":"
    Milujeme technologie a bláznivou vědu.
    Tady je to, co pohání Stremio (vše je open-source).","WEBSITE_TECHNOLOGY_P_QT":"Vývoj softwaru napříč platformami v té nejlepší podobě.","WEBSITE_TECHNOLOGY_P_MPV":"Bezplatný multiplatformní přehrávač médií s otevřeným zdrojovým kódem.","WEBSITE_TECHNOLOGY_P_RN":"React Native umožňuje vytvářet mobilní aplikace pouze pomocí JavaScriptu.","WEBSITE_TECHNOLOGY_P_VLC":"Mediální rámec vložený do aplikace pro získání multimédií.","WEBSITE_TECHNOLOGY_P_REALM":"Realm je mobilní platforma a náhrada SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js je open-source, multiplatformní běhové prostředí jazyka JavaScript.","WEBSITE_TECHNOLOGY_P_RUST":"Rust je multiparadigmatický systémový programovací jazyk zaměřený na bezpečnost, zejména na bezpečnou souběžnost.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Přispět k projektu","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Existují dva způsoby, jak můžete přispět na Stremio a pomoci nám produkt ještě vylepšit.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Své cenné jazykové znalosti můžete věnovat překladu platformy...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"nebo","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... můžete využít své programátorské dovednosti při vytváření komunitních doplňků","WEBSITE_TRANSLATE_STREMIO":"Přeložit Stremio","WEBSITE_404_OH_NO":"Uh-oh! Hledaná stránka se zde nenachází...","WEBSITE_GO_HOME":"Jít domů","WEBSITE_LINK_OTHER_DOWNLOADS":"Ostatní soubory ke stažení","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Podpora","WEBSITE_DOWNLOAD_4_0_BETA":"Stáhněte si Stremio 4 beta nyní","WEBSITE_GET_FOR_DESKTOP":"Získat pro stolní počítače","WEBSITE_LINK_ADDON_COMPETITION":"Soutěž o doplněk","WEBSITE_LINK_ART_CONTEST":"Výtvarná soutěž","WEBSITE_MY_ACCOUNT":"Můj účet","WEBSITE_MAINPAGE_FAQ_001_H1":"Co je Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio je moderní multimediální centrum, které vám dává svobodu sledovat vše, co chcete.","WEBSITE_MAINPAGE_FAQ_002_H1":"Jak to funguje?","WEBSITE_MAINPAGE_FAQ_002_P1":"Po instalaci aplikace Stremio do zařízení a vytvoření účtu stačí navštívit katalog doplňků, nainstalovat libovolný doplněk a můžete začít!","WEBSITE_MAINPAGE_FAQ_002_P2":"Poté můžete přejít do sekce Objevovat nebo Nástěnka a začít zkoumat obsah.","WEBSITE_MAINPAGE_FAQ_003_H1":"Co zde mohu sledovat?","WEBSITE_MAINPAGE_FAQ_003_P1":"Hodně: Filmy, televizní pořady, webové kanály, sport, televizní kanály, poslech podcastů a další. Díky našemu systému doplňků máte přístup k nejrůznějšímu obsahu.","WEBSITE_MAINPAGE_FAQ_004_H1":"Je Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Ano, můžete se podívat na následující odkazy: ${1}desktopová aplikace${2} a ${3}Organizace GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Je Stremio bezpečné?","WEBSITE_MAINPAGE_FAQ_005_P1":"Ano: protože se jedná o software s otevřeným zdrojovým kódem, kód je veřejně kontrolovatelný a můžete si ho sami zkontrolovat.","WEBSITE_MAINPAGE_FAQ_006_H1":"A co moje soukromí?","WEBSITE_MAINPAGE_FAQ_006_P1":"Respektujeme soukromí uživatelů a neshromažďujeme žádné osobní údaje kromě nezbytného minima pro vytvoření a synchronizaci vašeho účtu.","WEBSITE_MAINPAGE_FAQ_006_P2":"Při registraci je k dispozici také režim ${1}Guest${2}, který nevyžaduje žádná data: v tomto režimu se nevolá na náš backend. Je to však na úkor užitečných funkcí, jako je možnost synchronizovat knihovnu napříč zařízeními.","WEBSITE_MAINPAGE_FAQ_007_H1":"Mohu vysílat na televizoru?","WEBSITE_MAINPAGE_FAQ_007_P1":"Ano, podporujeme Chromecast a můžete vysílat jak z počítače, tak z mobilních aplikací (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Kolik má Stremio doplňků?","WEBSITE_MAINPAGE_FAQ_008_P1":"Od konce roku 2019 je jich více než 50 - více informací najdete v našem katalogu doplňků.","WEBSITE_MAINPAGE_FAQ_009_H1":"Lze Stremio rozšířit nad rámec toho, co je v katalogu doplňků?","WEBSITE_MAINPAGE_FAQ_009_P1":"Ano, měli byste je zkontrolovat: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, atd.","WEBSITE_MAINPAGE_FAQ_010_H1":"Jaká zařízení Stremio podporuje?","WEBSITE_MAINPAGE_FAQ_010_P1":"Máme desktopové aplikace pro Windows, Mac a Linux. Pro mobilní zařízení podporujeme Android a iOS, i když mějte na paměti, že iOS má omezené funkce (nepodporuje většinu doplňků).","WEBSITE_MAINPAGE_FAQ_010_P2":"Existuje mnoho zařízení se systémem Android, na kterých můžete spustit Stremio, například NVIDIA Shield a Amazon Fire Stick, ale oficiálně je nepodporujeme.","WEBSITE_MAINPAGE_FAQ_011_H1":"Můžete do služby Stremio přidat určitý obsah?","WEBSITE_MAINPAGE_FAQ_011_P1":"Omlouváme se, ale sami neposkytujeme žádný obsah, ale čím více doplňků Stremio máte nainstalováno, tím více obsahu budete moci najít.","WEBSITE_MAINPAGE_FAQ_012_H1":"Umí Stremio přehrávat magnetické odkazy?","WEBSITE_MAINPAGE_FAQ_012_P1":"Ano, a umí také přehrávat běžné odkazy HTTP a soubory torrent (přetažením).","WEBSITE_MAINPAGE_FAQ_013_H1":"Mohu si video stáhnout a sledovat ho offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Funkce dostupná offline je připravovaná, ale pokud povolíte, aby Stremio ukládalo videa do mezipaměti ve vašem zařízení (na panelu nastavení), můžete je později sledovat bez připojení.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nic nefunguje, pomozte mi!","WEBSITE_MAINPAGE_FAQ_014_P1":"Jste si jisti, že máte nainstalované doplňky? Pokud ano, obraťte se na naše ${1}pomocné centrum${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Jak Stremio udržuje své vývojové operace?","WEBSITE_MAINPAGE_FAQ_015_P1":"Občas spouštíme nevtíravé reklamy, ale zvažujeme přechod na model dárcovství.","WEBSITE_MAINPAGE_FAQ_015_P2":"Další dotazy naleznete v našem ${1}pomocném centru${2}.","HELP_LEARN_MORE":"Pomozte nám dozvědět se o vás více.","LIFESTYLE":"Životní styl","SPORTS":"Sporty","FOOD_HEALTH":"Potraviny a zdraví","BEAUTY_FASHION":"Krása a móda","NEWS":"Novinky","GAMING":"Hry","SCIENCE_EDUCATION":"Věda & vzdělávání","MUSIC":"Hudba","TRAVEL":"Cestovní kancelář","LATE_NIGHT":"Pozdní noc","REALITY":"Realita","COMEDY":"Komedie","DIY":"Jak na kutilství","TECH":"Tech","CINEMA":"Kino","CONTINUE":"Pokračovat","SLOW_LOADING":"POMALÉ NAČÍTÁNÍ?","I_GIVE_UP":"VZDÁVÁM SE","LEARN_MORE":"Zjistit více","POOR_SOURCE":"Tento zdroj je špatně dostupný nebo vaše internetové připojení není dostatečně rychlé","PICK_CATEGORIES_ERR":"Musíte vybrat alespoň 3 kategorie","ADJUST_TIMING":"Nastavte časování pomocí","ADJUST_SIZE":"Upravte velikost pomocí","SEARCH_ANYTHING":"Můžete vyhledávat cokoli...","ALL_CATEGORIES":"Vše","SEARCH_CATEGORIES":"Filmy, seriály, YouTube a TV","SEARCH_PERSONS":"Herci, režiséři a scénáristé","SEARCH_PROTOCOLS":"HTTP & Magnet Odkazy","SEARCH_TYPES":"Odkazy na IMDB / TVDB","WATCHED":"Sledováno","SHOW_LESS":"Zobrazit méně","LAST_SEARCHES":"Poslední vyhledávání","CLEAR_HISTORY":"Vymazat historii","CHOOSE_SOME":"VYBERTE SI NĚCO Z TOHO:","NO_WEB_REMOTE":"Web Remote nelze načíst","STREMIO_OFFLINE":"Stremio je offline","STREMIO_EXPENSIVE_CONNECTION":"Zjistili jsme, že používáte mobilní datové připojení, chcete pokračovat?","USE_DATA":"Použití dat","WARNING":"Varování","MORE_INFO":"Více informací ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Načítám...","STREMIO_TV_BACK_TO_LANGUAGES":"Zpět na jazyky","STREMIO_TV_REMOTE":"Vzdálený","STREMIO_TV_GO_TO":"Přejít na:","STREMIO_TV_OR_SCAN":"nebo skenování:","STREMIO_TV_ADDON_INSTRUCTIONS":"Při instalaci preferovaných doplňků postupujte podle pokynů.","STREMIO_TV_LIVE_TV":"Živý televizní přenos","STREMIO_TV_RESUME_WATCHING":"Sledování životopisu","STREMIO_TV_LOADING_BACKGROUND":"Načítání pozadí","STREMIO_TV_CHECKING_AUTHENTICATION":"Kontrola ověřování","STREMIO_TV_LOADING_BOARD":"Nakládací deska","STREMIO_TV_LOGIN_HEADER_LINE_1":"Chceme, aby naši uživatelé měli s naším softwarem co nejlepší personalizované zkušenosti.","STREMIO_TV_LOGIN_HEADER_LINE_2":"Z tohoto důvodu vás žádáme, abyste si vytvořili a/nebo se přihlásili ke svému účtu.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Děkujeme za pochopení,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Tým Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Chcete-li používat webový ovladač pomocí chytrého telefonu / tabletu / stolního počítače:","STREMIO_TV_WIFI_SETUP":"Nastavení Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Aplikace Stremio Circle nezjistila připojení k internetu.","STREMIO_TV_WIFI_DETAILS_1":"Připojte se k:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Použijte heslo:","STREMIO_TV_WIFI_DETAILS_4":"stremiokruh","STREMIO_TV_WIFI_DETAILS_5":"Otevřete webový prohlížeč s odkazem:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Přepínací zařízení","REMOTE_VIDEOS":"Videa","REMOTE_ADJUST_TIMING":"Nastavení časování","REMOTE_ADJUST_SIZE":"Nastavení velikosti","REMOTE_COULD_NOT_BE_LOADED":"Web Remote nelze načíst","REMOTE_RETRY":"Zkusit znovu","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"Co je Stremio?","FAQ_001_P1":"Stremio je software mediálního centra navržený pro video zábavu s ohledem na snadné používání. Stremio vám umožňuje organizovat & sledovat vlastní sbírku filmů, seriálů, kanálů a živého televizního vysílání.","FAQ_001_P2":"Stremio shromažďuje obsah, který vám zobrazuje, z vašeho místního disku a z našeho systému doplňků.","FAQ_001_P3":"Upozorní vás také na nové epizody/videa/filmy, které vás zajímají, a doporučí vám filmy.","FAQ_02_H1":"Jak si Stremio vede ve srovnání s Kodi a Plexem?","FAQ_02_P1":"Inspirovali jsme se těmito dvěma softwary. Máme však odlišné cíle - Stremio je zaměřeno speciálně na video pro zábavu a snaží se stát hlavním řešením pro tuto oblast, protože se velmi snadno používá.","FAQ_02_P2":"Stremio nikdy nebude tak přizpůsobitelné a funkčně bohaté jako Kodi a Plex, ale jeho používání je podstatně jednodušší. Stačí ${1} si ho pořídit a uvidíte ${2} :)","FAQ_03_H1":"Jak si Stremio vede ve srovnání s Netflixem?","FAQ_03_P1":"Jednou z našich inspirací je opět Netflix. Snažíme se dosáhnout uživatelského zážitku Netflixu a navíc přidat spoustu dalších vychytávek. Co je však nejdůležitější, dáváme vám svobodu spravovat vlastní knihovnu a přidávat nové zdroje obsahu pomocí našeho systému doplňků.","FAQ_03_P2":"Díky tomu je Stremio nekonečně rozšiřitelné, takže při používání Stremio nejste nikdy omezeni obsahem, který se Netflix rozhodne licencovat. Prostřednictvím služby Stremio můžete například sledovat obsah z ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} a dokonce i ${9}Netflix${10} samotný!","FAQ_04_H1":"Jak si Stremio vede ve srovnání s Flipboardem?","FAQ_04_P1":"Tuto otázku nedostáváme tak často, kromě rozhovorů se začínajícími podnikateli :)","FAQ_04_P2":"Stremio je svým založením agregátor obsahu, což z něj v podstatě dělá Flipboard pro video. To je velmi patrné v sekci Nástěnka, která vám stejně jako Flipboard nabízí katalogy a upozornění na nové epizody/nová videa, která sledujete.","FAQ_05_H1":"Jak si Stremio vede ve srovnání s Popcorn Time?","FAQ_05_P1":"Stremio a Popcorn Time jsou si podobné uživatelským rozhraním, protože není mnoho způsobů, jak udělat katalogy video zábavy správně :)","FAQ_05_P2":"Zatímco Popcorn Time se zaměřuje na streamování torrentů z konkrétních zdrojů, Stremio je bez omezení a je pouze agregátorem obsahu - není vázáno na konkrétní zdroj obsahu.","FAQ_05_P3":"Kromě toho ve výchozím nastavení neposkytujeme žádné doplňky torrentů, takže Stremio nepokrývá případ použití Popcorn Time oficiálními funkcemi.","FAQ_05_P4":"Dalším významným rozdílem je, že Popcorn Time je zcela open source, zatímco Stremio je ${1} částečně open source${2}.","FAQ_06_H1":"Přidáte tento film/seriál?","FAQ_06_P1":"Ne, je mi líto :(","FAQ_06_P2":"Jak je uvedeno ve většině ostatních otázek, Stremio samo o sobě neposkytuje žádný obsah - vše se přidává prostřednictvím systému doplňků. V případě, že máte požadavek na obsah, můžete použít tlačítko \\"Nahlásit\\" v přehrávači, které odešle e-mail autorovi doplňku, který právě používáte.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Vytvoříte doplněk pro X?","FAQ_08_P1":"Je to docela možné.","FAQ_08_P2":"Pokud máte nápad na doplněk, napište nám na ${1}office@stremio.com${2}, ale ujistěte se, že váš nápad na doplněk neporušuje autorská práva ani podmínky používání.","FAQ_08_P3":"V současné době jsou na našem plánu doplňky pro FandangoNOW, Filmon.tv video on demand a Crunchyroll.","FAQ_09_H1":"Používá Stremio BitTorrent?","FAQ_09_P1":"Ano, Stremio podporuje BitTorrent jako streamovací protokol. Ten můžete použít buď pomocí doplňku torrent, nebo přetažením souboru .torrent do aplikace Stremio, případně vložením odkazu na magnet do vyhledávacího panelu.","FAQ_09_P2":"Vezměte prosím na vědomí, že jediným oficiálním doplňkem využívajícím BitTorrent je ${1}Vodo${2}, který poskytuje nezávislý obsah povolený k distribuci pomocí BitTorrentu.","FAQ_09_P3":"Nepodporujeme používání doplňků třetích stran, které by mohly umožnit porušování autorských práv.","FAQ_10_H1":"Co mohu sledovat v aplikaci Stremio s oficiálními doplňky?","FAQ_10_P1":"Ve výchozím nastavení můžete sledovat obsah serverů Filmon.tv, YouTube a Vodo přímo v aplikaci Stremio pomocí vloženého přehrávače. Kromě toho máme doplněk pro Twitch.tv a několik dalších.","FAQ_10_P2":"Tato kombinace nabízí výběr:","FAQ_10_L1":"Oblíbené televizní kanály, které poskytuje Filmon.tv - například E4, BBC, Bollyworld TV","FAQ_10_L2":"Vše z YouTube - například BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Nezávislé filmy s Vodo","FAQ_10_L4":"Online vysílání her pomocí Twitch.tv","FAQ_10_P3":"Kromě toho existuje mnoho zdrojů obsahu poskytovaných pomocí služby Guidebox a doplňků Netflix, které se nepřehrávají zcela uvnitř služby Stremio, ale přesměrovávají se na danou službu. Například doplněk Guidebox by vám poskytl výběr filmů, které můžete v USA streamovat zdarma, ze služeb jako TubiTV a Crackle.","FAQ_11_H1":"Stremio se nechce nainstalovat, co mám dělat?","FAQ_11_P1":"Pokud používáte Windows, zkuste ${1}tento alternativní instalátor${2}.","FAQ_11_P2":"Pokud používáte systém Mac OS X, upozorňujeme, že nepodporujeme nic staršího než OS X Mavericks (10.9).","FAQ_11_P3":"Pokud používáte Linux, vězte, že v současné době podporujeme pouze 64bitový (x64) Linux.","FAQ_11_P4":"Pokud se vám stále nedaří vyřešit váš problém, napište nám na naši ${1}Facebookovou skupinu${2}.","FAQ_12_H1":"Proč si můj antivirový program stěžuje? Je Stremio bezpečné?","FAQ_12_P1":"Ujišťujeme vás, že Stremio je ${1}100% cčistý ${2}.","FAQ_12_P2":"Váš antivirový program si stěžuje, protože v našem instalačním programu je reklama, kterou některé antivirové programy rozpoznávají jako ad-ware.","FAQ_12_P3":"Pokud si stále nejste jisti, můžete vyzkoušet náš ${1}alternativní instalátor${2}.","FAQ_13_H1":"Jak mohu vytvořit doplněk?","FAQ_13_P1":"Pro začátek doporučujeme zkontrolovat náš systémový modul ${1}addons${2} na GitHubu.","FAQ_13_P2":"Poté můžete postupovat podle výukového programu ${1}Hello World${2}.","FAQ_13_P3":"Pokud nemáte žádné programátorské dovednosti, napište svůj nápad na ${1}komunitu Reddit${2} a kontaktujte nás s nápadem na doplněk na ${3}office@stremio.com${4}.","FAQ_14_H1":"Jak se publikují doplňky?","FAQ_14_P1":"Když vytvoříte doplněk a hostitele a do manifestu vložíte pole koncového bodu, které ukazuje na adresu funkčního doplňku, doplněk se automaticky zveřejní v našem katalogu ${1}Addon catalogue${2}.","FAQ_14_P2":"K tomu dochází proto, že serverová část modulu stremio-addons automaticky volá naše rozhraní API a oznamuje doplněk. Jakmile naše rozhraní API potvrdí váš koncový bod jako platný doplněk, začne se zobrazovat v katalogu.","FAQ_15_H1":"Mohu spustit Stremio v prohlížeči?","FAQ_15_P1":"Momentálně ne, ale už se to blíží!","FAQ_15_P2":"Pokud jste zvědaví na verzi Alpha, můžete si ji prohlédnout zde: ${1}alpha4.strem.io${2}. Mějte na paměti, že streamování je v této alfě vypnuté. Podporujeme prohlížeče Chrome, Firefox, Opera a Edge.","FAQ_16_H1":"Casting do TV nefunguje / titulky nefungují","FAQ_16_P1":"Odesílání do televizoru využívá technologii DLNA, která je u různých značek a modelů televizorů velmi nejednotná. Z tohoto důvodu nemáme možnost testovat ji ve všech případech, takže zdaleka není dokonalá. Přesto na jejím vylepšování neustále pracujeme, ale nemůžeme vám poskytnout časový odhad, kdy DLNA začne s vaším televizorem správně fungovat.","FAQ_16_P2":"Pokud se televizor nezobrazuje ani v nabídce obsazení, zkuste zakázat síťové připojení a znovu jej povolit (v systému Windows klikněte pravým tlačítkem myši na položku Síť a použijte příkaz Povolit/Zakázat) a restartujte směrovač, televizor a počítač.","FAQ_16_P3":"Pokud se stále potýkáte s problémy, můžete nám pomoci zasláním informací o značce a modelu televizoru na adresu ${1}office@stremio.com${2}.","FAQ_16_P4":"Do té doby doporučujeme Chromecast, který velmi dobře podporujeme, nebo jednoduše připojit televizor k počítači pomocí kabelu HDMI.","FAQ_17_H1":"Co mám dělat, když Stremio zamrzne a/nebo spadne?","FAQ_17_P1":"Pokud používáte systém Windows 7 s antivirovým programem AVG, máme s touto kombinací problém. Problém je v samotném AVG a na naší straně neexistuje žádný rozumný způsob, jak jej vyřešit. Výjimky ani vypnutí antiviru bohužel nepomohou. Jediným řešením je nahradit AVG něčím jiným.","FAQ_17_P2":"Pokud to není problém, ale stále používáte systém Windows, aktualizujte jej na nejnovější servisní balíček a aktualizujte/přeinstalujte ovladače grafického procesoru a pak to zkuste znovu.","FAQ_17_P3":"Pokud problém stále není vyřešen nebo používáte Mac či Linux, napište nám přesné informace o problému na ${1}naší skupinu na Facebooku${2}.","FAQ_18_H1":"Jak mohu vytvořit doplněk?","FAQ_18_P1":"Pro začátek doporučujeme zkontrolovat náš systémový modul ${1}addons${2} na GitHubu.","FAQ_18_P2":"Poté můžete postupovat podle výukového programu ${1}Hello World${2}.","FAQ_18_P3":"Pokud nemáte žádné programátorské dovednosti, napište svůj nápad na ${1}komunitu Reddit${2} a kontaktujte nás s nápadem na doplněk na ${3}office@stremio.com${4}.","FAQ_19_H1":"Proč Stremio zabírá místo na disku?","FAQ_19_P1":"Stremio má místní mezipaměť pro dočasné uchovávání streamovaných video souborů.","FAQ_19_P2":"To má dvě výhody: zaprvé umožňuje Stremio předem vyrovnat video do vyrovnávací paměti, aby bylo zajištěno plynulejší streamování. Zadruhé uchovává videa v místní mezipaměti, takže je můžete dále sledovat offline.","FAQ_19_P3":"Množství, které Stremio uchovává, závisí na nastavení vyrovnávací paměti na panelu Nastavení. Stremio může na vašem disku uchovávat až nastavené množství (např. 2 GB), pokud není aktuálně streamované video větší než toto množství, v takovém případě musí vyčlenit dostatek úložného prostoru, aby jej uchoval až do doby, kdy jej budete streamovat.","FAQ_20_H1":"Kde se nachází složka mezipaměti?","FAQ_20_P1":"V systému Windows je to stremio-cache v jednotce, kterou jste vybrali v Nastavení (např. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"V systému MacOS je to \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"V systému Linux je to \\"~/.stremio/stremio-cache\\" nebo \\"~/stremio-cache\\"","FAQ_21_H1":"Zobrazí se mi chyba \\"Streaming server nebyl nalezen\\", co mám dělat?","FAQ_21_P1":"Pokud se vám tato chyba zobrazí, znamená to jednu z několika možností:","FAQ_21_P2":"1) Snažíte se použít doplněk podporovaný zdrojem YouTube/BitTorrent prostřednictvím naší verze ${1}web${2}. V takovém případě byste si měli nainstalovat naši verzi pro stolní počítače z ${3}našich webových stránek${4}.","FAQ_21_P3":"2) Něco je špatně s vaší instalací Stremio. V takovém případě zkuste znovu nainstalovat naši nejnovější verzi pro stolní počítače z ${1}webové stránky${2}. Pokud to nepomůže, zkuste vypnout antivirové programy a brány firewall, restartovat počítač a zkusit to znovu. Pokud ani to nepomůže, napište nám do naší ${3}skupiny na Facebooku${4}.","FAQ_22_H1":"Většinu doplňků v systému iOS nevidím/používám","FAQ_22_P1":"Vzhledem k omezením v podmínkách obchodu Apple App Store jsme aplikaci pro iOS omezili pouze na určitou sadu doplňků.","FAQ_22_P2":"Ale buďte si jisti - v budoucnu se objeví další doplňky pro iOS a možná přidáme také integraci, která vám umožní používat všechny doplňky Stremio díky připojení aplikace iOS ke Stremio Streaming Serveru."}')},4806:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serie","TYPE_tv":"Kanal","TYPE_channel":"Kanal","TYPE_other":"Andet","TYPE_movie_PL":"Film","TYPE_series_PL":"Serier","TYPE_tv_PL":"TV","TYPE_channel_PL":"YouTube","TYPE_other_PL":"Andrer","TYPE_ALL":"All","VIDEO":"Video","BACK":"Tilbage","MORE":"Mere","DONE":"Færdig","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Opdag","Board":"Væg","Library":"Bibliotek","My Library":"Mit Bibliotek","Calendar":"Kalender","NOTIFICATION_ONLINE":"Du er nu online","NOTIFICATION_OFFLINE":"Du er nu offline","INTERNET_CONNECTION":"Netværk forbindelse","STORAGE_FULL_TITLE":"OBS: Ikke mere ledig plads","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"Søg efter","SEARCH_NO_RESULTS":"Ingen resultater fundet","SEARCH_EXPLANATION_CONTENT":"Søg efter film, serier, YouTube og TV kanaler","SEARCH_EXPLANATION_PEOPLE":"Søg efter skuespiller, direktører og forfatterer","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Tilføj til Bibliotek","REMOVE_FROM_LIB":"Fjern fra Bibliotek","ADDED_TO_LIB":"Tilføjet til Bibliotek","REMOVED_FROM_LIB":"Fjernet fra Bibliotek","TRAILER":"Trailer","WATCH_TRAILER":"Se Trailer","WATCH_NOW":"Afspil","SHOW":"Vis","SHOW_MOVIE":"Vis film","WATCH_RANDOM":"Se tilfældig","IMDB_RATING":"IMDb Bedømmelse","YEAR":"År","DIRECTOR":"Instruktør","WRITER":"Skrevet af","LEAD_ACTORS":"Hovedroller","CAST":"Medvirkende","CREW":"Filmhold","SHOW_MORE_CAST":"Se flere »","AIRED":"Sendt","SEASONS":"Sæsoner","GENRE":"Genre","CATALOG":"Katalog","SUMMARY":"Opsummering","SHOW_MORE":"Show More","SIMILAR":"Lignende","UPCOMING":"Kommende","ENDED":"Sluttet","DURATION":"Længde","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"Kategori","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Søg videoer","SEARCH_PLACEHOLDER":"Søg eller indsæt magnet link","ADDON":"Tilføjelse","ADDONS":"Tilføjelser","OFFICIAL":"Officielle","ADDONS_OFFICIAL":"Officielle Stremio tilføjelser","ADDONS_POPULAR":"Populære nær dig","ADDON_FREE":"Gratis","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Abonnement","ADDON_STREAM_GEORESTRICTED":"Ikke tilgængeligt i dit område","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Lokal Fil","SHARE_ADDON":"Del tilføjelse","AVAILABLE_STREAMS":"Tilgængelige Streams","NO_STREAM":"Ingen tilgængelige streams","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For flere streams, vær venlig at installere flere tilføjelser","STREAM_NOT_SUPPORTED":"Den valgte stream er ikke understøttet på denne platform.","ADDON_CATALOGUE":"Vis alle tilføjelser »","ADDON_CATALOGUE_MORE":"Flere tilføjelser »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Der opstod fejl under tilføjelse af repository","ADDON_ADD_ERR":"Der skete en fejl under tilføjelse af tilføjelsen","ERR_ADDON_PROTECTED":"Beskyttet tilføjelse","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Noget gik galt - authentificering slog måske fejl","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Film stadig i biografen","WATCH_IN_CINEMA":"se den i din lokale biograf","IN_THEATER":"I biografen","GET_TICKETS":"Køb biletter","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Denne kanal er ikke indekseret endnu.
    Kom tilbage om et par minutter.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Tilføj til dit bibliotek og bliv notificeret når den er tilgængelig","GET_NOTIFIED_WHEN_AVAILABLE":"Du vil blive notificeret når den er tilgængelig","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streamer fra","CASTING_TO":"Afspiller på","NETWORK_STATUS":"Netværksstatus","STREAM_SPEED":"Hastighed:","STREAM_BUFFERED":"Downloadet:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Aktive:","PEERS_CONNECTED":"Forbundet:","PEERS_WAITING":"Venter:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"Henter..","PLAYING_LOCAL":"afspiller fra lokal fil","PLAYING_CACHE":"afspiller fra cache","WRONG_SUBS":"Forkert tekst?","ERR_SUBS_LOADING_TITLE":"Fejl under indlæsning af undertekster","ERR_SUBS_LOADING":"Kunne ikke indlæse undertekster: det kunne være et problem med tilføjelsen du bruger eller med din netværk forbindelse","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Følgende underteksts tilføjelse fejlede","ERR_CASTING_UPDATE_TITLE":"Kunne ikke opdatere casting enheds info: streaming serveren er måske offline","CHOOSE_DEVICE":"Vælg enhed at afspille på","NO_CAST_DEVICES":"Ingen casting enheder tilgængelige.","NO_SETTINGS":"Ingen instillinger tilgængelige.","PHONE_TABLET":"Telefon / Tablet","SUBTITLES":"Undertekster","SUBTITLES_CHANGE":"Ændre undertekster","SUBTITLES_CHANGE_NONE":"Der er ikke flere undertekster til dette sprog, desværre.","SUBTITLES_CHANGE_ACIVE":"Undertekst #{{subtitlesDialog.activeIdx + 1}} er aktiveret. Klik \\"Forsæt\\" for at aktivere #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativt,","SUBTITLES_ADJUST_DELAY":"Juster undertekst forsinkelse:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Eller brug G / H taster under afspilning for at justere.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: du kan bruge G / H taster under afspilning for at justere.","SUBTITLES_DELAY":"Undertekst forsinkelse:","SUBTITLES_LOADING":"Indlæser undertekster...","SUBTITLES_UNAVAILABLE":"Ingen eksterne undertekster tilgængelige","SUBTITLES_DISABLED":"Slået fra","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Lyd","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sæson","EPISODE":"Episode","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"tendens","SORT_RECENT":"seneste","SORT_ALPHABET":"alfabetisk","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"bedømmelser","SORT_WATCHED":"set","SORT_YEAR":"år","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Nyt til dig","New Episodes":"Nye episoder","New Videos":"Nye Videoer","Recommendations":"Anbefalinger","LIBRARY_RESUME":"Genoptag","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Detaljer","LIBRARY_RESUME_DISMISS":"Afvis","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Indhold","DISCOVER_TOP":"Populære","DISCOVER_OSCAR":"Oscar Vindere","DISCOVER_WARNING_TITLE":"Ups!","DISCOVER_EMPTY_CATALOG":"Tilføjelsen returnerede tomt indhold.","DISCOVER_ADULT_WARNING":"Inholdet er kun synligt for voksne. Er du 18+?","DISCOVER_NOADDON_WARNING":"Advarsel: intet Stremio tilføjelse aktiveret for denne type. Viser gemte ting, intet vil blive opdateret.","DISCOVER_LOAD_ERR":"Indholdet kunne ikke indlæses, fejl opstået.","DISCOVER_ADDON_UNINSTALLED":"Indholdet er ikke længere tilgængeligt, måske har du afinstalleret tilføjelsen.","UNINSTALL_THIS_ADDON":"Afinstaler tilføjelsen","ERR_ADDON_NOT_INSTALLED":"Tilføjelsen er ikke instaleret. Instaler nu?","DETAIL_RECEIVE_NOTIF_SERIES":"Modtag notifikationer for nye episoder","DETAIL_RECEIVE_NOTIF_VIDEOS":"Modtag notificationer for nye videoer","SIDEBAR_SHOW_STREAMS":"Vis streams","RELAUNCH":"Genindlæs nu!","UPGRADE":"Opdater til seneste Stremio version","RELOAD_UI":"Genindlæs brugerflade","MANUAL_UPDATE_TITLE":"Opdater din Stremio version","MANUAL_UPDATE_LINE1":"Du kører en gammel version af Stremio hvilket ikke er anbefalet.","MANUAL_UPDATE_LINE2":"Opdater venligst så hurtigt som muligt.","BUTTON_UPDATE_LATTER":"Ikke nu","BUTTON_UPDATE_NOW":"Opdater","ANONYMOUS_USER":"Anonym bruger","DONT_HAVE_ACC":"Har du ikke en konto?","HAVE_ACC":"Har du allerede en konto?","PASSWORD":"Adgangskode","PASSWORD_CONFIRM":"Bekræft adgangskode","EMAIL":"E-mail","FB_LOGIN":"Login med Facebook","FB_NOTHINGSHARED":"Intet bliver delt uden din tilladelse","FB_NOPOST":"Vi slår aldrig noget op på dine vegne","OR":"eller","I_ACCEPT":"Jeg accepterer","I_ACCEPT_BY_CLICKING":"Ved at klikke overstående knap bekræfter jeg at jeg accepterer ","TOS":"Betingelser","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Kodeord ikke korrekt","SIGN_UP":"Opret","SIGN_UP_EMAIL":"Tilmeld med email","CLICK_TO_SIGN_UP":"Klik her for at tilmelde dig.","LOG_IN":"Log ind","LOG_OUT":"Log ud","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Hjælp & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"Om Stremio","USER_PANEL":"Bruger Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Gæste log ind","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"Klik her","WRONG_PASSWORD":"Forkert kodeord. Har du glemt dit kodeord, ","SET_A_PASS":"Vælg kodeord","RESET_PASSWORD":"Reset kodeord","FORGOT_PASSWORD":"Glemt kodeord?","EMAIL_USED_WITH_FB":"Denne email er brugt til Facebook log ind.","INVALID_EMAIL":"Venligst intast en gyldig email addresse","INVALID_PASSWORD":"Venligst indtast et gyldigt kodeord","CONN_ERR":"Forbindelse fejl - Prøv igen senere.\\n\\nHvis fejl forsætter, deaktiver firewalls/anti-virus software (specielt Bitdefender).","IMPORT_FROM_GUEST":"Importer bibliotek fra din gæstekonto","RECEIVE_UPDATES_EMAIL":"Modtag opdateringer til din email fra Stremio","LOGIN_FAILED":"Login fejlede.","SIGNUP_FAILED":"Tilmelding fejlede.","SEARCH_FAILED":"Søgning fejlede","EMAIL_USED":"Denne email er allerede i brug.","WAITING_FB_LOGIN":"Logger ind med Facebook...","EXTERNAL_PLAYER_TITLE":"Afspil i extern afspiller","EXTERNAL_REMEMBER_PLAYER":"Husk valg?","EXTERNAL_ALWAYS_PLAY":"Ja","EXTERNAL_ONLY_ONCE":"Nej","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Fortæl os hvad du godt kan lide","INTRO_TASTE_LONG":"Fortæl os om hvad du gerne vil se","INTRO_TASTE_PICK":"Vælg {{interestsRemaining}} interesser","INTRO_TASTE_PICK_MORE":"Vælg {{interestsRemaining}} flere interesser","INTRO_TASTE_HELP_US":"Hjælp os med at lære mere om dig.","INTRO_TASTE_CHOOSE_THESE":"Vælg nogle af disse:","INTRO_TASTE_CHOOSE_MIN":"Vælg mindst 3 kategorier","INTRO_TASTE_CHOOSE_MIN_ERR":"Du skal vælge mindst 3 kategorier!","INTRO_TASTE_LIFESTYLE":"Livsstil","INTRO_TASTE_SPORTS":"Sport","INTRO_TASTE_FOOD_HEALTH":"Mad & Sunhed","INTRO_TASTE_BEAUTY_FASHION":"Skønhed & Mode","INTRO_TASTE_NEWS":"Nyheder","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Videnskab & Uddannelse","INTRO_TASTE_MUSIC":"Musik","INTRO_TASTE_TRAVEL":"Rejse","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Komedie","INTRO_TASTE_DIY":"Gør det selv","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Biograf","ADDON_NOT_SUPPORTED":"Den valgte tilføjelse er ikke understøttet på denne platform.","ADDON_DISCLAIMER":"Brug af tredjeparts tilføjelser vil altid være dit eget ansvar og love og regler kan være forskellige fra land til land.","ADDON_ACTIVATE":"Aktiver denne tilføjelse?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Hvad er nyt","BUTTON_CONTINUE":"Fortsæt","BUTTON_ACTIVATE":"Aktiver","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Annuller","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Dit bibliotek er tomt. Find ud af hvor brugbart det er :) ","HOW_START":"Tilføj indhold til dit bibliotek","LIB_EMPTY_CAL":"Din kalender viser serier fra dit bibliotek.","HOW_START_CAL":"Tilføj indhold til dit bibliotek","LIB_EMPTY_BOARD":"Din væg viser notifikationer & anbefalinger relateret til dit bibliotek.","HOW_START_BOARD_WAIT":"Tilføj indhold til dit bibliotek og vent et par minutter til indholdet er opdateret :)","HOW_START_BOARD":"Sådan tilføjer du indhold","IMPORT_FB":"Importer ting du kan lide fra Facebook","IMPORT_TRAKT":"Import your media library from Trakt","IMPORT_DISCOVER":"Find interessante ting fra Opdag","IMPORT_DISK":"Importer film og serier fra din computer","PLEASE_CREATE_ACC":"Venligst opret en konto for at aktivere Bibliotek & Væg.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from Discover","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your local disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Kør ved opstart","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Importer fra Facebook","SETTINGS_IMPORT_DISK":"Importer fra computer","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Abonner på kalender","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Ændre kodeord","SETTINGS_TOS":"Servicevilkår","SETTINGS_SUPPORT":"Kontakt support","SETTING_LANGUAGE":"Sprog","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Afslut","CONNECTED":"Connected","AUTHENTICATE":"Godkend","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Vælg caching drev","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januar","February":"Februar","March":"Marts","April":"April","May":"Maj","June":"Juni","July":"Juli","August":"August","September":"September","October":"Oktober","November":"November","December":"December","Monday":"Mandag","Tuesday":"Tirsdag","Wednesday":"Onsdag","Thursday":"Torsdag","Friday":"Fredag","Saturday":"Lørdag","Sunday":"Søndag","Action":"Action","Comedy":"Komedie","War":"Krig","Family":"Familie","Animation":"Animation","Adventure":"Eventyr","Fantasy":"Fantasy","Crime":"Krimi","Mystery":"Mystik","Romance":"Romantik","Drama":"Drama","Horror":"Gyser","Thriller":"Spænding","Sci-Fi":"Sci-Fi","Music":"Musik","Biography":"Biografi","Documentary":"Dokumentar","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"Nyheder","History":"Historie","Game-Show":"Gameshow","Reality-TV":"Reality TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Underholdning","Gaming":"Gaming","From TV":"Fra TV","Lifestyle":"Livsstil","Science & Education":"Videnskab & Uddannelse","Cooking & Health":"Madlavning & Helbred","Beauty & Fashion":"Skønhed & Mode","Sports":"Sport","News & Politics":"Nyheder & Politik","How-to & DIY":"Gør det selv","Tech":"Teknologi","Automotive":"Biler","Causes & Non-Profits":"Sager & Non-profit","Movies":"Film","Uk Live Tv":"UK Direkte TV","Fashion":"Mode","Business News Radio":"Business Nyheds Radio","Business Tv":"Business TV","Cars & Auto":"Biler & Auto","Comedy Radio":"Komedie Radio","Lifestyle Radio":"Livsstils Radio","News Tv":"Nyheds TV","Food And Wine":"Mad & Vin","Latino Tv":"Latino TV","Shopping Tv":"Shopping TV","Religion":"Religion","Kids":"Børn","Body & Soul":"Krop & Sjæl","Education":"Uddannelse","Indian Tv":"Indisk TV","Extreme Sports":"Ekstremsport","Middle Eastern Tv":"TV fra Mellemøsten","Celebrity Tv":"Kendis TV","Science Tv":"Videnskabs TV","Bikini babe":"Bikini Piger","Outdoors":"udendørs","German Tv":"Tysk TV","French Tv":"Fransk TV","Italian Tv":"Italiensk TV","Gamer Tv":"Spil TV","Travel":"Rejse TV","Asian Tv":"Asiatisk TV","Entertainment":"Underholdning","News Radio":"Nyheds Radio","Music Radio":"Musik Radio","Language Learning":"Sprog & Læring","Science Radio":"Videnskabs Radio","Tech Radio":"Teknologi Radio","Science & Technology Vod":"Videnskab & Teknologi VOD","new video":"ny video","new episode":"ny episode","new movie":"ny film","recommended":"anbefalet","we recommend":"vi anbefaler","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Afvis notifikationer","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Del","CTX_COPY_SHARE_LINK":"Kopier dele link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Vis","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Se på","CTX_WATCH":"Se","CTX_WATCHED":"Set","CTX_WATCH_BEGINNING":"Se fra begyndelsen","CTX_WATCH_MOBILE":"Se på en mobil enhed","CTX_REWIND":"Tilbage til begyndelsen","CTX_MARK_WATCHED":"Marker som set","CTX_MARK_NON_WATCHED":"Marker som ikke set","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Modtag nye notifikationer","CTX_REMOVE_CACHE":"Fjern cache","CTX_REMOVE_CACHE_EP":"Fjern episode fra cache","CTX_OPEN_CONTAINING":"Åben mappe","CTX_REMOVE":"Fjern fra bibliotek","CTX_AVAILABLE_OFFLINE":"Tilgængelig Offline","CTX_PAUSED":"Pause","CTX_ALWAYS_ON_TOP":"Altid øverst","CTX_FULLSCREEN":"Fuldskærm","CTX_WRONG_SUBS":"Forkerte undetekster?","CTX_REPORT_ISSUES":"Rapporter problem","CTX_COPY":"Kopier","CTX_PASTE":"Indsæt","CTX_CLEAR":"Ryd","CTX_CLEAR_RECENT_SEARCHES":"Ryd seneste søgninger","HELLO_THERE":"Hej","HOPE_YOU_ENJOY":"Vi håber du nyder Stremio og at det er et af dine favorit programmer allerede!","WHO_ARE_WE":"Hvem er vi? Vi er holded bag - to gutter som har arbejdet hårdt de sidste 3 år, med et samlet mål - at gøre dette produkt bedre og bedre.","SUPPORT_US":"Hvis du kan lide Stremio, hvis Stremio er værdifuldt for dig - støt os!","SPREAD_THE_WORD":"Del med dine venner nu, spred ordet omkring Stremio","MORE_PEOPLE":"Nu flere folk der bruger Stremio, nu bedre vil det blive!","SEND_A_LINK":"Eller send et link til vores hjemmeside","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"provides","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},1145:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serie","TYPE_tv":"Fernsehkanal","TYPE_channel":"Kanal","TYPE_other":"Andere","TYPE_movie_PL":"Filme","TYPE_series_PL":"Serien","TYPE_tv_PL":"Fernsehkanäle","TYPE_channel_PL":"Kanäle","TYPE_other_PL":"Andere","TYPE_ALL":"All","VIDEO":"Video","BACK":"Zurück","MORE":"Mehr","DONE":"Erledigt","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Entdecken","Board":"Tafel","Library":"Bibliothek","My Library":"Meine Bibliothek","Calendar":"Kalender","NOTIFICATION_ONLINE":"Sie sind jetzt online","NOTIFICATION_OFFLINE":"Sie sind gerade offline.","INTERNET_CONNECTION":"Netzwerkverbindung","STORAGE_FULL_TITLE":"Warnung: Speicher voll!","STORAGE_FULL_TEXT":"Stremio kann Ihre Einstellungen, Präferenzen oder Anmeldeinformationen nicht speichern. Erwägen Sie, Stremio neu zu starten oder zu installieren.","SEARCH":"Suche","SEARCH_NO_RESULTS":"Es wurden keine Ergebnisse gefunden","SEARCH_EXPLANATION_CONTENT":"Suche nach Filmen, Serien, YouTube- und Fernsehkanälen","SEARCH_EXPLANATION_PEOPLE":"Suche nach Schauspielern, Regisseuren und Autoren","SEARCH_PASTE_LINKS":"HTTP- und Magnet-Links einfügen","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Zur Bibliothek hinzufügen","REMOVE_FROM_LIB":"Aus Bibliothek entfernen","ADDED_TO_LIB":"Zur Bibliothek hinzugefügt","REMOVED_FROM_LIB":"Aus der Bibliothek entfernt","TRAILER":"Filmvorschau","WATCH_TRAILER":"Filmvorschau ansehen","WATCH_NOW":"Jetzt ansehen","SHOW":"Anzeigen","SHOW_MOVIE":"Zeige Film","WATCH_RANDOM":"Zufälliges ansehen","IMDB_RATING":"IMDb-Bewertung","YEAR":"Jahr","DIRECTOR":"Regisseur","WRITER":"Autor","LEAD_ACTORS":"Hauptdarsteller","CAST":"Besetzung","CREW":"Crew","SHOW_MORE_CAST":"Mehr anzeigen »","AIRED":"Ausgestrahlt","SEASONS":"Staffeln","GENRE":"Genre","CATALOG":"Katalog","SUMMARY":"Zusammenfassung","SHOW_MORE":"Zeige mehr","SIMILAR":"Ähnlich","UPCOMING":"Bevorstehend","ENDED":"Beendet","DURATION":"Dauer","FEATURED":"Vorgestellt","METADATA":"Metadaten","CATEGORY":"Kategorie","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Videos suchen","SEARCH_PLACEHOLDER":"Magnet-Link suchen oder einfügen","ADDON":"Addon","ADDONS":"Addons","OFFICIAL":"Offiziell","ADDONS_OFFICIAL":"Offizielle Stremio-Addons","ADDONS_POPULAR":"In Ihrer Gegend beliebt","ADDON_FREE":"frei","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Abonnement","ADDON_STREAM_GEORESTRICTED":"In Ihrer Gegend nicht verfügbar","ADDON_STREAM_OFFLINECACHE":"Offline-Zwischenspeicher","ADDON_STREAM_LOCALFILE":"Lokale Datei","SHARE_ADDON":"Addon teilen","AVAILABLE_STREAMS":"Verfügbare Streams","NO_STREAM":"Keine Streams verfügbar","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Um mehr Streams bitte weitere Addons installieren","STREAM_NOT_SUPPORTED":"Ausgewählter Stream wird auf dieser Plattform nicht unterstützt.","ADDON_CATALOGUE":"Alle Addons anzeigen »","ADDON_CATALOGUE_MORE":"Mehr Addons »","REPO_ADDED":"Repositorium hinzugeügt","ADDON_REPO_EXIST_ERR":"Dieses Addons-Repositorium existiert bereits","ADDON_REPO_ERR":"Beim Hinzufügen des Repositoriums ist ein Fehler aufgetreten","ADDON_ADD_ERR":"Beim Hinzufügen des Addons ist ein Fehler aufgetreten","ERR_ADDON_PROTECTED":"Geschütztes Addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Etwas ist schief gelaufen - die Authentifizierung ist möglicherweise fehlgeschlagen","ERR_NOT_COLLECTION_URL":"Keine Sammlungs-URL","ERR_NOT_ADDON_URL":"Keine Addon-URL","ERR_DETECTFROMURL":"Kann nicht aus der URL erkannt werden","ADDON_DUPLICATE_WARNING":"Warnung: dupliziertes Addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Daten exportieren","ADDON_PULL_FAILED":"Herunterladen des Addons fehlgeschlagen","REFRESH_ON_CLICK":"Hier klicken, um es erneut zu versuchen","STILL_IN_THEATER":"Film immer noch im Kino","WATCH_IN_CINEMA":"Sehen Sie ihn in Ihrem lokalen Kino an","IN_THEATER":"Im Kino","GET_TICKETS":"Karten besorgen","UPCOMING_EPISODE":"Bevorstehende Folge","UPCOMING_EPISODE_MESSAGE":"Diese Folge wird ausgestrahlt am","MISSING_DATE_EPISODE":"Für diese Folge gibt es noch kein Datum","MISSING_DATE_EPISODE_MESSAGE":"Diese Folge wurde möglicherweise noch nicht ausgestrahlt","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.
    Please come back in a few minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Fügen Sie es zu Ihrer Bibliothek hinzu, um benachrichtigt zu werden, sobald es verfügbar ist.","GET_NOTIFIED_WHEN_AVAILABLE":"Sie werden benachrichtigt, sobald es verfügbar ist.","WARNING_STREAMING_SERVER":"Warnung: lokaler Streaming-Server nicht gefunden. Streaming von lokalen Dateien, YouTube und BitTorrent wird nicht verfügbar sein.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warnung: Dieses Video wird von Ihrer Hardware möglicherweise nicht unterstützt. Denken Sie daran, dass die Wiedergabe langsam sein könnte.","PLAYER_ERROR":"Hoppla, Abspielerfehler","PLAYER_ERROR_LOOKSLIKE":"Es sieht aus wie","PLAYER_ORIENTATION":"Abspielerausrichtung","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Gesperrt","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Abspielerausrichtung im Querformat fixiert","PLAYER_ORIENTATION_SENSOR":"Abspielerausrichtung automatisch (Sensor)","PLAYER_PLAYBACK_SPEED":"Wiedergabegeschwindigkeit","PLAYER_PLAYBACK_ERROR":"Wiedergabefehler, bitte versuchen Sie es erneut","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unbekannter Fehlerr","PLAYER_PLAYBACK_ERROR_DEFAULT":"Entschuldigung, dieses Video kann nicht von {{productName}} abgespielt werden.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Als Nächstes im Programm","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Ablehnen","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Jetzt ansehen","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streamt von","CASTING_TO":"Casting nach","NETWORK_STATUS":"Netzwerkstatus","STREAM_SPEED":"Stream-Geschwindigkeit:","STREAM_BUFFERED":"Gepuffert:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Aktiv:","PEERS_CONNECTED":"Verbunden:","PEERS_WAITING":"Warten:","TRANSCODING_WARNING":"Warnung: Video wird transkodiert.","STREAM_LOADING":"Ladevorgang...","PLAYING_LOCAL":"Wiedergabe aus lokaler Datei","PLAYING_CACHE":"Wiedergabe aus Zwischenspeicher","WRONG_SUBS":"Falsche Untertitel?","ERR_SUBS_LOADING_TITLE":"Fehler beim Laden der Untertitel","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Die folgenden Untertitel-Addons sind fehlgeschlagen","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Wählen Sie ein Gerät aus, auf dem Sie zuschauen möchten","NO_CAST_DEVICES":"Keine Casting-Geräte vorhanden.","NO_SETTINGS":"Keine Einstellungen verfügbar","PHONE_TABLET":"Telefon / Tablet","SUBTITLES":"Untertitel","SUBTITLES_CHANGE":"Untertitel ändern für ","SUBTITLES_CHANGE_NONE":"Es gibt keine anderen Untertitel für diese Sprache, Entschuldigung.","SUBTITLES_CHANGE_ACIVE":"Derzeit sind Untertitel #{{subtitlesDialog.activeIdx + 1}} aktiviert. Klicken Sie auf \\"Fortsetzen\\", um Untertitel #{{subtitlesDialog.pickedIdx + 1}}. zu aktivieren","SUBTITLES_OR":"Alternativ,","SUBTITLES_ADJUST_DELAY":"Untertitelverzögerung anpassen:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Oder verwenden Sie die Tasten G / H zum Anpassen während der Wiedergabe.","SUBTITLES_ADJUST_DELAY_TIP":"TIPP: Sie können die Tasten G / H zum Anpassen während der Wiedergabe verwenden.","SUBTITLES_DELAY":"Untertitelverzögerung:","SUBTITLES_LOADING":"Untertitel werden geladen...","SUBTITLES_UNAVAILABLE":"Keine externen Untertitel verfügbar","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Standard-Sprache","DEFAULT_SECONDARY_LANGUAGE":"Standard-Sekundärsprache","SEASON":"Staffel","EPISODE":"Episode","SPECIAL":"Special","SORT":"sortieren","SORT_BY":"Sortieren nach","FILTER":"filtern","SORT_TRENDING":"im Trend","SORT_RECENT":"kürzlich","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"Bewertung","SORT_WATCHED":"gesehen","SORT_YEAR":"Jahr","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Neu für Sie","New Episodes":"Neue Episoden","New Videos":"Neue Videos","Recommendations":"Empfehlungen","LIBRARY_RESUME":"Fortsetzen","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"Ablehnen","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Ausgewählt","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oscar-Gewinner","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"Dieses Addon liefert leeren Inhalt.","DISCOVER_ADULT_WARNING":"Diese Inhalte sind nur für Erwachsene sichtbar. Sind Sie über 18?","DISCOVER_NOADDON_WARNING":"Warnung: Für diesen Typ ist kein Stremio-Addon aktiv. Gespeicherte Elemente werden angezeigt, nichts wird hier aktualisiert.","DISCOVER_LOAD_ERR":"Diese Inhalte konnten nicht geladen werden, da ein Fehler vorlag.","DISCOVER_ADDON_UNINSTALLED":"Diese Inhalte sind nicht mehr verfügbar. Möglicherweise wurde das Addon deinstalliert.","UNINSTALL_THIS_ADDON":"Dieses Addon deinstallieren","ERR_ADDON_NOT_INSTALLED":"Dieses Addon ist nicht installiert. Jetzt installieren?","DETAIL_RECEIVE_NOTIF_SERIES":"Benachrichtigungen über neue Episoden erhalten","DETAIL_RECEIVE_NOTIF_VIDEOS":"Benachrichtigungen über neue Videos erhalten","SIDEBAR_SHOW_STREAMS":"Streams zeigen","RELAUNCH":"Jetzt neu starten!","UPGRADE":"Neue Version ist verfügbar! Aktualisieren Sie auf die neueste Stremio-Version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Aktualisieren Sie Ihre Stremio-Version","MANUAL_UPDATE_LINE1":"Sie nutzen eine veraltete Version von Stremio, was nicht empfohlen wird.","MANUAL_UPDATE_LINE2":"Bitte aktualisieren Sie schnellstmöglich.","BUTTON_UPDATE_LATTER":"Nicht jetzt","BUTTON_UPDATE_NOW":"Aktualisieren","ANONYMOUS_USER":"Anonymer Benutzer","DONT_HAVE_ACC":"Sie haben kein Konto?","HAVE_ACC":"Sie haben bereits ein Konto?","PASSWORD":"Passwort","PASSWORD_CONFIRM":"Passwort bestätigen","EMAIL":"E-Mail","FB_LOGIN":"Mit Facebook anmelden","FB_NOTHINGSHARED":"Ohne Ihre Berechtigung wird nichts geteilt","FB_NOPOST":"Wir werden nichts in Ihrem Namen posten","OR":"oder","I_ACCEPT":"Ich akzeptiere die","I_ACCEPT_BY_CLICKING":"Wenn Sie auf die obige Schaltfläche klicken, bestätigen Sie, dass Sie die ","TOS":"Geschäftsbedingungen annehmen","MUST_ACCEPT_TERMS":"Sie müssen die Bedingungen annehmen","PASSWORDS_NOMATCH":"Passwörter stimmen nicht überein","SIGN_UP":"Registrieren","SIGN_UP_EMAIL":"Mit E-Mail registrieren","CLICK_TO_SIGN_UP":"Klicken Sie hier, um sich zu registrieren.","LOG_IN":"Anmelden","LOG_OUT":"Abmelden","EXIT_FULLSCREEN":"Vollbildmodus verlassen","ENTER_FULLSCREEN":"Vollbildmodus aktivieren","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Hilfe und Feedback","TERMS_OF_SERVICE":"Geschäftsbedingungen","PRIVACY_POLICY":"Datenschutzbestimmungen","ABOUT_STREMIO":"Über Stremio","USER_PANEL":"Nutzerpanel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Gast-Anmeldung","GUEST_LOGIN_NOTICE":"Gast-Anmeldung wird nicht empfohlen. Mit einer regelmäßigen Anmeldung kann Stremio Ihre Bibliothek synchronisieren und Sie können Benachrichtigungen für Ihre Lieblingserien/-kanäle erhalten. Sind Sie sicher, dass Sie fortfahren möchten?","GUEST_LOGIN_NOTICE_2":"Gast-Anmeldung wird nicht empfohlen - Sie werden keine Bibliotheks- und Tafelbenachrichtigungen synchronisiert haben, die wichtige Stremio-Funktionen sind. Sind Sie sicher, dass Sie fortfahren möchten?","CLICK_HERE":"Klicken Sie hier","WRONG_PASSWORD":"Falsche E-Mail-Adresse oder Passwort. Falls Sie Ihr Passwort vergessen haben, ","SET_A_PASS":"Passwort festlegen","RESET_PASSWORD":"Passwort zurücksetzen","FORGOT_PASSWORD":"Passwort vergessen?","EMAIL_USED_WITH_FB":"Diese E-Mail-Adresse wurde mit einer Facebook-Anmeldung verwendet.","INVALID_EMAIL":"Bitte geben Sie eine gültige E-Mail-Adresse ein","INVALID_PASSWORD":"Bitte geben Sie ein gültiges Passwort ein","CONN_ERR":"Verbindungsfehler - bitte versuchen Sie es später noch einmal.\\n\\nWenn dies weiterhin besteht, deaktivieren Sie Firewalls/Antivirus-Software (vor allem Bitdefender).","IMPORT_FROM_GUEST":"Bibliothek von Ihrem Gastkonto importieren","RECEIVE_UPDATES_EMAIL":"Aktualisierungen in Ihrer E-Mail von Stremio erhalten","LOGIN_FAILED":"Anmeldung fehlgeschlagen.","SIGNUP_FAILED":"Registrierung fehlgeschlagen.","SEARCH_FAILED":"Suche fehlgeschlagen","EMAIL_USED":"Diese E-Mail-Adresse wird bereits verwendet","WAITING_FB_LOGIN":"Anmeldung mit Facebook...","EXTERNAL_PLAYER_TITLE":"Wiedergabe im externen Player","EXTERNAL_REMEMBER_PLAYER":"Möchten Sie Ihre Auswahl in Erinnerung behalten?","EXTERNAL_ALWAYS_PLAY":"Ja","EXTERNAL_ONLY_ONCE":"Nein","BEST_FIT":"Best Fit","FIT_SCREEN":"in Bildschirm einpassen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Erzählen Sie uns, was Sie mögen","INTRO_TASTE_LONG":"Erzählen Sie uns, was Sie gerne sehen möchten","INTRO_TASTE_PICK":"Wählen Sie {{interestsRemaining}} Interessen aus","INTRO_TASTE_PICK_MORE":"Wählen Sie {{interestsRemaining}} weitere Interessen aus","INTRO_TASTE_HELP_US":"Helfen Sie uns, mehr über Sie zu erfahren.","INTRO_TASTE_CHOOSE_THESE":"Wählen Sie einige davon:","INTRO_TASTE_CHOOSE_MIN":"Wählen Sie mindestens 3 Kategorien aus","INTRO_TASTE_CHOOSE_MIN_ERR":"Sie müssen mindestens 3 Kategorien auswählen!","INTRO_TASTE_LIFESTYLE":"Lebensstil","INTRO_TASTE_SPORTS":"Sport","INTRO_TASTE_FOOD_HEALTH":"Essen & Gesundheit","INTRO_TASTE_BEAUTY_FASHION":"Schönheit & Mode","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Spielen","INTRO_TASTE_SCIENCE_EDU":"Wissenschaft & Bildung","INTRO_TASTE_MUSIC":"Musik","INTRO_TASTE_TRAVEL":"Reise","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Kino","ADDON_NOT_SUPPORTED":"Ausgewähltes Addon wird auf dieser Plattform nicht unterstützt.","ADDON_DISCLAIMER":"Die Verwendung von Drittanbieter-Addons unterliegt immer Ihrer Verantwortung und dem Recht der Gerichtsbarkeit, in der Sie sich befinden.","ADDON_ACTIVATE":"Dieses Addon aktivieren?","ADDON_REPO_ADD":"Addon-Repositoriums-URL","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Was gibt\'s Neues","BUTTON_CONTINUE":"Fortsetzen","BUTTON_ACTIVATE":"Aktivieren","BUTTON_ACTIVATED":"Aktiviert","BUTTON_CANCEL":"Abbrechen","BUTTON_SUBMIT":"Senden","BUTTON_DISMISS_ALL":"Alle ablehnen","BUTTON_VIEW_ALL":"Alle ansehen","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Ihre Bibliothek sieht leer aus. Finden Sie heraus, wie nützlich sie ist :) ","HOW_START":"So können Sie anfangen:","LIB_EMPTY_CAL":"Ihr Kalender zeigt die Serien in Ihrer Bibliothek an.","HOW_START_CAL":"So können Sie Serien hinzufügen:","LIB_EMPTY_BOARD":"Tafel zeigt Benachrichtigungen & Empfehlungen zu Ihrer Bibliothek an.","HOW_START_BOARD_WAIT":"Bitte fügen Sie ein paar Serien oder Kanäle zu Ihrer Bibliothek hinzu und geben uns ein paar Minuten zum Verarbeiten :)","HOW_START_BOARD":"So können Sie Serien & Filme zu ihr hinzufügen:","IMPORT_FB":"Importieren Sie Dinge von Facebook, die Sie mögen","IMPORT_TRAKT":"Importieren Sie Ihre Medienbibliothek von Trakt","IMPORT_DISCOVER":"Finden Sie interessante Sachen von Entdecken","IMPORT_DISK":"Importieren Sie Filme oder Shows, die Sie auf Ihrer lokalen Festplatte haben","PLEASE_CREATE_ACC":"Bitte erstellen Sie ein Konto, um das Synchronisieren der Bibliothek & Tafel zu ermöglichen.","IMPORT_DISCOVER_SIGNUP":"Registrieren Sie sich und finden Sie interessante Sachen von Entdecken","IMPORT_DISK_SIGNUP":"Registrieren Sie sich und importieren Sie Filme oder Shows, die Sie auf Ihrer lokalen Festplatte haben","LIB_EMPTY_CLOUD":"Cloud-Bibliothek","LIB_EMPTY_CLOUD_DESC":"Persönliche Cloud-Bibliothek auf allen Geräten synchronisiert","LIB_EMPTY_EARLY":"Früher Vogel","LIB_EMPTY_EARLY_DESC":"Erhalten Sie Benachrichtigungen für neue Episoden","LIB_EMPTY_PERSONAL":"Persönlich","LIB_EMPTY_PERSONAL_DESC":"Holen Sie sich persönliche Empfehlungen","LIB_EMPTY_CALENDAR_DESC":"Planen Sie Ihren persönlichen Anschau-Kalender","LIB_EMPTY_ALL":"Registrieren Sie sich, um all dies zu bekommen:","LIB_EMPTY_BEST":"Registrieren Sie sich, um das Beste von Stremio zu bekommen","LIB_EMPTY_OTHER":"Registrieren Sie sich, um Kalender & andere tolle Funktionen zu aktivieren","CALENDAR_ADDED":"Der Stremio-Kalender wurde zu Ihrem Standard-Desktop-Kalender hinzugefügt.","CALENDAR_ADDED_MSG":"Wenn dies nicht funktioniert, fügen Sie diese URL bitte manuell zu Ihrer Kalenderanwendung hinzu","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt-Fehler","TRAKT_REQUIRES_LOGIN_MSG":"Sie müssen sich anmelden","SETTINGS_LABEL":"Einstellungen","SETTINGS_NAV_GENERAL":"Algemein","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Verknüpfungen","SETTINGS_SHORTCUT_RELOAD_APP":"App neu laden","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Lautstärke erhöhen","SETTINGS_SHORTCUT_VOLUME_DOWN":"Lautstärke verringern","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Seitenleiste umschalten","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Beim Start ausführen","SETTINGS_VLC_DEFAULT":"Mit VLC wiedergeben","SETTINGS_UI_LANGUAGE":"Sprache des UI","SETTINGS_FULLSCREEN_EXIT":"Esc-Taste beendet den Vollbildmodus","SETTINGS_GAMEPAD":"Gamepad-Unterstützung aktivieren","SETTINGS_CLOSE_WINDOW":"Anwendungen beenden, wenn das Fenster geschlossen wird","SETTINGS_SUBTITLES_LANGUAGE":"Standardauswahl für die Untertitelsprache","SETTINGS_SUBTITLES_SIZE":"Standardgröße der Untertitel","SETTINGS_SUBTITLES_BACKGROUND":"Hintergrund der Untertitel","SETTINGS_SUBTITLES_COLOR":"Farbe der Untertitel","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Umrandungsfarbe der Untertitel","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Hintergrundfarbe der Untertitel","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Nächste Episode automatisch wiedergeben","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Größe des Fensters vor der Wiedergabe automatisch ändern","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming-Server ist verfügbar.","SETTINGS_SERVER_UNAVAILABLE":"Streaming-Server ist nichtverfügbar.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Immer neueste Beta verwenden","SETTINGS_IMPORT_FB":"Von Facebook importieren","SETTINGS_IMPORT_DISK":"Von lokaler Festplatte importieren","SETTINGS_IMPORT_TRAKT":"Von Trakt importieren","SETTINGS_PAUSE_MINIMIZED":"Wiedergabe pausieren, wenn die Anwendung minimiert wird","SETTINGS_HWDEC":"Hardwarebeschleunigte Dekodierung","SETTINGS_BACKGROUND":"Hintergrund-Wiedergabe","SETTINGS_SUBSCRIBE_CALENDAR":"Kalender abonnieren","SETTINGS_REQ_EXPORT":"Datenexport anfordern","SETTINGS_ACC_DELETE":"Kontolöschung anfordern","SETTINGS_CHANGE_PASSWORD":"Passwort ändern","SETTINGS_TOS":"Nutzungsbedingungen","SETTINGS_SUPPORT":"Kundendienst kontaktieren","SETTING_LANGUAGE":"Sprache","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Von Trakt.tv abmelden","SETTINGS_SCAN_FOR_REMOTE":"QR-Code zum Öffnen der Fernbedienung scannen","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop-Benachrichtigungen","SETTINGS_DATA_SAVER":"Datenretter","SETTINGS_LANGUAGE_INTERFACE":"Oberfläche","SETTINGS_LANGUAGE_SUBS":"Standarduntertitel","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"Konto","SETTINGS_VERSION":"Version","SETTINGS_MPV_WINDOW":"Abspieler in einem separaten Fenster starten (erweitert)","SETTINGS_PLAY_IN_EXTERNAL":"Video immer im externen Player starten","SETTINGS_STORAGE_BUTTON":"Lokalen Speicher leeren","SETTINGS_STORAGE_MODAL_TITLE":"Sind Sie sicher?","SETTINGS_STORAGE_MODAL_MESSAGE":"Dies wird den lokalen Speicher leeren und Sie auslogggen.","SETTINGS_HWDEC_PICKER":"Einstellung für hardwarebeschleunigte Dekodierung wählen","SETTINGS_HW_AUTOMATIC":"Automatik","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Dekodier-Beschleunigung","SETTINGS_HW_FULL":"Vollständige Beschleunigung","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Schwarze Hintergrundfarbe verwenden","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Eingebettete Untertitel","MOBILE_PRIVACY_POLICY":"Datenschutzbestimmungen","MOBILE_CRASH_REPORTING":"Absturzbericht","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Wiedergabegeschwindigkeit wählen","MOBILE_EMPTY_LIBRARY":"Ihre Bibliothek ist leer","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"Ich bin damit einverstanden, von Stremio Marketingmitteilungen zu erhalten","QUIT":"Beenden","CONNECTED":"Verbunden","AUTHENTICATE":"Authentifizieren","CACHING":"Zwischenspeicherung","SETTINGS_CACHING_DRIVE":"Zwischenspeicherungslaufwerk","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Datenzwischenspeicherung","MAGNET_PARSING":"Magnet-Link wird geparst","January":"Januar","February":"Februar","March":"März","April":"April","May":"Mai","June":"Juni","July":"Juli","August":"August","September":"September","October":"Oktober","November":"November","December":"Dezember","Monday":"Montag","Tuesday":"Dienstag","Wednesday":"Mittwoch","Thursday":"Donnerstag","Friday":"Freitag","Saturday":"Samstag","Sunday":"Sonntag","Action":"Action","Comedy":"Comedy","War":"Krieg","Family":"Familie","Animation":"Animation","Adventure":"Abenteuer","Fantasy":"Fantasy","Crime":"Krimi","Mystery":"Mystery","Romance":"Romantik","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Musik","Biography":"Biografie","Documentary":"Dokumentation","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"Nachrichten","History":"Geschichte","Game-Show":"Spielshow","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Unterhaltung","Gaming":"Spielen","From TV":"Vom Fernsehen","Lifestyle":"Lebensstil","Science & Education":"Wissenschaft & Bildung","Cooking & Health":"Kochen & Gesundheit","Beauty & Fashion":"Schönheit & Mode","Sports":"Sport","News & Politics":"News & Politik","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automobil","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Filme","Uk Live Tv":"Uk Live Tv","Fashion":"Mode","Business News Radio":"Business News Radio","Business Tv":"Geschäftsfernsehen","Cars & Auto":"Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lebensstilradio","News Tv":"News Tv","Food And Wine":"Essen und Wein","Latino Tv":"Latino Tv","Shopping Tv":"Verkaufsfernsehen","Religion":"Religion","Kids":"Kinder","Body & Soul":"Körper & Seele","Education":"Bildung","Indian Tv":"Indian Tv","Extreme Sports":"Extremsport","Middle Eastern Tv":"Fernsehen des Mittleren Ostens","Celebrity Tv":"Promifernsehen","Science Tv":"Wissenschaftsfernsehen","Bikini babe":"Bikinischönheit","Outdoors":"Outdoors","German Tv":"Deutsches Fernsehen","French Tv":"Französisches Fernsehen","Italian Tv":"Italienisches Fernsehen","Gamer Tv":"Spielerfernsehen","Travel":"Reise","Asian Tv":"Asiatisches Fernsehen","Entertainment":"Unterhaltung","News Radio":"Nachrichtenradio","Music Radio":"Musikradio","Language Learning":"Sprachen lernen","Science Radio":"Wissenschaftsradio","Tech Radio":"Tech Radio","Science & Technology Vod":"Abrufvideo Wissenschaft & Technologie","new video":"neues Video","new episode":"neue Episode","new movie":"neuer Film","recommended":"empfohlen","we recommend":"wir empfehlen","offer of the day":"Angebot des Tages","news":"Nachrichten","music video":"Musikvideo","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Benachrichtigungen ablehnen","CTX_DISMISS_ALL":"Alles ablehnen","CTX_SHARE":"Teilen","CTX_COPY_SHARE_LINK":"Freigabelink kopieren","CTX_COPY_MAGNET_LINK":"Magnet-Link kopieren","CTX_COPY_STREAM_LINK":"Stream-Link kopieren","CTX_DOWNLOAD_VIDEO":"Dieses Video herunterladen","CTX_DOWNLOAD_SUBS":"Untertitel herunterladen","CTX_VIEW_ON_YOUTUBE":"Auf YouTube ansehen","CTX_SHOW":"Anzeigen","CTX_PLAY":"Wiedergabe","CTX_PLAY_IN":"Wiedergabe in","CTX_PLAY_ON":"Wiedergabe auf","CTX_WATCH_ON":"Angesehen am","CTX_WATCH":"Ansehen","CTX_WATCHED":"Angesehen","CTX_WATCH_BEGINNING":"Von Anfang an ansehen","CTX_WATCH_MOBILE":"Auf einem mobilen Gerät ansehen","CTX_REWIND":"Zurückspulen zum Anfang","CTX_MARK_WATCHED":"Als angesehen markieren","CTX_MARK_NON_WATCHED":"Als nicht angesehen markieren","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Rest als angesehen markieren","CTX_UNMARK_REST":"Rest als nicht angesehen markieren","CTX_RECEIVE_NEW_NOTIF":"Neue Benachrichtigungen erhalten","CTX_REMOVE_CACHE":"Aus Zwischenspeicher entfernen","CTX_REMOVE_CACHE_EP":"Episode aus Zwischenspeicher entfernen","CTX_OPEN_CONTAINING":"Enthaltenden Ordner öffnen","CTX_REMOVE":"Aus Bibliothek entfernen","CTX_AVAILABLE_OFFLINE":"Offline verfügbar","CTX_PAUSED":"Pausiert","CTX_ALWAYS_ON_TOP":"Immer oben","CTX_FULLSCREEN":"Vollbild","CTX_WRONG_SUBS":"Falsche Untertitel?","CTX_REPORT_ISSUES":"Problem melden","CTX_COPY":"Kopieren","CTX_PASTE":"Einfügen","CTX_CLEAR":"Löschen","CTX_CLEAR_RECENT_SEARCHES":"Kürzliche Suchanfragen löschen","HELLO_THERE":"Hallöchen","HOPE_YOU_ENJOY":"Wir hoffen, dass Sie Stremio genießen und es schon eine Ihrer Lieblings-Apps ist!","WHO_ARE_WE":"Wer sind wir? Wir sind das Team dahinter - zwei Jungs, die jeden Tag seit den letzten 3 Jahren hart arbeiten, um dieses Produkt besser und besser zu machen.","SUPPORT_US":"Wenn Sie Stremio gerne verwenden, wenn Stremio für Sie wertvoll ist - sagen Sie es weiter!","SPREAD_THE_WORD":"Teilen Sie es jetzt mit Ihren Freunden, erzählen Sie Stremio weiter","MORE_PEOPLE":"Je mehr Menschen Stremio benutzen, desto besser wird es!","SEND_A_LINK":"Oder senden Sie einen Link zu unserer Website","TIP_LOCALFILES":"Tipp: Sie können lokale Videodateien per Drag & Drop in Stremio verschieben","ADDON_MY":"Meine Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Offizielle Addons","ADDON_REPOS":"Addon-Repositorien","ADDON_SEARCH":"Addons suchen","ADDON_INSTALL":"Installieren","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Deinstallieren","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installiert","ADDON_INSTALLED_MSG":"Addon installiert!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unbekannt","ADDON_ERR":"Addon-Installationsfehler!","ADDON_DISCONNECTED":"Getrennt","ADDON_APP_MISSING":"die App für diese Quelle ist nicht installiert. Möchten Sie sie jetzt installieren?","ADDON_APP_INSTALL":"Jetzt installieren","ADDON_PAGE":"Addon-Seite","ADDON_TOP_CONTENT":"Bestes aus diesem Addon","ADDON_PROVIDES":"Dieses Addon gibt Ihnen:","ADDON_WATCH":"#{types} jetzt ansehen!","ADDON_WATCH_FREE":"#{types} jetzt KOSTENLOS ansehen!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"Mehr #{types} in Entdecken","ADDON_PROVIDES_STREAMS":"#{types} ansehen","ADDON_PROVIDES_STREAMS_FREE":"#{types} KOSTENLOS ansehen","ADDON_PROVIDES_SUBTITLES":"Untertitel für #{types}","ADDON_CANTDETECT":"Wir konnten kein laufendes Stremio erkennen, deshalb konnten wir nicht erkennen, welche Addons Sie installiert haben.","ERR_NO_META":"Keine Informationen dazu gefunden ","ERR_GETTING_META":"Fehler beim Abrufen von Informationen darüber.","ERR_CANT_PARSE_MAGNET":"Kann Magnet nicht parsen","ERR_NO_MAGNET_INFOHASH":"Kein gültiger Info-Hash für Magnet","ERR_NO_FILE_PATH":"Kann keine Anfrage ohne Pfad zur Datei senden","ERR_NO_TORRENT":"Kein Torrent zurückgegeben","ERR_NO_SUPPORTERD_FILES":"Keine unterstützten Dateien gefunden","ERR_OPENING_FILES":"Externe Dateien konnten nicht geöffnet werden","ERR_INVALID_LINK":"Ungültiger Link","ERR_REGISTERED_ONLY":"Diese Option ist nur für registrierte Benutzer verfügbar.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Weiter ansehen","BOARD_EXPLANATION_RECOMMENDATIONS":"Filme, die speziell für Sie ausgewählt wurden.
    Dieser Film ist eine Beispielempfehlung.","BOARD_EXPLANATION_EPISODES":"Neue Episoden Ihrer Lieblingsserie kommen hierher.
    Fügen Sie Serien, denen Sie folgen, zu Ihrer Bibliothek hinzu.","BOARD_EXPLANATION_VIDEOS":"Neue Episoden Ihrer Lieblingskanäle kommen hierher.
    Fügen Sie YouTube-Kanäle, denen Sie folgen, zu Ihrer Bibliothek hinzu.","WEBSITE_SLOGAN_WATCH":"Sofort ansehen","WEBSITE_SLOGAN_ALL":"Alle Videoinhalte, die Sie an einem Ort genießen","WEBSITE_SLOGAN_NEW":"Alles, was Sie sehen können","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Ansehen von","WEBSITE_DOWNLOAD":"Jetzt herunterladen","WEBSITE_DOWNLOAD_FOR":"Jetzt herunterladen für","WEBSITE_IS_DESKTOP":"Stremio ist eine Desktop-Anwendung, öffnen Sie diese Seite auf Ihrem PC und laden Sie sie herunter","WEBSITE_DESKTOP_DEMO_VID":"Desktop-Demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Funktionen","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technologie","WEBSITE_PAGE_CREATE_ADDON":"Addon erstellen","WEBSITE_PAGE_CONTACTS":"Kontakte","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filme","WEBSITE_TYPE_series_PL":"Serien","WEBSITE_TYPE_tv":"Live-Fernsehen","WEBSITE_TYPE_channel":"Kanäle","WEBSITE_STREMIO_WHAT_IS":"Stremio ist eine App, die Ihnen hilft, Ihre Lieblingsvideos, Filme, Fernsehserien und Fernsehkanäle zu organisieren und sofort anzusehen.","WEBSITE_FEATURES_WATCH":"Sofort in HD ansehen","WEBSITE_FEATURES_WATCH_DETAIL":"Klicken und geben Sie Ihre Lieblingsfilme, Fernsehshows, Videos und Fernsehkanäle wieder.","WEBSITE_FEATURES_SUBS":"Automatische Untertitel","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio holt automatisch synchronisierte Untertitel für Ihre Sprache.","WEBSITE_FEATURES_SUBS_LABEL":"Sie sind dran, Chef.","WEBSITE_FEATURES_CAST":"Auf Fernseher & mobilen Geräten wiedergeben","WEBSITE_FEATURES_CAST_DETAIL":"An AppleTV, Chromecast, Smart TV (DLNA/UPnP) und mobile Geräte übertragen.","WEBSITE_LIB":"Genießen Sie Ihre persönliche synchronisierte Bibliothek auf all Ihren Geräten","WEBSITE_LIB_COLLECT":"Von Stremio sammeln","WEBSITE_LIB_IMPORT":"Von Facebook importieren","WEBSITE_LIB_LOCAL":"Von Ihrer lokaler Festplatte hinzufügen","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Empfohlene Fernsehshow","WEBSITE_BOARD_TRENDING":"Film im Trend","WEBSITE_BOARD_NEW":"Neues Video","WEBSITE_BOARD_EPISODE":"Neue Episode","WEBSITE_BOARD_1":"Suchen Sie etwas Interessantes zum Anschauen? Holen Sie sich Empfehlungen nach Ihrem Geschmack!","WEBSITE_BOARD_2":"Lassen Sie sich benachrichtigen, wenn eine neue Episode Ihrer Lieblingssendung oder Ihres Lieblingskanals auf YouTube veröffentlicht wurde!","WEBSITE_BOARD_YOUTUBE":"Neue Videos von YouTube-Kanälen","WEBSITE_BOARD_EPISODES":"Neue Episoden von Serien, denen Sie folgen","WEBSITE_ADDONS":"Inhalts-Addons","WEBSITE_TECH_DETAIL":"Wir lieben Technologie, wir lieben verrückte Wissenschaft!\\nStremio verwendet die folgenden Open-Source-Technologien:","WEBSITE_TECH_WCJS":"WebChimera.js erlaubt Stremio die Wiedergabe jedes Videoformats mit guter Leistung.","WEBSITE_TECH_WCJS_EXTRA":"Wir sind Kern-Projektbeitragende","WEBSITE_TECH_ELECTRON":"Electron bietet eine innovative Plattform, um Stremio damit zu bauen.","WEBSITE_TECH_ELECTRON_EXTRA":"Wir sind Projektbeitragende","WEBSITE_TECH_LINVODB":"Eine Datenbank-Technologie, die sicherstellt, dass Ihre Daten organisiert und überall verfügbar sind, wo Sie sich anmelden.","WEBSITE_TECH_LINVODB_EXTRA":"Hauseigene Technologie","WEBSITE_CREATE_ADDON":"Erstellen Sie Ihr Addon","WEBSITE_CREATE_ADDON_DETAIL":"Haben Sie einen Dienst, der Videoinhalte anbietet? Wir helfen Ihnen, von den Funktionen von Stremio zu profitieren, indem wir Ihr Addon erstellen.","WEBSITE_CREATE_ADDON_BENEFITS":"Vorteile vom Erstellen eines Addons für Stremio","WEBSITE_P2P_BEAUTY":"Die Schönheit von Peer-to-Peer-Streaming","WEBSITE_P2P_1":"Zuverlässige und erschwingliche Full HD / 4K Video on Demand oder Live-Streaming","WEBSITE_P2P_2":"Verteilungsplattform für großartige Benutzererfahrung","WEBSITE_P2P_3":"Wir erstellen ein Addon, das Ihre genauen Bedürfnisse erfüllt","WEBSITE_P2P_CONTACT":"Interessiert? Sie sind herzlich eingeladen, uns zu kontaktieren.","WEBSITE_P2P_CONTACT_EXTRA":"Wir helfen Ihnen gerne bei der Integration Ihrer Inhalte mit Stremio!","WEBSITE_P2P":"Gelegentlich kommt eine Technologie, die den Namen des Spiels ändert. Wir haben viel Zeit und Mühe investiert, unsere Peer-to-Peer (P2P) Video-Streaming-Engine zu bauen, die eine hervorragende Leistung und Vielseitigkeit bietet, um sich jedem Anwendungsfall anzupassen.\\nKontaktieren Sie uns für DRM-fähiges P2P-Abrufvideo oder Live-Streaming.","WEBSITE_THOUGHTS":"Gedanken, die wir teilen:","WEBSITE_SPREAD":"Erzählen Sie über Stremio:","WEBSITE_CONTACT":"Kontaktieren Sie uns, wir freuen uns von Ihnen zu hören!","WEBSITE_OPENSOURCE":"Für unsere Open-Source-Projekte, gehen Sie zu unserem","WEBSITE_BITCOIN":"Bitcoin spenden:","WEBSITE_FAQ":"Häufig gestellte Fragen","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Fragen","WEBSITE_TOS":"Nutzungsbedingungen","WEBSITE_LEGAL":"Rechtlich","WEBSITE_PAGE_ABOUT":"Über","WEBSITE_PAGE_BECOME_PARTNER":"Werden Sie Partner","WEBSITE_ALL_YOU_CAN_WATCH":"Alles, was Sie ansehen können","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Was ist Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Genießen Sie es auf all Ihren Mediengeräten.","WEBSITE_DEVICES_COLLECT":"Von Stremio abholen","WEBSITE_DEVICES_IMPORT_FB":"Von Facebook importieren","WEBSITE_DEVICES_LOCAL":"Von lokalem Laufwerk hinzufügen","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"Wie gesehen am","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Über uns","WEBSITE_LINK_TECHNOLOGY":"Technologie","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"Mehr","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Beitragen","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & Mehr","WEBSITE_LINK_HELP":"Hilfezentrum","WEBSITE_LINK_CONTACTS":"Kontaktieren Sie uns","WEBSITE_LINK_TOS":"Geschäftsbedingungen","WEBSITE_LINK_PRAVACY":"Datenschutzerklärung","WEBSITE_SUBSCRIBE":"Abonnieren","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Ihre E-Mail","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Datenschutz & Rechtliches","WEBSITE_WHY":"Warum wir es tun","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Merkmale","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio für Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio für macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio für Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio für Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio für iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Beitragen","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Stremio übersetzen","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Inoffiziell","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Kontaktieren Sie uns","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Bitte geben Sie eine gültige E-Mail-Adresse ein!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Worauf bezieht sich Ihre Frage?","WEBSITE_CONTACT_US_Q_OS":"Was ist Ihr Betriebssystem?","WEBSITE_CONTACT_US_PH_EMAIL":"Ihre E-Mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Nachricht","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SENDEN","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technologie","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"oder","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Stremio übersetzen","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Helfen Sie uns, mehr über Sie zu erfahren.","LIFESTYLE":"Lebensstil","SPORTS":"Sport","FOOD_HEALTH":"Essen & Gesundheit","BEAUTY_FASHION":"Schönheit & Mode","NEWS":"Nachrichten","GAMING":"Spielen","SCIENCE_EDUCATION":"Wissenschaft & Bildung","MUSIC":"Musik","TRAVEL":"Reise","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Kino","CONTINUE":"Fortsetzen","SLOW_LOADING":"LANGSAMES LADEN?","I_GIVE_UP":"ICH GEBE AUF","LEARN_MORE":"Erfahren Sie mehr","POOR_SOURCE":"Diese Quelle ist schlecht verfügbar oder Ihre Internetverbindung ist nicht schnell genug","PICK_CATEGORIES_ERR":"Sie müssen mindestens 3 Kategorien auswählen","ADJUST_TIMING":"zeitliche Abstimmung anpassen mit ","ADJUST_SIZE":"Größe anpassen mit ","SEARCH_ANYTHING":"Sie können alles suchen...","ALL_CATEGORIES":"Alle","SEARCH_CATEGORIES":"Filme, Serien, YouTube & Fernsehen","SEARCH_PERSONS":"Schauspieler, Regisseure und Autoren","SEARCH_PROTOCOLS":"HTTP- & Magnet-Links","SEARCH_TYPES":"IMDB- / TVDB-Links","WATCHED":"Angesehen","SHOW_LESS":"Weniger anzeigen","LAST_SEARCHES":"Letzte Suchanfragen","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"WÄHLEN SIE VON DIESEN AUS:","NO_WEB_REMOTE":"Web-Fernbedienung konnte nicht geladen werden","STREMIO_OFFLINE":"Stremio ist offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warnung","MORE_INFO":"Weitere Informationen ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Wird geladen ...","STREMIO_TV_BACK_TO_LANGUAGES":"Zurück zu den Sprachen","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Das Stremio-Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi-Einrichtung","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Verbinden mit:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Passwort verwenden:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Größe anpassen","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Wiederholen","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"Was ist Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},5158:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Ταινία","TYPE_series":"Σειρά","TYPE_tv":"Τηλ. κανάλι","TYPE_channel":"Κανάλι","TYPE_other":"Άλλο","TYPE_movie_PL":"Ταινίες","TYPE_series_PL":"Σειρές","TYPE_tv_PL":"Τηλ. κανάλια","TYPE_channel_PL":"Κανάλια","TYPE_other_PL":"Άλλα","TYPE_ALL":"Όλα","VIDEO":"Βίντεο","BACK":"Πίσω","MORE":"Περισσότερα","DONE":"Τέλος","COPY":"Αντιγραφή","SUCCESS":"Επιτυχία","ERROR":"Υπήρξε πρόβλημα","SETTINGS_CASTING_MODE_PICKER":"Τύπος αναπαραγωγής","CASTING_MODE_HLSV2":"Προεπιλογή","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Χωρίς διακωδικοποίηση","Discover":"Ανακάλυψη","Board":"Πίνακας","Library":"Βιβλιοθήκη","My Library":"Η βιβλιοθήκη μου","Calendar":"Ημερολόγιο","NOTIFICATION_ONLINE":"Είστε σε σύνδεση","NOTIFICATION_OFFLINE":"Είστε εκτός σύνδεσης","INTERNET_CONNECTION":"Σύνδεση δικτύου","STORAGE_FULL_TITLE":"Προειδοποίηση: Πλήρης αποθηκευτικός χώρος!","STORAGE_FULL_TEXT":"Το Stremio δεν θα μπορεί να αποθηκεύει τις ρυθμίσεις, τις προτιμήσεις ή τα στοιχεία σύνδεσής σας. Δοκιμάστε να κάνετε εκ νέου εκκίνηση ή εγκατάσταση του Stremio.","SEARCH":"Αναζήτηση","SEARCH_NO_RESULTS":"Δεν βρέθηκαν αποτελέσματα","SEARCH_EXPLANATION_CONTENT":"Αναζήτηση ταινιών, σειρών, καναλιών τηλεόρασης και YouTube","SEARCH_EXPLANATION_PEOPLE":"Αναζήτηση ηθοποιών, σκηνοθετών και σεναριογράφων","SEARCH_PASTE_LINKS":"Επικόλληση συνδέσμων HTTP και magnet","SEARCH_OR_PASTE_LINK":"Αναζητήστε ή επικολλήστε σύνδεσμο","ADD_TO_LIB":"Εισαγωγή στη βιβλιοθήκη","REMOVE_FROM_LIB":"Αφαίρεση από τη βιβλιοθήκη","ADDED_TO_LIB":"Προστέθηκε στη βιβλιοθήκη","REMOVED_FROM_LIB":"Αφαιρέθηκε από τη βιβλιοθήκη","TRAILER":"Τρέιλερ","WATCH_TRAILER":"Προβολή τρέιλερ","WATCH_NOW":"Προβολή τώρα","SHOW":"Εμφάνιση","SHOW_MOVIE":"Εμφάνιση ταινίας","WATCH_RANDOM":"Τυχαία προβολή","IMDB_RATING":"Στο IMDb","YEAR":"Έτος","DIRECTOR":"Σκηνοθεσία","WRITER":"Σενάριο","LEAD_ACTORS":"Πρωταγωνιστές","CAST":"Ηθοποιοί","CREW":"Συντελεστές","SHOW_MORE_CAST":"Περισσότερα »","AIRED":"Μετάδοση","SEASONS":"Κύκλοι","GENRE":"Είδος","CATALOG":"Κατάλογος","SUMMARY":"Περίληψη","SHOW_MORE":"Περισσότερα","SIMILAR":"Παρόμοια","UPCOMING":"Επερχόμενα","ENDED":"Τέλος","DURATION":"Διάρκεια","FEATURED":"Προτεινόμενα","METADATA":"Μεταδεδομένα","CATEGORY":"Κατηγορία","LINKS_GENRES":"Είδη","LINKS_CAST":"Καστ","LINKS_DIRECTORS":"Σκηνοθέτες","SEARCH_VIDEOS":"Αναζήτηση βίντεο","SEARCH_PLACEHOLDER":"Αναζήτηση ή επικόλληση URL","ADDON":"Πρόσθετο","ADDONS":"Πρόσθετα","OFFICIAL":"Επίσημο","ADDONS_OFFICIAL":"Επίσημα πρόσθετα του Stremio","ADDONS_POPULAR":"Δημοφιλή στην περιοχή σας","ADDON_FREE":"Δωρεάν","ADDON_PEERED":"Σε peers","ADDON_SUBSCRIPTION":"Συνδρομή","ADDON_STREAM_GEORESTRICTED":"Δεν διατίθεται στην περιοχή σας","ADDON_STREAM_OFFLINECACHE":"Προσωρινή μνήμη εκτός σύνδεσης","ADDON_STREAM_LOCALFILE":"Τοπικό αρχείο","SHARE_ADDON":"Κοινοποίηση προσθέτου","AVAILABLE_STREAMS":"Διαθέσιμες ροές","NO_STREAM":"Δεν βρέθηκαν ροές","ALL_ADDONS":"Όλα τα","INSTALL_MORE_ADDONS":"Για περισσότερες ροές, παρακαλώ εγκαταστήστε περισσότερα πρόσθετα","STREAM_NOT_SUPPORTED":"Η επιλεγμένη ροή δεν υποστηρίζεται σε αυτήν την πλατφόρμα.","ADDON_CATALOGUE":"Εμφάνιση όλων των προσθέτων »","ADDON_CATALOGUE_MORE":"Εγκατάσταση προσθέτων","REPO_ADDED":"Το αποθετήριο προστέθηκε","ADDON_REPO_EXIST_ERR":"Αυτή η συλλογή προσθέτων υπάρχει ήδη","ADDON_REPO_ERR":"Προέκυψε σφάλμα κατά την προσθήκη της συλλογής","ADDON_ADD_ERR":"Προέκυψε σφάλμα κατά την προσθήκη του προσθέτου","ERR_ADDON_PROTECTED":"Δεν είναι δυνατή η αφαίρεση του προσθέτου, είναι προστατευόμενο","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Κάτι πήγε στραβά - η ταυτοποίηση ενδέχεται να απέτυχε","ERR_NOT_COLLECTION_URL":"Δεν είναι URL συλλογής","ERR_NOT_ADDON_URL":"Δεν είναι έγκυρο URL προσθέτου","ERR_DETECTFROMURL":"Δεν είναι δυνατή η εύρεση του προσθέτου/συλλογής από αυτό το URL","ADDON_DUPLICATE_WARNING":"Προειδοποίηση: Διπλότυπο πρόσθετο","ADDON_COLLECTION_SET_FAILED":"Αποτυχία συγχρονισμού εγκατεστημένων προσθέτων στον λογαριασμό σας","SETTINGS_DATA_EXPORT":"Εξαγωγή δεδομένων χρήστη","ADDON_PULL_FAILED":"Αποτυχία συγχρονισμού εγκατεστημένων προσθέτων από τον λογαριασμό σας","REFRESH_ON_CLICK":"Κάντε κλικ για επανάληψη","STILL_IN_THEATER":"Ακόμη στις αίθουσες","WATCH_IN_CINEMA":"Δείτε το στον τοπικό σας κινηματογράφο","IN_THEATER":"Στις αίθουσες","GET_TICKETS":"Εισιτήρια","UPCOMING_EPISODE":"Επερχόμενο επεισόδιο","UPCOMING_EPISODE_MESSAGE":"Αυτό το επεισόδιο θα προβληθεί σε","MISSING_DATE_EPISODE":"Απουσία ημερομηνίας","MISSING_DATE_EPISODE_MESSAGE":"Αυτό το επεισόδιο ενδέχεται να μην έχει προβληθεί ακόμα","CHANNEL_NOT_SCRAPED":"Δεν έχει γίνει ακόμα συλλογή δεδομένων για αυτό το κανάλι.
    Παρακαλώ επιστρέψτε σε λίγα λεπτά.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Προσθέστε το στη βιβλιοθήκη σας για να ειδοποιηθείτε μόλις γίνει διαθέσιμο.","GET_NOTIFIED_WHEN_AVAILABLE":"Θα ειδοποιηθείτε μόλις γίνει διαθέσιμο.","WARNING_STREAMING_SERVER":"Προειδοποίηση: Δεν βρέθηκε τοπική υπηρεσία ροής. Η ροή από τοπικά αρχεία, YouTube και BitTorrent δεν θα είναι διαθέσιμη.","WARNING_STREAMING_SERVER_DISMISS":"Αγνόηση","WARNING_STREAMING_SERVER_LATER":"Αργότερα","DECODER_WARNING":"Προειδοποίηση: Αυτό το βίντεο ενδέχεται να μην υποστηρίζεται από το υλικό σας. Λάβετε υπόψη ότι η αναπαραγωγή μπορεί να είναι αργή.","PLAYER_ERROR":"Ωχ, σφάλμα αναπαραγωγής","PLAYER_ERROR_LOOKSLIKE":"Φαίνεται ότι","PLAYER_ORIENTATION":"Προσανατολισμός αναπαραγωγής","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Κλειδωμένος","PLAYER_ORIENTATION_SENSOR_SHORT":"Αισθητήρας","PLAYER_ORIENTATION_LANDSCAPE":"Ο προσανατολισμός αναπαραγωγής κλείδωσε στην οριζόντια θέση","PLAYER_ORIENTATION_SENSOR":"Αυτόματος προσανατολισμός αναπαραγωγής (αισθητήρας)","PLAYER_PLAYBACK_SPEED":"Ταχύτητα αναπαραγωγής","PLAYER_PLAYBACK_ERROR":"Σφάλμα αναπαραγωγής, παρακαλώ δοκιμάστε ξανά","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Άγνωστο σφάλμα","PLAYER_PLAYBACK_ERROR_DEFAULT":"Δυστυχώς, αυτό το βίντεο δεν μπορεί να αναπαραχθεί από το {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Γλώσσα υποτίτλων","PLAYER_SUBTITLES_VARIANTS":"Παραλλαγές υποτίτλων","PLAYER_SUBTITLES_SETTINGS":"Ρυθμίσεις υποτίτλων","PLAYER_SUBTITLES_DISABLED":"Οι υπότιτλοι είναι απενεργοποιημένοι","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Ύψος υποτίτλων","PLAYER_SUBTITLES_LOADED":"Οι υπότιτλοι φόρτωσαν","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Οι ενσωματωμένοι υπότιτλοι φόρτωσαν","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Οι ειδικοί υπότιτλοι φόρτωσαν","PLAYER_SUBTITLES_LOADED_ORIGIN":"Οι υπότιτλοι από το {{origin}} φόρτωσαν","PLAYER_PLAY":"Αναπαραγωγή","PLAYER_PAUSE":"Παύση","PLAYER_NEXT_VIDEO":"Επόμενο βίντεο","PLAYER_MUTE":"Σίγαση","PLAYER_UNMUTE":"Κατάργηση σίγασης","PLAYER_OPEN_IN_EXTERNAL":"Άνοιγμα σε εξωτερικό πρόγραμμα αναπαραγωγής","PLAYER_PLAY_IN":"Αναπαραγωγή στο {{device}}","PLAYER_LIVE":"Ζωντανά","PLAYER_NEXT_VIDEO_TITLE":"Επόμενο βίντεο","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Απόρριψη","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Προβολή τώρα","PLAYER_COPY_STREAM_SUCCESS":"Ο σύνδεσμος ροής αντιγράφηκε στο πρόχειρο","PLAYER_COPY_STREAM_ERROR":"Σφάλμα αντιγραφής συνδέσμου ροής","STREAMING_FROM":"Ροή από","CASTING_TO":"Μετάδοση σε","NETWORK_STATUS":"Κατάσταση δικτύου","STREAM_SPEED":"Ταχύτητα ροής:","STREAM_BUFFERED":"Ενδιάμεση μνήμη:","PEERS_INFO":"Πληροφορίες peers","PEERS_ACTIVE":"Ενεργοί:","PEERS_CONNECTED":"Σε σύνδεση:","PEERS_WAITING":"Αναμονή:","TRANSCODING_WARNING":"Προειδοποίηση: Αλλαγή κωδικοποίησης βίντεο.","STREAM_LOADING":"Φόρτωση...","PLAYING_LOCAL":"Αναπαραγωγή από τοπικό αρχείο","PLAYING_CACHE":"Αναπαραγωγή από προσωρινή μνήμη","WRONG_SUBS":"Εσφαλμένοι υπότιτλοι;","ERR_SUBS_LOADING_TITLE":"Σφάλμα φόρτωσης υποτίτλων","ERR_SUBS_LOADING":"Αποτυχία φόρτωσης υποτίτλων: ενδέχεται να υπάρχει πρόβλημα με το πρόσθετό σας ή τη σύνδεση δικτύου σας","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Τα ακόλουθα πρόσθετα υποτίτλων απέτυχαν","ERR_CASTING_UPDATE_TITLE":"Δεν ήταν δυνατή η ενημέρωση των πληροφοριών της συσκευής μετάδοσης: ο διακομιστής ροής ενδέχεται να είναι εκτός σύνδεσης","CHOOSE_DEVICE":"Επιλέξτε συσκευή για παρακολούθηση","NO_CAST_DEVICES":"Δεν διατίθενται συσκευές μετάδοσης.","NO_SETTINGS":"Καμία διαθέσιμη ρύθμιση.","PHONE_TABLET":"Τηλέφωνο/Tablet","SUBTITLES":"Υπότιτλοι","SUBTITLES_CHANGE":"Αλλαγή υποτίτλων για ","SUBTITLES_CHANGE_NONE":"Δυστυχώς, δεν υπάρχουν άλλοι υπότιτλοι για αυτήν τη γλώσσα.","SUBTITLES_CHANGE_ACIVE":"Αυτήν τη στιγμή, είναι ενεργοί οι υπότιτλοι #{{subtitlesDialog.activeIdx + 1}}. Κάντε κλικ στο «Συνέχεια» για να ενεργοποιήσετε τους υπότιτλους #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Εναλλακτικά,","SUBTITLES_ADJUST_DELAY":"Προσαρμογή καθυστέρησης υποτίτλων:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Ή χρησιμοποιήστε τα πλήκτρα G / H κατά την αναπαραγωγή.","SUBTITLES_ADJUST_DELAY_TIP":"ΣΥΜΒΟΥΛΗ: Μπορείτε να χρησιμοποιήσετε τα πλήκτρα G / H κατά την αναπαραγωγή.","SUBTITLES_DELAY":"Καθυστέρηση υποτίτλων:","SUBTITLES_LOADING":"Φόρτωση υποτίτλων...","SUBTITLES_UNAVAILABLE":"Δεν διατίθενται εξωτερικοί υπότιτλοι","SUBTITLES_DISABLED":"Ανενεργοί","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Ήχος","DEFAULT_LANGUAGE":"Προεπιλεγμένη γλώσσα","DEFAULT_SECONDARY_LANGUAGE":"Δευτερεύουσα προεπιλεγμένη γλώσσα","SEASON":"Κύκλος","EPISODE":"Επεισόδιο","SPECIAL":"Σπέσιαλ","SORT":"Ταξινόμηση","SORT_BY":"Ταξινόμηση κατά","FILTER":"Φιλτράρισμα","SORT_TRENDING":"Τάσεις","SORT_RECENT":"Πρόσφατα","SORT_ALPHABET":"Α-Ω","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"Βαθμολογία","SORT_WATCHED":"Ποβολή","SORT_YEAR":"Έτος","SELECT_TYPE":"Επιλέξτε τύπο","SELECT_SORT":"Ταξινόμηση κατά","SELECT_CATALOG":"Επιλέξτε κατάλογο","SELECT_GENRE":"Επιλέξτε τύπο","SORT_LASTWATCHED":"Από τη τελευταία προβολή","SORT_NAME":"Από το όνομα","SORT_TIMESWATCHED":"Από τον αριθμό αναπαραγωγών","New for You":"Νέα για εσάς","New Episodes":"Νέα επεισόδια","New Videos":"Νέα βίντεο","Recommendations":"Προτάσεις","LIBRARY_RESUME":"Συνέχιση","LIBRARY_PLAY":"Αναπαραγωγή","LIBRARY_DETAILS":"Λεπτομέρειες","LIBRARY_RESUME_DISMISS":"Απόρριψη","LIBRARY_CLEAR_PROGRESS":"Κατάργηση προόδου","LIBRARY_REMOVE":"Αφαίρεση","LIBRARY_NOT_LOGGED_IN":"Μόνο οι χρήστες που έχουν λογαριασμό στο Stremio έχουν πρόσβαση στη βιβλιοθήκη","CALENDAR_NOT_LOGGED_IN":"Μόνο οι χρήστες που έχουν λογαριασμό στο Stremio έχουν πρόσβαση στο ημερολόγιο","NOT_LOGGED_IN_CLOUD":"Δείτε τις αγαπημένες σας ταινίες και σειρές οπουδήποτε, οποιαδήποτε στιγμή.","NOT_LOGGED_IN_RECOMMENDATIONS":"Προτάσεις προσαρμοσμένες στο ιστορικό παρακολούθησής σας","NOT_LOGGED_IN_NOTIFICATIONS":"Μη ξαναχάσετε κανένα επεισόδιο","NOT_LOGGED_IN_CALENDAR":"Προσαρμόστε και προγραμματίστε το προσωπικό σας ημερολόγιο παρακολούθησης","DISCOVER_FEATURED":"Προτεινόμενα","DISCOVER_TOP":"Κορυφαία","DISCOVER_OSCAR":"Νικητές Όσκαρ","DISCOVER_WARNING_TITLE":"Ωχ!","DISCOVER_EMPTY_CATALOG":"Αυτό το πρόσθετο επέστρεψε κενό περιεχόμενο.","DISCOVER_ADULT_WARNING":"Το περιεχόμενο είναι ορατό μόνο για ενήλικες. Είστε 18+;","DISCOVER_NOADDON_WARNING":"Προειδοποίηση: Δεν υπάρχει ενεργό πρόσθετο στο Stremio για αυτόν τον τύπο. Εμφανίζονται αποθηκευμένα στοιχεία, δεν θα ενημερωθεί τίποτα εδώ.","DISCOVER_LOAD_ERR":"Το περιεχόμενο δεν φορτώθηκε, προέκυψε σφάλμα.","DISCOVER_ADDON_UNINSTALLED":"Αυτό το περιεχόμενο δεν είναι πλέον διαθέσιμο, ενδέχεται να έχετε αφαιρέσει το πρόσθετο.","UNINSTALL_THIS_ADDON":"Αφαίρεση προσθέτου","ERR_ADDON_NOT_INSTALLED":"Αυτό το πρόσθετο δεν έχει εγκατασταθεί. Να γίνει εγκατάσταση;","DETAIL_RECEIVE_NOTIF_SERIES":"Λήψη ειδοποιήσεων για νέα επεισόδια","DETAIL_RECEIVE_NOTIF_VIDEOS":"Λήψη ειδοποιήσεων για νέα βίντεο","SIDEBAR_SHOW_STREAMS":"Εμφάνιση ροών","RELAUNCH":"Κάντε επανεκκίνηση τώρα!","UPGRADE":"Υπάρχει νέα διαθέσιμη έκδοση! Αναβαθμίστε στην πιο πρόσφατη έκδοση του Stremio","RELOAD_UI":"Ανανεώστε το περιβάλλον χρήστη","MANUAL_UPDATE_TITLE":"Ενημερώστε την έκδοση του Stremio σας","MANUAL_UPDATE_LINE1":"Χρησιμοποιείτε μια παρωχημένη έκδοση του Stremio, κάτι που δεν προτείνεται.","MANUAL_UPDATE_LINE2":"Παρακαλώ κάντε ενημέρωση το συντομότερο δυνατόν.","BUTTON_UPDATE_LATTER":"Όχι τώρα","BUTTON_UPDATE_NOW":"Ενημέρωση","ANONYMOUS_USER":"Ανώνυμος χρήστης","DONT_HAVE_ACC":"Δεν έχετε λογαριασμό;","HAVE_ACC":"Έχετε ήδη λογαριασμό;","PASSWORD":"Κωδικός πρόσβασης","PASSWORD_CONFIRM":"Επιβεβαίωση κωδικού πρόσβασης","EMAIL":"Email","FB_LOGIN":"Συνέχεια με Facebook","FB_NOTHINGSHARED":"Δεν κοινοποιούμε τίποτα χωρίς την άδειά σας","FB_NOPOST":"Δεν θα δημοσιεύσουμε τίποτα εκ μέρους σας","OR":"ή","I_ACCEPT":"Αποδοχή","I_ACCEPT_BY_CLICKING":"Κάνοντας κλικ στο παραπάνω κουμπί, δηλώνω την αποδοχή ","TOS":"Όροι και Προϋποθέσεις","MUST_ACCEPT_TERMS":"Πρέπει να αποδεχθείτε τους όρους","PASSWORDS_NOMATCH":"Οι κωδικοί πρόσβασης δεν ταιριάζουν","SIGN_UP":"Εγγραφή","SIGN_UP_EMAIL":"Εγγραφή με email","CLICK_TO_SIGN_UP":"Κάντε κλικ εδώ για να εγγραφείτε.","LOG_IN":"Σύνδεση","LOG_OUT":"Αποσύνδεση","EXIT_FULLSCREEN":"Έξοδος από πλήρη οθόνη","ENTER_FULLSCREEN":"Είσοδος σε πλήρη οθόνη","PLAY_URL_MAGNET_LINK":"Αναπαραγωγή URL/συνδέσμου magnet","HELP_FEEDBACK":"Βοήθεια & σχόλια","TERMS_OF_SERVICE":"Όροι υπηρεσίας","PRIVACY_POLICY":"Πολιτική Απορρήτου","ABOUT_STREMIO":"Σχετικά με το Stremio","USER_PANEL":"Πίνακας χρήστη","LOGIN_LABEL":"Σύνδεση","GUEST_LOGIN":"Σύνδεση επισκέπτη","GUEST_LOGIN_NOTICE":"Δεν προτείνεται η σύνδεση επισκέπτη. Η κανονική σύνδεση επιτρέπει στο Stremio να συγχρονίζει τη βιβλιοθήκη σας και να σας στέλνει ειδοποιήσεις για αγαπημένες σειρές/κανάλια. Θέλετε σίγουρα να συνεχίσετε;","GUEST_LOGIN_NOTICE_2":"Δεν προτείνεται η σύνδεση επισκέπτη - δεν θα συγχρονίζεται η βιβλιοθήκη και οι ειδοποιήσεις πίνακα, που είναι βασικές λειτουργίες του Stremio. Θέλετε σίγουρα να συνεχίσετε;","CLICK_HERE":"Κάντε κλικ εδώ","WRONG_PASSWORD":"Εσφαλμένο email ή κωδικός πρόσβασης. Σε περίπτωση που έχετε ξεχάσει τον κωδικό πρόσβασής σας, ","SET_A_PASS":"Ορισμός κωδικού πρόσβασης","RESET_PASSWORD":"Επαναφορά κωδικού πρόσβασης","FORGOT_PASSWORD":"Ξεχάσατε τον κωδικό πρόσβασής σας;","EMAIL_USED_WITH_FB":"Αυτό το email χρησιμοποιήθηκε με σύνδεση Facebook.","INVALID_EMAIL":"Παρακαλώ εισαγάγετε μια έγκυρη διεύθυνση email","INVALID_PASSWORD":"Παρακαλώ εισαγάγετε έναν έγκυρο κωδικό πρόσβασης","CONN_ERR":"Σφάλμα σύνδεσης - παρακαλώ δοκιμάστε ξανά αργότερα.\\n\\nΑν επιμένει, απενεργοποιήστε το λογισμικό προστασίας από ιούς ή το τείχος προστασίας (ειδικά το Bitdefender).","IMPORT_FROM_GUEST":"Εισαγωγή βιβλιοθήκης από λογαριασμό επισκέπτη","RECEIVE_UPDATES_EMAIL":"Λήψη ενημερώσεων από το Stremio στο email σας","LOGIN_FAILED":"Αποτυχία σύνδεσης.","SIGNUP_FAILED":"Αποτυχία εγγραφής.","SEARCH_FAILED":"Αποτυχία αναζήτησης","EMAIL_USED":"Αυτό το email χρησιμοποιείται ήδη.","WAITING_FB_LOGIN":"Σύνδεση μέσω Facebook...","EXTERNAL_PLAYER_TITLE":"Αναπαραγωγή σε εξωτερικό πρόγραμμα","EXTERNAL_REMEMBER_PLAYER":"Θέλετε να αποθηκεύσετε την επιλογή σας;","EXTERNAL_ALWAYS_PLAY":"Ναι","EXTERNAL_ONLY_ONCE":"Όχι","BEST_FIT":"Βέλτιστη προσαρμογή","FIT_SCREEN":"Προσαρμογή στην οθόνη","FILL":"Γέμισμα","16:9":"16:9","4:3":"4:3","Original":"Αρχικό","INTRO_TASTE":"Πείτε μας τι σας αρέσει","INTRO_TASTE_LONG":"Πείτε μας τι θα θέλατε να δείτε","INTRO_TASTE_PICK":"Επιλέξτε {{interestsRemaining}} ενδιαφέροντα","INTRO_TASTE_PICK_MORE":"Επιλέξτε {{interestsRemaining}} κι άλλα ενδιαφέροντα","INTRO_TASTE_HELP_US":"Βοηθήστε μας να μάθουμε περισσότερα για εσάς.","INTRO_TASTE_CHOOSE_THESE":"Επιλέξτε κάποια από αυτά:","INTRO_TASTE_CHOOSE_MIN":"Επιλέξτε τουλάχιστον 3 κατηγορίες","INTRO_TASTE_CHOOSE_MIN_ERR":"Πρέπει να επιλέξετε τουλάχιστον 3 κατηγορίες!","INTRO_TASTE_LIFESTYLE":"Τρόπος ζωής","INTRO_TASTE_SPORTS":"Αθλήματα","INTRO_TASTE_FOOD_HEALTH":"Φαγητό & υγεία","INTRO_TASTE_BEAUTY_FASHION":"Ομορφιά & μόδα","INTRO_TASTE_NEWS":"Ειδήσεις","INTRO_TASTE_GAMING":"Παιχνίδια","INTRO_TASTE_SCIENCE_EDU":"Επιστήμη & εκπαίδευση","INTRO_TASTE_MUSIC":"Μουσική","INTRO_TASTE_TRAVEL":"Ταξίδια","INTRO_TASTE_LATE_NIGHT":"Βραδινό","INTRO_TASTE_REALITY":"Ριάλιτι","INTRO_TASTE_COMEDY":"Κωμωδία","INTRO_TASTE_DIY":"Κατασκευές","INTRO_TASTE_TECH":"Τεχνολογία","INTRO_TASTE_CINEMA":"Κινηματογράφος","ADDON_NOT_SUPPORTED":"Το επιλεγμένο πρόσθετο δεν υποστηρίζεται σε αυτήν την πλατφόρμα.","ADDON_DISCLAIMER":"Η χρήση τρίτων προσθέτων θα υπόκειται πάντα στη δική σας ευθύνη και την ισχύουσα νομοθεσία της χώρας σας.","ADDON_ACTIVATE":"Ενεργοποίηση προσθέτου;","ADDON_REPO_ADD":"URL συλλογής προσθέτων","ADDON_ADD":"Προσθήκη","ADD_ADDON":"Προσθέστε πρόσθετο","ADD_ADDON_DESCRIPTION":"Μπορείτε να προσθέσετε ένα πρόσθετο μέσω ενός εξωτερικού συνδέσμου, ο οποίος θα εμφανίζεται στην ενότητα Εγκατεστημένα πρόσθετα.","PASTE_ADDON_URL":"Επικόλληση URL προσθέτου","WHATS_NEW":"Τι νέο υπάρχει","BUTTON_CONTINUE":"Συνέχεια","BUTTON_ACTIVATE":"Ενεργοποίηση","BUTTON_ACTIVATED":"Ενεργό","BUTTON_CANCEL":"Ακύρωση","BUTTON_SUBMIT":"Υποβολή","BUTTON_DISMISS_ALL":"Απόρριψη όλων","BUTTON_VIEW_ALL":"Προβολή όλων","BUTTON_SEE_ALL":"Δείτε όλες τις επιλογές","BUTTON_COLOR_TRANSPARENT":"Διαφάνεια","OPEN_IN_BROWSER":"Άνοιγμα σε πρόγραμμα περιήγησης","LIB_EMPTY":"Η βιβλιοθήκη σας είναι κενή. Ανακαλύψτε πόσο χρήσιμη είναι :) ","HOW_START":"Δείτε από πού μπορείτε να ξεκινήσετε:","LIB_EMPTY_CAL":"Το ημερολόγιό σας εμφανίζει σειρές στη βιβλιοθήκη σας.","HOW_START_CAL":"Δείτε πώς μπορείτε να προσθέσετε σειρές:","LIB_EMPTY_BOARD":"Ο πίνακας εμφανίζει ειδοποιήσεις & προτάσεις σχετικές με τη βιβλιοθήκη σας.","HOW_START_BOARD_WAIT":"Παρακαλούμε προσθέστε μερικές σειρές ή κανάλια στη βιβλιοθήκη σας και δώστε μας λίγα λεπτά για να τα επεξεργαστούμε :)","HOW_START_BOARD":"Δείτε πώς μπορείτε να προσθέσετε σειρές & ταινίες:","IMPORT_FB":"Εισαγωγή αγαπημένων από το Facebook","IMPORT_TRAKT":"Εισαγωγή βιβλιοθήκης πολυμέσων από το Trakt","IMPORT_DISCOVER":"Εύρεση ενδιαφέροντος περιεχομένου από την Ανακάλυψη","IMPORT_DISK":"Εισαγωγή ταινιών ή εκπομπών από τον τοπικό σας δίσκο","PLEASE_CREATE_ACC":"Παρακαλώ δημιουργήστε έναν λογαριασμό για να ενεργοποιήσετε τον συγχρονισμό βιβλιοθήκης & πίνακα.","IMPORT_DISCOVER_SIGNUP":"Εγγραφείτε και βρείτε ενδιαφέρον περιεχόμενο από την Ανακάλυψη","IMPORT_DISK_SIGNUP":"Εγγραφείτε και εισαγάγετε ταινίες ή εκπομπές από τον τοπικό σας δίσκο","LIB_EMPTY_CLOUD":"Συγχρονισμός","LIB_EMPTY_CLOUD_DESC":"Συγχρονισμός προσωπικής βιβλιοθήκης cloud σε κάθε συσκευή","LIB_EMPTY_EARLY":"Πρόωρη άφιξη","LIB_EMPTY_EARLY_DESC":"Λήψη ειδοποιήσεων για νέα επεισόδια","LIB_EMPTY_PERSONAL":"Εξατομίκευση","LIB_EMPTY_PERSONAL_DESC":"Λήψη εξατομικευμένων προτάσεων","LIB_EMPTY_CALENDAR_DESC":"Διαχειριστείτε το προσωπικό σας ημερολόγιο παρακολούθησης","LIB_EMPTY_ALL":"Εγγραφείτε για να έχετε όλα τα ακόλουθα:","LIB_EMPTY_BEST":"Εγγραφείτε για να αξιοποιήσετε το Stremio στο έπακρο","LIB_EMPTY_OTHER":"Εγγραφείτε για να ενεργοποιήσετε το Ημερολόγιο και άλλες λειτουργίες","CALENDAR_ADDED":"Το ημερολόγιο του Stremio έχει προστεθεί στο προεπιλεγμένο ημερολόγιο του υπολογιστή σας.","CALENDAR_ADDED_MSG":"Αν δεν λειτουργήσει αυτό, παρακαλώ προσθέστε χειροκίνητα αυτό το URL της εφαρμογής ημερολογίου σας","TRAKT_EXPIRED":"Η ταυτοποίηση στο Trakt έληξε, παρακαλώ μεταβείτε στις Ρυθμίσεις και κάντε ξανά έλεγχο ταυτότητας","TRAKT_REQUIRES_LOGIN":"Σφάλμα Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Πρέπει να κάνετε σύνδεση","SETTINGS_LABEL":"Ρυθμίσεις","SETTINGS_NAV_GENERAL":"Γενικά","SETTINGS_NAV_PLAYER":"Αναπαραγωγή","SETTINGS_NAV_STREAMING":"Ροή","SETTINGS_NAV_SHORTCUTS":"Συντομεύσεις","SETTINGS_SHORTCUT_RELOAD_APP":"Επαναφόρτωση εφαρμογής","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Άνοιγμα ρυθμίσεων","SETTINGS_SHORTCUT_SWITCH_TABS":"Αλλαγή σελίδας","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Εναλλαγή καρτελών προς τα εμπρός","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Εναλλαγή καρτελών προς τα πίσω","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Πλοήγηση ανάμεσα στα μενού","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Πηγαίντε στην αναζήτηση","SETTINGS_SHORTCUT_EXIT_BACK":"Έξοδος / Πίσω","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Ταχύτητα αναπαραγωγής","SETTINGS_SHORTCUT_MENU_VIDEOS":"Μενού βίντεο","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Μενού ρυθμίσεων υποτίτλων","SETTINGS_SHORTCUT_MENU_INFO":"Μενού πληροφοριών","SETTINGS_SHORTCUT_FULLSCREEN":"Λειτουργεία πλήρους οθόνης","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Εμφάνιση στοιχείων ελέγχου","SETTINGS_SHORTCUT_PLAY_PAUSE":"Αναπαραγωγή / Παύση","SETTINGS_SHORTCUT_VOLUME_UP":"Ανοίξτε τη φωνή","SETTINGS_SHORTCUT_VOLUME_DOWN":"Κλεσίτε τη φωνή","SETTINGS_SHORTCUT_SEEK_NEXT":"Πηγαίντε στο επόμενο επεισόδιο","SETTINGS_SHORTCUT_SEEK_PREV":"Πηγαίντε στο προηγούμενο επεισόδιο","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Πηγαίνετε προς τα πίσω κατά 10 δευτερόλεπτα","SETTINGS_SHORTCUT_SEEK_FORWARD":"Παράκαμψη 10 δευτερολέπτων","SETTINGS_SHORTCUT_PLAY_NEXT":"Επόμενο","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Αυξήστε το μέγεθος των υποτίτλων","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Μειώστε το μέγεθος των υποτίτλων","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Αυξήστε την καθυστέρηση των υποτίτλων","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Μειώστε την καθυστέρηση των υποτίτλων","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Αλλαγή θέσης πλευρικής γραμμής","SETTINGS_SHORTCUT_OR":"ή","SETTINGS_SHORTCUT_TO":"στο","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Πιστοποίηση","SETTINGS_FACEBOOK_IMPORT":"Εισαγωγή","SETTINGS_CALENDAR_SUBSCRIBE":"Εγγραφή","SETTINGS_INTERFACE_LANGUAGE":"Γλώσσα εφαρμογής","SETTINGS_LAUNCH_STARTUP":"Άνοιγμα κατά την εκκίνηση","SETTINGS_VLC_DEFAULT":"Αναπαραγωγή με VLC","SETTINGS_UI_LANGUAGE":"Γλώσσα εφαρμογής","SETTINGS_FULLSCREEN_EXIT":"Έξοδος από πλήρη οθόνη με το πλήκτρο Escape","SETTINGS_GAMEPAD":"Ενεργοποίηση υποστήριξης για gamepad","SETTINGS_CLOSE_WINDOW":"Κλείσιμο εφαρμογής όταν κλείνει το παράθυρο","SETTINGS_SUBTITLES_LANGUAGE":"Προεπιλεγμένη γλώσσα υποτίτλων","SETTINGS_SUBTITLES_SIZE":"Προεπιλεγμένο μέγεθος υποτίτλων","SETTINGS_SUBTITLES_BACKGROUND":"Φόντο υποτίτλων","SETTINGS_SUBTITLES_COLOR":"Χρώμα υποτίτλων","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Χρώμα περιγράμματος υποτίτλων","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Χρώμα φόντου υποτίτλων","SETTINGS_SEEK_KEY":"Χρονική μετατόπιση με πλήκτρα-βέλη","SETTINGS_SEEK_KEY_SHIFT":"Χρονική μετατόπιση με πλήκτρα-βέλη όταν είναι πατημένο το πλήκτρο Shift","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Χρονική διάρκεια παράκαμψης χρόνου βίντεο","SETTINGS_BINGE":"Αυτόματη αναπαραγωγή επόμενου επεισοδίου","SETTINGS_NEXT_VIDEO":"Εμφάνιση ειδοποίησης για έναρξη επόμενου επεισοδίου","SETTINGS_NEXT_VIDEO_TRIGGER":"Εμφάνιση ειδοποίησης επόμενου επεισοδίου για:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Διάρκεια αναδυώμενου παραθύρου για το επόμενο βίντεο","SETTINGS_PLAY_IN_BACKGROUND":"Αναπαραγωγή στο παρασκήνιο","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Αναπαραγωγή σε εξωτερική εφαρμογή","SETTINGS_RESIZE":"Αυτόματη προσαρμογή παραθύρου πριν από την αναπαραγωγή","SETTINGS_OVERRIDE_SERVER":"Παράκαμψη URL διακομιστή ροής (σύνθετο)","SETTINGS_SERVER_URL":"URL διακομιστή ροής: ","SETTINGS_SERVER_AVAILABLE":"Ο διακομιστής ροής είναι διαθέσιμος.","SETTINGS_SERVER_UNAVAILABLE":"Ο διακομιστής ροής δεν είναι διαθέσιμος.","SETTINGS_SERVER_STATUS_ONLINE":"Σε σύνδεση","SETTINGS_SERVER_STATUS_ERROR":"Προέκυψε σφάλμα","SETTINGS_SERVER_CONFIGURE_TITLE":"Διαμορφώστε το URL του διακομηστή αναπαραγωγής","SETTINGS_SERVER_CONFIGURE_INPUT":"Εισαγωγή ενός URL διακομηστή αναπαραγωγής","SETTINGS_SERVER_CACHE_SIZE":"Μέγεθος επιτρεπόμενης μνήμης cache","SETTINGS_SERVER_TORRENT_PROFILE":"Προφίλ torrent","SETTINGS_HTTPS_ENDPOINT":"Ακροσημείο HTTPS ροής: ","SETTINGS_USE_BETA":"Πάντα χρήση της πιο πρόσφατης έκδοσης beta","SETTINGS_IMPORT_FB":"Εισαγωγή από Facebook","SETTINGS_IMPORT_DISK":"Εισαγωγή από τοπικό δίσκο","SETTINGS_IMPORT_TRAKT":"Εισαγωγή από Trakt","SETTINGS_PAUSE_MINIMIZED":"Παύση αναπαραγωγής κατά την ελαχιστοποίηση","SETTINGS_HWDEC":"Αποκωδικοποίηση με επιτάχυνση υλικού","SETTINGS_BACKGROUND":"Αναπαραγωγή στο παρασκήνιο","SETTINGS_SUBSCRIBE_CALENDAR":"Εγγραφή σε ημερολόγιο","SETTINGS_REQ_EXPORT":"Αίτημα εξαγωγής δεδομένων","SETTINGS_ACC_DELETE":"Αίτημα διαγραφής λογαριασμού","SETTINGS_CHANGE_PASSWORD":"Αλλαγή κωδικού πρόσβασης","SETTINGS_TOS":"Όροι υπηρεσίας","SETTINGS_SUPPORT":"Επικοινωνία με την υποστήριξη","SETTING_LANGUAGE":"Γλώσσα","SETTINGS_TRAKT":"Αυτόματη παρακολούθηση Trakt","SETTINGS_TRAKT_LOGOUT":"Αποσύνδεση από Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Σαρώστε τον κωδικό QR για να ανοίξετε το τηλεχειριστήριο","SETTINGS_DESKTOP_NOTIFICATIONS":"Ειδοποιήσεις υπολογιστή","SETTINGS_DATA_SAVER":"Εξοικονόμηση δεδομένων","SETTINGS_LANGUAGE_INTERFACE":"Περιβάλλον χρήστη","SETTINGS_LANGUAGE_SUBS":"Προεπιλεγμένοι υπότιτλοι","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Αυτόματη επιλογή κομματιού ήχου","SETTINGS_DEFAULT_AUDIO_TRACK":"Προεπιλεγμένο κομμάτι ήχου","SETTINGS_ACCOUNT":"Λογαριασμός","SETTINGS_VERSION":"Έκδοση","SETTINGS_MPV_WINDOW":"Εκκίνηση αναπαραγωγής σε ξεχωριστό παράθυρο (σύνθετο)","SETTINGS_PLAY_IN_EXTERNAL":"Πάντα εκκίνηση του βίντεο σε εξωτερικό πρόγραμμα","SETTINGS_STORAGE_BUTTON":"Απαλοιφή τοπικής αποθήκευσης","SETTINGS_STORAGE_MODAL_TITLE":"Σίγουρα;","SETTINGS_STORAGE_MODAL_MESSAGE":"Αυτό θα εκκαθαρίσει τον τοπικό χώρο αποθήκευσης και θα σας αποσυνδέσει.","SETTINGS_HWDEC_PICKER":"Επιλέξτε ρύθμιση αποκωδικοποίησης με επιτάχυνση υλικού","SETTINGS_HW_AUTOMATIC":"Αυτόματη","SETTINGS_HW_DISABLED":"Ανενεργή","SETTINGS_HW_ACCELERATED":"Επιτάχυνση αποκωδικοποίησης","SETTINGS_HW_FULL":"Πλήρης επιτάχυνση","SETTINGS_HW_LEGACY":"Παλαιού τύπου","SETTINGS_SECTION_SUBTITLES":"Υπότιτλοι","SETTINGS_SECTION_AUDIO":"Ήχος","SETTINGS_SECTION_CONTROLS":"Χειρισμός","SETTINGS_SECTION_AUTO_PLAY":"Αυτόματη αναπαραγωγή","SETTINGS_SECTION_ADVANCED":"Για προχωρημένους","SUBSPICKER_AUDIO":"Ήχος","SUBSPICKER_SUBTITLES":"Πρόσθετα Υποτίτλων","SUBSPICKER_BLACK_BACKGROUND":"Χρήση μαύρου φόντου","SUBSPICKER_VERTICAL_OFFSET":"Απόσταση από το κάτω μέρος","SUBSPICKER_SIZE":"Μέγεθος","SUBSPICKER_DELAY":"Καθυστέρηση","SUBSPICKER_EMBEDDED_SUBS":"Ενσωματωμένοι Υπότιτλοι","MOBILE_PRIVACY_POLICY":"Πολιτική Απορρήτου","MOBILE_CRASH_REPORTING":"Αναφορά σφάλματος","MOBILE_ZOOM_TO_FILL":"Ζουμ για πλήρη οθόνη","MOBILE_PASSTHROUGH":"Ψηφιακή έξοδος ήχου (passthrough)","MOBILE_RUN_LOW_BATTERY":"Λειτουργία με χαμηλή μπαταρία","MOBILE_RUN_FOREGROUND":"Εκτέλεση ως υπηρεσία προσκηνίου","MOBILE_PERFORMANCE":"Απόδοση & Σταθερότητα","MOBILE_SERVER_ONLINE":"Σε σύνδεση","MOBILE_SERVER_OFFLINE":"Δεν υπάρχει σύνδεση","MOBILE_QR_EXPIRES":"Ο κωδικός QR λήει σε","MOBILE_LOG_INTO":"Συνδεθείτε στον λογαριασμό σας","MOBILE_SCAN_QR":"Σκανάρετε το κωδικό QR η πηγαίντε","MOBILE_LINK_ACCOUNT":"Σύνδεση λογαριασμού","MOBILE_SPEEDPICKER_CANCEL":"Ακύρωση","MOBILE_SPEEDPICKER_LABEL":"Ταχύτητα Αναπαραγωγής","MOBILE_EMPTY_LIBRARY":"Η βιβλιοθήκη σας είναι άδεια","MOBILE_NO_ADDON_ACTIVE":"Κανένα πρόσθετο δε μπορεί να εκτελέσει αυτή τη λειτουργία.","MOBILE_ORGANIZER_WARNING":"Η εφαρμογή Stremio Organizer παρέχει περιορισμένη λειτουργικότητα. Για μια λίστα με ροές με δυνατότητα αναπαραγωγής και την πλήρη εμπειρία του Stremio, χρησιμοποιήστε το Stremio στον υπολογιστή.","MOBILE_ADDON_LOADING":"Φορτώνει","MOBILE_ADDONS_LOADING":"Τα πρόσθετα φορτώνουν","MOBILE_ADDON":"Πρόσθετο","MOBILE_CONFIGURE_ADDON":"Διαμορφώστε το πρόσθετο","MOBILE_CONFIGURE_ADDON_LABEL":"Διαμορφώστε το πρόσθετο","MOBILE_ORGANIZER_ADDONS_WARNING":"Η εφαρμογή Stremio Organizer παρέχει περιορισμένα πρόσθετα. Για την πλήρη εμπειρία του Stremio, χρησιμοποιήστε το Stremio στον υπολογιστή.","MOBILE_DISCONNECT":"Αποσύνδεση","MOBILE_LOOKING_FOR_DEVICES":"Αναζήτηση συσκευών...","MOBILE_CAST_TO":"Μετάδοση σε","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Διαγραφή λογαριασμού","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Η διαγραφή λογαριασμού δεν είναι άμεση λόγω νομικών υποχρεώσεων. Αφού ζητήσετε τη διαγραφή του λογαριασμού σας, θα πρέπει να χρησιμοποιήσετε διαφορετική διεύθυνση email/προφίλ Facebook για να δημιουργήσετε έναν νέο λογαριασμό Stremio στο μέλλον.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Επιβεβαίωση διαγραφής λογαριασμού","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Ο λογαριασμός σας έχει δημιουργηθεί με λογαριασμό Facebook. Για να διαγράψετε τον λογαριασμό σας, πηγαίντε στη διεύθυνση www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Εισάγετε τον κωδικό πρόσβασής σας για να επιβεβαιώσετε τη διαγραφή του λογαριασμού σας.","MOBILE_DELETE_ACCOUNT_BUTTON":"Διαγραφή λογαριασμού","NAVIGATION_ON":"Ανοιχτό","NAVIGATION_OFF":"Κλειστό","MARKETING_AGREE":"Συμφωνώ να λαμβάνω ενημερωτικά e-mail από το Stremio","QUIT":"Έξοδος","CONNECTED":"Σε σύνδεση","AUTHENTICATE":"Ταυτοποίηση","CACHING":"Προσωρινή αποθήκευση","SETTINGS_CACHING_DRIVE":"Δίσκος προσωρινής μνήμης","ENABLE_LOCAL_FILES_ADDON":"Ενεργοποίηση προσθέτου τοπικών αρχείων (απαιτεί επανεκκίνηση)","LOCAL_ADDON_NOT_ENABLED":"Το τοπικό πρόσθετο δεν είναι ενεργοποιημένο. Κάντε κλικ εδώ για να μεταβείτε στις ρυθμίσεις και να το ενεργοποιήσετε","ENABLE_REMOTE_HTTPS_CONN":"Ενεργοποίηση απομακρυσμένων συνδέσεων HTTPS","TORRENT_PROFILE":"Προφίλ torrent","DATA_CACHING":"Προσωρινή αποθήκευση δεδομένων","MAGNET_PARSING":"Ανάλυση συνδέσμου magnet","January":"Ιανουάριος","February":"Φεβρουάριος","March":"Μάρτιος","April":"Απρίλιος","May":"Μάιος","June":"Ιούνιος","July":"Ιούλιος","August":"Αύγουστος","September":"Σεπτέμβριος","October":"Οκτώβριος","November":"Νοέμβριος","December":"Δεκέμβριος","Monday":"Δευτέρα","Tuesday":"Τρίτη","Wednesday":"Τετάρτη","Thursday":"Πέμπτη","Friday":"Παρασκευή","Saturday":"Σάββατο","Sunday":"Κυριακή","Action":"Δράση","Comedy":"Κωμωδία","War":"Πόλεμος","Family":"Οικογενειακές","Animation":"Κινούμενα σχέδια","Adventure":"Περιπέτεια","Fantasy":"Φαντασία","Crime":"Έγκλημα","Mystery":"Μυστήριο","Romance":"Ρομαντικές","Drama":"Δράμα","Horror":"Τρόμος","Thriller":"Θρίλερ","Sci-Fi":"Επιστημονική φαντασία","Music":"Μουσική","Biography":"Βιογραφία","Documentary":"Ντοκιμαντέρ","Sport":"Αθλήματα","Musical":"Μιούζικαλ","Western":"Γουέστερν","Film-Noir":"Φιλμ νουάρ","News":"Ειδήσεις","History":"Ιστορία","Game-Show":"Τηλεπαιχνίδι","Reality-TV":"Ριάλιτι","Talk-Show":"Τοκ σόου","Film & Entertainment":"Σινεμά & ψυχαγωγία","Gaming":"Παιχνίδια","From TV":"Από την τηλεόραση","Lifestyle":"Τρόπος ζωής","Science & Education":"Επιστήμη & εκπαίδευση","Cooking & Health":"Μαγειρική & υγεία","Beauty & Fashion":"Ομορφιά & μόδα","Sports":"Αθλήματα","News & Politics":"Ειδήσεις & πολιτική","How-to & DIY":"Κατασκευές","Tech":"Τεχνολογία","Automotive":"Αυτοκίνηση","Causes & Non-Profits":"Φιλανθρωπία","Movies":"Ταινίες","Uk Live Tv":"Ηνωμένο Βασίλειο","Fashion":"Μόδα","Business News Radio":"Επιχειρήσεις - Ράδιο","Business Tv":"Επιχειρήσεις","Cars & Auto":"Αυτοκίνητα","Comedy Radio":"Κωμωδία - Ράδιο","Lifestyle Radio":"Τρόπος ζωής - Ράδιο","News Tv":"Ειδήσεις","Food And Wine":"Φαγητό & ποτά","Latino Tv":"Λατινική Αμερική","Shopping Tv":"Αγορές","Religion":"Θρησκεία","Kids":"Παιδικά","Body & Soul":"Σώμα & πνεύμα","Education":"Εκπαίδευση","Indian Tv":"Ινδία","Extreme Sports":"Εξτρίμ σπορ","Middle Eastern Tv":"Μέση Ανατολή","Celebrity Tv":"Διάσημοι","Science Tv":"Επιστήμη","Bikini babe":"Bikini babe","Outdoors":"Εξοχή","German Tv":"Γερμανία","French Tv":"Γαλλία","Italian Tv":"Ιταλία","Gamer Tv":"Παιχνίδια","Travel":"Ταξίδια","Asian Tv":"Ασία","Entertainment":"Ψυχαγωγία","News Radio":"Ειδήσεις - Ράδιο","Music Radio":"Μουσική - Ράδιο","Language Learning":"Εκμάθηση γλωσσών","Science Radio":"Επιστήμη - Ράδιο","Tech Radio":"Τεχνολογία - Ράδιο","Science & Technology Vod":"Επιστήμη & τεχνολογία","new video":"Νέο βίντεο","new episode":"Νέο επεισόδιο","new movie":"Νέα ταινία","recommended":"Προτάσεις","we recommend":"Προτείνουμε","offer of the day":"Προσφορά ημέρας","news":"Ειδήσεις","music video":"Μουσικό βίντεο","CTX_SHOW_HOTKEYS":"Εμφάνιση πλήκτρων συντομεύσεων","CTX_DISMISS_NOTIF":"Απόρριψη ειδοποιήσεων","CTX_DISMISS_ALL":"Απόρριψη όλων","CTX_SHARE":"Κοινοποίηση","CTX_COPY_SHARE_LINK":"Αντιγραφή συνδέσμου κοινής χρήσης","CTX_COPY_MAGNET_LINK":"Αντιγραφή συνδέσμου magnet","CTX_COPY_STREAM_LINK":"Αντιγραφή συνδέσμου ροής","CTX_DOWNLOAD_VIDEO":"Λήψη βίντεο","CTX_DOWNLOAD_SUBS":"Λήψη υποτίτλων","CTX_VIEW_ON_YOUTUBE":"Προβολή στο YouTube","CTX_SHOW":"Εμφάνιση","CTX_PLAY":"Αναπαραγωγή","CTX_PLAY_IN":"Αναπαραγωγή σε","CTX_PLAY_ON":"Αναπαραγωγή σε","CTX_WATCH_ON":"Παρακολούθηση σε","CTX_WATCH":"Προβολή","CTX_WATCHED":"Προβλήθηκε","CTX_WATCH_BEGINNING":"Προβολή από την αρχή","CTX_WATCH_MOBILE":"Προβολή σε κινητή συσκευή","CTX_REWIND":"Επιστροφή στην αρχή","CTX_MARK_WATCHED":"Σήμανση ως προβεβλημένο","CTX_MARK_NON_WATCHED":"Σήμανση ως μη προβεβλημένο","CTX_MARK_UNWATCHED":"Σήμανση ως μη προβεβλημένο","CTX_MARK_REST":"Σήμανση υπολοίπων ως προβεβλημένων","CTX_UNMARK_REST":"Σήμανση υπολοίπων ως μη προβεβλημένων","CTX_RECEIVE_NEW_NOTIF":"Λήψη νέων ειδοποιήσεων","CTX_REMOVE_CACHE":"Αφαίρεση από προσωρινή μνήμη","CTX_REMOVE_CACHE_EP":"Αφαίρεση επεισοδίου από προσωρινή μνήμη","CTX_OPEN_CONTAINING":"Άνοιγμα φακέλου αποθήκευσης","CTX_REMOVE":"Αφαίρεση από βιβλιοθήκη","CTX_AVAILABLE_OFFLINE":"Διαθέσιμο εκτός σύνδεσης","CTX_PAUSED":"Σε παύση","CTX_ALWAYS_ON_TOP":"Πάντα στο προσκήνιο","CTX_FULLSCREEN":"Πλήρης οθόνη","CTX_WRONG_SUBS":"Εσφαλμένοι υπότιτλοι;","CTX_REPORT_ISSUES":"Αναφορά ζητήματος","CTX_COPY":"Αντιγραφή","CTX_PASTE":"Επικόλληση","CTX_CLEAR":"Απαλοιφή","CTX_CLEAR_RECENT_SEARCHES":"Απαλοιφή πρόσφατων αναζητήσεων","HELLO_THERE":"Γεια σας","HOPE_YOU_ENJOY":"Ελπίζουμε να απολαμβάνετε το Stremio και να έχει γίνει ήδη μία από τις αγαπημένες σας εφαρμογές!","WHO_ARE_WE":"Ποιοι είμαστε; Είμαστε η ομάδα που το αναπτύσσει - δύο τύποι που εργάζονται σκληρά κάθε μέρα για τα τελευταία 3 έτη, προκειμένου να κάνουν αυτό το προϊόν όλο και καλύτερο.","SUPPORT_US":"Αν απολαμβάνετε το Stremio, αν το Stremio είναι ανεκτίμητο για εσάς - μοιραστείτε το με όλους!","SPREAD_THE_WORD":"Μοιραστείτε το με τους φίλους σας, μιλήστε σε όλους για το Stremio","MORE_PEOPLE":"Όσο περισσότερα άτομα χρησιμοποιούν το Stremio, τόσο καλύτερο θα γίνεται!","SEND_A_LINK":"Ή στείλτε έναν σύνδεσμο για τον ιστότοπό μας","TIP_LOCALFILES":"Συμβουλή: Μπορείτε να σύρετε και να εναποθέσετε τοπικά αρχεία βίντεο στο Stremio","ADDON_MY":"Τα πρόσθετά μου","ADDON_COMMUNITY":"Πρόσθετα κοινότητας","ADDON_OFFICIAL":"Επίσημα πρόσθετα","ADDON_REPOS":"Συλλογές προσθέτων","ADDON_SEARCH":"Αναζήτηση προσθέτων","ADDON_INSTALL":"Εγκατάσταση","ADDON_CONFIGURE":"Ρύθμιση","ADDON_UNINSTALL":"Αφαίρεση","ADDON_UPGRADE":"Αναβάθμιση","ADDON_INSTALLED":"Εγκατεστημένο","ADDON_INSTALLED_MSG":"Το πρόσθετο εγκαταστάθηκε!","ADDON_UPGRADED_MSG":"Το πρόσθετο αναβαθμίστηκε!","ADDON_UNKNOWN":"Άγνωστο","ADDON_ERR":"Σφάλμα εγκατάστασης προσθέτου!","ADDON_DISCONNECTED":"Αποσυνδέθηκε","ADDON_APP_MISSING":"Η εφαρμογή για αυτήν την πηγή δεν έχει εγκατασταθεί. Θέλετε να την εγκαταστήσετε τώρα;","ADDON_APP_INSTALL":"Εγκατάσταση","ADDON_PAGE":"Σελίδα προσθέτου","ADDON_TOP_CONTENT":"Τα καλύτερα από αυτό το πρόσθετο","ADDON_PROVIDES":"Αυτό το πρόσθετο προσφέρει:","ADDON_WATCH":"Παρακολούθηση «#{types}»!","ADDON_WATCH_FREE":"Δωρεάν παρακολούθηση «#{types}»!","ADDON_ADDON":"Πρόσθετο","ADDON_SUPPORTED_TYPES":"Υποστηριζόμενοι τύποι","ADDON_SUPPORTED_CATALOGS":"Υποστηριζόμενοι κατάλογοι","ADDON_PROVIDES_DISCOVER":"Περισσότερα «#{types}» στην Ανακάλυψη","ADDON_PROVIDES_STREAMS":"Παρακολούθηση «#{types}»","ADDON_PROVIDES_STREAMS_FREE":"Δωρεάν παρακολούθηση «#{types}»","ADDON_PROVIDES_SUBTITLES":"Υπότιτλοι για «#{types}»","ADDON_CANTDETECT":"Δεν μπορέσαμε να εντοπίσουμε κάποια εκτέλεση του Stremio, επομένως δεν μπορέσαμε να προσδιορίσουμε τα εγκατεστημένα σας πρόσθετα.","ERR_NO_META":"Δεν βρέθηκε καμία πληροφορία σχετικά με αυτό ","ERR_GETTING_META":"Σφάλμα ανάκτηση σχετικών πληροφοριών.","ERR_CANT_PARSE_MAGNET":"Δεν ήταν δυνατή η ανάλυση του magnet","ERR_NO_MAGNET_INFOHASH":"Κανένα έγκυρο hash πληροφοριών για το magnet","ERR_NO_FILE_PATH":"Δεν είναι δυνατή η αποστολή αιτήματος χωρίς διαδρομή σε αρχείο","ERR_NO_TORRENT":"Δεν επιστράφηκε κανένα torrent","ERR_NO_SUPPORTERD_FILES":"Δεν βρέθηκαν υποστηριζόμενα αρχεία","ERR_OPENING_FILES":"Δεν ήταν δυνατό το άνοιγμα εξωτερικών αρχείων","ERR_INVALID_LINK":"Μη έγκυρος σύνδεσμος","ERR_REGISTERED_ONLY":"Αυτή η επιλογή είναι διαθέσιμη μόνο για εγγεγραμμένους χρήστες.","ERR_CLIPBOARD":"Δεν είναι δυνατή η αναπαραγωγή από το πρόχειρο","ERR_CLIPBOARD_READ":"Δεν είναι δυνατή η ανάγνωση από το πρόχειρο σε αυτήν την πλατφόρμα","ERR_CLIPBOARD_GENERIC":"Δεν βρέθηκε κατάλληλο URL στο πρόχειρο. Παρακαλώ αντιγράψτε ένα URL βίντεο (π.χ. σύνδεσμος magnet).","BOARD_CONTINUE_WATCHING":"Συνέχεια παρακολούθησης","BOARD_EXPLANATION_RECOMMENDATIONS":"Ταινίες ειδικά επιλεγμένες για εσάς.
    Αυτή η ταινία αποτελεί δείγμα πρότασης.","BOARD_EXPLANATION_EPISODES":"Τα νέα επεισόδια των αγαπημένων σας σειρών έρχονται εδώ.
    Προσθέστε στη βιβλιοθήκη σας τις σειρές που ακολουθείτε.","BOARD_EXPLANATION_VIDEOS":"Τα νέα επεισόδια των αγαπημένων σας καναλιών έρχονται εδώ.
    Προσθέστε στη βιβλιοθήκη σας τα κανάλια που ακολουθείτε.","WEBSITE_SLOGAN_WATCH":"Άμεση παρακολούθηση","WEBSITE_SLOGAN_ALL":"Όλο το περιεχόμενό σας, σε ένα μέρος","WEBSITE_SLOGAN_NEW":"Απεριόριστη παρακολούθηση","WEBSITE_SLOGAN_NEW_NEW":"Ελευθερία στο streaming","WEBSITE_WATCH_FROM":"Προβολή από","WEBSITE_DOWNLOAD":"Λήψη τώρα","WEBSITE_DOWNLOAD_FOR":"Λήψη τώρα για","WEBSITE_IS_DESKTOP":"Το Stremio είναι εφαρμογή για υπολογιστές, ανοίξτε αυτήν τη σελίδα στον υπολογιστή για να κάντε λήψη","WEBSITE_DESKTOP_DEMO_VID":"Επίδειξη σε υπολογιστή","WEBSITE_PAGE_HOME":"Αρχική","WEBSITE_PAGE_FEATURES":"Λειτουργίες","WEBSITE_PAGE_ADDONS":"Πρόσθετα","WEBSITE_PAGE_TECH":"Τεχνολογία","WEBSITE_PAGE_CREATE_ADDON":"Δημιουργία προσθέτου","WEBSITE_PAGE_CONTACTS":"Επαφές","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Ταινίες","WEBSITE_TYPE_series_PL":"Σειρές","WEBSITE_TYPE_tv":"Ζωντανή τηλεόραση","WEBSITE_TYPE_channel":"Κανάλια","WEBSITE_STREMIO_WHAT_IS":"Το Stremio είναι μια εφαρμογή που σας βοηθά να οργανώσετε και να παρακολουθήσετε άμεσα τα αγαπημένα σας βίντεο, ταινίες, σειρές και τηλεοπτικά κανάλια.","WEBSITE_FEATURES_WATCH":"Άμεση παρακολούθηση σε HD","WEBSITE_FEATURES_WATCH_DETAIL":"Κάντε κλικ και δείτε τις αγαπημένες σας ταινίες, εκπομπές, βίντεο και κανάλια.","WEBSITE_FEATURES_SUBS":"Αυτόματοι υπότιτλοι","WEBSITE_FEATURES_SUBS_DETAIL":"Το Stremio επιλέγει αυτόματα συγχρονισμένους υπότιτλους στη γλώσσα σας.","WEBSITE_FEATURES_SUBS_LABEL":"Εσύ αποφασίζεις.","WEBSITE_FEATURES_CAST":"Αναπαραγωγή σε τηλεόραση & κινητές συσκευές","WEBSITE_FEATURES_CAST_DETAIL":"Μετάδοση σε AppleTV, Chromecast, Smart TV (DLNA/UPnP) και κινητές συσκευές.","WEBSITE_LIB":"Η προσωπική σας βιβλιοθήκη σε όλες τις συσκευές σας","WEBSITE_LIB_COLLECT":"Συλλογή από Stremio","WEBSITE_LIB_IMPORT":"Εισαγωγή από Facebook","WEBSITE_LIB_LOCAL":"Προσθήκη από τοπικό δίσκο","WEBSITE_BOARD":"Ο πίνακας - Ένα ενιαίο μέρος για ειδοποιήσεις και προτάσεις","WEBSITE_BOARD_RECOMMEND":"Προτεινόμενη εκπομπή","WEBSITE_BOARD_TRENDING":"Δημοφιλής ταινία","WEBSITE_BOARD_NEW":"Νέο βίντεο","WEBSITE_BOARD_EPISODE":"Νέο επεισόδιο","WEBSITE_BOARD_1":"Ψάχνετε να παρακολουθήσετε κάτι ενδιαφέρον; Λάβετε προτάσεις βάσει των προτιμήσεών σας!","WEBSITE_BOARD_2":"Ειδοποιηθείτε όταν κυκλοφορήσει ένα νέο επεισόδιο της αγαπημένης σας εκπομπής ή καναλιού YouTube!","WEBSITE_BOARD_YOUTUBE":"Νέα βίντεο καναλιών YouTube","WEBSITE_BOARD_EPISODES":"Νέα επεισόδια των σειρών που ακολουθείτε","WEBSITE_ADDONS":"Πρόσθετα περιεχομένου","WEBSITE_TECH_DETAIL":"Αγαπούμε την τεχνολογία και την επιστήμη!\\nΤο Stremio χρησιμοποιεί τις εξής τεχνολογίες ανοικτού κώδικα:","WEBSITE_TECH_WCJS":"Το WebChimera.js επιτρέπει στο Stremio την αναπαραγωγή οποιασδήποτε μορφής βίντεο με καλές επιδόσεις.","WEBSITE_TECH_WCJS_EXTRA":"Είμαστε οι βασικοί συντελεστές του έργου","WEBSITE_TECH_ELECTRON":"Το Electron αποτελεί μια καινοτόμα πλατφόρμα για την ανάπτυξη του Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Είμαστε συντελεστές του έργου","WEBSITE_TECH_LINVODB":"Μια τεχνολογία βάσης δεδομένων που εξασφαλίζει ότι τα δεδομένα σας είναι οργανωμένα και διαθέσιμα απ\' όπου κάνετε σύνδεση.","WEBSITE_TECH_LINVODB_EXTRA":"Τεχνολογία από εμάς","WEBSITE_CREATE_ADDON":"Δημιουργήστε το πρόσθετό σας","WEBSITE_CREATE_ADDON_DETAIL":"Διαθέτετε κάποια υπηρεσία παροχής περιεχομένου βίντεο; Θα σας βοηθήσουμε να επωφεληθείτε από τις δυνατότητες του Stremio δημιουργώντας το πρόσθετό σας.","WEBSITE_CREATE_ADDON_BENEFITS":"Οφέλη της δημιουργίας ενός προσθέτου για το Stremio","WEBSITE_P2P_BEAUTY":"Η άνεση και ομορφιά της ροής peer-to-peer","WEBSITE_P2P_1":"Αξιόπιστη και προσιτή προβολή Full HD/4K βίντεο on demand ή σε ζωντανή ροή","WEBSITE_P2P_2":"Πλατφόρμα διανομής με εξαιρετική εμπειρία χρήσης","WEBSITE_P2P_3":"Θα δημιουργήσουμε ένα πρόσθετο που θα καλύπτει απόλυτα τις ανάγκες σας","WEBSITE_P2P_CONTACT":"Σας ενδιαφέρει; Μπορείτε πάντα να επικοινωνήσετε μαζί μας.","WEBSITE_P2P_CONTACT_EXTRA":"Θα χαρούμε να σας βοηθήσουμε στην ενσωμάτωση του περιεχομένου σας στο Stremio!","WEBSITE_P2P":"Κατά καιρούς, εμφανίζεται μια τεχνολογία που αλλάζει το τοπίο. Επενδύσαμε πολύ χρόνο και προσπάθεια στην ανάπτυξη της δικής μας μηχανής ροής βίντεο Peer-to-Peer (P2P) που παρέχει εξαιρετικές επιδόσεις και ανταποκρίνεται σε κάθε είδους χρήση.\\nΕπικοινωνήστε μαζί μας για P2P βίντεο με DRM, on demand ή σε ζωντανή ροή.","WEBSITE_THOUGHTS":"Οι σκέψεις μας:","WEBSITE_SPREAD":"Μιλήστε σε άλλους για το Stremio:","WEBSITE_CONTACT":"Επικοινωνήστε μαζί μας, θα χαρούμε να σας ακούσουμε!","WEBSITE_OPENSOURCE":"Για τα έργα μας με ανοικτό κώδικα, μεταβείτε στο","WEBSITE_BITCOIN":"Δωρεά bitcoin:","WEBSITE_FAQ":"Συχνές ερωτήσεις","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Ερωτήσεις","WEBSITE_TOS":"Όροι χρήσης","WEBSITE_LEGAL":"Νομικά","WEBSITE_PAGE_ABOUT":"Πληροφορίες","WEBSITE_PAGE_BECOME_PARTNER":"Γίνετε συνεργάτης","WEBSITE_ALL_YOU_CAN_WATCH":"Δείτε ό,τι θέλετε, ελεύθερα.","WEBSITE_FREEDOM_TO_STREAM":"Ελευθερία στο streaming","WEBSITE_WHAT_IS_STREMIO":"Τι είναι το Stremio;","WEBSITE_WHAT_IS_STREMIO_P1":"Το Stremio αποτελεί ένα ενιαίο κέντρο για περιεχόμενο βίντεο. Ανακαλύψτε, οργανώστε και παρακολουθήστε βίντεο από όλα τα είδη πηγών σε οποιαδήποτε συσκευή σας.","WEBSITE_WHAT_IS_STREMIO_P2":"Ταινίες, εκπομπές, σειρές, ζωντανή τηλεόραση ή διαδικτυακά κανάλια, όπως το YouTube και το Twitch.tv - μπορείτε να τα βρείτε όλα στο Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Το Stremio είναι ένα σύγχρονο κέντρο πολυμέσων για όλο σας το ψυχαγωγικό περιεχόμενο βίντεο. Ανακαλύψτε, παρακολουθήστε και οργανώστε το περιεχόμενο βίντεο με εύχρηστα πρόσθετα.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Ταινίες, εκπομπές, ζωντανή τηλεόραση ή διαδικτυακά κανάλια - βρείτε τα όλα στο Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Απολαύστε σε όλες τις συσκευές πολυμέσων σας","WEBSITE_DEVICES_COLLECT":"Συλλογή από Stremio","WEBSITE_DEVICES_IMPORT_FB":"Εισαγωγή από Facebook","WEBSITE_DEVICES_LOCAL":"Προσθήκη από τοπικό δίσκο","WEBSITE_JOIN_THE_PARTY_NOW":"Ελάτε κι εσείς στο πάρτι","WEBSITE_DEVICES_ALL":"Εύκολο στη χρήση σε όλες σας τις συσκευές·","WEBSITE_EXTENDABLE_CATALOG":"Απεριόριστα επεκτάσιμος κατάλογος βίντεο·","WEBSITE_ORGANIZE_YOUR_MEDIA":"Εξαιρετικές δυνατότητες οργάνωσης πολυμέσων·","WEBSITE_AS_SEEN_ON":"Γνώμες από τον τύπο","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Σχετικά με εμάς","WEBSITE_LINK_TECHNOLOGY":"Τεχνολογία","WEBSITE_LINK_APPS":"Εφαρμογές","WEBSITE_LINK_DOWNLOADS":"Λήψεις","WEBSITE_MORE":"Περισσότερα","WEBSITE_LINK_ADDONS":"Πρόσθετα","WEBSITE_LINK_ADDON_SDK":"SDK προσθέτων","WEBSITE_LINK_CONTRIBUTE":"Συνεισφορά","WEBSITE_LINK_COMMUNITY":"Κοινότητα","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & ακόμα πιο πολλά","WEBSITE_LINK_HELP":"Κέντρο βοήθειας","WEBSITE_LINK_CONTACTS":"Επαγγελματικές ερωτήσεις","WEBSITE_LINK_TOS":"Όροι & προϋποθέσεις","WEBSITE_LINK_PRAVACY":"Πολιτική απορρήτου","WEBSITE_SUBSCRIBE":"Συνδρομή","WEBSITE_NEWSLETTER":"Εγγραφείτε στο ενημερωτικό μας δελτίο για απίθανα πράγματα","WEBSITE_PLACEHOLDER_EMAIL":"Το email σας","WEBSITE_COMMUNITY":"Κοινότητα","WEBSITE_LINK_PRAVACY_LEGAL":"Απόρρητο & νομικά","WEBSITE_WHY":"Γιατι το κανουμε","WEBSITE_WHY_P1":"Στο Stremio, εργαζόμαστε καθημερινά επειδή θέλουμε να επιλύσουμε ένα σημαντικό πρόβλημα της βιομηχανίας βίντεο on demand. Υπάρχει τόσο πολύ νέο περιεχόμενο που δημοσιεύεται κάθε λεπτό, που είναι σχεδόν αδύνατο να το διαχειριστείτε.","WEBSITE_WHY_P2":"Βοηθούμε τους ανθρώπους να πλοηγηθούν σε αυτόν τον τεράστιο κόσμο βίντεο ψυχαγωγίας και να ανακαλύψουν νέο περιεχόμενο. Οι εφαρμογές μας συνδυάζουν ταινίες, σειρές, ζωντανή τηλεόραση, διαδικτυακά κανάλια και πολλά άλλα. Έχουμε αφοσιωθεί στο να κάνουμε την εύρεση τίτλων εξαιρετική εύκολη για τους χρήστες μας.","WEBSITE_WHY_P3":"Μπορείτε να χρησιμοποιήσετε την υπηρεσία μας σε οποιαδήποτε συσκευή και ανά πάσα στιγμή, καθιστώντας το Stremio το μοναδικό κέντρο ψυχαγωγίας βίντεο που θα χρειαστείτε.","WEBSITE_TEAM":"Ομάδα","WEBSITE_TEAM_P":"Η ομάδα του Stremio είναι μικρή αλλά ισχυρή: τα δέκα μέλη της γράφουν κώδικα σε X γλώσσες και μοιράζονται εμπειρία στην ανάπτυξη λογισμικού, στον σχεδιασμό UI και UX, στο μάρκετινγκ και στη διαφήμιση, καθώς και στις επιχειρήσεις.","WEBSITE_FEATURES":"Λειτουργίες","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Εύκολη ανακάλυψη νέου περιεχομένου","WEBSITE_FEATURES_DISCOVER_P":"Ανακαλύψτε εύκολα νέες ταινίες, εκπομπές, σειρές και κανάλια. Περιηγηθείτε κατά κατηγορία, είδος, βαθμολογία, πρόσφατη προβολή κ.λπ. ή απλά πληκτρολογήστε ένα όνομα. Το Stremio κάνει πανεύκολη την εύρεση νέου περιεχομένου.","WEBSITE_FEATURES_ALL_CONTENT":"Όλο σας το περιεχόμενο σε μία οθόνη","WEBSITE_FEATURES_ALL_CONTENT_P1":"Δείτε ποιες ταινίες, σειρές ή βίντεο δεν τελειώσατε και συνεχίστε την παρακολούθηση τους· λάβετε ειδοποιήσεις για νέα επεισόδια και κυκλοφορίες· περιηγηθείτε στις προτάσεις που θα λάβετε βάσει των συνηθειών παρακολούθησής σας.","WEBSITE_FEATURES_LIBRARY":"Οργάνωση βιβλιοθήκης βίντεο","WEBSITE_FEATURES_LIBRARY_P1":"Προσθέστε οποιονδήποτε τίτλο στη βιβλιοθήκη του Stremio σας με ένα μόνο κλικ και πλοηγηθείτε στο περιεχόμενό σας, οργανωμένο κατά τύπο, πρόσφατη προβολή ή αλφαβητική σειρά.","WEBSITE_FEATURES_CALENDAR":"Εποπτεία όλων όσων παρακολουθείτε","WEBSITE_FEATURES_CALENDAR_P1":"Δείτε ένα ημερολόγιο με όλες τις ταινίες και σειρές που προσθέτετε στη βιβλιοθήκη σας. Εξαγάγετε και συγχρονίστε το ημερολόγιο σας, ώστε να γνωρίζετε πάντα πότε θα κυκλοφορήσει ένα νέο επεισόδιο ή μια νέα σειρά.","WEBSITE_FEATURES_BIG_SCREEN":"Απολαύστε το περιεχόμενό σας σε μεγαλύτερη οθόνη","WEBSITE_FEATURES_BIG_SCREEN_P1":"Μεταδώστε ό,τι παρακολουθείτε σε μια άλλη συσκευή - σε τηλέφωνο, tablet ή τηλεόραση TV με ένα μόνο κλικ.","WEBSITE_FEATURES_SOURCES":"Προβολή βίντεο από πολλές διαφορετικές πηγές","WEBSITE_FEATURES_SOURCES_P":"Εγκαταστήστε επίσημα πρόσθετα και πρόσθετα κοινότητας για να απολαμβάνετε βίντεο από πολλούς διαφορετικούς παρόχους - όλα σε μία κομψή, εύχρηστη εφαρμογή.","WEBSITE_CREATE_AN_ADDON":"Δημιουργία προσθέτου","WEBSITE_FEATURES_SYNC":"Συγχρονίστε τη βιβλιοθήκη σας σε πολλαπλές συσκευές και συνεχίστε την αναπαραγωγή","WEBSITE_FEATURES_SYNC_P1":"Συνδεθείτε με τον λογαριασμό σας σε όλες τις συσκευές σας και απολαύστε τον συγχρονισμό της βιβλιοθήκης, των προσθέτων, της αναπαραγωγής και του ημερολογίου σας.","WEBSITE_FEATURES_EXTENDABLE":"Επεκτάσιμος κατάλογος βίντεο με τα πρόσθετα","WEBSITE_FEATURES_EXTENDABLE_P1":"Ο κατάλογος προσθέτων του Stremio παρέχει πολυάριθμα πρόσθετα για την παρακολούθηση ποικίλου περιεχομένου βίντεο. Δείτε ταινίες, εκπομπές, ζωντανή τηλεόραση, αθλήματα, ειδήσεις, podcast, διαδικτυακά κανάλια, βιντεοπαιχνίδια και πολλά άλλα.","WEBSITE_FEATURES_AUTO_SUBS":"Αυτόματοι υπότιτλοι","WEBSITE_FEATURES_AUTO_SUBS_P1":"Με τα πρόσθετα υποτίτλων μας, καθορίζονται αυτόματα οι επιλογές για την προτιμώμενη γλώσσα σας.","WEBSITE_FEATURES_CHROMECAST":"Μετάδοση σε Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Απολαύστε το περιεχόμενό σας σε μια μεγαλύτερη οθόνη ή μεταδώστε ό,τι βλέπετε σε μια άλλη συσκευή.","WEBSITE_FEATURES_KEEP_TRACK":"Εποπτεία των αγαπημένων σειρών και καναλιών σας","WEBSITE_FEATURES_KEEP_TRACK_P1":"Δείτε ένα ημερολόγιο και λάβετε ειδοποιήσεις για νέα επεισόδια των αγαπημένων σας σειρών και καναλιών.","WEBSITE_FEATURES_POWER_USER":"Λειτουργίες για έμπειρους χρήστες","WEBSITE_FEATURES_POWER_USER_P1":"Αναπαραγωγή σε εξωτερικό πρόγραμμα","WEBSITE_FEATURES_POWER_USER_P2":"Αναπαραγωγή από αρχείο torrent ή σύνδεσμο magnet","WEBSITE_FEATURES_POWER_USER_P3":"Εισαγωγή στη βιβλιοθήκη από αγαπημένα στο Facebook ή τον τοπικό δίσκο","WEBSITE_ADD_ONS":"Πρόσθετα","WEBSITE_ADD_ONS_P1":"Όλο το περιεχόμενο που παρέχει το Stremio προέρχεται από ένα σύστημα προσθέτων - δεν ενσωματώνεται καθόλου περιεχόμενο και κανένας πάροχος στην εφαρμογή.","WEBSITE_ADD_ONS_P2":"Υπάρχουν δύο ομάδες διαθέσιμων προσθέτων: επίσημα πρόσθετα και πρόσθετα κοινότητας.","WEBSITE_ADD_ONS_P3":"Τα επίσημα αναπτύσσονται και φιλοξενούνται από το Stremio, ενώ τα πρόσθετα κοινότητας δημιουργούνται και φιλοξενούνται από τα μέλη της κοινότητάς μας.","WEBSITE_ADDONS_OFFICIAL":"Επίσημα πρόσθετα","WEBSITE_ADDONS_WATCHUB":"Δείτε τις αγαπημένες σας ταινίες, σειρές και εκπομπές από παρόχους, όπως το iTunes, το Hulu, το Amazon και άλλες υπηρεσίες των ΗΠΑ/ΗΒ.","WEBSITE_ADDONS_YOUTUBE":"Παρακολουθήστε τα αγαπημένα σας κανάλια YouTube χωρίς διαφημίσεις και λάβετε ειδοποιήσεις για νέες μεταφορτώσεις από τους δημιουργούς που ακολουθείτε.","WEBSITE_ADDONS_FILMON":"Παρακολουθήστε ζωντανή τηλεόραση, ταινίες και εκπομπές δωρεάν. 600 τηλεοπτικά κανάλια, 45.000 δωρεάν ταινίες, ντοκιμαντέρ και πολλά άλλα.","WEBSITE_ADDONS_OPENSUBTITLES":"Υπότιτλοι ταινιών και σειρών σε πολλαπλές γλώσσες, μεταφορτώνονται χιλιάδες μεταφρασμένοι υπότιτλοι καθημερινά.","WEBSITE_ADDONS_COMMUNITY":"Πρόσθετα κοινότητας","WEBSITE_ADDONS_FILMON_VOD":"Παρακολουθήστε βίντεο on demand από το Filmon.tv","WEBSITE_ADDONS_TWICH":"Παρακολουθήστε ζωντανές ροές από το Twitch.tv - μια πλατφόρμα ροής βίντεο για τη βιομηχανία των e-sports.","WEBSITE_ADDONS_VODO":"Παρακολουθήστε ανεξάρτητες ταινίες εντελώς δωρεάν.","WEBSITE_ADDONS_NETFLIX":"Παρακολουθήστε ταινίες και σειρές του Netflix.","WEBSITE_ADDONS_CREATE":"Δημιουργία προσθέτου","WEBSITE_ADDONS_CREATE_P1":"Εάν το επιθυμείτε, μπορείτε να αναπτύξετε το δικό σας πρόσθετο. Με αυτόν τον τρόπο, μπορείτε να παραχωρήσετε στον εαυτό σας και στην κοινότητά μας πρόσβαση σε νέο περιεχόμενο βίντεο και να προσεγγίσετε ένα νέο κοινό εκατομμυρίων χρηστών παγκοσμίως.","WEBSITE_ADDONS_START_CREATE":"Για να ξεκινήσετε, επισκεφθείτε τη σελίδα του SDK προσθέτων του Stremio:","WEBSITE_DOWNLOADS":"Λήψεις","WEBSITE_DOWNLOADS_P1":"Για βέλτιστες επιδόσεις, προτείνουμε τη χρήση της πιο πρόσφατης έκδοσης των εφαρμογών Stremio. Αν όμως, για κάποιο λόγο, θέλετε να χρησιμοποιήσετε μια παλαιότερη έκδοση, μπορείτε να τη βρείτε εδώ.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio για Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio για macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio για Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio για Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio για Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio για φορητή συσκευή Android","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio για το Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio για iOS (περιορισμένη έκδοση)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Συνεισφορά","WEBSITE_CONTRIBUTE_P1":"Η πλατφόρμα του Stremio είναι ανοικτού κώδικα και μπορείτε εύκολα να δημιουργήσετε ένα πρόσθετο για περιεχόμενο που δεν παρέχεται αυτήν τη στιγμή.","WEBSITE_CONTRIBUTE_WHY":"Γιατί να δημιουργήσετε ένα πρόσθετο;","WEBSITE_CONTRIBUTE_WHY_P1":"Βρείτε νέο κοινό για τα βίντεό σας","WEBSITE_CONTRIBUTE_WHY_P2":"Η βάση χρηστών του Stremio αυξάνεται ταχύτατα - μέσα στο πρώτο έτος κυκλοφορίας, το Stremio απέκτησε 1 εκατομμύριο χρήστες σε όλο τον κόσμο, ενώ το δεύτερο έτος της ύπαρξης της πλατφόρμας ο αριθμός αυτός έφτασε τα 2,5 εκατομμύρια.","WEBSITE_CONTRIBUTE_WHY_P3":"Με το πρόσθετό σας, μπορείτε εύκολα να προσεγγίσετε και να διανείμετε το περιεχόμενο σε αυτό το κοινό.","WEBSITE_CONTRIBUTE_ALL":"Παρακολουθήστε τις αγαπημένες σας ταινίες, σειρές, βίντεο και κανάλια σε ένα ενιαίο μέρος.","WEBSITE_CONTRIBUTE_ALL_P1":"Είστε λάτρης ενός συγκεκριμένου τύπου περιεχομένου που δεν διατίθεται ακόμα στο Stremio; Δημιουργήστε ένα πρόσθετο για αυτόν και απολαύστε τα αγαπημένα σας βίντεο σε ένα από τα μεγαλύτερα και πιο εύχρηστα κέντρα ψυχαγωγίας της αγοράς.","WEBSITE_CONTRIBUTE_ALL_P2":"Επιπλέον, θα έχετε την απεριόριστη ευγνωμοσύνη των υπόλοιπων μελών της κοινότητας του Stremio.","WEBSITE_CONTRIBUTE_MONETIZE":"Δημιουργήστε έσοδα με το πρόσθετό σας","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Μόλις αναπτύξετε ένα νέο πρόσθετο για το Stremio, μπορείτε εύκολα να δημιουργήσετε έσοδα μέσω πολλαπλών μεθόδων. Αν σκέφτεστε αυτήν την προοπτική, μπορείτε να επικοινωνήσετε μαζί μας στο ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - θα χαρούμε να ανταλλάξουμε συμβουλές μαζί σας σχετικά με τις επιλογές δημιουργίας εσόδων από τα πρόσθετα.","WEBSITE_CONTRIBUTE_TRANSLATE":"Γίνετε εθελοντής μεταφραστής","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Αν θέλετε να απολαύσετε τις εφαρμογές Stremio σε διαφορετικές γλώσσες, μπορείτε να συμμετάσχετε στην κοινότητα των εθελοντών μεταφραστών μας, οι οποίοι μας βοηθούν να προσθέσουμε εκδόσεις του Stremio σε πολλές διαφορετικές γλώσσες.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Θέλετε να ξεκινήσετε;","WEBSITE_TRANSALTE_STREMIO":"Μετάφραση του Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Επίσημες κοινότητες","WEBSITE_COMMUNITY_OFFICIALS_P1":"Γίνετε μέλος της αναπτυσσόμενης κοινότητας του Stremio. Ακολουθήστε μας στα κοινωνικά δίκτυα και μην ντραπείτε να πείτε ένα «γεια» - λατρεύουμε να γνωρίζουμε τους υποστηρικτές μας! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Ανεπίσημες κοινότητες","STREMIO_COMMUNITY_NL":"Stremio Ολλανδίας","STREMIO_COMMUNITY_BRASIL":"Stremio Βραζιλίας","STREMIO_COMMUNITY_GERMANY":"Stremio Γερμανίας","STREMIO_COMMUNITY_BELGIUM":"Stremio Βελγίου","STREMIO_COMMUNITY_FRANCE":"Stremio Γαλλίας","STREMIO_COMMUNITY_PORTUGAL":"Stremio Πορτογαλίας","STREMIO_COMMUNITY_ITALY":"Stremio Ιταλίας","STREMIO_COMMUNITY_UK":"Stremio ΗΒ","STREMIO_COMMUNITY_USA":"Stremio ΗΠΑ","STREMIO_COMMUNITY_MEXICO":"Stremio Μεξικού","STREMIO_COMMUNITY_ADDONS":"Πρόσθετα Stremio","STREMIO_COMMUNITY_AWESOME":"Το απίθανο Stremio","WEBSITE_COMMUNITY_PARTNERS":"Συνεργάτες και υποστηρικτές","WEBSITE_COMMUNITY_GOODIES":"Καλούδια Stremio","WEBSITE_COMMUNITY_WALLPAPERS":"Ταπετσαρίες","WEBSITE_COMMUNITY_ART":"Συλλογή κοινότητας","WEBSITE_LINK_ART":"Συλλογή κοινότητας","WEBSITE_CONTACT_US":"Επικοινωνία","WEBSITE_CONTACT_US_P1":"Αν έχετε τυχόν απορίες, σχόλια ή προτάσεις, μπορείτε να επικοινωνήσετε μαζί μας μέσω της παρακάτω φόρμας επικοινωνίας.","WEBSITE_CONTACT_US_P2":"Σημειώστε ότι εδρεύουμε στη Βουλγαρία, επομένως ενδέχεται να υπάρξει καθυστέρηση στην απάντησή σας λόγω διαφορών στις ζώνες ώρας.","WEBSITE_CONTACT_US_SUCCESS":"Το μήνυμά σας έχει αποσταλεί. Θα σας απαντήσουμε το συντομότερο δυνατόν.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Παρακαλούμε εισαγάγετε ένα έγκυρο email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Ποιο θέμα αφορά η ερώτησή σας;","WEBSITE_CONTACT_US_Q_OS":"Ποιο είναι το λειτουργικό σας σύστημα;","WEBSITE_CONTACT_US_PH_EMAIL":"Το email σας","WEBSITE_CONTACT_US_PH_MESSAGE":"Μήνυμα","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"Αποστολή","WEBSITE_CONTACT_US_Q_1":"Πώς κάνω εγκατάσταση;","WEBSITE_CONTACT_US_Q_2":"Πώς κάνω κατάργηση εγκατάστασης;","WEBSITE_CONTACT_US_Q_3":"(HTML) Πώς φτιάχνω λαζάνια;","WEBSITE_CONTACT_US_Q_4":"Πρόσθετα","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Τεχνολογία","WEBSITE_TECHNOLOGY_P1":"Αγαπάμε την τεχνολογία και την επιστήμη.
    Δείτε τι κρύβεται πίσω από το Stremio (είναι όλα ανοικτού κώδικα).","WEBSITE_TECHNOLOGY_P_QT":"Η ανάπτυξη λογισμικού για πολλαπλές πλατφόρμες, στα καλύτερά της.","WEBSITE_TECHNOLOGY_P_MPV":"Ένα δωρεάν, ανοικτού κώδικα, πρόγραμμα αναπαραγωγής πολυμέσων για πολλαπλές πλατφόρμες.","WEBSITE_TECHNOLOGY_P_RN":"Το React Native σας επιτρέπει να αναπτύσσετε εφαρμογές για κινητές συσκευές, μόνο με τη χρήση JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Ενσωματωμένο πλαίσιο πολυμέσων στην εφαρμογή για τη λήψη πολυμέσων.","WEBSITE_TECHNOLOGY_P_REALM":"Το Realm είναι μια πλατφόρμα για κινητές συσκευές και αντικαθιστά τα SQLite και Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Το Node.js είναι ένα ανοικτού κώδικα περιβάλλον εκτέλεσης JavaScript για όλες τις πλατφόρμες.","WEBSITE_TECHNOLOGY_P_RUST":"Η Rust είναι μια γλώσσα πολλαπλών προγραμματιστικών παραδειγμάτων, η οποία εστιάζει στην ασφάλεια και ειδικά στον ασφαλή ταυτοχρονισμό.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Συνεισφορά στο έργο","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Υπάρχουν δύο τρόποι συνεισφοράς στο Stremio για την περαιτέρω βελτίωση του προϊόντος.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Μπορείτε να δωρίσετε τις πολύτιμες γλωσσικές ικανότητές σας μεταφράζοντας την πλατφόρμα...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"ή","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... μπορείτε να αξιοποιήσετε τις ικανότητές σας στον προγραμματισμό για τη δημιουργία προσθέτων κοινότητας. ","WEBSITE_TRANSLATE_STREMIO":"Μετάφραση του Stremio","WEBSITE_404_OH_NO":"Ωχ όχι! Η σελίδα που ψάχνετε δεν είναι εδώ...","WEBSITE_GO_HOME":"Αρχική","WEBSITE_LINK_OTHER_DOWNLOADS":"Άλλες λήψεις","WEBSITE_FAQ_ABR":"Συχνές ερωτήσεις","WEBSITE_SUPPORT":"Υποστήριξη","WEBSITE_DOWNLOAD_4_0_BETA":"Λήψη του Stremio 4 Beta","WEBSITE_GET_FOR_DESKTOP":"Λήψη για υπολογιστή","WEBSITE_LINK_ADDON_COMPETITION":"Διαγωνισμός προσθέτων","WEBSITE_LINK_ART_CONTEST":"Καλλιτεχνικός διαγωνισμός","WEBSITE_MY_ACCOUNT":"Ο λογαριασμός μου","WEBSITE_MAINPAGE_FAQ_001_H1":"Τι είναι το Stremio;","WEBSITE_MAINPAGE_FAQ_001_P1":"Το Stremio είναι ένα σύγχρονο κέντρο πολυμέσων που σας επιτρέπει να παρακολουθήσετε τα πάντα.","WEBSITE_MAINPAGE_FAQ_002_H1":"Πώς λειτουργεί;","WEBSITE_MAINPAGE_FAQ_002_P1":"Μόλις εγκαταστήσετε το Stremio στη συσκευή σας και δημιουργήσετε έναν λογαριασμό, το μόνο που χρειάζεται να κάνετε είναι να επισκεφθείτε τον κατάλογο προσθέτων και να εγκαταστήσετε όποιο πρόσθετο επιθυμείτε. Αυτό ήταν!","WEBSITE_MAINPAGE_FAQ_002_P2":"Έπειτα, μπορείτε να μεταβείτε στις ενότητες «Ανακάλυψη» ή «Πίνακας» για να ξεκινήσετε την εξερεύνηση περιεχομένου.","WEBSITE_MAINPAGE_FAQ_003_H1":"Τι μπορώ να παρακολουθήσω εδώ;","WEBSITE_MAINPAGE_FAQ_003_P1":"Πολλά: Ταινίες, εκπομπές, διαδικτυακά κανάλια, αθλήματα, τηλεοπτικά κανάλια, podcasts και πολλά άλλα. Χάρη στο σύστημα προσθέτων μας, μπορείτε να προσπελάσετε μια ευρεία γκάμα περιεχομένου.","WEBSITE_MAINPAGE_FAQ_004_H1":"Είναι το Stremio λογισμικό ανοικτού κώδικα;","WEBSITE_MAINPAGE_FAQ_004_P1":"Ναι, μπορείτε να δείτε τους εξής συνδέσμους: ${1}εφαρμογή για υπολογιστές${2} και ${3}οργανισμός GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Είναι το Stremio ασφαλές;","WEBSITE_MAINPAGE_FAQ_005_P1":"Ναι. Επειδή είναι λογισμικό ανοικτού κώδικα, ο κώδικάς του είναι δημόσια διαθέσιμος και μπορείτε να τον ελέγξετε και εσείς.","WEBSITE_MAINPAGE_FAQ_006_H1":"Τι γίνεται με το απόρρητό μου;","WEBSITE_MAINPAGE_FAQ_006_P1":"Σεβόμαστε το απόρρητο των χρηστών και δεν συλλέγουμε κανένα προσωπικό δεδομένο, εκτός από τα απολύτως απαραίτητα στοιχεία για τη δημιουργία και τον συγχρονισμό του λογαριασμού σας.","WEBSITE_MAINPAGE_FAQ_006_P2":"Υπάρχει επίσης η ${1}λειτουργία επισκέπτη${2} κατά την εγγραφή, η οποία δεν απαιτεί καθόλου δεδομένα: σε αυτήν τη λειτουργία, δεν γίνεται καμία κλήση στο παρασκηνιακό μας σύστημα. Ωστόσο, δεν περιέχει ορισμένες χρήσιμες λειτουργίες, όπως η δυνατότητα συγχρονισμού βιβλιοθήκης με άλλες συσκευές.","WEBSITE_MAINPAGE_FAQ_007_H1":"Μπορώ να κάνω μετάδοση στην τηλεόρασή μου;","WEBSITE_MAINPAGE_FAQ_007_P1":"Ναι, υποστηρίζουμε Chromecast και μπορείτε να κάνετε μετάδοση τόσο από τον υπολογιστή, όσο και από την κινητή σας συσκευή (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Πόσα πρόσθετα διαθέτει το Stremio;","WEBSITE_MAINPAGE_FAQ_008_P1":"Από τα τέλη του 2019, πάνω από 50 - για περισσότερες πληροφορίες, δείτε τον κατάλογο των προσθέτων μας.","WEBSITE_MAINPAGE_FAQ_009_H1":"Μπορώ να επεκτείνω τον κατάλογο προσθέτων του Stremio;","WEBSITE_MAINPAGE_FAQ_009_P1":"Ναι, ανατρέξετε στα εξής: ${1}PimpMyStremio${2}, ${3}κοινότητες Reddit${4}, ${5}Stremio Downloader${6}, κ.λπ.","WEBSITE_MAINPAGE_FAQ_010_H1":"Ποιες συσκευές υποστηρίζει το Stremio;","WEBSITE_MAINPAGE_FAQ_010_P1":"Διαθέτουμε εφαρμογές για Windows, Mac και Linux. Για τις κινητές συσκευές, υποστηρίζουμε Android και iOS, ωστόσο λάβετε υπόψη ότι η έκδοση για iOS διαθέτει περιορισμένη λειτουργικότητα (δεν υποστηρίζει τα περισσότερα πρόσθετα).","WEBSITE_MAINPAGE_FAQ_010_P2":"Υπάρχουν πολλές συσκευές που βασίζονται στο Android και μπορούν να εκτελέσουν το Stremio, όπως το NVIDIA Shield και το Amazon Fire Stick, αλλά δεν τις υποστηρίζουμε επίσημα.","WEBSITE_MAINPAGE_FAQ_011_H1":"Μπορείτε να προσθέσετε συγκεκριμένο περιεχόμενο στο Stremio;","WEBSITE_MAINPAGE_FAQ_011_P1":"Δυστυχώς, δεν παρέχουμε εμείς το περιεχόμενο, αλλά όσα περισσότερα πρόσθετε έχετε εγκαταστήσει στο Stremio, τόσο περισσότερο περιεχόμενο θα μπορέσετε να βρείτε.","WEBSITE_MAINPAGE_FAQ_012_H1":"Μπορεί το Stremio να κάνει αναπαραγωγή συνδέσμων magnet;","WEBSITE_MAINPAGE_FAQ_012_P1":"Ναι και μπορεί επίσης να κάνει αναπαραγωγή κανονικών συνδέσμων HTTP και αρχείων torrent (μεταφορά και εναπόθεση).","WEBSITE_MAINPAGE_FAQ_013_H1":"Μπορώ να κάνω λήψη ενός βίντεο για προβολή εκτός σύνδεσης;","WEBSITE_MAINPAGE_FAQ_013_P1":"Η διαθεσιμότητα εκτός σύνδεσης αποτελεί επερχόμενη λειτουργία, αλλά εάν επιτρέψετε στο Stremio την προσωρινή αποθήκευση στη συσκευή σας (από τον πίνακα ρυθμίσεων), μπορείτε να παρακολουθήσετε τα βίντεο αργότερα, χωρίς σύνδεση στο διαδίκτυο.","WEBSITE_MAINPAGE_FAQ_014_H1":"Δεν λειτουργεί τίποτα, βοήθεια!","WEBSITE_MAINPAGE_FAQ_014_P1":"Έχετε σίγουρα εγκαταστήσει πρόσθετα; Εάν ναι, δείτε το ${1}κέντρο βοήθειάς${2} μας.","WEBSITE_MAINPAGE_FAQ_015_H1":"Πώς υποστηρίζει το Stremio την ανάπτυξή του;","WEBSITE_MAINPAGE_FAQ_015_P1":"Προβάλλουμε μη παρεμβατικές διαφημίσεις περιστασιακά, αλλά εξετάζουμε το ενδεχόμενο να προχωρήσουμε σε ένα μοντέλο δωρεάς.","WEBSITE_MAINPAGE_FAQ_015_P2":"Για περισσότερες ερωτήσεις, μεταβείτε στο ${1}κέντρο βοήθειάς${2} μας.","HELP_LEARN_MORE":"Βοηθήστε μας να μάθουμε περισσότερα για εσάς.","LIFESTYLE":"Τρόπος ζωής","SPORTS":"Αθλήματα","FOOD_HEALTH":"Φαγητό & υγεία","BEAUTY_FASHION":"Ομορφιά & μόδα","NEWS":"Ειδήσεις","GAMING":"Παιχνίδια","SCIENCE_EDUCATION":"Επιστήμη & εκπαίδευση","MUSIC":"Μουσική","TRAVEL":"Ταξίδια","LATE_NIGHT":"Βραδινό","REALITY":"Ριάλιτι","COMEDY":"Κωμωδία","DIY":"Κατασκευές","TECH":"Τεχνολογία","CINEMA":"Κινηματογράφος","CONTINUE":"Συνέχεια","SLOW_LOADING":"Αργή Φόρτωση;","I_GIVE_UP":"Ακύρωση","LEARN_MORE":"Μάθετε περισσότερα","POOR_SOURCE":"Αυτή η πηγή δεν είναι επαρκώς διαθέσιμη ή η σύνδεση σας στο διαδίκτυο δεν είναι αρκετά γρήγορη","PICK_CATEGORIES_ERR":"Πρέπει να επιλέξετε τουλάχιστον 3 κατηγορίες","ADJUST_TIMING":"Προσαρμογή χρονισμού με ","ADJUST_SIZE":"Προσαρμογή μεγέθους με ","SEARCH_ANYTHING":"Μπορείτε να αναζητήσετε οτιδήποτε...","ALL_CATEGORIES":"Όλα","SEARCH_CATEGORIES":"Ταινίες, σειρές, YouTube & τηλεόραση","SEARCH_PERSONS":"Ηθοποιοί, σκηνοθέτες & σεναριογράφοι","SEARCH_PROTOCOLS":"Σύνδεσμοι HTTP & Magnet","SEARCH_TYPES":"Σύνδεσμοι IMDB/TVDB","WATCHED":"Προβλήθηκε","SHOW_LESS":"Λιγότερα","LAST_SEARCHES":"Πρόσφατες αναζητήσεις","CLEAR_HISTORY":"Απαλοιφή ιστορικού","CHOOSE_SOME":"ΕΠΙΛΕΞΤΕ ΚΑΠΟΙΑ ΑΠΟ ΑΥΤΑ:","NO_WEB_REMOTE":"Δεν ήταν δυνατή η φόρτωση του Web Remote","STREMIO_OFFLINE":"Το Stremio είναι εκτός σύνδεσης","STREMIO_EXPENSIVE_CONNECTION":"Εντοπίσαμε ότι χρησιμοποιείτε σύνδεση δεδομένων κινητής, θέλετε να συνεχίσετε;","USE_DATA":"Χρήση δεδομένων","WARNING":"Προειδοποίηση","MORE_INFO":"Περισσότερες πληροφορίες...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Φόρτωση...","STREMIO_TV_BACK_TO_LANGUAGES":"Πίσω στις γλώσσες","STREMIO_TV_REMOTE":"Τηλεχειριστήριο","STREMIO_TV_GO_TO":"Μεταβείτε στο:","STREMIO_TV_OR_SCAN":"ή σαρώστε το:","STREMIO_TV_ADDON_INSTRUCTIONS":"Παρακαλούμε ακολουθήστε τις οδηγίες για να εγκαταστήσετε τα προτιμώμενα πρόσθετά σας.","STREMIO_TV_LIVE_TV":"Ζωντανή TV","STREMIO_TV_RESUME_WATCHING":"Συνέχιση παρακολούθησης","STREMIO_TV_LOADING_BACKGROUND":"Φόρτωση παρασκηνίου","STREMIO_TV_CHECKING_AUTHENTICATION":"Έλεγχος ταυτοποίησης","STREMIO_TV_LOADING_BOARD":"Φόρτωση πίνακα","STREMIO_TV_LOGIN_HEADER_LINE_1":"Θέλουμε οι χρήστες μας να έχουν την καλύτερη δυνατή, εξατομικευμένη εμπειρία με το λογισμικό μας.","STREMIO_TV_LOGIN_HEADER_LINE_2":"Αυτός είναι ο λόγος που σας ζητούμε να δημιουργήσετε ή/και να συνδεθείτε στον λογαριασμό σας.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Σας ευχαριστούμε για την κατανόηση,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Η ομάδα του Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Για να χρησιμοποιήσετε το Web Remote με το smartphone/tablet/υπολογιστή σας:","STREMIO_TV_WIFI_SETUP":"Ρύθμιση Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Το Stremio Circle δεν εντόπισε σύνδεση στο διαδίκτυο.","STREMIO_TV_WIFI_DETAILS_1":"Συνδεθείτε στο:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Χρησιμοποιήστε τον κωδικό πρόσβασης:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Ανοίξτε ένα πρόγραμμα περιήγησης με τον σύνδεσμο:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Προεπιλεγμένο","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Από την τελευταία παρακολούθηση","STREMIO_TV_LIBRARY_SORT_NAME":"Από το όνομα","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Από τις φορές που παρακολουθήσατε","STREMIO_TV_DETAILS_SEASON_NUMBER":"Κύκλος ${1}","STREMIO_TV_STREAMS_LOADING":"Φορτωμένα ${1} / ${2} πρόσθετα...","STREMIO_TV_STREAMS_STILL_LOADING":"Το ${1} ακόμα φορτώνει ...","STREMIO_TV_PLAYER_SETTINGS":"Ρυθμίσεις προγράμματος αναπαραγωγής","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Καθυστέρηση υποτίτλων","STREMIO_TV_PLAYER_AUDIO_DELAY":"Καθυστέρηση ήχου","STREMIO_TV_PLAYER_VIDEO_SCALING":"Κλιμάκωση βίντεο","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Μη υποστηριζόμενη πηγή ροής","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Αποτυχία ανοίγματος εξωτερικού συνδέσμου","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Αναπαραγωγή με τον ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Αναπαραγωγή με τον libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Αλλαγή στον libVLC player λόγω σφάλματος αναπαραγωγής","STREMIO_TV_ADDONS_TITLE":"Χρησιμοποιήστε το Stremio στο τηλέφωνο ή τον υπολογιστή σας για να εγκαταστήσετε ή να διαμορφώσετε πρόσθετα και πατήστε \\"Συγχρονισμός πρόσθετων\\"","STREMIO_TV_ADDONS_SUBTITLE":"Σημείωση: βεβαιωθείτε ότι χρησιμοποιείτε τον ίδιο λογαριασμό Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Συγχρονισμός πρόσθετων","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Επιτυχής συγχρονισμός πρόσθετων","STREMIO_TV_ADDONS_SYNC_FAILED":"Αποτυχία συγχρονισμού πρόσθετων","STREMIO_TV_META_LINK_FAILED":"Αποτυχία ανοίγματος μετα-συνδέσμου","STREMIO_TV_CATALOG_LOADING":"Ο κατάλογος φορτώνει...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Η γλώσσα της εφαρμογής ενημερώθηκε","STREMIO_TV_SETTINGS_THEME_UPDATED":"Το θέμα ενημερώθηκε","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Προεπιλεγμένη εφαρμογή αναπαραγωγής","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"Εξωτερική εφαρμογή αναπαραγωγής","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Προτιμητέα γλώσσα","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Εναλλακτική Γλώσσα","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Πιθανά προβλήματα αναπαραγωγής σε ορισμένες συσκευές","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Ορισμένες μορφές βίντεο ενδέχεται να μην λειτουργούν","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Χωρίς προσωρινή αποθήκευση","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Προεπιλεγμένη","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Ήπιο","STREMIO_TV_SETTINGS_PROFILE_FAST":"Γρήγορο","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Πολύ γρήγορο","STREMIO_TV_SETTINGS_SERVER_URL":"URL διακομιστή ροής","STREMIO_TV_SETTINGS_SERVER_VERSION":"Έκδοση διακομιστή","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Άγνωστη","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Έκδοση του Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Επεξεργασία διεύθυνσης URL διακομιστή","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Εισαγάγετε μια διεύθυνση url διακομιστή ροής","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Για να διαβάσετε την Πολιτική Απορρήτου του Stremio, επισκεφτείτε:","STREMIO_TV_SETTINGS_TOS_TEXT":"Για να διαβάσετε τους Όρους και τις Προϋποθέσεις του Stremio, επισκεφτείτε:","STREMIO_TV_NAV_SEARCH":"Αναζήτηση","STREMIO_TV_NAV_HOME":"Αρχική","STREMIO_TV_NAV_DISCOVER":"Περιήγηση","STREMIO_TV_NAV_LIBRARY":"Βιβλιοθήκη","STREMIO_TV_NAV_MOVIES":"Ταινίες","STREMIO_TV_NAV_SERIES":"Σειρές","STREMIO_TV_NAV_CHANNELS":"Κανάλια","STREMIO_TV_NAV_TV":"Ζωντανά","STREMIO_TV_NAV_SETTINGS":"Ρυθμίσεις","STREMIO_TV_NAV_ADDONS":"Πρόσθετα","STREMIO_TV_LOGIN_TITLE":"Σύνδεση λογαριασμού","STREMIO_TV_LOGIN_EXPIRES_IN":"Λήγει σε","STREMIO_TV_LOGIN_STEP_ONE":"Σαρώστε τον κωδικό QR παραπάνω ή μεταβείτε στο","STREMIO_TV_LOGIN_STEP_TWO":"Συνδεθείτε στον λογαριασμό σας στο Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Νέος σύνδεσμος","STREMIO_TV_LOGIN_LINK_REFRESHED":"Ο κωδικός σύνδεσης ανανεώθηκε","STREMIO_TV_SEARCH_PLACEHOLDER":"Πληκτρολόγησε κάτι","STREMIO_TV_SEARCH_NO_ADDONS":"Δεν ζητήθηκαν πρόσθετα για καταλόγους!","STREMIO_TV_SEARCH_BUTTON":"Αναζήτηση","STREMIO_TV_SEARCH_KEY_DEL":"Διαγραφή όλων","STREMIO_TV_SEARCH_KEY_SPACE":"Κενό","STREMIO_TV_SEARCH_KEY_CLEAR":"Διαγραφή","STREMIO_TV_SEARCH_HISTORY_TITLE":"Ιστορικό αναζήτησης","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Μπορείτε να αναζητήσετε Τίτλους, Ηθοποιούς, Κανάλια και άλλα...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Διαγράψτε το ιστορικό αναζήτησης","STREMIO_TV_FILTERS_DESCRIPTION":"Επιλέξτε ένα από τα παρακάτω φίλτρα","FILTERS":"Φίλτρα","SETTINGS":"Ρυθμίσεις","ACCOUNT":"Λογαριασμός","LOGOUT":"Αποσύνδεση","THEMES":"Θέματα","PLAYBACK":"Αναπαραγωγή","PLAYBACK_SPEED":"Ταχύτητα Αναπαραγωγής","AUDIO_TRACKS":"Κομμάτια ήχου","VIDEOS":"Βίντεο","SERVER":"Διακομιστής","LINKS":"Σύνδεσμοι","ABOUT":"Πληροφορίες","INTERFACE":"Εμφάνιση","ANIMATIONS":"Οπτικά εφέ","STATUS":"Κατάσταση","LANGUAGE":"Γλώσσα","SIZE":"Μέγεθος","DELAY":"Καθυστέρηση","BOLD":"Έντονα γράμματα","TEXT_COLOR":"Χρώμα κειμένου","OUTLINE_COLOR":"Χρώμα περιγράμματος","BACKGROUND_COLOR":"Χρώμα φόντου","BACKGROUND_BLUR":"Θάμπωμα φόντου","SEEK_TIME_DURATION":"Διάρκεια χρόνου παράλειψης","AUTO_PLAY":"Αυτόματη αναπαραγωγή επόμενου επεισοδίου","PLAY_NOW":"Αναπαραγωγή τώρα","MARK_AS_WATCHED":"Επισήμανση ως προβεβλημένο","MARK_AS_UNWATCHED":"Επισήμανση ως μη προβεβλημένο","REWIND_TO_BEGINNING":"Προβολή από την αρχή","CONTINUE_WATCHING":"Συνεχίστε να βλέπετε","ALL":"Όλα","SECONDS":"Δευτερόλπετα","ON":"Ανοιχτοί","OFF":"Κλειστοί","RELOAD":"Επανάληψη φόρτωσης","EDIT_URL":"Επεξεργασία συνδέσμου URL","NONE":"Κανένα","EMBEDDED":"Ενσωματωμένοι","REMOTE_SWITCH_DEVICES":"Εναλλαγή συσκευών","REMOTE_VIDEOS":"Βίντεο","REMOTE_ADJUST_TIMING":"Προσαρμογή χρονισμού","REMOTE_ADJUST_SIZE":"Προσαρμογή μεγέθους","REMOTE_COULD_NOT_BE_LOADED":"Δεν ήταν δυνατή η φόρτωση του Web Remote","REMOTE_RETRY":"Επανάληψη","TORRENT_PROFILE_DEFAULT":"Προεπιλεγμένο","TORRENT_PROFILE_SOFT":"Ήπιο","TORRENT_PROFILE_FAST":"Γρήγορο","TORRENT_PROFILE_ULTRA_FAST":"Πολύ γρήγορο","FAQ_001_H1":"Τι είναι το Stremio;","FAQ_001_P1":"Το Stremio είναι ένα λογισμικό κέντρου πολυμέσων που έχει σχεδιαστεί για εύκολη πρόσβαση σε ψυχαγωγικά βίντεο. Σας επιτρέπει να οργανώσετε και να παρακολουθείτε την προσωπική σας συλλογή ταινιών, σειρών, καναλιών και ζωντανής τηλεόρασης.","FAQ_001_P2":"Το Stremio συλλέγει το περιεχόμενο, που προβάλλει σε εσάς, από τον τοπικό σας δίσκο και το σύστημα προσθέτων μας.","FAQ_001_P3":"Θα σας ειδοποιήσει επίσης όταν κυκλοφορήσουν νέα επεισόδια/βίντεο/ταινίες που σας ενδιαφέρουν και θα σας προσφέρει προτάσεις ταινιών.","FAQ_02_H1":"Πόσο μοιάζει το Stremio με το Kodi και το Plex;","FAQ_02_P1":"Έχουμε εμπνευστεί από αυτά τα δύο λογισμικά. Όμως έχουν διαφορετικούς στόχους - το Stremio αφορά αποκλειστικά τα ψυχαγωγικά βίντεο και προσπαθεί να γίνει η πιο γνωστή και εύχρηστη λύση.","FAQ_02_P2":"Το Stremio δεν θα προσφέρει ποτέ τόσες λειτουργίες και δυνατότητες προσαρμογής, όσες το Kodi και το Plex, αλλά είναι σημαντικά πιο απλό στη χρήση. ${1} Δοκιμάστε το κι εσείς ${2} :)","FAQ_03_H1":"Πόσο μοιάζει το Stremio με το Netflix;","FAQ_03_P1":"Το Netflix αποτελεί μία από τις εμπνεύσεις μας. Προσπαθούμε να επιτύχουμε την εμπειρία χρήσης του Netflix, σε συνδυασμό με πολλά άλλα «καλούδια». Το πιο σημαντικό όμως είναι ότι σας παρέχουμε την ελευθερία να διαχειρίζεστε τη δική σας βιβλιοθήκη και να προσθέτετε νέες πηγές περιεχομένου με το σύστημα προσθέτων μας.","FAQ_03_P2":"Αυτό καθιστά το Stremio απεριόριστα επεκτάσιμο, ώστε να μην περιορίζεστε ποτέ στο περιεχόμενο που αποφασίζει να προσθέσει το Netflix. Για παράδειγμα, μέσω του Stremio μπορείτε να παρακολουθήσετε περιεχόμενο από το ${1} Filmon.tv ${2}, το ${3} Twitch.tv${4}, το ${5}YouTube${6}, το ${7}Vodo${8}, ακόμα και από το ίδιο το ${9}Netflix${10}!","FAQ_04_H1":"Πόσο μοιάζει το Stremio με το Flipboard;","FAQ_04_P1":"Δεν λαμβάνουμε τόσο συχνά αυτήν την ερώτηση, εκτός αν μιλάμε με άτομα από νεοφυείς εταιρείες :)","FAQ_04_P2":"Το Stremio είναι εκ σχεδιασμού μια εφαρμογή συγκέντρωσης περιεχομένου, αποτελώντας πρακτικά ένα Flipboard για βίντεο. Αυτό είναι ιδιαίτερα προφανές στην ενότητα «Πίνακας», η οποία παρέχει καταλόγους και ειδοποιήσεις νέων επεισοδίων/βίντεο για όσα ακολουθείτε, όπως και το Flipboard.","FAQ_05_H1":"Πόσο μοιάζει το Stremio με το Popcorn Time;","FAQ_05_P1":"Το Stremio και το Popcorn Time μοιάζουν όσον αφορά το περιβάλλον χρήστη, επειδή δεν υπάρχουν και τόσοι πολλοί τρόποι για τη σωστή υλοποίηση ψυχαγωγικών καταλόγων βίντεο :)","FAQ_05_P2":"Ωστόσο, το Popcorn Time εστιάζει στη ροή torrent από συγκεκριμένες πηγές, ενώ το Stremio κάνει απλά συγκέντρωση περιεχομένου - δεν περιορίζεται σε μια συγκεκριμένη πηγή περιεχομένου.","FAQ_05_P3":"Επιπλέον, δεν παρέχουμε κανένα πρόσθετο για torrent από προεπιλογή, επομένως το Stremio δεν καλύπτει τις δυνατότητες του Popcorn Time με την επίσημη λειτουργικότητά του.","FAQ_05_P4":"Μια ακόμα αξιοσημείωτη διαφορά είναι ότι ο κώδικας του Popcorn Time είναι πλήρως ανοικτός, ενώ ο κώδικας του Stremio είναι ${1}μερικώς ανοικτός{2}.","FAQ_06_H1":"Θα προσθέσετε αυτήν την ταινία/σειρά;","FAQ_06_P1":"Δυστυχώς, όχι :(","FAQ_06_P2":"Όπως αναφέρουμε και σε πολλές άλλες απαντήσεις, το Stremio δεν παρέχει από μόνο του περιεχόμενο - όλα προστίθενται μέσω του συστήματος προσθέτων. Σε περίπτωση που έχετε κάποιο αίτημα περιεχομένου, μπορείτε να χρησιμοποιήσετε το κουμπί «Αναφορά» στο πρόγραμμα αναπαραγωγής, το οποίο θα στείλει ένα email στον δημιουργό του προσθέτου που χρησιμοποιείτε τη δεδομένη στιγμή.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Θα δημιουργήσετε πρόσθετο για το X;","FAQ_08_P1":"Είναι πολύ πιθανό.","FAQ_08_P2":"Αν έχετε κάποια ιδέα για ένα πρόσθετο, στείλτε μας ένα email στο ${1}office@stremio.com${2}, αλλά παρακαλούμε βεβαιωθείτε ότι η ιδέα σας δεν θα παραβιάσει κανένα πνευματικό δικαίωμα ή όρο χρήσης.","FAQ_08_P3":"Αυτήν τη στιγμή, τα επόμενά μας σχέδια περιλαμβάνουν πρόσθετα για το FandangoNOW, το Filmon.tv και το Crunchyroll.","FAQ_09_H1":"Το Stremio χρησιμοποιεί το BitTorrent;","FAQ_09_P1":"Ναι, το Stremio υποστηρίζει το BitTorrent ως πρωτόκολλο ροής. Μπορείτε να το χρησιμοποιήσετε με ένα πρόσθετο για torrent, με εναπόθεση ενός αρχείου .torrent στο Stremio ή με επικόλληση ενός συνδέσμου magnet στη γραμμή αναζήτησης.","FAQ_09_P2":"Παρακαλούμε σημειώστε ότι το μόνο επίσημο πρόσθετο που χρησιμοποιεί BitTorrent είναι το ${1}Vodo${2}, που παρέχει ανεξάρτητο περιεχόμενο για το οποίο επιτρέπεται η διανομή με BitTorrent.","FAQ_09_P3":"Δεν υποστηρίζουμε τη χρήση τρίτων προσθέτων που ενδέχεται να οδηγήσουν σε καταπάτηση πνευματικών δικαιωμάτων.","FAQ_10_H1":"Τι μπορώ να παρακολουθήσω στο Stremio με τα επίσημα πρόσθετα;","FAQ_10_P1":"Από προεπιλογή, μπορείτε να παρακολουθήσετε περιεχόμενο από το Filmon.tv, το YouTube και το Vodo στο Stremio, με το ενσωματωμένο πρόγραμμα αναπαραγωγής. Επιπροσθέτως, διαθέτουμε ένα πρόσθετο για το Twitch.tv και κάποιους άλλους παρόχους.","FAQ_10_P2":"Με όλα τα παραπάνω, παρέχεται μια συλλογή από:","FAQ_10_L1":"Δημοφιλή τηλεοπτικά κανάλια από το Filmon.tv - για παράδειγμα, το E4, το BBC, το Bollyworld TV","FAQ_10_L2":"Όλο το YouTube - για παράδειγμα, το BBC News, το Top Gear, το Vevo, τον PewDiePie","FAQ_10_L3":"Ανεξάρτητες ταινίες με το Vodo","FAQ_10_L4":"Διαδικτυακές μεταδόσεις παιχνιδιών με το Twitch.tv","FAQ_10_P3":"Επιπλέον, υπάρχουν πολλές πηγές περιεχομένου που παρέχονται από τα πρόσθετα Guidebox και Netflix, τα οποία δεν κάνουν αναπαραγωγή εξ ολοκλήρου εντός του Stremio, αλλά ανακατεύθυνση στην αντίστοιχη υπηρεσία. Για παράδειγμα, το πρόσθετο Guidebox σάς προσφέρει μια συλλογή από ταινίες που μπορείτε να παρακολουθήσετε δωρεάν στις ΗΠΑ, από υπηρεσίες όπως το TubiTV και το Crackle.","FAQ_11_H1":"Το Stremio δεν εγκαθίσταται, τι να κάνω;","FAQ_11_P1":"Εάν χρησιμοποιείτε Windows, δοκιμάστε ${1}αυτό το εναλλακτικό πρόγραμμα εγκατάστασης${2}.","FAQ_11_P2":"Εάν χρησιμοποιείτε Mac OS X, σημειώστε ότι δεν υποστηρίζουμε καμία έκδοση πριν από το OS X Mavericks (10.9).","FAQ_11_P3":"Εάν χρησιμοποιείτε Linux, σημειώστε ότι υποστηρίζουμε μόνο εκδόσεις 64-bit (x64) του Linux αυτήν τη στιγμή.","FAQ_11_P4":"Αν δεν μπορείτε ακόμα να λύσετε το πρόβλημά σας, παρακαλούμε στείλτε μας μήνυμα στην {1}ομάδα μας στο Facebook${2}.","FAQ_12_H1":"Γιατί με προειδοποιεί το πρόγραμμα προστασίας από ιούς; Είναι ασφαλές το Stremio;","FAQ_12_P1":"Σας διαβεβαιώνουμε ότι το Stremio είναι ${1}100% «καθαρό»${2}.","FAQ_12_P2":"Το λογισμικό σας, σάς προειδοποιεί επειδή το πρόγραμμα εγκατάστασής μας περιλαμβάνει διαφημίσεις, οι οποίες θεωρούνται ως ad-ware από ορισμένα προγράμματα προστασίας από ιούς.","FAQ_12_P3":"Αν ακόμα έχετε αμφιβολίες, μπορείτε να δοκιμάσετε το ${1}εναλλακτικό πρόγραμμα εγκατάστασής${2} μας.","FAQ_13_H1":"Πώς μπορώ να δημιουργήσω ένα πρόσθετο;","FAQ_13_P1":"Για αρχή, προτείνουμε να δείτε τη ${1}μονάδα του συστήματος προσθέτων${2} μας στο GitHub.","FAQ_13_P2":"Έπειτα, μπορείτε να ακολουθήσετε τον ${1}εισαγωγικό οδηγό${2} μας.","FAQ_13_P3":"Αν δεν διαθέτετε γνώσεις προγραμματισμού, παρακαλούμε αναφέρετε την ιδέα σας στην ${1}κοινότητα του Reddit${2} και επικοινωνήστε μαζί μας σχετικά με την ιδέα σας στο ${3}office@stremio.com${4}.","FAQ_14_H1":"Πώς δημοσιεύονται τα πρόσθετα;","FAQ_14_P1":"Όταν δημιουργήσετε ένα πρόσθετο και έναν κεντρικό υπολογιστή και προσθέσετε ένα πεδίο ακροσημείου (endpoint) στο αρχείο manifest σας, το οποίο δείχνει σε μια λειτουργική διεύθυνση προσθέτου, το πρόσθετο θα δημοσιευτεί αυτόματα στον ${1}κατάλογο προσθέτων${2} μας.","FAQ_14_P2":"Αυτό συμβαίνει επειδή το τμήμα διακομιστή της μονάδας stremio-addons κάνει αυτόματα κλήση στο API μας, προκειμένου να ανακοινώσει το πρόσθετο. Όταν το API μας επαληθεύσει το ακροσημείο (endpoint) σας ως έγκυρο πρόσθετο, τότε θα αρχίσει να εμφανίζεται στον κατάλογο.","FAQ_15_H1":"Μπορώ να εκτελέσω το Stremio στο πρόγραμμα περιήγησής μου;","FAQ_15_P1":"Προς το παρόν, όχι. Αλλά έρχεται σύντομα!","FAQ_15_P2":"Αν έχετε περιέργεια να δείτε μια πρώιμη έκδοση, μπορείτε να τη βρείτε εδώ: ${1}alpha4.strem.io${2}. Σημειώστε ότι η ροή είναι απενεργοποιημένη σε αυτήν την έκδοση. Υποστηρίζουμε τα Chrome, Firefox, Opera και Edge.","FAQ_16_H1":"Η μετάδοση σε τηλεόραση δεν λειτουργεί / οι υπότιτλοι δεν λειτουργούν","FAQ_16_P1":"Η μετάδοση σε τηλεόραση χρησιμοποιεί την τεχνολογία DLNA που δεν είναι κοινή για όλες τις μάρκες και τα μοντέλα τηλεοράσεων. Για τον λόγο αυτό, δεν μπορούμε να τη δοκιμάσουμε σε όλες τις περιπτώσεις, επομένως δεν είναι σε καμία περίπτωση τέλεια. Εργαζόμαστε για τη συνεχή βελτίωση της λειτουργίας, αλλά δεν μπορούμε να προσδιορίσουμε πότε θα αρχίσει να λειτουργεί κανονικά το DLNA στην τηλεόρασή σας.","FAQ_16_P2":"Αν δεν βλέπετε καν την τηλεόρασή σας στο μενού μετάδοσης, παρακαλούμε δοκιμάστε να απενεργοποιήσετε και να ενεργοποιήσετε εκ νέου τη σύνδεση δικτύου σας (στα Windows, κάντε δεξί κλικ στο «Δίκτυο» και επιλέξτε «Ενεργοποίηση/Απενεργοποίηση»). Επίσης, επανεκκινήστε το router, την τηλεόραση και τον υπολογιστή σας.","FAQ_16_P3":"Αν εξακολουθείτε να αντιμετωπίζετε ζητήματα, μπορείτε να μας βοηθήσετε στέλνοντας τη μάρκα και το μοντέλο της τηλεόρασής σας στο ${1}office@stremio.com${2}.","FAQ_16_P4":"Εν τω μεταξύ, προτείνουμε το Chromecast, το οποίο υποστηρίζουμε πολύ καλά ή μπορείτε απλά να συνδέσετε την τηλεόρασή σας στον υπολογιστή σας με ένα καλώδιο HDMI.","FAQ_17_H1":"Το Stremio «παγώνει» ή/και καταρρέει, τι μπορώ να κάνω;","FAQ_17_P1":"Πρώτα απ\' όλα, εάν χρησιμοποιείτε Windows 7 με το πρόγραμμα προστασίας AVG: υπάρχει πρόβλημα με αυτόν τον συνδυασμό. Το πρόβλημα έγκειται στο ίδιο το AVG και δεν υπάρχει κάποιος τρόπος να το επιλύσουμε από την πλευρά μας. Δυστυχώς, οι εξαιρέσεις ή η απενεργοποίηση του λογισμικού ασφαλείας δεν θα λειτουργήσει. Η μόνη λύση είναι να αντικαταστήσετε το AVG με κάποιο άλλο πρόγραμμα.","FAQ_17_P2":"Αν δεν είναι αυτό το πρόβλημα, αλλά χρησιμοποιείτε Windows, παρακαλούμε ενημερώστε στο πιο πρόσφατο Service Pack και ενημερώστε/εγκαταστήστε εκ νέου τα προγράμματα οδήγησης της GPU και έπειτα, δοκιμάστε ξανά.","FAQ_17_P3":"Αν δεν έχει επιλυθεί ακόμα το πρόβλημά σας ή χρησιμοποιείτε Mac ή Linux, παρακαλούμε στείλτε μας μια αναφορά με ακριβείς λεπτομέρειες για το πρόβλημα στην ${1}ομάδα μας στο Facebook${2}.","FAQ_18_H1":"Πώς μπορώ να δημιουργήσω ένα πρόσθετο;","FAQ_18_P1":"Για αρχή, προτείνουμε να δείτε τη ${1}μονάδα του συστήματος προσθέτων${2} μας στο GitHub.","FAQ_18_P2":"Έπειτα, μπορείτε να ακολουθήσετε τον ${1}εισαγωγικό οδηγό${2} μας.","FAQ_18_P3":"Αν δεν διαθέτετε γνώσεις προγραμματισμού, παρακαλούμε αναφέρετε την ιδέα σας στην ${1}κοινότητα του Reddit${2} και επικοινωνήστε μαζί μας σχετικά με την ιδέα σας στο ${3}office@stremio.com${4}.","FAQ_19_H1":"Γιατί το Stremio καταλαμβάνει χώρο στον δίσκο;","FAQ_19_P1":"Το Stremio διαθέτει τοπική προσωρινή μνήμη (cache) για την προσωρινή διατήρηση των αρχείων βίντεο που παρακολουθείτε.","FAQ_19_P2":"Αυτή έχει δύο πλεονεκτήματα: πρώτον, επιτρέπει στο Stremio να προφορτώσει το βίντεο για πιο ομαλή ροή. Δεύτερον, διατηρεί τα βίντεο στην τοπική προσωρινή μνήμη, ώστε να μπορείτε να τα παρακολουθείτε εκτός σύνδεσης.","FAQ_19_P3":"Μπορείτε να προσαρμόσετε το μέγεθος των αρχείων που επιτρέπεται να αποθηκεύει το Stremio με τη ρύθμιση Προσωρινή μνήμη του πίνακα ρυθμίσεων. Το Stremio μπορεί να διατηρήσει έως και το καθορισμένο μέγεθος (π.χ. 2GB) στον δίσκο σας, εκτός αν το τρέχον βίντεο ροής είναι μεγαλύτερο, στην οποία περίπτωση θα πρέπει το Stremio να δεσμεύσει επαρκή χώρο ώστε να διατηρήσει το βίντεο μέχρι να ολοκληρώσετε τη ροή του.","FAQ_20_H1":"Πού βρίσκεται ο φάκελος προσωρινής μνήμης;","FAQ_20_P1":"Στα Windows, είναι ο φάκελος «stremio-cache» στον δίσκο που επιλέξατε από τις Ρυθμίσεις (π.χ. «E:\\\\stremio-cache»)","FAQ_20_P2":"Στο MacOS, είναι στη διαδρομή «~/Library/Application Support/Stremio/stremio-cache»","FAQ_20_P3":"Στο Linux, είναι στη διαδρομή «~/.stremio/stremio-cache» ή «~/stremio-cache»","FAQ_21_H1":"Λαμβάνω το σφάλμα «Δεν βρέθηκε διακομιστής ροής», τι μπορώ να κάνω;","FAQ_21_P1":"Αν λάβετε αυτό το σφάλμα, υπάρχουν δύο πιθανές εξηγήσεις:","FAQ_21_P2":"1) Προσπαθείτε να χρησιμοποιήσετε ένα πρόσθετο με πηγή YouTube/BitTorrent, μέσω της ${1}διαδικτυακής έκδοσης${2}. Σε αυτήν την περίπτωση, θα πρέπει να εγκαταστήσετε την εφαρμογή μας για υπολογιστές από τον ${3}ιστότοπό${4} μας.","FAQ_21_P3":"2) Κάτι δεν πάει καλά με την εγκατάσταση του Stremio σας. Σε αυτήν την περίπτωση, δοκιμάστε να εγκαταστήσετε εκ νέου την πιο πρόσφατη έκδοση για υπολογιστές από τον ${1}ιστότοπό${2} μας. Αν αυτό δεν βοηθήσει, δοκιμάστε να απενεργοποιήσετε τα προγράμματα προστασίας από ιούς και τα τείχη προστασίας, επανεκκινήστε τον υπολογιστή σας και προσπαθήστε ξανά. Αν δεν λειτουργήσει ούτε αυτό, παρακαλούμε στείλτε μας μήνυμα στην ${3}ομάδα μας στο Facebook${4}.","FAQ_22_H1":"Δεν μπορώ να δω/χρησιμοποιήσω τα περισσότερα πρόσθετα στο iOS","FAQ_22_P1":"Λόγω των περιορισμών στους όρους και τις προϋποθέσεις του Apple App Store, διατίθεται μόνο ένα συγκεκριμένο σύνολο προσθέτων για την εφαρμογή του iOS.","FAQ_22_P2":"Αλλά μην ανησυχείτε - θα διατεθούν περισσότερα πρόσθετα για το iOS στο μέλλον και ίσως προστεθεί η δυνατότητα χρήσης όλων των προσθέτων του Stremio, χάρη στη σύνδεση της εφαρμογής για iOS με τον διακομιστή ροής του Stremio."}')},3865:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Movie","TYPE_series":"Series","TYPE_tv":"TV channel","TYPE_channel":"Channel","TYPE_other":"Other","TYPE_movie_PL":"Movies","TYPE_series_PL":"Series","TYPE_tv_PL":"TV channels","TYPE_channel_PL":"Channels","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Back","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Discover","Board":"Board","Library":"Library","My Library":"My Library","Calendar":"Calendar","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"search","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Add to Library","REMOVE_FROM_LIB":"Remove from Library","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Trailer","WATCH_TRAILER":"Watch Trailer","WATCH_NOW":"Watch Now","SHOW":"Show","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb Rating","YEAR":"Year","DIRECTOR":"Director","WRITER":"Writer","LEAD_ACTORS":"Lead Actors","CAST":"Cast","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Aired","SEASONS":"Seasons","GENRE":"Genre","CATALOG":"Catalog","SUMMARY":"Summary","SHOW_MORE":"Show More","SIMILAR":"Similar","UPCOMING":"Upcoming","ENDED":"Ended","DURATION":"Duration","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"search videos","SEARCH_PLACEHOLDER":"search or paste URL","ADDON":"addon","ADDONS":"Addons","OFFICIAL":"official","ADDONS_OFFICIAL":"Official Stremio Addons","ADDONS_POPULAR":"Popular in your area","ADDON_FREE":"free","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"subscription","ADDON_STREAM_GEORESTRICTED":"not available in your area","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Available Streams","NO_STREAM":"No streams were found","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Show all addons »","ADDON_CATALOGUE_MORE":"Install addons","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons collection already exist","ADDON_REPO_ERR":"Error occurred while adding collection","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Cannot uninstall addon, it is protected","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection URL","ERR_NOT_ADDON_URL":"Not a valid addon URL","ERR_DETECTFROMURL":"Cannot find addon/collection from this URL","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Syncing installed addons to your account failed","SETTINGS_DATA_EXPORT":"Export user data","ADDON_PULL_FAILED":"Syncing installed addons from your account failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Movie still in theaters","WATCH_IN_CINEMA":"Watch it in your local cinema","IN_THEATER":"In cinema","GET_TICKETS":"Get tickets","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.
    Please come back in a few minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Add it to your library to get notified once it is available.","GET_NOTIFIED_WHEN_AVAILABLE":"You will get notified once it is available.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from local files, YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streaming from","CASTING_TO":"Casting to","NETWORK_STATUS":"Network status","STREAM_SPEED":"Stream speed:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Active:","PEERS_CONNECTED":"Connected:","PEERS_WAITING":"Waiting:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"loading...","PLAYING_LOCAL":"playing from local file","PLAYING_CACHE":"playing from cache","WRONG_SUBS":"Wrong subtitles?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Choose a device to watch on","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Phone / Tablet","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Change subtitles for ","SUBTITLES_CHANGE_NONE":"There are no other subtitles for this language, sorry.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternatively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use G / H keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use G / H keys while playing to adjust.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Season","EPISODE":"Episode","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"recent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rating","SORT_WATCHED":"watched","SORT_YEAR":"year","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"Resume","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"Dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oscar Winners","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Warning: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Re-launch now!","UPGRADE":"New version is available! Upgrade to the latest Stremio version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Continue with Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"or","I_ACCEPT":"I accept the","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Terms and Conditions","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Passwords don\'t match","SIGN_UP":"Sign up","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Log in","LOG_OUT":"Log out","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Guest login","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"click here","WRONG_PASSWORD":"Wrong email or password. In case you have forgotten your password, ","SET_A_PASS":"set a password","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"This email was used with a Facebook login.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Activate this addon?","ADDON_REPO_ADD":"Addon collection URL","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"What\'s new","BUTTON_CONTINUE":"Continue","BUTTON_ACTIVATE":"Activate","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Cancel","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Here is how you can start:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from Facebook","IMPORT_TRAKT":"Import your media library from Trakt","IMPORT_DISCOVER":"Find interesting stuff from Discover","IMPORT_DISK":"Import movies or shows you have on your local disk","PLEASE_CREATE_ACC":"Please create an account to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from Discover","IMPORT_DISK_SIGNUP":"Sign up and import movies or shows you have on your local disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Change password","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Contact support","SETTING_LANGUAGE":"Language","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Quit","CONNECTED":"Connected","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"January","February":"February","March":"March","April":"April","May":"May","June":"June","July":"July","August":"August","September":"September","October":"October","November":"November","December":"December","Monday":"Monday","Tuesday":"Tuesday","Wednesday":"Wednesday","Thursday":"Thursday","Friday":"Friday","Saturday":"Saturday","Sunday":"Sunday","Action":"Action","Comedy":"Comedy","War":"War","Family":"Family","Animation":"Animation","Adventure":"Adventure","Fantasy":"Fantasy","Crime":"Crime","Mystery":"Mystery","Romance":"Romance","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Music","Biography":"Biography","Documentary":"Documentary","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon collections","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You Can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Subscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS (limited version)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Stremio 4 beta Now","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can access a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},3989:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filmo","TYPE_series":"Serio","TYPE_tv":"Televida Kanalo","TYPE_channel":"Kanalo","TYPE_other":"Alia","TYPE_movie_PL":"Filmoj","TYPE_series_PL":"Serioj","TYPE_tv_PL":"Televidaj kanaloj","TYPE_channel_PL":"Kanaloj","TYPE_other_PL":"Aliaj","TYPE_ALL":"All","VIDEO":"Video","BACK":"Malantaŭen","MORE":"Pli","DONE":"Farite","COPY":"Kopii","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Esplori","Board":"Tabulo","Library":"Biblioteko","My Library":"Mia biblioteko","Calendar":"Kalendaro","NOTIFICATION_ONLINE":"Nun vi estas enreta","NOTIFICATION_OFFLINE":"Nune vi estas eksterreta","INTERNET_CONNECTION":"Reta Konekto","STORAGE_FULL_TITLE":"Atentu: Via datumstoro estas plena!","STORAGE_FULL_TEXT":"Stremio ne kapablos savi viajn agordojn, preferojn aŭ ensalut-informacion. Konsideru re-ŝalti aŭ re-instali Stremio-n.","SEARCH":"serĉi","SEARCH_NO_RESULTS":"Neniuj rezultoj trovitaj","SEARCH_EXPLANATION_CONTENT":"Serĉi filmojn, seriojn, Youtube kaj TV-kanalojn","SEARCH_EXPLANATION_PEOPLE":"Serĉi aktorojn, reĝisorojn kaj verkistojn","SEARCH_PASTE_LINKS":"Algui HTTP kaj Magnetajn ligilojn","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Aldoni al Biblioteko","REMOVE_FROM_LIB":"Forigi el Biblioteko","ADDED_TO_LIB":"Aldonite al via Biblioteko","REMOVED_FROM_LIB":"Forigita el via Biblioteko","TRAILER":"Film-anonco (trailer)","WATCH_TRAILER":"Spekti Film-anoncon","WATCH_NOW":"Spekti Nun","SHOW":"Vidi","SHOW_MOVIE":"Montri Filmon","WATCH_RANDOM":"Vidi hazarze","IMDB_RATING":"IMDb Poentaro","YEAR":"Jaro","DIRECTOR":"Reĝisoro","WRITER":"Verkisto","LEAD_ACTORS":"Ĉefaj geaktoroj","CAST":"Rolularo","CREW":"Crew","SHOW_MORE_CAST":"Montri pli »","AIRED":"Aerumita","SEASONS":"Sezonoj","GENRE":"Ĝenro","CATALOG":"Katalogo","SUMMARY":"Resumo","SHOW_MORE":"Montri pli","SIMILAR":"Simila","UPCOMING":"Venonta","ENDED":"Finiĝita","DURATION":"Daŭro","FEATURED":"Elstara","METADATA":"Metadatoj","CATEGORY":"Kategorio","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"serĉi videojn","SEARCH_PLACEHOLDER":"Serĉi aŭ algui ligilon","ADDON":"aldonaĵo","ADDONS":"Aldonaĵoj","OFFICIAL":"oficiala","ADDONS_OFFICIAL":"Oficialaj Stremio-aj Aldonaĵoj","ADDONS_POPULAR":"Populara ĉe via regiono","ADDON_FREE":"senpaga","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Abono","ADDON_STREAM_GEORESTRICTED":"Ne disponebla ĉe via regiono","ADDON_STREAM_OFFLINECACHE":"Eksterreta Kaŝmemoro","ADDON_STREAM_LOCALFILE":"loka dosiero","SHARE_ADDON":"Konigi Aldonaĵon","AVAILABLE_STREAMS":"Disponeblaj elsendfluoj","NO_STREAM":"Neniu elsendfluo estis trovita","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Por trovi pli elsendfluojn, bonvolu instalu pli aldonaĵojn","STREAM_NOT_SUPPORTED":"La elektita elsendfluo ne estas suportata en ĉi plataformo.","ADDON_CATALOGUE":"Montri ĉiujn aldonaĵojn »","ADDON_CATALOGUE_MORE":"Instali aldonaĵojn","REPO_ADDED":"Deponejo aldonita","ADDON_REPO_EXIST_ERR":"Ĉi tiu aldonaĵa kolekto jam ekzistas","ADDON_REPO_ERR":"Eraro okazis dum aldonado de kolekto","ADDON_ADD_ERR":"Eraro okazis dum aldonado de aldonaĵo","ERR_ADDON_PROTECTED":"Oni ne povas malinstali la aldonaĵon, ĝi estas protektita","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Io misfunkciis - aŭtentikigo eble malsukcesis","ERR_NOT_COLLECTION_URL":"Ĉi tiu ne estas URL por kolekto ","ERR_NOT_ADDON_URL":"Ĉi tiu ne estas valida URL por aldonaĵo","ERR_DETECTFROMURL":"Oni ne povas trovi aldonaĵon/kolekton el ĉi tiu URL","ADDON_DUPLICATE_WARNING":"Atentu: duobligita aldonaĵo","ADDON_COLLECTION_SET_FAILED":"Sinkronigado de instalitaj aldonaĵoj al via konto malsukcesis","SETTINGS_DATA_EXPORT":"Eksportu uzantajn datumojn","ADDON_PULL_FAILED":"Sinkronigado de instalitaj aldonaĵoj el via konto malsukcesis","REFRESH_ON_CLICK":"Alklaku por reprovi","STILL_IN_THEATER":"Filmo ankoraŭ en kinejoj","WATCH_IN_CINEMA":"Spektu ĝin ĉe via loka kinejo","IN_THEATER":"Ĉe kinejo","GET_TICKETS":"Aĉeti boletojn","UPCOMING_EPISODE":"Venonta Epizodo","UPCOMING_EPISODE_MESSAGE":"Ĉi tiu epizodo estos elsendita","MISSING_DATE_EPISODE":"Dato de epizodo mankas","MISSING_DATE_EPISODE_MESSAGE":"Eble ĉi tiu epizodo ne elsendiĝis ankoraŭ","CHANNEL_NOT_SCRAPED":"Ĉi tiu kanalo ankoraŭ ne estis akirita.
    Bonvolu reveni post kelkaj minutoj.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Aldonu ĝin al via biblioteko por ricevi sciigon kiam ĝi estos disponebla.","GET_NOTIFIED_WHEN_AVAILABLE":"Vi estos sciigita kiam ĝi estos disponebla.","WARNING_STREAMING_SERVER":"Atentu: loka elsendfluservilo ne estis trovita. Elsendfluado el lokaj dosieroj, Youtube kaj BitTorrent ne estos disponeblaj.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Atentu: ĉi tiu video eble ne estas subtenita de via aparataro (hardware). Sciu, ke la ludado povas esti malrapida.","PLAYER_ERROR":"Ho ve, ludila eraro!","PLAYER_ERROR_LOOKSLIKE":"Ŝajnas ke","PLAYER_ORIENTATION":"Orientiĝo de la ludilo","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Ŝlosita","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensilo","PLAYER_ORIENTATION_LANDSCAPE":"Orientiĝo de la ludilo ŝlosita kiel pejzaĝa reĝimo","PLAYER_ORIENTATION_SENSOR":"Aŭtomata orientiĝo de la ludilo (per sensilo)","PLAYER_PLAYBACK_SPEED":"Rapideco","PLAYER_PLAYBACK_ERROR":"Ludila eraro, bonvolu reprovi","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Nekonata eraro","PLAYER_PLAYBACK_ERROR_DEFAULT":"Pardonon! Ĉi tiu video ne povas esti ludita per {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Sekvos","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Forĵeti","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Spekti nun","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"elsendado el","CASTING_TO":"Elsendante al","NETWORK_STATUS":"Reta stato","STREAM_SPEED":"Elsendada rapideco:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Active:","PEERS_CONNECTED":"Connected:","PEERS_WAITING":"Atendante:","TRANSCODING_WARNING":"Atentu: transcoding video.","STREAM_LOADING":"ŝargante...","PLAYING_LOCAL":"ludante el loka dosiero","PLAYING_CACHE":"ludante el kaŝmemoro","WRONG_SUBS":"Ĉu malĝustaj subtitoloj?","ERR_SUBS_LOADING_TITLE":"Eraro dum ŝarĝo de subtitoloj","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Elektu aparaton per kiun spekti","NO_CAST_DEVICES":"Ne disponeblas aparatoj por elsendi.","NO_SETTINGS":"Agordoj ne disponeblas.","PHONE_TABLET":"Phone / Tablet","SUBTITLES":"Subtitoloj","SUBTITLES_CHANGE":"Ŝangi subtitoloj por ","SUBTITLES_CHANGE_NONE":"Subtitloj por ĉi lingvo ne disponeblas, pardonon.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternative,","SUBTITLES_ADJUST_DELAY":"Sinkronigi subtitoloj:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Aŭ uzu G / H klavojn dum ludado por sinkronigi.","SUBTITLES_ADJUST_DELAY_TIP":"KONSILO: vi povas uzi G / H klavojn dum ludado por sinkronigi.","SUBTITLES_DELAY":"Subtitoloj sinkronado:","SUBTITLES_LOADING":"Ŝarĝante subtitoloj...","SUBTITLES_UNAVAILABLE":"Eksteraj subtitoloj ne disponeblas","SUBTITLES_DISABLED":"Malebligita","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sezono","EPISODE":"Episodo","SPECIAL":"Special","SORT":"ordigi","SORT_BY":"Ordigi laŭ ","FILTER":"filtri","SORT_TRENDING":"tendenca","SORT_RECENT":"lastatempa","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"poentaro","SORT_WATCHED":"vidita","SORT_YEAR":"jaro","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Nova por vi","New Episodes":"Novaj Epizodoj","New Videos":"Novaj Videoj","Recommendations":"Rekomendoj","LIBRARY_RESUME":"Daŭrigi","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Detaloj","LIBRARY_RESUME_DISMISS":"Forĵeti","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oskar-premiitoj","DISCOVER_WARNING_TITLE":"Ho ve!","DISCOVER_EMPTY_CATALOG":"Ĉi tiu aldonaĵo resendas malplenan enhavon.","DISCOVER_ADULT_WARNING":"La enhavo estas videbla nur por plenkreskuloj. Ĉu vi estas +18-aĝa?","DISCOVER_NOADDON_WARNING":"Atentu: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"La enhavo ne ŝargis, eraro okazis.","DISCOVER_ADDON_UNINSTALLED":"Ĉi tiu enhavo ne plu disponeblas, vi eble malinstalis la aldonaĵon.","UNINSTALL_THIS_ADDON":"Malinstali ĉi tiun aldonaĵon","ERR_ADDON_NOT_INSTALLED":"Ĉi tiu aldonaĵo ne estas instalita. Instali nun?","DETAIL_RECEIVE_NOTIF_SERIES":"Ricevi sciigoj de novaj epizodoj Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Ricevi sciigoj de novaj videoj","SIDEBAR_SHOW_STREAMS":"Montri elsendojn","RELAUNCH":"Remalfermi nun!","UPGRADE":"Nova versio estas disponebla! Ĝisdatigu Stremio-n a la lasta versio!","RELOAD_UI":"Reŝargi la uzantan interfacon","MANUAL_UPDATE_TITLE":"Ĝisdatigu vian Stremio version","MANUAL_UPDATE_LINE1":"Vi estas uzante malĝisdatiga version de Stremio, kion tute ne estas rekomendita.","MANUAL_UPDATE_LINE2":"Bonvolu ĝisdatigi kiel eble plej baldaŭ.","BUTTON_UPDATE_LATTER":"Ne nun","BUTTON_UPDATE_NOW":"Ĝisdatigi","ANONYMOUS_USER":"Anonima uzanto","DONT_HAVE_ACC":"Ĉu vi ankoraŭ ne havas konton?","HAVE_ACC":"Ĉu vi jam havas konton?","PASSWORD":"Pasvorto","PASSWORD_CONFIRM":"Konfirmu pasvorton","EMAIL":"Retpoŝto","FB_LOGIN":"Daŭri per Facebook","FB_NOTHINGSHARED":"Nenio estas disdonita sen via permeso","FB_NOPOST":"Ni ne afiŝos nenion en via nomo","OR":"aŭ","I_ACCEPT":"Mi akceptas la","I_ACCEPT_BY_CLICKING":"Alklakante la supran butonon mi atestas, ke mi akceptas la ","TOS":"Uzkondiĉoj","MUST_ACCEPT_TERMS":"Vi devas akcepti la uzkondiĉojn","PASSWORDS_NOMATCH":"Pasvortoj ne koincidas","SIGN_UP":"Registriĝi","SIGN_UP_EMAIL":"Registriĝi per retpoŝto","CLICK_TO_SIGN_UP":"Klaku ĉi por ensaluti.","LOG_IN":"Ensaluti","LOG_OUT":"Elsaluti","EXIT_FULLSCREEN":"Malplenekranigi","ENTER_FULLSCREEN":"Plenekranigi","PLAY_URL_MAGNET_LINK":"Ludi URL/Magneta ligilon","HELP_FEEDBACK":"Helpo kaj sugestoj","TERMS_OF_SERVICE":"Serv-kondiĉoj","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"Pri Stremio","USER_PANEL":"Uzantaj agordoj","LOGIN_LABEL":"Login","GUEST_LOGIN":"Ensaluti kiel gasto","GUEST_LOGIN_NOTICE":"Gasta ensaluto ne estas rekomendita. Uzado de regula ensaluto permesas al Stremio sinkronigi vian Bibliotekon, ricevi sciigojn pri viaj plej ŝatataj serioj/kanaloj. Ĉu vi certas, ke vi volas daŭrigi?","GUEST_LOGIN_NOTICE_2":"Gasta ensaluto ne estas rekomendita - vi ne havos sinkronigitajn sciigojn de Biblioteko kaj Estraro, kiuj estas esencaj funkcioj de Stremio. Ĉu vi certas, ke vi volas daŭrigi?","CLICK_HERE":"klaku ĉi-tie","WRONG_PASSWORD":"Erara retpoŝtadreso aŭ pasvorto. Se vi forgesis vian pasvorton, ","SET_A_PASS":"defini pasvorton","RESET_PASSWORD":"Restarigi pasvorton","FORGOT_PASSWORD":"Ĉu vi forgesis vian pasvorton?","EMAIL_USED_WITH_FB":"Ĉi tiu retpoŝtadreso jam estis uzata kun Facebook-ensaluto.","INVALID_EMAIL":"Bonvolu entajpi validan retpoŝtadreson","INVALID_PASSWORD":"Bonvolu entajpi validan pasvorton","CONN_ERR":"Eraro de konekto - Bonvolu reprovi poste.\\n\\nSe ĉi tiu eraro daŭras, malŝaltu fajroŝirmilojn/kontraŭvirusajn programojn (precipe Bitdefender).","IMPORT_FROM_GUEST":"Importu Bibliotekon el via gasta konto","RECEIVE_UPDATES_EMAIL":"Ricevu ĝisdatigojn al via retpoŝto de Stremio","LOGIN_FAILED":"Ensaluto malsukcesis.","SIGNUP_FAILED":"Aliĝo malsukcesis.","SEARCH_FAILED":"Serĉo malsukcesis","EMAIL_USED":"Ĉi tiu retpoŝtadreso jam estas uzata.","WAITING_FB_LOGIN":"Ensaluto per Facebook...","EXTERNAL_PLAYER_TITLE":"Ludi per ekstera ludilo","EXTERNAL_REMEMBER_PLAYER":"Ĉu vi volas memori vian selekton","EXTERNAL_ALWAYS_PLAY":"Jes","EXTERNAL_ONLY_ONCE":"Ne","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Diru al ni pri tio, kion vi ŝatas","INTRO_TASTE_LONG":"Diru al ni pri tio, kion vi ŝatus spekti","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Helpu nin lerni pli pri vi.","INTRO_TASTE_CHOOSE_THESE":"Elektu kelkajn el ĉi tiuj:","INTRO_TASTE_CHOOSE_MIN":"Elektu almenaŭ 3 kategoriojn","INTRO_TASTE_CHOOSE_MIN_ERR":"Vi devas elekti almenaŭ 3 kategoriojn!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sportoj","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"Novaĵoj","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Scienco kaj Edukado","INTRO_TASTE_MUSIC":"Musiko","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Komedio","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selektita aldonaĵo ne estas subtenata por ĉi tiu platformo.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Ĉu aktivigi ĉi tiun aldonaĵon?","ADDON_REPO_ADD":"Addon collection URL","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Kio estas nova?","BUTTON_CONTINUE":"Continue","BUTTON_ACTIVATE":"Activate","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Cancel","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Forĵeti ĉion","BUTTON_VIEW_ALL":"vidi ĉion","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Here is how you can start:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from Facebook","IMPORT_TRAKT":"Import your media library from Trakt","IMPORT_DISCOVER":"Find interesting stuff from Discover","IMPORT_DISK":"Importu filmojn aŭ spektaklojn kiujn vi havas ĉe via loka disko","PLEASE_CREATE_ACC":"Please create an account to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from Discover","IMPORT_DISK_SIGNUP":"Sign up and import movies or shows you have on your local disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Agordoj","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Ludilo","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Malfermi per VLC","SETTINGS_UI_LANGUAGE":"Interfaca Lingvo","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Importi el Facebook","SETTINGS_IMPORT_DISK":"Importi el loka disko","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Peti forigon de konto","SETTINGS_CHANGE_PASSWORD":"Ŝangi pasvorton","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Kontaktu subtenon","SETTING_LANGUAGE":"Lingvo","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"versio","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Fini","CONNECTED":"Konektita","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januaro","February":"Februaro","March":"Marto","April":"Aprilo","May":"Majo","June":"Junio","July":"Julio","August":"Aŭgusto","September":"Septembro","October":"Oktobro","November":"Novembro","December":"Decembro","Monday":"Lundo","Tuesday":"Mardo","Wednesday":"Merkredo","Thursday":"Ĵaŭdo","Friday":"Vendredo","Saturday":"Sabato","Sunday":"Dimanĉo","Action":"Agadfilmo","Comedy":"Komedio","War":"Milito","Family":"Familia","Animation":"Animacio","Adventure":"Aventuroj","Fantasy":"Fantasto","Crime":"Krimo","Mystery":"Mistero","Romance":"Romance","Drama":"Dramo","Horror":"Horora Filmo","Thriller":"Suspenso","Sci-Fi":"Sciencfikcio","Music":"Music","Biography":"Biografio","Documentary":"Dokumentario","Sport":"Sport","Musical":"Musical","Western":"Vesterno","Film-Noir":"Film-Noir","News":"News","History":"Historio","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Vivstilo","Science & Education":"Scienco kaj Edukado","Cooking & Health":"Kuirado kaj Sano","Beauty & Fashion":"Beauty & Fashion","Sports":"Sportoj","News & Politics":"Novaĵoj kaj Politiko","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religio","Kids":"Infana","Body & Soul":"Body & Soul","Education":"Edukado","Indian Tv":"Hinda Televido","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Scienca Televido","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"nova video","new episode":"nova epizodo","new movie":"nova filmo","recommended":"rekomendita","we recommend":"ni rekomendas","offer of the day":"offer of the day","news":"novaĵoj","music video":"muzikvideo","CTX_SHOW_HOTKEYS":"Montri Agklavoj","CTX_DISMISS_NOTIF":"Forĵeti sciigojn","CTX_DISMISS_ALL":"Forĵeti ĉion","CTX_SHARE":"Konigi","CTX_COPY_SHARE_LINK":"Kopii ligilon por kunhavigi","CTX_COPY_MAGNET_LINK":"Kopii magnetan ligilon","CTX_COPY_STREAM_LINK":"Kopii elsendfluan ligilon","CTX_DOWNLOAD_VIDEO":"Elŝuti ĉi-tiun videon","CTX_DOWNLOAD_SUBS":"Elŝuti subtitolojn","CTX_VIEW_ON_YOUTUBE":"Spekti ĉe Youtube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Spekti","CTX_WATCHED":"Spektita","CTX_WATCH_BEGINNING":"Spekti ekde la komenco","CTX_WATCH_MOBILE":"Spekti per poŝtelefono","CTX_REWIND":"Rebobeni al komenco","CTX_MARK_WATCHED":"Marki kiel spektita","CTX_MARK_NON_WATCHED":"Marki kiel ne spektita","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Marki la ceterajn kiel rigarditajn","CTX_UNMARK_REST":"Marki la ceterajn kiel ne-spektitajn","CTX_RECEIVE_NEW_NOTIF":"Ricevi novajn sciigojn","CTX_REMOVE_CACHE":"Forigi el kaŝmemoro","CTX_REMOVE_CACHE_EP":"Forigi epizodon el kaŝmemoro","CTX_OPEN_CONTAINING":"Malfermu enhavantan dosierujon","CTX_REMOVE":"Forigi de la biblioteko","CTX_AVAILABLE_OFFLINE":"Disponebla eksterrete","CTX_PAUSED":"Paŭzo","CTX_ALWAYS_ON_TOP":"Ĉiam supre ĉio","CTX_FULLSCREEN":"Plenekrane","CTX_WRONG_SUBS":"Malĝustaj subtitoloj?","CTX_REPORT_ISSUES":"Raporti problemon","CTX_COPY":"Kopii","CTX_PASTE":"Algui","CTX_CLEAR":"Viŝi","CTX_CLEAR_RECENT_SEARCHES":"Viŝi freŝajn serĉojn","HELLO_THERE":"Saluton!","HOPE_YOU_ENJOY":"Ni esperas, ke vi ĝuos Stremio-n kaj ke ĝi jam estas unu el viaj plej ŝatataj aplikaĵoj!","WHO_ARE_WE":"Kiuj ni estas? Ni estas la teamo malantaŭ ĝi - du uloj kiuj intense laboras ĉiutage dum la lastaj 3 jaroj por fari ĉi tiun produkton pli kaj pli bona.","SUPPORT_US":"Se vi ŝatas uzi Stremio, se Stremio estas valora por vi - diskonigu ĝin!","SPREAD_THE_WORD":"Kunhavigu ĝin kun viaj amikoj nun, diskonigu pri Stremio","MORE_PEOPLE":"Ju pli da homoj uzas Stremio-n, des pli bone ĝi fariĝos!","SEND_A_LINK":"Aŭ sendu ligilon al nia retejo","TIP_LOCALFILES":"Konsilo: vi povas ŝovi kaj demeti lokaj videaj dosierojn en Stremio-n","ADDON_MY":"Miaj Aldonaĵoj","ADDON_COMMUNITY":"Komunumaj aldonaĵoj","ADDON_OFFICIAL":"Oficialaj Aldonaĵoj","ADDON_REPOS":"Aldonaĵa kolekto","ADDON_SEARCH":"Serĉi Aldonaĵoj","ADDON_INSTALL":"Instali","ADDON_CONFIGURE":"Agordi","ADDON_UNINSTALL":"Malinstali","ADDON_UPGRADE":"Ĝisdatigi","ADDON_INSTALLED":"Instalita","ADDON_INSTALLED_MSG":"Aldonaĵo instalita!","ADDON_UPGRADED_MSG":"Aldonaĵo ĝisdatita!","ADDON_UNKNOWN":"Nekonata","ADDON_ERR":"Aldonaĵ-instalado eraro!","ADDON_DISCONNECTED":"Malkonektita","ADDON_APP_MISSING":"la aplikaĵo por ĉi tiu fonto ne estas instalita. Ĉu vi volas instali ĝin nun?","ADDON_APP_INSTALL":"Instali nun","ADDON_PAGE":"Paĝo de la aldonaĵo","ADDON_TOP_CONTENT":"La plej bona de ĉi tiu aldonaĵo","ADDON_PROVIDES":"Ĉi tiu aldonaĵo donos al vi:","ADDON_WATCH":"Spekti #{types} nun!","ADDON_WATCH_FREE":"Spekti #{types} SENPAGE nun!","ADDON_ADDON":"Aldonaĵo","ADDON_SUPPORTED_TYPES":"Subtenataj tipoj","ADDON_SUPPORTED_CATALOGS":"Subtenataj katalogoj","ADDON_PROVIDES_DISCOVER":"Pli da #{types} en Discover","ADDON_PROVIDES_STREAMS":"Spekti #{types}","ADDON_PROVIDES_STREAMS_FREE":"Spekti #{types} SENPAGE","ADDON_PROVIDES_SUBTITLES":"Subtitoloj por #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"Neniu informo trovita pri tio ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Daŭre spekti","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmoj elektitaj speciale por vi.
    Ĉi tiu filmo estas ekzempla rekomendo.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Spektu tuj!","WEBSITE_SLOGAN_ALL":"La tuta video-enhavo, kiun vi ĝuas en unu loko","WEBSITE_SLOGAN_NEW":"Ĉio, kion vi povas spekti","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Spekti el","WEBSITE_DOWNLOAD":"Elŝuti nun!","WEBSITE_DOWNLOAD_FOR":"Elŝutu Nun Por","WEBSITE_IS_DESKTOP":"Stremio estas komputila aplikaĵo, malfermu ĉi tiun paĝon je via komputilo kaj elŝutu ĝin","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Hejmo","WEBSITE_PAGE_FEATURES":"Funkcioj","WEBSITE_PAGE_ADDONS":"Aldonaĵoj","WEBSITE_PAGE_TECH":"Teknologio","WEBSITE_PAGE_CREATE_ADDON":"Kreu aldonaĵon","WEBSITE_PAGE_CONTACTS":"Kontaktoj","WEBSITE_PAGE_BLOG":"Blogo","WEBSITE_TYPE_movie":"Filmog","WEBSITE_TYPE_series_PL":"Filmoj","WEBSITE_TYPE_tv":"Viva televido","WEBSITE_TYPE_channel":"Kanaloj","WEBSITE_STREMIO_WHAT_IS":"Stremio estas aplikaĵo, kiu helpas vin organizi kaj tuj spekti viajn plej ŝatatajn videojn, filmojn, televidseriojn kaj televidkanalojn..","WEBSITE_FEATURES_WATCH":"Spektu tuj en HD","WEBSITE_FEATURES_WATCH_DETAIL":"Alklaku kaj ludu viajn plej ŝatatajn filmojn, televidajn programojn, filmetojn kaj televidajn kanalojn.","WEBSITE_FEATURES_SUBS":"Aŭtomataj Subtitoloj","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Importi el Facebook","WEBSITE_LIB_LOCAL":"Aldonu el via loka disko","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"Ni amas teknologion, ni amas frenezan sciencon!\\nStremio uzas la jenajn malfermitkodajn teknologiojn","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donaci Bitcoin:","WEBSITE_FAQ":"Plej Oftaj Demandoj","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Demandoj","WEBSITE_TOS":"Uzkondiĉoj","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"Pri","WEBSITE_PAGE_BECOME_PARTNER":"Iĝu partnero","WEBSITE_ALL_YOU_CAN_WATCH":"Libereco por Spekti\\nĈion Kion Vi Volas.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Kio estas Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio estas kompleta centro por videoenhava kolektado. Malkovru, organizu kaj spektu filmetojn el ĉiaj fontoj sur iu ajn aparato, kiun vi posedas.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio estas moderna aŭdvidaĵa centro, integrala solvo por via amuziĝo. Vi povas malkovri, spekti kaj organizi video-enhavon per facile instaleblaj aldonaĵoj.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Filmoj, televidaj programoj, viva televido aŭ retkanaloj - Stremio disponigas por vi ĉion ĉi.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importi el facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Aliĝu al la festo nun","WEBSITE_DEVICES_ALL":"Facile uzebla en ĉiuj viaj aparatoj;","WEBSITE_EXTENDABLE_CATALOG":"Senfine etendebla videokatalogo;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Mojosaj funkcioj por organizi viajn aŭdvidaĵojn;","WEBSITE_AS_SEEN_ON":"Kiel vi vidis ĝin en","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Pri ni","WEBSITE_LINK_TECHNOLOGY":"Teknologio","WEBSITE_LINK_APPS":"Aplikaĵoj","WEBSITE_LINK_DOWNLOADS":"Elŝutoj","WEBSITE_MORE":"Pli","WEBSITE_LINK_ADDONS":"Aldonaĵoj","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Kontribuu","WEBSITE_LINK_COMMUNITY":"Komunumo","WEBSITE_LINK_BLOG":"Blogo","WEBSITE_MORE_MORE":"... kaj pli","WEBSITE_LINK_HELP":"Helpcentro","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privatecaj politikoj","WEBSITE_SUBSCRIBE":"Aboni","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Via Retpoŝto","WEBSITE_COMMUNITY":"Komunumo","WEBSITE_LINK_PRAVACY_LEGAL":"Privateco kaj legalaĵo","WEBSITE_WHY":"Kial ni faras kion ni faras","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAMO","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Funkcioj","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Facile malkovru novan enhavon","WEBSITE_FEATURES_DISCOVER_P":"Facile esplori novaj filmoj, televidaj spektakloj, serioj kaj kanaloj por spekti. Serĉu laŭ kategorio, ĝenro, poentaro, lastatempeco, noveco, ktp. aŭ simple tajpu nomon por trovi. Stremio faciligas trovante novan videoenhavon tre facile.","WEBSITE_FEATURES_ALL_CONTENT":"Ĉiuj viaj videoenhavoj en unu ekrano","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organizu vian videobibliotekon","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Ĝuu vian videon enhavon sur granda ekrano","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Spektu videon el multaj diversaj fontoj","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Kreu aldonaĵon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Spektu Netflix-aj filmoj kaj ret-serioj.","WEBSITE_ADDONS_CREATE":"Kreu aldonaĵon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Elŝutoj","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS (limited version)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Kontribuu","WEBSITE_CONTRIBUTE_P1":"La platformo Stremio estas liberafontkoda kaj vi povas facile krei aldonaĵo por enhavo kiu ne estas indeksita ankoraŭ.","WEBSITE_CONTRIBUTE_WHY":"Kial vi devus krei aldonaĵon?","WEBSITE_CONTRIBUTE_WHY_P1":"Atingu nova spektantaro por via videoenhavo","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Iĝu volontula tradukisto","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Ĉu vi avidas por komenci?","WEBSITE_TRANSALTE_STREMIO":"Traduku Stremio-n","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Komunuma Artgalerio","WEBSITE_LINK_ART":"Komunuma artgalerio","WEBSITE_CONTACT_US":"Kontaktu nin","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Bonvolu entajpi vian retpoŝton!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Pri kio temas via demando?","WEBSITE_CONTACT_US_Q_OS":"Kiu estas via Operaciumo?","WEBSITE_CONTACT_US_PH_EMAIL":"Via Retpoŝto","WEBSITE_CONTACT_US_PH_MESSAGE":"Mesaĝo","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SENDI","WEBSITE_CONTACT_US_Q_1":"Kiel instali","WEBSITE_CONTACT_US_Q_2":"Kiel malinstali?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Aldonaĵoj","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Teknologio","WEBSITE_TECHNOLOGY_P1":"Ni amas teknologion kaj frenezan sciencon.
    Jen kio ebligas Stremio-n (ĉio estas malfermitkoda).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"Senpaga, malfermitfonta kaj plurplatforma plurmedia ludilo.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Kontribuu al la projekto","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Estas du manieroj per kiuj vi povas kontribui kun Stremio kaj helpi al ni plibonigi ĝin eĉ pli!.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Vi povas donaci viajn valorajn lingvokapablojn tradukante la platformon...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"aŭ","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... vi povas uzi viajn programadajn kapablojn por krei komunumajn aldonaĵojn. ","WEBSITE_TRANSLATE_STREMIO":"Traduku Stremio-n","WEBSITE_404_OH_NO":"Ho ve! La paĝo kiu vi serĉas ne estas ĉi tie...","WEBSITE_GO_HOME":"Iru hejmen","WEBSITE_LINK_OTHER_DOWNLOADS":"Aliaj elŝut-opcioj","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Subteni","WEBSITE_DOWNLOAD_4_0_BETA":"Elŝutu Stremio-n 4 beta nun!","WEBSITE_GET_FOR_DESKTOP":"Akiru ĝin por komputilo","WEBSITE_LINK_ADDON_COMPETITION":"Aldonaĵa konkurso","WEBSITE_LINK_ART_CONTEST":"Arta konkurso","WEBSITE_MY_ACCOUNT":"Mia konto","WEBSITE_MAINPAGE_FAQ_001_H1":"Kio estas Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio estas moderna plurmedia centro, kiu donas al vi la liberon spekti ĉion, kion vi volas.","WEBSITE_MAINPAGE_FAQ_002_H1":"Kiel ĝi funkcias?","WEBSITE_MAINPAGE_FAQ_002_P1":"Post kiam vi instalos Stremio sur via aparato kaj kreos konton, vi nur devas viziti la katalogon de aldonaĵoj kaj instali ajnan aldonaĵon, kiun vi volas, kaj vi estas bona por preta por ekkomenci!","WEBSITE_MAINPAGE_FAQ_002_P2":"Post tio, vi povas iri al la sekcioj Discover aŭ Board por komenci esplori enhavon.","WEBSITE_MAINPAGE_FAQ_003_H1":"Kion mi povas spekti ĉi tie?","WEBSITE_MAINPAGE_FAQ_003_P1":"Multaĵon: Filmoj, Televidaj Spektakloj, Retaj Kanaloj, Sporto, Televidaj kanaloj, aŭskulti Podkastojn kaj multe pli. Danke al nia aldonaĵa sistemo, vi povas akiri ĉiajn enhavojn.","WEBSITE_MAINPAGE_FAQ_004_H1":"Ĉu Stremio estas malfermitkoda?","WEBSITE_MAINPAGE_FAQ_004_P1":"Jes, vi povas viziti la jenajn ligilojn: ${1}desktop app${2} kaj ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Ĉu estas Stremio sekura?","WEBSITE_MAINPAGE_FAQ_005_P1":"Jes: ĉar ĝi estas libera programaro, la kodo estas publike alirebla kaj vi mem povas revizii ĝin.","WEBSITE_MAINPAGE_FAQ_006_H1":"Kio pri mia privateco?","WEBSITE_MAINPAGE_FAQ_006_P1":"Ni respektas la privateco de la uzantoj, tial ni ne kolektas nenian personalan datumon, krom la minimunon esencialan por krei kaj sinkronigi vian konton.","WEBSITE_MAINPAGE_FAQ_006_P2":"Ankaŭ ekzistas ${1}Gasta reĝimo${2} ĉe la aliĝo, kiu postulas neniujn datumojn: en ĉi tiu reĝimo, neniuj vokoj estas faritaj al nia servilo. Tamen, ĝi forĵetas utilajn funkciojn, kiel sinkronigi vian bibliotekon inter aparatoj.","WEBSITE_MAINPAGE_FAQ_007_H1":"Ĉu mi povas elsendi al mia televidilo?","WEBSITE_MAINPAGE_FAQ_007_P1":"Jes, ni subtenas Chromecast-on kaj vi povas elsendi el kaj labortablaj kaj el poŝtelefonaj aplikaĵoj (Android)..","WEBSITE_MAINPAGE_FAQ_008_H1":"Kiom da aldonaĵoj Stremio havas?","WEBSITE_MAINPAGE_FAQ_008_P1":"Je 2019, pli ol 50 - por plia informo, vidu nian aldonaĵan katalogon.","WEBSITE_MAINPAGE_FAQ_009_H1":"Ĉu Stremio povas esti etendita preter kio estas en la aldonaĵa katalogo?","WEBSITE_MAINPAGE_FAQ_009_P1":"jes, vi povas rigardi la jenajn: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, ktp.","WEBSITE_MAINPAGE_FAQ_010_H1":"Kiujn aparatojn Stremio subtenas?","WEBSITE_MAINPAGE_FAQ_010_P1":"Ni havas labortablaj aplikaĵoj por Vindozo, Mac kaj Linukso. Por poŝtelefono, ni subtenas Android kaj iOS, kvankam konsciu, ke iOS estas limigita en funkcioj (ne subtenas la plejmultajn aldonaĵojn).","WEBSITE_MAINPAGE_FAQ_010_P2":"Estas multaj Android-bazitaj aparatoj sur kiuj vi povas ruli Stremio-n, kiel NVIDIA Shield kaj Amazon Fire Stick, sed ni ne oficiale subtenas ilin.","WEBSITE_MAINPAGE_FAQ_011_H1":"Ĉu vi povas aldoni certan enhavon al Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Pardonu, ni mem provizas neniun enhavon, sed ju pli da Stremio-aldonaĵoj vi instalos, des pli da enhavo vi povos trovi.","WEBSITE_MAINPAGE_FAQ_012_H1":"Ĉu Stremio povas ludi magnetligojn","WEBSITE_MAINPAGE_FAQ_012_P1":"Jes, kaj ĝi ankaŭ povas ludi normalajn HTTP-ligilojn kaj torentajn dosierojn (ŝovi kaj demeti).","WEBSITE_MAINPAGE_FAQ_013_H1":"Ĉu mi povas elŝuti videon kaj spekti ĝin eksterrete?","WEBSITE_MAINPAGE_FAQ_013_P1":"Eksterreta disponebleco estas venonta funkcio, sed se vi permesas al Stremio konservi kaŝmemoron en via aparato (ĉe la agorda panelo) vi povas spekti la videojn senkonekte.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nenio funkcias, helpu min!","WEBSITE_MAINPAGE_FAQ_014_P1":"Ĉu vi certas, ke vi instalis aldonaĵojn? Se jes, iru al nia ${1}helpcentro${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Kiel Stremio subtenas ĝian programadon?","WEBSITE_MAINPAGE_FAQ_015_P1":"Ni prezentas netrudemajn reklamojn foje, sed ni pripensas translokiĝi al donacmodelo.","WEBSITE_MAINPAGE_FAQ_015_P2":"Se vi havas pliaj demandoj, iru al nia ${1}helpcentro${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Montri malpli","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"Pli da informo ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Reprovi","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"Kio estas Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"Kiel Stremio komparas al Kodi kaj al Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"Kiel Stremio komparas al Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"Kiel Stremio komparas al Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"Kiel Stremio komparas al Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Ĉu vi aldonos ĉi tiun filmon/serion?","FAQ_06_P1":"Ne, pardonon :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"Kiel mi povas krei aldonaĵon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Kie estas la kaŝmemora dosiero?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},9320:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Película","TYPE_series":"Series","TYPE_tv":"TV","TYPE_channel":"Youtube","TYPE_other":"Otros","TYPE_movie_PL":"Películas","TYPE_series_PL":"Series","TYPE_tv_PL":"TV","TYPE_channel_PL":"Youtube","TYPE_other_PL":"Otros","TYPE_ALL":"Todo","VIDEO":"Video","BACK":"Atrás","MORE":"Más","DONE":"Listo","COPY":"Copiar","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Modo de emisión","CASTING_MODE_HLSV2":"Por defecto","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Sin transcodificación","Discover":"Descubrir","Board":"Panel","Library":"Biblioteca","My Library":"Mi Biblioteca","Calendar":"Calendario","NOTIFICATION_ONLINE":"Actualmente estás en línea","NOTIFICATION_OFFLINE":"Actualmente no estás conectado","INTERNET_CONNECTION":"Conexión de red","STORAGE_FULL_TITLE":"Advertencia: ¡Almacenamiento lleno!","STORAGE_FULL_TEXT":"Stremio no podrá guardar su configuración, preferencias o información de inicio de sesión. Considere reiniciar o reinstalar Stremio.","SEARCH":"Buscar","SEARCH_NO_RESULTS":"No se encontraron resultados","SEARCH_EXPLANATION_CONTENT":"Búsqueda de películas, series, Canales de Youtube y TV","SEARCH_EXPLANATION_PEOPLE":"Busca por actores, directores y escritores","SEARCH_PASTE_LINKS":"Pegar un enlace o enlace magnético","SEARCH_OR_PASTE_LINK":"Buscar o pegar enlace","ADD_TO_LIB":"Añadir a la biblioteca","REMOVE_FROM_LIB":"Eliminar de la biblioteca","ADDED_TO_LIB":"Añadido a la biblioteca","REMOVED_FROM_LIB":"Eliminado de la biblioteca","TRAILER":"Avance","WATCH_TRAILER":"Ver avance","WATCH_NOW":"Mirar ahora","SHOW":"Ver","SHOW_MOVIE":"Mostrar película","WATCH_RANDOM":"Mirar al azar","IMDB_RATING":"Calificación IMDb","YEAR":"Año","DIRECTOR":"Director","WRITER":"Escritor","LEAD_ACTORS":"Actores principales","CAST":"Reparto","CREW":"Equipo técnico","SHOW_MORE_CAST":"Mostrar más »","AIRED":"Salió al aire:","SEASONS":"Temporadas","GENRE":"Género","CATALOG":"Catálogo","SUMMARY":"Resumen","SHOW_MORE":"Mostrar más","SIMILAR":"Similar","UPCOMING":"Próximamente","ENDED":"Terminado","DURATION":"Duración","FEATURED":"Destacado","METADATA":"Metadatos","CATEGORY":"categoría","LINKS_GENRES":"Géneros","LINKS_CAST":"Elenco","LINKS_DIRECTORS":"Directores","SEARCH_VIDEOS":"Buscar videos","SEARCH_PLACEHOLDER":"Buscar o pegar enlace magnético","ADDON":"Complemento","ADDONS":"Complementos","OFFICIAL":"Oficial","ADDONS_OFFICIAL":"Complementos oficiales","ADDONS_POPULAR":"Popular en tu región","ADDON_FREE":"Gratis","ADDON_PEERED":"Compartido","ADDON_SUBSCRIPTION":"Suscripción","ADDON_STREAM_GEORESTRICTED":"No está disponible en su región","ADDON_STREAM_OFFLINECACHE":"Caché sin conexión","ADDON_STREAM_LOCALFILE":"Archivo Local","SHARE_ADDON":"Compartir extensión","AVAILABLE_STREAMS":"Transmisiones disponibles","NO_STREAM":"Transmisión no disponible","ALL_ADDONS":"Todos","INSTALL_MORE_ADDONS":"Para más transmisiones, por favor instale más complementos","STREAM_NOT_SUPPORTED":"La transmisión seleccionada no es soportada en esta plataforma.","ADDON_CATALOGUE":"Mostrar todos los complementos »","ADDON_CATALOGUE_MORE":"Más complementos »","REPO_ADDED":"Repositorio agregado","ADDON_REPO_EXIST_ERR":"Este repositorio de complementos ya existe","ADDON_REPO_ERR":"Error ocurrido mientras agregaba repositorio","ADDON_ADD_ERR":"Error agregado mientras agregaba complemento","ERR_ADDON_PROTECTED":"Complemento protegido","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Algo ha salido mal - la autenticación pudo haber fallado","ERR_NOT_COLLECTION_URL":"No es una URL de colección","ERR_NOT_ADDON_URL":"No es una URL de complemento","ERR_DETECTFROMURL":"No se puede detectar desde la URL","ADDON_DUPLICATE_WARNING":"Advertencia: complemento duplicado","ADDON_COLLECTION_SET_FAILED":"Falló la recopilación de complementos","SETTINGS_DATA_EXPORT":"Exportar datos","ADDON_PULL_FAILED":"Error de extracción de complemento","REFRESH_ON_CLICK":"Hacer clic para intentarlo de nuevo","STILL_IN_THEATER":"Película aún en cines","WATCH_IN_CINEMA":"Véalo en su cine favorito","IN_THEATER":"En el cine","GET_TICKETS":"Conseguir entradas","UPCOMING_EPISODE":"Próximo episodio","UPCOMING_EPISODE_MESSAGE":"El próximo episodio se emitirá el","MISSING_DATE_EPISODE":"No existe la fecha de este episodio","MISSING_DATE_EPISODE_MESSAGE":"Es posible que este episodio no se haya emitido todavía","CHANNEL_NOT_SCRAPED":"Este canal aún no está habilitado.
    Por favor, vuelve en unos minutos.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Añádelo a tu biblioteca para ser notificado una vez que esté disponible.","GET_NOTIFIED_WHEN_AVAILABLE":"Recibirá una notificación cuando esté disponible.","WARNING_STREAMING_SERVER":"Advertencia: Servidor de transmisión local no encontrado. La transmisión desde YouTube y BitTorrent no estará disponible.","WARNING_STREAMING_SERVER_DISMISS":"Descartar","WARNING_STREAMING_SERVER_LATER":"Después","DECODER_WARNING":"Advertencia: este video podría no ser soportado en su hardware. Tenga en cuenta que la reproducción podría ser lenta.","PLAYER_ERROR":"Ups!, ha ocurrido un error en el reproductor","PLAYER_ERROR_LOOKSLIKE":"Parece que","PLAYER_ORIENTATION":"Orientación del reproductor","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Bloqueada","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Orientación del reproductor bloqueada en modo horizontal","PLAYER_ORIENTATION_SENSOR":"Orientación del reproductor automática (sensor)","PLAYER_PLAYBACK_SPEED":"Velocidad de reproducción","PLAYER_PLAYBACK_ERROR":"Error de reproducción, inténtelo de nuevo","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Error desconocido","PLAYER_PLAYBACK_ERROR_DEFAULT":"Lo sentimos, este video no puede ser reproducido por {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Idiomas de los subtítulos","PLAYER_SUBTITLES_VARIANTS":"Variantes de subtítulos","PLAYER_SUBTITLES_SETTINGS":"Configuración de subtítulos","PLAYER_SUBTITLES_DISABLED":"Subtítulos deshabilitados","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Posición vertical","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Reproducir","PLAYER_PAUSE":"Pausa","PLAYER_NEXT_VIDEO":"Siguiente vídeo","PLAYER_MUTE":"Silenciar","PLAYER_UNMUTE":"Activar sonido","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"En vivo","PLAYER_NEXT_VIDEO_TITLE":"A continuación en","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Descartar","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Ver vídeo","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Transmitiendo desde","CASTING_TO":"Transmitiendo a","NETWORK_STATUS":"Estado de la red","STREAM_SPEED":"Velocidad:","STREAM_BUFFERED":"Almacenado:","PEERS_INFO":"Información de pares","PEERS_ACTIVE":"Activos:","PEERS_CONNECTED":"Conectados:","PEERS_WAITING":"Esperando:","TRANSCODING_WARNING":"Alerta: transcodificando video.","STREAM_LOADING":"Cargando...","PLAYING_LOCAL":"Reproducción desde archivo local","PLAYING_CACHE":"Reproducción desde la memoria caché","WRONG_SUBS":"¿Subtítulos erróneos?","ERR_SUBS_LOADING_TITLE":"Error cargando subtítulos","ERR_SUBS_LOADING":"Fallo cargando subtítulos: esto podría ser un problema con la extensión que está usando o con su conexión de internet","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Los siguientes complementos de subtítulos fallaron","ERR_CASTING_UPDATE_TITLE":"No se pudo actualizar la información del dispositivo de transmisión: el servidor de transmisión puede estar fuera de línea","CHOOSE_DEVICE":"Elija un dispositivo para ver","NO_CAST_DEVICES":"No hay dispositivos de transmisión disponibles.","NO_SETTINGS":"No hay configuraciones disponibles.","PHONE_TABLET":"Móvil / Tableta","SUBTITLES":"Subtítulos","SUBTITLES_CHANGE":"Cambiar subtítulos para ","SUBTITLES_CHANGE_NONE":"No hay otros subtítulos para este idioma, lo siento.","SUBTITLES_CHANGE_ACIVE":"Actualmente los subtítulos #{{subtitlesDialog.activeIdx + 1}} están activados. Haga clic en \\"Continuar\\" para activar los subtítulos #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativamente,","SUBTITLES_ADJUST_DELAY":"Ajuste de retraso de subtítulos:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"O utilice las teclas G / H durante la reproducción para ajustar.","SUBTITLES_ADJUST_DELAY_TIP":"Nota: Puede usar las teclas G / H durante la reproducción para ajustar.","SUBTITLES_DELAY":"Retraso de subtítulos:","SUBTITLES_LOADING":"Cargando subtítulos...","SUBTITLES_UNAVAILABLE":"No hay subtítulos externos disponibles","SUBTITLES_DISABLED":"Desactivado","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Idioma Por Defecto","DEFAULT_SECONDARY_LANGUAGE":"Idioma Por Defecto Secundario","SEASON":"Temporada","EPISODE":"Episodio","SPECIAL":"Especial","SORT":"Ordenar","SORT_BY":"Ordenar por","FILTER":"Filtrar","SORT_TRENDING":"Tendencias","SORT_RECENT":"Reciente","SORT_ALPHABET":"A-Z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"Calificación","SORT_WATCHED":"Visto","SORT_YEAR":"Año","SELECT_TYPE":"Seleccionar tipo","SELECT_SORT":"Seleccionar ordenamiento","SELECT_CATALOG":"Seleccionar catálogo","SELECT_GENRE":"Seleccionar género","SORT_LASTWATCHED":"Por último visto","SORT_NAME":"Por nombre","SORT_TIMESWATCHED":"Por veces vista","New for You":"Nuevo para ti","New Episodes":"Nuevos Episodios","New Videos":"Nuevos Videos","Recommendations":"Recomendaciones","LIBRARY_RESUME":"Reanudar","LIBRARY_PLAY":"Reproducir","LIBRARY_DETAILS":"Detalles","LIBRARY_RESUME_DISMISS":"Descartar","LIBRARY_CLEAR_PROGRESS":"Limpiar progreso","LIBRARY_REMOVE":"Eliminar","LIBRARY_NOT_LOGGED_IN":"La biblioteca sólo está disponible para usuarios registrados","CALENDAR_NOT_LOGGED_IN":"El calendario sólo está disponible para los usuarios registrados","NOT_LOGGED_IN_CLOUD":"Acceda a sus películas y programas de televisión favoritos en cualquier momento y lugar","NOT_LOGGED_IN_RECOMMENDATIONS":"Recomendaciones adaptadas a su historial de visitas","NOT_LOGGED_IN_NOTIFICATIONS":"No vuelva a perderse un episodio","NOT_LOGGED_IN_CALENDAR":"Programe su calendario de visualización personal","DISCOVER_FEATURED":"Destacado","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Ganadores del Oscar","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"Esta extensión no retornó contenido.","DISCOVER_ADULT_WARNING":"El contenido es visible solo para adultos. ¿Eres mayor de 18 años?","DISCOVER_NOADDON_WARNING":"Advertencia: Ningún complemento activo de este tipo. Mostrando artículos guardados, nada de aquí se actualizará.","DISCOVER_LOAD_ERR":"Descubrir: error al cargar el catálogo desde el complemento","DISCOVER_ADDON_UNINSTALLED":"Este contenido no está más disponible, puede que hayas desinstalado la extensión.","UNINSTALL_THIS_ADDON":"Desinstalar esta extensión","ERR_ADDON_NOT_INSTALLED":"Este complemento no está instalado. ¿Instalar ahora?","DETAIL_RECEIVE_NOTIF_SERIES":"Recibir notificaciones de nuevos episodios","DETAIL_RECEIVE_NOTIF_VIDEOS":"Recibir notificaciones de nuevos videos","SIDEBAR_SHOW_STREAMS":"Mostrar transmisiones","RELAUNCH":"¡Relanzar ahora!","UPGRADE":"¡Una nueva versión está disponible! Actualiza a la versión más reciente de Stremio","RELOAD_UI":"Volver a cargar la interfaz de usuario","MANUAL_UPDATE_TITLE":"Actualice su versión de Stremio","MANUAL_UPDATE_LINE1":"Está ejecutando una versión desactualizada de Stremio lo cual no se recomienda.","MANUAL_UPDATE_LINE2":"Actualice lo antes posible.","BUTTON_UPDATE_LATTER":"Ahora no","BUTTON_UPDATE_NOW":"Actualizar","ANONYMOUS_USER":"Usuario anónimo","DONT_HAVE_ACC":"¿No tienes una cuenta?","HAVE_ACC":"¿Ya tiene una cuenta?","PASSWORD":"Contraseña","PASSWORD_CONFIRM":"Confirme su contraseña","EMAIL":"Correo electrónico","FB_LOGIN":"Entrar con Facebook","FB_NOTHINGSHARED":"Nada será compartido sin su permiso","FB_NOPOST":"No publicaremos nada en su nombre","OR":"o","I_ACCEPT":"Yo acepto los","I_ACCEPT_BY_CLICKING":"Al hacer clic en el botón de arriba testifico que acepto los ","TOS":"Términos y Condiciones","MUST_ACCEPT_TERMS":"Debes aceptar los términos","PASSWORDS_NOMATCH":"Las contraseñas no coinciden","SIGN_UP":"Regístrate","SIGN_UP_EMAIL":"Ingrese con correo electrónico","CLICK_TO_SIGN_UP":"Clic aquí para ingresar","LOG_IN":"Iniciar sesión","LOG_OUT":"Cerrar sesión","EXIT_FULLSCREEN":"Salir de modo pantalla completa","ENTER_FULLSCREEN":"Entrar en modo pantalla completa","PLAY_URL_MAGNET_LINK":"Reproducir URL/enlace magnético","HELP_FEEDBACK":"Ayuda y retroalimentación","TERMS_OF_SERVICE":"Términos del servicio","PRIVACY_POLICY":"Política de privacidad","ABOUT_STREMIO":"Sobre Stremio","USER_PANEL":"Panel de usuario","LOGIN_LABEL":"Login","GUEST_LOGIN":"Acceso de usuario invitado","GUEST_LOGIN_NOTICE":"Acceder como invitado no es recomendable. Ingresar con tu cuenta le permite a Stremio sincronizar tu Biblioteca y recibir notificaciones para tus series/canales favoritos. ¿Estás seguro de que quieres continuar?","GUEST_LOGIN_NOTICE_2":"No se recomienda el inicio de sesión de invitado - no habrá sincronizado las notificaciones de la Biblioteca y del Panel, que son funciones vitales de Stremio. ¿Seguro que desea continuar?","CLICK_HERE":"Haga clic aquí","WRONG_PASSWORD":"Contraseña incorrecta. En caso de que haya olvidado su contraseña, ","SET_A_PASS":"Establecer una contraseña","RESET_PASSWORD":"Restablecer contraseña","FORGOT_PASSWORD":"¿Olvidaste tu contraseña?","EMAIL_USED_WITH_FB":"Este correo electrónico fue utilizado con un inicio de sesión de Facebook.","INVALID_EMAIL":"Por favor ingrese un correo electrónico válido","INVALID_PASSWORD":"Por favor ingrese una contraseña válida","CONN_ERR":"Error de conexión - por favor, inténtelo de nuevo más tarde.\\n\\nSi esto persiste, desactivar programas cortafuegos / antivirus (especialmente Bitdefender).","IMPORT_FROM_GUEST":"Importar biblioteca de su cuenta de invitado","RECEIVE_UPDATES_EMAIL":"Recibe novedades de Stremio en tu correo electrónico","LOGIN_FAILED":"Error en el inicio de sesión.","SIGNUP_FAILED":"Registro fallido.","SEARCH_FAILED":"Búsqueda fallida","EMAIL_USED":"Este correo electrónico ya está en uso.","WAITING_FB_LOGIN":"Iniciando sesión con Facebook...","EXTERNAL_PLAYER_TITLE":"Reproducir en reproductor externo","EXTERNAL_REMEMBER_PLAYER":"¿Quieres recordar tu elección?","EXTERNAL_ALWAYS_PLAY":"Si","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Mejor Ajuste","FIT_SCREEN":"Ajustar pantalla","FILL":"Rellenar","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Cuéntanos de tus gustos","INTRO_TASTE_LONG":"Cuéntanos que te gustaría ver","INTRO_TASTE_PICK":"Selecciona {{interestsRemaining}} intereses","INTRO_TASTE_PICK_MORE":"Selecciona {{interestsRemaining}} más intereses","INTRO_TASTE_HELP_US":"Ayúdanos a saber más de ti.","INTRO_TASTE_CHOOSE_THESE":"Escoge algunos de estos:","INTRO_TASTE_CHOOSE_MIN":"Escoge al menos 3 categorías","INTRO_TASTE_CHOOSE_MIN_ERR":"¡Tienes que seleccionar al menos 3 categorías!","INTRO_TASTE_LIFESTYLE":"Estilo de vida","INTRO_TASTE_SPORTS":"Deportes","INTRO_TASTE_FOOD_HEALTH":"Comida y Salud","INTRO_TASTE_BEAUTY_FASHION":"Belleza y Moda","INTRO_TASTE_NEWS":"Noticias","INTRO_TASTE_GAMING":"Juegos","INTRO_TASTE_SCIENCE_EDU":"Ciencia y Educación","INTRO_TASTE_MUSIC":"Música","INTRO_TASTE_TRAVEL":"Viajes","INTRO_TASTE_LATE_NIGHT":"Espectáculo nocturno","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedia","INTRO_TASTE_DIY":"Hazlo tú mismo","INTRO_TASTE_TECH":"Tecnología","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"El complemento seleccionado no es soportado en esta plataforma.","ADDON_DISCLAIMER":"El uso de complementos siempre estarán sujetos a su responsabilidad y la ley de gobierno de la jurisdicción en que te encuentres.","ADDON_ACTIVATE":"¿Activar este complemento?","ADDON_REPO_ADD":"URL del repositorio del complemento","ADDON_ADD":"Agregar","ADD_ADDON":"Agregar complemento","ADD_ADDON_DESCRIPTION":"Puedes agregar un complemento a través de un enlace externo, que aparecerá en complementos instalados.","PASTE_ADDON_URL":"Pegar enlace de complemento","WHATS_NEW":"Qué hay de nuevo","BUTTON_CONTINUE":"Continuar","BUTTON_ACTIVATE":"Activar","BUTTON_ACTIVATED":"Activado","BUTTON_CANCEL":"Cancelar","BUTTON_SUBMIT":"Enviar","BUTTON_DISMISS_ALL":"Descartar todo","BUTTON_VIEW_ALL":"ver todo","BUTTON_SEE_ALL":"Ver Todo","BUTTON_COLOR_TRANSPARENT":"Transparente","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Su biblioteca se ve vacía. Averigüe lo útil que es :) ","HOW_START":"Así es cómo puedes empezar:","LIB_EMPTY_CAL":"Su calendario muestra series en su Biblioteca.","HOW_START_CAL":"Así es como se puede agregar series:","LIB_EMPTY_BOARD":"El Panel muestra notificaciones y recomendaciones relacionadas con la Biblioteca.","HOW_START_BOARD_WAIT":"Por favor, añada algunas series o canales a su Biblioteca y denos unos minutos para procesar :)","HOW_START_BOARD":"Así es como se puede agregar series y películas a la misma:","IMPORT_FB":"Importar cosas que te gustan de Facebook","IMPORT_TRAKT":"Importar biblioteca de Trakt","IMPORT_DISCOVER":"Encontrar cosas interesantes de Descubrir","IMPORT_DISK":"Importar películas o mira las que tiene en su disco local","PLEASE_CREATE_ACC":"Por favor crea una cuenta para activar la sincronización con la Biblioteca y Panel.","IMPORT_DISCOVER_SIGNUP":"Regístrate y encuentra cosas interesantes en Descubrir","IMPORT_DISK_SIGNUP":"Regístrate e importa películas o shows desde tu disco local","LIB_EMPTY_CLOUD":"Biblioteca","LIB_EMPTY_CLOUD_DESC":"Biblioteca personal sincronizada con todos los dispositivos","LIB_EMPTY_EARLY":"Acceso temprano","LIB_EMPTY_EARLY_DESC":"Recibir notificaciones de nuevos episodios","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Obtener recomendaciones personalizadas","LIB_EMPTY_CALENDAR_DESC":"Agende su calendario personal de programas","LIB_EMPTY_ALL":"Regístrate para obtener todo esto:","LIB_EMPTY_BEST":"Regístrate para obtener lo mejor de Stremio","LIB_EMPTY_OTHER":"Regístrate para habilitar el Calendario y otras excelentes características","CALENDAR_ADDED":"El calendario de Stremio ha sido agregado a su calendario de escritorio por defecto.","CALENDAR_ADDED_MSG":"Si esto no funciona, por favor agregue esta URL manualmente a su aplicación de calendario","TRAKT_EXPIRED":"La autenticación de Trakt expiró, vaya a Configuración y vuelva a autenticar","TRAKT_REQUIRES_LOGIN":"Error de Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Necesitas iniciar sesión","SETTINGS_LABEL":"Configuración","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Reproductor","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Atajos","SETTINGS_SHORTCUT_RELOAD_APP":"Recargar Aplicación","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Abrir Configuración","SETTINGS_SHORTCUT_SWITCH_TABS":"Cambiar Pestañas","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Desplazarse por las Pestañas hacia Adelante","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Desplazarse por las Pestañas hacia Atrás","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navegar entre menús","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Ir a Buscar","SETTINGS_SHORTCUT_EXIT_BACK":"Salir / Regresar","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Alternar el menú de velocidad de reproducción","SETTINGS_SHORTCUT_MENU_VIDEOS":"Alternar menú de videos","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Alternar menú de subtítulos","SETTINGS_SHORTCUT_MENU_INFO":"Alternar menú de información","SETTINGS_SHORTCUT_FULLSCREEN":"Alternar Pantalla Completa","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Mostrar Controles","SETTINGS_SHORTCUT_PLAY_PAUSE":"Reproducir / Pausa","SETTINGS_SHORTCUT_VOLUME_UP":"Subir Volumen","SETTINGS_SHORTCUT_VOLUME_DOWN":"Bajar Volumen","SETTINGS_SHORTCUT_SEEK_NEXT":"Buscar Siguiente","SETTINGS_SHORTCUT_SEEK_PREV":"Buscar Previo","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Buscar hacia atrás","SETTINGS_SHORTCUT_SEEK_FORWARD":"Buscar hacia adelante","SETTINGS_SHORTCUT_PLAY_NEXT":"Reproducir Siguiente","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Aumentar Tamaño del Subtítulo","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Reducir Tamaño del Subtítulo","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Aumentar Retraso del Subtítulo","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Reducir Retraso del Subtítulo","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Alternar Menu Lateral","SETTINGS_SHORTCUT_OR":"o","SETTINGS_SHORTCUT_TO":"a","SETTINGS_SHORTCUT_SPACE":"Espacio","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Autenticar","SETTINGS_FACEBOOK_IMPORT":"Importar","SETTINGS_CALENDAR_SUBSCRIBE":"Suscribir","SETTINGS_INTERFACE_LANGUAGE":"Lenguaje de interfaz","SETTINGS_LAUNCH_STARTUP":"Abrir cuando arranque el equipo","SETTINGS_VLC_DEFAULT":"Reproducir en VLC","SETTINGS_UI_LANGUAGE":"Idioma de la interfaz de usuario","SETTINGS_FULLSCREEN_EXIT":"Tecla de escape para salir del modo pantalla completa","SETTINGS_GAMEPAD":"Habilitar soporte para mando","SETTINGS_CLOSE_WINDOW":"Cerrar la aplicación cuando se cierra la ventana","SETTINGS_SUBTITLES_LANGUAGE":"Idioma de subtítulos predeterminado","SETTINGS_SUBTITLES_SIZE":"Tamaño de subtítulos predeterminado","SETTINGS_SUBTITLES_BACKGROUND":"Fondo de subtítulos","SETTINGS_SUBTITLES_COLOR":"Color de subtítulos","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Color del contorno de los subtítulos","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Color de fondo de los subtítulos","SETTINGS_SEEK_KEY":"Tiempo de búsqueda de las teclas de flecha","SETTINGS_SEEK_KEY_SHIFT":"Tiempo de búsqueda de las teclas de flecha cuando se mantiene la tecla Shift","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Duración de rebobinado y avance rápido","SETTINGS_BINGE":"Comenzar automáticamente el siguiente episodio","SETTINGS_NEXT_VIDEO":"Mostrar notificación para que comience el siguiente episodio","SETTINGS_NEXT_VIDEO_TRIGGER":"Mostrar la notificación de próximo episodio para:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Duración de la ventana emergente del siguiente video","SETTINGS_PLAY_IN_BACKGROUND":"Reproducir en segundo plano","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Reproducir en un reproductor externo","SETTINGS_RESIZE":"Ajustar ventana automáticamente antes de reproducir","SETTINGS_OVERRIDE_SERVER":"Anular la URL del servidor de transmisión (avanzado)","SETTINGS_SERVER_URL":"URL del servidor de transmisión ","SETTINGS_SERVER_AVAILABLE":"El servidor de transmisión está disponible.","SETTINGS_SERVER_UNAVAILABLE":"El servidor de transmisión no está disponible.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configurar enlace del servidor de transmisión","SETTINGS_SERVER_CONFIGURE_INPUT":"Ingrese enlace del servidor de transmisión","SETTINGS_SERVER_CACHE_SIZE":"Tamaño de caché","SETTINGS_SERVER_TORRENT_PROFILE":"Perfil de torrent","SETTINGS_HTTPS_ENDPOINT":"Punto final HTTPS de transmisión: ","SETTINGS_USE_BETA":"Utilice siempre la última Beta","SETTINGS_IMPORT_FB":"Importar desde Facebook","SETTINGS_IMPORT_DISK":"Importar desde el disco local","SETTINGS_IMPORT_TRAKT":"Importar desde Trakt","SETTINGS_PAUSE_MINIMIZED":"Pausar la reproducción cuando se minimiza","SETTINGS_HWDEC":"Decodificación acelerada por hardware","SETTINGS_BACKGROUND":"Reproducción de fondo","SETTINGS_SUBSCRIBE_CALENDAR":"Suscribirse al calendario","SETTINGS_REQ_EXPORT":"Solicitar mis datos","SETTINGS_ACC_DELETE":"Eliminar mi cuenta","SETTINGS_CHANGE_PASSWORD":"Cambiar contraseña","SETTINGS_TOS":"Términos de servicio","SETTINGS_SUPPORT":"Soporte","SETTING_LANGUAGE":"Idioma","SETTINGS_TRAKT":"Seguimiento con Trakt","SETTINGS_TRAKT_LOGOUT":"Salir de Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Escanear código QR para abrir el control remoto","SETTINGS_DESKTOP_NOTIFICATIONS":"Notificaciones de escritorio","SETTINGS_DATA_SAVER":"Ahorrador de datos","SETTINGS_LANGUAGE_INTERFACE":"interfaz","SETTINGS_LANGUAGE_SUBS":"Subtítulos por defecto","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoseleccionar Pista de Audio","SETTINGS_DEFAULT_AUDIO_TRACK":"Pista de Audio por defecto","SETTINGS_ACCOUNT":"cuenta","SETTINGS_VERSION":"versión","SETTINGS_MPV_WINDOW":"Abrir reproductor en una ventana separada (avanzado)","SETTINGS_PLAY_IN_EXTERNAL":"Iniciar siempre el video en un reproductor externo","SETTINGS_STORAGE_BUTTON":"Borrar almacenamiento local","SETTINGS_STORAGE_MODAL_TITLE":"¿Está seguro?","SETTINGS_STORAGE_MODAL_MESSAGE":"Esta opción borrará el almacenamiento local y terminará su sesión.","SETTINGS_HWDEC_PICKER":"Selecciona la configuración de decodificación acelerada por hardware","SETTINGS_HW_AUTOMATIC":"Automático","SETTINGS_HW_DISABLED":"Deshabilitada","SETTINGS_HW_ACCELERATED":"Decodificación Acelerada","SETTINGS_HW_FULL":"Aceleración Completa","SETTINGS_HW_LEGACY":"Legado","SETTINGS_SECTION_SUBTITLES":"Subtítulos","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controles","SETTINGS_SECTION_AUTO_PLAY":"Auto-Reproducción","SETTINGS_SECTION_ADVANCED":"Avanzado","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Subtítulos de complementos","SUBSPICKER_BLACK_BACKGROUND":"Usar color de fondo negro","SUBSPICKER_VERTICAL_OFFSET":"Desplazamiento Vertical","SUBSPICKER_SIZE":"Tamaño","SUBSPICKER_DELAY":"Retraso","SUBSPICKER_EMBEDDED_SUBS":"Subtítulos Embebidos","MOBILE_PRIVACY_POLICY":"Política de Privacidad","MOBILE_CRASH_REPORTING":"Reporte de Errores","MOBILE_ZOOM_TO_FILL":"Zoom para Rellenar la Pantalla","MOBILE_PASSTHROUGH":"Salida de Audio Digital (passthrough)","MOBILE_RUN_LOW_BATTERY":"Ejecutar con Batería Baja","MOBILE_RUN_FOREGROUND":"Ejecutar como Servicio en Primer Plano","MOBILE_PERFORMANCE":"Rendimiento y Estabilidad","MOBILE_SERVER_ONLINE":"En Linea","MOBILE_SERVER_OFFLINE":"Desconectado","MOBILE_QR_EXPIRES":"El Código QR expira en ","MOBILE_LOG_INTO":"Inicia sesión a tu cuenta Stremio ","MOBILE_SCAN_QR":"Escanea el Código QR de arriba o visita ","MOBILE_LINK_ACCOUNT":"Asociar Cuenta","MOBILE_SPEEDPICKER_CANCEL":"Cancelar","MOBILE_SPEEDPICKER_LABEL":"Seleccionar Velocidad de Reproducción","MOBILE_EMPTY_LIBRARY":"Tu Biblioteca está vacía","MOBILE_NO_ADDON_ACTIVE":"No hay complemento de Stremio activo para este tipo.","MOBILE_ORGANIZER_WARNING":"La aplicación Stremio Organizer proporciona una funcionalidad limitada. Para obtener una lista de transmisiones reproducibles y la experiencia completa de Stremio, use Stremio en el escritorio.","MOBILE_ADDON_LOADING":"todavía está cargando","MOBILE_ADDONS_LOADING":"los complementos aún se están cargando","MOBILE_ADDON":"Complementos","MOBILE_CONFIGURE_ADDON":"Configura tu complemento","MOBILE_CONFIGURE_ADDON_LABEL":"Configurar Complemento","MOBILE_ORGANIZER_ADDONS_WARNING":"La aplicación Stremio Organizer ofrece una selección limitada de complementos. Para disfrutar de la experiencia completa de Stremio, use Stremio en el escritorio.","MOBILE_DISCONNECT":"Desconectar","MOBILE_LOOKING_FOR_DEVICES":"Buscando dispositivos...","MOBILE_CAST_TO":"Emitir a","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"Encendida","NAVIGATION_OFF":"Apagada","MARKETING_AGREE":"Acepto recibir comunicaciones de marketing de Stremio","QUIT":"Salir","CONNECTED":"Conectado","AUTHENTICATE":"Autenticar","CACHING":"Almacenamiento en caché","SETTINGS_CACHING_DRIVE":"Seleccione la unidad de almacenamiento en caché","ENABLE_LOCAL_FILES_ADDON":"Habilite el complemento de archivos locales (requiere reiniciar)","LOCAL_ADDON_NOT_ENABLED":"El complemento local no está habilitado. Haga clic aquí para ir a la configuración y habilitarlo","ENABLE_REMOTE_HTTPS_CONN":"Habilitar conexiones HTTPS remotas","TORRENT_PROFILE":"Perfil de Torrent","DATA_CACHING":"Caché almacenada","MAGNET_PARSING":"Analizando un enlace magnético","January":"Enero","February":"Febrero","March":"Marzo","April":"Abril","May":"Mayo","June":"Junio","July":"Julio","August":"Agosto","September":"Septiembre","October":"Octubre","November":"Noviembre","December":"Diciembre","Monday":"Lunes","Tuesday":"Martes","Wednesday":"Miércoles","Thursday":"Jueves","Friday":"Viernes","Saturday":"Sábado","Sunday":"Domingo","Action":"Acción","Comedy":"Comedia","War":"Guerra","Family":"Familia","Animation":"Animación","Adventure":"Aventura","Fantasy":"Fantasía","Crime":"Crimen","Mystery":"Misterio","Romance":"Romántico","Drama":"Drama","Horror":"Terror","Thriller":"Suspense","Sci-Fi":"Ciencia ficción","Music":"Música","Biography":"Biografía","Documentary":"Documental","Sport":"Deporte","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"Noticias","History":"Historial","Game-Show":"Programa de juegos","Reality-TV":"Reality shows","Talk-Show":"Programa de entrevistas","Film & Entertainment":"Cine y Entretenimiento","Gaming":"Juegos","From TV":"De la televisión","Lifestyle":"Estilo de vida","Science & Education":"Ciencia y Educación","Cooking & Health":"Cocina y Salud","Beauty & Fashion":"Belleza y Moda","Sports":"Deportes","News & Politics":"Noticias y Política","How-to & DIY":"Cómo hacer y bricolaje","Tech":"Tecnología","Automotive":"Automotores","Causes & Non-Profits":"Causas y Fines de Lucro","Movies":"Películas","Uk Live Tv":"TV británica en vivo","Fashion":"Moda","Business News Radio":"Noticias de negocios - Radio","Business Tv":"Negocios TV","Cars & Auto":"Autos","Comedy Radio":"Comedia - Radio","Lifestyle Radio":"Estilo de vida - Radio","News Tv":"Noticias TV","Food And Wine":"Comida y Vino","Latino Tv":"Latino TV","Shopping Tv":"Compras TV","Religion":"Religión","Kids":"Niños","Body & Soul":"Cuerpo y Alma","Education":"Educación","Indian Tv":"India TV","Extreme Sports":"Deportes extremos","Middle Eastern Tv":"Medio oriente TV","Celebrity Tv":"Celebridades TV","Science Tv":"Ciencia TV","Bikini babe":"Bikini babe","Outdoors":"Al aire libre","German Tv":"TV alemana","French Tv":"TV francesa","Italian Tv":"TV italiana","Gamer Tv":"TV Videojuegos","Travel":"Viajes","Asian Tv":"TV asiática","Entertainment":"Entretenimiento","News Radio":"Noticias - Radio","Music Radio":"Música - Radio","Language Learning":"Aprendizaje de idiomas","Science Radio":"Ciencia - Radio","Tech Radio":"Tecnología - Radio","Science & Technology Vod":"Ciencia y Tecnología VBD","new video":"Nuevo video","new episode":"Nuevo episodio","new movie":"Nueva película","recommended":"Recomendado","we recommend":"Nosotros recomendamos","offer of the day":"Oferta del día","news":"Nuevo","music video":"Vídeo musical","CTX_SHOW_HOTKEYS":"Mostrar teclas de acceso rápido","CTX_DISMISS_NOTIF":"Descartar notificaciones","CTX_DISMISS_ALL":"Descartar todo","CTX_SHARE":"Compartir","CTX_COPY_SHARE_LINK":"Copiar enlace","CTX_COPY_MAGNET_LINK":"Copiar enlace magnético","CTX_COPY_STREAM_LINK":"Copiar enlace de la transmisión","CTX_DOWNLOAD_VIDEO":"Descargar este vídeo","CTX_DOWNLOAD_SUBS":"Descargar subtítulos","CTX_VIEW_ON_YOUTUBE":"Ver en YouTube","CTX_SHOW":"Mostrar","CTX_PLAY":"Reproducir","CTX_PLAY_IN":"Reproducir aquí","CTX_PLAY_ON":"Reproducir en","CTX_WATCH_ON":"Ver en","CTX_WATCH":"Ver","CTX_WATCHED":"Visto","CTX_WATCH_BEGINNING":"Mirar desde el principio","CTX_WATCH_MOBILE":"Ver en un dispositivo móvil","CTX_REWIND":"Retroceder al comienzo","CTX_MARK_WATCHED":"Marcar como visto","CTX_MARK_NON_WATCHED":"Marcar como no visto","CTX_MARK_UNWATCHED":"Marcar como no visto","CTX_MARK_REST":"Marcar el resto como visto","CTX_UNMARK_REST":"Marcar el resto como no visto","CTX_RECEIVE_NEW_NOTIF":"Recibir notificaciones nuevas","CTX_REMOVE_CACHE":"Eliminar de caché","CTX_REMOVE_CACHE_EP":"Eliminar el episodio de la memoria caché","CTX_OPEN_CONTAINING":"Abrir carpeta contenedora","CTX_REMOVE":"Eliminar de la Biblioteca","CTX_AVAILABLE_OFFLINE":"Disponible sin conexión","CTX_PAUSED":"En pausa","CTX_ALWAYS_ON_TOP":"Siempre en la parte superior","CTX_FULLSCREEN":"Pantalla completa","CTX_WRONG_SUBS":"¿Subtítulos erróneos?","CTX_REPORT_ISSUES":"Informar de un problema","CTX_COPY":"Copiar","CTX_PASTE":"Pegar","CTX_CLEAR":"Limpiar","CTX_CLEAR_RECENT_SEARCHES":"Borrar búsquedas recientes","HELLO_THERE":"Hola","HOPE_YOU_ENJOY":"¡Esperamos que disfrute de Stremio y sea una de sus aplicaciones favoritas!","WHO_ARE_WE":"¿Quiénes somos? Somos el equipo detrás de ella
    dos chicos que trabajan duro todos los días durante los últimos 3 años, con un único objetivo
    para hacer este producto cada vez mejor.","SUPPORT_US":"Si disfrutas usando Stremio, si Stremio es valioso para ti - apóyanos!","SPREAD_THE_WORD":"Comparte con tus amigos ahora, corre la voz sobre Stremio","MORE_PEOPLE":"Cuantas más personas usen Stremio, mejor será","SEND_A_LINK":"O envía un enlace de nuestro sitio web","TIP_LOCALFILES":"Consejo: puede arrastrar y soltar archivos de vídeo locales en Stremio","ADDON_MY":"Mis complementos","ADDON_COMMUNITY":"Complementos de la comunidad","ADDON_OFFICIAL":"Complementos Oficiales","ADDON_REPOS":"Repositorios de complementos","ADDON_SEARCH":"Buscar Complementos","ADDON_INSTALL":"Instalar","ADDON_CONFIGURE":"Configurar","ADDON_UNINSTALL":"Desinstalar","ADDON_UPGRADE":"Actualizar","ADDON_INSTALLED":"Instalado","ADDON_INSTALLED_MSG":"¡Complemento instalado!","ADDON_UPGRADED_MSG":"¡Complemento actualizado!","ADDON_UNKNOWN":"Desconocido","ADDON_ERR":"¡Error instalando complemento!","ADDON_DISCONNECTED":"Desconectado","ADDON_APP_MISSING":"la aplicación para este recurso no está instalada. ¿Quieres instalarla ahora?","ADDON_APP_INSTALL":"Instalar ahora","ADDON_PAGE":"Página del complemento","ADDON_TOP_CONTENT":"Lo mejor de este complemento","ADDON_PROVIDES":"Proporciona","ADDON_WATCH":"¡Ver #{types} ahora!","ADDON_WATCH_FREE":"¡Ver #{types} de forma GRATUITA ahora!","ADDON_ADDON":"Complemento","ADDON_SUPPORTED_TYPES":"Tipos compatibles","ADDON_SUPPORTED_CATALOGS":"Catálogos compatibles","ADDON_PROVIDES_DISCOVER":"Más #{types} en Descubrir","ADDON_PROVIDES_STREAMS":"Ver #{types}","ADDON_PROVIDES_STREAMS_FREE":"Ver #{types} de forma GRATUITA","ADDON_PROVIDES_SUBTITLES":"Subtítulos #{types}","ADDON_CANTDETECT":"No hemos podido detectar un Stremio en ejecución, así que no pudimos detectar qué complementos tiene instalado.","ERR_NO_META":"No se encontró información sobre esto ","ERR_GETTING_META":"Error obteniendo información de este.","ERR_CANT_PARSE_MAGNET":"Incapaz de analizar enlace magnético","ERR_NO_MAGNET_INFOHASH":"Código hash inválido para enlace magnético","ERR_NO_FILE_PATH":"Incapaz de enviar solicitud sin una ruta de archivo","ERR_NO_TORRENT":"No se devolvió torrent","ERR_NO_SUPPORTERD_FILES":"Archivo no soportado","ERR_OPENING_FILES":"No se pudieron abrir los archivos externos","ERR_INVALID_LINK":"Enlace inválido","ERR_REGISTERED_ONLY":"Esta opción está disponible solo para usuarios registrados.","ERR_CLIPBOARD":"No se puede reproducir desde el portapapeles","ERR_CLIPBOARD_READ":"Desde esta plataforma no se puede acceder al portapapeles","ERR_CLIPBOARD_GENERIC":"No se ha encontrado ningún URL reproducible en el portapapeles. Copie un URL (por ejemplo un enlace magnético) que lleve a un vídeo.","BOARD_CONTINUE_WATCHING":"Continuar viendo","BOARD_EXPLANATION_RECOMMENDATIONS":"Películas elegidas especialmente para ti.
    Esta película es una muestra de recomendación.","BOARD_EXPLANATION_EPISODES":"Los nuevos episodios de tus series favoritas están aquí
    Agrega las series que sigues en tu Biblioteca.","BOARD_EXPLANATION_VIDEOS":"Los nuevos videos de tus canales favoritos están aquí.
    Agrega los canales de YouTube que sigues a tu Biblioteca.","WEBSITE_SLOGAN_WATCH":"Disfrute al instante","WEBSITE_SLOGAN_ALL":"de todo el contenido de vídeo en un solo lugar","WEBSITE_SLOGAN_NEW":"Todo lo que puedes ver","WEBSITE_SLOGAN_NEW_NEW":"Libertad para transmitir","WEBSITE_WATCH_FROM":"Ver desde","WEBSITE_DOWNLOAD":"Descargar ahora","WEBSITE_DOWNLOAD_FOR":"Descargar para","WEBSITE_IS_DESKTOP":"Stremio es una aplicación de escritorio, abrí esta página en tu ordenador y descárgalo","WEBSITE_DESKTOP_DEMO_VID":"Demostración","WEBSITE_PAGE_HOME":"Inicio","WEBSITE_PAGE_FEATURES":"Características","WEBSITE_PAGE_ADDONS":"Complementos","WEBSITE_PAGE_TECH":"Tecnología","WEBSITE_PAGE_CREATE_ADDON":"Crear Complemento","WEBSITE_PAGE_CONTACTS":"Contactos","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Películas","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"TV en vivo","WEBSITE_TYPE_channel":"Canales de Youtube","WEBSITE_STREMIO_WHAT_IS":"Stremio es una aplicación que le ayuda a organizar y ver al instante sus canales de videos, películas, series de televisión y canales de televisión favoritos.","WEBSITE_FEATURES_WATCH":"Ver en HD al instante","WEBSITE_FEATURES_WATCH_DETAIL":"Haga clic y reproduzca sus películas favoritas, programas de televisión, videos y canales de televisión.","WEBSITE_FEATURES_SUBS":"Subtítulos automáticos","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio selecciona automáticamente los subtítulos sincronizados para su idioma.","WEBSITE_FEATURES_SUBS_LABEL":"Tu movimiento, jefe.","WEBSITE_FEATURES_CAST":"Reproduce en los dispositivos móviles y la televisión","WEBSITE_FEATURES_CAST_DETAIL":"Vea en AppleTV, Chromecast, Smart TV (DLNA/UPnP) y dispositivos móviles.","WEBSITE_LIB":"Disfrute de su biblioteca personal sincronizado en todos sus dispositivos","WEBSITE_LIB_COLLECT":"Recoger información de Stremio","WEBSITE_LIB_IMPORT":"Importar desde Facebook","WEBSITE_LIB_LOCAL":"Añadir de la unidad local","WEBSITE_BOARD":"El Panel - Su espacio para recibir Notificaciones y Recomendaciones","WEBSITE_BOARD_RECOMMEND":"Programa de televisión recomendado","WEBSITE_BOARD_TRENDING":"Tendencias en Películas","WEBSITE_BOARD_NEW":"Nuevo video","WEBSITE_BOARD_EPISODE":"Nuevo episodio","WEBSITE_BOARD_1":"¿Buscando algo interesante que ver?\\nObtén recomendaciones basadas en lo que te gusta!","WEBSITE_BOARD_2":"Sea notificado cuando un nuevo episodio de su programa favorito de televisión o canal de YouTube esté disponible!","WEBSITE_BOARD_YOUTUBE":"Nuevos videos de canales de YouTube","WEBSITE_BOARD_EPISODES":"Nuevos episodios de las series que sigues","WEBSITE_ADDONS":"Complementos","WEBSITE_TECH_DETAIL":"¡Nos encanta la tecnología, nos gusta la ciencia loca!\\nStremio utiliza las siguientes tecnologías de código abierto:","WEBSITE_TECH_WCJS":"WebChimera.js permite a Stremio reproducir cualquier formato de vídeo con un buen rendimiento.","WEBSITE_TECH_WCJS_EXTRA":"Somos contribuidores fundamentales del proyecto","WEBSITE_TECH_ELECTRON":"Electron proporciona una plataforma innovadora para construir Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Somos contribuidores del proyecto","WEBSITE_TECH_LINVODB":"Una tecnología de base de datos que asegura que sus datos se organicen y estén disponible en cualquier lugar que inicie sesión.","WEBSITE_TECH_LINVODB_EXTRA":"En la casa de la tecnología","WEBSITE_CREATE_ADDON":"Creé su complemento","WEBSITE_CREATE_ADDON_DETAIL":"¿Tiene un servicio para proporcionar contenido de vídeo?\\nVamos a ayudarle a beneficiarse de las características de Stremio creando su Complemento.","WEBSITE_CREATE_ADDON_BENEFITS":"Beneficios de crear un Complemento para Stremio","WEBSITE_P2P_BEAUTY":"La belleza de la transmisión Par a Par (P2P)","WEBSITE_P2P_1":"Vídeo o transmisión en vivo fiable y asequible en Full HD / 4K","WEBSITE_P2P_2":"La plataforma de distribución proporciona una gran experiencia de usuario","WEBSITE_P2P_3":"Vamos a crear un complemento para la satisfacción de sus necesidades exactas","WEBSITE_P2P_CONTACT":"¿Interesado? Eres bienvenido, Contáctenos.","WEBSITE_P2P_CONTACT_EXTRA":"¡Estaremos encantados de ayudarle a integrar su contenido con Stremio!","WEBSITE_P2P":"De vez en cuando, llega una tecnología que cambia el nombre del juego. Hemos invertido un montón de tiempo y esfuerzo en la construcción de nuestro motor de transmisión de Par A Par (P2P) de vídeo que proporciona un gran rendimiento y versatilidad para adaptarse a cualquier caso de uso.\\nContáctenos por DRM-enabled P2P video en demanda o transmisión en vivo.","WEBSITE_THOUGHTS":"Pensamientos que compartimos:","WEBSITE_SPREAD":"Difunde Stremio en tus redes sociales:","WEBSITE_CONTACT":"Contacta con nosotros, ¡Estamos deseando escucharte!","WEBSITE_OPENSOURCE":"Para nuestros proyectos de código abierto, vaya a","WEBSITE_BITCOIN":"Donar Bitcoin:","WEBSITE_FAQ":"Preguntas frecuentes","WEBSITE_FAQ_SHORT":"Preguntas frecuentes","WEBSITE_QUESTIONS":"Preguntas","WEBSITE_TOS":"Términos de Uso","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"Acerca de","WEBSITE_PAGE_BECOME_PARTNER":"Vuélvete un socio","WEBSITE_ALL_YOU_CAN_WATCH":"Libertad para ver\\nTodo lo que quieras.","WEBSITE_FREEDOM_TO_STREAM":"Libertad para transmitir","WEBSITE_WHAT_IS_STREMIO":"¿Qué es Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio es un centro unificado para agregación de contenido de vídeo. Descubre, organiza y ver videos de todo tipo de fuente en cualquier dispositivo que poseas.","WEBSITE_WHAT_IS_STREMIO_P2":"Películas, programas de televisión, series, televisión en vivo o canales web como YouTube y Twitch.tv: puedes encontrar todo esto en Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio es un media center moderno que le ofrece una solución integral de entretenimiento por vídeo. Puede descubrir, ver y organizar su contenido de vídeo desde complementos de fácil instalación.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Películas, programas de TV, TV en directo o canales web - Stremio pone todo esto a su disposición.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Disfruta en todos tus dispositivos","WEBSITE_DEVICES_COLLECT":"Recopilar desde Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importar desde Facebook","WEBSITE_DEVICES_LOCAL":"Agregar desde el disco local","WEBSITE_JOIN_THE_PARTY_NOW":"Únete a la fiesta ahora","WEBSITE_DEVICES_ALL":"Fácil de usar en todos tus dispositivos;","WEBSITE_EXTENDABLE_CATALOG":"Catálogo de videos extensible infinitamente;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Excelentes funcionalidades para organizar tu multimedia;","WEBSITE_AS_SEEN_ON":"Como se ve en","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Acerca de nosotros","WEBSITE_LINK_TECHNOLOGY":"Tecnología","WEBSITE_LINK_APPS":"Aplicaciones","WEBSITE_LINK_DOWNLOADS":"Descargas","WEBSITE_MORE":"Más","WEBSITE_LINK_ADDONS":"Complementos","WEBSITE_LINK_ADDON_SDK":"SDK para extensiones","WEBSITE_LINK_CONTRIBUTE":"Contribuye","WEBSITE_LINK_COMMUNITY":"Comunidad","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & Más","WEBSITE_LINK_HELP":"Centro de ayuda","WEBSITE_LINK_CONTACTS":"Contáctanos","WEBSITE_LINK_TOS":"Términos y condiciones","WEBSITE_LINK_PRAVACY":"Política de privacidad","WEBSITE_SUBSCRIBE":"Suscripción","WEBSITE_NEWSLETTER":"Únete a nuestro boletín de noticias para cosas increíbles","WEBSITE_PLACEHOLDER_EMAIL":"Su correo electrónico","WEBSITE_COMMUNITY":"Comunidad","WEBSITE_LINK_PRAVACY_LEGAL":"Privacidad y legal","WEBSITE_WHY":"¿Por qué hacemos esto?","WEBSITE_WHY_P1":"En Stremio, trabajamos cada día porque queremos solucionar un problema importante en la industria de vídeo bajo demanda. Hay tanto contenido nuevo publicado cada minuto que es virtualmente imposible de encontrar el camino a él.","WEBSITE_WHY_P2":"Ayudamos a las personas a navegar aquel enorme mundo del entretenimiento en vídeo y descubrir nuevo contenido para disfrutar. Nuestras aplicaciones traen juntas películas, series, televisión en vivo, canales web y más. Estamos dedicados a hacer esto increíblemente fácil para los usuarios buscar títulos y transmisiones que amarán.","WEBSITE_WHY_P3":"Puedes usar nuestro servicio en cualquier dispositivo y en cualquier momento, haciendo Stremio el único centro de entretenimiento de vídeo que necesitaras.","WEBSITE_TEAM":"EQUIPO","WEBSITE_TEAM_P":"El equipo Stremio es pequeño pero poderoso: entre diez de nosotros, programamos en X lenguajes y compartimos habilidades en desarrollo de software, diseño UI y UX, mercadeo y publicidad, y negocios y startups.","WEBSITE_FEATURES":"Características","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Descubre nuevo contenido con facilidad","WEBSITE_FEATURES_DISCOVER_P":"Descubre fácilmente nuevas películas, programas de televisión, series y canales para ver. Busca por categoría, género, calificación, año, etc. o simplemente escribe un nombre para buscar. Stremio hace fácil encontrar nuevo contenido de vídeo.","WEBSITE_FEATURES_ALL_CONTENT":"Todo tu contenido de vídeo en una pantalla","WEBSITE_FEATURES_ALL_CONTENT_P1":"Mira que películas, series o vídeos no has terminado y continua viéndolos; obtén notificaciones de nuevos episodios y estrenos; y navega a través de recomendaciones que obtendrás basadas en tus hábitos.","WEBSITE_FEATURES_LIBRARY":"Organiza tus videos","WEBSITE_FEATURES_LIBRARY_P1":"Agrega cualquier título a tu biblioteca de Stremio con un solo clic y encuentra tu camino a través de tu contenido, perfectamente ordenado por tipo, año u orden alfabético.","WEBSITE_FEATURES_CALENDAR":"Mantiene seguimiento de todo lo que ves","WEBSITE_FEATURES_CALENDAR_P1":"Obtén un calendario de todas las películas y series que agregas a tu biblioteca. Exporta tu calendario Stremio y sincroniza este para que siempre sepas cuando hay un nuevo episodio o un estreno.","WEBSITE_FEATURES_BIG_SCREEN":"Disfruta tu contenido de video en una pantalla grande","WEBSITE_FEATURES_BIG_SCREEN_P1":"Transmite lo que sea que estés viendo a otro dispositivo - sea este un teléfono, tableta o un T.V. con un solo clic.","WEBSITE_FEATURES_SOURCES":"Ve videos de diferentes fuentes","WEBSITE_FEATURES_SOURCES_P":"Instala complementos oficiales y de la comunidad para disfrutar las fuentes de vídeo desde diferentes proveedores - todo en una aplicación elegante y fácil de usar.","WEBSITE_CREATE_AN_ADDON":"Crear un complemento","WEBSITE_FEATURES_SYNC":"Sincroniza tu biblioteca entre distintos dispositivos y continua la reproducción","WEBSITE_FEATURES_SYNC_P1":"Haz login en tu cuenta en todos los dispositivos y podrás disfrutar de tener tu biblioteca, complementos, lista de reproducción y calendario.","WEBSITE_FEATURES_EXTENDABLE":"Catálogo de videos ampliable a través de complementos","WEBSITE_FEATURES_EXTENDABLE_P1":"El complemento de catálogo de Stremio provee de una serie de complementos instalables que permiten ver contenido a través de ellos. Ésto incluye películas, series, televisión en directo, deportes, noticias, podcasts, suscripciones webs, video juego, etc.","WEBSITE_FEATURES_AUTO_SUBS":"Subtítulos automáticos","WEBSITE_FEATURES_AUTO_SUBS_P1":"Con nuestros complementos de subtítulos puedes obtener automáticamente una variedad de opciones en tu idioma.","WEBSITE_FEATURES_CHROMECAST":"Haciendo casting a Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Disfruta del video en una pantalla más grande o envía lo que estás viendo a otro dispositivo.","WEBSITE_FEATURES_KEEP_TRACK":"Haz el seguimiento de tus series o canales favoritos.","WEBSITE_FEATURES_KEEP_TRACK_P1":"Obtén un calendario con notificaciones cuando haya nuevos episodios de tu serie o canal favoritos.","WEBSITE_FEATURES_POWER_USER":"Características de usuario experto","WEBSITE_FEATURES_POWER_USER_P1":"Ver en un reproductor externo.","WEBSITE_FEATURES_POWER_USER_P2":"Reproducir desde un fichero torrent o unlace magnet","WEBSITE_FEATURES_POWER_USER_P3":"Importa en tu librería a través de los Me gusta de Facebook o desde tu disco duro local","WEBSITE_ADD_ONS":"Complementos","WEBSITE_ADD_ONS_P1":"Todo el contenido de vídeo que Stremio provee es obtenido a través de un sistema de complementos - no se ha incorporado ningún contenido o proveedor de contenido dentro de la aplicación.","WEBSITE_ADD_ONS_P2":"Hay dos grupos de complementos disponibles: oficiales y de la comunidad.","WEBSITE_ADD_ONS_P3":"Los complementos oficiales son desarrollados y alojados por Stremio, mientras que los complementos de la comunidad son creados por nuestros miembros de la comunidad, quienes también los alojan.","WEBSITE_ADDONS_OFFICIAL":"Complementos oficiales","WEBSITE_ADDONS_WATCHUB":"Reproduce tus películas, series y programas favoritos desde proveedores como iTunes, Hulu, Amazon y otros servicios de Estados Unidos y Reino Unido.","WEBSITE_ADDONS_YOUTUBE":"Mira tus canales favoritos de Youtube libres de publicidad y obtén notificaciones de nuevos vídeos de los contribuidores que sigues.","WEBSITE_ADDONS_FILMON":"Mira canales en vivo, películas y televisión pública gratis. 600 canales de televisión, 45000 películas, documentales y más gratis.","WEBSITE_ADDONS_OPENSUBTITLES":"Subtítulos de películas y televisión en múltiples lenguajes, miles de subtítulos traducidos subidos todos los días.","WEBSITE_ADDONS_COMMUNITY":"Complementos de la comunidad","WEBSITE_ADDONS_FILMON_VOD":"Mira vídeos bajo demanda desde Filmon.tv","WEBSITE_ADDONS_TWICH":"Mira programas en vivo desde Twitch.tv - una plataforma de transmisión de vídeo para la industria de deportes electrónicos.","WEBSITE_ADDONS_VODO":"Ve películas independientes completamente gratis.","WEBSITE_ADDONS_NETFLIX":"Ve películas de Netflix y series web.","WEBSITE_ADDONS_CREATE":"Crear un complemento","WEBSITE_ADDONS_CREATE_P1":"Si lo deseas, puedes desarrollar tu propio complemento. De esta manera, puedes darte a ti y a la comunidad acceso a nuevo contenido de vídeo, y alcanzar una nueva audiencia de millones de usuarios alrededor del mundo.","WEBSITE_ADDONS_START_CREATE":"Para empezar, visita la página del SDK de complementos de Stremio:","WEBSITE_DOWNLOADS":"Descargas","WEBSITE_DOWNLOADS_P1":"Para un óptimo rendimiento, recomendamos que uses la última versión disponible de las aplicaciones de Stremio. Si por alguna razón, deseas usar una versión anterior, puedes descargarla aquí.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio para Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio para macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio para Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio para Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio para Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio para Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio para Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio para iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribuye","WEBSITE_CONTRIBUTE_P1":"La plataforma Stremio es código abierto y puedes crear fácilmente un complemento para contenido que actualmente no posee fuente.","WEBSITE_CONTRIBUTE_WHY":"¿Por qué deberías crear una extensión?","WEBSITE_CONTRIBUTE_WHY_P1":"Alcanzar nueva audiencia para tu contenido de vídeo","WEBSITE_CONTRIBUTE_WHY_P2":"La base de usuarios de Stremio crece rápidamente - desde el primer año de lanzamiento, Stremio ha ganado 1 millón de usuarios alrededor del mundo, y en el segundo año de la existencia de la plataforma este número ha crecido a 2.5 millones.","WEBSITE_CONTRIBUTE_WHY_P3":"Con tu complemento fácilmente alcanzarás esta audiencia y distribuirás tu contenido de vídeo a ellos.","WEBSITE_CONTRIBUTE_ALL":"Mira tus películas, series y canales favoritos en un solo lugar.","WEBSITE_CONTRIBUTE_ALL_P1":"¿Eres aficionado de un un tipo particular de contenido no disponible aún en Stremio? Crea un complemento para este y disfruta de ver tus vídeos favoritos en uno de los centros de entretenimiento más grandes y fáciles de usar en el mercado.","WEBSITE_CONTRIBUTE_ALL_P2":"Además de eso, obtendrás la infinita gratitud de otros miembros de la comunidad de Stremio afines.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetiza tu complemento y gana dinero con su ayuda","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Una vez desarrolles un nuevo complemento para Stremio, puedes fácilmente monetizar este a través de diferentes maneras. Si estás considerando esto, siéntete libre de entrar en contacto con nosotros a ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - estaremos felices de consultarte y asesorarte sobre las opciones de monetización de tu complemento.","WEBSITE_CONTRIBUTE_TRANSLATE":"Conviértete en un traductor voluntario","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Si deseas disfrutar de las aplicaciones de Stremio en diferentes lenguajes, puedes unirte a nuestra comunidad de traductores voluntarios. Ellos nos ayudan a agregar versiones de Stremio en diferentes lenguajes.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"¿Estás ansioso por comenzar?","WEBSITE_TRANSALTE_STREMIO":"Traduce Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Comunidades oficiales","WEBSITE_COMMUNITY_OFFICIALS_P1":"Sé parte de la creciente comunidad de Stremio. Síguenos en redes sociales y no seas tímido de decir hola - ¡nos encanta escuchar a nuestros fanáticos! ","WEBSITE_COMMUNITY_UNOFFICIALS":"No oficial","STREMIO_COMMUNITY_NL":"Stremio Países Bajos","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Alemania","STREMIO_COMMUNITY_BELGIUM":"Stremio Bélgica","STREMIO_COMMUNITY_FRANCE":"Stremio Francia","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italia","STREMIO_COMMUNITY_UK":"Stremio Reino Unido","STREMIO_COMMUNITY_USA":"Stremio Estados Unidos","STREMIO_COMMUNITY_MEXICO":"Stremio México","STREMIO_COMMUNITY_ADDONS":"Complementos de Stremio","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Socios y partidarios","WEBSITE_COMMUNITY_GOODIES":"Stremio Goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Protectores de pantalla","WEBSITE_COMMUNITY_ART":"Galería de Arte de la Comunidad","WEBSITE_LINK_ART":"Galería de arte de la comunidad","WEBSITE_CONTACT_US":"Contacta con nosotros","WEBSITE_CONTACT_US_P1":"Si tienes alguna pregunta, comentario o sugerencia, siéntete libre de entrar en contacto con nosotros a través del formulario de contacto más abajo.","WEBSITE_CONTACT_US_P2":"Ten presente que nos ubicamos en Bulgaria, entonces habrá un retraso en la respuesta a su consulta debido a las diferencias de zona horaria.","WEBSITE_CONTACT_US_SUCCESS":"Tu mensaje ha sido enviado. Nos pondremos en contacto contigo lo antes posible.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"¡Por favor escribe un correo electrónico válido!","WEBSITE_CONTACT_US_Q_RELATED_TO":"¿Con qué se relaciona su pregunta?","WEBSITE_CONTACT_US_Q_OS":"¿Cuál es su sistema operativo?","WEBSITE_CONTACT_US_PH_EMAIL":"Su correo electrónico","WEBSITE_CONTACT_US_PH_MESSAGE":"Mensaje","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ENVIAR","WEBSITE_CONTACT_US_Q_1":"¿Cómo instalar?","WEBSITE_CONTACT_US_Q_2":"¿Cómo desinstalar?","WEBSITE_CONTACT_US_Q_3":"¿(HTML) Cómo hacer lasaña?","WEBSITE_CONTACT_US_Q_4":"Complementos","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Tecnología","WEBSITE_TECHNOLOGY_P1":"Amamos la tecnología y la ciencia loca.
    Aquí está lo que potencia a Stremio (todo es código abierto).","WEBSITE_TECHNOLOGY_P_QT":"Desarrollo de software multiplataforma en su mejor momento.","WEBSITE_TECHNOLOGY_P_MPV":"Un reproductor libre, de código abierto y multiplataforma.","WEBSITE_TECHNOLOGY_P_RN":"React Native te permite desarrollar aplicaciones móviles usando solo Javascript.","WEBSITE_TECHNOLOGY_P_VLC":"Framework multimedia embebido en la aplicación para obtener multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm es una plataforma móvil y un reemplazo para SQlite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js es un entorno de Javascript multi-plataforma y de código abierto.","WEBSITE_TECHNOLOGY_P_RUST":"Rust es un lenguaje de programación de sistemas multi-paradigma que se enfoca en la seguridad, y más concretamente en ejecución concurrente de manera segura.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribuye al proyecto","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Hay dos formas en las que puedes contribuir a Stremio y ayudarnos a hacer el producto aún mejor.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Puedes donar tus habilidades en lenguaje traduciendo la plataforma...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"o","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... puedes emplear tus habilidades de programación para la creación de extensiones de la comunidad. ","WEBSITE_TRANSLATE_STREMIO":"Traduce Stremio","WEBSITE_404_OH_NO":"Ay no! La página que estás buscando no está aquí...","WEBSITE_GO_HOME":"Ir al inicio","WEBSITE_LINK_OTHER_DOWNLOADS":"Otras descargas","WEBSITE_FAQ_ABR":"Preguntas frecuentes","WEBSITE_SUPPORT":"Soporte","WEBSITE_DOWNLOAD_4_0_BETA":"Descarga ahora Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Para escritorio","WEBSITE_LINK_ADDON_COMPETITION":"Competición de complementos","WEBSITE_LINK_ART_CONTEST":"Competición artística","WEBSITE_MY_ACCOUNT":"Mi cuenta","WEBSITE_MAINPAGE_FAQ_001_H1":"¿Qué es Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio es un \'media center\' moderno que te da la libertad de ver todo lo que quieras.","WEBSITE_MAINPAGE_FAQ_002_H1":"¿Cómo funciona?","WEBSITE_MAINPAGE_FAQ_002_P1":"Una vez que Stremio esté instalado en tu dispositivo y hayas creado una cuenta, todo lo que tienes que hacer es ver el catálogo de complementos para instalar el complemento que quieras y estarás listo para comenzar a explorar contenido.","WEBSITE_MAINPAGE_FAQ_002_P2":"A continuación, puede ir a las secciones Descubrir o Panel para comenzar a explorar contenido.","WEBSITE_MAINPAGE_FAQ_003_H1":"¿Qué puedo ver?","WEBSITE_MAINPAGE_FAQ_003_P1":"Muchas cosas: Películas, series, canales web, deporte, canales de televisión, podcasts, etc. Gracias a nuestro sistema de complementos puedes acceder a una gran variedad de contenidos.","WEBSITE_MAINPAGE_FAQ_004_H1":"¿Es Stremio software libre?","WEBSITE_MAINPAGE_FAQ_004_P1":"Sí, puedes consultar los siguientes enlaces: ${1}aplicación de escritorio${2} y ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"¿Es Stremio seguro?","WEBSITE_MAINPAGE_FAQ_005_P1":"Sí: al ser software libre, el código es auditable publicamente y puedes revisarlo tú mismo.","WEBSITE_MAINPAGE_FAQ_006_H1":"¿Qué ocurre con mi privacidad?","WEBSITE_MAINPAGE_FAQ_006_P1":"Respetamos la privacidad de los usuarios y no guardamos ningún dato personal exceptuando lo mínimo necesario para poder crear y sincronizar tu cuenta.","WEBSITE_MAINPAGE_FAQ_006_P2":"Hay un ${1}modo invitado{2} al crear la cuenta, que no requiere ningún dato: en éste modo, no hay ninguna llamada a nuestros servidores. Sin embargo, ésto tiene el coste de no tener disponible algunas características útiles como sincronizar tu biblioteca entre distintos dispositivos.","WEBSITE_MAINPAGE_FAQ_007_H1":"¿Puedo enviar el contenido a mi TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Sí, damos soporte a Chromecast y puedes enviar contenido de video desde la aplicación de escritorio o aplicación móvil (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"¿Cuantos complementos tiene Stremio?","WEBSITE_MAINPAGE_FAQ_008_P1":"A finales de 2019, más de 50 - para más información, consulta nuestro catálogo de complementos.","WEBSITE_MAINPAGE_FAQ_009_H1":"¿Es posible ampliar Stremio más allá de lo que se ofrece en el catálogo de complementos?","WEBSITE_MAINPAGE_FAQ_009_P1":"Sí, deberías visitar: ${1}PimpMyStremio${2}, ${3}la comunidad en Reddit{4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"¿Qué dispositivos soporta Stremio?","WEBSITE_MAINPAGE_FAQ_010_P1":"Tenemos aplicaciones de escritorio para Windows, Mac y GNU/Linux. Para móviles o celulares, damos soporte a Android e iOS, aunque la funcionalidad en iOS es limitada (no soporta muchos complementos).","WEBSITE_MAINPAGE_FAQ_010_P2":"Hay muchos dispositivos basados en Android en los cuales puedes ejecutar Stremio, por ejemplo NVIDIA Shield y Amazon Fire Stick, aunque no damos soporte oficial.","WEBSITE_MAINPAGE_FAQ_011_H1":"¿Podeis añadir cierto contenido a Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Lo sentimos, nosotros no proveemos del contenido, sin embargo, cuantos más complementos tengas instalads, mayor será el contenido que tendrás disponible.","WEBSITE_MAINPAGE_FAQ_012_H1":"¿Puede Stremio reproducir enlaces magnet?","WEBSITE_MAINPAGE_FAQ_012_P1":"Sí, y también puede reproducir enlaces HTTP normales, así como ficheros torrent(mediante arrastrar y soltar).","WEBSITE_MAINPAGE_FAQ_013_H1":"¿Puedo descargar un video y verlo offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Tener el contenido offline es una característica en desarrollo que estará disponible más adelante, aunque si dejas que Stremio cachee el contenido en tu dispositivo (revisa el panel de administración) podrás ver el contenido posteriormente sin conexión.","WEBSITE_MAINPAGE_FAQ_014_H1":"¡No funciona nada, ayuda!","WEBSITE_MAINPAGE_FAQ_014_P1":"¿Estás seguro de que has instalado los complementos? Si la respuesta es sí, dirigete a nuestro ${1}centro de ayuda${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"¿Cómo mantiene Stremio los costes de desarrollo?","WEBSITE_MAINPAGE_FAQ_015_P1":"Ocasionalmente publicamos anuncios no intrusivos, pero estamos considerando pasar a un modelo de donación.","WEBSITE_MAINPAGE_FAQ_015_P2":"Si tienes más preguntas, visita nuestro ${1}centro de ayuda${2}.","HELP_LEARN_MORE":"Ayúdanos a saber más de ti.","LIFESTYLE":"Estilo de vida","SPORTS":"Deportes","FOOD_HEALTH":"Comida y Salud","BEAUTY_FASHION":"Belleza y Moda","NEWS":"Noticias","GAMING":"Juegos","SCIENCE_EDUCATION":"Ciencia y Educación","MUSIC":"Música","TRAVEL":"Viajes","LATE_NIGHT":"Espectáculo nocturno","REALITY":"Reality","COMEDY":"Comedia","DIY":"Hazlo tú mismo","TECH":"Tecnología","CINEMA":"Cinema","CONTINUE":"Continuar","SLOW_LOADING":"¿CARGANDO LENTO?","I_GIVE_UP":"Me rindo","LEARN_MORE":"Saber más","POOR_SOURCE":"Esta fuente posee poca disponibilidad o su conexión de internet no es suficientemente rápida","PICK_CATEGORIES_ERR":"Tienes que seleccionar al menos 3 categorías","ADJUST_TIMING":"Ajustar tiempo con ","ADJUST_SIZE":"Ajustar tamaño con ","SEARCH_ANYTHING":"Puedes buscar cualquier cosa...","ALL_CATEGORIES":"Todas","SEARCH_CATEGORIES":"Películas, Series, YouTube & TV","SEARCH_PERSONS":"Actores, Directores y Escritores","SEARCH_PROTOCOLS":"HTTP y enlaces magnéticos","SEARCH_TYPES":"Enlaces IMDB / TVDB","WATCHED":"Viendo","SHOW_LESS":"Mostrar menos","LAST_SEARCHES":"Últimas búsquedas","CLEAR_HISTORY":"Borrar historia","CHOOSE_SOME":"Escoge algunos de estos:","NO_WEB_REMOTE":"Web Remote no se pudo cargar","STREMIO_OFFLINE":"Stremio está desconectado","STREMIO_EXPENSIVE_CONNECTION":"La conexión de red es costosa","USE_DATA":"Usar datos","WARNING":"Advertencia","MORE_INFO":"Más información ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Cargando ...","STREMIO_TV_BACK_TO_LANGUAGES":"Regresar a lenguajes","STREMIO_TV_REMOTE":"Remoto","STREMIO_TV_GO_TO":"Ir a:","STREMIO_TV_OR_SCAN":"o escanear:","STREMIO_TV_ADDON_INSTRUCTIONS":"Por favor, siga las instrucciones para instalar su complemento preferido.","STREMIO_TV_LIVE_TV":"TV en directo","STREMIO_TV_RESUME_WATCHING":"Continuar viendo","STREMIO_TV_LOADING_BACKGROUND":"Cargando fondo","STREMIO_TV_CHECKING_AUTHENTICATION":"Verificando Autenticación","STREMIO_TV_LOADING_BOARD":"Cargando Panel","STREMIO_TV_LOGIN_HEADER_LINE_1":"Nosotros queremos que nuestros usuarios tengan la mejor experiencia personalizada posible con nuestro software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"Esta es la razón por la cual le pedimos cree una cuenta y/o ingrese a ella.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Gracias por su comprensión,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"El equipo Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Para usar el Control Web con su teléfono inteligente / tableta / escritorio:","STREMIO_TV_WIFI_SETUP":"Configuración wifi","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle no detecta una conexión a internet.","STREMIO_TV_WIFI_DETAILS_1":"Conectar a:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Contraseña a usar:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Abrir navegador de internet con el enlace:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Por Último Visto","STREMIO_TV_LIBRARY_SORT_NAME":"Por Nombre","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Por Veces Visto","STREMIO_TV_DETAILS_SEASON_NUMBER":"Temporada ${1}","STREMIO_TV_STREAMS_LOADING":"Cargados ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} complemento continua cargando...","STREMIO_TV_PLAYER_SETTINGS":"Configuración del Reproductor","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Retraso de Subtítulos","STREMIO_TV_PLAYER_AUDIO_DELAY":"Retraso de audio","STREMIO_TV_PLAYER_VIDEO_SCALING":"Escalado de vídeo","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Fuente no soportada","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Fallo al abrir el enlace externo","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Reproducir con ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Reproducir con libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Cambiar al reproductor libVLC debido a un error de reproducción","STREMIO_TV_ADDONS_TITLE":"Utiliza Stremio en tu dispositivo móvil o PC para instalar o configurar complementos y pulsa \\"Sincronizar Complementos\\"","STREMIO_TV_ADDONS_SUBTITLE":"Nota: asegúrate de utilizar la misma cuenta de Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sincronizar Complementos","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Complementos sincronizados exitosamente","STREMIO_TV_ADDONS_SYNC_FAILED":"Fallo al sincronizar complementos","STREMIO_TV_META_LINK_FAILED":"Fallo al abrir meta enlace","STREMIO_TV_CATALOG_LOADING":"El catálogo sigue cargando...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Idioma de la interfaz actualizado","STREMIO_TV_SETTINGS_THEME_UPDATED":"Tema actualizado","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Idioma Preferido","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Idioma Preferido Secundario","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Reproducción tunelizada","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Posibles errores de reproducción en algunos dispositivos","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Algunos formatos de video pueden no funcionar","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Sin caché","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Por Defecto","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Suave","STREMIO_TV_SETTINGS_PROFILE_FAST":"Rápido","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Rápido","STREMIO_TV_SETTINGS_SERVER_URL":"URL del servidor de streaming","STREMIO_TV_SETTINGS_SERVER_VERSION":"Versión del servidor","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Desconocido","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Versión de Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Editar URL del servidor","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Ingrese la URL del servidor de streaming","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Para leer la Política de privacidad de Stremio, visite:","STREMIO_TV_SETTINGS_TOS_TEXT":"Para leer los Términos y condiciones de Stremio, visite:","STREMIO_TV_NAV_SEARCH":"Buscar","STREMIO_TV_NAV_HOME":"Inicio","STREMIO_TV_NAV_DISCOVER":"Descubrir","STREMIO_TV_NAV_LIBRARY":"Biblioteca","STREMIO_TV_NAV_MOVIES":"Películas","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Canales","STREMIO_TV_NAV_TV":"TV en vivo","STREMIO_TV_NAV_SETTINGS":"Configuración","STREMIO_TV_NAV_ADDONS":"Complementos","STREMIO_TV_LOGIN_TITLE":"Asociar Cuenta","STREMIO_TV_LOGIN_EXPIRES_IN":"Expira en","STREMIO_TV_LOGIN_STEP_ONE":"Escanea el Código QR de arriba o visita","STREMIO_TV_LOGIN_STEP_TWO":"Inicia sesión a tu cuenta Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Solicitar un nuevo enlace","STREMIO_TV_LOGIN_LINK_REFRESHED":"Código de login actualizado","STREMIO_TV_SEARCH_PLACEHOLDER":"Escribe algo","STREMIO_TV_SEARCH_NO_ADDONS":"¡No se solicitaron complementos para los catálogos!","STREMIO_TV_SEARCH_BUTTON":"Buscal","STREMIO_TV_SEARCH_KEY_DEL":"Borrar","STREMIO_TV_SEARCH_KEY_SPACE":"Espacio","STREMIO_TV_SEARCH_KEY_CLEAR":"Limpiar","STREMIO_TV_SEARCH_HISTORY_TITLE":"Historial de Búsqueda","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Puedes buscar por Título, Actores, Canales y más...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Vaciar el Historial de Búsqueda","STREMIO_TV_FILTERS_DESCRIPTION":"Elige uno de los filtros a continuación","FILTERS":"Filtros","SETTINGS":"Configuración","ACCOUNT":"Cuenta","LOGOUT":"Cerrar Sesión","THEMES":"Temas","PLAYBACK":"Reproducción","PLAYBACK_SPEED":"Velocidad de Reproducción","AUDIO_TRACKS":"Pistas de Audio","VIDEOS":"Videos","SERVER":"Servidor","LINKS":"Enalces","ABOUT":"Acerca De","INTERFACE":"Interfaz","ANIMATIONS":"Animaciones","STATUS":"Estado","LANGUAGE":"Idioma","SIZE":"Tamaño","DELAY":"Retraso","BOLD":"Negrita","TEXT_COLOR":"Color del Texto","OUTLINE_COLOR":"Color del Contorno","BACKGROUND_COLOR":"Color de Fondo","BACKGROUND_BLUR":"Desenfoque de Fondo","SEEK_TIME_DURATION":"Duración del Tiempo de Búsqueda","AUTO_PLAY":"Reproducir el Episodio Siguiente automáticamente","PLAY_NOW":"Reproducir Ahora","MARK_AS_WATCHED":"Marcar como Visto","MARK_AS_UNWATCHED":"Marcar como No Visto","REWIND_TO_BEGINNING":"Rebobinar al Principio","CONTINUE_WATCHING":"Seguir Viendo","ALL":"Todo","SECONDS":"segundos","ON":"ENCENDIDO","OFF":"APAGADO","RELOAD":"Recargar","EDIT_URL":"Editar URL","NONE":"Ninguno","EMBEDDED":"Embebido","REMOTE_SWITCH_DEVICES":"Cambiar dispositivos","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Ajustar tiempo","REMOTE_ADJUST_SIZE":"Ajustar tamaño","REMOTE_COULD_NOT_BE_LOADED":"El Control Web podría no cargar","REMOTE_RETRY":"Volver a intentar","TORRENT_PROFILE_DEFAULT":"Por Defecto","TORRENT_PROFILE_SOFT":"Suave","TORRENT_PROFILE_FAST":"Rápido","TORRENT_PROFILE_ULTRA_FAST":"Ultra Rápido","FAQ_001_H1":"¿Qué es Stremio?","FAQ_001_P1":"Stremio es un software de centro multimedia diseñado para el entretenimiento de vídeo pensando en el fácil uso. Stremio te permite organizar y ver tu propia colección de películas, series, canales y programas en vivo.","FAQ_001_P2":"Stremio colecta el contenido que muestra desde tu disco local y nuestro sistema de complementos.","FAQ_001_P3":"Te notificará cuando nuevos episodios, películas y vídeos en los cuales estás interesado salgan y proveerá recomendaciones de películas para ti.","FAQ_02_H1":"¿Cómo se compara Stremio con Kodi y Plex?","FAQ_02_P1":"Estamos inspirados por estas dos piezas de software. Pero tenemos diferentes objetivos - Stremio es específicamente pensado en el entretenimiento de vídeo, y se esfuerza por convertirse en la solución principal para eso al ser muy fácil de usar.","FAQ_02_P2":"Stremio nunca será tan personalizable y rico en características como Kodi y Plex, pero es significativamente más fácil de usar. ${1} Obtén y mira ${2} :)","FAQ_03_H1":"¿Cómo se compara Stremio con Netflix?","FAQ_03_P1":"Nuevamente, Netflix es una de nuestras inspiraciones. Nos esforzamos por lograr la experiencia del usuario de Netflix, además de muchos extras adicionales. Pero más importante, te damos la libertad de manejar tu propia biblioteca y agregar nuevas fuentes de contenido con nuestro sistema de complementos.","FAQ_03_P2":"Esto hace a Stremio infinitamente extensible, entonces cuando usas Stremio, no estás limitado al contenido que Netflix decide licenciar. Por ejemplo, a través de Stremio puedes ver contenido desde ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} e incluso ¡${9}Netflix${10} mismo!","FAQ_04_H1":"¿Cómo se compara Stremio con Flipboard?","FAQ_04_P1":"No nos hacemos esa pregunta frecuentemente, excepto cuando hablamos con emprendedores :)","FAQ_04_P2":"Stremio es por diseño un recopilador de contenido, lo cual esencialmente lo hace un Flipboard para vídeo. Esto es muy evidente en nuestra sección de Panel, que te da un catálogo y notificaciones de nuevos episodios y vídeos que sigues, tal como Flipboard.","FAQ_05_H1":"¿Cómo se compara Stremio con Popcorn Time?","FAQ_05_P1":"Stremio y Popcorn Time son similares en la interfaz de usuario, porque no hay muchas formas de hacer catálogos de entretenimiento de vídeo correctamente :)","FAQ_05_P2":"Mientras que Popcorn Time es enfocado en transmitir torrents desde fuentes específicas, Stremio no es restrictivo y es meramente un recopilador de contenido - no se restringe a una fuente específica de contenido.","FAQ_05_P3":"Además, nosotros no proveemos ningún complemento torrent por defecto, así Stremio no cubre el caso de uso de Popcorn Time oficialmente.","FAQ_05_P4":"Otra diferencia notable es que Popcorn Time es completamente código abierto, mientras Stremio es ${1} parcialmente código abierto${2}.","FAQ_06_H1":"¿Agregarán esta película/serie?","FAQ_06_P1":"No, disculpa :(","FAQ_06_P2":"Como es mencionado en la mayoría de las otras preguntas, Stremio no provee contenido alguno por si mismo - todo es agregado a través de un sistema de complementos. En caso de quieras solicitar un contenido, puedes usar el botón “Reportar” en el reproductor, el cual enviará un correo al autor del complemento que estás usando actualmente.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"¿Crearan un complemento para X?","FAQ_08_P1":"Es completamente posible.","FAQ_08_P2":"Si tienes una idea para un complemento, escríbenos a ${1}office@stremio.com${2}, pero asegúrate de que tu idea complementaria no infrinja los derechos de autor ni los términos de uso.","FAQ_08_P3":"En el momento, la siguiente cosa en nuestro plan de trabajo son complementos para FandangoNOW, vídeo bajo demanda Filmon.tv y Crunchyroll.","FAQ_09_H1":"¿Usa Stremio BitTorrent?","FAQ_09_P1":"Si, Stremio soporta BitTorrent como un protocolo de transmisión. Puedes usar este con un complemento torrent, o por arrastrar y soltar un archivo .torrent en Stremio, o por pegar un enlace magnético en la barra de búsqueda.","FAQ_09_P2":"Por favor note que el único complemento oficial usando BitTorrent es ${1}Vodo${2}, el cual provee contenido independiente, todos permitidos para ser distribuidos con BitTorrent.","FAQ_09_P3":"No soportamos el uso de cualquier complemento de terceros que pueda infringir derechos de autor.","FAQ_10_H1":"¿Qué puedo ver en Stremio con los complementos oficiales?","FAQ_10_P1":"Por defecto, puedes ver contenido de Filmon.tv, YouTube y Vodo en Stremio mismo, con su reproductor embebido. Adicionalmente, tenemos un complemento para Twitch.tv y otros tantos.","FAQ_10_P2":"Esto combinado provee una selección de:","FAQ_10_L1":"Canales de televisión populares, proveídos por Filmon.tv - por ejemplo E4, BBC, Bollyworld TV","FAQ_10_L2":"Todo desde YouTube - por ejemplo BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Películas independientes con Vodo","FAQ_10_L4":"Transmisiones de juegos en línea con Twitch.tv","FAQ_10_P3":"Adicionalmente, hay muchas fuentes de contenido provistas con los complementos de Guidebox y Netflix, los cuales no reproducirán completamente dentro de Stremio, pero podría redirigirte al service dado. For example, el complemento de Guidebox puede darte una selección de películas que puedes reproducir en Estados Unidos gratuitamente, desde servicios como TubiTV y Crackle.","FAQ_11_H1":"Stremio no instala, ¿Qué puedo hacer?","FAQ_11_P1":"Si estás en Windows, intenta ${1}este instalador alternativo${2}.","FAQ_11_P2":"Si estás en Mac OS X, ten presente que no soportamos versiones anteriores a OS X Mavericks (10.9).","FAQ_11_P3":"Si estás en Linux, ten presente que solo soportamos Linux de 64 bits (x64) en el momento.","FAQ_11_P4":"Si aún no puede resolver su problema, por favor escríbanos a nuestro ${1}grupo de Facebook${2}.","FAQ_12_H1":"¿Por qué mi antivirus reclama? ¿Es Stremio seguro?","FAQ_12_P1":"Aseguramos que Stremio ${1}100% libre de virus${2}.","FAQ_12_P2":"Su antivirus está reclamando porque nosotros incluimos publicidad en nuestro instalador, la cual es reconocida por algunos antivirus como software publicitario.","FAQ_12_P3":"Si aún estás inseguro, puedes probar nuestro ${1}instalador alternativo${2}.","FAQ_13_H1":"¿Cómo puedo crear un complemento?","FAQ_13_P1":"Para principiantes, recomendamos que revises nuestro ${1}módulo de sistema de complementos${2} en GitHub.","FAQ_13_P2":"Después, puedes seguir el ${1}tutorial: Hello World${2}.","FAQ_13_P3":"Si no tienes habilidades en programación, por favor publica tu idea en ${1}la comunidad Reddit${2} y contáctanos con tu idea de complemento a ${3}office@stremio.com${4}.","FAQ_14_H1":"¿Cómo se publican complementos?","FAQ_14_P1":"Cuando creas un complemento y lo alojas, y pones un campo endpoint en su manifiesto, que apunta a una dirección de complemento funcional, el complemento automáticamente se publicará por si mismo en nuestro ${1}catálogo de complementos${2}.","FAQ_14_P2":"Esto sucede porque la parte del servidor del módulo stremio-addons realiza automáticamente una llamada a nuestra API para anunciar el complemento. Cuando nuestra API valida su endpoint como un complemento válido, comenzará a mostrarse en el catálogo.","FAQ_15_H1":"¿Puedo ejecutar Stremio en mi navegador?","FAQ_15_P1":"No en este momento, ¡pero vendrá pronto!","FAQ_15_P2":"Si tienes curiosidad de ver un alfa, puedes verlo aquí: ${1}alpha4.strem.io${2}. Ten en mente que la transmisión es deshabilitada en este alfa. Soportamos Chrome, Firefox, Opera y Edge.","FAQ_16_H1":"Transmitir al televisor no funciona / subtítulos no funcionas","FAQ_16_P1":"La transmisión al televisor usa tecnología DLNA, que es muy inconsistente entre diferentes marcas y modelos de televisor. Por esa razón, no tenemos la capacidad de probarlo en todos los casos, por lo que está lejos de ser perfecto. A pesar de esto, estamos trabajando para mejorarlo constantemente, pero no podemos darle una estimación de cuándo la tecnología DLNA comenzará a funcionar correctamente con su televisor.","FAQ_16_P2":"Si ni siquiera ve su televisor en el menú de transmisión, intente deshabilitar su conexión de red y volver a habilitarla (en Windows, haga clic derecho en la red y use Activar/Desactivar), y reinicie su enrutador, televisor y computador.","FAQ_16_P3":"Si aún presentas problemas, puedes ayudarnos enviándonos la información de marca y modelo de tu televisor a ${1}office@stremio.com${2}.","FAQ_16_P4":"En el momento, recomendamos Chromecast, el cual soportamos bastante bien, o simplemente conecta a tu televisor con un cable HDMI.","FAQ_17_H1":"Stremio se bloquea y/o cierra, ¿qué puedo hacer?","FAQ_17_P1":"Primero que todo, si estás usando Windows 7 con el antivirus AVG: tenemos un problema con esta combinación. El problema es en el mismo AVG y no hay forma razonable para resolver el problema para nuestro fin. Desafortunadamente, excepciones o deshabilitar el antivirus no funcionará. La única solución es reemplazar AVG con otro antivirus.","FAQ_17_P2":"Si esto no soluciona el problema, pero aún estás usando Windows, por favor actualiza al último service pack y actualiza/reinstala tus controladores de la GPU, luego intenta de nuevo.","FAQ_17_P3":"Si su problema aún no se resuelve, o estás usando un Mac o Linux, por favor escríbenos reportando los detalles exactos del problema a ${1}nuestro grupo de Facebook${2}.","FAQ_18_H1":"¿Cómo puedo crear un complemento?","FAQ_18_P1":"Para principiantes, recomendamos que revises nuestro ${1}módulo de sistema de complementos${2} en GitHub.","FAQ_18_P2":"Después, puedes seguir el ${1}tutorial: Hello World${2}.","FAQ_18_P3":"Si no tienes habilidades en programación, por favor publica tu idea en ${1}la comunidad Reddit${2} y contáctanos con tu idea de complemento a ${3}office@stremio.com${4}.","FAQ_19_H1":"¿Por qué Stremio ocupa espacio en disco?","FAQ_19_P1":"Stremio tiene una cache local para almacenar temporalmente los archivos de vídeo que ves.","FAQ_19_P2":"Esto tiene dos beneficios: primero, esto permite a Stremio precargar el vídeo y así asegurar una transmisión más fluida. Segundo, este guarda los vídeos en la cache local, así puedes continuar viéndolos sin conexión.","FAQ_19_P3":"La cantidad que almacena Stremio depende de la configuración de Cache en el panel de Configuración. Stremio puede ser configurado para almacenar una cantidad (ej. 2GB) en su disco local, a menos que el vídeo transmitido actualmente sea mayor que eso, en cuyo caso tendrá que ubicar suficiente almacenamiento para guardarlo hasta que lo retransmitas","FAQ_20_H1":"¿Donde está la carpeta de almacenamiento?","FAQ_20_P1":"En Windows, es stremio-cache en el disco que seleccionaste en Configuración (ej. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"En MacOS, es \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"En Linux, es \\"~/.stremio/stremio-cache\\" o \\"~/stremio-cache\\"","FAQ_21_H1":"Obtengo el error \\"Streaming server is not found\\", ¿qué puedo hacer?","FAQ_21_P1":"Si ves este error, quiere decir una de las siguientes cosas::","FAQ_21_P2":"1) Estás intentando usar un complemento que depende de fuentes de Youtube/BitTorrent, a través de nuestra ${1}versión web${2}. En este caso, deberías instalar nuestra versión de escritorio desde ${3}nuestro sitio web${4}.","FAQ_21_P3":"2) Algo está mal con tu instalación de Stremio. En este caso, intenta reinstalar nuestra última versión de escritorio desde ${1}el sitio web${2}. Si esto no ayuda, intenta deshabilitar los programas de antivirus y el cortafuegos, reinicia tu computador e intenta de nuevo. Si esto tampoco funciona, escríbenos por favor a ${3}nuestro grupo de facebook${4}.","FAQ_22_H1":"No puedo ver/usar la mayoría de complementos en iOS","FAQ_22_P1":"Debido a las restricciones de los términos y condiciones de Apple App Store, tenemos restringida la aplicación iOS solo a un conjunto particular de complementos.","FAQ_22_P2":"Pero puedes estar seguro - habrán más complementos para iOS en el futuro, y podríamos también agregar una integración que te permita usar todos los complementos de Stremio gracias a la conexión de la aplicación iOS con el servidor de transmisión de Stremio."}')},3236:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filma","TYPE_series":"Telesaila","TYPE_tv":"Telebista katea","TYPE_channel":"Kanala","TYPE_other":"Beste batzuk","TYPE_movie_PL":"Filmak","TYPE_series_PL":"Telesaila","TYPE_tv_PL":"Telebista kateak","TYPE_channel_PL":"Kanalak","TYPE_other_PL":"Beste batzuk","TYPE_ALL":"All","VIDEO":"Bideoa","BACK":"Atzera","MORE":"Gehiago","DONE":"Eginda","COPY":"Kopiatu","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Ezagutu","Board":"Arbela","Library":"Liburutegia","My Library":"Nire Liburutegia","Calendar":"Egutegia","NOTIFICATION_ONLINE":"Linean zaude orain","NOTIFICATION_OFFLINE":"Une honetan lineaz kanpo zaude","INTERNET_CONNECTION":"Sareko konexioa","STORAGE_FULL_TITLE":"Abisua: biltegiratzea beteta!","STORAGE_FULL_TEXT":"Stremio-k ezin izango ditu zure ezarpenak, lehentasunak edo saio-hasierako informazioa gorde. Baloratu Stremio berriro abiaraztea edo berriro instalatzea.","SEARCH":"bilatu","SEARCH_NO_RESULTS":"Ez da emaitzarik aurkitu","SEARCH_EXPLANATION_CONTENT":"Bilatu filmak, serieak, YouTube eta telebista kateak","SEARCH_EXPLANATION_PEOPLE":"Aktore, zuzendari eta idazleak bilatu","SEARCH_PASTE_LINKS":"Itsatsi HTTP eta Magnet estekak","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Gehitu liburutegian","REMOVE_FROM_LIB":"Kendu liburutegitik","ADDED_TO_LIB":"Liburutegian gehitu da","REMOVED_FROM_LIB":"Liburutegitik kendu da","TRAILER":"Trailerra","WATCH_TRAILER":"Ikusi Trailerra","WATCH_NOW":"Ikusi orain","SHOW":"Ikuskizuna","SHOW_MOVIE":"Erakutsi filma","WATCH_RANDOM":"Ikusi ausaz","IMDB_RATING":"IMDb balorazioa","YEAR":"Urtea","DIRECTOR":"Zuzendaria","WRITER":"Idazlea","LEAD_ACTORS":"Aktore nagusiak","CAST":"Aktoreak","CREW":"Tripulazioa","SHOW_MORE_CAST":"Erakutsi gehiago »","AIRED":"Erretransmititua","SEASONS":"Denboraldiak","GENRE":"Generoa","CATALOG":"Katalogoa","SUMMARY":"Laburpena","SHOW_MORE":"Erakutsi gehiago","SIMILAR":"Antzekoak","UPCOMING":"Datozenak","ENDED":"Bukatuta","DURATION":"Iraupena","FEATURED":"Nabarmenduak","METADATA":"Metadatuak","CATEGORY":"kategoria","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"bilatu bideoak","SEARCH_PLACEHOLDER":"bilatu edo itsatsi URLa","ADDON":"gehigarria","ADDONS":"Gehigarriak","OFFICIAL":"ofiziala","ADDONS_OFFICIAL":"Stremio gehigarri ofizialak","ADDONS_POPULAR":"Zure inguruan ezaguna","ADDON_FREE":"doan","ADDON_PEERED":"begiratu","ADDON_SUBSCRIPTION":"harpidetza","ADDON_STREAM_GEORESTRICTED":"ez dago erabilgarri zure eremuan","ADDON_STREAM_OFFLINECACHE":"Lineaz kanpoko cachea","ADDON_STREAM_LOCALFILE":"Tokiko fitxategia","SHARE_ADDON":"Partekatu gehigarria","AVAILABLE_STREAMS":"Eskuragarri dauden stream-ak","NO_STREAM":"Ez da stream-ik aurkitu","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Stream gehiagorako, instalatu gehigarriak","STREAM_NOT_SUPPORTED":"Aukeratutako stream-a ez da onartzen plataforma honetan.","ADDON_CATALOGUE":"Erakutsi gehigarri guztiak »","ADDON_CATALOGUE_MORE":"Instalatu gehigarriak","REPO_ADDED":"Biltegia gehitu da","ADDON_REPO_EXIST_ERR":"Gehigarrien bilduma hau dagoeneko existitzen da","ADDON_REPO_ERR":"Errore bat gertatu da bilduma gehitzean","ADDON_ADD_ERR":"Errore bat gertatu da gehigarria gehitzean","ERR_ADDON_PROTECTED":"Ezin da gehigarria desinstalatu, babestuta dago","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Arazoren bat izan da. Baliteke autentifikazioak huts egitea","ERR_NOT_COLLECTION_URL":"Ez da bildumaren URLa","ERR_NOT_ADDON_URL":"Ez da baliozko gehigarri URLa","ERR_DETECTFROMURL":"Ezin da URL honetatik gehigarririk/bildumarik aurkitu","ADDON_DUPLICATE_WARNING":"Abisua: gehigarri bikoiztua","ADDON_COLLECTION_SET_FAILED":"Instalatutako gehigarriak zure kontuan sinkronizatzeak huts egin du","SETTINGS_DATA_EXPORT":"Esportatu erabiltzaileen datuak","ADDON_PULL_FAILED":"Instalatutako gehigarriak zure kontutik sinkronizatzeak huts egin du","REFRESH_ON_CLICK":"Egin klik berriro saiatzeko","STILL_IN_THEATER":"Filma oraindik zinema aretoetan","WATCH_IN_CINEMA":"Ikusi zure tokiko zineman","IN_THEATER":"Zineman","GET_TICKETS":"Sarrerak eskuratu","UPCOMING_EPISODE":"Hurrengo atala","UPCOMING_EPISODE_MESSAGE":"Atal hau emitituko da","MISSING_DATE_EPISODE":"Atalaren data falta da","MISSING_DATE_EPISODE_MESSAGE":"Baliteke atal hau oraindik ez emititzea","CHANNEL_NOT_SCRAPED":"Kanal hau ez dago oraindik zatituta.
    Itzuli minutu batzuen buruan.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Gehitu liburutegian erabilgarri dagoenean jakinarazpenak jasotzeko.","GET_NOTIFIED_WHEN_AVAILABLE":"Erabilgarri dagoenean jakinaraziko zaizu.","WARNING_STREAMING_SERVER":"Abisua: ez da aurkitu streaming lokaleko zerbitzaria. Tokiko fitxategietatik, YouTube-tik eta BitTorrent-etik erreproduzitzea ez da erabilgarri egongo.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Oharra: baliteke bideo hau zure hardwareak ez onartzea. Gogoan izan, erreprodukzioa motela izan daitekela.","PLAYER_ERROR":"Erreproduktorearen akatsa","PLAYER_ERROR_LOOKSLIKE":"Badirudi","PLAYER_ORIENTATION":"Erreproduktorearen orientazioa","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Blokeatuta","PLAYER_ORIENTATION_SENSOR_SHORT":"Sentsorea","PLAYER_ORIENTATION_LANDSCAPE":"Erreproduktorearen orientazio etzana blokeatuta dago","PLAYER_ORIENTATION_SENSOR":"Erreproduktorearen orientazio automatikoa (sentsorea)","PLAYER_PLAYBACK_SPEED":"Erreprodukzio abiadura","PLAYER_PLAYBACK_ERROR":"Erreprodukzioaren errorea. Saiatu berriro","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Errore ezezaguna","PLAYER_PLAYBACK_ERROR_DEFAULT":"Barkatu, bideo hau ezin du {{productName}} erabiltzaileak erreproduzitu.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Zuzenean","PLAYER_NEXT_VIDEO_TITLE":"Bueltan dator","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Baztertu","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Ikusi orain","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streaming jatorria","CASTING_TO":"(e)ra igortzen","NETWORK_STATUS":"Sarearen egoera","STREAM_SPEED":"Stream-aren abiadura:","STREAM_BUFFERED":"Bufferrean:","PEERS_INFO":"Peer informazioa","PEERS_ACTIVE":"Aktibo:","PEERS_CONNECTED":"Konektatuta:","PEERS_WAITING":"Itxaroten:","TRANSCODING_WARNING":"Abisua: bideoa transkodetzen.","STREAM_LOADING":"kargatzen...","PLAYING_LOCAL":"fitxategi lokaletik erreproduzitzen","PLAYING_CACHE":"cachetik erreproduzitzen","WRONG_SUBS":"Azpititulu okerrak?","ERR_SUBS_LOADING_TITLE":"Errorea azpitituluak kargatzean","ERR_SUBS_LOADING":"Ezin izan dira azpitituluak kargatu: arazoa izan daiteke erabiltzen ari zaren gehigarrian edo sareko konexioan","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Azpitituluen gehigarri hauek huts egin dute","ERR_CASTING_UPDATE_TITLE":"Ezin izan da eguneratu gailuaren informazioa: streaming zerbitzaria konexiorik gabe egon liteke","CHOOSE_DEVICE":"Aukeratu ikusi nahi duzun gailua","NO_CAST_DEVICES":"Ez dago galdaketa gailurik erabilgarri.","NO_SETTINGS":"Ez dago ezarpenik erabilgarri.","PHONE_TABLET":"Telefonoa / Tableta","SUBTITLES":"Azpitituluak","SUBTITLES_CHANGE":"Aldatu azpitituluak","SUBTITLES_CHANGE_NONE":"Ez dago hizkuntza honen azpititulurik, barkatu.","SUBTITLES_CHANGE_ACIVE":"Une honetan #{{subtitlesDialog.activeIdx + 1}} azpitituluak aktibatuta daude. Egin klik \\"Jarraitu\\" #{{subtitlesDialog.pickedIdx + 1}} azpitituluak aktibatzeko.","SUBTITLES_OR":"Bestela,","SUBTITLES_ADJUST_DELAY":"Doitu azpidatzien atzerapena:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Edo erabili G / H teklak erreproduzitzerakoan doiketarako.","SUBTITLES_ADJUST_DELAY_TIP":"AHOLKUA: G / H teklak erabil ditzakezu erreproduzitzerakoan doiketarako.","SUBTITLES_DELAY":"Azpitituluen atzerapena:","SUBTITLES_LOADING":"Azpitituluak kargatzen ...","SUBTITLES_UNAVAILABLE":"Ez dago kanpoko azpititulurik erabilgarri","SUBTITLES_DISABLED":"Desgaituta","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audioa","DEFAULT_LANGUAGE":"Defektuzko hizkuntza","DEFAULT_SECONDARY_LANGUAGE":"Defektuzko Bigarren Hizkuntza","SEASON":"Denboraldia","EPISODE":"Atala","SPECIAL":"Berezia","SORT":"ordenatu","SORT_BY":"Ordenatu","FILTER":"iragazkia","SORT_TRENDING":"joera","SORT_RECENT":"berriena","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"balorazioa","SORT_WATCHED":"ikusita","SORT_YEAR":"urtea","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Zuretzako berria","New Episodes":"Atal berriak","New Videos":"Bideo berriak","Recommendations":"Gomendioak","LIBRARY_RESUME":"Jarraitu","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Xehetasunak","LIBRARY_RESUME_DISMISS":"Baztertu","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Nabarmenduak","DISCOVER_TOP":"Gora","DISCOVER_OSCAR":"Oscar saridunak","DISCOVER_WARNING_TITLE":"Glubs!","DISCOVER_EMPTY_CATALOG":"Gehigarri honek eduki hutsa itzuli du.","DISCOVER_ADULT_WARNING":"Edukia helduentzat soilik dago ikusgai. 18 urte baino gehiago al dituzu?","DISCOVER_NOADDON_WARNING":"Abisua: ez dago Stremio gehigarririk aktibo mota honetarako. Gordetako elementuak erakutsiz, hemen ez da ezer eguneratuko.","DISCOVER_LOAD_ERR":"Edukia ez da kargatu, errorea gertatu da.","DISCOVER_ADDON_UNINSTALLED":"Eduki hau jada ez dago erabilgarri, baliteke gehigarria instalatuta ez izatea.","UNINSTALL_THIS_ADDON":"Desinstalatu gehigarri hau","ERR_ADDON_NOT_INSTALLED":"Gehigarri hau ez dago instalatuta. Orain instalatu nahi duzu?","DETAIL_RECEIVE_NOTIF_SERIES":"Jaso atal berrien jakinarazpenak","DETAIL_RECEIVE_NOTIF_VIDEOS":"Jaso bideo berrien jakinarazpenak","SIDEBAR_SHOW_STREAMS":"Erakutsi stream-ak","RELAUNCH":"Berrabiarazi orain!","UPGRADE":"Bertsio berria eskuragarri dago! Bertsio berritu Stremio azken bertsiora","RELOAD_UI":"Erabiltzailearen interfazea berriro kargatu","MANUAL_UPDATE_TITLE":"Eguneratu Stremio bertsioa","MANUAL_UPDATE_LINE1":"Oso gomendagarria ez den Stremioren bertsio zaharkitu bat erabiltzen ari zara.","MANUAL_UPDATE_LINE2":"Mesedez, eguneratu lehenbailehen.","BUTTON_UPDATE_LATTER":"Orain ez","BUTTON_UPDATE_NOW":"Eguneratu","ANONYMOUS_USER":"Erabiltzaile anonimoa","DONT_HAVE_ACC":"Ez duzu konturik?","HAVE_ACC":"Baduzu kontua?","PASSWORD":"Pasahitza","PASSWORD_CONFIRM":"Pasahitza baieztatu","EMAIL":"Posta elektronikoa","FB_LOGIN":"Jarraitu Facebook-ekin","FB_NOTHINGSHARED":"Ez da ezer partekatzen zure baimenik gabe","FB_NOPOST":"Ez dugu ezer argitaratuko zure izenean","OR":"edo","I_ACCEPT":"Onartzen dut","I_ACCEPT_BY_CLICKING":"Goiko botoian klik eginda onartzen dudala deklaratzen dut","TOS":"Terminoak eta baldintzak","MUST_ACCEPT_TERMS":"Baldintzak onartu behar dituzu","PASSWORDS_NOMATCH":"Pasahitzak ez datoz bat","SIGN_UP":"Izena eman","SIGN_UP_EMAIL":"Eman izena posta elektronikoz","CLICK_TO_SIGN_UP":"Izena emateko egin klik hemen.","LOG_IN":"Saioa hasi","LOG_OUT":"Saioa amaitu","EXIT_FULLSCREEN":"Irten pantaila osoko modutik","ENTER_FULLSCREEN":"Sartu pantaila osoko moduan","PLAY_URL_MAGNET_LINK":"Erreproduzitu URL/Magnet esteka","HELP_FEEDBACK":"Laguntza eta oharrak","TERMS_OF_SERVICE":"Zerbitzu-baldintzak","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"Stremiori buruz","USER_PANEL":"Erabiltzaile panela","LOGIN_LABEL":"Login","GUEST_LOGIN":"Gonbidatuaren saioa hasi","GUEST_LOGIN_NOTICE":"Gonbidatuen saioa hastea ez da gomendagarria. Ohiko saio-hasiera erabiliz Stremio-k zure Liburutegia sinkronizatzeko eta telesail/kanal gogokoen jakinarazpenak jasotzeko aukera ematen du. Ziur zaude jarraitu nahi duzula?","GUEST_LOGIN_NOTICE_2":"Gonbidatuen saioa hastea ez da gomendagarria; ez dituzu Liburutegi eta Taularen jakinarazpenak sinkronizatuko eta ezinbesteko Stremio funtzioak dira. Ziur zaude jarraitu nahi duzula?","CLICK_HERE":"klikatu hemen","WRONG_PASSWORD":"Posta elektroniko edo pasahitz okerra. Pasahitza ahaztu baduzu,","SET_A_PASS":"ezarri pasahitza","RESET_PASSWORD":"Pasahitza berrezarri","FORGOT_PASSWORD":"Pasahitza ahaztu duzu?","EMAIL_USED_WITH_FB":"Mezu elektronikoa Facebookeko saio hasierarekin erabili da.","INVALID_EMAIL":"Mesedez, sar ezazu helbide elektroniko egokia","INVALID_PASSWORD":"Mesedez, sartu baliozko pasahitza","CONN_ERR":"Konexioaren errorea. Saiatu berriro geroago.\\n\\nHonek jarraitzen badu, desgaitu firewall/antibirusa (batez ere Bitdefender).","IMPORT_FROM_GUEST":"Inportatu liburutegia zure gonbidatu kontutik","RECEIVE_UPDATES_EMAIL":"Jaso zure posta elektronikoaren eguneratzeak Stremioren eskutik","LOGIN_FAILED":"Errorea saioa hastean.","SIGNUP_FAILED":"Ezin izan da erregistratu.","SEARCH_FAILED":"Bilaketak huts egin du","EMAIL_USED":"Mezu elektronikoa dagoeneko erabiltzen ari da.","WAITING_FB_LOGIN":"Facebook-ekin saioa hasten...","EXTERNAL_PLAYER_TITLE":"Erreproduzitu kanpoko erreproduzitzailean","EXTERNAL_REMEMBER_PLAYER":"Zure aukera gogoratu nahi al duzu?","EXTERNAL_ALWAYS_PLAY":"Bai","EXTERNAL_ONLY_ONCE":"Ez","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Konta iezaguzu zer gustatzen zaizun","INTRO_TASTE_LONG":"Kontatu zer ikusi nahiko zenukeen","INTRO_TASTE_PICK":"Aukeratu {{interestRemaining}} interesak","INTRO_TASTE_PICK_MORE":"Aukeratu {{interestRemaining}} interes gehiago","INTRO_TASTE_HELP_US":"Lagundu iezaguzu zure inguruan gehiago jakiten.","INTRO_TASTE_CHOOSE_THESE":"Aukeratu hauetako batzuk:","INTRO_TASTE_CHOOSE_MIN":"Aukeratu gutxienez 3 kategoria","INTRO_TASTE_CHOOSE_MIN_ERR":"Gutxienez 3 kategoria aukeratu behar dituzu!","INTRO_TASTE_LIFESTYLE":"Bizimodua","INTRO_TASTE_SPORTS":"Kirolak","INTRO_TASTE_FOOD_HEALTH":"Elikadura eta Osasuna","INTRO_TASTE_BEAUTY_FASHION":"Edertasuna eta Moda","INTRO_TASTE_NEWS":"Albisteak","INTRO_TASTE_GAMING":"Jokoa","INTRO_TASTE_SCIENCE_EDU":"Zientzia eta Hezkuntza","INTRO_TASTE_MUSIC":"Musika","INTRO_TASTE_TRAVEL":"Bidaia","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Errealitatea","INTRO_TASTE_COMEDY":"Komedia","INTRO_TASTE_DIY":"Nola egin zerorrek","INTRO_TASTE_TECH":"Teknologia","INTRO_TASTE_CINEMA":"Zinema","ADDON_NOT_SUPPORTED":"Aukeratutako gehigarria ez da plataforma honetan onartzen.","ADDON_DISCLAIMER":"Hirugarrenen gehigarriak erabiltzea beti egongo da zure erantzukizunaren eta kokatzen zaren jurisdikzioaren lege arauaren menpe.","ADDON_ACTIVATE":"Gehigarri hau aktibatu nahi duzu?","ADDON_REPO_ADD":"Gehigarrien bildumaren URLa","ADDON_ADD":"Gehitu","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Berriak","BUTTON_CONTINUE":"Jarraitu","BUTTON_ACTIVATE":"Aktibatu","BUTTON_ACTIVATED":"Aktibatuta","BUTTON_CANCEL":"Utzi","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Baztertu guztiak","BUTTON_VIEW_ALL":"ikusi guztiak","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Liburutegia hutsik dago. Deskubritu zeinen erabilgarria den :)","HOW_START":"Hona hemen nola hasi:","LIB_EMPTY_CAL":"Zure Egutegian liburutegiko telesailak agertzen dira.","HOW_START_CAL":"Hemen duzu telesailak nola gehitu:","LIB_EMPTY_BOARD":"Taulan jakinarazpenak agertzen dira & zure Liburutegiari lotutako gomendioak.","HOW_START_BOARD_WAIT":"Mesedez, gehitu telesail edo kanal batzuk zure liburutegian, eman iezaguzu minutu batzuk prozesatzeko :)","HOW_START_BOARD":"Hona hemen nola gehi ditzakezu telesailak & filmak:","IMPORT_FB":"Inportatu gustuko dituzun gauzak Facebooketik","IMPORT_TRAKT":"Inportatu mediateka Traktetik","IMPORT_DISCOVER":"Bilatu Ezagutu-ko gauza interesgarriak","IMPORT_DISK":"Inportatu zure disko lokalean dituzun filmak edo saioak","PLEASE_CREATE_ACC":"Mesedez, sortu kontua Liburutegiaren sinkronizazioa eta & Taula aktibatzeko.","IMPORT_DISCOVER_SIGNUP":"Erregistratu eta aurkitu gauza interesgarriak Ezagutu atalean","IMPORT_DISK_SIGNUP":"Erregistratu eta inportatu zure disko lokalean dituzun filmak edo saioak","LIB_EMPTY_CLOUD":"Hodei liburutegia","LIB_EMPTY_CLOUD_DESC":"Hodei liburutegi pertsonala gailu guztietan sinkronizatuta","LIB_EMPTY_EARLY":"Txori goiztiarra","LIB_EMPTY_EARLY_DESC":"Jaso atal berrien jakinarazpenak","LIB_EMPTY_PERSONAL":"Pertsonala","LIB_EMPTY_PERSONAL_DESC":"Jaso gomendio pertsonalak","LIB_EMPTY_CALENDAR_DESC":"Antolatu zure behaketa egutegi pertsonala","LIB_EMPTY_ALL":"Izena eman hauek guztiak lortzeko:","LIB_EMPTY_BEST":"Eman izena Stremioren onena lortzeko","LIB_EMPTY_OTHER":"Eman izena Egutegia eta beste funtzio interesgarri batzuk gaitzeko","CALENDAR_ADDED":"Stremio egutegia zure mahaigaineko egutegi lehenetsian gehitu da.","CALENDAR_ADDED_MSG":"Honek funtzionatzen ez badu, gehitu URL hau zure egutegiko aplikazioan eskuz","TRAKT_EXPIRED":"Trakt autentifikazioa iraungita dago, joan Ezarpenak atalera eta berriro autentifikatu","TRAKT_REQUIRES_LOGIN":"Trakt errorea","TRAKT_REQUIRES_LOGIN_MSG":"Saioa hasi behar duzu","SETTINGS_LABEL":"Ezarpenak","SETTINGS_NAV_GENERAL":"Orokorra","SETTINGS_NAV_PLAYER":"Erreproduktorea","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Freskatu app-a","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Irten / Atzera joan","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Igo bolumena","SETTINGS_SHORTCUT_VOLUME_DOWN":"Jaitsi bolumena","SETTINGS_SHORTCUT_SEEK_NEXT":"Eskatu hurrengoa","SETTINGS_SHORTCUT_SEEK_PREV":"Eskatu aurrekoa","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Erreproduzitu hurrengoa","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Handitu azpitituluen tamaina","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Txikitu azpitituluen tamaina","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Handitu azpitituluen atzerapena","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Txikitu azpitituluen atzerapena","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Ireki/Itxi alboko barra","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Abiarazi piztean","SETTINGS_VLC_DEFAULT":"Erreproduzitu VLC-rekin","SETTINGS_UI_LANGUAGE":"UI hizkuntza","SETTINGS_FULLSCREEN_EXIT":"Esc teklarekin irten pantaila osotik","SETTINGS_GAMEPAD":"Gaitu gamepad laguntza","SETTINGS_CLOSE_WINDOW":"Itxi aplikazioa leihoa itxita dagoenean","SETTINGS_SUBTITLES_LANGUAGE":"Azpitituluen hizkuntza lehenetsia","SETTINGS_SUBTITLES_SIZE":"Azpitituluen tamaina lehenetsia","SETTINGS_SUBTITLES_BACKGROUND":"Azpitituluen atzeko planoa","SETTINGS_SUBTITLES_COLOR":"Azpitituluen kolorea","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Azpitituluen eskema kolorea","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Azpitituluen atzeko kolorea","SETTINGS_SEEK_KEY":"Geziek denbora bilatzen dute","SETTINGS_SEEK_KEY_SHIFT":"Gezien teklek Shift tekla sakatuta dagoenean denbora bilatzen dute","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Erreproduzitu automatikoki hurrengo atala","SETTINGS_NEXT_VIDEO":"Erakutsi jakinarazpena hurrengo atala hasteko","SETTINGS_NEXT_VIDEO_TRIGGER":"Erakutsi hurrengo atalaren jakinarazpena:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Aldatu automatikoki leihoa erreproduzitu aurretik","SETTINGS_OVERRIDE_SERVER":"Gainidatzi streaming zerbitzariaren URLa (aurreratua)","SETTINGS_SERVER_URL":"Streaming zerbitzariaren URLa:","SETTINGS_SERVER_AVAILABLE":"Streaming zerbitzaria eskuragarri dago.","SETTINGS_SERVER_UNAVAILABLE":"Streaming zerbitzaria ez dago erabilgarri.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS amaiera:","SETTINGS_USE_BETA":"Erabili beti azken bertsioa","SETTINGS_IMPORT_FB":"Inportatu Facebooketik","SETTINGS_IMPORT_DISK":"Inportatu disko lokaletik","SETTINGS_IMPORT_TRAKT":"Inportatu Trakt-etik","SETTINGS_PAUSE_MINIMIZED":"Pausatu erreprodukzioa minimizatutakoan","SETTINGS_HWDEC":"Hardwarea azeleratutako deskodetzea","SETTINGS_BACKGROUND":"Atzeko planoaren erreprodukzioa","SETTINGS_SUBSCRIBE_CALENDAR":"Harpidetu egutegira","SETTINGS_REQ_EXPORT":"Eskatu datuak esportatzeko","SETTINGS_ACC_DELETE":"Eskatu kontua ezabatzeko","SETTINGS_CHANGE_PASSWORD":"Aldatu pasahitza","SETTINGS_TOS":"Zerbitzu-baldintzak","SETTINGS_SUPPORT":"Jarri harremanetan laguntza zerbitzuarekin","SETTING_LANGUAGE":"Hizkuntza","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Amaitu saioa Trakt.tv-tik","SETTINGS_SCAN_FOR_REMOTE":"Eskaneatu QR kodea urrunekoa irekitzeko","SETTINGS_DESKTOP_NOTIFICATIONS":"Mahaigaineko jakinarazpenak","SETTINGS_DATA_SAVER":"Datu aurrezlea","SETTINGS_LANGUAGE_INTERFACE":"interfazea","SETTINGS_LANGUAGE_SUBS":"azpititulu lehenetsiak","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Aukeratu automatikoki Audio pista","SETTINGS_DEFAULT_AUDIO_TRACK":"Audio pista lehenetsia","SETTINGS_ACCOUNT":"kontua","SETTINGS_VERSION":"bertsioa","SETTINGS_MPV_WINDOW":"Abiarazi erreproduzitzailea beste leiho batean (aurreratua)","SETTINGS_PLAY_IN_EXTERNAL":"Hasi beti bideoa kanpoko erreproduzitzailean","SETTINGS_STORAGE_BUTTON":"Garbitu tokiko biltegiratzea","SETTINGS_STORAGE_MODAL_TITLE":"Ziur zaude ?","SETTINGS_STORAGE_MODAL_MESSAGE":"Honek tokiko biltegia garbitu eta saioa amaituko du.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Irten","CONNECTED":"Konektatuta","AUTHENTICATE":"Autentifikatu","CACHING":"Cachea","SETTINGS_CACHING_DRIVE":"Caching unitatea","ENABLE_LOCAL_FILES_ADDON":"Gaitu fitxategi lokalen gehigarria (berrabiarazi behar da)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Gaitu urruneko HTTPS konexioak","TORRENT_PROFILE":"Torrent profila","DATA_CACHING":"Datuen cache-a","MAGNET_PARSING":"Magnet parseoa","January":"Urtarrila","February":"Otsaila","March":"Martxoa","April":"Apirila","May":"Maiatza","June":"Ekaina","July":"Uztaila","August":"Abuztua","September":"Iraila","October":"Urria","November":"Azaroa","December":"Abendua","Monday":"Astelehena","Tuesday":"Asteartea","Wednesday":"Asteazkena","Thursday":"Osteguna","Friday":"Ostirala","Saturday":"Larunbata","Sunday":"Igandea","Action":"Akzioa","Comedy":"Komedia","War":"Gerra","Family":"Familia","Animation":"Animazioa","Adventure":"Abentura","Fantasy":"Fantasia","Crime":"Delitua","Mystery":"Misterioa","Romance":"Erromantikoa","Drama":"Drama","Horror":"Beldurra","Thriller":"Thrillerra","Sci-Fi":"Zientzia-fikzioa","Music":"Musika","Biography":"Biografia","Documentary":"Dokumentala","Sport":"Kirola","Musical":"Musikala","Western":"Westerna","Film-Noir":"Film-Noir","News":"Albisteak","History":"Historia","Game-Show":"Joko-Ikuskizuna","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Zinema eta aisialdia","Gaming":"Gaming","From TV":"Telebistatik","Lifestyle":"Bizimodua","Science & Education":"Zientzia eta Hezkuntza","Cooking & Health":"Sukaldaritza eta Osasuna","Beauty & Fashion":"Edertasuna eta Moda","Sports":"Kirolak","News & Politics":"Albisteak eta politika","How-to & DIY":"Nola egin eta DIY","Tech":"Teknologia","Automotive":"Automobilgintza","Causes & Non-Profits":"Kausak eta irabazi asmorik gabekoak","Movies":"Filmak","Uk Live Tv":"Uk Live Tv","Fashion":"Moda","Business News Radio":"Business News Radio","Business Tv":"Business Telebista","Cars & Auto":"Autoak","Comedy Radio":"Komedia Irratia","Lifestyle Radio":"Bizimodu Irratia","News Tv":"Albiste Telebista","Food And Wine":"Janaria eta ardoa","Latino Tv":"Latino Tv","Shopping Tv":"Erosketa Telebista","Religion":"Erlijioa","Kids":"Haurrak","Body & Soul":"Gorputza eta Arima","Education":"Hezkuntza","Indian Tv":"Indiako telebista","Extreme Sports":"Muturreko Kirolak","Middle Eastern Tv":"Ekialde Hurbileko Telebista","Celebrity Tv":"Celebrity telebista","Science Tv":"Zientzia telebista","Bikini babe":"Bikini babe","Outdoors":"Aire librean","German Tv":"Alemaniako telebista","French Tv":"Telebista frantsesa","Italian Tv":"Italiako telebista","Gamer Tv":"Gamer telebista","Travel":"Bidaia","Asian Tv":"Asiako telebista","Entertainment":"Aisialdia","News Radio":"Albiste Irratia","Music Radio":"Musika Irratia","Language Learning":"Hizkuntzen ikaskuntza","Science Radio":"Zientzia Irratia","Tech Radio":"Tech Radio","Science & Technology Vod":"Zientzia eta Teknologia Vod","new video":"bideo berria","new episode":"atal berria","new movie":"film berria","recommended":"gomendatua","we recommend":"gomendatzen dugu","offer of the day":"eguneko eskaintza","news":"berriak","music video":"bideoklipa","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Baztertu jakinarazpenak","CTX_DISMISS_ALL":"Baztertu guztiak","CTX_SHARE":"Partekatu","CTX_COPY_SHARE_LINK":"Kopiatu partekatzeko esteka","CTX_COPY_MAGNET_LINK":"Kopiatu magnet esteka","CTX_COPY_STREAM_LINK":"Kopiatu stream-aren esteka","CTX_DOWNLOAD_VIDEO":"Deskargatu bideo hau","CTX_DOWNLOAD_SUBS":"Deskargatu azpitituluak","CTX_VIEW_ON_YOUTUBE":"Ikusi Youtuben","CTX_SHOW":"Ikuskizuna","CTX_PLAY":"Erreproduzitu","CTX_PLAY_IN":"Erreproduzitu","CTX_PLAY_ON":"Erreproduzitu","CTX_WATCH_ON":"Ikusi","CTX_WATCH":"Ikusi","CTX_WATCHED":"Ikusita","CTX_WATCH_BEGINNING":"Ikusi hasieratik","CTX_WATCH_MOBILE":"Ikusi gailu mugikorrean","CTX_REWIND":"Atzera hasierara","CTX_MARK_WATCHED":"Markatu ikusitako moduan","CTX_MARK_NON_WATCHED":"Markatu ez ikusi gisa","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Markatu gainerakoa ikusi bezala","CTX_UNMARK_REST":"Markatu gainerakoak ez ikusi gisa","CTX_RECEIVE_NEW_NOTIF":"Jaso jakinarazpen berriak","CTX_REMOVE_CACHE":"Kendu cache-tik","CTX_REMOVE_CACHE_EP":"Kendu pasartea katxetik","CTX_OPEN_CONTAINING":"Ireki duen karpeta","CTX_REMOVE":"Kendu liburutegitik","CTX_AVAILABLE_OFFLINE":"Lineaz kanpo eskuragarri","CTX_PAUSED":"Pausatuta","CTX_ALWAYS_ON_TOP":"Beti gainean","CTX_FULLSCREEN":"Pantaila osoa","CTX_WRONG_SUBS":"Azpititulu okerrak?","CTX_REPORT_ISSUES":"Salatu alea","CTX_COPY":"Kopiatu","CTX_PASTE":"Itsatsi","CTX_CLEAR":"Garbi","CTX_CLEAR_RECENT_SEARCHES":"Garbitu azken bilaketak","HELLO_THERE":"Kaixo","HOPE_YOU_ENJOY":"Stremio gustatuko zaizula espero dugu eta laster zure aplikazio gogokoenetako bat izango da!","WHO_ARE_WE":"Nor gara gu? Atzean dagoen taldea gara. Azken 3 urteetan egunero gogor lan egiten duten bi mutil produktu hau gero eta hobea izan dadin.","SUPPORT_US":"Stremio erabiltzea gustatzen bazaizu, Stremio zuretzat baliotsua bada - zabaldu!","SPREAD_THE_WORD":"Partekatu orain zure lagunekin, zabaldu Stremioren berri","MORE_PEOPLE":"Zenbat eta jende gehiagok erabili Stremio, orduan eta hobeto lortuko du!","SEND_A_LINK":"Edo bidali esteka gure webgunera","TIP_LOCALFILES":"Aholkua: bideo fitxategi lokalak arrastatu eta askatu ditzakezu Stremiora","ADDON_MY":"Nire gehigarriak","ADDON_COMMUNITY":"Komunitateko gehigarriak","ADDON_OFFICIAL":"Addon ofizialak","ADDON_REPOS":"Gehigarrien bildumak","ADDON_SEARCH":"Bilatu gehigarriak","ADDON_INSTALL":"Instalatu","ADDON_CONFIGURE":"Konfiguratu","ADDON_UNINSTALL":"Desinstalatu","ADDON_UPGRADE":"Berritu","ADDON_INSTALLED":"Instalatuta","ADDON_INSTALLED_MSG":"Gehigarria instalatuta!","ADDON_UPGRADED_MSG":"Gehigarria bertsio-berritu da!","ADDON_UNKNOWN":"Ezezaguna","ADDON_ERR":"Gehigarri instalazio errorea!","ADDON_DISCONNECTED":"Deskonektatuta","ADDON_APP_MISSING":"iturri honen aplikazioa ez dago instalatuta. Orain instalatu nahi duzu?","ADDON_APP_INSTALL":"Instalatu orain","ADDON_PAGE":"Gehigarrien orria","ADDON_TOP_CONTENT":"Onena Addon honetatik","ADDON_PROVIDES":"Gehigarri honek emango dizu:","ADDON_WATCH":"Ikusi #{types} orain!","ADDON_WATCH_FREE":"Ikusi DOAKO #{types} orain!","ADDON_ADDON":"Gehitu","ADDON_SUPPORTED_TYPES":"Onartutako motak","ADDON_SUPPORTED_CATALOGS":"Onartutako katalogoak","ADDON_PROVIDES_DISCOVER":"#{types} gehiago Ezagutu-n","ADDON_PROVIDES_STREAMS":"Ikusi #{types}","ADDON_PROVIDES_STREAMS_FREE":"Ikusi DOAKO #{types}","ADDON_PROVIDES_SUBTITLES":"#{types}(r)en azpitituluak","ADDON_CANTDETECT":"Ezin izan dugu Stremio exekutatzen ari den detektatu, beraz, ezin dugu detektatu zer gehigarri instalatu dituzun.","ERR_NO_META":"Ez da honi buruzko informaziorik aurkitu","ERR_GETTING_META":"Errorea honi buruzko informazioa eskuratzean.","ERR_CANT_PARSE_MAGNET":"Ezin da magnet parseatu","ERR_NO_MAGNET_INFOHASH":"Ez da baliozko hash-a magnetentzat","ERR_NO_FILE_PATH":"Ezin da eskaera bidali artxiborako biderik gabe","ERR_NO_TORRENT":"Ez da torrentik itzuli","ERR_NO_SUPPORTERD_FILES":"Ez da onartutako fitxategirik aurkitu","ERR_OPENING_FILES":"Ezin izan dira kanpoko fitxategiak ireki","ERR_INVALID_LINK":"Esteka baliogabea","ERR_REGISTERED_ONLY":"Aukera hau erregistratutako erabiltzaileentzat bakarrik dago erabilgarri.","ERR_CLIPBOARD":"Ezin da arbeletik erreproduzitu","ERR_CLIPBOARD_READ":"Ezin da plataforma honetako arbela irakurri","ERR_CLIPBOARD_GENERIC":"Ez da arbelean erreproduzitzeko URLrik aurkitu. Kopiatu URL bat (adibidez, magnet esteka) bideo batera.","BOARD_CONTINUE_WATCHING":"Jarraitu ikusten","BOARD_EXPLANATION_RECOMMENDATIONS":"Zuretzat bereziki aukeratutako filmak.
    Film hau gomendio lagin bat da.","BOARD_EXPLANATION_EPISODES":"Zure telesail gogokoen atal berriak datoz hona.
    Gehitu jarraitzen dituzun serieak liburutegian.","BOARD_EXPLANATION_VIDEOS":"Zure kanal gogokoen atal berriak etorriko dira.
    Gehitu jarraitzen dituzun YouTube kanalak Liburutegian.","WEBSITE_SLOGAN_WATCH":"Ikusi berehala","WEBSITE_SLOGAN_ALL":"Leku bakarrean gozatzen duzun bideo eduki guztia","WEBSITE_SLOGAN_NEW":"Ikus dezakezun guztia","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Ikusi hemendik","WEBSITE_DOWNLOAD":"Deskargatu orain","WEBSITE_DOWNLOAD_FOR":"Deskargatu orain","WEBSITE_IS_DESKTOP":"Stremio mahaigaineko aplikazioa da, ireki orri hau zure ordenagailuan eta deskargatu","WEBSITE_DESKTOP_DEMO_VID":"Mahaigaineko demoa","WEBSITE_PAGE_HOME":"Hasiera","WEBSITE_PAGE_FEATURES":"Ezaugarriak","WEBSITE_PAGE_ADDONS":"Gehigarriak","WEBSITE_PAGE_TECH":"Teknologia","WEBSITE_PAGE_CREATE_ADDON":"Sortu gehigarria","WEBSITE_PAGE_CONTACTS":"Kontaktuak","WEBSITE_PAGE_BLOG":"Bloga","WEBSITE_TYPE_movie":"Filmak","WEBSITE_TYPE_series_PL":"Telesaila","WEBSITE_TYPE_tv":"Zuzeneko telebista","WEBSITE_TYPE_channel":"Kanalak","WEBSITE_STREMIO_WHAT_IS":"Stremio zure gogoko bideoak, filmak, telesailak eta telebista kateak antolatzen eta berehala ikusten laguntzen duen aplikazioa da.","WEBSITE_FEATURES_WATCH":"Ikusi berehala HD formatuan","WEBSITE_FEATURES_WATCH_DETAIL":"Egin klik eta erreproduzitu gogoko dituzun filmak, telesailak, bideoak eta telebista kateak.","WEBSITE_FEATURES_SUBS":"Azpititulu automatikoak","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio-k zure hizkuntzarako azpitituluak automatikoki hautatzen ditu.","WEBSITE_FEATURES_SUBS_LABEL":"Zure mugimendua, buruzagi.","WEBSITE_FEATURES_CAST":"Erreproduzitu telebistan eta gailu mugikorretan","WEBSITE_FEATURES_CAST_DETAIL":"Igorri AppleTV, Chromecast, Smart TV (DLNA/UPnP) eta gailu mugikorretara.","WEBSITE_LIB":"Gozatu zure gailu guztietan sinkronizatutako liburutegi pertsonalarekin","WEBSITE_LIB_COLLECT":"Bildu Stremiotik","WEBSITE_LIB_IMPORT":"Inportatu Facebooketik","WEBSITE_LIB_LOCAL":"Gehitu zure disko lokaletik","WEBSITE_BOARD":"Taula - Jakinarazpen eta gomendioetarako lekua","WEBSITE_BOARD_RECOMMEND":"Gomendatutako telesaila","WEBSITE_BOARD_TRENDING":"Modako filma","WEBSITE_BOARD_NEW":"Bideo berria","WEBSITE_BOARD_EPISODE":"Atal berria","WEBSITE_BOARD_1":"Ikusteko zerbait interesgarria bilatzen al duzu? Jaso gomendioak zure gustuaren arabera!","WEBSITE_BOARD_2":"Jaso jakinarazpen zure gogoko telesaio edo YouTube kanaleko atal berri bat ateratzen denean!","WEBSITE_BOARD_YOUTUBE":"YouTube kanalen bideo berriak","WEBSITE_BOARD_EPISODES":"Jarraitzen dituzun telesailen atal berriak","WEBSITE_ADDONS":"Edukien gehigarriak","WEBSITE_TECH_DETAIL":"Teknologia maite dugu, zientzia eroa maite dugu!\\nStremio kode irekiko teknologia hauek erabiltzen ari da:","WEBSITE_TECH_WCJS":"WebChimera.js-k Stremio-k edozein bideo formatu erreproduzitzeko aukera ematen du errendimendu onarekin.","WEBSITE_TECH_WCJS_EXTRA":"Proiektuaren laguntzaileak gara","WEBSITE_TECH_ELECTRON":"Electronek Stremio eraikitzeko plataforma berritzailea eskaintzen du.","WEBSITE_TECH_ELECTRON_EXTRA":"Proiektuaren laguntzaileak gara","WEBSITE_TECH_LINVODB":"Zure datuak saioa hasten zaren edozein lekutan antolatuta eta eskuragarri daudela bermatzen duen datu basearen teknologia.","WEBSITE_TECH_LINVODB_EXTRA":"Barne teknologia","WEBSITE_CREATE_ADDON":"Sortu zure gehigarria","WEBSITE_CREATE_ADDON_DETAIL":"Ba al duzu bideo edukia eskaintzen duen zerbitzurik? Stremioren ezaugarriez baliatzen lagunduko dizugu zure gehigarria sortuz.","WEBSITE_CREATE_ADDON_BENEFITS":"Stremiorako gehigarria sortzearen abantailak","WEBSITE_P2P_BEAUTY":"Peer-to-Peer Streaming-en edertasuna","WEBSITE_P2P_1":"HD/4K bideo fidagarria eta merkea, eskariaren arabera edo zuzeneko erreprodukzioarekin","WEBSITE_P2P_2":"Erabiltzaileen esperientzia bikaina eskaintzen duen banaketa plataforma","WEBSITE_P2P_3":"Zure beharretara egokitzen den gehigarri bat sortuko dugu","WEBSITE_P2P_CONTACT":"Interesatuta? Jarri gurekin harremanetan.","WEBSITE_P2P_CONTACT_EXTRA":"Pozik lagunduko dizugu zure edukia Stremio-rekin integratzen!","WEBSITE_P2P":"Noizean behin, jokoaren izena aldatzen duen teknologia bat dator. Denbora eta ahalegin ugari inbertitu dugu Peer-to-Peer (P2P) bideo bidezko erreprodukzio motorra eraikitzen, edozein erabilera kasutan egokitzeko errendimendu eta aldakortasun bikaina eskaintzen duena.\\nJarri gurekin harremanetan DRM gaitutako P2P bideoa eskatuta edo zuzenean igortzeko.","WEBSITE_THOUGHTS":"Partekatzen ditugun pentsamenduak:","WEBSITE_SPREAD":"Zabaldu Stremiori buruz:","WEBSITE_CONTACT":"Jar zaitez gurekin harremanetan, pozik jasoko dugu zure berri!","WEBSITE_OPENSOURCE":"Gure kode irekiko proiektuak ikusteko, joan gure webgunera","WEBSITE_BITCOIN":"Eman bitcoinak:","WEBSITE_FAQ":"Ohiko galderak","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Galderak","WEBSITE_TOS":"Erabilera baldintzak","WEBSITE_LEGAL":"Legezkoa","WEBSITE_PAGE_ABOUT":"Buruz","WEBSITE_PAGE_BECOME_PARTNER":"Egin bazkide","WEBSITE_ALL_YOU_CAN_WATCH":"Zuk nahi duzuna\\nIkusteko askatasuna.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Zer da stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio bideoaren edukiak batzeko gune bakarra da. Ezagutu, antolatu eta ikusi bideoa zure iturri mota guztietako zure gailu guztietan.","WEBSITE_WHAT_IS_STREMIO_P2":"Filmak, telebista saioak, telesailak, zuzeneko telebistak edo YouTube eta Twitch.tv bezalako web kateak - hori guztia Stremion aurkituko duzu.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio multimedia zentro modernoa da, bideo entretenimendurako irtenbide bakarra eskaintzen duena. Bideo edukia instalatzeko erraza den gehigarrietatik deskubritu, ikusi eta antolatzen duzu.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Filmak, telesailak, zuzeneko telebista edo web kateak. Aurkitu hau guztia Stremion.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Gozatu zure multimedia gailu guztietan","WEBSITE_DEVICES_COLLECT":"Bildu Stremiotik","WEBSITE_DEVICES_IMPORT_FB":"Inportatu facebooketik","WEBSITE_DEVICES_LOCAL":"Gehitu tokiko unitatetik","WEBSITE_JOIN_THE_PARTY_NOW":"Sartu orain festara","WEBSITE_DEVICES_ALL":"Erraza zure gailu guztietan erabiltzeko;","WEBSITE_EXTENDABLE_CATALOG":"Bideo katalogo luzagarria infinituki;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Ezaugarri bikainak zure komunikabideak antolatzeko;","WEBSITE_AS_SEEN_ON":"Ikusitakoan","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Guri buruz","WEBSITE_LINK_TECHNOLOGY":"Teknologia","WEBSITE_LINK_APPS":"Aplikazioak","WEBSITE_LINK_DOWNLOADS":"Deskargak","WEBSITE_MORE":"Gehiago","WEBSITE_LINK_ADDONS":"Gehigarriak","WEBSITE_LINK_ADDON_SDK":"Gehigarriaren SDK","WEBSITE_LINK_CONTRIBUTE":"Lagundu","WEBSITE_LINK_COMMUNITY":"Komunitatea","WEBSITE_LINK_BLOG":"Bloga","WEBSITE_MORE_MORE":"... eta gehiago","WEBSITE_LINK_HELP":"Laguntza zentroa","WEBSITE_LINK_CONTACTS":"Enpresa kontsultak","WEBSITE_LINK_TOS":"Baldintzak","WEBSITE_LINK_PRAVACY":"Pribatutasun politika","WEBSITE_SUBSCRIBE":"Harpidetu","WEBSITE_NEWSLETTER":"Sartu gure buletinera gauza harrigarrietarako","WEBSITE_PLACEHOLDER_EMAIL":"Zure emaila","WEBSITE_COMMUNITY":"Komunitatea","WEBSITE_LINK_PRAVACY_LEGAL":"Pribatutasuna eta legea","WEBSITE_WHY":"Zergatik egiten dugun","WEBSITE_WHY_P1":"Stremion, egunero lan egitera gatoz, bideo-eskaeraren industriaren arazo garrantzitsu bat konpondu nahi dugulako. Hainbeste eduki berri argitaratzen dira minuturo, ia ezinezkoa baita zure bidea aurkitzea.","WEBSITE_WHY_P2":"Jendeari bideo entretenimendu mundu erraldoi horretan nabigatzen eta gozatzeko eduki berriak aurkitzen laguntzen diogu. Gure aplikazioek filmak, serieak, zuzeneko telebista, web kateak eta beste biltzen dituzte. Erabiltzaileek gustuko dituzten izenburuak eta emisorak aurkitzea oso erraz bihurtzeaz arduratzen gara.","WEBSITE_WHY_P3":"Gure zerbitzua edozein gailutan eta noiznahi erabil dezakezu, Stremio inoiz beharko duzun bideo entretenimendu zentro bakarra bihurtuz.","WEBSITE_TEAM":"TALDEA","WEBSITE_TEAM_P":"Stremio taldea txikia baina indartsua da: gutako hamar artean X hizkuntzatan kodetzen dugu eta softwarearen garapenean, UI eta UX diseinuan, marketinean eta publizitatean eta negozioetan eta startupetan espezializazioa partekatzen dugu.","WEBSITE_FEATURES":"Ezaugarriak","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Ezagutu eduki berriak erraz","WEBSITE_FEATURES_DISCOVER_P":"Ikusi erraz ikusteko film, telesail, serie eta kanal berriak. Arakatu kategoriaren, generoaren, balorazioaren, berritasunen eta abarren arabera edo idatzi izen bat aurkitzeko. Stremio-k bideo-eduki berriak aurkitzea tarta bihurtzen du.","WEBSITE_FEATURES_ALL_CONTENT":"Zure bideoaren eduki guztia pantaila batean","WEBSITE_FEATURES_ALL_CONTENT_P1":"Ikusi zer film, serie edo bideo amaitu ez zenituen eta jarraitu ikusten; atal berri eta estreinaldien berri jaso; eta arakatu ikusmen ohituretan oinarrituta jasoko dituzun gomendioak.","WEBSITE_FEATURES_LIBRARY":"Antolatu zure bideoteka","WEBSITE_FEATURES_LIBRARY_P1":"Gehitu edozein titulu zure Stremio liburutegian klik bakarrarekin eta bilatu zure edukia, motaren, berritasunaren edo alfabetoaren arabera ordenatuta.","WEBSITE_FEATURES_CALENDAR":"Jarrai ezazu ikusten duzun guztiaren jarraipena","WEBSITE_FEATURES_CALENDAR_P1":"Lortu liburutegian gehitzen dituzun film eta serie guztien egutegia bistaratzea. Esportatu Stremio egutegia eta sinkronizatu, atal berri bat edo estreinaldi bat noiz iritsi behar den jakiteko.","WEBSITE_FEATURES_BIG_SCREEN":"Gozatu zure bideo edukia pantaila handiago batean","WEBSITE_FEATURES_BIG_SCREEN_P1":"Igorri ikusten ari zena beste gailu batera, izan telefono, tableta edo telebista klik bakarrarekin.","WEBSITE_FEATURES_SOURCES":"Ikusi bideoa iturri askotatik","WEBSITE_FEATURES_SOURCES_P":"Instalatu gehigarri ofizialak eta komunitarioak hornitzaile desberdinetatik ateratako bideoaz gozatzeko - aplikazio dotore eta erraz batean.","WEBSITE_CREATE_AN_ADDON":"Sortu gehigarri bat","WEBSITE_FEATURES_SYNC":"Sinkronizatu liburutegia gailu desberdinetan eta hasi berriro erreprodukzioa","WEBSITE_FEATURES_SYNC_P1":"Hasi saioa zure kontuarekin gailu guztietan eta gozatu liburutegia, gehigarriak, erreprodukzioa eta egutegia sinkronizatuta.","WEBSITE_FEATURES_EXTENDABLE":"Gehigarrien bideo katalogo luzagarria","WEBSITE_FEATURES_EXTENDABLE_P1":"Stremio gehigarrien katalogoak hainbat gehigarri eskaintzen ditu hainbat bideo eduki instalatu eta ikusteko. Filmak, saioak, zuzeneko telebista, kirola, albisteak, podcastak, web kateak, bideojokoak eta beste biltzen ditu.","WEBSITE_FEATURES_AUTO_SUBS":"Azpititulu automatikoak","WEBSITE_FEATURES_AUTO_SUBS_P1":"Gure azpitituluen gehigarriekin automatikoki hautatutako aukerak lortuko dituzu zure gustuko hizkuntzarako.","WEBSITE_FEATURES_CHROMECAST":"Chromecast-era igortzen","WEBSITE_FEATURES_CHROMECAST_P1":"Gozatu zure bideoaren edukia pantaila handiago batean edo ikusi zer ikusten ari zaren beste gailu batera.","WEBSITE_FEATURES_KEEP_TRACK":"Jarrai itzazu zure gogoko telebista saioak eta web kateak","WEBSITE_FEATURES_KEEP_TRACK_P1":"Lortu egutegia bistaratzea eta zure serie eta kanal gogokoen atal berrien jakinarazpenak.","WEBSITE_FEATURES_POWER_USER":"Erabiltzaile indartsuen ezaugarriak","WEBSITE_FEATURES_POWER_USER_P1":"Erreproduzitu kanpoko erreproduzitzailean","WEBSITE_FEATURES_POWER_USER_P2":"Erreproduzitu torrent fitxategi edo iman esteka batetik","WEBSITE_FEATURES_POWER_USER_P3":"Inportatu liburutegira Facebook atsegin dut edo disko lokaletik","WEBSITE_ADD_ONS":"Gehigarriak","WEBSITE_ADD_ONS_P1":"Stremio-k eskaintzen duen bideo guztia gehigarri sistema baten bidez lortzen da - aplikazioan ez da eduki edo eduki hornitzailerik sartu.","WEBSITE_ADD_ONS_P2":"Gehigarrien bi talde daude eskuragarri: gehigarri ofizialak eta komunitarioak.","WEBSITE_ADD_ONS_P3":"Ofizialak Stremio-k garatu eta ostatatzen ditu, eta komunitateko gehigarriak, aldiz, gure komunitateko kideek sortzen dituzte, hauek ere ostatatzen baitituzte.","WEBSITE_ADDONS_OFFICIAL":"Gehigarri ofizialak","WEBSITE_ADDONS_WATCHUB":"Erreproduzitu zure gogoko filmak, serieak eta ikuskizunak, hala nola iTunes, Hulu, Amazon eta Erresuma Batuko / AEBetako beste zerbitzu batzuen hornitzaileek.","WEBSITE_ADDONS_YOUTUBE":"Ikusi gogoko dituzun YouTube kanalak iragarkirik gabe eta jaso jarraitzen dituzun laguntzaileen kargatze berrien berri.","WEBSITE_ADDONS_FILMON":"Ikusi zuzenean telebista, filmak eta telebista sozialak doan. 600 telebista kate, doako 45.000 film, dokumental eta gehiago.","WEBSITE_ADDONS_OPENSUBTITLES":"Filma eta telebistako azpitituluak hizkuntza anitzetan, egunero kargatutako milaka azpitituluak.","WEBSITE_ADDONS_COMMUNITY":"Komunitateko gehigarriak","WEBSITE_ADDONS_FILMON_VOD":"Ikusi bideoa Filmon.tv-k eskatuta","WEBSITE_ADDONS_TWICH":"Ikusi zuzeneko erreprodukzioak Twitch.tv - kirol bideo elektronikoaren industriarako bideoa erreproduzitzeko plataforma.","WEBSITE_ADDONS_VODO":"Ikusi indie filmak guztiz doan.","WEBSITE_ADDONS_NETFLIX":"Ikusi Netflix filmak eta web serieak.","WEBSITE_ADDONS_CREATE":"Sortu gehigarri bat","WEBSITE_ADDONS_CREATE_P1":"Nahi izanez gero, zure gehigarria garatu dezakezu. Horrela, zure buruari eta gure komunitateari bideo eduki berrietarako sarbidea eman ahal izango diezu eta mundu osoko milioika erabiltzaileri zuzendutako ikusle berri batengana heldu.","WEBSITE_ADDONS_START_CREATE":"Hasteko, bisitatu Stremio Addon SDK orria:","WEBSITE_DOWNLOADS":"Deskargak","WEBSITE_DOWNLOADS_P1":"Errendimendu optimoa lortzeko, Stremio aplikazioen eskuragarri dagoen azken bertsioa erabiltzea gomendatzen dugu. Arrazoiren batengatik, ordea, bertsio zaharragoa erabili nahi baduzu, hemen deskarga dezakezu.","WEBSITE_DOWNLOADS_FOR_WIN":"Windows-erako Stremio","WEBSITE_DOWNLOADS_FOR_MAC":"MacOS-erako Stremio","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio Linuxerako","WEBSITE_DOWNLOADS_FOR_ANDROID":"Androiderako Stremio","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"IOS Stremio (bertsio mugatua)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Lagundu","WEBSITE_CONTRIBUTE_P1":"Stremio plataforma kode irekia da eta gaur egun iturri gabeko edukirako gehigarri bat sor dezakezu.","WEBSITE_CONTRIBUTE_WHY":"Zergatik sortu behar zenuke gehigarri bat?","WEBSITE_CONTRIBUTE_WHY_P1":"Iritsi ikusle berrietara zure bideoaren edukira","WEBSITE_CONTRIBUTE_WHY_P2":"Stremioren erabiltzaile-oinarria bizkor hazten ari da - merkaturatu zen lehen urtean, Stremiok milioi bat erabiltzaile irabazi zituen mundu osoan, eta plataformaren existentziaren bigarren urtean kopuru hori 2,5 milioi izatera iritsi zen.","WEBSITE_CONTRIBUTE_WHY_P3":"Zure gehigarriarekin, ikusle honetara erraz irits zaitezke eta zure bideo edukia haiei banatu.","WEBSITE_CONTRIBUTE_ALL":"Ikusi gogoko dituzun filmak, bideoak, serieak eta kanalak leku bakarrean.","WEBSITE_CONTRIBUTE_ALL_P1":"Oraindik Stremion erabilgarri ez dagoen eduki mota jakin baten zalea zara? Sortu gehigarri bat eta disfrutatu zure bideo gogokoenak merkatuan dauden entretenimendu zentro handienetako eta erabilerrazenetako batean ikustean.","WEBSITE_CONTRIBUTE_ALL_P2":"Horretaz gain, gogo bereko beste Stremio komunitateko kideen esker on amaigabea lortuko duzu.","WEBSITE_CONTRIBUTE_MONETIZE":"Dirua irabazi zure gehigarria eta irabazi dirua bere laguntzarekin","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Stremiorako gehigarri berri bat garatu ondoren, modu desberdinetan irabazteko aukera dezakezu. Hori aztertzen ari bazara, jar zaitez gurekin harremanetan harremanetan","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":"- Gehigarriak dirua irabazteko aukerei buruz kontsultatu eta aholkuak emango dizkizugu.","WEBSITE_CONTRIBUTE_TRANSLATE":"Egin itzultzaile boluntario","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Stremio aplikazioak hizkuntza desberdinetan gozatu nahi badituzu, itzultzaile boluntarioen komunitatean sar zaitezke. Stremioren bertsioak hizkuntza desberdinetan gehitzen laguntzen digute.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Hasteko gogoz zaude?","WEBSITE_TRANSALTE_STREMIO":"Itzuli Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Komunitate ofizialak","WEBSITE_COMMUNITY_OFFICIALS_P1":"Bihur zaitez hazten ari den Stremio komunitatearen parte. Jarrai iezaguzu sare sozialetan eta ez izan lotsarik agurtzeko: maite dugu gure zaleengandik entzutea!","WEBSITE_COMMUNITY_UNOFFICIALS":"Komunitate ez ofizialak","STREMIO_COMMUNITY_NL":"Stremio Herbehereak","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Alemania","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgika","STREMIO_COMMUNITY_FRANCE":"Stremio Frantzia","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italia","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio AEB","STREMIO_COMMUNITY_MEXICO":"Stremio Mexiko","STREMIO_COMMUNITY_ADDONS":"Stremio gehigarriak","STREMIO_COMMUNITY_AWESOME":"Stremio zoragarria","WEBSITE_COMMUNITY_PARTNERS":"Bazkideak eta laguntzaileak","WEBSITE_COMMUNITY_GOODIES":"Stremio opariak","WEBSITE_COMMUNITY_WALLPAPERS":"Atzeko irudiak","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Jarri gurekin harremanetan","WEBSITE_CONTACT_US_P1":"Galderarik, iruzkinik edo iradokizunik baduzu, jar zaitez gurekin harremanetan beheko harremanetarako formularioaren bidez.","WEBSITE_CONTACT_US_P2":"Gogoan izan Bulgarian gaudela, beraz, zure kontsultari erantzuteko denbora atzeratu daiteke ordu-zona desberdintasunengatik.","WEBSITE_CONTACT_US_SUCCESS":"Zure mezua bidali da. Guregana lehenbailehen itzuliko gara.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Mesedez, sartu baliozko mezu elektronikoa!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Zein da zure galdera lotuta?","WEBSITE_CONTACT_US_Q_OS":"Zein da zure Eragiketa Sistema?","WEBSITE_CONTACT_US_PH_EMAIL":"Zure emaila","WEBSITE_CONTACT_US_PH_MESSAGE":"Mezua","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"BIDALI","WEBSITE_CONTACT_US_Q_1":"Nola instalatu?","WEBSITE_CONTACT_US_Q_2":"Nola desinstalatu?","WEBSITE_CONTACT_US_Q_3":"(HTML) Nola egin lasagna?","WEBSITE_CONTACT_US_Q_4":"Gehigarriak","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Teknologia","WEBSITE_TECHNOLOGY_P1":"Teknologia eta zientzia eroa maite ditugu.
    Hona hemen zerk bultzatzen duen Stremio (kode irekikoa da guztia).","WEBSITE_TECHNOLOGY_P_QT":"Plataforma anitzeko softwarearen garapena onenean.","WEBSITE_TECHNOLOGY_P_MPV":"Doako, kode irekiko eta plataforma anitzeko multimedia erreproduzitzailea.","WEBSITE_TECHNOLOGY_P_RN":"React Native-k aplikazio mugikorrak JavaScript soilik erabiliz eraikitzeko aukera ematen du.","WEBSITE_TECHNOLOGY_P_VLC":"Multimedia esparrua aplikazioan txertatuta multimedia lortzeko.","WEBSITE_TECHNOLOGY_P_REALM":"Realm plataforma mugikorra da eta SQLite & Core Data-ren ordezkoa da.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js iturburu irekiko, plataforma anitzeko JavaScript exekuzio ingurunea da.","WEBSITE_TECHNOLOGY_P_RUST":"Herdoila paradigma anitzeko sistemaren programazio lengoaia da, segurtasunera bideratua, batez ere aldi bereko segurura.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Lagundu proiektuan","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Bi modu daude Stremioren ekarpenak egiteko eta produktua hobetzen lagun gaitzazun.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Zure hizkuntza trebetasun baliotsuak eman ditzakezu plataforma itzulita ...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"edo","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... zure kodeketa gaitasunak erabil ditzakezu komunitatearen gehigarriak sortzeko.","WEBSITE_TRANSLATE_STREMIO":"Itzuli Stremio","WEBSITE_404_OH_NO":"Ui ui ui! Bilatzen ari zaren orria ez dago hemen ...","WEBSITE_GO_HOME":"Hasierara","WEBSITE_LINK_OTHER_DOWNLOADS":"Beste deskarga batzuk","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Laguntza","WEBSITE_DOWNLOAD_4_0_BETA":"Deskargatu Stremio 4 beta orain","WEBSITE_GET_FOR_DESKTOP":"Lortu mahaigainerako","WEBSITE_LINK_ADDON_COMPETITION":"Addon lehiaketa","WEBSITE_LINK_ART_CONTEST":"Arte lehiaketa","WEBSITE_MY_ACCOUNT":"Nire kontua","WEBSITE_MAINPAGE_FAQ_001_H1":"Zer da Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio nahi duzun guztia ikusteko askatasuna ematen duen media zentro modernoa da.","WEBSITE_MAINPAGE_FAQ_002_H1":"Nola dabil?","WEBSITE_MAINPAGE_FAQ_002_P1":"Stremio gailuan instalatu eta kontu bat sortu ondoren, egin behar duzun guztia gehigarrien katalogoa bisitatzea eta nahi duzun gehigarria instalatzea da, eta listo!","WEBSITE_MAINPAGE_FAQ_002_P2":"Horren ondoren, Ezagutu edo Taula ataletara joan zaitezke edukia aztertzen hasteko.","WEBSITE_MAINPAGE_FAQ_003_H1":"Zer ikusi dezaket hemen?","WEBSITE_MAINPAGE_FAQ_003_P1":"Asko: filmak, telebista saioak, web kateak, kirola, telebista kateak, podcastak eta beste. Gure gehigarri sistemari esker, hainbat eduki sar dezakezu.","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio kode irekia al da?","WEBSITE_MAINPAGE_FAQ_004_P1":"Bai, lotura hauek ikus ditzakezu: ${1}mahaigaineko aplikazioa${2} eta ${3}GitHub erakundea${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio segurua al da?","WEBSITE_MAINPAGE_FAQ_005_P1":"Bai: kode irekiko softwarea denez, kodea publikoki ikuskatzen da eta zuk zeuk berrikus dezakezu.","WEBSITE_MAINPAGE_FAQ_006_H1":"Zer moduz nire pribatutasuna?","WEBSITE_MAINPAGE_FAQ_006_P1":"Erabiltzaileen pribatutasuna errespetatzen dugu eta ez dugu zure kontua sortzeko eta sinkronizatzeko ezinbesteko gutxieneko datu pertsonalik biltzen.","WEBSITE_MAINPAGE_FAQ_006_P2":"Erregistratzerakoan ${1}Gonbidatu modua${2} ere badago, inolako daturik behar ez duena: modu honetan, ez da deirik egiten gure backendera. Hala ere, funtzio erabilgarrien kaltetan dator, hala nola liburutegia gailuetan sinkronizatu ahal izatea.","WEBSITE_MAINPAGE_FAQ_007_H1":"Telebistara bota al dezaket?","WEBSITE_MAINPAGE_FAQ_007_P1":"Bai, Chromecast-a onartzen dugu eta mahaigaineko zein mugikorreko aplikazioetatik (Android) bota ditzakezu.","WEBSITE_MAINPAGE_FAQ_008_H1":"Zenbat gehigarri ditu Stremiok?","WEBSITE_MAINPAGE_FAQ_008_P1":"2019 amaieran, 50 urte baino gehiago. Informazio gehiagorako, begiratu gure gehigarrien katalogoa.","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio gehigarrien katalogoan dagoenaz haratago al daiteke?","WEBSITE_MAINPAGE_FAQ_009_P1":"Bai, hauek egiaztatu beharko zenituzke: ${1}PimpMyStremio${2}, ${3}Reddit komunitateak${4}, ${5}Stremio Downloader${6}, etab.","WEBSITE_MAINPAGE_FAQ_010_H1":"Zer gailu onartzen ditu Stremiok?","WEBSITE_MAINPAGE_FAQ_010_P1":"Windows, Mac eta Linuxerako mahaigaineko aplikazioak ditugu. Mugikorretarako, Android eta iOS onartzen ditugu, baina kontuan izan iOS funtzionalitate mugatua duela (ez ditu gehigarri gehien onartzen).","WEBSITE_MAINPAGE_FAQ_010_P2":"Android-en oinarritutako gailu ugari daude Stremio exekutatu ahal izateko, adibidez NVIDIA Shield eta Amazon Fire Stick, baina ez ditugu ofizialki onartzen.","WEBSITE_MAINPAGE_FAQ_011_H1":"Stremioren zenbait eduki gehi al ditzakezu?","WEBSITE_MAINPAGE_FAQ_011_P1":"Barkatu, guk ez dugu edukirik eskaintzen, baina zenbat eta Stremio gehigarri gehiago instalatu, orduan eta eduki gehiago aurkituko duzu.","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio-k magnet estekak erreproduzitu al ditzake?","WEBSITE_MAINPAGE_FAQ_012_P1":"Bai, eta HTTP esteka normalak eta torrent fitxategiak erreproduzi ditzake (arrastatu eta jaregin).","WEBSITE_MAINPAGE_FAQ_013_H1":"Bideo bat deskargatu eta konexiorik gabe ikusi al dezaket?","WEBSITE_MAINPAGE_FAQ_013_P1":"Lineaz kanpoko erabilgarritasuna laster datorren eginbidea da, baina Stremio gailuan gordetzeko baimena ematen baduzu (ezarpenen paneletik) bideoak geroago ikusi ahal izango dituzu konexiorik gabe.","WEBSITE_MAINPAGE_FAQ_014_H1":"Ezerk ez du funtzionatzen, lagundu iezadazu!","WEBSITE_MAINPAGE_FAQ_014_P1":"Ziur zaude gehigarriak instalatu dituzula? Bai bada, begiratu ${2} laguntza zentroarekin ${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Nola eusten dio Stremiok bere garapen eragiketei?","WEBSITE_MAINPAGE_FAQ_015_P1":"Noizean behin iragarki ez-intrusiboak jartzen ditugu, baina dohaintza eredu batera pasatzea pentsatzen ari gara.","WEBSITE_MAINPAGE_FAQ_015_P2":"Galdera gehiagorako, joan ${1}laguntza-zentrora${2}.","HELP_LEARN_MORE":"Lagundu iezaguzu zure inguruan gehiago jakiten.","LIFESTYLE":"Bizimodua","SPORTS":"Kirolak","FOOD_HEALTH":"Elikadura eta osasuna","BEAUTY_FASHION":"Edertasuna eta Moda","NEWS":"Albisteak","GAMING":"Jokoa","SCIENCE_EDUCATION":"Zientzia eta hezkuntza","MUSIC":"Musika","TRAVEL":"Bidaia","LATE_NIGHT":"Late Night","REALITY":"Realitya","COMEDY":"Komedia","DIY":"Nola egin zerorrek","TECH":"Teknologia","CINEMA":"Zinema","CONTINUE":"Jarraitu","SLOW_LOADING":"KARGA MOTELA?","I_GIVE_UP":"AMORE EMATEN DUT","LEARN_MORE":"Gehiago ikasi","POOR_SOURCE":"Iturri hau ez dago erabilgarri edo zure Interneteko konexioa ez da behar bezain azkarra","PICK_CATEGORIES_ERR":"Gutxienez 3 kategoria aukeratu behar dituzu","ADJUST_TIMING":"Egokitu denborarekin","ADJUST_SIZE":"Doitu tamaina honekin","SEARCH_ANYTHING":"Edozer gauza bila dezakezu ...","ALL_CATEGORIES":"Guztiak","SEARCH_CATEGORIES":"Filmak, Telesailak, YouTube eta Telebista","SEARCH_PERSONS":"Aktoreak, Zuzendariak eta Idazleak","SEARCH_PROTOCOLS":"HTTP eta iman estekak","SEARCH_TYPES":"IMDB/TVDB estekak","WATCHED":"Ikusita","SHOW_LESS":"Erakutsi gutxiago","LAST_SEARCHES":"Azken bilaketak","CLEAR_HISTORY":"Garbitu historia","CHOOSE_SOME":"AUKERATU HEMENDIK BATZUK:","NO_WEB_REMOTE":"Urruneko Web-a ezin izan da kargatu","STREMIO_OFFLINE":"Stremio lineaz kanpo dago","STREMIO_EXPENSIVE_CONNECTION":"Mugikorreko datu konexioa erabiltzen ari zarela antzeman dugu, jarraitu nahi al duzu?","USE_DATA":"Erabili datuak","WARNING":"Abisua","MORE_INFO":"Informazio gehiago ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Kargatzen ...","STREMIO_TV_BACK_TO_LANGUAGES":"Itzuli hizkuntzetara","STREMIO_TV_REMOTE":"Urrunekoa","STREMIO_TV_GO_TO":"Joan:","STREMIO_TV_OR_SCAN":"edo eskaneatu:","STREMIO_TV_ADDON_INSTRUCTIONS":"Mesedez, jarraitu argibideak nahiago dituzun gehigarriak instalatzeko.","STREMIO_TV_LIVE_TV":"Zuzeneko telebista","STREMIO_TV_RESUME_WATCHING":"Berrekin Ikustea","STREMIO_TV_LOADING_BACKGROUND":"Aurrekariak kargatzen","STREMIO_TV_CHECKING_AUTHENTICATION":"Autentifikazioa egiaztatzen","STREMIO_TV_LOADING_BOARD":"Kargatzeko taula","STREMIO_TV_LOGIN_HEADER_LINE_1":"Gure erabiltzaileek ahalik eta esperientzia pertsonalizatu onena izan dezaten nahi dugu gure softwarearekin.","STREMIO_TV_LOGIN_HEADER_LINE_2":"Arrazoi horregatik eskatzen dizugu zure kontua egitea edota saioa hastea.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Eskerrik asko ulertzeagatik,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Stremio Taldea","STREMIO_TV_REMOTE_INSTRUCTIONS":"Urruneko Web-a zure Smartphone/Tablet/Mahaigainarekin erabiltzeko:","STREMIO_TV_WIFI_SETUP":"Wi-Fi konfigurazioa","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle-k ez du Interneteko konexiorik antzeman.","STREMIO_TV_WIFI_DETAILS_1":"Konektatu hona:","STREMIO_TV_WIFI_DETAILS_2":"estremio-zirkulua","STREMIO_TV_WIFI_DETAILS_3":"Erabili pasahitza:","STREMIO_TV_WIFI_DETAILS_4":"estremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Ireki web arakatzailea estekarekin:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Azpitituluen atzerapena","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Bilatu","STREMIO_TV_NAV_HOME":"Hasiera","STREMIO_TV_NAV_DISCOVER":"Deskubritu","STREMIO_TV_NAV_LIBRARY":"Liburutegia","STREMIO_TV_NAV_MOVIES":"Pelikulak","STREMIO_TV_NAV_SERIES":"Serieak","STREMIO_TV_NAV_CHANNELS":"Kanalak","STREMIO_TV_NAV_TV":"Zuzeneko Telebista","STREMIO_TV_NAV_SETTINGS":"Ezarpenak","STREMIO_TV_NAV_ADDONS":"Addon-ak","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Idatzi zerbait","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Bilatu","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Espazio","STREMIO_TV_SEARCH_KEY_CLEAR":"Garbitu","STREMIO_TV_SEARCH_HISTORY_TITLE":"Bilatu historialean","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Izenburu, aktore, kanal eta gehiagoren arabera bilatu dezakezu","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Garbitu bilaketa historiala","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Iragazkiak","SETTINGS":"Ezarpenak","ACCOUNT":"Kontua","LOGOUT":"Irten","THEMES":"Theme-ak","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Pistak","VIDEOS":"Bideoak","SERVER":"Zerbitzaria","LINKS":"Estekak","ABOUT":"About","INTERFACE":"Interfazea","ANIMATIONS":"Animazioak","STATUS":"Egoera","LANGUAGE":"Hizkuntza","SIZE":"Tamaina","DELAY":"Atzerapena","BOLD":"Lodia","TEXT_COLOR":"Testuaren Kolorea","OUTLINE_COLOR":"Outline Kolorea","BACKGROUND_COLOR":"Atzealdeko Kolorea","BACKGROUND_BLUR":"Atzealde lausoa","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Erreproduzitu orain","MARK_AS_WATCHED":"Markatu ikusita","MARK_AS_UNWATCHED":"Markatu ikusi gabe","REWIND_TO_BEGINNING":"Itzuli hasierara","CONTINUE_WATCHING":"Jarraitu ikusten","ALL":"Guztia","SECONDS":"segundu","ON":"ON","OFF":"OFF","RELOAD":"Eguneratu","EDIT_URL":"Aldatu URLa","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Aldatu gailuak","REMOTE_VIDEOS":"Bideoak","REMOTE_ADJUST_TIMING":"Egokitu denbora","REMOTE_ADJUST_SIZE":"Doitu neurria","REMOTE_COULD_NOT_BE_LOADED":"Web urrunekoa ezin izan da kargatu","REMOTE_RETRY":"Saiatu berriro","TORRENT_PROFILE_DEFAULT":"Defektuzkoa","TORRENT_PROFILE_SOFT":"Leuna","TORRENT_PROFILE_FAST":"Azkarra","TORRENT_PROFILE_ULTRA_FAST":"Ultra Azkarra","FAQ_001_H1":"Zer da Stremio?","FAQ_001_P1":"Stremio bideo entretenimendurako diseinatutako multimedia zentroen softwarea da, erabiltzeko erraztasunak kontuan hartuta. Stremio-k & amp; ikusi zure film, serie, kanal eta zuzeneko telebista bilduma.","FAQ_001_P2":"Stremio-k zure disko lokaletik eta gure gehigarri sistematik erakusten duen edukia bildu.","FAQ_001_P3":"Era berean, interesatzen zaizkizun atal/bideo/film berriak ateratzen direnean jakinaraziko zaizu eta filmen gomendioak emango dizkizu.","FAQ_02_H1":"Nola alderatzen da Stremio Kodi eta Plexekin?","FAQ_02_P1":"Bi softwareak inspiratzen gaitu. Baina helburu desberdinak ditugu - Stremio entretenimendu bideoetara bideratuta dago bereziki, eta horretarako oso konponbide nagusia bilakatzen ahalegintzen da erabiltzeko oso erraza izanik.","FAQ_02_P2":"Stremio ez da inoiz Kodi eta Plex bezain pertsonalizagarria eta aberatsa izango, baina errazagoa da erabiltzea. ${1}eskuratu eta ikusi${2} :)","FAQ_03_H1":"Nola alderatzen da Stremio Netflix-ekin?","FAQ_03_P1":"Berriro ere, Netflix da gure inspirazioetako bat. Netflix-en erabiltzailearen esperientzia lortzen ahalegintzen gara, eta gehitutako opari asko. Baina garrantzitsuena, zure liburutegia kudeatzeko eta eduki gehigarri berriak gehitzeko askatasuna ematen dizugu gure addon sistemarekin.","FAQ_03_P2":"Horrek Stremio ezin du luzatu, beraz, Stremio erabiltzen duzunean ez zara inoiz Netflix-ek lizentzia ematea erabakitzen duen edukira mugatzen. Adibidez, Stremioren bidez ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} edukia ikusi dezakezu. eta baita ${9}Netflix${10} bera ere!","FAQ_04_H1":"Nola alderatzen da Stremio Flipboard-ekin?","FAQ_04_P1":"Galdera hori ez dugu hain maiz jasotzen, hasierako jendearekin hitz egitean izan ezik :)","FAQ_04_P2":"Stremio edukien agregatzailea diseinatzean datza, eta horrek bideoetarako Flipboard bihurtzen du. Hori oso agerikoa da gure Batzordearen atalean, katalogoak eta atal berrien / bideo berrien jakinarazpenak eskaintzen dizkizu, Flipboard-ek bezala.","FAQ_05_H1":"Nola alderatzen da Stremio krispeten denborarekin?","FAQ_05_P1":"Stremio eta Popcorn Time erabiltzailearen interfazean antzekoak dira, bideo entretenimendu katalogoak ondo egiteko modu asko ez dagoelako :)","FAQ_05_P2":"Popcorn Time iturri zehatzetatik torrent-ekin erreproduzitzera bideratuta dagoen arren, Stremio mugarik gabe dago eta eduki-agregatzailea besterik ez da, ez dago eduki-iturri zehatz batean blokeatuta.","FAQ_05_P3":"Gainera, ez dugu torrent gehigarririk ematen lehenespenez, beraz, Stremiok ez du krispeten denboraren erabilera-kasua funtzionalitate ofizialarekin estaltzen.","FAQ_05_P4":"Beste desberdintasun aipagarri bat Popcorn Time erabat irekia dela da, Stremio ${1}partzialki irekita${2} dela.","FAQ_06_H1":"Gehituko al duzu film/telesail hau?","FAQ_06_P1":"Ez, barkatu :(","FAQ_06_P2":"Beste galdera gehienetan aipatzen den bezala, Stremiok ez du berez edukirik eskaintzen - dena gehigarrien sistemaren bidez gehitzen da. Eduki eskaera izanez gero, erreproduzitzailean dagoen \\"Salatu\\" botoia erabil dezakezu, mezu elektroniko bat bidaliko dio unean erabiltzen ari zaren gehigarriaren egileari.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"X-rako gehigarria sortuko al duzu?","FAQ_08_P1":"Erabat posible da.","FAQ_08_P2":"Gehigarri bat egiteko ideia baduzu, idatzi ${1}office@stremio.com${2} helbidera, baina ziurtatu gehigarrien ideiak ez dituela inolako copyright edo erabilera baldintzak urratuko.","FAQ_08_P3":"Momentuz, gure bide orriko hurrengo gauzak FandangoNOW, Filmon.tv bideoaren eskaera eta Crunchyroll-en gehigarriak dira.","FAQ_09_H1":"Stremiok BitTorrent erabiltzen al du?","FAQ_09_P1":"Bai, Stremiok BitTorrent onartzen du streaming protokolo gisa. Hori erabil dezakezu torrent gehigarri batekin edo .torrent fitxategi bat Stremiora arrastatuz eta jareginez edo Bilaketa barran iman esteka itsatsita.","FAQ_09_P2":"Kontuan izan BitTorrent erabiltzen duen gehigarri ofizial bakarra ${1} Vodo ${2} dela, indie edukia eskaintzen duena, guztia BitTorrent-ekin banatzeko baimendua.","FAQ_09_P3":"Ez dugu onartzen copyright-urraketa egin dezaketen hirugarrenen gehigarririk erabiltzea.","FAQ_10_H1":"Zer ikusi dezaket Stremion gehigarri ofizialekin?","FAQ_10_P1":"Berez, Filmon.tv, YouTube eta Vodo edukiak Stremio beraren barruan ikus ditzakezu, kapsulatutako erreproduzitzailearekin. Gainera, Twitch.tv-rako gehigarria dugu eta beste batzuk.","FAQ_10_P2":"Konbinatu honek aukera hauek eskaintzen ditu:","FAQ_10_L1":"Filmon.tv-k eskainitako telebista kate ezagunak - adibidez, E4, BBC, Bollyworld TV","FAQ_10_L2":"YouTube-tik dena - adibidez BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Film indiarrak Vodorekin","FAQ_10_L4":"Lineako jokoen emisioak Twitch.tv-rekin","FAQ_10_P3":"Gainera, gida-kutxa eta Netflix gehigarriekin hornitutako eduki iturri ugari daude, ez Stremio barruan guztiz erreproduzitzen direnak, baina emandako zerbitzura birbideratuko lirateke. Adibidez, Guidebox gehigarriak AEBetan doan erreproduzi ditzakezun filmen aukeraketa emango dizu TubiTV eta Crackle bezalako zerbitzuetatik.","FAQ_11_H1":"Stremiok ez du instalatuko, zer egin behar dut?","FAQ_11_P1":"Windows-en bazaude, probatu ${1} ${2} instalatzaile alternatibo hau.","FAQ_11_P2":"Mac OS X erabiltzen baduzu, kontuan izan ez dugula OS X Mavericks (10.9) baino zaharragoak onartzen.","FAQ_11_P3":"Linux erabiltzen baduzu, kontuan izan momentuz 64 bit (x64) Linux soilik onartzen ditugula.","FAQ_11_P4":"Oraindik arazoa konpondu ezin baduzu, idatzi iezaguzu ${1}Facebook taldean${2}.","FAQ_12_H1":"Zergatik kexatzen da nire birusaren kontrakoa? Stremio segurua al da?","FAQ_12_P1":"Stremio ${1}%100 garbi${2} dagoela ziurtatzen dizugu.","FAQ_12_P2":"Birusen aurkako arazoa kexatzen ari da publizitatea gure instalatzailean sartzen dugulako, birusen aurkako programa batzuek iragarki gisa aitortzen baitute.","FAQ_12_P3":"Oraindik ziur ez bazaude, ${1}instalatzaile alternatiboa${2} probatu dezakezu.","FAQ_13_H1":"Nola egin dezaket gehigarri bat?","FAQ_13_P1":"Hasiberrientzat, GitHub-en gure ${1}addons sistemaren modulua${2} begiratzea gomendatzen dugu.","FAQ_13_P2":"Ondoren, ${1}Hello World tutoriala${2} jarraitu dezakezu.","FAQ_13_P3":"Programaziorako trebetasunik ez baduzu, idatzi zure ideia ${1}Reddit komunitatean${2} eta jarri gurekin harremanetan zure addon ideiarekin ${3}office@stremio.com${4} helbidean.","FAQ_14_H1":"Nola argitaratzen dira gehigarriak?","FAQ_14_P1":"Gehigarri eta ostalari bat sortzen duzunean eta zure manifestuan amaiera eremua jartzen duzunean, funtzionatzen duen gehigarrien helbidea seinalatzen duena, gehigarriak automatikoki argitaratuko du gure ${1} gehigarrien katalogoan ${2} .","FAQ_14_P2":"Stremio-addons moduluko zerbitzariaren zatiak automatikoki dei egiten duelako gure APIra gehigarria iragartzeko. Gure APIak zure amaierako puntua baliozko gehigarri gisa balioztatzen duenean, katalogoan erakusten hasiko da.","FAQ_15_H1":"Exekutatu al dezaket Stremio nire arakatzailean?","FAQ_15_P1":"Momentuz ez, baina badator hau!","FAQ_15_P2":"Alpha bat ikusteko jakinmina baduzu, hemen ikus dezakezu: ${1} alpha4.strem.io ${2}. Gogoan izan streaming hau alfa honetan desgaituta dagoela. Chrome, Firefox, Opera eta Edge onartzen ditugu.","FAQ_16_H1":"Telebistara igortzeak ez du funtzionatzen / azpitituluak ez dira funtzionatzen","FAQ_16_P1":"Telebistara igotzeak telebista marka eta modelo desberdinen artean oso bat ez datorren DLNA teknologia erabiltzen du. Hori dela eta, kasu guztietan ez dugu probatzeko gaitasunik, beraz, oso urrun dago perfektua izatetik. Hala ere, etengabe hobetzeko lanean ari gara, baina ezin dugu DLNA zure telebistarekin ondo funtzionatzen noiz hasiko den kalkulatzeko denbora.","FAQ_16_P2":"Zure telebista casting menuan ikusten ez baduzu ere, saiatu sareko konexioa desgaitzen eta berriro gaitzen (Windows-en, egin klik eskuineko botoiarekin Sarea eta erabili Gaitu / Desgaitu), baita router, telebista eta ordenagailua berrabiarazi ere. .","FAQ_16_P3":"Oraindik arazoak topatzen badituzu, lagun diezagukezu telebistaren marka eta modeloaren informazioa ${1}office@stremio.com${2} helbidera bidalita.","FAQ_16_P4":"Bitartean, oso ondo onartzen dugun Chromecast gomendatzen dugu edo, besterik gabe, zure telebista ordenagailura HDMI kable batekin konektatzea.","FAQ_17_H1":"Stremio izoztu edota huts egiten du, zer egin dezaket?","FAQ_17_P1":"Lehenik eta behin, Windows 7 AVG antibirusarekin erabiltzen ari bazara: arazo bat dugu konbinazio horrekin. Arazoa AVG-n dago, eta ez dago arrazoizko modurik gure aldetik konpontzeko. Zoritxarrez, salbuespenak edo birusen aurkako desgaitzea ez dira funtzionatuko. Irtenbide bakarra AVG beste zerbaitengatik ordezkatzea da.","FAQ_17_P2":"Hori ez bada arazoa, baina Windows erabiltzen jarraitzen baduzu, eguneratu azken zerbitzu-paketera eta eguneratu/instalatu berriro GPU kontrolatzaileak, eta saiatu berriro.","FAQ_17_P3":"Arazoa oraindik konpontzen ez bada edo Mac edo Linux erabiltzen ari bazara, idatzi iezaguzu arazoaren xehetasun zehatzen berri ${1}gure Facebook taldeko${2} helbidean.","FAQ_18_H1":"Nola egin dezaket gehigarri bat?","FAQ_18_P1":"Hasiberrientzat, GitHub-en gure ${1}addons sistemaren modulua${2} begiratzea gomendatzen dugu.","FAQ_18_P2":"Ondoren, ${1} Hello World tutoretza ${2} jarraitu dezakezu.","FAQ_18_P3":"Programaziorako trebetasunik ez baduzu, idatzi zure ideia ${1}Reddit komunitatean${2} eta jarri gurekin harremanetan zure addon ideiarekin ${3}office@stremio.com${4} helbidean.","FAQ_19_H1":"Zergatik ari da Stremio diskoan lekua hartzen?","FAQ_19_P1":"Stremio-k cache lokal bat du igortzen dituzun bideo fitxategiak aldi baterako mantentzeko.","FAQ_19_P2":"Horrek bi abantaila ditu: lehenik, Stremiok bideoa aurrez bufferrean uzteko aukera ematen du, streaming zuzenagoa bermatzeko. Bigarrenik, bideoak cache lokalean gordetzen ditu, lineaz kanpo ikusten jarraitu ahal izateko.","FAQ_19_P3":"Stremio-k zenbat gordetzen duen ezarpenen paneleko Cache ezarpenaren araberakoa da. Stremio-k zure diskoan ezarritako zenbatekoa (adibidez, 2 GB) gorde dezake, unean erreproduzitutako bideoa hori baino handiagoa ez bada, kasu horretan, gordetzeko adina biltegiratze esleitu behar du erreproduzitu arte.","FAQ_20_H1":"Non dago cache karpeta?","FAQ_20_P1":"Windows-en, Stremio-cache da Ezarpenetan aukeratu duzun unitatean (adibidez, \\"E: \\\\ stremio-cache\\")","FAQ_20_P2":"MacOS-en \\"~ /Library/Application Support/Stremio/stremio-cache\\" da","FAQ_20_P3":"Linux-en \\"~/.stremio/stremio-cache\\" edo \\"~/stremio-cache\\" da.","FAQ_21_H1":"\\"Streaming zerbitzaria ez da aurkitu\\" errorea dut. Zer egin dezaket?","FAQ_21_P1":"Akats hau jasoz gero, gauza gutxietako bat esan nahi du:","FAQ_21_P2":"1) YouTube/BitTorrent iturriak babestutako gehigarri bat erabiltzen saiatzen ari zara, gure ${1}web bertsioaren${2} bidez. Kasu honetan, gure mahaigaineko bertsioa ${3}webgunetik${4} instalatu beharko zenuke.","FAQ_21_P3":"2) Zerbait ez dago gaizki zure Stremio instalazioarekin. Kasu honetan, saiatu berriro instalatzen mahaigaineko azken bertsioa ${1} ${2} webgunetik. Honek laguntzen ez badu, saiatu birusen aurkako programak eta suebakiak desgaitzen, ordenagailua berrabiarazi eta saiatu berriro. Honek ere funtzionatzen ez badu, idatzi iezaguzu ${3}gure Facebook taldean${4}.","FAQ_22_H1":"Ezin ditut iOSeko gehigarri gehienak ikusi/erabili","FAQ_22_P1":"Apple App Store-ren baldintzak eta mugak direla eta, iOS aplikazioa gehigarri jakin batzuetara soilik mugatu dugu.","FAQ_22_P2":"Baina lasai - etorkizunean iOS-erako gehigarri gehiago egongo dira, eta Stremio gehigarri guztiak erabiltzea ahalbidetuko duen integrazioa ere gehi dezakegu iOS aplikazioa Stremio Streaming Server-era konektatzeari esker."}')},2381:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"فیلم","TYPE_series":"سریال","TYPE_tv":"برنامه تلویزیونی","TYPE_channel":"کانال","TYPE_other":"سایر","TYPE_movie_PL":"فیلم ها","TYPE_series_PL":"سریال ها","TYPE_tv_PL":"برنامه های تلویزیونی","TYPE_channel_PL":"کانال ها","TYPE_other_PL":"سایر","TYPE_ALL":"All","VIDEO":"ویدیو","BACK":"قبلی","MORE":"بیشتر","DONE":"اتمام","COPY":"کپی","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"مشاهده","Board":"بورد","Library":"کتابخانه","My Library":"کتابخانه من","Calendar":"تقویم","NOTIFICATION_ONLINE":"شما الان آنلاینید","NOTIFICATION_OFFLINE":"شما افلاینید","INTERNET_CONNECTION":"کانکشن شبکه","STORAGE_FULL_TITLE":"هشدار: فضای دیسک شما پر شده است!!!","STORAGE_FULL_TEXT":"استریمیو نمی تواند تنظیمات شما را ذخیره کند، شاید دوباره نصب کردن یا ری استارت کردن آن به حل این مشکل کمک کند.","SEARCH":"جستجو","SEARCH_NO_RESULTS":"نتیجه ای یافت نشد","SEARCH_EXPLANATION_CONTENT":"در لیست فیلم ، سریال ، یوتیوب یا کانال های تلویزیونی جستجو کنید","SEARCH_EXPLANATION_PEOPLE":"در لیست بازیگران ،‌نویسندگان یا کارگردان ها جستجو کنید","SEARCH_PASTE_LINKS":" HTTP یا Magnet links را در اینجا کپی کنید","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"افزودن به کتابخانه","REMOVE_FROM_LIB":"حذف از کتابخانه","ADDED_TO_LIB":"به کتابخانه اضافه شد","REMOVED_FROM_LIB":"از کتابخانه حذف شد","TRAILER":"تریلر","WATCH_TRAILER":"مشاهده تریلر","WATCH_NOW":"تماشا کنید","SHOW":"نمایش","SHOW_MOVIE":"نمایش فیلم","WATCH_RANDOM":"تصادفی مشاهده کنید","IMDB_RATING":"IMDb رتبه","YEAR":"سال","DIRECTOR":"کارگردان","WRITER":"نویسنده","LEAD_ACTORS":"بازیگران اصلی","CAST":"سایر بازیگران","CREW":"خدمه","SHOW_MORE_CAST":"نمایش بیشتر »","AIRED":"پخش شده","SEASONS":"فصل ها","GENRE":"ژانر","CATALOG":"کاتالوگ","SUMMARY":"خلاصه","SHOW_MORE":"نمایش بیشتر","SIMILAR":"مشابه","UPCOMING":"بزودی عرضه می شود","ENDED":"پایان یافته","DURATION":"طول","FEATURED":"ویژه شده","METADATA":"متا دیتا","CATEGORY":"دسته بندی","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"جستجوی ویدیو","SEARCH_PLACEHOLDER":"جستجو کنید یا URL را وارد کنید","ADDON":"افزونه","ADDONS":"افزونه ها","OFFICIAL":"رسمی","ADDONS_OFFICIAL":"افزونه های رسمی استریمیو","ADDONS_POPULAR":"پرطرفدارها در کشور شما","ADDON_FREE":"رایگان","ADDON_PEERED":"peer شده","ADDON_SUBSCRIPTION":"عضویت","ADDON_STREAM_GEORESTRICTED":"در کشور شما در دسترس نیست","ADDON_STREAM_OFFLINECACHE":"کش آفلاین","ADDON_STREAM_LOCALFILE":"فایل لوکال","SHARE_ADDON":"به اشتراک گذاری افزونه","AVAILABLE_STREAMS":"استریم های در دسترس","NO_STREAM":"استریمی یافت نشد.","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"برای استفاده از استریم های بیشتر ، می توانید آن ها را نصب کنید","STREAM_NOT_SUPPORTED":"این استریم انتخابی شما برای این پلتفورم قابل استفاده نیست","ADDON_CATALOGUE":"نمایش همه افزونه ها »","ADDON_CATALOGUE_MORE":"نصب افزونه ها","REPO_ADDED":"مخزن نصب شد","ADDON_REPO_EXIST_ERR":"این آلبوم از قبل موجود بود","ADDON_REPO_ERR":"در هنگام افزودن مخزن مشکلی بوجود آمد","ADDON_ADD_ERR":"در هنگام افزودن افزونه مشکلی بوجود آمد","ERR_ADDON_PROTECTED":"این افزونه محافظت شده و قابل حذف نیست","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"یوزر پسوورد اشتباه است، مشکلی بوجود امد","ERR_NOT_COLLECTION_URL":"URL آلبوم نیست","ERR_NOT_ADDON_URL":"URL افزونه اشتباه است","ERR_DETECTFROMURL":"از این URL چیزی پیدا نکردیم","ADDON_DUPLICATE_WARNING":"هشدار:افزونه تکراری است","ADDON_COLLECTION_SET_FAILED":"عملیات همگام سازی افزونه های نصب شده به پنل کاربری شما ، با شکست مواجه شد","SETTINGS_DATA_EXPORT":"اکسپورت اطلاعات یوزر","ADDON_PULL_FAILED":"عملیات همگام سازی افزونه های نصب شده شکست خورد","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"فیلم فعلا فقط قابل نمایش در سالن تئاتر است","WATCH_IN_CINEMA":"در سینمای محله ی خودتان ببینید","IN_THEATER":"در سینما","GET_TICKETS":"بلیط بگیرید","UPCOMING_EPISODE":"اپیزود های آینده","UPCOMING_EPISODE_MESSAGE":"این ایپزود منتشر می شود در","MISSING_DATE_EPISODE":"تاریخی در دسترس نیست","MISSING_DATE_EPISODE_MESSAGE":"این اپیزود هنوز منتشر نشده","CHANNEL_NOT_SCRAPED":"اطلاعات این کانال هنوز دریافت نشده
    لطفا چند دقیقه دیگر مراجعه کنید.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"به کتابخانه شما افزوده شد وقتی در دسترس شد به شما اطلاع رسانی می شود.","GET_NOTIFIED_WHEN_AVAILABLE":"زمانی که در دسترس شد به شما اطلاع رسانی می شود","WARNING_STREAMING_SERVER":"هشدار: استریم سرور یافت نشد، استریم قابل انجام نیست","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"هشدار: سخت افزار شما این ویدیو را پشتیبانی نمی کند، حواستان باشد که ممکن است این ویدیو برای شما با سرعت پایینتری پخش شود","PLAYER_ERROR":"اوپس ، مشکلی در پخش کننده پیش آمده","PLAYER_ERROR_LOOKSLIKE":"انگار","PLAYER_ORIENTATION":"جهت نمایش","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"قفل شده","PLAYER_ORIENTATION_SENSOR_SHORT":"سنسور","PLAYER_ORIENTATION_LANDSCAPE":"نمایش بصورت عمودی قفل شده","PLAYER_ORIENTATION_SENSOR":"جهت نمایش پخش کننده بصورت اتوماتیک تنظیم می شود","PLAYER_PLAYBACK_SPEED":"سرعت پخش","PLAYER_PLAYBACK_ERROR":"پخش ویدیوبا مشکل مواجه شد ، دوباره سعی کنید","PLAYER_PLAYBACK_ERROR_UNKNOWN":"خطای نا شناخته","PLAYER_PLAYBACK_ERROR_DEFAULT":"این ویدیو نمی تواند در {{productName}} پخش شود.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"لایو","PLAYER_NEXT_VIDEO_TITLE":"می آید در","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"کنسل کردن","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"مشاهده کنید","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"استریم شده از","CASTING_TO":"کست شده از","NETWORK_STATUS":"وضعیت شبکه","STREAM_SPEED":"سرعت استریم:","STREAM_BUFFERED":"بافر شده:","PEERS_INFO":"Peers اطلاعات","PEERS_ACTIVE":"فعال:","PEERS_CONNECTED":"وصل شده:","PEERS_WAITING":"منظتر باشید:","TRANSCODING_WARNING":"هشدار: در حال ترانسکد کرد ویدیو","STREAM_LOADING":"کمی شکیبا باشید...","PLAYING_LOCAL":"در حال پخش از اوکال","PLAYING_CACHE":"در حال پخش از کش","WRONG_SUBS":"زیرنویس اشتباه است؟","ERR_SUBS_LOADING_TITLE":"خطا در دریافت زیرنویس","ERR_SUBS_LOADING":"خطایی در دریافت زیر نویس ها پیش آمده شاید بخاطر افزونه زیرنویس است یا حتی مشکل از اینترنت شماست","WARN_FOLLOWING_SUB_ADDONS_FAILED":"افزونه زیرنویس فوق مشکل دارد","ERR_CASTING_UPDATE_TITLE":"نمی توانیم اطلاعات دستگاه شما را بروزرسانی کنید ،سرور استریمینگ ممکن است مشکل داشته باشد","CHOOSE_DEVICE":"دستگاه را انتخاب کنید","NO_CAST_DEVICES":"دستگاهی پیدا نشد","NO_SETTINGS":"تنظیمات یافت نشد","PHONE_TABLET":"گوشی یا تبلت","SUBTITLES":"زیرنویس ها","SUBTITLES_CHANGE":"زیرنویس را انتخاب کنید برای","SUBTITLES_CHANGE_NONE":"هیچ زیرنویس دیگری پیدا نشد","SUBTITLES_CHANGE_ACIVE":"زیرنویس های موجود : #{{subtitlesDialog.activeIdx + 1}} . بر روی دکمه \\"Continue\\" کلیک کنید تا زیرنویس را مشاهده کنید. #{{subtitlesDialog.pickedIdx + 1}}","SUBTITLES_OR":"جایگزین,","SUBTITLES_ADJUST_DELAY":"زیرنویس delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"یا کلید G / H را در هنگام پخش استفاده کنید","SUBTITLES_ADJUST_DELAY_TIP":"توجه: شما می توانید کلید G / H را هنگام پخش استفاده کنید.","SUBTITLES_DELAY":"زیرنویس ها delay:","SUBTITLES_LOADING":"در حال دریافت زیرنویس ها","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"غیرفعال شده","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"فصل","EPISODE":"اپیزود","SPECIAL":"Special","SORT":"مرتب سازی","SORT_BY":"مرتب سازی بر","FILTER":"فیلتر","SORT_TRENDING":"ترند","SORT_RECENT":"آخرین","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"رتبه","SORT_WATCHED":"مشاهده شده","SORT_YEAR":"سال","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"جدیدترین ها برای شما","New Episodes":"اپیزودهای جدید","New Videos":"ویدیو های جدید","Recommendations":"پیشنهاد شده:","LIBRARY_RESUME":"Resume","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"اطلاعات بیشتر","LIBRARY_RESUME_DISMISS":"Dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"ویژه ها","DISCOVER_TOP":"برترین ها","DISCOVER_OSCAR":"برندگان اسکار","DISCOVER_WARNING_TITLE":"اوپس!","DISCOVER_EMPTY_CATALOG":"افزونه خالی است","DISCOVER_ADULT_WARNING":"مخصوص بزرگسالان است ، ایا سن شما بالاتر از ۱۸ است؟","DISCOVER_NOADDON_WARNING":"Warning: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"حذف این اددان(افزونه)","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Re-launch now!","UPGRADE":"New version is available! Upgrade to the latest Stremio version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"الان نه","BUTTON_UPDATE_NOW":"بروزرسانی","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"رمزعبور","PASSWORD_CONFIRM":"تایید رمزعبور","EMAIL":"ایمیل","FB_LOGIN":"Continue with Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"یا","I_ACCEPT":"I accept the","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Terms and Conditions","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Passwords don\'t match","SIGN_UP":"ثبت نام","SIGN_UP_EMAIL":"ثبت نام با ایمیل","CLICK_TO_SIGN_UP":"برای ثبت نام اینجا کلیک نمایید.","LOG_IN":"ورود","LOG_OUT":"خروج","EXIT_FULLSCREEN":"خروج از مود تمام صفحه","ENTER_FULLSCREEN":"ورود به مود تمام صفحه","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"پنل کاربر","LOGIN_LABEL":"ورود","GUEST_LOGIN":"ورود مهمان","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"اینجا را کلیک کنید","WRONG_PASSWORD":"Wrong email or password. In case you have forgotten your password, ","SET_A_PASS":"تنظیم رمزعبور","RESET_PASSWORD":"بازیابی رمزعبور","FORGOT_PASSWORD":"رمزعبور را فراموش کردید?","EMAIL_USED_WITH_FB":"This email was used with a Facebook login.","INVALID_EMAIL":"لطفا یک ایمیل معتبر وارد نمایید","INVALID_PASSWORD":"لطفا یک رمزعبور معتبر وارد نمایید","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"ورود ناموفق بود.","SIGNUP_FAILED":"عضویت ناموفق بود.","SEARCH_FAILED":"جستجو ناموفق بد","EMAIL_USED":"این ایمیل استفاده شده است.","WAITING_FB_LOGIN":"ورود توسط فیسبوک...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"بله","EXTERNAL_ONLY_ONCE":"خیر","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"ورزشی","INTRO_TASTE_FOOD_HEALTH":"تغذیه و سلامت","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"اخبار","INTRO_TASTE_GAMING":"گیمینگ","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"موزیک","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"کمدی","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"تکنولوژی","INTRO_TASTE_CINEMA":"سینما","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Activate this addon?","ADDON_REPO_ADD":"Addon collection URL","ADDON_ADD":"افزودن","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"What\'s new","BUTTON_CONTINUE":"ادامه","BUTTON_ACTIVATE":"Activate","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"انصراف","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Here is how you can start:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from Facebook","IMPORT_TRAKT":"Import your media library from Trakt","IMPORT_DISCOVER":"Find interesting stuff from Discover","IMPORT_DISK":"Import movies or shows you have on your local disk","PLEASE_CREATE_ACC":"Please create an account to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from Discover","IMPORT_DISK_SIGNUP":"Sign up and import movies or shows you have on your local disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"شما باید وارد شوید.","SETTINGS_LABEL":"تنظیمات","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"تغییر رمز عبور","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"تماس با پشتیبانی","SETTING_LANGUAGE":"زبان","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"زیرنویس های پیشفرض","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"حساب کاربری","SETTINGS_VERSION":"نسخه","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"روشن","NAVIGATION_OFF":"خاموش","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Quit","CONNECTED":"متصل شده است","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"January","February":"February","March":"March","April":"April","May":"May","June":"June","July":"July","August":"August","September":"September","October":"October","November":"November","December":"December","Monday":"Monday","Tuesday":"Tuesday","Wednesday":"Wednesday","Thursday":"Thursday","Friday":"Friday","Saturday":"Saturday","Sunday":"Sunday","Action":"Action","Comedy":"Comedy","War":"War","Family":"Family","Animation":"Animation","Adventure":"Adventure","Fantasy":"Fantasy","Crime":"Crime","Mystery":"Mystery","Romance":"Romance","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Music","Biography":"Biography","Documentary":"Documentary","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"اخبار","music video":"موزیک ویدیو","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"اشتراک گزاری","CTX_COPY_SHARE_LINK":"کپی کردن لینک اشتراک گزاری","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"نمایش","CTX_PLAY":"پخش","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"حذف از کتابخانه","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"تمام صفحه","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"کپی","CTX_PASTE":"بیست","CTX_CLEAR":"پاکسازی","CTX_CLEAR_RECENT_SEARCHES":"پاکسازی جستجو های اخیر","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"افزونه های من","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon collections","ADDON_SEARCH":"جستجوی افزونه","ADDON_INSTALL":"نصب","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"حذف","ADDON_UPGRADE":"بروزرسانی","ADDON_INSTALLED":"نصب شده","ADDON_INSTALLED_MSG":"افزونه نصب شد!","ADDON_UPGRADED_MSG":"افزونه برزورسانی شد!","ADDON_UNKNOWN":"ناشناس","ADDON_ERR":"خطا در نصب افزونه!","ADDON_DISCONNECTED":"قطع شده","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"اکنون نصب کن","ADDON_PAGE":"صفحه افزونه","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"افزونه","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"لینک نامعتبر است","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"ادامه تماشا","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You Can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"خانه","WEBSITE_PAGE_FEATURES":"امکانات","WEBSITE_PAGE_ADDONS":"افزونه ها","WEBSITE_PAGE_TECH":"تکنولوژی","WEBSITE_PAGE_CREATE_ADDON":"ساخت افزونه","WEBSITE_PAGE_CONTACTS":"مخاطبین","WEBSITE_PAGE_BLOG":"بلاگ","WEBSITE_TYPE_movie":"فیلم ها","WEBSITE_TYPE_series_PL":"سریال ها","WEBSITE_TYPE_tv":"تلویزیون زنده","WEBSITE_TYPE_channel":"کانال ها","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"ویدیو جدید","WEBSITE_BOARD_EPISODE":"قسمت جدید","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"افزونه های محتوا","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"افزونتو بساز","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"حمایت با بیتکوین:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"سوالات متداول","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"مجاز","WEBSITE_PAGE_ABOUT":"درباره","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"درباره ما","WEBSITE_LINK_TECHNOLOGY":"تکنولوژی","WEBSITE_LINK_APPS":"برنامه ها","WEBSITE_LINK_DOWNLOADS":"دانلود ها","WEBSITE_MORE":"بیشتر","WEBSITE_LINK_ADDONS":"افزونه ها","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"انجمن","WEBSITE_LINK_BLOG":"بلاگ","WEBSITE_MORE_MORE":"... & بیشتر","WEBSITE_LINK_HELP":"مرکز راهنما","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"سابسکرایب","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"امکانات","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"افزونه ها","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"ی افزونه بساز","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"دانلود ها","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio برای ویندوز","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio برای لینوکس","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio برای اندروید","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio برای تلویزیون اندروید","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS (limited version)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"تماس باما","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"ایمیل شما","WEBSITE_CONTACT_US_PH_MESSAGE":"پیغام","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ارسال","WEBSITE_CONTACT_US_Q_1":"چطوری نصب کنیم?","WEBSITE_CONTACT_US_Q_2":"چطوری حذف کنیم?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"افزونه ها","WEBSITE_CONTACT_US_OS_1":"ویندوز","WEBSITE_CONTACT_US_OS_2":"مک","WEBSITE_CONTACT_US_OS_3":"لینوکس","WEBSITE_CONTACT_US_OS_4":"اندروید","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"تکنولوژی","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"برو خانه","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"سوالات متداول","WEBSITE_SUPPORT":"پشتیبانی","WEBSITE_DOWNLOAD_4_0_BETA":"Download Stremio 4 beta Now","WEBSITE_GET_FOR_DESKTOP":"دریافت برای دسکتاپ","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"اکانت من","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can access a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"اخبار","GAMING":"گیمینگ","SCIENCE_EDUCATION":"Science & education","MUSIC":"موزیک","TRAVEL":"سفر","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"کمدی","DIY":"How to DIY","TECH":"تکنولوژی","CINEMA":"سینما","CONTINUE":"ادامه","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"همه","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"مشاده شده","SHOW_LESS":"نمایش کمتر","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"هشدار","MORE_INFO":"اطلاعات بیشتر ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"درحال بارگذاری ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"استفاده از رمزعبور:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"جستجو","STREMIO_TV_NAV_HOME":"خانه","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"کتابخانه","STREMIO_TV_NAV_MOVIES":"فیلم ها","STREMIO_TV_NAV_SERIES":"سریال ها","STREMIO_TV_NAV_CHANNELS":"کانال ها","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"تنظیمات","STREMIO_TV_NAV_ADDONS":"افزونه ها","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"جستجو","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"تنظیمات","ACCOUNT":"حساب","LOGOUT":"خروج","THEMES":"تم ها","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"ویدیو ها","SERVER":"سرور","LINKS":"لینک ها","ABOUT":"درباره","INTERFACE":"Interface","ANIMATIONS":"انیمیشن ها","STATUS":"وضعیت","LANGUAGE":"زبان","SIZE":"سایز","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"روشن","OFF":"خاموش","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"تغییر دستگاه ها","REMOTE_VIDEOS":"ویدیو ها","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"تلاش مجدد","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},5829:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Série","TYPE_tv":"Chaîne TV","TYPE_channel":"Chaîne","TYPE_other":"Autre","TYPE_movie_PL":"Film","TYPE_series_PL":"Séries","TYPE_tv_PL":"Chaînes TV","TYPE_channel_PL":"Chaînes","TYPE_other_PL":"Autres","TYPE_ALL":"Tous","VIDEO":"Vidéo","BACK":"Retour","MORE":"Plus","DONE":"Terminer","COPY":"Copier","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Découverte","Board":"Tableau","Library":"Bibliothèque","My Library":"Ma Bibliothèque","Calendar":"Calendrier","NOTIFICATION_ONLINE":"Vous êtes maintenant connecté","NOTIFICATION_OFFLINE":"Vous êtes maintenant hors-ligne","INTERNET_CONNECTION":"Connexion Internet","STORAGE_FULL_TITLE":"Attention: Espace de stockage plein !","STORAGE_FULL_TEXT":"Stremio sera incapable de sauvegarder vos réglages, préférences ou informations de connexion. N\'hésitez pas à relancer ou réinstaller Stremio.","SEARCH":"recherche","SEARCH_NO_RESULTS":"Aucun résultat trouvé","SEARCH_EXPLANATION_CONTENT":"Recherchez des films, séries, chaines YouTube ou TV...","SEARCH_EXPLANATION_PEOPLE":"Recherchez des acteurs, directeurs et réalisateurs","SEARCH_PASTE_LINKS":"Collez une URL ou un lien magnet","SEARCH_OR_PASTE_LINK":"Rechercher ou coller un lien","ADD_TO_LIB":"Ajouter à la bibliothèque","REMOVE_FROM_LIB":"Retirer de la bibliothèque","ADDED_TO_LIB":"Ajouté à la bibliothèque","REMOVED_FROM_LIB":"Retiré de la bibliothèque","TRAILER":"Bande Annonce","WATCH_TRAILER":"Regarder la bande annonce","WATCH_NOW":"Regarder","SHOW":"Regarder","SHOW_MOVIE":"Afficher le film","WATCH_RANDOM":"Regarder aléatoirement","IMDB_RATING":"Note IMDb","YEAR":"Année","DIRECTOR":"Réalisateur","WRITER":"Scénariste","LEAD_ACTORS":"Acteurs Principaux","CAST":"Casting","CREW":"Équipe","SHOW_MORE_CAST":"Afficher plus","AIRED":"Sortie","SEASONS":"Saisons","GENRE":"Genre","CATALOG":"Catalogue","SUMMARY":"Résumé","SHOW_MORE":"Afficher Plus","SIMILAR":"Similaire","UPCOMING":"À venir","ENDED":"Terminé","DURATION":"Durée","FEATURED":"À l\'affiche","METADATA":"Métadonnées","CATEGORY":"catégorie","LINKS_GENRES":"Genres","LINKS_CAST":"Casting","LINKS_DIRECTORS":"Réalisateurs","SEARCH_VIDEOS":"rechercher des vidéos","SEARCH_PLACEHOLDER":"chercher ou coller un lien magnet","ADDON":"Addon","ADDONS":"Addons","OFFICIAL":"officiels","ADDONS_OFFICIAL":"Addons Stremio officiels","ADDONS_POPULAR":"Populaire près de chez vous","ADDON_FREE":"gratuit","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"abonnement","ADDON_STREAM_GEORESTRICTED":"non disponible chez vous","ADDON_STREAM_OFFLINECACHE":"Cache Hors ligne","ADDON_STREAM_LOCALFILE":"Fichier local","SHARE_ADDON":"Partager cet addon","AVAILABLE_STREAMS":"Flux disponibles","NO_STREAM":"Aucun flux n\'a été trouvé","ALL_ADDONS":"Tous","INSTALL_MORE_ADDONS":"Pour plus de flux, veuillez installer plus d\'addons","STREAM_NOT_SUPPORTED":"Le flux sélectionné n\'est pas supporté par la plateforme","ADDON_CATALOGUE":"Afficher tous les addons »","ADDON_CATALOGUE_MORE":"Installer des addons","REPO_ADDED":"Répertoire ajouté","ADDON_REPO_EXIST_ERR":"Cette collection d\'addons existe déjà","ADDON_REPO_ERR":"Une erreur s\'est produite lors de l\'ajout de la collection","ADDON_ADD_ERR":"Une erreur est survenue lors de l\'ajout du répertoire","ERR_ADDON_PROTECTED":"Extension protégé","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Quelque chose n\'a pas fonctionné - l\'authentification a peut-être échoué","ERR_NOT_COLLECTION_URL":"Ce n\'est pas une url de collection","ERR_NOT_ADDON_URL":"Ce n\'est pas une url d\'extension","ERR_DETECTFROMURL":"Impossible de trouver un addon/collection à partir de cette URL","ADDON_DUPLICATE_WARNING":"Attention: addon dupliqué","ADDON_COLLECTION_SET_FAILED":"La synchronisation des addons installés vers votre compte a échoué","SETTINGS_DATA_EXPORT":"Exporter mes données","ADDON_PULL_FAILED":"La synchronisation des addons installés depuis de votre compte a échoué","REFRESH_ON_CLICK":"Cliquez pour réessayer","STILL_IN_THEATER":"Le film est toujours en salle","WATCH_IN_CINEMA":"Regardez-le dans votre cinéma local","IN_THEATER":"Au cinéma","GET_TICKETS":"Acheter des places","UPCOMING_EPISODE":"Épisode à venir","UPCOMING_EPISODE_MESSAGE":"Cet épisode sera diffusé le","MISSING_DATE_EPISODE":"Date d\'épisode manquante","MISSING_DATE_EPISODE_MESSAGE":"Cet épisode n\'a peut-être pas encore été diffusé","CHANNEL_NOT_SCRAPED":"Cette chaîne n\'est pas disponible.
    Revenez dans quelques minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Ajoutez le à votre bibliothèque pour être notifié une fois sorti.","GET_NOTIFIED_WHEN_AVAILABLE":"Vous serez notifié une fois disponible.","WARNING_STREAMING_SERVER":"Attention, serveur de streaming local non trouvé. Le streaming depuis Youtube et BitTorrent ne sera pas disponible.","WARNING_STREAMING_SERVER_DISMISS":"Ignorer","WARNING_STREAMING_SERVER_LATER":"Plus tard","DECODER_WARNING":"Attention : cette vidéo peut ne pas être supportée par votre matériel. Gardez à l\'esprit que la lecture peut être lente.","PLAYER_ERROR":"Oups, Erreur du lecteur","PLAYER_ERROR_LOOKSLIKE":"On dirait que","PLAYER_ORIENTATION":"Orientation du lecteur","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Verrouillé","PLAYER_ORIENTATION_SENSOR_SHORT":"Capteur","PLAYER_ORIENTATION_LANDSCAPE":"Orientation du lecteur verrouillé en paysage","PLAYER_ORIENTATION_SENSOR":"Orientation automatique du lecteur (capteur)","PLAYER_PLAYBACK_SPEED":"Vitesse de lecture","PLAYER_PLAYBACK_ERROR":"Erreur de lecture, veuillez réessayer","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Erreur inconnue","PLAYER_PLAYBACK_ERROR_DEFAULT":"Désolé, cette vidéo ne peut pas être lue par {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Langues des Sous-Titres","PLAYER_SUBTITLES_VARIANTS":"Variantes des Sous-Titres","PLAYER_SUBTITLES_SETTINGS":"Réglages des Sous-Titres","PLAYER_SUBTITLES_DISABLED":"Les sous-titres sont désactivés","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Position verticale","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Lecture","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Vidéo Suivante","PLAYER_MUTE":"Muter","PLAYER_UNMUTE":"Démuter","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"À venir dans","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Ignorer","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Regarder maintenant","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"diffusé à partir de","CASTING_TO":"Transmis à","NETWORK_STATUS":"Statut du réseau","STREAM_SPEED":"Vitesse du stream:","STREAM_BUFFERED":"Mis en cache:","PEERS_INFO":"Informations sur les pairs","PEERS_ACTIVE":"Actif:","PEERS_CONNECTED":"Connecté:","PEERS_WAITING":"En attente:","TRANSCODING_WARNING":"Attention: transcodage vidéo.","STREAM_LOADING":"chargement...","PLAYING_LOCAL":"lecture à partir d\'un fichier local","PLAYING_CACHE":"lecture à partir du cache","WRONG_SUBS":"Mauvais sous-titres ?","ERR_SUBS_LOADING_TITLE":"Erreur de chargement des sous-titres","ERR_SUBS_LOADING":"Échec du chargement des sous-titres: il peut s\'agir d\'un problème avec l\'addon que vous utilisez, ou avec votre connexion réseau.","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Les addons de sous-titres suivants ont échoués","ERR_CASTING_UPDATE_TITLE":"Impossible de mettre à jour les informations sur le périphérique de casting: le serveur de streaming est peut-être hors ligne.","CHOOSE_DEVICE":"Choisissez un appareil sur lequel regarder","NO_CAST_DEVICES":"Aucun appareil de casting n\'est disponible.","NO_SETTINGS":"Aucun réglages disponible.","PHONE_TABLET":"Téléphone / Tablette","SUBTITLES":"Sous-titres","SUBTITLES_CHANGE":"Changer les sous-titres pour ","SUBTITLES_CHANGE_NONE":"Il n\'y a pas d\'autres sous-titres pour cette langue, désolé.","SUBTITLES_CHANGE_ACIVE":"Les sous-titres #{{subtitlesDialog.activeIdx + 1}} sont actuellement activés. Cliquez sur \\"Continue\\" pour activer les sous-titres #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Sinon,","SUBTITLES_ADJUST_DELAY":"vous pouvez ajuster le décalage des sous-titres:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Utilisez les touches G / H pour les ajuster.","SUBTITLES_ADJUST_DELAY_TIP":"ASTUCE: vous pouvez utiliser les touches G / H pendant la lecture pour les régler.","SUBTITLES_DELAY":"Delai des sous-titres:","SUBTITLES_LOADING":"Chargement des sous-titres...","SUBTITLES_UNAVAILABLE":"Uncun sous-titres externes disponibles","SUBTITLES_DISABLED":"Désactivés","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Saison","EPISODE":"Épisode","SPECIAL":"Spécial","SORT":"trier","SORT_BY":"Trier par","FILTER":"filtrer","SORT_TRENDING":"tendances","SORT_RECENT":"récent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"note","SORT_WATCHED":"regardé","SORT_YEAR":"année","SELECT_TYPE":"Sélectionner le type","SELECT_SORT":"Sélectionner le filtre","SELECT_CATALOG":"Sélectionner le catalogue","SELECT_GENRE":"Sélectionner le genre","SORT_LASTWATCHED":"Par dernier regardé","SORT_NAME":"Par nom","SORT_TIMESWATCHED":"Par temps regardé","New for You":"Nouveau pour vous","New Episodes":"Nouveaux épisodes","New Videos":"Nouvelles Vidéos","Recommendations":"Recommandations","LIBRARY_RESUME":"Reprendre","LIBRARY_PLAY":"Lire","LIBRARY_DETAILS":"Détails","LIBRARY_RESUME_DISMISS":"Effacer","LIBRARY_CLEAR_PROGRESS":"Effacer l\'avancée de la lecture","LIBRARY_REMOVE":"Retirer","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Têtes d\'affiches","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Primés aux Oscars","DISCOVER_WARNING_TITLE":"Oups !","DISCOVER_EMPTY_CATALOG":"Cet addon a renvoyé un contenu vide.","DISCOVER_ADULT_WARNING":"Ce contenu n\'est visible que pour les adultes. Avez-vous plus de 18 ans ?","DISCOVER_NOADDON_WARNING":"Attention: aucune extension Stremio active pour ce type. Les fichiers sauvegardés seront montrés, rien ne sera mis à jour.","DISCOVER_LOAD_ERR":"Discover: n\'a pas réussi à charger le catalogue à partir de l\'addon","DISCOVER_ADDON_UNINSTALLED":"Ce contenu n\'est plus disponible, vous avez peut-être désinstallé l\'addon.","UNINSTALL_THIS_ADDON":"Désinstallez cet addon","ERR_ADDON_NOT_INSTALLED":"Cet addon n\'est pas installé. L\'installer maintenant ?","DETAIL_RECEIVE_NOTIF_SERIES":"Recevoir des notifications pour les nouveaux épisodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Recevoir des notifications pour les nouvelles vidéos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Redémarrez maintenant!","UPGRADE":"Nouvelle version disponible ! Mise à jour vers la dernière version de Stremio","RELOAD_UI":"Rafraîchir l\'interface utilisateur","MANUAL_UPDATE_TITLE":"Mettez à jour votre version de Stremio","MANUAL_UPDATE_LINE1":"Vous utilisez une version obsolète de Stremio, ce qui est fortement déconseillé.","MANUAL_UPDATE_LINE2":"Veuillez mettre à jour dès que possible.","BUTTON_UPDATE_LATTER":"Pas maintenant.","BUTTON_UPDATE_NOW":"Mettre à jour","ANONYMOUS_USER":"Utilisateur anonyme","DONT_HAVE_ACC":"Vous n\'avez pas de compte ?","HAVE_ACC":"Vous avez déjà un compte ?","PASSWORD":"Mot de passe","PASSWORD_CONFIRM":"Confirmer le mot de passe","EMAIL":"E-mail","FB_LOGIN":"Continuer avec Facebook","FB_NOTHINGSHARED":"Rien ne sera partagé sans votre permission","FB_NOPOST":"Nous ne posterons rien en votre nom","OR":"ou","I_ACCEPT":"J\'accepte les","I_ACCEPT_BY_CLICKING":"En cliquant sur le bouton ci-dessus, je certifie que j\'accepte les ","TOS":"Conditions d\'utilisation","MUST_ACCEPT_TERMS":"Vous devez accepter les conditions","PASSWORDS_NOMATCH":"Les mots de passe ne correspondent pas","SIGN_UP":"Inscription","SIGN_UP_EMAIL":"S\'inscrire par email","CLICK_TO_SIGN_UP":"Cliquez ici pour vous inscrire.","LOG_IN":"Connexion","LOG_OUT":"Déconnexion","EXIT_FULLSCREEN":"Quitter le mode plein écran","ENTER_FULLSCREEN":"Entrer en mode plein écran","PLAY_URL_MAGNET_LINK":"Lire un URL/lien magnet","HELP_FEEDBACK":"Aide & Commentaires","TERMS_OF_SERVICE":"Conditions d\'utilisation","PRIVACY_POLICY":"Politique de Confidentialité","ABOUT_STREMIO":"À propos de Stremio","USER_PANEL":"Panneau utilisateur","LOGIN_LABEL":"Login","GUEST_LOGIN":"Connexion invité","GUEST_LOGIN_NOTICE":"La connexion en tant qu\'invité n\'est pas recommandée. Se connecter de façon régulière permet à Stremio de synchroniser votre bibliothèque et de recevoir des notifications pour vos séries/chaines favorites. Êtes-vous sûr de vouloir continuer ?","GUEST_LOGIN_NOTICE_2":"La connexion en tant qu\'invité n\'est pas recommandée - vous n\'aurez pas de notifications synchronisées pour votre Bibliothèque ou Tableau, qui sont des fonctionnalités vitales de Stremio. Êtes-vous sûr de vouloir continuer ?","CLICK_HERE":"cliquez ici","WRONG_PASSWORD":"Mauvais mot de passe. Si vous avez oublié votre mot de passe, ","SET_A_PASS":"choisissez-en un","RESET_PASSWORD":"Réinitialiser le mot de passe","FORGOT_PASSWORD":"Mot de passe oublié ?","EMAIL_USED_WITH_FB":"Cet e-mail a été utilisé avec une connexion Facebook.","INVALID_EMAIL":"Veuillez entrer une adresse email valide","INVALID_PASSWORD":"Veuillez entrer un mot de passe valide","CONN_ERR":"Erreur de connexion - Réessayez plus tard.\\n\\nSi le problème persiste, désactivez le pare-feux/anti-virus (particulièrement Bitdefender).","IMPORT_FROM_GUEST":"Importer la bibliothèque à partir de votre compte invité","RECEIVE_UPDATES_EMAIL":"Recevoir des muses à jour par email de la part de Stremio","LOGIN_FAILED":"La connexion à échouée.","SIGNUP_FAILED":"L\'inscription a échoué.","SEARCH_FAILED":"Echec de la recherche","EMAIL_USED":"Cet email est déjà utilisé.","WAITING_FB_LOGIN":"Se connecter avec Facebook ....","EXTERNAL_PLAYER_TITLE":"Lire dans un lecteur externe","EXTERNAL_REMEMBER_PLAYER":"Voulez-vous vous souvenir de votre choix","EXTERNAL_ALWAYS_PLAY":"Oui","EXTERNAL_ONLY_ONCE":"Non","BEST_FIT":"Meilleur ajustement","FIT_SCREEN":"Ajuster à l\'écran","FILL":"Remplir","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Dites-nous ce que vous aimez","INTRO_TASTE_LONG":"Dites-nous ce que vous aimeriez regarder","INTRO_TASTE_PICK":"Choisissez {{interestsRemaining}} centres d\'intérêt","INTRO_TASTE_PICK_MORE":"Choisissez encore {{interestsRemaining}} centres d\'intérêt","INTRO_TASTE_HELP_US":"Aidez-nous à mieux vous connaître.","INTRO_TASTE_CHOOSE_THESE":"Choisis-en quelques-unes :","INTRO_TASTE_CHOOSE_MIN":"Choisissez au moins 3 catégories","INTRO_TASTE_CHOOSE_MIN_ERR":"Vous devez choisir au moins 3 catégories !","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Alimentation & Santé","INTRO_TASTE_BEAUTY_FASHION":"Beauté & Mode","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Éducation","INTRO_TASTE_MUSIC":"Musique","INTRO_TASTE_TRAVEL":"Voyages","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"TV Réalité","INTRO_TASTE_COMEDY":"Comédie","INTRO_TASTE_DIY":"DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinéma","ADDON_NOT_SUPPORTED":"L\'addon sélectionné n\'est pas supporté sur cette plate-forme.","ADDON_DISCLAIMER":"Utiliser des extensions tierces sera toujours sujet à votre responsabilité ainsi qu\'aux lois et juridictions de votre lieu de résidence.","ADDON_ACTIVATE":"Activer cette extension?","ADDON_REPO_ADD":"URL de la collection de l\'addon","ADDON_ADD":"Ajouter","ADD_ADDON":"Ajouter un Addon","ADD_ADDON_DESCRIPTION":"Vous pouvez ajouter un addon via un lien externe, qui apparaîtra dans la rubrique Addons installés.","PASTE_ADDON_URL":"Collez l\'URL de l\'addon","WHATS_NEW":"Nouveautés","BUTTON_CONTINUE":"Continuer","BUTTON_ACTIVATE":"Activer","BUTTON_ACTIVATED":"Activé","BUTTON_CANCEL":"Annuler","BUTTON_SUBMIT":"Valider","BUTTON_DISMISS_ALL":"Tout Effacer","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"Voir tous","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Votre bibliothèque est vide. Découvrez à quel point c\'est utile :) ","HOW_START":"Voilà comment démarrer:","LIB_EMPTY_CAL":"Votre calendrier affiche les séries qui sont dans votre bibliothèque.","HOW_START_CAL":"Voici comment ajouter des séries:","LIB_EMPTY_BOARD":"Le tableau montre les notifications & recommendations liées à votre Bibliothèque.","HOW_START_BOARD_WAIT":"S\'il vous plait, ajoutez quelques séries ou chaînes à votre Bibliothèque et laissez-nous quelques minutes pour procéder :)","HOW_START_BOARD":"Voici comment y ajouter des séries & des films :","IMPORT_FB":"Importez des choses que vous aimez depuis Facebook","IMPORT_TRAKT":"Importez votre médiathèque depuis Trakt.","IMPORT_DISCOVER":"Trouver des choses intéressantes dans Découverte","IMPORT_DISK":"Importez des séries ou films que vous avez dans votre disque dur","PLEASE_CREATE_ACC":"S\'il vous plait créez un compte pour activer la Bibliothèque sync & et le Tableau.","IMPORT_DISCOVER_SIGNUP":"Inscrivez-vous et trouvez des choses intéressantes à partir de DiscoverDécouvrez","IMPORT_DISK_SIGNUP":"Inscrivez-vous et importez les films ou émissions que vous avez sur votre disque Disque local.","LIB_EMPTY_CLOUD":"Bibliothèque Cloud","LIB_EMPTY_CLOUD_DESC":"Bibliothèque cloud personnelle synchronisé sur tous les appareils","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Recevoir des notifications pour les nouveaux épisodes","LIB_EMPTY_PERSONAL":"Personnel","LIB_EMPTY_PERSONAL_DESC":"Obtenir des recommandations personnelles","LIB_EMPTY_CALENDAR_DESC":"Planifiez votre calendrier personnel de visionnage","LIB_EMPTY_ALL":"Inscrivez-vous pour obtenir tout cela :","LIB_EMPTY_BEST":"Inscrivez-vous pour profiter pleinement de Stremio","LIB_EMPTY_OTHER":"Inscrivez-vous pour activer l\'option Calendrier et d\'autres fonctions intéressantes","CALENDAR_ADDED":"Le calendrier Stremio a été ajouté à votre calendrier de bureau par défaut.","CALENDAR_ADDED_MSG":"Si cela ne fonctionne pas, veuillez ajouter manuellement cette URL à votre application de calendrier.","TRAKT_EXPIRED":"L\'authentification à Trakt a expiré, allez dans Paramètres et ré-authentifiez-vous.","TRAKT_REQUIRES_LOGIN":"erreur de Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Vous devez vous connecter","SETTINGS_LABEL":"Réglages","SETTINGS_NAV_GENERAL":"Général","SETTINGS_NAV_PLAYER":"Lecteur vidéo","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Raccourcis","SETTINGS_SHORTCUT_RELOAD_APP":"Rafraichir l\'application","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Ouvrir les réglages","SETTINGS_SHORTCUT_SWITCH_TABS":"Changer d\'onglet","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Parcourir les onglets en avant","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Parcourir les onglets en arrière","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Naviguer entre les menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Aller à la Recherche","SETTINGS_SHORTCUT_EXIT_BACK":"Quitter / Retour","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Afficher le menu de Vitesse de Lecture","SETTINGS_SHORTCUT_MENU_VIDEOS":"Afficher le menu Vidéos","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Basculer le menu des Sous-Titres","SETTINGS_SHORTCUT_MENU_INFO":"Basculer le menu d\'Information","SETTINGS_SHORTCUT_FULLSCREEN":"Basculer en mode plein écran","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Afficher les contrôles","SETTINGS_SHORTCUT_PLAY_PAUSE":"Lecture / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Augmenter le volume","SETTINGS_SHORTCUT_VOLUME_DOWN":"Réduire le volume","SETTINGS_SHORTCUT_SEEK_NEXT":"Avancer la lecture","SETTINGS_SHORTCUT_SEEK_PREV":"Reculer la lecture","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Reculer dans la lecture","SETTINGS_SHORTCUT_SEEK_FORWARD":"Avancer dans la lecture","SETTINGS_SHORTCUT_PLAY_NEXT":"Lancer la vidéo suivante","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Augmenter la taille des sous-titres","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Réduire la taille des sous-titres","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Augmenter le délai des sous-titres","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Réduire le délai des sous-titres","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Afficher la barre latérale","SETTINGS_SHORTCUT_OR":"ou","SETTINGS_SHORTCUT_TO":"à","SETTINGS_SHORTCUT_SPACE":"Esapce","SETTINGS_SHORTCUT_SHIFT":"Maj","SETTINGS_SHORTCUT_ESC":"Échap","SETTINGS_TRAKT_AUTHENTICATE":"Authentifier","SETTINGS_FACEBOOK_IMPORT":"Importer","SETTINGS_CALENDAR_SUBSCRIBE":"S\'abonner","SETTINGS_INTERFACE_LANGUAGE":"Langage de l\'interface","SETTINGS_LAUNCH_STARTUP":"Lancer au démarrage","SETTINGS_VLC_DEFAULT":"Lire avec VLC","SETTINGS_UI_LANGUAGE":"Langue de l\'interface","SETTINGS_FULLSCREEN_EXIT":"Touche Echap pour quitter le plein écran","SETTINGS_GAMEPAD":"Activer le support de la manette de jeu","SETTINGS_CLOSE_WINDOW":"Fermer l\'application lorsque la fenêtre est fermée","SETTINGS_SUBTITLES_LANGUAGE":"Langue des sous-titres par défaut","SETTINGS_SUBTITLES_SIZE":"Taille par défaut des sous-titres","SETTINGS_SUBTITLES_BACKGROUND":"Arrière-plan des sous-titres","SETTINGS_SUBTITLES_COLOR":"Couleur des sous-titres","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Couleur du contour des sous-titres","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Couleur de l\'arrière-plan des sous-titres","SETTINGS_SEEK_KEY":"Touches directionnelles pour naviguer dans le temps","SETTINGS_SEEK_KEY_SHIFT":"Touches directionnelles pour naviguer dans le temps lorsque Maj est maintenue","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Durée du rembobinage et de l\'avance rapide","SETTINGS_BINGE":"Lire automatiquement le prochain épisode","SETTINGS_NEXT_VIDEO":"Afficher une notification pour commencer l\'épisode suivant","SETTINGS_NEXT_VIDEO_TRIGGER":"Afficher la notification du prochain épisode pendant :","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Durée de la popup pour la vidéo suivante","SETTINGS_PLAY_IN_BACKGROUND":"Lire en arrière-plan","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Lecture dans un lecteur externe","SETTINGS_RESIZE":"Redimensionnement automatique la fenêtre avant la lecture","SETTINGS_OVERRIDE_SERVER":"Remplacer l\'URL du serveur de streaming (avancé)","SETTINGS_SERVER_URL":"URL du serveur de streaming: ","SETTINGS_SERVER_AVAILABLE":"Le serveur de streaming est disponible.","SETTINGS_SERVER_UNAVAILABLE":"Le serveur de streaming n\'est pas disponible.","SETTINGS_SERVER_STATUS_ONLINE":"En ligne","SETTINGS_SERVER_STATUS_ERROR":"Erreur","SETTINGS_SERVER_CONFIGURE_TITLE":"Configurer l\'url du serveur de streaming","SETTINGS_SERVER_CONFIGURE_INPUT":"Entrez l\'URL du serveur de streaming","SETTINGS_SERVER_CACHE_SIZE":"Taille du cache","SETTINGS_SERVER_TORRENT_PROFILE":"Profil de torrent","SETTINGS_HTTPS_ENDPOINT":"Point d\'acces au streaming HTTPS:","SETTINGS_USE_BETA":"Toujours utiliser les dernières version bêta","SETTINGS_IMPORT_FB":"Importer depuis Facebook","SETTINGS_IMPORT_DISK":"Importer depuis le disque dur","SETTINGS_IMPORT_TRAKT":"Importer depuis Trakt","SETTINGS_PAUSE_MINIMIZED":"Mettre en pause la lecture lorsque la fenêtre est réduite","SETTINGS_HWDEC":"Décodage accéléré par le matériel","SETTINGS_BACKGROUND":"Lecture en arrière-plan","SETTINGS_SUBSCRIBE_CALENDAR":"Inscrire au calendrier","SETTINGS_REQ_EXPORT":"Demande d\'exportation de données","SETTINGS_ACC_DELETE":"Demander la suppression du compte","SETTINGS_CHANGE_PASSWORD":"Changer de mot de passe","SETTINGS_TOS":"Conditions d\'utilisation","SETTINGS_SUPPORT":"Contacter le support","SETTING_LANGUAGE":"Langue","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Déconnexion de Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scanner le code QR pour ouvrir la télécommande","SETTINGS_DESKTOP_NOTIFICATIONS":"Notifications de bureau","SETTINGS_DATA_SAVER":"Économiseur de données","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"sous-titres par défaut","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Sélection automatique de la piste audio","SETTINGS_DEFAULT_AUDIO_TRACK":"Piste audio par défaut","SETTINGS_ACCOUNT":"compte","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Lancer le lecteur dans une fenêtre séparée (avancé)","SETTINGS_PLAY_IN_EXTERNAL":"Toujours lancer la vidéo dans un lecteur externe","SETTINGS_STORAGE_BUTTON":"Effacer le stockage local","SETTINGS_STORAGE_MODAL_TITLE":"Etes-vous sûr ?","SETTINGS_STORAGE_MODAL_MESSAGE":"Cela effacera le stockage local et vous déconnectera.","SETTINGS_HWDEC_PICKER":"Choisir un paramètre de décodage accéléré par le matériel","SETTINGS_HW_AUTOMATIC":"Automatique","SETTINGS_HW_DISABLED":"Désactivé","SETTINGS_HW_ACCELERATED":"Accélération du décodage","SETTINGS_HW_FULL":"Accélération complète","SETTINGS_HW_LEGACY":"Normal","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Sous-titres Addons","SUBSPICKER_BLACK_BACKGROUND":"Utiliser un fond de couleur noir","SUBSPICKER_VERTICAL_OFFSET":"Décalage vertical","SUBSPICKER_SIZE":"Taille","SUBSPICKER_DELAY":"Retard","SUBSPICKER_EMBEDDED_SUBS":"Sous-titres intégrés","MOBILE_PRIVACY_POLICY":"Politique de confidentialité","MOBILE_CRASH_REPORTING":"Rapport d\'incident","MOBILE_ZOOM_TO_FILL":"Agrandir pour remplir l\'écran","MOBILE_PASSTHROUGH":"Sortie audio numérique (passthrough)","MOBILE_RUN_LOW_BATTERY":"Fonctionne avec une batterie faible","MOBILE_RUN_FOREGROUND":"Exécuter en tant que service de premier plan","MOBILE_PERFORMANCE":"PERFORMANCES ET STABILITÉ","MOBILE_SERVER_ONLINE":"En ligne","MOBILE_SERVER_OFFLINE":"Hors ligne","MOBILE_QR_EXPIRES":"Le code QR expire dans ","MOBILE_LOG_INTO":"Connectez-vous à votre compte Stremio ","MOBILE_SCAN_QR":"Scannez le code QR ci-dessus ou rendez-vous sur ","MOBILE_LINK_ACCOUNT":"Lien du compte","MOBILE_SPEEDPICKER_CANCEL":"Annuler","MOBILE_SPEEDPICKER_LABEL":"Choisir la vitesse de lecture","MOBILE_EMPTY_LIBRARY":"Votre bibliothèque est vide","MOBILE_NO_ADDON_ACTIVE":"Aucun addon Stremio actif pour ce type.","MOBILE_ORGANIZER_WARNING":"L\'application Stremio Organizer offre des fonctionnalités limitées. Pour une liste des flux lisibles et l\'expérience complète de Stremio, utilisez Stremio sur ordinateur.","MOBILE_ADDON_LOADING":"est toujours en cours de chargement","MOBILE_ADDONS_LOADING":"les addons sont toujours en cours de chargement","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configurez votre addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configurer l\'Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"L\'application Stremio Organizer fournit une sélection limitée d\'addons. Pour profiter pleinement de l\'expérience Stremio, utilisez Stremio sur ordinateur.","MOBILE_DISCONNECT":"Déconnecter","MOBILE_LOOKING_FOR_DEVICES":"Recherche d\'appareils...","MOBILE_CAST_TO":"Diffuser sur","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"J\'accepte de recevoir des communications marketing de Stremio","QUIT":"Quitter","CONNECTED":"Connecté","AUTHENTICATE":"S\'authentifier","CACHING":"Mise en cache","SETTINGS_CACHING_DRIVE":"Emplacement du cache","ENABLE_LOCAL_FILES_ADDON":"Activer l\'addon pour les fichiers locaux (nécessite un redémarrage)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Activer les connexions HTTPS à distance","TORRENT_PROFILE":"Profil du client Torrent","DATA_CACHING":"Mise en cache des données","MAGNET_PARSING":"Analyser un lien magnet","January":"Janvier","February":"Février","March":"Mars","April":"Avril","May":"Mai","June":"Juin","July":"Juillet","August":"Août","September":"Septembre","October":"Octobre","November":"Novembre","December":"Décembre","Monday":"Lundi","Tuesday":"Mardi","Wednesday":"Mercredi","Thursday":"Jeudi","Friday":"Vendredi","Saturday":"Samedi","Sunday":"Dimanche","Action":"Action","Comedy":"Comédie","War":"Guerre","Family":"Famille","Animation":"Animation","Adventure":"Aventure","Fantasy":"Fantaisie","Crime":"Crime","Mystery":"Mystère","Romance":"Romance","Drama":"Drame","Horror":"Horreur","Thriller":"Thriller","Sci-Fi":"Science Fiction","Music":"Musique","Biography":"Biographie","Documentary":"Documentaire","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"Actualité","History":"Histoire","Game-Show":"Game-Show","Reality-TV":"Télé Réalité","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Divertissement","Gaming":"Gaming","From TV":"Depuis la TV","Lifestyle":"Lifestyle","Science & Education":"Science & Éducation","Cooking & Health":"Cuisine & Santé","Beauty & Fashion":"Beauté & Mode","Sports":"Sports","News & Politics":"Actualités & Politique","How-to & DIY":"Tutoriels","Tech":"Tech","Automotive":"Auto-Moto","Causes & Non-Profits":"Causes & Humanitaire","Movies":"Films","Uk Live Tv":"TV Live Britannique","Fashion":"Mode","Business News Radio":"Radio Actualité Business","Business Tv":"Business Tv","Cars & Auto":"Voiture & Auto","Comedy Radio":"Radio Comédie","Lifestyle Radio":"Radio Lifestyle","News Tv":"TV Actualité","Food And Wine":"Nourriture et Vin","Latino Tv":"TV Latino","Shopping Tv":"TV Shopping","Religion":"Religion","Kids":"Enfants","Body & Soul":"Corps & Ame","Education":"Éducation","Indian Tv":"TV Indienne","Extreme Sports":"Sports Extrêmes","Middle Eastern Tv":"TV Moyen Orient","Celebrity Tv":"TV Célébrité","Science Tv":"TV Science","Bikini babe":"Bikini","Outdoors":"Extérieur","German Tv":"TV Allemande","French Tv":"TV Française","Italian Tv":"TV Italienne","Gamer Tv":"TV Gamer","Travel":"Voyage","Asian Tv":"TV Asiatique","Entertainment":"Divertissement","News Radio":"Radio Actualité","Music Radio":"Radio Musique","Language Learning":"Apprentissage de Langues","Science Radio":"Radio Science","Tech Radio":"Radio Tech","Science & Technology Vod":"VOD Science & Technologie","new video":"Nouvelle vidéo","new episode":"Nouvel épisode","new movie":"Nouveau film","recommended":"recommander","we recommend":"Nous vous conseillons","offer of the day":"offre du jour","news":"news","music video":"musique vidéo","CTX_SHOW_HOTKEYS":"Afficher les raccourcis","CTX_DISMISS_NOTIF":"Ignorer les notifications","CTX_DISMISS_ALL":"Effacer tout","CTX_SHARE":"Partager","CTX_COPY_SHARE_LINK":"Copier le lien de partage","CTX_COPY_MAGNET_LINK":"Copier le lien magnet","CTX_COPY_STREAM_LINK":"Copier le lien du stream","CTX_DOWNLOAD_VIDEO":"Télécharger cette vidéo","CTX_DOWNLOAD_SUBS":"Télécharger les sous-titres","CTX_VIEW_ON_YOUTUBE":"Regarder sur YouTube","CTX_SHOW":"Regarder","CTX_PLAY":"Lire","CTX_PLAY_IN":"Lire dans","CTX_PLAY_ON":"Lire sur","CTX_WATCH_ON":"Regarder sur","CTX_WATCH":"Regarder","CTX_WATCHED":"Regardé","CTX_WATCH_BEGINNING":"Regarder depuis le début","CTX_WATCH_MOBILE":"Regarder sur un appareil mobile","CTX_REWIND":"Redémarrer","CTX_MARK_WATCHED":"Marquer comme vu","CTX_MARK_NON_WATCHED":"Marquer comme non-vu","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Recevoir les nouvelles notifications","CTX_REMOVE_CACHE":"Supprimer du cache","CTX_REMOVE_CACHE_EP":"Supprimer l\'épisode du cache","CTX_OPEN_CONTAINING":"Ouvrir le fichier cible","CTX_REMOVE":"Retirer de la bibliothèque","CTX_AVAILABLE_OFFLINE":"Disponible hors-ligne","CTX_PAUSED":"Mis en pause","CTX_ALWAYS_ON_TOP":"Toujours en haut","CTX_FULLSCREEN":"Plein écran","CTX_WRONG_SUBS":"Mauvais sous-titres ?","CTX_REPORT_ISSUES":"Rapporter un problème","CTX_COPY":"Copier","CTX_PASTE":"Coller","CTX_CLEAR":"Effacer","CTX_CLEAR_RECENT_SEARCHES":"Effacer les recherches récentes","HELLO_THERE":"Salut","HOPE_YOU_ENJOY":"Nous espérons que vous apprécierez Stremio et que c\'est déjà une de vos applications préférées !","WHO_ARE_WE":"Qui sommes-nous ? L\'équipe derrière ça, deux mecs travaillant très dur dans un seul but : rendre ce logiciel de mieux en mieux.","SUPPORT_US":"Si vous aimez Stremio - aidez-nous !","SPREAD_THE_WORD":"Parlez-en à vos amis, partagez l\'application","MORE_PEOPLE":"Plus de personnes utiliseront Stremio, mieux l\'application sera !","SEND_A_LINK":"ou envoyez un lien vers notre site !","TIP_LOCALFILES":"Astuce : vous pouvez glisser-déposer des fichiers vidéo locaux dans Stremio","ADDON_MY":"Mes Addons","ADDON_COMMUNITY":"Addons Communautaires","ADDON_OFFICIAL":"Addons Officiels","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Rechercher des addons","ADDON_INSTALL":"Installer","ADDON_CONFIGURE":"Configurer","ADDON_UNINSTALL":"Désinstaller","ADDON_UPGRADE":"Mettre à jour","ADDON_INSTALLED":"Installés","ADDON_INSTALLED_MSG":"Addon installé !","ADDON_UPGRADED_MSG":"Addon mis à jour !","ADDON_UNKNOWN":"Inconnu","ADDON_ERR":"Erreur d\'installation de l\'addon!","ADDON_DISCONNECTED":"Déconnecté","ADDON_APP_MISSING":"l\'application pour cette source n\'est pas installée. Voulez-vous l\'installer maintenant ?","ADDON_APP_INSTALL":"Installer maintenant","ADDON_PAGE":"Page des Addons","ADDON_TOP_CONTENT":"Le meilleur de cet Addon","ADDON_PROVIDES":"délivre","ADDON_WATCH":"Regardez des #{types} maintenant !","ADDON_WATCH_FREE":"Regardez des #{types} GRATUITEMENT maintenant !","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Types pris en charge","ADDON_SUPPORTED_CATALOGS":"Catalogues pris en charge","ADDON_PROVIDES_DISCOVER":"Plus de #{types} dans Découverte","ADDON_PROVIDES_STREAMS":"Regarder #{types}","ADDON_PROVIDES_STREAMS_FREE":"Regarder #{types} GRATUITEMENT","ADDON_PROVIDES_SUBTITLES":"Sous-titres pour #{types}","ADDON_CANTDETECT":"Nous n\'avons pas pu détecter une instance Stremio en cours d\'exécution, nous ne pouvions donc pas détecter quels addons vous avez installés.","ERR_NO_META":"Aucune information trouvée à ce sujet ","ERR_GETTING_META":"Erreur lors de la récupération d\'informations à ce sujet.","ERR_CANT_PARSE_MAGNET":"Impossible d\'analyser le magnet","ERR_NO_MAGNET_INFOHASH":"Pas de hachage d\'info valide pour le magnet","ERR_NO_FILE_PATH":"Impossible d\'envoyer une requête sans chemin d\'accès au fichier","ERR_NO_TORRENT":"Aucun torrent retourné","ERR_NO_SUPPORTERD_FILES":"Aucun fichier supporté trouvé","ERR_OPENING_FILES":"Impossible d\'ouvrir les fichiers externes","ERR_INVALID_LINK":"Lien invalide","ERR_REGISTERED_ONLY":"Cette option n\'est disponible que pour les utilisateurs enregistrés seulement.","ERR_CLIPBOARD":"Impossible de lire à partir du presse-papiers","ERR_CLIPBOARD_READ":"Impossible de lire le presse-papiers sur cette plateforme","ERR_CLIPBOARD_GENERIC":"Aucune URL lisible trouvée dans le presse-papiers. Veuillez copier une URL (par exemple un lien magnet) vers une vidéo.","BOARD_CONTINUE_WATCHING":"Continuer de regarder","BOARD_EXPLANATION_RECOMMENDATIONS":"Films sélectionnés spécialement pour vous.
    Ce film est un exemple de recommandation.","BOARD_EXPLANATION_EPISODES":"Les nouveaux épisodes de vos Séries préférées arrivent ici.
    Ajouter les séries que vous suivez à votre bibliothèque.","BOARD_EXPLANATION_VIDEOS":"Les nouveaux épisodes de vos Chaînes préférées arrivent ici.
    Ajouter les chaînes YouTube que vous suivez dans votre bibliothèque.","WEBSITE_SLOGAN_WATCH":"Regarder instantanément","WEBSITE_SLOGAN_ALL":"Toutes les vidéos que vous aimez au même endroit","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Regarder depuis","WEBSITE_DOWNLOAD":"Télécharger maintenant","WEBSITE_DOWNLOAD_FOR":"Télécharger maintenant pour","WEBSITE_IS_DESKTOP":"Stremio est une application de bureau, ouvrez cette page sur votre PC et téléchargez la","WEBSITE_DESKTOP_DEMO_VID":"Démo","WEBSITE_PAGE_HOME":"Accueil","WEBSITE_PAGE_FEATURES":"Fonctionnalités","WEBSITE_PAGE_ADDONS":"Extensions","WEBSITE_PAGE_TECH":"Technologies","WEBSITE_PAGE_CREATE_ADDON":"Créer une extension","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Films","WEBSITE_TYPE_series_PL":"Séries","WEBSITE_TYPE_tv":"TV en live","WEBSITE_TYPE_channel":"Chaînes","WEBSITE_STREMIO_WHAT_IS":"Stremio set une application qui vous aide à organiser et à accéder instantanément à vos vidéos, films, séries TV et chaînes TV préférées","WEBSITE_FEATURES_WATCH":"Regarder immédiatement en HD","WEBSITE_FEATURES_WATCH_DETAIL":"Cliquer pour lancer vos vidéos, films, séries TV et chaînes TV préférées","WEBSITE_FEATURES_SUBS":"Sous-titres automatiques","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio choisit automatiquement les sous-titres pour votre langue.","WEBSITE_FEATURES_SUBS_LABEL":"À vous, chef","WEBSITE_FEATURES_CAST":"Lecture sur TV et appareils mobiles","WEBSITE_FEATURES_CAST_DETAIL":"Envoyer vers une AppleTV, Chromecast, Smart TV (DLNA/UPnP) ou un appareil mobile.","WEBSITE_LIB":"Profitez de votre bibliothèque personnelle, synchronisée sur tous vos appareils","WEBSITE_LIB_COLLECT":"Récupérer depuis Stremio","WEBSITE_LIB_IMPORT":"Importer depuis Facebook","WEBSITE_LIB_LOCAL":"Ajouter depuis votre disque","WEBSITE_BOARD":"Le tableau - Votre étape pour les Notifications et Recommandations","WEBSITE_BOARD_RECOMMEND":"Show TV recommandé","WEBSITE_BOARD_TRENDING":"Film tendance","WEBSITE_BOARD_NEW":"Nouvelle vidéo","WEBSITE_BOARD_EPISODE":"Nouvel Épisode","WEBSITE_BOARD_1":"Envie de regarder quelque chose d\'intéressant? Recevez des recommandations basées sur vos goûts!","WEBSITE_BOARD_2":"Soyez notifié dès qu\'un nouvel épisode de votre show TV ou chaîne youtube favorite sort!","WEBSITE_BOARD_YOUTUBE":"Nouvelles vidéos des chaînes YouTube","WEBSITE_BOARD_EPISODES":"Nouveaux épisodes des séries que vous suivez","WEBSITE_ADDONS":"Extensions de contenu","WEBSITE_TECH_DETAIL":"Nous aimons les nouvelles technologies et les expérimentations!\\nStremio utilise les technologies open source suivantes :","WEBSITE_TECH_WCJS":"WebChimera.js permet à Stremio de lire n\'importe quel format vidéo avec de bonnes performances.","WEBSITE_TECH_WCJS_EXTRA":"Nous sommes des contributeurs principaux du projet.","WEBSITE_TECH_ELECTRON":"Electron fournit une plateforme innovante sur laquelle bâtir Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Nous contribuons au projet.","WEBSITE_TECH_LINVODB":"Une technologie de base de données qui assure une bonne organisation et une mise à disposition partout.","WEBSITE_TECH_LINVODB_EXTRA":"Technologie maison","WEBSITE_CREATE_ADDON":"Créez votre extension","WEBSITE_CREATE_ADDON_DETAIL":"Vous avez un service qui fournit des vidéos? Nous vous aiderons à bénéficier des fonctionnalités de Stremio en faisant votre propre extension.","WEBSITE_CREATE_ADDON_BENEFITS":"Avantages de créer une extension pour Stremio","WEBSITE_P2P_BEAUTY":"La beauté du Streaming En peer to peer","WEBSITE_P2P_1":"Vidéos full HD /4K fiables et accessibles en VoD ou streaming","WEBSITE_P2P_2":"Plateforme de distribution avec une expérience utilisateur optimale","WEBSITE_P2P_3":"Nous vous crééerons une extension sur mesure","WEBSITE_P2P_CONTACT":"Interessé? Nous vous invitons à nous contacter.","WEBSITE_P2P_CONTACT_EXTRA":"Nous serions heureux de vous aider à intégrer votre contenu à Stremio!","WEBSITE_P2P":"De temps en temps, une nouvelle technologie vient changer la donne. Nous avons investi énormément de temps et d\'efforts pour construire un moteur de streaming peer to perr (P2P) fournissant une bonne performance et polyvalence, s\'adaptant à tous les cas de figure.\\nContactez nous pour mettre en place des vidéos en P2P ou streaming avec DRM.","WEBSITE_THOUGHTS":"Des pensées à partager:","WEBSITE_SPREAD":"Passer le mot à propos de Stremio:","WEBSITE_CONTACT":"Si vous voulez nous contatez, utilisez ","WEBSITE_OPENSOURCE":"Pour nos projets open source, rendez-vous sur notre","WEBSITE_BITCOIN":"Faites nous une donation de Bitcoin:","WEBSITE_FAQ":"Questions fréquemment posées","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Conditions d\'utilisation","WEBSITE_LEGAL":"Juridique","WEBSITE_PAGE_ABOUT":"À propos","WEBSITE_PAGE_BECOME_PARTNER":"Devenez partenaire","WEBSITE_ALL_YOU_CAN_WATCH":"La Liberté de Regarder\\nTout ce que Vous Voulez.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Qu\'est-ce que Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio est un hub unique pour l\'agrégation de contenu vidéo. Découvrez, organisez et regardez des vidéos provenant de toutes sortes de sources sur n\'importe quel appareil que vous possédez.","WEBSITE_WHAT_IS_STREMIO_P2":"Films, émissions de télévision, séries, chaînes de télévision en direct ou chaînes web comme YouTube et Twitch.tv - vous trouverez tout cela sur Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio est un centre de médias moderne qui constitue une solution unique pour vos divertissements vidéo. Vous découvrez, regardez et organisez le contenu vidéo à partir d\'addons faciles à installer.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Films, émissions de télévision, télévision en direct ou chaînes web - trouvez tout cela sur Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Profitez sur tous vos appareils","WEBSITE_DEVICES_COLLECT":"Collecter depuis Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importer depuis facebook","WEBSITE_DEVICES_LOCAL":"Ajouter depuis un disque local","WEBSITE_JOIN_THE_PARTY_NOW":"Rejoignez la fête dès maintenant","WEBSITE_DEVICES_ALL":"Facile à utiliser sur tous vos appareils;","WEBSITE_EXTENDABLE_CATALOG":"Catalogue vidéo extensible à l\'infini;","WEBSITE_ORGANIZE_YOUR_MEDIA":"De superbes fonctionnalités pour organiser vos médias;","WEBSITE_AS_SEEN_ON":"As été vu sur","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"A propos de nous","WEBSITE_LINK_TECHNOLOGY":"Technologie","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Téléchargement","WEBSITE_MORE":"Plus","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribuer","WEBSITE_LINK_COMMUNITY":"Communauté","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & Plus","WEBSITE_LINK_HELP":"Centre d\'aide","WEBSITE_LINK_CONTACTS":"Contactez-nous","WEBSITE_LINK_TOS":"Conditions d\'utilisation","WEBSITE_LINK_PRAVACY":"Politique de confidentialité","WEBSITE_SUBSCRIBE":"Souscrire","WEBSITE_NEWSLETTER":"Rejoignez notre newsletter pour des nouvelles incroyables","WEBSITE_PLACEHOLDER_EMAIL":"Votre Email","WEBSITE_COMMUNITY":"Communauté","WEBSITE_LINK_PRAVACY_LEGAL":"Confidentialité et mentions légales","WEBSITE_WHY":"Pourquoi nous le faisons","WEBSITE_WHY_P1":"Chez Stremio, nous venons travailler tous les jours parce que nous voulons résoudre un problème important pour l\'industrie de la vidéo à la demande. Il y a tellement de nouveaux contenus publiés chaque minute qu\'il est pratiquement impossible de s\'y retrouver.","WEBSITE_WHY_P2":"Nous aidons les gens à naviguer dans cet immense monde de divertissement vidéo et à découvrir de nouveaux contenus pour en profiter. Nos applications regroupent des films, des séries, des émissions de TV en direct, des chaînes Web et plus encore. Nous nous engageons à faire en sorte qu\'il soit incroyablement facile pour les utilisateurs de trouver les titres et les diffuseurs qu\'ils aiment.","WEBSITE_WHY_P3":"Vous pouvez utiliser notre service sur n\'importe quel appareil et à tout moment, faisant de Stremio le seul centre de divertissement vidéo dont vous aurez jamais besoin.","WEBSITE_TEAM":"L\'ÉQUIPE","WEBSITE_TEAM_P":"L\'équipe de Stremio est petite mais puissante : à nous dix, nous codons en X langages et partageons notre expertise en développement logiciel, conception d\'interface utilisateur et d\'interface utilisateur, marketing et publicité, ainsi qu\'en business et startups.","WEBSITE_FEATURES":"Fonctionnalités","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Découvrez facilement de nouveaux contenus","WEBSITE_FEATURES_DISCOVER_P":"Découvrez facilement les nouveaux films, émissions de télévision, séries et chaînes à regarder. Parcourez par catégorie, genre, classement, récence, etc. ou tapez simplement un nom pour trouver. Stremio fait de la recherche d\'un nouveau contenu vidéo un jeu d\'enfant.","WEBSITE_FEATURES_ALL_CONTENT":"Tout votre contenu vidéo sur un seul écran","WEBSITE_FEATURES_ALL_CONTENT_P1":"Voyez quels films, séries ou vidéos vous n\'avez pas terminés et continuez à les regarder ; soyez averti des nouveaux épisodes et sorties ; et parcourez les recommandations que vous recevrez en fonction de vos habitudes de visionnage.","WEBSITE_FEATURES_LIBRARY":"Organisez votre vidéothèque","WEBSITE_FEATURES_LIBRARY_P1":"Ajoutez n\'importe quel titre à votre bibliothèque Stremio d\'un simple clic et trouvez votre chemin à travers votre contenu, classé par type, récence ou ordre alphabétique.","WEBSITE_FEATURES_CALENDAR":"Gardez une trace de tout ce que vous regardez","WEBSITE_FEATURES_CALENDAR_P1":"Obtenez une visualisation du calendrier de tous les films et séries que vous ajoutez à votre bibliothèque. Exportez votre calendrier Stremio et synchronisez-le afin de toujours savoir quand un nouvel épisode ou une première est prévu.","WEBSITE_FEATURES_BIG_SCREEN":"Profitez de votre contenu vidéo sur un écran plus grand","WEBSITE_FEATURES_BIG_SCREEN_P1":"Lancez tout ce que vous regardez sur un autre appareil, qu\'il s\'agisse d\'un téléphone, d\'une tablette ou d\'un téléviseur d\'un simple clic.","WEBSITE_FEATURES_SOURCES":"Regarder des vidéos provenant de nombreuses sources différentes","WEBSITE_FEATURES_SOURCES_P":"Installez des modules complémentaires officiels et communautaires pour profiter de vidéos provenant de nombreux fournisseurs différents - le tout dans une seule application élégante et facile à utiliser.","WEBSITE_CREATE_AN_ADDON":"Créer un addon","WEBSITE_FEATURES_SYNC":"Synchronisez votre bibliothèque sur différents appareils et reprenez votre lecture","WEBSITE_FEATURES_SYNC_P1":"Connectez-vous avec votre compte sur tous vos appareils et profitez de la synchronisation de votre bibliothèque, de vos addons, de la lecture et de votre calendrier.","WEBSITE_FEATURES_EXTENDABLE":"Catalogue vidéo extensible via l\'ajout d\'addons","WEBSITE_FEATURES_EXTENDABLE_P1":"Le catalogue d\'addons de Stremio propose un certain nombre d\'addons à installer vous permetant de regarder une variété de contenus vidéo. Cela comprend des films, émissions, télévisions en direct, du sport, des actualités, podcasts, chaînes web, jeux vidéo et bien d\'autres encore.","WEBSITE_FEATURES_AUTO_SUBS":"Sous-titres automatiques","WEBSITE_FEATURES_AUTO_SUBS_P1":"Avec nos addons de sous-titres, vous obtenez automatiquement des options pour votre langue préférée.","WEBSITE_FEATURES_CHROMECAST":"Caster vers un Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Profitez de votre contenu vidéo sur un écran plus grand ou diffusez simplement ce que vous regardez sur un autre appareil.","WEBSITE_FEATURES_KEEP_TRACK":"Gardez une trace de vos émissions TV et de vos chaînes Web préférées","WEBSITE_FEATURES_KEEP_TRACK_P1":"Bénéficiez d\'un calendrier et de notifications pour les nouveaux épisodes de vos séries et chaînes web préférées.","WEBSITE_FEATURES_POWER_USER":"Fonctionnalités pour les utilisateurs avancés","WEBSITE_FEATURES_POWER_USER_P1":"Jouer dans un lecteur externe","WEBSITE_FEATURES_POWER_USER_P2":"Lecture à partir d\'un fichier torrent ou d\'un lien magnet","WEBSITE_FEATURES_POWER_USER_P3":"Importation dans votre bibliothèque à partir de favoris Facebook ou d\'un disque local","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"Tout le contenu vidéo fourni par Stremio provient d\'un système d\'addon - aucun contenu ou fournisseur de contenu n\'a été intégré dans l\'application.","WEBSITE_ADD_ONS_P2":"Il y a deux groupes d\'addons disponibles : les addons officiels et les addons communautaires.","WEBSITE_ADD_ONS_P3":"Les officiels sont développés et hébergés par Stremio, tandis que les addons communautaires sont créés par les membres de notre communauté, qui les hébergent également.","WEBSITE_ADDONS_OFFICIAL":"Addons officiels","WEBSITE_ADDONS_WATCHUB":"Diffusez vos films, séries et émissions préférés de fournisseurs tels que iTunes, Hulu, Amazon et d\'autres services du Royaume-Uni et des États-Unis.","WEBSITE_ADDONS_YOUTUBE":"Regardez vos chaînes YouTube préférées sans publicité et recevez des notifications pour les nouveaux uploads des contributeurs que vous suivez.","WEBSITE_ADDONS_FILMON":"Regardez la télévision en direct, les films et la télévision gratuitement. 600 chaînes de télévision, 45 000 films, film gratuits, documentaires et plus encore","WEBSITE_ADDONS_OPENSUBTITLES":"Sous-titres de films et de télévision en plusieurs langues, des milliers de sous-titres traduits sont mis en ligne chaque jour.","WEBSITE_ADDONS_COMMUNITY":"Addons de la communauté","WEBSITE_ADDONS_FILMON_VOD":"Regarder la vidéo à la demande de Filmon.tv","WEBSITE_ADDONS_TWICH":"Regardez les flux en direct de Twitch.tv - une plateforme de streaming vidéo pour l\'industrie du e-sport","WEBSITE_ADDONS_VODO":"Regardez des films indépendants totalement gratuitement.","WEBSITE_ADDONS_NETFLIX":"Regardez des films et des séries Web de Netflix.","WEBSITE_ADDONS_CREATE":"Créer un addon","WEBSITE_ADDONS_CREATE_P1":"Si vous le souhaitez, vous pouvez développer votre propre addon. De cette façon, vous pouvez vous donner, ainsi qu\'à notre communauté, accès à un nouveau contenu vidéo et atteindre un nouveau public ciblé de millions d\'utilisateurs dans le monde entier.","WEBSITE_ADDONS_START_CREATE":"Pour commencer, visitez la page Stremio Addon SDK:","WEBSITE_DOWNLOADS":"Téléchargements","WEBSITE_DOWNLOADS_P1":"Pour des performances optimales, nous vous recommandons d\'utiliser la dernière version disponible des applications Stremio. Si, pour une raison quelconque, vous souhaitez utiliser une version plus ancienne, vous pouvez la télécharger ici.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio pour Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio pour macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio pour Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio pour Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio pour iOS (version limitée)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribuer","WEBSITE_CONTRIBUTE_P1":"La plateforme Stremio est open source et vous pouvez facilement créer un addon pour du contenu qui n\'est actuellement pas sourcé.","WEBSITE_CONTRIBUTE_WHY":"Pourquoi créer un addon ?","WEBSITE_CONTRIBUTE_WHY_P1":"Atteignez un nouveau public pour votre contenu vidéo","WEBSITE_CONTRIBUTE_WHY_P2":"La base d\'utilisateurs de Stremio s\'accroît rapidement - au cours de la première année du lancement, Stremio avait gagné 1 million d\'utilisateurs à travers le monde, et au cours de la deuxième année d\'existence de la plate-forme, ce nombre est passé à 2,5 millions.","WEBSITE_CONTRIBUTE_WHY_P3":"Avec votre addon, vous pouvez facilement atteindre cet audience et lui distribuer votre contenu vidéo.","WEBSITE_CONTRIBUTE_ALL":"Regardez vos films, vidéos, séries et chaînes préférés en un seul endroit.","WEBSITE_CONTRIBUTE_ALL_P1":"Vous êtes fan d\'un type particulier de contenu qui n\'est pas encore disponible sur Stremio ? Créez un addon et regardez vos vidéos préférées dans l\'un des hubs de divertissement les plus grands et les plus faciles à utiliser sur le marché.","WEBSITE_CONTRIBUTE_ALL_P2":"En plus de cela, vous obtiendrez la gratitude infinie d\'autres membres de la communauté Stremio partageant les mêmes idées.","WEBSITE_CONTRIBUTE_MONETIZE":"Monétisez votre addon et gagnez de l\'argent grâce à lui","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Une fois que vous avez développé un nouvel addon pour Stremio, vous pouvez facilement le monétiser de différentes manières. Si vous envisagez de le faire, n\'hésitez pas à nous contacter à l\'adresse suivante ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - nous nous ferons un plaisir de vous consulter et de vous conseiller sur les options de monétisation des addons.","WEBSITE_CONTRIBUTE_TRANSLATE":"Devenez traducteur bénévole","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Si vous souhaitez profiter des applications Stremio dans différentes langues, vous pouvez rejoindre notre communauté de traducteurs bénévoles. Ils nous aident à ajouter des versions de Stremio dans de nombreuses langues différentes.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Vous avez hâte de commencer ?","WEBSITE_TRANSALTE_STREMIO":"Traduire Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Communautés officielles","WEBSITE_COMMUNITY_OFFICIALS_P1":"Devenez membre de la communauté Stremio en pleine croissance. Suivez-nous sur les réseaux sociaux et n\'hésitez pas à nous dire bonjour - nous adorons avoir des nouvelles de nos fans ! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Communautés non officielles","STREMIO_COMMUNITY_NL":"Stremio Pays-Bas","STREMIO_COMMUNITY_BRASIL":"Stremio Brésil","STREMIO_COMMUNITY_GERMANY":"Stremio Allemagne","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgique","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italie","STREMIO_COMMUNITY_UK":"Stremio Royaume-Uni","STREMIO_COMMUNITY_USA":"Stremio Etats-Unis","STREMIO_COMMUNITY_MEXICO":"Stremio Mexique","STREMIO_COMMUNITY_ADDONS":"Addons Stremio","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partenaires et supporters","WEBSITE_COMMUNITY_GOODIES":"Goodies Stremio","WEBSITE_COMMUNITY_WALLPAPERS":"Fonds d\'écran","WEBSITE_COMMUNITY_ART":"Galerie d\'Art de la Communauté","WEBSITE_LINK_ART":"Galerie d\'Art de la Communauté","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"Si vous avez des questions, commentaires ou suggestions, n\'hésitez pas à nous contacter via le formulaire de contact ci-dessous.","WEBSITE_CONTACT_US_P2":"Gardez à l\'esprit que nous sommes situés en Bulgarie, il peut donc y avoir un retard dans le traitement de votre demande en raison de différences de fuseau horaire.","WEBSITE_CONTACT_US_SUCCESS":"Votre message a bien été envoyé. Nous vous répondrons dans les plus brefs délais.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Veuillez entrer un email valide !","WEBSITE_CONTACT_US_Q_RELATED_TO":"Sur quoi porte votre question ?","WEBSITE_CONTACT_US_Q_OS":"Quel est votre système d\'exploitation ?","WEBSITE_CONTACT_US_PH_EMAIL":"Votre E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ENVOYER","WEBSITE_CONTACT_US_Q_1":"Comment installer ?","WEBSITE_CONTACT_US_Q_2":"Comment désinstaller ?","WEBSITE_CONTACT_US_Q_3":"(HTML) Comment faire des lasagnes ?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technologie","WEBSITE_TECHNOLOGY_P1":"Nous aimons la technologie et la science folle.
    Voici ce qui fait fonctionner Stremio (tout est open-source).","WEBSITE_TECHNOLOGY_P_QT":"Le développement logiciel multiplateforme à son meilleur.","WEBSITE_TECHNOLOGY_P_MPV":"Un lecteur multimédia gratuit, open source et multiplateforme.","WEBSITE_TECHNOLOGY_P_RN":"React Native vous permet de créer des applications mobiles en utilisant uniquement JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework intégré à l\'application pour obtenir du multimédia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm est une plateforme mobile qui remplace SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribuer au projet","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Il y a deux façons de contribuer à Stremio et de nous aider à rendre le produit encore mieux.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Vous pouvez faire don de vos précieuses compétences linguistiques en traduisant la plateforme ...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"ou","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... vous pouvez utiliser vos compétences en développement pour créer des addons communautaires. ","WEBSITE_TRANSLATE_STREMIO":"Traduire Stremio","WEBSITE_404_OH_NO":"Oh, oh ! La page que vous cherchez n\'est pas ici ...","WEBSITE_GO_HOME":"Retourner à l\'accueil","WEBSITE_LINK_OTHER_DOWNLOADS":"Autres téléchargements","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Télécharger Stremio 4 beta maintenant","WEBSITE_GET_FOR_DESKTOP":"Télécharger pour le bureau","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"Mon compte","WEBSITE_MAINPAGE_FAQ_001_H1":"Qu\'est-ce que Stremio ?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio est un centre de médias moderne qui vous donne la liberté de regarder tout ce que vous voulez.","WEBSITE_MAINPAGE_FAQ_002_H1":"Comment cela fonctionne ?","WEBSITE_MAINPAGE_FAQ_002_P1":"Une fois que vous avez installé Stremio sur votre appareil et que vous avez créé un compte, il vous suffit de vous rendre dans le catalogue d\'addons et d\'installer tous les addons que vous voulez, et c\'est parti !","WEBSITE_MAINPAGE_FAQ_002_P2":"Ensuite, vous pouvez vous rendre dans les sections Découvrir ou Tableau pour commencer à explorer le contenu.","WEBSITE_MAINPAGE_FAQ_003_H1":"Que puis-je regarder ici ?","WEBSITE_MAINPAGE_FAQ_003_P1":"Beaucoup : Films, émissions de télévision, chaînes Internet, sport, chaînes de télévision, écouter de podcasts et bien d\'autres choses encore. Grâce à notre système d\'addons, vous pouvez accéder à une grande variété de contenus.","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio est-il open-source ?","WEBSITE_MAINPAGE_FAQ_004_P1":"Oui, vous pouvez consulter les liens suivants: ${1}application de bureau${2} et ${3}Organisation GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio est-il sans danger ?","WEBSITE_MAINPAGE_FAQ_005_P1":"Oui: comme il s\'agit d\'un logiciel open-source, le code est publiquement contrôlable et vous pouvez l\'examiner vous-même.","WEBSITE_MAINPAGE_FAQ_006_H1":"Qu\'en est-il de ma vie privée ?","WEBSITE_MAINPAGE_FAQ_006_P1":"Nous respectons la vie privée des utilisateurs et ne recueillons aucune donnée personnelle en dehors du minimum indispensable pour créer et synchroniser votre compte.","WEBSITE_MAINPAGE_FAQ_006_P2":"Il existe également un ${1}Mode invité${2} à l\'inscription, qui ne nécessite aucune donnée particulière : dans ce mode, aucune requète n\'est effectuée vers notre serveur. Toutefois, cela se fait au détriment de fonctions importantes, telles que la possibilité de synchroniser votre bibliothèque entre les appareils.","WEBSITE_MAINPAGE_FAQ_007_H1":"Puis-je caster sur ma TV ?","WEBSITE_MAINPAGE_FAQ_007_P1":"Oui, nous supportons Chromecast et vous pouvez caster à partir des applications bureau et mobiles (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Combien d\'addons possède Stremio ?","WEBSITE_MAINPAGE_FAQ_008_P1":"Fin 2019, plus de 50 - pour plus d\'informations, consultez notre catalogue d\'addons.","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio peut-il être étendu au-delà de ce qui se trouve dans le catalogue de l\'addon ?","WEBSITE_MAINPAGE_FAQ_009_P1":"Oui, vous devriez faire un tour ici: ${1}PimpMyStremio${2}, ${3}Communautés Reddit${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"Quels sont les appareils pris en charge par Stremio ?","WEBSITE_MAINPAGE_FAQ_010_P1":"Nous avons des applications de bureau pour Windows, Mac et Linux. Pour les mobiles, nous prenons en charge Android et iOS, tout en gardant à l\'esprit que la version iOS est limitée dans ses fonctionnalités (elle ne prend pas en charge la plupart des addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"Il existe de nombreux appareils basés sur Android sur lesquels vous pouvez faire tourner Stremio, comme NVIDIA Shield et Amazon Fire Stick, mais nous ne les supportons pas officiellement.","WEBSITE_MAINPAGE_FAQ_011_H1":"Pouvez-vous ajouter certains contenus à Stremio ?","WEBSITE_MAINPAGE_FAQ_011_P1":"Désolé, nous ne fournissons pas de contenu nous-mêmes, mais plus vous avez installé d\'addons Stremio, plus vous serez en mesure de trouver du contenu.","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio peut-il jouer les liens magnet ?","WEBSITE_MAINPAGE_FAQ_012_P1":"Oui, et il peut également lire des liens HTTP normaux et des fichiers torrents (glisser-déposer).","WEBSITE_MAINPAGE_FAQ_013_H1":"Puis-je télécharger une vidéo et la regarder hors ligne ?","WEBSITE_MAINPAGE_FAQ_013_P1":"La disponibilité hors ligne est une fonctionnalité à venir, mais si vous autorisez Stremio à se mettre en cache sur votre appareil (à partir du panneau de configuration), vous pouvez regarder les vidéos plus tard sans connexion.","WEBSITE_MAINPAGE_FAQ_014_H1":"Rien ne marche, aidez-moi !","WEBSITE_MAINPAGE_FAQ_014_P1":"Êtes-vous sûr d\'avoir installé des addons ? Si oui, vérifiez auprès de notre ${1}centre d\'aide${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Comment Stremio soutient-il ses opérations de développement ?","WEBSITE_MAINPAGE_FAQ_015_P1":"Nous diffusons occasionnellement des publicités non intrusives, mais nous envisageons de passer à un modèle de don.","WEBSITE_MAINPAGE_FAQ_015_P2":"Pour plus de questions, consultez notre ${1}centre d\'aide${2}.","HELP_LEARN_MORE":"Aidez-nous à mieux vous connaître.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Alimentation & Santé","BEAUTY_FASHION":"Beauté & Mode","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & Education","MUSIC":"Musique","TRAVEL":"Voyages","LATE_NIGHT":"Late Night","REALITY":"TV Realité","COMEDY":"Comédie","DIY":"DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continuer","SLOW_LOADING":"CHARGEMENT LENT ?","I_GIVE_UP":"J\'ABANDONNE","LEARN_MORE":"En savoir plus","POOR_SOURCE":"Cette source est difficilement accessible ou votre connexion Internet n\'est pas assez rapide.","PICK_CATEGORIES_ERR":"Vous devez choisir au moins 3 catégories","ADJUST_TIMING":"Ajuster le timing avec ","ADJUST_SIZE":"Ajuster la taille avec ","SEARCH_ANYTHING":"Vous pouvez tout rechercher ...","ALL_CATEGORIES":"Tous","SEARCH_CATEGORIES":"Films, Séries, YouTube & TV","SEARCH_PERSONS":"Acteurs, Réalisateurs et Scénaristes","SEARCH_PROTOCOLS":"HTTP & Liens Magnet","SEARCH_TYPES":"Liens IMDB / TVDB","WATCHED":"Regardé","SHOW_LESS":"Afficher Moins","LAST_SEARCHES":"Dernières recherches","CLEAR_HISTORY":"Effacer l\'historique","CHOOSE_SOME":"CHOISISSEZ-EN CERTAINS:","NO_WEB_REMOTE":"La télécommande Web n\'a pas pu être chargée","STREMIO_OFFLINE":"Stremio est hors-ligne","STREMIO_EXPENSIVE_CONNECTION":"Une connexion réseau coûte cher","USE_DATA":"Utiliser les données","WARNING":"Attention","MORE_INFO":"Plus d\'infos ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Chargement ...","STREMIO_TV_BACK_TO_LANGUAGES":"Retour aux langues","STREMIO_TV_REMOTE":"Télécommande","STREMIO_TV_GO_TO":"Aller à:","STREMIO_TV_OR_SCAN":"ou scanner :","STREMIO_TV_ADDON_INSTRUCTIONS":"Veuillez suivre les instructions afin d\'installer vos addons préférés.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Reprendre le Visionnage","STREMIO_TV_LOADING_BACKGROUND":"Chargement de l\'Arrière-plan","STREMIO_TV_CHECKING_AUTHENTICATION":"Vérification de l\'Authentification","STREMIO_TV_LOADING_BOARD":"Chargement du Tableau","STREMIO_TV_LOGIN_HEADER_LINE_1":"Nous voulons que nos utilisateurs bénéficient de la meilleure expérience personnalisée possible avec notre logiciel.","STREMIO_TV_LOGIN_HEADER_LINE_2":"C\'est pour cette raison que nous vous demandons de bien vouloir créer et/ou vous connecter à votre compte.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Merci de votre compréhension,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"L\'équipe Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Pour utiliser la télécommande Web avec votre Smartphone / Tablette / Bureau:","STREMIO_TV_WIFI_SETUP":"Configuration Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle n\'a pas détecté de connexion Internet.","STREMIO_TV_WIFI_DETAILS_1":"Connectez-vous à :","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Utilisez le mot de passe :","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Ouvrez un navigateur Web avec le lien :","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Utilisez Stremio sur votre téléphone ou votre PC pour installer ou configurer les addons et appuyez sur \\"Synchroniser les Addons\\".","STREMIO_TV_ADDONS_SUBTITLE":"Note: assurez-vous que vous utilisez le même compte Stremio.","STREMIO_TV_ADDONS_SYNC_ADDONS":"Synchroniser les Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Synchronisation des Addons réussie","STREMIO_TV_ADDONS_SYNC_FAILED":"Échec de la synchronisation des Addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Editer l\'URL du serveur","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Entrez l\'URL d\'un serveur de streaming","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Recherche","STREMIO_TV_NAV_HOME":"Accueil","STREMIO_TV_NAV_DISCOVER":"Découvrir","STREMIO_TV_NAV_LIBRARY":"Bibliothèque","STREMIO_TV_NAV_MOVIES":"Films","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Chaînes","STREMIO_TV_NAV_TV":"TV en Direct","STREMIO_TV_NAV_SETTINGS":"Réglages","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Lier un Compte","STREMIO_TV_LOGIN_EXPIRES_IN":"Expire dans","STREMIO_TV_LOGIN_STEP_ONE":"Scannez le code QR ci-dessus ou rendez-vous sur","STREMIO_TV_LOGIN_STEP_TWO":"Connectez-vous à votre compte Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Demander un nouveau lien","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Entrez quelque chose","STREMIO_TV_SEARCH_NO_ADDONS":"Aucun addon n\'a été demandé pour les catalogues !","STREMIO_TV_SEARCH_BUTTON":"Rechercher","STREMIO_TV_SEARCH_KEY_DEL":"Suppr","STREMIO_TV_SEARCH_KEY_SPACE":"Espace","STREMIO_TV_SEARCH_KEY_CLEAR":"Effacer","STREMIO_TV_SEARCH_HISTORY_TITLE":"Historique de recherche","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Vous pouvez rechercher des titres, des acteurs, des chaînes et plus encore...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Effacer l\'historique de recherche","STREMIO_TV_FILTERS_DESCRIPTION":"Choisissez l\'un des filtres ci-dessous","FILTERS":"Filtres","SETTINGS":"Réglages","ACCOUNT":"Compte","LOGOUT":"Déconnexion","THEMES":"Thèmes","PLAYBACK":"Lecture","PLAYBACK_SPEED":"Vitesse de Lecture","AUDIO_TRACKS":"Pistes Audio","VIDEOS":"Videos","SERVER":"Serveur","LINKS":"Liens","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Langue","SIZE":"Taille","DELAY":"Delai","BOLD":"Bold","TEXT_COLOR":"Couleur du Texte","OUTLINE_COLOR":"Couleur de la Bordure","BACKGROUND_COLOR":"Couleur de l\'Arrière-Plan","BACKGROUND_BLUR":"Flouter l\'Arrière-Plan","SEEK_TIME_DURATION":"Durée de la navigation de la lecture","AUTO_PLAY":"Lecture automatique du prochain épisode","PLAY_NOW":"Regarder","MARK_AS_WATCHED":"Marquer comme Regardé","MARK_AS_UNWATCHED":"Marquer comme Non Regardé","REWIND_TO_BEGINNING":"Rembobiner au Début","CONTINUE_WATCHING":"Continuer de Regarder","ALL":"Tous","SECONDS":"secondes","ON":"ON","OFF":"OFF","RELOAD":"Actualiser","EDIT_URL":"Editer l\'URL","NONE":"Aucun","EMBEDDED":"Embarqué","REMOTE_SWITCH_DEVICES":"Changer d\'Appareil","REMOTE_VIDEOS":"Vidéos","REMOTE_ADJUST_TIMING":"Ajuster le chronométrage","REMOTE_ADJUST_SIZE":"Ajuster la taille","REMOTE_COULD_NOT_BE_LOADED":"La télécommande Web n\'a pas pu être chargée","REMOTE_RETRY":"Réessayer","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"Qu\'est-ce que le Stremio ?","FAQ_001_P1":"Stremio est un logiciel de centre multimédia conçu pour le divertissement vidéo avec une facilité d\'utilisation à l\'esprit. Stremio vous permet d\'organiser & regardez votre propre collection de films, séries, chaînes et TV en direct.","FAQ_001_P2":"Stremio collecte le contenu qu\'il vous montre à partir de votre disque local et de notre système d\'addons.","FAQ_001_P3":"Il vous avertira également de la sortie de nouveaux épisodes/vidéos/films qui vous intéressent et vous fournira des recommandations de films.","FAQ_02_H1":"Comment Stremio se compare-t-il à Kodi et Plex ?","FAQ_02_P1":"Nous nous inspirons de ces deux logiciels. Mais nous avons des objectifs différents - Stremio est spécifiquement destiné à la vidéo de divertissement et s\'efforce de devenir la solution grand public pour cela en étant très facile à utiliser.","FAQ_02_P2":"Stremio ne sera jamais aussi personnalisable et riche en fonctionnalités que Kodi et Plex, mais il est nettement plus facile à utiliser. Juste ${1} l\'obtenir et voir ${2} :)","FAQ_03_H1":"Comment Stremio se compare-t-il à Netflix ?","FAQ_03_P1":"Encore une fois, Netflix est l\'une de nos inspirations. Nous nous efforçons d\'obtenir l\'expérience utilisateur de Netflix, ainsi que de nombreux avantages supplémentaires. Mais plus important encore, nous vous donnons la liberté de gérer votre propre bibliothèque et d\'ajouter de nouvelles sources de contenu avec notre système d\'extensions.","FAQ_03_P2":"Cela rend Stremio extensible à l\'infini, donc lorsque vous utilisez Stremio, vous n\'êtes jamais limité au contenu que Netflix décide d\'octroyer via une licence. Par exemple, via Stremio, vous pouvez regarder le contenu de ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo$ {8} et même ${9}Netflix${10}","FAQ_04_H1":"Comment Stremio se compare-t-il à Flipboard ?","FAQ_04_P1":"Nous ne recevons pas souvent cette question, sauf lorsque nous parlons à des start-up :)","FAQ_04_P2":"Stremio est par conception un agrégateur de contenu, ce qui en fait essentiellement Flipboard pour la vidéo. Cela est très évident dans notre section Tableau, qui vous donne des catalogues et des notifications de nouveaux épisodes/nouvelles vidéos en lien avec se que vous suivez, tout comme Flipboard.","FAQ_05_H1":"Comment Stremio se compare-t-il à Popcorn Time ?","FAQ_05_P1":"Stremio et Popcorn Time sont similaires dans l\'interface utilisateur, car il n\'y a pas beaucoup de façons de faire des catalogues de divertissement vidéo correctement :)","FAQ_05_P2":"Mais alors que Popcorn Time se concentre sur la diffusion de torrents à partir de sources spécifiques, Stremio est illimité et est simplement un agrégateur de contenu - il n\'est pas verrouillé dans une source de contenu spécifique.","FAQ_05_P3":"De plus, nous ne fournissons aucun addon torrent par défaut, donc Stremio ne couvre pas le cas d\'utilisation de Popcorn Time avec des fonctionnalités officielles.","FAQ_05_P4":"Une autre différence notable est que Popcorn Time est entièrement open source, tandis que Stremio est ${1} partiellement open source${2}.","FAQ_06_H1":"Allez-vous ajouter ce film/série ?","FAQ_06_P1":"Non désolé :(","FAQ_06_P2":"Comme mentionné dans la plupart des autres questions, Stremio ne fournit aucun contenu par lui-même - tout est ajouté via le système d\'addons. Si vous avez une demande de contenu, vous pouvez utiliser le bouton “Signaler” dans le lecteur, qui enverra un e-mail à l\'auteur de l\'addon que vous utilisez actuellement.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Allez-vous créer un addon pour X ?","FAQ_08_P1":"C\'est tout à fait possible.","FAQ_08_P2":"Si vous avez une idée pour un addon, écrivez-nous à ${1}office@stremio.com${2}, mais assurez-vous que votre idée d\'addon n\'enfreindra aucun droit d\'auteur ou condition d\'utilisation.","FAQ_08_P3":"Pour le moment, les prochaines choses sur notre feuille de route sont des addons pour FandangoNOW, la vidéo à la demande Filmon.tv et Crunchyroll.","FAQ_09_H1":"Est-ce que Stremio utilise BitTorrent ?","FAQ_09_P1":"Oui, Stremio prend en charge BitTorrent comme protocole de streaming. Vous pouvez l\'utiliser soit avec un addon torrent, soit en glissant-déposant un fichier .torrent dans Stremio, soit en collant un lien magnet dans la barre de recherche.","FAQ_09_P2":"Veuillez noter que le seul addon officiel utilisant BitTorrent est ${1}Vodo${2}, qui fournit du contenu indépendant, tous autorisés à être distribués avec BitTorrent.","FAQ_09_P3":"Nous ne prenons pas en charge l\'utilisation d\'addons tierces susceptibles de permettre une violation du droit d\'auteur.","FAQ_10_H1":"Que puis-je regarder dans Stremio avec les addons officielles ?","FAQ_10_P1":"Par défaut, vous pouvez regarder du contenu Filmon.tv, YouTube et Vodo dans Stremio lui-même, avec son lecteur intégré. De plus, nous avons un addon pour Twitch.tv et quelques autres.","FAQ_10_P2":"Cette combinaison offre une sélection de :","FAQ_10_L1":"Chaînes de télévision populaires, fournies par Filmon.tv - par exemple E4, BBC, Bollyworld TV","FAQ_10_L2":"Tout sur YouTube - par exemple BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Films indépendants avec Vodo","FAQ_10_L4":"Diffusions de jeux en ligne avec Twitch.tv","FAQ_10_P3":"De plus, il existe de nombreuses sources de contenu fournies avec Guidebox et les addons Netflix, qui ne sont pas lues entièrement dans Stremio, mais redirigeraient vers le service donné. Par exemple, l\'addon Guidebox vous donnerait une sélection de films que vous pouvez diffuser gratuitement aux États-Unis, à partir de services tels que TubiTV et Crackle.","FAQ_11_H1":"Stremio ne s\'installe pas, que dois-je faire ?","FAQ_11_P1":"Si vous utilisez Windows, essayez ${1}cet programme d\'installation alternatif${2}.","FAQ_11_P2":"Si vous utilisez Mac OS X, sachez que nous ne prenons en charge aucune version antérieure à OS X Mavericks (10.9).","FAQ_11_P3":"Si vous êtes sous Linux, sachez que nous ne prenons en charge que Linux 64 bits (x64) pour le moment.","FAQ_11_P4":"Si vous ne parvenez toujours pas à résoudre votre problème, veuillez nous écrire sur notre ${1}groupe Facebook${2}.","FAQ_12_H1":"Pourquoi mon antivirus se plaint-il ? Est-ce que Stremio est sûr ?","FAQ_12_P1":"Nous vous assurons que Stremio est $ à {1}100% sûr${2}.","FAQ_12_P2":"Votre antivirus se plaint parce que nous incluons de la publicité dans notre programme d\'installation, que certains programmes antivirus reconnaissent comme un logiciel publicitaire.","FAQ_12_P3":"Si vous n\'êtes toujours pas sûr, vous pouvez essayer notre ${1}programme d\'installation alternatif${2}.","FAQ_13_H1":"Comment créer un addon ?","FAQ_13_P1":"Pour commencer, nous vous recommandons de consulter notre ${1}module système d\'addons${2} sur GitHub.","FAQ_13_P2":"Ensuite, vous pouvez suivre le ${1}tutoriel Hello World${2}.","FAQ_13_P3":"Si vous n\'avez aucune compétence en programmation, veuillez publier votre idée sur ${1}la communauté Reddit${2} et contactez-nous avec votre idée d\'extension sur ${3}office@stremio.com${4}.","FAQ_14_H1":"Comment les addons sont-ils publiés ?","FAQ_14_P1":"Lorsque vous créez un addon et un hôte, et que vous placez un champ endpoint dans votre répertoire, qui pointe vers une adresse d\'addon fonctionnelle, l\'addon se publiera automatiquement dans notre ${1}catalogue d\'addons${2} .","FAQ_14_P2":"Cela se produit parce que la partie serveur du module stremio-addons fait automatiquement un appel à notre API pour annoncer l\'addon. Lorsque notre API validera votre endpoint comme un addon valide, il commencera à apparaître dans le catalogue.","FAQ_15_H1":"Puis-je exécuter Stremio dans mon navigateur ?","FAQ_15_P1":"Pas pour le moment, mais ça s\'en vient !","FAQ_15_P2":"Si vous êtes curieux de voir une version Alpha, vous pouvez le voir ici : ${1}alpha4.strem.io${2}. Gardez à l\'esprit que le streaming est désactivé sur cette version alpha. Nous prenons en charge Chrome, Firefox, Opera et Edge.","FAQ_16_H1":"La diffusion sur la télévision ne fonctionne pas/les sous-titres ne fonctionnent pas","FAQ_16_P1":"La diffusion sur téléviseur utilise la technologie DLNA qui varie entre les différentes marques et modèles de téléviseurs. Pour cette raison, nous n\'avons pas la capacité de la tester dans tous les cas, il est donc loin d\'être parfait. Malgré cela, nous travaillons constamment à son amélioration, mais nous ne pouvons pas vous donner une estimation du moment où DLNA commencera à fonctionner correctement sur votre téléviseur.","FAQ_16_P2":"Si vous ne voyez même pas votre téléviseur dans le menu de diffusion, essayez de désactiver votre connexion réseau et de la réactiver (sous Windows, cliquez avec le bouton droit sur le réseau et utilisez Activer/Désactiver), ainsi que de redémarrer votre routeur, votre téléviseur et votre PC..","FAQ_16_P3":"Si vous rencontrez toujours des problèmes, vous pouvez nous aider en envoyant des informations sur la marque et le modèle de votre téléviseur à l\'adresse ${1}office@stremio.com${2}.","FAQ_16_P4":"En attendant, nous vous recommandons Chromecast, que nous supportons très bien, ou simplement brancher votre téléviseur à votre PC avec un câble HDMI.","FAQ_17_H1":"Stremio se fige et/ou plante, que puis-je faire ?","FAQ_17_P1":"Tout d\'abord, si vous utilisez Windows 7 avec l\'antivirus AVG : nous avons un problème avec cette combinaison. Le problème est dans AVG lui-même, et il n\'y a aucun moyen raisonnable de le résoudre de notre côté. Malheureusement, les exceptions ou la désactivation de l\'antivirus ne fonctionneront pas. La seule solution est de remplacer AVG par autre chose.","FAQ_17_P2":"Si ce n\'est pas le problème, mais que vous utilisez toujours Windows, veuillez mettre à jour le dernier service pack et mettre à jour/réinstaller vos pilotes GPU, puis réessayer.","FAQ_17_P3":"Si votre problème n\'est toujours pas résolu, ou si vous utilisez un Mac ou Linux, veuillez nous écrire pour nous signaler les détails exacts du problème sur ${1}notre groupe Facebook${2}.","FAQ_18_H1":"Comment créer un addon ?","FAQ_18_P1":"Pour commencer, nous vous recommandons de consulter notre ${1}système de addons${2} sur GitHub.","FAQ_18_P2":"Ensuite, vous pouvez suivre le ${1}tutoriel Hello World${2}.","FAQ_18_P3":"Si vous n\'avez aucune compétence en programmation, veuillez publier votre idée sur ${1}la communauté Reddit${2} et contactez-nous avec votre idée d\'extension sur ${3}office@stremio.com${4}.","FAQ_19_H1":"Pourquoi Stremio prend-il de l\'espace disque ?","FAQ_19_P1":"Stremio dispose d\'un cache local pour conserver temporairement les fichiers vidéo que vous diffusez.","FAQ_19_P2":"Cela présente deux avantages : premièrement, cela permet à Stremio de pré-charger en mémoire tampon la vidéo à l\'avance afin d\'assurer un streaming plus fluide. Deuxièmement, il conserve les vidéos dans le cache local afin que vous puissiez continuer à les regarder hors ligne.","FAQ_19_P3":"La quantité conservée par Stremio dépend du paramètre Cache dans le panneau Paramètres. Stremio peut conserver jusqu\'à la quantité définie (par exemple 2 Go) sur votre disque, à moins que la vidéo actuellement diffusée ne soit plus grande que cela, auquel cas il doit allouer suffisamment de stockage pour la conserver jusqu\'à ce que vous la regardiez.","FAQ_20_H1":"Où est le dossier contenant les caches ?","FAQ_20_P1":"Sous Windows, c\'est stremio-cache dans le lecteur que vous avez choisi dans les paramètres (ex. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"Sur Mac c\'est \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"Sur Linux, c\'est \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"J\'obtiens l\'erreur \\"Le serveur de streaming est introuvable\\", que puis-je faire ?","FAQ_21_P1":"Si vous obtenez cette erreur, cela signifie l\'une des rares choses suivantes :","FAQ_21_P2":"1) Vous essayez d\'utiliser un module complémentaire soutenu par la source YouTube/BitTorrent, via notre ${1}version Web${2}. Dans ce cas, vous devez installer notre version de bureau à partir de ${3}notre site Web${4}.","FAQ_21_P3":"2) Quelque chose ne va pas avec votre installation Stremio. Dans ce cas, essayez de réinstaller notre dernière version de bureau à partir du ${1}site Web${2}. Si cela ne résout pas le problème, essayez de désactiver les programmes antivirus et les pare-feu, redémarrez votre PC et réessayez. Si cela ne fonctionne pas non plus, écrivez-nous à notre ${3}notre groupe Facebook${4}.","FAQ_22_H1":"Je ne peux pas voir/utiliser la plupart des addons sur iOS","FAQ_22_P1":"En raison de restrictions dans les termes et conditions de l\'App Store d\'Apple, nous avons limité l\'application iOS uniquement à un ensemble particulier d\'addons.","FAQ_22_P2":"Mais rassurez-vous - il y aura plus d\'addons pour iOS à l\'avenir, et nous pouvons également ajouter une intégration qui vous permettra d\'utiliser tous les addons Stremio grâce à la connexion de l\'application iOS au serveur de streaming Stremio."}')},1525:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"סרט","TYPE_series":"סדרה","TYPE_tv":"ערוץ טלויזיה","TYPE_channel":"ערוץ","TYPE_other":"אחר","TYPE_movie_PL":"סרטים","TYPE_series_PL":"סדרות","TYPE_tv_PL":"ערוצי טלויזיה","TYPE_channel_PL":"ערוצים","TYPE_other_PL":"אחרים","TYPE_ALL":"All","VIDEO":"וידאו","BACK":"חזור","MORE":"עוד","DONE":"סיום","COPY":"העתקה","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"גלה","Board":"לוח","Library":"ספרייה","My Library":"הספרייה שלי","Calendar":"לוח שנה","NOTIFICATION_ONLINE":"הנך כרגע מחובר","NOTIFICATION_OFFLINE":"הנך כרגע מנותק","INTERNET_CONNECTION":"חיבור רשת","STORAGE_FULL_TITLE":"אזהרה: כונן האחסון מלא!","STORAGE_FULL_TEXT":"Stremio לא תוכל לשמור את ההגדרות שלך, אפשרויות או פרטי ההתחברות. נא לשקול הסרה והתקנה מחדש של Stremio.","SEARCH":"חיפוש","SEARCH_NO_RESULTS":"לא נמצאו תוצאות","SEARCH_EXPLANATION_CONTENT":"YouTube-חפש סרטים, סדרות ועורצי טלויזיה ו","SEARCH_EXPLANATION_PEOPLE":"חפש שחקנים, בימאים ותסריטאים","SEARCH_PASTE_LINKS":"הדבקת קישורים ישירים ומגנט","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"הוסף לספרייה","REMOVE_FROM_LIB":"הסר מהספרייה","ADDED_TO_LIB":"נוסף לספרייה","REMOVED_FROM_LIB":"הוסר מהספרייה","TRAILER":"קדימון","WATCH_TRAILER":"צפייה בקדימון","WATCH_NOW":"צפה כעת","SHOW":"הצג","SHOW_MOVIE":"הצגת סרט","WATCH_RANDOM":"צפייה אקראית","IMDB_RATING":"דירוג IMDb","YEAR":"שנה","DIRECTOR":"במאי","WRITER":"כותב","LEAD_ACTORS":"שחקנים ראשיים","CAST":"משתתפים","CREW":"צוות","SHOW_MORE_CAST":"הצג יותר","AIRED":"תאריך שידור","SEASONS":"עונות","GENRE":"סוגה","CATALOG":"קטלוג","SUMMARY":"תקציר","SHOW_MORE":"להציג יותר","SIMILAR":"דומה","UPCOMING":"בקרוב","ENDED":"הסתיים","DURATION":"אורך","FEATURED":"מומלצים","METADATA":"מידע","CATEGORY":"קטגוריה","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"חפש וידאו","SEARCH_PLACEHOLDER":"חיפוש או שימוש בקישור מגנט","ADDON":"תוסף","ADDONS":"תוספים","OFFICIAL":"רשמי","ADDONS_OFFICIAL":"תוספי סטרימיו רשמיים","ADDONS_POPULAR":"פופולרי באזור שלך","ADDON_FREE":"חינם","ADDON_PEERED":"משותף","ADDON_SUBSCRIPTION":"הרשמה","ADDON_STREAM_GEORESTRICTED":"לא זמין באזורך","ADDON_STREAM_OFFLINECACHE":"מטמון לא מקוון","ADDON_STREAM_LOCALFILE":"קובץ מקומי","SHARE_ADDON":"שתף את ההרחבות","AVAILABLE_STREAMS":"מקורות זמינים","NO_STREAM":"לא נמצאו מקורות","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"לעוד אפשרויות הזרמה, אנא התקינו תוספים נוספים","STREAM_NOT_SUPPORTED":"ההזרמה שנבחרה אינה נתמכת בפלטפורמה זו.","ADDON_CATALOGUE":"כל התוספים »","ADDON_CATALOGUE_MORE":"עוד תוספים »","REPO_ADDED":"מקור נוסף","ADDON_REPO_EXIST_ERR":"מקור תוספים זה כבר קיים","ADDON_REPO_ERR":"ארעה שגיאה בזמן הוספת מקור","ADDON_ADD_ERR":"ארעה שגיאה זמן הוספת תוסף","ERR_ADDON_PROTECTED":"תוסף מוגן","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"משהו השתבש - התחברות נכשלה","ERR_NOT_COLLECTION_URL":"לא קישור לאוסף","ERR_NOT_ADDON_URL":"לא כתובת תוסף","ERR_DETECTFROMURL":"אין אפשרות לזהות בקישור","ADDON_DUPLICATE_WARNING":"אזהרה: כפילות תוסף","ADDON_COLLECTION_SET_FAILED":"אוסף תוספים נכשל","SETTINGS_DATA_EXPORT":"ייצוא מידע","ADDON_PULL_FAILED":"משיכת התוסף נכשל","REFRESH_ON_CLICK":"נא ללחוץ כאן כדי לנסות שוב","STILL_IN_THEATER":"הסרט עדיין בקולנוע","WATCH_IN_CINEMA":"צפה בו בקולנוע","IN_THEATER":"בקולנוע","GET_TICKETS":"קבל כרטיסים","UPCOMING_EPISODE":"הפרק הבא","UPCOMING_EPISODE_MESSAGE":"פרק זה ישודר בתאריך","MISSING_DATE_EPISODE":"תאריך הפרק חסר","MISSING_DATE_EPISODE_MESSAGE":"פרק זה כנראה טרם שודר","CHANNEL_NOT_SCRAPED":"ערוץ זה עדיין לא מוכן.
    אנא חזור בעוד כמה דקות.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"הוסף לסיפריה וקבל התרעה מתי שיהיה מוכן.","GET_NOTIFIED_WHEN_AVAILABLE":"אתה תקבל התרעה שהוא יהיה מוכן.","WARNING_STREAMING_SERVER":"אזהרה: שרת שידור מקומי לא נמצא. שידור מ-YouTube ומ-BitTorrent אינו אפשרי.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"אזהרה: וידאו זה אינו נתמך עם החומרה שיש ברשותך. שימו לב, ההפעלה עשויה להיות איטית.","PLAYER_ERROR":"אופס, שגיאת נגן","PLAYER_ERROR_LOOKSLIKE":"נראה כי","PLAYER_ORIENTATION":"כיוון הנגן","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"נעול","PLAYER_ORIENTATION_SENSOR_SHORT":"חיישן","PLAYER_ORIENTATION_LANDSCAPE":"כיוון הנגן נעול לתצוגה רחבה","PLAYER_ORIENTATION_SENSOR":"כיוון הנגן אוטומטי (חיישן)","PLAYER_PLAYBACK_SPEED":"מהירות ניגון","PLAYER_PLAYBACK_ERROR":"תקלה במהירות ניגון, נא לנסות שוב","PLAYER_PLAYBACK_ERROR_UNKNOWN":"שגיאה לא ידועה","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"חי","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"הסתרה","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"צפייה כעת","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"מזרים מ","CASTING_TO":"משדר ל","NETWORK_STATUS":"מצב הרשת","STREAM_SPEED":"מהירות זרימה:","STREAM_BUFFERED":"נאגר:","PEERS_INFO":"פרטי חיבורים","PEERS_ACTIVE":"פעילים:","PEERS_CONNECTED":"מחוברים:","PEERS_WAITING":"ממתינים:","TRANSCODING_WARNING":"אזהרה: מקודד וידאו.","STREAM_LOADING":"טוען...","PLAYING_LOCAL":"מנגן מקובץ מקומי","PLAYING_CACHE":"מנגן ממטמון","WRONG_SUBS":"כתוביות שגויות?","ERR_SUBS_LOADING_TITLE":"שגיאה בטעינת כתוביות","ERR_SUBS_LOADING":"טעינת כתוביות נכשלה: זאת יכולה להיות בעיה של תוסף, או חיבור לאינטרנט","WARN_FOLLOWING_SUB_ADDONS_FAILED":"תוספי הכתוביות הבאים כשלו","ERR_CASTING_UPDATE_TITLE":"לא ניתן לעדכן מידע של מכשיר המשודר: שרת שידור ככל הנראה כבוי","CHOOSE_DEVICE":"בחר מכשיר לצפות בו","NO_CAST_DEVICES":"אין מכירים להזרמה.","NO_SETTINGS":"אין הגדרות זמינות.","PHONE_TABLET":"סלולארי / טאבלט","SUBTITLES":"כתוביות","SUBTITLES_CHANGE":"שנה כתוביות עבור","SUBTITLES_CHANGE_NONE":"לא קיימים כתוביות אחרות לשפה זו, מתנצלים.","SUBTITLES_CHANGE_ACIVE":"כרגע כתוביות #{{subtitlesDialog.activeIdx + 1}} מופעלות. לחץ \\"המשך\\" להפעלת הכתוביות #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"לחילופין,","SUBTITLES_ADJUST_DELAY":"שנה השהיית כתוביות:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"או להשתמש במקשים G / H בזמן ניגון לשינוי.","SUBTITLES_ADJUST_DELAY_TIP":"טיפ: באפשרותך להשתמש במקשים G / H בזמן ניגון לשינוי.","SUBTITLES_DELAY":"השהיית כתוביות:","SUBTITLES_LOADING":"טוען כתוביות...","SUBTITLES_UNAVAILABLE":"אין כתוביות חיצוניות זמינות","SUBTITLES_DISABLED":"מבוטל","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"עונה","EPISODE":"פרק","SPECIAL":"Special","SORT":"מיון","SORT_BY":"מיון לפי","FILTER":"סינון","SORT_TRENDING":"פופולרי","SORT_RECENT":"חדש","SORT_ALPHABET":"א-ת","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"דירוג","SORT_WATCHED":"נצפה","SORT_YEAR":"שנה","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"חדש בשבילך","New Episodes":"פרקים חדשים","New Videos":"סרטים חדשים","Recommendations":"המלצות","LIBRARY_RESUME":"המשך","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"פרטים","LIBRARY_RESUME_DISMISS":"המשך","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"מומלץ","DISCOVER_TOP":"מומלץ","DISCOVER_OSCAR":"זוכי אוסקר","DISCOVER_WARNING_TITLE":"אבוי!","DISCOVER_EMPTY_CATALOG":"תוסף זה החזיר תוכן ריק.","DISCOVER_ADULT_WARNING":"תוכן זה מיועד למבוגרים. האם גילך הוא 18 ומעלה?","DISCOVER_NOADDON_WARNING":"אזהרה: אין תוסף סטרימיו פעיל עבור סוג זה. מציג פריטים שמורים, כלום לא ישמר כאן.","DISCOVER_LOAD_ERR":"גילוי: טעינת קטלוג נכשלה","DISCOVER_ADDON_UNINSTALLED":"תוכן זה אינו זמין יותר, ייתכן שהתוסף הוסר.","UNINSTALL_THIS_ADDON":"הסרת תוסף זה","ERR_ADDON_NOT_INSTALLED":"תוסף זה אינו מותקן. האם להתקין אותו כעת?","DETAIL_RECEIVE_NOTIF_SERIES":"קבלת התראות עבור פרקים חדשים","DETAIL_RECEIVE_NOTIF_VIDEOS":"קבלת התראות עבור סרטים חדשים","SIDEBAR_SHOW_STREAMS":"הצגת זרימות","RELAUNCH":"הפעל מחדש כעת!","UPGRADE":"עדכן לגרסה האחרונה של סטרימיו","RELOAD_UI":"טעינה מחדש של ממשק המשתמש","MANUAL_UPDATE_TITLE":"עדכון גרסת Stremio","MANUAL_UPDATE_LINE1":"גרסה זו של Stremio אינה עדכנית והשימוש בה אינו מומלץ.","MANUAL_UPDATE_LINE2":"נא לעדכן בהקדם האפשרי.","BUTTON_UPDATE_LATTER":"לא כעת","BUTTON_UPDATE_NOW":"עדכון","ANONYMOUS_USER":"משתמש אנונימי","DONT_HAVE_ACC":"אין לך חשבון?","HAVE_ACC":"כבר יש לך חשבון?","PASSWORD":"סיסמה","PASSWORD_CONFIRM":"אישור סיסמה","EMAIL":"דואר אלקטרוני","FB_LOGIN":"התחבר באמצעות פייסבוק","FB_NOTHINGSHARED":"שום דבר לא ישותף ללא רשותך","FB_NOPOST":"לא נשלח על שמך שום דבר","OR":"או","I_ACCEPT":"אני מסכים","I_ACCEPT_BY_CLICKING":"על ידי לחיצה למעלה, אני מאשר את","TOS":"תנאי המשימוש","MUST_ACCEPT_TERMS":"חובה לאשר תנאי שימוש","PASSWORDS_NOMATCH":"סיסמאות לא תואמות","SIGN_UP":"הרשמה","SIGN_UP_EMAIL":"הרשמה עם כתובת מייל","CLICK_TO_SIGN_UP":"לחץ כאן להרשמה.","LOG_IN":"התחברות","LOG_OUT":"התנתקות","EXIT_FULLSCREEN":"יציאה ממצב מסך מלא","ENTER_FULLSCREEN":"כניסה למצב מסך מלא","PLAY_URL_MAGNET_LINK":"ניגון קישור URL/Magnet","HELP_FEEDBACK":"עזרה ומשוב","TERMS_OF_SERVICE":"תנאי שימוש","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"אודות Stremio","USER_PANEL":"לוח בקרת משתמש","LOGIN_LABEL":"Login","GUEST_LOGIN":"התחברות כאורח","GUEST_LOGIN_NOTICE":"התחברות כאורח אינה מומלצת. התחברות רגילה מאפשרת לStremio לסנכרן את הספריות שלך, לקבל התראות על סדרות ווידאו האהובים עליך. האם אתה בטוח שתרצה להמשיך?","GUEST_LOGIN_NOTICE_2":"התחברות כאורח אינה מומלצת - לא יסונכרנו התראות בספריה או הלוח שלך, שאלו תכונות של Stremio. האם אתה בטוח שברצונך להמשיך?","CLICK_HERE":"לחץ כאן","WRONG_PASSWORD":"סיסמה שגויה, במקרה ששכחת את הסיסמה,","SET_A_PASS":"קבע סיסמה","RESET_PASSWORD":"איפוס סיסמה","FORGOT_PASSWORD":"שכחת סיסמה?","EMAIL_USED_WITH_FB":"כתובת דואר אלקטרוני זה שומש בחיבור בעזרת פייסבוק.","INVALID_EMAIL":"נא לכתוב כתובת מייל תקינה","INVALID_PASSWORD":"נא לכתוב סיסמה תקינה","CONN_ERR":"בעיית התחברות - אנא נסו מאוחר יותר.\\n\\nאם הבעיה ממשיכה, נטרלו את חומת האש/אנטי וירוס שלכם (במיוחד Bitdefender).","IMPORT_FROM_GUEST":"ייבוא ספריה מחשבון האורח שלך","RECEIVE_UPDATES_EMAIL":"-קבל עדכונים לדואר האלקטרוני מStremio","LOGIN_FAILED":"התחברות כשלה.","SIGNUP_FAILED":"הרשמה כשלה.","SEARCH_FAILED":"חיפוש כשל","EMAIL_USED":"כתובת מייל זו כבר בשימוש.","WAITING_FB_LOGIN":"מתחבר עם פייסבוק...","EXTERNAL_PLAYER_TITLE":"שימוש בנגן חיצוני","EXTERNAL_REMEMBER_PLAYER":"האם לזכור בחירה זו","EXTERNAL_ALWAYS_PLAY":"כן","EXTERNAL_ONLY_ONCE":"לא","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"ספרו לנו מה אתם אוהבים","INTRO_TASTE_LONG":"תספרו לנו במה תרצו לצפות","INTRO_TASTE_PICK":"בחירת {{interestsRemaining}} נושאים","INTRO_TASTE_PICK_MORE":"בחירת {{interestsRemaining}} נושאים נוספים","INTRO_TASTE_HELP_US":"עזרו לנו ללמוד עליכם עוד.","INTRO_TASTE_CHOOSE_THESE":"בחירה מהרשימה:","INTRO_TASTE_CHOOSE_MIN":"נא לבחור לפחות 3 קטגוריות","INTRO_TASTE_CHOOSE_MIN_ERR":"חובה לבחור לפחות 3 קטגוריות!","INTRO_TASTE_LIFESTYLE":"סגנון חיים","INTRO_TASTE_SPORTS":"ספורט","INTRO_TASTE_FOOD_HEALTH":"אוכל ובריאות","INTRO_TASTE_BEAUTY_FASHION":"יופי ואופנה","INTRO_TASTE_NEWS":"חדשות","INTRO_TASTE_GAMING":"משחקים","INTRO_TASTE_SCIENCE_EDU":"מדעים וחינוך","INTRO_TASTE_MUSIC":"מוסיקה","INTRO_TASTE_TRAVEL":"טיולים","INTRO_TASTE_LATE_NIGHT":"תוכנית אירוח","INTRO_TASTE_REALITY":"ריאליטי","INTRO_TASTE_COMEDY":"קומדיה","INTRO_TASTE_DIY":"עשה זאת בעצמך","INTRO_TASTE_TECH":"טכנולוגיה","INTRO_TASTE_CINEMA":"קולנוע","ADDON_NOT_SUPPORTED":"התוסף הנבחר אינו תומך בפלטפורמה זו.","ADDON_DISCLAIMER":"שימוש בתוספים צד שלישי תמיד יהיו תחת אחריותך ותחת החוק הקיים באזור מגוריך.","ADDON_ACTIVATE":"הפעלת תוסף זה?","ADDON_REPO_ADD":"כתובת מקור התוסף","ADDON_ADD":"הוספה","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"מה חדש","BUTTON_CONTINUE":"המשך","BUTTON_ACTIVATE":"הפעל","BUTTON_ACTIVATED":"מופעל","BUTTON_CANCEL":"ביטול","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"התעלם מהכל","BUTTON_VIEW_ALL":"הצגת הכל","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"הספרייה שלך נראית ריקה. גלו כמה זה שימושי :) ","HOW_START":"ככה תוכל להתחיל:","LIB_EMPTY_CAL":"לוח השנה מציג סדרות בספרייה שלך","HOW_START_CAL":"כך אתה יכול להוסיף סדרות:","LIB_EMPTY_BOARD":"הלוח מציג התראות והמלצות אשר קשורים לספרייה שלך.","HOW_START_BOARD_WAIT":"אנא הוסף סדרות וערוצים לספרייה שלך ותן לנו כמה דקות לארגן את הכל :)","HOW_START_BOARD":"ככה אתה יכול להוסיף סדרות וסרטים אליו:","IMPORT_FB":"יבא דברים שאתה אוהב מפייסבוק","IMPORT_TRAKT":"ייבוא ספריה מאתר Trakt","IMPORT_DISCOVER":"מצא דברים מעניינים דרך טאב הגלה","IMPORT_DISK":"יבא סרטים או סדרות אשר נמצאים בדיסק המקומי","PLEASE_CREATE_ACC":"אנא צור חשבון כדי לאפשר סנכרון ספרייה ולוח.","IMPORT_DISCOVER_SIGNUP":"הירשמו ותמצאו דברים מעניינים בגילוי","IMPORT_DISK_SIGNUP":"הירשמו וייבאו סרטים וסדרות שיש ברשותכם בכונן מקומי","LIB_EMPTY_CLOUD":"ספריה בענן","LIB_EMPTY_CLOUD_DESC":"ענן אישי לסנכרון סיפריה עם כל המכשירים","LIB_EMPTY_EARLY":"לפני כולם","LIB_EMPTY_EARLY_DESC":"קבלת התראות על פרקים חדשים","LIB_EMPTY_PERSONAL":"אישי","LIB_EMPTY_PERSONAL_DESC":"קבלת המלצות אישיות","LIB_EMPTY_CALENDAR_DESC":"קביעת לוח שנה לצפיה האישית שלכם","LIB_EMPTY_ALL":"הירשמו כדי לקבל את כל זה:","LIB_EMPTY_BEST":"הירשמו בכדי לקבל את הטוב ביותר מStremio","LIB_EMPTY_OTHER":"הרשמה בכדי להפעיל לוח שנה לצפיה ועוד דברים מגניבים","CALENDAR_ADDED":"הלוח שנה של Stremio התווסף ללוח שנה של שולחן העבודה.","CALENDAR_ADDED_MSG":"אם זה לא עובד, אנא השתמש בקישור כדי להוסיף את לוח השנה בצורה ידנית","TRAKT_EXPIRED":"קישוריות עם Trakt פגה, אנא עבור להגדרות והתחבר שוב","TRAKT_REQUIRES_LOGIN":"Trakt שגיאה","TRAKT_REQUIRES_LOGIN_MSG":"חובה להתחבר","SETTINGS_LABEL":"הגדרות","SETTINGS_NAV_GENERAL":"כללי","SETTINGS_NAV_PLAYER":"נגן","SETTINGS_NAV_STREAMING":"תזרימים","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"הפעל בעת הפעלת המחשב","SETTINGS_VLC_DEFAULT":"לנגן עם vlc","SETTINGS_UI_LANGUAGE":"שפת ממשק","SETTINGS_FULLSCREEN_EXIT":"יש ללחוץ על Escape כדי לצאת ממצב מסך מלא","SETTINGS_GAMEPAD":"הפעלת תמיכה בבקר משחק","SETTINGS_CLOSE_WINDOW":"סגירת היישום עם סגירת החלון","SETTINGS_SUBTITLES_LANGUAGE":"שפת כתוביות ברירת מחדל","SETTINGS_SUBTITLES_SIZE":"גודל כתוביות ברירת מחדל","SETTINGS_SUBTITLES_BACKGROUND":"צבע רקע עבור כתוביות","SETTINGS_SUBTITLES_COLOR":"צבע כתוביות","SETTINGS_SUBTITLES_COLOR_OUTLINE":"צבע מתאר עבור כתוביות","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"צבע רקע עבור כתוביות","SETTINGS_SEEK_KEY":"מקשי החצים כדי לנוע בזמן","SETTINGS_SEEK_KEY_SHIFT":"מקשי החצים כדי לנוע בזמן כאשר המקש Shift מוחזק","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"לנגן אוטומטית את הפרק הבא","SETTINGS_NEXT_VIDEO":"הצגת הודעה לתחילת הפרק הבא","SETTINGS_NEXT_VIDEO_TRIGGER":"משך הצגת ההודעה על הפרק הבא:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"שינוי גודל אוטומטי של החלון לפני תחילת ניגון","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"כתובת שרת הזרמה: ","SETTINGS_SERVER_AVAILABLE":"שרת הזרמה זמין.","SETTINGS_SERVER_UNAVAILABLE":"שרת הזרמה אינו זמין.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"כתובת הזרמה ב־HTTPS: ","SETTINGS_USE_BETA":"תמיד להשתמש ב Beta האחרונה","SETTINGS_IMPORT_FB":"ייבא מפייסבוק","SETTINGS_IMPORT_DISK":"ייבא מדיסק מקומי","SETTINGS_IMPORT_TRAKT":"ייבא מ-Trakt","SETTINGS_PAUSE_MINIMIZED":"השהיית ניגון כאשר החלון ממוזער","SETTINGS_HWDEC":"קידוד מואץ בחומרה","SETTINGS_BACKGROUND":"רקע נגן","SETTINGS_SUBSCRIBE_CALENDAR":"הרשמה ללוח שנה","SETTINGS_REQ_EXPORT":"בקשה לייצוא מידע","SETTINGS_ACC_DELETE":"בקשה להסרת חשבון","SETTINGS_CHANGE_PASSWORD":"שנה סיסמה","SETTINGS_TOS":"תנאי שימוש","SETTINGS_SUPPORT":"צור קשר עם התמיכה","SETTING_LANGUAGE":"שפה","SETTINGS_TRAKT":"Trakt שילוב","SETTINGS_TRAKT_LOGOUT":"התנתקות מ-Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"סריקת קוד QR לשימוש מרוחק","SETTINGS_DESKTOP_NOTIFICATIONS":"התראות שולחן עבודה","SETTINGS_DATA_SAVER":"חיסכון משאבים","SETTINGS_LANGUAGE_INTERFACE":"מראה","SETTINGS_LANGUAGE_SUBS":"כתוביות ברירת מחדל","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"בחירה אוטומטית בפס הקול","SETTINGS_DEFAULT_AUDIO_TRACK":"פס קול ברירת מחדל","SETTINGS_ACCOUNT":"חשבון","SETTINGS_VERSION":"גרסה","SETTINGS_MPV_WINDOW":"הפעלת נגן בחלון חיצוני (מתקדם)","SETTINGS_PLAY_IN_EXTERNAL":"תמיד התחלת ניגון בנגן חיצוני","SETTINGS_STORAGE_BUTTON":"ניקוי מטמון מקומי","SETTINGS_STORAGE_MODAL_TITLE":"האם אתה בטוח?","SETTINGS_STORAGE_MODAL_MESSAGE":"זה ינקה את המטמון המקומי וינתק אותך.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"אוטומטי","SETTINGS_HW_DISABLED":"מבוטל","SETTINGS_HW_ACCELERATED":"האצת קידוד","SETTINGS_HW_FULL":"האצה מלאה","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"יציאה","CONNECTED":"מחובר","AUTHENTICATE":"אימות","CACHING":"מטמון","SETTINGS_CACHING_DRIVE":"בחר כונן למטמון","ENABLE_LOCAL_FILES_ADDON":"הפעלת תוסף גישה לקבצים מקומיים (נדרשת הפעלה מחדש)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"הפעלת חיבורי HTTPS מרוחקים","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"מידע זמני","MAGNET_PARSING":"מנתח קישור מגנט","January":"ינואר","February":"פברואר","March":"מרץ","April":"אפריל","May":"מאי","June":"יוני","July":"יולי","August":"אוגוסט","September":"ספטמבר","October":"אוקטובר","November":"נובמבר","December":"דצמבר","Monday":"שני","Tuesday":"שלישי","Wednesday":"רביעי","Thursday":"חמישי","Friday":"שישי","Saturday":"שבת","Sunday":"ראשון","Action":"פעולה","Comedy":"קומדיה","War":"מלחמה","Family":"משפחה","Animation":"אנימציה","Adventure":"הרפתקה","Fantasy":"פנטזיה","Crime":"פשע","Mystery":"מיסתורי","Romance":"רומנטיקה","Drama":"דרמה","Horror":"אימה","Thriller":"מותחן","Sci-Fi":"מדע בדיוני","Music":"מוזיקה","Biography":"ביוגרפיה","Documentary":"תיעודי","Sport":"ספורט","Musical":"מוזיקלי","Western":"מערבונים","Film-Noir":"סרט-נואר","News":"חדשות","History":"היסטוריה","Game-Show":"שעשועונים","Reality-TV":"ריאלטי","Talk-Show":"טוק שואו","Film & Entertainment":"סרטים ובידור","Gaming":"גיימינג","From TV":"מהטלויזיה","Lifestyle":"לייף סטייל","Science & Education":"מדע וחינוך","Cooking & Health":"בישול ובריאות","Beauty & Fashion":"יופי ואופנה","Sports":"ספורט","News & Politics":"חדשות ופוליטיקה","How-to & DIY":"עשה זאת בעצמך","Tech":"טכנולוגיה","Automotive":"רכב","Causes & Non-Profits":"ללא מטרות רווח","Movies":"סרטים","Uk Live Tv":"טלויזיה לייב בריטית","Fashion":"אופנה","Business News Radio":"רדיו חדשות עסקים","Business Tv":"טלויזיה עסקית","Cars & Auto":"רכבים","Comedy Radio":"רדיו קומדיה","Lifestyle Radio":"רדיו לייף סטייל","News Tv":"טלויזית חדשות","Food And Wine":"אוכל ויין","Latino Tv":"טלויזיה לטינית","Shopping Tv":"טלויזיית קניות","Religion":"דת","Kids":"ילדים","Body & Soul":"גוף ונפש","Education":"חינוך","Indian Tv":"טלויזיה הודית","Extreme Sports":"ספורט אקסטרים","Middle Eastern Tv":"טלויזיה מזרח תיכונית","Celebrity Tv":"טלויזיית סלבריטי","Science Tv":"טלויזיית מדע","Bikini babe":"ביקיני","Outdoors":"באוויר הפתוח","German Tv":"טלויזיה גרמנית","French Tv":"טלויזיה צרפתית","Italian Tv":"טלויזיה איטלקית","Gamer Tv":"טלויזיית גיימרים","Travel":"טלויזיית טיולים","Asian Tv":"טלויזיה אסייתית","Entertainment":"בידור","News Radio":"רדיו חדשות","Music Radio":"רדיו מוזיקה","Language Learning":"לימוד שפות","Science Radio":"רדיו מדע","Tech Radio":"רדיו טכנולוגיה","Science & Technology Vod":"מדע וטכנולוגיה VOD","new video":"וידאו חדש","new episode":"פרק חדש","new movie":"סרט חדש","recommended":"מומלצים","we recommend":"אנו ממליצים","offer of the day":"הצעת היום","news":"חדשות","music video":"קליפ מוסיקה","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"התעלמות מהתראות","CTX_DISMISS_ALL":"התעלמות מהכל","CTX_SHARE":"שתף","CTX_COPY_SHARE_LINK":"העתקה ושיתוף קישור","CTX_COPY_MAGNET_LINK":"העתקת קישור magnet","CTX_COPY_STREAM_LINK":"העתקת קישור הזרמה stream","CTX_DOWNLOAD_VIDEO":"הורדת וידאו זה","CTX_DOWNLOAD_SUBS":"הורדת כתוביות","CTX_VIEW_ON_YOUTUBE":"צפיה בYouTube","CTX_SHOW":"הצג","CTX_PLAY":"הפעלה","CTX_PLAY_IN":"הפעלה בתוך","CTX_PLAY_ON":"הפעלה על","CTX_WATCH_ON":"צפה ב","CTX_WATCH":"צפה","CTX_WATCHED":"נצפה","CTX_WATCH_BEGINNING":"צפה מההתחלה","CTX_WATCH_MOBILE":"צפה במכשיר נייד","CTX_REWIND":"אחורה להתחלה","CTX_MARK_WATCHED":"סמן כנצפה","CTX_MARK_NON_WATCHED":"סמן כלא נצפה","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"סימון כל הבאים כנצפו","CTX_UNMARK_REST":"סימון כל הבאים שלא נצפו","CTX_RECEIVE_NEW_NOTIF":"קבל התראות חדשות","CTX_REMOVE_CACHE":"הסר ממטמון","CTX_REMOVE_CACHE_EP":"הסר פרק ממטמון","CTX_OPEN_CONTAINING":"פתח תיקייה מכילה","CTX_REMOVE":"הסר מהספריה","CTX_AVAILABLE_OFFLINE":"זמין במצב לא מקוון","CTX_PAUSED":"השהה","CTX_ALWAYS_ON_TOP":"תמיד למעלה","CTX_FULLSCREEN":"מסך מלא","CTX_WRONG_SUBS":"כתוביות שגויות?","CTX_REPORT_ISSUES":"דווח על בעיה","CTX_COPY":"העתק","CTX_PASTE":"הדבק","CTX_CLEAR":"נקה","CTX_CLEAR_RECENT_SEARCHES":"נקה חיפושים אחרונים","HELLO_THERE":"היי שם","HOPE_YOU_ENJOY":"אנו מקווים שאתם נהנים מהתוכנה Stremio ושהיא אחת המועדפות שלכם!","WHO_ARE_WE":"מי אנחנו? אנחנו צוות מאחורי זה - שני בחורים שעובדים קשה מאוד כבר 3 שנים, עם מטרה אחת - לשפר את המוצר עוד ועוד.","SUPPORT_US":"אם אתם נהנים מStremio, ו-Stremio בעל ערך עבורכם - תתמכו בנו!","SPREAD_THE_WORD":"תשתפו עם חברים שלכם, הפיצו את המילה על Stremio","MORE_PEOPLE":"אמרו לעוד אנשים להשתמש ב-Stremio, וכך נשתפר!","SEND_A_LINK":"או שליחת קישור אל האתר שלנו","TIP_LOCALFILES":"טיפ: אפשר לגרור ולשחרר מדיה מתיקיה אל תוך Stremio","ADDON_MY":"תוספים שלי","ADDON_COMMUNITY":"תוספים של הקהילה","ADDON_OFFICIAL":"תוספים רשמיים","ADDON_REPOS":"מקורות תוספים","ADDON_SEARCH":"חיפוש תוספים","ADDON_INSTALL":"התקן","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"הסר התקנה","ADDON_UPGRADE":"שדרוג","ADDON_INSTALLED":"מותקן","ADDON_INSTALLED_MSG":"התוסף מותקן!","ADDON_UPGRADED_MSG":"התוסף משודרג!","ADDON_UNKNOWN":"לא ידוע","ADDON_ERR":"שגיאה בהתקנת תוסף!","ADDON_DISCONNECTED":"מנותק","ADDON_APP_MISSING":"אפליקציה למקור זה אינה מותקנת. להתקין אותה?","ADDON_APP_INSTALL":"התקן כעת","ADDON_PAGE":"עמוד תוסף","ADDON_TOP_CONTENT":"תוכן הכי טוב מתוסף זה","ADDON_PROVIDES":"ספקים","ADDON_WATCH":"צפיה ב-#{types} כעט!","ADDON_WATCH_FREE":"צפה עכשיו ב-#{types} בחינם כעט!","ADDON_ADDON":"תוסף","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"עוד #{types} בגילוי","ADDON_PROVIDES_STREAMS":"צפיה ב-#{types}","ADDON_PROVIDES_STREAMS_FREE":"צפיה ב-#{types} בחינם","ADDON_PROVIDES_SUBTITLES":"כתוביות עבור #{types}","ADDON_CANTDETECT":"Stremio לא נמצא עובד, אז לא הצלחנו למצוא את התוספים המותקים.","ERR_NO_META":"לא נמצא מידע על זה ","ERR_GETTING_META":"שגיאה בהבאת מידע עבור זה.","ERR_CANT_PARSE_MAGNET":"לא ניתן לנתח קישור מגנט","ERR_NO_MAGNET_INFOHASH":"אין מידע hash עבור מגנט","ERR_NO_FILE_PATH":"אין אפשרות לשלוח את הבקשה ללא קישור אל הקובץ","ERR_NO_TORRENT":"אין טורנט חוזר","ERR_NO_SUPPORTERD_FILES":"קבצים לא נתמכים נמצאו","ERR_OPENING_FILES":"אין אפשרות לפתוח קבצים חיצוניים","ERR_INVALID_LINK":"קישור לא תקין","ERR_REGISTERED_ONLY":"אפשרות זו פעילה רק לרשומים בלבד.","ERR_CLIPBOARD":"לא ניתן לנגן מלוח הגזירים","ERR_CLIPBOARD_READ":"לא ניתן לקרוא את לוח הגזירים בפלטפורמה זו","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"המשך לצפות","BOARD_EXPLANATION_RECOMMENDATIONS":"סרטים נבחרים במיוחד בשבילך.
    הסרט הזה הוא דוגמא להמלצה.","BOARD_EXPLANATION_EPISODES":"פרקים חדשים של הסדרות האהובות עליך יופיעו כאן.
    הוסף סדרות שאתה עוקב אחריהן לספריה שלך.","BOARD_EXPLANATION_VIDEOS":"פרקים חדשים של הערוצים האהובים עליך יופיעו כאן.
    הוסף ערוצי YouTube שאתה עוקב אחריהן לספריה שלך.","WEBSITE_SLOGAN_WATCH":"צפיה מיידית","WEBSITE_SLOGAN_ALL":"כל תוכן הוידאו במקום אחד להנאה מלאה","WEBSITE_SLOGAN_NEW":"כל מה שאתה יכול לצפות","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"צפה מ","WEBSITE_DOWNLOAD":"הורד עכשיו","WEBSITE_DOWNLOAD_FOR":"כעט מוריד עבור","WEBSITE_IS_DESKTOP":"Stremio היא תוכנת שולחן עבודה, פתח עמוד זה להורדה אל המחשב האישי","WEBSITE_DESKTOP_DEMO_VID":"הדגמת שולחן עבודה","WEBSITE_PAGE_HOME":"בית","WEBSITE_PAGE_FEATURES":"תכונות","WEBSITE_PAGE_ADDONS":"הרחבות","WEBSITE_PAGE_TECH":"טכנולוגיה","WEBSITE_PAGE_CREATE_ADDON":"צור הרחבה","WEBSITE_PAGE_CONTACTS":"צור קשר","WEBSITE_PAGE_BLOG":"בלוג","WEBSITE_TYPE_movie":"סרטים","WEBSITE_TYPE_series_PL":"סדרות","WEBSITE_TYPE_tv":"שידורים חיים","WEBSITE_TYPE_channel":"ערוצים","WEBSITE_STREMIO_WHAT_IS":"Stremio היא אפליקציה שעוזרת לך לארגן ולצפות מייד בסרטונים, סרטים, סדרות טלוויזיה וערוצי טלוויזיה האהובים עליך.","WEBSITE_FEATURES_WATCH":"צפיה מיידית באיכות HD","WEBSITE_FEATURES_WATCH_DETAIL":"לחץ ונגן את הסרטונים, סרטים, סדרות טלוויזיה וערוצי טלוויזיה האהובים עליך.","WEBSITE_FEATURES_SUBS":"כתוביות אוטומטיות","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio בוחרת לבד את הכתוביות על בסיס שפה שנבחרה.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"נגינה בטלויזיה & מכשירים ניידים","WEBSITE_FEATURES_CAST_DETAIL":"שידור בAppleTV, Chromecast, טלויזיה חכמה (DLNA/UPnP) ומכשירים ניידים.","WEBSITE_LIB":"תהנה מהספריה הפרטית שלך מסונכרת לכל מכשירך.","WEBSITE_LIB_COLLECT":"איסוף מStremio","WEBSITE_LIB_IMPORT":"ייבוא מFacebook","WEBSITE_LIB_LOCAL":"הוספה מכונן מקומי","WEBSITE_BOARD":"הלוח - נקודת העצירה להודעות וההמלצות שלך","WEBSITE_BOARD_RECOMMEND":"סדרות מומלצות","WEBSITE_BOARD_TRENDING":"סרט חם","WEBSITE_BOARD_NEW":"וידאו חדש","WEBSITE_BOARD_EPISODE":"פרק חדש","WEBSITE_BOARD_1":"מחפש משהו מעניין לצפות? קבל המלצות על בסיס טמעך האישי!","WEBSITE_BOARD_2":"קבל הודעה כאשר פרק חדש של הסדרה או ערוץ YouTube יוצא!","WEBSITE_BOARD_YOUTUBE":"סרטונים חדשים של ערוצי YouTube","WEBSITE_BOARD_EPISODES":"פרקים חדשים של הסדרות שהינך עוקב אחריהן","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"עלינו","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"עוד","WEBSITE_LINK_ADDONS":"תוספים","WEBSITE_LINK_ADDON_SDK":"SDK תוספים","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"קהילה","WEBSITE_LINK_BLOG":"בלוג","WEBSITE_MORE_MORE":"... & ועוד","WEBSITE_LINK_HELP":"מרכז עזרה","WEBSITE_LINK_CONTACTS":"יצירת קשר","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"יצירת תוסף","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"תוספים","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"תוספים רשמיים","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"תוספי קהילה","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"יצירת תוסף","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"הורדות","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio עבור Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio עבור macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio עבור Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio עבור Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio עבור iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"תרגום Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"קהילות רשמיות","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"צור קשר","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"כתובת דואר האלקטרוני שלך","WEBSITE_CONTACT_US_PH_MESSAGE":"הודעה","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"שליחה","WEBSITE_CONTACT_US_Q_1":"איך להתקין?","WEBSITE_CONTACT_US_Q_2":"איך להסיר?","WEBSITE_CONTACT_US_Q_3":"(HTML) איך לעשות lasagna?","WEBSITE_CONTACT_US_Q_4":"תוספים","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"תרגום Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"מעבר לבית","WEBSITE_LINK_OTHER_DOWNLOADS":"הורדות אחרות","WEBSITE_FAQ_ABR":"שאלות ותשובות","WEBSITE_SUPPORT":"תמיכה","WEBSITE_DOWNLOAD_4_0_BETA":"הורדת Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"הורדה לשולחן העבודה","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"חשבון שלי","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"עזרו לנו ללמוד עליכם יותר.","LIFESTYLE":"סגנון חיים","SPORTS":"ספורט","FOOD_HEALTH":"אוכל ובריאות","BEAUTY_FASHION":"יופי ואופנה","NEWS":"חדשות","GAMING":"גיימינג","SCIENCE_EDUCATION":"מדע וחינוך","MUSIC":"מוזיקה","TRAVEL":"טיולים","LATE_NIGHT":"תוכניות אירוח","REALITY":"ריאלטי","COMEDY":"קומדיה","DIY":"עשה זאת בעצמך","TECH":"טכנולוגיה","CINEMA":"קולנוע","CONTINUE":"המשך","SLOW_LOADING":"טעינה איטית?","I_GIVE_UP":"לוותר","LEARN_MORE":"מידע נוסף","POOR_SOURCE":"מקור זה בקושי זמין או שחיבור האינטרנט שלך איטי מאוד","PICK_CATEGORIES_ERR":"נא לבחור 3 קטגוריות מינימום","ADJUST_TIMING":"שינוי תזמון בעזרת ","ADJUST_SIZE":"שינוי גודל בעזרת","SEARCH_ANYTHING":"אפשר לחפש הכל...","ALL_CATEGORIES":"הכל","SEARCH_CATEGORIES":"סרטים, סדרות, יוטיוב & טלויזיה","SEARCH_PERSONS":"שחקנים, מפיקים & כותבים","SEARCH_PROTOCOLS":"קישורים ישירים או מגנט","SEARCH_TYPES":"IMDB / TVDB קישורים","WATCHED":"נצפה","SHOW_LESS":"הצג פחות","LAST_SEARCHES":"חיפושים אחרונים","CLEAR_HISTORY":"נקה היסטוריה","CHOOSE_SOME":"בחירה של משהו מכאן:","NO_WEB_REMOTE":"שימוש מרוחק לא ניתן לטעינה","STREMIO_OFFLINE":"Stremio מנותק","STREMIO_EXPENSIVE_CONNECTION":"חיבור לאינטרנט הוא יקר","USE_DATA":"השתמש בנתונים ניידים","WARNING":"אזהרה","MORE_INFO":"מידע נוסף ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"טוען ...","STREMIO_TV_BACK_TO_LANGUAGES":"חזרה לשפות","STREMIO_TV_REMOTE":"שלט","STREMIO_TV_GO_TO":"מעבר אל:","STREMIO_TV_OR_SCAN":"או סריקה:","STREMIO_TV_ADDON_INSTRUCTIONS":"נא לעקוב אחר ההוראות בכדי להתקין את התוספים המועדפים עליכם.","STREMIO_TV_LIVE_TV":"טלויזיה חיה","STREMIO_TV_RESUME_WATCHING":"המשך צפיה","STREMIO_TV_LOADING_BACKGROUND":"טוען ברקע","STREMIO_TV_CHECKING_AUTHENTICATION":"בודק פרטי התחברות","STREMIO_TV_LOADING_BOARD":"טוען לוח","STREMIO_TV_LOGIN_HEADER_LINE_1":"אנו רוצים שהמשתמשים שלנו יזכו לחוויה המותאמת אישית הטובה ביותר עם התוכנה שלנו.","STREMIO_TV_LOGIN_HEADER_LINE_2":"מסיבה זו אנו מבקשים מכם לבקש ו / או להתחבר לחשבונכם.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"תודה על ההבנה,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"צוות Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"על מנת להשתמש מרחוק באמצעות טלפון חכם / טאבלט / מחשב:","STREMIO_TV_WIFI_SETUP":"התקנת Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle לא הצליח לזהות חיבור אינטרנט.","STREMIO_TV_WIFI_DETAILS_1":"חיבור אל:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"שימוש בסיסמה:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"פתיחת דפדפן עם קישור:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"ברירת המחדל","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"לפי נצפה לאחרונה","STREMIO_TV_LIBRARY_SORT_NAME":"לפי שם","STREMIO_TV_LIBRARY_TIMES_WATCHED":"לפי כמות הצפיות","STREMIO_TV_DETAILS_SEASON_NUMBER":"${1} עונה","STREMIO_TV_STREAMS_LOADING":"נטענו {1}$ / {2}$ תוספים...","STREMIO_TV_STREAMS_STILL_LOADING":"תוסף {1}$ עדיין נטען","STREMIO_TV_PLAYER_SETTINGS":"הגדרות נגן","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"השהיית כתוביות","STREMIO_TV_PLAYER_AUDIO_DELAY":"השהיית אודיו","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"מקור השידור אינו נתמך","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"שגיאה בפתיחת קישור חיצוני","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"נגן עם ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"נגן עם libVLC","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"מחליף לנגן libVLAC עקב שגיאה בשידור","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"סינכרון תוספים\\"","STREMIO_TV_ADDONS_SUBTITLE":"הערה: ודא כי אתה משתמש באותו משתמש Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"סינכרון תוספים","STREMIO_TV_ADDONS_SYNC_SUCCESS":"תוספים סונכרונו בהצחלה","STREMIO_TV_ADDONS_SYNC_FAILED":"שגיאה סינכרון התוספים","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"שפת הממשק עודכנה","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"נגן ברירת המחדל","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"נגן חיצוני","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"שפה מועדפת","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"שפה מועדפת משנית","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"ברירת מחדל","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"קישור לשרת צפייה","STREMIO_TV_SETTINGS_SERVER_VERSION":"גרסת שרת","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"לא ידוע","STREMIO_TV_SETTINGS_STREMIO_VERSION":"גרסת Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"עריכת קישור שרת","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"לקריאת תנאי הפרטיות של Stremio, בקרו ב:","STREMIO_TV_SETTINGS_TOS_TEXT":"לקריאת תנאי השימוש של Stremio, בקרו ב:","STREMIO_TV_NAV_SEARCH":"חיפוש","STREMIO_TV_NAV_HOME":"דף הבית","STREMIO_TV_NAV_DISCOVER":"גלה","STREMIO_TV_NAV_LIBRARY":"ספרייה","STREMIO_TV_NAV_MOVIES":"סרטים","STREMIO_TV_NAV_SERIES":"סדרות","STREMIO_TV_NAV_CHANNELS":"ערוצים","STREMIO_TV_NAV_TV":"שידורים חיים","STREMIO_TV_NAV_SETTINGS":"הגדרות","STREMIO_TV_NAV_ADDONS":"תוספים","STREMIO_TV_LOGIN_TITLE":"חבר משתמש","STREMIO_TV_LOGIN_EXPIRES_IN":"פג תוקף ב-","STREMIO_TV_LOGIN_STEP_ONE":"סרקו את קוד ה-QR או גשו ל:","STREMIO_TV_LOGIN_STEP_TWO":"התחברות למשתמש Stremio","STREMIO_TV_LOGIN_NEW_LINK":"בקש קישור חדש","STREMIO_TV_LOGIN_LINK_REFRESHED":"קישור ההתחברות חודש","STREMIO_TV_SEARCH_PLACEHOLDER":"הקלד משהו","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"חיפוש","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"רווח","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"היסטוריית החיפושים","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"נקה את היסטוריית החיפושים","STREMIO_TV_FILTERS_DESCRIPTION":"בחרו אחד מהפילטרים מטה","FILTERS":"פילטרים","SETTINGS":"הגדרות","ACCOUNT":"משתמש","LOGOUT":"התנתק","THEMES":"ערכות נושא","PLAYBACK":"ניגון","PLAYBACK_SPEED":"מהירות ניגון","AUDIO_TRACKS":"רצועות שמע","VIDEOS":"סרטונים","SERVER":"שרת","LINKS":"קישורים","ABOUT":"אודות","INTERFACE":"ממשק","ANIMATIONS":"אנימציות","STATUS":"סטטוס","LANGUAGE":"שפה","SIZE":"גודל","DELAY":"השהייה","BOLD":"Bold","TEXT_COLOR":"צבע טקסט","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"צבע רקע","BACKGROUND_BLUR":"טשטוש רקע","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"נגן אוטומטית את הפרק הבא","PLAY_NOW":"נגן עכשיו","MARK_AS_WATCHED":"סמן כנצפה","MARK_AS_UNWATCHED":"סמן כלא נצפה","REWIND_TO_BEGINNING":"חזור להתחלה","CONTINUE_WATCHING":"המשך צפייה","ALL":"הכל","SECONDS":"שניות","ON":"דלוק","OFF":"כבוי","RELOAD":"טעינה מחדש","EDIT_URL":"ערוך קישור","NONE":"כלום","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"שינוי מכשירים","REMOTE_VIDEOS":"וידאו","REMOTE_ADJUST_TIMING":"שינוי תזמון","REMOTE_ADJUST_SIZE":"שינוי גודל","REMOTE_COULD_NOT_BE_LOADED":"שליטה מרחוק לא אפשרית","REMOTE_RETRY":"לנסות שוב","TORRENT_PROFILE_DEFAULT":"ברירת המחדל","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"?Stremio מה זה","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},4018:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"फ़िल्म","TYPE_series":"धारावाहिक","TYPE_tv":"टीवी चैनल","TYPE_channel":"चैनल","TYPE_other":"अन्य","TYPE_movie_PL":"फ़िल्म","TYPE_series_PL":"धारावाहिक","TYPE_tv_PL":"टी वी चैनल","TYPE_channel_PL":"चैनल","TYPE_other_PL":"अन्य","TYPE_ALL":"All","VIDEO":"वीडियो","BACK":"पीछे","MORE":"अधिक","DONE":"किया हुआ","COPY":"प्रतिलिपि","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"डिस्कवर","Board":"तख़्ता","Library":"पुस्तकालय","My Library":"मेरा पुस्तकालय","Calendar":"पंचांग","NOTIFICATION_ONLINE":"अब आप ऑनलाइन हैं","NOTIFICATION_OFFLINE":"आप वर्तमान में ऑफ़लाइन हैं","INTERNET_CONNECTION":"नेटवर्क कनेक्शन","STORAGE_FULL_TITLE":"चेतावनी: भंडारण पूर्ण!","STORAGE_FULL_TEXT":"Stremio आपकी सेटिंग्स वरीयताओं या लॉगिन जानकारी को सहेजने में सक्षम नहीं होगा। फिर से शुरू करने या फिर से स्थापित करने पर विचार करें।","SEARCH":"तलाशी","SEARCH_NO_RESULTS":"कोई परिणाम नहीं मिले थे","SEARCH_EXPLANATION_CONTENT":"फिल्में श्रृंखला यूट्यूब और टीवी चैनल खोजें","SEARCH_EXPLANATION_PEOPLE":"अभिनेता निदेशकों और लेखकों के लिए खोजें","SEARCH_PASTE_LINKS":"HTTP और चुंबक लिंक पेस्ट करें","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"पुस्तकालय में जोड़ें","REMOVE_FROM_LIB":"पुस्तकालय से निकालें","ADDED_TO_LIB":"पुस्तकालय में जोड़ा गया","REMOVED_FROM_LIB":"पुस्तकालय से हटा दिया गया","TRAILER":"ट्रेलर","WATCH_TRAILER":"ट्रेलर देखें","WATCH_NOW":"अब देखिए","SHOW":"प्रदर्शन","SHOW_MOVIE":"फिल्म दिखाओ","WATCH_RANDOM":"यादृच्छिक","IMDB_RATING":"आईएमडीबी रेटिंग","YEAR":"वर्ष","DIRECTOR":"निर्देशक","WRITER":"लेखक","LEAD_ACTORS":"मुख्य अभिनेता","CAST":"ढालना","CREW":"कर्मी दल","SHOW_MORE_CAST":"और दिखाओ","AIRED":"प्रसारित","SEASONS":"मौसम के","GENRE":"शैली","CATALOG":"सूची","SUMMARY":"सारांश","SHOW_MORE":"और दिखाओ","SIMILAR":"एक जैसा","UPCOMING":"आगामी","ENDED":"समाप्त","DURATION":"अवधि","FEATURED":"विशेष रुप से प्रदर्शित","METADATA":"मेटाडाटा","CATEGORY":"वर्ग","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"वीडियो खोजें","SEARCH_PLACEHOLDER":"यूआरएल खोजें या पेस्ट करें","ADDON":"ऐड ऑन","ADDONS":"ऐड-ऑन","OFFICIAL":"अधिकारी","ADDONS_OFFICIAL":"आधिकारिक स्ट्रीमियो एडॉन्स","ADDONS_POPULAR":"आपके क्षेत्र में लोकप्रिय","ADDON_FREE":"नि: शुल्क","ADDON_PEERED":"झाँका","ADDON_SUBSCRIPTION":"अंशदान","ADDON_STREAM_GEORESTRICTED":"आपके क्षेत्र में उपलब्ध नहीं है","ADDON_STREAM_OFFLINECACHE":"ऑफ़लाइन कैश","ADDON_STREAM_LOCALFILE":"स्थानीय संचिका","SHARE_ADDON":"शेयर एडन","AVAILABLE_STREAMS":"उपलब्ध धाराएं","NO_STREAM":"कोई धारा नहीं मिली","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"अधिक धाराओं के लिए कृपया अधिक addons स्थापित करें","STREAM_NOT_SUPPORTED":"चयनित स्ट्रीम इस मंच पर समर्थित नहीं है।","ADDON_CATALOGUE":"सभी एडॉन्स दिखाएं »","ADDON_CATALOGUE_MORE":"Addons स्थापित करें","REPO_ADDED":"रिपोजिटरी ने कहा","ADDON_REPO_EXIST_ERR":"यह एडॉन्स संग्रह पहले से मौजूद है","ADDON_REPO_ERR":"संग्रह जोड़ने के दौरान त्रुटि हुई","ADDON_ADD_ERR":"Addon जोड़ने के दौरान त्रुटि हुई","ERR_ADDON_PROTECTED":"Addon को अनइंस्टॉल नहीं कर सकता यह संरक्षित है","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"कुछ गलत हो गया - प्रमाणीकरण विफल हो सकता है","ERR_NOT_COLLECTION_URL":"एक संग्रह यूआरएल नहीं","ERR_NOT_ADDON_URL":"एक वैध एडन यूआरएल नहीं","ERR_DETECTFROMURL":"इस यूआरएल से एडन / संग्रह नहीं मिल रहा है","ADDON_DUPLICATE_WARNING":"चेतावनी: डुप्लिकेट एडन","ADDON_COLLECTION_SET_FAILED":"अपने खाते में स्थापित एडॉन्स को सिंक करना विफल रहा","SETTINGS_DATA_EXPORT":"निर्यात उपयोगकर्ता डेटा","ADDON_PULL_FAILED":"अपने खाते से स्थापित एडॉन्स को सिंक करना विफल रहा","REFRESH_ON_CLICK":"पुनः प्रयास करने के लिए क्लिक करें","STILL_IN_THEATER":"फिल्म अभी भी सिनेमाघरों में","WATCH_IN_CINEMA":"इसे अपने स्थानीय सिनेमा में देखें","IN_THEATER":"सिनेमा में","GET_TICKETS":"टिकिट पाएं","UPCOMING_EPISODE":"आगामी एपिसोड","UPCOMING_EPISODE_MESSAGE":"इस प्रकरण पर प्रसारित किया जाएगा","MISSING_DATE_EPISODE":"गायब एपिसोड तिथि","MISSING_DATE_EPISODE_MESSAGE":"यह एपिसोड अभी तक प्रसारित नहीं हो सकता है","CHANNEL_NOT_SCRAPED":"यह चैनल अभी तक स्क्रैप नहीं है।
    कृपया कुछ मिनटों में वापस आएं।","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"इसे उपलब्ध होने के बाद अधिसूचित होने के लिए इसे अपनी लाइब्रेरी में जोड़ें।","GET_NOTIFIED_WHEN_AVAILABLE":"एक बार उपलब्ध होने के बाद आपको सूचित किया जाएगा।","WARNING_STREAMING_SERVER":"चेतावनी: स्थानीय स्ट्रीमिंग सर्वर नहीं मिला। स्थानीय फाइलों से स्ट्रीमिंग यूट्यूब और बिटटोरेंट उपलब्ध नहीं होंगे।","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"चेतावनी: इस वीडियो को आपके हार्डवेयर द्वारा समर्थित नहीं किया जा सकता है। ध्यान रखें प्लेबैक धीमा हो सकता है।","PLAYER_ERROR":"ओह खिलाड़ी त्रुटि","PLAYER_ERROR_LOOKSLIKE":"ऐसा लग रहा है","PLAYER_ORIENTATION":"खिलाड़ी अभिविन्यास","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"बंद","PLAYER_ORIENTATION_SENSOR_SHORT":"सेंसर","PLAYER_ORIENTATION_LANDSCAPE":"प्लेयर ओरिएंटेशन लैंडस्केप पर लॉक किया गया","PLAYER_ORIENTATION_SENSOR":"प्लेयर अभिविन्यास स्वचालित (सेंसर)","PLAYER_PLAYBACK_SPEED":"प्लेबैक गति","PLAYER_PLAYBACK_ERROR":"प्लेबैक त्रुटि कृपया पुनः प्रयास करें","PLAYER_PLAYBACK_ERROR_UNKNOWN":"अज्ञात त्रुटि","PLAYER_PLAYBACK_ERROR_DEFAULT":"क्षमा करें इस वीडियो को {{PRODUCTNAME}} द्वारा नहीं खेला जा सकता है।","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"रहना","PLAYER_NEXT_VIDEO_TITLE":"आगे आ रहा है","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"खारिज","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"अब देखिए","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"से स्ट्रीमिंग","CASTING_TO":"कास्टिंग करना","NETWORK_STATUS":"नेटवर्क की स्थिति","STREAM_SPEED":"धारा गति:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"सहकर्मी सूचना","PEERS_ACTIVE":"सक्रिय:","PEERS_CONNECTED":"जुड़े हुए:","PEERS_WAITING":"इंतज़ार कर रही:","TRANSCODING_WARNING":"चेतावनी: ट्रांसकोडिंग वीडियो।","STREAM_LOADING":"लोड हो रहा है...","PLAYING_LOCAL":"स्थानीय फ़ाइल से बजाना","PLAYING_CACHE":"कैश से बजाना","WRONG_SUBS":"गलत उपशीर्षक?","ERR_SUBS_LOADING_TITLE":"उपशीर्षक लोड करने में त्रुटि","ERR_SUBS_LOADING":"असफल उपशीर्षक लोड हो रहा है: यह आपके द्वारा उपयोग किए जा रहे एडन के साथ या आपके नेटवर्क कनेक्शन के साथ एक समस्या हो सकती है","WARN_FOLLOWING_SUB_ADDONS_FAILED":"निम्नलिखित उपशीर्षक Addons विफल","ERR_CASTING_UPDATE_TITLE":"कास्टिंग डिवाइस जानकारी अपडेट नहीं कर सका: स्ट्रीमिंग सर्वर ऑफ़लाइन हो सकता है","CHOOSE_DEVICE":"देखने के लिए एक उपकरण चुनें","NO_CAST_DEVICES":"कोई कास्टिंग डिवाइस उपलब्ध नहीं है।","NO_SETTINGS":"कोई सेटिंग उपलब्ध नहीं है।","PHONE_TABLET":"फोन / टैबलेट","SUBTITLES":"उपशीर्षक","SUBTITLES_CHANGE":"के लिए उपशीर्षक बदलें","SUBTITLES_CHANGE_NONE":"इस भाषा के लिए कोई अन्य उपशीर्षक खेद नहीं है।","SUBTITLES_CHANGE_ACIVE":"वर्तमान में उपशीर्षक & # 35; {{subtitlesdialog.ActiveDX + 1}} सक्रिय हैं। उपशीर्षक सक्रिय करने के लिए जारी रखें & # 35; {{subtitlesdialog.pickedIDX + 1}}।","SUBTITLES_OR":"वैकल्पिक","SUBTITLES_ADJUST_DELAY":"उपशीर्षक देरी समायोजित करें:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"या समायोजित करने के लिए खेलते समय g / h कुंजी का उपयोग करें।","SUBTITLES_ADJUST_DELAY_TIP":"युक्ति: आप समायोजित करने के दौरान g / h कुंजी का उपयोग कर सकते हैं।","SUBTITLES_DELAY":"उपशीर्षक देरी:","SUBTITLES_LOADING":"उपशीर्षक लोड हो रहा है ...","SUBTITLES_UNAVAILABLE":"कोई बाहरी उपशीर्षक उपलब्ध नहीं है","SUBTITLES_DISABLED":"विकलांग","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"मौसम","EPISODE":"प्रकरण","SPECIAL":"Special","SORT":"तरह","SORT_BY":"इसके अनुसार क्रमबद्ध करें","FILTER":"फिल्टर","SORT_TRENDING":"ट्रेंडिंग","SORT_RECENT":"हालिया","SORT_ALPHABET":"ए-जेड","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"रेटिंग","SORT_WATCHED":"देखा","SORT_YEAR":"वर्ष","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"आपके लिए नया","New Episodes":"नए एपिसोड","New Videos":"नए वीडियो","Recommendations":"सिफारिशों","LIBRARY_RESUME":"फिर शुरू करना","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"विवरण","LIBRARY_RESUME_DISMISS":"खारिज","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"विशेष रुप से प्रदर्शित","DISCOVER_TOP":"शीर्ष","DISCOVER_OSCAR":"ऑस्कर विजेता","DISCOVER_WARNING_TITLE":"उफ़!","DISCOVER_EMPTY_CATALOG":"यह एडन खाली सामग्री लौटा दी।","DISCOVER_ADULT_WARNING":"सामग्री केवल वयस्कों के लिए दिखाई दे रही है। क्या आप 18+ हैं?","DISCOVER_NOADDON_WARNING":"चेतावनी: इस प्रकार के लिए कोई स्ट्रैमियो एडन सक्रिय नहीं है। सहेजी गई वस्तुओं को यहां कुछ भी अपडेट नहीं किया जाएगा।","DISCOVER_LOAD_ERR":"सामग्री ने त्रुटि लोड नहीं की।","DISCOVER_ADDON_UNINSTALLED":"यह सामग्री अब उपलब्ध नहीं है कि आपने एडन को अन-इंस्टॉल किया हो सकता है।","UNINSTALL_THIS_ADDON":"इस एडन को अनइंस्टॉल करें","ERR_ADDON_NOT_INSTALLED":"यह एडन स्थापित नहीं है। अब स्थापित करें?","DETAIL_RECEIVE_NOTIF_SERIES":"नए एपिसोड के लिए सूचनाएं प्राप्त करें","DETAIL_RECEIVE_NOTIF_VIDEOS":"नए वीडियो के लिए सूचनाएं प्राप्त करें","SIDEBAR_SHOW_STREAMS":"स्ट्रीम दिखाएं","RELAUNCH":"अब पुनः प्रक्षेपण!","UPGRADE":"नया संस्करण उपलब्ध है! नवीनतम STREMIO संस्करण में अपग्रेड करें","RELOAD_UI":"उपयोगकर्ता इंटरफ़ेस को पुनः लोड करें","MANUAL_UPDATE_TITLE":"अपने STREMIO संस्करण को अपडेट करें","MANUAL_UPDATE_LINE1":"आप स्ट्रैमियो का पुराना संस्करण चला रहे हैं जो अत्यधिक अपरिचित है।","MANUAL_UPDATE_LINE2":"कृपया जल्द से जल्द अपडेट करें।","BUTTON_UPDATE_LATTER":"अभी नहीं","BUTTON_UPDATE_NOW":"अद्यतन","ANONYMOUS_USER":"अनाम उपयोगकर्ता","DONT_HAVE_ACC":"खाता नहीं है?","HAVE_ACC":"क्या आपके पास पहले से एक खाता मौजूद है?","PASSWORD":"कुंजिका","PASSWORD_CONFIRM":"पासवर्ड की पुष्टि कीजिये","EMAIL":"ईमेल","FB_LOGIN":"फेसबुक के साथ जारी रखें","FB_NOTHINGSHARED":"आपकी अनुमति के बिना कुछ भी साझा नहीं किया जाता है","FB_NOPOST":"हम आपकी ओर से कुछ भी पोस्ट नहीं करेंगे","OR":"या","I_ACCEPT":"मैं स्वीकारता हूँ","I_ACCEPT_BY_CLICKING":"उपरोक्त बटन पर क्लिक करके मैं प्रमाणित करता हूं कि मैं स्वीकार करता हूं","TOS":"नियम और शर्तें","MUST_ACCEPT_TERMS":"आपको शर्तों को स्वीकार करना होगा","PASSWORDS_NOMATCH":"पासवर्ड मेल नहीं खाते","SIGN_UP":"साइन अप करें","SIGN_UP_EMAIL":"ईमेल के लिए साइन इन करें","CLICK_TO_SIGN_UP":"साइन अप करने के लिए यहां क्लिक करें।","LOG_IN":"लॉग इन करें","LOG_OUT":"लॉग आउट","EXIT_FULLSCREEN":"पूर्णस्क्रीन मोड से बाहर निकलें","ENTER_FULLSCREEN":"पूर्णस्क्रीन मोड दर्ज करें","PLAY_URL_MAGNET_LINK":"यूआरएल / चुंबक लिंक खेलें","HELP_FEEDBACK":"सहायता और प्रतिक्रिया","TERMS_OF_SERVICE":"सेवा की शर्तें","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"STREMIO के बारे में","USER_PANEL":"उपयोगकर्ता पैनल","LOGIN_LABEL":"Login","GUEST_LOGIN":"मेहमान लॉगइन करें","GUEST_LOGIN_NOTICE":"अतिथि लॉगिन की अनुशंसा नहीं की जाती है। एक नियमित लॉगिन का उपयोग करने से आपकी लाइब्रेरी को सिंक करने के लिए STREMIO को पसंदीदा श्रृंखला / चैनलों के लिए अधिसूचनाएं प्राप्त होती हैं। क्या आप सुनिश्चित रूप से आगे बढ़ना चाहते हैं?","GUEST_LOGIN_NOTICE_2":"अतिथि लॉगिन की अनुशंसा नहीं की जाती है - आपके पास समन्वयित पुस्तकालय और बोर्ड अधिसूचनाएं नहीं होंगी जो महत्वपूर्ण स्ट्रमियो विशेषताएं हैं। क्या आप सुनिश्चित रूप से आगे बढ़ना चाहते हैं?","CLICK_HERE":"यहां क्लिक करें","WRONG_PASSWORD":"गलत ईमेल या पासवर्ड। मामले में आप अपना पासवर्ड भूल गए हैं","SET_A_PASS":"एक पासवर्ड सेट करें","RESET_PASSWORD":"पासवर्ड रीसेट","FORGOT_PASSWORD":"पासवर्ड भूल गए?","EMAIL_USED_WITH_FB":"इस ईमेल का उपयोग फेसबुक लॉगिन के साथ किया गया था।","INVALID_EMAIL":"कृपया एक वैध ई - मेल एड्रेस डालें","INVALID_PASSWORD":"कृपया एक वैध पासवर्ड दर्ज करें","CONN_ERR":"कनेक्शन त्रुटि - कृपया बाद में पुनः प्रयास करें। N NIf यह फायरवॉल / एंटी-वायरस सॉफ़्टवेयर (विशेष रूप से बिट डिडीफेंडर) को अक्षम करता है।","IMPORT_FROM_GUEST":"अपने अतिथि खाते से लाइब्रेरी आयात करें","RECEIVE_UPDATES_EMAIL":"STREMIO से अपने ईमेल पर अपडेट प्राप्त करें","LOGIN_FAILED":"लॉगिन विफल।","SIGNUP_FAILED":"साइन अप करने में विफल रहा।","SEARCH_FAILED":"खोज विफल","EMAIL_USED":"यह ईमेल पहले से प्रयोग में है।","WAITING_FB_LOGIN":"फेसबुक के साथ लॉग इन करना ...","EXTERNAL_PLAYER_TITLE":"बाहरी खिलाड़ी में खेलें","EXTERNAL_REMEMBER_PLAYER":"क्या आप अपनी पसंद को याद रखना चाहते हैं","EXTERNAL_ALWAYS_PLAY":"हां","EXTERNAL_ONLY_ONCE":"नहीं","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"हमें बताएं कि आपको क्या पसंद है","INTRO_TASTE_LONG":"हमें बताएं कि आप क्या देखना चाहते हैं","INTRO_TASTE_PICK":"{{HUSTERSREMAINAININININING}} हितों को चुनें","INTRO_TASTE_PICK_MORE":"{{REITAINSREMAINAINAING}} अधिक हितों को चुनें","INTRO_TASTE_HELP_US":"हमारे बारे में अधिक जानने में हमारी सहायता करें।","INTRO_TASTE_CHOOSE_THESE":"इनमें से कुछ चुनें:","INTRO_TASTE_CHOOSE_MIN":"कम से कम 3 श्रेणियां चुनें","INTRO_TASTE_CHOOSE_MIN_ERR":"आपको कम से कम 3 श्रेणियां चुननी होंगी!","INTRO_TASTE_LIFESTYLE":"बॉलीवुड","INTRO_TASTE_SPORTS":"खेल","INTRO_TASTE_FOOD_HEALTH":"भोजन और स्वास्थ्य","INTRO_TASTE_BEAUTY_FASHION":"सौंदर्य और फैशन","INTRO_TASTE_NEWS":"समाचार","INTRO_TASTE_GAMING":"जुआ","INTRO_TASTE_SCIENCE_EDU":"विज्ञान की शिक्षा","INTRO_TASTE_MUSIC":"संगीत","INTRO_TASTE_TRAVEL":"यात्रा","INTRO_TASTE_LATE_NIGHT":"देर रात शो","INTRO_TASTE_REALITY":"वास्तविकता","INTRO_TASTE_COMEDY":"कॉमेडी","INTRO_TASTE_DIY":"DIY कैसे करें","INTRO_TASTE_TECH":"तकनीक","INTRO_TASTE_CINEMA":"सिनेमा","ADDON_NOT_SUPPORTED":"चयनित एडन इस मंच पर समर्थित नहीं है।","ADDON_DISCLAIMER":"तीसरे पक्ष के एडॉन्स का उपयोग हमेशा आपकी जिम्मेदारी और आपके द्वारा स्थित क्षेत्राधिकार के शासकीय कानून के अधीन होंगे।","ADDON_ACTIVATE":"इस एडन को सक्रिय करें?","ADDON_REPO_ADD":"एडन संग्रह यूआरएल","ADDON_ADD":"जोड़ें","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"नया क्या है","BUTTON_CONTINUE":"जारी रखें","BUTTON_ACTIVATE":"सक्रिय","BUTTON_ACTIVATED":"सक्रिय","BUTTON_CANCEL":"रद्द करें","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"सभी खारिज","BUTTON_VIEW_ALL":"सभी देखें","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"आपकी पुस्तकालय खाली दिखता है। पता लगाएं कि यह कितना उपयोगी है :)","HOW_START":"यहां बताया गया है कि आप कैसे शुरू कर सकते हैं:","LIB_EMPTY_CAL":"आपका कैलेंडर आपकी लाइब्रेरी में श्रृंखला दिखाता है।","HOW_START_CAL":"यहां बताया गया है कि आप श्रृंखला कैसे जोड़ सकते हैं:","LIB_EMPTY_BOARD":"बोर्ड नोटिफिकेशन दिखाता है & amp; आपकी पुस्तकालय से संबंधित सिफारिशें।","HOW_START_BOARD_WAIT":"कृपया अपनी लाइब्रेरी में कुछ श्रृंखला या चैनल जोड़ें संसाधित करने के लिए हमें कुछ मिनट दें :)","HOW_START_BOARD":"यहां बताया गया है कि आप श्रृंखला कैसे जोड़ सकते हैं & amp; इसके लिए फिल्में:","IMPORT_FB":"उन आयातित चीजें जिन्हें आप फेसबुक से पसंद करते हैं","IMPORT_TRAKT":" trakt से अपनी मीडिया लाइब्रेरी आयात करें","IMPORT_DISCOVER":" डिस्कवर से दिलचस्प सामग्री खोजें","IMPORT_DISK":"अपने स्थानीय डिस्क पर आपके पास फिल्में या शो आयात करें","PLEASE_CREATE_ACC":"लाइब्रेरी सिंक और एएमपी सक्षम करने के लिए कृपया खाता बनाएं ; तख़्ता।","IMPORT_DISCOVER_SIGNUP":"साइन अप करें और डिस्कवर से दिलचस्प सामग्री खोजें","IMPORT_DISK_SIGNUP":"साइन अप करें और फिल्में आयात करें या आपके स्थानीय डिस्क पर दिखाएं","LIB_EMPTY_CLOUD":"बादल पुस्तकालय","LIB_EMPTY_CLOUD_DESC":"व्यक्तिगत क्लाउड लाइब्रेरी सभी उपकरणों पर समन्वयित","LIB_EMPTY_EARLY":"जल्दी उठ कर काम शुरू करने वाला व्यक्ति","LIB_EMPTY_EARLY_DESC":"नए एपिसोड के लिए सूचनाएं प्राप्त करें","LIB_EMPTY_PERSONAL":"निजी","LIB_EMPTY_PERSONAL_DESC":"व्यक्तिगत सिफारिशें प्राप्त करें","LIB_EMPTY_CALENDAR_DESC":"अपने व्यक्तिगत देखने के कैलेंडर को शेड्यूल करें","LIB_EMPTY_ALL":"इन सभी को पाने के लिए साइन अप करें:","LIB_EMPTY_BEST":"STREMIO का सर्वश्रेष्ठ पाने के लिए साइन अप करें","LIB_EMPTY_OTHER":"कैलेंडर और अन्य शानदार सुविधाओं को सक्षम करने के लिए साइन अप करें","CALENDAR_ADDED":"Stremio कैलेंडर को आपके डिफ़ॉल्ट डेस्कटॉप कैलेंडर में जोड़ा गया है।","CALENDAR_ADDED_MSG":"यदि यह काम नहीं करता है तो कृपया अपने कैलेंडर एप्लिकेशन को मैन्युअल रूप से इस यूआरएल को जोड़ें","TRAKT_EXPIRED":"ट्रैक्ट प्रमाणीकरण समाप्त हो गया कृपया सेटिंग्स पर जाएं और पुन: प्रमाणित करें","TRAKT_REQUIRES_LOGIN":"ट्रैक्ट त्रुटि","TRAKT_REQUIRES_LOGIN_MSG":"आपको लॉगिन करने की आवश्यकता है","SETTINGS_LABEL":"समायोजन","SETTINGS_NAV_GENERAL":"आम","SETTINGS_NAV_PLAYER":"खिलाड़ी","SETTINGS_NAV_STREAMING":"स्ट्रीमिंग","SETTINGS_NAV_SHORTCUTS":"शॉर्टकट","SETTINGS_SHORTCUT_RELOAD_APP":"रीलोड ऐप","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"बाहर निकलें / वापस जाएं","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"पूर्णस्क्रीन चालू करें","SETTINGS_SHORTCUT_SHOW_CONTROLS":"नियंत्रण दिखाएं","SETTINGS_SHORTCUT_PLAY_PAUSE":"चालू करे / रोके","SETTINGS_SHORTCUT_VOLUME_UP":"आवाज बढ़ाएं","SETTINGS_SHORTCUT_VOLUME_DOWN":"आवाज कम करे","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"उपशीर्षक आकार बढ़ाएँ","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"उपशीर्षक आकार कम करे","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"उपशीर्षक विलंब बढ़ाएँ","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"उपशीर्षक विलंब कम करे","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"स्टार्टअप शुरू","SETTINGS_VLC_DEFAULT":"वीएलसी के साथ खेलें","SETTINGS_UI_LANGUAGE":"यूआई भाषा","SETTINGS_FULLSCREEN_EXIT":"कुंजी से बाहर निकलें पूर्ण स्क्रीन से बाहर निकलें","SETTINGS_GAMEPAD":"गेमपैड समर्थन सक्षम करें","SETTINGS_CLOSE_WINDOW":"विंडो बंद होने पर ऐप बंद करें","SETTINGS_SUBTITLES_LANGUAGE":"डिफ़ॉल्ट उपशीर्षक भाषा","SETTINGS_SUBTITLES_SIZE":"डिफ़ॉल्ट उपशीर्षक आकार","SETTINGS_SUBTITLES_BACKGROUND":"उपशीर्षक पृष्ठभूमि","SETTINGS_SUBTITLES_COLOR":"उपशीर्षक रंग","SETTINGS_SUBTITLES_COLOR_OUTLINE":"उपशीर्षक रूपरेखा रंग","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"उपशीर्षक पृष्ठभूमि रंग","SETTINGS_SEEK_KEY":"तीर कुंजियाँ समय तलाशें","SETTINGS_SEEK_KEY_SHIFT":"तीर कुंजी समय की तलाश करते हैं जब Shift कुंजी आयोजित की जाती है","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"ऑटो-प्ले अगला एपिसोड","SETTINGS_NEXT_VIDEO":"अगले एपिसोड शुरू करने के लिए अधिसूचना दिखाएं","SETTINGS_NEXT_VIDEO_TRIGGER":"इसके लिए अगला एपिसोड अधिसूचना दिखाएं:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"खेलने से पहले स्वत: आकार बदलें","SETTINGS_OVERRIDE_SERVER":"स्ट्रीमिंग सर्वर URL (उन्नत) को ओवरराइड करें","SETTINGS_SERVER_URL":"स्ट्रीमिंग सर्वर यूआरएल:","SETTINGS_SERVER_AVAILABLE":"स्ट्रीमिंग सर्वर उपलब्ध है।","SETTINGS_SERVER_UNAVAILABLE":"स्ट्रीमिंग सर्वर उपलब्ध नहीं है।","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"स्ट्रीमिंग HTTPS एंडपॉइंट:","SETTINGS_USE_BETA":"हमेशा नवीनतम बीटा का उपयोग करें","SETTINGS_IMPORT_FB":"फेसबुक से आयात करें","SETTINGS_IMPORT_DISK":"स्थानीय डिस्क से आयात करें","SETTINGS_IMPORT_TRAKT":"ट्रैक्ट से आयात","SETTINGS_PAUSE_MINIMIZED":"कम से कम प्लेबैक रोकें","SETTINGS_HWDEC":"हार्डवेयर-त्वरित डिकोडिंग","SETTINGS_BACKGROUND":"पृष्ठभूमि प्लेबैक","SETTINGS_SUBSCRIBE_CALENDAR":"कैलेंडर की सदस्यता लें","SETTINGS_REQ_EXPORT":"डेटा निर्यात का अनुरोध करें","SETTINGS_ACC_DELETE":"खाता हटाने का अनुरोध करें","SETTINGS_CHANGE_PASSWORD":"पासवर्ड बदलें","SETTINGS_TOS":"सेवा की शर्तें","SETTINGS_SUPPORT":"सहयोग टीम से संपर्क करें","SETTING_LANGUAGE":"भाषा","SETTINGS_TRAKT":"ट्रैक्ट स्क्रोबिंग","SETTINGS_TRAKT_LOGOUT":"Trakt.tv से लॉग आउट करें","SETTINGS_SCAN_FOR_REMOTE":"रिमोट खोलने के लिए क्यूआर कोड स्कैन करें","SETTINGS_DESKTOP_NOTIFICATIONS":"डेस्कटॉप अधिसूचनाएं","SETTINGS_DATA_SAVER":"आंकड़ा बचतकर्ता","SETTINGS_LANGUAGE_INTERFACE":"इंटरफेस","SETTINGS_LANGUAGE_SUBS":"डिफ़ॉल्ट उपशीर्षक","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"ऑटोसेल ऑडियो ट्रैक","SETTINGS_DEFAULT_AUDIO_TRACK":"डिफ़ॉल्ट ऑडियो ट्रैक","SETTINGS_ACCOUNT":"कारण","SETTINGS_VERSION":"संस्करण","SETTINGS_MPV_WINDOW":"एक अलग विंडो में प्लेयर लॉन्च (उन्नत)","SETTINGS_PLAY_IN_EXTERNAL":"हमेशा बाहरी खिलाड़ी में वीडियो शुरू करें","SETTINGS_STORAGE_BUTTON":"स्थानीय भंडारण साफ़ करें","SETTINGS_STORAGE_MODAL_TITLE":"क्या आपको यकीन है ?","SETTINGS_STORAGE_MODAL_MESSAGE":"यह स्थानीय भंडारण को साफ़ करेगा और आपको लॉग आउट करेगा।","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"स्वचालित","SETTINGS_HW_DISABLED":"बंद","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"ऑडियो","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"ब्लैक बैकग्राउंड कलर का इस्तेमाल करें","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"आकार","SUBSPICKER_DELAY":"विलंब","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"गोपनीयता नीति","MOBILE_CRASH_REPORTING":"क्रैश रिपोर्टिंग","MOBILE_ZOOM_TO_FILL":"स्क्रीन भरने के लिए ज़ूम करें","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"कम बैटरी पर चलाएं","MOBILE_RUN_FOREGROUND":"अग्रभूमि सेवा के रूप में चलाएँ","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"ऑनलाइन","MOBILE_SERVER_OFFLINE":"ऑफलाइन","MOBILE_QR_EXPIRES":"क्यूआर कोड की समय सीमा समाप्त होगि ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"ऊपर क्यूआर कोड स्कैन करें या यहां जाएं ","MOBILE_LINK_ACCOUNT":"खाते लिंक करें","MOBILE_SPEEDPICKER_CANCEL":"रद्द करना","MOBILE_SPEEDPICKER_LABEL":"प्लेबैक स्पीड का चयन करें","MOBILE_EMPTY_LIBRARY":"आपकी लाइब्रेरी खाली है","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"मैं स्ट्रेमियो से मार्केटिंग संचार प्राप्त करने के लिए सहमत हूं","QUIT":"छोड़ना","CONNECTED":"जुड़े हुए","AUTHENTICATE":"प्रमाणित","CACHING":"कैशिंग","SETTINGS_CACHING_DRIVE":"कैशिंग ड्राइव","ENABLE_LOCAL_FILES_ADDON":"स्थानीय फ़ाइलें Addon सक्षम करें (पुनरारंभ की आवश्यकता है)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"रिमोट एचटीटीपीएस कनेक्शन सक्षम करें","TORRENT_PROFILE":"टोरेंट प्रोफाइल","DATA_CACHING":"डेटा कैशिंग","MAGNET_PARSING":"एक चुंबक लिंक पार्सिंग","January":"जनवरी","February":"फ़रवरी","March":"जुलूस","April":"अप्रैल","May":"मई","June":"जून","July":"जुलाई","August":"अगस्त","September":"सितंबर","October":"अक्टूबर","November":"नवंबर","December":"दिसंबर","Monday":"सोमवार","Tuesday":"मंगलवार","Wednesday":"बुधवार","Thursday":"गुरूवार","Friday":"शुक्रवार","Saturday":"शनिवार","Sunday":"रविवार","Action":"कार्य","Comedy":"कॉमेडी","War":"युद्ध","Family":"परिवार","Animation":"एनीमेशन","Adventure":"साहसिक","Fantasy":"कल्पना","Crime":"अपराध","Mystery":"रहस्य","Romance":"रोमांस","Drama":"नाटक","Horror":"डरावनी","Thriller":"थ्रिलर","Sci-Fi":"विज्ञान-कथा","Music":"संगीत","Biography":"जीवनी","Documentary":"दस्तावेज़ी","Sport":"खेल","Musical":"संगीत","Western":"वेस्टर्न","Film-Noir":"फिल्म नोयर","News":"समाचार","History":"इतिहास","Game-Show":"गेम शो","Reality-TV":"रियलिटी टीवी","Talk-Show":"टॉक शो","Film & Entertainment":"फिल्म और मनोरंजन","Gaming":"जुआ","From TV":"टीवी से","Lifestyle":"बॉलीवुड","Science & Education":"विज्ञान की शिक्षा","Cooking & Health":"खाना पकाने और स्वास्थ्य","Beauty & Fashion":"सौंदर्य और फैशन","Sports":"खेल","News & Politics":"समाचार और राजनीति","How-to & DIY":"कैसे और DIY","Tech":"तकनीक","Automotive":"मोटर वाहन","Causes & Non-Profits":"कारण और गैर लाभ","Movies":"चलचित्र","Uk Live Tv":"यूके लाइव टीवी","Fashion":"पहनावा","Business News Radio":"बिजनेस न्यूज रेडियो","Business Tv":"बिजनेस टीवी","Cars & Auto":"कारें और ऑटो","Comedy Radio":"कॉमेडी रेडियो","Lifestyle Radio":"लाइफस्टाइल रेडियो","News Tv":"समाचार टीवी","Food And Wine":"भोजन और शराब","Latino Tv":"लैटिनो टीवी","Shopping Tv":"शॉपिंग टीवी","Religion":"धर्म","Kids":"बच्चे","Body & Soul":"शरीर आत्मा","Education":"शिक्षा","Indian Tv":"भारतीय टीवी","Extreme Sports":"खतरनाक खेल","Middle Eastern Tv":"मध्य पूर्वी टीवी","Celebrity Tv":"सेलिब्रिटी टीवी","Science Tv":"विज्ञान टीवी","Bikini babe":"बिकिनी बेब","Outdoors":"सड़क पर","German Tv":"जर्मन टीवी","French Tv":"फ्रेंच टीवी","Italian Tv":"इतालवी टीवी","Gamer Tv":"गेमर टीवी","Travel":"यात्रा","Asian Tv":"एशियाई टीवी","Entertainment":"मनोरंजन","News Radio":"समाचार रेडियो","Music Radio":"संगीत रेडियो","Language Learning":"भाषा सीखना","Science Radio":"विज्ञान रेडियो","Tech Radio":"टेक रेडियो","Science & Technology Vod":"विज्ञान और प्रौद्योगिकी वोड","new video":"नया वीडियो","new episode":"नई कड़ी","new movie":"नई फिल्म","recommended":"अनुशंसित","we recommend":"हम अनुशंसा करते हैं","offer of the day":"दिन की पेशकश","news":"समाचार","music video":"वीडियो संगीत","CTX_SHOW_HOTKEYS":"हॉटकी दिखाएं","CTX_DISMISS_NOTIF":"सूचनाओं को खारिज करना","CTX_DISMISS_ALL":"सभी खारिज","CTX_SHARE":"साझा करना","CTX_COPY_SHARE_LINK":"शेयर लिंक कॉपी करें","CTX_COPY_MAGNET_LINK":"चुंबक लिंक कॉपी करें","CTX_COPY_STREAM_LINK":"स्ट्रीम लिंक कॉपी करें","CTX_DOWNLOAD_VIDEO":"इस वीडियो को डाउनलोड करें","CTX_DOWNLOAD_SUBS":"उपशीर्षक डाउनलोड करें","CTX_VIEW_ON_YOUTUBE":"यूट्यूब पर देखें","CTX_SHOW":"प्रदर्शन","CTX_PLAY":"खेल","CTX_PLAY_IN":"खेलना","CTX_PLAY_ON":"खेलो","CTX_WATCH_ON":"यहां देखें","CTX_WATCH":"घड़ी","CTX_WATCHED":"देखे","CTX_WATCH_BEGINNING":"शुरुआत से देखो","CTX_WATCH_MOBILE":"एक मोबाइल डिवाइस पर देखें","CTX_REWIND":"शुरुआत करने के लिए रिवाइंड","CTX_MARK_WATCHED":"देखा के रूप में चिह्नित","CTX_MARK_NON_WATCHED":"गैर-देखा के रूप में चिह्नित करें","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"जैसा कि देखा गया है","CTX_UNMARK_REST":"गैर-देखे गए के रूप में बाकी को चिह्नित करें","CTX_RECEIVE_NEW_NOTIF":"नई सूचनाएं प्राप्त करें","CTX_REMOVE_CACHE":"कैश से निकालें","CTX_REMOVE_CACHE_EP":"कैश से एपिसोड निकालें","CTX_OPEN_CONTAINING":"धारक फोल्डर खोलें","CTX_REMOVE":"पुस्तकालय से निकालें","CTX_AVAILABLE_OFFLINE":"उपलब्ध ऑफ़लाइन","CTX_PAUSED":"रोके गए","CTX_ALWAYS_ON_TOP":"हमेशा ऊपर","CTX_FULLSCREEN":"पूर्ण स्क्रीन","CTX_WRONG_SUBS":"गलत उपशीर्षक?","CTX_REPORT_ISSUES":"रिपोर्ट मुद्दा","CTX_COPY":"प्रतिलिपि","CTX_PASTE":"पेस्ट करें","CTX_CLEAR":"स्पष्ट","CTX_CLEAR_RECENT_SEARCHES":"हाल की खोजों को साफ़ करें","HELLO_THERE":"नमस्ते","HOPE_YOU_ENJOY":"हमें आशा है कि आप STREMIO का आनंद लेंगे और यह पहले से ही आपके पसंदीदा ऐप्स में से एक है!","WHO_ARE_WE":"हम कौन हैं? हम इसके पीछे टीम हैं - दो लोग जो इस उत्पाद को बेहतर और बेहतर बनाने के लिए पिछले 3 वर्षों से हर दिन कड़ी मेहनत करते हैं।","SUPPORT_US":"यदि आप STREMIO का उपयोग करने में आनंद लेते हैं यदि STREMIO आपके लिए मूल्यवान है - शब्द फैलाएं!","SPREAD_THE_WORD":"अपने दोस्तों के साथ साझा करें अब स्ट्रैमियो के बारे में शब्द फैलाएं","MORE_PEOPLE":"जितना अधिक लोग STREMIO का उपयोग करेंगे उतना ही बेहतर होगा!","SEND_A_LINK":"या हमारी वेबसाइट पर एक लिंक भेजें","TIP_LOCALFILES":"युक्ति: आप स्थानीय वीडियो फ़ाइलों को स्ट्रैमियो में खींच और छोड़ सकते हैं","ADDON_MY":"मेरे एडॉन्स","ADDON_COMMUNITY":"सामुदायिक एडॉन्स","ADDON_OFFICIAL":"सरकारी Addons","ADDON_REPOS":"एडन संग्रह","ADDON_SEARCH":"खोज एडॉन्स","ADDON_INSTALL":"इंस्टॉल","ADDON_CONFIGURE":"कॉन्फ़िगर","ADDON_UNINSTALL":"स्थापना रद्द करें","ADDON_UPGRADE":"अपग्रेड","ADDON_INSTALLED":"स्थापित","ADDON_INSTALLED_MSG":"Addon स्थापित!","ADDON_UPGRADED_MSG":"एडन अपग्रेड किया गया!","ADDON_UNKNOWN":"अनजान","ADDON_ERR":"Addon इंस्टॉल त्रुटि!","ADDON_DISCONNECTED":"डिस्कनेक्ट किया गया","ADDON_APP_MISSING":"इस स्रोत के लिए ऐप स्थापित नहीं है। क्या आप इसे अभी इंस्टॉल करना चाहते हैं?","ADDON_APP_INSTALL":"अब स्थापित करें","ADDON_PAGE":"एडन पेज","ADDON_TOP_CONTENT":"इस एडन से सर्वश्रेष्ठ","ADDON_PROVIDES":"यह एडन आपको देगा:","ADDON_WATCH":"देखो # {प्रकार} अब!","ADDON_WATCH_FREE":"अभी मुफ्त में # {प्रकार} देखें!","ADDON_ADDON":"ऐड ऑन","ADDON_SUPPORTED_TYPES":"समर्थित प्रकार","ADDON_SUPPORTED_CATALOGS":"समर्थित कैटलॉग","ADDON_PROVIDES_DISCOVER":"अधिक # {प्रकार} डिस्कवर में","ADDON_PROVIDES_STREAMS":"# {प्रकार} देखें","ADDON_PROVIDES_STREAMS_FREE":"मुफ्त में # {प्रकार} देखें","ADDON_PROVIDES_SUBTITLES":"# {प्रकार के लिए उपशीर्षक","ADDON_CANTDETECT":"हम एक रनिंग स्ट्रैमियो का पता नहीं लगा सके ताकि हम यह पता लगा सकें कि आपने कौन से एडॉन्स इंस्टॉल किए हैं।","ERR_NO_META":"इस बारे में कोई जानकारी नहीं मिली","ERR_GETTING_META":"इसके बारे में जानकारी पुनर्प्राप्त करने में त्रुटि।","ERR_CANT_PARSE_MAGNET":"चुंबक पार्स करने में असमर्थ","ERR_NO_MAGNET_INFOHASH":"चुंबक के लिए कोई वैध जानकारी हैश","ERR_NO_FILE_PATH":"फ़ाइल के लिए एक पथ के बिना अनुरोध भेजने में असमर्थ","ERR_NO_TORRENT":"कोई धार नहीं लौटा","ERR_NO_SUPPORTERD_FILES":"कोई समर्थित फाइल नहीं मिली","ERR_OPENING_FILES":"बाहरी फाइलें नहीं खोल सका","ERR_INVALID_LINK":"अमान्य लिंक","ERR_REGISTERED_ONLY":"यह विकल्प केवल पंजीकृत उपयोगकर्ताओं के लिए उपलब्ध है।","ERR_CLIPBOARD":"क्लिपबोर्ड से नहीं खेल सकते हैं","ERR_CLIPBOARD_READ":"इस मंच पर क्लिपबोर्ड नहीं पढ़ सकते हैं","ERR_CLIPBOARD_GENERIC":"क्लिपबोर्ड में पाया जाने वाला कोई भी यूआरएल नहीं मिला। कृपया एक वीडियो को एक यूआरएल (उदा। एक चुंबक लिंक) कॉपी करें।","BOARD_CONTINUE_WATCHING":"देखना जारी रखें","BOARD_EXPLANATION_RECOMMENDATIONS":"फिल्में आपके लिए विशेष रूप से चुने गए।
    यह फिल्म नमूना सिफारिश है।","BOARD_EXPLANATION_EPISODES":"आपकी पसंदीदा श्रृंखला के नए एपिसोड यहां आते हैं।
    श्रृंखला जोड़ें आप अपनी लाइब्रेरी में अनुसरण करते हैं।","BOARD_EXPLANATION_VIDEOS":"आपके पसंदीदा चैनलों के नए एपिसोड यहां आते हैं।
    YouTube चैनल जोड़ें जो आप अपनी लाइब्रेरी में अनुसरण करते हैं।","WEBSITE_SLOGAN_WATCH":"तुरंत देखें","WEBSITE_SLOGAN_ALL":"एक ही स्थान पर आप सभी वीडियो सामग्री का आनंद लेते हैं","WEBSITE_SLOGAN_NEW":"आप सभी देख सकते हैं","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"से देखना","WEBSITE_DOWNLOAD":"अब डाउनलोड करो","WEBSITE_DOWNLOAD_FOR":"अभी डाउनलोड करें","WEBSITE_IS_DESKTOP":"Stremio एक डेस्कटॉप एप्लिकेशन है इस पृष्ठ को अपने पीसी पर खोलें और इसे डाउनलोड करें","WEBSITE_DESKTOP_DEMO_VID":"डेस्कटॉप डेमो","WEBSITE_PAGE_HOME":"घर","WEBSITE_PAGE_FEATURES":"विशेषताएं","WEBSITE_PAGE_ADDONS":"ऐड-ऑन","WEBSITE_PAGE_TECH":"प्रौद्योगिकी","WEBSITE_PAGE_CREATE_ADDON":"Addon बनाएँ","WEBSITE_PAGE_CONTACTS":"संपर्क","WEBSITE_PAGE_BLOG":"ब्लॉग","WEBSITE_TYPE_movie":"चलचित्र","WEBSITE_TYPE_series_PL":"श्रृंखला","WEBSITE_TYPE_tv":"लाइव टीवी","WEBSITE_TYPE_channel":"चैनल","WEBSITE_STREMIO_WHAT_IS":"Stremio एक ऐप है जो आपको व्यवस्थित करने और तुरंत अपने पसंदीदा वीडियो फिल्में टीवी श्रृंखला और टीवी चैनल देखने में मदद करता है।","WEBSITE_FEATURES_WATCH":"तुरंत एचडी में देखें","WEBSITE_FEATURES_WATCH_DETAIL":"क्लिक करें और अपने पसंदीदा मूवीज़ टीवी शो वीडियो और टीवी चैनल दिखाता है।","WEBSITE_FEATURES_SUBS":"स्वचालित उपशीर्षक","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio स्वचालित रूप से आपकी भाषा के लिए समन्वयित उपशीर्षक चुनता है।","WEBSITE_FEATURES_SUBS_LABEL":"आपका कदम प्रमुख।","WEBSITE_FEATURES_CAST":"टीवी और मोबाइल उपकरणों पर खेलते हैं","WEBSITE_FEATURES_CAST_DETAIL":"Appletv Chromecast स्मार्ट टीवी (डीएलएनए / यूपीएनपी) और मोबाइल उपकरणों के लिए कास्ट करें।","WEBSITE_LIB":"अपने सभी उपकरणों पर सिंक की गई अपनी व्यक्तिगत पुस्तकालय का आनंद लें","WEBSITE_LIB_COLLECT":"STREMIO से लीजिए","WEBSITE_LIB_IMPORT":"फेसबुक से आयात करें","WEBSITE_LIB_LOCAL":"अपने स्थानीय ड्राइव से जोड़ें","WEBSITE_BOARD":"बोर्ड - अधिसूचनाओं और सिफारिशों के लिए आपका एक-स्टॉप प्लेस","WEBSITE_BOARD_RECOMMEND":"अनुशंसित टीवी शो","WEBSITE_BOARD_TRENDING":"ट्रेंडिंग फिल्म","WEBSITE_BOARD_NEW":"नया वीडियो","WEBSITE_BOARD_EPISODE":"नई कड़ी","WEBSITE_BOARD_1":"देखने के लिए कुछ दिलचस्प खोज रहे हैं? अपने स्वाद के आधार पर सिफारिशें प्राप्त करें!","WEBSITE_BOARD_2":"अधिसूचित हो जाएं जब आपके पसंदीदा टीवी शो या यूट्यूब चैनल का एक नया एपिसोड बाहर है!","WEBSITE_BOARD_YOUTUBE":"YouTube चैनलों के नए वीडियो","WEBSITE_BOARD_EPISODES":"श्रृंखला के नए एपिसोड आप अनुसरण करते हैं","WEBSITE_ADDONS":"सामग्री एडॉन्स","WEBSITE_TECH_DETAIL":"हम लव टेक्नोलॉजी हम पागल विज्ञान से प्यार करते हैं! NStremio निम्नलिखित ओपन सोर्स टेक्नोलॉजीज का उपयोग कर रहा है:","WEBSITE_TECH_WCJS":"WebChimera.js STREMIO को अच्छे प्रदर्शन के साथ किसी भी वीडियो प्रारूप को चलाने की अनुमति देता है।","WEBSITE_TECH_WCJS_EXTRA":"हम कोर प्रोजेक्ट योगदानकर्ता हैं","WEBSITE_TECH_ELECTRON":"इलेक्ट्रॉन के साथ स्ट्रैमियो बनाने के लिए एक अभिनव मंच प्रदान करता है।","WEBSITE_TECH_ELECTRON_EXTRA":"हम परियोजना योगदानकर्ता हैं","WEBSITE_TECH_LINVODB":"एक डेटाबेस तकनीक जो सुनिश्चित करती है कि आपका डेटा व्यवस्थित हो और कहीं भी आपके पास उपलब्ध हो।","WEBSITE_TECH_LINVODB_EXTRA":"इन-हाउस टेक्नोलॉजी","WEBSITE_CREATE_ADDON":"अपना Addon बनाएँ","WEBSITE_CREATE_ADDON_DETAIL":"क्या आपके पास वीडियो सामग्री प्रदान करने वाली सेवा है? हम आपको अपने एडन बनाकर STREMIO की सुविधाओं से लाभान्वित होने में मदद करेंगे।","WEBSITE_CREATE_ADDON_BENEFITS":"स्ट्रैमियो के लिए एक एडन बनाने के लाभ","WEBSITE_P2P_BEAUTY":"पीयर-टू-पीयर स्ट्रीमिंग की सुंदरता","WEBSITE_P2P_1":"मांग या लाइव स्ट्रीमिंग पर विश्वसनीय और किफायती पूर्ण एचडी / 4 के वीडियो","WEBSITE_P2P_2":"वितरण मंच महान उपयोगकर्ता अनुभव प्रदान करते हैं","WEBSITE_P2P_3":"हम आपकी सटीक जरूरतों को पूरा करने वाले एडन को बनाएंगे","WEBSITE_P2P_CONTACT":"इच्छुक? आपका स्वागत है हमसे संपर्क करें ।","WEBSITE_P2P_CONTACT_EXTRA":"हमें आपकी सामग्री को स्ट्रैमियो के साथ एकीकृत करने में मदद करने में प्रसन्नता होगी!","WEBSITE_P2P":"एक बार थोड़ी देर में ऐसी तकनीक आती है जो गेम का नाम बदलता है। हमने अपने पीयर-टू-पीयर (पी 2 पी) वीडियो स्ट्रीमिंग इंजन के निर्माण में बहुत समय और प्रयास का निवेश किया जो किसी भी उपयोग केस के साथ अनुकूलित करने के लिए महान प्रदर्शन और बहुमुखी प्रतिभा प्रदान करता है। N Drm-सक्षम पी 2 पी वीडियो के लिए मांग या लाइव स्ट्रीमिंग के लिए हमसे संपर्क करें।","WEBSITE_THOUGHTS":"विचार हम साझा करते हैं:","WEBSITE_SPREAD":"स्ट्रैमियो के बारे में शब्द फैलाएं:","WEBSITE_CONTACT":"हमसे संपर्क करें हम आपसे सुनकर खुश होंगे!","WEBSITE_OPENSOURCE":"हमारे ओपन सोर्स प्रोजेक्ट्स के लिए हमारे पास जाते हैं","WEBSITE_BITCOIN":"बिटकॉइन दान करें:","WEBSITE_FAQ":"अक्सर पूछे जाने वाले प्रश्नों","WEBSITE_FAQ_SHORT":"सामान्य प्रश्न","WEBSITE_QUESTIONS":"प्रशन","WEBSITE_TOS":"उपयोग की शर्तें","WEBSITE_LEGAL":"कानूनी","WEBSITE_PAGE_ABOUT":"के बारे में","WEBSITE_PAGE_BECOME_PARTNER":"भागीदार बनें","WEBSITE_ALL_YOU_CAN_WATCH":"आप चाहते हैं Neverything देखने की स्वतंत्रता।","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"स्ट्रैमियो क्या है?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio वीडियो सामग्री एकत्रीकरण के लिए एक-स्टॉप हब है। अपने आप को किसी भी डिवाइस पर सभी प्रकार के स्रोतों से वीडियो व्यवस्थित करें और देखें।","WEBSITE_WHAT_IS_STREMIO_P2":"मूवीज़ टीवी श्रृंखला लाइव टेलीविजन या वेब चैनल जैसे यूट्यूब और ट्विच.टीवी दिखाता है - आप इसे स्ट्रैमियो पर पा सकते हैं।","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio एक आधुनिक मीडिया केंद्र है जो आपके वीडियो मनोरंजन के लिए एक-स्टॉप समाधान है। आप एडॉन्स स्थापित करने के लिए आसान से वीडियो सामग्री को देखते हैं और व्यवस्थित करते हैं।","WEBSITE_WHAT_IS_STREMIO_P2_V2":"मूवीज़ टीवी लाइव टीवी या वेब चैनल दिखाता है - यह सब स्ट्रैमियो पर खोजें।","WEBSITE_ENJOI_ON_ALL_DEVICES":"अपने सभी मीडिया उपकरणों पर आनंद लें","WEBSITE_DEVICES_COLLECT":"STREMIO से लीजिए","WEBSITE_DEVICES_IMPORT_FB":"फेसबुक से आयात करें","WEBSITE_DEVICES_LOCAL":"स्थानीय ड्राइव से जोड़ें","WEBSITE_JOIN_THE_PARTY_NOW":"अब पार्टी में शामिल हों","WEBSITE_DEVICES_ALL":"अपने सभी उपकरणों पर उपयोग करने में आसान;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly विस्तारणीय वीडियो कैटलॉग;","WEBSITE_ORGANIZE_YOUR_MEDIA":"अपने मीडिया को व्यवस्थित करने के लिए महान सुविधाएं;","WEBSITE_AS_SEEN_ON":"जैसा देखा गया","WEBSITE_STREMIO":"स्ट्रमियो","WEBSITE_LINK_ABOUT_US":"हमारे बारे में","WEBSITE_LINK_TECHNOLOGY":"प्रौद्योगिकी","WEBSITE_LINK_APPS":"ऐप्स","WEBSITE_LINK_DOWNLOADS":"डाउनलोड","WEBSITE_MORE":"अधिक","WEBSITE_LINK_ADDONS":"ऐड-ऑन","WEBSITE_LINK_ADDON_SDK":"एडन एसडीके","WEBSITE_LINK_CONTRIBUTE":"योगदान","WEBSITE_LINK_COMMUNITY":"समुदाय","WEBSITE_LINK_BLOG":"ब्लॉग","WEBSITE_MORE_MORE":"... & अधिक","WEBSITE_LINK_HELP":"सहायता केंद्र","WEBSITE_LINK_CONTACTS":"व्यापार पूछताछ","WEBSITE_LINK_TOS":"नियम एवं शर्तें","WEBSITE_LINK_PRAVACY":"गोपनीयता नीति","WEBSITE_SUBSCRIBE":"सदस्यता लेने के","WEBSITE_NEWSLETTER":"अद्भुत सामान के लिए हमारे न्यूजलेटर में शामिल हों","WEBSITE_PLACEHOLDER_EMAIL":"आपका ईमेल","WEBSITE_COMMUNITY":"समुदाय","WEBSITE_LINK_PRAVACY_LEGAL":"गोपनीयता और कानूनी","WEBSITE_WHY":"हम क्यों करते हैं","WEBSITE_WHY_P1":"Stremio में हम हर दिन काम करने के लिए आते हैं क्योंकि हम वीडियो-ऑन-डिमांड उद्योग के लिए एक महत्वपूर्ण समस्या हल करना चाहते हैं। हर मिनट प्रकाशित इतनी नई सामग्री है कि इसके चारों ओर अपना रास्ता ढूंढना लगभग असंभव है।","WEBSITE_WHY_P2":"हम लोगों को वीडियो मनोरंजन की विशाल दुनिया को नेविगेट करने में मदद करते हैं और आनंद लेने के लिए नई सामग्री की खोज करते हैं। हमारे ऐप्स एक साथ फिल्म श्रृंखला लाइव टीवी वेब चैनल और अधिक लाते हैं। हम उपयोगकर्ताओं के लिए शीर्षक और ब्रॉडकास्टरों को ढूंढने के लिए इसे अविश्वसनीय रूप से आसान बनाने के लिए समर्पित हैं।","WEBSITE_WHY_P3":"आप किसी भी डिवाइस पर हमारी सेवा का उपयोग कर सकते हैं और किसी भी समय STREMIO बनाने के लिए एकमात्र वीडियो मनोरंजन हब बनाने के लिए आपको कभी भी आवश्यकता होगी।","WEBSITE_TEAM":"टीम","WEBSITE_TEAM_P":"Stremio टीम छोटा है लेकिन शक्तिशाली है: हम में से दस के बीच हम एक्स भाषाओं में कोड और सॉफ्टवेयर विकास यूआई और यूएक्स डिजाइन विपणन और विज्ञापन और व्यापार और स्टार्टअप में विशेषज्ञता साझा करते हैं।","WEBSITE_FEATURES":"विशेषताएं","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"आसानी से नई सामग्री की खोज करें","WEBSITE_FEATURES_DISCOVER_P":"आसानी से नई फिल्में टीवी शो श्रृंखला और चैनलों को देखने के लिए खोजें। श्रेणी शैली रेटिंग रिकेंसी आदि द्वारा ब्राउज़ करें या बस खोजने के लिए एक नाम टाइप करें। Stremio नई वीडियो सामग्री केक का एक टुकड़ा खोजने बनाता है।","WEBSITE_FEATURES_ALL_CONTENT":"एक स्क्रीन पर आपकी सभी वीडियो सामग्री","WEBSITE_FEATURES_ALL_CONTENT_P1":"देखें कि आप किन फिल्मों या वीडियो को समाप्त नहीं करते हैं और उन्हें देखना जारी रखते हैं; नए एपिसोड और रिलीज के लिए अधिसूचित हो जाएं; और उन सिफारिशों के माध्यम से ब्राउज़ करें जिन्हें आप अपनी देखने की आदतों के आधार पर प्राप्त करेंगे।","WEBSITE_FEATURES_LIBRARY":"अपनी वीडियो लाइब्रेरी व्यवस्थित करें","WEBSITE_FEATURES_LIBRARY_P1":"अपने STREMIO लाइब्रेरी में किसी भी क्लिक के साथ किसी भी शीर्षक को जोड़ें और अपनी सामग्री के चारों ओर अपनी सामग्री को अच्छी तरह से व्यवस्थित रूप से व्यवस्थित तरीके से व्यवस्थित करें।","WEBSITE_FEATURES_CALENDAR":"आप जो कुछ भी देखते हैं उसका ट्रैक रखें","WEBSITE_FEATURES_CALENDAR_P1":"अपनी लाइब्रेरी में आपके द्वारा जोड़े गए सभी फिल्मों और श्रृंखला का कैलेंडर विज़ुअलाइजेशन प्राप्त करें। अपने STREMIO कैलेंडर निर्यात करें और इसे सिंक करें ताकि आप हमेशा जान सकें कि एक नया एपिसोड या प्रीमियर कब देय है।","WEBSITE_FEATURES_BIG_SCREEN":"एक बड़ी स्क्रीन पर अपनी वीडियो सामग्री का आनंद लें","WEBSITE_FEATURES_BIG_SCREEN_P1":"जो भी आप किसी अन्य डिवाइस पर देख रहे हैं उसे कास्ट करें - चाहे वह एक फोन टैबलेट हो या एक क्लिक के साथ एक टीवी हो।","WEBSITE_FEATURES_SOURCES":"कई अलग-अलग स्रोतों से वीडियो देखें","WEBSITE_FEATURES_SOURCES_P":"कई अलग-अलग प्रदाताओं से प्राप्त वीडियो का आनंद लेने के लिए आधिकारिक और सामुदायिक एडॉन्स स्थापित करें - सभी एक चिकना उपयोग करने में आसान ऐप में।","WEBSITE_CREATE_AN_ADDON":"एक एडन बनाएँ","WEBSITE_FEATURES_SYNC":"अपनी लाइब्रेरी को विभिन्न उपकरणों में सिंक करें और अपने प्लेबैक को फिर से शुरू करें","WEBSITE_FEATURES_SYNC_P1":"अपने सभी डिवाइसों में अपने खाते से लॉगिन करें और अपने लाइब्रेरी एडॉन्स प्लेबैक और कैलेंडर सिंक्रनाइज़ का आनंद लें।","WEBSITE_FEATURES_EXTENDABLE":"एडॉन्स द्वारा विस्तारणीय वीडियो कैटलॉग","WEBSITE_FEATURES_EXTENDABLE_P1":"Stremio Addon कैटलॉग विभिन्न प्रकार की वीडियो सामग्री को स्थापित करने और देखने के लिए कई एडॉन्स प्रदान करता है। इसमें फिल्में लाइव टीवी स्पोर्ट न्यूज़ पॉडकास्ट वेब चैनल वीडियो गेम और अधिक दिखाती हैं।","WEBSITE_FEATURES_AUTO_SUBS":"स्वचालित उपशीर्षक","WEBSITE_FEATURES_AUTO_SUBS_P1":"हमारे उपशीर्षक एडॉन्स के साथ आप अपनी पसंदीदा भाषा के लिए स्वचालित रूप से चयनित विकल्प प्राप्त करते हैं।","WEBSITE_FEATURES_CHROMECAST":"क्रोमकास्ट के लिए कास्टिंग","WEBSITE_FEATURES_CHROMECAST_P1":"एक बड़ी स्क्रीन पर अपनी वीडियो सामग्री का आनंद लें या जो भी आप किसी अन्य डिवाइस पर देख रहे हैं उसे डालें।","WEBSITE_FEATURES_KEEP_TRACK":"अपने पसंदीदा टीवी शो और वेब चैनलों का ट्रैक रखें","WEBSITE_FEATURES_KEEP_TRACK_P1":"अपनी पसंदीदा श्रृंखला और वेब चैनलों के नए एपिसोड के लिए कैलेंडर विज़ुअलाइजेशन और नोटिफिकेशन प्राप्त करें।","WEBSITE_FEATURES_POWER_USER":"पावर उपयोगकर्ता सुविधाएँ","WEBSITE_FEATURES_POWER_USER_P1":"बाहरी खिलाड़ी में खेलें","WEBSITE_FEATURES_POWER_USER_P2":"एक टोरेंट फ़ाइल या चुंबक लिंक से खेलें","WEBSITE_FEATURES_POWER_USER_P3":"फेसबुक पसंद या स्थानीय डिस्क से अपनी लाइब्रेरी में आयात करें","WEBSITE_ADD_ONS":"ऐड-ऑन","WEBSITE_ADD_ONS_P1":"सभी वीडियो सामग्री Stremio एक एडन सिस्टम के माध्यम से सोर्स प्रदान की जाती है - ऐप में कोई सामग्री या सामग्री प्रदाता नहीं बनाया गया है।","WEBSITE_ADD_ONS_P2":"एडॉन्स के दो समूह उपलब्ध हैं: आधिकारिक और सामुदायिक एडॉन्स।","WEBSITE_ADD_ONS_P3":"आधिकारिक लोगों को Stremio द्वारा विकसित और होस्ट किया गया है जबकि सामुदायिक एडॉन्स हमारे समुदाय के सदस्यों द्वारा बनाए जाते हैं जो उन्हें भी होस्ट करते हैं।","WEBSITE_ADDONS_OFFICIAL":"सरकारी Addons","WEBSITE_ADDONS_WATCHUB":"अपनी पसंदीदा फिल्में श्रृंखला को स्ट्रीम करें और आईट्यून्स हूलू अमेज़ॅन और अन्य यूके / यूएस सेवाओं जैसे प्रदाताओं से दिखाएं।","WEBSITE_ADDONS_YOUTUBE":"अपने पसंदीदा यूट्यूब चैनलों को विज्ञापन मुक्त देखें और आपके द्वारा अनुसरण किए गए योगदानकर्ताओं से नए अपलोड के लिए अधिसूचनाएं प्राप्त करें।","WEBSITE_ADDONS_FILMON":"मुफ्त में लाइव टीवी फिल्में और सामाजिक टेलीविजन देखें। 600 टीवी चैनल 45000 मुफ्त फिल्में वृत्तचित्र और अधिक।","WEBSITE_ADDONS_OPENSUBTITLES":"मूवी और टीवी उपशीर्षक कई भाषाओं में हजारों अनुवादित उपशीर्षक हर दिन अपलोड किए गए।","WEBSITE_ADDONS_COMMUNITY":"सामुदायिक एडॉन्स","WEBSITE_ADDONS_FILMON_VOD":"फिल्मऑन.टीवी से मांग पर वीडियो देखें","WEBSITE_ADDONS_TWICH":"Twitch.tv से लाइव स्ट्रीम देखें - ई-स्पोर्ट्स उद्योग के लिए एक वीडियो स्ट्रीमिंग प्लेटफ़ॉर्म।","WEBSITE_ADDONS_VODO":"इंडी फिल्में पूरी तरह से नि: शुल्क देखें।","WEBSITE_ADDONS_NETFLIX":"नेटफ्लिक्स फिल्में और वेब श्रृंखला देखें।","WEBSITE_ADDONS_CREATE":"एक एडन बनाएँ","WEBSITE_ADDONS_CREATE_P1":"यदि आप चाहें तो आप अपना खुद का एडन विकसित कर सकते हैं। इस तरह आप अपने आप को और हमारी सामुदायिक पहुंच को नई वीडियो सामग्री तक पहुंचा सकते हैं और दुनिया भर के लाखों उपयोगकर्ताओं के एक नए लक्षित दर्शकों तक पहुंच सकते हैं।","WEBSITE_ADDONS_START_CREATE":"शुरू करने के लिए Stremio Addon SDK पृष्ठ पर जाएं:","WEBSITE_DOWNLOADS":"डाउनलोड","WEBSITE_DOWNLOADS_P1":"इष्टतम प्रदर्शन के लिए हम अनुशंसा करते हैं कि आप STREMIO ऐप्स के नवीनतम उपलब्ध संस्करण का उपयोग करें। यदि किसी कारण से आप पुराने संस्करण का उपयोग करना चाहते हैं तो आप इसे यहां डाउनलोड कर सकते हैं।","WEBSITE_DOWNLOADS_FOR_WIN":"खिड़कियों के लिए STREMIO","WEBSITE_DOWNLOADS_FOR_MAC":"मैकोज़ के लिए स्ट्रेमियो","WEBSITE_DOWNLOADS_FOR_LINUX":"लिनक्स के लिए STREMIO","WEBSITE_DOWNLOADS_FOR_ANDROID":"एंड्रॉइड के लिए स्ट्रेमियो","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"आईओएस के लिए स्ट्रेमियो (सीमित संस्करण)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"योगदान","WEBSITE_CONTRIBUTE_P1":"Stremio प्लेटफ़ॉर्म ओपन सोर्स है और आप आसानी से उस सामग्री के लिए एक एडन बना सकते हैं जो वर्तमान में सोर्स नहीं है।","WEBSITE_CONTRIBUTE_WHY":"आपको एडन क्यों बनाना चाहिए?","WEBSITE_CONTRIBUTE_WHY_P1":"अपनी वीडियो सामग्री के लिए नए दर्शकों तक पहुंचें","WEBSITE_CONTRIBUTE_WHY_P2":"स्ट्रैमियो का उपयोगकर्ता आधार तेजी से बढ़ रहा है - लॉन्च स्ट्रैमियो के पहले वर्ष के भीतर दुनिया भर में 1 मिलियन उपयोगकर्ता प्राप्त हुए थे और प्लेटफॉर्म के अस्तित्व के दूसरे वर्ष में यह संख्या 2.5 मिलियन हो गई थी।","WEBSITE_CONTRIBUTE_WHY_P3":"अपने एडन के साथ आप आसानी से इस दर्शकों तक पहुंच सकते हैं और अपनी वीडियो सामग्री को वितरित कर सकते हैं।","WEBSITE_CONTRIBUTE_ALL":"एक ही स्थान पर अपनी पसंदीदा फिल्में वीडियो श्रृंखला और चैनल देखें।","WEBSITE_CONTRIBUTE_ALL_P1":"आप एक विशेष प्रकार की सामग्री के प्रशंसक हैं जो अभी तक स्ट्रैमियो पर उपलब्ध नहीं हैं? इसके लिए एक एडन बनाएं और अपने पसंदीदा वीडियो को बाजार पर मनोरंजन केंद्रों का उपयोग करने के लिए सबसे बड़े और आसान में से एक में देखने का आनंद लें।","WEBSITE_CONTRIBUTE_ALL_P2":"इसके शीर्ष पर आपको अन्य समान विचारधारा वाले स्ट्रैमियो समुदाय के सदस्यों का अंतहीन आभार मिलेगा।","WEBSITE_CONTRIBUTE_MONETIZE":"अपने एडन का मुद्रीकरण करें और अपनी मदद से पैसे कमाएं","WEBSITE_CONTRIBUTE_MONETIZE_P1":"एक बार जब आप STREMIO के लिए एक नया एडन विकसित कर लेंगे तो आप आसानी से इसे कई अलग-अलग तरीकों से मुद्रीकृत कर सकते हैं। यदि आप इस पर विचार कर रहे हैं कि इस पर संपर्क करने के लिए स्वतंत्र महसूस करें","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - हम एडन मुद्रीकरण विकल्पों के बारे में परामर्श करने और सलाह देने में प्रसन्न होंगे।","WEBSITE_CONTRIBUTE_TRANSLATE":"एक स्वयंसेवक अनुवादक बनें","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"यदि आप विभिन्न भाषाओं में स्ट्रैमियो ऐप्स का आनंद लेना चाहते हैं तो आप स्वयंसेवी अनुवादकों के हमारे समुदाय में शामिल हो सकते हैं। वे हमें कई अलग-अलग भाषाओं में stremio के संस्करण जोड़ने में मदद करते हैं।","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"क्या आप शुरू करने के लिए उत्सुक हैं?","WEBSITE_TRANSALTE_STREMIO":"STREMIO का अनुवाद करें","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"सरकारी समुदाय","WEBSITE_COMMUNITY_OFFICIALS_P1":"बढ़ते स्ट्रैमियो समुदाय का हिस्सा बनें। सोशल मीडिया पर हमें का पालन करें और नमस्ते कहने के लिए शर्मिंदा न हों - हम अपने प्रशंसकों से सुनवाई पसंद करते हैं!","WEBSITE_COMMUNITY_UNOFFICIALS":"अनौपचारिक समुदाय","STREMIO_COMMUNITY_NL":"स्ट्रीमियो नीदरलैंड्स","STREMIO_COMMUNITY_BRASIL":"स्ट्रीमियो ब्रासिल","STREMIO_COMMUNITY_GERMANY":"Stremio जर्मनी","STREMIO_COMMUNITY_BELGIUM":"स्ट्रमियो बेल्जियम","STREMIO_COMMUNITY_FRANCE":"स्ट्रमियो फ्रांस","STREMIO_COMMUNITY_PORTUGAL":"स्ट्रमियो पुर्तगाल","STREMIO_COMMUNITY_ITALY":"स्ट्रीमियो इटली","STREMIO_COMMUNITY_UK":"स्ट्रमियो ब्रिटेन","STREMIO_COMMUNITY_USA":"स्ट्रमियो यूएसए","STREMIO_COMMUNITY_MEXICO":"Stremio मेक्सिको","STREMIO_COMMUNITY_ADDONS":"स्ट्रमियो एडॉन्स","STREMIO_COMMUNITY_AWESOME":"भयानक STREMIO","WEBSITE_COMMUNITY_PARTNERS":"भागीदारों और समर्थक","WEBSITE_COMMUNITY_GOODIES":"Stremio उपहार","WEBSITE_COMMUNITY_WALLPAPERS":"वॉलपेपर","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"संपर्क करें","WEBSITE_CONTACT_US_P1":"यदि आपके कोई प्रश्न हैं तो टिप्पणियां या सुझाव नीचे दिए गए संपर्क फ़ॉर्म के माध्यम से हमारे संपर्क में आने के लिए स्वतंत्र महसूस करते हैं।","WEBSITE_CONTACT_US_P2":"ध्यान रखें कि हम बुल्गारिया में स्थित हैं इसलिए समय क्षेत्र के अंतर के कारण आपकी क्वेरी को संबोधित करने में देरी हो सकती है।","WEBSITE_CONTACT_US_SUCCESS":"आपका संदेश भेज दिया गया है। हम आपकी सबसे पुरानी सुविधा पर आपके पास वापस आ जाएंगे।","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"कृपया एक मान्य ईमेल पता प्रवेश करें!","WEBSITE_CONTACT_US_Q_RELATED_TO":"आपका प्रश्न किससे संबंधित है?","WEBSITE_CONTACT_US_Q_OS":"आपका ऑपरेशन सिस्टम क्या है?","WEBSITE_CONTACT_US_PH_EMAIL":"आपका ईमेल","WEBSITE_CONTACT_US_PH_MESSAGE":"संदेश","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"भेजना","WEBSITE_CONTACT_US_Q_1":"स्थापित करने के लिए कैसे?","WEBSITE_CONTACT_US_Q_2":"अनइंस्टॉल कैसे करें?","WEBSITE_CONTACT_US_Q_3":"(HTML) Lasagna कैसे बनाया जाए?","WEBSITE_CONTACT_US_Q_4":"ऐड-ऑन","WEBSITE_CONTACT_US_OS_1":"खिड़कियाँ","WEBSITE_CONTACT_US_OS_2":"मैक ओ एस","WEBSITE_CONTACT_US_OS_3":"लिनक्स","WEBSITE_CONTACT_US_OS_4":"एंड्रॉयड","WEBSITE_CONTACT_US_OS_5":"आईओएस","WEBSITE_TECHNOLOGY":"प्रौद्योगिकी","WEBSITE_TECHNOLOGY_P1":"हम प्रौद्योगिकी और पागल विज्ञान से प्यार करते हैं।
    यहां शक्तियां क्या हैं (यह सब ओपन-सोर्स है)।","WEBSITE_TECHNOLOGY_P_QT":"क्रॉस-प्लेटफार्म सॉफ्टवेयर विकास सबसे अच्छा है।","WEBSITE_TECHNOLOGY_P_MPV":"एक मुक्त ओपन सोर्स और क्रॉस-प्लेटफार्म मीडिया प्लेयर।","WEBSITE_TECHNOLOGY_P_RN":"प्रतिक्रिया देशी आपको केवल जावास्क्रिप्ट का उपयोग करके मोबाइल ऐप्स बनाने देता है।","WEBSITE_TECHNOLOGY_P_VLC":"मल्टीमीडिया प्राप्त करने के लिए आवेदन में एम्बेडेड मीडिया फ्रेमवर्क।","WEBSITE_TECHNOLOGY_P_REALM":"दायरे एक मोबाइल मंच और SQLite और कोर डेटा के लिए एक प्रतिस्थापन है।","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js एक ओपन-सोर्स क्रॉस-प्लेटफार्म जावास्क्रिप्ट रनटाइम पर्यावरण है।","WEBSITE_TECHNOLOGY_P_RUST":"जंग एक बहु-प्रतिमान प्रणाली प्रोग्रामिंग भाषा है जो सुरक्षा पर विशेष रूप से सुरक्षित सहमति पर केंद्रित है।","WEBSITE_TECHNOLOGY_CONTRIBUTE":"परियोजना में योगदान","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"STREMIO में दो तरीके हैं और उत्पाद को बेहतर बनाने में हमारी सहायता करें।","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"आप मंच का अनुवाद करके अपने मूल्यवान भाषा कौशल दान कर सकते हैं ...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"या","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... आप समुदाय के एडॉन्स बनाने के लिए अपने कोडिंग कौशल को नियोजित कर सकते हैं।","WEBSITE_TRANSLATE_STREMIO":"STREMIO का अनुवाद करें","WEBSITE_404_OH_NO":"उह ओह! जिस पृष्ठ को आप ढूंढ रहे हैं वह यहां नहीं है ...","WEBSITE_GO_HOME":"घर जाओ","WEBSITE_LINK_OTHER_DOWNLOADS":"अन्य डाउनलोड","WEBSITE_FAQ_ABR":"सामान्य प्रश्न","WEBSITE_SUPPORT":"सहायता","WEBSITE_DOWNLOAD_4_0_BETA":"अब Stremio 4 बीटा डाउनलोड करें","WEBSITE_GET_FOR_DESKTOP":"डेस्कटॉप के लिए जाओ","WEBSITE_LINK_ADDON_COMPETITION":"एडन प्रतियोगिता","WEBSITE_LINK_ART_CONTEST":"कला प्रतियोगिता","WEBSITE_MY_ACCOUNT":"मेरा खाता","WEBSITE_MAINPAGE_FAQ_001_H1":"स्ट्रैमियो क्या है?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio एक आधुनिक मीडिया केंद्र है जो आपको जो कुछ भी आप चाहते हैं उसे देखने की स्वतंत्रता देता है।","WEBSITE_MAINPAGE_FAQ_002_H1":"यह कैसे काम करता है?","WEBSITE_MAINPAGE_FAQ_002_P1":"एक बार जब आप अपने डिवाइस पर STREMIO स्थापित कर लेंगे और एक खाता बनाएं जो आपको करना है, वह एडन कैटलॉग पर जाना है और इच्छित किसी भी एडन को स्थापित करना है और आप जाने के लिए अच्छे हैं!","WEBSITE_MAINPAGE_FAQ_002_P2":"इसके बाद आप सामग्री की खोज शुरू करने के लिए खोज या बोर्ड अनुभागों में जा सकते हैं।","WEBSITE_MAINPAGE_FAQ_003_H1":"मैं यहाँ क्या देख सकता हूँ?","WEBSITE_MAINPAGE_FAQ_003_P1":"ए लॉट: मूवीज़ टीवी शो वेब चैनल स्पोर्ट टीवी चैनल पॉडकास्ट और अधिक सुनते हैं। हमारे एडन सिस्टम के लिए धन्यवाद, आप विभिन्न प्रकार की सामग्री तक पहुंच सकते हैं।","WEBSITE_MAINPAGE_FAQ_004_H1":"क्या स्टेमियो ओपन-सोर्स है?","WEBSITE_MAINPAGE_FAQ_004_P1":"हां आप निम्न लिंक देख सकते हैं: $ {1} डेस्कटॉप ऐप $ {2} और $ {3} github संगठन $ {4}।","WEBSITE_MAINPAGE_FAQ_005_H1":"क्या स्ट्रैमियो सुरक्षित है?","WEBSITE_MAINPAGE_FAQ_005_P1":"हां: क्योंकि यह ओपन-सोर्स सॉफ़्टवेयर है कोड पब्लिक रूप से ऑडिटेबल है और आप इसे स्वयं की समीक्षा कर सकते हैं।","WEBSITE_MAINPAGE_FAQ_006_H1":"मेरी गोपनीयता के बारे में कैसे?","WEBSITE_MAINPAGE_FAQ_006_P1":"हम उपयोगकर्ताओं की गोपनीयता का सम्मान करते हैं और आपके खाते को बनाने और सिंक करने के लिए आवश्यक न्यूनतम के अलावा कोई व्यक्तिगत डेटा एकत्र नहीं करते हैं।","WEBSITE_MAINPAGE_FAQ_006_P2":"साइनअप पर $ {1} अतिथि मोड $ {2} भी है जिसके लिए कोई डेटा नहीं चाहिए: इस मोड में हमारे बैकएंड में कोई कॉल नहीं की जाती है। हालांकि यह उपयोगी सुविधाओं की कीमत पर आता है जैसे कि डिवाइस पर अपनी लाइब्रेरी को सिंक करने में सक्षम होना।","WEBSITE_MAINPAGE_FAQ_007_H1":"क्या मैं अपने टीवी को डाला जा सकता हूं?","WEBSITE_MAINPAGE_FAQ_007_P1":"हां हम क्रोमकास्ट का समर्थन करते हैं और आप डेस्कटॉप और मोबाइल ऐप्स (एंड्रॉइड) दोनों से डाले जा सकते हैं।","WEBSITE_MAINPAGE_FAQ_008_H1":"स्ट्रैमियो में कितने एडॉन्स हैं?","WEBSITE_MAINPAGE_FAQ_008_P1":"2019 से अधिक के अंत तक - अधिक जानकारी के लिए हमारे एडन कैटलॉग की जांच करें।","WEBSITE_MAINPAGE_FAQ_009_H1":"Addon कैटलॉग में क्या है परे stremio विस्तारित किया जा सकता है?","WEBSITE_MAINPAGE_FAQ_009_P1":"हां आपको उन लोगों की जांच करनी चाहिए: $ {1} pimpmystremio $ {2} $ {3} Reddit समुदाय $ {4} $ {5} STREMIO डाउनलोडर $ {6} आदि","WEBSITE_MAINPAGE_FAQ_010_H1":"Stremio किस डिवाइस का समर्थन करता है?","WEBSITE_MAINPAGE_FAQ_010_P1":"हमारे पास विंडोज मैक और लिनक्स के लिए डेस्कटॉप ऐप्स हैं। मोबाइल के लिए हम एंड्रॉइड और आईओएस का समर्थन करते हैं हालांकि ध्यान रखें कि आईओएस कार्यक्षमता में सीमित है (अधिकांश एडॉन्स का समर्थन नहीं करता है)।","WEBSITE_MAINPAGE_FAQ_010_P2":"ऐसे कई एंड्रॉइड-आधारित डिवाइस हैं जिन्हें आप एनवीआईडीआईए शील्ड और अमेज़ॅन फायर स्टिक की तरह स्ट्रैमियो चला सकते हैं लेकिन हम आधिकारिक तौर पर उनका समर्थन नहीं करते हैं।","WEBSITE_MAINPAGE_FAQ_011_H1":"क्या आप STREMIO में कुछ सामग्री जोड़ सकते हैं?","WEBSITE_MAINPAGE_FAQ_011_P1":"क्षमा करें, हम खुद को कोई सामग्री प्रदान नहीं करते हैं लेकिन अधिक स्ट्रैमियो एडॉन्स आपने अधिक सामग्री स्थापित की है जिसे आप ढूंढ पाएंगे।","WEBSITE_MAINPAGE_FAQ_012_H1":"क्या स्ट्रैमियो चुंबक लिंक चला सकते हैं?","WEBSITE_MAINPAGE_FAQ_012_P1":"हां और यह सामान्य HTTP लिंक और टोरेंट फ़ाइलों (ड्रैग और ड्रॉप) भी चला सकता है।","WEBSITE_MAINPAGE_FAQ_013_H1":"क्या मैं एक वीडियो डाउनलोड कर सकता हूं और ऑफ़लाइन देख सकता हूं?","WEBSITE_MAINPAGE_FAQ_013_P1":"उपलब्ध ऑफ़लाइन एक आगामी सुविधा है लेकिन यदि आप अपने डिवाइस (सेटिंग्स पैनल से) को कैश करने की अनुमति देते हैं तो आप बिना किसी कनेक्शन के वीडियो देख सकते हैं।","WEBSITE_MAINPAGE_FAQ_014_H1":"कुछ भी नहीं काम करता है मेरी मदद करो!","WEBSITE_MAINPAGE_FAQ_014_P1":"क्या आप वाकई स्थापित किए गए हैं? यदि हां हमारे $ {1} सहायता केंद्र $ {2} से जांचें।","WEBSITE_MAINPAGE_FAQ_015_H1":"Stremio यह विकास संचालन को कैसे बनाए रखता है?","WEBSITE_MAINPAGE_FAQ_015_P1":"हम कभी-कभी गैर-दखल देने वाले विज्ञापन चलाते हैं, लेकिन हम दान मॉडल पर जाने पर विचार कर रहे हैं।","WEBSITE_MAINPAGE_FAQ_015_P2":"अधिक प्रश्नों के लिए हमारे $ {1} सहायता केंद्र $ {2} पर जाएं।","HELP_LEARN_MORE":"हमारे बारे में अधिक जानने में हमारी सहायता करें।","LIFESTYLE":"बॉलीवुड","SPORTS":"खेल","FOOD_HEALTH":"भोजन और स्वास्थ्य","BEAUTY_FASHION":"सौंदर्य और फैशन","NEWS":"समाचार","GAMING":"जुआ","SCIENCE_EDUCATION":"विज्ञान की पढ़ाई","MUSIC":"संगीत","TRAVEL":"यात्रा","LATE_NIGHT":"देर रात","REALITY":"वास्तविकता","COMEDY":"कॉमेडी","DIY":"DIY कैसे करें","TECH":"तकनीक","CINEMA":"सिनेमा","CONTINUE":"जारी रखें","SLOW_LOADING":"धीमी लोडिंग?","I_GIVE_UP":"मैं हार मानता हूं","LEARN_MORE":"और अधिक जानें","POOR_SOURCE":"यह स्रोत खराब उपलब्ध है या आपका इंटरनेट कनेक्शन पर्याप्त तेज़ नहीं है","PICK_CATEGORIES_ERR":"आपको कम से कम 3 श्रेणियां चुननी होंगी","ADJUST_TIMING":"के साथ समय समायोजित करें","ADJUST_SIZE":"के साथ आकार समायोजित करें","SEARCH_ANYTHING":"आप कुछ भी खोज सकते हैं ...","ALL_CATEGORIES":"सभी","SEARCH_CATEGORIES":"सिनेमा श्रृंखला यूट्यूब और टीवी","SEARCH_PERSONS":"अभिनेता निदेशकों और लेखकों","SEARCH_PROTOCOLS":"HTTP और चुंबक लिंक","SEARCH_TYPES":"आईएमडीबी / टीवीडीबी लिंक","WATCHED":"देखे","SHOW_LESS":"कम दिखाएं","LAST_SEARCHES":"अंतिम खोज","CLEAR_HISTORY":"इतिहास मिटा दें","CHOOSE_SOME":"इनमें से कुछ चुनें:","NO_WEB_REMOTE":"वेब रिमोट लोड नहीं किया जा सका","STREMIO_OFFLINE":"Stremio ऑफ़लाइन है","STREMIO_EXPENSIVE_CONNECTION":"हमने पाया है कि आप मोबाइल डेटा कनेक्शन का उपयोग कर रहे हैं क्या आप जारी रखना चाहते हैं?","USE_DATA":"डेटा का उपयोग करें","WARNING":"चेतावनी","MORE_INFO":"और जानकारी ...","STREMIO_TV_STREMIO":"स्ट्रमियो","STREMIO_TV_LOADING":"लोड हो रहा है ...","STREMIO_TV_BACK_TO_LANGUAGES":"वापस भाषाओं में","STREMIO_TV_REMOTE":"दूरस्थ","STREMIO_TV_GO_TO":"के लिए जाओ:","STREMIO_TV_OR_SCAN":"या स्कैन:","STREMIO_TV_ADDON_INSTRUCTIONS":"कृपया अपने पसंदीदा एडॉन्स को स्थापित करने के लिए निर्देशों का पालन करें।","STREMIO_TV_LIVE_TV":"लाइव टीवी","STREMIO_TV_RESUME_WATCHING":"फिर से देखना","STREMIO_TV_LOADING_BACKGROUND":"लोड हो रहा है पृष्ठभूमि","STREMIO_TV_CHECKING_AUTHENTICATION":"प्रमाणीकरण की जाँच","STREMIO_TV_LOADING_BOARD":"लोड हो रहा हुकुम","STREMIO_TV_LOGIN_HEADER_LINE_1":"हम चाहते हैं कि हमारे उपयोगकर्ताओं को हमारे सॉफ़्टवेयर के साथ सर्वोत्तम संभव व्यक्तिगत अनुभव हो।","STREMIO_TV_LOGIN_HEADER_LINE_2":"यही कारण है कि हम आपको अपने खाते में बनाने और / या लॉगिन करने के लिए कहेंगे।","STREMIO_TV_LOGIN_FOOTER_LINE_1":"समझने के लिए धन्यवाद","STREMIO_TV_LOGIN_FOOTER_LINE_2":"STREMIO टीम","STREMIO_TV_REMOTE_INSTRUCTIONS":"अपने स्मार्टफोन / टैबलेट / डेस्कटॉप के साथ वेब रिमोट का उपयोग करने के लिए:","STREMIO_TV_WIFI_SETUP":"वाई-फाई सेटअप","STREMIO_TV_WIFI_HEADER_LINE_1":"स्ट्रमियो सर्कल ने इंटरनेट कनेक्शन का पता नहीं लगाया।","STREMIO_TV_WIFI_DETAILS_1":"जुड़े:","STREMIO_TV_WIFI_DETAILS_2":"स्ट्रमियो-सर्कल","STREMIO_TV_WIFI_DETAILS_3":"पासवर्ड का प्रयोग करें:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"लिंक के साथ एक वेब ब्राउज़र खोलें:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"खोज","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"चैनल","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"समायोजन","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"खाते लिंक करें","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"खोज","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"साफ़","STREMIO_TV_SEARCH_HISTORY_TITLE":"खोज इतिहास","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"खोज इतिहास साफ़ करे","STREMIO_TV_FILTERS_DESCRIPTION":"नीचे दिए गए किसी एक फ़िल्टर में से चुनें","FILTERS":"फिल्टर","SETTINGS":"समायोजन","ACCOUNT":"खाता","LOGOUT":"लॉग आउट","THEMES":"Themes","PLAYBACK":"प्लेबैक","PLAYBACK_SPEED":"प्लेबैक स्पीड","AUDIO_TRACKS":"ऑडियो ट्रैक","VIDEOS":"वीडियो","SERVER":"सर्वर","LINKS":"Links","ABOUT":"के बारे में","INTERFACE":"इंटरफेस","ANIMATIONS":"एनिमेशन","STATUS":"Status","LANGUAGE":"भाषा","SIZE":"आकार","DELAY":"देरी","BOLD":"बोल्ड","TEXT_COLOR":"लिखावट का रंग","OUTLINE_COLOR":"रूपरेखा रंग","BACKGROUND_COLOR":"पीछे का रंग","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"समय अवधी देखे","AUTO_PLAY":"अगला एपिसोड अपने आप चालू करे","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"देखे गए के रूप में चिह्नित करें","MARK_AS_UNWATCHED":"अनदेखे के रूप में चिह्नित करें","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"देखणा चालू रखे","ALL":"सारे","SECONDS":"सेकंद्स","ON":"चालू","OFF":"बंद","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"स्विच डिवाइस","REMOTE_VIDEOS":"वीडियो","REMOTE_ADJUST_TIMING":"समय समायोजित करें","REMOTE_ADJUST_SIZE":"आकार समायोजित करें","REMOTE_COULD_NOT_BE_LOADED":"वेब रिमोट लोड नहीं किया जा सका","REMOTE_RETRY":"पुन: प्रयास करें","TORRENT_PROFILE_DEFAULT":"डिफ़ॉल्ट","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"स्ट्रैमियो क्या है?","FAQ_001_P1":"Stremio एक मीडिया सेंटर सॉफ्टवेयर है जो वीडियो मनोरंजन के लिए दिमाग में उपयोग के साथ डिज़ाइन किया गया है। STREMIO आपको व्यवस्थित करने की अनुमति देता है & amp; फिल्म श्रृंखला चैनल और लाइव टीवी का अपना संग्रह देखें।","FAQ_001_P2":"Stremio सामग्री को एकत्रित करें जो आपको अपनी स्थानीय डिस्क और हमारे एडॉन्स सिस्टम से दिखाता है।","FAQ_001_P3":"यह आपको यह भी सूचित करेगा कि नए एपिसोड / वीडियो / फिल्में जो आप में रुचि रखते हैं और आपके लिए मूवी सिफारिशें प्रदान करते हैं।","FAQ_02_H1":"STREMIO KODI और PLEX की तुलना कैसे करता है?","FAQ_02_P1":"हम सॉफ्टवेयर के उन दो टुकड़ों से प्रेरित हैं। लेकिन हमारे पास अलग-अलग लक्ष्य हैं - स्ट्रैमियो विशेष रूप से मनोरंजन वीडियो की ओर लक्षित है और इसका उपयोग करने में आसान होने के लिए मुख्यधारा के समाधान बनने का प्रयास करता है।","FAQ_02_P2":"स्ट्रैमियो कभी भी अनुकूलन योग्य और कोडी और प्लेक्स के रूप में समृद्ध नहीं होगा, लेकिन इसका उपयोग करना काफी आसान है। बस $ {1} इसे प्राप्त करें और $ {2} देखें :)","FAQ_03_H1":"Stremio नेटफ्लिक्स की तुलना कैसे करता है?","FAQ_03_P1":"फिर से नेटफ्लिक्स हमारी प्रेरणाओं में से एक है। हम नेटफ्लिक्स के उपयोगकर्ता अनुभव को बहुत से अतिरिक्त उपहारों को प्राप्त करने का प्रयास करते हैं। लेकिन सबसे महत्वपूर्ण बात यह है कि हम आपको अपनी लाइब्रेरी प्रबंधित करने और हमारे एडन सिस्टम के साथ नए सामग्री स्रोत जोड़ने की स्वतंत्रता दे रहे हैं।","FAQ_03_P2":"इससे स्ट्रैमियो असीमित रूप से विस्तार योग्य बनाता है, इसलिए जब आप स्ट्रैमियो का उपयोग करते हैं तो आप कभी भी सामग्री से सीमित नहीं होते हैं नेटफ्लिक्स लाइसेंस का फैसला करता है। उदाहरण के लिए स्ट्रैमियो के माध्यम से आप $ {1} filmon.tv $ {2} $ {3} twitch.tv $ {4} $ {5} youtube $ {6} $ {7} वोडो $ {8} और से सामग्री देख सकते हैं यहां तक ​​कि $ {9} netflix $ {10} ही!","FAQ_04_H1":"स्ट्रैमियो फ्लिपबोर्ड की तुलना कैसे करता है?","FAQ_04_P1":"हमें वह सवाल नहीं मिलता है जो अक्सर लोगों को स्टार्ट-अप करने के लिए छोड़कर को छोड़कर :)","FAQ_04_P2":"Stremio एक सामग्री एग्रीगेटर डिजाइन द्वारा है जो अनिवार्य रूप से इसे वीडियो के लिए फ्लिपबोर्ड बनाता है। यह हमारे बोर्ड सेक्शन में बहुत स्पष्ट है जो आपको फ्लिपबोर्ड की तरह अनुसरण करने के लिए कैटलॉग और नया एपिसोड / नई वीडियो अधिसूचना देता है।","FAQ_05_H1":"Stremio पॉपकॉर्न समय की तुलना कैसे करता है?","FAQ_05_P1":"Stremio और पॉपकॉर्न समय उपयोगकर्ता इंटरफ़ेस में समान हैं क्योंकि वीडियो मनोरंजन कैटलॉग सही करने के कई तरीके नहीं हैं :)","FAQ_05_P2":"लेकिन पॉपकॉर्न टाइम विशिष्ट स्रोतों से टॉरेंट स्ट्रीमिंग पर केंद्रित है Stremio अप्रतिबंधित है और केवल एक सामग्री एग्रीगेटर है - यह एक विशिष्ट सामग्री स्रोत में बंद नहीं है।","FAQ_05_P3":"इसके अलावा हम डिफ़ॉल्ट रूप से किसी भी टोरेंट एडॉन्स प्रदान नहीं करते हैं, इसलिए स्ट्रैमियो को आधिकारिक कार्यक्षमता के साथ पॉपकॉर्न टाइम उपयोग-केस को कवर नहीं किया जाता है।","FAQ_05_P4":"एक और उल्लेखनीय अंतर यह है कि पॉपकॉर्न टाइम पूरी तरह से खुला स्रोत है जबकि Stremio $ {1} आंशिक रूप से ओपन सोर्स $ {2} है।","FAQ_06_H1":"क्या आप इस फिल्म / श्रृंखला को जोड़ देंगे?","FAQ_06_P1":"कोई खेद नहीं :(","FAQ_06_P2":"जैसा कि अन्य प्रश्नों में उल्लेख किया गया है Stremio स्वयं से कोई सामग्री प्रदान नहीं करता है - सब कुछ एडॉन्स सिस्टम के माध्यम से जोड़ा जाता है। यदि आपके पास कोई सामग्री अनुरोध है तो आप उस खिलाड़ी में रिपोर्ट बटन का उपयोग कर सकते हैं जो वर्तमान में आपके द्वारा उपयोग किए जा रहे एडन के लेखक को एक ईमेल भेज देगा।","FAQ_07_H1":" ","FAQ_07_P1":" ","FAQ_07_P2":" ","FAQ_08_H1":"क्या आप एक्स के लिए एडन बनाएंगे?","FAQ_08_P1":"यह पूरी तरह से संभव है।","FAQ_08_P2":"यदि आपके पास Addon के लिए एक विचार है तो हमें $ {1} office@stremio.com पर एक लाइन छोड़ें, लेकिन कृपया सुनिश्चित करें कि आपका एडन विचार किसी भी कॉपीराइट या उपयोग की शर्तों का उल्लंघन नहीं करेगा।","FAQ_08_P3":"फिलहाल हमारे रोडमैप पर अगली चीजें मांग और क्रंचरोल पर fandangonow filmon.tv वीडियो के लिए Addons हैं।","FAQ_09_H1":"क्या Stremio बिटटोरेंट का उपयोग करता है?","FAQ_09_P1":"हां स्ट्रैमियो एक स्ट्रीमिंग प्रोटोकॉल के रूप में बिटटोरेंट का समर्थन करता है। आप या तो एक टोरेंट एडन के साथ या ड्रैग-एंड-ड्रॉप करके एक .torrent फ़ाइल को स्ट्रैमियो में या एक चुंबक लिंक को खोज बार में चिपकाने के साथ कर सकते हैं।","FAQ_09_P2":"कृपया ध्यान दें कि बिटटोरेंट का उपयोग कर एकमात्र आधिकारिक एडन $ {1} वोडो $ {2} है जो इंडी सामग्री प्रदान करता है सभी को बिटटोरेंट के साथ वितरित करने की अनुमति है।","FAQ_09_P3":"हम किसी तीसरे पक्ष के एडॉन्स के उपयोग का समर्थन नहीं करते हैं जो कॉपीराइट उल्लंघन को सक्षम कर सकता है।","FAQ_10_H1":"आधिकारिक एडॉन्स के साथ स्ट्रैमियो में मैं क्या देख सकता हूं?","FAQ_10_P1":"डिफ़ॉल्ट रूप से आप अपने एम्बेडेड प्लेयर के साथ स्ट्रैमियो के भीतर फिल्मऑन.टीवी यूट्यूब और वोडो सामग्री देख सकते हैं। इसके अतिरिक्त हमारे पास twitch.tv और कुछ अन्य लोगों के लिए एक एडन है।","FAQ_10_P2":"यह संयुक्त का चयन प्रदान करता है:","FAQ_10_L1":"Filmon.tv द्वारा प्रदान किए गए लोकप्रिय टीवी चैनल - उदाहरण के लिए ई 4 बीबीसी बॉलीवर्ल्ड टीवी","FAQ_10_L2":"यूट्यूब से सब कुछ - उदाहरण के लिए बीबीसी समाचार शीर्ष गियर vevo pewdiepie","FAQ_10_L3":"वोडो के साथ इंडी फिल्में","FAQ_10_L4":"Twitch.tv के साथ ऑनलाइन गेमिंग प्रसारण","FAQ_10_P3":"इसके अतिरिक्त गाइडबॉक्स और नेटफ्लिक्स एडॉन्स के साथ प्रदान किए गए कई सामग्री स्रोत हैं जो नहीं करते हैं पूरी तरह से स्ट्रैमियो के अंदर खेलते हैं लेकिन दी गई सेवा में रीडायरेक्ट करेंगे। उदाहरण के लिए गाइडबॉक्स एडन आपको उन फिल्मों का चयन करेगा जो आप अमेरिका में Tubitv और क्रैकल जैसी सेवाओं से मुक्त करने के लिए स्ट्रीम कर सकते हैं।","FAQ_11_H1":"Stremio स्थापित नहीं होगा कि मुझे क्या करना चाहिए?","FAQ_11_P1":"यदि आप विंडोज़ पर $ {1} इस वैकल्पिक इंस्टॉलर $ {2} का प्रयास करें।","FAQ_11_P2":"यदि आप मैक ओएस एक्स पर हैं तो कृपया ध्यान रखें कि हम ओएस एक्स मैवरिक्स (10.9) से पुराने कुछ भी समर्थन नहीं करते हैं।","FAQ_11_P3":"यदि आप लिनक्स पर हैं तो ध्यान रखें कि हम इस समय केवल 64 बिट (x64) लिनक्स का समर्थन करते हैं।","FAQ_11_P4":"यदि आप अभी भी अपनी समस्या का समाधान नहीं कर सकते हैं तो कृपया हमें $ {1} फेसबुक ग्रुप $ {2} पर लिखें।","FAQ_12_H1":"मेरा एंटी-वायरस क्यों शिकायत करता है? क्या स्ट्रैमियो सुरक्षित है?","FAQ_12_P1":"हम आपको आश्वस्त करते हैं कि STREMIO $ {1} 100% क्लीन $ {2} है।","FAQ_12_P2":"आपका एंटीवायरस शिकायत कर रहा है क्योंकि हम अपने इंस्टॉलर में विज्ञापन शामिल करते हैं जो कुछ एंटी-वायरस प्रोग्राम विज्ञापन-बर्तन के रूप में पहचानते हैं।","FAQ_12_P3":"यदि आप अभी भी अनिश्चित हैं तो आप हमारे $ {1} वैकल्पिक इंस्टॉलर $ {2} को आजमा सकते हैं।","FAQ_13_H1":"मैं एडन कैसे बना सकता हूं?","FAQ_13_P1":"शुरुआत करने वालों के लिए हम आपको गिटहब पर $ {1} एडॉन्स सिस्टम मॉड्यूल $ {2} की जांच करते हैं।","FAQ_13_P2":"बाद में आप $ {1} हैलो वर्ल्ड ट्यूटोरियल $ {2} का अनुसरण कर सकते हैं।","FAQ_13_P3":"यदि आपके पास कोई प्रोग्रामिंग कौशल नहीं है तो कृपया $ {1} reddit समुदाय $ {2} पर अपना विचार पोस्ट करें और $ {3}office@stremio.com $ {4} पर अपने एडन आइडिया के साथ हमसे संपर्क करें।","FAQ_14_H1":"एडॉन्स कैसे प्रकाशित होते हैं?","FAQ_14_P1":"जब आप एक एडन और होस्ट बनाते हैं और अपने मैनिफेस्ट में एंडपॉइंट फ़ील्ड बनाते हैं जो एक काम करने वाले एडन पते को इंगित करता है, एडन स्वचालित रूप से खुद को $ {1} एडन कैटलॉग $ {2} में प्रकाशित करेगा।","FAQ_14_P2":"ऐसा इसलिए होता है क्योंकि स्ट्रैमियो-एडॉन्स मॉड्यूल का सर्वर हिस्सा स्वचालित रूप से एडन की घोषणा करने के लिए हमारे एपीआई को कॉल करता है। जब हमारा एपीआई आपके एंडपॉइंट को मान्य एडन के रूप में मान्य करता है तो यह कैटलॉग में दिखाना शुरू कर देगा।","FAQ_15_H1":"क्या मैं अपने ब्राउज़र में STREMIO चला सकता हूं?","FAQ_15_P1":"फिलहाल नहीं, लेकिन यह आ रहा है!","FAQ_15_P2":"यदि आप एक अल्फा देखने के लिए उत्सुक हैं तो आप इसे यहां देख सकते हैं: $ {1} alpha4.strem.io $ {2}। ध्यान रखें कि इस अल्फा पर स्ट्रीमिंग अक्षम है। हम क्रोम फ़ायरफ़ॉक्स ओपेरा और एज का समर्थन करते हैं।","FAQ_16_H1":"टीवी के लिए कास्टिंग काम / उपशीर्षक काम नहीं करता है","FAQ_16_P1":"टीवी में कास्टिंग डीएलएनए तकनीक का उपयोग करता है जो विभिन्न टीवी ब्रांडों और मॉडलों के बीच बहुत असंगत है। इसी कारण से हमारे पास हर मामले में इसका परीक्षण करने की क्षमता नहीं है, इसलिए यह सही से दूर है। इसके बावजूद हम इसे लगातार सुधारने पर काम कर रहे हैं लेकिन हम आपको एक समय का अनुमान नहीं दे सकते हैं जब डीएलएनए आपके टीवी के साथ ठीक से काम करना शुरू कर देगा।","FAQ_16_P2":"यदि आप कास्टिंग मेनू में अपना टीवी भी नहीं देखते हैं तो कृपया अपने नेटवर्क कनेक्शन को अक्षम करने और इसे फिर से सक्षम करने का प्रयास करें (विंडोज़ राइट पर नेटवर्क पर क्लिक करें और सक्षम / अक्षम करें) के साथ ही अपने राउटर टीवी और पीसी को पुनरारंभ करें।","FAQ_16_P3":"यदि आप अभी भी मुद्दों का सामना कर रहे हैं तो आप अपने टीवी ब्रांड और मॉडल जानकारी को ${1}office@stremio.com $ {2} पर भेजकर हमारी सहायता कर सकते हैं।","FAQ_16_P4":"इस बीच हम क्रोमकास्ट की सलाह देते हैं कि हम एक अच्छी तरह से समर्थन करते हैं या बस अपने टीवी में अपने पीसी में एक एचडीएमआई केबल के साथ प्लगिंग करते हैं।","FAQ_17_H1":"Stremio फ्रीज और / या दुर्घटनाओं मैं क्या कर सकता हूँ?","FAQ_17_P1":"सबसे पहले यदि आप एवीजी एंटी-वायरस के साथ विंडोज 7 का उपयोग कर रहे हैं: हमें उस संयोजन के साथ एक समस्या है। समस्या एवीजी में ही है और हमारे अंत में इसे हल करने का कोई उचित तरीका नहीं है। दुर्भाग्य से एंटी-वायरस को अपवाद या अक्षम करना काम नहीं करेगा। एकमात्र समाधान एवीजी को किसी और चीज के साथ बदलने के लिए है।","FAQ_17_P2":"यदि यह समस्या नहीं है लेकिन आप अभी भी विंडोज़ का उपयोग कर रहे हैं तो कृपया नवीनतम सर्विस पैक में अपडेट करें और अपने जीपीयू ड्राइवरों को अपडेट / इंस्टॉल करें फिर पुन: प्रयास करें।","FAQ_17_P3":"यदि आप समस्या को हल नहीं कर रहे हैं या आप मैक या लिनक्स का उपयोग कर रहे हैं तो कृपया हमें $ {1} हमारे फेसबुक ग्रुप $ {2} पर समस्या के सटीक विवरण की रिपोर्टिंग करें।","FAQ_18_H1":"मैं एडन कैसे बना सकता हूं?","FAQ_18_P1":"शुरुआत करने वालों के लिए हम आपको गिटहब पर $ {1} एडॉन्स सिस्टम मॉड्यूल $ {2} की जांच करते हैं।","FAQ_18_P2":"बाद में आप $ {1} हैलो वर्ल्ड ट्यूटोरियल $ {2} का अनुसरण कर सकते हैं।","FAQ_18_P3":"यदि आपके पास कोई प्रोग्रामिंग कौशल नहीं है तो कृपया $ {1} reddit समुदाय $ {2} पर अपना विचार पोस्ट करें और $ {3}office@stremio.com $ {4} पर अपने एडन आइडिया के साथ हमसे संपर्क करें।","FAQ_19_H1":"STREMIO डिस्क स्थान क्यों ले रहा है?","FAQ_19_P1":"स्ट्रीमियो में अस्थायी रूप से स्ट्रीम करने वाली वीडियो फ़ाइलों को रखने के लिए स्थानीय कैश है।","FAQ_19_P2":"इसमें दो लाभ हैं: सबसे पहले यह STREMIO को आगे के वीडियो को पूर्व-बफर करने की अनुमति देता है ताकि चिकनी स्ट्रीमिंग सुनिश्चित हो सके। दूसरा यह वीडियो को स्थानीय कैश में रखता है ताकि आप उन्हें ऑफ़लाइन देखना जारी रख सकें।","FAQ_19_P3":"सेटिंग पैनल में कैश सेटिंग पर कितना स्ट्रैमियो निर्भर करता है। स्ट्रैमियो आपकी डिस्क पर सेट राशि (उदा। 2 जीबी) तक रख सकता है जब तक कि वर्तमान में स्ट्रीम किए गए वीडियो उस मामले से बड़े न हों, जिस स्थिति में इसे तब तक रखने के लिए पर्याप्त भंडारण आवंटित करना होगा जब तक कि आप इसे स्ट्रीम कर रहे हों।","FAQ_20_H1":"कैश फ़ोल्डर कहां है?","FAQ_20_P1":"विंडोज़ पर यह सेटिंग्स में चुने गए ड्राइव में स्ट्रैमियो-कैश है (उदा। E: stremio-cache)","FAQ_20_P2":"मैकोज़ पर यह ~ / पुस्तकालय / आवेदन समर्थन / stremio / stremio-cache","FAQ_20_P3":"लिनक्स पर यह ~ / .stremio / stremio-cache या ~ / stremio-cache","FAQ_21_H1":"मुझे मिलता है स्ट्रीमिंग सर्वर त्रुटि नहीं मिली है मैं क्या कर सकता हूं?","FAQ_21_P1":"यदि आपको यह त्रुटि मिलती है तो इसका मतलब कुछ चीजों में से एक है:","FAQ_21_P2":"1) आप हमारे $ {1} वेब संस्करण $ {2} के माध्यम से यूट्यूब / बिटटोरेंट स्रोत द्वारा समर्थित एडन का उपयोग करने की कोशिश कर रहे हैं। इस मामले में आपको हमारे डेस्कटॉप संस्करण को $ {3} हमारी वेबसाइट $ {4} से इंस्टॉल करना चाहिए।","FAQ_21_P3":"2) आपके STREMIO स्थापना के साथ कुछ गलत है। इस मामले में $ {1} वेबसाइट $ {2} से हमारे नवीनतम डेस्कटॉप संस्करण को पुनः स्थापित करने का प्रयास करें। यदि यह आपके पीसी को पुनरारंभ करने और फिर से कोशिश करने वाले एंटी-वायरस प्रोग्राम और फ़ायरवॉल को अक्षम करने का प्रयास करने में मदद नहीं करता है। यदि यह काम नहीं करता है तो कृपया हमें हमारे $ {3} हमारे फेसबुक समूह $ {4} पर लिखें।","FAQ_22_H1":"मैं आईओएस पर अधिकांश एडॉन्स को नहीं देख सकता / उपयोग नहीं कर सकता","FAQ_22_P1":"ऐप्पल ऐप स्टोर के नियमों और शर्तों में प्रतिबंधों के कारण हमने केवल आईओएस आवेदन को केवल एडॉन्स के एक विशेष सेट पर प्रतिबंधित कर दिया है।","FAQ_22_P2":"लेकिन बाकी आश्वासन दिया गया है - भविष्य में आईओएस के लिए और अधिक एडॉन्स होंगे और हम एक एकीकरण भी जोड़ सकते हैं जो आपको आईओएस ऐप को स्ट्रैमियो स्ट्रीमिंग सर्वर से जोड़ने के लिए सभी स्ट्रैमियो एडॉन्स का उपयोग करने की अनुमति देगा।"}')},487:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filmovi","TYPE_series":"Serije","TYPE_tv":"TV","TYPE_channel":"Kanal","TYPE_other":"Ostalo","TYPE_movie_PL":"Filmovi","TYPE_series_PL":"Serije","TYPE_tv_PL":"TV","TYPE_channel_PL":"Kanal","TYPE_other_PL":"Ostalo","TYPE_ALL":"All","VIDEO":"Video","BACK":"Povratak","MORE":"Više","DONE":"Završeno","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Otkrij","Board":"Početna","Library":"Videoteka","My Library":"Moja videoteka","Calendar":"Kalendar","NOTIFICATION_ONLINE":"Sada ste povezani","NOTIFICATION_OFFLINE":"Niste povezani","INTERNET_CONNECTION":"Greška povezivanja","STORAGE_FULL_TITLE":"Upozorenje: memorija je popunjena!","STORAGE_FULL_TEXT":"Vaše postavke, preferencije ili podaci za prijavu neće biti spremljeni. Ponovno pokrenite ili ponovno instalirajte Stremio.","SEARCH":"Tražilica...","SEARCH_NO_RESULTS":"Nema pronađenih rezltata","SEARCH_EXPLANATION_CONTENT":"Pretraži filmove, serije, YouTube i TV kanale","SEARCH_EXPLANATION_PEOPLE":"Pretraži glumce, redatelje i producente","SEARCH_PASTE_LINKS":"Kopiraj poveznice","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Dodaj u videoteku","REMOVE_FROM_LIB":"Ukloni iz videoteke","ADDED_TO_LIB":"Dodano u videoteku","REMOVED_FROM_LIB":"Uklonjeno iz videoteke","TRAILER":"Najava","WATCH_TRAILER":"Pogledaj najavu","WATCH_NOW":"Pokreni gledanje","SHOW":"Prikaži","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Gledaj nasumično","IMDB_RATING":"IMDb Ocjena","YEAR":"Godina","DIRECTOR":"Redatelj","WRITER":"Producent","LEAD_ACTORS":"Glavni glumci","CAST":"Uloge","CREW":"Ekipa","SHOW_MORE_CAST":"Prikaži više »","AIRED":"Emitirano","SEASONS":"Sezone","GENRE":"Žanr","CATALOG":"Katalog","SUMMARY":"Sažetak","SHOW_MORE":"Prikaži još","SIMILAR":"Slično","UPCOMING":"Nadolazeće","ENDED":"Završeno","DURATION":"Trajanje","FEATURED":"Istaknuto","METADATA":"Metadata","CATEGORY":"kategorija","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"pretraži videe","SEARCH_PLACEHOLDER":"traži sadržaj ili upiši magnet linkove","ADDON":"dodatak","ADDONS":"Dodaci","OFFICIAL":"službeni","ADDONS_OFFICIAL":"Službeni Stremio Dodaci","ADDONS_POPULAR":"Popularno na vašem području","ADDON_FREE":"besplatni dodaci","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"pretplata","ADDON_STREAM_GEORESTRICTED":"nije dostupno na vašem području","ADDON_STREAM_OFFLINECACHE":"Cache nije povezan","ADDON_STREAM_LOCALFILE":"Lokalni dokument","SHARE_ADDON":"Dijeli Dodatak","AVAILABLE_STREAMS":"Dostupni prijenosi","NO_STREAM":"Nema dostupnih prijenosa","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Za više prijenosa instalirajte još Dodataka","STREAM_NOT_SUPPORTED":"Odabrani prijenos nije podržan.","ADDON_CATALOGUE":"Prikaži sve dodatke »","ADDON_CATALOGUE_MORE":"Više dodataka »","REPO_ADDED":"Repozitorij je dodan","ADDON_REPO_EXIST_ERR":"Ovaj dodatak je već dodan","ADDON_REPO_ERR":"Greška prilikom dodavanja repozitorija","ADDON_ADD_ERR":"Greška prilikom dodavanja dodatka","ERR_ADDON_PROTECTED":"Dodatak je zaštićen","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Nešto je pošlo po krivu - autentifikacija možda nije uspjela","ERR_NOT_COLLECTION_URL":"Nije url kolekcije","ERR_NOT_ADDON_URL":"Nije url dodatka","ERR_DETECTFROMURL":"Nemoguće otkriti podatke iz url-a","ADDON_DUPLICATE_WARNING":"Upozorenje: duplicirani dodatak","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Dodavanje dodatka nije uspjelo","REFRESH_ON_CLICK":"Pritisni za ponovno učitavanje","STILL_IN_THEATER":"Film je i dalje u kinu","WATCH_IN_CINEMA":"Pogledaj ga u kinu","IN_THEATER":"U kinu","GET_TICKETS":"Nabavi karte","UPCOMING_EPISODE":"Nadolazeća epizoda","UPCOMING_EPISODE_MESSAGE":"Ova epizoda emitirati će se:","MISSING_DATE_EPISODE":"Nedostaje nadnevak epizode","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Ovaj kanal još nije spremljen.
    Molimo vas pokušajte za nekoliko minuta.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Dodajte u svoju videoteku da budete obešteni kada bude dostupno.","GET_NOTIFIED_WHEN_AVAILABLE":"Biti ćete obavješteni kada bude dostupno.","WARNING_STREAMING_SERVER":"Upozorenje: lokalni server za prijenos nije pronađen. Prijenos sa YouTube-a i BitTorrent-a neće biti dostupan.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Upozorenje: ovaj video možda ne podržava vaš hardver. Imajte na umu da reprodukcija može biti spora.","PLAYER_ERROR":"Ups, greška playera","PLAYER_ERROR_LOOKSLIKE":"Izgleda kao","PLAYER_ORIENTATION":"Orijentacija playera","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Fiksno","PLAYER_ORIENTATION_SENSOR_SHORT":"Senzor","PLAYER_ORIENTATION_LANDSCAPE":"Orijentacija playera fiksirana je vodoravno","PLAYER_ORIENTATION_SENSOR":"Orijentacija playera je automatska (senzor)","PLAYER_PLAYBACK_SPEED":"Brzina prikazivanja","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Uživo","PLAYER_NEXT_VIDEO_TITLE":"U sljedećem nastavku","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Odbaci","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Gledaj odmah","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"pokretanje iz","CASTING_TO":"Prikazivanje na","NETWORK_STATUS":"Mrežni status","STREAM_SPEED":"Brzina prikazivanja:","STREAM_BUFFERED":"Učitano:","PEERS_INFO":"Peer Informacije","PEERS_ACTIVE":"Aktivno:","PEERS_CONNECTED":"Spojeno:","PEERS_WAITING":"Na čekanju:","TRANSCODING_WARNING":"Upozorenje: pretvaranje videa.","STREAM_LOADING":"učitavanje...","PLAYING_LOCAL":"pokretanje iz lokalne datoteke","PLAYING_CACHE":"pokretanje iz privremenog skladišta","WRONG_SUBS":"Pogrešan prijevod?","ERR_SUBS_LOADING_TITLE":"Greška pri učitavanju podnapisa","ERR_SUBS_LOADING":"Greška pri učitavanju podnapisa: može biti do dodatka kojeg koristite, ili do internet povezanosti","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Sljedeći dodaci za podnapise ne rade","ERR_CASTING_UPDATE_TITLE":"Nemoguće ažurirati info o djeljenje ekrana: server možda nije spojen","CHOOSE_DEVICE":"Izaberi uređaj za gledanje","NO_CAST_DEVICES":"Nema dostupnih uređaja za odašiljanje.","NO_SETTINGS":"Nema dostupnih postavki.","PHONE_TABLET":"Mobitel / Tablet","SUBTITLES":"Podnapisi","SUBTITLES_CHANGE":"Promjeni podnapis za ","SUBTITLES_CHANGE_NONE":"Nažalost, nema drugih podnapisa za odabrani jezik","SUBTITLES_CHANGE_ACIVE":"Trenutno titl #{{subtitlesDialog.activeIdx + 1}} je aktivan. Klikni \\"Nastavi\\" da aktiviraš podnapis #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alterantivno,","SUBTITLES_ADJUST_DELAY":"Podešavanje kašnjenja podnapisa:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Ili koristi G / H gumb dok gledate da postavite podnapise.","SUBTITLES_ADJUST_DELAY_TIP":"Savjet: možete koristiti tipke G / H tijekom gledanja kako biste podesili kašnjenje podnapisa.","SUBTITLES_DELAY":"Kašnjenje podnapisa:","SUBTITLES_LOADING":"Učitavanje podnapisa...","SUBTITLES_UNAVAILABLE":"Nema dostupnih vanjskih podnapisa","SUBTITLES_DISABLED":"Isključeno","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sezona","EPISODE":"Epizoda","SPECIAL":"Special","SORT":"poredaj","SORT_BY":"Poredaj po","FILTER":"filtriraj","SORT_TRENDING":"popularno","SORT_RECENT":"nedavno","SORT_ALPHABET":"A-Ž","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"ocjena","SORT_WATCHED":"gledano","SORT_YEAR":"godina","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Novo za vas","New Episodes":"Nove epizode","New Videos":"Novi Videi","Recommendations":"Preporuke","LIBRARY_RESUME":"nastavi","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Pojedinosti","LIBRARY_RESUME_DISMISS":"odbaci","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Istaktnut","DISCOVER_TOP":"Najbolji","DISCOVER_OSCAR":"Dobitnici Oskara","DISCOVER_WARNING_TITLE":"Ups!","DISCOVER_EMPTY_CATALOG":"Dodatak je vratio prazan sadržaj.","DISCOVER_ADULT_WARNING":"Ovaj sadržaj dostupan je samo odraslima. Imaš li 18+ godina?","DISCOVER_NOADDON_WARNING":"Upozorenje: nema aktivinog Stremio dodatka za ovaj tip. Prikazujemo spremljene stvari, ništa se neće promijeniti.","DISCOVER_LOAD_ERR":"Sadržaj nije pokrenut, greška.","DISCOVER_ADDON_UNINSTALLED":"Sadržaj više nije dostupan. Moguće da ste izbriali dodatak.","UNINSTALL_THIS_ADDON":"Ukloni dodatak","ERR_ADDON_NOT_INSTALLED":"Ovaj dodatak nije instaliran. Instalirati sada?","DETAIL_RECEIVE_NOTIF_SERIES":"Primaj obavijesti o novim epizodama","DETAIL_RECEIVE_NOTIF_VIDEOS":"Primaj obavijesti o novim videima","SIDEBAR_SHOW_STREAMS":"Prikaži prijenose","RELAUNCH":"Ponovo pokreni sada!","UPGRADE":"Nova verzija je dostupna! Nadogradi se na najnoviju inačicu Stremija","RELOAD_UI":"Ponovno učitaj korisničko sučelje","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"Koristite zastarjelu verziju Stremija što nije preporučljivo.","MANUAL_UPDATE_LINE2":"Molimo, ažurirajte čim prije.","BUTTON_UPDATE_LATTER":"Ne sada","BUTTON_UPDATE_NOW":"Ažuriraj","ANONYMOUS_USER":"Anonimni korisnik","DONT_HAVE_ACC":"Nemate račun?","HAVE_ACC":"Već imate račun?","PASSWORD":"Lozinka","PASSWORD_CONFIRM":"Potvrdite lozinku","EMAIL":"E-mail","FB_LOGIN":"Prijavi se preko Facebook-a","FB_NOTHINGSHARED":"Ništa se ne dijeli bez vaše dozvole","FB_NOPOST":"Nećemo objavljivati ništa u vaše ime","OR":"ili","I_ACCEPT":"Prihvaćam","I_ACCEPT_BY_CLICKING":"Klikom na gornji gumb prihvaćam uvjete","TOS":"Uvjete i Odredbe","MUST_ACCEPT_TERMS":"Morate prihvatiti uvjete","PASSWORDS_NOMATCH":"Lozinke se ne podudaraju","SIGN_UP":"Registracija","SIGN_UP_EMAIL":"Prijavite se putem e-pošte","CLICK_TO_SIGN_UP":"Ovdje pritisnite za registraciju.","LOG_IN":"Prijavi se","LOG_OUT":"Odjavi se","EXIT_FULLSCREEN":"Izađi iz punog prikaza","ENTER_FULLSCREEN":"Uđi u puni prikaz","PLAY_URL_MAGNET_LINK":"Pokreni URL/Magnet poveznicu","HELP_FEEDBACK":"Podrška i povratna informacija","TERMS_OF_SERVICE":"Uvjeti korištenja usluge","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"O Stremiju","USER_PANEL":"Korisniča traka","LOGIN_LABEL":"Login","GUEST_LOGIN":"Prijavi se kao gost","GUEST_LOGIN_NOTICE":"Gostujuća prijava nije preporučljiva. Koristeći redovnu prijavu, Stremio omogućava sinkronizaciju svoje videoteke, primanje obavještenja o omiljenim serijama / kanalima. Jeste li sigurni da želite nastaviti?","GUEST_LOGIN_NOTICE_2":"Gostujuća prijava nije preporučljiva - nećete imati sinkronizaciju obavijesti Videoteke i Ploče, koje su od važnosti za Stremio. Jeste li sigurni da želite nastaviti?","CLICK_HERE":"klikni ovdje","WRONG_PASSWORD":"Pogrešna lozinka. U slučaju da ste zaboravili lozinku, ","SET_A_PASS":"postavite lozinku","RESET_PASSWORD":"Ponovno postavi lozinku","FORGOT_PASSWORD":"Zaboravili ste lozinku?","EMAIL_USED_WITH_FB":"Ovaj email je korišten sa Facebook prijavom.","INVALID_EMAIL":"Unesite ispravnu e-mail adresu","INVALID_PASSWORD":"Molimo Vas da unesete ispravnu lozinku","CONN_ERR":"Greška pri povezivanju - molimo Vas pokušate kasnije.\\n\\nAko se ovo nastavi, onemogućite vatrozid/antivirus (posebice Bitdefender).","IMPORT_FROM_GUEST":"Uvezi videoteku iz gostujućeg računa","RECEIVE_UPDATES_EMAIL":"Primajte novosti od kompanije Stremio na vaš e-mail","LOGIN_FAILED":"Neuspjela Prijava.","SIGNUP_FAILED":"Prijava nije uspjela.","SEARCH_FAILED":"Pretraga nije uspjela","EMAIL_USED":"Ovaj email već je u upotrebi.","WAITING_FB_LOGIN":"Prijavljivanje preko Facebook-a...","EXTERNAL_PLAYER_TITLE":"Pokreni u vanjskom pregledniku","EXTERNAL_REMEMBER_PLAYER":"Zapamti moj izbor","EXTERNAL_ALWAYS_PLAY":"Da","EXTERNAL_ONLY_ONCE":"Ne","BEST_FIT":"Najprikladniji prikaz","FIT_SCREEN":"Uklopi u prikaz","FILL":"Ispuni prikaz","16:9":"16:9","4:3":"4:3","Original":"Izvorni prikaz","INTRO_TASTE":"Recite nam što volite","INTRO_TASTE_LONG":"Recite nam što biste željeli gledati","INTRO_TASTE_PICK":"Izaberite {{interestsRemaining}} zanimljivo","INTRO_TASTE_PICK_MORE":"Izaberite još {{interestsRemaining}} zanimljivog","INTRO_TASTE_HELP_US":"Pomozite nam da naučimo o vama.","INTRO_TASTE_CHOOSE_THESE":"Izaberite neke od ovih:","INTRO_TASTE_CHOOSE_MIN":"Izaberite bar tri kategorije","INTRO_TASTE_CHOOSE_MIN_ERR":"Morate izabrati bar tri kategorije!","INTRO_TASTE_LIFESTYLE":"Životni stil","INTRO_TASTE_SPORTS":"Sportovi","INTRO_TASTE_FOOD_HEALTH":"Hrana i zdravlje","INTRO_TASTE_BEAUTY_FASHION":"Ljepota i moda","INTRO_TASTE_NEWS":"Vijesti","INTRO_TASTE_GAMING":"Igrice","INTRO_TASTE_SCIENCE_EDU":"Znanost i obrazovanje","INTRO_TASTE_MUSIC":"Glazba","INTRO_TASTE_TRAVEL":"Putovanje","INTRO_TASTE_LATE_NIGHT":"Noćni talk-show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Komedija","INTRO_TASTE_DIY":"Uradi sam","INTRO_TASTE_TECH":"Tehnika","INTRO_TASTE_CINEMA":"Kinematografija","ADDON_NOT_SUPPORTED":"Izabrani dodatak nije podržan na ovoj platformi.","ADDON_DISCLAIMER":"Korištenje trećih dodataka uvijek će biti predmet osobne odgovornosti i zakonom zemlje u kojoj se nalazite.","ADDON_ACTIVATE":"Aktivirati ovaj dodatak?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Dodaj","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Što je novo","BUTTON_CONTINUE":"Nastavi","BUTTON_ACTIVATE":"Aktiviraj","BUTTON_ACTIVATED":"Aktivirano","BUTTON_CANCEL":"Prekini","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Poništni sve","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Vaša Videoteka izgleda prazno. Saznajte koliko je zapravo korisna :) ","HOW_START":"Ovako možete početi:","LIB_EMPTY_CAL":"Tvoj Kalendar prikazuje serije iz tvoje Videoteke.","HOW_START_CAL":"Ovako možeš dodati serije:","LIB_EMPTY_BOARD":"Tabla prikazuje notifikacije & preporuke slične tvojoj biblioteci.","HOW_START_BOARD_WAIT":"Molimo, dodajte par serija ili kanala u vašu videoteku i dozvolite nam par minuta da procesuiramo :)","HOW_START_BOARD":"Evo kako možete da dodate serije & flmove na nju:","IMPORT_FB":"Uvoz stvari koje vam se sviđaju na Facebook","IMPORT_TRAKT":"Uvezi videoteku sa: Trakt","IMPORT_DISCOVER":"Nađi zanimljive stvari u Otkrij","IMPORT_DISK":"Uvoz filmova ili serija koje imate na vašem lokalnom disku","PLEASE_CREATE_ACC":"Molimo Vas napravite račun da omogućite sinkronizaciju Videoteke & Table.","IMPORT_DISCOVER_SIGNUP":"Registrirajte se i otkrijte zanimljive stvari u Otkrij","IMPORT_DISK_SIGNUP":"Registrirajjte se i uvezite filmove i serije sa vašeg lokalnog diska","LIB_EMPTY_CLOUD":"Videoteka na oblaku","LIB_EMPTY_CLOUD_DESC":"Osobna videoteka ažuirana na svim uređajima","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Primaj obavijesti o novim epizodama","LIB_EMPTY_PERSONAL":"Osobno","LIB_EMPTY_PERSONAL_DESC":"Primaj personalizirane preporuke","LIB_EMPTY_CALENDAR_DESC":"Pripremi raspored za gledanje tvoje videoteke","LIB_EMPTY_ALL":"Prijavi se na neke od ovih:","LIB_EMPTY_BEST":"Prijavi se da dobiješ najbolje od Stremio-a","LIB_EMPTY_OTHER":"Prijavi se da dobiješ Kalendar & druge cool dodatke","CALENDAR_ADDED":"Stremio kalendar je dodan tvome kalendaru.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt autientifikacija nije valjana, molim vas u Postavkama autentificirajte","TRAKT_REQUIRES_LOGIN":"Trakt greška","TRAKT_REQUIRES_LOGIN_MSG":"Morate biti ulogirani","SETTINGS_LABEL":"Postavke","SETTINGS_NAV_GENERAL":"Općenito","SETTINGS_NAV_PLAYER":"Reproduktor","SETTINGS_NAV_STREAMING":"Prijenos","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Pokreni prilikom paljenja","SETTINGS_VLC_DEFAULT":"Pokreni preko VLC-a","SETTINGS_UI_LANGUAGE":"Jezik sučelja","SETTINGS_FULLSCREEN_EXIT":"Izlazak iz punog prikaza tipkom Esc","SETTINGS_GAMEPAD":"Omogući korištenje kontrolera","SETTINGS_CLOSE_WINDOW":"Zatvori program prilikom zatvaranja prozora","SETTINGS_SUBTITLES_LANGUAGE":"Zadani jezik podnapisa","SETTINGS_SUBTITLES_SIZE":"Zadana veličina podnapisa","SETTINGS_SUBTITLES_BACKGROUND":"Pozadina podnapisa","SETTINGS_SUBTITLES_COLOR":"Boja podnapisa","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Boja obruba podnapisa","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Boja pozadine podnapisa","SETTINGS_SEEK_KEY":"Premotavanje sadržaja strelicama","SETTINGS_SEEK_KEY_SHIFT":"Premotavanja sadržaja streliacam dok je tipka Shift pritisnuta","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Automatski pokreni sljedeću epizodu","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Automatski promjeni veličinu prozora prije puštanja","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Uvek koristi najnoviju BETA","SETTINGS_IMPORT_FB":"Uvezi sa Facebooka","SETTINGS_IMPORT_DISK":"Uvezi sa lokalnog diska","SETTINGS_IMPORT_TRAKT":"Uvezi sa Trakt-a","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Pozadinsko pokretanje","SETTINGS_SUBSCRIBE_CALENDAR":"Pretplati se na Kalendar","SETTINGS_REQ_EXPORT":"Zatraži izvoz podataka","SETTINGS_ACC_DELETE":"Zatraži brisanje naloga","SETTINGS_CHANGE_PASSWORD":"Promjeni lozinku","SETTINGS_TOS":"Uslovi korištenja","SETTINGS_SUPPORT":"Kontaktiraj podršku","SETTING_LANGUAGE":"Jezik","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Odjavi se sa Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"podrazumevani titlovi","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Pokreni u zasebnom prozoru (napredno)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Izađi","CONNECTED":"Povezan","AUTHENTICATE":"Prijavi se","CACHING":"Keširanje","SETTINGS_CACHING_DRIVE":"Izaberi disk za keširanje","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Siječanj","February":"Veljača","March":"Ožujak","April":"Travanj","May":"Svibanj","June":"Lipanj","July":"Srpanj","August":"Kolovoz","September":"Rujan","October":"Listopad","November":"Studeni","December":"Prosinac","Monday":"Ponedeljak","Tuesday":"Utorak","Wednesday":"Srijeda","Thursday":"Četvrtak","Friday":"Petak","Saturday":"Subota","Sunday":"Nedjelja","Action":"Akcija","Comedy":"Komedija","War":"Ratni","Family":"Obiteljski","Animation":"Animacija","Adventure":"Avanturistički","Fantasy":"Fantazija","Crime":"Kriminalistički","Mystery":"Misterija","Romance":"Ljubavni","Drama":"Drama","Horror":"Horor","Thriller":"Triler","Sci-Fi":"Znanstvena Fantastika","Music":"Glazba","Biography":"Biografija","Documentary":"Dokumentarni","Sport":"Sport","Musical":"Mujuzikl","Western":"Western","Film-Noir":"Film-Noir","News":"Novosti","History":"Povijesni","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Zabava","Gaming":"Gaming","From TV":"Iz TV-a","Lifestyle":"Lifestyle","Science & Education":"Znanost & Edukacija","Cooking & Health":"Kuhanje & Zdravlje","Beauty & Fashion":"Ljepota & Moda","Sports":"Sport","News & Politics":"Vijesti & Politika","How-to & DIY":"DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Dobra dijela & Neprofitno","Movies":"Filmovi","Uk Live Tv":"UK Uživo Tv","Fashion":"Moda","Business News Radio":"Poslovni radio","Business Tv":"Poslovni tv","Cars & Auto":"Auto","Comedy Radio":"Komedija","Lifestyle Radio":"Lifestyle","News Tv":"Vijesti Tv","Food And Wine":"Hrana i vino","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religija","Kids":"Djeca","Body & Soul":"Tijelo i duša","Education":"Edukacija","Indian Tv":"Indian Tv","Extreme Sports":"Extremni sportovi","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Znanstvena Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Putovanja","Asian Tv":"Asian Tv","Entertainment":"Zabava","News Radio":"Vijesti Radio","Music Radio":"Glazbeni Radio","Language Learning":"Učenje jezika","Science Radio":"Znanstveni Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"novi video","new episode":"nova epizoda","new movie":"novi film","recommended":"preporučeno","we recommend":"preporučujemo","offer of the day":"ponuda dana","news":"vijesti","music video":"spot","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Odbaci obavijesti","CTX_DISMISS_ALL":"Odustani","CTX_SHARE":"Podijeli","CTX_COPY_SHARE_LINK":"Kopiraj link za dijeljenje","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Prikaži","CTX_PLAY":"Pokreni","CTX_PLAY_IN":"Pokreni u","CTX_PLAY_ON":"Pokreni na","CTX_WATCH_ON":"Gledaj na","CTX_WATCH":"Gledaj","CTX_WATCHED":"Pogledano","CTX_WATCH_BEGINNING":"Gledaj od početka","CTX_WATCH_MOBILE":"Gledaj na mobilnom uređaju","CTX_REWIND":"Premotaj na početak","CTX_MARK_WATCHED":"Označi kao pogledano","CTX_MARK_NON_WATCHED":"Označi kao nepogledano","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Označi ostalo kao pogledano","CTX_UNMARK_REST":"Označi ostalo kao nepogledano","CTX_RECEIVE_NEW_NOTIF":"Primaj nove obavijesti","CTX_REMOVE_CACHE":"Obriši iz keša","CTX_REMOVE_CACHE_EP":"Ukloni epizodu iz keša","CTX_OPEN_CONTAINING":"Otvori mapu sadržaja","CTX_REMOVE":"Ukloni iz Videoteke","CTX_AVAILABLE_OFFLINE":"Dostupno izvanmrežno","CTX_PAUSED":"Pauzirano","CTX_ALWAYS_ON_TOP":"Uvijek na vrhu","CTX_FULLSCREEN":"Cijeli zaslon","CTX_WRONG_SUBS":"Pogrešan prijevod?","CTX_REPORT_ISSUES":"Prijavi problem","CTX_COPY":"Kopiraj","CTX_PASTE":"Naljepi","CTX_CLEAR":"Očisti","CTX_CLEAR_RECENT_SEARCHES":"Obriši skorašnje pretrage","HELLO_THERE":"Hej zdravo","HOPE_YOU_ENJOY":"Nadamo se da uživate uz Stremio i da je već jedna od vaših omiljenih aplikacija !","WHO_ARE_WE":"Tko smo mi? Mi smo tim iza njega - dva momka koja rade teško svaki dan već skoro 3 godine da bih napravili ovaj proizvod sve boljim i boljim.","SUPPORT_US":"Ako uživate koristeći Stremio, ako je Stremio vrijedan za vas - širite riječ !","SPREAD_THE_WORD":"Podijelite sa svojim prijateljima sada, širite riječi u vezi Stremio","MORE_PEOPLE":"Što više ljudi koristi Stremio, to će biti bolji !","SEND_A_LINK":"Ili pošaljite link ka našoj stranici","TIP_LOCALFILES":"Savjet: možeš prevući i ubaciti lokalne video datoteke u Stremio","ADDON_MY":"Moji Dodaci","ADDON_COMMUNITY":"Dodaci zajednice","ADDON_OFFICIAL":"Službeni dodaci","ADDON_REPOS":"Dodaci repozitoriji","ADDON_SEARCH":"Pretraži dodatke","ADDON_INSTALL":"Instaliraj","ADDON_CONFIGURE":"Promijeni","ADDON_UNINSTALL":"Deinstaliraj","ADDON_UPGRADE":"Nadogradi","ADDON_INSTALLED":"Instalirano","ADDON_INSTALLED_MSG":"Dodatak instaliran!","ADDON_UPGRADED_MSG":"Dodatak ažuriran!","ADDON_UNKNOWN":"Nepoznato","ADDON_ERR":"Greška pri instaliranju dodatka!","ADDON_DISCONNECTED":"Veza prekinuta","ADDON_APP_MISSING":"aplikacija za ovaj izvor nije instalirana. Želiš li sada instalirati?","ADDON_APP_INSTALL":"Instaliraj sada","ADDON_PAGE":"Stranica dodataka","ADDON_TOP_CONTENT":"Najbolje do ovog dodatka","ADDON_PROVIDES":"Ovaj dodatak će vam dati:","ADDON_WATCH":"Pogledaj #{types} sada!","ADDON_WATCH_FREE":"Pogledaj #{types} BESPLATNO sada !","ADDON_ADDON":"Dodatak","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"Više #{types} u Otkrivanju","ADDON_PROVIDES_STREAMS":"Gledaj #{types}","ADDON_PROVIDES_STREAMS_FREE":"Gledaj #{types} BESPLATNO","ADDON_PROVIDES_SUBTITLES":"Prijevodi za #{types}","ADDON_CANTDETECT":"Nismo uspjeli pronaći i pokrenuti Stremio, tako da nismo uspjeli otkriti koje dodatke imate instaliarne.","ERR_NO_META":"Nisu pronađene informacije o ovome ","ERR_GETTING_META":"Greška pri preuzimanju podataka.","ERR_CANT_PARSE_MAGNET":"Nemoguće spojiti magnet","ERR_NO_MAGNET_INFOHASH":"Bez valjanog hash-a za magnet","ERR_NO_FILE_PATH":"Nije moguće poslati zahtjev bez lokacije datoteke","ERR_NO_TORRENT":"Nema torrent-a","ERR_NO_SUPPORTERD_FILES":"Nisu nađene podržane datoteke","ERR_OPENING_FILES":"Nije moguće otvoriti vanjske datoteke","ERR_INVALID_LINK":"Link nije valjan","ERR_REGISTERED_ONLY":"Ova mogućnost je dostupna samo registriranim korisnicima.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Nastavi gledanje","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmovi izabrani isključivo za vas.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Gledaj Odmah","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Skini sada","WEBSITE_DOWNLOAD_FOR":"Skini sada za","WEBSITE_IS_DESKTOP":"Stremio je desktop aplikacija, otvori ovu stranicu na svom PC i skini ga","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Glavna","WEBSITE_PAGE_FEATURES":"Karakteristike","WEBSITE_PAGE_ADDONS":"Dodaci","WEBSITE_PAGE_TECH":"Tehnologija","WEBSITE_PAGE_CREATE_ADDON":"Kreiraj dodatak","WEBSITE_PAGE_CONTACTS":"Kontakti","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filmovi","WEBSITE_TYPE_series_PL":"Serije","WEBSITE_TYPE_tv":"Uživo TV","WEBSITE_TYPE_channel":"Kanali","WEBSITE_STREMIO_WHAT_IS":"Stremio je aplikacija koja vam pomaže da organizujete i odmah gledate vaše omiljene video, filmove, TV serije i TV kanale.","WEBSITE_FEATURES_WATCH":"Gledaj odmah u HD","WEBSITE_FEATURES_WATCH_DETAIL":"Kliknite i pokrenite svoje omiljene filmove, TV Emisije, video i TV kanale.","WEBSITE_FEATURES_SUBS":"Automatski Prevodi","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatski odabire sinkronizirane prijevode za vaš jezik.","WEBSITE_FEATURES_SUBS_LABEL":"Stremio automatski odabire sinkronizirane prijevode za vaš jezik.","WEBSITE_FEATURES_CAST":"Pokreni na TV & mobilnim uređajima","WEBSITE_FEATURES_CAST_DETAIL":"Emitiranje na AppleTV, Chromecast, Smart TV (DLNA/UPnP) i mobilne uređaje.","WEBSITE_LIB":"Uživajte u Svojoj osobnoj Videoteci sinkoniziranoj na Sve Vaše Uređaje","WEBSITE_LIB_COLLECT":"Prikupite sa Stremio","WEBSITE_LIB_IMPORT":"Uvezite sa Facebook-a","WEBSITE_LIB_LOCAL":"Dodajte sa vašeg lokalnog diska","WEBSITE_BOARD":"Ploča - Vaše one-stop mjesto za obavještenja i preporuke","WEBSITE_BOARD_RECOMMEND":"Preporučena TV Emisija","WEBSITE_BOARD_TRENDING":"Traženi Film","WEBSITE_BOARD_NEW":"Novi Video","WEBSITE_BOARD_EPISODE":"Nova Epizoda","WEBSITE_BOARD_1":"Tražite nešto interesantno da gledate? Dobijajte preporuke na osnovu vašeg ukusa!","WEBSITE_BOARD_2":"Primite obavještenja kada nova epizoda vaš omiljene TV emisije ili YouTube kanala izadje!","WEBSITE_BOARD_YOUTUBE":"Novi Videi na Youtube kanalima","WEBSITE_BOARD_EPISODES":"Nove epizode serije koje pratite","WEBSITE_ADDONS":"Dodaci za sadržaj","WEBSITE_TECH_DETAIL":"Volimo tehnologiju, volimo znanost!\\nStremio koristi sljedeći softver otvorenog koda:","WEBSITE_TECH_WCJS":"WebChimera.js omogućava gledanje u bilo kojem formatu sa dobrim performansama","WEBSITE_TECH_WCJS_EXTRA":"Mi smo glavni suradnici ","WEBSITE_TECH_ELECTRON":"Electron pruža inovativu platformu za Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Mi smo suradnici projekta","WEBSITE_TECH_LINVODB":"Baza podataka koja omogućava da su podaci organizirani i svugdje spremni.","WEBSITE_TECH_LINVODB_EXTRA":"Kućna tehnologija","WEBSITE_CREATE_ADDON":"Kreiraj svoj dodatak","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Zainteresirani? Dobrodošli ste da nas kontaktirate.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Mišljenja koja dijelimo:","WEBSITE_SPREAD":"Nek se čuje za Stremio:","WEBSITE_CONTACT":"Ako nas mislite kontaktirati, slobodno","WEBSITE_OPENSOURCE":"Za naš otvoreni kod idi na","WEBSITE_BITCOIN":"Doniraj bitcoin:","WEBSITE_FAQ":"Često postavljena pitanja","WEBSITE_FAQ_SHORT":"ČPP","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Uslovi korištenja","WEBSITE_LEGAL":"Zakoni","WEBSITE_PAGE_ABOUT":"O nama","WEBSITE_PAGE_BECOME_PARTNER":"Postani partner","WEBSITE_ALL_YOU_CAN_WATCH":"Sloboda gledanja\\nsvega što želiš.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Što je Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio dodaci","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partneri i pomagači","WEBSITE_COMMUNITY_GOODIES":"Stremio dobri","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpaperi","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sport","FOOD_HEALTH":"Hrana i zdravlje","BEAUTY_FASHION":"Ljepota i moda","NEWS":"Vijesti","GAMING":"Gaming","SCIENCE_EDUCATION":"Znanost i edukacija","MUSIC":"Glazba","TRAVEL":"Putovanje","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Komedija","DIY":"DIY","TECH":"Tech","CINEMA":"Kinomatografija","CONTINUE":"Nastavi","SLOW_LOADING":"Loše učitavanje?","I_GIVE_UP":"PREDAJEm SE","LEARN_MORE":"Saznaj više","POOR_SOURCE":"Ovaj izvor je slabo dostupan ili je Vaša internet konekcija prespora","PICK_CATEGORIES_ERR":"Moraš odabrati najmanje 3 kategorije","ADJUST_TIMING":"Promijeni vrijeme sa ","ADJUST_SIZE":"Promijeni veličinu sa ","SEARCH_ANYTHING":"Pretražuj sve...","ALL_CATEGORIES":"Sve","SEARCH_CATEGORIES":"Filmove, Serije, YouTube & TV","SEARCH_PERSONS":"Glumce, Režisere i Scenografe","SEARCH_PROTOCOLS":"HTTP i Magnet Linkove","SEARCH_TYPES":"IMDB / TVDB linkove","WATCHED":"Pregledano","SHOW_LESS":"Prikaži manje","LAST_SEARCHES":"Posljednje pretrage","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"ODABERI NEŠTO OD OVOGA:","NO_WEB_REMOTE":"Daljinski upravljač nije moguče učitati","STREMIO_OFFLINE":"Stremio nije povezan","STREMIO_EXPENSIVE_CONNECTION":"Prijenos podataka je skup","USE_DATA":"Korištenje podataka","WARNING":"Upozorenje","MORE_INFO":"Više Informacija ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Učitavanje ...","STREMIO_TV_BACK_TO_LANGUAGES":"Nazad na jezike","STREMIO_TV_REMOTE":"Daljinski upravljač","STREMIO_TV_GO_TO":"Idi na:","STREMIO_TV_OR_SCAN":"ili skeniraj:","STREMIO_TV_ADDON_INSTRUCTIONS":"Molim slijedite upute za instaliranje dodataka.","STREMIO_TV_LIVE_TV":"TV uživo","STREMIO_TV_RESUME_WATCHING":"Nastavi Gledanje","STREMIO_TV_LOADING_BACKGROUND":"Pozadina učitavanja","STREMIO_TV_CHECKING_AUTHENTICATION":"Provjera autentifikacije","STREMIO_TV_LOADING_BOARD":"Ploča učitavanja","STREMIO_TV_LOGIN_HEADER_LINE_1":"Želimo da naši korisnici imaju najbolje moguće personalizirano iskustvo sa našim softverom.","STREMIO_TV_LOGIN_HEADER_LINE_2":"To je razlog zašto vas ljubazno molimo da se prijavite u svoj račun.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Hvala na razumjevanju,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Stremio Tim","STREMIO_TV_REMOTE_INSTRUCTIONS":"Da bi koristili Web daljinski upravljač sa Mobilnim uređajem / Tabletom / PC:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Postavke","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio krug nije detektirao internet vezu.","STREMIO_TV_WIFI_DETAILS_1":"Povezi se sa:","STREMIO_TV_WIFI_DETAILS_2":"stremio-krug","STREMIO_TV_WIFI_DETAILS_3":"Koristi lozinku:","STREMIO_TV_WIFI_DETAILS_4":"stremiokrug","STREMIO_TV_WIFI_DETAILS_5":"Otvori internet preglednik sa:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Promijeni uređaj","REMOTE_VIDEOS":"Videi","REMOTE_ADJUST_TIMING":"Namjesti vrijeme","REMOTE_ADJUST_SIZE":"Namjesti veličinu","REMOTE_COULD_NOT_BE_LOADED":"Web daljinski upravljač nije moguće učitati","REMOTE_RETRY":"Pokušaj ponovo","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},5657:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Sorozat","TYPE_tv":"TV csatorna","TYPE_channel":"Csatorna","TYPE_other":"Egyéb","TYPE_movie_PL":"Filmek","TYPE_series_PL":"Sorozatok","TYPE_tv_PL":"TV csatornák","TYPE_channel_PL":"Csatornák","TYPE_other_PL":"Egyebek","TYPE_ALL":"All","VIDEO":"Video","BACK":"Vissza","MORE":"Több","DONE":"Kész","COPY":"Másolás","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Felfedezés","Board":"Ajánlatok","Library":"Könyvtár","My Library":"Könyvtáram","Calendar":"Naptár","NOTIFICATION_ONLINE":"Jelenleg online vagy","NOTIFICATION_OFFLINE":"Jelenleg offline vagy","INTERNET_CONNECTION":"Hálózat csatlakoztatva","STORAGE_FULL_TITLE":"Figyelem: a tárhelye megtelt!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"Keresés","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Másoljon be HTTP vagy Mágnes linket","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Hozzáadás a könyvtárhoz","REMOVE_FROM_LIB":"Eltávolítás a könyvtárból","ADDED_TO_LIB":"Hozzáadva a könyvtárból","REMOVED_FROM_LIB":"Eltávolítva a könyvtárból","TRAILER":"Előzetes","WATCH_TRAILER":"Előzetes megtekintése","WATCH_NOW":"Indítás","SHOW":"Tovább","SHOW_MOVIE":"Film megtekintése","WATCH_RANDOM":"Véletlen megtekintése","IMDB_RATING":"IMDb értékelés","YEAR":"Év","DIRECTOR":"Rendező","WRITER":"Író","LEAD_ACTORS":"Főszereplők","CAST":"Szereposztás","CREW":"Crew","SHOW_MORE_CAST":"Mutass többet »","AIRED":"Vetítve","SEASONS":"Évad","GENRE":"Műfaj","CATALOG":"Katalógus","SUMMARY":"Tartalom","SHOW_MORE":"Mutass többet","SIMILAR":"Hasonló","UPCOMING":"Nemsokára","ENDED":"Vége","DURATION":"Időtartam","FEATURED":"Featured","METADATA":"Metaadat","CATEGORY":"Kategória","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Videó keresése","SEARCH_PLACEHOLDER":"Keress vagy másolj be mágnes linket","ADDON":"bővítmény","ADDONS":"Bővítmények","OFFICIAL":"hivatalos","ADDONS_OFFICIAL":"Hivatalos Streamio bővítmények","ADDONS_POPULAR":"Népszerű a környezetedben","ADDON_FREE":"ingyenes","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"előfizetés","ADDON_STREAM_GEORESTRICTED":"Nem erélhető a régiódban","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Elérhető streamek","NO_STREAM":"Nincs elérhető stream","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Show all addons »","ADDON_CATALOGUE_MORE":"More addons »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Protected addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"A filmet még moziban játsszák","WATCH_IN_CINEMA":"Elérhető a közeli moziban","IN_THEATER":"In cinema","GET_TICKETS":"Get tickets","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Ez a csatorna még nincs tárolva.
    Kérjük, térj vissza pár perc múlva.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Add hozzá a könyvtáradhoz és értesítünk, amikor elérhetővé válik.","GET_NOTIFIED_WHEN_AVAILABLE":"Értesítünk, amikor elérhetővé válik.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Lejátszási sebesség","PLAYER_PLAYBACK_ERROR":"Lejátszási hiba, próbáld újra","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"lejtászás innen","CASTING_TO":"Továbbítva","NETWORK_STATUS":"Kapcsolat állapota","STREAM_SPEED":"Letöltés sebessége:","STREAM_BUFFERED":"Betöltve:","PEERS_INFO":"Kapcsolatok","PEERS_ACTIVE":"Aktív:","PEERS_CONNECTED":"Kapcsolódva:","PEERS_WAITING":"Várakoznak:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"betöltés...","PLAYING_LOCAL":"lejátszás helyi fájlból","PLAYING_CACHE":"lejátszás gyorsítótárból","WRONG_SUBS":"Hibás felirat?","ERR_SUBS_LOADING_TITLE":"Hiba a feliratok betöltése közben","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Válassz egy készüléket a továbbításhoz","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Telefon / Táblagép","SUBTITLES":"Feliratok","SUBTITLES_CHANGE":"Másik felirat választása a következő nyelvhez: ","SUBTITLES_CHANGE_NONE":"Sajnáljuk, nem érhető el másik felirat ehhez a nyelvhez.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alteratively,","SUBTITLES_ADJUST_DELAY":"Felirat késleltetésének beállítása:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use G / H keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use G / H keys while playing to adjust.","SUBTITLES_DELAY":"Feliratok késleltetése:","SUBTITLES_LOADING":"Feliratok betöltése...","SUBTITLES_UNAVAILABLE":"Nem érhető el felirat","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Évad","EPISODE":"Epizód","SPECIAL":"Special","SORT":"rendez","SORT_BY":"rendezés","FILTER":"filter","SORT_TRENDING":"Nézettség","SORT_RECENT":"legújabbak","SORT_ALPHABET":"A-tól Z-ig","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"értékelés","SORT_WATCHED":"megtekintve","SORT_YEAR":"év","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Újdonságok Neked","New Episodes":"Új Epizódok","New Videos":"Új Videók","Recommendations":"Ajánlások","LIBRARY_RESUME":"folytatás","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Részletek","LIBRARY_RESUME_DISMISS":"dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Ajánlott","DISCOVER_TOP":"Népszerűek","DISCOVER_OSCAR":"Oscar nyertesek","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Figyelmeztetés: nincs bekapcsolt Stremio bővítmény ehhez a típushoz. Elmentett elemek mutatása, melyek nem fognak frissülni.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Újraindítás most!","UPGRADE":"Frissítés a legújabb Streamio verzióra","RELOAD_UI":"Felhasználói felület újratöltése","MANUAL_UPDATE_TITLE":"Frissítsd a Stremio verzióját","MANUAL_UPDATE_LINE1":"Egy már nem támogatott verzióját futtatod a Stremionak, mely erősen nem ajánlott.","MANUAL_UPDATE_LINE2":"Frissíts, amilyen gyorsan lehetséges.","BUTTON_UPDATE_LATTER":"Ne most","BUTTON_UPDATE_NOW":"Frissítés","ANONYMOUS_USER":"Anonymous felhasználó","DONT_HAVE_ACC":"Nincs fiókod?","HAVE_ACC":"Van már fiókod?","PASSWORD":"Jelszó","PASSWORD_CONFIRM":"Jelszó megerősítése","EMAIL":"E-mail","FB_LOGIN":"Bejelentkezés Facebookkal","FB_NOTHINGSHARED":"Semmit nem osztunk meg a beleegyezésed nélkül","FB_NOPOST":"Semmit nem posztolunk a részedről","OR":"vagy","I_ACCEPT":"Elfogadom a","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"felhasználói feltételeket","MUST_ACCEPT_TERMS":"El kell fogadnod a feltételeket","PASSWORDS_NOMATCH":"Jelszó nem egyezik","SIGN_UP":"Regisztráció","SIGN_UP_EMAIL":"Regisztráció email-lel","CLICK_TO_SIGN_UP":"Kattints ide a regisztrációhoz.","LOG_IN":"Bejelentkezés","LOG_OUT":"Kijelentkezés","EXIT_FULLSCREEN":"Kilépés teljes képernyőből","ENTER_FULLSCREEN":"Teljes képernyős mód","PLAY_URL_MAGNET_LINK":"URL/Mágnes link lejátszása","HELP_FEEDBACK":"Segítség & visszajelzés","TERMS_OF_SERVICE":"Szolgáltatás feltételei","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"A Stremioról","USER_PANEL":"Felhasználói panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Vendég belépés","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"kattins ide","WRONG_PASSWORD":"Rossz jelszó. Ha elfelejtetted a jelszavad, ","SET_A_PASS":"jelszó beállítása","RESET_PASSWORD":"Jelszó visszaállítása","FORGOT_PASSWORD":"Elfelejtett jelszó?","EMAIL_USED_WITH_FB":"Ez az email már hozzá van rendelve egy Facebookos regisztrációhoz.","INVALID_EMAIL":"Kérjük adjon meg egy érvényes email címet","INVALID_PASSWORD":"Kérjük adjon meg egy érvényes jelszót","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Harmadik féltől származó bővítmények használata mindig a felhasználó felelőssége, a felhasználó tartózkodási területén életben lévő törvényeket tiszteletben tartva.","ADDON_ACTIVATE":"Bekapcsolod ezt a bővítményt?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Újdonságok","BUTTON_CONTINUE":"Folytatás","BUTTON_ACTIVATE":"Bekapcsolás","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Mégse","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"A könyvtárad üres. Fedezd fel, milyen hasznos ez a funkció :) ","HOW_START":"Használatához ennyit kell tenned:","LIB_EMPTY_CAL":"A naptárad a könyvtáradban található sorozatokat mutatja.","HOW_START_CAL":"Sorozatok hozzáadásához a következőket kell tenned:","LIB_EMPTY_BOARD":"Az ajánlatok fül értesítéseket & javaslatokat mutat a könyvtárad alapján.","HOW_START_BOARD_WAIT":"Kérjük, addj pár sorozatot és csatornát a könyvtáradhoz, és mi pár perc alatt feldolgozzuk :)","HOW_START_BOARD":"Így adhatsz hozzá sorozatokat & filmeket:","IMPORT_FB":"Importálj általad kedvelt tartalmakat a Facebookról","IMPORT_TRAKT":"Importáld médiakönyvtárad a Traktról","IMPORT_DISCOVER":"Keress érdekes tartalmakat a Felfedezés fülről","IMPORT_DISK":"Importálj filmeket és sorozatokat a helyi lemezedről","PLEASE_CREATE_ACC":"Please create an account to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from Discover","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your local disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Alkalmazás indítása Windows indításakora","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Importálás Facebookról","SETTINGS_IMPORT_DISK":"Importálás helyi lemezről","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Feliratkozás naptárra","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Jelszó megváltoztatása","SETTINGS_TOS":"Felhasználói feltételek","SETTINGS_SUPPORT":"Kapcsolat felvétele","SETTING_LANGUAGE":"Nyelv","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Kilépés","CONNECTED":"Connected","AUTHENTICATE":"Bejelentkezés","CACHING":"Tárolás","SETTINGS_CACHING_DRIVE":"Válaszd ki a tárolás helyét","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Január","February":"Február","March":"Március","April":"Április","May":"Május","June":"Június","July":"Július","August":"Augusztus","September":"Szeptember","October":"Október","November":"November","December":"December","Monday":"Hétfő","Tuesday":"Kedd","Wednesday":"Szerda","Thursday":"Csütörtök","Friday":"Péntek","Saturday":"Szombat","Sunday":"Vasárnap","Action":"Akció","Comedy":"Vígjáték","War":"Háborús","Family":"Családi","Animation":"Animációs","Adventure":"Kaland","Fantasy":"Fantasztikus","Crime":"Bűntény","Mystery":"Misztikus","Romance":"Romantikus","Drama":"Dráma","Horror":"Horror","Thriller":"Krimi","Sci-Fi":"Sci-Fi","Music":"Zenei","Biography":"Életrajzi","Documentary":"Dokumentum","Sport":"Sport","Musical":"Musical","Western":"Vadnyugati","Film-Noir":"Noir","News":"Hírek","History":"Történelem","Game-Show":"Játék show","Reality-TV":"Reality","Talk-Show":"Beszélgetős műsor","Film & Entertainment":"Film & Szórakoztatás","Gaming":"Játék","From TV":"TV-ből","Lifestyle":"Életstílus","Science & Education":"Tudomány és oktatás","Cooking & Health":"Főzés és egészség","Beauty & Fashion":"Szépségápolás és divat","Sports":"Sport","News & Politics":"Hírek és politika","How-to & DIY":"Útmutatók és barkácsolás","Tech":"Technológia","Automotive":"Autó","Causes & Non-Profits":"Ügyek és non-profit","Movies":"Filmek","Uk Live Tv":"Egyesült Királyság beli élő TV","Fashion":"Divat","Business News Radio":"Rádiós üzleti hírek","Business Tv":"Üzleti TV","Cars & Auto":"Autók","Comedy Radio":"Rádiós komédia","Lifestyle Radio":"Életstílus rádió","News Tv":"TV-s hírek","Food And Wine":"Étel és ital","Latino Tv":"Latin TV","Shopping Tv":"TV-s vásárlás","Religion":"Vallás","Kids":"Gyerekek","Body & Soul":"Test és lélek","Education":"Oktatás","Indian Tv":"Indiai TV","Extreme Sports":"Extrém Sportok","Middle Eastern Tv":"Közel-Keleti TV","Celebrity Tv":"Hírességek TV","Science Tv":"Tudományos TV","Bikini babe":"Bikinis csajok","Outdoors":"Környezet","German Tv":"Német TV","French Tv":"Francia TV","Italian Tv":"Olasz TV","Gamer Tv":"Játékos TV","Travel":"Utazás","Asian Tv":"Ázsiai TV","Entertainment":"Szórakoztatás","News Radio":"Rádiós hírek","Music Radio":"Zenei rádió","Language Learning":"Nyelvtanulás","Science Radio":"Tudományos rádió","Tech Radio":"Technológiai rádió","Science & Technology Vod":"Tudomány és technológia","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years, with a single goal - to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - support us!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"provides","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Nézd tovább","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Folytatás","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"Midenre Rá Tudsz Keresni...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Filmek, Sorozatok, YouTube & TV","SEARCH_PERSONS":"Színészek, Rendezők & Írók","SEARCH_PROTOCOLS":"HTTP & Mágnes Linkek","SEARCH_TYPES":"IMDB / TVDB Linkek","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Keresési előzmények","CLEAR_HISTORY":"Előzmények törlése","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"A Stremio nem érhető el","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},1472:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serial","TYPE_tv":"Saluran TV","TYPE_channel":"Saluran","TYPE_other":"Lainnya","TYPE_movie_PL":"Film - film","TYPE_series_PL":"Serial - serial","TYPE_tv_PL":"Saluran - saluran TV","TYPE_channel_PL":"Saluran - saluran","TYPE_other_PL":"Lainnya","TYPE_ALL":"All","VIDEO":"Vidio","BACK":"Kembali","MORE":"Lebih Banyak","DONE":"Selesai","COPY":"Salin","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Temukan","Board":"Papan","Library":"Perpustakaan","My Library":"Perpustakaan Saya","Calendar":"Kalender","NOTIFICATION_ONLINE":"Anda sedang online","NOTIFICATION_OFFLINE":"Anda saat ini sedang offline","INTERNET_CONNECTION":"Koneksi Jaringan","STORAGE_FULL_TITLE":"Peringatan: Penyimpanan penuh!","STORAGE_FULL_TEXT":"Stremio tidak akan dapat menyimpan pengaturan, preferensi, atau informasi login Anda. Pertimbangkan untuk memulai ulang atau menginstal ulang Stremio.","SEARCH":"cari","SEARCH_NO_RESULTS":"Tidak ada hasil yang ditemukan","SEARCH_EXPLANATION_CONTENT":"Pencarian untuk film, serial, YouTube dan saluran TV","SEARCH_EXPLANATION_PEOPLE":"Pencarian untuk aktor, direktur dan penulis","SEARCH_PASTE_LINKS":"Tempelkan HTTP dan Link Magnet","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Tambahkan ke perpustakaan","REMOVE_FROM_LIB":"Hapus dari perpustakaan","ADDED_TO_LIB":"Ditambahkan ke Perpustakaan","REMOVED_FROM_LIB":"Dihapus dari Perpustakaan","TRAILER":"Cuplikan","WATCH_TRAILER":"Lihat cuplikan","WATCH_NOW":"Lihat sekarang","SHOW":"Tampilkan","SHOW_MOVIE":"Tampilkan film","WATCH_RANDOM":"Lihat secara acak","IMDB_RATING":"Peringkat IMDb","YEAR":"Tahun","DIRECTOR":"Direktur","WRITER":"Penulis","LEAD_ACTORS":"Aktor utama","CAST":"Pemeran","CREW":"Kru","SHOW_MORE_CAST":"Tampilkan lebih banyak »","AIRED":"Ditayangkan","SEASONS":"Musim","GENRE":"Aliran","CATALOG":"Katalog","SUMMARY":"Ringkasan","SHOW_MORE":"Tampilkan lebih banyak","SIMILAR":"Serupa","UPCOMING":"Mendatang","ENDED":"Berakhir","DURATION":"Durasi","FEATURED":"Unggulan","METADATA":"Metadata","CATEGORY":"Kategori","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"pencarian vidio","SEARCH_PLACEHOLDER":"cari atau tempelkan URL","ADDON":"tambahan","ADDONS":"Tambahan","OFFICIAL":"Resmi","ADDONS_OFFICIAL":"Tambahan Resmi Stremio","ADDONS_POPULAR":"Populer Di Area Anda","ADDON_FREE":"Gratis","ADDON_PEERED":"Mengintip","ADDON_SUBSCRIPTION":"Berlangganan","ADDON_STREAM_GEORESTRICTED":"Tidak Tersedia Di Area Kamu","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"File lokal","SHARE_ADDON":"Berbagi Tambahan","AVAILABLE_STREAMS":"Aliran Yang Tersedia","NO_STREAM":"Tidak Tersedia Siaran","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Untuk lebih banyak streaming, silakan instal lebih banyak add-on","STREAM_NOT_SUPPORTED":"Aliran yang dipilih tidak didukung di platform ini.","ADDON_CATALOGUE":"Tampilkan semua addon »","ADDON_CATALOGUE_MORE":"Instal addon","REPO_ADDED":"Repository Ditambahkan","ADDON_REPO_EXIST_ERR":"Koleksi addon ini sudah ada","ADDON_REPO_ERR":"Terjadi kesalahan saat menambahkan koleksi","ADDON_ADD_ERR":"Terjadi kesalahan saat menambahkan addon","ERR_ADDON_PROTECTED":"Tidak dapat menghapus instalan addon, itu dilindungi","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Ada yang tidak beres - autentikasi mungkin gagal","ERR_NOT_COLLECTION_URL":"Bukan URL koleksi","ERR_NOT_ADDON_URL":"Bukan URL addon yang valid","ERR_DETECTFROMURL":"Tidak dapat menemukan addon/koleksi dari URL ini","ADDON_DUPLICATE_WARNING":"Peringatan: addon duplikat","ADDON_COLLECTION_SET_FAILED":"Sinkronisasi add-on yang diinstal ke akun Anda gagal","SETTINGS_DATA_EXPORT":"Ekspor data pengguna","ADDON_PULL_FAILED":"Sinkronisasi add-on yang diinstal dari akun Anda gagal","REFRESH_ON_CLICK":"Klik untuk mencoba lagi","STILL_IN_THEATER":"Masih Di Bioskop","WATCH_IN_CINEMA":"Menonton Di Bioskop","IN_THEATER":"Di Bioskop","GET_TICKETS":"Mendapatkan tiket","UPCOMING_EPISODE":"Episode Mendatang","UPCOMING_EPISODE_MESSAGE":"Pesan Episode Selanjutnya","MISSING_DATE_EPISODE":"Tanggal Episode Tidak Ditemukan","MISSING_DATE_EPISODE_MESSAGE":"Episode Belum Tayang Sekarang","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.
    Please come back in a few minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Tambahkan ke pustaka anda untuk mendapat notifikasi jika sudah tersedia.","GET_NOTIFIED_WHEN_AVAILABLE":"Mendapatkan Notifikasi Ketika Tersedia.","WARNING_STREAMING_SERVER":"Peringatan: server siaran lokal tidak ditemukan. Siaran dari lokal file, Youtube dan BitTorent tidak akan tersedia.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Peringatan: vidio ini mungkin tidak didukung perangkat anda. Pemutaran vidio mungkin akan lambat","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Terkunci","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Error tidak diketahui","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Langsung","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Hiraukan","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Tonton sekarang","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Siaran dari","CASTING_TO":"Casting to","NETWORK_STATUS":"Status jaringan","STREAM_SPEED":"Stream speed:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Aktif:","PEERS_CONNECTED":"Terhubung:","PEERS_WAITING":"Menunggu:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"memuat...","PLAYING_LOCAL":"memutar dari lokal file","PLAYING_CACHE":"playing from cache","WRONG_SUBS":"Subtitle bermasalah?","ERR_SUBS_LOADING_TITLE":"Error memuat subtitle","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Choose a device to watch on","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Phone / Tablet","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Change subtitles for ","SUBTITLES_CHANGE_NONE":"There are no other subtitles for this language, sorry.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternatively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use G / H keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use G / H keys while playing to adjust.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Season","EPISODE":"Episode","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"recent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rating","SORT_WATCHED":"watched","SORT_YEAR":"year","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"Resume","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"Dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oscar Winners","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Warning: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Re-launch now!","UPGRADE":"New version is available! Upgrade to the latest Stremio version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Continue with Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"or","I_ACCEPT":"I accept the","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Terms and Conditions","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Passwords don\'t match","SIGN_UP":"Sign up","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Log in","LOG_OUT":"Log out","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Guest login","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"click here","WRONG_PASSWORD":"Wrong email or password. In case you have forgotten your password, ","SET_A_PASS":"set a password","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"This email was used with a Facebook login.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Activate this addon?","ADDON_REPO_ADD":"Addon collection URL","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"What\'s new","BUTTON_CONTINUE":"Continue","BUTTON_ACTIVATE":"Activate","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Cancel","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Here is how you can start:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from Facebook","IMPORT_TRAKT":"Import your media library from Trakt","IMPORT_DISCOVER":"Find interesting stuff from Discover","IMPORT_DISK":"Import movies or shows you have on your local disk","PLEASE_CREATE_ACC":"Please create an account to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from Discover","IMPORT_DISK_SIGNUP":"Sign up and import movies or shows you have on your local disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Change password","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Contact support","SETTING_LANGUAGE":"Language","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Quit","CONNECTED":"Connected","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"January","February":"February","March":"March","April":"April","May":"May","June":"June","July":"July","August":"August","September":"September","October":"October","November":"November","December":"December","Monday":"Monday","Tuesday":"Tuesday","Wednesday":"Wednesday","Thursday":"Thursday","Friday":"Friday","Saturday":"Saturday","Sunday":"Sunday","Action":"Action","Comedy":"Comedy","War":"War","Family":"Family","Animation":"Animation","Adventure":"Adventure","Fantasy":"Fantasy","Crime":"Crime","Mystery":"Mystery","Romance":"Romance","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Music","Biography":"Biography","Documentary":"Documentary","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon collections","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Tonton Langsung","WEBSITE_SLOGAN_ALL":"Semua Konten Vidio yang Kamu Nikmati dalam Satu Tempat","WEBSITE_SLOGAN_NEW":"Semua Yang Kamu Tonton","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Tonton dari","WEBSITE_DOWNLOAD":"Unduh Sekarang","WEBSITE_DOWNLOAD_FOR":"Unduh Sekarang untuk","WEBSITE_IS_DESKTOP":"Stremio adalah aplikasi desktop, buka halaman ini dengan komputer kamu dan download","WEBSITE_DESKTOP_DEMO_VID":"Desmo Desktop","WEBSITE_PAGE_HOME":"Beranda","WEBSITE_PAGE_FEATURES":"Fitur","WEBSITE_PAGE_ADDONS":"Tambahan","WEBSITE_PAGE_TECH":"Teknologi","WEBSITE_PAGE_CREATE_ADDON":"Buat Tambahan","WEBSITE_PAGE_CONTACTS":"Kontak","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Film","WEBSITE_TYPE_series_PL":"Serial","WEBSITE_TYPE_tv":"TV Langsung","WEBSITE_TYPE_channel":"Saluran","WEBSITE_STREMIO_WHAT_IS":"Stremio adalah sebuah aplikasi yang membantu kamu mengatur and menonton vidio favorit, film, serial televisi dan saluran televisi kamu secara langsung","WEBSITE_FEATURES_WATCH":"Tonton HD secara langsung","WEBSITE_FEATURES_WATCH_DETAIL":"Klik dan mainkan film kesukaan, acara televisi, vidio dan saluran televisi kamu.","WEBSITE_FEATURES_SUBS":"Subjudul Otomatsi","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio secara otomatis memilih subjudul yang disinkronkan untuk bahasa kamu.","WEBSITE_FEATURES_SUBS_LABEL":"Langkahmu, Ketua.","WEBSITE_FEATURES_CAST":"Putar di Televisi & perangkat seluler","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Nikmati pustaka pribadi kamu yang tersinkronisasi pada seluruh perangkat kamu","WEBSITE_LIB_COLLECT":"Kumpulkan dari Stremio","WEBSITE_LIB_IMPORT":"Impor dari Facebook","WEBSITE_LIB_LOCAL":"Tambahkan dari perangkat lokal kamu","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Rekomendasi siaran televisi","WEBSITE_BOARD_TRENDING":"Film yang sedang tren","WEBSITE_BOARD_NEW":"Vidio baru","WEBSITE_BOARD_EPISODE":"Episode baru","WEBSITE_BOARD_1":"Sedang mencari sesuatu yang menarik untuk ditonton? Dapatkan rekomendasi berdasarkan selera kamu!","WEBSITE_BOARD_2":"Dapatkan pemberitahuan ketika episode baru dari siaran favorit televisi kamu atau siaran Youtube telah keluar!","WEBSITE_BOARD_YOUTUBE":"Vidio baru dari siaran Youtube","WEBSITE_BOARD_EPISODES":"Episode baru dari serial yang kamu ikuti","WEBSITE_ADDONS":"Konten Tambahan","WEBSITE_TECH_DETAIL":"Kita cinta teknologi, kita cinta sekali dengan ilmu pengetahuan!\\nStremio menggunakan teknologi open source berikut :","WEBSITE_TECH_WCJS":"WebChimera.js mengizinkan Stremio untuk memutar format vidio apapun dengan performa yang baik.","WEBSITE_TECH_WCJS_EXTRA":"Kita adalah penyumbang proyek inti","WEBSITE_TECH_ELECTRON":"Electron menyediakan sebuah platform inovatif untuk membangung Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Kita adalah penyumbang proyek","WEBSITE_TECH_LINVODB":"Sebuah teknologi basis data yang memastikan data kamu terorganisir dan tersedia dimanapun kamu masuk.","WEBSITE_TECH_LINVODB_EXTRA":"Teknolog Internal","WEBSITE_CREATE_ADDON":"Buat Addon kamu","WEBSITE_CREATE_ADDON_DETAIL":"Apakah kamu menyediakan sebuah jasa konten vidio? Kita akan membantu mendapatkan manfaat dari fitur dengan membuatkan Addon kamu.","WEBSITE_CREATE_ADDON_BENEFITS":"Manfaat dari membuat sebuah Addon untuk Stremio","WEBSITE_P2P_BEAUTY":"Keindahan straming Peer-To-Peer","WEBSITE_P2P_1":"Video full HD / 4K yang andal dan terjangkau sesuai permintaan atau streaming langsung","WEBSITE_P2P_2":"Platform distribusi memberikan pengalaman pengguna yang luar biasa","WEBSITE_P2P_3":"Kami akan membuat addon yang memenuhi kebutuhan Anda","WEBSITE_P2P_CONTACT":"Tertarik? Kamu dipersilahkan untuk menghubungi kami.","WEBSITE_P2P_CONTACT_EXTRA":"Kami akan dengan senang hati membantu Anda mengintegrasikan konten Anda dengan Stremio!","WEBSITE_P2P":"Sesekali, muncullah teknologi yang mengubah nama game tersebut. Kami menginvestasikan banyak waktu dan upaya dalam membangun mesin streaming video Peer-to-Peer (P2P) kami yang memberikan kinerja hebat dan keserbagunaan untuk beradaptasi dengan kasus penggunaan apa pun.\\nHubungi kami untuk video P2P berkemampuan DRM sesuai permintaan atau streaming langsung.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Subscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS (limited version)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Oh, tidak! Halaman yang kamu cari tidak ada disini...","WEBSITE_GO_HOME":"Ke Beranda","WEBSITE_LINK_OTHER_DOWNLOADS":"Unduh lainnya","WEBSITE_FAQ_ABR":"Pertanyaan yang sering diajukan","WEBSITE_SUPPORT":"Bantuan","WEBSITE_DOWNLOAD_4_0_BETA":"Unduh Stremio 4 beta Sekarang","WEBSITE_GET_FOR_DESKTOP":"Dapatkan untuk Desktop","WEBSITE_LINK_ADDON_COMPETITION":"Kompetisi Addon","WEBSITE_LINK_ART_CONTEST":"Kontes Seni","WEBSITE_MY_ACCOUNT":"Akun Saya","WEBSITE_MAINPAGE_FAQ_001_H1":"Apa itu Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio adalah pusat media modern yang memberikan kamu kegemaran untuk menonton apapun yang kamu mau.","WEBSITE_MAINPAGE_FAQ_002_H1":"Bagaimana itu bekerja?","WEBSITE_MAINPAGE_FAQ_002_P1":"Setelah Anda menginstal Stremio di perangkat Anda dan membuat akun, yang harus Anda lakukan adalah mengunjungi katalog addon dan menginstal addon apa pun yang Anda inginkan, dan Anda siap melakukannya!","WEBSITE_MAINPAGE_FAQ_002_P2":"Setelah itu, Anda dapat pergi ke bagian Discover atau Board untuk mulai menjelajahi konten.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can access a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},2948:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serie","TYPE_tv":"Canali TV","TYPE_channel":"Canali","TYPE_other":"Altri","TYPE_movie_PL":"Film","TYPE_series_PL":"Serie","TYPE_tv_PL":"Canali TV","TYPE_channel_PL":"Canali","TYPE_other_PL":"Altri","TYPE_ALL":"Tutto","VIDEO":"Video","BACK":"Indietro","MORE":"Di più","DONE":"Fatto","COPY":"Copia","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Modalità Casting","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Nessun transcoding","Discover":"Scopri","Board":"Bacheca","Library":"Libreria","My Library":"La mia Libreria","Calendar":"Calendario","NOTIFICATION_ONLINE":"Ora sei online","NOTIFICATION_OFFLINE":"Attualmente sei offline","INTERNET_CONNECTION":"Connessione di rete","STORAGE_FULL_TITLE":"Avviso: Memoria piena!","STORAGE_FULL_TEXT":"Stremio non sarà in grado di salvare le tue impostazioni, i preferiti e le informazioni di login. Prova a riavviare o reinstallare Stremio.","SEARCH":"Cerca","SEARCH_NO_RESULTS":"Nessun risultato trovato","SEARCH_EXPLANATION_CONTENT":"Cerca film, serie, YouTube e canali TV","SEARCH_EXPLANATION_PEOPLE":"Cerca attori, registi e autori","SEARCH_PASTE_LINKS":"Incolla HTTP e Magnet link","SEARCH_OR_PASTE_LINK":"Cerca o incolla link","ADD_TO_LIB":"Aggiungi alla Libreria","REMOVE_FROM_LIB":"Rimuovi dalla Libreria","ADDED_TO_LIB":"Aggiunto alla Libreria","REMOVED_FROM_LIB":"Rimosso dalla Libreria","TRAILER":"Trailer","WATCH_TRAILER":"Guarda Trailer","WATCH_NOW":"Guarda ora","SHOW":"Show","SHOW_MOVIE":"Mostra film","WATCH_RANDOM":"Guarda casuale","IMDB_RATING":"Voto IMDb","YEAR":"Anno","DIRECTOR":"Regista","WRITER":"Autore","LEAD_ACTORS":"Attori principali","CAST":"Cast","CREW":"Troupe","SHOW_MORE_CAST":"Mostra di più »","AIRED":"Trasmesso","SEASONS":"Stagioni","GENRE":"Genere","CATALOG":"Catalogo","SUMMARY":"Trama","SHOW_MORE":"Mostra di più","SIMILAR":"Simile","UPCOMING":"Prossimamente","ENDED":"Terminato","DURATION":"Durata","FEATURED":"In primo piano","METADATA":"Metadata","CATEGORY":"Categoria","LINKS_GENRES":"Genere","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Registi","SEARCH_VIDEOS":"cerca video","SEARCH_PLACEHOLDER":"cerca o incolla URL","ADDON":"addon","ADDONS":"Addons","OFFICIAL":"ufficiale","ADDONS_OFFICIAL":"Addon ufficiali di Stremio","ADDONS_POPULAR":"Popolari nella tua zona","ADDON_FREE":"gratuito","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"ad abbonamento","ADDON_STREAM_GEORESTRICTED":"non disponibile nella tua zona","ADDON_STREAM_OFFLINECACHE":"Cache Offline","ADDON_STREAM_LOCALFILE":"File locale","SHARE_ADDON":"Condividi addon","AVAILABLE_STREAMS":"Stream disponibili","NO_STREAM":"Nessuno stream disponibile","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Per vedere più stream, puoi installare altri addon","STREAM_NOT_SUPPORTED":"Lo stream selezionato non è supportato su questa piattaforma.","ADDON_CATALOGUE":"Mostra tutti gli addon »","ADDON_CATALOGUE_MORE":"Installa addon","REPO_ADDED":"Repository aggiunta","ADDON_REPO_EXIST_ERR":"Queste collezioni di addons esistono già","ADDON_REPO_ERR":"Si è verificato un errore durante l\'aggiunta della repository","ADDON_ADD_ERR":"Si è verificato un errore durante l\'aggiunta dell\'addon","ERR_ADDON_PROTECTED":"Impossibile disinstallare l\'addon, è protetto","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Qualcosa è andato storto - l’autenticazione potrebbe essere fallita","ERR_NOT_COLLECTION_URL":"Non è un URL di una collezione","ERR_NOT_ADDON_URL":"Non è un URL di un addon","ERR_DETECTFROMURL":"Impossibile trovare addon/collezioni da questo URL","ADDON_DUPLICATE_WARNING":"Avviso: addon duplicato","ADDON_COLLECTION_SET_FAILED":"Sincronizzazione degli addon installati verso il tuo account fallita","SETTINGS_DATA_EXPORT":"Esporta dati utente","ADDON_PULL_FAILED":"Sincronizzazione degli addon installati dal tuo account fallita","REFRESH_ON_CLICK":"Clicca per riprovare","STILL_IN_THEATER":"Film ancora al cinema","WATCH_IN_CINEMA":"Guardalo in un cinema vicino a te","IN_THEATER":"Al cinema","GET_TICKETS":"Compra biglietti","UPCOMING_EPISODE":"Episodio in arrivo","UPCOMING_EPISODE_MESSAGE":"Questo episodio sarà trasmesso il","MISSING_DATE_EPISODE":"Data episodio mancante","MISSING_DATE_EPISODE_MESSAGE":"Questo episodio potrebbe non essere ancora stato trasmesso","CHANNEL_NOT_SCRAPED":"Questo canale non è ancora disponibile.
    Torna tra qualche minuto.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Aggiungilo alla tua libreria per ricevere una notifica quando sarà disponibile.","GET_NOTIFIED_WHEN_AVAILABLE":"Riceverai una notifica quando sarà disponibile.","WARNING_STREAMING_SERVER":"Attenzione: server di streaming locale non trovato. Lo streaming da file locali, YouTube e BitTorrent non sarà disponibile.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Attenzione: questo video potrebbe non essere supportato dal tuo hardware. Ricorda, la riproduzione potrebbe essere lenta.","PLAYER_ERROR":"Oops, Errore del Player","PLAYER_ERROR_LOOKSLIKE":"Sembra che","PLAYER_ORIENTATION":"Orientazione del player","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Bloccato","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensore","PLAYER_ORIENTATION_LANDSCAPE":"Orientazione del player bloccata in orizzontale","PLAYER_ORIENTATION_SENSOR":"Orientazione del player automatica (sensore)","PLAYER_PLAYBACK_SPEED":"Velocità di riproduzione","PLAYER_PLAYBACK_ERROR":"Errore di riproduzione, prova di nuovo","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Errore sconosciuto","PLAYER_PLAYBACK_ERROR_DEFAULT":"Ci dispiace, questo video non può essere riprodotto da {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Lingue sottotitoli","PLAYER_SUBTITLES_VARIANTS":"Versioni sottotitoli","PLAYER_SUBTITLES_SETTINGS":"Impostazioni sottotitoli","PLAYER_SUBTITLES_DISABLED":"Sottotitoli disattivati","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Posizione verticale","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pausa","PLAYER_NEXT_VIDEO":"Prossimo video","PLAYER_MUTE":"Muto","PLAYER_UNMUTE":"Non muto","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Dal vivo","PLAYER_NEXT_VIDEO_TITLE":"Prossimo su","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Nascondi","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Guarda ora","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"In streaming da","CASTING_TO":"Trasmesso su","NETWORK_STATUS":"Stato della rete","STREAM_SPEED":"Velocità dello stream:","STREAM_BUFFERED":"In buffer:","PEERS_INFO":"Informazioni sui peer","PEERS_ACTIVE":"Attivi:","PEERS_CONNECTED":"Connessi:","PEERS_WAITING":"In attesa:","TRANSCODING_WARNING":"Avvertimento: transcodifica video.","STREAM_LOADING":"in caricamento…","PLAYING_LOCAL":"riproduzione da file locale","PLAYING_CACHE":"riproduzione dalla cache","WRONG_SUBS":"Sottotitolo sbagliato?","ERR_SUBS_LOADING_TITLE":"Errore caricamento sottotitoli","ERR_SUBS_LOADING":"Caricamento sottotitoli fallito: potrebbe essere un problema dell\'addon che stai usando, oppure della connessione di rete","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Il seguente addon per sottotitoli non si è caricato","ERR_CASTING_UPDATE_TITLE":"Non è stato possibile aggiornare le info del dispositivo di riproduzione: il server di streaming potrebbe essere offline","CHOOSE_DEVICE":"Scegli un dispositivo su cui guardarlo","NO_CAST_DEVICES":"Nessun dispositivo per casting disponibile.","NO_SETTINGS":"Nessuna impostazione disponibile.","PHONE_TABLET":"Telefono / Tablet","SUBTITLES":"Sottotitoli","SUBTITLES_CHANGE":"Cambia i sottotitoli per ","SUBTITLES_CHANGE_NONE":"Non ci sono altri sottotitoli per questa lingua, ci dispiace","SUBTITLES_CHANGE_ACIVE":"In questo momento è attivo il sottotitolo #{{subtitlesDialog.activeIdx + 1}}. Clicca \\"Continua\\" per attivare il sottotitolo #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"In alternativa,","SUBTITLES_ADJUST_DELAY":"Aggiusta ritardo sottotitoli:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Oppure usa i tasti G / H durante la riproduzione per regolare.","SUBTITLES_ADJUST_DELAY_TIP":"SUGGERIMENTO: puoi usare G / H durante la riproduzione per regolare.","SUBTITLES_DELAY":"Ritardo sottotitoli:","SUBTITLES_LOADING":"Caricamento sottotitoli...","SUBTITLES_UNAVAILABLE":"Nessun sottotitolo esterno disponibile","SUBTITLES_DISABLED":"Disabilitati","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Lingua Predefinita","DEFAULT_SECONDARY_LANGUAGE":"Lingua Secondaria Predefinita","SEASON":"Stagione","EPISODE":"Episodio","SPECIAL":"Speciale","SORT":"ordina","SORT_BY":"Ordina per","FILTER":"filtro","SORT_TRENDING":"popolari","SORT_RECENT":"recenti","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"voto","SORT_WATCHED":"visto","SORT_YEAR":"anno","SELECT_TYPE":"Seleziona tipo","SELECT_SORT":"Seleziona ordinamento","SELECT_CATALOG":"Seleziona catalogo ","SELECT_GENRE":"Seleziona genere","SORT_LASTWATCHED":"Dall\'ultimo visto","SORT_NAME":"Per nome","SORT_TIMESWATCHED":"Per tempo visto","New for You":"Nuovi per te","New Episodes":"Nuovi Episodi","New Videos":"Nuovi Video","Recommendations":"Consigliati","LIBRARY_RESUME":"Riprendi","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Dettagli","LIBRARY_RESUME_DISMISS":"Scarta","LIBRARY_CLEAR_PROGRESS":"Azzera progresso","LIBRARY_REMOVE":"Rimuovi","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oscar Winners","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"Questo addon ha restituito un contenuto vuoto.","DISCOVER_ADULT_WARNING":"Questo contenuto è visibile solo agli adulti. Hai più di 18 anni?","DISCOVER_NOADDON_WARNING":"Attenzione: nessun addon di Stremio attivo per questo tipo. Questi sono gli elementi salvati, nulla verà aggiornato.","DISCOVER_LOAD_ERR":"Il contenuto non è stato caricato, riscontrato un errore.","DISCOVER_ADDON_UNINSTALLED":"Questo contenuto non è più disponibile, potresti aver disinstallato l\'addon.","UNINSTALL_THIS_ADDON":"Disinstalla questo addon","ERR_ADDON_NOT_INSTALLED":"Questo addon non è installato. Installarlo ora?","DETAIL_RECEIVE_NOTIF_SERIES":"Ricevi notifiche per i nuovi episodi","DETAIL_RECEIVE_NOTIF_VIDEOS":"Ricevi notifiche per i nuovi video","SIDEBAR_SHOW_STREAMS":"Mostra gli Stream","RELAUNCH":"Riavvia ora!","UPGRADE":"Nuova versione disponibile! Aggiorna all\'ultima versione di Stremio","RELOAD_UI":"Ricarica l’interfaccia utente","MANUAL_UPDATE_TITLE":"Aggiorna la tua versione di Stremio","MANUAL_UPDATE_LINE1":"Stai utilizzando una versione obsoleta di Stremio ed è altamente sconsigliato","MANUAL_UPDATE_LINE2":"Per piacere aggiorna Stremio il prima possibile.","BUTTON_UPDATE_LATTER":"Non ora","BUTTON_UPDATE_NOW":"Aggiorna","ANONYMOUS_USER":"Utente anonimo","DONT_HAVE_ACC":"Non hai un Account?","HAVE_ACC":"Hai già un Account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Conferma password","EMAIL":"E-mail","FB_LOGIN":"Continua con Facebook","FB_NOTHINGSHARED":"Nulla è condiviso senza il tuo permesso","FB_NOPOST":"Non scriveremo nulla a tuo nome","OR":"o","I_ACCEPT":"Accetto ","I_ACCEPT_BY_CLICKING":"Premendo il pulsante sopra confermo di accettare","TOS":"Termini e condizioni","MUST_ACCEPT_TERMS":"Devi accettare le condizioni","PASSWORDS_NOMATCH":"La password non corrisponde","SIGN_UP":"Registrati","SIGN_UP_EMAIL":"Registrati con l’email","CLICK_TO_SIGN_UP":"Clicca qui per registrarti.","LOG_IN":"Entra","LOG_OUT":"Esci","EXIT_FULLSCREEN":"Esci dalla modalità fullscreen","ENTER_FULLSCREEN":"Entra in modalità fullscreen","PLAY_URL_MAGNET_LINK":"Riproduci URL/Magnet link","HELP_FEEDBACK":"Aiuto & Feedback","TERMS_OF_SERVICE":"Termini di Servizio","PRIVACY_POLICY":"Politica sulla riservatezza","ABOUT_STREMIO":"Info su Stremio","USER_PANEL":"Pannello utente","LOGIN_LABEL":"Accesso","GUEST_LOGIN":"Entra come ospite","GUEST_LOGIN_NOTICE":"Entrare come ospite non è consigliato. Entrando con un account regolare permetti a Stremio di sincronizzare la tua libreria, ricevere notifiche per le tue serie/canali preferiti. Sei sicuro di voler procedere?","GUEST_LOGIN_NOTICE_2":"Entrare come ospite non è consigliato - non avrai le notifiche di sincronizzazione dela Libreria e dela Bacheca, che sono funzioni vitali di Stremio. Sei sicuro di voler procedere?","CLICK_HERE":"clicca qui","WRONG_PASSWORD":"Email o password errata. Nel caso tu abbia dimenticato la password, ","SET_A_PASS":"imposta una password","RESET_PASSWORD":"Resetta password","FORGOT_PASSWORD":"Password dimenticata?","EMAIL_USED_WITH_FB":"Questa email è stata utilizzata con l\'accesso Facebook.","INVALID_EMAIL":"Per favore usa un indirizzo email valido","INVALID_PASSWORD":"Per favore inserisci una password valida","CONN_ERR":"Errore di connessione - riprova più darti per favore.\\n\\nSe persiste, disabilita il firewall/software anti-virus (sopratutto Bitdefender).","IMPORT_FROM_GUEST":"Importa la Libreria dal tuo account ospite","RECEIVE_UPDATES_EMAIL":"Ricevi novità di Stremio sulla tua email","LOGIN_FAILED":"Autenticazione fallita.","SIGNUP_FAILED":"Registrazione fallita.","SEARCH_FAILED":"Ricerca fallita","EMAIL_USED":"Questa email è già in uso.","WAITING_FB_LOGIN":"Accesso con Facebook…","EXTERNAL_PLAYER_TITLE":"Riproduci in un player esterno","EXTERNAL_REMEMBER_PLAYER":"Vuoi ricordare la tua scelta?","EXTERNAL_ALWAYS_PLAY":"Sì","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Miglior adattamento","FIT_SCREEN":"Adatta allo schermo","FILL":"Riempi","16:9":"16:9","4:3":"4:3","Original":"Originale","INTRO_TASTE":"Facci sapere cosa ti piace","INTRO_TASTE_LONG":"Facci sapere cosa ti piace vedere","INTRO_TASTE_PICK":"Seleziona {{interestsRemaining}} interessi","INTRO_TASTE_PICK_MORE":"Seleziona {{interestsRemaining}} più interessi","INTRO_TASTE_HELP_US":"Aiutaci a conoscerti.","INTRO_TASTE_CHOOSE_THESE":"Scegli alcuni di questi:","INTRO_TASTE_CHOOSE_MIN":"Scegli almeno 3 categorie","INTRO_TASTE_CHOOSE_MIN_ERR":"Devi scegliere almeno 3 categorie!","INTRO_TASTE_LIFESTYLE":"Stile di vita","INTRO_TASTE_SPORTS":"Sport","INTRO_TASTE_FOOD_HEALTH":"Cibo & Salute","INTRO_TASTE_BEAUTY_FASHION":"Bellezza & Moda","INTRO_TASTE_NEWS":"Notizie","INTRO_TASTE_GAMING":"Videogiochi","INTRO_TASTE_SCIENCE_EDU":"Scienze & Educazione","INTRO_TASTE_MUSIC":"Musica","INTRO_TASTE_TRAVEL":"Viaggi","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Commedia","INTRO_TASTE_DIY":"Fai-da-te","INTRO_TASTE_TECH":"Tecnologia","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"L’addon selezionato non è supportato su questa piattaforma.","ADDON_DISCLAIMER":"Usare addon di terze parti sarà sempre soggetto alla tua responsabilità e alle leggi vigenti nella giurisdizione in cui ti trovi.","ADDON_ACTIVATE":"Attivare questo addon?","ADDON_REPO_ADD":"URL della collezione dell’addon","ADDON_ADD":"Aggiungi","ADD_ADDON":"Aggiungi addon","ADD_ADDON_DESCRIPTION":"Puoi aggiungere un addon da link esterni, così che apparirà sotto Addon installati.","PASTE_ADDON_URL":"Incolla l\'URL dell\'addon","WHATS_NEW":"Cosa c’è di nuovo","BUTTON_CONTINUE":"Continua","BUTTON_ACTIVATE":"Attiva","BUTTON_ACTIVATED":"Attivato","BUTTON_CANCEL":"Annulla","BUTTON_SUBMIT":"Invia","BUTTON_DISMISS_ALL":"Rimuovi tutto","BUTTON_VIEW_ALL":"vedi tutti","BUTTON_SEE_ALL":"Vedi tutto","BUTTON_COLOR_TRANSPARENT":"Trasparente","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"La tua libreria sembra vuota. Scopri quanto è utile :) ","HOW_START":"Puoi cominciare così:","LIB_EMPTY_CAL":"Il tuo calendario mostra le serie nella tua Libreria.","HOW_START_CAL":"Puoi aggiungere delle serie così:","LIB_EMPTY_BOARD":"Bacheca mostra le notifiche e i consigli in merito alla tua Libreria.","HOW_START_BOARD_WAIT":"Per favore, aggiungi alcune serie o canali alla tua Libreria e dacci qualche minuto per elaborare il tutto :)","HOW_START_BOARD":"Puoi aggiungere serie e film così:","IMPORT_FB":"Importa quello che ti piace da Facebook","IMPORT_TRAKT":"Importa la tua libreria dei media da Trakt","IMPORT_DISCOVER":"Trova roba interessante su Scopri","IMPORT_DISK":"Importa film o spettacoli che hai sul tuo disco locale","PLEASE_CREATE_ACC":"Per favore crea un account per abilitare la sincronizzazione della Libreria & Bacheca.","IMPORT_DISCOVER_SIGNUP":"Registrati e scopri cose interessanti da Scopri","IMPORT_DISK_SIGNUP":"Registrati e importa film o spettacoli che hai sul tuo disco locale","LIB_EMPTY_CLOUD":"Libreria cloud","LIB_EMPTY_CLOUD_DESC":"Libreria cloud personale sincronizzata su tutti i dispositivi","LIB_EMPTY_EARLY":"Primi arrivati","LIB_EMPTY_EARLY_DESC":"Ricevi notifiche per i nuovi episodi","LIB_EMPTY_PERSONAL":"Personale","LIB_EMPTY_PERSONAL_DESC":"Ottieni suggerimenti personalizzati","LIB_EMPTY_CALENDAR_DESC":"Organizza il tuo calendario personale","LIB_EMPTY_ALL":"Registrati per ottenere tutto questo:","LIB_EMPTY_BEST":"Registrati per ottenere il meglio di Stremio","LIB_EMPTY_OTHER":"Registrati per abilitare il Calendario & le altre fantastiche funzionalità","CALENDAR_ADDED":"Il calendario di Stremio è stato aggiunto al tuo calendario desktop di default.","CALENDAR_ADDED_MSG":"Se non funziona, per favore aggiungi manualmente questo URL alla tua applicazione calendario","TRAKT_EXPIRED":"Autenticazione a Trakt scaduta, per favore vai su Impostazioni per autenticarti di nuovo","TRAKT_REQUIRES_LOGIN":"Errore di Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Devi fare login","SETTINGS_LABEL":"Impostazioni","SETTINGS_NAV_GENERAL":"Generale","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Scorciatoie","SETTINGS_SHORTCUT_RELOAD_APP":"Ricarica App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Apri le Impostazioni","SETTINGS_SHORTCUT_SWITCH_TABS":"Mostra le schede","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Scorri le schede in avanti","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Scorri le schede all\'indietro","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Naviga tra i menu","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Vai a Cerca","SETTINGS_SHORTCUT_EXIT_BACK":"Esci / Torna indietro","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Attiva/disattiva il menu della velocità di riproduzione","SETTINGS_SHORTCUT_MENU_VIDEOS":"Attiva/disattiva il menu dei video","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Attiva/disattiva il menu dei sottotitoli","SETTINGS_SHORTCUT_MENU_INFO":"Attiva/disattiva il menu delle informazioni","SETTINGS_SHORTCUT_FULLSCREEN":"Attiva/disattiva Schermo Intero","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Mostra Controlli","SETTINGS_SHORTCUT_PLAY_PAUSE":"Riproduci / Pausa","SETTINGS_SHORTCUT_VOLUME_UP":"Alza Volume","SETTINGS_SHORTCUT_VOLUME_DOWN":"Abbassa Volume","SETTINGS_SHORTCUT_SEEK_NEXT":"Vai a Prossimo","SETTINGS_SHORTCUT_SEEK_PREV":"Vai a Precedente","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Scorri Indietro","SETTINGS_SHORTCUT_SEEK_FORWARD":"Scorri Avanti","SETTINGS_SHORTCUT_PLAY_NEXT":"Riproduci Prossimo","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Aumenta Dimensione Sottotitoli","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Riduci Dimensione Sottotitoli","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Aumenta Ritardo Sottotitoli","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Riduci Ritardo Sottotitoli","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Attiva/disattiva barra laterale","SETTINGS_SHORTCUT_OR":"o","SETTINGS_SHORTCUT_TO":"a","SETTINGS_SHORTCUT_SPACE":"Spazio","SETTINGS_SHORTCUT_SHIFT":"Maiusc","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Autenticati","SETTINGS_FACEBOOK_IMPORT":"Importa","SETTINGS_CALENDAR_SUBSCRIBE":"Iscriviti","SETTINGS_INTERFACE_LANGUAGE":"Lingua interfaccia","SETTINGS_LAUNCH_STARTUP":"Lancia all\'avvio","SETTINGS_VLC_DEFAULT":"Riproduci con VLC","SETTINGS_UI_LANGUAGE":"Lingua Interfaccia","SETTINGS_FULLSCREEN_EXIT":"Tasto Esc esce da schermo intero","SETTINGS_GAMEPAD":"Abilita supporto controller","SETTINGS_CLOSE_WINDOW":"Chiudi app quando la finestra è chiusa","SETTINGS_SUBTITLES_LANGUAGE":"Lingua Sottotitoli Predefinita ","SETTINGS_SUBTITLES_SIZE":"Dimensione Sottotitoli Predefinita ","SETTINGS_SUBTITLES_BACKGROUND":"Sfondo sottotitoli","SETTINGS_SUBTITLES_COLOR":"Colore sottotitoli","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Colore contorno sottotitoli","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Colore sfondo sottotitoli","SETTINGS_SEEK_KEY":"I tasti freccia scorrono il tempo","SETTINGS_SEEK_KEY_SHIFT":"I tasti freccia scorrono il tempo quando il tasto Maiusc è premuto","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Durata del riavvolgimento e dell\'avanzamento rapido","SETTINGS_BINGE":"Riproduci automaticamente il prossimo episodio","SETTINGS_NEXT_VIDEO":"Mostra notifica per far partire il prossimo episodio","SETTINGS_NEXT_VIDEO_TRIGGER":"Mostra notifica prossimo episodio per:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Durata del popup Prossimo video","SETTINGS_PLAY_IN_BACKGROUND":"Riproduci in sottofondo","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Riproduci su un player esterno","SETTINGS_RESIZE":"Ridimensiona automaticamente la finestra prima di riprodurre","SETTINGS_OVERRIDE_SERVER":"Sovrascrivi l\'URL del server di streaming (avvanzato)","SETTINGS_SERVER_URL":"URL server di streaming: ","SETTINGS_SERVER_AVAILABLE":"Server di streaming disponibile.","SETTINGS_SERVER_UNAVAILABLE":"Server di streaming non disponibile.","SETTINGS_SERVER_STATUS_ONLINE":"In linea","SETTINGS_SERVER_STATUS_ERROR":"Errore","SETTINGS_SERVER_CONFIGURE_TITLE":"Configura l\'url del server di riproduzione","SETTINGS_SERVER_CONFIGURE_INPUT":"Inserisci l\'url del server di riproduzione","SETTINGS_SERVER_CACHE_SIZE":"Dimensione Cache","SETTINGS_SERVER_TORRENT_PROFILE":"Profilo Torrent","SETTINGS_HTTPS_ENDPOINT":"Endpoint HTTPS di riproduzione: ","SETTINGS_USE_BETA":"Usa sempre l\'ultima Beta","SETTINGS_IMPORT_FB":"Importa da Facebook","SETTINGS_IMPORT_DISK":"Importa dal disco locale","SETTINGS_IMPORT_TRAKT":"Importa da Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Decodifica con accelerazione hardware","SETTINGS_BACKGROUND":"Riproduzione in sottofondo","SETTINGS_SUBSCRIBE_CALENDAR":"Iscriviti nel calendario","SETTINGS_REQ_EXPORT":"Richiedi estrazione dei dati","SETTINGS_ACC_DELETE":"Richiedi cancellazione account","SETTINGS_CHANGE_PASSWORD":"Cambia password","SETTINGS_TOS":"Termini di servizio","SETTINGS_SUPPORT":"Contatta il supporto","SETTING_LANGUAGE":"Lingua","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Esci da Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scannerizza il codice QR per aprire in remoto","SETTINGS_DESKTOP_NOTIFICATIONS":"Notifiche desktop","SETTINGS_DATA_SAVER":"Risparmio dati","SETTINGS_LANGUAGE_INTERFACE":"interfaccia","SETTINGS_LANGUAGE_SUBS":"sottotitoli predefiniti","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoseleziona Traccia Audio","SETTINGS_DEFAULT_AUDIO_TRACK":"Traccia Audio Predefinita","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"versione","SETTINGS_MPV_WINDOW":"Avvia il player in una finestra separata (avvanzato)","SETTINGS_PLAY_IN_EXTERNAL":"Apri sempre il video nel player esterno","SETTINGS_STORAGE_BUTTON":"Pulisci Memoria Locale","SETTINGS_STORAGE_MODAL_TITLE":"Sei sicuro ?","SETTINGS_STORAGE_MODAL_MESSAGE":"Questo pulirà la memoria locale e ti farà uscire dall\'account.","SETTINGS_HWDEC_PICKER":"Scegli impostazioni di decodifica con accelerazione hardware","SETTINGS_HW_AUTOMATIC":"Automatica","SETTINGS_HW_DISABLED":"Disabilitata","SETTINGS_HW_ACCELERATED":"Accelerazione di decodifica","SETTINGS_HW_FULL":"Accelerazione totale","SETTINGS_HW_LEGACY":"Eredità","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addon Sottotitoli","SUBSPICKER_BLACK_BACKGROUND":"Usa colore di sfondo nero","SUBSPICKER_VERTICAL_OFFSET":"Offset Verticale","SUBSPICKER_SIZE":"Dimensione","SUBSPICKER_DELAY":"Ritardo","SUBSPICKER_EMBEDDED_SUBS":"Sottotitoli Integrati","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Segnalazione arresti","MOBILE_ZOOM_TO_FILL":"Fai Zoom per Riempire lo Schermo","MOBILE_PASSTHROUGH":"Uscita audio digitale (passante)","MOBILE_RUN_LOW_BATTERY":"Esegui a batteria scarica","MOBILE_RUN_FOREGROUND":"Esegui come servizio in primo piano","MOBILE_PERFORMANCE":"PRESTAZIONI & STABILITÀ","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"Il codice QR scade tra ","MOBILE_LOG_INTO":"Accedi al tuo account Stremio ","MOBILE_SCAN_QR":"Scansiona il codice QR sopra o vai a ","MOBILE_LINK_ACCOUNT":"Collega Account","MOBILE_SPEEDPICKER_CANCEL":"Cancella","MOBILE_SPEEDPICKER_LABEL":"Seleziona Velocità di Riproduzione","MOBILE_EMPTY_LIBRARY":"La tua Libreria è vuota","MOBILE_NO_ADDON_ACTIVE":"Nessun addon Stremio attivo per questo tipo.","MOBILE_ORGANIZER_WARNING":"L\'app Stremio Organizer offre funzionalità limitate. Per un elenco di stream disponibili e per un\'esperienza Stremio completa, utilizza Stremio sul desktop.","MOBILE_ADDON_LOADING":"sta ancora caricando","MOBILE_ADDONS_LOADING":"gli addons stanno ancora caricando","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configura il tuo addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configura Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"L\'app Stremio Organizer fornisce una selezione limitata di addon. Per un\'esperienza Stremio completa, usa Stremio sul desktop.","MOBILE_DISCONNECT":"Disconnetti","MOBILE_LOOKING_FOR_DEVICES":"Ricerca dispositivi...","MOBILE_CAST_TO":"Trasmetti a","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"Acceso","NAVIGATION_OFF":"Spento","MARKETING_AGREE":"Accetto di ricevere comunicazioni di marketing da Stremio","QUIT":"Chiudi","CONNECTED":"Connesso","AUTHENTICATE":"Autentica","CACHING":"Salvataggio cache","SETTINGS_CACHING_DRIVE":"Disco di cache","ENABLE_LOCAL_FILES_ADDON":"Abilita l\'addon dei file locali (richiede il riavvio)","LOCAL_ADDON_NOT_ENABLED":"L\'addon locale non è abilitato. Clicca qui per andare alle impostazioni e abilitarlo","ENABLE_REMOTE_HTTPS_CONN":"Abilita connessioni HTTPS remote","TORRENT_PROFILE":"Profilo Torrent","DATA_CACHING":"Salvataggio Dati Cache","MAGNET_PARSING":"Analisi del magnet link","January":"Gennaio","February":"Febbraio","March":"Marzo","April":"Aprile","May":"Maggio","June":"Giugno","July":"Luglio","August":"Agosto","September":"Settembre","October":"Ottobre","November":"Novembre","December":"Dicembre","Monday":"Lunedì","Tuesday":"Martedì","Wednesday":"Mercoledì","Thursday":"Giovedì","Friday":"Venerdì","Saturday":"Sabato","Sunday":"Domenica","Action":"Azione","Comedy":"Commedia","War":"Guerra","Family":"Famiglia","Animation":"Animazione","Adventure":"Avventura","Fantasy":"Fantasia","Crime":"Crimine","Mystery":"Mistero","Romance":"Romantico","Drama":"Dramma","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Fantascienza","Music":"Musica","Biography":"Biografia","Documentary":"Documentario","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"Notizie","History":"Storia","Game-Show":"Gioco a Premi","Reality-TV":"Reality-TV","Talk-Show":"Talk Show","Film & Entertainment":"Film & Spettacolo","Gaming":"Giochi","From TV":"Dalla TV","Lifestyle":"Stile di vita","Science & Education":"Scienza & Educazione","Cooking & Health":"Cucina & Salute","Beauty & Fashion":"Bellezza & Moda","Sports":"Sport","News & Politics":"Notizie & Politica","How-to & DIY":"Fai-da-te","Tech":"Tecnologia","Automotive":"Automobilismo","Causes & Non-Profits":"Cause Umanitarie & Non-Profit","Movies":"Film","Uk Live Tv":"UK Live Tv","Fashion":"Moda","Business News Radio":"Radio Notizie Business","Business Tv":"Business Tv","Cars & Auto":"Auto & Motori","Comedy Radio":"Comicità Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"Notizie Tv","Food And Wine":"Cibo & Vino","Latino Tv":"Tv Latina","Shopping Tv":"Shopping Tv","Religion":"Religione","Kids":"Bambini","Body & Soul":"Corpo & Anima","Education":"Educativo","Indian Tv":"Tv Indiana","Extreme Sports":"Sport Estremi","Middle Eastern Tv":"Medio Oriente Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Scienza Tv","Bikini babe":"Bikini babe","Outdoors":"Aria Aperta","German Tv":"Tv Tedesca","French Tv":"Tv Francese","Italian Tv":"Tv Italiana","Gamer Tv":"Gamer Tv","Travel":"Viaggi","Asian Tv":"Tv Asiatica","Entertainment":"Spettacolo","News Radio":"Notizie Radio","Music Radio":"Musica Radio","Language Learning":"Imparare le Lingue","Science Radio":"Scienza Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Scienza & Tecnologia Vod","new video":"nuovo video","new episode":"nuovo episodio","new movie":"nuovo film","recommended":"consigliato","we recommend":"noi raccomandiamo","offer of the day":"offerta del giorno","news":"novità","music video":"video musicale","CTX_SHOW_HOTKEYS":"Mostra tasti di scelta rapida","CTX_DISMISS_NOTIF":"Chiudi notifica","CTX_DISMISS_ALL":"Chiudi tutto","CTX_SHARE":"Condividi","CTX_COPY_SHARE_LINK":"Copia link di condivisione","CTX_COPY_MAGNET_LINK":"Copia il magnet link","CTX_COPY_STREAM_LINK":"Copia il link dello stream","CTX_DOWNLOAD_VIDEO":"Scaricare questo video","CTX_DOWNLOAD_SUBS":"Scarica i sottotitoli","CTX_VIEW_ON_YOUTUBE":"Visualizza su YouTube","CTX_SHOW":"Mostra","CTX_PLAY":"Riproduci","CTX_PLAY_IN":"Riproduci in","CTX_PLAY_ON":"Riproduci su","CTX_WATCH_ON":"Guarda su","CTX_WATCH":"Guarda","CTX_WATCHED":"Visto","CTX_WATCH_BEGINNING":"Guarda dall\'inizio","CTX_WATCH_MOBILE":"Guarda su un dispositivo mobile","CTX_REWIND":"Riprendi dall\'inizio","CTX_MARK_WATCHED":"Segna come già visto","CTX_MARK_NON_WATCHED":"Segna come non visto","CTX_MARK_UNWATCHED":"Contrassegna come non guardato","CTX_MARK_REST":"Contrassegna i restanti come guardati","CTX_UNMARK_REST":"Contrassegna i restanti come non guardati","CTX_RECEIVE_NEW_NOTIF":"Ricevi nuove notifiche","CTX_REMOVE_CACHE":"Rimuovi dalla cache","CTX_REMOVE_CACHE_EP":"Rimuovi episodio dalla cache","CTX_OPEN_CONTAINING":"Apri cartella","CTX_REMOVE":"Rimuovi dalla libreria","CTX_AVAILABLE_OFFLINE":"Disponibile Offline","CTX_PAUSED":"In Pausa","CTX_ALWAYS_ON_TOP":"Sempre in cima","CTX_FULLSCREEN":"Schermo intero","CTX_WRONG_SUBS":"Sottotitolo sbagliato?","CTX_REPORT_ISSUES":"Segnala problema","CTX_COPY":"Copia","CTX_PASTE":"Incolla","CTX_CLEAR":"Cancella","CTX_CLEAR_RECENT_SEARCHES":"Cancella ricerche recenti","HELLO_THERE":"Hey ciao","HOPE_YOU_ENJOY":"Speriamo ti piaccia Stremio e che sia già una delle tue app preferite!","WHO_ARE_WE":"Chi siamo noi? Siamo il team che sta dietro - due ragazzi che hanno lavorato duramente ogni giorno negli ultimi 3 anni, con un unico obiettivo - rendere questo prodotto migliore sempre di più.","SUPPORT_US":"Se ti piace usare Stremio e pensi possa valere qualcosa - supportaci!","SPREAD_THE_WORD":"Condividi ora con i tuoi amici, spargi la voce su Stremio","MORE_PEOPLE":"Più persone usano Stremio, più migliorerà!","SEND_A_LINK":"Oppure invia un link al nostro sito web","TIP_LOCALFILES":"Suggerimento: puoi fare drag & drop dei video file locali in Stremio","ADDON_MY":"Miei Addon","ADDON_COMMUNITY":"Comunità Addon","ADDON_OFFICIAL":"Addon Ufficiali","ADDON_REPOS":"Collezioni Addon","ADDON_SEARCH":"Cerca addon","ADDON_INSTALL":"Installa","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Disinstalla","ADDON_UPGRADE":"Aggiorna","ADDON_INSTALLED":"Installato","ADDON_INSTALLED_MSG":"Addon installato!","ADDON_UPGRADED_MSG":"Addon aggiornato!","ADDON_UNKNOWN":"Sconosciuto","ADDON_ERR":"Errore installazione Addon!","ADDON_DISCONNECTED":"Disconnesso","ADDON_APP_MISSING":"l\'app per questa fonte non è installata. Vuoi installarla ora?","ADDON_APP_INSTALL":"Installa Ora","ADDON_PAGE":"Pagina Addon","ADDON_TOP_CONTENT":"Il meglio di questo Addon","ADDON_PROVIDES":"Questo addon ti fornisce:","ADDON_WATCH":"Guarda #{types} ora!","ADDON_WATCH_FREE":"Guarda #{types} GRATIS ora!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Tipi supportati","ADDON_SUPPORTED_CATALOGS":"Cataloghi supportati","ADDON_PROVIDES_DISCOVER":"Di più #{types} in Scopri","ADDON_PROVIDES_STREAMS":"Guarda #{types}","ADDON_PROVIDES_STREAMS_FREE":"Guarda #{types} GRATIS","ADDON_PROVIDES_SUBTITLES":"Sottotitoli per #{types}","ADDON_CANTDETECT":"Non siamo riusciti ad individuare alcun Stremio in esecuzione, perciò non siamo stati in grado di scoprire quali addon sono installati.","ERR_NO_META":"Nessun informazione trovata riguardo a questo","ERR_GETTING_META":"Errore nel recupero informazioni riguardo a questo.","ERR_CANT_PARSE_MAGNET":"Impossibile analizzare magnet","ERR_NO_MAGNET_INFOHASH":"Informazioni hash non valide per il magnet","ERR_NO_FILE_PATH":"Impossibile inviare richiesta senza percorso al file","ERR_NO_TORRENT":"Nessun torrent ritornato","ERR_NO_SUPPORTERD_FILES":"Nessun file supportato trovato","ERR_OPENING_FILES":"Impossibile aprire file esterni","ERR_INVALID_LINK":"Link non valido","ERR_REGISTERED_ONLY":"Questa funzione è disponibile solo per utenti registrati.","ERR_CLIPBOARD":"Impossibile riprodurre dagli appunti","ERR_CLIPBOARD_READ":"Impossibile leggere gli appunti su questa piattaforma","ERR_CLIPBOARD_GENERIC":"Nessun URL riproducibile trovato negli appunti. Copia un URL (es. un magnet link) in un video.","BOARD_CONTINUE_WATCHING":"Continua a guardare","BOARD_EXPLANATION_RECOMMENDATIONS":"Film scelti solo per te.
    Questo film è un esempio di suggerimento.","BOARD_EXPLANATION_EPISODES":"I nuovi episodi delle tue serie tv preferite arrivano qui.
    Aggiungi serie tv che segui alla tua Libreria.","BOARD_EXPLANATION_VIDEOS":"I nuovi episodi dei tuo canali YouTube arrivano qui.
    Aggiungi canali che segui alla tua Libreria.","WEBSITE_SLOGAN_WATCH":"Guarda Subito","WEBSITE_SLOGAN_ALL":"Tutti i Contenuti Video Che Ami in un Unico Posto","WEBSITE_SLOGAN_NEW":"Tutto Quello Che Puoi Vedere","WEBSITE_SLOGAN_NEW_NEW":"Libertà di Streaming","WEBSITE_WATCH_FROM":"Guarda Da","WEBSITE_DOWNLOAD":"Scarica Ora","WEBSITE_DOWNLOAD_FOR":"Scarica Ora per","WEBSITE_IS_DESKTOP":"Stremio è un\'applicazione desktop, apri questa pagina sul tuo PC e scaricala","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Caratteristiche","WEBSITE_PAGE_ADDONS":"Addon","WEBSITE_PAGE_TECH":"Tecnologia","WEBSITE_PAGE_CREATE_ADDON":"Crea Addon","WEBSITE_PAGE_CONTACTS":"Contatti","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Film","WEBSITE_TYPE_series_PL":"Serie","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Canali","WEBSITE_STREMIO_WHAT_IS":"Stremio è un\'applicazione che ti aiuta ad organizzare e instantaneamente ti permette di guardare i tuoi video, film, serie TV e canali TV preferiti.","WEBSITE_FEATURES_WATCH":"Guarda subito in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Clicca e guarda i tuoi film, serie TV, video e canali TV preferiti.","WEBSITE_FEATURES_SUBS":"Sottotitoli Automatici","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio sceglie automaticamente i sottotitoli sincronizzati per la tua lingua.","WEBSITE_FEATURES_SUBS_LABEL":"Spetta a te la mossa, capitano.","WEBSITE_FEATURES_CAST":"Riproduci sulla TV & dispositivi mobili","WEBSITE_FEATURES_CAST_DETAIL":"Trasmetti su AppleTV, Chromecast, Smart TV (DLNA/UPnP) e dispositivi mobili.","WEBSITE_LIB":"Goditi La Tua Libreria Personale Sincronizzata Su Tutti I Tuoi Dispositivi","WEBSITE_LIB_COLLECT":"Raccogli da Stremio","WEBSITE_LIB_IMPORT":"Importa da Facebook","WEBSITE_LIB_LOCAL":"Aggiungi dal tuo disco locale","WEBSITE_BOARD":"La Bacheca - Il Tuo Unico Posto per le Notifiche e i Suggerimenti","WEBSITE_BOARD_RECOMMEND":"Serie TV Suggerite","WEBSITE_BOARD_TRENDING":"Film del Momento","WEBSITE_BOARD_NEW":"Nuovi Video","WEBSITE_BOARD_EPISODE":"Nuovi Episodi","WEBSITE_BOARD_1":"Cerchi qualcosa di interessante da guardare? Ricevi suggerimenti basati sulle tue preferenze!","WEBSITE_BOARD_2":"Ricevi una notifica quando c\'è un nuovo episodio della tua serie TV preferita o canale YouTube!","WEBSITE_BOARD_YOUTUBE":"Nuovi video dai canali YouTube","WEBSITE_BOARD_EPISODES":"Nuovi episodi dalle serie che stai seguendo","WEBSITE_ADDONS":"Contenuti Addon","WEBSITE_TECH_DETAIL":"Amiamo la tecnologia, amiamo la scienza pazza!\\nStremio usa le seguenti tecnologie open source:","WEBSITE_TECH_WCJS":"WebChimera.js permette a Stremio di riprodurre ogni formato video con ottime prestazioni.","WEBSITE_TECH_WCJS_EXTRA":"Siamo i contributori del progetto principale","WEBSITE_TECH_ELECTRON":"Electron fornisce una piattaforma innovativa con la quale sviluppare Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Siamo contributori del progetto","WEBSITE_TECH_LINVODB":"Un database che assicura che i tuoi dati siano organizzati e disponibili da ovunque accedi.","WEBSITE_TECH_LINVODB_EXTRA":"Tecnologia sviluppata in casa","WEBSITE_CREATE_ADDON":"Crea il tuo Addon","WEBSITE_CREATE_ADDON_DETAIL":"Hai un servizio che fornisce contenuti video? Ti aiuteremo a sfruttare le caratteristiche di Stremio creando il tuo Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Vantaggi nello sviluppare un Addon per Stremio","WEBSITE_P2P_BEAUTY":"La Bellezza dello Streming Peer-to-Peer","WEBSITE_P2P_1":"Video full HD / 4K on demand o dirette streaming Affidabili e Sostenibili","WEBSITE_P2P_2":"Piattaforma di distribuzione che offre una fantastica esperienza utente","WEBSITE_P2P_3":"Svilupperemo il tuo addon che va in contro alle tue esatte necessità","WEBSITE_P2P_CONTACT":"Interessato? Sei il benvenuto contattaci.","WEBSITE_P2P_CONTACT_EXTRA":"Saremo felici di aiutarti ad integrare i tuoi contenuti con Stremio!","WEBSITE_P2P":"Una volta ogni tanto, arriva una tecnologia che cambia le regole del gioco. Abbiamo investito moltissimo tempo e impegno per costruire il nostro motore di streaming video Peer-to-Peer (P2P) che offre ottime prestazioni e versatilità nel addattarsi ad ogni caso d\'uso.\\nContattaci per i video con supporto DRM P2P on demand o dirette streaming.","WEBSITE_THOUGHTS":"I pensieri che condividiamo:","WEBSITE_SPREAD":"Passa parola riguardo a Stremio:","WEBSITE_CONTACT":"Contattaci, saremo felici di ascoltarti!","WEBSITE_OPENSOURCE":"Per i nostri progetti open source , vai al nostro","WEBSITE_BITCOIN":"Dona bitcoin:","WEBSITE_FAQ":"Domande Frequenti","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Domande","WEBSITE_TOS":"Condizioni d\'uso","WEBSITE_LEGAL":"Legale","WEBSITE_PAGE_ABOUT":"Riguardo","WEBSITE_PAGE_BECOME_PARTNER":"Diventa un partner","WEBSITE_ALL_YOU_CAN_WATCH":"Libertà di Guardare\\nTutto Quello che Vuoi.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Cos\'è Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio è un unico centro di raccolta per i contenuti video. Scopri, organizza e guarda video da qualsiasi fonte su ogni tuo dispositivo.","WEBSITE_WHAT_IS_STREMIO_P2":"Film, programmi TV, serie, dirette TV o canali web come YouTube e Twitch.tv: puoi trovare tutto questo su Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio è un media center moderno che rappresenta una soluzione completa per il tuo intrattenimento video. Scopri, guarda e organizza contenuti video con addon facili da installare.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Film, programmi TV, dirette TV o canali web - trovi tutto su Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Divertiti su tutti i tuoi dispositivi multimediali","WEBSITE_DEVICES_COLLECT":"Prendi da Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importa da facebook","WEBSITE_DEVICES_LOCAL":"Aggiungi dal disco locale","WEBSITE_JOIN_THE_PARTY_NOW":"Unisciti alla festa ora","WEBSITE_DEVICES_ALL":"Facile da utilizzare su tutti i tuoi dispositivi;","WEBSITE_EXTENDABLE_CATALOG":"Catalogo video infinitamente espandibile;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Ottime funzionalità per organizzare i tuoi video;","WEBSITE_AS_SEEN_ON":"Come visto su","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Su di Noi","WEBSITE_LINK_TECHNOLOGY":"Tecnologia","WEBSITE_LINK_APPS":"App","WEBSITE_LINK_DOWNLOADS":"Download","WEBSITE_MORE":"Di più","WEBSITE_LINK_ADDONS":"Addon","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribuisci","WEBSITE_LINK_COMMUNITY":"Comunità","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & di più","WEBSITE_LINK_HELP":"Centro assistenza","WEBSITE_LINK_CONTACTS":"Contattaci","WEBSITE_LINK_TOS":"Termini & condizioni","WEBSITE_LINK_PRAVACY":"Politica sulla riservatezza","WEBSITE_SUBSCRIBE":"Iscriviti","WEBSITE_NEWSLETTER":"Unisciti alla nostra newsletter per cose fantastiche","WEBSITE_PLACEHOLDER_EMAIL":"La Tua Email","WEBSITE_COMMUNITY":"Comunità","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legale","WEBSITE_WHY":"Perché lo facciamo","WEBSITE_WHY_P1":"Noi di Stremio, torniamo al lavoro ogni giorno perché vogliamo risolvere un importante problema dell\'industria dei video on-demand. Ci sono così tanti nuovi contenuti pubblicati ogni minuto che è praticamente impossibile orientarsi.","WEBSITE_WHY_P2":"Aiutiamo le persone a navigare nell\'enorme mondo dell\'intrattenimento video e scoprire nuovi contenuti con i quali divertirsi. Le nostre app riuniscono film, serie, dirette TV, canali web e altro ancora. Ci impegniamo a rendere molto facile per gli utenti trovare titoli ed emittenti che amano.","WEBSITE_WHY_P3":"Puoi usare il nostro servizio su qualsiasi dispositivo quando vuoi, rendendo Stremio il tuo unico centro di intrattenimento video di cui avrai mai bisogno.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"Il team di Stremio è piccolo, ma potente: tra i dieci di noi, programmiamo in X linguaggi e condividiamo competenze nello sviluppo di software, progettiamo UI e UX, marketing e pubblicità e business e startup.","WEBSITE_FEATURES":"Caratteristiche","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Scopri nuovi contenuti con facilità","WEBSITE_FEATURES_DISCOVER_P":"Scopri facilmente nuovi film, programmi TV, serie e canali da guardare. Sfoglia per categoria, genere, valutazione, attualità, ecc. oppure digita semplicemente un nome da trovare. Stremio rende la ricerca di nuovi contenuti video un gioco da ragazzi.","WEBSITE_FEATURES_ALL_CONTENT":"Tutti i tuoi contenuti video su un unico schermo","WEBSITE_FEATURES_ALL_CONTENT_P1":"Guarda quali film, serie o video non hai finito e continua a guardarli; ricevi notifiche per nuovi episodi e uscite; e sfoglia i consigli che otterrai in base alle tue abitudini di visualizzazione.","WEBSITE_FEATURES_LIBRARY":"Organizza la tua libreria video","WEBSITE_FEATURES_LIBRARY_P1":"Aggiungi qualsiasi titolo alla tua libreria Stremio con un solo clic e trova la tua strada tra i contenuti, ordinati per tipo, attualità o ordine alfabetico.","WEBSITE_FEATURES_CALENDAR":"Tieni traccia di tutto ciò che guardi","WEBSITE_FEATURES_CALENDAR_P1":"Ottieni una visualizzazione del calendario di tutti i film e le serie che aggiungi alla tua libreria. Esporta il tuo calendario Stremio e sincronizzalo in modo da sapere sempre quando è previsto un nuovo episodio o una prima visione.","WEBSITE_FEATURES_BIG_SCREEN":"Goditi i tuoi contenuti video su uno schermo più grande","WEBSITE_FEATURES_BIG_SCREEN_P1":"Trasmetti tutto ciò che stai guardando su un altro dispositivo, che si tratti di un telefono, tablet o TV con un solo clic.","WEBSITE_FEATURES_SOURCES":"Guarda video da fonti diverse","WEBSITE_FEATURES_SOURCES_P":"Installa addon ufficiali e della community per goderti video provenienti da provider diversi, il tutto in un\'unica app elegante e facile da usare.","WEBSITE_CREATE_AN_ADDON":"Crea un addon","WEBSITE_FEATURES_SYNC":"Sincronizza la tua libreria su diversi dispositivi e riprendi la tua riproduzione","WEBSITE_FEATURES_SYNC_P1":"Accedi con il tuo account su tutti i tuoi dispositivi e goditi la tua libreria, addon, riproduzioni e calendario sincronizzati.","WEBSITE_FEATURES_EXTENDABLE":"Estendi il catalogo video con gli addon","WEBSITE_FEATURES_EXTENDABLE_P1":"Il catalogo di addon di Stremio offre diversi addon da installare permettendoti di guardare una varietà di nuovi video. Include film, spettacoli, dirette TV, sport, notiziari, podcasts, canali web, videogiochi e molto altro.","WEBSITE_FEATURES_AUTO_SUBS":"Sottotitoli automatici","WEBSITE_FEATURES_AUTO_SUBS_P1":"Con i nostri addon dei sottotitoli hai automaticamente l\'opzione selezionata per la tua lingua preferita.","WEBSITE_FEATURES_CHROMECAST":"Trasmettendo verso Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Goditi i tuoi contenuti video su uno schermo più grande o semplicemente trasmetti quello che guardi su un dispositivo diverso.","WEBSITE_FEATURES_KEEP_TRACK":"Tieni traccia dei tuoi spettacoli TV e Canali Web preferiti","WEBSITE_FEATURES_KEEP_TRACK_P1":"Ottieni una visualizzazione a calendario e notifiche per i nuovi episodi delle tue serie e canali web preferiti.","WEBSITE_FEATURES_POWER_USER":"Funzionalità per utenti avanzati","WEBSITE_FEATURES_POWER_USER_P1":"Riproduci in un player esterno","WEBSITE_FEATURES_POWER_USER_P2":"Riproduci da un file torrent o link magnet","WEBSITE_FEATURES_POWER_USER_P3":"Importa nella tua libreria dagli interessi Facebook o dal disco locale","WEBSITE_ADD_ONS":"Addon","WEBSITE_ADD_ONS_P1":"Tutti i contenuti video di Stremio sono recuperati ad un sistema di addon - nessun contenuto o fornitore di contenuti è stato integrato nell\'app.","WEBSITE_ADD_ONS_P2":"Ci sono due gruppi di addon disponibili: quelli ufficiali o della comunità.","WEBSITE_ADD_ONS_P3":"Quelli ufficiali sono sviluppati e offerti da Stremio, mentre quelli della comunità sono creati dai membri della nostra community, che li offrono anche.","WEBSITE_ADDONS_OFFICIAL":"Addon ufficiali","WEBSITE_ADDONS_WATCHUB":"Guarda i tuoi film, serie e spettacoli preferiti da fornitori come iTunes, Hulu, Amazon e altri servizi.","WEBSITE_ADDONS_YOUTUBE":"Guarda i tuoi canali YouTube preferiti senza pubblicità e ricevi notifiche per le novità dei creators che segui.","WEBSITE_ADDONS_FILMON":"Guarda dirette TV, film e TV gratuitamente. 600 canali TV, 45,000 film gratis, documentari e tanto altro.","WEBSITE_ADDONS_OPENSUBTITLES":"Sottotitoli di film e TV in più lingue, migliaia di sottotitoli tradotti caricati ogni giorno.","WEBSITE_ADDONS_COMMUNITY":"Addon della comunità","WEBSITE_ADDONS_FILMON_VOD":"Guarda film quando vuoi da Filmon.tv","WEBSITE_ADDONS_TWICH":"Guarda dirette da Twitch.tv - una piattaforma di video streaming platform per il settore degli e-sports.","WEBSITE_ADDONS_VODO":"Guarda film indie senza pagare.","WEBSITE_ADDONS_NETFLIX":"Guarda film e serie Netflix.","WEBSITE_ADDONS_CREATE":"Crea un addon","WEBSITE_ADDONS_CREATE_P1":"Se lo desideri, puoi sviluppare il tuo addon. In questo modo, puoi dare a te e alla nostra comunità accesso a nuovi contenuti video, e raggiungere un nuovo pubblico mirato di milioni di utenti in giro per il mondo.","WEBSITE_ADDONS_START_CREATE":"Per iniziare, visita la pagina Stremio Addon SDK:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"Per ottimizzare le performance, ti suggeriamo di usare l\'ultima versione disponibile dell\'applicazione Stremio. Se per qualche motivo, tuttavia, ti dovesse piacere usare una versione più vecchia, puoi scaricarla da qui.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio per Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio per macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio per Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio per Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio per Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio per Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio per Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio per iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribuisci","WEBSITE_CONTRIBUTE_P1":"La piattaforma Stremio è open source e puoi facilmente creare un addon per contenuti al momento non offerti.","WEBSITE_CONTRIBUTE_WHY":"Perchè dovresti creare un addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Raggiungere un nuovo pubblico per i tuoi contenuti video","WEBSITE_CONTRIBUTE_WHY_P2":"La base utenti di Stremio sta crescendo rapidamente - durante il primo anno di lancio, Stremio ha raggiunto 1 milione di utenti in giro per il mondo, e nel secondo anno questo numero è cresciuto a 2.5 milioni.","WEBSITE_CONTRIBUTE_WHY_P3":"Con il tuo addon, puoi facilmente raggiungere questo pubblico e distribuire i tuoi contenuti video a loro.","WEBSITE_CONTRIBUTE_ALL":"Guarda i tuoi film, video, serie e canali preferiti in un unico posto.","WEBSITE_CONTRIBUTE_ALL_P1":"Sei appassionato di un particolare tipo di contenuto non ancora disponibile su Stremio? Creagli un addon e goditi i tuoi video preferiti in uno dei più grandi e facili centro di intrattenimento sul mercato.","WEBSITE_CONTRIBUTE_ALL_P2":"Sopratutto, riceverai l\'infinita gratitudine di altri membri della comunità di Stremio che la pensano allo stesso modo.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetizza il tuo addon e guadagna soldi","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Una volta sviluppato un nuovo addon di Stremio, puoi facilmente monitizzarlo in diversi modi. Se lo stai considerando, sentiti libero di contattarci a ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - saremmo lieti di consultarti e consigliarti sulle opzioni di monetizzazione degli addon.","WEBSITE_CONTRIBUTE_TRANSLATE":"Diventa un traduttore volontario","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Se vuoi goderti Stremio in diverse lingue, puoi unirti alla nostra comunità di traduttori volontari. Ci aiutano ad aggiungere versioni di Stremio in molte lingue diverse.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Sei impaziente di iniziare?","WEBSITE_TRANSALTE_STREMIO":"Traduci Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Comunità ufficiale","WEBSITE_COMMUNITY_OFFICIALS_P1":"Diventa parte della crescita della comunità di Stremio. Seguici sui social media e non vergognarti di salutarci - amiamo ascoltare i nostri fan! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Comunità non-ufficiale","STREMIO_COMMUNITY_NL":"Stremio Olanda","STREMIO_COMMUNITY_BRASIL":"Stremio Brasile","STREMIO_COMMUNITY_GERMANY":"Stremio Germania","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgio","STREMIO_COMMUNITY_FRANCE":"Stremio Francia","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portogallo","STREMIO_COMMUNITY_ITALY":"Stremio Italia","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Messico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Stremio stupendo","WEBSITE_COMMUNITY_PARTNERS":"Partner e sostenitori","WEBSITE_COMMUNITY_GOODIES":"Stremio chicche","WEBSITE_COMMUNITY_WALLPAPERS":"Sfondi","WEBSITE_COMMUNITY_ART":"Comunità Galleria d\'arte","WEBSITE_LINK_ART":"comunità galleria d\'arte","WEBSITE_CONTACT_US":"Contattaci","WEBSITE_CONTACT_US_P1":"Se hai qualsiasi domanda, commento o suggerimento, sentiti libero di metterti in contatto con noi attraverso il modulo di contatto qui sotto.","WEBSITE_CONTACT_US_P2":"Tieni in mente che sia locati in Bulgaria quindi potrebbero esserci ritardi alle tue domande a causa del fuso orario.","WEBSITE_CONTACT_US_SUCCESS":"Il tuo messaggio è stato inviato. Ti risponderemo al più presto.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Per piacere inserisci una email valida!","WEBSITE_CONTACT_US_Q_RELATED_TO":"A cosa è collegata la tua domanda?","WEBSITE_CONTACT_US_Q_OS":"Qual\'è il tuo Sistema Operativo?","WEBSITE_CONTACT_US_PH_EMAIL":"La tua E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Messaggio","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"INVIATO","WEBSITE_CONTACT_US_Q_1":"Come si installa?","WEBSITE_CONTACT_US_Q_2":"Come si disinstalla?","WEBSITE_CONTACT_US_Q_3":"(HTML) Come si fanno le lasagne?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Tecnologia","WEBSITE_TECHNOLOGY_P1":"Amiamo la tecnologia e la scienza folle.
    Ecco ciò che fa girare Stremio (è tutto open-source).","WEBSITE_TECHNOLOGY_P_QT":"Sviluppo di software multi piattaforma al suo massimo splendore.","WEBSITE_TECHNOLOGY_P_MPV":"Un riproduttore multimediale gratuito, open source, e multi piattaforma.","WEBSITE_TECHNOLOGY_P_RN":"React Native ti permette di costruire applicazioni usando solo JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework è integrato nell\'applicazione per ottenere contenuti multimediali.","WEBSITE_TECHNOLOGY_P_REALM":"Realm è una piattaforma mobile e un sostituto di SQLite e Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js è un ambiente runtime per JavaScript, open-source e multi piattaforma.","WEBSITE_TECHNOLOGY_P_RUST":"Rust è un linguaggio di programmazione multi paradigma incentrato sulla sicurezza, specialmente sulla concorrenza sicura.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribuisci al progetto","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Ci sono due modi in cui puoi contribuire a Stremio e aiutarci a renderlo migliore.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Puoi donare le tue preziose competenze linguistiche traducendo la piattaforma...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"oppure","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... puoi sfruttare le tue capacità di scrittura del codice per creare addon per la comunità. ","WEBSITE_TRANSLATE_STREMIO":"Traduci Stremio","WEBSITE_404_OH_NO":"Uh-oh! La pagina che stavi cercando non si trova qui...","WEBSITE_GO_HOME":"Torna sulla home","WEBSITE_LINK_OTHER_DOWNLOADS":"Altri download","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Supporto","WEBSITE_DOWNLOAD_4_0_BETA":"Scarica Ora Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Ottieni per desktop","WEBSITE_LINK_ADDON_COMPETITION":"Competizione addon","WEBSITE_LINK_ART_CONTEST":"Concorso artistico","WEBSITE_MY_ACCOUNT":"Il mio account","WEBSITE_MAINPAGE_FAQ_001_H1":"Che cos\'è Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio è un moderno centro multimediale che ti offre la libertà di guardare quello che vuoi.","WEBSITE_MAINPAGE_FAQ_002_H1":"Come funziona?","WEBSITE_MAINPAGE_FAQ_002_P1":"Una volta installato Stremio sul tuo dispositivo e creato l\'account, tutto quello che devi fare è visitare il catalogo degli addon e installare quello che vuoi, e hai fatto!","WEBSITE_MAINPAGE_FAQ_002_P2":"Dopo, puoi visitare le sezioni Scopri e Bacheca per iniziare ad esplorare i contenuti.","WEBSITE_MAINPAGE_FAQ_003_H1":"Cosa posso vedere qui?","WEBSITE_MAINPAGE_FAQ_003_P1":"Tantissime cose: Film, spettacoli TV, Canali web, Sport, Canali TV, ascoltare Podcast e altro. Grazie al nostro sistema di addon, hai accesso a una varietà di contenuti.","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio è open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Si, puoi controllare i seguenti link: ${1}applicazione desktop${2} e ${3}organizzazione GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio è sicuro?","WEBSITE_MAINPAGE_FAQ_005_P1":"Si: perchè è un software open-source, il codice sorgente è di pubblica visione e puoi controllarlo personalmente.","WEBSITE_MAINPAGE_FAQ_006_H1":"Per quanto riguarda la mia privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"Rispettiamo la privacy degli utenti e non conserviamo nessun dato personale ad eccezione del minimo indispensabile per creare e sincronizzare il tuo account.","WEBSITE_MAINPAGE_FAQ_006_P2":"C\'è anche un accesso in ${1}Modalità ospite${2}, che non richiedere nessun dato: così, nessuna chiamata sarà fatta alla nostra infrastruttura. Tuttavia, sacrifica alcune funzionalità utili, come la sincronizzazione della tua libreria tra i diversi dispositivi.","WEBSITE_MAINPAGE_FAQ_007_H1":"Posso trasmettere sulla mia TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Si, supportiamo Chromecast e puoi trasmettere sia l\'applicazione desktop sia mobile (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Quanti addon ha Stremio?","WEBSITE_MAINPAGE_FAQ_008_P1":"Alla fine del 2019, più di 50 - per maggiori informazioni, controlla il nostro catalogo degli addon.","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio può essere esteso oltre ciò che è nel catalogo degli addon?","WEBSITE_MAINPAGE_FAQ_009_P1":"Si, potresti controllare questi: ${1}PimpMyStremio${2}, ${3}comunità Reddit${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"Che dispositivi supportano Stremio?","WEBSITE_MAINPAGE_FAQ_010_P1":"Abbiamo un\'applicazione desktop per Windows, Mac e Linux. Per mobile, supportiamo Android e iOS, tuttavia iOS ha funzionalità limitate (non supporta la maggior parte degli addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"Ci sono diversi dispositivi basati su Android che supportano Stremio, come NVIDIA Shield e Amazon Fire Stick, ma non li supportiamo ufficialmente.","WEBSITE_MAINPAGE_FAQ_011_H1":"Potete aggiungere dei contenuti su Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Scusaci, non offriamo noi stessi i contenuti, ma più addon Stremio installi, più contenuti potrai trovare.","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio può riprodurre link magnet?","WEBSITE_MAINPAGE_FAQ_012_P1":"Si, e può riprodurre normali link HTTP e file torrent (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Posso scaricare un video e vederlo offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"La funzionalità offline è una notività in arrivo, ma se permetti a Stremio di salvare sulla cache del tuo dispositivo (dalle impostazioni) puoi guardare i video più tardi senza bisogno di connessione.","WEBSITE_MAINPAGE_FAQ_014_H1":"Non funziona niente, aiutatemi!","WEBSITE_MAINPAGE_FAQ_014_P1":"Sei sicuro di aver installato gli addon? Se si, confrontati con il nostro ${1}centro assistenza${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"In che modo Stremio sostiene le sue operazioni di sviluppo?","WEBSITE_MAINPAGE_FAQ_015_P1":"Pubblichiamo occasionalmente annunci non intrusivi, ma stiamo valutando la possibilità di passare a un modello di donazione.","WEBSITE_MAINPAGE_FAQ_015_P2":"Per altre domande, vai al nostro ${1}centro assistenza${2}.","HELP_LEARN_MORE":"Aiutaci a conoscerti meglio.","LIFESTYLE":"Stile di vita","SPORTS":"Sport","FOOD_HEALTH":"Cibo & salute","BEAUTY_FASHION":"Moda & bellezza","NEWS":"Notizie","GAMING":"Giochi","SCIENCE_EDUCATION":"Scienze & istruzione","MUSIC":"Musica","TRAVEL":"Viaggi","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Commedie","DIY":"Fai-da-te","TECH":"Tecnologia","CINEMA":"Cinema","CONTINUE":"Continua","SLOW_LOADING":"CARICAMENTO LENTO?","I_GIVE_UP":"RINUNCIO","LEARN_MORE":"Per saperne di più","POOR_SOURCE":"Questa fonte è scarsamente disponibile o la tua connessione Internet non è abbastanza veloce","PICK_CATEGORIES_ERR":"Devi scegliere almeno 3 categorie","ADJUST_TIMING":"Regola il tempo con ","ADJUST_SIZE":"Regola le dimensioni con ","SEARCH_ANYTHING":"Puoi cercare qualsiasi cosa...","ALL_CATEGORIES":"Tutte","SEARCH_CATEGORIES":"Film, Serie, YouTube & TV","SEARCH_PERSONS":"Attori, Registi & Scrittori","SEARCH_PROTOCOLS":"Link HTTP & Magnet","SEARCH_TYPES":"Link IMDB / TVDB","WATCHED":"Guardati","SHOW_LESS":"Mostra meno","LAST_SEARCHES":"Ultime ricerche","CLEAR_HISTORY":"Pulisci cronologia","CHOOSE_SOME":"SCEGLI TRA QUESTI:","NO_WEB_REMOTE":"Impossibile caricare Telecomando Web","STREMIO_OFFLINE":"Stremio è offline","STREMIO_EXPENSIVE_CONNECTION":"Abbiamo notato che stai usando i dati mobile per connetterti, vuoi continuare?","USE_DATA":"Usa dati","WARNING":"Attenzione","MORE_INFO":"Più informazioni ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Caricamento ...","STREMIO_TV_BACK_TO_LANGUAGES":"Torna alle lingue","STREMIO_TV_REMOTE":"Telecomando","STREMIO_TV_GO_TO":"Vai a:","STREMIO_TV_OR_SCAN":"o scansiona:","STREMIO_TV_ADDON_INSTRUCTIONS":"Per favore segui le istruzioni per installare i tuoi addon preferiti.","STREMIO_TV_LIVE_TV":"Diretta TV","STREMIO_TV_RESUME_WATCHING":"Riprendi a Guardare","STREMIO_TV_LOADING_BACKGROUND":"Caricamento Sfondo","STREMIO_TV_CHECKING_AUTHENTICATION":"Controllo Autenticazione","STREMIO_TV_LOADING_BOARD":"Caricamente Bacheca","STREMIO_TV_LOGIN_HEADER_LINE_1":"Vogliamo che i nostri utenti abbiano la migliore esperienza personalizzata possibile con il nostro software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"È per questo motivo che ti chiediamo gentilmente di creare e/o accedere al tuo account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Grazie per la comprensione,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Il Team Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Per utilizzare il Telecomando Web con il tuo Smartphone / Tablet / Computer:","STREMIO_TV_WIFI_SETUP":"Configurazione Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle non ha rilevato una connessione Internet.","STREMIO_TV_WIFI_DETAILS_1":"Connetti a:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Usa password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Apri un browser web con il link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Per ultimo visto","STREMIO_TV_LIBRARY_SORT_NAME":"Per nome","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Per minuti visti","STREMIO_TV_DETAILS_SEASON_NUMBER":"Stagione ${1}","STREMIO_TV_STREAMS_LOADING":"Caricati gli addon ${1} / ${2}...","STREMIO_TV_STREAMS_STILL_LOADING":"L\'addon ${1} è in caricamente...","STREMIO_TV_PLAYER_SETTINGS":"Impostazione del player","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Ritardo sottotitoli","STREMIO_TV_PLAYER_AUDIO_DELAY":"Ritardo audio","STREMIO_TV_PLAYER_VIDEO_SCALING":"Adattamento video","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Sorgente flusso non supportata","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Apertura link esterno fallita","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Riproduci con ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Riproduci con libVLC","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Passaggio a libVLC a causa di un errore di riproduzione","STREMIO_TV_ADDONS_TITLE":"Usa Stremio sul tuo Telefono o PC per installare o configurare addon e premi \\"Sincronizza Addon\\"","STREMIO_TV_ADDONS_SUBTITLE":"Nota: sii sicuro di utilizzare lo stesso profilo Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sincronizza Addon","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addon sincronizzati con successo","STREMIO_TV_ADDONS_SYNC_FAILED":"Sincronizzazione addon fallita","STREMIO_TV_META_LINK_FAILED":"Apertura meta link fallita","STREMIO_TV_CATALOG_LOADING":"Catalogo in caricamento...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interfaccia lingua aggiornata","STREMIO_TV_SETTINGS_THEME_UPDATED":"Tema aggiornato","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Player di Default","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"Player Esterno","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Lingua predefinita","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Lingua secondaria predefinita","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Riproduzione con tunnel","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possibili problemi di riproduzione su alcuni dispositivi","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Alcuni formati video possono non funzionare","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Url streaming del server","STREMIO_TV_SETTINGS_SERVER_VERSION":"versione Server","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Sconosciuto","STREMIO_TV_SETTINGS_STREMIO_VERSION":"versione Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Modifica url del server","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Inserisci un url streaming del server","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Per leggere le Privacy Policy di Stremio, visita:","STREMIO_TV_SETTINGS_TOS_TEXT":"Per leggere i Termini e Condizioni di Stremio, visita:","STREMIO_TV_NAV_SEARCH":"Cerca","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Scopri","STREMIO_TV_NAV_LIBRARY":"Libreria","STREMIO_TV_NAV_MOVIES":"Film","STREMIO_TV_NAV_SERIES":"Serie","STREMIO_TV_NAV_CHANNELS":"Canali","STREMIO_TV_NAV_TV":"Dirette TV","STREMIO_TV_NAV_SETTINGS":"Impostazioni","STREMIO_TV_NAV_ADDONS":"Addon","STREMIO_TV_LOGIN_TITLE":"Collega Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Scade tra","STREMIO_TV_LOGIN_STEP_ONE":"Scansione il QR Code sotto oppure va a","STREMIO_TV_LOGIN_STEP_TWO":"Accedi al tuo account Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Richiedi un nuovo collegamento","STREMIO_TV_LOGIN_LINK_REFRESHED":"Codice di accesso aggiornato","STREMIO_TV_SEARCH_PLACEHOLDER":"Scrivi qualcosa","STREMIO_TV_SEARCH_NO_ADDONS":"Non sono stati richiesti addon per i cataloghi!","STREMIO_TV_SEARCH_BUTTON":"Cerca","STREMIO_TV_SEARCH_KEY_DEL":"Canc","STREMIO_TV_SEARCH_KEY_SPACE":"Spazio","STREMIO_TV_SEARCH_KEY_CLEAR":"Pulisci","STREMIO_TV_SEARCH_HISTORY_TITLE":"Cerca nella Cronologia","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Puoi cercare per Titolo, Attori, Canali e altro...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Pulisci la Cronologia Cerca","STREMIO_TV_FILTERS_DESCRIPTION":"Scegli uno dei filtri qui sotto","FILTERS":"Filtri","SETTINGS":"Impostazioni","ACCOUNT":"Profilo","LOGOUT":"Disconnetti","THEMES":"Temi","PLAYBACK":"Riproduzione","PLAYBACK_SPEED":"Velocità riproduzione","AUDIO_TRACKS":"Tracce audio","VIDEOS":"Video","SERVER":"Server","LINKS":"Collegamenti","ABOUT":"Riguardo","INTERFACE":"Interfaccia","ANIMATIONS":"Animazioni","STATUS":"Stato","LANGUAGE":"Lingua","SIZE":"Grandezza","DELAY":"Ritardo","BOLD":"Grassetto","TEXT_COLOR":"Colore Testo","OUTLINE_COLOR":"Colore Bordi","BACKGROUND_COLOR":"Colore Sfondo","BACKGROUND_BLUR":"Sfocatura Sfondo","SEEK_TIME_DURATION":"Durata Termpo Ricerca","AUTO_PLAY":"Auto-Play Prossimo Episodio","PLAY_NOW":"Riproduci Ora","MARK_AS_WATCHED":"Segna come Visto","MARK_AS_UNWATCHED":"Marca come Non-Visto","REWIND_TO_BEGINNING":"Ricomincia dall\'Inizio","CONTINUE_WATCHING":"Continua a Guardare","ALL":"Tutto","SECONDS":"secondi","ON":"ACCCESO","OFF":"SPENTO","RELOAD":"Ricarica","EDIT_URL":"Modifica URL","NONE":"Niente","EMBEDDED":"Integrato","REMOTE_SWITCH_DEVICES":"Cambia dispositivo","REMOTE_VIDEOS":"Video","REMOTE_ADJUST_TIMING":"Regola tempi","REMOTE_ADJUST_SIZE":"Regola dimensioni","REMOTE_COULD_NOT_BE_LOADED":"Non è stato possibile caricare Telecomando Web","REMOTE_RETRY":"Riprova","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"Cos\'è Stremio?","FAQ_001_P1":"Stremio è un software per media center progettato per l\'intrattenimento video pensando alla facilità d\'uso. Stremio ti consente di organizzare & guardare la tua raccolta di film, serie, canali e dirette TV.","FAQ_001_P2":"Stremio raccoglie i contenuti che ti mostra dal tuo disco locale e dal nostro sistema di addon.","FAQ_001_P3":"Ti notifica anche quando un nuovo episodio/video/film/ che ti interessa è uscito, e ti suggerisce i film raccomandati per te.","FAQ_02_H1":"Come si confronta Stremio rispetto a Kodi e Plex?","FAQ_02_P1":"Noi abbiamo preso ispirazione da questi due software. Ma abbiamo obiettivi diversi - Stremio è specificamente mirato ai video di intrattenimento, e si impegna a diventare la soluzione principale essendo molto facile da usare.","FAQ_02_P2":"Stremio non sarà mai così personalizzabile e ricco di funzionalità come Kodi e Plex, ma è molto più facile da usare. Solo ${1} prendi e vedi ${2} :)","FAQ_03_H1":"Come si confronta Stremio rispetto a Netflix?","FAQ_03_P1":"Come prima, Netflix è una delle nostre ispirazioni. Ci sforziamo di ottenere l\'esperienza utente di Netflix, oltre a molte chicche aggiuntive. Ma soprattutto, ti stiamo dando la libertà di gestire la tua libreria e aggiungere nuove fonti di contenuto con il nostro sistema di addon.","FAQ_03_P2":"Ciò rende Stremio infinitamente estendibile, quindi quando usi Stremio, non sarai mai limitato come il contenuto che Netflix decide di concedere in licenza. Per esempio, da Stremio puoi vedere contenuti da ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} e anche ${9}Netflix${10} stesso!","FAQ_04_H1":"Come si confronta Stremio rispetto a Flipboard?","FAQ_04_P1":"Non riceviamo questa domanda così spesso, tranne quando parliamo con le persone di start-up :)","FAQ_04_P2":"Stremio è progettato come aggregatore di contenuti, che lo rende effettivamente un Flipboard per i video. Questo è molto evidente nella nostra sezione Bacheca, che ti mostra cataloghi e le notifiche di nuovi video/nuovi episodi per quello che segui, proprio come Flipboard.","FAQ_05_H1":"Come si confronta Stremio rispetto a Popcorn Time?","FAQ_05_P1":"Stremio e Popcorn Time hanno un\'interfaccia simile, perché non ci sono molti modi per fare bene i cataloghi di intrattenimento video :)","FAQ_05_P2":"Ma mentre Popcorn Time è incentrato sulla riproduzione torrent da specifiche sorgenti, Stremio non ha restrizioni ed è semplicemente un aggregatore di contenuti - non è bloccato in una specifica sorgente.","FAQ_05_P3":"Inoltre, non offriamo nessun addon di tipo torrent ufficiale, quindi Stremio non copre l\'esperienza d\'uso di Popcorn Time con funzionalità ufficiali.","FAQ_05_P4":"Un\'altra differenza è che Popcorn Time è completamente open source, mentre Stremio è ${1} parzialmente open source${2}.","FAQ_06_H1":"Aggiungerete questo film/serie TV?","FAQ_06_P1":"No, ci dispiace :(","FAQ_06_P2":"Come riportato nelle altre domande, Stremio non offre perfonalmente contenuti - tutto è aggiunto grazie al sistema di addon. Nel caso dovessi avere una richiesta per un contenuto, puoi usare il tasto “Report” nel Riproduttore, che manderà una email all\'autore dell\'addon che stai attualmente utilizzando.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Creerete addon per X?","FAQ_08_P1":"È assolutamente possibile.","FAQ_08_P2":"Se hai un\'idea per un addon, scrivi una riga a ${1}office@stremio.com${2}, ma assicurati che la tua idea per l\'addon non infranga nessun copyrights o condizione d\'uso.","FAQ_08_P3":"Al momento, le prossime integrazioni sulla nostra tabella di marcia sono addon per FandangoNOW, Filmon.tv video on demand e Crunchyroll.","FAQ_09_H1":"Stremio usa BitTorrent?","FAQ_09_P1":"Sì, Stremio supporta BitTorrent come protocollo di riproduzione. Puoi usarlo sia con un addon per torrent, oppure trascinando un file .torrent su Stremio, oppure incollando un magnet link nella barra di ricerca.","FAQ_09_P2":"Attenzione, da notare che l\'unico addon che usa BitTorrent è ${1}Vodo${2}, il quale fornisce contenuti indie, tutti autorizzati per essere distibuiti su BitTorrent.","FAQ_09_P3":"Noi non supportiamo l\'uso di un qualsiasi addon di terze parti che permetta l\'infrangimento del copyright.","FAQ_10_H1":"Cosa posso guardare su Stremio con gli addon ufficiali?","FAQ_10_P1":"Di default, puoi guardare contenuti di Filmon.tv, YouTube e Vodo. In aggiunta, abbiamo addon per Twitch.tv e pochi altri.","FAQ_10_P2":"Questa combinazione fornisce una selezione di:","FAQ_10_L1":"Canali TV popolari, offerti da Filmon.tv - per esempio E4, BBC, Bollyworld TV","FAQ_10_L2":"Qualsiasi cosa da YouTube - per esempio BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Film indie con Vodo","FAQ_10_L4":"Trasmissioni di Gaming Online con Twitch.tv","FAQ_10_P3":"In più, ci sono molte fonti di contenuto fornite con gli addon di Guidebox e Netflix, che non riproducono internamente a Stremio, ma potrebbero rimandarvi a un dato servizio. Per esempio, l\'addon di Guidebox potrebbe darvi una selezione di film che si possono guardare gratis negli USA, da servizi come TubiTV e Crackle.","FAQ_11_H1":"Stremio non si installa, cosa devo fare?","FAQ_11_P1":"Se usi Windows, prova ${1}queste alternative${2}.","FAQ_11_P2":"Se usi Mac OS X, sii consapevole che non supportiamo nessuna versione precedente a OS X Mavericks (10.9).","FAQ_11_P3":"Se usi Linux, sii consapevole che supportiamo solo Linux 64 bit (x64) per il momento.","FAQ_11_P4":"Se non riesci a risolvere il tuo problema, scrivici al nostro ${1} gruppo Facebook${2}.","FAQ_12_H1":"Perché scatta il mio antivirus? Stremio è sicuro?","FAQ_12_P1":"Assicuriamo che Stremio è ${1}sicuro al 100%${2}.","FAQ_12_P2":"Il tuo antivirus scatta perchè nel nostro programma è integrata la pubblicità, che viene riconosciuta da alcuni antivirus come pericolo.","FAQ_12_P3":"Se non sei ancora sicuro, puoi provare ad installare una ${1}di queste alternative${2}.","FAQ_13_H1":"Come posso creare il mio addon?","FAQ_13_P1":"Per i principianti, suggeriamo di controllare su GitHub il nostro ${1}modulo di sistemi di addon${2}.","FAQ_13_P2":"Dopo, potete seguire la guida ${1}Hello World${2}.","FAQ_13_P3":"Se non hai idea di come programmare, condividi la tua idea sulla ${1}comunità Reddit${2} e contattaci a ${3}office@stremio.com${4} con la tua idea di addon.","FAQ_14_H1":"Come sono pubblicati gli addon?","FAQ_14_P1":"Quando crei un addon e lo offri, ed inserisci un campo endpoint nel tuo manifesto, che punta ad un indirizzo di un addon funzionante, l\'addon sarà automaticamente pubblicato sul nostro ${1}Catalogo Addon${2}.","FAQ_14_P2":"Questo succede perchè la parte server del modulo stremio-addons chiama automaticamente la nostra API per notificare l\'addon. Quando la nostra API valida il tuo endpoint come addon valido, inizierà ad essere mostrato nel catalogo.","FAQ_15_H1":"Posso lanciare Stremio nel mio browser?","FAQ_15_P1":"Non ancora per il momento, ma arriverà!","FAQ_15_P2":"Se sei curioso di vedere una versione Alpha, puoi vederla qui: ${1}alpha4.strem.io${2}. Ricordati che lo streaming è disabilitato su questa versione. Suportiamo Chrome, Firefox, Opera e Edge.","FAQ_16_H1":"La trasmissione su TV non funziona / i sottotitoli non funzionano","FAQ_16_P1":"La trasmissione su TV usa la tecnologia DLNA che è molto inconsistente tra i diversi marchi e modelli di TV. Per questo motivo, non possiamo testare ogni caso, quindi è lontana dalla perfezione. Nonostante ciò, stiamo lavorando per migliorarla costantemente ma non possiamo darti una stima di quando DLNA inizierà a funzionare correttamente con la tua TV.","FAQ_16_P2":"Se non vedi nemmeno la tua TV nel menu della Trasmissione, prova a disattivare la connessione di rete e riattivarla (su Windows, click destro su Rete e usa Abilita/Disabilita), oltre a riavviare il router, la TV e il PC.","FAQ_16_P3":"Se stai riscontrando ancora problemi, puoi aiutarci inviandoci le informazioni sulla marca e sul modello del televisore all\'indirizzo ${1}office@stremio.com${2}.","FAQ_16_P4":"Nel frattempo, ti consigliamo Chromecast, che supportiamo molto bene, o semplicemente collegando la TV al PC con un cavo HDMI.","FAQ_17_H1":"Stremio si blocca e/o crasha, cosa posso fare?","FAQ_17_P1":"Prima di tutto, se utilizzi Windows 7 con l\'antivirus AVG: abbiamo un problema con quella combinazione. Il problema è in AVG stesso e non esiste un modo ragionevole per risolverlo da parte nostra. Sfortunatamente, le eccezioni o la disattivazione dell\'antivirus non funzioneranno. L\'unica soluzione è sostituire AVG con qualcos\'altro.","FAQ_17_P2":"Se non è questo il problema, ma stai ancora utilizzando Windows, esegui l\'aggiornamento all\'ultimo service pack e aggiorna/reinstalla i driver della GPU, quindi riprova.","FAQ_17_P3":"Se il tuo problema non è ancora risolto, o stai usando un Mac o Linux, scrivici segnalando i dettagli esatti del problema sul ${1}nostro gruppo Facebook${2}.","FAQ_18_H1":"Come posso creare il mio addon?","FAQ_18_P1":"Per i principianti, suggeriamo di controllare su GitHub il nostro ${1}modulo di sistemi di addon${2}.","FAQ_18_P2":"Dopo, potete seguire la guida ${1}Hello World${2}.","FAQ_18_P3":"Se non hai idea di come programmare, condividi la tua idea sulla ${1}comunità Reddit${2} e contattaci a ${3}office@stremio.com${4} con la tua idea di addon.","FAQ_19_H1":"Perchè Stremio occupa spazio sul disco?","FAQ_19_P1":"Stremio ha una cache locale per conservare temporaneamente i file video della tua riproduzione.","FAQ_19_P2":"Questo ha due benefici: primo, permette a Stremio di anticipare il caricamento del video in modo da garantire una riproduzione più fluida. Secondo, mantiene i video nella cache locale in modo da poter continuare a guardarli offline.","FAQ_19_P3":"Quanta memoria prende Stremio dipende dalle impostazioni di Cache impostate nel pannello Impostazioni. Stremio può mantenere la quantità impostata (ad es. 2 GB) sul tuo disco, a meno che il video attualmente in streaming non sia più grande, in qual caso deve allocare spazio di archiviazione sufficiente per conservarlo fino a quando non lo riproduci in streaming.","FAQ_20_H1":"Dov\'è la cartella di cache?","FAQ_20_P1":"Su Windows, è stremio-cache nell\'unità che hai scelto in Impostazioni (es. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"Su MacOS, è \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"Su Linux, è \\"~/.stremio/stremio-cache\\" oppure \\"~/stremio-cache\\"","FAQ_21_H1":"Ricevo l\'errore \\"Server di riproduzione non trovato\\", cosa posso fare?","FAQ_21_P1":"Se ricevi questo errore, significa una delle poche cose:","FAQ_21_P2":"1) Stai tentando di utilizzare un addon supportato dalla sorgente YouTube/BitTorrent, dalla nostra ${1}versione web${2}. In questo caso, devi installare la nostra versione desktop dal ${3}nostro sito web${4}.","FAQ_21_P3":"2) C\'è qualcosa che non va con l\'installazione di Stremio. In questo caso, prova a reinstallare la nostra ultima versione desktop dal ${1}sito web${2}. Se non aiuta, prova a disabilitare l\'antivirus e firewall, riavviando il tuo PC e provando di nuovo. Se anche questo non aiuta, scrivici sul ${3}nostro gruppo Facebook${4}.","FAQ_22_H1":"Non posso vedere/usare parecchi addon su iOS","FAQ_22_P1":"A causa delle restrizioni nei termini e condizioni dell\'Apple App Store, abbiamo delle restrizioni sull\'applicazione per iOS solo per un particolare gruppo di addon.","FAQ_22_P2":"Ma stai tranquillo - ci saranno molti altri addon per iOS in futuro, e potremmo anche aggiungere un\'integrazione che ti consentirà di utilizzare tutti gli addon di Stremio grazie alla connessione dell\'app iOS allo Stremio Streaming Server."}')},9163:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Филм","TYPE_series":"Серија","TYPE_tv":"TV канал","TYPE_channel":"YouTube канал","TYPE_other":"Other","TYPE_movie_PL":"Филмови","TYPE_series_PL":"Серии","TYPE_tv_PL":"TV канали","TYPE_channel_PL":"YouTube канали","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Назад","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Најди","Board":"Известија","Library":"Библиотека","My Library":"My Library","Calendar":"Календар","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"бараj","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Додај","REMOVE_FROM_LIB":"Отстрани","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Треjлер","WATCH_TRAILER":"Треjлер","WATCH_NOW":"Гледај","SHOW":"Покажи","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb рејтинг","YEAR":"Година","DIRECTOR":"Режија","WRITER":"Автор","LEAD_ACTORS":"Во Главните улоги","CAST":"Глумат","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"емитувано","SEASONS":"Сезони","GENRE":"Жанр","CATALOG":"Catalog","SUMMARY":"Опис","SHOW_MORE":"Show More","SIMILAR":"Слични","UPCOMING":"Скоро","ENDED":"Прекинат","DURATION":"Времетраење","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"search videos","SEARCH_PLACEHOLDER":"search or paste magnet link","ADDON":"addon","ADDONS":"Addons","OFFICIAL":"официјални","ADDONS_OFFICIAL":"Официјални addon-и","ADDONS_POPULAR":"Популарни во регионот","ADDON_FREE":"бесплатно","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"subscription","ADDON_STREAM_GEORESTRICTED":"not available in your area","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Достапни извори","NO_STREAM":"Нема достапни извори","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Show all addons »","ADDON_CATALOGUE_MORE":"More addons »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Protected addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Филмот е сеуште во кината","WATCH_IN_CINEMA":"Watch it in your local cinema","IN_THEATER":"In cinema","GET_TICKETS":"Get tickets","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Сеуште немаме информации за овој канал.
    Вратете се по неколку минути.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Додадете го во библиотеката за да примите известување.","GET_NOTIFIED_WHEN_AVAILABLE":"Ќе примите известување кога ќе излезе.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Стриминг од","CASTING_TO":"Репродукција на","NETWORK_STATUS":"Мрежа","STREAM_SPEED":"Брзина:","STREAM_BUFFERED":"Буфер:","PEERS_INFO":"Корисници","PEERS_ACTIVE":"Активни:","PEERS_CONNECTED":"Поврзани:","PEERS_WAITING":"Чекаат:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"Се вчитува...","PLAYING_LOCAL":"репродукција од локална датотека","PLAYING_CACHE":"репродукција од кеш","WRONG_SUBS":"Грешни преводи?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Изберете уред","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Телефон / таблет","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Смени превод на","SUBTITLES_CHANGE_NONE":"Нема други преводи за тој јазик.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alteratively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use G / H keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use G / H keys while playing to adjust.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Сезона","EPISODE":"Епизода","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"популарни","SORT_RECENT":"последни","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"рејтинг","SORT_WATCHED":"видени","SORT_YEAR":"година","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"resume","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Топ","DISCOVER_OSCAR":"Добитници на Оскар","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Внимание: нема активен Stremio addon за овој тип содржина. Овде гледате зачувана информациjа, таа нема да се обновува.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Лансирање новата верзија!","UPGRADE":"Достапна е нова верзија","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Влегување со Фејсбук","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"или","I_ACCEPT":"Ги прочитав и ги прифаќам","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Општите услови","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Лозинките се разминуваат","SIGN_UP":"Регистрирај се","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Влез","LOG_OUT":"Излез","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Влегување како гостин","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"кликнете овде","WRONG_PASSWORD":"погрешна лозинка. Во случај дека сте ја заборавиле","SET_A_PASS":"ставете ваша лозинка","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"Овој email е употребен со Фејсбук најава.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Употребата на addon-и од трети лица е на ваша одговорност.","ADDON_ACTIVATE":"Активирај овој addon?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Што е ново?","BUTTON_CONTINUE":"Продолжи","BUTTON_ACTIVATE":"Активирај","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Откажи","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Библиотеката ви е празна. Откријте колку е корисна :)","HOW_START":"Започнете така:","LIB_EMPTY_CAL":"Календарот покажува епизоди од сериите во вашата Библиотека.","HOW_START_CAL":"Еве како да додадете серии:","LIB_EMPTY_BOARD":"Тука ќе видите известувања и препораки свързани со вашата Библиотеката.","HOW_START_BOARD_WAIT":"Ве молиме додадете неколку канали / серии и ни даjте неколку минути да собереме известувања :)","HOW_START_BOARD":"Еве како да додадете филмови и серии во библиотеката:","IMPORT_FB":"Додавање од Facebook ","IMPORT_TRAKT":"Import your media library from Trakt","IMPORT_DISCOVER":"Најди интересни работи во Discover ","IMPORT_DISK":"Скенирајте за филмови и серии од вашиот локален диск ","PLEASE_CREATE_ACC":"Please create an account to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from Discover","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your local disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Промена на лозинка","SETTINGS_TOS":"Услови на употреба","SETTINGS_SUPPORT":"Поддршка","SETTING_LANGUAGE":"Јазик","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Стоп","CONNECTED":"Connected","AUTHENTICATE":"овластување","CACHING":"Кешира","SETTINGS_CACHING_DRIVE":"Изберете диск за кеш","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Jануари","February":"Февруари","March":"Март","April":"Април","May":"Мај","June":"Јуни","July":"Јули","August":"Август","September":"Септември","October":"Октомври","November":"Ноември","December":"Декември","Monday":"Понеделник","Tuesday":"Вторник","Wednesday":"Среда","Thursday":"Четврток","Friday":"Петок","Saturday":"Сабота","Sunday":"Недела","Action":"Акција","Comedy":"Комедија","War":"Воени","Family":"Семејни","Animation":"Анимација","Adventure":"Авантура","Fantasy":"Fantasy","Crime":"Crime","Mystery":"Mystery","Romance":"Romance","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Music","Biography":"Biography","Documentary":"Documentary","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years, with a single goal - to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - support us!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"provides","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},6735:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Wayang","TYPE_series":"Siri","TYPE_tv":"Saluran TV","TYPE_channel":"Saluran","TYPE_other":"Other","TYPE_movie_PL":"Wayang","TYPE_series_PL":"Siri","TYPE_tv_PL":"Saluran TV","TYPE_channel_PL":"Saluran","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Kembali","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Teroka","Board":"Papan","Library":"Pustaka","My Library":"My Library","Calendar":"Takwim","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"cari","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Tambah dalam Pustaka","REMOVE_FROM_LIB":"Keluarkan dari Pustaka","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Trailer","WATCH_TRAILER":"Watch Trailer","WATCH_NOW":"Tonton Sekarang","SHOW":"Tayang","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb","YEAR":"Tahun","DIRECTOR":"Pengarah","WRITER":"Penulis","LEAD_ACTORS":"Teraju Utama","CAST":"Pelakon","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Ke Udara","SEASONS":"Musim","GENRE":"Genre","CATALOG":"Catalog","SUMMARY":"Ringkasan","SHOW_MORE":"Show More","SIMILAR":"Yang Serupa","UPCOMING":"Akan Datang","ENDED":"Tamat","DURATION":"Tempoh","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"cari video","SEARCH_PLACEHOLDER":"search or paste magnet link","ADDON":"addon","ADDONS":"Addons","OFFICIAL":"rasmi","ADDONS_OFFICIAL":"Addons Stremio Rasmi","ADDONS_POPULAR":"Mahsyur di kawasan anda","ADDON_FREE":"Percuma","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"langganan","ADDON_STREAM_GEORESTRICTED":"tiada dalam kawasan anda","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Streams yang sedia ada","NO_STREAM":"Tiada streams buat masa ini","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Tunjukkan semua addons »","ADDON_CATALOGUE_MORE":"More addons »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Protected addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Tayangan masih dalam teater","WATCH_IN_CINEMA":"Tonton di wayang berdekatan anda","IN_THEATER":"Dalam tayangan","GET_TICKETS":"Dapatkan Tiket","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.
    Please come back in a few minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Add it to your library to get notified once it is available.","GET_NOTIFIED_WHEN_AVAILABLE":"You will get notified once it is available.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Alamak, ralat pemain","PLAYER_ERROR_LOOKSLIKE":"Nampaknya seperti","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streaming dari","CASTING_TO":"Tayangkan ke","NETWORK_STATUS":"Status capaian","STREAM_SPEED":"Kelajuan stream:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"Maklumat peers","PEERS_ACTIVE":"Aktif:","PEERS_CONNECTED":"Sambungan:","PEERS_WAITING":"Menunggu:","TRANSCODING_WARNING":"Amaran: video transkoding.","STREAM_LOADING":"Memuatkan...","PLAYING_LOCAL":"main dari fail tempatan","PLAYING_CACHE":"playing from cache","WRONG_SUBS":"Wrong subtitles?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Pilih peranti untuk tayang","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Bimbit / Tablet","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Tukar sari kata untuk ","SUBTITLES_CHANGE_NONE":"There are no other subtitles for this language, sorry.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternatively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use G / H keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use G / H keys while playing to adjust.","SUBTITLES_DELAY":"Sari kata lewat:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Musim","EPISODE":"Episod","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"baru","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rating","SORT_WATCHED":"ditonton","SORT_YEAR":"year","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"sambung","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Mahsyur","DISCOVER_OSCAR":"Pemenang Oscar","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Warning: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Re-launch now!","UPGRADE":"New version is available! Upgrade to the latest Stremio version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Masuk guna Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"atau","I_ACCEPT":"Saya akur","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Terma dan Syarat","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Kata laluan tak sama","SIGN_UP":"Daftar","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Masuk","LOG_OUT":"Keluar","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Guest login","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"click here","WRONG_PASSWORD":"Katalaluan salah. Sekiranya terlupa, ","SET_A_PASS":"tetapkan satu kata laluan","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"Emel ini telah diguna This email was used with a Facebook login.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Aktifkan tambahan ini?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Apa yang terbaru","BUTTON_CONTINUE":"Teruskan","BUTTON_ACTIVATE":"Aktifkan","BUTTON_ACTIVATED":"Aktif","BUTTON_CANCEL":"Batal","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Cara bagaimana untuk mula:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from Facebook","IMPORT_TRAKT":"Import your media library from Trakt","IMPORT_DISCOVER":"Find interesting stuff from Discover","IMPORT_DISK":"Import movies or shows you have on your local disk","PLEASE_CREATE_ACC":"Please create an account to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from Discover","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your local disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Lancarkan bila mula","SETTINGS_VLC_DEFAULT":"Main guna VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Terus main episod seterusnya","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import dari Facebook","SETTINGS_IMPORT_DISK":"Import dari local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Masukkan ke kalendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Tukar katalaluan","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Contact support","SETTING_LANGUAGE":"Bahasa","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Keluar","CONNECTED":"Connected","AUTHENTICATE":"Pengesahan","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Select caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januari","February":"Februari","March":"Mac","April":"April","May":"Mei","June":"Jun","July":"Julai","August":"Ogos","September":"September","October":"Oktober","November":"November","December":"Disember","Monday":"Isnin","Tuesday":"Selasa","Wednesday":"Rabu","Thursday":"Khamis","Friday":"Jumaat","Saturday":"Sabtu","Sunday":"Ahad","Action":"Aksi","Comedy":"Komedi","War":"Perang","Family":"Kekeluargaan","Animation":"Animasi","Adventure":"Pengembaraan","Fantasy":"Khayalan","Crime":"Jenayah","Mystery":"Misteri","Romance":"Percintaan","Drama":"Drama","Horror":"Seram","Thriller":"Seram Sejuk","Sci-Fi":"Sains","Music":"Musik","Biography":"Biografi","Documentary":"Dokumentari","Sport":"Sukan","Musical":"Muzikal","Western":"Barat","Film-Noir":"Film-Noir","News":"Berita","History":"Sejarah","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Permainan","From TV":"Dari TV","Lifestyle":"Gaya Hidup","Science & Education":"Sains & Pendidikan","Cooking & Health":"Masakan & Kesihatan","Beauty & Fashion":"Kecantikan & Fesyen","Sports":"Olah raga","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Radio Akhbar Perniagaan","Business Tv":"Tv Niaga","Cars & Auto":"Kereta & Kenderaan","Comedy Radio":"Radio Jenaka","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Jasmani & Jiwa","Education":"Pendidikan","Indian Tv":"Tv India","Extreme Sports":"Sukan Lasak","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Tv Selebriti","Science Tv":"Tv Sains","Bikini babe":"Awek Bikini","Outdoors":"Outdoors","German Tv":"TV German","French Tv":"TV Perancis","Italian Tv":"Tv Itali","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"Radio Akhbar","Music Radio":"Radio Muzik","Language Learning":"Belajar Bahasa","Science Radio":"Radio Sains","Tech Radio":"Radio Tek","Science & Technology Vod":"Vod Sains & Teknologi","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"berita","music video":"video muzik","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Tayang","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Skrin Penuh","CTX_WRONG_SUBS":"Sari kata salah?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Salin","CTX_PASTE":"Paste","CTX_CLEAR":"Padam","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Damai Sana","HOPE_YOU_ENJOY":"Kami harap anda terhibur dengan Stremio dan menjadi salah satu apps kegemaran anda","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Muat Turun Sekarang","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Teknologi","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Saluran","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Rancangan TV yang disarankan","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"Video Baharu","WEBSITE_BOARD_EPISODE":"Episod Baharu","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},3778:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serie","TYPE_tv":"TV kanal","TYPE_channel":"Kanal","TYPE_other":"Other","TYPE_movie_PL":"Filmer","TYPE_series_PL":"Serier","TYPE_tv_PL":"TV kanaler","TYPE_channel_PL":"Kanaler","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Tilbake","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Oppdag","Board":"Board","Library":"Bibliotek","My Library":"My Library","Calendar":"Kalender","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"Søk blant","SEARCH_NO_RESULTS":"Ingen resultater","SEARCH_EXPLANATION_CONTENT":"Søk etter filmer, serier, YouTubevideoer and TV-kanaler","SEARCH_EXPLANATION_PEOPLE":"Søk etter skuespillere, regissører and manusforfattere","SEARCH_PASTE_LINKS":"Lim inn HTTP og magnetlinker","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Legg til i bibliotek","REMOVE_FROM_LIB":"Fjern fra bibliotek","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Trailer","WATCH_TRAILER":"Se Trailer","WATCH_NOW":"Se Nå","SHOW":"Vis","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Se tilfeldig","IMDB_RATING":"IMDb Rangering","YEAR":"År","DIRECTOR":"Regissør","WRITER":"Forfatter","LEAD_ACTORS":"Hovedskuespillere","CAST":"Skuespillere","CREW":"Crew","SHOW_MORE_CAST":"Vis mer »","AIRED":"Utgitt","SEASONS":"Sesonger","GENRE":"Sjanger","CATALOG":"Catalog","SUMMARY":"Sammendrag","SHOW_MORE":"Show More","SIMILAR":"Lignende","UPCOMING":"Kommer","ENDED":"Endte","DURATION":"Lengde","FEATURED":"Utvalgt","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"søk i videoer","SEARCH_PLACEHOLDER":"search or paste magnet link","ADDON":"Utvidelse","ADDONS":"Utvidelser","OFFICIAL":"Offisielle","ADDONS_OFFICIAL":"Offisielle Stremio Utvidelser","ADDONS_POPULAR":"Populært i ditt område","ADDON_FREE":"Gratis","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Abonnering","ADDON_STREAM_GEORESTRICTED":"ikke tilgjengelig i ditt område","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Lokal fil","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Tilgjengelige Strømmninger","NO_STREAM":"Ingen strømmninger tilgjengelige","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Vis alle utvidelser »","ADDON_CATALOGUE_MORE":"Fler utvidelser »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Protected addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Filmen er fortsatt på kino","WATCH_IN_CINEMA":"se den på din lokale kino","IN_THEATER":"På Kino","GET_TICKETS":"Få Biletter","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Denne kanalen er ikke ferdig enda.
    Vennligst kom tilbake om noen få minutter.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Legg den til i ditt bibliotek for å bli varslet når den blir tilgjengelig.","GET_NOTIFIED_WHEN_AVAILABLE":"Du vil bli varslet med en gang den er tilgjengelig.","WARNING_STREAMING_SERVER":"Advarsel: lokal strømmeserver ble ikke funnet. Det vil ikke være tilgjengelig å strømme fra YouTube og BitTorrent.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, spiller feil","PLAYER_ERROR_LOOKSLIKE":"Det ser ut som","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Strømmer fra","CASTING_TO":"Caster til","NETWORK_STATUS":"Nettverksstatus","STREAM_SPEED":"Fart på strømmen:","STREAM_BUFFERED":"Buffret:","PEERS_INFO":"Informasjon om peers","PEERS_ACTIVE":"Aktive:","PEERS_CONNECTED":"Tilkoblede:","PEERS_WAITING":"Venter:","TRANSCODING_WARNING":"Advarsel: transkoder videoen.","STREAM_LOADING":"Laster...","PLAYING_LOCAL":"Spiller fra lokal fil","PLAYING_CACHE":"Spiller fra cache","WRONG_SUBS":"Feil undertekster?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Velg en enhet å strømme fra","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Telefon / Nettbrett","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Endre undertekster for ","SUBTITLES_CHANGE_NONE":"Det er ingen andre undertekster for dette språket, beklager.","SUBTITLES_CHANGE_ACIVE":"Undertekst #{{subtitlesDialog.activeIdx + 1}} er aktivert. Klikk \\"Fortsett\\" for å aktivere undertekster #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativt,","SUBTITLES_ADJUST_DELAY":"Still inn undertekstsforsinkelse:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Eller bruk G / H tastene når du ser for å justere.","SUBTITLES_ADJUST_DELAY_TIP":"TIPS: du kan bruke G / H tastene når du ser for å justere.","SUBTITLES_DELAY":"Undertekstsforsinkelse:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sesong","EPISODE":"Episode","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trender","SORT_RECENT":"nylig","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rangering","SORT_WATCHED":"sett","SORT_YEAR":"år","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"gjenoppta","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"avvis","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Utvalgt","DISCOVER_TOP":"Topp","DISCOVER_OSCAR":"Oscar vinnere","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Advarsel: ingen Stremio utvidelse aktiv for denne typen. Viser lagrede elementer, ingenting vil oppdatere.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Start på nytt nå!","UPGRADE":"Oppdater til den nyeste Stremio versjonen","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Har du ikke en bruker?","HAVE_ACC":"Already have an account?","PASSWORD":"Passord","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-post","FB_LOGIN":"Logg inn med Facebook","FB_NOTHINGSHARED":"Ingenting vil bli delt uten din tillatelse :)","FB_NOPOST":"We won’t post anything on your behalf","OR":"eller","I_ACCEPT":"Jeg godtar ","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Vilkårene og betingelsene","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Passordene er ikke like","SIGN_UP":"Registrer","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Logg inn","LOG_OUT":"Logg ut","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Logg inn som gjest","GUEST_LOGIN_NOTICE":"Gjesteinnlogging er ikke anbefalt. Å bruke en vanlig inlogging gjør det lettere for Stremio å synkronisere biblioteket ditt og å motta varsler for dine favoritt serier/kanaler. Er su sikker på at du vil fortsette?","GUEST_LOGIN_NOTICE_2":"Gjesteinnlogging er ikke anbefalt - du vil ikke ha tilgang til et synkronisert bibliotek eller board, som er which are viktige Stremio funksjoner. ER du sikker på at du vil fortsette?","CLICK_HERE":"Klikk her","WRONG_PASSWORD":"Feil passord. I tilfelle du har glemt passordet, ","SET_A_PASS":"lag et passord","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Glemt passord?","EMAIL_USED_WITH_FB":"Denne eposten er i bruk av en Facebook innlogging.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Tilkoblingsfeil - venligst prøv igjen senere.\\n\\nHvis feilen fortsetter, deaktiver brannmuren/anti-virus program (spesielt Bitdefender).","IMPORT_FROM_GUEST":"Importer bibliotek fra en gjestebruker","RECEIVE_UPDATES_EMAIL":"Motta oppdateringer fra Stremio på epost","LOGIN_FAILED":"Innlogging feilet.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Bruk av tredjeparts-utvidelser vil alltid være ditt ansvar med hennsyn til den gjeldene loven der du befinner deg.","ADDON_ACTIVATE":"Aktivere denne utvidelsen?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Hva er nytt?","BUTTON_CONTINUE":"Fortsett","BUTTON_ACTIVATE":"Aktiver","BUTTON_ACTIVATED":"Aktivert","BUTTON_CANCEL":"Avbryt","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Biblioteket ditt ser tomt ut. Finn ut hvor nyttig det er :) ","HOW_START":"Kom i gang:","LIB_EMPTY_CAL":"Kalenderen din viser serier i biblioteket ditt.","HOW_START_CAL":"Her er hvordan du kan legge til serier:","LIB_EMPTY_BOARD":"Board viser varsler & anbefalinger relatert til biblioteket ditt.","HOW_START_BOARD_WAIT":"Legg til noen serier eller kanaler i biblioteket ditt og gi oss noen minutter til å behandle de :)","HOW_START_BOARD":"Her er hvordan du kan legge til serier & filmer til det:","IMPORT_FB":"Importer ting du liker fra Facebook","IMPORT_TRAKT":"Importer mediebiblioteket ditt fra Trakt","IMPORT_DISCOVER":"Finn interessante ting fra Oppdag","IMPORT_DISK":"Importer filmer eller serier fra din lokale Harddisk","PLEASE_CREATE_ACC":"Venligst opprett en bruker for å aktivere biblioteksynkronisering & Board.","IMPORT_DISCOVER_SIGNUP":"Registrer deg og finn interessante ting i Discover","IMPORT_DISK_SIGNUP":"Registrer deg for å importere filmer eller serier du har på din lokale disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Kjør ved oppstart","SETTINGS_VLC_DEFAULT":"Spill med VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Spill av neste episode automatisk","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Endre vindusstørrelse automatisk før avspilling","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Bruk alltid den nyeste betaversjonen","SETTINGS_IMPORT_FB":"Importer fra Facebook","SETTINGS_IMPORT_DISK":"Importer fra lokal disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Abonner på en kalender","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Endre passord","SETTINGS_TOS":"Vilkår for tjenesten","SETTINGS_SUPPORT":"Kontakt support","SETTING_LANGUAGE":"Språk","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Logg ut av Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR koden for å åpne eksternt","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Avslutt","CONNECTED":"Connected","AUTHENTICATE":"Verifiser","CACHING":"Bufrer","SETTINGS_CACHING_DRIVE":"Velg bufrings enhet","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januar","February":"Februar","March":"Mars","April":"April","May":"Mai","June":"Juni","July":"Juli","August":"August","September":"September","October":"Oktober","November":"November","December":"Desember","Monday":"Mandag","Tuesday":"Tirsdag","Wednesday":"Onsdag","Thursday":"Torsdag","Friday":"Fredag","Saturday":"Lørdag","Sunday":"Søndag","Action":"Action","Comedy":"Komedie","War":"Krig","Family":"Familie","Animation":"Animasjon","Adventure":"Eventyr","Fantasy":"Fantasy","Crime":"Krim","Mystery":"Mysterier","Romance":"Romantikk","Drama":"Drama","Horror":"Grøsser","Thriller":"Spenning","Sci-Fi":"Sci-Fi","Music":"Musikk","Biography":"Biografi","Documentary":"Dokumentar","Sport":"Sport","Musical":"Musikal","Western":"Western","Film-Noir":"Film-Noir","News":"Nyheter","History":"Historie","Game-Show":"Gameshow","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Underholdning","Gaming":"Gaming","From TV":"Fra TV","Lifestyle":"Livsstil","Science & Education":"Vitenskap & Utdanning","Cooking & Health":"Matlaging & Helse","Beauty & Fashion":"Skjønnhet & Mote","Sports":"Sport","News & Politics":"Nyheter & Politikk","How-to & DIY":"Gjør det selv","Tech":"Teknologi","Automotive":"Bilbransjen","Causes & Non-Profits":"Saker & ideelle organisasjoner","Movies":"Filmer","Uk Live Tv":"UK Direkte TV","Fashion":"Mote","Business News Radio":"Business Nyhetsradio","Business Tv":"Business TV","Cars & Auto":"Biler og Auto","Comedy Radio":"Komedieradio","Lifestyle Radio":"Livsstilsradio","News Tv":"Nyhets TV","Food And Wine":"Mat og Vin","Latino Tv":"Latino TV","Shopping Tv":"Shopping TV","Religion":"Religion","Kids":"Barn","Body & Soul":"Kropp og Sjel","Education":"Utdanning","Indian Tv":"Indisk TV","Extreme Sports":"Ekstremsport","Middle Eastern Tv":"TV fra Midtøsten","Celebrity Tv":"Kjendis TV","Science Tv":"Vitenskaps TV","Bikini babe":"Bikini babe","Outdoors":"Utendørs","German Tv":"Tysk TV","French Tv":"Fransk TV","Italian Tv":"Italiensk TV","Gamer Tv":"Spill TV","Travel":"ReiseTV","Asian Tv":"Asiatisk TV","Entertainment":"Underholdning","News Radio":"Nyhetsradio","Music Radio":"Musikkradio","Language Learning":"Språklæring","Science Radio":"Vitenskapsradio","Tech Radio":"Teknologiradio","Science & Technology Vod":"Vitenskap -og Teknologi VOD","new video":"ny video","new episode":"ny episode","new movie":"ny film","recommended":"anbefalt","we recommend":"vi anbefaler","offer of the day":"dagstilbud","news":"nyheter","music video":"musikkvideo","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Forkast varsler","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Del","CTX_COPY_SHARE_LINK":"Kopier link for deling","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Vis","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Se på","CTX_WATCH":"Se","CTX_WATCHED":"Sett","CTX_WATCH_BEGINNING":"Se fra starten","CTX_WATCH_MOBILE":"Se på en mobil enhet","CTX_REWIND":"Spol til start","CTX_MARK_WATCHED":"Merk som sett","CTX_MARK_NON_WATCHED":"Merk som ikke sett","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Få nye varsler","CTX_REMOVE_CACHE":"Fjern fra bruffren","CTX_REMOVE_CACHE_EP":"Fjern episode fra buffren","CTX_OPEN_CONTAINING":"Åpne mappen som inneholder filen","CTX_REMOVE":"Fjern fra bilbiotek","CTX_AVAILABLE_OFFLINE":"Tilgjengelig Offline","CTX_PAUSED":"Pauset","CTX_ALWAYS_ON_TOP":"Alltid på toppen","CTX_FULLSCREEN":"Fullskjem","CTX_WRONG_SUBS":"Feil undertekster?","CTX_REPORT_ISSUES":"Rapporter en feil","CTX_COPY":"Kopier","CTX_PASTE":"Lim inn","CTX_CLEAR":"Tøm","CTX_CLEAR_RECENT_SEARCHES":"Tøm nylige søk","HELLO_THERE":"Hei!","HOPE_YOU_ENJOY":"Vi håper du liker Stremio og at det er en av dine favoritt apper allerede!","WHO_ARE_WE":"Hvem er vi? Vi er teamet bak appen - to gutter som har jobbet hardt med appen hver dag i de siste 3 årene, med kun ett mål - å gjøre dette produkte bedre og bedre.","SUPPORT_US":"Hvis du liker Stremio, hvis Stremio er verdifull for deg - støtt oss!","SPREAD_THE_WORD":"Del med vennene dine og spred ordet om Stremio","MORE_PEOPLE":"Jo fler som bruker Stremio, jo bedre blir det!","SEND_A_LINK":"Eller send en link til websiden vår","TIP_LOCALFILES":"Tips: du kan dra og slippe lokale videoer inn i Stremio","ADDON_MY":"Mine utvidelser","ADDON_COMMUNITY":"Samfunnets utvidelser","ADDON_OFFICIAL":"Offisielle utvidelser","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Søk etter utvidelser","ADDON_INSTALL":"Installer","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Avinstaller","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installert","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Side for utvidelser","ADDON_TOP_CONTENT":"Det beste fra denne utvidelsen","ADDON_PROVIDES":"git","ADDON_WATCH":"Se #{types} nå!","ADDON_WATCH_FREE":"Se #{types} GRATIS nå!","ADDON_ADDON":"Utvidelse","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"Mer #{types} i oppdag","ADDON_PROVIDES_STREAMS":"Se #{types}","ADDON_PROVIDES_STREAMS_FREE":"Se #{types} GRATIS","ADDON_PROVIDES_SUBTITLES":"Undertekster for #{types}","ADDON_CANTDETECT":"Vi kunne ikke oppdage en kjørende Stremio, så vi kunne ikke oppdage hvilke utvidelser du har installert.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Fortsett å se","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmer valgt spesielt for degg.
    Denne filmen er en eksempel rekommandasjon","BOARD_EXPLANATION_EPISODES":"Nye episoder av favorittseriene dine kommer her.
    Legg til serier du følger med på i biblioteket ditt.","BOARD_EXPLANATION_VIDEOS":"Nye episoder av dine favorittkanaler kommer her.
    Legg til YouTubekanaler du følger med på i biblioteket ditt.","WEBSITE_SLOGAN_WATCH":"Se med en gang","WEBSITE_SLOGAN_ALL":"Alt videoinnholdet du liker på ett sted","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Last ned nå","WEBSITE_DOWNLOAD_FOR":"Last Ned For","WEBSITE_IS_DESKTOP":"Stremio er et skrivebordsprogram, åpne denne siden på PCen din og last ned nå!","WEBSITE_DESKTOP_DEMO_VID":"Skriveborddemo","WEBSITE_PAGE_HOME":"Hjem","WEBSITE_PAGE_FEATURES":"Funkjsoner","WEBSITE_PAGE_ADDONS":"Utvidelser","WEBSITE_PAGE_TECH":"Teknologi","WEBSITE_PAGE_CREATE_ADDON":"Lag utvidelse","WEBSITE_PAGE_CONTACTS":"Kontakter","WEBSITE_PAGE_BLOG":"Blogg","WEBSITE_TYPE_movie":"Filmer","WEBSITE_TYPE_series_PL":"Serier","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Kanaler","WEBSITE_STREMIO_WHAT_IS":"Stremio er en app som hjelper deg å organisere og umiddelbart se dine favoritt videoer, filmer, TV-serier og TV-kanaler.","WEBSITE_FEATURES_WATCH":"Se øyeblikkelig i HD","WEBSITE_FEATURES_WATCH_DETAIL":"Klikk og spill dine favoritt filmer, TV-programmer, videoer og TV-kanaler.","WEBSITE_FEATURES_SUBS":"Automatiske undertekster","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio velger automatisk synkroniserte undertekster for språket ditt.","WEBSITE_FEATURES_SUBS_LABEL":"Din tur, sjef.","WEBSITE_FEATURES_CAST":"Spill på TV og mobile enheter","WEBSITE_FEATURES_CAST_DETAIL":"Cast til AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile enheter.","WEBSITE_LIB":"Nyt ditt personlige bibliotek synkronisert på alle enhetene dine","WEBSITE_LIB_COLLECT":"Samle fra Stremio","WEBSITE_LIB_IMPORT":"Importer fra Facebook","WEBSITE_LIB_LOCAL":"Legg til fra din lokale harddisk","WEBSITE_BOARD":"Board - Ditt one-stop sted for varsler og anbefalinger","WEBSITE_BOARD_RECOMMEND":"Anbefalt TV Show","WEBSITE_BOARD_TRENDING":"Populær film","WEBSITE_BOARD_NEW":"Ny video","WEBSITE_BOARD_EPISODE":"Ny episode","WEBSITE_BOARD_1":"Leter du etter noe interessant å se på? Få anbefalinger basert på din smak!","WEBSITE_BOARD_2":"Bli varslet når en ny episode av ditt favoritt TV-program eller YouTube-kanal er ute!","WEBSITE_BOARD_YOUTUBE":"Nye episoder av YouTubekanaler","WEBSITE_BOARD_EPISODES":"Nye episoder av serier di følger.","WEBSITE_ADDONS":"Innholdsudvidelser","WEBSITE_TECH_DETAIL":"Vi elsker teknologi, vi elsker gal vitenskap!\\nStremio bruker følgende åpen kildekode-teknologier:","WEBSITE_TECH_WCJS":"WebChimera.js tillater Stremio å spille alle videoformater med god ytelse.","WEBSITE_TECH_WCJS_EXTRA":"Vi er kjerneprodukt bidragsytere","WEBSITE_TECH_ELECTRON":"Electron gir en innovativ plattform å bygge Stremio med.","WEBSITE_TECH_ELECTRON_EXTRA":"Vi er prosjekt bidragsytere","WEBSITE_TECH_LINVODB":"En databaseteknologi som sikrer dataene er organisert og tilgjengelig hvor som helst du har logger inn.","WEBSITE_TECH_LINVODB_EXTRA":"In-house teknologi","WEBSITE_CREATE_ADDON":"Lag din utvidelse","WEBSITE_CREATE_ADDON_DETAIL":"Har du en tjeneste som gir videoinnhold? Vi hjelper deg å dra nytte av Stremio funksjoner ved å lage utbidelsen din","WEBSITE_CREATE_ADDON_BENEFITS":"Fordeler med å lage en utvidelse for Stremio","WEBSITE_P2P_BEAUTY":"Skjønnheten av Peer-To-Peer strømming","WEBSITE_P2P_1":"Pålitelig og rimelig full HD / 4K video on demand eller direktestrømming","WEBSITE_P2P_2":"Distribusjonsplattform som gir god brukeropplevelse","WEBSITE_P2P_3":"Vi vil lage en utvidelse tilfredstiller dine behov","WEBSITE_P2P_CONTACT":"Interessert? Du er velkommen til å kontakte oss.","WEBSITE_P2P_CONTACT_EXTRA":"Vi vil gjerne hjelpe deg med å integrere innholdet ditt med Stremio!","WEBSITE_P2P":"En gang i blant, kommer det en teknologi som endrer spillereglene. Vi har investert tonnevis med tid og krefter på å bygge vår Peer-to-Peer (P2P) video streaming motor som gir god ytelse og allsidighet til å tilpasse enhver bruk.\\nKontakt oss for DRM-aktivert P2P video on demand eller live streaming.","WEBSITE_THOUGHTS":"Tanker vi deler:","WEBSITE_SPREAD":"Spre ordet om Stremio:","WEBSITE_CONTACT":"Hvis du ønsker å kontakte oss, kjør på","WEBSITE_OPENSOURCE":"For våre åpene kildekode-prosjekter, gå til vår","WEBSITE_BITCOIN":"Doner med bitcoin:","WEBSITE_FAQ":"Ofte stilte spørsmål","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Vilkår for bruk","WEBSITE_LEGAL":"Juridisk","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},8472:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Series","TYPE_tv":"TV-kanalen","TYPE_channel":"Kanaal","TYPE_other":"Other","TYPE_movie_PL":"Films","TYPE_series_PL":"Series","TYPE_tv_PL":"TV-kanalen","TYPE_channel_PL":"YouTube","TYPE_other_PL":"Andere","TYPE_ALL":"All","VIDEO":"Video","BACK":"Terug","MORE":"Meer","DONE":"Klaar","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Ontdekken","Board":"Dashboard","Library":"Bibliotheek","My Library":"Mijn Bibliotheek","Calendar":"Agenda","NOTIFICATION_ONLINE":"Je bent nu online","NOTIFICATION_OFFLINE":"Je bent nu offline","INTERNET_CONNECTION":"Netwerkverbinding","STORAGE_FULL_TITLE":"Waarschuwing: geheugen is vol!","STORAGE_FULL_TEXT":"Stremio kan uw instellingen, voorkeuren of inloggegevens niet opslaan. Probeer Stremio te herstarten of opnieuw te installeren.","SEARCH":"Zoek","SEARCH_NO_RESULTS":"Er zijn geen resultaten gevonden","SEARCH_EXPLANATION_CONTENT":"Zoek naar films, series, Youtube and TV series","SEARCH_EXPLANATION_PEOPLE":"Zoek naar acteurs, filmregisseurs en schrijvers","SEARCH_PASTE_LINKS":"Plak hier HTTP en Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Toevoegen aan bibliotheek","REMOVE_FROM_LIB":"Verwijderen uit bibliotheek","ADDED_TO_LIB":"Toegevoegd aan bibliotheek","REMOVED_FROM_LIB":"Verwijderd van uw bibliotheek","TRAILER":"Trailer","WATCH_TRAILER":"Trailer bekijken","WATCH_NOW":"Nu kijken","SHOW":"Toon","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Kijk willekeurig","IMDB_RATING":"IMDb beoordeling","YEAR":"Jaar","DIRECTOR":"Regisseur","WRITER":"Schrijver","LEAD_ACTORS":"Hoofdrolspelers","CAST":"Rolverdeling","CREW":"Crew","SHOW_MORE_CAST":"Laat meer zien »","AIRED":"Uitgezonden","SEASONS":"Seizoenen","GENRE":"Genre","CATALOG":"Catalogus","SUMMARY":"Samenvatting","SHOW_MORE":"Show More","SIMILAR":"Vergelijkbaar","UPCOMING":"Opkomend","ENDED":"Afgelopen","DURATION":"Tijdsduur","FEATURED":"Uitgelicht","METADATA":"Metadata","CATEGORY":"categorie","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Zoek video\'s","SEARCH_PLACEHOLDER":"zoek of plak magnet link","ADDON":"Addon","ADDONS":"Addons","OFFICIAL":"Officieel","ADDONS_OFFICIAL":"Officiële Stremio addon","ADDONS_POPULAR":"Populair in uw regio","ADDON_FREE":"Gratis","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Abonnement","ADDON_STREAM_GEORESTRICTED":"Niet beschikbaar in uw regio","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Lokaal Bestand","SHARE_ADDON":"Deel addon","AVAILABLE_STREAMS":"Beschikbare streams","NO_STREAM":"Geen streams beschikbaar","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Voor meer streams, installeer meer addons","STREAM_NOT_SUPPORTED":"Geselecteerde stream is niet ondersteund op dit platform.","ADDON_CATALOGUE":"Toon alle addons »","ADDON_CATALOGUE_MORE":"Meer addons »","REPO_ADDED":"Repository toegevoegd","ADDON_REPO_EXIST_ERR":"Deze addons repository bestaat al","ADDON_REPO_ERR":"Foutmelding opgetreden tijdens het toevoegen van de repository","ADDON_ADD_ERR":"Foutmelding opgetreden tijdens het toevoegen van de addon","ERR_ADDON_PROTECTED":"Beschermde addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Er ging iets fout - authenticatie is mislukt","ERR_NOT_COLLECTION_URL":"Geen collectie URL","ERR_NOT_ADDON_URL":"Geen addon URL","ERR_DETECTFROMURL":"Niets beschikbaar in de URL","ADDON_DUPLICATE_WARNING":"Waarschuwing: gedupliceerde addon","ADDON_COLLECTION_SET_FAILED":"Addon collectieset mislukt","SETTINGS_DATA_EXPORT":"Exporteer data","ADDON_PULL_FAILED":"Addon ophalen mislukt","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Film nog in de bioscoop","WATCH_IN_CINEMA":"Bekijk de film in een bioscoop in uw buurt","IN_THEATER":"In de bioscoop","GET_TICKETS":"Tickets bemachtigen","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Dit kanaal is nog niet geschraapt.
    Gelieve terug te komen in een paar minuten.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Voeg deze toe aan uw bibliotheek om een melding te krijgen zodra deze beschikbaar is.","GET_NOTIFIED_WHEN_AVAILABLE":"U krijgt een melding zodra deze beschikbaar is.","WARNING_STREAMING_SERVER":"Waarschuwing: lokale streaming server niet gevonden. Streamen van Youtube en BitTorrent is niet mogelijk","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Waarschuwing: de video is mogelijk niet ondersteund door uw hardware. De video zal mogelijks niet correct worden afspeeld.","PLAYER_ERROR":"Woeps, Videospeler fout","PLAYER_ERROR_LOOKSLIKE":"Het lijkt erop","PLAYER_ORIENTATION":"Videospeler orientatie","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Vergrendeld","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Videospeler vergrendeld op horizontale weergave","PLAYER_ORIENTATION_SENSOR":"Automatische orientatieweergave videospeler (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Streamen van","CASTING_TO":"Casten naar","NETWORK_STATUS":"Netwerkstatus","STREAM_SPEED":"Snelheid:","STREAM_BUFFERED":"Gebufferd:","PEERS_INFO":"Peers informatie","PEERS_ACTIVE":"Actief:","PEERS_CONNECTED":"Verbonden:","PEERS_WAITING":"Wachten:","TRANSCODING_WARNING":"Waarschuwing: transcoderen van video.","STREAM_LOADING":"Laden...","PLAYING_LOCAL":"spelen van een lokaal bestand","PLAYING_CACHE":"spelen uit cache","WRONG_SUBS":"Verkeerde ondertiteling?","ERR_SUBS_LOADING_TITLE":"Fout tijdens laden ondertiteling","ERR_SUBS_LOADING":"Ondertiteling laden mislukt: Dit kan liggen aan de gebruikte addon, of uw internetverbinding","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Kon streamingsapparaat info niet vernieuwen: streamingserver is mogelijks offline","CHOOSE_DEVICE":"Kies een apparaat om op te kijken","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Mobiel/Tablet","SUBTITLES":"Ondertiteling","SUBTITLES_CHANGE":"Verander ondertiteling voor","SUBTITLES_CHANGE_NONE":"Voor deze taal zijn geen andere vertalingen beschikbaar, sorry.","SUBTITLES_CHANGE_ACIVE":"Momenteel is ondertiteling #{{subtitlesDialog.activeIdx + 1}} actief. Klik op \\"Verder\\" om ondertiteling #{{subtitlesDialog.pickedIdx + 1}} te gebruiken.","SUBTITLES_OR":"Als alternatief,","SUBTITLES_ADJUST_DELAY":"Ondertitelingsvertraging aanpassen:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Of gebruik de G / H toetsen om de ondertitels tijdens het afspelen aan te passen.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: je kan de toetsen G / H gebruiken tijdens het afspelen om aan te passen.","SUBTITLES_DELAY":"Ondertitelvertraging:","SUBTITLES_LOADING":"Ondertiteling laden...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Seizoen","EPISODE":"Aflevering","SPECIAL":"Special","SORT":"sorteer op","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"recent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"beoordeling","SORT_WATCHED":"gezien","SORT_YEAR":"jaar","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Nieuw voor jou","New Episodes":"Nieuwe afleveringen","New Videos":"Nieuwe video\'s","Recommendations":"Aanbevelingen","LIBRARY_RESUME":"hervat","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"negeer","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Uitgelicht","DISCOVER_TOP":"Populair","DISCOVER_OSCAR":"Oscars","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"Deze addon stuurde niks terug.","DISCOVER_ADULT_WARNING":"Deze inhoud is enkel toegankelijk voor volwassenen. Ben je 18+?","DISCOVER_NOADDON_WARNING":"Waarschuwing: geen Stremio addon actief voor dit type. Opgeslagen items worden weergegeven, hier komen geen updates.","DISCOVER_LOAD_ERR":"De inhoud werd niet geladen, er deed zich een fout voor.","DISCOVER_ADDON_UNINSTALLED":"Deze inhoud is niet meer beschikbaar, Het is mogelijk dat de addon is gedeinstalleerd.","UNINSTALL_THIS_ADDON":"Deinstalleer deze addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Ontvang notificaties bij nieuwe afleveringen","DETAIL_RECEIVE_NOTIF_VIDEOS":"Ontvang notificaties bij nieuwe video\'s","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Herstart Stremio","UPGRADE":"Updaten naar de laatste Stremio versie","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonieme gebruiker","DONT_HAVE_ACC":"Heeft u nog geen account?","HAVE_ACC":"Heeft u al een account?","PASSWORD":"Wachtwoord","PASSWORD_CONFIRM":"Bevestig wachtwoord","EMAIL":"E-mail","FB_LOGIN":"Inloggen met Facebook","FB_NOTHINGSHARED":"Niks wordt gedeeld zonder uw toestemming","FB_NOPOST":"Niks wordt gepost zonder uw toestemming","OR":"of","I_ACCEPT":"Ik accepteer de","I_ACCEPT_BY_CLICKING":"Door te klikken op de bovenstaande knop ga ik akkoord met de","TOS":"Algemene Voorwaarden","MUST_ACCEPT_TERMS":"U moet akkoord gaan met de voorwaarden","PASSWORDS_NOMATCH":"Wachtwoorden komen niet overeen","SIGN_UP":"Inschrijven","SIGN_UP_EMAIL":"Aanmelden met e-mail","CLICK_TO_SIGN_UP":"Klikt hier om aan te melden.","LOG_IN":"Inloggen","LOG_OUT":"Uitloggen","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Gast-login","GUEST_LOGIN_NOTICE":"Gast-login is niet aangewezen. Een vaste login gebruiken zorgt ervoor dat Stremio je bibliotheek kan synchroniseren en je notificaties krijgt over je favoriete series/kanalen. Ben je zeker dat je wilt doorgaan?","GUEST_LOGIN_NOTICE_2":"Gast-login is niet aangewezen - je zal geen gesynchroniseerd bibliotheek hebben of dashboard notificaties krijgen, beiden belangrijke Stremio functies. Ben je zeker dat je wilt doorgaan?","CLICK_HERE":"Klik hier","WRONG_PASSWORD":"Verkeerd wachtwoord. In het geval dat u uw wachtwoord vergeten, ","SET_A_PASS":"Stel een wachtwoord in","RESET_PASSWORD":"Veranderd wachtwoord","FORGOT_PASSWORD":"Wachtwoord vergeten?","EMAIL_USED_WITH_FB":"Deze e-mail is al gebruikt met een Facebook login.","INVALID_EMAIL":"Voer een geldig e-mailadres in","INVALID_PASSWORD":"Voer een geldig wachtwoord in","CONN_ERR":"Connectiefout - probeer het later opnieuw.\\n\\nAls dit probleem zich aanhoudt, schakel dan uw firewall en/of anti-virus software uit (vooral Bitdefender).","IMPORT_FROM_GUEST":"Importeer bibliotheek van uw gast acccount","RECEIVE_UPDATES_EMAIL":"Ontvang updates via e-mail van Stremio","LOGIN_FAILED":"Login mislukt.","SIGNUP_FAILED":"Aanmelden mislukt.","SEARCH_FAILED":"Zoekopdracht mislukt","EMAIL_USED":"Dit e-mail is al in gebruik.","WAITING_FB_LOGIN":"Inloggen met Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Geef uw voorkeuren aan","INTRO_TASTE_LONG":"Vertel ons wat je wilt bekijken","INTRO_TASTE_PICK":"Kies {{interestsRemaining}} interesses","INTRO_TASTE_PICK_MORE":"Kies {{interestsRemaining}} meer interesses","INTRO_TASTE_HELP_US":"Help ons je beter te leren kennen.","INTRO_TASTE_CHOOSE_THESE":"Kies enkel van deze:","INTRO_TASTE_CHOOSE_MIN":"Kies minimum 3 categorieën","INTRO_TASTE_CHOOSE_MIN_ERR":"Je moet minimum 3 categorieën kiezen!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sport","INTRO_TASTE_FOOD_HEALTH":"Eten & Gezondheid","INTRO_TASTE_BEAUTY_FASHION":"Schoonheid & Mode","INTRO_TASTE_NEWS":"Nieuws","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Wetenschap & Onderwijs","INTRO_TASTE_MUSIC":"Muziek","INTRO_TASTE_TRAVEL":"Reizen","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Komedie","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"De geselecteerde addon is niet ondersteund op dit platform.","ADDON_DISCLAIMER":"Het gebruiken van addons van derden is altijd onderworpen aan uw eigen verantwoordelijkheid en het recht van de regio waar u zich bevindt.","ADDON_ACTIVATE":"Deze addon activeren?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Toevoegen","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Wat is er nieuw?","BUTTON_CONTINUE":"Doorgaan","BUTTON_ACTIVATE":"Activeer","BUTTON_ACTIVATED":"Geactiveerd","BUTTON_CANCEL":"Annuleer","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Negeer alles","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Uw bibliotheek ziet er leeg uit. Ontdek hoe nuttig het is :) ","HOW_START":"Hier is hoe je kunt beginnen:","LIB_EMPTY_CAL":"De agenda toont series in je bibliotheek.","HOW_START_CAL":"Hier is hoe je series kan toevoegen:","LIB_EMPTY_BOARD":"Het dashboard toont notificaties & aanbevelingen gebaseerd op uw bibliotheek.","HOW_START_BOARD_WAIT":"Voeg een paar series of kanalen toe aan uw bibliotheek en geef ons een paar minuten verwerktijd :)","HOW_START_BOARD":"Zo voeg je series & films toe:","IMPORT_FB":"Importeer dingen die je leuk vind van Facebook","IMPORT_TRAKT":"Importeer je media bibliotheek van Trakt","IMPORT_DISCOVER":"Ontdek interessante dingen","IMPORT_DISK":"Importeer films of series vanaf je lokale schijf","PLEASE_CREATE_ACC":"Registreer een account om van de bibliotheek & het dashboard gebruik te maken.","IMPORT_DISCOVER_SIGNUP":"Registreer en vind interessante dingen van Ontdekken","IMPORT_DISK_SIGNUP":"Registreer en importeer films en series van je lokale schijf","LIB_EMPTY_CLOUD":"Cloud bibliotheek","LIB_EMPTY_CLOUD_DESC":"Persoonlijke cloud bibliotheek gesynchroniseerd op alle toestellen","LIB_EMPTY_EARLY":"Vroege vogel","LIB_EMPTY_EARLY_DESC":"Ontvang notificaties bij nieuwe afleveringen","LIB_EMPTY_PERSONAL":"Persoonlijk","LIB_EMPTY_PERSONAL_DESC":"Ontvang persoonlijke aanbevelingen","LIB_EMPTY_CALENDAR_DESC":"Plan uw persoonlijke kijkkalender","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Registreer om deze allemaal te ontvangen","LIB_EMPTY_OTHER":"Registreer om Agenda en andere coole functies in te schakelen","CALENDAR_ADDED":"De Stremio-kalender is toegevoegd aan uw standaard desktopkalender.","CALENDAR_ADDED_MSG":"Indien dit niet werkt, voeg deze URL dan handmatig toe aan uw agendatoepassing","TRAKT_EXPIRED":"Trakt-authenticatie is verlopen, ga naar Instellingen en verifieer opnieuw","TRAKT_REQUIRES_LOGIN":"Trakt foutmelding","TRAKT_REQUIRES_LOGIN_MSG":"U moet inloggen","SETTINGS_LABEL":"Instellingen","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Openen bij opstarten","SETTINGS_VLC_DEFAULT":"Afspelen met VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Automatisch de volgende aflevering afspelen","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Het vensterformaat automatisch aanpassen voor afspelen","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Gebruik altijd de laatste Beta","SETTINGS_IMPORT_FB":"Importeren van Facebook","SETTINGS_IMPORT_DISK":"Importeren van lokale schijf","SETTINGS_IMPORT_TRAKT":"Importeren van Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Door hardware versnelde decodering","SETTINGS_BACKGROUND":"Achtergrondweergave","SETTINGS_SUBSCRIBE_CALENDAR":"Abonneer op agenda","SETTINGS_REQ_EXPORT":"Vraag gegevens export aan","SETTINGS_ACC_DELETE":"Verzoek om accountverwijdering","SETTINGS_CHANGE_PASSWORD":"Wachtwoord veranderen","SETTINGS_TOS":"Algemene voorwaarden","SETTINGS_SUPPORT":"Contact opnemen met ondersteuning","SETTING_LANGUAGE":"Taal","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Uitloggen van Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"QR code scanne om afstandsbediening te openen","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notificaties","SETTINGS_DATA_SAVER":"Gegevensbesparing","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"standaard ondertiteling","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"versie","SETTINGS_MPV_WINDOW":"Start videospeler in apart scherm (geadvanceerd)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Afsluiten","CONNECTED":"Verbonden","AUTHENTICATE":"Authenticeren","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Selecteer schijf voor caching","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Magnet link verwerken","January":"januari","February":"februari","March":"maart","April":"april","May":"mei","June":"juni","July":"juli","August":"augustus","September":"september","October":"oktober","November":"november","December":"december","Monday":"maandag","Tuesday":"dinsdag","Wednesday":"woensdag","Thursday":"donderdag","Friday":"vrijdag","Saturday":"zaterdag","Sunday":"zondag","Action":"Actie","Comedy":"Komedie","War":"Oorlog","Family":"Familie","Animation":"Animatie","Adventure":"Avontuur","Fantasy":"Fantasie","Crime":"Misdaad","Mystery":"Mysterie","Romance":"Romantiek","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Muziek","Biography":"Biografie","Documentary":"Documentaire","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-noir","News":"Nieuws","History":"Geschiedenis","Game-Show":"Spelprogramma","Reality-TV":"Reality-TV","Talk-Show":"Talkshow","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"Van TV","Lifestyle":"Lifestyle","Science & Education":"Wetenschap & Onderwijs","Cooking & Health":"Koken & Gezondheid","Beauty & Fashion":"Schoonheid & Mode","Sports":"Sport","News & Politics":"Nieuws & Politiek","How-to & DIY":"How-to & Klussen","Tech":"Technologie","Automotive":"Automotive","Causes & Non-Profits":"Goede doelen & Non-Profits","Movies":"Films","Uk Live Tv":"UK Live TV","Fashion":"Mode","Business News Radio":"Business News Radio","Business Tv":"Business","Cars & Auto":"Auto\'s","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"Nieuws","Food And Wine":"Eten & Wijn","Latino Tv":"Latino TV","Shopping Tv":"Shopping","Religion":"Godsdienst","Kids":"Kinderen","Body & Soul":"Lichaam & ziel","Education":"Onderwijs","Indian Tv":"Indische TV","Extreme Sports":"Extreme sporten","Middle Eastern Tv":"Midden-Oosten","Celebrity Tv":"Celebrity","Science Tv":"Wetenschap","Bikini babe":"Bikini babe","Outdoors":"Buitenleven","German Tv":"Duitse TV","French Tv":"Franse TV","Italian Tv":"Italiaanse TV","Gamer Tv":"Game","Travel":"Reizen","Asian Tv":"Aziatische TV","Entertainment":"Entertainment","News Radio":"Nieuws Radio","Music Radio":"Muziek Radio","Language Learning":"Taal leren","Science Radio":"Wetenschap Radio","Tech Radio":"Technologie Radio","Science & Technology Vod":"Wetenschap & Technologie Vod","new video":"nieuwe video","new episode":"nieuwe aflevering","new movie":"nieuwe film","recommended":"aanbevolen","we recommend":"onze aanbeveling","offer of the day":"aanbieding van de dag","news":"nieuws","music video":"muziekvideo","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Notificaties wissen","CTX_DISMISS_ALL":"Verwijder alles","CTX_SHARE":"Delen","CTX_COPY_SHARE_LINK":"Kopieer deelbare link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Kijken","CTX_PLAY":"Speel","CTX_PLAY_IN":"Speel in","CTX_PLAY_ON":"Speel op","CTX_WATCH_ON":"Kijk op","CTX_WATCH":"Kijken","CTX_WATCHED":"Gezien","CTX_WATCH_BEGINNING":"Vanaf het begin kijken","CTX_WATCH_MOBILE":"Op een mobiel apparaat kijken","CTX_REWIND":"Spoel terug naar begin","CTX_MARK_WATCHED":"Markeren als gezien","CTX_MARK_NON_WATCHED":"Markeren als niet gezien","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Markeer de rest als gezien","CTX_UNMARK_REST":"Markeer de rest als niet gezien","CTX_RECEIVE_NEW_NOTIF":"Nieuwe notificaties ontvangen","CTX_REMOVE_CACHE":"Van cache verwijderen","CTX_REMOVE_CACHE_EP":"Aflevering uit cache verwijderen","CTX_OPEN_CONTAINING":"Bijhorende map openen","CTX_REMOVE":"Verwijderen van bibliotheek","CTX_AVAILABLE_OFFLINE":"Offline beschikbaar","CTX_PAUSED":"Gepauzeerd","CTX_ALWAYS_ON_TOP":"Altijd op voorgrond","CTX_FULLSCREEN":"Volledig scherm","CTX_WRONG_SUBS":"Verkeerde ondertiteling?","CTX_REPORT_ISSUES":"Fout rapporteren","CTX_COPY":"Kopieren","CTX_PASTE":"Plakken","CTX_CLEAR":"Legen","CTX_CLEAR_RECENT_SEARCHES":"Recente zoekopdrachten verwijderen","HELLO_THERE":"Hallo daar","HOPE_YOU_ENJOY":"Wij hopen dat je Stremio leuk vindt en het al één van je favoriete programma\'s is!","WHO_ARE_WE":"Wie zijn wij? Wij zijn het team achter Stremio - twee jongens die de laatste 3 jaar erg hard hebben gewerkt, met één doel voor ogen - dit product beter en beter maken.","SUPPORT_US":"Als je Stremio met plezier gebruikt en/of het waardevol voor je is - steun ons!","SPREAD_THE_WORD":"Vertel je vrienden en de wereld over Stremio","MORE_PEOPLE":"Hoe meer mensen Stremio gebruiken, hoe beter het wordt!","SEND_A_LINK":"Of stuur een link naar onze website","TIP_LOCALFILES":"Tip: je kan lokale videobestanden in Stremio slepen om af te spelen","ADDON_MY":"Mijn Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Officiële Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Zoek addons","ADDON_INSTALL":"Installeer","ADDON_CONFIGURE":"Configureer","ADDON_UNINSTALL":"Deinstalleren","ADDON_UPGRADE":"Upgraden","ADDON_INSTALLED":"Geïnstalleerd","ADDON_INSTALLED_MSG":"Addon geinstalleerd!","ADDON_UPGRADED_MSG":"Addon ge-upgrade!","ADDON_UNKNOWN":"Onbekend","ADDON_ERR":"Addon installatie fout!","ADDON_DISCONNECTED":"Verbinding verbroken","ADDON_APP_MISSING":"De app voor deze bron is niet geinstalleerd. Wil je deze nu installeren?","ADDON_APP_INSTALL":"Installeer Nu","ADDON_PAGE":"Addon Pagina","ADDON_TOP_CONTENT":"Beste van deze Addon","ADDON_PROVIDES":"bied aan","ADDON_WATCH":"Kijk #{types} nu!","ADDON_WATCH_FREE":"Kijk #{types} nu GRATIS!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"Meer #{types} in Ontdekken","ADDON_PROVIDES_STREAMS":"Kijk #{types}","ADDON_PROVIDES_STREAMS_FREE":"Kijk #{types} GRATIS","ADDON_PROVIDES_SUBTITLES":"Ondertiteling voor #{types}","ADDON_CANTDETECT":"We konden geen lopende instantie van Stremio detecteren, hierdoor konden we niet detecteren welke addons er zijn geinstalleerd.","ERR_NO_META":"Geen informatie over dit ","ERR_GETTING_META":"Fout tijdens het verkrijgen van informatie.","ERR_CANT_PARSE_MAGNET":"Kan magnet link niet verwerken","ERR_NO_MAGNET_INFOHASH":"Geen geldige infohash voor deze magnet link","ERR_NO_FILE_PATH":"Niet mogelijk een verzoek te versturen zonder Unable to send request zonder pad naar bestand","ERR_NO_TORRENT":"Geen torrent gevonden","ERR_NO_SUPPORTERD_FILES":"Geen ondersteunde bestanden gevonden","ERR_OPENING_FILES":"Kon externe bestanden niet openen","ERR_INVALID_LINK":"Ongeldige link","ERR_REGISTERED_ONLY":"Deze optie is alleen beschikbaar voor geregisteerde gebruikers.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Doorgaan met kijken","BOARD_EXPLANATION_RECOMMENDATIONS":"Films speciaal voor jou gekozen.
    Deze film is een voorbeeld aanbeveling.","BOARD_EXPLANATION_EPISODES":"Nieuwe afleveringen van uw favoriete series komen hier.
    Voeg series die je volgt toe aan je bibliotheek.","BOARD_EXPLANATION_VIDEOS":"Nieuwe afleveringen van uw favoriete kanalen komen hier.
    Voeg Youtube Kanalen die je volgt toe aan je bibliotheek","WEBSITE_SLOGAN_WATCH":"Kijk direct","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Kijk van","WEBSITE_DOWNLOAD":"Download nu","WEBSITE_DOWNLOAD_FOR":"Download nu voor","WEBSITE_IS_DESKTOP":"Stremio is een desktop applicatie, open deze pagina op uw PC om Stremio te downloaden","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Functies","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technologie","WEBSITE_PAGE_CREATE_ADDON":"Maak een Addon","WEBSITE_PAGE_CONTACTS":"Contacten","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Films","WEBSITE_TYPE_series_PL":"Serie\'s","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Kanalen","WEBSITE_STREMIO_WHAT_IS":"Stremio is een app dat je helpt met het organizeren en onmiddellijk bekijken van je favoriete videos, filmss, TV series en TV-kanalen.","WEBSITE_FEATURES_WATCH":"Kijk direct in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Klik en bekijk je favoriete films, TV Shows, videos en TV-kanalen.","WEBSITE_FEATURES_SUBS":"Automatische Ondertiteling","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio kiest automatisch gesynchroniseerde ondertiteling voor jouw taal.","WEBSITE_FEATURES_SUBS_LABEL":"Jouw zet, baas.","WEBSITE_FEATURES_CAST":"Speel op TV en mobiele apparaten","WEBSITE_FEATURES_CAST_DETAIL":"Cast naar AppleTV, Chromecast, Smart TV (DLNA/UPnP) en mobiele apparaten.","WEBSITE_LIB":"Geniet van je persoonlijke bibliotheek gesynchroniseerd naar al je apparaten","WEBSITE_LIB_COLLECT":"Collecteer van Stremio","WEBSITE_LIB_IMPORT":"Importeer van Facebook","WEBSITE_LIB_LOCAL":"Voeg toe van je lokale schijf","WEBSITE_BOARD":"Het dashboard- Je one-stop plaats voor Notificaties en Aanbevelingen","WEBSITE_BOARD_RECOMMEND":"Aanbevolen TV Show","WEBSITE_BOARD_TRENDING":"Trending Film","WEBSITE_BOARD_NEW":"Nieuwe Video","WEBSITE_BOARD_EPISODE":"Nieuwe Aflevering","WEBSITE_BOARD_1":"Zoek je iets interessants? Krijg aanbevelingen gebaseerd op jouw smaak!","WEBSITE_BOARD_2":"krijg een notificatie wanneer een nieuwe aflevering van je favoriete TV show of Youtube kanaal uit is!","WEBSITE_BOARD_YOUTUBE":"Nieuwe video\'s van YouTube kanalen","WEBSITE_BOARD_EPISODES":"Nieuwe afleveringen van series die je volgd","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We houden van technologie, we houden van wetenschap!\\nStremio gebruikt de volgende open-source technologieën:","WEBSITE_TECH_WCJS":"WebChimera.js laat Stremio toe om alle videoformaten af te spelen.","WEBSITE_TECH_WCJS_EXTRA":"We dragen bij aan het kernproject","WEBSITE_TECH_ELECTRON":"Electron zorgt voor de innovatieve basis waarop Stremio gebouwd is.","WEBSITE_TECH_ELECTRON_EXTRA":"We dragen bij aan het project","WEBSITE_TECH_LINVODB":"Een database technologie dat je data organiseert en beschikbaar maakt waar en wanneer je ook inlogt.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technologie","WEBSITE_CREATE_ADDON":"Maak je eigen addon","WEBSITE_CREATE_ADDON_DETAIL":"Heb jij een videoservice? We helpen je graag voordeel te halen uit Stremio door een Addon voor je te maken.","WEBSITE_CREATE_ADDON_BENEFITS":"Voordelen aan het maken van een Addon voor Stremio","WEBSITE_P2P_BEAUTY":"De schoonheid van Peer-to-Peer streaming","WEBSITE_P2P_1":"Betrouwbare en betaalbare full HD / 4K-video op aanvraag of live streaming","WEBSITE_P2P_2":"Distributieplatform met een geweldige gebruikerservaring","WEBSITE_P2P_3":"We maken een addon naar jouw noden en wensen","WEBSITE_P2P_CONTACT":"Geïnteresseerd? Contacteer ons zeker.","WEBSITE_P2P_CONTACT_EXTRA":"We helpen je graag om je content te integreren in Stremio!","WEBSITE_P2P":"Af en toe komt er een technologie die de naam van het spel verandert. We hebben veel tijd en moeite geïnvesteerd in het bouwen van onze Peer-to-Peer (P2P) videostreamingmotor die geweldige prestaties en veelzijdigheid biedt voor elke toepassing. \\nNeem contact met ons op voor DRM-compatibele P2P-video op aanvraag of live streaming.","WEBSITE_THOUGHTS":"Gedachten die we willen delen:","WEBSITE_SPREAD":"Vertel iedereen over Stremio:","WEBSITE_CONTACT":"Wil je ons contacteren, doe gerust via","WEBSITE_OPENSOURCE":"Ga voor onze open source-projecten naar onze","WEBSITE_BITCOIN":"Doneer bitcoin:","WEBSITE_FAQ":"Veel Gestelde vragen","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Vragen","WEBSITE_TOS":"Gebruiksvoorwaarden","WEBSITE_LEGAL":"Wettelijk","WEBSITE_PAGE_ABOUT":"Over","WEBSITE_PAGE_BECOME_PARTNER":"Word een partner","WEBSITE_ALL_YOU_CAN_WATCH":"Vrijheid om te kijken \\nNaar alles wat je wilt.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Wat is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is een one-stop-hub voor het verzamelen van video-inhoud. Ontdek, organiseer en bekijk video van allerlei soorten bronnen op elk apparaat dat u bezit.","WEBSITE_WHAT_IS_STREMIO_P2":"Films, TV Shows, series, live TV of webkanalen zoals YouTube en Twitch.tv - je kunt dit allemaal vinden op Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is een modern mediacentrum dat een alles-in-een-oplossing is voor uw video-entertainment. U ontdekt, bekijkt en organiseert videocontent via eenvoudig te installeren addons..","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Films, TV Shows, live TV of webkanalen - je vindt het allemaal op Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Geniet op al uw media-apparaten","WEBSITE_DEVICES_COLLECT":"Verzamel van Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importeer van Facebook","WEBSITE_DEVICES_LOCAL":"Toevoegen van lokale schijf","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"Zoals gezien op","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Over ons","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Download\'s","WEBSITE_MORE":"Meer","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your E-mail","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid e-mail!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Doorgaan","SLOW_LOADING":"TRAAG AAN HET LADEN?","I_GIVE_UP":"IK GEEF OP","LEARN_MORE":"Meer info","POOR_SOURCE":"Deze bron is slecht beschikbaar of je internetverbinding is niet snel genoeg","PICK_CATEGORIES_ERR":"Je moet minimaal 3 categorieën kiezen","ADJUST_TIMING":"Pas de timing aan met ","ADJUST_SIZE":"Pas de grootte aan met ","SEARCH_ANYTHING":"Je kan dit alles zoeken...","ALL_CATEGORIES":"Alles","SEARCH_CATEGORIES":"Films, Series, YouTube & TV","SEARCH_PERSONS":"Acteurs, Regisseurs & Schrijvers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDb / TVDB links","WATCHED":"Gezien","SHOW_LESS":"Toon minder","LAST_SEARCHES":"Laatste zoekopdrachten","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Afstandsbediening kon niet worden geladen","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Gebruik data","WARNING":"Waarschuwing","MORE_INFO":"Meer Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Laden ...","STREMIO_TV_BACK_TO_LANGUAGES":"Terug naar talen","STREMIO_TV_REMOTE":"Afstandsbediening","STREMIO_TV_GO_TO":"Ga naar:","STREMIO_TV_OR_SCAN":"of scannen:","STREMIO_TV_ADDON_INSTRUCTIONS":"Volg de instructies om je addon keuze te installeren.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Verder kijken","STREMIO_TV_LOADING_BACKGROUND":"Achtergrond laden","STREMIO_TV_CHECKING_AUTHENTICATION":"Authenticeren","STREMIO_TV_LOADING_BOARD":"Dashboard laden","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio team","STREMIO_TV_REMOTE_INSTRUCTIONS":"om de Web Afstandsbediening met je smartphone / tablet / desktop te gebruiken:","STREMIO_TV_WIFI_SETUP":"Wifi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio-circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connecteer met:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremio-circle","STREMIO_TV_WIFI_DETAILS_5":"Open een webbrowser met de link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Verander apparaat","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Timing aanpassen","REMOTE_ADJUST_SIZE":"Grootte aanpassen","REMOTE_COULD_NOT_BE_LOADED":"Web Afstandsbediening kon niet worden geladen","REMOTE_RETRY":"Opnieuw proberen","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"Wat is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an e-mail to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Ga je een addon maken voor X?","FAQ_08_P1":"Dat is mogelijk.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Gebruikt Stremio het BitTorrent protocol?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie films met Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"Hoe kan ik een addon maken?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},8159:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serie","TYPE_tv":"TV kanal","TYPE_channel":"Kanal","TYPE_other":"Other","TYPE_movie_PL":"Filmar","TYPE_series_PL":"Seriar","TYPE_tv_PL":"TV kanalar","TYPE_channel_PL":"Kanalar","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Tilbake","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Oppdag","Board":"Board","Library":"Bibliotek","My Library":"My Library","Calendar":"Kalender","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"Søk mellom","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Legg til i bibliotek","REMOVE_FROM_LIB":"Fjern frå bibliotek","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Trailer","WATCH_TRAILER":"Sjå Trailer","WATCH_NOW":"Sjå No","SHOW":"Vis","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb Rangering","YEAR":"År","DIRECTOR":"Regissør","WRITER":"Forfattar","LEAD_ACTORS":"Hovudskodespelarar","CAST":"Skodespelarar","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Utgjeven","SEASONS":"Sesongar","GENRE":"Sjanger","CATALOG":"Catalog","SUMMARY":"Samandrag","SHOW_MORE":"Show More","SIMILAR":"Liknade","UPCOMING":"Kjem","ENDED":"Enda","DURATION":"Lengd","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"search videos","SEARCH_PLACEHOLDER":"search or paste magnet link","ADDON":"Utviding","ADDONS":"Utvidinger","OFFICIAL":"Offisielle","ADDONS_OFFICIAL":"Offisielle Stremio Utvidinger","ADDONS_POPULAR":"Populært i området ditt","ADDON_FREE":"Gratis","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Abonnering","ADDON_STREAM_GEORESTRICTED":"not available in your area","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Tilgjengelege Streams","NO_STREAM":"Ingen streams tilgjengelege","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Show all addons »","ADDON_CATALOGUE_MORE":"More addons »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Protected addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Filmen er framleis på kino","WATCH_IN_CINEMA":"sjå han på din lokale kino","IN_THEATER":"In cinema","GET_TICKETS":"Get tickets","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Denne kanalen er ikkje ferdig enda.
    Ver vennleg og kom tilbake om nokon få minutt.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Legg han til i ditt bibliotek for å bli varsla når han blir tilgjengeleg.","GET_NOTIFIED_WHEN_AVAILABLE":"Du vil bli varsla med ein gong han er tilgjengeleg.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Streamer frå","CASTING_TO":"Caster til","NETWORK_STATUS":"Nettverks status","STREAM_SPEED":"Fart på streamen:","STREAM_BUFFERED":"Buffret:","PEERS_INFO":"Informasjon om peers","PEERS_ACTIVE":"Aktive:","PEERS_CONNECTED":"Tilkoblet:","PEERS_WAITING":"Ventar:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"Lastar...","PLAYING_LOCAL":"Spelar frå lokal fil","PLAYING_CACHE":"Spelar frå cache","WRONG_SUBS":"Feil undertekstar?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Vel ein eining å streame frå","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Telefon / Nettbrett","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Endre undertekstar for ","SUBTITLES_CHANGE_NONE":"Det fins ingen andre undertekstar for dette språket, beklagar.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alteratively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use G / H keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use G / H keys while playing to adjust.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sesong","EPISODE":"Episode","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"nyleg","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rangering","SORT_WATCHED":"sett","SORT_YEAR":"år","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"resume","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Utvald","DISCOVER_TOP":"Topp","DISCOVER_OSCAR":"Oscar vinnarar","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Åtvaring: ingen Stremio utviding aktiv for denne typen. Visar lagra element, ingenting vil oppdatere.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Start på nytt no!","UPGRADE":"Oppdater til den nyaste Stremio versjonen","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Logg på med Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"eller","I_ACCEPT":"Eg godtek ","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Vilkåra og føresetnadene","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Passorda er ikkje like","SIGN_UP":"Registrer","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Logg på","LOG_OUT":"Logg ut","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Gjestepålogging","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"Klikk her","WRONG_PASSWORD":"Feil passord. I tilfelle du har gløymd passordet, ","SET_A_PASS":"lag eit passord","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"Denne eposten er i bruk av ein Facebook pålogging.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Bruk av tredjeparts-utvidinger vil alltid vere ditt eige ansvar med omsyn til den gjeldane lova der du oppheld deg.","ADDON_ACTIVATE":"Aktivere denne utvidingen?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Kva er nytt?","BUTTON_CONTINUE":"Hald fram","BUTTON_ACTIVATE":"Aktiver","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Avbryt","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Biblioteket ditt ser tomt ut. Finn ut kvar nyttig det er :) ","HOW_START":"Kom i gang:","LIB_EMPTY_CAL":"Kalenderen din visar seriar i biblioteket ditt.","HOW_START_CAL":"Her er korleis du kan leggje til seriar:","LIB_EMPTY_BOARD":"Board viser varslar & anbefalingar relatert til biblioteket ditt.","HOW_START_BOARD_WAIT":"Legg til nokon seriar eller kanalar i biblioteket ditt og gi oss nokon minutt til å behandle dei :)","HOW_START_BOARD":"Her er korleis du kan leggje til seriar & filmar til det:","IMPORT_FB":"Importer ting du likar frå Facebook","IMPORT_TRAKT":"Import your media library from Trakt","IMPORT_DISCOVER":"Finn interessante ting frå Oppdag","IMPORT_DISK":"Importer filmar eller seriar frå din lokale Harddisk","PLEASE_CREATE_ACC":"Please create an account to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from Discover","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your local disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Køyr ved oppstart","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Importer frå Facebook","SETTINGS_IMPORT_DISK":"Importer frå lokal disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Abonner på ein kalender","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Endre passord","SETTINGS_TOS":"Vilkåra for tjenesta","SETTINGS_SUPPORT":"Kontakt support","SETTING_LANGUAGE":"Språk","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Avslutt","CONNECTED":"Connected","AUTHENTICATE":"Verifiser","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Velj caching eining","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januar","February":"Februar","March":"Mars","April":"April","May":"Mai","June":"Juni","July":"Juli","August":"August","September":"September","October":"Oktober","November":"November","December":"Desember","Monday":"Måndag","Tuesday":"Tysdag","Wednesday":"Onsdag","Thursday":"Torsdag","Friday":"Fredag","Saturday":"Laurdag","Sunday":"Søndag","Action":"Action","Comedy":"Komedie","War":"Krig","Family":"Familie","Animation":"Animasjon","Adventure":"Eventyr","Fantasy":"Fantasy","Crime":"Krim","Mystery":"Mysterium","Romance":"Romantikk","Drama":"Drama","Horror":"Grysjar","Thriller":"Spenning","Sci-Fi":"Sci-Fi","Music":"Musikk","Biography":"Biografi","Documentary":"Dokumentar","Sport":"Sport","Musical":"Musikal","Western":"Western","Film-Noir":"Film-Noir","News":"Nyheiter","History":"Historie","Game-Show":"Gameshow","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Underhalding","Gaming":"Gaming","From TV":"Frå TV","Lifestyle":"Livsstil","Science & Education":"Vitskap & Utdanning","Cooking & Health":"Matlaging & Helse","Beauty & Fashion":"Venleik & Mote","Sports":"Sport","News & Politics":"Nyheiter & Politikk","How-to & DIY":"Gjør det sjølv","Tech":"Teknologi","Automotive":"Bilbransjen","Causes & Non-Profits":"Saker & ideelle organisasjonar","Movies":"Filmar","Uk Live Tv":"UK Direkte TV","Fashion":"Mote","Business News Radio":"Business Nyheitsradio","Business Tv":"BusinessTV","Cars & Auto":"Bilar og Auto","Comedy Radio":"Komedieradio","Lifestyle Radio":"Livsstilsradio","News Tv":"NyheitsTV","Food And Wine":"Mat og Vin","Latino Tv":"Latino TV","Shopping Tv":"ShoppingTV","Religion":"Religion","Kids":"Barn","Body & Soul":"Kropp og Sjel","Education":"Utdanning","Indian Tv":"Indisk TV","Extreme Sports":"Ekstremsport","Middle Eastern Tv":"TV frå Midtøsten","Celebrity Tv":"KjendisTV","Science Tv":"VitskapsTV","Bikini babe":"Bikini babe","Outdoors":"Utandørs","German Tv":"Tysk TV","French Tv":"Fransk TV","Italian Tv":"Italiensk TV","Gamer Tv":"SpelTV","Travel":"ReiseTV","Asian Tv":"Asiatisk TV","Entertainment":"Underhalding","News Radio":"Nyheitsradio","Music Radio":"Musikkradio","Language Learning":"Språklæring","Science Radio":"Vitskapsradio","Tech Radio":"Teknologiradio","Science & Technology Vod":"Vitskap -og Teknologi VOD","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years, with a single goal - to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - support us!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"provides","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},5517:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serial","TYPE_tv":"Program telewizyjny","TYPE_channel":"Kanał","TYPE_other":"Inne","TYPE_movie_PL":"Filmy","TYPE_series_PL":"Seriale","TYPE_tv_PL":"Programy telewizyjne","TYPE_channel_PL":"Kanały","TYPE_other_PL":"Inne","TYPE_ALL":"All","VIDEO":"Wideo","BACK":"Wstecz","MORE":"Więcej","DONE":"Gotowe","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Tryb rzutowania","CASTING_MODE_HLSV2":"Domyślny","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Bez transkodowania","Discover":"Odkrywaj","Board":"Tablica","Library":"Biblioteka","My Library":"Moja biblioteka","Calendar":"Kalendarz","NOTIFICATION_ONLINE":"Jesteś teraz online","NOTIFICATION_OFFLINE":"Jesteś obecnie offline","INTERNET_CONNECTION":"Połączenie internetowe","STORAGE_FULL_TITLE":"Ostrzeżenie: pamięć pełna!","STORAGE_FULL_TEXT":"Stremio nie jest w stanie zapisać twoich ustawień lub danych logowania. Spróbuj ponownie uruchomić, lub ponownie zainstalować Stremio.","SEARCH":"szukaj","SEARCH_NO_RESULTS":"Nie znaleziono żadnych wyników","SEARCH_EXPLANATION_CONTENT":"Szukaj filmów, seriali, YouTube i kanałów telewizyjnych","SEARCH_EXPLANATION_PEOPLE":"Szukaj aktorów, reżyserów i scenarzystów","SEARCH_PASTE_LINKS":"Wklej adresy HTTP i Magnet","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Dodaj do biblioteki","REMOVE_FROM_LIB":"Usuń z biblioteki","ADDED_TO_LIB":"Dodano do biblioteki","REMOVED_FROM_LIB":"Usunięto z biblioteki","TRAILER":"Zwiastun","WATCH_TRAILER":"Zobacz zwiastun","WATCH_NOW":"Oglądaj","SHOW":"Pokaż","SHOW_MOVIE":"Pokaż film","WATCH_RANDOM":"Obejrzyj losowy","IMDB_RATING":"Ocena IMDb","YEAR":"Rok","DIRECTOR":"Reżyser","WRITER":"Scenarzysta","LEAD_ACTORS":"Główni aktorzy","CAST":"Obsada","CREW":"Ekipa","SHOW_MORE_CAST":"Pokaż więcej »","AIRED":"Wyemitowany","SEASONS":"Sezony","GENRE":"Gatunek","CATALOG":"Katalog","SUMMARY":"Podsumowanie","SHOW_MORE":"Pokaż więcej","SIMILAR":"Podobne","UPCOMING":"Nadchodzące","ENDED":"Zakończony","DURATION":"Czas trwania","FEATURED":"Wyróżnione","METADATA":"Metadane","CATEGORY":"kategoria","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"szukaj filmy","SEARCH_PLACEHOLDER":"szukaj lub wklej URL","ADDON":"dodatek","ADDONS":"Dodatki","OFFICIAL":"oficjalny","ADDONS_OFFICIAL":"Oficjalne dodatki Stremio","ADDONS_POPULAR":"Popularne w twojej okolicy","ADDON_FREE":"darmowe","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"subskrypcja","ADDON_STREAM_GEORESTRICTED":"niedostępne w twoim regionie","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Lokalny plik","SHARE_ADDON":"Udostępnij dodatek","AVAILABLE_STREAMS":"Dostępne źródła","NO_STREAM":"Nie ma dostępnych źródeł","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Dla większej ilości źródeł zainstaluj więcej dodatków","STREAM_NOT_SUPPORTED":"Wybrane źródło nie jest dostępne na tej platformie","ADDON_CATALOGUE":"Pokaż wszystkie dodatki »","ADDON_CATALOGUE_MORE":"Więcej dodatków »","REPO_ADDED":"Repozytorium dodane","ADDON_REPO_EXIST_ERR":"Repozytorium już istnieje","ADDON_REPO_ERR":"Wystąpił błąd podczas dodawania kolekcji","ADDON_ADD_ERR":"Wystąpił błąd podczas dodawania dodatku","ERR_ADDON_PROTECTED":"Nie można odinstalować dodatku, ponieważ jest chroniony","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Coś poszło nie tak - uwierzytelnianie mogło się nie powieść","ERR_NOT_COLLECTION_URL":"To nie jest URL kolekcji","ERR_NOT_ADDON_URL":"Nieprawidłowy URL dodatku","ERR_DETECTFROMURL":"Nie odnaleziono dodatku/kolekcji pod tym URL","ADDON_DUPLICATE_WARNING":"Ostrzeżenie: powielony dodatek","ADDON_COLLECTION_SET_FAILED":"Synchronizacja zainstalowanych dodatków do twojego konta nie powiodła się","SETTINGS_DATA_EXPORT":"Wyeksportuj dane użytkownika","ADDON_PULL_FAILED":"Synchronizacja zainstalowanych dodatków z twojego konta nie powiodła się","REFRESH_ON_CLICK":"Kliknij, aby ponowić","STILL_IN_THEATER":"Film obecnie w kinach","WATCH_IN_CINEMA":"Obejrzyj film w kinie","IN_THEATER":"W kinie","GET_TICKETS":"Kup bilety","UPCOMING_EPISODE":"Nadchodzący odcinek","UPCOMING_EPISODE_MESSAGE":"Ten odcinek zostanie nadany","MISSING_DATE_EPISODE":"Brak daty odcinka","MISSING_DATE_EPISODE_MESSAGE":"Ten odcinek mógł nie zostać jeszcze wyemitowany","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.
    Zajrzyj z powrotem za kilka minut.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Dodaj do swojej biblioteki, aby zostać powiadomionym kiedy będzie dostępny.","GET_NOTIFIED_WHEN_AVAILABLE":"Zostaniesz powiadomiony kiedy będzie dostępny.","WARNING_STREAMING_SERVER":"Ostrzeżenie: lokalny serwer streamowania nie został znaleziony. Streamowanie lokalnych plików, YouTube i BitTorrent nie będzie dostępne.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Ostrzeżenie: ten film może nie być wspierany przez twój sprzęt. Miej na uwadze, że odtwarzanie może być wolne.","PLAYER_ERROR":"Ups, błąd odtwarzacza","PLAYER_ERROR_LOOKSLIKE":"Wygląda na to, że","PLAYER_ORIENTATION":"Orientacja odtwarzacza","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Zablokowana","PLAYER_ORIENTATION_SENSOR_SHORT":"Czujnik","PLAYER_ORIENTATION_LANDSCAPE":"Orientacja odtwarzacza zablokowana poziomo","PLAYER_ORIENTATION_SENSOR":"Orientacja odtwarzacza automatyczna (czujnik)","PLAYER_PLAYBACK_SPEED":"Prędkość odtwarzania","PLAYER_PLAYBACK_ERROR":"Błąd odtwarzania, spróbuj ponownie","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Nieznany błąd","PLAYER_PLAYBACK_ERROR_DEFAULT":"Przepraszamy, ten film nie może być odtworzony przez {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Na żywo","PLAYER_NEXT_VIDEO_TITLE":"Następnie w","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Odrzuć","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Oglądaj teraz","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streamuje z","CASTING_TO":"Rzutowanie do","NETWORK_STATUS":"Status połączenia","STREAM_SPEED":"Prędkość streama:","STREAM_BUFFERED":"Zbuforowane:","PEERS_INFO":"Informacje o peerach","PEERS_ACTIVE":"Aktywnych:","PEERS_CONNECTED":"Połączonych:","PEERS_WAITING":"Oczekujących:","TRANSCODING_WARNING":"Ostrzeżenie: transkodowanie filmu.","STREAM_LOADING":"ładowanie...","PLAYING_LOCAL":"odtwarzanie lokalnego pliku","PLAYING_CACHE":"odtwarzanie z pamięci podręcznej","WRONG_SUBS":"Złe napisy?","ERR_SUBS_LOADING_TITLE":"Błąd podczas ładowania napisów","ERR_SUBS_LOADING":"Nie udało się załadować napisów: to może być problem z dodatkiem, którego używasz, lub z twoim połączeniem sieciowym","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Te dodatki z napisami poległy","ERR_CASTING_UPDATE_TITLE":"Nie udało się zaktualizować info o urządzeniu zdalnym: serwer streamingowy może być niedostępny","CHOOSE_DEVICE":"Wybierz urządzenie, na którym chcesz oglądać","NO_CAST_DEVICES":"Brak zdalnych urządzeń.","NO_SETTINGS":"Brak dostępnych ustawień.","PHONE_TABLET":"Telefon / Tablet","SUBTITLES":"Napisy","SUBTITLES_CHANGE":"Zmień napisy na ","SUBTITLES_CHANGE_NONE":"Nie ma innych napisów dla tego języka, przepraszamy","SUBTITLES_CHANGE_ACIVE":"Obecnie napisy #{{subtitlesDialog.activeIdx + 1}} są aktywne. Kliknij \\"Kontynuuj\\", aby aktywować napisy #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternatywnie,","SUBTITLES_ADJUST_DELAY":"Dopasuj opóźnienie napisów:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"lub użyj przycisków G / H podczas odtwarzania, aby dopasować.","SUBTITLES_ADJUST_DELAY_TIP":"PORADA: możesz używać przycisków G / H podczas odtwarzania, aby dopasować.","SUBTITLES_DELAY":"Opóźnienie napisów:","SUBTITLES_LOADING":"Ładowanie napisów...","SUBTITLES_UNAVAILABLE":"Brak dostępnych zewnętrznych napisów","SUBTITLES_DISABLED":"Wyłączone","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Dźwięk","DEFAULT_LANGUAGE":"Domyślny język","DEFAULT_SECONDARY_LANGUAGE":"Domyślny drugorzędny język","SEASON":"Sezon","EPISODE":"Odcinek","SPECIAL":"Bonus","SORT":"sortuj","SORT_BY":"Sortuj po","FILTER":"filtruj","SORT_TRENDING":"na czasie","SORT_RECENT":"ostatnie","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"oceny","SORT_WATCHED":"obejrzane","SORT_YEAR":"rok","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Nowe dla ciebie","New Episodes":"Nowe odcinki","New Videos":"Nowe filmy","Recommendations":"Polecane","LIBRARY_RESUME":"Wznów","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Szczegóły","LIBRARY_RESUME_DISMISS":"Odrzuć","LIBRARY_CLEAR_PROGRESS":"Wyczyść postęp","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Wyróżnione","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Zwycięzcy Oscara","DISCOVER_WARNING_TITLE":"Ups!","DISCOVER_EMPTY_CATALOG":"Ten dodatek nie zwrócił zawartości.","DISCOVER_ADULT_WARNING":"Ta treść jest widoczna tylko dla dorosłych. Czy jesteś 18+?","DISCOVER_NOADDON_WARNING":"Ostrzeżenie: żaden dodatek Stremio nie jest aktywny dla tego typu. Pokazywanie zapisanych rzeczy, nic nie zostanie zaktualizowane","DISCOVER_LOAD_ERR":"Zawartość nie została załadowana, wystąpił błąd","DISCOVER_ADDON_UNINSTALLED":"Ta zawartość nie jest już dostępna, być może odinstalowano ten dodatek.","UNINSTALL_THIS_ADDON":"Odinstaluj ten dodatek","ERR_ADDON_NOT_INSTALLED":"Ten dodatek nie jest zainstalowany. Zainstalować teraz?","DETAIL_RECEIVE_NOTIF_SERIES":"Otrzymuj powiadomienia o nowych odcinkach","DETAIL_RECEIVE_NOTIF_VIDEOS":"Otrzymuj powiadomienia o nowych filmach","SIDEBAR_SHOW_STREAMS":"Pokaż źródła","RELAUNCH":"Uruchom ponownie teraz!","UPGRADE":"Nowa wersja jest dostępna! Zaktualizuj do najnowszej wersji Stremio","RELOAD_UI":"Przeładuj interface użytkownika","MANUAL_UPDATE_TITLE":"Zaktualizuj twoją wersję Stremio","MANUAL_UPDATE_LINE1":"Używasz przestarzałej wersji Stremio, co jest mocno niezalecane.","MANUAL_UPDATE_LINE2":"Proszę zaktualizować tak szybko, jak to możliwe.","BUTTON_UPDATE_LATTER":"Nie teraz","BUTTON_UPDATE_NOW":"Aktualizuj","ANONYMOUS_USER":"Anonimowy użytkownik","DONT_HAVE_ACC":"Nie masz konta?","HAVE_ACC":"Masz już konto?","PASSWORD":"Hasło","PASSWORD_CONFIRM":"Potwierdź hasło","EMAIL":"E-mail","FB_LOGIN":"Zaloguj z Facebook","FB_NOTHINGSHARED":"Nic nie jest udostępniane bez twojego zezwolenia","FB_NOPOST":"Nic nie napiszemy w twoim imieniu","OR":"lub","I_ACCEPT":"Akceptuję","I_ACCEPT_BY_CLICKING":"Poprzez kliknięcie powyższego przycisku świadczę, że akceptuję ","TOS":"Warunki Umowy","MUST_ACCEPT_TERMS":"Musisz zaakceptować regulamin","PASSWORDS_NOMATCH":"Hasła nie są takie same","SIGN_UP":"Zarejestruj się","SIGN_UP_EMAIL":"Zarejestruj się za pomocą email","CLICK_TO_SIGN_UP":"Kliknij tutaj, aby się zarejestrować.","LOG_IN":"Zaloguj się","LOG_OUT":"Wyloguj się","EXIT_FULLSCREEN":"Wyjdź z trybu pełnoekranowego","ENTER_FULLSCREEN":"Wejdź w tryb pełnoekranowy","PLAY_URL_MAGNET_LINK":"Odtwórz URL/Magnet link","HELP_FEEDBACK":"Pomoc i Feedback","TERMS_OF_SERVICE":"Warunki świadczenia usług","PRIVACY_POLICY":"Polityka prywatności","ABOUT_STREMIO":"O Stremio","USER_PANEL":"Panel użytkownika","LOGIN_LABEL":"Login","GUEST_LOGIN":"Zaloguj się jako gość","GUEST_LOGIN_NOTICE":"Logowanie się jako gość nie jest polecane. Używanie typowego logowania pozwala Stremio synchronizować twoją Bibliotekę, otrzymywać powiadomienia dla twoich ulubionych serialach/kanałach. Na pewno chcesz kontynuować?","GUEST_LOGIN_NOTICE_2":"Logowanie się jako gość nie jest polecane - nie będziesz miał możliwości synchronizacji Biblioteki i powiadomień na Tablicy, a to ważne funkcje Stremio. Na pewno chcesz kontynuować?","CLICK_HERE":"kliknij tutaj","WRONG_PASSWORD":"Zły email lub hasło. Jeżeli zapomniałeś swojego hasła, ","SET_A_PASS":"ustaw hasło","RESET_PASSWORD":"Zresetuj hasło","FORGOT_PASSWORD":"Zapomniałeś hasła?","EMAIL_USED_WITH_FB":"Ten email jest używany do logowania poprzez Facebook.","INVALID_EMAIL":"Wprowadź poprawny adres email","INVALID_PASSWORD":"Wprowadź poprawne hasło","CONN_ERR":"Błąd połączenia - proszę spróbować ponownie później.\\n\\nJeśli problem wciąż występuje, wyłącz zapory sieciowe/oprogramowanie antywirusowe (szczególnie Bitdefender).","IMPORT_FROM_GUEST":"Importuj Bibliotekę z twojego konta gościa","RECEIVE_UPDATES_EMAIL":"Otrzymuj aktualizacje na swój email od Stremio","LOGIN_FAILED":"Logowanie nieudane.","SIGNUP_FAILED":"Rejestracja nieudana.","SEARCH_FAILED":"Wyszukiwanie nieudane","EMAIL_USED":"Ten email jest już w użyciu.","WAITING_FB_LOGIN":"Logowanie za pomocą Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Powiedz nam co lubisz","INTRO_TASTE_LONG":"Powiedz nam co chcialbyś obejrzeć","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Pomóż nam dowiedzieć się więcej o Tobie.","INTRO_TASTE_CHOOSE_THESE":"Wybierz kilka z tych:","INTRO_TASTE_CHOOSE_MIN":"Wybierz przynajmniej 3 kategorie","INTRO_TASTE_CHOOSE_MIN_ERR":"Musisz wybrać przynajmniej 3 kategorie!","INTRO_TASTE_LIFESTYLE":"Styl życia","INTRO_TASTE_SPORTS":"Sport","INTRO_TASTE_FOOD_HEALTH":"Jedzenie i zdrowie","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Nauka i edukacja","INTRO_TASTE_MUSIC":"Muzyka","INTRO_TASTE_TRAVEL":"Podróże","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Wybrany addon nie jest wspierany na tej platformie.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Aktywować ten addon?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Dodaj","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Co nowego?","BUTTON_CONTINUE":"Kontynuuj","BUTTON_ACTIVATE":"Aktywuj","BUTTON_ACTIVATED":"Aktywowany","BUTTON_CANCEL":"Anuluj","BUTTON_SUBMIT":"Wyślij","BUTTON_DISMISS_ALL":"Odwołaj wszystko","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Twoja biblioteka wygląda na pustą. Dowiedz się jak bardzo ona jest przydatna :) ","HOW_START":"Oto jak zacząć:","LIB_EMPTY_CAL":"Twój Kalendarz pokazuje seriale w twojej bibliotece.","HOW_START_CAL":"Tak możesz dodawać seriale:","LIB_EMPTY_BOARD":"Board pokazuje powiadomienia & Polecane na podstawie twojej Biblioteki.","HOW_START_BOARD_WAIT":"Dodaj kilka seriali lub filmów to swojej Biblioteki i daj nam troche czasu na przetworzenie :)","HOW_START_BOARD":"Tak możesz dodawać seriale & filmy:","IMPORT_FB":"Importuj rzeczy z Facebook","IMPORT_TRAKT":"Importuj dane z Trakt","IMPORT_DISCOVER":"Znajdź interesujące rzeczy w Odkrywaj","IMPORT_DISK":"Importuj filmy lub seriale, które posiadasz na swoim lokalnym dysku","PLEASE_CREATE_ACC":"Załóż konto, aby aktywować synchronizacje Biblioteki & Board.","IMPORT_DISCOVER_SIGNUP":"Załóż konto i znajdź interesujące rzeczy w Odkrywaj","IMPORT_DISK_SIGNUP":"Załóż konto i importuj filmy lub seriale, które posiadasz na swoim lokalnym dysku","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Otrzymuj powiadomienia o nowych odcinkach","LIB_EMPTY_PERSONAL":"Osobiste","LIB_EMPTY_PERSONAL_DESC":"Otrzymuj osobiste rekomendacje","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"Kalendarz Stremio został dodany do twojego domyślnego systemowego kalendarza.","CALENDAR_ADDED_MSG":"Jeżeli to nie działa, dodaj ten URL do twojego kalendarza manualnie","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"Musisz się zalogować","SETTINGS_LABEL":"Ustawienia","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Odtwarzacz","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Przeładuj aplikację","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Otwórz ustawienia","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Wyjdź / Cofnij","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Zwiększ rozmiar napisów","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Zmniejsz rozmiar napisów","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Zwiększ opóźnienie napisów","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Zmniejsz opóźnienie napisów","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Odtwarzaj z VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Domyślny język napisów","SETTINGS_SUBTITLES_SIZE":"Domyślny rozmiar napisów","SETTINGS_SUBTITLES_BACKGROUND":"Tło napisów","SETTINGS_SUBTITLES_COLOR":"Kolor napisów","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Kolor tła napisów","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play następny odcinek","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Zawsze używaj najnowszej Bety","SETTINGS_IMPORT_FB":"Importuj z Facebook","SETTINGS_IMPORT_DISK":"Importuj z lokalnego dysku","SETTINGS_IMPORT_TRAKT":"Importuj z Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Odtwarzaj w tle","SETTINGS_SUBSCRIBE_CALENDAR":"Subskrybuj kalendarz","SETTINGS_REQ_EXPORT":"Zażądaj exportu danych","SETTINGS_ACC_DELETE":"Zażądaj usunięcia konta","SETTINGS_CHANGE_PASSWORD":"Zmień hasło","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Skontaktuj się ze wsparciem","SETTING_LANGUAGE":"Język","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Wyloguj z Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Oszczędzanie energii","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"domyślne napisy","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"konto","SETTINGS_VERSION":"wersja","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Rozmiar","SUBSPICKER_DELAY":"Opóźnienie","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Zamknij","CONNECTED":"Połączony","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Styczeń","February":"Luty","March":"Marzec","April":"Kwiecień","May":"Maj","June":"Czerwiec","July":"Lipiec","August":"Sierpień","September":"Wrzesień","October":"Październik","November":"Listopad","December":"Grudzień","Monday":"Poniedziałek","Tuesday":"Wtorek","Wednesday":"Środa","Thursday":"Czwartek","Friday":"Piątek","Saturday":"Sobota","Sunday":"Niedziela","Action":"Action","Comedy":"Komedia","War":"Wojna","Family":"Family","Animation":"Animation","Adventure":"Adventure","Fantasy":"Fantasy","Crime":"Crime","Mystery":"Mystery","Romance":"Romans","Drama":"Dramat","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Music","Biography":"Biography","Documentary":"Documentary","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Filmy","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"nowy film","new episode":"nowy odcinek","new movie":"nowy film","recommended":"polecane","we recommend":"polecamy","offer of the day":"offer of the day","news":"aktualności","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Odrzuć powiadominie","CTX_DISMISS_ALL":"Odrzuć wszystkie","CTX_SHARE":"Udostępnij","CTX_COPY_SHARE_LINK":"Kopiuj link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Pokaż","CTX_PLAY":"Odtwórz","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Oglądaj","CTX_WATCHED":"Obejrzane","CTX_WATCH_BEGINNING":"Obejrzyj od początku","CTX_WATCH_MOBILE":"Obejrzyj na urządzeniu mobilnym","CTX_REWIND":"Przewiń do początku","CTX_MARK_WATCHED":"Oznacz jako obejrzane","CTX_MARK_NON_WATCHED":"Oznacz jako nieobejrzane","CTX_MARK_UNWATCHED":"Oznacz jako nieoglądane","CTX_MARK_REST":"Oznacz resztę jako obejrzane","CTX_UNMARK_REST":"Oznacz resztę jako nieobejrzane","CTX_RECEIVE_NEW_NOTIF":"Otrzymuj nowe powiadomienia","CTX_REMOVE_CACHE":"Usuń z pamięci podręcznej","CTX_REMOVE_CACHE_EP":"Usuń odcinek z pamięci podręcznej","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Usuń z Biblioteki","CTX_AVAILABLE_OFFLINE":"Dostępne offline","CTX_PAUSED":"Zatrzymane","CTX_ALWAYS_ON_TOP":"Zawsze na wierzchu","CTX_FULLSCREEN":"Tryb pełnoekranowy","CTX_WRONG_SUBS":"Złe napisy?","CTX_REPORT_ISSUES":"Wyślij raport o błędzie","CTX_COPY":"Kopiuj","CTX_PASTE":"Wklej","CTX_CLEAR":"Wyczyść","CTX_CLEAR_RECENT_SEARCHES":"Wyczyść ostatnie wyszukania","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"Moje dodatki","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Wyszukaj dodatki","ADDON_INSTALL":"Zainstaluj","ADDON_CONFIGURE":"Konfiguruj","ADDON_UNINSTALL":"Odinstaluj","ADDON_UPGRADE":"Zaktualizuj","ADDON_INSTALLED":"Zainstalowany","ADDON_INSTALLED_MSG":"Dodatek zainstalowany!","ADDON_UPGRADED_MSG":"Dodatek zaktualizowany!","ADDON_UNKNOWN":"Nieznany","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Instaluj teraz","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You Can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Dodatki","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filmy","WEBSITE_TYPE_series_PL":"Seriale","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Kanały","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Często zadawane pytania","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Pytania","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"O","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"O Nas","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"Więcej","WEBSITE_LINK_ADDONS":"Dodatki","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Społeczność","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Polityka prywatności","WEBSITE_SUBSCRIBE":"Subscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Twój email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"Zespół","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Funkcjonalność","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Dodatki","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Stwórz dodatek","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Dodatki Stremio","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Tapety","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Kontakt","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Twój e-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Wiadomość","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"Wyślij","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Dodatki","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Styl życia","SPORTS":"Sporty","FOOD_HEALTH":"Jedzenie i zdrowie","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Muzyka","TRAVEL":"Podróż","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Komedia","DIY":"How to DIY","TECH":"Tech","CINEMA":"Kino","CONTINUE":"Kontynuuj","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Dowiedz się więcej","POOR_SOURCE":"To źródło jest słabo dostępne, albo twoje połączenie z internetem nie jest wystarczająco szybkie","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"Możesz wyszukać cokolwiek...","ALL_CATEGORIES":"Wszystkie","SEARCH_CATEGORIES":"Filmy, seriale, YouTube i TV","SEARCH_PERSONS":"Aktorzy, reżyserzy i scenarzyści","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Obejrzane","SHOW_LESS":"Pokaż mniej","LAST_SEARCHES":"Ostatnie wyszukiwania","CLEAR_HISTORY":"Wyczyść historię","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio jest offline","STREMIO_EXPENSIVE_CONNECTION":"Wykryliśmy, że korzystasz z połączenia mobilnego,czy chcesz kontynuować?","USE_DATA":"Use data","WARNING":"Ostrzeżenie","MORE_INFO":"Więcej informacji...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Ładowanie...","STREMIO_TV_BACK_TO_LANGUAGES":"Wróć do języków","STREMIO_TV_REMOTE":"Zdalny","STREMIO_TV_GO_TO":"Przejdź do:","STREMIO_TV_OR_SCAN":"lub zeskanuj:","STREMIO_TV_ADDON_INSTRUCTIONS":"Podążaj za instrukcjami w celu instalacji twoich preferowanych dodatków.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Wznów oglądanie","STREMIO_TV_LOADING_BACKGROUND":"Ładowanie tła","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Zespół Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Połącz z:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Domyślny","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Po ostatnio oglądanym","STREMIO_TV_LIBRARY_SORT_NAME":"Po nazwie","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Po ilości obejrzeń","STREMIO_TV_DETAILS_SEASON_NUMBER":"Sezon ${1}","STREMIO_TV_STREAMS_LOADING":"Załadowano ${1} z ${2} dodatków...","STREMIO_TV_STREAMS_STILL_LOADING":"Dodatek ${1} jeszcze się ładuje...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Notka: upewnij się, że używasz tego samego konta Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Zsynchronizuj dodatki","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Pomyślnie zsynchronizowano dodatki","STREMIO_TV_ADDONS_SYNC_FAILED":"Niepowodzenie synchronizacji dodatków","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Uaktualniono motyw","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Domyślny odtwarzacz","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"Zewnętrzny odtwarzacz","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferowany język","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Drugorzędny preferowany język","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Bez pamięci podręcznej","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Domyślny","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Miękki","STREMIO_TV_SETTINGS_PROFILE_FAST":"Szybki","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra szybki","STREMIO_TV_SETTINGS_SERVER_URL":"URL serwera streamingowego","STREMIO_TV_SETTINGS_SERVER_VERSION":"Wersja Serwera","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Nieznany","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Wersja Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edytuj URL serwera","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Wyszukaj","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Biblioteka","STREMIO_TV_NAV_MOVIES":"Filmy","STREMIO_TV_NAV_SERIES":"Seriale","STREMIO_TV_NAV_CHANNELS":"Kanały","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Ustawienia","STREMIO_TV_NAV_ADDONS":"Dodatki","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Wygasa za","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Kod logowania odświerzony","STREMIO_TV_SEARCH_PLACEHOLDER":"Wpisz coś","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Szukaj","STREMIO_TV_SEARCH_KEY_DEL":"Usuń","STREMIO_TV_SEARCH_KEY_SPACE":"Spacja","STREMIO_TV_SEARCH_KEY_CLEAR":"Wyczyść","STREMIO_TV_SEARCH_HISTORY_TITLE":"Historia wyszukiwania","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Możesz wyszukać tytuł, aktora, kanał i więcej...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Wyczyść historię wyszukiwania","STREMIO_TV_FILTERS_DESCRIPTION":"Wybierz jeden z poniższych filtrów","FILTERS":"Filtry","SETTINGS":"Ustawienia","ACCOUNT":"Konto","LOGOUT":"Wyloguj","THEMES":"Motywy","PLAYBACK":"Odtwarzanie","PLAYBACK_SPEED":"Prędkość odtwarzania","AUDIO_TRACKS":"Ścieżki dźwiękowe","VIDEOS":"Filmy","SERVER":"Serwer","LINKS":"Linki","ABOUT":"O","INTERFACE":"Interface","ANIMATIONS":"Animacje","STATUS":"Status","LANGUAGE":"Język","SIZE":"Rozmiar","DELAY":"Opóźnienie","BOLD":"Pogrubienie","TEXT_COLOR":"Kolor tekstu","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Kolor tła","BACKGROUND_BLUR":"Rozmycie tła","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Automatycznie uruchom następny odcinek","PLAY_NOW":"Odtwórz teraz","MARK_AS_WATCHED":"Oznacz jako obejrzane","MARK_AS_UNWATCHED":"Oznacz jako nieobejrzane","REWIND_TO_BEGINNING":"Od początku","CONTINUE_WATCHING":"Kontynuuj oglądanie","ALL":"Wszystko","SECONDS":"sekundy","ON":"Wł.","OFF":"Wył.","RELOAD":"Przeładuj","EDIT_URL":"Edytuj URL","NONE":"Brak","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Filmy","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Dopasuj rozmiar","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Ponów","TORRENT_PROFILE_DEFAULT":"Domyślny","TORRENT_PROFILE_SOFT":"Miękki","TORRENT_PROFILE_FAST":"Szybki","TORRENT_PROFILE_ULTRA_FAST":"Ultra szybki","FAQ_001_H1":"Czym jest Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},2012:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filme","TYPE_series":"Série","TYPE_tv":"Canal de TV","TYPE_channel":"Canal","TYPE_other":"Outros","TYPE_movie_PL":"Filmes","TYPE_series_PL":"Séries","TYPE_tv_PL":"Canais de TV","TYPE_channel_PL":"Canais","TYPE_other_PL":"Outros","TYPE_ALL":"All","VIDEO":"Vídeo","BACK":"Voltar","MORE":"Mais","DONE":"Concluído","COPY":"Copiar","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Descubra","Board":"Painel","Library":"Biblioteca","My Library":"Minha Biblioteca","Calendar":"Calendário","NOTIFICATION_ONLINE":"Você está online","NOTIFICATION_OFFLINE":"Você está offline","INTERNET_CONNECTION":"Conexão de rede","STORAGE_FULL_TITLE":"Aviso: Disco cheio!","STORAGE_FULL_TEXT":"Stremio não será capaz de salvar suas configurações, preferências ou informações de login. Considere reiniciar ou reinstalar o Stremio.","SEARCH":"Buscar","SEARCH_NO_RESULTS":"Nenhum resultado encontrado","SEARCH_EXPLANATION_CONTENT":"Procure por filmes, séries, canais do YouTube e da TV","SEARCH_EXPLANATION_PEOPLE":"Procure por atores, diretores e escritores","SEARCH_PASTE_LINKS":"Cole links HTTP ou Magnéticos","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Adicionar à Biblioteca","REMOVE_FROM_LIB":"Remover da Biblioteca","ADDED_TO_LIB":"Adicionado à Biblioteca","REMOVED_FROM_LIB":"Removido da Biblioteca","TRAILER":"Trailer","WATCH_TRAILER":"Assistir ao Trailer","WATCH_NOW":"Assistir Agora","SHOW":"Mostrar","SHOW_MOVIE":"Exibir filme","WATCH_RANDOM":"Assistir Aleatoriamente","IMDB_RATING":"Avaliação IMDB","YEAR":"Ano","DIRECTOR":"Diretor","WRITER":"Escritor","LEAD_ACTORS":"Atores Principais","CAST":"Elenco","CREW":"Equipe técnica","SHOW_MORE_CAST":"Mostrar mais »","AIRED":"Foi ao ar em","SEASONS":"Temporadas","GENRE":"Gêneros","CATALOG":"Catálogo","SUMMARY":"Resumo","SHOW_MORE":"Mostrar mais","SIMILAR":"Parecidos","UPCOMING":"Próximos","ENDED":"Finalizados","DURATION":"Duração","FEATURED":"Destaque","METADATA":"Dados de Descrição","CATEGORY":"Categoria","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Pesquisar vídeos","SEARCH_PLACEHOLDER":"Buscar ou colar links","ADDON":"Addon","ADDONS":"Addons","OFFICIAL":"Oficial","ADDONS_OFFICIAL":"Addons Oficiais do Stremio","ADDONS_POPULAR":"Populares na sua região","ADDON_FREE":"Gratuito","ADDON_PEERED":"pareado","ADDON_SUBSCRIPTION":"assinatura","ADDON_STREAM_GEORESTRICTED":"indisponível na sua área","ADDON_STREAM_OFFLINECACHE":"Cache Offline","ADDON_STREAM_LOCALFILE":"Arquivo Local","SHARE_ADDON":"Compartilhar Addon","AVAILABLE_STREAMS":"Transmissões Disponíveis","NO_STREAM":"Nenhuma transmissão encontrada","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Para mais transmissões, por favor instale mais Addons","STREAM_NOT_SUPPORTED":"A transmissão selecionada não é suportada nesta plataforma.","ADDON_CATALOGUE":"Mostrar todas os Addons »","ADDON_CATALOGUE_MORE":"Instalar Addons","REPO_ADDED":"Repositório adicionado","ADDON_REPO_EXIST_ERR":"Este repositório de Addons já existe","ADDON_REPO_ERR":"Ocorreu um erro ao adicionar o repositório","ADDON_ADD_ERR":"Ocorreu um erro ao adicionar o Addon","ERR_ADDON_PROTECTED":"Não é possível desinstalar o Addon, ele está protegido","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Algo deu errado - a autenticação pode ter falhado","ERR_NOT_COLLECTION_URL":"Não é uma URL de coleção","ERR_NOT_ADDON_URL":"Não é uma URL de Addon válida","ERR_DETECTFROMURL":"Não foi possível encontrar um Addon/coleção para essa URL","ADDON_DUPLICATE_WARNING":"Aviso: Addon duplicado","ADDON_COLLECTION_SET_FAILED":"Falha ao sincronizar seus Addons instalados com sua conta","SETTINGS_DATA_EXPORT":"Exportar dados","ADDON_PULL_FAILED":"Falha ao sincronizar Addons instalados de sua conta","REFRESH_ON_CLICK":"Clique para tentar novamente","STILL_IN_THEATER":"Filme ainda em exibição","WATCH_IN_CINEMA":"Assista no cinema mais próximo","IN_THEATER":"No cinema","GET_TICKETS":"Obter ingressos","UPCOMING_EPISODE":"Próximo episódio","UPCOMING_EPISODE_MESSAGE":"Esse episódio irá ao ar em","MISSING_DATE_EPISODE":"Sem data do episódio","MISSING_DATE_EPISODE_MESSAGE":"Esse episódio pode não ter ido ao ar ainda","CHANNEL_NOT_SCRAPED":"Este canal ainda não foi extraído.
    Por favor, retorne em alguns minutos.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Adicione à sua biblioteca para receber notificações quando estiver disponível.","GET_NOTIFIED_WHEN_AVAILABLE":"Você será notificado quando estiver disponível.","WARNING_STREAMING_SERVER":"Atenção: servidor local de transmissão não encontrado. Transmissões de arquivos locais, YouTube e BitTorrent não estarão disponíveis.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Aviso: este vídeo pode não ser suportado pelo seu hardware. Tenha em mente que a reprodução pode ser lenta.","PLAYER_ERROR":"Oops, ocorreu um erro no reprodutor de mídia","PLAYER_ERROR_LOOKSLIKE":"Parece que","PLAYER_ORIENTATION":"Orientação do reprodutor de mídia","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Travado","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Reprodutor de mídia travado para o modo paisagem","PLAYER_ORIENTATION_SENSOR":"Reprodutor de mídia automático (sensor)","PLAYER_PLAYBACK_SPEED":"Velocidade de reprodução","PLAYER_PLAYBACK_ERROR":"Erro de reprodução, tente novamente","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Erro desconhecido","PLAYER_PLAYBACK_ERROR_DEFAULT":"Desculpe, esse vídeo não poder ser reproduzido por {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Ao vivo","PLAYER_NEXT_VIDEO_TITLE":"A seguir","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dispensar","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Assistir agora","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Transmitindo de","CASTING_TO":"Transmitindo para","NETWORK_STATUS":"Estado da rede","STREAM_SPEED":"Velocidade da transmissão:","STREAM_BUFFERED":"Carregado:","PEERS_INFO":"Informações dos Pares","PEERS_ACTIVE":"Ativo:","PEERS_CONNECTED":"Conectado:","PEERS_WAITING":"Aguardando:","TRANSCODING_WARNING":"Atenção: transcodificando vídeo.","STREAM_LOADING":"Carregando...","PLAYING_LOCAL":"Reproduzir de um arquivo local","PLAYING_CACHE":"Reproduzir a partir do cache","WRONG_SUBS":"Legendas erradas?","ERR_SUBS_LOADING_TITLE":"Erro ao carregar a legenda","ERR_SUBS_LOADING":"Falha ao carregar as legendas: Isso pode ser um problema com seu Addon ou sua conexão de rede","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Os seguintes Addons de legenda falharam","ERR_CASTING_UPDATE_TITLE":"Não foi possível atualizar as informações do dispositivo de transmissão: o servidor de transmissão pode estar offline","CHOOSE_DEVICE":"Escolha um dispositivo para assistir","NO_CAST_DEVICES":"Sem dispositivos de transmissão disponíveis.","NO_SETTINGS":"Configurações não disponíveis.","PHONE_TABLET":"Smartphone / Tablet","SUBTITLES":"Legendas","SUBTITLES_CHANGE":"Modificar legendas para ","SUBTITLES_CHANGE_NONE":"Não há outra legenda para este idioma, desculpe.","SUBTITLES_CHANGE_ACIVE":"A legenda #{{subtitlesDialog.activeIdx + 1}} está ativada. Clique \\"Continuar\\" para ativar a legenda #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativamente,","SUBTITLES_ADJUST_DELAY":"Ajustar atraso da legenda:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Ou use as teclas G / H durante a reprodução para ajustar.","SUBTITLES_ADJUST_DELAY_TIP":"DICA: Você pode usar as teclas G / H durante a reprodução para ajustar.","SUBTITLES_DELAY":"Atraso das legendas:","SUBTITLES_LOADING":"Carregando legendas...","SUBTITLES_UNAVAILABLE":"Legendas externas não disponíveis","SUBTITLES_DISABLED":"Desativado","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Áudio","DEFAULT_LANGUAGE":"Idioma Padrão","DEFAULT_SECONDARY_LANGUAGE":"Idioma Padrão Secundário","SEASON":"Temporada","EPISODE":"Episódio","SPECIAL":"Especial","SORT":"ordenar","SORT_BY":"Ordenar por","FILTER":"Filtrar","SORT_TRENDING":"Em alta","SORT_RECENT":"Recente","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"Classificação","SORT_WATCHED":"Assistido","SORT_YEAR":"Ano","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Novo para Você","New Episodes":"Novos Episódios","New Videos":"Novos Vídeos","Recommendations":"Recomendações","LIBRARY_RESUME":"Retomar","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Detalhes","LIBRARY_RESUME_DISMISS":"Dispensar","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Destaque","DISCOVER_TOP":"Topo","DISCOVER_OSCAR":"Vencedores do Oscar","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"Este Addon não possui conteúdo.","DISCOVER_ADULT_WARNING":"Este conteúdo está disponível apenas para maiores de idade. Você tem mais de 18 anos?","DISCOVER_NOADDON_WARNING":"Atenção: nenhum Addon do Stremio ativa para este tipo. Mostrando itens salvos, nada aqui será atualizado.","DISCOVER_LOAD_ERR":"O conteúdo não foi carregado, ocorreu um erro.","DISCOVER_ADDON_UNINSTALLED":"Este conteúdo não está mais disponível, você deve ter desinstalado o Addon.","UNINSTALL_THIS_ADDON":"Remover este Addon","ERR_ADDON_NOT_INSTALLED":"Este Addon não está instalado. Instalar agora?","DETAIL_RECEIVE_NOTIF_SERIES":"Receber notificações de novos episódios","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receber notificações de novos vídeos","SIDEBAR_SHOW_STREAMS":"Exibir Streams","RELAUNCH":"Reinicie agora!","UPGRADE":"Nova versão disponível! Atualize para a versão mais recente do Stremio","RELOAD_UI":"Recarregar a interface do usuário","MANUAL_UPDATE_TITLE":"Atualize sua versão do Stremio","MANUAL_UPDATE_LINE1":"Você está executando uma versão desatualizada do Stremio, o que é altamente não recomendado.","MANUAL_UPDATE_LINE2":"Por favor, atualize o mais rápido possível.","BUTTON_UPDATE_LATTER":"Agora não","BUTTON_UPDATE_NOW":"Atualizar","ANONYMOUS_USER":"Usuário anônimo","DONT_HAVE_ACC":"Não possui uma conta?","HAVE_ACC":"Já possui uma conta?","PASSWORD":"Senha","PASSWORD_CONFIRM":"Confirmar senha","EMAIL":"E-mail","FB_LOGIN":"Conectar-se via Facebook","FB_NOTHINGSHARED":"Nada é compartilhado sem sua permissão","FB_NOPOST":"Não iremos postar nada em seu nome","OR":"ou","I_ACCEPT":"Eu aceito os","I_ACCEPT_BY_CLICKING":"Ao clicar no botão acima, comprovo que aceito o ","TOS":"Termos e Condições","MUST_ACCEPT_TERMS":"Você deve aceitar os termos","PASSWORDS_NOMATCH":"As senhas não coincidem","SIGN_UP":"Cadastrar","SIGN_UP_EMAIL":"Registre-se com email","CLICK_TO_SIGN_UP":"Clique aqui para se registrar","LOG_IN":"Conectar","LOG_OUT":"Desconectar","EXIT_FULLSCREEN":"Sair do modo de tela cheia","ENTER_FULLSCREEN":"Entrar em modo de tela cheia","PLAY_URL_MAGNET_LINK":"Reproduzir URL/Link Magnético","HELP_FEEDBACK":"Ajuda & Feedback","TERMS_OF_SERVICE":"Termos de serviço","PRIVACY_POLICY":"Política de Privacidade","ABOUT_STREMIO":"Sobre o Stremio","USER_PANEL":"Painel de Usuário","LOGIN_LABEL":"Login","GUEST_LOGIN":"Entrar como convidado","GUEST_LOGIN_NOTICE":"Entrar como convidado não é recomendado. Usar um conta padrão permite que o Stremio sincronize sua Biblioteca, receba notificações de séries/canais favoritos. Você tem certeza que deseja prosseguir?","GUEST_LOGIN_NOTICE_2":"Entrar como convidado não é recomendado - você não terá uma Biblioteca sincronizada e um Painel de notificações, que são características vitais do Stremio. Você tem certeza que deseja prosseguir?","CLICK_HERE":"clique aqui","WRONG_PASSWORD":"E-mail ou senha errada. Caso tenha esquecido sua senha, ","SET_A_PASS":"Defina uma senha","RESET_PASSWORD":"Redefinir a senha","FORGOT_PASSWORD":"Esqueceu a senha?","EMAIL_USED_WITH_FB":"Este e-mail foi utilizado com uma conta do Facebook.","INVALID_EMAIL":"Por favor, informe um e-mail válido","INVALID_PASSWORD":"Por favor, informe a senha correta","CONN_ERR":"Erro de conexão - por favor, tente novamente mais tarde.\\n\\nSe isso persistir, desabilite firewalls/antivírus (principalmente o Bitdefender).","IMPORT_FROM_GUEST":"Importar biblioteca da sua conta de convidado","RECEIVE_UPDATES_EMAIL":"Receber atualizações do Stremio no seu e-mail","LOGIN_FAILED":"Login falhou.","SIGNUP_FAILED":"Cadastro falhou.","SEARCH_FAILED":"Busca falhou","EMAIL_USED":"Este e-mail já está em uso.","WAITING_FB_LOGIN":"Entrando com a conta do Facebook...","EXTERNAL_PLAYER_TITLE":"Abrir com um reprodutor de vídeo externo","EXTERNAL_REMEMBER_PLAYER":"Você quer lembrar da sua escolha?","EXTERNAL_ALWAYS_PLAY":"Sim","EXTERNAL_ONLY_ONCE":"Não","BEST_FIT":"Melhor ajuste","FIT_SCREEN":"Tela de ajuste","FILL":"Preencher","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Conte-nos do que gosta","INTRO_TASTE_LONG":"Conte-nos o que gostaria de assistir","INTRO_TASTE_PICK":"Escolha {{interestsRemaining}} interesses","INTRO_TASTE_PICK_MORE":"Escolha {{interestsRemaining}} mais interesses","INTRO_TASTE_HELP_US":"Ajude-nos a saber mais sobre você.","INTRO_TASTE_CHOOSE_THESE":"Escolha alguns destes:","INTRO_TASTE_CHOOSE_MIN":"Escolha ao menos 3 categorias","INTRO_TASTE_CHOOSE_MIN_ERR":"Você precisa escolher ao menos 3 categorias!","INTRO_TASTE_LIFESTYLE":"Estilo de vida","INTRO_TASTE_SPORTS":"Esporte","INTRO_TASTE_FOOD_HEALTH":"Gastronomia e Saúde","INTRO_TASTE_BEAUTY_FASHION":"Moda e Beleza","INTRO_TASTE_NEWS":"Notícias","INTRO_TASTE_GAMING":"Jogos","INTRO_TASTE_SCIENCE_EDU":"Ciência e Educação","INTRO_TASTE_MUSIC":"Música","INTRO_TASTE_TRAVEL":"Viagens","INTRO_TASTE_LATE_NIGHT":"Programas noturnos","INTRO_TASTE_REALITY":"Realidade","INTRO_TASTE_COMEDY":"Comédia","INTRO_TASTE_DIY":"Faça você mesmo","INTRO_TASTE_TECH":"Tecnologia","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"O Addon selecionado não é suportada nesta plataforma.","ADDON_DISCLAIMER":"Usando um Addon de terceiros você estará se auto responsabilizando de acordo com as leis do governo de sua região.","ADDON_ACTIVATE":"Deseja ativar este Addon?","ADDON_REPO_ADD":"Endereço do repositório do Addon","ADDON_ADD":"Adicionar","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"O que há de novo","BUTTON_CONTINUE":"Continuar","BUTTON_ACTIVATE":"Ativar","BUTTON_ACTIVATED":"Ativado","BUTTON_CANCEL":"Cancelar","BUTTON_SUBMIT":"Enviar","BUTTON_DISMISS_ALL":"Dispensar tudo","BUTTON_VIEW_ALL":"ver tudo","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Sua biblioteca parece vazia. Descubra como ela é útil :) ","HOW_START":"Aqui está como você pode começar:","LIB_EMPTY_CAL":"Seu calendário mostra as séries na sua Biblioteca.","HOW_START_CAL":"Aqui está como você pode adicionar séries:","LIB_EMPTY_BOARD":"O Painel mostra notificações & recomendações relacionadas à sua Biblioteca.","HOW_START_BOARD_WAIT":"Por favor, adicione algumas séries ou canais à sua Biblioteca e nos dê um momento para processá-las :)","HOW_START_BOARD":"Aqui está como você pode adicionar séries & filmes nele:","IMPORT_FB":"Importe coisas que você gosta do Facebook","IMPORT_TRAKT":"Importe sua biblioteca de mídia do Trakt","IMPORT_DISCOVER":"Encontre coisas interessantes no Descubra","IMPORT_DISK":"Importe filmes ou shows que você tem no seu disco local","PLEASE_CREATE_ACC":"Por favor, crie uma conta para ativar a sincronização de Biblioteca & Painel.","IMPORT_DISCOVER_SIGNUP":"Registre-se e encontre coisas interessantes no Descubra","IMPORT_DISK_SIGNUP":"Cadastre-se e importe filmes ou shows que você tem em seu disco local","LIB_EMPTY_CLOUD":"Biblioteca na nuvem","LIB_EMPTY_CLOUD_DESC":"Biblioteca pessoal na nuvem sincronizada em todos os dispositivos","LIB_EMPTY_EARLY":"Madrugador","LIB_EMPTY_EARLY_DESC":"Receber notificações de novos episódios","LIB_EMPTY_PERSONAL":"Pessoal","LIB_EMPTY_PERSONAL_DESC":"Receber recomendações pessoais","LIB_EMPTY_CALENDAR_DESC":"Agende no seu calendário pessoal para assistir","LIB_EMPTY_ALL":"Registre-se para obter tudo isto:","LIB_EMPTY_BEST":"Cadastre-se para ter o melhor do Stremio","LIB_EMPTY_OTHER":"Registre-se para habilitar o calendário e outras funções fantásticas","CALENDAR_ADDED":"O calendário Stremio foi adicionado ao seu calendário padrão.","CALENDAR_ADDED_MSG":"Se isso não funcionar, por favor, adicione este endereço no seu calendário manualmente","TRAKT_EXPIRED":"A autenticação do Trakt expirou, vá até as Configurações e autentique novamente.","TRAKT_REQUIRES_LOGIN":"Erro no serviço Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Você precisa fazer login","SETTINGS_LABEL":"Configurações","SETTINGS_NAV_GENERAL":"Geral","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Atalhos","SETTINGS_SHORTCUT_RELOAD_APP":"Recarregar Aplicativo","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Abrir Configurações","SETTINGS_SHORTCUT_SWITCH_TABS":"Alternar Guias","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Percorrer as guias para a frente","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Percorrer abas para trás","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Sair / Voltar","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Alternar para o modo tela cheia","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Mostrar controles","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Aumentar o volume","SETTINGS_SHORTCUT_VOLUME_DOWN":"Abaixar o volume","SETTINGS_SHORTCUT_SEEK_NEXT":"Procurar próximo","SETTINGS_SHORTCUT_SEEK_PREV":"Procurar anterior","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Reproduzir próximo","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Aumentar o tamanho das legendas","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Diminuir o tamanho das legendas","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Aumentar o atraso das legendas","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Diminuir o atraso das legendas","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Alternar barra lateral","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Iniciar com o sistema","SETTINGS_VLC_DEFAULT":"Reproduzir no VLC","SETTINGS_UI_LANGUAGE":"Idioma da interface","SETTINGS_FULLSCREEN_EXIT":"Aperte ESC para sair da tela cheia","SETTINGS_GAMEPAD":"Ativar suporte a gamepad","SETTINGS_CLOSE_WINDOW":"Fechar aplicativo quando a janela for fechada","SETTINGS_SUBTITLES_LANGUAGE":"Idioma padrão de legendas","SETTINGS_SUBTITLES_SIZE":"Tamanho padrão de legendas","SETTINGS_SUBTITLES_BACKGROUND":"Fundo das legendas","SETTINGS_SUBTITLES_COLOR":"Cor das legendas","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Cor de contorno das legendas","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Cor de fundo das legendas","SETTINGS_SEEK_KEY":"As teclas de seta procuram o tempo","SETTINGS_SEEK_KEY_SHIFT":"As teclas de seta procuram o tempo quando a tecla Shift é pressionada","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Reproduzir automaticamente o próximo episódio","SETTINGS_NEXT_VIDEO":"Mostrar notificação para iniciar o próximo episódio.","SETTINGS_NEXT_VIDEO_TRIGGER":"Mostrar uma notificação ao iniciar o próximo episódio para:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Redimensionar automaticamente a janela antes de reproduzir","SETTINGS_OVERRIDE_SERVER":"Substituir a URL do servidor de streaming (avançado)","SETTINGS_SERVER_URL":"URL do servidor de Streaming: ","SETTINGS_SERVER_AVAILABLE":"O servidor de Streaming está disponível.","SETTINGS_SERVER_UNAVAILABLE":"O servidor de Streaming não está disponível.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Sempre usar a versão Beta mais recente","SETTINGS_IMPORT_FB":"Importar do Facebook","SETTINGS_IMPORT_DISK":"Importar do disco local","SETTINGS_IMPORT_TRAKT":"Importar do Trakt","SETTINGS_PAUSE_MINIMIZED":"Pausar reprodução quando minimizado","SETTINGS_HWDEC":"Decodificação acelerada por Hardware","SETTINGS_BACKGROUND":"Reprodução em segundo plano","SETTINGS_SUBSCRIBE_CALENDAR":"Inscrever-se no calendário","SETTINGS_REQ_EXPORT":"Exportar dados","SETTINGS_ACC_DELETE":"Solicitar exclusão de conta","SETTINGS_CHANGE_PASSWORD":"Alterar a senha","SETTINGS_TOS":"Termos de serviço","SETTINGS_SUPPORT":"Contate o suporte","SETTING_LANGUAGE":"Idioma","SETTINGS_TRAKT":"Recomendações do Trakt","SETTINGS_TRAKT_LOGOUT":"Sair do Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Escaneie o código QR para abrir remotamente","SETTINGS_DESKTOP_NOTIFICATIONS":"Notificações da área de trabalho","SETTINGS_DATA_SAVER":"Economizador de Dados","SETTINGS_LANGUAGE_INTERFACE":"Interface","SETTINGS_LANGUAGE_SUBS":"Legenda padrão","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Seleção automática de trilha de áudio","SETTINGS_DEFAULT_AUDIO_TRACK":"Trilha de áudio padrão","SETTINGS_ACCOUNT":"Conta","SETTINGS_VERSION":"Versão","SETTINGS_MPV_WINDOW":"Executar em uma janela separada (avançado)","SETTINGS_PLAY_IN_EXTERNAL":"Sempre iniciar vídeo em player externo","SETTINGS_STORAGE_BUTTON":"Limpar armazenamento local","SETTINGS_STORAGE_MODAL_TITLE":"Você tem certeza?","SETTINGS_STORAGE_MODAL_MESSAGE":"Isso limpará o armazenamento local e terminar a sua sessão.","SETTINGS_HWDEC_PICKER":"Escolha a configuração de decodificação acelerada por hardware","SETTINGS_HW_AUTOMATIC":"Automático","SETTINGS_HW_DISABLED":"Desativado","SETTINGS_HW_ACCELERATED":"Aceleração de decodificação","SETTINGS_HW_FULL":"Aceleração total","SETTINGS_HW_LEGACY":"Legado","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Áudio","SUBSPICKER_SUBTITLES":"Addons de Legendas","SUBSPICKER_BLACK_BACKGROUND":"Usar cor de fundo preta","SUBSPICKER_VERTICAL_OFFSET":"Deslocamento Vertical","SUBSPICKER_SIZE":"Tamanho","SUBSPICKER_DELAY":"Atraso","SUBSPICKER_EMBEDDED_SUBS":"Legendas Embutidas","MOBILE_PRIVACY_POLICY":"Política de Privacidade","MOBILE_CRASH_REPORTING":"Relatório de falhas","MOBILE_ZOOM_TO_FILL":"Zoom para preencher a tela","MOBILE_PASSTHROUGH":"Saída de áudio digital (passthrough)","MOBILE_RUN_LOW_BATTERY":"Executar com bateria fraca","MOBILE_RUN_FOREGROUND":"Executar como serviço em primeiro plano","MOBILE_PERFORMANCE":"DESEMPENHO E ESTABILIDADE","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expira em ","MOBILE_LOG_INTO":"Faça login na sua conta Stremio ","MOBILE_SCAN_QR":"Escaneie o código QR acima ou acesse ","MOBILE_LINK_ACCOUNT":"Vincular conta","MOBILE_SPEEDPICKER_CANCEL":"Cancelar","MOBILE_SPEEDPICKER_LABEL":"Selecione a velocidade de reprodução","MOBILE_EMPTY_LIBRARY":"Sua biblioteca está vazia","MOBILE_NO_ADDON_ACTIVE":"Nenhum Addon Stremio ativo para este tipo.","MOBILE_ORGANIZER_WARNING":"O aplicativo Stremio Organizer oferece funcionalidade limitada. Para obter uma lista de streams reproduzíveis e a experiência completa do Stremio, use o Stremio no desktop.","MOBILE_ADDON_LOADING":"ainda está carregando","MOBILE_ADDONS_LOADING":"os Addons ainda estão carregando","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure seu Addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configurar Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"O aplicativo Stremio Organizer oferece funcionalidade limitada. Para obter uma lista de streams reproduzíveis e a experiência completa do Stremio, use o Stremio no desktop.","MOBILE_DISCONNECT":"Desconectar","MOBILE_LOOKING_FOR_DEVICES":"Procurando dispositivos...","MOBILE_CAST_TO":"Transmitir para","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"Concordo em receber comunicações de marketing do Stremio","QUIT":"Sair","CONNECTED":"Conectado","AUTHENTICATE":"Autenticar","CACHING":"Em Cache","SETTINGS_CACHING_DRIVE":"Selecione o drive para cache","ENABLE_LOCAL_FILES_ADDON":"Habilite o Addon de arquivos locais (requer reinicialização)","LOCAL_ADDON_NOT_ENABLED":"O Addon local não está ativado. Clique aqui para ir para as configurações e habilitá-lo","ENABLE_REMOTE_HTTPS_CONN":"Habilitar conexões HTTPS remotas","TORRENT_PROFILE":"Perfil de Torrent","DATA_CACHING":"Dados em cache","MAGNET_PARSING":"Analisando o link magnético","January":"Janeiro","February":"Fevereiro","March":"Março","April":"Abril","May":"Maio","June":"Junho","July":"Julho","August":"Agosto","September":"Setembro","October":"Outubro","November":"Novembro","December":"Dezembro","Monday":"Segunda","Tuesday":"Terça","Wednesday":"Quarta","Thursday":"Quinta","Friday":"Sexta","Saturday":"Sábado","Sunday":"Domingo","Action":"Ação","Comedy":"Comédia","War":"Guerra","Family":"Família","Animation":"Animação","Adventure":"Aventura","Fantasy":"Fantasia","Crime":"Policial","Mystery":"Mistério","Romance":"Romance","Drama":"Drama","Horror":"Terror","Thriller":"Suspense","Sci-Fi":"Ficção Científica","Music":"Música","Biography":"Biografia","Documentary":"Documentário","Sport":"Esporte","Musical":"Musical","Western":"Faroeste","Film-Noir":"Film-Noir","News":"Notícias","History":"História","Game-Show":"Show de Jogos","Reality-TV":"Show Real","Talk-Show":"Programa de Entrevista","Film & Entertainment":"Filmes e Entretenimento","Gaming":"Jogos","From TV":"Da TV","Lifestyle":"Estilo de Vida","Science & Education":"Ciência e Educação","Cooking & Health":"Culinária e Saúde","Beauty & Fashion":"Beleza e Moda","Sports":"Esportes","News & Politics":"Notícias e Política","How-to & DIY":"Faça Você Mesmo","Tech":"Tecnologia","Automotive":"Automotivo","Causes & Non-Profits":"Causas Humanitárias","Movies":"Filmes","Uk Live Tv":"TV Inglesa","Fashion":"Moda","Business News Radio":"Rádio de Negócios","Business Tv":"Negócios","Cars & Auto":"Carros","Comedy Radio":"Rádio de Comédia","Lifestyle Radio":"Rádio de Estilo de Vida","News Tv":"Noticiário","Food And Wine":"Comes e Bebes","Latino Tv":"TV Latina","Shopping Tv":"Compras","Religion":"Religião","Kids":"Infantil","Body & Soul":"Corpo e Alma","Education":"Educação","Indian Tv":"TV Indiana","Extreme Sports":"Esportes Extremos","Middle Eastern Tv":"TV do Oriente Médio","Celebrity Tv":"Celebridades","Science Tv":"Ciência","Bikini babe":"Biquíni","Outdoors":"Externas","German Tv":"TV Alemã","French Tv":"TV Francesa","Italian Tv":"TV Italiana","Gamer Tv":"TV Gamer","Travel":"Viagens","Asian Tv":"TV Asiática","Entertainment":"Entretenimento","News Radio":"Rádio de Notícias","Music Radio":"Rádio de Música","Language Learning":"Aprendendo Idiomas","Science Radio":"Rádio de Ciência","Tech Radio":"Rádio de Tecnologia","Science & Technology Vod":"Ciência e Tecnologia Video Sob Demanda","new video":"Novo video","new episode":"Novo episódio","new movie":"Filme novo","recommended":"Recomendado","we recommend":"Nós recomendamos","offer of the day":"Oferta do dia","news":"Notícias","music video":"video de música","CTX_SHOW_HOTKEYS":"Mostrar teclas de atalho","CTX_DISMISS_NOTIF":"Dispensar notificações","CTX_DISMISS_ALL":"Dispensar tudo","CTX_SHARE":"Compartilhar","CTX_COPY_SHARE_LINK":"Copiar link compartilhado","CTX_COPY_MAGNET_LINK":"Copiar link magnético","CTX_COPY_STREAM_LINK":"Copiar link da stream","CTX_DOWNLOAD_VIDEO":"Baixar esse vídeo","CTX_DOWNLOAD_SUBS":"Baixar Legendas","CTX_VIEW_ON_YOUTUBE":"Visualizar no YouTube","CTX_SHOW":"Mostrar","CTX_PLAY":"Reproduzir","CTX_PLAY_IN":"Reproduzir em","CTX_PLAY_ON":"Reproduzir em","CTX_WATCH_ON":"Assistir em","CTX_WATCH":"Assistir","CTX_WATCHED":"Assistido","CTX_WATCH_BEGINNING":"Assistir do inicio","CTX_WATCH_MOBILE":"Assistir em um aparelho móvel","CTX_REWIND":"Voltar para o início","CTX_MARK_WATCHED":"Marcar como assistido","CTX_MARK_NON_WATCHED":"Marcar como não assistido","CTX_MARK_UNWATCHED":"Marcar como não assistido","CTX_MARK_REST":"Marcar o resto como assistido","CTX_UNMARK_REST":"Marcar o resto como não assistido","CTX_RECEIVE_NEW_NOTIF":"Receber novas notificações","CTX_REMOVE_CACHE":"Remover do cache","CTX_REMOVE_CACHE_EP":"Remover episodio do cache","CTX_OPEN_CONTAINING":"Abrir pasta do arquivo","CTX_REMOVE":"Remover da biblioteca","CTX_AVAILABLE_OFFLINE":"Disponível Offline","CTX_PAUSED":"Pausado","CTX_ALWAYS_ON_TOP":"Manter em cima","CTX_FULLSCREEN":"Tela cheia","CTX_WRONG_SUBS":"Legendas incorretas?","CTX_REPORT_ISSUES":"Reportar um problema","CTX_COPY":"Copiar","CTX_PASTE":"Colar","CTX_CLEAR":"Limpar","CTX_CLEAR_RECENT_SEARCHES":"Limpar buscas recentes","HELLO_THERE":"Olá","HOPE_YOU_ENJOY":"Esperamos que aprecie o Stremio, que já é um dos seus aplicativos favoritos!","WHO_ARE_WE":"Quem somos? Somos a equipe por trás disso tudo. Dois caras que trabalham duro todos os dias nos últimos 3 anos, com o único objetivo de deixar este produto cada vez melhor","SUPPORT_US":"Se você gosta de usar o Stremio, se ele está sendo útil pra você, divulgue!","SPREAD_THE_WORD":"Compartilhe com seus amigos agora, divulgue o Stremio","MORE_PEOPLE":"Quanto mais pessoas usarem o Stremio, melhor ele vai ficar!","SEND_A_LINK":"Ou envie um link para nosso site","TIP_LOCALFILES":"Dica: você pode arrastar e soltar arquivos de vídeo diretamente no Stremio","ADDON_MY":"Meus Addons","ADDON_COMMUNITY":"Addons da comunidade","ADDON_OFFICIAL":"Addons oficiais","ADDON_REPOS":"Repositórios de Addons","ADDON_SEARCH":"Buscar Addons","ADDON_INSTALL":"Instalar","ADDON_CONFIGURE":"Configurar","ADDON_UNINSTALL":"Desinstalar","ADDON_UPGRADE":"Atualizar","ADDON_INSTALLED":"Instalado","ADDON_INSTALLED_MSG":"Addon instalado!","ADDON_UPGRADED_MSG":"Addon atualizado!","ADDON_UNKNOWN":"Desconhecido","ADDON_ERR":"Erro ao instalar o Addon!","ADDON_DISCONNECTED":"Desconectado","ADDON_APP_MISSING":"o aplicativo que suporta esta fonte não está instalado. Deseja instalar agora?","ADDON_APP_INSTALL":"Instalar agora","ADDON_PAGE":"Página de Addons","ADDON_TOP_CONTENT":"Melhor conteúdo deste Addon","ADDON_PROVIDES":"Este Addon lhe dará:","ADDON_WATCH":"Assista a #{types} agora!","ADDON_WATCH_FREE":"Assista a #{types} de GRAÇA agora!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Tipos suportados","ADDON_SUPPORTED_CATALOGS":"Catálogos suportados","ADDON_PROVIDES_DISCOVER":"Mais #{types} em Descubra","ADDON_PROVIDES_STREAMS":"Assista a #{types}","ADDON_PROVIDES_STREAMS_FREE":"Assista a #{types} de GRAÇA","ADDON_PROVIDES_SUBTITLES":"Legendas para #{types}","ADDON_CANTDETECT":"Nós não pudemos detectar se o Stremio está sendo executado, então não pudemos detectar quais Addons você tem instalado.","ERR_NO_META":"Nenhuma informação encontrada sobre isso ","ERR_GETTING_META":"Erro ao obter informação sobre isto.","ERR_CANT_PARSE_MAGNET":"Não foi possível analisar o link magnético","ERR_NO_MAGNET_INFOHASH":"Informação inválida no hash do link magnético","ERR_NO_FILE_PATH":"Impossível enviar uma requisição sem um caminho para o arquivo","ERR_NO_TORRENT":"Nenhum torrent retornado","ERR_NO_SUPPORTERD_FILES":"Nenhum arquivo suportado encontrado","ERR_OPENING_FILES":"Não foi possível abrir arquivos externos","ERR_INVALID_LINK":"Link inválido","ERR_REGISTERED_ONLY":"Esta opção está disponível apenas para usuários registrados.","ERR_CLIPBOARD":"Não é possível reproduzir da área de transferência","ERR_CLIPBOARD_READ":"Não é possível ler a área de transferência nesta plataforma","ERR_CLIPBOARD_GENERIC":"Nenhuma URL reproduzível encontrada na Área de Transferência. Por favor, copie uma URL (ex.: link magnético) para um vídeo.","BOARD_CONTINUE_WATCHING":"Continue assistindo","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmes escolhidos especialmente para você.
    Este filme é uma recomendação de amostra.","BOARD_EXPLANATION_EPISODES":"Novos episódios de suas séries favoritas.
    Adicione séries que você segue na sua Biblioteca.","BOARD_EXPLANATION_VIDEOS":"Novos episódios dos seus canais favoritos.
    Adicione canais do YouTube que você segue na sua Biblioteca.","WEBSITE_SLOGAN_WATCH":"Assista instantaneamente","WEBSITE_SLOGAN_ALL":"Todo conteúdo em video que você adora em um único lugar","WEBSITE_SLOGAN_NEW":"Tudo o que você pode assistir","WEBSITE_SLOGAN_NEW_NEW":"Liberdade para o Stream","WEBSITE_WATCH_FROM":"Ver a partir","WEBSITE_DOWNLOAD":"Baixe agora","WEBSITE_DOWNLOAD_FOR":"Baixe agora para","WEBSITE_IS_DESKTOP":"Stremio é uma aplicação para desktop, abra esta página em seu computador e baixe","WEBSITE_DESKTOP_DEMO_VID":"Demonstração","WEBSITE_PAGE_HOME":"Inicio","WEBSITE_PAGE_FEATURES":"Funcionalidades","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Tecnologia","WEBSITE_PAGE_CREATE_ADDON":"Criar Addon","WEBSITE_PAGE_CONTACTS":"Contato","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filmes","WEBSITE_TYPE_series_PL":"Séries","WEBSITE_TYPE_tv":"TV Ao vivo","WEBSITE_TYPE_channel":"Canais","WEBSITE_STREMIO_WHAT_IS":"Stremio é um aplicativo que lhe ajuda a organizar e assistir instantaneamente seus vídeos, filmes, séries de TV e canais de TV favoritos.","WEBSITE_FEATURES_WATCH":"Assista instantaneamente em HD","WEBSITE_FEATURES_WATCH_DETAIL":"Clique e assista seus filmes favoritos, Séries, vídeos e canais de TV.","WEBSITE_FEATURES_SUBS":"Legendas automáticas","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automaticamente seleciona legendas sincronizadas para o seu idioma.","WEBSITE_FEATURES_SUBS_LABEL":"Chefe, é a sua vez.","WEBSITE_FEATURES_CAST":"Exiba na TV & Celulares","WEBSITE_FEATURES_CAST_DETAIL":"Transmita para AppleTV, Chromecast, Smart TV (DLNA/UPnP) e dispositivos móveis.","WEBSITE_LIB":"Aprecie Sua Biblioteca Pessoal Sincronizada em Todos Seus Dispositivos","WEBSITE_LIB_COLLECT":"Recuperar da Stremio","WEBSITE_LIB_IMPORT":"Importe do Facebook","WEBSITE_LIB_LOCAL":"Adicione do seu dispositivo local","WEBSITE_BOARD":"Painel - Um lugar para Notificações e Recomendações","WEBSITE_BOARD_RECOMMEND":"Shows de TV Recomendados","WEBSITE_BOARD_TRENDING":"Filme em Alta","WEBSITE_BOARD_NEW":"Novo Vídeo","WEBSITE_BOARD_EPISODE":"Novo Episódio","WEBSITE_BOARD_1":"Procurando alguma coisa interessante para assistir? Obtenha recomendações baseadas no seu perfil!","WEBSITE_BOARD_2":"Seja avisado quando um novo episódio da sua série favorita ou canal do youtube sair!","WEBSITE_BOARD_YOUTUBE":"Novos videos de canais do YouTube","WEBSITE_BOARD_EPISODES":"Novos episódios de séries que você segue","WEBSITE_ADDONS":"Addons de Conteúdo","WEBSITE_TECH_DETAIL":"Nós amamos tecnologias, nós amamos ciência desruptiva!\\nA Stremio usa as seguintes tecnologias Open Source:","WEBSITE_TECH_WCJS":"WebChimera.js permite que o Stremio reproduza qualquer formato de vídeo com uma ótima qualidade.","WEBSITE_TECH_WCJS_EXTRA":"Nós somos os mantenedores do projeto","WEBSITE_TECH_ELECTRON":"Electron provê uma plataforma inovadora no qual o Stremio é construído.","WEBSITE_TECH_ELECTRON_EXTRA":"Nós somos os contribuidores do projeto","WEBSITE_TECH_LINVODB":"Uma tecnologia de Banco de Dados que garante que seus dados estarão organizados e disponíveis em qualquer lugar que você se conectar.","WEBSITE_TECH_LINVODB_EXTRA":"Tecnologia interna","WEBSITE_CREATE_ADDON":"Crie seu Addon","WEBSITE_CREATE_ADDON_DETAIL":"Você possui um serviço fornecendo conteúdo em vídeo? Nós vamos ajudar você a se beneficiar dos recursos do Stremio criando seu Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefícios de criar um Addon para o Stremio","WEBSITE_P2P_BEAUTY":"A Beleza do streaming ponto-a-ponto","WEBSITE_P2P_1":"Vídeos em Full HD / 4K sob demanda ou transmissões ao vivo confiáveis e acessíveis","WEBSITE_P2P_2":"Plataforma de distribuição providenciando uma ótima experiência ao usuário","WEBSITE_P2P_3":"Nós criaremos um Addon reunindo exatamente o que você precisa","WEBSITE_P2P_CONTACT":"Interessado? Sinta-se a vontade para entrar em contato conosco.","WEBSITE_P2P_CONTACT_EXTRA":"Será um prazer ajudar você a integrar seu conteúdo ao Stremio!","WEBSITE_P2P":"De vez em quando, aparece uma tecnologia que muda o jogo. Nós investimos muito tempo e esforço na construção do nosso mecanismo de transmissão de vídeo Peer-To-Peer (P2P) que fornece uma ótima performance e versatilidade para se adaptar a qualquer tipo de uso.\\nEntre em contato conosco para vídeos P2P sob demanda com gerenciamento de direitos autorais (DRM) habilitado ou transmissão ao vivo.","WEBSITE_THOUGHTS":"Pensamentos que compartilhamos:","WEBSITE_SPREAD":"Espalhe a palavra sobre o Stremio:","WEBSITE_CONTACT":"Contate-nos, teremos prazer em ouví-lo.","WEBSITE_OPENSOURCE":"Veja nossos projetos Open Souce em nosso ","WEBSITE_BITCOIN":"Doe Bitcoin:","WEBSITE_FAQ":"Perguntas frequentes","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Perguntas","WEBSITE_TOS":"Termos de uso","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"Sobre","WEBSITE_PAGE_BECOME_PARTNER":"Seja um parceiro","WEBSITE_ALL_YOU_CAN_WATCH":"Liberdade Para Assistir\\nTudo Que Você Deseja.","WEBSITE_FREEDOM_TO_STREAM":"Liberdade para o Stream","WEBSITE_WHAT_IS_STREMIO":"O que é Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"O Stremio é uma plataforma para agregação de conteúdo de vídeo. Descubra, organize e assista vídeos de todos os tipos de fontes em qualquer dispositivo que você possui.","WEBSITE_WHAT_IS_STREMIO_P2":"Filmes, séries, programas de TV, TV ao vivo ou canais da web como YouTube e Twitch.tv - você pode encontrar tudo isso no Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio é uma central de mídia moderna, uma solução integrada para todo seu entretenimento em vídeo. Você descobre, assiste e organiza conteúdo de vídeo a partir de Addons fáceis de instalar.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Filmes, shows de TV, TV ao vivo ou canais da web - encontre tudo isso no Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Desfrute em todos os seus dispositivos de mídia ","WEBSITE_DEVICES_COLLECT":"Recupere a partir do Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importe a partir do Facebook","WEBSITE_DEVICES_LOCAL":"Adicione a partir de unidade local","WEBSITE_JOIN_THE_PARTY_NOW":"Junte-se à festa agora","WEBSITE_DEVICES_ALL":"Fácil de usar em todos os seus dispositivos;","WEBSITE_EXTENDABLE_CATALOG":"Catálogo de vídeo infinitamente extensível;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Ótimas funcionalidades para organizar sua mídia;","WEBSITE_AS_SEEN_ON":"Como visto em","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Sobre nós","WEBSITE_LINK_TECHNOLOGY":"Tecnologia","WEBSITE_LINK_APPS":"Aplicativos","WEBSITE_LINK_DOWNLOADS":"Baixe","WEBSITE_MORE":"Mais","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Kit de Desenvolvimento","WEBSITE_LINK_CONTRIBUTE":"Contribuir","WEBSITE_LINK_COMMUNITY":"Comunidade","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & Mais","WEBSITE_LINK_HELP":"Central de Ajuda","WEBSITE_LINK_CONTACTS":"Inquérito de Negócios","WEBSITE_LINK_TOS":"Termos e Condições","WEBSITE_LINK_PRAVACY":"Politica de Privacidade","WEBSITE_SUBSCRIBE":"Inscreva-se","WEBSITE_NEWSLETTER":"Se increva no nosso newsletter para receber as novidades","WEBSITE_PLACEHOLDER_EMAIL":"Seu email","WEBSITE_COMMUNITY":"Comunidade","WEBSITE_LINK_PRAVACY_LEGAL":"Privacidade e Legal","WEBSITE_WHY":"Por que nós fazemos isso","WEBSITE_WHY_P1":"No Stremio, nós chegamos a trabalhar todos os dias porque queremos resolver um problema importante para o setor de vídeo sob demanda. Há tanto conteúdo novo publicado a cada minuto que é virtualmente impossível encontrar o caminho menos árduo.","WEBSITE_WHY_P2":"Ajudamos as pessoas a navegar neste mundo imenso de entretenimento de vídeo e a descobrir novos conteúdos para apreciar. Nossos aplicativos trazem consigo filmes, séries, TV ao vivo, canais da web e muito mais. Estamos focados em facilitar que nossos usuários possam encontrar facilmente títulos e canais que eles adoram. ","WEBSITE_WHY_P3":"Você pode usar nosso serviço em qualquer dispositivo e a qualquer hora, tornando o Stremio a única plataforma agregadora de entretenimento de vídeo que você precisará.","WEBSITE_TEAM":"Equipe","WEBSITE_TEAM_P":"A equipe do Stremio é pequena, mas poderosa: entre nós dez, codificamos em várias linguagens e compartilhamos experiência em desenvolvimento de software, design UI e UX, marketing e publicidade, e negócios e startups.","WEBSITE_FEATURES":"Recursos","WEBSITE_FEATURES_P1":"-","WEBSITE_FEATURES_DISCOVER":"Descubra novos conteúdos com facilidade","WEBSITE_FEATURES_DISCOVER_P":"Descubra facilmente novos filmes, séries, programas de TV e canais para assistir. Navegue por categoria, gênero, classificação, novidade, etc. ou simplesmente digite um nome para encontrar. Stremio faz achar conteúdo de vídeos ser uma moleza.","WEBSITE_FEATURES_ALL_CONTENT":"Todo seu conteúdo de vídeo em uma tela","WEBSITE_FEATURES_ALL_CONTENT_P1":"Veja quais filmes, séries ou vídeos você não terminou e continue assistindo. Seja notificado sobre novos episódios e lançamentos e navegue pelas recomendações que você obterá com base em seus hábitos de visualização","WEBSITE_FEATURES_LIBRARY":"Organize sua biblioteca de vídeos","WEBSITE_FEATURES_LIBRARY_P1":"Adicione qualquer título à sua biblioteca do Stremio com um único clique e encontre seu conteúdo, organizado por tipo, novidade ou ordem alfabética","WEBSITE_FEATURES_CALENDAR":"Acompanhe tudo o que você assiste","WEBSITE_FEATURES_CALENDAR_P1":"Visualize o calendário de todos os filmes e séries que você adiciona à sua biblioteca, e também saiba quando haverá um novo episódio ou uma estreia.","WEBSITE_FEATURES_BIG_SCREEN":"Aproveite o seu conteúdo de vídeo em uma tela maior ","WEBSITE_FEATURES_BIG_SCREEN_P1":"Projete o que você estiver assistindo para outro dispositivo - use o smartphone, tablet ou TV com um único clique","WEBSITE_FEATURES_SOURCES":"Assista o vídeo de várias fontes diferentes.","WEBSITE_FEATURES_SOURCES_P":"Instale os Addons oficiais e comunitárias para aproveitar o vídeo fornecido por vários fornecedores diferentes - tudo em um aplicativo elegante e fácil de usar.","WEBSITE_CREATE_AN_ADDON":"Crie um Addon.","WEBSITE_FEATURES_SYNC":"Sincronize sua biblioteca entre diferentes dispositivos e continue a reprodução","WEBSITE_FEATURES_SYNC_P1":"Entre com sua conta em todos os seus dispositivos e aproveite sua biblioteca, Addons, reprodução e calendário sincronizados.","WEBSITE_FEATURES_EXTENDABLE":"Catálogo de vídeo extensível por Addons","WEBSITE_FEATURES_EXTENDABLE_P1":"O catálogo de Addons do Stremio fornece vários Addons para instalar e assistir a uma variedade de conteúdos de vídeo. Isso inclui filmes, programas, TV ao vivo, esportes, notícias, podcasts, canais da web, videogames e muito mais.","WEBSITE_FEATURES_AUTO_SUBS":"Legendas automáticas","WEBSITE_FEATURES_AUTO_SUBS_P1":"Com nossos Addons para legenda, você obtém automaticamente as opções selecionadas para o seu idioma preferido.","WEBSITE_FEATURES_CHROMECAST":"Transmitir para Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Desfrute do conteúdo do vídeo em uma tela maior ou apenas transmita o que estiver assistindo para outro dispositivo.","WEBSITE_FEATURES_KEEP_TRACK":"Acompanhe seus programas de TV e canais da Web favoritos ","WEBSITE_FEATURES_KEEP_TRACK_P1":"Obtenha uma visualização do calendário e notificações para novos episódios de suas séries e canais da web favoritos.","WEBSITE_FEATURES_POWER_USER":"Recursos avançados para usuários","WEBSITE_FEATURES_POWER_USER_P1":"Reproduzir em um reprodutor externo","WEBSITE_FEATURES_POWER_USER_P2":"Reproduzir de um arquivo torrent ou link magnético","WEBSITE_FEATURES_POWER_USER_P3":"Importe para sua biblioteca do Facebook likes ou disco local","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"Todo o conteúdo de vídeo que o Stremio proporciona é proveniente de um sistema de Addons - nenhum fornecedor de conteúdo ou conteúdo foi incorporado no aplicativo.","WEBSITE_ADD_ONS_P2":"Existem dois grupos de Addons disponíveis: oficial e comunitária.","WEBSITE_ADD_ONS_P3":"As oficiais são desenvolvidas e hospedadas pela Stremio, enquanto os Addons comunitárias são criadas pelos membros de nossa comunidade, que também os hospedam.","WEBSITE_ADDONS_OFFICIAL":"Addons oficiais","WEBSITE_ADDONS_WATCHUB":"Transmite seus filmes, séries e shows favoritos de provedores como iTunes, Hulu, Amazon e outros serviços do Reino Unido / EUA.","WEBSITE_ADDONS_YOUTUBE":"Assista seus canais favoritos do YouTube livre de anúncios e receba notificações de novos vídeos dos canais que você segue.","WEBSITE_ADDONS_FILMON":"Assista TV ao vivo, filmes e canais interativos gratuitamente. 600 canais de TV, 45.000 filmes gratuitos, documentários e muito mais.","WEBSITE_ADDONS_OPENSUBTITLES":"Legendas de filmes e TV em vários idiomas. Milhares de legendas traduzidas e carregadas todos os dias.","WEBSITE_ADDONS_COMMUNITY":"Addons da comunidade","WEBSITE_ADDONS_FILMON_VOD":"Assista a vídeos sob demanda do Filmon.tv","WEBSITE_ADDONS_TWICH":"Assista transmissões ao vivo do Twitch.tv - a plataforma de streaming de vídeo para a indústria de e-sports.","WEBSITE_ADDONS_VODO":"Assista filmes independentes totalmente grátis.","WEBSITE_ADDONS_NETFLIX":"Assista filmes e séries da Netflix.","WEBSITE_ADDONS_CREATE":"Crie um Addon.","WEBSITE_ADDONS_CREATE_P1":"Se desejar, você pode desenvolver sua próprio Addon. Desta forma, você pode proporcianar a você e a nossa comunidade acesso a novos conteúdos de vídeo, e alcançar um novo público-alvo de milhões de usuários em todo o mundo.","WEBSITE_ADDONS_START_CREATE":"Para iniciar, visite a página do Kit de Desenvolvimento de Addons da Stremio:","WEBSITE_DOWNLOADS":"Baixar","WEBSITE_DOWNLOADS_P1":"Para um desempenho ideal, recomendamos que você use a versão mais recente disponível das aplicações Stremio. Se por algum motivo, no entanto, você prefira usar uma versão mais antiga, você pode baixá-la aqui.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio para Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio para MacOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio para Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio para Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio para Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio para Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio para Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio para iOS (versão limitada)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Colabore","WEBSITE_CONTRIBUTE_P1":"A plataforma Stremio é de código aberto e você pode criar facilmente um Addon para o conteúdo que atualmente não é fornecido.","WEBSITE_CONTRIBUTE_WHY":"Por que você deve criar um Addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Alcance novo público para o conteúdo do seu vídeo","WEBSITE_CONTRIBUTE_WHY_P2":"A base de usuários do Stremio está crescendo rapidamente - no primeiro ano de lançamento, o Stremio ganhou 1 milhão de usuários em todo o mundo e, no segundo ano de existência da plataforma, esse número cresceu para 2,5 milhões.","WEBSITE_CONTRIBUTE_WHY_P3":"Com a seu Addon, você pode alcançar facilmente esta audiência e distribuir o seu conteúdo em vídeo para eles.","WEBSITE_CONTRIBUTE_ALL":"Assista seus filmes, séries, vídeos e canais favoritos em um único lugar.","WEBSITE_CONTRIBUTE_ALL_P1":"Você é fã de um tipo de conteúdo que ainda não está disponível no Stremio? Crie um Addon para isso, e aprecie assistir seus vídeos favoritos em um dos maiores e mais fáceis de se usar hub de entretenimento do mercado.","WEBSITE_CONTRIBUTE_ALL_P2":"Além disso, você obterá a infinita gratidão de outros membros da comunidade Stremio com ideias semelhantes","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize seu Addon e ganhe dinheiro com a ajuda dela","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Uma vez que você desenvolve um novo Addon para o Stremio, você pode facilmente monetizá-lo através de várias maneiras diferentes. Se você está considerando isso, sinta-se à vontade para entrar em contato conosco no ","WEBSITE_CONTRIBUTE_MONETIZE_E":"Addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - nós ficaríamos felizes em lhe instruir e aconselhá-lo sobre as opções de monetização de seu Addon.","WEBSITE_CONTRIBUTE_TRANSLATE":"Torne-se um tradutor voluntário","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Se você deseja aproveitar as aplicações do Stremio em diferentes idiomas, você pode se juntar à nossa comunidade de tradutores voluntários. Eles nos ajudam a adicionar versões do Stremio em vários idiomas diferentes.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Você está ansioso para começar?","WEBSITE_TRANSALTE_STREMIO":"Traduza o Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Comunidades oficiais","WEBSITE_COMMUNITY_OFFICIALS_P1":"Torne-se parte da crescente comunidade Stremio. Siga-nos nas redes sociais e não se sinta intimidado em nos dizer um \\"Olá\\" - amamos saber de nossos fãs!","WEBSITE_COMMUNITY_UNOFFICIALS":"Comunidades Não Officiais","STREMIO_COMMUNITY_NL":"Stremio Nova Zelândia","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Alemanha","STREMIO_COMMUNITY_BELGIUM":"Stremio Bélgica","STREMIO_COMMUNITY_FRANCE":"Stremio França","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Itália","STREMIO_COMMUNITY_UK":"Stremio Reino Unido","STREMIO_COMMUNITY_USA":"Stremio EUA","STREMIO_COMMUNITY_MEXICO":"Stremio México","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Apoiadores e parceiros","WEBSITE_COMMUNITY_GOODIES":"Brindes Stremio","WEBSITE_COMMUNITY_WALLPAPERS":"Papéis de Parede","WEBSITE_COMMUNITY_ART":"Galeria de Arte Comunitária","WEBSITE_LINK_ART":"Galeria de arte comunitária","WEBSITE_CONTACT_US":"Fale conosco","WEBSITE_CONTACT_US_P1":"Caso tenha dúvidas, comentários ou sugestões, sinta-se à vontade para entrar em contato conosco através do formulário abaixo.","WEBSITE_CONTACT_US_P2":"Lembre-se de que estamos localizados na Bulgária, por isso, pode haver uma demora no atendimento da sua consulta devido às diferenças de fuso horário.","WEBSITE_CONTACT_US_SUCCESS":"Sua mensagem foi enviada. Nós entraremos em contato com você o mais breve possível.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Por favor, digite um e-mail válido!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Com o que sua pergunta está relacionada?","WEBSITE_CONTACT_US_Q_OS":"Qual o seu sistema operacional?","WEBSITE_CONTACT_US_PH_EMAIL":"Seu email","WEBSITE_CONTACT_US_PH_MESSAGE":"Mensagem","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ENVIAR","WEBSITE_CONTACT_US_Q_1":"Como instalar?","WEBSITE_CONTACT_US_Q_2":"Como desinstalar?","WEBSITE_CONTACT_US_Q_3":"(HTML) Como fazer lasanha?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"MacOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Tecnologia","WEBSITE_TECHNOLOGY_P1":"Nós amamos tecnologia e ciência maluca. Aqui estão os poderes do Stremio (tudo em código aberto).","WEBSITE_TECHNOLOGY_P_QT":"Desenvolvimento de software multiplataforma em seu melhor.","WEBSITE_TECHNOLOGY_P_MPV":"Um reprodutor de mídia gratuito, de código aberto e multiplataforma.","WEBSITE_TECHNOLOGY_P_RN":"O React Native permite que você crie aplicativos mobile usando apenas JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Framework de mídia embutido no aplicativo para recursos multimídia","WEBSITE_TECHNOLOGY_P_REALM":"Realm é uma plataforma mobile e um substituto para SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js é um ambiente em tempo de execução multiplataforma e de código aberto para JavaScript.","WEBSITE_TECHNOLOGY_P_RUST":"Rust é uma linguagem de programação multi-paradigma focada em segurança, especialmente concorrência segura.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribua com o projeto","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Há duas maneiras que você pode contribuir com o Stremio e nos ajudar a tornar o produto ainda melhor.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Você pode doar suas valiosas habilidades linguísticas para traduzir a plataforma...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"ou","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"...você pode usar suas habilidades de codificação para criar Addons comunitárias.","WEBSITE_TRANSLATE_STREMIO":"Traduza o Stremio","WEBSITE_404_OH_NO":"Oops! A página que você está procurando não está aqui...","WEBSITE_GO_HOME":"Principal","WEBSITE_LINK_OTHER_DOWNLOADS":"Outros downloads","WEBSITE_FAQ_ABR":"Dúvidas Frequentes","WEBSITE_SUPPORT":"Ajuda","WEBSITE_DOWNLOAD_4_0_BETA":"Baixe agora o Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Baixe para seu PC","WEBSITE_LINK_ADDON_COMPETITION":"Competição de Addon","WEBSITE_LINK_ART_CONTEST":"Concurso de arte","WEBSITE_MY_ACCOUNT":"Minha conta","WEBSITE_MAINPAGE_FAQ_001_H1":"O que é Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"O Stremio é um moderno centro de mídia que oferece a liberdade de assistir tudo o que você deseja.","WEBSITE_MAINPAGE_FAQ_002_H1":"Como funciona?","WEBSITE_MAINPAGE_FAQ_002_P1":"Depois de instalar o Stremio no seu dispositivo e criar uma conta, tudo o que você precisa fazer é visitar o catálogo de Addons e instalar qualquer Addon que desejar, e pronto!","WEBSITE_MAINPAGE_FAQ_002_P2":"Depois disso, você pode ir para as seções Descubra ou Painel para começar a explorar o conteúdo.","WEBSITE_MAINPAGE_FAQ_003_H1":"O que posso assistir aqui?","WEBSITE_MAINPAGE_FAQ_003_P1":"Diversos filmes, programas de TV, canais da Web, esportes, canais de TV, ouvir podcasts e muito mais. Graças ao nosso sistema de Addons, você pode acessar uma variedade de conteúdos.","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio é de código aberto?","WEBSITE_MAINPAGE_FAQ_004_P1":"Sim, você pode verificar os seguintes links: ${1}aplicativo de desktop${2} e ${3}organização GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio é seguro?","WEBSITE_MAINPAGE_FAQ_005_P1":"Sim. Por ser um software de código aberto, o código é auditável publicamente e você pode revisá-lo.","WEBSITE_MAINPAGE_FAQ_006_H1":"E a minha privacidade?","WEBSITE_MAINPAGE_FAQ_006_P1":"Respeitamos a privacidade dos usuários e não coletamos dados pessoais além do mínimo essencial para criar e sincronizar sua conta.","WEBSITE_MAINPAGE_FAQ_006_P2":"Há também um ${1}modo visitante ${2}na inscrição, que não requer dados: neste modo, nenhuma chamada é feita para o nossos servidores. No entanto, isso ocorre à custa de recursos úteis, como sincronizar sua biblioteca entre dispositivos.","WEBSITE_MAINPAGE_FAQ_007_H1":"Posso transmitir para minha TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Sim, suportamos o Chromecast e você pode transmitir a partir de aplicativos para computador e dispositivos móveis (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Quantos Addons o Stremio possui?","WEBSITE_MAINPAGE_FAQ_008_P1":"No final de 2019, acima de 50 - para obter mais informações, consulte nosso catálogo de Addons.","WEBSITE_MAINPAGE_FAQ_009_H1":"O Stremio pode ser estendido além do que está no catálogo de Addons?","WEBSITE_MAINPAGE_FAQ_009_P1":"Sim, você deve checar estes: ${1}PimpMyStremio${2}, ${3}Comunidades Reddit${4}, ${5}Downloader Stremio${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"Quais dispositivos o Stremio suporta?","WEBSITE_MAINPAGE_FAQ_010_P1":"Temos aplicativos de desktop para Windows, Mac e Linux. Para dispositivos móveis, suportamos Android e iOS, embora tenha em mente que a funcionalidade do iOS é limitada (não é compatível com a maioria das Addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"Existem muitos dispositivos baseados no Android nos quais você pode executar o Stremio, como NVIDIA Shield e Amazon Fire Stick, mas não os suportamos oficialmente.","WEBSITE_MAINPAGE_FAQ_011_H1":"Você pode adicionar determinado conteúdo ao Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Desculpe, mas nós não fornecemos conteúdo, porém quanto mais Addons do Stremio você instalar, mais conteúdo você poderá encontrar.","WEBSITE_MAINPAGE_FAQ_012_H1":"O Stremio pode reproduzir links magnéticos?","WEBSITE_MAINPAGE_FAQ_012_P1":"Sim, e também pode reproduzir links HTTP normais e arquivos torrent (arrastar e soltar).","WEBSITE_MAINPAGE_FAQ_013_H1":"Posso baixar um vídeo e assistir offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"O modo offline estará disponível futuramente, porém se você permitir que o Stremio faça cache no dispositivo (no painel de configurações), poderá assistir aos vídeos mais tarde, sem conexão.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nada funciona, me ajude!","WEBSITE_MAINPAGE_FAQ_014_P1":"Tem certeza de que instalou Addons? Se sim, verifique nossa ${1}central de ajuda${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Como o Stremio sustenta suas operações de desenvolvimento?","WEBSITE_MAINPAGE_FAQ_015_P1":"Ocasionalmente, exibimos anúncios não intrusivos, mas estamos pensando em mudar para um modelo de doação.","WEBSITE_MAINPAGE_FAQ_015_P2":"Para mais dúvidas, visite nossa ${1}central de ajuda${2}.","HELP_LEARN_MORE":"Ajude-nos a aprender mais sobre você.","LIFESTYLE":"Estilo de vida","SPORTS":"Esportes","FOOD_HEALTH":"Gastronomia e Saúde","BEAUTY_FASHION":"Moda e Beleza","NEWS":"Notícias","GAMING":"Jogos","SCIENCE_EDUCATION":"Ciência e Educação","MUSIC":"Música","TRAVEL":"Viagens","LATE_NIGHT":"Tarde da Noite","REALITY":"Realidade","COMEDY":"Comédia","DIY":"Faça você mesmo","TECH":"Tecnologia","CINEMA":"Cinema","CONTINUE":"Continuar","SLOW_LOADING":"CARREGAMENTO LENTO?","I_GIVE_UP":"EU DESISTO","LEARN_MORE":"Saiba mais","POOR_SOURCE":"Esta fonte possui baixa disponibilidade ou a sua conexão à internet não é suficientemente rápida","PICK_CATEGORIES_ERR":"Você precisa escolher ao menos 3 categorias","ADJUST_TIMING":"Ajustar tempo com ","ADJUST_SIZE":"Ajustar tamanho com ","SEARCH_ANYTHING":"Você Pode Pesquisar Qualquer Coisa...","ALL_CATEGORIES":"Todas","SEARCH_CATEGORIES":"Filmes, Séries, YouTube & TV","SEARCH_PERSONS":"Atores, Diretores & Escritores","SEARCH_PROTOCOLS":"HTTP & Links Magnéticos","SEARCH_TYPES":"links IMDB / TVDB","WATCHED":"Visto","SHOW_LESS":"Mostrar menos","LAST_SEARCHES":"Últimas pesquisas","CLEAR_HISTORY":"Limpar histórico","CHOOSE_SOME":"ESCOLHA ALGUNS DESTES:","NO_WEB_REMOTE":"O Web Remote não pôde ser carregado","STREMIO_OFFLINE":"Stremio está offline","STREMIO_EXPENSIVE_CONNECTION":"A conexão de rede é custosa","USE_DATA":"Dados Móveis","WARNING":"Aviso","MORE_INFO":"Mais Informações ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Carregando ...","STREMIO_TV_BACK_TO_LANGUAGES":"Voltar para idiomas","STREMIO_TV_REMOTE":"Remoto","STREMIO_TV_GO_TO":"Ir Para:","STREMIO_TV_OR_SCAN":"ou buscar:","STREMIO_TV_ADDON_INSTRUCTIONS":"Por favor, siga as instruções a fim de instalar suas Addons favoritas.","STREMIO_TV_LIVE_TV":"TV Ao vivo","STREMIO_TV_RESUME_WATCHING":"Continuar assistindo","STREMIO_TV_LOADING_BACKGROUND":"Carregando Plano de Fundo","STREMIO_TV_CHECKING_AUTHENTICATION":"Checando Autenticação","STREMIO_TV_LOADING_BOARD":"Carregando Painel","STREMIO_TV_LOGIN_HEADER_LINE_1":"Queremos que nossos usuários tenham a melhor experiência personalizada possível com nosso programa.","STREMIO_TV_LOGIN_HEADER_LINE_2":"É por esta razão que nos gentilmente pedimos que faça e/ou logue em sua conta.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Obrigado por entender,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Equipe Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"A fim de usar o Web Remote com seu Smartphone / Tablet / PC:","STREMIO_TV_WIFI_SETUP":"Configurar Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle não detectou conexão com a internet.","STREMIO_TV_WIFI_DETAILS_1":"Conectar com:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Usar senha:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Abra o navegador com o link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Padrão","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Por Último Assistido","STREMIO_TV_LIBRARY_SORT_NAME":"Por Nome","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Por Vezes Assistido","STREMIO_TV_DETAILS_SEASON_NUMBER":"Temporada ${1}","STREMIO_TV_STREAMS_LOADING":"Carregando ${1} / ${2} Addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} o Addon ainda esta carregando...","STREMIO_TV_PLAYER_SETTINGS":"Configurações do player","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Atraso das legendas","STREMIO_TV_PLAYER_AUDIO_DELAY":"Atraso de áudio","STREMIO_TV_PLAYER_VIDEO_SCALING":"Dimensionamento de vídeo","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Fonte de stream não compatível","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Falha ao abrir link externo","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Tocar com ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Tocar com player libVLC","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Mudando para o player libVLC devido a um erro de reprodução","STREMIO_TV_ADDONS_TITLE":"Use o Stremio em seu telefone ou PC para instalar ou configurar Addons e pressione \\"Sincronizar Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Nota: verifique se você está usando a mesma conta Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sincronizar Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons sincronizados com sucesso","STREMIO_TV_ADDONS_SYNC_FAILED":"Falha ao sincronizar Addons","STREMIO_TV_META_LINK_FAILED":"Falha ao abrir o meta link","STREMIO_TV_CATALOG_LOADING":"Catálogo ainda carregando...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Idioma da interface atualizado","STREMIO_TV_SETTINGS_THEME_UPDATED":"Tema atualizado","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Idioma Preferido","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Idioma Secundário Preferido","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Reprodução em túnel","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possíveis problemas de reprodução em alguns dispositivos","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Alguns formatos de vídeo podem não funcionar","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Sem cache","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Padrão","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Suave","STREMIO_TV_SETTINGS_PROFILE_FAST":"Rápido","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Rápido","STREMIO_TV_SETTINGS_SERVER_URL":"URL do servidor de streaming","STREMIO_TV_SETTINGS_SERVER_VERSION":"Versão do servidor","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Desconhecido","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Versão do Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Editar URL do servidor","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Insira um URL de servidor de streaming","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Para ler a Política de Privacidade do Stremio, visite:","STREMIO_TV_SETTINGS_TOS_TEXT":"Para ler os Termos e Condições do Stremio, visite:","STREMIO_TV_NAV_SEARCH":"Procurar","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Descobrir","STREMIO_TV_NAV_LIBRARY":"Biblioteca","STREMIO_TV_NAV_MOVIES":"Filmes","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Canais","STREMIO_TV_NAV_TV":"TV ao vivo","STREMIO_TV_NAV_SETTINGS":"Configurações","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Vincular Contas","STREMIO_TV_LOGIN_EXPIRES_IN":"Expira em","STREMIO_TV_LOGIN_STEP_ONE":"Escaneie o QR Code acima ou acesse","STREMIO_TV_LOGIN_STEP_TWO":"Faça login na sua conta Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Solicitar um novo link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Código de login atualizado","STREMIO_TV_SEARCH_PLACEHOLDER":"Digite algo","STREMIO_TV_SEARCH_NO_ADDONS":"Nenhum Addon foi solicitado para catálogos!","STREMIO_TV_SEARCH_BUTTON":"Procurar","STREMIO_TV_SEARCH_KEY_DEL":"Deletar","STREMIO_TV_SEARCH_KEY_SPACE":"Espaço","STREMIO_TV_SEARCH_KEY_CLEAR":"Limpar","STREMIO_TV_SEARCH_HISTORY_TITLE":"Histórico de pesquisa","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Você pode pesquisar por Títulos, Atores, Canais e muito mais...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Limpar histórico de pesquisa","STREMIO_TV_FILTERS_DESCRIPTION":"Escolha um dos filtros abaixo","FILTERS":"Filtros","SETTINGS":"Configurações","ACCOUNT":"Conta","LOGOUT":"Sair","THEMES":"Temas","PLAYBACK":"Reprodução","PLAYBACK_SPEED":"Velocidade de reprodução","AUDIO_TRACKS":"Faixas de áudio","VIDEOS":"Vídeos","SERVER":"Servidor","LINKS":"Links","ABOUT":"Sobre","INTERFACE":"Interface","ANIMATIONS":"Animações","STATUS":"Status","LANGUAGE":"Idioma","SIZE":"Tamanho","DELAY":"Atraso","BOLD":"Negrito","TEXT_COLOR":"Cor do texto","OUTLINE_COLOR":"Cor do contorno","BACKGROUND_COLOR":"Cor de fundo","BACKGROUND_BLUR":"Desfoque de fundo","SEEK_TIME_DURATION":"Duração do tempo de busca","AUTO_PLAY":"Reproduzir automaticamente o próximo episódio","PLAY_NOW":"Reproduzir agora","MARK_AS_WATCHED":"Marcar como assistido","MARK_AS_UNWATCHED":"Marcar como não assistido","REWIND_TO_BEGINNING":"Retornar ao início","CONTINUE_WATCHING":"Continuar assistindo","ALL":"Tudo","SECONDS":"segundos","ON":"ON","OFF":"OFF","RELOAD":"Recarregar","EDIT_URL":"Editar URL","NONE":"Nenhum","EMBEDDED":"Embutido","REMOTE_SWITCH_DEVICES":"Trocar aparelhos","REMOTE_VIDEOS":"Vídeos","REMOTE_ADJUST_TIMING":"Ajustar o tempo","REMOTE_ADJUST_SIZE":"Ajustar o tamanho","REMOTE_COULD_NOT_BE_LOADED":"Web Remote não pôde ser carregado","REMOTE_RETRY":"Tentar novamente","TORRENT_PROFILE_DEFAULT":"Padrão","TORRENT_PROFILE_SOFT":"Suave","TORRENT_PROFILE_FAST":"Rápido","TORRENT_PROFILE_ULTRA_FAST":"Ultra Rápido","FAQ_001_H1":"O que é Stremio?","FAQ_001_P1":"Stremio é um programa de midia centralizada desenhada para video entretenimento com facilidade de uso em mente. Stremio permite a você organizar & assistir sua própria coleção de vídeos, séries, canais e Tvs ao Vivo.","FAQ_001_P2":"Stremio cataloga o conteúdo e apresenta pra você de seu disco local e de nosso sistema de Addons.","FAQ_001_P3":"Também irá notificá-lo quando novos episódios/videos/filmes que você estiver interessado sair, e mostrará recomendações de filmes para você.","FAQ_02_H1":"Como Stremio se compara ao Kodi e Plex?","FAQ_02_P1":"Nós nos inspiramos nos dois programas, mas temos diferentes objetivos - Stremio é especificamente voltado para vídeo entretenimento. Batalhamos para sermos a solução padrão para isso, tendo em foco a facilidade de uso.","FAQ_02_P2":"Stremio nunca será tão customizável e com ricos recursos como Kodi e Plex, mas sendo significativamente mais fácil de usar. Simplesmente ${1} pegue isso e veja ${2} :)","FAQ_03_H1":"Como Stremio se compara ao Netflix?","FAQ_03_P1":"Novamente, Netflix é uma de nossas inspirações. Trabalharemos arduamente para atingir a experiência de uso proporcionada pelo Netflix, e mais um porção de melhorias. No entanto, o mais importante, nós estamos dando a você a liberdade de gerenciar sua própria biblioteca e adicionar novas fontes de conteúdos com o nosso sistema de Addons.","FAQ_03_P2":"Isso faz do Stremio infinitamente extensível, e então quando você usá-lo, você nunca ficará limitado ao conteúdo que o Netflix decida licenciar. Por exemplo, através do Stremio você pode assistir conteúdo de ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} e mesmo ${9}Netflix${10}!","FAQ_04_H1":"Como Stremio se compara ao Flipboard?","FAQ_04_P1":"Raramente recebemos esta questão, exceto quando falamos com pessoas iniciantes :)","FAQ_04_P2":"Stremio é desenhado como um agregador de conteúdo, ao qual essencialmente Flipboard o faz para vídeo. Isso é muito parecido em nosso painel, ao qual da a você catálogos e notificações de novos episódios/novos vídeos que você segue, tal qual Flipboard.","FAQ_05_H1":"Como Stremio se compara ao Popcorn Time?","FAQ_05_P1":"Stremio e Popcorn Time são similares em interface de uso, porque não há muitas maneiras de fazer catálogo de vídeo entretenimento, certo? :)","FAQ_05_P2":"Mas enquanto o Popcorn Time tem o foco em entrega de torrents de fontes específicas, Stremio não possui restrição e é meramente um agregador de conteúdo - não é travado em uma fonte de conteúdo específica.","FAQ_05_P3":"Além disso, nós não provemos nenhum Addon para torrent por padrão, então Stremio não cobre o caso de uso do Popcorn Time na sua funcionalidade oficial.","FAQ_05_P4":"Uma outra diferença notável é que o Popcorn Time é completamente de código aberto, enquanto Stremio é ${1} parcialmente de código aberto ${2}.","FAQ_06_H1":"Vocês que adicionam estes filmes/séries?","FAQ_06_P1":"Não, desculpe :(","FAQ_06_P2":"Como já mencionamos em muitas outras questões, Stremio não provê nenhum conteúdo por si próprio - tudo é adicionado diretamente pelo sistema de Addons. Caso queira solicitar algum conteúdo, você pode usar o botão “Reporte” no reprodutor, ao qual irá enviar um email para o autor do Addon ao qual está usando.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Vocês criarão Addons para X?","FAQ_08_P1":"Isso é inteiramente possível.","FAQ_08_P2":"Se você tem uma idéia para um Addon, escreva para ${1}office@stremio.com${2}, mas por favor, tenha certeza de que a idéia desse Addon não irá infringir nenhum direito de propriedade intelectual ou termos de uso.","FAQ_08_P3":"No momento, os próximos movimentos em nosso projeto são Addons para FandangoNOW, vídeo sob demanda no Filmon.tv e Crunchyroll.","FAQ_09_H1":"Stremio usa BitTorrent?","FAQ_09_P1":"Sim. Stremio suporta BitTorrent como um protocolo streaming. Você pode usá-lo com a Addon torrent ou por arrastar e soltar um arquivo .torrent dentro do Stremio, ou mesmo colando um link magnético dentro do campo de busca.","FAQ_09_P2":"Por favor, note que único Addon oficial que usa BitTorrent é ${1}Vodo${2}, ao qual provê produção independente, todos permitidos para serem distribuídos com BitTorrent.","FAQ_09_P3":"Nós não suportamos o uso de qualquer Addon de terceiro ao qual pode viabilizar o infringimento de leis de direitos.","FAQ_10_H1":"O que posso assistir no Stremio com as Addons oficiais?","FAQ_10_P1":"Por padrão, você pode assistir conteúdo do Filmon.tv, YouTube e Vodo dentro do Stremio com o reprodutor interno. Adicionalmente nós temos um Addon para Twitch.tv e alguns outros.","FAQ_10_P2":"Este combinado provê uma seleção de:","FAQ_10_L1":"Canais de TV populares, provido por Filmon.tv - por exemplo E4, BBC, Bollyworld TV","FAQ_10_L2":"Tudo do YouTube - por exemplo BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Filmes indepententes com Vodo","FAQ_10_L4":"Transmissão de jogos online com Twitch.tv","FAQ_10_P3":"Adicionalmente, há muitas fontes de conteúdo providas com Guidebox e Addons Netflix, ao qual não reproduzem inteiramente dentro do Stremio, mas pode redirecionar para o dado serviço. Por exemplo, o Addon Guidebox lhe dá uma seleção de filmes que você pode obter conteúdo streaming dentro dos Estados Unidos de graça de serviços como TubiTV e Crackle.","FAQ_11_H1":"Stremio não instala, o que devo fazer?","FAQ_11_P1":"Se você usa Windows, tente ${1}este instalador alternativo${2}.","FAQ_11_P2":"Pra quem usa Mac OS X, por favor esteja ciente que nós não suportamos versões inferiores a OS X Mavericks (10.9).","FAQ_11_P3":"Caso esteja usando Linux, fique avisado que nós damos suporte apenas para a versão 64 bits (x64) no momento.","FAQ_11_P4":"Se não ainda não conseguiu resolver seu problema, por favor nos mande uma mensagem no ${1}Grupo do Facebook${2}.","FAQ_12_H1":"Por que meu antivirus reclama? O Stremio é seguro?","FAQ_12_P1":"Nós lhe asseguramos que o Stremio é ${1}100% limpo${2}.","FAQ_12_P2":"Seu antivirus está reclamando porque nós incluimos propaganda em nosso instalador, e isso faz com que o Stremio seja classificado como um ad-ware.","FAQ_12_P3":"Se você não está seguro, você pode usar nosso ${1}instalador alternativo${2}.","FAQ_13_H1":"Como posso fazer um Addon?","FAQ_13_P1":"Para iniciantes, recomendados que leiam nosso ${1}módulo de sistema de Addon${2} no GitHub.","FAQ_13_P2":"Todavia, você pode seguir o ${1}Tutorial Olá Mundo${2}.","FAQ_13_P3":"Se você não tem nenhum conhecumento em programação, por favor poste sua idéia na ${1}comunidade Reddit${2} e nos contate com sua idéia de Addon no ${3}office@stremio.com${4}.","FAQ_14_H1":"Como as Addons são publicadas?","FAQ_14_P1":"Quando você cria um Addon e hospeda e coloca um campo endpoint no seu manifest, ao qual aponta para endereço de Addon ativo, o Addon irá automaticamente se auto-publicar em nosso ${1}Catálogo de Addons${2}.","FAQ_14_P2":"Isso acontece porque parte do servidor do módulo de Addon do Stremio automaticamente faz uma chamada para nossa API para publicar o Addon. Quando nossa API valida seu endpoint como um Addon válida, isso irá constar no catálogo.","FAQ_15_H1":"Eu posso executar o Stremio no navegador?","FAQ_15_P1":"No momento não, mas em breve !","FAQ_15_P2":"Se você está curioso para ver uma versão Alpha, você pode acessar aqui: ${1}alpha4.strem.io${2}. Tenha em mente que o streaming está disabilitado. Damos suporte para Chrome, Firefox, Opera e Edge.","FAQ_16_H1":"Transmissão para a TV não funciona / legendas não funcionam","FAQ_16_P1":"Transmissão para a TV usa a tecnologia DLNA que é muito inconsistente entre modelos de fabricantes diferentes. Por esta razão, nós não temos a habilidade de testar em cada caso, então estamos longe da perfeição. Estamos trabalhando em melhorar constantemente, mas nós não podemos lhe dar uma estimativa de tempo de quando a tecnologia DLNA funcionará corretamente em sua TV.","FAQ_16_P2":"Se você ainda não vê sua TV no menu de transmissão, por favor tente desabilitar sua conexão de rede e habilite novamente (no Windows, click com botão direito em Rede e click em Habilitar/Desabilitar), também reinicie seu roteador, TV e PC.","FAQ_16_P3":"Se você ainda está encontrando problemas, você pode nos ajudar enviando as informação de seu modelo de TV e fabricante para ${1}office@stremio.com${2}.","FAQ_16_P4":"Em quanto isso nós recomendamos o Chromecast, ao qual suportamos muito bem, ou simplesmente plugando sua TV no seu PC com um cabo HDMI.","FAQ_17_H1":"Stremio congela ou trava, o que posso fazer?","FAQ_17_P1":"Primeiro de tudo, se você está usando Windows 7 com o antivirus AVG: nós temos problema com essa combinação. O problema é o próprio AVG, e não há uma solução definitiva para corrigirmos isso. Infelizmente, exceções ou desabilitar o antivirus não funciona. A única maneira é trocar seu antivirus.","FAQ_17_P2":"Se isso não é o problema, mas você ainda usa Windows, por favor atualize seu o sistema incluindo os drivers da GPU, e tente novamente.","FAQ_17_P3":"Se o seu problema continua sem solução, ou utiliza Mac ou Linux, por favor nos escreva reportando em detalhes o problema em ${1}nosso grupo no Facebook${2}.","FAQ_18_H1":"Como posso fazer um Addon?","FAQ_18_P1":"Para iniciantes nós recomendamos que veja nosso ${1}módulo de sistema de Addon${2} no GitHub.","FAQ_18_P2":"No entanto, você pode seguir pelo nosso ${1}tutorial Olá Mundo!${2}.","FAQ_18_P3":"Se você não tem nenhuma habilidade em programação, por favor, poste sua idéia na ${1}comunidade do Reddit${2} e nos contate com sua idéia de Addon em ${3}office@stremio.com${4}.","FAQ_19_H1":"Por que o Stremio está ocupando espaço em disco?","FAQ_19_P1":"Stremio tem um cache local para temporariamente deixar os arquivos de vídeo descarregados.","FAQ_19_P2":"Isso tem dois benefícios: primeiro, permite ao Stremio pré carregar o vídeo para garantir uma transmissão suave. Segundo, isso deixa os vídeos no cache local para que você possa continuar assistindo off-line.","FAQ_19_P3":"Quanto o Stremio depende da configuração do Cache no painel de Configurações. Stremio pode manter uma quantidade (exemplo 2GB) no seu disco, a menos que o video descarregado seja maior que isso, no qual de have espaço suficiente para mantê-lo enquanto o descarrega.","FAQ_20_H1":"Onde está a pasta do cache?","FAQ_20_P1":"No Windows, o cache do Stremio fica no drive ao qual você selecionou nas configurações (exemplo \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"No MacOS, fica localizado em \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"No Linux, fica localizado em \\"~/.stremio/stremio-cache\\" ou \\"~/stremio-cache\\"","FAQ_21_H1":"Eu recebi a mensagem de erro \\"Servidor de streming não encontrado\\", o que posso fazer?","FAQ_21_P1":"Se você recebeu esta mensagem, isso implica em uma das possibilidades:","FAQ_21_P2":"1) Você está tentando usar um Addon suportada pelo código do YouTube/BitTorrent, através de nossa ${1}versão web${2}. Nesse caso, você deve instalar nossa versão para desktop de ${3}nosso website${4}.","FAQ_21_P3":"2) Há algo de errado com a instalação do Stremio. Neste caso, tente reinstalar nossa versão mais recente ${1}do website${2}. Se isso nao ajudar, tente desabilitar os programas de antivirus e firewal, reinicie seu PC e tente novamente. Se isso não funcionar, por favor nos contate pelo ${3}nosso grupo do Facebook${4}.","FAQ_22_H1":"Eu não posso ver/usar a maioria das Addons no iOS","FAQ_22_P1":"Devido a restrições nos termos e condições da loja da Apple, nós temos restringido somente aplicativos iOS de um grupo particular de Addons.","FAQ_22_P2":"Mas esteja avisado - haverão mais Addons para iOS no futuro, e nós poderemos também adicionar uma integração que permitirá o uso de todas Addons do Stremio graças a conexão do aplicativo iOS com o servidor de Streaming do Stremio."}')},5857:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filme","TYPE_series":"Série","TYPE_tv":"Canal de TV","TYPE_channel":"Canal","TYPE_other":"Outro","TYPE_movie_PL":"Filmes","TYPE_series_PL":"Séries","TYPE_tv_PL":"TV","TYPE_channel_PL":"YouTube","TYPE_other_PL":"Outros","TYPE_ALL":"Todos","VIDEO":"Vídeos","BACK":"Voltar","MORE":"Mais","DONE":"Concluído","COPY":"Copiar","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Modo de casting","CASTING_MODE_HLSV2":"Predefinido","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Sem transcodificação","Discover":"Explorar","Board":"Painel","Library":"Biblioteca","My Library":"A minha biblioteca","Calendar":"Calendário","NOTIFICATION_ONLINE":"Estás online","NOTIFICATION_OFFLINE":"Estás offline","INTERNET_CONNECTION":"Ligação à Internet","STORAGE_FULL_TITLE":"Aviso: Armazenamento cheio!","STORAGE_FULL_TEXT":"Não será possível guardar as definições ou informações de conta. Considera fechar o Stremio e voltar a abrir, caso este erro persista, poderás ter de reinstalar o Stremio.","SEARCH":"Pesquisar","SEARCH_NO_RESULTS":"Não foram encontrados resultados","SEARCH_EXPLANATION_CONTENT":"Pesquisa por filmes, séries, canais YouTube e de TV","SEARCH_EXPLANATION_PEOPLE":"Pesquisa por atores, realizadores e argumentistas","SEARCH_PASTE_LINKS":"Colar links HTTP e Magnet","SEARCH_OR_PASTE_LINK":"Pesquisa ou cola o link","ADD_TO_LIB":"Adicionar à biblioteca","REMOVE_FROM_LIB":"Remover da biblioteca","ADDED_TO_LIB":"Adicionado à biblioteca","REMOVED_FROM_LIB":"Removido da biblioteca","TRAILER":"Trailer","WATCH_TRAILER":"Ver trailer","WATCH_NOW":"Ver agora","SHOW":"Mostrar","SHOW_MOVIE":"Mostrar filme","WATCH_RANDOM":"Ver aleatório","IMDB_RATING":"Classificação IMDb","YEAR":"Ano","DIRECTOR":"Realizador","WRITER":"Argumentista","LEAD_ACTORS":"Elenco Principal","CAST":"Elenco","CREW":"Equipa técnica","SHOW_MORE_CAST":"Mostrar mais »","AIRED":"Transmissão original","SEASONS":"Temporadas","GENRE":"Género","CATALOG":"Catálogo","SUMMARY":"Sinopse","SHOW_MORE":"Mostrar mais","SIMILAR":"Semelhante","UPCOMING":"Próximos","ENDED":"Finalizados","DURATION":"Duração","FEATURED":"Destaque","METADATA":"Metadados","CATEGORY":"categoria","LINKS_GENRES":"Géneros","LINKS_CAST":"Elenco","LINKS_DIRECTORS":"Realizadores","SEARCH_VIDEOS":"pesquisar vídeos","SEARCH_PLACEHOLDER":"pesquisar ou colar link","ADDON":"Addon","ADDONS":"Addons","OFFICIAL":"oficial","ADDONS_OFFICIAL":"Addons oficiais do Stremio","ADDONS_POPULAR":"Popular na tua área","ADDON_FREE":"gratuito","ADDON_PEERED":"partilhado","ADDON_SUBSCRIPTION":"subscrição","ADDON_STREAM_GEORESTRICTED":"indisponível no teu país","ADDON_STREAM_OFFLINECACHE":"Cache offline","ADDON_STREAM_LOCALFILE":"Ficheiro local","SHARE_ADDON":"Partilhar addon","AVAILABLE_STREAMS":"Streams disponíveis","NO_STREAM":"Nenhuma stream disponível","ALL_ADDONS":"Todos","INSTALL_MORE_ADDONS":"Para mais streams, por favor, instala mais addons","STREAM_NOT_SUPPORTED":"A stream escolhida não é suportada nesta plataforma.","ADDON_CATALOGUE":"Mostrar todos os addons »","ADDON_CATALOGUE_MORE":"Instalar addons »","REPO_ADDED":"Repositório adicionado","ADDON_REPO_EXIST_ERR":"Esta coleção de addons já existe","ADDON_REPO_ERR":"Ocorreu um erro ao adicionar a coleção","ADDON_ADD_ERR":"Ocorreu um erro ao adicionar o addon","ERR_ADDON_PROTECTED":"Não é possível desinstalar o addon, é protegido","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Ocorreu um erro - a autenticação falhou.","ERR_NOT_COLLECTION_URL":"Não é um link de coleção","ERR_NOT_ADDON_URL":"Não é um link de addon válido","ERR_DETECTFROMURL":"Não foi possível detetar a extensão pelo link","ADDON_DUPLICATE_WARNING":"Aviso: extensão duplicada","ADDON_COLLECTION_SET_FAILED":"A sincronização dos addons instalados para a tua conta falhou","SETTINGS_DATA_EXPORT":"Exportar dados","ADDON_PULL_FAILED":"A sincronização dos addons instalados a partir da tua conta falhou","REFRESH_ON_CLICK":"Clica para tentar novamente","STILL_IN_THEATER":"Filme ainda nos cinemas","WATCH_IN_CINEMA":"Vê-o no cinema mais perto de ti","IN_THEATER":"Nos cinemas","GET_TICKETS":"Obter bilhetes","UPCOMING_EPISODE":"Próximo episódio","UPCOMING_EPISODE_MESSAGE":"Este episódio estará disponível brevemente","MISSING_DATE_EPISODE":"Data do episódio em falta","MISSING_DATE_EPISODE_MESSAGE":"Este episódio ainda não foi transmitido","CHANNEL_NOT_SCRAPED":"Este canal não está disponível.
    Volta a tentar dentro de minutos.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Adiciona à biblioteca para receberes notificações quando estiver disponível.","GET_NOTIFIED_WHEN_AVAILABLE":"Serás notificado quando estiver disponível.","WARNING_STREAMING_SERVER":"Atenção: o servidor de transmissão local não foi encontrado. A transmissão através do YouTube e BitTorrent não estará disponível.","WARNING_STREAMING_SERVER_DISMISS":"Dispensar","WARNING_STREAMING_SERVER_LATER":"Mais tarde","DECODER_WARNING":"Atenção: provavelmente este vídeo não é compatível com o teu hardware. Tem em conta de que a reprodução poderá ser lenta.","PLAYER_ERROR":"Ups, ocorreu um erro na reprodução","PLAYER_ERROR_LOOKSLIKE":"Isto parece ser","PLAYER_ORIENTATION":"Orientação da reprodução","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Bloqueado","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Reprodução bloqueada no modo paisagem","PLAYER_ORIENTATION_SENSOR":"Reprodução automática (sensor)","PLAYER_PLAYBACK_SPEED":"Velocidade de reprodução","PLAYER_PLAYBACK_ERROR":"Erro de reprodução, tente novamente","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Erro desconhecido","PLAYER_PLAYBACK_ERROR_DEFAULT":"Pedimos desculpa, este vídeo não pode ser transmitido por {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Idioma das legendas","PLAYER_SUBTITLES_VARIANTS":"Variantes das legendas","PLAYER_SUBTITLES_SETTINGS":"Definições das legendas","PLAYER_SUBTITLES_DISABLED":"As legendas estão desativadas","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Posição vertical","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Reproduzir","PLAYER_PAUSE":"Colocar em pausa","PLAYER_NEXT_VIDEO":"Próximo vídeo","PLAYER_MUTE":"Silenciar","PLAYER_UNMUTE":"Ativar som","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Direto","PLAYER_NEXT_VIDEO_TITLE":"A seguir","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Fechar","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Ver agora","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"A transmitir de","CASTING_TO":"A transmitir para","NETWORK_STATUS":"Estado da rede","STREAM_SPEED":"Velocidade de receção:","STREAM_BUFFERED":"Carregado:","PEERS_INFO":"Informação dos pares","PEERS_ACTIVE":"Ativo:","PEERS_CONNECTED":"Ligado:","PEERS_WAITING":"À espera:","TRANSCODING_WARNING":"Atenção: a transcodificar vídeo.","STREAM_LOADING":"a carregar...","PLAYING_LOCAL":"a reproduzir a partir de um ficheiro local","PLAYING_CACHE":"a reproduzir a partir da cache","WRONG_SUBS":"Legendas incorretas","ERR_SUBS_LOADING_TITLE":"Erro ao carregar as legendas","ERR_SUBS_LOADING":"Não foi possível carregar as legendas, poderá haver um erro no addon que estás a utilizar ou com a tua ligação à Internet","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Não foi possível carregar as seguintes legendas","ERR_CASTING_UPDATE_TITLE":"Não foi possível atualizar as informações do dispositivo de transmissão: o servidor de transmissão pode estar offline","CHOOSE_DEVICE":"Escolhe um dispositivo para transmitir","NO_CAST_DEVICES":"Sem dispositivos de transmissão disponíveis.","NO_SETTINGS":"Não há definições disponíveis.","PHONE_TABLET":"Telemóvel / Tablet","SUBTITLES":"Legendas","SUBTITLES_CHANGE":"Alterar legendas para ","SUBTITLES_CHANGE_NONE":"Desculpa, mas não existe mais legendas para este idioma","SUBTITLES_CHANGE_ACIVE":"As legendas #{{subtitlesDialog.activeIdx + 1}} estão ativas. Clica em \\"Continuar\\" para ativar as legendas #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativamente,","SUBTITLES_ADJUST_DELAY":"Ajusta o atraso das legendas:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Ou utiliza as teclas G / H para ajustar os tempos.","SUBTITLES_ADJUST_DELAY_TIP":"Dica: Podes utilizar as teclas G / H durante a reprodução para ajustar.","SUBTITLES_DELAY":"Atraso de legendas:","SUBTITLES_LOADING":"A carregar as legendas...","SUBTITLES_UNAVAILABLE":"Não há legendas externas disponíveis","SUBTITLES_DISABLED":"Desativado","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Áudio","DEFAULT_LANGUAGE":"Idioma predefinido","DEFAULT_SECONDARY_LANGUAGE":"Idioma secundário predefinido","SEASON":"Temporada","EPISODE":"Episódio","SPECIAL":"Especiais","SORT":"Ordenar","SORT_BY":"Ordenar por","FILTER":"Filtro","SORT_TRENDING":"Tendências","SORT_RECENT":"Recentes","SORT_ALPHABET":"A-Z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"Classificação","SORT_WATCHED":"Vistos","SORT_YEAR":"Ano","SELECT_TYPE":"Selecionar tipo","SELECT_SORT":"Selecionar ordem","SELECT_CATALOG":"Selecionar catálogo","SELECT_GENRE":"Selecionar género","SORT_LASTWATCHED":"Por últimos vistos","SORT_NAME":"Por nome","SORT_TIMESWATCHED":"Por vezes vistas","New for You":"Novo para ti","New Episodes":"Novos episódios","New Videos":"Novos vídeos","Recommendations":"Recomendações","LIBRARY_RESUME":"Retomar","LIBRARY_PLAY":"Reproduzir","LIBRARY_DETAILS":"Detalhes","LIBRARY_RESUME_DISMISS":"Fechar","LIBRARY_CLEAR_PROGRESS":"Limpar progresso","LIBRARY_REMOVE":"Remover","LIBRARY_NOT_LOGGED_IN":"A biblioteca apenas está disponível para utilizadores com a sessão iniciada","CALENDAR_NOT_LOGGED_IN":"O calendário apenas está disponível para utilizadores com a sessão iniciada","NOT_LOGGED_IN_CLOUD":"Acede aos teus filmes e séries favoritas a qualquer altura, em qualquer lugar","NOT_LOGGED_IN_RECOMMENDATIONS":"Recomendações adaptadas ao teu histórico de visualizações","NOT_LOGGED_IN_NOTIFICATIONS":"Nunca percas um episódio outra vez","NOT_LOGGED_IN_CALENDAR":"Programa o teu calendário de visualizações pessoal","DISCOVER_FEATURED":"Em destaque","DISCOVER_TOP":"Popular","DISCOVER_OSCAR":"Vencedores de Óscares","DISCOVER_WARNING_TITLE":"Ups!","DISCOVER_EMPTY_CATALOG":"Este addon não possui conteúdo.","DISCOVER_ADULT_WARNING":"Este conteúdo é apenas para adultos. Tens mais de 18 anos?","DISCOVER_NOADDON_WARNING":"Atenção: nenhum addon do Stremio ativo para este tipo. Ao exibir ficheiros guardados, nada será atualizado.","DISCOVER_LOAD_ERR":"Ocorreu um erro e não foi possível carregar o conteúdo.","DISCOVER_ADDON_UNINSTALLED":"Este conteúdo já não está disponível, poderás ter de reinstalar o addon.","UNINSTALL_THIS_ADDON":"Desinstalar este addon","ERR_ADDON_NOT_INSTALLED":"Este addon não está instalado. Instalar agora?","DETAIL_RECEIVE_NOTIF_SERIES":"Receber notificações para novos episódios.","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receber notificações para novos vídeos.","SIDEBAR_SHOW_STREAMS":"Mostrar streams","RELAUNCH":"Reiniciar agora!","UPGRADE":"Está disponível uma nova versão! Atualiza para a versão mais recente do Stremio","RELOAD_UI":"Recarregar interface","MANUAL_UPDATE_TITLE":"Atualiza para uma versão do Stremio mais recente.","MANUAL_UPDATE_LINE1":"Estás a utilizar uma versão do Stremio que se encontra desatualizada, é recomendável que atualizes para a versão mais recente.","MANUAL_UPDATE_LINE2":"Atualiza assim que for possível.","BUTTON_UPDATE_LATTER":"Agora não","BUTTON_UPDATE_NOW":"Atualizar","ANONYMOUS_USER":"Utilizador anónimo","DONT_HAVE_ACC":"Não tens uma conta?","HAVE_ACC":"Já tens conta?","PASSWORD":"Palavra-passe","PASSWORD_CONFIRM":"Confirmar palavra-passe","EMAIL":"E-mail","FB_LOGIN":"Iniciar sessão com o Facebook","FB_NOTHINGSHARED":"Nada é partilhado sem a tua permissão","FB_NOPOST":"Não publicaremos nada na tua cronologia","OR":"ou","I_ACCEPT":"Aceito os","I_ACCEPT_BY_CLICKING":"Ao clicar no botão acima certifico-me de que aceito os ","TOS":"Termos e Condições","MUST_ACCEPT_TERMS":"Deves aceitar os termos e condições","PASSWORDS_NOMATCH":"As palavras-passe não coincidem","SIGN_UP":"Registar","SIGN_UP_EMAIL":"Regista-te com um e-mail","CLICK_TO_SIGN_UP":"Clica aqui para registares uma nova conta.","LOG_IN":"Iniciar sessão","LOG_OUT":"Terminar sessão","EXIT_FULLSCREEN":"Sair do modo de ecrã inteiro","ENTER_FULLSCREEN":"Abrir em modo de ecrã inteiro","PLAY_URL_MAGNET_LINK":"Abrir URL/Magnet link","HELP_FEEDBACK":"Ajuda e opinião","TERMS_OF_SERVICE":"Termos de utilização","PRIVACY_POLICY":"Política de privacidade","ABOUT_STREMIO":"Sobre o Stremio","USER_PANEL":"Painel do utilizador","LOGIN_LABEL":"Iniciar sessão","GUEST_LOGIN":"Iniciar sessão como convidado","GUEST_LOGIN_NOTICE":"Não é recomendado que inicies sessão como convidado. Autentica-te para que o Stremio sincronize a tua biblioteca e te mostre notificações das tuas séries/canais. Tens a certeza de que queres continuar?","GUEST_LOGIN_NOTICE_2":"Não é recomendado que inicies sessão como convidado - não vais ter acesso à tua biblioteca e às notificações do painel, sendo estas funções vitais do Stremio. Tens a certeza de que queres continuar?","CLICK_HERE":"Clica aqui","WRONG_PASSWORD":"Palavra-passe incorreta. Caso te tenhas esquecido da tua palavra-passe, ","SET_A_PASS":"Introduz uma nova palavra-passe","RESET_PASSWORD":"Redefinir palavra-passe","FORGOT_PASSWORD":"Esqueceste-te da tua palavra-passe?","EMAIL_USED_WITH_FB":"Este e-mail foi utilizado com uma sessão do Facebook.","INVALID_EMAIL":"Introduzir um e-mail válido","INVALID_PASSWORD":"Introduzir uma palavra-passe válida","CONN_ERR":"Erro de ligação - Por favor, tenta novamente mais tarde.\\n\\nSe o problema persistir, desativa ou configura a tua firewall e/ou o teu anti-vírus (principalmente o Bitdefender).","IMPORT_FROM_GUEST":"Importar biblioteca a partir da conta de convidado","RECEIVE_UPDATES_EMAIL":"Receber notificações por e-mail do Stremio","LOGIN_FAILED":"A autenticação falhou.","SIGNUP_FAILED":"Ocorreu um erro ao criar a tua conta.","SEARCH_FAILED":"A pesquisa falhou","EMAIL_USED":"Este e-mail já está a ser utilizado.","WAITING_FB_LOGIN":"Iniciar sessão com o Facebook...","EXTERNAL_PLAYER_TITLE":"Abrir com um reprodutor de vídeo externo","EXTERNAL_REMEMBER_PLAYER":"Relembrar a tua escolha?","EXTERNAL_ALWAYS_PLAY":"Sim","EXTERNAL_ONLY_ONCE":"Não","BEST_FIT":"Melhor ajuste","FIT_SCREEN":"Ajustar ao ecrã","FILL":"Ajustar","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Diz-nos do que gostas","INTRO_TASTE_LONG":"Conta-nos sobre o que gostas de ver","INTRO_TASTE_PICK":"Seleciona {{interestsRemaining}} dos teus interesses","INTRO_TASTE_PICK_MORE":"Seleciona mais {{interestsRemaining}} dos teus interesses","INTRO_TASTE_HELP_US":"Ajuda-nos a saber mais sobre ti.","INTRO_TASTE_CHOOSE_THESE":"Escolhe alguns destes:","INTRO_TASTE_CHOOSE_MIN":"Escolhe pelo menos 3 categorias","INTRO_TASTE_CHOOSE_MIN_ERR":"Tens de escolher pelo menos 3 categorias!","INTRO_TASTE_LIFESTYLE":"Estilo de vida","INTRO_TASTE_SPORTS":"Desporto","INTRO_TASTE_FOOD_HEALTH":"Gastronomia e saúde","INTRO_TASTE_BEAUTY_FASHION":"Moda e beleza","INTRO_TASTE_NEWS":"Notícias","INTRO_TASTE_GAMING":"Videojogos","INTRO_TASTE_SCIENCE_EDU":"Ciência e educação","INTRO_TASTE_MUSIC":"Música","INTRO_TASTE_TRAVEL":"Viagens","INTRO_TASTE_LATE_NIGHT":"Late night show","INTRO_TASTE_REALITY":"Reality show","INTRO_TASTE_COMEDY":"Comédia","INTRO_TASTE_DIY":"Faz tu mesmo","INTRO_TASTE_TECH":"Tecnologia","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"O addon selecionado não é suportado nesta plataforma.","ADDON_DISCLAIMER":"Ao utilizar um addon de terceiros estarás sujeito à sua responsabilidade e às leis do governo onde está localizado.","ADDON_ACTIVATE":"Ativar este addon?","ADDON_REPO_ADD":"URL do repositório do addon","ADDON_ADD":"Adicionar","ADD_ADDON":"Adicionar addon","ADD_ADDON_DESCRIPTION":"Podes adicionar um addon através de um link externo, que aparecerá nos Addons instalados.","PASTE_ADDON_URL":"Cola o URL do addon","WHATS_NEW":"O que há de novo","BUTTON_CONTINUE":"Continuar","BUTTON_ACTIVATE":"Ativar","BUTTON_ACTIVATED":"Ativo","BUTTON_CANCEL":"Cancelar","BUTTON_SUBMIT":"Submeter","BUTTON_DISMISS_ALL":"Fechar tudo","BUTTON_VIEW_ALL":"Ver tudo","BUTTON_SEE_ALL":"Ver tudo","BUTTON_COLOR_TRANSPARENT":"Transparente","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"A tua biblioteca está vazia. Descobre o quão útil pode ser :) ","HOW_START":"Aqui está como podes começar:","LIB_EMPTY_CAL":"O teu calendário mostra as séries da biblioteca.","HOW_START_CAL":"Aqui está como podes adicionar uma série:","LIB_EMPTY_BOARD":"O painel mostra notificações e recomendações relacionadas com a tua biblioteca.","HOW_START_BOARD_WAIT":"Por favor, adiciona algumas séries ou canais à tua biblioteca e dá-nos uns instantes para as processar :)","HOW_START_BOARD":"Aqui está como podes adicionar séries e filmes:","IMPORT_FB":"Importar coisas de que gostas do Facebook","IMPORT_TRAKT":"Importar a tua biblioteca do Trakt","IMPORT_DISCOVER":"Encontra coisas interessantes em Explorar","IMPORT_DISK":"Importar filmes ou séries que tenhas no disco local","PLEASE_CREATE_ACC":"Por favor, cria uma conta para ativar a sincronização da biblioteca e do painel.","IMPORT_DISCOVER_SIGNUP":"Regista-te e encontra coisas interessantes em Explorar","IMPORT_DISK_SIGNUP":"Regista-te e importa filmes ou programas que tenhas no disco local","LIB_EMPTY_CLOUD":"Biblioteca na nuvem","LIB_EMPTY_CLOUD_DESC":"A biblioteca pessoal na nuvem sincroniza todos os teus dispositivos","LIB_EMPTY_EARLY":"Chegaste demasiado cedo","LIB_EMPTY_EARLY_DESC":"Receber notificações quando existirem episódios disponíveis","LIB_EMPTY_PERSONAL":"Privado","LIB_EMPTY_PERSONAL_DESC":"Receber recomendações pessoais","LIB_EMPTY_CALENDAR_DESC":"Agenda no teu calendário pessoal de visualização","LIB_EMPTY_ALL":"Inicia sessão para obteres tudo isto:","LIB_EMPTY_BEST":"Inicia sessão para obteres o melhor do Stremio","LIB_EMPTY_OTHER":"Inicia sessão para ativares o calendário e outras funcionalidades incríveis","CALENDAR_ADDED":"O calendário do Stremio foi adicionado ao calendário do teu computador.","CALENDAR_ADDED_MSG":"Se isto não funcionar, adiciona manualmente este link ao calendário","TRAKT_EXPIRED":"A autenticação do Trakt falhou, vai às definições e tenta novamente.","TRAKT_REQUIRES_LOGIN":"Erro ao iniciar sessão.","TRAKT_REQUIRES_LOGIN_MSG":"Precisas de iniciar sessão para avançar.","SETTINGS_LABEL":"Definições","SETTINGS_NAV_GENERAL":"Geral","SETTINGS_NAV_PLAYER":"Reprodutor","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Atalhos","SETTINGS_SHORTCUT_RELOAD_APP":"Recarregar app","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Abrir definições","SETTINGS_SHORTCUT_SWITCH_TABS":"Alternar separadores","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Avançar no ciclo de separadores","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Voltar atrás no ciclo de separadores","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navega entre menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Ir para a pesquisa","SETTINGS_SHORTCUT_EXIT_BACK":"Sair / Voltar atrás","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Alternar menu de velocidade de reprodução","SETTINGS_SHORTCUT_MENU_VIDEOS":"Alternar menu de vídeos","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Alternar menu das legendas","SETTINGS_SHORTCUT_MENU_INFO":"Alternar menu das informações","SETTINGS_SHORTCUT_FULLSCREEN":"Entrar / Sair do modo de ecrã inteiro","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Mostrar controlos","SETTINGS_SHORTCUT_PLAY_PAUSE":"Reproduzir / Colocar em pausa","SETTINGS_SHORTCUT_VOLUME_UP":"Aumentar o volume","SETTINGS_SHORTCUT_VOLUME_DOWN":"Diminuir o volume","SETTINGS_SHORTCUT_SEEK_NEXT":"Avançar na reprodução","SETTINGS_SHORTCUT_SEEK_PREV":"Recuar na reprodução","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Retroceder","SETTINGS_SHORTCUT_SEEK_FORWARD":"Avançar","SETTINGS_SHORTCUT_PLAY_NEXT":"Reproduzir próximo","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Aumentar o tamanho das legendas","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Diminuir o tamanho das legendas","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Aumentar o atraso das legendas","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Diminuir o atraso das legendas","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Mostrar / Ocultar barra lateral","SETTINGS_SHORTCUT_OR":"ou","SETTINGS_SHORTCUT_TO":"para","SETTINGS_SHORTCUT_SPACE":"Espaço","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Autenticar","SETTINGS_FACEBOOK_IMPORT":"Importar","SETTINGS_CALENDAR_SUBSCRIBE":"Subscrever","SETTINGS_INTERFACE_LANGUAGE":"Idioma da interface","SETTINGS_LAUNCH_STARTUP":"Iniciar com o sistema","SETTINGS_VLC_DEFAULT":"Reproduzir com o VLC","SETTINGS_UI_LANGUAGE":"Idioma","SETTINGS_FULLSCREEN_EXIT":"Clica em ESC para sair do ecrã inteiro","SETTINGS_GAMEPAD":"Ativar o suporte do comando de jogos (Gamepad)","SETTINGS_CLOSE_WINDOW":"Fechar o Stremio quando fechar a janela","SETTINGS_SUBTITLES_LANGUAGE":"Idioma predefinido das legendas","SETTINGS_SUBTITLES_SIZE":"Tamanho predefinido das legendas","SETTINGS_SUBTITLES_BACKGROUND":"Fundo das legendas","SETTINGS_SUBTITLES_COLOR":"Cor das legendas","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Cor de contorno das legendas","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Cor de fundo das legendas","SETTINGS_SEEK_KEY":"As teclas de seta avançam / retrocedem no tempo","SETTINGS_SEEK_KEY_SHIFT":"As teclas de seta avançam / retrocedem no tempo quando a tecla Shift é pressionada","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Duração do retrocesso e do avanço rápido","SETTINGS_BINGE":"Reproduzir o próximo episódio automaticamente","SETTINGS_NEXT_VIDEO":"Mostrar uma notificação ao iniciar o próximo episódio.","SETTINGS_NEXT_VIDEO_TRIGGER":"Mostrar uma notificação ao iniciar o próximo episódio para:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Duração do pop-up do próximo vídeo","SETTINGS_PLAY_IN_BACKGROUND":"Reproduzir em plano de fundo","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Reproduzir num leitor externo","SETTINGS_RESIZE":"Redimensionar automaticamente a janela antes de reproduzir","SETTINGS_OVERRIDE_SERVER":"Substituir o URL do servidor de streaming (avançado)","SETTINGS_SERVER_URL":"URL do servidor de Streaming: ","SETTINGS_SERVER_AVAILABLE":"O servidor de streaming está disponível.","SETTINGS_SERVER_UNAVAILABLE":"O servidor de Streaming não está disponível.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Erro","SETTINGS_SERVER_CONFIGURE_TITLE":"Configurar o URL do servidor de streaming","SETTINGS_SERVER_CONFIGURE_INPUT":"Introduz um URL de servidor de streaming","SETTINGS_SERVER_CACHE_SIZE":"Tamanho da cache","SETTINGS_SERVER_TORRENT_PROFILE":"Perfil do torrent","SETTINGS_HTTPS_ENDPOINT":"Endpoint de streaming HTTPS: ","SETTINGS_USE_BETA":"Utilizar sempre a última versão Beta","SETTINGS_IMPORT_FB":"Importar do Facebook","SETTINGS_IMPORT_DISK":"Importar do disco local","SETTINGS_IMPORT_TRAKT":"Importar do Trakt","SETTINGS_PAUSE_MINIMIZED":"Colocar a reprodução em pausa quando minimizado","SETTINGS_HWDEC":"Transcodificação acelerada por hardware","SETTINGS_BACKGROUND":"Reprodução em segundo plano","SETTINGS_SUBSCRIBE_CALENDAR":"Subscrever calendário","SETTINGS_REQ_EXPORT":"Exportar dados","SETTINGS_ACC_DELETE":"Pedir para eliminar conta","SETTINGS_CHANGE_PASSWORD":"Alterar palavra-passe","SETTINGS_TOS":"Termos do serviço","SETTINGS_SUPPORT":"Contactar o suporte","SETTING_LANGUAGE":"Idioma","SETTINGS_TRAKT":"Recomendações do Trakt","SETTINGS_TRAKT_LOGOUT":"Terminar sessão do Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Lê o código QR para abrir remotamente","SETTINGS_DESKTOP_NOTIFICATIONS":"Notificações no computador","SETTINGS_DATA_SAVER":"Economizador de Dados","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"Legendas predefinidas","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Selecionar automaticamente o ficheiro de áudio","SETTINGS_DEFAULT_AUDIO_TRACK":"Ficheiro de áudio predefinido","SETTINGS_ACCOUNT":"Conta","SETTINGS_VERSION":"versão","SETTINGS_MPV_WINDOW":"Abrir reprodutor numa janela em separado (avançado)","SETTINGS_PLAY_IN_EXTERNAL":"Abrir sempre num reprodutor externo","SETTINGS_STORAGE_BUTTON":"Limpar armanezamento local","SETTINGS_STORAGE_MODAL_TITLE":"Tens a certeza?","SETTINGS_STORAGE_MODAL_MESSAGE":"Esta ação fará com que o armazenamento seja limpo e termine a tua sessão.","SETTINGS_HWDEC_PICKER":"Escolhe a configuração de decodificação acelerada por hardware","SETTINGS_HW_AUTOMATIC":"Automático","SETTINGS_HW_DISABLED":"Desativado","SETTINGS_HW_ACCELERATED":"Aceleração de decodificação","SETTINGS_HW_FULL":"Aceleração total","SETTINGS_HW_LEGACY":"Legado","SETTINGS_SECTION_SUBTITLES":"Legendas","SETTINGS_SECTION_AUDIO":"Áudio","SETTINGS_SECTION_CONTROLS":"Controlos","SETTINGS_SECTION_AUTO_PLAY":"Reprodução automática","SETTINGS_SECTION_ADVANCED":"Avançadas","SUBSPICKER_AUDIO":"Áudio","SUBSPICKER_SUBTITLES":"Legendas de addons","SUBSPICKER_BLACK_BACKGROUND":"Utilizar cor de fundo preta","SUBSPICKER_VERTICAL_OFFSET":"Compensação vertical","SUBSPICKER_SIZE":"Tamanho","SUBSPICKER_DELAY":"Atraso","SUBSPICKER_EMBEDDED_SUBS":"Legendas embutidas","MOBILE_PRIVACY_POLICY":"Política de Privacidade","MOBILE_CRASH_REPORTING":"Relatório de avarias","MOBILE_ZOOM_TO_FILL":"Zoom para preencher o ecrã","MOBILE_PASSTHROUGH":"Saída de áudio digital (passthrough)","MOBILE_RUN_LOW_BATTERY":"Executar com a bateria fraca","MOBILE_RUN_FOREGROUND":"Executar como serviço de primeiro plano","MOBILE_PERFORMANCE":"DESEMPENHO E ESTABILIDADE","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"O código QR expira em ","MOBILE_LOG_INTO":"Inicia sessão na tua conta Stremio ","MOBILE_SCAN_QR":"Lê o código QR acima ou vai para ","MOBILE_LINK_ACCOUNT":"Ligar conta","MOBILE_SPEEDPICKER_CANCEL":"Cancelar","MOBILE_SPEEDPICKER_LABEL":"Selecionar velocidade de reprodução","MOBILE_EMPTY_LIBRARY":"A tua biblioteca está vazia","MOBILE_NO_ADDON_ACTIVE":"Nenhum addon do Stremio ativo para este tipo.","MOBILE_ORGANIZER_WARNING":"A app Stremio Organizer dá-te apenas acesso a funcionalidades limitadas. Para uma lista de streams reproduzíveis e para teres a experiência Stremio completa, utiliza o Stremio no desktop.","MOBILE_ADDON_LOADING":"ainda está a carregar","MOBILE_ADDONS_LOADING":"os addons ainda estão a carregar","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configura o teu addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configurar addon","MOBILE_ORGANIZER_ADDONS_WARNING":"A app Stremio Organizer dá-te apenas acesso a uma seleção limitada de addons. Para teres a experiência Stremio completa, utiliza o Stremio no desktop.","MOBILE_DISCONNECT":"Desconectar","MOBILE_LOOKING_FOR_DEVICES":"À procura de dispositivos...","MOBILE_CAST_TO":"Transmitir para","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Eliminar conta","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"A eliminação da conta não é imediata devido a obrigações legais. Depois de pedires a eliminação da tua conta, terás de utilizar um endereço de e-mail/perfil do Facebook diferente para criares uma nova conta do Stremio no futuro.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirmar a eliminação da conta","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"A tua conta foi criada através do Facebook. Para eliminares a tua conta, utiliza o nosso portal do utilizador em www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Por favor, introduz a tua palavra-passe para confirmar a eliminação da conta.","MOBILE_DELETE_ACCOUNT_BUTTON":"Eliminar conta","NAVIGATION_ON":"Ligado","NAVIGATION_OFF":"Desligado","MARKETING_AGREE":"Concordo em receber comunicações de marketing do Stremio","QUIT":"Sair","CONNECTED":"Ligado","AUTHENTICATE":"Autenticado","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Seleciona a unidade para cache","ENABLE_LOCAL_FILES_ADDON":"Ativa o addon de ficheiros locais (requer reinicialização)","LOCAL_ADDON_NOT_ENABLED":"O addon local não está ativado. Clica aqui para o ir ativar às definições","ENABLE_REMOTE_HTTPS_CONN":"Ativar conexões HTTPS remotas","TORRENT_PROFILE":"Perfis de torrents","DATA_CACHING":"Caching de dados","MAGNET_PARSING":"A analisar o magnet link","January":"janeiro","February":"fevereiro","March":"março","April":"abril","May":"maio","June":"junho","July":"julho","August":"agosto","September":"setembro","October":"outubro","November":"novembro","December":"dezembro","Monday":"segunda-feira","Tuesday":"terça-feira","Wednesday":"quarta-feira","Thursday":"quinta-feira","Friday":"sexta-feira","Saturday":"sábado","Sunday":"domingo","Action":"Ação","Comedy":"Comédia","War":"Guerra","Family":"Família","Animation":"Animação","Adventure":"Aventura","Fantasy":"Fantasia","Crime":"Crime","Mystery":"Mistério","Romance":"Romance","Drama":"Drama","Horror":"Terror","Thriller":"Thriller","Sci-Fi":"Ficção científica","Music":"Música","Biography":"Biografia","Documentary":"Documentário","Sport":"Desporto","Musical":"Musical","Western":"Western","Film-Noir":"Film-noir","News":"Notícias","History":"História","Game-Show":"Concursos","Reality-TV":"Reality show","Talk-Show":"Talk-show","Film & Entertainment":"Filmes e entretenimento","Gaming":"Videojogos","From TV":"Da TV","Lifestyle":"Estilo de vida","Science & Education":"Ciência e Educação","Cooking & Health":"Culinária e Saúde","Beauty & Fashion":"Beleza e Moda","Sports":"Desporto","News & Politics":"Notícias e política","How-to & DIY":"Faz por ti mesmo","Tech":"Tecnologia","Automotive":"Automobilismo","Causes & Non-Profits":"Causas e ações sem fins lucrativos","Movies":"Filmes","Uk Live Tv":"Reino Unido","Fashion":"Moda","Business News Radio":"Negócios (Rádio)","Business Tv":"Negócios","Cars & Auto":"Automobilismo","Comedy Radio":"Comédia (Rádio)","Lifestyle Radio":"Estilo de vida (Rádio)","News Tv":"Notícias","Food And Wine":"Gastronomia e vinicultura","Latino Tv":"Latino","Shopping Tv":"Compras","Religion":"Religião","Kids":"Infantil","Body & Soul":"Corpo e alma","Education":"Educação","Indian Tv":"Índia","Extreme Sports":"Desportos radicais","Middle Eastern Tv":"Médio Oriente","Celebrity Tv":"Celebridades","Science Tv":"Ciência","Bikini babe":"Biquíni","Outdoors":"Ar livre","German Tv":"Alemanha","French Tv":"França","Italian Tv":"Itália","Gamer Tv":"Videojogos","Travel":"Viagens","Asian Tv":"Ásia","Entertainment":"Entretenimento","News Radio":"Notícias (Rádio)","Music Radio":"Música (Rádio)","Language Learning":"Aprender idiomas","Science Radio":"Ciência (Rádio)","Tech Radio":"Tecnologia (Rádio)","Science & Technology Vod":"Ciências e Tecnologias (VOD)","new video":"novo vídeo","new episode":"novo episódio","new movie":"novo filme","recommended":"recomendado","we recommend":"recomendamos","offer of the day":"oferta do dia","news":"notícias","music video":"Videoclipe","CTX_SHOW_HOTKEYS":"Mostrar teclas de acesso rápido","CTX_DISMISS_NOTIF":"Descartar notificação","CTX_DISMISS_ALL":"Descartar todas","CTX_SHARE":"Partilhar","CTX_COPY_SHARE_LINK":"Copiar link de partilha","CTX_COPY_MAGNET_LINK":"Copiar o magnet link","CTX_COPY_STREAM_LINK":"Copiar link de transmissão","CTX_DOWNLOAD_VIDEO":"Transferir este vídeo","CTX_DOWNLOAD_SUBS":"Transferir as legendas","CTX_VIEW_ON_YOUTUBE":"Ver no YouTube","CTX_SHOW":"Mostrar","CTX_PLAY":"Reproduzir","CTX_PLAY_IN":"Reproduzir em","CTX_PLAY_ON":"Reproduzir no","CTX_WATCH_ON":"Ver em","CTX_WATCH":"Ver","CTX_WATCHED":"Visto","CTX_WATCH_BEGINNING":"Ver do início","CTX_WATCH_MOBILE":"Ver num dispositivo móvel","CTX_REWIND":"Retroceder para o início","CTX_MARK_WATCHED":"Marcar como visto","CTX_MARK_NON_WATCHED":"Marcar como não visto","CTX_MARK_UNWATCHED":"Marcar como não visto","CTX_MARK_REST":"Marcar o resto como visto.","CTX_UNMARK_REST":"Marcar o resto como não visto.","CTX_RECEIVE_NEW_NOTIF":"Receber novas notificações","CTX_REMOVE_CACHE":"Remover da cache","CTX_REMOVE_CACHE_EP":"Remover episódio da cache","CTX_OPEN_CONTAINING":"Abrir pasta com o conteúdo","CTX_REMOVE":"Remover da biblioteca","CTX_AVAILABLE_OFFLINE":"Disponível offline","CTX_PAUSED":"Em pausa","CTX_ALWAYS_ON_TOP":"Sempre visível","CTX_FULLSCREEN":"Ecrã inteiro","CTX_WRONG_SUBS":"Legendas incorretas?","CTX_REPORT_ISSUES":"Reportar problema","CTX_COPY":"Copiar","CTX_PASTE":"Colar","CTX_CLEAR":"Limpar","CTX_CLEAR_RECENT_SEARCHES":"Limpar pesquisas recentes","HELLO_THERE":"Olá!","HOPE_YOU_ENJOY":"Esperamos que gostes do Stremio e que seja uma das tuas aplicações favoritas!","WHO_ARE_WE":"Quem somos? Somos a equipa por detrás do projeto - dois rapazes que trabalham arduamente todos os dias durante os últimos 3 anos para melhorar cada vez mais este produto.","SUPPORT_US":"Se gostas de utilizar o Stremio e se o mesmo é importante para ti - divulga-o!","SPREAD_THE_WORD":"Partilha com os teus amigos, divulga-o","MORE_PEOPLE":"Quanto mais pessoas utilizarem o Stremio, melhor se tornará!","SEND_A_LINK":"Ou envia um link para o nosso site","TIP_LOCALFILES":"Dica: podes arrastar e largar os teus vídeos no Stremio","ADDON_MY":"Os meus addons","ADDON_COMMUNITY":"Addons da comunidade","ADDON_OFFICIAL":"Addons oficiais","ADDON_REPOS":"Repositórios de addons","ADDON_SEARCH":"Pesquisar addons","ADDON_INSTALL":"Instalar","ADDON_CONFIGURE":"Configurar","ADDON_UNINSTALL":"Desinstalar","ADDON_UPGRADE":"Atualizar","ADDON_INSTALLED":"Instalado","ADDON_INSTALLED_MSG":"Addon instalado!","ADDON_UPGRADED_MSG":"Addon atualizado!","ADDON_UNKNOWN":"Desconhecido","ADDON_ERR":"Erro ao instalar o addon!","ADDON_DISCONNECTED":"Desconectado","ADDON_APP_MISSING":"a aplicação que suporta este tipo de letra não está instalada. Desejas instalá-la agora?","ADDON_APP_INSTALL":"Instalar agora","ADDON_PAGE":"Página do addon","ADDON_TOP_CONTENT":"O melhor deste addon","ADDON_PROVIDES":"Este addon dar-te-á:","ADDON_WATCH":"Ver #{types} agora!","ADDON_WATCH_FREE":"Ver #{types} GRATUITAMENTE agora!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Tipos suportados","ADDON_SUPPORTED_CATALOGS":"Catálogos suportados","ADDON_PROVIDES_DISCOVER":"Mais #{types} em Explorar","ADDON_PROVIDES_STREAMS":"Ver #{types}","ADDON_PROVIDES_STREAMS_FREE":"Ver #{types} GRATUITAMENTE","ADDON_PROVIDES_SUBTITLES":"Legendas para #{types}","ADDON_CANTDETECT":"Não foi possível encontrar o Stremio em execução, assim sendo, não é possível determinar os addons que tens instalados.","ERR_NO_META":"Não encontrámos nenhuma informação sobre isto.","ERR_GETTING_META":"Erro ao obter informação sobre isto.","ERR_CANT_PARSE_MAGNET":"Impossível analisar o magnet link","ERR_NO_MAGNET_INFOHASH":"Sem informação válida para este magnet link","ERR_NO_FILE_PATH":"Impossível enviar o pedido sem um caminho para o ficheiro","ERR_NO_TORRENT":"Nenhum torrent recebido","ERR_NO_SUPPORTERD_FILES":"Nenhum ficheiro suportado encontrado","ERR_OPENING_FILES":"Não foi possível abrir ficheiros externos.","ERR_INVALID_LINK":"Link inválido","ERR_REGISTERED_ONLY":"Esta opção está apenas disponível para utilizadores com sessão iniciada.","ERR_CLIPBOARD":"Não é possível reproduzir da área de transferência","ERR_CLIPBOARD_READ":"Não é possível ler a área de transferência nesta plataforma","ERR_CLIPBOARD_GENERIC":"Nenhum URL reproduzível encontrado na área de transferência. Por favor, copia um URL (ex.: magnet link) para um vídeo.","BOARD_CONTINUE_WATCHING":"Continuar a ver","BOARD_EXPLANATION_RECOMMENDATIONS":"Os filmes escolhidos especialmente para ti.
    Este filme é uma amostra de recomendação.","BOARD_EXPLANATION_EPISODES":"Os novos episódios das tuas séries favoritas aparecem aqui.
    Adiciona as séries que segues à tua biblioteca.","BOARD_EXPLANATION_VIDEOS":"Os novos episódios dos teus canais favoritos aparecem aqui.
    Adiciona os canais do YouTube que segues à tua biblioteca.","WEBSITE_SLOGAN_WATCH":"Vê instantaneamente","WEBSITE_SLOGAN_ALL":"Todo o conteúdo que adoras num único lugar","WEBSITE_SLOGAN_NEW":"Tudo o que podes ver","WEBSITE_SLOGAN_NEW_NEW":"Liberdade para fazeres streaming","WEBSITE_WATCH_FROM":"Ver a partir de","WEBSITE_DOWNLOAD":"Transferir","WEBSITE_DOWNLOAD_FOR":"Transferir para","WEBSITE_IS_DESKTOP":"O Stremio é uma aplicação desktop, abre esta página no teu computador e transfere-a","WEBSITE_DESKTOP_DEMO_VID":"Demonstração de ambiente de trabalho","WEBSITE_PAGE_HOME":"Início","WEBSITE_PAGE_FEATURES":"Funcionalidades","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Tecnologia","WEBSITE_PAGE_CREATE_ADDON":"Criar addon","WEBSITE_PAGE_CONTACTS":"Contactos","WEBSITE_PAGE_BLOG":"Blogue","WEBSITE_TYPE_movie":"Filmes","WEBSITE_TYPE_series_PL":"Séries","WEBSITE_TYPE_tv":"TV em Direto","WEBSITE_TYPE_channel":"Canais","WEBSITE_STREMIO_WHAT_IS":"O Stremio é uma aplicação que te ajuda a organizar e ver instantaneamente os teus vídeos, filmes, séries e canais favoritos.","WEBSITE_FEATURES_WATCH":"Vê instantaneamente em HD","WEBSITE_FEATURES_WATCH_DETAIL":"Clica e reproduz o teu conteúdo preferido, filmes, séries, vídeos e canais.","WEBSITE_FEATURES_SUBS":"Legendas automáticas","WEBSITE_FEATURES_SUBS_DETAIL":"O Stremio seleciona automaticamente as legendas sincronizadas para o teu idioma.","WEBSITE_FEATURES_SUBS_LABEL":"Agora é contigo, chefe.","WEBSITE_FEATURES_CAST":"Reproduz na TV e dispositivos móveis","WEBSITE_FEATURES_CAST_DETAIL":"Liga à Apple TV, Chromecast, Smart TV (DLNA/UPnP) e dispositivos móveis.","WEBSITE_LIB":"Desfruta da tua biblioteca pessoal sincronizada em todos os teus dispositivos","WEBSITE_LIB_COLLECT":"Recolher através do Stremio","WEBSITE_LIB_IMPORT":"Importar do Facebook","WEBSITE_LIB_LOCAL":"Adicionar a partir do teu disco local","WEBSITE_BOARD":"O painel - O teu sítio para notificações e recomendações","WEBSITE_BOARD_RECOMMEND":"Série recomendada","WEBSITE_BOARD_TRENDING":"Filme em destaque","WEBSITE_BOARD_NEW":"Novo vídeo","WEBSITE_BOARD_EPISODE":"Novo episódio","WEBSITE_BOARD_1":"Procuras algo interessante para ver? Recebe recomendações baseadas nos teus gostos!","WEBSITE_BOARD_2":"Recebe uma notificação quando um novo episódio da tua série preferida ou de um canal do YouTube é lançado!","WEBSITE_BOARD_YOUTUBE":"Novos vídeos de canais do YouTube","WEBSITE_BOARD_EPISODES":"Novos episódios das séries que segues","WEBSITE_ADDONS":"Conteúdo do addon","WEBSITE_TECH_DETAIL":"Adoramos tecnologia e ciência maluca!\\nO Stremio utiliza as seguintes tecnologias de código aberto:","WEBSITE_TECH_WCJS":"O WebChimera.js permite que o Stremio reproduza qualquer formato de vídeo com boa performance.","WEBSITE_TECH_WCJS_EXTRA":"Somos os colaboradores principais do projeto","WEBSITE_TECH_ELECTRON":"O Electron oferece uma plataforma inovadora para construir o Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Somos colaboradores do projeto","WEBSITE_TECH_LINVODB":"Uma tecnologia de base de dados que garante que os teus dados estão organizados e disponíveis em qualquer lugar.","WEBSITE_TECH_LINVODB_EXTRA":"Tecnologia interna","WEBSITE_CREATE_ADDON":"Cria o teu Addon","WEBSITE_CREATE_ADDON_DETAIL":"Tens um serviço que fornece conteúdo de vídeo? Vamos ajudar-te a beneficiar das funcionalidades do Stremio ao criar o teu addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefícios da criação de um addon para o Stremio","WEBSITE_P2P_BEAUTY":"A beleza do Streaming Ponto-a-Ponto","WEBSITE_P2P_1":"Vídeo full HD / 4K on demand ou streaming fiável e acessível","WEBSITE_P2P_2":"Plataforma de distribuição que proporciona uma grande experiência ao utilizador","WEBSITE_P2P_3":"Criaremos uma Extensão que corresponde exatamente às tuas necessidades","WEBSITE_P2P_CONTACT":"Interessado? Convidamos-te a nos contactares.","WEBSITE_P2P_CONTACT_EXTRA":"Ficaríamos felizes por te ajudar a integrar o teu contéudo com o Stremio!","WEBSITE_P2P":"De um momento para o outro, surge uma tecnologia que muda o sistema. Investimos muito tempo e esforço para construir o nosso motor de streaming de vídeo ponto-a-ponto que fornece grande performance e versatilidade para se adaptar a qualquer caso de utilização.\\nContacta-nos para gestão de direitos digitais de vídeo P2P on demand ou streaming.","WEBSITE_THOUGHTS":"Pensamentos que partilhamos:","WEBSITE_SPREAD":"Divulga o Stremio:","WEBSITE_CONTACT":"Contacta-nos, adoraríamos saber o que tens a dizer!","WEBSITE_OPENSOURCE":"Para os nosso projetos de código aberto, visita o nosso","WEBSITE_BITCOIN":"Doar Bitcoin:","WEBSITE_FAQ":"Perguntas frequentes","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Perguntas","WEBSITE_TOS":"Termos de utilização","WEBSITE_LEGAL":"Jurídico","WEBSITE_PAGE_ABOUT":"Acerca de","WEBSITE_PAGE_BECOME_PARTNER":"Torna-te num parceiro","WEBSITE_ALL_YOU_CAN_WATCH":"Liberdade para veres\\nTudo o que precisas.","WEBSITE_FREEDOM_TO_STREAM":"Liberdade para fazeres streaming","WEBSITE_WHAT_IS_STREMIO":"O que é o Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"O Stremio é uma plataforma única para agregação de conteúdo de vídeo. Descobre, organiza e vê vídeos de todos os tipos de fontes em qualquer dispositivo que tenhas.","WEBSITE_WHAT_IS_STREMIO_P2":"Filmes, séries, programas de TV, TV em Direto ou canais da web como YouTube e Twitch.tv - podes encontrar tudo isto no Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"O Stremio é uma central de multimédia moderna, uma solução integrada para todo o teu entretenimento em vídeo. Descobre, vê e organiza todo o conteúdo de vídeo a partir de addons fáceis de instalar.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Filmes, programas de TV, TV em direto ou canais da web - encontra tudo isto no Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Desfruta em todos os teus dispositivos multimédia","WEBSITE_DEVICES_COLLECT":"Recolhe através do Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importar do facebook","WEBSITE_DEVICES_LOCAL":"Adicionar a partir do teu disco local","WEBSITE_JOIN_THE_PARTY_NOW":"Junta-te à festa agora","WEBSITE_DEVICES_ALL":"Fácil de utilizar em qualquer dispositivo;","WEBSITE_EXTENDABLE_CATALOG":"Catálogo de vídeo infinitamente extensível;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Ótimas funcionalidades para organizares o teu conteúdo multimédia;","WEBSITE_AS_SEEN_ON":"Visto(a) em","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Quem somos","WEBSITE_LINK_TECHNOLOGY":"Tecnologia","WEBSITE_LINK_APPS":"Aplicações","WEBSITE_LINK_DOWNLOADS":"Transferências","WEBSITE_MORE":"Mais","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribuir","WEBSITE_LINK_COMMUNITY":"Comunidade","WEBSITE_LINK_BLOG":"Blogue","WEBSITE_MORE_MORE":"... e mais","WEBSITE_LINK_HELP":"Centro de Ajuda","WEBSITE_LINK_CONTACTS":"Contacta-nos","WEBSITE_LINK_TOS":"Termos e Condições","WEBSITE_LINK_PRAVACY":"Política de Privacidade","WEBSITE_SUBSCRIBE":"Subscrever","WEBSITE_NEWSLETTER":"Subreve a nossa newsletter para receberes as novidades","WEBSITE_PLACEHOLDER_EMAIL":"O teu e-mail","WEBSITE_COMMUNITY":"Comunidade","WEBSITE_LINK_PRAVACY_LEGAL":"Privacidade e jurídico","WEBSITE_WHY":"Porque o fazemos","WEBSITE_WHY_P1":"No Stremio, chegamos a trabalhar todos os dias quando queremos resolver um problema importante para o setor de vídeo on demand. Há tanto conteúdo novo publicado a cada minuto, que é virtualmente impossível encontrar o caminho menos árduo.","WEBSITE_WHY_P2":"Ajudamos as pessoas a navegar neste mundo imenso de entretenimento de vídeo e a descobrir novos conteúdos para apreciar. As nossas aplicações trazem consigo filmes, séries, TV em direto, canais da web e muito mais. Estamos focados em facilitar para que os nossos utilizadores possam encontrar facilmente os títulos e os canais que adoram.","WEBSITE_WHY_P3":"Podes utilizar o nosso serviço em qualquer dispositivo e a qualquer hora tornando o Stremio a única plataforma agregadora de entretenimento de vídeo de que precisarás.","WEBSITE_TEAM":"Equipa","WEBSITE_TEAM_P":"A equipa do Stremio é pequena, mas poderosa: entre nós dez, programamos em várias linguagens e partilhamos experiência em desenvolvimento de software, design da IU e UX, marketing e publicidade, negócios e startups.","WEBSITE_FEATURES":"Funcionalidades","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Descobre facilmente novos conteúdos","WEBSITE_FEATURES_DISCOVER_P":"Descobre facilmente novos filmes, séries, programas de TV e canais para ver. Navega por categoria, género, classificação, novidade, etc. ou escreve simplesmente um nome para encontrar. O Stremio encontrará facilmente todo o conteúdo de vídeo.","WEBSITE_FEATURES_ALL_CONTENT":"Todo o teu conteúdo de vídeo num ecrâ","WEBSITE_FEATURES_ALL_CONTENT_P1":"Vê que filmes, séries ou vídeos não terminaste e continua a vê-los(as). Sê notificado sobre novos episódios e lançamentos e navega pelas recomendações que obterás com base nos teus hábitos de visualização","WEBSITE_FEATURES_LIBRARY":"Organiza a tua biblioteca de vídeos","WEBSITE_FEATURES_LIBRARY_P1":"Adiciona qualquer título à tua biblioteca do Stremio com um único clique e encontra o teu conteúdo organizado por tipo, recência ou ordem alfabética","WEBSITE_FEATURES_CALENDAR":"Acompanha tudo o que viste","WEBSITE_FEATURES_CALENDAR_P1":"Vê o calendário de todos os filmes e séries que adicionaste à tua biblioteca e sabe também quando haverá um novo episódio ou estreia.","WEBSITE_FEATURES_BIG_SCREEN":"Aproveita o teu conteúdo de vídeo num ecrã maior ","WEBSITE_FEATURES_BIG_SCREEN_P1":"Reproduz o que estiveres a ver noutro dispositivo - utiliza o smartphone, tablet ou TV com um único clique","WEBSITE_FEATURES_SOURCES":"Vê o vídeo de várias fontes diferentes.","WEBSITE_FEATURES_SOURCES_P":"Instala os addons oficiais e da comunidade para aproveitares o vídeo fornecido por vários fornecedores diferentes - tudo numa aplicação elegante e fácil de utilizar.","WEBSITE_CREATE_AN_ADDON":"Cria um addon.","WEBSITE_FEATURES_SYNC":"Sincroniza a tua biblioteca entre diferentes dispositivos e continua a reprodução","WEBSITE_FEATURES_SYNC_P1":"Entra com a tua conta em todos os teus dispositivos e aproveita a tua biblioteca, addons, reprodução e calendário sincronizados.","WEBSITE_FEATURES_EXTENDABLE":"Catálogo de vídeo extensível por addons","WEBSITE_FEATURES_EXTENDABLE_P1":"O catálogo de addons do Stremio fornece vários complementos para instalares e veres uma variedade imensa de conteúdos de vídeo. Isto inclui filmes, programas, TV em direto, desportos, notícias, podcasts, canais da web, jogos e muito mais.","WEBSITE_FEATURES_AUTO_SUBS":"Legendas automáticas","WEBSITE_FEATURES_AUTO_SUBS_P1":"Com os nossos addons de legendas obtens automaticamente as opções selecionadas para o teu idioma preferido.","WEBSITE_FEATURES_CHROMECAST":"Transmitir para Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Desfruta do conteúdo de vídeo num ecrã maior ou transmite apenas o que estiveres a ver para outro dispositivo.","WEBSITE_FEATURES_KEEP_TRACK":"Acompanha os teus programas de TV e canais da Web favoritos ","WEBSITE_FEATURES_KEEP_TRACK_P1":"Obtém uma visualização do calendário e notificações para novos episódios das tuas séries e canais da web favoritos.","WEBSITE_FEATURES_POWER_USER":"Funcionalidades avançadas para os utilizadores","WEBSITE_FEATURES_POWER_USER_P1":"Reproduz num reprodutor externo","WEBSITE_FEATURES_POWER_USER_P2":"Reproduz a partir de um ficheiro torrent ou magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Importa para a tua biblioteca a partir dos gostos do Facebook ou disco local","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"Todo o conteúdo de vídeo que o Stremio proporciona é proveniente de um sistema de addons - nenhum fornecedor de conteúdo ou conteúdo foi incorporado na aplicação.","WEBSITE_ADD_ONS_P2":"Existem dois grupos de addons disponíveis: oficiais e da comunidade.","WEBSITE_ADD_ONS_P3":"Os oficiais são desenvolvidas e hospedadas pelo Stremio enquanto que os addons da comunidade são criados por membros da nossa comunidade que também os hospedam.","WEBSITE_ADDONS_OFFICIAL":"Addons oficiais","WEBSITE_ADDONS_WATCHUB":"Transmite os teus filmes, séries e programas favoritos de serviços como iTunes, Hulu, Amazon e outros serviços do Reino Unido / EUA.","WEBSITE_ADDONS_YOUTUBE":"Vê os teus canais favoritos do YouTube livre de anúncios e recebe notificações de novos vídeos dos canais que segues.","WEBSITE_ADDONS_FILMON":"Vê TV em direto, filmes e canais interativos gratuitamente. 600 canais de TV, 45.000 filmes gratuitos, documentários e muito mais.","WEBSITE_ADDONS_OPENSUBTITLES":"Legendas de filmes e TV em vários idiomas. Milhares de legendas traduzidas e carregadas todos os dias.","WEBSITE_ADDONS_COMMUNITY":"Addons da comunidade","WEBSITE_ADDONS_FILMON_VOD":"Vê vídeos on demand do Filmon.tv","WEBSITE_ADDONS_TWICH":"Vê transmissões em direto da Twitch.tv - a plataforma de streaming de vídeo para a indústria de eSports.","WEBSITE_ADDONS_VODO":"Vê filmes independentes de forma totalmente gratuita.","WEBSITE_ADDONS_NETFLIX":"Vê filmes e séries da Netflix.","WEBSITE_ADDONS_CREATE":"Cria um addon.","WEBSITE_ADDONS_CREATE_P1":"Se desejares, podes desenvolver o teu próprio addon. Desta forma, podes proporcionar a ti mesmo e à nossa comunidade o acesso a novos conteúdos de vídeo e alcançar um novo público-alvo de milhões de utilizadores em todo o mundo.","WEBSITE_ADDONS_START_CREATE":"Para começares, visita a página do Kit de Desenvolvimento de Addons do Stremio:","WEBSITE_DOWNLOADS":"Transferências","WEBSITE_DOWNLOADS_P1":"Para um melhor desempenho recomendamos que utilizes a versão mais recente disponível das aplicações Stremio. No entanto, se por algum motivo preferires utilizar uma versão mais antiga, podes descarregá-la aqui.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio para Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio para macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio para Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio para Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio para Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio para telemóveis Android","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio para Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio para iOS (versão limitada)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Colaborar","WEBSITE_CONTRIBUTE_P1":"A plataforma Stremio é de código aberto e podes criar facilmente um addon para o conteúdo que não é atualmente fornecido.","WEBSITE_CONTRIBUTE_WHY":"Porque deves criar um?","WEBSITE_CONTRIBUTE_WHY_P1":"Alcança um novo público para o conteúdo do teu vídeo","WEBSITE_CONTRIBUTE_WHY_P2":"A base de utilizadores do Stremio está a crescer rapidamente - no primeiro ano de lançamento o Stremio ganhou 1 milhão de utilizadores em todo o mundo e no segundo ano de existência da plataforma, este número cresceu para 2,5 milhões.","WEBSITE_CONTRIBUTE_WHY_P3":"Com o teu addon podes facilmente alcançar esta audiência e distribuir o teu conteúdo de vídeo para todos os utilizadores.","WEBSITE_CONTRIBUTE_ALL":"Vê os teus filmes, séries, vídeos e canais favoritos num único lugar.","WEBSITE_CONTRIBUTE_ALL_P1":"És fã de um tipo de conteúdo que ainda não está disponível no Stremio? Cria um addon para isso e desfruta ao ver os teus vídeos favoritos numa das maiores e mais fáceis plataformas de entretenimento e de se utilizar do mercado.","WEBSITE_CONTRIBUTE_ALL_P2":"Além disso, obterás a infinita gratidão de outros membros da comunidade Stremio com ideias semelhantes","WEBSITE_CONTRIBUTE_MONETIZE":"Monetiza o teu addon e ganha dinheiro com ele","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Uma vez que desenvolvas um novo addon para o Stremio, podes facilmente monetizá-lo de várias maneiras diferentes. Se estás a considerá-lo, sente-te à vontade para entrar em contacto connosco através do ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - ficaríamos felizes por te orientar e aconselhar neste processo sobre as opções de monetização do teu addon.","WEBSITE_CONTRIBUTE_TRANSLATE":"Torna-te num tradutor voluntário","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Se desejas aproveitar as aplicações do Stremio em diferentes idiomas, podes juntar-te à nossa comunidade de tradutores voluntários. Eles ajudam-nos a adicionar versões do Stremio nos diferentes idiomas.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Estás ansioso para começar?","WEBSITE_TRANSALTE_STREMIO":"Traduzir o Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Comunidades oficiais","WEBSITE_COMMUNITY_OFFICIALS_P1":"Faz parte da crescente comunidade do Stremio. Segue-nos nas redes sociais e não te sintas intimidado por nos dizeres um \\"Olá\\" - gostamos de conhecer os nossos fãs!","WEBSITE_COMMUNITY_UNOFFICIALS":"Comunidades não-oficiais","STREMIO_COMMUNITY_NL":"Stremio Países Baixos","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Alemanha","STREMIO_COMMUNITY_BELGIUM":"Stremio Bélgica","STREMIO_COMMUNITY_FRANCE":"Stremio França","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Itália","STREMIO_COMMUNITY_UK":"Stremio Reino Unido","STREMIO_COMMUNITY_USA":"Stremio EUA","STREMIO_COMMUNITY_MEXICO":"Stremio México","STREMIO_COMMUNITY_ADDONS":"Extensões Stremio","STREMIO_COMMUNITY_AWESOME":"O melhor do Stremio","WEBSITE_COMMUNITY_PARTNERS":"Parceiros e apoiantes","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Papéis de parede","WEBSITE_COMMUNITY_ART":"Galeria de Artes da Comunidade","WEBSITE_LINK_ART":"Galeria de Artes da Comunidade","WEBSITE_CONTACT_US":"Contacta-nos","WEBSITE_CONTACT_US_P1":"Caso tenhas dúvidas, comentários ou sugestões, sente-te à vontade para entrares em contacto connosco através do formulário em baixo.","WEBSITE_CONTACT_US_P2":"Lembra-te de que estamos localizados na Bulgária, por isso, pode haver alguma demora no atendimento do teu contacto devido às diferenças de fuso horário.","WEBSITE_CONTACT_US_SUCCESS":"A tua mensagem foi enviada. Entraremos em contacto contigo o mais breve possível.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Por favor, escreve um e-mail válido!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Com que assunto está relacionada a tua pergunta?","WEBSITE_CONTACT_US_Q_OS":"Qual é o teu sistema operativo?","WEBSITE_CONTACT_US_PH_EMAIL":"O teu e-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Mensagem","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ENVIAR","WEBSITE_CONTACT_US_Q_1":"Como instalar?","WEBSITE_CONTACT_US_Q_2":"Como desinstalar?","WEBSITE_CONTACT_US_Q_3":"(HTML) Como fazer lasanha?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"MacOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Tecnologia","WEBSITE_TECHNOLOGY_P1":"Adoramos tecnologia e ciência maluca. Aqui estão os poderes do Stremio (tudo em código aberto).","WEBSITE_TECHNOLOGY_P_QT":"Desenvolvimento de software multiplataforma no seu melhor.","WEBSITE_TECHNOLOGY_P_MPV":"Um reprodutor de multimédia gratuito, de código aberto e multiplataforma.","WEBSITE_TECHNOLOGY_P_RN":"O React Native permite que cries aplicações móveis utilizando apenas JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Framework de multimédia embutido na apicação para funcionalidades multimédia","WEBSITE_TECHNOLOGY_P_REALM":"A Realm é uma plataforma móvel e um substituto para o SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"O Node.js é um ambiente em tempo de execução multiplataforma e de código aberto para JavaScript.","WEBSITE_TECHNOLOGY_P_RUST":"O Rust é uma linguagem de programação multi-paradigma focada em segurança, especialmente em concorrência segura.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribuir para o projeto.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Há duas maneiras para poderes contribuir com o Stremio e ajudar-nos a tornar o produto ainda melhor.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Podes doar as tuas valiosas habilidades linguísticas para ajudar a traduzir a plataforma...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"ou","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"...podes utilizar as tuas habilidades de programação para criar addons da comunidade.","WEBSITE_TRANSLATE_STREMIO":"Traduzir o Stremio","WEBSITE_404_OH_NO":"Ups! A página que procuras não está aqui...","WEBSITE_GO_HOME":"Voltar ao início","WEBSITE_LINK_OTHER_DOWNLOADS":"Outras transferências","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Suporte","WEBSITE_DOWNLOAD_4_0_BETA":"Transferir o Stremio 4 beta agora","WEBSITE_GET_FOR_DESKTOP":"Transferir para o computador","WEBSITE_LINK_ADDON_COMPETITION":"Competições de addons","WEBSITE_LINK_ART_CONTEST":"Concurso de artes","WEBSITE_MY_ACCOUNT":"A minha conta","WEBSITE_MAINPAGE_FAQ_001_H1":"O que é o Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"O Stremio é um moderno centro de multimédia, que oferece a liberdade para veres tudo o que desejas.","WEBSITE_MAINPAGE_FAQ_002_H1":"Como funciona?","WEBSITE_MAINPAGE_FAQ_002_P1":"Depois de instalares o Stremio no teu dispositivo e criar uma conta tudo o que precisas de fazer é visitar o catálogo de addons e instalar qualquer complemento que desejares, e pronto!","WEBSITE_MAINPAGE_FAQ_002_P2":"Depois disso, podes ir às secções Explorar ou Painel para começar a explorar o conteúdo.","WEBSITE_MAINPAGE_FAQ_003_H1":"O que posso ver aqui?","WEBSITE_MAINPAGE_FAQ_003_P1":"Diversos filmes, programas de TV, canais da Web, desportos, canais de TV, ouvir podcasts e muito mais. Graças ao nosso sistema de addons podes aceder a uma variedade de conteúdos.","WEBSITE_MAINPAGE_FAQ_004_H1":"O Stremio é de código aberto?","WEBSITE_MAINPAGE_FAQ_004_P1":"Sim, podes verificar os seguintes links: ${1}aplicação desktop${2} e ${3}organização GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"O Stremio é seguro?","WEBSITE_MAINPAGE_FAQ_005_P1":"Sim. Por ser um software de código aberto o código é auditável publicamente e, podes revê-lo.","WEBSITE_MAINPAGE_FAQ_006_H1":"E a minha privacidade?","WEBSITE_MAINPAGE_FAQ_006_P1":"Respeitamos a privacidade dos utilizadores e não coletamos dados pessoais além do mínimo essencial para criar e sincronizar a tua conta.","WEBSITE_MAINPAGE_FAQ_006_P2":"Há também um ${1}modo convidado ${2}no registo que não requer dados: deste modo, nenhuma chamada é feita aos nossos servidores. No entanto, isto ocorre à custa de funcionalidades úteis, como sincronizar a tua biblioteca entre dispositivos.","WEBSITE_MAINPAGE_FAQ_007_H1":"Posso transmitir para a minha TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Sim, suportamos o Chromecast e podes transmitir através de aplicações para o computador e dispositivos móveis (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Quantas extensões possui o Stremio?","WEBSITE_MAINPAGE_FAQ_008_P1":"No final de 2019, acima de 50 - para obter mais informações, consulte o nosso catálogo de extensões.","WEBSITE_MAINPAGE_FAQ_009_H1":"O Stremio pode ser expandido além do que se encontra no catálogo de extensões?","WEBSITE_MAINPAGE_FAQ_009_P1":"Sim, deves verificar estes: ${1}PimpMyStremio${2}, ${3}Comunidades Reddit${4}, ${5}Downloader Stremio${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"Que dispositivos o Stremio suporta?","WEBSITE_MAINPAGE_FAQ_010_P1":"Temos aplicações desktop para Windows, Mac e Linux. Para dispositivos móveis, suportamos Android e iOS, embora tem em conta que as funcionalidades do iOS são limitadas (não é compatível com a maioria dos addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"Existem muitos dispositivos com base no Android aos quais podes executar o Stremio, como NVIDIA Shield e Amazon Fire Stick, mas não os suportamos oficialmente.","WEBSITE_MAINPAGE_FAQ_011_H1":"Podem adicionar determinados conteúdos ao Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Desculpa, mas não fornecemos conteúdo. Porém, quanto mais addons do Stremio instalares mais conteúdo poderás encontrar.","WEBSITE_MAINPAGE_FAQ_012_H1":"O Stremio pode reproduzir magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Sim, e também pode reproduzir links HTTP normais e de ficheiros torrent (arrastar e soltar).","WEBSITE_MAINPAGE_FAQ_013_H1":"Posso descarregar um vídeo e vê-lo offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"O modo offline estará disponível futuramente, porém, se permitires que o Stremio faça cache no dispositivo (no painel de definições), poderás ver os teus vídeos mais tarde, mesmo sem ligação à Internet.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nada funciona, ajudem-me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Tens a certeza de que instalaste addons? Se sim, verifica a nossa ${1}central de ajuda${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Como o Stremio sustenta as suas operações de desenvolvimento?","WEBSITE_MAINPAGE_FAQ_015_P1":"Ocasionalmente, exibimos anúncios não intrusivos, mas estamos a pensar em mudar para um modelo de doação.","WEBSITE_MAINPAGE_FAQ_015_P2":"Para mais dúvidas, visita a nossa ${1}central de ajuda${2}.","HELP_LEARN_MORE":"Ajuda-nos a aprender algo mais sobre ti.","LIFESTYLE":"Estilo de vida","SPORTS":"Desporto","FOOD_HEALTH":"Comida e bem-estar","BEAUTY_FASHION":"Beleza e moda","NEWS":"Notícias","GAMING":"Jogos","SCIENCE_EDUCATION":"Ciência e educação","MUSIC":"Música","TRAVEL":"Viagens","LATE_NIGHT":"Late night show","REALITY":"Reality show","COMEDY":"Comédia","DIY":"Faz tu mesmo","TECH":"Tecnologia","CINEMA":"Cinema","CONTINUE":"Continuar","SLOW_LOADING":"LENTO A CARREGAR?","I_GIVE_UP":"DESISTO","LEARN_MORE":"Aprender mais","POOR_SOURCE":"Esta fonte possui fraca disponibilidade ou a tua ligação à Internet não é suficientemente rápida","PICK_CATEGORIES_ERR":"Tens de escolher pelo menos 3 categorias","ADJUST_TIMING":"Ajustar tempos com ","ADJUST_SIZE":"Ajustar tamanho com ","SEARCH_ANYTHING":"Podes pesquisar qualquer coisa...","ALL_CATEGORIES":"Tudo","SEARCH_CATEGORIES":"Filmes, Séries, YouTube e TV","SEARCH_PERSONS":"Atores, Realizadores e Argumentistas","SEARCH_PROTOCOLS":"Links HTTP e Magnet","SEARCH_TYPES":"Links IMDb / TheTVDB","WATCHED":"Visto","SHOW_LESS":"Mostrar menos","LAST_SEARCHES":"Pesquisas recentes","CLEAR_HISTORY":"Limpar histórico","CHOOSE_SOME":"ESCOLHE ALGUNS DESTES:","NO_WEB_REMOTE":"O controlo remoto via web não pôde ser carregado","STREMIO_OFFLINE":"O Stremio está offline","STREMIO_EXPENSIVE_CONNECTION":"Detetámos que estás a utilizar uma ligação por dados móveis. Desejas continuar?","USE_DATA":"Dados de Utilização","WARNING":"Aviso","MORE_INFO":"Mais informações ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"A carregar ...","STREMIO_TV_BACK_TO_LANGUAGES":"Voltar para os idiomas","STREMIO_TV_REMOTE":"Remoto","STREMIO_TV_GO_TO":"Ir para:","STREMIO_TV_OR_SCAN":"ou pesquisar:","STREMIO_TV_ADDON_INSTRUCTIONS":"Por favor, segue as instruções com o intuito de instalares os teus addons favoritos.","STREMIO_TV_LIVE_TV":"TV em direto","STREMIO_TV_RESUME_WATCHING":"Continuar a ver","STREMIO_TV_LOADING_BACKGROUND":"A carregar o plano de fundo","STREMIO_TV_CHECKING_AUTHENTICATION":"A verificar autenticação","STREMIO_TV_LOADING_BOARD":"A carregar o painel","STREMIO_TV_LOGIN_HEADER_LINE_1":"Queremos que os nossos utilizadores tenham a melhor experiência personalizada possível com o nosso programa.","STREMIO_TV_LOGIN_HEADER_LINE_2":"É por esta razão que pedimos gentilmente que inicies sessão na tua conta.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Obrigado por entenderes,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Equipa Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Com o intuito de utilizares o trabalho Remoto com o teu Smartphone / Tablet / PC:","STREMIO_TV_WIFI_SETUP":"Configurar Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"O Stremio Circle não detetou ligação à Internet.","STREMIO_TV_WIFI_DETAILS_1":"Ligar a:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Utilizar palavra-passe:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Abrir o navegador com o link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Predefinido","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Pela última vista","STREMIO_TV_LIBRARY_SORT_NAME":"Por nome","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Por vezes vistas","STREMIO_TV_DETAILS_SEASON_NUMBER":"Temporada ${1}","STREMIO_TV_STREAMS_LOADING":"${1} / ${2} addons carregados...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} o addon está ainda a carregar...","STREMIO_TV_PLAYER_SETTINGS":"Definições de reprodução","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Atraso das legendas","STREMIO_TV_PLAYER_AUDIO_DELAY":"Atraso do áudio","STREMIO_TV_PLAYER_VIDEO_SCALING":"Escala do vídeo","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Fonte de streams não suportada","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Falha ao abrir o link externo","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Reproduzir com o ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Reproduzir com o libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"A mudar para o libVLC player devido a um erro de reprodução","STREMIO_TV_ADDONS_TITLE":"Utiliza o Stremio no teu telemóvel ou PC para instalares ou configurares addons e pressiona em \\"Sincronizar addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Nota: certifica-te de que estás a utilizar a mesma conta do Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sincronizar addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons sincronizados com sucesso","STREMIO_TV_ADDONS_SYNC_FAILED":"Falha ao sincronizar addons","STREMIO_TV_META_LINK_FAILED":"Falha ao abrir o link meta","STREMIO_TV_CATALOG_LOADING":"O catálogo ainda está a carregar...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Idioma da interface atualizado","STREMIO_TV_SETTINGS_THEME_UPDATED":"Tema atualizado","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Leitor predefinido","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"Leitor externo","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Idioma preferido","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Idioma secundário preferido","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Reprodução no modo tunnelled","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possíveis problemas de reprodução nalguns dispositivos","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Alguns formatos de vídeo podem não funcionar","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Sem caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Predefinido","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Suave","STREMIO_TV_SETTINGS_PROFILE_FAST":"Rápido","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra rápido","STREMIO_TV_SETTINGS_SERVER_URL":"URL do servidor de streaming","STREMIO_TV_SETTINGS_SERVER_VERSION":"Versão do servidor","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Desconhecido","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Versão do Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Editar URL do servidor","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Introduz um URL do servidor de streaming","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Para leres a Política de privacidade do Stremio, vai a:","STREMIO_TV_SETTINGS_TOS_TEXT":"Para leres os Termos e condições do Stremio, vai a:","STREMIO_TV_NAV_SEARCH":"Pesquisar","STREMIO_TV_NAV_HOME":"Início","STREMIO_TV_NAV_DISCOVER":"Explorar","STREMIO_TV_NAV_LIBRARY":"Biblioteca","STREMIO_TV_NAV_MOVIES":"Filmes","STREMIO_TV_NAV_SERIES":"Séries","STREMIO_TV_NAV_CHANNELS":"Canais","STREMIO_TV_NAV_TV":"TV em direto","STREMIO_TV_NAV_SETTINGS":"Definições","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Ligar conta","STREMIO_TV_LOGIN_EXPIRES_IN":"Expira em","STREMIO_TV_LOGIN_STEP_ONE":"Lê o código QR acima ou vai para","STREMIO_TV_LOGIN_STEP_TWO":"Inicia sessão na tua conta do Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Pedir um novo link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Código de início de sessão atualizado","STREMIO_TV_SEARCH_PLACEHOLDER":"Escreve alguma coisa","STREMIO_TV_SEARCH_NO_ADDONS":"Não foram pedidos addons para catálogos!","STREMIO_TV_SEARCH_BUTTON":"Pesquisar","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Histórico de pesquisas","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Podes pesquisar por títulos, atores, canais e mais...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Limpar histórico de pesquisas","STREMIO_TV_FILTERS_DESCRIPTION":"Escolhe um dos filtros abaixo","FILTERS":"Filtros","SETTINGS":"Definições","ACCOUNT":"Conta","LOGOUT":"Terminar sessão","THEMES":"Temas","PLAYBACK":"Reprodução","PLAYBACK_SPEED":"Velocidade de reprodução","AUDIO_TRACKS":"Faixas áudio","VIDEOS":"Vídeos","SERVER":"Servidor","LINKS":"Links","ABOUT":"Acerca de","INTERFACE":"Interface","ANIMATIONS":"Animações","STATUS":"Estado","LANGUAGE":"Idioma","SIZE":"Tamanho","DELAY":"Atraso","BOLD":"Em negrito","TEXT_COLOR":"Cor do texto","OUTLINE_COLOR":"Cor do contorno","BACKGROUND_COLOR":"Cor do fundo","BACKGROUND_BLUR":"Desfocagem do fundo","SEEK_TIME_DURATION":"Duração do tempo para avançar / recuar","AUTO_PLAY":"Reproduzir o próximo episódio automaticamente","PLAY_NOW":"Reproduzir agora","MARK_AS_WATCHED":"Marcar como visto","MARK_AS_UNWATCHED":"Marcar como não visto","REWIND_TO_BEGINNING":"Ver do início","CONTINUE_WATCHING":"Continuar a ver","ALL":"Tudo","SECONDS":"segundos","ON":"LIGADO","OFF":"DESLIGADO","RELOAD":"Recarregar","EDIT_URL":"Editar URL","NONE":"Nenhum","EMBEDDED":"Embutido","REMOTE_SWITCH_DEVICES":"Trocar dispositivos","REMOTE_VIDEOS":"Vídeos","REMOTE_ADJUST_TIMING":"Ajustar o tempo","REMOTE_ADJUST_SIZE":"Ajustar o tamanho","REMOTE_COULD_NOT_BE_LOADED":"O Web Remote não pôde ser carregado","REMOTE_RETRY":"Tentar novamente","TORRENT_PROFILE_DEFAULT":"Predefinido","TORRENT_PROFILE_SOFT":"Suave","TORRENT_PROFILE_FAST":"Rápido","TORRENT_PROFILE_ULTRA_FAST":"Ultra rápido","FAQ_001_H1":"O que é o stremio?","FAQ_001_P1":"O Stremio é um programa de multimédia centralizado desenhado para video entretenimento com a facilidade de utilização em mente. O Stremio permite-te organizares e veres a tua própria coleção de vídeos, séries, canais e TV em Direto.","FAQ_001_P2":"O Stremio cataloga o teu conteúdo, seja através do teu disco local seja através do nosso sistema de addons.","FAQ_001_P3":"Também te notificaremos quando novos episódios/vídeos/filmes em que tenhas interesse sairem para o ar e mostrar-te-á recomendações de filmes.","FAQ_02_H1":"Como o Stremio se compara ao Kodi e Plex?","FAQ_02_P1":"Inspirámo-nos nos dois programas mas temos diferentes objetivos - o Stremio é especificamente voltado para o entretenimento de vídeo. Batalhámos para sermos a solução predefinida nesse sentido, tendo em foco a facilidade de utilização.","FAQ_02_P2":"Stremio nunca será tão customizável e nunca terá tantos recursos como Kodi e Plex. Mas será significativamente mais fácil de utilizar. Simplesmente ${1} obtém-no e comprova ${2} :)","FAQ_03_H1":"Como o Stremio se compara à Netflix?","FAQ_03_P1":"Novamente, a Netflix é uma das nossas inspirações. Trabalharemos arduamente para atingir a experiência de utilização proporcionada pela Netflix e mais uma quantidade de melhorias. No entanto, o mais importante é dar-vos a liberdade de organizarem a vossa própria biblioteca e adicionar novas fontes de conteúdos com o nosso sistema de addons.","FAQ_03_P2":"Isso faz do Stremio infinitamente extensível e assim que o utilizares nunca ficarás limitado ao conteúdo que a Netflix decida licenciar. Por exemplo, através do Stremio podes ver o conteúdo de ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} e mesmo da ${9}Netflix${10}!","FAQ_04_H1":"Como o Stremio se compara ao Flipboard?","FAQ_04_P1":"Raramente recebemos esta questão, excepto quando falamos com pessoas iniciantes :)","FAQ_04_P2":"O Stremio é desenhado como um agregador de conteúdo tal e qual o Flipboard o faz para vídeo. Isto é muito parecido no nosso painel, painel este que te mostrará catálogos e notificações de novos episódios/novos vídeos que sigas, tal e qual o Flipboard.","FAQ_05_H1":"Como o Stremio se compara ao Popcorn Time?","FAQ_05_P1":"O Stremio e o Popcorn Time são semelhantes na interface de utilização porque não há muitas formas de fazer catálogo de vídeo entretenimento, certo? :)","FAQ_05_P2":"Mas enquanto o Popcorn Time tem o foco numa entrega de torrents que provêm de fontes específicas, o Stremio não possui restrições e é meramente um agregador de conteúdo - não está bloqueado a uma fonte de conteúdo específica.","FAQ_05_P3":"Além disso, não fornecemos nenhuma extensão para torrent por padrão então o Stremio não cobre o caso de utilização do Popcorn Time na sua funcionalidade oficial.","FAQ_05_P4":"Uma outra diferença notável é que o Popcorn Time é completamente de código aberto enquanto o Stremio é ${1} parcialmente de código aberto ${2}.","FAQ_06_H1":"Vocês é que adicionam estes filmes/séries?","FAQ_06_P1":"Não, desculpa :(","FAQ_06_P2":"Como já mencionámos noutras questões, o Stremio não partilha nenhum conteúdo por si próprio - tudo é adicionado diretamente pelo sistema de addons. Caso queiras pedir algum conteúdo, pode utilizar o botão “Reportar” no reprodutor e assim enviar um e-mail para o autor do addons com que te encontras a utilizar.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Criarão addons para X?","FAQ_08_P1":"É inteiramente possível.","FAQ_08_P2":"Se tens alguma ideia para um addon, escreve para ${1}office@stremio.com${2}, mas por favor, tem a certeza de que a ideia desse addon não infringirá nenhum direito de propriedade intelectual ou termos de utilização.","FAQ_08_P3":"De momento, os próximos movimentos no nosso projeto são addons para FandangoNOW, vídeo on demand no Filmon.tv e no Crunchyroll.","FAQ_09_H1":"O Stremio utiliza o BitTorrent?","FAQ_09_P1":"Sim. O Stremio suporta o BitTorrent como um protocolo streaming. Podes utilizá-lo com a extensão torrent ou por arrastar e soltar um ficheiro .torrent dentro do Stremio ou até mesmo colando um magnet link dentro do campo de pesquisa.","FAQ_09_P2":"Por favor, nota que o único addon oficial que utiliza o BitTorrent é o ${1}Vodo${2}, ao qual fornece produção independente, todos com permissão para serem distribuídos com o BitTorrent.","FAQ_09_P3":"Não suportamos a utilização de qualquer addon de terceiros que possa viabilizar o infringimento de leis de direitos.","FAQ_10_H1":"O que posso ver no Stremio com os addons oficiais?","FAQ_10_P1":"Predefinidamente, podes ver conteúdo do Filmon.tv, YouTube e Vodo dentro do Stremio com o reprodutor interno. Temos adicionalmente um addon para a Twitch.tv e outros.","FAQ_10_P2":"Esta combinação fornece uma seleção de:","FAQ_10_L1":"Canais de TV populares, fornecido por Filmon.tv - por exemplo E4, BBC, Bollyworld TV","FAQ_10_L2":"Tudo do YouTube - por exemplo BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Filmes indepententes com Vodo","FAQ_10_L4":"Transmissões de jogos online com a Twitch.tv","FAQ_10_P3":"Adicionalmente, há muitas fontes de conteúdo fornecidas com Guidebox e addons Netflix, ao qual não reproduzem inteiramente dentro do Stremio, mas pode redirecionar para o dado serviço. Por exemplo, o addon Guidebox dá-te uma seleção de filmes que podes fazer stream gratuitamente dentro dos Estados Unidos através de serviços como o TubiTV e o Crackle.","FAQ_11_H1":"O Stremio não instala, o que devo fazer?","FAQ_11_P1":"Se utilizas Windows, tenta ${1}este instalador alternativo${2}.","FAQ_11_P2":"Se utilizas Mac OS X, por favor, tem em conta que não suportamos versões inferiores ao OS X Mavericks (10.9).","FAQ_11_P3":"Caso estejas a utilizar Linux, tem em conta que neste momento apenas damos suporte para a versão de 64 bits (x64).","FAQ_11_P4":"Se não ainda não conseguiste resolver o teu problema, por favor, envia-nos uma mensagem no ${1}Grupo do Facebook${2}.","FAQ_12_H1":"Porque é que o meu antivírus está a notificar-me? O Stremio é seguro?","FAQ_12_P1":"Asseguramos-te de que o Stremio é ${1}100% limpo${2}.","FAQ_12_P2":"O teu antivirus está a notificar-te, porque incluimos publicidade no nosso instalador e isso faz com que o Stremio seja classificado como um adware.","FAQ_12_P3":"Se não estás seguro, podes utilizar o nosso ${1}instalador alternativo${2}.","FAQ_13_H1":"Como posso fazer um addon?","FAQ_13_P1":"Para iniciantes, recomendados que leiam o nosso ${1}módulo de sistema de extensão${2} no GitHub.","FAQ_13_P2":"Todavia, podes seguir o ${1}Tutorial do Olá Mundo${2}.","FAQ_13_P3":"Se não tens nenhum conhecimento em programação, por favor, publica a tua ideia na ${1}comunidade Reddit${2} e partilha-a com ${3}office@stremio.com${4}.","FAQ_14_H1":"Como os addons são publicados?","FAQ_14_P1":"Quando crias um addon e hospedor, colocas um campo endpoint no teu manifest, ao qual aponta para um endereço de addon ativo. O addon ficará automaticamente publicado no nosso ${1}Catálogo de Addons{2}.","FAQ_14_P2":"Esta situação acontece porque parte do servidor do módulo de addons do Stremio, que faz automaticamente uma chamada para a nossa API para publicar o addon. Quando a nossa API o valida endpoint como um addon válido, ficará disponível no nosso catálogo.","FAQ_15_H1":"Posso executar o Stremio no navegador?","FAQ_15_P1":"De momento não, mas em breve!","FAQ_15_P2":"Se estás curioso para ver uma versão Alpha, podes aceder aqui: ${1}alpha4.strem.io${2}. Tem em conta que o streaming está inativo. Damos suporte para Chrome, Firefox, Opera e Edge.","FAQ_16_H1":"A transmissão para a TV não funciona / legendas não funcionam","FAQ_16_P1":"A transmissão para a TV utiliza a tecnologia DLNA que é muito inconsistente entre modelos de fabricantes diferentes. Por esta razão, nós não temos a habilidade de testar cada caso então estamos longe da perfeição. Continuamos a trabalhar no sentido de melhorar cada vez mais a aplicação mas não podemos dar uma estimativa de tempo de quando a tecnologia DLNA funcionará corretamente na tua TV.","FAQ_16_P2":"Se ainda não vês a tua TV no menu de transmissão, por favor, tenta desativar a tua conexão de rede e ativa-a novamente (no Windows, clica com o botão direito em Rede e clica em Ativar/Desativar), reinicia também o teu rooter, TV e PC.","FAQ_16_P3":"Se estás ainda a encontrar problemas, podes ajudar-nos ao enviares a informação do teu modelo de TV e fabricante para ${1}office@stremio.com${2}.","FAQ_16_P4":"Entretanto, recomendamos o Chromecast, ao qual suportamos muito bem ou até simplesmente conectando a tua TV ao teu PC com um cabo HDMI.","FAQ_17_H1":"O Stremio bloqueia/falha, o que posso fazer?","FAQ_17_P1":"Primeiro de tudo, se estás a utilizar o Windows 7 com o antivirus AVG: temos problemas com essa combinação. O problema é o próprio AVG e não há uma solução definitiva para corrigirmos isso. Infelizmente, exceções ou desativar o antivirus não funciona. A única forma é trocares o teu antivirus.","FAQ_17_P2":"Se isso não é o problema, mas usa Windows, por favor atualize seu o sistema, incluíndo os drivers da GPU e tente novamente.","FAQ_17_P3":"Se o teu problema continua sem solução ou utilizas Mac ou Linux, por favor escreve-nos reportando em detalhe o problema no ${1}nosso grupo do Facebook${2}.","FAQ_18_H1":"Como posso fazer uma extensão?","FAQ_18_P1":"Para iniciantes recomendamos que vejas o nosso ${1}módulo de sistema de addons{2} no GitHub.","FAQ_18_P2":"No entanto, podes guiar-te pelo nosso ${1}tutorial do Olá Mundo!${2}.","FAQ_18_P3":"Se não tens nenhuma habilidade em programação, por favor, publica a tua ideia na ${1}comunidade do Reddit${2} e contacta-nos com a tua ideia de addon para ${3}office@stremio.com${4}.","FAQ_19_H1":"Porque é que o Stremio está a ocupar espaço em disco?","FAQ_19_P1":"O Stremio tem um cache local para temporariamente deixar os ficheiros de vídeo descarregados.","FAQ_19_P2":"Esta situação tem dois benefícios: primeiro, permite ao Stremio pré-carregar o vídeo para garantir uma transmissão suave. Segundo, isto deixa os vídeos na cache local para que possas continuar a ver offline.","FAQ_19_P3":"Quanto depende o Stremio da configuração do Cache no painel das Definições. O Stremio pode manter uma quantidade (exemplo 2GB) no teu disco, a menos que o video descarregado seja maior que isso e nesse caso pode necessitar de mais espaço para mantê-lo enquanto o descarrega.","FAQ_20_H1":"Onde está a pasta da cache?","FAQ_20_P1":"No Windows, a cache do Stremio fica no caminho que selecionaste nas definições (exemplo \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"No MacOS, fica em \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"No Linux, fica em \\"~/.stremio/stremio-cache\\" ou \\"~/stremio-cache\\"","FAQ_21_H1":"Recebi a mensagem de erro \\"Servidor de streming não encontrado\\", o que posso fazer?","FAQ_21_P1":"Se recebeste esta mensagem implica uma das possibilidades:","FAQ_21_P2":"1) Estás a tentar utilizar um addon suportado pelo código do YouTube/BitTorrent através da nossa ${1}versão web${2}. Nesse caso, deves instalar a nossa versão para desktop através do ${3}nosso site${4}.","FAQ_21_P3":"2) Há algo de errado com a instalação do Stremio. Neste caso, tenta reinstalar a nossa versão mais recente através ${1}do site${2}. Se isto não ajudar, tenta desativar os programas de antivírus e firewal, reinicia o teu PC e tenta novamente. Se isto não funcionar, por favor, entra em contacto pelo ${3}nosso grupo do Facebook${4}.","FAQ_22_H1":"Eu não posso ver/utilizar a maioria dos addons no iOS","FAQ_22_P1":"Devido a restrições nos termos e condições da loja da Apple, temos restringido apenas a aplicação iOS de um grupo particular de addons.","FAQ_22_P2":"Mas fica atento - existirão mais addons para iOS no futuro e poderemos também adicionar uma integração que permitirá a utilização de todos os addons do Stremio graças à conexão da aplicação iOS com o servidor de Streaming do Stremio."}')},6687:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Кино","TYPE_series":"Сериал","TYPE_tv":"ТВ-канал","TYPE_channel":"Канал","TYPE_other":"Прочее","TYPE_movie_PL":"Кино","TYPE_series_PL":"Сериалы","TYPE_tv_PL":"ТВ-каналы","TYPE_channel_PL":"Каналы","TYPE_other_PL":"Прочее","TYPE_ALL":"Все","VIDEO":"Видео","BACK":"Назад","MORE":"Ещё","DONE":"Готово","COPY":"Копировать","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"По умолчанию","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Открытия","Board":"Доска","Library":"Библиотека","My Library":"Моя библиотека","Calendar":"Календарь","NOTIFICATION_ONLINE":"Вы в сети","NOTIFICATION_OFFLINE":"Вы вне сети","INTERNET_CONNECTION":"Сетевое подключение","STORAGE_FULL_TITLE":"Внимание: хранилище заполнено!","STORAGE_FULL_TEXT":"Stremio не может сохранить ваши настройки, предпочтения или данные для входа. Попробуйте перезапустить или переустановить Stremio.","SEARCH":"поиск","SEARCH_NO_RESULTS":"Ничего не найдено","SEARCH_EXPLANATION_CONTENT":"Поиск фильмов, сериалов, YouTube и ТВ-каналов","SEARCH_EXPLANATION_PEOPLE":"Поиск актёров, режиссёров и авторов","SEARCH_PASTE_LINKS":"Вставьте HTTP и Magnet-ссылки","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Добавить в библиотеку","REMOVE_FROM_LIB":"Удалить из библиотеки","ADDED_TO_LIB":"Добавлено в библиотеку","REMOVED_FROM_LIB":"Удалено из библиотеки","TRAILER":"Трейлер","WATCH_TRAILER":"Смотреть трейлер","WATCH_NOW":"Смотреть","SHOW":"Показать","SHOW_MOVIE":"Показать фильм","WATCH_RANDOM":"Смотреть в случайном порядке","IMDB_RATING":"Рейтинг IMDb","YEAR":"Год","DIRECTOR":"Режиссёр","WRITER":"Писатель","LEAD_ACTORS":"Основные актёры","CAST":"Актёры","CREW":"Команда","SHOW_MORE_CAST":"Показать больше »","AIRED":"Выпуск","SEASONS":"Сезоны","GENRE":"Жанр","CATALOG":"Каталог","SUMMARY":"Описание","SHOW_MORE":"Показать больше","SIMILAR":"Похожее","UPCOMING":"Скоро","ENDED":"Закончилось","DURATION":"Продолжительность","FEATURED":"Представлено","METADATA":"Метаданные","CATEGORY":"категория","LINKS_GENRES":"Жанры","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"поиск видео","SEARCH_PLACEHOLDER":"поиск или вставка магнитной ссылки","ADDON":"Дополнение","ADDONS":"Дополнения","OFFICIAL":"Официальный","ADDONS_OFFICIAL":"Официальные дополнения Stremio","ADDONS_POPULAR":"Популярно в вашем районе","ADDON_FREE":"Бесплатно","ADDON_PEERED":"Попробовать","ADDON_SUBSCRIPTION":"Подписка","ADDON_STREAM_GEORESTRICTED":"недоступно в вашем регионе","ADDON_STREAM_OFFLINECACHE":"Офлайн-кэш","ADDON_STREAM_LOCALFILE":"Локальный файл","SHARE_ADDON":"Поделиться дополнением","AVAILABLE_STREAMS":"Доступные стримы","NO_STREAM":"Нет стримов","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Для большего количества стримов установите больше дополнений","STREAM_NOT_SUPPORTED":"Выбранные стримы не поддерживаются на этой платформе.","ADDON_CATALOGUE":"Показать все дополнения »","ADDON_CATALOGUE_MORE":"Больше дополнений »","REPO_ADDED":"Репозиторий добавлен","ADDON_REPO_EXIST_ERR":"Этот репозиторий дополнений уже существует","ADDON_REPO_ERR":"Ошибка при добавлении репозитория","ADDON_ADD_ERR":"Ошибка при добавлении дополнения","ERR_ADDON_PROTECTED":"Защищенное дополнение","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Что-то пошло не так — возможно, аутентификация не удалась","ERR_NOT_COLLECTION_URL":"Не URL-адрес коллекции","ERR_NOT_ADDON_URL":"Не URL-адрес дополнения","ERR_DETECTFROMURL":"Не удается обнаружить по URL-адресу","ADDON_DUPLICATE_WARNING":"Внимание: дублирующееся дополнение","ADDON_COLLECTION_SET_FAILED":"Не удалось установить коллекцию дополнений","SETTINGS_DATA_EXPORT":"Экпорт данных","ADDON_PULL_FAILED":"Синхронизация установленных дополнений из вашей учетной записи не удалась","REFRESH_ON_CLICK":"Нажмите, чтобы повторить","STILL_IN_THEATER":"Фильм все еще показывают в кинотеатрах","WATCH_IN_CINEMA":"Смотрите его в местном кинотеатре","IN_THEATER":"В кино","GET_TICKETS":"Купить билеты","UPCOMING_EPISODE":"Предстоящий эпизод","UPCOMING_EPISODE_MESSAGE":"Этот эпизод выйдет в эфир","MISSING_DATE_EPISODE":"Дата отсутсвует","MISSING_DATE_EPISODE_MESSAGE":"Возможно, этот эпизод еще не выпущен","CHANNEL_NOT_SCRAPED":"Этот канал ещё не просканирован.
    Пожалуйста, вернитесь через несколько минут.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Добавьте в библиотеку, чтобы получить уведомление, как только станет доступно.","GET_NOTIFIED_WHEN_AVAILABLE":"Вы получите уведомление, как только станет доступно.","WARNING_STREAMING_SERVER":"Внимание: локальный стриминговый сервер не найден. Стриминг из локальных файлов, YouTube и BitTorrent будет недоступен.","WARNING_STREAMING_SERVER_DISMISS":"Отклонить","WARNING_STREAMING_SERVER_LATER":"Позже","DECODER_WARNING":"Внимание: это видео может не поддерживаться вашим оборудованием. Имейте в виду, что воспроизведение может быть замедленным.","PLAYER_ERROR":"Упс, ошибка воспроизведения","PLAYER_ERROR_LOOKSLIKE":"Выглядит как","PLAYER_ORIENTATION":"Ориентация плеера","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Заблокировано","PLAYER_ORIENTATION_SENSOR_SHORT":"По датчику наклона","PLAYER_ORIENTATION_LANDSCAPE":"Ориентация плеера заблокирована в альбомной ориентации","PLAYER_ORIENTATION_SENSOR":"Автоматическая ориентация плеера (датчик)","PLAYER_PLAYBACK_SPEED":"Скорость воспроизведения","PLAYER_PLAYBACK_ERROR":"Ошибка воспроизведения, пожалуйста, попробуйте снова","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Неизвестная ошибка","PLAYER_PLAYBACK_ERROR_DEFAULT":"Извините, это видео не может быть воспроизведено {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Языки субтитров","PLAYER_SUBTITLES_VARIANTS":"Варианты субтитров","PLAYER_SUBTITLES_SETTINGS":"Настройки субтитров","PLAYER_SUBTITLES_DISABLED":"Субтитры отключены","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Вертикальное положения","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Следующее видео","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Смотрите далее","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Отклонить","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Смотреть","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Стрим от","CASTING_TO":"Стим для","NETWORK_STATUS":"Состояние сети","STREAM_SPEED":"Скорость:","STREAM_BUFFERED":"Загружено:","PEERS_INFO":"Информация о пирах","PEERS_ACTIVE":"Активны:","PEERS_CONNECTED":"Подключены:","PEERS_WAITING":"Ждут:","TRANSCODING_WARNING":"Внимание: перекодирование видео.","STREAM_LOADING":"Загрузка...","PLAYING_LOCAL":"Из локального файла","PLAYING_CACHE":"Из кэша","WRONG_SUBS":"Некорректные субтитры?","ERR_SUBS_LOADING_TITLE":"Ошибка загрузки субтитров","ERR_SUBS_LOADING":"Не удалось загрузить субтитры: это может быть связано с используемым вами дополнением или с сетевым подключением","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Не удалось выполнить следующие дополнения субтитров","ERR_CASTING_UPDATE_TITLE":"Не удалось обновить информацию об устройстве трансляции: стриминг-сервер, возможно, отключен","CHOOSE_DEVICE":"Выберите устройство для просмотра","NO_CAST_DEVICES":"Нет доступных устройств.","NO_SETTINGS":"Настройки недоступны.","PHONE_TABLET":"Телефон/планшет","SUBTITLES":"Субтитры","SUBTITLES_CHANGE":"Изменить субтитры для ","SUBTITLES_CHANGE_NONE":"К сожалению, нет других субтитров для этого языка","SUBTITLES_CHANGE_ACIVE":"Сейчас выбраны субтитры #{{subtitlesDialog.activeIdx + 1}}. Нажмите \\"Продолжить\\", чтобы выбрать субтитры #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Как вариант,","SUBTITLES_ADJUST_DELAY":"Настроить задержку субтитров:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Или использовать клавиши G/H во время вопроизведения для настройки.","SUBTITLES_ADJUST_DELAY_TIP":"Совет: вы можете использовать клавиши G/H во время вопроизведения для настройки.","SUBTITLES_DELAY":"Задержка субтитров:","SUBTITLES_LOADING":"Загрузка субтитров...","SUBTITLES_UNAVAILABLE":"Нет доступных внешних субтитров","SUBTITLES_DISABLED":"Отключено","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Аудио","DEFAULT_LANGUAGE":"Язык по умолчанию","DEFAULT_SECONDARY_LANGUAGE":"Дополнительный язык по умолчанию","SEASON":"Сезон","EPISODE":"Эпизод","SPECIAL":"Особый","SORT":"Сортировать","SORT_BY":"Сортировать по","FILTER":"Фильтровать","SORT_TRENDING":"Лидеры","SORT_RECENT":"Недавние","SORT_ALPHABET":"А-я","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"Рейтинг","SORT_WATCHED":"Просмотрено","SORT_YEAR":"Год","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"По последнему просмотру","SORT_NAME":"По названию","SORT_TIMESWATCHED":"По количеству просмотров","New for You":"Новые для вас","New Episodes":"Новые эпизоды","New Videos":"Новые видео","Recommendations":"Рекомендации","LIBRARY_RESUME":"Продолжить","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Подробности","LIBRARY_RESUME_DISMISS":"Сбросить","LIBRARY_CLEAR_PROGRESS":"Очистить прогресс","LIBRARY_REMOVE":"Удалить","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Рекомендуемые","DISCOVER_TOP":"Топ","DISCOVER_OSCAR":"Победители Оскара","DISCOVER_WARNING_TITLE":"Ой!","DISCOVER_EMPTY_CATALOG":"Это дополнение вернуло пустой контент.","DISCOVER_ADULT_WARNING":"Контент доступен только взрослым. Вам 18+?","DISCOVER_NOADDON_WARNING":"Внимание: не было найдено активного дополнения для этого типа. Показаны только сохранённые элементы, обновления не могут быть выполнены.","DISCOVER_LOAD_ERR":"Контент не загрузился, произошла ошибка.","DISCOVER_ADDON_UNINSTALLED":"Этот контент больше не доступен, возможно, вы удалили дополнение.","UNINSTALL_THIS_ADDON":"Удалить дополнение","ERR_ADDON_NOT_INSTALLED":"Это дополнение не установлено. Установить?","DETAIL_RECEIVE_NOTIF_SERIES":"Получать уведомления о новых эпизодах","DETAIL_RECEIVE_NOTIF_VIDEOS":"Получать уведомления о новых видео","SIDEBAR_SHOW_STREAMS":"Показать стримы","RELAUNCH":"Перезапустить!","UPGRADE":"Доступная новая версия! Обновите Stremio до последней версии","RELOAD_UI":"Перезагрузить пользовательский интерфейс","MANUAL_UPDATE_TITLE":"Обновите версию Stremio","MANUAL_UPDATE_LINE1":"Вы используете устаревшую версию Stremio, которая крайне не рекомендуется.","MANUAL_UPDATE_LINE2":"Пожалуйста, обновите как только получится.","BUTTON_UPDATE_LATTER":"Не сейчас","BUTTON_UPDATE_NOW":"Обновить","ANONYMOUS_USER":"Анонимный пользователь","DONT_HAVE_ACC":"Нет аккаунта?","HAVE_ACC":"Уже есть аккаунт?","PASSWORD":"Пароль","PASSWORD_CONFIRM":"Подтвердить пароль","EMAIL":"Эл. почта","FB_LOGIN":"Войти с Facebook","FB_NOTHINGSHARED":"Мы не будем ничем делиться без вашего согласия","FB_NOPOST":"Мы не будем ничего публиковать без вашего согласия","OR":"или","I_ACCEPT":"Я принимаю","I_ACCEPT_BY_CLICKING":"Нажимая кнопку выше, я подтверждаю, что принимаю ","TOS":"Условия и положения","MUST_ACCEPT_TERMS":"Вы должны принять условия","PASSWORDS_NOMATCH":"Пароли не совпадают","SIGN_UP":"Регистрация","SIGN_UP_EMAIL":"Зарегистроваться с эл. почтой","CLICK_TO_SIGN_UP":"Нажмите здесь, чтобы зарегистрироваться.","LOG_IN":"Войти","LOG_OUT":"Выйти","EXIT_FULLSCREEN":"Выйти из полноэкранного режима","ENTER_FULLSCREEN":"Войти в полноэкранный режим","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Помощь и обратная связь","TERMS_OF_SERVICE":"Условия обслуживания","PRIVACY_POLICY":"Политика конфиденциальности","ABOUT_STREMIO":"О Stremio","USER_PANEL":"Панель пользователя","LOGIN_LABEL":"Войти","GUEST_LOGIN":"Войти как гость","GUEST_LOGIN_NOTICE":"Гостевой вход не рекомендуется. Использование обычного входа позволяет Stremio синхронизировать вашу библиотеку, получать уведомления о любимых сериалах/каналах. Вы уверены, что хотите продолжить?","GUEST_LOGIN_NOTICE_2":"Гостевой вход не рекомендуется. У вас не будет синхронизированной библиотеки и доски уведомлений, которые являются очень важными функциями Stremio. Вы уверены, что хотите продолжить?","CLICK_HERE":"нажмите здесь","WRONG_PASSWORD":"Неправильный пароль. Если вы забыли свой пароль, ","SET_A_PASS":"установить пароль","RESET_PASSWORD":"Сброс пароля","FORGOT_PASSWORD":"Забыли пароль?","EMAIL_USED_WITH_FB":"Эта эл. почта была использована с логином Facebook.","INVALID_EMAIL":"Пожалуйста, введите действительный адрес эл. почты","INVALID_PASSWORD":"Пожалуйста, введите действительный пароль","CONN_ERR":"Ошибка подключения. Повторите попытку позже.\\n\\nЕсли проблема не устранится, отключите брандмауэры/антивирусное ПО (особенно Bitdefender).","IMPORT_FROM_GUEST":"Импорт библиотеки из гостевой учетной записи","RECEIVE_UPDATES_EMAIL":"Получайте обновления от Stremio на свою эл. почту","LOGIN_FAILED":"Ошибка входа.","SIGNUP_FAILED":"Регистрация не удалась.","SEARCH_FAILED":"Поиск не удался","EMAIL_USED":"Эта эл. почта уже используется.","WAITING_FB_LOGIN":"Вход через Facebook...","EXTERNAL_PLAYER_TITLE":"Воспроизвести во внешнем плеере","EXTERNAL_REMEMBER_PLAYER":"Хотите запомнить свой выбор","EXTERNAL_ALWAYS_PLAY":"Да","EXTERNAL_ONLY_ONCE":"Нет","BEST_FIT":"Наиболее подходящее","FIT_SCREEN":"По размеру экрана","FILL":"Заполнить","16:9":"16:9","4:3":"4:3","Original":"Оригинал","INTRO_TASTE":"Расскажите, что вам нравится","INTRO_TASTE_LONG":"Расскажите нам о том, что вы хотели бы посмотреть","INTRO_TASTE_PICK":"Выберите {{interestsRemaining}} интересов","INTRO_TASTE_PICK_MORE":"Выберите больше интересов {{interestsRemaining}}","INTRO_TASTE_HELP_US":"Помогите нам лучше узнать вас.","INTRO_TASTE_CHOOSE_THESE":"Выберите некоторые из них:","INTRO_TASTE_CHOOSE_MIN":"Выберите не менее 3 категорий","INTRO_TASTE_CHOOSE_MIN_ERR":"Вы должны выбрать минимум 3 категории!","INTRO_TASTE_LIFESTYLE":"Образ жизни","INTRO_TASTE_SPORTS":"Спорт","INTRO_TASTE_FOOD_HEALTH":"Еда и здоровье","INTRO_TASTE_BEAUTY_FASHION":"Красота и мода","INTRO_TASTE_NEWS":"Новости","INTRO_TASTE_GAMING":"Игры","INTRO_TASTE_SCIENCE_EDU":"Наука и образование","INTRO_TASTE_MUSIC":"Музыка","INTRO_TASTE_TRAVEL":"Путешествия","INTRO_TASTE_LATE_NIGHT":"Ночное шоу","INTRO_TASTE_REALITY":"Реалити","INTRO_TASTE_COMEDY":"Комедия","INTRO_TASTE_DIY":"Сделать своими руками","INTRO_TASTE_TECH":"Технологии","INTRO_TASTE_CINEMA":"Кино","ADDON_NOT_SUPPORTED":"Выбранное дополнение не поддерживается на этой платформе.","ADDON_DISCLAIMER":"Использование посторонних дополнений всегда будет предметом вашей личной ответственности и попадает под регулирующее законодательство той юрисдикции в которой вы находитесь.","ADDON_ACTIVATE":"активировать это дополнение?","ADDON_REPO_ADD":"URL-адрес репозитория дополнения","ADDON_ADD":"Добавить","ADD_ADDON":"Добавить дополнение","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Вставьте URL-адрес дополнения","WHATS_NEW":"Что нового","BUTTON_CONTINUE":"Продолжить","BUTTON_ACTIVATE":"Активировать","BUTTON_ACTIVATED":"Активировано","BUTTON_CANCEL":"Отмена","BUTTON_SUBMIT":"Отправить","BUTTON_DISMISS_ALL":"Отклонить все","BUTTON_VIEW_ALL":"Посмотреть все","BUTTON_SEE_ALL":"Смотреть все","BUTTON_COLOR_TRANSPARENT":"Прозрачн.","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Ваша библиотека пуста. Узнайте, насколько она полезна :)","HOW_START":"Как начать:","LIB_EMPTY_CAL":"Ваш календарь показывает сериалы в библиотеке.","HOW_START_CAL":"Как вы можете добавить сериал:","LIB_EMPTY_BOARD":"Таблица показывает уведомления и рекомендации, относящиеся к вашей библиотеке.","HOW_START_BOARD_WAIT":"Пожалуйста, добавьте несколько серий или каналов к вашей библиотеке и дайте нам несколько минут для обработки :)","HOW_START_BOARD":"Вот как вы можете добавить сериалы и фильмы:","IMPORT_FB":"Импорт понравившегося материала из Facebook","IMPORT_TRAKT":"Импорт медиатеки из Trakt","IMPORT_DISCOVER":"Найти интересный материал в Открытиях","IMPORT_DISK":"Импорт видео из локального диска","PLEASE_CREATE_ACC":"Пожалуйста, создайте аккаунт, чтобы включить синхронизацию библиотеки и доски.","IMPORT_DISCOVER_SIGNUP":"Зарегистрируйтесь и находите интересные материалы в Открытиях","IMPORT_DISK_SIGNUP":"Зарегистрируйтесь и импортируйте фильмы или шоу из вашего локального диска","LIB_EMPTY_CLOUD":"Облачная бибилиотека","LIB_EMPTY_CLOUD_DESC":"Личная облачная библиотека синхронизируется на всех устройствах","LIB_EMPTY_EARLY":"Ранняя птичка","LIB_EMPTY_EARLY_DESC":"Получайте уведомления о новых эпизодах","LIB_EMPTY_PERSONAL":"Личное","LIB_EMPTY_PERSONAL_DESC":"Получите личные рекомендации","LIB_EMPTY_CALENDAR_DESC":"Запланируйте свой личный календарь просмотра","LIB_EMPTY_ALL":"Зарегистрируйтесь, чтобы получить всё это:","LIB_EMPTY_BEST":"Зарегистрируйтесь, чтобы получить всё лучшее от Stremio","LIB_EMPTY_OTHER":"Зарегистрируйтесь, чтобы включить календарь и другие крутые функции","CALENDAR_ADDED":"Календарь Stremio был добавлен в ваш настольный календарь по умолчанию.","CALENDAR_ADDED_MSG":"Если не сработало, добавьте этот URL-адрес в приложение календаря вручную","TRAKT_EXPIRED":"Срок действия аутентификации Trakt истек, перейдите в настройки и повторите аутентификацию.","TRAKT_REQUIRES_LOGIN":"Ошибка Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Необходимо войти","SETTINGS_LABEL":"Настройки","SETTINGS_NAV_GENERAL":"Общее","SETTINGS_NAV_PLAYER":"Плеер","SETTINGS_NAV_STREAMING":"Стриминг","SETTINGS_NAV_SHORTCUTS":"Ярлыки","SETTINGS_SHORTCUT_RELOAD_APP":"Перезагрузить приложение","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Открыть настройки","SETTINGS_SHORTCUT_SWITCH_TABS":"Переключить вкладки","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Перелистывать вкладки вперёд","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Перелистывать вкладки назад","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Выйти/Вернуться","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Переключить полноэкранный режим","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Показать элементы управления","SETTINGS_SHORTCUT_PLAY_PAUSE":"Воспроизведение/Пауза","SETTINGS_SHORTCUT_VOLUME_UP":"Громче","SETTINGS_SHORTCUT_VOLUME_DOWN":"Тише","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Увеличить размер субтитров","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Уменьшить размер субтитров","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"величить задержку субтитров","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Уменьшить задержку субтитров","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Переключить боковую панель","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Запуск при старте","SETTINGS_VLC_DEFAULT":"Воспроизвести в VLC","SETTINGS_UI_LANGUAGE":"Язык интерфейса","SETTINGS_FULLSCREEN_EXIT":"Выход из полноэкранного режима клавишей Escape","SETTINGS_GAMEPAD":"Включить поддержку геймпада","SETTINGS_CLOSE_WINDOW":"Закрывать приложение, когда окно закрыто","SETTINGS_SUBTITLES_LANGUAGE":"Язык субтитров по умолчанию","SETTINGS_SUBTITLES_SIZE":"Размер субтитров по умолчанию","SETTINGS_SUBTITLES_BACKGROUND":"Фон субтитров","SETTINGS_SUBTITLES_COLOR":"Цвет субтитров","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Цвет контура субтитров","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Цвет фона субтитров","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Автовоспроизведение следующего эпизода","SETTINGS_NEXT_VIDEO":"Показывать уведомление перед началом следующего эпизода","SETTINGS_NEXT_VIDEO_TRIGGER":"Показывать уведомление о следующем эпизоде для:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Автоизменение размера окна перед вопроизведением","SETTINGS_OVERRIDE_SERVER":"Переопределить URL-адрес сервера стриминга (дополнительно)","SETTINGS_SERVER_URL":"URL-адрес стримингового сервера: ","SETTINGS_SERVER_AVAILABLE":"Стриминговый сервер доступен.","SETTINGS_SERVER_UNAVAILABLE":"Стриминговый сервер недоступен.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Конечная точка HTTPS-стриминга: ","SETTINGS_USE_BETA":"Всегда использовать последнюю бета-версию","SETTINGS_IMPORT_FB":"Импорт из Facebook","SETTINGS_IMPORT_DISK":"Импорт из локального диска","SETTINGS_IMPORT_TRAKT":"Импорт из Trakt","SETTINGS_PAUSE_MINIMIZED":"Приостановить воспроизведение при сворачивании","SETTINGS_HWDEC":"Декодирование с аппаратным ускорением","SETTINGS_BACKGROUND":"Фоновое воспроизведение","SETTINGS_SUBSCRIBE_CALENDAR":"Подписаться на календарь","SETTINGS_REQ_EXPORT":"Запросить экспорт данных","SETTINGS_ACC_DELETE":"Запросить удаление аккаунта","SETTINGS_CHANGE_PASSWORD":"Изменить пароль","SETTINGS_TOS":"Условия использования","SETTINGS_SUPPORT":"Связаться с поддержкой","SETTING_LANGUAGE":"Язык","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Выйти из Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Отсканируйте QR-код, чтобы открыть удалённо","SETTINGS_DESKTOP_NOTIFICATIONS":"Уведомления на рабочем столе","SETTINGS_DATA_SAVER":"Экономия трафика","SETTINGS_LANGUAGE_INTERFACE":"интерфейс","SETTINGS_LANGUAGE_SUBS":"субтитры по умолчанию","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Автовыбор аудиодорожки","SETTINGS_DEFAULT_AUDIO_TRACK":"Аудиодорожка по умолчанию","SETTINGS_ACCOUNT":"аккаунт","SETTINGS_VERSION":"версия","SETTINGS_MPV_WINDOW":"Запускать плеер в отдельном окне (дополнительно)","SETTINGS_PLAY_IN_EXTERNAL":"Всегда запускать видео во внешнем плеере","SETTINGS_STORAGE_BUTTON":"Очистить локальное хранилище","SETTINGS_STORAGE_MODAL_TITLE":"Вы уверены?","SETTINGS_STORAGE_MODAL_MESSAGE":"Это очистит локальное хранилище и вы выйдете из приложения.","SETTINGS_HWDEC_PICKER":"Выберите настройку декодирования с аппаратным ускорением","SETTINGS_HW_AUTOMATIC":"Автоматически","SETTINGS_HW_DISABLED":"Отключено","SETTINGS_HW_ACCELERATED":"Ускорение декодирования","SETTINGS_HW_FULL":"Полное ускорение","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Аудио","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Использовать чёрный цвет фона","SUBSPICKER_VERTICAL_OFFSET":"Вертикальное смещение","SUBSPICKER_SIZE":"Размер","SUBSPICKER_DELAY":"Задержка","SUBSPICKER_EMBEDDED_SUBS":"Встроенные субтитры","MOBILE_PRIVACY_POLICY":"Политика конфиденциальности","MOBILE_CRASH_REPORTING":"Сообщение о сбоях","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"ПРОИЗВОДИТЕЛЬНОСТЬ И СТАБИЛЬНОСТЬ","MOBILE_SERVER_ONLINE":"Онлайн","MOBILE_SERVER_OFFLINE":"Офлайн","MOBILE_QR_EXPIRES":"Действие QR-кода истекает через ","MOBILE_LOG_INTO":"Войдите в ваш аккаунт Stremio ","MOBILE_SCAN_QR":"Отсканируйте QR-код выше или перейдите на ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Отмена","MOBILE_SPEEDPICKER_LABEL":"Выберите скорость воспроизведения","MOBILE_EMPTY_LIBRARY":"Ваша библиотека пуста","MOBILE_NO_ADDON_ACTIVE":"Дополнение Stremio не активно для этого типа.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"ещё загружается","MOBILE_ADDONS_LOADING":"дополнения ещё загружаются","MOBILE_ADDON":"Дополнение","MOBILE_CONFIGURE_ADDON":"Настройте ваше дополнение","MOBILE_CONFIGURE_ADDON_LABEL":"Настроить дополнение","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Отключить","MOBILE_LOOKING_FOR_DEVICES":"Поиск устройства...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"Вкл.","NAVIGATION_OFF":"Выкл.","MARKETING_AGREE":"Я согласен получать маркетинговые сообщения от Stremio","QUIT":"Выход!","CONNECTED":"Подключено","AUTHENTICATE":"Проверять подлинность","CACHING":"Кэширование","SETTINGS_CACHING_DRIVE":"Выберите диск кэширования","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Включить удалённые HTTPS-соединения","TORRENT_PROFILE":"Торрент-профиль","DATA_CACHING":"Кэширование данных","MAGNET_PARSING":"Парсинг магнет-ссылки","January":"Января","February":"Февраль","March":"Март","April":"Апрель","May":"Май","June":"Июнь","July":"Июль","August":"Август","September":"Сентябрь","October":"Октября","November":"Ноября","December":"Декабрь","Monday":"Понедельник","Tuesday":"Вторник","Wednesday":"Среда","Thursday":"Четверг","Friday":"Пятница","Saturday":"Суббота","Sunday":"Воскресенье","Action":"Боевик","Comedy":"Комедия","War":"Война","Family":"Семья","Animation":"Анимация","Adventure":"Приключения","Fantasy":"Фантазия","Crime":"Криминал","Mystery":"Таинственность","Romance":"Романтика","Drama":"Драма","Horror":"Ужасы","Thriller":"Триллеры","Sci-Fi":"Научная фантастика","Music":"Музыка","Biography":"Биография","Documentary":"Документальный","Sport":"Спорт","Musical":"Музыкальный","Western":"Вестерн","Film-Noir":"Нуар","News":"Новости","History":"История","Game-Show":"Игровое шоу","Reality-TV":"Реалити шоу","Talk-Show":"Ток-шоу","Film & Entertainment":"Кино и развлечения","Gaming":"Игры","From TV":"Из ТВ","Lifestyle":"Стиль жизни","Science & Education":"Наука и образование","Cooking & Health":"Готовка и здоровье","Beauty & Fashion":"Красота и мода","Sports":"Спорт","News & Politics":"Новости и политика","How-to & DIY":"Сделай сам","Tech":"Технологии","Automotive":"Автомобильный","Causes & Non-Profits":"Коммерческое и некоммерческое","Movies":"Кино","Uk Live Tv":"Прямой эфир в Великобритании","Fashion":"Мода","Business News Radio":"Радио о бизнес-новостях","Business Tv":"Бизнес ТВ","Cars & Auto":"Автомобили и авто","Comedy Radio":"Комедийное радио","Lifestyle Radio":"Радио об образе жизни","News Tv":"Новости ТВ","Food And Wine":"Еда и вино","Latino Tv":"Латинское ТВ","Shopping Tv":"Покупки ТВ","Religion":"Религия","Kids":"Дети","Body & Soul":"Тело и душа","Education":"Образование","Indian Tv":"Индийское ТВ","Extreme Sports":"Экстремальный спорт","Middle Eastern Tv":"Ближневосточное ТВ","Celebrity Tv":"Знаменитость ТВ","Science Tv":"Наука ТВ","Bikini babe":"Попки в бикини","Outdoors":"На открытом воздухе","German Tv":"Немецкое ТВ","French Tv":"Французское ТВ","Italian Tv":"Итальянское ТВ","Gamer Tv":"Геймерское ТВ","Travel":"Путешествия","Asian Tv":"Азиатское ТВ","Entertainment":"Развлечения","News Radio":"Новостное радио","Music Radio":"Музыкальное радио","Language Learning":"Изучение языков","Science Radio":"Научное радио","Tech Radio":"Техническое радио","Science & Technology Vod":"Наука и технологии VoD","new video":"новое видео","new episode":"новый эпизод","new movie":"новый фильм","recommended":"рекомендуемое","we recommend":"мы рекомендуем","offer of the day":"предложение дня","news":"новости","music video":"мызкальное видео","CTX_SHOW_HOTKEYS":"Показать горячие клавиши","CTX_DISMISS_NOTIF":"Игнорировать уведомления","CTX_DISMISS_ALL":"Отклонить все","CTX_SHARE":"Поделиться","CTX_COPY_SHARE_LINK":"Скопировать ссылку","CTX_COPY_MAGNET_LINK":"Скопировать магнитную ссылку","CTX_COPY_STREAM_LINK":"Скопировать ссылку на стрим","CTX_DOWNLOAD_VIDEO":"Скачать видео","CTX_DOWNLOAD_SUBS":"Скачать субтитры","CTX_VIEW_ON_YOUTUBE":"Смотреть на YouTube","CTX_SHOW":"Показать","CTX_PLAY":"Вопроизвести","CTX_PLAY_IN":"Воспроизвести в","CTX_PLAY_ON":"Воспроизвести на","CTX_WATCH_ON":"Смотреть на","CTX_WATCH":"Смотреть","CTX_WATCHED":"Просмотрено","CTX_WATCH_BEGINNING":"Смотреть с начала","CTX_WATCH_MOBILE":"Смотреть на мобильном устройсте","CTX_REWIND":"Перемотать на начало","CTX_MARK_WATCHED":"Отметить как просмотренное","CTX_MARK_NON_WATCHED":"Отметить как непросмотренное","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Получать новые уведомления","CTX_REMOVE_CACHE":"Удалить из кэша","CTX_REMOVE_CACHE_EP":"Удалить эпизод из кэша","CTX_OPEN_CONTAINING":"Открыть папку с файлом","CTX_REMOVE":"Удалить из библиотеки","CTX_AVAILABLE_OFFLINE":"Доступно без интернета","CTX_PAUSED":"Остановлено","CTX_ALWAYS_ON_TOP":"Закреплено","CTX_FULLSCREEN":"Полный экран","CTX_WRONG_SUBS":"Некорректные субтитры","CTX_REPORT_ISSUES":"Сообщить о проблеме","CTX_COPY":"Копировать","CTX_PASTE":"Вставить","CTX_CLEAR":"Очистить","CTX_CLEAR_RECENT_SEARCHES":"Очистить историю поисковых запросов","HELLO_THERE":"Привет","HOPE_YOU_ENJOY":"Надеемся, что вам нравится Stremio и это одно из ваших любимых приложений!","WHO_ARE_WE":"Кто мы? Мы — команда, стоящая за этим, — два парня, которые усердно работают каждый день в течение последних 3 лет с одной целью — делать этот продукт всё лучше и лучше.","SUPPORT_US":"Если вам нравится Stremio, если Stremio ценен для вас — расскажите об этом!","SPREAD_THE_WORD":"Поделитесь с друзьями прямо сейчас, расскажите о Streamio","MORE_PEOPLE":"Чем больше людей пользуются Streamio, тем лучше он становится","SEND_A_LINK":"Или отправьте ссылку на наш сайт","TIP_LOCALFILES":"Совет: вы можете перетаскивать локальные видеофайлы в Stremio.","ADDON_MY":"Мои дополнения","ADDON_COMMUNITY":"Дополнения от сообщества","ADDON_OFFICIAL":"Официальные дополнения","ADDON_REPOS":"Репозитории дополнений","ADDON_SEARCH":"Искать плагины","ADDON_INSTALL":"Установить","ADDON_CONFIGURE":"Настроить","ADDON_UNINSTALL":"Удалить","ADDON_UPGRADE":"Обновить","ADDON_INSTALLED":"Установлено","ADDON_INSTALLED_MSG":"Дополнение установлено!","ADDON_UPGRADED_MSG":"Дополнение обновлено!","ADDON_UNKNOWN":"Неизвестно","ADDON_ERR":"Ошибка установки дополнения!","ADDON_DISCONNECTED":"Отключено","ADDON_APP_MISSING":"приложение для этого источника не установлено. Вы хотите установить его сейчас?","ADDON_APP_INSTALL":"Установить","ADDON_PAGE":"Страница дополнения","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"provides","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Дополнение","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Скачать сейчас","WEBSITE_DOWNLOAD_FOR":"Скачать сейчас для","WEBSITE_IS_DESKTOP":"Stremio — это настольное приложение, откройте эту страницу на своем ПК и скачайте его","WEBSITE_DESKTOP_DEMO_VID":"Демо","WEBSITE_PAGE_HOME":"Главная","WEBSITE_PAGE_FEATURES":"Возможности","WEBSITE_PAGE_ADDONS":"Дополнения","WEBSITE_PAGE_TECH":"Технологии","WEBSITE_PAGE_CREATE_ADDON":"Создать дополнение","WEBSITE_PAGE_CONTACTS":"Контакты","WEBSITE_PAGE_BLOG":"Блог","WEBSITE_TYPE_movie":"Фильмы","WEBSITE_TYPE_series_PL":"Сериалы","WEBSITE_TYPE_tv":"В эфире","WEBSITE_TYPE_channel":"Каналы","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Нажмите и смотрите свои любимые фильмы, ТВ-шоу, видео и телеканалы.","WEBSITE_FEATURES_SUBS":"Автоматические субтитры","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio автоматически выбирает синхронизированные субтитры для вашего языка.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Импорт из Facebook","WEBSITE_LIB_LOCAL":"Добавить с локального диска","WEBSITE_BOARD":"Доска — ваше универсальное место для уведомлений и рекомендаций","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Популярный фильм","WEBSITE_BOARD_NEW":"Новое видео","WEBSITE_BOARD_EPISODE":"Новый эпизод","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"Новые видео из каналов YouTube","WEBSITE_BOARD_EPISODES":"Новые серии из сериалов, за которыми вы следите","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"Мы основные участники проекта","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"Мы участники проекта","WEBSITE_TECH_LINVODB":"Технология базы данных, гарантирующая что ваши данные организованы и доступны везде, где вы входите в приложение.","WEBSITE_TECH_LINVODB_EXTRA":"Собственная технология","WEBSITE_CREATE_ADDON":"Создайте свое дополнение","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Расскажите о Stremio:","WEBSITE_CONTACT":"Если вы хотите связаться с нами, перейдите по адресу","WEBSITE_OPENSOURCE":"Чтобы посмотреть наши проекты с открытым кодом, перейдите на","WEBSITE_BITCOIN":"Пожертвовать Bitcoin:","WEBSITE_FAQ":"Часто задаваемые вопросы","WEBSITE_FAQ_SHORT":"ЧЗВ","WEBSITE_QUESTIONS":"Вопросы","WEBSITE_TOS":"Условия использования","WEBSITE_LEGAL":"Юридическое","WEBSITE_PAGE_ABOUT":"О проекте","WEBSITE_PAGE_BECOME_PARTNER":"Стать партнером","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Что такое Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio — это универсальный центр видеоконтента. Находите, упорядочивайте и просматривайте видео из любых источников на любом устройстве, которое у вас есть.","WEBSITE_WHAT_IS_STREMIO_P2":"Фильмы, ТВ-шоу, сериалы, прямое телевидение или веб-каналы, такие как YouTube и Twitch.tv — все это вы можете найти на Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Фильмы, ТВ-передачи, прямые телепередачи или веб-каналы — все это можно найти на Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Наслаждайтесь этим на любых мультимедийных устройствах","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Импорт из Facebook","WEBSITE_DEVICES_LOCAL":"Добавить с локального диска","WEBSITE_JOIN_THE_PARTY_NOW":"Присоединяйтесь к тусовке","WEBSITE_DEVICES_ALL":"Легко использовать на всех ваших устройствах;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"О нас","WEBSITE_LINK_TECHNOLOGY":"Технологии","WEBSITE_LINK_APPS":"Приложения","WEBSITE_LINK_DOWNLOADS":"Скачать","WEBSITE_MORE":"Больше","WEBSITE_LINK_ADDONS":"Дополнения","WEBSITE_LINK_ADDON_SDK":"SDK дополнения","WEBSITE_LINK_CONTRIBUTE":"Участвовать","WEBSITE_LINK_COMMUNITY":"Сообщество","WEBSITE_LINK_BLOG":"Блог","WEBSITE_MORE_MORE":"...и ещё","WEBSITE_LINK_HELP":"Центр помощи","WEBSITE_LINK_CONTACTS":"Контакты","WEBSITE_LINK_TOS":"Условия и положения","WEBSITE_LINK_PRAVACY":"Политика конфиденциальности","WEBSITE_SUBSCRIBE":"Подписаться","WEBSITE_NEWSLETTER":"Подпишитесь на нашу рассылку и получайте удивительные вещи","WEBSITE_PLACEHOLDER_EMAIL":"Ваша эл. почта","WEBSITE_COMMUNITY":"Сообщество","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Зачем нам это","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},6650:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filmi","TYPE_series":"Serije","TYPE_tv":"TV kanali","TYPE_channel":"Kanali","TYPE_other":"Ostalo","TYPE_movie_PL":"Filmi","TYPE_series_PL":"Serije","TYPE_tv_PL":"TV kanali","TYPE_channel_PL":"Kanali","TYPE_other_PL":"Ostalo","TYPE_ALL":"All","VIDEO":"Video","BACK":"Nazaj","MORE":"Več","DONE":"Done","COPY":"Kopiraj","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Razišči","Board":"Plošča","Library":"Knjižnica","My Library":"Moja Knjižnica","Calendar":"Koledar","NOTIFICATION_ONLINE":"Sedaj si povezan","NOTIFICATION_OFFLINE":"Si trenutno nepovezan","INTERNET_CONNECTION":"Mrežna povezava","STORAGE_FULL_TITLE":"Opozorilo: Prostor je poln!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"iskanje","SEARCH_NO_RESULTS":"Ni rezultatov iskanja","SEARCH_EXPLANATION_CONTENT":"Išči filme, serije, YouTube in TV kanale","SEARCH_EXPLANATION_PEOPLE":"Išči igralce, režiserje in avtorje","SEARCH_PASTE_LINKS":"Kopiraj HTTP in Magnet linke","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Dodaj v knjižnico","REMOVE_FROM_LIB":"Odstrani iz knjižnice","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Napovednik","WATCH_TRAILER":"Predvajaj Napovednik","WATCH_NOW":"Glej sedaj","SHOW":"Show","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb Rating","YEAR":"Leto","DIRECTOR":"Režiser","WRITER":"Avtor","LEAD_ACTORS":"Glavni igralci","CAST":"Postava","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Objavljeno","SEASONS":"Sezone","GENRE":"Žanr","CATALOG":"Catalog","SUMMARY":"Povzetek","SHOW_MORE":"Show More","SIMILAR":"Podobno","UPCOMING":"Prihajajoče","ENDED":"Končano","DURATION":"Trajanje","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"išči video","SEARCH_PLACEHOLDER":"search or paste URL","ADDON":"dodatek","ADDONS":"Dodatki","OFFICIAL":"Glavni","ADDONS_OFFICIAL":"Glavni Stremio Dodatki","ADDONS_POPULAR":"Popularno v vašem področju","ADDON_FREE":"prosto","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"naročnina","ADDON_STREAM_GEORESTRICTED":"ni dostopno v vašem področju","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Dostopni Stream-i","NO_STREAM":"Ni dostopnih stream-ov","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Prikaži vse dodatke »","ADDON_CATALOGUE_MORE":"Več dodatkov »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons collection already exist","ADDON_REPO_ERR":"Error occurred while adding collection","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Cannot uninstall addon, it is protected","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection URL","ERR_NOT_ADDON_URL":"Not a valid addon URL","ERR_DETECTFROMURL":"Cannot find addon/collection from this URL","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Syncing installed addons to your account failed","SETTINGS_DATA_EXPORT":"Export user data","ADDON_PULL_FAILED":"Syncing installed addons from your account failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Movie still in theaters","WATCH_IN_CINEMA":"Watch it in your local cinema","IN_THEATER":"In cinema","GET_TICKETS":"Get tickets","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.
    Please come back in a few minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Add it to your library to get notified once it is available.","GET_NOTIFIED_WHEN_AVAILABLE":"You will get notified once it is available.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from local files, YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streaming from","CASTING_TO":"Casting to","NETWORK_STATUS":"Network status","STREAM_SPEED":"Stream speed:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Active:","PEERS_CONNECTED":"Connected:","PEERS_WAITING":"Waiting:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"loading...","PLAYING_LOCAL":"playing from local file","PLAYING_CACHE":"playing from cache","WRONG_SUBS":"Wrong subtitles?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Choose a device to watch on","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Telefon / Tablica","SUBTITLES":"Podnapisi","SUBTITLES_CHANGE":"Change subtitles for ","SUBTITLES_CHANGE_NONE":"There are no other subtitles for this language, sorry.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternatively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use G / H keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use G / H keys while playing to adjust.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Onemogočeno","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sezone","EPISODE":"Nanizanke","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"recent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rating","SORT_WATCHED":"watched","SORT_YEAR":"year","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Novo Za Vas","New Episodes":"Nove Nanizanke","New Videos":"New Videos","Recommendations":"Priporočila","LIBRARY_RESUME":"Nadaljuj","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Podrobnosti","LIBRARY_RESUME_DISMISS":"Opusti","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oscar Winners","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Warning: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Re-launch now!","UPGRADE":"New version is available! Upgrade to the latest Stremio version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonimni uporabnik","DONT_HAVE_ACC":"Nimate še računa?","HAVE_ACC":"Že imate račun?","PASSWORD":"Geslo","PASSWORD_CONFIRM":"Potrdi geslo","EMAIL":"E-mail","FB_LOGIN":"Nadaljuj z Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"or","I_ACCEPT":"Se strinjam z","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Terms and Conditions","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Geslo se ne ujema","SIGN_UP":"Registracija","SIGN_UP_EMAIL":"Registracija z email naslovom","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Prijava","LOG_OUT":"Odjava","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"O Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Guest login","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"click here","WRONG_PASSWORD":"Wrong email or password. In case you have forgotten your password, ","SET_A_PASS":"set a password","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"This email was used with a Facebook login.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Activate this addon?","ADDON_REPO_ADD":"Addon collection URL","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Kaj je novega","BUTTON_CONTINUE":"Nadaljuj","BUTTON_ACTIVATE":"Aktiviraj","BUTTON_ACTIVATED":"Aktivirano","BUTTON_CANCEL":"Prekliči","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Opusti vse","BUTTON_VIEW_ALL":"pregled vseh","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Here is how you can start:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from Facebook","IMPORT_TRAKT":"Import your media library from Trakt","IMPORT_DISCOVER":"Find interesting stuff from Discover","IMPORT_DISK":"Import movies or shows you have on your local disk","PLEASE_CREATE_ACC":"Please create an account to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from Discover","IMPORT_DISK_SIGNUP":"Sign up and import movies or shows you have on your local disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Nastavitve","SETTINGS_NAV_GENERAL":"Osnovno","SETTINGS_NAV_PLAYER":"Predvajalnik","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Zaženi ob zagon","SETTINGS_VLC_DEFAULT":"Predvajaj z VLC","SETTINGS_UI_LANGUAGE":"UI Jezik","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Change password","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Contact support","SETTING_LANGUAGE":"Jezik","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Quit","CONNECTED":"Connected","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januar","February":"Februar","March":"Marec","April":"April","May":"Maj","June":"Junij","July":"Julij","August":"Avgust","September":"September","October":"Oktober","November":"November","December":"December","Monday":"Ponedeljek","Tuesday":"Torek","Wednesday":"Sreda","Thursday":"Četrtek","Friday":"Petek","Saturday":"Sobota","Sunday":"Nedelja","Action":"Akcije","Comedy":"Komedije","War":"Vojni","Family":"Družinski","Animation":"Animirani","Adventure":"Pustolovski","Fantasy":"Fantazijski","Crime":"Kriminalni","Mystery":"Mistični","Romance":"Romantični","Drama":"Drame","Horror":"Grozljivke","Thriller":"Trilerji","Sci-Fi":"Sci-Fi","Music":"Glazbeni","Biography":"Biografski","Documentary":"Dokumentarni","Sport":"Športni","Musical":"Mjuzikli","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Add-ons","ADDON_COMMUNITY":"Community Add-ons","ADDON_OFFICIAL":"Official Add-ons","ADDON_REPOS":"Addon collections","ADDON_SEARCH":"Search add-ons","ADDON_INSTALL":"Naloži","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Odstrani","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Naloženo","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You Can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Subscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS (limited version)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Stremio 4 beta Now","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can access a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},2963:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filmovi","TYPE_series":"Serije","TYPE_tv":"TV kanal","TYPE_channel":"Kanal","TYPE_other":"Drugo","TYPE_movie_PL":"Filmovi","TYPE_series_PL":"Serije","TYPE_tv_PL":"TV kanali","TYPE_channel_PL":"Kanali","TYPE_other_PL":"Drugo","TYPE_ALL":"All","VIDEO":"Video","BACK":"Nazad","MORE":"Više","DONE":"Gotovo","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Otkrij","Board":"Tabla","Library":"Biblioteka","My Library":"Moja Biblioteka","Calendar":"Kalendar","NOTIFICATION_ONLINE":"Sada ste povezani","NOTIFICATION_OFFLINE":"Trenutno ste bez konekcije","INTERNET_CONNECTION":"Mrežna greška","STORAGE_FULL_TITLE":"Upozorenje: nemate slobodnog prostora!","STORAGE_FULL_TEXT":"Stremio neće moći da sačuva podešavanja, prednosti ili informacije za login. Razmislite o restartovanja ili reinstalacije Stremio-a.","SEARCH":"Pretraži...","SEARCH_NO_RESULTS":"Nema pronađenih rezultata","SEARCH_EXPLANATION_CONTENT":"Pretražite filmove, serije, YouTube i TV kanale","SEARCH_EXPLANATION_PEOPLE":"Pretražite glumce, režisere i scenografe","SEARCH_PASTE_LINKS":"Nalepi HTTP i Magnet linkove","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Dodaj u Biblioteku","REMOVE_FROM_LIB":"Ukloni iz Biblioteke","ADDED_TO_LIB":"Dodato u Biblioteku","REMOVED_FROM_LIB":"Uklonjeno iz Biblioteke","TRAILER":"Najava","WATCH_TRAILER":"Pogledajte najavu","WATCH_NOW":"Gledaj sada","SHOW":"Prikaži","SHOW_MOVIE":"Prikaži film","WATCH_RANDOM":"Pusti nasumično","IMDB_RATING":"IMDb Ocena","YEAR":"Godina","DIRECTOR":"Režiser","WRITER":"Scenograf","LEAD_ACTORS":"Glavne Uloge","CAST":"Uloge","CREW":"Ekipa","SHOW_MORE_CAST":"Prikaži više »","AIRED":"Emitovano","SEASONS":"Sezona","GENRE":"Žanr","CATALOG":"Catalog","SUMMARY":"Opis","SHOW_MORE":"Pokaži više","SIMILAR":"Slično","UPCOMING":"Nadolazeće","ENDED":"Završeno","DURATION":"Trajanje","FEATURED":"Istaknuto","METADATA":"Metadata","CATEGORY":"Kategorija","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Pretraži video","SEARCH_PLACEHOLDER":"Pretraži ili nalepi magnet linkove","ADDON":"Dodatak","ADDONS":"Dodaci","OFFICIAL":"Zvanični","ADDONS_OFFICIAL":"Zvanični Stremio dodaci","ADDONS_POPULAR":"Popularno u vašem području","ADDON_FREE":"besplatno","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"pretplata","ADDON_STREAM_GEORESTRICTED":"nije dostupno u vašem području","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Lokalni fajl","SHARE_ADDON":"Podeli dodatak","AVAILABLE_STREAMS":"Dostpuni strimovi","NO_STREAM":"Nema dostupnih strimova","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Za više strimova molimo vas da instalirate više dodataka","STREAM_NOT_SUPPORTED":"Odabrani prenos nije podržan na ovoj platformi.","ADDON_CATALOGUE":"Prikaži sve dodatke »","ADDON_CATALOGUE_MORE":"Više dodataka »","REPO_ADDED":"Dodat je repository","ADDON_REPO_EXIST_ERR":"Repository ovog dodatka već postoji","ADDON_REPO_ERR":"Greška uz dodavanje repository-a","ADDON_ADD_ERR":"Greška uz dodavanje dodatka","ERR_ADDON_PROTECTED":"Zaštićeni dodatak","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Greška - Autentifikacija može da je neuspešna","ERR_NOT_COLLECTION_URL":"Nije url kolekcije","ERR_NOT_ADDON_URL":"Nije url dodatka","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Upozorenje: dupli dodatak","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Film je i dalje u bioskopu","WATCH_IN_CINEMA":"Pogledajte ga u lokalnom bioskopu","IN_THEATER":"U Bioskopu","GET_TICKETS":"Nabaviti karte","UPCOMING_EPISODE":"Sledeća epizoda","UPCOMING_EPISODE_MESSAGE":"Ova epizoda će biti emitovana","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"Ova epizoda možda još nije emitovana","CHANNEL_NOT_SCRAPED":"Ovaj kanal još nije sačuvan.
    Molimo vas pokušajte za par minuta.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Dodajte u svoju biblioteku da budete obavešteni kada bude dostupno.","GET_NOTIFIED_WHEN_AVAILABLE":"Bićete obavešteni kada bude dostupno.","WARNING_STREAMING_SERVER":"Upozorenje: lokalni server za strimovanje nije pronađen. Streaming sa YouTube-a i BitTorrent-a neće biti dostupan.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Upozorenje: ovaj video možda ne podržava vaš hardver. Imajte na umu da reprodukcija može biti spora.","PLAYER_ERROR":"Ups, greška plejera","PLAYER_ERROR_LOOKSLIKE":"Izgleda kao","PLAYER_ORIENTATION":"Orijentacija plejera","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Fiksno","PLAYER_ORIENTATION_SENSOR_SHORT":"Senzor","PLAYER_ORIENTATION_LANDSCAPE":"Orijentacija plejera je fiksirana na vodoravno","PLAYER_ORIENTATION_SENSOR":"Orijentacija plejera je automatska (senzor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Izvinite, ovaj video ne može biti prikazan sa {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Uživo","PLAYER_NEXT_VIDEO_TITLE":"Sledeći na","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Gledati sada","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Puštanje iz","CASTING_TO":"Prikazivanje na","NETWORK_STATUS":"Mrežni status","STREAM_SPEED":"Brzina strimovanja:","STREAM_BUFFERED":"Preuzeto:","PEERS_INFO":"Peer Informacije","PEERS_ACTIVE":"Aktivno:","PEERS_CONNECTED":"Konektovano:","PEERS_WAITING":"Čekanje:","TRANSCODING_WARNING":"Upozorenje: konvertovanje videa.","STREAM_LOADING":"učitavanje...","PLAYING_LOCAL":"puštanje iz lokale datoteke","PLAYING_CACHE":"puštanje iz privremenog skladišta","WRONG_SUBS":"Pogrešan prevod?","ERR_SUBS_LOADING_TITLE":"Greška pri učitavanju titlova","ERR_SUBS_LOADING":"Greška pri učitavanju titlova: može biti do dodatka kog koristite, ili do internet konekcije","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Izaberi uređaj za gledanje","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"Podešavanja nisu dostupna.","PHONE_TABLET":"Telefon / Tablet","SUBTITLES":"Titlovi","SUBTITLES_CHANGE":"Promeni titl za ","SUBTITLES_CHANGE_NONE":"Nažalost nema drugih titlova za odabrani jezik","SUBTITLES_CHANGE_ACIVE":"Trenutno titl #{{subtitlesDialog.activeIdx + 1}} je aktivan. Klikni \\"Nastavi\\" da aktiviraš titl #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativno,","SUBTITLES_ADJUST_DELAY":"Podešavanje odlaganja titla:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Ili koristite G / H dugmad dok puštate da podesite titlove.","SUBTITLES_ADJUST_DELAY_TIP":"Savet: možete koristiti G / H dugmad dok puštate da podesite titlove.","SUBTITLES_DELAY":"Odlaganje titlova:","SUBTITLES_LOADING":"Učitavanje titlova...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Isključeno","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sezona","EPISODE":"Epizoda","SPECIAL":"Special","SORT":"sortiraj","SORT_BY":"Sortiraj po","FILTER":"filter","SORT_TRENDING":"popularno","SORT_RECENT":"nedavno","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"ocena","SORT_WATCHED":"gledano","SORT_YEAR":"godina","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Novo za vas","New Episodes":"Nove Epizode","New Videos":"Novi Video","Recommendations":"Preporuke","LIBRARY_RESUME":"nastavi","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"odbaci","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Istaktnut","DISCOVER_TOP":"Najbolji","DISCOVER_OSCAR":"Dobitnici Oskara","DISCOVER_WARNING_TITLE":"Ups!","DISCOVER_EMPTY_CATALOG":"Ovaj dodatak je uzvratio prazan sadržaj.","DISCOVER_ADULT_WARNING":"Ovaj sadržaj je dostupan samo odraslima. Imaš li 18+?","DISCOVER_NOADDON_WARNING":"Upozorenje: nema aktivnog Stremio dodatka za ovaj tip. Prikazujemo sačuvane stvari, ništa se neće nadograditi.","DISCOVER_LOAD_ERR":"Greška, sadržaj nije mogao biti učitan.","DISCOVER_ADDON_UNINSTALLED":"Ovaj sadržaj nije više dostupan, možda ste deinstalirali dodatak.","UNINSTALL_THIS_ADDON":"Deinstaliraj dodatak","ERR_ADDON_NOT_INSTALLED":"Ovaj dodatak nije instaliran. Sada instalirati?","DETAIL_RECEIVE_NOTIF_SERIES":"Dobijajte obaveštenja o novim epizodama","DETAIL_RECEIVE_NOTIF_VIDEOS":"Dobijajte obaveštenja o novim videima","SIDEBAR_SHOW_STREAMS":"Pokaži strimove","RELAUNCH":"Ponovo pokreni sada!","UPGRADE":"Nova verzija je dostupna! Ažurirajte se na poslednju Stremio verziju","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Ažurirajte vašu verziju Stremio-a","MANUAL_UPDATE_LINE1":"Trenunto koristite zastarelu verziju Stremio-a, što nije preporučeno.","MANUAL_UPDATE_LINE2":"Molimo vas da ažurirate verziju što pre.","BUTTON_UPDATE_LATTER":"Ne sada","BUTTON_UPDATE_NOW":"Ažurirati","ANONYMOUS_USER":"Anonimni korisnik","DONT_HAVE_ACC":"Nemate nalog?","HAVE_ACC":"Već imate nalog?","PASSWORD":"Lozinka","PASSWORD_CONFIRM":"Potvrdite lozinku","EMAIL":"E-mail","FB_LOGIN":"Prijavite se preko Facebook-a","FB_NOTHINGSHARED":"Ništa se ne deli bez vaše dozvole","FB_NOPOST":"Nećemo objavljivati ništa u Vaše ime","OR":"ili","I_ACCEPT":"Prihvatam","I_ACCEPT_BY_CLICKING":"Klikom na gornje dugme svedočim da prihvatam","TOS":"Uslove i Odredbe","MUST_ACCEPT_TERMS":"Morate prihvatiti uslove","PASSWORDS_NOMATCH":"Lozinke se ne podudaraju","SIGN_UP":"Registracija","SIGN_UP_EMAIL":"Prijavite se putem e-pošte","CLICK_TO_SIGN_UP":"Pritisnite ovde za registraciju.","LOG_IN":"Prijavite se","LOG_OUT":"Odjavite se","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Pomoć & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"O Stremio-u","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Prijavite se kao gost","GUEST_LOGIN_NOTICE":"Prijava kao gost nije preporučena. Koristeći redovnu prijavu Stremio omogućava sinhronizaciju svojih biblioteke i primanje obaveštenja o omiljenim serijama / kanalima. Jeste li sigurni da želite nastaviti?","GUEST_LOGIN_NOTICE_2":"Prijava kao gosti nije preporučena - nećete imati sinhronizaciju i obaveštenja Biblioteke i Table, koje su od vitalne važnosti za Stremio. Jeste li sigurni da želite nastaviti?","CLICK_HERE":"klikni ovde","WRONG_PASSWORD":"Pogrešna lozinka. U slučaju da ste zaboravili lozinku, ","SET_A_PASS":"postavite lozinku","RESET_PASSWORD":"Resetuj lozinku","FORGOT_PASSWORD":"Zaboravili ste lozinku?","EMAIL_USED_WITH_FB":"Ovaj email je korišten sa Facebook prijavom.","INVALID_EMAIL":"Unesite ispravnu e-mail adresu","INVALID_PASSWORD":"Molimo Vas da unesete ispravnu lozinku","CONN_ERR":"Greška pri povezivanju - molimo Vas pokušajte kasnije.\\n\\nAko se ovo nastavi, onemogućite zaštitni zid/antivirus (naročito Bitdefender).","IMPORT_FROM_GUEST":"Uvezite Biblioteku iz Vašeg gost naloga","RECEIVE_UPDATES_EMAIL":"Primite vesti od Stremio-a na Vaš e-mail","LOGIN_FAILED":"Neuspešna prijava.","SIGNUP_FAILED":"Prijava nije uspela.","SEARCH_FAILED":"Neuspešna istraga","EMAIL_USED":"Ovaj email je već u upotrebi.","WAITING_FB_LOGIN":"Prijavljivanje preko Facebook-a...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Hoćete li da zapamtite Vaš izbor?","EXTERNAL_ALWAYS_PLAY":"Da","EXTERNAL_ONLY_ONCE":"Ne","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Recite nam šta volite","INTRO_TASTE_LONG":"Recite nam šta biste hteli da gledate","INTRO_TASTE_PICK":"Izaberite {{interestsRemaining}} interesovanja","INTRO_TASTE_PICK_MORE":"Izaberite još {{interestsRemaining}} interesovanja","INTRO_TASTE_HELP_US":"Pomozite nam da naučimo o Vama.","INTRO_TASTE_CHOOSE_THESE":"Izaberite neke od ovih:","INTRO_TASTE_CHOOSE_MIN":"Izaberite makar tri kategorije","INTRO_TASTE_CHOOSE_MIN_ERR":"Morate izabrati makar tri kategorije!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Izabrani dodatak nije podržan na ovoj platformi.","ADDON_DISCLAIMER":"Korištenje trećih dodataka uvek će biti predmet lične odgovornosti i zakonom zemlje u kojoj se nalazite.","ADDON_ACTIVATE":"Aktiviraj ovaj dodatak?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Dodaj","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Šta je novo","BUTTON_CONTINUE":"Nastavi","BUTTON_ACTIVATE":"Aktiviraj","BUTTON_ACTIVATED":"Aktivirano","BUTTON_CANCEL":"Prekini","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Poništi sve","BUTTON_VIEW_ALL":"Vidi sve","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Vaša Biblioteka izlgeda prazna. Saznajte koliko je zapravo korisna :) ","HOW_START":"Ovako možete početi:","LIB_EMPTY_CAL":"Vaš Kalendar prikazuje serije iz Vaše Biblioteke.","HOW_START_CAL":"Ovako možete dodati serije:","LIB_EMPTY_BOARD":"Tabla prikazuje notifikacije & preporuke slične tvojoj biblioteci.","HOW_START_BOARD_WAIT":"Molimo Vas da dodate par serija ili kanala u Vašu Biblioteku i dozvolite nam par minuta da procesuiramo :)","HOW_START_BOARD":"Evo kako možete da dodate serije & flmove na nju:","IMPORT_FB":"Uvoz stvari koje Vam se sviđaju na Facebook","IMPORT_TRAKT":"Import your media library from Trakt","IMPORT_DISCOVER":"Nađite zanimljive stvari u Otkrij","IMPORT_DISK":"Uvoz filmova ili serija koje imate na Vašem lokalnom disku","PLEASE_CREATE_ACC":"Molimo Vas napravite nalog da omogućite sinhronizaciju Biblioteke & Table.","IMPORT_DISCOVER_SIGNUP":"Registrujte se i otkrijte zanimljive stvari u Otkrij","IMPORT_DISK_SIGNUP":"Registrujte se i importujte filmove i serije sa vašeg lokalnog diska","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Primaj obaveštenja o novim epizodama","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Prijavite se da dobijete sve ovo:","LIB_EMPTY_BEST":"Prijavite se da dobijete najbolje of Stremio-a","LIB_EMPTY_OTHER":"Prijavite se da biste mogli da aktivirate kalendar i druge dobre funkcije","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt greška","TRAKT_REQUIRES_LOGIN_MSG":"Morate biti ulogovani","SETTINGS_LABEL":"Podešavanja","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Pokreni na pokretanju","SETTINGS_VLC_DEFAULT":"Pusti sa VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Zatvoriti aplikaciju kada je zatvoren prozor","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Automatski pusti sledeću epizodu","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Automatski promeni veličinu prozora pre puštanja","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Uvek koristi najnoviju BETA","SETTINGS_IMPORT_FB":"Uvezi sa Facebooka","SETTINGS_IMPORT_DISK":"Uvezi sa lokalnog diska","SETTINGS_IMPORT_TRAKT":"Uvezi sa Trakt-a","SETTINGS_PAUSE_MINIMIZED":"Pauziraj plejback kada je minimiran","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Pozadinsko puštanje","SETTINGS_SUBSCRIBE_CALENDAR":"Pretplati se na Kalendar","SETTINGS_REQ_EXPORT":"Zatraži izvoz podataka","SETTINGS_ACC_DELETE":"Zatraži brisanje naloga","SETTINGS_CHANGE_PASSWORD":"Promeni lozinku","SETTINGS_TOS":"Uslovi korišćenja","SETTINGS_SUPPORT":"Kontaktiraj podršku","SETTING_LANGUAGE":"Jezik","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Odjavi se sa Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"podrazumevani titlovi","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Pokreni u zasebnom prozoru (napredno)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Izađi","CONNECTED":"Povezan","AUTHENTICATE":"Prijavi se","CACHING":"Keširanje","SETTINGS_CACHING_DRIVE":"Izaberi disk za keširanje","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januar","February":"Februar","March":"Mart","April":"April","May":"Maj","June":"Jun","July":"Jul","August":"Avgust","September":"Septembar","October":"Oktobar","November":"Novembar","December":"Decembar","Monday":"Ponedeljak","Tuesday":"Utorak","Wednesday":"Sreda","Thursday":"Četvrtak","Friday":"Petak","Saturday":"Subota","Sunday":"Nedelja","Action":"Akcija","Comedy":"Komedija","War":"Ratni","Family":"Porodični","Animation":"Animacija","Adventure":"Avanturistički","Fantasy":"Fantazija","Crime":"Krimi","Mystery":"Misterija","Romance":"Ljubavni","Drama":"Drama","Horror":"Horor","Thriller":"Triler","Sci-Fi":"Naučna Fantastika","Music":"Mjuzikl","Biography":"Biografija","Documentary":"Dokumentarni","Sport":"Sport","Musical":"Mujuzikl","Western":"Western","Film-Noir":"Film-Noir","News":"Novosti","History":"Istorijski","Game-Show":"Game-Show","Reality-TV":"Rijaliti","Talk-Show":"Tok Šou","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Filmovi","Uk Live Tv":"UK Uživo Tv","Fashion":"Moda","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"novi video","new episode":"nova epizoda","new movie":"novi film","recommended":"preporučeno","we recommend":"preporučujemo","offer of the day":"ponuda dana","news":"vesti","music video":"spot","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Odbaci obaveštenja","CTX_DISMISS_ALL":"Odustani","CTX_SHARE":"Podeli","CTX_COPY_SHARE_LINK":"Kopiraj link za deljenje","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Prikaži","CTX_PLAY":"Pusti","CTX_PLAY_IN":"Pusti u","CTX_PLAY_ON":"Pusti na","CTX_WATCH_ON":"Gledajte na","CTX_WATCH":"Gledajte","CTX_WATCHED":"Odlgedano","CTX_WATCH_BEGINNING":"Gledajte od početka","CTX_WATCH_MOBILE":"Gledajte na mobilnom uređaju","CTX_REWIND":"Premotaj na početak","CTX_MARK_WATCHED":"Označi kao odgledano","CTX_MARK_NON_WATCHED":"Označi kao neodgledano","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Označi ostatak kao odgledano","CTX_UNMARK_REST":"Označi ostatak kao neodgledano","CTX_RECEIVE_NEW_NOTIF":"Primajte nova obaveštenja","CTX_REMOVE_CACHE":"Obriši iz keša","CTX_REMOVE_CACHE_EP":"Ukloni epizodu iz keša","CTX_OPEN_CONTAINING":"Otvori folder sadržaja","CTX_REMOVE":"Ukloni iz Biblioteke","CTX_AVAILABLE_OFFLINE":"Dostupno Offline","CTX_PAUSED":"Pauzirano","CTX_ALWAYS_ON_TOP":"Uvek na vrhu","CTX_FULLSCREEN":"Ceo ekran","CTX_WRONG_SUBS":"Pogrešan prevod?","CTX_REPORT_ISSUES":"Prijavi problem","CTX_COPY":"Kopiraj","CTX_PASTE":"Nalepi","CTX_CLEAR":"Očisti","CTX_CLEAR_RECENT_SEARCHES":"Obriši skorašnje pretrage","HELLO_THERE":"Hej zdravo","HOPE_YOU_ENJOY":"Nadamo se da uživate uz Stremio i da je već jedna od vaših omiljenih aplikacija!","WHO_ARE_WE":"Ko smo mi? Mi smo tim iza njega - dva momka koja rade teško svaki dan već skoro 3 godine da bismo napravili ovaj proizvod sve boljim i boljim.","SUPPORT_US":"Ako uživate koristeći Stremio, ako je Stremio vredan za vas - širite reč!","SPREAD_THE_WORD":"Podelite sada sa svojim prijateljima, širite reči o Stremio","MORE_PEOPLE":"Što više ljudi koriste Stremio, to će biti bolji!","SEND_A_LINK":"Ili podelite link ka našem sajtu","TIP_LOCALFILES":"Savet: možete prevući i ubaciti lokalne video datoteke u Stremio","ADDON_MY":"Moji Dodaci","ADDON_COMMUNITY":"Dodaci zajednice","ADDON_OFFICIAL":"Zvanični dodaci","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Pretraži dodatke","ADDON_INSTALL":"Instaliraj","ADDON_CONFIGURE":"Podesi","ADDON_UNINSTALL":"Deinstaliraj","ADDON_UPGRADE":"Nadogradi","ADDON_INSTALLED":"Instalirano","ADDON_INSTALLED_MSG":"Dodatak instaliran!","ADDON_UPGRADED_MSG":"Dodatak nadograđen!","ADDON_UNKNOWN":"Nepoznato","ADDON_ERR":"Greška pri instaliranju dodatka!","ADDON_DISCONNECTED":"Diskonektovan","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Instaliraj Sada","ADDON_PAGE":"Stranica dodataka","ADDON_TOP_CONTENT":"Najbolje do ovog dodatka","ADDON_PROVIDES":"Ovaj dodatak će vam dati:","ADDON_WATCH":"Pogledaj #{types} sada!","ADDON_WATCH_FREE":"Pogledaj #{types} BESPLATNO sada !","ADDON_ADDON":"Dodatak","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"Više #{types} u Otkrivanju","ADDON_PROVIDES_STREAMS":"Gledaj #{types}","ADDON_PROVIDES_STREAMS_FREE":"Gledaj #{types} BESPLATNO","ADDON_PROVIDES_SUBTITLES":"Prevodi za #{types}","ADDON_CANTDETECT":"Nismo uspeli pronaći pokrenuti Stremio, tako da nismo uspeli detektovati koje dodatke imate instaliarne.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Neuspešno otvaranje fajla","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"Ova mogućnost je dostupna samo registrovanim korisnicima.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Nastavi gledanje","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmovi izabrani isključivo za vas.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Gledaj Odmah","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Gledati od","WEBSITE_DOWNLOAD":"Skinite sada","WEBSITE_DOWNLOAD_FOR":"Skinite sada za","WEBSITE_IS_DESKTOP":"Stremio je desktop aplikacija, otvori ovu stranicu na svom PC i skini ga","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Glavna","WEBSITE_PAGE_FEATURES":"Karakteristike","WEBSITE_PAGE_ADDONS":"Dodaci","WEBSITE_PAGE_TECH":"Tehnologija","WEBSITE_PAGE_CREATE_ADDON":"Kreiraj dodatak","WEBSITE_PAGE_CONTACTS":"Kontakti","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filmovi","WEBSITE_TYPE_series_PL":"Serije","WEBSITE_TYPE_tv":"Uživo TV","WEBSITE_TYPE_channel":"Kanali","WEBSITE_STREMIO_WHAT_IS":"Stremio je aplikacija koja Vam pomaže da organizujete i odmah gledate vaše omiljene video, filmove, TV serije i TV kanale.","WEBSITE_FEATURES_WATCH":"Gledajte odmah u HD","WEBSITE_FEATURES_WATCH_DETAIL":"Kliknite i pustite svoje omiljene filmove, TV Emisije, video i TV kanale.","WEBSITE_FEATURES_SUBS":"Automatski Prevodi","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatski odabire sinhronizovane prevode za vaš jezik.","WEBSITE_FEATURES_SUBS_LABEL":"Vaš potez, šefe.","WEBSITE_FEATURES_CAST":"Pustite na TV & mobilnim uređajima","WEBSITE_FEATURES_CAST_DETAIL":"Emitovanje na AppleTV, Chromecast, Smart TV (DLNA/UPnP) i mobilne uređaje.","WEBSITE_LIB":"Uživajte u Svojoj ličnoj Biblioteci sinhronizovanoj na sve Vaše uređaje","WEBSITE_LIB_COLLECT":"Prikupite sa Stremio","WEBSITE_LIB_IMPORT":"Uvezite sa Facebook-a","WEBSITE_LIB_LOCAL":"Dodajte sa vašeg lokalnog diska","WEBSITE_BOARD":"Tabla - Vaše one-stop mesto za obaveštenja i preporuke","WEBSITE_BOARD_RECOMMEND":"Preporučena TV Emisija","WEBSITE_BOARD_TRENDING":"Traženi Film","WEBSITE_BOARD_NEW":"Novi Video","WEBSITE_BOARD_EPISODE":"Nova Epizoda","WEBSITE_BOARD_1":"Tražite nešto interesantno da gledate? Dobijajte preporuke na osnovu vašeg ukusa!","WEBSITE_BOARD_2":"Primite obaveštenja kada nova epizoda vaš omiljene TV emisije ili YouTube kanala izadje!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Dodaci za sadržaj","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Kreiraj svoj dodatak","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Zainteresovani? Dobrodošli ste da nas kontaktirate.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Misljenja koja delimo:","WEBSITE_SPREAD":"Delite reč o Stremio-u:","WEBSITE_CONTACT":"Ako hoćete da nas kontaktirate, to možete ovde uraditi","WEBSITE_OPENSOURCE":"Za naše open-source projekate, idite na naš","WEBSITE_BITCOIN":"Donirajte bitcoin:","WEBSITE_FAQ":"Često postavljena pitanja","WEBSITE_FAQ_SHORT":"ČPP","WEBSITE_QUESTIONS":"Pitanja","WEBSITE_TOS":"Uslovi korišćenja","WEBSITE_LEGAL":"Zakoni","WEBSITE_PAGE_ABOUT":"O","WEBSITE_PAGE_BECOME_PARTNER":"Postanite partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! Stranica koju tražite nije ovde...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"Ovaj izvor je slabo dostupan ili je Vaša internet konekcija prespora","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Podesi vreme sa ","ADJUST_SIZE":"Podesi veličinu sa ","SEARCH_ANYTHING":"Moćeš Pretraživati Bilo Šta...","ALL_CATEGORIES":"Sve","SEARCH_CATEGORIES":"Filmove, Serije, YouTube & TV","SEARCH_PERSONS":"Glumce, Režisere i Scenografe","SEARCH_PROTOCOLS":"HTTP i Magnet Linkove","SEARCH_TYPES":"IMDB / TVDB linkove","WATCHED":"Odgledano","SHOW_LESS":"Prikaži manje","LAST_SEARCHES":"Poslednje pretrage","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"Prenos podataka je skup","USE_DATA":"Use data","WARNING":"Upozorenje","MORE_INFO":"Više Informacija ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Učitavanje ...","STREMIO_TV_BACK_TO_LANGUAGES":"Nazad na jezike","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Idi na:","STREMIO_TV_OR_SCAN":"ili skeniraj:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Nastavi Gledanje","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Namesti vreme","REMOTE_ADJUST_SIZE":"Namesti veličinu","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Pokušaj ponovo","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},4662:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serie","TYPE_tv":"TV-kanal","TYPE_channel":"Kanal","TYPE_other":"Other","TYPE_movie_PL":"Filmer","TYPE_series_PL":"Serier","TYPE_tv_PL":"TV-kanaler","TYPE_channel_PL":"Kanaler","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Tillbaka","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Upptäck","Board":"Vägg","Library":"Bibliotek","My Library":"My Library","Calendar":"Kalender","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"Sök","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Lägg till i biblioteket","REMOVE_FROM_LIB":"Ta bort från biblioteket","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Trailer","WATCH_TRAILER":"Titta på trailer","WATCH_NOW":"Titta nu","SHOW":"Visa","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"Betyg på IMDB","YEAR":"År","DIRECTOR":"Regissör","WRITER":"Manusförfattare","LEAD_ACTORS":"Huvudskådespelare","CAST":"Rollista","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Utgiven","SEASONS":"Säsonger","GENRE":"Genre","CATALOG":"Catalog","SUMMARY":"Sammanfattning","SHOW_MORE":"Show More","SIMILAR":"Liknande","UPCOMING":"Kommande","ENDED":"Avslutad","DURATION":"Speltid","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Sök efter video","SEARCH_PLACEHOLDER":"search or paste magnet link","ADDON":"Tillägg","ADDONS":"Tilläggen","OFFICIAL":"Officiella","ADDONS_OFFICIAL":"Officiella Stremio-tillägg","ADDONS_POPULAR":"Populärt i ditt område","ADDON_FREE":"Gratis tillägg","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Prenumeration på tillägg","ADDON_STREAM_GEORESTRICTED":"not available in your area","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Tillgängliga strömmar","NO_STREAM":"Ingen ström","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Katalog för tillägg","ADDON_CATALOGUE_MORE":"More addons »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Protected addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Visas fortfarande på bio","WATCH_IN_CINEMA":"Se den på din lokala bio","IN_THEATER":"På bio","GET_TICKETS":"Skaffa biljetter","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Den här kanalen är inte skrapad än.
    Kom tillbaka om några minuter.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Lägg till den till ditt bibliotek för att bli meddelad när den blir tillgänglig.","GET_NOTIFIED_WHEN_AVAILABLE":"Du kommer att bli meddelad när den blir tillgänglig.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Hoppsan, fel på spelaren","PLAYER_ERROR_LOOKSLIKE":"Det tycks vara ett fel på spelaren","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Strömmar från","CASTING_TO":"Castar till","NETWORK_STATUS":"Nätverksstatus","STREAM_SPEED":"Nedladdningshastighet:","STREAM_BUFFERED":"Buffrat:","PEERS_INFO":"Information om peers","PEERS_ACTIVE":"Aktiv:","PEERS_CONNECTED":"Ansluten:","PEERS_WAITING":"Väntar:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"Laddar strömmen...","PLAYING_LOCAL":"Spelar upp en lokal fil","PLAYING_CACHE":"Spelar upp från cache","WRONG_SUBS":"Felaktiga undertexter","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Välj en enhet att titta på","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Telefon / Platta","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Ändra undertexter för ","SUBTITLES_CHANGE_NONE":"Det finns inga andra undertexter för detta språk, beklagar.","SUBTITLES_CHANGE_ACIVE":"För närvarande är undertexter #{{subtitlesDialog.activeIdx + 1}} aktiverade. Klicka på \\"Fortsätt\\" för att aktiverar undertexter #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Undertexter eller","SUBTITLES_ADJUST_DELAY":"Justera fördröjning av undertexter:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Eller använd tangenterna G / H när du tittar.","SUBTITLES_ADJUST_DELAY_TIP":"TIPS: du kan använda tangenterna G / H när du tittar för att justera.","SUBTITLES_DELAY":"Fördröjning av undertexter:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Säsong","EPISODE":"Avsnitt","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"Sortera trender","SORT_RECENT":"Sortera efter senaste","SORT_ALPHABET":"Sortera efter alfabetet","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"betyg","SORT_WATCHED":"sett","SORT_YEAR":"År","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"Återuppta","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Detaljer","LIBRARY_RESUME_DISMISS":"dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Utvalda","DISCOVER_TOP":"Topp","DISCOVER_OSCAR":"Oscarsvinnare","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Varning: inget Stremio-tillägg aktivt för denna typ. Visar sparade objekt, ingenting kommer att uppdateras.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Starta om nu!","UPGRADE":"Uppgradera till den senaste versionen av Stremio","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Logga in med Facebook","FB_NOTHINGSHARED":"Ingenting delas utan din tillåtelse ","FB_NOPOST":"We won’t post anything on your behalf","OR":"eller","I_ACCEPT":"Jag accepterar","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Användarvillkoren","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Lösenorden matchar inte","SIGN_UP":"Registrera","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Logga in","LOG_OUT":"Logga ut","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Gästinloggning","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"klicka här","WRONG_PASSWORD":"Fel lösenord. Om du har glömt ditt lösenord, ","SET_A_PASS":"ange ett lösenord","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"Denna e-postadress användes med en Facebook-inloggning.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Anslutningsfel - var vänlig och försök igen senare.\\n\\nOm problemet kvarstår, inaktivera brandväggar/antivirusprogram (speciellt Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Användandet av tredjeparts-tillägg kommer alltid att vara ditt eget ansvar och faller under lagstiftningen i det område du befinner dig i.","ADDON_ACTIVATE":"Aktivera detta tillägg?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Nyheter","BUTTON_CONTINUE":"Fortsätt","BUTTON_ACTIVATE":"Aktivera","BUTTON_ACTIVATED":"Aktiverad","BUTTON_CANCEL":"Avbryt","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Ditt bibliotek ser tomt ut. Ta reda på hur användbart det kan vara :)","HOW_START":"Så här kan du börja:","LIB_EMPTY_CAL":"Din Kalender visar serier från ditt bibliotek.","HOW_START_CAL":"Så här kan du lägga till en serie:","LIB_EMPTY_BOARD":"Väggen visar notifikationer & rekommendationer med anknytning till ditt bibliotek.","HOW_START_BOARD_WAIT":"Lägg gärna till några serier eller kanaler till Bibliotek och ge oss några minuter att behandla dem :)","HOW_START_BOARD":"Så här kan du lägga till serier & filmer till den:","IMPORT_FB":"Importera saker du tycker om från Facebook","IMPORT_TRAKT":"Import your media library from Trakt","IMPORT_DISCOVER":"Hitta intressanta saker från Upptäck","IMPORT_DISK":"Importera filmer eller serier som du har på din lokala hårddisk","PLEASE_CREATE_ACC":"Vänligen skapa ett konto för att aktivera synkronisering av Biblioteket & Vägg.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from Discover","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your local disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"Du behöver logga in","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Starta vid uppstart","SETTINGS_VLC_DEFAULT":"Spela upp med VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Spela automatiskt upp nästa avsnitt","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Importera från Facebook","SETTINGS_IMPORT_DISK":"Importera från lokal hårddisk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Prenumerera på kalender","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Ändra lösenord","SETTINGS_TOS":"Användarvillkor","SETTINGS_SUPPORT":"Kontakta supporten","SETTING_LANGUAGE":"Språk","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Logga ut från Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Avsluta","CONNECTED":"Connected","AUTHENTICATE":"Autentisera","CACHING":"Cachear","SETTINGS_CACHING_DRIVE":"Inställningar för cacheenhet","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januari","February":"Februari","March":"Mars","April":"April","May":"Maj","June":"Juni","July":"Juli","August":"Augusti","September":"September","October":"Oktober","November":"November","December":"December","Monday":"Måndag","Tuesday":"Tisdag","Wednesday":"Onsdag","Thursday":"Torsdag","Friday":"Fredag","Saturday":"Lördag","Sunday":"Söndag","Action":"Action","Comedy":"Komedi","War":"Krig","Family":"Familj","Animation":"Animerat","Adventure":"Äventyr","Fantasy":"Fantasy","Crime":"Deckare","Mystery":"Mysterium","Romance":"Romantik","Drama":"Drama","Horror":"Skräck","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Musik","Biography":"Biografi","Documentary":"Dokumentär","Sport":"Sport","Musical":"Musikal","Western":"Western","Film-Noir":"Film-Noir","News":"Nyheter","History":"Historia","Game-Show":"Spel-program","Reality-TV":"Reality-TV","Talk-Show":"Pratprogram","Film & Entertainment":"Film & Underhållning","Gaming":"Gaming","From TV":"Från TV","Lifestyle":"Livsstil","Science & Education":"Vetenskap & Utbildning","Cooking & Health":"Matlagning & Hälsa","Beauty & Fashion":"Skönhet & Mode","Sports":"Sport","News & Politics":"Nyheter & Politik","How-to & DIY":"Gör det själv","Tech":"Teknik","Automotive":"Fordon","Causes & Non-Profits":"Bra saker & Ideella organisationer","Movies":"Filmer","Uk Live Tv":"UK Direkt Tv","Fashion":"Mode","Business News Radio":"Nyhetsradio för företag","Business Tv":"Företags-TV","Cars & Auto":"Bilar & Fordon","Comedy Radio":"Komediradio","Lifestyle Radio":"Livsstilsradio","News Tv":"Nyheter Tv","Food And Wine":"Mat Och Vin","Latino Tv":"Latinsk Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Barn","Body & Soul":"Kropp & Själ","Education":"Utbildning","Indian Tv":"Indisk Tv","Extreme Sports":"Extremsport","Middle Eastern Tv":"Mellanöstern Tv","Celebrity Tv":"Kändis Tv","Science Tv":"Vetenskap Tv","Bikini babe":"Bikini brud","Outdoors":"Utomhus","German Tv":"Tysk Tv","French Tv":"Fransk Tv","Italian Tv":"Italiensk Tv","Gamer Tv":"Gamer Tv","Travel":"Resor","Asian Tv":"Asiatisk Tv","Entertainment":"Underhållning","News Radio":"Nyheter Radio","Music Radio":"Musik Radio","Language Learning":"Språkinlärning","Science Radio":"Vetenskaplig Radio","Tech Radio":"Teknik Radio","Science & Technology Vod":"Vetenskap & Teknik Vod","new video":"nytt videoklipp","new episode":"nytt avsnitt","new movie":"ny film","recommended":"rekommenderad","we recommend":"vi rekommenderar","offer of the day":"dagens erbjudande","news":"nyheter","music video":"musikvideo","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Avisa notifikationer","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Dela","CTX_COPY_SHARE_LINK":"Kopiera delningslänk","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Visa","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Titta på","CTX_WATCH":"Titta","CTX_WATCHED":"Sedd","CTX_WATCH_BEGINNING":"Se från början","CTX_WATCH_MOBILE":"Se på mobilen","CTX_REWIND":"Spola tillbaka till början","CTX_MARK_WATCHED":"Markera som sedd","CTX_MARK_NON_WATCHED":"Markera som osedd","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Ta emot nya notifikationer","CTX_REMOVE_CACHE":"Ta bort från cache","CTX_REMOVE_CACHE_EP":"Ta bort avsnitt från cache","CTX_OPEN_CONTAINING":"Öppna innehållande mapp","CTX_REMOVE":"Ta bort från bibliotek","CTX_AVAILABLE_OFFLINE":"Tillgänglig Offline","CTX_PAUSED":"Pausad","CTX_ALWAYS_ON_TOP":"Alltid överst","CTX_FULLSCREEN":"Fullskärm","CTX_WRONG_SUBS":"Fel undertexter?","CTX_REPORT_ISSUES":"Rapportera problem","CTX_COPY":"Kopiera","CTX_PASTE":"Klistra in","CTX_CLEAR":"Rensa","CTX_CLEAR_RECENT_SEARCHES":"Rensa senaste sökningar","HELLO_THERE":"Hejsan","HOPE_YOU_ENJOY":"Vi hoppas att ni uppskattar Stremio och det redan är ett av dina favoritprogram!","WHO_ARE_WE":"Vilka är vi? Vi är teamet bakom det - två killar som arbetat hårt varje dag under de senaste 3 åren, med ett enda mål - att göra produkten bättre och bättre.","SUPPORT_US":"Om du tycker om att använda Stremio, om Stremio är värdefullt för dig - stöd oss!","SPREAD_THE_WORD":"Dela med dina vänner nu, sprid ordet om Stremio.","MORE_PEOPLE":"Ju fler människor som använder Stremio, desto bättre kommer det att bli!","SEND_A_LINK":"Eller skicka en länk till vår hemsida","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"Mina tillägg","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Officiella tillägg","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Sök efter tillägg","ADDON_INSTALL":"Installera","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Avinstallera","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installerad","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"provides","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Tillägg","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Fortsätt titta","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Ladda ner nu","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Skrivbordsdemo","WEBSITE_PAGE_HOME":"Hem","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Tillägg","WEBSITE_PAGE_TECH":"Teknologi","WEBSITE_PAGE_CREATE_ADDON":"Skapa ett tillägg","WEBSITE_PAGE_CONTACTS":"Kontakter","WEBSITE_PAGE_BLOG":"Blogg","WEBSITE_TYPE_movie":"Filmer","WEBSITE_TYPE_series_PL":"Serier","WEBSITE_TYPE_tv":"Live-TV","WEBSITE_TYPE_channel":"Kanaler","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatiska undertexter","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio väljer automatiskt synkade undertexter för ditt språk.","WEBSITE_FEATURES_SUBS_LABEL":"Ditt drag, chefen.","WEBSITE_FEATURES_CAST":"Spela upp på TV:n & mobila enheter","WEBSITE_FEATURES_CAST_DETAIL":"Castea till AppleTV, Chromecast, Smart TV (DLNA/UPnP) och mobila enheter.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Samla från Stremio","WEBSITE_LIB_IMPORT":"Importera från Facebook","WEBSITE_LIB_LOCAL":"Lägg till från din lokala hårddisk","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Rekommenderat TV-program","WEBSITE_BOARD_TRENDING":"Filmtrend","WEBSITE_BOARD_NEW":"Ny video","WEBSITE_BOARD_EPISODE":"Nytt avsnitt","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"Vi älskar teknologi, vi älskar galen forskning!\\nStremio använder följande öppen källkodsteknologier:","WEBSITE_TECH_WCJS":"WebChimera.js tillåter Stremio att spela upp alla videoformat med bra prestanda.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Skapa ditt tillägg","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Fördelar med att skapa ett tillägg till Stremio","WEBSITE_P2P_BEAUTY":"Det sköna med strömmande via Peer-to-Peer","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"Vi kommer att skapa ett tillägg som möter dina specifika behov","WEBSITE_P2P_CONTACT":"Intresserad? Du är välkommen att kontakta oss.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Nu och då kommer det en teknologi som förändrar situationen. Vi investerade massor av tid och ansträngning för att bygga vår Peer-to-Peer (P2P) strömningsmotor för video som erbjuder bra prestanda and mångsidighet att anpassa sig med alla användningsområden.\\nKontakta oss för DRM-aktiverad P2P-video on demand eller live-sändning.","WEBSITE_THOUGHTS":"Tankar som vi delar:","WEBSITE_SPREAD":"Sprid ordet om Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"För våra projekt med öppen källod, går till vår","WEBSITE_BITCOIN":"Donera bitcoin:","WEBSITE_FAQ":"Frekvent ställda frågor","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Användningsvillkor","WEBSITE_LEGAL":"Lagligt","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},9892:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"సినిమా","TYPE_series":"సిరీస్","TYPE_tv":"టీవీ ఛానల్","TYPE_channel":"ఛానల్","TYPE_other":"మరిన్ని","TYPE_movie_PL":"Movies","TYPE_series_PL":"Series","TYPE_tv_PL":"TV channels","TYPE_channel_PL":"Channels","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Back","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Discover","Board":"Board","Library":"Library","My Library":"My Library","Calendar":"Calendar","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"search","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Add to Library","REMOVE_FROM_LIB":"Remove from Library","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Trailer","WATCH_TRAILER":"Watch Trailer","WATCH_NOW":"Watch Now","SHOW":"Show","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb Rating","YEAR":"Year","DIRECTOR":"Director","WRITER":"Writer","LEAD_ACTORS":"Lead Actors","CAST":"Cast","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Aired","SEASONS":"Seasons","GENRE":"Genre","CATALOG":"Catalog","SUMMARY":"Summary","SHOW_MORE":"Show More","SIMILAR":"Similar","UPCOMING":"Upcoming","ENDED":"Ended","DURATION":"Duration","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"search videos","SEARCH_PLACEHOLDER":"search or paste URL","ADDON":"addon","ADDONS":"Addons","OFFICIAL":"official","ADDONS_OFFICIAL":"Official Stremio Addons","ADDONS_POPULAR":"Popular in your area","ADDON_FREE":"free","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"subscription","ADDON_STREAM_GEORESTRICTED":"not available in your area","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Available Streams","NO_STREAM":"No streams were found","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Show all addons »","ADDON_CATALOGUE_MORE":"Install addons","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons collection already exist","ADDON_REPO_ERR":"Error occurred while adding collection","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Cannot uninstall addon, it is protected","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection URL","ERR_NOT_ADDON_URL":"Not a valid addon URL","ERR_DETECTFROMURL":"Cannot find addon/collection from this URL","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Syncing installed addons to your account failed","SETTINGS_DATA_EXPORT":"Export user data","ADDON_PULL_FAILED":"Syncing installed addons from your account failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Movie still in theaters","WATCH_IN_CINEMA":"Watch it in your local cinema","IN_THEATER":"In cinema","GET_TICKETS":"Get tickets","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.
    Please come back in a few minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Add it to your library to get notified once it is available.","GET_NOTIFIED_WHEN_AVAILABLE":"You will get notified once it is available.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from local files, YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streaming from","CASTING_TO":"Casting to","NETWORK_STATUS":"Network status","STREAM_SPEED":"Stream speed:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Active:","PEERS_CONNECTED":"Connected:","PEERS_WAITING":"Waiting:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"loading...","PLAYING_LOCAL":"playing from local file","PLAYING_CACHE":"playing from cache","WRONG_SUBS":"Wrong subtitles?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Choose a device to watch on","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Phone / Tablet","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Change subtitles for ","SUBTITLES_CHANGE_NONE":"There are no other subtitles for this language, sorry.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternatively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use G / H keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use G / H keys while playing to adjust.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Season","EPISODE":"Episode","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"recent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rating","SORT_WATCHED":"watched","SORT_YEAR":"year","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"Resume","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"Dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oscar Winners","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Warning: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Re-launch now!","UPGRADE":"New version is available! Upgrade to the latest Stremio version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Continue with Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"or","I_ACCEPT":"I accept the","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Terms and Conditions","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Passwords don\'t match","SIGN_UP":"Sign up","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Log in","LOG_OUT":"Log out","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Guest login","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"click here","WRONG_PASSWORD":"Wrong email or password. In case you have forgotten your password, ","SET_A_PASS":"set a password","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"This email was used with a Facebook login.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Activate this addon?","ADDON_REPO_ADD":"Addon collection URL","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"What\'s new","BUTTON_CONTINUE":"Continue","BUTTON_ACTIVATE":"Activate","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Cancel","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Here is how you can start:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from Facebook","IMPORT_TRAKT":"Import your media library from Trakt","IMPORT_DISCOVER":"Find interesting stuff from Discover","IMPORT_DISK":"Import movies or shows you have on your local disk","PLEASE_CREATE_ACC":"Please create an account to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from Discover","IMPORT_DISK_SIGNUP":"Sign up and import movies or shows you have on your local disk","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Change password","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Contact support","SETTING_LANGUAGE":"Language","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Quit","CONNECTED":"Connected","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"January","February":"February","March":"March","April":"April","May":"May","June":"June","July":"July","August":"August","September":"September","October":"October","November":"November","December":"December","Monday":"Monday","Tuesday":"Tuesday","Wednesday":"Wednesday","Thursday":"Thursday","Friday":"Friday","Saturday":"Saturday","Sunday":"Sunday","Action":"Action","Comedy":"Comedy","War":"War","Family":"Family","Animation":"Animation","Adventure":"Adventure","Fantasy":"Fantasy","Crime":"Crime","Mystery":"Mystery","Romance":"Romance","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Music","Biography":"Biography","Documentary":"Documentary","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon collections","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.
    This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.
    Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.
    Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You Can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to contact us.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Subscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS (limited version)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science.
    Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Stremio 4 beta Now","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can access a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which do not play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a endpoint field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your endpoint as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a local cache to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the Cache setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},3191:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Dizi","TYPE_tv":"TV kanalı","TYPE_channel":"Kanal","TYPE_other":"Diğer","TYPE_movie_PL":"Filmler","TYPE_series_PL":"Diziler","TYPE_tv_PL":"TV kanalları","TYPE_channel_PL":"Kanallar","TYPE_other_PL":"Diğer","TYPE_ALL":"Tümü","VIDEO":"Görüntü","BACK":"Geri","MORE":"Daha fazla","DONE":"Bitti","COPY":"Kopyala","SUCCESS":"Başarılı","ERROR":"Hata","SETTINGS_CASTING_MODE_PICKER":"Yayın modu","CASTING_MODE_HLSV2":"Varsayılan","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Kod dönüştürme yok","Discover":"Keşfet","Board":"Pano","Library":"Kitaplık","My Library":"Kitaplığım","Calendar":"Takvim","NOTIFICATION_ONLINE":"Şu an çevrimiçisiniz","NOTIFICATION_OFFLINE":"Şu anda çevrimdışısınız","INTERNET_CONNECTION":"Ağ bağlantısı","STORAGE_FULL_TITLE":"Dikkat: Depolama dolu!","STORAGE_FULL_TEXT":"Stremio, ayarlarınızı, tercihlerinizi veya oturum açma bilgilerinizi kaydedemeyecektir. Stremio\'yu yeniden başlatmayı veya yeniden yüklemeyi düşünün.","SEARCH":"ara","SEARCH_NO_RESULTS":"Sonuçlar bulunamadı","SEARCH_EXPLANATION_CONTENT":"Filmler, diziler, YouTube ve TV kanallarını arayın","SEARCH_EXPLANATION_PEOPLE":"Aktörler, yönetmenler, yazarları arayın","SEARCH_PASTE_LINKS":"HTTP ve Magnet bağlantılarını yapıştırın","SEARCH_OR_PASTE_LINK":"Arayın ya da bağlantıyı yapıştırın","ADD_TO_LIB":"Kitaplığa Ekle","REMOVE_FROM_LIB":"Kitaplıktan Kaldır","ADDED_TO_LIB":"Kitaplığa Eklendi","REMOVED_FROM_LIB":"Kitaplıktan Kaldırıldı","TRAILER":"Fragman","WATCH_TRAILER":"Fragmanı İzle","WATCH_NOW":"Şimdi İzle","SHOW":"Göster","SHOW_MOVIE":"Filmi Göster","WATCH_RANDOM":"Rastgele İzle","IMDB_RATING":"IMDB Puanı","YEAR":"Yıl","DIRECTOR":"Yönetmen","WRITER":"Yazar","LEAD_ACTORS":"Başroller","CAST":"Oyuncular","CREW":"Ekip","SHOW_MORE_CAST":"Daha fazlasını göster »","AIRED":"Yayın tarihi","SEASONS":"Sezonlar","GENRE":"Tarz","CATALOG":"Katalog","SUMMARY":"Özet","SHOW_MORE":"Daha Fazla Göster","SIMILAR":"Benzer","UPCOMING":"Yaklaşan","ENDED":"Biten","DURATION":"Süre","FEATURED":"Öne çıkanlar","METADATA":"Üstveri","CATEGORY":"kategori","LINKS_GENRES":"Tarzlar","LINKS_CAST":"Oyuncular","LINKS_DIRECTORS":"Yönetmenler","SEARCH_VIDEOS":"görüntüleri arayın","SEARCH_PLACEHOLDER":"arayın veya URL yapıştırın","ADDON":"eklenti","ADDONS":"Eklentiler","OFFICIAL":"resmi","ADDONS_OFFICIAL":"Resmi Stremio Eklentileri","ADDONS_POPULAR":"Bölgenizde beğenilen","ADDON_FREE":"ücretsiz","ADDON_PEERED":"denk gelen","ADDON_SUBSCRIPTION":"abonelik","ADDON_STREAM_GEORESTRICTED":"bölgenizde mevcut değil","ADDON_STREAM_OFFLINECACHE":"Çevrimdışı Önbellek","ADDON_STREAM_LOCALFILE":"Yerel Dosya","SHARE_ADDON":"Eklentiyi paylaş","AVAILABLE_STREAMS":"Mevcut Akışlar","NO_STREAM":"Akışlar bulunamadı","ALL_ADDONS":"Tümü","INSTALL_MORE_ADDONS":"Daha fazla akış için lütfen daha fazla eklenti yükleyin","STREAM_NOT_SUPPORTED":"Seçilen akış bu platformda desteklenmiyor.","ADDON_CATALOGUE":"Tüm eklentileri göster »","ADDON_CATALOGUE_MORE":"Eklentileri yükle","REPO_ADDED":"Depo eklendi","ADDON_REPO_EXIST_ERR":"Bu eklenti koleksiyonu zaten var","ADDON_REPO_ERR":"Koleksiyon eklenirken hata meydana geldi","ADDON_ADD_ERR":"Eklenti eklenirken hata meydana geldi","ERR_ADDON_PROTECTED":"Eklenti kaldırılamıyor, korumalı","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Bir şeyler ters gitti - kimlik doğrulaması başarısız olabilir","ERR_NOT_COLLECTION_URL":"Bir koleksiyon URL\'si değil","ERR_NOT_ADDON_URL":"Bir eklenti URL\'si değil","ERR_DETECTFROMURL":"Bu URL\'den eklenti/koleksiyon bulunamıyor","ADDON_DUPLICATE_WARNING":"Uyarı: yinelenen eklenti","ADDON_COLLECTION_SET_FAILED":"Yüklü eklentilerin hesabınıza eşitlenmesi başarısız oldu","SETTINGS_DATA_EXPORT":"Kullanıcı verilerini dışa aktar","ADDON_PULL_FAILED":"Yüklü eklentilerin hesabınızdan eşitlenmesi başarısız oldu","REFRESH_ON_CLICK":"Yeniden denemek için tıklayın","STILL_IN_THEATER":"Film hala gösterimde","WATCH_IN_CINEMA":"Yerel sinemanızda izleyin","IN_THEATER":"Sinemada","GET_TICKETS":"Bilet al","UPCOMING_EPISODE":"Yaklaşan bölüm","UPCOMING_EPISODE_MESSAGE":"Bu bölümün yayınlanacağı tarih","MISSING_DATE_EPISODE":"Eksik bölüm tarihi","MISSING_DATE_EPISODE_MESSAGE":"Bu bölüm henüz yayınlanmamış olabilir","CHANNEL_NOT_SCRAPED":"Bu kanal henüz uygun değil.
    Lütfen birkaç dakika içinde yine geri gelin.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Mevcut olduğunda bildirim almak için kitaplığınıza ekleyin.","GET_NOTIFIED_WHEN_AVAILABLE":"Mevcut olduğunda bilgilendirileceksiniz.","WARNING_STREAMING_SERVER":"Uyarı: yerel akış sunucusu bulunamadı. Yerel dosyalardan, YouTube ve BitTorrent\'den akış kullanılamayacaktır.","WARNING_STREAMING_SERVER_DISMISS":"Vazgeç","WARNING_STREAMING_SERVER_LATER":"Sonra","DECODER_WARNING":"Uyarı: bu görüntü, donanımınız tarafından desteklenmiyor olabilir. Oynatma yavaş olabilir, unutmayın.","PLAYER_ERROR":"Eyvah, Oynatıcı Hatası","PLAYER_ERROR_LOOKSLIKE":"Benzediği durum","PLAYER_ORIENTATION":"Oynatıcı yönü","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Kilitli","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensör","PLAYER_ORIENTATION_LANDSCAPE":"Oynatıcı yönü yatay olarak kilitli","PLAYER_ORIENTATION_SENSOR":"Oynatıcı yönü otomatik (sensör)","PLAYER_PLAYBACK_SPEED":"Oynatma Hızı","PLAYER_PLAYBACK_ERROR":"Oynatma hatası, lütfen tekrar deneyin","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Bilinmeyen hata","PLAYER_PLAYBACK_ERROR_DEFAULT":"Üzgünüz, bu görüntü {{productName}} tarafından oynatılamaz.","PLAYER_SUBTITLES_LANGUAGES":"Altyazı Dilleri","PLAYER_SUBTITLES_VARIANTS":"Altyazı Çeşitleri","PLAYER_SUBTITLES_SETTINGS":"Altyazı Ayarları","PLAYER_SUBTITLES_DISABLED":"Altyazılar etkisizleştirildi","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Dikey Konum","PLAYER_SUBTITLES_LOADED":"Altyazılar yüklendi","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Gömülü altyazılar yüklendi","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Özel altyazılar yüklendi","PLAYER_SUBTITLES_LOADED_ORIGIN":"Altyazılar, {{origin}} kaynağından yüklendi","PLAYER_PLAY":"Oynat","PLAYER_PAUSE":"Duraklat","PLAYER_NEXT_VIDEO":"Sonraki Görüntü","PLAYER_MUTE":"Sesi Kapat","PLAYER_UNMUTE":"Sesi Aç","PLAYER_OPEN_IN_EXTERNAL":"Harici oynatıcıda aç","PLAYER_PLAY_IN":"{{device}} içinde oynat","PLAYER_LIVE":"Canlı","PLAYER_NEXT_VIDEO_TITLE":"Sıradaki gelen","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Vazgeç","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Şimdi izle","PLAYER_COPY_STREAM_SUCCESS":"Akış bağlantısı panonuza kopyalandı","PLAYER_COPY_STREAM_ERROR":"Akış bağlantısını kopyalama başarısız","STREAMING_FROM":"yayının geldiği yer","CASTING_TO":"Yayınlandığı yer","NETWORK_STATUS":"Ağ durumu","STREAM_SPEED":"Yayın hızı:","STREAM_BUFFERED":"Arabelleğe alınan:","PEERS_INFO":"Kişi Bilgileri","PEERS_ACTIVE":"Etkin:","PEERS_CONNECTED":"Bağlandı:","PEERS_WAITING":"Bekleniyor:","TRANSCODING_WARNING":"Uyarı: görüntü kodu dönüştürülüyor.","STREAM_LOADING":"yükleniyor...","PLAYING_LOCAL":"yerel dosyadan oynatılıyor","PLAYING_CACHE":"önbellekten oynatılıyor","WRONG_SUBS":"Altyazı yanlış mı?","ERR_SUBS_LOADING_TITLE":"Altyazı yüklenirken hata oldu","ERR_SUBS_LOADING":"Altyazıları yükleme başarısız: bu kullandığınız eklenti ya da ağ bağlantınız ile ilgili bir sorun olabilir","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Aşağıdaki altyazı eklentileri başarısız oldu","ERR_CASTING_UPDATE_TITLE":"Yayınlama cihazı bilgisi güncellenemedi: akış sunucusu çevrimdışı olabilir","CHOOSE_DEVICE":"İzleyeceğiniz bir cihaz seçin","NO_CAST_DEVICES":"Kullanılabilir yayınlama cihazları yok.","NO_SETTINGS":"Kullanılabilir ayarlar yok.","PHONE_TABLET":"Telefon / Tablet","SUBTITLES":"Altyazılar","SUBTITLES_CHANGE":"Altyazıyı şunun için değiştir: ","SUBTITLES_CHANGE_NONE":"Bu dil için başka altyazı yok, üzgünüz.","SUBTITLES_CHANGE_ACIVE":"Şu anda #{{subtitlesDialog.activeIdx + 1}} altyazısı etkinleştirildi. #{{subtitlesDialog.pickedIdx + 1}} altyazısını etkinleştirmek için \\"Devam\\" düğmesine tıklayın.","SUBTITLES_OR":"Alternatif olarak,","SUBTITLES_ADJUST_DELAY":"Altyazı gecikmesini ayarlayın:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Veya oynatırken ayarlamak için G / H tuşlarını kullanın.","SUBTITLES_ADJUST_DELAY_TIP":"İPUCU: oynatırken ayarlamak için G / H tuşlarını kullanabilirsiniz.","SUBTITLES_DELAY":"Altyazı gecikmesi:","SUBTITLES_LOADING":"Altyazılar yükleniyor...","SUBTITLES_UNAVAILABLE":"Kullanılabilir harici altyazı yok","SUBTITLES_DISABLED":"Etkisizleştirildi","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Ses","DEFAULT_LANGUAGE":"Varsayılan Dil","DEFAULT_SECONDARY_LANGUAGE":"Varsayılan İkincil Dil","SEASON":"Sezon","EPISODE":"Bölüm","SPECIAL":"Özel","SORT":"sırala","SORT_BY":"Sıralama şekli","FILTER":"süz","SORT_TRENDING":"çok izlenen","SORT_RECENT":"en yeni","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"puan","SORT_WATCHED":"izlendi","SORT_YEAR":"yıl","SELECT_TYPE":"Tür seçin","SELECT_SORT":"Sıralamayı seçin","SELECT_CATALOG":"Katalog seçin","SELECT_GENRE":"Tarz seçin","SORT_LASTWATCHED":"Son izlenmeye göre","SORT_NAME":"Ada göre","SORT_TIMESWATCHED":"İzlenme sayısına göre","New for You":"Sizin için Yeni","New Episodes":"Yeni Bölümler","New Videos":"Yeni Görüntüler","Recommendations":"Önerilenler","LIBRARY_RESUME":"Devam","LIBRARY_PLAY":"Oynat","LIBRARY_DETAILS":"Ayrıntılar","LIBRARY_RESUME_DISMISS":"Vazgeç","LIBRARY_CLEAR_PROGRESS":"İlerlemeyi Temizle","LIBRARY_REMOVE":"Kaldır","LIBRARY_NOT_LOGGED_IN":"Kitaplık yalnızca oturum açmış kullanıcılar tarafından kullanılabilir","CALENDAR_NOT_LOGGED_IN":"Takvim yalnızca oturum açmış kullanıcılar tarafından kullanılabilir","NOT_LOGGED_IN_CLOUD":"En sevdiğiniz filmlere ve TV programlarına istediğiniz zaman, istediğiniz yerden erişin","NOT_LOGGED_IN_RECOMMENDATIONS":"Görüntüleme geçmişinize göre uyarlanmış öneriler","NOT_LOGGED_IN_NOTIFICATIONS":"Bir daha asla bir bölümü kaçırmayın","NOT_LOGGED_IN_CALENDAR":"Kişisel izleme takviminizi planlayın","DISCOVER_FEATURED":"Öne Çıkanlar","DISCOVER_TOP":"En İyiler","DISCOVER_OSCAR":"Oscar Kazananlar","DISCOVER_WARNING_TITLE":"Eyvah!","DISCOVER_EMPTY_CATALOG":"Bu eklenti boş içerik döndürdü.","DISCOVER_ADULT_WARNING":"Bu içerik yalnızca yetişkinler için görünürdür. 18 yaşından büyük müsünüz?","DISCOVER_NOADDON_WARNING":"Uyarı: bu türde etkin Stremio eklentisi yok. Kaydedilen öğeler gösteriliyor, burada hiç birşey güncellenmeyecek.","DISCOVER_LOAD_ERR":"İçerik yüklenmedi, hata meydana geldi.","DISCOVER_ADDON_UNINSTALLED":"Bu içerik artık mevcut değil, eklentiyi kaldırmış olabilirsiniz.","UNINSTALL_THIS_ADDON":"Bu eklentiyi kaldır","ERR_ADDON_NOT_INSTALLED":"Bu eklenti yüklü değil. Şimdi yüklensin mi?","DETAIL_RECEIVE_NOTIF_SERIES":"Yeni bölümler için bildirim alın","DETAIL_RECEIVE_NOTIF_VIDEOS":"Yeni görüntüler için bildirim alın","SIDEBAR_SHOW_STREAMS":"Akışları Göster","RELAUNCH":"Şimdi yeniden başlat!","UPGRADE":"Yeni sürüm mevcut! En son Stremio sürümüne yükseltin","RELOAD_UI":"Kullanıcı arayüzünü yeniden yükleyin","MANUAL_UPDATE_TITLE":"Stremio sürümünüzü güncelleyin","MANUAL_UPDATE_LINE1":"Son derece önerilmeyen eski bir Stremio sürümü kullanıyorsunuz.","MANUAL_UPDATE_LINE2":"Lütfen en kısa sürede güncelleyin.","BUTTON_UPDATE_LATTER":"Şimdi değil","BUTTON_UPDATE_NOW":"Güncelle","ANONYMOUS_USER":"İsimsiz kullanıcı","DONT_HAVE_ACC":"Bir hesabınız yok mu?","HAVE_ACC":"Zaten bir hesabınız var mı?","PASSWORD":"Parola","PASSWORD_CONFIRM":"Parolayı doğrula","EMAIL":"E-posta","FB_LOGIN":"Facebook ile devam et","FB_NOTHINGSHARED":"İzniniz olmadan hiçbir şey paylaşılmaz.","FB_NOPOST":"Sizin adınıza herhangi bir şey göndermeyeceğiz","OR":"ya da","I_ACCEPT":"Kabul ediyorum: ","I_ACCEPT_BY_CLICKING":"Yukarıdaki düğmeyi tıklayarak, kabul ettiğimi doğruladığım ","TOS":"Şartlar ve Koşullar","MUST_ACCEPT_TERMS":"Şartları kabul etmek zorundasınız","PASSWORDS_NOMATCH":"Parolalar eşleşmiyor","SIGN_UP":"Kaydol","SIGN_UP_EMAIL":"E-posta ile kaydol","CLICK_TO_SIGN_UP":"Kaydolmak için buraya tıklayın.","LOG_IN":"Oturum aç","LOG_OUT":"Oturumu kapat","EXIT_FULLSCREEN":"Tam ekran modundan çık","ENTER_FULLSCREEN":"Tam ekran moduna geç","PLAY_URL_MAGNET_LINK":"URL/Magnet bağlantısını oynat","HELP_FEEDBACK":"Yardım ve Geri Bildirim","TERMS_OF_SERVICE":"Kullanım Şartları","PRIVACY_POLICY":"Gizlilik İlkesi","ABOUT_STREMIO":"Stremio Hakkında","USER_PANEL":"Kullanıcı Paneli","LOGIN_LABEL":"Oturum aç","GUEST_LOGIN":"Misafir oturumu aç","GUEST_LOGIN_NOTICE":"Misafir Oturumu Açma önerilmez. Normal oturum açmayı kullanmak, Stremio\'nun kitaplığınızı eşitlemesini, en sevdiğiniz diziler/kanallar için bildirimler almasını sağlar. Devam etmek istediğinize emin misiniz?","GUEST_LOGIN_NOTICE_2":"Misafir Oturumu Açma önerilmez - önemli Stremio özellikleri olan Kitaplık ve Pano bildirimlerini eşitlemeyeceksiniz. Devam etmek istediğinize emin misiniz?","CLICK_HERE":"buraya tıklayın","WRONG_PASSWORD":"Yanlış e-posta veya parola. Parolanızı unuttuğunuz durumda, ","SET_A_PASS":"bir parola belirleyin","RESET_PASSWORD":"Parolayı sıfırla","FORGOT_PASSWORD":"Parolanızı mı unuttunuz?","EMAIL_USED_WITH_FB":"Bu e-posta bir Facebook oturumu açılması ile kullanılmış.","INVALID_EMAIL":"Lütfen geçerli bir e-posta adresi girin","INVALID_PASSWORD":"Lütfen geçerli bir parola girin","CONN_ERR":"Bağlantı hatası - lütfen daha sonra tekrar deneyin.\\n\\nEğer bu devam ederse, güvenlik duvarını/antivirüs yazılımını etkisizleştirin (özellikle Bitdefender\'ı).","IMPORT_FROM_GUEST":"Misafir hesabınızdan Kitaplığa aktarın","RECEIVE_UPDATES_EMAIL":"Stremio\'dan e-postanıza güncellemeleri alın","LOGIN_FAILED":"Oturumu açma başarısız oldu.","SIGNUP_FAILED":"Kaydolma başarısız oldu.","SEARCH_FAILED":"Arama başarısız oldu","EMAIL_USED":"Bu e-posta zaten kullanımda.","WAITING_FB_LOGIN":"Facebook ile oturum açılıyor...","EXTERNAL_PLAYER_TITLE":"Harici oynatıcıda oynat","EXTERNAL_REMEMBER_PLAYER":"Seçiminizi hatırlamak ister misiniz","EXTERNAL_ALWAYS_PLAY":"Evet","EXTERNAL_ONLY_ONCE":"Hayır","BEST_FIT":"En Uygun","FIT_SCREEN":"Ekrana Sığdır","FILL":"Doldur","16:9":"16:9","4:3":"4:3","Original":"Orijinal","INTRO_TASTE":"Bize nelerden hoşlandığınızı söyleyin","INTRO_TASTE_LONG":"Bize ne izlemek istediğinizi söyleyin","INTRO_TASTE_PICK":"{{interestsRemaining}} ilgi alanı seçin","INTRO_TASTE_PICK_MORE":"{{interestsRemaining}} ilgi alanı daha seçin","INTRO_TASTE_HELP_US":"Hakkınızda daha fazla bilgi edinmemize yardımcı olun.","INTRO_TASTE_CHOOSE_THESE":"Bunlardan bazılarını seçin:","INTRO_TASTE_CHOOSE_MIN":"En az 3 kategori seçin","INTRO_TASTE_CHOOSE_MIN_ERR":"En az 3 kategori seçmek zorundasınız!","INTRO_TASTE_LIFESTYLE":"Yaşam stili","INTRO_TASTE_SPORTS":"Spor","INTRO_TASTE_FOOD_HEALTH":"Yemek ve Sağlık","INTRO_TASTE_BEAUTY_FASHION":"Güzellik ve Moda","INTRO_TASTE_NEWS":"Haber","INTRO_TASTE_GAMING":"Oyun","INTRO_TASTE_SCIENCE_EDU":"Bilim ve Eğitim","INTRO_TASTE_MUSIC":"Müzik","INTRO_TASTE_TRAVEL":"Seyahat","INTRO_TASTE_LATE_NIGHT":"Gece Gösterisi","INTRO_TASTE_REALITY":"Gerçeklik","INTRO_TASTE_COMEDY":"Komedi","INTRO_TASTE_DIY":"Nasıl Kendin Yaparsın","INTRO_TASTE_TECH":"Teknoloji","INTRO_TASTE_CINEMA":"Sinema","ADDON_NOT_SUPPORTED":"Seçilen eklenti bu platformda desteklenmiyor.","ADDON_DISCLAIMER":"Üçüncü taraf eklentileri kullanmak her zaman sizin sorumluluğunuza ve bulunduğunuz yargı bölgesinin geçerli yasasına tabi olacaktır.","ADDON_ACTIVATE":"Bu eklenti etkinleştirilsin mi?","ADDON_REPO_ADD":"Eklenti koleksiyon URL\'si","ADDON_ADD":"Ekle","ADD_ADDON":"Eklenti ekle","ADD_ADDON_DESCRIPTION":"Yüklü eklentiler altında görünecek harici bir bağlantı aracılığıyla bir eklenti ekleyebilirsiniz.","PASTE_ADDON_URL":"Eklenti URL\'sini yapıştır","WHATS_NEW":"Yeni neler var","BUTTON_CONTINUE":"Devam","BUTTON_ACTIVATE":"Etkinleştir","BUTTON_ACTIVATED":"Etkinleştirildi","BUTTON_CANCEL":"İptal","BUTTON_SUBMIT":"Gönder","BUTTON_DISMISS_ALL":"Tümünden Vazgeç","BUTTON_VIEW_ALL":"tümünü görüntüle","BUTTON_SEE_ALL":"Tümünü Gör","BUTTON_COLOR_TRANSPARENT":"Şeffaf","OPEN_IN_BROWSER":"Tarayıcıda aç","LIB_EMPTY":"Kitaplığınız boş görünüyor. Ne kadar kullanışlı olduğunu öğrenin :) ","HOW_START":"İşte nasıl başlayabileceğiniz:","LIB_EMPTY_CAL":"Takviminiz, Kitaplığınızdaki dizileri gösterir.","HOW_START_CAL":"İşte nasıl dizi ekleyebileceğiniz:","LIB_EMPTY_BOARD":"Pano, Kitaplığınızla ilgili bildirimleri ve önerileri gösterir.","HOW_START_BOARD_WAIT":"Lütfen Kitaplığınıza birkaç dizi veya kanal ekleyin, işlememiz için bize birkaç dakika verin :)","HOW_START_BOARD":"İşte nasıl dizi ve filmleri ekleyebileceğiniz:","IMPORT_FB":"Facebook\'tan beğendiğiniz şeyleri içe aktarın","IMPORT_TRAKT":"Trakt\'tan ortam kitaplığınızı içe aktarın","IMPORT_DISCOVER":"Keşfet\'ten ilginç şeyler bulun","IMPORT_DISK":"Yerel diskinizde bulunan filmleri veya dizileri içe aktarın","PLEASE_CREATE_ACC":"Kitaplık eşitlemeyi ve Panoyu etkinleştirmek için lütfen bir hesap oluşturun.","IMPORT_DISCOVER_SIGNUP":"Kaydolun ve Keşfet\'ten ilginç şeyler bulun","IMPORT_DISK_SIGNUP":"Kaydolun ve yerel diskinizde bulunan filmleri veya dizileri içe aktarın","LIB_EMPTY_CLOUD":"Bulut kitaplığı","LIB_EMPTY_CLOUD_DESC":"Kişisel bulut kitaplığı tüm cihazlarla eşitlensin","LIB_EMPTY_EARLY":"Erkenci","LIB_EMPTY_EARLY_DESC":"Yeni bölümler için bildirim alın","LIB_EMPTY_PERSONAL":"Kişisel","LIB_EMPTY_PERSONAL_DESC":"Kişisel öneriler alın","LIB_EMPTY_CALENDAR_DESC":"Kişisel izleme takviminizi planlayın","LIB_EMPTY_ALL":"Tüm bunları almak için kaydolun:","LIB_EMPTY_BEST":"Stremio\'dan en iyi şekilde yararlanmak için kaydolun","LIB_EMPTY_OTHER":"Takvim ve diğer harika özellikleri etkinleştirmek için kaydolun","CALENDAR_ADDED":"Stremio takvimi, varsayılan masaüstü takviminize eklendi.","CALENDAR_ADDED_MSG":"Eğer bu işe yaramazsa, lütfen bu URL\'yi takvim uygulamanıza el ile ekleyin","TRAKT_EXPIRED":"Trakt kimlik doğrulamasının süresi doldu, lütfen Ayarlar\'a gidin ve yeniden kimlik doğrulaması yapın","TRAKT_REQUIRES_LOGIN":"Trakt hatası","TRAKT_REQUIRES_LOGIN_MSG":"Oturum açmanız gerekli","SETTINGS_LABEL":"Ayarlar","SETTINGS_NAV_GENERAL":"Genel","SETTINGS_NAV_PLAYER":"Oynatıcı","SETTINGS_NAV_STREAMING":"Yayın Akışı","SETTINGS_NAV_SHORTCUTS":"Kısayollar","SETTINGS_SHORTCUT_RELOAD_APP":"Uygulamayı Yeniden Yükle","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Ayarları Aç","SETTINGS_SHORTCUT_SWITCH_TABS":"Sekmeleri Değiştir","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Sekmeler Arasında İleri Yönde Dön","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Sekmeler Arasında Geri Yönde Dön","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Menüler Arasında Gezin","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Aramaya Git","SETTINGS_SHORTCUT_EXIT_BACK":"Çık / Geri Dön","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Oynatma Hızı Menüsünü Aç/Kapat","SETTINGS_SHORTCUT_MENU_VIDEOS":"Görüntü Menüsünü Aç/Kapat","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Altyazı Menüsünü Aç/Kapat","SETTINGS_SHORTCUT_MENU_INFO":"Bilgi Menüsünü Aç/Kapat","SETTINGS_SHORTCUT_FULLSCREEN":"Tam Ekranı Aç/Kapat","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Denetimleri Göster","SETTINGS_SHORTCUT_PLAY_PAUSE":"Oynat / Duraklat","SETTINGS_SHORTCUT_VOLUME_UP":"Sesi Artır","SETTINGS_SHORTCUT_VOLUME_DOWN":"Sesi Azalt","SETTINGS_SHORTCUT_SEEK_NEXT":"Sonrakine Atlat","SETTINGS_SHORTCUT_SEEK_PREV":"Öncekine Atlat","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Geriye Doğru Atlat","SETTINGS_SHORTCUT_SEEK_FORWARD":"İleriye Doğru Atlat","SETTINGS_SHORTCUT_PLAY_NEXT":"Sonrakini Oynat","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Altyazı Boyutunu Artır","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Altyazı Boyutunu Azalt","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Altyazı Gecikmesini Artır","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Altyazı Gecikmesini Azalt","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Kenar Çubuğunu Aç/Kapat","SETTINGS_SHORTCUT_OR":"veya","SETTINGS_SHORTCUT_TO":">","SETTINGS_SHORTCUT_SPACE":"Boşluk","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Kimlik Doğrula","SETTINGS_FACEBOOK_IMPORT":"İçe Aktar","SETTINGS_CALENDAR_SUBSCRIBE":"Abone Ol","SETTINGS_INTERFACE_LANGUAGE":"Arayüz Dili","SETTINGS_LAUNCH_STARTUP":"Başlangıçta çalıştır","SETTINGS_VLC_DEFAULT":"VLC ile oynat","SETTINGS_UI_LANGUAGE":"Kullanıcı Arayüzü Dili","SETTINGS_FULLSCREEN_EXIT":"Esc tuşuyla tam ekrandan çık","SETTINGS_GAMEPAD":"Gamepad desteğini etkinleştir","SETTINGS_CLOSE_WINDOW":"Pencere kapatıldığında uygulamayı kapat","SETTINGS_SUBTITLES_LANGUAGE":"Varsayılan altyazı dili","SETTINGS_SUBTITLES_SIZE":"Varsayılan altyazı boyutu","SETTINGS_SUBTITLES_BACKGROUND":"Altyazı arka planı","SETTINGS_SUBTITLES_COLOR":"Altyazı rengi","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Altyazı anahat rengi","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Altyazı arka plan rengi","SETTINGS_SEEK_KEY":"Ok tuşlarıyla zaman atlatma","SETTINGS_SEEK_KEY_SHIFT":"Shift tuşu basılı tutulduğunda Ok tuşlarıyla zaman atlatma","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Geri sarma ve İleri sarma süresi","SETTINGS_BINGE":"Sonraki bölümü otomatik oynat","SETTINGS_NEXT_VIDEO":"Sonraki bölümü başlatmak için bildirim göster","SETTINGS_NEXT_VIDEO_TRIGGER":"Bir sonraki bölüm bildirimini göster:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Sonraki görüntü açılır pencere süresi","SETTINGS_PLAY_IN_BACKGROUND":"Arka planda oynat","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Harici oynatıcıda oynat","SETTINGS_RESIZE":"Oynatmadan önce pencereyi otomatik yeniden boyutlandır","SETTINGS_OVERRIDE_SERVER":"Yayın akış sunucusu URL\'sini geçersiz kıl (gelişmiş)","SETTINGS_SERVER_URL":"Yayın akış sunucusu URL\'si: ","SETTINGS_SERVER_AVAILABLE":"Yayın akış sunucusu kullanılabilir.","SETTINGS_SERVER_UNAVAILABLE":"Yayın akış sunucusu kullanılabilir değil.","SETTINGS_SERVER_STATUS_ONLINE":"Çevrimiçi","SETTINGS_SERVER_STATUS_ERROR":"Hata","SETTINGS_SERVER_CONFIGURE_TITLE":"Yayın akış sunucusu URL\'sini yapılandırın","SETTINGS_SERVER_CONFIGURE_INPUT":"Bir yayın akış sunucusu URL\'si girin","SETTINGS_SERVER_CACHE_SIZE":"Önbellek boyutu","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profili","SETTINGS_HTTPS_ENDPOINT":"Yayın akışı HTTPS uç noktası: ","SETTINGS_USE_BETA":"Her zaman en son Beta\'yı kullan","SETTINGS_IMPORT_FB":"Facebook\'tan içe aktar","SETTINGS_IMPORT_DISK":"Yerel diskten içe aktar","SETTINGS_IMPORT_TRAKT":"Trakt\'tan içe aktar","SETTINGS_PAUSE_MINIMIZED":"Simge durumunda oynatmayı duraklat","SETTINGS_HWDEC":"Donanım hızlandırmalı kod çözme","SETTINGS_BACKGROUND":"Arka planda oynatma","SETTINGS_SUBSCRIBE_CALENDAR":"Takvime abone ol","SETTINGS_REQ_EXPORT":"Veriyi dışa aktarmayı iste","SETTINGS_ACC_DELETE":"Hesap silme iste","SETTINGS_CHANGE_PASSWORD":"Parolayı değiştir","SETTINGS_TOS":"Kullanım şartları","SETTINGS_SUPPORT":"Desteğe ulaşın","SETTING_LANGUAGE":"Dil","SETTINGS_TRAKT":"Trakt Skroblama","SETTINGS_TRAKT_LOGOUT":"Trakt.tv oturumunu kapat","SETTINGS_SCAN_FOR_REMOTE":"Uzaktan açmak için QR kodu tara","SETTINGS_DESKTOP_NOTIFICATIONS":"Masaüstü bildirimleri","SETTINGS_DATA_SAVER":"Veri tasarrufu","SETTINGS_LANGUAGE_INTERFACE":"arayüz","SETTINGS_LANGUAGE_SUBS":"varsayılan altyazılar","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Ses İzini Otomatik Seç","SETTINGS_DEFAULT_AUDIO_TRACK":"Varsayılan Ses İzi","SETTINGS_ACCOUNT":"hesap","SETTINGS_VERSION":"sürüm","SETTINGS_MPV_WINDOW":"Oynatıcıyı ayrı bir pencerede başlat (gelişmiş)","SETTINGS_PLAY_IN_EXTERNAL":"Görüntüyü her zaman harici oynatıcıda başlat","SETTINGS_STORAGE_BUTTON":"Yerel Depolamayı Temizle","SETTINGS_STORAGE_MODAL_TITLE":"Emin misiniz?","SETTINGS_STORAGE_MODAL_MESSAGE":"Bu, yerel depolamayı temizleyecek ve oturumunuzu kapatacak.","SETTINGS_HWDEC_PICKER":"Donanım hızlandırmalı kod çözme ayarını seçin","SETTINGS_HW_AUTOMATIC":"Otomatik","SETTINGS_HW_DISABLED":"Etkisizleştirildi","SETTINGS_HW_ACCELERATED":"Kod çözme hızlandırması","SETTINGS_HW_FULL":"Tam hızlandırma","SETTINGS_HW_LEGACY":"Eski","SETTINGS_SECTION_SUBTITLES":"Altyazılar","SETTINGS_SECTION_AUDIO":"Ses","SETTINGS_SECTION_CONTROLS":"Denetimler","SETTINGS_SECTION_AUTO_PLAY":"Otomatik Oynat","SETTINGS_SECTION_ADVANCED":"Gelişmiş","SUBSPICKER_AUDIO":"Ses","SUBSPICKER_SUBTITLES":"Eklenti Altyazıları","SUBSPICKER_BLACK_BACKGROUND":"Siyah arka plan rengi kullan","SUBSPICKER_VERTICAL_OFFSET":"Dikey Uzaklık","SUBSPICKER_SIZE":"Boyut","SUBSPICKER_DELAY":"Gecikme","SUBSPICKER_EMBEDDED_SUBS":"Gömülü Altyazılar","MOBILE_PRIVACY_POLICY":"Gizlilik İlkesi","MOBILE_CRASH_REPORTING":"Çökme Bildirimi","MOBILE_ZOOM_TO_FILL":"Ekranı Doldurmak için Yakınlaştır","MOBILE_PASSTHROUGH":"Dijital ses çıkışı (içinden geçiş)","MOBILE_RUN_LOW_BATTERY":"Düşük pilde çalıştır","MOBILE_RUN_FOREGROUND":"Ön Plan Hizmeti olarak çalıştır","MOBILE_PERFORMANCE":"PERFORMANS VE KARARLILIK","MOBILE_SERVER_ONLINE":"Çevrimiçi","MOBILE_SERVER_OFFLINE":"Çevrimdışı","MOBILE_QR_EXPIRES":"QR Kod süresi sona erme zamanı ","MOBILE_LOG_INTO":"Stremio hesabınıza oturum açın ","MOBILE_SCAN_QR":"Yukarıdaki QR kodu tarayın veya ","MOBILE_LINK_ACCOUNT":"Hesabı Bağla","MOBILE_SPEEDPICKER_CANCEL":"İptal","MOBILE_SPEEDPICKER_LABEL":"Oynatma Hızını Seçin","MOBILE_EMPTY_LIBRARY":"Kitaplığınız boş","MOBILE_NO_ADDON_ACTIVE":"Bu tür için etkin Stremio eklentisi yok.","MOBILE_ORGANIZER_WARNING":"Stremio Organizer uygulaması sınırlı işlevsellik sağlar. Oynatılabilir akışların listesi ve tam Stremio deneyimi için Stremio\'yu masaüstünde kullanın.","MOBILE_ADDON_LOADING":"hala yükleniyor","MOBILE_ADDONS_LOADING":"eklentiler hala yükleniyor","MOBILE_ADDON":"Eklenti","MOBILE_CONFIGURE_ADDON":"Eklentinizi yapılandırın","MOBILE_CONFIGURE_ADDON_LABEL":"Eklentiyi Yapılandır","MOBILE_ORGANIZER_ADDONS_WARNING":"Stremio Organizer uygulaması sınırlı eklenti seçimi sağlar. Tam Stremio deneyimi için Stremio\'yu masaüstünde kullanın.","MOBILE_DISCONNECT":"Bağlantıyı kes","MOBILE_LOOKING_FOR_DEVICES":"Cihazlar aranıyor...","MOBILE_CAST_TO":"Yayın yeri","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Hesabı Silin","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Yasal yükümlülüklerden dolayı hesap silme işlemi anında gerçekleşmez. Hesabınızın silinmesini talep ettikten sonra, gelecekte yeni bir Stremio hesabı oluşturmak için farklı bir e-posta adresi/facebook profili kullanmak zorunda kalacaksınız.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Hesap Silmeyi Onaylayın","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Hesabınız Facebook kullanılarak oluşturuldu. Hesabınızı silmek için lütfen www.stremio.com/login adresindeki kullanıcı portalımızı kullanın.","MOBILE_DELETE_ACCOUNT_MESSAGE":"Hesap silme işlemini onaylamak için lütfen parolanızı girin.","MOBILE_DELETE_ACCOUNT_BUTTON":"Hesabı Sil","NAVIGATION_ON":"Açık","NAVIGATION_OFF":"Kapalı","MARKETING_AGREE":"Stremio\'dan pazarlama haberleri almayı kabul ediyorum","QUIT":"Çıkış","CONNECTED":"Bağlandı","AUTHENTICATE":"Kimlik Doğrula","CACHING":"Önbellekleme","SETTINGS_CACHING_DRIVE":"Önbellekleme sürücüsü","ENABLE_LOCAL_FILES_ADDON":"Yerel dosyalar eklentisini etkinleştir (yeniden başlatma gerektirir)","LOCAL_ADDON_NOT_ENABLED":"Yerel eklenti etkinleştirilmemiş. Ayarlara gitmek ve etkinleştirmek için buraya tıklayın","ENABLE_REMOTE_HTTPS_CONN":"Uzak HTTPS bağlantılarını etkinleştir","TORRENT_PROFILE":"Torrent Profili","DATA_CACHING":"Veri Önbellekleme","MAGNET_PARSING":"Magnet bağlantısı ayrıştırılıyor","January":"Ocak","February":"Şubat","March":"Mart","April":"Nisan","May":"Mayıs","June":"Haziran","July":"Temmuz","August":"Ağustos","September":"Eylül","October":"Ekim","November":"Kasım","December":"Aralık","Monday":"Pazartesi","Tuesday":"Salı","Wednesday":"Çarşamba","Thursday":"Perşembe","Friday":"Cuma","Saturday":"Cumartesi","Sunday":"Pazar","Action":"Aksiyon","Comedy":"Komedi","War":"Savaş","Family":"Aile","Animation":"Animasyon","Adventure":"Macera","Fantasy":"Fantastik","Crime":"Suç","Mystery":"Gizem","Romance":"Romantik","Drama":"Dram","Horror":"Korku","Thriller":"Gerilim","Sci-Fi":"Bilim Kurgu","Music":"Müzik","Biography":"Biyografi","Documentary":"Belgesel","Sport":"Spor","Musical":"Müzikal","Western":"Batılı","Film-Noir":"Kara Film","News":"Haber","History":"Tarih","Game-Show":"Oyun-Gösteri","Reality-TV":"Gerçeklik-TV","Talk-Show":"Sohbet Programı","Film & Entertainment":"Film ve Eğlence","Gaming":"Kumar","From TV":"Televizyondan","Lifestyle":"Yaşam","Science & Education":"Bilim ve Eğitim","Cooking & Health":"Yemek Pişirme ve Sağlık","Beauty & Fashion":"Güzellik ve Moda","Sports":"Spor","News & Politics":"Haber ve Politika","How-to & DIY":"Nasıl Yapılır ve Kendin Yaparsın","Tech":"Teknoloji","Automotive":"Otomotiv","Causes & Non-Profits":"Nedenler ve Kâr Amacı Gütmeyenler","Movies":"Filmler","Uk Live Tv":"İngiliz Canlı TV","Fashion":"Moda","Business News Radio":"İş Haberleri Radyosu","Business Tv":"İş Televizyonu","Cars & Auto":"Otomobil ve Otomotiv","Comedy Radio":"Komedi Radyosu","Lifestyle Radio":"Yaşam Stili Radyosu","News Tv":"Haber TV","Food And Wine":"Yemek ve Şarap","Latino Tv":"Latin TV","Shopping Tv":"Alışveriş Televizyonu","Religion":"Din","Kids":"Çocuklar","Body & Soul":"Vücut ve Ruh","Education":"Eğitim","Indian Tv":"Hindistan TV","Extreme Sports":"Ekstrem Sporlar","Middle Eastern Tv":"Ortadoğu TV","Celebrity Tv":"Magazin TV","Science Tv":"Bilim TV","Bikini babe":"Bikini güzelleri","Outdoors":"Açık Hava","German Tv":"Alman TV","French Tv":"Fransız TV","Italian Tv":"İtalyan TV","Gamer Tv":"Oyuncu TV","Travel":"Gezi","Asian Tv":"Asya TV","Entertainment":"Eğlence","News Radio":"Haber Radyosu","Music Radio":"Müzik Radyosu","Language Learning":"Dil Öğrenme","Science Radio":"Bilim Radyosu","Tech Radio":"Teknoloji Radyosu","Science & Technology Vod":"Bilim ve Teknoloji Seç-İzle","new video":"yeni görüntü","new episode":"yeni bölüm","new movie":"yeni film","recommended":"önerilen","we recommend":"önerdiklerimiz","offer of the day":"günün teklifi","news":"haberler","music video":"klip","CTX_SHOW_HOTKEYS":"Kısayol tuşlarını göster","CTX_DISMISS_NOTIF":"Bildirimleri yoksay","CTX_DISMISS_ALL":"Tümünü yoksay","CTX_SHARE":"Paylaş","CTX_COPY_SHARE_LINK":"Paylaşma bağlantısını kopyala","CTX_COPY_MAGNET_LINK":"Magnet bağlantısını kopyala","CTX_COPY_STREAM_LINK":"Akış bağlantısını kopyala","CTX_DOWNLOAD_VIDEO":"Bu görüntüyü indir","CTX_DOWNLOAD_SUBS":"Altyazıları indir","CTX_VIEW_ON_YOUTUBE":"YouTube\'da görüntüle","CTX_SHOW":"Göster","CTX_PLAY":"Oynat","CTX_PLAY_IN":"Oynat","CTX_PLAY_ON":"Oynat","CTX_WATCH_ON":"İzle","CTX_WATCH":"İzle","CTX_WATCHED":"İzlendi","CTX_WATCH_BEGINNING":"Baştan izle","CTX_WATCH_MOBILE":"Mobil bir cihazda izle","CTX_REWIND":"En başa al","CTX_MARK_WATCHED":"İzlendi olarak işaretle","CTX_MARK_NON_WATCHED":"İzlenmedi olarak işaretle","CTX_MARK_UNWATCHED":"izlenmedi olarak işaretle","CTX_MARK_REST":"Geri kalanını izlendi olarak işaretle","CTX_UNMARK_REST":"Geri kalanını izlenmedi olarak işaretle","CTX_RECEIVE_NEW_NOTIF":"Yeni bildirimleri al","CTX_REMOVE_CACHE":"Önbellekten kaldır","CTX_REMOVE_CACHE_EP":"Bölümü önbellekten kaldır","CTX_OPEN_CONTAINING":"İçerdiği klasörü aç","CTX_REMOVE":"Kitaplıktan kaldır","CTX_AVAILABLE_OFFLINE":"Çevrimdışı Kullanılabilir","CTX_PAUSED":"Duraklatıldı","CTX_ALWAYS_ON_TOP":"Her zaman üstte","CTX_FULLSCREEN":"Tam ekran","CTX_WRONG_SUBS":"Altyazı yanlış mı?","CTX_REPORT_ISSUES":"Sorun bildir","CTX_COPY":"Kopyala","CTX_PASTE":"Yapıştır","CTX_CLEAR":"Temizle","CTX_CLEAR_RECENT_SEARCHES":"Son arananları temizle","HELLO_THERE":"Merhaba","HOPE_YOU_ENJOY":"Stremio\'dan keyif aldığınızı ve şimdiden en sevdiğiniz uygulamalardan biri olduğunu umuyoruz!","WHO_ARE_WE":"Biz kimiz? Biz bunun arkasındaki takımız - bu ürünü daha iyi ve daha iyi hale getirmek için son 3 yıldır her gün çok çalışan iki adamız.","SUPPORT_US":"Eğer Stremio\'yu kullanmaktan keyif alıyorsanız, Stremio sizin için değerliyse - duyurun!","SPREAD_THE_WORD":"Hemen arkadaşlarınızla paylaşın, Stremio\'yu herkese duyurun","MORE_PEOPLE":"Stremio\'yu ne kadar çok kişi kullanırsa, o kadar iyi olacaktır!","SEND_A_LINK":"Veya web sitemize bir bağlantı gönderin","TIP_LOCALFILES":"İpucu: yerel görüntü dosyalarınızı Stremio\'ya sürükleyip bırakabilirsiniz","ADDON_MY":"Eklentilerim","ADDON_COMMUNITY":"Topluluk Eklentileri","ADDON_OFFICIAL":"Resmi Eklentiler","ADDON_REPOS":"Eklenti koleksiyonları","ADDON_SEARCH":"Eklentileri ara","ADDON_INSTALL":"Yükle","ADDON_CONFIGURE":"Yapılandır","ADDON_UNINSTALL":"Kaldır","ADDON_UPGRADE":"Yükselt","ADDON_INSTALLED":"Yüklendi","ADDON_INSTALLED_MSG":"Eklenti yüklendi!","ADDON_UPGRADED_MSG":"Eklenti yükseltildi!","ADDON_UNKNOWN":"Bilinmiyor","ADDON_ERR":"Eklenti yükleme hatası!","ADDON_DISCONNECTED":"Bağlantı kesildi","ADDON_APP_MISSING":"bu kaynak için uygulama yüklü değil. Şimdi yüklemek istiyor musunuz?","ADDON_APP_INSTALL":"Şimdi Yükle","ADDON_PAGE":"Eklenti Sayfası","ADDON_TOP_CONTENT":"Bu Eklentiden en iyisi","ADDON_PROVIDES":"Bu eklentinin size vereceği:","ADDON_WATCH":"Şimdi #{types} izleyin!","ADDON_WATCH_FREE":"Şimdi ÜCRETSİZ #{types} izleyin!","ADDON_ADDON":"Eklenti","ADDON_SUPPORTED_TYPES":"Desteklenen türler","ADDON_SUPPORTED_CATALOGS":"Desteklenen kataloglar","ADDON_PROVIDES_DISCOVER":"Keşfet\'te daha fazla #{types}","ADDON_PROVIDES_STREAMS":"#{types} izleyin","ADDON_PROVIDES_STREAMS_FREE":"ÜCRETSİZ #{types} izleyin","ADDON_PROVIDES_SUBTITLES":"#{types} için altyazılar","ADDON_CANTDETECT":"Çalışan bir Stremio algılayamadık, bu yüzden hangi eklentileri yüklediğinizi tespit edemedik.","ERR_NO_META":"Hiçbir bilgi bulunamayan konu ","ERR_GETTING_META":"Bu konuda bilgi alınırken hata oldu.","ERR_CANT_PARSE_MAGNET":"Magnet ayrıştırılamıyor","ERR_NO_MAGNET_INFOHASH":"Magnet için geçerli bir adresleme bilgisi yok","ERR_NO_FILE_PATH":"Dosya yolu olmayan istek gönderilemiyor","ERR_NO_TORRENT":"Dönen torrent yok","ERR_NO_SUPPORTERD_FILES":"Desteklenen dosyalar bulunamadı","ERR_OPENING_FILES":"Harici dosyalar açılamadı","ERR_INVALID_LINK":"Geçersiz bağlantı","ERR_REGISTERED_ONLY":"Bu seçenek yalnızca kayıtlı kullanıcılar için mevcuttur.","ERR_CLIPBOARD":"Panodan oynatılamıyor","ERR_CLIPBOARD_READ":"Bu platformda pano okunamıyor","ERR_CLIPBOARD_GENERIC":"Panoda oynatılabilir URL bulunamadı. Lütfen bir görüntü için URL\'yi (örn. bir magnet bağlantısı) kopyalayın.","BOARD_CONTINUE_WATCHING":"İzlemeye devam edin","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmler sizin için özel olarak seçildi.
    Bu film örnek bir öneridir.","BOARD_EXPLANATION_EPISODES":"En sevdiğiniz Dizilerin yeni bölümleri buraya gelir.
    Takip ettiğiniz dizileri Kitaplığınıza ekleyin.","BOARD_EXPLANATION_VIDEOS":"En sevdiğiniz Kanalların yeni bölümleri buraya gelir.
    Takip ettiğiniz YouTube kanallarını Kitaplığınıza ekleyin.","WEBSITE_SLOGAN_WATCH":"Anında İzleyin","WEBSITE_SLOGAN_ALL":"Keyif Aldığınız Tüm Görüntü İçeriği Tek Bir Yerde","WEBSITE_SLOGAN_NEW":"Tüm İzleyebileceğiniz","WEBSITE_SLOGAN_NEW_NEW":"Akış Özgürlüğü","WEBSITE_WATCH_FROM":"İzleyeceğiniz yer","WEBSITE_DOWNLOAD":"Şimdi İndir","WEBSITE_DOWNLOAD_FOR":"Şimdi İndireceğiniz","WEBSITE_IS_DESKTOP":"Stremio bir masaüstü uygulamasıdır, bu sayfayı PC\'nizde açın ve indirin","WEBSITE_DESKTOP_DEMO_VID":"Masaüstü tanıtımı","WEBSITE_PAGE_HOME":"Giriş","WEBSITE_PAGE_FEATURES":"Özellikler","WEBSITE_PAGE_ADDONS":"Eklentiler","WEBSITE_PAGE_TECH":"Teknoloji","WEBSITE_PAGE_CREATE_ADDON":"Eklenti Oluşur","WEBSITE_PAGE_CONTACTS":"İletişim","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filmler","WEBSITE_TYPE_series_PL":"Diziler","WEBSITE_TYPE_tv":"Canlı TV","WEBSITE_TYPE_channel":"Kanallar","WEBSITE_STREMIO_WHAT_IS":"Stremio, en sevdiğiniz görüntüleri, filmleri, dizileri ve TV kanallarını düzenlemenize ve anında izlemenize yardımcı olan bir uygulamadır.","WEBSITE_FEATURES_WATCH":"HD olarak Anında İzleyin","WEBSITE_FEATURES_WATCH_DETAIL":"En sevdiğiniz filmlere, TV Programlarına, görüntülere ve TV kanallarına tıklayın ve oynatın.","WEBSITE_FEATURES_SUBS":"Otomatik Altyazılar","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio diliniz için eşitlenmiş altyazıları otomatik olarak seçer.","WEBSITE_FEATURES_SUBS_LABEL":"Sıra sende, şef.","WEBSITE_FEATURES_CAST":"TV ve mobil cihazlarda oynat","WEBSITE_FEATURES_CAST_DETAIL":"Apple TV, Chromecast, Akıllı TV (DLNA/UPnP) ve mobil cihazlarda yayınlayın.","WEBSITE_LIB":"Tüm Cihazlarınızda Eşitlenen Kişisel Kitaplığınızın Keyfini Çıkarın","WEBSITE_LIB_COLLECT":"Stremio\'dan toplayın","WEBSITE_LIB_IMPORT":"Facebook\'tan içe aktarın","WEBSITE_LIB_LOCAL":"Yerel sürücünüzden ekleyin","WEBSITE_BOARD":"Pano - Bildirimler ve Öneriler için tek durak yeri","WEBSITE_BOARD_RECOMMEND":"Önerilen TV Programı","WEBSITE_BOARD_TRENDING":"Çok İzlenen Film","WEBSITE_BOARD_NEW":"Yeni Görüntü","WEBSITE_BOARD_EPISODE":"Yeni Bölüm","WEBSITE_BOARD_1":"İzlemek için ilginç bir şeyler mi arıyorsun? Zevkinize göre öneriler al!","WEBSITE_BOARD_2":"En sevdiğin TV programında veya YouTube kanalında yeni bir bölüm çıktıkça haberdar ol!","WEBSITE_BOARD_YOUTUBE":"YouTube kanallarının yeni videoları","WEBSITE_BOARD_EPISODES":"Takip ettiğiniz dizilerin yeni bölümleri","WEBSITE_ADDONS":"İçerik Eklentileri","WEBSITE_TECH_DETAIL":"Teknolojiyi seviyoruz, deli bilimi seviyoruz!\\nStremio aşağıdaki açık kaynak teknolojilerini kullanıyor:","WEBSITE_TECH_WCJS":"WebChimera.js, Stremio\'nun iyi bir performans ile herhangi bir video formatını oynatmasına izin verir.","WEBSITE_TECH_WCJS_EXTRA":"Biz temel projeye katılımcılarıyız","WEBSITE_TECH_ELECTRON":"Electron, Stremio\'yu inşa etmek için yenilikçi bir platform sağlar.","WEBSITE_TECH_ELECTRON_EXTRA":"Proje katılımcılarıyız","WEBSITE_TECH_LINVODB":"Verilerinizi sağlayan bir veritabanı teknolojisi düzenlenmiştir ve oturum açtığınız her yerde kullanılabilir.","WEBSITE_TECH_LINVODB_EXTRA":"Şirket içi teknoloji","WEBSITE_CREATE_ADDON":"Kendi eklentinizi oluşturun","WEBSITE_CREATE_ADDON_DETAIL":"Video içeriği sunan bir hizmetin var mı? Sizin eklenti oluşturarak Stremio\'nun özelliklerinden yararlanmanıza yardımcı olacağız.","WEBSITE_CREATE_ADDON_BENEFITS":"Stremio Eklentisi Yaratmanın Faydaları","WEBSITE_P2P_BEAUTY":"Uçtan uca akışının güzelliği","WEBSITE_P2P_1":"İsteğe bağlı veya canlı akışla güvenilir ve satın alınabilir Full HD/4K video","WEBSITE_P2P_2":"Mükemmel bir kullanıcı deneyimi sağlayan dağıtım platformu","WEBSITE_P2P_3":"Tam ihtiyaçlarınızı karşılayan bir eklenti oluşturacağız","WEBSITE_P2P_CONTACT":"İlgilendin mi? Bize ulaşmanı bekliyoruz.","WEBSITE_P2P_CONTACT_EXTRA":"İçeriğinizi Stremio ile entegre etmenize yardımcı olmaktan mutluluk duyacağız!","WEBSITE_P2P":"Bir süre sonra, oyunun adını değiştiren bir teknoloji gelir. Herhangi bir kullanım durumuna uyum sağlamak için mükemmel performans ve çok yönlülük sağlayan P2P video akışı motoru kurmaya zaman ve çaba harcadık.\\nDRM özellikli P2P video, talep üzerine veya canlı akış için bize ulaşın.","WEBSITE_THOUGHTS":"Paylaştığımız düşünceler:","WEBSITE_SPREAD":"Stremio kelimesini herkese duyurun:","WEBSITE_CONTACT":"Eğer bizimle iletişime geçmek istiyorsanız, devam edin","WEBSITE_OPENSOURCE":"Açık kaynak projelerimiz için, bize git","WEBSITE_BITCOIN":"Bitcoin bağışla:","WEBSITE_FAQ":"Sıkça sorulan sorular","WEBSITE_FAQ_SHORT":"SSS","WEBSITE_QUESTIONS":"Sorular","WEBSITE_TOS":"Kullanım şartları","WEBSITE_LEGAL":"Yasal","WEBSITE_PAGE_ABOUT":"Hakkında","WEBSITE_PAGE_BECOME_PARTNER":"Ortak ol","WEBSITE_ALL_YOU_CAN_WATCH":"Tamamını İzleyebilirsin","WEBSITE_FREEDOM_TO_STREAM":"İzleme Özgürlüğü","WEBSITE_WHAT_IS_STREMIO":"Stremio nedir?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio, video içerik toplama için tek duraklı bir merkezdir. Sahip olduğunuz herhangi bir cihaz üzerinden her türlü kaynaktan video keşfedin, düzenleyin ve izleyin.","WEBSITE_WHAT_IS_STREMIO_P2":"Filmler, TV programları, diziler, canlı televizyonlar ya da YouTube ve Twitch.tv gibi web kanalları. Bunların hepsini Stremio\'da bulabilirsiniz.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio, video eğlence için tek noktadan çözüm sunan modern bir medya merkezidir. Kurulumu kolay eklentilerden video içeriğini keşfeder, izler ve düzenlersiniz.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Filmler, TV programları, canlı TV veya web kanalları. Tüm bunları Stremio\'da bulabilirsiniz.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Tüm Medya cihazlarınızda keyfini çıkarın","WEBSITE_DEVICES_COLLECT":"Stremio\'dan toplayın","WEBSITE_DEVICES_IMPORT_FB":"Facebook\'tan içe aktarın","WEBSITE_DEVICES_LOCAL":"Yerel sürücünüzden ekleyin","WEBSITE_JOIN_THE_PARTY_NOW":"Şimdi partiye katılın","WEBSITE_DEVICES_ALL":"Tüm cihazlarınızda kullanımı kolay;","WEBSITE_EXTENDABLE_CATALOG":"Sonsuz genişletilebilir video kataloğu;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Medyanızı düzenlemek için harika özellikler;","WEBSITE_AS_SEEN_ON":"Görüldüğü gibi","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Hakkımızda","WEBSITE_LINK_TECHNOLOGY":"Teknoloji","WEBSITE_LINK_APPS":"Uygulamalar","WEBSITE_LINK_DOWNLOADS":"İndirmeler","WEBSITE_MORE":"Daha fazlası","WEBSITE_LINK_ADDONS":"Eklentiler","WEBSITE_LINK_ADDON_SDK":"Eklenti SDK","WEBSITE_LINK_CONTRIBUTE":"Katkıda bulun","WEBSITE_LINK_COMMUNITY":"Topluluk","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... ve Daha fazlası","WEBSITE_LINK_HELP":"Yardım merkezi","WEBSITE_LINK_CONTACTS":"İş görüşmeleri","WEBSITE_LINK_TOS":"Şartlar ve koşullar","WEBSITE_LINK_PRAVACY":"Gizlilik ilkesi","WEBSITE_SUBSCRIBE":"Abone ol","WEBSITE_NEWSLETTER":"Şaşırtıcı şeyler için haber bültenimize kaydolun","WEBSITE_PLACEHOLDER_EMAIL":"E-posta adresin","WEBSITE_COMMUNITY":"Topluluk","WEBSITE_LINK_PRAVACY_LEGAL":"Gizlilik ve yasal","WEBSITE_WHY":"Neden yapıyoruz?","WEBSITE_WHY_P1":"Stremio\'da her gün çalışmaya başlıyoruz, çünkü talep üzerine video endüstrisi için önemli bir sorunu çözmek istiyoruz. Her dakika yayınlanan yeni birçok içerik var ve bununlar içinde yol bulmanız neredeyse imkânsız.","WEBSITE_WHY_P2":"İnsanlara bu muazzam video eğlence dünyasında gezinmelerine ve keyif alacakları yeni içerikler keşfetmelerine yardımcı oluyoruz. Uygulamalarımız filmleri, dizileri, canlı televizyonlarını, web kanallarını ve daha fazlasını bir araya getirir. Kullanıcıların sevdikleri başlıkları ve yayıncıları bulmalarını inanılmaz derecede kolaylaştırmayı amaçlıyoruz.","WEBSITE_WHY_P3":"Hizmetimizi herhangi bir cihazda, istediğiniz zaman kullanabilir ve Stremio\'yu ihtiyacınız olan tek video eğlence merkezi haline getirebilirsiniz.","WEBSITE_TEAM":"TAKIM","WEBSITE_TEAM_P":"Stremio ekibi küçük ama güçlü: arkadaki 10 kişi ile, X dilinde kod yazıyoruz ve yazılım geliştirme, UI ve UX tasarım, pazarlama ve reklamcılık dahil iş dünyası ve girişimler konularında uzmanlıklar paylaşıyoruz.","WEBSITE_FEATURES":"Özellikler","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Yeni içeriği kolayca keşfedin","WEBSITE_FEATURES_DISCOVER_P":"İzlenecek yeni filmleri, TV programlarını, dizileri ve kanalları kolayca keşfedin. Kategoriye, türe, derecelendirmeye, yeniliğe vb. göre göz atın veya bulmak için sadece bir isim yazın. Stremio yeni video içeriği bulmayı çok kolay hale getiriyor.","WEBSITE_FEATURES_ALL_CONTENT":"Tüm video içeriğiniz tek bir ekranda","WEBSITE_FEATURES_ALL_CONTENT_P1":"Hangi filmleri, dizileri veya videoları tamamlamadığınızı görün ve izlemeye devam edin. Yeni bölümler ve sürümler için bildirim alın. Görüntüleme alışkanlıklarınıza göre alacağınız önerilere göz atın.","WEBSITE_FEATURES_LIBRARY":"Video kitaplığınızı düzenleyin","WEBSITE_FEATURES_LIBRARY_P1":"Tek bir tıklama ile Stremio kitaplığınıza herhangi bir başlık ekleyin ve içeriklerinizi türe, yeniliğe ya da alfabetik olarak düzenlenmiş bir şekilde bulun.","WEBSITE_FEATURES_CALENDAR":"İzlediğiniz her şeyi takip edin","WEBSITE_FEATURES_CALENDAR_P1":"Kitaplığınıza eklediğiniz tüm filmlerin ve dizilerin takvim görselleştirmesini alın. Stremio takviminizi dışa aktarın ve senkronize edin. Böylece yeni bir bölümün veya bir ilk gösterimin ne zaman sona ereceğini bilirsiniz.","WEBSITE_FEATURES_BIG_SCREEN":"Video içeriğinizin keyfini daha büyük bir ekranda çıkarın","WEBSITE_FEATURES_BIG_SCREEN_P1":"İzlediğiniz her şeyi tek bir tıklama ile ister telefon, ister tablet, isterseniz TV\'den başka bir cihaza aktarın.","WEBSITE_FEATURES_SOURCES":"Birçok farklı kaynaktan video izleyin","WEBSITE_FEATURES_SOURCES_P":"Tek bir şık, kullanımı kolay uygulama ile birçok farklı sağlayıcıdan elde edilen videonun keyfini çıkarmak için resmi ve topluluk eklentilerini yükleyin.","WEBSITE_CREATE_AN_ADDON":"Bir eklenti oluşturun","WEBSITE_FEATURES_SYNC":"Kitaplığınızı farklı cihazlar arasında eşitleyin ve oynatmaya devam edin","WEBSITE_FEATURES_SYNC_P1":"Tüm cihazlarınıza hesabınızla giriş yapın ve kitaplığınızın, eklentilerinizin, oynatma ve takviminizin senkronize edilmesinin keyfini çıkarın.","WEBSITE_FEATURES_EXTENDABLE":"Eklentilerle genişletilebilir video kataloğu","WEBSITE_FEATURES_EXTENDABLE_P1":"Stremio eklenti kataloğu, çeşitli video içeriğini yüklemek ve izlemek için bir dizi eklenti sağlar. Bu eklenti kataloğu; filmler, şovlar, canlı TV, spor, haberler, podcast\'ler, web kanalları, video oyunları ve daha fazlasını içerir.","WEBSITE_FEATURES_AUTO_SUBS":"Otomatik altyazılar","WEBSITE_FEATURES_AUTO_SUBS_P1":"Altyazı eklentilerimizle, tercih ettiğiniz dil için otomatik olarak seçilen seçenekleri elde edersiniz.","WEBSITE_FEATURES_CHROMECAST":"Chromecast ile yayınlayın","WEBSITE_FEATURES_CHROMECAST_P1":"Video içeriğinizin keyfini daha büyük bir ekranda çıkarın veya izlediğiniz her şeyi başka bir cihaza yayınlayın.","WEBSITE_FEATURES_KEEP_TRACK":"En sevdiğiniz TV programlarını ve web kanallarını takip edin","WEBSITE_FEATURES_KEEP_TRACK_P1":"Favori dizilerinizin ve web kanallarınızın yeni bölümleri için bir takvim görselleştirmesi ve bildirimler alın.","WEBSITE_FEATURES_POWER_USER":"Güçlü kullanıcı özellikleri","WEBSITE_FEATURES_POWER_USER_P1":"Harici oynatıcıda oynatın","WEBSITE_FEATURES_POWER_USER_P2":"Torrent dosyasından veya magnet bağlantısından oynatın","WEBSITE_FEATURES_POWER_USER_P3":"Facebook beğenilerinden veya yerel diskten kitaplığınıza aktarın","WEBSITE_ADD_ONS":"Eklentiler","WEBSITE_ADD_ONS_P1":"Stremio\'nun sağladığı tüm video içeriği, bir eklenti sistemi aracılığıyla sağlanır - hiçbir içerik veya içerik sağlayıcısı uygulamaya yerleştirilmemiştir.","WEBSITE_ADD_ONS_P2":"İki eklenti grubu mevcut: resmi eklentiler ve topluluk eklentileri","WEBSITE_ADD_ONS_P3":"Resmi olanlar Stremio tarafından geliştirilir ve barındırılır. Buna karşın topluluk eklentileri, onları barındıran topluluk üyelerimiz tarafından oluşturulur.","WEBSITE_ADDONS_OFFICIAL":"Resmi eklentiler","WEBSITE_ADDONS_WATCHUB":"En sevdiğiniz filmleri, dizileri ve şovları iTunes, Hulu, Amazon ve diğer İngiltere/ABD hizmetleri gibi sağlayıcılardan izleyin.","WEBSITE_ADDONS_YOUTUBE":"En sevdiğiniz YouTube kanallarını reklamsız izleyin ve yeni yüklemeler için bildirimler alın.","WEBSITE_ADDONS_FILMON":"Canlı TV, film ve sosyal televizyonu ücretsiz izleyin. 600 TV kanalı, 45.000 ücretsiz film, belgesel ve daha fazlası.","WEBSITE_ADDONS_OPENSUBTITLES":"Film ve diziler için, birçok dilde her gün güncellenen binlerce altyazı çevirisi.","WEBSITE_ADDONS_COMMUNITY":"Topluluk eklentileri","WEBSITE_ADDONS_FILMON_VOD":"Filmon.tv\'den talep üzerine video izleyin.","WEBSITE_ADDONS_TWICH":"Twitch.tv\'den canlı akış izleyin - e-spor endüstrisi için bir video akış platformu.","WEBSITE_ADDONS_VODO":"Bağımsız filmleri kesinlikle ücretsiz izleyin.","WEBSITE_ADDONS_NETFLIX":"Netflix filmlerini ve web dizilerini izleyin.","WEBSITE_ADDONS_CREATE":"Eklenti oluşturun","WEBSITE_ADDONS_CREATE_P1":"İsterseniz kendi eklentinizi geliştirebilirsiniz. Bu şekilde, kendiniz ve topluluğumu içim yeni video içeriklerine erişim verebilir ve dünya çapında milyonlarca kullanıcıdan oluşan yeni bir hedef kitleye ulaşabilirsiniz.","WEBSITE_ADDONS_START_CREATE":"Başlarken, Stremio eklenti SDK sayfasını ziyaret edin:","WEBSITE_DOWNLOADS":"İndirmeler","WEBSITE_DOWNLOADS_P1":"En iyi performans için, Stremio uygulamalarının en güncel sürümünü kullanmanızı öneririz. Bununla birlikte, herhangi bir nedenle daha eski bir sürüm kullanmak istiyorsanız, buradan indirebilirsiniz.","WEBSITE_DOWNLOADS_FOR_WIN":"Windows için Stremio","WEBSITE_DOWNLOADS_FOR_MAC":"macOS için Stremio","WEBSITE_DOWNLOADS_FOR_LINUX":"Linux için Stremio","WEBSITE_DOWNLOADS_FOR_ANDROID":"Android için Stremio","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Android TV için Stremio","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Android Mobil için Stremio","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Steam Deck için Stremio","WEBSITE_DOWNLOADS_FOR_IOS":"iOS için Stremio (sınırlı sürüm)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Katkıda Bulunun","WEBSITE_CONTRIBUTE_P1":"Stremio platformu, açık kaynak kodludur ve şu anda kaynağı olmayan içerik için kolayca bir eklenti oluşturabilirsiniz.","WEBSITE_CONTRIBUTE_WHY":"Neden bir eklenti oluşturmalısınız?","WEBSITE_CONTRIBUTE_WHY_P1":"Video içeriğiniz için yeni kitleye ulaşın","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio\'nun kullanıcı tabanı hızla büyüyor. Lansmanının ilk yılında Stremio, dünyada 1 milyon kullanıcı kazandı ve platformun ikinci yılında bu sayı 2,5 milyona yükseldi.","WEBSITE_CONTRIBUTE_WHY_P3":"Eklentiniz ile bu kitleye kolayca ulaşabilir ve video içeriğinizi onlara dağıtabilirsiniz.","WEBSITE_CONTRIBUTE_ALL":"En sevdiğiniz filmleri, videoları, dizileri ve kanalları tek bir yerden izleyin","WEBSITE_CONTRIBUTE_ALL_P1":"Stremio\'da henüz bulunmayan belirli bir türdeki içeriğin hayranı mısınız? Bunun için bir eklenti oluşturun ve piyasadaki en büyük ve en kolay kullanımlı eğlence merkezlerinden birinde favori videolarınızı izlemenin keyfini çıkarın.","WEBSITE_CONTRIBUTE_ALL_P2":"Üstüne üstlük, sizinle benzer şekilde düşünen diğer Stremio topluluğu üyelerinin sonsuz şükranlarını alırsınız.","WEBSITE_CONTRIBUTE_MONETIZE":"Eklentinizi para kazanılabilir hale getirin ve onun yardımıyla para kazanın","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Stremio için yeni bir eklenti geliştirdikten sonra, birkaç farklı yolla kolaylıkla para kazanabilirsiniz. Bunu düşünüyorsanız, ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" adresinden bizimle iletişime geçmekten çekinmeyin. Eklentiden para kazanma seçenekleri konusunda danışmanlık sunmaktan ve size tavsiyelerde bulunmaktan memnuniyet duyarız.","WEBSITE_CONTRIBUTE_TRANSLATE":"Gönüllü çevirmen olun","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Farklı dillerde Stremio uygulamalarının keyfini çıkarmak istiyorsanız, gönüllü çevirmenler topluluğumuza katılabilirsiniz. Onlar, Stremio\'nun sürümlerini birçok farklı dilde eklememize yardımcı oluyorlar.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Başlamak için sabırsızlanıyor musunuz?","WEBSITE_TRANSALTE_STREMIO":"Stremio\'yu Çevirin","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Resmi topluluklar","WEBSITE_COMMUNITY_OFFICIALS_P1":"Büyüyen Stremio topluluğunun bir parçası olun. Bizi sosyal medyada takip edin ve \'Merhaba\' demekten çekinmeyin; hayranlarımızı dinlemeyi çok seviyoruz! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Resmi olmayan topluluklar","STREMIO_COMMUNITY_NL":"Stremio Hollanda","STREMIO_COMMUNITY_BRASIL":"Stremio Brezilya","STREMIO_COMMUNITY_GERMANY":"Stremio Almanya","STREMIO_COMMUNITY_BELGIUM":"Stremio Belçika","STREMIO_COMMUNITY_FRANCE":"Stremio Fransa","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portekiz","STREMIO_COMMUNITY_ITALY":"Stremio İtalya","STREMIO_COMMUNITY_UK":"Stremio İngiltere","STREMIO_COMMUNITY_USA":"Stremio ABD","STREMIO_COMMUNITY_MEXICO":"Stremio Meksika","STREMIO_COMMUNITY_ADDONS":"Stremio Eklentileri","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Ortaklar ve destekçiler","WEBSITE_COMMUNITY_GOODIES":"Stremio şekerlemeleri","WEBSITE_COMMUNITY_WALLPAPERS":"Duvar kağıtları","WEBSITE_COMMUNITY_ART":"Topluluk Sanat Galerisi","WEBSITE_LINK_ART":"Topluluk sanat galerisi","WEBSITE_CONTACT_US":"Bize ulaşın","WEBSITE_CONTACT_US_P1":"Herhangi bir sorunuz, yorum veya önerileriniz varsa, aşağıdaki iletişim formu aracılığıyla bizimle irtibata geçmekten çekinmeyin.","WEBSITE_CONTACT_US_P2":"Bulgaristan\'da bulunduğumuzu unutmayın; bu nedenle, saat dilimi farklılıklarına bağlı olarak yanıt için bir gecikme olabilir.","WEBSITE_CONTACT_US_SUCCESS":"Mesajınız gönderildi. Size en kısa sürede geri döneceğiz.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Lütfen geçerli bir e-posta adresi giriniz!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Sorunuzla ne ile alakalı?","WEBSITE_CONTACT_US_Q_OS":"İşletim sisteminiz nedir?","WEBSITE_CONTACT_US_PH_EMAIL":"E-posta adresiniz","WEBSITE_CONTACT_US_PH_MESSAGE":"İletiniz","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"GÖNDER","WEBSITE_CONTACT_US_Q_1":"Nasıl yüklenir?","WEBSITE_CONTACT_US_Q_2":"Nasıl kaldırılır?","WEBSITE_CONTACT_US_Q_3":"(HTML) Lazanya nasıl yapılır?","WEBSITE_CONTACT_US_Q_4":"Eklentiler","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Teknoloji","WEBSITE_TECHNOLOGY_P1":"Teknolojiyi ve çılgın bilimi seviyoruz.
    İşte Stremio\'ya güç veren şeyler (hepsi açık kaynaklı).","WEBSITE_TECHNOLOGY_P_QT":"Geliştirilen en iyi çapraz platformlu yazılım.","WEBSITE_TECHNOLOGY_P_MPV":"Ücretsiz, açık kaynaklı ve çapraz platformlu bir medya oynatıcı","WEBSITE_TECHNOLOGY_P_RN":"React Native, yalnızca JavaScript kullanarak mobil uygulamalar oluşturmanızı sağlar.","WEBSITE_TECHNOLOGY_P_VLC":"Multimedya almak için uygulamaya gömülü medya çerçevesi.","WEBSITE_TECHNOLOGY_P_REALM":"Realm bir mobil platform ve SQLite & Core Data\'nın yerini alıyor.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js açık kaynaklı, platformlar arası bir JavaScript çalışma zamanı ortamıdır.","WEBSITE_TECHNOLOGY_P_RUST":"Rust, özellikle güvenli eşzamanlılık olmak üzere güvenliğe odaklanan çok paradigmalı bir sistem programlama dilidir.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Projeye katkıda bulunun","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Stremio\'ya katkıda bulunmanın ve ürünün daha da iyi olmasına yardımcı olmanın iki yolu vardır.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Platformu tercüme ederek değerli dil becerilerini bağışlayabilirsiniz...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"ya da","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... topluluk eklentileri oluşturmak için kodlama becerilerinizi kullanabilirsiniz. ","WEBSITE_TRANSLATE_STREMIO":"Stremio\'yu Çevirin","WEBSITE_404_OH_NO":"Olamaz! Aradığınız sayfa burada değil...","WEBSITE_GO_HOME":"Girişe git","WEBSITE_LINK_OTHER_DOWNLOADS":"Diğer indirmeler","WEBSITE_FAQ_ABR":"SSS","WEBSITE_SUPPORT":"Destek","WEBSITE_DOWNLOAD_4_0_BETA":"Stremio 4 beta\'yı Hemen indirin","WEBSITE_GET_FOR_DESKTOP":"Masaüstü için alın","WEBSITE_LINK_ADDON_COMPETITION":"Eklenti yarışması","WEBSITE_LINK_ART_CONTEST":"Sanat yarışması","WEBSITE_MY_ACCOUNT":"Hesabım","WEBSITE_MAINPAGE_FAQ_001_H1":"Stremio nedir?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio, istediğiniz her şeyi izleme özgürlüğü sunan modern bir medya merkezidir.","WEBSITE_MAINPAGE_FAQ_002_H1":"Nasıl çalışır?","WEBSITE_MAINPAGE_FAQ_002_P1":"Stremio\'yu cihazınıza yükleyip bir hesap oluşturduktan sonra, yapmanız gereken tek şey eklenti kataloğunu ziyaret etmek ve istediğiniz eklentiyi yüklemektir!","WEBSITE_MAINPAGE_FAQ_002_P2":"Bundan sonra, içeriği keşfetmeye başlamak için Keşfet veya Pano bölümlerine gidebilirsiniz.","WEBSITE_MAINPAGE_FAQ_003_H1":"Burada ne izleyebilirim?","WEBSITE_MAINPAGE_FAQ_003_P1":"Çok şey var: Filmler, TV programları, Web kanalları, Spor, TV kanallarını izleyin ya da podcast\'leri ve daha fazlasını dinleyin. Eklenti sistemimiz sayesinde çeşitli içeriklere erişebilirsiniz.","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio açık kaynaklı mı?","WEBSITE_MAINPAGE_FAQ_004_P1":"Evet, şu bağlantıları kontrol edebilirsiniz: ${1}masaüstü uygulaması${2} ve ${3}GitHub kuruluşu${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio güvenli mi?","WEBSITE_MAINPAGE_FAQ_005_P1":"Evet, Stremio açık kaynak kodlu bir yazılım olduğundan, kod herkes tarafından denetlenebilir ve kendiniz de kodunu inceleyebilirsiniz.","WEBSITE_MAINPAGE_FAQ_006_H1":"Mahremiyetime ne dersin?","WEBSITE_MAINPAGE_FAQ_006_P1":"Kullanıcıların gizliliğine saygı duyuyoruz. Hesabınızı oluşturmak ve senkronize etmek için gerekli minimum temel veri dışında herhangi bir kişisel veri toplamıyoruz.","WEBSITE_MAINPAGE_FAQ_006_P2":"Ayrıca kayıt sırasında ${1}Misafir modu${2} vardır ve hiçbir veri gerektirmez: Bu modda, arka tarafa çağrı yapılmaz. Ancak, kitaplığınızı cihazlar arasında senkronize edebilmek gibi yararlı özelliklerin ödün vermeniz gerekir.","WEBSITE_MAINPAGE_FAQ_007_H1":"Televizyonuma yayınlayabilir miyim?","WEBSITE_MAINPAGE_FAQ_007_P1":"Evet, Chromecast\'i destekliyoruz ve hem masaüstü hem de mobil uygulamalardan (Android) yayınlayabilirsiniz.","WEBSITE_MAINPAGE_FAQ_008_H1":"Stremio\'nun kaç eklentisi var?","WEBSITE_MAINPAGE_FAQ_008_P1":"2019 sonu itibariyla, 50\'nin üzerinde. Daha fazla bilgi için eklenti kataloğumuza bakın.","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio eklenti kataloğundakinin ötesine genişletilebilir mi?","WEBSITE_MAINPAGE_FAQ_009_P1":"Evet, şunları kontrol etmelisiniz: ${1}PimpMyStremio${2}, ${3}Reddit toplulukları${4}, ${5}Stremio İndirici${6} vb.","WEBSITE_MAINPAGE_FAQ_010_H1":"Stremio hangi cihazları destekliyor?","WEBSITE_MAINPAGE_FAQ_010_P1":"Windows, Mac ve Linux için masaüstü uygulamalarımız mevcut. Mobil cihazlar için, Android ve iOS\'u destekliyoruz. Ancak iOS\'un işlevsellik açısından sınırlı olduğunu unutmayın (çoğu eklentiyi desteklemez).","WEBSITE_MAINPAGE_FAQ_010_P2":"NVIDIA Shield ve Amazon Fire Stick gibi Stremio\'yu çalıştırabileceğiniz birçok Android tabanlı cihaz var. Ancak bunları resmi olarak desteklemiyoruz.","WEBSITE_MAINPAGE_FAQ_011_H1":"Stremio\'ya bazı içerikler ekleyebilir misiniz?","WEBSITE_MAINPAGE_FAQ_011_P1":"Üzgünüz, kendimizi hiçbir içeriği sağlamıoruz. Ancak ne kadar çok Stremio eklentisi yüklerseniz, o kadar çok içerik bulabilirsiniz.","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio magnet bağlantılarını oynatabilir mi?","WEBSITE_MAINPAGE_FAQ_012_P1":"Evet. Ayrıca normal HTTP bağlantılarını ve torrent dosyalarını da oynatabilir (sürükleyin ve bırakın).","WEBSITE_MAINPAGE_FAQ_013_H1":"Bir video indirip çevrimdışı izleyebilir miyim?","WEBSITE_MAINPAGE_FAQ_013_P1":"Çevrimdışı kullanım gelecek bir özelliktir. Ancak Stremio\'nun cihazınızda önbelleklemesine izin verirseniz (ayarlar panelinden) videoyu daha sonra bağlantı olmadan izleyebilirsiniz.","WEBSITE_MAINPAGE_FAQ_014_H1":"Hiçbir şey çalışmıyor, yardım edin!","WEBSITE_MAINPAGE_FAQ_014_P1":"Eklentileri yüklediğinizden emin misiniz? Cevabınız evetse, ${1}yardım merkezimize${2} danışın.","WEBSITE_MAINPAGE_FAQ_015_H1":"Stremio geliştirme faaliyetlerini nasıl sürdürüyor?","WEBSITE_MAINPAGE_FAQ_015_P1":"Nadiren rahatsız edici olmayan reklamlar yayınlıyoruz, ancak bir bağış modeline geçmeyi düşünüyoruz.","WEBSITE_MAINPAGE_FAQ_015_P2":"Daha fazla soru için ${1}yardım merkezimize${2} gidin.","HELP_LEARN_MORE":"Hakkınızda daha fazla bilgi edinmemize yardımcı olun.","LIFESTYLE":"Yaşam stili","SPORTS":"Spor","FOOD_HEALTH":"Yemek ve Sağlık","BEAUTY_FASHION":"Güzellik ve Moda","NEWS":"Haber","GAMING":"Oyun","SCIENCE_EDUCATION":"Bilim ve Eğitim","MUSIC":"Müzik","TRAVEL":"Seyahat","LATE_NIGHT":"Gece Gösterisi","REALITY":"Gerçeklik","COMEDY":"Komedi","DIY":"Nasıl Kendin Yaparsın","TECH":"Teknoloji","CINEMA":"Sinema","CONTINUE":"Devam","SLOW_LOADING":"YAVAŞ MI YÜKLENİYOR?","I_GIVE_UP":"VAZGEÇTİM","LEARN_MORE":"Daha fazla bilgi edinin","POOR_SOURCE":"Bu kaynak yetersiz veya internet bağlantınız yeterince hızlı değil","PICK_CATEGORIES_ERR":"En az 3 kategori seçmek zorundasınız","ADJUST_TIMING":"Ayarlanacak zaman ","ADJUST_SIZE":"Ayarlanacak boyut ","SEARCH_ANYTHING":"Her Şeyi Arayabilirsiniz...","ALL_CATEGORIES":"Tümü","SEARCH_CATEGORIES":"Filmler, Diziler, YouTube ve TV","SEARCH_PERSONS":"Aktörler, Yönetmenler ve Yazarlar","SEARCH_PROTOCOLS":"HTTP ve Magnet Bağlantıları","SEARCH_TYPES":"IMDB / TVDB Bağlantıları","WATCHED":"İzlendi","SHOW_LESS":"Daha az göster","LAST_SEARCHES":"Son aramalar","CLEAR_HISTORY":"Geçmişi temizle","CHOOSE_SOME":"BUNLARDAN BAZILARINI SEÇİN:","NO_WEB_REMOTE":"Web Uzaktan Kontrolü yüklenemedi","STREMIO_OFFLINE":"Stremio çevrimdışı","STREMIO_EXPENSIVE_CONNECTION":"Mobil veri bağlantısı kullandığınızı algıladık, devam etmek istiyor musunuz?","USE_DATA":"Veriyi kullan","WARNING":"Uyarı","MORE_INFO":"Daha Fazla Bilgi ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Yükleniyor ...","STREMIO_TV_BACK_TO_LANGUAGES":"Dillere geri dön","STREMIO_TV_REMOTE":"Uzaktan Kontrol","STREMIO_TV_GO_TO":"Git:","STREMIO_TV_OR_SCAN":"ve tara:","STREMIO_TV_ADDON_INSTRUCTIONS":"Tercih ettiğiniz eklentileri yüklemek için lütfen talimatları takip edin.","STREMIO_TV_LIVE_TV":"Canlı TV","STREMIO_TV_RESUME_WATCHING":"İzlemeye Devam Et","STREMIO_TV_LOADING_BACKGROUND":"Arka planda yükleniyor","STREMIO_TV_CHECKING_AUTHENTICATION":"Kimlik doğrulama denetleniyor","STREMIO_TV_LOADING_BOARD":"Pano yükleniyor","STREMIO_TV_LOGIN_HEADER_LINE_1":"Kullanıcılarımızın yazılımımızla mümkün olan en iyi kişiselleştirilmiş deneyime sahip olmalarını istiyoruz.","STREMIO_TV_LOGIN_HEADER_LINE_2":"Bu nedenle, hesabınızı oluşturmanızı ve/veya hesabınıza oturum açmanızı rica ederiz.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Anlayışınız için teşekkür ederiz,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Stremio Ekibi","STREMIO_TV_REMOTE_INSTRUCTIONS":"Web Uzaktan Konrolünü Akıllı Telefon / Tablet / Masaüstünüzle kullanmak için:","STREMIO_TV_WIFI_SETUP":"Kablosuz Kurulumu","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle bir internet bağlantısı algılayamadı.","STREMIO_TV_WIFI_DETAILS_1":"Şuna bağlan:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Parola kullan:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Bağlantıyı bir web tarayıcısı ile aç:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Varsayılan","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Son İzlenene Göre","STREMIO_TV_LIBRARY_SORT_NAME":"Ada Göre","STREMIO_TV_LIBRARY_TIMES_WATCHED":"İzlenme Sayısına Göre","STREMIO_TV_DETAILS_SEASON_NUMBER":"Sezon ${1}","STREMIO_TV_STREAMS_LOADING":"${1} / ${2} eklenti yüklendi...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} eklentisi hala yükleniyor...","STREMIO_TV_PLAYER_SETTINGS":"Oynatıcı ayarları","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Altyazı gecikmesi","STREMIO_TV_PLAYER_AUDIO_DELAY":"Ses gecikmesi","STREMIO_TV_PLAYER_VIDEO_SCALING":"Görüntü ölçeği","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Desteklenmeyen akış kaynağı","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Harici bağlantıyı açma başarısız","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"ExoPlayer ile oynat","STREMIO_TV_PLAYER_PLAY_IN_VLC":"libVLC player ile oynat","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Oynatma hatasından dolayı libVLC player\'a geçiliyor","STREMIO_TV_ADDONS_TITLE":"Eklentileri yüklemek veya yapılandırmak için Telefonunuzda veya PC\'nizde Stremio\'yu kullanın ve \\"Eklentileri Eşitle\\"ye basın","STREMIO_TV_ADDONS_SUBTITLE":"Not: Aynı Stremio hesabını kullandığınızdan emin olun.","STREMIO_TV_ADDONS_SYNC_ADDONS":"Eklentileri Eşitle","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Eklentiler başarılı olarak eşitlendi","STREMIO_TV_ADDONS_SYNC_FAILED":"Eklentileri eşitleme başarısız oldu","STREMIO_TV_META_LINK_FAILED":"Üst bağlantıyı açma başarısız oldu","STREMIO_TV_CATALOG_LOADING":"Katalog hala yükleniyor...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Arayüz dili güncellendi","STREMIO_TV_SETTINGS_THEME_UPDATED":"Tema güncellendi","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Varsayılan Oynatıcı","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"Harici Oynatıcı","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Tercih Edilen Dil","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"İkincil Tercih Edilen Dil","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tünelli Oynatma","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Bazı cihazlarda olası oynatma sorunları","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Bazı görüntü biçimleri çalışmayabilir","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Önbellekleme yok","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Varsayılan","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Yavaş","STREMIO_TV_SETTINGS_PROFILE_FAST":"Hızlı","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Çok Hızlı","STREMIO_TV_SETTINGS_SERVER_URL":"Yayın akışı sunucusu URL\'si","STREMIO_TV_SETTINGS_SERVER_VERSION":"Sunucu sürümü","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Bilinmiyor","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio sürümü","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Sunucu URL\'sini düzenle","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Bir yayın akışı sunucusu URL\'si girin","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Stremio\'nun Gizlilik İlkesini okumak için şu adresi ziyaret edin:","STREMIO_TV_SETTINGS_TOS_TEXT":"Stremio\'nun Şartlar ve Koşullarını okumak için şu adresi ziyaret edin:","STREMIO_TV_NAV_SEARCH":"Ara","STREMIO_TV_NAV_HOME":"Giriş","STREMIO_TV_NAV_DISCOVER":"Keşfet","STREMIO_TV_NAV_LIBRARY":"Kitaplık","STREMIO_TV_NAV_MOVIES":"Filmler","STREMIO_TV_NAV_SERIES":"Diziler","STREMIO_TV_NAV_CHANNELS":"Kanallar","STREMIO_TV_NAV_TV":"Canlı TV","STREMIO_TV_NAV_SETTINGS":"Ayarlar","STREMIO_TV_NAV_ADDONS":"Eklentiler","STREMIO_TV_LOGIN_TITLE":"Hesabı Bağla","STREMIO_TV_LOGIN_EXPIRES_IN":"Sona erme tarihi","STREMIO_TV_LOGIN_STEP_ONE":"Yukarıdaki QR Kodu tarayın veya","STREMIO_TV_LOGIN_STEP_TWO":"Stremio hesabınıza oturum açın","STREMIO_TV_LOGIN_NEW_LINK":"Yeni bir bağlantı isteyin","STREMIO_TV_LOGIN_LINK_REFRESHED":"Oturum açma kodu yenilendi","STREMIO_TV_SEARCH_PLACEHOLDER":"Bir şeyler yazın","STREMIO_TV_SEARCH_NO_ADDONS":"Kataloglar için herhangi bir eklenti istenmedi!","STREMIO_TV_SEARCH_BUTTON":"Ara","STREMIO_TV_SEARCH_KEY_DEL":"Sil","STREMIO_TV_SEARCH_KEY_SPACE":"Boşluk","STREMIO_TV_SEARCH_KEY_CLEAR":"Temizle","STREMIO_TV_SEARCH_HISTORY_TITLE":"Geçmişi Temizle","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Başlıklar, Aktörler, Kanallar ve daha fazlasını arayabilirsiniz...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Arama Geçmişini Temizle","STREMIO_TV_FILTERS_DESCRIPTION":"Aşağıdaki süzgeçlerden birini seçin","FILTERS":"Süzgeçler","SETTINGS":"Ayarlar","ACCOUNT":"Hesap","LOGOUT":"Oturumu Kapat","THEMES":"Temalar","PLAYBACK":"Oynatma","PLAYBACK_SPEED":"Oynatma Hızı","AUDIO_TRACKS":"Ses İzleri","VIDEOS":"Görüntüler","SERVER":"Sunucu","LINKS":"Bağlantılar","ABOUT":"Hakkında","INTERFACE":"Arayüz","ANIMATIONS":"Animasyonlar","STATUS":"Durum","LANGUAGE":"Dil","SIZE":"Boyut","DELAY":"Gecikme","BOLD":"Kalın","TEXT_COLOR":"Metin Rengi","OUTLINE_COLOR":"Anahat Rengi","BACKGROUND_COLOR":"Arka Plan Rengi","BACKGROUND_BLUR":"Arka Plan Bulanıklığı","SEEK_TIME_DURATION":"Atlama Süresi","AUTO_PLAY":"Sonraki Bölümü Otomatik Oynat","PLAY_NOW":"Şimdi Oynat","MARK_AS_WATCHED":"İzlendi olarak İşaretle","MARK_AS_UNWATCHED":"İzlenmedi olarak İşaretle","REWIND_TO_BEGINNING":"En Başa Al","CONTINUE_WATCHING":"İzlemeye Devam Et","ALL":"Tümü","SECONDS":"saniye","ON":"AÇIK","OFF":"KAPALI","RELOAD":"Yeniden Yükle","EDIT_URL":"URL\'yi Düzenle","NONE":"Hiçbiri","EMBEDDED":"Gömülü","REMOTE_SWITCH_DEVICES":"Cihazları Değiştir","REMOTE_VIDEOS":"Görüntüler","REMOTE_ADJUST_TIMING":"Zamanlamayı ayarla","REMOTE_ADJUST_SIZE":"Boyutu ayarla","REMOTE_COULD_NOT_BE_LOADED":"Web Uzaktan Kontrolü yüklenemedi","REMOTE_RETRY":"Yeniden Dene","TORRENT_PROFILE_DEFAULT":"Varsayılan","TORRENT_PROFILE_SOFT":"Yavaş","TORRENT_PROFILE_FAST":"Hızlı","TORRENT_PROFILE_ULTRA_FAST":"Çok Hızlı","FAQ_001_H1":"Stremio nedir?","FAQ_001_P1":"Stremio, video eğlencesi için kullanım kolaylığı düşüncesiyle tasarlanmış bir medya merkezi yazılımıdır. Stremio organize etmenize izin verir & kendi film, dizi, kanal ve canlı TV koleksiyonunuzu izleyin.","FAQ_001_P2":"Stremio, size gösterilen içeriği yerel diskinizden ve eklentiler sisteminden toplar.","FAQ_001_P3":"İlgilerinize göre yeni bölümler/videolar/filmler çıktığında da sizi uyarır ve size özel film önerileri sunar.","FAQ_02_H1":"Stremio\'nun Kodi ve Plex\'ten ne farkı var?","FAQ_02_P1":"Bu iki yazılımdan ilham aldık. Ancak farklı hedeflerimiz var - Stremio özellikle eğlence videolarını hedef alıyor ve kullanımının çok kolay olması nedeniyle ana çözüm olma yolunu arıyor.","FAQ_02_P2":"Stremio, Kodi ve Plex kadar özelleştirilebilir ve zengin özellikli olmayacak, ancak kullanımı çok daha kolay. Sadece ${1} al ve ${2} gör :)","FAQ_03_H1":"Stremio\'nun Netflix\'ten farkı nedir?","FAQ_03_P1":"Yine, Netflix ilham kaynağımızdan biridir. Netflix\'in kullanıcı deneyimine ek olarak bir çok eklenti elde etmeye çalışıyoruz. Ama en önemlisi, kendi kütüphanenizi yönetme ve eklenti sistemimizle yeni içerik kaynaklarını ekleme özgürlüğünü sunuyoruz.","FAQ_03_P2":"Stremio\'yu sınırsız olarak genişletebilirsiniz. Bu nedenle Stremio\'yu kullandığınızda, Netflix\'in lisansını alabildiği içerikle asla sınırlı kalmazsınız. Örneğin, Stremio aracılığıyla ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} ve hatta ${9}Netflix${10}\'in kendisinden içerik izleyebilirsiniz!","FAQ_04_H1":"Stremio\'nun Flipboard\'dan farkı nedir?","FAQ_04_P1":"Bu soruyu sıkça görmüyoruz, yeni başlayanlarla konuşurken hariç :)","FAQ_04_P2":"Stremio, tasarım gereği videonun Flipboard olmasını sağlayan bir içerik toplayıcısıdır. Bu, Pano bölümünde çok açık bir şekilde görülmektedir; Flipboard gibi takip ettikleriniz için size kataloglar ve yeni bölüm/yeni video bildirimleri sunar.","FAQ_05_H1":"Stremio\'nun Popcorn Time\'dan farkı nedir?","FAQ_05_P1":"Stremio ve Popcorn Time, kullanıcı arabirimi olarak benzer, çünkü video eğlence kataloglarını doğru yapmanın başka bir yolu yok :)","FAQ_05_P2":"Ancak, Popcorn Time, belirli kaynaklardaki torrentleri akış yapmaya odaklanırken, Stremio sınırsızdır ve yalnızca bir içerik toplayıcısıdır - belirli bir içerik kaynağına kilitlenmez.","FAQ_05_P3":"Ayrıca, varsayılan olarak herhangi bir torrent eklentisi sağlamıyoruz. Bu nedenle Stremio, resmi işlevselliği olan Popcorn Time kullanım durumunu kapsamamaktadır.","FAQ_05_P4":"Bir diğer önemli fark ise, Popcorn Zamanı tamamen açık kaynaklı, Stremio ise ${1} kısmen açık kaynaklıdır${2}.","FAQ_06_H1":"Bu filmi/diziyi ekler misiniz?","FAQ_06_P1":"Hayır, üzgünüz :(","FAQ_06_P2":"Diğer sorularda birçok kez belirtildiği gibi, Stremio kendisi tarafından herhangi bir içerik sağlamaz; her şey eklentiler sistemi aracılığıyla eklenir. Bir içerik isteğiniz var ise Oynatıcı içindeki “Sorun bildir” düğmesini kullanabilirsiniz: Bu kullanmakta olduğunuz eklentinin oluşturucusuna bir e-posta gönderecektir.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"X için eklenti oluşturur musunuz?","FAQ_08_P1":"Bu tamamen mümkündür.","FAQ_08_P2":"Bir eklenti ile ilgili bir fikriniz varsa, bize ${1}office@stremio.com${2} adresinden birkaç satır yazın, ancak lütfen eklenti fikrinizin herhangi bir telif hakkı veya kullanım şartlarını ihlal etmediğinden emin olun.","FAQ_08_P3":"Şu anda, yol haritamızda bulunan sonraki şeyler; FandangoNOW, Filmon.tv, talep üzerine video, Crunchyroll için eklenti.","FAQ_09_H1":"Stremio, BitTorrent kullanıyor mu?","FAQ_09_P1":"Evet, Stremio bir akış protokolü olarak BitTorrent\'i destekliyor. Bunu bir torrent eklentisiyle veya bir .torrent dosyasını Stremio\'ya sürükleyip bırakarak ya da Arama Çubuğuna bir magnet bağlantısı yapıştırarak kullanabilirsiniz.","FAQ_09_P2":"BitTorrent\'i kullanan tek resmi eklentinin, indie içerik sağlayan ve tamamının BitTorrent ile dağıtılmasına izin veren ${1}Vodo${2} olduğunu lütfen unutmayın.","FAQ_09_P3":"Telif hakkı ihlaline neden olabilecek üçüncü taraf eklentilerinin kullanılmasını desteklemiyoruz.","FAQ_10_H1":"Stremio\'da resmi eklentilerle neleri izleyebilirim?","FAQ_10_P1":"Varsayılan olarak, Filmon.tv, YouTube ve Vodo içeriğini gömülü oynatıcı ile Stremio\'nun içinde izleyebilirsiniz. Ayrıca, Twitch.tv ve diğerleri için bir eklentimiz var.","FAQ_10_P2":"Bu birleştirilmiş bir seçim sağlar:","FAQ_10_L1":"Popüler TV kanalları, Filmon.tv tarafından sağlanmıştır - örneğin E4, BBC, Bollyworld TV","FAQ_10_L2":"YouTube\'dan her şey - örneğin BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Vodo ile Indie filmleri","FAQ_10_L4":"Twitch.tv ile çevrimiçi oyun yayınları","FAQ_10_P3":"Buna ek olarak, Guidebox ve Netflix eklentileri ile sağlanan, tamamen, Stremio\'da oynatılmayan, ancak verilen hizmete yönlendiren birçok içerik kaynağı vardır. Örneğin, Guidebox eklentisi, TubiTV ve Crackle gibi hizmetlerden ABD\'de ücretsiz olarak yayın yapabileceğiniz bir film seçimi yapacaktır.","FAQ_11_H1":"Stremio yüklenmiyor, ne yapabilirim?","FAQ_11_P1":"Windows kullanıyorsanız,bu ${1}alternatif yükleyiciyi${2} deneyin","FAQ_11_P2":"Mac OS X kullanıyorsanız, lütfen OS X Mavericks(10.9)\'den daha eski hiçbir şeyi desteklemediğimizi unutmayın.","FAQ_11_P3":"Linux kullanıyorsanız, şu anda yalnızca 64 bit (x64) Linux\'u desteklediğimizin farkında olun.","FAQ_11_P4":"Sorununuzu yine de çözemezseniz, lütfen ${1}Facebook grubumuza${2} yazın.","FAQ_12_H1":"Antivirüs programım neden uyarı veriyor? Stremio güvenli mi?","FAQ_12_P1":"Stremio\'nun ${1}100% temiz${2} olduğundan emin olun.","FAQ_12_P2":"Virüsten koruma yazılımınız şikayetçi. Çünkü bazı antivirüs programlarının reklam yazılımı olarak tanıdığı reklamcıyı yükleyicimize dahil ediyoruz.","FAQ_12_P3":"Hala emin değilseniz, bizim ${1}alternatif yükleyicimizi${2} deneyebilirsiniz.","FAQ_13_H1":"Nasıl eklenti oluşturabilirim?","FAQ_13_P1":"Yeni başlayanlar için, GitHub\'daki ${1}eklentiler sistemi modülüne${2} göz atmanızı öneririz.","FAQ_13_P2":"Ardından, ${1}Merhaba dünya dersini${2} takip edebilirsiniz.","FAQ_13_P3":"Herhangi bir programlama becerisine sahip değilseniz, lütfen fikrinizi bize ${1}Reddit topluluğundan${2} ya da ${3}office@stremio.com${4} adresinden bildirebilirsiniz.","FAQ_14_H1":"Eklentiler nasıl yayınlanır?","FAQ_14_P1":"Bir eklenti ve sunucu oluştururken ve bildiriminize çalışan bir eklenti adresini işaret eden bir bitiş noktası alanı koyduğunuzda, eklenti kendisini ${1}Eklenti kataloğumuzda${2} otomatik olarak yayınlayacaktır.","FAQ_14_P2":"Bu durum, stremio-addons modülünün sunucu parçası, eklentiyi duyurmak için API\'yı otomatik olarak çağırır. API\'mız, bitiş noktası değerini geçerli bir eklenti olarak doğruladığında, katalogda gösterilmeye başlayacaktır.","FAQ_15_H1":"Tarayıcımda Stremio\'yu çalıştırabilir miyim?","FAQ_15_P1":"Şu an değil, ama bu geliyor!","FAQ_15_P2":"Bir Alfa görmekten hoşlanıyorsanız, burada görebilirsiniz: ${1}alpha4.strem.io${2}. Bu alfa üzerinde akışın devre dışı olduğunu unutmayın. Chrome, Firefox, Opera ve Edge\'i destekliyoruz.","FAQ_16_H1":"TV\'ye yayın yapma çalışmıyor/altyazı çalışmıyor","FAQ_16_P1":"TV\'ye yayın yapmak, farklı TV markaları ve modelleri arasında tutarsız olan DLNA teknolojisini kullanıyor. Bu nedenle, her durumda test etme yeteneğine sahip değiliz, bu yüzden mükemmel olmaktan çok uzak. Buna rağmen, sürekli olarak geliştirmeye çalışıyoruz ancak DLNA\'nın TV\'nizle ne zaman düzgün bir şekilde çalışmaya başlayacağına dair size bir zaman tahmini veremiyoruz.","FAQ_16_P2":"Yayın yapma menüsünde TV\'nizi göremiyorsanız, lütfen yönlendiricinizi, TV\'yi ve PC\'nizi yeniden başlatmanın yanı sıra ağ bağlantınızı devre dışı bırakmayı ve yeniden etkinleştirmeyi deneyin (Windows\'ta, Ağ\'a sağ tıklayın ve Etkinleştir/Devre Dışı Bırak\'ı kullanın).","FAQ_16_P3":"Hala bir sorunla karşılaşıyorsanız, TV markanızı ve model bilgilerinizi ${1}office@stremio.com${2} adresine göndererek bize yardımcı olabilirsiniz.","FAQ_16_P4":"Bu arada, çok iyi desteklediğimiz Chromecast\'i öneriyoruz ya da TV\'nizi bir HDMI kablosu ile bilgisayarınıza takmanız yeterlidir.","FAQ_17_H1":"Stremio donuyor ya da çöküyor, ne yapabilirim?","FAQ_17_P1":"Her şeyden önce, Windows 7\'yi AVG anti-virüs ile kullanıyorsanız: bu kombinasyonda bir sorunumuz var. Sorun AVG\'nin kendi içindedir ve bizim tarafımızdan çözülmesinin makul bir yolu yoktur. Ne yazık ki, istisnalar veya anti-virüs devre dışı bırakmak işe yaramaz. Tek çözüm, AVG\'yi başka bir şeyle değiştirmektir.","FAQ_17_P2":"Sorun bu değilse de, ancak hala Windows kullanıyorsanız, lütfen en son hizmet paketine güncelleyin ve GPU sürücülerinizi güncelleyin/yeniden yükleyin, sonra tekrar deneyin.","FAQ_17_P3":"Sorun hala devam ediyorsa veya Mac veya Linux kullanıyorsanız, lütfen sorunun ayrıntılarını bize ${1}Facebook grubumuzdan${2} yazabilirsiniz.","FAQ_18_H1":"Bir eklentiyi nasıl yapabilirim?","FAQ_18_P1":"Yeni başlayanlar için, GitHub\'daki ${1}eklentiler sistemi modülüne${2} göz atmanızı öneririz.","FAQ_18_P2":"Ardından, ${1}Merhaba dünya dersini${2} takip edebilirsiniz.","FAQ_18_P3":"Herhangi bir programlama becerisine sahip değilseniz, lütfen fikrinizi bize ${1}Reddit topluluğundan${2} ya da ${3}office@stremio.com${4} adresinden bildirebilirsiniz.","FAQ_19_H1":"Stremio neden disk alanı kaplıyor?","FAQ_19_P1":"Stremio\'da aktarılan video dosyalarını geçici olarak saklamak için yerel önbellek vardır.","FAQ_19_P2":"Bu iki avantaja sahiptir: Birincisi, Stremio\'nun akışını daha pürüzsüzleştirmek için videoyu ön yüklemeye olanak tanır. İkincisi, videoları yerel önbellekte tutar, böylece onları çevrimdışı izlemeye devam edebilirsiniz.","FAQ_19_P3":"Stremio\'nun ne kadar yer tuttuğu Ayarlar panelindeki Önbellek ayarına bağlıdır. Şu anda akışlı video bundan daha büyük olmadığı sürece, Stremio diskinizde belirlenen miktara (ör. 2GB) kadar tutabilir, bu durumda onu korumak için yeterli miktarda saklama alanı ayırmanız gerekir.","FAQ_20_H1":"Önbellek klasörü nerede?","FAQ_20_P1":"Windows\'ta, Ayarlar\'da seçtiğiniz sürücüdeki stremio-cache (ör. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"MacOS\'ta, burada \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"Linux\'ta, burada \\"~/.stremio/stremio-cache\\" ya da \\"~/stremio-cache\\"","FAQ_21_H1":"\\"Akış sunucusu bulunamadı\\" hatası alıyorum, ne yapabilirim?","FAQ_21_P1":"Bu hatayı alırsanız, bu birkaç şeyden biri anlamına gelir:","FAQ_21_P2":"1) ${1}Web sürümümüz${2} aracılığıyla YouTube / BitTorrent kaynağı tarafından desteklenen bir eklenti kullanmaya çalışıyorsunuz. Bu durumda, ${3}web sitemizden${4} masaüstü sürümümüzü yüklemelisiniz.","FAQ_21_P3":"2) Stremio kurulumunuzda bir sorun var. Bu durumda, ${1}web sitesinden${2} en yeni masaüstü sürümünü yeniden yüklemeyi deneyin. Bu işe yaramazsa, anti-virüs programları ve güvenlik duvarları devre dışı bırakarak PC\'nizi yeniden başlatın ve tekrar deneyin. Bu da işe yaramazsa, lütfen ${3}Facebook grubumuzdan${4} bize yazın.","FAQ_22_H1":"iOS\'ta çoğu eklentiyi göremiyorum/kullanamıyorum","FAQ_22_P1":"Çünkü, Apple\'ın App Store şartlar ve koşullarındaki kısıtlamalar nedeniyle iOS uygulamasını yalnızca belirli bir eklenti grubuyla sınırladık.","FAQ_22_P2":"Ancak gelecekte iOS için daha fazla eklenti olacak ve ayrıca iOS uygulamasını Stremio akış sunucusuna bağlayarak tüm Stremio eklentilerini kullanmanızı sağlayacak bir entegrasyon da ekleyebiliriz."}')},8714:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"电影","TYPE_series":"剧集","TYPE_tv":"电视频道","TYPE_channel":"频道","TYPE_other":"其他","TYPE_movie_PL":"电影","TYPE_series_PL":"剧集","TYPE_tv_PL":"电视频道","TYPE_channel_PL":"频道","TYPE_other_PL":"其他","TYPE_ALL":"All","VIDEO":"视频","BACK":"返回","MORE":"更多","DONE":"完成","COPY":"复制","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"发现","Board":"首页","Library":"库","My Library":"我的库","Calendar":"日历","NOTIFICATION_ONLINE":"您当前处于在线状态","NOTIFICATION_OFFLINE":"您当前处于离线状态","INTERNET_CONNECTION":"网络连接","STORAGE_FULL_TITLE":"警告:储存空间已满!","STORAGE_FULL_TEXT":"Stremio将无法保存您的设置、首选项或登录信息,考虑重新启动或重新安装Stremio。","SEARCH":"搜索","SEARCH_NO_RESULTS":"未找到结果","SEARCH_EXPLANATION_CONTENT":"搜索电影、剧集、YouTube和电视频道","SEARCH_EXPLANATION_PEOPLE":"搜索演员、导演和编剧","SEARCH_PASTE_LINKS":"粘贴HTTP和Magnet链接","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"添加到库中","REMOVE_FROM_LIB":"从库中删除","ADDED_TO_LIB":"添加到库中","REMOVED_FROM_LIB":"从库中删除","TRAILER":"预告片","WATCH_TRAILER":"观看预告片","WATCH_NOW":"立即观看","SHOW":"查看","SHOW_MOVIE":"查看电影","WATCH_RANDOM":"随机观看","IMDB_RATING":"IMDb评分","YEAR":"年份","DIRECTOR":"导演","WRITER":"编剧","LEAD_ACTORS":"主演","CAST":"全部演员","CREW":"全部工作人员","SHOW_MORE_CAST":"显示更多 »","AIRED":"播出时间","SEASONS":"季","GENRE":"类型","CATALOG":"目录","SUMMARY":"简介","SHOW_MORE":"显示更多","SIMILAR":"相似","UPCOMING":"即将上映","ENDED":"已完结","DURATION":"时长","FEATURED":"功能","METADATA":"元数据","CATEGORY":"类别","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"搜索视频","SEARCH_PLACEHOLDER":"搜索或粘贴URL","ADDON":"插件","ADDONS":"插件","OFFICIAL":"官方","ADDONS_OFFICIAL":"官方Stremio插件","ADDONS_POPULAR":"在您所在的地区很受欢迎","ADDON_FREE":"免费","ADDON_PEERED":"连接","ADDON_SUBSCRIPTION":"订阅","ADDON_STREAM_GEORESTRICTED":"在您所在的地区不提供","ADDON_STREAM_OFFLINECACHE":"离线缓存","ADDON_STREAM_LOCALFILE":"本地文件","SHARE_ADDON":"分享插件","AVAILABLE_STREAMS":"可用流媒体","NO_STREAM":"未找到流媒体","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"要获取更多流媒体,请安装更多插件","STREAM_NOT_SUPPORTED":"此平台不支持所选流媒体。","ADDON_CATALOGUE":"显示所有插件 »","ADDON_CATALOGUE_MORE":"安装插件","REPO_ADDED":"已添加存储库","ADDON_REPO_EXIST_ERR":"此插件集合已存在","ADDON_REPO_ERR":"添加集合时出错","ADDON_ADD_ERR":"添加插件时出错","ERR_ADDON_PROTECTED":"无法卸载插件,它受到保护","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"出了一些问题——身份验证可能失败","ERR_NOT_COLLECTION_URL":"不是集合URL","ERR_NOT_ADDON_URL":"不是有效的插件URL","ERR_DETECTFROMURL":"再此URL中找不到插件/集合","ADDON_DUPLICATE_WARNING":"警告:重复的插件","ADDON_COLLECTION_SET_FAILED":"将已安装的插件同步到您的账户失败","SETTINGS_DATA_EXPORT":"导出用户数据","ADDON_PULL_FAILED":"从您的帐户同步已安装的插件失败","REFRESH_ON_CLICK":"点击重试","STILL_IN_THEATER":"电影还在影院上映","WATCH_IN_CINEMA":"请到您本地的影院观看","IN_THEATER":"在影院上映","GET_TICKETS":"购票","UPCOMING_EPISODE":"下一集","UPCOMING_EPISODE_MESSAGE":"这一集即将播出","MISSING_DATE_EPISODE":"缺失的一集日期","MISSING_DATE_EPISODE_MESSAGE":"这一集可能还没有播出","CHANNEL_NOT_SCRAPED":"这个频道还没有被削刮,请过几分钟再来。","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"将其添加到库中,以便在可用时收到通知。","GET_NOTIFIED_WHEN_AVAILABLE":"一旦可用,您将会收到通知。","WARNING_STREAMING_SERVER":"警告:找不到本地流媒体服务器,来自本地文件、YouTube、和BitTorrent的流媒体将不可用。","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"警告:您的硬件可能不支持此视频,请记住,播放可能会很慢。","PLAYER_ERROR":"糟糕,播放器错误","PLAYER_ERROR_LOOKSLIKE":"看起来似乎","PLAYER_ORIENTATION":"播放器方向","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"锁定","PLAYER_ORIENTATION_SENSOR_SHORT":"传感器","PLAYER_ORIENTATION_LANDSCAPE":"播放器方向锁定横向","PLAYER_ORIENTATION_SENSOR":"播放器方向自动(传感器)","PLAYER_PLAYBACK_SPEED":"播放速度","PLAYER_PLAYBACK_ERROR":"播放错误,请重试","PLAYER_PLAYBACK_ERROR_UNKNOWN":"未知错误","PLAYER_PLAYBACK_ERROR_DEFAULT":"抱歉,{{productName}}无法播放此视频。","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"直播","PLAYER_NEXT_VIDEO_TITLE":"下个视频","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"关闭","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"现在观看","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"流媒体","CASTING_TO":"投屏到","NETWORK_STATUS":"网络状态","STREAM_SPEED":"串流速度:","STREAM_BUFFERED":"已缓冲:","PEERS_INFO":"节点信息","PEERS_ACTIVE":"活跃:","PEERS_CONNECTED":"已连接:","PEERS_WAITING":"等待:","TRANSCODING_WARNING":"警告:转码视频。","STREAM_LOADING":"加载...","PLAYING_LOCAL":"从本地文件播放","PLAYING_CACHE":"从缓存播放","WRONG_SUBS":"字幕错误?","ERR_SUBS_LOADING_TITLE":"加载字幕时出错","ERR_SUBS_LOADING":"字幕加载失败:这可能是您正在使用的插件或网络连接的问题","WARN_FOLLOWING_SUB_ADDONS_FAILED":"以下字幕插件失败","ERR_CASTING_UPDATE_TITLE":"无法更新投屏设备信息:流媒体服务器可能离线","CHOOSE_DEVICE":"选择在哪个设备上播放","NO_CAST_DEVICES":"无可用投屏设备。","NO_SETTINGS":"无可用设置。","PHONE_TABLET":"手机/平板电脑","SUBTITLES":"字幕","SUBTITLES_CHANGE":"调整字幕","SUBTITLES_CHANGE_NONE":"抱歉,这种语言没有其他字幕。","SUBTITLES_CHANGE_ACIVE":"当前字幕#{{subtitlesDialog.activeIdx + 1}}被激活,点击\\"继续\\"激活字幕#{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"或者,","SUBTITLES_ADJUST_DELAY":"调整字幕延迟:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"或在播放时使用G / H键进行调整。","SUBTITLES_ADJUST_DELAY_TIP":"提示:您可以在播放时使用G / H键进行调整。","SUBTITLES_DELAY":"字幕延迟:","SUBTITLES_LOADING":"加载字幕...","SUBTITLES_UNAVAILABLE":"没有可用的外部字幕","SUBTITLES_DISABLED":"关闭","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"季","EPISODE":"集","SPECIAL":"Special","SORT":"排序","SORT_BY":"排序按照","FILTER":"筛选","SORT_TRENDING":"热门","SORT_RECENT":"最近","SORT_ALPHABET":"首字母","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"评分","SORT_WATCHED":"已观看","SORT_YEAR":"年份","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"新的","New Episodes":"新剧集","New Videos":"新视频","Recommendations":"推荐","LIBRARY_RESUME":"简介","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"详情","LIBRARY_RESUME_DISMISS":"清除","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"功能","DISCOVER_TOP":"热门","DISCOVER_OSCAR":"奥斯卡获奖作品","DISCOVER_WARNING_TITLE":"糟糕!","DISCOVER_EMPTY_CATALOG":"此插件返回空内容。","DISCOVER_ADULT_WARNING":"此内容仅对成人可见,您是否已满18周岁?","DISCOVER_NOADDON_WARNING":"警告:此类型没有可用的Stremio插件,显示已保存的项目,此处不会更新任何内容。","DISCOVER_LOAD_ERR":"内容未加载,发生错误。","DISCOVER_ADDON_UNINSTALLED":"此内容不再可用,您可能已卸载插件。","UNINSTALL_THIS_ADDON":"卸载此插件","ERR_ADDON_NOT_INSTALLED":"未安装此插件,立即安装?","DETAIL_RECEIVE_NOTIF_SERIES":"接受新剧集的通知","DETAIL_RECEIVE_NOTIF_VIDEOS":"接受新视频的通知","SIDEBAR_SHOW_STREAMS":"显示流媒体","RELAUNCH":"立即重新启动!","UPGRADE":"新版本可用!升级至Stremio的最新版本","RELOAD_UI":"重新加载用户界面","MANUAL_UPDATE_TITLE":"更新您的Stremio版本","MANUAL_UPDATE_LINE1":"您运行的是一个过时的Stremio版本,这是非常不推荐的。","MANUAL_UPDATE_LINE2":"请尽快更新。","BUTTON_UPDATE_LATTER":"不是现在","BUTTON_UPDATE_NOW":"更新","ANONYMOUS_USER":"匿名用户","DONT_HAVE_ACC":"还没有账户?","HAVE_ACC":"已经有账户了?","PASSWORD":"密码","PASSWORD_CONFIRM":"确认密码","EMAIL":"电子邮箱","FB_LOGIN":"使用Facebook登录","FB_NOTHINGSHARED":"未经您的允许,任何内容都不会被共享","FB_NOPOST":"我们不会替您发送任何东西","OR":"或","I_ACCEPT":"我接受","I_ACCEPT_BY_CLICKING":"通过点击上面的按钮,我声明我接受","TOS":"条款和条件","MUST_ACCEPT_TERMS":"您必须接受条款","PASSWORDS_NOMATCH":"密码不匹配","SIGN_UP":"注册","SIGN_UP_EMAIL":"使用电子邮箱注册","CLICK_TO_SIGN_UP":"点击此处注册。","LOG_IN":"登录","LOG_OUT":"注销","EXIT_FULLSCREEN":"退出全屏模式","ENTER_FULLSCREEN":"进入全屏模式","PLAY_URL_MAGNET_LINK":"播放URL/Magnet链接","HELP_FEEDBACK":"帮助和反馈","TERMS_OF_SERVICE":"服务条款","PRIVACY_POLICY":"隐私政策","ABOUT_STREMIO":"关于Stremio","USER_PANEL":"用户面板","LOGIN_LABEL":"Login","GUEST_LOGIN":"访客登录","GUEST_LOGIN_NOTICE":"不建议访客登录,使用常规登录允许Stremio同步您的库,接受喜爱的剧集/频道的通知。您确定要继续吗?","GUEST_LOGIN_NOTICE_2":"不建议访客登录,您将没有同步的库和首页通知,这是Stremio的重要功能。您确定要继续吗?","CLICK_HERE":"点击此处","WRONG_PASSWORD":"错误的电子邮箱或密码,如果您忘了密码,","SET_A_PASS":"设置密码","RESET_PASSWORD":"重置密码","FORGOT_PASSWORD":"忘记密码?","EMAIL_USED_WITH_FB":"此电子邮箱与Facebook登陆一起使用。","INVALID_EMAIL":"请输入有效的电子邮箱地址","INVALID_PASSWORD":"请输入有效的密码","CONN_ERR":"连接错误,请稍后再试。\\n\\n如果问题仍然存在,请禁用防火墙/杀毒软件(特别是Bitdefender)。","IMPORT_FROM_GUEST":"从访客账户导入库","RECEIVE_UPDATES_EMAIL":"从Stremio接受电子邮件更新","LOGIN_FAILED":"登陆失败。","SIGNUP_FAILED":"注册失败。","SEARCH_FAILED":"搜索失败","EMAIL_USED":"此电子邮箱已被使用。","WAITING_FB_LOGIN":"使用Facebook登录...","EXTERNAL_PLAYER_TITLE":"在外部播放器中播放","EXTERNAL_REMEMBER_PLAYER":"您想记住您的选择吗","EXTERNAL_ALWAYS_PLAY":"是","EXTERNAL_ONLY_ONCE":"不是","BEST_FIT":"最佳","FIT_SCREEN":"适合屏幕","FILL":"填充","16:9":"16:9","4:3":"4:3","Original":"原始","INTRO_TASTE":"告诉我们您喜欢什么","INTRO_TASTE_LONG":"告诉我们您想看什么","INTRO_TASTE_PICK":"选择{{interestsRemaining}}兴趣","INTRO_TASTE_PICK_MORE":"选择{{interestsRemaining}}更多兴趣","INTRO_TASTE_HELP_US":"帮助我们了解更多有关您的信息。","INTRO_TASTE_CHOOSE_THESE":"选择其中一些:","INTRO_TASTE_CHOOSE_MIN":"至少选3个类别","INTRO_TASTE_CHOOSE_MIN_ERR":"您必须至少选择3个类别!","INTRO_TASTE_LIFESTYLE":"生活方式","INTRO_TASTE_SPORTS":"体育","INTRO_TASTE_FOOD_HEALTH":"饮食与健康","INTRO_TASTE_BEAUTY_FASHION":"美丽与时尚","INTRO_TASTE_NEWS":"新闻","INTRO_TASTE_GAMING":"游戏","INTRO_TASTE_SCIENCE_EDU":"科学与教育","INTRO_TASTE_MUSIC":"音乐","INTRO_TASTE_TRAVEL":"旅行","INTRO_TASTE_LATE_NIGHT":"深夜秀","INTRO_TASTE_REALITY":"真人","INTRO_TASTE_COMEDY":"喜剧","INTRO_TASTE_DIY":"DIY","INTRO_TASTE_TECH":"技术","INTRO_TASTE_CINEMA":"影院","ADDON_NOT_SUPPORTED":"此平台不支持选定的插件。","ADDON_DISCLAIMER":"使用第三方插件将始终受到您的责任和您所在的司法管辖区的法律的约束。","ADDON_ACTIVATE":"激活此插件?","ADDON_REPO_ADD":"插件集合URL","ADDON_ADD":"添加","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"最新消息","BUTTON_CONTINUE":"继续","BUTTON_ACTIVATE":"激活","BUTTON_ACTIVATED":"已激活","BUTTON_CANCEL":"取消","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"清除全部","BUTTON_VIEW_ALL":"查看全部","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"您的库看起来是空的,看看它有多有用:)","HOW_START":"您可以从这里开始:","LIB_EMPTY_CAL":"您的日历显示您库中的剧集。","HOW_START_CAL":"下面是如何添加剧集:","LIB_EMPTY_BOARD":"主页显示与您的库相关的通知&推荐。","HOW_START_BOARD_WAIT":"请在您的库中添加一些剧集或频道给我们几分钟来处理:)","HOW_START_BOARD":"下面是如何向其中添加剧集&电影:","IMPORT_FB":"从Facebook导入您喜欢的东西","IMPORT_TRAKT":"从Trakt导入媒体库","IMPORT_DISCOVER":"从发现中找到有趣的东西","IMPORT_DISK":"导入本地磁盘上的电影或节目","PLEASE_CREATE_ACC":"请创建一个账户以启用库同步&主页。","IMPORT_DISCOVER_SIGNUP":"注册并从发现中找到有趣的东西","IMPORT_DISK_SIGNUP":"注册并导入本地磁盘上的电影或节目","LIB_EMPTY_CLOUD":"云端库","LIB_EMPTY_CLOUD_DESC":"在所有设备上同步个人云端库","LIB_EMPTY_EARLY":"第一时间","LIB_EMPTY_EARLY_DESC":"接收新剧集的通知","LIB_EMPTY_PERSONAL":"个性化","LIB_EMPTY_PERSONAL_DESC":"获取个性化推荐","LIB_EMPTY_CALENDAR_DESC":"安排您的个性化观看日历","LIB_EMPTY_ALL":"注册以获取所有这些:","LIB_EMPTY_BEST":"注册以获得最佳的Stremio","LIB_EMPTY_OTHER":"注册以启用日历和其他炫酷功能","CALENDAR_ADDED":"Stremio日历已添加到默认桌面日历中。","CALENDAR_ADDED_MSG":"如果这不起作用,请手动将此URL添加到日历应用程序中","TRAKT_EXPIRED":"Trakt验证已过期,请转到设置并重新验证","TRAKT_REQUIRES_LOGIN":"Trakt错误","TRAKT_REQUIRES_LOGIN_MSG":"您需要登录","SETTINGS_LABEL":"设置","SETTINGS_NAV_GENERAL":"常规","SETTINGS_NAV_PLAYER":"播放器","SETTINGS_NAV_STREAMING":"流媒体","SETTINGS_NAV_SHORTCUTS":"快捷键","SETTINGS_SHORTCUT_RELOAD_APP":"重新加载应用程序","SETTINGS_SHORTCUT_OPEN_SETTINGS":"打开设置","SETTINGS_SHORTCUT_SWITCH_TABS":"切换标签","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"向前循环标签","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"向后循环标签","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"退出/返回","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"切换全屏","SETTINGS_SHORTCUT_SHOW_CONTROLS":"显示控件","SETTINGS_SHORTCUT_PLAY_PAUSE":"播放/暂停","SETTINGS_SHORTCUT_VOLUME_UP":"增大音量","SETTINGS_SHORTCUT_VOLUME_DOWN":"降低音量","SETTINGS_SHORTCUT_SEEK_NEXT":"寻找下一个","SETTINGS_SHORTCUT_SEEK_PREV":"寻找上一个","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"播放下一个","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"增加字幕大小","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"减小字幕大小","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"增加字幕延迟","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"减少字幕延迟","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"切换侧边栏","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"开机时启动","SETTINGS_VLC_DEFAULT":"使用VLC播放","SETTINGS_UI_LANGUAGE":"用户界面语言","SETTINGS_FULLSCREEN_EXIT":"Esc键退出全屏","SETTINGS_GAMEPAD":"启用游戏手柄支持","SETTINGS_CLOSE_WINDOW":"关闭窗口时结束应用程序","SETTINGS_SUBTITLES_LANGUAGE":"默认字幕语言","SETTINGS_SUBTITLES_SIZE":"默认字幕大小","SETTINGS_SUBTITLES_BACKGROUND":"字幕背景","SETTINGS_SUBTITLES_COLOR":"字幕颜色","SETTINGS_SUBTITLES_COLOR_OUTLINE":"字幕轮廓颜色","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"字幕背景颜色","SETTINGS_SEEK_KEY":"方向键控制进度","SETTINGS_SEEK_KEY_SHIFT":"按住Shift键时方向键控制进度","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"自动播放下一集","SETTINGS_NEXT_VIDEO":"显示播放下一集的通知","SETTINGS_NEXT_VIDEO_TRIGGER":"显示下一集的通知:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"播放前自动调整窗口大小","SETTINGS_OVERRIDE_SERVER":"覆盖流媒体服务器URL(高级)","SETTINGS_SERVER_URL":"流媒体服务器URL:","SETTINGS_SERVER_AVAILABLE":"流媒体服务器可用。","SETTINGS_SERVER_UNAVAILABLE":"流媒体服务器不可用。","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"流媒体HTTPS结点:","SETTINGS_USE_BETA":"始终使用最新的测试版","SETTINGS_IMPORT_FB":"从Facebook导入","SETTINGS_IMPORT_DISK":"从本地磁盘导入","SETTINGS_IMPORT_TRAKT":"从Trakt导入","SETTINGS_PAUSE_MINIMIZED":"最小化时暂停播放","SETTINGS_HWDEC":"硬件解码加速","SETTINGS_BACKGROUND":"后台播放","SETTINGS_SUBSCRIBE_CALENDAR":"订阅到日历","SETTINGS_REQ_EXPORT":"请求导出数据","SETTINGS_ACC_DELETE":"请求删除账户","SETTINGS_CHANGE_PASSWORD":"更改密码","SETTINGS_TOS":"服务条款","SETTINGS_SUPPORT":"联系支持人员","SETTING_LANGUAGE":"语言","SETTINGS_TRAKT":"Trakt自动跟踪","SETTINGS_TRAKT_LOGOUT":"从Trakt.tv注销","SETTINGS_SCAN_FOR_REMOTE":"扫描二维码打开遥控器","SETTINGS_DESKTOP_NOTIFICATIONS":"桌面通知","SETTINGS_DATA_SAVER":"移动数据警告","SETTINGS_LANGUAGE_INTERFACE":"界面","SETTINGS_LANGUAGE_SUBS":"默认字幕","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"自动选择音轨","SETTINGS_DEFAULT_AUDIO_TRACK":"默认音轨","SETTINGS_ACCOUNT":"账户","SETTINGS_VERSION":"版本","SETTINGS_MPV_WINDOW":"在单独窗口中启动播放器(高级)","SETTINGS_PLAY_IN_EXTERNAL":"总是在外部播放器中打开视频","SETTINGS_STORAGE_BUTTON":"清除本地存储","SETTINGS_STORAGE_MODAL_TITLE":"您确定吗?","SETTINGS_STORAGE_MODAL_MESSAGE":"这将清除本地存储并使您注销","SETTINGS_HWDEC_PICKER":"选择硬件加速解码设置","SETTINGS_HW_AUTOMATIC":"自动","SETTINGS_HW_DISABLED":"关闭","SETTINGS_HW_ACCELERATED":"解码加速","SETTINGS_HW_FULL":"全加速","SETTINGS_HW_LEGACY":"旧版","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"音频","SUBSPICKER_SUBTITLES":"插件字幕","SUBSPICKER_BLACK_BACKGROUND":"使用黑色背景色","SUBSPICKER_VERTICAL_OFFSET":"垂直偏移量","SUBSPICKER_SIZE":"大小","SUBSPICKER_DELAY":"延迟","SUBSPICKER_EMBEDDED_SUBS":"内嵌字幕","MOBILE_PRIVACY_POLICY":"隐私政策","MOBILE_CRASH_REPORTING":"崩溃报告","MOBILE_ZOOM_TO_FILL":"缩放填充屏幕","MOBILE_PASSTHROUGH":"数字音频输出(直通)","MOBILE_RUN_LOW_BATTERY":"电池电量低时运行","MOBILE_RUN_FOREGROUND":"作为前台服务运行","MOBILE_PERFORMANCE":"性能&稳定性","MOBILE_SERVER_ONLINE":"在线","MOBILE_SERVER_OFFLINE":"离线","MOBILE_QR_EXPIRES":"二维码到期时间","MOBILE_LOG_INTO":"登陆到您的Stremio账户","MOBILE_SCAN_QR":"扫描上面的二维码或转到","MOBILE_LINK_ACCOUNT":"链接账户","MOBILE_SPEEDPICKER_CANCEL":"取消","MOBILE_SPEEDPICKER_LABEL":"选择播放速度","MOBILE_EMPTY_LIBRARY":"您的库为空","MOBILE_NO_ADDON_ACTIVE":"没有活动的此类型Stremio插件。","MOBILE_ORGANIZER_WARNING":"Stremio Organizer应用程序提供的功能有限,要获得可播放流的列表和完整的Stremio体验,请使用Stremio桌面客户端。","MOBILE_ADDON_LOADING":"仍在加载","MOBILE_ADDONS_LOADING":"插件仍在加载","MOBILE_ADDON":"插件","MOBILE_CONFIGURE_ADDON":"配置插件","MOBILE_CONFIGURE_ADDON_LABEL":"配置插件","MOBILE_ORGANIZER_ADDONS_WARNING":"Stremio Organizer应用程序仅提供有限的插件,要获得完整的Stremio体验,请使用Stremio桌面客户端。","MOBILE_DISCONNECT":"断开连接","MOBILE_LOOKING_FOR_DEVICES":"正在查找设备...","MOBILE_CAST_TO":"投屏到","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"开启","NAVIGATION_OFF":"关闭","MARKETING_AGREE":"我同意接收Stremio的营销通知","QUIT":"退出","CONNECTED":"已连接","AUTHENTICATE":"验证","CACHING":"缓存","SETTINGS_CACHING_DRIVE":"缓存磁盘","ENABLE_LOCAL_FILES_ADDON":"启用本地文件插件(需要重新启动)","LOCAL_ADDON_NOT_ENABLED":"未启用本地插件,单击此处转到设置并启用它","ENABLE_REMOTE_HTTPS_CONN":"启用远程HTTPS连接","TORRENT_PROFILE":"Torrent配置","DATA_CACHING":"数据缓存","MAGNET_PARSING":"分析Magnet链接","January":"一月","February":"二月","March":"三月","April":"四月","May":"五月","June":"六月","July":"七月","August":"八月","September":"九月","October":"十月","November":"十一月","December":"十二月","Monday":"星期一","Tuesday":"星期二","Wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期天","Action":"动作","Comedy":"喜剧","War":"战争","Family":"家庭","Animation":"动画","Adventure":"冒险","Fantasy":"幻想","Crime":"犯罪","Mystery":"神秘","Romance":"浪漫","Drama":"剧情","Horror":"恐怖","Thriller":"惊悚","Sci-Fi":"科幻","Music":"音乐","Biography":"传记","Documentary":"纪录","Sport":"运动","Musical":"音乐剧","Western":"西部","Film-Noir":"黑色电影","News":"新闻","History":"历史","Game-Show":"游戏节目","Reality-TV":"真人秀","Talk-Show":"脱口秀","Film & Entertainment":"电影与娱乐","Gaming":"游戏","From TV":"电视","Lifestyle":"生活方式","Science & Education":"科学与教育","Cooking & Health":"烹饪与健康","Beauty & Fashion":"美丽与时尚","Sports":"体育","News & Politics":"新闻与政治","How-to & DIY":"DIY","Tech":"技术","Automotive":"汽车","Causes & Non-Profits":"事业与公益","Movies":"影视","Uk Live Tv":"英国直播电视台","Fashion":"流行","Business News Radio":"商业新闻电台","Business Tv":"商业电视","Cars & Auto":"汽车与自动化","Comedy Radio":"喜剧电台","Lifestyle Radio":"生活方式电台","News Tv":"新闻电视","Food And Wine":"食物与酒","Latino Tv":"拉丁语电视台","Shopping Tv":"购物电视台","Religion":"宗教","Kids":"儿童","Body & Soul":"身体与灵魂","Education":"教育","Indian Tv":"印度电视台","Extreme Sports":"极限运动","Middle Eastern Tv":"中东电视台","Celebrity Tv":"名人电视台","Science Tv":"科学电视台","Bikini babe":"比基尼宝贝","Outdoors":"户外","German Tv":"德国电视台","French Tv":"法国电视台","Italian Tv":"意大利电视台","Gamer Tv":"伽马电视台","Travel":"旅行","Asian Tv":"亚洲电视台","Entertainment":"游戏娱乐","News Radio":"新闻电台","Music Radio":"音乐电台","Language Learning":"语言学习","Science Radio":"科学电台","Tech Radio":"科技电台","Science & Technology Vod":"科技视频点播","new video":"新视频","new episode":"新一集","new movie":"新电影","recommended":"推荐","we recommend":"我们建议","offer of the day":"当日优惠","news":"新闻","music video":"音乐视频","CTX_SHOW_HOTKEYS":"显示快捷键","CTX_DISMISS_NOTIF":"清除通知","CTX_DISMISS_ALL":"全部清除","CTX_SHARE":"分享","CTX_COPY_SHARE_LINK":"复制分享链接","CTX_COPY_MAGNET_LINK":"复制Magnet链接","CTX_COPY_STREAM_LINK":"复制流媒体链接","CTX_DOWNLOAD_VIDEO":"下载此视频","CTX_DOWNLOAD_SUBS":"下载字幕","CTX_VIEW_ON_YOUTUBE":"在YouTube上观看","CTX_SHOW":"显示","CTX_PLAY":"播放","CTX_PLAY_IN":"播放","CTX_PLAY_ON":"正在播放","CTX_WATCH_ON":"正在观看","CTX_WATCH":"观看","CTX_WATCHED":"已观看","CTX_WATCH_BEGINNING":"从头开始观看","CTX_WATCH_MOBILE":"在移动设备上观看","CTX_REWIND":"回到开头","CTX_MARK_WATCHED":"标记为已观看","CTX_MARK_NON_WATCHED":"标记为未观看","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"将其余部分标记为已观看","CTX_UNMARK_REST":"将其余部分标记为未观看","CTX_RECEIVE_NEW_NOTIF":"接受新通知","CTX_REMOVE_CACHE":"从缓存中删除","CTX_REMOVE_CACHE_EP":"从缓存中删除集","CTX_OPEN_CONTAINING":"打开所在文件夹","CTX_REMOVE":"从库中删除","CTX_AVAILABLE_OFFLINE":"离线可用","CTX_PAUSED":"暂停","CTX_ALWAYS_ON_TOP":"置顶","CTX_FULLSCREEN":"全屏","CTX_WRONG_SUBS":"错误的字幕?","CTX_REPORT_ISSUES":"报告问题","CTX_COPY":"复制","CTX_PASTE":"粘贴","CTX_CLEAR":"清除","CTX_CLEAR_RECENT_SEARCHES":"清除最近搜索记录","HELLO_THERE":"您好","HOPE_YOU_ENJOY":"我们希望您喜欢Stremio,也许它已经是您最喜欢的应用之一了!","WHO_ARE_WE":"我们是谁?我们是它背后的团队。在过去三年里的每天,我们两个努力工作使这个产品越来越好。","SUPPORT_US":"如果您喜欢Stremio,如果Stremio对您来说很有价值,请传播它!","SPREAD_THE_WORD":"现在与您的朋友分享传播关于Stremio的信息","MORE_PEOPLE":"使用Stremio的人越多,效果就越好!","SEND_A_LINK":"或发送一个链接到我们的网站","TIP_LOCALFILES":"提示:您可以将本地视频文件拖放到Stremio中","ADDON_MY":"我的插件","ADDON_COMMUNITY":"社区插件","ADDON_OFFICIAL":"官方插件","ADDON_REPOS":"插件集合","ADDON_SEARCH":"搜索插件","ADDON_INSTALL":"安装","ADDON_CONFIGURE":"配置","ADDON_UNINSTALL":"卸载","ADDON_UPGRADE":"更新","ADDON_INSTALLED":"已安装","ADDON_INSTALLED_MSG":"插件已安装!","ADDON_UPGRADED_MSG":"插件已更新!","ADDON_UNKNOWN":"未知","ADDON_ERR":"插件安装错误!","ADDON_DISCONNECTED":"已断开连接","ADDON_APP_MISSING":"未安装此源的应用程序,您想现在安装吗?","ADDON_APP_INSTALL":"立即安装","ADDON_PAGE":"插件页","ADDON_TOP_CONTENT":"最好从这个插件","ADDON_PROVIDES":"这个插件会给您:","ADDON_WATCH":"立即观看#{types}!","ADDON_WATCH_FREE":"立即免费观看#{types}!","ADDON_ADDON":"插件","ADDON_SUPPORTED_TYPES":"支持的类型","ADDON_SUPPORTED_CATALOGS":"支持的目录","ADDON_PROVIDES_DISCOVER":"发现中的更多#{types}","ADDON_PROVIDES_STREAMS":"观看#{types}","ADDON_PROVIDES_STREAMS_FREE":"免费观看#{types}","ADDON_PROVIDES_SUBTITLES":"#{types}的字幕","ADDON_CANTDETECT":"我们无法检测到正在运行的Stremio,因此我们无法检测您安装了哪些插件。","ERR_NO_META":"找不到有关于此的信息","ERR_GETTING_META":"检索有关于此的信息时出错","ERR_CANT_PARSE_MAGNET":"无法分析Magnet","ERR_NO_MAGNET_INFOHASH":"Magnet缺少有效的Hash","ERR_NO_FILE_PATH":"没有文件路径无法发送请求","ERR_NO_TORRENT":"没有Torrent返回","ERR_NO_SUPPORTERD_FILES":"找不到支持的文件","ERR_OPENING_FILES":"无法打开外部文件","ERR_INVALID_LINK":"无效链接","ERR_REGISTERED_ONLY":"此选项仅适用于已注册用户。","ERR_CLIPBOARD":"无法从剪切板播放","ERR_CLIPBOARD_READ":"无法读取此平台上的剪切板","ERR_CLIPBOARD_GENERIC":"在剪切板中找不到可播放的URL. 请将URL(例如Magnet链接)复制到视频。","BOARD_CONTINUE_WATCHING":"继续观看","BOARD_EXPLANATION_RECOMMENDATIONS":"专门为您挑选的电影。
    这部电影是一个推荐样例。","BOARD_EXPLANATION_EPISODES":"这里是您最喜爱的剧集的新一集。
    将您关注的剧集添加到库中。","BOARD_EXPLANATION_VIDEOS":"这里是您最喜爱的频道的新一集。
    将您关注的YouTube频道添加到库中。","WEBSITE_SLOGAN_WATCH":"立即观看","WEBSITE_SLOGAN_ALL":"一站式视频娱乐解决方案","WEBSITE_SLOGAN_NEW":"您能观看一切","WEBSITE_SLOGAN_NEW_NEW":"自由串流","WEBSITE_WATCH_FROM":"观看","WEBSITE_DOWNLOAD":"立即下载","WEBSITE_DOWNLOAD_FOR":"立即下载","WEBSITE_IS_DESKTOP":"Stremio是一个桌面应用程序,请在PC上打开此页并下载","WEBSITE_DESKTOP_DEMO_VID":"桌面演示","WEBSITE_PAGE_HOME":"首页","WEBSITE_PAGE_FEATURES":"功能","WEBSITE_PAGE_ADDONS":"插件","WEBSITE_PAGE_TECH":"技术","WEBSITE_PAGE_CREATE_ADDON":"创建插件","WEBSITE_PAGE_CONTACTS":"联络","WEBSITE_PAGE_BLOG":"博客","WEBSITE_TYPE_movie":"电影","WEBSITE_TYPE_series_PL":"剧集","WEBSITE_TYPE_tv":"直播电视","WEBSITE_TYPE_channel":"频道","WEBSITE_STREMIO_WHAT_IS":"Stremio是一款帮助您管理和随时观看您喜爱的视频、电影、剧集和电视频道的应用程序","WEBSITE_FEATURES_WATCH":"立即观看高清视频","WEBSITE_FEATURES_WATCH_DETAIL":"点击并播放您喜爱的电影、剧集、视频和电视频道。","WEBSITE_FEATURES_SUBS":"自动加载字幕","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio会自动为您的语言选择同步字幕。","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"在电视和移动设备上播放","WEBSITE_FEATURES_CAST_DETAIL":"适用于AppleTV、Chromecast、智能电视(DLNA/UPnP)和移动设备。","WEBSITE_LIB":"享受在所有设备上同步的个人库","WEBSITE_LIB_COLLECT":"从Stremio收集","WEBSITE_LIB_IMPORT":"从Facebook导入","WEBSITE_LIB_LOCAL":"从本地磁盘添加","WEBSITE_BOARD":"首页 - 通知和推荐的一站式场所","WEBSITE_BOARD_RECOMMEND":"推荐电视节目","WEBSITE_BOARD_TRENDING":"流行电影","WEBSITE_BOARD_NEW":"新视频","WEBSITE_BOARD_EPISODE":"新一集","WEBSITE_BOARD_1":"想看些有趣的东西吗?根据您的喜好得到推荐!","WEBSITE_BOARD_2":"当您最喜爱的电视节目或YouTube频道的新一集播出时获得通知!","WEBSITE_BOARD_YOUTUBE":"YouTube频道的新视频","WEBSITE_BOARD_EPISODES":"您关注的剧集的新一集","WEBSITE_ADDONS":"内容插件","WEBSITE_TECH_DETAIL":"我们热爱科技,我们热爱疯狂的科学!\\nStremio使用了以下开源技术:","WEBSITE_TECH_WCJS":"WebChimera.js允许Stremio以良好的性能播放任何视频格式。","WEBSITE_TECH_WCJS_EXTRA":"我们是项目的核心贡献者","WEBSITE_TECH_ELECTRON":"Electron为Stremio提供了一个创新平台。","WEBSITE_TECH_ELECTRON_EXTRA":"我们是项目贡献者","WEBSITE_TECH_LINVODB":"一种数据库技术,确保您的数据在任何地方登录都受管理和可用。","WEBSITE_TECH_LINVODB_EXTRA":"内部技术","WEBSITE_CREATE_ADDON":"创建您的插件","WEBSITE_CREATE_ADDON_DETAIL":"您有提供视频内容的服务吗?我们将通过创建插件来帮助您从Stremio的功能中获益。","WEBSITE_CREATE_ADDON_BENEFITS":"为Stremio创建插件的好处","WEBSITE_P2P_BEAUTY":"点对点流媒体之美","WEBSITE_P2P_1":"可靠且价格合理的全高清/4K视频点播或流媒体直播","WEBSITE_P2P_2":"提供良好用户体验的分销平台","WEBSITE_P2P_3":"我们将创建一个插件来满足您的确切需要","WEBSITE_P2P_CONTACT":"有兴趣吗?欢迎您通过联系我们.","WEBSITE_P2P_CONTACT_EXTRA":"我们很乐意帮助您将您的内容集成到Stremio!","WEBSITE_P2P":"偶然间出现了一种改变游戏名称的技术。 我们投入了大量的时间和精力来构建我们的点对点(P2P)视频流媒体引擎,该引擎可提供出色的性能和多功能性,以适应任何用例。\\n请联系我们以获取支持DRM的P2P视频点播或实时流媒体。","WEBSITE_THOUGHTS":"我们分享的想法:","WEBSITE_SPREAD":"传播关于Stremio的信息:","WEBSITE_CONTACT":"联系我们,我们很高兴收到您的来信!","WEBSITE_OPENSOURCE":"有关我们的开源项目,请转到:","WEBSITE_BITCOIN":"捐赠比特币:","WEBSITE_FAQ":"常见问题","WEBSITE_FAQ_SHORT":"常见问题","WEBSITE_QUESTIONS":"问题","WEBSITE_TOS":"使用条款","WEBSITE_LEGAL":"法律","WEBSITE_PAGE_ABOUT":"关于","WEBSITE_PAGE_BECOME_PARTNER":"成为合作伙伴","WEBSITE_ALL_YOU_CAN_WATCH":"自由观看\\n您想看的一切。","WEBSITE_FREEDOM_TO_STREAM":"自由串流","WEBSITE_WHAT_IS_STREMIO":"什么是Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio是一个一站式视频内容聚合中心。在您拥有的任何设备上发现,管理和观看来自各种来源的视频。","WEBSITE_WHAT_IS_STREMIO_P2":"电影、电视节目、剧集、电视直播或网络频道例如YouTube或Twitch.tv等,您可以在Stremio上找到所有这些内容。","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio是一个现代化的媒体中心,为您的视频娱乐提供一站式解决方案。您可以通过易于安装的插件发现,观看和整理视频内容。","WEBSITE_WHAT_IS_STREMIO_P2_V2":"电影、电视节目、直播电视或网络频道——在Stremio上找到所有这些。","WEBSITE_ENJOI_ON_ALL_DEVICES":"在所有媒体设备上享受","WEBSITE_DEVICES_COLLECT":"从Stremio收集","WEBSITE_DEVICES_IMPORT_FB":"从Facebook导入","WEBSITE_DEVICES_LOCAL":"从本地磁盘添加","WEBSITE_JOIN_THE_PARTY_NOW":"立即加入聚会","WEBSITE_DEVICES_ALL":"易于在所有设备上使用;","WEBSITE_EXTENDABLE_CATALOG":"可无限扩展的视频目录;","WEBSITE_ORGANIZE_YOUR_MEDIA":"强大的媒体管理功能;","WEBSITE_AS_SEEN_ON":"如图所示","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"关于我们","WEBSITE_LINK_TECHNOLOGY":"技术","WEBSITE_LINK_APPS":"应用程序","WEBSITE_LINK_DOWNLOADS":"下载","WEBSITE_MORE":"更多","WEBSITE_LINK_ADDONS":"插件","WEBSITE_LINK_ADDON_SDK":"插件SDK","WEBSITE_LINK_CONTRIBUTE":"贡献","WEBSITE_LINK_COMMUNITY":"社区","WEBSITE_LINK_BLOG":"博客","WEBSITE_MORE_MORE":"... & 更多","WEBSITE_LINK_HELP":"帮助中心","WEBSITE_LINK_CONTACTS":"业务查询","WEBSITE_LINK_TOS":"条款和条件","WEBSITE_LINK_PRAVACY":"隐私政策","WEBSITE_SUBSCRIBE":"订阅","WEBSITE_NEWSLETTER":"加入我们的实时通讯,了解精彩的内容","WEBSITE_PLACEHOLDER_EMAIL":"您的电子邮箱","WEBSITE_COMMUNITY":"社区","WEBSITE_LINK_PRAVACY_LEGAL":"隐私与法律","WEBSITE_WHY":"我们为什么这样做","WEBSITE_WHY_P1":"在Stremio,我们每天都工作,因为我们想解决视频点播行业的一个重要问题。每分钟都有这么多的新内容发布,几乎不可能找到解决的方法。","WEBSITE_WHY_P2":"我们帮助人们浏览这个巨大的视频娱乐世界,发现新的内容来享受。我们的应用程序汇集了电影、剧集、电视直播、网络频道等。我们致力于让用户非常容易地找到他们喜欢的标题和广播。","WEBSITE_WHY_P3":"您可以随时在任何设备上使用我们的服务,使Stremio成为您唯一需要的视频娱乐中心。","WEBSITE_TEAM":"团队","WEBSITE_TEAM_P":"Stremio团队虽小但很强大:我们10个人用X语言编写代码,分享软件开发、UI和UX设计、营销和广告、商业和初创企业方面的专业知识。","WEBSITE_FEATURES":"功能","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"轻松发现新内容","WEBSITE_FEATURES_DISCOVER_P":"轻松发现要观看的新电影、电视节目、剧集和频道。按类别、流派、评分、时间等浏览,或者只需键入一个名称即可找到。Stremio让寻找新的视频内容变得轻而易举。","WEBSITE_FEATURES_ALL_CONTENT":"一块屏幕显示所有视频内容","WEBSITE_FEATURES_ALL_CONTENT_P1":"查看您未看完的电影、剧集或视频,并继续观看;获得新剧集和版本的通知;浏览根据您的观看习惯获得的推荐。","WEBSITE_FEATURES_LIBRARY":"管理您的视频库","WEBSITE_FEATURES_LIBRARY_P1":"只需点击一下,即可将任何标题添加到您的Stremio库中,并按类型、时间或字母顺序整齐地排列内容。","WEBSITE_FEATURES_CALENDAR":"记录您所观看的一切","WEBSITE_FEATURES_CALENDAR_P1":"获取添加到库中的所有电影和系列的日历可视化。导出您的Stremio日历并同步它,这样您就可以随时知道新的一集或首映何时到来。","WEBSITE_FEATURES_BIG_SCREEN":"在大屏幕上欣赏您的视频内容","WEBSITE_FEATURES_BIG_SCREEN_P1":"将您正在观看的任何内容都投屏到另一台设备上,无论是手机、平板电脑还是电视,只需点击一下即可。","WEBSITE_FEATURES_SOURCES":"观看不同来源的视频","WEBSITE_FEATURES_SOURCES_P":"安装官方和社区插件,欣赏来自多个不同供应商的视频。","WEBSITE_CREATE_AN_ADDON":"创建插件","WEBSITE_FEATURES_SYNC":"跨设备同步库并恢复播放","WEBSITE_FEATURES_SYNC_P1":"使用您的帐户在所有设备上登录,享受同步的库、插件、播放和日历。","WEBSITE_FEATURES_EXTENDABLE":"通过插件扩展视频目录","WEBSITE_FEATURES_EXTENDABLE_P1":"Stremio插件目录提供了许多插件,可以从中安装和观看各种视频内容。这包括电影、节目、电视直播、体育、新闻、播客、网络频道、视频游戏等。","WEBSITE_FEATURES_AUTO_SUBS":"自动加载字幕","WEBSITE_FEATURES_AUTO_SUBS_P1":"通过我们的字幕插件,您可以自动选择您喜欢的语言。","WEBSITE_FEATURES_CHROMECAST":"投屏到Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"在更大的屏幕上欣赏您的视频内容,或者将您正在观看的内容投屏到其他设备上。","WEBSITE_FEATURES_KEEP_TRACK":"跟踪您最喜爱的电视节目和网络频道","WEBSITE_FEATURES_KEEP_TRACK_P1":"获取您最喜爱的剧集和网络频道的新一集的日历可视化和通知。","WEBSITE_FEATURES_POWER_USER":"超级用户功能","WEBSITE_FEATURES_POWER_USER_P1":"在外部播放器中播放","WEBSITE_FEATURES_POWER_USER_P2":"从Torrent文件或Magnet链接播放","WEBSITE_FEATURES_POWER_USER_P3":"从Facebook喜爱或本地磁盘导入您的库","WEBSITE_ADD_ONS":"插件","WEBSITE_ADD_ONS_P1":"Stremio提供的所有视频内容都是通过插件系统获取的,应用程序中没有内置任何内容或内容提供商。","WEBSITE_ADD_ONS_P2":"有两组插件可用:官方和社区插件。","WEBSITE_ADD_ONS_P3":"官方插件由Stremio开发和托管,而社区插件由我们的社区成员创建和托管。","WEBSITE_ADDONS_OFFICIAL":"官方插件","WEBSITE_ADDONS_WATCHUB":"从iTunes、Hulu、Amazon和其他英国/美国服务提供商处流式播放您喜爱的电影、剧集和节目。","WEBSITE_ADDONS_YOUTUBE":"观看您喜爱的YouTube频道,获得您关注的贡献者的新上传通知。","WEBSITE_ADDONS_FILMON":"免费观看直播电视、电影和社交电视。600个电视频道,45000部免费电影,纪录片以及更多","WEBSITE_ADDONS_OPENSUBTITLES":"多语种影视字幕,每天上传上千个翻译字幕。","WEBSITE_ADDONS_COMMUNITY":"社区插件","WEBSITE_ADDONS_FILMON_VOD":"观看来自Filmon.tv的点播视频。","WEBSITE_ADDONS_TWICH":"观看来自Twitch.tv(电子竞技行业的视频流媒体平台)的直播。","WEBSITE_ADDONS_VODO":"观看完全免费的独立电影。","WEBSITE_ADDONS_NETFLIX":"观看Netflix的电影和网剧。","WEBSITE_ADDONS_CREATE":"创建插件","WEBSITE_ADDONS_CREATE_P1":"如果您愿意,您可以开发自己的插件。通过这种方式,您可以让自己和我们的社区访问新的视频内容,并接触到全球数百万用户的新目标受众。","WEBSITE_ADDONS_START_CREATE":"要开始,请访问Stremio插件SDK页面:","WEBSITE_DOWNLOADS":"下载","WEBSITE_DOWNLOADS_P1":"为了获得最佳性能,我们建议您使用最新版本的Stremio应用程序。但是,如果出于某种原因,您想使用旧版本,可以在此处下载。","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS(限制版本)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"贡献","WEBSITE_CONTRIBUTE_P1":"Stremio平台是开源的,您可以轻松地为当前没有来源的内容创建一个插件。","WEBSITE_CONTRIBUTE_WHY":"为什么要创建插件?","WEBSITE_CONTRIBUTE_WHY_P1":"为您的视频内容吸引新观众","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio的用户群体正在快速增长,在推出的第一年,Stremio在全球获得了100万用户,在该平台存在的第二年,这个数字增长到250万。","WEBSITE_CONTRIBUTE_WHY_P3":"用插件,您可以轻松接触这些观众并向他们分发您的视频内容。","WEBSITE_CONTRIBUTE_ALL":"在一处观看您喜爱的电影、视频、剧集和频道。","WEBSITE_CONTRIBUTE_ALL_P1":"您是Stremio上尚未提供的特定类型内容的粉丝?为它创建一个插件,在市场上最大、最易使用的娱乐中心之一欣赏您喜爱的视频。","WEBSITE_CONTRIBUTE_ALL_P2":"除此之外,您还会得到其他志同道合的Stremio社区成员的无尽感激。","WEBSITE_CONTRIBUTE_MONETIZE":"通过插件营利,并在其帮助下赚钱","WEBSITE_CONTRIBUTE_MONETIZE_P1":"一旦您为Stremio开发了一个新的插件,您就可以通过多种不同的方式轻松地靠其营利。如果您正在考虑此问题,请随时与我们联系","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":",我们很乐意就插件营利选项向您提供咨询和建议。","WEBSITE_CONTRIBUTE_TRANSLATE":"成为一名志愿翻译者","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"如果您想享受不同语言的Stremio应用程序,您可以加入我们的志愿翻译者社区。他们帮助我们添加多种不同语言的Stremio版本。","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"您想开始吗?","WEBSITE_TRANSALTE_STREMIO":"翻译Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"官方社区","WEBSITE_COMMUNITY_OFFICIALS_P1":"成为不断增长的Stremio社区的一部分。在社交媒体上关注我们,不要害羞地打招呼,我们喜欢听到粉丝的声音!","WEBSITE_COMMUNITY_UNOFFICIALS":"非官方社区","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"合作伙伴和支持者","WEBSITE_COMMUNITY_GOODIES":"Stremio特典","WEBSITE_COMMUNITY_WALLPAPERS":"壁纸","WEBSITE_COMMUNITY_ART":"社区艺术画廊","WEBSITE_LINK_ART":"社区艺术画廊","WEBSITE_CONTACT_US":"联系我们","WEBSITE_CONTACT_US_P1":"如果您有任何问题、意见或建议,请随时通过下面的联系方式与我们联系。","WEBSITE_CONTACT_US_P2":"请记住,我们位于保加利亚,因此可能会由于时区差异而延迟处理您的问题。","WEBSITE_CONTACT_US_SUCCESS":"您的信息已发送。我们会在方便的时候尽快给您回复。","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"请输入有效的电子邮箱!","WEBSITE_CONTACT_US_Q_RELATED_TO":"您的问题与什么有关?","WEBSITE_CONTACT_US_Q_OS":"您的操作系统是什么?","WEBSITE_CONTACT_US_PH_EMAIL":"您的电子邮箱","WEBSITE_CONTACT_US_PH_MESSAGE":"短信","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"发送","WEBSITE_CONTACT_US_Q_1":"如何安装?","WEBSITE_CONTACT_US_Q_2":"如何卸载?","WEBSITE_CONTACT_US_Q_3":"(HTML)如何制作千层面?","WEBSITE_CONTACT_US_Q_4":"插件","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"技术","WEBSITE_TECHNOLOGY_P1":"我们热爱科技,热爱科学。
    这是Stremio的动力(它都是开源的)。","WEBSITE_TECHNOLOGY_P_QT":"最佳跨平台软件开发工具。","WEBSITE_TECHNOLOGY_P_MPV":"一款免费、开源、跨平台的媒体播放器。","WEBSITE_TECHNOLOGY_P_RN":"React Native允许您仅使用JavaScript构建移动应用程序。","WEBSITE_TECHNOLOGY_P_VLC":"嵌入到应用程序中获取多媒体的媒体框架。","WEBSITE_TECHNOLOGY_P_REALM":"Realm是一个移动平台,是SQLite和Core Data的替代品。","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js是一个开源、跨平台的JavaScript运行环境。","WEBSITE_TECHNOLOGY_P_RUST":"Rust是一种多范式系统编程语言,关注安全性,尤其是安全并发性。","WEBSITE_TECHNOLOGY_CONTRIBUTE":"为项目贡献力量","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"您可以通过两种方式为Stremio做贡献,帮助我们将产品做得更好。","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"您可以通过翻译平台来贡献您宝贵的语言技能...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"或","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... 您可以利用您的编程技巧来创建社区插件。","WEBSITE_TRANSLATE_STREMIO":"翻译Stremio","WEBSITE_404_OH_NO":"糟糕!您要找的页面不在这里...","WEBSITE_GO_HOME":"回到主页","WEBSITE_LINK_OTHER_DOWNLOADS":"其他下载","WEBSITE_FAQ_ABR":"常见问题","WEBSITE_SUPPORT":"支持","WEBSITE_DOWNLOAD_4_0_BETA":"立即下载Stremio 4测试版","WEBSITE_GET_FOR_DESKTOP":"获取桌面","WEBSITE_LINK_ADDON_COMPETITION":"插件比赛","WEBSITE_LINK_ART_CONTEST":"艺术比赛","WEBSITE_MY_ACCOUNT":"我的账户","WEBSITE_MAINPAGE_FAQ_001_H1":"什么是Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio是一个现代化的媒体中心,让您可以自由观看任何您想要的东西。","WEBSITE_MAINPAGE_FAQ_002_H1":"它是如何工作的?","WEBSITE_MAINPAGE_FAQ_002_P1":"一旦您在设备上安装了Stremio并创建了一个帐户,您所要做的就是访问插件目录并安装任何您想要的插件,就可以开始了!","WEBSITE_MAINPAGE_FAQ_002_P2":"之后,您可以进入“发现”或“板”部分,开始探索内容。","WEBSITE_MAINPAGE_FAQ_003_H1":"我可以在这里看什么?","WEBSITE_MAINPAGE_FAQ_003_P1":"很多:电影、电视节目、网络频道、体育、电视频道、收听播客等等。感谢我们的插件系统,您可以访问各种内容。","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio是开源的吗?","WEBSITE_MAINPAGE_FAQ_004_P1":"是的,您可以查看以下链接:${1}桌面应用${2}和${3}GitHub组织${4}。","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio安全吗?","WEBSITE_MAINPAGE_FAQ_005_P1":"是:因为它是开源软件,所以代码可以公开审核,您可以自己查看。","WEBSITE_MAINPAGE_FAQ_006_H1":"我的隐私如何?","WEBSITE_MAINPAGE_FAQ_006_P1":"我们尊重用户隐私,除了创建和同步您的帐户所必需的最低限度外,不收集任何个人数据。","WEBSITE_MAINPAGE_FAQ_006_P2":"注册时还有一个${1}访客模式${2},它不需要任何数据:在这种模式下,不会调用我们的后端。然而,这是以牺牲有用的功能为代价的,比如能够跨设备同步您的库。","WEBSITE_MAINPAGE_FAQ_007_H1":"我可以投屏到电视吗?","WEBSITE_MAINPAGE_FAQ_007_P1":"是的,我们支持Chromecast,您可以从桌面和移动应用程序(Android)进行强制转换。","WEBSITE_MAINPAGE_FAQ_008_H1":"Stremio有多少插件?","WEBSITE_MAINPAGE_FAQ_008_P1":"截至2019年末,超过50个。有关更多信息,请查看我们的插件目录。","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio是否可以扩展到插件目录之外?","WEBSITE_MAINPAGE_FAQ_009_P1":"是的,您应该查看这些:${1}PimpMyStremio${2},${3}Reddit communities${4},${5}Stremio Downloader${6},等等。","WEBSITE_MAINPAGE_FAQ_010_H1":"Stremio支持哪些设备?","WEBSITE_MAINPAGE_FAQ_010_P1":"我们有适用于Windows、Mac和Linux的桌面应用程序。对于移动设备,我们支持Android和iOS,但请记住iOS的功能有限(不支持大多数插件)。","WEBSITE_MAINPAGE_FAQ_010_P2":"有很多基于Android的设备可以在上面运行Stremio,比如NVIDIA Shield和Amazon Fire Stick,但我们并不正式支持它们。","WEBSITE_MAINPAGE_FAQ_011_H1":"您们能为Stremio添加某些内容吗?","WEBSITE_MAINPAGE_FAQ_011_P1":"抱歉,我们本身不提供任何内容,但是您安装的Stremio插件越多,您可以找到的内容就越多。","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio可以播放Magnet链接吗?","WEBSITE_MAINPAGE_FAQ_012_P1":"是的,它还可以播放正常的HTTP链接和Torrent文件(拖放)。","WEBSITE_MAINPAGE_FAQ_013_H1":"我可以下载视频并离线观看吗?","WEBSITE_MAINPAGE_FAQ_013_P1":"离线可用是一项即将推出的功能,但如果您允许Stremio在设备上缓存(从“设置”面板),您可以稍后在没有连接的情况下观看视频。","WEBSITE_MAINPAGE_FAQ_014_H1":"什么都不能用,帮帮我!","WEBSITE_MAINPAGE_FAQ_014_P1":"您确定已安装插件吗?如果是,请与我们的${1}帮助中心${2}联系","WEBSITE_MAINPAGE_FAQ_015_H1":"Stremio如何维持其开发运营?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"有关更多问题,请访问我们的${1}帮助中心${2}。","HELP_LEARN_MORE":"帮助我们了解更多有关您的信息。","LIFESTYLE":"生活方式","SPORTS":"体育","FOOD_HEALTH":"饮食与健康","BEAUTY_FASHION":"美丽与时尚","NEWS":"新闻","GAMING":"游戏","SCIENCE_EDUCATION":"科学与教育","MUSIC":"音乐","TRAVEL":"旅行","LATE_NIGHT":"深夜","REALITY":"真人","COMEDY":"喜剧","DIY":"DIY","TECH":"技术","CINEMA":"影院","CONTINUE":"继续","SLOW_LOADING":"加载缓慢?","I_GIVE_UP":"我放弃了","LEARN_MORE":"了解更多","POOR_SOURCE":"此源不可用或您的网络连接不够快","PICK_CATEGORIES_ERR":"您必须至少选择3个类别","ADJUST_TIMING":"调整时间","ADJUST_SIZE":"调整大小","SEARCH_ANYTHING":"您可以搜索一切...","ALL_CATEGORIES":"全部","SEARCH_CATEGORIES":"电影、剧集、YouTube和电视","SEARCH_PERSONS":"演员、导演和编剧","SEARCH_PROTOCOLS":"HTTP或Magnet链接","SEARCH_TYPES":"IMDB/TVDB链接","WATCHED":"已观看","SHOW_LESS":"显示较少","LAST_SEARCHES":"上次搜索","CLEAR_HISTORY":"清除历史记录","CHOOSE_SOME":"选择其中一些:","NO_WEB_REMOTE":"无法加载Web Remote","STREMIO_OFFLINE":"Stremio离线","STREMIO_EXPENSIVE_CONNECTION":"我们检测到您正在使用移动数据连接,是否继续?","USE_DATA":"使用移动数据","WARNING":"警告","MORE_INFO":"更多信息...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"加载...","STREMIO_TV_BACK_TO_LANGUAGES":"返回语言","STREMIO_TV_REMOTE":"远程","STREMIO_TV_GO_TO":"去往:","STREMIO_TV_OR_SCAN":"或扫描:","STREMIO_TV_ADDON_INSTRUCTIONS":"请按照说明安装您喜欢的插件。","STREMIO_TV_LIVE_TV":"直播电视","STREMIO_TV_RESUME_WATCHING":"继续观看","STREMIO_TV_LOADING_BACKGROUND":"加载背景","STREMIO_TV_CHECKING_AUTHENTICATION":"正在检测身份验证","STREMIO_TV_LOADING_BOARD":"加载主页","STREMIO_TV_LOGIN_HEADER_LINE_1":"我们希望用户在使用我们的软件时有最好的个性化体验,","STREMIO_TV_LOGIN_HEADER_LINE_2":"正是出于这个原因,我们恳请您建立和/或登录您的账户,","STREMIO_TV_LOGIN_FOOTER_LINE_1":"感谢您的理解,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Stremio团队","STREMIO_TV_REMOTE_INSTRUCTIONS":"为了在您的智能手机/平板电脑/桌面使用Web Remote:","STREMIO_TV_WIFI_SETUP":"Wi-Fi设置","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle未检测到互联网连接。","STREMIO_TV_WIFI_DETAILS_1":"连接到:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"使用密码:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"在浏览器中打开链接:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"默认","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"按最近观看","STREMIO_TV_LIBRARY_SORT_NAME":"按名字","STREMIO_TV_LIBRARY_TIMES_WATCHED":"按观看次数","STREMIO_TV_DETAILS_SEASON_NUMBER":"季${1}","STREMIO_TV_STREAMS_LOADING":"已加载${1}/${2}插件...","STREMIO_TV_STREAMS_STILL_LOADING":"${1}插件仍在加载...","STREMIO_TV_PLAYER_SETTINGS":"播放器设置","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"字幕延迟","STREMIO_TV_PLAYER_AUDIO_DELAY":"音频延迟","STREMIO_TV_PLAYER_VIDEO_SCALING":"视频缩放","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"不支持的流媒体源","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"打开外部链接失败","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"使用ExoPlayer播放","STREMIO_TV_PLAYER_PLAY_IN_VLC":"使用libVLC player播放","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"由于播放错误而切换到libVLC player","STREMIO_TV_ADDONS_TITLE":"在手机或PC上使用Stremio安装或配置插件,然后按\\"同步插件\\"","STREMIO_TV_ADDONS_SUBTITLE":"注意:确保您使用的是相同的Stremio帐户","STREMIO_TV_ADDONS_SYNC_ADDONS":"同步插件","STREMIO_TV_ADDONS_SYNC_SUCCESS":"插件成功同步","STREMIO_TV_ADDONS_SYNC_FAILED":"插件同步失败","STREMIO_TV_META_LINK_FAILED":"打开元链接失败","STREMIO_TV_CATALOG_LOADING":"目录仍在加载...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"界面语言已更新","STREMIO_TV_SETTINGS_THEME_UPDATED":"主题已更新","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"首选语言","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"次要首选语言","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"隧道播放","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"某些设备上可能存在播放问题","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"某些视频格式可能无法播放","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"无缓存","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"默认","STREMIO_TV_SETTINGS_PROFILE_SOFT":"慢","STREMIO_TV_SETTINGS_PROFILE_FAST":"快","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"超快","STREMIO_TV_SETTINGS_SERVER_URL":"流媒体服务器URL","STREMIO_TV_SETTINGS_SERVER_VERSION":"服务器版本","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"未知","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio版本","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"编辑服务器URL","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"输入流媒体服务器URL","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"要阅读Stremio的隐私政策,请访问:","STREMIO_TV_SETTINGS_TOS_TEXT":"要阅读Stremio的条款和条件,请访问:","STREMIO_TV_NAV_SEARCH":"搜索","STREMIO_TV_NAV_HOME":"主页","STREMIO_TV_NAV_DISCOVER":"发现","STREMIO_TV_NAV_LIBRARY":"库","STREMIO_TV_NAV_MOVIES":"电影","STREMIO_TV_NAV_SERIES":"剧集","STREMIO_TV_NAV_CHANNELS":"频道","STREMIO_TV_NAV_TV":"电视直播","STREMIO_TV_NAV_SETTINGS":"设置","STREMIO_TV_NAV_ADDONS":"插件","STREMIO_TV_LOGIN_TITLE":"链接账户","STREMIO_TV_LOGIN_EXPIRES_IN":"过期日期到","STREMIO_TV_LOGIN_STEP_ONE":"扫描上方的二维码或转到","STREMIO_TV_LOGIN_STEP_TWO":"登录您的Stremio帐户","STREMIO_TV_LOGIN_NEW_LINK":"请求新链接","STREMIO_TV_LOGIN_LINK_REFRESHED":"登录代码已刷新","STREMIO_TV_SEARCH_PLACEHOLDER":"输入一些东西","STREMIO_TV_SEARCH_NO_ADDONS":"没有为目录请求插件!","STREMIO_TV_SEARCH_BUTTON":"搜索","STREMIO_TV_SEARCH_KEY_DEL":"删除","STREMIO_TV_SEARCH_KEY_SPACE":"空格","STREMIO_TV_SEARCH_KEY_CLEAR":"清除","STREMIO_TV_SEARCH_HISTORY_TITLE":"搜索历史","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"您可以搜索标题、演员、频道...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"清除搜索历史","STREMIO_TV_FILTERS_DESCRIPTION":"从以下过滤器中选择一个","FILTERS":"过滤器","SETTINGS":"设置","ACCOUNT":"账户","LOGOUT":"注销","THEMES":"主题","PLAYBACK":"播放","PLAYBACK_SPEED":"播放速度","AUDIO_TRACKS":"音轨","VIDEOS":"视频","SERVER":"服务器","LINKS":"链接","ABOUT":"关于","INTERFACE":"界面","ANIMATIONS":"动画","STATUS":"状态","LANGUAGE":"语言","SIZE":"大小","DELAY":"延迟","BOLD":"粗体","TEXT_COLOR":"文本颜色","OUTLINE_COLOR":"轮廓颜色","BACKGROUND_COLOR":"背景颜色","BACKGROUND_BLUR":"背景模糊","SEEK_TIME_DURATION":"寻找持续时间","AUTO_PLAY":"自动播放下一集","PLAY_NOW":"现在播放","MARK_AS_WATCHED":"标记为已观看","MARK_AS_UNWATCHED":"标记为未观看","REWIND_TO_BEGINNING":"倒回开始","CONTINUE_WATCHING":"继续观看","ALL":"全部","SECONDS":"秒","ON":"开","OFF":"关","RELOAD":"重新加载","EDIT_URL":"编辑URL","NONE":"无","EMBEDDED":"内嵌","REMOTE_SWITCH_DEVICES":"开关设备","REMOTE_VIDEOS":"视频","REMOTE_ADJUST_TIMING":"调整时间","REMOTE_ADJUST_SIZE":"调整大小","REMOTE_COULD_NOT_BE_LOADED":"无法加载Web Remote","REMOTE_RETRY":"重试","TORRENT_PROFILE_DEFAULT":"默认","TORRENT_PROFILE_SOFT":"慢","TORRENT_PROFILE_FAST":"快","TORRENT_PROFILE_ULTRA_FAST":"超快","FAQ_001_H1":"什么是Stremio?","FAQ_001_P1":"Stremio是专为视频娱乐而设计的多媒体中心软件,易于使用。Stremio允许您管理和观看自己的电影,剧集,频道和实况电视收藏。","FAQ_001_P2":"Stremio从本地磁盘和插件系统中收集显示给您的内容。","FAQ_001_P3":"它还会在您感兴趣的新剧集/视频/电影播出时通知您,并为您提供电影推荐。","FAQ_02_H1":"Stremio与Kodi和Plex相比如何?","FAQ_02_P1":"我们受到这两种软件的启发。但是我们有不同的目标——Stremio专门针对娱乐视频,并通过易于使用成为其主流解决方案。","FAQ_02_P2":"Stremio将永远不会像Kodi和Plex那样具有可定制性和丰富的功能,但它更易于使用。只需${1}就可以获取它,并查看${2}:)","FAQ_03_H1":"Stremio与Netflix相比如何?","FAQ_03_P1":"同样,Netflix是我们的灵感之一。我们努力实现Netflix的用户体验,再加上许多附加的好处。但最重要的是,我们让您可以自由管理自己的库,并使用我们的插件系统添加新的内容源。","FAQ_03_P2":"这使得Stremio可以无限扩展,因此当您使用Stremio时,您永远不会局限于Netflix决定许可的内容。例如,您可以通过Stremio观看${1}中的内容电影电视${2}, ${3} Twitch.tv${4},${5}YouTube${6},${7}Vodo${8}甚至${9}Netflix${10}本身!","FAQ_04_H1":"Stremio与Flipboard相比如何?","FAQ_04_P1":"我们不常听到这个问题,除非与初创企业的人交谈:)","FAQ_04_P2":"Stremio是通过设计一个内容聚合器来实现的,它本质上就是视频的Flipboard。这一点在我们的首页部分非常明显,它为您提供目录和新的插曲/新的视频通知,让您了解您所关注的内容,就像Flipboard一样。","FAQ_05_H1":"Stremio与Popcorn Time相比如何?","FAQ_05_P1":"Stremio和Popcorn Time在用户界面上很相似,因为没有很多方法可以正确制作视频娱乐目录:)","FAQ_05_P2":"Popcorn Time主要集中在特定来源的流媒体上,但Stremio是不受限制的,只是一个内容聚合器,它没有锁定到特定的内容源。","FAQ_05_P3":"此外,我们默认不提供任何Torrent插件,因此Stremio不提供官方功能的Popcorn Time用例。","FAQ_05_P4":"另一个显著的区别是Popcorn Time是完全开源的,而Stremio是${1}部分开源的${2}。","FAQ_06_H1":"是否要添加此电影/系列?","FAQ_06_P1":"不,对不起 :(","FAQ_06_P2":"正如大多数其他问题中提到的,Stremio本身不提供任何内容,所有内容都是通过插件系统添加的。如果您有内容请求,您可以使用播放器中的“报告”按钮,它将向您当前使用的插件的作者发送电子邮件。","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"能否为X创建插件?","FAQ_08_P1":"完全有可能。","FAQ_08_P2":"如果您有一个插件的想法,请在${1}office@stremio.com${2}给我们留言,但请确保您的插件想法不会侵犯任何版权或使用条款。","FAQ_08_P3":"目前,我们路线图上的下一件事是FandangoNOW,Filmon.tv video on demand和Crunchyroll的插件。","FAQ_09_H1":"Stremio是否使用BitTorrent?","FAQ_09_P1":"是的,Stremio支持BitTorrent作为流媒体协议。您可以将其与Torrent插件一起使用,也可以将.Torrent文件拖放到Stremio中,或者将磁铁链接粘贴到搜索栏中。","FAQ_09_P2":"请注意,使用BitTorrent的唯一官方插件是${1}Vodo${2},它提供独立内容,所有内容都允许与BitTorrent一起分发。","FAQ_09_P3":"我们不支持使用任何可能导致版权侵权的第三方插件。","FAQ_10_H1":"我可以在Stremio中通过官方插件观看什么节目?","FAQ_10_P1":"默认情况下,您可以在Stremio与它的嵌入式播放器观看Filmon.tv,YouTube和Vodo的内容。另外,我们还有一个Twitch.tv插件,以及其他一些插件。","FAQ_10_P2":"此组合提供以下选项:","FAQ_10_L1":"Filmon.tv上的热门电视频道,例如E4、BBC、Bollyworld TV","FAQ_10_L2":"YouTube上的所有内容,例如BBC News、Top Gear、Vevo、PewDiePie","FAQ_10_L3":"Vodo上的独立电影","FAQ_10_L4":"Twitch.tv上的在线游戏广播","FAQ_10_P3":"此外,Guidebox和Netflix插件提供了许多内容源,它们不完全在Stremio中播放,而是重定向到给定的服务。例如,Guidebox插件将为您提供可在美国免费播放的精选电影,这些电影来自TubiTV和Crackle等服务。","FAQ_11_H1":"Stremio无法安装,我该怎么办?","FAQ_11_P1":"如果您在Windows上,请尝试${1}此替代安装程序${2}。","FAQ_11_P2":"如果您使用的是Mac OS X,请注意,我们不支持任何比OS X Mavericks(10.9)更旧的版本。","FAQ_11_P3":"如果您使用的是Linux,请注意,我们目前只支持64位(x64)Linux。","FAQ_11_P4":"如果您仍然无法解决您的问题,请写信给我们的${1}Facebook群组${2}。","FAQ_12_H1":"为什么我的杀毒软件会报毒?Stremio安全吗?","FAQ_12_P1":"我们向您保证Stremio是${1}100%安全的${2}。","FAQ_12_P2":"您的杀毒软件报毒是因为我们的安装程序中包含广告,一些杀毒软件将其识别为广告软件。","FAQ_12_P3":"如果您仍然不确定,可以尝试我们的${1}替代安装程序${2}。","FAQ_13_H1":"如何制作插件?","FAQ_13_P1":"对于初学者,我们建议您查看GitHub上的${1}插件系统模块${2}。","FAQ_13_P2":"之后,您可以按照${1}Hello World教程${2}进行操作。","FAQ_13_P3":"如果您没有任何编程技能,请在${1}Reddit社区${2}上发布您的想法,并在${3}office@stremio.com${4}上与我们联系您的插件想法。","FAQ_14_H1":"插件是如何发布的?","FAQ_14_P1":"当您创建一个插件和主机,并在清单中放置一个指向工作插件地址的终端节点字段时,该插件将自动发布到我们的${1}插件目录${2}。","FAQ_14_P2":"发生这种情况是因为Stremio插件模块的服务器部分会自动调用我们的API来声明插件。当我们的API验证您的终端节点为有效的插件时,它将开始显示在目录中。","FAQ_15_H1":"我可以在浏览器中运行Stremio吗?","FAQ_15_P1":"目前还没有,但即将到来!","FAQ_15_P2":"如果您想看到Alpha版本,可以在这里看到:${1}alpha4.strem.io${2}. 请记住,此Alpha版本上已禁用流式处理。我们支持Chrome、Firefox、Opera和Edge","FAQ_16_H1":"电视投屏不起作用/字幕不起作用","FAQ_16_P1":"电视投屏使用DLNA技术,这在不同的电视品牌和型号之间非常不一致。由于这个原因,我们没有能力在每种情况下都测试它,所以它还远远不够完美。尽管如此,我们仍在不断改进,但我们无法为您提供DLNA能够在您的电视上开始正常工作的预计时间。","FAQ_16_P2":"如果您在“投屏”菜单中看不到您的电视,请尝试禁用网络连接并重新启用它(在Windows上,右键单击网络并使用“启用/禁用”),以及重新启动路由器、电视和PC。","FAQ_16_P3":"如果您仍然遇到问题,您可以通过将您的电视品牌和型号信息发送到${1}来帮助我们”office@stremio.com${2}。","FAQ_16_P4":"同时,我们推荐Chromecast,我们非常支持Chromecast,或者直接用HDMI线将电视与PC连接。","FAQ_17_H1":"Stremio卡死和/或崩溃,我能做什么?","FAQ_17_P1":"首先,如果您使用的是带有AVG杀毒软件的Windows 7,这种组合会产生问题。问题出在AVG本身,我们这边没有合理的办法解决。不幸的是,去除或禁用杀毒软件将不起作用。唯一的解决办法是用别的东西代替AVG","FAQ_17_P2":"如果不是这个问题,但您仍在使用Windows,请更新到最新的service pack并更新/重新安装您的GPU驱动程序,然后重试。","FAQ_17_P3":"如果您的问题仍未解决,或者您使用的是Mac或Linux,请写信给我们,在${1}我们的Facebook群组${2}报告问题的确切细节。","FAQ_18_H1":"如何制作插件?","FAQ_18_P1":"对于初学者,我们建议您查看GitHub上的${1}插件系统模块${2}。","FAQ_18_P2":"之后,您可以按照${1}Hello World教程${2}进行操作。","FAQ_18_P3":"如果您没有任何编程技能,请在${1}Reddit社区${2}上发布您的想法,并在${3}上与我们联系您的插件想法。”office@stremio.com${4}。","FAQ_19_H1":"为什么Stremio占用磁盘空间?","FAQ_19_P1":"Stremio有一个本地缓存来临时保存您流式传输的视频文件。","FAQ_19_P2":"这有两个好处:第一,它允许Stremio预先缓冲视频,以确保流媒体更流畅。其次,它将视频保存在本地缓存中,以便您可以继续离线观看。","FAQ_19_P3":"Stremio保留了多少取决于“设置”面板中的缓存设置。Stremio可能会在您的磁盘上保留到设置的数量(例如2GB),除非当前流式传输的视频大于该数量,在这种情况下,必须分配足够的存储来保留它,直到您结束流式传输。","FAQ_20_H1":"缓存文件夹在哪里?","FAQ_20_P1":"在Windows上,Stremio缓存位于您在设置中选择的驱动器中(例如\\"E:\\\\stremio-cache\\")","FAQ_20_P2":"在MacOS上,它位于\\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"在Linux上,它位于\\"~/.stremio/stremio-cache\\"或\\"~/stremio-cache\\"","FAQ_21_H1":"我得到\\"流媒体服务器未找到\\"错误,我能做什么?","FAQ_21_P1":"如果出现此错误,则表示以下几点之一:","FAQ_21_P2":"1)您正试图通过我们的${1}web版本${2}使用一个由YouTube/BitTorrent源代码支持的插件。在这种情况下,您应该从${3}我们的网站${4}安装我们的桌面版本","FAQ_21_P3":"2)Stremio安装有问题。在这种情况下,请尝试从${1}网站${2}重新安装我们的最新桌面版本。如果这没有帮助,请尝试禁用杀毒软件和防火墙,重新启动电脑,然后重试。如果这依然不起作用,请写信给我们的${3}Facebook群组${4}","FAQ_22_H1":"我无法在iOS上看到/使用大多数插件","FAQ_22_P1":"由于Apple App Store条款和条件中的限制,我们限制iOS应用程序只能使用一组特定的插件。","FAQ_22_P2":"不过,请放心,将来会有更多的iOS插件,我们还可能添加一个集成,通过将iOS应用程序连接到Stremio流媒体服务器,您将可以使用所有Stremio插件。"}')},9542:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"電影","TYPE_series":"劇集","TYPE_tv":"電視頻道","TYPE_channel":"頻道","TYPE_other":"其他","TYPE_movie_PL":"電影","TYPE_series_PL":"劇集","TYPE_tv_PL":"電視頻道","TYPE_channel_PL":"頻道","TYPE_other_PL":"其他","TYPE_ALL":"All","VIDEO":"視頻","BACK":"返回","MORE":"更多","DONE":"完成","COPY":"複製","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"發現","Board":"首頁","Library":"庫","My Library":"我的庫","Calendar":"日曆","NOTIFICATION_ONLINE":"您當前處於在線狀態","NOTIFICATION_OFFLINE":"您當前處於離線狀態","INTERNET_CONNECTION":"網絡連接","STORAGE_FULL_TITLE":"警吿:儲存空間已滿!","STORAGE_FULL_TEXT":"Stremio將無法保存您的設置、首選項或登錄信息,考慮重新啟動或重新安裝Stremio。","SEARCH":"搜索","SEARCH_NO_RESULTS":"未找到結果","SEARCH_EXPLANATION_CONTENT":"搜索電影、劇集、YouTube和電視頻道","SEARCH_EXPLANATION_PEOPLE":"搜索演員、導演和編劇","SEARCH_PASTE_LINKS":"粘貼HTTP和Magnet鏈接","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"添加到庫中","REMOVE_FROM_LIB":"從庫中刪除","ADDED_TO_LIB":"添加到庫中","REMOVED_FROM_LIB":"從庫中刪除","TRAILER":"預吿片","WATCH_TRAILER":"觀看預吿片","WATCH_NOW":"立即觀看","SHOW":"查看","SHOW_MOVIE":"查看電影","WATCH_RANDOM":"隨機觀看","IMDB_RATING":"IMDb評分","YEAR":"年份","DIRECTOR":"導演","WRITER":"編劇","LEAD_ACTORS":"主演","CAST":"全部演員","CREW":"全部工作人員","SHOW_MORE_CAST":"顯示更多 »","AIRED":"播出時間","SEASONS":"季","GENRE":"類型","CATALOG":"目錄","SUMMARY":"簡介","SHOW_MORE":"顯示更多","SIMILAR":"相似","UPCOMING":"即將上映","ENDED":"已完結","DURATION":"時長","FEATURED":"功能","METADATA":"元數據","CATEGORY":"類別","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"搜索視頻","SEARCH_PLACEHOLDER":"搜索或粘貼URL","ADDON":"插件","ADDONS":"插件","OFFICIAL":"官方","ADDONS_OFFICIAL":"官方Stremio插件","ADDONS_POPULAR":"在您所在的地區很受歡迎","ADDON_FREE":"免費","ADDON_PEERED":"連接","ADDON_SUBSCRIPTION":"訂閲","ADDON_STREAM_GEORESTRICTED":"在您所在的地區不提供","ADDON_STREAM_OFFLINECACHE":"離線緩存","ADDON_STREAM_LOCALFILE":"本地文件","SHARE_ADDON":"分享插件","AVAILABLE_STREAMS":"可用流媒體","NO_STREAM":"未找到流媒體","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"要獲取更多流媒體,請安裝更多插件","STREAM_NOT_SUPPORTED":"此平台不支持所選流媒體。","ADDON_CATALOGUE":"顯示所有插件 »","ADDON_CATALOGUE_MORE":"安裝插件","REPO_ADDED":"已添加存儲庫","ADDON_REPO_EXIST_ERR":"此插件集合已存在","ADDON_REPO_ERR":"添加集合時出錯","ADDON_ADD_ERR":"添加插件時出錯","ERR_ADDON_PROTECTED":"無法卸載插件,它受到保護","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"出了一些問題——身份驗證可能失敗","ERR_NOT_COLLECTION_URL":"不是集合URL","ERR_NOT_ADDON_URL":"不是有效的插件URL","ERR_DETECTFROMURL":"再此URL中找不到插件/集合","ADDON_DUPLICATE_WARNING":"警吿:重複的插件","ADDON_COLLECTION_SET_FAILED":"將已安裝的插件同步到您的賬户失敗","SETTINGS_DATA_EXPORT":"導出用户數據","ADDON_PULL_FAILED":"從您的帳户同步已安裝的插件失敗","REFRESH_ON_CLICK":"點擊重試","STILL_IN_THEATER":"電影還在影院上映","WATCH_IN_CINEMA":"請到您本地的影院觀看","IN_THEATER":"在影院上映","GET_TICKETS":"購票","UPCOMING_EPISODE":"下一集","UPCOMING_EPISODE_MESSAGE":"這一集即將播出","MISSING_DATE_EPISODE":"缺失的一集日期","MISSING_DATE_EPISODE_MESSAGE":"這一集可能還沒有播出","CHANNEL_NOT_SCRAPED":"這個頻道還沒有被削刮,請過幾分鐘再來。","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"將其添加到庫中,以便在可用時收到通知。","GET_NOTIFIED_WHEN_AVAILABLE":"一旦可用,您將會收到通知。","WARNING_STREAMING_SERVER":"警吿:找不到本地流媒體服務器,來自本地文件、YouTube、和BitTorrent的流媒體將不可用。","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"警吿:您的硬件可能不支持此視頻,請記住,播放可能會很慢。","PLAYER_ERROR":"糟糕,播放器錯誤","PLAYER_ERROR_LOOKSLIKE":"看起來似乎","PLAYER_ORIENTATION":"播放器方向","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"鎖定","PLAYER_ORIENTATION_SENSOR_SHORT":"傳感器","PLAYER_ORIENTATION_LANDSCAPE":"播放器方向鎖定橫向","PLAYER_ORIENTATION_SENSOR":"播放器方向自動(傳感器)","PLAYER_PLAYBACK_SPEED":"播放速度","PLAYER_PLAYBACK_ERROR":"播放錯誤,請重試","PLAYER_PLAYBACK_ERROR_UNKNOWN":"未知錯誤","PLAYER_PLAYBACK_ERROR_DEFAULT":"抱歉,{{productName}}無法播放此視頻。","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"直播","PLAYER_NEXT_VIDEO_TITLE":"下個視頻","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"關閉","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"現在觀看","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"流媒體","CASTING_TO":"投屏到","NETWORK_STATUS":"網絡狀態","STREAM_SPEED":"串流速度:","STREAM_BUFFERED":"已緩衝:","PEERS_INFO":"節點信息","PEERS_ACTIVE":"活躍:","PEERS_CONNECTED":"已連接:","PEERS_WAITING":"等待:","TRANSCODING_WARNING":"警吿:轉碼視頻。","STREAM_LOADING":"加載...","PLAYING_LOCAL":"從本地文件播放","PLAYING_CACHE":"從緩存播放","WRONG_SUBS":"字幕錯誤?","ERR_SUBS_LOADING_TITLE":"加載字幕時出錯","ERR_SUBS_LOADING":"字幕加載失敗:這可能是您正在使用的插件或網絡連接的問題","WARN_FOLLOWING_SUB_ADDONS_FAILED":"以下字幕插件失敗","ERR_CASTING_UPDATE_TITLE":"無法更新投屏設備信息:流媒體服務器可能離線","CHOOSE_DEVICE":"選擇在哪個設備上播放","NO_CAST_DEVICES":"無可用投屏設備。","NO_SETTINGS":"無可用設置。","PHONE_TABLET":"手機/平板電腦","SUBTITLES":"字幕","SUBTITLES_CHANGE":"調整字幕","SUBTITLES_CHANGE_NONE":"抱歉,這種語言沒有其他字幕。","SUBTITLES_CHANGE_ACIVE":"當前字幕#{{subtitlesDialog.activeIdx + 1}}被激活,點擊\\"繼續\\"激活字幕#{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"或者,","SUBTITLES_ADJUST_DELAY":"調整字幕延遲:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"或在播放時使用G / H鍵進行調整。","SUBTITLES_ADJUST_DELAY_TIP":"提示:您可以在播放時使用G / H鍵進行調整。","SUBTITLES_DELAY":"字幕延遲:","SUBTITLES_LOADING":"加載字幕...","SUBTITLES_UNAVAILABLE":"沒有可用的外部字幕","SUBTITLES_DISABLED":"關閉","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"季","EPISODE":"集","SPECIAL":"Special","SORT":"排序","SORT_BY":"排序按照","FILTER":"篩選","SORT_TRENDING":"熱門","SORT_RECENT":"最近","SORT_ALPHABET":"首字母","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"評分","SORT_WATCHED":"已觀看","SORT_YEAR":"年份","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"新的","New Episodes":"新劇集","New Videos":"新視頻","Recommendations":"推薦","LIBRARY_RESUME":"簡介","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"詳情","LIBRARY_RESUME_DISMISS":"清除","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"功能","DISCOVER_TOP":"熱門","DISCOVER_OSCAR":"奧斯卡獲獎作品","DISCOVER_WARNING_TITLE":"糟糕!","DISCOVER_EMPTY_CATALOG":"此插件返回空內容。","DISCOVER_ADULT_WARNING":"此內容僅對成人可見,您是否已滿18週歲?","DISCOVER_NOADDON_WARNING":"警吿:此類型沒有可用的Stremio插件,顯示已保存的項目,此處不會更新任何內容。","DISCOVER_LOAD_ERR":"內容未加載,發生錯誤。","DISCOVER_ADDON_UNINSTALLED":"此內容不再可用,您可能已卸載插件。","UNINSTALL_THIS_ADDON":"卸載此插件","ERR_ADDON_NOT_INSTALLED":"未安裝此插件,立即安裝?","DETAIL_RECEIVE_NOTIF_SERIES":"接受新劇集的通知","DETAIL_RECEIVE_NOTIF_VIDEOS":"接受新視頻的通知","SIDEBAR_SHOW_STREAMS":"顯示流媒體","RELAUNCH":"立即重新啟動!","UPGRADE":"新版本可用!升級至Stremio的最新版本","RELOAD_UI":"重新加載用户界面","MANUAL_UPDATE_TITLE":"更新您的Stremio版本","MANUAL_UPDATE_LINE1":"您運行的是一個過時的Stremio版本,這是非常不推薦的。","MANUAL_UPDATE_LINE2":"請儘快更新。","BUTTON_UPDATE_LATTER":"不是現在","BUTTON_UPDATE_NOW":"更新","ANONYMOUS_USER":"匿名用户","DONT_HAVE_ACC":"還沒有賬户?","HAVE_ACC":"已經有賬户了?","PASSWORD":"密碼","PASSWORD_CONFIRM":"確認密碼","EMAIL":"電子郵箱","FB_LOGIN":"使用Facebook登錄","FB_NOTHINGSHARED":"未經您的允許,任何內容都不會被共享","FB_NOPOST":"我們不會替您發送任何東西","OR":"或","I_ACCEPT":"我接受","I_ACCEPT_BY_CLICKING":"通過點擊上面的按鈕,我聲明我接受","TOS":"條款和條件","MUST_ACCEPT_TERMS":"您必須接受條款","PASSWORDS_NOMATCH":"密碼不匹配","SIGN_UP":"註冊","SIGN_UP_EMAIL":"使用電子郵箱註冊","CLICK_TO_SIGN_UP":"點擊此處註冊。","LOG_IN":"登錄","LOG_OUT":"註銷","EXIT_FULLSCREEN":"退出全屏模式","ENTER_FULLSCREEN":"進入全屏模式","PLAY_URL_MAGNET_LINK":"播放URL/Magnet鏈接","HELP_FEEDBACK":"幫助和反饋","TERMS_OF_SERVICE":"服務條款","PRIVACY_POLICY":"隱私政策","ABOUT_STREMIO":"關於Stremio","USER_PANEL":"用户面板","LOGIN_LABEL":"Login","GUEST_LOGIN":"訪客登錄","GUEST_LOGIN_NOTICE":"不建議訪客登錄,使用常規登錄允許Stremio同步您的庫,接受喜愛的劇集/頻道的通知。您確定要繼續嗎?","GUEST_LOGIN_NOTICE_2":"不建議訪客登錄,您將沒有同步的庫和首頁通知,這是Stremio的重要功能。您確定要繼續嗎?","CLICK_HERE":"點擊此處","WRONG_PASSWORD":"錯誤的電子郵箱或密碼,如果您忘了密碼,","SET_A_PASS":"設置密碼","RESET_PASSWORD":"重置密碼","FORGOT_PASSWORD":"忘記密碼?","EMAIL_USED_WITH_FB":"此電子郵箱與Facebook登陸一起使用。","INVALID_EMAIL":"請輸入有效的電子郵箱地址","INVALID_PASSWORD":"請輸入有效的密碼","CONN_ERR":"連接錯誤,請稍後再試。\\n\\n如果問題仍然存在,請禁用防火牆/殺毒軟件(特別是Bitdefender)。","IMPORT_FROM_GUEST":"從訪客賬户導入庫","RECEIVE_UPDATES_EMAIL":"從Stremio接受電子郵件更新","LOGIN_FAILED":"登陸失敗。","SIGNUP_FAILED":"註冊失敗。","SEARCH_FAILED":"搜索失敗","EMAIL_USED":"此電子郵箱已被使用。","WAITING_FB_LOGIN":"使用Facebook登錄...","EXTERNAL_PLAYER_TITLE":"在外部播放器中播放","EXTERNAL_REMEMBER_PLAYER":"您想記住您的選擇嗎","EXTERNAL_ALWAYS_PLAY":"是","EXTERNAL_ONLY_ONCE":"不是","BEST_FIT":"最佳","FIT_SCREEN":"適合屏幕","FILL":"填充","16:9":"16:9","4:3":"4:3","Original":"原始","INTRO_TASTE":"吿訴我們您喜歡什麼","INTRO_TASTE_LONG":"吿訴我們您想看什麼","INTRO_TASTE_PICK":"選擇{{interestsRemaining}}興趣","INTRO_TASTE_PICK_MORE":"選擇{{interestsRemaining}}更多興趣","INTRO_TASTE_HELP_US":"幫助我們瞭解更多有關您的信息。","INTRO_TASTE_CHOOSE_THESE":"選擇其中一些:","INTRO_TASTE_CHOOSE_MIN":"至少選3個類別","INTRO_TASTE_CHOOSE_MIN_ERR":"您必須至少選擇3個類別!","INTRO_TASTE_LIFESTYLE":"生活方式","INTRO_TASTE_SPORTS":"體育","INTRO_TASTE_FOOD_HEALTH":"飲食與健康","INTRO_TASTE_BEAUTY_FASHION":"美麗與時尚","INTRO_TASTE_NEWS":"新聞","INTRO_TASTE_GAMING":"遊戲","INTRO_TASTE_SCIENCE_EDU":"科學與教育","INTRO_TASTE_MUSIC":"音樂","INTRO_TASTE_TRAVEL":"旅行","INTRO_TASTE_LATE_NIGHT":"深夜秀","INTRO_TASTE_REALITY":"真人","INTRO_TASTE_COMEDY":"喜劇","INTRO_TASTE_DIY":"DIY","INTRO_TASTE_TECH":"技術","INTRO_TASTE_CINEMA":"影院","ADDON_NOT_SUPPORTED":"此平台不支持選定的插件。","ADDON_DISCLAIMER":"使用第三方插件將始終受到您的責任和您所在的司法管轄區的法律的約束。","ADDON_ACTIVATE":"激活此插件?","ADDON_REPO_ADD":"插件集合URL","ADDON_ADD":"添加","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"最新消息","BUTTON_CONTINUE":"繼續","BUTTON_ACTIVATE":"激活","BUTTON_ACTIVATED":"已激活","BUTTON_CANCEL":"取消","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"清除全部","BUTTON_VIEW_ALL":"查看全部","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"您的庫看起來是空的,看看它有多有用:)","HOW_START":"您可以從這裏開始:","LIB_EMPTY_CAL":"您的日曆顯示您庫中的劇集。","HOW_START_CAL":"下面是如何添加劇集:","LIB_EMPTY_BOARD":"主頁顯示與您的庫相關的通知&推薦。","HOW_START_BOARD_WAIT":"請在您的庫中添加一些劇集或頻道給我們幾分鐘來處理:)","HOW_START_BOARD":"下面是如何向其中添加劇集&電影:","IMPORT_FB":"從Facebook導入您喜歡的東西","IMPORT_TRAKT":"從Trakt導入媒體庫","IMPORT_DISCOVER":"從發現中找到有趣的東西","IMPORT_DISK":"導入本地磁盤上的電影或節目","PLEASE_CREATE_ACC":"請創建一個賬户以啟用庫同步&主頁。","IMPORT_DISCOVER_SIGNUP":"註冊並從發現中找到有趣的東西","IMPORT_DISK_SIGNUP":"註冊並導入本地磁盤上的電影或節目","LIB_EMPTY_CLOUD":"雲端庫","LIB_EMPTY_CLOUD_DESC":"在所有設備上同步個人雲端庫","LIB_EMPTY_EARLY":"第一時間","LIB_EMPTY_EARLY_DESC":"接收新劇集的通知","LIB_EMPTY_PERSONAL":"個性化","LIB_EMPTY_PERSONAL_DESC":"獲取個性化推薦","LIB_EMPTY_CALENDAR_DESC":"安排您的個性化觀看日曆","LIB_EMPTY_ALL":"註冊以獲取所有這些:","LIB_EMPTY_BEST":"註冊以獲得最佳的Stremio","LIB_EMPTY_OTHER":"註冊以啟用日曆和其他炫酷功能","CALENDAR_ADDED":"Stremio日曆已添加到默認桌面日曆中。","CALENDAR_ADDED_MSG":"如果這不起作用,請手動將此URL添加到日曆應用程序中","TRAKT_EXPIRED":"Trakt驗證已過期,請轉到設置並重新驗證","TRAKT_REQUIRES_LOGIN":"Trakt錯誤","TRAKT_REQUIRES_LOGIN_MSG":"您需要登錄","SETTINGS_LABEL":"設置","SETTINGS_NAV_GENERAL":"常規","SETTINGS_NAV_PLAYER":"播放器","SETTINGS_NAV_STREAMING":"流媒體","SETTINGS_NAV_SHORTCUTS":"快捷鍵","SETTINGS_SHORTCUT_RELOAD_APP":"重新加載應用程序","SETTINGS_SHORTCUT_OPEN_SETTINGS":"打開設置","SETTINGS_SHORTCUT_SWITCH_TABS":"切換標籤","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"向前循環標籤","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"向後循環標籤","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"退出/返回","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"切換全屏","SETTINGS_SHORTCUT_SHOW_CONTROLS":"顯示控件","SETTINGS_SHORTCUT_PLAY_PAUSE":"播放/暫停","SETTINGS_SHORTCUT_VOLUME_UP":"增大音量","SETTINGS_SHORTCUT_VOLUME_DOWN":"降低音量","SETTINGS_SHORTCUT_SEEK_NEXT":"尋找下一個","SETTINGS_SHORTCUT_SEEK_PREV":"尋找上一個","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"播放下一個","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"增加字幕大小","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"減小字幕大小","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"增加字幕延遲","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"減少字幕延遲","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"切換側邊欄","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"開機時啟動","SETTINGS_VLC_DEFAULT":"使用VLC播放","SETTINGS_UI_LANGUAGE":"用户界面語言","SETTINGS_FULLSCREEN_EXIT":"Esc鍵退出全屏","SETTINGS_GAMEPAD":"啟用遊戲手柄支持","SETTINGS_CLOSE_WINDOW":"關閉窗口時結束應用程序","SETTINGS_SUBTITLES_LANGUAGE":"默認字幕語言","SETTINGS_SUBTITLES_SIZE":"默認字幕大小","SETTINGS_SUBTITLES_BACKGROUND":"字幕背景","SETTINGS_SUBTITLES_COLOR":"字幕顏色","SETTINGS_SUBTITLES_COLOR_OUTLINE":"字幕輪廓顏色","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"字幕背景顏色","SETTINGS_SEEK_KEY":"方向鍵控制進度","SETTINGS_SEEK_KEY_SHIFT":"按住Shift鍵時方向鍵控制進度","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"自動播放下一集","SETTINGS_NEXT_VIDEO":"顯示播放下一集的通知","SETTINGS_NEXT_VIDEO_TRIGGER":"顯示下一集的通知:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"播放前自動調整窗口大小","SETTINGS_OVERRIDE_SERVER":"覆蓋流媒體服務器URL(高級)","SETTINGS_SERVER_URL":"流媒體服務器URL:","SETTINGS_SERVER_AVAILABLE":"流媒體服務器可用。","SETTINGS_SERVER_UNAVAILABLE":"流媒體服務器不可用。","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"流媒體HTTPS結點:","SETTINGS_USE_BETA":"始終使用最新的測試版","SETTINGS_IMPORT_FB":"從Facebook導入","SETTINGS_IMPORT_DISK":"從本地磁盤導入","SETTINGS_IMPORT_TRAKT":"從Trakt導入","SETTINGS_PAUSE_MINIMIZED":"最小化時暫停播放","SETTINGS_HWDEC":"硬件解碼加速","SETTINGS_BACKGROUND":"後台播放","SETTINGS_SUBSCRIBE_CALENDAR":"訂閲到日曆","SETTINGS_REQ_EXPORT":"請求導出數據","SETTINGS_ACC_DELETE":"請求刪除賬户","SETTINGS_CHANGE_PASSWORD":"更改密碼","SETTINGS_TOS":"服務條款","SETTINGS_SUPPORT":"聯繫支持人員","SETTING_LANGUAGE":"語言","SETTINGS_TRAKT":"Trakt自動跟蹤","SETTINGS_TRAKT_LOGOUT":"從Trakt.tv註銷","SETTINGS_SCAN_FOR_REMOTE":"掃描二維碼打開遙控器","SETTINGS_DESKTOP_NOTIFICATIONS":"桌面通知","SETTINGS_DATA_SAVER":"移動數據警吿","SETTINGS_LANGUAGE_INTERFACE":"界面","SETTINGS_LANGUAGE_SUBS":"默認字幕","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"自動選擇音軌","SETTINGS_DEFAULT_AUDIO_TRACK":"默認音軌","SETTINGS_ACCOUNT":"賬户","SETTINGS_VERSION":"版本","SETTINGS_MPV_WINDOW":"在單獨窗口中啟動播放器(高級)","SETTINGS_PLAY_IN_EXTERNAL":"總是在外部播放器中打開視頻","SETTINGS_STORAGE_BUTTON":"清除本地存儲","SETTINGS_STORAGE_MODAL_TITLE":"您確定嗎?","SETTINGS_STORAGE_MODAL_MESSAGE":"這將清除本地存儲並使您註銷","SETTINGS_HWDEC_PICKER":"選擇硬件加速解碼設置","SETTINGS_HW_AUTOMATIC":"自動","SETTINGS_HW_DISABLED":"關閉","SETTINGS_HW_ACCELERATED":"解碼加速","SETTINGS_HW_FULL":"全加速","SETTINGS_HW_LEGACY":"舊版","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"音頻","SUBSPICKER_SUBTITLES":"插件字幕","SUBSPICKER_BLACK_BACKGROUND":"使用黑色背景色","SUBSPICKER_VERTICAL_OFFSET":"垂直偏移量","SUBSPICKER_SIZE":"大小","SUBSPICKER_DELAY":"延遲","SUBSPICKER_EMBEDDED_SUBS":"內嵌字幕","MOBILE_PRIVACY_POLICY":"隱私政策","MOBILE_CRASH_REPORTING":"崩潰報吿","MOBILE_ZOOM_TO_FILL":"縮放填充屏幕","MOBILE_PASSTHROUGH":"數字音頻輸出(直通)","MOBILE_RUN_LOW_BATTERY":"電池電量低時運行","MOBILE_RUN_FOREGROUND":"作為前台服務運行","MOBILE_PERFORMANCE":"性能&穩定性","MOBILE_SERVER_ONLINE":"在線","MOBILE_SERVER_OFFLINE":"離線","MOBILE_QR_EXPIRES":"二維碼到期時間","MOBILE_LOG_INTO":"登陸到您的Stremio賬户","MOBILE_SCAN_QR":"掃描上面的二維碼或轉到","MOBILE_LINK_ACCOUNT":"鏈接賬户","MOBILE_SPEEDPICKER_CANCEL":"取消","MOBILE_SPEEDPICKER_LABEL":"選擇播放速度","MOBILE_EMPTY_LIBRARY":"您的庫為空","MOBILE_NO_ADDON_ACTIVE":"沒有活動的此類型Stremio插件。","MOBILE_ORGANIZER_WARNING":"Stremio Organizer應用程序提供的功能有限,要獲得可播放流的列表和完整的Stremio體驗,請使用Stremio桌面客户端。","MOBILE_ADDON_LOADING":"仍在加載","MOBILE_ADDONS_LOADING":"插件仍在加載","MOBILE_ADDON":"插件","MOBILE_CONFIGURE_ADDON":"配置插件","MOBILE_CONFIGURE_ADDON_LABEL":"配置插件","MOBILE_ORGANIZER_ADDONS_WARNING":"Stremio Organizer應用程序僅提供有限的插件,要獲得完整的Stremio體驗,請使用Stremio桌面客户端。","MOBILE_DISCONNECT":"斷開連接","MOBILE_LOOKING_FOR_DEVICES":"正在查找設備...","MOBILE_CAST_TO":"投屏到","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"開啟","NAVIGATION_OFF":"關閉","MARKETING_AGREE":"我同意接收Stremio的營銷通知","QUIT":"退出","CONNECTED":"已連接","AUTHENTICATE":"驗證","CACHING":"緩存","SETTINGS_CACHING_DRIVE":"緩存磁盤","ENABLE_LOCAL_FILES_ADDON":"啟用本地文件插件(需要重新啟動)","LOCAL_ADDON_NOT_ENABLED":"未啟用本地插件,單擊此處轉到設置並啟用它","ENABLE_REMOTE_HTTPS_CONN":"啟用遠程HTTPS連接","TORRENT_PROFILE":"Torrent配置","DATA_CACHING":"數據緩存","MAGNET_PARSING":"分析Magnet鏈接","January":"一月","February":"二月","March":"三月","April":"四月","May":"五月","June":"六月","July":"七月","August":"八月","September":"九月","October":"十月","November":"十一月","December":"十二月","Monday":"星期一","Tuesday":"星期二","Wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期天","Action":"動作","Comedy":"喜劇","War":"戰爭","Family":"家庭","Animation":"動畫","Adventure":"冒險","Fantasy":"幻想","Crime":"犯罪","Mystery":"神祕","Romance":"浪漫","Drama":"劇情","Horror":"恐怖","Thriller":"驚悚","Sci-Fi":"科幻","Music":"音樂","Biography":"傳記","Documentary":"紀錄","Sport":"運動","Musical":"音樂劇","Western":"西部","Film-Noir":"黑色電影","News":"新聞","History":"歷史","Game-Show":"遊戲節目","Reality-TV":"真人秀","Talk-Show":"脱口秀","Film & Entertainment":"電影與娛樂","Gaming":"遊戲","From TV":"電視","Lifestyle":"生活方式","Science & Education":"科學與教育","Cooking & Health":"烹飪與健康","Beauty & Fashion":"美麗與時尚","Sports":"體育","News & Politics":"新聞與政治","How-to & DIY":"DIY","Tech":"技術","Automotive":"汽車","Causes & Non-Profits":"事業與公益","Movies":"影視","Uk Live Tv":"英國直播電視台","Fashion":"流行","Business News Radio":"商業新聞電台","Business Tv":"商業電視","Cars & Auto":"汽車與自動化","Comedy Radio":"喜劇電台","Lifestyle Radio":"生活方式電台","News Tv":"新聞電視","Food And Wine":"食物與酒","Latino Tv":"拉丁語電視台","Shopping Tv":"購物電視台","Religion":"宗教","Kids":"兒童","Body & Soul":"身體與靈魂","Education":"教育","Indian Tv":"印度電視台","Extreme Sports":"極限運動","Middle Eastern Tv":"中東電視台","Celebrity Tv":"名人電視台","Science Tv":"科學電視台","Bikini babe":"比基尼寶貝","Outdoors":"户外","German Tv":"德國電視台","French Tv":"法國電視台","Italian Tv":"意大利電視台","Gamer Tv":"伽馬電視台","Travel":"旅行","Asian Tv":"亞洲電視台","Entertainment":"遊戲娛樂","News Radio":"新聞電台","Music Radio":"音樂電台","Language Learning":"語言學習","Science Radio":"科學電台","Tech Radio":"科技電台","Science & Technology Vod":"科技視頻點播","new video":"新視頻","new episode":"新一集","new movie":"新電影","recommended":"推薦","we recommend":"我們建議","offer of the day":"當日優惠","news":"新聞","music video":"音樂視頻","CTX_SHOW_HOTKEYS":"顯示快捷鍵","CTX_DISMISS_NOTIF":"清除通知","CTX_DISMISS_ALL":"全部清除","CTX_SHARE":"分享","CTX_COPY_SHARE_LINK":"複製分享鏈接","CTX_COPY_MAGNET_LINK":"複製Magnet鏈接","CTX_COPY_STREAM_LINK":"複製流媒體鏈接","CTX_DOWNLOAD_VIDEO":"下載此視頻","CTX_DOWNLOAD_SUBS":"下載字幕","CTX_VIEW_ON_YOUTUBE":"在YouTube上觀看","CTX_SHOW":"顯示","CTX_PLAY":"播放","CTX_PLAY_IN":"播放","CTX_PLAY_ON":"正在播放","CTX_WATCH_ON":"正在觀看","CTX_WATCH":"觀看","CTX_WATCHED":"已觀看","CTX_WATCH_BEGINNING":"從頭開始觀看","CTX_WATCH_MOBILE":"在移動設備上觀看","CTX_REWIND":"回到開頭","CTX_MARK_WATCHED":"標記為已觀看","CTX_MARK_NON_WATCHED":"標記為未觀看","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"將其餘部分標記為已觀看","CTX_UNMARK_REST":"將其餘部分標記為未觀看","CTX_RECEIVE_NEW_NOTIF":"接受新通知","CTX_REMOVE_CACHE":"從緩存中刪除","CTX_REMOVE_CACHE_EP":"從緩存中刪除集","CTX_OPEN_CONTAINING":"打開所在文件夾","CTX_REMOVE":"從庫中刪除","CTX_AVAILABLE_OFFLINE":"離線可用","CTX_PAUSED":"暫停","CTX_ALWAYS_ON_TOP":"置頂","CTX_FULLSCREEN":"全屏","CTX_WRONG_SUBS":"錯誤的字幕?","CTX_REPORT_ISSUES":"報吿問題","CTX_COPY":"複製","CTX_PASTE":"粘貼","CTX_CLEAR":"清除","CTX_CLEAR_RECENT_SEARCHES":"清除最近搜索記錄","HELLO_THERE":"您好","HOPE_YOU_ENJOY":"我們希望您喜歡Stremio,也許它已經是您最喜歡的應用之一了!","WHO_ARE_WE":"我們是誰?我們是它背後的團隊。在過去三年裏的每天,我們兩個努力工作使這個產品越來越好。","SUPPORT_US":"如果您喜歡Stremio,如果Stremio對您來説很有價值,請傳播它!","SPREAD_THE_WORD":"現在與您的朋友分享傳播關於Stremio的信息","MORE_PEOPLE":"使用Stremio的人越多,效果就越好!","SEND_A_LINK":"或發送一個鏈接到我們的網站","TIP_LOCALFILES":"提示:您可以將本地視頻文件拖放到Stremio中","ADDON_MY":"我的插件","ADDON_COMMUNITY":"社區插件","ADDON_OFFICIAL":"官方插件","ADDON_REPOS":"插件集合","ADDON_SEARCH":"搜索插件","ADDON_INSTALL":"安裝","ADDON_CONFIGURE":"配置","ADDON_UNINSTALL":"卸載","ADDON_UPGRADE":"更新","ADDON_INSTALLED":"已安裝","ADDON_INSTALLED_MSG":"插件已安裝!","ADDON_UPGRADED_MSG":"插件已更新!","ADDON_UNKNOWN":"未知","ADDON_ERR":"插件安裝錯誤!","ADDON_DISCONNECTED":"已斷開連接","ADDON_APP_MISSING":"未安裝此源的應用程序,您想現在安裝嗎?","ADDON_APP_INSTALL":"立即安裝","ADDON_PAGE":"插件頁","ADDON_TOP_CONTENT":"最好從這個插件","ADDON_PROVIDES":"這個插件會給您:","ADDON_WATCH":"立即觀看#{types}!","ADDON_WATCH_FREE":"立即免費觀看#{types}!","ADDON_ADDON":"插件","ADDON_SUPPORTED_TYPES":"支持的類型","ADDON_SUPPORTED_CATALOGS":"支持的目錄","ADDON_PROVIDES_DISCOVER":"發現中的更多#{types}","ADDON_PROVIDES_STREAMS":"觀看#{types}","ADDON_PROVIDES_STREAMS_FREE":"免費觀看#{types}","ADDON_PROVIDES_SUBTITLES":"#{types}的字幕","ADDON_CANTDETECT":"我們無法檢測到正在運行的Stremio,因此我們無法檢測您安裝了哪些插件。","ERR_NO_META":"找不到有關於此的信息","ERR_GETTING_META":"檢索有關於此的信息時出錯","ERR_CANT_PARSE_MAGNET":"無法分析Magnet","ERR_NO_MAGNET_INFOHASH":"Magnet缺少有效的Hash","ERR_NO_FILE_PATH":"沒有文件路徑無法發送請求","ERR_NO_TORRENT":"沒有Torrent返回","ERR_NO_SUPPORTERD_FILES":"找不到支持的文件","ERR_OPENING_FILES":"無法打開外部文件","ERR_INVALID_LINK":"無效鏈接","ERR_REGISTERED_ONLY":"此選項僅適用於已註冊用户。","ERR_CLIPBOARD":"無法從剪切板播放","ERR_CLIPBOARD_READ":"無法讀取此平台上的剪切板","ERR_CLIPBOARD_GENERIC":"在剪切板中找不到可播放的URL. 請將URL(例如Magnet鏈接)複製到視頻。","BOARD_CONTINUE_WATCHING":"繼續觀看","BOARD_EXPLANATION_RECOMMENDATIONS":"專門為您挑選的電影。
    這部電影是一個推薦樣例。","BOARD_EXPLANATION_EPISODES":"這裏是您最喜愛的劇集的新一集。
    將您關注的劇集添加到庫中。","BOARD_EXPLANATION_VIDEOS":"這裏是您最喜愛的頻道的新一集。
    將您關注的YouTube頻道添加到庫中。","WEBSITE_SLOGAN_WATCH":"立即觀看","WEBSITE_SLOGAN_ALL":"一站式視頻娛樂解決方案","WEBSITE_SLOGAN_NEW":"您能觀看一切","WEBSITE_SLOGAN_NEW_NEW":"自由串流","WEBSITE_WATCH_FROM":"觀看","WEBSITE_DOWNLOAD":"立即下載","WEBSITE_DOWNLOAD_FOR":"立即下載","WEBSITE_IS_DESKTOP":"Stremio是一個桌面應用程序,請在PC上打開此頁並下載","WEBSITE_DESKTOP_DEMO_VID":"桌面演示","WEBSITE_PAGE_HOME":"首頁","WEBSITE_PAGE_FEATURES":"功能","WEBSITE_PAGE_ADDONS":"插件","WEBSITE_PAGE_TECH":"技術","WEBSITE_PAGE_CREATE_ADDON":"創建插件","WEBSITE_PAGE_CONTACTS":"聯絡","WEBSITE_PAGE_BLOG":"博客","WEBSITE_TYPE_movie":"電影","WEBSITE_TYPE_series_PL":"劇集","WEBSITE_TYPE_tv":"直播電視","WEBSITE_TYPE_channel":"頻道","WEBSITE_STREMIO_WHAT_IS":"Stremio是一款幫助您管理和隨時觀看您喜愛的視頻、電影、劇集和電視頻道的應用程序","WEBSITE_FEATURES_WATCH":"立即觀看高清視頻","WEBSITE_FEATURES_WATCH_DETAIL":"點擊並播放您喜愛的電影、劇集、視頻和電視頻道。","WEBSITE_FEATURES_SUBS":"自動加載字幕","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio會自動為您的語言選擇同步字幕。","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"在電視和移動設備上播放","WEBSITE_FEATURES_CAST_DETAIL":"適用於AppleTV、Chromecast、智能電視(DLNA/UPnP)和移動設備。","WEBSITE_LIB":"享受在所有設備上同步的個人庫","WEBSITE_LIB_COLLECT":"從Stremio收集","WEBSITE_LIB_IMPORT":"從Facebook導入","WEBSITE_LIB_LOCAL":"從本地磁盤添加","WEBSITE_BOARD":"首頁 - 通知和推薦的一站式場所","WEBSITE_BOARD_RECOMMEND":"推薦電視節目","WEBSITE_BOARD_TRENDING":"流行電影","WEBSITE_BOARD_NEW":"新視頻","WEBSITE_BOARD_EPISODE":"新一集","WEBSITE_BOARD_1":"想看些有趣的東西嗎?根據您的喜好得到推薦!","WEBSITE_BOARD_2":"當您最喜愛的電視節目或YouTube頻道的新一集播出時獲得通知!","WEBSITE_BOARD_YOUTUBE":"YouTube頻道的新視頻","WEBSITE_BOARD_EPISODES":"您關注的劇集的新一集","WEBSITE_ADDONS":"內容插件","WEBSITE_TECH_DETAIL":"我們熱愛科技,我們熱愛瘋狂的科學!\\nStremio使用了以下開源技術:","WEBSITE_TECH_WCJS":"WebChimera.js允許Stremio以良好的性能播放任何視頻格式。","WEBSITE_TECH_WCJS_EXTRA":"我們是項目的核心貢獻者","WEBSITE_TECH_ELECTRON":"Electron為Stremio提供了一個創新平台。","WEBSITE_TECH_ELECTRON_EXTRA":"我們是項目貢獻者","WEBSITE_TECH_LINVODB":"一種數據庫技術,確保您的數據在任何地方登錄都受管理和可用。","WEBSITE_TECH_LINVODB_EXTRA":"內部技術","WEBSITE_CREATE_ADDON":"創建您的插件","WEBSITE_CREATE_ADDON_DETAIL":"您有提供視頻內容的服務嗎?我們將通過創建插件來幫助您從Stremio的功能中獲益。","WEBSITE_CREATE_ADDON_BENEFITS":"為Stremio創建插件的好處","WEBSITE_P2P_BEAUTY":"點對點流媒體之美","WEBSITE_P2P_1":"可靠且價格合理的全高清/4K視頻點播或流媒體直播","WEBSITE_P2P_2":"提供良好用户體驗的分銷平台","WEBSITE_P2P_3":"我們將創建一個插件來滿足您的確切需要","WEBSITE_P2P_CONTACT":"有興趣嗎?歡迎您通過聯繫我們.","WEBSITE_P2P_CONTACT_EXTRA":"我們很樂意幫助您將您的內容集成到Stremio!","WEBSITE_P2P":"偶然間出現了一種改變遊戲名稱的技術。 我們投入了大量的時間和精力來構建我們的點對點(P2P)視頻流媒體引擎,該引擎可提供出色的性能和多功能性,以適應任何用例。\\n請聯繫我們以獲取支持DRM的P2P視頻點播或實時流媒體。","WEBSITE_THOUGHTS":"我們分享的想法:","WEBSITE_SPREAD":"傳播關於Stremio的信息:","WEBSITE_CONTACT":"聯繫我們,我們很高興收到您的來信!","WEBSITE_OPENSOURCE":"有關我們的開源項目,請轉到:","WEBSITE_BITCOIN":"捐贈比特幣:","WEBSITE_FAQ":"常見問題","WEBSITE_FAQ_SHORT":"常見問題","WEBSITE_QUESTIONS":"問題","WEBSITE_TOS":"使用條款","WEBSITE_LEGAL":"法律","WEBSITE_PAGE_ABOUT":"關於","WEBSITE_PAGE_BECOME_PARTNER":"成為合作伙伴","WEBSITE_ALL_YOU_CAN_WATCH":"自由觀看\\n您想看的一切。","WEBSITE_FREEDOM_TO_STREAM":"自由串流","WEBSITE_WHAT_IS_STREMIO":"什麼是Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio是一個一站式視頻內容聚合中心。在您擁有的任何設備上發現,管理和觀看來自各種來源的視頻。","WEBSITE_WHAT_IS_STREMIO_P2":"電影、電視節目、劇集、電視直播或網絡頻道例如YouTube或Twitch.tv等,您可以在Stremio上找到所有這些內容。","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio是一個現代化的媒體中心,為您的視頻娛樂提供一站式解決方案。您可以通過易於安裝的插件發現,觀看和整理視頻內容。","WEBSITE_WHAT_IS_STREMIO_P2_V2":"電影、電視節目、直播電視或網絡頻道——在Stremio上找到所有這些。","WEBSITE_ENJOI_ON_ALL_DEVICES":"在所有媒體設備上享受","WEBSITE_DEVICES_COLLECT":"從Stremio收集","WEBSITE_DEVICES_IMPORT_FB":"從Facebook導入","WEBSITE_DEVICES_LOCAL":"從本地磁盤添加","WEBSITE_JOIN_THE_PARTY_NOW":"立即加入聚會","WEBSITE_DEVICES_ALL":"易於在所有設備上使用;","WEBSITE_EXTENDABLE_CATALOG":"可無限擴展的視頻目錄;","WEBSITE_ORGANIZE_YOUR_MEDIA":"強大的媒體管理功能;","WEBSITE_AS_SEEN_ON":"如圖所示","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"關於我們","WEBSITE_LINK_TECHNOLOGY":"技術","WEBSITE_LINK_APPS":"應用程序","WEBSITE_LINK_DOWNLOADS":"下載","WEBSITE_MORE":"更多","WEBSITE_LINK_ADDONS":"插件","WEBSITE_LINK_ADDON_SDK":"插件SDK","WEBSITE_LINK_CONTRIBUTE":"貢獻","WEBSITE_LINK_COMMUNITY":"社區","WEBSITE_LINK_BLOG":"博客","WEBSITE_MORE_MORE":"... & 更多","WEBSITE_LINK_HELP":"幫助中心","WEBSITE_LINK_CONTACTS":"業務查詢","WEBSITE_LINK_TOS":"條款和條件","WEBSITE_LINK_PRAVACY":"隱私政策","WEBSITE_SUBSCRIBE":"訂閲","WEBSITE_NEWSLETTER":"加入我們的實時通訊,瞭解精彩的內容","WEBSITE_PLACEHOLDER_EMAIL":"您的電子郵箱","WEBSITE_COMMUNITY":"社區","WEBSITE_LINK_PRAVACY_LEGAL":"隱私與法律","WEBSITE_WHY":"我們為什麼這樣做","WEBSITE_WHY_P1":"在Stremio,我們每天都工作,因為我們想解決視頻點播行業的一個重要問題。每分鐘都有這麼多的新內容發佈,幾乎不可能找到解決的方法。","WEBSITE_WHY_P2":"我們幫助人們瀏覽這個巨大的視頻娛樂世界,發現新的內容來享受。我們的應用程序彙集了電影、劇集、電視直播、網絡頻道等。我們致力於讓用户非常容易地找到他們喜歡的標題和廣播。","WEBSITE_WHY_P3":"您可以隨時在任何設備上使用我們的服務,使Stremio成為您唯一需要的視頻娛樂中心。","WEBSITE_TEAM":"團隊","WEBSITE_TEAM_P":"Stremio團隊雖小但很強大:我們10個人用X語言編寫代碼,分享軟件開發、UI和UX設計、營銷和廣吿、商業和初創企業方面的專業知識。","WEBSITE_FEATURES":"功能","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"輕鬆發現新內容","WEBSITE_FEATURES_DISCOVER_P":"輕鬆發現要觀看的新電影、電視節目、劇集和頻道。按類別、流派、評分、時間等瀏覽,或者只需鍵入一個名稱即可找到。Stremio讓尋找新的視頻內容變得輕而易舉。","WEBSITE_FEATURES_ALL_CONTENT":"一塊屏幕顯示所有視頻內容","WEBSITE_FEATURES_ALL_CONTENT_P1":"查看您未看完的電影、劇集或視頻,並繼續觀看;獲得新劇集和版本的通知;瀏覽根據您的觀看習慣獲得的推薦。","WEBSITE_FEATURES_LIBRARY":"管理您的視頻庫","WEBSITE_FEATURES_LIBRARY_P1":"只需點擊一下,即可將任何標題添加到您的Stremio庫中,並按類型、時間或字母順序整齊地排列內容。","WEBSITE_FEATURES_CALENDAR":"記錄您所觀看的一切","WEBSITE_FEATURES_CALENDAR_P1":"獲取添加到庫中的所有電影和系列的日曆可視化。導出您的Stremio日曆並同步它,這樣您就可以隨時知道新的一集或首映何時到來。","WEBSITE_FEATURES_BIG_SCREEN":"在大屏幕上欣賞您的視頻內容","WEBSITE_FEATURES_BIG_SCREEN_P1":"將您正在觀看的任何內容都投屏到另一台設備上,無論是手機、平板電腦還是電視,只需點擊一下即可。","WEBSITE_FEATURES_SOURCES":"觀看不同來源的視頻","WEBSITE_FEATURES_SOURCES_P":"安裝官方和社區插件,欣賞來自多個不同供應商的視頻。","WEBSITE_CREATE_AN_ADDON":"創建插件","WEBSITE_FEATURES_SYNC":"跨設備同步庫並恢復播放","WEBSITE_FEATURES_SYNC_P1":"使用您的帳户在所有設備上登錄,享受同步的庫、插件、播放和日曆。","WEBSITE_FEATURES_EXTENDABLE":"通過插件擴展視頻目錄","WEBSITE_FEATURES_EXTENDABLE_P1":"Stremio插件目錄提供了許多插件,可以從中安裝和觀看各種視頻內容。這包括電影、節目、電視直播、體育、新聞、播客、網絡頻道、視頻遊戲等。","WEBSITE_FEATURES_AUTO_SUBS":"自動加載字幕","WEBSITE_FEATURES_AUTO_SUBS_P1":"通過我們的字幕插件,您可以自動選擇您喜歡的語言。","WEBSITE_FEATURES_CHROMECAST":"投屏到Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"在更大的屏幕上欣賞您的視頻內容,或者將您正在觀看的內容投屏到其他設備上。","WEBSITE_FEATURES_KEEP_TRACK":"跟蹤您最喜愛的電視節目和網絡頻道","WEBSITE_FEATURES_KEEP_TRACK_P1":"獲取您最喜愛的劇集和網絡頻道的新一集的日曆可視化和通知。","WEBSITE_FEATURES_POWER_USER":"超級用户功能","WEBSITE_FEATURES_POWER_USER_P1":"在外部播放器中播放","WEBSITE_FEATURES_POWER_USER_P2":"從Torrent文件或Magnet鏈接播放","WEBSITE_FEATURES_POWER_USER_P3":"從Facebook喜愛或本地磁盤導入您的庫","WEBSITE_ADD_ONS":"插件","WEBSITE_ADD_ONS_P1":"Stremio提供的所有視頻內容都是通過插件系統獲取的,應用程序中沒有內置任何內容或內容提供商。","WEBSITE_ADD_ONS_P2":"有兩組插件可用:官方和社區插件。","WEBSITE_ADD_ONS_P3":"官方插件由Stremio開發和託管,而社區插件由我們的社區成員創建和託管。","WEBSITE_ADDONS_OFFICIAL":"官方插件","WEBSITE_ADDONS_WATCHUB":"從iTunes、Hulu、Amazon和其他英國/美國服務提供商處流式播放您喜愛的電影、劇集和節目。","WEBSITE_ADDONS_YOUTUBE":"觀看您喜愛的YouTube頻道,獲得您關注的貢獻者的新上傳通知。","WEBSITE_ADDONS_FILMON":"免費觀看直播電視、電影和社交電視。600個電視頻道,45000部免費電影,紀錄片以及更多","WEBSITE_ADDONS_OPENSUBTITLES":"多語種影視字幕,每天上傳上千個翻譯字幕。","WEBSITE_ADDONS_COMMUNITY":"社區插件","WEBSITE_ADDONS_FILMON_VOD":"觀看來自Filmon.tv的點播視頻。","WEBSITE_ADDONS_TWICH":"觀看來自Twitch.tv(電子競技行業的視頻流媒體平台)的直播。","WEBSITE_ADDONS_VODO":"觀看完全免費的獨立電影。","WEBSITE_ADDONS_NETFLIX":"觀看Netflix的電影和網劇。","WEBSITE_ADDONS_CREATE":"創建插件","WEBSITE_ADDONS_CREATE_P1":"如果您願意,您可以開發自己的插件。通過這種方式,您可以讓自己和我們的社區訪問新的視頻內容,並接觸到全球數百萬用户的新目標受眾。","WEBSITE_ADDONS_START_CREATE":"要開始,請訪問Stremio插件SDK頁面:","WEBSITE_DOWNLOADS":"下載","WEBSITE_DOWNLOADS_P1":"為了獲得最佳性能,我們建議您使用最新版本的Stremio應用程序。但是,如果出於某種原因,您想使用舊版本,可以在此處下載。","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS(限制版本)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"貢獻","WEBSITE_CONTRIBUTE_P1":"Stremio平台是開源的,您可以輕鬆地為當前沒有來源的內容創建一個插件。","WEBSITE_CONTRIBUTE_WHY":"為什麼要創建插件?","WEBSITE_CONTRIBUTE_WHY_P1":"為您的視頻內容吸引新觀眾","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio的用户羣體正在快速增長,在推出的第一年,Stremio在全球獲得了100萬用户,在該平台存在的第二年,這個數字增長到250萬。","WEBSITE_CONTRIBUTE_WHY_P3":"用插件,您可以輕鬆接觸這些觀眾並向他們分發您的視頻內容。","WEBSITE_CONTRIBUTE_ALL":"在一處觀看您喜愛的電影、視頻、劇集和頻道。","WEBSITE_CONTRIBUTE_ALL_P1":"您是Stremio上尚未提供的特定類型內容的粉絲?為它創建一個插件,在市場上最大、最易使用的娛樂中心之一欣賞您喜愛的視頻。","WEBSITE_CONTRIBUTE_ALL_P2":"除此之外,您還會得到其他志同道合的Stremio社區成員的無盡感激。","WEBSITE_CONTRIBUTE_MONETIZE":"通過插件營利,並在其幫助下賺錢","WEBSITE_CONTRIBUTE_MONETIZE_P1":"一旦您為Stremio開發了一個新的插件,您就可以通過多種不同的方式輕鬆地靠其營利。如果您正在考慮此問題,請隨時與我們聯繫","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":",我們很樂意就插件營利選項向您提供諮詢和建議。","WEBSITE_CONTRIBUTE_TRANSLATE":"成為一名志願翻譯者","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"如果您想享受不同語言的Stremio應用程序,您可以加入我們的志願翻譯者社區。他們幫助我們添加多種不同語言的Stremio版本。","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"您想開始嗎?","WEBSITE_TRANSALTE_STREMIO":"翻譯Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"官方社區","WEBSITE_COMMUNITY_OFFICIALS_P1":"成為不斷增長的Stremio社區的一部分。在社交媒體上關注我們,不要害羞地打招呼,我們喜歡聽到粉絲的聲音!","WEBSITE_COMMUNITY_UNOFFICIALS":"非官方社區","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"合作伙伴和支持者","WEBSITE_COMMUNITY_GOODIES":"Stremio特典","WEBSITE_COMMUNITY_WALLPAPERS":"壁紙","WEBSITE_COMMUNITY_ART":"社區藝術畫廊","WEBSITE_LINK_ART":"社區藝術畫廊","WEBSITE_CONTACT_US":"聯繫我們","WEBSITE_CONTACT_US_P1":"如果您有任何問題、意見或建議,請隨時通過下面的聯繫方式與我們聯繫。","WEBSITE_CONTACT_US_P2":"請記住,我們位於保加利亞,因此可能會由於時區差異而延遲處理您的問題。","WEBSITE_CONTACT_US_SUCCESS":"您的信息已發送。我們會在方便的時候儘快給您回覆。","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"請輸入有效的電子郵箱!","WEBSITE_CONTACT_US_Q_RELATED_TO":"您的問題與什麼有關?","WEBSITE_CONTACT_US_Q_OS":"您的操作系統是什麼?","WEBSITE_CONTACT_US_PH_EMAIL":"您的電子郵箱","WEBSITE_CONTACT_US_PH_MESSAGE":"短信","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"發送","WEBSITE_CONTACT_US_Q_1":"如何安裝?","WEBSITE_CONTACT_US_Q_2":"如何卸載?","WEBSITE_CONTACT_US_Q_3":"(HTML)如何製作千層麪?","WEBSITE_CONTACT_US_Q_4":"插件","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"技術","WEBSITE_TECHNOLOGY_P1":"我們熱愛科技,熱愛科學。
    這是Stremio的動力(它都是開源的)。","WEBSITE_TECHNOLOGY_P_QT":"最佳跨平台軟件開發工具。","WEBSITE_TECHNOLOGY_P_MPV":"一款免費、開源、跨平台的媒體播放器。","WEBSITE_TECHNOLOGY_P_RN":"React Native允許您僅使用JavaScript構建移動應用程序。","WEBSITE_TECHNOLOGY_P_VLC":"嵌入到應用程序中獲取多媒體的媒體框架。","WEBSITE_TECHNOLOGY_P_REALM":"Realm是一個移動平台,是SQLite和Core Data的替代品。","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js是一個開源、跨平台的JavaScript運行環境。","WEBSITE_TECHNOLOGY_P_RUST":"Rust是一種多範式系統編程語言,關注安全性,尤其是安全併發性。","WEBSITE_TECHNOLOGY_CONTRIBUTE":"為項目貢獻力量","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"您可以通過兩種方式為Stremio做貢獻,幫助我們將產品做得更好。","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"您可以通過翻譯平台來貢獻您寶貴的語言技能...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"或","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... 您可以利用您的編程技巧來創建社區插件。","WEBSITE_TRANSLATE_STREMIO":"翻譯Stremio","WEBSITE_404_OH_NO":"糟糕!您要找的頁面不在這裏...","WEBSITE_GO_HOME":"回到主頁","WEBSITE_LINK_OTHER_DOWNLOADS":"其他下載","WEBSITE_FAQ_ABR":"常見問題","WEBSITE_SUPPORT":"支持","WEBSITE_DOWNLOAD_4_0_BETA":"立即下載Stremio 4測試版","WEBSITE_GET_FOR_DESKTOP":"獲取桌面","WEBSITE_LINK_ADDON_COMPETITION":"插件比賽","WEBSITE_LINK_ART_CONTEST":"藝術比賽","WEBSITE_MY_ACCOUNT":"我的賬户","WEBSITE_MAINPAGE_FAQ_001_H1":"什麼是Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio是一個現代化的媒體中心,讓您可以自由觀看任何您想要的東西。","WEBSITE_MAINPAGE_FAQ_002_H1":"它是如何工作的?","WEBSITE_MAINPAGE_FAQ_002_P1":"一旦您在設備上安裝了Stremio並創建了一個帳户,您所要做的就是訪問插件目錄並安裝任何您想要的插件,就可以開始了!","WEBSITE_MAINPAGE_FAQ_002_P2":"之後,您可以進入“發現”或“板”部分,開始探索內容。","WEBSITE_MAINPAGE_FAQ_003_H1":"我可以在這裏看什麼?","WEBSITE_MAINPAGE_FAQ_003_P1":"很多:電影、電視節目、網絡頻道、體育、電視頻道、收聽播客等等。感謝我們的插件系統,您可以訪問各種內容。","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio是開源的嗎?","WEBSITE_MAINPAGE_FAQ_004_P1":"是的,您可以查看以下鏈接:${1}桌面應用${2}和${3}GitHub組織${4}。","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio安全嗎?","WEBSITE_MAINPAGE_FAQ_005_P1":"是:因為它是開源軟件,所以代碼可以公開審核,您可以自己查看。","WEBSITE_MAINPAGE_FAQ_006_H1":"我的隱私如何?","WEBSITE_MAINPAGE_FAQ_006_P1":"我們尊重用户隱私,除了創建和同步您的帳户所必需的最低限度外,不收集任何個人數據。","WEBSITE_MAINPAGE_FAQ_006_P2":"註冊時還有一個${1}訪客模式${2},它不需要任何數據:在這種模式下,不會調用我們的後端。然而,這是以犧牲有用的功能為代價的,比如能夠跨設備同步您的庫。","WEBSITE_MAINPAGE_FAQ_007_H1":"我可以投屏到電視嗎?","WEBSITE_MAINPAGE_FAQ_007_P1":"是的,我們支持Chromecast,您可以從桌面和移動應用程序(Android)進行強制轉換。","WEBSITE_MAINPAGE_FAQ_008_H1":"Stremio有多少插件?","WEBSITE_MAINPAGE_FAQ_008_P1":"截至2019年末,超過50個。有關更多信息,請查看我們的插件目錄。","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio是否可以擴展到插件目錄之外?","WEBSITE_MAINPAGE_FAQ_009_P1":"是的,您應該查看這些:${1}PimpMyStremio${2},${3}Reddit communities${4},${5}Stremio Downloader${6},等等。","WEBSITE_MAINPAGE_FAQ_010_H1":"Stremio支持哪些設備?","WEBSITE_MAINPAGE_FAQ_010_P1":"我們有適用於Windows、Mac和Linux的桌面應用程序。對於移動設備,我們支持Android和iOS,但請記住iOS的功能有限(不支持大多數插件)。","WEBSITE_MAINPAGE_FAQ_010_P2":"有很多基於Android的設備可以在上面運行Stremio,比如NVIDIA Shield和Amazon Fire Stick,但我們並不正式支持它們。","WEBSITE_MAINPAGE_FAQ_011_H1":"您們能為Stremio添加某些內容嗎?","WEBSITE_MAINPAGE_FAQ_011_P1":"抱歉,我們本身不提供任何內容,但是您安裝的Stremio插件越多,您可以找到的內容就越多。","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio可以播放Magnet鏈接嗎?","WEBSITE_MAINPAGE_FAQ_012_P1":"是的,它還可以播放正常的HTTP鏈接和Torrent文件(拖放)。","WEBSITE_MAINPAGE_FAQ_013_H1":"我可以下載視頻並離線觀看嗎?","WEBSITE_MAINPAGE_FAQ_013_P1":"離線可用是一項即將推出的功能,但如果您允許Stremio在設備上緩存(從“設置”面板),您可以稍後在沒有連接的情況下觀看視頻。","WEBSITE_MAINPAGE_FAQ_014_H1":"什麼都不能用,幫幫我!","WEBSITE_MAINPAGE_FAQ_014_P1":"您確定已安裝插件嗎?如果是,請與我們的${1}幫助中心${2}聯繫","WEBSITE_MAINPAGE_FAQ_015_H1":"Stremio如何維持其開發運營?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"有關更多問題,請訪問我們的${1}幫助中心${2}。","HELP_LEARN_MORE":"幫助我們瞭解更多有關您的信息。","LIFESTYLE":"生活方式","SPORTS":"體育","FOOD_HEALTH":"飲食與健康","BEAUTY_FASHION":"美麗與時尚","NEWS":"新聞","GAMING":"遊戲","SCIENCE_EDUCATION":"科學與教育","MUSIC":"音樂","TRAVEL":"旅行","LATE_NIGHT":"深夜","REALITY":"真人","COMEDY":"喜劇","DIY":"DIY","TECH":"技術","CINEMA":"影院","CONTINUE":"繼續","SLOW_LOADING":"加載緩慢?","I_GIVE_UP":"我放棄了","LEARN_MORE":"瞭解更多","POOR_SOURCE":"此源不可用或您的網絡連接不夠快","PICK_CATEGORIES_ERR":"您必須至少選擇3個類別","ADJUST_TIMING":"調整時間","ADJUST_SIZE":"調整大小","SEARCH_ANYTHING":"您可以搜索一切...","ALL_CATEGORIES":"全部","SEARCH_CATEGORIES":"電影、劇集、YouTube和電視","SEARCH_PERSONS":"演員、導演和編劇","SEARCH_PROTOCOLS":"HTTP或Magnet鏈接","SEARCH_TYPES":"IMDB/TVDB鏈接","WATCHED":"已觀看","SHOW_LESS":"顯示較少","LAST_SEARCHES":"上次搜索","CLEAR_HISTORY":"清除歷史記錄","CHOOSE_SOME":"選擇其中一些:","NO_WEB_REMOTE":"無法加載Web Remote","STREMIO_OFFLINE":"Stremio離線","STREMIO_EXPENSIVE_CONNECTION":"我們檢測到您正在使用移動數據連接,是否繼續?","USE_DATA":"使用移動數據","WARNING":"警吿","MORE_INFO":"更多信息...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"加載...","STREMIO_TV_BACK_TO_LANGUAGES":"返回語言","STREMIO_TV_REMOTE":"遠程","STREMIO_TV_GO_TO":"去往:","STREMIO_TV_OR_SCAN":"或掃描:","STREMIO_TV_ADDON_INSTRUCTIONS":"請按照説明安裝您喜歡的插件。","STREMIO_TV_LIVE_TV":"直播電視","STREMIO_TV_RESUME_WATCHING":"繼續觀看","STREMIO_TV_LOADING_BACKGROUND":"加載背景","STREMIO_TV_CHECKING_AUTHENTICATION":"正在檢測身份驗證","STREMIO_TV_LOADING_BOARD":"加載主頁","STREMIO_TV_LOGIN_HEADER_LINE_1":"我們希望用户在使用我們的軟件時有最好的個性化體驗,","STREMIO_TV_LOGIN_HEADER_LINE_2":"正是出於這個原因,我們懇請您建立和/或登錄您的賬户,","STREMIO_TV_LOGIN_FOOTER_LINE_1":"感謝您的理解,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Stremio團隊","STREMIO_TV_REMOTE_INSTRUCTIONS":"為了在您的智能手機/平板電腦/桌面使用Web Remote:","STREMIO_TV_WIFI_SETUP":"Wi-Fi設置","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle未檢測到互聯網連接。","STREMIO_TV_WIFI_DETAILS_1":"連接到:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"使用密碼:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"在瀏覽器中打開鏈接:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"默認","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"按最近觀看","STREMIO_TV_LIBRARY_SORT_NAME":"按名字","STREMIO_TV_LIBRARY_TIMES_WATCHED":"按觀看次數","STREMIO_TV_DETAILS_SEASON_NUMBER":"季${1}","STREMIO_TV_STREAMS_LOADING":"已加載${1}/${2}插件...","STREMIO_TV_STREAMS_STILL_LOADING":"${1}插件仍在加載...","STREMIO_TV_PLAYER_SETTINGS":"播放器設置","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"字幕延遲","STREMIO_TV_PLAYER_AUDIO_DELAY":"音頻延遲","STREMIO_TV_PLAYER_VIDEO_SCALING":"視頻縮放","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"不支持的流媒體源","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"打開外部鏈接失敗","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"使用ExoPlayer播放","STREMIO_TV_PLAYER_PLAY_IN_VLC":"使用libVLC player播放","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"由於播放錯誤而切換到libVLC player","STREMIO_TV_ADDONS_TITLE":"在手機或PC上使用Stremio安裝或配置插件,然後按\\"同步插件\\"","STREMIO_TV_ADDONS_SUBTITLE":"注意:確保您使用的是相同的Stremio帳户","STREMIO_TV_ADDONS_SYNC_ADDONS":"同步插件","STREMIO_TV_ADDONS_SYNC_SUCCESS":"插件成功同步","STREMIO_TV_ADDONS_SYNC_FAILED":"插件同步失敗","STREMIO_TV_META_LINK_FAILED":"打開元鏈接失敗","STREMIO_TV_CATALOG_LOADING":"目錄仍在加載...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"界面語言已更新","STREMIO_TV_SETTINGS_THEME_UPDATED":"主題已更新","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"首選語言","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"次要首選語言","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"隧道播放","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"某些設備上可能存在播放問題","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"某些視頻格式可能無法播放","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"無緩存","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"默認","STREMIO_TV_SETTINGS_PROFILE_SOFT":"慢","STREMIO_TV_SETTINGS_PROFILE_FAST":"快","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"超快","STREMIO_TV_SETTINGS_SERVER_URL":"流媒體服務器URL","STREMIO_TV_SETTINGS_SERVER_VERSION":"服務器版本","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"未知","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio版本","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"編輯服務器URL","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"輸入流媒體服務器URL","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"要閲讀Stremio的隱私政策,請訪問:","STREMIO_TV_SETTINGS_TOS_TEXT":"要閲讀Stremio的條款和條件,請訪問:","STREMIO_TV_NAV_SEARCH":"搜索","STREMIO_TV_NAV_HOME":"主頁","STREMIO_TV_NAV_DISCOVER":"發現","STREMIO_TV_NAV_LIBRARY":"庫","STREMIO_TV_NAV_MOVIES":"電影","STREMIO_TV_NAV_SERIES":"劇集","STREMIO_TV_NAV_CHANNELS":"頻道","STREMIO_TV_NAV_TV":"電視直播","STREMIO_TV_NAV_SETTINGS":"設置","STREMIO_TV_NAV_ADDONS":"插件","STREMIO_TV_LOGIN_TITLE":"鏈接賬户","STREMIO_TV_LOGIN_EXPIRES_IN":"過期日期到","STREMIO_TV_LOGIN_STEP_ONE":"掃描上方的二維碼或轉到","STREMIO_TV_LOGIN_STEP_TWO":"登錄您的Stremio帳户","STREMIO_TV_LOGIN_NEW_LINK":"請求新鏈接","STREMIO_TV_LOGIN_LINK_REFRESHED":"登錄代碼已刷新","STREMIO_TV_SEARCH_PLACEHOLDER":"輸入一些東西","STREMIO_TV_SEARCH_NO_ADDONS":"沒有為目錄請求插件!","STREMIO_TV_SEARCH_BUTTON":"搜索","STREMIO_TV_SEARCH_KEY_DEL":"刪除","STREMIO_TV_SEARCH_KEY_SPACE":"空格","STREMIO_TV_SEARCH_KEY_CLEAR":"清除","STREMIO_TV_SEARCH_HISTORY_TITLE":"搜索歷史","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"您可以搜索標題、演員、頻道...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"清除搜索歷史","STREMIO_TV_FILTERS_DESCRIPTION":"從以下過濾器中選擇一個","FILTERS":"過濾器","SETTINGS":"設置","ACCOUNT":"賬户","LOGOUT":"註銷","THEMES":"主題","PLAYBACK":"播放","PLAYBACK_SPEED":"播放速度","AUDIO_TRACKS":"音軌","VIDEOS":"視頻","SERVER":"服務器","LINKS":"鏈接","ABOUT":"關於","INTERFACE":"界面","ANIMATIONS":"動畫","STATUS":"狀態","LANGUAGE":"語言","SIZE":"大小","DELAY":"延遲","BOLD":"粗體","TEXT_COLOR":"文本顏色","OUTLINE_COLOR":"輪廓顏色","BACKGROUND_COLOR":"背景顏色","BACKGROUND_BLUR":"背景模糊","SEEK_TIME_DURATION":"尋找持續時間","AUTO_PLAY":"自動播放下一集","PLAY_NOW":"現在播放","MARK_AS_WATCHED":"標記為已觀看","MARK_AS_UNWATCHED":"標記為未觀看","REWIND_TO_BEGINNING":"倒回開始","CONTINUE_WATCHING":"繼續觀看","ALL":"全部","SECONDS":"秒","ON":"開","OFF":"關","RELOAD":"重新加載","EDIT_URL":"編輯URL","NONE":"無","EMBEDDED":"內嵌","REMOTE_SWITCH_DEVICES":"開關設備","REMOTE_VIDEOS":"視頻","REMOTE_ADJUST_TIMING":"調整時間","REMOTE_ADJUST_SIZE":"調整大小","REMOTE_COULD_NOT_BE_LOADED":"無法加載Web Remote","REMOTE_RETRY":"重試","TORRENT_PROFILE_DEFAULT":"默認","TORRENT_PROFILE_SOFT":"慢","TORRENT_PROFILE_FAST":"快","TORRENT_PROFILE_ULTRA_FAST":"超快","FAQ_001_H1":"什麼是Stremio?","FAQ_001_P1":"Stremio是專為視頻娛樂而設計的多媒體中心軟件,易於使用。Stremio允許您管理和觀看自己的電影,劇集,頻道和實況電視收藏。","FAQ_001_P2":"Stremio從本地磁盤和插件系統中收集顯示給您的內容。","FAQ_001_P3":"它還會在您感興趣的新劇集/視頻/電影播出時通知您,併為您提供電影推薦。","FAQ_02_H1":"Stremio與Kodi和Plex相比如何?","FAQ_02_P1":"我們受到這兩種軟件的啟發。但是我們有不同的目標——Stremio專門針對娛樂視頻,並通過易於使用成為其主流解決方案。","FAQ_02_P2":"Stremio將永遠不會像Kodi和Plex那樣具有可定製性和豐富的功能,但它更易於使用。只需${1}就可以獲取它,並查看${2}:)","FAQ_03_H1":"Stremio與Netflix相比如何?","FAQ_03_P1":"同樣,Netflix是我們的靈感之一。我們努力實現Netflix的用户體驗,再加上許多附加的好處。但最重要的是,我們讓您可以自由管理自己的庫,並使用我們的插件系統添加新的內容源。","FAQ_03_P2":"這使得Stremio可以無限擴展,因此當您使用Stremio時,您永遠不會侷限於Netflix決定許可的內容。例如,您可以通過Stremio觀看${1}中的內容電影電視${2}, ${3} Twitch.tv${4},${5}YouTube${6},${7}Vodo${8}甚至${9}Netflix${10}本身!","FAQ_04_H1":"Stremio與Flipboard相比如何?","FAQ_04_P1":"我們不常聽到這個問題,除非與初創企業的人交談:)","FAQ_04_P2":"Stremio是通過設計一個內容聚合器來實現的,它本質上就是視頻的Flipboard。這一點在我們的首頁部分非常明顯,它為您提供目錄和新的插曲/新的視頻通知,讓您瞭解您所關注的內容,就像Flipboard一樣。","FAQ_05_H1":"Stremio與Popcorn Time相比如何?","FAQ_05_P1":"Stremio和Popcorn Time在用户界面上很相似,因為沒有很多方法可以正確製作視頻娛樂目錄:)","FAQ_05_P2":"Popcorn Time主要集中在特定來源的流媒體上,但Stremio是不受限制的,只是一個內容聚合器,它沒有鎖定到特定的內容源。","FAQ_05_P3":"此外,我們默認不提供任何Torrent插件,因此Stremio不提供官方功能的Popcorn Time用例。","FAQ_05_P4":"另一個顯著的區別是Popcorn Time是完全開源的,而Stremio是${1}部分開源的${2}。","FAQ_06_H1":"是否要添加此電影/系列?","FAQ_06_P1":"不,對不起 :(","FAQ_06_P2":"正如大多數其他問題中提到的,Stremio本身不提供任何內容,所有內容都是通過插件系統添加的。如果您有內容請求,您可以使用播放器中的“報吿”按鈕,它將向您當前使用的插件的作者發送電子郵件。","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"能否為X創建插件?","FAQ_08_P1":"完全有可能。","FAQ_08_P2":"如果您有一個插件的想法,請在${1}office@stremio.com${2}給我們留言,但請確保您的插件想法不會侵犯任何版權或使用條款。","FAQ_08_P3":"目前,我們路線圖上的下一件事是FandangoNOW,Filmon.tv video on demand和Crunchyroll的插件。","FAQ_09_H1":"Stremio是否使用BitTorrent?","FAQ_09_P1":"是的,Stremio支持BitTorrent作為流媒體協議。您可以將其與Torrent插件一起使用,也可以將.Torrent文件拖放到Stremio中,或者將磁鐵鏈接粘貼到搜索欄中。","FAQ_09_P2":"請注意,使用BitTorrent的唯一官方插件是${1}Vodo${2},它提供獨立內容,所有內容都允許與BitTorrent一起分發。","FAQ_09_P3":"我們不支持使用任何可能導致版權侵權的第三方插件。","FAQ_10_H1":"我可以在Stremio中通過官方插件觀看什麼節目?","FAQ_10_P1":"默認情況下,您可以在Stremio與它的嵌入式播放器觀看Filmon.tv,YouTube和Vodo的內容。另外,我們還有一個Twitch.tv插件,以及其他一些插件。","FAQ_10_P2":"此組合提供以下選項:","FAQ_10_L1":"Filmon.tv上的熱門電視頻道,例如E4、BBC、Bollyworld TV","FAQ_10_L2":"YouTube上的所有內容,例如BBC News、Top Gear、Vevo、PewDiePie","FAQ_10_L3":"Vodo上的獨立電影","FAQ_10_L4":"Twitch.tv上的在線遊戲廣播","FAQ_10_P3":"此外,Guidebox和Netflix插件提供了許多內容源,它們不完全在Stremio中播放,而是重定向到給定的服務。例如,Guidebox插件將為您提供可在美國免費播放的精選電影,這些電影來自TubiTV和Crackle等服務。","FAQ_11_H1":"Stremio無法安裝,我該怎麼辦?","FAQ_11_P1":"如果您在Windows上,請嘗試${1}此替代安裝程序${2}。","FAQ_11_P2":"如果您使用的是Mac OS X,請注意,我們不支持任何比OS X Mavericks(10.9)更舊的版本。","FAQ_11_P3":"如果您使用的是Linux,請注意,我們目前只支持64位(x64)Linux。","FAQ_11_P4":"如果您仍然無法解決您的問題,請寫信給我們的${1}Facebook羣組${2}。","FAQ_12_H1":"為什麼我的殺毒軟件會報毒?Stremio安全嗎?","FAQ_12_P1":"我們向您保證Stremio是${1}100%安全的${2}。","FAQ_12_P2":"您的殺毒軟件報毒是因為我們的安裝程序中包含廣吿,一些殺毒軟件將其識別為廣吿軟件。","FAQ_12_P3":"如果您仍然不確定,可以嘗試我們的${1}替代安裝程序${2}。","FAQ_13_H1":"如何製作插件?","FAQ_13_P1":"對於初學者,我們建議您查看GitHub上的${1}插件系統模塊${2}。","FAQ_13_P2":"之後,您可以按照${1}Hello World教程${2}進行操作。","FAQ_13_P3":"如果您沒有任何編程技能,請在${1}Reddit社區${2}上發佈您的想法,並在${3}office@stremio.com${4}上與我們聯繫您的插件想法。","FAQ_14_H1":"插件是如何發佈的?","FAQ_14_P1":"當您創建一個插件和主機,並在清單中放置一個指向工作插件地址的終端節點字段時,該插件將自動發佈到我們的${1}插件目錄${2}。","FAQ_14_P2":"發生這種情況是因為Stremio插件模塊的服務器部分會自動調用我們的API來聲明插件。當我們的API驗證您的終端節點為有效的插件時,它將開始顯示在目錄中。","FAQ_15_H1":"我可以在瀏覽器中運行Stremio嗎?","FAQ_15_P1":"目前還沒有,但即將到來!","FAQ_15_P2":"如果您想看到Alpha版本,可以在這裏看到:${1}alpha4.strem.io${2}. 請記住,此Alpha版本上已禁用流式處理。我們支持Chrome、Firefox、Opera和Edge","FAQ_16_H1":"電視投屏不起作用/字幕不起作用","FAQ_16_P1":"電視投屏使用DLNA技術,這在不同的電視品牌和型號之間非常不一致。由於這個原因,我們沒有能力在每種情況下都測試它,所以它還遠遠不夠完美。儘管如此,我們仍在不斷改進,但我們無法為您提供DLNA能夠在您的電視上開始正常工作的預計時間。","FAQ_16_P2":"如果您在“投屏”菜單中看不到您的電視,請嘗試禁用網絡連接並重新啟用它(在Windows上,右鍵單擊網絡並使用“啟用/禁用”),以及重新啟動路由器、電視和PC。","FAQ_16_P3":"如果您仍然遇到問題,您可以通過將您的電視品牌和型號信息發送到${1}來幫助我們”office@stremio.com${2}。","FAQ_16_P4":"同時,我們推薦Chromecast,我們非常支持Chromecast,或者直接用HDMI線將電視與PC連接。","FAQ_17_H1":"Stremio卡死和/或崩潰,我能做什麼?","FAQ_17_P1":"首先,如果您使用的是帶有AVG殺毒軟件的Windows 7,這種組合會產生問題。問題出在AVG本身,我們這邊沒有合理的辦法解決。不幸的是,去除或禁用殺毒軟件將不起作用。唯一的解決辦法是用別的東西代替AVG","FAQ_17_P2":"如果不是這個問題,但您仍在使用Windows,請更新到最新的service pack並更新/重新安裝您的GPU驅動程序,然後重試。","FAQ_17_P3":"如果您的問題仍未解決,或者您使用的是Mac或Linux,請寫信給我們,在${1}我們的Facebook羣組${2}報吿問題的確切細節。","FAQ_18_H1":"如何製作插件?","FAQ_18_P1":"對於初學者,我們建議您查看GitHub上的${1}插件系統模塊${2}。","FAQ_18_P2":"之後,您可以按照${1}Hello World教程${2}進行操作。","FAQ_18_P3":"如果您沒有任何編程技能,請在${1}Reddit社區${2}上發佈您的想法,並在${3}上與我們聯繫您的插件想法。”office@stremio.com${4}。","FAQ_19_H1":"為什麼Stremio佔用磁盤空間?","FAQ_19_P1":"Stremio有一個本地緩存來臨時保存您流式傳輸的視頻文件。","FAQ_19_P2":"這有兩個好處:第一,它允許Stremio預先緩衝視頻,以確保流媒體更流暢。其次,它將視頻保存在本地緩存中,以便您可以繼續離線觀看。","FAQ_19_P3":"Stremio保留了多少取決於“設置”面板中的緩存設置。Stremio可能會在您的磁盤上保留到設置的數量(例如2GB),除非當前流式傳輸的視頻大於該數量,在這種情況下,必須分配足夠的存儲來保留它,直到您結束流式傳輸。","FAQ_20_H1":"緩存文件夾在哪裏?","FAQ_20_P1":"在Windows上,Stremio緩存位於您在設置中選擇的驅動器中(例如\\"E:\\\\stremio-cache\\")","FAQ_20_P2":"在MacOS上,它位於\\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"在Linux上,它位於\\"~/.stremio/stremio-cache\\"或\\"~/stremio-cache\\"","FAQ_21_H1":"我得到\\"流媒體服務器未找到\\"錯誤,我能做什麼?","FAQ_21_P1":"如果出現此錯誤,則表示以下幾點之一:","FAQ_21_P2":"1)您正試圖通過我們的${1}web版本${2}使用一個由YouTube/BitTorrent源代碼支持的插件。在這種情況下,您應該從${3}我們的網站${4}安裝我們的桌面版本","FAQ_21_P3":"2)Stremio安裝有問題。在這種情況下,請嘗試從${1}網站${2}重新安裝我們的最新桌面版本。如果這沒有幫助,請嘗試禁用殺毒軟件和防火牆,重新啟動電腦,然後重試。如果這依然不起作用,請寫信給我們的${3}Facebook羣組${4}","FAQ_22_H1":"我無法在iOS上看到/使用大多數插件","FAQ_22_P1":"由於Apple App Store條款和條件中的限制,我們限制iOS應用程序只能使用一組特定的插件。","FAQ_22_P2":"不過,請放心,將來會有更多的iOS插件,我們還可能添加一個集成,通過將iOS應用程序連接到Stremio流媒體服務器,您將可以使用所有Stremio插件。"}')},8097:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"電影","TYPE_series":"劇集","TYPE_tv":"電影片道","TYPE_channel":"頻道","TYPE_other":"其他","TYPE_movie_PL":"電影","TYPE_series_PL":"劇集","TYPE_tv_PL":"電影片道","TYPE_channel_PL":"頻道","TYPE_other_PL":"其他","TYPE_ALL":"All","VIDEO":"影片","BACK":"返回","MORE":"更多","DONE":"完成","COPY":"複製","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"發現","Board":"首頁","Library":"庫","My Library":"我的庫","Calendar":"日曆","NOTIFICATION_ONLINE":"您當前處於線上狀態","NOTIFICATION_OFFLINE":"您當前處於離線狀態","INTERNET_CONNECTION":"網路連線","STORAGE_FULL_TITLE":"警告:儲存空間已滿!","STORAGE_FULL_TEXT":"Stremio將無法儲存您的設定、首選項或登入資訊,考慮重新啟動或重新安裝Stremio。","SEARCH":"搜尋","SEARCH_NO_RESULTS":"未找到結果","SEARCH_EXPLANATION_CONTENT":"搜尋電影、劇集、YouTube和電影片道","SEARCH_EXPLANATION_PEOPLE":"搜尋演員、導演和編劇","SEARCH_PASTE_LINKS":"貼上HTTP和Magnet連結","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"新增到庫中","REMOVE_FROM_LIB":"從庫中刪除","ADDED_TO_LIB":"新增到庫中","REMOVED_FROM_LIB":"從庫中刪除","TRAILER":"預告片","WATCH_TRAILER":"觀看預告片","WATCH_NOW":"立即觀看","SHOW":"檢視","SHOW_MOVIE":"檢視電影","WATCH_RANDOM":"隨機觀看","IMDB_RATING":"IMDb評分","YEAR":"年份","DIRECTOR":"導演","WRITER":"編劇","LEAD_ACTORS":"主演","CAST":"全部演員","CREW":"全部工作人員","SHOW_MORE_CAST":"顯示更多 »","AIRED":"播出時間","SEASONS":"季","GENRE":"型別","CATALOG":"目錄","SUMMARY":"簡介","SHOW_MORE":"顯示更多","SIMILAR":"相似","UPCOMING":"即將上映","ENDED":"已完結","DURATION":"時長","FEATURED":"功能","METADATA":"元資料","CATEGORY":"類別","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"搜尋影片","SEARCH_PLACEHOLDER":"搜尋或貼上URL","ADDON":"外掛","ADDONS":"外掛","OFFICIAL":"官方","ADDONS_OFFICIAL":"官方Stremio外掛","ADDONS_POPULAR":"在您所在的地區很受歡迎","ADDON_FREE":"免費","ADDON_PEERED":"連線","ADDON_SUBSCRIPTION":"訂閱","ADDON_STREAM_GEORESTRICTED":"在您所在的地區不提供","ADDON_STREAM_OFFLINECACHE":"離線快取","ADDON_STREAM_LOCALFILE":"本地檔案","SHARE_ADDON":"分享外掛","AVAILABLE_STREAMS":"可用流媒體","NO_STREAM":"未找到流媒體","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"要獲取更多流媒體,請安裝更多外掛","STREAM_NOT_SUPPORTED":"此平臺不支援所選流媒體。","ADDON_CATALOGUE":"顯示所有外掛 »","ADDON_CATALOGUE_MORE":"安裝外掛","REPO_ADDED":"已新增儲存庫","ADDON_REPO_EXIST_ERR":"此外掛集合已存在","ADDON_REPO_ERR":"新增集合時出錯","ADDON_ADD_ERR":"新增外掛時出錯","ERR_ADDON_PROTECTED":"無法解除安裝外掛,它受到保護","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"出了一些問題——身份驗證可能失敗","ERR_NOT_COLLECTION_URL":"不是集合URL","ERR_NOT_ADDON_URL":"不是有效的外掛URL","ERR_DETECTFROMURL":"再此URL中找不到外掛/集合","ADDON_DUPLICATE_WARNING":"警告:重複的外掛","ADDON_COLLECTION_SET_FAILED":"將已安裝的外掛同步到您的賬戶失敗","SETTINGS_DATA_EXPORT":"匯出使用者資料","ADDON_PULL_FAILED":"從您的帳戶同步已安裝的外掛失敗","REFRESH_ON_CLICK":"點選重試","STILL_IN_THEATER":"電影還在影院上映","WATCH_IN_CINEMA":"請到您本地的影院觀看","IN_THEATER":"在影院上映","GET_TICKETS":"購票","UPCOMING_EPISODE":"下一集","UPCOMING_EPISODE_MESSAGE":"這一集即將播出","MISSING_DATE_EPISODE":"缺失的一集日期","MISSING_DATE_EPISODE_MESSAGE":"這一集可能還沒有播出","CHANNEL_NOT_SCRAPED":"這個頻道還沒有被削刮,請過幾分鐘再來。","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"將其新增到庫中,以便在可用時收到通知。","GET_NOTIFIED_WHEN_AVAILABLE":"一旦可用,您將會收到通知。","WARNING_STREAMING_SERVER":"警告:找不到本地流媒體伺服器,來自本地檔案、YouTube、和BitTorrent的流媒體將不可用。","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"警告:您的硬體可能不支援此影片,請記住,播放可能會很慢。","PLAYER_ERROR":"糟糕,播放器錯誤","PLAYER_ERROR_LOOKSLIKE":"看起來似乎","PLAYER_ORIENTATION":"播放器方向","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"鎖定","PLAYER_ORIENTATION_SENSOR_SHORT":"感測器","PLAYER_ORIENTATION_LANDSCAPE":"播放器方向鎖定橫向","PLAYER_ORIENTATION_SENSOR":"播放器方向自動(感測器)","PLAYER_PLAYBACK_SPEED":"播放速度","PLAYER_PLAYBACK_ERROR":"播放錯誤,請重試","PLAYER_PLAYBACK_ERROR_UNKNOWN":"未知錯誤","PLAYER_PLAYBACK_ERROR_DEFAULT":"抱歉,{{productName}}無法播放此影片。","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"直播","PLAYER_NEXT_VIDEO_TITLE":"下個影片","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"關閉","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"現在觀看","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"流媒體","CASTING_TO":"投屏到","NETWORK_STATUS":"網路狀態","STREAM_SPEED":"串流速度:","STREAM_BUFFERED":"已緩衝:","PEERS_INFO":"節點資訊","PEERS_ACTIVE":"活躍:","PEERS_CONNECTED":"已連線:","PEERS_WAITING":"等待:","TRANSCODING_WARNING":"警告:轉碼影片。","STREAM_LOADING":"載入...","PLAYING_LOCAL":"從本地檔案播放","PLAYING_CACHE":"從快取播放","WRONG_SUBS":"字幕錯誤?","ERR_SUBS_LOADING_TITLE":"載入字幕時出錯","ERR_SUBS_LOADING":"字幕載入失敗:這可能是您正在使用的外掛或網路連線的問題","WARN_FOLLOWING_SUB_ADDONS_FAILED":"以下字幕外掛失敗","ERR_CASTING_UPDATE_TITLE":"無法更新投屏裝置資訊:流媒體伺服器可能離線","CHOOSE_DEVICE":"選擇在哪個裝置上播放","NO_CAST_DEVICES":"無可用投屏裝置。","NO_SETTINGS":"無可用設定。","PHONE_TABLET":"手機/平板電腦","SUBTITLES":"字幕","SUBTITLES_CHANGE":"調整字幕","SUBTITLES_CHANGE_NONE":"抱歉,這種語言沒有其他字幕。","SUBTITLES_CHANGE_ACIVE":"當前字幕#{{subtitlesDialog.activeIdx + 1}}被啟用,點選\\"繼續\\"啟用字幕#{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"或者,","SUBTITLES_ADJUST_DELAY":"調整字幕延遲:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"或在播放時使用G / H鍵進行調整。","SUBTITLES_ADJUST_DELAY_TIP":"提示:您可以在播放時使用G / H鍵進行調整。","SUBTITLES_DELAY":"字幕延遲:","SUBTITLES_LOADING":"載入字幕...","SUBTITLES_UNAVAILABLE":"沒有可用的外部字幕","SUBTITLES_DISABLED":"關閉","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"季","EPISODE":"集","SPECIAL":"Special","SORT":"排序","SORT_BY":"排序按照","FILTER":"篩選","SORT_TRENDING":"熱門","SORT_RECENT":"最近","SORT_ALPHABET":"首字母","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"評分","SORT_WATCHED":"已觀看","SORT_YEAR":"年份","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"新的","New Episodes":"新劇集","New Videos":"新影片","Recommendations":"推薦","LIBRARY_RESUME":"簡介","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"詳情","LIBRARY_RESUME_DISMISS":"清除","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"功能","DISCOVER_TOP":"熱門","DISCOVER_OSCAR":"奧斯卡獲獎作品","DISCOVER_WARNING_TITLE":"糟糕!","DISCOVER_EMPTY_CATALOG":"此外掛返回空內容。","DISCOVER_ADULT_WARNING":"此內容僅對成人可見,您是否已滿18週歲?","DISCOVER_NOADDON_WARNING":"警告:此型別沒有可用的Stremio外掛,顯示已儲存的專案,此處不會更新任何內容。","DISCOVER_LOAD_ERR":"內容未載入,發生錯誤。","DISCOVER_ADDON_UNINSTALLED":"此內容不再可用,您可能已解除安裝外掛。","UNINSTALL_THIS_ADDON":"解除安裝此外掛","ERR_ADDON_NOT_INSTALLED":"未安裝此外掛,立即安裝?","DETAIL_RECEIVE_NOTIF_SERIES":"接受新劇集的通知","DETAIL_RECEIVE_NOTIF_VIDEOS":"接受新影片的通知","SIDEBAR_SHOW_STREAMS":"顯示流媒體","RELAUNCH":"立即重新啟動!","UPGRADE":"新版本可用!升級至Stremio的最新版本","RELOAD_UI":"重新載入使用者介面","MANUAL_UPDATE_TITLE":"更新您的Stremio版本","MANUAL_UPDATE_LINE1":"您執行的是一個過時的Stremio版本,這是非常不推薦的。","MANUAL_UPDATE_LINE2":"請儘快更新。","BUTTON_UPDATE_LATTER":"不是現在","BUTTON_UPDATE_NOW":"更新","ANONYMOUS_USER":"匿名使用者","DONT_HAVE_ACC":"還沒有賬戶?","HAVE_ACC":"已經有賬戶了?","PASSWORD":"密碼","PASSWORD_CONFIRM":"確認密碼","EMAIL":"電子郵箱","FB_LOGIN":"使用Facebook登入","FB_NOTHINGSHARED":"未經您的允許,任何內容都不會被共享","FB_NOPOST":"我們不會替您傳送任何東西","OR":"或","I_ACCEPT":"我接受","I_ACCEPT_BY_CLICKING":"透過點選上面的按鈕,我宣告我接受","TOS":"條款和條件","MUST_ACCEPT_TERMS":"您必須接受條款","PASSWORDS_NOMATCH":"密碼不匹配","SIGN_UP":"註冊","SIGN_UP_EMAIL":"使用電子郵箱註冊","CLICK_TO_SIGN_UP":"點選此處註冊。","LOG_IN":"登入","LOG_OUT":"登出","EXIT_FULLSCREEN":"退出全屏模式","ENTER_FULLSCREEN":"進入全屏模式","PLAY_URL_MAGNET_LINK":"播放URL/Magnet連結","HELP_FEEDBACK":"幫助和反饋","TERMS_OF_SERVICE":"服務條款","PRIVACY_POLICY":"隱私政策","ABOUT_STREMIO":"關於Stremio","USER_PANEL":"使用者面板","LOGIN_LABEL":"Login","GUEST_LOGIN":"訪客登入","GUEST_LOGIN_NOTICE":"不建議訪客登入,使用常規登入允許Stremio同步您的庫,接受喜愛的劇集/頻道的通知。您確定要繼續嗎?","GUEST_LOGIN_NOTICE_2":"不建議訪客登入,您將沒有同步的庫和首頁通知,這是Stremio的重要功能。您確定要繼續嗎?","CLICK_HERE":"點選此處","WRONG_PASSWORD":"錯誤的電子郵箱或密碼,如果您忘了密碼,","SET_A_PASS":"設定密碼","RESET_PASSWORD":"重置密碼","FORGOT_PASSWORD":"忘記密碼?","EMAIL_USED_WITH_FB":"此電子郵箱與Facebook登陸一起使用。","INVALID_EMAIL":"請輸入有效的電子郵箱地址","INVALID_PASSWORD":"請輸入有效的密碼","CONN_ERR":"連線錯誤,請稍後再試。\\n\\n如果問題仍然存在,請禁用防火牆/防毒軟體(特別是Bitdefender)。","IMPORT_FROM_GUEST":"從訪客賬戶匯入庫","RECEIVE_UPDATES_EMAIL":"從Stremio接受電子郵件更新","LOGIN_FAILED":"登陸失敗。","SIGNUP_FAILED":"註冊失敗。","SEARCH_FAILED":"搜尋失敗","EMAIL_USED":"此電子郵箱已被使用。","WAITING_FB_LOGIN":"使用Facebook登入...","EXTERNAL_PLAYER_TITLE":"在外部播放器中播放","EXTERNAL_REMEMBER_PLAYER":"您想記住您的選擇嗎","EXTERNAL_ALWAYS_PLAY":"是","EXTERNAL_ONLY_ONCE":"不是","BEST_FIT":"最佳","FIT_SCREEN":"適合螢幕","FILL":"填充","16:9":"16:9","4:3":"4:3","Original":"原始","INTRO_TASTE":"告訴我們您喜歡什麼","INTRO_TASTE_LONG":"告訴我們您想看什麼","INTRO_TASTE_PICK":"選擇{{interestsRemaining}}興趣","INTRO_TASTE_PICK_MORE":"選擇{{interestsRemaining}}更多興趣","INTRO_TASTE_HELP_US":"幫助我們瞭解更多有關您的資訊。","INTRO_TASTE_CHOOSE_THESE":"選擇其中一些:","INTRO_TASTE_CHOOSE_MIN":"至少選3個類別","INTRO_TASTE_CHOOSE_MIN_ERR":"您必須至少選擇3個類別!","INTRO_TASTE_LIFESTYLE":"生活方式","INTRO_TASTE_SPORTS":"體育","INTRO_TASTE_FOOD_HEALTH":"飲食與健康","INTRO_TASTE_BEAUTY_FASHION":"美麗與時尚","INTRO_TASTE_NEWS":"新聞","INTRO_TASTE_GAMING":"遊戲","INTRO_TASTE_SCIENCE_EDU":"科學與教育","INTRO_TASTE_MUSIC":"音樂","INTRO_TASTE_TRAVEL":"旅行","INTRO_TASTE_LATE_NIGHT":"深夜秀","INTRO_TASTE_REALITY":"真人","INTRO_TASTE_COMEDY":"喜劇","INTRO_TASTE_DIY":"DIY","INTRO_TASTE_TECH":"技術","INTRO_TASTE_CINEMA":"影院","ADDON_NOT_SUPPORTED":"此平臺不支援選定的外掛。","ADDON_DISCLAIMER":"使用第三方外掛將始終受到您的責任和您所在的司法管轄區的法律的約束。","ADDON_ACTIVATE":"啟用此外掛?","ADDON_REPO_ADD":"外掛集合URL","ADDON_ADD":"新增","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"最新訊息","BUTTON_CONTINUE":"繼續","BUTTON_ACTIVATE":"啟用","BUTTON_ACTIVATED":"已啟用","BUTTON_CANCEL":"取消","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"清除全部","BUTTON_VIEW_ALL":"檢視全部","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"您的庫看起來是空的,看看它有多有用:)","HOW_START":"您可以從這裡開始:","LIB_EMPTY_CAL":"您的日曆顯示您庫中的劇集。","HOW_START_CAL":"下面是如何新增劇集:","LIB_EMPTY_BOARD":"主頁顯示與您的庫相關的通知&推薦。","HOW_START_BOARD_WAIT":"請在您的庫中新增一些劇集或頻道給我們幾分鐘來處理:)","HOW_START_BOARD":"下面是如何向其中新增劇集&電影:","IMPORT_FB":"從Facebook匯入您喜歡的東西","IMPORT_TRAKT":"從Trakt匯入媒體庫","IMPORT_DISCOVER":"從發現中找到有趣的東西","IMPORT_DISK":"匯入本地磁碟上的電影或節目","PLEASE_CREATE_ACC":"請建立一個賬戶以啟用庫同步&主頁。","IMPORT_DISCOVER_SIGNUP":"註冊並從發現中找到有趣的東西","IMPORT_DISK_SIGNUP":"註冊並匯入本地磁碟上的電影或節目","LIB_EMPTY_CLOUD":"雲端庫","LIB_EMPTY_CLOUD_DESC":"在所有裝置上同步個人雲端庫","LIB_EMPTY_EARLY":"第一時間","LIB_EMPTY_EARLY_DESC":"接收新劇集的通知","LIB_EMPTY_PERSONAL":"個性化","LIB_EMPTY_PERSONAL_DESC":"獲取個性化推薦","LIB_EMPTY_CALENDAR_DESC":"安排您的個性化觀看日曆","LIB_EMPTY_ALL":"註冊以獲取所有這些:","LIB_EMPTY_BEST":"註冊以獲得最佳的Stremio","LIB_EMPTY_OTHER":"註冊以啟用日曆和其他炫酷功能","CALENDAR_ADDED":"Stremio日曆已新增到預設桌面日曆中。","CALENDAR_ADDED_MSG":"如果這不起作用,請手動將此URL新增到日曆應用程式中","TRAKT_EXPIRED":"Trakt驗證已過期,請轉到設定並重新驗證","TRAKT_REQUIRES_LOGIN":"Trakt錯誤","TRAKT_REQUIRES_LOGIN_MSG":"您需要登入","SETTINGS_LABEL":"設定","SETTINGS_NAV_GENERAL":"常規","SETTINGS_NAV_PLAYER":"播放器","SETTINGS_NAV_STREAMING":"流媒體","SETTINGS_NAV_SHORTCUTS":"快捷鍵","SETTINGS_SHORTCUT_RELOAD_APP":"重新載入應用程式","SETTINGS_SHORTCUT_OPEN_SETTINGS":"開啟設定","SETTINGS_SHORTCUT_SWITCH_TABS":"切換標籤","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"向前迴圈標籤","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"向後迴圈標籤","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"退出/返回","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"切換全屏","SETTINGS_SHORTCUT_SHOW_CONTROLS":"顯示控制元件","SETTINGS_SHORTCUT_PLAY_PAUSE":"播放/暫停","SETTINGS_SHORTCUT_VOLUME_UP":"增大音量","SETTINGS_SHORTCUT_VOLUME_DOWN":"降低音量","SETTINGS_SHORTCUT_SEEK_NEXT":"尋找下一個","SETTINGS_SHORTCUT_SEEK_PREV":"尋找上一個","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"播放下一個","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"增加字幕大小","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"減小字幕大小","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"增加字幕延遲","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"減少字幕延遲","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"切換側邊欄","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"開機時啟動","SETTINGS_VLC_DEFAULT":"使用VLC播放","SETTINGS_UI_LANGUAGE":"使用者介面語言","SETTINGS_FULLSCREEN_EXIT":"Esc鍵退出全屏","SETTINGS_GAMEPAD":"啟用遊戲手柄支援","SETTINGS_CLOSE_WINDOW":"關閉視窗時結束應用程式","SETTINGS_SUBTITLES_LANGUAGE":"預設字幕語言","SETTINGS_SUBTITLES_SIZE":"預設字幕大小","SETTINGS_SUBTITLES_BACKGROUND":"字幕背景","SETTINGS_SUBTITLES_COLOR":"字幕顏色","SETTINGS_SUBTITLES_COLOR_OUTLINE":"字幕輪廓顏色","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"字幕背景顏色","SETTINGS_SEEK_KEY":"方向鍵控制進度","SETTINGS_SEEK_KEY_SHIFT":"按住Shift鍵時方向鍵控制進度","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"自動播放下一集","SETTINGS_NEXT_VIDEO":"顯示播放下一集的通知","SETTINGS_NEXT_VIDEO_TRIGGER":"顯示下一集的通知:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"播放前自動調整視窗大小","SETTINGS_OVERRIDE_SERVER":"覆蓋流媒體伺服器URL(高階)","SETTINGS_SERVER_URL":"流媒體伺服器URL:","SETTINGS_SERVER_AVAILABLE":"流媒體伺服器可用。","SETTINGS_SERVER_UNAVAILABLE":"流媒體伺服器不可用。","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"流媒體HTTPS結點:","SETTINGS_USE_BETA":"始終使用最新的測試版","SETTINGS_IMPORT_FB":"從Facebook匯入","SETTINGS_IMPORT_DISK":"從本地磁碟匯入","SETTINGS_IMPORT_TRAKT":"從Trakt匯入","SETTINGS_PAUSE_MINIMIZED":"最小化時暫停播放","SETTINGS_HWDEC":"硬體解碼加速","SETTINGS_BACKGROUND":"後臺播放","SETTINGS_SUBSCRIBE_CALENDAR":"訂閱到日曆","SETTINGS_REQ_EXPORT":"請求匯出資料","SETTINGS_ACC_DELETE":"請求刪除賬戶","SETTINGS_CHANGE_PASSWORD":"更改密碼","SETTINGS_TOS":"服務條款","SETTINGS_SUPPORT":"聯絡支援人員","SETTING_LANGUAGE":"語言","SETTINGS_TRAKT":"Trakt自動跟蹤","SETTINGS_TRAKT_LOGOUT":"從Trakt.tv登出","SETTINGS_SCAN_FOR_REMOTE":"掃描二維碼開啟遙控器","SETTINGS_DESKTOP_NOTIFICATIONS":"桌面通知","SETTINGS_DATA_SAVER":"移動資料警告","SETTINGS_LANGUAGE_INTERFACE":"介面","SETTINGS_LANGUAGE_SUBS":"預設字幕","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"自動選擇音軌","SETTINGS_DEFAULT_AUDIO_TRACK":"預設音軌","SETTINGS_ACCOUNT":"賬戶","SETTINGS_VERSION":"版本","SETTINGS_MPV_WINDOW":"在單獨視窗中啟動播放器(高階)","SETTINGS_PLAY_IN_EXTERNAL":"總是在外部播放器中開啟影片","SETTINGS_STORAGE_BUTTON":"清除本地儲存","SETTINGS_STORAGE_MODAL_TITLE":"您確定嗎?","SETTINGS_STORAGE_MODAL_MESSAGE":"這將清除本地儲存並使您登出","SETTINGS_HWDEC_PICKER":"選擇硬體加速解碼設定","SETTINGS_HW_AUTOMATIC":"自動","SETTINGS_HW_DISABLED":"關閉","SETTINGS_HW_ACCELERATED":"解碼加速","SETTINGS_HW_FULL":"全加速","SETTINGS_HW_LEGACY":"舊版","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"音訊","SUBSPICKER_SUBTITLES":"外掛字幕","SUBSPICKER_BLACK_BACKGROUND":"使用黑色背景色","SUBSPICKER_VERTICAL_OFFSET":"垂直偏移量","SUBSPICKER_SIZE":"大小","SUBSPICKER_DELAY":"延遲","SUBSPICKER_EMBEDDED_SUBS":"內嵌字幕","MOBILE_PRIVACY_POLICY":"隱私政策","MOBILE_CRASH_REPORTING":"崩潰報告","MOBILE_ZOOM_TO_FILL":"縮放填充螢幕","MOBILE_PASSTHROUGH":"數字音訊輸出(直通)","MOBILE_RUN_LOW_BATTERY":"電池電量低時執行","MOBILE_RUN_FOREGROUND":"作為前臺服務執行","MOBILE_PERFORMANCE":"效能&穩定性","MOBILE_SERVER_ONLINE":"線上","MOBILE_SERVER_OFFLINE":"離線","MOBILE_QR_EXPIRES":"二維碼到期時間","MOBILE_LOG_INTO":"登陸到您的Stremio賬戶","MOBILE_SCAN_QR":"掃描上面的二維碼或轉到","MOBILE_LINK_ACCOUNT":"連結賬戶","MOBILE_SPEEDPICKER_CANCEL":"取消","MOBILE_SPEEDPICKER_LABEL":"選擇播放速度","MOBILE_EMPTY_LIBRARY":"您的庫為空","MOBILE_NO_ADDON_ACTIVE":"沒有活動的此型別Stremio外掛。","MOBILE_ORGANIZER_WARNING":"Stremio Organizer應用程式提供的功能有限,要獲得可播放流的列表和完整的Stremio體驗,請使用Stremio桌面客戶端。","MOBILE_ADDON_LOADING":"仍在載入","MOBILE_ADDONS_LOADING":"外掛仍在載入","MOBILE_ADDON":"外掛","MOBILE_CONFIGURE_ADDON":"配置外掛","MOBILE_CONFIGURE_ADDON_LABEL":"配置外掛","MOBILE_ORGANIZER_ADDONS_WARNING":"Stremio Organizer應用程式僅提供有限的外掛,要獲得完整的Stremio體驗,請使用Stremio桌面客戶端。","MOBILE_DISCONNECT":"斷開連線","MOBILE_LOOKING_FOR_DEVICES":"正在查詢裝置...","MOBILE_CAST_TO":"投屏到","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"開啟","NAVIGATION_OFF":"關閉","MARKETING_AGREE":"我同意接收Stremio的營銷通知","QUIT":"退出","CONNECTED":"已連線","AUTHENTICATE":"驗證","CACHING":"快取","SETTINGS_CACHING_DRIVE":"快取磁碟","ENABLE_LOCAL_FILES_ADDON":"啟用本地檔案外掛(需要重新啟動)","LOCAL_ADDON_NOT_ENABLED":"未啟用本地外掛,單擊此處轉到設定並啟用它","ENABLE_REMOTE_HTTPS_CONN":"啟用遠端HTTPS連線","TORRENT_PROFILE":"Torrent配置","DATA_CACHING":"資料快取","MAGNET_PARSING":"分析Magnet連結","January":"一月","February":"二月","March":"三月","April":"四月","May":"五月","June":"六月","July":"七月","August":"八月","September":"九月","October":"十月","November":"十一月","December":"十二月","Monday":"星期一","Tuesday":"星期二","Wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期天","Action":"動作","Comedy":"喜劇","War":"戰爭","Family":"家庭","Animation":"動畫","Adventure":"冒險","Fantasy":"幻想","Crime":"犯罪","Mystery":"神祕","Romance":"浪漫","Drama":"劇情","Horror":"恐怖","Thriller":"驚悚","Sci-Fi":"科幻","Music":"音樂","Biography":"傳記","Documentary":"紀錄","Sport":"運動","Musical":"音樂劇","Western":"西部","Film-Noir":"黑色電影","News":"新聞","History":"歷史","Game-Show":"遊戲節目","Reality-TV":"真人秀","Talk-Show":"脫口秀","Film & Entertainment":"電影與娛樂","Gaming":"遊戲","From TV":"電視","Lifestyle":"生活方式","Science & Education":"科學與教育","Cooking & Health":"烹飪與健康","Beauty & Fashion":"美麗與時尚","Sports":"體育","News & Politics":"新聞與政治","How-to & DIY":"DIY","Tech":"技術","Automotive":"汽車","Causes & Non-Profits":"事業與公益","Movies":"影視","Uk Live Tv":"英國直播電視臺","Fashion":"流行","Business News Radio":"商業新聞電臺","Business Tv":"商業電視","Cars & Auto":"汽車與自動化","Comedy Radio":"喜劇電臺","Lifestyle Radio":"生活方式電臺","News Tv":"新聞電視","Food And Wine":"食物與酒","Latino Tv":"拉丁語電視臺","Shopping Tv":"購物電視臺","Religion":"宗教","Kids":"兒童","Body & Soul":"身體與靈魂","Education":"教育","Indian Tv":"印度電視臺","Extreme Sports":"極限運動","Middle Eastern Tv":"中東電視臺","Celebrity Tv":"名人電視臺","Science Tv":"科學電視臺","Bikini babe":"比基尼寶貝","Outdoors":"戶外","German Tv":"德國電視臺","French Tv":"法國電視臺","Italian Tv":"義大利電視臺","Gamer Tv":"伽馬電視臺","Travel":"旅行","Asian Tv":"亞洲電視臺","Entertainment":"遊戲娛樂","News Radio":"新聞電臺","Music Radio":"音樂電臺","Language Learning":"語言學習","Science Radio":"科學電臺","Tech Radio":"科技電臺","Science & Technology Vod":"科技影片點播","new video":"新影片","new episode":"新一集","new movie":"新電影","recommended":"推薦","we recommend":"我們建議","offer of the day":"當日優惠","news":"新聞","music video":"音樂影片","CTX_SHOW_HOTKEYS":"顯示快捷鍵","CTX_DISMISS_NOTIF":"清除通知","CTX_DISMISS_ALL":"全部清除","CTX_SHARE":"分享","CTX_COPY_SHARE_LINK":"複製分享連結","CTX_COPY_MAGNET_LINK":"複製Magnet連結","CTX_COPY_STREAM_LINK":"複製流媒體連結","CTX_DOWNLOAD_VIDEO":"下載此影片","CTX_DOWNLOAD_SUBS":"下載字幕","CTX_VIEW_ON_YOUTUBE":"在YouTube上觀看","CTX_SHOW":"顯示","CTX_PLAY":"播放","CTX_PLAY_IN":"播放","CTX_PLAY_ON":"正在播放","CTX_WATCH_ON":"正在觀看","CTX_WATCH":"觀看","CTX_WATCHED":"已觀看","CTX_WATCH_BEGINNING":"從頭開始觀看","CTX_WATCH_MOBILE":"在移動裝置上觀看","CTX_REWIND":"回到開頭","CTX_MARK_WATCHED":"標記為已觀看","CTX_MARK_NON_WATCHED":"標記為未觀看","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"將其餘部分標記為已觀看","CTX_UNMARK_REST":"將其餘部分標記為未觀看","CTX_RECEIVE_NEW_NOTIF":"接受新通知","CTX_REMOVE_CACHE":"從快取中刪除","CTX_REMOVE_CACHE_EP":"從快取中刪除集","CTX_OPEN_CONTAINING":"開啟所在資料夾","CTX_REMOVE":"從庫中刪除","CTX_AVAILABLE_OFFLINE":"離線可用","CTX_PAUSED":"暫停","CTX_ALWAYS_ON_TOP":"置頂","CTX_FULLSCREEN":"全屏","CTX_WRONG_SUBS":"錯誤的字幕?","CTX_REPORT_ISSUES":"報告問題","CTX_COPY":"複製","CTX_PASTE":"貼上","CTX_CLEAR":"清除","CTX_CLEAR_RECENT_SEARCHES":"清除最近搜尋記錄","HELLO_THERE":"您好","HOPE_YOU_ENJOY":"我們希望您喜歡Stremio,也許它已經是您最喜歡的應用之一了!","WHO_ARE_WE":"我們是誰?我們是它背後的團隊。在過去三年裡的每天,我們兩個努力工作使這個產品越來越好。","SUPPORT_US":"如果您喜歡Stremio,如果Stremio對您來說很有價值,請傳播它!","SPREAD_THE_WORD":"現在與您的朋友分享傳播關於Stremio的資訊","MORE_PEOPLE":"使用Stremio的人越多,效果就越好!","SEND_A_LINK":"或傳送一個連結到我們的網站","TIP_LOCALFILES":"提示:您可以將本地影片檔案拖放到Stremio中","ADDON_MY":"我的外掛","ADDON_COMMUNITY":"社群外掛","ADDON_OFFICIAL":"官方外掛","ADDON_REPOS":"外掛集合","ADDON_SEARCH":"搜尋外掛","ADDON_INSTALL":"安裝","ADDON_CONFIGURE":"配置","ADDON_UNINSTALL":"解除安裝","ADDON_UPGRADE":"更新","ADDON_INSTALLED":"已安裝","ADDON_INSTALLED_MSG":"外掛已安裝!","ADDON_UPGRADED_MSG":"外掛已更新!","ADDON_UNKNOWN":"未知","ADDON_ERR":"外掛安裝錯誤!","ADDON_DISCONNECTED":"已斷開連線","ADDON_APP_MISSING":"未安裝此源的應用程式,您想現在安裝嗎?","ADDON_APP_INSTALL":"立即安裝","ADDON_PAGE":"外掛頁","ADDON_TOP_CONTENT":"最好從這個外掛","ADDON_PROVIDES":"這個外掛會給您:","ADDON_WATCH":"立即觀看#{types}!","ADDON_WATCH_FREE":"立即免費觀看#{types}!","ADDON_ADDON":"外掛","ADDON_SUPPORTED_TYPES":"支援的型別","ADDON_SUPPORTED_CATALOGS":"支援的目錄","ADDON_PROVIDES_DISCOVER":"發現中的更多#{types}","ADDON_PROVIDES_STREAMS":"觀看#{types}","ADDON_PROVIDES_STREAMS_FREE":"免費觀看#{types}","ADDON_PROVIDES_SUBTITLES":"#{types}的字幕","ADDON_CANTDETECT":"我們無法檢測到正在執行的Stremio,因此我們無法檢測您安裝了哪些外掛。","ERR_NO_META":"找不到有關於此的資訊","ERR_GETTING_META":"檢索有關於此的資訊時出錯","ERR_CANT_PARSE_MAGNET":"無法分析Magnet","ERR_NO_MAGNET_INFOHASH":"Magnet缺少有效的Hash","ERR_NO_FILE_PATH":"沒有檔案路徑無法傳送請求","ERR_NO_TORRENT":"沒有Torrent返回","ERR_NO_SUPPORTERD_FILES":"找不到支援的檔案","ERR_OPENING_FILES":"無法開啟外部檔案","ERR_INVALID_LINK":"無效連結","ERR_REGISTERED_ONLY":"此選項僅適用於已註冊使用者。","ERR_CLIPBOARD":"無法從剪下板播放","ERR_CLIPBOARD_READ":"無法讀取此平臺上的剪下板","ERR_CLIPBOARD_GENERIC":"在剪下板中找不到可播放的URL. 請將URL(例如Magnet連結)複製到影片。","BOARD_CONTINUE_WATCHING":"繼續觀看","BOARD_EXPLANATION_RECOMMENDATIONS":"專門為您挑選的電影。
    這部電影是一個推薦樣例。","BOARD_EXPLANATION_EPISODES":"這裡是您最喜愛的劇集的新一集。
    將您關注的劇集新增到庫中。","BOARD_EXPLANATION_VIDEOS":"這裡是您最喜愛的頻道的新一集。
    將您關注的YouTube頻道新增到庫中。","WEBSITE_SLOGAN_WATCH":"立即觀看","WEBSITE_SLOGAN_ALL":"一站式影片娛樂解決方案","WEBSITE_SLOGAN_NEW":"您能觀看一切","WEBSITE_SLOGAN_NEW_NEW":"自由串流","WEBSITE_WATCH_FROM":"觀看","WEBSITE_DOWNLOAD":"立即下載","WEBSITE_DOWNLOAD_FOR":"立即下載","WEBSITE_IS_DESKTOP":"Stremio是一個桌面應用程式,請在PC上開啟此頁並下載","WEBSITE_DESKTOP_DEMO_VID":"桌面演示","WEBSITE_PAGE_HOME":"首頁","WEBSITE_PAGE_FEATURES":"功能","WEBSITE_PAGE_ADDONS":"外掛","WEBSITE_PAGE_TECH":"技術","WEBSITE_PAGE_CREATE_ADDON":"建立外掛","WEBSITE_PAGE_CONTACTS":"聯絡","WEBSITE_PAGE_BLOG":"部落格","WEBSITE_TYPE_movie":"電影","WEBSITE_TYPE_series_PL":"劇集","WEBSITE_TYPE_tv":"直播電視","WEBSITE_TYPE_channel":"頻道","WEBSITE_STREMIO_WHAT_IS":"Stremio是一款幫助您管理和隨時觀看您喜愛的影片、電影、劇集和電影片道的應用程式","WEBSITE_FEATURES_WATCH":"立即觀看高畫質影片","WEBSITE_FEATURES_WATCH_DETAIL":"點選並播放您喜愛的電影、劇集、影片和電影片道。","WEBSITE_FEATURES_SUBS":"自動載入字幕","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio會自動為您的語言選擇同步字幕。","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"在電視和移動裝置上播放","WEBSITE_FEATURES_CAST_DETAIL":"適用於AppleTV、Chromecast、智慧電視(DLNA/UPnP)和移動裝置。","WEBSITE_LIB":"享受在所有裝置上同步的個人庫","WEBSITE_LIB_COLLECT":"從Stremio收集","WEBSITE_LIB_IMPORT":"從Facebook匯入","WEBSITE_LIB_LOCAL":"從本地磁碟新增","WEBSITE_BOARD":"首頁 - 通知和推薦的一站式場所","WEBSITE_BOARD_RECOMMEND":"推薦電視節目","WEBSITE_BOARD_TRENDING":"流行電影","WEBSITE_BOARD_NEW":"新影片","WEBSITE_BOARD_EPISODE":"新一集","WEBSITE_BOARD_1":"想看些有趣的東西嗎?根據您的喜好得到推薦!","WEBSITE_BOARD_2":"當您最喜愛的電視節目或YouTube頻道的新一集播出時獲得通知!","WEBSITE_BOARD_YOUTUBE":"YouTube頻道的新影片","WEBSITE_BOARD_EPISODES":"您關注的劇集的新一集","WEBSITE_ADDONS":"內容外掛","WEBSITE_TECH_DETAIL":"我們熱愛科技,我們熱愛瘋狂的科學!\\nStremio使用了以下開源技術:","WEBSITE_TECH_WCJS":"WebChimera.js允許Stremio以良好的效能播放任何影片格式。","WEBSITE_TECH_WCJS_EXTRA":"我們是專案的核心貢獻者","WEBSITE_TECH_ELECTRON":"Electron為Stremio提供了一個創新平臺。","WEBSITE_TECH_ELECTRON_EXTRA":"我們是專案貢獻者","WEBSITE_TECH_LINVODB":"一種資料庫技術,確保您的資料在任何地方登入都受管理和可用。","WEBSITE_TECH_LINVODB_EXTRA":"內部技術","WEBSITE_CREATE_ADDON":"建立您的外掛","WEBSITE_CREATE_ADDON_DETAIL":"您有提供影片內容的服務嗎?我們將透過建立外掛來幫助您從Stremio的功能中獲益。","WEBSITE_CREATE_ADDON_BENEFITS":"為Stremio建立外掛的好處","WEBSITE_P2P_BEAUTY":"點對點流媒體之美","WEBSITE_P2P_1":"可靠且價格合理的全高畫質/4K影片點播或流媒體直播","WEBSITE_P2P_2":"提供良好使用者體驗的分銷平臺","WEBSITE_P2P_3":"我們將建立一個外掛來滿足您的確切需要","WEBSITE_P2P_CONTACT":"有興趣嗎?歡迎您透過聯絡我們.","WEBSITE_P2P_CONTACT_EXTRA":"我們很樂意幫助您將您的內容整合到Stremio!","WEBSITE_P2P":"偶然間出現了一種改變遊戲名稱的技術。 我們投入了大量的時間和精力來構建我們的點對點(P2P)影片流媒體引擎,該引擎可提供出色的效能和多功能性,以適應任何用例。\\n請聯絡我們以獲取支援DRM的P2P影片點播或實時流媒體。","WEBSITE_THOUGHTS":"我們分享的想法:","WEBSITE_SPREAD":"傳播關於Stremio的資訊:","WEBSITE_CONTACT":"聯絡我們,我們很高興收到您的來信!","WEBSITE_OPENSOURCE":"有關我們的開源專案,請轉到:","WEBSITE_BITCOIN":"捐贈比特幣:","WEBSITE_FAQ":"常見問題","WEBSITE_FAQ_SHORT":"常見問題","WEBSITE_QUESTIONS":"問題","WEBSITE_TOS":"使用條款","WEBSITE_LEGAL":"法律","WEBSITE_PAGE_ABOUT":"關於","WEBSITE_PAGE_BECOME_PARTNER":"成為合作伙伴","WEBSITE_ALL_YOU_CAN_WATCH":"自由觀看\\n您想看的一切。","WEBSITE_FREEDOM_TO_STREAM":"自由串流","WEBSITE_WHAT_IS_STREMIO":"什麼是Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio是一個一站式影片內容聚合中心。在您擁有的任何裝置上發現,管理和觀看來自各種來源的影片。","WEBSITE_WHAT_IS_STREMIO_P2":"電影、電視節目、劇集、電視直播或網路頻道例如YouTube或Twitch.tv等,您可以在Stremio上找到所有這些內容。","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio是一個現代化的媒體中心,為您的影片娛樂提供一站式解決方案。您可以透過易於安裝的外掛發現,觀看和整理影片內容。","WEBSITE_WHAT_IS_STREMIO_P2_V2":"電影、電視節目、直播電視或網路頻道——在Stremio上找到所有這些。","WEBSITE_ENJOI_ON_ALL_DEVICES":"在所有媒體裝置上享受","WEBSITE_DEVICES_COLLECT":"從Stremio收集","WEBSITE_DEVICES_IMPORT_FB":"從Facebook匯入","WEBSITE_DEVICES_LOCAL":"從本地磁碟新增","WEBSITE_JOIN_THE_PARTY_NOW":"立即加入聚會","WEBSITE_DEVICES_ALL":"易於在所有裝置上使用;","WEBSITE_EXTENDABLE_CATALOG":"可無限擴充套件的影片目錄;","WEBSITE_ORGANIZE_YOUR_MEDIA":"強大的媒體管理功能;","WEBSITE_AS_SEEN_ON":"如圖所示","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"關於我們","WEBSITE_LINK_TECHNOLOGY":"技術","WEBSITE_LINK_APPS":"應用程式","WEBSITE_LINK_DOWNLOADS":"下載","WEBSITE_MORE":"更多","WEBSITE_LINK_ADDONS":"外掛","WEBSITE_LINK_ADDON_SDK":"外掛SDK","WEBSITE_LINK_CONTRIBUTE":"貢獻","WEBSITE_LINK_COMMUNITY":"社群","WEBSITE_LINK_BLOG":"部落格","WEBSITE_MORE_MORE":"... & 更多","WEBSITE_LINK_HELP":"幫助中心","WEBSITE_LINK_CONTACTS":"業務查詢","WEBSITE_LINK_TOS":"條款和條件","WEBSITE_LINK_PRAVACY":"隱私政策","WEBSITE_SUBSCRIBE":"訂閱","WEBSITE_NEWSLETTER":"加入我們的實時通訊,瞭解精彩的內容","WEBSITE_PLACEHOLDER_EMAIL":"您的電子郵箱","WEBSITE_COMMUNITY":"社群","WEBSITE_LINK_PRAVACY_LEGAL":"隱私與法律","WEBSITE_WHY":"我們為什麼這樣做","WEBSITE_WHY_P1":"在Stremio,我們每天都工作,因為我們想解決影片點播行業的一個重要問題。每分鐘都有這麼多的新內容釋出,幾乎不可能找到解決的方法。","WEBSITE_WHY_P2":"我們幫助人們瀏覽這個巨大的影片娛樂世界,發現新的內容來享受。我們的應用程式彙集了電影、劇集、電視直播、網路頻道等。我們致力於讓使用者非常容易地找到他們喜歡的標題和廣播。","WEBSITE_WHY_P3":"您可以隨時在任何裝置上使用我們的服務,使Stremio成為您唯一需要的影片娛樂中心。","WEBSITE_TEAM":"團隊","WEBSITE_TEAM_P":"Stremio團隊雖小但很強大:我們10個人用X語言編寫程式碼,分享軟體開發、UI和UX設計、營銷和廣告、商業和初創企業方面的專業知識。","WEBSITE_FEATURES":"功能","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"輕鬆發現新內容","WEBSITE_FEATURES_DISCOVER_P":"輕鬆發現要觀看的新電影、電視節目、劇集和頻道。按類別、流派、評分、時間等瀏覽,或者只需鍵入一個名稱即可找到。Stremio讓尋找新的影片內容變得輕而易舉。","WEBSITE_FEATURES_ALL_CONTENT":"一塊螢幕顯示所有影片內容","WEBSITE_FEATURES_ALL_CONTENT_P1":"檢視您未看完的電影、劇集或影片,並繼續觀看;獲得新劇集和版本的通知;瀏覽根據您的觀看習慣獲得的推薦。","WEBSITE_FEATURES_LIBRARY":"管理您的影片庫","WEBSITE_FEATURES_LIBRARY_P1":"只需點選一下,即可將任何標題新增到您的Stremio庫中,並按型別、時間或字母順序整齊地排列內容。","WEBSITE_FEATURES_CALENDAR":"記錄您所觀看的一切","WEBSITE_FEATURES_CALENDAR_P1":"獲取新增到庫中的所有電影和系列的日曆視覺化。匯出您的Stremio日曆並同步它,這樣您就可以隨時知道新的一集或首映何時到來。","WEBSITE_FEATURES_BIG_SCREEN":"在大螢幕上欣賞您的影片內容","WEBSITE_FEATURES_BIG_SCREEN_P1":"將您正在觀看的任何內容都投屏到另一臺裝置上,無論是手機、平板電腦還是電視,只需點選一下即可。","WEBSITE_FEATURES_SOURCES":"觀看不同來源的影片","WEBSITE_FEATURES_SOURCES_P":"安裝官方和社群外掛,欣賞來自多個不同供應商的影片。","WEBSITE_CREATE_AN_ADDON":"建立外掛","WEBSITE_FEATURES_SYNC":"跨裝置同步庫並恢復播放","WEBSITE_FEATURES_SYNC_P1":"使用您的帳戶在所有裝置上登入,享受同步的庫、外掛、播放和日曆。","WEBSITE_FEATURES_EXTENDABLE":"透過外掛擴充套件影片目錄","WEBSITE_FEATURES_EXTENDABLE_P1":"Stremio外掛目錄提供了許多外掛,可以從中安裝和觀看各種影片內容。這包括電影、節目、電視直播、體育、新聞、播客、網路頻道、影片遊戲等。","WEBSITE_FEATURES_AUTO_SUBS":"自動載入字幕","WEBSITE_FEATURES_AUTO_SUBS_P1":"透過我們的字幕外掛,您可以自動選擇您喜歡的語言。","WEBSITE_FEATURES_CHROMECAST":"投屏到Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"在更大的螢幕上欣賞您的影片內容,或者將您正在觀看的內容投屏到其他裝置上。","WEBSITE_FEATURES_KEEP_TRACK":"跟蹤您最喜愛的電視節目和網路頻道","WEBSITE_FEATURES_KEEP_TRACK_P1":"獲取您最喜愛的劇集和網路頻道的新一集的日曆視覺化和通知。","WEBSITE_FEATURES_POWER_USER":"超級使用者功能","WEBSITE_FEATURES_POWER_USER_P1":"在外部播放器中播放","WEBSITE_FEATURES_POWER_USER_P2":"從Torrent檔案或Magnet連結播放","WEBSITE_FEATURES_POWER_USER_P3":"從Facebook喜愛或本地磁碟匯入您的庫","WEBSITE_ADD_ONS":"外掛","WEBSITE_ADD_ONS_P1":"Stremio提供的所有影片內容都是透過外掛系統獲取的,應用程式中沒有內建任何內容或內容提供商。","WEBSITE_ADD_ONS_P2":"有兩組外掛可用:官方和社群外掛。","WEBSITE_ADD_ONS_P3":"官方外掛由Stremio開發和託管,而社群外掛由我們的社群成員建立和託管。","WEBSITE_ADDONS_OFFICIAL":"官方外掛","WEBSITE_ADDONS_WATCHUB":"從iTunes、Hulu、Amazon和其他英國/美國服務提供商處流式播放您喜愛的電影、劇集和節目。","WEBSITE_ADDONS_YOUTUBE":"觀看您喜愛的YouTube頻道,獲得您關注的貢獻者的新上傳通知。","WEBSITE_ADDONS_FILMON":"免費觀看直播電視、電影和社交電視。600個電影片道,45000部免費電影,紀錄片以及更多","WEBSITE_ADDONS_OPENSUBTITLES":"多語種影視字幕,每天上傳上千個翻譯字幕。","WEBSITE_ADDONS_COMMUNITY":"社群外掛","WEBSITE_ADDONS_FILMON_VOD":"觀看來自Filmon.tv的點播影片。","WEBSITE_ADDONS_TWICH":"觀看來自Twitch.tv(電子競技行業的影片流媒體平臺)的直播。","WEBSITE_ADDONS_VODO":"觀看完全免費的獨立電影。","WEBSITE_ADDONS_NETFLIX":"觀看Netflix的電影和網劇。","WEBSITE_ADDONS_CREATE":"建立外掛","WEBSITE_ADDONS_CREATE_P1":"如果您願意,您可以開發自己的外掛。透過這種方式,您可以讓自己和我們的社群訪問新的影片內容,並接觸到全球數百萬使用者的新目標受眾。","WEBSITE_ADDONS_START_CREATE":"要開始,請訪問Stremio外掛SDK頁面:","WEBSITE_DOWNLOADS":"下載","WEBSITE_DOWNLOADS_P1":"為了獲得最佳效能,我們建議您使用最新版本的Stremio應用程式。但是,如果出於某種原因,您想使用舊版本,可以在此處下載。","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS(限制版本)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"貢獻","WEBSITE_CONTRIBUTE_P1":"Stremio平臺是開源的,您可以輕鬆地為當前沒有來源的內容建立一個外掛。","WEBSITE_CONTRIBUTE_WHY":"為什麼要建立外掛?","WEBSITE_CONTRIBUTE_WHY_P1":"為您的影片內容吸引新觀眾","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio的使用者群體正在快速增長,在推出的第一年,Stremio在全球獲得了100萬用戶,在該平臺存在的第二年,這個數字增長到250萬。","WEBSITE_CONTRIBUTE_WHY_P3":"用外掛,您可以輕鬆接觸這些觀眾並向他們分發您的影片內容。","WEBSITE_CONTRIBUTE_ALL":"在一處觀看您喜愛的電影、影片、劇集和頻道。","WEBSITE_CONTRIBUTE_ALL_P1":"您是Stremio上尚未提供的特定型別內容的粉絲?為它建立一個外掛,在市場上最大、最易使用的娛樂中心之一欣賞您喜愛的影片。","WEBSITE_CONTRIBUTE_ALL_P2":"除此之外,您還會得到其他志同道合的Stremio社群成員的無盡感激。","WEBSITE_CONTRIBUTE_MONETIZE":"透過外掛營利,並在其幫助下賺錢","WEBSITE_CONTRIBUTE_MONETIZE_P1":"一旦您為Stremio開發了一個新的外掛,您就可以透過多種不同的方式輕鬆地靠其營利。如果您正在考慮此問題,請隨時與我們聯絡","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":",我們很樂意就外掛營利選項向您提供諮詢和建議。","WEBSITE_CONTRIBUTE_TRANSLATE":"成為一名志願翻譯者","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"如果您想享受不同語言的Stremio應用程式,您可以加入我們的志願翻譯者社群。他們幫助我們新增多種不同語言的Stremio版本。","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"您想開始嗎?","WEBSITE_TRANSALTE_STREMIO":"翻譯Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"官方社群","WEBSITE_COMMUNITY_OFFICIALS_P1":"成為不斷增長的Stremio社群的一部分。在社交媒體上關注我們,不要害羞地打招呼,我們喜歡聽到粉絲的聲音!","WEBSITE_COMMUNITY_UNOFFICIALS":"非官方社群","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"合作伙伴和支持者","WEBSITE_COMMUNITY_GOODIES":"Stremio特典","WEBSITE_COMMUNITY_WALLPAPERS":"桌布","WEBSITE_COMMUNITY_ART":"社群藝術畫廊","WEBSITE_LINK_ART":"社群藝術畫廊","WEBSITE_CONTACT_US":"聯絡我們","WEBSITE_CONTACT_US_P1":"如果您有任何問題、意見或建議,請隨時透過下面的聯絡方式與我們聯絡。","WEBSITE_CONTACT_US_P2":"請記住,我們位於保加利亞,因此可能會由於時區差異而延遲處理您的問題。","WEBSITE_CONTACT_US_SUCCESS":"您的資訊已傳送。我們會在方便的時候儘快給您回覆。","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"請輸入有效的電子郵箱!","WEBSITE_CONTACT_US_Q_RELATED_TO":"您的問題與什麼有關?","WEBSITE_CONTACT_US_Q_OS":"您的作業系統是什麼?","WEBSITE_CONTACT_US_PH_EMAIL":"您的電子郵箱","WEBSITE_CONTACT_US_PH_MESSAGE":"簡訊","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"傳送","WEBSITE_CONTACT_US_Q_1":"如何安裝?","WEBSITE_CONTACT_US_Q_2":"如何解除安裝?","WEBSITE_CONTACT_US_Q_3":"(HTML)如何製作千層麵?","WEBSITE_CONTACT_US_Q_4":"外掛","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"技術","WEBSITE_TECHNOLOGY_P1":"我們熱愛科技,熱愛科學。
    這是Stremio的動力(它都是開源的)。","WEBSITE_TECHNOLOGY_P_QT":"最佳跨平臺軟體開發工具。","WEBSITE_TECHNOLOGY_P_MPV":"一款免費、開源、跨平臺的媒體播放器。","WEBSITE_TECHNOLOGY_P_RN":"React Native允許您僅使用JavaScript構建移動應用程式。","WEBSITE_TECHNOLOGY_P_VLC":"嵌入到應用程式中獲取多媒體的媒體框架。","WEBSITE_TECHNOLOGY_P_REALM":"Realm是一個移動平臺,是SQLite和Core Data的替代品。","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js是一個開源、跨平臺的JavaScript執行環境。","WEBSITE_TECHNOLOGY_P_RUST":"Rust是一種多正規化系統程式語言,關注安全性,尤其是安全併發性。","WEBSITE_TECHNOLOGY_CONTRIBUTE":"為專案貢獻力量","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"您可以透過兩種方式為Stremio做貢獻,幫助我們將產品做得更好。","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"您可以透過翻譯平臺來貢獻您寶貴的語言技能...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"或","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... 您可以利用您的程式設計技巧來建立社群外掛。","WEBSITE_TRANSLATE_STREMIO":"翻譯Stremio","WEBSITE_404_OH_NO":"糟糕!您要找的頁面不在這裡...","WEBSITE_GO_HOME":"回到主頁","WEBSITE_LINK_OTHER_DOWNLOADS":"其他下載","WEBSITE_FAQ_ABR":"常見問題","WEBSITE_SUPPORT":"支援","WEBSITE_DOWNLOAD_4_0_BETA":"立即下載Stremio 4測試版","WEBSITE_GET_FOR_DESKTOP":"獲取桌面","WEBSITE_LINK_ADDON_COMPETITION":"外掛比賽","WEBSITE_LINK_ART_CONTEST":"藝術比賽","WEBSITE_MY_ACCOUNT":"我的賬戶","WEBSITE_MAINPAGE_FAQ_001_H1":"什麼是Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio是一個現代化的媒體中心,讓您可以自由觀看任何您想要的東西。","WEBSITE_MAINPAGE_FAQ_002_H1":"它是如何工作的?","WEBSITE_MAINPAGE_FAQ_002_P1":"一旦您在裝置上安裝了Stremio並建立了一個帳戶,您所要做的就是訪問外掛目錄並安裝任何您想要的外掛,就可以開始了!","WEBSITE_MAINPAGE_FAQ_002_P2":"之後,您可以進入“發現”或“板”部分,開始探索內容。","WEBSITE_MAINPAGE_FAQ_003_H1":"我可以在這裡看什麼?","WEBSITE_MAINPAGE_FAQ_003_P1":"很多:電影、電視節目、網路頻道、體育、電影片道、收聽播客等等。感謝我們的外掛系統,您可以訪問各種內容。","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio是開源的嗎?","WEBSITE_MAINPAGE_FAQ_004_P1":"是的,您可以檢視以下連結:${1}桌面應用${2}和${3}GitHub組織${4}。","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio安全嗎?","WEBSITE_MAINPAGE_FAQ_005_P1":"是:因為它是開源軟體,所以程式碼可以公開稽核,您可以自己檢視。","WEBSITE_MAINPAGE_FAQ_006_H1":"我的隱私如何?","WEBSITE_MAINPAGE_FAQ_006_P1":"我們尊重使用者隱私,除了建立和同步您的帳戶所必需的最低限度外,不收集任何個人資料。","WEBSITE_MAINPAGE_FAQ_006_P2":"註冊時還有一個${1}訪客模式${2},它不需要任何資料:在這種模式下,不會呼叫我們的後端。然而,這是以犧牲有用的功能為代價的,比如能夠跨裝置同步您的庫。","WEBSITE_MAINPAGE_FAQ_007_H1":"我可以投屏到電視嗎?","WEBSITE_MAINPAGE_FAQ_007_P1":"是的,我們支援Chromecast,您可以從桌面和移動應用程式(Android)進行強制轉換。","WEBSITE_MAINPAGE_FAQ_008_H1":"Stremio有多少外掛?","WEBSITE_MAINPAGE_FAQ_008_P1":"截至2019年末,超過50個。有關更多資訊,請檢視我們的外掛目錄。","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio是否可以擴充套件到外掛目錄之外?","WEBSITE_MAINPAGE_FAQ_009_P1":"是的,您應該檢視這些:${1}PimpMyStremio${2},${3}Reddit communities${4},${5}Stremio Downloader${6},等等。","WEBSITE_MAINPAGE_FAQ_010_H1":"Stremio支援哪些裝置?","WEBSITE_MAINPAGE_FAQ_010_P1":"我們有適用於Windows、Mac和Linux的桌面應用程式。對於移動裝置,我們支援Android和iOS,但請記住iOS的功能有限(不支援大多數外掛)。","WEBSITE_MAINPAGE_FAQ_010_P2":"有很多基於Android的裝置可以在上面執行Stremio,比如NVIDIA Shield和Amazon Fire Stick,但我們並不正式支援它們。","WEBSITE_MAINPAGE_FAQ_011_H1":"您們能為Stremio新增某些內容嗎?","WEBSITE_MAINPAGE_FAQ_011_P1":"抱歉,我們本身不提供任何內容,但是您安裝的Stremio外掛越多,您可以找到的內容就越多。","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio可以播放Magnet連結嗎?","WEBSITE_MAINPAGE_FAQ_012_P1":"是的,它還可以播放正常的HTTP連結和Torrent檔案(拖放)。","WEBSITE_MAINPAGE_FAQ_013_H1":"我可以下載影片並離線觀看嗎?","WEBSITE_MAINPAGE_FAQ_013_P1":"離線可用是一項即將推出的功能,但如果您允許Stremio在裝置上快取(從“設定”面板),您可以稍後在沒有連線的情況下觀看影片。","WEBSITE_MAINPAGE_FAQ_014_H1":"什麼都不能用,幫幫我!","WEBSITE_MAINPAGE_FAQ_014_P1":"您確定已安裝外掛嗎?如果是,請與我們的${1}幫助中心${2}聯絡","WEBSITE_MAINPAGE_FAQ_015_H1":"Stremio如何維持其開發運營?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"有關更多問題,請訪問我們的${1}幫助中心${2}。","HELP_LEARN_MORE":"幫助我們瞭解更多有關您的資訊。","LIFESTYLE":"生活方式","SPORTS":"體育","FOOD_HEALTH":"飲食與健康","BEAUTY_FASHION":"美麗與時尚","NEWS":"新聞","GAMING":"遊戲","SCIENCE_EDUCATION":"科學與教育","MUSIC":"音樂","TRAVEL":"旅行","LATE_NIGHT":"深夜","REALITY":"真人","COMEDY":"喜劇","DIY":"DIY","TECH":"技術","CINEMA":"影院","CONTINUE":"繼續","SLOW_LOADING":"載入緩慢?","I_GIVE_UP":"我放棄了","LEARN_MORE":"瞭解更多","POOR_SOURCE":"此源不可用或您的網路連線不夠快","PICK_CATEGORIES_ERR":"您必須至少選擇3個類別","ADJUST_TIMING":"調整時間","ADJUST_SIZE":"調整大小","SEARCH_ANYTHING":"您可以搜尋一切...","ALL_CATEGORIES":"全部","SEARCH_CATEGORIES":"電影、劇集、YouTube和電視","SEARCH_PERSONS":"演員、導演和編劇","SEARCH_PROTOCOLS":"HTTP或Magnet連結","SEARCH_TYPES":"IMDB/TVDB連結","WATCHED":"已觀看","SHOW_LESS":"顯示較少","LAST_SEARCHES":"上次搜尋","CLEAR_HISTORY":"清除歷史記錄","CHOOSE_SOME":"選擇其中一些:","NO_WEB_REMOTE":"無法載入Web Remote","STREMIO_OFFLINE":"Stremio離線","STREMIO_EXPENSIVE_CONNECTION":"我們檢測到您正在使用移動資料連線,是否繼續?","USE_DATA":"使用移動資料","WARNING":"警告","MORE_INFO":"更多資訊...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"載入...","STREMIO_TV_BACK_TO_LANGUAGES":"返回語言","STREMIO_TV_REMOTE":"遠端","STREMIO_TV_GO_TO":"去往:","STREMIO_TV_OR_SCAN":"或掃描:","STREMIO_TV_ADDON_INSTRUCTIONS":"請按照說明安裝您喜歡的外掛。","STREMIO_TV_LIVE_TV":"直播電視","STREMIO_TV_RESUME_WATCHING":"繼續觀看","STREMIO_TV_LOADING_BACKGROUND":"載入背景","STREMIO_TV_CHECKING_AUTHENTICATION":"正在檢測身份驗證","STREMIO_TV_LOADING_BOARD":"載入主頁","STREMIO_TV_LOGIN_HEADER_LINE_1":"我們希望使用者在使用我們的軟體時有最好的個性化體驗,","STREMIO_TV_LOGIN_HEADER_LINE_2":"正是出於這個原因,我們懇請您建立和/或登入您的賬戶,","STREMIO_TV_LOGIN_FOOTER_LINE_1":"感謝您的理解,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Stremio團隊","STREMIO_TV_REMOTE_INSTRUCTIONS":"為了在您的智慧手機/平板電腦/桌面使用Web Remote:","STREMIO_TV_WIFI_SETUP":"Wi-Fi設定","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle未檢測到網際網路連線。","STREMIO_TV_WIFI_DETAILS_1":"連線到:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"使用密碼:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"在瀏覽器中開啟連結:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"預設","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"按最近觀看","STREMIO_TV_LIBRARY_SORT_NAME":"按名字","STREMIO_TV_LIBRARY_TIMES_WATCHED":"按觀看次數","STREMIO_TV_DETAILS_SEASON_NUMBER":"季${1}","STREMIO_TV_STREAMS_LOADING":"已載入${1}/${2}外掛...","STREMIO_TV_STREAMS_STILL_LOADING":"${1}外掛仍在載入...","STREMIO_TV_PLAYER_SETTINGS":"播放器設定","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"字幕延遲","STREMIO_TV_PLAYER_AUDIO_DELAY":"音訊延遲","STREMIO_TV_PLAYER_VIDEO_SCALING":"影片縮放","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"不支援的流媒體源","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"開啟外部連結失敗","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"使用ExoPlayer播放","STREMIO_TV_PLAYER_PLAY_IN_VLC":"使用libVLC player播放","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"由於播放錯誤而切換到libVLC player","STREMIO_TV_ADDONS_TITLE":"在手機或PC上使用Stremio安裝或配置外掛,然後按\\"同步外掛\\"","STREMIO_TV_ADDONS_SUBTITLE":"注意:確保您使用的是相同的Stremio帳戶","STREMIO_TV_ADDONS_SYNC_ADDONS":"同步外掛","STREMIO_TV_ADDONS_SYNC_SUCCESS":"外掛成功同步","STREMIO_TV_ADDONS_SYNC_FAILED":"外掛同步失敗","STREMIO_TV_META_LINK_FAILED":"開啟元連結失敗","STREMIO_TV_CATALOG_LOADING":"目錄仍在載入...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"介面語言已更新","STREMIO_TV_SETTINGS_THEME_UPDATED":"主題已更新","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"首選語言","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"次要首選語言","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"隧道播放","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"某些裝置上可能存在播放問題","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"某些影片格式可能無法播放","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"無快取","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"預設","STREMIO_TV_SETTINGS_PROFILE_SOFT":"慢","STREMIO_TV_SETTINGS_PROFILE_FAST":"快","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"超快","STREMIO_TV_SETTINGS_SERVER_URL":"流媒體伺服器URL","STREMIO_TV_SETTINGS_SERVER_VERSION":"伺服器版本","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"未知","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio版本","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"編輯伺服器URL","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"輸入流媒體伺服器URL","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"要閱讀Stremio的隱私政策,請訪問:","STREMIO_TV_SETTINGS_TOS_TEXT":"要閱讀Stremio的條款和條件,請訪問:","STREMIO_TV_NAV_SEARCH":"搜尋","STREMIO_TV_NAV_HOME":"主頁","STREMIO_TV_NAV_DISCOVER":"發現","STREMIO_TV_NAV_LIBRARY":"庫","STREMIO_TV_NAV_MOVIES":"電影","STREMIO_TV_NAV_SERIES":"劇集","STREMIO_TV_NAV_CHANNELS":"頻道","STREMIO_TV_NAV_TV":"電視直播","STREMIO_TV_NAV_SETTINGS":"設定","STREMIO_TV_NAV_ADDONS":"外掛","STREMIO_TV_LOGIN_TITLE":"連結賬戶","STREMIO_TV_LOGIN_EXPIRES_IN":"過期日期到","STREMIO_TV_LOGIN_STEP_ONE":"掃描上方的二維碼或轉到","STREMIO_TV_LOGIN_STEP_TWO":"登入您的Stremio帳戶","STREMIO_TV_LOGIN_NEW_LINK":"請求新連結","STREMIO_TV_LOGIN_LINK_REFRESHED":"登入程式碼已重新整理","STREMIO_TV_SEARCH_PLACEHOLDER":"輸入一些東西","STREMIO_TV_SEARCH_NO_ADDONS":"沒有為目錄請求外掛!","STREMIO_TV_SEARCH_BUTTON":"搜尋","STREMIO_TV_SEARCH_KEY_DEL":"刪除","STREMIO_TV_SEARCH_KEY_SPACE":"空格","STREMIO_TV_SEARCH_KEY_CLEAR":"清除","STREMIO_TV_SEARCH_HISTORY_TITLE":"搜尋歷史","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"您可以搜尋標題、演員、頻道...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"清除搜尋歷史","STREMIO_TV_FILTERS_DESCRIPTION":"從以下過濾器中選擇一個","FILTERS":"過濾器","SETTINGS":"設定","ACCOUNT":"賬戶","LOGOUT":"登出","THEMES":"主題","PLAYBACK":"播放","PLAYBACK_SPEED":"播放速度","AUDIO_TRACKS":"音軌","VIDEOS":"影片","SERVER":"伺服器","LINKS":"連結","ABOUT":"關於","INTERFACE":"介面","ANIMATIONS":"動畫","STATUS":"狀態","LANGUAGE":"語言","SIZE":"大小","DELAY":"延遲","BOLD":"粗體","TEXT_COLOR":"文字顏色","OUTLINE_COLOR":"輪廓顏色","BACKGROUND_COLOR":"背景顏色","BACKGROUND_BLUR":"背景模糊","SEEK_TIME_DURATION":"尋找持續時間","AUTO_PLAY":"自動播放下一集","PLAY_NOW":"現在播放","MARK_AS_WATCHED":"標記為已觀看","MARK_AS_UNWATCHED":"標記為未觀看","REWIND_TO_BEGINNING":"倒回開始","CONTINUE_WATCHING":"繼續觀看","ALL":"全部","SECONDS":"秒","ON":"開","OFF":"關","RELOAD":"重新載入","EDIT_URL":"編輯URL","NONE":"無","EMBEDDED":"內嵌","REMOTE_SWITCH_DEVICES":"開關裝置","REMOTE_VIDEOS":"影片","REMOTE_ADJUST_TIMING":"調整時間","REMOTE_ADJUST_SIZE":"調整大小","REMOTE_COULD_NOT_BE_LOADED":"無法載入Web Remote","REMOTE_RETRY":"重試","TORRENT_PROFILE_DEFAULT":"預設","TORRENT_PROFILE_SOFT":"慢","TORRENT_PROFILE_FAST":"快","TORRENT_PROFILE_ULTRA_FAST":"超快","FAQ_001_H1":"什麼是Stremio?","FAQ_001_P1":"Stremio是專為影片娛樂而設計的多媒體中心軟體,易於使用。Stremio允許您管理和觀看自己的電影,劇集,頻道和實況電視收藏。","FAQ_001_P2":"Stremio從本地磁碟和外掛系統中收集顯示給您的內容。","FAQ_001_P3":"它還會在您感興趣的新劇集/影片/電影播出時通知您,併為您提供電影推薦。","FAQ_02_H1":"Stremio與Kodi和Plex相比如何?","FAQ_02_P1":"我們受到這兩種軟體的啟發。但是我們有不同的目標——Stremio專門針對娛樂影片,並透過易於使用成為其主流解決方案。","FAQ_02_P2":"Stremio將永遠不會像Kodi和Plex那樣具有可定製性和豐富的功能,但它更易於使用。只需${1}就可以獲取它,並檢視${2}:)","FAQ_03_H1":"Stremio與Netflix相比如何?","FAQ_03_P1":"同樣,Netflix是我們的靈感之一。我們努力實現Netflix的使用者體驗,再加上許多附加的好處。但最重要的是,我們讓您可以自由管理自己的庫,並使用我們的外掛系統新增新的內容源。","FAQ_03_P2":"這使得Stremio可以無限擴充套件,因此當您使用Stremio時,您永遠不會侷限於Netflix決定許可的內容。例如,您可以透過Stremio觀看${1}中的內容電影電視${2}, ${3} Twitch.tv${4},${5}YouTube${6},${7}Vodo${8}甚至${9}Netflix${10}本身!","FAQ_04_H1":"Stremio與Flipboard相比如何?","FAQ_04_P1":"我們不常聽到這個問題,除非與初創企業的人交談:)","FAQ_04_P2":"Stremio是透過設計一個內容聚合器來實現的,它本質上就是影片的Flipboard。這一點在我們的首頁部分非常明顯,它為您提供目錄和新的插曲/新的影片通知,讓您瞭解您所關注的內容,就像Flipboard一樣。","FAQ_05_H1":"Stremio與Popcorn Time相比如何?","FAQ_05_P1":"Stremio和Popcorn Time在使用者介面上很相似,因為沒有很多方法可以正確製作影片娛樂目錄:)","FAQ_05_P2":"Popcorn Time主要集中在特定來源的流媒體上,但Stremio是不受限制的,只是一個內容聚合器,它沒有鎖定到特定的內容源。","FAQ_05_P3":"此外,我們預設不提供任何Torrent外掛,因此Stremio不提供官方功能的Popcorn Time用例。","FAQ_05_P4":"另一個顯著的區別是Popcorn Time是完全開源的,而Stremio是${1}部分開源的${2}。","FAQ_06_H1":"是否要新增此電影/系列?","FAQ_06_P1":"不,對不起 :(","FAQ_06_P2":"正如大多數其他問題中提到的,Stremio本身不提供任何內容,所有內容都是透過外掛系統新增的。如果您有內容請求,您可以使用播放器中的“報告”按鈕,它將向您當前使用的外掛的作者傳送電子郵件。","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"能否為X建立外掛?","FAQ_08_P1":"完全有可能。","FAQ_08_P2":"如果您有一個外掛的想法,請在${1}office@stremio.com${2}給我們留言,但請確保您的外掛想法不會侵犯任何版權或使用條款。","FAQ_08_P3":"目前,我們路線圖上的下一件事是FandangoNOW,Filmon.tv video on demand和Crunchyroll的外掛。","FAQ_09_H1":"Stremio是否使用BitTorrent?","FAQ_09_P1":"是的,Stremio支援BitTorrent作為流媒體協議。您可以將其與Torrent外掛一起使用,也可以將.Torrent檔案拖放到Stremio中,或者將磁鐵鏈接貼上到搜尋欄中。","FAQ_09_P2":"請注意,使用BitTorrent的唯一官方外掛是${1}Vodo${2},它提供獨立內容,所有內容都允許與BitTorrent一起分發。","FAQ_09_P3":"我們不支援使用任何可能導致版權侵權的第三方外掛。","FAQ_10_H1":"我可以在Stremio中透過官方外掛觀看什麼節目?","FAQ_10_P1":"預設情況下,您可以在Stremio與它的嵌入式播放器觀看Filmon.tv,YouTube和Vodo的內容。另外,我們還有一個Twitch.tv外掛,以及其他一些外掛。","FAQ_10_P2":"此組合提供以下選項:","FAQ_10_L1":"Filmon.tv上的熱門電影片道,例如E4、BBC、Bollyworld TV","FAQ_10_L2":"YouTube上的所有內容,例如BBC News、Top Gear、Vevo、PewDiePie","FAQ_10_L3":"Vodo上的獨立電影","FAQ_10_L4":"Twitch.tv上的線上遊戲廣播","FAQ_10_P3":"此外,Guidebox和Netflix外掛提供了許多內容源,它們不完全在Stremio中播放,而是重定向到給定的服務。例如,Guidebox外掛將為您提供可在美國免費播放的精選電影,這些電影來自TubiTV和Crackle等服務。","FAQ_11_H1":"Stremio無法安裝,我該怎麼辦?","FAQ_11_P1":"如果您在Windows上,請嘗試${1}此替代安裝程式${2}。","FAQ_11_P2":"如果您使用的是Mac OS X,請注意,我們不支援任何比OS X Mavericks(10.9)更舊的版本。","FAQ_11_P3":"如果您使用的是Linux,請注意,我們目前只支援64位(x64)Linux。","FAQ_11_P4":"如果您仍然無法解決您的問題,請寫信給我們的${1}Facebook群組${2}。","FAQ_12_H1":"為什麼我的防毒軟體會報毒?Stremio安全嗎?","FAQ_12_P1":"我們向您保證Stremio是${1}100%安全的${2}。","FAQ_12_P2":"您的防毒軟體報毒是因為我們的安裝程式中包含廣告,一些防毒軟體將其識別為廣告軟體。","FAQ_12_P3":"如果您仍然不確定,可以嘗試我們的${1}替代安裝程式${2}。","FAQ_13_H1":"如何製作外掛?","FAQ_13_P1":"對於初學者,我們建議您檢視GitHub上的${1}外掛系統模組${2}。","FAQ_13_P2":"之後,您可以按照${1}Hello World教程${2}進行操作。","FAQ_13_P3":"如果您沒有任何程式設計技能,請在${1}Reddit社群${2}上釋出您的想法,並在${3}office@stremio.com${4}上與我們聯絡您的外掛想法。","FAQ_14_H1":"外掛是如何釋出的?","FAQ_14_P1":"當您建立一個外掛和主機,並在清單中放置一個指向工作外掛地址的終端節點欄位時,該外掛將自動釋出到我們的${1}外掛目錄${2}。","FAQ_14_P2":"發生這種情況是因為Stremio外掛模組的伺服器部分會自動呼叫我們的API來宣告外掛。當我們的API驗證您的終端節點為有效的外掛時,它將開始顯示在目錄中。","FAQ_15_H1":"我可以在瀏覽器中執行Stremio嗎?","FAQ_15_P1":"目前還沒有,但即將到來!","FAQ_15_P2":"如果您想看到Alpha版本,可以在這裡看到:${1}alpha4.strem.io${2}. 請記住,此Alpha版本上已禁用流式處理。我們支援Chrome、Firefox、Opera和Edge","FAQ_16_H1":"電視投屏不起作用/字幕不起作用","FAQ_16_P1":"電視投屏使用DLNA技術,這在不同的電視品牌和型號之間非常不一致。由於這個原因,我們沒有能力在每種情況下都測試它,所以它還遠遠不夠完美。儘管如此,我們仍在不斷改進,但我們無法為您提供DLNA能夠在您的電視上開始正常工作的預計時間。","FAQ_16_P2":"如果您在“投屏”選單中看不到您的電視,請嘗試禁用網路連線並重新啟用它(在Windows上,右鍵單擊網路並使用“啟用/禁用”),以及重新啟動路由器、電視和PC。","FAQ_16_P3":"如果您仍然遇到問題,您可以透過將您的電視品牌和型號資訊傳送到${1}來幫助我們”office@stremio.com${2}。","FAQ_16_P4":"同時,我們推薦Chromecast,我們非常支援Chromecast,或者直接用HDMI線將電視與PC連線。","FAQ_17_H1":"Stremio卡死和/或崩潰,我能做什麼?","FAQ_17_P1":"首先,如果您使用的是帶有AVG防毒軟體的Windows 7,這種組合會產生問題。問題出在AVG本身,我們這邊沒有合理的辦法解決。不幸的是,去除或禁用防毒軟體將不起作用。唯一的解決辦法是用別的東西代替AVG","FAQ_17_P2":"如果不是這個問題,但您仍在使用Windows,請更新到最新的service pack並更新/重新安裝您的GPU驅動程式,然後重試。","FAQ_17_P3":"如果您的問題仍未解決,或者您使用的是Mac或Linux,請寫信給我們,在${1}我們的Facebook群組${2}報告問題的確切細節。","FAQ_18_H1":"如何製作外掛?","FAQ_18_P1":"對於初學者,我們建議您檢視GitHub上的${1}外掛系統模組${2}。","FAQ_18_P2":"之後,您可以按照${1}Hello World教程${2}進行操作。","FAQ_18_P3":"如果您沒有任何程式設計技能,請在${1}Reddit社群${2}上釋出您的想法,並在${3}上與我們聯絡您的外掛想法。”office@stremio.com${4}。","FAQ_19_H1":"為什麼Stremio佔用磁碟空間?","FAQ_19_P1":"Stremio有一個本地快取來臨時儲存您流式傳輸的影片檔案。","FAQ_19_P2":"這有兩個好處:第一,它允許Stremio預先緩衝影片,以確保流媒體更流暢。其次,它將影片儲存在本地快取中,以便您可以繼續離線觀看。","FAQ_19_P3":"Stremio保留了多少取決於“設定”面板中的快取設定。Stremio可能會在您的磁碟上保留到設定的數量(例如2GB),除非當前流式傳輸的影片大於該數量,在這種情況下,必須分配足夠的儲存來保留它,直到您結束流式傳輸。","FAQ_20_H1":"快取資料夾在哪裡?","FAQ_20_P1":"在Windows上,Stremio快取位於您在設定中選擇的驅動器中(例如\\"E:\\\\stremio-cache\\")","FAQ_20_P2":"在MacOS上,它位於\\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"在Linux上,它位於\\"~/.stremio/stremio-cache\\"或\\"~/stremio-cache\\"","FAQ_21_H1":"我得到\\"流媒體伺服器未找到\\"錯誤,我能做什麼?","FAQ_21_P1":"如果出現此錯誤,則表示以下幾點之一:","FAQ_21_P2":"1)您正試圖透過我們的${1}web版本${2}使用一個由YouTube/BitTorrent原始碼支援的外掛。在這種情況下,您應該從${3}我們的網站${4}安裝我們的桌面版本","FAQ_21_P3":"2)Stremio安裝有問題。在這種情況下,請嘗試從${1}網站${2}重新安裝我們的最新桌面版本。如果這沒有幫助,請嘗試禁用防毒軟體和防火牆,重新啟動電腦,然後重試。如果這依然不起作用,請寫信給我們的${3}Facebook群組${4}","FAQ_22_H1":"我無法在iOS上看到/使用大多數外掛","FAQ_22_P1":"由於Apple App Store條款和條件中的限制,我們限制iOS應用程式只能使用一組特定的外掛。","FAQ_22_P2":"不過,請放心,將來會有更多的iOS外掛,我們還可能新增一個整合,透過將iOS應用程式連線到Stremio流媒體伺服器,您將可以使用所有Stremio外掛。"}')},5232:e=>{"use strict";e.exports=JSON.parse('[{"name":"العربية","codes":["ar-AR","ara"]},{"name":"български език","codes":["bg-BG","bul"]},{"name":"català","codes":["ca-CA","cat"]},{"name":"čeština","codes":["cs-CZ","ces"]},{"name":"dansk","codes":["da-DK","dan"]},{"name":"Deutsch","codes":["de-DE","deu"]},{"name":"ελληνικά","codes":["el-GR","ell"]},{"name":"English","codes":["en-US","eng"]},{"name":"Esperanto","codes":["eo-EO","epo"]},{"name":"español","codes":["es-ES","spa"]},{"name":"euskara","codes":["eu-ES","eus"]},{"name":"فارسی","codes":["fa-IR","fas"]},{"name":"Français","codes":["fr-FR","fre"]},{"name":"עברית","codes":["he-IL","heb"]},{"name":"हिन्दी","codes":["hi-IN","hin"]},{"name":"hrvatski jezik","codes":["hr-HR","hrv"]},{"name":"magyar","codes":["hu-HU","hun"]},{"name":"Bahasa Indonesia","codes":["id-ID","ind"]},{"name":"italiano","codes":["it-IT","ita"]},{"name":"македонски јазик","codes":["mk-MK","mkd"]},{"name":"ဗမာစာ","codes":["my-BM","mya"]},{"name":"Norsk bokmål","codes":["nb-NO","nob"]},{"name":"Nederlands","codes":["nl-NL","nld"]},{"name":"Norsk nynorsk","codes":["nn-NO","nno"]},{"name":"język polski","codes":["pl-PL","pol"]},{"name":"português Brazil","codes":["pt-BR","por"]},{"name":"português","codes":["pt-PT","por"]},{"name":"русский язык","codes":["ru-RU","rus"]},{"name":"Svenska","codes":["sv-SE","swe"]},{"name":"slovenski jezik","codes":["sl-SL","slv"]},{"name":"српски језик","codes":["sr-RS","srp"]},{"name":"తెలుగు","codes":["te-IN","tel"]},{"name":"Türkçe","codes":["tr-TR","tur"]},{"name":"українська мова","codes":["uk-UA","ukr"]},{"name":"中文(中华人民共和国)","codes":["zh-CN","zho"]},{"name":"中文(香港特别行政區)","codes":["zh-HK","zho"]},{"name":"中文(台灣)","codes":["zh-TW","zho"]}]')},8832:e=>{"use strict";e.exports=JSON.parse('{"abk":"аҧсуа бызшәа","aar":"Afaraf","afr":"Afrikaans","aka":"Akan","sqi":"gjuha shqipe","amh":"አማርኛ","ara":"العربية","arg":"aragonés","hye":"Հայերեն","asm":"অসমীয়া","ava":"авар мацӀ","ave":"avesta","aym":"aymar aru","aze":"azərbaycan dili","bam":"bamanankan","bak":"башҡорт теле","eus":"euskara","bel":"беларуская мова","ben":"বাংলা","bih":"भोजपुरी","bis":"Bislama","bos":"bosanski jezik","bre":"brezhoneg","bul":"български език","mya":"ဗမာစာ","cat":"català","cha":"Chamoru","che":"нохчийн мотт","nya":"chiCheŵa","zho":"中文 (Zhōngwén)","chv":"чӑваш чӗлхи","cor":"Kernewek","cos":"corsu","cre":"ᓀᐦᐃᔭᐍᐏᐣ","hrv":"hrvatski jezik","ces":"čeština","dan":"dansk","div":"ދިވެހި","nld":"Nederlands","dzo":"རྫོང་ཁ","eng":"English","epo":"Esperanto","est":"eesti","ewe":"Eʋegbe","fao":"føroyskt","fij":"vosa Vakaviti","fin":"suomi","fre":"français","ful":"Fulfulde","glg":"galego","kat":"ქართული","ger":"Deutsch","ell":"ελληνικά","grn":"Avañe\'ẽ","guj":"ગુજરાતી","hat":"Kreyòl ayisyen","hau":"Hausa","heb":"עברית","her":"Otjiherero","hin":"हिन्दी","hmo":"Hiri Motu","hun":"magyar","ina":"Interlingua","ind":"Bahasa Indonesia","ile":"Interlingue","gle":"Gaeilge","ibo":"Asụsụ Igbo","ipk":"Iñupiaq","ido":"Ido","isl":"Íslenska","ita":"italiano","iku":"ᐃᓄᒃᑎᑐᑦ","jpn":"日本語 (にほんご)","jav":"basa Jawa","kal":"kalaallisut","kan":"ಕನ್ನಡ","kau":"Kanuri","kas":"कश्मीरी","kaz":"қазақ тілі","khm":"ខ្មែរ","kik":"Gĩkũyũ","kin":"Ikinyarwanda","kir":"Кыргызча","kom":"коми кыв","kon":"KiKongo","kor":"한국어 (韓國語)","kur":"Kurdî","kua":"Kuanyama","lat":"latine","ltz":"Lëtzebuergesch","lug":"Luganda","lim":"Limburgs","lin":"Lingála","lao":"ພາສາລາວ","lit":"lietuvių kalba","lub":"Tshiluba","lav":"latviešu valoda","glv":"Gaelg","mkd":"македонски јазик","mlg":"fiteny malagasy","msa":"bahasa Melayu","mal":"മലയാളം","mlt":"Malti","mri":"te reo Māori","mar":"मराठी","mah":"Kajin M̧ajeļ","mon":"монгол","nau":"Ekakairũ Naoero","nav":"Diné bizaad","nob":"Norsk bokmål","nde":"isiNdebele","nep":"नेपाली","ndo":"Owambo","nno":"Norsk nynorsk","nor":"Norsk","iii":"ꆈꌠ꒿ Nuosuhxop","nbl":"isiNdebele","oci":"occitan","oji":"ᐊᓂᔑᓈᐯᒧᐎᓐ","chu":"ѩзыкъ словѣньскъ","orm":"Afaan Oromoo","ori":"ଓଡ଼ିଆ","oss":"ирон æвзаг","pan":"ਪੰਜਾਬੀ","pli":"पाऴि","fas":"فارسی","pol":"język polski","pus":"پښتو","por":"português","pob":"português Brazil","que":"Runa Simi","roh":"rumantsch grischun","run":"Ikirundi","ron":"limba română","rus":"русский язык","san":"संस्कृतम्","srd":"sardu","snd":"सिन्धी","sme":"Davvisámegiella","smo":"gagana fa\'a Samoa","sag":"yângâ tî sängö","srp":"српски језик","gla":"Gàidhlig","sna":"chiShona","sin":"සිංහල","slk":"slovenčina","slv":"slovenski jezik","som":"Soomaaliga","sot":"Sesotho","spa":"español","sun":"Basa Sunda","swa":"Kiswahili","ssw":"SiSwati","swe":"Svenska","tam":"தமிழ்","tel":"తెలుగు","tgk":"тоҷикӣ","tha":"ไทย","tir":"ትግርኛ","bod":"བོད་ཡིག","tuk":"Türkmen","tgl":"Wikang Tagalog","tsn":"Setswana","ton":"faka Tonga","tur":"Türkçe","tso":"Xitsonga","tat":"татар теле","twi":"Twi","tah":"Reo Tahiti","uig":"Uyƣurqə","ukr":"українська мова","urd":"اردو","uzb":"O\'zbek","ven":"Tshivenḓa","vie":"Tiếng Việt","vol":"Volapük","wln":"walon","cym":"Cymraeg","wol":"Wollof","fry":"Frysk","xho":"isiXhosa","yid":"ייִדיש","yor":"Yorùbá","zha":"Saɯ cueŋƅ","zul":"isiZulu"}')}},t={};function o(a){var n=t[a];if(void 0!==n)return n.exports;var i=t[a]={id:a,loaded:!1,exports:{}};return e[a].call(i.exports,i,i.exports,o),i.loaded=!0,i.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var a in t)o.o(t,a)&&!o.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o.g=(function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}})(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var a=t.getElementsByTagName("script");a.length&&(e=a[a.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e+"../../"})(),(()=>{var e,t;function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nfunction getId() {\n return Math.random().toString(32).slice(2);\n}\n\nfunction Bridge(scope, handler) {\n handler.addEventListener('message', /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(_ref) {\n var request, id, path, args, value, data, thisArg;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n request = _ref.data.request;\n\n if (request) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 3:\n id = request.id, path = request.path, args = request.args;\n _context.prev = 4;\n value = path.reduce(function (value, prop) {\n return value[prop];\n }, scope);\n\n if (!(typeof value === 'function')) {\n _context.next = 13;\n break;\n }\n\n thisArg = path.slice(0, path.length - 1).reduce(function (value, prop) {\n return value[prop];\n }, scope);\n _context.next = 10;\n return value.apply(thisArg, args);\n\n case 10:\n data = _context.sent;\n _context.next = 16;\n break;\n\n case 13:\n _context.next = 15;\n return value;\n\n case 15:\n data = _context.sent;\n\n case 16:\n handler.postMessage({\n response: {\n id: id,\n result: {\n data: data\n }\n }\n });\n _context.next = 22;\n break;\n\n case 19:\n _context.prev = 19;\n _context.t0 = _context[\"catch\"](4);\n handler.postMessage({\n response: {\n id: id,\n result: {\n error: _context.t0\n }\n }\n });\n\n case 22:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[4, 19]]);\n }));\n\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }());\n\n this.call = /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(path, args) {\n var id;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n id = getId();\n return _context2.abrupt(\"return\", new Promise(function (resolve, reject) {\n var onMessage = function onMessage(_ref4) {\n var response = _ref4.data.response;\n if (!response || response.id !== id) return;\n handler.removeEventListener('message', onMessage);\n\n if ('error' in response.result) {\n reject(response.result.error);\n } else {\n resolve(response.result.data);\n }\n };\n\n handler.addEventListener('message', onMessage);\n handler.postMessage({\n request: {\n id: id,\n path: path,\n args: args\n }\n });\n }));\n\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n}\n\nmodule.exports = Bridge;\n","var React = require('react');\nvar PropTypes = require('prop-types');\nvar icons = require('./icons.json');\n\nvar Icon = React.forwardRef(function(props, ref) {\n var icon = icons[props.icon];\n if (!icon) {\n return null;\n }\n\n return React.createElement('svg', Object.assign({ viewBox: icon.viewBox }, props, { ref: ref }),\n icon.paths.map(function(path, index) {\n return React.createElement('path', { key: index, d: path });\n })\n );\n});\n\nIcon.displayName = 'Icon';\nIcon.propTypes = {\n icon: PropTypes.oneOf(Object.keys(icons))\n};\n\nmodule.exports = Icon;\n","var Icon = require('./Icon');\n\nmodule.exports = Icon;\n","var EventEmitter = require('eventemitter3');\nvar ERROR = require('../error');\n\nfunction ChromecastSenderVideo(options) {\n options = options || {};\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var chromecastTransport = options.chromecastTransport;\n if (!chromecastTransport) {\n throw new Error('Chromecast transport required');\n }\n\n var device = chromecastTransport.getCastDevice();\n if (device === null) {\n throw new Error('Chromecast session must be started');\n }\n\n var deviceNameContainerElement = document.createElement('div');\n deviceNameContainerElement.style.display = 'flex';\n deviceNameContainerElement.style.flexDirection = 'row';\n deviceNameContainerElement.style.alignItems = 'center';\n deviceNameContainerElement.style.justifyContent = 'center';\n deviceNameContainerElement.style.width = '100%';\n deviceNameContainerElement.style.height = '100%';\n deviceNameContainerElement.style.backgroundColor = 'black';\n var deviceNameLabelElement = document.createElement('div');\n deviceNameLabelElement.style.flex = 'none';\n deviceNameLabelElement.style.maxWidth = '80%';\n deviceNameLabelElement.style.fontSize = '5vmin';\n deviceNameLabelElement.style.lineHeight = '1.2em';\n deviceNameLabelElement.style.maxHeight = '3.6em';\n deviceNameLabelElement.style.textAlign = 'center';\n deviceNameLabelElement.style.color = '#FFFFFF90';\n deviceNameLabelElement.innerText = 'Casting to ' + device.friendlyName;\n deviceNameContainerElement.appendChild(deviceNameLabelElement);\n containerElement.appendChild(deviceNameContainerElement);\n chromecastTransport.on('message', onMessage);\n chromecastTransport.on('message-error', onMessageReceivedError);\n\n var events = new EventEmitter();\n var destroyed = false;\n var observedProps = {\n stream: false,\n loaded: false,\n paused: false,\n time: false,\n duration: false,\n buffering: false,\n buffered: false,\n audioTracks: false,\n selectedAudioTrackId: false,\n subtitlesTracks: false,\n selectedSubtitlesTrackId: false,\n subtitlesOffset: false,\n subtitlesSize: false,\n subtitlesTextColor: false,\n subtitlesBackgroundColor: false,\n subtitlesOutlineColor: false,\n volume: false,\n muted: false,\n playbackSpeed: false,\n extraSubtitlesTracks: false,\n selectedExtraSubtitlesTrackId: false,\n extraSubtitlesDelay: false,\n extraSubtitlesSize: false,\n extraSubtitlesOffset: false,\n extraSubtitlesTextColor: false,\n extraSubtitlesBackgroundColor: false,\n extraSubtitlesOutlineColor: false\n };\n\n function onMessageSendError(error, action) {\n events.emit('error', Object.assign({}, ERROR.CHROMECAST_SENDER_VIDEO.MESSAGE_SEND_FAILED, {\n error: error,\n action: action\n }));\n }\n function onMessageReceivedError(error) {\n events.emit('error', Object.assign({}, ERROR.CHROMECAST_SENDER_VIDEO.INVALID_MESSAGE_RECEIVED, {\n error: error\n }));\n }\n function onMessage(message) {\n if (!message || typeof message.event !== 'string') {\n onMessageReceivedError(new Error('Invalid message: ' + message));\n return;\n }\n\n var args = Array.isArray(message.args) ? message.args : [];\n events.emit.apply(events, [message.event].concat(args));\n }\n function onPropChanged(propName, propValue) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, propValue);\n }\n }\n function observeProp(propName) {\n if (observedProps.hasOwnProperty(propName)) {\n observedProps[propName] = true;\n }\n }\n function command(commandName) {\n switch (commandName) {\n case 'destroy': {\n destroyed = true;\n onPropChanged('stream', null);\n onPropChanged('loaded', null);\n onPropChanged('paused', null);\n onPropChanged('time', null);\n onPropChanged('duration', null);\n onPropChanged('buffering', null);\n onPropChanged('buffered', null);\n onPropChanged('audioTracks', []);\n onPropChanged('selectedAudioTrackId', []);\n onPropChanged('subtitlesTracks', []);\n onPropChanged('selectedSubtitlesTrackId', null);\n onPropChanged('subtitlesOffset', null);\n onPropChanged('subtitlesSize', null);\n onPropChanged('subtitlesTextColor', null);\n onPropChanged('subtitlesBackgroundColor', null);\n onPropChanged('subtitlesOutlineColor', null);\n onPropChanged('volume', null);\n onPropChanged('muted', null);\n onPropChanged('playbackSpeed', null);\n onPropChanged('extraSubtitlesTracks', []);\n onPropChanged('selectedExtraSubtitlesTrackId', null);\n onPropChanged('extraSubtitlesDelay', null);\n onPropChanged('extraSubtitlesSize', null);\n onPropChanged('extraSubtitlesOffset', null);\n onPropChanged('extraSubtitlesTextColor', null);\n onPropChanged('extraSubtitlesBackgroundColor', null);\n onPropChanged('extraSubtitlesOutlineColor', null);\n events.removeAllListeners();\n chromecastTransport.off('message', onMessage);\n containerElement.removeChild(deviceNameContainerElement);\n break;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n chromecastTransport.sendMessage(action).catch(function(error) {\n onMessageSendError(error, action);\n });\n return;\n }\n case 'setProp': {\n chromecastTransport.sendMessage(action).catch(function(error) {\n onMessageSendError(error, action);\n });\n return;\n }\n case 'command': {\n command(action.commandName, action.commandArgs);\n chromecastTransport.sendMessage(action).catch(function(error) {\n onMessageSendError(error, action);\n });\n return;\n }\n }\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n}\n\nChromecastSenderVideo.canPlayStream = function() {\n return Promise.resolve(true);\n};\n\nChromecastSenderVideo.manifest = {\n name: 'ChromecastSenderVideo',\n external: true,\n props: ['stream', 'loaded', 'paused', 'time', 'duration', 'buffering', 'buffered', 'audioTracks', 'selectedAudioTrackId', 'subtitlesTracks', 'selectedSubtitlesTrackId', 'subtitlesOffset', 'subtitlesSize', 'subtitlesTextColor', 'subtitlesBackgroundColor', 'subtitlesOutlineColor', 'volume', 'muted', 'playbackSpeed', 'extraSubtitlesTracks', 'selectedExtraSubtitlesTrackId', 'extraSubtitlesDelay', 'extraSubtitlesSize', 'extraSubtitlesOffset', 'extraSubtitlesTextColor', 'extraSubtitlesBackgroundColor', 'extraSubtitlesOutlineColor'],\n commands: ['load', 'unload', 'destroy', 'addExtraSubtitlesTracks'],\n events: ['propValue', 'propChanged', 'ended', 'error', 'subtitlesTrackLoaded', 'audioTrackLoaded', 'extraSubtitlesTrackLoaded', 'implementationChanged']\n};\n\nmodule.exports = ChromecastSenderVideo;\n","var ChromecastSenderVideo = require('./ChromecastSenderVideo');\n\nmodule.exports = ChromecastSenderVideo;\n","var EventEmitter = require('eventemitter3');\nvar Hls = require('hls.js');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar Color = require('color');\nvar ERROR = require('../error');\nvar getContentType = require('./getContentType');\nvar HLS_CONFIG = require('./hlsConfig');\n\nfunction HTMLVideo(options) {\n options = options || {};\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var styleElement = document.createElement('style');\n containerElement.appendChild(styleElement);\n styleElement.sheet.insertRule('video::cue { font-size: 4vmin; color: rgb(255, 255, 255); background-color: rgba(0, 0, 0, 0); text-shadow: rgb(34, 34, 34) 1px 1px 0.1em; }');\n var videoElement = document.createElement('video');\n videoElement.style.width = '100%';\n videoElement.style.height = '100%';\n videoElement.style.backgroundColor = 'black';\n videoElement.controls = false;\n videoElement.onerror = function() {\n onVideoError();\n };\n videoElement.onended = function() {\n onEnded();\n };\n videoElement.onpause = function() {\n onPropChanged('paused');\n };\n videoElement.onplay = function() {\n onPropChanged('paused');\n };\n videoElement.ontimeupdate = function() {\n onPropChanged('time');\n onPropChanged('buffered');\n };\n videoElement.ondurationchange = function() {\n onPropChanged('duration');\n };\n videoElement.onwaiting = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onseeking = function() {\n onPropChanged('time');\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onseeked = function() {\n onPropChanged('time');\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onstalled = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onplaying = function() {\n onPropChanged('time');\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.oncanplay = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.canplaythrough = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onloadedmetadata = function() {\n onPropChanged('loaded');\n };\n videoElement.onloadeddata = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onvolumechange = function() {\n onPropChanged('volume');\n onPropChanged('muted');\n };\n videoElement.onratechange = function() {\n onPropChanged('playbackSpeed');\n };\n videoElement.textTracks.onchange = function() {\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onCueChange();\n Array.from(videoElement.textTracks).forEach(function(track) {\n track.oncuechange = onCueChange;\n });\n };\n containerElement.appendChild(videoElement);\n\n var hls = null;\n var events = new EventEmitter();\n var destroyed = false;\n var stream = null;\n var subtitlesOffset = 0;\n var observedProps = {\n stream: false,\n loaded: false,\n paused: false,\n time: false,\n duration: false,\n buffering: false,\n buffered: false,\n subtitlesTracks: false,\n selectedSubtitlesTrackId: false,\n subtitlesOffset: false,\n subtitlesSize: false,\n subtitlesTextColor: false,\n subtitlesBackgroundColor: false,\n subtitlesOutlineColor: false,\n audioTracks: false,\n selectedAudioTrackId: false,\n volume: false,\n muted: false,\n playbackSpeed: false\n };\n\n function getProp(propName) {\n switch (propName) {\n case 'stream': {\n return stream;\n }\n case 'loaded': {\n if (stream === null) {\n return null;\n }\n\n return videoElement.readyState >= videoElement.HAVE_METADATA;\n }\n case 'paused': {\n if (stream === null) {\n return null;\n }\n\n return !!videoElement.paused;\n }\n case 'time': {\n if (stream === null || videoElement.currentTime === null || !isFinite(videoElement.currentTime)) {\n return null;\n }\n\n return Math.floor(videoElement.currentTime * 1000);\n }\n case 'duration': {\n if (stream === null || videoElement.duration === null || !isFinite(videoElement.duration)) {\n return null;\n }\n\n return Math.floor(videoElement.duration * 1000);\n }\n case 'buffering': {\n if (stream === null) {\n return null;\n }\n\n return videoElement.readyState < videoElement.HAVE_FUTURE_DATA;\n }\n case 'buffered': {\n if (stream === null) {\n return null;\n }\n\n var time = videoElement.currentTime !== null && isFinite(videoElement.currentTime) ? videoElement.currentTime : 0;\n for (var i = 0; i < videoElement.buffered.length; i++) {\n if (videoElement.buffered.start(i) <= time && time <= videoElement.buffered.end(i)) {\n return Math.floor(videoElement.buffered.end(i) * 1000);\n }\n }\n\n return Math.floor(time * 1000);\n }\n case 'subtitlesTracks': {\n if (stream === null) {\n return [];\n }\n\n return Array.from(videoElement.textTracks)\n .map(function(track, index) {\n return Object.freeze({\n id: 'EMBEDDED_' + String(index),\n lang: track.language,\n label: track.label,\n origin: 'EMBEDDED',\n embedded: true\n });\n });\n }\n case 'selectedSubtitlesTrackId': {\n if (stream === null) {\n return null;\n }\n\n return Array.from(videoElement.textTracks)\n .reduce(function(result, track, index) {\n if (result === null && track.mode === 'showing') {\n return 'EMBEDDED_' + String(index);\n }\n\n return result;\n }, null);\n }\n case 'subtitlesOffset': {\n if (destroyed) {\n return null;\n }\n\n return subtitlesOffset;\n }\n case 'subtitlesSize': {\n if (destroyed) {\n return null;\n }\n\n return parseInt(styleElement.sheet.cssRules[0].style.fontSize, 10) * 25;\n }\n case 'subtitlesTextColor': {\n if (destroyed) {\n return null;\n }\n\n return styleElement.sheet.cssRules[0].style.color;\n }\n case 'subtitlesBackgroundColor': {\n if (destroyed) {\n return null;\n }\n\n return styleElement.sheet.cssRules[0].style.backgroundColor;\n }\n case 'subtitlesOutlineColor': {\n if (destroyed) {\n return null;\n }\n\n return styleElement.sheet.cssRules[0].style.textShadow.slice(0, styleElement.sheet.cssRules[0].style.textShadow.indexOf(')') + 1);\n }\n case 'audioTracks': {\n if (hls === null || !Array.isArray(hls.audioTracks)) {\n return [];\n }\n\n return hls.audioTracks\n .map(function(track) {\n return Object.freeze({\n id: 'EMBEDDED_' + String(track.id),\n lang: typeof track.lang === 'string' && track.lang.length > 0 ?\n track.lang\n :\n typeof track.name === 'string' && track.name.length > 0 ?\n track.name\n :\n String(track.id),\n label: typeof track.name === 'string' && track.name.length > 0 ?\n track.name\n :\n typeof track.lang === 'string' && track.lang.length > 0 ?\n track.lang\n :\n String(track.id),\n origin: 'EMBEDDED',\n embedded: true\n });\n });\n }\n case 'selectedAudioTrackId': {\n if (hls === null || hls.audioTrack === null || !isFinite(hls.audioTrack) || hls.audioTrack === -1) {\n return null;\n }\n\n return 'EMBEDDED_' + String(hls.audioTrack);\n }\n case 'volume': {\n if (destroyed || videoElement.volume === null || !isFinite(videoElement.volume)) {\n return null;\n }\n\n return Math.floor(videoElement.volume * 100);\n }\n case 'muted': {\n if (destroyed) {\n return null;\n }\n\n return !!videoElement.muted;\n }\n case 'playbackSpeed': {\n if (destroyed || videoElement.playbackRate === null || !isFinite(videoElement.playbackRate)) {\n return null;\n }\n\n return videoElement.playbackRate;\n }\n default: {\n return null;\n }\n }\n }\n function onCueChange() {\n Array.from(videoElement.textTracks).forEach(function(track) {\n Array.from(track.cues || []).forEach(function(cue) {\n cue.snapToLines = false;\n cue.line = 100 - subtitlesOffset;\n });\n });\n }\n function onVideoError() {\n if (destroyed) {\n return;\n }\n\n var error;\n switch (videoElement.error.code) {\n case 1: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_ABORTED;\n break;\n }\n case 2: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_NETWORK;\n break;\n }\n case 3: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_DECODE;\n break;\n }\n case 4: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_SRC_NOT_SUPPORTED;\n break;\n }\n default: {\n error = ERROR.UNKNOWN_ERROR;\n }\n }\n onError(Object.assign({}, error, {\n critical: true,\n error: videoElement.error\n }));\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onEnded() {\n events.emit('ended');\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName));\n }\n }\n function observeProp(propName) {\n if (observedProps.hasOwnProperty(propName)) {\n events.emit('propValue', propName, getProp(propName));\n observedProps[propName] = true;\n }\n }\n function setProp(propName, propValue) {\n switch (propName) {\n case 'paused': {\n if (stream !== null) {\n propValue ? videoElement.pause() : videoElement.play();\n onPropChanged('paused');\n }\n\n break;\n }\n case 'time': {\n if (stream !== null && propValue !== null && isFinite(propValue)) {\n videoElement.currentTime = parseInt(propValue, 10) / 1000;\n onPropChanged('time');\n }\n\n break;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream !== null) {\n Array.from(videoElement.textTracks)\n .forEach(function(track, index) {\n track.mode = 'EMBEDDED_' + String(index) === propValue ? 'showing' : 'disabled';\n });\n var selecterdSubtitlesTrack = getProp('subtitlesTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n if (selecterdSubtitlesTrack) {\n onPropChanged('selectedSubtitlesTrackId');\n events.emit('subtitlesTrackLoaded', selecterdSubtitlesTrack);\n }\n }\n\n break;\n }\n case 'subtitlesOffset': {\n if (propValue !== null && isFinite(propValue)) {\n subtitlesOffset = Math.max(0, Math.min(100, parseInt(propValue, 10)));\n onCueChange();\n onPropChanged('subtitlesOffset');\n }\n\n break;\n }\n case 'subtitlesSize': {\n if (propValue !== null && isFinite(propValue)) {\n styleElement.sheet.cssRules[0].style.fontSize = Math.floor(Math.max(0, parseInt(propValue, 10)) / 25) + 'vmin';\n onPropChanged('subtitlesSize');\n }\n\n break;\n }\n case 'subtitlesTextColor': {\n if (typeof propValue === 'string') {\n try {\n styleElement.sheet.cssRules[0].style.color = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('HTMLVideo', error);\n }\n\n onPropChanged('subtitlesTextColor');\n }\n\n break;\n }\n case 'subtitlesBackgroundColor': {\n if (typeof propValue === 'string') {\n try {\n styleElement.sheet.cssRules[0].style.backgroundColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('HTMLVideo', error);\n }\n\n onPropChanged('subtitlesBackgroundColor');\n }\n\n break;\n }\n case 'subtitlesOutlineColor': {\n if (typeof propValue === 'string') {\n try {\n styleElement.sheet.cssRules[0].style.textShadow = Color(propValue).rgb().string() + ' 1px 1px 0.1em';\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('HTMLVideo', error);\n }\n\n onPropChanged('subtitlesOutlineColor');\n }\n\n break;\n }\n case 'selectedAudioTrackId': {\n if (hls !== null) {\n var selecterdAudioTrack = getProp('audioTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n hls.audioTrack = selecterdAudioTrack ? parseInt(selecterdAudioTrack.id.split('_').pop(), 10) : -1;\n if (selecterdAudioTrack) {\n onPropChanged('selectedAudioTrackId');\n events.emit('audioTrackLoaded', selecterdAudioTrack);\n }\n }\n\n break;\n }\n case 'volume': {\n if (propValue !== null && isFinite(propValue)) {\n videoElement.muted = false;\n videoElement.volume = Math.max(0, Math.min(100, parseInt(propValue, 10))) / 100;\n onPropChanged('muted');\n onPropChanged('volume');\n }\n\n break;\n }\n case 'muted': {\n videoElement.muted = !!propValue;\n onPropChanged('muted');\n break;\n }\n case 'playbackSpeed': {\n if (propValue !== null && isFinite(propValue)) {\n videoElement.playbackRate = parseFloat(propValue);\n onPropChanged('playbackSpeed');\n }\n\n break;\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n command('unload');\n if (commandArgs && commandArgs.stream && typeof commandArgs.stream.url === 'string') {\n stream = commandArgs.stream;\n onPropChanged('stream');\n onPropChanged('loaded');\n videoElement.autoplay = typeof commandArgs.autoplay === 'boolean' ? commandArgs.autoplay : true;\n videoElement.currentTime = commandArgs.time !== null && isFinite(commandArgs.time) ? parseInt(commandArgs.time, 10) / 1000 : 0;\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('buffered');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n getContentType(stream)\n .then(function(contentType) {\n if (stream !== commandArgs.stream) {\n return;\n }\n\n if (contentType === 'application/vnd.apple.mpegurl' && Hls.isSupported()) {\n hls = new Hls(HLS_CONFIG);\n hls.on(Hls.Events.AUDIO_TRACKS_UPDATED, function() {\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n });\n hls.on(Hls.Events.AUDIO_TRACK_SWITCHED, function() {\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n });\n hls.loadSource(stream.url);\n hls.attachMedia(videoElement);\n } else {\n videoElement.src = stream.url;\n }\n })\n .catch(function() {\n if (stream !== commandArgs.stream) {\n return;\n }\n\n videoElement.src = stream.url;\n });\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null\n }));\n }\n break;\n }\n case 'unload': {\n stream = null;\n Array.from(videoElement.textTracks).forEach(function(track) {\n track.oncuechange = null;\n });\n if (hls !== null) {\n hls.removeAllListeners();\n hls.detachMedia(videoElement);\n hls.destroy();\n hls = null;\n }\n videoElement.removeAttribute('src');\n videoElement.load();\n videoElement.currentTime = 0;\n onPropChanged('stream');\n onPropChanged('loaded');\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('buffered');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n break;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n onPropChanged('subtitlesOffset');\n onPropChanged('subtitlesSize');\n onPropChanged('subtitlesTextColor');\n onPropChanged('subtitlesBackgroundColor');\n onPropChanged('subtitlesOutlineColor');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('playbackSpeed');\n events.removeAllListeners();\n videoElement.onerror = null;\n videoElement.onended = null;\n videoElement.onpause = null;\n videoElement.onplay = null;\n videoElement.ontimeupdate = null;\n videoElement.ondurationchange = null;\n videoElement.onwaiting = null;\n videoElement.onseeking = null;\n videoElement.onseeked = null;\n videoElement.onstalled = null;\n videoElement.onplaying = null;\n videoElement.oncanplay = null;\n videoElement.canplaythrough = null;\n videoElement.onloadeddata = null;\n videoElement.onvolumechange = null;\n videoElement.onratechange = null;\n videoElement.textTracks.onchange = null;\n containerElement.removeChild(videoElement);\n containerElement.removeChild(styleElement);\n break;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n return;\n }\n case 'setProp': {\n setProp(action.propName, action.propValue);\n return;\n }\n case 'command': {\n command(action.commandName, action.commandArgs);\n return;\n }\n }\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n}\n\nHTMLVideo.canPlayStream = function(stream) {\n if (!stream || (stream.behaviorHints && stream.behaviorHints.notWebReady)) {\n return Promise.resolve(false);\n }\n\n return getContentType(stream)\n .then(function(contentType) {\n var video = document.createElement('video');\n return !!video.canPlayType(contentType) || (contentType === 'application/vnd.apple.mpegurl' && Hls.isSupported());\n })\n .catch(function() {\n return false;\n });\n};\n\nHTMLVideo.manifest = {\n name: 'HTMLVideo',\n external: false,\n props: ['stream', 'loaded', 'paused', 'time', 'duration', 'buffering', 'buffered', 'audioTracks', 'selectedAudioTrackId', 'subtitlesTracks', 'selectedSubtitlesTrackId', 'subtitlesOffset', 'subtitlesSize', 'subtitlesTextColor', 'subtitlesBackgroundColor', 'subtitlesOutlineColor', 'volume', 'muted', 'playbackSpeed'],\n commands: ['load', 'unload', 'destroy'],\n events: ['propValue', 'propChanged', 'ended', 'error', 'subtitlesTrackLoaded', 'audioTrackLoaded']\n};\n\nmodule.exports = HTMLVideo;\n","function getContentType(stream) {\n if (!stream || typeof stream.url !== 'string') {\n return Promise.reject(new Error('Invalid stream parameter!'));\n }\n\n if (stream.behaviorHints && stream.behaviorHints.proxyHeaders && stream.behaviorHints.proxyHeaders.response && typeof stream.behaviorHints.proxyHeaders.response['content-type'] === 'string') {\n return Promise.resolve(stream.behaviorHints.proxyHeaders.response['content-type']);\n }\n\n return fetch(stream.url, { method: 'HEAD' })\n .then(function(resp) {\n if (resp.ok) {\n return resp.headers.get('content-type');\n }\n\n throw new Error(resp.status + ' (' + resp.statusText + ')');\n });\n}\n\nmodule.exports = getContentType;\n","module.exports = {\n debug: false,\n enableWorker: true,\n lowLatencyMode: false,\n backBufferLength: 30,\n maxBufferLength: 50,\n maxMaxBufferLength: 80,\n maxFragLookUpTolerance: 0,\n maxBufferHole: 0,\n appendErrorMaxRetry: 20,\n nudgeMaxRetry: 20,\n manifestLoadingTimeOut: 30000,\n manifestLoadingMaxRetry: 10,\n // liveDurationInfinity: false\n};\n","var HTMLVideo = require('./HTMLVideo');\n\nmodule.exports = HTMLVideo;\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar ERROR = require('../error');\n\nfunction IFrameVideo(options) {\n options = options || {};\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var iframeElement = document.createElement('iframe');\n iframeElement.style.width = '100%';\n iframeElement.style.height = '100%';\n iframeElement.style.border = 0;\n iframeElement.style.backgroundColor = 'black';\n iframeElement.allowFullscreen = false;\n iframeElement.allow = 'autoplay';\n containerElement.appendChild(iframeElement);\n\n var events = new EventEmitter();\n var destroyed = false;\n var observedProps = {\n stream: false,\n loaded: false,\n paused: false,\n time: false,\n duration: false,\n buffering: false,\n buffered: false,\n volume: false,\n muted: false,\n playbackSpeed: false\n };\n\n function onMessage(event) {\n if (event.source !== iframeElement.contentWindow) {\n return;\n }\n\n var data = event.data || event.message;\n if (!data || typeof data.event !== 'string') {\n return;\n }\n\n var eventName = data.event;\n var args = Array.isArray(data.args) ? data.args : [];\n events.emit.apply(events, [eventName].concat(args));\n }\n function sendMessage(action) {\n iframeElement.contentWindow.postMessage(action, '*');\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onPropChanged(propName, propValue) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, propValue);\n }\n }\n function observeProp(propName) {\n if (observedProps.hasOwnProperty(propName)) {\n observedProps[propName] = true;\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n command('unload');\n if (commandArgs && commandArgs.stream && typeof commandArgs.stream.playerFrameUrl === 'string') {\n window.addEventListener('message', onMessage, false);\n iframeElement.onload = function() {\n sendMessage({\n type: 'command',\n commandName: commandName,\n commandArgs: commandArgs\n });\n };\n iframeElement.src = commandArgs.stream.playerFrameUrl;\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null\n }));\n }\n\n return true;\n }\n case 'unload': {\n window.removeEventListener('message', onMessage);\n iframeElement.onload = null;\n iframeElement.removeAttribute('src');\n onPropChanged('stream', null);\n onPropChanged('loaded', null);\n onPropChanged('paused', null);\n onPropChanged('time', null);\n onPropChanged('duration', null);\n onPropChanged('buffering', null);\n onPropChanged('buffered', null);\n onPropChanged('volume', null);\n onPropChanged('muted', null);\n onPropChanged('playbackSpeed', null);\n return true;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n events.removeAllListeners();\n containerElement.removeChild(iframeElement);\n return true;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n sendMessage(action);\n return;\n }\n case 'setProp': {\n sendMessage(action);\n return;\n }\n case 'command': {\n if (!command(action.commandName, action.commandArgs)) {\n sendMessage(action);\n }\n\n return;\n }\n }\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n}\n\nIFrameVideo.canPlayStream = function(stream) {\n return Promise.resolve(stream && typeof stream.playerFrameUrl === 'string');\n};\n\nIFrameVideo.manifest = {\n name: 'IFrameVideo',\n external: true,\n props: ['stream', 'loaded', 'paused', 'time', 'duration', 'buffering', 'buffered', 'audioTracks', 'selectedAudioTrackId', 'subtitlesTracks', 'selectedSubtitlesTrackId', 'subtitlesOffset', 'subtitlesSize', 'subtitlesTextColor', 'subtitlesBackgroundColor', 'subtitlesOutlineColor', 'volume', 'muted', 'playbackSpeed', 'extraSubtitlesTracks', 'selectedExtraSubtitlesTrackId', 'extraSubtitlesDelay', 'extraSubtitlesSize', 'extraSubtitlesOffset', 'extraSubtitlesTextColor', 'extraSubtitlesBackgroundColor', 'extraSubtitlesOutlineColor'],\n commands: ['load', 'unload', 'destroy', 'addExtraSubtitlesTracks'],\n events: ['propValue', 'propChanged', 'ended', 'error', 'subtitlesTrackLoaded', 'audioTrackLoaded', 'extraSubtitlesTrackLoaded', 'implementationChanged']\n};\n\nmodule.exports = IFrameVideo;\n","var IFrameVideo = require('./IFrameVideo');\n\nmodule.exports = IFrameVideo;\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar ERROR = require('../error');\n\nvar SUBS_SCALE_FACTOR = 0.0066;\n\nvar stremioToMPVProps = {\n 'stream': null,\n 'paused': 'pause',\n 'time': 'time-pos',\n 'duration': 'duration',\n 'buffering': 'buffering',\n 'volume': 'volume',\n 'muted': 'mute',\n 'playbackSpeed': 'speed',\n 'audioTracks': 'audioTracks',\n 'selectedAudioTrackId': 'aid',\n 'subtitlesTracks': 'subtitlesTracks',\n 'selectedSubtitlesTrackId': 'sid',\n 'subtitlesSize': 'sub-scale',\n 'subtitlesTextColor': 'sub-color',\n 'subtitlesBackgroundColor': 'sub-back-color',\n 'subtitlesOutlineColor': 'sub-border-color',\n};\n\nfunction ShellVideo(options) {\n options = options || {};\n\n var ipc = options.shellTransport;\n\n var stremioProps = {};\n Object.keys(stremioToMPVProps).forEach(function(key) {\n if(stremioToMPVProps[key]) {\n stremioProps[stremioToMPVProps[key]] = key;\n }\n });\n\n ipc.send('mpv-command', ['stop']);\n ipc.send('mpv-observe-prop', 'path');\n\n ipc.send('mpv-observe-prop', 'time-pos');\n ipc.send('mpv-observe-prop', 'volume');\n ipc.send('mpv-observe-prop', 'pause');\n ipc.send('mpv-observe-prop', 'seeking');\n ipc.send('mpv-observe-prop', 'eof-reached');\n\n ipc.send('mpv-observe-prop', 'duration');\n ipc.send('mpv-observe-prop', 'metadata');\n ipc.send('mpv-observe-prop', 'video-params'); // video width/height\n ipc.send('mpv-observe-prop', 'track-list');\n\n ipc.send('mpv-observe-prop', 'paused-for-cache');\n ipc.send('mpv-observe-prop', 'cache-buffering-state');\n\n ipc.send('mpv-observe-prop', 'aid');\n ipc.send('mpv-observe-prop', 'vid');\n ipc.send('mpv-observe-prop', 'sid');\n ipc.send('mpv-observe-prop', 'sub-scale');\n ipc.send('mpv-observe-prop', 'sub-pos');\n ipc.send('mpv-observe-prop', 'speed');\n\n ipc.send('mpv-observe-prop', 'mpv-version');\n ipc.send('mpv-observe-prop', 'ffmpeg-version');\n\n var events = new EventEmitter();\n var destroyed = false;\n var stream = null;\n // var selectedSubtitlesTrackId = null;\n var observedProps = {};\n var continueFrom = 0;\n\n var avgDuration = 0;\n var minClipDuration = 30;\n var props = { };\n\n function setBackground(visible) {\n // This is a bit of a hack but there is no better way so far\n var bg = visible ? '' : 'transparent';\n for(var container = options.containerElement; container; container = container.parentElement) {\n container.style.background = bg;\n }\n }\n function logProp(args) {\n // eslint-disable-next-line no-console\n console.log(args.name+': '+args.data);\n }\n function embeddedProp(args) {\n return args.data ? 'EMBEDDED_' + args.data.toString() : null;\n }\n\n var last_time = 0;\n ipc.on('mpv-prop-change', function(args) {\n switch (args.name) {\n case 'mpv-version':\n case 'ffmpeg-version': {\n props[args.name] = logProp(args);\n break;\n }\n case 'duration': {\n var intDuration = args.data | 0;\n // Accumulate average duration over time. if it is greater than minClipDuration\n // and equal to the currently reported duration, it is returned as video length.\n // If the reported duration changes over time the average duration is always\n // smaller than the currently reported one so we set the video length to 0 as\n // this is a live stream.\n props[args.name] = args.data >= minClipDuration && (!avgDuration || intDuration === avgDuration) ? Math.round(args.data * 1000) : null;\n // The average duration is calculated using right bit shifting by one of the sum of\n // the previous average and the currently reported value. This method is not very precise\n // as we get integer value but we avoid floating point errors. JS uses 32 bit values\n // for bitwise maths so the maximum supported video duration is 1073741823 (2 ^ 30 - 1)\n // which is around 34 years of playback time.\n avgDuration = avgDuration ? (avgDuration + intDuration) >> 1 : intDuration;\n break;\n }\n case 'time-pos': {\n props[args.name] = Math.round(args.data*1000);\n if(continueFrom) {\n ipc.send('mpv-set-prop', ['time-pos', continueFrom]);\n props[args.name] = Math.round(continueFrom);\n continueFrom = 0;\n }\n break;\n }\n case 'sub-scale': {\n props[args.name] = Math.round(args.data / SUBS_SCALE_FACTOR);\n break;\n }\n case 'paused-for-cache':\n case 'seeking':\n {\n if(props.buffering !== args.data) {\n props.buffering = args.data;\n onPropChanged('buffering');\n }\n break;\n }\n case 'aid':\n case 'sid':\n case 'vid': {\n props[args.name] = embeddedProp(args);\n break;\n }\n // In that case onPropChanged() is manually invoked as track-list contains all\n // the tracks but we have different event for each track type\n case 'track-list': {\n props.audioTracks = args.data.filter(function(x) { return x.type === 'audio'; })\n .map(function(x, index) {\n return {\n id: 'EMBEDDED_' + x.id,\n lang: x.lang === undefined ? 'Track' + (index + 1) : x.lang,\n label: x.title === undefined || x.lang === undefined ? '' : x.title || x.lang,\n origin: 'EMBEDDED',\n embedded: true,\n mode: x.id === props.aid ? 'showing' : 'disabled',\n };\n });\n onPropChanged('audioTracks');\n\n props.subtitlesTracks = args.data\n .filter(function(x) { return x.type === 'sub'; })\n .map(function(x, index) {\n return {\n id: 'EMBEDDED_' + x.id,\n lang: x.lang === undefined ? 'Track ' + (index + 1) : x.lang,\n label: x.title === undefined || x.lang === undefined ? '' : x.title || x.lang,\n origin: 'EMBEDDED',\n embedded: true,\n mode: x.id === props.sid ? 'showing' : 'disabled',\n };\n });\n onPropChanged('subtitlesTracks');\n break;\n }\n default: {\n props[args.name] = args.data;\n break;\n }\n }\n\n // Cap time update to update only when a second passes\n var current_time = args.name === 'time-pos' ? Math.floor(props['time-pos'] / 1000) : null;\n if((!current_time || last_time !== current_time)&& stremioProps[args.name]) {\n if(current_time) {\n last_time = current_time;\n }\n onPropChanged(stremioProps[args.name]);\n }\n });\n ipc.on('mpv-event-ended', function(args) {\n if (args.error) onError(args.error);\n else onEnded();\n });\n\n function getProp(propName) {\n if(stremioToMPVProps[propName]) return props[stremioToMPVProps[propName]];\n // eslint-disable-next-line no-console\n console.log('Unsupported prop requested', propName);\n return null;\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onEnded() {\n events.emit('ended');\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName));\n }\n }\n function observeProp(propName) {\n events.emit('propValue', propName, getProp(propName));\n observedProps[propName] = true;\n }\n function setProp(propName, propValue) {\n switch (propName) {\n case 'paused': {\n if (stream !== null) {\n ipc.send('mpv-set-prop', ['pause', propValue]);\n }\n\n break;\n }\n case 'time': {\n if (stream !== null && propValue !== null && isFinite(propValue)) {\n ipc.send('mpv-set-prop', ['time-pos', propValue/1000]);\n }\n\n break;\n }\n case 'playbackSpeed': {\n if (stream !== null && propValue !== null && isFinite(propValue)) {\n ipc.send('mpv-set-prop', ['speed', propValue]);\n }\n break;\n }\n case 'volume': {\n if (stream !== null && propValue !== null && isFinite(propValue)) {\n props.mute = false;\n ipc.send('mpv-set-prop', ['mute', 'no']);\n ipc.send('mpv-set-prop', ['volume', propValue]);\n onPropChanged('muted');\n onPropChanged('volume');\n }\n break;\n }\n case 'muted': {\n if (stream !== null) {\n ipc.send('mpv-set-prop', ['mute', propValue ? 'yes' : 'no']);\n props.mute = propValue;\n onPropChanged('muted');\n }\n break;\n }\n case 'selectedAudioTrackId': {\n if (stream !== null) {\n var actualId = propValue.slice('EMBEDDED_'.length);\n ipc.send('mpv-set-prop', ['aid', actualId]);\n }\n break;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream !== null) {\n if(propValue) {\n var actualId = propValue.slice('EMBEDDED_'.length);\n ipc.send('mpv-set-prop', ['sid', actualId]);\n events.emit('subtitlesTrackLoaded', propValue);\n } else {\n // turn off subs\n ipc.send('mpv-set-prop', ['sid', 'no']);\n props.sid = null;\n }\n }\n onPropChanged('selectedSubtitlesTrackId');\n break;\n }\n case 'subtitlesSize': {\n ipc.send('mpv-set-prop', [stremioToMPVProps[propName], propValue * SUBS_SCALE_FACTOR]);\n break;\n }\n case 'subtitlesOffset': {\n ipc.send('mpv-set-prop', [stremioToMPVProps[propName], propValue]);\n break;\n }\n case 'subtitlesTextColor':\n case 'subtitlesBackgroundColor':\n case 'subtitlesOutlineColor':\n {\n // MPV accepts color in #AARRGGBB\n var argb = propValue.replace(/^#(\\w{6})(\\w{2})$/, '#$2$1');\n ipc.send('mpv-set-prop', [stremioToMPVProps[propName], argb]);\n break;\n }\n default: {\n // eslint-disable-next-line no-console\n console.log('Unhandled setProp for', propName);\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n command('unload');\n if (commandArgs && commandArgs.stream && typeof commandArgs.stream.url === 'string') {\n stream = commandArgs.stream;\n onPropChanged('stream');\n continueFrom = commandArgs.time !== null && isFinite(commandArgs.time) ? parseInt(commandArgs.time, 10) / 1000 : 0;\n\n setBackground(false);\n\n ipc.send('mpv-set-prop', ['no-sub-ass']);\n\n // opengl-cb is an alias for the new name \"libmpv\", as shown in mpv's video/out/vo.c aliases\n // opengl is an alias for the new name \"gpu\"\n // When on Windows we use d3d for the rendering in separate window\n var windowRenderer = navigator.platform === 'Win32' ? 'direct3d' : 'opengl';\n var videoOutput = options.mpvSeparateWindow ? windowRenderer : 'opengl-cb';\n var separateWindow = options.mpvSeparateWindow ? 'yes' : 'no';\n ipc.send('mpv-set-prop', ['vo', videoOutput]);\n ipc.send('mpv-set-prop', ['osc', separateWindow]);\n ipc.send('mpv-set-prop', ['input-defalt-bindings', separateWindow]);\n ipc.send('mpv-set-prop', ['input-vo-keyboard', separateWindow]);\n\n ipc.send('mpv-command', ['loadfile', stream.url]);\n ipc.send('mpv-set-prop', ['pause', false]);\n ipc.send('mpv-set-prop', ['speed', props.speed]);\n ipc.send('mpv-set-prop', ['aid', props.aid]);\n ipc.send('mpv-set-prop', ['mute', 'no']);\n\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null\n }));\n }\n\n break;\n }\n case 'unload': {\n props = {\n mute: false,\n speed: 1,\n subtitlesTracks: [],\n buffering: true,\n aid: null,\n sid: null,\n };\n continueFrom = 0;\n avgDuration = 0;\n ipc.send('mpv-command', ['stop']);\n onPropChanged('stream');\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n setBackground(true);\n break;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n events.removeAllListeners();\n break;\n }\n }\n }\n\n this.on = function (eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function (action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n break;\n }\n case 'setProp': {\n setProp(action.propName, action.propValue);\n return;\n }\n case 'command': {\n command(\n action.commandName,\n action.commandArgs\n );\n return;\n }\n }\n }\n };\n}\nShellVideo.canPlayStream = function() {\n return Promise.resolve(true);\n};\n\nShellVideo.manifest = {\n name: 'ShellVideo',\n external: false,\n props: Object.keys(stremioToMPVProps),\n commands: ['load', 'unload', 'destroy'],\n events: [\n 'propValue',\n 'propChanged',\n 'ended',\n 'error',\n 'subtitlesTrackLoaded',\n ],\n};\n\nmodule.exports = ShellVideo;\n","var ShellVideo = require('./ShellVideo');\n\nmodule.exports = ShellVideo;\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar selectVideoImplementation = require('./selectVideoImplementation');\nvar ERROR = require('../error');\n\nfunction StremioVideo() {\n var video = null;\n var events = new EventEmitter();\n var destroyed = false;\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action, options) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n options = options || {};\n if (action.type === 'command' && action.commandName === 'load' && action.commandArgs) {\n var Video = selectVideoImplementation(action.commandArgs, options);\n if (video !== null && video.constructor !== Video) {\n video.dispatch({ type: 'command', commandName: 'destroy' });\n video = null;\n }\n if (video === null) {\n if (Video === null) {\n events.emit('error', Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n error: new Error('No video implementation was selected'),\n critical: true,\n stream: action.commandArgs.stream\n }));\n return;\n }\n\n video = new Video(options);\n video.on('ended', function() {\n events.emit('ended');\n });\n video.on('error', function(args) {\n events.emit('error', args);\n });\n video.on('propValue', function(propName, propValue) {\n events.emit('propValue', propName, propValue);\n });\n video.on('propChanged', function(propName, propValue) {\n events.emit('propChanged', propName, propValue);\n });\n video.on('subtitlesTrackLoaded', function(track) {\n events.emit('subtitlesTrackLoaded', track);\n });\n video.on('audioTrackLoaded', function(track) {\n events.emit('audioTrackLoaded', track);\n });\n video.on('extraSubtitlesTrackLoaded', function(track) {\n events.emit('extraSubtitlesTrackLoaded', track);\n });\n if (Video.manifest.external) {\n video.on('implementationChanged', function(manifest) {\n events.emit('implementationChanged', manifest);\n });\n } else {\n events.emit('implementationChanged', Video.manifest);\n }\n }\n }\n\n if (video !== null) {\n try {\n video.dispatch(action);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(video.constructor.manifest.name, error);\n }\n }\n\n if (action.type === 'command' && action.commandName === 'destroy') {\n video = null;\n }\n\n return;\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n this.destroy = function() {\n destroyed = true;\n if (video !== null) {\n video.dispatch({ type: 'command', commandName: 'destroy' });\n video = null;\n }\n\n events.removeAllListeners();\n };\n}\n\nStremioVideo.ERROR = ERROR;\n\nmodule.exports = StremioVideo;\n","var StremioVideo = require('./StremioVideo');\n\nmodule.exports = StremioVideo;\n","var ChromecastSenderVideo = require('../ChromecastSenderVideo');\nvar ShellVideo = require('../ShellVideo');\nvar HTMLVideo = require('../HTMLVideo');\nvar TizenVideo = require('../TizenVideo');\nvar WebOsVideo = require('../WebOsVideo');\nvar IFrameVideo = require('../IFrameVideo');\nvar YouTubeVideo = require('../YouTubeVideo');\nvar withStreamingServer = require('../withStreamingServer');\nvar withHTMLSubtitles = require('../withHTMLSubtitles');\n\nfunction selectVideoImplementation(commandArgs, options) {\n if (!commandArgs.stream || typeof commandArgs.stream.externalUrl === 'string') {\n return null;\n }\n\n if (options.chromecastTransport && options.chromecastTransport.getCastState() === cast.framework.CastState.CONNECTED) {\n return ChromecastSenderVideo;\n }\n\n if (typeof commandArgs.stream.ytId === 'string') {\n return withHTMLSubtitles(YouTubeVideo);\n }\n\n if (typeof commandArgs.stream.playerFrameUrl === 'string') {\n return IFrameVideo;\n }\n\n if (options.shellTransport) {\n return withStreamingServer(withHTMLSubtitles(ShellVideo));\n }\n\n if (typeof commandArgs.streamingServerURL === 'string') {\n if (typeof global.tizen !== 'undefined') {\n return withStreamingServer(withHTMLSubtitles(TizenVideo));\n }\n if (typeof global.webOS !== 'undefined') {\n return withStreamingServer(withHTMLSubtitles(WebOsVideo));\n }\n return withStreamingServer(withHTMLSubtitles(HTMLVideo));\n }\n\n if (typeof commandArgs.stream.url === 'string') {\n if (typeof global.webOS !== 'undefined') {\n return withHTMLSubtitles(WebOsVideo);\n }\n if (typeof global.tizen !== 'undefined') {\n return withHTMLSubtitles(TizenVideo);\n }\n return withHTMLSubtitles(HTMLVideo);\n }\n\n return null;\n}\n\nmodule.exports = selectVideoImplementation;\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar Color = require('color');\nvar ERROR = require('../error');\n\nfunction TizenVideo(options) {\n options = options || {};\n\n var isBuffering = true;\n var videoSpeed = 1;\n var currentSubTrack = null;\n var currentAudioTrack = null;\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var promiseAudioTrackChange = false;\n\n var size = 100;\n var offset = 0;\n var textColor = 'rgb(255, 255, 255)';\n var backgroundColor = 'rgba(0, 0, 0, 0)';\n var outlineColor = 'rgb(34, 34, 34)';\n\n var objElement = document.createElement('object');\n objElement.type = 'application/avplayer';\n objElement.style.width = '100%';\n objElement.style.height = '100%';\n objElement.style.backgroundColor = 'black';\n\n var lastSub;\n var disabledSubs = false;\n\n function refreshSubtitle() {\n if (lastSub) {\n var lastSubDurationDiff = lastSub.duration - (getProp('time') - lastSub.now);\n if (lastSubDurationDiff > 0) renderSubtitle(lastSubDurationDiff, lastSub.text);\n }\n }\n\n function renderSubtitle(duration, text) {\n if (disabledSubs) return;\n // we ignore custom delay here, it's not needed for embedded subs\n lastSub = {\n duration: duration,\n text: text,\n now: getProp('time'),\n };\n if (subtitleTimeout) {\n clearTimeout(subtitleTimeout);\n subtitleTimeout = false;\n }\n\n while (subtitlesElement.hasChildNodes()) {\n subtitlesElement.removeChild(subtitlesElement.lastChild);\n }\n\n subtitlesElement.style.bottom = offset + '%';\n var cueNode = document.createElement('span');\n cueNode.innerHTML = text;\n cueNode.style.display = 'inline-block';\n cueNode.style.padding = '0.2em';\n cueNode.style.fontSize = Math.floor(size / 25) + 'vmin';\n cueNode.style.color = textColor;\n cueNode.style.backgroundColor = backgroundColor;\n cueNode.style.textShadow = '1px 1px 0.1em ' + outlineColor;\n\n subtitlesElement.appendChild(cueNode);\n subtitlesElement.appendChild(document.createElement('br'));\n\n if (duration) {\n subtitleTimeout = setTimeout(function() {\n while (subtitlesElement.hasChildNodes()) {\n subtitlesElement.removeChild(subtitlesElement.lastChild);\n }\n }, parseInt(duration * videoSpeed));\n }\n }\n\n var subtitleTimeout = false;\n var Listener = {\n onbufferingstart: function() {\n isBuffering = true;\n onPropChanged('buffering');\n },\n onbufferingprogress: function() {\n isBuffering = true;\n onPropChanged('buffering');\n },\n onbufferingcomplete: function() {\n isBuffering = false;\n onPropChanged('buffering');\n },\n oncurrentplaytime: function() {\n onPropChanged('time');\n },\n onerror: function() {\n onVideoError();\n },\n onsubtitlechange: function(duration, text) {\n renderSubtitle(duration, text);\n },\n onstreamcompleted: function() {\n onEnded();\n }\n };\n window.webapis.avplay.setListener(Listener);\n\n containerElement.appendChild(objElement);\n\n var subtitlesElement = document.createElement('div');\n subtitlesElement.style.position = 'absolute';\n subtitlesElement.style.right = '0';\n subtitlesElement.style.bottom = '0';\n subtitlesElement.style.left = '0';\n subtitlesElement.style.zIndex = '1';\n subtitlesElement.style.textAlign = 'center';\n containerElement.style.position = 'relative';\n containerElement.style.zIndex = '0';\n containerElement.appendChild(subtitlesElement);\n\n var events = new EventEmitter();\n var destroyed = false;\n var stream = null;\n var observedProps = {\n stream: false,\n paused: false,\n time: false,\n duration: false,\n buffering: false,\n subtitlesTracks: false,\n selectedSubtitlesTrackId: false,\n subtitlesOffset: false,\n subtitlesSize: false,\n subtitlesTextColor: false,\n subtitlesBackgroundColor: false,\n subtitlesOutlineColor: false,\n audioTracks: false,\n selectedAudioTrackId: false,\n playbackSpeed: false\n };\n\n function getProp(propName) {\n switch (propName) {\n case 'stream': {\n return stream;\n }\n case 'paused': {\n if (stream === null) {\n return null;\n }\n\n var isPaused = !!(window.webapis.avplay.getState() === 'PAUSED');\n\n if (!isPaused && promiseAudioTrackChange) {\n window.webapis.avplay.setSelectTrack('AUDIO', parseInt(promiseAudioTrackChange.replace('EMBEDDED_', '')));\n promiseAudioTrackChange = false;\n }\n\n return isPaused;\n }\n case 'time': {\n var currentTime = window.webapis.avplay.getCurrentTime();\n if (stream === null || currentTime === null || !isFinite(currentTime)) {\n return null;\n }\n\n return Math.floor(currentTime);\n }\n case 'duration': {\n var duration = window.webapis.avplay.getDuration();\n if (stream === null || duration === null || !isFinite(duration)) {\n return null;\n }\n\n return Math.floor(duration);\n }\n case 'buffering': {\n if (stream === null) {\n return null;\n }\n\n return isBuffering;\n }\n case 'subtitlesTracks': {\n if (stream === null) {\n return [];\n }\n\n var totalTrackInfo = window.webapis.avplay.getTotalTrackInfo();\n var textTracks = [];\n\n for (var i = 0; i < totalTrackInfo.length; i++) {\n if (totalTrackInfo[i].type === 'TEXT') {\n var textTrack = totalTrackInfo[i];\n var textTrackId = 'EMBEDDED_' + String(textTrack.index);\n if (!currentSubTrack && !textTracks.length) {\n currentSubTrack = textTrackId;\n }\n var extra = {};\n try {\n extra = JSON.parse(textTrack.extra_info);\n } catch(e) {}\n var textTrackLang = (extra.track_lang || '').trim();\n textTracks.push({\n id: textTrackId,\n lang: textTrackLang,\n label: textTrackLang,\n origin: 'EMBEDDED',\n embedded: true,\n mode: !disabledSubs && textTrackId === currentSubTrack ? 'showing' : 'disabled',\n });\n }\n }\n\n return textTracks;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream === null || disabledSubs) {\n return null;\n }\n\n var currentTracks = window.webapis.avplay.getCurrentStreamInfo();\n var currentIndex;\n\n for (var i = 0; i < currentTracks.length; i++) {\n if (currentTracks[i].type === 'TEXT') {\n currentIndex = currentTracks[i].index;\n\n break;\n }\n }\n\n return currentIndex ? 'EMBEDDED_' + String(currentIndex) : null;\n\n }\n case 'subtitlesOffset': {\n if (destroyed) {\n return null;\n }\n\n return offset;\n }\n case 'subtitlesSize': {\n if (destroyed) {\n return null;\n }\n\n return size;\n }\n case 'subtitlesTextColor': {\n if (destroyed) {\n return null;\n }\n\n return textColor;\n }\n case 'subtitlesBackgroundColor': {\n if (destroyed) {\n return null;\n }\n\n return backgroundColor;\n }\n case 'subtitlesOutlineColor': {\n if (destroyed) {\n return null;\n }\n\n return outlineColor;\n }\n case 'audioTracks': {\n if (stream === null) {\n return [];\n }\n\n var totalTrackInfo = window.webapis.avplay.getTotalTrackInfo();\n var audioTracks = [];\n\n for (var i = 0; i < totalTrackInfo.length; i++) {\n if (totalTrackInfo[i].type === 'AUDIO') {\n var audioTrack = totalTrackInfo[i];\n var audioTrackId = 'EMBEDDED_' + String(audioTrack.index);\n if (!currentAudioTrack && !audioTracks.length) {\n currentAudioTrack = audioTrackId;\n }\n var extra = {};\n try {\n extra = JSON.parse(audioTrack.extra_info);\n } catch(e) {}\n var audioTrackLang = extra.language || '';\n audioTracks.push({\n id: audioTrackId,\n lang: audioTrackLang,\n label: audioTrackLang,\n origin: 'EMBEDDED',\n embedded: true,\n mode: audioTrackId === currentAudioTrack ? 'showing' : 'disabled',\n });\n }\n }\n\n return audioTracks;\n }\n case 'selectedAudioTrackId': {\n if (stream === null) {\n return null;\n }\n\n if (promiseAudioTrackChange) {\n return promiseAudioTrackChange;\n }\n\n var currentTracks = window.webapis.avplay.getCurrentStreamInfo();\n var currentIndex = false;\n\n for (var i = 0; i < currentTracks.length; i++) {\n if (currentTracks[i].type === 'AUDIO') {\n currentIndex = currentTracks[i].index;\n\n break;\n }\n }\n\n return currentIndex !== false ? 'EMBEDDED_' + String(currentIndex) : null;\n }\n case 'playbackSpeed': {\n if (destroyed || videoSpeed === null || !isFinite(videoSpeed)) {\n return null;\n }\n\n return videoSpeed;\n }\n default: {\n return null;\n }\n }\n }\n function onVideoError() {\n if (destroyed) {\n return;\n }\n\n var error;\n error = ERROR.UNKNOWN_ERROR;\n onError(Object.assign({}, error, {\n critical: true,\n error: error\n }));\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onEnded() {\n events.emit('ended');\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName));\n }\n }\n function observeProp(propName) {\n if (observedProps.hasOwnProperty(propName)) {\n events.emit('propValue', propName, getProp(propName));\n observedProps[propName] = true;\n }\n }\n function setProp(propName, propValue) {\n switch (propName) {\n case 'paused': {\n if (stream !== null) {\n var willPause = !!propValue;\n willPause ? window.webapis.avplay.pause() : window.webapis.avplay.play();\n if (willPause) {\n if (subtitleTimeout) {\n clearTimeout(subtitleTimeout);\n }\n } else {\n refreshSubtitle();\n }\n }\n\n onPropChanged('paused');\n\n // the paused state is usually correct, but i have seen it not change on tizen 3\n // which causes all kinds of issues in the UI: (only happens with some videos)\n var lastKnownProp = getProp('paused');\n\n setTimeout(function() {\n if (getProp('paused') !== lastKnownProp) {\n onPropChanged('paused');\n }\n }, 1000);\n\n break;\n }\n case 'time': {\n if (stream !== null && propValue !== null && isFinite(propValue)) {\n window.webapis.avplay.seekTo(parseInt(propValue, 10));\n renderSubtitle(1, '');\n }\n\n break;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream !== null) {\n if ((currentSubTrack || '').indexOf('EMBEDDED_') === 0) {\n if ((propValue || '').indexOf('EMBEDDED_') === -1) {\n renderSubtitle(1, '');\n disabledSubs = true;\n onPropChanged('selectedSubtitlesTrackId');\n return;\n }\n disabledSubs = false;\n\n currentSubTrack = propValue;\n\n var selectedSubtitlesTrack = getProp('subtitlesTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n\n window.webapis.avplay.setSelectTrack('TEXT', parseInt(currentSubTrack.replace('EMBEDDED_', '')));\n\n if (selectedSubtitlesTrack) {\n events.emit('subtitlesTrackLoaded', selectedSubtitlesTrack);\n onPropChanged('selectedSubtitlesTrackId');\n }\n } else if (!propValue) {\n renderSubtitle(1, '');\n disabledSubs = true;\n onPropChanged('selectedSubtitlesTrackId');\n }\n }\n\n break;\n }\n case 'subtitlesOffset': {\n if (propValue !== null && isFinite(propValue)) {\n offset = Math.max(0, Math.min(100, parseInt(propValue, 10)));\n refreshSubtitle();\n onPropChanged('subtitlesOffset');\n }\n\n break;\n }\n case 'subtitlesSize': {\n if (propValue !== null && isFinite(propValue)) {\n size = Math.max(0, parseInt(propValue, 10));\n refreshSubtitle();\n onPropChanged('subtitlesSize');\n }\n\n break;\n }\n case 'subtitlesTextColor': {\n if (typeof propValue === 'string') {\n try {\n textColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Tizen player with HTML Subtitles', error);\n }\n\n refreshSubtitle();\n onPropChanged('subtitlesTextColor');\n }\n\n break;\n }\n case 'subtitlesBackgroundColor': {\n if (typeof propValue === 'string') {\n try {\n backgroundColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Tizen player with HTML Subtitles', error);\n }\n\n refreshSubtitle();\n\n onPropChanged('subtitlesBackgroundColor');\n }\n\n break;\n }\n case 'subtitlesOutlineColor': {\n if (typeof propValue === 'string') {\n try {\n outlineColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Tizen player with HTML Subtitles', error);\n }\n\n refreshSubtitle();\n\n onPropChanged('subtitlesOutlineColor');\n }\n\n break;\n }\n case 'selectedAudioTrackId': {\n if (stream !== null) {\n\n currentAudioTrack = propValue;\n\n var selectedAudioTrack = getProp('audioTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n\n if (getProp('paused')) {\n // issues before this logic:\n // tizen 3 does not allow changing audio track when paused\n // tizen 5 does, but it will only change getProp('selectedAudioTrackId') after playback starts\n\n // will be changed on next play event, until then we will overwrite the result of getProp('selectedAudioTrackId')\n promiseAudioTrackChange = propValue;\n onPropChanged('selectedAudioTrackId');\n } else {\n window.webapis.avplay.setSelectTrack('AUDIO', parseInt(currentAudioTrack.replace('EMBEDDED_', '')));\n }\n if (selectedAudioTrack) {\n events.emit('audioTrackLoaded', selectedAudioTrack);\n onPropChanged('selectedAudioTrackId');\n }\n }\n\n break;\n }\n case 'playbackSpeed': {\n if (propValue !== null && isFinite(propValue)) {\n videoSpeed = parseFloat(propValue);\n\n try {\n window.webapis.avplay.setSpeed(videoSpeed);\n } catch (e) {}\n\n onPropChanged('playbackSpeed');\n }\n\n break;\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n if (commandArgs && commandArgs.stream && typeof commandArgs.stream.url === 'string') {\n stream = commandArgs.stream;\n\n if (stream !== commandArgs.stream) {\n return;\n }\n onPropChanged('buffering');\n\n window.webapis.avplay.open(stream.url);\n window.webapis.avplay.setDisplayRect(0, 0, window.innerWidth, window.innerHeight);\n window.webapis.avplay.setDisplayMethod('PLAYER_DISPLAY_MODE_LETTER_BOX');\n window.webapis.avplay.seekTo(commandArgs.time !== null && isFinite(commandArgs.time) ? parseInt(commandArgs.time, 10) : 0);\n window.webapis.avplay.prepare();\n onPropChanged('duration');\n window.webapis.avplay.play();\n\n onPropChanged('stream');\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null\n }));\n }\n break;\n }\n case 'unload': {\n stream = null;\n window.webapis.avplay.stop();\n onPropChanged('stream');\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n break;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n onPropChanged('subtitlesOffset');\n onPropChanged('subtitlesSize');\n onPropChanged('subtitlesTextColor');\n onPropChanged('subtitlesBackgroundColor');\n onPropChanged('subtitlesOutlineColor');\n onPropChanged('playbackSpeed');\n events.removeAllListeners();\n containerElement.removeChild(objElement);\n break;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n return;\n }\n case 'setProp': {\n setProp(action.propName, action.propValue);\n return;\n }\n case 'command': {\n command(action.commandName, action.commandArgs);\n return;\n }\n }\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n}\n\nTizenVideo.canPlayStream = function() {\n return Promise.resolve(true);\n};\n\nTizenVideo.manifest = {\n name: 'TizenVideo',\n external: false,\n props: ['stream', 'paused', 'time', 'duration', 'buffering', 'audioTracks', 'selectedAudioTrackId', 'subtitlesTracks', 'selectedSubtitlesTrackId', 'subtitlesOffset', 'subtitlesSize', 'subtitlesTextColor', 'subtitlesBackgroundColor', 'subtitlesOutlineColor', 'playbackSpeed'],\n commands: ['load', 'unload', 'destroy'],\n events: ['propValue', 'propChanged', 'ended', 'error', 'subtitlesTrackLoaded', 'audioTrackLoaded']\n};\n\nmodule.exports = TizenVideo;\n","var TizenVideo = require('./TizenVideo');\n\nmodule.exports = TizenVideo;\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar ERROR = require('../error');\n\nfunction luna(params, call, fail, method) {\n if (call) params.onSuccess = call || function() {};\n\n params.onFailure = function () { // function(result)\n // console.log('WebOS',(params.method || method) + ' [fail][' + result.errorCode + '] ' + result.errorText );\n\n if (fail) fail();\n };\n\n window.webOS.service.request(method || 'luna://com.webos.media', params);\n}\n\nfunction runWebOS(params, failed) {\n // console.log('run web os', params);\n window.webOS.service.request('luna://com.webos.applicationManager', {\n method: 'launch',\n parameters: {\n 'id': params.need,\n 'params': {\n 'payload':[\n {\n 'fullPath': params.url,\n 'artist':'',\n 'subtitle':'',\n 'dlnaInfo':{\n 'flagVal':4096,\n 'cleartextSize':'-1',\n 'contentLength':'-1',\n 'opVal':1,\n 'protocolInfo':'http-get:*:video/x-matroska:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000',\n 'duration':0\n },\n 'mediaType':'VIDEO',\n 'thumbnail':'',\n 'deviceType':'DMR',\n 'album':'',\n 'fileName': params.name,\n 'lastPlayPosition': params.position\n }\n ]\n }\n },\n onSuccess: function () {\n // console.log('The app is launched');\n },\n onFailure: function () { // function(inError)\n // console.log('Player', 'Failed to launch the app ('+params.need+'): ', '[' + inError.errorCode + ']: ' + inError.errorText);\n\n if (params.need === 'com.webos.app.photovideo') {\n params.need = 'com.webos.app.smartshare';\n runWebOS(params);\n } else if(params.need === 'com.webos.app.smartshare') {\n params.need = 'com.webos.app.mediadiscovery';\n runWebOS(params);\n } else if (params.need === 'com.webos.app.mediadiscovery') {\n failed();\n }\n }\n });\n}\n\nvar webOsColors = ['black', 'white', 'yellow', 'red', 'green', 'blue'];\nvar stremioColors = {\n // rgba\n 'rgba(0, 0, 0, 255)': 'black',\n 'rgba(255, 255, 255, 255)': 'white',\n 'rgba(255, 255, 0, 255)': 'yellow',\n 'rgba(255, 0, 0, 255)': 'red',\n 'rgba(0, 255, 0, 255)': 'green',\n 'rgba(0, 0, 255, 255)': 'blue',\n // rgba case 2\n 'rgba(0, 0, 0, 1)': 'black',\n 'rgba(255, 255, 255, 1)': 'white',\n 'rgba(255, 255, 0, 1)': 'yellow',\n 'rgba(255, 0, 0, 1)': 'red',\n 'rgba(0, 255, 0, 1)': 'green',\n 'rgba(0, 0, 255, 1)': 'blue',\n // rgb\n 'rgba(0, 0, 0)': 'black',\n 'rgba(255, 255, 255)': 'white',\n 'rgba(255, 255, 0)': 'yellow',\n 'rgba(255, 0, 0)': 'red',\n 'rgba(0, 255, 0)': 'green',\n 'rgba(0, 0, 255)': 'blue',\n // 8-digit hex\n '#000000FF': 'black',\n '#FFFFFFFF': 'white',\n '#FFFF00FF': 'yellow',\n '#FF0000FF': 'red',\n '#00FF00FF': 'green',\n '#0000FFFF': 'blue',\n // 6-digit hex\n '#000000': 'black',\n '#FFFFFF': 'white',\n '#FFFF00': 'yellow',\n '#FF0000': 'red',\n '#00FF00': 'green',\n '#0000FF': 'blue'\n};\n\nfunction stremioSubOffsets(offset) {\n if (offset === 0) {\n return -3;\n } else if (offset <= 2) {\n return -2;\n } else if (offset <= 3) {\n return -1;\n } else if (offset <= 5) {\n return 0;\n } else if (offset <= 10) {\n return 1;\n } else if (offset <= 25) {\n return 2;\n } else if (offset <= 50) {\n return 3;\n } else if (offset <= 100) {\n return 4;\n }\n return false;\n}\n\nfunction stremioSubSizes(size) {\n // there is also: 0 (tiny)\n // adding zero will break the logic\n if (size <= 75) {\n return 1;\n } else if (size <= 100) {\n return 2;\n } else if (size <= 150) {\n return 3;\n } else if (size <= 250) {\n return 4;\n }\n return false;\n}\n\nfunction WebOsVideo(options) {\n\n options = options || {};\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var knownMediaId = false;\n\n var subSize = 75;\n\n var disabledSubs = true;\n\n var subscribed = false;\n\n var currentSubTrack = false;\n\n var currentAudioTrack = false;\n\n var textTracks = [];\n\n var audioTracks = [];\n\n var count_message = 0;\n\n var subtitleOffset = 5;\n\n var setSubs = function (info) {\n textTracks = [];\n // console.log('sub tracks 1, nr of sub tracks: ', info.numSubtitleTracks);\n if (info.numSubtitleTracks) {\n\n // console.log('sub tracks 2');\n\n // try {\n // console.log('got sub info', JSON.stringify(info.subtitleTrackInfo));\n // } catch(e) {};\n for (var i = 0; i < info.subtitleTrackInfo.length; i++) {\n var textTrack = info.subtitleTrackInfo[i];\n textTrack.index = i;\n var textTrackLang = textTrack.language === '(null)' ? '' : textTrack.language;\n\n var textTrackId = 'EMBEDDED_' + textTrack.index;\n\n if (!currentSubTrack && !textTracks.length) {\n currentSubTrack = textTrackId;\n }\n\n textTracks.push({\n id: textTrackId,\n lang: textTrackLang,\n label: textTrackLang,\n origin: 'EMBEDDED',\n embedded: true,\n mode: textTrackId === currentSubTrack ? 'showing' : 'disabled',\n });\n\n }\n\n // console.log('sub tracks all', textTracks);\n\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n\n }\n };\n\n var setTracks = function (info) {\n audioTracks = [];\n // console.log('audio tracks 1, nr of audio tracks: ', info.numAudioTracks);\n if (info.numAudioTracks) {\n\n //console.log('audio tracks 2');\n\n // try {\n // console.log('got audio info', JSON.stringify(info.audioTrackInfo));\n // } catch(e) {};\n for (var i = 0; i < info.audioTrackInfo.length; i++) {\n var audioTrack = info.audioTrackInfo[i];\n audioTrack.index = i;\n var audioTrackId = 'EMBEDDED_' + audioTrack.index;\n if (!currentAudioTrack && !audioTracks.length) {\n currentAudioTrack = audioTrackId;\n }\n var audioTrackLang = audioTrack.language === '(null)' ? '' : audioTrack.language;\n audioTracks.push({\n id: audioTrackId,\n lang: audioTrackLang,\n label: audioTrackLang,\n origin: 'EMBEDDED',\n embedded: true,\n mode: audioTrackId === currentAudioTrack ? 'showing' : 'disabled',\n });\n }\n // console.log('audio tracks all', audioTracks);\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n\n }\n };\n\n var subscribe = function (cb) {\n if (subscribed) return;\n subscribed = true;\n var answered = false;\n // console.log('subscribing');\n luna({\n method: 'subscribe',\n parameters: {\n 'mediaId': knownMediaId,\n 'subscribe': true\n }\n }, function (result) {\n if (result.sourceInfo && !answered) {\n answered = true;\n // try {\n // console.log('got source info', JSON.stringify(result.sourceInfo.programInfo[0]));\n // } catch(e) {};\n var info = result.sourceInfo.programInfo[0];\n\n setSubs(info);\n\n setTracks(info);\n\n unsubscribe(cb);\n }\n\n if ((result.error || {}).errorCode) {\n answered = true;\n // console.error('luna playback error', result.error);\n unsubscribe(cb);\n // unsubscribe();\n // onVideoError();\n return;\n }\n\n if ((result.unloadCompleted || {}).mediaId === knownMediaId && (result.unloadCompleted || {}).state) {\n // strange case where it just.. ends? without ever getting result.sourceInfo\n // onEnded();\n // console.log('strange case of end');\n // unsubscribe(cb);\n return;\n }\n\n // console.log('WebOS', 'subscribe', JSON.stringify(result));\n count_message++;\n\n if (count_message === 30 && !answered) {\n // cb();\n unsubscribe(cb);\n }\n }, function() { // function(err)\n // console.log('luna error log 2');\n // console.error(err);\n });\n };\n\n var unsubscribe = function (cb) {\n if (!subscribed) return;\n subscribed = false;\n luna({\n method: 'unsubscribe',\n parameters: {\n 'mediaId': knownMediaId\n }\n }, function () { // function(result)\n // console.log('unsubscribe result', JSON.stringify(result));\n cb();\n }, function () { // function(err)\n // console.log('unsubscribe error', JSON.stringify(err));\n cb();\n });\n cb();\n };\n\n // var unload = function (cb) {\n // luna({\n // method: 'unload',\n // parameters: {\n // 'mediaId': knownMediaId\n // }\n // }, cb, cb);\n // };\n\n var toggleSubtitles = function (status) {\n if (!knownMediaId) return;\n\n disabledSubs = !status;\n\n // console.log('enable subs: ' + status);\n\n luna({\n method: 'setSubtitleEnable',\n parameters: {\n 'mediaId': knownMediaId,\n 'enable': status\n }\n });\n };\n\n var styleElement = document.createElement('style');\n containerElement.appendChild(styleElement);\n styleElement.sheet.insertRule('video::cue { font-size: 4vmin; color: rgb(255, 255, 255); background-color: rgba(0, 0, 0, 0); text-shadow: rgb(34, 34, 34) 1px 1px 0.1em; }');\n var videoElement = document.createElement('video');\n videoElement.style.width = '100%';\n videoElement.style.height = '100%';\n videoElement.style.backgroundColor = 'black';\n // videoElement.crossOrigin = 'anonymous';\n videoElement.controls = false;\n videoElement.onerror = function() {\n onVideoError();\n };\n videoElement.onended = function() {\n onEnded();\n };\n videoElement.onpause = function() {\n onPropChanged('paused');\n };\n videoElement.onplay = function() {\n onPropChanged('paused');\n };\n videoElement.ontimeupdate = function() {\n onPropChanged('time');\n onPropChanged('buffered');\n };\n videoElement.ondurationchange = function() {\n onPropChanged('duration');\n };\n videoElement.onwaiting = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onseeking = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onseeked = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onstalled = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onplaying = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.oncanplay = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.canplaythrough = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onloadeddata = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onloadedmetadata = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n setProp('time', startTime);\n };\n videoElement.onvolumechange = function() {\n onPropChanged('volume');\n onPropChanged('muted');\n };\n videoElement.onratechange = function() {\n onPropChanged('playbackSpeed');\n };\n videoElement.textTracks.onchange = function() {\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onCueChange();\n Array.from(videoElement.textTracks).forEach(function(track) {\n track.oncuechange = onCueChange;\n });\n };\n containerElement.appendChild(videoElement);\n\n var lastSubColor = null;\n var lastSubBgColor = null;\n var lastSubBgOpacity = 0;\n var lastPlaybackSpeed = 1;\n\n var events = new EventEmitter();\n var destroyed = false;\n var stream = null;\n var startTime = null;\n var subtitlesOffset = 0;\n var observedProps = {\n stream: false,\n paused: false,\n time: false,\n duration: false,\n buffering: false,\n buffered: false,\n subtitlesTracks: false,\n selectedSubtitlesTrackId: false,\n subtitlesOffset: false,\n subtitlesSize: false,\n subtitlesTextColor: false,\n subtitlesBackgroundColor: false,\n audioTracks: false,\n selectedAudioTrackId: false,\n volume: false,\n muted: false,\n playbackSpeed: false\n };\n\n function getProp(propName) {\n switch (propName) {\n case 'stream': {\n return stream;\n }\n case 'paused': {\n if (stream === null) {\n return null;\n }\n\n return !!videoElement.paused;\n }\n case 'time': {\n if (stream === null || videoElement.currentTime === null || !isFinite(videoElement.currentTime)) {\n return null;\n }\n\n return Math.floor(videoElement.currentTime * 1000);\n }\n case 'duration': {\n if (stream === null || videoElement.duration === null || !isFinite(videoElement.duration)) {\n return null;\n }\n\n return Math.floor(videoElement.duration * 1000);\n }\n case 'buffering': {\n if (stream === null) {\n return null;\n }\n\n return videoElement.readyState < videoElement.HAVE_FUTURE_DATA;\n }\n case 'buffered': {\n if (stream === null) {\n return null;\n }\n\n var time = videoElement.currentTime !== null && isFinite(videoElement.currentTime) ? videoElement.currentTime : 0;\n for (var i = 0; i < videoElement.buffered.length; i++) {\n if (videoElement.buffered.start(i) <= time && time <= videoElement.buffered.end(i)) {\n return Math.floor(videoElement.buffered.end(i) * 1000);\n }\n }\n\n return Math.floor(time * 1000);\n }\n case 'subtitlesTracks': {\n if (stream === null) {\n return [];\n }\n\n return textTracks;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream === null || disabledSubs) {\n return null;\n }\n\n return currentSubTrack;\n }\n case 'subtitlesOffset': {\n if (destroyed) {\n return null;\n }\n\n return subtitlesOffset;\n }\n case 'subtitlesSize': {\n if (destroyed) {\n return null;\n }\n\n return subSize;\n }\n case 'subtitlesTextColor': {\n if (destroyed) {\n return null;\n }\n\n return lastSubColor || 'rgba(255, 255, 255, 255)';\n }\n case 'subtitlesBackgroundColor': {\n if (destroyed) {\n return null;\n }\n\n return lastSubBgColor || 'rgba(255, 255, 255, 0)';\n }\n case 'audioTracks': {\n return audioTracks;\n }\n case 'selectedAudioTrackId': {\n return currentAudioTrack;\n }\n case 'volume': {\n if (destroyed || videoElement.volume === null || !isFinite(videoElement.volume)) {\n return null;\n }\n\n return Math.floor(videoElement.volume * 100);\n }\n case 'muted': {\n if (destroyed) {\n return null;\n }\n\n return !!videoElement.muted;\n }\n case 'playbackSpeed': {\n if (destroyed || lastPlaybackSpeed === null || !isFinite(lastPlaybackSpeed)) {\n return null;\n }\n\n return lastPlaybackSpeed;\n }\n default: {\n return null;\n }\n }\n }\n function onCueChange() {\n Array.from(videoElement.textTracks).forEach(function(track) {\n Array.from(track.cues || []).forEach(function(cue) {\n cue.snapToLines = false;\n cue.line = 100 - subtitlesOffset;\n });\n });\n }\n function onVideoError() {\n if (destroyed) {\n return;\n }\n\n var error;\n switch ((videoElement.error || {}).code) {\n case 1: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_ABORTED;\n break;\n }\n case 2: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_NETWORK;\n break;\n }\n case 3: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_DECODE;\n runWebOS({\n need: 'com.webos.app.photovideo',\n url: stream.url,\n name: 'Stremio',\n position: -1,\n });\n break;\n }\n case 4: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_SRC_NOT_SUPPORTED;\n runWebOS({\n need: 'com.webos.app.photovideo',\n url: stream.url,\n name: 'Stremio',\n position: -1,\n });\n break;\n }\n default: {\n error = ERROR.UNKNOWN_ERROR;\n }\n }\n onError(Object.assign({}, error, {\n critical: true,\n error: videoElement.error\n }));\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onEnded() {\n events.emit('ended');\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName));\n }\n }\n function observeProp(propName) {\n if (observedProps.hasOwnProperty(propName)) {\n events.emit('propValue', propName, getProp(propName));\n observedProps[propName] = true;\n }\n }\n function setProp(propName, propValue) {\n switch (propName) {\n case 'paused': {\n if (stream !== null) {\n propValue ? videoElement.pause() : videoElement.play();\n }\n\n break;\n }\n case 'time': {\n if (stream !== null && videoElement.readyState >= videoElement.HAVE_METADATA && propValue !== null && isFinite(propValue)) {\n try {\n videoElement.currentTime = parseInt(propValue, 10) / 1000;\n } catch(e) {\n // console.log('webos video change time error');\n // console.error(e);\n }\n }\n\n break;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream !== null) {\n if ((propValue || '').indexOf('EMBEDDED_') === 0) {\n if (disabledSubs) {\n toggleSubtitles(true);\n }\n\n // console.log('WebOS', 'change subtitles for id: ', knownMediaId, ' index:', propValue);\n\n currentSubTrack = propValue;\n var trackIndex = parseInt(propValue.replace('EMBEDDED_', ''));\n // console.log('set subs to track idx: ' + trackIndex);\n luna({\n method: 'selectTrack',\n parameters: {\n 'type': 'text',\n 'mediaId': knownMediaId,\n 'index': trackIndex\n }\n }, function() {\n // console.log('changed subs track successfully');\n var selectedSubtitlesTrack = getProp('subtitlesTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n textTracks = textTracks.map(function(track) {\n track.mode = track.id === currentSubTrack ? 'showing' : 'disabled';\n return track;\n });\n if (selectedSubtitlesTrack) {\n events.emit('subtitlesTrackLoaded', selectedSubtitlesTrack);\n onPropChanged('selectedSubtitlesTrackId');\n }\n });\n } else if (!propValue) {\n toggleSubtitles(false);\n }\n }\n\n break;\n }\n case 'subtitlesOffset': {\n if (propValue !== null && isFinite(propValue)) {\n subtitlesOffset = Math.max(0, Math.min(100, parseInt(propValue, 10)));\n var nextOffset = stremioSubOffsets(subtitleOffset);\n if (nextOffset === false) { // use default\n nextOffset = 0;\n }\n luna({\n method: 'setSubtitlePosition',\n parameters: {\n 'mediaId': knownMediaId,\n 'position': nextOffset,\n }\n }, function() {\n // console.log('successfully changed sub offset to: ' + nextOffset);\n });\n\n onPropChanged('subtitlesOffset');\n }\n\n break;\n }\n case 'subtitlesSize': {\n if (propValue !== null && isFinite(propValue)) {\n subSize = Math.max(0, parseInt(propValue, 10));\n var nextSubSize = stremioSubSizes(subSize);\n if (nextSubSize === false) { // use default\n nextSubSize = 2;\n }\n luna({\n method: 'setSubtitleFontSize',\n parameters: {\n 'mediaId': knownMediaId,\n 'fontSize': nextSubSize,\n }\n }, function() {\n // console.log('successfully changed sub size to: ' + nextSubSize);\n });\n\n onPropChanged('subtitlesSize');\n }\n\n break;\n }\n case 'subtitlesTextColor': {\n if (typeof propValue === 'string') {\n // we use setSubtitleCharacterColor instead of setSubtitleColor\n // because it has the same color options as the sub background\n var nextColor = 'white';\n if (stremioColors[propValue] && webOsColors.indexOf(stremioColors[propValue]) > -1) {\n nextColor = stremioColors[propValue];\n }\n luna({\n method: 'setSubtitleCharacterColor',\n parameters: {\n 'mediaId': knownMediaId,\n 'charColor': nextColor,\n }\n }, function() {\n // console.log('changed subtitle color successfully to: ' + nextColor);\n });\n lastSubColor = propValue;\n onPropChanged('subtitlesTextColor');\n }\n\n break;\n }\n case 'subtitlesBackgroundColor': {\n if (typeof propValue === 'string') {\n if (stremioColors[propValue] && webOsColors.indexOf(stremioColors[propValue]) > -1) {\n luna({\n method: 'setSubtitleBackgroundColor',\n parameters: {\n 'mediaId': knownMediaId,\n 'color': stremioColors[propValue],\n }\n }, function() {\n // console.log('changed subtitle background color successfully to: ' + stremioColors[propValue]);\n if (!lastSubBgOpacity) {\n luna({\n method: 'setSubtitleBackgroundOpacity',\n parameters: {\n 'mediaId': knownMediaId,\n 'bgOpacity': 255,\n }\n }, function() {\n // console.log('changed subtitle background opacity successfully to: ' + 255);\n lastSubBgOpacity = 255;\n });\n }\n });\n } else {\n // we don't know this color, set sub background opacity to 0\n luna({\n method: 'setSubtitleBackgroundOpacity',\n parameters: {\n 'mediaId': knownMediaId,\n 'bgOpacity': 0,\n }\n }, function() {\n // console.log('changed subtitle background opacity successfully to: ' + 0);\n lastSubBgOpacity = 0;\n });\n }\n lastSubBgColor = propValue;\n onPropChanged('subtitlesBackgroundColor');\n }\n\n break;\n }\n case 'selectedAudioTrackId': {\n // console.log('WebOS', 'change audio track for id: ', knownMediaId, ' index:', propValue);\n\n if ((propValue || '').indexOf('EMBEDDED_') === 0) {\n currentAudioTrack = propValue;\n var trackIndex = parseInt(propValue.replace('EMBEDDED_', ''));\n luna({\n method: 'selectTrack',\n parameters: {\n 'type': 'audio',\n 'mediaId': knownMediaId,\n 'index': trackIndex\n }\n }, function() {\n // console.log('changed audio track successfully');\n var selectedAudioTrack = getProp('audioTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n\n audioTracks = audioTracks.map(function(track) {\n track.mode = track.id === currentAudioTrack ? 'showing' : 'disabled';\n return track;\n });\n\n if (selectedAudioTrack) {\n events.emit('audioTrackLoaded', selectedAudioTrack);\n onPropChanged('selectedAudioTrackId');\n }\n });\n if (videoElement.audioTracks) {\n for (var i = 0; i < videoElement.audioTracks.length; i++) {\n videoElement.audioTracks[i].enabled = false;\n }\n\n if(videoElement.audioTracks[trackIndex]) {\n videoElement.audioTracks[trackIndex].enabled = true;\n\n // console.log('WebOS', 'change audio two method:', trackIndex);\n }\n }\n\n }\n\n break;\n }\n case 'volume': {\n if (propValue !== null && isFinite(propValue)) {\n videoElement.muted = false;\n videoElement.volume = Math.max(0, Math.min(100, parseInt(propValue, 10))) / 100;\n }\n\n break;\n }\n case 'muted': {\n videoElement.muted = !!propValue;\n break;\n }\n case 'playbackSpeed': {\n // console.log('start change play rate to: ' + propValue);\n // console.log(typeof propValue);\n if (propValue !== null && isFinite(propValue)) {\n lastPlaybackSpeed = parseFloat(propValue);\n luna({\n method: 'setPlayRate',\n parameters: {\n 'mediaId': knownMediaId,\n 'playRate': lastPlaybackSpeed,\n 'audioOutput': true,\n }\n }, function() {\n // console.log('set playback rate success: ', lastPlaybackSpeed);\n }, function() {\n // console.log('failed setting playback rate success: ', lastPlaybackSpeed);\n });\n onPropChanged('playbackSpeed');\n }\n\n break;\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n // not sure about this\n // command('unload');\n if (commandArgs && commandArgs.stream && typeof commandArgs.stream.url === 'string') {\n stream = commandArgs.stream;\n startTime = commandArgs.time;\n\n onPropChanged('stream');\n videoElement.autoplay = typeof commandArgs.autoplay === 'boolean' ? commandArgs.autoplay : true;\n\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('buffered');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n\n var count = 0;\n\n var initMediaId = function (cb) {\n function retrieveMediaId() {\n if (videoElement.mediaId) {\n knownMediaId = videoElement.mediaId;\n // console.log('got media id: ', videoElement.mediaId);\n clearInterval(timer);\n subscribe(cb);\n return;\n }\n count++;\n if (count > 4) {\n // console.log('failed to get media id');\n clearInterval(timer);\n cb();\n }\n }\n var timer = setInterval(retrieveMediaId, 300);\n };\n\n var startVideo = function () {\n // console.log('startVideo');\n // not needed?\n // videoElement.src = stream.url;\n\n try {\n videoElement.load();\n } catch(e) {\n // console.log('can\\'t load video');\n // console.error(e);\n }\n\n try {\n // console.log('try play');\n videoElement.play();\n } catch(e) {\n // console.log('can\\'t start video');\n // console.error(e);\n }\n };\n\n videoElement.src = stream.url;\n\n initMediaId(startVideo);\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null\n }));\n }\n break;\n }\n case 'unload': {\n stream = null;\n startTime = null;\n Array.from(videoElement.textTracks).forEach(function(track) {\n track.oncuechange = null;\n });\n videoElement.removeAttribute('src');\n videoElement.load();\n // not sure about this:\n // try {\n // videoElement.currentTime = 0;\n // } catch(e) {\n // console.log('webos video unload error');\n // console.error(e);\n // }\n onPropChanged('stream');\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('buffered');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n // not sure about this:\n // unload(function() {});\n break;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n onPropChanged('subtitlesOffset');\n onPropChanged('subtitlesSize');\n onPropChanged('subtitlesTextColor');\n onPropChanged('subtitlesBackgroundColor');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('playbackSpeed');\n events.removeAllListeners();\n videoElement.onerror = null;\n videoElement.onended = null;\n videoElement.onpause = null;\n videoElement.onplay = null;\n videoElement.ontimeupdate = null;\n videoElement.ondurationchange = null;\n videoElement.onwaiting = null;\n videoElement.onseeking = null;\n videoElement.onseeked = null;\n videoElement.onstalled = null;\n videoElement.onplaying = null;\n videoElement.oncanplay = null;\n videoElement.canplaythrough = null;\n videoElement.onloadeddata = null;\n videoElement.onloadedmetadata = null;\n videoElement.onvolumechange = null;\n videoElement.onratechange = null;\n videoElement.textTracks.onchange = null;\n containerElement.removeChild(videoElement);\n containerElement.removeChild(styleElement);\n break;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n return;\n }\n case 'setProp': {\n setProp(action.propName, action.propValue);\n return;\n }\n case 'command': {\n command(action.commandName, action.commandArgs);\n return;\n }\n }\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n}\n\nWebOsVideo.canPlayStream = function() { // function(stream)\n return Promise.resolve(true);\n};\n\nWebOsVideo.manifest = {\n name: 'WebOsVideo',\n external: false,\n props: ['stream', 'paused', 'time', 'duration', 'buffering', 'buffered', 'audioTracks', 'selectedAudioTrackId', 'subtitlesTracks', 'selectedSubtitlesTrackId', 'subtitlesOffset', 'subtitlesSize', 'subtitlesTextColor', 'subtitlesBackgroundColor', 'volume', 'muted', 'playbackSpeed'],\n commands: ['load', 'unload', 'destroy'],\n events: ['propValue', 'propChanged', 'ended', 'error', 'subtitlesTrackLoaded', 'audioTrackLoaded']\n};\n\nmodule.exports = WebOsVideo;\n","var WebOsVideo = require('./WebOsVideo');\n\nmodule.exports = WebOsVideo;\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar ERROR = require('../error');\n\nfunction YouTubeVideo(options) {\n options = options || {};\n\n var timeChangedTimeout = options.timeChangedTimeout !== null && isFinite(options.timeChangedTimeout) ? parseInt(options.timeChangedTimeout, 10) : 100;\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var apiScriptElement = document.createElement('script');\n apiScriptElement.type = 'text/javascript';\n apiScriptElement.src = 'https://www.youtube.com/iframe_api';\n apiScriptElement.onload = onAPILoaded;\n apiScriptElement.onerror = onAPIError;\n containerElement.appendChild(apiScriptElement);\n var videoContainerElement = document.createElement('div');\n videoContainerElement.style.width = '100%';\n videoContainerElement.style.height = '100%';\n videoContainerElement.style.backgroundColor = 'black';\n containerElement.appendChild(videoContainerElement);\n var timeChangedIntervalId = window.setInterval(function() {\n onPropChanged('time');\n onPropChanged('volume');\n onPropChanged('muted');\n }, timeChangedTimeout);\n\n var video = null;\n var ready = false;\n var pendingLoadArgs = null;\n var events = new EventEmitter();\n var destroyed = false;\n var stream = null;\n var selectedSubtitlesTrackId = null;\n var observedProps = {\n stream: false,\n loaded: false,\n paused: false,\n time: false,\n duration: false,\n buffering: false,\n volume: false,\n muted: false,\n subtitlesTracks: false,\n selectedSubtitlesTrackId: false\n };\n\n function onAPIError() {\n if (destroyed) {\n return;\n }\n\n onError(Object.assign({}, ERROR.YOUTUBE_VIDEO.API_LOAD_FAILED, {\n critical: true\n }));\n }\n function onAPILoaded() {\n if (destroyed) {\n return;\n }\n\n if (!YT || typeof YT.ready !== 'function') {\n onAPIError();\n return;\n }\n\n YT.ready(function() {\n if (destroyed) {\n return;\n }\n\n if (!YT || !YT.PlayerState || typeof YT.Player !== 'function') {\n onAPIError();\n return;\n }\n\n video = new YT.Player(videoContainerElement, {\n width: '100%',\n height: '100%',\n playerVars: {\n autoplay: 1,\n cc_load_policy: 3,\n controls: 0,\n disablekb: 1,\n enablejsapi: 1,\n fs: 0,\n iv_load_policy: 3,\n loop: 0,\n modestbranding: 1,\n playsinline: 1,\n rel: 0\n },\n events: {\n onError: onVideoError,\n onReady: onVideoReady,\n onApiChange: onVideoAPIChange,\n onStateChange: onVideoStateChange\n }\n });\n });\n }\n function onVideoError(videoError) {\n if (destroyed) {\n return;\n }\n\n var error;\n switch (videoError.data) {\n case 2: {\n error = ERROR.YOUTUBE_VIDEO.INVALID_PARAMETER;\n break;\n }\n case 5: {\n error = ERROR.YOUTUBE_VIDEO.HTML5_VIDEO;\n break;\n }\n case 100: {\n error = ERROR.YOUTUBE_VIDEO.VIDEO_NOT_FOUND;\n break;\n }\n case 101:\n case 150: {\n error = ERROR.YOUTUBE_VIDEO.VIDEO_NOT_EMBEDDABLE;\n break;\n }\n default: {\n error = ERROR.UNKNOWN_ERROR;\n }\n }\n onError(Object.assign({}, error, {\n critical: true,\n error: videoError\n }));\n }\n function onVideoReady() {\n if (destroyed) {\n return;\n }\n\n ready = true;\n if (pendingLoadArgs !== null) {\n command('load', pendingLoadArgs);\n pendingLoadArgs = null;\n }\n }\n function onVideoAPIChange() {\n if (destroyed) {\n return;\n }\n\n if (typeof video.loadModule === 'function') {\n video.loadModule('captions');\n }\n if (typeof video.setOption === 'function') {\n video.setOption('captions', 'track', {});\n }\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n }\n function onVideoStateChange(state) {\n onPropChanged('buffering');\n switch (state.data) {\n case YT.PlayerState.ENDED: {\n onEnded();\n break;\n }\n case YT.PlayerState.CUED:\n case YT.PlayerState.UNSTARTED:\n case YT.PlayerState.PAUSED:\n case YT.PlayerState.PLAYING: {\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n break;\n }\n }\n }\n function getProp(propName) {\n switch (propName) {\n case 'stream': {\n return stream;\n }\n case 'loaded': {\n if (stream === null) {\n return null;\n }\n\n return true;\n }\n case 'paused': {\n if (stream === null || typeof video.getPlayerState !== 'function') {\n return null;\n }\n\n return video.getPlayerState() !== YT.PlayerState.PLAYING;\n }\n case 'time': {\n if (stream === null || typeof video.getCurrentTime !== 'function' || video.getCurrentTime() === null || !isFinite(video.getCurrentTime())) {\n return null;\n }\n\n return Math.floor(video.getCurrentTime() * 1000);\n }\n case 'duration': {\n if (stream === null || typeof video.getDuration !== 'function' || video.getDuration() === null || !isFinite(video.getDuration())) {\n return null;\n }\n\n return Math.floor(video.getDuration() * 1000);\n }\n case 'buffering': {\n if (stream === null || typeof video.getPlayerState !== 'function') {\n return null;\n }\n\n return video.getPlayerState() === YT.PlayerState.BUFFERING;\n }\n case 'volume': {\n if (stream === null || typeof video.getVolume !== 'function' || video.getVolume() === null || !isFinite(video.getVolume())) {\n return null;\n }\n\n return video.getVolume();\n }\n case 'muted': {\n if (stream === null || typeof video.isMuted !== 'function') {\n return null;\n }\n\n return video.isMuted();\n }\n case 'subtitlesTracks': {\n if (stream === null || typeof video.getOption !== 'function') {\n return [];\n }\n\n return (video.getOption('captions', 'tracklist') || [])\n .filter(function(track) {\n return track && typeof track.languageCode === 'string';\n })\n .map(function(track, index) {\n return Object.freeze({\n id: 'EMBEDDED_' + String(index),\n lang: track.languageCode,\n label: typeof track.displayName === 'string' ? track.displayName : track.languageCode,\n origin: 'EMBEDDED',\n embedded: true\n });\n });\n }\n case 'selectedSubtitlesTrackId': {\n if (stream === null) {\n return null;\n }\n\n return selectedSubtitlesTrackId;\n }\n default: {\n return null;\n }\n }\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onEnded() {\n events.emit('ended');\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName));\n }\n }\n function observeProp(propName) {\n if (observedProps.hasOwnProperty(propName)) {\n events.emit('propValue', propName, getProp(propName));\n observedProps[propName] = true;\n }\n }\n function setProp(propName, propValue) {\n switch (propName) {\n case 'paused': {\n if (stream !== null) {\n propValue ?\n typeof video.pauseVideo === 'function' && video.pauseVideo()\n :\n typeof video.playVideo === 'function' && video.playVideo();\n }\n\n break;\n }\n case 'time': {\n if (stream !== null && typeof video.seekTo === 'function' && propValue !== null && isFinite(propValue)) {\n video.seekTo(parseInt(propValue, 10) / 1000);\n }\n\n break;\n }\n case 'volume': {\n if (stream !== null && propValue !== null && isFinite(propValue)) {\n if (typeof video.unMute === 'function') {\n video.unMute();\n }\n if (typeof video.setVolume === 'function') {\n video.setVolume(Math.max(0, Math.min(100, parseInt(propValue, 10))));\n }\n onPropChanged('muted');\n onPropChanged('volume');\n }\n\n break;\n }\n case 'muted': {\n if (stream !== null) {\n propValue ?\n typeof video.mute === 'function' && video.mute()\n :\n typeof video.unMute === 'function' && video.unMute();\n onPropChanged('muted');\n }\n\n break;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream !== null) {\n selectedSubtitlesTrackId = null;\n var selecterdTrack = getProp('subtitlesTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n if (typeof video.setOption === 'function') {\n if (selecterdTrack) {\n selectedSubtitlesTrackId = selecterdTrack.id;\n video.setOption('captions', 'track', {\n languageCode: selecterdTrack.lang\n });\n events.emit('subtitlesTrackLoaded', selecterdTrack);\n } else {\n video.setOption('captions', 'track', {});\n }\n }\n onPropChanged('selectedSubtitlesTrackId');\n }\n\n break;\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n command('unload');\n if (commandArgs && commandArgs.stream && typeof commandArgs.stream.ytId === 'string') {\n if (ready) {\n stream = commandArgs.stream;\n onPropChanged('stream');\n onPropChanged('loaded');\n var autoplay = typeof commandArgs.autoplay === 'boolean' ? commandArgs.autoplay : true;\n var time = commandArgs.time !== null && isFinite(commandArgs.time) ? parseInt(commandArgs.time, 10) / 1000 : 0;\n if (autoplay && typeof video.loadVideoById === 'function') {\n video.loadVideoById({\n videoId: commandArgs.stream.ytId,\n startSeconds: time\n });\n } else if (typeof video.cueVideoById === 'function') {\n video.cueVideoById({\n videoId: commandArgs.stream.ytId,\n startSeconds: time\n });\n }\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n } else {\n pendingLoadArgs = commandArgs;\n }\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null\n }));\n }\n\n break;\n }\n case 'unload': {\n pendingLoadArgs = null;\n stream = null;\n onPropChanged('stream');\n onPropChanged('loaded');\n selectedSubtitlesTrackId = null;\n if (ready && typeof video.stopVideo === 'function') {\n video.stopVideo();\n }\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n break;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n events.removeAllListeners();\n clearInterval(timeChangedIntervalId);\n if (ready && typeof video.destroy === 'function') {\n video.destroy();\n }\n containerElement.removeChild(apiScriptElement);\n containerElement.removeChild(videoContainerElement);\n break;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n return;\n }\n case 'setProp': {\n setProp(action.propName, action.propValue);\n return;\n }\n case 'command': {\n command(action.commandName, action.commandArgs);\n return;\n }\n }\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n}\n\nYouTubeVideo.canPlayStream = function(stream) {\n return Promise.resolve(stream && typeof stream.ytId === 'string');\n};\n\nYouTubeVideo.manifest = {\n name: 'YouTubeVideo',\n external: false,\n props: ['stream', 'loaded', 'paused', 'time', 'duration', 'buffering', 'volume', 'muted', 'subtitlesTracks', 'selectedSubtitlesTrackId'],\n commands: ['load', 'unload', 'destroy'],\n events: ['propValue', 'propChanged', 'ended', 'error', 'subtitlesTrackLoaded']\n};\n\nmodule.exports = YouTubeVideo;\n","var YouTubeVideo = require('./YouTubeVideo');\n\nmodule.exports = YouTubeVideo;\n","var ERROR = {\n CHROMECAST_SENDER_VIDEO: {\n INVALID_MESSAGE_RECEIVED: {\n code: 100,\n message: 'Invalid message received'\n },\n MESSAGE_SEND_FAILED: {\n code: 101,\n message: 'Failed to send message'\n }\n },\n YOUTUBE_VIDEO: {\n API_LOAD_FAILED: {\n code: 90,\n message: 'YouTube player iframe API failed to load',\n },\n INVALID_PARAMETER: {\n code: 91,\n message: 'The request contains an invalid parameter value'\n },\n HTML5_VIDEO: {\n code: 92,\n message: 'The requested content cannot be played in an HTML5 player'\n },\n VIDEO_NOT_FOUND: {\n code: 93,\n message: 'The video requested was not found'\n },\n VIDEO_NOT_EMBEDDABLE: {\n code: 94,\n message: 'The owner of the requested video does not allow it to be played in embedded players'\n }\n },\n HTML_VIDEO: {\n MEDIA_ERR_ABORTED: {\n code: 80,\n message: 'Fetching process aborted'\n },\n MEDIA_ERR_NETWORK: {\n code: 81,\n message: 'Error occurred when downloading'\n },\n MEDIA_ERR_DECODE: {\n code: 82,\n message: 'Error occurred when decoding'\n },\n MEDIA_ERR_SRC_NOT_SUPPORTED: {\n code: 83,\n message: 'Video is not supported'\n }\n },\n WITH_HTML_SUBTITLES: {\n LOAD_FAILED: {\n code: 70,\n message: 'Failed to load external subtitles'\n }\n },\n WITH_STREAMING_SERVER: {\n CONVERT_FAILED: {\n code: 60,\n message: 'Streaming server failed to convert torrent stream'\n }\n },\n UNKNOWN_ERROR: {\n code: 1,\n message: 'Unknown error'\n },\n UNSUPPORTED_STREAM: {\n code: 2,\n message: 'Stream is not supported'\n }\n};\n\nmodule.exports = ERROR;\n","var StremioVideo = require('./StremioVideo');\n\nmodule.exports = StremioVideo;\n","var VIDEO_CODEC_CONFIGS = [\n {\n codec: 'h264',\n mime: 'video/mp4; codecs=\"avc1.42E01E\"',\n },\n {\n codec: 'h265',\n mime: 'video/mp4; codecs=\"hev1.1.6.L150.B0\"',\n aliases: ['hevc']\n },\n {\n codec: 'vp8',\n mime: 'video/mp4; codecs=\"vp8\"'\n },\n {\n codec: 'vp9',\n mime: 'video/mp4; codecs=\"vp9\"'\n }\n];\n\nvar AUDIO_CODEC_CONFIGS = [\n {\n codec: 'aac',\n mime: 'audio/mp4; codecs=\"mp4a.40.2\"'\n },\n {\n codec: 'mp3',\n mime: 'audio/mp4; codecs=\"mp3\"'\n },\n {\n codec: 'ac3',\n mime: 'audio/mp4; codecs=\"ac-3\"'\n },\n {\n codec: 'eac3',\n mime: 'audio/mp4; codecs=\"ec-3\"'\n },\n {\n codec: 'vorbis',\n mime: 'audio/mp4; codecs=\"vorbis\"'\n },\n {\n codec: 'opus',\n mime: 'audio/mp4; codecs=\"opus\"'\n }\n];\n\nfunction canPlay(config, options) {\n return options.mediaElement.canPlayType(config.mime) ?\n [config.codec].concat(config.aliases || [])\n :\n [];\n}\n\nfunction getMaxAudioChannels() {\n if (/firefox/i.test(window.navigator.userAgent)) {\n return 6;\n }\n\n if (!window.AudioContext) {\n return 2;\n }\n\n var maxChannelCount = new AudioContext().destination.maxChannelCount;\n return maxChannelCount > 0 ? maxChannelCount : 2;\n}\n\nfunction getMediaCapabilities() {\n var mediaElement = document.createElement('video');\n var formats = ['mp4'];\n var videoCodecs = VIDEO_CODEC_CONFIGS\n .map(function(config) {\n return canPlay(config, { mediaElement: mediaElement });\n })\n .reduce(function(result, value) {\n return result.concat(value);\n }, []);\n var audioCodecs = AUDIO_CODEC_CONFIGS\n .map(function(config) {\n return canPlay(config, { mediaElement: mediaElement });\n })\n .reduce(function(result, value) {\n return result.concat(value);\n }, []);\n var maxAudioChannels = getMaxAudioChannels();\n return {\n formats: formats,\n videoCodecs: videoCodecs,\n audioCodecs: audioCodecs,\n maxAudioChannels: maxAudioChannels\n };\n}\n\nmodule.exports = getMediaCapabilities();\n","function binarySearchUpperBound(array, value) {\n if (value < array[0] || array[array.length - 1] < value) {\n return -1;\n }\n\n var left = 0;\n var right = array.length - 1;\n var index = -1;\n while (left <= right) {\n var middle = Math.floor((left + right) / 2);\n if (array[middle] > value) {\n right = middle - 1;\n } else if (array[middle] < value) {\n left = middle + 1;\n } else {\n index = middle;\n left = middle + 1;\n }\n }\n\n return index !== -1 ? index : right;\n}\n\nmodule.exports = binarySearchUpperBound;\n","var withHTMLSubtitles = require('./withHTMLSubtitles');\n\nmodule.exports = withHTMLSubtitles;\n","// from: https://github.com/silviapfeiffer/silviapfeiffer.github.io/blob/master/index.html#L150-L216\n\nfunction srt2webvtt(data) {\n // remove dos newlines\n var srt = data.replace(/\\r+/g, '');\n // trim white space start and end\n srt = srt.replace(/^\\s+|\\s+$/g, '');\n // get cues\n var cuelist = srt.split('\\n\\n');\n var result = '';\n if (cuelist.length > 0) {\n result += 'WEBVTT\\n\\n';\n for (var i = 0; i < cuelist.length; i = i + 1) {\n result += convertSrtCue(cuelist[i]);\n }\n }\n return result;\n}\n\nfunction convertSrtCue(caption) {\n // remove all html tags for security reasons\n caption = caption.replace(/<[a-zA-Z/][^>]*>/g, '');\n\n var cue = '';\n var s = caption.split(/\\n/);\n // concatenate muilt-line string separated in array into one\n while (s.length > 3) {\n for (var i = 3; i < s.length; i++) {\n s[2] += '\\n' + s[i];\n }\n s.splice(3, s.length - 3);\n }\n var line = 0;\n // detect identifier\n if (!s[0].match(/\\d+:\\d+:\\d+/) && s[1].match(/\\d+:\\d+:\\d+/)) {\n cue += s[0].match(/\\w+/) + '\\n';\n line += 1;\n }\n // get time strings\n if (s[line].match(/\\d+:\\d+:\\d+/)) {\n // convert time string\n var m = s[1].match(/(\\d+):(\\d+):(\\d+)(?:,(\\d+))?\\s*--?>\\s*(\\d+):(\\d+):(\\d+)(?:,(\\d+))?/);\n if (m) {\n cue += m[1] + ':' + m[2] + ':' + m[3] + '.' + m[4] + ' --> '\n + m[5] + ':' + m[6] + ':' + m[7] + '.' + m[8] + '\\n';\n line += 1;\n } else {\n // Unrecognized timestring\n return '';\n }\n } else {\n // file format error or comment lines\n return '';\n }\n // get cue text\n if (s[line]) {\n cue += s[line] + '\\n\\n';\n }\n return cue;\n}\n\nmodule.exports = {\n convert: function(text) {\n // presume all to be SRT if not WEBVTT\n if (text.includes('WEBVTT')) {\n return text;\n }\n\n try {\n return srt2webvtt(text);\n } catch (error) {\n throw new Error('Failed to convert srt to webvtt: ' + error.message);\n }\n }\n};\n","var VTTJS = require('vtt.js');\nvar binarySearchUpperBound = require('./binarySearchUpperBound');\n\nvar CRITICAL_ERROR_CODE = 0;\n\nfunction parse(text) {\n return new Promise(function(resolve, reject) {\n var parser = new VTTJS.WebVTT.Parser(window, VTTJS.WebVTT.StringDecoder());\n var errors = [];\n var cues = [];\n var cuesByTime = {};\n\n parser.oncue = function(c) {\n var cue = {\n startTime: (c.startTime * 1000) | 0,\n endTime: (c.endTime * 1000) | 0,\n text: c.text\n };\n cues.push(cue);\n cuesByTime[cue.startTime] = cuesByTime[cue.startTime] || [];\n cuesByTime[cue.endTime] = cuesByTime[cue.endTime] || [];\n };\n\n parser.onparsingerror = function(error) {\n if (error.code === CRITICAL_ERROR_CODE) {\n parser.oncue = null;\n parser.onparsingerror = null;\n parser.onflush = null;\n reject(error);\n } else {\n console.warn('Subtitles parsing error', error);\n errors.push(error);\n }\n };\n\n parser.onflush = function() {\n cuesByTime.times = Object.keys(cuesByTime)\n .map(function(time) {\n return parseInt(time, 10);\n })\n .sort(function(t1, t2) {\n return t1 - t2;\n });\n for (var i = 0; i < cues.length; i++) {\n cuesByTime[cues[i].startTime].push(cues[i]);\n var startTimeIndex = binarySearchUpperBound(cuesByTime.times, cues[i].startTime);\n for (var j = startTimeIndex + 1; j < cuesByTime.times.length; j++) {\n if (cues[i].endTime <= cuesByTime.times[j]) {\n break;\n }\n\n cuesByTime[cuesByTime.times[j]].push(cues[i]);\n }\n }\n\n for (var k = 0; k < cuesByTime.times.length; k++) {\n cuesByTime[cuesByTime.times[k]].sort(function(c1, c2) {\n return c1.startTime - c2.startTime ||\n c1.endTime - c2.endTime;\n });\n }\n\n parser.oncue = null;\n parser.onparsingerror = null;\n parser.onflush = null;\n // we may have multiple parsing errors here, but will only respond with the first\n // if subtitle cues are available, we will not reject the promise\n if (cues.length === 0 && errors.length) {\n reject(errors[0]);\n } else if (cuesByTime.times.length === 0) {\n reject(new Error('Missing subtitle track cues'));\n } else {\n resolve(cuesByTime);\n }\n };\n\n parser.parse(text);\n });\n}\n\nmodule.exports = {\n parse: parse\n};\n","var VTTJS = require('vtt.js');\nvar binarySearchUpperBound = require('./binarySearchUpperBound');\n\nfunction render(cuesByTime, time) {\n var nodes = [];\n var timeIndex = binarySearchUpperBound(cuesByTime.times, time);\n if (timeIndex !== -1) {\n var cuesForTime = cuesByTime[cuesByTime.times[timeIndex]];\n for (var i = 0; i < cuesForTime.length; i++) {\n var node = VTTJS.WebVTT.convertCueToDOMTree(window, cuesForTime[i].text);\n nodes.push(node);\n }\n }\n\n return nodes;\n}\n\nmodule.exports = {\n render: render\n};\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar Color = require('color');\nvar ERROR = require('../error');\nvar subtitlesParser = require('./subtitlesParser');\nvar subtitlesRenderer = require('./subtitlesRenderer');\nvar subtitlesConverter = require('./subtitlesConverter');\n\nfunction withHTMLSubtitles(Video) {\n function VideoWithHTMLSubtitles(options) {\n options = options || {};\n\n var video = new Video(options);\n video.on('error', onVideoError);\n video.on('propValue', onVideoPropEvent.bind(null, 'propValue'));\n video.on('propChanged', onVideoPropEvent.bind(null, 'propChanged'));\n Video.manifest.events\n .filter(function(eventName) {\n return !['error', 'propValue', 'propChanged'].includes(eventName);\n })\n .forEach(function(eventName) {\n video.on(eventName, onOtherVideoEvent(eventName));\n });\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var subtitlesElement = document.createElement('div');\n subtitlesElement.style.position = 'absolute';\n subtitlesElement.style.right = '0';\n subtitlesElement.style.bottom = '0';\n subtitlesElement.style.left = '0';\n subtitlesElement.style.zIndex = '1';\n subtitlesElement.style.textAlign = 'center';\n containerElement.style.position = 'relative';\n containerElement.style.zIndex = '0';\n containerElement.appendChild(subtitlesElement);\n\n var videoState = {\n time: null\n };\n var cuesByTime = null;\n var events = new EventEmitter();\n var destroyed = false;\n var tracks = [];\n var selectedTrackId = null;\n var delay = null;\n var size = 100;\n var offset = 0;\n var textColor = 'rgb(255, 255, 255)';\n var backgroundColor = 'rgba(0, 0, 0, 0)';\n var outlineColor = 'rgb(34, 34, 34)';\n var observedProps = {\n extraSubtitlesTracks: false,\n selectedExtraSubtitlesTrackId: false,\n extraSubtitlesDelay: false,\n extraSubtitlesSize: false,\n extraSubtitlesOffset: false,\n extraSubtitlesTextColor: false,\n extraSubtitlesBackgroundColor: false,\n extraSubtitlesOutlineColor: false\n };\n\n function renderSubtitles() {\n while (subtitlesElement.hasChildNodes()) {\n subtitlesElement.removeChild(subtitlesElement.lastChild);\n }\n\n if (cuesByTime === null || videoState.time === null || !isFinite(videoState.time)) {\n return;\n }\n\n subtitlesElement.style.bottom = offset + '%';\n subtitlesRenderer.render(cuesByTime, videoState.time + delay).forEach(function(cueNode) {\n cueNode.style.display = 'inline-block';\n cueNode.style.padding = '0.2em';\n cueNode.style.fontSize = Math.floor(size / 25) + 'vmin';\n cueNode.style.color = textColor;\n cueNode.style.backgroundColor = backgroundColor;\n cueNode.style.textShadow = '1px 1px 0.1em ' + outlineColor;\n subtitlesElement.appendChild(cueNode);\n subtitlesElement.appendChild(document.createElement('br'));\n });\n }\n function onVideoError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onVideoPropEvent(eventName, propName, propValue) {\n switch (propName) {\n case 'time': {\n videoState.time = propValue;\n renderSubtitles();\n break;\n }\n }\n\n events.emit(eventName, propName, getProp(propName, propValue));\n }\n function onOtherVideoEvent(eventName) {\n return function() {\n events.emit.apply(events, [eventName].concat(Array.from(arguments)));\n };\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName, null));\n }\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n video.dispatch({ type: 'command', commandName: 'unload' });\n }\n }\n function getProp(propName, videoPropValue) {\n switch (propName) {\n case 'extraSubtitlesTracks': {\n if (destroyed) {\n return [];\n }\n\n return tracks.slice();\n }\n case 'selectedExtraSubtitlesTrackId': {\n if (destroyed) {\n return null;\n }\n\n return selectedTrackId;\n }\n case 'extraSubtitlesDelay': {\n if (destroyed) {\n return null;\n }\n\n return delay;\n }\n case 'extraSubtitlesSize': {\n if (destroyed) {\n return null;\n }\n\n return size;\n }\n case 'extraSubtitlesOffset': {\n if (destroyed) {\n return null;\n }\n\n return offset;\n }\n case 'extraSubtitlesTextColor': {\n if (destroyed) {\n return null;\n }\n\n return textColor;\n }\n case 'extraSubtitlesBackgroundColor': {\n if (destroyed) {\n return null;\n }\n\n return backgroundColor;\n }\n case 'extraSubtitlesOutlineColor': {\n if (destroyed) {\n return null;\n }\n\n return outlineColor;\n }\n default: {\n return videoPropValue;\n }\n }\n }\n function observeProp(propName) {\n switch (propName) {\n case 'extraSubtitlesTracks':\n case 'selectedExtraSubtitlesTrackId':\n case 'extraSubtitlesDelay':\n case 'extraSubtitlesSize':\n case 'extraSubtitlesOffset':\n case 'extraSubtitlesTextColor':\n case 'extraSubtitlesBackgroundColor':\n case 'extraSubtitlesOutlineColor': {\n events.emit('propValue', propName, getProp(propName, null));\n observedProps[propName] = true;\n return true;\n }\n default: {\n return false;\n }\n }\n }\n function setProp(propName, propValue) {\n switch (propName) {\n case 'selectedExtraSubtitlesTrackId': {\n cuesByTime = null;\n selectedTrackId = null;\n delay = null;\n var selectedTrack = tracks.find(function(track) {\n return track.id === propValue;\n });\n if (selectedTrack) {\n selectedTrackId = selectedTrack.id;\n delay = 0;\n fetch(selectedTrack.url)\n .then(function(resp) {\n if (resp.ok) {\n return resp.text();\n }\n\n throw new Error(resp.status + ' (' + resp.statusText + ')');\n })\n .then(function(text) {\n return subtitlesConverter.convert(text);\n })\n .then(function(text) {\n return subtitlesParser.parse(text);\n })\n .then(function(result) {\n if (selectedTrackId !== selectedTrack.id) {\n return;\n }\n\n cuesByTime = result;\n renderSubtitles();\n events.emit('extraSubtitlesTrackLoaded', selectedTrack);\n })\n .catch(function(error) {\n if (selectedTrackId !== selectedTrack.id) {\n return;\n }\n\n onError(Object.assign({}, ERROR.WITH_HTML_SUBTITLES.LOAD_FAILED, {\n error: error,\n track: selectedTrack,\n critical: false\n }));\n });\n }\n renderSubtitles();\n onPropChanged('selectedExtraSubtitlesTrackId');\n onPropChanged('extraSubtitlesDelay');\n return true;\n }\n case 'extraSubtitlesDelay': {\n if (selectedTrackId !== null && propValue !== null && isFinite(propValue)) {\n delay = parseInt(propValue, 10);\n renderSubtitles();\n onPropChanged('extraSubtitlesDelay');\n }\n\n return true;\n }\n case 'extraSubtitlesSize': {\n if (propValue !== null && isFinite(propValue)) {\n size = Math.max(0, parseInt(propValue, 10));\n renderSubtitles();\n onPropChanged('extraSubtitlesSize');\n }\n\n return true;\n }\n case 'extraSubtitlesOffset': {\n if (propValue !== null && isFinite(propValue)) {\n offset = Math.max(0, Math.min(100, parseInt(propValue, 10)));\n renderSubtitles();\n onPropChanged('extraSubtitlesOffset');\n }\n\n return true;\n }\n case 'extraSubtitlesTextColor': {\n if (typeof propValue === 'string') {\n try {\n textColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('withHTMLSubtitles', error);\n }\n\n renderSubtitles();\n onPropChanged('extraSubtitlesTextColor');\n }\n\n return true;\n }\n case 'extraSubtitlesBackgroundColor': {\n if (typeof propValue === 'string') {\n try {\n backgroundColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('withHTMLSubtitles', error);\n }\n\n renderSubtitles();\n onPropChanged('extraSubtitlesBackgroundColor');\n }\n\n return true;\n }\n case 'extraSubtitlesOutlineColor': {\n if (typeof propValue === 'string') {\n try {\n outlineColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('withHTMLSubtitles', error);\n }\n\n renderSubtitles();\n onPropChanged('extraSubtitlesOutlineColor');\n }\n\n return true;\n }\n default: {\n return false;\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'addExtraSubtitlesTracks': {\n if (commandArgs && Array.isArray(commandArgs.tracks)) {\n tracks = tracks\n .concat(commandArgs.tracks)\n .filter(function(track, index, tracks) {\n return track &&\n typeof track.id === 'string' &&\n typeof track.url === 'string' &&\n typeof track.lang === 'string' &&\n typeof track.label === 'string' &&\n typeof track.origin === 'string' &&\n !track.embedded &&\n index === tracks.findIndex(function(t) { return t.id === track.id; });\n });\n onPropChanged('extraSubtitlesTracks');\n }\n\n return true;\n }\n case 'load': {\n command('unload');\n if (commandArgs.stream && Array.isArray(commandArgs.stream.subtitles)) {\n command('addExtraSubtitlesTracks', {\n tracks: commandArgs.stream.subtitles.map(function(track) {\n return Object.assign({}, track, {\n origin: 'EXCLUSIVE',\n exclusive: true,\n embedded: false\n });\n })\n });\n }\n\n return false;\n }\n case 'unload': {\n cuesByTime = null;\n tracks = [];\n selectedTrackId = null;\n delay = null;\n renderSubtitles();\n onPropChanged('extraSubtitlesTracks');\n onPropChanged('selectedExtraSubtitlesTrackId');\n onPropChanged('extraSubtitlesDelay');\n return false;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n onPropChanged('extraSubtitlesSize');\n onPropChanged('extraSubtitlesOffset');\n onPropChanged('extraSubtitlesTextColor');\n onPropChanged('extraSubtitlesBackgroundColor');\n onPropChanged('extraSubtitlesOutlineColor');\n video.dispatch({ type: 'command', commandName: 'destroy' });\n events.removeAllListeners();\n containerElement.removeChild(subtitlesElement);\n return true;\n }\n default: {\n return false;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n if (observeProp(action.propName)) {\n return;\n }\n\n break;\n }\n case 'setProp': {\n if (setProp(action.propName, action.propValue)) {\n return;\n }\n\n break;\n }\n case 'command': {\n if (command(action.commandName, action.commandArgs)) {\n return;\n }\n\n break;\n }\n }\n }\n\n video.dispatch(action);\n };\n }\n\n VideoWithHTMLSubtitles.canPlayStream = function(stream) {\n return Video.canPlayStream(stream);\n };\n\n VideoWithHTMLSubtitles.manifest = {\n name: Video.manifest.name + 'WithHTMLSubtitles',\n external: Video.manifest.external,\n props: Video.manifest.props.concat(['extraSubtitlesTracks', 'selectedExtraSubtitlesTrackId', 'extraSubtitlesDelay', 'extraSubtitlesSize', 'extraSubtitlesOffset', 'extraSubtitlesTextColor', 'extraSubtitlesBackgroundColor', 'extraSubtitlesOutlineColor'])\n .filter(function(value, index, array) { return array.indexOf(value) === index; }),\n commands: Video.manifest.commands.concat(['load', 'unload', 'destroy', 'addExtraSubtitlesTracks'])\n .filter(function(value, index, array) { return array.indexOf(value) === index; }),\n events: Video.manifest.events.concat(['propValue', 'propChanged', 'error', 'extraSubtitlesTrackLoaded'])\n .filter(function(value, index, array) { return array.indexOf(value) === index; })\n };\n\n return VideoWithHTMLSubtitles;\n}\n\nmodule.exports = withHTMLSubtitles;\n","var magnet = require('magnet-uri');\nvar createTorrent = require('./createTorrent');\n\nfunction convertStream(streamingServerURL, stream, seriesInfo) {\n return new Promise(function(resolve, reject) {\n if (typeof stream.url === 'string') {\n if (stream.url.indexOf('magnet:') === 0) {\n var parsedMagnetURI;\n try {\n parsedMagnetURI = magnet.decode(stream.url);\n if (!parsedMagnetURI || typeof parsedMagnetURI.infoHash !== 'string') {\n throw new Error('Failed to decode magnet url');\n }\n } catch (error) {\n reject(error);\n return;\n }\n\n var sources = Array.isArray(parsedMagnetURI.announce) ?\n parsedMagnetURI.announce.map(function(source) {\n return 'tracker:' + source;\n })\n :\n [];\n createTorrent(streamingServerURL, parsedMagnetURI.infoHash, null, sources, seriesInfo)\n .then(function(url) {\n resolve(url);\n })\n .catch(function(error) {\n reject(error);\n });\n } else {\n resolve(stream.url);\n }\n\n return;\n }\n\n if (typeof stream.infoHash === 'string') {\n createTorrent(streamingServerURL, stream.infoHash, stream.fileIdx, stream.announce, seriesInfo)\n .then(function(url) {\n resolve(url);\n })\n .catch(function(error) {\n reject(error);\n });\n\n return;\n }\n\n reject(new Error('Stream cannot be converted'));\n });\n}\n\nmodule.exports = convertStream;\n","var url = require('url');\n\nfunction buildTorrentUrl(streamingServerURL, infoHash, fileIdx, sources) {\n var query = Array.isArray(sources) && sources.length > 0 ?\n '?' + new URLSearchParams(sources.map(function(source) {\n return ['tr', source];\n }))\n :\n '';\n return url.resolve(streamingServerURL, '/' + encodeURIComponent(infoHash) + '/' + encodeURIComponent(fileIdx)) + query;\n}\n\nfunction createTorrent(streamingServerURL, infoHash, fileIdx, sources, seriesInfo) {\n if ((!Array.isArray(sources) || sources.length === 0) && (fileIdx !== null && isFinite(fileIdx))) {\n return Promise.resolve(buildTorrentUrl(streamingServerURL, infoHash, fileIdx, sources));\n }\n\n var body = {\n torrent: {\n infoHash: infoHash,\n }\n };\n\n if (Array.isArray(sources) && sources.length > 0) {\n body.peerSearch = {\n sources: ['dht:' + infoHash].concat(sources).filter(function(source, index, sources) {\n return sources.indexOf(source) === index;\n }),\n min: 40,\n max: 200\n };\n }\n\n if (fileIdx === null || !isFinite(fileIdx)) {\n body.guessFileIdx = {};\n if (seriesInfo) {\n if (seriesInfo.season !== null && isFinite(seriesInfo.season)) {\n body.guessFileIdx.season = seriesInfo.season;\n }\n if (seriesInfo.episode !== null && isFinite(seriesInfo.episode)) {\n body.guessFileIdx.episode = seriesInfo.episode;\n }\n }\n } else {\n body.guessFileIdx = false;\n }\n\n return fetch(url.resolve(streamingServerURL, '/' + encodeURIComponent(infoHash) + '/create'), {\n method: 'POST',\n headers: {\n 'content-type': 'application/json'\n },\n body: JSON.stringify(body)\n }).then(function(resp) {\n if (resp.ok) {\n return resp.json();\n }\n\n throw new Error(resp.status + ' (' + resp.statusText + ')');\n }).then(function(resp) {\n return buildTorrentUrl(streamingServerURL, infoHash, body.guessFileIdx ? resp.guessedFileIdx : fileIdx, body.peerSearch ? body.peerSearch.sources : []);\n });\n}\n\nmodule.exports = createTorrent;\n","var withStreamingServer = require('./withStreamingServer');\n\nmodule.exports = withStreamingServer;\n","var EventEmitter = require('eventemitter3');\nvar url = require('url');\nvar hat = require('hat');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar mediaCapabilities = require('../mediaCapabilities');\nvar convertStream = require('./convertStream');\nvar ERROR = require('../error');\n\nfunction withStreamingServer(Video) {\n function VideoWithStreamingServer(options) {\n options = options || {};\n\n var video = new Video(options);\n video.on('error', onVideoError);\n video.on('propValue', onVideoPropEvent.bind(null, 'propValue'));\n video.on('propChanged', onVideoPropEvent.bind(null, 'propChanged'));\n Video.manifest.events\n .filter(function(eventName) {\n return !['error', 'propValue', 'propChanged'].includes(eventName);\n })\n .forEach(function(eventName) {\n video.on(eventName, onOtherVideoEvent(eventName));\n });\n\n var self = this;\n var loadArgs = null;\n var loaded = false;\n var actionsQueue = [];\n var events = new EventEmitter();\n var destroyed = false;\n var observedProps = {\n stream: false\n };\n\n function flushActionsQueue() {\n while (actionsQueue.length > 0) {\n var action = actionsQueue.shift();\n self.dispatch.call(self, action);\n }\n }\n function onVideoError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onVideoPropEvent(eventName, propName, propValue) {\n events.emit(eventName, propName, getProp(propName, propValue));\n }\n function onOtherVideoEvent(eventName) {\n return function() {\n events.emit.apply(events, [eventName].concat(Array.from(arguments)));\n };\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName, null));\n }\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n video.dispatch({ type: 'command', commandName: 'unload' });\n }\n }\n function getProp(propName, videoPropValue) {\n switch (propName) {\n case 'stream': {\n return loadArgs !== null ? loadArgs.stream : null;\n }\n default: {\n return videoPropValue;\n }\n }\n }\n function observeProp(propName) {\n switch (propName) {\n case 'stream': {\n events.emit('propValue', propName, getProp(propName, null));\n observedProps[propName] = true;\n return true;\n }\n default: {\n return false;\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n if (commandArgs && commandArgs.stream && typeof commandArgs.streamingServerURL === 'string') {\n command('unload');\n video.dispatch({ type: 'command', commandName: 'unload' });\n loadArgs = commandArgs;\n onPropChanged('stream');\n convertStream(commandArgs.streamingServerURL, commandArgs.stream, commandArgs.seriesInfo)\n .then(function(mediaURL) {\n var formats = Array.isArray(commandArgs.formats) ?\n commandArgs.formats\n :\n mediaCapabilities.formats;\n var videoCodecs = Array.isArray(commandArgs.videoCodecs) ?\n commandArgs.videoCodecs\n :\n mediaCapabilities.videoCodecs;\n var audioCodecs = Array.isArray(commandArgs.audioCodecs) ?\n commandArgs.audioCodecs\n :\n mediaCapabilities.audioCodecs;\n var maxAudioChannels = commandArgs.maxAudioChannels !== null && isFinite(commandArgs.maxAudioChannels) ?\n commandArgs.maxAudioChannels\n :\n mediaCapabilities.maxAudioChannels;\n var canPlayStreamOptions = Object.assign({}, commandArgs, {\n formats: formats,\n videoCodecs: videoCodecs,\n audioCodecs: audioCodecs,\n maxAudioChannels: maxAudioChannels\n });\n return (commandArgs.forceTranscoding ? Promise.resolve(false) : VideoWithStreamingServer.canPlayStream({ url: mediaURL }, canPlayStreamOptions))\n .catch(function(error) {\n console.warn('Media probe error', error);\n return false;\n })\n .then(function(canPlay) {\n if (canPlay) {\n return {\n url: mediaURL\n };\n }\n\n var id = hat();\n var queryParams = new URLSearchParams([['mediaURL', mediaURL]]);\n if (commandArgs.forceTranscoding) {\n queryParams.set('forceTranscoding', '1');\n }\n\n videoCodecs.forEach(function(videoCodec) {\n queryParams.append('videoCodecs', videoCodec);\n });\n\n audioCodecs.forEach(function(audioCodec) {\n queryParams.append('audioCodecs', audioCodec);\n });\n\n queryParams.set('maxAudioChannels', maxAudioChannels);\n\n return {\n url: url.resolve(commandArgs.streamingServerURL, '/hlsv2/' + id + '/master.m3u8?' + queryParams.toString()),\n subtitles: Array.isArray(commandArgs.stream.subtitles) ?\n commandArgs.stream.subtitles.map(function(track) {\n return Object.assign({}, track, {\n url: typeof track.url === 'string' ?\n url.resolve(commandArgs.streamingServerURL, '/subtitles.vtt?' + new URLSearchParams([['from', track.url]]).toString())\n :\n track.url\n });\n })\n :\n [],\n behaviorHints: {\n headers: {\n 'content-type': 'application/vnd.apple.mpegurl'\n }\n }\n };\n });\n })\n .then(function(stream) {\n if (commandArgs !== loadArgs) {\n return;\n }\n\n video.dispatch({\n type: 'command',\n commandName: 'load',\n commandArgs: Object.assign({}, commandArgs, {\n stream: stream\n })\n });\n loaded = true;\n flushActionsQueue();\n })\n .catch(function(error) {\n if (commandArgs !== loadArgs) {\n return;\n }\n\n onError(Object.assign({}, ERROR.WITH_STREAMING_SERVER.CONVERT_FAILED, {\n error: error,\n critical: true,\n stream: commandArgs.stream,\n streamingServerURL: commandArgs.streamingServerURL\n }));\n });\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null,\n streamingServerURL: commandArgs && typeof commandArgs.streamingServerURL === 'string' ? commandArgs.streamingServerURL : null\n }));\n }\n\n return true;\n }\n case 'addExtraSubtitlesTracks': {\n if (loadArgs && commandArgs && Array.isArray(commandArgs.tracks)) {\n if (loaded) {\n video.dispatch({\n type: 'command',\n commandName: 'addExtraSubtitlesTracks',\n commandArgs: Object.assign({}, commandArgs, {\n tracks: commandArgs.tracks.map(function(track) {\n return Object.assign({}, track, {\n url: typeof track.url === 'string' ?\n url.resolve(loadArgs.streamingServerURL, '/subtitles.vtt?' + new URLSearchParams([['from', track.url]]).toString())\n :\n track.url\n });\n })\n })\n });\n } else {\n actionsQueue.push({\n type: 'command',\n commandName: 'addExtraSubtitlesTracks',\n commandArgs: commandArgs\n });\n }\n }\n\n return true;\n }\n case 'unload': {\n loadArgs = null;\n loaded = false;\n actionsQueue = [];\n onPropChanged('stream');\n return false;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n video.dispatch({ type: 'command', commandName: 'destroy' });\n events.removeAllListeners();\n return true;\n }\n default: {\n if (!loaded) {\n actionsQueue.push({\n type: 'command',\n commandName: commandName,\n commandArgs: commandArgs\n });\n\n return true;\n }\n\n return false;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n if (observeProp(action.propName)) {\n return;\n }\n\n break;\n }\n case 'command': {\n if (command(action.commandName, action.commandArgs)) {\n return;\n }\n\n break;\n }\n }\n }\n\n video.dispatch(action);\n };\n }\n\n VideoWithStreamingServer.canPlayStream = function(stream, options) {\n return Video.canPlayStream(stream)\n .then(function(canPlay) {\n if (!canPlay) {\n throw new Error('Fallback using /hlsv2/probe');\n }\n\n return canPlay;\n })\n .catch(function() {\n var queryParams = new URLSearchParams([['mediaURL', stream.url]]);\n return fetch(url.resolve(options.streamingServerURL, '/hlsv2/probe?' + queryParams.toString()))\n .then(function(resp) {\n return resp.json();\n })\n .then(function(probe) {\n var isFormatSupported = options.formats.some(function(format) {\n return probe.format.name.indexOf(format) !== -1;\n });\n var areStreamsSupported = probe.streams.every(function(stream) {\n if (stream.track === 'audio') {\n return stream.channels <= options.maxAudioChannels &&\n options.audioCodecs.indexOf(stream.codec) !== -1;\n } else if (stream.track === 'video') {\n return options.videoCodecs.indexOf(stream.codec) !== -1;\n }\n\n return true;\n });\n return isFormatSupported && areStreamsSupported;\n });\n });\n };\n\n VideoWithStreamingServer.manifest = {\n name: Video.manifest.name + 'WithStreamingServer',\n external: Video.manifest.external,\n props: Video.manifest.props.concat(['stream'])\n .filter(function(value, index, array) { return array.indexOf(value) === index; }),\n commands: Video.manifest.commands.concat(['load', 'unload', 'destroy', 'addExtraSubtitlesTracks'])\n .filter(function(value, index, array) { return array.indexOf(value) === index; }),\n events: Video.manifest.events.concat(['propValue', 'propChanged', 'error'])\n .filter(function(value, index, array) { return array.indexOf(value) === index; })\n };\n\n return VideoWithStreamingServer;\n}\n\nmodule.exports = withStreamingServer;\n","/*!\n * a-color-picker (https://github.com/narsenico/a-color-picker)\n * \n * Copyright (c) 2017-2018, Gianfranco Caldi.\n * Released under the MIT License.\n */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"AColorPicker\",[],t):\"object\"==typeof exports?exports.AColorPicker=t():e.AColorPicker=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){var t={};function r(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(i,o,function(t){return e[t]}.bind(null,o));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=1)}([function(e,t,r){\"use strict\";\n/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */var i=r(3);function o(e){return!0===i(e)&&\"[object Object]\"===Object.prototype.toString.call(e)}e.exports=function(e){var t,r;return!1!==o(e)&&\"function\"==typeof(t=e.constructor)&&!1!==o(r=t.prototype)&&!1!==r.hasOwnProperty(\"isPrototypeOf\")}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.VERSION=t.PALETTE_MATERIAL_CHROME=t.PALETTE_MATERIAL_500=t.COLOR_NAMES=t.getLuminance=t.intToRgb=t.rgbToInt=t.rgbToHsv=t.rgbToHsl=t.hslToRgb=t.rgbToHex=t.parseColor=t.parseColorToHsla=t.parseColorToHsl=t.parseColorToRgba=t.parseColorToRgb=t.from=t.createPicker=void 0;var i=function(){function e(e,t){for(var r=0;r-1,p=\"undefined\"!=typeof window&&window.navigator.userAgent.indexOf(\"rv:\")>-1,d={id:null,attachTo:\"body\",showHSL:!0,showRGB:!0,showHEX:!0,showAlpha:!1,color:\"#ff0000\",palette:null,paletteEditable:!1,useAlphaInPalette:\"auto\",slBarSize:[232,150],hueBarSize:[150,11],alphaBarSize:[150,11]},f=\"COLOR\",g=\"RGBA_USER\",b=\"HSLA_USER\";function v(e,t,r){return e?e instanceof HTMLElement?e:e instanceof NodeList?e[0]:\"string\"==typeof e?document.querySelector(e):e.jquery?e.get(0):r?t:null:t}function m(e){var t=e.getContext(\"2d\"),r=+e.width,i=+e.height,s=t.createLinearGradient(1,1,1,i-1);return s.addColorStop(0,\"white\"),s.addColorStop(1,\"black\"),{setHue:function(e){var o=t.createLinearGradient(1,0,r-1,0);o.addColorStop(0,\"hsla(\"+e+\", 100%, 50%, 0)\"),o.addColorStop(1,\"hsla(\"+e+\", 100%, 50%, 1)\"),t.fillStyle=s,t.fillRect(0,0,r,i),t.fillStyle=o,t.globalCompositeOperation=\"multiply\",t.fillRect(0,0,r,i),t.globalCompositeOperation=\"source-over\"},grabColor:function(e,r){return t.getImageData(e,r,1,1).data},findColor:function(e,t,s){var a=(0,n.rgbToHsv)(e,t,s),l=o(a,3),c=l[1],u=l[2];return[c*r,i-u*i]}}}function A(e,t,r){return null===e?t:/^\\s*$/.test(e)?r:!!/true|yes|1/i.test(e)||!/false|no|0/i.test(e)&&t}function y(e,t,r){if(null===e)return t;if(/^\\s*$/.test(e))return r;var i=e.split(\",\").map(Number);return 2===i.length&&i[0]&&i[1]?i:t}var k=function(){function e(t,r){if(c(this,e),r?(t=v(t),this.options=Object.assign({},d,r)):t&&(0,s.default)(t)?(this.options=Object.assign({},d,t),t=v(this.options.attachTo)):(this.options=Object.assign({},d),t=v((0,n.nvl)(t,this.options.attachTo))),!t)throw new Error(\"Container not found: \"+this.options.attachTo);!function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"acp-\";if(t.hasAttribute(r+\"show-hsl\")&&(e.showHSL=A(t.getAttribute(r+\"show-hsl\"),d.showHSL,!0)),t.hasAttribute(r+\"show-rgb\")&&(e.showRGB=A(t.getAttribute(r+\"show-rgb\"),d.showRGB,!0)),t.hasAttribute(r+\"show-hex\")&&(e.showHEX=A(t.getAttribute(r+\"show-hex\"),d.showHEX,!0)),t.hasAttribute(r+\"show-alpha\")&&(e.showAlpha=A(t.getAttribute(r+\"show-alpha\"),d.showAlpha,!0)),t.hasAttribute(r+\"palette-editable\")&&(e.paletteEditable=A(t.getAttribute(r+\"palette-editable\"),d.paletteEditable,!0)),t.hasAttribute(r+\"sl-bar-size\")&&(e.slBarSize=y(t.getAttribute(r+\"sl-bar-size\"),d.slBarSize,[232,150])),t.hasAttribute(r+\"hue-bar-size\")&&(e.hueBarSize=y(t.getAttribute(r+\"hue-bar-size\"),d.hueBarSize,[150,11]),e.alphaBarSize=e.hueBarSize),t.hasAttribute(r+\"palette\")){var i=t.getAttribute(r+\"palette\");switch(i){case\"PALETTE_MATERIAL_500\":e.palette=n.PALETTE_MATERIAL_500;break;case\"PALETTE_MATERIAL_CHROME\":case\"\":e.palette=n.PALETTE_MATERIAL_CHROME;break;default:e.palette=i.split(/[;|]/)}}t.hasAttribute(r+\"color\")&&(e.color=t.getAttribute(r+\"color\"))}(this.options,t),this.H=0,this.S=0,this.L=0,this.R=0,this.G=0,this.B=0,this.A=1,this.palette={},this.element=document.createElement(\"div\"),this.options.id&&(this.element.id=this.options.id),this.element.className=\"a-color-picker\",this.element.innerHTML=a.default,t.appendChild(this.element);var i=this.element.querySelector(\".a-color-picker-h\");this.setupHueCanvas(i),this.hueBarHelper=m(i),this.huePointer=this.element.querySelector(\".a-color-picker-h+.a-color-picker-dot\");var o=this.element.querySelector(\".a-color-picker-sl\");this.setupSlCanvas(o),this.slBarHelper=m(o),this.slPointer=this.element.querySelector(\".a-color-picker-sl+.a-color-picker-dot\"),this.preview=this.element.querySelector(\".a-color-picker-preview\"),this.setupClipboard(this.preview.querySelector(\".a-color-picker-clipbaord\")),this.options.showHSL?(this.setupInput(this.inputH=this.element.querySelector(\".a-color-picker-hsl>input[nameref=H]\")),this.setupInput(this.inputS=this.element.querySelector(\".a-color-picker-hsl>input[nameref=S]\")),this.setupInput(this.inputL=this.element.querySelector(\".a-color-picker-hsl>input[nameref=L]\"))):this.element.querySelector(\".a-color-picker-hsl\").remove(),this.options.showRGB?(this.setupInput(this.inputR=this.element.querySelector(\".a-color-picker-rgb>input[nameref=R]\")),this.setupInput(this.inputG=this.element.querySelector(\".a-color-picker-rgb>input[nameref=G]\")),this.setupInput(this.inputB=this.element.querySelector(\".a-color-picker-rgb>input[nameref=B]\"))):this.element.querySelector(\".a-color-picker-rgb\").remove(),this.options.showHEX?this.setupInput(this.inputRGBHEX=this.element.querySelector(\"input[nameref=RGBHEX]\")):this.element.querySelector(\".a-color-picker-rgbhex\").remove(),this.options.paletteEditable||this.options.palette&&this.options.palette.length>0?this.setPalette(this.paletteRow=this.element.querySelector(\".a-color-picker-palette\")):(this.paletteRow=this.element.querySelector(\".a-color-picker-palette\"),this.paletteRow.remove()),this.options.showAlpha?(this.setupAlphaCanvas(this.element.querySelector(\".a-color-picker-a\")),this.alphaPointer=this.element.querySelector(\".a-color-picker-a+.a-color-picker-dot\")):this.element.querySelector(\".a-color-picker-alpha\").remove(),this.element.style.width=this.options.slBarSize[0]+\"px\",this.onValueChanged(f,this.options.color)}return i(e,[{key:\"setupHueCanvas\",value:function(e){var t=this;e.width=this.options.hueBarSize[0],e.height=this.options.hueBarSize[1];for(var r=e.getContext(\"2d\"),i=r.createLinearGradient(0,0,this.options.hueBarSize[0],0),o=0;o<=1;o+=1/360)i.addColorStop(o,\"hsl(\"+360*o+\", 100%, 50%)\");r.fillStyle=i,r.fillRect(0,0,this.options.hueBarSize[0],this.options.hueBarSize[1]);var s=function(r){var i=(0,n.limit)(r.clientX-e.getBoundingClientRect().left,0,t.options.hueBarSize[0]),o=Math.round(360*i/t.options.hueBarSize[0]);t.huePointer.style.left=i-7+\"px\",t.onValueChanged(\"H\",o)},a=function e(){document.removeEventListener(\"mousemove\",s),document.removeEventListener(\"mouseup\",e)};e.addEventListener(\"mousedown\",function(e){s(e),document.addEventListener(\"mousemove\",s),document.addEventListener(\"mouseup\",a)})}},{key:\"setupSlCanvas\",value:function(e){var t=this;e.width=this.options.slBarSize[0],e.height=this.options.slBarSize[1];var r=function(r){var i=(0,n.limit)(r.clientX-e.getBoundingClientRect().left,0,t.options.slBarSize[0]-1),o=(0,n.limit)(r.clientY-e.getBoundingClientRect().top,0,t.options.slBarSize[1]-1),s=t.slBarHelper.grabColor(i,o);t.slPointer.style.left=i-7+\"px\",t.slPointer.style.top=o-7+\"px\",t.onValueChanged(\"RGB\",s)},i=function e(){document.removeEventListener(\"mousemove\",r),document.removeEventListener(\"mouseup\",e)};e.addEventListener(\"mousedown\",function(e){r(e),document.addEventListener(\"mousemove\",r),document.addEventListener(\"mouseup\",i)})}},{key:\"setupAlphaCanvas\",value:function(e){var t=this;e.width=this.options.alphaBarSize[0],e.height=this.options.alphaBarSize[1];var r=e.getContext(\"2d\"),i=r.createLinearGradient(0,0,e.width-1,0);i.addColorStop(0,\"hsla(0, 0%, 50%, 0)\"),i.addColorStop(1,\"hsla(0, 0%, 50%, 1)\"),r.fillStyle=i,r.fillRect(0,0,this.options.alphaBarSize[0],this.options.alphaBarSize[1]);var o=function(r){var i=(0,n.limit)(r.clientX-e.getBoundingClientRect().left,0,t.options.alphaBarSize[0]),o=+(i/t.options.alphaBarSize[0]).toFixed(2);t.alphaPointer.style.left=i-7+\"px\",t.onValueChanged(\"ALPHA\",o)},s=function e(){document.removeEventListener(\"mousemove\",o),document.removeEventListener(\"mouseup\",e)};e.addEventListener(\"mousedown\",function(e){o(e),document.addEventListener(\"mousemove\",o),document.addEventListener(\"mouseup\",s)})}},{key:\"setupInput\",value:function(e){var t=this,r=+e.min,i=+e.max,o=e.getAttribute(\"nameref\");e.hasAttribute(\"select-on-focus\")&&e.addEventListener(\"focus\",function(){e.select()}),\"text\"===e.type?e.addEventListener(\"change\",function(){t.onValueChanged(o,e.value)}):((h||p)&&e.addEventListener(\"keydown\",function(s){\"Up\"===s.key?(e.value=(0,n.limit)(+e.value+1,r,i),t.onValueChanged(o,e.value),s.returnValue=!1):\"Down\"===s.key&&(e.value=(0,n.limit)(+e.value-1,r,i),t.onValueChanged(o,e.value),s.returnValue=!1)}),e.addEventListener(\"change\",function(){var s=+e.value;t.onValueChanged(o,(0,n.limit)(s,r,i))}))}},{key:\"setupClipboard\",value:function(e){var t=this;e.title=\"click to copy\",e.addEventListener(\"click\",function(){e.value=(0,n.parseColor)([t.R,t.G,t.B,t.A],\"hexcss4\"),e.select(),document.execCommand(\"copy\")})}},{key:\"setPalette\",value:function(e){var t=this,r=\"auto\"===this.options.useAlphaInPalette?this.options.showAlpha:this.options.useAlphaInPalette,i=null;switch(this.options.palette){case\"PALETTE_MATERIAL_500\":i=n.PALETTE_MATERIAL_500;break;case\"PALETTE_MATERIAL_CHROME\":i=n.PALETTE_MATERIAL_CHROME;break;default:i=(0,n.ensureArray)(this.options.palette)}if(this.options.paletteEditable||i.length>0){var o=function(r,i,o){var n=e.querySelector('.a-color-picker-palette-color[data-color=\"'+r+'\"]')||document.createElement(\"div\");n.className=\"a-color-picker-palette-color\",n.style.backgroundColor=r,n.setAttribute(\"data-color\",r),n.title=r,e.insertBefore(n,i),t.palette[r]=!0,o&&t.onPaletteColorAdd(r)},s=function(r,i){r?(e.removeChild(r),t.palette[r.getAttribute(\"data-color\")]=!1,i&&t.onPaletteColorRemove(r.getAttribute(\"data-color\"))):(e.querySelectorAll(\".a-color-picker-palette-color[data-color]\").forEach(function(t){e.removeChild(t)}),Object.keys(t.palette).forEach(function(e){t.palette[e]=!1}),i&&t.onPaletteColorRemove())};if(i.map(function(e){return(0,n.parseColor)(e,r?\"rgbcss4\":\"hex\")}).filter(function(e){return!!e}).forEach(function(e){return o(e)}),this.options.paletteEditable){var a=document.createElement(\"div\");a.className=\"a-color-picker-palette-color a-color-picker-palette-add\",a.innerHTML=\"+\",e.appendChild(a),e.addEventListener(\"click\",function(e){/a-color-picker-palette-add/.test(e.target.className)?e.shiftKey?s(null,!0):o(r?(0,n.parseColor)([t.R,t.G,t.B,t.A],\"rgbcss4\"):(0,n.rgbToHex)(t.R,t.G,t.B),e.target,!0):/a-color-picker-palette-color/.test(e.target.className)&&(e.shiftKey?s(e.target,!0):t.onValueChanged(f,e.target.getAttribute(\"data-color\")))})}else e.addEventListener(\"click\",function(e){/a-color-picker-palette-color/.test(e.target.className)&&t.onValueChanged(f,e.target.getAttribute(\"data-color\"))})}else e.style.display=\"none\"}},{key:\"updatePalette\",value:function(e){this.paletteRow.innerHTML=\"\",this.palette={},this.paletteRow.parentElement||this.element.appendChild(this.paletteRow),this.options.palette=e,this.setPalette(this.paletteRow)}},{key:\"onValueChanged\",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{silent:!1};switch(e){case\"H\":this.H=t;var i=(0,n.hslToRgb)(this.H,this.S,this.L),s=o(i,3);this.R=s[0],this.G=s[1],this.B=s[2],this.slBarHelper.setHue(t),this.updatePointerH(this.H),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case\"S\":this.S=t;var a=(0,n.hslToRgb)(this.H,this.S,this.L),l=o(a,3);this.R=l[0],this.G=l[1],this.B=l[2],this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case\"L\":this.L=t;var c=(0,n.hslToRgb)(this.H,this.S,this.L),u=o(c,3);this.R=u[0],this.G=u[1],this.B=u[2],this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case\"R\":this.R=t;var h=(0,n.rgbToHsl)(this.R,this.G,this.B),p=o(h,3);this.H=p[0],this.S=p[1],this.L=p[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGBHEX(this.R,this.G,this.B);break;case\"G\":this.G=t;var d=(0,n.rgbToHsl)(this.R,this.G,this.B),v=o(d,3);this.H=v[0],this.S=v[1],this.L=v[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGBHEX(this.R,this.G,this.B);break;case\"B\":this.B=t;var m=(0,n.rgbToHsl)(this.R,this.G,this.B),A=o(m,3);this.H=A[0],this.S=A[1],this.L=A[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGBHEX(this.R,this.G,this.B);break;case\"RGB\":var y=o(t,3);this.R=y[0],this.G=y[1],this.B=y[2];var k=(0,n.rgbToHsl)(this.R,this.G,this.B),F=o(k,3);this.H=F[0],this.S=F[1],this.L=F[2],this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case g:var E=o(t,4);this.R=E[0],this.G=E[1],this.B=E[2],this.A=E[3];var H=(0,n.rgbToHsl)(this.R,this.G,this.B),B=o(H,3);this.H=B[0],this.S=B[1],this.L=B[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B),this.updatePointerA(this.A);break;case b:var R=o(t,4);this.H=R[0],this.S=R[1],this.L=R[2],this.A=R[3];var C=(0,n.hslToRgb)(this.H,this.S,this.L),S=o(C,3);this.R=S[0],this.G=S[1],this.B=S[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B),this.updatePointerA(this.A);break;case\"RGBHEX\":var L=(0,n.cssColorToRgb)(t)||[this.R,this.G,this.B],w=o(L,3);this.R=w[0],this.G=w[1],this.B=w[2];var T=(0,n.rgbToHsl)(this.R,this.G,this.B),x=o(T,3);this.H=x[0],this.S=x[1],this.L=x[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B);break;case f:var G=(0,n.parseColor)(t,\"rgba\")||[0,0,0,1],I=o(G,4);this.R=I[0],this.G=I[1],this.B=I[2],this.A=I[3];var P=(0,n.rgbToHsl)(this.R,this.G,this.B),D=o(P,3);this.H=D[0],this.S=D[1],this.L=D[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B),this.updatePointerA(this.A);break;case\"ALPHA\":this.A=t}1===this.A?this.preview.style.backgroundColor=\"rgb(\"+this.R+\",\"+this.G+\",\"+this.B+\")\":this.preview.style.backgroundColor=\"rgba(\"+this.R+\",\"+this.G+\",\"+this.B+\",\"+this.A+\")\",r&&r.silent||this.onchange&&this.onchange(this.preview.style.backgroundColor)}},{key:\"onPaletteColorAdd\",value:function(e){this.oncoloradd&&this.oncoloradd(e)}},{key:\"onPaletteColorRemove\",value:function(e){this.oncolorremove&&this.oncolorremove(e)}},{key:\"updateInputHSL\",value:function(e,t,r){this.options.showHSL&&(this.inputH.value=e,this.inputS.value=t,this.inputL.value=r)}},{key:\"updateInputRGB\",value:function(e,t,r){this.options.showRGB&&(this.inputR.value=e,this.inputG.value=t,this.inputB.value=r)}},{key:\"updateInputRGBHEX\",value:function(e,t,r){this.options.showHEX&&(this.inputRGBHEX.value=(0,n.rgbToHex)(e,t,r))}},{key:\"updatePointerH\",value:function(e){var t=this.options.hueBarSize[0]*e/360;this.huePointer.style.left=t-7+\"px\"}},{key:\"updatePointerSL\",value:function(e,t,r){var i=(0,n.hslToRgb)(e,t,r),s=o(i,3),a=s[0],l=s[1],c=s[2],u=this.slBarHelper.findColor(a,l,c),h=o(u,2),p=h[0],d=h[1];p>=0&&(this.slPointer.style.left=p-7+\"px\",this.slPointer.style.top=d-7+\"px\")}},{key:\"updatePointerA\",value:function(e){if(this.options.showAlpha){var t=this.options.alphaBarSize[0]*e;this.alphaPointer.style.left=t-7+\"px\"}}}]),e}(),F=function(){function e(t){c(this,e),this.name=t,this.listeners=[]}return i(e,[{key:\"on\",value:function(e){e&&this.listeners.push(e)}},{key:\"off\",value:function(e){this.listeners=e?this.listeners.filter(function(t){return t!==e}):[]}},{key:\"emit\",value:function(e,t){for(var r=this.listeners.slice(0),i=0;i1&&void 0!==arguments[1]&&arguments[1];r.onValueChanged(f,e,{silent:t})},get all(){if(s){var e=[r.R,r.G,r.B,r.A],t=r.A<1?\"rgba(\"+r.R+\",\"+r.G+\",\"+r.B+\",\"+r.A+\")\":n.rgbToHex.apply(void 0,e);(a=(0,n.parseColor)(e,a)).toString=function(){return t},s=!1}return Object.assign({},a)},get onchange(){return i.change&&i.change.listeners[0]},set onchange(e){this.off(\"change\").on(\"change\",e)},get oncoloradd(){return i.coloradd&&i.coloradd.listeners[0]},set oncoloradd(e){this.off(\"coloradd\").on(\"coloradd\",e)},get oncolorremove(){return i.colorremove&&i.colorremove.listeners[0]},set oncolorremove(e){this.off(\"colorremove\").on(\"colorremove\",e)},get palette(){return Object.keys(r.palette).filter(function(e){return r.palette[e]})},set palette(e){r.updatePalette(e)},show:function(){r.element.classList.remove(\"hidden\")},hide:function(){r.element.classList.add(\"hidden\")},toggle:function(){r.element.classList.toggle(\"hidden\")},on:function(e,t){return e&&i[e]&&i[e].on(t),this},off:function(e,t){return e&&i[e]&&i[e].off(t),this},destroy:function(){i.change.off(),i.coloradd.off(),i.colorremove.off(),r.element.remove(),i=null,r=null}};return r.onchange=function(){for(var e=arguments.length,t=Array(e),r=0;rstyle[data-source=\"a-color-picker\"]')){var H=r(5).toString(),B=document.createElement(\"style\");B.setAttribute(\"type\",\"text/css\"),B.setAttribute(\"data-source\",\"a-color-picker\"),B.innerHTML=H,document.querySelector(\"head\").appendChild(B)}t.createPicker=E,t.from=function(e,t){var r=function(e){return e?Array.isArray(e)?e:e instanceof HTMLElement?[e]:e instanceof NodeList?[].concat(u(e)):\"string\"==typeof e?[].concat(u(document.querySelectorAll(e))):e.jquery?e.get():[]:[]}(e).map(function(e,r){var i=E(e,t);return i.index=r,i});return r.on=function(e,t){return r.forEach(function(r){return r.on(e,t)}),this},r.off=function(e){return r.forEach(function(t){return t.off(e)}),this},r},t.parseColorToRgb=n.parseColorToRgb,t.parseColorToRgba=n.parseColorToRgba,t.parseColorToHsl=n.parseColorToHsl,t.parseColorToHsla=n.parseColorToHsla,t.parseColor=n.parseColor,t.rgbToHex=n.rgbToHex,t.hslToRgb=n.hslToRgb,t.rgbToHsl=n.rgbToHsl,t.rgbToHsv=n.rgbToHsv,t.rgbToInt=n.rgbToInt,t.intToRgb=n.intToRgb,t.getLuminance=n.getLuminance,t.COLOR_NAMES=n.COLOR_NAMES,t.PALETTE_MATERIAL_500=n.PALETTE_MATERIAL_500,t.PALETTE_MATERIAL_CHROME=n.PALETTE_MATERIAL_CHROME,t.VERSION=\"1.2.1\"},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.nvl=t.ensureArray=t.limit=t.getLuminance=t.parseColor=t.parseColorToHsla=t.parseColorToHsl=t.cssHslaToHsla=t.cssHslToHsl=t.parseColorToRgba=t.parseColorToRgb=t.cssRgbaToRgba=t.cssRgbToRgb=t.cssColorToRgba=t.cssColorToRgb=t.intToRgb=t.rgbToInt=t.rgbToHsv=t.rgbToHsl=t.hslToRgb=t.rgbToHex=t.PALETTE_MATERIAL_CHROME=t.PALETTE_MATERIAL_500=t.COLOR_NAMES=void 0;var i=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var r=[],i=!0,o=!1,n=void 0;try{for(var s,a=e[Symbol.iterator]();!(i=(s=a.next()).done)&&(r.push(s.value),!t||r.length!==t);i=!0);}catch(e){o=!0,n=e}finally{try{!i&&a.return&&a.return()}finally{if(o)throw n}}return r}(e,t);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")},o=function(e){return e&&e.__esModule?e:{default:e}}(r(0));function n(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);tr?r:e}function l(e,t){return null==e?t:e}function c(e,t,r){var i=[a(e,0,255),a(t,0,255),a(r,0,255)];return\"#\"+(\"000000\"+((e=i[0])<<16|(t=i[1])<<8|(r=i[2])).toString(16)).slice(-6)}function u(e,t,r){var i=void 0,o=void 0,n=void 0,s=[a(e,0,360)/360,a(t,0,100)/100,a(r,0,100)/100];if(e=s[0],r=s[2],0==(t=s[1]))i=o=n=r;else{var l=function(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e},c=r<.5?r*(1+t):r+t-r*t,u=2*r-c;i=l(u,c,e+1/3),o=l(u,c,e),n=l(u,c,e-1/3)}return[255*i,255*o,255*n].map(Math.round)}function h(e,t,r){var i=[a(e,0,255)/255,a(t,0,255)/255,a(r,0,255)/255];e=i[0],t=i[1],r=i[2];var o=Math.max(e,t,r),n=Math.min(e,t,r),s=void 0,l=void 0,c=(o+n)/2;if(o==n)s=l=0;else{var u=o-n;switch(l=c>.5?u/(2-o-n):u/(o+n),o){case e:s=(t-r)/u+(t>16&255,e>>8&255,255&e]},t.cssColorToRgb=d,t.cssColorToRgba=f,t.cssRgbToRgb=g,t.cssRgbaToRgba=b,t.parseColorToRgb=function(e){return Array.isArray(e)?e=[a(e[0],0,255),a(e[1],0,255),a(e[2],0,255)]:d(e)||g(e)},t.parseColorToRgba=v,t.cssHslToHsl=m,t.cssHslaToHsla=A,t.parseColorToHsl=function(e){return Array.isArray(e)?e=[a(e[0],0,360),a(e[1],0,100),a(e[2],0,100)]:m(e)},t.parseColorToHsla=y,t.parseColor=function(e,t){if(t=t||\"rgb\",null!=e){var r=void 0;if((r=v(e))||(r=y(e))&&(r=[].concat(n(u.apply(void 0,n(r))),[r[3]])))return(0,o.default)(t)?[\"rgb\",\"rgbcss\",\"rgbcss4\",\"rgba\",\"rgbacss\",\"hsl\",\"hslcss\",\"hslcss4\",\"hsla\",\"hslacss\",\"hex\",\"hexcss4\",\"int\"].reduce(function(e,t){return e[t]=k(r,t),e},t||{}):k(r,t.toString().toLowerCase())}},t.getLuminance=function(e,t,r){return.2126*(e=(e/=255)<.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.7152*(t=(t/=255)<.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.0722*((r/=255)<.03928?r/12.92:Math.pow((r+.055)/1.055,2.4))},t.limit=a,t.ensureArray=function(e){return e?Array.from(e):[]},t.nvl=l},function(e,t,r){\"use strict\";\n/*!\n * isobject \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */e.exports=function(e){return null!=e&&\"object\"==typeof e&&!1===Array.isArray(e)}},function(e,t){e.exports='
    '},function(e,t,r){var i=r(6);e.exports=\"string\"==typeof i?i:i.toString()},function(e,t,r){(e.exports=r(7)(!1)).push([e.i,\"/*!\\n * a-color-picker\\n * https://github.com/narsenico/a-color-picker\\n *\\n * Copyright (c) 2017-2018, Gianfranco Caldi.\\n * Released under the MIT License.\\n */.a-color-picker{background-color:#fff;padding:0;display:inline-flex;flex-direction:column;user-select:none;width:232px;font:400 10px Helvetica,Arial,sans-serif;border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,.05),0 2px 4px rgba(0,0,0,.25)}.a-color-picker,.a-color-picker-row,.a-color-picker input{box-sizing:border-box}.a-color-picker-row{padding:15px;display:flex;flex-direction:row;align-items:center;justify-content:space-between;user-select:none}.a-color-picker-row-top{padding:0}.a-color-picker-row:not(:first-child){border-top:1px solid #f5f5f5}.a-color-picker-column{display:flex;flex-direction:column}.a-color-picker-cell{flex:1 1 auto;margin-bottom:4px}.a-color-picker-cell:last-child{margin-bottom:0}.a-color-picker-stack{position:relative}.a-color-picker-dot{position:absolute;width:14px;height:14px;top:0;left:0;background:#fff;pointer-events:none;border-radius:50px;z-index:1000;box-shadow:0 1px 2px rgba(0,0,0,.75)}.a-color-picker-a,.a-color-picker-h,.a-color-picker-sl{cursor:cell}.a-color-picker-a+.a-color-picker-dot,.a-color-picker-h+.a-color-picker-dot{top:-2px}.a-color-picker-a,.a-color-picker-h{border-radius:2px}.a-color-picker-preview{box-sizing:border-box;width:30px;height:30px;user-select:none;border-radius:15px}.a-color-picker-circle{border-radius:50px;border:1px solid #eee}.a-color-picker-hsl,.a-color-picker-rgb,.a-color-picker-single-input{justify-content:space-evenly}.a-color-picker-hsl>label,.a-color-picker-rgb>label,.a-color-picker-single-input>label{padding:0 8px;flex:0 0 auto;color:#969696}.a-color-picker-hsl>input,.a-color-picker-rgb>input,.a-color-picker-single-input>input{text-align:center;padding:2px 0;width:0;flex:1 1 auto;border:1px solid #e0e0e0;line-height:20px}.a-color-picker-hsl>input::-webkit-inner-spin-button,.a-color-picker-rgb>input::-webkit-inner-spin-button,.a-color-picker-single-input>input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.a-color-picker-hsl>input:focus,.a-color-picker-rgb>input:focus,.a-color-picker-single-input>input:focus{border-color:#04a9f4;outline:none}.a-color-picker-transparent{background-image:linear-gradient(-45deg,#cdcdcd 25%,transparent 0),linear-gradient(45deg,#cdcdcd 25%,transparent 0),linear-gradient(-45deg,transparent 75%,#cdcdcd 0),linear-gradient(45deg,transparent 75%,#cdcdcd 0);background-size:11px 11px;background-position:0 0,0 -5.5px,-5.5px 5.5px,5.5px 0}.a-color-picker-sl{border-radius:3px 3px 0 0}.a-color-picker.hide-alpha [show-on-alpha],.a-color-picker.hide-hsl [show-on-hsl],.a-color-picker.hide-rgb [show-on-rgb],.a-color-picker.hide-single-input [show-on-single-input]{display:none}.a-color-picker-clipbaord{width:100%;height:100%;opacity:0;cursor:pointer}.a-color-picker-palette{flex-flow:wrap;flex-direction:row;justify-content:flex-start;padding:10px}.a-color-picker-palette-color{width:15px;height:15px;flex:0 1 15px;margin:3px;box-sizing:border-box;cursor:pointer;border-radius:3px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1)}.a-color-picker-palette-add{text-align:center;line-height:13px;color:#607d8b}.a-color-picker.hidden{display:none}\",\"\"])},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=function(e,t){var r=e[1]||\"\",i=e[3];if(!i)return r;if(t&&\"function\"==typeof btoa){var o=function(e){return\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+\" */\"}(i),n=i.sources.map(function(e){return\"/*# sourceURL=\"+i.sourceRoot+e+\" */\"});return[r].concat(n).concat([o]).join(\"\\n\")}return[r].join(\"\\n\")}(t,e);return t[2]?\"@media \"+t[2]+\"{\"+r+\"}\":r}).join(\"\")},t.i=function(e,r){\"string\"==typeof e&&(e=[[null,e,\"\"]]);for(var i={},o=0;o {\n const { i18n } = useTranslation();\n const onPathNotMatch = React.useCallback(() => {\n return NotFound;\n }, []);\n const services = React.useMemo(() => {\n const core = new Core({\n appVersion: process.env.VERSION,\n shellVersion: null\n });\n return {\n core,\n shell: new Shell(),\n chromecast: new Chromecast(),\n keyboardShortcuts: new KeyboardShortcuts(),\n dragAndDrop: new DragAndDrop({ core })\n };\n }, []);\n const [initialized, setInitialized] = React.useState(false);\n React.useEffect(() => {\n let prevPath = window.location.hash.slice(1);\n const onLocationHashChange = () => {\n if (services.core.active) {\n services.core.transport.analytics({\n event: 'LocationPathChanged',\n args: { prevPath }\n });\n }\n prevPath = window.location.hash.slice(1);\n };\n window.addEventListener('hashchange', onLocationHashChange);\n return () => {\n window.removeEventListener('hashchange', onLocationHashChange);\n };\n }, []);\n React.useEffect(() => {\n const onCoreStateChanged = () => {\n setInitialized(\n (services.core.active || services.core.error instanceof Error) &&\n (services.shell.active || services.shell.error instanceof Error)\n );\n };\n const onShellStateChanged = () => {\n setInitialized(\n (services.core.active || services.core.error instanceof Error) &&\n (services.shell.active || services.shell.error instanceof Error)\n );\n };\n const onChromecastStateChange = () => {\n if (services.chromecast.active) {\n services.chromecast.transport.setOptions({\n receiverApplicationId: CONSTANTS.CHROMECAST_RECEIVER_APP_ID,\n autoJoinPolicy: chrome.cast.AutoJoinPolicy.PAGE_SCOPED,\n resumeSavedSession: false,\n language: null\n });\n }\n };\n services.core.on('stateChanged', onCoreStateChanged);\n services.shell.on('stateChanged', onShellStateChanged);\n services.chromecast.on('stateChanged', onChromecastStateChange);\n services.core.start();\n services.shell.start();\n services.chromecast.start();\n services.keyboardShortcuts.start();\n services.dragAndDrop.start();\n window.services = services;\n return () => {\n services.core.stop();\n services.shell.stop();\n services.chromecast.stop();\n services.keyboardShortcuts.stop();\n services.dragAndDrop.stop();\n services.core.off('stateChanged', onCoreStateChanged);\n services.shell.off('stateChanged', onShellStateChanged);\n services.chromecast.off('stateChanged', onChromecastStateChange);\n };\n }, []);\n React.useEffect(() => {\n const onCoreEvent = ({ event, args }) => {\n switch (event) {\n case 'SettingsUpdated': {\n if (args && args.settings && typeof args.settings.interfaceLanguage === 'string') {\n i18n.changeLanguage(args.settings.interfaceLanguage);\n }\n break;\n }\n }\n };\n const onCtxState = (state) => {\n if (state && state.profile && state.profile.settings && typeof state.profile.settings.interfaceLanguage === 'string') {\n i18n.changeLanguage(state.profile.settings.interfaceLanguage);\n }\n };\n const onWindowFocus = () => {\n services.core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'PullAddonsFromAPI'\n }\n });\n services.core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'PullUserFromAPI'\n }\n });\n services.core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'SyncLibraryWithAPI'\n }\n });\n services.core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'PullNotifications'\n }\n });\n };\n if (services.core.active) {\n onWindowFocus();\n window.addEventListener('focus', onWindowFocus);\n services.core.transport.on('CoreEvent', onCoreEvent);\n services.core.transport\n .getState('ctx')\n .then(onCtxState)\n .catch((e) => console.error(e));\n }\n return () => {\n window.removeEventListener('focus', onWindowFocus);\n services.core.transport.off('CoreEvent', onCoreEvent);\n };\n }, [initialized]);\n return (\n \n \n {\n initialized ?\n services.core.error instanceof Error ?\n \n :\n \n \n \n \n \n :\n
    \n }\n \n \n );\n};\n\nmodule.exports = App;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { withCoreSuspender, useStreamingServer } = require('stremio/common');\n\nconst DeepLinkHandler = () => {\n const streamingServer = useStreamingServer();\n React.useEffect(() => {\n if (streamingServer.torrent !== null) {\n const [, { type, content }] = streamingServer.torrent;\n if (type === 'Ready') {\n const [, deepLinks] = content;\n if (typeof deepLinks.metaDetailsVideos === 'string') {\n window.location = deepLinks.metaDetailsVideos;\n }\n }\n }\n }, [streamingServer.torrent]);\n return null;\n};\n\nmodule.exports = withCoreSuspender(DeepLinkHandler);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { Button, Image } = require('stremio/common');\nconst styles = require('./styles');\n\nconst ErrorDialog = ({ className }) => {\n const [dataCleared, setDataCleared] = React.useState(false);\n const reload = React.useCallback(() => {\n window.location.reload();\n }, []);\n const clearData = React.useCallback(() => {\n window.localStorage.clear();\n setDataCleared(true);\n }, []);\n return (\n
    \n \n
    Something went wrong!
    \n
    \n \n \n
    \n
    \n );\n};\n\nErrorDialog.displayName = 'ErrorDialog';\n\nErrorDialog.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = ErrorDialog;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ErrorDialog = require('./ErrorDialog');\n\nmodule.exports = ErrorDialog;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst { useToast } = require('stremio/common');\n\nconst ServicesToaster = () => {\n const { core, dragAndDrop } = useServices();\n const toast = useToast();\n React.useEffect(() => {\n const onCoreEvent = ({ event, args }) => {\n switch (event) {\n case 'Error': {\n if (args.source.event === 'UserPulledFromAPI' && args.source.args.uid === null) {\n break;\n }\n\n if (args.source.event === 'LibrarySyncWithAPIPlanned' && args.source.args.uid === null) {\n break;\n }\n\n if (args.error.type === 'Other' && args.error.code === 3 && args.source.event === 'AddonInstalled' && args.source.args.transport_url.startsWith('https://www.strem.io/trakt/addon')) {\n break;\n }\n\n toast.show({\n type: 'error',\n title: args.source.event,\n message: args.error.message,\n timeout: 4000,\n dataset: {\n type: 'CoreEvent'\n }\n });\n break;\n }\n case 'TorrentParsed': {\n toast.show({\n type: 'success',\n title: 'Torrent file parsed',\n timeout: 4000\n });\n break;\n }\n case 'MagnetParsed': {\n toast.show({\n type: 'success',\n title: 'Magnet link parsed',\n timeout: 4000\n });\n break;\n }\n case 'PlayingOnDevice': {\n toast.show({\n type: 'success',\n title: `Stream opened in ${args.device}`,\n timeout: 4000\n });\n break;\n }\n }\n };\n const onDragAndDropError = (error) => {\n toast.show({\n type: 'error',\n title: error.message,\n message: error.file?.name,\n timeout: 4000\n });\n };\n core.transport.on('CoreEvent', onCoreEvent);\n dragAndDrop.on('error', onDragAndDropError);\n return () => {\n core.transport.off('CoreEvent', onCoreEvent);\n dragAndDrop.off('error', onDragAndDropError);\n };\n }, []);\n return null;\n};\n\nmodule.exports = ServicesToaster;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst App = require('./App');\n\nmodule.exports = App;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst routes = require('stremio/routes');\nconst { routesRegexp } = require('stremio/common');\n\nconst routerViewsConfig = [\n [\n {\n ...routesRegexp.board,\n component: routes.Board\n }\n ],\n [\n {\n ...routesRegexp.intro,\n component: routes.Intro\n },\n {\n ...routesRegexp.discover,\n component: routes.Discover\n },\n {\n ...routesRegexp.library,\n component: routes.Library\n },\n {\n ...routesRegexp.continuewatching,\n component: routes.Library\n },\n {\n ...routesRegexp.search,\n component: routes.Search\n }\n ],\n [\n {\n ...routesRegexp.metadetails,\n component: routes.MetaDetails\n }\n ],\n [\n {\n ...routesRegexp.addons,\n component: routes.Addons\n },\n {\n ...routesRegexp.settings,\n component: routes.Settings\n }\n ],\n [\n {\n ...routesRegexp.player,\n component: routes.Player\n }\n ]\n];\n\nmodule.exports = routerViewsConfig;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { Intro } = require('stremio/routes');\nconst { useProfile } = require('stremio/common');\n\nconst withProtectedRoutes = (Component) => {\n return function withProtectedRoutes(props) {\n const profile = useProfile();\n const previousAuthRef = React.useRef(profile.auth);\n React.useEffect(() => {\n if (previousAuthRef.current !== null && profile.auth === null) {\n window.location = '#/intro';\n }\n previousAuthRef.current = profile.auth;\n }, [profile]);\n const onRouteChange = React.useCallback((routeConfig) => {\n if (profile.auth !== null && routeConfig.component === Intro) {\n window.location.replace('#/');\n return true;\n }\n }, [profile]);\n return (\n \n );\n };\n};\n\nmodule.exports = withProtectedRoutes;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Image = require('stremio/common/Image');\nconst styles = require('./styles');\n\nconst AddonDetails = ({ className, id, name, version, logo, description, types, transportUrl, official }) => {\n const renderLogoFallback = React.useCallback(() => (\n \n ), []);\n return (\n
    \n
    \n \n
    \n {typeof name === 'string' && name.length > 0 ? name : id}\n {\n typeof version === 'string' && version.length > 0 ?\n v. {version}\n :\n null\n }\n
    \n
    \n {\n typeof description === 'string' && description.length > 0 ?\n
    \n {description}\n
    \n :\n null\n }\n {\n typeof transportUrl === 'string' && transportUrl.length > 0 ?\n
    \n URL: \n {transportUrl}\n
    \n :\n null\n }\n {\n Array.isArray(types) && types.length > 0 ?\n
    \n Supported types: \n \n {\n types.length === 1 ?\n types[0]\n :\n types.slice(0, -1).join(', ') + ' & ' + types[types.length - 1]\n }\n \n
    \n :\n null\n }\n {\n !official ?\n
    \n
    Using third-party add-ons will always be subject to your responsibility and the governing law of the jurisdiction you are located.
    \n
    \n :\n null\n }\n
    \n );\n};\n\nAddonDetails.propTypes = {\n className: PropTypes.string,\n id: PropTypes.string,\n name: PropTypes.string,\n version: PropTypes.string,\n logo: PropTypes.string,\n description: PropTypes.string,\n types: PropTypes.arrayOf(PropTypes.string),\n transportUrl: PropTypes.string,\n official: PropTypes.bool,\n};\n\nmodule.exports = AddonDetails;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst AddonDetails = require('./AddonDetails');\n\nmodule.exports = AddonDetails;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst ModalDialog = require('stremio/common/ModalDialog');\nconst { withCoreSuspender } = require('stremio/common/CoreSuspender');\nconst { useServices } = require('stremio/services');\nconst AddonDetailsWithRemoteAndLocalAddon = withRemoteAndLocalAddon(require('./AddonDetails'));\nconst useAddonDetails = require('./useAddonDetails');\nconst styles = require('./styles');\n\nfunction withRemoteAndLocalAddon(AddonDetails) {\n const withRemoteAndLocalAddon = ({ remoteAddon, localAddon, ...props }) => {\n const addon = remoteAddon !== null && remoteAddon.content.type === 'Ready' ?\n remoteAddon.content.content\n :\n localAddon !== null ?\n localAddon\n :\n null;\n if (addon === null) {\n return null;\n }\n\n return (\n \n );\n };\n withRemoteAndLocalAddon.displayName = 'withRemoteAndLocalAddon';\n return withRemoteAndLocalAddon;\n}\n\nconst AddonDetailsModal = ({ transportUrl, onCloseRequest }) => {\n const { core } = useServices();\n const addonDetails = useAddonDetails(transportUrl);\n const modalButtons = React.useMemo(() => {\n const cancelButton = {\n className: styles['cancel-button'],\n label: 'Cancel',\n props: {\n onClick: (event) => {\n if (typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'cancel',\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n }\n };\n const configureButton = addonDetails.remoteAddon !== null &&\n addonDetails.remoteAddon.content.type === 'Ready' &&\n addonDetails.remoteAddon.content.content.manifest.behaviorHints.configurable ?\n {\n className: styles['configure-button'],\n label: 'Configure',\n props: {\n onClick: (event) => {\n window.open(transportUrl.replace('manifest.json', 'configure'));\n if (typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'configure',\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n }\n }\n :\n null;\n const toggleButton = addonDetails.localAddon !== null ?\n {\n className: styles['uninstall-button'],\n label: 'Uninstall',\n props: {\n onClick: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UninstallAddon',\n args: addonDetails.localAddon\n }\n });\n if (typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'uninstall',\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n }\n }\n :\n addonDetails.remoteAddon !== null && addonDetails.remoteAddon.content.type === 'Ready' ?\n {\n\n className: styles['install-button'],\n label: 'Install',\n props: {\n onClick: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'InstallAddon',\n args: addonDetails.remoteAddon.content.content\n }\n });\n if (typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'install',\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n }\n }\n :\n null;\n return toggleButton !== null ? configureButton ? [cancelButton, configureButton, toggleButton] : [cancelButton, toggleButton] : [cancelButton];\n }, [addonDetails, onCloseRequest]);\n return (\n \n {\n addonDetails.selected === null ?\n
    \n Loading addon manifest\n
    \n :\n addonDetails.remoteAddon === null || addonDetails.remoteAddon.content.type === 'Loading' ?\n
    \n Loading addon manifest from {addonDetails.selected.transportUrl}\n
    \n :\n addonDetails.remoteAddon.content.type === 'Err' && addonDetails.localAddon === null ?\n
    \n Failed to get addon manifest from {addonDetails.selected.transportUrl}\n
    {addonDetails.remoteAddon.content.content.message}
    \n
    \n :\n \n }\n
    \n );\n};\n\nAddonDetailsModal.propTypes = {\n transportUrl: PropTypes.string,\n onCloseRequest: PropTypes.func\n};\n\nconst AddonDetailsModalFallback = ({ onCloseRequest }) => (\n \n
    \n Loading addon manifest\n
    \n \n);\n\nAddonDetailsModalFallback.propTypes = AddonDetailsModal.propTypes;\n\nmodule.exports = withCoreSuspender(AddonDetailsModal, AddonDetailsModalFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst AddonDetailsModal = require('./AddonDetailsModal');\n\nmodule.exports = AddonDetailsModal;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst useModelState = require('stremio/common/useModelState');\n\nconst useAddonDetails = (transportUrl) => {\n const action = React.useMemo(() => {\n if (typeof transportUrl === 'string') {\n return {\n action: 'Load',\n args: {\n model: 'AddonDetails',\n args: {\n transportUrl\n }\n }\n };\n } else {\n return {\n action: 'Unload'\n };\n }\n }, [transportUrl]);\n return useModelState({ model: 'addon_details', action });\n};\n\nmodule.exports = useAddonDetails;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst styles = require('./styles');\nconst { useLongPress } = require('use-long-press');\n\nconst Button = React.forwardRef(({ className, href, disabled, children, onLongPress, ...props }, ref) => {\n const longPress = useLongPress(onLongPress, { detect: 'pointer' });\n const onKeyDown = React.useCallback((event) => {\n if (typeof props.onKeyDown === 'function') {\n props.onKeyDown(event);\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n if (!event.nativeEvent.buttonClickPrevented) {\n event.currentTarget.click();\n }\n }\n }, [props.onKeyDown]);\n const onMouseDown = React.useCallback((event) => {\n if (typeof props.onMouseDown === 'function') {\n props.onMouseDown(event);\n }\n\n if (!event.nativeEvent.buttonBlurPrevented) {\n event.preventDefault();\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement.blur();\n }\n }\n }, [props.onMouseDown]);\n return React.createElement(\n typeof href === 'string' && href.length > 0 ? 'a' : 'div',\n {\n tabIndex: 0,\n ...props,\n ref,\n className: classnames(className, styles['button-container'], { 'disabled': disabled }),\n href,\n onKeyDown,\n onMouseDown,\n ...longPress()\n },\n children\n );\n});\n\nButton.displayName = 'Button';\n\nButton.propTypes = {\n className: PropTypes.string,\n href: PropTypes.string,\n disabled: PropTypes.bool,\n children: PropTypes.node,\n onKeyDown: PropTypes.func,\n onMouseDown: PropTypes.func,\n onLongPress: PropTypes.func,\n};\n\nmodule.exports = Button;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Button = require('./Button');\n\nmodule.exports = Button;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst CHROMECAST_RECEIVER_APP_ID = '1634F54B';\nconst SUBTITLES_SIZES = [75, 100, 125, 150, 175, 200, 250];\nconst SUBTITLES_FONTS = ['Roboto', 'Arial', 'Halvetica', 'Times New Roman', 'Verdana', 'Courier', 'Lucida Console', 'sans-serif', 'serif', 'monospace'];\nconst SEEK_TIME_DURATIONS = [5000, 10000, 15000, 20000, 25000, 30000];\nconst NEXT_VIDEO_POPUP_DURATIONS = [0, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000];\nconst CATALOG_PREVIEW_SIZE = 10;\nconst CATALOG_PAGE_SIZE = 100;\nconst NONE_EXTRA_VALUE = 'None';\nconst SKIP_EXTRA_NAME = 'skip';\nconst META_LINK_CATEGORY = 'meta';\nconst IMDB_LINK_CATEGORY = 'imdb';\nconst SHARE_LINK_CATEGORY = 'share';\nconst WRITERS_LINK_CATEGORY = 'Writers';\nconst TYPE_PRIORITIES = {\n movie: 10,\n series: 9,\n channel: 8,\n tv: 7,\n music: 6,\n radio: 5,\n podcast: 4,\n game: 3,\n book: 2,\n adult: 1,\n other: -Infinity\n};\nconst ICON_FOR_TYPE = new Map([\n ['movie', 'ic_movies'],\n ['series', 'ic_series'],\n ['channel', 'ic_channels'],\n ['tv', 'ic_tv'],\n ['book', 'ic_book'],\n ['game', 'ic_games'],\n ['music', 'ic_music'],\n ['adult', 'ic_adult'],\n ['radio', 'ic_radio'],\n ['podcast', 'ic_podcast'],\n ['other', 'ic_movies'],\n]);\n\nmodule.exports = {\n CHROMECAST_RECEIVER_APP_ID,\n SUBTITLES_SIZES,\n SUBTITLES_FONTS,\n SEEK_TIME_DURATIONS,\n NEXT_VIDEO_POPUP_DURATIONS,\n CATALOG_PREVIEW_SIZE,\n CATALOG_PAGE_SIZE,\n NONE_EXTRA_VALUE,\n SKIP_EXTRA_NAME,\n META_LINK_CATEGORY,\n IMDB_LINK_CATEGORY,\n SHARE_LINK_CATEGORY,\n WRITERS_LINK_CATEGORY,\n TYPE_PRIORITIES,\n ICON_FOR_TYPE\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst styles = require('./styles');\n\nconst Checkbox = React.forwardRef(({ className, checked, children, ...props }, ref) => {\n return (\n \n );\n});\n\nCheckbox.displayName = 'Checkbox';\n\nCheckbox.propTypes = {\n className: PropTypes.string,\n checked: PropTypes.bool,\n children: PropTypes.node\n};\n\nmodule.exports = Checkbox;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Checkbox = require('./Checkbox');\n\nmodule.exports = Checkbox;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst AColorPicker = require('a-color-picker');\nconst { useTranslation } = require('react-i18next');\nconst Button = require('stremio/common/Button');\nconst ModalDialog = require('stremio/common/ModalDialog');\nconst useBinaryState = require('stremio/common/useBinaryState');\nconst ColorPicker = require('./ColorPicker');\nconst styles = require('./styles');\n\nconst parseColor = (value) => {\n const color = AColorPicker.parseColor(value, 'hexcss4');\n return typeof color === 'string' ? color : '#ffffffff';\n};\n\nconst ColorInput = ({ className, value, dataset, onChange, ...props }) => {\n const { t } = useTranslation();\n const [modalOpen, openModal, closeModal] = useBinaryState(false);\n const [tempValue, setTempValue] = React.useState(() => {\n return parseColor(value);\n });\n const labelButtonStyle = React.useMemo(() => ({\n backgroundColor: value\n }), [value]);\n const isTransparent = React.useMemo(() => {\n return parseColor(value).endsWith('00');\n }, [value]);\n const labelButtonOnClick = React.useCallback((event) => {\n if (typeof props.onClick === 'function') {\n props.onClick(event);\n }\n\n if (!event.nativeEvent.openModalPrevented) {\n openModal();\n }\n }, [props.onClick]);\n const modalDialogOnClick = React.useCallback((event) => {\n event.nativeEvent.openModalPrevented = true;\n }, []);\n const modalButtons = React.useMemo(() => {\n const selectButtonOnClick = (event) => {\n if (typeof onChange === 'function') {\n onChange({\n type: 'change',\n value: tempValue,\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n\n closeModal();\n };\n return [\n {\n label: 'Select',\n props: {\n 'data-autofocus': true,\n onClick: selectButtonOnClick\n }\n }\n ];\n }, [tempValue, dataset, onChange]);\n const colorPickerOnInput = React.useCallback((event) => {\n setTempValue(parseColor(event.value));\n }, []);\n React.useLayoutEffect(() => {\n setTempValue(parseColor(value));\n }, [value, modalOpen]);\n return (\n \n );\n};\n\nColorInput.propTypes = {\n className: PropTypes.string,\n value: PropTypes.string,\n dataset: PropTypes.object,\n onChange: PropTypes.func,\n onClick: PropTypes.func\n};\n\nmodule.exports = ColorInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst AColorPicker = require('a-color-picker');\nconst styles = require('./styles');\n\nconst parseColor = (value) => {\n return AColorPicker.parseColor(value, 'hexcss4');\n};\n\nconst ColorPicker = ({ className, value, onInput }) => {\n const pickerRef = React.useRef(null);\n const pickerElementRef = React.useRef(null);\n React.useLayoutEffect(() => {\n pickerRef.current = AColorPicker.createPicker(pickerElementRef.current, {\n color: parseColor(value),\n showHSL: false,\n showHEX: false,\n showRGB: false,\n showAlpha: true\n });\n const pickerClipboard = pickerElementRef.current.querySelector('.a-color-picker-clipbaord');\n if (pickerClipboard instanceof HTMLElement) {\n pickerClipboard.tabIndex = -1;\n }\n }, []);\n React.useLayoutEffect(() => {\n if (typeof onInput === 'function') {\n pickerRef.current.on('change', (picker, value) => {\n onInput({\n type: 'input',\n value: parseColor(value)\n });\n });\n }\n return () => {\n pickerRef.current.off('change');\n };\n }, [onInput]);\n React.useLayoutEffect(() => {\n const nextValue = parseColor(value);\n if (nextValue !== parseColor(pickerRef.current.color)) {\n pickerRef.current.color = nextValue;\n }\n }, [value]);\n return (\n
    \n );\n};\n\nColorPicker.propTypes = {\n className: PropTypes.string,\n value: PropTypes.string,\n onInput: PropTypes.func\n};\n\nmodule.exports = ColorPicker;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ColorPicker = require('./ColorPicker');\n\nmodule.exports = ColorPicker;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ColorInput = require('./ColorInput');\n\nmodule.exports = ColorInput;\n\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\n\nconst CoreSuspenderContext = React.createContext(null);\n\nCoreSuspenderContext.displayName = 'CoreSuspenderContext';\n\nfunction wrapPromise(promise) {\n let status = 'pending';\n let result;\n const suspender = promise.then(\n (resp) => {\n status = 'success';\n result = resp;\n },\n (error) => {\n status = 'error';\n result = error;\n }\n );\n return {\n read() {\n if (status === 'pending') {\n throw suspender;\n } else if (status === 'error') {\n throw result;\n } else if (status === 'success') {\n return result;\n }\n }\n };\n}\n\nconst useCoreSuspender = () => {\n return React.useContext(CoreSuspenderContext);\n};\n\nconst withCoreSuspender = (Component, Fallback = () => { }) => {\n return function withCoreSuspender(props) {\n const { core } = useServices();\n const parentSuspender = useCoreSuspender();\n const [render, setRender] = React.useState(parentSuspender === null);\n const statesRef = React.useRef({});\n const streamsRef = React.useRef({});\n const getState = React.useCallback((model) => {\n if (!statesRef.current[model]) {\n statesRef.current[model] = wrapPromise(core.transport.getState(model));\n }\n\n return statesRef.current[model].read();\n }, []);\n const decodeStream = React.useCallback((stream) => {\n if (!streamsRef.current[stream]) {\n streamsRef.current[stream] = wrapPromise(core.transport.decodeStream(stream));\n }\n\n return streamsRef.current[stream].read();\n }, []);\n const suspender = React.useMemo(() => ({ getState, decodeStream }), []);\n React.useLayoutEffect(() => {\n if (!render) {\n setRender(true);\n }\n }, []);\n return render ?\n }>\n \n \n \n \n :\n null;\n };\n};\n\nmodule.exports = { withCoreSuspender, useCoreSuspender };\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\n\nconst DelayedRenderer = ({ children, delay }) => {\n const [render, setRender] = React.useState(false);\n React.useEffect(() => {\n const timeout = setTimeout(() => {\n setRender(true);\n }, delay);\n return () => {\n clearTimeout(timeout);\n };\n }, []);\n return render ? children : null;\n};\n\nDelayedRenderer.propTypes = {\n children: PropTypes.node\n};\n\nmodule.exports = DelayedRenderer;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst DelayedRenderer = require('./DelayedRenderer');\n\nmodule.exports = DelayedRenderer;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\n\nconst Image = ({ className, src, alt, fallbackSrc, renderFallback, ...props }) => {\n const [broken, setBroken] = React.useState(false);\n const onError = React.useCallback((event) => {\n if (typeof props.onError === 'function') {\n props.onError(event);\n }\n\n setBroken(true);\n }, [props.onError]);\n React.useLayoutEffect(() => {\n setBroken(false);\n }, [src]);\n return (broken || typeof src !== 'string' || src.length === 0) && (typeof renderFallback === 'function' || typeof fallbackSrc === 'string') ?\n typeof renderFallback === 'function' ?\n renderFallback()\n :\n {alt}\n :\n {alt};\n};\n\nImage.propTypes = {\n className: PropTypes.string,\n src: PropTypes.string,\n alt: PropTypes.string,\n fallbackSrc: PropTypes.string,\n renderFallback: PropTypes.func,\n onError: PropTypes.func\n};\n\nmodule.exports = Image;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Image = require('./Image');\n\nmodule.exports = Image;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst PropTypes = require('prop-types');\nconst MetaItem = require('stremio/common/MetaItem');\nconst useNotifications = require('stremio/common/useNotifications');\nconst { t } = require('i18next');\n\nconst OPTIONS = [\n { label: 'LIBRARY_PLAY', value: 'play' },\n { label: 'LIBRARY_DETAILS', value: 'details' },\n { label: 'LIBRARY_RESUME_DISMISS', value: 'dismiss' },\n { label: 'LIBRARY_REMOVE', value: 'remove' },\n];\n\nconst LibItem = ({ _id, removable, ...props }) => {\n const { core } = useServices();\n const notifications = useNotifications();\n const newVideos = React.useMemo(() => {\n const count = notifications.items?.[_id]?.length ?? 0;\n return Math.min(Math.max(count, 0), 99);\n }, [_id, notifications.items]);\n const options = React.useMemo(() => {\n return OPTIONS\n .filter(({ value }) => {\n switch (value) {\n case 'play':\n return props.deepLinks && typeof props.deepLinks.player === 'string';\n case 'details':\n return props.deepLinks && (typeof props.deepLinks.metaDetailsVideos === 'string' || typeof props.deepLinks.metaDetailsStreams === 'string');\n case 'dismiss':\n return typeof _id === 'string' && props.progress !== null && !isNaN(props.progress);\n case 'remove':\n return typeof _id === 'string' && removable;\n }\n })\n .map((option) => ({\n ...option,\n label: t(option.label)\n }));\n }, [_id, removable, props.progress, props.deepLinks]);\n const optionOnSelect = React.useCallback((event) => {\n if (typeof props.optionOnSelect === 'function') {\n props.optionOnSelect(event);\n }\n\n if (!event.nativeEvent.optionSelectPrevented) {\n switch (event.value) {\n case 'play': {\n if (props.deepLinks && typeof props.deepLinks.player === 'string') {\n window.location = props.deepLinks.player;\n }\n\n break;\n }\n case 'details': {\n if (props.deepLinks) {\n if (typeof props.deepLinks.metaDetailsVideos === 'string') {\n window.location = props.deepLinks.metaDetailsVideos;\n } else if (typeof props.deepLinks.metaDetailsStreams === 'string') {\n window.location = props.deepLinks.metaDetailsStreams;\n }\n }\n\n break;\n }\n case 'dismiss': {\n if (typeof _id === 'string') {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'RewindLibraryItem',\n args: _id\n }\n });\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'DismissNotificationItem',\n args: _id\n }\n });\n }\n\n break;\n }\n case 'remove': {\n if (typeof _id === 'string') {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'RemoveFromLibrary',\n args: _id\n }\n });\n }\n\n break;\n }\n }\n }\n }, [_id, props.deepLinks, props.optionOnSelect]);\n return (\n \n );\n};\n\nLibItem.propTypes = {\n _id: PropTypes.string,\n removable: PropTypes.bool,\n progress: PropTypes.number,\n deepLinks: PropTypes.shape({\n metaDetailsVideos: PropTypes.string,\n metaDetailsStreams: PropTypes.string,\n player: PropTypes.string\n }),\n optionOnSelect: PropTypes.func\n};\n\nmodule.exports = LibItem;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst LibItem = require('./LibItem');\n\nmodule.exports = LibItem;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { VerticalNavBar, HorizontalNavBar } = require('stremio/common/NavBar');\nconst styles = require('./styles');\n\nconst TABS = [\n { id: 'board', label: 'Board', icon: 'ic_board', href: '#/' },\n { id: 'discover', label: 'Discover', icon: 'ic_discover', href: '#/discover' },\n { id: 'library', label: 'Library', icon: 'ic_library', href: '#/library' },\n { id: 'settings', label: 'SETTINGS', icon: 'ic_settings', href: '#/settings' },\n { id: 'addons', label: 'ADDONS', icon: 'ic_addons', href: '#/addons' }\n];\n\nconst MainNavBars = React.memo(({ className, route, query, children }) => {\n return (\n
    \n \n \n
    {children}
    \n
    \n );\n});\n\nMainNavBars.displayName = 'MainNavBars';\n\nMainNavBars.propTypes = {\n className: PropTypes.string,\n route: PropTypes.string,\n query: PropTypes.string,\n children: PropTypes.node\n};\n\nmodule.exports = MainNavBars;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MainNavBars = require('./MainNavBars');\n\nmodule.exports = MainNavBars;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst filterInvalidDOMProps = require('filter-invalid-dom-props').default;\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst Image = require('stremio/common/Image');\nconst Multiselect = require('stremio/common/Multiselect');\nconst PlayIconCircleCentered = require('stremio/common/PlayIconCircleCentered');\nconst useBinaryState = require('stremio/common/useBinaryState');\nconst { ICON_FOR_TYPE } = require('stremio/common/CONSTANTS');\nconst styles = require('./styles');\n\nconst MetaItem = React.memo(({ className, type, name, poster, posterShape, playIcon, progress, newVideos, options, deepLinks, dataset, optionOnSelect, ...props }) => {\n const [menuOpen, onMenuOpen, onMenuClose] = useBinaryState(false);\n const href = React.useMemo(() => {\n return deepLinks ?\n typeof deepLinks.player === 'string' ?\n deepLinks.player\n :\n typeof deepLinks.metaDetailsStreams === 'string' ?\n deepLinks.metaDetailsStreams\n :\n typeof deepLinks.metaDetailsVideos === 'string' ?\n deepLinks.metaDetailsVideos\n :\n null\n :\n null;\n }, [deepLinks]);\n const metaItemOnClick = React.useCallback((event) => {\n if (typeof props.onClick === 'function') {\n props.onClick(event);\n }\n\n if (event.nativeEvent.selectPrevented) {\n event.preventDefault();\n }\n }, [props.onClick]);\n const menuOnClick = React.useCallback((event) => {\n event.nativeEvent.selectPrevented = true;\n }, []);\n const menuOnSelect = React.useCallback((event) => {\n if (typeof optionOnSelect === 'function') {\n optionOnSelect({\n type: 'select-option',\n value: event.value,\n dataset: dataset,\n reactEvent: event.reactEvent,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, optionOnSelect]);\n const renderPosterFallback = React.useCallback(() => (\n \n ), [type]);\n const renderMenuLabelContent = React.useCallback(() => (\n \n ), []);\n return (\n \n );\n});\n\nMetaItem.displayName = 'MetaItem';\n\nMetaItem.propTypes = {\n className: PropTypes.string,\n type: PropTypes.string,\n name: PropTypes.string,\n poster: PropTypes.string,\n posterShape: PropTypes.oneOf(['poster', 'landscape', 'square']),\n playIcon: PropTypes.bool,\n progress: PropTypes.number,\n newVideos: PropTypes.number,\n options: PropTypes.array,\n deepLinks: PropTypes.shape({\n metaDetailsVideos: PropTypes.string,\n metaDetailsStreams: PropTypes.string,\n player: PropTypes.string\n }),\n dataset: PropTypes.object,\n optionOnSelect: PropTypes.func,\n onClick: PropTypes.func\n};\n\nmodule.exports = MetaItem;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaItem = require('./MetaItem');\n\nmodule.exports = MetaItem;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst styles = require('./styles');\n\nconst ActionButton = ({ className, icon, label, ...props }) => {\n return (\n \n );\n};\n\nActionButton.propTypes = {\n className: PropTypes.string,\n icon: PropTypes.string,\n label: PropTypes.string\n};\n\nmodule.exports = ActionButton;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ActionButton = require('./ActionButton');\n\nmodule.exports = ActionButton;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Button = require('stremio/common/Button');\nconst styles = require('./styles');\n\nconst MetaLinks = ({ className, label, links }) => {\n const { t } = useTranslation();\n return (\n
    \n {\n typeof label === 'string' && label.length > 0 ?\n
    \n {t(`LINKS_${label.toUpperCase()}`)}\n
    \n :\n null\n }\n {\n Array.isArray(links) && links.length > 0 ?\n
    \n {links.map(({ label, href }, index) => (\n \n ))}\n
    \n :\n null\n }\n
    \n );\n};\n\nMetaLinks.propTypes = {\n className: PropTypes.string,\n label: PropTypes.string,\n links: PropTypes.arrayOf(PropTypes.shape({\n label: PropTypes.string,\n href: PropTypes.string\n }))\n};\n\nmodule.exports = MetaLinks;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaLinks = require('./MetaLinks');\n\nmodule.exports = MetaLinks;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst UrlUtils = require('url');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst Image = require('stremio/common/Image');\nconst ModalDialog = require('stremio/common/ModalDialog');\nconst SharePrompt = require('stremio/common/SharePrompt');\nconst CONSTANTS = require('stremio/common/CONSTANTS');\nconst routesRegexp = require('stremio/common/routesRegexp');\nconst useBinaryState = require('stremio/common/useBinaryState');\nconst ActionButton = require('./ActionButton');\nconst MetaLinks = require('./MetaLinks');\nconst MetaPreviewPlaceholder = require('./MetaPreviewPlaceholder');\nconst styles = require('./styles');\n\nconst ALLOWED_LINK_REDIRECTS = [\n routesRegexp.search.regexp,\n routesRegexp.discover.regexp,\n routesRegexp.metadetails.regexp\n];\n\nconst MetaPreview = ({ className, compact, name, logo, background, runtime, releaseInfo, released, description, deepLinks, links, trailerStreams, inLibrary, toggleInLibrary }) => {\n const { t } = useTranslation();\n const [shareModalOpen, openShareModal, closeShareModal] = useBinaryState(false);\n const linksGroups = React.useMemo(() => {\n return Array.isArray(links) ?\n links\n .filter((link) => link && typeof link.category === 'string' && typeof link.url === 'string')\n .reduce((linksGroups, { category, name, url }) => {\n const { protocol, path, pathname, hostname } = UrlUtils.parse(url);\n if (category === CONSTANTS.IMDB_LINK_CATEGORY) {\n if (hostname === 'imdb.com') {\n linksGroups.set(category, {\n label: name,\n href: `https://www.stremio.com/warning#${encodeURIComponent(url)}`\n });\n }\n } else if (category === CONSTANTS.SHARE_LINK_CATEGORY) {\n linksGroups.set(category, {\n label: name,\n href: url\n });\n } else {\n if (protocol === 'stremio:') {\n if (pathname !== null && ALLOWED_LINK_REDIRECTS.some((regexp) => pathname.match(regexp))) {\n if (!linksGroups.has(category)) {\n linksGroups.set(category, []);\n }\n linksGroups.get(category).push({\n label: name,\n href: `#${path}`\n });\n }\n } else if (typeof hostname === 'string' && hostname.length > 0) {\n if (!linksGroups.has(category)) {\n linksGroups.set(category, []);\n }\n linksGroups.get(category).push({\n label: name,\n href: `https://www.stremio.com/warning#${encodeURIComponent(url)}`\n });\n }\n }\n\n return linksGroups;\n }, new Map())\n :\n new Map();\n }, [links]);\n const showHref = React.useMemo(() => {\n return deepLinks ?\n typeof deepLinks.player === 'string' ?\n deepLinks.player\n :\n typeof deepLinks.metaDetailsStreams === 'string' ?\n deepLinks.metaDetailsStreams\n :\n typeof deepLinks.metaDetailsVideos === 'string' ?\n deepLinks.metaDetailsVideos\n :\n null\n :\n null;\n }, [deepLinks]);\n const trailerHref = React.useMemo(() => {\n if (!Array.isArray(trailerStreams) || trailerStreams.length === 0) {\n return null;\n }\n\n return trailerStreams[0].deepLinks.player;\n }, [trailerStreams]);\n const renderLogoFallback = React.useCallback(() => (\n
    {!compact ? name : null}
    \n ), [compact, name]);\n return (\n
    \n {\n typeof background === 'string' && background.length > 0 ?\n
    \n {'\n
    \n :\n null\n }\n
    \n {\n typeof logo === 'string' && logo.length > 0 ?\n \n :\n renderLogoFallback()\n }\n {\n (typeof releaseInfo === 'string' && releaseInfo.length > 0) || (released instanceof Date && !isNaN(released.getTime())) || (typeof runtime === 'string' && runtime.length > 0) || linksGroups.has(CONSTANTS.IMDB_LINK_CATEGORY) ?\n
    \n {\n typeof runtime === 'string' && runtime.length > 0 ?\n
    {runtime}
    \n :\n null\n }\n {\n typeof releaseInfo === 'string' && releaseInfo.length > 0 ?\n
    {releaseInfo}
    \n :\n released instanceof Date && !isNaN(released.getTime()) ?\n
    {released.getFullYear()}
    \n :\n null\n }\n {\n linksGroups.has(CONSTANTS.IMDB_LINK_CATEGORY) ?\n \n \n
    {linksGroups.get(CONSTANTS.IMDB_LINK_CATEGORY).label}
    \n \n :\n null\n }\n
    \n :\n null\n }\n {\n compact && typeof name === 'string' && name.length > 0 ?\n
    \n {name}\n
    \n :\n null\n }\n {\n compact && typeof description === 'string' && description.length > 0 ?\n
    {description}
    \n :\n null\n }\n {\n Array.from(linksGroups.keys())\n .filter((category) => {\n return category !== CONSTANTS.IMDB_LINK_CATEGORY &&\n category !== CONSTANTS.SHARE_LINK_CATEGORY &&\n category !== CONSTANTS.WRITERS_LINK_CATEGORY;\n })\n .map((category, index) => (\n \n ))\n }\n
    \n
    \n {\n typeof toggleInLibrary === 'function' ?\n \n :\n null\n }\n {\n typeof trailerHref === 'string' ?\n \n :\n null\n }\n {\n typeof showHref === 'string' && compact ?\n \n :\n null\n }\n {\n linksGroups.has(CONSTANTS.SHARE_LINK_CATEGORY) && !compact ?\n \n \n {\n shareModalOpen ?\n \n \n \n :\n null\n }\n \n :\n null\n }\n
    \n
    \n );\n};\n\nMetaPreview.Placeholder = MetaPreviewPlaceholder;\n\nMetaPreview.propTypes = {\n className: PropTypes.string,\n compact: PropTypes.bool,\n name: PropTypes.string,\n logo: PropTypes.string,\n background: PropTypes.string,\n runtime: PropTypes.string,\n releaseInfo: PropTypes.string,\n released: PropTypes.instanceOf(Date),\n description: PropTypes.string,\n deepLinks: PropTypes.shape({\n metaDetailsVideos: PropTypes.string,\n metaDetailsStreams: PropTypes.string,\n player: PropTypes.string\n }),\n links: PropTypes.arrayOf(PropTypes.shape({\n category: PropTypes.string,\n name: PropTypes.string,\n url: PropTypes.string\n })),\n trailerStreams: PropTypes.array,\n inLibrary: PropTypes.bool,\n toggleInLibrary: PropTypes.func\n};\n\nmodule.exports = MetaPreview;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst styles = require('./styles');\n\nconst MetaPreviewPlaceholder = ({ className }) => {\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n};\n\nMetaPreviewPlaceholder.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = MetaPreviewPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaPreviewPlaceholder = require('./MetaPreviewPlaceholder');\n\nmodule.exports = MetaPreviewPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaPreview = require('./MetaPreview');\n\nmodule.exports = MetaPreview;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst ReactIs = require('react-is');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst CONSTANTS = require('stremio/common/CONSTANTS');\nconst MetaRowPlaceholder = require('./MetaRowPlaceholder');\nconst styles = require('./styles');\n\nconst MetaRow = ({ className, title, message, items, itemComponent, deepLinks }) => {\n const { t } = useTranslation();\n return (\n
    \n {\n (typeof title === 'string' && title.length > 0) || (deepLinks && (typeof deepLinks.discover === 'string' || typeof deepLinks.library === 'string')) ?\n
    \n {\n typeof title === 'string' && title.length > 0 ?\n
    {title}
    \n :\n null\n }\n {\n deepLinks && (typeof deepLinks.discover === 'string' || typeof deepLinks.library === 'string') ?\n \n :\n null\n }\n
    \n :\n null\n }\n {\n typeof message === 'string' && message.length > 0 ?\n
    {message}
    \n :\n
    \n {\n ReactIs.isValidElementType(itemComponent) ?\n items.slice(0, CONSTANTS.CATALOG_PREVIEW_SIZE).map((item, index) => {\n return React.createElement(itemComponent, {\n ...item,\n key: index,\n className: classnames(styles['meta-item'], styles['poster-shape-poster'], styles[`poster-shape-${item.posterShape}`])\n });\n })\n :\n null\n }\n {Array(Math.max(0, CONSTANTS.CATALOG_PREVIEW_SIZE - items.length)).fill(null).map((_, index) => (\n
    \n ))}\n
    \n }\n
    \n );\n};\n\nMetaRow.Placeholder = MetaRowPlaceholder;\n\nMetaRow.propTypes = {\n className: PropTypes.string,\n title: PropTypes.string,\n message: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({\n posterShape: PropTypes.string\n })),\n itemComponent: PropTypes.elementType,\n deepLinks: PropTypes.shape({\n discover: PropTypes.string,\n library: PropTypes.string\n })\n};\n\nmodule.exports = MetaRow;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst CONSTANTS = require('stremio/common/CONSTANTS');\nconst styles = require('./styles');\n\nconst MetaRowPlaceholder = ({ className, title, deepLinks }) => {\n const { t } = useTranslation();\n return (\n
    \n
    \n
    0 ? title : null}>\n {typeof title === 'string' && title.length > 0 ? title : null}\n
    \n {\n deepLinks && typeof deepLinks.discover === 'string' ?\n \n :\n null\n }\n
    \n
    \n {Array(CONSTANTS.CATALOG_PREVIEW_SIZE).fill(null).map((_, index) => (\n
    \n
    \n
    \n
    \n
    \n
    \n ))}\n
    \n
    \n );\n};\n\nMetaRowPlaceholder.propTypes = {\n className: PropTypes.string,\n title: PropTypes.string,\n deepLinks: PropTypes.shape({\n discover: PropTypes.string\n })\n};\n\nmodule.exports = MetaRowPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaRowPlaceholder = require('./MetaRowPlaceholder');\n\nmodule.exports = MetaRowPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaRow = require('./MetaRow');\n\nmodule.exports = MetaRow;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useRouteFocused, useModalsContainer } = require('stremio-router');\nconst Button = require('stremio/common/Button');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Modal } = require('stremio-router');\nconst styles = require('./styles');\n\nconst ModalDialog = ({ className, title, buttons, children, dataset, onCloseRequest, ...props }) => {\n const routeFocused = useRouteFocused();\n const modalsContainer = useModalsContainer();\n const modalContainerRef = React.useRef(null);\n const closeButtonOnClick = React.useCallback((event) => {\n if (typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'close',\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, onCloseRequest]);\n const onModalContainerMouseDown = React.useCallback((event) => {\n if (!event.nativeEvent.closeModalDialogPrevented && typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'close',\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, onCloseRequest]);\n const onModalDialogContainerMouseDown = React.useCallback((event) => {\n event.nativeEvent.closeModalDialogPrevented = true;\n }, []);\n React.useEffect(() => {\n const onKeyDown = (event) => {\n // its `-2` because focus lock render locking divs around its content\n if (event.code === 'Escape' && modalsContainer.childNodes[modalsContainer.childElementCount - 2] === modalContainerRef.current) {\n if (typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'close',\n dataset: dataset,\n nativeEvent: event\n });\n }\n }\n };\n if (routeFocused) {\n window.addEventListener('keydown', onKeyDown);\n }\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [routeFocused, dataset, onCloseRequest]);\n return (\n \n
    \n \n {\n typeof title === 'string' && title.length > 0 ?\n
    {title}
    \n :\n null\n }\n
    \n {children}\n
    \n {\n Array.isArray(buttons) && buttons.length > 0 ?\n
    \n {buttons.map(({ className, label, icon, props }, index) => (\n \n ))}\n
    \n :\n null\n }\n
    \n
    \n );\n};\n\nModalDialog.propTypes = {\n className: PropTypes.string,\n title: PropTypes.string,\n buttons: PropTypes.arrayOf(PropTypes.shape({\n className: PropTypes.string,\n label: PropTypes.string,\n icon: PropTypes.string,\n props: PropTypes.object\n })),\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n dataset: PropTypes.object,\n onCloseRequest: PropTypes.func\n};\n\nmodule.exports = ModalDialog;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ModalDialog = require('./ModalDialog');\n\nmodule.exports = ModalDialog;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst Popup = require('stremio/common/Popup');\nconst ModalDialog = require('stremio/common/ModalDialog');\nconst useBinaryState = require('stremio/common/useBinaryState');\nconst styles = require('./styles');\n\nconst Multiselect = ({ className, mode, direction, title, disabled, dataset, renderLabelContent, renderLabelText, onOpen, onClose, onSelect, ...props }) => {\n const [menuOpen, , closeMenu, toggleMenu] = useBinaryState(false);\n const options = React.useMemo(() => {\n return Array.isArray(props.options) ?\n props.options.filter((option) => {\n return option && typeof option.value === 'string';\n })\n :\n [];\n }, [props.options]);\n const selected = React.useMemo(() => {\n return Array.isArray(props.selected) ?\n props.selected.filter((value) => {\n return typeof value === 'string';\n })\n :\n [];\n }, [props.selected]);\n const labelOnClick = React.useCallback((event) => {\n if (typeof props.onClick === 'function') {\n props.onClick(event);\n }\n\n if (!event.nativeEvent.toggleMenuPrevented) {\n toggleMenu();\n }\n }, [props.onClick, toggleMenu]);\n const menuOnClick = React.useCallback((event) => {\n event.nativeEvent.toggleMenuPrevented = true;\n }, []);\n const menuOnKeyDown = React.useCallback((event) => {\n event.nativeEvent.buttonClickPrevented = true;\n }, []);\n const optionOnClick = React.useCallback((event) => {\n if (typeof onSelect === 'function') {\n onSelect({\n type: 'select',\n value: event.currentTarget.dataset.value,\n reactEvent: event,\n nativeEvent: event.nativeEvent,\n dataset: dataset\n });\n }\n\n if (!event.nativeEvent.closeMenuPrevented) {\n closeMenu();\n }\n }, [dataset, onSelect]);\n const mountedRef = React.useRef(false);\n React.useLayoutEffect(() => {\n if (mountedRef.current) {\n if (menuOpen) {\n if (typeof onOpen === 'function') {\n onOpen({\n type: 'open',\n dataset: dataset\n });\n }\n } else {\n if (typeof onClose === 'function') {\n onClose({\n type: 'close',\n dataset: dataset\n });\n }\n }\n }\n\n mountedRef.current = true;\n }, [menuOpen]);\n const renderLabel = React.useCallback(({ children, className, ...props }) => (\n \n ), [menuOpen, title, disabled, options, selected, labelOnClick, renderLabelContent, renderLabelText]);\n const renderMenu = React.useCallback(() => (\n
    \n {\n options.length > 0 ?\n options.map(({ label, title, value }) => (\n \n ))\n :\n
    \n
    No options available
    \n
    \n }\n
    \n ), [options, selected, menuOnKeyDown, menuOnClick, optionOnClick]);\n const renderPopupLabel = React.useMemo(() => (labelProps) => {\n return renderLabel({\n ...labelProps,\n ...props,\n className: classnames(className, labelProps.className)\n });\n }, [props, className, renderLabel]);\n return mode === 'modal' ?\n renderLabel({\n ...props,\n className,\n children: menuOpen ?\n \n {renderMenu()}\n \n :\n null\n })\n :\n ;\n};\n\nMultiselect.propTypes = {\n className: PropTypes.string,\n mode: PropTypes.oneOf(['popup', 'modal']),\n direction: PropTypes.any,\n title: PropTypes.string,\n options: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.string.isRequired,\n title: PropTypes.string,\n label: PropTypes.string\n })),\n selected: PropTypes.arrayOf(PropTypes.string),\n disabled: PropTypes.bool,\n dataset: PropTypes.object,\n renderLabelContent: PropTypes.func,\n renderLabelText: PropTypes.func,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n onSelect: PropTypes.func,\n onClick: PropTypes.func\n};\n\nmodule.exports = Multiselect;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Multiselect = require('./Multiselect');\n\nmodule.exports = Multiselect;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst Image = require('stremio/common/Image');\nconst useFullscreen = require('stremio/common/useFullscreen');\nconst SearchBar = require('./SearchBar');\nconst NavMenu = require('./NavMenu');\nconst styles = require('./styles');\nconst { t } = require('i18next');\n\nconst HorizontalNavBar = React.memo(({ className, route, query, title, backButton, searchBar, addonsButton, fullscreenButton, navMenu, ...props }) => {\n const backButtonOnClick = React.useCallback(() => {\n window.history.back();\n }, []);\n const [fullscreen, requestFullscreen, exitFullscreen] = useFullscreen();\n const renderNavMenuLabel = React.useCallback(({ ref, className, onClick, children, }) => (\n \n ), []);\n return (\n \n );\n});\n\nHorizontalNavBar.displayName = 'HorizontalNavBar';\n\nHorizontalNavBar.propTypes = {\n className: PropTypes.string,\n route: PropTypes.string,\n query: PropTypes.string,\n title: PropTypes.string,\n backButton: PropTypes.bool,\n searchBar: PropTypes.bool,\n addonsButton: PropTypes.bool,\n fullscreenButton: PropTypes.bool,\n navMenu: PropTypes.bool\n};\n\nmodule.exports = HorizontalNavBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useRouteFocused } = require('stremio-router');\nconst Popup = require('stremio/common/Popup');\nconst useBinaryState = require('stremio/common/useBinaryState');\nconst NavMenuContent = require('./NavMenuContent');\n\nconst NavMenu = (props) => {\n const routeFocused = useRouteFocused();\n const [menuOpen, , closeMenu, toggleMenu] = useBinaryState(false);\n const popupLabelOnClick = React.useCallback((event) => {\n if (!event.nativeEvent.togglePopupPrevented) {\n toggleMenu();\n }\n }, [toggleMenu]);\n const popupMenuOnClick = React.useCallback((event) => {\n event.nativeEvent.togglePopupPrevented = true;\n }, []);\n const renderLabel = React.useMemo(() => ({ ref, className, children }) => (\n props.renderLabel({\n ref,\n className: classnames(className, { 'active': menuOpen }),\n onClick: popupLabelOnClick,\n children,\n })\n ), [menuOpen, popupLabelOnClick, props.renderLabel]);\n const renderMenu = React.useCallback(() => (\n \n ), []);\n React.useEffect(() => {\n if (!routeFocused) {\n closeMenu();\n }\n }, [routeFocused]);\n return (\n \n );\n};\n\nNavMenu.propTypes = {\n renderLabel: PropTypes.func\n};\n\nmodule.exports = NavMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { useServices } = require('stremio/services');\nconst Button = require('stremio/common/Button');\nconst useFullscreen = require('stremio/common/useFullscreen');\nconst useProfile = require('stremio/common/useProfile');\nconst useTorrent = require('stremio/common/useTorrent');\nconst { withCoreSuspender } = require('stremio/common/CoreSuspender');\nconst styles = require('./styles');\n\nconst NavMenuContent = ({ onClick }) => {\n const { t } = useTranslation();\n const { core } = useServices();\n const profile = useProfile();\n const { createTorrentFromMagnet } = useTorrent();\n const [fullscreen, requestFullscreen, exitFullscreen] = useFullscreen();\n const logoutButtonOnClick = React.useCallback(() => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'Logout'\n }\n });\n }, []);\n const onPlayMagnetLinkClick = React.useCallback(async () => {\n try {\n const clipboardText = await navigator.clipboard.readText();\n createTorrentFromMagnet(clipboardText);\n } catch(e) {\n console.error(e);\n }\n }, []);\n return (\n
    \n
    \n \n
    \n
    {profile.auth === null ? t('ANONYMOUS_USER') : profile.auth.user.email}
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n );\n};\n\nNavMenuContent.propTypes = {\n onClick: PropTypes.func\n};\n\nconst NavMenuContentFallback = () => (\n
    \n);\n\nmodule.exports = withCoreSuspender(NavMenuContent, NavMenuContentFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst NavMenu = require('./NavMenu');\n\nmodule.exports = NavMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { useRouteFocused } = require('stremio-router');\nconst Button = require('stremio/common/Button');\nconst TextInput = require('stremio/common/TextInput');\nconst useTorrent = require('stremio/common/useTorrent');\nconst { withCoreSuspender } = require('stremio/common/CoreSuspender');\nconst styles = require('./styles');\n\nconst SearchBar = ({ className, query, active }) => {\n const { t } = useTranslation();\n const routeFocused = useRouteFocused();\n const { createTorrentFromMagnet } = useTorrent();\n const searchInputRef = React.useRef(null);\n const searchBarOnClick = React.useCallback(() => {\n if (!active) {\n window.location = '#/search';\n }\n }, [active]);\n const queryInputOnChange = React.useCallback(() => {\n try {\n createTorrentFromMagnet(searchInputRef.current.value);\n // eslint-disable-next-line no-empty\n } catch { }\n }, []);\n const queryInputOnSubmit = React.useCallback(() => {\n if (searchInputRef.current !== null) {\n const queryParams = new URLSearchParams([['search', searchInputRef.current.value]]);\n window.location = `#/search?${queryParams.toString()}`;\n }\n }, []);\n React.useEffect(() => {\n if (routeFocused && active) {\n searchInputRef.current.focus();\n }\n }, [routeFocused, active, query]);\n return (\n \n );\n};\n\nSearchBar.propTypes = {\n className: PropTypes.string,\n query: PropTypes.string,\n active: PropTypes.bool\n};\n\nconst SearchBarFallback = ({ className }) => {\n const { t } = useTranslation();\n return (\n \n );\n};\n\nSearchBarFallback.propTypes = SearchBar.propTypes;\n\nmodule.exports = withCoreSuspender(SearchBar, SearchBarFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SearchBar = require('./SearchBar');\n\nmodule.exports = SearchBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst HorizontalNavBar = require('./HorizontalNavBar');\n\nmodule.exports = HorizontalNavBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst Image = require('stremio/common/Image');\nconst styles = require('./styles');\n\nconst NavTabButton = ({ className, logo, icon, label, href, selected, onClick }) => {\n const renderLogoFallback = React.useCallback(() => (\n typeof icon === 'string' && icon.length > 0 ?\n \n :\n null\n ), [icon]);\n return (\n \n );\n};\n\nNavTabButton.propTypes = {\n className: PropTypes.string,\n logo: PropTypes.string,\n icon: PropTypes.string,\n label: PropTypes.string,\n href: PropTypes.string,\n selected: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nmodule.exports = NavTabButton;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst NavTabButton = require('./NavTabButton');\n\nmodule.exports = NavTabButton;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst NavTabButton = require('./NavTabButton');\nconst styles = require('./styles');\n\nconst VerticalNavBar = React.memo(({ className, selected, tabs }) => {\n const { t } = useTranslation();\n return (\n \n );\n});\n\nVerticalNavBar.displayName = 'VerticalNavBar';\n\nVerticalNavBar.propTypes = {\n className: PropTypes.string,\n selected: PropTypes.string,\n tabs: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.string,\n logo: PropTypes.string,\n icon: PropTypes.string,\n href: PropTypes.string,\n onClick: PropTypes.func\n }))\n};\n\nmodule.exports = VerticalNavBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst VerticalNavBar = require('./VerticalNavBar');\n\nmodule.exports = VerticalNavBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst HorizontalNavBar = require('./HorizontalNavBar');\nconst VerticalNavBar = require('./VerticalNavBar');\n\nmodule.exports = {\n HorizontalNavBar,\n VerticalNavBar\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst styles = require('./styles');\n\nconst PaginationInput = ({ className, label, dataset, onSelect, ...props }) => {\n const prevNextButtonOnClick = React.useCallback((event) => {\n if (typeof onSelect === 'function') {\n onSelect({\n type: 'change-page',\n value: event.currentTarget.dataset.value,\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, onSelect]);\n return (\n
    \n \n
    \n
    {label}
    \n
    \n \n
    \n );\n};\n\nPaginationInput.propTypes = {\n className: PropTypes.string,\n label: PropTypes.string,\n dataset: PropTypes.object,\n onSelect: PropTypes.func\n};\n\nmodule.exports = PaginationInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst PaginationInput = require('./PaginationInput');\n\nmodule.exports = PaginationInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst styles = require('./styles');\n\nconst PlayIconCircleCentered = ({ className }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nPlayIconCircleCentered.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = PlayIconCircleCentered;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst PlayIconCircleCentered = require('./PlayIconCircleCentered');\n\nmodule.exports = PlayIconCircleCentered;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst FocusLock = require('react-focus-lock').default;\nconst { useRouteFocused } = require('stremio-router');\nconst styles = require('./styles');\n\nconst getAnchorElement = (element) => {\n if (element === document.documentElement) {\n return element;\n }\n\n const style = window.getComputedStyle(element);\n if (style.overflowY.indexOf('auto') !== -1 || style.overflowY.indexOf('scroll') !== -1) {\n return element;\n }\n\n return getAnchorElement(element.parentElement);\n};\n\nconst Popup = ({ open, direction, renderLabel, renderMenu, dataset, onCloseRequest, ...props }) => {\n const routeFocused = useRouteFocused();\n const labelRef = React.useRef(null);\n const menuRef = React.useRef(null);\n const [autoDirection, setAutoDirection] = React.useState(null);\n const menuOnMouseDown = React.useCallback((event) => {\n event.nativeEvent.closePopupPrevented = true;\n }, []);\n React.useEffect(() => {\n const onCloseEvent = (event) => {\n if (!event.closePopupPrevented && typeof onCloseRequest === 'function') {\n const closeEvent = {\n type: 'close',\n nativeEvent: event,\n dataset: dataset\n };\n switch (event.type) {\n case 'keydown':\n if (event.code === 'Escape') {\n onCloseRequest(closeEvent);\n }\n break;\n case 'mousedown':\n if (event.target !== document.documentElement && !labelRef.current.contains(event.target)) {\n onCloseRequest(closeEvent);\n }\n break;\n case 'pointerdown':\n if (event.target !== document.documentElement && !labelRef.current.contains(event.target)) {\n onCloseRequest(closeEvent);\n }\n break;\n }\n }\n };\n if (routeFocused && open) {\n window.addEventListener('keydown', onCloseEvent);\n window.addEventListener('mousedown', onCloseEvent);\n window.addEventListener('pointerdown', onCloseEvent);\n }\n return () => {\n window.removeEventListener('keydown', onCloseEvent);\n window.removeEventListener('mousedown', onCloseEvent);\n window.removeEventListener('pointerdown', onCloseEvent);\n };\n }, [routeFocused, open, onCloseRequest, dataset]);\n React.useLayoutEffect(() => {\n if (open) {\n const autoDirection = [];\n const anchor = getAnchorElement(labelRef.current);\n const anchorRect = anchor.getBoundingClientRect();\n\n const labelRect = labelRef.current.getBoundingClientRect();\n const menuRect = menuRef.current.getBoundingClientRect();\n const labelPosition = {\n left: labelRect.left - anchorRect.left,\n top: labelRect.top - anchorRect.top,\n right: (anchorRect.width + anchorRect.left) - (labelRect.left + labelRect.width),\n bottom: (anchorRect.height + anchorRect.top) - (labelRect.top + labelRect.height)\n };\n\n if (menuRect.height <= labelPosition.bottom) {\n autoDirection.push('bottom');\n } else if (menuRect.height <= labelPosition.top) {\n autoDirection.push('top');\n } else if (labelPosition.bottom >= labelPosition.top) {\n autoDirection.push('bottom');\n } else {\n autoDirection.push('top');\n }\n\n if (menuRect.width <= (labelPosition.right + labelRect.width)) {\n autoDirection.push('right');\n } else if (menuRect.width <= (labelPosition.left + labelRect.width)) {\n autoDirection.push('left');\n } else if (labelPosition.right > labelPosition.left) {\n autoDirection.push('right');\n } else {\n autoDirection.push('left');\n }\n\n setAutoDirection(autoDirection.join('-'));\n } else {\n setAutoDirection(null);\n }\n }, [open]);\n return renderLabel({\n ...props,\n ref: labelRef,\n className: classnames(styles['label-container'], props.className, { 'active': open }),\n children: open ?\n \n {renderMenu()}\n \n :\n null\n });\n};\n\nPopup.propTypes = {\n open: PropTypes.bool,\n direction: PropTypes.oneOf(['top-left', 'bottom-left', 'top-right', 'bottom-right']),\n renderLabel: PropTypes.func.isRequired,\n renderMenu: PropTypes.func.isRequired,\n dataset: PropTypes.object,\n onCloseRequest: PropTypes.func\n};\n\nmodule.exports = Popup;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Popup = require('./Popup');\n\nmodule.exports = Popup;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst TextInput = require('stremio/common/TextInput');\nconst SearchBarPlaceholder = require('./SearchBarPlaceholder');\nconst styles = require('./styles');\n\nconst SearchBar = ({ className, title, value, onChange }) => {\n return (\n \n );\n};\n\nSearchBar.Placeholder = SearchBarPlaceholder;\n\nSearchBar.propTypes = {\n className: PropTypes.string,\n title: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func\n};\n\nmodule.exports = SearchBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst styles = require('./styles');\n\nconst SearchBarPlaceholder = ({ className, title }) => {\n return (\n
    \n
    {title}
    \n \n
    \n );\n};\n\nSearchBarPlaceholder.propTypes = {\n className: PropTypes.string,\n title: PropTypes.string\n};\n\nmodule.exports = SearchBarPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SearchBarPlaceholder = require('./SearchBarPlaceholder');\n\nmodule.exports = SearchBarPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SearchBar = require('./SearchBar');\n\nmodule.exports = SearchBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { useRouteFocused } = require('stremio-router');\nconst { useServices } = require('stremio/services');\nconst Button = require('stremio/common/Button');\nconst TextInput = require('stremio/common/TextInput');\nconst styles = require('./styles');\n\nconst SharePrompt = ({ className, url }) => {\n const { t } = useTranslation();\n const { core } = useServices();\n const inputRef = React.useRef(null);\n const routeFocused = useRouteFocused();\n const selectInputContent = React.useCallback(() => {\n if (inputRef.current !== null) {\n inputRef.current.select();\n }\n }, []);\n const copyToClipboard = React.useCallback(() => {\n if (inputRef.current !== null) {\n inputRef.current.select();\n document.execCommand('copy');\n }\n }, []);\n React.useEffect(() => {\n if (routeFocused && inputRef.current !== null) {\n inputRef.current.select();\n }\n }, [routeFocused]);\n React.useEffect(() => {\n core.transport.analytics({\n event: 'Share',\n args: {\n url: url\n }\n });\n }, [url]);\n return (\n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n );\n};\n\nSharePrompt.propTypes = {\n className: PropTypes.string,\n url: PropTypes.string\n};\n\nmodule.exports = SharePrompt;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SharePrompt = require('./SharePrompt');\n\nmodule.exports = SharePrompt;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useRouteFocused } = require('stremio-router');\nconst useAnimationFrame = require('stremio/common/useAnimationFrame');\nconst useLiveRef = require('stremio/common/useLiveRef');\nconst styles = require('./styles');\n\nconst Slider = ({ className, value, buffered, minimumValue, maximumValue, disabled, onSlide, onComplete }) => {\n const minimumValueRef = useLiveRef(minimumValue !== null && !isNaN(minimumValue) ? minimumValue : 0);\n const maximumValueRef = useLiveRef(maximumValue !== null && !isNaN(maximumValue) ? maximumValue : 100);\n const valueRef = useLiveRef(value !== null && !isNaN(value) ? Math.min(maximumValueRef.current, Math.max(minimumValueRef.current, value)) : 0);\n const bufferedRef = useLiveRef(buffered !== null && !isNaN(buffered) ? Math.min(maximumValueRef.current, Math.max(minimumValueRef.current, buffered)) : 0);\n const onSlideRef = useLiveRef(onSlide);\n const onCompleteRef = useLiveRef(onComplete);\n const sliderContainerRef = React.useRef(null);\n const routeFocused = useRouteFocused();\n const [requestThumbAnimation, cancelThumbAnimation] = useAnimationFrame();\n const calculateValueForMouseX = React.useCallback((mouseX) => {\n if (sliderContainerRef.current === null) {\n return 0;\n }\n\n const { x: sliderX, width: sliderWidth } = sliderContainerRef.current.getBoundingClientRect();\n const thumbStart = Math.min(Math.max(mouseX - sliderX, 0), sliderWidth);\n const value = (thumbStart / sliderWidth) * (maximumValueRef.current - minimumValueRef.current) + minimumValueRef.current;\n return value;\n }, []);\n const retainThumb = React.useCallback(() => {\n window.addEventListener('blur', onBlur);\n window.addEventListener('mouseup', onMouseUp);\n window.addEventListener('mousemove', onMouseMove);\n document.documentElement.className = classnames(document.documentElement.className, styles['active-slider-within']);\n }, []);\n const releaseThumb = React.useCallback(() => {\n cancelThumbAnimation();\n window.removeEventListener('blur', onBlur);\n window.removeEventListener('mouseup', onMouseUp);\n window.removeEventListener('mousemove', onMouseMove);\n const classList = document.documentElement.className.split(' ');\n const classIndex = classList.indexOf(styles['active-slider-within']);\n if (classIndex !== -1) {\n classList.splice(classIndex, 1);\n document.documentElement.className = classnames(classList);\n }\n }, []);\n const onBlur = React.useCallback(() => {\n if (typeof onSlideRef.current === 'function') {\n onSlideRef.current(valueRef.current);\n }\n\n if (typeof onCompleteRef.current === 'function') {\n onCompleteRef.current(valueRef.current);\n }\n\n releaseThumb();\n }, []);\n const onMouseUp = React.useCallback((event) => {\n const value = calculateValueForMouseX(event.clientX);\n if (typeof onCompleteRef.current === 'function') {\n onCompleteRef.current(value);\n }\n\n releaseThumb();\n }, []);\n const onMouseMove = React.useCallback((event) => {\n requestThumbAnimation(() => {\n const value = calculateValueForMouseX(event.clientX);\n if (typeof onSlideRef.current === 'function') {\n onSlideRef.current(value);\n }\n });\n }, []);\n const onMouseDown = React.useCallback((event) => {\n if (event.button !== 0) {\n return;\n }\n\n const value = calculateValueForMouseX(event.clientX);\n if (typeof onSlideRef.current === 'function') {\n onSlideRef.current(value);\n }\n\n retainThumb();\n }, []);\n React.useLayoutEffect(() => {\n if (!routeFocused || disabled) {\n releaseThumb();\n }\n }, [routeFocused, disabled]);\n React.useLayoutEffect(() => {\n return () => {\n releaseThumb();\n };\n }, []);\n const thumbPosition = Math.max(0, Math.min(1, (valueRef.current - minimumValueRef.current) / (maximumValueRef.current - minimumValueRef.current)));\n const bufferedPosition = Math.max(0, Math.min(1, (bufferedRef.current - minimumValueRef.current) / (maximumValueRef.current - minimumValueRef.current)));\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n );\n};\n\nSlider.propTypes = {\n className: PropTypes.string,\n value: PropTypes.number,\n buffered: PropTypes.number,\n minimumValue: PropTypes.number,\n maximumValue: PropTypes.number,\n disabled: PropTypes.bool,\n onSlide: PropTypes.func,\n onComplete: PropTypes.func\n};\n\nmodule.exports = Slider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Slider = require('./Slider');\n\nmodule.exports = Slider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Button = require('stremio/common/Button');\nconst useProfile = require('stremio/common/useProfile');\nconst { withCoreSuspender } = require('stremio/common/CoreSuspender');\nconst styles = require('./styles');\n\nconst StreamingServerWarning = ({ className }) => {\n const { t } = useTranslation();\n const { core } = useServices();\n const profile = useProfile();\n const onLaterClick = React.useCallback(() => {\n const streamingServerWarningDismissed = new Date();\n streamingServerWarningDismissed.setMonth(streamingServerWarningDismissed.getMonth() + 1);\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n streamingServerWarningDismissed\n }\n }\n });\n }, [profile.settings]);\n const onDismissClick = React.useCallback(() => {\n const streamingServerWarningDismissed = new Date();\n streamingServerWarningDismissed.setFullYear(streamingServerWarningDismissed.getFullYear() + 50);\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n streamingServerWarningDismissed\n }\n }\n });\n }, [profile.settings]);\n\n if (!isNaN(profile.settings.streamingServerWarningDismissed.getTime()) &&\n profile.settings.streamingServerWarningDismissed.getTime() > Date.now()) {\n return null;\n }\n\n return (\n
    \n
    { t('SETTINGS_SERVER_UNAVAILABLE') }
    \n \n \n \n \n \n
    \n );\n};\n\nStreamingServerWarning.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = withCoreSuspender(StreamingServerWarning);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst StreamingServerWarning = require('./StreamingServerWarning');\n\nmodule.exports = StreamingServerWarning;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst styles = require('./styles');\n\nconst TextInput = React.forwardRef((props, ref) => {\n const onKeyDown = React.useCallback((event) => {\n if (typeof props.onKeyDown === 'function') {\n props.onKeyDown(event);\n }\n\n if (event.key === 'Enter' && !event.nativeEvent.submitPrevented && typeof props.onSubmit === 'function') {\n props.onSubmit(event);\n }\n }, [props.onKeyDown, props.onSubmit]);\n return (\n \n );\n});\n\nTextInput.displayName = 'TextInput';\n\nTextInput.propTypes = {\n className: PropTypes.string,\n disabled: PropTypes.bool,\n onKeyDown: PropTypes.func,\n onSubmit: PropTypes.func\n};\n\nmodule.exports = TextInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst TextInput = require('./TextInput');\n\nmodule.exports = TextInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst ToastContext = React.createContext({\n show: () => { },\n clear: () => { }\n});\n\nToastContext.displayName = 'ToastContext';\n\nmodule.exports = ToastContext;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst styles = require('./styles');\n\nconst ToastItem = ({ title, message, dataset, onSelect, onClose, ...props }) => {\n const type = React.useMemo(() => {\n return ['success', 'alert', 'error'].includes(props.type) ?\n props.type\n :\n 'success';\n }, [props.type]);\n const icon = React.useMemo(() => {\n return typeof props.icon === 'string' ? props.icon :\n type === 'success' ? 'ic_check' :\n type === 'error' ? 'ic_warning' :\n null;\n }, [type, props.icon]);\n const toastOnClick = React.useCallback((event) => {\n if (!event.nativeEvent.selectToastPrevented && typeof onSelect === 'function') {\n onSelect({\n type: 'select',\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n if (!event.nativeEvent.closeToastPrevented && typeof onClose === 'function') {\n onClose({\n type: 'close',\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, onSelect, onClose]);\n const closeButtonOnClick = React.useCallback((event) => {\n event.nativeEvent.selectToastPrevented = true;\n if (typeof onClose === 'function') {\n onClose({\n type: 'close',\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, onClose]);\n return (\n \n \n );\n};\n\nToastItem.propTypes = {\n type: PropTypes.oneOf(['success', 'alert', 'error']),\n title: PropTypes.string,\n message: PropTypes.string,\n icon: PropTypes.string,\n dataset: PropTypes.object,\n onSelect: PropTypes.func,\n onClose: PropTypes.func\n};\n\nmodule.exports = ToastItem;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ToastItem = require('./ToastItem');\n\nmodule.exports = ToastItem;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst ToastItem = require('./ToastItem');\nconst ToastContext = require('./ToastContext');\n\nconst DEFAULT_TIMEOUT = 3000;\n\nconst ToastProvider = ({ className, children }) => {\n const [container, setContainer] = React.useState(null);\n const [items, dispatch] = React.useReducer(\n (items, action) => {\n switch (action.type) {\n case 'add':\n return items.concat(action.item);\n case 'remove':\n return items.filter((item) => item.id !== action.id);\n case 'clear':\n return [];\n default:\n return items;\n }\n },\n []\n );\n const itemOnClose = React.useCallback((event) => {\n clearTimeout(event.dataset.id);\n dispatch({ type: 'remove', id: event.dataset.id });\n }, []);\n const toast = React.useMemo(() => {\n const filters = [];\n return {\n addFilter: (filter) => {\n filters.push(filter);\n },\n removeFilter: (filter) => {\n const index = filters.indexOf(filter);\n if (index > -1) {\n filters.splice(index, 1);\n }\n },\n show: (item) => {\n if (filters.some((filter) => filter(item))) {\n return;\n }\n\n const timeout = typeof item.timeout === 'number' && !isNaN(item.timeout) ?\n item.timeout\n :\n DEFAULT_TIMEOUT;\n const id = setTimeout(() => {\n dispatch({ type: 'remove', id });\n }, timeout);\n dispatch({\n type: 'add',\n item: {\n ...item,\n id,\n dataset: {\n ...item.dataset,\n id\n },\n onClose: itemOnClose\n }\n });\n },\n clear: () => {\n dispatch({ type: 'clear' });\n }\n };\n }, []);\n return (\n \n {container instanceof HTMLElement ? children : null}\n
    \n {items.map((item, index) => (\n \n ))}\n
    \n
    \n );\n};\n\nToastProvider.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node\n};\n\nmodule.exports = ToastProvider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ToastProvider = require('./ToastProvider');\nconst useToast = require('./useToast');\n\nmodule.exports = {\n ToastProvider,\n useToast\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst ToastContext = require('./ToastContext');\n\nconst useToast = () => {\n return React.useContext(ToastContext);\n};\n\nmodule.exports = useToast;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst comparatorWithPriorities = (priorities) => {\n return (a, b) => {\n if (isNaN(priorities[a]) && isNaN(priorities[b])) {\n return a.localeCompare(b);\n } else if (isNaN(priorities[a])) {\n if (priorities[b] === Number.NEGATIVE_INFINITY) {\n return -1;\n } else {\n return 1;\n }\n } else if (isNaN(priorities[b])) {\n if (priorities[a] === Number.NEGATIVE_INFINITY) {\n return 1;\n } else {\n return -1;\n }\n } else {\n return priorities[b] - priorities[a];\n }\n };\n};\n\nmodule.exports = comparatorWithPriorities;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst platform = require('./platform');\n\nlet options = [{ label: 'EXTERNAL_PLAYER_DISABLED', value: 'internal' }];\n\nif (platform.name === 'ios') {\n options = options.concat([\n { label: 'VLC', value: 'vlc' },\n { label: 'Outplayer', value: 'outplayer' }\n ]);\n} else if (platform.name === 'android') {\n options = options.concat([\n { label: 'EXTERNAL_PLAYER_ALLOW_CHOOSING', value: 'choose' },\n { label: 'VLC', value: 'vlc' },\n { label: 'Just Player', value: 'justplayer' },\n { label: 'MX Player', value: 'mxplayer' }\n ]);\n} else if (['windows', 'macos', 'linux'].includes(platform.name)) {\n options = options.concat([\n { label: 'VLC', value: 'vlc' }\n ]);\n} else {\n options = options.concat([\n { label: 'M3U Playlist', value: 'm3u' }\n ]);\n}\n\nmodule.exports = options;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst isChildVisible = (container, element) => {\n const elementTop = element.offsetTop;\n const elementBottom = element.offsetTop + element.clientHeight;\n const containerTop = container.scrollTop;\n const containerBottom = container.scrollTop + container.clientHeight;\n return (elementTop >= containerTop && elementBottom <= containerBottom) ||\n (elementTop < containerTop && containerTop < elementBottom) ||\n (elementTop < containerBottom && containerBottom < elementBottom);\n};\n\nconst getVisibleChildrenRange = (container) => {\n return Array.from(container.children).reduce((result, child, index) => {\n if (isChildVisible(container, child)) {\n if (result === null) {\n result = {\n start: index,\n end: index\n };\n } else {\n result.end = index;\n }\n }\n\n return result;\n }, null);\n};\n\nmodule.exports = getVisibleChildrenRange;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst AddonDetailsModal = require('./AddonDetailsModal');\nconst Button = require('./Button');\nconst Checkbox = require('./Checkbox');\nconst ColorInput = require('./ColorInput');\nconst DelayedRenderer = require('./DelayedRenderer');\nconst Image = require('./Image');\nconst LibItem = require('./LibItem');\nconst MainNavBars = require('./MainNavBars');\nconst MetaItem = require('./MetaItem');\nconst MetaPreview = require('./MetaPreview');\nconst MetaRow = require('./MetaRow');\nconst ModalDialog = require('./ModalDialog');\nconst Multiselect = require('./Multiselect');\nconst { HorizontalNavBar, VerticalNavBar } = require('./NavBar');\nconst PaginationInput = require('./PaginationInput');\nconst PlayIconCircleCentered = require('./PlayIconCircleCentered');\nconst Popup = require('./Popup');\nconst SearchBar = require('./SearchBar');\nconst StreamingServerWarning = require('./StreamingServerWarning');\nconst SharePrompt = require('./SharePrompt');\nconst Slider = require('./Slider');\nconst TextInput = require('./TextInput');\nconst { ToastProvider, useToast } = require('./Toast');\nconst comparatorWithPriorities = require('./comparatorWithPriorities');\nconst CONSTANTS = require('./CONSTANTS');\nconst { withCoreSuspender, useCoreSuspender } = require('./CoreSuspender');\nconst getVisibleChildrenRange = require('./getVisibleChildrenRange');\nconst interfaceLanguages = require('./interfaceLanguages.json');\nconst languageNames = require('./languageNames.json');\nconst routesRegexp = require('./routesRegexp');\nconst translateOption = require('./translateOption');\nconst useAnimationFrame = require('./useAnimationFrame');\nconst useBinaryState = require('./useBinaryState');\nconst useFullscreen = require('./useFullscreen');\nconst useLiveRef = require('./useLiveRef');\nconst useModelState = require('./useModelState');\nconst useNotifications = require('./useNotifications');\nconst useOnScrollToBottom = require('./useOnScrollToBottom');\nconst useProfile = require('./useProfile');\nconst useStreamingServer = require('./useStreamingServer');\nconst useTorrent = require('./useTorrent');\nconst platform = require('./platform');\nconst externalPlayerOptions = require('./externalPlayerOptions');\n\nmodule.exports = {\n AddonDetailsModal,\n Button,\n Checkbox,\n ColorInput,\n DelayedRenderer,\n Image,\n LibItem,\n MainNavBars,\n MetaItem,\n MetaPreview,\n MetaRow,\n ModalDialog,\n Multiselect,\n HorizontalNavBar,\n VerticalNavBar,\n PaginationInput,\n PlayIconCircleCentered,\n Popup,\n SearchBar,\n StreamingServerWarning,\n SharePrompt,\n Slider,\n TextInput,\n ToastProvider,\n useToast,\n comparatorWithPriorities,\n CONSTANTS,\n withCoreSuspender,\n useCoreSuspender,\n getVisibleChildrenRange,\n interfaceLanguages,\n languageNames,\n routesRegexp,\n translateOption,\n useAnimationFrame,\n useBinaryState,\n useFullscreen,\n useLiveRef,\n useModelState,\n useNotifications,\n useOnScrollToBottom,\n useProfile,\n useStreamingServer,\n useTorrent,\n platform,\n externalPlayerOptions,\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\n// this detects ipad properly in safari\n// while bowser does not\nfunction iOS() {\n return [\n 'iPad Simulator',\n 'iPhone Simulator',\n 'iPod Simulator',\n 'iPad',\n 'iPhone',\n 'iPod'\n ].includes(navigator.platform)\n || (navigator.userAgent.includes('Mac') && 'ontouchend' in document);\n}\n\nconst Bowser = require('bowser');\n\nconst browser = Bowser.parse(window.navigator?.userAgent || '');\n\nconst name = iOS() ? 'ios' : (browser?.os?.name || 'unknown').toLowerCase();\n\nmodule.exports = {\n name,\n isMobile: () => {\n return name === 'ios' || name === 'android';\n }\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst routesRegexp = {\n intro: {\n regexp: /^\\/intro$/,\n urlParamsNames: []\n },\n board: {\n regexp: /^\\/?$/,\n urlParamsNames: []\n },\n discover: {\n regexp: /^\\/discover(?:\\/([^/]*)\\/([^/]*)\\/([^/]*))?$/,\n urlParamsNames: ['transportUrl', 'type', 'catalogId']\n },\n library: {\n regexp: /^\\/library(?:\\/([^/]*))?$/,\n urlParamsNames: ['type']\n },\n continuewatching: {\n regexp: /^\\/continuewatching(?:\\/([^/]*))?$/,\n urlParamsNames: ['type']\n },\n search: {\n regexp: /^\\/search$/,\n urlParamsNames: []\n },\n metadetails: {\n regexp: /^\\/(?:metadetails|detail)\\/([^/]*)\\/([^/]*)(?:\\/([^/]*))?$/,\n urlParamsNames: ['type', 'id', 'videoId']\n },\n addons: {\n regexp: /^\\/addons(?:\\/([^/]*)(?:\\/([^/]*)\\/([^/]*))?)?$/,\n urlParamsNames: ['type', 'transportUrl', 'catalogId']\n },\n settings: {\n regexp: /^\\/settings$/,\n urlParamsNames: []\n },\n player: {\n regexp: /^\\/player\\/([^/]*)(?:\\/([^/]*)\\/([^/]*)\\/([^/]*)\\/([^/]*)\\/([^/]*))?$/,\n urlParamsNames: ['stream', 'streamTransportUrl', 'metaTransportUrl', 'type', 'id', 'videoId']\n }\n};\n\nmodule.exports = routesRegexp;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst { t } = require('i18next');\n\nconst translateOption = (option, translateKeyPrefix = '') => {\n const translateKey = `${translateKeyPrefix}${option}`;\n const translateValue = t(translateKey, {\n defaultValue: t(translateKey.toUpperCase(), {\n defaultValue: null\n })\n });\n return translateValue ?? option.charAt(0).toUpperCase() + option.slice(1);\n};\n\nmodule.exports = translateOption;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useAnimationFrame = () => {\n const animationFrameId = React.useRef(null);\n const cancel = React.useCallback(() => {\n cancelAnimationFrame(animationFrameId.current);\n animationFrameId.current = null;\n }, []);\n const request = React.useCallback((cb) => {\n cancel();\n animationFrameId.current = requestAnimationFrame(() => {\n cb();\n animationFrameId.current = null;\n });\n }, []);\n return [request, cancel];\n};\n\nmodule.exports = useAnimationFrame;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useBinaryState = (initialValue) => {\n const [value, setValue] = React.useState(!!initialValue);\n const on = React.useCallback(() => {\n setValue(true);\n }, []);\n const off = React.useCallback(() => {\n setValue(false);\n }, []);\n const toggle = React.useCallback(() => {\n setValue(!value);\n }, [value]);\n return [value, on, off, toggle];\n};\n\nmodule.exports = useBinaryState;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useFullscreen = () => {\n const [fullscreen, setFullscreen] = React.useState(document.fullscreenElement === document.documentElement);\n const requestFullscreen = React.useCallback(() => {\n document.documentElement.requestFullscreen();\n }, []);\n const exitFullscreen = React.useCallback(() => {\n document.exitFullscreen();\n }, []);\n const toggleFullscreen = React.useCallback(() => {\n if (fullscreen) {\n exitFullscreen();\n } else {\n requestFullscreen();\n }\n }, [fullscreen]);\n React.useEffect(() => {\n const onFullscreenChange = () => {\n setFullscreen(document.fullscreenElement === document.documentElement);\n };\n document.addEventListener('fullscreenchange', onFullscreenChange);\n return () => {\n document.removeEventListener('fullscreenchange', onFullscreenChange);\n };\n }, []);\n return [fullscreen, requestFullscreen, exitFullscreen, toggleFullscreen];\n};\n\nmodule.exports = useFullscreen;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useLiveRef = (value) => {\n const ref = React.useRef();\n ref.current = value;\n return ref;\n};\n\nmodule.exports = useLiveRef;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst throttle = require('lodash.throttle');\nconst isEqual = require('lodash.isequal');\nconst intersection = require('lodash.intersection');\nconst { useCoreSuspender } = require('stremio/common/CoreSuspender');\nconst { useRouteFocused } = require('stremio-router');\nconst { useServices } = require('stremio/services');\n\nconst useModelState = ({ action, ...args }) => {\n const { core } = useServices();\n const routeFocused = useRouteFocused();\n const mountedRef = React.useRef(false);\n const [model, timeout, map, deps] = React.useMemo(() => {\n return [args.model, args.timeout, args.map, args.deps];\n }, []);\n const { getState } = useCoreSuspender();\n const [state, setState] = React.useReducer(\n (prevState, nextState) => {\n return Object.keys(prevState).reduce((result, key) => {\n result[key] = isEqual(prevState[key], nextState[key]) ? prevState[key] : nextState[key];\n return result;\n }, {});\n },\n undefined,\n () => {\n if (typeof map === 'function') {\n return map(getState(model));\n } else {\n return getState(model);\n }\n }\n );\n React.useInsertionEffect(() => {\n if (action) {\n core.transport.dispatch(action, model);\n }\n }, [action]);\n React.useInsertionEffect(() => {\n return () => {\n core.transport.dispatch({ action: 'Unload' }, model);\n };\n }, []);\n React.useInsertionEffect(() => {\n const onNewState = async (models) => {\n if (models.indexOf(model) === -1 && (!Array.isArray(deps) || intersection(deps, models).length === 0)) {\n return;\n }\n\n const state = await core.transport.getState(model);\n if (typeof map === 'function') {\n setState(map(state));\n } else {\n setState(state);\n }\n };\n const onNewStateThrottled = throttle(onNewState, timeout);\n if (routeFocused) {\n core.transport.on('NewState', onNewStateThrottled);\n if (mountedRef.current) {\n onNewState([model]);\n }\n }\n return () => {\n onNewStateThrottled.cancel();\n core.transport.off('NewState', onNewStateThrottled);\n };\n }, [routeFocused]);\n React.useInsertionEffect(() => {\n mountedRef.current = true;\n }, []);\n return state;\n};\n\nmodule.exports = useModelState;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst useModelState = require('stremio/common/useModelState');\n\nconst map = (ctx) => ctx.notifications;\n\nconst useNotifications = () => {\n return useModelState({ model: 'ctx', map });\n};\n\nmodule.exports = useNotifications;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useOnScrollToBottom = (cb, threshold = 0) => {\n const triggeredRef = React.useRef(false);\n const onScroll = React.useCallback((event) => {\n if (event.target.scrollTop + event.target.clientHeight >= event.target.scrollHeight - threshold) {\n if (!triggeredRef.current) {\n triggeredRef.current = true;\n if (typeof cb === 'function') {\n cb(event);\n }\n }\n } else {\n triggeredRef.current = false;\n }\n }, [cb]);\n return onScroll;\n};\n\nmodule.exports = useOnScrollToBottom;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst useModelState = require('stremio/common/useModelState');\n\nconst map = (ctx) => ({\n ...ctx.profile,\n settings: {\n ...ctx.profile.settings,\n streamingServerWarningDismissed: new Date(\n typeof ctx.profile.settings.streamingServerWarningDismissed === 'string' ?\n ctx.profile.settings.streamingServerWarningDismissed\n :\n NaN\n )\n }\n});\n\nconst useProfile = () => {\n return useModelState({ model: 'ctx', map });\n};\n\nmodule.exports = useProfile;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst useModelState = require('stremio/common/useModelState');\n\nconst useStreamingServer = () => {\n return useModelState({ model: 'streaming_server' });\n};\n\nmodule.exports = useStreamingServer;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst magnet = require('magnet-uri');\nconst { useServices } = require('stremio/services');\nconst useToast = require('stremio/common/Toast/useToast');\nconst useStreamingServer = require('stremio/common/useStreamingServer');\n\nconst useTorrent = () => {\n const { core } = useServices();\n const streamingServer = useStreamingServer();\n const toast = useToast();\n const createTorrentTimeout = React.useRef(null);\n const createTorrentFromMagnet = React.useCallback((text) => {\n const parsed = magnet.decode(text);\n if (parsed && typeof parsed.infoHash === 'string') {\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'CreateTorrent',\n args: text\n }\n });\n clearTimeout(createTorrentTimeout.current);\n createTorrentTimeout.current = setTimeout(() => {\n toast.show({\n type: 'error',\n title: 'It\\'s taking a long time to get metadata from the torrent.',\n timeout: 10000\n });\n }, 10000);\n }\n }, []);\n React.useEffect(() => {\n if (streamingServer.torrent !== null) {\n const [, { type }] = streamingServer.torrent;\n if (type === 'Ready') {\n clearTimeout(createTorrentTimeout.current);\n }\n }\n }, [streamingServer.torrent]);\n React.useEffect(() => {\n return () => clearTimeout(createTorrentTimeout.current);\n }, []);\n return {\n createTorrentFromMagnet\n };\n};\n\nmodule.exports = useTorrent;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst ReactDOM = require('react-dom');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst FocusLock = require('react-focus-lock').default;\nconst { useModalsContainer } = require('../ModalsContainerContext');\n\nconst Modal = React.forwardRef(({ className, autoFocus, disabled, children, ...props }, ref) => {\n const modalsContainer = useModalsContainer();\n return ReactDOM.createPortal(\n \n {children}\n ,\n modalsContainer\n );\n});\n\nModal.displayName = 'Modal';\n\nModal.propTypes = {\n className: PropTypes.string,\n autoFocus: PropTypes.bool,\n disabled: PropTypes.bool,\n children: PropTypes.node\n};\n\nmodule.exports = Modal;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Modal = require('./Modal');\n\nmodule.exports = Modal;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst ModalsContainerContext = React.createContext(null);\n\nModalsContainerContext.displayName = 'ModalsContainerContext';\n\nmodule.exports = ModalsContainerContext;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst ModalsContainerContext = require('./ModalsContainerContext');\n\nconst ModalsContainerProvider = ({ children }) => {\n const [container, setContainer] = React.useState(null);\n return (\n \n {container instanceof HTMLElement ? children : null}\n
    \n \n );\n};\n\nModalsContainerProvider.propTypes = {\n children: PropTypes.node\n};\n\nmodule.exports = ModalsContainerProvider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ModalsContainerProvider = require('./ModalsContainerProvider');\nconst useModalsContainer = require('./useModalsContainer');\n\nmodule.exports = {\n ModalsContainerProvider,\n useModalsContainer\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst ModalsContainerContext = require('./ModalsContainerContext');\n\nconst useModalsContainer = () => {\n return React.useContext(ModalsContainerContext);\n};\n\nmodule.exports = useModalsContainer;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst { ModalsContainerProvider } = require('../ModalsContainerContext');\n\nconst Route = ({ children }) => {\n return (\n
    \n \n
    \n {children}\n
    \n
    \n
    \n );\n};\n\nRoute.propTypes = {\n children: PropTypes.node\n};\n\nmodule.exports = Route;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Route = require('./Route');\n\nmodule.exports = Route;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst RouteFocusedContext = React.createContext(true);\n\nRouteFocusedContext.displayName = 'RouteFocusedContext';\n\nmodule.exports = RouteFocusedContext;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst RouteFocusedContext = require('./RouteFocusedContext');\nconst useRouteFocused = require('./useRouteFocused');\n\nmodule.exports = {\n RouteFocusedProvider: RouteFocusedContext.Provider,\n useRouteFocused\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst RouteFocusedContext = require('./RouteFocusedContext');\n\nconst useRouteFocused = () => {\n return React.useContext(RouteFocusedContext);\n};\n\nmodule.exports = useRouteFocused;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst ReactIs = require('react-is');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst UrlUtils = require('url');\nconst isEqual = require('lodash.isequal');\nconst { RouteFocusedProvider } = require('../RouteFocusedContext');\nconst Route = require('../Route');\nconst routeConfigForPath = require('./routeConfigForPath');\nconst urlParamsForPath = require('./urlParamsForPath');\n\nconst Router = ({ className, onPathNotMatch, onRouteChange, ...props }) => {\n const viewsConfig = React.useMemo(() => props.viewsConfig, []);\n const [views, setViews] = React.useState(() => {\n return Array(viewsConfig.length).fill(null);\n });\n React.useLayoutEffect(() => {\n const onLocationHashChange = () => {\n const { pathname, query } = UrlUtils.parse(window.location.hash.slice(1));\n const queryParams = new URLSearchParams(typeof query === 'string' ? query : '');\n const routeConfig = routeConfigForPath(viewsConfig, typeof pathname === 'string' ? pathname : '');\n if (routeConfig === null) {\n if (typeof onPathNotMatch === 'function') {\n const component = onPathNotMatch();\n if (ReactIs.isValidElementType(component)) {\n setViews((views) => {\n return views\n .slice(0, viewsConfig.length)\n .concat({\n key: '-1',\n component\n });\n });\n }\n }\n\n return;\n }\n\n const urlParams = urlParamsForPath(routeConfig, typeof pathname === 'string' ? pathname : '');\n const routeViewIndex = viewsConfig.findIndex((vc) => vc.includes(routeConfig));\n const routeIndex = viewsConfig[routeViewIndex].findIndex((rc) => rc === routeConfig);\n const handled = typeof onRouteChange === 'function' && onRouteChange(routeConfig, urlParams, queryParams);\n if (!handled) {\n setViews((views) => {\n return views\n .slice(0, viewsConfig.length)\n .map((view, index) => {\n if (index < routeViewIndex) {\n return view;\n } else if (index === routeViewIndex) {\n return {\n key: `${routeViewIndex}${routeIndex}`,\n component: routeConfig.component,\n urlParams: view !== null && isEqual(view.urlParams, urlParams) ?\n view.urlParams\n :\n urlParams,\n queryParams: view !== null && isEqual(Array.from(view.queryParams.entries()), Array.from(queryParams.entries())) ?\n view.queryParams\n :\n queryParams\n };\n } else {\n return null;\n }\n });\n });\n }\n };\n window.addEventListener('hashchange', onLocationHashChange);\n onLocationHashChange();\n return () => {\n window.removeEventListener('hashchange', onLocationHashChange);\n };\n }, [onPathNotMatch, onRouteChange]);\n return (\n
    \n {\n views\n .filter((view) => view !== null)\n .map(({ key, component, urlParams, queryParams }, index, views) => (\n \n \n {React.createElement(component, { urlParams, queryParams })}\n \n \n ))\n }\n
    \n );\n};\n\nRouter.propTypes = {\n className: PropTypes.string,\n onPathNotMatch: PropTypes.func,\n onRouteChange: PropTypes.func,\n viewsConfig: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.exact({\n regexp: PropTypes.instanceOf(RegExp).isRequired,\n urlParamsNames: PropTypes.arrayOf(PropTypes.string).isRequired,\n component: PropTypes.elementType.isRequired\n }))).isRequired\n};\n\nmodule.exports = Router;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Router = require('./Router');\n\nmodule.exports = Router;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst routeConfigForPath = (viewsConfig, path) => {\n for (const viewConfig of viewsConfig) {\n for (const routeConfig of viewConfig) {\n if (path.match(routeConfig.regexp)) {\n return routeConfig;\n }\n }\n }\n\n return null;\n};\n\nmodule.exports = routeConfigForPath;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst urlParamsForPath = (routeConfig, path) => {\n const matches = path.match(routeConfig.regexp);\n return routeConfig.urlParamsNames.reduce((urlParams, name, index) => {\n if (Array.isArray(matches) && typeof matches[index + 1] === 'string') {\n urlParams[name] = decodeURIComponent(matches[index + 1]);\n } else {\n urlParams[name] = null;\n }\n\n return urlParams;\n }, { path });\n};\n\nmodule.exports = urlParamsForPath;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst { useRouteFocused } = require('./RouteFocusedContext');\nconst { useModalsContainer } = require('./ModalsContainerContext');\nconst Modal = require('./Modal');\nconst Router = require('./Router');\n\nmodule.exports = {\n useRouteFocused,\n useModalsContainer,\n Modal,\n Router\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button, Image } = require('stremio/common');\nconst styles = require('./styles');\n\nconst Addon = ({ className, id, name, version, logo, description, types, behaviorHints, installed, onToggle, onConfigure, onShare, dataset }) => {\n const { t } = useTranslation();\n const toggleButtonOnClick = React.useCallback((event) => {\n if (typeof onToggle === 'function') {\n onToggle({\n type: 'toggle',\n nativeEvent: event.nativeEvent,\n reactEvent: event,\n dataset: dataset\n });\n }\n }, [onToggle, dataset]);\n const configureButtonOnClick = React.useCallback((event) => {\n if (typeof onConfigure === 'function') {\n onConfigure({\n type: 'configure',\n nativeEvent: event.nativeEvent,\n reactEvent: event,\n dataset: dataset\n });\n }\n }, [onConfigure, dataset]);\n const shareButtonOnClick = React.useCallback((event) => {\n if (typeof onShare === 'function') {\n onShare({\n type: 'share',\n nativeEvent: event.nativeEvent,\n reactEvent: event,\n dataset: dataset\n });\n }\n }, [onShare, dataset]);\n const onKeyDown = React.useCallback((event) => {\n if (event.key === 'Enter' && typeof onToggle === 'function') {\n onToggle({\n type: 'toggle',\n nativeEvent: event.nativeEvent,\n reactEvent: event,\n dataset: dataset\n });\n }\n }, [onToggle, dataset]);\n const renderLogoFallback = React.useCallback(() => (\n \n ), []);\n return (\n \n :\n null\n }\n \n
    {installed ? t('ADDON_UNINSTALL') : behaviorHints.configurationRequired ? t('ADDON_CONFIGURE') : t('ADDON_INSTALL')}
    \n \n
    \n \n
    \n \n );\n};\n\nAddon.propTypes = {\n className: PropTypes.string,\n id: PropTypes.string,\n name: PropTypes.string,\n version: PropTypes.string,\n logo: PropTypes.string,\n description: PropTypes.string,\n types: PropTypes.arrayOf(PropTypes.string),\n behaviorHints: PropTypes.shape({\n adult: PropTypes.bool,\n configurable: PropTypes.bool,\n configurationRequired: PropTypes.bool,\n p2p: PropTypes.bool,\n }),\n installed: PropTypes.bool,\n onToggle: PropTypes.func,\n onConfigure: PropTypes.func,\n onShare: PropTypes.func,\n dataset: PropTypes.object\n};\n\nmodule.exports = Addon;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Addon = require('./Addon');\n\nmodule.exports = Addon;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { AddonDetailsModal, Button, Image, Multiselect, MainNavBars, TextInput, SearchBar, SharePrompt, ModalDialog, useBinaryState, withCoreSuspender } = require('stremio/common');\nconst Addon = require('./Addon');\nconst useInstalledAddons = require('./useInstalledAddons');\nconst useRemoteAddons = require('./useRemoteAddons');\nconst useAddonDetailsTransportUrl = require('./useAddonDetailsTransportUrl');\nconst useSelectableInputs = require('./useSelectableInputs');\nconst styles = require('./styles');\n\nconst Addons = ({ urlParams, queryParams }) => {\n const { t } = useTranslation();\n const installedAddons = useInstalledAddons(urlParams);\n const remoteAddons = useRemoteAddons(urlParams);\n const [addonDetailsTransportUrl, setAddonDetailsTransportUrl] = useAddonDetailsTransportUrl(urlParams, queryParams);\n const selectInputs = useSelectableInputs(installedAddons, remoteAddons);\n const [filtersModalOpen, openFiltersModal, closeFiltersModal] = useBinaryState(false);\n const [addAddonModalOpen, openAddAddonModal, closeAddAddonModal] = useBinaryState(false);\n const addAddonUrlInputRef = React.useRef(null);\n const addAddonOnSubmit = React.useCallback(() => {\n if (addAddonUrlInputRef.current !== null) {\n setAddonDetailsTransportUrl(addAddonUrlInputRef.current.value);\n }\n }, [setAddonDetailsTransportUrl]);\n const addAddonModalButtons = React.useMemo(() => {\n return [\n {\n className: styles['cancel-button'],\n label: t('BUTTON_CANCEL'),\n props: {\n onClick: closeAddAddonModal\n }\n },\n {\n label: t('ADDON_ADD'),\n props: {\n onClick: addAddonOnSubmit\n }\n }\n ];\n }, [addAddonOnSubmit]);\n const [search, setSearch] = React.useState('');\n const searchInputOnChange = React.useCallback((event) => {\n setSearch(event.currentTarget.value);\n }, []);\n const [sharedAddon, setSharedAddon] = React.useState(null);\n const clearSharedAddon = React.useCallback(() => {\n setSharedAddon(null);\n }, []);\n const onAddonShare = React.useCallback((event) => {\n setSharedAddon(event.dataset.addon);\n }, []);\n const onAddonToggle = React.useCallback((event) => {\n setAddonDetailsTransportUrl(event.dataset.addon.transportUrl);\n }, [setAddonDetailsTransportUrl]);\n const onAddonConfigure = React.useCallback((event) => {\n window.open(event.dataset.addon.transportUrl.replace('manifest.json', 'configure'));\n }, []);\n const closeAddonDetails = React.useCallback(() => {\n setAddonDetailsTransportUrl(null);\n }, [setAddonDetailsTransportUrl]);\n const searchFilterPredicate = React.useCallback((addon) => {\n return search.length === 0 ||\n (\n (typeof addon.manifest.name === 'string' && addon.manifest.name.toLowerCase().includes(search.toLowerCase())) ||\n (typeof addon.manifest.description === 'string' && addon.manifest.description.toLowerCase().includes(search.toLowerCase()))\n );\n }, [search]);\n const renderLogoFallback = React.useCallback(() => (\n \n ), []);\n React.useLayoutEffect(() => {\n closeAddAddonModal();\n setSearch('');\n clearSharedAddon();\n }, [urlParams, queryParams]);\n return (\n \n
    \n
    \n \n {selectInputs.map((selectInput, index) => (\n \n ))}\n
    \n \n \n
    \n {\n installedAddons.selected !== null ?\n installedAddons.selectable.types.length === 0 ?\n
    \n No addons ware installed!\n
    \n :\n installedAddons.catalog.length === 0 ?\n
    \n No addons ware installed for that type!\n
    \n :\n
    \n {\n installedAddons.catalog\n .filter(searchFilterPredicate)\n .map((addon, index) => (\n \n ))\n }\n
    \n :\n remoteAddons.selected !== null ?\n remoteAddons.catalog.content.type === 'Err' ?\n
    \n {remoteAddons.catalog.content.content}\n
    \n :\n remoteAddons.catalog.content.type === 'Loading' ?\n
    \n Loading!\n
    \n :\n
    \n {\n remoteAddons.catalog.content.content\n .filter(searchFilterPredicate)\n .map((addon, index) => (\n \n ))\n }\n
    \n :\n
    \n No select\n
    \n }\n
    \n {\n filtersModalOpen ?\n \n {selectInputs.map((selectInput, index) => (\n \n ))}\n \n :\n null\n }\n {\n addAddonModalOpen ?\n \n
    { t('ADD_ADDON_DESCRIPTION') }
    \n \n \n :\n null\n }\n {\n sharedAddon !== null ?\n \n
    \n \n
    \n {typeof sharedAddon.manifest.name === 'string' && sharedAddon.manifest.name.length > 0 ? sharedAddon.manifest.name : sharedAddon.manifest.id}\n {\n typeof sharedAddon.manifest.version === 'string' && sharedAddon.manifest.version.length > 0 ?\n v. {sharedAddon.manifest.version}\n :\n null\n }\n
    \n
    \n \n \n :\n null\n }\n {\n typeof addonDetailsTransportUrl === 'string' ?\n \n :\n null\n }\n \n );\n};\n\nAddons.propTypes = {\n urlParams: PropTypes.shape({\n path: PropTypes.string,\n transportUrl: PropTypes.string,\n catalogId: PropTypes.string,\n type: PropTypes.string\n }),\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nconst AddonsFallback = () => (\n \n);\n\nmodule.exports = withCoreSuspender(Addons, AddonsFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Addons = require('./Addons');\n\nmodule.exports = Addons;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useAddonDetailsTransportUrl = (urlParams, queryParams) => {\n const transportUrl = React.useMemo(() => {\n return queryParams.get('addon');\n }, [queryParams]);\n const setTransportUrl = React.useCallback((transportUrl) => {\n const nextQueryParams = new URLSearchParams(queryParams);\n if (typeof transportUrl === 'string') {\n nextQueryParams.set('addon', transportUrl);\n } else {\n nextQueryParams.delete('addon');\n }\n\n window.location.replace(`#${urlParams.path}?${nextQueryParams}`);\n }, [urlParams, queryParams]);\n return [transportUrl, setTransportUrl];\n};\n\nmodule.exports = useAddonDetailsTransportUrl;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useModelState } = require('stremio/common');\n\nconst useInstalledAddons = (urlParams) => {\n const action = React.useMemo(() => {\n if (typeof urlParams.transportUrl !== 'string' && typeof urlParams.catalogId !== 'string') {\n return {\n action: 'Load',\n args: {\n model: 'InstalledAddonsWithFilters',\n args: {\n request: {\n type: typeof urlParams.type === 'string' ? urlParams.type : null\n }\n }\n }\n };\n } else {\n return {\n action: 'Unload'\n };\n }\n }, [urlParams]);\n return useModelState({ model: 'installed_addons', action });\n};\n\nmodule.exports = useInstalledAddons;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useModelState } = require('stremio/common');\n\nconst useRemoteAddons = (urlParams) => {\n const action = React.useMemo(() => {\n if (typeof urlParams.type === 'string' && typeof urlParams.transportUrl === 'string' && typeof urlParams.catalogId === 'string') {\n return {\n action: 'Load',\n args: {\n model: 'CatalogWithFilters',\n args: {\n request: {\n base: urlParams.transportUrl,\n path: {\n resource: 'addon_catalog',\n type: urlParams.type,\n id: urlParams.catalogId,\n extra: []\n }\n }\n }\n }\n };\n } else {\n return {\n action: 'Unload'\n };\n }\n }, [urlParams]);\n return useModelState({ model: 'remote_addons', action, deps: ['ctx'] });\n};\n\nmodule.exports = useRemoteAddons;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { t } = require('i18next');\nconst { translateOption } = require('stremio/common');\n\nconst mapSelectableInputs = (installedAddons, remoteAddons) => {\n const catalogSelect = {\n title: t('SELECT_CATALOG'),\n options: remoteAddons.selectable.catalogs\n .concat(installedAddons.selectable.catalogs)\n .map(({ name, deepLinks }) => ({\n value: deepLinks.addons,\n label: translateOption(name, 'ADDON_'),\n title: translateOption(name, 'ADDON_'),\n })),\n selected: remoteAddons.selectable.catalogs\n .concat(installedAddons.selectable.catalogs)\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.addons),\n renderLabelText: remoteAddons.selected !== null ?\n () => {\n const selectableCatalog = remoteAddons.selectable.catalogs\n .find(({ id }) => id === remoteAddons.selected.request.path.id);\n return selectableCatalog ? translateOption(selectableCatalog.name, 'ADDON_') : remoteAddons.selected.request.path.id;\n }\n :\n null,\n onSelect: (event) => {\n window.location = event.value;\n }\n };\n const typeSelect = {\n title: t('SELECT_TYPE'),\n options: installedAddons.selected !== null ?\n installedAddons.selectable.types.map(({ type, deepLinks }) => ({\n value: deepLinks.addons,\n label: type !== null ? translateOption(type, 'TYPE_') : t('TYPE_ALL')\n }))\n :\n remoteAddons.selectable.types.map(({ type, deepLinks }) => ({\n value: deepLinks.addons,\n label: translateOption(type, 'TYPE_')\n })),\n selected: installedAddons.selected !== null ?\n installedAddons.selectable.types\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.addons)\n :\n remoteAddons.selectable.types\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.addons),\n renderLabelText: () => {\n return installedAddons.selected !== null ?\n installedAddons.selected.request.type === null ?\n t('TYPE_ALL')\n :\n translateOption(installedAddons.selected.request.type, 'TYPE_')\n :\n remoteAddons.selected !== null ?\n translateOption(remoteAddons.selected.request.path.type, 'TYPE_')\n :\n typeSelect.title;\n },\n onSelect: (event) => {\n window.location = event.value;\n }\n };\n return [catalogSelect, typeSelect];\n};\n\nconst useSelectableInputs = (installedAddons, remoteAddons) => {\n const selectableInputs = React.useMemo(() => {\n return mapSelectableInputs(installedAddons, remoteAddons);\n }, [installedAddons, remoteAddons]);\n return selectableInputs;\n};\n\nmodule.exports = useSelectableInputs;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst classnames = require('classnames');\nconst debounce = require('lodash.debounce');\nconst { useTranslation } = require('react-i18next');\nconst { MainNavBars, MetaRow, LibItem, MetaItem, StreamingServerWarning, useStreamingServer, withCoreSuspender, getVisibleChildrenRange } = require('stremio/common');\nconst useBoard = require('./useBoard');\nconst useContinueWatchingPreview = require('./useContinueWatchingPreview');\nconst styles = require('./styles');\n\nconst THRESHOLD = 5;\n\nconst Board = () => {\n const { t } = useTranslation();\n const streamingServer = useStreamingServer();\n const continueWatchingPreview = useContinueWatchingPreview();\n const [board, loadBoardRows] = useBoard();\n const boardCatalogsOffset = continueWatchingPreview.items.length > 0 ? 1 : 0;\n const scrollContainerRef = React.useRef();\n const onVisibleRangeChange = React.useCallback(() => {\n const range = getVisibleChildrenRange(scrollContainerRef.current);\n if (range === null) {\n return;\n }\n\n const start = Math.max(0, range.start - boardCatalogsOffset - THRESHOLD);\n const end = range.end - boardCatalogsOffset + THRESHOLD;\n if (end < start) {\n return;\n }\n\n loadBoardRows({ start, end });\n }, [boardCatalogsOffset]);\n const onScroll = React.useCallback(debounce(onVisibleRangeChange, 250), [onVisibleRangeChange]);\n React.useLayoutEffect(() => {\n onVisibleRangeChange();\n }, [board.catalogs, onVisibleRangeChange]);\n return (\n
    \n \n
    \n {\n continueWatchingPreview.items.length > 0 ?\n \n :\n null\n }\n {board.catalogs.map((catalog, index) => {\n switch (catalog.content?.type) {\n case 'Ready': {\n return (\n \n );\n }\n case 'Err': {\n return (\n \n );\n }\n default: {\n return (\n \n );\n }\n }\n })}\n
    \n
    \n {\n streamingServer.settings !== null && streamingServer.settings.type === 'Err' ?\n \n :\n null\n }\n
    \n );\n};\n\nconst BoardFallback = () => (\n
    \n \n
    \n);\n\nmodule.exports = withCoreSuspender(Board, BoardFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Board = require('./Board');\n\nmodule.exports = Board;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst { useModelState } = require('stremio/common');\n\nconst useBoard = () => {\n const { core } = useServices();\n const action = React.useMemo(() => ({\n action: 'Load',\n args: {\n model: 'CatalogsWithExtra',\n args: { extra: [] }\n }\n }), []);\n const loadRange = React.useCallback((range) => {\n core.transport.dispatch({\n action: 'CatalogsWithExtra',\n args: {\n action: 'LoadRange',\n args: range\n }\n }, 'board');\n }, []);\n const board = useModelState({ model: 'board', timeout: 1500, action });\n return [board, loadRange];\n};\n\nmodule.exports = useBoard;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst { useModelState } = require('stremio/common');\n\nconst useContinueWatchingPreview = () => {\n return useModelState({ model: 'continue_watching_preview' });\n};\n\nmodule.exports = useContinueWatchingPreview;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { useServices } = require('stremio/services');\nconst { AddonDetailsModal, DelayedRenderer, Button, MainNavBars, MetaItem, Image, MetaPreview, Multiselect, ModalDialog, CONSTANTS, useBinaryState, useOnScrollToBottom, withCoreSuspender } = require('stremio/common');\nconst useDiscover = require('./useDiscover');\nconst useSelectableInputs = require('./useSelectableInputs');\nconst styles = require('./styles');\n\nconst SCROLL_TO_BOTTOM_TRESHOLD = 400;\n\nconst Discover = ({ urlParams, queryParams }) => {\n const { core } = useServices();\n const [discover, loadNextPage] = useDiscover(urlParams, queryParams);\n const [selectInputs, hasNextPage] = useSelectableInputs(discover);\n const [inputsModalOpen, openInputsModal, closeInputsModal] = useBinaryState(false);\n const [addonModalOpen, openAddonModal, closeAddonModal] = useBinaryState(false);\n const [selectedMetaItemIndex, setSelectedMetaItemIndex] = React.useState(0);\n const metasContainerRef = React.useRef();\n React.useEffect(() => {\n if (discover.catalog?.content.type === 'Loading') {\n metasContainerRef.current.scrollTop = 0;\n }\n }, [discover.catalog]);\n const selectedMetaItem = React.useMemo(() => {\n return discover.catalog !== null &&\n discover.catalog.content.type === 'Ready' &&\n discover.catalog.content.content[selectedMetaItemIndex] ?\n discover.catalog.content.content[selectedMetaItemIndex]\n :\n null;\n }, [discover.catalog, selectedMetaItemIndex]);\n const addToLibrary = React.useCallback(() => {\n if (selectedMetaItem === null) {\n return;\n }\n\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'AddToLibrary',\n args: selectedMetaItem\n }\n });\n }, [selectedMetaItem]);\n const removeFromLibrary = React.useCallback(() => {\n if (selectedMetaItem === null) {\n return;\n }\n\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'RemoveFromLibrary',\n args: selectedMetaItem.id\n }\n });\n }, [selectedMetaItem]);\n const metaItemsOnFocusCapture = React.useCallback((event) => {\n if (event.target.dataset.index !== null && !isNaN(event.target.dataset.index)) {\n setSelectedMetaItemIndex(parseInt(event.target.dataset.index, 10));\n }\n }, []);\n const metaItemOnClick = React.useCallback((event) => {\n if (event.currentTarget.dataset.index !== selectedMetaItemIndex.toString()) {\n event.preventDefault();\n event.currentTarget.focus();\n }\n }, [selectedMetaItemIndex]);\n const onScrollToBottom = React.useCallback(() => {\n if (hasNextPage) {\n loadNextPage();\n }\n }, [hasNextPage, loadNextPage]);\n const onScroll = useOnScrollToBottom(onScrollToBottom, SCROLL_TO_BOTTOM_TRESHOLD);\n React.useEffect(() => {\n closeInputsModal();\n closeAddonModal();\n setSelectedMetaItemIndex(0);\n }, [discover.selected]);\n return (\n \n
    \n
    \n
    \n {selectInputs.map(({ title, options, selected, renderLabelText, onSelect }, index) => (\n \n ))}\n \n
    \n {\n discover.catalog !== null && !discover.catalog.installed ?\n
    \n
    Addon is not installed. Install now?
    \n \n
    \n :\n null\n }\n {\n discover.catalog === null ?\n \n
    \n {'\n
    No catalog selected!
    \n
    \n
    \n :\n discover.catalog.content.type === 'Err' ?\n
    \n {'\n
    {discover.catalog.content.content}
    \n
    \n :\n discover.catalog.content.type === 'Loading' ?\n
    \n {Array(CONSTANTS.CATALOG_PAGE_SIZE).fill(null).map((_, index) => (\n
    \n
    \n
    \n
    \n
    \n
    \n ))}\n
    \n :\n
    \n {discover.catalog.content.content.map((metaItem, index) => (\n \n ))}\n
    \n }\n
    \n {\n selectedMetaItem !== null ?\n \n :\n discover.catalog !== null && discover.catalog.content.type === 'Loading' ?\n
    \n :\n null\n }\n
    \n {\n inputsModalOpen ?\n \n {selectInputs.map(({ title, options, selected, renderLabelText, onSelect }, index) => (\n \n ))}\n \n :\n null\n }\n {\n addonModalOpen && discover.selected !== null ?\n \n :\n null\n }\n \n );\n};\n\nDiscover.propTypes = {\n urlParams: PropTypes.shape({\n transportUrl: PropTypes.string,\n type: PropTypes.string,\n catalogId: PropTypes.string\n }),\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nconst DiscoverFallback = () => (\n \n);\n\nmodule.exports = withCoreSuspender(Discover, DiscoverFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Discover = require('./Discover');\n\nmodule.exports = Discover;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst UrlUtils = require('url');\nconst { useServices } = require('stremio/services');\nconst { useModelState } = require('stremio/common');\n\nconst map = (discover) => ({\n ...discover,\n catalog: discover.catalog !== null && discover.catalog.content.type === 'Ready' ?\n {\n ...discover.catalog,\n content: {\n ...discover.catalog.content,\n content: discover.catalog.content.content.map((metaItem) => ({\n ...metaItem,\n released: new Date(typeof metaItem.released === 'string' ? metaItem.released : NaN),\n }))\n }\n }\n :\n discover.catalog\n});\n\nconst useDiscover = (urlParams, queryParams) => {\n const { core } = useServices();\n const loadNextPage = React.useCallback(() => {\n core.transport.dispatch({\n action: 'CatalogWithFilters',\n args: {\n action: 'LoadNextPage'\n }\n }, 'discover');\n }, []);\n const action = React.useMemo(() => {\n if (typeof urlParams.transportUrl === 'string' && typeof urlParams.type === 'string' && typeof urlParams.catalogId === 'string') {\n const { hostname } = UrlUtils.parse(urlParams.transportUrl);\n if (typeof hostname === 'string' && hostname.length > 0) {\n return {\n action: 'Load',\n args: {\n model: 'CatalogWithFilters',\n args: {\n request: {\n base: urlParams.transportUrl,\n path: {\n resource: 'catalog',\n type: urlParams.type,\n id: urlParams.catalogId,\n extra: Array.from(queryParams.entries())\n }\n }\n }\n }\n };\n }\n } else {\n return {\n action: 'Load',\n args: {\n model: 'CatalogWithFilters',\n args: null\n }\n };\n }\n\n return {\n action: 'Unload'\n };\n }, [urlParams, queryParams]);\n const discover = useModelState({ model: 'discover', action, map, deps: ['ctx'] });\n return [discover, loadNextPage];\n};\n\nmodule.exports = useDiscover;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useTranslation } = require('react-i18next');\nconst { translateOption } = require('stremio/common');\n\nconst mapSelectableInputs = (discover, t) => {\n const typeSelect = {\n title: t('SELECT_TYPE'),\n options: discover.selectable.types\n .map(({ type, deepLinks }) => ({\n value: deepLinks.discover,\n label: translateOption(type, 'TYPE_')\n })),\n selected: discover.selectable.types\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.discover),\n renderLabelText: discover.selected !== null ?\n () => translateOption(discover.selected.request.path.type, 'TYPE_')\n :\n null,\n onSelect: (event) => {\n window.location = event.value;\n }\n };\n const catalogSelect = {\n title: t('SELECT_CATALOG'),\n options: discover.selectable.catalogs\n .map(({ name, addon, deepLinks }) => ({\n value: deepLinks.discover,\n label: name,\n title: `${name} (${addon.manifest.name})`\n })),\n selected: discover.selectable.catalogs\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.discover),\n renderLabelText: discover.selected !== null ?\n () => {\n const selectableCatalog = discover.selectable.catalogs\n .find(({ id }) => id === discover.selected.request.path.id);\n return selectableCatalog ? selectableCatalog.name : discover.selected.request.path.id;\n }\n :\n null,\n onSelect: (event) => {\n window.location = event.value;\n }\n };\n const extraSelects = discover.selectable.extra.map(({ name, isRequired, options }) => ({\n title: translateOption(name, 'SELECT_'),\n isRequired: isRequired,\n options: options.map(({ value, deepLinks }) => ({\n label: typeof value === 'string' ? translateOption(value) : t('NONE'),\n value: JSON.stringify({\n href: deepLinks.discover,\n value\n })\n })),\n selected: options\n .filter(({ selected }) => selected)\n .map(({ value, deepLinks }) => JSON.stringify({\n href: deepLinks.discover,\n value\n })),\n renderLabelText: options.some(({ selected, value }) => selected && value === null) ?\n () => translateOption(name, 'SELECT_')\n :\n null,\n onSelect: (event) => {\n const { href } = JSON.parse(event.value);\n window.location = href;\n }\n }));\n return [[typeSelect, catalogSelect, ...extraSelects], discover.selectable.nextPage];\n};\n\nconst useSelectableInputs = (discover) => {\n const { t } = useTranslation();\n const selectableInputs = React.useMemo(() => {\n return mapSelectableInputs(discover, t);\n }, [discover.selected, discover.selectable]);\n return selectableInputs;\n};\n\nmodule.exports = useSelectableInputs;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { Button, Checkbox } = require('stremio/common');\nconst styles = require('./styles');\n\nconst ConsentCheckbox = React.forwardRef(({ className, label, link, href, onToggle, ...props }, ref) => {\n const checkboxOnClick = React.useCallback((event) => {\n if (typeof props.onClick === 'function') {\n props.onClick(event);\n }\n\n if (!event.nativeEvent.togglePrevented && typeof onToggle === 'function') {\n onToggle({\n type: 'toggle',\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [onToggle, props.onClick]);\n const linkOnClick = React.useCallback((event) => {\n event.nativeEvent.togglePrevented = true;\n }, []);\n return (\n \n
    \n {label}\n {' '}\n {\n typeof link === 'string' && link.length > 0 && typeof href === 'string' && href.length > 0 ?\n \n :\n null\n }\n
    \n
    \n );\n});\n\nConsentCheckbox.displayName = 'ConsentCheckbox';\n\nConsentCheckbox.propTypes = {\n className: PropTypes.string,\n checked: PropTypes.bool,\n label: PropTypes.string,\n link: PropTypes.string,\n href: PropTypes.string,\n onToggle: PropTypes.func,\n onClick: PropTypes.func\n};\n\nmodule.exports = ConsentCheckbox;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ConsentCheckbox = require('./ConsentCheckbox');\n\nmodule.exports = ConsentCheckbox;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst { TextInput } = require('stremio/common');\n\nconst CredentialsTextInput = React.forwardRef((props, ref) => {\n const onKeyDown = React.useCallback((event) => {\n if (typeof props.onKeyDown === 'function') {\n props.onKeyDown(event);\n }\n\n if (!event.nativeEvent.navigationPrevented) {\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n event.nativeEvent.spatialNavigationPrevented = true;\n }\n\n if (!event.shiftKey) {\n if (event.key === 'ArrowDown') {\n window.navigate('down');\n } else if (event.key === 'ArrowUp') {\n window.navigate('up');\n }\n }\n }\n }, [props.onKeyDown]);\n return (\n \n );\n});\n\nCredentialsTextInput.displayName = 'CredentialsTextInput';\n\nCredentialsTextInput.propTypes = {\n onKeyDown: PropTypes.func\n};\n\nmodule.exports = CredentialsTextInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst CredentialsTextInput = require('./CredentialsTextInput');\n\nmodule.exports = CredentialsTextInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Modal, useRouteFocused } = require('stremio-router');\nconst { useServices } = require('stremio/services');\nconst { Button, Image, useBinaryState } = require('stremio/common');\nconst CredentialsTextInput = require('./CredentialsTextInput');\nconst ConsentCheckbox = require('./ConsentCheckbox');\nconst PasswordResetModal = require('./PasswordResetModal');\nconst useFacebookToken = require('./useFacebookToken');\nconst styles = require('./styles');\n\nconst SIGNUP_FORM = 'signup';\nconst LOGIN_FORM = 'login';\n\nconst Intro = ({ queryParams }) => {\n const { core } = useServices();\n const routeFocused = useRouteFocused();\n const getFacebookToken = useFacebookToken();\n const emailRef = React.useRef(null);\n const passwordRef = React.useRef(null);\n const confirmPasswordRef = React.useRef(null);\n const termsRef = React.useRef(null);\n const privacyPolicyRef = React.useRef(null);\n const marketingRef = React.useRef(null);\n const errorRef = React.useRef(null);\n const [passwordRestModalOpen, openPasswordRestModal, closePasswordResetModal] = useBinaryState(false);\n const [loaderModalOpen, openLoaderModal, closeLoaderModal] = useBinaryState(false);\n const [state, dispatch] = React.useReducer(\n (state, action) => {\n switch (action.type) {\n case 'set-form':\n if (state.form !== action.form) {\n return {\n form: action.form,\n email: '',\n password: '',\n confirmPassword: '',\n termsAccepted: false,\n privacyPolicyAccepted: false,\n marketingAccepted: false,\n error: ''\n };\n }\n return state;\n case 'change-credentials':\n return {\n ...state,\n error: '',\n [action.name]: action.value\n };\n case 'toggle-checkbox':\n return {\n ...state,\n error: '',\n [action.name]: !state[action.name]\n };\n case 'error':\n return {\n ...state,\n error: action.error\n };\n default:\n return state;\n }\n },\n {\n form: [LOGIN_FORM, SIGNUP_FORM].includes(queryParams.get('form')) ? queryParams.get('form') : SIGNUP_FORM,\n email: '',\n password: '',\n confirmPassword: '',\n termsAccepted: false,\n privacyPolicyAccepted: false,\n marketingAccepted: false,\n error: ''\n }\n );\n const loginWithFacebook = React.useCallback(() => {\n openLoaderModal();\n getFacebookToken()\n .then((accessToken) => {\n return fetch('https://www.strem.io/fb-login-with-token/' + encodeURIComponent(accessToken))\n .then((resp) => resp.json())\n .catch(() => {\n throw new Error('Login failed at getting token from Stremio');\n })\n .then(({ user } = {}) => {\n if (!user || typeof user.email !== 'string' || typeof user.fbLoginToken !== 'string') {\n throw new Error('Login failed at getting token from Stremio');\n }\n\n return {\n email: user.email,\n password: user.fbLoginToken\n };\n });\n })\n .then(({ email, password }) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'Authenticate',\n args: {\n type: 'Login',\n email,\n password,\n facebook: true\n }\n }\n });\n })\n .catch((error) => {\n closeLoaderModal();\n dispatch({ type: 'error', error: error.message });\n });\n }, []);\n const loginWithEmail = React.useCallback(() => {\n if (typeof state.email !== 'string' || state.email.length === 0 || !emailRef.current.validity.valid) {\n dispatch({ type: 'error', error: 'Invalid email' });\n return;\n }\n if (typeof state.password !== 'string' || state.password.length === 0) {\n dispatch({ type: 'error', error: 'Invalid password' });\n return;\n }\n openLoaderModal();\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'Authenticate',\n args: {\n type: 'Login',\n email: state.email,\n password: state.password\n }\n }\n });\n }, [state.email, state.password]);\n const loginAsGuest = React.useCallback(() => {\n if (!state.termsAccepted) {\n dispatch({ type: 'error', error: 'You must accept the Terms of Service' });\n return;\n }\n window.location = '#/';\n }, [state.termsAccepted]);\n const signup = React.useCallback(() => {\n if (typeof state.email !== 'string' || state.email.length === 0 || !emailRef.current.validity.valid) {\n dispatch({ type: 'error', error: 'Invalid email' });\n return;\n }\n if (typeof state.password !== 'string' || state.password.length === 0) {\n dispatch({ type: 'error', error: 'Invalid password' });\n return;\n }\n if (state.password !== state.confirmPassword) {\n dispatch({ type: 'error', error: 'Passwords do not match' });\n return;\n }\n if (!state.termsAccepted) {\n dispatch({ type: 'error', error: 'You must accept the Terms of Service' });\n return;\n }\n if (!state.privacyPolicyAccepted) {\n dispatch({ type: 'error', error: 'You must accept the Privacy Policy' });\n return;\n }\n openLoaderModal();\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'Authenticate',\n args: {\n type: 'Register',\n email: state.email,\n password: state.password,\n gdpr_consent: {\n tos: state.termsAccepted,\n privacy: state.privacyPolicyAccepted,\n marketing: state.marketingAccepted,\n from: 'web'\n }\n }\n }\n });\n }, [state.email, state.password, state.confirmPassword, state.termsAccepted, state.privacyPolicyAccepted, state.marketingAccepted]);\n const emailOnChange = React.useCallback((event) => {\n dispatch({\n type: 'change-credentials',\n name: 'email',\n value: event.currentTarget.value\n });\n }, []);\n const emailOnSubmit = React.useCallback(() => {\n passwordRef.current.focus();\n }, []);\n const passwordOnChange = React.useCallback((event) => {\n dispatch({\n type: 'change-credentials',\n name: 'password',\n value: event.currentTarget.value\n });\n }, []);\n const passwordOnSubmit = React.useCallback(() => {\n if (state.form === SIGNUP_FORM) {\n confirmPasswordRef.current.focus();\n } else {\n loginWithEmail();\n }\n }, [state.form, loginWithEmail]);\n const confirmPasswordOnChange = React.useCallback((event) => {\n dispatch({\n type: 'change-credentials',\n name: 'confirmPassword',\n value: event.currentTarget.value\n });\n }, []);\n const confirmPasswordOnSubmit = React.useCallback(() => {\n termsRef.current.focus();\n }, []);\n const toggleTermsAccepted = React.useCallback(() => {\n dispatch({ type: 'toggle-checkbox', name: 'termsAccepted' });\n }, []);\n const togglePrivacyPolicyAccepted = React.useCallback(() => {\n dispatch({ type: 'toggle-checkbox', name: 'privacyPolicyAccepted' });\n }, []);\n const toggleMarketingAccepted = React.useCallback(() => {\n dispatch({ type: 'toggle-checkbox', name: 'marketingAccepted' });\n }, []);\n const switchFormOnClick = React.useCallback(() => {\n const queryParams = new URLSearchParams([['form', state.form === SIGNUP_FORM ? LOGIN_FORM : SIGNUP_FORM]]);\n window.location = `#/intro?${queryParams.toString()}`;\n }, [state.form]);\n React.useEffect(() => {\n if ([LOGIN_FORM, SIGNUP_FORM].includes(queryParams.get('form'))) {\n dispatch({ type: 'set-form', form: queryParams.get('form') });\n }\n }, [queryParams]);\n React.useEffect(() => {\n if (routeFocused && typeof state.error === 'string' && state.error.length > 0) {\n errorRef.current.scrollIntoView();\n }\n }, [state.error]);\n React.useEffect(() => {\n if (routeFocused) {\n emailRef.current.focus();\n }\n }, [state.form, routeFocused]);\n React.useEffect(() => {\n const onCoreEvent = ({ event, args }) => {\n switch (event) {\n case 'UserAuthenticated': {\n closeLoaderModal();\n if (routeFocused) {\n window.location = '#/';\n }\n break;\n }\n case 'Error': {\n if (args.source.event === 'UserAuthenticated') {\n closeLoaderModal();\n }\n\n break;\n }\n }\n };\n core.transport.on('CoreEvent', onCoreEvent);\n return () => {\n core.transport.off('CoreEvent', onCoreEvent);\n };\n }, [routeFocused]);\n return (\n
    \n
    \n
    \n {'\n \n
    \n \n {\n state.form === SIGNUP_FORM ?\n \n :\n null\n }\n \n \n {\n state.form === SIGNUP_FORM ?\n \n \n \n \n \n \n :\n
    \n \n
    \n }\n {\n state.error.length > 0 ?\n
    {state.error}
    \n :\n null\n }\n \n {\n state.form === SIGNUP_FORM ?\n \n :\n null\n }\n {\n state.form === LOGIN_FORM ?\n \n :\n null\n }\n
    \n {\n passwordRestModalOpen ?\n \n :\n null\n }\n {\n loaderModalOpen ?\n \n
    \n \n
    Authenticating...
    \n
    \n
    \n :\n null\n }\n
    \n );\n};\n\nIntro.propTypes = {\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nmodule.exports = Intro;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst { useRouteFocused } = require('stremio-router');\nconst { ModalDialog } = require('stremio/common');\nconst CredentialsTextInput = require('../CredentialsTextInput');\nconst styles = require('./styles');\n\nconst PasswordResetModal = ({ email, onCloseRequest }) => {\n const routeFocused = useRouteFocused();\n const [error, setError] = React.useState('');\n const emailRef = React.useRef(null);\n const goToPasswordReset = React.useCallback(() => {\n emailRef.current.value.length > 0 && emailRef.current.validity.valid ?\n window.open('https://www.strem.io/reset-password/' + emailRef.current.value, '_blank')\n :\n setError('Invalid email');\n }, []);\n const passwordResetModalButtons = React.useMemo(() => {\n return [\n {\n className: styles['cancel-button'],\n label: 'Cancel',\n props: {\n onClick: onCloseRequest\n }\n },\n {\n label: 'Send',\n props: {\n onClick: goToPasswordReset\n }\n }\n ];\n }, [onCloseRequest]);\n const emailOnChange = React.useCallback(() => {\n setError('');\n }, []);\n React.useEffect(() => {\n if (routeFocused) {\n emailRef.current.focus();\n }\n }, [routeFocused]);\n return (\n \n \n {\n error.length > 0 ?\n
    {error}
    \n :\n null\n }\n
    \n );\n};\n\nPasswordResetModal.propTypes = {\n email: PropTypes.string,\n onCloseRequest: PropTypes.func\n};\n\nmodule.exports = PasswordResetModal;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst PasswordResetModal = require('./PasswordResetModal');\n\nmodule.exports = PasswordResetModal;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Intro = require('./Intro');\n\nmodule.exports = Intro;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useFacebookToken = () => {\n const getToken = React.useCallback(() => {\n return new Promise((resolve, reject) => {\n if (typeof FB === 'undefined') {\n reject(new Error('Failed to connect to Facebook'));\n return;\n }\n\n FB.getLoginStatus((resp) => {\n if (resp && resp.authResponse && typeof resp.authResponse.accessToken === 'string') {\n resolve(resp.authResponse.accessToken);\n return;\n }\n\n FB.login((resp) => {\n if (!resp || !resp.authResponse || typeof resp.authResponse.accessToken !== 'string') {\n reject(new Error('Failed to get token from Facebook'));\n return;\n }\n\n resolve(resp.authResponse.accessToken);\n });\n });\n });\n }, []);\n React.useEffect(() => {\n window.fbAsyncInit = function() {\n FB.init({\n appId: '1537119779906825',\n status: true,\n xfbml: false,\n version: 'v2.7'\n });\n };\n const sdkScriptElement = document.createElement('script');\n sdkScriptElement.src = 'https://connect.facebook.net/en_US/sdk.js';\n sdkScriptElement.async = true;\n sdkScriptElement.defer = true;\n document.body.appendChild(sdkScriptElement);\n return () => {\n document.body.removeChild(sdkScriptElement);\n };\n }, []);\n return getToken;\n};\n\nmodule.exports = useFacebookToken;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst NotFound = require('stremio/routes/NotFound');\nconst { Button, DelayedRenderer, Multiselect, MainNavBars, LibItem, Image, ModalDialog, PaginationInput, useProfile, routesRegexp, useBinaryState, withCoreSuspender } = require('stremio/common');\nconst useLibrary = require('./useLibrary');\nconst useSelectableInputs = require('./useSelectableInputs');\nconst styles = require('./styles');\n\nfunction withModel(Library) {\n const withModel = ({ urlParams, queryParams }) => {\n const model = React.useMemo(() => {\n return typeof urlParams.path === 'string' ?\n urlParams.path.match(routesRegexp.library.regexp) ?\n 'library'\n :\n urlParams.path.match(routesRegexp.continuewatching.regexp) ?\n 'continue_watching'\n :\n null\n :\n null;\n }, [urlParams.path]);\n if (model === null) {\n return (\n \n );\n }\n\n return (\n \n );\n };\n withModel.displayName = 'withModel';\n return withModel;\n}\n\nconst Library = ({ model, urlParams, queryParams }) => {\n const profile = useProfile();\n const library = useLibrary(model, urlParams, queryParams);\n const [typeSelect, sortSelect, paginationInput] = useSelectableInputs(library);\n const [inputsModalOpen, openInputsModal, closeInputsModal] = useBinaryState(false);\n return (\n \n
    \n {\n model === 'continue_watching' || profile.auth !== null ?\n
    \n \n \n
    \n {\n paginationInput !== null ?\n \n :\n \n }\n \n
    \n :\n null\n }\n {\n model === 'library' && profile.auth === null ?\n
    \n \n \n
    Library is only available for logged in users!
    \n
    \n :\n library.selected === null ?\n \n
    \n \n
    {model === 'library' ? 'Library' : 'Continue Watching'} not loaded!
    \n
    \n
    \n :\n library.catalog.length === 0 ?\n
    \n \n
    Empty {model === 'library' ? 'Library' : 'Continue Watching'}
    \n
    \n :\n
    \n {library.catalog.map((libItem, index) => (\n \n ))}\n
    \n }\n
    \n {\n inputsModalOpen ?\n \n \n \n \n :\n null\n }\n \n );\n};\n\nLibrary.propTypes = {\n model: PropTypes.oneOf(['library', 'continue_watching']),\n urlParams: PropTypes.shape({\n type: PropTypes.string\n }),\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nconst LibraryFallback = ({ model }) => (\n \n);\n\nLibraryFallback.propTypes = Library.propTypes;\n\nmodule.exports = withModel(withCoreSuspender(Library, LibraryFallback));\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Library = require('./Library');\n\nmodule.exports = Library;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useModelState } = require('stremio/common');\n\nconst useLibrary = (model, urlParams, queryParams) => {\n const action = React.useMemo(() => ({\n action: 'Load',\n args: {\n model: 'LibraryWithFilters',\n args: {\n request: {\n type: typeof urlParams.type === 'string' ? urlParams.type : null,\n sort: queryParams.has('sort') ? queryParams.get('sort') : undefined,\n page: queryParams.has('page') ? parseInt(queryParams.get('page'), 10) : undefined\n }\n }\n }\n }), [urlParams, queryParams]);\n return useModelState({ model, action });\n};\n\nmodule.exports = useLibrary;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useTranslation } = require('react-i18next');\nconst { translateOption } = require('stremio/common');\n\nconst mapSelectableInputs = (library, t) => {\n const typeSelect = {\n title: t('SELECT_TYPE'),\n options: library.selectable.types\n .map(({ type, deepLinks }) => ({\n value: deepLinks.library,\n label: type === null ? t('TYPE_ALL') : translateOption(type, 'TYPE_')\n })),\n selected: library.selectable.types\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.library),\n onSelect: (event) => {\n window.location = event.value;\n }\n };\n const sortSelect = {\n title: t('SELECT_SORT'),\n options: library.selectable.sorts\n .map(({ sort, deepLinks }) => ({\n value: deepLinks.library,\n label: translateOption(sort, 'SORT_')\n })),\n selected: library.selectable.sorts\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.library),\n onSelect: (event) => {\n window.location = event.value;\n }\n };\n const paginationInput = library.selectable.prevPage || library.selectable.nextPage ?\n {\n label: library.selected.request.page.toString(),\n onSelect: (event) => {\n if (event.value === 'prev' && library.selectable.prevPage) {\n window.location = library.selectable.prevPage.deepLinks.library;\n }\n if (event.value === 'next' && library.selectable.nextPage) {\n window.location = library.selectable.nextPage.deepLinks.library;\n }\n }\n }\n :\n null;\n return [typeSelect, sortSelect, paginationInput];\n};\n\nconst useSelectableInputs = (library) => {\n const { t } = useTranslation();\n const selectableInputs = React.useMemo(() => {\n return mapSelectableInputs(library, t);\n }, [library]);\n return selectableInputs;\n};\n\nmodule.exports = useSelectableInputs;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useServices } = require('stremio/services');\nconst { VerticalNavBar, HorizontalNavBar, MetaPreview, ModalDialog, Image, DelayedRenderer, withCoreSuspender } = require('stremio/common');\nconst StreamsList = require('./StreamsList');\nconst VideosList = require('./VideosList');\nconst useMetaDetails = require('./useMetaDetails');\nconst useSeason = require('./useSeason');\nconst useMetaExtensionTabs = require('./useMetaExtensionTabs');\nconst styles = require('./styles');\n\nconst MetaDetails = ({ urlParams, queryParams }) => {\n const { core } = useServices();\n const metaDetails = useMetaDetails(urlParams);\n const [season, setSeason] = useSeason(urlParams, queryParams);\n const [tabs, metaExtension, clearMetaExtension] = useMetaExtensionTabs(metaDetails.metaExtensions);\n const [metaPath, streamPath] = React.useMemo(() => {\n return metaDetails.selected !== null ?\n [metaDetails.selected.metaPath, metaDetails.selected.streamPath]\n :\n [null, null];\n }, [metaDetails.selected]);\n const video = React.useMemo(() => {\n return streamPath !== null && metaDetails.metaItem !== null && metaDetails.metaItem.content.type === 'Ready' ?\n metaDetails.metaItem.content.content.videos.reduce((result, video) => {\n if (video.id === streamPath.id) {\n return video;\n }\n\n return result;\n }, null)\n :\n null;\n }, [metaDetails.metaItem, streamPath]);\n const addToLibrary = React.useCallback(() => {\n if (metaDetails.metaItem === null || metaDetails.metaItem.content.type !== 'Ready') {\n return;\n }\n\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'AddToLibrary',\n args: metaDetails.metaItem.content.content\n }\n });\n }, [metaDetails]);\n const removeFromLibrary = React.useCallback(() => {\n if (metaDetails.metaItem === null || metaDetails.metaItem.content.type !== 'Ready') {\n return;\n }\n\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'RemoveFromLibrary',\n args: metaDetails.metaItem.content.content.id\n }\n });\n }, [metaDetails]);\n const seasonOnSelect = React.useCallback((event) => {\n setSeason(event.value);\n }, [setSeason]);\n const renderBackgroundImageFallback = React.useCallback(() => null, []);\n return (\n
    \n \n
    \n {\n tabs.length > 0 ?\n \n :\n null\n }\n {\n metaPath === null ?\n \n
    \n {'\n
    No meta was selected!
    \n
    \n
    \n :\n metaDetails.metaItem === null ?\n
    \n {'\n
    No addons ware requested for this meta!
    \n
    \n :\n metaDetails.metaItem.content.type === 'Err' ?\n
    \n {'\n
    No metadata was found!
    \n
    \n :\n metaDetails.metaItem.content.type === 'Loading' ?\n \n :\n \n {\n typeof metaDetails.metaItem.content.content.background === 'string' &&\n metaDetails.metaItem.content.content.background.length > 0 ?\n
    \n \n
    \n :\n null\n }\n 0 ?\n video.overview\n :\n metaDetails.metaItem.content.content.description\n }\n links={metaDetails.metaItem.content.content.links}\n trailerStreams={metaDetails.metaItem.content.content.trailerStreams}\n inLibrary={metaDetails.metaItem.content.content.inLibrary}\n toggleInLibrary={metaDetails.metaItem.content.content.inLibrary ? removeFromLibrary : addToLibrary}\n />\n
    \n }\n
    \n {\n streamPath !== null ?\n \n :\n metaPath !== null ?\n \n :\n null\n }\n
    \n {\n metaExtension !== null ?\n \n \n \n :\n null\n }\n
    \n );\n};\n\nMetaDetails.propTypes = {\n urlParams: PropTypes.shape({\n type: PropTypes.string,\n id: PropTypes.string,\n videoId: PropTypes.string\n }),\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nconst MetaDetailsFallback = () => (\n
    \n \n
    \n);\n\nmodule.exports = withCoreSuspender(MetaDetails, MetaDetailsFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button, Image, PlayIconCircleCentered, useProfile, platform, useStreamingServer, useToast } = require('stremio/common');\nconst { useServices } = require('stremio/services');\nconst StreamPlaceholder = require('./StreamPlaceholder');\nconst styles = require('./styles');\n\nconst Stream = ({ className, addonName, name, description, thumbnail, progress, deepLinks, ...props }) => {\n const profile = useProfile();\n const streamingServer = useStreamingServer();\n const { core } = useServices();\n const toast = useToast();\n const href = React.useMemo(() => {\n const haveStreamingServer = streamingServer.settings !== null && streamingServer.settings.type === 'Ready';\n return deepLinks ?\n profile.settings.playerType && profile.settings.playerType !== 'internal' ?\n platform.isMobile() || !haveStreamingServer ?\n (deepLinks.externalPlayer.openPlayer || {})[platform.name] || deepLinks.externalPlayer.href\n : null\n :\n typeof deepLinks.player === 'string' ?\n deepLinks.player\n :\n null\n :\n null;\n }, [deepLinks, profile, streamingServer]);\n const onClick = React.useCallback((e) => {\n if (href === null) {\n // link does not lead to the player, it is expected to\n // open with local video player through the streaming server\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'PlayOnDevice',\n args: {\n device: 'vlc',\n source: deepLinks.externalPlayer.streaming\n }\n }\n });\n } else if (profile.settings.playerType === 'external') {\n toast.show({\n type: 'success',\n title: 'Stream opened in external player',\n timeout: 4000\n });\n }\n props.onClick(e);\n }, [href, deepLinks, props.onClick, profile, toast]);\n const forceDownload = React.useMemo(() => {\n // we only do this in one case to force the download\n // of a M3U playlist generated in the browser\n return href === deepLinks.externalPlayer.href ? deepLinks.externalPlayer.fileName : false;\n }, [href]);\n const renderThumbnailFallback = React.useCallback(() => (\n \n ), []);\n return (\n \n );\n};\n\nStream.Placeholder = StreamPlaceholder;\n\nStream.propTypes = {\n className: PropTypes.string,\n addonName: PropTypes.string,\n name: PropTypes.string,\n description: PropTypes.string,\n thumbnail: PropTypes.string,\n progress: PropTypes.number,\n deepLinks: PropTypes.shape({\n player: PropTypes.string,\n externalPlayer: PropTypes.shape({\n href: PropTypes.string,\n fileName: PropTypes.string,\n streaming: PropTypes.string,\n openPlayer: PropTypes.shape({\n choose: {\n ios: PropTypes.string,\n android: PropTypes.string,\n windows: PropTypes.string,\n macos: PropTypes.string,\n linux: PropTypes.string\n },\n vlc: {\n ios: PropTypes.string,\n android: PropTypes.string,\n windows: PropTypes.string,\n macos: PropTypes.string,\n linux: PropTypes.string\n },\n outplayer: {\n ios: PropTypes.string,\n android: PropTypes.string,\n windows: PropTypes.string,\n macos: PropTypes.string,\n linux: PropTypes.string\n },\n infuse: {\n ios: PropTypes.string,\n android: PropTypes.string,\n windows: PropTypes.string,\n macos: PropTypes.string,\n linux: PropTypes.string\n },\n justplayer: {\n ios: PropTypes.string,\n android: PropTypes.string,\n windows: PropTypes.string,\n macos: PropTypes.string,\n linux: PropTypes.string\n },\n mxplayer: {\n ios: PropTypes.string,\n android: PropTypes.string,\n windows: PropTypes.string,\n macos: PropTypes.string,\n linux: PropTypes.string\n },\n })\n })\n }),\n onClick: PropTypes.func\n};\n\nmodule.exports = Stream;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst PlayIconCircleCentered = require('stremio/common/PlayIconCircleCentered');\nconst styles = require('./styles');\n\nconst StreamPlaceholder = ({ className }) => {\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n );\n};\n\nStreamPlaceholder.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = StreamPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst StreamPlaceholder = require('./StreamPlaceholder');\n\nmodule.exports = StreamPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Stream = require('./Stream');\n\nmodule.exports = Stream;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button, Image, Multiselect } = require('stremio/common');\nconst { useServices } = require('stremio/services');\nconst Stream = require('./Stream');\nconst styles = require('./styles');\n\nconst ALL_ADDONS_KEY = 'ALL';\n\nconst StreamsList = ({ className, ...props }) => {\n const { t } = useTranslation();\n const { core } = useServices();\n const [selectedAddon, setSelectedAddon] = React.useState(ALL_ADDONS_KEY);\n const onAddonSelected = React.useCallback((event) => {\n setSelectedAddon(event.value);\n }, []);\n const streamsByAddon = React.useMemo(() => {\n return props.streams\n .filter((streams) => streams.content.type === 'Ready')\n .reduce((streamsByAddon, streams) => {\n streamsByAddon[streams.addon.transportUrl] = {\n addon: streams.addon,\n streams: streams.content.content.map((stream) => ({\n ...stream,\n onClick: () => {\n core.transport.analytics({\n event: 'StreamClicked',\n args: {\n stream\n }\n });\n },\n addonName: streams.addon.manifest.name\n }))\n };\n\n return streamsByAddon;\n }, {});\n }, [props.streams]);\n const filteredStreams = React.useMemo(() => {\n return selectedAddon === ALL_ADDONS_KEY ?\n Object.values(streamsByAddon).map(({ streams }) => streams).flat(1)\n :\n streamsByAddon[selectedAddon] ?\n streamsByAddon[selectedAddon].streams\n :\n [];\n }, [streamsByAddon, selectedAddon]);\n const selectableOptions = React.useMemo(() => {\n return {\n title: 'Select Addon',\n options: [\n {\n value: ALL_ADDONS_KEY,\n label: t('ALL_ADDONS'),\n title: t('ALL_ADDONS')\n },\n ...Object.keys(streamsByAddon).map((transportUrl) => ({\n value: transportUrl,\n label: streamsByAddon[transportUrl].addon.manifest.name,\n title: streamsByAddon[transportUrl].addon.manifest.name,\n }))\n ],\n selected: [selectedAddon],\n onSelect: onAddonSelected\n };\n }, [streamsByAddon, selectedAddon]);\n return (\n
    \n {\n props.streams.length === 0 ?\n
    \n {'\n
    No addons were requested for streams!
    \n
    \n :\n props.streams.every((streams) => streams.content.type === 'Err') ?\n
    \n {'\n
    {t('NO_STREAM')}
    \n
    \n :\n filteredStreams.length === 0 ?\n
    \n \n \n
    \n :\n \n {\n Object.keys(streamsByAddon).length > 1 ?\n \n :\n null\n }\n
    \n {filteredStreams.map((stream, index) => (\n \n ))}\n
    \n
    \n }\n \n
    \n );\n};\n\nStreamsList.propTypes = {\n className: PropTypes.string,\n streams: PropTypes.arrayOf(PropTypes.object).isRequired\n};\n\nmodule.exports = StreamsList;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst StreamsList = require('./StreamsList');\n\nmodule.exports = StreamsList;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { t } = require('i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button, Multiselect } = require('stremio/common');\nconst SeasonsBarPlaceholder = require('./SeasonsBarPlaceholder');\nconst styles = require('./styles');\n\nconst SeasonsBar = ({ className, seasons, season, onSelect }) => {\n const options = React.useMemo(() => {\n return seasons.map((season) => ({\n value: String(season),\n label: season > 0 ? `${t('SEASON')} ${season}` : t('SPECIAL')\n }));\n }, [seasons]);\n const selected = React.useMemo(() => {\n return [String(season)];\n }, [season]);\n const prevNextButtonOnClick = React.useCallback((event) => {\n if (typeof onSelect === 'function') {\n const seasonIndex = seasons.indexOf(season);\n const valueIndex = event.currentTarget.dataset.action === 'next' ?\n seasonIndex + 1 < seasons.length ? seasonIndex + 1 : seasons.length - 1\n :\n seasonIndex - 1 >= 0 ? seasonIndex - 1 : 0;\n const value = seasons[valueIndex];\n onSelect({\n type: 'select',\n value: value,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [season, seasons, onSelect]);\n const seasonOnSelect = React.useCallback((event) => {\n const value = parseFloat(event.value);\n if (typeof onSelect === 'function') {\n onSelect({\n type: 'select',\n value: value,\n reactEvent: event.reactEvent,\n nativeEvent: event.nativeEvent\n });\n }\n }, [onSelect]);\n return (\n
    \n \n 0 ? `${t('SEASON')} ${season}` : t('SPECIAL')}\n direction={'bottom-left'}\n options={options}\n selected={selected}\n onSelect={seasonOnSelect}\n />\n \n
    \n );\n};\n\nSeasonsBar.Placeholder = SeasonsBarPlaceholder;\n\nSeasonsBar.propTypes = {\n className: PropTypes.string,\n seasons: PropTypes.arrayOf(PropTypes.number).isRequired,\n season: PropTypes.number.isRequired,\n onSelect: PropTypes.func\n};\n\nmodule.exports = SeasonsBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst styles = require('./styles');\n\nconst SeasonsBarPlaceholder = ({ className }) => {\n return (\n
    \n
    \n \n
    Prev
    \n
    \n
    \n
    Season 1
    \n \n
    \n
    \n
    Next
    \n \n
    \n
    \n );\n};\n\nSeasonsBarPlaceholder.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = SeasonsBarPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SeasonsBarPlaceholder = require('./SeasonsBarPlaceholder');\n\nmodule.exports = SeasonsBarPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SeasonsBar = require('./SeasonsBar');\n\nmodule.exports = SeasonsBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { t } = require('i18next');\nconst { useServices } = require('stremio/services');\nconst { useRouteFocused } = require('stremio-router');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button, Image, Popup, useBinaryState } = require('stremio/common');\nconst VideoPlaceholder = require('./VideoPlaceholder');\nconst styles = require('./styles');\n\nconst Video = ({ className, id, title, thumbnail, episode, released, upcoming, watched, progress, scheduled, deepLinks, ...props }) => {\n const { core } = useServices();\n const routeFocused = useRouteFocused();\n const [menuOpen, , closeMenu, toggleMenu] = useBinaryState(false);\n const popupLabelOnMouseUp = React.useCallback((event) => {\n if (!event.nativeEvent.togglePopupPrevented) {\n if (event.nativeEvent.ctrlKey || event.nativeEvent.button === 2) {\n event.preventDefault();\n toggleMenu();\n }\n }\n }, []);\n const popupLabelOnContextMenu = React.useCallback((event) => {\n if (!event.nativeEvent.togglePopupPrevented && !event.nativeEvent.ctrlKey) {\n event.preventDefault();\n }\n }, [toggleMenu]);\n const popupLabelOnLongPress = React.useCallback((event) => {\n if (event.nativeEvent.pointerType !== 'mouse' && !event.nativeEvent.togglePopupPrevented) {\n toggleMenu();\n }\n }, [toggleMenu]);\n const popupMenuOnPointerDown = React.useCallback((event) => {\n event.nativeEvent.togglePopupPrevented = true;\n }, []);\n const popupMenuOnContextMenu = React.useCallback((event) => {\n event.nativeEvent.togglePopupPrevented = true;\n }, []);\n const popupMenuOnClick = React.useCallback((event) => {\n event.nativeEvent.togglePopupPrevented = true;\n }, []);\n const popupMenuOnKeyDown = React.useCallback((event) => {\n event.nativeEvent.buttonClickPrevented = true;\n }, []);\n const toggleWatchedOnClick = React.useCallback((event) => {\n event.preventDefault();\n closeMenu();\n core.transport.dispatch({\n action: 'MetaDetails',\n args: {\n action: 'MarkVideoAsWatched',\n args: [id, !watched]\n }\n });\n }, [id, watched]);\n const href = React.useMemo(() => {\n return deepLinks ?\n typeof deepLinks.player === 'string' ?\n deepLinks.player\n :\n typeof deepLinks.metaDetailsStreams === 'string' ?\n deepLinks.metaDetailsStreams\n :\n null\n :\n null;\n }, [deepLinks]);\n const renderLabel = React.useMemo(() => function renderLabel({ className, id, title, thumbnail, episode, released, upcoming, watched, progress, scheduled, children, ...props }) {\n return (\n \n );\n }, []);\n const renderMenu = React.useMemo(() => function renderMenu() {\n return (\n
    \n \n \n
    \n );\n }, [watched, toggleWatchedOnClick]);\n React.useEffect(() => {\n if (!routeFocused) {\n closeMenu();\n }\n }, [routeFocused]);\n return (\n \n );\n};\n\nVideo.Placeholder = VideoPlaceholder;\n\nVideo.propTypes = {\n className: PropTypes.string,\n id: PropTypes.string,\n title: PropTypes.string,\n thumbnail: PropTypes.string,\n episode: PropTypes.number,\n released: PropTypes.instanceOf(Date),\n upcoming: PropTypes.bool,\n watched: PropTypes.bool,\n progress: PropTypes.number,\n scheduled: PropTypes.bool,\n deepLinks: PropTypes.shape({\n metaDetailsStreams: PropTypes.string,\n player: PropTypes.string\n })\n};\n\nmodule.exports = Video;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst styles = require('./styles');\n\nconst VideoPlaceholder = ({ className }) => {\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n );\n};\n\nVideoPlaceholder.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = VideoPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst VideoPlaceholder = require('./VideoPlaceholder');\n\nmodule.exports = VideoPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Video = require('./Video');\n\nmodule.exports = Video;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { t } = require('i18next');\nconst Image = require('stremio/common/Image');\nconst SearchBar = require('stremio/common/SearchBar');\nconst SeasonsBar = require('./SeasonsBar');\nconst Video = require('./Video');\nconst styles = require('./styles');\n\nconst VideosList = ({ className, metaItem, season, seasonOnSelect }) => {\n const videos = React.useMemo(() => {\n return metaItem && metaItem.content.type === 'Ready' ?\n metaItem.content.content.videos\n :\n [];\n }, [metaItem]);\n const seasons = React.useMemo(() => {\n return videos\n .map(({ season }) => season)\n .filter((season, index, seasons) => {\n return season !== null &&\n !isNaN(season) &&\n typeof season === 'number' &&\n seasons.indexOf(season) === index;\n })\n .sort((a, b) => (a || Number.MAX_SAFE_INTEGER) - (b || Number.MAX_SAFE_INTEGER));\n }, [videos]);\n const selectedSeason = React.useMemo(() => {\n if (seasons.includes(season)) {\n return season;\n }\n\n const nonSpecialSeasons = seasons.filter((season) => season !== 0);\n if (nonSpecialSeasons.length > 0) {\n return nonSpecialSeasons[nonSpecialSeasons.length - 1];\n }\n\n if (seasons.length > 0) {\n return seasons[seasons.length - 1];\n }\n\n return null;\n }, [seasons, season]);\n const videosForSeason = React.useMemo(() => {\n return videos\n .filter((video) => {\n return selectedSeason === null || video.season === selectedSeason;\n })\n .sort((a, b) => {\n return a.episode - b.episode;\n });\n }, [videos, selectedSeason]);\n const [search, setSearch] = React.useState('');\n const searchInputOnChange = React.useCallback((event) => {\n setSearch(event.currentTarget.value);\n }, []);\n return (\n
    \n {\n !metaItem || metaItem.content.type === 'Loading' ?\n \n \n \n
    \n \n \n \n \n \n
    \n
    \n :\n metaItem.content.type === 'Err' || videosForSeason.length === 0 ?\n
    \n {'\n
    No videos found for this meta!
    \n
    \n :\n \n {\n seasons.length > 0 ?\n \n :\n null\n }\n \n
    \n {\n videosForSeason\n .filter((video) => {\n return search.length === 0 ||\n (\n (typeof video.title === 'string' && video.title.toLowerCase().includes(search.toLowerCase())) ||\n (!isNaN(video.released.getTime()) && video.released.toLocaleString(undefined, { year: '2-digit', month: 'short', day: 'numeric' }).toLowerCase().includes(search.toLowerCase()))\n );\n })\n .map((video, index) => (\n \n ))\n }\n
    \n
    \n }\n
    \n );\n};\n\nVideosList.propTypes = {\n className: PropTypes.string,\n metaItem: PropTypes.object,\n season: PropTypes.number,\n seasonOnSelect: PropTypes.func\n};\n\nmodule.exports = VideosList;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst VideosList = require('./VideosList');\n\nmodule.exports = VideosList;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaDetails = require('./MetaDetails');\n\nmodule.exports = MetaDetails;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useModelState } = require('stremio/common');\n\nconst map = (metaDetails) => ({\n ...metaDetails,\n metaItem: metaDetails.metaItem !== null && metaDetails.metaItem.content.type === 'Ready' ?\n {\n ...metaDetails.metaItem,\n content: {\n ...metaDetails.metaItem.content,\n content: {\n ...metaDetails.metaItem.content.content,\n released: new Date(\n typeof metaDetails.metaItem.content.content.released === 'string' ?\n metaDetails.metaItem.content.content.released\n :\n NaN\n ),\n videos: metaDetails.metaItem.content.content.videos.map((video) => ({\n ...video,\n released: new Date(\n typeof video.released === 'string' ?\n video.released\n :\n NaN\n ),\n }))\n }\n }\n }\n :\n metaDetails.metaItem\n});\n\nconst useMetaDetails = (urlParams) => {\n const action = React.useMemo(() => {\n if (typeof urlParams.type === 'string' && typeof urlParams.id === 'string') {\n return {\n action: 'Load',\n args: {\n model: 'MetaDetails',\n args: {\n metaPath: {\n resource: 'meta',\n type: urlParams.type,\n id: urlParams.id,\n extra: []\n },\n streamPath: typeof urlParams.videoId === 'string' ?\n {\n resource: 'stream',\n type: urlParams.type,\n id: urlParams.videoId,\n extra: []\n }\n :\n null\n }\n }\n };\n } else {\n return {\n action: 'Unload'\n };\n }\n }, [urlParams]);\n return useModelState({ model: 'meta_details', action, map });\n};\n\nmodule.exports = useMetaDetails;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useMetaExtensionTabs = (metaExtensions) => {\n const tabs = React.useMemo(() => {\n return metaExtensions\n .map((extension) => ({\n id: extension.url,\n label: extension.addon.manifest.name,\n logo: extension.addon.manifest.logo,\n icon: 'ic_addons',\n onClick: () => setSelected(extension)\n }));\n }, [metaExtensions]);\n const [selected, setSelected] = React.useState(null);\n const clear = React.useCallback(() => {\n setSelected(null);\n }, []);\n return [tabs, selected, clear];\n};\n\nmodule.exports = useMetaExtensionTabs;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useSeason = (urlParams, queryParams) => {\n const season = React.useMemo(() => {\n return queryParams.has('season') && !isNaN(queryParams.get('season')) ?\n parseInt(queryParams.get('season'), 10)\n :\n null;\n }, [queryParams]);\n const setSeason = React.useCallback((season) => {\n const nextQueryParams = new URLSearchParams(queryParams);\n nextQueryParams.set('season', season);\n window.location.replace(`#${urlParams.path}?${nextQueryParams}`);\n }, [urlParams, queryParams]);\n return [season, setSeason];\n};\n\nmodule.exports = useSeason;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { Image, HorizontalNavBar } = require('stremio/common');\nconst styles = require('./styles');\n\nconst NotFound = () => {\n return (\n
    \n \n
    \n \n
    Page not found!
    \n
    \n
    \n );\n};\n\nmodule.exports = NotFound;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst NotFound = require('./NotFound');\n\nmodule.exports = NotFound;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { Image } = require('stremio/common');\nconst styles = require('./styles');\n\nconst BufferingLoader = ({ className, logo }) => {\n return (\n
    \n \n
    \n );\n};\n\nBufferingLoader.propTypes = {\n className: PropTypes.string,\n logo: PropTypes.string\n};\n\nmodule.exports = BufferingLoader;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst BufferingLoader = require('./BufferingLoader');\n\nmodule.exports = BufferingLoader;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button } = require('stremio/common');\nconst { useServices } = require('stremio/services');\nconst SeekBar = require('./SeekBar');\nconst VolumeSlider = require('./VolumeSlider');\nconst styles = require('./styles');\nconst { useBinaryState } = require('stremio/common');\nconst { t } = require('i18next');\n\nconst ControlBar = ({\n className,\n paused,\n time,\n duration,\n buffered,\n volume,\n muted,\n playbackSpeed,\n subtitlesTracks,\n audioTracks,\n metaItem,\n nextVideo,\n stream,\n statistics,\n onPlayRequested,\n onPauseRequested,\n onMuteRequested,\n onUnmuteRequested,\n onVolumeChangeRequested,\n onSeekRequested,\n onToggleSubtitlesMenu,\n onToggleInfoMenu,\n onToggleSpeedMenu,\n onToggleVideosMenu,\n onToggleOptionsMenu,\n onToggleStatisticsMenu,\n ...props\n}) => {\n const { chromecast } = useServices();\n const [chromecastServiceActive, setChromecastServiceActive] = React.useState(() => chromecast.active);\n const [buttonsMenuOpen, , , toogleButtonsMenu] = useBinaryState(false);\n const onSubtitlesButtonMouseDown = React.useCallback((event) => {\n event.nativeEvent.subtitlesMenuClosePrevented = true;\n }, []);\n const onInfoButtonMouseDown = React.useCallback((event) => {\n event.nativeEvent.infoMenuClosePrevented = true;\n }, []);\n const onSpeedButtonMouseDown = React.useCallback((event) => {\n event.nativeEvent.speedMenuClosePrevented = true;\n }, []);\n const onVideosButtonMouseDown = React.useCallback((event) => {\n event.nativeEvent.videosMenuClosePrevented = true;\n }, []);\n const onOptionsButtonMouseDown = React.useCallback((event) => {\n event.nativeEvent.optionsMenuClosePrevented = true;\n }, []);\n const onStatisticsButtonMouseDown = React.useCallback((event) => {\n event.nativeEvent.statisticsMenuClosePrevented = true;\n }, []);\n const onPlayPauseButtonClick = React.useCallback(() => {\n if (paused) {\n if (typeof onPlayRequested === 'function') {\n onPlayRequested();\n }\n } else {\n if (typeof onPauseRequested === 'function') {\n onPauseRequested();\n }\n }\n }, [paused, onPlayRequested, onPauseRequested]);\n const onNextVideoButtonClick = React.useCallback(() => {\n if (nextVideo !== null && typeof nextVideo.deepLinks === 'object') {\n if (nextVideo.deepLinks.player !== null) {\n window.location.replace(nextVideo.deepLinks.player);\n } else if (nextVideo.deepLinks.metaDetailsStreams !== null) {\n window.location.replace(nextVideo.deepLinks.metaDetailsStreams);\n }\n }\n }, [nextVideo]);\n const onMuteButtonClick = React.useCallback(() => {\n if (muted) {\n if (typeof onUnmuteRequested === 'function') {\n onUnmuteRequested();\n }\n } else {\n if (typeof onMuteRequested === 'function') {\n onMuteRequested();\n }\n }\n }, [muted, onMuteRequested, onUnmuteRequested]);\n const onSubtitlesButtonClick = React.useCallback(() => {\n if (typeof onToggleSubtitlesMenu === 'function') {\n onToggleSubtitlesMenu();\n }\n }, [onToggleSubtitlesMenu]);\n const onInfoButtonClick = React.useCallback(() => {\n if (typeof onToggleInfoMenu === 'function') {\n onToggleInfoMenu();\n }\n }, [onToggleInfoMenu]);\n const onSpeedButtonClick = React.useCallback(() => {\n if (typeof onToggleSpeedMenu === 'function') {\n onToggleSpeedMenu();\n }\n }, [onToggleSpeedMenu]);\n const onVideosButtonClick = React.useCallback(() => {\n if (typeof onToggleVideosMenu === 'function') {\n onToggleVideosMenu();\n }\n }, [onToggleVideosMenu]);\n const onOptionsButtonClick = React.useCallback(() => {\n if (typeof onToggleOptionsMenu === 'function') {\n onToggleOptionsMenu();\n }\n }, [onToggleOptionsMenu]);\n const onStatisticsButtonClick = React.useCallback(() => {\n if (typeof onToggleStatisticsMenu === 'function') {\n onToggleStatisticsMenu();\n }\n }, [onToggleStatisticsMenu]);\n const onChromecastButtonClick = React.useCallback(() => {\n chromecast.transport.requestSession();\n }, []);\n React.useEffect(() => {\n const onStateChanged = () => {\n setChromecastServiceActive(chromecast.active);\n };\n chromecast.on('stateChanged', onStateChanged);\n return () => {\n chromecast.off('stateChanged', onStateChanged);\n };\n }, []);\n return (\n
    \n \n
    \n \n {\n nextVideo !== null ?\n \n :\n null\n }\n \n \n
    \n \n
    \n \n \n \n \n \n {\n metaItem?.content?.videos?.length > 0 ?\n \n :\n null\n }\n \n
    \n
    \n
    \n );\n};\n\nControlBar.propTypes = {\n className: PropTypes.string,\n paused: PropTypes.bool,\n time: PropTypes.number,\n duration: PropTypes.number,\n buffered: PropTypes.number,\n volume: PropTypes.number,\n muted: PropTypes.bool,\n playbackSpeed: PropTypes.number,\n subtitlesTracks: PropTypes.array,\n audioTracks: PropTypes.array,\n metaItem: PropTypes.object,\n nextVideo: PropTypes.object,\n stream: PropTypes.object,\n statistics: PropTypes.object,\n onPlayRequested: PropTypes.func,\n onPauseRequested: PropTypes.func,\n onMuteRequested: PropTypes.func,\n onUnmuteRequested: PropTypes.func,\n onVolumeChangeRequested: PropTypes.func,\n onSeekRequested: PropTypes.func,\n onToggleSubtitlesMenu: PropTypes.func,\n onToggleInfoMenu: PropTypes.func,\n onToggleSpeedMenu: PropTypes.func,\n onToggleVideosMenu: PropTypes.func,\n onToggleOptionsMenu: PropTypes.func,\n onToggleStatisticsMenu: PropTypes.func,\n};\n\nmodule.exports = ControlBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst debounce = require('lodash.debounce');\nconst { useRouteFocused } = require('stremio-router');\nconst { Slider } = require('stremio/common');\nconst formatTime = require('./formatTime');\nconst styles = require('./styles');\n\nconst SeekBar = ({ className, time, duration, buffered, onSeekRequested }) => {\n const disabled = time === null || isNaN(time) || duration === null || isNaN(duration);\n const routeFocused = useRouteFocused();\n const [seekTime, setSeekTime] = React.useState(null);\n const resetTimeDebounced = React.useCallback(debounce(() => {\n setSeekTime(null);\n }, 1500), []);\n const onSlide = React.useCallback((time) => {\n resetTimeDebounced.cancel();\n setSeekTime(time);\n }, []);\n const onComplete = React.useCallback((time) => {\n resetTimeDebounced();\n setSeekTime(time);\n if (typeof onSeekRequested === 'function') {\n onSeekRequested(time);\n }\n }, [onSeekRequested]);\n React.useLayoutEffect(() => {\n if (!routeFocused || disabled) {\n resetTimeDebounced.cancel();\n setSeekTime(null);\n }\n }, [routeFocused, disabled]);\n React.useEffect(() => {\n return () => {\n resetTimeDebounced.cancel();\n };\n }, []);\n return (\n
    \n
    {formatTime(seekTime !== null ? seekTime : time)}
    \n \n
    {formatTime(duration)}
    \n
    \n );\n};\n\nSeekBar.propTypes = {\n className: PropTypes.string,\n time: PropTypes.number,\n duration: PropTypes.number,\n buffered: PropTypes.number,\n onSeekRequested: PropTypes.func\n};\n\nmodule.exports = SeekBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst formatUnit = (value) => {\n return ('0' + value).slice(-1 * Math.max(value.toString().length, 2));\n};\n\nconst formatTime = (time) => {\n if (time === null || isNaN(time)) {\n return '--:--:--';\n }\n\n const hours = Math.floor(time / (1000 * 60 * 60));\n const minutes = Math.floor((time / (1000 * 60)) % 60);\n const seconds = Math.floor((time / 1000) % 60);\n return `${formatUnit(hours)}:${formatUnit(minutes)}:${formatUnit(seconds)}`;\n};\n\nmodule.exports = formatTime;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SeekBar = require('./SeekBar');\n\nmodule.exports = SeekBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst debounce = require('lodash.debounce');\nconst { useRouteFocused } = require('stremio-router');\nconst { Slider } = require('stremio/common');\nconst styles = require('./styles');\n\nconst VolumeSlider = ({ className, volume, onVolumeChangeRequested }) => {\n const disabled = volume === null || isNaN(volume);\n const routeFocused = useRouteFocused();\n const [slidingVolume, setSlidingVolume] = React.useState(null);\n const resetVolumeDebounced = React.useCallback(debounce(() => {\n setSlidingVolume(null);\n }, 100), []);\n const onSlide = React.useCallback((volume) => {\n resetVolumeDebounced.cancel();\n setSlidingVolume(volume);\n if (typeof onVolumeChangeRequested === 'function') {\n onVolumeChangeRequested(volume);\n }\n }, [onVolumeChangeRequested]);\n const onComplete = React.useCallback((volume) => {\n resetVolumeDebounced();\n setSlidingVolume(volume);\n if (typeof onVolumeChangeRequested === 'function') {\n onVolumeChangeRequested(volume);\n }\n }, [onVolumeChangeRequested]);\n React.useLayoutEffect(() => {\n if (!routeFocused || disabled) {\n resetVolumeDebounced.cancel();\n setSlidingVolume(null);\n }\n }, [routeFocused, disabled]);\n React.useEffect(() => {\n return () => {\n resetVolumeDebounced.cancel();\n };\n }, []);\n return (\n \n );\n};\n\nVolumeSlider.propTypes = {\n className: PropTypes.string,\n volume: PropTypes.number,\n onVolumeChangeRequested: PropTypes.func\n};\n\nmodule.exports = VolumeSlider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst VolumeSlider = require('./VolumeSlider');\n\nmodule.exports = VolumeSlider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ControlBar = require('./ControlBar');\n\nmodule.exports = ControlBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\n// const Stream = require('stremio/routes/MetaDetails/StreamsList/Stream');\n// const AddonDetails = require('stremio/common/AddonDetailsModal/AddonDetails');\nconst { MetaPreview, CONSTANTS } = require('stremio/common');\nconst styles = require('./styles');\n\nconst InfoMenu = ({ className, ...props }) => {\n const metaItem = React.useMemo(() => {\n return props.metaItem !== null ?\n {\n ...props.metaItem,\n links: props.metaItem.links.filter(({ category }) => category === CONSTANTS.SHARE_LINK_CATEGORY)\n }\n :\n null;\n }, [props.metaItem]);\n const onMouseDown = React.useCallback((event) => {\n event.nativeEvent.infoMenuClosePrevented = true;\n }, []);\n return (\n
    \n {\n metaItem !== null ?\n \n :\n null\n }\n {/* {\n props.stream !== null ?\n \n :\n null\n } */}\n {/* {\n props.addon !== null ?\n \n :\n null\n } */}\n
    \n );\n};\n\nInfoMenu.propTypes = {\n className: PropTypes.string,\n metaItem: PropTypes.object,\n addon: PropTypes.object,\n stream: PropTypes.object\n};\n\nmodule.exports = InfoMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst InfoMenu = require('./InfoMenu');\n\nmodule.exports = InfoMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Image, Button, CONSTANTS } = require('stremio/common');\nconst styles = require('./styles');\n\nconst NextVideoPopup = ({ className, metaItem, nextVideo, onDismiss, onPlayNextVideoRequested }) => {\n const watchNowButtonRef = React.useRef(null);\n const [animationEnded, setAnimationEnded] = React.useState(false);\n const videoName = React.useMemo(() => {\n const title = nextVideo && nextVideo.title || metaItem && metaItem.title;\n return nextVideo !== null &&\n typeof nextVideo.season === 'number' &&\n typeof nextVideo.episode === 'number' ?\n `${title} (S${nextVideo.season}E${nextVideo.episode})`\n :\n title;\n }, [metaItem, nextVideo]);\n const onAnimationEnd = React.useCallback(() => {\n setAnimationEnded(true);\n }, []);\n const renderPosterFallback = React.useCallback(() => {\n return metaItem !== null && typeof metaItem.type === 'string' ?\n \n :\n null;\n }, [metaItem]);\n const onDismissButtonClick = React.useCallback(() => {\n if (typeof onDismiss === 'function') {\n onDismiss();\n }\n }, [onDismiss]);\n const onWatchNowButtonClick = React.useCallback(() => {\n if (typeof onPlayNextVideoRequested === 'function') {\n onPlayNextVideoRequested();\n }\n }, [onPlayNextVideoRequested]);\n React.useLayoutEffect(() => {\n if (animationEnded === true && watchNowButtonRef.current !== null) {\n watchNowButtonRef.current.focus();\n }\n }, [animationEnded]);\n return (\n
    \n
    \n \n
    \n
    \n
    \n {\n typeof videoName === 'string' ?\n
    \n { videoName }\n
    \n :\n null\n }\n {\n nextVideo !== null && typeof nextVideo.overview === 'string' ?\n
    \n { nextVideo.overview }\n
    \n :\n null\n }\n
    \n
    \n \n \n
    \n
    \n
    \n );\n};\n\nNextVideoPopup.propTypes = {\n className: PropTypes.string,\n metaItem: PropTypes.object,\n nextVideo: PropTypes.object,\n onDismiss: PropTypes.func,\n onPlayNextVideoRequested: PropTypes.func\n};\n\nmodule.exports = NextVideoPopup;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst NextVideoPopup = require('./NextVideoPopup');\n\nmodule.exports = NextVideoPopup;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button } = require('stremio/common');\nconst styles = require('./styles');\n\nconst Option = ({ icon, label, deviceId, disabled, onClick }) => {\n const onButtonClick = React.useCallback(() => {\n if (typeof onClick === 'function') {\n onClick(deviceId);\n }\n }, [onClick, deviceId]);\n return (\n \n );\n};\n\nOption.propTypes = {\n icon: PropTypes.string,\n label: PropTypes.string,\n deviceId: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n};\n\nmodule.exports = Option;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Option = require('./Option');\n\nmodule.exports = Option;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst { useToast } = require('stremio/common');\nconst { useServices } = require('stremio/services');\nconst Option = require('./Option');\nconst styles = require('./styles');\n\nconst OptionsMenu = ({ className, stream, playbackDevices }) => {\n const { t } = useTranslation();\n const { core } = useServices();\n const toast = useToast();\n const [streamingUrl, downloadUrl] = React.useMemo(() => {\n return stream !== null ?\n stream.deepLinks &&\n stream.deepLinks.externalPlayer &&\n [stream.deepLinks.externalPlayer.streaming, stream.deepLinks.externalPlayer.download]\n :\n [null, null];\n }, [stream]);\n const externalDevices = React.useMemo(() => {\n return playbackDevices.filter(({ type }) => type === 'external');\n }, [playbackDevices]);\n const onCopyStreamButtonClick = React.useCallback(() => {\n if (streamingUrl || downloadUrl) {\n navigator.clipboard.writeText(streamingUrl || downloadUrl)\n .then(() => {\n toast.show({\n type: 'success',\n title: 'Copied',\n message: t('PLAYER_COPY_STREAM_SUCCESS'),\n timeout: 3000\n });\n })\n .catch((e) => {\n console.error(e);\n toast.show({\n type: 'error',\n title: t('Error'),\n message: `${t('PLAYER_COPY_STREAM_ERROR')}: ${streamingUrl || downloadUrl}`,\n timeout: 3000\n });\n });\n }\n }, [streamingUrl, downloadUrl]);\n const onDownloadVideoButtonClick = React.useCallback(() => {\n if (streamingUrl || downloadUrl) {\n window.open(streamingUrl || downloadUrl);\n }\n }, [streamingUrl, downloadUrl]);\n const onExternalDeviceRequested = React.useCallback((deviceId) => {\n if (streamingUrl) {\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'PlayOnDevice',\n args: {\n device: deviceId,\n source: streamingUrl,\n }\n }\n });\n }\n }, [streamingUrl]);\n const onMouseDown = React.useCallback((event) => {\n event.nativeEvent.optionsMenuClosePrevented = true;\n }, []);\n return (\n
    \n {\n streamingUrl || downloadUrl ?\n \n :\n null\n }\n {\n streamingUrl || downloadUrl ?\n \n :\n null\n }\n {\n streamingUrl && externalDevices.map(({ id, name }) => (\n \n ))\n }\n
    \n );\n};\n\nOptionsMenu.propTypes = {\n className: PropTypes.string,\n stream: PropTypes.object,\n playbackDevices: PropTypes.array\n};\n\nmodule.exports = OptionsMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst OptionsMenu = require('./OptionsMenu');\n\nmodule.exports = OptionsMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst debounce = require('lodash.debounce');\nconst langs = require('langs');\nconst { useTranslation } = require('react-i18next');\nconst { useRouteFocused } = require('stremio-router');\nconst { useServices } = require('stremio/services');\nconst { HorizontalNavBar, Button, useFullscreen, useBinaryState, useToast, useStreamingServer, withCoreSuspender } = require('stremio/common');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst BufferingLoader = require('./BufferingLoader');\nconst ControlBar = require('./ControlBar');\nconst NextVideoPopup = require('./NextVideoPopup');\nconst StatisticsMenu = require('./StatisticsMenu');\nconst InfoMenu = require('./InfoMenu');\nconst OptionsMenu = require('./OptionsMenu');\nconst VideosMenu = require('./VideosMenu');\nconst SubtitlesMenu = require('./SubtitlesMenu');\nconst SpeedMenu = require('./SpeedMenu');\nconst Video = require('./Video');\nconst usePlayer = require('./usePlayer');\nconst useSettings = require('./useSettings');\nconst styles = require('./styles');\n\nconst Player = ({ urlParams, queryParams }) => {\n const { t } = useTranslation();\n const { chromecast, shell, core } = useServices();\n const [forceTranscoding, maxAudioChannels] = React.useMemo(() => {\n return [\n queryParams.has('forceTranscoding'),\n queryParams.has('maxAudioChannels') ? parseInt(queryParams.get('maxAudioChannels'), 10) : null\n ];\n }, [queryParams]);\n const [videoState, setVideoState] = React.useReducer(\n (videoState, nextVideoState) => ({ ...videoState, ...nextVideoState }),\n {\n manifest: null,\n stream: null,\n paused: null,\n time: null,\n duration: null,\n buffering: null,\n buffered: null,\n volume: null,\n muted: null,\n playbackSpeed: null,\n videoParams: null,\n audioTracks: [],\n selectedAudioTrackId: null,\n subtitlesTracks: [],\n selectedSubtitlesTrackId: null,\n subtitlesOffset: null,\n subtitlesSize: null,\n subtitlesTextColor: null,\n subtitlesBackgroundColor: null,\n subtitlesOutlineColor: null,\n extraSubtitlesTracks: [],\n selectedExtraSubtitlesTrackId: null,\n extraSubtitlesSize: null,\n extraSubtitlesDelay: null,\n extraSubtitlesOffset: null,\n extraSubtitlesTextColor: null,\n extraSubtitlesBackgroundColor: null,\n extraSubtitlesOutlineColor: null\n }\n );\n const [player, timeChanged, pausedChanged, ended] = usePlayer(urlParams, videoState.videoParams);\n const [settings, updateSettings] = useSettings();\n const streamingServer = useStreamingServer();\n const routeFocused = useRouteFocused();\n const toast = useToast();\n const [, , , toggleFullscreen] = useFullscreen();\n const [casting, setCasting] = React.useState(() => {\n return chromecast.active && chromecast.transport.getCastState() === cast.framework.CastState.CONNECTED;\n });\n const [immersed, setImmersed] = React.useState(true);\n const setImmersedDebounced = React.useCallback(debounce(setImmersed, 3000), []);\n const [optionsMenuOpen, , closeOptionsMenu, toggleOptionsMenu] = useBinaryState(false);\n const [subtitlesMenuOpen, , closeSubtitlesMenu, toggleSubtitlesMenu] = useBinaryState(false);\n const [infoMenuOpen, , closeInfoMenu, toggleInfoMenu] = useBinaryState(false);\n const [speedMenuOpen, , closeSpeedMenu, toggleSpeedMenu] = useBinaryState(false);\n const [videosMenuOpen, , closeVideosMenu, toggleVideosMenu] = useBinaryState(false);\n const [nextVideoPopupOpen, openNextVideoPopup, closeNextVideoPopup] = useBinaryState(false);\n const [statisticsMenuOpen, , closeStatisticsMenu, toggleStatisticsMenu] = useBinaryState(false);\n const nextVideoPopupDismissed = React.useRef(false);\n const defaultSubtitlesSelected = React.useRef(false);\n const defaultAudioTrackSelected = React.useRef(false);\n const [error, setError] = React.useState(null);\n const videoRef = React.useRef(null);\n const dispatch = React.useCallback((action, options) => {\n if (videoRef.current !== null) {\n videoRef.current.dispatch(action, options);\n }\n }, []);\n const onImplementationChanged = React.useCallback((manifest) => {\n setVideoState({ manifest });\n manifest.props.forEach((propName) => {\n dispatch({ type: 'observeProp', propName });\n });\n dispatch({ type: 'setProp', propName: 'subtitlesSize', propValue: settings.subtitlesSize });\n dispatch({ type: 'setProp', propName: 'subtitlesOffset', propValue: settings.subtitlesOffset });\n dispatch({ type: 'setProp', propName: 'subtitlesTextColor', propValue: settings.subtitlesTextColor });\n dispatch({ type: 'setProp', propName: 'subtitlesBackgroundColor', propValue: settings.subtitlesBackgroundColor });\n dispatch({ type: 'setProp', propName: 'subtitlesOutlineColor', propValue: settings.subtitlesOutlineColor });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesSize', propValue: settings.subtitlesSize });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesOffset', propValue: settings.subtitlesOffset });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesTextColor', propValue: settings.subtitlesTextColor });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesBackgroundColor', propValue: settings.subtitlesBackgroundColor });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesOutlineColor', propValue: settings.subtitlesOutlineColor });\n }, [settings.subtitlesSize, settings.subtitlesOffset, settings.subtitlesTextColor, settings.subtitlesBackgroundColor, settings.subtitlesOutlineColor]);\n const onPropChanged = React.useCallback((propName, propValue) => {\n setVideoState({ [propName]: propValue });\n }, []);\n const onEnded = React.useCallback(() => {\n ended();\n if (player.nextVideo !== null) {\n onPlayNextVideoRequested();\n } else {\n window.history.back();\n }\n }, [player.nextVideo, onPlayNextVideoRequested]);\n const onError = React.useCallback((error) => {\n console.error('Player', error);\n if (error.critical) {\n setError(error);\n } else {\n toast.show({\n type: 'error',\n title: t('ERROR'),\n message: error.message,\n timeout: 3000\n });\n }\n }, []);\n const onSubtitlesTrackLoaded = React.useCallback(() => {\n toast.show({\n type: 'success',\n title: t('PLAYER_SUBTITLES_LOADED'),\n message: t('PLAYER_SUBTITLES_LOADED_EMBEDDED'),\n timeout: 3000\n });\n }, []);\n const onExtraSubtitlesTrackLoaded = React.useCallback((track) => {\n toast.show({\n type: 'success',\n title: t('PLAYER_SUBTITLES_LOADED'),\n message: track.exclusive ? t('PLAYER_SUBTITLES_LOADED_EXCLUSIVE') : t('PLAYER_SUBTITLES_LOADED_ORIGIN', { origin: track.origin }),\n timeout: 3000\n });\n }, []);\n const onPlayRequested = React.useCallback(() => {\n dispatch({ type: 'setProp', propName: 'paused', propValue: false });\n }, []);\n const onPlayRequestedDebounced = React.useCallback(debounce(onPlayRequested, 200), []);\n const onPauseRequested = React.useCallback(() => {\n dispatch({ type: 'setProp', propName: 'paused', propValue: true });\n }, []);\n const onPauseRequestedDebounced = React.useCallback(debounce(onPauseRequested, 200), []);\n const onMuteRequested = React.useCallback(() => {\n dispatch({ type: 'setProp', propName: 'muted', propValue: true });\n }, []);\n const onUnmuteRequested = React.useCallback(() => {\n dispatch({ type: 'setProp', propName: 'muted', propValue: false });\n }, []);\n const onVolumeChangeRequested = React.useCallback((volume) => {\n dispatch({ type: 'setProp', propName: 'volume', propValue: volume });\n }, []);\n const onSeekRequested = React.useCallback((time) => {\n dispatch({ type: 'setProp', propName: 'time', propValue: time });\n }, []);\n const onPlaybackSpeedChanged = React.useCallback((rate) => {\n dispatch({ type: 'setProp', propName: 'playbackSpeed', propValue: rate });\n }, []);\n const onSubtitlesTrackSelected = React.useCallback((id) => {\n dispatch({ type: 'setProp', propName: 'selectedSubtitlesTrackId', propValue: id });\n dispatch({ type: 'setProp', propName: 'selectedExtraSubtitlesTrackId', propValue: null });\n }, []);\n const onExtraSubtitlesTrackSelected = React.useCallback((id) => {\n dispatch({ type: 'setProp', propName: 'selectedSubtitlesTrackId', propValue: null });\n dispatch({ type: 'setProp', propName: 'selectedExtraSubtitlesTrackId', propValue: id });\n }, []);\n const onAudioTrackSelected = React.useCallback((id) => {\n dispatch({ type: 'setProp', propName: 'selectedAudioTrackId', propValue: id });\n }, []);\n const onExtraSubtitlesDelayChanged = React.useCallback((delay) => {\n dispatch({ type: 'setProp', propName: 'extraSubtitlesDelay', propValue: delay });\n }, []);\n const onSubtitlesSizeChanged = React.useCallback((size) => {\n updateSettings({ subtitlesSize: size });\n }, [updateSettings]);\n const onSubtitlesOffsetChanged = React.useCallback((offset) => {\n updateSettings({ subtitlesOffset: offset });\n }, [updateSettings]);\n const onDismissNextVideoPopup = React.useCallback(() => {\n closeNextVideoPopup();\n nextVideoPopupDismissed.current = true;\n }, []);\n const onPlayNextVideoRequested = React.useCallback(() => {\n if (player.nextVideo !== null) {\n window.location.replace(\n typeof player.nextVideo.deepLinks.player === 'string' ?\n player.nextVideo.deepLinks.player\n :\n player.nextVideo.deepLinks.metaDetailsStreams\n );\n }\n }, [player.nextVideo]);\n const onVideoClick = React.useCallback(() => {\n if (videoState.paused !== null) {\n if (videoState.paused) {\n onPlayRequestedDebounced();\n } else {\n onPauseRequestedDebounced();\n }\n }\n }, [videoState.paused]);\n const onVideoDoubleClick = React.useCallback(() => {\n onPlayRequestedDebounced.cancel();\n onPauseRequestedDebounced.cancel();\n toggleFullscreen();\n }, [toggleFullscreen]);\n const onContainerMouseDown = React.useCallback((event) => {\n if (!event.nativeEvent.optionsMenuClosePrevented) {\n closeOptionsMenu();\n }\n if (!event.nativeEvent.subtitlesMenuClosePrevented) {\n closeSubtitlesMenu();\n }\n if (!event.nativeEvent.infoMenuClosePrevented) {\n closeInfoMenu();\n }\n if (!event.nativeEvent.speedMenuClosePrevented) {\n closeSpeedMenu();\n }\n if (!event.nativeEvent.videosMenuClosePrevented) {\n closeVideosMenu();\n }\n if (!event.nativeEvent.statisticsMenuClosePrevented) {\n closeStatisticsMenu();\n }\n }, []);\n const onContainerMouseMove = React.useCallback((event) => {\n setImmersed(false);\n if (!event.nativeEvent.immersePrevented) {\n setImmersedDebounced(true);\n } else {\n setImmersedDebounced.cancel();\n }\n }, []);\n const onContainerMouseLeave = React.useCallback(() => {\n setImmersedDebounced.cancel();\n setImmersed(true);\n }, []);\n const onBarMouseMove = React.useCallback((event) => {\n event.nativeEvent.immersePrevented = true;\n }, []);\n React.useEffect(() => {\n setError(null);\n if (player.selected === null) {\n dispatch({ type: 'command', commandName: 'unload' });\n } else if (streamingServer.baseUrl !== null && streamingServer.baseUrl.type !== 'Loading' &&\n (player.selected.metaRequest === null || (player.metaItem !== null && player.metaItem.type !== 'Loading'))) {\n dispatch({\n type: 'command',\n commandName: 'load',\n commandArgs: {\n stream: {\n ...player.selected.stream,\n subtitles: Array.isArray(player.selected.stream.subtitles) ?\n player.selected.stream.subtitles.map((subtitles) => ({\n ...subtitles,\n label: subtitles.url\n }))\n :\n []\n },\n autoplay: true,\n time: player.libraryItem !== null &&\n player.selected.streamRequest !== null &&\n player.selected.streamRequest.path !== null &&\n player.libraryItem.state.video_id === player.selected.streamRequest.path.id ?\n player.libraryItem.state.timeOffset\n :\n 0,\n forceTranscoding: forceTranscoding || casting,\n maxAudioChannels: typeof maxAudioChannels === 'number' ?\n maxAudioChannels\n :\n window.chrome ?\n 2\n :\n null,\n streamingServerURL: streamingServer.baseUrl.type === 'Ready' ?\n casting ?\n streamingServer.baseUrl.content\n :\n streamingServer.selected.transportUrl\n :\n null,\n seriesInfo: player.seriesInfo\n }\n }, {\n chromecastTransport: chromecast.active ? chromecast.transport : null,\n shellTransport: shell.active ? shell.transport : null,\n });\n }\n }, [streamingServer.baseUrl, player.selected, player.metaItem, forceTranscoding, maxAudioChannels, casting]);\n React.useEffect(() => {\n if (videoState.stream !== null) {\n dispatch({\n type: 'command',\n commandName: 'addExtraSubtitlesTracks',\n commandArgs: {\n tracks: player.subtitles.map((subtitles) => ({\n ...subtitles,\n label: subtitles.url\n }))\n }\n });\n }\n }, [player.subtitles, videoState.stream]);\n React.useEffect(() => {\n dispatch({ type: 'setProp', propName: 'subtitlesSize', propValue: settings.subtitlesSize });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesSize', propValue: settings.subtitlesSize });\n }, [settings.subtitlesSize]);\n React.useEffect(() => {\n dispatch({ type: 'setProp', propName: 'subtitlesOffset', propValue: settings.subtitlesOffset });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesOffset', propValue: settings.subtitlesOffset });\n }, [settings.subtitlesOffset]);\n React.useEffect(() => {\n dispatch({ type: 'setProp', propName: 'subtitlesTextColor', propValue: settings.subtitlesTextColor });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesTextColor', propValue: settings.subtitlesTextColor });\n }, [settings.subtitlesTextColor]);\n React.useEffect(() => {\n dispatch({ type: 'setProp', propName: 'subtitlesBackgroundColor', propValue: settings.subtitlesBackgroundColor });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesBackgroundColor', propValue: settings.subtitlesBackgroundColor });\n }, [settings.subtitlesBackgroundColor]);\n React.useEffect(() => {\n dispatch({ type: 'setProp', propName: 'subtitlesOutlineColor', propValue: settings.subtitlesOutlineColor });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesOutlineColor', propValue: settings.subtitlesOutlineColor });\n }, [settings.subtitlesOutlineColor]);\n React.useEffect(() => {\n if (videoState.time !== null && !isNaN(videoState.time) &&\n videoState.duration !== null && !isNaN(videoState.duration) &&\n videoState.manifest !== null && typeof videoState.manifest.name === 'string') {\n timeChanged(videoState.time, videoState.duration, videoState.manifest.name);\n }\n }, [videoState.time, videoState.duration, videoState.manifest]);\n React.useEffect(() => {\n if (videoState.paused !== null) {\n pausedChanged(videoState.paused);\n }\n }, [videoState.paused]);\n React.useEffect(() => {\n if (!!settings.bingeWatching && player.nextVideo !== null && !nextVideoPopupDismissed.current) {\n if (videoState.time !== null && videoState.duration !== null && videoState.time < videoState.duration && (videoState.duration - videoState.time) <= settings.nextVideoNotificationDuration) {\n openNextVideoPopup();\n } else {\n closeNextVideoPopup();\n }\n }\n }, [player.nextVideo, videoState.time, videoState.duration]);\n React.useEffect(() => {\n if (player.selected && player.selected.stream && typeof player.selected.stream.infoHash === 'string' && typeof player.selected.stream.fileIdx === 'number') {\n const { infoHash, fileIdx } = player.selected.stream;\n const getStatistics = () => {\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'GetStatistics',\n args: {\n infoHash,\n fileIdx,\n }\n }\n });\n };\n getStatistics();\n const statisticsInterval = setInterval(getStatistics, 5000);\n return () => clearInterval(statisticsInterval);\n }\n }, [player.selected]);\n React.useEffect(() => {\n if (!defaultSubtitlesSelected.current) {\n const findTrackByLang = (tracks, lang) => tracks.find((track) => track.lang === lang || langs.where('1', track.lang)?.[2] === lang);\n\n const subtitlesTrack = findTrackByLang(videoState.subtitlesTracks, settings.subtitlesLanguage);\n const extraSubtitlesTrack = findTrackByLang(videoState.extraSubtitlesTracks, settings.subtitlesLanguage);\n\n if (subtitlesTrack && subtitlesTrack.id) {\n onSubtitlesTrackSelected(subtitlesTrack.id);\n defaultSubtitlesSelected.current = true;\n } else if (extraSubtitlesTrack && extraSubtitlesTrack.id) {\n onExtraSubtitlesTrackSelected(extraSubtitlesTrack.id);\n defaultSubtitlesSelected.current = true;\n }\n }\n }, [videoState.subtitlesTracks, videoState.extraSubtitlesTracks]);\n React.useEffect(() => {\n if (!defaultAudioTrackSelected.current) {\n const findTrackByLang = (tracks, lang) => tracks.find((track) => track.lang === lang || langs.where('1', track.lang)?.[2] === lang);\n const audioTrack = findTrackByLang(videoState.audioTracks, settings.audioLanguage);\n\n if (audioTrack && audioTrack.id) {\n onAudioTrackSelected(audioTrack.id);\n defaultAudioTrackSelected.current = true;\n }\n }\n }, [videoState.audioTracks]);\n React.useEffect(() => {\n defaultSubtitlesSelected.current = false;\n defaultAudioTrackSelected.current = false;\n nextVideoPopupDismissed.current = false;\n }, [videoState.stream]);\n React.useEffect(() => {\n if ((!Array.isArray(videoState.subtitlesTracks) || videoState.subtitlesTracks.length === 0) &&\n (!Array.isArray(videoState.extraSubtitlesTracks) || videoState.extraSubtitlesTracks.length === 0) &&\n (!Array.isArray(videoState.audioTracks) || videoState.audioTracks.length === 0)) {\n closeSubtitlesMenu();\n }\n }, [videoState.audioTracks, videoState.subtitlesTracks, videoState.extraSubtitlesTracks]);\n React.useEffect(() => {\n if (player.metaItem === null || player.metaItem.type !== 'Ready') {\n closeInfoMenu();\n closeVideosMenu();\n }\n }, [player.metaItem]);\n React.useEffect(() => {\n if (videoState.playbackSpeed === null) {\n closeSpeedMenu();\n }\n }, [videoState.playbackSpeed]);\n React.useEffect(() => {\n const toastFilter = (item) => item?.dataset?.type === 'CoreEvent';\n toast.addFilter(toastFilter);\n const onCastStateChange = () => {\n setCasting(chromecast.active && chromecast.transport.getCastState() === cast.framework.CastState.CONNECTED);\n };\n const onChromecastServiceStateChange = () => {\n onCastStateChange();\n if (chromecast.active) {\n chromecast.transport.on(\n cast.framework.CastContextEventType.CAST_STATE_CHANGED,\n onCastStateChange\n );\n }\n };\n const onCoreEvent = ({ event }) => {\n if (event === 'PlayingOnDevice') {\n onPauseRequested();\n }\n };\n chromecast.on('stateChanged', onChromecastServiceStateChange);\n core.transport.on('CoreEvent', onCoreEvent);\n onChromecastServiceStateChange();\n return () => {\n toast.removeFilter(toastFilter);\n chromecast.off('stateChanged', onChromecastServiceStateChange);\n core.transport.off('CoreEvent', onCoreEvent);\n if (chromecast.active) {\n chromecast.transport.off(\n cast.framework.CastContextEventType.CAST_STATE_CHANGED,\n onCastStateChange\n );\n }\n };\n }, []);\n React.useLayoutEffect(() => {\n const onKeyDown = (event) => {\n switch (event.code) {\n case 'Space': {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.paused !== null) {\n if (videoState.paused) {\n onPlayRequested();\n } else {\n onPauseRequested();\n }\n }\n\n break;\n }\n case 'ArrowRight': {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.time !== null) {\n const seekTimeMultiplier = event.shiftKey ? 3 : 1;\n onSeekRequested(videoState.time + (settings.seekTimeDuration * seekTimeMultiplier));\n }\n\n break;\n }\n case 'ArrowLeft': {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.time !== null) {\n const seekTimeMultiplier = event.shiftKey ? 3 : 1;\n onSeekRequested(videoState.time - (settings.seekTimeDuration * seekTimeMultiplier));\n }\n\n break;\n }\n case 'ArrowUp': {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.volume !== null) {\n onVolumeChangeRequested(videoState.volume + 5);\n }\n\n break;\n }\n case 'ArrowDown': {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.volume !== null) {\n onVolumeChangeRequested(videoState.volume - 5);\n }\n\n break;\n }\n case 'KeyS': {\n closeOptionsMenu();\n closeInfoMenu();\n closeSpeedMenu();\n closeVideosMenu();\n closeStatisticsMenu();\n if ((Array.isArray(videoState.subtitlesTracks) && videoState.subtitlesTracks.length > 0) ||\n (Array.isArray(videoState.extraSubtitlesTracks) && videoState.extraSubtitlesTracks.length > 0) ||\n (Array.isArray(videoState.audioTracks) && videoState.audioTracks.length > 0)) {\n toggleSubtitlesMenu();\n }\n\n break;\n }\n case 'KeyI': {\n closeOptionsMenu();\n closeSubtitlesMenu();\n closeSpeedMenu();\n closeVideosMenu();\n closeStatisticsMenu();\n if (player.metaItem !== null && player.metaItem.type === 'Ready') {\n toggleInfoMenu();\n }\n\n break;\n }\n case 'KeyR': {\n closeOptionsMenu();\n closeInfoMenu();\n closeSubtitlesMenu();\n closeVideosMenu();\n closeStatisticsMenu();\n if (videoState.playbackSpeed !== null) {\n toggleSpeedMenu();\n }\n\n break;\n }\n case 'KeyV': {\n closeOptionsMenu();\n closeInfoMenu();\n closeSubtitlesMenu();\n closeSpeedMenu();\n closeStatisticsMenu();\n if (player.metaItem !== null && player.metaItem.type === 'Ready') {\n toggleVideosMenu();\n }\n\n break;\n }\n case 'KeyD': {\n closeOptionsMenu();\n closeInfoMenu();\n closeSubtitlesMenu();\n closeSpeedMenu();\n closeVideosMenu();\n if (streamingServer.statistics !== null && streamingServer.statistics.type !== 'Err' && player.selected && typeof player.selected.stream.infoHash === 'string' && typeof player.selected.stream.fileIdx === 'number') {\n toggleStatisticsMenu();\n }\n\n break;\n }\n case 'Escape': {\n closeOptionsMenu();\n closeSubtitlesMenu();\n closeInfoMenu();\n closeSpeedMenu();\n closeVideosMenu();\n closeStatisticsMenu();\n onDismissNextVideoPopup();\n break;\n }\n }\n };\n const onWheel = ({ deltaY }) => {\n if (deltaY > 0) {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.volume !== null) {\n onVolumeChangeRequested(videoState.volume - 5);\n }\n } else {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.volume !== null) {\n onVolumeChangeRequested(videoState.volume + 5);\n }\n }\n };\n if (routeFocused) {\n window.addEventListener('keydown', onKeyDown);\n window.addEventListener('wheel', onWheel);\n }\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n window.removeEventListener('wheel', onWheel);\n };\n }, [player.metaItem, player.selected, streamingServer.statistics, settings.seekTimeDuration, routeFocused, subtitlesMenuOpen, infoMenuOpen, videosMenuOpen, speedMenuOpen, optionsMenuOpen, statisticsMenuOpen, videoState.paused, videoState.time, videoState.volume, videoState.audioTracks, videoState.subtitlesTracks, videoState.extraSubtitlesTracks, videoState.playbackSpeed, toggleSubtitlesMenu, toggleInfoMenu, toggleVideosMenu, toggleStatisticsMenu]);\n React.useLayoutEffect(() => {\n return () => {\n setImmersedDebounced.cancel();\n onPlayRequestedDebounced.cancel();\n onPauseRequestedDebounced.cancel();\n };\n }, []);\n return (\n
    \n \n {\n videoState.buffering ?\n \n :\n null\n }\n \n {\n error !== null ?\n
    \n
    {error.message}
    \n {\n error.code === 2 ?\n
    {t('EXTERNAL_PLAYER_HINT')}
    \n :\n null\n }\n {\n player.selected !== null ?\n \n :\n null\n }\n
    \n :\n null\n }\n {\n subtitlesMenuOpen || infoMenuOpen || videosMenuOpen || speedMenuOpen || optionsMenuOpen || statisticsMenuOpen ?\n
    \n :\n null\n }\n \n \n {\n nextVideoPopupOpen ?\n \n :\n null\n }\n {\n statisticsMenuOpen ?\n \n :\n null\n }\n {\n subtitlesMenuOpen ?\n \n :\n null\n }\n {\n infoMenuOpen ?\n \n :\n null\n }\n {\n speedMenuOpen ?\n \n :\n null\n }\n {\n videosMenuOpen ?\n \n :\n null\n }\n {\n optionsMenuOpen ?\n \n :\n null\n }\n
    \n );\n};\n\nPlayer.propTypes = {\n urlParams: PropTypes.shape({\n stream: PropTypes.string,\n streamTransportUrl: PropTypes.string,\n metaTransportUrl: PropTypes.string,\n type: PropTypes.string,\n id: PropTypes.string,\n videoId: PropTypes.string\n }),\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nconst PlayerFallback = () => (\n
    \n);\n\nmodule.exports = withCoreSuspender(Player, PlayerFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { Button } = require('stremio/common');\nconst styles = require('./styles');\n\nconst OptionButton = ({ className, value, selected, onSelect }) => {\n const onClick = React.useCallback(() => {\n if (typeof onSelect === 'function') {\n onSelect(value);\n }\n }, [onSelect, value]);\n return (\n \n
    { value }x
    \n
    \n \n );\n};\n\nOptionButton.propTypes = {\n className: PropTypes.string,\n value: PropTypes.number,\n selected: PropTypes.bool,\n onSelect: PropTypes.func,\n};\n\nmodule.exports = OptionButton;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Option = require('./Option');\n\nmodule.exports = Option;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Option = require('./Option');\nconst styles = require('./styles');\n\nconst RATES = Array.from(Array(8).keys(), (n) => n * 0.25 + 0.25).reverse();\n\nconst SpeedMenu = ({ className, playbackSpeed, onPlaybackSpeedChanged }) => {\n const { t } = useTranslation();\n const onMouseDown = React.useCallback((event) => {\n event.nativeEvent.speedMenuClosePrevented = true;\n }, []);\n const onOptionSelect = React.useCallback((value) => {\n if (typeof onPlaybackSpeedChanged === 'function') {\n onPlaybackSpeedChanged(value);\n }\n }, [onPlaybackSpeedChanged]);\n return (\n
    \n
    \n { t('PLAYBACK_SPEED') }\n
    \n
    \n {\n RATES.map((rate) => (\n \n ))\n }\n
    \n
    \n );\n};\n\nSpeedMenu.propTypes = {\n className: PropTypes.string,\n playbackSpeed: PropTypes.number,\n onPlaybackSpeedChanged: PropTypes.func,\n};\n\nmodule.exports = SpeedMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SpeedMenu = require('./SpeedMenu');\n\nmodule.exports = SpeedMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst classNames = require('classnames');\nconst PropTypes = require('prop-types');\nconst styles = require('./styles.less');\n\nconst StatisticsMenu = ({ className, stream, statistics }) => {\n const peers = React.useMemo(() => {\n return statistics.type === 'Ready' && statistics.content?.peers ?\n statistics.content.peers\n :\n 0;\n }, [statistics]);\n\n const speed = React.useMemo(() => {\n return statistics.type === 'Ready' && statistics.content?.downloadSpeed ?\n (statistics.content.downloadSpeed / 1000 / 1000).toFixed(2)\n :\n 0;\n }, [statistics]);\n\n const completed = React.useMemo(() => {\n return statistics.type === 'Ready' && statistics.content?.streamProgress ?\n (statistics.content.streamProgress * 100).toFixed(2)\n :\n 0;\n }, [statistics]);\n\n return (\n
    \n
    \n Statistics\n
    \n
    \n
    \n
    \n Peers\n
    \n
    \n { peers }\n
    \n
    \n
    \n
    \n Speed\n
    \n
    \n { speed } MB/s\n
    \n
    \n
    \n
    \n Completed\n
    \n
    \n { completed } %\n
    \n
    \n
    \n
    \n
    \n Info Hash\n
    \n
    \n { stream.infoHash }\n
    \n
    \n
    \n );\n};\n\nStatisticsMenu.propTypes = {\n className: PropTypes.string,\n stream: PropTypes.object,\n statistics: PropTypes.object,\n};\n\nmodule.exports = StatisticsMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst StatisticsMenu = require('./StatisticsMenu');\nmodule.exports = StatisticsMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button } = require('stremio/common');\nconst styles = require('./styles');\n\nconst DiscreteSelectInput = ({ className, value, label, disabled, dataset, onChange }) => {\n const buttonOnClick = React.useCallback((event) => {\n if (typeof onChange === 'function') {\n onChange({\n type: 'change',\n value: event.currentTarget.dataset.type,\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, onChange]);\n return (\n
    \n
    {label}
    \n
    \n \n
    {value}
    \n \n
    \n
    \n );\n};\n\nDiscreteSelectInput.propTypes = {\n className: PropTypes.string,\n value: PropTypes.string,\n label: PropTypes.string,\n disabled: PropTypes.bool,\n dataset: PropTypes.object,\n onChange: PropTypes.func\n};\n\nmodule.exports = DiscreteSelectInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst DiscreteSelectInput = require('./DiscreteSelectInput');\n\nmodule.exports = DiscreteSelectInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { Button, CONSTANTS, comparatorWithPriorities, languageNames } = require('stremio/common');\nconst DiscreteSelectInput = require('./DiscreteSelectInput');\nconst styles = require('./styles');\nconst { t } = require('i18next');\n\nconst ORIGIN_PRIORITIES = {\n 'EMBEDDED': 2,\n 'EXCLUSIVE': 1\n};\nconst LANGUAGE_PRIORITIES = {\n 'eng': 1\n};\n\nconst SubtitlesMenu = React.memo((props) => {\n const subtitlesLanguages = React.useMemo(() => {\n return (Array.isArray(props.subtitlesTracks) ? props.subtitlesTracks : [])\n .concat(Array.isArray(props.extraSubtitlesTracks) ? props.extraSubtitlesTracks : [])\n .reduce((subtitlesLanguages, { lang }) => {\n if (!subtitlesLanguages.includes(lang)) {\n subtitlesLanguages.push(lang);\n }\n\n return subtitlesLanguages;\n }, [])\n .sort(comparatorWithPriorities(LANGUAGE_PRIORITIES));\n }, [props.subtitlesTracks, props.extraSubtitlesTracks]);\n const selectedSubtitlesLanguage = React.useMemo(() => {\n return typeof props.selectedSubtitlesTrackId === 'string' ?\n (Array.isArray(props.subtitlesTracks) ? props.subtitlesTracks : [])\n .reduce((selectedSubtitlesLanguage, { id, lang }) => {\n if (id === props.selectedSubtitlesTrackId) {\n return lang;\n }\n\n return selectedSubtitlesLanguage;\n }, null)\n :\n typeof props.selectedExtraSubtitlesTrackId === 'string' ?\n (Array.isArray(props.extraSubtitlesTracks) ? props.extraSubtitlesTracks : [])\n .reduce((selectedSubtitlesLanguage, { id, lang }) => {\n if (id === props.selectedExtraSubtitlesTrackId) {\n return lang;\n }\n\n return selectedSubtitlesLanguage;\n }, null)\n :\n null;\n }, [props.subtitlesTracks, props.extraSubtitlesTracks, props.selectedSubtitlesTrackId, props.selectedExtraSubtitlesTrackId]);\n const subtitlesTracksForLanguage = React.useMemo(() => {\n return (Array.isArray(props.subtitlesTracks) ? props.subtitlesTracks : [])\n .concat(Array.isArray(props.extraSubtitlesTracks) ? props.extraSubtitlesTracks : [])\n .filter(({ lang }) => lang === selectedSubtitlesLanguage)\n .sort((t1, t2) => comparatorWithPriorities(ORIGIN_PRIORITIES)(t1.origin, t2.origin));\n }, [props.subtitlesTracks, props.extraSubtitlesTracks, selectedSubtitlesLanguage]);\n const onMouseDown = React.useCallback((event) => {\n event.nativeEvent.subtitlesMenuClosePrevented = true;\n }, []);\n const subtitlesLanguageOnClick = React.useCallback((event) => {\n const track = (Array.isArray(props.subtitlesTracks) ? props.subtitlesTracks : [])\n .concat(Array.isArray(props.extraSubtitlesTracks) ? props.extraSubtitlesTracks : [])\n .filter(({ lang }) => lang === event.currentTarget.dataset.lang)\n .sort((t1, t2) => comparatorWithPriorities(ORIGIN_PRIORITIES)(t1.origin, t2.origin))\n .shift();\n if (!track) {\n if (typeof props.onSubtitlesTrackSelected === 'function') {\n props.onSubtitlesTrackSelected(null);\n }\n if (typeof props.onExtraSubtitlesTrackSelected === 'function') {\n props.onExtraSubtitlesTrackSelected(null);\n }\n } else if (track.embedded) {\n if (typeof props.onSubtitlesTrackSelected === 'function') {\n props.onSubtitlesTrackSelected(track.id);\n }\n } else {\n if (typeof props.onExtraSubtitlesTrackSelected === 'function') {\n props.onExtraSubtitlesTrackSelected(track.id);\n }\n }\n }, [props.subtitlesTracks, props.extraSubtitlesTracks, props.onSubtitlesTrackSelected, props.onExtraSubtitlesTrackSelected]);\n const subtitlesTrackOnClick = React.useCallback((event) => {\n if (event.currentTarget.dataset.embedded === 'true') {\n if (typeof props.onSubtitlesTrackSelected === 'function') {\n props.onSubtitlesTrackSelected(event.currentTarget.dataset.id);\n }\n } else {\n if (typeof props.onExtraSubtitlesTrackSelected === 'function') {\n props.onExtraSubtitlesTrackSelected(event.currentTarget.dataset.id);\n }\n }\n }, [props.onSubtitlesTrackSelected, props.onExtraSubtitlesTrackSelected]);\n const onSubtitlesDelayChanged = React.useCallback((event) => {\n const delta = event.value === 'increment' ? 250 : -250;\n if (typeof props.selectedExtraSubtitlesTrackId === 'string') {\n if (props.extraSubtitlesDelay !== null && !isNaN(props.extraSubtitlesDelay)) {\n const extraDelay = props.extraSubtitlesDelay + delta;\n if (typeof props.onExtraSubtitlesDelayChanged === 'function') {\n props.onExtraSubtitlesDelayChanged(extraDelay);\n }\n }\n }\n }, [props.selectedExtraSubtitlesTrackId, props.extraSubtitlesDelay, props.onExtraSubtitlesDelayChanged]);\n const onSubtitlesSizeChanged = React.useCallback((event) => {\n const delta = event.value === 'increment' ? 1 : -1;\n if (typeof props.selectedSubtitlesTrackId === 'string') {\n if (props.subtitlesSize !== null && !isNaN(props.subtitlesSize)) {\n const sizeIndex = CONSTANTS.SUBTITLES_SIZES.indexOf(props.subtitlesSize);\n const size = CONSTANTS.SUBTITLES_SIZES[Math.max(0, Math.min(CONSTANTS.SUBTITLES_SIZES.length - 1, sizeIndex + delta))];\n if (typeof props.onSubtitlesSizeChanged === 'function') {\n props.onSubtitlesSizeChanged(size);\n }\n }\n } else if (typeof props.selectedExtraSubtitlesTrackId === 'string') {\n if (props.extraSubtitlesSize !== null && !isNaN(props.extraSubtitlesSize)) {\n const extraSizeIndex = CONSTANTS.SUBTITLES_SIZES.indexOf(props.extraSubtitlesSize);\n const extraSize = CONSTANTS.SUBTITLES_SIZES[Math.max(0, Math.min(CONSTANTS.SUBTITLES_SIZES.length - 1, extraSizeIndex + delta))];\n if (typeof props.onExtraSubtitlesSizeChanged === 'function') {\n props.onExtraSubtitlesSizeChanged(extraSize);\n }\n }\n }\n }, [props.selectedSubtitlesTrackId, props.selectedExtraSubtitlesTrackId, props.subtitlesSize, props.extraSubtitlesSize, props.onSubtitlesSizeChanged, props.onExtraSubtitlesSizeChanged]);\n const onSubtitlesOffsetChanged = React.useCallback((event) => {\n const delta = event.value === 'increment' ? 1 : -1;\n if (typeof props.selectedSubtitlesTrackId === 'string') {\n if (props.extraSubtitlesOffset !== null && !isNaN(props.extraSubtitlesOffset)) {\n const offset = Math.max(0, Math.min(100, Math.floor(props.extraSubtitlesOffset + delta)));\n if (typeof props.onExtraSubtitlesOffsetChanged === 'function') {\n props.onExtraSubtitlesOffsetChanged(offset);\n }\n }\n } else if (typeof props.selectedExtraSubtitlesTrackId === 'string') {\n if (props.subtitlesOffset !== null && !isNaN(props.subtitlesOffset)) {\n const offset = Math.max(0, Math.min(100, Math.floor(props.subtitlesOffset + delta)));\n if (typeof props.onSubtitlesOffsetChanged === 'function') {\n props.onSubtitlesOffsetChanged(offset);\n }\n }\n }\n }, [props.selectedSubtitlesTrackId, props.selectedExtraSubtitlesTrackId, props.subtitlesOffset, props.extraSubtitlesOffset, props.onSubtitlesOffsetChanged, props.onExtraSubtitlesOffsetChanged]);\n const audioTrackOnClick = React.useCallback((event) => {\n if (typeof props.onAudioTrackSelected === 'function') {\n props.onAudioTrackSelected(event.currentTarget.dataset.id);\n }\n }, [props.onAudioTrackSelected]);\n return (\n
    \n {\n Array.isArray(props.audioTracks) && props.audioTracks.length > 1 ?\n
    \n
    Audio Languages
    \n
    \n {props.audioTracks.map(({ id, label, lang }, index) => (\n \n ))}\n
    \n
    \n :\n null\n }\n
    \n
    { t('PLAYER_SUBTITLES_LANGUAGES') }
    \n
    \n \n {subtitlesLanguages.map((lang, index) => (\n \n ))}\n
    \n
    \n
    \n
    { t('PLAYER_SUBTITLES_VARIANTS') }
    \n {\n subtitlesTracksForLanguage.length > 0 ?\n
    \n {subtitlesTracksForLanguage.map((track, index) => (\n \n ))}\n
    \n :\n
    \n
    \n { t('PLAYER_SUBTITLES_DISABLED') }\n
    \n
    \n }\n
    \n
    \n
    Subtitles Settings
    \n \n \n \n
    \n \n
    \n
    \n );\n});\n\nSubtitlesMenu.displayName = 'MainNavBars';\n\nSubtitlesMenu.propTypes = {\n className: PropTypes.string,\n subtitlesTracks: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string.isRequired,\n lang: PropTypes.string.isRequired,\n origin: PropTypes.string.isRequired\n })),\n selectedSubtitlesTrackId: PropTypes.string,\n subtitlesOffset: PropTypes.number,\n subtitlesSize: PropTypes.number,\n extraSubtitlesTracks: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string.isRequired,\n lang: PropTypes.string.isRequired,\n origin: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n })),\n selectedExtraSubtitlesTrackId: PropTypes.string,\n extraSubtitlesOffset: PropTypes.number,\n extraSubtitlesDelay: PropTypes.number,\n extraSubtitlesSize: PropTypes.number,\n audioTracks: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string.isRequired,\n lang: PropTypes.string.isRequired,\n origin: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n })),\n selectedAudioTrackId: PropTypes.string,\n onSubtitlesTrackSelected: PropTypes.func,\n onExtraSubtitlesTrackSelected: PropTypes.func,\n onAudioTrackSelected: PropTypes.func,\n onSubtitlesOffsetChanged: PropTypes.func,\n onSubtitlesSizeChanged: PropTypes.func,\n onExtraSubtitlesOffsetChanged: PropTypes.func,\n onExtraSubtitlesDelayChanged: PropTypes.func,\n onExtraSubtitlesSizeChanged: PropTypes.func\n};\n\nmodule.exports = SubtitlesMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SubtitlesMenu = require('./SubtitlesMenu');\n\nmodule.exports = SubtitlesMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst StremioVideo = require('@stremio/stremio-video');\nconst { useLiveRef } = require('stremio/common');\nconst styles = require('./styles');\n\nconst Video = React.forwardRef(({ className, ...props }, ref) => {\n const onEndedRef = useLiveRef(props.onEnded);\n const onErrorRef = useLiveRef(props.onError);\n const onPropValueRef = useLiveRef(props.onPropValue);\n const onPropChangedRef = useLiveRef(props.onPropChanged);\n const onSubtitlesTrackLoadedRef = useLiveRef(props.onSubtitlesTrackLoaded);\n const onExtraSubtitlesTrackLoadedRef = useLiveRef(props.onExtraSubtitlesTrackLoaded);\n const onImplementationChangedRef = useLiveRef(props.onImplementationChanged);\n const videoElementRef = React.useRef(null);\n const videoRef = React.useRef(null);\n const dispatch = React.useCallback((action, options = {}) => {\n if (videoRef.current !== null) {\n try {\n videoRef.current.dispatch(action, {\n ...options,\n containerElement: videoElementRef.current\n });\n } catch (error) {\n console.error('Video', error);\n }\n }\n }, []);\n React.useImperativeHandle(ref, () => ({ dispatch }), []);\n React.useEffect(() => {\n if (videoElementRef.current !== null) {\n videoRef.current = new StremioVideo();\n videoRef.current.on('ended', () => {\n if (typeof onEndedRef.current === 'function') {\n onEndedRef.current();\n }\n });\n videoRef.current.on('error', (args) => {\n if (typeof onErrorRef.current === 'function') {\n onErrorRef.current(args);\n }\n });\n videoRef.current.on('propValue', (propName, propValue) => {\n if (typeof onPropValueRef.current === 'function') {\n onPropValueRef.current(propName, propValue);\n }\n });\n videoRef.current.on('propChanged', (propName, propValue) => {\n if (typeof onPropChangedRef.current === 'function') {\n onPropChangedRef.current(propName, propValue);\n }\n });\n videoRef.current.on('subtitlesTrackLoaded', (track) => {\n if (typeof onSubtitlesTrackLoadedRef.current === 'function') {\n onSubtitlesTrackLoadedRef.current(track);\n }\n });\n videoRef.current.on('extraSubtitlesTrackLoaded', (track) => {\n if (typeof onExtraSubtitlesTrackLoadedRef.current === 'function') {\n onExtraSubtitlesTrackLoadedRef.current(track);\n }\n });\n videoRef.current.on('implementationChanged', (manifest) => {\n if (typeof onImplementationChangedRef.current === 'function') {\n onImplementationChangedRef.current(manifest);\n }\n });\n }\n return () => {\n videoRef.current.destroy();\n };\n }, []);\n return (\n
    \n
    \n
    \n );\n});\n\nVideo.displayName = 'Video';\n\nVideo.propTypes = {\n className: PropTypes.string,\n onEnded: PropTypes.func,\n onError: PropTypes.func,\n onPropValue: PropTypes.func,\n onPropChanged: PropTypes.func,\n onSubtitlesTrackLoaded: PropTypes.func,\n onExtraSubtitlesTrackLoaded: PropTypes.func,\n onImplementationChanged: PropTypes.func\n};\n\nmodule.exports = Video;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Video = require('./Video');\n\nmodule.exports = Video;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Video = require('../../MetaDetails/VideosList/Video');\nconst styles = require('./styles');\n\nconst VideosMenu = ({ className, metaItem, seriesInfo }) => {\n const onMouseDown = React.useCallback((event) => {\n event.nativeEvent.videosMenuClosePrevented = true;\n }, []);\n const videos = React.useMemo(() => {\n return seriesInfo && typeof seriesInfo.season === 'number' && Array.isArray(metaItem.videos) ?\n metaItem.videos.filter(({ season }) => season === seriesInfo.season)\n :\n metaItem.videos;\n }, [metaItem, seriesInfo]);\n return (\n
    \n {\n videos.map((video, index) => (\n \n ))\n }\n
    \n );\n};\n\nVideosMenu.propTypes = {\n className: PropTypes.string,\n metaItem: PropTypes.object,\n seriesInfo: PropTypes.shape({\n season: PropTypes.number,\n episode: PropTypes.number,\n }),\n};\n\nmodule.exports = VideosMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst VideosMenu = require('./VideosMenu');\n\nmodule.exports = VideosMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Player = require('./Player');\n\nmodule.exports = Player;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst { useModelState, useCoreSuspender } = require('stremio/common');\n\nconst map = (player) => ({\n ...player,\n metaItem: player.metaItem !== null && player.metaItem.type === 'Ready' ?\n {\n ...player.metaItem,\n content: {\n ...player.metaItem.content,\n released: new Date(\n typeof player.metaItem.content.released === 'string' ?\n player.metaItem.content.released\n :\n NaN\n ),\n videos: player.metaItem.content.videos.map((video) => ({\n ...video,\n released: new Date(\n typeof video.released === 'string' ?\n video.released\n :\n NaN\n ),\n }))\n }\n }\n :\n player.metaItem,\n});\n\nconst usePlayer = (urlParams, videoParams) => {\n const { core } = useServices();\n const { decodeStream } = useCoreSuspender();\n const stream = decodeStream(urlParams.stream);\n const action = React.useMemo(() => {\n if (stream !== null) {\n return {\n action: 'Load',\n args: {\n model: 'Player',\n args: {\n stream,\n videoParams,\n streamRequest: typeof urlParams.streamTransportUrl === 'string' && typeof urlParams.type === 'string' && typeof urlParams.videoId === 'string' ?\n {\n base: urlParams.streamTransportUrl,\n path: {\n resource: 'stream',\n type: urlParams.type,\n id: urlParams.videoId,\n extra: []\n }\n }\n :\n null,\n metaRequest: typeof urlParams.metaTransportUrl === 'string' && typeof urlParams.type === 'string' && typeof urlParams.id === 'string' ?\n {\n base: urlParams.metaTransportUrl,\n path: {\n resource: 'meta',\n type: urlParams.type,\n id: urlParams.id,\n extra: []\n }\n }\n :\n null,\n subtitlesPath: typeof urlParams.type === 'string' && typeof urlParams.videoId === 'string' ?\n {\n resource: 'subtitles',\n type: urlParams.type,\n id: urlParams.videoId,\n extra: []\n }\n :\n null\n }\n }\n };\n } else {\n return {\n action: 'Unload'\n };\n }\n }, [urlParams, videoParams]);\n const timeChanged = React.useCallback((time, duration, device) => {\n core.transport.dispatch({\n action: 'Player',\n args: {\n action: 'TimeChanged',\n args: { time, duration, device }\n }\n }, 'player');\n }, []);\n const ended = React.useCallback(() => {\n core.transport.dispatch({\n action: 'Player',\n args: {\n action: 'Ended'\n }\n }, 'player');\n }, []);\n const pausedChanged = React.useCallback((paused) => {\n core.transport.dispatch({\n action: 'Player',\n args: {\n action: 'PausedChanged',\n args: { paused }\n }\n }, 'player');\n }, []);\n const player = useModelState({ model: 'player', action, map });\n return [player, timeChanged, pausedChanged, ended];\n};\n\nmodule.exports = usePlayer;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst { useProfile } = require('stremio/common');\n\nconst useSettings = () => {\n const { core } = useServices();\n const profile = useProfile();\n const updateSettings = React.useCallback((settings) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n ...settings\n }\n }\n });\n }, [profile]);\n return [profile.settings, updateSettings];\n};\n\nmodule.exports = useSettings;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst debounce = require('lodash.debounce');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Image, MainNavBars, MetaRow, MetaItem, withCoreSuspender, getVisibleChildrenRange } = require('stremio/common');\nconst useSearch = require('./useSearch');\nconst styles = require('./styles');\n\nconst THRESHOLD = 100;\n\nconst Search = ({ queryParams }) => {\n const { t } = useTranslation();\n const [search, loadSearchRows] = useSearch(queryParams);\n const query = React.useMemo(() => {\n return search.selected !== null ?\n search.selected.extra.reduceRight((query, [name, value]) => {\n if (name === 'search') {\n return value;\n }\n\n return query;\n }, null)\n :\n null;\n }, [search.selected]);\n const scrollContainerRef = React.useRef();\n const onVisibleRangeChange = React.useCallback(() => {\n if (search.catalogs.length === 0) {\n return;\n }\n\n const range = getVisibleChildrenRange(scrollContainerRef.current, THRESHOLD);\n if (range === null) {\n return;\n }\n\n loadSearchRows(range);\n }, [search.catalogs]);\n const onScroll = React.useCallback(debounce(onVisibleRangeChange, 250), [onVisibleRangeChange]);\n React.useLayoutEffect(() => {\n onVisibleRangeChange();\n }, [search.catalogs, onVisibleRangeChange]);\n return (\n \n
    \n {\n query === null ?\n
    \n
    \n \n
    { t('SEARCH_EXPLANATION_CONTENT') }
    \n
    \n
    \n \n
    { t('SEARCH_EXPLANATION_PEOPLE') }
    \n
    \n
    \n :\n search.catalogs.length === 0 ?\n
    \n \n
    { t('STREMIO_TV_SEARCH_NO_ADDONS') }
    \n
    \n :\n search.catalogs.map((catalog, index) => {\n switch (catalog.content?.type) {\n case 'Ready': {\n return (\n \n );\n }\n case 'Err': {\n return (\n \n );\n }\n default: {\n return (\n \n );\n }\n }\n })\n }\n
    \n
    \n );\n};\n\nSearch.propTypes = {\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nconst SearchFallback = ({ queryParams }) => (\n \n);\n\nSearchFallback.propTypes = Search.propTypes;\n\nmodule.exports = withCoreSuspender(Search, SearchFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Search = require('./Search');\n\nmodule.exports = Search;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useModelState } = require('stremio/common');\nconst { useServices } = require('stremio/services');\n\nconst useSearch = (queryParams) => {\n const { core } = useServices();\n // TODO: refactor this to be in stremio-core-web\n // React.useEffect(() => {\n // let timerId = setTimeout(emitSearchEvent, 500);\n // function emitSearchEvent() {\n // timerId = null;\n // const state = core.transport.getState('search');\n // if (state.selected !== null) {\n // const [, query] = state.selected.extra.find(([name]) => name === 'search');\n // const responses = state.catalogs.filter((catalog) => catalog.content?.type === 'Ready');\n // core.transport.analytics({\n // event: 'Search',\n // args: {\n // query,\n // responsesCount: responses.length\n // }\n // });\n // }\n // }\n // return () => {\n // if (timerId !== null) {\n // clearTimeout(timerId);\n // emitSearchEvent();\n // }\n // };\n // }, [queryParams.get('search')]);\n const action = React.useMemo(() => {\n if (queryParams.has('search') && queryParams.get('search').length > 0) {\n return {\n action: 'Load',\n args: {\n model: 'CatalogsWithExtra',\n args: {\n extra: [\n ['search', queryParams.get('search')]\n ]\n }\n }\n };\n } else {\n return {\n action: 'Unload'\n };\n }\n }, [queryParams]);\n const loadRange = React.useCallback((range) => {\n core.transport.dispatch({\n action: 'CatalogsWithExtra',\n args: {\n action: 'LoadRange',\n args: range\n }\n }, 'search');\n }, []);\n const search = useModelState({ model: 'search', action });\n return [search, loadRange];\n};\n\nmodule.exports = useSearch;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst classnames = require('classnames');\nconst throttle = require('lodash.throttle');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { useRouteFocused } = require('stremio-router');\nconst { useServices } = require('stremio/services');\nconst { Button, Checkbox, MainNavBars, Multiselect, ColorInput, TextInput, ModalDialog, useProfile, useStreamingServer, useBinaryState, withCoreSuspender, useToast } = require('stremio/common');\nconst useProfileSettingsInputs = require('./useProfileSettingsInputs');\nconst useStreamingServerSettingsInputs = require('./useStreamingServerSettingsInputs');\nconst useDataExport = require('./useDataExport');\nconst styles = require('./styles');\n\nconst GENERAL_SECTION = 'general';\nconst PLAYER_SECTION = 'player';\nconst STREAMING_SECTION = 'streaming';\nconst SHORTCUTS_SECTION = 'shortcuts';\n\nconst Settings = () => {\n const { t } = useTranslation();\n const { core } = useServices();\n const { routeFocused } = useRouteFocused();\n const profile = useProfile();\n const [dataExport, loadDataExport] = useDataExport();\n const streamingServer = useStreamingServer();\n const toast = useToast();\n const {\n interfaceLanguageSelect,\n subtitlesLanguageSelect,\n subtitlesSizeSelect,\n subtitlesTextColorInput,\n subtitlesBackgroundColorInput,\n subtitlesOutlineColorInput,\n audioLanguageSelect,\n seekTimeDurationSelect,\n playInExternalPlayerSelect,\n nextVideoPopupDurationSelect,\n bingeWatchingCheckbox,\n playInBackgroundCheckbox,\n hardwareDecodingCheckbox,\n streamingServerUrlInput\n } = useProfileSettingsInputs(profile);\n const {\n cacheSizeSelect,\n torrentProfileSelect\n } = useStreamingServerSettingsInputs(streamingServer);\n const [configureServerUrlModalOpen, openConfigureServerUrlModal, closeConfigureServerUrlModal] = useBinaryState(false);\n const configureServerUrlInputRef = React.useRef(null);\n const configureServerUrlOnSubmit = React.useCallback(() => {\n streamingServerUrlInput.onChange(configureServerUrlInputRef.current.value);\n closeConfigureServerUrlModal();\n }, [streamingServerUrlInput]);\n const [traktAuthStarted, setTraktAuthStarted] = React.useState(false);\n const isTraktAuthenticated = React.useMemo(() => {\n return profile.auth !== null && profile.auth.user !== null && profile.auth.user.trakt !== null &&\n (Date.now() / 1000) < (profile.auth.user.trakt.created_at + profile.auth.user.trakt.expires_in);\n }, [profile.auth]);\n const configureServerUrlModalButtons = React.useMemo(() => {\n return [\n {\n className: styles['cancel-button'],\n label: 'Cancel',\n props: {\n onClick: closeConfigureServerUrlModal\n }\n },\n {\n label: 'Submit',\n props: {\n onClick: configureServerUrlOnSubmit,\n }\n }\n ];\n }, [configureServerUrlOnSubmit]);\n const logoutButtonOnClick = React.useCallback(() => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'Logout'\n }\n });\n }, []);\n const toggleTraktOnClick = React.useCallback(() => {\n if (!isTraktAuthenticated && profile.auth !== null && profile.auth.user !== null && typeof profile.auth.user._id === 'string') {\n window.open(`https://www.strem.io/trakt/auth/${profile.auth.user._id}`);\n setTraktAuthStarted(true);\n } else {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'LogoutTrakt'\n }\n });\n }\n }, [isTraktAuthenticated, profile.auth]);\n const subscribeCalendarOnClick = React.useCallback(() => {\n const url = `webcal://www.strem.io/calendar/${profile.auth.user._id}.ics`;\n window.open(url);\n toast.show({\n type: 'success',\n title: 'Calendar has been added to your default caldendar app',\n timeout: 25000\n });\n //Stremio 4 emits not documented event subscribeCalendar\n }, []);\n const exportDataOnClick = React.useCallback(() => {\n loadDataExport();\n }, []);\n const reloadStreamingServer = React.useCallback(() => {\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'Reload'\n }\n });\n }, []);\n const sectionsContainerRef = React.useRef(null);\n const generalSectionRef = React.useRef(null);\n const playerSectionRef = React.useRef(null);\n const streamingServerSectionRef = React.useRef(null);\n const shortcutsSectionRef = React.useRef(null);\n const sections = React.useMemo(() => ([\n { ref: generalSectionRef, id: GENERAL_SECTION },\n { ref: playerSectionRef, id: PLAYER_SECTION },\n { ref: streamingServerSectionRef, id: STREAMING_SECTION },\n { ref: shortcutsSectionRef, id: SHORTCUTS_SECTION },\n ]), []);\n const [selectedSectionId, setSelectedSectionId] = React.useState(GENERAL_SECTION);\n const updateSelectedSectionId = React.useCallback(() => {\n if (sectionsContainerRef.current.scrollTop + sectionsContainerRef.current.clientHeight >= sectionsContainerRef.current.scrollHeight - 50) {\n setSelectedSectionId(sections[sections.length - 1].id);\n } else {\n for (let i = sections.length - 1; i >= 0; i--) {\n if (sections[i].ref.current.offsetTop - sectionsContainerRef.current.offsetTop <= sectionsContainerRef.current.scrollTop) {\n setSelectedSectionId(sections[i].id);\n break;\n }\n }\n }\n }, []);\n const sideMenuButtonOnClick = React.useCallback((event) => {\n const section = sections.find((section) => {\n return section.id === event.currentTarget.dataset.section;\n });\n sectionsContainerRef.current.scrollTo({\n top: section.ref.current.offsetTop - sectionsContainerRef.current.offsetTop,\n behavior: 'smooth'\n });\n }, []);\n const sectionsContainerOnScorll = React.useCallback(throttle(() => {\n updateSelectedSectionId();\n }, 50), []);\n React.useEffect(() => {\n if (isTraktAuthenticated && traktAuthStarted) {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'InstallTraktAddon'\n }\n });\n setTraktAuthStarted(false);\n }\n }, [isTraktAuthenticated, traktAuthStarted]);\n React.useEffect(() => {\n if (dataExport.exportUrl !== null && typeof dataExport.exportUrl === 'string') {\n window.open(dataExport.exportUrl);\n }\n }, [dataExport.exportUrl]);\n React.useLayoutEffect(() => {\n if (routeFocused) {\n updateSelectedSectionId();\n }\n closeConfigureServerUrlModal();\n }, [routeFocused]);\n return (\n \n
    \n
    \n \n \n \n \n
    \n
    App Version: {process.env.VERSION}
    \n {\n streamingServer.settings !== null && streamingServer.settings.type === 'Ready' ?\n
    Server Version: {streamingServer.settings.content.serverVersion}
    \n :\n null\n }\n
    \n
    \n
    \n
    { t('SETTINGS_NAV_GENERAL') }
    \n
    \n \n
    \n
    \n
    \n {profile.auth === null ? 'Anonymous user' : profile.auth.user.email}\n
    \n
    \n {\n profile.auth !== null ?\n \n :\n null\n }\n
    \n \n
    \n {\n profile.auth === null ?\n
    \n \n
    \n :\n null\n }\n
    \n
    \n
    { t('SETTINGS_INTERFACE_LANGUAGE') }
    \n
    \n \n
    \n
    \n
    \n
    Trakt Scrobbling
    \n
    \n \n
    \n
    \n
    \n
    { t('Calendar') }
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    { t('SETTINGS_NAV_PLAYER') }
    \n
    \n
    \n
    { t('SETTINGS_SUBTITLES_LANGUAGE') }
    \n
    \n \n
    \n
    \n
    \n
    { t('SETTINGS_SUBTITLES_SIZE') }
    \n
    \n \n
    \n
    \n
    \n
    { t('SETTINGS_SUBTITLES_COLOR') }
    \n
    \n \n
    \n
    \n
    \n
    { t('SETTINGS_SUBTITLES_COLOR_BACKGROUND') }
    \n
    \n \n
    \n
    \n
    \n
    { t('SETTINGS_SUBTITLES_COLOR_OUTLINE') }
    \n
    \n \n
    \n
    \n
    \n
    { t('SETTINGS_DEFAULT_AUDIO_TRACK') }
    \n
    \n \n
    \n
    \n
    \n
    { t('SETTINGS_REWIND_FAST_FORWARD_DURATION') }
    \n
    \n \n
    \n
    \n
    \n
    { t('AUTO_PLAY') }
    \n
    \n \n
    \n
    \n
    \n
    { t('SETTINGS_NEXT_VIDEO_POPUP_DURATION') }
    \n
    \n \n
    \n
    \n
    \n
    { t('SETTINGS_PLAY_IN_BACKGROUND') }
    \n
    \n \n
    \n
    \n
    \n
    { t('SETTINGS_PLAY_IN_EXTERNAL_PLAYER') }
    \n
    \n \n
    \n
    \n
    \n
    { t('SETTINGS_HWDEC') }
    \n
    \n \n
    \n
    \n
    \n
    { t('SETTINGS_NAV_STREAMING') }
    \n
    \n \n
    \n
    \n
    \n
    { t('STATUS') }
    \n
    \n
    \n
    \n {\n streamingServer.settings === null ?\n 'NotLoaded'\n :\n streamingServer.settings.type === 'Ready' ?\n t('SETTINGS_SERVER_STATUS_ONLINE')\n :\n streamingServer.settings.type === 'Error' ?\n `${t('SETTINGS_SERVER_STATUS_ERROR')}: (${streamingServer.settings.content})`\n :\n streamingServer.settings.type\n }\n
    \n
    \n
    \n
    \n
    \n
    Url
    \n
    \n
    \n
    {streamingServerUrlInput.value}
    \n \n
    \n
    \n {\n cacheSizeSelect !== null ?\n
    \n
    \n
    { t('SETTINGS_SERVER_CACHE_SIZE') }
    \n
    \n \n
    \n :\n null\n }\n {\n torrentProfileSelect !== null ?\n
    \n
    \n
    { t('SETTINGS_SERVER_TORRENT_PROFILE') }
    \n
    \n \n
    \n :\n null\n }\n
    \n
    \n
    { t('SETTINGS_NAV_SHORTCUTS') }
    \n
    \n
    \n
    { t('SETTINGS_SHORTCUT_PLAY_PAUSE') }
    \n
    \n
    \n { t('SETTINGS_SHORTCUT_SPACE') }\n
    \n
    \n
    \n
    \n
    { t('SETTINGS_SHORTCUT_SEEK_FORWARD') }
    \n
    \n
    \n \n
    { t('SETTINGS_SHORTCUT_OR') }
    \n ⇧ { t('SETTINGS_SHORTCUT_SHIFT') }\n
    +
    \n \n
    \n
    \n
    \n
    \n
    { t('SETTINGS_SHORTCUT_SEEK_BACKWARD') }
    \n
    \n
    \n \n
    { t('SETTINGS_SHORTCUT_OR') }
    \n ⇧ { t('SETTINGS_SHORTCUT_SHIFT') }\n
    +
    \n \n
    \n
    \n
    \n
    \n
    { t('SETTINGS_SHORTCUT_VOLUME_UP') }
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    { t('SETTINGS_SHORTCUT_VOLUME_DOWN') }
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    { t('SETTINGS_SHORTCUT_MENU_SUBTITLES') }
    \n
    \n
    \n S\n
    \n
    \n
    \n
    \n
    { t('SETTINGS_SHORTCUT_MENU_INFO') }
    \n
    \n
    \n I\n
    \n
    \n
    \n
    \n
    { t('SETTINGS_SHORTCUT_FULLSCREEN') }
    \n
    \n
    \n F\n
    \n
    \n
    \n
    \n
    { t('SETTINGS_SHORTCUT_NAVIGATE_MENUS') }
    \n
    \n
    \n 1\n
    { t('SETTINGS_SHORTCUT_TO') }
    \n 5\n
    \n
    \n
    \n
    \n
    { t('SETTINGS_SHORTCUT_GO_TO_SEARCH') }
    \n
    \n
    \n 0\n
    \n
    \n
    \n
    \n
    { t('SETTINGS_SHORTCUT_EXIT_BACK') }
    \n
    \n
    \n { t('SETTINGS_SHORTCUT_ESC') }\n
    \n
    \n
    \n
    \n
    \n {\n configureServerUrlModalOpen ?\n \n \n \n :\n null\n }\n \n );\n};\n\nconst SettingsFallback = () => (\n \n);\n\nmodule.exports = withCoreSuspender(Settings, SettingsFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Settings = require('./Settings');\n\nmodule.exports = Settings;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst { useModelState } = require('stremio/common');\n\nconst map = (dataExport) => ({\n ...dataExport,\n exportUrl: dataExport !== null && dataExport.exportUrl !== null && dataExport.exportUrl.type === 'Ready' ?\n dataExport.exportUrl.content\n :\n null\n});\n\nconst useDataExport = () => {\n const { core } = useServices();\n const loadDataExport = React.useCallback(() => {\n core.transport.dispatch({\n action: 'Load',\n args: {\n model: 'DataExport',\n }\n }, 'data_export');\n }, []);\n const dataExport = useModelState({ model: 'data_export', map });\n return [\n dataExport,\n loadDataExport\n ];\n};\n\nmodule.exports = useDataExport;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useTranslation } = require('react-i18next');\nconst { useServices } = require('stremio/services');\nconst { CONSTANTS, interfaceLanguages, languageNames, externalPlayerOptions } = require('stremio/common');\n\nconst useProfileSettingsInputs = (profile) => {\n const { t } = useTranslation();\n const { core } = useServices();\n // TODO combine those useMemo in one\n const interfaceLanguageSelect = React.useMemo(() => ({\n options: interfaceLanguages.map(({ name, codes }) => ({\n value: codes[0],\n label: name,\n })),\n selected: [\n interfaceLanguages.find(({ codes }) => codes[1] === profile.settings.interfaceLanguage)?.codes?.[0] || profile.settings.interfaceLanguage\n ],\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n interfaceLanguage: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const subtitlesLanguageSelect = React.useMemo(() => ({\n options: Object.keys(languageNames).map((code) => ({\n value: code,\n label: languageNames[code]\n })),\n selected: [profile.settings.subtitlesLanguage],\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n subtitlesLanguage: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const subtitlesSizeSelect = React.useMemo(() => ({\n options: CONSTANTS.SUBTITLES_SIZES.map((size) => ({\n value: `${size}`,\n label: `${size}%`\n })),\n selected: [`${profile.settings.subtitlesSize}`],\n renderLabelText: () => {\n return `${profile.settings.subtitlesSize}%`;\n },\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n subtitlesSize: parseInt(event.value, 10)\n }\n }\n });\n }\n }), [profile.settings]);\n const subtitlesTextColorInput = React.useMemo(() => ({\n value: profile.settings.subtitlesTextColor,\n onChange: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n subtitlesTextColor: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const subtitlesBackgroundColorInput = React.useMemo(() => ({\n value: profile.settings.subtitlesBackgroundColor,\n onChange: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n subtitlesBackgroundColor: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const subtitlesOutlineColorInput = React.useMemo(() => ({\n value: profile.settings.subtitlesOutlineColor,\n onChange: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n subtitlesOutlineColor: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const audioLanguageSelect = React.useMemo(() => ({\n options: Object.keys(languageNames).map((code) => ({\n value: code,\n label: languageNames[code]\n })),\n selected: [profile.settings.audioLanguage],\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n audioLanguage: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const seekTimeDurationSelect = React.useMemo(() => ({\n options: CONSTANTS.SEEK_TIME_DURATIONS.map((size) => ({\n value: `${size}`,\n label: `${size / 1000} ${t('SECONDS')}`\n })),\n selected: [`${profile.settings.seekTimeDuration}`],\n renderLabelText: () => {\n return `${profile.settings.seekTimeDuration / 1000} ${t('SECONDS')}`;\n },\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n seekTimeDuration: parseInt(event.value, 10)\n }\n }\n });\n }\n }), [profile.settings]);\n const playInExternalPlayerSelect = React.useMemo(() => ({\n options: externalPlayerOptions.map((opt) => {\n opt.label = t(opt.label);\n return opt;\n }),\n selected: [`${profile.settings.playerType || 'internal'}`],\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n playerType: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const nextVideoPopupDurationSelect = React.useMemo(() => ({\n options: CONSTANTS.NEXT_VIDEO_POPUP_DURATIONS.map((duration) => ({\n value: `${duration}`,\n label: duration === 0 ? 'Disabled' : `${duration / 1000} ${t('SECONDS')}`\n })),\n selected: [`${profile.settings.nextVideoNotificationDuration}`],\n renderLabelText: () => {\n return profile.settings.nextVideoNotificationDuration === 0 ?\n 'Disabled'\n :\n `${profile.settings.nextVideoNotificationDuration / 1000} ${t('SECONDS')}`;\n },\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n nextVideoNotificationDuration: parseInt(event.value, 10)\n }\n }\n });\n }\n }), [profile.settings]);\n const bingeWatchingCheckbox = React.useMemo(() => ({\n checked: profile.settings.bingeWatching,\n onClick: () => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n bingeWatching: !profile.settings.bingeWatching\n }\n }\n });\n }\n }), [profile.settings]);\n const playInBackgroundCheckbox = React.useMemo(() => ({\n checked: profile.settings.playInBackground,\n onClick: () => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n playInBackground: !profile.settings.playInBackground\n }\n }\n });\n }\n }), [profile.settings]);\n const hardwareDecodingCheckbox = React.useMemo(() => ({\n checked: profile.settings.hardwareDecoding,\n onClick: () => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n hardwareDecoding: !profile.settings.hardwareDecoding\n }\n }\n });\n }\n }), [profile.settings]);\n const streamingServerUrlInput = React.useMemo(() => ({\n value: profile.settings.streamingServerUrl,\n onChange: (value) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n streamingServerUrl: value\n }\n }\n });\n }\n }), [profile.settings]);\n return {\n interfaceLanguageSelect,\n subtitlesLanguageSelect,\n subtitlesSizeSelect,\n subtitlesTextColorInput,\n subtitlesBackgroundColorInput,\n subtitlesOutlineColorInput,\n audioLanguageSelect,\n seekTimeDurationSelect,\n playInExternalPlayerSelect,\n nextVideoPopupDurationSelect,\n bingeWatchingCheckbox,\n playInBackgroundCheckbox,\n hardwareDecodingCheckbox,\n streamingServerUrlInput\n };\n};\n\nmodule.exports = useProfileSettingsInputs;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst isEqual = require('lodash.isequal');\nconst { useServices } = require('stremio/services');\n\nconst CACHE_SIZES = [0, 2147483648, 5368709120, 10737418240, null];\n\nconst cacheSizeToString = (size) => {\n return size === null ?\n 'Infinite'\n :\n size === 0 ?\n 'No caching'\n :\n `${Math.ceil(((size / 1024 / 1024 / 1024) + Number.EPSILON) * 100) / 100}GiB`;\n};\n\nconst TORRENT_PROFILES = {\n default: {\n btDownloadSpeedHardLimit: 3670016,\n btDownloadSpeedSoftLimit: 2621440,\n btHandshakeTimeout: 20000,\n btMaxConnections: 55,\n btMinPeersForStable: 5,\n btRequestTimeout: 4000\n },\n soft: {\n btDownloadSpeedHardLimit: 1677721.6,\n btDownloadSpeedSoftLimit: 1677721.6,\n btHandshakeTimeout: 20000,\n btMaxConnections: 35,\n btMinPeersForStable: 5,\n btRequestTimeout: 4000\n },\n fast: {\n btDownloadSpeedHardLimit: 39321600,\n btDownloadSpeedSoftLimit: 4194304,\n btHandshakeTimeout: 20000,\n btMaxConnections: 200,\n btMinPeersForStable: 10,\n btRequestTimeout: 4000\n },\n 'ultra fast': {\n btDownloadSpeedHardLimit: 78643200,\n btDownloadSpeedSoftLimit: 8388608,\n btHandshakeTimeout: 25000,\n btMaxConnections: 400,\n btMinPeersForStable: 10,\n btRequestTimeout: 6000\n }\n};\n\nconst useStreamingServerSettingsInputs = (streamingServer) => {\n const { core } = useServices();\n // TODO combine those useMemo in one\n const cacheSizeSelect = React.useMemo(() => {\n if (streamingServer.settings === null || streamingServer.settings.type !== 'Ready') {\n return null;\n }\n\n return {\n options: CACHE_SIZES.map((size) => ({\n label: cacheSizeToString(size),\n value: JSON.stringify(size)\n })),\n selected: [JSON.stringify(streamingServer.settings.content.cacheSize)],\n renderLabelText: () => {\n return cacheSizeToString(streamingServer.settings.content.cacheSize);\n },\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'UpdateSettings',\n args: {\n ...streamingServer.settings.content,\n cacheSize: JSON.parse(event.value)\n }\n }\n });\n }\n };\n }, [streamingServer.settings]);\n const torrentProfileSelect = React.useMemo(() => {\n if (streamingServer.settings === null || streamingServer.settings.type !== 'Ready') {\n return null;\n }\n\n const selectedTorrentProfile = {\n btDownloadSpeedHardLimit: streamingServer.settings.content.btDownloadSpeedHardLimit,\n btDownloadSpeedSoftLimit: streamingServer.settings.content.btDownloadSpeedSoftLimit,\n btHandshakeTimeout: streamingServer.settings.content.btHandshakeTimeout,\n btMaxConnections: streamingServer.settings.content.btMaxConnections,\n btMinPeersForStable: streamingServer.settings.content.btMinPeersForStable,\n btRequestTimeout: streamingServer.settings.content.btRequestTimeout\n };\n const isCustomTorrentProfileSelected = Object.values(TORRENT_PROFILES).every((torrentProfile) => {\n return !isEqual(torrentProfile, selectedTorrentProfile);\n });\n return {\n options: Object.keys(TORRENT_PROFILES)\n .map((profileName) => ({\n label: profileName,\n value: JSON.stringify(TORRENT_PROFILES[profileName])\n }))\n .concat(\n isCustomTorrentProfileSelected ?\n [{\n label: 'custom',\n value: JSON.stringify(selectedTorrentProfile)\n }]\n :\n []\n ),\n selected: [JSON.stringify(selectedTorrentProfile)],\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'UpdateSettings',\n args: {\n ...streamingServer.settings.content,\n ...JSON.parse(event.value)\n }\n }\n });\n }\n };\n }, [streamingServer.settings]);\n return { cacheSizeSelect, torrentProfileSelect };\n};\n\nmodule.exports = useStreamingServerSettingsInputs;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Addons = require('./Addons');\nconst Board = require('./Board');\nconst Discover = require('./Discover');\nconst Library = require('./Library');\nconst MetaDetails = require('./MetaDetails');\nconst NotFound = require('./NotFound');\nconst Search = require('./Search');\nconst Settings = require('./Settings');\nconst Player = require('./Player');\nconst Intro = require('./Intro');\n\nmodule.exports = {\n Addons,\n Board,\n Discover,\n Library,\n MetaDetails,\n NotFound,\n Search,\n Settings,\n Player,\n Intro\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\nconst ChromecastTransport = require('./ChromecastTransport');\n\nfunction Chromecast() {\n let active = false;\n let error = null;\n let starting = false;\n let transport = null;\n\n const events = new EventEmitter();\n\n function onTransportInit() {\n active = true;\n error = null;\n starting = false;\n onStateChanged();\n }\n function onTransportInitError(args) {\n console.error(args);\n active = false;\n error = new Error('Google Cast API not available', { cause: args });\n starting = false;\n onStateChanged();\n transport = null;\n }\n function onStateChanged() {\n events.emit('stateChanged');\n }\n\n Object.defineProperties(this, {\n active: {\n configurable: false,\n enumerable: true,\n get: function() {\n return active;\n }\n },\n error: {\n configurable: false,\n enumerable: true,\n get: function() {\n return error;\n }\n },\n starting: {\n configurable: false,\n enumerable: true,\n get: function() {\n return starting;\n }\n },\n transport: {\n configurable: false,\n enumerable: true,\n get: function() {\n return transport;\n }\n }\n });\n\n this.start = function() {\n if (active || error instanceof Error || starting) {\n return;\n }\n\n starting = true;\n transport = new ChromecastTransport();\n transport.on('init', onTransportInit);\n transport.on('init-error', onTransportInitError);\n onStateChanged();\n };\n this.stop = function() {\n active = false;\n error = null;\n starting = false;\n onStateChanged();\n if (transport !== null) {\n transport.removeAllListeners();\n transport = null;\n }\n };\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n}\n\nmodule.exports = Chromecast;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\nconst hat = require('hat');\n\nconst MESSAGE_NAMESPACE = 'urn:x-cast:com.stremio';\nconst CHUNK_SIZE = 20000;\n\nlet castAPIAvailable = null;\nconst castAPIEvents = new EventEmitter();\nwindow['__onGCastApiAvailable'] = function(available) {\n delete window['__onGCastApiAvailable'];\n castAPIAvailable = !!available;\n castAPIEvents.emit('availabilityChanged');\n};\n\nconst initialize = () => {\n return new Promise((resolve, reject) => {\n function onCastAPIAvailabilityChanged() {\n castAPIEvents.off('availabilityChanged', onCastAPIAvailabilityChanged);\n if (castAPIAvailable) {\n resolve();\n } else {\n reject(new Error('window.cast api not available'));\n }\n }\n if (castAPIAvailable !== null) {\n onCastAPIAvailabilityChanged();\n } else {\n castAPIEvents.on('availabilityChanged', onCastAPIAvailabilityChanged);\n }\n });\n};\n\nfunction ChromecastTransport() {\n const events = new EventEmitter();\n const messages = {};\n\n initialize()\n .then(() => {\n cast.framework.CastContext.getInstance().addEventListener(\n cast.framework.CastContextEventType.CAST_STATE_CHANGED,\n onCastStateChanged\n );\n cast.framework.CastContext.getInstance().addEventListener(\n cast.framework.CastContextEventType.SESSION_STATE_CHANGED,\n onSesstionStateChanged\n );\n })\n .then(() => {\n try {\n events.emit('init');\n } catch (error) {\n console.error('ChromecastTransport', error);\n }\n })\n .catch((error) => {\n events.emit('init-error', error);\n });\n\n function onMessage(_, message) {\n try {\n const { id, chunk, index, length } = JSON.parse(message);\n messages[id] = messages[id] || [];\n messages[id][index] = chunk;\n if (Object.keys(messages[id]).length === length) {\n const parsedMessage = JSON.parse(messages[id].join(''));\n delete messages[id];\n events.emit('message', parsedMessage);\n }\n } catch (error) {\n events.emit('message-error', error);\n }\n }\n function onApplicationStatusChanged(event) {\n events.emit(cast.framework.CastSession.APPLICATION_STATUS_CHANGED, event);\n }\n function onApplicationMetadataChanged(event) {\n events.emit(cast.framework.CastSession.APPLICATION_METADATA_CHANGED, event);\n }\n function onActiveInputStateChanged(event) {\n events.emit(cast.framework.CastSession.ACTIVE_INPUT_STATE_CHANGED, event);\n }\n function onVolumeChanged(event) {\n events.emit(cast.framework.CastSession.VOLUME_CHANGED, event);\n }\n function onMediaSessionChanged(event) {\n events.emit(cast.framework.CastSession.MEDIA_SESSION, event);\n }\n function onCastStateChanged(event) {\n events.emit(cast.framework.CastContextEventType.CAST_STATE_CHANGED, event);\n }\n function onSesstionStateChanged(event) {\n events.emit(cast.framework.CastContextEventType.SESSION_STATE_CHANGED, event);\n switch (event.sessionState) {\n case cast.framework.SessionState.SESSION_STARTED: {\n event.session.addMessageListener(MESSAGE_NAMESPACE, onMessage);\n event.session.addEventListener(cast.framework.CastSession.APPLICATION_STATUS_CHANGED, onApplicationStatusChanged);\n event.session.addEventListener(cast.framework.CastSession.APPLICATION_METADATA_CHANGED, onApplicationMetadataChanged);\n event.session.addEventListener(cast.framework.CastSession.ACTIVE_INPUT_STATE_CHANGED, onActiveInputStateChanged);\n event.session.addEventListener(cast.framework.CastSession.VOLUME_CHANGED, onVolumeChanged);\n event.session.addEventListener(cast.framework.CastSession.MEDIA_SESSION, onMediaSessionChanged);\n break;\n }\n case cast.framework.SessionState.SESSION_ENDED: {\n event.session.removeMessageListener(MESSAGE_NAMESPACE, onMessage);\n event.session.removeEventListener(cast.framework.CastSession.APPLICATION_STATUS_CHANGED, onApplicationStatusChanged);\n event.session.removeEventListener(cast.framework.CastSession.APPLICATION_METADATA_CHANGED, onApplicationMetadataChanged);\n event.session.removeEventListener(cast.framework.CastSession.ACTIVE_INPUT_STATE_CHANGED, onActiveInputStateChanged);\n event.session.removeEventListener(cast.framework.CastSession.VOLUME_CHANGED, onVolumeChanged);\n event.session.removeEventListener(cast.framework.CastSession.MEDIA_SESSION, onMediaSessionChanged);\n break;\n }\n }\n }\n\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n this.removeAllListeners = function() {\n events.removeAllListeners();\n };\n this.getCastState = function() {\n return cast.framework.CastContext.getInstance().getCastState();\n };\n this.getSessionState = function() {\n return cast.framework.CastContext.getInstance().getSessionState();\n };\n this.getCastDevice = function() {\n const session = cast.framework.CastContext.getInstance().getCurrentSession();\n if (session !== null) {\n return session.getCastDevice();\n }\n\n return null;\n };\n this.setOptions = function(options) {\n cast.framework.CastContext.getInstance().setOptions(options);\n };\n this.requestSession = function() {\n return cast.framework.CastContext.getInstance().requestSession();\n };\n this.endCurrentSession = function(stopCasting) {\n cast.framework.CastContext.getInstance().endCurrentSession(stopCasting);\n };\n this.sendMessage = function(message) {\n const castSession = cast.framework.CastContext.getInstance().getCurrentSession();\n if (castSession !== null) {\n const serializedMessage = JSON.stringify(message);\n const chunksCount = Math.ceil(serializedMessage.length / CHUNK_SIZE);\n const chunks = [];\n for (let i = 0; i < chunksCount; i++) {\n const start = i * CHUNK_SIZE;\n const chunk = serializedMessage.slice(start, start + CHUNK_SIZE);\n chunks.push(chunk);\n }\n const id = hat();\n return Promise.all(chunks.map((chunk, index) => {\n return castSession.sendMessage(MESSAGE_NAMESPACE, {\n id,\n chunk,\n index,\n length: chunks.length\n });\n }));\n } else {\n return Promise.reject(new Error('Session not started'));\n }\n };\n}\n\nmodule.exports = ChromecastTransport;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Chromecast = require('./Chromecast');\n\nmodule.exports = Chromecast;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\nconst CoreTransport = require('./CoreTransport');\n\nfunction Core(args) {\n let active = false;\n let error = null;\n let starting = false;\n let transport = null;\n\n const events = new EventEmitter();\n\n function onTransportInit() {\n active = true;\n error = null;\n starting = false;\n onStateChanged();\n }\n function onTransportError(args) {\n console.error(args);\n active = false;\n error = new Error('Stremio Core Transport initialization failed', { cause: args });\n starting = false;\n onStateChanged();\n transport = null;\n }\n function onStateChanged() {\n events.emit('stateChanged');\n }\n\n Object.defineProperties(this, {\n active: {\n configurable: false,\n enumerable: true,\n get: function() {\n return active;\n }\n },\n error: {\n configurable: false,\n enumerable: true,\n get: function() {\n return error;\n }\n },\n starting: {\n configurable: false,\n enumerable: true,\n get: function() {\n return starting;\n }\n },\n transport: {\n configurable: false,\n enumerable: true,\n get: function() {\n return transport;\n }\n }\n });\n\n this.start = function() {\n if (active || error instanceof Error || starting) {\n return;\n }\n\n starting = true;\n transport = new CoreTransport(args);\n transport.on('init', onTransportInit);\n transport.on('error', onTransportError);\n onStateChanged();\n };\n this.stop = function() {\n active = false;\n error = null;\n starting = false;\n onStateChanged();\n if (transport !== null) {\n transport.removeAllListeners();\n transport = null;\n }\n };\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n}\n\nmodule.exports = Core;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\nconst Bridge = require('@stremio/stremio-core-web/bridge');\n\nfunction CoreTransport(args) {\n const events = new EventEmitter();\n const worker = new Worker(`${process.env.COMMIT_HASH}/scripts/worker.js`);\n const bridge = new Bridge(window, worker);\n\n window.onCoreEvent = ({ name, args }) => {\n try {\n events.emit(name, args);\n } catch (error) {\n console.error('CoreTransport', error);\n }\n };\n\n bridge.call(['init'], [args])\n .then(() => {\n try {\n events.emit('init');\n } catch (error) {\n console.error('CoreTransport', error);\n }\n })\n .catch((error) => {\n events.emit('error', error);\n });\n\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n this.removeAllListeners = function() {\n events.removeAllListeners();\n };\n this.getState = async function(field) {\n return bridge.call(['getState'], [field]);\n };\n this.getDebugState = async function() {\n return bridge.call(['getDebugState'], []);\n };\n this.dispatch = async function(action, field) {\n return bridge.call(['dispatch'], [action, field, location.hash]);\n };\n this.analytics = async function(event) {\n return bridge.call(['analytics'], [event, location.hash]);\n };\n this.decodeStream = async function(stream) {\n return bridge.call(['decodeStream'], [stream]);\n };\n}\n\nmodule.exports = CoreTransport;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Core = require('./Core');\n\nmodule.exports = Core;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\n\nfunction DragAndDrop({ core }) {\n let active = false;\n\n const events = new EventEmitter();\n\n function onDragOver(event) {\n event.preventDefault();\n }\n async function onDrop(event) {\n event.preventDefault();\n if (event.dataTransfer.files instanceof FileList && event.dataTransfer.files.length > 0) {\n const file = event.dataTransfer.files[0];\n switch (file.type) {\n case 'application/x-bittorrent': {\n try {\n const torrent = await file.arrayBuffer();\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'CreateTorrent',\n args: Array.from(new Uint8Array(torrent))\n }\n });\n } catch (error) {\n events.emit('error', {\n message: 'Failed to process file',\n file: {\n name: file.name,\n type: file.type\n }\n });\n }\n break;\n }\n default: {\n events.emit('error', {\n message: 'Unsupported file',\n file: {\n name: file.name,\n type: file.type\n }\n });\n }\n }\n }\n }\n function onStateChanged() {\n events.emit('stateChanged');\n }\n\n Object.defineProperties(this, {\n active: {\n configurable: false,\n enumerable: true,\n get: function() {\n return active;\n }\n }\n });\n\n this.start = function() {\n if (active) {\n return;\n }\n\n window.addEventListener('dragover', onDragOver);\n window.addEventListener('drop', onDrop);\n active = true;\n onStateChanged();\n };\n this.stop = function() {\n window.removeEventListener('dragover', onDragOver);\n window.removeEventListener('drop', onDrop);\n active = false;\n onStateChanged();\n };\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n}\n\nmodule.exports = DragAndDrop;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst DragAndDrop = require('./DragAndDrop');\n\nmodule.exports = DragAndDrop;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\n\nfunction KeyboardShortcuts() {\n let active = false;\n\n const events = new EventEmitter();\n\n function onKeyDown(event) {\n if (event.keyboardShortcutPrevented || event.target.tagName === 'INPUT' || event.ctrlKey || event.altKey || event.shiftKey || event.metaKey) {\n return;\n }\n\n switch (event.code) {\n case 'Digit0': {\n event.preventDefault();\n window.location = '#/search';\n break;\n }\n case 'Digit1': {\n event.preventDefault();\n window.location = '#/';\n break;\n }\n case 'Digit2': {\n event.preventDefault();\n window.location = '#/discover';\n break;\n }\n case 'Digit3': {\n event.preventDefault();\n window.location = '#/library';\n break;\n }\n case 'Digit4': {\n event.preventDefault();\n window.location = '#/settings';\n break;\n }\n case 'Digit5': {\n event.preventDefault();\n window.location = '#/addons';\n break;\n }\n case 'Backspace': {\n event.preventDefault();\n if (event.ctrlKey) {\n window.history.forward();\n } else {\n window.history.back();\n }\n\n break;\n }\n case 'KeyF': {\n event.preventDefault();\n if (document.fullscreenElement === document.documentElement) {\n document.exitFullscreen();\n } else {\n document.documentElement.requestFullscreen();\n }\n\n break;\n }\n }\n }\n function onStateChanged() {\n events.emit('stateChanged');\n }\n\n Object.defineProperties(this, {\n active: {\n configurable: false,\n enumerable: true,\n get: function() {\n return active;\n }\n }\n });\n\n this.start = function() {\n if (active) {\n return;\n }\n\n window.addEventListener('keydown', onKeyDown);\n active = true;\n onStateChanged();\n };\n this.stop = function() {\n window.removeEventListener('keydown', onKeyDown);\n active = false;\n onStateChanged();\n };\n}\n\nmodule.exports = KeyboardShortcuts;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst KeyboardShortcuts = require('./KeyboardShortcuts');\n\nmodule.exports = KeyboardShortcuts;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst ServicesContext = React.createContext({});\n\nServicesContext.displayName = 'ServicesContext';\n\nmodule.exports = ServicesContext;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst ServicesContext = require('./ServicesContext');\n\nconst ServicesProvider = ({ services = {}, children }) => {\n return (\n \n {children}\n \n );\n};\n\nServicesProvider.propTypes = {\n services: PropTypes.object,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ])\n};\n\nmodule.exports = ServicesProvider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ServicesProvider = require('./ServicesProvider');\nconst useServices = require('./useServices');\n\nmodule.exports = {\n ServicesProvider,\n useServices\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst ServicesContext = require('./ServicesContext');\n\nconst useServices = () => {\n return React.useContext(ServicesContext);\n};\n\nmodule.exports = useServices;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\nconst ShellTransport = require('./ShellTransport');\n\nfunction Shell() {\n let active = false;\n let error = null;\n let starting = false;\n let transport = null;\n\n const events = new EventEmitter();\n\n function onTransportInit() {\n active = true;\n error = null;\n starting = false;\n onStateChanged();\n }\n function onTransportInitError(err) {\n console.error(err);\n active = false;\n error = new Error(err);\n starting = false;\n onStateChanged();\n transport = null;\n }\n\n function onStateChanged() {\n events.emit('stateChanged');\n }\n\n Object.defineProperties(this, {\n active: {\n configurable: false,\n enumerable: true,\n get: function() {\n return active;\n }\n },\n error: {\n configurable: false,\n enumerable: true,\n get: function() {\n return error;\n }\n },\n starting: {\n configurable: false,\n enumerable: true,\n get: function() {\n return starting;\n }\n },\n transport: {\n configurable: false,\n enumerable: true,\n get: function() {\n return transport;\n }\n }\n });\n\n this.start = function() {\n if (active || error instanceof Error || starting) {\n return;\n }\n\n active = false;\n starting = true;\n transport = new ShellTransport();\n transport.on('init', onTransportInit);\n transport.on('init-error', onTransportInitError);\n onStateChanged();\n };\n this.stop = function() {\n active = false;\n error = null;\n starting = false;\n onStateChanged();\n };\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n}\n\nmodule.exports = Shell;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\n\nlet shellAvailable = false;\nconst shellEvents = new EventEmitter();\n\nconst QtMsgTypes = {\n signal: 1,\n propertyUpdate: 2,\n init: 3,\n idle: 4,\n debug: 5,\n invokeMethod: 6,\n connectToSignal: 7,\n disconnectFromSignal: 8,\n setProperty: 9,\n response: 10,\n};\nconst QtObjId = 'transport'; // the ID of our transport object\n\nwindow.initShellComm = function () {\n delete window.initShellComm;\n shellEvents.emit('availabilityChanged');\n};\n\nconst initialize = () => {\n if(!window.qt) return Promise.reject('Qt API not found');\n return new Promise((resolve) => {\n function onShellAvailabilityChanged() {\n shellEvents.off('availabilityChanged', onShellAvailabilityChanged);\n shellAvailable = true;\n resolve();\n }\n if (shellAvailable) {\n onShellAvailabilityChanged();\n } else {\n shellEvents.on('availabilityChanged', onShellAvailabilityChanged);\n }\n });\n};\n\nfunction ShellTransport() {\n const events = new EventEmitter();\n\n this.props = {};\n\n const shell = this;\n initialize()\n .then(() => {\n const transport = window.qt && window.qt.webChannelTransport;\n if (!transport) throw 'no viable transport found (qt.webChannelTransport)';\n\n let id = 0;\n function send(msg) {\n msg.id = id++;\n transport.send(JSON.stringify(msg));\n }\n\n transport.onmessage = function (message) {\n const msg = JSON.parse(message.data);\n if (msg.id === 0) {\n const obj = msg.data[QtObjId];\n\n obj.properties.slice(1).forEach(function (prop) {\n shell.props[prop[1]] = prop[3];\n });\n if (typeof shell.props.shellVersion === 'string') {\n shell.shellVersionArr = (\n shell.props.shellVersion.match(/(\\d+)\\.(\\d+)\\.(\\d+)/) || []\n )\n .slice(1, 4)\n .map(Number);\n }\n events.emit('received-props', shell.props);\n\n obj.signals.forEach(function (sig) {\n send({\n type: QtMsgTypes.connectToSignal,\n object: QtObjId,\n signal: sig[1],\n });\n });\n\n const onEvent = obj.methods.filter(function (x) {\n return x[0] === 'onEvent';\n })[0];\n\n shell.send = function (ev, args) {\n send({\n type: QtMsgTypes.invokeMethod,\n object: QtObjId,\n method: onEvent[1],\n args: [ev, args || {}],\n });\n };\n\n shell.send('app-ready', {}); // signal that we're ready to take events\n }\n\n if (msg.object === QtObjId && msg.type === QtMsgTypes.signal)\n events.emit(msg.args[0], msg.args[1]);\n events.emit('init');\n };\n send({ type: QtMsgTypes.init });\n }) .catch((error) => {\n events.emit('init-error', error);\n });\n\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n this.removeAllListeners = function() {\n events.removeAllListeners();\n };\n}\n\nmodule.exports = ShellTransport;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Shell = require('./Shell');\n\nmodule.exports = Shell;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Chromecast = require('./Chromecast');\nconst Core = require('./Core');\nconst DragAndDrop = require('./DragAndDrop');\nconst KeyboardShortcuts = require('./KeyboardShortcuts');\nconst { ServicesProvider, useServices } = require('./ServicesContext');\nconst Shell = require('./Shell');\n\nmodule.exports = {\n Chromecast,\n Core,\n DragAndDrop,\n KeyboardShortcuts,\n ServicesProvider,\n useServices,\n Shell\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","module.exports = parseRange\nmodule.exports.parse = parseRange\nmodule.exports.compose = composeRange\n\nfunction composeRange (range) {\n return range\n .reduce((acc, cur, idx, arr) => {\n if (idx === 0 || cur !== arr[idx - 1] + 1) acc.push([])\n acc[acc.length - 1].push(cur)\n return acc\n }, [])\n .map((cur) => {\n return cur.length > 1 ? `${cur[0]}-${cur[cur.length - 1]}` : `${cur[0]}`\n })\n}\n\nfunction parseRange (range) {\n const generateRange = (start, end = start) => Array.from({ length: end - start + 1 }, (cur, idx) => idx + start)\n\n return range\n .reduce((acc, cur, idx, arr) => {\n const r = cur.split('-').map(cur => parseInt(cur))\n return acc.concat(generateRange(...r))\n }, [])\n}\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.bowser=t():e.bowser=t()}(this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=90)}({17:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||\"\"},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||\"\"},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return}},e.getMacOSVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return\"Leopard\";case 6:return\"Snow Leopard\";case 7:return\"Lion\";case 8:return\"Mountain Lion\";case 9:return\"Mavericks\";case 10:return\"Yosemite\";case 11:return\"El Capitan\";case 12:return\"Sierra\";case 13:return\"High Sierra\";case 14:return\"Mojave\";case 15:return\"Catalina\";default:return}},e.getAndroidVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?\"Cupcake\":1===t[0]&&t[1]>=6?\"Donut\":2===t[0]&&t[1]<2?\"Eclair\":2===t[0]&&2===t[1]?\"Froyo\":2===t[0]&&t[1]>2?\"Gingerbread\":3===t[0]?\"Honeycomb\":4===t[0]&&t[1]<1?\"Ice Cream Sandwich\":4===t[0]&&t[1]<4?\"Jelly Bean\":4===t[0]&&t[1]>=4?\"KitKat\":5===t[0]?\"Lollipop\":6===t[0]?\"Marshmallow\":7===t[0]?\"Nougat\":8===t[0]?\"Oreo\":9===t[0]?\"Pie\":void 0},e.getVersionPrecision=function(e){return e.split(\".\").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(i,s),o=0,u=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),n=t+new Array(r+1).join(\".0\");return e.map(n.split(\".\"),(function(e){return new Array(20-e.length).join(\"0\")+e})).reverse()}));for(n&&(o=a-Math.min(i,s)),a-=1;a>=o;){if(u[0][a]>u[1][a])return 1;if(u[0][a]===u[1][a]){if(a===o)return 0;a-=1}else if(u[0][a]1?i-1:0),a=1;a0){var a=Object.keys(r),u=o.default.find(a,(function(e){return t.isOS(e)}));if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var c=o.default.find(a,(function(e){return t.isPlatform(e)}));if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f}}if(s>0){var l=Object.keys(i),h=o.default.find(l,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if(\"string\"==typeof i)return\">\"===e[0]||\"<\"===e[0]?(r=e.substr(1),\"=\"===e[1]?(n=!0,r=e.substr(2)):t=[],\">\"===e[0]?t.push(1):t.push(-1)):\"=\"===e[0]?r=e.substr(1):\"~\"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n};var s=/version\\/(\\d+(\\.?_?\\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:\"Googlebot\"},r=i.default.getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:\"Opera\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:opera)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\\/|opios/i],describe:function(e){var t={name:\"Opera\"},r=i.default.getFirstMatch(/(?:opr|opios)[\\s/](\\S+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:\"Samsung Internet for Android\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:\"NAVER Whale Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:whale)[\\s/](\\d+(?:\\.\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:\"MZ Browser\"},r=i.default.getFirstMatch(/(?:MZBrowser)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:\"Focus\"},r=i.default.getFirstMatch(/(?:focus)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:\"Swing\"},r=i.default.getFirstMatch(/(?:swing)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:\"Opera Coast\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:coast)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\\/\\d+(?:.?_?\\d+)+/i],describe:function(e){var t={name:\"Opera Touch\"},r=i.default.getFirstMatch(/(?:opt)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:\"Yandex Browser\"},r=i.default.getFirstMatch(/(?:yabrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:\"UC Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:ucbrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:\"Maxthon\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:\"Epiphany\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:epiphany)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:\"Puffin\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:puffin)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:\"Sleipnir\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:sleipnir)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:\"K-Meleon\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:k-meleon)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:\"WeChat\"},r=i.default.getFirstMatch(/(?:micromessenger)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?\"QQ Browser Lite\":\"QQ Browser\"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:\"Internet Explorer\"},r=i.default.getFirstMatch(/(?:msie |rv:)(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\\sedg\\//i],describe:function(e){var t={name:\"Microsoft Edge\"},r=i.default.getFirstMatch(/\\sedg\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:\"Microsoft Edge\"},r=i.default.getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:\"Vivaldi\"},r=i.default.getFirstMatch(/vivaldi\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:\"SeaMonkey\"},r=i.default.getFirstMatch(/seamonkey\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:\"Sailfish\"},r=i.default.getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:\"Amazon Silk\"},r=i.default.getFirstMatch(/silk\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:\"PhantomJS\"},r=i.default.getFirstMatch(/phantomjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:\"SlimerJS\"},r=i.default.getFirstMatch(/slimerjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t={name:\"BlackBerry\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:\"WebOS Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:\"Bada\"},r=i.default.getFirstMatch(/dolfin\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:\"Tizen\"},r=i.default.getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:\"QupZilla\"},r=i.default.getFirstMatch(/(?:qupzilla)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:\"Firefox\"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:\"Electron\"},r=i.default.getFirstMatch(/(?:electron)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:\"Miui\"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:\"Chromium\"},r=i.default.getFirstMatch(/(?:chromium)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:\"Chrome\"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:\"Google Search\"},r=i.default.getFirstMatch(/(?:GSA)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:\"Android Browser\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:\"PlayStation 4\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:\"Safari\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search(\"\\\\(\")?/^(.*)\\/(.*)[ \\t]\\((.*)/:/^(.*)\\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default},93:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/Roku\\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\\/DVP-(\\d+\\.\\d+)/i,e);return{name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\\/)(\\d[\\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\\d+(\\.?_?\\d+)+)/i,e).replace(/[_\\s]/g,\".\"),r=i.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i,e).replace(/[_\\s]/g,\".\");return{name:s.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\\s/-](\\d+(\\.\\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\\/(\\d+(\\.\\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\\d+\\/(\\d+([_\\s]\\d+)*)/i,e)||i.default.getFirstMatch(/\\bbb(\\d+)/i,e);return{name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default},94:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/googlebot/i],describe:function(){return{type:\"bot\",vendor:\"Google\"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&\"Nova\",r={type:s.PLATFORMS_MAP.mobile,vendor:\"Huawei\"};return t&&(r.model=t),r}},{test:[/nexus\\s*(?:7|8|9|10).*/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Nexus\"}}},{test:[/ipad/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/kftt build/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Amazon\",model:\"Kindle Fire HD 7\"}}},{test:[/silk/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Amazon\"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:s.PLATFORMS_MAP.mobile,vendor:\"Apple\",model:t}}},{test:[/nexus\\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"Nexus\"}}},{test:[/[^-]mobi/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"blackberry\"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"BlackBerry\"}}},{test:function(e){return\"bada\"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"windows phone\"===e.getBrowserName()},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"Microsoft\"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(\".\")[0]);return\"android\"===e.getOSName(!0)&&t>=3},describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){return\"android\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"macos\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop,vendor:\"Apple\"}}},{test:function(e){return\"windows\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return\"linux\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return\"playstation 4\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}},{test:function(e){return\"roku\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:function(e){return\"microsoft edge\"===e.getBrowserName(!0)},describe:function(e){if(/\\sedg\\//i.test(e))return{name:s.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\\/(\\d+(\\.?_?\\d+)+)/i,e);return{name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:s.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:s.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\\/537\\.36/i],describe:function(){return{name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default}})}));","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","const colorString = require('color-string');\nconst convert = require('color-convert');\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...args) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (args.length > 0) {\n\t\t\treturn new Color(args, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...args) {\n\t\tlet color = args[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(args, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nmodule.exports = Color;\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","module.exports = function deepFreeze (o) {\n Object.freeze(o);\n\n Object.getOwnPropertyNames(o).forEach(function (prop) {\n if (o.hasOwnProperty(prop)\n && o[prop] !== null\n && (typeof o[prop] === \"object\" || typeof o[prop] === \"function\")\n && !Object.isFrozen(o[prop])) {\n deepFreeze(o[prop]);\n }\n });\n \n return o;\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = filterInvalidDOMProps;\n\nvar _htmlAttributes = require(\"html-attributes\");\n\nvar _htmlAttributes2 = _interopRequireDefault(_htmlAttributes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar eventProps = {\n\tonCopy: true,\n\tonCut: true,\n\tonPaste: true,\n\tonLoad: true,\n\tonError: true,\n\tonWheel: true,\n\tonScroll: true,\n\tonCompositionEnd: true,\n\tonCompositionStart: true,\n\tonCompositionUpdate: true,\n\tonKeyDown: true,\n\tonKeyPress: true,\n\tonKeyUp: true,\n\tonFocus: true,\n\tonBlur: true,\n\tonChange: true,\n\tonInput: true,\n\tonSubmit: true,\n\tonClick: true,\n\tonContextMenu: true,\n\tonDoubleClick: true,\n\tonDrag: true,\n\tonDragEnd: true,\n\tonDragEnter: true,\n\tonDragExit: true,\n\tonDragLeave: true,\n\tonDragOver: true,\n\tonDragStart: true,\n\tonDrop: true,\n\tonMouseDown: true,\n\tonMouseEnter: true,\n\tonMouseLeave: true,\n\tonMouseMove: true,\n\tonMouseOut: true,\n\tonMouseOver: true,\n\tonMouseUp: true,\n\tonSelect: true,\n\tonTouchCancel: true,\n\tonTouchEnd: true,\n\tonTouchMove: true,\n\tonTouchStart: true,\n\tonAnimationStart: true,\n\tonAnimationEnd: true,\n\tonAnimationIteration: true,\n\tonTransitionEnd: true\n};\n\nfunction isValidDOMProp(prop) {\n\treturn eventProps[prop] || _htmlAttributes2.default[prop] || /^(data|aria)-/.test(prop);\n}\n\nfunction filterInvalidDOMProps(props) {\n\tvar domProps = {};\n\tfor (var prop in props) {\n\t\tif (props.hasOwnProperty(prop) && isValidDOMProp(prop)) {\n\t\t\tdomProps[prop] = props[prop];\n\t\t}\n\t}\n\treturn domProps;\n}","var hat = module.exports = function (bits, base) {\n if (!base) base = 16;\n if (bits === undefined) bits = 128;\n if (bits <= 0) return '0';\n \n var digits = Math.log(Math.pow(2, bits)) / Math.log(base);\n for (var i = 2; digits === Infinity; i *= 2) {\n digits = Math.log(Math.pow(2, bits / i)) / Math.log(base) * i;\n }\n \n var rem = digits - Math.floor(digits);\n \n var res = '';\n \n for (var i = 0; i < Math.floor(digits); i++) {\n var x = Math.floor(Math.random() * base).toString(base);\n res = x + res;\n }\n \n if (rem) {\n var b = Math.pow(base, rem);\n var x = Math.floor(Math.random() * b).toString(base);\n res = x + res;\n }\n \n var parsed = parseInt(res, base);\n if (parsed !== Infinity && parsed >= Math.pow(2, bits)) {\n return hat(bits, base)\n }\n else return res;\n};\n\nhat.rack = function (bits, base, expandBy) {\n var fn = function (data) {\n var iters = 0;\n do {\n if (iters ++ > 10) {\n if (expandBy) bits += expandBy;\n else throw new Error('too many ID collisions, use more bits')\n }\n \n var id = hat(bits, base);\n } while (Object.hasOwnProperty.call(hats, id));\n \n hats[id] = data;\n return id;\n };\n var hats = fn.hats = {};\n \n fn.get = function (id) {\n return fn.hats[id];\n };\n \n fn.set = function (id, value) {\n fn.hats[id] = value;\n return fn;\n };\n \n fn.bits = bits || 128;\n fn.base = base || 16;\n return fn;\n};\n","typeof window !== \"undefined\" &&\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Hls\"] = factory();\n\telse\n\t\troot[\"Hls\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./src/hls.ts\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./node_modules/eventemitter3/index.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/eventemitter3/index.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif (true) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n\n/***/ \"./node_modules/url-toolkit/src/url-toolkit.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/url-toolkit/src/url-toolkit.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// see https://tools.ietf.org/html/rfc1808\n\n(function (root) {\n var URL_REGEX =\n /^(?=((?:[a-zA-Z0-9+\\-.]+:)?))\\1(?=((?:\\/\\/[^\\/?#]*)?))\\2(?=((?:(?:[^?#\\/]*\\/)*[^;?#\\/]*)?))\\3((?:;[^?#]*)?)(\\?[^#]*)?(#[^]*)?$/;\n var FIRST_SEGMENT_REGEX = /^(?=([^\\/?#]*))\\1([^]*)$/;\n var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/)[^\\/]*(?=\\/)/g;\n\n var URLToolkit = {\n // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n // E.g\n // With opts.alwaysNormalize = false (default, spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n // With opts.alwaysNormalize = true (not spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n buildAbsoluteURL: function (baseURL, relativeURL, opts) {\n opts = opts || {};\n // remove any remaining space and CRLF\n baseURL = baseURL.trim();\n relativeURL = relativeURL.trim();\n if (!relativeURL) {\n // 2a) If the embedded URL is entirely empty, it inherits the\n // entire base URL (i.e., is set equal to the base URL)\n // and we are done.\n if (!opts.alwaysNormalize) {\n return baseURL;\n }\n var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n if (!basePartsForNormalise) {\n throw new Error('Error trying to parse base URL.');\n }\n basePartsForNormalise.path = URLToolkit.normalizePath(\n basePartsForNormalise.path\n );\n return URLToolkit.buildURLFromParts(basePartsForNormalise);\n }\n var relativeParts = URLToolkit.parseURL(relativeURL);\n if (!relativeParts) {\n throw new Error('Error trying to parse relative URL.');\n }\n if (relativeParts.scheme) {\n // 2b) If the embedded URL starts with a scheme name, it is\n // interpreted as an absolute URL and we are done.\n if (!opts.alwaysNormalize) {\n return relativeURL;\n }\n relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n return URLToolkit.buildURLFromParts(relativeParts);\n }\n var baseParts = URLToolkit.parseURL(baseURL);\n if (!baseParts) {\n throw new Error('Error trying to parse base URL.');\n }\n if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\n // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\n // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\n var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n baseParts.netLoc = pathParts[1];\n baseParts.path = pathParts[2];\n }\n if (baseParts.netLoc && !baseParts.path) {\n baseParts.path = '/';\n }\n var builtParts = {\n // 2c) Otherwise, the embedded URL inherits the scheme of\n // the base URL.\n scheme: baseParts.scheme,\n netLoc: relativeParts.netLoc,\n path: null,\n params: relativeParts.params,\n query: relativeParts.query,\n fragment: relativeParts.fragment,\n };\n if (!relativeParts.netLoc) {\n // 3) If the embedded URL's is non-empty, we skip to\n // Step 7. Otherwise, the embedded URL inherits the \n // (if any) of the base URL.\n builtParts.netLoc = baseParts.netLoc;\n // 4) If the embedded URL path is preceded by a slash \"/\", the\n // path is not relative and we skip to Step 7.\n if (relativeParts.path[0] !== '/') {\n if (!relativeParts.path) {\n // 5) If the embedded URL path is empty (and not preceded by a\n // slash), then the embedded URL inherits the base URL path\n builtParts.path = baseParts.path;\n // 5a) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and\n if (!relativeParts.params) {\n builtParts.params = baseParts.params;\n // 5b) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and we skip to step 7.\n if (!relativeParts.query) {\n builtParts.query = baseParts.query;\n }\n }\n } else {\n // 6) The last segment of the base URL's path (anything\n // following the rightmost slash \"/\", or the entire path if no\n // slash is present) is removed and the embedded URL's path is\n // appended in its place.\n var baseURLPath = baseParts.path;\n var newPath =\n baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) +\n relativeParts.path;\n builtParts.path = URLToolkit.normalizePath(newPath);\n }\n }\n }\n if (builtParts.path === null) {\n builtParts.path = opts.alwaysNormalize\n ? URLToolkit.normalizePath(relativeParts.path)\n : relativeParts.path;\n }\n return URLToolkit.buildURLFromParts(builtParts);\n },\n parseURL: function (url) {\n var parts = URL_REGEX.exec(url);\n if (!parts) {\n return null;\n }\n return {\n scheme: parts[1] || '',\n netLoc: parts[2] || '',\n path: parts[3] || '',\n params: parts[4] || '',\n query: parts[5] || '',\n fragment: parts[6] || '',\n };\n },\n normalizePath: function (path) {\n // The following operations are\n // then applied, in order, to the new path:\n // 6a) All occurrences of \"./\", where \".\" is a complete path\n // segment, are removed.\n // 6b) If the path ends with \".\" as a complete path segment,\n // that \".\" is removed.\n path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');\n // 6c) All occurrences of \"/../\", where is a\n // complete path segment not equal to \"..\", are removed.\n // Removal of these path segments is performed iteratively,\n // removing the leftmost matching pattern on each iteration,\n // until no matching pattern remains.\n // 6d) If the path ends with \"/..\", where is a\n // complete path segment not equal to \"..\", that\n // \"/..\" is removed.\n while (\n path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length\n ) {}\n return path.split('').reverse().join('');\n },\n buildURLFromParts: function (parts) {\n return (\n parts.scheme +\n parts.netLoc +\n parts.path +\n parts.params +\n parts.query +\n parts.fragment\n );\n },\n };\n\n if (true)\n module.exports = URLToolkit;\n else {}\n})(this);\n\n\n/***/ }),\n\n/***/ \"./node_modules/webworkify-webpack/index.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/webworkify-webpack/index.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction webpackBootstrapFunc (modules) {\n/******/ // The module cache\n/******/ var installedModules = {};\n\n/******/ // The require function\n/******/ function __webpack_require__(moduleId) {\n\n/******/ // Check if module is in cache\n/******/ if(installedModules[moduleId])\n/******/ return installedModules[moduleId].exports;\n\n/******/ // Create a new module (and put it into the cache)\n/******/ var module = installedModules[moduleId] = {\n/******/ i: moduleId,\n/******/ l: false,\n/******/ exports: {}\n/******/ };\n\n/******/ // Execute the module function\n/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ // Flag the module as loaded\n/******/ module.l = true;\n\n/******/ // Return the exports of the module\n/******/ return module.exports;\n/******/ }\n\n/******/ // expose the modules object (__webpack_modules__)\n/******/ __webpack_require__.m = modules;\n\n/******/ // expose the module cache\n/******/ __webpack_require__.c = installedModules;\n\n/******/ // identity function for calling harmony imports with the correct context\n/******/ __webpack_require__.i = function(value) { return value; };\n\n/******/ // define getter function for harmony exports\n/******/ __webpack_require__.d = function(exports, name, getter) {\n/******/ if(!__webpack_require__.o(exports, name)) {\n/******/ Object.defineProperty(exports, name, {\n/******/ configurable: false,\n/******/ enumerable: true,\n/******/ get: getter\n/******/ });\n/******/ }\n/******/ };\n\n/******/ // define __esModule on exports\n/******/ __webpack_require__.r = function(exports) {\n/******/ Object.defineProperty(exports, '__esModule', { value: true });\n/******/ };\n\n/******/ // getDefaultExport function for compatibility with non-harmony modules\n/******/ __webpack_require__.n = function(module) {\n/******/ var getter = module && module.__esModule ?\n/******/ function getDefault() { return module['default']; } :\n/******/ function getModuleExports() { return module; };\n/******/ __webpack_require__.d(getter, 'a', getter);\n/******/ return getter;\n/******/ };\n\n/******/ // Object.prototype.hasOwnProperty.call\n/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n/******/ // __webpack_public_path__\n/******/ __webpack_require__.p = \"/\";\n\n/******/ // on error function for async loading\n/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n var f = __webpack_require__(__webpack_require__.s = ENTRY_MODULE)\n return f.default || f // try to call default if defined to also support babel esmodule exports\n}\n\nvar moduleNameReqExp = '[\\\\.|\\\\-|\\\\+|\\\\w|\\/|@]+'\nvar dependencyRegExp = '\\\\(\\\\s*(\\/\\\\*.*?\\\\*\\/)?\\\\s*.*?(' + moduleNameReqExp + ').*?\\\\)' // additional chars when output.pathinfo is true\n\n// http://stackoverflow.com/a/2593661/130442\nfunction quoteRegExp (str) {\n return (str + '').replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&')\n}\n\nfunction isNumeric(n) {\n return !isNaN(1 * n); // 1 * n converts integers, integers as string (\"123\"), 1e3 and \"1e3\" to integers and strings to NaN\n}\n\nfunction getModuleDependencies (sources, module, queueName) {\n var retval = {}\n retval[queueName] = []\n\n var fnString = module.toString()\n var wrapperSignature = fnString.match(/^function\\s?\\w*\\(\\w+,\\s*\\w+,\\s*(\\w+)\\)/)\n if (!wrapperSignature) return retval\n var webpackRequireName = wrapperSignature[1]\n\n // main bundle deps\n var re = new RegExp('(\\\\\\\\n|\\\\W)' + quoteRegExp(webpackRequireName) + dependencyRegExp, 'g')\n var match\n while ((match = re.exec(fnString))) {\n if (match[3] === 'dll-reference') continue\n retval[queueName].push(match[3])\n }\n\n // dll deps\n re = new RegExp('\\\\(' + quoteRegExp(webpackRequireName) + '\\\\(\"(dll-reference\\\\s(' + moduleNameReqExp + '))\"\\\\)\\\\)' + dependencyRegExp, 'g')\n while ((match = re.exec(fnString))) {\n if (!sources[match[2]]) {\n retval[queueName].push(match[1])\n sources[match[2]] = __webpack_require__(match[1]).m\n }\n retval[match[2]] = retval[match[2]] || []\n retval[match[2]].push(match[4])\n }\n\n // convert 1e3 back to 1000 - this can be important after uglify-js converted 1000 to 1e3\n var keys = Object.keys(retval);\n for (var i = 0; i < keys.length; i++) {\n for (var j = 0; j < retval[keys[i]].length; j++) {\n if (isNumeric(retval[keys[i]][j])) {\n retval[keys[i]][j] = 1 * retval[keys[i]][j];\n }\n }\n }\n\n return retval\n}\n\nfunction hasValuesInQueues (queues) {\n var keys = Object.keys(queues)\n return keys.reduce(function (hasValues, key) {\n return hasValues || queues[key].length > 0\n }, false)\n}\n\nfunction getRequiredModules (sources, moduleId) {\n var modulesQueue = {\n main: [moduleId]\n }\n var requiredModules = {\n main: []\n }\n var seenModules = {\n main: {}\n }\n\n while (hasValuesInQueues(modulesQueue)) {\n var queues = Object.keys(modulesQueue)\n for (var i = 0; i < queues.length; i++) {\n var queueName = queues[i]\n var queue = modulesQueue[queueName]\n var moduleToCheck = queue.pop()\n seenModules[queueName] = seenModules[queueName] || {}\n if (seenModules[queueName][moduleToCheck] || !sources[queueName][moduleToCheck]) continue\n seenModules[queueName][moduleToCheck] = true\n requiredModules[queueName] = requiredModules[queueName] || []\n requiredModules[queueName].push(moduleToCheck)\n var newModules = getModuleDependencies(sources, sources[queueName][moduleToCheck], queueName)\n var newModulesKeys = Object.keys(newModules)\n for (var j = 0; j < newModulesKeys.length; j++) {\n modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]] || []\n modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]].concat(newModules[newModulesKeys[j]])\n }\n }\n }\n\n return requiredModules\n}\n\nmodule.exports = function (moduleId, options) {\n options = options || {}\n var sources = {\n main: __webpack_require__.m\n }\n\n var requiredModules = options.all ? { main: Object.keys(sources.main) } : getRequiredModules(sources, moduleId)\n\n var src = ''\n\n Object.keys(requiredModules).filter(function (m) { return m !== 'main' }).forEach(function (module) {\n var entryModule = 0\n while (requiredModules[module][entryModule]) {\n entryModule++\n }\n requiredModules[module].push(entryModule)\n sources[module][entryModule] = '(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })'\n src = src + 'var ' + module + ' = (' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(entryModule)) + ')({' + requiredModules[module].map(function (id) { return '' + JSON.stringify(id) + ': ' + sources[module][id].toString() }).join(',') + '});\\n'\n })\n\n src = src + 'new ((' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(moduleId)) + ')({' + requiredModules.main.map(function (id) { return '' + JSON.stringify(id) + ': ' + sources.main[id].toString() }).join(',') + '}))(self);'\n\n var blob = new window.Blob([src], { type: 'text/javascript' })\n if (options.bare) { return blob }\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL\n\n var workerUrl = URL.createObjectURL(blob)\n var worker = new window.Worker(workerUrl)\n worker.objectURL = workerUrl\n\n return worker\n}\n\n\n/***/ }),\n\n/***/ \"./src/config.ts\":\n/*!***********************!*\\\n !*** ./src/config.ts ***!\n \\***********************/\n/*! exports provided: hlsDefaultConfig, mergeConfig, enableStreamingMode */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hlsDefaultConfig\", function() { return hlsDefaultConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeConfig\", function() { return mergeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enableStreamingMode\", function() { return enableStreamingMode; });\n/* harmony import */ var _controller_abr_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./controller/abr-controller */ \"./src/controller/abr-controller.ts\");\n/* harmony import */ var _controller_audio_stream_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./controller/audio-stream-controller */ \"./src/controller/audio-stream-controller.ts\");\n/* harmony import */ var _controller_audio_track_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./controller/audio-track-controller */ \"./src/controller/audio-track-controller.ts\");\n/* harmony import */ var _controller_subtitle_stream_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./controller/subtitle-stream-controller */ \"./src/controller/subtitle-stream-controller.ts\");\n/* harmony import */ var _controller_subtitle_track_controller__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./controller/subtitle-track-controller */ \"./src/controller/subtitle-track-controller.ts\");\n/* harmony import */ var _controller_buffer_controller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./controller/buffer-controller */ \"./src/controller/buffer-controller.ts\");\n/* harmony import */ var _controller_timeline_controller__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./controller/timeline-controller */ \"./src/controller/timeline-controller.ts\");\n/* harmony import */ var _controller_cap_level_controller__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./controller/cap-level-controller */ \"./src/controller/cap-level-controller.ts\");\n/* harmony import */ var _controller_fps_controller__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./controller/fps-controller */ \"./src/controller/fps-controller.ts\");\n/* harmony import */ var _controller_eme_controller__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./controller/eme-controller */ \"./src/controller/eme-controller.ts\");\n/* harmony import */ var _controller_cmcd_controller__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./controller/cmcd-controller */ \"./src/controller/cmcd-controller.ts\");\n/* harmony import */ var _utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utils/xhr-loader */ \"./src/utils/xhr-loader.ts\");\n/* harmony import */ var _utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/fetch-loader */ \"./src/utils/fetch-loader.ts\");\n/* harmony import */ var _utils_cues__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/cues */ \"./src/utils/cues.ts\");\n/* harmony import */ var _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils/mediakeys-helper */ \"./src/utils/mediakeys-helper.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utils/logger */ \"./src/utils/logger.ts\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// If possible, keep hlsDefaultConfig shallow\n// It is cloned whenever a new Hls instance is created, by keeping the config\n// shallow the properties are cloned, and we don't end up manipulating the default\nvar hlsDefaultConfig = _objectSpread(_objectSpread({\n autoStartLoad: true,\n // used by stream-controller\n startPosition: -1,\n // used by stream-controller\n defaultAudioCodec: undefined,\n // used by stream-controller\n debug: false,\n // used by logger\n capLevelOnFPSDrop: false,\n // used by fps-controller\n capLevelToPlayerSize: false,\n // used by cap-level-controller\n ignoreDevicePixelRatio: false,\n // used by cap-level-controller\n initialLiveManifestSize: 1,\n // used by stream-controller\n maxBufferLength: 30,\n // used by stream-controller\n backBufferLength: Infinity,\n // used by buffer-controller\n maxBufferSize: 60 * 1000 * 1000,\n // used by stream-controller\n maxBufferHole: 0.1,\n // used by stream-controller\n highBufferWatchdogPeriod: 2,\n // used by stream-controller\n nudgeOffset: 0.1,\n // used by stream-controller\n nudgeMaxRetry: 3,\n // used by stream-controller\n maxFragLookUpTolerance: 0.25,\n // used by stream-controller\n liveSyncDurationCount: 3,\n // used by latency-controller\n liveMaxLatencyDurationCount: Infinity,\n // used by latency-controller\n liveSyncDuration: undefined,\n // used by latency-controller\n liveMaxLatencyDuration: undefined,\n // used by latency-controller\n maxLiveSyncPlaybackRate: 1,\n // used by latency-controller\n liveDurationInfinity: false,\n // used by buffer-controller\n liveBackBufferLength: null,\n // used by buffer-controller\n maxMaxBufferLength: 600,\n // used by stream-controller\n enableWorker: true,\n // used by demuxer\n enableSoftwareAES: true,\n // used by decrypter\n manifestLoadingTimeOut: 10000,\n // used by playlist-loader\n manifestLoadingMaxRetry: 1,\n // used by playlist-loader\n manifestLoadingRetryDelay: 1000,\n // used by playlist-loader\n manifestLoadingMaxRetryTimeout: 64000,\n // used by playlist-loader\n startLevel: undefined,\n // used by level-controller\n levelLoadingTimeOut: 10000,\n // used by playlist-loader\n levelLoadingMaxRetry: 4,\n // used by playlist-loader\n levelLoadingRetryDelay: 1000,\n // used by playlist-loader\n levelLoadingMaxRetryTimeout: 64000,\n // used by playlist-loader\n fragLoadingTimeOut: 20000,\n // used by fragment-loader\n fragLoadingMaxRetry: 6,\n // used by fragment-loader\n fragLoadingRetryDelay: 1000,\n // used by fragment-loader\n fragLoadingMaxRetryTimeout: 64000,\n // used by fragment-loader\n startFragPrefetch: false,\n // used by stream-controller\n fpsDroppedMonitoringPeriod: 5000,\n // used by fps-controller\n fpsDroppedMonitoringThreshold: 0.2,\n // used by fps-controller\n appendErrorMaxRetry: 3,\n // used by buffer-controller\n loader: _utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n // loader: FetchLoader,\n fLoader: undefined,\n // used by fragment-loader\n pLoader: undefined,\n // used by playlist-loader\n xhrSetup: undefined,\n // used by xhr-loader\n licenseXhrSetup: undefined,\n // used by eme-controller\n licenseResponseCallback: undefined,\n // used by eme-controller\n abrController: _controller_abr_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n bufferController: _controller_buffer_controller__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n capLevelController: _controller_cap_level_controller__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n fpsController: _controller_fps_controller__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n stretchShortVideoTrack: false,\n // used by mp4-remuxer\n maxAudioFramesDrift: 1,\n // used by mp4-remuxer\n forceKeyFrameOnDiscontinuity: true,\n // used by ts-demuxer\n abrEwmaFastLive: 3,\n // used by abr-controller\n abrEwmaSlowLive: 9,\n // used by abr-controller\n abrEwmaFastVoD: 3,\n // used by abr-controller\n abrEwmaSlowVoD: 9,\n // used by abr-controller\n abrEwmaDefaultEstimate: 5e5,\n // 500 kbps // used by abr-controller\n abrBandWidthFactor: 0.95,\n // used by abr-controller\n abrBandWidthUpFactor: 0.7,\n // used by abr-controller\n abrMaxWithRealBitrate: false,\n // used by abr-controller\n maxStarvationDelay: 4,\n // used by abr-controller\n maxLoadingDelay: 4,\n // used by abr-controller\n minAutoBitrate: 0,\n // used by hls\n emeEnabled: false,\n // used by eme-controller\n widevineLicenseUrl: undefined,\n // used by eme-controller\n drmSystemOptions: {},\n // used by eme-controller\n requestMediaKeySystemAccessFunc: _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_14__[\"requestMediaKeySystemAccess\"],\n // used by eme-controller\n testBandwidth: true,\n progressive: false,\n lowLatencyMode: true,\n cmcd: undefined,\n enableDateRangeMetadataCues: true,\n enableEmsgMetadataCues: true,\n enableID3MetadataCues: true\n}, timelineConfig()), {}, {\n subtitleStreamController: true ? _controller_subtitle_stream_controller__WEBPACK_IMPORTED_MODULE_3__[\"SubtitleStreamController\"] : undefined,\n subtitleTrackController: true ? _controller_subtitle_track_controller__WEBPACK_IMPORTED_MODULE_4__[\"default\"] : undefined,\n timelineController: true ? _controller_timeline_controller__WEBPACK_IMPORTED_MODULE_6__[\"TimelineController\"] : undefined,\n audioStreamController: true ? _controller_audio_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : undefined,\n audioTrackController: true ? _controller_audio_track_controller__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : undefined,\n emeController: true ? _controller_eme_controller__WEBPACK_IMPORTED_MODULE_9__[\"default\"] : undefined,\n cmcdController: true ? _controller_cmcd_controller__WEBPACK_IMPORTED_MODULE_10__[\"default\"] : undefined\n});\n\nfunction timelineConfig() {\n return {\n cueHandler: _utils_cues__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n // used by timeline-controller\n enableWebVTT: true,\n // used by timeline-controller\n enableIMSC1: true,\n // used by timeline-controller\n enableCEA708Captions: true,\n // used by timeline-controller\n captionsTextTrack1Label: 'English',\n // used by timeline-controller\n captionsTextTrack1LanguageCode: 'en',\n // used by timeline-controller\n captionsTextTrack2Label: 'Spanish',\n // used by timeline-controller\n captionsTextTrack2LanguageCode: 'es',\n // used by timeline-controller\n captionsTextTrack3Label: 'Unknown CC',\n // used by timeline-controller\n captionsTextTrack3LanguageCode: '',\n // used by timeline-controller\n captionsTextTrack4Label: 'Unknown CC',\n // used by timeline-controller\n captionsTextTrack4LanguageCode: '',\n // used by timeline-controller\n renderTextTracksNatively: true\n };\n}\n\nfunction mergeConfig(defaultConfig, userConfig) {\n if ((userConfig.liveSyncDurationCount || userConfig.liveMaxLatencyDurationCount) && (userConfig.liveSyncDuration || userConfig.liveMaxLatencyDuration)) {\n throw new Error(\"Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration\");\n }\n\n if (userConfig.liveMaxLatencyDurationCount !== undefined && (userConfig.liveSyncDurationCount === undefined || userConfig.liveMaxLatencyDurationCount <= userConfig.liveSyncDurationCount)) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDurationCount\" must be greater than \"liveSyncDurationCount\"');\n }\n\n if (userConfig.liveMaxLatencyDuration !== undefined && (userConfig.liveSyncDuration === undefined || userConfig.liveMaxLatencyDuration <= userConfig.liveSyncDuration)) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDuration\" must be greater than \"liveSyncDuration\"');\n }\n\n return _extends({}, defaultConfig, userConfig);\n}\nfunction enableStreamingMode(config) {\n var currentLoader = config.loader;\n\n if (currentLoader !== _utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__[\"default\"] && currentLoader !== _utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__[\"default\"]) {\n // If a developer has configured their own loader, respect that choice\n _utils_logger__WEBPACK_IMPORTED_MODULE_15__[\"logger\"].log('[config]: Custom loader detected, cannot enable progressive streaming');\n config.progressive = false;\n } else {\n var canStreamProgressively = Object(_utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__[\"fetchSupported\"])();\n\n if (canStreamProgressively) {\n config.loader = _utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__[\"default\"];\n config.progressive = true;\n config.enableSoftwareAES = true;\n _utils_logger__WEBPACK_IMPORTED_MODULE_15__[\"logger\"].log('[config]: Progressive streaming enabled, using FetchLoader');\n }\n }\n}\n\n/***/ }),\n\n/***/ \"./src/controller/abr-controller.ts\":\n/*!******************************************!*\\\n !*** ./src/controller/abr-controller.ts ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _utils_ewma_bandwidth_estimator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/ewma-bandwidth-estimator */ \"./src/utils/ewma-bandwidth-estimator.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n\n\n\n\nvar AbrController = /*#__PURE__*/function () {\n function AbrController(hls) {\n this.hls = void 0;\n this.lastLoadedFragLevel = 0;\n this._nextAutoLevel = -1;\n this.timer = void 0;\n this.onCheck = this._abandonRulesCheck.bind(this);\n this.fragCurrent = null;\n this.partCurrent = null;\n this.bitrateTestDelay = 0;\n this.bwEstimator = void 0;\n this.hls = hls;\n var config = hls.config;\n this.bwEstimator = new _utils_ewma_bandwidth_estimator__WEBPACK_IMPORTED_MODULE_1__[\"default\"](config.abrEwmaSlowVoD, config.abrEwmaFastVoD, config.abrEwmaDefaultEstimate);\n this.registerListeners();\n }\n\n var _proto = AbrController.prototype;\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOADING, this.onFragLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOADING, this.onFragLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.clearTimer(); // @ts-ignore\n\n this.hls = this.onCheck = null;\n this.fragCurrent = this.partCurrent = null;\n };\n\n _proto.onFragLoading = function onFragLoading(event, data) {\n var frag = data.frag;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_5__[\"PlaylistLevelType\"].MAIN) {\n if (!this.timer) {\n var _data$part;\n\n this.fragCurrent = frag;\n this.partCurrent = (_data$part = data.part) != null ? _data$part : null;\n this.timer = self.setInterval(this.onCheck, 100);\n }\n }\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n var config = this.hls.config;\n\n if (data.details.live) {\n this.bwEstimator.update(config.abrEwmaSlowLive, config.abrEwmaFastLive);\n } else {\n this.bwEstimator.update(config.abrEwmaSlowVoD, config.abrEwmaFastVoD);\n }\n }\n /*\n This method monitors the download rate of the current fragment, and will downswitch if that fragment will not load\n quickly enough to prevent underbuffering\n */\n ;\n\n _proto._abandonRulesCheck = function _abandonRulesCheck() {\n var frag = this.fragCurrent,\n part = this.partCurrent,\n hls = this.hls;\n var autoLevelEnabled = hls.autoLevelEnabled,\n config = hls.config,\n media = hls.media;\n\n if (!frag || !media) {\n return;\n }\n\n var stats = part ? part.stats : frag.stats;\n var duration = part ? part.duration : frag.duration; // If loading has been aborted and not in lowLatencyMode, stop timer and return\n\n if (stats.aborted) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn('frag loader destroy or aborted, disarm abandonRules');\n this.clearTimer(); // reset forced auto level value so that next level will be selected\n\n this._nextAutoLevel = -1;\n return;\n } // This check only runs if we're in ABR mode and actually playing\n\n\n if (!autoLevelEnabled || media.paused || !media.playbackRate || !media.readyState) {\n return;\n }\n\n var requestDelay = performance.now() - stats.loading.start;\n var playbackRate = Math.abs(media.playbackRate); // In order to work with a stable bandwidth, only begin monitoring bandwidth after half of the fragment has been loaded\n\n if (requestDelay <= 500 * duration / playbackRate) {\n return;\n }\n\n var levels = hls.levels,\n minAutoLevel = hls.minAutoLevel;\n var level = levels[frag.level];\n var expectedLen = stats.total || Math.max(stats.loaded, Math.round(duration * level.maxBitrate / 8));\n var loadRate = Math.max(1, stats.bwEstimate ? stats.bwEstimate / 8 : stats.loaded * 1000 / requestDelay); // fragLoadDelay is an estimate of the time (in seconds) it will take to buffer the entire fragment\n\n var fragLoadedDelay = (expectedLen - stats.loaded) / loadRate;\n var pos = media.currentTime; // bufferStarvationDelay is an estimate of the amount time (in seconds) it will take to exhaust the buffer\n\n var bufferStarvationDelay = (_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(media, pos, config.maxBufferHole).end - pos) / playbackRate; // Attempt an emergency downswitch only if less than 2 fragment lengths are buffered, and the time to finish loading\n // the current fragment is greater than the amount of buffer we have left\n\n if (bufferStarvationDelay >= 2 * duration / playbackRate || fragLoadedDelay <= bufferStarvationDelay) {\n return;\n }\n\n var fragLevelNextLoadedDelay = Number.POSITIVE_INFINITY;\n var nextLoadLevel; // Iterate through lower level and try to find the largest one that avoids rebuffering\n\n for (nextLoadLevel = frag.level - 1; nextLoadLevel > minAutoLevel; nextLoadLevel--) {\n // compute time to load next fragment at lower level\n // 0.8 : consider only 80% of current bw to be conservative\n // 8 = bits per byte (bps/Bps)\n var levelNextBitrate = levels[nextLoadLevel].maxBitrate;\n fragLevelNextLoadedDelay = duration * levelNextBitrate / (8 * 0.8 * loadRate);\n\n if (fragLevelNextLoadedDelay < bufferStarvationDelay) {\n break;\n }\n } // Only emergency switch down if it takes less time to load a new fragment at lowest level instead of continuing\n // to load the current one\n\n\n if (fragLevelNextLoadedDelay >= fragLoadedDelay) {\n return;\n }\n\n var bwEstimate = this.bwEstimator.getEstimate();\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn(\"Fragment \" + frag.sn + (part ? ' part ' + part.index : '') + \" of level \" + frag.level + \" is loading too slowly and will cause an underbuffer; aborting and switching to level \" + nextLoadLevel + \"\\n Current BW estimate: \" + (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(bwEstimate) ? (bwEstimate / 1024).toFixed(3) : 'Unknown') + \" Kb/s\\n Estimated load time for current fragment: \" + fragLoadedDelay.toFixed(3) + \" s\\n Estimated load time for the next fragment: \" + fragLevelNextLoadedDelay.toFixed(3) + \" s\\n Time to underbuffer: \" + bufferStarvationDelay.toFixed(3) + \" s\");\n hls.nextLoadLevel = nextLoadLevel;\n this.bwEstimator.sample(requestDelay, stats.loaded);\n this.clearTimer();\n\n if (frag.loader) {\n this.fragCurrent = this.partCurrent = null;\n frag.loader.abort();\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOAD_EMERGENCY_ABORTED, {\n frag: frag,\n part: part,\n stats: stats\n });\n };\n\n _proto.onFragLoaded = function onFragLoaded(event, _ref) {\n var frag = _ref.frag,\n part = _ref.part;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_5__[\"PlaylistLevelType\"].MAIN && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.sn)) {\n var stats = part ? part.stats : frag.stats;\n var duration = part ? part.duration : frag.duration; // stop monitoring bw once frag loaded\n\n this.clearTimer(); // store level id after successful fragment load\n\n this.lastLoadedFragLevel = frag.level; // reset forced auto level value so that next level will be selected\n\n this._nextAutoLevel = -1; // compute level average bitrate\n\n if (this.hls.config.abrMaxWithRealBitrate) {\n var level = this.hls.levels[frag.level];\n var loadedBytes = (level.loaded ? level.loaded.bytes : 0) + stats.loaded;\n var loadedDuration = (level.loaded ? level.loaded.duration : 0) + duration;\n level.loaded = {\n bytes: loadedBytes,\n duration: loadedDuration\n };\n level.realBitrate = Math.round(8 * loadedBytes / loadedDuration);\n }\n\n if (frag.bitrateTest) {\n var fragBufferedData = {\n stats: stats,\n frag: frag,\n part: part,\n id: frag.type\n };\n this.onFragBuffered(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, fragBufferedData);\n }\n }\n };\n\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n var frag = data.frag,\n part = data.part;\n var stats = part ? part.stats : frag.stats;\n\n if (stats.aborted) {\n return;\n } // Only count non-alt-audio frags which were actually buffered in our BW calculations\n\n\n if (frag.type !== _types_loader__WEBPACK_IMPORTED_MODULE_5__[\"PlaylistLevelType\"].MAIN || frag.sn === 'initSegment') {\n return;\n } // Use the difference between parsing and request instead of buffering and request to compute fragLoadingProcessing;\n // rationale is that buffer appending only happens once media is attached. This can happen when config.startFragPrefetch\n // is used. If we used buffering in that case, our BW estimate sample will be very large.\n\n\n var processingMs = stats.parsing.end - stats.loading.start;\n this.bwEstimator.sample(processingMs, stats.loaded);\n stats.bwEstimate = this.bwEstimator.getEstimate();\n\n if (frag.bitrateTest) {\n this.bitrateTestDelay = processingMs / 1000;\n } else {\n this.bitrateTestDelay = 0;\n }\n };\n\n _proto.onError = function onError(event, data) {\n // stop timer in case of frag loading error\n switch (data.details) {\n case _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].FRAG_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT:\n this.clearTimer();\n break;\n\n default:\n break;\n }\n };\n\n _proto.clearTimer = function clearTimer() {\n self.clearInterval(this.timer);\n this.timer = undefined;\n } // return next auto level\n ;\n\n _proto.getNextABRAutoLevel = function getNextABRAutoLevel() {\n var fragCurrent = this.fragCurrent,\n partCurrent = this.partCurrent,\n hls = this.hls;\n var maxAutoLevel = hls.maxAutoLevel,\n config = hls.config,\n minAutoLevel = hls.minAutoLevel,\n media = hls.media;\n var currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n var pos = media ? media.currentTime : 0; // playbackRate is the absolute value of the playback rate; if media.playbackRate is 0, we use 1 to load as\n // if we're playing back at the normal rate.\n\n var playbackRate = media && media.playbackRate !== 0 ? Math.abs(media.playbackRate) : 1.0;\n var avgbw = this.bwEstimator ? this.bwEstimator.getEstimate() : config.abrEwmaDefaultEstimate; // bufferStarvationDelay is the wall-clock time left until the playback buffer is exhausted.\n\n var bufferStarvationDelay = (_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(media, pos, config.maxBufferHole).end - pos) / playbackRate; // First, look to see if we can find a level matching with our avg bandwidth AND that could also guarantee no rebuffering at all\n\n var bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, config.abrBandWidthFactor, config.abrBandWidthUpFactor);\n\n if (bestLevel >= 0) {\n return bestLevel;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].trace((bufferStarvationDelay ? 'rebuffering expected' : 'buffer is empty') + \", finding optimal quality level\"); // not possible to get rid of rebuffering ... let's try to find level that will guarantee less than maxStarvationDelay of rebuffering\n // if no matching level found, logic will return 0\n\n var maxStarvationDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxStarvationDelay) : config.maxStarvationDelay;\n var bwFactor = config.abrBandWidthFactor;\n var bwUpFactor = config.abrBandWidthUpFactor;\n\n if (!bufferStarvationDelay) {\n // in case buffer is empty, let's check if previous fragment was loaded to perform a bitrate test\n var bitrateTestDelay = this.bitrateTestDelay;\n\n if (bitrateTestDelay) {\n // if it is the case, then we need to adjust our max starvation delay using maxLoadingDelay config value\n // max video loading delay used in automatic start level selection :\n // in that mode ABR controller will ensure that video loading time (ie the time to fetch the first fragment at lowest quality level +\n // the time to fetch the fragment at the appropriate quality level is less than ```maxLoadingDelay``` )\n // cap maxLoadingDelay and ensure it is not bigger 'than bitrate test' frag duration\n var maxLoadingDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxLoadingDelay) : config.maxLoadingDelay;\n maxStarvationDelay = maxLoadingDelay - bitrateTestDelay;\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].trace(\"bitrate test took \" + Math.round(1000 * bitrateTestDelay) + \"ms, set first fragment max fetchDuration to \" + Math.round(1000 * maxStarvationDelay) + \" ms\"); // don't use conservative factor on bitrate test\n\n bwFactor = bwUpFactor = 1;\n }\n }\n\n bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay + maxStarvationDelay, bwFactor, bwUpFactor);\n return Math.max(bestLevel, 0);\n };\n\n _proto.findBestLevel = function findBestLevel(currentBw, minAutoLevel, maxAutoLevel, maxFetchDuration, bwFactor, bwUpFactor) {\n var _level$details;\n\n var fragCurrent = this.fragCurrent,\n partCurrent = this.partCurrent,\n currentLevel = this.lastLoadedFragLevel;\n var levels = this.hls.levels;\n var level = levels[currentLevel];\n var live = !!(level !== null && level !== void 0 && (_level$details = level.details) !== null && _level$details !== void 0 && _level$details.live);\n var currentCodecSet = level === null || level === void 0 ? void 0 : level.codecSet;\n var currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n\n for (var i = maxAutoLevel; i >= minAutoLevel; i--) {\n var levelInfo = levels[i];\n\n if (!levelInfo || currentCodecSet && levelInfo.codecSet !== currentCodecSet) {\n continue;\n }\n\n var levelDetails = levelInfo.details;\n var avgDuration = (partCurrent ? levelDetails === null || levelDetails === void 0 ? void 0 : levelDetails.partTarget : levelDetails === null || levelDetails === void 0 ? void 0 : levelDetails.averagetargetduration) || currentFragDuration;\n var adjustedbw = void 0; // follow algorithm captured from stagefright :\n // https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/httplive/LiveSession.cpp\n // Pick the highest bandwidth stream below or equal to estimated bandwidth.\n // consider only 80% of the available bandwidth, but if we are switching up,\n // be even more conservative (70%) to avoid overestimating and immediately\n // switching back.\n\n if (i <= currentLevel) {\n adjustedbw = bwFactor * currentBw;\n } else {\n adjustedbw = bwUpFactor * currentBw;\n }\n\n var bitrate = levels[i].maxBitrate;\n var fetchDuration = bitrate * avgDuration / adjustedbw;\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].trace(\"level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: \" + i + \"/\" + Math.round(adjustedbw) + \"/\" + bitrate + \"/\" + avgDuration + \"/\" + maxFetchDuration + \"/\" + fetchDuration); // if adjusted bw is greater than level bitrate AND\n\n if (adjustedbw > bitrate && ( // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches\n // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ...\n // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that findBestLevel will return -1\n !fetchDuration || live && !this.bitrateTestDelay || fetchDuration < maxFetchDuration)) {\n // as we are looping from highest to lowest, this will return the best achievable quality level\n return i;\n }\n } // not enough time budget even with quality level 0 ... rebuffering might happen\n\n\n return -1;\n };\n\n _createClass(AbrController, [{\n key: \"nextAutoLevel\",\n get: function get() {\n var forcedAutoLevel = this._nextAutoLevel;\n var bwEstimator = this.bwEstimator; // in case next auto level has been forced, and bw not available or not reliable, return forced value\n\n if (forcedAutoLevel !== -1 && !bwEstimator.canEstimate()) {\n return forcedAutoLevel;\n } // compute next level using ABR logic\n\n\n var nextABRAutoLevel = this.getNextABRAutoLevel(); // use forced auto level when ABR selected level has errored\n\n if (forcedAutoLevel !== -1 && this.hls.levels[nextABRAutoLevel].loadError) {\n return forcedAutoLevel;\n } // if forced auto level has been defined, use it to cap ABR computed quality level\n\n\n if (forcedAutoLevel !== -1) {\n nextABRAutoLevel = Math.min(forcedAutoLevel, nextABRAutoLevel);\n }\n\n return nextABRAutoLevel;\n },\n set: function set(nextLevel) {\n this._nextAutoLevel = nextLevel;\n }\n }]);\n\n return AbrController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbrController);\n\n/***/ }),\n\n/***/ \"./src/controller/audio-stream-controller.ts\":\n/*!***************************************************!*\\\n !*** ./src/controller/audio-stream-controller.ts ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base-stream-controller */ \"./src/controller/base-stream-controller.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _fragment_tracker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fragment-tracker */ \"./src/controller/fragment-tracker.ts\");\n/* harmony import */ var _types_level__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../types/level */ \"./src/types/level.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _loader_fragment__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../loader/fragment */ \"./src/loader/fragment.ts\");\n/* harmony import */ var _demux_chunk_cache__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../demux/chunk-cache */ \"./src/demux/chunk-cache.ts\");\n/* harmony import */ var _demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../demux/transmuxer-interface */ \"./src/demux/transmuxer-interface.ts\");\n/* harmony import */ var _types_transmuxer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../types/transmuxer */ \"./src/types/transmuxer.ts\");\n/* harmony import */ var _fragment_finders__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./fragment-finders */ \"./src/controller/fragment-finders.ts\");\n/* harmony import */ var _utils_discontinuities__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/discontinuities */ \"./src/utils/discontinuities.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TICK_INTERVAL = 100; // how often to tick in ms\n\nvar AudioStreamController = /*#__PURE__*/function (_BaseStreamController) {\n _inheritsLoose(AudioStreamController, _BaseStreamController);\n\n function AudioStreamController(hls, fragmentTracker) {\n var _this;\n\n _this = _BaseStreamController.call(this, hls, fragmentTracker, '[audio-stream-controller]') || this;\n _this.videoBuffer = null;\n _this.videoTrackCC = -1;\n _this.waitingVideoCC = -1;\n _this.audioSwitch = false;\n _this.trackId = -1;\n _this.waitingData = null;\n _this.mainDetails = null;\n _this.bufferFlushed = false;\n _this.cachedTrackLoadedData = null;\n\n _this._registerListeners();\n\n return _this;\n }\n\n var _proto = AudioStreamController.prototype;\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this._unregisterListeners();\n\n this.mainDetails = null;\n };\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, this.onError, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_RESET, this.onBufferReset, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, this.onError, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_RESET, this.onBufferReset, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n } // INIT_PTS_FOUND is triggered when the video track parsed in the stream-controller has a new PTS value\n ;\n\n _proto.onInitPtsFound = function onInitPtsFound(event, _ref) {\n var frag = _ref.frag,\n id = _ref.id,\n initPTS = _ref.initPTS;\n\n // Always update the new INIT PTS\n // Can change due level switch\n if (id === 'main') {\n var cc = frag.cc;\n this.initPTS[frag.cc] = initPTS;\n this.log(\"InitPTS for cc: \" + cc + \" found from main: \" + initPTS);\n this.videoTrackCC = cc; // If we are waiting, tick immediately to unblock audio fragment transmuxing\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS) {\n this.tick();\n }\n }\n };\n\n _proto.startLoad = function startLoad(startPosition) {\n if (!this.levels) {\n this.startPosition = startPosition;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].STOPPED;\n return;\n }\n\n var lastCurrentTime = this.lastCurrentTime;\n this.stopLoad();\n this.setInterval(TICK_INTERVAL);\n this.fragLoadError = 0;\n\n if (lastCurrentTime > 0 && startPosition === -1) {\n this.log(\"Override startPosition with lastCurrentTime @\" + lastCurrentTime.toFixed(3));\n startPosition = lastCurrentTime;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n } else {\n this.loadedmetadata = false;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_TRACK;\n }\n\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n this.tick();\n };\n\n _proto.doTick = function doTick() {\n switch (this.state) {\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE:\n this.doTickIdle();\n break;\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_TRACK:\n {\n var _levels$trackId;\n\n var levels = this.levels,\n trackId = this.trackId;\n var details = levels === null || levels === void 0 ? void 0 : (_levels$trackId = levels[trackId]) === null || _levels$trackId === void 0 ? void 0 : _levels$trackId.details;\n\n if (details) {\n if (this.waitForCdnTuneIn(details)) {\n break;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS;\n }\n\n break;\n }\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING_WAITING_RETRY:\n {\n var _this$media;\n\n var now = performance.now();\n var retryDate = this.retryDate; // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n\n if (!retryDate || now >= retryDate || (_this$media = this.media) !== null && _this$media !== void 0 && _this$media.seeking) {\n this.log('RetryDate reached, switch back to IDLE state');\n this.resetStartWhenNotLoaded(this.trackId);\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n\n break;\n }\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS:\n {\n // Ensure we don't get stuck in the WAITING_INIT_PTS state if the waiting frag CC doesn't match any initPTS\n var waitingData = this.waitingData;\n\n if (waitingData) {\n var frag = waitingData.frag,\n part = waitingData.part,\n cache = waitingData.cache,\n complete = waitingData.complete;\n\n if (this.initPTS[frag.cc] !== undefined) {\n this.waitingData = null;\n this.waitingVideoCC = -1;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING;\n var payload = cache.flush();\n var data = {\n frag: frag,\n part: part,\n payload: payload,\n networkDetails: null\n };\n\n this._handleFragmentLoadProgress(data);\n\n if (complete) {\n _BaseStreamController.prototype._handleFragmentLoadComplete.call(this, data);\n }\n } else if (this.videoTrackCC !== this.waitingVideoCC) {\n // Drop waiting fragment if videoTrackCC has changed since waitingFragment was set and initPTS was not found\n this.log(\"Waiting fragment cc (\" + frag.cc + \") cancelled because video is at cc \" + this.videoTrackCC);\n this.clearWaitingFragment();\n } else {\n // Drop waiting fragment if an earlier fragment is needed\n var pos = this.getLoadPosition();\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(this.mediaBuffer, pos, this.config.maxBufferHole);\n var waitingFragmentAtPosition = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_11__[\"fragmentWithinToleranceTest\"])(bufferInfo.end, this.config.maxFragLookUpTolerance, frag);\n\n if (waitingFragmentAtPosition < 0) {\n this.log(\"Waiting fragment cc (\" + frag.cc + \") @ \" + frag.start + \" cancelled because another fragment at \" + bufferInfo.end + \" is needed\");\n this.clearWaitingFragment();\n }\n }\n } else {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n }\n }\n\n this.onTickEnd();\n };\n\n _proto.clearWaitingFragment = function clearWaitingFragment() {\n var waitingData = this.waitingData;\n\n if (waitingData) {\n this.fragmentTracker.removeFragment(waitingData.frag);\n this.waitingData = null;\n this.waitingVideoCC = -1;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n };\n\n _proto.resetLoadingState = function resetLoadingState() {\n this.clearWaitingFragment();\n\n _BaseStreamController.prototype.resetLoadingState.call(this);\n };\n\n _proto.onTickEnd = function onTickEnd() {\n var media = this.media;\n\n if (!media || !media.readyState) {\n // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0)\n return;\n }\n\n var mediaBuffer = this.mediaBuffer ? this.mediaBuffer : media;\n var buffered = mediaBuffer.buffered;\n\n if (!this.loadedmetadata && buffered.length) {\n this.loadedmetadata = true;\n }\n\n this.lastCurrentTime = media.currentTime;\n };\n\n _proto.doTickIdle = function doTickIdle() {\n var _frag$decryptdata, _frag$decryptdata2;\n\n var hls = this.hls,\n levels = this.levels,\n media = this.media,\n trackId = this.trackId;\n var config = hls.config;\n\n if (!levels || !levels[trackId]) {\n return;\n } // if video not attached AND\n // start fragment already requested OR start frag prefetch not enabled\n // exit loop\n // => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop\n\n\n if (!media && (this.startFragRequested || !config.startFragPrefetch)) {\n return;\n }\n\n var levelInfo = levels[trackId];\n var trackDetails = levelInfo.details;\n\n if (!trackDetails || trackDetails.live && this.levelLastLoaded !== trackId || this.waitForCdnTuneIn(trackDetails)) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_TRACK;\n return;\n }\n\n var bufferable = this.mediaBuffer ? this.mediaBuffer : this.media;\n\n if (this.bufferFlushed && bufferable) {\n this.bufferFlushed = false;\n this.afterBufferFlushed(bufferable, _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO);\n }\n\n var bufferInfo = this.getFwdBufferInfo(bufferable, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO);\n\n if (bufferInfo === null) {\n return;\n }\n\n var mainBufferInfo = this.getFwdBufferInfo(this.videoBuffer ? this.videoBuffer : this.media, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n var bufferLen = bufferInfo.len;\n var maxBufLen = this.getMaxBufferLength(mainBufferInfo === null || mainBufferInfo === void 0 ? void 0 : mainBufferInfo.len);\n var audioSwitch = this.audioSwitch; // if buffer length is less than maxBufLen try to load a new fragment\n\n if (bufferLen >= maxBufLen && !audioSwitch) {\n return;\n }\n\n if (!audioSwitch && this._streamEnded(bufferInfo, trackDetails)) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_EOS, {\n type: 'audio'\n });\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ENDED;\n return;\n }\n\n var fragments = trackDetails.fragments;\n var start = fragments[0].start;\n var targetBufferTime = bufferInfo.end;\n\n if (audioSwitch && media) {\n var pos = this.getLoadPosition();\n targetBufferTime = pos; // if currentTime (pos) is less than alt audio playlist start time, it means that alt audio is ahead of currentTime\n\n if (trackDetails.PTSKnown && pos < start) {\n // if everything is buffered from pos to start or if audio buffer upfront, let's seek to start\n if (bufferInfo.end > start || bufferInfo.nextStart) {\n this.log('Alt audio track ahead of main track, seek to start of alt audio track');\n media.currentTime = start + 0.05;\n }\n }\n } // buffer audio up to one target duration ahead of main buffer\n\n\n if (mainBufferInfo && targetBufferTime > mainBufferInfo.end + trackDetails.targetduration) {\n return;\n } // wait for main buffer after buffing some audio\n\n\n if ((!mainBufferInfo || !mainBufferInfo.len) && bufferInfo.len) {\n return;\n }\n\n var frag = this.getNextFragment(targetBufferTime, trackDetails);\n\n if (!frag) {\n this.bufferFlushed = true;\n return;\n }\n\n if (((_frag$decryptdata = frag.decryptdata) === null || _frag$decryptdata === void 0 ? void 0 : _frag$decryptdata.keyFormat) === 'identity' && !((_frag$decryptdata2 = frag.decryptdata) !== null && _frag$decryptdata2 !== void 0 && _frag$decryptdata2.key)) {\n this.loadKey(frag, trackDetails);\n } else {\n this.loadFragment(frag, trackDetails, targetBufferTime);\n }\n };\n\n _proto.getMaxBufferLength = function getMaxBufferLength(mainBufferLength) {\n var maxConfigBuffer = _BaseStreamController.prototype.getMaxBufferLength.call(this);\n\n if (!mainBufferLength) {\n return maxConfigBuffer;\n }\n\n return Math.max(maxConfigBuffer, mainBufferLength);\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n this.videoBuffer = null;\n\n _BaseStreamController.prototype.onMediaDetaching.call(this);\n };\n\n _proto.onAudioTracksUpdated = function onAudioTracksUpdated(event, _ref2) {\n var audioTracks = _ref2.audioTracks;\n this.resetTransmuxer();\n this.levels = audioTracks.map(function (mediaPlaylist) {\n return new _types_level__WEBPACK_IMPORTED_MODULE_5__[\"Level\"](mediaPlaylist);\n });\n };\n\n _proto.onAudioTrackSwitching = function onAudioTrackSwitching(event, data) {\n // if any URL found on new audio track, it is an alternate audio track\n var altAudio = !!data.url;\n this.trackId = data.id;\n var fragCurrent = this.fragCurrent;\n\n if (fragCurrent !== null && fragCurrent !== void 0 && fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n\n this.fragCurrent = null;\n this.clearWaitingFragment(); // destroy useless transmuxer when switching audio to main\n\n if (!altAudio) {\n this.resetTransmuxer();\n } else {\n // switching to audio track, start timer if not already started\n this.setInterval(TICK_INTERVAL);\n } // should we switch tracks ?\n\n\n if (altAudio) {\n this.audioSwitch = true; // main audio track are handled by stream-controller, just do something if switching to alt audio track\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n } else {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].STOPPED;\n }\n\n this.tick();\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.mainDetails = null;\n this.fragmentTracker.removeAllFragments();\n this.startPosition = this.lastCurrentTime = 0;\n this.bufferFlushed = false;\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n this.mainDetails = data.details;\n\n if (this.cachedTrackLoadedData !== null) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_LOADED, this.cachedTrackLoadedData);\n this.cachedTrackLoadedData = null;\n }\n };\n\n _proto.onAudioTrackLoaded = function onAudioTrackLoaded(event, data) {\n var _track$details;\n\n if (this.mainDetails == null) {\n this.cachedTrackLoadedData = data;\n return;\n }\n\n var levels = this.levels;\n var newDetails = data.details,\n trackId = data.id;\n\n if (!levels) {\n this.warn(\"Audio tracks were reset while loading level \" + trackId);\n return;\n }\n\n this.log(\"Track \" + trackId + \" loaded [\" + newDetails.startSN + \",\" + newDetails.endSN + \"],duration:\" + newDetails.totalduration);\n var track = levels[trackId];\n var sliding = 0;\n\n if (newDetails.live || (_track$details = track.details) !== null && _track$details !== void 0 && _track$details.live) {\n var mainDetails = this.mainDetails;\n\n if (!newDetails.fragments[0]) {\n newDetails.deltaUpdateFailed = true;\n }\n\n if (newDetails.deltaUpdateFailed || !mainDetails) {\n return;\n }\n\n if (!track.details && newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n // Make sure our audio rendition is aligned with the \"main\" rendition, using\n // pdt as our reference times.\n Object(_utils_discontinuities__WEBPACK_IMPORTED_MODULE_12__[\"alignMediaPlaylistByPDT\"])(newDetails, mainDetails);\n sliding = newDetails.fragments[0].start;\n } else {\n sliding = this.alignPlaylists(newDetails, track.details);\n }\n }\n\n track.details = newDetails;\n this.levelLastLoaded = trackId; // compute start position if we are aligned with the main playlist\n\n if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {\n this.setStartPosition(track.details, sliding);\n } // only switch back to IDLE state if we were waiting for track to start downloading a new fragment\n\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_TRACK && !this.waitForCdnTuneIn(newDetails)) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n } // trigger handler right now\n\n\n this.tick();\n };\n\n _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(data) {\n var _frag$initSegment;\n\n var frag = data.frag,\n part = data.part,\n payload = data.payload;\n var config = this.config,\n trackId = this.trackId,\n levels = this.levels;\n\n if (!levels) {\n this.warn(\"Audio tracks were reset while fragment load was in progress. Fragment \" + frag.sn + \" of level \" + frag.level + \" will not be buffered\");\n return;\n }\n\n var track = levels[trackId];\n console.assert(track, 'Audio track is defined on fragment load progress');\n var details = track.details;\n console.assert(details, 'Audio track details are defined on fragment load progress');\n var audioCodec = config.defaultAudioCodec || track.audioCodec || 'mp4a.40.2';\n var transmuxer = this.transmuxer;\n\n if (!transmuxer) {\n transmuxer = this.transmuxer = new _demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this.hls, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n } // Check if we have video initPTS\n // If not we need to wait for it\n\n\n var initPTS = this.initPTS[frag.cc];\n var initSegmentData = (_frag$initSegment = frag.initSegment) === null || _frag$initSegment === void 0 ? void 0 : _frag$initSegment.data;\n\n if (initPTS !== undefined) {\n // this.log(`Transmuxing ${sn} of [${details.startSN} ,${details.endSN}],track ${trackId}`);\n // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)\n var accurateTimeOffset = false; // details.PTSKnown || !details.live;\n\n var partIndex = part ? part.index : -1;\n var partial = partIndex !== -1;\n var chunkMeta = new _types_transmuxer__WEBPACK_IMPORTED_MODULE_10__[\"ChunkMetadata\"](frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n transmuxer.push(payload, initSegmentData, audioCodec, '', frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n } else {\n this.log(\"Unknown video PTS for cc \" + frag.cc + \", waiting for video PTS before demuxing audio frag \" + frag.sn + \" of [\" + details.startSN + \" ,\" + details.endSN + \"],track \" + trackId);\n\n var _this$waitingData = this.waitingData = this.waitingData || {\n frag: frag,\n part: part,\n cache: new _demux_chunk_cache__WEBPACK_IMPORTED_MODULE_8__[\"default\"](),\n complete: false\n },\n cache = _this$waitingData.cache;\n\n cache.push(new Uint8Array(payload));\n this.waitingVideoCC = this.videoTrackCC;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS;\n }\n };\n\n _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedData) {\n if (this.waitingData) {\n this.waitingData.complete = true;\n return;\n }\n\n _BaseStreamController.prototype._handleFragmentLoadComplete.call(this, fragLoadedData);\n };\n\n _proto.onBufferReset = function\n /* event: Events.BUFFER_RESET */\n onBufferReset() {\n // reset reference to sourcebuffers\n this.mediaBuffer = this.videoBuffer = null;\n this.loadedmetadata = false;\n };\n\n _proto.onBufferCreated = function onBufferCreated(event, data) {\n var audioTrack = data.tracks.audio;\n\n if (audioTrack) {\n this.mediaBuffer = audioTrack.buffer || null;\n }\n\n if (data.tracks.video) {\n this.videoBuffer = data.tracks.video.buffer || null;\n }\n };\n\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n var frag = data.frag,\n part = data.part;\n\n if (frag.type !== _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO) {\n return;\n }\n\n if (this.fragContextChanged(frag)) {\n // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion\n // Avoid setting state back to IDLE or concluding the audio switch; otherwise, the switched-to track will not buffer\n this.warn(\"Fragment \" + frag.sn + (part ? ' p: ' + part.index : '') + \" of level \" + frag.level + \" finished buffering, but was aborted. state: \" + this.state + \", audioSwitch: \" + this.audioSwitch);\n return;\n }\n\n if (frag.sn !== 'initSegment') {\n this.fragPrevious = frag;\n\n if (this.audioSwitch) {\n this.audioSwitch = false;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_SWITCHED, {\n id: this.trackId\n });\n }\n }\n\n this.fragBufferedComplete(frag, part);\n };\n\n _proto.onError = function onError(event, data) {\n switch (data.details) {\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].FRAG_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT:\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].KEY_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].KEY_LOAD_TIMEOUT:\n // TODO: Skip fragments that do not belong to this.fragCurrent audio-group id\n this.onFragmentOrKeyLoadError(_types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO, data);\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_TIMEOUT:\n // when in ERROR state, don't switch back to IDLE state in case a non-fatal error is received\n if (this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ERROR && this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].STOPPED) {\n // if fatal error, stop processing, otherwise move to IDLE to retry loading\n this.state = data.fatal ? _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ERROR : _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n this.warn(data.details + \" while loading frag, switching to \" + this.state + \" state\");\n }\n\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].BUFFER_FULL_ERROR:\n // if in appending state\n if (data.parent === 'audio' && (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING || this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSED)) {\n var flushBuffer = true;\n var bufferedInfo = this.getFwdBufferInfo(this.mediaBuffer, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO); // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end\n // reduce max buf len if current position is buffered\n\n if (bufferedInfo && bufferedInfo.len > 0.5) {\n flushBuffer = !this.reduceMaxBufferLength(bufferedInfo.len);\n }\n\n if (flushBuffer) {\n // current position is not buffered, but browser is still complaining about buffer full error\n // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708\n // in that case flush the whole audio buffer to recover\n this.warn('Buffer full error also media.currentTime is not buffered, flush audio buffer');\n this.fragCurrent = null;\n\n _BaseStreamController.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio');\n }\n\n this.resetLoadingState();\n }\n\n break;\n\n default:\n break;\n }\n };\n\n _proto.onBufferFlushed = function onBufferFlushed(event, _ref3) {\n var type = _ref3.type;\n\n if (type === _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO) {\n this.bufferFlushed = true;\n }\n };\n\n _proto._handleTransmuxComplete = function _handleTransmuxComplete(transmuxResult) {\n var _id3$samples;\n\n var id = 'audio';\n var hls = this.hls;\n var remuxResult = transmuxResult.remuxResult,\n chunkMeta = transmuxResult.chunkMeta;\n var context = this.getCurrentContext(chunkMeta);\n\n if (!context) {\n this.warn(\"The loading context changed while buffering fragment \" + chunkMeta.sn + \" of level \" + chunkMeta.level + \". This chunk will not be buffered.\");\n this.resetStartWhenNotLoaded(chunkMeta.level);\n return;\n }\n\n var frag = context.frag,\n part = context.part,\n details = context.level.details;\n var audio = remuxResult.audio,\n text = remuxResult.text,\n id3 = remuxResult.id3,\n initSegment = remuxResult.initSegment; // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level.\n // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed.\n\n if (this.fragContextChanged(frag) || !details) {\n return;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING;\n\n if (this.audioSwitch && audio) {\n this.completeAudioSwitch();\n }\n\n if (initSegment !== null && initSegment !== void 0 && initSegment.tracks) {\n this._bufferInitSegment(initSegment.tracks, frag, chunkMeta);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_PARSING_INIT_SEGMENT, {\n frag: frag,\n id: id,\n tracks: initSegment.tracks\n }); // Only flush audio from old audio tracks when PTS is known on new audio track\n }\n\n if (audio) {\n var startPTS = audio.startPTS,\n endPTS = audio.endPTS,\n startDTS = audio.startDTS,\n endDTS = audio.endDTS;\n\n if (part) {\n part.elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO] = {\n startPTS: startPTS,\n endPTS: endPTS,\n startDTS: startDTS,\n endDTS: endDTS\n };\n }\n\n frag.setElementaryStreamInfo(_loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO, startPTS, endPTS, startDTS, endDTS);\n this.bufferFragmentData(audio, frag, part, chunkMeta);\n }\n\n if (id3 !== null && id3 !== void 0 && (_id3$samples = id3.samples) !== null && _id3$samples !== void 0 && _id3$samples.length) {\n var emittedID3 = _extends({\n id: id,\n frag: frag,\n details: details\n }, id3);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_PARSING_METADATA, emittedID3);\n }\n\n if (text) {\n var emittedText = _extends({\n id: id,\n frag: frag,\n details: details\n }, text);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_PARSING_USERDATA, emittedText);\n }\n };\n\n _proto._bufferInitSegment = function _bufferInitSegment(tracks, frag, chunkMeta) {\n if (this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING) {\n return;\n } // delete any video track found on audio transmuxer\n\n\n if (tracks.video) {\n delete tracks.video;\n } // include levelCodec in audio and video tracks\n\n\n var track = tracks.audio;\n\n if (!track) {\n return;\n }\n\n track.levelCodec = track.codec;\n track.id = 'audio';\n this.log(\"Init audio buffer, container:\" + track.container + \", codecs[parsed]=[\" + track.codec + \"]\");\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_CODECS, tracks);\n var initSegment = track.initSegment;\n\n if (initSegment !== null && initSegment !== void 0 && initSegment.byteLength) {\n var segment = {\n type: 'audio',\n frag: frag,\n part: null,\n chunkMeta: chunkMeta,\n parent: frag.type,\n data: initSegment\n };\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_APPENDING, segment);\n } // trigger handler right now\n\n\n this.tick();\n };\n\n _proto.loadFragment = function loadFragment(frag, trackDetails, targetBufferTime) {\n // only load if fragment is not loaded or if in audio switch\n var fragState = this.fragmentTracker.getState(frag);\n this.fragCurrent = frag; // we force a frag loading in audio switch as fragment tracker might not have evicted previous frags in case of quick audio switch\n\n if (this.audioSwitch || fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_4__[\"FragmentState\"].NOT_LOADED || fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_4__[\"FragmentState\"].PARTIAL) {\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag);\n } else if (trackDetails.live && !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.initPTS[frag.cc])) {\n this.log(\"Waiting for video PTS in continuity counter \" + frag.cc + \" of live stream before loading audio fragment \" + frag.sn + \" of level \" + this.trackId);\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS;\n } else {\n this.startFragRequested = true;\n\n _BaseStreamController.prototype.loadFragment.call(this, frag, trackDetails, targetBufferTime);\n }\n }\n };\n\n _proto.completeAudioSwitch = function completeAudioSwitch() {\n var hls = this.hls,\n media = this.media,\n trackId = this.trackId;\n\n if (media) {\n this.log('Switching audio track : flushing all audio');\n\n _BaseStreamController.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio');\n }\n\n this.audioSwitch = false;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_SWITCHED, {\n id: trackId\n });\n };\n\n return AudioStreamController;\n}(_base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AudioStreamController);\n\n/***/ }),\n\n/***/ \"./src/controller/audio-track-controller.ts\":\n/*!**************************************************!*\\\n !*** ./src/controller/audio-track-controller.ts ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base-playlist-controller */ \"./src/controller/base-playlist-controller.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar AudioTrackController = /*#__PURE__*/function (_BasePlaylistControll) {\n _inheritsLoose(AudioTrackController, _BasePlaylistControll);\n\n function AudioTrackController(hls) {\n var _this;\n\n _this = _BasePlaylistControll.call(this, hls, '[audio-track-controller]') || this;\n _this.tracks = [];\n _this.groupId = null;\n _this.tracksInGroup = [];\n _this.trackId = -1;\n _this.trackName = '';\n _this.selectDefaultTrack = true;\n\n _this.registerListeners();\n\n return _this;\n }\n\n var _proto = AudioTrackController.prototype;\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.tracks.length = 0;\n this.tracksInGroup.length = 0;\n\n _BasePlaylistControll.prototype.destroy.call(this);\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.tracks = [];\n this.groupId = null;\n this.tracksInGroup = [];\n this.trackId = -1;\n this.trackName = '';\n this.selectDefaultTrack = true;\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n this.tracks = data.audioTracks || [];\n };\n\n _proto.onAudioTrackLoaded = function onAudioTrackLoaded(event, data) {\n var id = data.id,\n details = data.details;\n var currentTrack = this.tracksInGroup[id];\n\n if (!currentTrack) {\n this.warn(\"Invalid audio track id \" + id);\n return;\n }\n\n var curDetails = currentTrack.details;\n currentTrack.details = data.details;\n this.log(\"audioTrack \" + id + \" loaded [\" + details.startSN + \"-\" + details.endSN + \"]\");\n\n if (id === this.trackId) {\n this.retryCount = 0;\n this.playlistLoaded(id, data, curDetails);\n }\n };\n\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n this.switchLevel(data.level);\n };\n\n _proto.onLevelSwitching = function onLevelSwitching(event, data) {\n this.switchLevel(data.level);\n };\n\n _proto.switchLevel = function switchLevel(levelIndex) {\n var levelInfo = this.hls.levels[levelIndex];\n\n if (!(levelInfo !== null && levelInfo !== void 0 && levelInfo.audioGroupIds)) {\n return;\n }\n\n var audioGroupId = levelInfo.audioGroupIds[levelInfo.urlId];\n\n if (this.groupId !== audioGroupId) {\n this.groupId = audioGroupId;\n var audioTracks = this.tracks.filter(function (track) {\n return !audioGroupId || track.groupId === audioGroupId;\n }); // Disable selectDefaultTrack if there are no default tracks\n\n if (this.selectDefaultTrack && !audioTracks.some(function (track) {\n return track.default;\n })) {\n this.selectDefaultTrack = false;\n }\n\n this.tracksInGroup = audioTracks;\n var audioTracksUpdated = {\n audioTracks: audioTracks\n };\n this.log(\"Updating audio tracks, \" + audioTracks.length + \" track(s) found in \\\"\" + audioGroupId + \"\\\" group-id\");\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACKS_UPDATED, audioTracksUpdated);\n this.selectInitialTrack();\n }\n };\n\n _proto.onError = function onError(event, data) {\n _BasePlaylistControll.prototype.onError.call(this, event, data);\n\n if (data.fatal || !data.context) {\n return;\n }\n\n if (data.context.type === _types_loader__WEBPACK_IMPORTED_MODULE_3__[\"PlaylistContextType\"].AUDIO_TRACK && data.context.id === this.trackId && data.context.groupId === this.groupId) {\n this.retryLoadingOrFail(data);\n }\n };\n\n _proto.setAudioTrack = function setAudioTrack(newId) {\n var tracks = this.tracksInGroup; // check if level idx is valid\n\n if (newId < 0 || newId >= tracks.length) {\n this.warn('Invalid id passed to audio-track controller');\n return;\n } // stopping live reloading timer if any\n\n\n this.clearTimer();\n var lastTrack = tracks[this.trackId];\n this.log(\"Now switching to audio-track index \" + newId);\n var track = tracks[newId];\n var id = track.id,\n _track$groupId = track.groupId,\n groupId = _track$groupId === void 0 ? '' : _track$groupId,\n name = track.name,\n type = track.type,\n url = track.url;\n this.trackId = newId;\n this.trackName = name;\n this.selectDefaultTrack = false;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACK_SWITCHING, {\n id: id,\n groupId: groupId,\n name: name,\n type: type,\n url: url\n }); // Do not reload track unless live\n\n if (track.details && !track.details.live) {\n return;\n }\n\n var hlsUrlParameters = this.switchParams(track.url, lastTrack === null || lastTrack === void 0 ? void 0 : lastTrack.details);\n this.loadPlaylist(hlsUrlParameters);\n };\n\n _proto.selectInitialTrack = function selectInitialTrack() {\n var audioTracks = this.tracksInGroup;\n console.assert(audioTracks.length, 'Initial audio track should be selected when tracks are known');\n var currentAudioTrackName = this.trackName;\n var trackId = this.findTrackId(currentAudioTrackName) || this.findTrackId();\n\n if (trackId !== -1) {\n this.setAudioTrack(trackId);\n } else {\n this.warn(\"No track found for running audio group-ID: \" + this.groupId);\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_ERROR,\n fatal: true\n });\n }\n };\n\n _proto.findTrackId = function findTrackId(name) {\n var audioTracks = this.tracksInGroup;\n\n for (var i = 0; i < audioTracks.length; i++) {\n var track = audioTracks[i];\n\n if (!this.selectDefaultTrack || track.default) {\n if (!name || name === track.name) {\n return track.id;\n }\n }\n }\n\n return -1;\n };\n\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {\n var audioTrack = this.tracksInGroup[this.trackId];\n\n if (this.shouldLoadTrack(audioTrack)) {\n var id = audioTrack.id;\n var groupId = audioTrack.groupId;\n var url = audioTrack.url;\n\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(\"Could not construct new URL with HLS Delivery Directives: \" + error);\n }\n } // track not retrieved yet, or live playlist we need to (re)load it\n\n\n this.log(\"loading audio-track playlist for id: \" + id);\n this.clearTimer();\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACK_LOADING, {\n url: url,\n id: id,\n groupId: groupId,\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n };\n\n _createClass(AudioTrackController, [{\n key: \"audioTracks\",\n get: function get() {\n return this.tracksInGroup;\n }\n }, {\n key: \"audioTrack\",\n get: function get() {\n return this.trackId;\n },\n set: function set(newId) {\n // If audio track is selected from API then don't choose from the manifest default track\n this.selectDefaultTrack = false;\n this.setAudioTrack(newId);\n }\n }]);\n\n return AudioTrackController;\n}(_base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AudioTrackController);\n\n/***/ }),\n\n/***/ \"./src/controller/base-playlist-controller.ts\":\n/*!****************************************************!*\\\n !*** ./src/controller/base-playlist-controller.ts ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BasePlaylistController; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _types_level__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../types/level */ \"./src/types/level.ts\");\n/* harmony import */ var _level_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./level-helper */ \"./src/controller/level-helper.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n\n\n\n\n\n\n\nvar BasePlaylistController = /*#__PURE__*/function () {\n function BasePlaylistController(hls, logPrefix) {\n this.hls = void 0;\n this.timer = -1;\n this.canLoad = false;\n this.retryCount = 0;\n this.log = void 0;\n this.warn = void 0;\n this.log = _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log.bind(_utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"], logPrefix + \":\");\n this.warn = _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn.bind(_utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"], logPrefix + \":\");\n this.hls = hls;\n }\n\n var _proto = BasePlaylistController.prototype;\n\n _proto.destroy = function destroy() {\n this.clearTimer(); // @ts-ignore\n\n this.hls = this.log = this.warn = null;\n };\n\n _proto.onError = function onError(event, data) {\n if (data.fatal && data.type === _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorTypes\"].NETWORK_ERROR) {\n this.clearTimer();\n }\n };\n\n _proto.clearTimer = function clearTimer() {\n clearTimeout(this.timer);\n this.timer = -1;\n };\n\n _proto.startLoad = function startLoad() {\n this.canLoad = true;\n this.retryCount = 0;\n this.loadPlaylist();\n };\n\n _proto.stopLoad = function stopLoad() {\n this.canLoad = false;\n this.clearTimer();\n };\n\n _proto.switchParams = function switchParams(playlistUri, previous) {\n var renditionReports = previous === null || previous === void 0 ? void 0 : previous.renditionReports;\n\n if (renditionReports) {\n for (var i = 0; i < renditionReports.length; i++) {\n var attr = renditionReports[i];\n var uri = '' + attr.URI;\n\n if (uri === playlistUri.slice(-uri.length)) {\n var msn = parseInt(attr['LAST-MSN']);\n var part = parseInt(attr['LAST-PART']);\n\n if (previous && this.hls.config.lowLatencyMode) {\n var currentGoal = Math.min(previous.age - previous.partTarget, previous.targetduration);\n\n if (part !== undefined && currentGoal > previous.partTarget) {\n part += 1;\n }\n }\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(msn)) {\n return new _types_level__WEBPACK_IMPORTED_MODULE_1__[\"HlsUrlParameters\"](msn, Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(part) ? part : undefined, _types_level__WEBPACK_IMPORTED_MODULE_1__[\"HlsSkip\"].No);\n }\n }\n }\n }\n };\n\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {};\n\n _proto.shouldLoadTrack = function shouldLoadTrack(track) {\n return this.canLoad && track && !!track.url && (!track.details || track.details.live);\n };\n\n _proto.playlistLoaded = function playlistLoaded(index, data, previousDetails) {\n var _this = this;\n\n var details = data.details,\n stats = data.stats; // Set last updated date-time\n\n var elapsed = stats.loading.end ? Math.max(0, self.performance.now() - stats.loading.end) : 0;\n details.advancedDateTime = Date.now() - elapsed; // if current playlist is a live playlist, arm a timer to reload it\n\n if (details.live || previousDetails !== null && previousDetails !== void 0 && previousDetails.live) {\n details.reloaded(previousDetails);\n\n if (previousDetails) {\n this.log(\"live playlist \" + index + \" \" + (details.advanced ? 'REFRESHED ' + details.lastPartSn + '-' + details.lastPartIndex : 'MISSED'));\n } // Merge live playlists to adjust fragment starts and fill in delta playlist skipped segments\n\n\n if (previousDetails && details.fragments.length > 0) {\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_2__[\"mergeDetails\"])(previousDetails, details);\n }\n\n if (!this.canLoad || !details.live) {\n return;\n }\n\n var deliveryDirectives;\n var msn = undefined;\n var part = undefined;\n\n if (details.canBlockReload && details.endSN && details.advanced) {\n // Load level with LL-HLS delivery directives\n var lowLatencyMode = this.hls.config.lowLatencyMode;\n var lastPartSn = details.lastPartSn;\n var endSn = details.endSN;\n var lastPartIndex = details.lastPartIndex;\n var hasParts = lastPartIndex !== -1;\n var lastPart = lastPartSn === endSn; // When low latency mode is disabled, we'll skip part requests once the last part index is found\n\n var nextSnStartIndex = lowLatencyMode ? 0 : lastPartIndex;\n\n if (hasParts) {\n msn = lastPart ? endSn + 1 : lastPartSn;\n part = lastPart ? nextSnStartIndex : lastPartIndex + 1;\n } else {\n msn = endSn + 1;\n } // Low-Latency CDN Tune-in: \"age\" header and time since load indicates we're behind by more than one part\n // Update directives to obtain the Playlist that has the estimated additional duration of media\n\n\n var lastAdvanced = details.age;\n var cdnAge = lastAdvanced + details.ageHeader;\n var currentGoal = Math.min(cdnAge - details.partTarget, details.targetduration * 1.5);\n\n if (currentGoal > 0) {\n if (previousDetails && currentGoal > previousDetails.tuneInGoal) {\n // If we attempted to get the next or latest playlist update, but currentGoal increased,\n // then we either can't catchup, or the \"age\" header cannot be trusted.\n this.warn(\"CDN Tune-in goal increased from: \" + previousDetails.tuneInGoal + \" to: \" + currentGoal + \" with playlist age: \" + details.age);\n currentGoal = 0;\n } else {\n var segments = Math.floor(currentGoal / details.targetduration);\n msn += segments;\n\n if (part !== undefined) {\n var parts = Math.round(currentGoal % details.targetduration / details.partTarget);\n part += parts;\n }\n\n this.log(\"CDN Tune-in age: \" + details.ageHeader + \"s last advanced \" + lastAdvanced.toFixed(2) + \"s goal: \" + currentGoal + \" skip sn \" + segments + \" to part \" + part);\n }\n\n details.tuneInGoal = currentGoal;\n }\n\n deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n\n if (lowLatencyMode || !lastPart) {\n this.loadPlaylist(deliveryDirectives);\n return;\n }\n } else {\n deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n }\n\n var reloadInterval = Object(_level_helper__WEBPACK_IMPORTED_MODULE_2__[\"computeReloadInterval\"])(details, stats);\n\n if (msn !== undefined && details.canBlockReload) {\n reloadInterval -= details.partTarget || 1;\n }\n\n this.log(\"reload live playlist \" + index + \" in \" + Math.round(reloadInterval) + \" ms\");\n this.timer = self.setTimeout(function () {\n return _this.loadPlaylist(deliveryDirectives);\n }, reloadInterval);\n } else {\n this.clearTimer();\n }\n };\n\n _proto.getDeliveryDirectives = function getDeliveryDirectives(details, previousDeliveryDirectives, msn, part) {\n var skip = Object(_types_level__WEBPACK_IMPORTED_MODULE_1__[\"getSkipValue\"])(details, msn);\n\n if (previousDeliveryDirectives !== null && previousDeliveryDirectives !== void 0 && previousDeliveryDirectives.skip && details.deltaUpdateFailed) {\n msn = previousDeliveryDirectives.msn;\n part = previousDeliveryDirectives.part;\n skip = _types_level__WEBPACK_IMPORTED_MODULE_1__[\"HlsSkip\"].No;\n }\n\n return new _types_level__WEBPACK_IMPORTED_MODULE_1__[\"HlsUrlParameters\"](msn, part, skip);\n };\n\n _proto.retryLoadingOrFail = function retryLoadingOrFail(errorEvent) {\n var _this2 = this;\n\n var config = this.hls.config;\n var retry = this.retryCount < config.levelLoadingMaxRetry;\n\n if (retry) {\n var _errorEvent$context;\n\n this.retryCount++;\n\n if (errorEvent.details.indexOf('LoadTimeOut') > -1 && (_errorEvent$context = errorEvent.context) !== null && _errorEvent$context !== void 0 && _errorEvent$context.deliveryDirectives) {\n // The LL-HLS request already timed out so retry immediately\n this.warn(\"retry playlist loading #\" + this.retryCount + \" after \\\"\" + errorEvent.details + \"\\\"\");\n this.loadPlaylist();\n } else {\n // exponential backoff capped to max retry timeout\n var delay = Math.min(Math.pow(2, this.retryCount) * config.levelLoadingRetryDelay, config.levelLoadingMaxRetryTimeout); // Schedule level/track reload\n\n this.timer = self.setTimeout(function () {\n return _this2.loadPlaylist();\n }, delay);\n this.warn(\"retry playlist loading #\" + this.retryCount + \" in \" + delay + \" ms after \\\"\" + errorEvent.details + \"\\\"\");\n }\n } else {\n this.warn(\"cannot recover from error \\\"\" + errorEvent.details + \"\\\"\"); // stopping live reloading timer if any\n\n this.clearTimer(); // switch error to fatal\n\n errorEvent.fatal = true;\n }\n\n return retry;\n };\n\n return BasePlaylistController;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/base-stream-controller.ts\":\n/*!**************************************************!*\\\n !*** ./src/controller/base-stream-controller.ts ***!\n \\**************************************************/\n/*! exports provided: State, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"State\", function() { return State; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BaseStreamController; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _task_loop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../task-loop */ \"./src/task-loop.ts\");\n/* harmony import */ var _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fragment-tracker */ \"./src/controller/fragment-tracker.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _types_transmuxer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../types/transmuxer */ \"./src/types/transmuxer.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _utils_discontinuities__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/discontinuities */ \"./src/utils/discontinuities.ts\");\n/* harmony import */ var _fragment_finders__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./fragment-finders */ \"./src/controller/fragment-finders.ts\");\n/* harmony import */ var _level_helper__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./level-helper */ \"./src/controller/level-helper.ts\");\n/* harmony import */ var _loader_fragment_loader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../loader/fragment-loader */ \"./src/loader/fragment-loader.ts\");\n/* harmony import */ var _crypt_decrypter__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../crypt/decrypter */ \"./src/crypt/decrypter.ts\");\n/* harmony import */ var _utils_time_ranges__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/time-ranges */ \"./src/utils/time-ranges.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n\n\n\n\n\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar State = {\n STOPPED: 'STOPPED',\n IDLE: 'IDLE',\n KEY_LOADING: 'KEY_LOADING',\n FRAG_LOADING: 'FRAG_LOADING',\n FRAG_LOADING_WAITING_RETRY: 'FRAG_LOADING_WAITING_RETRY',\n WAITING_TRACK: 'WAITING_TRACK',\n PARSING: 'PARSING',\n PARSED: 'PARSED',\n ENDED: 'ENDED',\n ERROR: 'ERROR',\n WAITING_INIT_PTS: 'WAITING_INIT_PTS',\n WAITING_LEVEL: 'WAITING_LEVEL'\n};\n\nvar BaseStreamController = /*#__PURE__*/function (_TaskLoop) {\n _inheritsLoose(BaseStreamController, _TaskLoop);\n\n function BaseStreamController(hls, fragmentTracker, logPrefix) {\n var _this;\n\n _this = _TaskLoop.call(this) || this;\n _this.hls = void 0;\n _this.fragPrevious = null;\n _this.fragCurrent = null;\n _this.fragmentTracker = void 0;\n _this.transmuxer = null;\n _this._state = State.STOPPED;\n _this.media = null;\n _this.mediaBuffer = null;\n _this.config = void 0;\n _this.bitrateTest = false;\n _this.lastCurrentTime = 0;\n _this.nextLoadPosition = 0;\n _this.startPosition = 0;\n _this.loadedmetadata = false;\n _this.fragLoadError = 0;\n _this.retryDate = 0;\n _this.levels = null;\n _this.fragmentLoader = void 0;\n _this.levelLastLoaded = null;\n _this.startFragRequested = false;\n _this.decrypter = void 0;\n _this.initPTS = [];\n _this.onvseeking = null;\n _this.onvended = null;\n _this.logPrefix = '';\n _this.log = void 0;\n _this.warn = void 0;\n _this.logPrefix = logPrefix;\n _this.log = _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].log.bind(_utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"], logPrefix + \":\");\n _this.warn = _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].warn.bind(_utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"], logPrefix + \":\");\n _this.hls = hls;\n _this.fragmentLoader = new _loader_fragment_loader__WEBPACK_IMPORTED_MODULE_12__[\"default\"](hls.config);\n _this.fragmentTracker = fragmentTracker;\n _this.config = hls.config;\n _this.decrypter = new _crypt_decrypter__WEBPACK_IMPORTED_MODULE_13__[\"default\"](hls, hls.config);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].KEY_LOADED, _this.onKeyLoaded, _assertThisInitialized(_this));\n hls.on(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].LEVEL_SWITCHING, _this.onLevelSwitching, _assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = BaseStreamController.prototype;\n\n _proto.doTick = function doTick() {\n this.onTickEnd();\n };\n\n _proto.onTickEnd = function onTickEnd() {} // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ;\n\n _proto.startLoad = function startLoad(startPosition) {};\n\n _proto.stopLoad = function stopLoad() {\n this.fragmentLoader.abort();\n var frag = this.fragCurrent;\n\n if (frag) {\n this.fragmentTracker.removeFragment(frag);\n }\n\n this.resetTransmuxer();\n this.fragCurrent = null;\n this.fragPrevious = null;\n this.clearInterval();\n this.clearNextTick();\n this.state = State.STOPPED;\n };\n\n _proto._streamEnded = function _streamEnded(bufferInfo, levelDetails) {\n var fragCurrent = this.fragCurrent,\n fragmentTracker = this.fragmentTracker; // we just got done loading the final fragment and there is no other buffered range after ...\n // rationale is that in case there are any buffered ranges after, it means that there are unbuffered portion in between\n // so we should not switch to ENDED in that case, to be able to buffer them\n\n if (!levelDetails.live && fragCurrent && this.media && // NOTE: Because of the way parts are currently parsed/represented in the playlist, we can end up\n // in situations where the current fragment is actually greater than levelDetails.endSN. While\n // this feels like the \"wrong place\" to account for that, this is a narrower/safer change than\n // updating e.g. M3U8Parser::parseLevelPlaylist().\n fragCurrent.sn >= levelDetails.endSN && !bufferInfo.nextStart) {\n var partList = levelDetails.partList; // Since the last part isn't guaranteed to correspond to fragCurrent for ll-hls, check instead if the last part is buffered.\n\n if (partList !== null && partList !== void 0 && partList.length) {\n var lastPart = partList[partList.length - 1]; // Checking the midpoint of the part for potential margin of error and related issues.\n // NOTE: Technically I believe parts could yield content that is < the computed duration (including potential a duration of 0)\n // and still be spec-compliant, so there may still be edge cases here. Likewise, there could be issues in end of stream\n // part mismatches for independent audio and video playlists/segments.\n\n var lastPartBuffered = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].isBuffered(this.media, lastPart.start + lastPart.duration / 2);\n return lastPartBuffered;\n }\n\n var fragState = fragmentTracker.getState(fragCurrent);\n return fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__[\"FragmentState\"].PARTIAL || fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__[\"FragmentState\"].OK;\n }\n\n return false;\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n var media = this.media = this.mediaBuffer = data.media;\n this.onvseeking = this.onMediaSeeking.bind(this);\n this.onvended = this.onMediaEnded.bind(this);\n media.addEventListener('seeking', this.onvseeking);\n media.addEventListener('ended', this.onvended);\n var config = this.config;\n\n if (this.levels && config.autoStartLoad && this.state === State.STOPPED) {\n this.startLoad(config.startPosition);\n }\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n var media = this.media;\n\n if (media !== null && media !== void 0 && media.ended) {\n this.log('MSE detaching and video ended, reset startPosition');\n this.startPosition = this.lastCurrentTime = 0;\n } // remove video listeners\n\n\n if (media && this.onvseeking && this.onvended) {\n media.removeEventListener('seeking', this.onvseeking);\n media.removeEventListener('ended', this.onvended);\n this.onvseeking = this.onvended = null;\n }\n\n this.media = this.mediaBuffer = null;\n this.loadedmetadata = false;\n this.fragmentTracker.removeAllFragments();\n this.stopLoad();\n };\n\n _proto.onMediaSeeking = function onMediaSeeking() {\n var config = this.config,\n fragCurrent = this.fragCurrent,\n media = this.media,\n mediaBuffer = this.mediaBuffer,\n state = this.state;\n var currentTime = media ? media.currentTime : 0;\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(mediaBuffer ? mediaBuffer : media, currentTime, config.maxBufferHole);\n this.log(\"media seeking to \" + (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(currentTime) ? currentTime.toFixed(3) : currentTime) + \", state: \" + state);\n\n if (state === State.ENDED) {\n this.resetLoadingState();\n } else if (fragCurrent && !bufferInfo.len) {\n // check if we are seeking to a unbuffered area AND if frag loading is in progress\n var tolerance = config.maxFragLookUpTolerance;\n var fragStartOffset = fragCurrent.start - tolerance;\n var fragEndOffset = fragCurrent.start + fragCurrent.duration + tolerance;\n var pastFragment = currentTime > fragEndOffset; // check if the seek position is past current fragment, and if so abort loading\n\n if (currentTime < fragStartOffset || pastFragment) {\n if (pastFragment && fragCurrent.loader) {\n this.log('seeking outside of buffer while fragment load in progress, cancel fragment load');\n fragCurrent.loader.abort();\n }\n\n this.resetLoadingState();\n }\n }\n\n if (media) {\n this.lastCurrentTime = currentTime;\n } // in case seeking occurs although no media buffered, adjust startPosition and nextLoadPosition to seek target\n\n\n if (!this.loadedmetadata && !bufferInfo.len) {\n this.nextLoadPosition = this.startPosition = currentTime;\n } // Async tick to speed up processing\n\n\n this.tickImmediate();\n };\n\n _proto.onMediaEnded = function onMediaEnded() {\n // reset startPosition and lastCurrentTime to restart playback @ stream beginning\n this.startPosition = this.lastCurrentTime = 0;\n };\n\n _proto.onKeyLoaded = function onKeyLoaded(event, data) {\n if (this.state !== State.KEY_LOADING || data.frag !== this.fragCurrent || !this.levels) {\n return;\n }\n\n this.state = State.IDLE;\n var levelDetails = this.levels[data.frag.level].details;\n\n if (levelDetails) {\n this.loadFragment(data.frag, levelDetails, data.frag.start);\n }\n };\n\n _proto.onLevelSwitching = function onLevelSwitching(event, data) {\n this.fragLoadError = 0;\n };\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this.stopLoad();\n\n _TaskLoop.prototype.onHandlerDestroying.call(this);\n };\n\n _proto.onHandlerDestroyed = function onHandlerDestroyed() {\n this.state = State.STOPPED;\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].KEY_LOADED, this.onKeyLoaded, this);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n\n if (this.fragmentLoader) {\n this.fragmentLoader.destroy();\n }\n\n if (this.decrypter) {\n this.decrypter.destroy();\n }\n\n this.hls = this.log = this.warn = this.decrypter = this.fragmentLoader = this.fragmentTracker = null;\n\n _TaskLoop.prototype.onHandlerDestroyed.call(this);\n };\n\n _proto.loadKey = function loadKey(frag, details) {\n this.log(\"Loading key for \" + frag.sn + \" of [\" + details.startSN + \"-\" + details.endSN + \"], \" + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \" \" + frag.level);\n this.state = State.KEY_LOADING;\n this.fragCurrent = frag;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].KEY_LOADING, {\n frag: frag\n });\n };\n\n _proto.loadFragment = function loadFragment(frag, levelDetails, targetBufferTime) {\n this._loadFragForPlayback(frag, levelDetails, targetBufferTime);\n };\n\n _proto._loadFragForPlayback = function _loadFragForPlayback(frag, levelDetails, targetBufferTime) {\n var _this2 = this;\n\n var progressCallback = function progressCallback(data) {\n if (_this2.fragContextChanged(frag)) {\n _this2.warn(\"Fragment \" + frag.sn + (data.part ? ' p: ' + data.part.index : '') + \" of level \" + frag.level + \" was dropped during download.\");\n\n _this2.fragmentTracker.removeFragment(frag);\n\n return;\n }\n\n frag.stats.chunkCount++;\n\n _this2._handleFragmentLoadProgress(data);\n };\n\n this._doFragLoad(frag, levelDetails, targetBufferTime, progressCallback).then(function (data) {\n if (!data) {\n // if we're here we probably needed to backtrack or are waiting for more parts\n return;\n }\n\n _this2.fragLoadError = 0;\n var state = _this2.state;\n\n if (_this2.fragContextChanged(frag)) {\n if (state === State.FRAG_LOADING || !_this2.fragCurrent && state === State.PARSING) {\n _this2.fragmentTracker.removeFragment(frag);\n\n _this2.state = State.IDLE;\n }\n\n return;\n }\n\n if ('payload' in data) {\n _this2.log(\"Loaded fragment \" + frag.sn + \" of level \" + frag.level);\n\n _this2.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_LOADED, data);\n } // Pass through the whole payload; controllers not implementing progressive loading receive data from this callback\n\n\n _this2._handleFragmentLoadComplete(data);\n }).catch(function (reason) {\n if (_this2.state === State.STOPPED || _this2.state === State.ERROR) {\n return;\n }\n\n _this2.warn(reason);\n\n _this2.resetFragmentLoading(frag);\n });\n };\n\n _proto.flushMainBuffer = function flushMainBuffer(startOffset, endOffset, type) {\n if (type === void 0) {\n type = null;\n }\n\n if (!(startOffset - endOffset)) {\n return;\n } // When alternate audio is playing, the audio-stream-controller is responsible for the audio buffer. Otherwise,\n // passing a null type flushes both buffers\n\n\n var flushScope = {\n startOffset: startOffset,\n endOffset: endOffset,\n type: type\n }; // Reset load errors on flush\n\n this.fragLoadError = 0;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].BUFFER_FLUSHING, flushScope);\n };\n\n _proto._loadInitSegment = function _loadInitSegment(frag) {\n var _this3 = this;\n\n this._doFragLoad(frag).then(function (data) {\n if (!data || _this3.fragContextChanged(frag) || !_this3.levels) {\n throw new Error('init load aborted');\n }\n\n return data;\n }).then(function (data) {\n var hls = _this3.hls;\n var payload = data.payload;\n var decryptData = frag.decryptdata; // check to see if the payload needs to be decrypted\n\n if (payload && payload.byteLength > 0 && decryptData && decryptData.key && decryptData.iv && decryptData.method === 'AES-128') {\n var startTime = self.performance.now(); // decrypt the subtitles\n\n return _this3.decrypter.webCryptoDecrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).then(function (decryptedData) {\n var endTime = self.performance.now();\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_DECRYPTED, {\n frag: frag,\n payload: decryptedData,\n stats: {\n tstart: startTime,\n tdecrypt: endTime\n }\n });\n data.payload = decryptedData;\n return data;\n });\n }\n\n return data;\n }).then(function (data) {\n var fragCurrent = _this3.fragCurrent,\n hls = _this3.hls,\n levels = _this3.levels;\n\n if (!levels) {\n throw new Error('init load aborted, missing levels');\n }\n\n var details = levels[frag.level].details;\n console.assert(details, 'Level details are defined when init segment is loaded');\n var stats = frag.stats;\n _this3.state = State.IDLE;\n _this3.fragLoadError = 0;\n frag.data = new Uint8Array(data.payload);\n stats.parsing.start = stats.buffering.start = self.performance.now();\n stats.parsing.end = stats.buffering.end = self.performance.now(); // Silence FRAG_BUFFERED event if fragCurrent is null\n\n if (data.frag === fragCurrent) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_BUFFERED, {\n stats: stats,\n frag: fragCurrent,\n part: null,\n id: frag.type\n });\n }\n\n _this3.tick();\n }).catch(function (reason) {\n if (_this3.state === State.STOPPED || _this3.state === State.ERROR) {\n return;\n }\n\n _this3.warn(reason);\n\n _this3.resetFragmentLoading(frag);\n });\n };\n\n _proto.fragContextChanged = function fragContextChanged(frag) {\n var fragCurrent = this.fragCurrent;\n return !frag || !fragCurrent || frag.level !== fragCurrent.level || frag.sn !== fragCurrent.sn || frag.urlId !== fragCurrent.urlId;\n };\n\n _proto.fragBufferedComplete = function fragBufferedComplete(frag, part) {\n var media = this.mediaBuffer ? this.mediaBuffer : this.media;\n this.log(\"Buffered \" + frag.type + \" sn: \" + frag.sn + (part ? ' part: ' + part.index : '') + \" of \" + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \" \" + frag.level + \" \" + (media ? _utils_time_ranges__WEBPACK_IMPORTED_MODULE_14__[\"default\"].toString(_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].getBuffered(media)) : '(detached)'));\n this.state = State.IDLE;\n\n if (!media) {\n return;\n }\n\n if (!this.loadedmetadata && media.buffered.length && this.fragCurrent === this.fragPrevious) {\n this.loadedmetadata = true;\n this.seekToStartPos();\n }\n\n this.tick();\n };\n\n _proto.seekToStartPos = function seekToStartPos() {};\n\n _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedEndData) {\n var transmuxer = this.transmuxer;\n\n if (!transmuxer) {\n return;\n }\n\n var frag = fragLoadedEndData.frag,\n part = fragLoadedEndData.part,\n partsLoaded = fragLoadedEndData.partsLoaded; // If we did not load parts, or loaded all parts, we have complete (not partial) fragment data\n\n var complete = !partsLoaded || partsLoaded.length === 0 || partsLoaded.some(function (fragLoaded) {\n return !fragLoaded;\n });\n var chunkMeta = new _types_transmuxer__WEBPACK_IMPORTED_MODULE_7__[\"ChunkMetadata\"](frag.level, frag.sn, frag.stats.chunkCount + 1, 0, part ? part.index : -1, !complete);\n transmuxer.flush(chunkMeta);\n } // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ;\n\n _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(frag) {};\n\n _proto._doFragLoad = function _doFragLoad(frag, details, targetBufferTime, progressCallback) {\n var _this4 = this;\n\n if (targetBufferTime === void 0) {\n targetBufferTime = null;\n }\n\n if (!this.levels) {\n throw new Error('frag load aborted, missing levels');\n }\n\n targetBufferTime = Math.max(frag.start, targetBufferTime || 0);\n\n if (this.config.lowLatencyMode && details) {\n var partList = details.partList;\n\n if (partList && progressCallback) {\n if (targetBufferTime > frag.end && details.fragmentHint) {\n frag = details.fragmentHint;\n }\n\n var partIndex = this.getNextPart(partList, frag, targetBufferTime);\n\n if (partIndex > -1) {\n var part = partList[partIndex];\n this.log(\"Loading part sn: \" + frag.sn + \" p: \" + part.index + \" cc: \" + frag.cc + \" of playlist [\" + details.startSN + \"-\" + details.endSN + \"] parts [0-\" + partIndex + \"-\" + (partList.length - 1) + \"] \" + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \": \" + frag.level + \", target: \" + parseFloat(targetBufferTime.toFixed(3)));\n this.nextLoadPosition = part.start + part.duration;\n this.state = State.FRAG_LOADING;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_LOADING, {\n frag: frag,\n part: partList[partIndex],\n targetBufferTime: targetBufferTime\n });\n return this.doFragPartsLoad(frag, partList, partIndex, progressCallback).catch(function (error) {\n return _this4.handleFragLoadError(error);\n });\n } else if (!frag.url || this.loadedEndOfParts(partList, targetBufferTime)) {\n // Fragment hint has no parts\n return Promise.resolve(null);\n }\n }\n }\n\n this.log(\"Loading fragment \" + frag.sn + \" cc: \" + frag.cc + \" \" + (details ? 'of [' + details.startSN + '-' + details.endSN + '] ' : '') + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \": \" + frag.level + \", target: \" + parseFloat(targetBufferTime.toFixed(3))); // Don't update nextLoadPosition for fragments which are not buffered\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.sn) && !this.bitrateTest) {\n this.nextLoadPosition = frag.start + frag.duration;\n }\n\n this.state = State.FRAG_LOADING;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_LOADING, {\n frag: frag,\n targetBufferTime: targetBufferTime\n });\n return this.fragmentLoader.load(frag, progressCallback).catch(function (error) {\n return _this4.handleFragLoadError(error);\n });\n };\n\n _proto.doFragPartsLoad = function doFragPartsLoad(frag, partList, partIndex, progressCallback) {\n var _this5 = this;\n\n return new Promise(function (resolve, reject) {\n var partsLoaded = [];\n\n var loadPartIndex = function loadPartIndex(index) {\n var part = partList[index];\n\n _this5.fragmentLoader.loadPart(frag, part, progressCallback).then(function (partLoadedData) {\n partsLoaded[part.index] = partLoadedData;\n var loadedPart = partLoadedData.part;\n\n _this5.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_LOADED, partLoadedData);\n\n var nextPart = partList[index + 1];\n\n if (nextPart && nextPart.fragment === frag) {\n loadPartIndex(index + 1);\n } else {\n return resolve({\n frag: frag,\n part: loadedPart,\n partsLoaded: partsLoaded\n });\n }\n }).catch(reject);\n };\n\n loadPartIndex(partIndex);\n });\n };\n\n _proto.handleFragLoadError = function handleFragLoadError(_ref) {\n var data = _ref.data;\n\n if (data && data.details === _errors__WEBPACK_IMPORTED_MODULE_6__[\"ErrorDetails\"].INTERNAL_ABORTED) {\n this.handleFragLoadAborted(data.frag, data.part);\n } else {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].ERROR, data);\n }\n\n return null;\n };\n\n _proto._handleTransmuxerFlush = function _handleTransmuxerFlush(chunkMeta) {\n var context = this.getCurrentContext(chunkMeta);\n\n if (!context || this.state !== State.PARSING) {\n if (!this.fragCurrent) {\n this.state = State.IDLE;\n }\n\n return;\n }\n\n var frag = context.frag,\n part = context.part,\n level = context.level;\n var now = self.performance.now();\n frag.stats.parsing.end = now;\n\n if (part) {\n part.stats.parsing.end = now;\n }\n\n this.updateLevelTiming(frag, part, level, chunkMeta.partial);\n };\n\n _proto.getCurrentContext = function getCurrentContext(chunkMeta) {\n var levels = this.levels;\n var levelIndex = chunkMeta.level,\n sn = chunkMeta.sn,\n partIndex = chunkMeta.part;\n\n if (!levels || !levels[levelIndex]) {\n this.warn(\"Levels object was unset while buffering fragment \" + sn + \" of level \" + levelIndex + \". The current chunk will not be buffered.\");\n return null;\n }\n\n var level = levels[levelIndex];\n var part = partIndex > -1 ? Object(_level_helper__WEBPACK_IMPORTED_MODULE_11__[\"getPartWith\"])(level, sn, partIndex) : null;\n var frag = part ? part.fragment : Object(_level_helper__WEBPACK_IMPORTED_MODULE_11__[\"getFragmentWithSN\"])(level, sn, this.fragCurrent);\n\n if (!frag) {\n return null;\n }\n\n return {\n frag: frag,\n part: part,\n level: level\n };\n };\n\n _proto.bufferFragmentData = function bufferFragmentData(data, frag, part, chunkMeta) {\n if (!data || this.state !== State.PARSING) {\n return;\n }\n\n var data1 = data.data1,\n data2 = data.data2;\n var buffer = data1;\n\n if (data1 && data2) {\n // Combine the moof + mdat so that we buffer with a single append\n buffer = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_8__[\"appendUint8Array\"])(data1, data2);\n }\n\n if (!buffer || !buffer.length) {\n return;\n }\n\n var segment = {\n type: data.type,\n frag: frag,\n part: part,\n chunkMeta: chunkMeta,\n parent: frag.type,\n data: buffer\n };\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].BUFFER_APPENDING, segment);\n\n if (data.dropped && data.independent && !part) {\n // Clear buffer so that we reload previous segments sequentially if required\n this.flushBufferGap(frag);\n }\n };\n\n _proto.flushBufferGap = function flushBufferGap(frag) {\n var media = this.media;\n\n if (!media) {\n return;\n } // If currentTime is not buffered, clear the back buffer so that we can backtrack as much as needed\n\n\n if (!_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].isBuffered(media, media.currentTime)) {\n this.flushMainBuffer(0, frag.start);\n return;\n } // Remove back-buffer without interrupting playback to allow back tracking\n\n\n var currentTime = media.currentTime;\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(media, currentTime, 0);\n var fragDuration = frag.duration;\n var segmentFraction = Math.min(this.config.maxFragLookUpTolerance * 2, fragDuration * 0.25);\n var start = Math.max(Math.min(frag.start - segmentFraction, bufferInfo.end - segmentFraction), currentTime + segmentFraction);\n\n if (frag.start - start > segmentFraction) {\n this.flushMainBuffer(start, frag.start);\n }\n };\n\n _proto.getFwdBufferInfo = function getFwdBufferInfo(bufferable, type) {\n var config = this.config;\n var pos = this.getLoadPosition();\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(pos)) {\n return null;\n }\n\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(bufferable, pos, config.maxBufferHole); // Workaround flaw in getting forward buffer when maxBufferHole is smaller than gap at current pos\n\n if (bufferInfo.len === 0 && bufferInfo.nextStart !== undefined) {\n var bufferedFragAtPos = this.fragmentTracker.getBufferedFrag(pos, type);\n\n if (bufferedFragAtPos && bufferInfo.nextStart < bufferedFragAtPos.end) {\n return _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(bufferable, pos, Math.max(bufferInfo.nextStart, config.maxBufferHole));\n }\n }\n\n return bufferInfo;\n };\n\n _proto.getMaxBufferLength = function getMaxBufferLength(levelBitrate) {\n var config = this.config;\n var maxBufLen;\n\n if (levelBitrate) {\n maxBufLen = Math.max(8 * config.maxBufferSize / levelBitrate, config.maxBufferLength);\n } else {\n maxBufLen = config.maxBufferLength;\n }\n\n return Math.min(maxBufLen, config.maxMaxBufferLength);\n };\n\n _proto.reduceMaxBufferLength = function reduceMaxBufferLength(threshold) {\n var config = this.config;\n var minLength = threshold || config.maxBufferLength;\n\n if (config.maxMaxBufferLength >= minLength) {\n // reduce max buffer length as it might be too high. we do this to avoid loop flushing ...\n config.maxMaxBufferLength /= 2;\n this.warn(\"Reduce max buffer length to \" + config.maxMaxBufferLength + \"s\");\n return true;\n }\n\n return false;\n };\n\n _proto.getNextFragment = function getNextFragment(pos, levelDetails) {\n var fragments = levelDetails.fragments;\n var fragLen = fragments.length;\n\n if (!fragLen) {\n return null;\n } // find fragment index, contiguous with end of buffer position\n\n\n var config = this.config;\n var start = fragments[0].start;\n var frag;\n\n if (levelDetails.live) {\n var initialLiveManifestSize = config.initialLiveManifestSize;\n\n if (fragLen < initialLiveManifestSize) {\n this.warn(\"Not enough fragments to start playback (have: \" + fragLen + \", need: \" + initialLiveManifestSize + \")\");\n return null;\n } // The real fragment start times for a live stream are only known after the PTS range for that level is known.\n // In order to discover the range, we load the best matching fragment for that level and demux it.\n // Do not load using live logic if the starting frag is requested - we want to use getFragmentAtPosition() so that\n // we get the fragment matching that start time\n\n\n if (!levelDetails.PTSKnown && !this.startFragRequested && this.startPosition === -1) {\n frag = this.getInitialLiveFragment(levelDetails, fragments);\n this.startPosition = frag ? this.hls.liveSyncPosition || frag.start : pos;\n }\n } else if (pos <= start) {\n // VoD playlist: if loadPosition before start of playlist, load first fragment\n frag = fragments[0];\n } // If we haven't run into any special cases already, just load the fragment most closely matching the requested position\n\n\n if (!frag) {\n var end = config.lowLatencyMode ? levelDetails.partEnd : levelDetails.fragmentEnd;\n frag = this.getFragmentAtPosition(pos, end, levelDetails);\n }\n\n return this.mapToInitFragWhenRequired(frag);\n };\n\n _proto.mapToInitFragWhenRequired = function mapToInitFragWhenRequired(frag) {\n // If an initSegment is present, it must be buffered first\n if (frag !== null && frag !== void 0 && frag.initSegment && !(frag !== null && frag !== void 0 && frag.initSegment.data) && !this.bitrateTest) {\n return frag.initSegment;\n }\n\n return frag;\n };\n\n _proto.getNextPart = function getNextPart(partList, frag, targetBufferTime) {\n var nextPart = -1;\n var contiguous = false;\n var independentAttrOmitted = true;\n\n for (var i = 0, len = partList.length; i < len; i++) {\n var part = partList[i];\n independentAttrOmitted = independentAttrOmitted && !part.independent;\n\n if (nextPart > -1 && targetBufferTime < part.start) {\n break;\n }\n\n var loaded = part.loaded;\n\n if (!loaded && (contiguous || part.independent || independentAttrOmitted) && part.fragment === frag) {\n nextPart = i;\n }\n\n contiguous = loaded;\n }\n\n return nextPart;\n };\n\n _proto.loadedEndOfParts = function loadedEndOfParts(partList, targetBufferTime) {\n var lastPart = partList[partList.length - 1];\n return lastPart && targetBufferTime > lastPart.start && lastPart.loaded;\n }\n /*\n This method is used find the best matching first fragment for a live playlist. This fragment is used to calculate the\n \"sliding\" of the playlist, which is its offset from the start of playback. After sliding we can compute the real\n start and end times for each fragment in the playlist (after which this method will not need to be called).\n */\n ;\n\n _proto.getInitialLiveFragment = function getInitialLiveFragment(levelDetails, fragments) {\n var fragPrevious = this.fragPrevious;\n var frag = null;\n\n if (fragPrevious) {\n if (levelDetails.hasProgramDateTime) {\n // Prefer using PDT, because it can be accurate enough to choose the correct fragment without knowing the level sliding\n this.log(\"Live playlist, switching playlist, load frag with same PDT: \" + fragPrevious.programDateTime);\n frag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_10__[\"findFragmentByPDT\"])(fragments, fragPrevious.endProgramDateTime, this.config.maxFragLookUpTolerance);\n }\n\n if (!frag) {\n // SN does not need to be accurate between renditions, but depending on the packaging it may be so.\n var targetSN = fragPrevious.sn + 1;\n\n if (targetSN >= levelDetails.startSN && targetSN <= levelDetails.endSN) {\n var fragNext = fragments[targetSN - levelDetails.startSN]; // Ensure that we're staying within the continuity range, since PTS resets upon a new range\n\n if (fragPrevious.cc === fragNext.cc) {\n frag = fragNext;\n this.log(\"Live playlist, switching playlist, load frag with next SN: \" + frag.sn);\n }\n } // It's important to stay within the continuity range if available; otherwise the fragments in the playlist\n // will have the wrong start times\n\n\n if (!frag) {\n frag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_10__[\"findFragWithCC\"])(fragments, fragPrevious.cc);\n\n if (frag) {\n this.log(\"Live playlist, switching playlist, load frag with same CC: \" + frag.sn);\n }\n }\n }\n } else {\n // Find a new start fragment when fragPrevious is null\n var liveStart = this.hls.liveSyncPosition;\n\n if (liveStart !== null) {\n frag = this.getFragmentAtPosition(liveStart, this.bitrateTest ? levelDetails.fragmentEnd : levelDetails.edge, levelDetails);\n }\n }\n\n return frag;\n }\n /*\n This method finds the best matching fragment given the provided position.\n */\n ;\n\n _proto.getFragmentAtPosition = function getFragmentAtPosition(bufferEnd, end, levelDetails) {\n var config = this.config,\n fragPrevious = this.fragPrevious;\n var fragments = levelDetails.fragments,\n endSN = levelDetails.endSN;\n var fragmentHint = levelDetails.fragmentHint;\n var tolerance = config.maxFragLookUpTolerance;\n var loadingParts = !!(config.lowLatencyMode && levelDetails.partList && fragmentHint);\n\n if (loadingParts && fragmentHint && !this.bitrateTest) {\n // Include incomplete fragment with parts at end\n fragments = fragments.concat(fragmentHint);\n endSN = fragmentHint.sn;\n }\n\n var frag;\n\n if (bufferEnd < end) {\n var lookupTolerance = bufferEnd > end - tolerance ? 0 : tolerance; // Remove the tolerance if it would put the bufferEnd past the actual end of stream\n // Uses buffer and sequence number to calculate switch segment (required if using EXT-X-DISCONTINUITY-SEQUENCE)\n\n frag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_10__[\"findFragmentByPTS\"])(fragPrevious, fragments, bufferEnd, lookupTolerance);\n } else {\n // reach end of playlist\n frag = fragments[fragments.length - 1];\n }\n\n if (frag) {\n var curSNIdx = frag.sn - levelDetails.startSN;\n\n if (fragPrevious && frag.sn === fragPrevious.sn && !loadingParts) {\n // Force the next fragment to load if the previous one was already selected. This can occasionally happen with\n // non-uniform fragment durations\n var sameLevel = fragPrevious && frag.level === fragPrevious.level;\n\n if (sameLevel) {\n var nextFrag = fragments[curSNIdx + 1];\n\n if (frag.sn < endSN && this.fragmentTracker.getState(nextFrag) !== _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__[\"FragmentState\"].OK) {\n this.log(\"SN \" + frag.sn + \" just loaded, load next one: \" + nextFrag.sn);\n frag = nextFrag;\n } else {\n frag = null;\n }\n }\n }\n }\n\n return frag;\n };\n\n _proto.synchronizeToLiveEdge = function synchronizeToLiveEdge(levelDetails) {\n var config = this.config,\n media = this.media;\n\n if (!media) {\n return;\n }\n\n var liveSyncPosition = this.hls.liveSyncPosition;\n var currentTime = media.currentTime;\n var start = levelDetails.fragments[0].start;\n var end = levelDetails.edge;\n var withinSlidingWindow = currentTime >= start - config.maxFragLookUpTolerance && currentTime <= end; // Continue if we can seek forward to sync position or if current time is outside of sliding window\n\n if (liveSyncPosition !== null && media.duration > liveSyncPosition && (currentTime < liveSyncPosition || !withinSlidingWindow)) {\n // Continue if buffer is starving or if current time is behind max latency\n var maxLatency = config.liveMaxLatencyDuration !== undefined ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount * levelDetails.targetduration;\n\n if (!withinSlidingWindow && media.readyState < 4 || currentTime < end - maxLatency) {\n if (!this.loadedmetadata) {\n this.nextLoadPosition = liveSyncPosition;\n } // Only seek if ready and there is not a significant forward buffer available for playback\n\n\n if (media.readyState) {\n this.warn(\"Playback: \" + currentTime.toFixed(3) + \" is located too far from the end of live sliding playlist: \" + end + \", reset currentTime to : \" + liveSyncPosition.toFixed(3));\n media.currentTime = liveSyncPosition;\n }\n }\n }\n };\n\n _proto.alignPlaylists = function alignPlaylists(details, previousDetails) {\n var levels = this.levels,\n levelLastLoaded = this.levelLastLoaded,\n fragPrevious = this.fragPrevious;\n var lastLevel = levelLastLoaded !== null ? levels[levelLastLoaded] : null; // FIXME: If not for `shouldAlignOnDiscontinuities` requiring fragPrevious.cc,\n // this could all go in level-helper mergeDetails()\n\n var length = details.fragments.length;\n\n if (!length) {\n this.warn(\"No fragments in live playlist\");\n return 0;\n }\n\n var slidingStart = details.fragments[0].start;\n var firstLevelLoad = !previousDetails;\n\n var aligned = details.alignedSliding && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(slidingStart);\n\n if (firstLevelLoad || !aligned && !slidingStart) {\n Object(_utils_discontinuities__WEBPACK_IMPORTED_MODULE_9__[\"alignStream\"])(fragPrevious, lastLevel, details);\n var alignedSlidingStart = details.fragments[0].start;\n this.log(\"Live playlist sliding: \" + alignedSlidingStart.toFixed(2) + \" start-sn: \" + (previousDetails ? previousDetails.startSN : 'na') + \"->\" + details.startSN + \" prev-sn: \" + (fragPrevious ? fragPrevious.sn : 'na') + \" fragments: \" + length);\n return alignedSlidingStart;\n }\n\n return slidingStart;\n };\n\n _proto.waitForCdnTuneIn = function waitForCdnTuneIn(details) {\n // Wait for Low-Latency CDN Tune-in to get an updated playlist\n var advancePartLimit = 3;\n return details.live && details.canBlockReload && details.partTarget && details.tuneInGoal > Math.max(details.partHoldBack, details.partTarget * advancePartLimit);\n };\n\n _proto.setStartPosition = function setStartPosition(details, sliding) {\n // compute start position if set to -1. use it straight away if value is defined\n var startPosition = this.startPosition;\n\n if (startPosition < sliding) {\n startPosition = -1;\n }\n\n if (startPosition === -1 || this.lastCurrentTime === -1) {\n // first, check if start time offset has been set in playlist, if yes, use this value\n var startTimeOffset = details.startTimeOffset;\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(startTimeOffset)) {\n startPosition = sliding + startTimeOffset;\n\n if (startTimeOffset < 0) {\n startPosition += details.totalduration;\n }\n\n startPosition = Math.min(Math.max(sliding, startPosition), sliding + details.totalduration);\n this.log(\"Start time offset \" + startTimeOffset + \" found in playlist, adjust startPosition to \" + startPosition);\n this.startPosition = startPosition;\n } else if (details.live) {\n // Leave this.startPosition at -1, so that we can use `getInitialLiveFragment` logic when startPosition has\n // not been specified via the config or an as an argument to startLoad (#3736).\n startPosition = this.hls.liveSyncPosition || sliding;\n } else {\n this.startPosition = startPosition = 0;\n }\n\n this.lastCurrentTime = startPosition;\n }\n\n this.nextLoadPosition = startPosition;\n };\n\n _proto.getLoadPosition = function getLoadPosition() {\n var media = this.media; // if we have not yet loaded any fragment, start loading from start position\n\n var pos = 0;\n\n if (this.loadedmetadata && media) {\n pos = media.currentTime;\n } else if (this.nextLoadPosition) {\n pos = this.nextLoadPosition;\n }\n\n return pos;\n };\n\n _proto.handleFragLoadAborted = function handleFragLoadAborted(frag, part) {\n if (this.transmuxer && frag.sn !== 'initSegment' && frag.stats.aborted) {\n this.warn(\"Fragment \" + frag.sn + (part ? ' part' + part.index : '') + \" of level \" + frag.level + \" was aborted\");\n this.resetFragmentLoading(frag);\n }\n };\n\n _proto.resetFragmentLoading = function resetFragmentLoading(frag) {\n if (!this.fragCurrent || !this.fragContextChanged(frag) && this.state !== State.FRAG_LOADING_WAITING_RETRY) {\n this.state = State.IDLE;\n }\n };\n\n _proto.onFragmentOrKeyLoadError = function onFragmentOrKeyLoadError(filterType, data) {\n if (data.fatal) {\n return;\n }\n\n var frag = data.frag; // Handle frag error related to caller's filterType\n\n if (!frag || frag.type !== filterType) {\n return;\n }\n\n var fragCurrent = this.fragCurrent;\n console.assert(fragCurrent && frag.sn === fragCurrent.sn && frag.level === fragCurrent.level && frag.urlId === fragCurrent.urlId, 'Frag load error must match current frag to retry');\n var config = this.config; // keep retrying until the limit will be reached\n\n if (this.fragLoadError + 1 <= config.fragLoadingMaxRetry) {\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n this.nextLoadPosition = this.startPosition;\n } // exponential backoff capped to config.fragLoadingMaxRetryTimeout\n\n\n var delay = Math.min(Math.pow(2, this.fragLoadError) * config.fragLoadingRetryDelay, config.fragLoadingMaxRetryTimeout);\n this.warn(\"Fragment \" + frag.sn + \" of \" + filterType + \" \" + frag.level + \" failed to load, retrying in \" + delay + \"ms\");\n this.retryDate = self.performance.now() + delay;\n this.fragLoadError++;\n this.state = State.FRAG_LOADING_WAITING_RETRY;\n } else if (data.levelRetry) {\n if (filterType === _types_loader__WEBPACK_IMPORTED_MODULE_15__[\"PlaylistLevelType\"].AUDIO) {\n // Reset current fragment since audio track audio is essential and may not have a fail-over track\n this.fragCurrent = null;\n } // Fragment errors that result in a level switch or redundant fail-over\n // should reset the stream controller state to idle\n\n\n this.fragLoadError = 0;\n this.state = State.IDLE;\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].error(data.details + \" reaches max retry, redispatch as fatal ...\"); // switch error to fatal\n\n data.fatal = true;\n this.hls.stopLoad();\n this.state = State.ERROR;\n }\n };\n\n _proto.afterBufferFlushed = function afterBufferFlushed(media, bufferType, playlistType) {\n if (!media) {\n return;\n } // After successful buffer flushing, filter flushed fragments from bufferedFrags use mediaBuffered instead of media\n // (so that we will check against video.buffered ranges in case of alt audio track)\n\n\n var bufferedTimeRanges = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].getBuffered(media);\n this.fragmentTracker.detectEvictedFragments(bufferType, bufferedTimeRanges, playlistType);\n\n if (this.state === State.ENDED) {\n this.resetLoadingState();\n }\n };\n\n _proto.resetLoadingState = function resetLoadingState() {\n this.fragCurrent = null;\n this.fragPrevious = null;\n this.state = State.IDLE;\n };\n\n _proto.resetStartWhenNotLoaded = function resetStartWhenNotLoaded(level) {\n // if loadedmetadata is not set, it means that first frag request failed\n // in that case, reset startFragRequested flag\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n var details = this.levels ? this.levels[level].details : null;\n\n if (details !== null && details !== void 0 && details.live) {\n // Update the start position and return to IDLE to recover live start\n this.startPosition = -1;\n this.setStartPosition(details, 0);\n this.resetLoadingState();\n } else {\n this.nextLoadPosition = this.startPosition;\n }\n }\n };\n\n _proto.updateLevelTiming = function updateLevelTiming(frag, part, level, partial) {\n var _this6 = this;\n\n var details = level.details;\n console.assert(!!details, 'level.details must be defined');\n var parsed = Object.keys(frag.elementaryStreams).reduce(function (result, type) {\n var info = frag.elementaryStreams[type];\n\n if (info) {\n var parsedDuration = info.endPTS - info.startPTS;\n\n if (parsedDuration <= 0) {\n // Destroy the transmuxer after it's next time offset failed to advance because duration was <= 0.\n // The new transmuxer will be configured with a time offset matching the next fragment start,\n // preventing the timeline from shifting.\n _this6.warn(\"Could not parse fragment \" + frag.sn + \" \" + type + \" duration reliably (\" + parsedDuration + \")\");\n\n return result || false;\n }\n\n var drift = partial ? 0 : Object(_level_helper__WEBPACK_IMPORTED_MODULE_11__[\"updateFragPTSDTS\"])(details, frag, info.startPTS, info.endPTS, info.startDTS, info.endDTS);\n\n _this6.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].LEVEL_PTS_UPDATED, {\n details: details,\n level: level,\n drift: drift,\n type: type,\n frag: frag,\n start: info.startPTS,\n end: info.endPTS\n });\n\n return true;\n }\n\n return result;\n }, false);\n\n if (!parsed) {\n this.warn(\"Found no media in fragment \" + frag.sn + \" of level \" + level.id + \" resetting transmuxer to fallback to playlist timing\");\n this.resetTransmuxer();\n }\n\n this.state = State.PARSED;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_PARSED, {\n frag: frag,\n part: part\n });\n };\n\n _proto.resetTransmuxer = function resetTransmuxer() {\n if (this.transmuxer) {\n this.transmuxer.destroy();\n this.transmuxer = null;\n }\n };\n\n _createClass(BaseStreamController, [{\n key: \"state\",\n get: function get() {\n return this._state;\n },\n set: function set(nextState) {\n var previousState = this._state;\n\n if (previousState !== nextState) {\n this._state = nextState;\n this.log(previousState + \"->\" + nextState);\n }\n }\n }]);\n\n return BaseStreamController;\n}(_task_loop__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/buffer-controller.ts\":\n/*!*********************************************!*\\\n !*** ./src/controller/buffer-controller.ts ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BufferController; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/mediasource-helper */ \"./src/utils/mediasource-helper.ts\");\n/* harmony import */ var _loader_fragment__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../loader/fragment */ \"./src/loader/fragment.ts\");\n/* harmony import */ var _buffer_operation_queue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./buffer-operation-queue */ \"./src/controller/buffer-operation-queue.ts\");\n\n\n\n\n\n\n\n\n\n\n\n\nvar MediaSource = Object(_utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__[\"getMediaSource\"])();\nvar VIDEO_CODEC_PROFILE_REPACE = /([ha]vc.)(?:\\.[^.,]+)+/;\n\nvar BufferController = /*#__PURE__*/function () {\n // The level details used to determine duration, target-duration and live\n // cache the self generated object url to detect hijack of video tag\n // A queue of buffer operations which require the SourceBuffer to not be updating upon execution\n // References to event listeners for each SourceBuffer, so that they can be referenced for event removal\n // The number of BUFFER_CODEC events received before any sourceBuffers are created\n // The total number of BUFFER_CODEC events received\n // A reference to the attached media element\n // A reference to the active media source\n // counters\n function BufferController(_hls) {\n var _this = this;\n\n this.details = null;\n this._objectUrl = null;\n this.operationQueue = void 0;\n this.listeners = void 0;\n this.hls = void 0;\n this.bufferCodecEventsExpected = 0;\n this._bufferCodecEventsTotal = 0;\n this.media = null;\n this.mediaSource = null;\n this.appendError = 0;\n this.tracks = {};\n this.pendingTracks = {};\n this.sourceBuffer = void 0;\n\n this._onMediaSourceOpen = function () {\n var hls = _this.hls,\n media = _this.media,\n mediaSource = _this.mediaSource;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Media source opened');\n\n if (media) {\n _this.updateMediaElementDuration();\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHED, {\n media: media\n });\n }\n\n if (mediaSource) {\n // once received, don't listen anymore to sourceopen event\n mediaSource.removeEventListener('sourceopen', _this._onMediaSourceOpen);\n }\n\n _this.checkPendingTracks();\n };\n\n this._onMediaSourceClose = function () {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Media source closed');\n };\n\n this._onMediaSourceEnded = function () {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Media source ended');\n };\n\n this.hls = _hls;\n\n this._initSourceBuffer();\n\n this.registerListeners();\n }\n\n var _proto = BufferController.prototype;\n\n _proto.hasSourceTypes = function hasSourceTypes() {\n return this.getSourceBufferTypes().length > 0 || Object.keys(this.pendingTracks).length > 0;\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.details = null;\n };\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_RESET, this.onBufferReset, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_APPENDING, this.onBufferAppending, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_CODECS, this.onBufferCodecs, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_EOS, this.onBufferEos, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSED, this.onFragParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_CHANGED, this.onFragChanged, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_RESET, this.onBufferReset, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_APPENDING, this.onBufferAppending, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_CODECS, this.onBufferCodecs, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_EOS, this.onBufferEos, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSED, this.onFragParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_CHANGED, this.onFragChanged, this);\n };\n\n _proto._initSourceBuffer = function _initSourceBuffer() {\n this.sourceBuffer = {};\n this.operationQueue = new _buffer_operation_queue__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.sourceBuffer);\n this.listeners = {\n audio: [],\n video: [],\n audiovideo: []\n };\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n // in case of alt audio 2 BUFFER_CODECS events will be triggered, one per stream controller\n // sourcebuffers will be created all at once when the expected nb of tracks will be reached\n // in case alt audio is not used, only one BUFFER_CODEC event will be fired from main stream controller\n // it will contain the expected nb of source buffers, no need to compute it\n var codecEvents = 2;\n\n if (data.audio && !data.video || !data.altAudio) {\n codecEvents = 1;\n }\n\n this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = codecEvents;\n this.details = null;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(this.bufferCodecEventsExpected + \" bufferCodec event(s) expected\");\n };\n\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n var media = this.media = data.media;\n\n if (media && MediaSource) {\n var ms = this.mediaSource = new MediaSource(); // MediaSource listeners are arrow functions with a lexical scope, and do not need to be bound\n\n ms.addEventListener('sourceopen', this._onMediaSourceOpen);\n ms.addEventListener('sourceended', this._onMediaSourceEnded);\n ms.addEventListener('sourceclose', this._onMediaSourceClose); // link video and media Source\n\n media.src = self.URL.createObjectURL(ms); // cache the locally generated object url\n\n this._objectUrl = media.src;\n }\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n var media = this.media,\n mediaSource = this.mediaSource,\n _objectUrl = this._objectUrl;\n\n if (mediaSource) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: media source detaching');\n\n if (mediaSource.readyState === 'open') {\n try {\n // endOfStream could trigger exception if any sourcebuffer is in updating state\n // we don't really care about checking sourcebuffer state here,\n // as we are anyway detaching the MediaSource\n // let's just avoid this exception to propagate\n mediaSource.endOfStream();\n } catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: onMediaDetaching: \" + err.message + \" while calling endOfStream\");\n }\n } // Clean up the SourceBuffers by invoking onBufferReset\n\n\n this.onBufferReset();\n mediaSource.removeEventListener('sourceopen', this._onMediaSourceOpen);\n mediaSource.removeEventListener('sourceended', this._onMediaSourceEnded);\n mediaSource.removeEventListener('sourceclose', this._onMediaSourceClose); // Detach properly the MediaSource from the HTMLMediaElement as\n // suggested in https://github.com/w3c/media-source/issues/53.\n\n if (media) {\n if (_objectUrl) {\n self.URL.revokeObjectURL(_objectUrl);\n } // clean up video tag src only if it's our own url. some external libraries might\n // hijack the video tag and change its 'src' without destroying the Hls instance first\n\n\n if (media.src === _objectUrl) {\n media.removeAttribute('src');\n media.load();\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('[buffer-controller]: media.src was changed by a third party - skip cleanup');\n }\n }\n\n this.mediaSource = null;\n this.media = null;\n this._objectUrl = null;\n this.bufferCodecEventsExpected = this._bufferCodecEventsTotal;\n this.pendingTracks = {};\n this.tracks = {};\n }\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHED, undefined);\n };\n\n _proto.onBufferReset = function onBufferReset() {\n var _this2 = this;\n\n this.getSourceBufferTypes().forEach(function (type) {\n var sb = _this2.sourceBuffer[type];\n\n try {\n if (sb) {\n _this2.removeBufferListeners(type);\n\n if (_this2.mediaSource) {\n _this2.mediaSource.removeSourceBuffer(sb);\n } // Synchronously remove the SB from the map before the next call in order to prevent an async function from\n // accessing it\n\n\n _this2.sourceBuffer[type] = undefined;\n }\n } catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Failed to reset the \" + type + \" buffer\", err);\n }\n });\n\n this._initSourceBuffer();\n };\n\n _proto.onBufferCodecs = function onBufferCodecs(event, data) {\n var _this3 = this;\n\n var sourceBufferCount = this.getSourceBufferTypes().length;\n Object.keys(data).forEach(function (trackName) {\n if (sourceBufferCount) {\n // check if SourceBuffer codec needs to change\n var track = _this3.tracks[trackName];\n\n if (track && typeof track.buffer.changeType === 'function') {\n var _data$trackName = data[trackName],\n id = _data$trackName.id,\n codec = _data$trackName.codec,\n levelCodec = _data$trackName.levelCodec,\n container = _data$trackName.container,\n metadata = _data$trackName.metadata;\n var currentCodec = (track.levelCodec || track.codec).replace(VIDEO_CODEC_PROFILE_REPACE, '$1');\n var nextCodec = (levelCodec || codec).replace(VIDEO_CODEC_PROFILE_REPACE, '$1');\n\n if (currentCodec !== nextCodec) {\n var mimeType = container + \";codecs=\" + (levelCodec || codec);\n\n _this3.appendChangeType(trackName, mimeType);\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: switching codec \" + currentCodec + \" to \" + nextCodec);\n _this3.tracks[trackName] = {\n buffer: track.buffer,\n codec: codec,\n container: container,\n levelCodec: levelCodec,\n metadata: metadata,\n id: id\n };\n }\n }\n } else {\n // if source buffer(s) not created yet, appended buffer tracks in this.pendingTracks\n _this3.pendingTracks[trackName] = data[trackName];\n }\n }); // if sourcebuffers already created, do nothing ...\n\n if (sourceBufferCount) {\n return;\n }\n\n this.bufferCodecEventsExpected = Math.max(this.bufferCodecEventsExpected - 1, 0);\n\n if (this.mediaSource && this.mediaSource.readyState === 'open') {\n this.checkPendingTracks();\n }\n };\n\n _proto.appendChangeType = function appendChangeType(type, mimeType) {\n var _this4 = this;\n\n var operationQueue = this.operationQueue;\n var operation = {\n execute: function execute() {\n var sb = _this4.sourceBuffer[type];\n\n if (sb) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: changing \" + type + \" sourceBuffer type to \" + mimeType);\n sb.changeType(mimeType);\n }\n\n operationQueue.shiftAndExecuteNext(type);\n },\n onStart: function onStart() {},\n onComplete: function onComplete() {},\n onError: function onError(e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Failed to change \" + type + \" SourceBuffer type\", e);\n }\n };\n operationQueue.append(operation, type);\n };\n\n _proto.onBufferAppending = function onBufferAppending(event, eventData) {\n var _this5 = this;\n\n var hls = this.hls,\n operationQueue = this.operationQueue,\n tracks = this.tracks;\n var data = eventData.data,\n type = eventData.type,\n frag = eventData.frag,\n part = eventData.part,\n chunkMeta = eventData.chunkMeta;\n var chunkStats = chunkMeta.buffering[type];\n var bufferAppendingStart = self.performance.now();\n chunkStats.start = bufferAppendingStart;\n var fragBuffering = frag.stats.buffering;\n var partBuffering = part ? part.stats.buffering : null;\n\n if (fragBuffering.start === 0) {\n fragBuffering.start = bufferAppendingStart;\n }\n\n if (partBuffering && partBuffering.start === 0) {\n partBuffering.start = bufferAppendingStart;\n } // TODO: Only update timestampOffset when audio/mpeg fragment or part is not contiguous with previously appended\n // Adjusting `SourceBuffer.timestampOffset` (desired point in the timeline where the next frames should be appended)\n // in Chrome browser when we detect MPEG audio container and time delta between level PTS and `SourceBuffer.timestampOffset`\n // is greater than 100ms (this is enough to handle seek for VOD or level change for LIVE videos).\n // More info here: https://github.com/video-dev/hls.js/issues/332#issuecomment-257986486\n\n\n var audioTrack = tracks.audio;\n var checkTimestampOffset = type === 'audio' && chunkMeta.id === 1 && (audioTrack === null || audioTrack === void 0 ? void 0 : audioTrack.container) === 'audio/mpeg';\n var operation = {\n execute: function execute() {\n chunkStats.executeStart = self.performance.now();\n\n if (checkTimestampOffset) {\n var sb = _this5.sourceBuffer[type];\n\n if (sb) {\n var delta = frag.start - sb.timestampOffset;\n\n if (Math.abs(delta) >= 0.1) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: Updating audio SourceBuffer timestampOffset to \" + frag.start + \" (delta: \" + delta + \") sn: \" + frag.sn + \")\");\n sb.timestampOffset = frag.start;\n }\n }\n }\n\n _this5.appendExecutor(data, type);\n },\n onStart: function onStart() {// logger.debug(`[buffer-controller]: ${type} SourceBuffer updatestart`);\n },\n onComplete: function onComplete() {\n // logger.debug(`[buffer-controller]: ${type} SourceBuffer updateend`);\n var end = self.performance.now();\n chunkStats.executeEnd = chunkStats.end = end;\n\n if (fragBuffering.first === 0) {\n fragBuffering.first = end;\n }\n\n if (partBuffering && partBuffering.first === 0) {\n partBuffering.first = end;\n }\n\n var sourceBuffer = _this5.sourceBuffer;\n var timeRanges = {};\n\n for (var _type in sourceBuffer) {\n timeRanges[_type] = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].getBuffered(sourceBuffer[_type]);\n }\n\n _this5.appendError = 0;\n\n _this5.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_APPENDED, {\n type: type,\n frag: frag,\n part: part,\n chunkMeta: chunkMeta,\n parent: frag.type,\n timeRanges: timeRanges\n });\n },\n onError: function onError(err) {\n // in case any error occured while appending, put back segment in segments table\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"[buffer-controller]: Error encountered while trying to append to the \" + type + \" SourceBuffer\", err);\n var event = {\n type: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorTypes\"].MEDIA_ERROR,\n parent: frag.type,\n details: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_APPEND_ERROR,\n err: err,\n fatal: false\n };\n\n if (err.code === DOMException.QUOTA_EXCEEDED_ERR) {\n // QuotaExceededError: http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror\n // let's stop appending any segments, and report BUFFER_FULL_ERROR error\n event.details = _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_FULL_ERROR;\n } else {\n _this5.appendError++;\n event.details = _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_APPEND_ERROR;\n /* with UHD content, we could get loop of quota exceeded error until\n browser is able to evict some data from sourcebuffer. Retrying can help recover.\n */\n\n if (_this5.appendError > hls.config.appendErrorMaxRetry) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"[buffer-controller]: Failed \" + hls.config.appendErrorMaxRetry + \" times to append segment in sourceBuffer\");\n event.fatal = true;\n hls.stopLoad();\n }\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, event);\n }\n };\n operationQueue.append(operation, type);\n };\n\n _proto.onBufferFlushing = function onBufferFlushing(event, data) {\n var _this6 = this;\n\n var operationQueue = this.operationQueue;\n\n var flushOperation = function flushOperation(type) {\n return {\n execute: _this6.removeExecutor.bind(_this6, type, data.startOffset, data.endOffset),\n onStart: function onStart() {// logger.debug(`[buffer-controller]: Started flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);\n },\n onComplete: function onComplete() {\n // logger.debug(`[buffer-controller]: Finished flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);\n _this6.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHED, {\n type: type\n });\n },\n onError: function onError(e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Failed to remove from \" + type + \" SourceBuffer\", e);\n }\n };\n };\n\n if (data.type) {\n operationQueue.append(flushOperation(data.type), data.type);\n } else {\n this.getSourceBufferTypes().forEach(function (type) {\n operationQueue.append(flushOperation(type), type);\n });\n }\n };\n\n _proto.onFragParsed = function onFragParsed(event, data) {\n var _this7 = this;\n\n var frag = data.frag,\n part = data.part;\n var buffersAppendedTo = [];\n var elementaryStreams = part ? part.elementaryStreams : frag.elementaryStreams;\n\n if (elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_6__[\"ElementaryStreamTypes\"].AUDIOVIDEO]) {\n buffersAppendedTo.push('audiovideo');\n } else {\n if (elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_6__[\"ElementaryStreamTypes\"].AUDIO]) {\n buffersAppendedTo.push('audio');\n }\n\n if (elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_6__[\"ElementaryStreamTypes\"].VIDEO]) {\n buffersAppendedTo.push('video');\n }\n }\n\n var onUnblocked = function onUnblocked() {\n var now = self.performance.now();\n frag.stats.buffering.end = now;\n\n if (part) {\n part.stats.buffering.end = now;\n }\n\n var stats = part ? part.stats : frag.stats;\n\n _this7.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_BUFFERED, {\n frag: frag,\n part: part,\n stats: stats,\n id: frag.type\n });\n };\n\n if (buffersAppendedTo.length === 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"Fragments must have at least one ElementaryStreamType set. type: \" + frag.type + \" level: \" + frag.level + \" sn: \" + frag.sn);\n }\n\n this.blockBuffers(onUnblocked, buffersAppendedTo);\n };\n\n _proto.onFragChanged = function onFragChanged(event, data) {\n this.flushBackBuffer();\n } // on BUFFER_EOS mark matching sourcebuffer(s) as ended and trigger checkEos()\n // an undefined data.type will mark all buffers as EOS.\n ;\n\n _proto.onBufferEos = function onBufferEos(event, data) {\n var _this8 = this;\n\n var ended = this.getSourceBufferTypes().reduce(function (acc, type) {\n var sb = _this8.sourceBuffer[type];\n\n if (!data.type || data.type === type) {\n if (sb && !sb.ended) {\n sb.ended = true;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: \" + type + \" sourceBuffer now EOS\");\n }\n }\n\n return acc && !!(!sb || sb.ended);\n }, true);\n\n if (ended) {\n this.blockBuffers(function () {\n var mediaSource = _this8.mediaSource;\n\n if (!mediaSource || mediaSource.readyState !== 'open') {\n return;\n } // Allow this to throw and be caught by the enqueueing function\n\n\n mediaSource.endOfStream();\n });\n }\n };\n\n _proto.onLevelUpdated = function onLevelUpdated(event, _ref) {\n var details = _ref.details;\n\n if (!details.fragments.length) {\n return;\n }\n\n this.details = details;\n\n if (this.getSourceBufferTypes().length) {\n this.blockBuffers(this.updateMediaElementDuration.bind(this));\n } else {\n this.updateMediaElementDuration();\n }\n };\n\n _proto.flushBackBuffer = function flushBackBuffer() {\n var hls = this.hls,\n details = this.details,\n media = this.media,\n sourceBuffer = this.sourceBuffer;\n\n if (!media || details === null) {\n return;\n }\n\n var sourceBufferTypes = this.getSourceBufferTypes();\n\n if (!sourceBufferTypes.length) {\n return;\n } // Support for deprecated liveBackBufferLength\n\n\n var backBufferLength = details.live && hls.config.liveBackBufferLength !== null ? hls.config.liveBackBufferLength : hls.config.backBufferLength;\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(backBufferLength) || backBufferLength < 0) {\n return;\n }\n\n var currentTime = media.currentTime;\n var targetDuration = details.levelTargetDuration;\n var maxBackBufferLength = Math.max(backBufferLength, targetDuration);\n var targetBackBufferPosition = Math.floor(currentTime / targetDuration) * targetDuration - maxBackBufferLength;\n sourceBufferTypes.forEach(function (type) {\n var sb = sourceBuffer[type];\n\n if (sb) {\n var buffered = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].getBuffered(sb); // when target buffer start exceeds actual buffer start\n\n if (buffered.length > 0 && targetBackBufferPosition > buffered.start(0)) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BACK_BUFFER_REACHED, {\n bufferEnd: targetBackBufferPosition\n }); // Support for deprecated event:\n\n if (details.live) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LIVE_BACK_BUFFER_REACHED, {\n bufferEnd: targetBackBufferPosition\n });\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, {\n startOffset: 0,\n endOffset: targetBackBufferPosition,\n type: type\n });\n }\n }\n });\n }\n /**\n * Update Media Source duration to current level duration or override to Infinity if configuration parameter\n * 'liveDurationInfinity` is set to `true`\n * More details: https://github.com/video-dev/hls.js/issues/355\n */\n ;\n\n _proto.updateMediaElementDuration = function updateMediaElementDuration() {\n if (!this.details || !this.media || !this.mediaSource || this.mediaSource.readyState !== 'open') {\n return;\n }\n\n var details = this.details,\n hls = this.hls,\n media = this.media,\n mediaSource = this.mediaSource;\n var levelDuration = details.fragments[0].start + details.totalduration;\n var mediaDuration = media.duration;\n var msDuration = Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(mediaSource.duration) ? mediaSource.duration : 0;\n\n if (details.live && hls.config.liveDurationInfinity) {\n // Override duration to Infinity\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Media Source duration is set to Infinity');\n mediaSource.duration = Infinity;\n this.updateSeekableRange(details);\n } else if (levelDuration > msDuration && levelDuration > mediaDuration || !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(mediaDuration)) {\n // levelDuration was the last value we set.\n // not using mediaSource.duration as the browser may tweak this value\n // only update Media Source duration if its value increase, this is to avoid\n // flushing already buffered portion when switching between quality level\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: Updating Media Source duration to \" + levelDuration.toFixed(3));\n mediaSource.duration = levelDuration;\n }\n };\n\n _proto.updateSeekableRange = function updateSeekableRange(levelDetails) {\n var mediaSource = this.mediaSource;\n var fragments = levelDetails.fragments;\n var len = fragments.length;\n\n if (len && levelDetails.live && mediaSource !== null && mediaSource !== void 0 && mediaSource.setLiveSeekableRange) {\n var start = Math.max(0, fragments[0].start);\n var end = Math.max(start, start + levelDetails.totalduration);\n mediaSource.setLiveSeekableRange(start, end);\n }\n };\n\n _proto.checkPendingTracks = function checkPendingTracks() {\n var bufferCodecEventsExpected = this.bufferCodecEventsExpected,\n operationQueue = this.operationQueue,\n pendingTracks = this.pendingTracks; // Check if we've received all of the expected bufferCodec events. When none remain, create all the sourceBuffers at once.\n // This is important because the MSE spec allows implementations to throw QuotaExceededErrors if creating new sourceBuffers after\n // data has been appended to existing ones.\n // 2 tracks is the max (one for audio, one for video). If we've reach this max go ahead and create the buffers.\n\n var pendingTracksCount = Object.keys(pendingTracks).length;\n\n if (pendingTracksCount && !bufferCodecEventsExpected || pendingTracksCount === 2) {\n // ok, let's create them now !\n this.createSourceBuffers(pendingTracks);\n this.pendingTracks = {}; // append any pending segments now !\n\n var buffers = this.getSourceBufferTypes();\n\n if (buffers.length === 0) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_INCOMPATIBLE_CODECS_ERROR,\n fatal: true,\n reason: 'could not create source buffer for media codec(s)'\n });\n return;\n }\n\n buffers.forEach(function (type) {\n operationQueue.executeNext(type);\n });\n }\n };\n\n _proto.createSourceBuffers = function createSourceBuffers(tracks) {\n var sourceBuffer = this.sourceBuffer,\n mediaSource = this.mediaSource;\n\n if (!mediaSource) {\n throw Error('createSourceBuffers called when mediaSource was null');\n }\n\n var tracksCreated = 0;\n\n for (var trackName in tracks) {\n if (!sourceBuffer[trackName]) {\n var track = tracks[trackName];\n\n if (!track) {\n throw Error(\"source buffer exists for track \" + trackName + \", however track does not\");\n } // use levelCodec as first priority\n\n\n var codec = track.levelCodec || track.codec;\n var mimeType = track.container + \";codecs=\" + codec;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: creating sourceBuffer(\" + mimeType + \")\");\n\n try {\n var sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType);\n var sbName = trackName;\n this.addBufferListener(sbName, 'updatestart', this._onSBUpdateStart);\n this.addBufferListener(sbName, 'updateend', this._onSBUpdateEnd);\n this.addBufferListener(sbName, 'error', this._onSBUpdateError);\n this.tracks[trackName] = {\n buffer: sb,\n codec: codec,\n container: track.container,\n levelCodec: track.levelCodec,\n metadata: track.metadata,\n id: track.id\n };\n tracksCreated++;\n } catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"[buffer-controller]: error while trying to add sourceBuffer: \" + err.message);\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_ADD_CODEC_ERROR,\n fatal: false,\n error: err,\n mimeType: mimeType\n });\n }\n }\n }\n\n if (tracksCreated) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_CREATED, {\n tracks: this.tracks\n });\n }\n } // Keep as arrow functions so that we can directly reference these functions directly as event listeners\n ;\n\n _proto._onSBUpdateStart = function _onSBUpdateStart(type) {\n var operationQueue = this.operationQueue;\n var operation = operationQueue.current(type);\n operation.onStart();\n };\n\n _proto._onSBUpdateEnd = function _onSBUpdateEnd(type) {\n var operationQueue = this.operationQueue;\n var operation = operationQueue.current(type);\n operation.onComplete();\n operationQueue.shiftAndExecuteNext(type);\n };\n\n _proto._onSBUpdateError = function _onSBUpdateError(type, event) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"[buffer-controller]: \" + type + \" SourceBuffer error\", event); // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n // SourceBuffer errors are not necessarily fatal; if so, the HTMLMediaElement will fire an error event\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_APPENDING_ERROR,\n fatal: false\n }); // updateend is always fired after error, so we'll allow that to shift the current operation off of the queue\n\n var operation = this.operationQueue.current(type);\n\n if (operation) {\n operation.onError(event);\n }\n } // This method must result in an updateend event; if remove is not called, _onSBUpdateEnd must be called manually\n ;\n\n _proto.removeExecutor = function removeExecutor(type, startOffset, endOffset) {\n var media = this.media,\n mediaSource = this.mediaSource,\n operationQueue = this.operationQueue,\n sourceBuffer = this.sourceBuffer;\n var sb = sourceBuffer[type];\n\n if (!media || !mediaSource || !sb) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Attempting to remove from the \" + type + \" SourceBuffer, but it does not exist\");\n operationQueue.shiftAndExecuteNext(type);\n return;\n }\n\n var mediaDuration = Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(media.duration) ? media.duration : Infinity;\n var msDuration = Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(mediaSource.duration) ? mediaSource.duration : Infinity;\n var removeStart = Math.max(0, startOffset);\n var removeEnd = Math.min(endOffset, mediaDuration, msDuration);\n\n if (removeEnd > removeStart) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: Removing [\" + removeStart + \",\" + removeEnd + \"] from the \" + type + \" SourceBuffer\");\n console.assert(!sb.updating, type + \" sourceBuffer must not be updating\");\n sb.remove(removeStart, removeEnd);\n } else {\n // Cycle the queue\n operationQueue.shiftAndExecuteNext(type);\n }\n } // This method must result in an updateend event; if append is not called, _onSBUpdateEnd must be called manually\n ;\n\n _proto.appendExecutor = function appendExecutor(data, type) {\n var operationQueue = this.operationQueue,\n sourceBuffer = this.sourceBuffer;\n var sb = sourceBuffer[type];\n\n if (!sb) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Attempting to append to the \" + type + \" SourceBuffer, but it does not exist\");\n operationQueue.shiftAndExecuteNext(type);\n return;\n }\n\n sb.ended = false;\n console.assert(!sb.updating, type + \" sourceBuffer must not be updating\");\n sb.appendBuffer(data);\n } // Enqueues an operation to each SourceBuffer queue which, upon execution, resolves a promise. When all promises\n // resolve, the onUnblocked function is executed. Functions calling this method do not need to unblock the queue\n // upon completion, since we already do it here\n ;\n\n _proto.blockBuffers = function blockBuffers(onUnblocked, buffers) {\n var _this9 = this;\n\n if (buffers === void 0) {\n buffers = this.getSourceBufferTypes();\n }\n\n if (!buffers.length) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Blocking operation requested, but no SourceBuffers exist');\n Promise.resolve().then(onUnblocked);\n return;\n }\n\n var operationQueue = this.operationQueue; // logger.debug(`[buffer-controller]: Blocking ${buffers} SourceBuffer`);\n\n var blockingOperations = buffers.map(function (type) {\n return operationQueue.appendBlocker(type);\n });\n Promise.all(blockingOperations).then(function () {\n // logger.debug(`[buffer-controller]: Blocking operation resolved; unblocking ${buffers} SourceBuffer`);\n onUnblocked();\n buffers.forEach(function (type) {\n var sb = _this9.sourceBuffer[type]; // Only cycle the queue if the SB is not updating. There's a bug in Chrome which sets the SB updating flag to\n // true when changing the MediaSource duration (https://bugs.chromium.org/p/chromium/issues/detail?id=959359&can=2&q=mediasource%20duration)\n // While this is a workaround, it's probably useful to have around\n\n if (!sb || !sb.updating) {\n operationQueue.shiftAndExecuteNext(type);\n }\n });\n });\n };\n\n _proto.getSourceBufferTypes = function getSourceBufferTypes() {\n return Object.keys(this.sourceBuffer);\n };\n\n _proto.addBufferListener = function addBufferListener(type, event, fn) {\n var buffer = this.sourceBuffer[type];\n\n if (!buffer) {\n return;\n }\n\n var listener = fn.bind(this, type);\n this.listeners[type].push({\n event: event,\n listener: listener\n });\n buffer.addEventListener(event, listener);\n };\n\n _proto.removeBufferListeners = function removeBufferListeners(type) {\n var buffer = this.sourceBuffer[type];\n\n if (!buffer) {\n return;\n }\n\n this.listeners[type].forEach(function (l) {\n buffer.removeEventListener(l.event, l.listener);\n });\n };\n\n return BufferController;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/buffer-operation-queue.ts\":\n/*!**************************************************!*\\\n !*** ./src/controller/buffer-operation-queue.ts ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BufferOperationQueue; });\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\nvar BufferOperationQueue = /*#__PURE__*/function () {\n function BufferOperationQueue(sourceBufferReference) {\n this.buffers = void 0;\n this.queues = {\n video: [],\n audio: [],\n audiovideo: []\n };\n this.buffers = sourceBufferReference;\n }\n\n var _proto = BufferOperationQueue.prototype;\n\n _proto.append = function append(operation, type) {\n var queue = this.queues[type];\n queue.push(operation);\n\n if (queue.length === 1 && this.buffers[type]) {\n this.executeNext(type);\n }\n };\n\n _proto.insertAbort = function insertAbort(operation, type) {\n var queue = this.queues[type];\n queue.unshift(operation);\n this.executeNext(type);\n };\n\n _proto.appendBlocker = function appendBlocker(type) {\n var execute;\n var promise = new Promise(function (resolve) {\n execute = resolve;\n });\n var operation = {\n execute: execute,\n onStart: function onStart() {},\n onComplete: function onComplete() {},\n onError: function onError() {}\n };\n this.append(operation, type);\n return promise;\n };\n\n _proto.executeNext = function executeNext(type) {\n var buffers = this.buffers,\n queues = this.queues;\n var sb = buffers[type];\n var queue = queues[type];\n\n if (queue.length) {\n var operation = queue[0];\n\n try {\n // Operations are expected to result in an 'updateend' event being fired. If not, the queue will lock. Operations\n // which do not end with this event must call _onSBUpdateEnd manually\n operation.execute();\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].warn('[buffer-operation-queue]: Unhandled exception executing the current operation');\n operation.onError(e); // Only shift the current operation off, otherwise the updateend handler will do this for us\n\n if (!sb || !sb.updating) {\n queue.shift();\n this.executeNext(type);\n }\n }\n }\n };\n\n _proto.shiftAndExecuteNext = function shiftAndExecuteNext(type) {\n this.queues[type].shift();\n this.executeNext(type);\n };\n\n _proto.current = function current(type) {\n return this.queues[type][0];\n };\n\n return BufferOperationQueue;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/cap-level-controller.ts\":\n/*!************************************************!*\\\n !*** ./src/controller/cap-level-controller.ts ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * cap stream level to media size dimension controller\n */\n\n\nvar CapLevelController = /*#__PURE__*/function () {\n function CapLevelController(hls) {\n this.autoLevelCapping = void 0;\n this.firstLevel = void 0;\n this.media = void 0;\n this.restrictedLevels = void 0;\n this.timer = void 0;\n this.hls = void 0;\n this.streamController = void 0;\n this.clientRect = void 0;\n this.hls = hls;\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n this.firstLevel = -1;\n this.media = null;\n this.restrictedLevels = [];\n this.timer = undefined;\n this.clientRect = null;\n this.registerListeners();\n }\n\n var _proto = CapLevelController.prototype;\n\n _proto.setStreamController = function setStreamController(streamController) {\n this.streamController = streamController;\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListener();\n\n if (this.hls.config.capLevelToPlayerSize) {\n this.stopCapping();\n }\n\n this.media = null;\n this.clientRect = null; // @ts-ignore\n\n this.hls = this.streamController = null;\n };\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_CODECS, this.onBufferCodecs, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n };\n\n _proto.unregisterListener = function unregisterListener() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_CODECS, this.onBufferCodecs, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n };\n\n _proto.onFpsDropLevelCapping = function onFpsDropLevelCapping(event, data) {\n // Don't add a restricted level more than once\n if (CapLevelController.isLevelAllowed(data.droppedLevel, this.restrictedLevels)) {\n this.restrictedLevels.push(data.droppedLevel);\n }\n };\n\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n this.media = data.media instanceof HTMLVideoElement ? data.media : null;\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n var hls = this.hls;\n this.restrictedLevels = [];\n this.firstLevel = data.firstLevel;\n\n if (hls.config.capLevelToPlayerSize && data.video) {\n // Start capping immediately if the manifest has signaled video codecs\n this.startCapping();\n }\n } // Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted\n // to the first level\n ;\n\n _proto.onBufferCodecs = function onBufferCodecs(event, data) {\n var hls = this.hls;\n\n if (hls.config.capLevelToPlayerSize && data.video) {\n // If the manifest did not signal a video codec capping has been deferred until we're certain video is present\n this.startCapping();\n }\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n this.stopCapping();\n };\n\n _proto.detectPlayerSize = function detectPlayerSize() {\n if (this.media && this.mediaHeight > 0 && this.mediaWidth > 0) {\n var levels = this.hls.levels;\n\n if (levels.length) {\n var hls = this.hls;\n hls.autoLevelCapping = this.getMaxLevel(levels.length - 1);\n\n if (hls.autoLevelCapping > this.autoLevelCapping && this.streamController) {\n // if auto level capping has a higher value for the previous one, flush the buffer using nextLevelSwitch\n // usually happen when the user go to the fullscreen mode.\n this.streamController.nextLevelSwitch();\n }\n\n this.autoLevelCapping = hls.autoLevelCapping;\n }\n }\n }\n /*\n * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled)\n */\n ;\n\n _proto.getMaxLevel = function getMaxLevel(capLevelIndex) {\n var _this = this;\n\n var levels = this.hls.levels;\n\n if (!levels.length) {\n return -1;\n }\n\n var validLevels = levels.filter(function (level, index) {\n return CapLevelController.isLevelAllowed(index, _this.restrictedLevels) && index <= capLevelIndex;\n });\n this.clientRect = null;\n return CapLevelController.getMaxLevelByMediaSize(validLevels, this.mediaWidth, this.mediaHeight);\n };\n\n _proto.startCapping = function startCapping() {\n if (this.timer) {\n // Don't reset capping if started twice; this can happen if the manifest signals a video codec\n return;\n }\n\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n this.hls.firstLevel = this.getMaxLevel(this.firstLevel);\n self.clearInterval(this.timer);\n this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1000);\n this.detectPlayerSize();\n };\n\n _proto.stopCapping = function stopCapping() {\n this.restrictedLevels = [];\n this.firstLevel = -1;\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n\n if (this.timer) {\n self.clearInterval(this.timer);\n this.timer = undefined;\n }\n };\n\n _proto.getDimensions = function getDimensions() {\n if (this.clientRect) {\n return this.clientRect;\n }\n\n var media = this.media;\n var boundsRect = {\n width: 0,\n height: 0\n };\n\n if (media) {\n var clientRect = media.getBoundingClientRect();\n boundsRect.width = clientRect.width;\n boundsRect.height = clientRect.height;\n\n if (!boundsRect.width && !boundsRect.height) {\n // When the media element has no width or height (equivalent to not being in the DOM),\n // then use its width and height attributes (media.width, media.height)\n boundsRect.width = clientRect.right - clientRect.left || media.width || 0;\n boundsRect.height = clientRect.bottom - clientRect.top || media.height || 0;\n }\n }\n\n this.clientRect = boundsRect;\n return boundsRect;\n };\n\n CapLevelController.isLevelAllowed = function isLevelAllowed(level, restrictedLevels) {\n if (restrictedLevels === void 0) {\n restrictedLevels = [];\n }\n\n return restrictedLevels.indexOf(level) === -1;\n };\n\n CapLevelController.getMaxLevelByMediaSize = function getMaxLevelByMediaSize(levels, width, height) {\n if (!levels || !levels.length) {\n return -1;\n } // Levels can have the same dimensions but differing bandwidths - since levels are ordered, we can look to the next\n // to determine whether we've chosen the greatest bandwidth for the media's dimensions\n\n\n var atGreatestBandwidth = function atGreatestBandwidth(curLevel, nextLevel) {\n if (!nextLevel) {\n return true;\n }\n\n return curLevel.width !== nextLevel.width || curLevel.height !== nextLevel.height;\n }; // If we run through the loop without breaking, the media's dimensions are greater than every level, so default to\n // the max level\n\n\n var maxLevelIndex = levels.length - 1;\n\n for (var i = 0; i < levels.length; i += 1) {\n var level = levels[i];\n\n if ((level.width >= width || level.height >= height) && atGreatestBandwidth(level, levels[i + 1])) {\n maxLevelIndex = i;\n break;\n }\n }\n\n return maxLevelIndex;\n };\n\n _createClass(CapLevelController, [{\n key: \"mediaWidth\",\n get: function get() {\n return this.getDimensions().width * this.contentScaleFactor;\n }\n }, {\n key: \"mediaHeight\",\n get: function get() {\n return this.getDimensions().height * this.contentScaleFactor;\n }\n }, {\n key: \"contentScaleFactor\",\n get: function get() {\n var pixelRatio = 1;\n\n if (!this.hls.config.ignoreDevicePixelRatio) {\n try {\n pixelRatio = self.devicePixelRatio;\n } catch (e) {\n /* no-op */\n }\n }\n\n return pixelRatio;\n }\n }]);\n\n return CapLevelController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (CapLevelController);\n\n/***/ }),\n\n/***/ \"./src/controller/cmcd-controller.ts\":\n/*!*******************************************!*\\\n !*** ./src/controller/cmcd-controller.ts ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CMCDController; });\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _types_cmcd__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../types/cmcd */ \"./src/types/cmcd.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\n/**\n * Controller to deal with Common Media Client Data (CMCD)\n * @see https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf\n */\n\nvar CMCDController = /*#__PURE__*/function () {\n // eslint-disable-line no-restricted-globals\n // eslint-disable-line no-restricted-globals\n function CMCDController(hls) {\n var _this = this;\n\n this.hls = void 0;\n this.config = void 0;\n this.media = void 0;\n this.sid = void 0;\n this.cid = void 0;\n this.useHeaders = false;\n this.initialized = false;\n this.starved = false;\n this.buffering = true;\n this.audioBuffer = void 0;\n this.videoBuffer = void 0;\n\n this.onWaiting = function () {\n if (_this.initialized) {\n _this.starved = true;\n }\n\n _this.buffering = true;\n };\n\n this.onPlaying = function () {\n if (!_this.initialized) {\n _this.initialized = true;\n }\n\n _this.buffering = false;\n };\n\n this.applyPlaylistData = function (context) {\n try {\n _this.apply(context, {\n ot: _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].MANIFEST,\n su: !_this.initialized\n });\n } catch (error) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('Could not generate manifest CMCD data.', error);\n }\n };\n\n this.applyFragmentData = function (context) {\n try {\n var fragment = context.frag;\n var level = _this.hls.levels[fragment.level];\n\n var ot = _this.getObjectType(fragment);\n\n var data = {\n d: fragment.duration * 1000,\n ot: ot\n };\n\n if (ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].VIDEO || ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].AUDIO || ot == _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].MUXED) {\n data.br = level.bitrate / 1000;\n data.tb = _this.getTopBandwidth(ot) / 1000;\n data.bl = _this.getBufferLength(ot);\n }\n\n _this.apply(context, data);\n } catch (error) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('Could not generate segment CMCD data.', error);\n }\n };\n\n this.hls = hls;\n var config = this.config = hls.config;\n var cmcd = config.cmcd;\n\n if (cmcd != null) {\n config.pLoader = this.createPlaylistLoader();\n config.fLoader = this.createFragmentLoader();\n this.sid = cmcd.sessionId || CMCDController.uuid();\n this.cid = cmcd.contentId;\n this.useHeaders = cmcd.useHeaders === true;\n this.registerListeners();\n }\n }\n\n var _proto = CMCDController.prototype;\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHED, this.onMediaDetached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHED, this.onMediaDetached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n this.onMediaDetached();\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners(); // @ts-ignore\n\n this.hls = this.config = this.audioBuffer = this.videoBuffer = null;\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n this.media.addEventListener('waiting', this.onWaiting);\n this.media.addEventListener('playing', this.onPlaying);\n };\n\n _proto.onMediaDetached = function onMediaDetached() {\n if (!this.media) {\n return;\n }\n\n this.media.removeEventListener('waiting', this.onWaiting);\n this.media.removeEventListener('playing', this.onPlaying); // @ts-ignore\n\n this.media = null;\n };\n\n _proto.onBufferCreated = function onBufferCreated(event, data) {\n var _data$tracks$audio, _data$tracks$video;\n\n this.audioBuffer = (_data$tracks$audio = data.tracks.audio) === null || _data$tracks$audio === void 0 ? void 0 : _data$tracks$audio.buffer;\n this.videoBuffer = (_data$tracks$video = data.tracks.video) === null || _data$tracks$video === void 0 ? void 0 : _data$tracks$video.buffer;\n };\n\n /**\n * Create baseline CMCD data\n */\n _proto.createData = function createData() {\n var _this$media;\n\n return {\n v: _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDVersion\"],\n sf: _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDStreamingFormat\"].HLS,\n sid: this.sid,\n cid: this.cid,\n pr: (_this$media = this.media) === null || _this$media === void 0 ? void 0 : _this$media.playbackRate,\n mtp: this.hls.bandwidthEstimate / 1000\n };\n }\n /**\n * Apply CMCD data to a request.\n */\n ;\n\n _proto.apply = function apply(context, data) {\n if (data === void 0) {\n data = {};\n }\n\n // apply baseline data\n _extends(data, this.createData());\n\n var isVideo = data.ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].INIT || data.ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].VIDEO || data.ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].MUXED;\n\n if (this.starved && isVideo) {\n data.bs = true;\n data.su = true;\n this.starved = false;\n }\n\n if (data.su == null) {\n data.su = this.buffering;\n } // TODO: Implement rtp, nrr, nor, dl\n\n\n if (this.useHeaders) {\n var headers = CMCDController.toHeaders(data);\n\n if (!Object.keys(headers).length) {\n return;\n }\n\n if (!context.headers) {\n context.headers = {};\n }\n\n _extends(context.headers, headers);\n } else {\n var query = CMCDController.toQuery(data);\n\n if (!query) {\n return;\n }\n\n context.url = CMCDController.appendQueryToUri(context.url, query);\n }\n }\n /**\n * Apply CMCD data to a manifest request.\n */\n ;\n\n /**\n * The CMCD object type.\n */\n _proto.getObjectType = function getObjectType(fragment) {\n var type = fragment.type;\n\n if (type === 'subtitle') {\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].TIMED_TEXT;\n }\n\n if (fragment.sn === 'initSegment') {\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].INIT;\n }\n\n if (type === 'audio') {\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].AUDIO;\n }\n\n if (type === 'main') {\n if (!this.hls.audioTracks.length) {\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].MUXED;\n }\n\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].VIDEO;\n }\n\n return undefined;\n }\n /**\n * Get the highest bitrate.\n */\n ;\n\n _proto.getTopBandwidth = function getTopBandwidth(type) {\n var bitrate = 0;\n var levels;\n var hls = this.hls;\n\n if (type === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].AUDIO) {\n levels = hls.audioTracks;\n } else {\n var max = hls.maxAutoLevel;\n var len = max > -1 ? max + 1 : hls.levels.length;\n levels = hls.levels.slice(0, len);\n }\n\n for (var _iterator = _createForOfIteratorHelperLoose(levels), _step; !(_step = _iterator()).done;) {\n var level = _step.value;\n\n if (level.bitrate > bitrate) {\n bitrate = level.bitrate;\n }\n }\n\n return bitrate > 0 ? bitrate : NaN;\n }\n /**\n * Get the buffer length for a media type in milliseconds\n */\n ;\n\n _proto.getBufferLength = function getBufferLength(type) {\n var media = this.hls.media;\n var buffer = type === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].AUDIO ? this.audioBuffer : this.videoBuffer;\n\n if (!buffer || !media) {\n return NaN;\n }\n\n var info = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_2__[\"BufferHelper\"].bufferInfo(buffer, media.currentTime, this.config.maxBufferHole);\n return info.len * 1000;\n }\n /**\n * Create a playlist loader\n */\n ;\n\n _proto.createPlaylistLoader = function createPlaylistLoader() {\n var pLoader = this.config.pLoader;\n var apply = this.applyPlaylistData;\n var Ctor = pLoader || this.config.loader;\n return /*#__PURE__*/function () {\n function CmcdPlaylistLoader(config) {\n this.loader = void 0;\n this.loader = new Ctor(config);\n }\n\n var _proto2 = CmcdPlaylistLoader.prototype;\n\n _proto2.destroy = function destroy() {\n this.loader.destroy();\n };\n\n _proto2.abort = function abort() {\n this.loader.abort();\n };\n\n _proto2.load = function load(context, config, callbacks) {\n apply(context);\n this.loader.load(context, config, callbacks);\n };\n\n _createClass(CmcdPlaylistLoader, [{\n key: \"stats\",\n get: function get() {\n return this.loader.stats;\n }\n }, {\n key: \"context\",\n get: function get() {\n return this.loader.context;\n }\n }]);\n\n return CmcdPlaylistLoader;\n }();\n }\n /**\n * Create a playlist loader\n */\n ;\n\n _proto.createFragmentLoader = function createFragmentLoader() {\n var fLoader = this.config.fLoader;\n var apply = this.applyFragmentData;\n var Ctor = fLoader || this.config.loader;\n return /*#__PURE__*/function () {\n function CmcdFragmentLoader(config) {\n this.loader = void 0;\n this.loader = new Ctor(config);\n }\n\n var _proto3 = CmcdFragmentLoader.prototype;\n\n _proto3.destroy = function destroy() {\n this.loader.destroy();\n };\n\n _proto3.abort = function abort() {\n this.loader.abort();\n };\n\n _proto3.load = function load(context, config, callbacks) {\n apply(context);\n this.loader.load(context, config, callbacks);\n };\n\n _createClass(CmcdFragmentLoader, [{\n key: \"stats\",\n get: function get() {\n return this.loader.stats;\n }\n }, {\n key: \"context\",\n get: function get() {\n return this.loader.context;\n }\n }]);\n\n return CmcdFragmentLoader;\n }();\n }\n /**\n * Generate a random v4 UUI\n *\n * @returns {string}\n */\n ;\n\n CMCDController.uuid = function uuid() {\n var url = URL.createObjectURL(new Blob());\n var uuid = url.toString();\n URL.revokeObjectURL(url);\n return uuid.slice(uuid.lastIndexOf('/') + 1);\n }\n /**\n * Serialize a CMCD data object according to the rules defined in the\n * section 3.2 of\n * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).\n */\n ;\n\n CMCDController.serialize = function serialize(data) {\n var results = [];\n\n var isValid = function isValid(value) {\n return !Number.isNaN(value) && value != null && value !== '' && value !== false;\n };\n\n var toRounded = function toRounded(value) {\n return Math.round(value);\n };\n\n var toHundred = function toHundred(value) {\n return toRounded(value / 100) * 100;\n };\n\n var toUrlSafe = function toUrlSafe(value) {\n return encodeURIComponent(value);\n };\n\n var formatters = {\n br: toRounded,\n d: toRounded,\n bl: toHundred,\n dl: toHundred,\n mtp: toHundred,\n nor: toUrlSafe,\n rtp: toHundred,\n tb: toRounded\n };\n var keys = Object.keys(data || {}).sort();\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(keys), _step2; !(_step2 = _iterator2()).done;) {\n var key = _step2.value;\n var value = data[key]; // ignore invalid values\n\n if (!isValid(value)) {\n continue;\n } // Version should only be reported if not equal to 1.\n\n\n if (key === 'v' && value === 1) {\n continue;\n } // Playback rate should only be sent if not equal to 1.\n\n\n if (key == 'pr' && value === 1) {\n continue;\n } // Certain values require special formatting\n\n\n var formatter = formatters[key];\n\n if (formatter) {\n value = formatter(value);\n } // Serialize the key/value pair\n\n\n var type = typeof value;\n var result = void 0;\n\n if (key === 'ot' || key === 'sf' || key === 'st') {\n result = key + \"=\" + value;\n } else if (type === 'boolean') {\n result = key;\n } else if (type === 'number') {\n result = key + \"=\" + value;\n } else {\n result = key + \"=\" + JSON.stringify(value);\n }\n\n results.push(result);\n }\n\n return results.join(',');\n }\n /**\n * Convert a CMCD data object to request headers according to the rules\n * defined in the section 2.1 and 3.2 of\n * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).\n */\n ;\n\n CMCDController.toHeaders = function toHeaders(data) {\n var keys = Object.keys(data);\n var headers = {};\n var headerNames = ['Object', 'Request', 'Session', 'Status'];\n var headerGroups = [{}, {}, {}, {}];\n var headerMap = {\n br: 0,\n d: 0,\n ot: 0,\n tb: 0,\n bl: 1,\n dl: 1,\n mtp: 1,\n nor: 1,\n nrr: 1,\n su: 1,\n cid: 2,\n pr: 2,\n sf: 2,\n sid: 2,\n st: 2,\n v: 2,\n bs: 3,\n rtp: 3\n };\n\n for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {\n var key = _keys[_i];\n // Unmapped fields are mapped to the Request header\n var index = headerMap[key] != null ? headerMap[key] : 1;\n headerGroups[index][key] = data[key];\n }\n\n for (var i = 0; i < headerGroups.length; i++) {\n var value = CMCDController.serialize(headerGroups[i]);\n\n if (value) {\n headers[\"CMCD-\" + headerNames[i]] = value;\n }\n }\n\n return headers;\n }\n /**\n * Convert a CMCD data object to query args according to the rules\n * defined in the section 2.2 and 3.2 of\n * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).\n */\n ;\n\n CMCDController.toQuery = function toQuery(data) {\n return \"CMCD=\" + encodeURIComponent(CMCDController.serialize(data));\n }\n /**\n * Append query args to a uri.\n */\n ;\n\n CMCDController.appendQueryToUri = function appendQueryToUri(uri, query) {\n if (!query) {\n return uri;\n }\n\n var separator = uri.includes('?') ? '&' : '?';\n return \"\" + uri + separator + query;\n };\n\n return CMCDController;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/eme-controller.ts\":\n/*!******************************************!*\\\n !*** ./src/controller/eme-controller.ts ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/mediakeys-helper */ \"./src/utils/mediakeys-helper.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/**\n * @author Stephan Hesse | \n *\n * DRM support for Hls.js\n */\n\n\n\n\nvar MAX_LICENSE_REQUEST_FAILURES = 3;\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemConfiguration\n * @param {Array} audioCodecs List of required audio codecs to support\n * @param {Array} videoCodecs List of required video codecs to support\n * @param {object} drmSystemOptions Optional parameters/requirements for the key-system\n * @returns {Array} An array of supported configurations\n */\n\nvar createWidevineMediaKeySystemConfigurations = function createWidevineMediaKeySystemConfigurations(audioCodecs, videoCodecs, drmSystemOptions) {\n /* jshint ignore:line */\n var baseConfig = {\n // initDataTypes: ['keyids', 'mp4'],\n // label: \"\",\n // persistentState: \"not-allowed\", // or \"required\" ?\n // distinctiveIdentifier: \"not-allowed\", // or \"required\" ?\n // sessionTypes: ['temporary'],\n audioCapabilities: [],\n // { contentType: 'audio/mp4; codecs=\"mp4a.40.2\"' }\n videoCapabilities: [] // { contentType: 'video/mp4; codecs=\"avc1.42E01E\"' }\n\n };\n audioCodecs.forEach(function (codec) {\n baseConfig.audioCapabilities.push({\n contentType: \"audio/mp4; codecs=\\\"\" + codec + \"\\\"\",\n robustness: drmSystemOptions.audioRobustness || ''\n });\n });\n videoCodecs.forEach(function (codec) {\n baseConfig.videoCapabilities.push({\n contentType: \"video/mp4; codecs=\\\"\" + codec + \"\\\"\",\n robustness: drmSystemOptions.videoRobustness || ''\n });\n });\n return [baseConfig];\n};\n/**\n * The idea here is to handle key-system (and their respective platforms) specific configuration differences\n * in order to work with the local requestMediaKeySystemAccess method.\n *\n * We can also rule-out platform-related key-system support at this point by throwing an error.\n *\n * @param {string} keySystem Identifier for the key-system, see `KeySystems` enum\n * @param {Array} audioCodecs List of required audio codecs to support\n * @param {Array} videoCodecs List of required video codecs to support\n * @throws will throw an error if a unknown key system is passed\n * @returns {Array} A non-empty Array of MediaKeySystemConfiguration objects\n */\n\n\nvar getSupportedMediaKeySystemConfigurations = function getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, drmSystemOptions) {\n switch (keySystem) {\n case _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__[\"KeySystems\"].WIDEVINE:\n return createWidevineMediaKeySystemConfigurations(audioCodecs, videoCodecs, drmSystemOptions);\n\n default:\n throw new Error(\"Unknown key-system: \" + keySystem);\n }\n};\n\n/**\n * Controller to deal with encrypted media extensions (EME)\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API\n *\n * @class\n * @constructor\n */\nvar EMEController = /*#__PURE__*/function () {\n /**\n * @constructs\n * @param {Hls} hls Our Hls.js instance\n */\n function EMEController(hls) {\n this.hls = void 0;\n this._widevineLicenseUrl = void 0;\n this._licenseXhrSetup = void 0;\n this._licenseResponseCallback = void 0;\n this._emeEnabled = void 0;\n this._requestMediaKeySystemAccess = void 0;\n this._drmSystemOptions = void 0;\n this._config = void 0;\n this._mediaKeysList = [];\n this._media = null;\n this._hasSetMediaKeys = false;\n this._requestLicenseFailureCount = 0;\n this.mediaKeysPromise = null;\n this._onMediaEncrypted = this.onMediaEncrypted.bind(this);\n this.hls = hls;\n this._config = hls.config;\n this._widevineLicenseUrl = this._config.widevineLicenseUrl;\n this._licenseXhrSetup = this._config.licenseXhrSetup;\n this._licenseResponseCallback = this._config.licenseResponseCallback;\n this._emeEnabled = this._config.emeEnabled;\n this._requestMediaKeySystemAccess = this._config.requestMediaKeySystemAccessFunc;\n this._drmSystemOptions = this._config.drmSystemOptions;\n\n this._registerListeners();\n }\n\n var _proto = EMEController.prototype;\n\n _proto.destroy = function destroy() {\n this._unregisterListeners(); // @ts-ignore\n\n\n this.hls = this._onMediaEncrypted = null;\n this._requestMediaKeySystemAccess = null;\n };\n\n _proto._registerListeners = function _registerListeners() {\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHED, this.onMediaDetached, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHED, this.onMediaDetached, this);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n }\n /**\n * @param {string} keySystem Identifier for the key-system, see `KeySystems` enum\n * @returns {string} License server URL for key-system (if any configured, otherwise causes error)\n * @throws if a unsupported keysystem is passed\n */\n ;\n\n _proto.getLicenseServerUrl = function getLicenseServerUrl(keySystem) {\n switch (keySystem) {\n case _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__[\"KeySystems\"].WIDEVINE:\n if (!this._widevineLicenseUrl) {\n break;\n }\n\n return this._widevineLicenseUrl;\n }\n\n throw new Error(\"no license server URL configured for key-system \\\"\" + keySystem + \"\\\"\");\n }\n /**\n * Requests access object and adds it to our list upon success\n * @private\n * @param {string} keySystem System ID (see `KeySystems`)\n * @param {Array} audioCodecs List of required audio codecs to support\n * @param {Array} videoCodecs List of required video codecs to support\n * @throws When a unsupported KeySystem is passed\n */\n ;\n\n _proto._attemptKeySystemAccess = function _attemptKeySystemAccess(keySystem, audioCodecs, videoCodecs) {\n var _this = this;\n\n // This can throw, but is caught in event handler callpath\n var mediaKeySystemConfigs = getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, this._drmSystemOptions);\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('Requesting encrypted media key-system access'); // expecting interface like window.navigator.requestMediaKeySystemAccess\n\n var keySystemAccessPromise = this.requestMediaKeySystemAccess(keySystem, mediaKeySystemConfigs);\n this.mediaKeysPromise = keySystemAccessPromise.then(function (mediaKeySystemAccess) {\n return _this._onMediaKeySystemAccessObtained(keySystem, mediaKeySystemAccess);\n });\n keySystemAccessPromise.catch(function (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"Failed to obtain key-system \\\"\" + keySystem + \"\\\" access:\", err);\n });\n };\n\n /**\n * Handles obtaining access to a key-system\n * @private\n * @param {string} keySystem\n * @param {MediaKeySystemAccess} mediaKeySystemAccess https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess\n */\n _proto._onMediaKeySystemAccessObtained = function _onMediaKeySystemAccessObtained(keySystem, mediaKeySystemAccess) {\n var _this2 = this;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Access for key-system \\\"\" + keySystem + \"\\\" obtained\");\n var mediaKeysListItem = {\n mediaKeysSessionInitialized: false,\n mediaKeySystemAccess: mediaKeySystemAccess,\n mediaKeySystemDomain: keySystem\n };\n\n this._mediaKeysList.push(mediaKeysListItem);\n\n var mediaKeysPromise = Promise.resolve().then(function () {\n return mediaKeySystemAccess.createMediaKeys();\n }).then(function (mediaKeys) {\n mediaKeysListItem.mediaKeys = mediaKeys;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Media-keys created for key-system \\\"\" + keySystem + \"\\\"\");\n\n _this2._onMediaKeysCreated();\n\n return mediaKeys;\n });\n mediaKeysPromise.catch(function (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Failed to create media-keys:', err);\n });\n return mediaKeysPromise;\n }\n /**\n * Handles key-creation (represents access to CDM). We are going to create key-sessions upon this\n * for all existing keys where no session exists yet.\n *\n * @private\n */\n ;\n\n _proto._onMediaKeysCreated = function _onMediaKeysCreated() {\n var _this3 = this;\n\n // check for all key-list items if a session exists, otherwise, create one\n this._mediaKeysList.forEach(function (mediaKeysListItem) {\n if (!mediaKeysListItem.mediaKeysSession) {\n // mediaKeys is definitely initialized here\n mediaKeysListItem.mediaKeysSession = mediaKeysListItem.mediaKeys.createSession();\n\n _this3._onNewMediaKeySession(mediaKeysListItem.mediaKeysSession);\n }\n });\n }\n /**\n * @private\n * @param {*} keySession\n */\n ;\n\n _proto._onNewMediaKeySession = function _onNewMediaKeySession(keySession) {\n var _this4 = this;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"New key-system session \" + keySession.sessionId);\n keySession.addEventListener('message', function (event) {\n _this4._onKeySessionMessage(keySession, event.message);\n }, false);\n }\n /**\n * @private\n * @param {MediaKeySession} keySession\n * @param {ArrayBuffer} message\n */\n ;\n\n _proto._onKeySessionMessage = function _onKeySessionMessage(keySession, message) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('Got EME message event, creating license request');\n\n this._requestLicense(message, function (data) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Received license data (length: \" + (data ? data.byteLength : data) + \"), updating key-session\");\n keySession.update(data).catch(function (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"Updating key-session failed: \" + err);\n });\n });\n }\n /**\n * @private\n * @param e {MediaEncryptedEvent}\n */\n ;\n\n _proto.onMediaEncrypted = function onMediaEncrypted(e) {\n var _this5 = this;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Media is encrypted using \\\"\" + e.initDataType + \"\\\" init data type\");\n\n if (!this.mediaKeysPromise) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal: Media is encrypted but no CDM access or no keys have been requested');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_KEYS,\n fatal: true\n });\n return;\n }\n\n var finallySetKeyAndStartSession = function finallySetKeyAndStartSession(mediaKeys) {\n if (!_this5._media) {\n return;\n }\n\n _this5._attemptSetMediaKeys(mediaKeys);\n\n _this5._generateRequestWithPreferredKeySession(e.initDataType, e.initData);\n }; // Could use `Promise.finally` but some Promise polyfills are missing it\n\n\n this.mediaKeysPromise.then(finallySetKeyAndStartSession).catch(finallySetKeyAndStartSession);\n }\n /**\n * @private\n */\n ;\n\n _proto._attemptSetMediaKeys = function _attemptSetMediaKeys(mediaKeys) {\n if (!this._media) {\n throw new Error('Attempted to set mediaKeys without first attaching a media element');\n }\n\n if (!this._hasSetMediaKeys) {\n // FIXME: see if we can/want/need-to really to deal with several potential key-sessions?\n var keysListItem = this._mediaKeysList[0];\n\n if (!keysListItem || !keysListItem.mediaKeys) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal: Media is encrypted but no CDM access or no keys have been obtained yet');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_KEYS,\n fatal: true\n });\n return;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('Setting keys for encrypted media');\n\n this._media.setMediaKeys(keysListItem.mediaKeys);\n\n this._hasSetMediaKeys = true;\n }\n }\n /**\n * @private\n */\n ;\n\n _proto._generateRequestWithPreferredKeySession = function _generateRequestWithPreferredKeySession(initDataType, initData) {\n var _this6 = this;\n\n // FIXME: see if we can/want/need-to really to deal with several potential key-sessions?\n var keysListItem = this._mediaKeysList[0];\n\n if (!keysListItem) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal: Media is encrypted but not any key-system access has been obtained yet');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_ACCESS,\n fatal: true\n });\n return;\n }\n\n if (keysListItem.mediaKeysSessionInitialized) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('Key-Session already initialized but requested again');\n return;\n }\n\n var keySession = keysListItem.mediaKeysSession;\n\n if (!keySession) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal: Media is encrypted but no key-session existing');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_SESSION,\n fatal: true\n });\n return;\n } // initData is null if the media is not CORS-same-origin\n\n\n if (!initData) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('Fatal: initData required for generating a key session is null');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_INIT_DATA,\n fatal: true\n });\n return;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Generating key-session request for \\\"\" + initDataType + \"\\\" init data type\");\n keysListItem.mediaKeysSessionInitialized = true;\n keySession.generateRequest(initDataType, initData).then(function () {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].debug('Key-session generation succeeded');\n }).catch(function (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Error generating key-session request:', err);\n\n _this6.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_SESSION,\n fatal: false\n });\n });\n }\n /**\n * @private\n * @param {string} url License server URL\n * @param {ArrayBuffer} keyMessage Message data issued by key-system\n * @param {function} callback Called when XHR has succeeded\n * @returns {XMLHttpRequest} Unsent (but opened state) XHR object\n * @throws if XMLHttpRequest construction failed\n */\n ;\n\n _proto._createLicenseXhr = function _createLicenseXhr(url, keyMessage, callback) {\n var xhr = new XMLHttpRequest();\n xhr.responseType = 'arraybuffer';\n xhr.onreadystatechange = this._onLicenseRequestReadyStageChange.bind(this, xhr, url, keyMessage, callback);\n var licenseXhrSetup = this._licenseXhrSetup;\n\n if (licenseXhrSetup) {\n try {\n licenseXhrSetup.call(this.hls, xhr, url);\n licenseXhrSetup = undefined;\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(e);\n }\n }\n\n try {\n // if licenseXhrSetup did not yet call open, let's do it now\n if (!xhr.readyState) {\n xhr.open('POST', url, true);\n }\n\n if (licenseXhrSetup) {\n licenseXhrSetup.call(this.hls, xhr, url);\n }\n } catch (e) {\n // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS\n throw new Error(\"issue setting up KeySystem license XHR \" + e);\n }\n\n return xhr;\n }\n /**\n * @private\n * @param {XMLHttpRequest} xhr\n * @param {string} url License server URL\n * @param {ArrayBuffer} keyMessage Message data issued by key-system\n * @param {function} callback Called when XHR has succeeded\n */\n ;\n\n _proto._onLicenseRequestReadyStageChange = function _onLicenseRequestReadyStageChange(xhr, url, keyMessage, callback) {\n switch (xhr.readyState) {\n case 4:\n if (xhr.status === 200) {\n this._requestLicenseFailureCount = 0;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('License request succeeded');\n var _data = xhr.response;\n var licenseResponseCallback = this._licenseResponseCallback;\n\n if (licenseResponseCallback) {\n try {\n _data = licenseResponseCallback.call(this.hls, xhr, url);\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(e);\n }\n }\n\n callback(_data);\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"License Request XHR failed (\" + url + \"). Status: \" + xhr.status + \" (\" + xhr.statusText + \")\");\n this._requestLicenseFailureCount++;\n\n if (this._requestLicenseFailureCount > MAX_LICENSE_REQUEST_FAILURES) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n fatal: true\n });\n return;\n }\n\n var attemptsLeft = MAX_LICENSE_REQUEST_FAILURES - this._requestLicenseFailureCount + 1;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"Retrying license request, \" + attemptsLeft + \" attempts left\");\n\n this._requestLicense(keyMessage, callback);\n }\n\n break;\n }\n }\n /**\n * @private\n * @param {MediaKeysListItem} keysListItem\n * @param {ArrayBuffer} keyMessage\n * @returns {ArrayBuffer} Challenge data posted to license server\n * @throws if KeySystem is unsupported\n */\n ;\n\n _proto._generateLicenseRequestChallenge = function _generateLicenseRequestChallenge(keysListItem, keyMessage) {\n switch (keysListItem.mediaKeySystemDomain) {\n // case KeySystems.PLAYREADY:\n // from https://github.com/MicrosoftEdge/Demos/blob/master/eme/scripts/demo.js\n\n /*\n if (this.licenseType !== this.LICENSE_TYPE_WIDEVINE) {\n // For PlayReady CDMs, we need to dig the Challenge out of the XML.\n var keyMessageXml = new DOMParser().parseFromString(String.fromCharCode.apply(null, new Uint16Array(keyMessage)), 'application/xml');\n if (keyMessageXml.getElementsByTagName('Challenge')[0]) {\n challenge = atob(keyMessageXml.getElementsByTagName('Challenge')[0].childNodes[0].nodeValue);\n } else {\n throw 'Cannot find in key message';\n }\n var headerNames = keyMessageXml.getElementsByTagName('name');\n var headerValues = keyMessageXml.getElementsByTagName('value');\n if (headerNames.length !== headerValues.length) {\n throw 'Mismatched header / pair in key message';\n }\n for (var i = 0; i < headerNames.length; i++) {\n xhr.setRequestHeader(headerNames[i].childNodes[0].nodeValue, headerValues[i].childNodes[0].nodeValue);\n }\n }\n break;\n */\n case _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__[\"KeySystems\"].WIDEVINE:\n // For Widevine CDMs, the challenge is the keyMessage.\n return keyMessage;\n }\n\n throw new Error(\"unsupported key-system: \" + keysListItem.mediaKeySystemDomain);\n }\n /**\n * @private\n * @param keyMessage\n * @param callback\n */\n ;\n\n _proto._requestLicense = function _requestLicense(keyMessage, callback) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('Requesting content license for key-system');\n var keysListItem = this._mediaKeysList[0];\n\n if (!keysListItem) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal error: Media is encrypted but no key-system access has been obtained yet');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_ACCESS,\n fatal: true\n });\n return;\n }\n\n try {\n var _url = this.getLicenseServerUrl(keysListItem.mediaKeySystemDomain);\n\n var _xhr = this._createLicenseXhr(_url, keyMessage, callback);\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Sending license request to URL: \" + _url);\n\n var challenge = this._generateLicenseRequestChallenge(keysListItem, keyMessage);\n\n _xhr.send(challenge);\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"Failure requesting DRM license: \" + e);\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n fatal: true\n });\n }\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n if (!this._emeEnabled) {\n return;\n }\n\n var media = data.media; // keep reference of media\n\n this._media = media;\n media.addEventListener('encrypted', this._onMediaEncrypted);\n };\n\n _proto.onMediaDetached = function onMediaDetached() {\n var media = this._media;\n var mediaKeysList = this._mediaKeysList;\n\n if (!media) {\n return;\n }\n\n media.removeEventListener('encrypted', this._onMediaEncrypted);\n this._media = null;\n this._mediaKeysList = []; // Close all sessions and remove media keys from the video element.\n\n Promise.all(mediaKeysList.map(function (mediaKeysListItem) {\n if (mediaKeysListItem.mediaKeysSession) {\n return mediaKeysListItem.mediaKeysSession.close().catch(function () {// Ignore errors when closing the sessions. Closing a session that\n // generated no key requests will throw an error.\n });\n }\n })).then(function () {\n return media.setMediaKeys(null);\n }).catch(function () {// Ignore any failures while removing media keys from the video element.\n });\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n if (!this._emeEnabled) {\n return;\n }\n\n var audioCodecs = data.levels.map(function (level) {\n return level.audioCodec;\n }).filter(function (audioCodec) {\n return !!audioCodec;\n });\n var videoCodecs = data.levels.map(function (level) {\n return level.videoCodec;\n }).filter(function (videoCodec) {\n return !!videoCodec;\n });\n\n this._attemptKeySystemAccess(_utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__[\"KeySystems\"].WIDEVINE, audioCodecs, videoCodecs);\n };\n\n _createClass(EMEController, [{\n key: \"requestMediaKeySystemAccess\",\n get: function get() {\n if (!this._requestMediaKeySystemAccess) {\n throw new Error('No requestMediaKeySystemAccess function configured');\n }\n\n return this._requestMediaKeySystemAccess;\n }\n }]);\n\n return EMEController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EMEController);\n\n/***/ }),\n\n/***/ \"./src/controller/fps-controller.ts\":\n/*!******************************************!*\\\n !*** ./src/controller/fps-controller.ts ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\nvar FPSController = /*#__PURE__*/function () {\n // stream controller must be provided as a dependency!\n function FPSController(hls) {\n this.hls = void 0;\n this.isVideoPlaybackQualityAvailable = false;\n this.timer = void 0;\n this.media = null;\n this.lastTime = void 0;\n this.lastDroppedFrames = 0;\n this.lastDecodedFrames = 0;\n this.streamController = void 0;\n this.hls = hls;\n this.registerListeners();\n }\n\n var _proto = FPSController.prototype;\n\n _proto.setStreamController = function setStreamController(streamController) {\n this.streamController = streamController;\n };\n\n _proto.registerListeners = function registerListeners() {\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching);\n };\n\n _proto.destroy = function destroy() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n\n this.unregisterListeners();\n this.isVideoPlaybackQualityAvailable = false;\n this.media = null;\n };\n\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n var config = this.hls.config;\n\n if (config.capLevelOnFPSDrop) {\n var media = data.media instanceof self.HTMLVideoElement ? data.media : null;\n this.media = media;\n\n if (media && typeof media.getVideoPlaybackQuality === 'function') {\n this.isVideoPlaybackQualityAvailable = true;\n }\n\n self.clearInterval(this.timer);\n this.timer = self.setInterval(this.checkFPSInterval.bind(this), config.fpsDroppedMonitoringPeriod);\n }\n };\n\n _proto.checkFPS = function checkFPS(video, decodedFrames, droppedFrames) {\n var currentTime = performance.now();\n\n if (decodedFrames) {\n if (this.lastTime) {\n var currentPeriod = currentTime - this.lastTime;\n var currentDropped = droppedFrames - this.lastDroppedFrames;\n var currentDecoded = decodedFrames - this.lastDecodedFrames;\n var droppedFPS = 1000 * currentDropped / currentPeriod;\n var hls = this.hls;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FPS_DROP, {\n currentDropped: currentDropped,\n currentDecoded: currentDecoded,\n totalDroppedFrames: droppedFrames\n });\n\n if (droppedFPS > 0) {\n // logger.log('checkFPS : droppedFPS/decodedFPS:' + droppedFPS/(1000 * currentDecoded / currentPeriod));\n if (currentDropped > hls.config.fpsDroppedMonitoringThreshold * currentDecoded) {\n var currentLevel = hls.currentLevel;\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn('drop FPS ratio greater than max allowed value for currentLevel: ' + currentLevel);\n\n if (currentLevel > 0 && (hls.autoLevelCapping === -1 || hls.autoLevelCapping >= currentLevel)) {\n currentLevel = currentLevel - 1;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FPS_DROP_LEVEL_CAPPING, {\n level: currentLevel,\n droppedLevel: hls.currentLevel\n });\n hls.autoLevelCapping = currentLevel;\n this.streamController.nextLevelSwitch();\n }\n }\n }\n }\n\n this.lastTime = currentTime;\n this.lastDroppedFrames = droppedFrames;\n this.lastDecodedFrames = decodedFrames;\n }\n };\n\n _proto.checkFPSInterval = function checkFPSInterval() {\n var video = this.media;\n\n if (video) {\n if (this.isVideoPlaybackQualityAvailable) {\n var videoPlaybackQuality = video.getVideoPlaybackQuality();\n this.checkFPS(video, videoPlaybackQuality.totalVideoFrames, videoPlaybackQuality.droppedVideoFrames);\n } else {\n // HTMLVideoElement doesn't include the webkit types\n this.checkFPS(video, video.webkitDecodedFrameCount, video.webkitDroppedFrameCount);\n }\n }\n };\n\n return FPSController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FPSController);\n\n/***/ }),\n\n/***/ \"./src/controller/fragment-finders.ts\":\n/*!********************************************!*\\\n !*** ./src/controller/fragment-finders.ts ***!\n \\********************************************/\n/*! exports provided: findFragmentByPDT, findFragmentByPTS, fragmentWithinToleranceTest, pdtWithinToleranceTest, findFragWithCC */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findFragmentByPDT\", function() { return findFragmentByPDT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findFragmentByPTS\", function() { return findFragmentByPTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fragmentWithinToleranceTest\", function() { return fragmentWithinToleranceTest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pdtWithinToleranceTest\", function() { return pdtWithinToleranceTest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findFragWithCC\", function() { return findFragWithCC; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _utils_binary_search__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/binary-search */ \"./src/utils/binary-search.ts\");\n\n\n\n/**\n * Returns first fragment whose endPdt value exceeds the given PDT.\n * @param {Array} fragments - The array of candidate fragments\n * @param {number|null} [PDTValue = null] - The PDT value which must be exceeded\n * @param {number} [maxFragLookUpTolerance = 0] - The amount of time that a fragment's start/end can be within in order to be considered contiguous\n * @returns {*|null} fragment - The best matching fragment\n */\nfunction findFragmentByPDT(fragments, PDTValue, maxFragLookUpTolerance) {\n if (PDTValue === null || !Array.isArray(fragments) || !fragments.length || !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(PDTValue)) {\n return null;\n } // if less than start\n\n\n var startPDT = fragments[0].programDateTime;\n\n if (PDTValue < (startPDT || 0)) {\n return null;\n }\n\n var endPDT = fragments[fragments.length - 1].endProgramDateTime;\n\n if (PDTValue >= (endPDT || 0)) {\n return null;\n }\n\n maxFragLookUpTolerance = maxFragLookUpTolerance || 0;\n\n for (var seg = 0; seg < fragments.length; ++seg) {\n var frag = fragments[seg];\n\n if (pdtWithinToleranceTest(PDTValue, maxFragLookUpTolerance, frag)) {\n return frag;\n }\n }\n\n return null;\n}\n/**\n * Finds a fragment based on the SN of the previous fragment; or based on the needs of the current buffer.\n * This method compensates for small buffer gaps by applying a tolerance to the start of any candidate fragment, thus\n * breaking any traps which would cause the same fragment to be continuously selected within a small range.\n * @param {*} fragPrevious - The last frag successfully appended\n * @param {Array} fragments - The array of candidate fragments\n * @param {number} [bufferEnd = 0] - The end of the contiguous buffered range the playhead is currently within\n * @param {number} maxFragLookUpTolerance - The amount of time that a fragment's start/end can be within in order to be considered contiguous\n * @returns {*} foundFrag - The best matching fragment\n */\n\nfunction findFragmentByPTS(fragPrevious, fragments, bufferEnd, maxFragLookUpTolerance) {\n if (bufferEnd === void 0) {\n bufferEnd = 0;\n }\n\n if (maxFragLookUpTolerance === void 0) {\n maxFragLookUpTolerance = 0;\n }\n\n var fragNext = null;\n\n if (fragPrevious) {\n fragNext = fragments[fragPrevious.sn - fragments[0].sn + 1] || null;\n } else if (bufferEnd === 0 && fragments[0].start === 0) {\n fragNext = fragments[0];\n } // Prefer the next fragment if it's within tolerance\n\n\n if (fragNext && fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, fragNext) === 0) {\n return fragNext;\n } // We might be seeking past the tolerance so find the best match\n\n\n var foundFragment = _utils_binary_search__WEBPACK_IMPORTED_MODULE_1__[\"default\"].search(fragments, fragmentWithinToleranceTest.bind(null, bufferEnd, maxFragLookUpTolerance));\n\n if (foundFragment) {\n return foundFragment;\n } // If no match was found return the next fragment after fragPrevious, or null\n\n\n return fragNext;\n}\n/**\n * The test function used by the findFragmentBySn's BinarySearch to look for the best match to the current buffer conditions.\n * @param {*} candidate - The fragment to test\n * @param {number} [bufferEnd = 0] - The end of the current buffered range the playhead is currently within\n * @param {number} [maxFragLookUpTolerance = 0] - The amount of time that a fragment's start can be within in order to be considered contiguous\n * @returns {number} - 0 if it matches, 1 if too low, -1 if too high\n */\n\nfunction fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, candidate) {\n if (bufferEnd === void 0) {\n bufferEnd = 0;\n }\n\n if (maxFragLookUpTolerance === void 0) {\n maxFragLookUpTolerance = 0;\n }\n\n // offset should be within fragment boundary - config.maxFragLookUpTolerance\n // this is to cope with situations like\n // bufferEnd = 9.991\n // frag[Ø] : [0,10]\n // frag[1] : [10,20]\n // bufferEnd is within frag[0] range ... although what we are expecting is to return frag[1] here\n // frag start frag start+duration\n // |-----------------------------|\n // <---> <--->\n // ...--------><-----------------------------><---------....\n // previous frag matching fragment next frag\n // return -1 return 0 return 1\n // logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`);\n // Set the lookup tolerance to be small enough to detect the current segment - ensures we don't skip over very small segments\n var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0));\n\n if (candidate.start + candidate.duration - candidateLookupTolerance <= bufferEnd) {\n return 1;\n } else if (candidate.start - candidateLookupTolerance > bufferEnd && candidate.start) {\n // if maxFragLookUpTolerance will have negative value then don't return -1 for first element\n return -1;\n }\n\n return 0;\n}\n/**\n * The test function used by the findFragmentByPdt's BinarySearch to look for the best match to the current buffer conditions.\n * This function tests the candidate's program date time values, as represented in Unix time\n * @param {*} candidate - The fragment to test\n * @param {number} [pdtBufferEnd = 0] - The Unix time representing the end of the current buffered range\n * @param {number} [maxFragLookUpTolerance = 0] - The amount of time that a fragment's start can be within in order to be considered contiguous\n * @returns {boolean} True if contiguous, false otherwise\n */\n\nfunction pdtWithinToleranceTest(pdtBufferEnd, maxFragLookUpTolerance, candidate) {\n var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0)) * 1000; // endProgramDateTime can be null, default to zero\n\n var endProgramDateTime = candidate.endProgramDateTime || 0;\n return endProgramDateTime - candidateLookupTolerance > pdtBufferEnd;\n}\nfunction findFragWithCC(fragments, cc) {\n return _utils_binary_search__WEBPACK_IMPORTED_MODULE_1__[\"default\"].search(fragments, function (candidate) {\n if (candidate.cc < cc) {\n return 1;\n } else if (candidate.cc > cc) {\n return -1;\n } else {\n return 0;\n }\n });\n}\n\n/***/ }),\n\n/***/ \"./src/controller/fragment-tracker.ts\":\n/*!********************************************!*\\\n !*** ./src/controller/fragment-tracker.ts ***!\n \\********************************************/\n/*! exports provided: FragmentState, FragmentTracker */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FragmentState\", function() { return FragmentState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FragmentTracker\", function() { return FragmentTracker; });\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n\n\nvar FragmentState;\n\n(function (FragmentState) {\n FragmentState[\"NOT_LOADED\"] = \"NOT_LOADED\";\n FragmentState[\"APPENDING\"] = \"APPENDING\";\n FragmentState[\"PARTIAL\"] = \"PARTIAL\";\n FragmentState[\"OK\"] = \"OK\";\n})(FragmentState || (FragmentState = {}));\n\nvar FragmentTracker = /*#__PURE__*/function () {\n function FragmentTracker(hls) {\n this.activeFragment = null;\n this.activeParts = null;\n this.fragments = Object.create(null);\n this.timeRanges = Object.create(null);\n this.bufferPadding = 0.2;\n this.hls = void 0;\n this.hls = hls;\n\n this._registerListeners();\n }\n\n var _proto = FragmentTracker.prototype;\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_APPENDED, this.onBufferAppended, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_APPENDED, this.onBufferAppended, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n };\n\n _proto.destroy = function destroy() {\n this._unregisterListeners(); // @ts-ignore\n\n\n this.fragments = this.timeRanges = null;\n }\n /**\n * Return a Fragment with an appended range that matches the position and levelType.\n * If not found any Fragment, return null\n */\n ;\n\n _proto.getAppendedFrag = function getAppendedFrag(position, levelType) {\n if (levelType === _types_loader__WEBPACK_IMPORTED_MODULE_1__[\"PlaylistLevelType\"].MAIN) {\n var activeFragment = this.activeFragment,\n activeParts = this.activeParts;\n\n if (!activeFragment) {\n return null;\n }\n\n if (activeParts) {\n for (var i = activeParts.length; i--;) {\n var activePart = activeParts[i];\n var appendedPTS = activePart ? activePart.end : activeFragment.appendedPTS;\n\n if (activePart.start <= position && appendedPTS !== undefined && position <= appendedPTS) {\n // 9 is a magic number. remove parts from lookup after a match but keep some short seeks back.\n if (i > 9) {\n this.activeParts = activeParts.slice(i - 9);\n }\n\n return activePart;\n }\n }\n } else if (activeFragment.start <= position && activeFragment.appendedPTS !== undefined && position <= activeFragment.appendedPTS) {\n return activeFragment;\n }\n }\n\n return this.getBufferedFrag(position, levelType);\n }\n /**\n * Return a buffered Fragment that matches the position and levelType.\n * A buffered Fragment is one whose loading, parsing and appending is done (completed or \"partial\" meaning aborted).\n * If not found any Fragment, return null\n */\n ;\n\n _proto.getBufferedFrag = function getBufferedFrag(position, levelType) {\n var fragments = this.fragments;\n var keys = Object.keys(fragments);\n\n for (var i = keys.length; i--;) {\n var fragmentEntity = fragments[keys[i]];\n\n if ((fragmentEntity === null || fragmentEntity === void 0 ? void 0 : fragmentEntity.body.type) === levelType && fragmentEntity.buffered) {\n var frag = fragmentEntity.body;\n\n if (frag.start <= position && position <= frag.end) {\n return frag;\n }\n }\n }\n\n return null;\n }\n /**\n * Partial fragments effected by coded frame eviction will be removed\n * The browser will unload parts of the buffer to free up memory for new buffer data\n * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable)\n */\n ;\n\n _proto.detectEvictedFragments = function detectEvictedFragments(elementaryStream, timeRange, playlistType) {\n var _this = this;\n\n // Check if any flagged fragments have been unloaded\n Object.keys(this.fragments).forEach(function (key) {\n var fragmentEntity = _this.fragments[key];\n\n if (!fragmentEntity) {\n return;\n }\n\n if (!fragmentEntity.buffered) {\n if (fragmentEntity.body.type === playlistType) {\n _this.removeFragment(fragmentEntity.body);\n }\n\n return;\n }\n\n var esData = fragmentEntity.range[elementaryStream];\n\n if (!esData) {\n return;\n }\n\n esData.time.some(function (time) {\n var isNotBuffered = !_this.isTimeBuffered(time.startPTS, time.endPTS, timeRange);\n\n if (isNotBuffered) {\n // Unregister partial fragment as it needs to load again to be reused\n _this.removeFragment(fragmentEntity.body);\n }\n\n return isNotBuffered;\n });\n });\n }\n /**\n * Checks if the fragment passed in is loaded in the buffer properly\n * Partially loaded fragments will be registered as a partial fragment\n */\n ;\n\n _proto.detectPartialFragments = function detectPartialFragments(data) {\n var _this2 = this;\n\n var timeRanges = this.timeRanges;\n var frag = data.frag,\n part = data.part;\n\n if (!timeRanges || frag.sn === 'initSegment') {\n return;\n }\n\n var fragKey = getFragmentKey(frag);\n var fragmentEntity = this.fragments[fragKey];\n\n if (!fragmentEntity) {\n return;\n }\n\n Object.keys(timeRanges).forEach(function (elementaryStream) {\n var streamInfo = frag.elementaryStreams[elementaryStream];\n\n if (!streamInfo) {\n return;\n }\n\n var timeRange = timeRanges[elementaryStream];\n var partial = part !== null || streamInfo.partial === true;\n fragmentEntity.range[elementaryStream] = _this2.getBufferedTimes(frag, part, partial, timeRange);\n });\n fragmentEntity.loaded = null;\n\n if (Object.keys(fragmentEntity.range).length) {\n fragmentEntity.buffered = true;\n } else {\n // remove fragment if nothing was appended\n this.removeFragment(fragmentEntity.body);\n }\n };\n\n _proto.fragBuffered = function fragBuffered(frag) {\n var fragKey = getFragmentKey(frag);\n var fragmentEntity = this.fragments[fragKey];\n\n if (fragmentEntity) {\n fragmentEntity.loaded = null;\n fragmentEntity.buffered = true;\n }\n };\n\n _proto.getBufferedTimes = function getBufferedTimes(fragment, part, partial, timeRange) {\n var buffered = {\n time: [],\n partial: partial\n };\n var startPTS = part ? part.start : fragment.start;\n var endPTS = part ? part.end : fragment.end;\n var minEndPTS = fragment.minEndPTS || endPTS;\n var maxStartPTS = fragment.maxStartPTS || startPTS;\n\n for (var i = 0; i < timeRange.length; i++) {\n var startTime = timeRange.start(i) - this.bufferPadding;\n var endTime = timeRange.end(i) + this.bufferPadding;\n\n if (maxStartPTS >= startTime && minEndPTS <= endTime) {\n // Fragment is entirely contained in buffer\n // No need to check the other timeRange times since it's completely playable\n buffered.time.push({\n startPTS: Math.max(startPTS, timeRange.start(i)),\n endPTS: Math.min(endPTS, timeRange.end(i))\n });\n break;\n } else if (startPTS < endTime && endPTS > startTime) {\n buffered.partial = true; // Check for intersection with buffer\n // Get playable sections of the fragment\n\n buffered.time.push({\n startPTS: Math.max(startPTS, timeRange.start(i)),\n endPTS: Math.min(endPTS, timeRange.end(i))\n });\n } else if (endPTS <= startTime) {\n // No need to check the rest of the timeRange as it is in order\n break;\n }\n }\n\n return buffered;\n }\n /**\n * Gets the partial fragment for a certain time\n */\n ;\n\n _proto.getPartialFragment = function getPartialFragment(time) {\n var bestFragment = null;\n var timePadding;\n var startTime;\n var endTime;\n var bestOverlap = 0;\n var bufferPadding = this.bufferPadding,\n fragments = this.fragments;\n Object.keys(fragments).forEach(function (key) {\n var fragmentEntity = fragments[key];\n\n if (!fragmentEntity) {\n return;\n }\n\n if (isPartial(fragmentEntity)) {\n startTime = fragmentEntity.body.start - bufferPadding;\n endTime = fragmentEntity.body.end + bufferPadding;\n\n if (time >= startTime && time <= endTime) {\n // Use the fragment that has the most padding from start and end time\n timePadding = Math.min(time - startTime, endTime - time);\n\n if (bestOverlap <= timePadding) {\n bestFragment = fragmentEntity.body;\n bestOverlap = timePadding;\n }\n }\n }\n });\n return bestFragment;\n };\n\n _proto.getState = function getState(fragment) {\n var fragKey = getFragmentKey(fragment);\n var fragmentEntity = this.fragments[fragKey];\n\n if (fragmentEntity) {\n if (!fragmentEntity.buffered) {\n return FragmentState.APPENDING;\n } else if (isPartial(fragmentEntity)) {\n return FragmentState.PARTIAL;\n } else {\n return FragmentState.OK;\n }\n }\n\n return FragmentState.NOT_LOADED;\n };\n\n _proto.isTimeBuffered = function isTimeBuffered(startPTS, endPTS, timeRange) {\n var startTime;\n var endTime;\n\n for (var i = 0; i < timeRange.length; i++) {\n startTime = timeRange.start(i) - this.bufferPadding;\n endTime = timeRange.end(i) + this.bufferPadding;\n\n if (startPTS >= startTime && endPTS <= endTime) {\n return true;\n }\n\n if (endPTS <= startTime) {\n // No need to check the rest of the timeRange as it is in order\n return false;\n }\n }\n\n return false;\n };\n\n _proto.onFragLoaded = function onFragLoaded(event, data) {\n var frag = data.frag,\n part = data.part; // don't track initsegment (for which sn is not a number)\n // don't track frags used for bitrateTest, they're irrelevant.\n // don't track parts for memory efficiency\n\n if (frag.sn === 'initSegment' || frag.bitrateTest || part) {\n return;\n }\n\n var fragKey = getFragmentKey(frag);\n this.fragments[fragKey] = {\n body: frag,\n loaded: data,\n buffered: false,\n range: Object.create(null)\n };\n };\n\n _proto.onBufferAppended = function onBufferAppended(event, data) {\n var _this3 = this;\n\n var frag = data.frag,\n part = data.part,\n timeRanges = data.timeRanges;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_1__[\"PlaylistLevelType\"].MAIN) {\n this.activeFragment = frag;\n\n if (part) {\n var activeParts = this.activeParts;\n\n if (!activeParts) {\n this.activeParts = activeParts = [];\n }\n\n activeParts.push(part);\n } else {\n this.activeParts = null;\n }\n } // Store the latest timeRanges loaded in the buffer\n\n\n this.timeRanges = timeRanges;\n Object.keys(timeRanges).forEach(function (elementaryStream) {\n var timeRange = timeRanges[elementaryStream];\n\n _this3.detectEvictedFragments(elementaryStream, timeRange);\n\n if (!part) {\n for (var i = 0; i < timeRange.length; i++) {\n frag.appendedPTS = Math.max(timeRange.end(i), frag.appendedPTS || 0);\n }\n }\n });\n };\n\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n this.detectPartialFragments(data);\n };\n\n _proto.hasFragment = function hasFragment(fragment) {\n var fragKey = getFragmentKey(fragment);\n return !!this.fragments[fragKey];\n };\n\n _proto.removeFragmentsInRange = function removeFragmentsInRange(start, end, playlistType) {\n var _this4 = this;\n\n Object.keys(this.fragments).forEach(function (key) {\n var fragmentEntity = _this4.fragments[key];\n\n if (!fragmentEntity) {\n return;\n }\n\n if (fragmentEntity.buffered) {\n var frag = fragmentEntity.body;\n\n if (frag.type === playlistType && frag.start < end && frag.end > start) {\n _this4.removeFragment(frag);\n }\n }\n });\n };\n\n _proto.removeFragment = function removeFragment(fragment) {\n var fragKey = getFragmentKey(fragment);\n fragment.stats.loaded = 0;\n fragment.clearElementaryStreamInfo();\n delete this.fragments[fragKey];\n };\n\n _proto.removeAllFragments = function removeAllFragments() {\n this.fragments = Object.create(null);\n this.activeFragment = null;\n this.activeParts = null;\n };\n\n return FragmentTracker;\n}();\n\nfunction isPartial(fragmentEntity) {\n var _fragmentEntity$range, _fragmentEntity$range2;\n\n return fragmentEntity.buffered && (((_fragmentEntity$range = fragmentEntity.range.video) === null || _fragmentEntity$range === void 0 ? void 0 : _fragmentEntity$range.partial) || ((_fragmentEntity$range2 = fragmentEntity.range.audio) === null || _fragmentEntity$range2 === void 0 ? void 0 : _fragmentEntity$range2.partial));\n}\n\nfunction getFragmentKey(fragment) {\n return fragment.type + \"_\" + fragment.level + \"_\" + fragment.urlId + \"_\" + fragment.sn;\n}\n\n/***/ }),\n\n/***/ \"./src/controller/gap-controller.ts\":\n/*!******************************************!*\\\n !*** ./src/controller/gap-controller.ts ***!\n \\******************************************/\n/*! exports provided: STALL_MINIMUM_DURATION_MS, MAX_START_GAP_JUMP, SKIP_BUFFER_HOLE_STEP_SECONDS, SKIP_BUFFER_RANGE_START, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STALL_MINIMUM_DURATION_MS\", function() { return STALL_MINIMUM_DURATION_MS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MAX_START_GAP_JUMP\", function() { return MAX_START_GAP_JUMP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SKIP_BUFFER_HOLE_STEP_SECONDS\", function() { return SKIP_BUFFER_HOLE_STEP_SECONDS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SKIP_BUFFER_RANGE_START\", function() { return SKIP_BUFFER_RANGE_START; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return GapController; });\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\n\nvar STALL_MINIMUM_DURATION_MS = 250;\nvar MAX_START_GAP_JUMP = 2.0;\nvar SKIP_BUFFER_HOLE_STEP_SECONDS = 0.1;\nvar SKIP_BUFFER_RANGE_START = 0.05;\n\nvar GapController = /*#__PURE__*/function () {\n function GapController(config, media, fragmentTracker, hls) {\n this.config = void 0;\n this.media = null;\n this.fragmentTracker = void 0;\n this.hls = void 0;\n this.nudgeRetry = 0;\n this.stallReported = false;\n this.stalled = null;\n this.moved = false;\n this.seeking = false;\n this.config = config;\n this.media = media;\n this.fragmentTracker = fragmentTracker;\n this.hls = hls;\n }\n\n var _proto = GapController.prototype;\n\n _proto.destroy = function destroy() {\n this.media = null; // @ts-ignore\n\n this.hls = this.fragmentTracker = null;\n }\n /**\n * Checks if the playhead is stuck within a gap, and if so, attempts to free it.\n * A gap is an unbuffered range between two buffered ranges (or the start and the first buffered range).\n *\n * @param {number} lastCurrentTime Previously read playhead position\n */\n ;\n\n _proto.poll = function poll(lastCurrentTime, activeFrag) {\n var config = this.config,\n media = this.media,\n stalled = this.stalled;\n\n if (media === null) {\n return;\n }\n\n var currentTime = media.currentTime,\n seeking = media.seeking;\n var seeked = this.seeking && !seeking;\n var beginSeek = !this.seeking && seeking;\n this.seeking = seeking; // The playhead is moving, no-op\n\n if (currentTime !== lastCurrentTime) {\n this.moved = true;\n\n if (stalled !== null) {\n // The playhead is now moving, but was previously stalled\n if (this.stallReported) {\n var _stalledDuration = self.performance.now() - stalled;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"playback not stuck anymore @\" + currentTime + \", after \" + Math.round(_stalledDuration) + \"ms\");\n this.stallReported = false;\n }\n\n this.stalled = null;\n this.nudgeRetry = 0;\n }\n\n return;\n } // Clear stalled state when beginning or finishing seeking so that we don't report stalls coming out of a seek\n\n\n if (beginSeek || seeked) {\n this.stalled = null;\n } // The playhead should not be moving\n\n\n if (media.paused && !seeking || media.ended || media.playbackRate === 0 || !_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__[\"BufferHelper\"].getBuffered(media).length) {\n return;\n }\n\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__[\"BufferHelper\"].bufferInfo(media, currentTime, 0);\n var isBuffered = bufferInfo.len > 0;\n var nextStart = bufferInfo.nextStart || 0; // There is no playable buffer (seeked, waiting for buffer)\n\n if (!isBuffered && !nextStart) {\n return;\n }\n\n if (seeking) {\n // Waiting for seeking in a buffered range to complete\n var hasEnoughBuffer = bufferInfo.len > MAX_START_GAP_JUMP; // Next buffered range is too far ahead to jump to while still seeking\n\n var noBufferGap = !nextStart || activeFrag && activeFrag.start <= currentTime || nextStart - currentTime > MAX_START_GAP_JUMP && !this.fragmentTracker.getPartialFragment(currentTime);\n\n if (hasEnoughBuffer || noBufferGap) {\n return;\n } // Reset moved state when seeking to a point in or before a gap\n\n\n this.moved = false;\n } // Skip start gaps if we haven't played, but the last poll detected the start of a stall\n // The addition poll gives the browser a chance to jump the gap for us\n\n\n if (!this.moved && this.stalled !== null) {\n var _level$details;\n\n // Jump start gaps within jump threshold\n var startJump = Math.max(nextStart, bufferInfo.start || 0) - currentTime; // When joining a live stream with audio tracks, account for live playlist window sliding by allowing\n // a larger jump over start gaps caused by the audio-stream-controller buffering a start fragment\n // that begins over 1 target duration after the video start position.\n\n var level = this.hls.levels ? this.hls.levels[this.hls.currentLevel] : null;\n var isLive = level === null || level === void 0 ? void 0 : (_level$details = level.details) === null || _level$details === void 0 ? void 0 : _level$details.live;\n var maxStartGapJump = isLive ? level.details.targetduration * 2 : MAX_START_GAP_JUMP;\n\n if (startJump > 0 && startJump <= maxStartGapJump) {\n this._trySkipBufferHole(null);\n\n return;\n }\n } // Start tracking stall time\n\n\n var tnow = self.performance.now();\n\n if (stalled === null) {\n this.stalled = tnow;\n return;\n }\n\n var stalledDuration = tnow - stalled;\n\n if (!seeking && stalledDuration >= STALL_MINIMUM_DURATION_MS) {\n // Report stalling after trying to fix\n this._reportStall(bufferInfo);\n\n if (!this.media) {\n return;\n }\n }\n\n var bufferedWithHoles = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__[\"BufferHelper\"].bufferInfo(media, currentTime, config.maxBufferHole);\n\n this._tryFixBufferStall(bufferedWithHoles, stalledDuration);\n }\n /**\n * Detects and attempts to fix known buffer stalling issues.\n * @param bufferInfo - The properties of the current buffer.\n * @param stalledDurationMs - The amount of time Hls.js has been stalling for.\n * @private\n */\n ;\n\n _proto._tryFixBufferStall = function _tryFixBufferStall(bufferInfo, stalledDurationMs) {\n var config = this.config,\n fragmentTracker = this.fragmentTracker,\n media = this.media;\n\n if (media === null) {\n return;\n }\n\n var currentTime = media.currentTime;\n var partial = fragmentTracker.getPartialFragment(currentTime);\n\n if (partial) {\n // Try to skip over the buffer hole caused by a partial fragment\n // This method isn't limited by the size of the gap between buffered ranges\n var targetTime = this._trySkipBufferHole(partial); // we return here in this case, meaning\n // the branch below only executes when we don't handle a partial fragment\n\n\n if (targetTime || !this.media) {\n return;\n }\n } // if we haven't had to skip over a buffer hole of a partial fragment\n // we may just have to \"nudge\" the playlist as the browser decoding/rendering engine\n // needs to cross some sort of threshold covering all source-buffers content\n // to start playing properly.\n\n\n if (bufferInfo.len > config.maxBufferHole && stalledDurationMs > config.highBufferWatchdogPeriod * 1000) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('Trying to nudge playhead over buffer-hole'); // Try to nudge currentTime over a buffer hole if we've been stalling for the configured amount of seconds\n // We only try to jump the hole if it's under the configured size\n // Reset stalled so to rearm watchdog timer\n\n this.stalled = null;\n\n this._tryNudgeBuffer();\n }\n }\n /**\n * Triggers a BUFFER_STALLED_ERROR event, but only once per stall period.\n * @param bufferLen - The playhead distance from the end of the current buffer segment.\n * @private\n */\n ;\n\n _proto._reportStall = function _reportStall(bufferInfo) {\n var hls = this.hls,\n media = this.media,\n stallReported = this.stallReported;\n\n if (!stallReported && media) {\n // Report stalled error once\n this.stallReported = true;\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"Playback stalling at @\" + media.currentTime + \" due to low buffer (\" + JSON.stringify(bufferInfo) + \")\");\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].BUFFER_STALLED_ERROR,\n fatal: false,\n buffer: bufferInfo.len\n });\n }\n }\n /**\n * Attempts to fix buffer stalls by jumping over known gaps caused by partial fragments\n * @param partial - The partial fragment found at the current time (where playback is stalling).\n * @private\n */\n ;\n\n _proto._trySkipBufferHole = function _trySkipBufferHole(partial) {\n var config = this.config,\n hls = this.hls,\n media = this.media;\n\n if (media === null) {\n return 0;\n }\n\n var currentTime = media.currentTime;\n var lastEndTime = 0; // Check if currentTime is between unbuffered regions of partial fragments\n\n var buffered = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__[\"BufferHelper\"].getBuffered(media);\n\n for (var i = 0; i < buffered.length; i++) {\n var startTime = buffered.start(i);\n\n if (currentTime + config.maxBufferHole >= lastEndTime && currentTime < startTime) {\n var targetTime = Math.max(startTime + SKIP_BUFFER_RANGE_START, media.currentTime + SKIP_BUFFER_HOLE_STEP_SECONDS);\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"skipping hole, adjusting currentTime from \" + currentTime + \" to \" + targetTime);\n this.moved = true;\n this.stalled = null;\n media.currentTime = targetTime;\n\n if (partial) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].BUFFER_SEEK_OVER_HOLE,\n fatal: false,\n reason: \"fragment loaded with buffer holes, seeking from \" + currentTime + \" to \" + targetTime,\n frag: partial\n });\n }\n\n return targetTime;\n }\n\n lastEndTime = buffered.end(i);\n }\n\n return 0;\n }\n /**\n * Attempts to fix buffer stalls by advancing the mediaElement's current time by a small amount.\n * @private\n */\n ;\n\n _proto._tryNudgeBuffer = function _tryNudgeBuffer() {\n var config = this.config,\n hls = this.hls,\n media = this.media,\n nudgeRetry = this.nudgeRetry;\n\n if (media === null) {\n return;\n }\n\n var currentTime = media.currentTime;\n this.nudgeRetry++;\n\n if (nudgeRetry < config.nudgeMaxRetry) {\n var targetTime = currentTime + (nudgeRetry + 1) * config.nudgeOffset; // playback stalled in buffered area ... let's nudge currentTime to try to overcome this\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"Nudging 'currentTime' from \" + currentTime + \" to \" + targetTime);\n media.currentTime = targetTime;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].BUFFER_NUDGE_ON_STALL,\n fatal: false\n });\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].error(\"Playhead still not moving while enough data buffered @\" + currentTime + \" after \" + config.nudgeMaxRetry + \" nudges\");\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].BUFFER_STALLED_ERROR,\n fatal: true\n });\n }\n };\n\n return GapController;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/id3-track-controller.ts\":\n/*!************************************************!*\\\n !*** ./src/controller/id3-track-controller.ts ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/texttrack-utils */ \"./src/utils/texttrack-utils.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\n/* harmony import */ var _loader_date_range__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../loader/date-range */ \"./src/loader/date-range.ts\");\n/* harmony import */ var _types_demuxer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../types/demuxer */ \"./src/types/demuxer.ts\");\n\n\n\n\n\n\nvar MIN_CUE_DURATION = 0.25;\n\nfunction getCueClass() {\n // Attempt to recreate Safari functionality by creating\n // WebKitDataCue objects when available and store the decoded\n // ID3 data in the value property of the cue\n return self.WebKitDataCue || self.VTTCue || self.TextTrackCue;\n}\n\nfunction dateRangeDateToTimelineSeconds(date, offset) {\n return date.getTime() / 1000 - offset;\n}\n\nfunction hexToArrayBuffer(str) {\n return Uint8Array.from(str.replace(/^0x/, '').replace(/([\\da-fA-F]{2}) ?/g, '0x$1 ').replace(/ +$/, '').split(' ')).buffer;\n}\n\nvar ID3TrackController = /*#__PURE__*/function () {\n function ID3TrackController(hls) {\n this.hls = void 0;\n this.id3Track = null;\n this.media = null;\n this.dateRangeCuesAppended = {};\n this.hls = hls;\n\n this._registerListeners();\n }\n\n var _proto = ID3TrackController.prototype;\n\n _proto.destroy = function destroy() {\n this._unregisterListeners();\n\n this.id3Track = null;\n this.media = null;\n this.dateRangeCuesAppended = {}; // @ts-ignore\n\n this.hls = null;\n };\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated, this);\n } // Add ID3 metatadata text track.\n ;\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n if (!this.id3Track) {\n return;\n }\n\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__[\"clearCurrentCues\"])(this.id3Track);\n this.id3Track = null;\n this.media = null;\n this.dateRangeCuesAppended = {};\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.dateRangeCuesAppended = {};\n };\n\n _proto.createTrack = function createTrack(media) {\n var track = this.getID3Track(media.textTracks);\n track.mode = 'hidden';\n return track;\n };\n\n _proto.getID3Track = function getID3Track(textTracks) {\n if (!this.media) {\n return;\n }\n\n for (var i = 0; i < textTracks.length; i++) {\n var textTrack = textTracks[i];\n\n if (textTrack.kind === 'metadata' && textTrack.label === 'id3') {\n // send 'addtrack' when reusing the textTrack for metadata,\n // same as what we do for captions\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__[\"sendAddTrackEvent\"])(textTrack, this.media);\n return textTrack;\n }\n }\n\n return this.media.addTextTrack('metadata', 'id3');\n };\n\n _proto.onFragParsingMetadata = function onFragParsingMetadata(event, data) {\n if (!this.media) {\n return;\n }\n\n var _this$hls$config = this.hls.config,\n enableEmsgMetadataCues = _this$hls$config.enableEmsgMetadataCues,\n enableID3MetadataCues = _this$hls$config.enableID3MetadataCues;\n\n if (!enableEmsgMetadataCues && !enableID3MetadataCues) {\n return;\n }\n\n var fragment = data.frag,\n samples = data.samples,\n details = data.details; // create track dynamically\n\n if (!this.id3Track) {\n this.id3Track = this.createTrack(this.media);\n } // VTTCue end time must be finite, so use playlist edge or fragment end until next fragment with same frame type is found\n\n\n var maxCueTime = details.edge || fragment.end;\n var Cue = getCueClass();\n var updateCueRanges = false;\n var frameTypesAdded = {};\n\n for (var i = 0; i < samples.length; i++) {\n var type = samples[i].type;\n\n if (type === _types_demuxer__WEBPACK_IMPORTED_MODULE_5__[\"MetadataSchema\"].emsg && !enableEmsgMetadataCues || !enableID3MetadataCues) {\n continue;\n }\n\n var frames = _demux_id3__WEBPACK_IMPORTED_MODULE_3__[\"getID3Frames\"](samples[i].data);\n\n if (frames) {\n var startTime = samples[i].pts;\n var endTime = maxCueTime;\n var timeDiff = endTime - startTime;\n\n if (timeDiff <= 0) {\n endTime = startTime + MIN_CUE_DURATION;\n }\n\n for (var j = 0; j < frames.length; j++) {\n var frame = frames[j]; // Safari doesn't put the timestamp frame in the TextTrack\n\n if (!_demux_id3__WEBPACK_IMPORTED_MODULE_3__[\"isTimeStampFrame\"](frame)) {\n var cue = new Cue(startTime, endTime, '');\n cue.value = frame;\n\n if (type) {\n cue.type = type;\n }\n\n this.id3Track.addCue(cue);\n frameTypesAdded[frame.key] = null;\n updateCueRanges = true;\n }\n }\n }\n }\n\n if (updateCueRanges) {\n this.updateId3CueEnds(frameTypesAdded);\n }\n };\n\n _proto.updateId3CueEnds = function updateId3CueEnds(frameTypesAdded) {\n var _this$id3Track;\n\n // Update endTime of previous cue with same IDR frame.type (Ex: TXXX cue spans to next TXXX)\n var cues = (_this$id3Track = this.id3Track) === null || _this$id3Track === void 0 ? void 0 : _this$id3Track.cues;\n\n if (cues) {\n for (var i = cues.length; i--;) {\n var _cue$value;\n\n var cue = cues[i];\n var frameType = (_cue$value = cue.value) === null || _cue$value === void 0 ? void 0 : _cue$value.key;\n\n if (frameType && frameType in frameTypesAdded) {\n var startTime = frameTypesAdded[frameType];\n\n if (startTime && cue.endTime !== startTime) {\n cue.endTime = startTime;\n }\n\n frameTypesAdded[frameType] = cue.startTime;\n }\n }\n }\n };\n\n _proto.onBufferFlushing = function onBufferFlushing(event, _ref) {\n var startOffset = _ref.startOffset,\n endOffset = _ref.endOffset,\n type = _ref.type;\n var id3Track = this.id3Track,\n hls = this.hls;\n\n if (!hls) {\n return;\n }\n\n var _hls$config = hls.config,\n enableEmsgMetadataCues = _hls$config.enableEmsgMetadataCues,\n enableID3MetadataCues = _hls$config.enableID3MetadataCues;\n\n if (id3Track && (enableEmsgMetadataCues || enableID3MetadataCues)) {\n var predicate;\n\n if (type === 'audio') {\n predicate = function predicate(cue) {\n return cue.type === _types_demuxer__WEBPACK_IMPORTED_MODULE_5__[\"MetadataSchema\"].audioId3 && enableID3MetadataCues;\n };\n } else if (type === 'video') {\n predicate = function predicate(cue) {\n return cue.type === _types_demuxer__WEBPACK_IMPORTED_MODULE_5__[\"MetadataSchema\"].emsg && enableEmsgMetadataCues;\n };\n } else {\n predicate = function predicate(cue) {\n return cue.type === _types_demuxer__WEBPACK_IMPORTED_MODULE_5__[\"MetadataSchema\"].audioId3 && enableID3MetadataCues || cue.type === _types_demuxer__WEBPACK_IMPORTED_MODULE_5__[\"MetadataSchema\"].emsg && enableEmsgMetadataCues;\n };\n }\n\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__[\"removeCuesInRange\"])(id3Track, startOffset, endOffset, predicate);\n }\n };\n\n _proto.onLevelUpdated = function onLevelUpdated(event, _ref2) {\n var _this = this;\n\n var details = _ref2.details;\n\n if (!this.media || !details.hasProgramDateTime || !this.hls.config.enableDateRangeMetadataCues) {\n return;\n }\n\n var dateRangeCuesAppended = this.dateRangeCuesAppended,\n id3Track = this.id3Track;\n var dateRanges = details.dateRanges;\n var ids = Object.keys(dateRanges); // Remove cues from track not found in details.dateRanges\n\n if (id3Track) {\n var idsToRemove = Object.keys(dateRangeCuesAppended).filter(function (id) {\n return !ids.includes(id);\n });\n\n var _loop = function _loop(i) {\n var id = idsToRemove[i];\n Object.keys(dateRangeCuesAppended[id].cues).forEach(function (key) {\n id3Track.removeCue(dateRangeCuesAppended[id].cues[key]);\n });\n delete dateRangeCuesAppended[id];\n };\n\n for (var i = idsToRemove.length; i--;) {\n _loop(i);\n }\n } // Exit if the playlist does not have Date Ranges or does not have Program Date Time\n\n\n var lastFragment = details.fragments[details.fragments.length - 1];\n\n if (ids.length === 0 || !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(lastFragment === null || lastFragment === void 0 ? void 0 : lastFragment.programDateTime)) {\n return;\n }\n\n if (!this.id3Track) {\n this.id3Track = this.createTrack(this.media);\n }\n\n var dateTimeOffset = lastFragment.programDateTime / 1000 - lastFragment.start;\n var maxCueTime = details.edge || lastFragment.end;\n var Cue = getCueClass();\n\n var _loop2 = function _loop2(_i) {\n var id = ids[_i];\n var dateRange = dateRanges[id];\n var appendedDateRangeCues = dateRangeCuesAppended[id];\n var cues = (appendedDateRangeCues === null || appendedDateRangeCues === void 0 ? void 0 : appendedDateRangeCues.cues) || {};\n var durationKnown = (appendedDateRangeCues === null || appendedDateRangeCues === void 0 ? void 0 : appendedDateRangeCues.durationKnown) || false;\n var startTime = dateRangeDateToTimelineSeconds(dateRange.startDate, dateTimeOffset);\n var endTime = maxCueTime;\n var endDate = dateRange.endDate;\n\n if (endDate) {\n endTime = dateRangeDateToTimelineSeconds(endDate, dateTimeOffset);\n durationKnown = true;\n } else if (dateRange.endOnNext && !durationKnown) {\n var nextDateRangeWithSameClass = ids.reduce(function (filterMapArray, id) {\n var candidate = dateRanges[id];\n\n if (candidate.class === dateRange.class && candidate.id !== id && candidate.startDate > dateRange.startDate) {\n filterMapArray.push(candidate);\n }\n\n return filterMapArray;\n }, []).sort(function (a, b) {\n return a.startDate.getTime() - b.startDate.getTime();\n })[0];\n\n if (nextDateRangeWithSameClass) {\n endTime = dateRangeDateToTimelineSeconds(nextDateRangeWithSameClass.startDate, dateTimeOffset);\n durationKnown = true;\n }\n }\n\n var attributes = Object.keys(dateRange.attr);\n\n for (var j = 0; j < attributes.length; j++) {\n var key = attributes[j];\n\n if (key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].ID || key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].CLASS || key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].START_DATE || key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].DURATION || key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].END_DATE || key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].END_ON_NEXT) {\n continue;\n }\n\n var cue = cues[key];\n\n if (cue) {\n if (durationKnown && !appendedDateRangeCues.durationKnown) {\n cue.endTime = endTime;\n }\n } else {\n var data = dateRange.attr[key];\n cue = new Cue(startTime, endTime, '');\n\n if (key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].SCTE35_OUT || key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].SCTE35_IN) {\n data = hexToArrayBuffer(data);\n }\n\n cue.value = {\n key: key,\n data: data\n };\n cue.type = _types_demuxer__WEBPACK_IMPORTED_MODULE_5__[\"MetadataSchema\"].dateRange;\n\n _this.id3Track.addCue(cue);\n\n cues[key] = cue;\n }\n }\n\n dateRangeCuesAppended[id] = {\n cues: cues,\n dateRange: dateRange,\n durationKnown: durationKnown\n };\n };\n\n for (var _i = 0; _i < ids.length; _i++) {\n _loop2(_i);\n }\n };\n\n return ID3TrackController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ID3TrackController);\n\n/***/ }),\n\n/***/ \"./src/controller/latency-controller.ts\":\n/*!**********************************************!*\\\n !*** ./src/controller/latency-controller.ts ***!\n \\**********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return LatencyController; });\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n\nvar LatencyController = /*#__PURE__*/function () {\n function LatencyController(hls) {\n var _this = this;\n\n this.hls = void 0;\n this.config = void 0;\n this.media = null;\n this.levelDetails = null;\n this.currentTime = 0;\n this.stallCount = 0;\n this._latency = null;\n\n this.timeupdateHandler = function () {\n return _this.timeupdate();\n };\n\n this.hls = hls;\n this.config = hls.config;\n this.registerListeners();\n }\n\n var _proto = LatencyController.prototype;\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.onMediaDetaching();\n this.levelDetails = null; // @ts-ignore\n\n this.hls = this.timeupdateHandler = null;\n };\n\n _proto.registerListeners = function registerListeners() {\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, this.onError);\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n this.media.addEventListener('timeupdate', this.timeupdateHandler);\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n if (this.media) {\n this.media.removeEventListener('timeupdate', this.timeupdateHandler);\n this.media = null;\n }\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.levelDetails = null;\n this._latency = null;\n this.stallCount = 0;\n };\n\n _proto.onLevelUpdated = function onLevelUpdated(event, _ref) {\n var details = _ref.details;\n this.levelDetails = details;\n\n if (details.advanced) {\n this.timeupdate();\n }\n\n if (!details.live && this.media) {\n this.media.removeEventListener('timeupdate', this.timeupdateHandler);\n }\n };\n\n _proto.onError = function onError(event, data) {\n if (data.details !== _errors__WEBPACK_IMPORTED_MODULE_0__[\"ErrorDetails\"].BUFFER_STALLED_ERROR) {\n return;\n }\n\n this.stallCount++;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('[playback-rate-controller]: Stall detected, adjusting target latency');\n };\n\n _proto.timeupdate = function timeupdate() {\n var media = this.media,\n levelDetails = this.levelDetails;\n\n if (!media || !levelDetails) {\n return;\n }\n\n this.currentTime = media.currentTime;\n var latency = this.computeLatency();\n\n if (latency === null) {\n return;\n }\n\n this._latency = latency; // Adapt playbackRate to meet target latency in low-latency mode\n\n var _this$config = this.config,\n lowLatencyMode = _this$config.lowLatencyMode,\n maxLiveSyncPlaybackRate = _this$config.maxLiveSyncPlaybackRate;\n\n if (!lowLatencyMode || maxLiveSyncPlaybackRate === 1) {\n return;\n }\n\n var targetLatency = this.targetLatency;\n\n if (targetLatency === null) {\n return;\n }\n\n var distanceFromTarget = latency - targetLatency; // Only adjust playbackRate when within one target duration of targetLatency\n // and more than one second from under-buffering.\n // Playback further than one target duration from target can be considered DVR playback.\n\n var liveMinLatencyDuration = Math.min(this.maxLatency, targetLatency + levelDetails.targetduration);\n var inLiveRange = distanceFromTarget < liveMinLatencyDuration;\n\n if (levelDetails.live && inLiveRange && distanceFromTarget > 0.05 && this.forwardBufferLength > 1) {\n var max = Math.min(2, Math.max(1.0, maxLiveSyncPlaybackRate));\n var rate = Math.round(2 / (1 + Math.exp(-0.75 * distanceFromTarget - this.edgeStalled)) * 20) / 20;\n media.playbackRate = Math.min(max, Math.max(1, rate));\n } else if (media.playbackRate !== 1 && media.playbackRate !== 0) {\n media.playbackRate = 1;\n }\n };\n\n _proto.estimateLiveEdge = function estimateLiveEdge() {\n var levelDetails = this.levelDetails;\n\n if (levelDetails === null) {\n return null;\n }\n\n return levelDetails.edge + levelDetails.age;\n };\n\n _proto.computeLatency = function computeLatency() {\n var liveEdge = this.estimateLiveEdge();\n\n if (liveEdge === null) {\n return null;\n }\n\n return liveEdge - this.currentTime;\n };\n\n _createClass(LatencyController, [{\n key: \"latency\",\n get: function get() {\n return this._latency || 0;\n }\n }, {\n key: \"maxLatency\",\n get: function get() {\n var config = this.config,\n levelDetails = this.levelDetails;\n\n if (config.liveMaxLatencyDuration !== undefined) {\n return config.liveMaxLatencyDuration;\n }\n\n return levelDetails ? config.liveMaxLatencyDurationCount * levelDetails.targetduration : 0;\n }\n }, {\n key: \"targetLatency\",\n get: function get() {\n var levelDetails = this.levelDetails;\n\n if (levelDetails === null) {\n return null;\n }\n\n var holdBack = levelDetails.holdBack,\n partHoldBack = levelDetails.partHoldBack,\n targetduration = levelDetails.targetduration;\n var _this$config2 = this.config,\n liveSyncDuration = _this$config2.liveSyncDuration,\n liveSyncDurationCount = _this$config2.liveSyncDurationCount,\n lowLatencyMode = _this$config2.lowLatencyMode;\n var userConfig = this.hls.userConfig;\n var targetLatency = lowLatencyMode ? partHoldBack || holdBack : holdBack;\n\n if (userConfig.liveSyncDuration || userConfig.liveSyncDurationCount || targetLatency === 0) {\n targetLatency = liveSyncDuration !== undefined ? liveSyncDuration : liveSyncDurationCount * targetduration;\n }\n\n var maxLiveSyncOnStallIncrease = targetduration;\n var liveSyncOnStallIncrease = 1.0;\n return targetLatency + Math.min(this.stallCount * liveSyncOnStallIncrease, maxLiveSyncOnStallIncrease);\n }\n }, {\n key: \"liveSyncPosition\",\n get: function get() {\n var liveEdge = this.estimateLiveEdge();\n var targetLatency = this.targetLatency;\n var levelDetails = this.levelDetails;\n\n if (liveEdge === null || targetLatency === null || levelDetails === null) {\n return null;\n }\n\n var edge = levelDetails.edge;\n var syncPosition = liveEdge - targetLatency - this.edgeStalled;\n var min = edge - levelDetails.totalduration;\n var max = edge - (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration);\n return Math.min(Math.max(min, syncPosition), max);\n }\n }, {\n key: \"drift\",\n get: function get() {\n var levelDetails = this.levelDetails;\n\n if (levelDetails === null) {\n return 1;\n }\n\n return levelDetails.drift;\n }\n }, {\n key: \"edgeStalled\",\n get: function get() {\n var levelDetails = this.levelDetails;\n\n if (levelDetails === null) {\n return 0;\n }\n\n var maxLevelUpdateAge = (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration) * 3;\n return Math.max(levelDetails.age - maxLevelUpdateAge, 0);\n }\n }, {\n key: \"forwardBufferLength\",\n get: function get() {\n var media = this.media,\n levelDetails = this.levelDetails;\n\n if (!media || !levelDetails) {\n return 0;\n }\n\n var bufferedRanges = media.buffered.length;\n return (bufferedRanges ? media.buffered.end(bufferedRanges - 1) : levelDetails.edge) - this.currentTime;\n }\n }]);\n\n return LatencyController;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/level-controller.ts\":\n/*!********************************************!*\\\n !*** ./src/controller/level-controller.ts ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return LevelController; });\n/* harmony import */ var _types_level__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types/level */ \"./src/types/level.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_codecs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/codecs */ \"./src/utils/codecs.ts\");\n/* harmony import */ var _level_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./level-helper */ \"./src/controller/level-helper.ts\");\n/* harmony import */ var _base_playlist_controller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./base-playlist-controller */ \"./src/controller/base-playlist-controller.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/*\n * Level Controller\n */\n\n\n\n\n\n\n\nvar chromeOrFirefox = /chrome|firefox/.test(navigator.userAgent.toLowerCase());\n\nvar LevelController = /*#__PURE__*/function (_BasePlaylistControll) {\n _inheritsLoose(LevelController, _BasePlaylistControll);\n\n function LevelController(hls) {\n var _this;\n\n _this = _BasePlaylistControll.call(this, hls, '[level-controller]') || this;\n _this._levels = [];\n _this._firstLevel = -1;\n _this._startLevel = void 0;\n _this.currentLevelIndex = -1;\n _this.manualLevelIndex = -1;\n _this.onParsedComplete = void 0;\n\n _this._registerListeners();\n\n return _this;\n }\n\n var _proto = LevelController.prototype;\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.destroy = function destroy() {\n this._unregisterListeners();\n\n this.manualLevelIndex = -1;\n this._levels.length = 0;\n\n _BasePlaylistControll.prototype.destroy.call(this);\n };\n\n _proto.startLoad = function startLoad() {\n var levels = this._levels; // clean up live level details to force reload them, and reset load errors\n\n levels.forEach(function (level) {\n level.loadError = 0;\n });\n\n _BasePlaylistControll.prototype.startLoad.call(this);\n };\n\n _proto.onManifestLoaded = function onManifestLoaded(event, data) {\n var levels = [];\n var audioTracks = [];\n var subtitleTracks = [];\n var bitrateStart;\n var levelSet = {};\n var levelFromSet;\n var resolutionFound = false;\n var videoCodecFound = false;\n var audioCodecFound = false; // regroup redundant levels together\n\n data.levels.forEach(function (levelParsed) {\n var attributes = levelParsed.attrs;\n resolutionFound = resolutionFound || !!(levelParsed.width && levelParsed.height);\n videoCodecFound = videoCodecFound || !!levelParsed.videoCodec;\n audioCodecFound = audioCodecFound || !!levelParsed.audioCodec; // erase audio codec info if browser does not support mp4a.40.34.\n // demuxer will autodetect codec and fallback to mpeg/audio\n\n if (chromeOrFirefox && levelParsed.audioCodec && levelParsed.audioCodec.indexOf('mp4a.40.34') !== -1) {\n levelParsed.audioCodec = undefined;\n }\n\n var levelKey = levelParsed.bitrate + \"-\" + levelParsed.attrs.RESOLUTION + \"-\" + levelParsed.attrs.CODECS;\n levelFromSet = levelSet[levelKey];\n\n if (!levelFromSet) {\n levelFromSet = new _types_level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"](levelParsed);\n levelSet[levelKey] = levelFromSet;\n levels.push(levelFromSet);\n } else {\n levelFromSet.url.push(levelParsed.url);\n }\n\n if (attributes) {\n if (attributes.AUDIO) {\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"addGroupId\"])(levelFromSet, 'audio', attributes.AUDIO);\n }\n\n if (attributes.SUBTITLES) {\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"addGroupId\"])(levelFromSet, 'text', attributes.SUBTITLES);\n }\n }\n }); // remove audio-only level if we also have levels with video codecs or RESOLUTION signalled\n\n if ((resolutionFound || videoCodecFound) && audioCodecFound) {\n levels = levels.filter(function (_ref) {\n var videoCodec = _ref.videoCodec,\n width = _ref.width,\n height = _ref.height;\n return !!videoCodec || !!(width && height);\n });\n } // only keep levels with supported audio/video codecs\n\n\n levels = levels.filter(function (_ref2) {\n var audioCodec = _ref2.audioCodec,\n videoCodec = _ref2.videoCodec;\n return (!audioCodec || Object(_utils_codecs__WEBPACK_IMPORTED_MODULE_3__[\"isCodecSupportedInMp4\"])(audioCodec, 'audio')) && (!videoCodec || Object(_utils_codecs__WEBPACK_IMPORTED_MODULE_3__[\"isCodecSupportedInMp4\"])(videoCodec, 'video'));\n });\n\n if (data.audioTracks) {\n audioTracks = data.audioTracks.filter(function (track) {\n return !track.audioCodec || Object(_utils_codecs__WEBPACK_IMPORTED_MODULE_3__[\"isCodecSupportedInMp4\"])(track.audioCodec, 'audio');\n }); // Assign ids after filtering as array indices by group-id\n\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"assignTrackIdsByGroup\"])(audioTracks);\n }\n\n if (data.subtitles) {\n subtitleTracks = data.subtitles;\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"assignTrackIdsByGroup\"])(subtitleTracks);\n }\n\n if (levels.length > 0) {\n // start bitrate is the first bitrate of the manifest\n bitrateStart = levels[0].bitrate; // sort level on bitrate\n\n levels.sort(function (a, b) {\n return a.bitrate - b.bitrate;\n });\n this._levels = levels; // find index of first level in sorted levels\n\n for (var i = 0; i < levels.length; i++) {\n if (levels[i].bitrate === bitrateStart) {\n this._firstLevel = i;\n this.log(\"manifest loaded, \" + levels.length + \" level(s) found, first bitrate: \" + bitrateStart);\n break;\n }\n } // Audio is only alternate if manifest include a URI along with the audio group tag,\n // and this is not an audio-only stream where levels contain audio-only\n\n\n var audioOnly = audioCodecFound && !videoCodecFound;\n var edata = {\n levels: levels,\n audioTracks: audioTracks,\n subtitleTracks: subtitleTracks,\n firstLevel: this._firstLevel,\n stats: data.stats,\n audio: audioCodecFound,\n video: videoCodecFound,\n altAudio: !audioOnly && audioTracks.some(function (t) {\n return !!t.url;\n })\n };\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_PARSED, edata); // Initiate loading after all controllers have received MANIFEST_PARSED\n\n if (this.hls.config.autoStartLoad || this.hls.forceStartLoad) {\n this.hls.startLoad(this.hls.config.startPosition);\n }\n } else {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].MANIFEST_INCOMPATIBLE_CODECS_ERROR,\n fatal: true,\n url: data.url,\n reason: 'no level with compatible codecs found in manifest'\n });\n }\n };\n\n _proto.onError = function onError(event, data) {\n var _data$level;\n\n _BasePlaylistControll.prototype.onError.call(this, event, data);\n\n if (data.fatal) {\n return;\n } // Switch to redundant level when track fails to load\n\n\n var context = data.context;\n var level = this._levels[this.currentLevelIndex];\n\n if (context && (context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK && level.audioGroupIds && context.groupId === level.audioGroupIds[level.urlId] || context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK && level.textGroupIds && context.groupId === level.textGroupIds[level.urlId])) {\n this.redundantFailover(this.currentLevelIndex);\n return;\n }\n\n var levelError = false;\n var levelSwitch = true;\n var levelIndex; // try to recover not fatal errors\n\n switch (data.details) {\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].FRAG_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT:\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].KEY_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].KEY_LOAD_TIMEOUT:\n if (data.frag) {\n // Share fragment error count accross media options (main, audio, subs)\n // This allows for level based rendition switching when media option assets fail\n var variantLevelIndex = data.frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN ? data.frag.level : this.currentLevelIndex;\n var _level = this._levels[variantLevelIndex]; // Set levelIndex when we're out of fragment retries\n\n if (_level) {\n _level.fragmentError++;\n\n if (_level.fragmentError > this.hls.config.fragLoadingMaxRetry) {\n levelIndex = variantLevelIndex;\n }\n } else {\n levelIndex = variantLevelIndex;\n }\n }\n\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_LOAD_TIMEOUT:\n // Do not perform level switch if an error occurred using delivery directives\n // Attempt to reload level without directives first\n if (context) {\n if (context.deliveryDirectives) {\n levelSwitch = false;\n }\n\n levelIndex = context.level;\n }\n\n levelError = true;\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].REMUX_ALLOC_ERROR:\n levelIndex = (_data$level = data.level) != null ? _data$level : this.currentLevelIndex;\n levelError = true;\n break;\n }\n\n if (levelIndex !== undefined) {\n this.recoverLevel(data, levelIndex, levelError, levelSwitch);\n }\n }\n /**\n * Switch to a redundant stream if any available.\n * If redundant stream is not available, emergency switch down if ABR mode is enabled.\n */\n ;\n\n _proto.recoverLevel = function recoverLevel(errorEvent, levelIndex, levelError, levelSwitch) {\n var errorDetails = errorEvent.details;\n var level = this._levels[levelIndex];\n level.loadError++;\n\n if (levelError) {\n var retrying = this.retryLoadingOrFail(errorEvent);\n\n if (retrying) {\n // boolean used to inform stream controller not to switch back to IDLE on non fatal error\n errorEvent.levelRetry = true;\n } else {\n this.currentLevelIndex = -1;\n return;\n }\n }\n\n if (levelSwitch) {\n var redundantLevels = level.url.length; // Try redundant fail-over until level.loadError reaches redundantLevels\n\n if (redundantLevels > 1 && level.loadError < redundantLevels) {\n errorEvent.levelRetry = true;\n this.redundantFailover(levelIndex);\n } else if (this.manualLevelIndex === -1) {\n // Search for next level to retry\n var nextLevel = -1;\n var levels = this._levels;\n\n for (var i = levels.length; i--;) {\n var candidate = (i + this.currentLevelIndex) % levels.length;\n\n if (candidate !== this.currentLevelIndex && levels[candidate].loadError === 0) {\n nextLevel = candidate;\n break;\n }\n }\n\n if (nextLevel > -1 && this.currentLevelIndex !== nextLevel) {\n this.warn(errorDetails + \": switch to \" + nextLevel);\n errorEvent.levelRetry = true;\n this.hls.nextAutoLevel = nextLevel;\n }\n }\n }\n };\n\n _proto.redundantFailover = function redundantFailover(levelIndex) {\n var level = this._levels[levelIndex];\n var redundantLevels = level.url.length;\n\n if (redundantLevels > 1) {\n // Update the url id of all levels so that we stay on the same set of variants when level switching\n var newUrlId = (level.urlId + 1) % redundantLevels;\n this.warn(\"Switching to redundant URL-id \" + newUrlId);\n\n this._levels.forEach(function (level) {\n level.urlId = newUrlId;\n });\n\n this.level = levelIndex;\n }\n } // reset errors on the successful load of a fragment\n ;\n\n _proto.onFragLoaded = function onFragLoaded(event, _ref3) {\n var frag = _ref3.frag;\n\n if (frag !== undefined && frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN) {\n var level = this._levels[frag.level];\n\n if (level !== undefined) {\n level.fragmentError = 0;\n level.loadError = 0;\n }\n }\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n var _data$deliveryDirecti2;\n\n var level = data.level,\n details = data.details;\n var curLevel = this._levels[level];\n\n if (!curLevel) {\n var _data$deliveryDirecti;\n\n this.warn(\"Invalid level index \" + level);\n\n if ((_data$deliveryDirecti = data.deliveryDirectives) !== null && _data$deliveryDirecti !== void 0 && _data$deliveryDirecti.skip) {\n details.deltaUpdateFailed = true;\n }\n\n return;\n } // only process level loaded events matching with expected level\n\n\n if (level === this.currentLevelIndex) {\n // reset level load error counter on successful level loaded only if there is no issues with fragments\n if (curLevel.fragmentError === 0) {\n curLevel.loadError = 0;\n this.retryCount = 0;\n }\n\n this.playlistLoaded(level, data, curLevel.details);\n } else if ((_data$deliveryDirecti2 = data.deliveryDirectives) !== null && _data$deliveryDirecti2 !== void 0 && _data$deliveryDirecti2.skip) {\n // received a delta playlist update that cannot be merged\n details.deltaUpdateFailed = true;\n }\n };\n\n _proto.onAudioTrackSwitched = function onAudioTrackSwitched(event, data) {\n var currentLevel = this.hls.levels[this.currentLevelIndex];\n\n if (!currentLevel) {\n return;\n }\n\n if (currentLevel.audioGroupIds) {\n var urlId = -1;\n var audioGroupId = this.hls.audioTracks[data.id].groupId;\n\n for (var i = 0; i < currentLevel.audioGroupIds.length; i++) {\n if (currentLevel.audioGroupIds[i] === audioGroupId) {\n urlId = i;\n break;\n }\n }\n\n if (urlId !== currentLevel.urlId) {\n currentLevel.urlId = urlId;\n this.startLoad();\n }\n }\n };\n\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {\n var level = this.currentLevelIndex;\n var currentLevel = this._levels[level];\n\n if (this.canLoad && currentLevel && currentLevel.url.length > 0) {\n var id = currentLevel.urlId;\n var url = currentLevel.url[id];\n\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(\"Could not construct new URL with HLS Delivery Directives: \" + error);\n }\n }\n\n this.log(\"Attempt loading level index \" + level + (hlsUrlParameters ? ' at sn ' + hlsUrlParameters.msn + ' part ' + hlsUrlParameters.part : '') + \" with URL-id \" + id + \" \" + url); // console.log('Current audio track group ID:', this.hls.audioTracks[this.hls.audioTrack].groupId);\n // console.log('New video quality level audio group id:', levelObject.attrs.AUDIO, level);\n\n this.clearTimer();\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADING, {\n url: url,\n level: level,\n id: id,\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n };\n\n _proto.removeLevel = function removeLevel(levelIndex, urlId) {\n var filterLevelAndGroupByIdIndex = function filterLevelAndGroupByIdIndex(url, id) {\n return id !== urlId;\n };\n\n var levels = this._levels.filter(function (level, index) {\n if (index !== levelIndex) {\n return true;\n }\n\n if (level.url.length > 1 && urlId !== undefined) {\n level.url = level.url.filter(filterLevelAndGroupByIdIndex);\n\n if (level.audioGroupIds) {\n level.audioGroupIds = level.audioGroupIds.filter(filterLevelAndGroupByIdIndex);\n }\n\n if (level.textGroupIds) {\n level.textGroupIds = level.textGroupIds.filter(filterLevelAndGroupByIdIndex);\n }\n\n level.urlId = 0;\n return true;\n }\n\n return false;\n }).map(function (level, index) {\n var details = level.details;\n\n if (details !== null && details !== void 0 && details.fragments) {\n details.fragments.forEach(function (fragment) {\n fragment.level = index;\n });\n }\n\n return level;\n });\n\n this._levels = levels;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVELS_UPDATED, {\n levels: levels\n });\n };\n\n _createClass(LevelController, [{\n key: \"levels\",\n get: function get() {\n if (this._levels.length === 0) {\n return null;\n }\n\n return this._levels;\n }\n }, {\n key: \"level\",\n get: function get() {\n return this.currentLevelIndex;\n },\n set: function set(newLevel) {\n var _levels$newLevel;\n\n var levels = this._levels;\n\n if (levels.length === 0) {\n return;\n }\n\n if (this.currentLevelIndex === newLevel && (_levels$newLevel = levels[newLevel]) !== null && _levels$newLevel !== void 0 && _levels$newLevel.details) {\n return;\n } // check if level idx is valid\n\n\n if (newLevel < 0 || newLevel >= levels.length) {\n // invalid level id given, trigger error\n var fatal = newLevel < 0;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].OTHER_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_SWITCH_ERROR,\n level: newLevel,\n fatal: fatal,\n reason: 'invalid level idx'\n });\n\n if (fatal) {\n return;\n }\n\n newLevel = Math.min(newLevel, levels.length - 1);\n } // stopping live reloading timer if any\n\n\n this.clearTimer();\n var lastLevelIndex = this.currentLevelIndex;\n var lastLevel = levels[lastLevelIndex];\n var level = levels[newLevel];\n this.log(\"switching to level \" + newLevel + \" from \" + lastLevelIndex);\n this.currentLevelIndex = newLevel;\n\n var levelSwitchingData = _extends({}, level, {\n level: newLevel,\n maxBitrate: level.maxBitrate,\n uri: level.uri,\n urlId: level.urlId\n }); // @ts-ignore\n\n\n delete levelSwitchingData._urlId;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_SWITCHING, levelSwitchingData); // check if we need to load playlist for this level\n\n var levelDetails = level.details;\n\n if (!levelDetails || levelDetails.live) {\n // level not retrieved yet, or live playlist we need to (re)load it\n var hlsUrlParameters = this.switchParams(level.uri, lastLevel === null || lastLevel === void 0 ? void 0 : lastLevel.details);\n this.loadPlaylist(hlsUrlParameters);\n }\n }\n }, {\n key: \"manualLevel\",\n get: function get() {\n return this.manualLevelIndex;\n },\n set: function set(newLevel) {\n this.manualLevelIndex = newLevel;\n\n if (this._startLevel === undefined) {\n this._startLevel = newLevel;\n }\n\n if (newLevel !== -1) {\n this.level = newLevel;\n }\n }\n }, {\n key: \"firstLevel\",\n get: function get() {\n return this._firstLevel;\n },\n set: function set(newLevel) {\n this._firstLevel = newLevel;\n }\n }, {\n key: \"startLevel\",\n get: function get() {\n // hls.startLevel takes precedence over config.startLevel\n // if none of these values are defined, fallback on this._firstLevel (first quality level appearing in variant manifest)\n if (this._startLevel === undefined) {\n var configStartLevel = this.hls.config.startLevel;\n\n if (configStartLevel !== undefined) {\n return configStartLevel;\n } else {\n return this._firstLevel;\n }\n } else {\n return this._startLevel;\n }\n },\n set: function set(newLevel) {\n this._startLevel = newLevel;\n }\n }, {\n key: \"nextLoadLevel\",\n get: function get() {\n if (this.manualLevelIndex !== -1) {\n return this.manualLevelIndex;\n } else {\n return this.hls.nextAutoLevel;\n }\n },\n set: function set(nextLevel) {\n this.level = nextLevel;\n\n if (this.manualLevelIndex === -1) {\n this.hls.nextAutoLevel = nextLevel;\n }\n }\n }]);\n\n return LevelController;\n}(_base_playlist_controller__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/level-helper.ts\":\n/*!****************************************!*\\\n !*** ./src/controller/level-helper.ts ***!\n \\****************************************/\n/*! exports provided: addGroupId, assignTrackIdsByGroup, updatePTS, updateFragPTSDTS, mergeDetails, mapPartIntersection, mapFragmentIntersection, adjustSliding, addSliding, computeReloadInterval, getFragmentWithSN, getPartWith */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addGroupId\", function() { return addGroupId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assignTrackIdsByGroup\", function() { return assignTrackIdsByGroup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updatePTS\", function() { return updatePTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateFragPTSDTS\", function() { return updateFragPTSDTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeDetails\", function() { return mergeDetails; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapPartIntersection\", function() { return mapPartIntersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapFragmentIntersection\", function() { return mapFragmentIntersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"adjustSliding\", function() { return adjustSliding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addSliding\", function() { return addSliding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"computeReloadInterval\", function() { return computeReloadInterval; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFragmentWithSN\", function() { return getFragmentWithSN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPartWith\", function() { return getPartWith; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _loader_date_range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../loader/date-range */ \"./src/loader/date-range.ts\");\n\n\n\n\n\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\n * @module LevelHelper\n * Providing methods dealing with playlist sliding and drift\n * */\n\n\nfunction addGroupId(level, type, id) {\n switch (type) {\n case 'audio':\n if (!level.audioGroupIds) {\n level.audioGroupIds = [];\n }\n\n level.audioGroupIds.push(id);\n break;\n\n case 'text':\n if (!level.textGroupIds) {\n level.textGroupIds = [];\n }\n\n level.textGroupIds.push(id);\n break;\n }\n}\nfunction assignTrackIdsByGroup(tracks) {\n var groups = {};\n tracks.forEach(function (track) {\n var groupId = track.groupId || '';\n track.id = groups[groupId] = groups[groupId] || 0;\n groups[groupId]++;\n });\n}\nfunction updatePTS(fragments, fromIdx, toIdx) {\n var fragFrom = fragments[fromIdx];\n var fragTo = fragments[toIdx];\n updateFromToPTS(fragFrom, fragTo);\n}\n\nfunction updateFromToPTS(fragFrom, fragTo) {\n var fragToPTS = fragTo.startPTS; // if we know startPTS[toIdx]\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(fragToPTS)) {\n // update fragment duration.\n // it helps to fix drifts between playlist reported duration and fragment real duration\n var duration = 0;\n var frag;\n\n if (fragTo.sn > fragFrom.sn) {\n duration = fragToPTS - fragFrom.start;\n frag = fragFrom;\n } else {\n duration = fragFrom.start - fragToPTS;\n frag = fragTo;\n } // TODO? Drift can go either way, or the playlist could be completely accurate\n // console.assert(duration > 0,\n // `duration of ${duration} computed for frag ${frag.sn}, level ${frag.level}, there should be some duration drift between playlist and fragment!`);\n\n\n if (frag.duration !== duration) {\n frag.duration = duration;\n } // we dont know startPTS[toIdx]\n\n } else if (fragTo.sn > fragFrom.sn) {\n var contiguous = fragFrom.cc === fragTo.cc; // TODO: With part-loading end/durations we need to confirm the whole fragment is loaded before using (or setting) minEndPTS\n\n if (contiguous && fragFrom.minEndPTS) {\n fragTo.start = fragFrom.start + (fragFrom.minEndPTS - fragFrom.start);\n } else {\n fragTo.start = fragFrom.start + fragFrom.duration;\n }\n } else {\n fragTo.start = Math.max(fragFrom.start - fragTo.duration, 0);\n }\n}\n\nfunction updateFragPTSDTS(details, frag, startPTS, endPTS, startDTS, endDTS) {\n var parsedMediaDuration = endPTS - startPTS;\n\n if (parsedMediaDuration <= 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn('Fragment should have a positive duration', frag);\n endPTS = startPTS + frag.duration;\n endDTS = startDTS + frag.duration;\n }\n\n var maxStartPTS = startPTS;\n var minEndPTS = endPTS;\n var fragStartPts = frag.startPTS;\n var fragEndPts = frag.endPTS;\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(fragStartPts)) {\n // delta PTS between audio and video\n var deltaPTS = Math.abs(fragStartPts - startPTS);\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.deltaPTS)) {\n frag.deltaPTS = deltaPTS;\n } else {\n frag.deltaPTS = Math.max(deltaPTS, frag.deltaPTS);\n }\n\n maxStartPTS = Math.max(startPTS, fragStartPts);\n startPTS = Math.min(startPTS, fragStartPts);\n startDTS = Math.min(startDTS, frag.startDTS);\n minEndPTS = Math.min(endPTS, fragEndPts);\n endPTS = Math.max(endPTS, fragEndPts);\n endDTS = Math.max(endDTS, frag.endDTS);\n }\n\n frag.duration = endPTS - startPTS;\n var drift = startPTS - frag.start;\n frag.appendedPTS = endPTS;\n frag.start = frag.startPTS = startPTS;\n frag.maxStartPTS = maxStartPTS;\n frag.startDTS = startDTS;\n frag.endPTS = endPTS;\n frag.minEndPTS = minEndPTS;\n frag.endDTS = endDTS;\n var sn = frag.sn; // 'initSegment'\n // exit if sn out of range\n\n if (!details || sn < details.startSN || sn > details.endSN) {\n return 0;\n }\n\n var i;\n var fragIdx = sn - details.startSN;\n var fragments = details.fragments; // update frag reference in fragments array\n // rationale is that fragments array might not contain this frag object.\n // this will happen if playlist has been refreshed between frag loading and call to updateFragPTSDTS()\n // if we don't update frag, we won't be able to propagate PTS info on the playlist\n // resulting in invalid sliding computation\n\n fragments[fragIdx] = frag; // adjust fragment PTS/duration from seqnum-1 to frag 0\n\n for (i = fragIdx; i > 0; i--) {\n updateFromToPTS(fragments[i], fragments[i - 1]);\n } // adjust fragment PTS/duration from seqnum to last frag\n\n\n for (i = fragIdx; i < fragments.length - 1; i++) {\n updateFromToPTS(fragments[i], fragments[i + 1]);\n }\n\n if (details.fragmentHint) {\n updateFromToPTS(fragments[fragments.length - 1], details.fragmentHint);\n }\n\n details.PTSKnown = details.alignedSliding = true;\n return drift;\n}\nfunction mergeDetails(oldDetails, newDetails) {\n // Track the last initSegment processed. Initialize it to the last one on the timeline.\n var currentInitSegment = null;\n var oldFragments = oldDetails.fragments;\n\n for (var i = oldFragments.length - 1; i >= 0; i--) {\n var oldInit = oldFragments[i].initSegment;\n\n if (oldInit) {\n currentInitSegment = oldInit;\n break;\n }\n }\n\n if (oldDetails.fragmentHint) {\n // prevent PTS and duration from being adjusted on the next hint\n delete oldDetails.fragmentHint.endPTS;\n } // check if old/new playlists have fragments in common\n // loop through overlapping SN and update startPTS , cc, and duration if any found\n\n\n var ccOffset = 0;\n var PTSFrag;\n mapFragmentIntersection(oldDetails, newDetails, function (oldFrag, newFrag) {\n if (oldFrag.relurl) {\n // Do not compare CC if the old fragment has no url. This is a level.fragmentHint used by LL-HLS parts.\n // It maybe be off by 1 if it was created before any parts or discontinuity tags were appended to the end\n // of the playlist.\n ccOffset = oldFrag.cc - newFrag.cc;\n }\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(oldFrag.startPTS) && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(oldFrag.endPTS)) {\n newFrag.start = newFrag.startPTS = oldFrag.startPTS;\n newFrag.startDTS = oldFrag.startDTS;\n newFrag.appendedPTS = oldFrag.appendedPTS;\n newFrag.maxStartPTS = oldFrag.maxStartPTS;\n newFrag.endPTS = oldFrag.endPTS;\n newFrag.endDTS = oldFrag.endDTS;\n newFrag.minEndPTS = oldFrag.minEndPTS;\n newFrag.duration = oldFrag.endPTS - oldFrag.startPTS;\n\n if (newFrag.duration) {\n PTSFrag = newFrag;\n } // PTS is known when any segment has startPTS and endPTS\n\n\n newDetails.PTSKnown = newDetails.alignedSliding = true;\n }\n\n newFrag.elementaryStreams = oldFrag.elementaryStreams;\n newFrag.loader = oldFrag.loader;\n newFrag.stats = oldFrag.stats;\n newFrag.urlId = oldFrag.urlId;\n\n if (oldFrag.initSegment) {\n newFrag.initSegment = oldFrag.initSegment;\n currentInitSegment = oldFrag.initSegment;\n }\n });\n\n if (currentInitSegment) {\n var fragmentsToCheck = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments;\n fragmentsToCheck.forEach(function (frag) {\n var _currentInitSegment;\n\n if (!frag.initSegment || frag.initSegment.relurl === ((_currentInitSegment = currentInitSegment) === null || _currentInitSegment === void 0 ? void 0 : _currentInitSegment.relurl)) {\n frag.initSegment = currentInitSegment;\n }\n });\n }\n\n if (newDetails.skippedSegments) {\n newDetails.deltaUpdateFailed = newDetails.fragments.some(function (frag) {\n return !frag;\n });\n\n if (newDetails.deltaUpdateFailed) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn('[level-helper] Previous playlist missing segments skipped in delta playlist');\n\n for (var _i = newDetails.skippedSegments; _i--;) {\n newDetails.fragments.shift();\n }\n\n newDetails.startSN = newDetails.fragments[0].sn;\n newDetails.startCC = newDetails.fragments[0].cc;\n } else if (newDetails.canSkipDateRanges) {\n newDetails.dateRanges = mergeDateRanges(oldDetails.dateRanges, newDetails.dateRanges, newDetails.recentlyRemovedDateranges);\n }\n }\n\n var newFragments = newDetails.fragments;\n\n if (ccOffset) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn('discontinuity sliding from playlist, take drift into account');\n\n for (var _i2 = 0; _i2 < newFragments.length; _i2++) {\n newFragments[_i2].cc += ccOffset;\n }\n }\n\n if (newDetails.skippedSegments) {\n newDetails.startCC = newDetails.fragments[0].cc;\n } // Merge parts\n\n\n mapPartIntersection(oldDetails.partList, newDetails.partList, function (oldPart, newPart) {\n newPart.elementaryStreams = oldPart.elementaryStreams;\n newPart.stats = oldPart.stats;\n }); // if at least one fragment contains PTS info, recompute PTS information for all fragments\n\n if (PTSFrag) {\n updateFragPTSDTS(newDetails, PTSFrag, PTSFrag.startPTS, PTSFrag.endPTS, PTSFrag.startDTS, PTSFrag.endDTS);\n } else {\n // ensure that delta is within oldFragments range\n // also adjust sliding in case delta is 0 (we could have old=[50-60] and new=old=[50-61])\n // in that case we also need to adjust start offset of all fragments\n adjustSliding(oldDetails, newDetails);\n }\n\n if (newFragments.length) {\n newDetails.totalduration = newDetails.edge - newFragments[0].start;\n }\n\n newDetails.driftStartTime = oldDetails.driftStartTime;\n newDetails.driftStart = oldDetails.driftStart;\n var advancedDateTime = newDetails.advancedDateTime;\n\n if (newDetails.advanced && advancedDateTime) {\n var edge = newDetails.edge;\n\n if (!newDetails.driftStart) {\n newDetails.driftStartTime = advancedDateTime;\n newDetails.driftStart = edge;\n }\n\n newDetails.driftEndTime = advancedDateTime;\n newDetails.driftEnd = edge;\n } else {\n newDetails.driftEndTime = oldDetails.driftEndTime;\n newDetails.driftEnd = oldDetails.driftEnd;\n newDetails.advancedDateTime = oldDetails.advancedDateTime;\n }\n}\n\nfunction mergeDateRanges(oldDateRanges, deltaDateRanges, recentlyRemovedDateranges) {\n var dateRanges = _extends({}, oldDateRanges);\n\n if (recentlyRemovedDateranges) {\n recentlyRemovedDateranges.forEach(function (id) {\n delete dateRanges[id];\n });\n }\n\n Object.keys(deltaDateRanges).forEach(function (id) {\n var dateRange = new _loader_date_range__WEBPACK_IMPORTED_MODULE_2__[\"DateRange\"](deltaDateRanges[id].attr, dateRanges[id]);\n\n if (dateRange.isValid) {\n dateRanges[id] = dateRange;\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn(\"Ignoring invalid Playlist Delta Update DATERANGE tag: \\\"\" + JSON.stringify(deltaDateRanges[id].attr) + \"\\\"\");\n }\n });\n return dateRanges;\n}\n\nfunction mapPartIntersection(oldParts, newParts, intersectionFn) {\n if (oldParts && newParts) {\n var delta = 0;\n\n for (var i = 0, len = oldParts.length; i <= len; i++) {\n var _oldPart = oldParts[i];\n var _newPart = newParts[i + delta];\n\n if (_oldPart && _newPart && _oldPart.index === _newPart.index && _oldPart.fragment.sn === _newPart.fragment.sn) {\n intersectionFn(_oldPart, _newPart);\n } else {\n delta--;\n }\n }\n }\n}\nfunction mapFragmentIntersection(oldDetails, newDetails, intersectionFn) {\n var skippedSegments = newDetails.skippedSegments;\n var start = Math.max(oldDetails.startSN, newDetails.startSN) - newDetails.startSN;\n var end = (oldDetails.fragmentHint ? 1 : 0) + (skippedSegments ? newDetails.endSN : Math.min(oldDetails.endSN, newDetails.endSN)) - newDetails.startSN;\n var delta = newDetails.startSN - oldDetails.startSN;\n var newFrags = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments;\n var oldFrags = oldDetails.fragmentHint ? oldDetails.fragments.concat(oldDetails.fragmentHint) : oldDetails.fragments;\n\n for (var i = start; i <= end; i++) {\n var _oldFrag = oldFrags[delta + i];\n var _newFrag = newFrags[i];\n\n if (skippedSegments && !_newFrag && i < skippedSegments) {\n // Fill in skipped segments in delta playlist\n _newFrag = newDetails.fragments[i] = _oldFrag;\n }\n\n if (_oldFrag && _newFrag) {\n intersectionFn(_oldFrag, _newFrag);\n }\n }\n}\nfunction adjustSliding(oldDetails, newDetails) {\n var delta = newDetails.startSN + newDetails.skippedSegments - oldDetails.startSN;\n var oldFragments = oldDetails.fragments;\n\n if (delta < 0 || delta >= oldFragments.length) {\n return;\n }\n\n addSliding(newDetails, oldFragments[delta].start);\n}\nfunction addSliding(details, start) {\n if (start) {\n var fragments = details.fragments;\n\n for (var i = details.skippedSegments; i < fragments.length; i++) {\n fragments[i].start += start;\n }\n\n if (details.fragmentHint) {\n details.fragmentHint.start += start;\n }\n }\n}\nfunction computeReloadInterval(newDetails, stats) {\n var reloadInterval = 1000 * newDetails.levelTargetDuration;\n var reloadIntervalAfterMiss = reloadInterval / 2;\n var timeSinceLastModified = newDetails.age;\n var useLastModified = timeSinceLastModified > 0 && timeSinceLastModified < reloadInterval * 3;\n var roundTrip = stats.loading.end - stats.loading.start;\n var estimatedTimeUntilUpdate;\n var availabilityDelay = newDetails.availabilityDelay; // let estimate = 'average';\n\n if (newDetails.updated === false) {\n if (useLastModified) {\n // estimate = 'miss round trip';\n // We should have had a hit so try again in the time it takes to get a response,\n // but no less than 1/3 second.\n var minRetry = 333 * newDetails.misses;\n estimatedTimeUntilUpdate = Math.max(Math.min(reloadIntervalAfterMiss, roundTrip * 2), minRetry);\n newDetails.availabilityDelay = (newDetails.availabilityDelay || 0) + estimatedTimeUntilUpdate;\n } else {\n // estimate = 'miss half average';\n // follow HLS Spec, If the client reloads a Playlist file and finds that it has not\n // changed then it MUST wait for a period of one-half the target\n // duration before retrying.\n estimatedTimeUntilUpdate = reloadIntervalAfterMiss;\n }\n } else if (useLastModified) {\n // estimate = 'next modified date';\n // Get the closest we've been to timeSinceLastModified on update\n availabilityDelay = Math.min(availabilityDelay || reloadInterval / 2, timeSinceLastModified);\n newDetails.availabilityDelay = availabilityDelay;\n estimatedTimeUntilUpdate = availabilityDelay + reloadInterval - timeSinceLastModified;\n } else {\n estimatedTimeUntilUpdate = reloadInterval - roundTrip;\n } // console.log(`[computeReloadInterval] live reload ${newDetails.updated ? 'REFRESHED' : 'MISSED'}`,\n // '\\n method', estimate,\n // '\\n estimated time until update =>', estimatedTimeUntilUpdate,\n // '\\n average target duration', reloadInterval,\n // '\\n time since modified', timeSinceLastModified,\n // '\\n time round trip', roundTrip,\n // '\\n availability delay', availabilityDelay);\n\n\n return Math.round(estimatedTimeUntilUpdate);\n}\nfunction getFragmentWithSN(level, sn, fragCurrent) {\n if (!level || !level.details) {\n return null;\n }\n\n var levelDetails = level.details;\n var fragment = levelDetails.fragments[sn - levelDetails.startSN];\n\n if (fragment) {\n return fragment;\n }\n\n fragment = levelDetails.fragmentHint;\n\n if (fragment && fragment.sn === sn) {\n return fragment;\n }\n\n if (sn < levelDetails.startSN && fragCurrent && fragCurrent.sn === sn) {\n return fragCurrent;\n }\n\n return null;\n}\nfunction getPartWith(level, sn, partIndex) {\n if (!level || !level.details) {\n return null;\n }\n\n var partList = level.details.partList;\n\n if (partList) {\n for (var i = partList.length; i--;) {\n var part = partList[i];\n\n if (part.index === partIndex && part.fragment.sn === sn) {\n return part;\n }\n }\n }\n\n return null;\n}\n\n/***/ }),\n\n/***/ \"./src/controller/stream-controller.ts\":\n/*!*********************************************!*\\\n !*** ./src/controller/stream-controller.ts ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return StreamController; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base-stream-controller */ \"./src/controller/base-stream-controller.ts\");\n/* harmony import */ var _is_supported__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../is-supported */ \"./src/is-supported.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./fragment-tracker */ \"./src/controller/fragment-tracker.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _loader_fragment__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../loader/fragment */ \"./src/loader/fragment.ts\");\n/* harmony import */ var _demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../demux/transmuxer-interface */ \"./src/demux/transmuxer-interface.ts\");\n/* harmony import */ var _types_transmuxer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../types/transmuxer */ \"./src/types/transmuxer.ts\");\n/* harmony import */ var _gap_controller__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./gap-controller */ \"./src/controller/gap-controller.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n\n\n\n\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\nvar TICK_INTERVAL = 100; // how often to tick in ms\n\nvar StreamController = /*#__PURE__*/function (_BaseStreamController) {\n _inheritsLoose(StreamController, _BaseStreamController);\n\n function StreamController(hls, fragmentTracker) {\n var _this;\n\n _this = _BaseStreamController.call(this, hls, fragmentTracker, '[stream-controller]') || this;\n _this.audioCodecSwap = false;\n _this.gapController = null;\n _this.level = -1;\n _this._forceStartLoad = false;\n _this.altAudio = false;\n _this.audioOnly = false;\n _this.fragPlaying = null;\n _this.onvplaying = null;\n _this.onvseeked = null;\n _this.fragLastKbps = 0;\n _this.couldBacktrack = false;\n _this.backtrackFragment = null;\n _this.audioCodecSwitch = false;\n _this.videoBuffer = null;\n\n _this._registerListeners();\n\n return _this;\n }\n\n var _proto = StreamController.prototype;\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, this.onError, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, this.onError, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n };\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this._unregisterListeners();\n\n this.onMediaDetaching();\n };\n\n _proto.startLoad = function startLoad(startPosition) {\n if (this.levels) {\n var lastCurrentTime = this.lastCurrentTime,\n hls = this.hls;\n this.stopLoad();\n this.setInterval(TICK_INTERVAL);\n this.level = -1;\n this.fragLoadError = 0;\n\n if (!this.startFragRequested) {\n // determine load level\n var startLevel = hls.startLevel;\n\n if (startLevel === -1) {\n if (hls.config.testBandwidth && this.levels.length > 1) {\n // -1 : guess start Level by doing a bitrate test by loading first fragment of lowest quality level\n startLevel = 0;\n this.bitrateTest = true;\n } else {\n startLevel = hls.nextAutoLevel;\n }\n } // set new level to playlist loader : this will trigger start level load\n // hls.nextLoadLevel remains until it is set to a new value or until a new frag is successfully loaded\n\n\n this.level = hls.nextLoadLevel = startLevel;\n this.loadedmetadata = false;\n } // if startPosition undefined but lastCurrentTime set, set startPosition to last currentTime\n\n\n if (lastCurrentTime > 0 && startPosition === -1) {\n this.log(\"Override startPosition with lastCurrentTime @\" + lastCurrentTime.toFixed(3));\n startPosition = lastCurrentTime;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n this.tick();\n } else {\n this._forceStartLoad = true;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].STOPPED;\n }\n };\n\n _proto.stopLoad = function stopLoad() {\n this._forceStartLoad = false;\n\n _BaseStreamController.prototype.stopLoad.call(this);\n };\n\n _proto.doTick = function doTick() {\n switch (this.state) {\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE:\n this.doTickIdle();\n break;\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL:\n {\n var _levels$level;\n\n var levels = this.levels,\n level = this.level;\n var details = levels === null || levels === void 0 ? void 0 : (_levels$level = levels[level]) === null || _levels$level === void 0 ? void 0 : _levels$level.details;\n\n if (details && (!details.live || this.levelLastLoaded === this.level)) {\n if (this.waitForCdnTuneIn(details)) {\n break;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n break;\n }\n\n break;\n }\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING_WAITING_RETRY:\n {\n var _this$media;\n\n var now = self.performance.now();\n var retryDate = this.retryDate; // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n\n if (!retryDate || now >= retryDate || (_this$media = this.media) !== null && _this$media !== void 0 && _this$media.seeking) {\n this.log('retryDate reached, switch back to IDLE state');\n this.resetStartWhenNotLoaded(this.level);\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n }\n break;\n\n default:\n break;\n } // check buffer\n // check/update current fragment\n\n\n this.onTickEnd();\n };\n\n _proto.onTickEnd = function onTickEnd() {\n _BaseStreamController.prototype.onTickEnd.call(this);\n\n this.checkBuffer();\n this.checkFragmentChanged();\n };\n\n _proto.doTickIdle = function doTickIdle() {\n var _frag$decryptdata, _frag$decryptdata2;\n\n var hls = this.hls,\n levelLastLoaded = this.levelLastLoaded,\n levels = this.levels,\n media = this.media;\n var config = hls.config,\n level = hls.nextLoadLevel; // if start level not parsed yet OR\n // if video not attached AND start fragment already requested OR start frag prefetch not enabled\n // exit loop, as we either need more info (level not parsed) or we need media to be attached to load new fragment\n\n if (levelLastLoaded === null || !media && (this.startFragRequested || !config.startFragPrefetch)) {\n return;\n } // If the \"main\" level is audio-only but we are loading an alternate track in the same group, do not load anything\n\n\n if (this.altAudio && this.audioOnly) {\n return;\n }\n\n if (!levels || !levels[level]) {\n return;\n }\n\n var levelInfo = levels[level]; // if buffer length is less than maxBufLen try to load a new fragment\n // set next load level : this will trigger a playlist load if needed\n\n this.level = hls.nextLoadLevel = level;\n var levelDetails = levelInfo.details; // if level info not retrieved yet, switch state and wait for level retrieval\n // if live playlist, ensure that new playlist has been refreshed to avoid loading/try to load\n // a useless and outdated fragment (that might even introduce load error if it is already out of the live playlist)\n\n if (!levelDetails || this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL || levelDetails.live && this.levelLastLoaded !== level) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL;\n return;\n }\n\n var bufferInfo = this.getMainFwdBufferInfo();\n\n if (bufferInfo === null) {\n return;\n }\n\n var bufferLen = bufferInfo.len; // compute max Buffer Length that we could get from this load level, based on level bitrate. don't buffer more than 60 MB and more than 30s\n\n var maxBufLen = this.getMaxBufferLength(levelInfo.maxBitrate); // Stay idle if we are still with buffer margins\n\n if (bufferLen >= maxBufLen) {\n return;\n }\n\n if (this._streamEnded(bufferInfo, levelDetails)) {\n var data = {};\n\n if (this.altAudio) {\n data.type = 'video';\n }\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_EOS, data);\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ENDED;\n return;\n }\n\n if (this.backtrackFragment && this.backtrackFragment.start > bufferInfo.end) {\n this.backtrackFragment = null;\n }\n\n var targetBufferTime = this.backtrackFragment ? this.backtrackFragment.start : bufferInfo.end;\n var frag = this.getNextFragment(targetBufferTime, levelDetails); // Avoid backtracking by loading an earlier segment in streams with segments that do not start with a key frame (flagged by `couldBacktrack`)\n\n if (this.couldBacktrack && !this.fragPrevious && frag && frag.sn !== 'initSegment' && this.fragmentTracker.getState(frag) !== _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].OK) {\n var _this$backtrackFragme;\n\n var backtrackSn = ((_this$backtrackFragme = this.backtrackFragment) != null ? _this$backtrackFragme : frag).sn;\n var fragIdx = backtrackSn - levelDetails.startSN;\n var backtrackFrag = levelDetails.fragments[fragIdx - 1];\n\n if (backtrackFrag && frag.cc === backtrackFrag.cc) {\n frag = backtrackFrag;\n this.fragmentTracker.removeFragment(backtrackFrag);\n }\n } else if (this.backtrackFragment && bufferInfo.len) {\n this.backtrackFragment = null;\n } // Avoid loop loading by using nextLoadPosition set for backtracking\n\n\n if (frag && this.fragmentTracker.getState(frag) === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].OK && this.nextLoadPosition > targetBufferTime) {\n // Cleanup the fragment tracker before trying to find the next unbuffered fragment\n var type = this.audioOnly && !this.altAudio ? _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO : _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].VIDEO;\n\n if (media) {\n this.afterBufferFlushed(media, type, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n }\n\n frag = this.getNextFragment(this.nextLoadPosition, levelDetails);\n }\n\n if (!frag) {\n return;\n }\n\n if (frag.initSegment && !frag.initSegment.data && !this.bitrateTest) {\n frag = frag.initSegment;\n } // We want to load the key if we're dealing with an identity key, because we will decrypt\n // this content using the key we fetch. Other keys will be handled by the DRM CDM via EME.\n\n\n if (((_frag$decryptdata = frag.decryptdata) === null || _frag$decryptdata === void 0 ? void 0 : _frag$decryptdata.keyFormat) === 'identity' && !((_frag$decryptdata2 = frag.decryptdata) !== null && _frag$decryptdata2 !== void 0 && _frag$decryptdata2.key)) {\n this.loadKey(frag, levelDetails);\n } else {\n this.loadFragment(frag, levelDetails, targetBufferTime);\n }\n };\n\n _proto.loadFragment = function loadFragment(frag, levelDetails, targetBufferTime) {\n var _this$media2;\n\n // Check if fragment is not loaded\n var fragState = this.fragmentTracker.getState(frag);\n this.fragCurrent = frag;\n\n if (fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].NOT_LOADED) {\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag);\n } else if (this.bitrateTest) {\n this.log(\"Fragment \" + frag.sn + \" of level \" + frag.level + \" is being downloaded to test bitrate and will not be buffered\");\n\n this._loadBitrateTestFrag(frag);\n } else {\n this.startFragRequested = true;\n\n _BaseStreamController.prototype.loadFragment.call(this, frag, levelDetails, targetBufferTime);\n }\n } else if (fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].APPENDING) {\n // Lower the buffer size and try again\n if (this.reduceMaxBufferLength(frag.duration)) {\n this.fragmentTracker.removeFragment(frag);\n }\n } else if (((_this$media2 = this.media) === null || _this$media2 === void 0 ? void 0 : _this$media2.buffered.length) === 0) {\n // Stop gap for bad tracker / buffer flush behavior\n this.fragmentTracker.removeAllFragments();\n }\n };\n\n _proto.getAppendedFrag = function getAppendedFrag(position) {\n var fragOrPart = this.fragmentTracker.getAppendedFrag(position, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n\n if (fragOrPart && 'fragment' in fragOrPart) {\n return fragOrPart.fragment;\n }\n\n return fragOrPart;\n };\n\n _proto.getBufferedFrag = function getBufferedFrag(position) {\n return this.fragmentTracker.getBufferedFrag(position, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n };\n\n _proto.followingBufferedFrag = function followingBufferedFrag(frag) {\n if (frag) {\n // try to get range of next fragment (500ms after this range)\n return this.getBufferedFrag(frag.end + 0.5);\n }\n\n return null;\n }\n /*\n on immediate level switch :\n - pause playback if playing\n - cancel any pending load request\n - and trigger a buffer flush\n */\n ;\n\n _proto.immediateLevelSwitch = function immediateLevelSwitch() {\n this.abortCurrentFrag();\n this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n }\n /**\n * try to switch ASAP without breaking video playback:\n * in order to ensure smooth but quick level switching,\n * we need to find the next flushable buffer range\n * we should take into account new segment fetch time\n */\n ;\n\n _proto.nextLevelSwitch = function nextLevelSwitch() {\n var levels = this.levels,\n media = this.media; // ensure that media is defined and that metadata are available (to retrieve currentTime)\n\n if (media !== null && media !== void 0 && media.readyState) {\n var fetchdelay;\n var fragPlayingCurrent = this.getAppendedFrag(media.currentTime);\n\n if (fragPlayingCurrent && fragPlayingCurrent.start > 1) {\n // flush buffer preceding current fragment (flush until current fragment start offset)\n // minus 1s to avoid video freezing, that could happen if we flush keyframe of current video ...\n this.flushMainBuffer(0, fragPlayingCurrent.start - 1);\n }\n\n if (!media.paused && levels) {\n // add a safety delay of 1s\n var nextLevelId = this.hls.nextLoadLevel;\n var nextLevel = levels[nextLevelId];\n var fragLastKbps = this.fragLastKbps;\n\n if (fragLastKbps && this.fragCurrent) {\n fetchdelay = this.fragCurrent.duration * nextLevel.maxBitrate / (1000 * fragLastKbps) + 1;\n } else {\n fetchdelay = 0;\n }\n } else {\n fetchdelay = 0;\n } // this.log('fetchdelay:'+fetchdelay);\n // find buffer range that will be reached once new fragment will be fetched\n\n\n var bufferedFrag = this.getBufferedFrag(media.currentTime + fetchdelay);\n\n if (bufferedFrag) {\n // we can flush buffer range following this one without stalling playback\n var nextBufferedFrag = this.followingBufferedFrag(bufferedFrag);\n\n if (nextBufferedFrag) {\n // if we are here, we can also cancel any loading/demuxing in progress, as they are useless\n this.abortCurrentFrag(); // start flush position is in next buffered frag. Leave some padding for non-independent segments and smoother playback.\n\n var maxStart = nextBufferedFrag.maxStartPTS ? nextBufferedFrag.maxStartPTS : nextBufferedFrag.start;\n var fragDuration = nextBufferedFrag.duration;\n var startPts = Math.max(bufferedFrag.end, maxStart + Math.min(Math.max(fragDuration - this.config.maxFragLookUpTolerance, fragDuration * 0.5), fragDuration * 0.75));\n this.flushMainBuffer(startPts, Number.POSITIVE_INFINITY);\n }\n }\n }\n };\n\n _proto.abortCurrentFrag = function abortCurrentFrag() {\n var fragCurrent = this.fragCurrent;\n this.fragCurrent = null;\n this.backtrackFragment = null;\n\n if (fragCurrent !== null && fragCurrent !== void 0 && fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n\n switch (this.state) {\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].KEY_LOADING:\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING:\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING_WAITING_RETRY:\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING:\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSED:\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n break;\n }\n\n this.nextLoadPosition = this.getLoadPosition();\n };\n\n _proto.flushMainBuffer = function flushMainBuffer(startOffset, endOffset) {\n _BaseStreamController.prototype.flushMainBuffer.call(this, startOffset, endOffset, this.altAudio ? 'video' : null);\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n _BaseStreamController.prototype.onMediaAttached.call(this, event, data);\n\n var media = data.media;\n this.onvplaying = this.onMediaPlaying.bind(this);\n this.onvseeked = this.onMediaSeeked.bind(this);\n media.addEventListener('playing', this.onvplaying);\n media.addEventListener('seeked', this.onvseeked);\n this.gapController = new _gap_controller__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this.config, media, this.fragmentTracker, this.hls);\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n var media = this.media;\n\n if (media && this.onvplaying && this.onvseeked) {\n media.removeEventListener('playing', this.onvplaying);\n media.removeEventListener('seeked', this.onvseeked);\n this.onvplaying = this.onvseeked = null;\n this.videoBuffer = null;\n }\n\n this.fragPlaying = null;\n\n if (this.gapController) {\n this.gapController.destroy();\n this.gapController = null;\n }\n\n _BaseStreamController.prototype.onMediaDetaching.call(this);\n };\n\n _proto.onMediaPlaying = function onMediaPlaying() {\n // tick to speed up FRAG_CHANGED triggering\n this.tick();\n };\n\n _proto.onMediaSeeked = function onMediaSeeked() {\n var media = this.media;\n var currentTime = media ? media.currentTime : null;\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(currentTime)) {\n this.log(\"Media seeked to \" + currentTime.toFixed(3));\n } // tick to speed up FRAG_CHANGED triggering\n\n\n this.tick();\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n // reset buffer on manifest loading\n this.log('Trigger BUFFER_RESET');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_RESET, undefined);\n this.fragmentTracker.removeAllFragments();\n this.couldBacktrack = false;\n this.startPosition = this.lastCurrentTime = 0;\n this.fragPlaying = null;\n this.backtrackFragment = null;\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n var aac = false;\n var heaac = false;\n var codec;\n data.levels.forEach(function (level) {\n // detect if we have different kind of audio codecs used amongst playlists\n codec = level.audioCodec;\n\n if (codec) {\n if (codec.indexOf('mp4a.40.2') !== -1) {\n aac = true;\n }\n\n if (codec.indexOf('mp4a.40.5') !== -1) {\n heaac = true;\n }\n }\n });\n this.audioCodecSwitch = aac && heaac && !Object(_is_supported__WEBPACK_IMPORTED_MODULE_2__[\"changeTypeSupported\"])();\n\n if (this.audioCodecSwitch) {\n this.log('Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC');\n }\n\n this.levels = data.levels;\n this.startFragRequested = false;\n };\n\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n var levels = this.levels;\n\n if (!levels || this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE) {\n return;\n }\n\n var level = levels[data.level];\n\n if (!level.details || level.details.live && this.levelLastLoaded !== data.level || this.waitForCdnTuneIn(level.details)) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL;\n }\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n var _curLevel$details;\n\n var levels = this.levels;\n var newLevelId = data.level;\n var newDetails = data.details;\n var duration = newDetails.totalduration;\n\n if (!levels) {\n this.warn(\"Levels were reset while loading level \" + newLevelId);\n return;\n }\n\n this.log(\"Level \" + newLevelId + \" loaded [\" + newDetails.startSN + \",\" + newDetails.endSN + \"], cc [\" + newDetails.startCC + \", \" + newDetails.endCC + \"] duration:\" + duration);\n var fragCurrent = this.fragCurrent;\n\n if (fragCurrent && (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING || this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING_WAITING_RETRY)) {\n if (fragCurrent.level !== data.level && fragCurrent.loader) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n this.backtrackFragment = null;\n fragCurrent.loader.abort();\n }\n }\n\n var curLevel = levels[newLevelId];\n var sliding = 0;\n\n if (newDetails.live || (_curLevel$details = curLevel.details) !== null && _curLevel$details !== void 0 && _curLevel$details.live) {\n if (!newDetails.fragments[0]) {\n newDetails.deltaUpdateFailed = true;\n }\n\n if (newDetails.deltaUpdateFailed) {\n return;\n }\n\n sliding = this.alignPlaylists(newDetails, curLevel.details);\n } // override level info\n\n\n curLevel.details = newDetails;\n this.levelLastLoaded = newLevelId;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_UPDATED, {\n details: newDetails,\n level: newLevelId\n }); // only switch back to IDLE state if we were waiting for level to start downloading a new fragment\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL) {\n if (this.waitForCdnTuneIn(newDetails)) {\n // Wait for Low-Latency CDN Tune-in\n return;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n\n if (!this.startFragRequested) {\n this.setStartPosition(newDetails, sliding);\n } else if (newDetails.live) {\n this.synchronizeToLiveEdge(newDetails);\n } // trigger handler right now\n\n\n this.tick();\n };\n\n _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(data) {\n var _frag$initSegment;\n\n var frag = data.frag,\n part = data.part,\n payload = data.payload;\n var levels = this.levels;\n\n if (!levels) {\n this.warn(\"Levels were reset while fragment load was in progress. Fragment \" + frag.sn + \" of level \" + frag.level + \" will not be buffered\");\n return;\n }\n\n var currentLevel = levels[frag.level];\n var details = currentLevel.details;\n\n if (!details) {\n this.warn(\"Dropping fragment \" + frag.sn + \" of level \" + frag.level + \" after level details were reset\");\n return;\n }\n\n var videoCodec = currentLevel.videoCodec; // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)\n\n var accurateTimeOffset = details.PTSKnown || !details.live;\n var initSegmentData = (_frag$initSegment = frag.initSegment) === null || _frag$initSegment === void 0 ? void 0 : _frag$initSegment.data;\n\n var audioCodec = this._getAudioCodec(currentLevel); // transmux the MPEG-TS data to ISO-BMFF segments\n // this.log(`Transmuxing ${frag.sn} of [${details.startSN} ,${details.endSN}],level ${frag.level}, cc ${frag.cc}`);\n\n\n var transmuxer = this.transmuxer = this.transmuxer || new _demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.hls, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n var partIndex = part ? part.index : -1;\n var partial = partIndex !== -1;\n var chunkMeta = new _types_transmuxer__WEBPACK_IMPORTED_MODULE_9__[\"ChunkMetadata\"](frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n var initPTS = this.initPTS[frag.cc];\n transmuxer.push(payload, initSegmentData, audioCodec, videoCodec, frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n };\n\n _proto.onAudioTrackSwitching = function onAudioTrackSwitching(event, data) {\n // if any URL found on new audio track, it is an alternate audio track\n var fromAltAudio = this.altAudio;\n var altAudio = !!data.url;\n var trackId = data.id; // if we switch on main audio, ensure that main fragment scheduling is synced with media.buffered\n // don't do anything if we switch to alt audio: audio stream controller is handling it.\n // we will just have to change buffer scheduling on audioTrackSwitched\n\n if (!altAudio) {\n if (this.mediaBuffer !== this.media) {\n this.log('Switching on main audio, use media.buffered to schedule main fragment loading');\n this.mediaBuffer = this.media;\n var fragCurrent = this.fragCurrent; // we need to refill audio buffer from main: cancel any frag loading to speed up audio switch\n\n if (fragCurrent !== null && fragCurrent !== void 0 && fragCurrent.loader) {\n this.log('Switching to main audio track, cancel main fragment load');\n fragCurrent.loader.abort();\n } // destroy transmuxer to force init segment generation (following audio switch)\n\n\n this.resetTransmuxer(); // switch to IDLE state to load new fragment\n\n this.resetLoadingState();\n } else if (this.audioOnly) {\n // Reset audio transmuxer so when switching back to main audio we're not still appending where we left off\n this.resetTransmuxer();\n }\n\n var hls = this.hls; // If switching from alt to main audio, flush all audio and trigger track switched\n\n if (fromAltAudio) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_FLUSHING, {\n startOffset: 0,\n endOffset: Number.POSITIVE_INFINITY,\n type: 'audio'\n });\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHED, {\n id: trackId\n });\n }\n };\n\n _proto.onAudioTrackSwitched = function onAudioTrackSwitched(event, data) {\n var trackId = data.id;\n var altAudio = !!this.hls.audioTracks[trackId].url;\n\n if (altAudio) {\n var videoBuffer = this.videoBuffer; // if we switched on alternate audio, ensure that main fragment scheduling is synced with video sourcebuffer buffered\n\n if (videoBuffer && this.mediaBuffer !== videoBuffer) {\n this.log('Switching on alternate audio, use video.buffered to schedule main fragment loading');\n this.mediaBuffer = videoBuffer;\n }\n }\n\n this.altAudio = altAudio;\n this.tick();\n };\n\n _proto.onBufferCreated = function onBufferCreated(event, data) {\n var tracks = data.tracks;\n var mediaTrack;\n var name;\n var alternate = false;\n\n for (var type in tracks) {\n var track = tracks[type];\n\n if (track.id === 'main') {\n name = type;\n mediaTrack = track; // keep video source buffer reference\n\n if (type === 'video') {\n var videoTrack = tracks[type];\n\n if (videoTrack) {\n this.videoBuffer = videoTrack.buffer;\n }\n }\n } else {\n alternate = true;\n }\n }\n\n if (alternate && mediaTrack) {\n this.log(\"Alternate track found, use \" + name + \".buffered to schedule main fragment loading\");\n this.mediaBuffer = mediaTrack.buffer;\n } else {\n this.mediaBuffer = this.media;\n }\n };\n\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n var frag = data.frag,\n part = data.part;\n\n if (frag && frag.type !== _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN) {\n return;\n }\n\n if (this.fragContextChanged(frag)) {\n // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion\n // Avoid setting state back to IDLE, since that will interfere with a level switch\n this.warn(\"Fragment \" + frag.sn + (part ? ' p: ' + part.index : '') + \" of level \" + frag.level + \" finished buffering, but was aborted. state: \" + this.state);\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSED) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n\n return;\n }\n\n var stats = part ? part.stats : frag.stats;\n this.fragLastKbps = Math.round(8 * stats.total / (stats.buffering.end - stats.loading.first));\n\n if (frag.sn !== 'initSegment') {\n this.fragPrevious = frag;\n }\n\n this.fragBufferedComplete(frag, part);\n };\n\n _proto.onError = function onError(event, data) {\n switch (data.details) {\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].FRAG_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT:\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].KEY_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].KEY_LOAD_TIMEOUT:\n this.onFragmentOrKeyLoadError(_types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN, data);\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].LEVEL_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].LEVEL_LOAD_TIMEOUT:\n if (this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ERROR) {\n if (data.fatal) {\n // if fatal error, stop processing\n this.warn(\"\" + data.details);\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ERROR;\n } else {\n // in case of non fatal error while loading level, if level controller is not retrying to load level , switch back to IDLE\n if (!data.levelRetry && this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n }\n }\n\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].BUFFER_FULL_ERROR:\n // if in appending state\n if (data.parent === 'main' && (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING || this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSED)) {\n var flushBuffer = true;\n var bufferedInfo = this.getFwdBufferInfo(this.media, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN); // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end\n // reduce max buf len if current position is buffered\n\n if (bufferedInfo && bufferedInfo.len > 0.5) {\n flushBuffer = !this.reduceMaxBufferLength(bufferedInfo.len);\n }\n\n if (flushBuffer) {\n // current position is not buffered, but browser is still complaining about buffer full error\n // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708\n // in that case flush the whole buffer to recover\n this.warn('buffer full error also media.currentTime is not buffered, flush main'); // flush main buffer\n\n this.immediateLevelSwitch();\n } else {\n var fragCurrent = this.fragCurrent;\n this.abortCurrentFrag();\n\n if (fragCurrent) {\n this.flushMainBuffer(fragCurrent.start, Number.POSITIVE_INFINITY);\n this.nextLoadPosition = fragCurrent.start;\n }\n }\n\n this.resetTransmuxer();\n this.resetLoadingState();\n }\n\n break;\n\n default:\n break;\n }\n } // Checks the health of the buffer and attempts to resolve playback stalls.\n ;\n\n _proto.checkBuffer = function checkBuffer() {\n var media = this.media,\n gapController = this.gapController;\n\n if (!media || !gapController || !media.readyState) {\n // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0)\n return;\n }\n\n if (this.loadedmetadata || !_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].getBuffered(media).length) {\n // Resolve gaps using the main buffer, whose ranges are the intersections of the A/V sourcebuffers\n var activeFrag = this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE ? this.fragCurrent : null;\n gapController.poll(this.lastCurrentTime, activeFrag);\n }\n\n this.lastCurrentTime = media.currentTime;\n };\n\n _proto.onFragLoadEmergencyAborted = function onFragLoadEmergencyAborted() {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE; // if loadedmetadata is not set, it means that we are emergency switch down on first frag\n // in that case, reset startFragRequested flag\n\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n this.nextLoadPosition = this.startPosition;\n }\n\n this.tickImmediate();\n };\n\n _proto.onBufferFlushed = function onBufferFlushed(event, _ref) {\n var type = _ref.type;\n\n if (type !== _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO || this.audioOnly && !this.altAudio) {\n var media = (type === _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media;\n this.afterBufferFlushed(media, type, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n }\n };\n\n _proto.onLevelsUpdated = function onLevelsUpdated(event, data) {\n this.levels = data.levels;\n };\n\n _proto.swapAudioCodec = function swapAudioCodec() {\n this.audioCodecSwap = !this.audioCodecSwap;\n }\n /**\n * Seeks to the set startPosition if not equal to the mediaElement's current time.\n */\n ;\n\n _proto.seekToStartPos = function seekToStartPos() {\n var media = this.media;\n\n if (!media) {\n return;\n }\n\n var currentTime = media.currentTime;\n var startPosition = this.startPosition; // only adjust currentTime if different from startPosition or if startPosition not buffered\n // at that stage, there should be only one buffered range, as we reach that code after first fragment has been buffered\n\n if (startPosition >= 0 && currentTime < startPosition) {\n if (media.seeking) {\n this.log(\"could not seek to \" + startPosition + \", already seeking at \" + currentTime);\n return;\n }\n\n var buffered = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].getBuffered(media);\n var bufferStart = buffered.length ? buffered.start(0) : 0;\n var delta = bufferStart - startPosition;\n\n if (delta > 0 && (delta < this.config.maxBufferHole || delta < this.config.maxFragLookUpTolerance)) {\n this.log(\"adjusting start position by \" + delta + \" to match buffer start\");\n startPosition += delta;\n this.startPosition = startPosition;\n }\n\n this.log(\"seek to target start position \" + startPosition + \" from current time \" + currentTime);\n media.currentTime = startPosition;\n }\n };\n\n _proto._getAudioCodec = function _getAudioCodec(currentLevel) {\n var audioCodec = this.config.defaultAudioCodec || currentLevel.audioCodec;\n\n if (this.audioCodecSwap && audioCodec) {\n this.log('Swapping audio codec');\n\n if (audioCodec.indexOf('mp4a.40.5') !== -1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n }\n\n return audioCodec;\n };\n\n _proto._loadBitrateTestFrag = function _loadBitrateTestFrag(frag) {\n var _this2 = this;\n\n frag.bitrateTest = true;\n\n this._doFragLoad(frag).then(function (data) {\n var hls = _this2.hls;\n\n if (!data || hls.nextLoadLevel || _this2.fragContextChanged(frag)) {\n return;\n }\n\n _this2.fragLoadError = 0;\n _this2.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n _this2.startFragRequested = false;\n _this2.bitrateTest = false;\n var stats = frag.stats; // Bitrate tests fragments are neither parsed nor buffered\n\n stats.parsing.start = stats.parsing.end = stats.buffering.start = stats.buffering.end = self.performance.now();\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_LOADED, data);\n frag.bitrateTest = false;\n });\n };\n\n _proto._handleTransmuxComplete = function _handleTransmuxComplete(transmuxResult) {\n var _id3$samples;\n\n var id = 'main';\n var hls = this.hls;\n var remuxResult = transmuxResult.remuxResult,\n chunkMeta = transmuxResult.chunkMeta;\n var context = this.getCurrentContext(chunkMeta);\n\n if (!context) {\n this.warn(\"The loading context changed while buffering fragment \" + chunkMeta.sn + \" of level \" + chunkMeta.level + \". This chunk will not be buffered.\");\n this.resetStartWhenNotLoaded(chunkMeta.level);\n return;\n }\n\n var frag = context.frag,\n part = context.part,\n level = context.level;\n var video = remuxResult.video,\n text = remuxResult.text,\n id3 = remuxResult.id3,\n initSegment = remuxResult.initSegment;\n var details = level.details; // The audio-stream-controller handles audio buffering if Hls.js is playing an alternate audio track\n\n var audio = this.altAudio ? undefined : remuxResult.audio; // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level.\n // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed.\n\n if (this.fragContextChanged(frag)) {\n return;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING;\n\n if (initSegment) {\n if (initSegment.tracks) {\n this._bufferInitSegment(level, initSegment.tracks, frag, chunkMeta);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_PARSING_INIT_SEGMENT, {\n frag: frag,\n id: id,\n tracks: initSegment.tracks\n });\n } // This would be nice if Number.isFinite acted as a typeguard, but it doesn't. See: https://github.com/Microsoft/TypeScript/issues/10038\n\n\n var initPTS = initSegment.initPTS;\n var timescale = initSegment.timescale;\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(initPTS)) {\n this.initPTS[frag.cc] = initPTS;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].INIT_PTS_FOUND, {\n frag: frag,\n id: id,\n initPTS: initPTS,\n timescale: timescale\n });\n }\n } // Avoid buffering if backtracking this fragment\n\n\n if (video && remuxResult.independent !== false) {\n if (details) {\n var startPTS = video.startPTS,\n endPTS = video.endPTS,\n startDTS = video.startDTS,\n endDTS = video.endDTS;\n\n if (part) {\n part.elementaryStreams[video.type] = {\n startPTS: startPTS,\n endPTS: endPTS,\n startDTS: startDTS,\n endDTS: endDTS\n };\n } else {\n if (video.firstKeyFrame && video.independent) {\n this.couldBacktrack = true;\n }\n\n if (video.dropped && video.independent) {\n // Backtrack if dropped frames create a gap after currentTime\n var bufferInfo = this.getMainFwdBufferInfo();\n var targetBufferTime = (bufferInfo ? bufferInfo.end : this.getLoadPosition()) + this.config.maxBufferHole;\n var startTime = video.firstKeyFramePTS ? video.firstKeyFramePTS : startPTS;\n\n if (targetBufferTime < startTime - this.config.maxBufferHole) {\n this.backtrack(frag);\n return;\n } // Set video stream start to fragment start so that truncated samples do not distort the timeline, and mark it partial\n\n\n frag.setElementaryStreamInfo(video.type, frag.start, endPTS, frag.start, endDTS, true);\n }\n }\n\n frag.setElementaryStreamInfo(video.type, startPTS, endPTS, startDTS, endDTS);\n\n if (this.backtrackFragment) {\n this.backtrackFragment = frag;\n }\n\n this.bufferFragmentData(video, frag, part, chunkMeta);\n }\n } else if (remuxResult.independent === false) {\n this.backtrack(frag);\n return;\n }\n\n if (audio) {\n var _startPTS = audio.startPTS,\n _endPTS = audio.endPTS,\n _startDTS = audio.startDTS,\n _endDTS = audio.endDTS;\n\n if (part) {\n part.elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO] = {\n startPTS: _startPTS,\n endPTS: _endPTS,\n startDTS: _startDTS,\n endDTS: _endDTS\n };\n }\n\n frag.setElementaryStreamInfo(_loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO, _startPTS, _endPTS, _startDTS, _endDTS);\n this.bufferFragmentData(audio, frag, part, chunkMeta);\n }\n\n if (details && id3 !== null && id3 !== void 0 && (_id3$samples = id3.samples) !== null && _id3$samples !== void 0 && _id3$samples.length) {\n var emittedID3 = {\n id: id,\n frag: frag,\n details: details,\n samples: id3.samples\n };\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_PARSING_METADATA, emittedID3);\n }\n\n if (details && text) {\n var emittedText = {\n id: id,\n frag: frag,\n details: details,\n samples: text.samples\n };\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_PARSING_USERDATA, emittedText);\n }\n };\n\n _proto._bufferInitSegment = function _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) {\n var _this3 = this;\n\n if (this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING) {\n return;\n }\n\n this.audioOnly = !!tracks.audio && !tracks.video; // if audio track is expected to come from audio stream controller, discard any coming from main\n\n if (this.altAudio && !this.audioOnly) {\n delete tracks.audio;\n } // include levelCodec in audio and video tracks\n\n\n var audio = tracks.audio,\n video = tracks.video,\n audiovideo = tracks.audiovideo;\n\n if (audio) {\n var audioCodec = currentLevel.audioCodec;\n var ua = navigator.userAgent.toLowerCase();\n\n if (this.audioCodecSwitch) {\n if (audioCodec) {\n if (audioCodec.indexOf('mp4a.40.5') !== -1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n } // In the case that AAC and HE-AAC audio codecs are signalled in manifest,\n // force HE-AAC, as it seems that most browsers prefers it.\n // don't force HE-AAC if mono stream, or in Firefox\n\n\n if (audio.metadata.channelCount !== 1 && ua.indexOf('firefox') === -1) {\n audioCodec = 'mp4a.40.5';\n }\n } // HE-AAC is broken on Android, always signal audio codec as AAC even if variant manifest states otherwise\n\n\n if (ua.indexOf('android') !== -1 && audio.container !== 'audio/mpeg') {\n // Exclude mpeg audio\n audioCodec = 'mp4a.40.2';\n this.log(\"Android: force audio codec to \" + audioCodec);\n }\n\n if (currentLevel.audioCodec && currentLevel.audioCodec !== audioCodec) {\n this.log(\"Swapping manifest audio codec \\\"\" + currentLevel.audioCodec + \"\\\" for \\\"\" + audioCodec + \"\\\"\");\n }\n\n audio.levelCodec = audioCodec;\n audio.id = 'main';\n this.log(\"Init audio buffer, container:\" + audio.container + \", codecs[selected/level/parsed]=[\" + (audioCodec || '') + \"/\" + (currentLevel.audioCodec || '') + \"/\" + audio.codec + \"]\");\n }\n\n if (video) {\n video.levelCodec = currentLevel.videoCodec;\n video.id = 'main';\n this.log(\"Init video buffer, container:\" + video.container + \", codecs[level/parsed]=[\" + (currentLevel.videoCodec || '') + \"/\" + video.codec + \"]\");\n }\n\n if (audiovideo) {\n this.log(\"Init audiovideo buffer, container:\" + audiovideo.container + \", codecs[level/parsed]=[\" + (currentLevel.attrs.CODECS || '') + \"/\" + audiovideo.codec + \"]\");\n }\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_CODECS, tracks); // loop through tracks that are going to be provided to bufferController\n\n Object.keys(tracks).forEach(function (trackName) {\n var track = tracks[trackName];\n var initSegment = track.initSegment;\n\n if (initSegment !== null && initSegment !== void 0 && initSegment.byteLength) {\n _this3.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_APPENDING, {\n type: trackName,\n data: initSegment,\n frag: frag,\n part: null,\n chunkMeta: chunkMeta,\n parent: frag.type\n });\n }\n }); // trigger handler right now\n\n this.tick();\n };\n\n _proto.getMainFwdBufferInfo = function getMainFwdBufferInfo() {\n return this.getFwdBufferInfo(this.mediaBuffer ? this.mediaBuffer : this.media, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n };\n\n _proto.backtrack = function backtrack(frag) {\n this.couldBacktrack = true; // Causes findFragments to backtrack through fragments to find the keyframe\n\n this.backtrackFragment = frag;\n this.resetTransmuxer();\n this.flushBufferGap(frag);\n this.fragmentTracker.removeFragment(frag);\n this.fragPrevious = null;\n this.nextLoadPosition = frag.start;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n };\n\n _proto.checkFragmentChanged = function checkFragmentChanged() {\n var video = this.media;\n var fragPlayingCurrent = null;\n\n if (video && video.readyState > 1 && video.seeking === false) {\n var currentTime = video.currentTime;\n /* if video element is in seeked state, currentTime can only increase.\n (assuming that playback rate is positive ...)\n As sometimes currentTime jumps back to zero after a\n media decode error, check this, to avoid seeking back to\n wrong position after a media decode error\n */\n\n if (_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].isBuffered(video, currentTime)) {\n fragPlayingCurrent = this.getAppendedFrag(currentTime);\n } else if (_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].isBuffered(video, currentTime + 0.1)) {\n /* ensure that FRAG_CHANGED event is triggered at startup,\n when first video frame is displayed and playback is paused.\n add a tolerance of 100ms, in case current position is not buffered,\n check if current pos+100ms is buffered and use that buffer range\n for FRAG_CHANGED event reporting */\n fragPlayingCurrent = this.getAppendedFrag(currentTime + 0.1);\n }\n\n if (fragPlayingCurrent) {\n this.backtrackFragment = null;\n var fragPlaying = this.fragPlaying;\n var fragCurrentLevel = fragPlayingCurrent.level;\n\n if (!fragPlaying || fragPlayingCurrent.sn !== fragPlaying.sn || fragPlaying.level !== fragCurrentLevel || fragPlayingCurrent.urlId !== fragPlaying.urlId) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_CHANGED, {\n frag: fragPlayingCurrent\n });\n\n if (!fragPlaying || fragPlaying.level !== fragCurrentLevel) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_SWITCHED, {\n level: fragCurrentLevel\n });\n }\n\n this.fragPlaying = fragPlayingCurrent;\n }\n }\n }\n };\n\n _createClass(StreamController, [{\n key: \"nextLevel\",\n get: function get() {\n var frag = this.nextBufferedFrag;\n\n if (frag) {\n return frag.level;\n }\n\n return -1;\n }\n }, {\n key: \"currentFrag\",\n get: function get() {\n var media = this.media;\n\n if (media) {\n return this.fragPlaying || this.getAppendedFrag(media.currentTime);\n }\n\n return null;\n }\n }, {\n key: \"currentProgramDateTime\",\n get: function get() {\n var media = this.media;\n\n if (media) {\n var currentTime = media.currentTime;\n var frag = this.currentFrag;\n\n if (frag && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(currentTime) && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.programDateTime)) {\n var epocMs = frag.programDateTime + (currentTime - frag.start) * 1000;\n return new Date(epocMs);\n }\n }\n\n return null;\n }\n }, {\n key: \"currentLevel\",\n get: function get() {\n var frag = this.currentFrag;\n\n if (frag) {\n return frag.level;\n }\n\n return -1;\n }\n }, {\n key: \"nextBufferedFrag\",\n get: function get() {\n var frag = this.currentFrag;\n\n if (frag) {\n return this.followingBufferedFrag(frag);\n }\n\n return null;\n }\n }, {\n key: \"forceStartLoad\",\n get: function get() {\n return this._forceStartLoad;\n }\n }]);\n\n return StreamController;\n}(_base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/subtitle-stream-controller.ts\":\n/*!******************************************************!*\\\n !*** ./src/controller/subtitle-stream-controller.ts ***!\n \\******************************************************/\n/*! exports provided: SubtitleStreamController */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SubtitleStreamController\", function() { return SubtitleStreamController; });\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _fragment_finders__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fragment-finders */ \"./src/controller/fragment-finders.ts\");\n/* harmony import */ var _utils_discontinuities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/discontinuities */ \"./src/utils/discontinuities.ts\");\n/* harmony import */ var _level_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./level-helper */ \"./src/controller/level-helper.ts\");\n/* harmony import */ var _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./fragment-tracker */ \"./src/controller/fragment-tracker.ts\");\n/* harmony import */ var _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./base-stream-controller */ \"./src/controller/base-stream-controller.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _types_level__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../types/level */ \"./src/types/level.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\nvar TICK_INTERVAL = 500; // how often to tick in ms\n\nvar SubtitleStreamController = /*#__PURE__*/function (_BaseStreamController) {\n _inheritsLoose(SubtitleStreamController, _BaseStreamController);\n\n function SubtitleStreamController(hls, fragmentTracker) {\n var _this;\n\n _this = _BaseStreamController.call(this, hls, fragmentTracker, '[subtitle-stream-controller]') || this;\n _this.levels = [];\n _this.currentTrackId = -1;\n _this.tracksBuffered = [];\n _this.mainDetails = null;\n\n _this._registerListeners();\n\n return _this;\n }\n\n var _proto = SubtitleStreamController.prototype;\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this._unregisterListeners();\n\n this.mainDetails = null;\n };\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n };\n\n _proto.startLoad = function startLoad() {\n this.stopLoad();\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE;\n this.setInterval(TICK_INTERVAL);\n this.tick();\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.mainDetails = null;\n this.fragmentTracker.removeAllFragments();\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n this.mainDetails = data.details;\n };\n\n _proto.onSubtitleFragProcessed = function onSubtitleFragProcessed(event, data) {\n var frag = data.frag,\n success = data.success;\n this.fragPrevious = frag;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE;\n\n if (!success) {\n return;\n }\n\n var buffered = this.tracksBuffered[this.currentTrackId];\n\n if (!buffered) {\n return;\n } // Create/update a buffered array matching the interface used by BufferHelper.bufferedInfo\n // so we can re-use the logic used to detect how much has been buffered\n\n\n var timeRange;\n var fragStart = frag.start;\n\n for (var i = 0; i < buffered.length; i++) {\n if (fragStart >= buffered[i].start && fragStart <= buffered[i].end) {\n timeRange = buffered[i];\n break;\n }\n }\n\n var fragEnd = frag.start + frag.duration;\n\n if (timeRange) {\n timeRange.end = fragEnd;\n } else {\n timeRange = {\n start: fragStart,\n end: fragEnd\n };\n buffered.push(timeRange);\n }\n\n this.fragmentTracker.fragBuffered(frag);\n };\n\n _proto.onBufferFlushing = function onBufferFlushing(event, data) {\n var startOffset = data.startOffset,\n endOffset = data.endOffset;\n\n if (startOffset === 0 && endOffset !== Number.POSITIVE_INFINITY) {\n var currentTrackId = this.currentTrackId,\n levels = this.levels;\n\n if (!levels.length || !levels[currentTrackId] || !levels[currentTrackId].details) {\n return;\n }\n\n var trackDetails = levels[currentTrackId].details;\n var targetDuration = trackDetails.targetduration;\n var endOffsetSubtitles = endOffset - targetDuration;\n\n if (endOffsetSubtitles <= 0) {\n return;\n }\n\n data.endOffsetSubtitles = Math.max(0, endOffsetSubtitles);\n this.tracksBuffered.forEach(function (buffered) {\n for (var i = 0; i < buffered.length;) {\n if (buffered[i].end <= endOffsetSubtitles) {\n buffered.shift();\n continue;\n } else if (buffered[i].start < endOffsetSubtitles) {\n buffered[i].start = endOffsetSubtitles;\n } else {\n break;\n }\n\n i++;\n }\n });\n this.fragmentTracker.removeFragmentsInRange(startOffset, endOffsetSubtitles, _types_loader__WEBPACK_IMPORTED_MODULE_7__[\"PlaylistLevelType\"].SUBTITLE);\n }\n } // If something goes wrong, proceed to next frag, if we were processing one.\n ;\n\n _proto.onError = function onError(event, data) {\n var _this$fragCurrent;\n\n var frag = data.frag; // don't handle error not related to subtitle fragment\n\n if (!frag || frag.type !== _types_loader__WEBPACK_IMPORTED_MODULE_7__[\"PlaylistLevelType\"].SUBTITLE) {\n return;\n }\n\n if ((_this$fragCurrent = this.fragCurrent) !== null && _this$fragCurrent !== void 0 && _this$fragCurrent.loader) {\n this.fragCurrent.loader.abort();\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE;\n } // Got all new subtitle levels.\n ;\n\n _proto.onSubtitleTracksUpdated = function onSubtitleTracksUpdated(event, _ref) {\n var _this2 = this;\n\n var subtitleTracks = _ref.subtitleTracks;\n this.tracksBuffered = [];\n this.levels = subtitleTracks.map(function (mediaPlaylist) {\n return new _types_level__WEBPACK_IMPORTED_MODULE_8__[\"Level\"](mediaPlaylist);\n });\n this.fragmentTracker.removeAllFragments();\n this.fragPrevious = null;\n this.levels.forEach(function (level) {\n _this2.tracksBuffered[level.id] = [];\n });\n this.mediaBuffer = null;\n };\n\n _proto.onSubtitleTrackSwitch = function onSubtitleTrackSwitch(event, data) {\n this.currentTrackId = data.id;\n\n if (!this.levels.length || this.currentTrackId === -1) {\n this.clearInterval();\n return;\n } // Check if track has the necessary details to load fragments\n\n\n var currentTrack = this.levels[this.currentTrackId];\n\n if (currentTrack !== null && currentTrack !== void 0 && currentTrack.details) {\n this.mediaBuffer = this.mediaBufferTimeRanges;\n } else {\n this.mediaBuffer = null;\n }\n\n if (currentTrack) {\n this.setInterval(TICK_INTERVAL);\n }\n } // Got a new set of subtitle fragments.\n ;\n\n _proto.onSubtitleTrackLoaded = function onSubtitleTrackLoaded(event, data) {\n var _track$details;\n\n var newDetails = data.details,\n trackId = data.id;\n var currentTrackId = this.currentTrackId,\n levels = this.levels;\n\n if (!levels.length) {\n return;\n }\n\n var track = levels[currentTrackId];\n\n if (trackId >= levels.length || trackId !== currentTrackId || !track) {\n return;\n }\n\n this.mediaBuffer = this.mediaBufferTimeRanges;\n\n if (newDetails.live || (_track$details = track.details) !== null && _track$details !== void 0 && _track$details.live) {\n var mainDetails = this.mainDetails;\n\n if (newDetails.deltaUpdateFailed || !mainDetails) {\n return;\n }\n\n var mainSlidingStartFragment = mainDetails.fragments[0];\n\n if (!track.details) {\n if (newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n Object(_utils_discontinuities__WEBPACK_IMPORTED_MODULE_3__[\"alignMediaPlaylistByPDT\"])(newDetails, mainDetails);\n } else if (mainSlidingStartFragment) {\n // line up live playlist with main so that fragments in range are loaded\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"addSliding\"])(newDetails, mainSlidingStartFragment.start);\n }\n } else {\n var sliding = this.alignPlaylists(newDetails, track.details);\n\n if (sliding === 0 && mainSlidingStartFragment) {\n // realign with main when there is no overlap with last refresh\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"addSliding\"])(newDetails, mainSlidingStartFragment.start);\n }\n }\n }\n\n track.details = newDetails;\n this.levelLastLoaded = trackId; // trigger handler right now\n\n this.tick(); // If playlist is misaligned because of bad PDT or drift, delete details to resync with main on reload\n\n if (newDetails.live && !this.fragCurrent && this.media && this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE) {\n var foundFrag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_2__[\"findFragmentByPTS\"])(null, newDetails.fragments, this.media.currentTime, 0);\n\n if (!foundFrag) {\n this.warn('Subtitle playlist not aligned with playback');\n track.details = undefined;\n }\n }\n };\n\n _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedData) {\n var frag = fragLoadedData.frag,\n payload = fragLoadedData.payload;\n var decryptData = frag.decryptdata;\n var hls = this.hls;\n\n if (this.fragContextChanged(frag)) {\n return;\n } // check to see if the payload needs to be decrypted\n\n\n if (payload && payload.byteLength > 0 && decryptData && decryptData.key && decryptData.iv && decryptData.method === 'AES-128') {\n var startTime = performance.now(); // decrypt the subtitles\n\n this.decrypter.webCryptoDecrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).then(function (decryptedData) {\n var endTime = performance.now();\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_DECRYPTED, {\n frag: frag,\n payload: decryptedData,\n stats: {\n tstart: startTime,\n tdecrypt: endTime\n }\n });\n });\n }\n };\n\n _proto.doTick = function doTick() {\n if (!this.media) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE;\n return;\n }\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE) {\n var currentTrackId = this.currentTrackId,\n levels = this.levels;\n\n if (!levels.length || !levels[currentTrackId] || !levels[currentTrackId].details) {\n return;\n } // Expand range of subs loaded by one target-duration in either direction to make up for misaligned playlists\n\n\n var trackDetails = levels[currentTrackId].details;\n var targetDuration = trackDetails.targetduration;\n var config = this.config,\n media = this.media;\n var bufferedInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_1__[\"BufferHelper\"].bufferedInfo(this.tracksBuffered[this.currentTrackId] || [], media.currentTime - targetDuration, config.maxBufferHole);\n var targetBufferTime = bufferedInfo.end,\n bufferLen = bufferedInfo.len;\n var maxBufLen = this.getMaxBufferLength() + targetDuration;\n\n if (bufferLen > maxBufLen) {\n return;\n }\n\n console.assert(trackDetails, 'Subtitle track details are defined on idle subtitle stream controller tick');\n var fragments = trackDetails.fragments;\n var fragLen = fragments.length;\n var end = trackDetails.edge;\n var foundFrag;\n var fragPrevious = this.fragPrevious;\n\n if (targetBufferTime < end) {\n var maxFragLookUpTolerance = config.maxFragLookUpTolerance;\n foundFrag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_2__[\"findFragmentByPTS\"])(fragPrevious, fragments, Math.max(fragments[0].start, targetBufferTime), maxFragLookUpTolerance);\n\n if (!foundFrag && fragPrevious && fragPrevious.start < fragments[0].start) {\n foundFrag = fragments[0];\n }\n } else {\n foundFrag = fragments[fragLen - 1];\n }\n\n foundFrag = this.mapToInitFragWhenRequired(foundFrag);\n\n if (!foundFrag) {\n return;\n } // only load if fragment is not loaded\n\n\n if (this.fragmentTracker.getState(foundFrag) !== _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].NOT_LOADED) {\n return;\n }\n\n if (foundFrag.encrypted) {\n this.loadKey(foundFrag, trackDetails);\n } else {\n this.loadFragment(foundFrag, trackDetails, targetBufferTime);\n }\n }\n };\n\n _proto.loadFragment = function loadFragment(frag, levelDetails, targetBufferTime) {\n this.fragCurrent = frag;\n\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag);\n } else {\n _BaseStreamController.prototype.loadFragment.call(this, frag, levelDetails, targetBufferTime);\n }\n };\n\n _createClass(SubtitleStreamController, [{\n key: \"mediaBufferTimeRanges\",\n get: function get() {\n return new BufferableInstance(this.tracksBuffered[this.currentTrackId] || []);\n }\n }]);\n\n return SubtitleStreamController;\n}(_base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n\nvar BufferableInstance = function BufferableInstance(timeranges) {\n this.buffered = void 0;\n\n var getRange = function getRange(name, index, length) {\n index = index >>> 0;\n\n if (index > length - 1) {\n throw new DOMException(\"Failed to execute '\" + name + \"' on 'TimeRanges': The index provided (\" + index + \") is greater than the maximum bound (\" + length + \")\");\n }\n\n return timeranges[index][name];\n };\n\n this.buffered = {\n get length() {\n return timeranges.length;\n },\n\n end: function end(index) {\n return getRange('end', index, timeranges.length);\n },\n start: function start(index) {\n return getRange('start', index, timeranges.length);\n }\n };\n};\n\n/***/ }),\n\n/***/ \"./src/controller/subtitle-track-controller.ts\":\n/*!*****************************************************!*\\\n !*** ./src/controller/subtitle-track-controller.ts ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/texttrack-utils */ \"./src/utils/texttrack-utils.ts\");\n/* harmony import */ var _base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base-playlist-controller */ \"./src/controller/base-playlist-controller.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar SubtitleTrackController = /*#__PURE__*/function (_BasePlaylistControll) {\n _inheritsLoose(SubtitleTrackController, _BasePlaylistControll);\n\n function SubtitleTrackController(hls) {\n var _this;\n\n _this = _BasePlaylistControll.call(this, hls, '[subtitle-track-controller]') || this;\n _this.media = null;\n _this.tracks = [];\n _this.groupId = null;\n _this.tracksInGroup = [];\n _this.trackId = -1;\n _this.selectDefaultTrack = true;\n _this.queuedDefaultTrack = -1;\n\n _this.trackChangeListener = function () {\n return _this.onTextTracksChanged();\n };\n\n _this.asyncPollTrackChange = function () {\n return _this.pollTrackChange(0);\n };\n\n _this.useTextTrackPolling = false;\n _this.subtitlePollingInterval = -1;\n _this._subtitleDisplay = true;\n\n _this.registerListeners();\n\n return _this;\n }\n\n var _proto = SubtitleTrackController.prototype;\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.tracks.length = 0;\n this.tracksInGroup.length = 0;\n this.trackChangeListener = this.asyncPollTrackChange = null;\n\n _BasePlaylistControll.prototype.destroy.call(this);\n };\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n } // Listen for subtitle track change, then extract the current track ID.\n ;\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n\n if (!this.media) {\n return;\n }\n\n if (this.queuedDefaultTrack > -1) {\n this.subtitleTrack = this.queuedDefaultTrack;\n this.queuedDefaultTrack = -1;\n }\n\n this.useTextTrackPolling = !(this.media.textTracks && 'onchange' in this.media.textTracks);\n\n if (this.useTextTrackPolling) {\n this.pollTrackChange(500);\n } else {\n this.media.textTracks.addEventListener('change', this.asyncPollTrackChange);\n }\n };\n\n _proto.pollTrackChange = function pollTrackChange(timeout) {\n self.clearInterval(this.subtitlePollingInterval);\n this.subtitlePollingInterval = self.setInterval(this.trackChangeListener, timeout);\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n if (!this.media) {\n return;\n }\n\n self.clearInterval(this.subtitlePollingInterval);\n\n if (!this.useTextTrackPolling) {\n this.media.textTracks.removeEventListener('change', this.asyncPollTrackChange);\n }\n\n if (this.trackId > -1) {\n this.queuedDefaultTrack = this.trackId;\n }\n\n var textTracks = filterSubtitleTracks(this.media.textTracks); // Clear loaded cues on media detachment from tracks\n\n textTracks.forEach(function (track) {\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_1__[\"clearCurrentCues\"])(track);\n }); // Disable all subtitle tracks before detachment so when reattached only tracks in that content are enabled.\n\n this.subtitleTrack = -1;\n this.media = null;\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.tracks = [];\n this.groupId = null;\n this.tracksInGroup = [];\n this.trackId = -1;\n this.selectDefaultTrack = true;\n } // Fired whenever a new manifest is loaded.\n ;\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n this.tracks = data.subtitleTracks;\n };\n\n _proto.onSubtitleTrackLoaded = function onSubtitleTrackLoaded(event, data) {\n var id = data.id,\n details = data.details;\n var trackId = this.trackId;\n var currentTrack = this.tracksInGroup[trackId];\n\n if (!currentTrack) {\n this.warn(\"Invalid subtitle track id \" + id);\n return;\n }\n\n var curDetails = currentTrack.details;\n currentTrack.details = data.details;\n this.log(\"subtitle track \" + id + \" loaded [\" + details.startSN + \"-\" + details.endSN + \"]\");\n\n if (id === this.trackId) {\n this.retryCount = 0;\n this.playlistLoaded(id, data, curDetails);\n }\n };\n\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n this.switchLevel(data.level);\n };\n\n _proto.onLevelSwitching = function onLevelSwitching(event, data) {\n this.switchLevel(data.level);\n };\n\n _proto.switchLevel = function switchLevel(levelIndex) {\n var levelInfo = this.hls.levels[levelIndex];\n\n if (!(levelInfo !== null && levelInfo !== void 0 && levelInfo.textGroupIds)) {\n return;\n }\n\n var textGroupId = levelInfo.textGroupIds[levelInfo.urlId];\n\n if (this.groupId !== textGroupId) {\n var lastTrack = this.tracksInGroup ? this.tracksInGroup[this.trackId] : undefined;\n var subtitleTracks = this.tracks.filter(function (track) {\n return !textGroupId || track.groupId === textGroupId;\n });\n this.tracksInGroup = subtitleTracks;\n var initialTrackId = this.findTrackId(lastTrack === null || lastTrack === void 0 ? void 0 : lastTrack.name) || this.findTrackId();\n this.groupId = textGroupId;\n var subtitleTracksUpdated = {\n subtitleTracks: subtitleTracks\n };\n this.log(\"Updating subtitle tracks, \" + subtitleTracks.length + \" track(s) found in \\\"\" + textGroupId + \"\\\" group-id\");\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACKS_UPDATED, subtitleTracksUpdated);\n\n if (initialTrackId !== -1) {\n this.setSubtitleTrack(initialTrackId, lastTrack);\n }\n }\n };\n\n _proto.findTrackId = function findTrackId(name) {\n var textTracks = this.tracksInGroup;\n\n for (var i = 0; i < textTracks.length; i++) {\n var track = textTracks[i];\n\n if (!this.selectDefaultTrack || track.default) {\n if (!name || name === track.name) {\n return track.id;\n }\n }\n }\n\n return -1;\n };\n\n _proto.onError = function onError(event, data) {\n _BasePlaylistControll.prototype.onError.call(this, event, data);\n\n if (data.fatal || !data.context) {\n return;\n }\n\n if (data.context.type === _types_loader__WEBPACK_IMPORTED_MODULE_3__[\"PlaylistContextType\"].SUBTITLE_TRACK && data.context.id === this.trackId && data.context.groupId === this.groupId) {\n this.retryLoadingOrFail(data);\n }\n }\n /** get alternate subtitle tracks list from playlist **/\n ;\n\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {\n var currentTrack = this.tracksInGroup[this.trackId];\n\n if (this.shouldLoadTrack(currentTrack)) {\n var id = currentTrack.id;\n var groupId = currentTrack.groupId;\n var url = currentTrack.url;\n\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(\"Could not construct new URL with HLS Delivery Directives: \" + error);\n }\n }\n\n this.log(\"Loading subtitle playlist for id \" + id);\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADING, {\n url: url,\n id: id,\n groupId: groupId,\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n }\n /**\n * Disables the old subtitleTrack and sets current mode on the next subtitleTrack.\n * This operates on the DOM textTracks.\n * A value of -1 will disable all subtitle tracks.\n */\n ;\n\n _proto.toggleTrackModes = function toggleTrackModes(newId) {\n var _this2 = this;\n\n var media = this.media,\n trackId = this.trackId;\n\n if (!media) {\n return;\n }\n\n var textTracks = filterSubtitleTracks(media.textTracks);\n var groupTracks = textTracks.filter(function (track) {\n return track.groupId === _this2.groupId;\n });\n\n if (newId === -1) {\n [].slice.call(textTracks).forEach(function (track) {\n track.mode = 'disabled';\n });\n } else {\n var oldTrack = groupTracks[trackId];\n\n if (oldTrack) {\n oldTrack.mode = 'disabled';\n }\n }\n\n var nextTrack = groupTracks[newId];\n\n if (nextTrack) {\n nextTrack.mode = this.subtitleDisplay ? 'showing' : 'hidden';\n }\n }\n /**\n * This method is responsible for validating the subtitle index and periodically reloading if live.\n * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track.\n */\n ;\n\n _proto.setSubtitleTrack = function setSubtitleTrack(newId, lastTrack) {\n var _tracks$newId;\n\n var tracks = this.tracksInGroup; // setting this.subtitleTrack will trigger internal logic\n // if media has not been attached yet, it will fail\n // we keep a reference to the default track id\n // and we'll set subtitleTrack when onMediaAttached is triggered\n\n if (!this.media) {\n this.queuedDefaultTrack = newId;\n return;\n }\n\n if (this.trackId !== newId) {\n this.toggleTrackModes(newId);\n } // exit if track id as already set or invalid\n\n\n if (this.trackId === newId && (newId === -1 || (_tracks$newId = tracks[newId]) !== null && _tracks$newId !== void 0 && _tracks$newId.details) || newId < -1 || newId >= tracks.length) {\n return;\n } // stopping live reloading timer if any\n\n\n this.clearTimer();\n var track = tracks[newId];\n this.log(\"Switching to subtitle track \" + newId);\n this.trackId = newId;\n\n if (track) {\n var id = track.id,\n _track$groupId = track.groupId,\n groupId = _track$groupId === void 0 ? '' : _track$groupId,\n name = track.name,\n type = track.type,\n url = track.url;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_SWITCH, {\n id: id,\n groupId: groupId,\n name: name,\n type: type,\n url: url\n });\n var hlsUrlParameters = this.switchParams(track.url, lastTrack === null || lastTrack === void 0 ? void 0 : lastTrack.details);\n this.loadPlaylist(hlsUrlParameters);\n } else {\n // switch to -1\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_SWITCH, {\n id: newId\n });\n }\n };\n\n _proto.onTextTracksChanged = function onTextTracksChanged() {\n if (!this.useTextTrackPolling) {\n self.clearInterval(this.subtitlePollingInterval);\n } // Media is undefined when switching streams via loadSource()\n\n\n if (!this.media || !this.hls.config.renderTextTracksNatively) {\n return;\n }\n\n var trackId = -1;\n var tracks = filterSubtitleTracks(this.media.textTracks);\n\n for (var id = 0; id < tracks.length; id++) {\n if (tracks[id].mode === 'hidden') {\n // Do not break in case there is a following track with showing.\n trackId = id;\n } else if (tracks[id].mode === 'showing') {\n trackId = id;\n break;\n }\n } // Setting current subtitleTrack will invoke code.\n\n\n if (this.subtitleTrack !== trackId) {\n this.subtitleTrack = trackId;\n }\n };\n\n _createClass(SubtitleTrackController, [{\n key: \"subtitleDisplay\",\n get: function get() {\n return this._subtitleDisplay;\n },\n set: function set(value) {\n this._subtitleDisplay = value;\n\n if (this.trackId > -1) {\n this.toggleTrackModes(this.trackId);\n }\n }\n }, {\n key: \"subtitleTracks\",\n get: function get() {\n return this.tracksInGroup;\n }\n /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/\n\n }, {\n key: \"subtitleTrack\",\n get: function get() {\n return this.trackId;\n },\n set: function set(newId) {\n this.selectDefaultTrack = false;\n var lastTrack = this.tracksInGroup ? this.tracksInGroup[this.trackId] : undefined;\n this.setSubtitleTrack(newId, lastTrack);\n }\n }]);\n\n return SubtitleTrackController;\n}(_base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\nfunction filterSubtitleTracks(textTrackList) {\n var tracks = [];\n\n for (var i = 0; i < textTrackList.length; i++) {\n var track = textTrackList[i]; // Edge adds a track without a label; we don't want to use it\n\n if (track.kind === 'subtitles' && track.label) {\n tracks.push(textTrackList[i]);\n }\n }\n\n return tracks;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SubtitleTrackController);\n\n/***/ }),\n\n/***/ \"./src/controller/timeline-controller.ts\":\n/*!***********************************************!*\\\n !*** ./src/controller/timeline-controller.ts ***!\n \\***********************************************/\n/*! exports provided: TimelineController */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TimelineController\", function() { return TimelineController; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_cea_608_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/cea-608-parser */ \"./src/utils/cea-608-parser.ts\");\n/* harmony import */ var _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/output-filter */ \"./src/utils/output-filter.ts\");\n/* harmony import */ var _utils_webvtt_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/webvtt-parser */ \"./src/utils/webvtt-parser.ts\");\n/* harmony import */ var _utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/texttrack-utils */ \"./src/utils/texttrack-utils.ts\");\n/* harmony import */ var _utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/imsc1-ttml-parser */ \"./src/utils/imsc1-ttml-parser.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\n\n\n\n\n\n\n\n\nvar TimelineController = /*#__PURE__*/function () {\n function TimelineController(hls) {\n this.hls = void 0;\n this.media = null;\n this.config = void 0;\n this.enabled = true;\n this.Cues = void 0;\n this.textTracks = [];\n this.tracks = [];\n this.initPTS = [];\n this.timescale = [];\n this.unparsedVttFrags = [];\n this.captionsTracks = {};\n this.nonNativeCaptionsTracks = {};\n this.cea608Parser1 = void 0;\n this.cea608Parser2 = void 0;\n this.lastSn = -1;\n this.lastPartIndex = -1;\n this.prevCC = -1;\n this.vttCCs = newVTTCCs();\n this.captionsProperties = void 0;\n this.hls = hls;\n this.config = hls.config;\n this.Cues = hls.config.cueHandler;\n this.captionsProperties = {\n textTrack1: {\n label: this.config.captionsTextTrack1Label,\n languageCode: this.config.captionsTextTrack1LanguageCode\n },\n textTrack2: {\n label: this.config.captionsTextTrack2Label,\n languageCode: this.config.captionsTextTrack2LanguageCode\n },\n textTrack3: {\n label: this.config.captionsTextTrack3Label,\n languageCode: this.config.captionsTextTrack3LanguageCode\n },\n textTrack4: {\n label: this.config.captionsTextTrack4Label,\n languageCode: this.config.captionsTextTrack4LanguageCode\n }\n };\n\n if (this.config.enableCEA708Captions) {\n var channel1 = new _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this, 'textTrack1');\n var channel2 = new _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this, 'textTrack2');\n var channel3 = new _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this, 'textTrack3');\n var channel4 = new _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this, 'textTrack4');\n this.cea608Parser1 = new _utils_cea_608_parser__WEBPACK_IMPORTED_MODULE_2__[\"default\"](1, channel1, channel2);\n this.cea608Parser2 = new _utils_cea_608_parser__WEBPACK_IMPORTED_MODULE_2__[\"default\"](3, channel3, channel4);\n }\n\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADING, this.onFragLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_DECRYPTED, this.onFragDecrypted, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n }\n\n var _proto = TimelineController.prototype;\n\n _proto.destroy = function destroy() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADING, this.onFragLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_DECRYPTED, this.onFragDecrypted, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this); // @ts-ignore\n\n this.hls = this.config = this.cea608Parser1 = this.cea608Parser2 = null;\n };\n\n _proto.addCues = function addCues(trackName, startTime, endTime, screen, cueRanges) {\n // skip cues which overlap more than 50% with previously parsed time ranges\n var merged = false;\n\n for (var i = cueRanges.length; i--;) {\n var cueRange = cueRanges[i];\n var overlap = intersection(cueRange[0], cueRange[1], startTime, endTime);\n\n if (overlap >= 0) {\n cueRange[0] = Math.min(cueRange[0], startTime);\n cueRange[1] = Math.max(cueRange[1], endTime);\n merged = true;\n\n if (overlap / (endTime - startTime) > 0.5) {\n return;\n }\n }\n }\n\n if (!merged) {\n cueRanges.push([startTime, endTime]);\n }\n\n if (this.config.renderTextTracksNatively) {\n var track = this.captionsTracks[trackName];\n this.Cues.newCue(track, startTime, endTime, screen);\n } else {\n var cues = this.Cues.newCue(null, startTime, endTime, screen);\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].CUES_PARSED, {\n type: 'captions',\n cues: cues,\n track: trackName\n });\n }\n } // Triggered when an initial PTS is found; used for synchronisation of WebVTT.\n ;\n\n _proto.onInitPtsFound = function onInitPtsFound(event, _ref) {\n var _this = this;\n\n var frag = _ref.frag,\n id = _ref.id,\n initPTS = _ref.initPTS,\n timescale = _ref.timescale;\n var unparsedVttFrags = this.unparsedVttFrags;\n\n if (id === 'main') {\n this.initPTS[frag.cc] = initPTS;\n this.timescale[frag.cc] = timescale;\n } // Due to asynchronous processing, initial PTS may arrive later than the first VTT fragments are loaded.\n // Parse any unparsed fragments upon receiving the initial PTS.\n\n\n if (unparsedVttFrags.length) {\n this.unparsedVttFrags = [];\n unparsedVttFrags.forEach(function (frag) {\n _this.onFragLoaded(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, frag);\n });\n }\n };\n\n _proto.getExistingTrack = function getExistingTrack(trackName) {\n var media = this.media;\n\n if (media) {\n for (var i = 0; i < media.textTracks.length; i++) {\n var textTrack = media.textTracks[i];\n\n if (textTrack[trackName]) {\n return textTrack;\n }\n }\n }\n\n return null;\n };\n\n _proto.createCaptionsTrack = function createCaptionsTrack(trackName) {\n if (this.config.renderTextTracksNatively) {\n this.createNativeTrack(trackName);\n } else {\n this.createNonNativeTrack(trackName);\n }\n };\n\n _proto.createNativeTrack = function createNativeTrack(trackName) {\n if (this.captionsTracks[trackName]) {\n return;\n }\n\n var captionsProperties = this.captionsProperties,\n captionsTracks = this.captionsTracks,\n media = this.media;\n var _captionsProperties$t = captionsProperties[trackName],\n label = _captionsProperties$t.label,\n languageCode = _captionsProperties$t.languageCode; // Enable reuse of existing text track.\n\n var existingTrack = this.getExistingTrack(trackName);\n\n if (!existingTrack) {\n var textTrack = this.createTextTrack('captions', label, languageCode);\n\n if (textTrack) {\n // Set a special property on the track so we know it's managed by Hls.js\n textTrack[trackName] = true;\n captionsTracks[trackName] = textTrack;\n }\n } else {\n captionsTracks[trackName] = existingTrack;\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"clearCurrentCues\"])(captionsTracks[trackName]);\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"sendAddTrackEvent\"])(captionsTracks[trackName], media);\n }\n };\n\n _proto.createNonNativeTrack = function createNonNativeTrack(trackName) {\n if (this.nonNativeCaptionsTracks[trackName]) {\n return;\n } // Create a list of a single track for the provider to consume\n\n\n var trackProperties = this.captionsProperties[trackName];\n\n if (!trackProperties) {\n return;\n }\n\n var label = trackProperties.label;\n var track = {\n _id: trackName,\n label: label,\n kind: 'captions',\n default: trackProperties.media ? !!trackProperties.media.default : false,\n closedCaptions: trackProperties.media\n };\n this.nonNativeCaptionsTracks[trackName] = track;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].NON_NATIVE_TEXT_TRACKS_FOUND, {\n tracks: [track]\n });\n };\n\n _proto.createTextTrack = function createTextTrack(kind, label, lang) {\n var media = this.media;\n\n if (!media) {\n return;\n }\n\n return media.addTextTrack(kind, label, lang);\n };\n\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n this.media = data.media;\n\n this._cleanTracks();\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n var captionsTracks = this.captionsTracks;\n Object.keys(captionsTracks).forEach(function (trackName) {\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"clearCurrentCues\"])(captionsTracks[trackName]);\n delete captionsTracks[trackName];\n });\n this.nonNativeCaptionsTracks = {};\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.lastSn = -1; // Detect discontinuity in fragment parsing\n\n this.lastPartIndex = -1;\n this.prevCC = -1;\n this.vttCCs = newVTTCCs(); // Detect discontinuity in subtitle manifests\n\n this._cleanTracks();\n\n this.tracks = [];\n this.captionsTracks = {};\n this.nonNativeCaptionsTracks = {};\n this.textTracks = [];\n this.unparsedVttFrags = this.unparsedVttFrags || [];\n this.initPTS = [];\n this.timescale = [];\n\n if (this.cea608Parser1 && this.cea608Parser2) {\n this.cea608Parser1.reset();\n this.cea608Parser2.reset();\n }\n };\n\n _proto._cleanTracks = function _cleanTracks() {\n // clear outdated subtitles\n var media = this.media;\n\n if (!media) {\n return;\n }\n\n var textTracks = media.textTracks;\n\n if (textTracks) {\n for (var i = 0; i < textTracks.length; i++) {\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"clearCurrentCues\"])(textTracks[i]);\n }\n }\n };\n\n _proto.onSubtitleTracksUpdated = function onSubtitleTracksUpdated(event, data) {\n var _this2 = this;\n\n this.textTracks = [];\n var tracks = data.subtitleTracks || [];\n var hasIMSC1 = tracks.some(function (track) {\n return track.textCodec === _utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"IMSC1_CODEC\"];\n });\n\n if (this.config.enableWebVTT || hasIMSC1 && this.config.enableIMSC1) {\n var sameTracks = this.tracks && tracks && this.tracks.length === tracks.length;\n this.tracks = tracks || [];\n\n if (this.config.renderTextTracksNatively) {\n var inUseTracks = this.media ? this.media.textTracks : [];\n this.tracks.forEach(function (track, index) {\n var textTrack;\n\n if (index < inUseTracks.length) {\n var inUseTrack = null;\n\n for (var i = 0; i < inUseTracks.length; i++) {\n if (canReuseVttTextTrack(inUseTracks[i], track)) {\n inUseTrack = inUseTracks[i];\n break;\n }\n } // Reuse tracks with the same label, but do not reuse 608/708 tracks\n\n\n if (inUseTrack) {\n textTrack = inUseTrack;\n }\n }\n\n if (textTrack) {\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"clearCurrentCues\"])(textTrack);\n } else {\n var textTrackKind = _this2._captionsOrSubtitlesFromCharacteristics(track);\n\n textTrack = _this2.createTextTrack(textTrackKind, track.name, track.lang);\n\n if (textTrack) {\n textTrack.mode = 'disabled';\n }\n }\n\n if (textTrack) {\n textTrack.groupId = track.groupId;\n\n _this2.textTracks.push(textTrack);\n }\n });\n } else if (!sameTracks && this.tracks && this.tracks.length) {\n // Create a list of tracks for the provider to consume\n var tracksList = this.tracks.map(function (track) {\n return {\n label: track.name,\n kind: track.type.toLowerCase(),\n default: track.default,\n subtitleTrack: track\n };\n });\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].NON_NATIVE_TEXT_TRACKS_FOUND, {\n tracks: tracksList\n });\n }\n }\n };\n\n _proto._captionsOrSubtitlesFromCharacteristics = function _captionsOrSubtitlesFromCharacteristics(track) {\n var _track$attrs;\n\n if ((_track$attrs = track.attrs) !== null && _track$attrs !== void 0 && _track$attrs.CHARACTERISTICS) {\n var transcribesSpokenDialog = /transcribes-spoken-dialog/gi.test(track.attrs.CHARACTERISTICS);\n var describesMusicAndSound = /describes-music-and-sound/gi.test(track.attrs.CHARACTERISTICS);\n\n if (transcribesSpokenDialog && describesMusicAndSound) {\n return 'captions';\n }\n }\n\n return 'subtitles';\n };\n\n _proto.onManifestLoaded = function onManifestLoaded(event, data) {\n var _this3 = this;\n\n if (this.config.enableCEA708Captions && data.captions) {\n data.captions.forEach(function (captionsTrack) {\n var instreamIdMatch = /(?:CC|SERVICE)([1-4])/.exec(captionsTrack.instreamId);\n\n if (!instreamIdMatch) {\n return;\n }\n\n var trackName = \"textTrack\" + instreamIdMatch[1];\n var trackProperties = _this3.captionsProperties[trackName];\n\n if (!trackProperties) {\n return;\n }\n\n trackProperties.label = captionsTrack.name;\n\n if (captionsTrack.lang) {\n // optional attribute\n trackProperties.languageCode = captionsTrack.lang;\n }\n\n trackProperties.media = captionsTrack;\n });\n }\n };\n\n _proto.onFragLoading = function onFragLoading(event, data) {\n var cea608Parser1 = this.cea608Parser1,\n cea608Parser2 = this.cea608Parser2,\n lastSn = this.lastSn,\n lastPartIndex = this.lastPartIndex;\n\n if (!this.enabled || !(cea608Parser1 && cea608Parser2)) {\n return;\n } // if this frag isn't contiguous, clear the parser so cues with bad start/end times aren't added to the textTrack\n\n\n if (data.frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_8__[\"PlaylistLevelType\"].MAIN) {\n var _data$part$index, _data$part;\n\n var sn = data.frag.sn;\n var partIndex = (_data$part$index = data === null || data === void 0 ? void 0 : (_data$part = data.part) === null || _data$part === void 0 ? void 0 : _data$part.index) != null ? _data$part$index : -1;\n\n if (!(sn === lastSn + 1 || sn === lastSn && partIndex === lastPartIndex + 1)) {\n cea608Parser1.reset();\n cea608Parser2.reset();\n }\n\n this.lastSn = sn;\n this.lastPartIndex = partIndex;\n }\n };\n\n _proto.onFragLoaded = function onFragLoaded(event, data) {\n var frag = data.frag,\n payload = data.payload;\n var initPTS = this.initPTS,\n unparsedVttFrags = this.unparsedVttFrags;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_8__[\"PlaylistLevelType\"].SUBTITLE) {\n // If fragment is subtitle type, parse as WebVTT.\n if (payload.byteLength) {\n // We need an initial synchronisation PTS. Store fragments as long as none has arrived.\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(initPTS[frag.cc])) {\n unparsedVttFrags.push(data);\n\n if (initPTS.length) {\n // finish unsuccessfully, otherwise the subtitle-stream-controller could be blocked from loading new frags.\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: new Error('Missing initial subtitle PTS')\n });\n }\n\n return;\n }\n\n var decryptData = frag.decryptdata; // fragment after decryption has a stats object\n\n var decrypted = ('stats' in data); // If the subtitles are not encrypted, parse VTTs now. Otherwise, we need to wait.\n\n if (decryptData == null || decryptData.key == null || decryptData.method !== 'AES-128' || decrypted) {\n var trackPlaylistMedia = this.tracks[frag.level];\n var vttCCs = this.vttCCs;\n\n if (!vttCCs[frag.cc]) {\n vttCCs[frag.cc] = {\n start: frag.start,\n prevCC: this.prevCC,\n new: true\n };\n this.prevCC = frag.cc;\n }\n\n if (trackPlaylistMedia && trackPlaylistMedia.textCodec === _utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"IMSC1_CODEC\"]) {\n this._parseIMSC1(frag, payload);\n } else {\n this._parseVTTs(frag, payload, vttCCs);\n }\n }\n } else {\n // In case there is no payload, finish unsuccessfully.\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: new Error('Empty subtitle payload')\n });\n }\n }\n };\n\n _proto._parseIMSC1 = function _parseIMSC1(frag, payload) {\n var _this4 = this;\n\n var hls = this.hls;\n Object(_utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"parseIMSC1\"])(payload, this.initPTS[frag.cc], this.timescale[frag.cc], function (cues) {\n _this4._appendCues(cues, frag.level);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: true,\n frag: frag\n });\n }, function (error) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"Failed to parse IMSC1: \" + error);\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: error\n });\n });\n };\n\n _proto._parseVTTs = function _parseVTTs(frag, payload, vttCCs) {\n var _frag$initSegment,\n _this5 = this;\n\n var hls = this.hls; // Parse the WebVTT file contents.\n\n var payloadWebVTT = (_frag$initSegment = frag.initSegment) !== null && _frag$initSegment !== void 0 && _frag$initSegment.data ? Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_7__[\"appendUint8Array\"])(frag.initSegment.data, new Uint8Array(payload)) : payload;\n Object(_utils_webvtt_parser__WEBPACK_IMPORTED_MODULE_4__[\"parseWebVTT\"])(payloadWebVTT, this.initPTS[frag.cc], this.timescale[frag.cc], vttCCs, frag.cc, frag.start, function (cues) {\n _this5._appendCues(cues, frag.level);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: true,\n frag: frag\n });\n }, function (error) {\n _this5._fallbackToIMSC1(frag, payload); // Something went wrong while parsing. Trigger event with success false.\n\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"Failed to parse VTT cue: \" + error);\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: error\n });\n });\n };\n\n _proto._fallbackToIMSC1 = function _fallbackToIMSC1(frag, payload) {\n var _this6 = this;\n\n // If textCodec is unknown, try parsing as IMSC1. Set textCodec based on the result\n var trackPlaylistMedia = this.tracks[frag.level];\n\n if (!trackPlaylistMedia.textCodec) {\n Object(_utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"parseIMSC1\"])(payload, this.initPTS[frag.cc], this.timescale[frag.cc], function () {\n trackPlaylistMedia.textCodec = _utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"IMSC1_CODEC\"];\n\n _this6._parseIMSC1(frag, payload);\n }, function () {\n trackPlaylistMedia.textCodec = 'wvtt';\n });\n }\n };\n\n _proto._appendCues = function _appendCues(cues, fragLevel) {\n var hls = this.hls;\n\n if (this.config.renderTextTracksNatively) {\n var textTrack = this.textTracks[fragLevel]; // WebVTTParser.parse is an async method and if the currently selected text track mode is set to \"disabled\"\n // before parsing is done then don't try to access currentTrack.cues.getCueById as cues will be null\n // and trying to access getCueById method of cues will throw an exception\n // Because we check if the mode is disabled, we can force check `cues` below. They can't be null.\n\n if (!textTrack || textTrack.mode === 'disabled') {\n return;\n }\n\n cues.forEach(function (cue) {\n return Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"addCueToTrack\"])(textTrack, cue);\n });\n } else {\n var currentTrack = this.tracks[fragLevel];\n\n if (!currentTrack) {\n return;\n }\n\n var track = currentTrack.default ? 'default' : 'subtitles' + fragLevel;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].CUES_PARSED, {\n type: 'subtitles',\n cues: cues,\n track: track\n });\n }\n };\n\n _proto.onFragDecrypted = function onFragDecrypted(event, data) {\n var frag = data.frag;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_8__[\"PlaylistLevelType\"].SUBTITLE) {\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.initPTS[frag.cc])) {\n this.unparsedVttFrags.push(data);\n return;\n }\n\n this.onFragLoaded(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, data);\n }\n };\n\n _proto.onSubtitleTracksCleared = function onSubtitleTracksCleared() {\n this.tracks = [];\n this.captionsTracks = {};\n };\n\n _proto.onFragParsingUserdata = function onFragParsingUserdata(event, data) {\n var cea608Parser1 = this.cea608Parser1,\n cea608Parser2 = this.cea608Parser2;\n\n if (!this.enabled || !(cea608Parser1 && cea608Parser2)) {\n return;\n } // If the event contains captions (found in the bytes property), push all bytes into the parser immediately\n // It will create the proper timestamps based on the PTS value\n\n\n for (var i = 0; i < data.samples.length; i++) {\n var ccBytes = data.samples[i].bytes;\n\n if (ccBytes) {\n var ccdatas = this.extractCea608Data(ccBytes);\n cea608Parser1.addData(data.samples[i].pts, ccdatas[0]);\n cea608Parser2.addData(data.samples[i].pts, ccdatas[1]);\n }\n }\n };\n\n _proto.onBufferFlushing = function onBufferFlushing(event, _ref2) {\n var startOffset = _ref2.startOffset,\n endOffset = _ref2.endOffset,\n endOffsetSubtitles = _ref2.endOffsetSubtitles,\n type = _ref2.type;\n var media = this.media;\n\n if (!media || media.currentTime < endOffset) {\n return;\n } // Clear 608 caption cues from the captions TextTracks when the video back buffer is flushed\n // Forward cues are never removed because we can loose streamed 608 content from recent fragments\n\n\n if (!type || type === 'video') {\n var captionsTracks = this.captionsTracks;\n Object.keys(captionsTracks).forEach(function (trackName) {\n return Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"removeCuesInRange\"])(captionsTracks[trackName], startOffset, endOffset);\n });\n }\n\n if (this.config.renderTextTracksNatively) {\n // Clear VTT/IMSC1 subtitle cues from the subtitle TextTracks when the back buffer is flushed\n if (startOffset === 0 && endOffsetSubtitles !== undefined) {\n var textTracks = this.textTracks;\n Object.keys(textTracks).forEach(function (trackName) {\n return Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"removeCuesInRange\"])(textTracks[trackName], startOffset, endOffsetSubtitles);\n });\n }\n }\n };\n\n _proto.extractCea608Data = function extractCea608Data(byteArray) {\n var actualCCBytes = [[], []];\n var count = byteArray[0] & 0x1f;\n var position = 2;\n\n for (var j = 0; j < count; j++) {\n var tmpByte = byteArray[position++];\n var ccbyte1 = 0x7f & byteArray[position++];\n var ccbyte2 = 0x7f & byteArray[position++];\n\n if (ccbyte1 === 0 && ccbyte2 === 0) {\n continue;\n }\n\n var ccValid = (0x04 & tmpByte) !== 0; // Support all four channels\n\n if (ccValid) {\n var ccType = 0x03 & tmpByte;\n\n if (0x00\n /* CEA608 field1*/\n === ccType || 0x01\n /* CEA608 field2*/\n === ccType) {\n // Exclude CEA708 CC data.\n actualCCBytes[ccType].push(ccbyte1);\n actualCCBytes[ccType].push(ccbyte2);\n }\n }\n }\n\n return actualCCBytes;\n };\n\n return TimelineController;\n}();\n\nfunction canReuseVttTextTrack(inUseTrack, manifestTrack) {\n return inUseTrack && inUseTrack.label === manifestTrack.name && !(inUseTrack.textTrack1 || inUseTrack.textTrack2);\n}\n\nfunction intersection(x1, x2, y1, y2) {\n return Math.min(x2, y2) - Math.max(x1, y1);\n}\n\nfunction newVTTCCs() {\n return {\n ccOffset: 0,\n presentationOffset: 0,\n 0: {\n start: 0,\n prevCC: -1,\n new: true\n }\n };\n}\n\n/***/ }),\n\n/***/ \"./src/crypt/aes-crypto.ts\":\n/*!*********************************!*\\\n !*** ./src/crypt/aes-crypto.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AESCrypto; });\nvar AESCrypto = /*#__PURE__*/function () {\n function AESCrypto(subtle, iv) {\n this.subtle = void 0;\n this.aesIV = void 0;\n this.subtle = subtle;\n this.aesIV = iv;\n }\n\n var _proto = AESCrypto.prototype;\n\n _proto.decrypt = function decrypt(data, key) {\n return this.subtle.decrypt({\n name: 'AES-CBC',\n iv: this.aesIV\n }, key, data);\n };\n\n return AESCrypto;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/crypt/aes-decryptor.ts\":\n/*!************************************!*\\\n !*** ./src/crypt/aes-decryptor.ts ***!\n \\************************************/\n/*! exports provided: removePadding, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removePadding\", function() { return removePadding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AESDecryptor; });\n/* harmony import */ var _utils_typed_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/typed-array */ \"./src/utils/typed-array.ts\");\n // PKCS7\n\nfunction removePadding(array) {\n var outputBytes = array.byteLength;\n var paddingBytes = outputBytes && new DataView(array.buffer).getUint8(outputBytes - 1);\n\n if (paddingBytes) {\n return Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_0__[\"sliceUint8\"])(array, 0, outputBytes - paddingBytes);\n }\n\n return array;\n}\n\nvar AESDecryptor = /*#__PURE__*/function () {\n function AESDecryptor() {\n this.rcon = [0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n this.sBox = new Uint32Array(256);\n this.invSBox = new Uint32Array(256);\n this.key = new Uint32Array(0);\n this.ksRows = 0;\n this.keySize = 0;\n this.keySchedule = void 0;\n this.invKeySchedule = void 0;\n this.initTable();\n } // Using view.getUint32() also swaps the byte order.\n\n\n var _proto = AESDecryptor.prototype;\n\n _proto.uint8ArrayToUint32Array_ = function uint8ArrayToUint32Array_(arrayBuffer) {\n var view = new DataView(arrayBuffer);\n var newArray = new Uint32Array(4);\n\n for (var i = 0; i < 4; i++) {\n newArray[i] = view.getUint32(i * 4);\n }\n\n return newArray;\n };\n\n _proto.initTable = function initTable() {\n var sBox = this.sBox;\n var invSBox = this.invSBox;\n var subMix = this.subMix;\n var subMix0 = subMix[0];\n var subMix1 = subMix[1];\n var subMix2 = subMix[2];\n var subMix3 = subMix[3];\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n var d = new Uint32Array(256);\n var x = 0;\n var xi = 0;\n var i = 0;\n\n for (i = 0; i < 256; i++) {\n if (i < 128) {\n d[i] = i << 1;\n } else {\n d[i] = i << 1 ^ 0x11b;\n }\n }\n\n for (i = 0; i < 256; i++) {\n var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n sBox[x] = sx;\n invSBox[sx] = x; // Compute multiplication\n\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4]; // Compute sub/invSub bytes, mix columns tables\n\n var t = d[sx] * 0x101 ^ sx * 0x1010100;\n subMix0[x] = t << 24 | t >>> 8;\n subMix1[x] = t << 16 | t >>> 16;\n subMix2[x] = t << 8 | t >>> 24;\n subMix3[x] = t; // Compute inv sub bytes, inv mix columns tables\n\n t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n invSubMix0[sx] = t << 24 | t >>> 8;\n invSubMix1[sx] = t << 16 | t >>> 16;\n invSubMix2[sx] = t << 8 | t >>> 24;\n invSubMix3[sx] = t; // Compute next counter\n\n if (!x) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n };\n\n _proto.expandKey = function expandKey(keyBuffer) {\n // convert keyBuffer to Uint32Array\n var key = this.uint8ArrayToUint32Array_(keyBuffer);\n var sameKey = true;\n var offset = 0;\n\n while (offset < key.length && sameKey) {\n sameKey = key[offset] === this.key[offset];\n offset++;\n }\n\n if (sameKey) {\n return;\n }\n\n this.key = key;\n var keySize = this.keySize = key.length;\n\n if (keySize !== 4 && keySize !== 6 && keySize !== 8) {\n throw new Error('Invalid aes key size=' + keySize);\n }\n\n var ksRows = this.ksRows = (keySize + 6 + 1) * 4;\n var ksRow;\n var invKsRow;\n var keySchedule = this.keySchedule = new Uint32Array(ksRows);\n var invKeySchedule = this.invKeySchedule = new Uint32Array(ksRows);\n var sbox = this.sBox;\n var rcon = this.rcon;\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n var prev;\n var t;\n\n for (ksRow = 0; ksRow < ksRows; ksRow++) {\n if (ksRow < keySize) {\n prev = keySchedule[ksRow] = key[ksRow];\n continue;\n }\n\n t = prev;\n\n if (ksRow % keySize === 0) {\n // Rot word\n t = t << 8 | t >>> 24; // Sub word\n\n t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff]; // Mix Rcon\n\n t ^= rcon[ksRow / keySize | 0] << 24;\n } else if (keySize > 6 && ksRow % keySize === 4) {\n // Sub word\n t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff];\n }\n\n keySchedule[ksRow] = prev = (keySchedule[ksRow - keySize] ^ t) >>> 0;\n }\n\n for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n ksRow = ksRows - invKsRow;\n\n if (invKsRow & 3) {\n t = keySchedule[ksRow];\n } else {\n t = keySchedule[ksRow - 4];\n }\n\n if (invKsRow < 4 || ksRow <= 4) {\n invKeySchedule[invKsRow] = t;\n } else {\n invKeySchedule[invKsRow] = invSubMix0[sbox[t >>> 24]] ^ invSubMix1[sbox[t >>> 16 & 0xff]] ^ invSubMix2[sbox[t >>> 8 & 0xff]] ^ invSubMix3[sbox[t & 0xff]];\n }\n\n invKeySchedule[invKsRow] = invKeySchedule[invKsRow] >>> 0;\n }\n } // Adding this as a method greatly improves performance.\n ;\n\n _proto.networkToHostOrderSwap = function networkToHostOrderSwap(word) {\n return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24;\n };\n\n _proto.decrypt = function decrypt(inputArrayBuffer, offset, aesIV) {\n var nRounds = this.keySize + 6;\n var invKeySchedule = this.invKeySchedule;\n var invSBOX = this.invSBox;\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n var initVector = this.uint8ArrayToUint32Array_(aesIV);\n var initVector0 = initVector[0];\n var initVector1 = initVector[1];\n var initVector2 = initVector[2];\n var initVector3 = initVector[3];\n var inputInt32 = new Int32Array(inputArrayBuffer);\n var outputInt32 = new Int32Array(inputInt32.length);\n var t0, t1, t2, t3;\n var s0, s1, s2, s3;\n var inputWords0, inputWords1, inputWords2, inputWords3;\n var ksRow, i;\n var swapWord = this.networkToHostOrderSwap;\n\n while (offset < inputInt32.length) {\n inputWords0 = swapWord(inputInt32[offset]);\n inputWords1 = swapWord(inputInt32[offset + 1]);\n inputWords2 = swapWord(inputInt32[offset + 2]);\n inputWords3 = swapWord(inputInt32[offset + 3]);\n s0 = inputWords0 ^ invKeySchedule[0];\n s1 = inputWords3 ^ invKeySchedule[1];\n s2 = inputWords2 ^ invKeySchedule[2];\n s3 = inputWords1 ^ invKeySchedule[3];\n ksRow = 4; // Iterate through the rounds of decryption\n\n for (i = 1; i < nRounds; i++) {\n t0 = invSubMix0[s0 >>> 24] ^ invSubMix1[s1 >> 16 & 0xff] ^ invSubMix2[s2 >> 8 & 0xff] ^ invSubMix3[s3 & 0xff] ^ invKeySchedule[ksRow];\n t1 = invSubMix0[s1 >>> 24] ^ invSubMix1[s2 >> 16 & 0xff] ^ invSubMix2[s3 >> 8 & 0xff] ^ invSubMix3[s0 & 0xff] ^ invKeySchedule[ksRow + 1];\n t2 = invSubMix0[s2 >>> 24] ^ invSubMix1[s3 >> 16 & 0xff] ^ invSubMix2[s0 >> 8 & 0xff] ^ invSubMix3[s1 & 0xff] ^ invKeySchedule[ksRow + 2];\n t3 = invSubMix0[s3 >>> 24] ^ invSubMix1[s0 >> 16 & 0xff] ^ invSubMix2[s1 >> 8 & 0xff] ^ invSubMix3[s2 & 0xff] ^ invKeySchedule[ksRow + 3]; // Update state\n\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n ksRow = ksRow + 4;\n } // Shift rows, sub bytes, add round key\n\n\n t0 = invSBOX[s0 >>> 24] << 24 ^ invSBOX[s1 >> 16 & 0xff] << 16 ^ invSBOX[s2 >> 8 & 0xff] << 8 ^ invSBOX[s3 & 0xff] ^ invKeySchedule[ksRow];\n t1 = invSBOX[s1 >>> 24] << 24 ^ invSBOX[s2 >> 16 & 0xff] << 16 ^ invSBOX[s3 >> 8 & 0xff] << 8 ^ invSBOX[s0 & 0xff] ^ invKeySchedule[ksRow + 1];\n t2 = invSBOX[s2 >>> 24] << 24 ^ invSBOX[s3 >> 16 & 0xff] << 16 ^ invSBOX[s0 >> 8 & 0xff] << 8 ^ invSBOX[s1 & 0xff] ^ invKeySchedule[ksRow + 2];\n t3 = invSBOX[s3 >>> 24] << 24 ^ invSBOX[s0 >> 16 & 0xff] << 16 ^ invSBOX[s1 >> 8 & 0xff] << 8 ^ invSBOX[s2 & 0xff] ^ invKeySchedule[ksRow + 3]; // Write\n\n outputInt32[offset] = swapWord(t0 ^ initVector0);\n outputInt32[offset + 1] = swapWord(t3 ^ initVector1);\n outputInt32[offset + 2] = swapWord(t2 ^ initVector2);\n outputInt32[offset + 3] = swapWord(t1 ^ initVector3); // reset initVector to last 4 unsigned int\n\n initVector0 = inputWords0;\n initVector1 = inputWords1;\n initVector2 = inputWords2;\n initVector3 = inputWords3;\n offset = offset + 4;\n }\n\n return outputInt32.buffer;\n };\n\n return AESDecryptor;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/crypt/decrypter.ts\":\n/*!********************************!*\\\n !*** ./src/crypt/decrypter.ts ***!\n \\********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Decrypter; });\n/* harmony import */ var _aes_crypto__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./aes-crypto */ \"./src/crypt/aes-crypto.ts\");\n/* harmony import */ var _fast_aes_key__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fast-aes-key */ \"./src/crypt/fast-aes-key.ts\");\n/* harmony import */ var _aes_decryptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./aes-decryptor */ \"./src/crypt/aes-decryptor.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _utils_typed_array__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/typed-array */ \"./src/utils/typed-array.ts\");\n\n\n\n\n\n\nvar CHUNK_SIZE = 16; // 16 bytes, 128 bits\n\nvar Decrypter = /*#__PURE__*/function () {\n function Decrypter(observer, config, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$removePKCS7Paddi = _ref.removePKCS7Padding,\n removePKCS7Padding = _ref$removePKCS7Paddi === void 0 ? true : _ref$removePKCS7Paddi;\n\n this.logEnabled = true;\n this.observer = void 0;\n this.config = void 0;\n this.removePKCS7Padding = void 0;\n this.subtle = null;\n this.softwareDecrypter = null;\n this.key = null;\n this.fastAesKey = null;\n this.remainderData = null;\n this.currentIV = null;\n this.currentResult = null;\n this.observer = observer;\n this.config = config;\n this.removePKCS7Padding = removePKCS7Padding; // built in decryptor expects PKCS7 padding\n\n if (removePKCS7Padding) {\n try {\n var browserCrypto = self.crypto;\n\n if (browserCrypto) {\n this.subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\n }\n } catch (e) {\n /* no-op */\n }\n }\n\n if (this.subtle === null) {\n this.config.enableSoftwareAES = true;\n }\n }\n\n var _proto = Decrypter.prototype;\n\n _proto.destroy = function destroy() {\n // @ts-ignore\n this.observer = null;\n };\n\n _proto.isSync = function isSync() {\n return this.config.enableSoftwareAES;\n };\n\n _proto.flush = function flush() {\n var currentResult = this.currentResult;\n\n if (!currentResult) {\n this.reset();\n return;\n }\n\n var data = new Uint8Array(currentResult);\n this.reset();\n\n if (this.removePKCS7Padding) {\n return Object(_aes_decryptor__WEBPACK_IMPORTED_MODULE_2__[\"removePadding\"])(data);\n }\n\n return data;\n };\n\n _proto.reset = function reset() {\n this.currentResult = null;\n this.currentIV = null;\n this.remainderData = null;\n\n if (this.softwareDecrypter) {\n this.softwareDecrypter = null;\n }\n };\n\n _proto.decrypt = function decrypt(data, key, iv, callback) {\n if (this.config.enableSoftwareAES) {\n this.softwareDecrypt(new Uint8Array(data), key, iv);\n var decryptResult = this.flush();\n\n if (decryptResult) {\n callback(decryptResult.buffer);\n }\n } else {\n this.webCryptoDecrypt(new Uint8Array(data), key, iv).then(callback);\n }\n };\n\n _proto.softwareDecrypt = function softwareDecrypt(data, key, iv) {\n var currentIV = this.currentIV,\n currentResult = this.currentResult,\n remainderData = this.remainderData;\n this.logOnce('JS AES decrypt'); // The output is staggered during progressive parsing - the current result is cached, and emitted on the next call\n // This is done in order to strip PKCS7 padding, which is found at the end of each segment. We only know we've reached\n // the end on flush(), but by that time we have already received all bytes for the segment.\n // Progressive decryption does not work with WebCrypto\n\n if (remainderData) {\n data = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"appendUint8Array\"])(remainderData, data);\n this.remainderData = null;\n } // Byte length must be a multiple of 16 (AES-128 = 128 bit blocks = 16 bytes)\n\n\n var currentChunk = this.getValidChunk(data);\n\n if (!currentChunk.length) {\n return null;\n }\n\n if (currentIV) {\n iv = currentIV;\n }\n\n var softwareDecrypter = this.softwareDecrypter;\n\n if (!softwareDecrypter) {\n softwareDecrypter = this.softwareDecrypter = new _aes_decryptor__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n }\n\n softwareDecrypter.expandKey(key);\n var result = currentResult;\n this.currentResult = softwareDecrypter.decrypt(currentChunk.buffer, 0, iv);\n this.currentIV = Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_5__[\"sliceUint8\"])(currentChunk, -16).buffer;\n\n if (!result) {\n return null;\n }\n\n return result;\n };\n\n _proto.webCryptoDecrypt = function webCryptoDecrypt(data, key, iv) {\n var _this = this;\n\n var subtle = this.subtle;\n\n if (this.key !== key || !this.fastAesKey) {\n this.key = key;\n this.fastAesKey = new _fast_aes_key__WEBPACK_IMPORTED_MODULE_1__[\"default\"](subtle, key);\n }\n\n return this.fastAesKey.expandKey().then(function (aesKey) {\n // decrypt using web crypto\n if (!subtle) {\n return Promise.reject(new Error('web crypto not initialized'));\n }\n\n var crypto = new _aes_crypto__WEBPACK_IMPORTED_MODULE_0__[\"default\"](subtle, iv);\n return crypto.decrypt(data.buffer, aesKey);\n }).catch(function (err) {\n return _this.onWebCryptoError(err, data, key, iv);\n });\n };\n\n _proto.onWebCryptoError = function onWebCryptoError(err, data, key, iv) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('[decrypter.ts]: WebCrypto Error, disable WebCrypto API:', err);\n this.config.enableSoftwareAES = true;\n this.logEnabled = true;\n return this.softwareDecrypt(data, key, iv);\n };\n\n _proto.getValidChunk = function getValidChunk(data) {\n var currentChunk = data;\n var splitPoint = data.length - data.length % CHUNK_SIZE;\n\n if (splitPoint !== data.length) {\n currentChunk = Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_5__[\"sliceUint8\"])(data, 0, splitPoint);\n this.remainderData = Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_5__[\"sliceUint8\"])(data, splitPoint);\n }\n\n return currentChunk;\n };\n\n _proto.logOnce = function logOnce(msg) {\n if (!this.logEnabled) {\n return;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log(\"[decrypter.ts]: \" + msg);\n this.logEnabled = false;\n };\n\n return Decrypter;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/crypt/fast-aes-key.ts\":\n/*!***********************************!*\\\n !*** ./src/crypt/fast-aes-key.ts ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FastAESKey; });\nvar FastAESKey = /*#__PURE__*/function () {\n function FastAESKey(subtle, key) {\n this.subtle = void 0;\n this.key = void 0;\n this.subtle = subtle;\n this.key = key;\n }\n\n var _proto = FastAESKey.prototype;\n\n _proto.expandKey = function expandKey() {\n return this.subtle.importKey('raw', this.key, {\n name: 'AES-CBC'\n }, false, ['encrypt', 'decrypt']);\n };\n\n return FastAESKey;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/demux/aacdemuxer.ts\":\n/*!*********************************!*\\\n !*** ./src/demux/aacdemuxer.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base-audio-demuxer */ \"./src/demux/base-audio-demuxer.ts\");\n/* harmony import */ var _adts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adts */ \"./src/demux/adts.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * AAC demuxer\n */\n\n\n\n\n\nvar AACDemuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {\n _inheritsLoose(AACDemuxer, _BaseAudioDemuxer);\n\n function AACDemuxer(observer, config) {\n var _this;\n\n _this = _BaseAudioDemuxer.call(this) || this;\n _this.observer = void 0;\n _this.config = void 0;\n _this.observer = observer;\n _this.config = config;\n return _this;\n }\n\n var _proto = AACDemuxer.prototype;\n\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n _BaseAudioDemuxer.prototype.resetInitSegment.call(this, initSegment, audioCodec, videoCodec, trackDuration);\n\n this._audioTrack = {\n container: 'audio/adts',\n type: 'audio',\n id: 2,\n pid: -1,\n sequenceNumber: 0,\n segmentCodec: 'aac',\n samples: [],\n manifestCodec: audioCodec,\n duration: trackDuration,\n inputTimeScale: 90000,\n dropped: 0\n };\n } // Source for probe info - https://wiki.multimedia.cx/index.php?title=ADTS\n ;\n\n AACDemuxer.probe = function probe(data) {\n if (!data) {\n return false;\n } // Check for the ADTS sync word\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n\n\n var id3Data = _demux_id3__WEBPACK_IMPORTED_MODULE_3__[\"getID3Data\"](data, 0) || [];\n var offset = id3Data.length;\n\n for (var length = data.length; offset < length; offset++) {\n if (_adts__WEBPACK_IMPORTED_MODULE_1__[\"probe\"](data, offset)) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('ADTS sync word found !');\n return true;\n }\n }\n\n return false;\n };\n\n _proto.canParse = function canParse(data, offset) {\n return _adts__WEBPACK_IMPORTED_MODULE_1__[\"canParse\"](data, offset);\n };\n\n _proto.appendFrame = function appendFrame(track, data, offset) {\n _adts__WEBPACK_IMPORTED_MODULE_1__[\"initTrackConfig\"](track, this.observer, data, offset, track.manifestCodec);\n var frame = _adts__WEBPACK_IMPORTED_MODULE_1__[\"appendFrame\"](track, data, offset, this.basePTS, this.frameIndex);\n\n if (frame && frame.missing === 0) {\n return frame;\n }\n };\n\n return AACDemuxer;\n}(_base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AACDemuxer);\n\n/***/ }),\n\n/***/ \"./src/demux/adts.ts\":\n/*!***************************!*\\\n !*** ./src/demux/adts.ts ***!\n \\***************************/\n/*! exports provided: getAudioConfig, isHeaderPattern, getHeaderLength, getFullFrameLength, canGetFrameLength, isHeader, canParse, probe, initTrackConfig, getFrameDuration, parseFrameHeader, appendFrame */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAudioConfig\", function() { return getAudioConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeaderPattern\", function() { return isHeaderPattern; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getHeaderLength\", function() { return getHeaderLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFullFrameLength\", function() { return getFullFrameLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"canGetFrameLength\", function() { return canGetFrameLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeader\", function() { return isHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"canParse\", function() { return canParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"probe\", function() { return probe; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initTrackConfig\", function() { return initTrackConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFrameDuration\", function() { return getFrameDuration; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseFrameHeader\", function() { return parseFrameHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"appendFrame\", function() { return appendFrame; });\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/**\n * ADTS parser helper\n * @link https://wiki.multimedia.cx/index.php?title=ADTS\n */\n\n\n\nfunction getAudioConfig(observer, data, offset, audioCodec) {\n var adtsObjectType;\n var adtsExtensionSamplingIndex;\n var adtsChanelConfig;\n var config;\n var userAgent = navigator.userAgent.toLowerCase();\n var manifestCodec = audioCodec;\n var adtsSampleingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350]; // byte 2\n\n adtsObjectType = ((data[offset + 2] & 0xc0) >>> 6) + 1;\n var adtsSamplingIndex = (data[offset + 2] & 0x3c) >>> 2;\n\n if (adtsSamplingIndex > adtsSampleingRates.length - 1) {\n observer.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_PARSING_ERROR,\n fatal: true,\n reason: \"invalid ADTS sampling index:\" + adtsSamplingIndex\n });\n return;\n }\n\n adtsChanelConfig = (data[offset + 2] & 0x01) << 2; // byte 3\n\n adtsChanelConfig |= (data[offset + 3] & 0xc0) >>> 6;\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].log(\"manifest codec:\" + audioCodec + \", ADTS type:\" + adtsObjectType + \", samplingIndex:\" + adtsSamplingIndex); // firefox: freq less than 24kHz = AAC SBR (HE-AAC)\n\n if (/firefox/i.test(userAgent)) {\n if (adtsSamplingIndex >= 6) {\n adtsObjectType = 5;\n config = new Array(4); // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n\n adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n } else {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n } // Android : always use AAC\n\n } else if (userAgent.indexOf('android') !== -1) {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n } else {\n /* for other browsers (Chrome/Vivaldi/Opera ...)\n always force audio type to be HE-AAC SBR, as some browsers do not support audio codec switch properly (like Chrome ...)\n */\n adtsObjectType = 5;\n config = new Array(4); // if (manifest codec is HE-AAC or HE-AACv2) OR (manifest codec not specified AND frequency less than 24kHz)\n\n if (audioCodec && (audioCodec.indexOf('mp4a.40.29') !== -1 || audioCodec.indexOf('mp4a.40.5') !== -1) || !audioCodec && adtsSamplingIndex >= 6) {\n // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n } else {\n // if (manifest codec is AAC) AND (frequency less than 24kHz AND nb channel is 1) OR (manifest codec not specified and mono audio)\n // Chrome fails to play back with low frequency AAC LC mono when initialized with HE-AAC. This is not a problem with stereo.\n if (audioCodec && audioCodec.indexOf('mp4a.40.2') !== -1 && (adtsSamplingIndex >= 6 && adtsChanelConfig === 1 || /vivaldi/i.test(userAgent)) || !audioCodec && adtsChanelConfig === 1) {\n adtsObjectType = 2;\n config = new Array(2);\n }\n\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n }\n }\n /* refer to http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config\n ISO 14496-3 (AAC).pdf - Table 1.13 — Syntax of AudioSpecificConfig()\n Audio Profile / Audio Object Type\n 0: Null\n 1: AAC Main\n 2: AAC LC (Low Complexity)\n 3: AAC SSR (Scalable Sample Rate)\n 4: AAC LTP (Long Term Prediction)\n 5: SBR (Spectral Band Replication)\n 6: AAC Scalable\n sampling freq\n 0: 96000 Hz\n 1: 88200 Hz\n 2: 64000 Hz\n 3: 48000 Hz\n 4: 44100 Hz\n 5: 32000 Hz\n 6: 24000 Hz\n 7: 22050 Hz\n 8: 16000 Hz\n 9: 12000 Hz\n 10: 11025 Hz\n 11: 8000 Hz\n 12: 7350 Hz\n 13: Reserved\n 14: Reserved\n 15: frequency is written explictly\n Channel Configurations\n These are the channel configurations:\n 0: Defined in AOT Specifc Config\n 1: 1 channel: front-center\n 2: 2 channels: front-left, front-right\n */\n // audioObjectType = profile => profile, the MPEG-4 Audio Object Type minus 1\n\n\n config[0] = adtsObjectType << 3; // samplingFrequencyIndex\n\n config[0] |= (adtsSamplingIndex & 0x0e) >> 1;\n config[1] |= (adtsSamplingIndex & 0x01) << 7; // channelConfiguration\n\n config[1] |= adtsChanelConfig << 3;\n\n if (adtsObjectType === 5) {\n // adtsExtensionSampleingIndex\n config[1] |= (adtsExtensionSamplingIndex & 0x0e) >> 1;\n config[2] = (adtsExtensionSamplingIndex & 0x01) << 7; // adtsObjectType (force to 2, chrome is checking that object type is less than 5 ???\n // https://chromium.googlesource.com/chromium/src.git/+/master/media/formats/mp4/aac.cc\n\n config[2] |= 2 << 2;\n config[3] = 0;\n }\n\n return {\n config: config,\n samplerate: adtsSampleingRates[adtsSamplingIndex],\n channelCount: adtsChanelConfig,\n codec: 'mp4a.40.' + adtsObjectType,\n manifestCodec: manifestCodec\n };\n}\nfunction isHeaderPattern(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0;\n}\nfunction getHeaderLength(data, offset) {\n return data[offset + 1] & 0x01 ? 7 : 9;\n}\nfunction getFullFrameLength(data, offset) {\n return (data[offset + 3] & 0x03) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 0xe0) >>> 5;\n}\nfunction canGetFrameLength(data, offset) {\n return offset + 5 < data.length;\n}\nfunction isHeader(data, offset) {\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n return offset + 1 < data.length && isHeaderPattern(data, offset);\n}\nfunction canParse(data, offset) {\n return canGetFrameLength(data, offset) && isHeaderPattern(data, offset) && getFullFrameLength(data, offset) <= data.length - offset;\n}\nfunction probe(data, offset) {\n // same as isHeader but we also check that ADTS frame follows last ADTS frame\n // or end of data is reached\n if (isHeader(data, offset)) {\n // ADTS header Length\n var headerLength = getHeaderLength(data, offset);\n\n if (offset + headerLength >= data.length) {\n return false;\n } // ADTS frame Length\n\n\n var frameLength = getFullFrameLength(data, offset);\n\n if (frameLength <= headerLength) {\n return false;\n }\n\n var newOffset = offset + frameLength;\n return newOffset === data.length || isHeader(data, newOffset);\n }\n\n return false;\n}\nfunction initTrackConfig(track, observer, data, offset, audioCodec) {\n if (!track.samplerate) {\n var config = getAudioConfig(observer, data, offset, audioCodec);\n\n if (!config) {\n return;\n }\n\n track.config = config.config;\n track.samplerate = config.samplerate;\n track.channelCount = config.channelCount;\n track.codec = config.codec;\n track.manifestCodec = config.manifestCodec;\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].log(\"parsed codec:\" + track.codec + \", rate:\" + config.samplerate + \", channels:\" + config.channelCount);\n }\n}\nfunction getFrameDuration(samplerate) {\n return 1024 * 90000 / samplerate;\n}\nfunction parseFrameHeader(data, offset) {\n // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header\n var headerLength = getHeaderLength(data, offset);\n\n if (offset + headerLength <= data.length) {\n // retrieve frame size\n var frameLength = getFullFrameLength(data, offset) - headerLength;\n\n if (frameLength > 0) {\n // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}`);\n return {\n headerLength: headerLength,\n frameLength: frameLength\n };\n }\n }\n}\nfunction appendFrame(track, data, offset, pts, frameIndex) {\n var frameDuration = getFrameDuration(track.samplerate);\n var stamp = pts + frameIndex * frameDuration;\n var header = parseFrameHeader(data, offset);\n var unit;\n\n if (header) {\n var frameLength = header.frameLength,\n headerLength = header.headerLength;\n\n var _length = headerLength + frameLength;\n\n var missing = Math.max(0, offset + _length - data.length); // logger.log(`AAC frame ${frameIndex}, pts:${stamp} length@offset/total: ${frameLength}@${offset+headerLength}/${data.byteLength} missing: ${missing}`);\n\n if (missing) {\n unit = new Uint8Array(_length - headerLength);\n unit.set(data.subarray(offset + headerLength, data.length), 0);\n } else {\n unit = data.subarray(offset + headerLength, offset + _length);\n }\n\n var _sample = {\n unit: unit,\n pts: stamp\n };\n\n if (!missing) {\n track.samples.push(_sample);\n }\n\n return {\n sample: _sample,\n length: _length,\n missing: missing\n };\n } // overflow incomplete header\n\n\n var length = data.length - offset;\n unit = new Uint8Array(length);\n unit.set(data.subarray(offset, data.length), 0);\n var sample = {\n unit: unit,\n pts: stamp\n };\n return {\n sample: sample,\n length: length,\n missing: -1\n };\n}\n\n/***/ }),\n\n/***/ \"./src/demux/base-audio-demuxer.ts\":\n/*!*****************************************!*\\\n !*** ./src/demux/base-audio-demuxer.ts ***!\n \\*****************************************/\n/*! exports provided: initPTSFn, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initPTSFn\", function() { return initPTSFn; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\n/* harmony import */ var _types_demuxer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../types/demuxer */ \"./src/types/demuxer.ts\");\n/* harmony import */ var _dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dummy-demuxed-track */ \"./src/demux/dummy-demuxed-track.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _utils_typed_array__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/typed-array */ \"./src/utils/typed-array.ts\");\n\n\n\n\n\n\n\n\nvar BaseAudioDemuxer = /*#__PURE__*/function () {\n function BaseAudioDemuxer() {\n this._audioTrack = void 0;\n this._id3Track = void 0;\n this.frameIndex = 0;\n this.cachedData = null;\n this.basePTS = null;\n this.initPTS = null;\n }\n\n var _proto = BaseAudioDemuxer.prototype;\n\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n this._id3Track = {\n type: 'id3',\n id: 3,\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: 0,\n samples: [],\n dropped: 0\n };\n };\n\n _proto.resetTimeStamp = function resetTimeStamp(deaultTimestamp) {\n this.initPTS = deaultTimestamp;\n this.resetContiguity();\n };\n\n _proto.resetContiguity = function resetContiguity() {\n this.basePTS = null;\n this.frameIndex = 0;\n };\n\n _proto.canParse = function canParse(data, offset) {\n return false;\n };\n\n _proto.appendFrame = function appendFrame(track, data, offset) {} // feed incoming data to the front of the parsing pipeline\n ;\n\n _proto.demux = function demux(data, timeOffset) {\n if (this.cachedData) {\n data = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"appendUint8Array\"])(this.cachedData, data);\n this.cachedData = null;\n }\n\n var id3Data = _demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"getID3Data\"](data, 0);\n var offset = id3Data ? id3Data.length : 0;\n var lastDataIndex;\n var pts;\n var track = this._audioTrack;\n var id3Track = this._id3Track;\n var timestamp = id3Data ? _demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"getTimeStamp\"](id3Data) : undefined;\n var length = data.length;\n\n if (this.basePTS === null || this.frameIndex === 0 && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(timestamp)) {\n this.basePTS = initPTSFn(timestamp, timeOffset, this.initPTS);\n } // more expressive than alternative: id3Data?.length\n\n\n if (id3Data && id3Data.length > 0) {\n id3Track.samples.push({\n pts: this.basePTS,\n dts: this.basePTS,\n data: id3Data,\n type: _types_demuxer__WEBPACK_IMPORTED_MODULE_2__[\"MetadataSchema\"].audioId3\n });\n }\n\n pts = this.basePTS;\n\n while (offset < length) {\n if (this.canParse(data, offset)) {\n var frame = this.appendFrame(track, data, offset);\n\n if (frame) {\n this.frameIndex++;\n pts = frame.sample.pts;\n offset += frame.length;\n lastDataIndex = offset;\n } else {\n offset = length;\n }\n } else if (_demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"canParse\"](data, offset)) {\n // after a ID3.canParse, a call to ID3.getID3Data *should* always returns some data\n id3Data = _demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"getID3Data\"](data, offset);\n id3Track.samples.push({\n pts: pts,\n dts: pts,\n data: id3Data,\n type: _types_demuxer__WEBPACK_IMPORTED_MODULE_2__[\"MetadataSchema\"].audioId3\n });\n offset += id3Data.length;\n lastDataIndex = offset;\n } else {\n offset++;\n }\n\n if (offset === length && lastDataIndex !== length) {\n var partialData = Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_5__[\"sliceUint8\"])(data, lastDataIndex);\n\n if (this.cachedData) {\n this.cachedData = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"appendUint8Array\"])(this.cachedData, partialData);\n } else {\n this.cachedData = partialData;\n }\n }\n }\n\n return {\n audioTrack: track,\n videoTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])(),\n id3Track: id3Track,\n textTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])()\n };\n };\n\n _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) {\n return Promise.reject(new Error(\"[\" + this + \"] This demuxer does not support Sample-AES decryption\"));\n };\n\n _proto.flush = function flush(timeOffset) {\n // Parse cache in case of remaining frames.\n var cachedData = this.cachedData;\n\n if (cachedData) {\n this.cachedData = null;\n this.demux(cachedData, 0);\n }\n\n return {\n audioTrack: this._audioTrack,\n videoTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])(),\n id3Track: this._id3Track,\n textTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])()\n };\n };\n\n _proto.destroy = function destroy() {};\n\n return BaseAudioDemuxer;\n}();\n/**\n * Initialize PTS\n *

    \n * use timestamp unless it is undefined, NaN or Infinity\n *

    \n */\n\n\nvar initPTSFn = function initPTSFn(timestamp, timeOffset, initPTS) {\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(timestamp)) {\n return timestamp * 90;\n }\n\n return timeOffset * 90000 + (initPTS || 0);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (BaseAudioDemuxer);\n\n/***/ }),\n\n/***/ \"./src/demux/chunk-cache.ts\":\n/*!**********************************!*\\\n !*** ./src/demux/chunk-cache.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ChunkCache; });\nvar ChunkCache = /*#__PURE__*/function () {\n function ChunkCache() {\n this.chunks = [];\n this.dataLength = 0;\n }\n\n var _proto = ChunkCache.prototype;\n\n _proto.push = function push(chunk) {\n this.chunks.push(chunk);\n this.dataLength += chunk.length;\n };\n\n _proto.flush = function flush() {\n var chunks = this.chunks,\n dataLength = this.dataLength;\n var result;\n\n if (!chunks.length) {\n return new Uint8Array(0);\n } else if (chunks.length === 1) {\n result = chunks[0];\n } else {\n result = concatUint8Arrays(chunks, dataLength);\n }\n\n this.reset();\n return result;\n };\n\n _proto.reset = function reset() {\n this.chunks.length = 0;\n this.dataLength = 0;\n };\n\n return ChunkCache;\n}();\n\n\n\nfunction concatUint8Arrays(chunks, dataLength) {\n var result = new Uint8Array(dataLength);\n var offset = 0;\n\n for (var i = 0; i < chunks.length; i++) {\n var chunk = chunks[i];\n result.set(chunk, offset);\n offset += chunk.length;\n }\n\n return result;\n}\n\n/***/ }),\n\n/***/ \"./src/demux/dummy-demuxed-track.ts\":\n/*!******************************************!*\\\n !*** ./src/demux/dummy-demuxed-track.ts ***!\n \\******************************************/\n/*! exports provided: dummyTrack */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dummyTrack\", function() { return dummyTrack; });\nfunction dummyTrack(type, inputTimeScale) {\n if (type === void 0) {\n type = '';\n }\n\n if (inputTimeScale === void 0) {\n inputTimeScale = 90000;\n }\n\n return {\n type: type,\n id: -1,\n pid: -1,\n inputTimeScale: inputTimeScale,\n sequenceNumber: -1,\n samples: [],\n dropped: 0\n };\n}\n\n/***/ }),\n\n/***/ \"./src/demux/exp-golomb.ts\":\n/*!*********************************!*\\\n !*** ./src/demux/exp-golomb.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/**\n * Parser for exponential Golomb codes, a variable-bitwidth number encoding scheme used by h264.\n */\n\n\nvar ExpGolomb = /*#__PURE__*/function () {\n function ExpGolomb(data) {\n this.data = void 0;\n this.bytesAvailable = void 0;\n this.word = void 0;\n this.bitsAvailable = void 0;\n this.data = data; // the number of bytes left to examine in this.data\n\n this.bytesAvailable = data.byteLength; // the current word being examined\n\n this.word = 0; // :uint\n // the number of bits left to examine in the current word\n\n this.bitsAvailable = 0; // :uint\n } // ():void\n\n\n var _proto = ExpGolomb.prototype;\n\n _proto.loadWord = function loadWord() {\n var data = this.data;\n var bytesAvailable = this.bytesAvailable;\n var position = data.byteLength - bytesAvailable;\n var workingBytes = new Uint8Array(4);\n var availableBytes = Math.min(4, bytesAvailable);\n\n if (availableBytes === 0) {\n throw new Error('no bytes available');\n }\n\n workingBytes.set(data.subarray(position, position + availableBytes));\n this.word = new DataView(workingBytes.buffer).getUint32(0); // track the amount of this.data that has been processed\n\n this.bitsAvailable = availableBytes * 8;\n this.bytesAvailable -= availableBytes;\n } // (count:int):void\n ;\n\n _proto.skipBits = function skipBits(count) {\n var skipBytes; // :int\n\n if (this.bitsAvailable > count) {\n this.word <<= count;\n this.bitsAvailable -= count;\n } else {\n count -= this.bitsAvailable;\n skipBytes = count >> 3;\n count -= skipBytes >> 3;\n this.bytesAvailable -= skipBytes;\n this.loadWord();\n this.word <<= count;\n this.bitsAvailable -= count;\n }\n } // (size:int):uint\n ;\n\n _proto.readBits = function readBits(size) {\n var bits = Math.min(this.bitsAvailable, size); // :uint\n\n var valu = this.word >>> 32 - bits; // :uint\n\n if (size > 32) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].error('Cannot read more than 32 bits at a time');\n }\n\n this.bitsAvailable -= bits;\n\n if (this.bitsAvailable > 0) {\n this.word <<= bits;\n } else if (this.bytesAvailable > 0) {\n this.loadWord();\n }\n\n bits = size - bits;\n\n if (bits > 0 && this.bitsAvailable) {\n return valu << bits | this.readBits(bits);\n } else {\n return valu;\n }\n } // ():uint\n ;\n\n _proto.skipLZ = function skipLZ() {\n var leadingZeroCount; // :uint\n\n for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) {\n if ((this.word & 0x80000000 >>> leadingZeroCount) !== 0) {\n // the first bit of working word is 1\n this.word <<= leadingZeroCount;\n this.bitsAvailable -= leadingZeroCount;\n return leadingZeroCount;\n }\n } // we exhausted word and still have not found a 1\n\n\n this.loadWord();\n return leadingZeroCount + this.skipLZ();\n } // ():void\n ;\n\n _proto.skipUEG = function skipUEG() {\n this.skipBits(1 + this.skipLZ());\n } // ():void\n ;\n\n _proto.skipEG = function skipEG() {\n this.skipBits(1 + this.skipLZ());\n } // ():uint\n ;\n\n _proto.readUEG = function readUEG() {\n var clz = this.skipLZ(); // :uint\n\n return this.readBits(clz + 1) - 1;\n } // ():int\n ;\n\n _proto.readEG = function readEG() {\n var valu = this.readUEG(); // :int\n\n if (0x01 & valu) {\n // the number is odd if the low order bit is set\n return 1 + valu >>> 1; // add 1 to make it even, and divide by 2\n } else {\n return -1 * (valu >>> 1); // divide by two then make it negative\n }\n } // Some convenience functions\n // :Boolean\n ;\n\n _proto.readBoolean = function readBoolean() {\n return this.readBits(1) === 1;\n } // ():int\n ;\n\n _proto.readUByte = function readUByte() {\n return this.readBits(8);\n } // ():int\n ;\n\n _proto.readUShort = function readUShort() {\n return this.readBits(16);\n } // ():int\n ;\n\n _proto.readUInt = function readUInt() {\n return this.readBits(32);\n }\n /**\n * Advance the ExpGolomb decoder past a scaling list. The scaling\n * list is optionally transmitted as part of a sequence parameter\n * set and is not relevant to transmuxing.\n * @param count the number of entries in this scaling list\n * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1\n */\n ;\n\n _proto.skipScalingList = function skipScalingList(count) {\n var lastScale = 8;\n var nextScale = 8;\n var deltaScale;\n\n for (var j = 0; j < count; j++) {\n if (nextScale !== 0) {\n deltaScale = this.readEG();\n nextScale = (lastScale + deltaScale + 256) % 256;\n }\n\n lastScale = nextScale === 0 ? lastScale : nextScale;\n }\n }\n /**\n * Read a sequence parameter set and return some interesting video\n * properties. A sequence parameter set is the H264 metadata that\n * describes the properties of upcoming video frames.\n * @param data {Uint8Array} the bytes of a sequence parameter set\n * @return {object} an object with configuration parsed from the\n * sequence parameter set, including the dimensions of the\n * associated video frames.\n */\n ;\n\n _proto.readSPS = function readSPS() {\n var frameCropLeftOffset = 0;\n var frameCropRightOffset = 0;\n var frameCropTopOffset = 0;\n var frameCropBottomOffset = 0;\n var numRefFramesInPicOrderCntCycle;\n var scalingListCount;\n var i;\n var readUByte = this.readUByte.bind(this);\n var readBits = this.readBits.bind(this);\n var readUEG = this.readUEG.bind(this);\n var readBoolean = this.readBoolean.bind(this);\n var skipBits = this.skipBits.bind(this);\n var skipEG = this.skipEG.bind(this);\n var skipUEG = this.skipUEG.bind(this);\n var skipScalingList = this.skipScalingList.bind(this);\n readUByte();\n var profileIdc = readUByte(); // profile_idc\n\n readBits(5); // profileCompat constraint_set[0-4]_flag, u(5)\n\n skipBits(3); // reserved_zero_3bits u(3),\n\n readUByte(); // level_idc u(8)\n\n skipUEG(); // seq_parameter_set_id\n // some profiles have more optional data we don't need\n\n if (profileIdc === 100 || profileIdc === 110 || profileIdc === 122 || profileIdc === 244 || profileIdc === 44 || profileIdc === 83 || profileIdc === 86 || profileIdc === 118 || profileIdc === 128) {\n var chromaFormatIdc = readUEG();\n\n if (chromaFormatIdc === 3) {\n skipBits(1);\n } // separate_colour_plane_flag\n\n\n skipUEG(); // bit_depth_luma_minus8\n\n skipUEG(); // bit_depth_chroma_minus8\n\n skipBits(1); // qpprime_y_zero_transform_bypass_flag\n\n if (readBoolean()) {\n // seq_scaling_matrix_present_flag\n scalingListCount = chromaFormatIdc !== 3 ? 8 : 12;\n\n for (i = 0; i < scalingListCount; i++) {\n if (readBoolean()) {\n // seq_scaling_list_present_flag[ i ]\n if (i < 6) {\n skipScalingList(16);\n } else {\n skipScalingList(64);\n }\n }\n }\n }\n }\n\n skipUEG(); // log2_max_frame_num_minus4\n\n var picOrderCntType = readUEG();\n\n if (picOrderCntType === 0) {\n readUEG(); // log2_max_pic_order_cnt_lsb_minus4\n } else if (picOrderCntType === 1) {\n skipBits(1); // delta_pic_order_always_zero_flag\n\n skipEG(); // offset_for_non_ref_pic\n\n skipEG(); // offset_for_top_to_bottom_field\n\n numRefFramesInPicOrderCntCycle = readUEG();\n\n for (i = 0; i < numRefFramesInPicOrderCntCycle; i++) {\n skipEG();\n } // offset_for_ref_frame[ i ]\n\n }\n\n skipUEG(); // max_num_ref_frames\n\n skipBits(1); // gaps_in_frame_num_value_allowed_flag\n\n var picWidthInMbsMinus1 = readUEG();\n var picHeightInMapUnitsMinus1 = readUEG();\n var frameMbsOnlyFlag = readBits(1);\n\n if (frameMbsOnlyFlag === 0) {\n skipBits(1);\n } // mb_adaptive_frame_field_flag\n\n\n skipBits(1); // direct_8x8_inference_flag\n\n if (readBoolean()) {\n // frame_cropping_flag\n frameCropLeftOffset = readUEG();\n frameCropRightOffset = readUEG();\n frameCropTopOffset = readUEG();\n frameCropBottomOffset = readUEG();\n }\n\n var pixelRatio = [1, 1];\n\n if (readBoolean()) {\n // vui_parameters_present_flag\n if (readBoolean()) {\n // aspect_ratio_info_present_flag\n var aspectRatioIdc = readUByte();\n\n switch (aspectRatioIdc) {\n case 1:\n pixelRatio = [1, 1];\n break;\n\n case 2:\n pixelRatio = [12, 11];\n break;\n\n case 3:\n pixelRatio = [10, 11];\n break;\n\n case 4:\n pixelRatio = [16, 11];\n break;\n\n case 5:\n pixelRatio = [40, 33];\n break;\n\n case 6:\n pixelRatio = [24, 11];\n break;\n\n case 7:\n pixelRatio = [20, 11];\n break;\n\n case 8:\n pixelRatio = [32, 11];\n break;\n\n case 9:\n pixelRatio = [80, 33];\n break;\n\n case 10:\n pixelRatio = [18, 11];\n break;\n\n case 11:\n pixelRatio = [15, 11];\n break;\n\n case 12:\n pixelRatio = [64, 33];\n break;\n\n case 13:\n pixelRatio = [160, 99];\n break;\n\n case 14:\n pixelRatio = [4, 3];\n break;\n\n case 15:\n pixelRatio = [3, 2];\n break;\n\n case 16:\n pixelRatio = [2, 1];\n break;\n\n case 255:\n {\n pixelRatio = [readUByte() << 8 | readUByte(), readUByte() << 8 | readUByte()];\n break;\n }\n }\n }\n }\n\n return {\n width: Math.ceil((picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2),\n height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - (frameMbsOnlyFlag ? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset),\n pixelRatio: pixelRatio\n };\n };\n\n _proto.readSliceType = function readSliceType() {\n // skip NALu type\n this.readUByte(); // discard first_mb_in_slice\n\n this.readUEG(); // return slice_type\n\n return this.readUEG();\n };\n\n return ExpGolomb;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ExpGolomb);\n\n/***/ }),\n\n/***/ \"./src/demux/id3.ts\":\n/*!**************************!*\\\n !*** ./src/demux/id3.ts ***!\n \\**************************/\n/*! exports provided: isHeader, isFooter, getID3Data, canParse, getTimeStamp, isTimeStampFrame, getID3Frames, decodeFrame, utf8ArrayToStr, testables */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeader\", function() { return isHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFooter\", function() { return isFooter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getID3Data\", function() { return getID3Data; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"canParse\", function() { return canParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTimeStamp\", function() { return getTimeStamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTimeStampFrame\", function() { return isTimeStampFrame; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getID3Frames\", function() { return getID3Frames; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"decodeFrame\", function() { return decodeFrame; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utf8ArrayToStr\", function() { return utf8ArrayToStr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"testables\", function() { return testables; });\n// breaking up those two types in order to clarify what is happening in the decoding path.\n\n/**\n * Returns true if an ID3 header can be found at offset in data\n * @param {Uint8Array} data - The data to search in\n * @param {number} offset - The offset at which to start searching\n * @return {boolean} - True if an ID3 header is found\n */\nvar isHeader = function isHeader(data, offset) {\n /*\n * http://id3.org/id3v2.3.0\n * [0] = 'I'\n * [1] = 'D'\n * [2] = '3'\n * [3,4] = {Version}\n * [5] = {Flags}\n * [6-9] = {ID3 Size}\n *\n * An ID3v2 tag can be detected with the following pattern:\n * $49 44 33 yy yy xx zz zz zz zz\n * Where yy is less than $FF, xx is the 'flags' byte and zz is less than $80\n */\n if (offset + 10 <= data.length) {\n // look for 'ID3' identifier\n if (data[offset] === 0x49 && data[offset + 1] === 0x44 && data[offset + 2] === 0x33) {\n // check version is within range\n if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n // check size is within range\n if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) {\n return true;\n }\n }\n }\n }\n\n return false;\n};\n/**\n * Returns true if an ID3 footer can be found at offset in data\n * @param {Uint8Array} data - The data to search in\n * @param {number} offset - The offset at which to start searching\n * @return {boolean} - True if an ID3 footer is found\n */\n\nvar isFooter = function isFooter(data, offset) {\n /*\n * The footer is a copy of the header, but with a different identifier\n */\n if (offset + 10 <= data.length) {\n // look for '3DI' identifier\n if (data[offset] === 0x33 && data[offset + 1] === 0x44 && data[offset + 2] === 0x49) {\n // check version is within range\n if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n // check size is within range\n if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) {\n return true;\n }\n }\n }\n }\n\n return false;\n};\n/**\n * Returns any adjacent ID3 tags found in data starting at offset, as one block of data\n * @param {Uint8Array} data - The data to search in\n * @param {number} offset - The offset at which to start searching\n * @return {Uint8Array | undefined} - The block of data containing any ID3 tags found\n * or *undefined* if no header is found at the starting offset\n */\n\nvar getID3Data = function getID3Data(data, offset) {\n var front = offset;\n var length = 0;\n\n while (isHeader(data, offset)) {\n // ID3 header is 10 bytes\n length += 10;\n var size = readSize(data, offset + 6);\n length += size;\n\n if (isFooter(data, offset + 10)) {\n // ID3 footer is 10 bytes\n length += 10;\n }\n\n offset += length;\n }\n\n if (length > 0) {\n return data.subarray(front, front + length);\n }\n\n return undefined;\n};\n\nvar readSize = function readSize(data, offset) {\n var size = 0;\n size = (data[offset] & 0x7f) << 21;\n size |= (data[offset + 1] & 0x7f) << 14;\n size |= (data[offset + 2] & 0x7f) << 7;\n size |= data[offset + 3] & 0x7f;\n return size;\n};\n\nvar canParse = function canParse(data, offset) {\n return isHeader(data, offset) && readSize(data, offset + 6) + 10 <= data.length - offset;\n};\n/**\n * Searches for the Elementary Stream timestamp found in the ID3 data chunk\n * @param {Uint8Array} data - Block of data containing one or more ID3 tags\n * @return {number | undefined} - The timestamp\n */\n\nvar getTimeStamp = function getTimeStamp(data) {\n var frames = getID3Frames(data);\n\n for (var i = 0; i < frames.length; i++) {\n var frame = frames[i];\n\n if (isTimeStampFrame(frame)) {\n return readTimeStamp(frame);\n }\n }\n\n return undefined;\n};\n/**\n * Returns true if the ID3 frame is an Elementary Stream timestamp frame\n * @param {ID3 frame} frame\n */\n\nvar isTimeStampFrame = function isTimeStampFrame(frame) {\n return frame && frame.key === 'PRIV' && frame.info === 'com.apple.streaming.transportStreamTimestamp';\n};\n\nvar getFrameData = function getFrameData(data) {\n /*\n Frame ID $xx xx xx xx (four characters)\n Size $xx xx xx xx\n Flags $xx xx\n */\n var type = String.fromCharCode(data[0], data[1], data[2], data[3]);\n var size = readSize(data, 4); // skip frame id, size, and flags\n\n var offset = 10;\n return {\n type: type,\n size: size,\n data: data.subarray(offset, offset + size)\n };\n};\n/**\n * Returns an array of ID3 frames found in all the ID3 tags in the id3Data\n * @param {Uint8Array} id3Data - The ID3 data containing one or more ID3 tags\n * @return {ID3.Frame[]} - Array of ID3 frame objects\n */\n\n\nvar getID3Frames = function getID3Frames(id3Data) {\n var offset = 0;\n var frames = [];\n\n while (isHeader(id3Data, offset)) {\n var size = readSize(id3Data, offset + 6); // skip past ID3 header\n\n offset += 10;\n var end = offset + size; // loop through frames in the ID3 tag\n\n while (offset + 8 < end) {\n var frameData = getFrameData(id3Data.subarray(offset));\n var frame = decodeFrame(frameData);\n\n if (frame) {\n frames.push(frame);\n } // skip frame header and frame data\n\n\n offset += frameData.size + 10;\n }\n\n if (isFooter(id3Data, offset)) {\n offset += 10;\n }\n }\n\n return frames;\n};\nvar decodeFrame = function decodeFrame(frame) {\n if (frame.type === 'PRIV') {\n return decodePrivFrame(frame);\n } else if (frame.type[0] === 'W') {\n return decodeURLFrame(frame);\n }\n\n return decodeTextFrame(frame);\n};\n\nvar decodePrivFrame = function decodePrivFrame(frame) {\n /*\n Format: \\0\n */\n if (frame.size < 2) {\n return undefined;\n }\n\n var owner = utf8ArrayToStr(frame.data, true);\n var privateData = new Uint8Array(frame.data.subarray(owner.length + 1));\n return {\n key: frame.type,\n info: owner,\n data: privateData.buffer\n };\n};\n\nvar decodeTextFrame = function decodeTextFrame(frame) {\n if (frame.size < 2) {\n return undefined;\n }\n\n if (frame.type === 'TXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{Value}\n */\n var index = 1;\n var description = utf8ArrayToStr(frame.data.subarray(index), true);\n index += description.length + 1;\n var value = utf8ArrayToStr(frame.data.subarray(index));\n return {\n key: frame.type,\n info: description,\n data: value\n };\n }\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Value}\n */\n\n\n var text = utf8ArrayToStr(frame.data.subarray(1));\n return {\n key: frame.type,\n data: text\n };\n};\n\nvar decodeURLFrame = function decodeURLFrame(frame) {\n if (frame.type === 'WXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{URL}\n */\n if (frame.size < 2) {\n return undefined;\n }\n\n var index = 1;\n var description = utf8ArrayToStr(frame.data.subarray(index), true);\n index += description.length + 1;\n var value = utf8ArrayToStr(frame.data.subarray(index));\n return {\n key: frame.type,\n info: description,\n data: value\n };\n }\n /*\n Format:\n [0-?] = {URL}\n */\n\n\n var url = utf8ArrayToStr(frame.data);\n return {\n key: frame.type,\n data: url\n };\n};\n\nvar readTimeStamp = function readTimeStamp(timeStampFrame) {\n if (timeStampFrame.data.byteLength === 8) {\n var data = new Uint8Array(timeStampFrame.data); // timestamp is 33 bit expressed as a big-endian eight-octet number,\n // with the upper 31 bits set to zero.\n\n var pts33Bit = data[3] & 0x1;\n var timestamp = (data[4] << 23) + (data[5] << 15) + (data[6] << 7) + data[7];\n timestamp /= 45;\n\n if (pts33Bit) {\n timestamp += 47721858.84;\n } // 2^32 / 90\n\n\n return Math.round(timestamp);\n }\n\n return undefined;\n}; // http://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript/22373197\n// http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt\n\n/* utf.js - UTF-8 <=> UTF-16 convertion\n *\n * Copyright (C) 1999 Masanao Izumo \n * Version: 1.0\n * LastModified: Dec 25 1999\n * This library is free. You can redistribute it and/or modify it.\n */\n\n\nvar utf8ArrayToStr = function utf8ArrayToStr(array, exitOnNull) {\n if (exitOnNull === void 0) {\n exitOnNull = false;\n }\n\n var decoder = getTextDecoder();\n\n if (decoder) {\n var decoded = decoder.decode(array);\n\n if (exitOnNull) {\n // grab up to the first null\n var idx = decoded.indexOf('\\0');\n return idx !== -1 ? decoded.substring(0, idx) : decoded;\n } // remove any null characters\n\n\n return decoded.replace(/\\0/g, '');\n }\n\n var len = array.length;\n var c;\n var char2;\n var char3;\n var out = '';\n var i = 0;\n\n while (i < len) {\n c = array[i++];\n\n if (c === 0x00 && exitOnNull) {\n return out;\n } else if (c === 0x00 || c === 0x03) {\n // If the character is 3 (END_OF_TEXT) or 0 (NULL) then skip it\n continue;\n }\n\n switch (c >> 4) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n // 0xxxxxxx\n out += String.fromCharCode(c);\n break;\n\n case 12:\n case 13:\n // 110x xxxx 10xx xxxx\n char2 = array[i++];\n out += String.fromCharCode((c & 0x1f) << 6 | char2 & 0x3f);\n break;\n\n case 14:\n // 1110 xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++];\n char3 = array[i++];\n out += String.fromCharCode((c & 0x0f) << 12 | (char2 & 0x3f) << 6 | (char3 & 0x3f) << 0);\n break;\n\n default:\n }\n }\n\n return out;\n};\nvar testables = {\n decodeTextFrame: decodeTextFrame\n};\nvar decoder;\n\nfunction getTextDecoder() {\n if (!decoder && typeof self.TextDecoder !== 'undefined') {\n decoder = new self.TextDecoder('utf-8');\n }\n\n return decoder;\n}\n\n/***/ }),\n\n/***/ \"./src/demux/mp3demuxer.ts\":\n/*!*********************************!*\\\n !*** ./src/demux/mp3demuxer.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base-audio-demuxer */ \"./src/demux/base-audio-demuxer.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _mpegaudio__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mpegaudio */ \"./src/demux/mpegaudio.ts\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * MP3 demuxer\n */\n\n\n\n\n\nvar MP3Demuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {\n _inheritsLoose(MP3Demuxer, _BaseAudioDemuxer);\n\n function MP3Demuxer() {\n return _BaseAudioDemuxer.apply(this, arguments) || this;\n }\n\n var _proto = MP3Demuxer.prototype;\n\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n _BaseAudioDemuxer.prototype.resetInitSegment.call(this, initSegment, audioCodec, videoCodec, trackDuration);\n\n this._audioTrack = {\n container: 'audio/mpeg',\n type: 'audio',\n id: 2,\n pid: -1,\n sequenceNumber: 0,\n segmentCodec: 'mp3',\n samples: [],\n manifestCodec: audioCodec,\n duration: trackDuration,\n inputTimeScale: 90000,\n dropped: 0\n };\n };\n\n MP3Demuxer.probe = function probe(data) {\n if (!data) {\n return false;\n } // check if data contains ID3 timestamp and MPEG sync word\n // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n // More info http://www.mp3-tech.org/programmer/frame_header.html\n\n\n var id3Data = _demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"getID3Data\"](data, 0) || [];\n var offset = id3Data.length;\n\n for (var length = data.length; offset < length; offset++) {\n if (_mpegaudio__WEBPACK_IMPORTED_MODULE_3__[\"probe\"](data, offset)) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('MPEG Audio sync word found !');\n return true;\n }\n }\n\n return false;\n };\n\n _proto.canParse = function canParse(data, offset) {\n return _mpegaudio__WEBPACK_IMPORTED_MODULE_3__[\"canParse\"](data, offset);\n };\n\n _proto.appendFrame = function appendFrame(track, data, offset) {\n if (this.basePTS === null) {\n return;\n }\n\n return _mpegaudio__WEBPACK_IMPORTED_MODULE_3__[\"appendFrame\"](track, data, offset, this.basePTS, this.frameIndex);\n };\n\n return MP3Demuxer;\n}(_base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MP3Demuxer);\n\n/***/ }),\n\n/***/ \"./src/demux/mp4demuxer.ts\":\n/*!*********************************!*\\\n !*** ./src/demux/mp4demuxer.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _types_demuxer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../types/demuxer */ \"./src/types/demuxer.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dummy-demuxed-track */ \"./src/demux/dummy-demuxed-track.ts\");\n\n\n/**\n * MP4 demuxer\n */\n\n\n\nvar emsgSchemePattern = /\\/emsg[-/]ID3/i;\n\nvar MP4Demuxer = /*#__PURE__*/function () {\n function MP4Demuxer(observer, config) {\n this.remainderData = null;\n this.timeOffset = 0;\n this.config = void 0;\n this.videoTrack = void 0;\n this.audioTrack = void 0;\n this.id3Track = void 0;\n this.txtTrack = void 0;\n this.config = config;\n }\n\n var _proto = MP4Demuxer.prototype;\n\n _proto.resetTimeStamp = function resetTimeStamp() {};\n\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n var initData = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"parseInitSegment\"])(initSegment);\n var videoTrack = this.videoTrack = Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])('video', 1);\n var audioTrack = this.audioTrack = Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])('audio', 1);\n var captionTrack = this.txtTrack = Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])('text', 1);\n this.id3Track = Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])('id3', 1);\n this.timeOffset = 0;\n\n if (initData.video) {\n var _initData$video = initData.video,\n id = _initData$video.id,\n timescale = _initData$video.timescale,\n codec = _initData$video.codec;\n videoTrack.id = id;\n videoTrack.timescale = captionTrack.timescale = timescale;\n videoTrack.codec = codec;\n }\n\n if (initData.audio) {\n var _initData$audio = initData.audio,\n _id = _initData$audio.id,\n _timescale = _initData$audio.timescale,\n _codec = _initData$audio.codec;\n audioTrack.id = _id;\n audioTrack.timescale = _timescale;\n audioTrack.codec = _codec;\n }\n\n captionTrack.id = _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"RemuxerTrackIdConfig\"].text;\n videoTrack.sampleDuration = 0;\n videoTrack.duration = audioTrack.duration = trackDuration;\n };\n\n _proto.resetContiguity = function resetContiguity() {};\n\n MP4Demuxer.probe = function probe(data) {\n // ensure we find a moof box in the first 16 kB\n data = data.length > 16384 ? data.subarray(0, 16384) : data;\n return Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"findBox\"])(data, ['moof']).length > 0;\n };\n\n _proto.demux = function demux(data, timeOffset) {\n this.timeOffset = timeOffset; // Load all data into the avc track. The CMAF remuxer will look for the data in the samples object; the rest of the fields do not matter\n\n var videoSamples = data;\n var videoTrack = this.videoTrack;\n var textTrack = this.txtTrack;\n\n if (this.config.progressive) {\n // Split the bytestream into two ranges: one encompassing all data up until the start of the last moof, and everything else.\n // This is done to guarantee that we're sending valid data to MSE - when demuxing progressively, we have no guarantee\n // that the fetch loader gives us flush moof+mdat pairs. If we push jagged data to MSE, it will throw an exception.\n if (this.remainderData) {\n videoSamples = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"appendUint8Array\"])(this.remainderData, data);\n }\n\n var segmentedData = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"segmentValidRange\"])(videoSamples);\n this.remainderData = segmentedData.remainder;\n videoTrack.samples = segmentedData.valid || new Uint8Array();\n } else {\n videoTrack.samples = videoSamples;\n }\n\n var id3Track = this.extractID3Track(videoTrack, timeOffset);\n textTrack.samples = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"parseSamples\"])(timeOffset, videoTrack);\n return {\n videoTrack: videoTrack,\n audioTrack: this.audioTrack,\n id3Track: id3Track,\n textTrack: this.txtTrack\n };\n };\n\n _proto.flush = function flush() {\n var timeOffset = this.timeOffset;\n var videoTrack = this.videoTrack;\n var textTrack = this.txtTrack;\n videoTrack.samples = this.remainderData || new Uint8Array();\n this.remainderData = null;\n var id3Track = this.extractID3Track(videoTrack, this.timeOffset);\n textTrack.samples = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"parseSamples\"])(timeOffset, videoTrack);\n return {\n videoTrack: videoTrack,\n audioTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])(),\n id3Track: id3Track,\n textTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])()\n };\n };\n\n _proto.extractID3Track = function extractID3Track(videoTrack, timeOffset) {\n var id3Track = this.id3Track;\n\n if (videoTrack.samples.length) {\n var emsgs = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"findBox\"])(videoTrack.samples, ['emsg']);\n\n if (emsgs) {\n emsgs.forEach(function (data) {\n var emsgInfo = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"parseEmsg\"])(data);\n\n if (emsgSchemePattern.test(emsgInfo.schemeIdUri)) {\n var pts = Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(emsgInfo.presentationTime) ? emsgInfo.presentationTime / emsgInfo.timeScale : timeOffset + emsgInfo.presentationTimeDelta / emsgInfo.timeScale;\n var payload = emsgInfo.payload;\n id3Track.samples.push({\n data: payload,\n len: payload.byteLength,\n dts: pts,\n pts: pts,\n type: _types_demuxer__WEBPACK_IMPORTED_MODULE_1__[\"MetadataSchema\"].emsg\n });\n }\n });\n }\n }\n\n return id3Track;\n };\n\n _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) {\n return Promise.reject(new Error('The MP4 demuxer does not support SAMPLE-AES decryption'));\n };\n\n _proto.destroy = function destroy() {};\n\n return MP4Demuxer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MP4Demuxer);\n\n/***/ }),\n\n/***/ \"./src/demux/mpegaudio.ts\":\n/*!********************************!*\\\n !*** ./src/demux/mpegaudio.ts ***!\n \\********************************/\n/*! exports provided: appendFrame, parseHeader, isHeaderPattern, isHeader, canParse, probe */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"appendFrame\", function() { return appendFrame; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseHeader\", function() { return parseHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeaderPattern\", function() { return isHeaderPattern; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeader\", function() { return isHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"canParse\", function() { return canParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"probe\", function() { return probe; });\n/**\n * MPEG parser helper\n */\nvar chromeVersion = null;\nvar BitratesMap = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160];\nvar SamplingRateMap = [44100, 48000, 32000, 22050, 24000, 16000, 11025, 12000, 8000];\nvar SamplesCoefficients = [// MPEG 2.5\n[0, // Reserved\n72, // Layer3\n144, // Layer2\n12 // Layer1\n], // Reserved\n[0, // Reserved\n0, // Layer3\n0, // Layer2\n0 // Layer1\n], // MPEG 2\n[0, // Reserved\n72, // Layer3\n144, // Layer2\n12 // Layer1\n], // MPEG 1\n[0, // Reserved\n144, // Layer3\n144, // Layer2\n12 // Layer1\n]];\nvar BytesInSlot = [0, // Reserved\n1, // Layer3\n1, // Layer2\n4 // Layer1\n];\nfunction appendFrame(track, data, offset, pts, frameIndex) {\n // Using http://www.datavoyage.com/mpgscript/mpeghdr.htm as a reference\n if (offset + 24 > data.length) {\n return;\n }\n\n var header = parseHeader(data, offset);\n\n if (header && offset + header.frameLength <= data.length) {\n var frameDuration = header.samplesPerFrame * 90000 / header.sampleRate;\n var stamp = pts + frameIndex * frameDuration;\n var sample = {\n unit: data.subarray(offset, offset + header.frameLength),\n pts: stamp,\n dts: stamp\n };\n track.config = [];\n track.channelCount = header.channelCount;\n track.samplerate = header.sampleRate;\n track.samples.push(sample);\n return {\n sample: sample,\n length: header.frameLength,\n missing: 0\n };\n }\n}\nfunction parseHeader(data, offset) {\n var mpegVersion = data[offset + 1] >> 3 & 3;\n var mpegLayer = data[offset + 1] >> 1 & 3;\n var bitRateIndex = data[offset + 2] >> 4 & 15;\n var sampleRateIndex = data[offset + 2] >> 2 & 3;\n\n if (mpegVersion !== 1 && bitRateIndex !== 0 && bitRateIndex !== 15 && sampleRateIndex !== 3) {\n var paddingBit = data[offset + 2] >> 1 & 1;\n var channelMode = data[offset + 3] >> 6;\n var columnInBitrates = mpegVersion === 3 ? 3 - mpegLayer : mpegLayer === 3 ? 3 : 4;\n var bitRate = BitratesMap[columnInBitrates * 14 + bitRateIndex - 1] * 1000;\n var columnInSampleRates = mpegVersion === 3 ? 0 : mpegVersion === 2 ? 1 : 2;\n var sampleRate = SamplingRateMap[columnInSampleRates * 3 + sampleRateIndex];\n var channelCount = channelMode === 3 ? 1 : 2; // If bits of channel mode are `11` then it is a single channel (Mono)\n\n var sampleCoefficient = SamplesCoefficients[mpegVersion][mpegLayer];\n var bytesInSlot = BytesInSlot[mpegLayer];\n var samplesPerFrame = sampleCoefficient * 8 * bytesInSlot;\n var frameLength = Math.floor(sampleCoefficient * bitRate / sampleRate + paddingBit) * bytesInSlot;\n\n if (chromeVersion === null) {\n var userAgent = navigator.userAgent || '';\n var result = userAgent.match(/Chrome\\/(\\d+)/i);\n chromeVersion = result ? parseInt(result[1]) : 0;\n }\n\n var needChromeFix = !!chromeVersion && chromeVersion <= 87;\n\n if (needChromeFix && mpegLayer === 2 && bitRate >= 224000 && channelMode === 0) {\n // Work around bug in Chromium by setting channelMode to dual-channel (01) instead of stereo (00)\n data[offset + 3] = data[offset + 3] | 0x80;\n }\n\n return {\n sampleRate: sampleRate,\n channelCount: channelCount,\n frameLength: frameLength,\n samplesPerFrame: samplesPerFrame\n };\n }\n}\nfunction isHeaderPattern(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xe0) === 0xe0 && (data[offset + 1] & 0x06) !== 0x00;\n}\nfunction isHeader(data, offset) {\n // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n // More info http://www.mp3-tech.org/programmer/frame_header.html\n return offset + 1 < data.length && isHeaderPattern(data, offset);\n}\nfunction canParse(data, offset) {\n var headerSize = 4;\n return isHeaderPattern(data, offset) && headerSize <= data.length - offset;\n}\nfunction probe(data, offset) {\n // same as isHeader but we also check that MPEG frame follows last MPEG frame\n // or end of data is reached\n if (offset + 1 < data.length && isHeaderPattern(data, offset)) {\n // MPEG header Length\n var headerLength = 4; // MPEG frame Length\n\n var header = parseHeader(data, offset);\n var frameLength = headerLength;\n\n if (header !== null && header !== void 0 && header.frameLength) {\n frameLength = header.frameLength;\n }\n\n var newOffset = offset + frameLength;\n return newOffset === data.length || isHeader(data, newOffset);\n }\n\n return false;\n}\n\n/***/ }),\n\n/***/ \"./src/demux/sample-aes.ts\":\n/*!*********************************!*\\\n !*** ./src/demux/sample-aes.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _crypt_decrypter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../crypt/decrypter */ \"./src/crypt/decrypter.ts\");\n/* harmony import */ var _tsdemuxer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tsdemuxer */ \"./src/demux/tsdemuxer.ts\");\n/**\n * SAMPLE-AES decrypter\n */\n\n\n\nvar SampleAesDecrypter = /*#__PURE__*/function () {\n function SampleAesDecrypter(observer, config, keyData) {\n this.keyData = void 0;\n this.decrypter = void 0;\n this.keyData = keyData;\n this.decrypter = new _crypt_decrypter__WEBPACK_IMPORTED_MODULE_0__[\"default\"](observer, config, {\n removePKCS7Padding: false\n });\n }\n\n var _proto = SampleAesDecrypter.prototype;\n\n _proto.decryptBuffer = function decryptBuffer(encryptedData, callback) {\n this.decrypter.decrypt(encryptedData, this.keyData.key.buffer, this.keyData.iv.buffer, callback);\n } // AAC - encrypt all full 16 bytes blocks starting from offset 16\n ;\n\n _proto.decryptAacSample = function decryptAacSample(samples, sampleIndex, callback, sync) {\n var curUnit = samples[sampleIndex].unit;\n\n if (curUnit.length <= 16) {\n // No encrypted portion in this sample (first 16 bytes is not\n // encrypted, see https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/HLS_Sample_Encryption/Encryption/Encryption.html),\n return;\n }\n\n var encryptedData = curUnit.subarray(16, curUnit.length - curUnit.length % 16);\n var encryptedBuffer = encryptedData.buffer.slice(encryptedData.byteOffset, encryptedData.byteOffset + encryptedData.length);\n var localthis = this;\n this.decryptBuffer(encryptedBuffer, function (decryptedBuffer) {\n var decryptedData = new Uint8Array(decryptedBuffer);\n curUnit.set(decryptedData, 16);\n\n if (!sync) {\n localthis.decryptAacSamples(samples, sampleIndex + 1, callback);\n }\n });\n };\n\n _proto.decryptAacSamples = function decryptAacSamples(samples, sampleIndex, callback) {\n for (;; sampleIndex++) {\n if (sampleIndex >= samples.length) {\n callback();\n return;\n }\n\n if (samples[sampleIndex].unit.length < 32) {\n continue;\n }\n\n var sync = this.decrypter.isSync();\n this.decryptAacSample(samples, sampleIndex, callback, sync);\n\n if (!sync) {\n return;\n }\n }\n } // AVC - encrypt one 16 bytes block out of ten, starting from offset 32\n ;\n\n _proto.getAvcEncryptedData = function getAvcEncryptedData(decodedData) {\n var encryptedDataLen = Math.floor((decodedData.length - 48) / 160) * 16 + 16;\n var encryptedData = new Int8Array(encryptedDataLen);\n var outputPos = 0;\n\n for (var inputPos = 32; inputPos < decodedData.length - 16; inputPos += 160, outputPos += 16) {\n encryptedData.set(decodedData.subarray(inputPos, inputPos + 16), outputPos);\n }\n\n return encryptedData;\n };\n\n _proto.getAvcDecryptedUnit = function getAvcDecryptedUnit(decodedData, decryptedData) {\n var uint8DecryptedData = new Uint8Array(decryptedData);\n var inputPos = 0;\n\n for (var outputPos = 32; outputPos < decodedData.length - 16; outputPos += 160, inputPos += 16) {\n decodedData.set(uint8DecryptedData.subarray(inputPos, inputPos + 16), outputPos);\n }\n\n return decodedData;\n };\n\n _proto.decryptAvcSample = function decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit, sync) {\n var decodedData = Object(_tsdemuxer__WEBPACK_IMPORTED_MODULE_1__[\"discardEPB\"])(curUnit.data);\n var encryptedData = this.getAvcEncryptedData(decodedData);\n var localthis = this;\n this.decryptBuffer(encryptedData.buffer, function (decryptedBuffer) {\n curUnit.data = localthis.getAvcDecryptedUnit(decodedData, decryptedBuffer);\n\n if (!sync) {\n localthis.decryptAvcSamples(samples, sampleIndex, unitIndex + 1, callback);\n }\n });\n };\n\n _proto.decryptAvcSamples = function decryptAvcSamples(samples, sampleIndex, unitIndex, callback) {\n if (samples instanceof Uint8Array) {\n throw new Error('Cannot decrypt samples of type Uint8Array');\n }\n\n for (;; sampleIndex++, unitIndex = 0) {\n if (sampleIndex >= samples.length) {\n callback();\n return;\n }\n\n var curUnits = samples[sampleIndex].units;\n\n for (;; unitIndex++) {\n if (unitIndex >= curUnits.length) {\n break;\n }\n\n var curUnit = curUnits[unitIndex];\n\n if (curUnit.data.length <= 48 || curUnit.type !== 1 && curUnit.type !== 5) {\n continue;\n }\n\n var sync = this.decrypter.isSync();\n this.decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit, sync);\n\n if (!sync) {\n return;\n }\n }\n }\n };\n\n return SampleAesDecrypter;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SampleAesDecrypter);\n\n/***/ }),\n\n/***/ \"./src/demux/transmuxer-interface.ts\":\n/*!*******************************************!*\\\n !*** ./src/demux/transmuxer-interface.ts ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return TransmuxerInterface; });\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! webworkify-webpack */ \"./node_modules/webworkify-webpack/index.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(webworkify_webpack__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../demux/transmuxer */ \"./src/demux/transmuxer.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/mediasource-helper */ \"./src/utils/mediasource-helper.ts\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! eventemitter3 */ \"./node_modules/eventemitter3/index.js\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n\nvar MediaSource = Object(_utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__[\"getMediaSource\"])() || {\n isTypeSupported: function isTypeSupported() {\n return false;\n }\n};\n\nvar TransmuxerInterface = /*#__PURE__*/function () {\n function TransmuxerInterface(hls, id, onTransmuxComplete, onFlush) {\n var _this = this;\n\n this.hls = void 0;\n this.id = void 0;\n this.observer = void 0;\n this.frag = null;\n this.part = null;\n this.worker = void 0;\n this.onwmsg = void 0;\n this.transmuxer = null;\n this.onTransmuxComplete = void 0;\n this.onFlush = void 0;\n this.hls = hls;\n this.id = id;\n this.onTransmuxComplete = onTransmuxComplete;\n this.onFlush = onFlush;\n var config = hls.config;\n\n var forwardMessage = function forwardMessage(ev, data) {\n data = data || {};\n data.frag = _this.frag;\n data.id = _this.id;\n hls.trigger(ev, data);\n }; // forward events to main thread\n\n\n this.observer = new eventemitter3__WEBPACK_IMPORTED_MODULE_6__[\"EventEmitter\"]();\n this.observer.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_DECRYPTED, forwardMessage);\n this.observer.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, forwardMessage);\n var typeSupported = {\n mp4: MediaSource.isTypeSupported('video/mp4'),\n mpeg: MediaSource.isTypeSupported('audio/mpeg'),\n mp3: MediaSource.isTypeSupported('audio/mp4; codecs=\"mp3\"')\n }; // navigator.vendor is not always available in Web Worker\n // refer to https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope/navigator\n\n var vendor = navigator.vendor;\n\n if (config.enableWorker && typeof Worker !== 'undefined') {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log('demuxing in webworker');\n var worker;\n\n try {\n worker = this.worker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_0__(/*require.resolve*/(/*! ../demux/transmuxer-worker.ts */ \"./src/demux/transmuxer-worker.ts\"));\n this.onwmsg = this.onWorkerMessage.bind(this);\n worker.addEventListener('message', this.onwmsg);\n\n worker.onerror = function (event) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorTypes\"].OTHER_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].INTERNAL_EXCEPTION,\n fatal: true,\n event: 'demuxerWorker',\n error: new Error(event.message + \" (\" + event.filename + \":\" + event.lineno + \")\")\n });\n };\n\n worker.postMessage({\n cmd: 'init',\n typeSupported: typeSupported,\n vendor: vendor,\n id: id,\n config: JSON.stringify(config)\n });\n } catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('Error in worker:', err);\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].error('Error while initializing DemuxerWorker, fallback to inline');\n\n if (worker) {\n // revoke the Object URL that was used to create transmuxer worker, so as not to leak it\n self.URL.revokeObjectURL(worker.objectURL);\n }\n\n this.transmuxer = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.observer, typeSupported, config, vendor, id);\n this.worker = null;\n }\n } else {\n this.transmuxer = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.observer, typeSupported, config, vendor, id);\n }\n }\n\n var _proto = TransmuxerInterface.prototype;\n\n _proto.destroy = function destroy() {\n var w = this.worker;\n\n if (w) {\n w.removeEventListener('message', this.onwmsg);\n w.terminate();\n this.worker = null;\n this.onwmsg = undefined;\n } else {\n var transmuxer = this.transmuxer;\n\n if (transmuxer) {\n transmuxer.destroy();\n this.transmuxer = null;\n }\n }\n\n var observer = this.observer;\n\n if (observer) {\n observer.removeAllListeners();\n }\n\n this.frag = null; // @ts-ignore\n\n this.observer = null; // @ts-ignore\n\n this.hls = null;\n };\n\n _proto.push = function push(data, initSegmentData, audioCodec, videoCodec, frag, part, duration, accurateTimeOffset, chunkMeta, defaultInitPTS) {\n var _frag$initSegment,\n _lastFrag$initSegment,\n _this2 = this;\n\n chunkMeta.transmuxing.start = self.performance.now();\n var transmuxer = this.transmuxer,\n worker = this.worker;\n var timeOffset = part ? part.start : frag.start;\n var decryptdata = frag.decryptdata;\n var lastFrag = this.frag;\n var discontinuity = !(lastFrag && frag.cc === lastFrag.cc);\n var trackSwitch = !(lastFrag && chunkMeta.level === lastFrag.level);\n var snDiff = lastFrag ? chunkMeta.sn - lastFrag.sn : -1;\n var partDiff = this.part ? chunkMeta.part - this.part.index : -1;\n var progressive = snDiff === 0 && chunkMeta.id > 1 && chunkMeta.id === (lastFrag === null || lastFrag === void 0 ? void 0 : lastFrag.stats.chunkCount);\n var contiguous = !trackSwitch && (snDiff === 1 || snDiff === 0 && (partDiff === 1 || progressive && partDiff <= 0));\n var now = self.performance.now();\n\n if (trackSwitch || snDiff || frag.stats.parsing.start === 0) {\n frag.stats.parsing.start = now;\n }\n\n if (part && (partDiff || !contiguous)) {\n part.stats.parsing.start = now;\n }\n\n var initSegmentChange = !(lastFrag && ((_frag$initSegment = frag.initSegment) === null || _frag$initSegment === void 0 ? void 0 : _frag$initSegment.url) === ((_lastFrag$initSegment = lastFrag.initSegment) === null || _lastFrag$initSegment === void 0 ? void 0 : _lastFrag$initSegment.url));\n var state = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"TransmuxState\"](discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange);\n\n if (!contiguous || discontinuity || initSegmentChange) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log(\"[transmuxer-interface, \" + frag.type + \"]: Starting new transmux session for sn: \" + chunkMeta.sn + \" p: \" + chunkMeta.part + \" level: \" + chunkMeta.level + \" id: \" + chunkMeta.id + \"\\n discontinuity: \" + discontinuity + \"\\n trackSwitch: \" + trackSwitch + \"\\n contiguous: \" + contiguous + \"\\n accurateTimeOffset: \" + accurateTimeOffset + \"\\n timeOffset: \" + timeOffset + \"\\n initSegmentChange: \" + initSegmentChange);\n var config = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"TransmuxConfig\"](audioCodec, videoCodec, initSegmentData, duration, defaultInitPTS);\n this.configureTransmuxer(config);\n }\n\n this.frag = frag;\n this.part = part; // Frags with sn of 'initSegment' are not transmuxed\n\n if (worker) {\n // post fragment payload as transferable objects for ArrayBuffer (no copy)\n worker.postMessage({\n cmd: 'demux',\n data: data,\n decryptdata: decryptdata,\n chunkMeta: chunkMeta,\n state: state\n }, data instanceof ArrayBuffer ? [data] : []);\n } else if (transmuxer) {\n var _transmuxResult = transmuxer.push(data, decryptdata, chunkMeta, state);\n\n if (Object(_demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"isPromise\"])(_transmuxResult)) {\n _transmuxResult.then(function (data) {\n _this2.handleTransmuxComplete(data);\n });\n } else {\n this.handleTransmuxComplete(_transmuxResult);\n }\n }\n };\n\n _proto.flush = function flush(chunkMeta) {\n var _this3 = this;\n\n chunkMeta.transmuxing.start = self.performance.now();\n var transmuxer = this.transmuxer,\n worker = this.worker;\n\n if (worker) {\n worker.postMessage({\n cmd: 'flush',\n chunkMeta: chunkMeta\n });\n } else if (transmuxer) {\n var _transmuxResult2 = transmuxer.flush(chunkMeta);\n\n if (Object(_demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"isPromise\"])(_transmuxResult2)) {\n _transmuxResult2.then(function (data) {\n _this3.handleFlushResult(data, chunkMeta);\n });\n } else {\n this.handleFlushResult(_transmuxResult2, chunkMeta);\n }\n }\n };\n\n _proto.handleFlushResult = function handleFlushResult(results, chunkMeta) {\n var _this4 = this;\n\n results.forEach(function (result) {\n _this4.handleTransmuxComplete(result);\n });\n this.onFlush(chunkMeta);\n };\n\n _proto.onWorkerMessage = function onWorkerMessage(ev) {\n var data = ev.data;\n var hls = this.hls;\n\n switch (data.event) {\n case 'init':\n {\n // revoke the Object URL that was used to create transmuxer worker, so as not to leak it\n self.URL.revokeObjectURL(this.worker.objectURL);\n break;\n }\n\n case 'transmuxComplete':\n {\n this.handleTransmuxComplete(data.data);\n break;\n }\n\n case 'flush':\n {\n this.onFlush(data.data);\n break;\n }\n // pass logs from the worker thread to the main logger\n\n case 'workerLog':\n if (_utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"][data.data.logType]) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"][data.data.logType](data.data.message);\n }\n\n break;\n\n /* falls through */\n\n default:\n {\n data.data = data.data || {};\n data.data.frag = this.frag;\n data.data.id = this.id;\n hls.trigger(data.event, data.data);\n break;\n }\n }\n };\n\n _proto.configureTransmuxer = function configureTransmuxer(config) {\n var worker = this.worker,\n transmuxer = this.transmuxer;\n\n if (worker) {\n worker.postMessage({\n cmd: 'configure',\n config: config\n });\n } else if (transmuxer) {\n transmuxer.configure(config);\n }\n };\n\n _proto.handleTransmuxComplete = function handleTransmuxComplete(result) {\n result.chunkMeta.transmuxing.end = self.performance.now();\n this.onTransmuxComplete(result);\n };\n\n return TransmuxerInterface;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/demux/transmuxer-worker.ts\":\n/*!****************************************!*\\\n !*** ./src/demux/transmuxer-worker.ts ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return TransmuxerWorker; });\n/* harmony import */ var _demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../demux/transmuxer */ \"./src/demux/transmuxer.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! eventemitter3 */ \"./node_modules/eventemitter3/index.js\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nfunction TransmuxerWorker(self) {\n var observer = new eventemitter3__WEBPACK_IMPORTED_MODULE_3__[\"EventEmitter\"]();\n\n var forwardMessage = function forwardMessage(ev, data) {\n self.postMessage({\n event: ev,\n data: data\n });\n }; // forward events to main thread\n\n\n observer.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_DECRYPTED, forwardMessage);\n observer.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, forwardMessage); // forward logger events to main thread\n\n var forwardWorkerLogs = function forwardWorkerLogs() {\n var _loop = function _loop(logFn) {\n var func = function func(message) {\n forwardMessage('workerLog', {\n logType: logFn,\n message: message\n });\n };\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"][logFn] = func;\n };\n\n for (var logFn in _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"]) {\n _loop(logFn);\n }\n };\n\n self.addEventListener('message', function (ev) {\n var data = ev.data;\n\n switch (data.cmd) {\n case 'init':\n {\n var config = JSON.parse(data.config);\n self.transmuxer = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__[\"default\"](observer, data.typeSupported, config, data.vendor, data.id);\n Object(_utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"enableLogs\"])(config.debug);\n forwardWorkerLogs();\n forwardMessage('init', null);\n break;\n }\n\n case 'configure':\n {\n self.transmuxer.configure(data.config);\n break;\n }\n\n case 'demux':\n {\n var transmuxResult = self.transmuxer.push(data.data, data.decryptdata, data.chunkMeta, data.state);\n\n if (Object(_demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__[\"isPromise\"])(transmuxResult)) {\n transmuxResult.then(function (data) {\n emitTransmuxComplete(self, data);\n });\n } else {\n emitTransmuxComplete(self, transmuxResult);\n }\n\n break;\n }\n\n case 'flush':\n {\n var id = data.chunkMeta;\n\n var _transmuxResult = self.transmuxer.flush(id);\n\n if (Object(_demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__[\"isPromise\"])(_transmuxResult)) {\n _transmuxResult.then(function (results) {\n handleFlushResult(self, results, id);\n });\n } else {\n handleFlushResult(self, _transmuxResult, id);\n }\n\n break;\n }\n\n default:\n break;\n }\n });\n}\n\nfunction emitTransmuxComplete(self, transmuxResult) {\n if (isEmptyResult(transmuxResult.remuxResult)) {\n return false;\n }\n\n var transferable = [];\n var _transmuxResult$remux = transmuxResult.remuxResult,\n audio = _transmuxResult$remux.audio,\n video = _transmuxResult$remux.video;\n\n if (audio) {\n addToTransferable(transferable, audio);\n }\n\n if (video) {\n addToTransferable(transferable, video);\n }\n\n self.postMessage({\n event: 'transmuxComplete',\n data: transmuxResult\n }, transferable);\n return true;\n} // Converts data to a transferable object https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast)\n// in order to minimize message passing overhead\n\n\nfunction addToTransferable(transferable, track) {\n if (track.data1) {\n transferable.push(track.data1.buffer);\n }\n\n if (track.data2) {\n transferable.push(track.data2.buffer);\n }\n}\n\nfunction handleFlushResult(self, results, chunkMeta) {\n var parsed = results.reduce(function (parsed, result) {\n return emitTransmuxComplete(self, result) || parsed;\n }, false);\n\n if (!parsed) {\n // Emit at least one \"transmuxComplete\" message even if media is not found to update stream-controller state to PARSING\n self.postMessage({\n event: 'transmuxComplete',\n data: results[0]\n });\n }\n\n self.postMessage({\n event: 'flush',\n data: chunkMeta\n });\n}\n\nfunction isEmptyResult(remuxResult) {\n return !remuxResult.audio && !remuxResult.video && !remuxResult.text && !remuxResult.id3 && !remuxResult.initSegment;\n}\n\n/***/ }),\n\n/***/ \"./src/demux/transmuxer.ts\":\n/*!*********************************!*\\\n !*** ./src/demux/transmuxer.ts ***!\n \\*********************************/\n/*! exports provided: default, isPromise, TransmuxConfig, TransmuxState */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Transmuxer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPromise\", function() { return isPromise; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TransmuxConfig\", function() { return TransmuxConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TransmuxState\", function() { return TransmuxState; });\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _crypt_decrypter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../crypt/decrypter */ \"./src/crypt/decrypter.ts\");\n/* harmony import */ var _demux_aacdemuxer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../demux/aacdemuxer */ \"./src/demux/aacdemuxer.ts\");\n/* harmony import */ var _demux_mp4demuxer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../demux/mp4demuxer */ \"./src/demux/mp4demuxer.ts\");\n/* harmony import */ var _demux_tsdemuxer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../demux/tsdemuxer */ \"./src/demux/tsdemuxer.ts\");\n/* harmony import */ var _demux_mp3demuxer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../demux/mp3demuxer */ \"./src/demux/mp3demuxer.ts\");\n/* harmony import */ var _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../remux/mp4-remuxer */ \"./src/remux/mp4-remuxer.ts\");\n/* harmony import */ var _remux_passthrough_remuxer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../remux/passthrough-remuxer */ \"./src/remux/passthrough-remuxer.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\n\n\n\n\n\n\n\nvar now; // performance.now() not available on WebWorker, at least on Safari Desktop\n\ntry {\n now = self.performance.now.bind(self.performance);\n} catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].debug('Unable to use Performance API on this environment');\n now = self.Date.now;\n}\n\nvar muxConfig = [{\n demux: _demux_tsdemuxer__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n remux: _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n}, {\n demux: _demux_mp4demuxer__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n remux: _remux_passthrough_remuxer__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n}, {\n demux: _demux_aacdemuxer__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n remux: _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n}, {\n demux: _demux_mp3demuxer__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n remux: _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n}];\n\nvar Transmuxer = /*#__PURE__*/function () {\n function Transmuxer(observer, typeSupported, config, vendor, id) {\n this.observer = void 0;\n this.typeSupported = void 0;\n this.config = void 0;\n this.vendor = void 0;\n this.id = void 0;\n this.demuxer = void 0;\n this.remuxer = void 0;\n this.decrypter = void 0;\n this.probe = void 0;\n this.decryptionPromise = null;\n this.transmuxConfig = void 0;\n this.currentTransmuxState = void 0;\n this.observer = observer;\n this.typeSupported = typeSupported;\n this.config = config;\n this.vendor = vendor;\n this.id = id;\n }\n\n var _proto = Transmuxer.prototype;\n\n _proto.configure = function configure(transmuxConfig) {\n this.transmuxConfig = transmuxConfig;\n\n if (this.decrypter) {\n this.decrypter.reset();\n }\n };\n\n _proto.push = function push(data, decryptdata, chunkMeta, state) {\n var _this = this;\n\n var stats = chunkMeta.transmuxing;\n stats.executeStart = now();\n var uintData = new Uint8Array(data);\n var config = this.config,\n currentTransmuxState = this.currentTransmuxState,\n transmuxConfig = this.transmuxConfig;\n\n if (state) {\n this.currentTransmuxState = state;\n }\n\n var _ref = state || currentTransmuxState,\n contiguous = _ref.contiguous,\n discontinuity = _ref.discontinuity,\n trackSwitch = _ref.trackSwitch,\n accurateTimeOffset = _ref.accurateTimeOffset,\n timeOffset = _ref.timeOffset,\n initSegmentChange = _ref.initSegmentChange;\n\n var audioCodec = transmuxConfig.audioCodec,\n videoCodec = transmuxConfig.videoCodec,\n defaultInitPts = transmuxConfig.defaultInitPts,\n duration = transmuxConfig.duration,\n initSegmentData = transmuxConfig.initSegmentData; // Reset muxers before probing to ensure that their state is clean, even if flushing occurs before a successful probe\n\n if (discontinuity || trackSwitch || initSegmentChange) {\n this.resetInitSegment(initSegmentData, audioCodec, videoCodec, duration);\n }\n\n if (discontinuity || initSegmentChange) {\n this.resetInitialTimestamp(defaultInitPts);\n }\n\n if (!contiguous) {\n this.resetContiguity();\n }\n\n var keyData = getEncryptionType(uintData, decryptdata);\n\n if (keyData && keyData.method === 'AES-128') {\n var decrypter = this.getDecrypter(); // Software decryption is synchronous; webCrypto is not\n\n if (config.enableSoftwareAES) {\n // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached\n // data is handled in the flush() call\n var decryptedData = decrypter.softwareDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer);\n\n if (!decryptedData) {\n stats.executeEnd = now();\n return emptyResult(chunkMeta);\n }\n\n uintData = new Uint8Array(decryptedData);\n } else {\n this.decryptionPromise = decrypter.webCryptoDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer).then(function (decryptedData) {\n // Calling push here is important; if flush() is called while this is still resolving, this ensures that\n // the decrypted data has been transmuxed\n var result = _this.push(decryptedData, null, chunkMeta);\n\n _this.decryptionPromise = null;\n return result;\n });\n return this.decryptionPromise;\n }\n }\n\n if (this.needsProbing(uintData, discontinuity, trackSwitch)) {\n this.configureTransmuxer(uintData, transmuxConfig);\n }\n\n var result = this.transmux(uintData, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n var currentState = this.currentTransmuxState;\n currentState.contiguous = true;\n currentState.discontinuity = false;\n currentState.trackSwitch = false;\n stats.executeEnd = now();\n return result;\n } // Due to data caching, flush calls can produce more than one TransmuxerResult (hence the Array type)\n ;\n\n _proto.flush = function flush(chunkMeta) {\n var _this2 = this;\n\n var stats = chunkMeta.transmuxing;\n stats.executeStart = now();\n var decrypter = this.decrypter,\n currentTransmuxState = this.currentTransmuxState,\n decryptionPromise = this.decryptionPromise;\n\n if (decryptionPromise) {\n // Upon resolution, the decryption promise calls push() and returns its TransmuxerResult up the stack. Therefore\n // only flushing is required for async decryption\n return decryptionPromise.then(function () {\n return _this2.flush(chunkMeta);\n });\n }\n\n var transmuxResults = [];\n var timeOffset = currentTransmuxState.timeOffset;\n\n if (decrypter) {\n // The decrypter may have data cached, which needs to be demuxed. In this case we'll have two TransmuxResults\n // This happens in the case that we receive only 1 push call for a segment (either for non-progressive downloads,\n // or for progressive downloads with small segments)\n var decryptedData = decrypter.flush();\n\n if (decryptedData) {\n // Push always returns a TransmuxerResult if decryptdata is null\n transmuxResults.push(this.push(decryptedData, null, chunkMeta));\n }\n }\n\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n\n if (!demuxer || !remuxer) {\n // If probing failed, then Hls.js has been given content its not able to handle\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_PARSING_ERROR,\n fatal: true,\n reason: 'no demux matching with content found'\n });\n stats.executeEnd = now();\n return [emptyResult(chunkMeta)];\n }\n\n var demuxResultOrPromise = demuxer.flush(timeOffset);\n\n if (isPromise(demuxResultOrPromise)) {\n // Decrypt final SAMPLE-AES samples\n return demuxResultOrPromise.then(function (demuxResult) {\n _this2.flushRemux(transmuxResults, demuxResult, chunkMeta);\n\n return transmuxResults;\n });\n }\n\n this.flushRemux(transmuxResults, demuxResultOrPromise, chunkMeta);\n return transmuxResults;\n };\n\n _proto.flushRemux = function flushRemux(transmuxResults, demuxResult, chunkMeta) {\n var audioTrack = demuxResult.audioTrack,\n videoTrack = demuxResult.videoTrack,\n id3Track = demuxResult.id3Track,\n textTrack = demuxResult.textTrack;\n var _this$currentTransmux = this.currentTransmuxState,\n accurateTimeOffset = _this$currentTransmux.accurateTimeOffset,\n timeOffset = _this$currentTransmux.timeOffset;\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"[transmuxer.ts]: Flushed fragment \" + chunkMeta.sn + (chunkMeta.part > -1 ? ' p: ' + chunkMeta.part : '') + \" of level \" + chunkMeta.level);\n var remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, true, this.id);\n transmuxResults.push({\n remuxResult: remuxResult,\n chunkMeta: chunkMeta\n });\n chunkMeta.transmuxing.executeEnd = now();\n };\n\n _proto.resetInitialTimestamp = function resetInitialTimestamp(defaultInitPts) {\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n\n if (!demuxer || !remuxer) {\n return;\n }\n\n demuxer.resetTimeStamp(defaultInitPts);\n remuxer.resetTimeStamp(defaultInitPts);\n };\n\n _proto.resetContiguity = function resetContiguity() {\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n\n if (!demuxer || !remuxer) {\n return;\n }\n\n demuxer.resetContiguity();\n remuxer.resetNextTimestamp();\n };\n\n _proto.resetInitSegment = function resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration) {\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n\n if (!demuxer || !remuxer) {\n return;\n }\n\n demuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration);\n remuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec);\n };\n\n _proto.destroy = function destroy() {\n if (this.demuxer) {\n this.demuxer.destroy();\n this.demuxer = undefined;\n }\n\n if (this.remuxer) {\n this.remuxer.destroy();\n this.remuxer = undefined;\n }\n };\n\n _proto.transmux = function transmux(data, keyData, timeOffset, accurateTimeOffset, chunkMeta) {\n var result;\n\n if (keyData && keyData.method === 'SAMPLE-AES') {\n result = this.transmuxSampleAes(data, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n } else {\n result = this.transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta);\n }\n\n return result;\n };\n\n _proto.transmuxUnencrypted = function transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta) {\n var _demux = this.demuxer.demux(data, timeOffset, false, !this.config.progressive),\n audioTrack = _demux.audioTrack,\n videoTrack = _demux.videoTrack,\n id3Track = _demux.id3Track,\n textTrack = _demux.textTrack;\n\n var remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, false, this.id);\n return {\n remuxResult: remuxResult,\n chunkMeta: chunkMeta\n };\n };\n\n _proto.transmuxSampleAes = function transmuxSampleAes(data, decryptData, timeOffset, accurateTimeOffset, chunkMeta) {\n var _this3 = this;\n\n return this.demuxer.demuxSampleAes(data, decryptData, timeOffset).then(function (demuxResult) {\n var remuxResult = _this3.remuxer.remux(demuxResult.audioTrack, demuxResult.videoTrack, demuxResult.id3Track, demuxResult.textTrack, timeOffset, accurateTimeOffset, false, _this3.id);\n\n return {\n remuxResult: remuxResult,\n chunkMeta: chunkMeta\n };\n });\n };\n\n _proto.configureTransmuxer = function configureTransmuxer(data, transmuxConfig) {\n var config = this.config,\n observer = this.observer,\n typeSupported = this.typeSupported,\n vendor = this.vendor;\n var audioCodec = transmuxConfig.audioCodec,\n defaultInitPts = transmuxConfig.defaultInitPts,\n duration = transmuxConfig.duration,\n initSegmentData = transmuxConfig.initSegmentData,\n videoCodec = transmuxConfig.videoCodec; // probe for content type\n\n var mux;\n\n for (var i = 0, len = muxConfig.length; i < len; i++) {\n if (muxConfig[i].demux.probe(data)) {\n mux = muxConfig[i];\n break;\n }\n }\n\n if (!mux) {\n // If probing previous configs fail, use mp4 passthrough\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].warn('Failed to find demuxer by probing frag, treating as mp4 passthrough');\n mux = {\n demux: _demux_mp4demuxer__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n remux: _remux_passthrough_remuxer__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n };\n } // so let's check that current remuxer and demuxer are still valid\n\n\n var demuxer = this.demuxer;\n var remuxer = this.remuxer;\n var Remuxer = mux.remux;\n var Demuxer = mux.demux;\n\n if (!remuxer || !(remuxer instanceof Remuxer)) {\n this.remuxer = new Remuxer(observer, config, typeSupported, vendor);\n }\n\n if (!demuxer || !(demuxer instanceof Demuxer)) {\n this.demuxer = new Demuxer(observer, config, typeSupported);\n this.probe = Demuxer.probe;\n } // Ensure that muxers are always initialized with an initSegment\n\n\n this.resetInitSegment(initSegmentData, audioCodec, videoCodec, duration);\n this.resetInitialTimestamp(defaultInitPts);\n };\n\n _proto.needsProbing = function needsProbing(data, discontinuity, trackSwitch) {\n // in case of continuity change, or track switch\n // we might switch from content type (AAC container to TS container, or TS to fmp4 for example)\n return !this.demuxer || !this.remuxer || discontinuity || trackSwitch;\n };\n\n _proto.getDecrypter = function getDecrypter() {\n var decrypter = this.decrypter;\n\n if (!decrypter) {\n decrypter = this.decrypter = new _crypt_decrypter__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.observer, this.config);\n }\n\n return decrypter;\n };\n\n return Transmuxer;\n}();\n\n\n\nfunction getEncryptionType(data, decryptData) {\n var encryptionType = null;\n\n if (data.byteLength > 0 && decryptData != null && decryptData.key != null && decryptData.iv !== null && decryptData.method != null) {\n encryptionType = decryptData;\n }\n\n return encryptionType;\n}\n\nvar emptyResult = function emptyResult(chunkMeta) {\n return {\n remuxResult: {},\n chunkMeta: chunkMeta\n };\n};\n\nfunction isPromise(p) {\n return 'then' in p && p.then instanceof Function;\n}\nvar TransmuxConfig = function TransmuxConfig(audioCodec, videoCodec, initSegmentData, duration, defaultInitPts) {\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this.initSegmentData = void 0;\n this.duration = void 0;\n this.defaultInitPts = void 0;\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this.initSegmentData = initSegmentData;\n this.duration = duration;\n this.defaultInitPts = defaultInitPts;\n};\nvar TransmuxState = function TransmuxState(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange) {\n this.discontinuity = void 0;\n this.contiguous = void 0;\n this.accurateTimeOffset = void 0;\n this.trackSwitch = void 0;\n this.timeOffset = void 0;\n this.initSegmentChange = void 0;\n this.discontinuity = discontinuity;\n this.contiguous = contiguous;\n this.accurateTimeOffset = accurateTimeOffset;\n this.trackSwitch = trackSwitch;\n this.timeOffset = timeOffset;\n this.initSegmentChange = initSegmentChange;\n};\n\n/***/ }),\n\n/***/ \"./src/demux/tsdemuxer.ts\":\n/*!********************************!*\\\n !*** ./src/demux/tsdemuxer.ts ***!\n \\********************************/\n/*! exports provided: discardEPB, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"discardEPB\", function() { return discardEPB; });\n/* harmony import */ var _adts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adts */ \"./src/demux/adts.ts\");\n/* harmony import */ var _mpegaudio__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mpegaudio */ \"./src/demux/mpegaudio.ts\");\n/* harmony import */ var _exp_golomb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./exp-golomb */ \"./src/demux/exp-golomb.ts\");\n/* harmony import */ var _sample_aes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sample-aes */ \"./src/demux/sample-aes.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _types_demuxer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../types/demuxer */ \"./src/types/demuxer.ts\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\n * highly optimized TS demuxer:\n * parse PAT, PMT\n * extract PES packet from audio and video PIDs\n * extract AVC/H264 NAL units and AAC/ADTS samples from PES packet\n * trigger the remuxer upon parsing completion\n * it also tries to workaround as best as it can audio codec switch (HE-AAC to AAC and vice versa), without having to restart the MediaSource.\n * it also controls the remuxing process :\n * upon discontinuity or level switch detection, it will also notifies the remuxer so that it can reset its state.\n */\n\n\n\n\n\n\n\n\n\n\nvar TSDemuxer = /*#__PURE__*/function () {\n function TSDemuxer(observer, config, typeSupported) {\n this.observer = void 0;\n this.config = void 0;\n this.typeSupported = void 0;\n this.sampleAes = null;\n this.pmtParsed = false;\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this._duration = 0;\n this._pmtId = -1;\n this._avcTrack = void 0;\n this._audioTrack = void 0;\n this._id3Track = void 0;\n this._txtTrack = void 0;\n this.aacOverFlow = null;\n this.avcSample = null;\n this.remainderData = null;\n this.observer = observer;\n this.config = config;\n this.typeSupported = typeSupported;\n }\n\n TSDemuxer.probe = function probe(data) {\n // a TS init segment should contain at least 2 TS packets: PAT and PMT, each starting with 0x47\n return data[0] === 0x47 && data[188] === 0x47;\n }\n /**\n * Creates a track model internal to demuxer used to drive remuxing input\n *\n * @param type 'audio' | 'video' | 'id3' | 'text'\n * @param duration\n * @return TSDemuxer's internal track model\n */\n ;\n\n TSDemuxer.createTrack = function createTrack(type, duration) {\n return {\n container: type === 'video' || type === 'audio' ? 'video/mp2t' : undefined,\n type: type,\n id: _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_5__[\"RemuxerTrackIdConfig\"][type],\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: 0,\n samples: [],\n dropped: 0,\n duration: type === 'audio' ? duration : undefined\n };\n }\n /**\n * Initializes a new init segment on the demuxer/remuxer interface. Needed for discontinuities/track-switches (or at stream start)\n * Resets all internal track instances of the demuxer.\n */\n ;\n\n var _proto = TSDemuxer.prototype;\n\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n this.pmtParsed = false;\n this._pmtId = -1;\n this._avcTrack = TSDemuxer.createTrack('video');\n this._audioTrack = TSDemuxer.createTrack('audio', trackDuration);\n this._id3Track = TSDemuxer.createTrack('id3');\n this._txtTrack = TSDemuxer.createTrack('text');\n this._audioTrack.segmentCodec = 'aac'; // flush any partial content\n\n this.aacOverFlow = null;\n this.avcSample = null;\n this.remainderData = null;\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this._duration = trackDuration;\n };\n\n _proto.resetTimeStamp = function resetTimeStamp() {};\n\n _proto.resetContiguity = function resetContiguity() {\n var _audioTrack = this._audioTrack,\n _avcTrack = this._avcTrack,\n _id3Track = this._id3Track;\n\n if (_audioTrack) {\n _audioTrack.pesData = null;\n }\n\n if (_avcTrack) {\n _avcTrack.pesData = null;\n }\n\n if (_id3Track) {\n _id3Track.pesData = null;\n }\n\n this.aacOverFlow = null;\n };\n\n _proto.demux = function demux(data, timeOffset, isSampleAes, flush) {\n if (isSampleAes === void 0) {\n isSampleAes = false;\n }\n\n if (flush === void 0) {\n flush = false;\n }\n\n if (!isSampleAes) {\n this.sampleAes = null;\n }\n\n var pes;\n var videoTrack = this._avcTrack;\n var audioTrack = this._audioTrack;\n var id3Track = this._id3Track;\n var textTrack = this._txtTrack;\n var avcId = videoTrack.pid;\n var avcData = videoTrack.pesData;\n var audioId = audioTrack.pid;\n var id3Id = id3Track.pid;\n var audioData = audioTrack.pesData;\n var id3Data = id3Track.pesData;\n var unknownPID = null;\n var pmtParsed = this.pmtParsed;\n var pmtId = this._pmtId;\n var len = data.length;\n\n if (this.remainderData) {\n data = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_5__[\"appendUint8Array\"])(this.remainderData, data);\n len = data.length;\n this.remainderData = null;\n }\n\n if (len < 188 && !flush) {\n this.remainderData = data;\n return {\n audioTrack: audioTrack,\n videoTrack: videoTrack,\n id3Track: id3Track,\n textTrack: textTrack\n };\n }\n\n len -= len % 188;\n\n if (len < data.byteLength && !flush) {\n this.remainderData = new Uint8Array(data.buffer, len, data.buffer.byteLength - len);\n } // loop through TS packets\n\n\n var tsPacketErrors = 0;\n\n for (var start = 0; start < len; start += 188) {\n if (data[start] === 0x47) {\n var stt = !!(data[start + 1] & 0x40); // pid is a 13-bit field starting at the last bit of TS[1]\n\n var pid = ((data[start + 1] & 0x1f) << 8) + data[start + 2];\n var atf = (data[start + 3] & 0x30) >> 4; // if an adaption field is present, its length is specified by the fifth byte of the TS packet header.\n\n var offset = void 0;\n\n if (atf > 1) {\n offset = start + 5 + data[start + 4]; // continue if there is only adaptation field\n\n if (offset === start + 188) {\n continue;\n }\n } else {\n offset = start + 4;\n }\n\n switch (pid) {\n case avcId:\n if (stt) {\n if (avcData && (pes = parsePES(avcData))) {\n this.parseAVCPES(videoTrack, textTrack, pes, false);\n }\n\n avcData = {\n data: [],\n size: 0\n };\n }\n\n if (avcData) {\n avcData.data.push(data.subarray(offset, start + 188));\n avcData.size += start + 188 - offset;\n }\n\n break;\n\n case audioId:\n if (stt) {\n if (audioData && (pes = parsePES(audioData))) {\n switch (audioTrack.segmentCodec) {\n case 'aac':\n this.parseAACPES(audioTrack, pes);\n break;\n\n case 'mp3':\n this.parseMPEGPES(audioTrack, pes);\n break;\n }\n }\n\n audioData = {\n data: [],\n size: 0\n };\n }\n\n if (audioData) {\n audioData.data.push(data.subarray(offset, start + 188));\n audioData.size += start + 188 - offset;\n }\n\n break;\n\n case id3Id:\n if (stt) {\n if (id3Data && (pes = parsePES(id3Data))) {\n this.parseID3PES(id3Track, pes);\n }\n\n id3Data = {\n data: [],\n size: 0\n };\n }\n\n if (id3Data) {\n id3Data.data.push(data.subarray(offset, start + 188));\n id3Data.size += start + 188 - offset;\n }\n\n break;\n\n case 0:\n if (stt) {\n offset += data[offset] + 1;\n }\n\n pmtId = this._pmtId = parsePAT(data, offset);\n break;\n\n case pmtId:\n {\n if (stt) {\n offset += data[offset] + 1;\n }\n\n var parsedPIDs = parsePMT(data, offset, this.typeSupported, isSampleAes); // only update track id if track PID found while parsing PMT\n // this is to avoid resetting the PID to -1 in case\n // track PID transiently disappears from the stream\n // this could happen in case of transient missing audio samples for example\n // NOTE this is only the PID of the track as found in TS,\n // but we are not using this for MP4 track IDs.\n\n avcId = parsedPIDs.avc;\n\n if (avcId > 0) {\n videoTrack.pid = avcId;\n }\n\n audioId = parsedPIDs.audio;\n\n if (audioId > 0) {\n audioTrack.pid = audioId;\n audioTrack.segmentCodec = parsedPIDs.segmentCodec;\n }\n\n id3Id = parsedPIDs.id3;\n\n if (id3Id > 0) {\n id3Track.pid = id3Id;\n }\n\n if (unknownPID !== null && !pmtParsed) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].log(\"unknown PID '\" + unknownPID + \"' in TS found\");\n unknownPID = null;\n }\n\n pmtParsed = this.pmtParsed = true;\n break;\n }\n\n case 17:\n case 0x1fff:\n break;\n\n default:\n unknownPID = pid;\n break;\n }\n } else {\n tsPacketErrors++;\n }\n }\n\n if (tsPacketErrors > 0) {\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_4__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_4__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_7__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_7__[\"ErrorDetails\"].FRAG_PARSING_ERROR,\n fatal: false,\n reason: \"Found \" + tsPacketErrors + \" TS packet/s that do not start with 0x47\"\n });\n }\n\n videoTrack.pesData = avcData;\n audioTrack.pesData = audioData;\n id3Track.pesData = id3Data;\n var demuxResult = {\n audioTrack: audioTrack,\n videoTrack: videoTrack,\n id3Track: id3Track,\n textTrack: textTrack\n };\n\n if (flush) {\n this.extractRemainingSamples(demuxResult);\n }\n\n return demuxResult;\n };\n\n _proto.flush = function flush() {\n var remainderData = this.remainderData;\n this.remainderData = null;\n var result;\n\n if (remainderData) {\n result = this.demux(remainderData, -1, false, true);\n } else {\n result = {\n videoTrack: this._avcTrack,\n audioTrack: this._audioTrack,\n id3Track: this._id3Track,\n textTrack: this._txtTrack\n };\n }\n\n this.extractRemainingSamples(result);\n\n if (this.sampleAes) {\n return this.decrypt(result, this.sampleAes);\n }\n\n return result;\n };\n\n _proto.extractRemainingSamples = function extractRemainingSamples(demuxResult) {\n var audioTrack = demuxResult.audioTrack,\n videoTrack = demuxResult.videoTrack,\n id3Track = demuxResult.id3Track,\n textTrack = demuxResult.textTrack;\n var avcData = videoTrack.pesData;\n var audioData = audioTrack.pesData;\n var id3Data = id3Track.pesData; // try to parse last PES packets\n\n var pes;\n\n if (avcData && (pes = parsePES(avcData))) {\n this.parseAVCPES(videoTrack, textTrack, pes, true);\n videoTrack.pesData = null;\n } else {\n // either avcData null or PES truncated, keep it for next frag parsing\n videoTrack.pesData = avcData;\n }\n\n if (audioData && (pes = parsePES(audioData))) {\n switch (audioTrack.segmentCodec) {\n case 'aac':\n this.parseAACPES(audioTrack, pes);\n break;\n\n case 'mp3':\n this.parseMPEGPES(audioTrack, pes);\n break;\n }\n\n audioTrack.pesData = null;\n } else {\n if (audioData !== null && audioData !== void 0 && audioData.size) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].log('last AAC PES packet truncated,might overlap between fragments');\n } // either audioData null or PES truncated, keep it for next frag parsing\n\n\n audioTrack.pesData = audioData;\n }\n\n if (id3Data && (pes = parsePES(id3Data))) {\n this.parseID3PES(id3Track, pes);\n id3Track.pesData = null;\n } else {\n // either id3Data null or PES truncated, keep it for next frag parsing\n id3Track.pesData = id3Data;\n }\n };\n\n _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) {\n var demuxResult = this.demux(data, timeOffset, true, !this.config.progressive);\n var sampleAes = this.sampleAes = new _sample_aes__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this.observer, this.config, keyData);\n return this.decrypt(demuxResult, sampleAes);\n };\n\n _proto.decrypt = function decrypt(demuxResult, sampleAes) {\n return new Promise(function (resolve) {\n var audioTrack = demuxResult.audioTrack,\n videoTrack = demuxResult.videoTrack;\n\n if (audioTrack.samples && audioTrack.segmentCodec === 'aac') {\n sampleAes.decryptAacSamples(audioTrack.samples, 0, function () {\n if (videoTrack.samples) {\n sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, function () {\n resolve(demuxResult);\n });\n } else {\n resolve(demuxResult);\n }\n });\n } else if (videoTrack.samples) {\n sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, function () {\n resolve(demuxResult);\n });\n }\n });\n };\n\n _proto.destroy = function destroy() {\n this._duration = 0;\n };\n\n _proto.parseAVCPES = function parseAVCPES(track, textTrack, pes, last) {\n var _this = this;\n\n var units = this.parseAVCNALu(track, pes.data);\n var debug = false;\n var avcSample = this.avcSample;\n var push;\n var spsfound = false; // free pes.data to save up some memory\n\n pes.data = null; // if new NAL units found and last sample still there, let's push ...\n // this helps parsing streams with missing AUD (only do this if AUD never found)\n\n if (avcSample && units.length && !track.audFound) {\n pushAccessUnit(avcSample, track);\n avcSample = this.avcSample = createAVCSample(false, pes.pts, pes.dts, '');\n }\n\n units.forEach(function (unit) {\n switch (unit.type) {\n // NDR\n case 1:\n {\n push = true;\n\n if (!avcSample) {\n avcSample = _this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');\n }\n\n if (debug) {\n avcSample.debug += 'NDR ';\n }\n\n avcSample.frame = true;\n var data = unit.data; // only check slice type to detect KF in case SPS found in same packet (any keyframe is preceded by SPS ...)\n\n if (spsfound && data.length > 4) {\n // retrieve slice type by parsing beginning of NAL unit (follow H264 spec, slice_header definition) to detect keyframe embedded in NDR\n var sliceType = new _exp_golomb__WEBPACK_IMPORTED_MODULE_2__[\"default\"](data).readSliceType(); // 2 : I slice, 4 : SI slice, 7 : I slice, 9: SI slice\n // SI slice : A slice that is coded using intra prediction only and using quantisation of the prediction samples.\n // An SI slice can be coded such that its decoded samples can be constructed identically to an SP slice.\n // I slice: A slice that is not an SI slice that is decoded using intra prediction only.\n // if (sliceType === 2 || sliceType === 7) {\n\n if (sliceType === 2 || sliceType === 4 || sliceType === 7 || sliceType === 9) {\n avcSample.key = true;\n }\n }\n\n break; // IDR\n }\n\n case 5:\n push = true; // handle PES not starting with AUD\n\n if (!avcSample) {\n avcSample = _this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');\n }\n\n if (debug) {\n avcSample.debug += 'IDR ';\n }\n\n avcSample.key = true;\n avcSample.frame = true;\n break;\n // SEI\n\n case 6:\n {\n push = true;\n\n if (debug && avcSample) {\n avcSample.debug += 'SEI ';\n }\n\n Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_5__[\"parseSEIMessageFromNALu\"])(discardEPB(unit.data), pes.pts, textTrack.samples);\n break; // SPS\n }\n\n case 7:\n push = true;\n spsfound = true;\n\n if (debug && avcSample) {\n avcSample.debug += 'SPS ';\n }\n\n if (!track.sps) {\n var expGolombDecoder = new _exp_golomb__WEBPACK_IMPORTED_MODULE_2__[\"default\"](unit.data);\n var config = expGolombDecoder.readSPS();\n track.width = config.width;\n track.height = config.height;\n track.pixelRatio = config.pixelRatio; // TODO: `track.sps` is defined as a `number[]`, but we're setting it to a `Uint8Array[]`.\n\n track.sps = [unit.data];\n track.duration = _this._duration;\n var codecarray = unit.data.subarray(1, 4);\n var codecstring = 'avc1.';\n\n for (var i = 0; i < 3; i++) {\n var h = codecarray[i].toString(16);\n\n if (h.length < 2) {\n h = '0' + h;\n }\n\n codecstring += h;\n }\n\n track.codec = codecstring;\n }\n\n break;\n // PPS\n\n case 8:\n push = true;\n\n if (debug && avcSample) {\n avcSample.debug += 'PPS ';\n }\n\n if (!track.pps) {\n // TODO: `track.pss` is defined as a `number[]`, but we're setting it to a `Uint8Array[]`.\n track.pps = [unit.data];\n }\n\n break;\n // AUD\n\n case 9:\n push = false;\n track.audFound = true;\n\n if (avcSample) {\n pushAccessUnit(avcSample, track);\n }\n\n avcSample = _this.avcSample = createAVCSample(false, pes.pts, pes.dts, debug ? 'AUD ' : '');\n break;\n // Filler Data\n\n case 12:\n push = true;\n break;\n\n default:\n push = false;\n\n if (avcSample) {\n avcSample.debug += 'unknown NAL ' + unit.type + ' ';\n }\n\n break;\n }\n\n if (avcSample && push) {\n var _units = avcSample.units;\n\n _units.push(unit);\n }\n }); // if last PES packet, push samples\n\n if (last && avcSample) {\n pushAccessUnit(avcSample, track);\n this.avcSample = null;\n }\n };\n\n _proto.getLastNalUnit = function getLastNalUnit(samples) {\n var _avcSample;\n\n var avcSample = this.avcSample;\n var lastUnit; // try to fallback to previous sample if current one is empty\n\n if (!avcSample || avcSample.units.length === 0) {\n avcSample = samples[samples.length - 1];\n }\n\n if ((_avcSample = avcSample) !== null && _avcSample !== void 0 && _avcSample.units) {\n var units = avcSample.units;\n lastUnit = units[units.length - 1];\n }\n\n return lastUnit;\n };\n\n _proto.parseAVCNALu = function parseAVCNALu(track, array) {\n var len = array.byteLength;\n var state = track.naluState || 0;\n var lastState = state;\n var units = [];\n var i = 0;\n var value;\n var overflow;\n var unitType;\n var lastUnitStart = -1;\n var lastUnitType = 0; // logger.log('PES:' + Hex.hexDump(array));\n\n if (state === -1) {\n // special use case where we found 3 or 4-byte start codes exactly at the end of previous PES packet\n lastUnitStart = 0; // NALu type is value read from offset 0\n\n lastUnitType = array[0] & 0x1f;\n state = 0;\n i = 1;\n }\n\n while (i < len) {\n value = array[i++]; // optimization. state 0 and 1 are the predominant case. let's handle them outside of the switch/case\n\n if (!state) {\n state = value ? 0 : 1;\n continue;\n }\n\n if (state === 1) {\n state = value ? 0 : 2;\n continue;\n } // here we have state either equal to 2 or 3\n\n\n if (!value) {\n state = 3;\n } else if (value === 1) {\n if (lastUnitStart >= 0) {\n var unit = {\n data: array.subarray(lastUnitStart, i - state - 1),\n type: lastUnitType\n }; // logger.log('pushing NALU, type/size:' + unit.type + '/' + unit.data.byteLength);\n\n units.push(unit);\n } else {\n // lastUnitStart is undefined => this is the first start code found in this PES packet\n // first check if start code delimiter is overlapping between 2 PES packets,\n // ie it started in last packet (lastState not zero)\n // and ended at the beginning of this PES packet (i <= 4 - lastState)\n var lastUnit = this.getLastNalUnit(track.samples);\n\n if (lastUnit) {\n if (lastState && i <= 4 - lastState) {\n // start delimiter overlapping between PES packets\n // strip start delimiter bytes from the end of last NAL unit\n // check if lastUnit had a state different from zero\n if (lastUnit.state) {\n // strip last bytes\n lastUnit.data = lastUnit.data.subarray(0, lastUnit.data.byteLength - lastState);\n }\n } // If NAL units are not starting right at the beginning of the PES packet, push preceding data into previous NAL unit.\n\n\n overflow = i - state - 1;\n\n if (overflow > 0) {\n // logger.log('first NALU found with overflow:' + overflow);\n var tmp = new Uint8Array(lastUnit.data.byteLength + overflow);\n tmp.set(lastUnit.data, 0);\n tmp.set(array.subarray(0, overflow), lastUnit.data.byteLength);\n lastUnit.data = tmp;\n lastUnit.state = 0;\n }\n }\n } // check if we can read unit type\n\n\n if (i < len) {\n unitType = array[i] & 0x1f; // logger.log('find NALU @ offset:' + i + ',type:' + unitType);\n\n lastUnitStart = i;\n lastUnitType = unitType;\n state = 0;\n } else {\n // not enough byte to read unit type. let's read it on next PES parsing\n state = -1;\n }\n } else {\n state = 0;\n }\n }\n\n if (lastUnitStart >= 0 && state >= 0) {\n var _unit = {\n data: array.subarray(lastUnitStart, len),\n type: lastUnitType,\n state: state\n };\n units.push(_unit); // logger.log('pushing NALU, type/size/state:' + unit.type + '/' + unit.data.byteLength + '/' + state);\n } // no NALu found\n\n\n if (units.length === 0) {\n // append pes.data to previous NAL unit\n var _lastUnit = this.getLastNalUnit(track.samples);\n\n if (_lastUnit) {\n var _tmp = new Uint8Array(_lastUnit.data.byteLength + array.byteLength);\n\n _tmp.set(_lastUnit.data, 0);\n\n _tmp.set(array, _lastUnit.data.byteLength);\n\n _lastUnit.data = _tmp;\n }\n }\n\n track.naluState = state;\n return units;\n };\n\n _proto.parseAACPES = function parseAACPES(track, pes) {\n var startOffset = 0;\n var aacOverFlow = this.aacOverFlow;\n var data = pes.data;\n\n if (aacOverFlow) {\n this.aacOverFlow = null;\n var frameMissingBytes = aacOverFlow.missing;\n var sampleLength = aacOverFlow.sample.unit.byteLength; // logger.log(`AAC: append overflowing ${sampleLength} bytes to beginning of new PES`);\n\n if (frameMissingBytes === -1) {\n var tmp = new Uint8Array(sampleLength + data.byteLength);\n tmp.set(aacOverFlow.sample.unit, 0);\n tmp.set(data, sampleLength);\n data = tmp;\n } else {\n var frameOverflowBytes = sampleLength - frameMissingBytes;\n aacOverFlow.sample.unit.set(data.subarray(0, frameMissingBytes), frameOverflowBytes);\n track.samples.push(aacOverFlow.sample);\n startOffset = aacOverFlow.missing;\n }\n } // look for ADTS header (0xFFFx)\n\n\n var offset;\n var len;\n\n for (offset = startOffset, len = data.length; offset < len - 1; offset++) {\n if (_adts__WEBPACK_IMPORTED_MODULE_0__[\"isHeader\"](data, offset)) {\n break;\n }\n } // if ADTS header does not start straight from the beginning of the PES payload, raise an error\n\n\n if (offset !== startOffset) {\n var reason;\n var fatal;\n\n if (offset < len - 1) {\n reason = \"AAC PES did not start with ADTS header,offset:\" + offset;\n fatal = false;\n } else {\n reason = 'no ADTS header found in AAC PES';\n fatal = true;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn(\"parsing error:\" + reason);\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_4__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_4__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_7__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_7__[\"ErrorDetails\"].FRAG_PARSING_ERROR,\n fatal: fatal,\n reason: reason\n });\n\n if (fatal) {\n return;\n }\n }\n\n _adts__WEBPACK_IMPORTED_MODULE_0__[\"initTrackConfig\"](track, this.observer, data, offset, this.audioCodec);\n var pts;\n\n if (pes.pts !== undefined) {\n pts = pes.pts;\n } else if (aacOverFlow) {\n // if last AAC frame is overflowing, we should ensure timestamps are contiguous:\n // first sample PTS should be equal to last sample PTS + frameDuration\n var frameDuration = _adts__WEBPACK_IMPORTED_MODULE_0__[\"getFrameDuration\"](track.samplerate);\n pts = aacOverFlow.sample.pts + frameDuration;\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn('[tsdemuxer]: AAC PES unknown PTS');\n return;\n } // scan for aac samples\n\n\n var frameIndex = 0;\n var frame;\n\n while (offset < len) {\n frame = _adts__WEBPACK_IMPORTED_MODULE_0__[\"appendFrame\"](track, data, offset, pts, frameIndex);\n offset += frame.length;\n\n if (!frame.missing) {\n frameIndex++;\n\n for (; offset < len - 1; offset++) {\n if (_adts__WEBPACK_IMPORTED_MODULE_0__[\"isHeader\"](data, offset)) {\n break;\n }\n }\n } else {\n this.aacOverFlow = frame;\n break;\n }\n }\n };\n\n _proto.parseMPEGPES = function parseMPEGPES(track, pes) {\n var data = pes.data;\n var length = data.length;\n var frameIndex = 0;\n var offset = 0;\n var pts = pes.pts;\n\n if (pts === undefined) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn('[tsdemuxer]: MPEG PES unknown PTS');\n return;\n }\n\n while (offset < length) {\n if (_mpegaudio__WEBPACK_IMPORTED_MODULE_1__[\"isHeader\"](data, offset)) {\n var frame = _mpegaudio__WEBPACK_IMPORTED_MODULE_1__[\"appendFrame\"](track, data, offset, pts, frameIndex);\n\n if (frame) {\n offset += frame.length;\n frameIndex++;\n } else {\n // logger.log('Unable to parse Mpeg audio frame');\n break;\n }\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n };\n\n _proto.parseID3PES = function parseID3PES(id3Track, pes) {\n if (pes.pts === undefined) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn('[tsdemuxer]: ID3 PES unknown PTS');\n return;\n }\n\n var id3Sample = _extends({}, pes, {\n type: this._avcTrack ? _types_demuxer__WEBPACK_IMPORTED_MODULE_8__[\"MetadataSchema\"].emsg : _types_demuxer__WEBPACK_IMPORTED_MODULE_8__[\"MetadataSchema\"].audioId3\n });\n\n id3Track.samples.push(id3Sample);\n };\n\n return TSDemuxer;\n}();\n\nfunction createAVCSample(key, pts, dts, debug) {\n return {\n key: key,\n frame: false,\n pts: pts,\n dts: dts,\n units: [],\n debug: debug,\n length: 0\n };\n}\n\nfunction parsePAT(data, offset) {\n // skip the PSI header and parse the first PMT entry\n return (data[offset + 10] & 0x1f) << 8 | data[offset + 11]; // logger.log('PMT PID:' + this._pmtId);\n}\n\nfunction parsePMT(data, offset, typeSupported, isSampleAes) {\n var result = {\n audio: -1,\n avc: -1,\n id3: -1,\n segmentCodec: 'aac'\n };\n var sectionLength = (data[offset + 1] & 0x0f) << 8 | data[offset + 2];\n var tableEnd = offset + 3 + sectionLength - 4; // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n\n var programInfoLength = (data[offset + 10] & 0x0f) << 8 | data[offset + 11]; // advance the offset to the first entry in the mapping table\n\n offset += 12 + programInfoLength;\n\n while (offset < tableEnd) {\n var pid = (data[offset + 1] & 0x1f) << 8 | data[offset + 2];\n\n switch (data[offset]) {\n case 0xcf:\n // SAMPLE-AES AAC\n if (!isSampleAes) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].log('ADTS AAC with AES-128-CBC frame encryption found in unencrypted stream');\n break;\n }\n\n /* falls through */\n\n case 0x0f:\n // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio)\n // logger.log('AAC PID:' + pid);\n if (result.audio === -1) {\n result.audio = pid;\n }\n\n break;\n // Packetized metadata (ID3)\n\n case 0x15:\n // logger.log('ID3 PID:' + pid);\n if (result.id3 === -1) {\n result.id3 = pid;\n }\n\n break;\n\n case 0xdb:\n // SAMPLE-AES AVC\n if (!isSampleAes) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].log('H.264 with AES-128-CBC slice encryption found in unencrypted stream');\n break;\n }\n\n /* falls through */\n\n case 0x1b:\n // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video)\n // logger.log('AVC PID:' + pid);\n if (result.avc === -1) {\n result.avc = pid;\n }\n\n break;\n // ISO/IEC 11172-3 (MPEG-1 audio)\n // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio)\n\n case 0x03:\n case 0x04:\n // logger.log('MPEG PID:' + pid);\n if (typeSupported.mpeg !== true && typeSupported.mp3 !== true) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].log('MPEG audio found, not supported in this browser');\n } else if (result.audio === -1) {\n result.audio = pid;\n result.segmentCodec = 'mp3';\n }\n\n break;\n\n case 0x24:\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn('Unsupported HEVC stream type found');\n break;\n\n default:\n // logger.log('unknown stream type:' + data[offset]);\n break;\n } // move to the next table entry\n // skip past the elementary stream descriptors, if present\n\n\n offset += ((data[offset + 3] & 0x0f) << 8 | data[offset + 4]) + 5;\n }\n\n return result;\n}\n\nfunction parsePES(stream) {\n var i = 0;\n var frag;\n var pesLen;\n var pesHdrLen;\n var pesPts;\n var pesDts;\n var data = stream.data; // safety check\n\n if (!stream || stream.size === 0) {\n return null;\n } // we might need up to 19 bytes to read PES header\n // if first chunk of data is less than 19 bytes, let's merge it with following ones until we get 19 bytes\n // usually only one merge is needed (and this is rare ...)\n\n\n while (data[0].length < 19 && data.length > 1) {\n var newData = new Uint8Array(data[0].length + data[1].length);\n newData.set(data[0]);\n newData.set(data[1], data[0].length);\n data[0] = newData;\n data.splice(1, 1);\n } // retrieve PTS/DTS from first fragment\n\n\n frag = data[0];\n var pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];\n\n if (pesPrefix === 1) {\n pesLen = (frag[4] << 8) + frag[5]; // if PES parsed length is not zero and greater than total received length, stop parsing. PES might be truncated\n // minus 6 : PES header size\n\n if (pesLen && pesLen > stream.size - 6) {\n return null;\n }\n\n var pesFlags = frag[7];\n\n if (pesFlags & 0xc0) {\n /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n as PTS / DTS is 33 bit we cannot use bitwise operator in JS,\n as Bitwise operators treat their operands as a sequence of 32 bits */\n pesPts = (frag[9] & 0x0e) * 536870912 + // 1 << 29\n (frag[10] & 0xff) * 4194304 + // 1 << 22\n (frag[11] & 0xfe) * 16384 + // 1 << 14\n (frag[12] & 0xff) * 128 + // 1 << 7\n (frag[13] & 0xfe) / 2;\n\n if (pesFlags & 0x40) {\n pesDts = (frag[14] & 0x0e) * 536870912 + // 1 << 29\n (frag[15] & 0xff) * 4194304 + // 1 << 22\n (frag[16] & 0xfe) * 16384 + // 1 << 14\n (frag[17] & 0xff) * 128 + // 1 << 7\n (frag[18] & 0xfe) / 2;\n\n if (pesPts - pesDts > 60 * 90000) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn(Math.round((pesPts - pesDts) / 90000) + \"s delta between PTS and DTS, align them\");\n pesPts = pesDts;\n }\n } else {\n pesDts = pesPts;\n }\n }\n\n pesHdrLen = frag[8]; // 9 bytes : 6 bytes for PES header + 3 bytes for PES extension\n\n var payloadStartOffset = pesHdrLen + 9;\n\n if (stream.size <= payloadStartOffset) {\n return null;\n }\n\n stream.size -= payloadStartOffset; // reassemble PES packet\n\n var pesData = new Uint8Array(stream.size);\n\n for (var j = 0, dataLen = data.length; j < dataLen; j++) {\n frag = data[j];\n var len = frag.byteLength;\n\n if (payloadStartOffset) {\n if (payloadStartOffset > len) {\n // trim full frag if PES header bigger than frag\n payloadStartOffset -= len;\n continue;\n } else {\n // trim partial frag if PES header smaller than frag\n frag = frag.subarray(payloadStartOffset);\n len -= payloadStartOffset;\n payloadStartOffset = 0;\n }\n }\n\n pesData.set(frag, i);\n i += len;\n }\n\n if (pesLen) {\n // payload size : remove PES header + PES extension\n pesLen -= pesHdrLen + 3;\n }\n\n return {\n data: pesData,\n pts: pesPts,\n dts: pesDts,\n len: pesLen\n };\n }\n\n return null;\n}\n\nfunction pushAccessUnit(avcSample, avcTrack) {\n if (avcSample.units.length && avcSample.frame) {\n // if sample does not have PTS/DTS, patch with last sample PTS/DTS\n if (avcSample.pts === undefined) {\n var samples = avcTrack.samples;\n var nbSamples = samples.length;\n\n if (nbSamples) {\n var lastSample = samples[nbSamples - 1];\n avcSample.pts = lastSample.pts;\n avcSample.dts = lastSample.dts;\n } else {\n // dropping samples, no timestamp found\n avcTrack.dropped++;\n return;\n }\n }\n\n avcTrack.samples.push(avcSample);\n }\n\n if (avcSample.debug.length) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].log(avcSample.pts + '/' + avcSample.dts + ':' + avcSample.debug);\n }\n}\n/**\n * remove Emulation Prevention bytes from a RBSP\n */\n\n\nfunction discardEPB(data) {\n var length = data.byteLength;\n var EPBPositions = [];\n var i = 1; // Find all `Emulation Prevention Bytes`\n\n while (i < length - 2) {\n if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n EPBPositions.push(i + 2);\n i += 2;\n } else {\n i++;\n }\n } // If no Emulation Prevention Bytes were found just return the original\n // array\n\n\n if (EPBPositions.length === 0) {\n return data;\n } // Create a new array to hold the NAL unit data\n\n\n var newLength = length - EPBPositions.length;\n var newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === EPBPositions[0]) {\n // Skip this byte\n sourceIndex++; // Remove this position index\n\n EPBPositions.shift();\n }\n\n newData[i] = data[sourceIndex];\n }\n\n return newData;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (TSDemuxer);\n\n/***/ }),\n\n/***/ \"./src/errors.ts\":\n/*!***********************!*\\\n !*** ./src/errors.ts ***!\n \\***********************/\n/*! exports provided: ErrorTypes, ErrorDetails */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ErrorTypes\", function() { return ErrorTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ErrorDetails\", function() { return ErrorDetails; });\nvar ErrorTypes;\n/**\n * @enum {ErrorDetails}\n * @typedef {string} ErrorDetail\n */\n\n(function (ErrorTypes) {\n ErrorTypes[\"NETWORK_ERROR\"] = \"networkError\";\n ErrorTypes[\"MEDIA_ERROR\"] = \"mediaError\";\n ErrorTypes[\"KEY_SYSTEM_ERROR\"] = \"keySystemError\";\n ErrorTypes[\"MUX_ERROR\"] = \"muxError\";\n ErrorTypes[\"OTHER_ERROR\"] = \"otherError\";\n})(ErrorTypes || (ErrorTypes = {}));\n\nvar ErrorDetails;\n\n(function (ErrorDetails) {\n ErrorDetails[\"KEY_SYSTEM_NO_KEYS\"] = \"keySystemNoKeys\";\n ErrorDetails[\"KEY_SYSTEM_NO_ACCESS\"] = \"keySystemNoAccess\";\n ErrorDetails[\"KEY_SYSTEM_NO_SESSION\"] = \"keySystemNoSession\";\n ErrorDetails[\"KEY_SYSTEM_LICENSE_REQUEST_FAILED\"] = \"keySystemLicenseRequestFailed\";\n ErrorDetails[\"KEY_SYSTEM_NO_INIT_DATA\"] = \"keySystemNoInitData\";\n ErrorDetails[\"MANIFEST_LOAD_ERROR\"] = \"manifestLoadError\";\n ErrorDetails[\"MANIFEST_LOAD_TIMEOUT\"] = \"manifestLoadTimeOut\";\n ErrorDetails[\"MANIFEST_PARSING_ERROR\"] = \"manifestParsingError\";\n ErrorDetails[\"MANIFEST_INCOMPATIBLE_CODECS_ERROR\"] = \"manifestIncompatibleCodecsError\";\n ErrorDetails[\"LEVEL_EMPTY_ERROR\"] = \"levelEmptyError\";\n ErrorDetails[\"LEVEL_LOAD_ERROR\"] = \"levelLoadError\";\n ErrorDetails[\"LEVEL_LOAD_TIMEOUT\"] = \"levelLoadTimeOut\";\n ErrorDetails[\"LEVEL_SWITCH_ERROR\"] = \"levelSwitchError\";\n ErrorDetails[\"AUDIO_TRACK_LOAD_ERROR\"] = \"audioTrackLoadError\";\n ErrorDetails[\"AUDIO_TRACK_LOAD_TIMEOUT\"] = \"audioTrackLoadTimeOut\";\n ErrorDetails[\"SUBTITLE_LOAD_ERROR\"] = \"subtitleTrackLoadError\";\n ErrorDetails[\"SUBTITLE_TRACK_LOAD_TIMEOUT\"] = \"subtitleTrackLoadTimeOut\";\n ErrorDetails[\"FRAG_LOAD_ERROR\"] = \"fragLoadError\";\n ErrorDetails[\"FRAG_LOAD_TIMEOUT\"] = \"fragLoadTimeOut\";\n ErrorDetails[\"FRAG_DECRYPT_ERROR\"] = \"fragDecryptError\";\n ErrorDetails[\"FRAG_PARSING_ERROR\"] = \"fragParsingError\";\n ErrorDetails[\"REMUX_ALLOC_ERROR\"] = \"remuxAllocError\";\n ErrorDetails[\"KEY_LOAD_ERROR\"] = \"keyLoadError\";\n ErrorDetails[\"KEY_LOAD_TIMEOUT\"] = \"keyLoadTimeOut\";\n ErrorDetails[\"BUFFER_ADD_CODEC_ERROR\"] = \"bufferAddCodecError\";\n ErrorDetails[\"BUFFER_INCOMPATIBLE_CODECS_ERROR\"] = \"bufferIncompatibleCodecsError\";\n ErrorDetails[\"BUFFER_APPEND_ERROR\"] = \"bufferAppendError\";\n ErrorDetails[\"BUFFER_APPENDING_ERROR\"] = \"bufferAppendingError\";\n ErrorDetails[\"BUFFER_STALLED_ERROR\"] = \"bufferStalledError\";\n ErrorDetails[\"BUFFER_FULL_ERROR\"] = \"bufferFullError\";\n ErrorDetails[\"BUFFER_SEEK_OVER_HOLE\"] = \"bufferSeekOverHole\";\n ErrorDetails[\"BUFFER_NUDGE_ON_STALL\"] = \"bufferNudgeOnStall\";\n ErrorDetails[\"INTERNAL_EXCEPTION\"] = \"internalException\";\n ErrorDetails[\"INTERNAL_ABORTED\"] = \"aborted\";\n ErrorDetails[\"UNKNOWN\"] = \"unknown\";\n})(ErrorDetails || (ErrorDetails = {}));\n\n/***/ }),\n\n/***/ \"./src/events.ts\":\n/*!***********************!*\\\n !*** ./src/events.ts ***!\n \\***********************/\n/*! exports provided: Events */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Events\", function() { return Events; });\n/**\n * @readonly\n * @enum {string}\n */\nvar Events;\n\n(function (Events) {\n Events[\"MEDIA_ATTACHING\"] = \"hlsMediaAttaching\";\n Events[\"MEDIA_ATTACHED\"] = \"hlsMediaAttached\";\n Events[\"MEDIA_DETACHING\"] = \"hlsMediaDetaching\";\n Events[\"MEDIA_DETACHED\"] = \"hlsMediaDetached\";\n Events[\"BUFFER_RESET\"] = \"hlsBufferReset\";\n Events[\"BUFFER_CODECS\"] = \"hlsBufferCodecs\";\n Events[\"BUFFER_CREATED\"] = \"hlsBufferCreated\";\n Events[\"BUFFER_APPENDING\"] = \"hlsBufferAppending\";\n Events[\"BUFFER_APPENDED\"] = \"hlsBufferAppended\";\n Events[\"BUFFER_EOS\"] = \"hlsBufferEos\";\n Events[\"BUFFER_FLUSHING\"] = \"hlsBufferFlushing\";\n Events[\"BUFFER_FLUSHED\"] = \"hlsBufferFlushed\";\n Events[\"MANIFEST_LOADING\"] = \"hlsManifestLoading\";\n Events[\"MANIFEST_LOADED\"] = \"hlsManifestLoaded\";\n Events[\"MANIFEST_PARSED\"] = \"hlsManifestParsed\";\n Events[\"LEVEL_SWITCHING\"] = \"hlsLevelSwitching\";\n Events[\"LEVEL_SWITCHED\"] = \"hlsLevelSwitched\";\n Events[\"LEVEL_LOADING\"] = \"hlsLevelLoading\";\n Events[\"LEVEL_LOADED\"] = \"hlsLevelLoaded\";\n Events[\"LEVEL_UPDATED\"] = \"hlsLevelUpdated\";\n Events[\"LEVEL_PTS_UPDATED\"] = \"hlsLevelPtsUpdated\";\n Events[\"LEVELS_UPDATED\"] = \"hlsLevelsUpdated\";\n Events[\"AUDIO_TRACKS_UPDATED\"] = \"hlsAudioTracksUpdated\";\n Events[\"AUDIO_TRACK_SWITCHING\"] = \"hlsAudioTrackSwitching\";\n Events[\"AUDIO_TRACK_SWITCHED\"] = \"hlsAudioTrackSwitched\";\n Events[\"AUDIO_TRACK_LOADING\"] = \"hlsAudioTrackLoading\";\n Events[\"AUDIO_TRACK_LOADED\"] = \"hlsAudioTrackLoaded\";\n Events[\"SUBTITLE_TRACKS_UPDATED\"] = \"hlsSubtitleTracksUpdated\";\n Events[\"SUBTITLE_TRACKS_CLEARED\"] = \"hlsSubtitleTracksCleared\";\n Events[\"SUBTITLE_TRACK_SWITCH\"] = \"hlsSubtitleTrackSwitch\";\n Events[\"SUBTITLE_TRACK_LOADING\"] = \"hlsSubtitleTrackLoading\";\n Events[\"SUBTITLE_TRACK_LOADED\"] = \"hlsSubtitleTrackLoaded\";\n Events[\"SUBTITLE_FRAG_PROCESSED\"] = \"hlsSubtitleFragProcessed\";\n Events[\"CUES_PARSED\"] = \"hlsCuesParsed\";\n Events[\"NON_NATIVE_TEXT_TRACKS_FOUND\"] = \"hlsNonNativeTextTracksFound\";\n Events[\"INIT_PTS_FOUND\"] = \"hlsInitPtsFound\";\n Events[\"FRAG_LOADING\"] = \"hlsFragLoading\";\n Events[\"FRAG_LOAD_EMERGENCY_ABORTED\"] = \"hlsFragLoadEmergencyAborted\";\n Events[\"FRAG_LOADED\"] = \"hlsFragLoaded\";\n Events[\"FRAG_DECRYPTED\"] = \"hlsFragDecrypted\";\n Events[\"FRAG_PARSING_INIT_SEGMENT\"] = \"hlsFragParsingInitSegment\";\n Events[\"FRAG_PARSING_USERDATA\"] = \"hlsFragParsingUserdata\";\n Events[\"FRAG_PARSING_METADATA\"] = \"hlsFragParsingMetadata\";\n Events[\"FRAG_PARSED\"] = \"hlsFragParsed\";\n Events[\"FRAG_BUFFERED\"] = \"hlsFragBuffered\";\n Events[\"FRAG_CHANGED\"] = \"hlsFragChanged\";\n Events[\"FPS_DROP\"] = \"hlsFpsDrop\";\n Events[\"FPS_DROP_LEVEL_CAPPING\"] = \"hlsFpsDropLevelCapping\";\n Events[\"ERROR\"] = \"hlsError\";\n Events[\"DESTROYING\"] = \"hlsDestroying\";\n Events[\"KEY_LOADING\"] = \"hlsKeyLoading\";\n Events[\"KEY_LOADED\"] = \"hlsKeyLoaded\";\n Events[\"LIVE_BACK_BUFFER_REACHED\"] = \"hlsLiveBackBufferReached\";\n Events[\"BACK_BUFFER_REACHED\"] = \"hlsBackBufferReached\";\n})(Events || (Events = {}));\n\n/***/ }),\n\n/***/ \"./src/hls.ts\":\n/*!********************!*\\\n !*** ./src/hls.ts ***!\n \\********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Hls; });\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! url-toolkit */ \"./node_modules/url-toolkit/src/url-toolkit.js\");\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _loader_playlist_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loader/playlist-loader */ \"./src/loader/playlist-loader.ts\");\n/* harmony import */ var _loader_key_loader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loader/key-loader */ \"./src/loader/key-loader.ts\");\n/* harmony import */ var _controller_id3_track_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./controller/id3-track-controller */ \"./src/controller/id3-track-controller.ts\");\n/* harmony import */ var _controller_latency_controller__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./controller/latency-controller */ \"./src/controller/latency-controller.ts\");\n/* harmony import */ var _controller_level_controller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./controller/level-controller */ \"./src/controller/level-controller.ts\");\n/* harmony import */ var _controller_fragment_tracker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./controller/fragment-tracker */ \"./src/controller/fragment-tracker.ts\");\n/* harmony import */ var _controller_stream_controller__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./controller/stream-controller */ \"./src/controller/stream-controller.ts\");\n/* harmony import */ var _is_supported__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./is-supported */ \"./src/is-supported.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config */ \"./src/config.ts\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! eventemitter3 */ \"./node_modules/eventemitter3/index.js\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./errors */ \"./src/errors.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * @module Hls\n * @class\n * @constructor\n */\nvar Hls = /*#__PURE__*/function () {\n Hls.isSupported = function isSupported() {\n return Object(_is_supported__WEBPACK_IMPORTED_MODULE_8__[\"isSupported\"])();\n };\n\n /**\n * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.\n *\n * @constructs Hls\n * @param {HlsConfig} config\n */\n function Hls(userConfig) {\n if (userConfig === void 0) {\n userConfig = {};\n }\n\n this.config = void 0;\n this.userConfig = void 0;\n this.coreComponents = void 0;\n this.networkControllers = void 0;\n this._emitter = new eventemitter3__WEBPACK_IMPORTED_MODULE_11__[\"EventEmitter\"]();\n this._autoLevelCapping = void 0;\n this.abrController = void 0;\n this.bufferController = void 0;\n this.capLevelController = void 0;\n this.latencyController = void 0;\n this.levelController = void 0;\n this.streamController = void 0;\n this.audioTrackController = void 0;\n this.subtitleTrackController = void 0;\n this.emeController = void 0;\n this.cmcdController = void 0;\n this._media = null;\n this.url = null;\n var config = this.config = Object(_config__WEBPACK_IMPORTED_MODULE_10__[\"mergeConfig\"])(Hls.DefaultConfig, userConfig);\n this.userConfig = userConfig;\n Object(_utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"enableLogs\"])(config.debug);\n this._autoLevelCapping = -1;\n\n if (config.progressive) {\n Object(_config__WEBPACK_IMPORTED_MODULE_10__[\"enableStreamingMode\"])(config);\n } // core controllers and network loaders\n\n\n var ConfigAbrController = config.abrController,\n ConfigBufferController = config.bufferController,\n ConfigCapLevelController = config.capLevelController,\n ConfigFpsController = config.fpsController;\n var abrController = this.abrController = new ConfigAbrController(this);\n var bufferController = this.bufferController = new ConfigBufferController(this);\n var capLevelController = this.capLevelController = new ConfigCapLevelController(this);\n var fpsController = new ConfigFpsController(this);\n var playListLoader = new _loader_playlist_loader__WEBPACK_IMPORTED_MODULE_1__[\"default\"](this);\n var keyLoader = new _loader_key_loader__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this);\n var id3TrackController = new _controller_id3_track_controller__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this); // network controllers\n\n var levelController = this.levelController = new _controller_level_controller__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this); // FragmentTracker must be defined before StreamController because the order of event handling is important\n\n var fragmentTracker = new _controller_fragment_tracker__WEBPACK_IMPORTED_MODULE_6__[\"FragmentTracker\"](this);\n var streamController = this.streamController = new _controller_stream_controller__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this, fragmentTracker); // Cap level controller uses streamController to flush the buffer\n\n capLevelController.setStreamController(streamController); // fpsController uses streamController to switch when frames are being dropped\n\n fpsController.setStreamController(streamController);\n var networkControllers = [playListLoader, keyLoader, levelController, streamController];\n this.networkControllers = networkControllers;\n var coreComponents = [abrController, bufferController, capLevelController, fpsController, id3TrackController, fragmentTracker];\n this.audioTrackController = this.createController(config.audioTrackController, null, networkControllers);\n this.createController(config.audioStreamController, fragmentTracker, networkControllers); // subtitleTrackController must be defined before because the order of event handling is important\n\n this.subtitleTrackController = this.createController(config.subtitleTrackController, null, networkControllers);\n this.createController(config.subtitleStreamController, fragmentTracker, networkControllers);\n this.createController(config.timelineController, null, coreComponents);\n this.emeController = this.createController(config.emeController, null, coreComponents);\n this.cmcdController = this.createController(config.cmcdController, null, coreComponents);\n this.latencyController = this.createController(_controller_latency_controller__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, coreComponents);\n this.coreComponents = coreComponents;\n }\n\n var _proto = Hls.prototype;\n\n _proto.createController = function createController(ControllerClass, fragmentTracker, components) {\n if (ControllerClass) {\n var controllerInstance = fragmentTracker ? new ControllerClass(this, fragmentTracker) : new ControllerClass(this);\n\n if (components) {\n components.push(controllerInstance);\n }\n\n return controllerInstance;\n }\n\n return null;\n } // Delegate the EventEmitter through the public API of Hls.js\n ;\n\n _proto.on = function on(event, listener, context) {\n if (context === void 0) {\n context = this;\n }\n\n this._emitter.on(event, listener, context);\n };\n\n _proto.once = function once(event, listener, context) {\n if (context === void 0) {\n context = this;\n }\n\n this._emitter.once(event, listener, context);\n };\n\n _proto.removeAllListeners = function removeAllListeners(event) {\n this._emitter.removeAllListeners(event);\n };\n\n _proto.off = function off(event, listener, context, once) {\n if (context === void 0) {\n context = this;\n }\n\n this._emitter.off(event, listener, context, once);\n };\n\n _proto.listeners = function listeners(event) {\n return this._emitter.listeners(event);\n };\n\n _proto.emit = function emit(event, name, eventObject) {\n return this._emitter.emit(event, name, eventObject);\n };\n\n _proto.trigger = function trigger(event, eventObject) {\n if (this.config.debug) {\n return this.emit(event, event, eventObject);\n } else {\n try {\n return this.emit(event, event, eventObject);\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].error('An internal error happened while handling event ' + event + '. Error message: \"' + e.message + '\". Here is a stacktrace:', e);\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorTypes\"].OTHER_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].INTERNAL_EXCEPTION,\n fatal: false,\n event: event,\n error: e\n });\n }\n }\n\n return false;\n };\n\n _proto.listenerCount = function listenerCount(event) {\n return this._emitter.listenerCount(event);\n }\n /**\n * Dispose of the instance\n */\n ;\n\n _proto.destroy = function destroy() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('destroy');\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].DESTROYING, undefined);\n this.detachMedia();\n this.removeAllListeners();\n this._autoLevelCapping = -1;\n this.url = null;\n this.networkControllers.forEach(function (component) {\n return component.destroy();\n });\n this.networkControllers.length = 0;\n this.coreComponents.forEach(function (component) {\n return component.destroy();\n });\n this.coreComponents.length = 0;\n }\n /**\n * Attaches Hls.js to a media element\n * @param {HTMLMediaElement} media\n */\n ;\n\n _proto.attachMedia = function attachMedia(media) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('attachMedia');\n this._media = media;\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].MEDIA_ATTACHING, {\n media: media\n });\n }\n /**\n * Detach Hls.js from the media\n */\n ;\n\n _proto.detachMedia = function detachMedia() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('detachMedia');\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].MEDIA_DETACHING, undefined);\n this._media = null;\n }\n /**\n * Set the source URL. Can be relative or absolute.\n * @param {string} url\n */\n ;\n\n _proto.loadSource = function loadSource(url) {\n this.stopLoad();\n var media = this.media;\n var loadedSource = this.url;\n var loadingSource = this.url = url_toolkit__WEBPACK_IMPORTED_MODULE_0__[\"buildAbsoluteURL\"](self.location.href, url, {\n alwaysNormalize: true\n });\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"loadSource:\" + loadingSource);\n\n if (media && loadedSource && loadedSource !== loadingSource && this.bufferController.hasSourceTypes()) {\n this.detachMedia();\n this.attachMedia(media);\n } // when attaching to a source URL, trigger a playlist load\n\n\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].MANIFEST_LOADING, {\n url: url\n });\n }\n /**\n * Start loading data from the stream source.\n * Depending on default config, client starts loading automatically when a source is set.\n *\n * @param {number} startPosition Set the start position to stream from\n * @default -1 None (from earliest point)\n */\n ;\n\n _proto.startLoad = function startLoad(startPosition) {\n if (startPosition === void 0) {\n startPosition = -1;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"startLoad(\" + startPosition + \")\");\n this.networkControllers.forEach(function (controller) {\n controller.startLoad(startPosition);\n });\n }\n /**\n * Stop loading of any stream data.\n */\n ;\n\n _proto.stopLoad = function stopLoad() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('stopLoad');\n this.networkControllers.forEach(function (controller) {\n controller.stopLoad();\n });\n }\n /**\n * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1)\n */\n ;\n\n _proto.swapAudioCodec = function swapAudioCodec() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('swapAudioCodec');\n this.streamController.swapAudioCodec();\n }\n /**\n * When the media-element fails, this allows to detach and then re-attach it\n * as one call (convenience method).\n *\n * Automatic recovery of media-errors by this process is configurable.\n */\n ;\n\n _proto.recoverMediaError = function recoverMediaError() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('recoverMediaError');\n var media = this._media;\n this.detachMedia();\n\n if (media) {\n this.attachMedia(media);\n }\n };\n\n _proto.removeLevel = function removeLevel(levelIndex, urlId) {\n if (urlId === void 0) {\n urlId = 0;\n }\n\n this.levelController.removeLevel(levelIndex, urlId);\n }\n /**\n * @type {Level[]}\n */\n ;\n\n _createClass(Hls, [{\n key: \"levels\",\n get: function get() {\n var levels = this.levelController.levels;\n return levels ? levels : [];\n }\n /**\n * Index of quality level currently played\n * @type {number}\n */\n\n }, {\n key: \"currentLevel\",\n get: function get() {\n return this.streamController.currentLevel;\n }\n /**\n * Set quality level index immediately .\n * This will flush the current buffer to replace the quality asap.\n * That means playback will interrupt at least shortly to re-buffer and re-sync eventually.\n * @type {number} -1 for automatic level selection\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set currentLevel:\" + newLevel);\n this.loadLevel = newLevel;\n this.abrController.clearTimer();\n this.streamController.immediateLevelSwitch();\n }\n /**\n * Index of next quality level loaded as scheduled by stream controller.\n * @type {number}\n */\n\n }, {\n key: \"nextLevel\",\n get: function get() {\n return this.streamController.nextLevel;\n }\n /**\n * Set quality level index for next loaded data.\n * This will switch the video quality asap, without interrupting playback.\n * May abort current loading of data, and flush parts of buffer (outside currently played fragment region).\n * @type {number} -1 for automatic level selection\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set nextLevel:\" + newLevel);\n this.levelController.manualLevel = newLevel;\n this.streamController.nextLevelSwitch();\n }\n /**\n * Return the quality level of the currently or last (of none is loaded currently) segment\n * @type {number}\n */\n\n }, {\n key: \"loadLevel\",\n get: function get() {\n return this.levelController.level;\n }\n /**\n * Set quality level index for next loaded data in a conservative way.\n * This will switch the quality without flushing, but interrupt current loading.\n * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer.\n * @type {number} newLevel -1 for automatic level selection\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set loadLevel:\" + newLevel);\n this.levelController.manualLevel = newLevel;\n }\n /**\n * get next quality level loaded\n * @type {number}\n */\n\n }, {\n key: \"nextLoadLevel\",\n get: function get() {\n return this.levelController.nextLoadLevel;\n }\n /**\n * Set quality level of next loaded segment in a fully \"non-destructive\" way.\n * Same as `loadLevel` but will wait for next switch (until current loading is done).\n * @type {number} level\n */\n ,\n set: function set(level) {\n this.levelController.nextLoadLevel = level;\n }\n /**\n * Return \"first level\": like a default level, if not set,\n * falls back to index of first level referenced in manifest\n * @type {number}\n */\n\n }, {\n key: \"firstLevel\",\n get: function get() {\n return Math.max(this.levelController.firstLevel, this.minAutoLevel);\n }\n /**\n * Sets \"first-level\", see getter.\n * @type {number}\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set firstLevel:\" + newLevel);\n this.levelController.firstLevel = newLevel;\n }\n /**\n * Return start level (level of first fragment that will be played back)\n * if not overrided by user, first level appearing in manifest will be used as start level\n * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n * (determined from download of first segment)\n * @type {number}\n */\n\n }, {\n key: \"startLevel\",\n get: function get() {\n return this.levelController.startLevel;\n }\n /**\n * set start level (level of first fragment that will be played back)\n * if not overrided by user, first level appearing in manifest will be used as start level\n * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n * (determined from download of first segment)\n * @type {number} newLevel\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set startLevel:\" + newLevel); // if not in automatic start level detection, ensure startLevel is greater than minAutoLevel\n\n if (newLevel !== -1) {\n newLevel = Math.max(newLevel, this.minAutoLevel);\n }\n\n this.levelController.startLevel = newLevel;\n }\n /**\n * Get the current setting for capLevelToPlayerSize\n *\n * @type {boolean}\n */\n\n }, {\n key: \"capLevelToPlayerSize\",\n get: function get() {\n return this.config.capLevelToPlayerSize;\n }\n /**\n * set dynamically set capLevelToPlayerSize against (`CapLevelController`)\n *\n * @type {boolean}\n */\n ,\n set: function set(shouldStartCapping) {\n var newCapLevelToPlayerSize = !!shouldStartCapping;\n\n if (newCapLevelToPlayerSize !== this.config.capLevelToPlayerSize) {\n if (newCapLevelToPlayerSize) {\n this.capLevelController.startCapping(); // If capping occurs, nextLevelSwitch will happen based on size.\n } else {\n this.capLevelController.stopCapping();\n this.autoLevelCapping = -1;\n this.streamController.nextLevelSwitch(); // Now we're uncapped, get the next level asap.\n }\n\n this.config.capLevelToPlayerSize = newCapLevelToPlayerSize;\n }\n }\n /**\n * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n * @type {number}\n */\n\n }, {\n key: \"autoLevelCapping\",\n get: function get() {\n return this._autoLevelCapping;\n }\n /**\n * get bandwidth estimate\n * @type {number}\n */\n ,\n set:\n /**\n * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n * @type {number}\n */\n function set(newLevel) {\n if (this._autoLevelCapping !== newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set autoLevelCapping:\" + newLevel);\n this._autoLevelCapping = newLevel;\n }\n }\n /**\n * True when automatic level selection enabled\n * @type {boolean}\n */\n\n }, {\n key: \"bandwidthEstimate\",\n get: function get() {\n var bwEstimator = this.abrController.bwEstimator;\n\n if (!bwEstimator) {\n return NaN;\n }\n\n return bwEstimator.getEstimate();\n }\n }, {\n key: \"autoLevelEnabled\",\n get: function get() {\n return this.levelController.manualLevel === -1;\n }\n /**\n * Level set manually (if any)\n * @type {number}\n */\n\n }, {\n key: \"manualLevel\",\n get: function get() {\n return this.levelController.manualLevel;\n }\n /**\n * min level selectable in auto mode according to config.minAutoBitrate\n * @type {number}\n */\n\n }, {\n key: \"minAutoLevel\",\n get: function get() {\n var levels = this.levels,\n minAutoBitrate = this.config.minAutoBitrate;\n if (!levels) return 0;\n var len = levels.length;\n\n for (var i = 0; i < len; i++) {\n if (levels[i].maxBitrate >= minAutoBitrate) {\n return i;\n }\n }\n\n return 0;\n }\n /**\n * max level selectable in auto mode according to autoLevelCapping\n * @type {number}\n */\n\n }, {\n key: \"maxAutoLevel\",\n get: function get() {\n var levels = this.levels,\n autoLevelCapping = this.autoLevelCapping;\n var maxAutoLevel;\n\n if (autoLevelCapping === -1 && levels && levels.length) {\n maxAutoLevel = levels.length - 1;\n } else {\n maxAutoLevel = autoLevelCapping;\n }\n\n return maxAutoLevel;\n }\n /**\n * next automatically selected quality level\n * @type {number}\n */\n\n }, {\n key: \"nextAutoLevel\",\n get: function get() {\n // ensure next auto level is between min and max auto level\n return Math.min(Math.max(this.abrController.nextAutoLevel, this.minAutoLevel), this.maxAutoLevel);\n }\n /**\n * this setter is used to force next auto level.\n * this is useful to force a switch down in auto mode:\n * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example)\n * forced value is valid for one fragment. upon successful frag loading at forced level,\n * this value will be resetted to -1 by ABR controller.\n * @type {number}\n */\n ,\n set: function set(nextLevel) {\n this.abrController.nextAutoLevel = Math.max(this.minAutoLevel, nextLevel);\n }\n /**\n * get the datetime value relative to media.currentTime for the active level Program Date Time if present\n * @type {Date}\n */\n\n }, {\n key: \"playingDate\",\n get: function get() {\n return this.streamController.currentProgramDateTime;\n }\n /**\n * @type {AudioTrack[]}\n */\n\n }, {\n key: \"audioTracks\",\n get: function get() {\n var audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.audioTracks : [];\n }\n /**\n * index of the selected audio track (index in audio track lists)\n * @type {number}\n */\n\n }, {\n key: \"audioTrack\",\n get: function get() {\n var audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.audioTrack : -1;\n }\n /**\n * selects an audio track, based on its index in audio track lists\n * @type {number}\n */\n ,\n set: function set(audioTrackId) {\n var audioTrackController = this.audioTrackController;\n\n if (audioTrackController) {\n audioTrackController.audioTrack = audioTrackId;\n }\n }\n /**\n * get alternate subtitle tracks list from playlist\n * @type {MediaPlaylist[]}\n */\n\n }, {\n key: \"subtitleTracks\",\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleTracks : [];\n }\n /**\n * index of the selected subtitle track (index in subtitle track lists)\n * @type {number}\n */\n\n }, {\n key: \"subtitleTrack\",\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleTrack : -1;\n },\n set:\n /**\n * select an subtitle track, based on its index in subtitle track lists\n * @type {number}\n */\n function set(subtitleTrackId) {\n var subtitleTrackController = this.subtitleTrackController;\n\n if (subtitleTrackController) {\n subtitleTrackController.subtitleTrack = subtitleTrackId;\n }\n }\n /**\n * @type {boolean}\n */\n\n }, {\n key: \"media\",\n get: function get() {\n return this._media;\n }\n }, {\n key: \"subtitleDisplay\",\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleDisplay : false;\n }\n /**\n * Enable/disable subtitle display rendering\n * @type {boolean}\n */\n ,\n set: function set(value) {\n var subtitleTrackController = this.subtitleTrackController;\n\n if (subtitleTrackController) {\n subtitleTrackController.subtitleDisplay = value;\n }\n }\n /**\n * get mode for Low-Latency HLS loading\n * @type {boolean}\n */\n\n }, {\n key: \"lowLatencyMode\",\n get: function get() {\n return this.config.lowLatencyMode;\n }\n /**\n * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK.\n * @type {boolean}\n */\n ,\n set: function set(mode) {\n this.config.lowLatencyMode = mode;\n }\n /**\n * position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```)\n * @type {number}\n */\n\n }, {\n key: \"liveSyncPosition\",\n get: function get() {\n return this.latencyController.liveSyncPosition;\n }\n /**\n * estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced)\n * returns 0 before first playlist is loaded\n * @type {number}\n */\n\n }, {\n key: \"latency\",\n get: function get() {\n return this.latencyController.latency;\n }\n /**\n * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition```\n * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration```\n * returns 0 before first playlist is loaded\n * @type {number}\n */\n\n }, {\n key: \"maxLatency\",\n get: function get() {\n return this.latencyController.maxLatency;\n }\n /**\n * target distance from the edge as calculated by the latency controller\n * @type {number}\n */\n\n }, {\n key: \"targetLatency\",\n get: function get() {\n return this.latencyController.targetLatency;\n }\n /**\n * the rate at which the edge of the current live playlist is advancing or 1 if there is none\n * @type {number}\n */\n\n }, {\n key: \"drift\",\n get: function get() {\n return this.latencyController.drift;\n }\n /**\n * set to true when startLoad is called before MANIFEST_PARSED event\n * @type {boolean}\n */\n\n }, {\n key: \"forceStartLoad\",\n get: function get() {\n return this.streamController.forceStartLoad;\n }\n }], [{\n key: \"version\",\n get: function get() {\n return undefined;\n }\n }, {\n key: \"Events\",\n get: function get() {\n return _events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"];\n }\n }, {\n key: \"ErrorTypes\",\n get: function get() {\n return _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorTypes\"];\n }\n }, {\n key: \"ErrorDetails\",\n get: function get() {\n return _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"];\n }\n }, {\n key: \"DefaultConfig\",\n get: function get() {\n if (!Hls.defaultConfig) {\n return _config__WEBPACK_IMPORTED_MODULE_10__[\"hlsDefaultConfig\"];\n }\n\n return Hls.defaultConfig;\n }\n /**\n * @type {HlsConfig}\n */\n ,\n set: function set(defaultConfig) {\n Hls.defaultConfig = defaultConfig;\n }\n }]);\n\n return Hls;\n}();\n\nHls.defaultConfig = void 0;\n\n\n/***/ }),\n\n/***/ \"./src/is-supported.ts\":\n/*!*****************************!*\\\n !*** ./src/is-supported.ts ***!\n \\*****************************/\n/*! exports provided: isSupported, changeTypeSupported */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSupported\", function() { return isSupported; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeTypeSupported\", function() { return changeTypeSupported; });\n/* harmony import */ var _utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/mediasource-helper */ \"./src/utils/mediasource-helper.ts\");\n\n\nfunction getSourceBuffer() {\n return self.SourceBuffer || self.WebKitSourceBuffer;\n}\n\nfunction isSupported() {\n var mediaSource = Object(_utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_0__[\"getMediaSource\"])();\n\n if (!mediaSource) {\n return false;\n }\n\n var sourceBuffer = getSourceBuffer();\n var isTypeSupported = mediaSource && typeof mediaSource.isTypeSupported === 'function' && mediaSource.isTypeSupported('video/mp4; codecs=\"avc1.42E01E,mp4a.40.2\"'); // if SourceBuffer is exposed ensure its API is valid\n // safari and old version of Chrome doe not expose SourceBuffer globally so checking SourceBuffer.prototype is impossible\n\n var sourceBufferValidAPI = !sourceBuffer || sourceBuffer.prototype && typeof sourceBuffer.prototype.appendBuffer === 'function' && typeof sourceBuffer.prototype.remove === 'function';\n return !!isTypeSupported && !!sourceBufferValidAPI;\n}\nfunction changeTypeSupported() {\n var _sourceBuffer$prototy;\n\n var sourceBuffer = getSourceBuffer();\n return typeof (sourceBuffer === null || sourceBuffer === void 0 ? void 0 : (_sourceBuffer$prototy = sourceBuffer.prototype) === null || _sourceBuffer$prototy === void 0 ? void 0 : _sourceBuffer$prototy.changeType) === 'function';\n}\n\n/***/ }),\n\n/***/ \"./src/loader/date-range.ts\":\n/*!**********************************!*\\\n !*** ./src/loader/date-range.ts ***!\n \\**********************************/\n/*! exports provided: DateRangeAttribute, DateRange */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DateRangeAttribute\", function() { return DateRangeAttribute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DateRange\", function() { return DateRange; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _utils_attr_list__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/attr-list */ \"./src/utils/attr-list.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\nvar DateRangeAttribute;\n\n(function (DateRangeAttribute) {\n DateRangeAttribute[\"ID\"] = \"ID\";\n DateRangeAttribute[\"CLASS\"] = \"CLASS\";\n DateRangeAttribute[\"START_DATE\"] = \"START-DATE\";\n DateRangeAttribute[\"DURATION\"] = \"DURATION\";\n DateRangeAttribute[\"END_DATE\"] = \"END-DATE\";\n DateRangeAttribute[\"END_ON_NEXT\"] = \"END-ON-NEXT\";\n DateRangeAttribute[\"PLANNED_DURATION\"] = \"PLANNED-DURATION\";\n DateRangeAttribute[\"SCTE35_OUT\"] = \"SCTE35-OUT\";\n DateRangeAttribute[\"SCTE35_IN\"] = \"SCTE35-IN\";\n})(DateRangeAttribute || (DateRangeAttribute = {}));\n\nvar DateRange = /*#__PURE__*/function () {\n function DateRange(dateRangeAttr, dateRangeWithSameId) {\n this.attr = void 0;\n this._startDate = void 0;\n this._endDate = void 0;\n this._badValueForSameId = void 0;\n\n if (dateRangeWithSameId) {\n var previousAttr = dateRangeWithSameId.attr;\n\n for (var key in previousAttr) {\n if (Object.prototype.hasOwnProperty.call(dateRangeAttr, key) && dateRangeAttr[key] !== previousAttr[key]) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"DATERANGE tag attribute: \\\"\" + key + \"\\\" does not match for tags with ID: \\\"\" + dateRangeAttr.ID + \"\\\"\");\n this._badValueForSameId = key;\n break;\n }\n } // Merge DateRange tags with the same ID\n\n\n dateRangeAttr = _extends(new _utils_attr_list__WEBPACK_IMPORTED_MODULE_1__[\"AttrList\"]({}), previousAttr, dateRangeAttr);\n }\n\n this.attr = dateRangeAttr;\n this._startDate = new Date(dateRangeAttr[DateRangeAttribute.START_DATE]);\n\n if (DateRangeAttribute.END_DATE in this.attr) {\n var endDate = new Date(this.attr[DateRangeAttribute.END_DATE]);\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(endDate.getTime())) {\n this._endDate = endDate;\n }\n }\n }\n\n _createClass(DateRange, [{\n key: \"id\",\n get: function get() {\n return this.attr.ID;\n }\n }, {\n key: \"class\",\n get: function get() {\n return this.attr.CLASS;\n }\n }, {\n key: \"startDate\",\n get: function get() {\n return this._startDate;\n }\n }, {\n key: \"endDate\",\n get: function get() {\n if (this._endDate) {\n return this._endDate;\n }\n\n var duration = this.duration;\n\n if (duration !== null) {\n return new Date(this._startDate.getTime() + duration * 1000);\n }\n\n return null;\n }\n }, {\n key: \"duration\",\n get: function get() {\n if (DateRangeAttribute.DURATION in this.attr) {\n var duration = this.attr.decimalFloatingPoint(DateRangeAttribute.DURATION);\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(duration)) {\n return duration;\n }\n } else if (this._endDate) {\n return (this._endDate.getTime() - this._startDate.getTime()) / 1000;\n }\n\n return null;\n }\n }, {\n key: \"plannedDuration\",\n get: function get() {\n if (DateRangeAttribute.PLANNED_DURATION in this.attr) {\n return this.attr.decimalFloatingPoint(DateRangeAttribute.PLANNED_DURATION);\n }\n\n return null;\n }\n }, {\n key: \"endOnNext\",\n get: function get() {\n return this.attr.bool(DateRangeAttribute.END_ON_NEXT);\n }\n }, {\n key: \"isValid\",\n get: function get() {\n return !!this.id && !this._badValueForSameId && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.startDate.getTime()) && (this.duration === null || this.duration >= 0) && (!this.endOnNext || !!this.class);\n }\n }]);\n\n return DateRange;\n}();\n\n/***/ }),\n\n/***/ \"./src/loader/fragment-loader.ts\":\n/*!***************************************!*\\\n !*** ./src/loader/fragment-loader.ts ***!\n \\***************************************/\n/*! exports provided: default, LoadError */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FragmentLoader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoadError\", function() { return LoadError; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n\n\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\nvar MIN_CHUNK_SIZE = Math.pow(2, 17); // 128kb\n\nvar FragmentLoader = /*#__PURE__*/function () {\n function FragmentLoader(config) {\n this.config = void 0;\n this.loader = null;\n this.partLoadTimeout = -1;\n this.config = config;\n }\n\n var _proto = FragmentLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this.loader) {\n this.loader.destroy();\n this.loader = null;\n }\n };\n\n _proto.abort = function abort() {\n if (this.loader) {\n // Abort the loader for current fragment. Only one may load at any given time\n this.loader.abort();\n }\n };\n\n _proto.load = function load(frag, _onProgress) {\n var _this = this;\n\n var url = frag.url;\n\n if (!url) {\n return Promise.reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_ERROR,\n fatal: false,\n frag: frag,\n networkDetails: null\n }, \"Fragment does not have a \" + (url ? 'part list' : 'url')));\n }\n\n this.abort();\n var config = this.config;\n var FragmentILoader = config.fLoader;\n var DefaultILoader = config.loader;\n return new Promise(function (resolve, reject) {\n if (_this.loader) {\n _this.loader.destroy();\n }\n\n var loader = _this.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n var loaderContext = createLoaderContext(frag);\n var loaderConfig = {\n timeout: config.fragLoadingTimeOut,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: config.fragLoadingMaxRetryTimeout,\n highWaterMark: frag.sn === 'initSegment' ? Infinity : MIN_CHUNK_SIZE\n }; // Assign frag stats to the loader's stats reference\n\n frag.stats = loader.stats;\n loader.load(loaderContext, loaderConfig, {\n onSuccess: function onSuccess(response, stats, context, networkDetails) {\n _this.resetLoader(frag, loader);\n\n resolve({\n frag: frag,\n part: null,\n payload: response.data,\n networkDetails: networkDetails\n });\n },\n onError: function onError(response, context, networkDetails) {\n _this.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_ERROR,\n fatal: false,\n frag: frag,\n response: response,\n networkDetails: networkDetails\n }));\n },\n onAbort: function onAbort(stats, context, networkDetails) {\n _this.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].INTERNAL_ABORTED,\n fatal: false,\n frag: frag,\n networkDetails: networkDetails\n }));\n },\n onTimeout: function onTimeout(response, context, networkDetails) {\n _this.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT,\n fatal: false,\n frag: frag,\n networkDetails: networkDetails\n }));\n },\n onProgress: function onProgress(stats, context, data, networkDetails) {\n if (_onProgress) {\n _onProgress({\n frag: frag,\n part: null,\n payload: data,\n networkDetails: networkDetails\n });\n }\n }\n });\n });\n };\n\n _proto.loadPart = function loadPart(frag, part, onProgress) {\n var _this2 = this;\n\n this.abort();\n var config = this.config;\n var FragmentILoader = config.fLoader;\n var DefaultILoader = config.loader;\n return new Promise(function (resolve, reject) {\n if (_this2.loader) {\n _this2.loader.destroy();\n }\n\n var loader = _this2.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n var loaderContext = createLoaderContext(frag, part);\n var loaderConfig = {\n timeout: config.fragLoadingTimeOut,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: config.fragLoadingMaxRetryTimeout,\n highWaterMark: MIN_CHUNK_SIZE\n }; // Assign part stats to the loader's stats reference\n\n part.stats = loader.stats;\n loader.load(loaderContext, loaderConfig, {\n onSuccess: function onSuccess(response, stats, context, networkDetails) {\n _this2.resetLoader(frag, loader);\n\n _this2.updateStatsFromPart(frag, part);\n\n var partLoadedData = {\n frag: frag,\n part: part,\n payload: response.data,\n networkDetails: networkDetails\n };\n onProgress(partLoadedData);\n resolve(partLoadedData);\n },\n onError: function onError(response, context, networkDetails) {\n _this2.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_ERROR,\n fatal: false,\n frag: frag,\n part: part,\n response: response,\n networkDetails: networkDetails\n }));\n },\n onAbort: function onAbort(stats, context, networkDetails) {\n frag.stats.aborted = part.stats.aborted;\n\n _this2.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].INTERNAL_ABORTED,\n fatal: false,\n frag: frag,\n part: part,\n networkDetails: networkDetails\n }));\n },\n onTimeout: function onTimeout(response, context, networkDetails) {\n _this2.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT,\n fatal: false,\n frag: frag,\n part: part,\n networkDetails: networkDetails\n }));\n }\n });\n });\n };\n\n _proto.updateStatsFromPart = function updateStatsFromPart(frag, part) {\n var fragStats = frag.stats;\n var partStats = part.stats;\n var partTotal = partStats.total;\n fragStats.loaded += partStats.loaded;\n\n if (partTotal) {\n var estTotalParts = Math.round(frag.duration / part.duration);\n var estLoadedParts = Math.min(Math.round(fragStats.loaded / partTotal), estTotalParts);\n var estRemainingParts = estTotalParts - estLoadedParts;\n var estRemainingBytes = estRemainingParts * Math.round(fragStats.loaded / estLoadedParts);\n fragStats.total = fragStats.loaded + estRemainingBytes;\n } else {\n fragStats.total = Math.max(fragStats.loaded, fragStats.total);\n }\n\n var fragLoading = fragStats.loading;\n var partLoading = partStats.loading;\n\n if (fragLoading.start) {\n // add to fragment loader latency\n fragLoading.first += partLoading.first - partLoading.start;\n } else {\n fragLoading.start = partLoading.start;\n fragLoading.first = partLoading.first;\n }\n\n fragLoading.end = partLoading.end;\n };\n\n _proto.resetLoader = function resetLoader(frag, loader) {\n frag.loader = null;\n\n if (this.loader === loader) {\n self.clearTimeout(this.partLoadTimeout);\n this.loader = null;\n }\n\n loader.destroy();\n };\n\n return FragmentLoader;\n}();\n\n\n\nfunction createLoaderContext(frag, part) {\n if (part === void 0) {\n part = null;\n }\n\n var segment = part || frag;\n var loaderContext = {\n frag: frag,\n part: part,\n responseType: 'arraybuffer',\n url: segment.url,\n headers: {},\n rangeStart: 0,\n rangeEnd: 0\n };\n var start = segment.byteRangeStartOffset;\n var end = segment.byteRangeEndOffset;\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(start) && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(end)) {\n loaderContext.rangeStart = start;\n loaderContext.rangeEnd = end;\n }\n\n return loaderContext;\n}\n\nvar LoadError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(LoadError, _Error);\n\n function LoadError(data) {\n var _this3;\n\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n\n _this3 = _Error.call.apply(_Error, [this].concat(params)) || this;\n _this3.data = void 0;\n _this3.data = data;\n return _this3;\n }\n\n return LoadError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\n/***/ }),\n\n/***/ \"./src/loader/fragment.ts\":\n/*!********************************!*\\\n !*** ./src/loader/fragment.ts ***!\n \\********************************/\n/*! exports provided: ElementaryStreamTypes, BaseSegment, Fragment, Part */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ElementaryStreamTypes\", function() { return ElementaryStreamTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseSegment\", function() { return BaseSegment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Fragment\", function() { return Fragment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Part\", function() { return Part; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! url-toolkit */ \"./node_modules/url-toolkit/src/url-toolkit.js\");\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _level_key__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./level-key */ \"./src/loader/level-key.ts\");\n/* harmony import */ var _load_stats__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./load-stats */ \"./src/loader/load-stats.ts\");\n\n\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n\nvar ElementaryStreamTypes;\n\n(function (ElementaryStreamTypes) {\n ElementaryStreamTypes[\"AUDIO\"] = \"audio\";\n ElementaryStreamTypes[\"VIDEO\"] = \"video\";\n ElementaryStreamTypes[\"AUDIOVIDEO\"] = \"audiovideo\";\n})(ElementaryStreamTypes || (ElementaryStreamTypes = {}));\n\nvar BaseSegment = /*#__PURE__*/function () {\n // baseurl is the URL to the playlist\n // relurl is the portion of the URL that comes from inside the playlist.\n // Holds the types of data this fragment supports\n function BaseSegment(baseurl) {\n var _this$elementaryStrea;\n\n this._byteRange = null;\n this._url = null;\n this.baseurl = void 0;\n this.relurl = void 0;\n this.elementaryStreams = (_this$elementaryStrea = {}, _this$elementaryStrea[ElementaryStreamTypes.AUDIO] = null, _this$elementaryStrea[ElementaryStreamTypes.VIDEO] = null, _this$elementaryStrea[ElementaryStreamTypes.AUDIOVIDEO] = null, _this$elementaryStrea);\n this.baseurl = baseurl;\n } // setByteRange converts a EXT-X-BYTERANGE attribute into a two element array\n\n\n var _proto = BaseSegment.prototype;\n\n _proto.setByteRange = function setByteRange(value, previous) {\n var params = value.split('@', 2);\n var byteRange = [];\n\n if (params.length === 1) {\n byteRange[0] = previous ? previous.byteRangeEndOffset : 0;\n } else {\n byteRange[0] = parseInt(params[1]);\n }\n\n byteRange[1] = parseInt(params[0]) + byteRange[0];\n this._byteRange = byteRange;\n };\n\n _createClass(BaseSegment, [{\n key: \"byteRange\",\n get: function get() {\n if (!this._byteRange) {\n return [];\n }\n\n return this._byteRange;\n }\n }, {\n key: \"byteRangeStartOffset\",\n get: function get() {\n return this.byteRange[0];\n }\n }, {\n key: \"byteRangeEndOffset\",\n get: function get() {\n return this.byteRange[1];\n }\n }, {\n key: \"url\",\n get: function get() {\n if (!this._url && this.baseurl && this.relurl) {\n this._url = Object(url_toolkit__WEBPACK_IMPORTED_MODULE_1__[\"buildAbsoluteURL\"])(this.baseurl, this.relurl, {\n alwaysNormalize: true\n });\n }\n\n return this._url || '';\n },\n set: function set(value) {\n this._url = value;\n }\n }]);\n\n return BaseSegment;\n}();\nvar Fragment = /*#__PURE__*/function (_BaseSegment) {\n _inheritsLoose(Fragment, _BaseSegment);\n\n // EXTINF has to be present for a m3u8 to be considered valid\n // sn notates the sequence number for a segment, and if set to a string can be 'initSegment'\n // levelkey is the EXT-X-KEY that applies to this segment for decryption\n // core difference from the private field _decryptdata is the lack of the initialized IV\n // _decryptdata will set the IV for this segment based on the segment number in the fragment\n // A string representing the fragment type\n // A reference to the loader. Set while the fragment is loading, and removed afterwards. Used to abort fragment loading\n // The level/track index to which the fragment belongs\n // The continuity counter of the fragment\n // The starting Presentation Time Stamp (PTS) of the fragment. Set after transmux complete.\n // The ending Presentation Time Stamp (PTS) of the fragment. Set after transmux complete.\n // The latest Presentation Time Stamp (PTS) appended to the buffer.\n // The starting Decode Time Stamp (DTS) of the fragment. Set after transmux complete.\n // The ending Decode Time Stamp (DTS) of the fragment. Set after transmux complete.\n // The start time of the fragment, as listed in the manifest. Updated after transmux complete.\n // Set by `updateFragPTSDTS` in level-helper\n // The maximum starting Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete.\n // The minimum ending Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete.\n // Load/parse timing information\n // A flag indicating whether the segment was downloaded in order to test bitrate, and was not buffered\n // #EXTINF segment title\n // The Media Initialization Section for this segment\n function Fragment(type, baseurl) {\n var _this;\n\n _this = _BaseSegment.call(this, baseurl) || this;\n _this._decryptdata = null;\n _this.rawProgramDateTime = null;\n _this.programDateTime = null;\n _this.tagList = [];\n _this.duration = 0;\n _this.sn = 0;\n _this.levelkey = void 0;\n _this.type = void 0;\n _this.loader = null;\n _this.level = -1;\n _this.cc = 0;\n _this.startPTS = void 0;\n _this.endPTS = void 0;\n _this.appendedPTS = void 0;\n _this.startDTS = void 0;\n _this.endDTS = void 0;\n _this.start = 0;\n _this.deltaPTS = void 0;\n _this.maxStartPTS = void 0;\n _this.minEndPTS = void 0;\n _this.stats = new _load_stats__WEBPACK_IMPORTED_MODULE_4__[\"LoadStats\"]();\n _this.urlId = 0;\n _this.data = void 0;\n _this.bitrateTest = false;\n _this.title = null;\n _this.initSegment = null;\n _this.type = type;\n return _this;\n }\n\n var _proto2 = Fragment.prototype;\n\n /**\n * Utility method for parseLevelPlaylist to create an initialization vector for a given segment\n * @param {number} segmentNumber - segment number to generate IV with\n * @returns {Uint8Array}\n */\n _proto2.createInitializationVector = function createInitializationVector(segmentNumber) {\n var uint8View = new Uint8Array(16);\n\n for (var i = 12; i < 16; i++) {\n uint8View[i] = segmentNumber >> 8 * (15 - i) & 0xff;\n }\n\n return uint8View;\n }\n /**\n * Utility method for parseLevelPlaylist to get a fragment's decryption data from the currently parsed encryption key data\n * @param levelkey - a playlist's encryption info\n * @param segmentNumber - the fragment's segment number\n * @returns {LevelKey} - an object to be applied as a fragment's decryptdata\n */\n ;\n\n _proto2.setDecryptDataFromLevelKey = function setDecryptDataFromLevelKey(levelkey, segmentNumber) {\n var decryptdata = levelkey;\n\n if ((levelkey === null || levelkey === void 0 ? void 0 : levelkey.method) === 'AES-128' && levelkey.uri && !levelkey.iv) {\n decryptdata = _level_key__WEBPACK_IMPORTED_MODULE_3__[\"LevelKey\"].fromURI(levelkey.uri);\n decryptdata.method = levelkey.method;\n decryptdata.iv = this.createInitializationVector(segmentNumber);\n decryptdata.keyFormat = 'identity';\n }\n\n return decryptdata;\n };\n\n _proto2.setElementaryStreamInfo = function setElementaryStreamInfo(type, startPTS, endPTS, startDTS, endDTS, partial) {\n if (partial === void 0) {\n partial = false;\n }\n\n var elementaryStreams = this.elementaryStreams;\n var info = elementaryStreams[type];\n\n if (!info) {\n elementaryStreams[type] = {\n startPTS: startPTS,\n endPTS: endPTS,\n startDTS: startDTS,\n endDTS: endDTS,\n partial: partial\n };\n return;\n }\n\n info.startPTS = Math.min(info.startPTS, startPTS);\n info.endPTS = Math.max(info.endPTS, endPTS);\n info.startDTS = Math.min(info.startDTS, startDTS);\n info.endDTS = Math.max(info.endDTS, endDTS);\n };\n\n _proto2.clearElementaryStreamInfo = function clearElementaryStreamInfo() {\n var elementaryStreams = this.elementaryStreams;\n elementaryStreams[ElementaryStreamTypes.AUDIO] = null;\n elementaryStreams[ElementaryStreamTypes.VIDEO] = null;\n elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO] = null;\n };\n\n _createClass(Fragment, [{\n key: \"decryptdata\",\n get: function get() {\n if (!this.levelkey && !this._decryptdata) {\n return null;\n }\n\n if (!this._decryptdata && this.levelkey) {\n var sn = this.sn;\n\n if (typeof sn !== 'number') {\n // We are fetching decryption data for a initialization segment\n // If the segment was encrypted with AES-128\n // It must have an IV defined. We cannot substitute the Segment Number in.\n if (this.levelkey && this.levelkey.method === 'AES-128' && !this.levelkey.iv) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"missing IV for initialization segment with method=\\\"\" + this.levelkey.method + \"\\\" - compliance issue\");\n }\n /*\n Be converted to a Number.\n 'initSegment' will become NaN.\n NaN, which when converted through ToInt32() -> +0.\n ---\n Explicitly set sn to resulting value from implicit conversions 'initSegment' values for IV generation.\n */\n\n\n sn = 0;\n }\n\n this._decryptdata = this.setDecryptDataFromLevelKey(this.levelkey, sn);\n }\n\n return this._decryptdata;\n }\n }, {\n key: \"end\",\n get: function get() {\n return this.start + this.duration;\n }\n }, {\n key: \"endProgramDateTime\",\n get: function get() {\n if (this.programDateTime === null) {\n return null;\n }\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.programDateTime)) {\n return null;\n }\n\n var duration = !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.duration) ? 0 : this.duration;\n return this.programDateTime + duration * 1000;\n }\n }, {\n key: \"encrypted\",\n get: function get() {\n var _this$decryptdata;\n\n // At the m3u8-parser level we need to add support for manifest signalled keyformats\n // when we want the fragment to start reporting that it is encrypted.\n // Currently, keyFormat will only be set for identity keys\n if ((_this$decryptdata = this.decryptdata) !== null && _this$decryptdata !== void 0 && _this$decryptdata.keyFormat && this.decryptdata.uri) {\n return true;\n }\n\n return false;\n }\n }]);\n\n return Fragment;\n}(BaseSegment);\nvar Part = /*#__PURE__*/function (_BaseSegment2) {\n _inheritsLoose(Part, _BaseSegment2);\n\n function Part(partAttrs, frag, baseurl, index, previous) {\n var _this2;\n\n _this2 = _BaseSegment2.call(this, baseurl) || this;\n _this2.fragOffset = 0;\n _this2.duration = 0;\n _this2.gap = false;\n _this2.independent = false;\n _this2.relurl = void 0;\n _this2.fragment = void 0;\n _this2.index = void 0;\n _this2.stats = new _load_stats__WEBPACK_IMPORTED_MODULE_4__[\"LoadStats\"]();\n _this2.duration = partAttrs.decimalFloatingPoint('DURATION');\n _this2.gap = partAttrs.bool('GAP');\n _this2.independent = partAttrs.bool('INDEPENDENT');\n _this2.relurl = partAttrs.enumeratedString('URI');\n _this2.fragment = frag;\n _this2.index = index;\n var byteRange = partAttrs.enumeratedString('BYTERANGE');\n\n if (byteRange) {\n _this2.setByteRange(byteRange, previous);\n }\n\n if (previous) {\n _this2.fragOffset = previous.fragOffset + previous.duration;\n }\n\n return _this2;\n }\n\n _createClass(Part, [{\n key: \"start\",\n get: function get() {\n return this.fragment.start + this.fragOffset;\n }\n }, {\n key: \"end\",\n get: function get() {\n return this.start + this.duration;\n }\n }, {\n key: \"loaded\",\n get: function get() {\n var elementaryStreams = this.elementaryStreams;\n return !!(elementaryStreams.audio || elementaryStreams.video || elementaryStreams.audiovideo);\n }\n }]);\n\n return Part;\n}(BaseSegment);\n\n/***/ }),\n\n/***/ \"./src/loader/key-loader.ts\":\n/*!**********************************!*\\\n !*** ./src/loader/key-loader.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return KeyLoader; });\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/*\n * Decrypt key Loader\n */\n\n\n\n\nvar KeyLoader = /*#__PURE__*/function () {\n function KeyLoader(hls) {\n this.hls = void 0;\n this.loaders = {};\n this.decryptkey = null;\n this.decrypturl = null;\n this.hls = hls;\n this.registerListeners();\n }\n\n var _proto = KeyLoader.prototype;\n\n _proto.startLoad = function startLoad(startPosition) {};\n\n _proto.stopLoad = function stopLoad() {\n this.destroyInternalLoaders();\n };\n\n _proto.registerListeners = function registerListeners() {\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].KEY_LOADING, this.onKeyLoading, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].KEY_LOADING, this.onKeyLoading);\n };\n\n _proto.destroyInternalLoaders = function destroyInternalLoaders() {\n for (var loaderName in this.loaders) {\n var loader = this.loaders[loaderName];\n\n if (loader) {\n loader.destroy();\n }\n }\n\n this.loaders = {};\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.destroyInternalLoaders();\n };\n\n _proto.onKeyLoading = function onKeyLoading(event, data) {\n var frag = data.frag;\n var type = frag.type;\n var loader = this.loaders[type];\n\n if (!frag.decryptdata) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('Missing decryption data on fragment in onKeyLoading');\n return;\n } // Load the key if the uri is different from previous one, or if the decrypt key has not yet been retrieved\n\n\n var uri = frag.decryptdata.uri;\n\n if (uri !== this.decrypturl || this.decryptkey === null) {\n var config = this.hls.config;\n\n if (loader) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"abort previous key loader for type:\" + type);\n loader.abort();\n }\n\n if (!uri) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('key uri is falsy');\n return;\n }\n\n var Loader = config.loader;\n var fragLoader = frag.loader = this.loaders[type] = new Loader(config);\n this.decrypturl = uri;\n this.decryptkey = null;\n var loaderContext = {\n url: uri,\n frag: frag,\n responseType: 'arraybuffer'\n }; // maxRetry is 0 so that instead of retrying the same key on the same variant multiple times,\n // key-loader will trigger an error and rely on stream-controller to handle retry logic.\n // this will also align retry logic with fragment-loader\n\n var loaderConfig = {\n timeout: config.fragLoadingTimeOut,\n maxRetry: 0,\n retryDelay: config.fragLoadingRetryDelay,\n maxRetryDelay: config.fragLoadingMaxRetryTimeout,\n highWaterMark: 0\n };\n var loaderCallbacks = {\n onSuccess: this.loadsuccess.bind(this),\n onError: this.loaderror.bind(this),\n onTimeout: this.loadtimeout.bind(this)\n };\n fragLoader.load(loaderContext, loaderConfig, loaderCallbacks);\n } else if (this.decryptkey) {\n // Return the key if it's already been loaded\n frag.decryptdata.key = this.decryptkey;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].KEY_LOADED, {\n frag: frag\n });\n }\n };\n\n _proto.loadsuccess = function loadsuccess(response, stats, context) {\n var frag = context.frag;\n\n if (!frag.decryptdata) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('after key load, decryptdata unset');\n return;\n }\n\n this.decryptkey = frag.decryptdata.key = new Uint8Array(response.data); // detach fragment loader on load success\n\n frag.loader = null;\n delete this.loaders[frag.type];\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].KEY_LOADED, {\n frag: frag\n });\n };\n\n _proto.loaderror = function loaderror(response, context) {\n var frag = context.frag;\n var loader = frag.loader;\n\n if (loader) {\n loader.abort();\n }\n\n delete this.loaders[frag.type];\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_LOAD_ERROR,\n fatal: false,\n frag: frag,\n response: response\n });\n };\n\n _proto.loadtimeout = function loadtimeout(stats, context) {\n var frag = context.frag;\n var loader = frag.loader;\n\n if (loader) {\n loader.abort();\n }\n\n delete this.loaders[frag.type];\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_LOAD_TIMEOUT,\n fatal: false,\n frag: frag\n });\n };\n\n return KeyLoader;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/loader/level-details.ts\":\n/*!*************************************!*\\\n !*** ./src/loader/level-details.ts ***!\n \\*************************************/\n/*! exports provided: LevelDetails */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LevelDetails\", function() { return LevelDetails; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar DEFAULT_TARGET_DURATION = 10;\nvar LevelDetails = /*#__PURE__*/function () {\n // Manifest reload synchronization\n function LevelDetails(baseUrl) {\n this.PTSKnown = false;\n this.alignedSliding = false;\n this.averagetargetduration = void 0;\n this.endCC = 0;\n this.endSN = 0;\n this.fragments = void 0;\n this.fragmentHint = void 0;\n this.partList = null;\n this.dateRanges = void 0;\n this.live = true;\n this.ageHeader = 0;\n this.advancedDateTime = void 0;\n this.updated = true;\n this.advanced = true;\n this.availabilityDelay = void 0;\n this.misses = 0;\n this.needSidxRanges = false;\n this.startCC = 0;\n this.startSN = 0;\n this.startTimeOffset = null;\n this.targetduration = 0;\n this.totalduration = 0;\n this.type = null;\n this.url = void 0;\n this.m3u8 = '';\n this.version = null;\n this.canBlockReload = false;\n this.canSkipUntil = 0;\n this.canSkipDateRanges = false;\n this.skippedSegments = 0;\n this.recentlyRemovedDateranges = void 0;\n this.partHoldBack = 0;\n this.holdBack = 0;\n this.partTarget = 0;\n this.preloadHint = void 0;\n this.renditionReports = void 0;\n this.tuneInGoal = 0;\n this.deltaUpdateFailed = void 0;\n this.driftStartTime = 0;\n this.driftEndTime = 0;\n this.driftStart = 0;\n this.driftEnd = 0;\n this.fragments = [];\n this.dateRanges = {};\n this.url = baseUrl;\n }\n\n var _proto = LevelDetails.prototype;\n\n _proto.reloaded = function reloaded(previous) {\n if (!previous) {\n this.advanced = true;\n this.updated = true;\n return;\n }\n\n var partSnDiff = this.lastPartSn - previous.lastPartSn;\n var partIndexDiff = this.lastPartIndex - previous.lastPartIndex;\n this.updated = this.endSN !== previous.endSN || !!partIndexDiff || !!partSnDiff;\n this.advanced = this.endSN > previous.endSN || partSnDiff > 0 || partSnDiff === 0 && partIndexDiff > 0;\n\n if (this.updated || this.advanced) {\n this.misses = Math.floor(previous.misses * 0.6);\n } else {\n this.misses = previous.misses + 1;\n }\n\n this.availabilityDelay = previous.availabilityDelay;\n };\n\n _createClass(LevelDetails, [{\n key: \"hasProgramDateTime\",\n get: function get() {\n if (this.fragments.length) {\n return Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.fragments[this.fragments.length - 1].programDateTime);\n }\n\n return false;\n }\n }, {\n key: \"levelTargetDuration\",\n get: function get() {\n return this.averagetargetduration || this.targetduration || DEFAULT_TARGET_DURATION;\n }\n }, {\n key: \"drift\",\n get: function get() {\n var runTime = this.driftEndTime - this.driftStartTime;\n\n if (runTime > 0) {\n var runDuration = this.driftEnd - this.driftStart;\n return runDuration * 1000 / runTime;\n }\n\n return 1;\n }\n }, {\n key: \"edge\",\n get: function get() {\n return this.partEnd || this.fragmentEnd;\n }\n }, {\n key: \"partEnd\",\n get: function get() {\n var _this$partList;\n\n if ((_this$partList = this.partList) !== null && _this$partList !== void 0 && _this$partList.length) {\n return this.partList[this.partList.length - 1].end;\n }\n\n return this.fragmentEnd;\n }\n }, {\n key: \"fragmentEnd\",\n get: function get() {\n var _this$fragments;\n\n if ((_this$fragments = this.fragments) !== null && _this$fragments !== void 0 && _this$fragments.length) {\n return this.fragments[this.fragments.length - 1].end;\n }\n\n return 0;\n }\n }, {\n key: \"age\",\n get: function get() {\n if (this.advancedDateTime) {\n return Math.max(Date.now() - this.advancedDateTime, 0) / 1000;\n }\n\n return 0;\n }\n }, {\n key: \"lastPartIndex\",\n get: function get() {\n var _this$partList2;\n\n if ((_this$partList2 = this.partList) !== null && _this$partList2 !== void 0 && _this$partList2.length) {\n return this.partList[this.partList.length - 1].index;\n }\n\n return -1;\n }\n }, {\n key: \"lastPartSn\",\n get: function get() {\n var _this$partList3;\n\n if ((_this$partList3 = this.partList) !== null && _this$partList3 !== void 0 && _this$partList3.length) {\n return this.partList[this.partList.length - 1].fragment.sn;\n }\n\n return this.endSN;\n }\n }]);\n\n return LevelDetails;\n}();\n\n/***/ }),\n\n/***/ \"./src/loader/level-key.ts\":\n/*!*********************************!*\\\n !*** ./src/loader/level-key.ts ***!\n \\*********************************/\n/*! exports provided: LevelKey */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LevelKey\", function() { return LevelKey; });\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! url-toolkit */ \"./node_modules/url-toolkit/src/url-toolkit.js\");\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_0__);\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\nvar LevelKey = /*#__PURE__*/function () {\n LevelKey.fromURL = function fromURL(baseUrl, relativeUrl) {\n return new LevelKey(baseUrl, relativeUrl);\n };\n\n LevelKey.fromURI = function fromURI(uri) {\n return new LevelKey(uri);\n };\n\n function LevelKey(absoluteOrBaseURI, relativeURL) {\n this._uri = null;\n this.method = null;\n this.keyFormat = null;\n this.keyFormatVersions = null;\n this.keyID = null;\n this.key = null;\n this.iv = null;\n\n if (relativeURL) {\n this._uri = Object(url_toolkit__WEBPACK_IMPORTED_MODULE_0__[\"buildAbsoluteURL\"])(absoluteOrBaseURI, relativeURL, {\n alwaysNormalize: true\n });\n } else {\n this._uri = absoluteOrBaseURI;\n }\n }\n\n _createClass(LevelKey, [{\n key: \"uri\",\n get: function get() {\n return this._uri;\n }\n }]);\n\n return LevelKey;\n}();\n\n/***/ }),\n\n/***/ \"./src/loader/load-stats.ts\":\n/*!**********************************!*\\\n !*** ./src/loader/load-stats.ts ***!\n \\**********************************/\n/*! exports provided: LoadStats */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoadStats\", function() { return LoadStats; });\nvar LoadStats = function LoadStats() {\n this.aborted = false;\n this.loaded = 0;\n this.retry = 0;\n this.total = 0;\n this.chunkCount = 0;\n this.bwEstimate = 0;\n this.loading = {\n start: 0,\n first: 0,\n end: 0\n };\n this.parsing = {\n start: 0,\n end: 0\n };\n this.buffering = {\n start: 0,\n first: 0,\n end: 0\n };\n};\n\n/***/ }),\n\n/***/ \"./src/loader/m3u8-parser.ts\":\n/*!***********************************!*\\\n !*** ./src/loader/m3u8-parser.ts ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return M3U8Parser; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! url-toolkit */ \"./node_modules/url-toolkit/src/url-toolkit.js\");\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _date_range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./date-range */ \"./src/loader/date-range.ts\");\n/* harmony import */ var _fragment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fragment */ \"./src/loader/fragment.ts\");\n/* harmony import */ var _level_details__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./level-details */ \"./src/loader/level-details.ts\");\n/* harmony import */ var _level_key__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./level-key */ \"./src/loader/level-key.ts\");\n/* harmony import */ var _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/attr-list */ \"./src/utils/attr-list.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _utils_codecs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/codecs */ \"./src/utils/codecs.ts\");\n\n\n\n\n\n\n\n\n\n\n\n\n// https://regex101.com is your friend\nvar MASTER_PLAYLIST_REGEX = /#EXT-X-STREAM-INF:([^\\r\\n]*)(?:[\\r\\n](?:#[^\\r\\n]*)?)*([^\\r\\n]+)|#EXT-X-SESSION-DATA:([^\\r\\n]*)[\\r\\n]+/g;\nvar MASTER_PLAYLIST_MEDIA_REGEX = /#EXT-X-MEDIA:(.*)/g;\nvar LEVEL_PLAYLIST_REGEX_FAST = new RegExp([/#EXTINF:\\s*(\\d*(?:\\.\\d+)?)(?:,(.*)\\s+)?/.source, // duration (#EXTINF:,), group 1 => duration, group 2 => title\n/(?!#) *(\\S[\\S ]*)/.source, // segment URI, group 3 => the URI (note newline is not eaten)\n/#EXT-X-BYTERANGE:*(.+)/.source, // next segment's byterange, group 4 => range spec (x@y)\n/#EXT-X-PROGRAM-DATE-TIME:(.+)/.source, // next segment's program date/time group 5 => the datetime spec\n/#.*/.source // All other non-segment oriented tags will match with all groups empty\n].join('|'), 'g');\nvar LEVEL_PLAYLIST_REGEX_SLOW = new RegExp([/#(EXTM3U)/.source, /#EXT-X-(DATERANGE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source, /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\\d+)/.source, /#EXT-X-(DISCONTINUITY|ENDLIST|GAP)/.source, /(#)([^:]*):(.*)/.source, /(#)(.*)(?:.*)\\r?\\n?/.source].join('|'));\nvar MP4_REGEX_SUFFIX = /\\.(mp4|m4s|m4v|m4a)$/i;\n\nfunction isMP4Url(url) {\n var _URLToolkit$parseURL$, _URLToolkit$parseURL;\n\n return MP4_REGEX_SUFFIX.test((_URLToolkit$parseURL$ = (_URLToolkit$parseURL = url_toolkit__WEBPACK_IMPORTED_MODULE_1__[\"parseURL\"](url)) === null || _URLToolkit$parseURL === void 0 ? void 0 : _URLToolkit$parseURL.path) != null ? _URLToolkit$parseURL$ : '');\n}\n\nvar M3U8Parser = /*#__PURE__*/function () {\n function M3U8Parser() {}\n\n M3U8Parser.findGroup = function findGroup(groups, mediaGroupId) {\n for (var i = 0; i < groups.length; i++) {\n var group = groups[i];\n\n if (group.id === mediaGroupId) {\n return group;\n }\n }\n };\n\n M3U8Parser.convertAVC1ToAVCOTI = function convertAVC1ToAVCOTI(codec) {\n // Convert avc1 codec string from RFC-4281 to RFC-6381 for MediaSource.isTypeSupported\n var avcdata = codec.split('.');\n\n if (avcdata.length > 2) {\n var result = avcdata.shift() + '.';\n result += parseInt(avcdata.shift()).toString(16);\n result += ('000' + parseInt(avcdata.shift()).toString(16)).slice(-4);\n return result;\n }\n\n return codec;\n };\n\n M3U8Parser.resolve = function resolve(url, baseUrl) {\n return url_toolkit__WEBPACK_IMPORTED_MODULE_1__[\"buildAbsoluteURL\"](baseUrl, url, {\n alwaysNormalize: true\n });\n };\n\n M3U8Parser.parseMasterPlaylist = function parseMasterPlaylist(string, baseurl) {\n var levels = [];\n var sessionData = {};\n var hasSessionData = false;\n MASTER_PLAYLIST_REGEX.lastIndex = 0;\n var result;\n\n while ((result = MASTER_PLAYLIST_REGEX.exec(string)) != null) {\n if (result[1]) {\n // '#EXT-X-STREAM-INF' is found, parse level tag in group 1\n var attrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](result[1]);\n var level = {\n attrs: attrs,\n bitrate: attrs.decimalInteger('AVERAGE-BANDWIDTH') || attrs.decimalInteger('BANDWIDTH'),\n name: attrs.NAME,\n url: M3U8Parser.resolve(result[2], baseurl)\n };\n var resolution = attrs.decimalResolution('RESOLUTION');\n\n if (resolution) {\n level.width = resolution.width;\n level.height = resolution.height;\n }\n\n setCodecs((attrs.CODECS || '').split(/[ ,]+/).filter(function (c) {\n return c;\n }), level);\n\n if (level.videoCodec && level.videoCodec.indexOf('avc1') !== -1) {\n level.videoCodec = M3U8Parser.convertAVC1ToAVCOTI(level.videoCodec);\n }\n\n levels.push(level);\n } else if (result[3]) {\n // '#EXT-X-SESSION-DATA' is found, parse session data in group 3\n var sessionAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](result[3]);\n\n if (sessionAttrs['DATA-ID']) {\n hasSessionData = true;\n sessionData[sessionAttrs['DATA-ID']] = sessionAttrs;\n }\n }\n }\n\n return {\n levels: levels,\n sessionData: hasSessionData ? sessionData : null\n };\n };\n\n M3U8Parser.parseMasterPlaylistMedia = function parseMasterPlaylistMedia(string, baseurl, type, groups) {\n if (groups === void 0) {\n groups = [];\n }\n\n var result;\n var medias = [];\n var id = 0;\n MASTER_PLAYLIST_MEDIA_REGEX.lastIndex = 0;\n\n while ((result = MASTER_PLAYLIST_MEDIA_REGEX.exec(string)) !== null) {\n var attrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](result[1]);\n\n if (attrs.TYPE === type) {\n var media = {\n attrs: attrs,\n bitrate: 0,\n id: id++,\n groupId: attrs['GROUP-ID'],\n instreamId: attrs['INSTREAM-ID'],\n name: attrs.NAME || attrs.LANGUAGE || '',\n type: type,\n default: attrs.bool('DEFAULT'),\n autoselect: attrs.bool('AUTOSELECT'),\n forced: attrs.bool('FORCED'),\n lang: attrs.LANGUAGE,\n url: attrs.URI ? M3U8Parser.resolve(attrs.URI, baseurl) : ''\n };\n\n if (groups.length) {\n // If there are audio or text groups signalled in the manifest, let's look for a matching codec string for this track\n // If we don't find the track signalled, lets use the first audio groups codec we have\n // Acting as a best guess\n var groupCodec = M3U8Parser.findGroup(groups, media.groupId) || groups[0];\n assignCodec(media, groupCodec, 'audioCodec');\n assignCodec(media, groupCodec, 'textCodec');\n }\n\n medias.push(media);\n }\n }\n\n return medias;\n };\n\n M3U8Parser.parseLevelPlaylist = function parseLevelPlaylist(string, baseurl, id, type, levelUrlId) {\n var level = new _level_details__WEBPACK_IMPORTED_MODULE_4__[\"LevelDetails\"](baseurl);\n var fragments = level.fragments; // The most recent init segment seen (applies to all subsequent segments)\n\n var currentInitSegment = null;\n var currentSN = 0;\n var currentPart = 0;\n var totalduration = 0;\n var discontinuityCounter = 0;\n var prevFrag = null;\n var frag = new _fragment__WEBPACK_IMPORTED_MODULE_3__[\"Fragment\"](type, baseurl);\n var result;\n var i;\n var levelkey;\n var firstPdtIndex = -1;\n var createNextFrag = false;\n LEVEL_PLAYLIST_REGEX_FAST.lastIndex = 0;\n level.m3u8 = string;\n\n while ((result = LEVEL_PLAYLIST_REGEX_FAST.exec(string)) !== null) {\n if (createNextFrag) {\n createNextFrag = false;\n frag = new _fragment__WEBPACK_IMPORTED_MODULE_3__[\"Fragment\"](type, baseurl); // setup the next fragment for part loading\n\n frag.start = totalduration;\n frag.sn = currentSN;\n frag.cc = discontinuityCounter;\n frag.level = id;\n\n if (currentInitSegment) {\n frag.initSegment = currentInitSegment;\n frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n currentInitSegment.rawProgramDateTime = null;\n }\n }\n\n var duration = result[1];\n\n if (duration) {\n // INF\n frag.duration = parseFloat(duration); // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n\n var title = (' ' + result[2]).slice(1);\n frag.title = title || null;\n frag.tagList.push(title ? ['INF', duration, title] : ['INF', duration]);\n } else if (result[3]) {\n // url\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.duration)) {\n frag.start = totalduration;\n\n if (levelkey) {\n frag.levelkey = levelkey;\n }\n\n frag.sn = currentSN;\n frag.level = id;\n frag.cc = discontinuityCounter;\n frag.urlId = levelUrlId;\n fragments.push(frag); // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n\n frag.relurl = (' ' + result[3]).slice(1);\n assignProgramDateTime(frag, prevFrag);\n prevFrag = frag;\n totalduration += frag.duration;\n currentSN++;\n currentPart = 0;\n createNextFrag = true;\n }\n } else if (result[4]) {\n // X-BYTERANGE\n var data = (' ' + result[4]).slice(1);\n\n if (prevFrag) {\n frag.setByteRange(data, prevFrag);\n } else {\n frag.setByteRange(data);\n }\n } else if (result[5]) {\n // PROGRAM-DATE-TIME\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n frag.rawProgramDateTime = (' ' + result[5]).slice(1);\n frag.tagList.push(['PROGRAM-DATE-TIME', frag.rawProgramDateTime]);\n\n if (firstPdtIndex === -1) {\n firstPdtIndex = fragments.length;\n }\n } else {\n result = result[0].match(LEVEL_PLAYLIST_REGEX_SLOW);\n\n if (!result) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn('No matches on slow regex match for level playlist!');\n continue;\n }\n\n for (i = 1; i < result.length; i++) {\n if (typeof result[i] !== 'undefined') {\n break;\n }\n } // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n\n\n var tag = (' ' + result[i]).slice(1);\n var value1 = (' ' + result[i + 1]).slice(1);\n var value2 = result[i + 2] ? (' ' + result[i + 2]).slice(1) : '';\n\n switch (tag) {\n case 'PLAYLIST-TYPE':\n level.type = value1.toUpperCase();\n break;\n\n case 'MEDIA-SEQUENCE':\n currentSN = level.startSN = parseInt(value1);\n break;\n\n case 'SKIP':\n {\n var skipAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n var skippedSegments = skipAttrs.decimalInteger('SKIPPED-SEGMENTS');\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(skippedSegments)) {\n level.skippedSegments = skippedSegments; // This will result in fragments[] containing undefined values, which we will fill in with `mergeDetails`\n\n for (var _i = skippedSegments; _i--;) {\n fragments.unshift(null);\n }\n\n currentSN += skippedSegments;\n }\n\n var recentlyRemovedDateranges = skipAttrs.enumeratedString('RECENTLY-REMOVED-DATERANGES');\n\n if (recentlyRemovedDateranges) {\n level.recentlyRemovedDateranges = recentlyRemovedDateranges.split('\\t');\n }\n\n break;\n }\n\n case 'TARGETDURATION':\n level.targetduration = parseFloat(value1);\n break;\n\n case 'VERSION':\n level.version = parseInt(value1);\n break;\n\n case 'EXTM3U':\n break;\n\n case 'ENDLIST':\n level.live = false;\n break;\n\n case '#':\n if (value1 || value2) {\n frag.tagList.push(value2 ? [value1, value2] : [value1]);\n }\n\n break;\n\n case 'DISCONTINUITY':\n discontinuityCounter++;\n frag.tagList.push(['DIS']);\n break;\n\n case 'GAP':\n frag.tagList.push([tag]);\n break;\n\n case 'BITRATE':\n frag.tagList.push([tag, value1]);\n break;\n\n case 'DATERANGE':\n {\n var dateRangeAttr = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n var dateRange = new _date_range__WEBPACK_IMPORTED_MODULE_2__[\"DateRange\"](dateRangeAttr, level.dateRanges[dateRangeAttr.ID]);\n\n if (dateRange.isValid || level.skippedSegments) {\n level.dateRanges[dateRange.id] = dateRange;\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn(\"Ignoring invalid DATERANGE tag: \\\"\" + value1 + \"\\\"\");\n } // Add to fragment tag list for backwards compatibility (< v1.2.0)\n\n\n frag.tagList.push(['EXT-X-DATERANGE', value1]);\n break;\n }\n\n case 'DISCONTINUITY-SEQUENCE':\n discontinuityCounter = parseInt(value1);\n break;\n\n case 'KEY':\n {\n var _keyAttrs$enumeratedS;\n\n // https://tools.ietf.org/html/rfc8216#section-4.3.2.4\n var keyAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n var decryptmethod = keyAttrs.enumeratedString('METHOD');\n var decrypturi = keyAttrs.URI;\n var decryptiv = keyAttrs.hexadecimalInteger('IV');\n var decryptkeyformatversions = keyAttrs.enumeratedString('KEYFORMATVERSIONS');\n var decryptkeyid = keyAttrs.enumeratedString('KEYID'); // From RFC: This attribute is OPTIONAL; its absence indicates an implicit value of \"identity\".\n\n var decryptkeyformat = (_keyAttrs$enumeratedS = keyAttrs.enumeratedString('KEYFORMAT')) != null ? _keyAttrs$enumeratedS : 'identity';\n var unsupportedKnownKeyformatsInManifest = ['com.apple.streamingkeydelivery', 'com.microsoft.playready', 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed', // widevine (v2)\n 'com.widevine' // earlier widevine (v1)\n ];\n\n if (unsupportedKnownKeyformatsInManifest.indexOf(decryptkeyformat) > -1) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn(\"Keyformat \" + decryptkeyformat + \" is not supported from the manifest\");\n continue;\n } else if (decryptkeyformat !== 'identity') {\n // We are supposed to skip keys we don't understand.\n // As we currently only officially support identity keys\n // from the manifest we shouldn't save any other key.\n continue;\n } // TODO: multiple keys can be defined on a fragment, and we need to support this\n // for clients that support both playready and widevine\n\n\n if (decryptmethod) {\n // TODO: need to determine if the level key is actually a relative URL\n // if it isn't, then we should instead construct the LevelKey using fromURI.\n levelkey = _level_key__WEBPACK_IMPORTED_MODULE_5__[\"LevelKey\"].fromURL(baseurl, decrypturi);\n\n if (decrypturi && ['AES-128', 'SAMPLE-AES', 'SAMPLE-AES-CENC'].indexOf(decryptmethod) >= 0) {\n levelkey.method = decryptmethod;\n levelkey.keyFormat = decryptkeyformat;\n\n if (decryptkeyid) {\n levelkey.keyID = decryptkeyid;\n }\n\n if (decryptkeyformatversions) {\n levelkey.keyFormatVersions = decryptkeyformatversions;\n } // Initialization Vector (IV)\n\n\n levelkey.iv = decryptiv;\n }\n }\n\n break;\n }\n\n case 'START':\n {\n var startAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n var startTimeOffset = startAttrs.decimalFloatingPoint('TIME-OFFSET'); // TIME-OFFSET can be 0\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(startTimeOffset)) {\n level.startTimeOffset = startTimeOffset;\n }\n\n break;\n }\n\n case 'MAP':\n {\n var mapAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n\n if (frag.duration) {\n // Initial segment tag is after segment duration tag.\n // #EXTINF: 6.0\n // #EXT-X-MAP:URI=\"init.mp4\n var init = new _fragment__WEBPACK_IMPORTED_MODULE_3__[\"Fragment\"](type, baseurl);\n setInitSegment(init, mapAttrs, id, levelkey);\n currentInitSegment = init;\n frag.initSegment = currentInitSegment;\n\n if (currentInitSegment.rawProgramDateTime && !frag.rawProgramDateTime) {\n frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n }\n } else {\n // Initial segment tag is before segment duration tag\n setInitSegment(frag, mapAttrs, id, levelkey);\n currentInitSegment = frag;\n createNextFrag = true;\n }\n\n break;\n }\n\n case 'SERVER-CONTROL':\n {\n var serverControlAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n level.canBlockReload = serverControlAttrs.bool('CAN-BLOCK-RELOAD');\n level.canSkipUntil = serverControlAttrs.optionalFloat('CAN-SKIP-UNTIL', 0);\n level.canSkipDateRanges = level.canSkipUntil > 0 && serverControlAttrs.bool('CAN-SKIP-DATERANGES');\n level.partHoldBack = serverControlAttrs.optionalFloat('PART-HOLD-BACK', 0);\n level.holdBack = serverControlAttrs.optionalFloat('HOLD-BACK', 0);\n break;\n }\n\n case 'PART-INF':\n {\n var partInfAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n level.partTarget = partInfAttrs.decimalFloatingPoint('PART-TARGET');\n break;\n }\n\n case 'PART':\n {\n var partList = level.partList;\n\n if (!partList) {\n partList = level.partList = [];\n }\n\n var previousFragmentPart = currentPart > 0 ? partList[partList.length - 1] : undefined;\n var index = currentPart++;\n var part = new _fragment__WEBPACK_IMPORTED_MODULE_3__[\"Part\"](new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1), frag, baseurl, index, previousFragmentPart);\n partList.push(part);\n frag.duration += part.duration;\n break;\n }\n\n case 'PRELOAD-HINT':\n {\n var preloadHintAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n level.preloadHint = preloadHintAttrs;\n break;\n }\n\n case 'RENDITION-REPORT':\n {\n var renditionReportAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n level.renditionReports = level.renditionReports || [];\n level.renditionReports.push(renditionReportAttrs);\n break;\n }\n\n default:\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn(\"line parsed but not handled: \" + result);\n break;\n }\n }\n }\n\n if (prevFrag && !prevFrag.relurl) {\n fragments.pop();\n totalduration -= prevFrag.duration;\n\n if (level.partList) {\n level.fragmentHint = prevFrag;\n }\n } else if (level.partList) {\n assignProgramDateTime(frag, prevFrag);\n frag.cc = discontinuityCounter;\n level.fragmentHint = frag;\n }\n\n var fragmentLength = fragments.length;\n var firstFragment = fragments[0];\n var lastFragment = fragments[fragmentLength - 1];\n totalduration += level.skippedSegments * level.targetduration;\n\n if (totalduration > 0 && fragmentLength && lastFragment) {\n level.averagetargetduration = totalduration / fragmentLength;\n var lastSn = lastFragment.sn;\n level.endSN = lastSn !== 'initSegment' ? lastSn : 0;\n\n if (firstFragment) {\n level.startCC = firstFragment.cc;\n\n if (!firstFragment.initSegment) {\n // this is a bit lurky but HLS really has no other way to tell us\n // if the fragments are TS or MP4, except if we download them :/\n // but this is to be able to handle SIDX.\n if (level.fragments.every(function (frag) {\n return frag.relurl && isMP4Url(frag.relurl);\n })) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn('MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX');\n frag = new _fragment__WEBPACK_IMPORTED_MODULE_3__[\"Fragment\"](type, baseurl);\n frag.relurl = lastFragment.relurl;\n frag.level = id;\n frag.sn = 'initSegment';\n firstFragment.initSegment = frag;\n level.needSidxRanges = true;\n }\n }\n }\n } else {\n level.endSN = 0;\n level.startCC = 0;\n }\n\n if (level.fragmentHint) {\n totalduration += level.fragmentHint.duration;\n }\n\n level.totalduration = totalduration;\n level.endCC = discontinuityCounter;\n /**\n * Backfill any missing PDT values\n * \"If the first EXT-X-PROGRAM-DATE-TIME tag in a Playlist appears after\n * one or more Media Segment URIs, the client SHOULD extrapolate\n * backward from that tag (using EXTINF durations and/or media\n * timestamps) to associate dates with those segments.\"\n * We have already extrapolated forward, but all fragments up to the first instance of PDT do not have their PDTs\n * computed.\n */\n\n if (firstPdtIndex > 0) {\n backfillProgramDateTimes(fragments, firstPdtIndex);\n }\n\n return level;\n };\n\n return M3U8Parser;\n}();\n\n\n\nfunction setCodecs(codecs, level) {\n ['video', 'audio', 'text'].forEach(function (type) {\n var filtered = codecs.filter(function (codec) {\n return Object(_utils_codecs__WEBPACK_IMPORTED_MODULE_8__[\"isCodecType\"])(codec, type);\n });\n\n if (filtered.length) {\n var preferred = filtered.filter(function (codec) {\n return codec.lastIndexOf('avc1', 0) === 0 || codec.lastIndexOf('mp4a', 0) === 0;\n });\n level[type + \"Codec\"] = preferred.length > 0 ? preferred[0] : filtered[0]; // remove from list\n\n codecs = codecs.filter(function (codec) {\n return filtered.indexOf(codec) === -1;\n });\n }\n });\n level.unknownCodecs = codecs;\n}\n\nfunction assignCodec(media, groupItem, codecProperty) {\n var codecValue = groupItem[codecProperty];\n\n if (codecValue) {\n media[codecProperty] = codecValue;\n }\n}\n\nfunction backfillProgramDateTimes(fragments, firstPdtIndex) {\n var fragPrev = fragments[firstPdtIndex];\n\n for (var i = firstPdtIndex; i--;) {\n var frag = fragments[i]; // Exit on delta-playlist skipped segments\n\n if (!frag) {\n return;\n }\n\n frag.programDateTime = fragPrev.programDateTime - frag.duration * 1000;\n fragPrev = frag;\n }\n}\n\nfunction assignProgramDateTime(frag, prevFrag) {\n if (frag.rawProgramDateTime) {\n frag.programDateTime = Date.parse(frag.rawProgramDateTime);\n } else if (prevFrag !== null && prevFrag !== void 0 && prevFrag.programDateTime) {\n frag.programDateTime = prevFrag.endProgramDateTime;\n }\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.programDateTime)) {\n frag.programDateTime = null;\n frag.rawProgramDateTime = null;\n }\n}\n\nfunction setInitSegment(frag, mapAttrs, id, levelkey) {\n frag.relurl = mapAttrs.URI;\n\n if (mapAttrs.BYTERANGE) {\n frag.setByteRange(mapAttrs.BYTERANGE);\n }\n\n frag.level = id;\n frag.sn = 'initSegment';\n\n if (levelkey) {\n frag.levelkey = levelkey;\n }\n\n frag.initSegment = null;\n}\n\n/***/ }),\n\n/***/ \"./src/loader/playlist-loader.ts\":\n/*!***************************************!*\\\n !*** ./src/loader/playlist-loader.ts ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./m3u8-parser */ \"./src/loader/m3u8-parser.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _utils_attr_list__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/attr-list */ \"./src/utils/attr-list.ts\");\n\n\n\n/**\n * PlaylistLoader - delegate for media manifest/playlist loading tasks. Takes care of parsing media to internal data-models.\n *\n * Once loaded, dispatches events with parsed data-models of manifest/levels/audio/subtitle tracks.\n *\n * Uses loader(s) set in config to do actual internal loading of resource tasks.\n *\n * @module\n *\n */\n\n\n\n\n\n\n\n\nfunction mapContextToLevelType(context) {\n var type = context.type;\n\n switch (type) {\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK:\n return _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK:\n return _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].SUBTITLE;\n\n default:\n return _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN;\n }\n}\n\nfunction getResponseUrl(response, context) {\n var url = response.url; // responseURL not supported on some browsers (it is used to detect URL redirection)\n // data-uri mode also not supported (but no need to detect redirection)\n\n if (url === undefined || url.indexOf('data:') === 0) {\n // fallback to initial URL\n url = context.url;\n }\n\n return url;\n}\n\nvar PlaylistLoader = /*#__PURE__*/function () {\n function PlaylistLoader(hls) {\n this.hls = void 0;\n this.loaders = Object.create(null);\n this.hls = hls;\n this.registerListeners();\n }\n\n var _proto = PlaylistLoader.prototype;\n\n _proto.startLoad = function startLoad(startPosition) {};\n\n _proto.stopLoad = function stopLoad() {\n this.destroyInternalLoaders();\n };\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n }\n /**\n * Returns defaults or configured loader-type overloads (pLoader and loader config params)\n */\n ;\n\n _proto.createInternalLoader = function createInternalLoader(context) {\n var config = this.hls.config;\n var PLoader = config.pLoader;\n var Loader = config.loader;\n var InternalLoader = PLoader || Loader;\n var loader = new InternalLoader(config);\n context.loader = loader;\n this.loaders[context.type] = loader;\n return loader;\n };\n\n _proto.getInternalLoader = function getInternalLoader(context) {\n return this.loaders[context.type];\n };\n\n _proto.resetInternalLoader = function resetInternalLoader(contextType) {\n if (this.loaders[contextType]) {\n delete this.loaders[contextType];\n }\n }\n /**\n * Call `destroy` on all internal loader instances mapped (one per context type)\n */\n ;\n\n _proto.destroyInternalLoaders = function destroyInternalLoaders() {\n for (var contextType in this.loaders) {\n var loader = this.loaders[contextType];\n\n if (loader) {\n loader.destroy();\n }\n\n this.resetInternalLoader(contextType);\n }\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.destroyInternalLoaders();\n };\n\n _proto.onManifestLoading = function onManifestLoading(event, data) {\n var url = data.url;\n this.load({\n id: null,\n groupId: null,\n level: 0,\n responseType: 'text',\n type: _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST,\n url: url,\n deliveryDirectives: null\n });\n };\n\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n var id = data.id,\n level = data.level,\n url = data.url,\n deliveryDirectives = data.deliveryDirectives;\n this.load({\n id: id,\n groupId: null,\n level: level,\n responseType: 'text',\n type: _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL,\n url: url,\n deliveryDirectives: deliveryDirectives\n });\n };\n\n _proto.onAudioTrackLoading = function onAudioTrackLoading(event, data) {\n var id = data.id,\n groupId = data.groupId,\n url = data.url,\n deliveryDirectives = data.deliveryDirectives;\n this.load({\n id: id,\n groupId: groupId,\n level: null,\n responseType: 'text',\n type: _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK,\n url: url,\n deliveryDirectives: deliveryDirectives\n });\n };\n\n _proto.onSubtitleTrackLoading = function onSubtitleTrackLoading(event, data) {\n var id = data.id,\n groupId = data.groupId,\n url = data.url,\n deliveryDirectives = data.deliveryDirectives;\n this.load({\n id: id,\n groupId: groupId,\n level: null,\n responseType: 'text',\n type: _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK,\n url: url,\n deliveryDirectives: deliveryDirectives\n });\n };\n\n _proto.load = function load(context) {\n var _context$deliveryDire;\n\n var config = this.hls.config; // logger.debug(`[playlist-loader]: Loading playlist of type ${context.type}, level: ${context.level}, id: ${context.id}`);\n // Check if a loader for this context already exists\n\n var loader = this.getInternalLoader(context);\n\n if (loader) {\n var loaderContext = loader.context;\n\n if (loaderContext && loaderContext.url === context.url) {\n // same URL can't overlap\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].trace('[playlist-loader]: playlist request ongoing');\n return;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log(\"[playlist-loader]: aborting previous loader for type: \" + context.type);\n loader.abort();\n }\n\n var maxRetry;\n var timeout;\n var retryDelay;\n var maxRetryDelay; // apply different configs for retries depending on\n // context (manifest, level, audio/subs playlist)\n\n switch (context.type) {\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST:\n maxRetry = config.manifestLoadingMaxRetry;\n timeout = config.manifestLoadingTimeOut;\n retryDelay = config.manifestLoadingRetryDelay;\n maxRetryDelay = config.manifestLoadingMaxRetryTimeout;\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL:\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK:\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK:\n // Manage retries in Level/Track Controller\n maxRetry = 0;\n timeout = config.levelLoadingTimeOut;\n break;\n\n default:\n maxRetry = config.levelLoadingMaxRetry;\n timeout = config.levelLoadingTimeOut;\n retryDelay = config.levelLoadingRetryDelay;\n maxRetryDelay = config.levelLoadingMaxRetryTimeout;\n break;\n }\n\n loader = this.createInternalLoader(context); // Override level/track timeout for LL-HLS requests\n // (the default of 10000ms is counter productive to blocking playlist reload requests)\n\n if ((_context$deliveryDire = context.deliveryDirectives) !== null && _context$deliveryDire !== void 0 && _context$deliveryDire.part) {\n var levelDetails;\n\n if (context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL && context.level !== null) {\n levelDetails = this.hls.levels[context.level].details;\n } else if (context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK && context.id !== null) {\n levelDetails = this.hls.audioTracks[context.id].details;\n } else if (context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK && context.id !== null) {\n levelDetails = this.hls.subtitleTracks[context.id].details;\n }\n\n if (levelDetails) {\n var partTarget = levelDetails.partTarget;\n var targetDuration = levelDetails.targetduration;\n\n if (partTarget && targetDuration) {\n timeout = Math.min(Math.max(partTarget * 3, targetDuration * 0.8) * 1000, timeout);\n }\n }\n }\n\n var loaderConfig = {\n timeout: timeout,\n maxRetry: maxRetry,\n retryDelay: retryDelay,\n maxRetryDelay: maxRetryDelay,\n highWaterMark: 0\n };\n var loaderCallbacks = {\n onSuccess: this.loadsuccess.bind(this),\n onError: this.loaderror.bind(this),\n onTimeout: this.loadtimeout.bind(this)\n }; // logger.debug(`[playlist-loader]: Calling internal loader delegate for URL: ${context.url}`);\n\n loader.load(context, loaderConfig, loaderCallbacks);\n };\n\n _proto.loadsuccess = function loadsuccess(response, stats, context, networkDetails) {\n if (networkDetails === void 0) {\n networkDetails = null;\n }\n\n if (context.isSidxRequest) {\n this.handleSidxRequest(response, context);\n this.handlePlaylistLoaded(response, stats, context, networkDetails);\n return;\n }\n\n this.resetInternalLoader(context.type);\n var string = response.data; // Validate if it is an M3U8 at all\n\n if (string.indexOf('#EXTM3U') !== 0) {\n this.handleManifestParsingError(response, context, 'no EXTM3U delimiter', networkDetails);\n return;\n }\n\n stats.parsing.start = performance.now(); // Check if chunk-list or master. handle empty chunk list case (first EXTINF not signaled, but TARGETDURATION present)\n\n if (string.indexOf('#EXTINF:') > 0 || string.indexOf('#EXT-X-TARGETDURATION:') > 0) {\n this.handleTrackOrLevelPlaylist(response, stats, context, networkDetails);\n } else {\n this.handleMasterPlaylist(response, stats, context, networkDetails);\n }\n };\n\n _proto.loaderror = function loaderror(response, context, networkDetails) {\n if (networkDetails === void 0) {\n networkDetails = null;\n }\n\n this.handleNetworkError(context, networkDetails, false, response);\n };\n\n _proto.loadtimeout = function loadtimeout(stats, context, networkDetails) {\n if (networkDetails === void 0) {\n networkDetails = null;\n }\n\n this.handleNetworkError(context, networkDetails, true);\n };\n\n _proto.handleMasterPlaylist = function handleMasterPlaylist(response, stats, context, networkDetails) {\n var hls = this.hls;\n var string = response.data;\n var url = getResponseUrl(response, context);\n\n var _M3U8Parser$parseMast = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseMasterPlaylist(string, url),\n levels = _M3U8Parser$parseMast.levels,\n sessionData = _M3U8Parser$parseMast.sessionData;\n\n if (!levels.length) {\n this.handleManifestParsingError(response, context, 'no level found in manifest', networkDetails);\n return;\n } // multi level playlist, parse level info\n\n\n var audioGroups = levels.map(function (level) {\n return {\n id: level.attrs.AUDIO,\n audioCodec: level.audioCodec\n };\n });\n var subtitleGroups = levels.map(function (level) {\n return {\n id: level.attrs.SUBTITLES,\n textCodec: level.textCodec\n };\n });\n var audioTracks = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseMasterPlaylistMedia(string, url, 'AUDIO', audioGroups);\n var subtitles = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseMasterPlaylistMedia(string, url, 'SUBTITLES', subtitleGroups);\n var captions = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseMasterPlaylistMedia(string, url, 'CLOSED-CAPTIONS');\n\n if (audioTracks.length) {\n // check if we have found an audio track embedded in main playlist (audio track without URI attribute)\n var embeddedAudioFound = audioTracks.some(function (audioTrack) {\n return !audioTrack.url;\n }); // if no embedded audio track defined, but audio codec signaled in quality level,\n // we need to signal this main audio track this could happen with playlists with\n // alt audio rendition in which quality levels (main)\n // contains both audio+video. but with mixed audio track not signaled\n\n if (!embeddedAudioFound && levels[0].audioCodec && !levels[0].attrs.AUDIO) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log('[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one');\n audioTracks.unshift({\n type: 'main',\n name: 'main',\n default: false,\n autoselect: false,\n forced: false,\n id: -1,\n attrs: new _utils_attr_list__WEBPACK_IMPORTED_MODULE_7__[\"AttrList\"]({}),\n bitrate: 0,\n url: ''\n });\n }\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, {\n levels: levels,\n audioTracks: audioTracks,\n subtitles: subtitles,\n captions: captions,\n url: url,\n stats: stats,\n networkDetails: networkDetails,\n sessionData: sessionData\n });\n };\n\n _proto.handleTrackOrLevelPlaylist = function handleTrackOrLevelPlaylist(response, stats, context, networkDetails) {\n var hls = this.hls;\n var id = context.id,\n level = context.level,\n type = context.type;\n var url = getResponseUrl(response, context);\n var levelUrlId = Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(id) ? id : 0;\n var levelId = Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(level) ? level : levelUrlId;\n var levelType = mapContextToLevelType(context);\n var levelDetails = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseLevelPlaylist(response.data, url, levelId, levelType, levelUrlId);\n\n if (!levelDetails.fragments.length) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_EMPTY_ERROR,\n fatal: false,\n url: url,\n reason: 'no fragments found in level',\n level: typeof context.level === 'number' ? context.level : undefined\n });\n return;\n } // We have done our first request (Manifest-type) and receive\n // not a master playlist but a chunk-list (track/level)\n // We fire the manifest-loaded event anyway with the parsed level-details\n // by creating a single-level structure for it.\n\n\n if (type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST) {\n var singleLevel = {\n attrs: new _utils_attr_list__WEBPACK_IMPORTED_MODULE_7__[\"AttrList\"]({}),\n bitrate: 0,\n details: levelDetails,\n name: '',\n url: url\n };\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, {\n levels: [singleLevel],\n audioTracks: [],\n url: url,\n stats: stats,\n networkDetails: networkDetails,\n sessionData: null\n });\n } // save parsing time\n\n\n stats.parsing.end = performance.now(); // in case we need SIDX ranges\n // return early after calling load for\n // the SIDX box.\n\n if (levelDetails.needSidxRanges) {\n var _levelDetails$fragmen;\n\n var sidxUrl = (_levelDetails$fragmen = levelDetails.fragments[0].initSegment) === null || _levelDetails$fragmen === void 0 ? void 0 : _levelDetails$fragmen.url;\n this.load({\n url: sidxUrl,\n isSidxRequest: true,\n type: type,\n level: level,\n levelDetails: levelDetails,\n id: id,\n groupId: null,\n rangeStart: 0,\n rangeEnd: 2048,\n responseType: 'arraybuffer',\n deliveryDirectives: null\n });\n return;\n } // extend the context with the new levelDetails property\n\n\n context.levelDetails = levelDetails;\n this.handlePlaylistLoaded(response, stats, context, networkDetails);\n };\n\n _proto.handleSidxRequest = function handleSidxRequest(response, context) {\n var data = new Uint8Array(response.data);\n var sidxBox = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"findBox\"])(data, ['sidx'])[0]; // if provided fragment does not contain sidx, early return\n\n if (!sidxBox) {\n return;\n }\n\n var sidxInfo = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"parseSegmentIndex\"])(sidxBox);\n\n if (!sidxInfo) {\n return;\n }\n\n var sidxReferences = sidxInfo.references;\n var levelDetails = context.levelDetails;\n sidxReferences.forEach(function (segmentRef, index) {\n var segRefInfo = segmentRef.info;\n var frag = levelDetails.fragments[index];\n\n if (frag.byteRange.length === 0) {\n frag.setByteRange(String(1 + segRefInfo.end - segRefInfo.start) + '@' + String(segRefInfo.start));\n }\n\n if (frag.initSegment) {\n var moovBox = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"findBox\"])(data, ['moov'])[0];\n var moovEndOffset = moovBox ? moovBox.length : null;\n frag.initSegment.setByteRange(String(moovEndOffset) + '@0');\n }\n });\n };\n\n _proto.handleManifestParsingError = function handleManifestParsingError(response, context, reason, networkDetails) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].MANIFEST_PARSING_ERROR,\n fatal: context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST,\n url: response.url,\n reason: reason,\n response: response,\n context: context,\n networkDetails: networkDetails\n });\n };\n\n _proto.handleNetworkError = function handleNetworkError(context, networkDetails, timeout, response) {\n if (timeout === void 0) {\n timeout = false;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"[playlist-loader]: A network \" + (timeout ? 'timeout' : 'error') + \" occurred while loading \" + context.type + \" level: \" + context.level + \" id: \" + context.id + \" group-id: \\\"\" + context.groupId + \"\\\"\");\n var details = _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].UNKNOWN;\n var fatal = false;\n var loader = this.getInternalLoader(context);\n\n switch (context.type) {\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST:\n details = timeout ? _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].MANIFEST_LOAD_TIMEOUT : _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].MANIFEST_LOAD_ERROR;\n fatal = true;\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL:\n details = timeout ? _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_LOAD_TIMEOUT : _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_LOAD_ERROR;\n fatal = false;\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK:\n details = timeout ? _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_TIMEOUT : _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_ERROR;\n fatal = false;\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK:\n details = timeout ? _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].SUBTITLE_TRACK_LOAD_TIMEOUT : _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].SUBTITLE_LOAD_ERROR;\n fatal = false;\n break;\n }\n\n if (loader) {\n this.resetInternalLoader(context.type);\n }\n\n var errorData = {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].NETWORK_ERROR,\n details: details,\n fatal: fatal,\n url: context.url,\n loader: loader,\n context: context,\n networkDetails: networkDetails\n };\n\n if (response) {\n errorData.response = response;\n }\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, errorData);\n };\n\n _proto.handlePlaylistLoaded = function handlePlaylistLoaded(response, stats, context, networkDetails) {\n var type = context.type,\n level = context.level,\n id = context.id,\n groupId = context.groupId,\n loader = context.loader,\n levelDetails = context.levelDetails,\n deliveryDirectives = context.deliveryDirectives;\n\n if (!(levelDetails !== null && levelDetails !== void 0 && levelDetails.targetduration)) {\n this.handleManifestParsingError(response, context, 'invalid target duration', networkDetails);\n return;\n }\n\n if (!loader) {\n return;\n }\n\n if (levelDetails.live) {\n if (loader.getCacheAge) {\n levelDetails.ageHeader = loader.getCacheAge() || 0;\n }\n\n if (!loader.getCacheAge || isNaN(levelDetails.ageHeader)) {\n levelDetails.ageHeader = 0;\n }\n }\n\n switch (type) {\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST:\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL:\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADED, {\n details: levelDetails,\n level: level || 0,\n id: id || 0,\n stats: stats,\n networkDetails: networkDetails,\n deliveryDirectives: deliveryDirectives\n });\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK:\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_LOADED, {\n details: levelDetails,\n id: id || 0,\n groupId: groupId || '',\n stats: stats,\n networkDetails: networkDetails,\n deliveryDirectives: deliveryDirectives\n });\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK:\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACK_LOADED, {\n details: levelDetails,\n id: id || 0,\n groupId: groupId || '',\n stats: stats,\n networkDetails: networkDetails,\n deliveryDirectives: deliveryDirectives\n });\n break;\n }\n };\n\n return PlaylistLoader;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (PlaylistLoader);\n\n/***/ }),\n\n/***/ \"./src/polyfills/number.ts\":\n/*!*********************************!*\\\n !*** ./src/polyfills/number.ts ***!\n \\*********************************/\n/*! exports provided: isFiniteNumber, MAX_SAFE_INTEGER */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFiniteNumber\", function() { return isFiniteNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MAX_SAFE_INTEGER\", function() { return MAX_SAFE_INTEGER; });\nvar isFiniteNumber = Number.isFinite || function (value) {\n return typeof value === 'number' && isFinite(value);\n};\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\n/***/ }),\n\n/***/ \"./src/remux/aac-helper.ts\":\n/*!*********************************!*\\\n !*** ./src/remux/aac-helper.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * AAC helper\n */\nvar AAC = /*#__PURE__*/function () {\n function AAC() {}\n\n AAC.getSilentFrame = function getSilentFrame(codec, channelCount) {\n switch (codec) {\n case 'mp4a.40.2':\n if (channelCount === 1) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);\n } else if (channelCount === 2) {\n return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);\n } else if (channelCount === 3) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]);\n } else if (channelCount === 4) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]);\n } else if (channelCount === 5) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]);\n } else if (channelCount === 6) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]);\n }\n\n break;\n // handle HE-AAC below (mp4a.40.5 / mp4a.40.29)\n\n default:\n if (channelCount === 1) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0:d=0.05\" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 2) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 3) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n }\n\n break;\n }\n\n return undefined;\n };\n\n return AAC;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AAC);\n\n/***/ }),\n\n/***/ \"./src/remux/mp4-generator.ts\":\n/*!************************************!*\\\n !*** ./src/remux/mp4-generator.ts ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Generate MP4 Box\n */\nvar UINT32_MAX = Math.pow(2, 32) - 1;\n\nvar MP4 = /*#__PURE__*/function () {\n function MP4() {}\n\n MP4.init = function init() {\n MP4.types = {\n avc1: [],\n // codingname\n avcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n '.mp3': [],\n mvex: [],\n mvhd: [],\n pasp: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n var i;\n\n for (i in MP4.types) {\n if (MP4.types.hasOwnProperty(i)) {\n MP4.types[i] = [i.charCodeAt(0), i.charCodeAt(1), i.charCodeAt(2), i.charCodeAt(3)];\n }\n }\n\n var videoHdlr = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x56, 0x69, 0x64, 0x65, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler'\n ]);\n var audioHdlr = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6f, 0x75, 0x6e, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler'\n ]);\n MP4.HDLR_TYPES = {\n video: videoHdlr,\n audio: audioHdlr\n };\n var dref = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0c, // entry_size\n 0x75, 0x72, 0x6c, 0x20, // 'url' type\n 0x00, // version 0\n 0x00, 0x00, 0x01 // entry_flags\n ]);\n var stco = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n MP4.STTS = MP4.STSC = MP4.STCO = stco;\n MP4.STSZ = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n MP4.VMHD = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x01, // flags\n 0x00, 0x00, // graphicsmode\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // opcolor\n ]);\n MP4.SMHD = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, // balance\n 0x00, 0x00 // reserved\n ]);\n MP4.STSD = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01]); // entry_count\n\n var majorBrand = new Uint8Array([105, 115, 111, 109]); // isom\n\n var avc1Brand = new Uint8Array([97, 118, 99, 49]); // avc1\n\n var minorVersion = new Uint8Array([0, 0, 0, 1]);\n MP4.FTYP = MP4.box(MP4.types.ftyp, majorBrand, minorVersion, majorBrand, avc1Brand);\n MP4.DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, dref));\n };\n\n MP4.box = function box(type) {\n var size = 8;\n\n for (var _len = arguments.length, payload = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n payload[_key - 1] = arguments[_key];\n }\n\n var i = payload.length;\n var len = i; // calculate the total size we need to allocate\n\n while (i--) {\n size += payload[i].byteLength;\n }\n\n var result = new Uint8Array(size);\n result[0] = size >> 24 & 0xff;\n result[1] = size >> 16 & 0xff;\n result[2] = size >> 8 & 0xff;\n result[3] = size & 0xff;\n result.set(type, 4); // copy the payload into the result\n\n for (i = 0, size = 8; i < len; i++) {\n // copy payload[i] array @ offset size\n result.set(payload[i], size);\n size += payload[i].byteLength;\n }\n\n return result;\n };\n\n MP4.hdlr = function hdlr(type) {\n return MP4.box(MP4.types.hdlr, MP4.HDLR_TYPES[type]);\n };\n\n MP4.mdat = function mdat(data) {\n return MP4.box(MP4.types.mdat, data);\n };\n\n MP4.mdhd = function mdhd(timescale, duration) {\n duration *= timescale;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n return MP4.box(MP4.types.mdhd, new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n timescale >> 24 & 0xff, timescale >> 16 & 0xff, timescale >> 8 & 0xff, timescale & 0xff, // timescale\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x55, 0xc4, // 'und' language (undetermined)\n 0x00, 0x00]));\n };\n\n MP4.mdia = function mdia(track) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(track.timescale, track.duration), MP4.hdlr(track.type), MP4.minf(track));\n };\n\n MP4.mfhd = function mfhd(sequenceNumber) {\n return MP4.box(MP4.types.mfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // flags\n sequenceNumber >> 24, sequenceNumber >> 16 & 0xff, sequenceNumber >> 8 & 0xff, sequenceNumber & 0xff // sequence_number\n ]));\n };\n\n MP4.minf = function minf(track) {\n if (track.type === 'audio') {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.smhd, MP4.SMHD), MP4.DINF, MP4.stbl(track));\n } else {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.vmhd, MP4.VMHD), MP4.DINF, MP4.stbl(track));\n }\n };\n\n MP4.moof = function moof(sn, baseMediaDecodeTime, track) {\n return MP4.box(MP4.types.moof, MP4.mfhd(sn), MP4.traf(track, baseMediaDecodeTime));\n }\n /**\n * @param tracks... (optional) {array} the tracks associated with this movie\n */\n ;\n\n MP4.moov = function moov(tracks) {\n var i = tracks.length;\n var boxes = [];\n\n while (i--) {\n boxes[i] = MP4.trak(tracks[i]);\n }\n\n return MP4.box.apply(null, [MP4.types.moov, MP4.mvhd(tracks[0].timescale, tracks[0].duration)].concat(boxes).concat(MP4.mvex(tracks)));\n };\n\n MP4.mvex = function mvex(tracks) {\n var i = tracks.length;\n var boxes = [];\n\n while (i--) {\n boxes[i] = MP4.trex(tracks[i]);\n }\n\n return MP4.box.apply(null, [MP4.types.mvex].concat(boxes));\n };\n\n MP4.mvhd = function mvhd(timescale, duration) {\n duration *= timescale;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n var bytes = new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n timescale >> 24 & 0xff, timescale >> 16 & 0xff, timescale >> 8 & 0xff, timescale & 0xff, // timescale\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x00, 0x01, 0x00, 0x00, // 1.0 rate\n 0x01, 0x00, // 1.0 volume\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0xff, 0xff, 0xff, 0xff // next_track_ID\n ]);\n return MP4.box(MP4.types.mvhd, bytes);\n };\n\n MP4.sdtp = function sdtp(track) {\n var samples = track.samples || [];\n var bytes = new Uint8Array(4 + samples.length);\n var i;\n var flags; // leave the full box header (4 bytes) all zero\n // write the sample table\n\n for (i = 0; i < samples.length; i++) {\n flags = samples[i].flags;\n bytes[i + 4] = flags.dependsOn << 4 | flags.isDependedOn << 2 | flags.hasRedundancy;\n }\n\n return MP4.box(MP4.types.sdtp, bytes);\n };\n\n MP4.stbl = function stbl(track) {\n return MP4.box(MP4.types.stbl, MP4.stsd(track), MP4.box(MP4.types.stts, MP4.STTS), MP4.box(MP4.types.stsc, MP4.STSC), MP4.box(MP4.types.stsz, MP4.STSZ), MP4.box(MP4.types.stco, MP4.STCO));\n };\n\n MP4.avc1 = function avc1(track) {\n var sps = [];\n var pps = [];\n var i;\n var data;\n var len; // assemble the SPSs\n\n for (i = 0; i < track.sps.length; i++) {\n data = track.sps[i];\n len = data.byteLength;\n sps.push(len >>> 8 & 0xff);\n sps.push(len & 0xff); // SPS\n\n sps = sps.concat(Array.prototype.slice.call(data));\n } // assemble the PPSs\n\n\n for (i = 0; i < track.pps.length; i++) {\n data = track.pps[i];\n len = data.byteLength;\n pps.push(len >>> 8 & 0xff);\n pps.push(len & 0xff);\n pps = pps.concat(Array.prototype.slice.call(data));\n }\n\n var avcc = MP4.box(MP4.types.avcC, new Uint8Array([0x01, // version\n sps[3], // profile\n sps[4], // profile compat\n sps[5], // level\n 0xfc | 3, // lengthSizeMinusOne, hard-coded to 4 bytes\n 0xe0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets\n ].concat(sps).concat([track.pps.length // numOfPictureParameterSets\n ]).concat(pps))); // \"PPS\"\n\n var width = track.width;\n var height = track.height;\n var hSpacing = track.pixelRatio[0];\n var vSpacing = track.pixelRatio[1];\n return MP4.box(MP4.types.avc1, new Uint8Array([0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, // pre_defined\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined\n width >> 8 & 0xff, width & 0xff, // width\n height >> 8 & 0xff, height & 0xff, // height\n 0x00, 0x48, 0x00, 0x00, // horizresolution\n 0x00, 0x48, 0x00, 0x00, // vertresolution\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // frame_count\n 0x12, 0x64, 0x61, 0x69, 0x6c, // dailymotion/hls.js\n 0x79, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x6c, 0x73, 0x2e, 0x6a, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // compressorname\n 0x00, 0x18, // depth = 24\n 0x11, 0x11]), // pre_defined = -1\n avcc, MP4.box(MP4.types.btrt, new Uint8Array([0x00, 0x1c, 0x9c, 0x80, // bufferSizeDB\n 0x00, 0x2d, 0xc6, 0xc0, // maxBitrate\n 0x00, 0x2d, 0xc6, 0xc0])), // avgBitrate\n MP4.box(MP4.types.pasp, new Uint8Array([hSpacing >> 24, // hSpacing\n hSpacing >> 16 & 0xff, hSpacing >> 8 & 0xff, hSpacing & 0xff, vSpacing >> 24, // vSpacing\n vSpacing >> 16 & 0xff, vSpacing >> 8 & 0xff, vSpacing & 0xff])));\n };\n\n MP4.esds = function esds(track) {\n var configlen = track.config.length;\n return new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x03, // descriptor_type\n 0x17 + configlen, // length\n 0x00, 0x01, // es_id\n 0x00, // stream_priority\n 0x04, // descriptor_type\n 0x0f + configlen, // length\n 0x40, // codec : mpeg4_audio\n 0x15, // stream_type\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n 0x05 // descriptor_type\n ].concat([configlen]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor\n };\n\n MP4.mp4a = function mp4a(track) {\n var samplerate = track.samplerate;\n return MP4.box(MP4.types.mp4a, new Uint8Array([0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, track.channelCount, // channelcount\n 0x00, 0x10, // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00, // reserved2\n samplerate >> 8 & 0xff, samplerate & 0xff, //\n 0x00, 0x00]), MP4.box(MP4.types.esds, MP4.esds(track)));\n };\n\n MP4.mp3 = function mp3(track) {\n var samplerate = track.samplerate;\n return MP4.box(MP4.types['.mp3'], new Uint8Array([0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, track.channelCount, // channelcount\n 0x00, 0x10, // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00, // reserved2\n samplerate >> 8 & 0xff, samplerate & 0xff, //\n 0x00, 0x00]));\n };\n\n MP4.stsd = function stsd(track) {\n if (track.type === 'audio') {\n if (track.segmentCodec === 'mp3' && track.codec === 'mp3') {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp3(track));\n }\n\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp4a(track));\n } else {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.avc1(track));\n }\n };\n\n MP4.tkhd = function tkhd(track) {\n var id = track.id;\n var duration = track.duration * track.timescale;\n var width = track.width;\n var height = track.height;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n return MP4.box(MP4.types.tkhd, new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x07, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n id >> 24 & 0xff, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff, // track_ID\n 0x00, 0x00, 0x00, 0x00, // reserved\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, // layer\n 0x00, 0x00, // alternate_group\n 0x00, 0x00, // non-audio track volume\n 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n width >> 8 & 0xff, width & 0xff, 0x00, 0x00, // width\n height >> 8 & 0xff, height & 0xff, 0x00, 0x00 // height\n ]));\n };\n\n MP4.traf = function traf(track, baseMediaDecodeTime) {\n var sampleDependencyTable = MP4.sdtp(track);\n var id = track.id;\n var upperWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));\n var lowerWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));\n return MP4.box(MP4.types.traf, MP4.box(MP4.types.tfhd, new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n id >> 24, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff // track_ID\n ])), MP4.box(MP4.types.tfdt, new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n upperWordBaseMediaDecodeTime >> 24, upperWordBaseMediaDecodeTime >> 16 & 0xff, upperWordBaseMediaDecodeTime >> 8 & 0xff, upperWordBaseMediaDecodeTime & 0xff, lowerWordBaseMediaDecodeTime >> 24, lowerWordBaseMediaDecodeTime >> 16 & 0xff, lowerWordBaseMediaDecodeTime >> 8 & 0xff, lowerWordBaseMediaDecodeTime & 0xff])), MP4.trun(track, sampleDependencyTable.length + 16 + // tfhd\n 20 + // tfdt\n 8 + // traf header\n 16 + // mfhd\n 8 + // moof header\n 8), // mdat header\n sampleDependencyTable);\n }\n /**\n * Generate a track box.\n * @param track {object} a track definition\n * @return {Uint8Array} the track box\n */\n ;\n\n MP4.trak = function trak(track) {\n track.duration = track.duration || 0xffffffff;\n return MP4.box(MP4.types.trak, MP4.tkhd(track), MP4.mdia(track));\n };\n\n MP4.trex = function trex(track) {\n var id = track.id;\n return MP4.box(MP4.types.trex, new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n id >> 24, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff, // track_ID\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]));\n };\n\n MP4.trun = function trun(track, offset) {\n var samples = track.samples || [];\n var len = samples.length;\n var arraylen = 12 + 16 * len;\n var array = new Uint8Array(arraylen);\n var i;\n var sample;\n var duration;\n var size;\n var flags;\n var cts;\n offset += 8 + arraylen;\n array.set([track.type === 'video' ? 0x01 : 0x00, // version 1 for video with signed-int sample_composition_time_offset\n 0x00, 0x0f, 0x01, // flags\n len >>> 24 & 0xff, len >>> 16 & 0xff, len >>> 8 & 0xff, len & 0xff, // sample_count\n offset >>> 24 & 0xff, offset >>> 16 & 0xff, offset >>> 8 & 0xff, offset & 0xff // data_offset\n ], 0);\n\n for (i = 0; i < len; i++) {\n sample = samples[i];\n duration = sample.duration;\n size = sample.size;\n flags = sample.flags;\n cts = sample.cts;\n array.set([duration >>> 24 & 0xff, duration >>> 16 & 0xff, duration >>> 8 & 0xff, duration & 0xff, // sample_duration\n size >>> 24 & 0xff, size >>> 16 & 0xff, size >>> 8 & 0xff, size & 0xff, // sample_size\n flags.isLeading << 2 | flags.dependsOn, flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.paddingValue << 1 | flags.isNonSync, flags.degradPrio & 0xf0 << 8, flags.degradPrio & 0x0f, // sample_flags\n cts >>> 24 & 0xff, cts >>> 16 & 0xff, cts >>> 8 & 0xff, cts & 0xff // sample_composition_time_offset\n ], 12 + 16 * i);\n }\n\n return MP4.box(MP4.types.trun, array);\n };\n\n MP4.initSegment = function initSegment(tracks) {\n if (!MP4.types) {\n MP4.init();\n }\n\n var movie = MP4.moov(tracks);\n var result = new Uint8Array(MP4.FTYP.byteLength + movie.byteLength);\n result.set(MP4.FTYP);\n result.set(movie, MP4.FTYP.byteLength);\n return result;\n };\n\n return MP4;\n}();\n\nMP4.types = void 0;\nMP4.HDLR_TYPES = void 0;\nMP4.STTS = void 0;\nMP4.STSC = void 0;\nMP4.STCO = void 0;\nMP4.STSZ = void 0;\nMP4.VMHD = void 0;\nMP4.SMHD = void 0;\nMP4.STSD = void 0;\nMP4.FTYP = void 0;\nMP4.DINF = void 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (MP4);\n\n/***/ }),\n\n/***/ \"./src/remux/mp4-remuxer.ts\":\n/*!**********************************!*\\\n !*** ./src/remux/mp4-remuxer.ts ***!\n \\**********************************/\n/*! exports provided: default, normalizePts, flushTextTrackMetadataCueSamples, flushTextTrackUserdataCueSamples */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MP4Remuxer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizePts\", function() { return normalizePts; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flushTextTrackMetadataCueSamples\", function() { return flushTextTrackMetadataCueSamples; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flushTextTrackUserdataCueSamples\", function() { return flushTextTrackUserdataCueSamples; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _aac_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./aac-helper */ \"./src/remux/aac-helper.ts\");\n/* harmony import */ var _mp4_generator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mp4-generator */ \"./src/remux/mp4-generator.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/timescale-conversion */ \"./src/utils/timescale-conversion.ts\");\n\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\n\n\n\nvar MAX_SILENT_FRAME_DURATION = 10 * 1000; // 10 seconds\n\nvar AAC_SAMPLES_PER_FRAME = 1024;\nvar MPEG_AUDIO_SAMPLE_PER_FRAME = 1152;\nvar chromeVersion = null;\nvar safariWebkitVersion = null;\n\nvar MP4Remuxer = /*#__PURE__*/function () {\n function MP4Remuxer(observer, config, typeSupported, vendor) {\n if (vendor === void 0) {\n vendor = '';\n }\n\n this.observer = void 0;\n this.config = void 0;\n this.typeSupported = void 0;\n this.ISGenerated = false;\n this._initPTS = void 0;\n this._initDTS = void 0;\n this.nextAvcDts = null;\n this.nextAudioPts = null;\n this.videoSampleDuration = null;\n this.isAudioContiguous = false;\n this.isVideoContiguous = false;\n this.observer = observer;\n this.config = config;\n this.typeSupported = typeSupported;\n this.ISGenerated = false;\n\n if (chromeVersion === null) {\n var userAgent = navigator.userAgent || '';\n var result = userAgent.match(/Chrome\\/(\\d+)/i);\n chromeVersion = result ? parseInt(result[1]) : 0;\n }\n\n if (safariWebkitVersion === null) {\n var _result = navigator.userAgent.match(/Safari\\/(\\d+)/i);\n\n safariWebkitVersion = _result ? parseInt(_result[1]) : 0;\n }\n }\n\n var _proto = MP4Remuxer.prototype;\n\n _proto.destroy = function destroy() {};\n\n _proto.resetTimeStamp = function resetTimeStamp(defaultTimeStamp) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log('[mp4-remuxer]: initPTS & initDTS reset');\n this._initPTS = this._initDTS = defaultTimeStamp;\n };\n\n _proto.resetNextTimestamp = function resetNextTimestamp() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log('[mp4-remuxer]: reset next timestamp');\n this.isVideoContiguous = false;\n this.isAudioContiguous = false;\n };\n\n _proto.resetInitSegment = function resetInitSegment() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log('[mp4-remuxer]: ISGenerated flag reset');\n this.ISGenerated = false;\n };\n\n _proto.getVideoStartPts = function getVideoStartPts(videoSamples) {\n var rolloverDetected = false;\n var startPTS = videoSamples.reduce(function (minPTS, sample) {\n var delta = sample.pts - minPTS;\n\n if (delta < -4294967296) {\n // 2^32, see PTSNormalize for reasoning, but we're hitting a rollover here, and we don't want that to impact the timeOffset calculation\n rolloverDetected = true;\n return normalizePts(minPTS, sample.pts);\n } else if (delta > 0) {\n return minPTS;\n } else {\n return sample.pts;\n }\n }, videoSamples[0].pts);\n\n if (rolloverDetected) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].debug('PTS rollover detected');\n }\n\n return startPTS;\n };\n\n _proto.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, flush, playlistType) {\n var video;\n var audio;\n var initSegment;\n var text;\n var id3;\n var independent;\n var audioTimeOffset = timeOffset;\n var videoTimeOffset = timeOffset; // If we're remuxing audio and video progressively, wait until we've received enough samples for each track before proceeding.\n // This is done to synchronize the audio and video streams. We know if the current segment will have samples if the \"pid\"\n // parameter is greater than -1. The pid is set when the PMT is parsed, which contains the tracks list.\n // However, if the initSegment has already been generated, or we've reached the end of a segment (flush),\n // then we can remux one track without waiting for the other.\n\n var hasAudio = audioTrack.pid > -1;\n var hasVideo = videoTrack.pid > -1;\n var length = videoTrack.samples.length;\n var enoughAudioSamples = audioTrack.samples.length > 0;\n var enoughVideoSamples = flush && length > 0 || length > 1;\n var canRemuxAvc = (!hasAudio || enoughAudioSamples) && (!hasVideo || enoughVideoSamples) || this.ISGenerated || flush;\n\n if (canRemuxAvc) {\n if (!this.ISGenerated) {\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset);\n }\n\n var isVideoContiguous = this.isVideoContiguous;\n var firstKeyFrameIndex = -1;\n var firstKeyFramePTS;\n\n if (enoughVideoSamples) {\n firstKeyFrameIndex = findKeyframeIndex(videoTrack.samples);\n\n if (!isVideoContiguous && this.config.forceKeyFrameOnDiscontinuity) {\n independent = true;\n\n if (firstKeyFrameIndex > 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"[mp4-remuxer]: Dropped \" + firstKeyFrameIndex + \" out of \" + length + \" video samples due to a missing keyframe\");\n var startPTS = this.getVideoStartPts(videoTrack.samples);\n videoTrack.samples = videoTrack.samples.slice(firstKeyFrameIndex);\n videoTrack.dropped += firstKeyFrameIndex;\n videoTimeOffset += (videoTrack.samples[0].pts - startPTS) / videoTrack.inputTimeScale;\n firstKeyFramePTS = videoTimeOffset;\n } else if (firstKeyFrameIndex === -1) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"[mp4-remuxer]: No keyframe found out of \" + length + \" video samples\");\n independent = false;\n }\n }\n }\n\n if (this.ISGenerated) {\n if (enoughAudioSamples && enoughVideoSamples) {\n // timeOffset is expected to be the offset of the first timestamp of this fragment (first DTS)\n // if first audio DTS is not aligned with first video DTS then we need to take that into account\n // when providing timeOffset to remuxAudio / remuxVideo. if we don't do that, there might be a permanent / small\n // drift between audio and video streams\n var _startPTS = this.getVideoStartPts(videoTrack.samples);\n\n var tsDelta = normalizePts(audioTrack.samples[0].pts, _startPTS) - _startPTS;\n\n var audiovideoTimestampDelta = tsDelta / videoTrack.inputTimeScale;\n audioTimeOffset += Math.max(0, audiovideoTimestampDelta);\n videoTimeOffset += Math.max(0, -audiovideoTimestampDelta);\n } // Purposefully remuxing audio before video, so that remuxVideo can use nextAudioPts, which is calculated in remuxAudio.\n\n\n if (enoughAudioSamples) {\n // if initSegment was generated without audio samples, regenerate it again\n if (!audioTrack.samplerate) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn('[mp4-remuxer]: regenerate InitSegment as audio detected');\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset);\n }\n\n audio = this.remuxAudio(audioTrack, audioTimeOffset, this.isAudioContiguous, accurateTimeOffset, hasVideo || enoughVideoSamples || playlistType === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO ? videoTimeOffset : undefined);\n\n if (enoughVideoSamples) {\n var audioTrackLength = audio ? audio.endPTS - audio.startPTS : 0; // if initSegment was generated without video samples, regenerate it again\n\n if (!videoTrack.inputTimeScale) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn('[mp4-remuxer]: regenerate InitSegment as video detected');\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset);\n }\n\n video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, audioTrackLength);\n }\n } else if (enoughVideoSamples) {\n video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, 0);\n }\n\n if (video) {\n video.firstKeyFrame = firstKeyFrameIndex;\n video.independent = firstKeyFrameIndex !== -1;\n video.firstKeyFramePTS = firstKeyFramePTS;\n }\n }\n } // Allow ID3 and text to remux, even if more audio/video samples are required\n\n\n if (this.ISGenerated) {\n if (id3Track.samples.length) {\n id3 = flushTextTrackMetadataCueSamples(id3Track, timeOffset, this._initPTS, this._initDTS);\n }\n\n if (textTrack.samples.length) {\n text = flushTextTrackUserdataCueSamples(textTrack, timeOffset, this._initPTS);\n }\n }\n\n return {\n audio: audio,\n video: video,\n initSegment: initSegment,\n independent: independent,\n text: text,\n id3: id3\n };\n };\n\n _proto.generateIS = function generateIS(audioTrack, videoTrack, timeOffset) {\n var audioSamples = audioTrack.samples;\n var videoSamples = videoTrack.samples;\n var typeSupported = this.typeSupported;\n var tracks = {};\n var computePTSDTS = !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this._initPTS);\n var container = 'audio/mp4';\n var initPTS;\n var initDTS;\n var timescale;\n\n if (computePTSDTS) {\n initPTS = initDTS = Infinity;\n }\n\n if (audioTrack.config && audioSamples.length) {\n // let's use audio sampling rate as MP4 time scale.\n // rationale is that there is a integer nb of audio frames per audio sample (1024 for AAC)\n // using audio sampling rate here helps having an integer MP4 frame duration\n // this avoids potential rounding issue and AV sync issue\n audioTrack.timescale = audioTrack.samplerate;\n\n switch (audioTrack.segmentCodec) {\n case 'mp3':\n if (typeSupported.mpeg) {\n // Chrome and Safari\n container = 'audio/mpeg';\n audioTrack.codec = '';\n } else if (typeSupported.mp3) {\n // Firefox\n audioTrack.codec = 'mp3';\n }\n\n break;\n }\n\n tracks.audio = {\n id: 'audio',\n container: container,\n codec: audioTrack.codec,\n initSegment: audioTrack.segmentCodec === 'mp3' && typeSupported.mpeg ? new Uint8Array(0) : _mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].initSegment([audioTrack]),\n metadata: {\n channelCount: audioTrack.channelCount\n }\n };\n\n if (computePTSDTS) {\n timescale = audioTrack.inputTimeScale; // remember first PTS of this demuxing context. for audio, PTS = DTS\n\n initPTS = initDTS = audioSamples[0].pts - Math.round(timescale * timeOffset);\n }\n }\n\n if (videoTrack.sps && videoTrack.pps && videoSamples.length) {\n // let's use input time scale as MP4 video timescale\n // we use input time scale straight away to avoid rounding issues on frame duration / cts computation\n videoTrack.timescale = videoTrack.inputTimeScale;\n tracks.video = {\n id: 'main',\n container: 'video/mp4',\n codec: videoTrack.codec,\n initSegment: _mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].initSegment([videoTrack]),\n metadata: {\n width: videoTrack.width,\n height: videoTrack.height\n }\n };\n\n if (computePTSDTS) {\n timescale = videoTrack.inputTimeScale;\n var startPTS = this.getVideoStartPts(videoSamples);\n var startOffset = Math.round(timescale * timeOffset);\n initDTS = Math.min(initDTS, normalizePts(videoSamples[0].dts, startPTS) - startOffset);\n initPTS = Math.min(initPTS, startPTS - startOffset);\n }\n }\n\n if (Object.keys(tracks).length) {\n this.ISGenerated = true;\n\n if (computePTSDTS) {\n this._initPTS = initPTS;\n this._initDTS = initDTS;\n }\n\n return {\n tracks: tracks,\n initPTS: initPTS,\n timescale: timescale\n };\n }\n };\n\n _proto.remuxVideo = function remuxVideo(track, timeOffset, contiguous, audioTrackLength) {\n var timeScale = track.inputTimeScale;\n var inputSamples = track.samples;\n var outputSamples = [];\n var nbSamples = inputSamples.length;\n var initPTS = this._initPTS;\n var nextAvcDts = this.nextAvcDts;\n var offset = 8;\n var mp4SampleDuration = this.videoSampleDuration;\n var firstDTS;\n var lastDTS;\n var minPTS = Number.POSITIVE_INFINITY;\n var maxPTS = Number.NEGATIVE_INFINITY;\n var sortSamples = false; // if parsed fragment is contiguous with last one, let's use last DTS value as reference\n\n if (!contiguous || nextAvcDts === null) {\n var pts = timeOffset * timeScale;\n var cts = inputSamples[0].pts - normalizePts(inputSamples[0].dts, inputSamples[0].pts); // if not contiguous, let's use target timeOffset\n\n nextAvcDts = pts - cts;\n } // PTS is coded on 33bits, and can loop from -2^32 to 2^32\n // PTSNormalize will make PTS/DTS value monotonic, we use last known DTS value as reference value\n\n\n for (var i = 0; i < nbSamples; i++) {\n var sample = inputSamples[i];\n sample.pts = normalizePts(sample.pts - initPTS, nextAvcDts);\n sample.dts = normalizePts(sample.dts - initPTS, nextAvcDts);\n\n if (sample.dts < inputSamples[i > 0 ? i - 1 : i].dts) {\n sortSamples = true;\n }\n } // sort video samples by DTS then PTS then demux id order\n\n\n if (sortSamples) {\n inputSamples.sort(function (a, b) {\n var deltadts = a.dts - b.dts;\n var deltapts = a.pts - b.pts;\n return deltadts || deltapts;\n });\n } // Get first/last DTS\n\n\n firstDTS = inputSamples[0].dts;\n lastDTS = inputSamples[inputSamples.length - 1].dts; // Sample duration (as expected by trun MP4 boxes), should be the delta between sample DTS\n // set this constant duration as being the avg delta between consecutive DTS.\n\n var inputDuration = lastDTS - firstDTS;\n var averageSampleDuration = inputDuration ? Math.round(inputDuration / (nbSamples - 1)) : mp4SampleDuration || track.inputTimeScale / 30; // if fragment are contiguous, detect hole/overlapping between fragments\n\n if (contiguous) {\n // check timestamp continuity across consecutive fragments (this is to remove inter-fragment gap/hole)\n var delta = firstDTS - nextAvcDts;\n var foundHole = delta > averageSampleDuration;\n var foundOverlap = delta < -1;\n\n if (foundHole || foundOverlap) {\n if (foundHole) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"AVC: \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(delta, true) + \" ms (\" + delta + \"dts) hole between fragments detected, filling it\");\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"AVC: \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(-delta, true) + \" ms (\" + delta + \"dts) overlapping between fragments detected\");\n }\n\n firstDTS = nextAvcDts;\n var firstPTS = inputSamples[0].pts - delta;\n inputSamples[0].dts = firstDTS;\n inputSamples[0].pts = firstPTS;\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log(\"Video: First PTS/DTS adjusted: \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(firstPTS, true) + \"/\" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(firstDTS, true) + \", delta: \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(delta, true) + \" ms\");\n }\n }\n\n firstDTS = Math.max(0, firstDTS);\n var nbNalu = 0;\n var naluLen = 0;\n\n for (var _i = 0; _i < nbSamples; _i++) {\n // compute total/avc sample length and nb of NAL units\n var _sample = inputSamples[_i];\n var units = _sample.units;\n var nbUnits = units.length;\n var sampleLen = 0;\n\n for (var j = 0; j < nbUnits; j++) {\n sampleLen += units[j].data.length;\n }\n\n naluLen += sampleLen;\n nbNalu += nbUnits;\n _sample.length = sampleLen; // ensure sample monotonic DTS\n\n _sample.dts = Math.max(_sample.dts, firstDTS);\n minPTS = Math.min(_sample.pts, minPTS);\n maxPTS = Math.max(_sample.pts, maxPTS);\n }\n\n lastDTS = inputSamples[nbSamples - 1].dts;\n /* concatenate the video data and construct the mdat in place\n (need 8 more bytes to fill length and mpdat type) */\n\n var mdatSize = naluLen + 4 * nbNalu + 8;\n var mdat;\n\n try {\n mdat = new Uint8Array(mdatSize);\n } catch (err) {\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorTypes\"].MUX_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].REMUX_ALLOC_ERROR,\n fatal: false,\n bytes: mdatSize,\n reason: \"fail allocating video mdat \" + mdatSize\n });\n return;\n }\n\n var view = new DataView(mdat.buffer);\n view.setUint32(0, mdatSize);\n mdat.set(_mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].types.mdat, 4);\n var stretchedLastFrame = false;\n var minDtsDelta = Number.POSITIVE_INFINITY;\n var minPtsDelta = Number.POSITIVE_INFINITY;\n var maxDtsDelta = Number.NEGATIVE_INFINITY;\n var maxPtsDelta = Number.NEGATIVE_INFINITY;\n\n for (var _i2 = 0; _i2 < nbSamples; _i2++) {\n var avcSample = inputSamples[_i2];\n var avcSampleUnits = avcSample.units;\n var mp4SampleLength = 0; // convert NALU bitstream to MP4 format (prepend NALU with size field)\n\n for (var _j = 0, _nbUnits = avcSampleUnits.length; _j < _nbUnits; _j++) {\n var unit = avcSampleUnits[_j];\n var unitData = unit.data;\n var unitDataLen = unit.data.byteLength;\n view.setUint32(offset, unitDataLen);\n offset += 4;\n mdat.set(unitData, offset);\n offset += unitDataLen;\n mp4SampleLength += 4 + unitDataLen;\n } // expected sample duration is the Decoding Timestamp diff of consecutive samples\n\n\n var ptsDelta = void 0;\n\n if (_i2 < nbSamples - 1) {\n mp4SampleDuration = inputSamples[_i2 + 1].dts - avcSample.dts;\n ptsDelta = inputSamples[_i2 + 1].pts - avcSample.pts;\n } else {\n var config = this.config;\n var lastFrameDuration = _i2 > 0 ? avcSample.dts - inputSamples[_i2 - 1].dts : averageSampleDuration;\n ptsDelta = _i2 > 0 ? avcSample.pts - inputSamples[_i2 - 1].pts : averageSampleDuration;\n\n if (config.stretchShortVideoTrack && this.nextAudioPts !== null) {\n // In some cases, a segment's audio track duration may exceed the video track duration.\n // Since we've already remuxed audio, and we know how long the audio track is, we look to\n // see if the delta to the next segment is longer than maxBufferHole.\n // If so, playback would potentially get stuck, so we artificially inflate\n // the duration of the last frame to minimize any potential gap between segments.\n var gapTolerance = Math.floor(config.maxBufferHole * timeScale);\n var deltaToFrameEnd = (audioTrackLength ? minPTS + audioTrackLength * timeScale : this.nextAudioPts) - avcSample.pts;\n\n if (deltaToFrameEnd > gapTolerance) {\n // We subtract lastFrameDuration from deltaToFrameEnd to try to prevent any video\n // frame overlap. maxBufferHole should be >> lastFrameDuration anyway.\n mp4SampleDuration = deltaToFrameEnd - lastFrameDuration;\n\n if (mp4SampleDuration < 0) {\n mp4SampleDuration = lastFrameDuration;\n } else {\n stretchedLastFrame = true;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log(\"[mp4-remuxer]: It is approximately \" + deltaToFrameEnd / 90 + \" ms to the next segment; using duration \" + mp4SampleDuration / 90 + \" ms for the last video frame.\");\n } else {\n mp4SampleDuration = lastFrameDuration;\n }\n } else {\n mp4SampleDuration = lastFrameDuration;\n }\n }\n\n var compositionTimeOffset = Math.round(avcSample.pts - avcSample.dts);\n minDtsDelta = Math.min(minDtsDelta, mp4SampleDuration);\n maxDtsDelta = Math.max(maxDtsDelta, mp4SampleDuration);\n minPtsDelta = Math.min(minPtsDelta, ptsDelta);\n maxPtsDelta = Math.max(maxPtsDelta, ptsDelta);\n outputSamples.push(new Mp4Sample(avcSample.key, mp4SampleDuration, mp4SampleLength, compositionTimeOffset));\n }\n\n if (outputSamples.length) {\n if (chromeVersion) {\n if (chromeVersion < 70) {\n // Chrome workaround, mark first sample as being a Random Access Point (keyframe) to avoid sourcebuffer append issue\n // https://code.google.com/p/chromium/issues/detail?id=229412\n var flags = outputSamples[0].flags;\n flags.dependsOn = 2;\n flags.isNonSync = 0;\n }\n } else if (safariWebkitVersion) {\n // Fix for \"CNN special report, with CC\" in test-streams (Safari browser only)\n // Ignore DTS when frame durations are irregular. Safari MSE does not handle this leading to gaps.\n if (maxPtsDelta - minPtsDelta < maxDtsDelta - minDtsDelta && averageSampleDuration / maxDtsDelta < 0.025 && outputSamples[0].cts === 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn('Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.');\n var dts = firstDTS;\n\n for (var _i3 = 0, len = outputSamples.length; _i3 < len; _i3++) {\n var nextDts = dts + outputSamples[_i3].duration;\n\n var _pts = dts + outputSamples[_i3].cts;\n\n if (_i3 < len - 1) {\n var nextPts = nextDts + outputSamples[_i3 + 1].cts;\n outputSamples[_i3].duration = nextPts - _pts;\n } else {\n outputSamples[_i3].duration = _i3 ? outputSamples[_i3 - 1].duration : averageSampleDuration;\n }\n\n outputSamples[_i3].cts = 0;\n dts = nextDts;\n }\n }\n }\n }\n\n console.assert(mp4SampleDuration !== null, 'mp4SampleDuration must be computed'); // next AVC sample DTS should be equal to last sample DTS + last sample duration (in PES timescale)\n\n mp4SampleDuration = stretchedLastFrame || !mp4SampleDuration ? averageSampleDuration : mp4SampleDuration;\n this.nextAvcDts = nextAvcDts = lastDTS + mp4SampleDuration;\n this.videoSampleDuration = mp4SampleDuration;\n this.isVideoContiguous = true;\n var moof = _mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].moof(track.sequenceNumber++, firstDTS, _extends({}, track, {\n samples: outputSamples\n }));\n var type = 'video';\n var data = {\n data1: moof,\n data2: mdat,\n startPTS: minPTS / timeScale,\n endPTS: (maxPTS + mp4SampleDuration) / timeScale,\n startDTS: firstDTS / timeScale,\n endDTS: nextAvcDts / timeScale,\n type: type,\n hasAudio: false,\n hasVideo: true,\n nb: outputSamples.length,\n dropped: track.dropped\n };\n track.samples = [];\n track.dropped = 0;\n console.assert(mdat.length, 'MDAT length must not be zero');\n return data;\n };\n\n _proto.remuxAudio = function remuxAudio(track, timeOffset, contiguous, accurateTimeOffset, videoTimeOffset) {\n var inputTimeScale = track.inputTimeScale;\n var mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n var scaleFactor = inputTimeScale / mp4timeScale;\n var mp4SampleDuration = track.segmentCodec === 'aac' ? AAC_SAMPLES_PER_FRAME : MPEG_AUDIO_SAMPLE_PER_FRAME;\n var inputSampleDuration = mp4SampleDuration * scaleFactor;\n var initPTS = this._initPTS;\n var rawMPEG = track.segmentCodec === 'mp3' && this.typeSupported.mpeg;\n var outputSamples = [];\n var alignedWithVideo = videoTimeOffset !== undefined;\n var inputSamples = track.samples;\n var offset = rawMPEG ? 0 : 8;\n var nextAudioPts = this.nextAudioPts || -1; // window.audioSamples ? window.audioSamples.push(inputSamples.map(s => s.pts)) : (window.audioSamples = [inputSamples.map(s => s.pts)]);\n // for audio samples, also consider consecutive fragments as being contiguous (even if a level switch occurs),\n // for sake of clarity:\n // consecutive fragments are frags with\n // - less than 100ms gaps between new time offset (if accurate) and next expected PTS OR\n // - less than 20 audio frames distance\n // contiguous fragments are consecutive fragments from same quality level (same level, new SN = old SN + 1)\n // this helps ensuring audio continuity\n // and this also avoids audio glitches/cut when switching quality, or reporting wrong duration on first audio frame\n\n var timeOffsetMpegTS = timeOffset * inputTimeScale;\n this.isAudioContiguous = contiguous = contiguous || inputSamples.length && nextAudioPts > 0 && (accurateTimeOffset && Math.abs(timeOffsetMpegTS - nextAudioPts) < 9000 || Math.abs(normalizePts(inputSamples[0].pts - initPTS, timeOffsetMpegTS) - nextAudioPts) < 20 * inputSampleDuration); // compute normalized PTS\n\n inputSamples.forEach(function (sample) {\n sample.pts = normalizePts(sample.pts - initPTS, timeOffsetMpegTS);\n });\n\n if (!contiguous || nextAudioPts < 0) {\n // filter out sample with negative PTS that are not playable anyway\n // if we don't remove these negative samples, they will shift all audio samples forward.\n // leading to audio overlap between current / next fragment\n inputSamples = inputSamples.filter(function (sample) {\n return sample.pts >= 0;\n }); // in case all samples have negative PTS, and have been filtered out, return now\n\n if (!inputSamples.length) {\n return;\n }\n\n if (videoTimeOffset === 0) {\n // Set the start to 0 to match video so that start gaps larger than inputSampleDuration are filled with silence\n nextAudioPts = 0;\n } else if (accurateTimeOffset && !alignedWithVideo) {\n // When not seeking, not live, and LevelDetails.PTSKnown, use fragment start as predicted next audio PTS\n nextAudioPts = Math.max(0, timeOffsetMpegTS);\n } else {\n // if frags are not contiguous and if we cant trust time offset, let's use first sample PTS as next audio PTS\n nextAudioPts = inputSamples[0].pts;\n }\n } // If the audio track is missing samples, the frames seem to get \"left-shifted\" within the\n // resulting mp4 segment, causing sync issues and leaving gaps at the end of the audio segment.\n // In an effort to prevent this from happening, we inject frames here where there are gaps.\n // When possible, we inject a silent frame; when that's not possible, we duplicate the last\n // frame.\n\n\n if (track.segmentCodec === 'aac') {\n var maxAudioFramesDrift = this.config.maxAudioFramesDrift;\n\n for (var i = 0, nextPts = nextAudioPts; i < inputSamples.length; i++) {\n // First, let's see how far off this frame is from where we expect it to be\n var sample = inputSamples[i];\n var pts = sample.pts;\n var delta = pts - nextPts;\n var duration = Math.abs(1000 * delta / inputTimeScale); // When remuxing with video, if we're overlapping by more than a duration, drop this sample to stay in sync\n\n if (delta <= -maxAudioFramesDrift * inputSampleDuration && alignedWithVideo) {\n if (i === 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"Audio frame @ \" + (pts / inputTimeScale).toFixed(3) + \"s overlaps nextAudioPts by \" + Math.round(1000 * delta / inputTimeScale) + \" ms.\");\n this.nextAudioPts = nextAudioPts = nextPts = pts;\n }\n } // eslint-disable-line brace-style\n // Insert missing frames if:\n // 1: We're more than maxAudioFramesDrift frame away\n // 2: Not more than MAX_SILENT_FRAME_DURATION away\n // 3: currentTime (aka nextPtsNorm) is not 0\n // 4: remuxing with video (videoTimeOffset !== undefined)\n else if (delta >= maxAudioFramesDrift * inputSampleDuration && duration < MAX_SILENT_FRAME_DURATION && alignedWithVideo) {\n var missing = Math.round(delta / inputSampleDuration); // Adjust nextPts so that silent samples are aligned with media pts. This will prevent media samples from\n // later being shifted if nextPts is based on timeOffset and delta is not a multiple of inputSampleDuration.\n\n nextPts = pts - missing * inputSampleDuration;\n\n if (nextPts < 0) {\n missing--;\n nextPts += inputSampleDuration;\n }\n\n if (i === 0) {\n this.nextAudioPts = nextAudioPts = nextPts;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"[mp4-remuxer]: Injecting \" + missing + \" audio frame @ \" + (nextPts / inputTimeScale).toFixed(3) + \"s due to \" + Math.round(1000 * delta / inputTimeScale) + \" ms gap.\");\n\n for (var j = 0; j < missing; j++) {\n var newStamp = Math.max(nextPts, 0);\n var fillFrame = _aac_helper__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n\n if (!fillFrame) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log('[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead.');\n fillFrame = sample.unit.subarray();\n }\n\n inputSamples.splice(i, 0, {\n unit: fillFrame,\n pts: newStamp\n });\n nextPts += inputSampleDuration;\n i++;\n }\n }\n\n sample.pts = nextPts;\n nextPts += inputSampleDuration;\n }\n }\n\n var firstPTS = null;\n var lastPTS = null;\n var mdat;\n var mdatSize = 0;\n var sampleLength = inputSamples.length;\n\n while (sampleLength--) {\n mdatSize += inputSamples[sampleLength].unit.byteLength;\n }\n\n for (var _j2 = 0, _nbSamples = inputSamples.length; _j2 < _nbSamples; _j2++) {\n var audioSample = inputSamples[_j2];\n var unit = audioSample.unit;\n var _pts2 = audioSample.pts;\n\n if (lastPTS !== null) {\n // If we have more than one sample, set the duration of the sample to the \"real\" duration; the PTS diff with\n // the previous sample\n var prevSample = outputSamples[_j2 - 1];\n prevSample.duration = Math.round((_pts2 - lastPTS) / scaleFactor);\n } else {\n if (contiguous && track.segmentCodec === 'aac') {\n // set PTS/DTS to expected PTS/DTS\n _pts2 = nextAudioPts;\n } // remember first PTS of our audioSamples\n\n\n firstPTS = _pts2;\n\n if (mdatSize > 0) {\n /* concatenate the audio data and construct the mdat in place\n (need 8 more bytes to fill length and mdat type) */\n mdatSize += offset;\n\n try {\n mdat = new Uint8Array(mdatSize);\n } catch (err) {\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorTypes\"].MUX_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].REMUX_ALLOC_ERROR,\n fatal: false,\n bytes: mdatSize,\n reason: \"fail allocating audio mdat \" + mdatSize\n });\n return;\n }\n\n if (!rawMPEG) {\n var view = new DataView(mdat.buffer);\n view.setUint32(0, mdatSize);\n mdat.set(_mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].types.mdat, 4);\n }\n } else {\n // no audio samples\n return;\n }\n }\n\n mdat.set(unit, offset);\n var unitLen = unit.byteLength;\n offset += unitLen; // Default the sample's duration to the computed mp4SampleDuration, which will either be 1024 for AAC or 1152 for MPEG\n // In the case that we have 1 sample, this will be the duration. If we have more than one sample, the duration\n // becomes the PTS diff with the previous sample\n\n outputSamples.push(new Mp4Sample(true, mp4SampleDuration, unitLen, 0));\n lastPTS = _pts2;\n } // We could end up with no audio samples if all input samples were overlapping with the previously remuxed ones\n\n\n var nbSamples = outputSamples.length;\n\n if (!nbSamples) {\n return;\n } // The next audio sample PTS should be equal to last sample PTS + duration\n\n\n var lastSample = outputSamples[outputSamples.length - 1];\n this.nextAudioPts = nextAudioPts = lastPTS + scaleFactor * lastSample.duration; // Set the track samples from inputSamples to outputSamples before remuxing\n\n var moof = rawMPEG ? new Uint8Array(0) : _mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].moof(track.sequenceNumber++, firstPTS / scaleFactor, _extends({}, track, {\n samples: outputSamples\n })); // Clear the track samples. This also clears the samples array in the demuxer, since the reference is shared\n\n track.samples = [];\n var start = firstPTS / inputTimeScale;\n var end = nextAudioPts / inputTimeScale;\n var type = 'audio';\n var audioData = {\n data1: moof,\n data2: mdat,\n startPTS: start,\n endPTS: end,\n startDTS: start,\n endDTS: end,\n type: type,\n hasAudio: true,\n hasVideo: false,\n nb: nbSamples\n };\n this.isAudioContiguous = true;\n console.assert(mdat.length, 'MDAT length must not be zero');\n return audioData;\n };\n\n _proto.remuxEmptyAudio = function remuxEmptyAudio(track, timeOffset, contiguous, videoData) {\n var inputTimeScale = track.inputTimeScale;\n var mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n var scaleFactor = inputTimeScale / mp4timeScale;\n var nextAudioPts = this.nextAudioPts; // sync with video's timestamp\n\n var startDTS = (nextAudioPts !== null ? nextAudioPts : videoData.startDTS * inputTimeScale) + this._initDTS;\n var endDTS = videoData.endDTS * inputTimeScale + this._initDTS; // one sample's duration value\n\n var frameDuration = scaleFactor * AAC_SAMPLES_PER_FRAME; // samples count of this segment's duration\n\n var nbSamples = Math.ceil((endDTS - startDTS) / frameDuration); // silent frame\n\n var silentFrame = _aac_helper__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn('[mp4-remuxer]: remux empty Audio'); // Can't remux if we can't generate a silent frame...\n\n if (!silentFrame) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].trace('[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec');\n return;\n }\n\n var samples = [];\n\n for (var i = 0; i < nbSamples; i++) {\n var stamp = startDTS + i * frameDuration;\n samples.push({\n unit: silentFrame,\n pts: stamp,\n dts: stamp\n });\n }\n\n track.samples = samples;\n return this.remuxAudio(track, timeOffset, contiguous, false);\n };\n\n return MP4Remuxer;\n}();\n\n\nfunction normalizePts(value, reference) {\n var offset;\n\n if (reference === null) {\n return value;\n }\n\n if (reference < value) {\n // - 2^33\n offset = -8589934592;\n } else {\n // + 2^33\n offset = 8589934592;\n }\n /* PTS is 33bit (from 0 to 2^33 -1)\n if diff between value and reference is bigger than half of the amplitude (2^32) then it means that\n PTS looping occured. fill the gap */\n\n\n while (Math.abs(value - reference) > 4294967296) {\n value += offset;\n }\n\n return value;\n}\n\nfunction findKeyframeIndex(samples) {\n for (var i = 0; i < samples.length; i++) {\n if (samples[i].key) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction flushTextTrackMetadataCueSamples(track, timeOffset, initPTS, initDTS) {\n var length = track.samples.length;\n\n if (!length) {\n return;\n }\n\n var inputTimeScale = track.inputTimeScale;\n\n for (var index = 0; index < length; index++) {\n var sample = track.samples[index]; // setting id3 pts, dts to relative time\n // using this._initPTS and this._initDTS to calculate relative time\n\n sample.pts = normalizePts(sample.pts - initPTS, timeOffset * inputTimeScale) / inputTimeScale;\n sample.dts = normalizePts(sample.dts - initDTS, timeOffset * inputTimeScale) / inputTimeScale;\n }\n\n var samples = track.samples;\n track.samples = [];\n return {\n samples: samples\n };\n}\nfunction flushTextTrackUserdataCueSamples(track, timeOffset, initPTS) {\n var length = track.samples.length;\n\n if (!length) {\n return;\n }\n\n var inputTimeScale = track.inputTimeScale;\n\n for (var index = 0; index < length; index++) {\n var sample = track.samples[index]; // setting text pts, dts to relative time\n // using this._initPTS and this._initDTS to calculate relative time\n\n sample.pts = normalizePts(sample.pts - initPTS, timeOffset * inputTimeScale) / inputTimeScale;\n }\n\n track.samples.sort(function (a, b) {\n return a.pts - b.pts;\n });\n var samples = track.samples;\n track.samples = [];\n return {\n samples: samples\n };\n}\n\nvar Mp4Sample = function Mp4Sample(isKeyframe, duration, size, cts) {\n this.size = void 0;\n this.duration = void 0;\n this.cts = void 0;\n this.flags = void 0;\n this.duration = duration;\n this.size = size;\n this.cts = cts;\n this.flags = new Mp4SampleFlags(isKeyframe);\n};\n\nvar Mp4SampleFlags = function Mp4SampleFlags(isKeyframe) {\n this.isLeading = 0;\n this.isDependedOn = 0;\n this.hasRedundancy = 0;\n this.degradPrio = 0;\n this.dependsOn = 1;\n this.isNonSync = 1;\n this.dependsOn = isKeyframe ? 2 : 1;\n this.isNonSync = isKeyframe ? 0 : 1;\n};\n\n/***/ }),\n\n/***/ \"./src/remux/passthrough-remuxer.ts\":\n/*!******************************************!*\\\n !*** ./src/remux/passthrough-remuxer.ts ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _mp4_remuxer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mp4-remuxer */ \"./src/remux/mp4-remuxer.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _loader_fragment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../loader/fragment */ \"./src/loader/fragment.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\n\n\n\n\nvar PassThroughRemuxer = /*#__PURE__*/function () {\n function PassThroughRemuxer() {\n this.emitInitSegment = false;\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this.initData = void 0;\n this.initPTS = void 0;\n this.initTracks = void 0;\n this.lastEndTime = null;\n }\n\n var _proto = PassThroughRemuxer.prototype;\n\n _proto.destroy = function destroy() {};\n\n _proto.resetTimeStamp = function resetTimeStamp(defaultInitPTS) {\n this.initPTS = defaultInitPTS;\n this.lastEndTime = null;\n };\n\n _proto.resetNextTimestamp = function resetNextTimestamp() {\n this.lastEndTime = null;\n };\n\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec) {\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this.generateInitSegment(initSegment);\n this.emitInitSegment = true;\n };\n\n _proto.generateInitSegment = function generateInitSegment(initSegment) {\n var audioCodec = this.audioCodec,\n videoCodec = this.videoCodec;\n\n if (!initSegment || !initSegment.byteLength) {\n this.initTracks = undefined;\n this.initData = undefined;\n return;\n }\n\n var initData = this.initData = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"parseInitSegment\"])(initSegment); // Get codec from initSegment or fallback to default\n\n if (!audioCodec) {\n audioCodec = getParsedTrackCodec(initData.audio, _loader_fragment__WEBPACK_IMPORTED_MODULE_3__[\"ElementaryStreamTypes\"].AUDIO);\n }\n\n if (!videoCodec) {\n videoCodec = getParsedTrackCodec(initData.video, _loader_fragment__WEBPACK_IMPORTED_MODULE_3__[\"ElementaryStreamTypes\"].VIDEO);\n }\n\n var tracks = {};\n\n if (initData.audio && initData.video) {\n tracks.audiovideo = {\n container: 'video/mp4',\n codec: audioCodec + ',' + videoCodec,\n initSegment: initSegment,\n id: 'main'\n };\n } else if (initData.audio) {\n tracks.audio = {\n container: 'audio/mp4',\n codec: audioCodec,\n initSegment: initSegment,\n id: 'audio'\n };\n } else if (initData.video) {\n tracks.video = {\n container: 'video/mp4',\n codec: videoCodec,\n initSegment: initSegment,\n id: 'main'\n };\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].warn('[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes.');\n }\n\n this.initTracks = tracks;\n };\n\n _proto.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset) {\n var _this$initPTS;\n\n var initPTS = this.initPTS,\n lastEndTime = this.lastEndTime;\n var result = {\n audio: undefined,\n video: undefined,\n text: textTrack,\n id3: id3Track,\n initSegment: undefined\n }; // If we haven't yet set a lastEndDTS, or it was reset, set it to the provided timeOffset. We want to use the\n // lastEndDTS over timeOffset whenever possible; during progressive playback, the media source will not update\n // the media duration (which is what timeOffset is provided as) before we need to process the next chunk.\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(lastEndTime)) {\n lastEndTime = this.lastEndTime = timeOffset || 0;\n } // The binary segment data is added to the videoTrack in the mp4demuxer. We don't check to see if the data is only\n // audio or video (or both); adding it to video was an arbitrary choice.\n\n\n var data = videoTrack.samples;\n\n if (!data || !data.length) {\n return result;\n }\n\n var initSegment = {\n initPTS: undefined,\n timescale: 1\n };\n var initData = this.initData;\n\n if (!initData || !initData.length) {\n this.generateInitSegment(data);\n initData = this.initData;\n }\n\n if (!initData || !initData.length) {\n // We can't remux if the initSegment could not be generated\n _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].warn('[passthrough-remuxer.ts]: Failed to generate initSegment.');\n return result;\n }\n\n if (this.emitInitSegment) {\n initSegment.tracks = this.initTracks;\n this.emitInitSegment = false;\n }\n\n var startDTS = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"getStartDTS\"])(initData, data);\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(initPTS)) {\n this.initPTS = initSegment.initPTS = initPTS = startDTS - timeOffset;\n }\n\n var duration = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"getDuration\"])(data, initData);\n var startTime = audioTrack ? startDTS - initPTS : lastEndTime;\n var endTime = startTime + duration;\n Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"offsetStartDTS\"])(initData, data, initPTS);\n\n if (duration > 0) {\n this.lastEndTime = endTime;\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].warn('Duration parsed from mp4 should be greater than zero');\n this.resetNextTimestamp();\n }\n\n var hasAudio = !!initData.audio;\n var hasVideo = !!initData.video;\n var type = '';\n\n if (hasAudio) {\n type += 'audio';\n }\n\n if (hasVideo) {\n type += 'video';\n }\n\n var track = {\n data1: data,\n startPTS: startTime,\n startDTS: startTime,\n endPTS: endTime,\n endDTS: endTime,\n type: type,\n hasAudio: hasAudio,\n hasVideo: hasVideo,\n nb: 1,\n dropped: 0\n };\n result.audio = track.type === 'audio' ? track : undefined;\n result.video = track.type !== 'audio' ? track : undefined;\n result.initSegment = initSegment;\n var initPtsNum = (_this$initPTS = this.initPTS) != null ? _this$initPTS : 0;\n result.id3 = Object(_mp4_remuxer__WEBPACK_IMPORTED_MODULE_1__[\"flushTextTrackMetadataCueSamples\"])(id3Track, timeOffset, initPtsNum, initPtsNum);\n\n if (textTrack.samples.length) {\n result.text = Object(_mp4_remuxer__WEBPACK_IMPORTED_MODULE_1__[\"flushTextTrackUserdataCueSamples\"])(textTrack, timeOffset, initPtsNum);\n }\n\n return result;\n };\n\n return PassThroughRemuxer;\n}();\n\nfunction getParsedTrackCodec(track, type) {\n var parsedCodec = track === null || track === void 0 ? void 0 : track.codec;\n\n if (parsedCodec && parsedCodec.length > 4) {\n return parsedCodec;\n } // Since mp4-tools cannot parse full codec string (see 'TODO: Parse codec details'... in mp4-tools)\n // Provide defaults based on codec type\n // This allows for some playback of some fmp4 playlists without CODECS defined in manifest\n\n\n if (parsedCodec === 'hvc1' || parsedCodec === 'hev1') {\n return 'hvc1.1.c.L120.90';\n }\n\n if (parsedCodec === 'av01') {\n return 'av01.0.04M.08';\n }\n\n if (parsedCodec === 'avc1' || type === _loader_fragment__WEBPACK_IMPORTED_MODULE_3__[\"ElementaryStreamTypes\"].VIDEO) {\n return 'avc1.42e01e';\n }\n\n return 'mp4a.40.5';\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (PassThroughRemuxer);\n\n/***/ }),\n\n/***/ \"./src/task-loop.ts\":\n/*!**************************!*\\\n !*** ./src/task-loop.ts ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return TaskLoop; });\n/**\n * Sub-class specialization of EventHandler base class.\n *\n * TaskLoop allows to schedule a task function being called (optionnaly repeatedly) on the main loop,\n * scheduled asynchroneously, avoiding recursive calls in the same tick.\n *\n * The task itself is implemented in `doTick`. It can be requested and called for single execution\n * using the `tick` method.\n *\n * It will be assured that the task execution method (`tick`) only gets called once per main loop \"tick\",\n * no matter how often it gets requested for execution. Execution in further ticks will be scheduled accordingly.\n *\n * If further execution requests have already been scheduled on the next tick, it can be checked with `hasNextTick`,\n * and cancelled with `clearNextTick`.\n *\n * The task can be scheduled as an interval repeatedly with a period as parameter (see `setInterval`, `clearInterval`).\n *\n * Sub-classes need to implement the `doTick` method which will effectively have the task execution routine.\n *\n * Further explanations:\n *\n * The baseclass has a `tick` method that will schedule the doTick call. It may be called synchroneously\n * only for a stack-depth of one. On re-entrant calls, sub-sequent calls are scheduled for next main loop ticks.\n *\n * When the task execution (`tick` method) is called in re-entrant way this is detected and\n * we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further\n * task processing on the next main loop iteration (also known as \"next tick\" in the Node/JS runtime lingo).\n */\nvar TaskLoop = /*#__PURE__*/function () {\n function TaskLoop() {\n this._boundTick = void 0;\n this._tickTimer = null;\n this._tickInterval = null;\n this._tickCallCount = 0;\n this._boundTick = this.tick.bind(this);\n }\n\n var _proto = TaskLoop.prototype;\n\n _proto.destroy = function destroy() {\n this.onHandlerDestroying();\n this.onHandlerDestroyed();\n };\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n // clear all timers before unregistering from event bus\n this.clearNextTick();\n this.clearInterval();\n };\n\n _proto.onHandlerDestroyed = function onHandlerDestroyed() {}\n /**\n * @returns {boolean}\n */\n ;\n\n _proto.hasInterval = function hasInterval() {\n return !!this._tickInterval;\n }\n /**\n * @returns {boolean}\n */\n ;\n\n _proto.hasNextTick = function hasNextTick() {\n return !!this._tickTimer;\n }\n /**\n * @param {number} millis Interval time (ms)\n * @returns {boolean} True when interval has been scheduled, false when already scheduled (no effect)\n */\n ;\n\n _proto.setInterval = function setInterval(millis) {\n if (!this._tickInterval) {\n this._tickInterval = self.setInterval(this._boundTick, millis);\n return true;\n }\n\n return false;\n }\n /**\n * @returns {boolean} True when interval was cleared, false when none was set (no effect)\n */\n ;\n\n _proto.clearInterval = function clearInterval() {\n if (this._tickInterval) {\n self.clearInterval(this._tickInterval);\n this._tickInterval = null;\n return true;\n }\n\n return false;\n }\n /**\n * @returns {boolean} True when timeout was cleared, false when none was set (no effect)\n */\n ;\n\n _proto.clearNextTick = function clearNextTick() {\n if (this._tickTimer) {\n self.clearTimeout(this._tickTimer);\n this._tickTimer = null;\n return true;\n }\n\n return false;\n }\n /**\n * Will call the subclass doTick implementation in this main loop tick\n * or in the next one (via setTimeout(,0)) in case it has already been called\n * in this tick (in case this is a re-entrant call).\n */\n ;\n\n _proto.tick = function tick() {\n this._tickCallCount++;\n\n if (this._tickCallCount === 1) {\n this.doTick(); // re-entrant call to tick from previous doTick call stack\n // -> schedule a call on the next main loop iteration to process this task processing request\n\n if (this._tickCallCount > 1) {\n // make sure only one timer exists at any time at max\n this.tickImmediate();\n }\n\n this._tickCallCount = 0;\n }\n };\n\n _proto.tickImmediate = function tickImmediate() {\n this.clearNextTick();\n this._tickTimer = self.setTimeout(this._boundTick, 0);\n }\n /**\n * For subclass to implement task logic\n * @abstract\n */\n ;\n\n _proto.doTick = function doTick() {};\n\n return TaskLoop;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/types/cmcd.ts\":\n/*!***************************!*\\\n !*** ./src/types/cmcd.ts ***!\n \\***************************/\n/*! exports provided: CMCDVersion, CMCDObjectType, CMCDStreamingFormat, CMCDStreamType */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CMCDVersion\", function() { return CMCDVersion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CMCDObjectType\", function() { return CMCDObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CMCDStreamingFormat\", function() { return CMCDStreamingFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CMCDStreamType\", function() { return CMCDStreamType; });\n/**\n * CMCD spec version\n */\nvar CMCDVersion = 1;\n/**\n * CMCD Object Type\n */\n\nvar CMCDObjectType;\n/**\n * CMCD Streaming Format\n */\n\n(function (CMCDObjectType) {\n CMCDObjectType[\"MANIFEST\"] = \"m\";\n CMCDObjectType[\"AUDIO\"] = \"a\";\n CMCDObjectType[\"VIDEO\"] = \"v\";\n CMCDObjectType[\"MUXED\"] = \"av\";\n CMCDObjectType[\"INIT\"] = \"i\";\n CMCDObjectType[\"CAPTION\"] = \"c\";\n CMCDObjectType[\"TIMED_TEXT\"] = \"tt\";\n CMCDObjectType[\"KEY\"] = \"k\";\n CMCDObjectType[\"OTHER\"] = \"o\";\n})(CMCDObjectType || (CMCDObjectType = {}));\n\nvar CMCDStreamingFormat;\n/**\n * CMCD Streaming Type\n */\n\n(function (CMCDStreamingFormat) {\n CMCDStreamingFormat[\"DASH\"] = \"d\";\n CMCDStreamingFormat[\"HLS\"] = \"h\";\n CMCDStreamingFormat[\"SMOOTH\"] = \"s\";\n CMCDStreamingFormat[\"OTHER\"] = \"o\";\n})(CMCDStreamingFormat || (CMCDStreamingFormat = {}));\n\nvar CMCDStreamType;\n/**\n * CMCD Headers\n */\n\n(function (CMCDStreamType) {\n CMCDStreamType[\"VOD\"] = \"v\";\n CMCDStreamType[\"LIVE\"] = \"l\";\n})(CMCDStreamType || (CMCDStreamType = {}));\n\n/***/ }),\n\n/***/ \"./src/types/demuxer.ts\":\n/*!******************************!*\\\n !*** ./src/types/demuxer.ts ***!\n \\******************************/\n/*! exports provided: MetadataSchema */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MetadataSchema\", function() { return MetadataSchema; });\nvar MetadataSchema;\n\n(function (MetadataSchema) {\n MetadataSchema[\"audioId3\"] = \"org.id3\";\n MetadataSchema[\"dateRange\"] = \"com.apple.quicktime.HLS\";\n MetadataSchema[\"emsg\"] = \"https://aomedia.org/emsg/ID3\";\n})(MetadataSchema || (MetadataSchema = {}));\n\n/***/ }),\n\n/***/ \"./src/types/level.ts\":\n/*!****************************!*\\\n !*** ./src/types/level.ts ***!\n \\****************************/\n/*! exports provided: HlsSkip, getSkipValue, HlsUrlParameters, Level */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HlsSkip\", function() { return HlsSkip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSkipValue\", function() { return getSkipValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HlsUrlParameters\", function() { return HlsUrlParameters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Level\", function() { return Level; });\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar HlsSkip;\n\n(function (HlsSkip) {\n HlsSkip[\"No\"] = \"\";\n HlsSkip[\"Yes\"] = \"YES\";\n HlsSkip[\"v2\"] = \"v2\";\n})(HlsSkip || (HlsSkip = {}));\n\nfunction getSkipValue(details, msn) {\n var canSkipUntil = details.canSkipUntil,\n canSkipDateRanges = details.canSkipDateRanges,\n endSN = details.endSN;\n var snChangeGoal = msn !== undefined ? msn - endSN : 0;\n\n if (canSkipUntil && snChangeGoal < canSkipUntil) {\n if (canSkipDateRanges) {\n return HlsSkip.v2;\n }\n\n return HlsSkip.Yes;\n }\n\n return HlsSkip.No;\n}\nvar HlsUrlParameters = /*#__PURE__*/function () {\n function HlsUrlParameters(msn, part, skip) {\n this.msn = void 0;\n this.part = void 0;\n this.skip = void 0;\n this.msn = msn;\n this.part = part;\n this.skip = skip;\n }\n\n var _proto = HlsUrlParameters.prototype;\n\n _proto.addDirectives = function addDirectives(uri) {\n var url = new self.URL(uri);\n\n if (this.msn !== undefined) {\n url.searchParams.set('_HLS_msn', this.msn.toString());\n }\n\n if (this.part !== undefined) {\n url.searchParams.set('_HLS_part', this.part.toString());\n }\n\n if (this.skip) {\n url.searchParams.set('_HLS_skip', this.skip);\n }\n\n return url.toString();\n };\n\n return HlsUrlParameters;\n}();\nvar Level = /*#__PURE__*/function () {\n function Level(data) {\n this.attrs = void 0;\n this.audioCodec = void 0;\n this.bitrate = void 0;\n this.codecSet = void 0;\n this.height = void 0;\n this.id = void 0;\n this.name = void 0;\n this.videoCodec = void 0;\n this.width = void 0;\n this.unknownCodecs = void 0;\n this.audioGroupIds = void 0;\n this.details = void 0;\n this.fragmentError = 0;\n this.loadError = 0;\n this.loaded = void 0;\n this.realBitrate = 0;\n this.textGroupIds = void 0;\n this.url = void 0;\n this._urlId = 0;\n this.url = [data.url];\n this.attrs = data.attrs;\n this.bitrate = data.bitrate;\n\n if (data.details) {\n this.details = data.details;\n }\n\n this.id = data.id || 0;\n this.name = data.name;\n this.width = data.width || 0;\n this.height = data.height || 0;\n this.audioCodec = data.audioCodec;\n this.videoCodec = data.videoCodec;\n this.unknownCodecs = data.unknownCodecs;\n this.codecSet = [data.videoCodec, data.audioCodec].filter(function (c) {\n return c;\n }).join(',').replace(/\\.[^.,]+/g, '');\n }\n\n _createClass(Level, [{\n key: \"maxBitrate\",\n get: function get() {\n return Math.max(this.realBitrate, this.bitrate);\n }\n }, {\n key: \"uri\",\n get: function get() {\n return this.url[this._urlId] || '';\n }\n }, {\n key: \"urlId\",\n get: function get() {\n return this._urlId;\n },\n set: function set(value) {\n var newValue = value % this.url.length;\n\n if (this._urlId !== newValue) {\n this.details = undefined;\n this._urlId = newValue;\n }\n }\n }]);\n\n return Level;\n}();\n\n/***/ }),\n\n/***/ \"./src/types/loader.ts\":\n/*!*****************************!*\\\n !*** ./src/types/loader.ts ***!\n \\*****************************/\n/*! exports provided: PlaylistContextType, PlaylistLevelType */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PlaylistContextType\", function() { return PlaylistContextType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PlaylistLevelType\", function() { return PlaylistLevelType; });\nvar PlaylistContextType;\n\n(function (PlaylistContextType) {\n PlaylistContextType[\"MANIFEST\"] = \"manifest\";\n PlaylistContextType[\"LEVEL\"] = \"level\";\n PlaylistContextType[\"AUDIO_TRACK\"] = \"audioTrack\";\n PlaylistContextType[\"SUBTITLE_TRACK\"] = \"subtitleTrack\";\n})(PlaylistContextType || (PlaylistContextType = {}));\n\nvar PlaylistLevelType;\n\n(function (PlaylistLevelType) {\n PlaylistLevelType[\"MAIN\"] = \"main\";\n PlaylistLevelType[\"AUDIO\"] = \"audio\";\n PlaylistLevelType[\"SUBTITLE\"] = \"subtitle\";\n})(PlaylistLevelType || (PlaylistLevelType = {}));\n\n/***/ }),\n\n/***/ \"./src/types/transmuxer.ts\":\n/*!*********************************!*\\\n !*** ./src/types/transmuxer.ts ***!\n \\*********************************/\n/*! exports provided: ChunkMetadata */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChunkMetadata\", function() { return ChunkMetadata; });\nvar ChunkMetadata = function ChunkMetadata(level, sn, id, size, part, partial) {\n if (size === void 0) {\n size = 0;\n }\n\n if (part === void 0) {\n part = -1;\n }\n\n if (partial === void 0) {\n partial = false;\n }\n\n this.level = void 0;\n this.sn = void 0;\n this.part = void 0;\n this.id = void 0;\n this.size = void 0;\n this.partial = void 0;\n this.transmuxing = getNewPerformanceTiming();\n this.buffering = {\n audio: getNewPerformanceTiming(),\n video: getNewPerformanceTiming(),\n audiovideo: getNewPerformanceTiming()\n };\n this.level = level;\n this.sn = sn;\n this.id = id;\n this.size = size;\n this.part = part;\n this.partial = partial;\n};\n\nfunction getNewPerformanceTiming() {\n return {\n start: 0,\n executeStart: 0,\n executeEnd: 0,\n end: 0\n };\n}\n\n/***/ }),\n\n/***/ \"./src/utils/attr-list.ts\":\n/*!********************************!*\\\n !*** ./src/utils/attr-list.ts ***!\n \\********************************/\n/*! exports provided: AttrList */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AttrList\", function() { return AttrList; });\nvar DECIMAL_RESOLUTION_REGEX = /^(\\d+)x(\\d+)$/; // eslint-disable-line no-useless-escape\n\nvar ATTR_LIST_REGEX = /\\s*(.+?)\\s*=((?:\\\".*?\\\")|.*?)(?:,|$)/g; // eslint-disable-line no-useless-escape\n// adapted from https://github.com/kanongil/node-m3u8parse/blob/master/attrlist.js\n\nvar AttrList = /*#__PURE__*/function () {\n function AttrList(attrs) {\n if (typeof attrs === 'string') {\n attrs = AttrList.parseAttrList(attrs);\n }\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n this[attr] = attrs[attr];\n }\n }\n }\n\n var _proto = AttrList.prototype;\n\n _proto.decimalInteger = function decimalInteger(attrName) {\n var intValue = parseInt(this[attrName], 10);\n\n if (intValue > Number.MAX_SAFE_INTEGER) {\n return Infinity;\n }\n\n return intValue;\n };\n\n _proto.hexadecimalInteger = function hexadecimalInteger(attrName) {\n if (this[attrName]) {\n var stringValue = (this[attrName] || '0x').slice(2);\n stringValue = (stringValue.length & 1 ? '0' : '') + stringValue;\n var value = new Uint8Array(stringValue.length / 2);\n\n for (var i = 0; i < stringValue.length / 2; i++) {\n value[i] = parseInt(stringValue.slice(i * 2, i * 2 + 2), 16);\n }\n\n return value;\n } else {\n return null;\n }\n };\n\n _proto.hexadecimalIntegerAsNumber = function hexadecimalIntegerAsNumber(attrName) {\n var intValue = parseInt(this[attrName], 16);\n\n if (intValue > Number.MAX_SAFE_INTEGER) {\n return Infinity;\n }\n\n return intValue;\n };\n\n _proto.decimalFloatingPoint = function decimalFloatingPoint(attrName) {\n return parseFloat(this[attrName]);\n };\n\n _proto.optionalFloat = function optionalFloat(attrName, defaultValue) {\n var value = this[attrName];\n return value ? parseFloat(value) : defaultValue;\n };\n\n _proto.enumeratedString = function enumeratedString(attrName) {\n return this[attrName];\n };\n\n _proto.bool = function bool(attrName) {\n return this[attrName] === 'YES';\n };\n\n _proto.decimalResolution = function decimalResolution(attrName) {\n var res = DECIMAL_RESOLUTION_REGEX.exec(this[attrName]);\n\n if (res === null) {\n return undefined;\n }\n\n return {\n width: parseInt(res[1], 10),\n height: parseInt(res[2], 10)\n };\n };\n\n AttrList.parseAttrList = function parseAttrList(input) {\n var match;\n var attrs = {};\n var quote = '\"';\n ATTR_LIST_REGEX.lastIndex = 0;\n\n while ((match = ATTR_LIST_REGEX.exec(input)) !== null) {\n var value = match[2];\n\n if (value.indexOf(quote) === 0 && value.lastIndexOf(quote) === value.length - 1) {\n value = value.slice(1, -1);\n }\n\n attrs[match[1]] = value;\n }\n\n return attrs;\n };\n\n return AttrList;\n}();\n\n/***/ }),\n\n/***/ \"./src/utils/binary-search.ts\":\n/*!************************************!*\\\n !*** ./src/utils/binary-search.ts ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar BinarySearch = {\n /**\n * Searches for an item in an array which matches a certain condition.\n * This requires the condition to only match one item in the array,\n * and for the array to be ordered.\n *\n * @param {Array<T>} list The array to search.\n * @param {BinarySearchComparison<T>} comparisonFn\n * Called and provided a candidate item as the first argument.\n * Should return:\n * > -1 if the item should be located at a lower index than the provided item.\n * > 1 if the item should be located at a higher index than the provided item.\n * > 0 if the item is the item you're looking for.\n *\n * @return {T | null} The object if it is found or null otherwise.\n */\n search: function search(list, comparisonFn) {\n var minIndex = 0;\n var maxIndex = list.length - 1;\n var currentIndex = null;\n var currentElement = null;\n\n while (minIndex <= maxIndex) {\n currentIndex = (minIndex + maxIndex) / 2 | 0;\n currentElement = list[currentIndex];\n var comparisonResult = comparisonFn(currentElement);\n\n if (comparisonResult > 0) {\n minIndex = currentIndex + 1;\n } else if (comparisonResult < 0) {\n maxIndex = currentIndex - 1;\n } else {\n return currentElement;\n }\n }\n\n return null;\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (BinarySearch);\n\n/***/ }),\n\n/***/ \"./src/utils/buffer-helper.ts\":\n/*!************************************!*\\\n !*** ./src/utils/buffer-helper.ts ***!\n \\************************************/\n/*! exports provided: BufferHelper */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BufferHelper\", function() { return BufferHelper; });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logger */ \"./src/utils/logger.ts\");\n/**\n * @module BufferHelper\n *\n * Providing methods dealing with buffer length retrieval for example.\n *\n * In general, a helper around HTML5 MediaElement TimeRanges gathered from `buffered` property.\n *\n * Also @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/buffered\n */\n\nvar noopBuffered = {\n length: 0,\n start: function start() {\n return 0;\n },\n end: function end() {\n return 0;\n }\n};\nvar BufferHelper = /*#__PURE__*/function () {\n function BufferHelper() {}\n\n /**\n * Return true if `media`'s buffered include `position`\n * @param {Bufferable} media\n * @param {number} position\n * @returns {boolean}\n */\n BufferHelper.isBuffered = function isBuffered(media, position) {\n try {\n if (media) {\n var buffered = BufferHelper.getBuffered(media);\n\n for (var i = 0; i < buffered.length; i++) {\n if (position >= buffered.start(i) && position <= buffered.end(i)) {\n return true;\n }\n }\n }\n } catch (error) {// this is to catch\n // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n // This SourceBuffer has been removed from the parent media source\n }\n\n return false;\n };\n\n BufferHelper.bufferInfo = function bufferInfo(media, pos, maxHoleDuration) {\n try {\n if (media) {\n var vbuffered = BufferHelper.getBuffered(media);\n var buffered = [];\n var i;\n\n for (i = 0; i < vbuffered.length; i++) {\n buffered.push({\n start: vbuffered.start(i),\n end: vbuffered.end(i)\n });\n }\n\n return this.bufferedInfo(buffered, pos, maxHoleDuration);\n }\n } catch (error) {// this is to catch\n // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n // This SourceBuffer has been removed from the parent media source\n }\n\n return {\n len: 0,\n start: pos,\n end: pos,\n nextStart: undefined\n };\n };\n\n BufferHelper.bufferedInfo = function bufferedInfo(buffered, pos, maxHoleDuration) {\n pos = Math.max(0, pos); // sort on buffer.start/smaller end (IE does not always return sorted buffered range)\n\n buffered.sort(function (a, b) {\n var diff = a.start - b.start;\n\n if (diff) {\n return diff;\n } else {\n return b.end - a.end;\n }\n });\n var buffered2 = [];\n\n if (maxHoleDuration) {\n // there might be some small holes between buffer time range\n // consider that holes smaller than maxHoleDuration are irrelevant and build another\n // buffer time range representations that discards those holes\n for (var i = 0; i < buffered.length; i++) {\n var buf2len = buffered2.length;\n\n if (buf2len) {\n var buf2end = buffered2[buf2len - 1].end; // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative)\n\n if (buffered[i].start - buf2end < maxHoleDuration) {\n // merge overlapping time ranges\n // update lastRange.end only if smaller than item.end\n // e.g. [ 1, 15] with [ 2,8] => [ 1,15] (no need to modify lastRange.end)\n // whereas [ 1, 8] with [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15])\n if (buffered[i].end > buf2end) {\n buffered2[buf2len - 1].end = buffered[i].end;\n }\n } else {\n // big hole\n buffered2.push(buffered[i]);\n }\n } else {\n // first value\n buffered2.push(buffered[i]);\n }\n }\n } else {\n buffered2 = buffered;\n }\n\n var bufferLen = 0; // bufferStartNext can possibly be undefined based on the conditional logic below\n\n var bufferStartNext; // bufferStart and bufferEnd are buffer boundaries around current video position\n\n var bufferStart = pos;\n var bufferEnd = pos;\n\n for (var _i = 0; _i < buffered2.length; _i++) {\n var start = buffered2[_i].start;\n var end = buffered2[_i].end; // logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i));\n\n if (pos + maxHoleDuration >= start && pos < end) {\n // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length\n bufferStart = start;\n bufferEnd = end;\n bufferLen = bufferEnd - pos;\n } else if (pos + maxHoleDuration < start) {\n bufferStartNext = start;\n break;\n }\n }\n\n return {\n len: bufferLen,\n start: bufferStart || 0,\n end: bufferEnd || 0,\n nextStart: bufferStartNext\n };\n }\n /**\n * Safe method to get buffered property.\n * SourceBuffer.buffered may throw if SourceBuffer is removed from it's MediaSource\n */\n ;\n\n BufferHelper.getBuffered = function getBuffered(media) {\n try {\n return media.buffered;\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].log('failed to get media.buffered', e);\n return noopBuffered;\n }\n };\n\n return BufferHelper;\n}();\n\n/***/ }),\n\n/***/ \"./src/utils/cea-608-parser.ts\":\n/*!*************************************!*\\\n !*** ./src/utils/cea-608-parser.ts ***!\n \\*************************************/\n/*! exports provided: Row, CaptionScreen, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Row\", function() { return Row; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CaptionScreen\", function() { return CaptionScreen; });\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n/**\n *\n * This code was ported from the dash.js project at:\n * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Exceptions from regular ASCII. CodePoints are mapped to UTF-16 codes\n */\n\nvar specialCea608CharsCodes = {\n 0x2a: 0xe1,\n // lowercase a, acute accent\n 0x5c: 0xe9,\n // lowercase e, acute accent\n 0x5e: 0xed,\n // lowercase i, acute accent\n 0x5f: 0xf3,\n // lowercase o, acute accent\n 0x60: 0xfa,\n // lowercase u, acute accent\n 0x7b: 0xe7,\n // lowercase c with cedilla\n 0x7c: 0xf7,\n // division symbol\n 0x7d: 0xd1,\n // uppercase N tilde\n 0x7e: 0xf1,\n // lowercase n tilde\n 0x7f: 0x2588,\n // Full block\n // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F\n // THIS MEANS THAT \\x50 MUST BE ADDED TO THE VALUES\n 0x80: 0xae,\n // Registered symbol (R)\n 0x81: 0xb0,\n // degree sign\n 0x82: 0xbd,\n // 1/2 symbol\n 0x83: 0xbf,\n // Inverted (open) question mark\n 0x84: 0x2122,\n // Trademark symbol (TM)\n 0x85: 0xa2,\n // Cents symbol\n 0x86: 0xa3,\n // Pounds sterling\n 0x87: 0x266a,\n // Music 8'th note\n 0x88: 0xe0,\n // lowercase a, grave accent\n 0x89: 0x20,\n // transparent space (regular)\n 0x8a: 0xe8,\n // lowercase e, grave accent\n 0x8b: 0xe2,\n // lowercase a, circumflex accent\n 0x8c: 0xea,\n // lowercase e, circumflex accent\n 0x8d: 0xee,\n // lowercase i, circumflex accent\n 0x8e: 0xf4,\n // lowercase o, circumflex accent\n 0x8f: 0xfb,\n // lowercase u, circumflex accent\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F\n 0x90: 0xc1,\n // capital letter A with acute\n 0x91: 0xc9,\n // capital letter E with acute\n 0x92: 0xd3,\n // capital letter O with acute\n 0x93: 0xda,\n // capital letter U with acute\n 0x94: 0xdc,\n // capital letter U with diaresis\n 0x95: 0xfc,\n // lowercase letter U with diaeresis\n 0x96: 0x2018,\n // opening single quote\n 0x97: 0xa1,\n // inverted exclamation mark\n 0x98: 0x2a,\n // asterisk\n 0x99: 0x2019,\n // closing single quote\n 0x9a: 0x2501,\n // box drawings heavy horizontal\n 0x9b: 0xa9,\n // copyright sign\n 0x9c: 0x2120,\n // Service mark\n 0x9d: 0x2022,\n // (round) bullet\n 0x9e: 0x201c,\n // Left double quotation mark\n 0x9f: 0x201d,\n // Right double quotation mark\n 0xa0: 0xc0,\n // uppercase A, grave accent\n 0xa1: 0xc2,\n // uppercase A, circumflex\n 0xa2: 0xc7,\n // uppercase C with cedilla\n 0xa3: 0xc8,\n // uppercase E, grave accent\n 0xa4: 0xca,\n // uppercase E, circumflex\n 0xa5: 0xcb,\n // capital letter E with diaresis\n 0xa6: 0xeb,\n // lowercase letter e with diaresis\n 0xa7: 0xce,\n // uppercase I, circumflex\n 0xa8: 0xcf,\n // uppercase I, with diaresis\n 0xa9: 0xef,\n // lowercase i, with diaresis\n 0xaa: 0xd4,\n // uppercase O, circumflex\n 0xab: 0xd9,\n // uppercase U, grave accent\n 0xac: 0xf9,\n // lowercase u, grave accent\n 0xad: 0xdb,\n // uppercase U, circumflex\n 0xae: 0xab,\n // left-pointing double angle quotation mark\n 0xaf: 0xbb,\n // right-pointing double angle quotation mark\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F\n 0xb0: 0xc3,\n // Uppercase A, tilde\n 0xb1: 0xe3,\n // Lowercase a, tilde\n 0xb2: 0xcd,\n // Uppercase I, acute accent\n 0xb3: 0xcc,\n // Uppercase I, grave accent\n 0xb4: 0xec,\n // Lowercase i, grave accent\n 0xb5: 0xd2,\n // Uppercase O, grave accent\n 0xb6: 0xf2,\n // Lowercase o, grave accent\n 0xb7: 0xd5,\n // Uppercase O, tilde\n 0xb8: 0xf5,\n // Lowercase o, tilde\n 0xb9: 0x7b,\n // Open curly brace\n 0xba: 0x7d,\n // Closing curly brace\n 0xbb: 0x5c,\n // Backslash\n 0xbc: 0x5e,\n // Caret\n 0xbd: 0x5f,\n // Underscore\n 0xbe: 0x7c,\n // Pipe (vertical line)\n 0xbf: 0x223c,\n // Tilde operator\n 0xc0: 0xc4,\n // Uppercase A, umlaut\n 0xc1: 0xe4,\n // Lowercase A, umlaut\n 0xc2: 0xd6,\n // Uppercase O, umlaut\n 0xc3: 0xf6,\n // Lowercase o, umlaut\n 0xc4: 0xdf,\n // Esszett (sharp S)\n 0xc5: 0xa5,\n // Yen symbol\n 0xc6: 0xa4,\n // Generic currency sign\n 0xc7: 0x2503,\n // Box drawings heavy vertical\n 0xc8: 0xc5,\n // Uppercase A, ring\n 0xc9: 0xe5,\n // Lowercase A, ring\n 0xca: 0xd8,\n // Uppercase O, stroke\n 0xcb: 0xf8,\n // Lowercase o, strok\n 0xcc: 0x250f,\n // Box drawings heavy down and right\n 0xcd: 0x2513,\n // Box drawings heavy down and left\n 0xce: 0x2517,\n // Box drawings heavy up and right\n 0xcf: 0x251b // Box drawings heavy up and left\n\n};\n/**\n * Utils\n */\n\nvar getCharForByte = function getCharForByte(_byte) {\n var charCode = _byte;\n\n if (specialCea608CharsCodes.hasOwnProperty(_byte)) {\n charCode = specialCea608CharsCodes[_byte];\n }\n\n return String.fromCharCode(charCode);\n};\n\nvar NR_ROWS = 15;\nvar NR_COLS = 100; // Tables to look up row from PAC data\n\nvar rowsLowCh1 = {\n 0x11: 1,\n 0x12: 3,\n 0x15: 5,\n 0x16: 7,\n 0x17: 9,\n 0x10: 11,\n 0x13: 12,\n 0x14: 14\n};\nvar rowsHighCh1 = {\n 0x11: 2,\n 0x12: 4,\n 0x15: 6,\n 0x16: 8,\n 0x17: 10,\n 0x13: 13,\n 0x14: 15\n};\nvar rowsLowCh2 = {\n 0x19: 1,\n 0x1a: 3,\n 0x1d: 5,\n 0x1e: 7,\n 0x1f: 9,\n 0x18: 11,\n 0x1b: 12,\n 0x1c: 14\n};\nvar rowsHighCh2 = {\n 0x19: 2,\n 0x1a: 4,\n 0x1d: 6,\n 0x1e: 8,\n 0x1f: 10,\n 0x1b: 13,\n 0x1c: 15\n};\nvar backgroundColors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'black', 'transparent'];\nvar VerboseLevel;\n\n(function (VerboseLevel) {\n VerboseLevel[VerboseLevel[\"ERROR\"] = 0] = \"ERROR\";\n VerboseLevel[VerboseLevel[\"TEXT\"] = 1] = \"TEXT\";\n VerboseLevel[VerboseLevel[\"WARNING\"] = 2] = \"WARNING\";\n VerboseLevel[VerboseLevel[\"INFO\"] = 2] = \"INFO\";\n VerboseLevel[VerboseLevel[\"DEBUG\"] = 3] = \"DEBUG\";\n VerboseLevel[VerboseLevel[\"DATA\"] = 3] = \"DATA\";\n})(VerboseLevel || (VerboseLevel = {}));\n\nvar CaptionsLogger = /*#__PURE__*/function () {\n function CaptionsLogger() {\n this.time = null;\n this.verboseLevel = VerboseLevel.ERROR;\n }\n\n var _proto = CaptionsLogger.prototype;\n\n _proto.log = function log(severity, msg) {\n if (this.verboseLevel >= severity) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].log(this.time + \" [\" + severity + \"] \" + msg);\n }\n };\n\n return CaptionsLogger;\n}();\n\nvar numArrayToHexArray = function numArrayToHexArray(numArray) {\n var hexArray = [];\n\n for (var j = 0; j < numArray.length; j++) {\n hexArray.push(numArray[j].toString(16));\n }\n\n return hexArray;\n};\n\nvar PenState = /*#__PURE__*/function () {\n function PenState(foreground, underline, italics, background, flash) {\n this.foreground = void 0;\n this.underline = void 0;\n this.italics = void 0;\n this.background = void 0;\n this.flash = void 0;\n this.foreground = foreground || 'white';\n this.underline = underline || false;\n this.italics = italics || false;\n this.background = background || 'black';\n this.flash = flash || false;\n }\n\n var _proto2 = PenState.prototype;\n\n _proto2.reset = function reset() {\n this.foreground = 'white';\n this.underline = false;\n this.italics = false;\n this.background = 'black';\n this.flash = false;\n };\n\n _proto2.setStyles = function setStyles(styles) {\n var attribs = ['foreground', 'underline', 'italics', 'background', 'flash'];\n\n for (var i = 0; i < attribs.length; i++) {\n var style = attribs[i];\n\n if (styles.hasOwnProperty(style)) {\n this[style] = styles[style];\n }\n }\n };\n\n _proto2.isDefault = function isDefault() {\n return this.foreground === 'white' && !this.underline && !this.italics && this.background === 'black' && !this.flash;\n };\n\n _proto2.equals = function equals(other) {\n return this.foreground === other.foreground && this.underline === other.underline && this.italics === other.italics && this.background === other.background && this.flash === other.flash;\n };\n\n _proto2.copy = function copy(newPenState) {\n this.foreground = newPenState.foreground;\n this.underline = newPenState.underline;\n this.italics = newPenState.italics;\n this.background = newPenState.background;\n this.flash = newPenState.flash;\n };\n\n _proto2.toString = function toString() {\n return 'color=' + this.foreground + ', underline=' + this.underline + ', italics=' + this.italics + ', background=' + this.background + ', flash=' + this.flash;\n };\n\n return PenState;\n}();\n/**\n * Unicode character with styling and background.\n * @constructor\n */\n\n\nvar StyledUnicodeChar = /*#__PURE__*/function () {\n function StyledUnicodeChar(uchar, foreground, underline, italics, background, flash) {\n this.uchar = void 0;\n this.penState = void 0;\n this.uchar = uchar || ' '; // unicode character\n\n this.penState = new PenState(foreground, underline, italics, background, flash);\n }\n\n var _proto3 = StyledUnicodeChar.prototype;\n\n _proto3.reset = function reset() {\n this.uchar = ' ';\n this.penState.reset();\n };\n\n _proto3.setChar = function setChar(uchar, newPenState) {\n this.uchar = uchar;\n this.penState.copy(newPenState);\n };\n\n _proto3.setPenState = function setPenState(newPenState) {\n this.penState.copy(newPenState);\n };\n\n _proto3.equals = function equals(other) {\n return this.uchar === other.uchar && this.penState.equals(other.penState);\n };\n\n _proto3.copy = function copy(newChar) {\n this.uchar = newChar.uchar;\n this.penState.copy(newChar.penState);\n };\n\n _proto3.isEmpty = function isEmpty() {\n return this.uchar === ' ' && this.penState.isDefault();\n };\n\n return StyledUnicodeChar;\n}();\n/**\n * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar.\n * @constructor\n */\n\n\nvar Row = /*#__PURE__*/function () {\n function Row(logger) {\n this.chars = void 0;\n this.pos = void 0;\n this.currPenState = void 0;\n this.cueStartTime = void 0;\n this.logger = void 0;\n this.chars = [];\n\n for (var i = 0; i < NR_COLS; i++) {\n this.chars.push(new StyledUnicodeChar());\n }\n\n this.logger = logger;\n this.pos = 0;\n this.currPenState = new PenState();\n }\n\n var _proto4 = Row.prototype;\n\n _proto4.equals = function equals(other) {\n var equal = true;\n\n for (var i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].equals(other.chars[i])) {\n equal = false;\n break;\n }\n }\n\n return equal;\n };\n\n _proto4.copy = function copy(other) {\n for (var i = 0; i < NR_COLS; i++) {\n this.chars[i].copy(other.chars[i]);\n }\n };\n\n _proto4.isEmpty = function isEmpty() {\n var empty = true;\n\n for (var i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n\n return empty;\n }\n /**\n * Set the cursor to a valid column.\n */\n ;\n\n _proto4.setCursor = function setCursor(absPos) {\n if (this.pos !== absPos) {\n this.pos = absPos;\n }\n\n if (this.pos < 0) {\n this.logger.log(VerboseLevel.DEBUG, 'Negative cursor position ' + this.pos);\n this.pos = 0;\n } else if (this.pos > NR_COLS) {\n this.logger.log(VerboseLevel.DEBUG, 'Too large cursor position ' + this.pos);\n this.pos = NR_COLS;\n }\n }\n /**\n * Move the cursor relative to current position.\n */\n ;\n\n _proto4.moveCursor = function moveCursor(relPos) {\n var newPos = this.pos + relPos;\n\n if (relPos > 1) {\n for (var i = this.pos + 1; i < newPos + 1; i++) {\n this.chars[i].setPenState(this.currPenState);\n }\n }\n\n this.setCursor(newPos);\n }\n /**\n * Backspace, move one step back and clear character.\n */\n ;\n\n _proto4.backSpace = function backSpace() {\n this.moveCursor(-1);\n this.chars[this.pos].setChar(' ', this.currPenState);\n };\n\n _proto4.insertChar = function insertChar(_byte2) {\n if (_byte2 >= 0x90) {\n // Extended char\n this.backSpace();\n }\n\n var _char = getCharForByte(_byte2);\n\n if (this.pos >= NR_COLS) {\n this.logger.log(VerboseLevel.ERROR, 'Cannot insert ' + _byte2.toString(16) + ' (' + _char + ') at position ' + this.pos + '. Skipping it!');\n return;\n }\n\n this.chars[this.pos].setChar(_char, this.currPenState);\n this.moveCursor(1);\n };\n\n _proto4.clearFromPos = function clearFromPos(startPos) {\n var i;\n\n for (i = startPos; i < NR_COLS; i++) {\n this.chars[i].reset();\n }\n };\n\n _proto4.clear = function clear() {\n this.clearFromPos(0);\n this.pos = 0;\n this.currPenState.reset();\n };\n\n _proto4.clearToEndOfRow = function clearToEndOfRow() {\n this.clearFromPos(this.pos);\n };\n\n _proto4.getTextString = function getTextString() {\n var chars = [];\n var empty = true;\n\n for (var i = 0; i < NR_COLS; i++) {\n var _char2 = this.chars[i].uchar;\n\n if (_char2 !== ' ') {\n empty = false;\n }\n\n chars.push(_char2);\n }\n\n if (empty) {\n return '';\n } else {\n return chars.join('');\n }\n };\n\n _proto4.setPenStyles = function setPenStyles(styles) {\n this.currPenState.setStyles(styles);\n var currChar = this.chars[this.pos];\n currChar.setPenState(this.currPenState);\n };\n\n return Row;\n}();\n/**\n * Keep a CEA-608 screen of 32x15 styled characters\n * @constructor\n */\n\nvar CaptionScreen = /*#__PURE__*/function () {\n function CaptionScreen(logger) {\n this.rows = void 0;\n this.currRow = void 0;\n this.nrRollUpRows = void 0;\n this.lastOutputScreen = void 0;\n this.logger = void 0;\n this.rows = [];\n\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows.push(new Row(logger));\n } // Note that we use zero-based numbering (0-14)\n\n\n this.logger = logger;\n this.currRow = NR_ROWS - 1;\n this.nrRollUpRows = null;\n this.lastOutputScreen = null;\n this.reset();\n }\n\n var _proto5 = CaptionScreen.prototype;\n\n _proto5.reset = function reset() {\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n }\n\n this.currRow = NR_ROWS - 1;\n };\n\n _proto5.equals = function equals(other) {\n var equal = true;\n\n for (var i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].equals(other.rows[i])) {\n equal = false;\n break;\n }\n }\n\n return equal;\n };\n\n _proto5.copy = function copy(other) {\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].copy(other.rows[i]);\n }\n };\n\n _proto5.isEmpty = function isEmpty() {\n var empty = true;\n\n for (var i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n\n return empty;\n };\n\n _proto5.backSpace = function backSpace() {\n var row = this.rows[this.currRow];\n row.backSpace();\n };\n\n _proto5.clearToEndOfRow = function clearToEndOfRow() {\n var row = this.rows[this.currRow];\n row.clearToEndOfRow();\n }\n /**\n * Insert a character (without styling) in the current row.\n */\n ;\n\n _proto5.insertChar = function insertChar(_char3) {\n var row = this.rows[this.currRow];\n row.insertChar(_char3);\n };\n\n _proto5.setPen = function setPen(styles) {\n var row = this.rows[this.currRow];\n row.setPenStyles(styles);\n };\n\n _proto5.moveCursor = function moveCursor(relPos) {\n var row = this.rows[this.currRow];\n row.moveCursor(relPos);\n };\n\n _proto5.setCursor = function setCursor(absPos) {\n this.logger.log(VerboseLevel.INFO, 'setCursor: ' + absPos);\n var row = this.rows[this.currRow];\n row.setCursor(absPos);\n };\n\n _proto5.setPAC = function setPAC(pacData) {\n this.logger.log(VerboseLevel.INFO, 'pacData = ' + JSON.stringify(pacData));\n var newRow = pacData.row - 1;\n\n if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) {\n newRow = this.nrRollUpRows - 1;\n } // Make sure this only affects Roll-up Captions by checking this.nrRollUpRows\n\n\n if (this.nrRollUpRows && this.currRow !== newRow) {\n // clear all rows first\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n } // Copy this.nrRollUpRows rows from lastOutputScreen and place it in the newRow location\n // topRowIndex - the start of rows to copy (inclusive index)\n\n\n var topRowIndex = this.currRow + 1 - this.nrRollUpRows; // We only copy if the last position was already shown.\n // We use the cueStartTime value to check this.\n\n var lastOutputScreen = this.lastOutputScreen;\n\n if (lastOutputScreen) {\n var prevLineTime = lastOutputScreen.rows[topRowIndex].cueStartTime;\n var time = this.logger.time;\n\n if (prevLineTime && time !== null && prevLineTime < time) {\n for (var _i = 0; _i < this.nrRollUpRows; _i++) {\n this.rows[newRow - this.nrRollUpRows + _i + 1].copy(lastOutputScreen.rows[topRowIndex + _i]);\n }\n }\n }\n }\n\n this.currRow = newRow;\n var row = this.rows[this.currRow];\n\n if (pacData.indent !== null) {\n var indent = pacData.indent;\n var prevPos = Math.max(indent - 1, 0);\n row.setCursor(pacData.indent);\n pacData.color = row.chars[prevPos].penState.foreground;\n }\n\n var styles = {\n foreground: pacData.color,\n underline: pacData.underline,\n italics: pacData.italics,\n background: 'black',\n flash: false\n };\n this.setPen(styles);\n }\n /**\n * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).\n */\n ;\n\n _proto5.setBkgData = function setBkgData(bkgData) {\n this.logger.log(VerboseLevel.INFO, 'bkgData = ' + JSON.stringify(bkgData));\n this.backSpace();\n this.setPen(bkgData);\n this.insertChar(0x20); // Space\n };\n\n _proto5.setRollUpRows = function setRollUpRows(nrRows) {\n this.nrRollUpRows = nrRows;\n };\n\n _proto5.rollUp = function rollUp() {\n if (this.nrRollUpRows === null) {\n this.logger.log(VerboseLevel.DEBUG, 'roll_up but nrRollUpRows not set yet');\n return; // Not properly setup\n }\n\n this.logger.log(VerboseLevel.TEXT, this.getDisplayText());\n var topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n var topRow = this.rows.splice(topRowIndex, 1)[0];\n topRow.clear();\n this.rows.splice(this.currRow, 0, topRow);\n this.logger.log(VerboseLevel.INFO, 'Rolling up'); // this.logger.log(VerboseLevel.TEXT, this.get_display_text())\n }\n /**\n * Get all non-empty rows with as unicode text.\n */\n ;\n\n _proto5.getDisplayText = function getDisplayText(asOneRow) {\n asOneRow = asOneRow || false;\n var displayText = [];\n var text = '';\n var rowNr = -1;\n\n for (var i = 0; i < NR_ROWS; i++) {\n var rowText = this.rows[i].getTextString();\n\n if (rowText) {\n rowNr = i + 1;\n\n if (asOneRow) {\n displayText.push('Row ' + rowNr + \": '\" + rowText + \"'\");\n } else {\n displayText.push(rowText.trim());\n }\n }\n }\n\n if (displayText.length > 0) {\n if (asOneRow) {\n text = '[' + displayText.join(' | ') + ']';\n } else {\n text = displayText.join('\\n');\n }\n }\n\n return text;\n };\n\n _proto5.getTextAndFormat = function getTextAndFormat() {\n return this.rows;\n };\n\n return CaptionScreen;\n}(); // var modes = ['MODE_ROLL-UP', 'MODE_POP-ON', 'MODE_PAINT-ON', 'MODE_TEXT'];\n\nvar Cea608Channel = /*#__PURE__*/function () {\n function Cea608Channel(channelNumber, outputFilter, logger) {\n this.chNr = void 0;\n this.outputFilter = void 0;\n this.mode = void 0;\n this.verbose = void 0;\n this.displayedMemory = void 0;\n this.nonDisplayedMemory = void 0;\n this.lastOutputScreen = void 0;\n this.currRollUpRow = void 0;\n this.writeScreen = void 0;\n this.cueStartTime = void 0;\n this.logger = void 0;\n this.chNr = channelNumber;\n this.outputFilter = outputFilter;\n this.mode = null;\n this.verbose = 0;\n this.displayedMemory = new CaptionScreen(logger);\n this.nonDisplayedMemory = new CaptionScreen(logger);\n this.lastOutputScreen = new CaptionScreen(logger);\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null; // Keeps track of where a cue started.\n\n this.logger = logger;\n }\n\n var _proto6 = Cea608Channel.prototype;\n\n _proto6.reset = function reset() {\n this.mode = null;\n this.displayedMemory.reset();\n this.nonDisplayedMemory.reset();\n this.lastOutputScreen.reset();\n this.outputFilter.reset();\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null;\n };\n\n _proto6.getHandler = function getHandler() {\n return this.outputFilter;\n };\n\n _proto6.setHandler = function setHandler(newHandler) {\n this.outputFilter = newHandler;\n };\n\n _proto6.setPAC = function setPAC(pacData) {\n this.writeScreen.setPAC(pacData);\n };\n\n _proto6.setBkgData = function setBkgData(bkgData) {\n this.writeScreen.setBkgData(bkgData);\n };\n\n _proto6.setMode = function setMode(newMode) {\n if (newMode === this.mode) {\n return;\n }\n\n this.mode = newMode;\n this.logger.log(VerboseLevel.INFO, 'MODE=' + newMode);\n\n if (this.mode === 'MODE_POP-ON') {\n this.writeScreen = this.nonDisplayedMemory;\n } else {\n this.writeScreen = this.displayedMemory;\n this.writeScreen.reset();\n }\n\n if (this.mode !== 'MODE_ROLL-UP') {\n this.displayedMemory.nrRollUpRows = null;\n this.nonDisplayedMemory.nrRollUpRows = null;\n }\n\n this.mode = newMode;\n };\n\n _proto6.insertChars = function insertChars(chars) {\n for (var i = 0; i < chars.length; i++) {\n this.writeScreen.insertChar(chars[i]);\n }\n\n var screen = this.writeScreen === this.displayedMemory ? 'DISP' : 'NON_DISP';\n this.logger.log(VerboseLevel.INFO, screen + ': ' + this.writeScreen.getDisplayText(true));\n\n if (this.mode === 'MODE_PAINT-ON' || this.mode === 'MODE_ROLL-UP') {\n this.logger.log(VerboseLevel.TEXT, 'DISPLAYED: ' + this.displayedMemory.getDisplayText(true));\n this.outputDataUpdate();\n }\n };\n\n _proto6.ccRCL = function ccRCL() {\n // Resume Caption Loading (switch mode to Pop On)\n this.logger.log(VerboseLevel.INFO, 'RCL - Resume Caption Loading');\n this.setMode('MODE_POP-ON');\n };\n\n _proto6.ccBS = function ccBS() {\n // BackSpace\n this.logger.log(VerboseLevel.INFO, 'BS - BackSpace');\n\n if (this.mode === 'MODE_TEXT') {\n return;\n }\n\n this.writeScreen.backSpace();\n\n if (this.writeScreen === this.displayedMemory) {\n this.outputDataUpdate();\n }\n };\n\n _proto6.ccAOF = function ccAOF() {// Reserved (formerly Alarm Off)\n };\n\n _proto6.ccAON = function ccAON() {// Reserved (formerly Alarm On)\n };\n\n _proto6.ccDER = function ccDER() {\n // Delete to End of Row\n this.logger.log(VerboseLevel.INFO, 'DER- Delete to End of Row');\n this.writeScreen.clearToEndOfRow();\n this.outputDataUpdate();\n };\n\n _proto6.ccRU = function ccRU(nrRows) {\n // Roll-Up Captions-2,3,or 4 Rows\n this.logger.log(VerboseLevel.INFO, 'RU(' + nrRows + ') - Roll Up');\n this.writeScreen = this.displayedMemory;\n this.setMode('MODE_ROLL-UP');\n this.writeScreen.setRollUpRows(nrRows);\n };\n\n _proto6.ccFON = function ccFON() {\n // Flash On\n this.logger.log(VerboseLevel.INFO, 'FON - Flash On');\n this.writeScreen.setPen({\n flash: true\n });\n };\n\n _proto6.ccRDC = function ccRDC() {\n // Resume Direct Captioning (switch mode to PaintOn)\n this.logger.log(VerboseLevel.INFO, 'RDC - Resume Direct Captioning');\n this.setMode('MODE_PAINT-ON');\n };\n\n _proto6.ccTR = function ccTR() {\n // Text Restart in text mode (not supported, however)\n this.logger.log(VerboseLevel.INFO, 'TR');\n this.setMode('MODE_TEXT');\n };\n\n _proto6.ccRTD = function ccRTD() {\n // Resume Text Display in Text mode (not supported, however)\n this.logger.log(VerboseLevel.INFO, 'RTD');\n this.setMode('MODE_TEXT');\n };\n\n _proto6.ccEDM = function ccEDM() {\n // Erase Displayed Memory\n this.logger.log(VerboseLevel.INFO, 'EDM - Erase Displayed Memory');\n this.displayedMemory.reset();\n this.outputDataUpdate(true);\n };\n\n _proto6.ccCR = function ccCR() {\n // Carriage Return\n this.logger.log(VerboseLevel.INFO, 'CR - Carriage Return');\n this.writeScreen.rollUp();\n this.outputDataUpdate(true);\n };\n\n _proto6.ccENM = function ccENM() {\n // Erase Non-Displayed Memory\n this.logger.log(VerboseLevel.INFO, 'ENM - Erase Non-displayed Memory');\n this.nonDisplayedMemory.reset();\n };\n\n _proto6.ccEOC = function ccEOC() {\n // End of Caption (Flip Memories)\n this.logger.log(VerboseLevel.INFO, 'EOC - End Of Caption');\n\n if (this.mode === 'MODE_POP-ON') {\n var tmp = this.displayedMemory;\n this.displayedMemory = this.nonDisplayedMemory;\n this.nonDisplayedMemory = tmp;\n this.writeScreen = this.nonDisplayedMemory;\n this.logger.log(VerboseLevel.TEXT, 'DISP: ' + this.displayedMemory.getDisplayText());\n }\n\n this.outputDataUpdate(true);\n };\n\n _proto6.ccTO = function ccTO(nrCols) {\n // Tab Offset 1,2, or 3 columns\n this.logger.log(VerboseLevel.INFO, 'TO(' + nrCols + ') - Tab Offset');\n this.writeScreen.moveCursor(nrCols);\n };\n\n _proto6.ccMIDROW = function ccMIDROW(secondByte) {\n // Parse MIDROW command\n var styles = {\n flash: false\n };\n styles.underline = secondByte % 2 === 1;\n styles.italics = secondByte >= 0x2e;\n\n if (!styles.italics) {\n var colorIndex = Math.floor(secondByte / 2) - 0x10;\n var colors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta'];\n styles.foreground = colors[colorIndex];\n } else {\n styles.foreground = 'white';\n }\n\n this.logger.log(VerboseLevel.INFO, 'MIDROW: ' + JSON.stringify(styles));\n this.writeScreen.setPen(styles);\n };\n\n _proto6.outputDataUpdate = function outputDataUpdate(dispatch) {\n if (dispatch === void 0) {\n dispatch = false;\n }\n\n var time = this.logger.time;\n\n if (time === null) {\n return;\n }\n\n if (this.outputFilter) {\n if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) {\n // Start of a new cue\n this.cueStartTime = time;\n } else {\n if (!this.displayedMemory.equals(this.lastOutputScreen)) {\n this.outputFilter.newCue(this.cueStartTime, time, this.lastOutputScreen);\n\n if (dispatch && this.outputFilter.dispatchCue) {\n this.outputFilter.dispatchCue();\n }\n\n this.cueStartTime = this.displayedMemory.isEmpty() ? null : time;\n }\n }\n\n this.lastOutputScreen.copy(this.displayedMemory);\n }\n };\n\n _proto6.cueSplitAtTime = function cueSplitAtTime(t) {\n if (this.outputFilter) {\n if (!this.displayedMemory.isEmpty()) {\n if (this.outputFilter.newCue) {\n this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory);\n }\n\n this.cueStartTime = t;\n }\n }\n };\n\n return Cea608Channel;\n}();\n\nvar Cea608Parser = /*#__PURE__*/function () {\n function Cea608Parser(field, out1, out2) {\n this.channels = void 0;\n this.currentChannel = 0;\n this.cmdHistory = void 0;\n this.logger = void 0;\n var logger = new CaptionsLogger();\n this.channels = [null, new Cea608Channel(field, out1, logger), new Cea608Channel(field + 1, out2, logger)];\n this.cmdHistory = createCmdHistory();\n this.logger = logger;\n }\n\n var _proto7 = Cea608Parser.prototype;\n\n _proto7.getHandler = function getHandler(channel) {\n return this.channels[channel].getHandler();\n };\n\n _proto7.setHandler = function setHandler(channel, newHandler) {\n this.channels[channel].setHandler(newHandler);\n }\n /**\n * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\n */\n ;\n\n _proto7.addData = function addData(time, byteList) {\n var cmdFound;\n var a;\n var b;\n var charsFound = false;\n this.logger.time = time;\n\n for (var i = 0; i < byteList.length; i += 2) {\n a = byteList[i] & 0x7f;\n b = byteList[i + 1] & 0x7f;\n\n if (a === 0 && b === 0) {\n continue;\n } else {\n this.logger.log(VerboseLevel.DATA, '[' + numArrayToHexArray([byteList[i], byteList[i + 1]]) + '] -> (' + numArrayToHexArray([a, b]) + ')');\n }\n\n cmdFound = this.parseCmd(a, b);\n\n if (!cmdFound) {\n cmdFound = this.parseMidrow(a, b);\n }\n\n if (!cmdFound) {\n cmdFound = this.parsePAC(a, b);\n }\n\n if (!cmdFound) {\n cmdFound = this.parseBackgroundAttributes(a, b);\n }\n\n if (!cmdFound) {\n charsFound = this.parseChars(a, b);\n\n if (charsFound) {\n var currChNr = this.currentChannel;\n\n if (currChNr && currChNr > 0) {\n var channel = this.channels[currChNr];\n channel.insertChars(charsFound);\n } else {\n this.logger.log(VerboseLevel.WARNING, 'No channel found yet. TEXT-MODE?');\n }\n }\n }\n\n if (!cmdFound && !charsFound) {\n this.logger.log(VerboseLevel.WARNING, \"Couldn't parse cleaned data \" + numArrayToHexArray([a, b]) + ' orig: ' + numArrayToHexArray([byteList[i], byteList[i + 1]]));\n }\n }\n }\n /**\n * Parse Command.\n * @returns {Boolean} Tells if a command was found\n */\n ;\n\n _proto7.parseCmd = function parseCmd(a, b) {\n var cmdHistory = this.cmdHistory;\n var cond1 = (a === 0x14 || a === 0x1c || a === 0x15 || a === 0x1d) && b >= 0x20 && b <= 0x2f;\n var cond2 = (a === 0x17 || a === 0x1f) && b >= 0x21 && b <= 0x23;\n\n if (!(cond1 || cond2)) {\n return false;\n }\n\n if (hasCmdRepeated(a, b, cmdHistory)) {\n setLastCmd(null, null, cmdHistory);\n this.logger.log(VerboseLevel.DEBUG, 'Repeated command (' + numArrayToHexArray([a, b]) + ') is dropped');\n return true;\n }\n\n var chNr = a === 0x14 || a === 0x15 || a === 0x17 ? 1 : 2;\n var channel = this.channels[chNr];\n\n if (a === 0x14 || a === 0x15 || a === 0x1c || a === 0x1d) {\n if (b === 0x20) {\n channel.ccRCL();\n } else if (b === 0x21) {\n channel.ccBS();\n } else if (b === 0x22) {\n channel.ccAOF();\n } else if (b === 0x23) {\n channel.ccAON();\n } else if (b === 0x24) {\n channel.ccDER();\n } else if (b === 0x25) {\n channel.ccRU(2);\n } else if (b === 0x26) {\n channel.ccRU(3);\n } else if (b === 0x27) {\n channel.ccRU(4);\n } else if (b === 0x28) {\n channel.ccFON();\n } else if (b === 0x29) {\n channel.ccRDC();\n } else if (b === 0x2a) {\n channel.ccTR();\n } else if (b === 0x2b) {\n channel.ccRTD();\n } else if (b === 0x2c) {\n channel.ccEDM();\n } else if (b === 0x2d) {\n channel.ccCR();\n } else if (b === 0x2e) {\n channel.ccENM();\n } else if (b === 0x2f) {\n channel.ccEOC();\n }\n } else {\n // a == 0x17 || a == 0x1F\n channel.ccTO(b - 0x20);\n }\n\n setLastCmd(a, b, cmdHistory);\n this.currentChannel = chNr;\n return true;\n }\n /**\n * Parse midrow styling command\n * @returns {Boolean}\n */\n ;\n\n _proto7.parseMidrow = function parseMidrow(a, b) {\n var chNr = 0;\n\n if ((a === 0x11 || a === 0x19) && b >= 0x20 && b <= 0x2f) {\n if (a === 0x11) {\n chNr = 1;\n } else {\n chNr = 2;\n }\n\n if (chNr !== this.currentChannel) {\n this.logger.log(VerboseLevel.ERROR, 'Mismatch channel in midrow parsing');\n return false;\n }\n\n var channel = this.channels[chNr];\n\n if (!channel) {\n return false;\n }\n\n channel.ccMIDROW(b);\n this.logger.log(VerboseLevel.DEBUG, 'MIDROW (' + numArrayToHexArray([a, b]) + ')');\n return true;\n }\n\n return false;\n }\n /**\n * Parse Preable Access Codes (Table 53).\n * @returns {Boolean} Tells if PAC found\n */\n ;\n\n _proto7.parsePAC = function parsePAC(a, b) {\n var row;\n var cmdHistory = this.cmdHistory;\n var case1 = (a >= 0x11 && a <= 0x17 || a >= 0x19 && a <= 0x1f) && b >= 0x40 && b <= 0x7f;\n var case2 = (a === 0x10 || a === 0x18) && b >= 0x40 && b <= 0x5f;\n\n if (!(case1 || case2)) {\n return false;\n }\n\n if (hasCmdRepeated(a, b, cmdHistory)) {\n setLastCmd(null, null, cmdHistory);\n return true; // Repeated commands are dropped (once)\n }\n\n var chNr = a <= 0x17 ? 1 : 2;\n\n if (b >= 0x40 && b <= 0x5f) {\n row = chNr === 1 ? rowsLowCh1[a] : rowsLowCh2[a];\n } else {\n // 0x60 <= b <= 0x7F\n row = chNr === 1 ? rowsHighCh1[a] : rowsHighCh2[a];\n }\n\n var channel = this.channels[chNr];\n\n if (!channel) {\n return false;\n }\n\n channel.setPAC(this.interpretPAC(row, b));\n setLastCmd(a, b, cmdHistory);\n this.currentChannel = chNr;\n return true;\n }\n /**\n * Interpret the second byte of the pac, and return the information.\n * @returns {Object} pacData with style parameters.\n */\n ;\n\n _proto7.interpretPAC = function interpretPAC(row, _byte3) {\n var pacIndex;\n var pacData = {\n color: null,\n italics: false,\n indent: null,\n underline: false,\n row: row\n };\n\n if (_byte3 > 0x5f) {\n pacIndex = _byte3 - 0x60;\n } else {\n pacIndex = _byte3 - 0x40;\n }\n\n pacData.underline = (pacIndex & 1) === 1;\n\n if (pacIndex <= 0xd) {\n pacData.color = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'white'][Math.floor(pacIndex / 2)];\n } else if (pacIndex <= 0xf) {\n pacData.italics = true;\n pacData.color = 'white';\n } else {\n pacData.indent = Math.floor((pacIndex - 0x10) / 2) * 4;\n }\n\n return pacData; // Note that row has zero offset. The spec uses 1.\n }\n /**\n * Parse characters.\n * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\n */\n ;\n\n _proto7.parseChars = function parseChars(a, b) {\n var channelNr;\n var charCodes = null;\n var charCode1 = null;\n\n if (a >= 0x19) {\n channelNr = 2;\n charCode1 = a - 8;\n } else {\n channelNr = 1;\n charCode1 = a;\n }\n\n if (charCode1 >= 0x11 && charCode1 <= 0x13) {\n // Special character\n var oneCode;\n\n if (charCode1 === 0x11) {\n oneCode = b + 0x50;\n } else if (charCode1 === 0x12) {\n oneCode = b + 0x70;\n } else {\n oneCode = b + 0x90;\n }\n\n this.logger.log(VerboseLevel.INFO, \"Special char '\" + getCharForByte(oneCode) + \"' in channel \" + channelNr);\n charCodes = [oneCode];\n } else if (a >= 0x20 && a <= 0x7f) {\n charCodes = b === 0 ? [a] : [a, b];\n }\n\n if (charCodes) {\n var hexCodes = numArrayToHexArray(charCodes);\n this.logger.log(VerboseLevel.DEBUG, 'Char codes = ' + hexCodes.join(','));\n setLastCmd(a, b, this.cmdHistory);\n }\n\n return charCodes;\n }\n /**\n * Parse extended background attributes as well as new foreground color black.\n * @returns {Boolean} Tells if background attributes are found\n */\n ;\n\n _proto7.parseBackgroundAttributes = function parseBackgroundAttributes(a, b) {\n var case1 = (a === 0x10 || a === 0x18) && b >= 0x20 && b <= 0x2f;\n var case2 = (a === 0x17 || a === 0x1f) && b >= 0x2d && b <= 0x2f;\n\n if (!(case1 || case2)) {\n return false;\n }\n\n var index;\n var bkgData = {};\n\n if (a === 0x10 || a === 0x18) {\n index = Math.floor((b - 0x20) / 2);\n bkgData.background = backgroundColors[index];\n\n if (b % 2 === 1) {\n bkgData.background = bkgData.background + '_semi';\n }\n } else if (b === 0x2d) {\n bkgData.background = 'transparent';\n } else {\n bkgData.foreground = 'black';\n\n if (b === 0x2f) {\n bkgData.underline = true;\n }\n }\n\n var chNr = a <= 0x17 ? 1 : 2;\n var channel = this.channels[chNr];\n channel.setBkgData(bkgData);\n setLastCmd(a, b, this.cmdHistory);\n return true;\n }\n /**\n * Reset state of parser and its channels.\n */\n ;\n\n _proto7.reset = function reset() {\n for (var i = 0; i < Object.keys(this.channels).length; i++) {\n var channel = this.channels[i];\n\n if (channel) {\n channel.reset();\n }\n }\n\n this.cmdHistory = createCmdHistory();\n }\n /**\n * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.\n */\n ;\n\n _proto7.cueSplitAtTime = function cueSplitAtTime(t) {\n for (var i = 0; i < this.channels.length; i++) {\n var channel = this.channels[i];\n\n if (channel) {\n channel.cueSplitAtTime(t);\n }\n }\n };\n\n return Cea608Parser;\n}();\n\nfunction setLastCmd(a, b, cmdHistory) {\n cmdHistory.a = a;\n cmdHistory.b = b;\n}\n\nfunction hasCmdRepeated(a, b, cmdHistory) {\n return cmdHistory.a === a && cmdHistory.b === b;\n}\n\nfunction createCmdHistory() {\n return {\n a: null,\n b: null\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Cea608Parser);\n\n/***/ }),\n\n/***/ \"./src/utils/codecs.ts\":\n/*!*****************************!*\\\n !*** ./src/utils/codecs.ts ***!\n \\*****************************/\n/*! exports provided: isCodecType, isCodecSupportedInMp4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCodecType\", function() { return isCodecType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCodecSupportedInMp4\", function() { return isCodecSupportedInMp4; });\n// from http://mp4ra.org/codecs.html\nvar sampleEntryCodesISO = {\n audio: {\n a3ds: true,\n 'ac-3': true,\n 'ac-4': true,\n alac: true,\n alaw: true,\n dra1: true,\n 'dts+': true,\n 'dts-': true,\n dtsc: true,\n dtse: true,\n dtsh: true,\n 'ec-3': true,\n enca: true,\n g719: true,\n g726: true,\n m4ae: true,\n mha1: true,\n mha2: true,\n mhm1: true,\n mhm2: true,\n mlpa: true,\n mp4a: true,\n 'raw ': true,\n Opus: true,\n samr: true,\n sawb: true,\n sawp: true,\n sevc: true,\n sqcp: true,\n ssmv: true,\n twos: true,\n ulaw: true\n },\n video: {\n avc1: true,\n avc2: true,\n avc3: true,\n avc4: true,\n avcp: true,\n av01: true,\n drac: true,\n dvav: true,\n dvhe: true,\n encv: true,\n hev1: true,\n hvc1: true,\n mjp2: true,\n mp4v: true,\n mvc1: true,\n mvc2: true,\n mvc3: true,\n mvc4: true,\n resv: true,\n rv60: true,\n s263: true,\n svc1: true,\n svc2: true,\n 'vc-1': true,\n vp08: true,\n vp09: true\n },\n text: {\n stpp: true,\n wvtt: true\n }\n};\nfunction isCodecType(codec, type) {\n var typeCodes = sampleEntryCodesISO[type];\n return !!typeCodes && typeCodes[codec.slice(0, 4)] === true;\n}\nfunction isCodecSupportedInMp4(codec, type) {\n return MediaSource.isTypeSupported((type || 'video') + \"/mp4;codecs=\\\"\" + codec + \"\\\"\");\n}\n\n/***/ }),\n\n/***/ \"./src/utils/cues.ts\":\n/*!***************************!*\\\n !*** ./src/utils/cues.ts ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _vttparser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vttparser */ \"./src/utils/vttparser.ts\");\n/* harmony import */ var _webvtt_parser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webvtt-parser */ \"./src/utils/webvtt-parser.ts\");\n/* harmony import */ var _texttrack_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./texttrack-utils */ \"./src/utils/texttrack-utils.ts\");\n\n\n\nvar WHITESPACE_CHAR = /\\s/;\nvar Cues = {\n newCue: function newCue(track, startTime, endTime, captionScreen) {\n var result = [];\n var row; // the type data states this is VTTCue, but it can potentially be a TextTrackCue on old browsers\n\n var cue;\n var indenting;\n var indent;\n var text;\n var Cue = self.VTTCue || self.TextTrackCue;\n\n for (var r = 0; r < captionScreen.rows.length; r++) {\n row = captionScreen.rows[r];\n indenting = true;\n indent = 0;\n text = '';\n\n if (!row.isEmpty()) {\n for (var c = 0; c < row.chars.length; c++) {\n if (WHITESPACE_CHAR.test(row.chars[c].uchar) && indenting) {\n indent++;\n } else {\n text += row.chars[c].uchar;\n indenting = false;\n }\n } // To be used for cleaning-up orphaned roll-up captions\n\n\n row.cueStartTime = startTime; // Give a slight bump to the endTime if it's equal to startTime to avoid a SyntaxError in IE\n\n if (startTime === endTime) {\n endTime += 0.0001;\n }\n\n if (indent >= 16) {\n indent--;\n } else {\n indent++;\n }\n\n var cueText = Object(_vttparser__WEBPACK_IMPORTED_MODULE_0__[\"fixLineBreaks\"])(text.trim());\n var id = Object(_webvtt_parser__WEBPACK_IMPORTED_MODULE_1__[\"generateCueId\"])(startTime, endTime, cueText); // If this cue already exists in the track do not push it\n\n if (!track || !track.cues || !track.cues.getCueById(id)) {\n cue = new Cue(startTime, endTime, cueText);\n cue.id = id;\n cue.line = r + 1;\n cue.align = 'left'; // Clamp the position between 10 and 80 percent (CEA-608 PAC indent code)\n // https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/608toVTT.html#positioning-in-cea-608\n // Firefox throws an exception and captions break with out of bounds 0-100 values\n\n cue.position = 10 + Math.min(80, Math.floor(indent * 8 / 32) * 10);\n result.push(cue);\n }\n }\n }\n\n if (track && result.length) {\n // Sort bottom cues in reverse order so that they render in line order when overlapping in Chrome\n result.sort(function (cueA, cueB) {\n if (cueA.line === 'auto' || cueB.line === 'auto') {\n return 0;\n }\n\n if (cueA.line > 8 && cueB.line > 8) {\n return cueB.line - cueA.line;\n }\n\n return cueA.line - cueB.line;\n });\n result.forEach(function (cue) {\n return Object(_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__[\"addCueToTrack\"])(track, cue);\n });\n }\n\n return result;\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Cues);\n\n/***/ }),\n\n/***/ \"./src/utils/discontinuities.ts\":\n/*!**************************************!*\\\n !*** ./src/utils/discontinuities.ts ***!\n \\**************************************/\n/*! exports provided: findFirstFragWithCC, shouldAlignOnDiscontinuities, findDiscontinuousReferenceFrag, adjustSlidingStart, alignStream, alignPDT, alignFragmentByPDTDelta, alignMediaPlaylistByPDT */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findFirstFragWithCC\", function() { return findFirstFragWithCC; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shouldAlignOnDiscontinuities\", function() { return shouldAlignOnDiscontinuities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findDiscontinuousReferenceFrag\", function() { return findDiscontinuousReferenceFrag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"adjustSlidingStart\", function() { return adjustSlidingStart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"alignStream\", function() { return alignStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"alignPDT\", function() { return alignPDT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"alignFragmentByPDTDelta\", function() { return alignFragmentByPDTDelta; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"alignMediaPlaylistByPDT\", function() { return alignMediaPlaylistByPDT; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _controller_level_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../controller/level-helper */ \"./src/controller/level-helper.ts\");\n\n\n\n\nfunction findFirstFragWithCC(fragments, cc) {\n var firstFrag = null;\n\n for (var i = 0, len = fragments.length; i < len; i++) {\n var currentFrag = fragments[i];\n\n if (currentFrag && currentFrag.cc === cc) {\n firstFrag = currentFrag;\n break;\n }\n }\n\n return firstFrag;\n}\nfunction shouldAlignOnDiscontinuities(lastFrag, lastLevel, details) {\n if (lastLevel.details) {\n if (details.endCC > details.startCC || lastFrag && lastFrag.cc < details.startCC) {\n return true;\n }\n }\n\n return false;\n} // Find the first frag in the previous level which matches the CC of the first frag of the new level\n\nfunction findDiscontinuousReferenceFrag(prevDetails, curDetails) {\n var prevFrags = prevDetails.fragments;\n var curFrags = curDetails.fragments;\n\n if (!curFrags.length || !prevFrags.length) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].log('No fragments to align');\n return;\n }\n\n var prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);\n\n if (!prevStartFrag || prevStartFrag && !prevStartFrag.startPTS) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].log('No frag in previous level to align on');\n return;\n }\n\n return prevStartFrag;\n}\n\nfunction adjustFragmentStart(frag, sliding) {\n if (frag) {\n var start = frag.start + sliding;\n frag.start = frag.startPTS = start;\n frag.endPTS = start + frag.duration;\n }\n}\n\nfunction adjustSlidingStart(sliding, details) {\n // Update segments\n var fragments = details.fragments;\n\n for (var i = 0, len = fragments.length; i < len; i++) {\n adjustFragmentStart(fragments[i], sliding);\n } // Update LL-HLS parts at the end of the playlist\n\n\n if (details.fragmentHint) {\n adjustFragmentStart(details.fragmentHint, sliding);\n }\n\n details.alignedSliding = true;\n}\n/**\n * Using the parameters of the last level, this function computes PTS' of the new fragments so that they form a\n * contiguous stream with the last fragments.\n * The PTS of a fragment lets Hls.js know where it fits into a stream - by knowing every PTS, we know which fragment to\n * download at any given time. PTS is normally computed when the fragment is demuxed, so taking this step saves us time\n * and an extra download.\n * @param lastFrag\n * @param lastLevel\n * @param details\n */\n\nfunction alignStream(lastFrag, lastLevel, details) {\n if (!lastLevel) {\n return;\n }\n\n alignDiscontinuities(lastFrag, details, lastLevel);\n\n if (!details.alignedSliding && lastLevel.details) {\n // If the PTS wasn't figured out via discontinuity sequence that means there was no CC increase within the level.\n // Aligning via Program Date Time should therefore be reliable, since PDT should be the same within the same\n // discontinuity sequence.\n alignPDT(details, lastLevel.details);\n }\n\n if (!details.alignedSliding && lastLevel.details && !details.skippedSegments) {\n // Try to align on sn so that we pick a better start fragment.\n // Do not perform this on playlists with delta updates as this is only to align levels on switch\n // and adjustSliding only adjusts fragments after skippedSegments.\n Object(_controller_level_helper__WEBPACK_IMPORTED_MODULE_2__[\"adjustSliding\"])(lastLevel.details, details);\n }\n}\n/**\n * Computes the PTS if a new level's fragments using the PTS of a fragment in the last level which shares the same\n * discontinuity sequence.\n * @param lastFrag - The last Fragment which shares the same discontinuity sequence\n * @param lastLevel - The details of the last loaded level\n * @param details - The details of the new level\n */\n\nfunction alignDiscontinuities(lastFrag, details, lastLevel) {\n if (shouldAlignOnDiscontinuities(lastFrag, lastLevel, details)) {\n var referenceFrag = findDiscontinuousReferenceFrag(lastLevel.details, details);\n\n if (referenceFrag && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(referenceFrag.start)) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].log(\"Adjusting PTS using last level due to CC increase within current level \" + details.url);\n adjustSlidingStart(referenceFrag.start, details);\n }\n }\n}\n/**\n * Computes the PTS of a new level's fragments using the difference in Program Date Time from the last level.\n * @param details - The details of the new level\n * @param lastDetails - The details of the last loaded level\n */\n\n\nfunction alignPDT(details, lastDetails) {\n // This check protects the unsafe \"!\" usage below for null program date time access.\n if (!lastDetails.fragments.length || !details.hasProgramDateTime || !lastDetails.hasProgramDateTime) {\n return;\n } // if last level sliding is 1000 and its first frag PROGRAM-DATE-TIME is 2017-08-20 1:10:00 AM\n // and if new details first frag PROGRAM DATE-TIME is 2017-08-20 1:10:08 AM\n // then we can deduce that playlist B sliding is 1000+8 = 1008s\n\n\n var lastPDT = lastDetails.fragments[0].programDateTime; // hasProgramDateTime check above makes this safe.\n\n var newPDT = details.fragments[0].programDateTime; // date diff is in ms. frag.start is in seconds\n\n var sliding = (newPDT - lastPDT) / 1000 + lastDetails.fragments[0].start;\n\n if (sliding && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(sliding)) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].log(\"Adjusting PTS using programDateTime delta \" + (newPDT - lastPDT) + \"ms, sliding:\" + sliding.toFixed(3) + \" \" + details.url + \" \");\n adjustSlidingStart(sliding, details);\n }\n}\nfunction alignFragmentByPDTDelta(frag, delta) {\n var programDateTime = frag.programDateTime;\n if (!programDateTime) return;\n var start = (programDateTime - delta) / 1000;\n frag.start = frag.startPTS = start;\n frag.endPTS = start + frag.duration;\n}\n/**\n * Ensures appropriate time-alignment between renditions based on PDT. Unlike `alignPDT`, which adjusts\n * the timeline based on the delta between PDTs of the 0th fragment of two playlists/`LevelDetails`,\n * this function assumes the timelines represented in `refDetails` are accurate, including the PDTs,\n * and uses the \"wallclock\"/PDT timeline as a cross-reference to `details`, adjusting the presentation\n * times/timelines of `details` accordingly.\n * Given the asynchronous nature of fetches and initial loads of live `main` and audio/subtitle tracks,\n * the primary purpose of this function is to ensure the \"local timelines\" of audio/subtitle tracks\n * are aligned to the main/video timeline, using PDT as the cross-reference/\"anchor\" that should\n * be consistent across playlists, per the HLS spec.\n * @param details - The details of the rendition you'd like to time-align (e.g. an audio rendition).\n * @param refDetails - The details of the reference rendition with start and PDT times for alignment.\n */\n\nfunction alignMediaPlaylistByPDT(details, refDetails) {\n // This check protects the unsafe \"!\" usage below for null program date time access.\n if (!refDetails.fragments.length || !details.hasProgramDateTime || !refDetails.hasProgramDateTime) {\n return;\n }\n\n var refPDT = refDetails.fragments[0].programDateTime; // hasProgramDateTime check above makes this safe.\n\n var refStart = refDetails.fragments[0].start; // Use the delta between the reference details' presentation timeline's start time and its PDT\n // to align the other rendition's timeline.\n\n var delta = refPDT - refStart * 1000; // Per spec: \"If any Media Playlist in a Master Playlist contains an EXT-X-PROGRAM-DATE-TIME tag, then all\n // Media Playlists in that Master Playlist MUST contain EXT-X-PROGRAM-DATE-TIME tags with consistent mappings\n // of date and time to media timestamps.\"\n // So we should be able to use each rendition's PDT as a reference time and use the delta to compute our relevant\n // start and end times.\n // NOTE: This code assumes each level/details timelines have already been made \"internally consistent\"\n\n details.fragments.forEach(function (frag) {\n alignFragmentByPDTDelta(frag, delta);\n });\n\n if (details.fragmentHint) {\n alignFragmentByPDTDelta(details.fragmentHint, delta);\n }\n\n details.alignedSliding = true;\n}\n\n/***/ }),\n\n/***/ \"./src/utils/ewma-bandwidth-estimator.ts\":\n/*!***********************************************!*\\\n !*** ./src/utils/ewma-bandwidth-estimator.ts ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_ewma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/ewma */ \"./src/utils/ewma.ts\");\n/*\n * EWMA Bandwidth Estimator\n * - heavily inspired from shaka-player\n * Tracks bandwidth samples and estimates available bandwidth.\n * Based on the minimum of two exponentially-weighted moving averages with\n * different half-lives.\n */\n\n\nvar EwmaBandWidthEstimator = /*#__PURE__*/function () {\n function EwmaBandWidthEstimator(slow, fast, defaultEstimate) {\n this.defaultEstimate_ = void 0;\n this.minWeight_ = void 0;\n this.minDelayMs_ = void 0;\n this.slow_ = void 0;\n this.fast_ = void 0;\n this.defaultEstimate_ = defaultEstimate;\n this.minWeight_ = 0.001;\n this.minDelayMs_ = 50;\n this.slow_ = new _utils_ewma__WEBPACK_IMPORTED_MODULE_0__[\"default\"](slow);\n this.fast_ = new _utils_ewma__WEBPACK_IMPORTED_MODULE_0__[\"default\"](fast);\n }\n\n var _proto = EwmaBandWidthEstimator.prototype;\n\n _proto.update = function update(slow, fast) {\n var slow_ = this.slow_,\n fast_ = this.fast_;\n\n if (this.slow_.halfLife !== slow) {\n this.slow_ = new _utils_ewma__WEBPACK_IMPORTED_MODULE_0__[\"default\"](slow, slow_.getEstimate(), slow_.getTotalWeight());\n }\n\n if (this.fast_.halfLife !== fast) {\n this.fast_ = new _utils_ewma__WEBPACK_IMPORTED_MODULE_0__[\"default\"](fast, fast_.getEstimate(), fast_.getTotalWeight());\n }\n };\n\n _proto.sample = function sample(durationMs, numBytes) {\n durationMs = Math.max(durationMs, this.minDelayMs_);\n var numBits = 8 * numBytes; // weight is duration in seconds\n\n var durationS = durationMs / 1000; // value is bandwidth in bits/s\n\n var bandwidthInBps = numBits / durationS;\n this.fast_.sample(durationS, bandwidthInBps);\n this.slow_.sample(durationS, bandwidthInBps);\n };\n\n _proto.canEstimate = function canEstimate() {\n var fast = this.fast_;\n return fast && fast.getTotalWeight() >= this.minWeight_;\n };\n\n _proto.getEstimate = function getEstimate() {\n if (this.canEstimate()) {\n // console.log('slow estimate:'+ Math.round(this.slow_.getEstimate()));\n // console.log('fast estimate:'+ Math.round(this.fast_.getEstimate()));\n // Take the minimum of these two estimates. This should have the effect of\n // adapting down quickly, but up more slowly.\n return Math.min(this.fast_.getEstimate(), this.slow_.getEstimate());\n } else {\n return this.defaultEstimate_;\n }\n };\n\n _proto.destroy = function destroy() {};\n\n return EwmaBandWidthEstimator;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EwmaBandWidthEstimator);\n\n/***/ }),\n\n/***/ \"./src/utils/ewma.ts\":\n/*!***************************!*\\\n !*** ./src/utils/ewma.ts ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/*\n * compute an Exponential Weighted moving average\n * - https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average\n * - heavily inspired from shaka-player\n */\nvar EWMA = /*#__PURE__*/function () {\n // About half of the estimated value will be from the last |halfLife| samples by weight.\n function EWMA(halfLife, estimate, weight) {\n if (estimate === void 0) {\n estimate = 0;\n }\n\n if (weight === void 0) {\n weight = 0;\n }\n\n this.halfLife = void 0;\n this.alpha_ = void 0;\n this.estimate_ = void 0;\n this.totalWeight_ = void 0;\n this.halfLife = halfLife; // Larger values of alpha expire historical data more slowly.\n\n this.alpha_ = halfLife ? Math.exp(Math.log(0.5) / halfLife) : 0;\n this.estimate_ = estimate;\n this.totalWeight_ = weight;\n }\n\n var _proto = EWMA.prototype;\n\n _proto.sample = function sample(weight, value) {\n var adjAlpha = Math.pow(this.alpha_, weight);\n this.estimate_ = value * (1 - adjAlpha) + adjAlpha * this.estimate_;\n this.totalWeight_ += weight;\n };\n\n _proto.getTotalWeight = function getTotalWeight() {\n return this.totalWeight_;\n };\n\n _proto.getEstimate = function getEstimate() {\n if (this.alpha_) {\n var zeroFactor = 1 - Math.pow(this.alpha_, this.totalWeight_);\n\n if (zeroFactor) {\n return this.estimate_ / zeroFactor;\n }\n }\n\n return this.estimate_;\n };\n\n return EWMA;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EWMA);\n\n/***/ }),\n\n/***/ \"./src/utils/fetch-loader.ts\":\n/*!***********************************!*\\\n !*** ./src/utils/fetch-loader.ts ***!\n \\***********************************/\n/*! exports provided: fetchSupported, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchSupported\", function() { return fetchSupported; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _loader_load_stats__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../loader/load-stats */ \"./src/loader/load-stats.ts\");\n/* harmony import */ var _demux_chunk_cache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../demux/chunk-cache */ \"./src/demux/chunk-cache.ts\");\n\n\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nfunction fetchSupported() {\n if ( // @ts-ignore\n self.fetch && self.AbortController && self.ReadableStream && self.Request) {\n try {\n new self.ReadableStream({}); // eslint-disable-line no-new\n\n return true;\n } catch (e) {\n /* noop */\n }\n }\n\n return false;\n}\n\nvar FetchLoader = /*#__PURE__*/function () {\n function FetchLoader(config\n /* HlsConfig */\n ) {\n this.fetchSetup = void 0;\n this.requestTimeout = void 0;\n this.request = void 0;\n this.response = void 0;\n this.controller = void 0;\n this.context = void 0;\n this.config = null;\n this.callbacks = null;\n this.stats = void 0;\n this.loader = null;\n this.fetchSetup = config.fetchSetup || getRequest;\n this.controller = new self.AbortController();\n this.stats = new _loader_load_stats__WEBPACK_IMPORTED_MODULE_1__[\"LoadStats\"]();\n }\n\n var _proto = FetchLoader.prototype;\n\n _proto.destroy = function destroy() {\n this.loader = this.callbacks = null;\n this.abortInternal();\n };\n\n _proto.abortInternal = function abortInternal() {\n var response = this.response;\n\n if (!response || !response.ok) {\n this.stats.aborted = true;\n this.controller.abort();\n }\n };\n\n _proto.abort = function abort() {\n var _this$callbacks;\n\n this.abortInternal();\n\n if ((_this$callbacks = this.callbacks) !== null && _this$callbacks !== void 0 && _this$callbacks.onAbort) {\n this.callbacks.onAbort(this.stats, this.context, this.response);\n }\n };\n\n _proto.load = function load(context, config, callbacks) {\n var _this = this;\n\n var stats = this.stats;\n\n if (stats.loading.start) {\n throw new Error('Loader can only be used once.');\n }\n\n stats.loading.start = self.performance.now();\n var initParams = getRequestParameters(context, this.controller.signal);\n var onProgress = callbacks.onProgress;\n var isArrayBuffer = context.responseType === 'arraybuffer';\n var LENGTH = isArrayBuffer ? 'byteLength' : 'length';\n this.context = context;\n this.config = config;\n this.callbacks = callbacks;\n this.request = this.fetchSetup(context, initParams);\n self.clearTimeout(this.requestTimeout);\n this.requestTimeout = self.setTimeout(function () {\n _this.abortInternal();\n\n callbacks.onTimeout(stats, context, _this.response);\n }, config.timeout);\n self.fetch(this.request).then(function (response) {\n _this.response = _this.loader = response;\n\n if (!response.ok) {\n var status = response.status,\n statusText = response.statusText;\n throw new FetchError(statusText || 'fetch, bad network response', status, response);\n }\n\n stats.loading.first = Math.max(self.performance.now(), stats.loading.start);\n stats.total = parseInt(response.headers.get('Content-Length') || '0');\n\n if (onProgress && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(config.highWaterMark)) {\n return _this.loadProgressively(response, stats, context, config.highWaterMark, onProgress);\n }\n\n if (isArrayBuffer) {\n return response.arrayBuffer();\n }\n\n return response.text();\n }).then(function (responseData) {\n var response = _this.response;\n self.clearTimeout(_this.requestTimeout);\n stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n stats.loaded = stats.total = responseData[LENGTH];\n var loaderResponse = {\n url: response.url,\n data: responseData\n };\n\n if (onProgress && !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(config.highWaterMark)) {\n onProgress(stats, context, responseData, response);\n }\n\n callbacks.onSuccess(loaderResponse, stats, context, response);\n }).catch(function (error) {\n self.clearTimeout(_this.requestTimeout);\n\n if (stats.aborted) {\n return;\n } // CORS errors result in an undefined code. Set it to 0 here to align with XHR's behavior\n // when destroying, 'error' itself can be undefined\n\n\n var code = !error ? 0 : error.code || 0;\n var text = !error ? null : error.message;\n callbacks.onError({\n code: code,\n text: text\n }, context, error ? error.details : null);\n });\n };\n\n _proto.getCacheAge = function getCacheAge() {\n var result = null;\n\n if (this.response) {\n var ageHeader = this.response.headers.get('age');\n result = ageHeader ? parseFloat(ageHeader) : null;\n }\n\n return result;\n };\n\n _proto.loadProgressively = function loadProgressively(response, stats, context, highWaterMark, onProgress) {\n if (highWaterMark === void 0) {\n highWaterMark = 0;\n }\n\n var chunkCache = new _demux_chunk_cache__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n var reader = response.body.getReader();\n\n var pump = function pump() {\n return reader.read().then(function (data) {\n if (data.done) {\n if (chunkCache.dataLength) {\n onProgress(stats, context, chunkCache.flush(), response);\n }\n\n return Promise.resolve(new ArrayBuffer(0));\n }\n\n var chunk = data.value;\n var len = chunk.length;\n stats.loaded += len;\n\n if (len < highWaterMark || chunkCache.dataLength) {\n // The current chunk is too small to to be emitted or the cache already has data\n // Push it to the cache\n chunkCache.push(chunk);\n\n if (chunkCache.dataLength >= highWaterMark) {\n // flush in order to join the typed arrays\n onProgress(stats, context, chunkCache.flush(), response);\n }\n } else {\n // If there's nothing cached already, and the chache is large enough\n // just emit the progress event\n onProgress(stats, context, chunk, response);\n }\n\n return pump();\n }).catch(function () {\n /* aborted */\n return Promise.reject();\n });\n };\n\n return pump();\n };\n\n return FetchLoader;\n}();\n\nfunction getRequestParameters(context, signal) {\n var initParams = {\n method: 'GET',\n mode: 'cors',\n credentials: 'same-origin',\n signal: signal,\n headers: new self.Headers(_extends({}, context.headers))\n };\n\n if (context.rangeEnd) {\n initParams.headers.set('Range', 'bytes=' + context.rangeStart + '-' + String(context.rangeEnd - 1));\n }\n\n return initParams;\n}\n\nfunction getRequest(context, initParams) {\n return new self.Request(context.url, initParams);\n}\n\nvar FetchError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(FetchError, _Error);\n\n function FetchError(message, code, details) {\n var _this2;\n\n _this2 = _Error.call(this, message) || this;\n _this2.code = void 0;\n _this2.details = void 0;\n _this2.code = code;\n _this2.details = details;\n return _this2;\n }\n\n return FetchError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FetchLoader);\n\n/***/ }),\n\n/***/ \"./src/utils/imsc1-ttml-parser.ts\":\n/*!****************************************!*\\\n !*** ./src/utils/imsc1-ttml-parser.ts ***!\n \\****************************************/\n/*! exports provided: IMSC1_CODEC, parseIMSC1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IMSC1_CODEC\", function() { return IMSC1_CODEC; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseIMSC1\", function() { return parseIMSC1; });\n/* harmony import */ var _mp4_tools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _vttparser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vttparser */ \"./src/utils/vttparser.ts\");\n/* harmony import */ var _vttcue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./vttcue */ \"./src/utils/vttcue.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\n/* harmony import */ var _timescale_conversion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./timescale-conversion */ \"./src/utils/timescale-conversion.ts\");\n/* harmony import */ var _webvtt_parser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./webvtt-parser */ \"./src/utils/webvtt-parser.ts\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\n\n\nvar IMSC1_CODEC = 'stpp.ttml.im1t'; // Time format: h:m:s:frames(.subframes)\n\nvar HMSF_REGEX = /^(\\d{2,}):(\\d{2}):(\\d{2}):(\\d{2})\\.?(\\d+)?$/; // Time format: hours, minutes, seconds, milliseconds, frames, ticks\n\nvar TIME_UNIT_REGEX = /^(\\d*(?:\\.\\d*)?)(h|m|s|ms|f|t)$/;\nvar textAlignToLineAlign = {\n left: 'start',\n center: 'center',\n right: 'end',\n start: 'start',\n end: 'end'\n};\nfunction parseIMSC1(payload, initPTS, timescale, callBack, errorCallBack) {\n var results = Object(_mp4_tools__WEBPACK_IMPORTED_MODULE_0__[\"findBox\"])(new Uint8Array(payload), ['mdat']);\n\n if (results.length === 0) {\n errorCallBack(new Error('Could not parse IMSC1 mdat'));\n return;\n }\n\n var ttmlList = results.map(function (mdat) {\n return Object(_demux_id3__WEBPACK_IMPORTED_MODULE_3__[\"utf8ArrayToStr\"])(mdat);\n });\n var syncTime = Object(_timescale_conversion__WEBPACK_IMPORTED_MODULE_4__[\"toTimescaleFromScale\"])(initPTS, 1, timescale);\n\n try {\n ttmlList.forEach(function (ttml) {\n return callBack(parseTTML(ttml, syncTime));\n });\n } catch (error) {\n errorCallBack(error);\n }\n}\n\nfunction parseTTML(ttml, syncTime) {\n var parser = new DOMParser();\n var xmlDoc = parser.parseFromString(ttml, 'text/xml');\n var tt = xmlDoc.getElementsByTagName('tt')[0];\n\n if (!tt) {\n throw new Error('Invalid ttml');\n }\n\n var defaultRateInfo = {\n frameRate: 30,\n subFrameRate: 1,\n frameRateMultiplier: 0,\n tickRate: 0\n };\n var rateInfo = Object.keys(defaultRateInfo).reduce(function (result, key) {\n result[key] = tt.getAttribute(\"ttp:\" + key) || defaultRateInfo[key];\n return result;\n }, {});\n var trim = tt.getAttribute('xml:space') !== 'preserve';\n var styleElements = collectionToDictionary(getElementCollection(tt, 'styling', 'style'));\n var regionElements = collectionToDictionary(getElementCollection(tt, 'layout', 'region'));\n var cueElements = getElementCollection(tt, 'body', '[begin]');\n return [].map.call(cueElements, function (cueElement) {\n var cueText = getTextContent(cueElement, trim);\n\n if (!cueText || !cueElement.hasAttribute('begin')) {\n return null;\n }\n\n var startTime = parseTtmlTime(cueElement.getAttribute('begin'), rateInfo);\n var duration = parseTtmlTime(cueElement.getAttribute('dur'), rateInfo);\n var endTime = parseTtmlTime(cueElement.getAttribute('end'), rateInfo);\n\n if (startTime === null) {\n throw timestampParsingError(cueElement);\n }\n\n if (endTime === null) {\n if (duration === null) {\n throw timestampParsingError(cueElement);\n }\n\n endTime = startTime + duration;\n }\n\n var cue = new _vttcue__WEBPACK_IMPORTED_MODULE_2__[\"default\"](startTime - syncTime, endTime - syncTime, cueText);\n cue.id = Object(_webvtt_parser__WEBPACK_IMPORTED_MODULE_5__[\"generateCueId\"])(cue.startTime, cue.endTime, cue.text);\n var region = regionElements[cueElement.getAttribute('region')];\n var style = styleElements[cueElement.getAttribute('style')]; // TODO: Add regions to track and cue (origin and extend)\n // These values are hard-coded (for now) to simulate region settings in the demo\n\n cue.position = 10;\n cue.size = 80; // Apply styles to cue\n\n var styles = getTtmlStyles(region, style, styleElements);\n var textAlign = styles.textAlign;\n\n if (textAlign) {\n // cue.positionAlign not settable in FF~2016\n var lineAlign = textAlignToLineAlign[textAlign];\n\n if (lineAlign) {\n cue.lineAlign = lineAlign;\n }\n\n cue.align = textAlign;\n }\n\n _extends(cue, styles);\n\n return cue;\n }).filter(function (cue) {\n return cue !== null;\n });\n}\n\nfunction getElementCollection(fromElement, parentName, childName) {\n var parent = fromElement.getElementsByTagName(parentName)[0];\n\n if (parent) {\n return [].slice.call(parent.querySelectorAll(childName));\n }\n\n return [];\n}\n\nfunction collectionToDictionary(elementsWithId) {\n return elementsWithId.reduce(function (dict, element) {\n var id = element.getAttribute('xml:id');\n\n if (id) {\n dict[id] = element;\n }\n\n return dict;\n }, {});\n}\n\nfunction getTextContent(element, trim) {\n return [].slice.call(element.childNodes).reduce(function (str, node, i) {\n var _node$childNodes;\n\n if (node.nodeName === 'br' && i) {\n return str + '\\n';\n }\n\n if ((_node$childNodes = node.childNodes) !== null && _node$childNodes !== void 0 && _node$childNodes.length) {\n return getTextContent(node, trim);\n } else if (trim) {\n return str + node.textContent.trim().replace(/\\s+/g, ' ');\n }\n\n return str + node.textContent;\n }, '');\n}\n\nfunction getTtmlStyles(region, style, styleElements) {\n var ttsNs = 'http://www.w3.org/ns/ttml#styling';\n var regionStyle = null;\n var styleAttributes = ['displayAlign', 'textAlign', 'color', 'backgroundColor', 'fontSize', 'fontFamily' // 'fontWeight',\n // 'lineHeight',\n // 'wrapOption',\n // 'fontStyle',\n // 'direction',\n // 'writingMode'\n ];\n var regionStyleName = region !== null && region !== void 0 && region.hasAttribute('style') ? region.getAttribute('style') : null;\n\n if (regionStyleName && styleElements.hasOwnProperty(regionStyleName)) {\n regionStyle = styleElements[regionStyleName];\n }\n\n return styleAttributes.reduce(function (styles, name) {\n var value = getAttributeNS(style, ttsNs, name) || getAttributeNS(region, ttsNs, name) || getAttributeNS(regionStyle, ttsNs, name);\n\n if (value) {\n styles[name] = value;\n }\n\n return styles;\n }, {});\n}\n\nfunction getAttributeNS(element, ns, name) {\n if (!element) {\n return null;\n }\n\n return element.hasAttributeNS(ns, name) ? element.getAttributeNS(ns, name) : null;\n}\n\nfunction timestampParsingError(node) {\n return new Error(\"Could not parse ttml timestamp \" + node);\n}\n\nfunction parseTtmlTime(timeAttributeValue, rateInfo) {\n if (!timeAttributeValue) {\n return null;\n }\n\n var seconds = Object(_vttparser__WEBPACK_IMPORTED_MODULE_1__[\"parseTimeStamp\"])(timeAttributeValue);\n\n if (seconds === null) {\n if (HMSF_REGEX.test(timeAttributeValue)) {\n seconds = parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo);\n } else if (TIME_UNIT_REGEX.test(timeAttributeValue)) {\n seconds = parseTimeUnits(timeAttributeValue, rateInfo);\n }\n }\n\n return seconds;\n}\n\nfunction parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo) {\n var m = HMSF_REGEX.exec(timeAttributeValue);\n var frames = (m[4] | 0) + (m[5] | 0) / rateInfo.subFrameRate;\n return (m[1] | 0) * 3600 + (m[2] | 0) * 60 + (m[3] | 0) + frames / rateInfo.frameRate;\n}\n\nfunction parseTimeUnits(timeAttributeValue, rateInfo) {\n var m = TIME_UNIT_REGEX.exec(timeAttributeValue);\n var value = Number(m[1]);\n var unit = m[2];\n\n switch (unit) {\n case 'h':\n return value * 3600;\n\n case 'm':\n return value * 60;\n\n case 'ms':\n return value * 1000;\n\n case 'f':\n return value / rateInfo.frameRate;\n\n case 't':\n return value / rateInfo.tickRate;\n }\n\n return value;\n}\n\n/***/ }),\n\n/***/ \"./src/utils/logger.ts\":\n/*!*****************************!*\\\n !*** ./src/utils/logger.ts ***!\n \\*****************************/\n/*! exports provided: enableLogs, logger */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enableLogs\", function() { return enableLogs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"logger\", function() { return logger; });\nvar noop = function noop() {};\n\nvar fakeLogger = {\n trace: noop,\n debug: noop,\n log: noop,\n warn: noop,\n info: noop,\n error: noop\n};\nvar exportedLogger = fakeLogger; // let lastCallTime;\n// function formatMsgWithTimeInfo(type, msg) {\n// const now = Date.now();\n// const diff = lastCallTime ? '+' + (now - lastCallTime) : '0';\n// lastCallTime = now;\n// msg = (new Date(now)).toISOString() + ' | [' + type + '] > ' + msg + ' ( ' + diff + ' ms )';\n// return msg;\n// }\n\nfunction consolePrintFn(type) {\n var func = self.console[type];\n\n if (func) {\n return func.bind(self.console, \"[\" + type + \"] >\");\n }\n\n return noop;\n}\n\nfunction exportLoggerFunctions(debugConfig) {\n for (var _len = arguments.length, functions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n functions[_key - 1] = arguments[_key];\n }\n\n functions.forEach(function (type) {\n exportedLogger[type] = debugConfig[type] ? debugConfig[type].bind(debugConfig) : consolePrintFn(type);\n });\n}\n\nfunction enableLogs(debugConfig) {\n // check that console is available\n if (self.console && debugConfig === true || typeof debugConfig === 'object') {\n exportLoggerFunctions(debugConfig, // Remove out from list here to hard-disable a log-level\n // 'trace',\n 'debug', 'log', 'info', 'warn', 'error'); // Some browsers don't allow to use bind on console object anyway\n // fallback to default if needed\n\n try {\n exportedLogger.log();\n } catch (e) {\n exportedLogger = fakeLogger;\n }\n } else {\n exportedLogger = fakeLogger;\n }\n}\nvar logger = exportedLogger;\n\n/***/ }),\n\n/***/ \"./src/utils/mediakeys-helper.ts\":\n/*!***************************************!*\\\n !*** ./src/utils/mediakeys-helper.ts ***!\n \\***************************************/\n/*! exports provided: KeySystems, requestMediaKeySystemAccess */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KeySystems\", function() { return KeySystems; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestMediaKeySystemAccess\", function() { return requestMediaKeySystemAccess; });\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess\n */\nvar KeySystems;\n\n(function (KeySystems) {\n KeySystems[\"WIDEVINE\"] = \"com.widevine.alpha\";\n KeySystems[\"PLAYREADY\"] = \"com.microsoft.playready\";\n})(KeySystems || (KeySystems = {}));\n\nvar requestMediaKeySystemAccess = function () {\n if (typeof self !== 'undefined' && self.navigator && self.navigator.requestMediaKeySystemAccess) {\n return self.navigator.requestMediaKeySystemAccess.bind(self.navigator);\n } else {\n return null;\n }\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/utils/mediasource-helper.ts\":\n/*!*****************************************!*\\\n !*** ./src/utils/mediasource-helper.ts ***!\n \\*****************************************/\n/*! exports provided: getMediaSource */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMediaSource\", function() { return getMediaSource; });\n/**\n * MediaSource helper\n */\nfunction getMediaSource() {\n return self.MediaSource || self.WebKitMediaSource;\n}\n\n/***/ }),\n\n/***/ \"./src/utils/mp4-tools.ts\":\n/*!********************************!*\\\n !*** ./src/utils/mp4-tools.ts ***!\n \\********************************/\n/*! exports provided: RemuxerTrackIdConfig, bin2str, readUint16, readUint32, readSint32, writeUint32, findBox, parseSegmentIndex, parseInitSegment, getStartDTS, getDuration, computeRawDurationFromSamples, offsetStartDTS, segmentValidRange, appendUint8Array, parseSamples, parseSEIMessageFromNALu, parseEmsg */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RemuxerTrackIdConfig\", function() { return RemuxerTrackIdConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bin2str\", function() { return bin2str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"readUint16\", function() { return readUint16; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"readUint32\", function() { return readUint32; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"readSint32\", function() { return readSint32; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"writeUint32\", function() { return writeUint32; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findBox\", function() { return findBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSegmentIndex\", function() { return parseSegmentIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseInitSegment\", function() { return parseInitSegment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStartDTS\", function() { return getStartDTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDuration\", function() { return getDuration; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"computeRawDurationFromSamples\", function() { return computeRawDurationFromSamples; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"offsetStartDTS\", function() { return offsetStartDTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"segmentValidRange\", function() { return segmentValidRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"appendUint8Array\", function() { return appendUint8Array; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSamples\", function() { return parseSamples; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSEIMessageFromNALu\", function() { return parseSEIMessageFromNALu; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseEmsg\", function() { return parseEmsg; });\n/* harmony import */ var _typed_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typed-array */ \"./src/utils/typed-array.ts\");\n/* harmony import */ var _loader_fragment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../loader/fragment */ \"./src/loader/fragment.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\n\n\n\nvar UINT32_MAX = Math.pow(2, 32) - 1;\nvar push = [].push; // We are using fixed track IDs for driving the MP4 remuxer\n// instead of following the TS PIDs.\n// There is no reason not to do this and some browsers/SourceBuffer-demuxers\n// may not like if there are TrackID \"switches\"\n// See https://github.com/video-dev/hls.js/issues/1331\n// Here we are mapping our internal track types to constant MP4 track IDs\n// With MSE currently one can only have one track of each, and we are muxing\n// whatever video/audio rendition in them.\n\nvar RemuxerTrackIdConfig = {\n video: 1,\n audio: 2,\n id3: 3,\n text: 4\n};\nfunction bin2str(data) {\n return String.fromCharCode.apply(null, data);\n}\nfunction readUint16(buffer, offset) {\n var val = buffer[offset] << 8 | buffer[offset + 1];\n return val < 0 ? 65536 + val : val;\n}\nfunction readUint32(buffer, offset) {\n var val = readSint32(buffer, offset);\n return val < 0 ? 4294967296 + val : val;\n}\nfunction readSint32(buffer, offset) {\n return buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3];\n}\nfunction writeUint32(buffer, offset, value) {\n buffer[offset] = value >> 24;\n buffer[offset + 1] = value >> 16 & 0xff;\n buffer[offset + 2] = value >> 8 & 0xff;\n buffer[offset + 3] = value & 0xff;\n} // Find the data for a box specified by its path\n\nfunction findBox(data, path) {\n var results = [];\n\n if (!path.length) {\n // short-circuit the search for empty paths\n return results;\n }\n\n var end = data.byteLength;\n\n for (var i = 0; i < end;) {\n var size = readUint32(data, i);\n var type = bin2str(data.subarray(i + 4, i + 8));\n var endbox = size > 1 ? i + size : end;\n\n if (type === path[0]) {\n if (path.length === 1) {\n // this is the end of the path and we've found the box we were\n // looking for\n results.push(data.subarray(i + 8, endbox));\n } else {\n // recursively search for the next box along the path\n var subresults = findBox(data.subarray(i + 8, endbox), path.slice(1));\n\n if (subresults.length) {\n push.apply(results, subresults);\n }\n }\n }\n\n i = endbox;\n } // we've finished searching all of data\n\n\n return results;\n}\nfunction parseSegmentIndex(sidx) {\n var references = [];\n var version = sidx[0]; // set initial offset, we skip the reference ID (not needed)\n\n var index = 8;\n var timescale = readUint32(sidx, index);\n index += 4; // TODO: parse earliestPresentationTime and firstOffset\n // usually zero in our case\n\n var earliestPresentationTime = 0;\n var firstOffset = 0;\n\n if (version === 0) {\n index += 8;\n } else {\n index += 16;\n } // skip reserved\n\n\n index += 2;\n var startByte = sidx.length + firstOffset;\n var referencesCount = readUint16(sidx, index);\n index += 2;\n\n for (var i = 0; i < referencesCount; i++) {\n var referenceIndex = index;\n var referenceInfo = readUint32(sidx, referenceIndex);\n referenceIndex += 4;\n var referenceSize = referenceInfo & 0x7fffffff;\n var referenceType = (referenceInfo & 0x80000000) >>> 31;\n\n if (referenceType === 1) {\n // eslint-disable-next-line no-console\n console.warn('SIDX has hierarchical references (not supported)');\n return null;\n }\n\n var subsegmentDuration = readUint32(sidx, referenceIndex);\n referenceIndex += 4;\n references.push({\n referenceSize: referenceSize,\n subsegmentDuration: subsegmentDuration,\n // unscaled\n info: {\n duration: subsegmentDuration / timescale,\n start: startByte,\n end: startByte + referenceSize - 1\n }\n });\n startByte += referenceSize; // Skipping 1 bit for |startsWithSap|, 3 bits for |sapType|, and 28 bits\n // for |sapDelta|.\n\n referenceIndex += 4; // skip to next ref\n\n index = referenceIndex;\n }\n\n return {\n earliestPresentationTime: earliestPresentationTime,\n timescale: timescale,\n version: version,\n referencesCount: referencesCount,\n references: references\n };\n}\n/**\n * Parses an MP4 initialization segment and extracts stream type and\n * timescale values for any declared tracks. Timescale values indicate the\n * number of clock ticks per second to assume for time-based values\n * elsewhere in the MP4.\n *\n * To determine the start time of an MP4, you need two pieces of\n * information: the timescale unit and the earliest base media decode\n * time. Multiple timescales can be specified within an MP4 but the\n * base media decode time is always expressed in the timescale from\n * the media header box for the track:\n * ```\n * moov > trak > mdia > mdhd.timescale\n * moov > trak > mdia > hdlr\n * ```\n * @param initSegment {Uint8Array} the bytes of the init segment\n * @return {InitData} a hash of track type to timescale values or null if\n * the init segment is malformed.\n */\n\nfunction parseInitSegment(initSegment) {\n var result = [];\n var traks = findBox(initSegment, ['moov', 'trak']);\n\n for (var i = 0; i < traks.length; i++) {\n var trak = traks[i];\n var tkhd = findBox(trak, ['tkhd'])[0];\n\n if (tkhd) {\n var version = tkhd[0];\n\n var _index = version === 0 ? 12 : 20;\n\n var trackId = readUint32(tkhd, _index);\n var mdhd = findBox(trak, ['mdia', 'mdhd'])[0];\n\n if (mdhd) {\n version = mdhd[0];\n _index = version === 0 ? 12 : 20;\n var timescale = readUint32(mdhd, _index);\n var hdlr = findBox(trak, ['mdia', 'hdlr'])[0];\n\n if (hdlr) {\n var hdlrType = bin2str(hdlr.subarray(8, 12));\n var type = {\n soun: _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].AUDIO,\n vide: _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].VIDEO\n }[hdlrType];\n\n if (type) {\n // Parse codec details\n var stsd = findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0];\n var codec = void 0;\n\n if (stsd) {\n codec = bin2str(stsd.subarray(12, 16)); // TODO: Parse codec details to be able to build MIME type.\n // stsd.start += 8;\n // const codecBox = findBox(stsd, [codec])[0];\n // if (codecBox) {\n // TODO: Codec parsing support for avc1, mp4a, hevc, av01...\n // }\n }\n\n result[trackId] = {\n timescale: timescale,\n type: type\n };\n result[type] = {\n timescale: timescale,\n id: trackId,\n codec: codec\n };\n }\n }\n }\n }\n }\n\n var trex = findBox(initSegment, ['moov', 'mvex', 'trex']);\n trex.forEach(function (trex) {\n var trackId = readUint32(trex, 4);\n var track = result[trackId];\n\n if (track) {\n track.default = {\n duration: readUint32(trex, 12),\n flags: readUint32(trex, 20)\n };\n }\n });\n return result;\n}\n/**\n * Determine the base media decode start time, in seconds, for an MP4\n * fragment. If multiple fragments are specified, the earliest time is\n * returned.\n *\n * The base media decode time can be parsed from track fragment\n * metadata:\n * ```\n * moof > traf > tfdt.baseMediaDecodeTime\n * ```\n * It requires the timescale value from the mdhd to interpret.\n *\n * @param initData {InitData} a hash of track type to timescale values\n * @param fmp4 {Uint8Array} the bytes of the mp4 fragment\n * @return {number} the earliest base media decode start time for the\n * fragment, in seconds\n */\n\nfunction getStartDTS(initData, fmp4) {\n // we need info from two children of each track fragment box\n return findBox(fmp4, ['moof', 'traf']).reduce(function (result, traf) {\n var tfdt = findBox(traf, ['tfdt'])[0];\n var version = tfdt[0];\n var start = findBox(traf, ['tfhd']).reduce(function (result, tfhd) {\n // get the track id from the tfhd\n var id = readUint32(tfhd, 4);\n var track = initData[id];\n\n if (track) {\n var baseTime = readUint32(tfdt, 4);\n\n if (version === 1) {\n baseTime *= Math.pow(2, 32);\n baseTime += readUint32(tfdt, 8);\n } // assume a 90kHz clock if no timescale was specified\n\n\n var scale = track.timescale || 90e3; // convert base time to seconds\n\n var startTime = baseTime / scale;\n\n if (isFinite(startTime) && (result === null || startTime < result)) {\n return startTime;\n }\n }\n\n return result;\n }, null);\n\n if (start !== null && isFinite(start) && (result === null || start < result)) {\n return start;\n }\n\n return result;\n }, null) || 0;\n}\n/*\n For Reference:\n aligned(8) class TrackFragmentHeaderBox\n extends FullBox(‘tfhd’, 0, tf_flags){\n unsigned int(32) track_ID;\n // all the following are optional fields\n unsigned int(64) base_data_offset;\n unsigned int(32) sample_description_index;\n unsigned int(32) default_sample_duration;\n unsigned int(32) default_sample_size;\n unsigned int(32) default_sample_flags\n }\n */\n\nfunction getDuration(data, initData) {\n var sidxDuration = 0;\n var sidxs = findBox(data, ['sidx']);\n\n for (var i = 0; i < sidxs.length; i++) {\n var sidx = parseSegmentIndex(sidxs[i]);\n\n if (sidx !== null && sidx !== void 0 && sidx.references) {\n sidxDuration += sidx.references.reduce(function (dur, ref) {\n return dur + ref.info.duration || 0;\n }, 0);\n }\n }\n\n if (sidxDuration) {\n return sidxDuration;\n }\n\n var rawDuration = 0;\n var videoDuration = 0;\n var audioDuration = 0;\n var trafs = findBox(data, ['moof', 'traf']);\n\n for (var _i = 0; _i < trafs.length; _i++) {\n var traf = trafs[_i]; // There is only one tfhd & trun per traf\n // This is true for CMAF style content, and we should perhaps check the ftyp\n // and only look for a single trun then, but for ISOBMFF we should check\n // for multiple track runs.\n\n var tfhd = findBox(traf, ['tfhd'])[0]; // get the track id from the tfhd\n\n var id = readUint32(tfhd, 4);\n var track = initData[id];\n\n if (!track) {\n continue;\n }\n\n var trackDefault = track.default;\n var tfhdFlags = readUint32(tfhd, 0) | (trackDefault === null || trackDefault === void 0 ? void 0 : trackDefault.flags);\n var sampleDuration = trackDefault === null || trackDefault === void 0 ? void 0 : trackDefault.duration;\n\n if (tfhdFlags & 0x000008) {\n // 0x000008 indicates the presence of the default_sample_duration field\n if (tfhdFlags & 0x000002) {\n // 0x000002 indicates the presence of the sample_description_index field, which precedes default_sample_duration\n // If present, the default_sample_duration exists at byte offset 12\n sampleDuration = readUint32(tfhd, 12);\n } else {\n // Otherwise, the duration is at byte offset 8\n sampleDuration = readUint32(tfhd, 8);\n }\n } // assume a 90kHz clock if no timescale was specified\n\n\n var timescale = track.timescale || 90e3;\n var truns = findBox(traf, ['trun']);\n\n for (var j = 0; j < truns.length; j++) {\n rawDuration = computeRawDurationFromSamples(truns[j]);\n\n if (!rawDuration && sampleDuration) {\n var sampleCount = readUint32(truns[j], 4);\n rawDuration = sampleDuration * sampleCount;\n }\n\n if (track.type === _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].VIDEO) {\n videoDuration += rawDuration / timescale;\n } else if (track.type === _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].AUDIO) {\n audioDuration += rawDuration / timescale;\n }\n }\n }\n\n if (videoDuration) {\n return videoDuration;\n }\n\n return audioDuration;\n}\n/*\n For Reference:\n aligned(8) class TrackRunBox\n extends FullBox(‘trun’, version, tr_flags) {\n unsigned int(32) sample_count;\n // the following are optional fields\n signed int(32) data_offset;\n unsigned int(32) first_sample_flags;\n // all fields in the following array are optional\n {\n unsigned int(32) sample_duration;\n unsigned int(32) sample_size;\n unsigned int(32) sample_flags\n if (version == 0)\n { unsigned int(32)\n else\n { signed int(32)\n }[ sample_count ]\n }\n */\n\nfunction computeRawDurationFromSamples(trun) {\n var flags = readUint32(trun, 0); // Flags are at offset 0, non-optional sample_count is at offset 4. Therefore we start 8 bytes in.\n // Each field is an int32, which is 4 bytes\n\n var offset = 8; // data-offset-present flag\n\n if (flags & 0x000001) {\n offset += 4;\n } // first-sample-flags-present flag\n\n\n if (flags & 0x000004) {\n offset += 4;\n }\n\n var duration = 0;\n var sampleCount = readUint32(trun, 4);\n\n for (var i = 0; i < sampleCount; i++) {\n // sample-duration-present flag\n if (flags & 0x000100) {\n var sampleDuration = readUint32(trun, offset);\n duration += sampleDuration;\n offset += 4;\n } // sample-size-present flag\n\n\n if (flags & 0x000200) {\n offset += 4;\n } // sample-flags-present flag\n\n\n if (flags & 0x000400) {\n offset += 4;\n } // sample-composition-time-offsets-present flag\n\n\n if (flags & 0x000800) {\n offset += 4;\n }\n }\n\n return duration;\n}\nfunction offsetStartDTS(initData, fmp4, timeOffset) {\n findBox(fmp4, ['moof', 'traf']).forEach(function (traf) {\n findBox(traf, ['tfhd']).forEach(function (tfhd) {\n // get the track id from the tfhd\n var id = readUint32(tfhd, 4);\n var track = initData[id];\n\n if (!track) {\n return;\n } // assume a 90kHz clock if no timescale was specified\n\n\n var timescale = track.timescale || 90e3; // get the base media decode time from the tfdt\n\n findBox(traf, ['tfdt']).forEach(function (tfdt) {\n var version = tfdt[0];\n var baseMediaDecodeTime = readUint32(tfdt, 4);\n\n if (version === 0) {\n baseMediaDecodeTime -= timeOffset * timescale;\n baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n writeUint32(tfdt, 4, baseMediaDecodeTime);\n } else {\n baseMediaDecodeTime *= Math.pow(2, 32);\n baseMediaDecodeTime += readUint32(tfdt, 8);\n baseMediaDecodeTime -= timeOffset * timescale;\n baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n var upper = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));\n var lower = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));\n writeUint32(tfdt, 4, upper);\n writeUint32(tfdt, 8, lower);\n }\n });\n });\n });\n} // TODO: Check if the last moof+mdat pair is part of the valid range\n\nfunction segmentValidRange(data) {\n var segmentedRange = {\n valid: null,\n remainder: null\n };\n var moofs = findBox(data, ['moof']);\n\n if (!moofs) {\n return segmentedRange;\n } else if (moofs.length < 2) {\n segmentedRange.remainder = data;\n return segmentedRange;\n }\n\n var last = moofs[moofs.length - 1]; // Offset by 8 bytes; findBox offsets the start by as much\n\n segmentedRange.valid = Object(_typed_array__WEBPACK_IMPORTED_MODULE_0__[\"sliceUint8\"])(data, 0, last.byteOffset - 8);\n segmentedRange.remainder = Object(_typed_array__WEBPACK_IMPORTED_MODULE_0__[\"sliceUint8\"])(data, last.byteOffset - 8);\n return segmentedRange;\n}\nfunction appendUint8Array(data1, data2) {\n var temp = new Uint8Array(data1.length + data2.length);\n temp.set(data1);\n temp.set(data2, data1.length);\n return temp;\n}\nfunction parseSamples(timeOffset, track) {\n var seiSamples = [];\n var videoData = track.samples;\n var timescale = track.timescale;\n var trackId = track.id;\n var isHEVCFlavor = false;\n var moofs = findBox(videoData, ['moof']);\n moofs.map(function (moof) {\n var moofOffset = moof.byteOffset - 8;\n var trafs = findBox(moof, ['traf']);\n trafs.map(function (traf) {\n // get the base media decode time from the tfdt\n var baseTime = findBox(traf, ['tfdt']).map(function (tfdt) {\n var version = tfdt[0];\n var result = readUint32(tfdt, 4);\n\n if (version === 1) {\n result *= Math.pow(2, 32);\n result += readUint32(tfdt, 8);\n }\n\n return result / timescale;\n })[0];\n\n if (baseTime !== undefined) {\n timeOffset = baseTime;\n }\n\n return findBox(traf, ['tfhd']).map(function (tfhd) {\n var id = readUint32(tfhd, 4);\n var tfhdFlags = readUint32(tfhd, 0) & 0xffffff;\n var baseDataOffsetPresent = (tfhdFlags & 0x000001) !== 0;\n var sampleDescriptionIndexPresent = (tfhdFlags & 0x000002) !== 0;\n var defaultSampleDurationPresent = (tfhdFlags & 0x000008) !== 0;\n var defaultSampleDuration = 0;\n var defaultSampleSizePresent = (tfhdFlags & 0x000010) !== 0;\n var defaultSampleSize = 0;\n var defaultSampleFlagsPresent = (tfhdFlags & 0x000020) !== 0;\n var tfhdOffset = 8;\n\n if (id === trackId) {\n if (baseDataOffsetPresent) {\n tfhdOffset += 8;\n }\n\n if (sampleDescriptionIndexPresent) {\n tfhdOffset += 4;\n }\n\n if (defaultSampleDurationPresent) {\n defaultSampleDuration = readUint32(tfhd, tfhdOffset);\n tfhdOffset += 4;\n }\n\n if (defaultSampleSizePresent) {\n defaultSampleSize = readUint32(tfhd, tfhdOffset);\n tfhdOffset += 4;\n }\n\n if (defaultSampleFlagsPresent) {\n tfhdOffset += 4;\n }\n\n if (track.type === 'video') {\n isHEVCFlavor = isHEVC(track.codec);\n }\n\n findBox(traf, ['trun']).map(function (trun) {\n var version = trun[0];\n var flags = readUint32(trun, 0) & 0xffffff;\n var dataOffsetPresent = (flags & 0x000001) !== 0;\n var dataOffset = 0;\n var firstSampleFlagsPresent = (flags & 0x000004) !== 0;\n var sampleDurationPresent = (flags & 0x000100) !== 0;\n var sampleDuration = 0;\n var sampleSizePresent = (flags & 0x000200) !== 0;\n var sampleSize = 0;\n var sampleFlagsPresent = (flags & 0x000400) !== 0;\n var sampleCompositionOffsetsPresent = (flags & 0x000800) !== 0;\n var compositionOffset = 0;\n var sampleCount = readUint32(trun, 4);\n var trunOffset = 8; // past version, flags, and sample count\n\n if (dataOffsetPresent) {\n dataOffset = readUint32(trun, trunOffset);\n trunOffset += 4;\n }\n\n if (firstSampleFlagsPresent) {\n trunOffset += 4;\n }\n\n var sampleOffset = dataOffset + moofOffset;\n\n for (var ix = 0; ix < sampleCount; ix++) {\n if (sampleDurationPresent) {\n sampleDuration = readUint32(trun, trunOffset);\n trunOffset += 4;\n } else {\n sampleDuration = defaultSampleDuration;\n }\n\n if (sampleSizePresent) {\n sampleSize = readUint32(trun, trunOffset);\n trunOffset += 4;\n } else {\n sampleSize = defaultSampleSize;\n }\n\n if (sampleFlagsPresent) {\n trunOffset += 4;\n }\n\n if (sampleCompositionOffsetsPresent) {\n if (version === 0) {\n compositionOffset = readUint32(trun, trunOffset);\n } else {\n compositionOffset = readSint32(trun, trunOffset);\n }\n\n trunOffset += 4;\n }\n\n if (track.type === _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].VIDEO) {\n var naluTotalSize = 0;\n\n while (naluTotalSize < sampleSize) {\n var naluSize = readUint32(videoData, sampleOffset);\n sampleOffset += 4;\n var naluType = videoData[sampleOffset] & 0x1f;\n\n if (isSEIMessage(isHEVCFlavor, naluType)) {\n var data = videoData.subarray(sampleOffset, sampleOffset + naluSize);\n parseSEIMessageFromNALu(data, timeOffset + compositionOffset / timescale, seiSamples);\n }\n\n sampleOffset += naluSize;\n naluTotalSize += naluSize + 4;\n }\n }\n\n timeOffset += sampleDuration / timescale;\n }\n });\n }\n });\n });\n });\n return seiSamples;\n}\n\nfunction isHEVC(codec) {\n if (!codec) {\n return false;\n }\n\n var delimit = codec.indexOf('.');\n var baseCodec = delimit < 0 ? codec : codec.substring(0, delimit);\n return baseCodec === 'hvc1' || baseCodec === 'hev1' || // Dolby Vision\n baseCodec === 'dvh1' || baseCodec === 'dvhe';\n}\n\nfunction isSEIMessage(isHEVCFlavor, naluType) {\n return isHEVCFlavor ? naluType === 39 || naluType === 40 : naluType === 6;\n}\n\nfunction parseSEIMessageFromNALu(unescapedData, pts, samples) {\n var data = discardEPB(unescapedData);\n var seiPtr = 0; // skip frameType\n\n seiPtr++;\n var payloadType = 0;\n var payloadSize = 0;\n var endOfCaptions = false;\n var b = 0;\n\n while (seiPtr < data.length) {\n payloadType = 0;\n\n do {\n if (seiPtr >= data.length) {\n break;\n }\n\n b = data[seiPtr++];\n payloadType += b;\n } while (b === 0xff); // Parse payload size.\n\n\n payloadSize = 0;\n\n do {\n if (seiPtr >= data.length) {\n break;\n }\n\n b = data[seiPtr++];\n payloadSize += b;\n } while (b === 0xff);\n\n var leftOver = data.length - seiPtr;\n\n if (!endOfCaptions && payloadType === 4 && seiPtr < data.length) {\n endOfCaptions = true;\n var countryCode = data[seiPtr++];\n\n if (countryCode === 181) {\n var providerCode = readUint16(data, seiPtr);\n seiPtr += 2;\n\n if (providerCode === 49) {\n var userStructure = readUint32(data, seiPtr);\n seiPtr += 4;\n\n if (userStructure === 0x47413934) {\n var userDataType = data[seiPtr++]; // Raw CEA-608 bytes wrapped in CEA-708 packet\n\n if (userDataType === 3) {\n var firstByte = data[seiPtr++];\n var totalCCs = 0x1f & firstByte;\n var enabled = 0x40 & firstByte;\n var totalBytes = enabled ? 2 + totalCCs * 3 : 0;\n var byteArray = new Uint8Array(totalBytes);\n\n if (enabled) {\n byteArray[0] = firstByte;\n\n for (var i = 1; i < totalBytes; i++) {\n byteArray[i] = data[seiPtr++];\n }\n }\n\n samples.push({\n type: userDataType,\n payloadType: payloadType,\n pts: pts,\n bytes: byteArray\n });\n }\n }\n }\n }\n } else if (payloadType === 5 && payloadSize < leftOver) {\n endOfCaptions = true;\n\n if (payloadSize > 16) {\n var uuidStrArray = [];\n\n for (var _i2 = 0; _i2 < 16; _i2++) {\n var _b = data[seiPtr++].toString(16);\n\n uuidStrArray.push(_b.length == 1 ? '0' + _b : _b);\n\n if (_i2 === 3 || _i2 === 5 || _i2 === 7 || _i2 === 9) {\n uuidStrArray.push('-');\n }\n }\n\n var length = payloadSize - 16;\n var userDataBytes = new Uint8Array(length);\n\n for (var _i3 = 0; _i3 < length; _i3++) {\n userDataBytes[_i3] = data[seiPtr++];\n }\n\n samples.push({\n payloadType: payloadType,\n pts: pts,\n uuid: uuidStrArray.join(''),\n userData: Object(_demux_id3__WEBPACK_IMPORTED_MODULE_2__[\"utf8ArrayToStr\"])(userDataBytes),\n userDataBytes: userDataBytes\n });\n }\n } else if (payloadSize < leftOver) {\n seiPtr += payloadSize;\n } else if (payloadSize > leftOver) {\n break;\n }\n }\n}\n/**\n * remove Emulation Prevention bytes from a RBSP\n */\n\nfunction discardEPB(data) {\n var length = data.byteLength;\n var EPBPositions = [];\n var i = 1; // Find all `Emulation Prevention Bytes`\n\n while (i < length - 2) {\n if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n EPBPositions.push(i + 2);\n i += 2;\n } else {\n i++;\n }\n } // If no Emulation Prevention Bytes were found just return the original\n // array\n\n\n if (EPBPositions.length === 0) {\n return data;\n } // Create a new array to hold the NAL unit data\n\n\n var newLength = length - EPBPositions.length;\n var newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === EPBPositions[0]) {\n // Skip this byte\n sourceIndex++; // Remove this position index\n\n EPBPositions.shift();\n }\n\n newData[i] = data[sourceIndex];\n }\n\n return newData;\n}\n\nfunction parseEmsg(data) {\n var version = data[0];\n var schemeIdUri = '';\n var value = '';\n var timeScale = 0;\n var presentationTimeDelta = 0;\n var presentationTime = 0;\n var eventDuration = 0;\n var id = 0;\n var offset = 0;\n\n if (version === 0) {\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n timeScale = readUint32(data, 12);\n presentationTimeDelta = readUint32(data, 16);\n eventDuration = readUint32(data, 20);\n id = readUint32(data, 24);\n offset = 28;\n } else if (version === 1) {\n offset += 4;\n timeScale = readUint32(data, offset);\n offset += 4;\n var leftPresentationTime = readUint32(data, offset);\n offset += 4;\n var rightPresentationTime = readUint32(data, offset);\n offset += 4;\n presentationTime = Math.pow(2, 32) * leftPresentationTime + rightPresentationTime;\n\n if (!Number.isSafeInteger(presentationTime)) {\n presentationTime = Number.MAX_SAFE_INTEGER; // eslint-disable-next-line no-console\n\n console.warn('Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box');\n }\n\n eventDuration = readUint32(data, offset);\n offset += 4;\n id = readUint32(data, offset);\n offset += 4;\n\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n\n var payload = data.subarray(offset, data.byteLength);\n return {\n schemeIdUri: schemeIdUri,\n value: value,\n timeScale: timeScale,\n presentationTime: presentationTime,\n presentationTimeDelta: presentationTimeDelta,\n eventDuration: eventDuration,\n id: id,\n payload: payload\n };\n}\n\n/***/ }),\n\n/***/ \"./src/utils/output-filter.ts\":\n/*!************************************!*\\\n !*** ./src/utils/output-filter.ts ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return OutputFilter; });\nvar OutputFilter = /*#__PURE__*/function () {\n function OutputFilter(timelineController, trackName) {\n this.timelineController = void 0;\n this.cueRanges = [];\n this.trackName = void 0;\n this.startTime = null;\n this.endTime = null;\n this.screen = null;\n this.timelineController = timelineController;\n this.trackName = trackName;\n }\n\n var _proto = OutputFilter.prototype;\n\n _proto.dispatchCue = function dispatchCue() {\n if (this.startTime === null) {\n return;\n }\n\n this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen, this.cueRanges);\n this.startTime = null;\n };\n\n _proto.newCue = function newCue(startTime, endTime, screen) {\n if (this.startTime === null || this.startTime > startTime) {\n this.startTime = startTime;\n }\n\n this.endTime = endTime;\n this.screen = screen;\n this.timelineController.createCaptionsTrack(this.trackName);\n };\n\n _proto.reset = function reset() {\n this.cueRanges = [];\n this.startTime = null;\n };\n\n return OutputFilter;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/utils/texttrack-utils.ts\":\n/*!**************************************!*\\\n !*** ./src/utils/texttrack-utils.ts ***!\n \\**************************************/\n/*! exports provided: sendAddTrackEvent, addCueToTrack, clearCurrentCues, removeCuesInRange, getCuesInRange */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sendAddTrackEvent\", function() { return sendAddTrackEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addCueToTrack\", function() { return addCueToTrack; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearCurrentCues\", function() { return clearCurrentCues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeCuesInRange\", function() { return removeCuesInRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCuesInRange\", function() { return getCuesInRange; });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logger */ \"./src/utils/logger.ts\");\n\nfunction sendAddTrackEvent(track, videoEl) {\n var event;\n\n try {\n event = new Event('addtrack');\n } catch (err) {\n // for IE11\n event = document.createEvent('Event');\n event.initEvent('addtrack', false, false);\n }\n\n event.track = track;\n videoEl.dispatchEvent(event);\n}\nfunction addCueToTrack(track, cue) {\n // Sometimes there are cue overlaps on segmented vtts so the same\n // cue can appear more than once in different vtt files.\n // This avoid showing duplicated cues with same timecode and text.\n var mode = track.mode;\n\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n\n if (track.cues && !track.cues.getCueById(cue.id)) {\n try {\n track.addCue(cue);\n\n if (!track.cues.getCueById(cue.id)) {\n throw new Error(\"addCue is failed for: \" + cue);\n }\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].debug(\"[texttrack-utils]: \" + err);\n var textTrackCue = new self.TextTrackCue(cue.startTime, cue.endTime, cue.text);\n textTrackCue.id = cue.id;\n track.addCue(textTrackCue);\n }\n }\n\n if (mode === 'disabled') {\n track.mode = mode;\n }\n}\nfunction clearCurrentCues(track) {\n // When track.mode is disabled, track.cues will be null.\n // To guarantee the removal of cues, we need to temporarily\n // change the mode to hidden\n var mode = track.mode;\n\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n\n if (track.cues) {\n for (var i = track.cues.length; i--;) {\n track.removeCue(track.cues[i]);\n }\n }\n\n if (mode === 'disabled') {\n track.mode = mode;\n }\n}\nfunction removeCuesInRange(track, start, end, predicate) {\n var mode = track.mode;\n\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n\n if (track.cues && track.cues.length > 0) {\n var cues = getCuesInRange(track.cues, start, end);\n\n for (var i = 0; i < cues.length; i++) {\n if (!predicate || predicate(cues[i])) {\n track.removeCue(cues[i]);\n }\n }\n }\n\n if (mode === 'disabled') {\n track.mode = mode;\n }\n} // Find first cue starting after given time.\n// Modified version of binary search O(log(n)).\n\nfunction getFirstCueIndexAfterTime(cues, time) {\n // If first cue starts after time, start there\n if (time < cues[0].startTime) {\n return 0;\n } // If the last cue ends before time there is no overlap\n\n\n var len = cues.length - 1;\n\n if (time > cues[len].endTime) {\n return -1;\n }\n\n var left = 0;\n var right = len;\n\n while (left <= right) {\n var mid = Math.floor((right + left) / 2);\n\n if (time < cues[mid].startTime) {\n right = mid - 1;\n } else if (time > cues[mid].startTime && left < len) {\n left = mid + 1;\n } else {\n // If it's not lower or higher, it must be equal.\n return mid;\n }\n } // At this point, left and right have swapped.\n // No direct match was found, left or right element must be the closest. Check which one has the smallest diff.\n\n\n return cues[left].startTime - time < time - cues[right].startTime ? left : right;\n}\n\nfunction getCuesInRange(cues, start, end) {\n var cuesFound = [];\n var firstCueInRange = getFirstCueIndexAfterTime(cues, start);\n\n if (firstCueInRange > -1) {\n for (var i = firstCueInRange, len = cues.length; i < len; i++) {\n var _cue = cues[i];\n\n if (_cue.startTime >= start && _cue.endTime <= end) {\n cuesFound.push(_cue);\n } else if (_cue.startTime > end) {\n return cuesFound;\n }\n }\n }\n\n return cuesFound;\n}\n\n/***/ }),\n\n/***/ \"./src/utils/time-ranges.ts\":\n/*!**********************************!*\\\n !*** ./src/utils/time-ranges.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * TimeRanges to string helper\n */\nvar TimeRanges = {\n toString: function toString(r) {\n var log = '';\n var len = r.length;\n\n for (var i = 0; i < len; i++) {\n log += '[' + r.start(i).toFixed(3) + ',' + r.end(i).toFixed(3) + ']';\n }\n\n return log;\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (TimeRanges);\n\n/***/ }),\n\n/***/ \"./src/utils/timescale-conversion.ts\":\n/*!*******************************************!*\\\n !*** ./src/utils/timescale-conversion.ts ***!\n \\*******************************************/\n/*! exports provided: toTimescaleFromBase, toTimescaleFromScale, toMsFromMpegTsClock, toMpegTsClockFromTimescale */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toTimescaleFromBase\", function() { return toTimescaleFromBase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toTimescaleFromScale\", function() { return toTimescaleFromScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toMsFromMpegTsClock\", function() { return toMsFromMpegTsClock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toMpegTsClockFromTimescale\", function() { return toMpegTsClockFromTimescale; });\nvar MPEG_TS_CLOCK_FREQ_HZ = 90000;\nfunction toTimescaleFromBase(value, destScale, srcBase, round) {\n if (srcBase === void 0) {\n srcBase = 1;\n }\n\n if (round === void 0) {\n round = false;\n }\n\n var result = value * destScale * srcBase; // equivalent to `(value * scale) / (1 / base)`\n\n return round ? Math.round(result) : result;\n}\nfunction toTimescaleFromScale(value, destScale, srcScale, round) {\n if (srcScale === void 0) {\n srcScale = 1;\n }\n\n if (round === void 0) {\n round = false;\n }\n\n return toTimescaleFromBase(value, destScale, 1 / srcScale, round);\n}\nfunction toMsFromMpegTsClock(value, round) {\n if (round === void 0) {\n round = false;\n }\n\n return toTimescaleFromBase(value, 1000, 1 / MPEG_TS_CLOCK_FREQ_HZ, round);\n}\nfunction toMpegTsClockFromTimescale(value, srcScale) {\n if (srcScale === void 0) {\n srcScale = 1;\n }\n\n return toTimescaleFromBase(value, MPEG_TS_CLOCK_FREQ_HZ, 1 / srcScale);\n}\n\n/***/ }),\n\n/***/ \"./src/utils/typed-array.ts\":\n/*!**********************************!*\\\n !*** ./src/utils/typed-array.ts ***!\n \\**********************************/\n/*! exports provided: sliceUint8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sliceUint8\", function() { return sliceUint8; });\nfunction sliceUint8(array, start, end) {\n // @ts-expect-error This polyfills IE11 usage of Uint8Array slice.\n // It always exists in the TypeScript definition so fails, but it fails at runtime on IE11.\n return Uint8Array.prototype.slice ? array.slice(start, end) : new Uint8Array(Array.prototype.slice.call(array, start, end));\n}\n\n/***/ }),\n\n/***/ \"./src/utils/vttcue.ts\":\n/*!*****************************!*\\\n !*** ./src/utils/vttcue.ts ***!\n \\*****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function () {\n if (typeof self !== 'undefined' && self.VTTCue) {\n return self.VTTCue;\n }\n\n var AllowedDirections = ['', 'lr', 'rl'];\n var AllowedAlignments = ['start', 'middle', 'end', 'left', 'right'];\n\n function isAllowedValue(allowed, value) {\n if (typeof value !== 'string') {\n return false;\n } // necessary for assuring the generic conforms to the Array interface\n\n\n if (!Array.isArray(allowed)) {\n return false;\n } // reset the type so that the next narrowing works well\n\n\n var lcValue = value.toLowerCase(); // use the allow list to narrow the type to a specific subset of strings\n\n if (~allowed.indexOf(lcValue)) {\n return lcValue;\n }\n\n return false;\n }\n\n function findDirectionSetting(value) {\n return isAllowedValue(AllowedDirections, value);\n }\n\n function findAlignSetting(value) {\n return isAllowedValue(AllowedAlignments, value);\n }\n\n function extend(obj) {\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n var i = 1;\n\n for (; i < arguments.length; i++) {\n var cobj = arguments[i];\n\n for (var p in cobj) {\n obj[p] = cobj[p];\n }\n }\n\n return obj;\n }\n\n function VTTCue(startTime, endTime, text) {\n var cue = this;\n var baseObj = {\n enumerable: true\n };\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n\n cue.hasBeenReset = false;\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = '';\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = '';\n var _snapToLines = true;\n var _line = 'auto';\n var _lineAlign = 'start';\n var _position = 50;\n var _positionAlign = 'middle';\n var _size = 50;\n var _align = 'middle';\n Object.defineProperty(cue, 'id', extend({}, baseObj, {\n get: function get() {\n return _id;\n },\n set: function set(value) {\n _id = '' + value;\n }\n }));\n Object.defineProperty(cue, 'pauseOnExit', extend({}, baseObj, {\n get: function get() {\n return _pauseOnExit;\n },\n set: function set(value) {\n _pauseOnExit = !!value;\n }\n }));\n Object.defineProperty(cue, 'startTime', extend({}, baseObj, {\n get: function get() {\n return _startTime;\n },\n set: function set(value) {\n if (typeof value !== 'number') {\n throw new TypeError('Start time must be set to a number.');\n }\n\n _startTime = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'endTime', extend({}, baseObj, {\n get: function get() {\n return _endTime;\n },\n set: function set(value) {\n if (typeof value !== 'number') {\n throw new TypeError('End time must be set to a number.');\n }\n\n _endTime = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'text', extend({}, baseObj, {\n get: function get() {\n return _text;\n },\n set: function set(value) {\n _text = '' + value;\n this.hasBeenReset = true;\n }\n })); // todo: implement VTTRegion polyfill?\n\n Object.defineProperty(cue, 'region', extend({}, baseObj, {\n get: function get() {\n return _region;\n },\n set: function set(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'vertical', extend({}, baseObj, {\n get: function get() {\n return _vertical;\n },\n set: function set(value) {\n var setting = findDirectionSetting(value); // Have to check for false because the setting an be an empty string.\n\n if (setting === false) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n\n _vertical = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'snapToLines', extend({}, baseObj, {\n get: function get() {\n return _snapToLines;\n },\n set: function set(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'line', extend({}, baseObj, {\n get: function get() {\n return _line;\n },\n set: function set(value) {\n if (typeof value !== 'number' && value !== 'auto') {\n throw new SyntaxError('An invalid number or illegal string was specified.');\n }\n\n _line = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'lineAlign', extend({}, baseObj, {\n get: function get() {\n return _lineAlign;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'position', extend({}, baseObj, {\n get: function get() {\n return _position;\n },\n set: function set(value) {\n if (value < 0 || value > 100) {\n throw new Error('Position must be between 0 and 100.');\n }\n\n _position = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'positionAlign', extend({}, baseObj, {\n get: function get() {\n return _positionAlign;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'size', extend({}, baseObj, {\n get: function get() {\n return _size;\n },\n set: function set(value) {\n if (value < 0 || value > 100) {\n throw new Error('Size must be between 0 and 100.');\n }\n\n _size = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'align', extend({}, baseObj, {\n get: function get() {\n return _align;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n\n _align = setting;\n this.hasBeenReset = true;\n }\n }));\n /**\n * Other <track> spec defined properties\n */\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n\n cue.displayState = undefined;\n }\n /**\n * VTTCue methods\n */\n\n\n VTTCue.prototype.getCueAsHTML = function () {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n var WebVTT = self.WebVTT;\n return WebVTT.convertCueToDOMTree(self, this.text);\n }; // this is a polyfill hack\n\n\n return VTTCue;\n})());\n\n/***/ }),\n\n/***/ \"./src/utils/vttparser.ts\":\n/*!********************************!*\\\n !*** ./src/utils/vttparser.ts ***!\n \\********************************/\n/*! exports provided: parseTimeStamp, fixLineBreaks, VTTParser */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseTimeStamp\", function() { return parseTimeStamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fixLineBreaks\", function() { return fixLineBreaks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VTTParser\", function() { return VTTParser; });\n/* harmony import */ var _vttcue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vttcue */ \"./src/utils/vttcue.ts\");\n/*\n * Source: https://github.com/mozilla/vtt.js/blob/master/dist/vtt.js\n */\n\n\nvar StringDecoder = /*#__PURE__*/function () {\n function StringDecoder() {}\n\n var _proto = StringDecoder.prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.decode = function decode(data, options) {\n if (!data) {\n return '';\n }\n\n if (typeof data !== 'string') {\n throw new Error('Error - expected string data.');\n }\n\n return decodeURIComponent(encodeURIComponent(data));\n };\n\n return StringDecoder;\n}(); // Try to parse input as a time stamp.\n\n\nfunction parseTimeStamp(input) {\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + parseFloat(f || 0);\n }\n\n var m = input.match(/^(?:(\\d+):)?(\\d{2}):(\\d{2})(\\.\\d+)?/);\n\n if (!m) {\n return null;\n }\n\n if (parseFloat(m[2]) > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[2], m[3], 0, m[4]);\n } // Timestamp takes the form of [hours (optional)]:[minutes]:[seconds].[milliseconds]\n\n\n return computeSeconds(m[1], m[2], m[3], m[4]);\n} // A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\n\nvar Settings = /*#__PURE__*/function () {\n function Settings() {\n this.values = Object.create(null);\n }\n\n var _proto2 = Settings.prototype;\n\n // Only accept the first assignment to any key.\n _proto2.set = function set(k, v) {\n if (!this.get(k) && v !== '') {\n this.values[k] = v;\n }\n } // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n ;\n\n _proto2.get = function get(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n\n return this.has(k) ? this.values[k] : dflt;\n } // Check whether we have a value for a key.\n ;\n\n _proto2.has = function has(k) {\n return k in this.values;\n } // Accept a setting if its one of the given alternatives.\n ;\n\n _proto2.alt = function alt(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n } // Accept a setting if its a valid (signed) integer.\n ;\n\n _proto2.integer = function integer(k, v) {\n if (/^-?\\d+$/.test(v)) {\n // integer\n this.set(k, parseInt(v, 10));\n }\n } // Accept a setting if its a valid percentage.\n ;\n\n _proto2.percent = function percent(k, v) {\n if (/^([\\d]{1,3})(\\.[\\d]*)?%$/.test(v)) {\n var percent = parseFloat(v);\n\n if (percent >= 0 && percent <= 100) {\n this.set(k, percent);\n return true;\n }\n }\n\n return false;\n };\n\n return Settings;\n}(); // Helper function to parse input into groups separated by 'groupDelim', and\n// interpret each group as a key/value pair separated by 'keyValueDelim'.\n\n\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n\n for (var i in groups) {\n if (typeof groups[i] !== 'string') {\n continue;\n }\n\n var kv = groups[i].split(keyValueDelim);\n\n if (kv.length !== 2) {\n continue;\n }\n\n var _k = kv[0];\n var _v = kv[1];\n callback(_k, _v);\n }\n}\n\nvar defaults = new _vttcue__WEBPACK_IMPORTED_MODULE_0__[\"default\"](0, 0, ''); // 'middle' was changed to 'center' in the spec: https://github.com/w3c/webvtt/pull/244\n// Safari doesn't yet support this change, but FF and Chrome do.\n\nvar center = defaults.align === 'middle' ? 'middle' : 'center';\n\nfunction parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n var oInput = input; // 4.1 WebVTT timestamp\n\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n\n if (ts === null) {\n throw new Error('Malformed timestamp: ' + oInput);\n } // Remove time stamp from input.\n\n\n input = input.replace(/^[^\\sa-zA-Z-]+/, '');\n return ts;\n } // 4.4.2 WebVTT cue settings\n\n\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n parseOptions(input, function (k, v) {\n var vals;\n\n switch (k) {\n case 'region':\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n\n break;\n\n case 'vertical':\n settings.alt(k, v, ['rl', 'lr']);\n break;\n\n case 'line':\n vals = v.split(',');\n settings.integer(k, vals[0]);\n\n if (settings.percent(k, vals[0])) {\n settings.set('snapToLines', false);\n }\n\n settings.alt(k, vals[0], ['auto']);\n\n if (vals.length === 2) {\n settings.alt('lineAlign', vals[1], ['start', center, 'end']);\n }\n\n break;\n\n case 'position':\n vals = v.split(',');\n settings.percent(k, vals[0]);\n\n if (vals.length === 2) {\n settings.alt('positionAlign', vals[1], ['start', center, 'end', 'line-left', 'line-right', 'auto']);\n }\n\n break;\n\n case 'size':\n settings.percent(k, v);\n break;\n\n case 'align':\n settings.alt(k, v, ['start', center, 'end', 'left', 'right']);\n break;\n }\n }, /:/, /\\s/); // Apply default values for any missing fields.\n\n cue.region = settings.get('region', null);\n cue.vertical = settings.get('vertical', '');\n var line = settings.get('line', 'auto');\n\n if (line === 'auto' && defaults.line === -1) {\n // set numeric line number for Safari\n line = -1;\n }\n\n cue.line = line;\n cue.lineAlign = settings.get('lineAlign', 'start');\n cue.snapToLines = settings.get('snapToLines', true);\n cue.size = settings.get('size', 100);\n cue.align = settings.get('align', center);\n var position = settings.get('position', 'auto');\n\n if (position === 'auto' && defaults.position === 50) {\n // set numeric position for Safari\n position = cue.align === 'start' || cue.align === 'left' ? 0 : cue.align === 'end' || cue.align === 'right' ? 100 : 50;\n }\n\n cue.position = position;\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, '');\n } // 4.1 WebVTT cue timings.\n\n\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n\n skipWhitespace();\n\n if (input.slice(0, 3) !== '-->') {\n // (3) next characters must match '-->'\n throw new Error(\"Malformed time stamp (time stamps must be separated by '-->'): \" + oInput);\n }\n\n input = input.slice(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n // 4.1 WebVTT cue settings list.\n\n skipWhitespace();\n consumeCueSettings(input, cue);\n}\n\nfunction fixLineBreaks(input) {\n return input.replace(/<br(?: \\/)?>/gi, '\\n');\n}\nvar VTTParser = /*#__PURE__*/function () {\n function VTTParser() {\n this.state = 'INITIAL';\n this.buffer = '';\n this.decoder = new StringDecoder();\n this.regionList = [];\n this.cue = null;\n this.oncue = void 0;\n this.onparsingerror = void 0;\n this.onflush = void 0;\n }\n\n var _proto3 = VTTParser.prototype;\n\n _proto3.parse = function parse(data) {\n var _this = this; // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n\n\n if (data) {\n // Try to decode the data that we received.\n _this.buffer += _this.decoder.decode(data, {\n stream: true\n });\n }\n\n function collectNextLine() {\n var buffer = _this.buffer;\n var pos = 0;\n buffer = fixLineBreaks(buffer);\n\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n\n var line = buffer.slice(0, pos); // Advance the buffer early in case we fail below.\n\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n\n _this.buffer = buffer.slice(pos);\n return line;\n } // 3.2 WebVTT metadata header syntax\n\n\n function parseHeader(input) {\n parseOptions(input, function (k, v) {// switch (k) {\n // case 'region':\n // 3.3 WebVTT region metadata header syntax\n // console.log('parse region', v);\n // parseRegion(v);\n // break;\n // }\n }, /:/);\n } // 5.1 WebVTT file parsing.\n\n\n try {\n var line = '';\n\n if (_this.state === 'INITIAL') {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(_this.buffer)) {\n return this;\n }\n\n line = collectNextLine(); // strip of UTF-8 BOM if any\n // https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8\n\n var m = line.match(/^()?WEBVTT([ \\t].*)?$/);\n\n if (!m || !m[0]) {\n throw new Error('Malformed WebVTT signature.');\n }\n\n _this.state = 'HEADER';\n }\n\n var alreadyCollectedLine = false;\n\n while (_this.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(_this.buffer)) {\n return this;\n }\n\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n\n switch (_this.state) {\n case 'HEADER':\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n _this.state = 'ID';\n }\n\n continue;\n\n case 'NOTE':\n // Ignore NOTE blocks.\n if (!line) {\n _this.state = 'ID';\n }\n\n continue;\n\n case 'ID':\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n _this.state = 'NOTE';\n break;\n } // 19-29 - Allow any number of line terminators, then initialize new cue values.\n\n\n if (!line) {\n continue;\n }\n\n _this.cue = new _vttcue__WEBPACK_IMPORTED_MODULE_0__[\"default\"](0, 0, '');\n _this.state = 'CUE'; // 30-39 - Check if self line contains an optional identifier or timing data.\n\n if (line.indexOf('-->') === -1) {\n _this.cue.id = line;\n continue;\n }\n\n // Process line as start of a cue.\n\n /* falls through */\n\n case 'CUE':\n // 40 - Collect cue timings and settings.\n if (!_this.cue) {\n _this.state = 'BADCUE';\n continue;\n }\n\n try {\n parseCue(line, _this.cue, _this.regionList);\n } catch (e) {\n // In case of an error ignore rest of the cue.\n _this.cue = null;\n _this.state = 'BADCUE';\n continue;\n }\n\n _this.state = 'CUETEXT';\n continue;\n\n case 'CUETEXT':\n {\n var hasSubstring = line.indexOf('-->') !== -1; // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n if (_this.oncue && _this.cue) {\n _this.oncue(_this.cue);\n }\n\n _this.cue = null;\n _this.state = 'ID';\n continue;\n }\n\n if (_this.cue === null) {\n continue;\n }\n\n if (_this.cue.text) {\n _this.cue.text += '\\n';\n }\n\n _this.cue.text += line;\n }\n continue;\n\n case 'BADCUE':\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n _this.state = 'ID';\n }\n\n }\n }\n } catch (e) {\n // If we are currently parsing a cue, report what we have.\n if (_this.state === 'CUETEXT' && _this.cue && _this.oncue) {\n _this.oncue(_this.cue);\n }\n\n _this.cue = null; // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n\n _this.state = _this.state === 'INITIAL' ? 'BADWEBVTT' : 'BADCUE';\n }\n\n return this;\n };\n\n _proto3.flush = function flush() {\n var _this = this;\n\n try {\n // Finish decoding the stream.\n // _this.buffer += _this.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (_this.cue || _this.state === 'HEADER') {\n _this.buffer += '\\n\\n';\n\n _this.parse();\n } // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n\n\n if (_this.state === 'INITIAL' || _this.state === 'BADWEBVTT') {\n throw new Error('Malformed WebVTT signature.');\n }\n } catch (e) {\n if (_this.onparsingerror) {\n _this.onparsingerror(e);\n }\n }\n\n if (_this.onflush) {\n _this.onflush();\n }\n\n return this;\n };\n\n return VTTParser;\n}();\n\n/***/ }),\n\n/***/ \"./src/utils/webvtt-parser.ts\":\n/*!************************************!*\\\n !*** ./src/utils/webvtt-parser.ts ***!\n \\************************************/\n/*! exports provided: generateCueId, parseWebVTT */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateCueId\", function() { return generateCueId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseWebVTT\", function() { return parseWebVTT; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _vttparser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vttparser */ \"./src/utils/vttparser.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\n/* harmony import */ var _timescale_conversion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./timescale-conversion */ \"./src/utils/timescale-conversion.ts\");\n/* harmony import */ var _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../remux/mp4-remuxer */ \"./src/remux/mp4-remuxer.ts\");\n\n\n\n\n\n\n\n\nvar LINEBREAKS = /\\r\\n|\\n\\r|\\n|\\r/g; // String.prototype.startsWith is not supported in IE11\n\nvar startsWith = function startsWith(inputString, searchString, position) {\n if (position === void 0) {\n position = 0;\n }\n\n return inputString.slice(position, position + searchString.length) === searchString;\n};\n\nvar cueString2millis = function cueString2millis(timeString) {\n var ts = parseInt(timeString.slice(-3));\n var secs = parseInt(timeString.slice(-6, -4));\n var mins = parseInt(timeString.slice(-9, -7));\n var hours = timeString.length > 9 ? parseInt(timeString.substring(0, timeString.indexOf(':'))) : 0;\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(ts) || !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(secs) || !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(mins) || !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(hours)) {\n throw Error(\"Malformed X-TIMESTAMP-MAP: Local:\" + timeString);\n }\n\n ts += 1000 * secs;\n ts += 60 * 1000 * mins;\n ts += 60 * 60 * 1000 * hours;\n return ts;\n}; // From https://github.com/darkskyapp/string-hash\n\n\nvar hash = function hash(text) {\n var hash = 5381;\n var i = text.length;\n\n while (i) {\n hash = hash * 33 ^ text.charCodeAt(--i);\n }\n\n return (hash >>> 0).toString();\n}; // Create a unique hash id for a cue based on start/end times and text.\n// This helps timeline-controller to avoid showing repeated captions.\n\n\nfunction generateCueId(startTime, endTime, text) {\n return hash(startTime.toString()) + hash(endTime.toString()) + hash(text);\n}\n\nvar calculateOffset = function calculateOffset(vttCCs, cc, presentationTime) {\n var currCC = vttCCs[cc];\n var prevCC = vttCCs[currCC.prevCC]; // This is the first discontinuity or cues have been processed since the last discontinuity\n // Offset = current discontinuity time\n\n if (!prevCC || !prevCC.new && currCC.new) {\n vttCCs.ccOffset = vttCCs.presentationOffset = currCC.start;\n currCC.new = false;\n return;\n } // There have been discontinuities since cues were last parsed.\n // Offset = time elapsed\n\n\n while ((_prevCC = prevCC) !== null && _prevCC !== void 0 && _prevCC.new) {\n var _prevCC;\n\n vttCCs.ccOffset += currCC.start - prevCC.start;\n currCC.new = false;\n currCC = prevCC;\n prevCC = vttCCs[currCC.prevCC];\n }\n\n vttCCs.presentationOffset = presentationTime;\n};\n\nfunction parseWebVTT(vttByteArray, initPTS, timescale, vttCCs, cc, timeOffset, callBack, errorCallBack) {\n var parser = new _vttparser__WEBPACK_IMPORTED_MODULE_1__[\"VTTParser\"](); // Convert byteArray into string, replacing any somewhat exotic linefeeds with \"\\n\", then split on that character.\n // Uint8Array.prototype.reduce is not implemented in IE11\n\n var vttLines = Object(_demux_id3__WEBPACK_IMPORTED_MODULE_2__[\"utf8ArrayToStr\"])(new Uint8Array(vttByteArray)).trim().replace(LINEBREAKS, '\\n').split('\\n');\n var cues = [];\n var initPTS90Hz = Object(_timescale_conversion__WEBPACK_IMPORTED_MODULE_3__[\"toMpegTsClockFromTimescale\"])(initPTS, timescale);\n var cueTime = '00:00.000';\n var timestampMapMPEGTS = 0;\n var timestampMapLOCAL = 0;\n var parsingError;\n var inHeader = true;\n\n parser.oncue = function (cue) {\n // Adjust cue timing; clamp cues to start no earlier than - and drop cues that don't end after - 0 on timeline.\n var currCC = vttCCs[cc];\n var cueOffset = vttCCs.ccOffset; // Calculate subtitle PTS offset\n\n var webVttMpegTsMapOffset = (timestampMapMPEGTS - initPTS90Hz) / 90000; // Update offsets for new discontinuities\n\n if (currCC !== null && currCC !== void 0 && currCC.new) {\n if (timestampMapLOCAL !== undefined) {\n // When local time is provided, offset = discontinuity start time - local time\n cueOffset = vttCCs.ccOffset = currCC.start;\n } else {\n calculateOffset(vttCCs, cc, webVttMpegTsMapOffset);\n }\n }\n\n if (webVttMpegTsMapOffset) {\n // If we have MPEGTS, offset = presentation time + discontinuity offset\n cueOffset = webVttMpegTsMapOffset - vttCCs.presentationOffset;\n }\n\n var duration = cue.endTime - cue.startTime;\n var startTime = Object(_remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_4__[\"normalizePts\"])((cue.startTime + cueOffset - timestampMapLOCAL) * 90000, timeOffset * 90000) / 90000;\n cue.startTime = Math.max(startTime, 0);\n cue.endTime = Math.max(startTime + duration, 0); //trim trailing webvtt block whitespaces\n\n var text = cue.text.trim(); // Fix encoding of special characters\n\n cue.text = decodeURIComponent(encodeURIComponent(text)); // If the cue was not assigned an id from the VTT file (line above the content), create one.\n\n if (!cue.id) {\n cue.id = generateCueId(cue.startTime, cue.endTime, text);\n }\n\n if (cue.endTime > 0) {\n cues.push(cue);\n }\n };\n\n parser.onparsingerror = function (error) {\n parsingError = error;\n };\n\n parser.onflush = function () {\n if (parsingError) {\n errorCallBack(parsingError);\n return;\n }\n\n callBack(cues);\n }; // Go through contents line by line.\n\n\n vttLines.forEach(function (line) {\n if (inHeader) {\n // Look for X-TIMESTAMP-MAP in header.\n if (startsWith(line, 'X-TIMESTAMP-MAP=')) {\n // Once found, no more are allowed anyway, so stop searching.\n inHeader = false; // Extract LOCAL and MPEGTS.\n\n line.slice(16).split(',').forEach(function (timestamp) {\n if (startsWith(timestamp, 'LOCAL:')) {\n cueTime = timestamp.slice(6);\n } else if (startsWith(timestamp, 'MPEGTS:')) {\n timestampMapMPEGTS = parseInt(timestamp.slice(7));\n }\n });\n\n try {\n // Convert cue time to seconds\n timestampMapLOCAL = cueString2millis(cueTime) / 1000;\n } catch (error) {\n parsingError = error;\n } // Return without parsing X-TIMESTAMP-MAP line.\n\n\n return;\n } else if (line === '') {\n inHeader = false;\n }\n } // Parse line by default.\n\n\n parser.parse(line + '\\n');\n });\n parser.flush();\n}\n\n/***/ }),\n\n/***/ \"./src/utils/xhr-loader.ts\":\n/*!*********************************!*\\\n !*** ./src/utils/xhr-loader.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _loader_load_stats__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../loader/load-stats */ \"./src/loader/load-stats.ts\");\n\n\nvar AGE_HEADER_LINE_REGEX = /^age:\\s*[\\d.]+\\s*$/m;\n\nvar XhrLoader = /*#__PURE__*/function () {\n function XhrLoader(config\n /* HlsConfig */\n ) {\n this.xhrSetup = void 0;\n this.requestTimeout = void 0;\n this.retryTimeout = void 0;\n this.retryDelay = void 0;\n this.config = null;\n this.callbacks = null;\n this.context = void 0;\n this.loader = null;\n this.stats = void 0;\n this.xhrSetup = config ? config.xhrSetup : null;\n this.stats = new _loader_load_stats__WEBPACK_IMPORTED_MODULE_1__[\"LoadStats\"]();\n this.retryDelay = 0;\n }\n\n var _proto = XhrLoader.prototype;\n\n _proto.destroy = function destroy() {\n this.callbacks = null;\n this.abortInternal();\n this.loader = null;\n this.config = null;\n };\n\n _proto.abortInternal = function abortInternal() {\n var loader = this.loader;\n self.clearTimeout(this.requestTimeout);\n self.clearTimeout(this.retryTimeout);\n\n if (loader) {\n loader.onreadystatechange = null;\n loader.onprogress = null;\n\n if (loader.readyState !== 4) {\n this.stats.aborted = true;\n loader.abort();\n }\n }\n };\n\n _proto.abort = function abort() {\n var _this$callbacks;\n\n this.abortInternal();\n\n if ((_this$callbacks = this.callbacks) !== null && _this$callbacks !== void 0 && _this$callbacks.onAbort) {\n this.callbacks.onAbort(this.stats, this.context, this.loader);\n }\n };\n\n _proto.load = function load(context, config, callbacks) {\n if (this.stats.loading.start) {\n throw new Error('Loader can only be used once.');\n }\n\n this.stats.loading.start = self.performance.now();\n this.context = context;\n this.config = config;\n this.callbacks = callbacks;\n this.retryDelay = config.retryDelay;\n this.loadInternal();\n };\n\n _proto.loadInternal = function loadInternal() {\n var config = this.config,\n context = this.context;\n\n if (!config) {\n return;\n }\n\n var xhr = this.loader = new self.XMLHttpRequest();\n var stats = this.stats;\n stats.loading.first = 0;\n stats.loaded = 0;\n var xhrSetup = this.xhrSetup;\n\n try {\n if (xhrSetup) {\n try {\n xhrSetup(xhr, context.url);\n } catch (e) {\n // fix xhrSetup: (xhr, url) => {xhr.setRequestHeader(\"Content-Language\", \"test\");}\n // not working, as xhr.setRequestHeader expects xhr.readyState === OPEN\n xhr.open('GET', context.url, true);\n xhrSetup(xhr, context.url);\n }\n }\n\n if (!xhr.readyState) {\n xhr.open('GET', context.url, true);\n }\n\n var headers = this.context.headers;\n\n if (headers) {\n for (var header in headers) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n } catch (e) {\n // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS\n this.callbacks.onError({\n code: xhr.status,\n text: e.message\n }, context, xhr);\n return;\n }\n\n if (context.rangeEnd) {\n xhr.setRequestHeader('Range', 'bytes=' + context.rangeStart + '-' + (context.rangeEnd - 1));\n }\n\n xhr.onreadystatechange = this.readystatechange.bind(this);\n xhr.onprogress = this.loadprogress.bind(this);\n xhr.responseType = context.responseType; // setup timeout before we perform request\n\n self.clearTimeout(this.requestTimeout);\n this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.timeout);\n xhr.send();\n };\n\n _proto.readystatechange = function readystatechange() {\n var context = this.context,\n xhr = this.loader,\n stats = this.stats;\n\n if (!context || !xhr) {\n return;\n }\n\n var readyState = xhr.readyState;\n var config = this.config; // don't proceed if xhr has been aborted\n\n if (stats.aborted) {\n return;\n } // >= HEADERS_RECEIVED\n\n\n if (readyState >= 2) {\n // clear xhr timeout and rearm it if readyState less than 4\n self.clearTimeout(this.requestTimeout);\n\n if (stats.loading.first === 0) {\n stats.loading.first = Math.max(self.performance.now(), stats.loading.start);\n }\n\n if (readyState === 4) {\n xhr.onreadystatechange = null;\n xhr.onprogress = null;\n var status = xhr.status; // http status between 200 to 299 are all successful\n\n if (status >= 200 && status < 300) {\n stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n var data;\n var len;\n\n if (context.responseType === 'arraybuffer') {\n data = xhr.response;\n len = data.byteLength;\n } else {\n data = xhr.responseText;\n len = data.length;\n }\n\n stats.loaded = stats.total = len;\n\n if (!this.callbacks) {\n return;\n }\n\n var onProgress = this.callbacks.onProgress;\n\n if (onProgress) {\n onProgress(stats, context, data, xhr);\n }\n\n if (!this.callbacks) {\n return;\n }\n\n var response = {\n url: xhr.responseURL,\n data: data\n };\n this.callbacks.onSuccess(response, stats, context, xhr);\n } else {\n // if max nb of retries reached or if http status between 400 and 499 (such error cannot be recovered, retrying is useless), return error\n if (stats.retry >= config.maxRetry || status >= 400 && status < 499) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].error(status + \" while loading \" + context.url);\n this.callbacks.onError({\n code: status,\n text: xhr.statusText\n }, context, xhr);\n } else {\n // retry\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].warn(status + \" while loading \" + context.url + \", retrying in \" + this.retryDelay + \"...\"); // abort and reset internal state\n\n this.abortInternal();\n this.loader = null; // schedule retry\n\n self.clearTimeout(this.retryTimeout);\n this.retryTimeout = self.setTimeout(this.loadInternal.bind(this), this.retryDelay); // set exponential backoff\n\n this.retryDelay = Math.min(2 * this.retryDelay, config.maxRetryDelay);\n stats.retry++;\n }\n }\n } else {\n // readyState >= 2 AND readyState !==4 (readyState = HEADERS_RECEIVED || LOADING) rearm timeout as xhr not finished yet\n self.clearTimeout(this.requestTimeout);\n this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.timeout);\n }\n }\n };\n\n _proto.loadtimeout = function loadtimeout() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].warn(\"timeout while loading \" + this.context.url);\n var callbacks = this.callbacks;\n\n if (callbacks) {\n this.abortInternal();\n callbacks.onTimeout(this.stats, this.context, this.loader);\n }\n };\n\n _proto.loadprogress = function loadprogress(event) {\n var stats = this.stats;\n stats.loaded = event.loaded;\n\n if (event.lengthComputable) {\n stats.total = event.total;\n }\n };\n\n _proto.getCacheAge = function getCacheAge() {\n var result = null;\n\n if (this.loader && AGE_HEADER_LINE_REGEX.test(this.loader.getAllResponseHeaders())) {\n var ageHeader = this.loader.getResponseHeader('age');\n result = ageHeader ? parseFloat(ageHeader) : null;\n }\n\n return result;\n };\n\n return XhrLoader;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (XhrLoader);\n\n/***/ })\n\n/******/ })[\"default\"];\n});\n//# sourceMappingURL=hls.js.map","/*!\n * html-attributes\n * https://github.com/alexmingoia/html-attributes\n */\n\n'use strict';\n\n/**\n * @module html-attributes\n */\n\nmodule.exports = {\n \"abbr\": \"abbr\",\n \"accept\": \"accept\",\n \"acceptCharset\": \"accept-charset\",\n \"accessKey\": \"accesskey\",\n \"action\": \"action\",\n \"allowFullScreen\": \"allowfullscreen\",\n \"allowTransparency\": \"allowtransparency\",\n \"alt\": \"alt\",\n \"async\": \"async\",\n \"autoComplete\": \"autocomplete\",\n \"autoFocus\": \"autofocus\",\n \"autoPlay\": \"autoplay\",\n \"cellPadding\": \"cellpadding\",\n \"cellSpacing\": \"cellspacing\",\n \"challenge\": \"challenge\",\n \"charset\": \"charset\",\n \"checked\": \"checked\",\n \"cite\": \"cite\",\n \"class\": \"class\",\n \"className\": \"class\",\n \"cols\": \"cols\",\n \"colSpan\": \"colspan\",\n \"command\": \"command\",\n \"content\": \"content\",\n \"contentEditable\": \"contenteditable\",\n \"contextMenu\": \"contextmenu\",\n \"controls\": \"controls\",\n \"coords\": \"coords\",\n \"crossOrigin\": \"crossorigin\",\n \"data\": \"data\",\n \"dateTime\": \"datetime\",\n \"default\": \"default\",\n \"defer\": \"defer\",\n \"dir\": \"dir\",\n \"disabled\": \"disabled\",\n \"download\": \"download\",\n \"draggable\": \"draggable\",\n \"dropzone\": \"dropzone\",\n \"encType\": \"enctype\",\n \"for\": \"for\",\n \"form\": \"form\",\n \"formAction\": \"formaction\",\n \"formEncType\": \"formenctype\",\n \"formMethod\": \"formmethod\",\n \"formNoValidate\": \"formnovalidate\",\n \"formTarget\": \"formtarget\",\n \"frameBorder\": \"frameBorder\",\n \"headers\": \"headers\",\n \"height\": \"height\",\n \"hidden\": \"hidden\",\n \"high\": \"high\",\n \"href\": \"href\",\n \"hrefLang\": \"hreflang\",\n \"htmlFor\": \"for\",\n \"httpEquiv\": \"http-equiv\",\n \"icon\": \"icon\",\n \"id\": \"id\",\n \"inputMode\": \"inputmode\",\n \"isMap\": \"ismap\",\n \"itemId\": \"itemid\",\n \"itemProp\": \"itemprop\",\n \"itemRef\": \"itemref\",\n \"itemScope\": \"itemscope\",\n \"itemType\": \"itemtype\",\n \"kind\": \"kind\",\n \"label\": \"label\",\n \"lang\": \"lang\",\n \"list\": \"list\",\n \"loop\": \"loop\",\n \"manifest\": \"manifest\",\n \"max\": \"max\",\n \"maxLength\": \"maxlength\",\n \"media\": \"media\",\n \"mediaGroup\": \"mediagroup\",\n \"method\": \"method\",\n \"min\": \"min\",\n \"minLength\": \"minlength\",\n \"multiple\": \"multiple\",\n \"muted\": \"muted\",\n \"name\": \"name\",\n \"noValidate\": \"novalidate\",\n \"open\": \"open\",\n \"optimum\": \"optimum\",\n \"pattern\": \"pattern\",\n \"ping\": \"ping\",\n \"placeholder\": \"placeholder\",\n \"poster\": \"poster\",\n \"preload\": \"preload\",\n \"radioGroup\": \"radiogroup\",\n \"readOnly\": \"readonly\",\n \"rel\": \"rel\",\n \"required\": \"required\",\n \"role\": \"role\",\n \"rows\": \"rows\",\n \"rowSpan\": \"rowspan\",\n \"sandbox\": \"sandbox\",\n \"scope\": \"scope\",\n \"scoped\": \"scoped\",\n \"scrolling\": \"scrolling\",\n \"seamless\": \"seamless\",\n \"selected\": \"selected\",\n \"shape\": \"shape\",\n \"size\": \"size\",\n \"sizes\": \"sizes\",\n \"sortable\": \"sortable\",\n \"span\": \"span\",\n \"spellCheck\": \"spellcheck\",\n \"src\": \"src\",\n \"srcDoc\": \"srcdoc\",\n \"srcSet\": \"srcset\",\n \"start\": \"start\",\n \"step\": \"step\",\n \"style\": \"style\",\n \"tabIndex\": \"tabindex\",\n \"target\": \"target\",\n \"title\": \"title\",\n \"translate\": \"translate\",\n \"type\": \"type\",\n \"typeMustMatch\": \"typemustmatch\",\n \"useMap\": \"usemap\",\n \"value\": \"value\",\n \"width\": \"width\",\n \"wmode\": \"wmode\",\n \"wrap\": \"wrap\"\n};\n","import e from\"void-elements\";var t=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function n(n){var r={type:\"tag\",name:\"\",voidElement:!1,attrs:{},children:[]},i=n.match(/<\\/?([^\\s]+?)[/\\s>]/);if(i&&(r.name=i[1],(e[i[1]]||\"/\"===n.charAt(n.length-2))&&(r.voidElement=!0),r.name.startsWith(\"!--\"))){var s=n.indexOf(\"--\\x3e\");return{type:\"comment\",comment:-1!==s?n.slice(4,s):\"\"}}for(var a=new RegExp(t),c=null;null!==(c=a.exec(n));)if(c[0].trim())if(c[1]){var o=c[1].trim(),l=[o,\"\"];o.indexOf(\"=\")>-1&&(l=o.split(\"=\")),r.attrs[l[0]]=l[1],a.lastIndex--}else c[2]&&(r.attrs[c[2]]=c[3].trim().substring(1,c[3].length-1));return r}var r=/<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g,i=/^\\s*$/,s=Object.create(null);function a(e,t){switch(t.type){case\"text\":return e+t.content;case\"tag\":return e+=\"<\"+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+'=\"'+e[n]+'\"');return t.length?\" \"+t.join(\" \"):\"\"}(t.attrs):\"\")+(t.voidElement?\"/>\":\">\"),t.voidElement?e:e+t.children.reduce(a,\"\")+\"</\"+t.name+\">\";case\"comment\":return e+\"\\x3c!--\"+t.comment+\"--\\x3e\"}}var c={parse:function(e,t){t||(t={}),t.components||(t.components=s);var a,c=[],o=[],l=-1,m=!1;if(0!==e.indexOf(\"<\")){var u=e.indexOf(\"<\");c.push({type:\"text\",content:-1===u?e:e.substring(0,u)})}return e.replace(r,function(r,s){if(m){if(r!==\"</\"+a.name+\">\")return;m=!1}var u,f=\"/\"!==r.charAt(1),h=r.startsWith(\"\\x3c!--\"),p=s+r.length,d=e.charAt(p);if(h){var v=n(r);return l<0?(c.push(v),c):((u=o[l]).children.push(v),c)}if(f&&(l++,\"tag\"===(a=n(r)).type&&t.components[a.name]&&(a.type=\"component\",m=!0),a.voidElement||m||!d||\"<\"===d||a.children.push({type:\"text\",content:e.slice(p,e.indexOf(\"<\",p))}),0===l&&c.push(a),(u=o[l-1])&&u.children.push(a),o[l]=a),(!f||a.voidElement)&&(l>-1&&(a.voidElement||a.name===r.slice(2,-1))&&(l--,a=-1===l?c:o[l]),!m&&\"<\"!==d&&d)){u=-1===l?c:o[l].children;var x=e.indexOf(\"<\",p),g=e.slice(p,-1===x?void 0:x);i.test(g)&&(g=\" \"),(x>-1&&l+u.length>=0||\" \"!==g)&&u.push({type:\"text\",content:g})}}),c},stringify:function(e){return e.reduce(function(e,t){return e+a(\"\",t)},\"\")}};export default c;\n//# sourceMappingURL=html-parse-stringify.module.js.map\n","'use strict';\n\nvar _typeof = require('@babel/runtime/helpers/typeof');\nvar _classCallCheck = require('@babel/runtime/helpers/classCallCheck');\nvar _createClass = require('@babel/runtime/helpers/createClass');\nvar _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');\nvar _inherits = require('@babel/runtime/helpers/inherits');\nvar _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');\nvar _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');\nvar _defineProperty = require('@babel/runtime/helpers/defineProperty');\nvar _toArray = require('@babel/runtime/helpers/toArray');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);\nvar _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);\nvar _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);\nvar _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);\nvar _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);\nvar _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);\nvar _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);\nvar _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);\nvar _toArray__default = /*#__PURE__*/_interopDefaultLegacy(_toArray);\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck__default[\"default\"](this, Logger);\n this.init(concreteLogger, options);\n }\n _createClass__default[\"default\"](Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread$6(_objectSpread$6({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }, {\n key: \"clone\",\n value: function clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n }]);\n return Logger;\n}();\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck__default[\"default\"](this, EventEmitter);\n this.observers = {};\n }\n _createClass__default[\"default\"](EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$5(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n current = current[paths[i]];\n }\n return current;\n}\nvar ResourceStore = function (_EventEmitter) {\n _inherits__default[\"default\"](ResourceStore, _EventEmitter);\n var _super = _createSuper$3(ResourceStore);\n function ResourceStore(data) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n _classCallCheck__default[\"default\"](this, ResourceStore);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized__default[\"default\"](_this));\n }\n _this.data = data || {};\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n return _this;\n }\n _createClass__default[\"default\"](ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$5(_objectSpread$5({}, pack), resources);\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$5(_objectSpread$5({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$4(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar checkedLoadedFor = {};\nvar Translator = function (_EventEmitter) {\n _inherits__default[\"default\"](Translator, _EventEmitter);\n var _super = _createSuper$2(Translator);\n function Translator(services) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck__default[\"default\"](this, Translator);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized__default[\"default\"](_this));\n }\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized__default[\"default\"](_this));\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n _createClass__default[\"default\"](Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n if (_typeof__default[\"default\"](options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n resolved.res = \"\".concat(namespace).concat(nsSeparator).concat(key);\n return resolved;\n }\n return \"\".concat(namespace).concat(nsSeparator).concat(key);\n }\n if (returnDetails) {\n resolved.res = key;\n return resolved;\n }\n return key;\n }\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$4(_objectSpread$4({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$4(_objectSpread$4({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$4(_objectSpread$4({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n _this2.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$4(_objectSpread$4({}, options), {\n interpolation: _objectSpread$4(_objectSpread$4({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n var nestBef;\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n return null;\n }\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$4({\n i18nResolved: resolved\n }, options) : options, this);\n }\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n var extracted = _this4.extractFromKey(k, options);\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = \"\".concat(_this4.options.pluralSeparator, \"zero\");\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n var possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n }]);\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck__default[\"default\"](this, LanguageUtil);\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n _createClass__default[\"default\"](LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n var cleanedLng = _this.formatLanguageCode(code);\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n var lngOnly = _this.getLanguagePartFromCode(code);\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n var addCode = function addCode(c) {\n if (!c) return;\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck__default[\"default\"](this, PluralResolver);\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n _createClass__default[\"default\"](PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck__default[\"default\"](this, Interpolator);\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n this.init(options);\n }\n _createClass__default[\"default\"](Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n var matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && options.hasOwnProperty(matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n var clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n var matchedSingleQuotes = optionsString.match(/'/g);\n var matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n clonedOptions = _objectSpread$3({}, options);\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n var doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n }]);\n return Interpolator;\n}();\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n var _opt$split = opt.split(':'),\n _opt$split2 = _toArray__default[\"default\"](_opt$split),\n key = _opt$split2[0],\n rest = _opt$split2.slice(1);\n var val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n var cache = {};\n return function invokeFormatter(val, lng, options) {\n var key = lng + JSON.stringify(options);\n var formatter = cache[key];\n if (!formatter) {\n formatter = fn(lng, options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck__default[\"default\"](this, Formatter);\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.NumberFormat(lng, options);\n return function (val) {\n return formatter.format(val);\n };\n }),\n currency: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.NumberFormat(lng, _objectSpread$2(_objectSpread$2({}, options), {}, {\n style: 'currency'\n }));\n return function (val) {\n return formatter.format(val);\n };\n }),\n datetime: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.DateTimeFormat(lng, _objectSpread$2({}, options));\n return function (val) {\n return formatter.format(val);\n };\n }),\n relativetime: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.RelativeTimeFormat(lng, _objectSpread$2({}, options));\n return function (val) {\n return formatter.format(val, options.range || 'day');\n };\n }),\n list: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.ListFormat(lng, _objectSpread$2({}, options));\n return function (val) {\n return formatter.format(val);\n };\n })\n };\n this.init(options);\n }\n _createClass__default[\"default\"](Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n }, {\n key: \"addCached\",\n value: function addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng, options) {\n var _this = this;\n var formats = _format.split(this.formatSeparator);\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n if (_this.formats[formatName]) {\n var formatted = mem;\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$2(_objectSpread$2(_objectSpread$2({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n return mem;\n }, value);\n return result;\n }\n }]);\n return Formatter;\n}();\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nvar Connector = function (_EventEmitter) {\n _inherits__default[\"default\"](Connector, _EventEmitter);\n var _super = _createSuper$1(Connector);\n function Connector(backend, store, services) {\n var _this;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n _classCallCheck__default[\"default\"](this, Connector);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized__default[\"default\"](_this));\n }\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.waitingReads = [];\n _this.maxParallelReads = options.maxParallelReads || 10;\n _this.readingCalls = 0;\n _this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n _this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n _this.state = {};\n _this.queue = [];\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n return _this;\n }\n _createClass__default[\"default\"](Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n var toLoad = {};\n var pending = {};\n var toLoadLanguages = {};\n var toLoadNamespaces = {};\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending: pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = {};\n var loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(function (ns) {\n if (loaded[l][ns] === undefined) loaded[l][ns] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng: lng,\n ns: ns,\n fcName: fcName,\n tried: tried,\n wait: wait,\n callback: callback\n });\n return;\n }\n this.readingCalls++;\n var resolver = function resolver(err, data) {\n _this3.readingCalls--;\n if (_this3.waitingReads.length > 0) {\n var next = _this3.waitingReads.shift();\n _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < _this3.maxRetries) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n var fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n var r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(function (data) {\n return resolver(null, data);\n })[\"catch\"](resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n var clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : function () {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n var opts = _objectSpread$1(_objectSpread$1({}, options), {}, {\n isUpdate: isUpdate\n });\n var fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n var r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(function (data) {\n return clb(null, data);\n })[\"catch\"](clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof__default[\"default\"](args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (_typeof__default[\"default\"](args[2]) === 'object' || _typeof__default[\"default\"](args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nvar I18n = function (_EventEmitter) {\n _inherits__default[\"default\"](I18n, _EventEmitter);\n var _super = _createSuper(I18n);\n function I18n() {\n var _this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n _classCallCheck__default[\"default\"](this, I18n);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized__default[\"default\"](_this));\n }\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized__default[\"default\"](_this));\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n return _possibleConstructorReturn__default[\"default\"](_this, _assertThisInitialized__default[\"default\"](_this));\n }\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n return _this;\n }\n _createClass__default[\"default\"](I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n var defOpts = get();\n this.options = _objectSpread(_objectSpread(_objectSpread({}, defOpts), this.options), transformOptions(options));\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread(_objectSpread({}, defOpts.interpolation), this.options.interpolation);\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n var formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n return _this2;\n };\n });\n var deferred = defer();\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n _this2.emit('initialized', _this2.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n var append = function append(lng) {\n if (!lng) return;\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n }, {\n key: \"setResolvedLanguage\",\n value: function setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (var li = 0; li < this.languages.length; li++) {\n var lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n _this4.setResolvedLanguage(l);\n };\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n _this4.translator.changeLanguage(l);\n _this4.isLanguageChangingTo = undefined;\n _this4.emit('languageChanged', l);\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector && _this4.services.languageDetector.cacheUserLanguage) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n var fixedT = function fixedT(key, opts) {\n var options;\n if (_typeof__default[\"default\"](opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread({}, opts);\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey = options.keyPrefix ? \"\".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;\n return _this5.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n var lng = this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n var deferred = defer();\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n var languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var mergedOptions = _objectSpread(_objectSpread(_objectSpread({}, this.options), options), {\n isClone: true\n });\n var clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n return I18n;\n}(EventEmitter);\n_defineProperty__default[\"default\"](I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nmodule.exports = instance;\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","module.exports = [\n {\"name\":\"Abkhaz\", \"local\":\"Аҧсуа\", \"1\":\"ab\", \"2\":\"abk\", \"2T\":\"abk\", \"2B\":\"abk\", \"3\":\"abk\"},\n {\"name\":\"Afar\", \"local\":\"Afaraf\", \"1\":\"aa\", \"2\":\"aar\", \"2T\":\"aar\", \"2B\":\"aar\", \"3\":\"aar\"},\n {\"name\":\"Afrikaans\", \"local\":\"Afrikaans\", \"1\":\"af\", \"2\":\"afr\", \"2T\":\"afr\", \"2B\":\"afr\", \"3\":\"afr\"},\n {\"name\":\"Akan\", \"local\":\"Akan\", \"1\":\"ak\", \"2\":\"aka\", \"2T\":\"aka\", \"2B\":\"aka\", \"3\":\"aka\"},\n {\"name\":\"Albanian\", \"local\":\"Shqip\", \"1\":\"sq\", \"2\":\"sqi\", \"2T\":\"sqi\", \"2B\":\"alb\", \"3\":\"sqi\"},\n {\"name\":\"Amharic\", \"local\":\"አማርኛ\", \"1\":\"am\", \"2\":\"amh\", \"2T\":\"amh\", \"2B\":\"amh\", \"3\":\"amh\"},\n {\"name\":\"Arabic\", \"local\":\"العربية\", \"1\":\"ar\", \"2\":\"ara\", \"2T\":\"ara\", \"2B\":\"ara\", \"3\":\"ara\"},\n {\"name\":\"Aragonese\", \"local\":\"Aragonés\", \"1\":\"an\", \"2\":\"arg\", \"2T\":\"arg\", \"2B\":\"arg\", \"3\":\"arg\"},\n {\"name\":\"Armenian\", \"local\":\"Հայերեն\", \"1\":\"hy\", \"2\":\"hye\", \"2T\":\"hye\", \"2B\":\"arm\", \"3\":\"hye\"},\n {\"name\":\"Assamese\", \"local\":\"অসমীয়া\", \"1\":\"as\", \"2\":\"asm\", \"2T\":\"asm\", \"2B\":\"asm\", \"3\":\"asm\"},\n {\"name\":\"Avaric\", \"local\":\"Авар\", \"1\":\"av\", \"2\":\"ava\", \"2T\":\"ava\", \"2B\":\"ava\", \"3\":\"ava\"},\n {\"name\":\"Avestan\", \"local\":\"avesta\", \"1\":\"ae\", \"2\":\"ave\", \"2T\":\"ave\", \"2B\":\"ave\", \"3\":\"ave\"},\n {\"name\":\"Aymara\", \"local\":\"Aymar\", \"1\":\"ay\", \"2\":\"aym\", \"2T\":\"aym\", \"2B\":\"aym\", \"3\":\"aym\"},\n {\"name\":\"Azerbaijani\", \"local\":\"Azərbaycanca\", \"1\":\"az\", \"2\":\"aze\", \"2T\":\"aze\", \"2B\":\"aze\", \"3\":\"aze\"},\n {\"name\":\"Bambara\", \"local\":\"Bamanankan\", \"1\":\"bm\", \"2\":\"bam\", \"2T\":\"bam\", \"2B\":\"bam\", \"3\":\"bam\"},\n {\"name\":\"Bashkir\", \"local\":\"Башҡортса\", \"1\":\"ba\", \"2\":\"bak\", \"2T\":\"bak\", \"2B\":\"bak\", \"3\":\"bak\"},\n {\"name\":\"Basque\", \"local\":\"Euskara\", \"1\":\"eu\", \"2\":\"eus\", \"2T\":\"eus\", \"2B\":\"baq\", \"3\":\"eus\"},\n {\"name\":\"Belarusian\", \"local\":\"Беларуская\", \"1\":\"be\", \"2\":\"bel\", \"2T\":\"bel\", \"2B\":\"bel\", \"3\":\"bel\"},\n {\"name\":\"Bengali\", \"local\":\"বাংলা\", \"1\":\"bn\", \"2\":\"ben\", \"2T\":\"ben\", \"2B\":\"ben\", \"3\":\"ben\"},\n {\"name\":\"Bihari\", \"local\":\"भोजपुरी\", \"1\":\"bh\", \"2\":\"bih\", \"2T\":\"bih\", \"2B\":\"bih\", \"3\":\"bih\"},\n {\"name\":\"Bislama\", \"local\":\"Bislama\", \"1\":\"bi\", \"2\":\"bis\", \"2T\":\"bis\", \"2B\":\"bis\", \"3\":\"bis\"},\n {\"name\":\"Bosnian\", \"local\":\"Bosanski\", \"1\":\"bs\", \"2\":\"bos\", \"2T\":\"bos\", \"2B\":\"bos\", \"3\":\"bos\"},\n {\"name\":\"Breton\", \"local\":\"Brezhoneg\", \"1\":\"br\", \"2\":\"bre\", \"2T\":\"bre\", \"2B\":\"bre\", \"3\":\"bre\"},\n {\"name\":\"Bulgarian\", \"local\":\"Български\", \"1\":\"bg\", \"2\":\"bul\", \"2T\":\"bul\", \"2B\":\"bul\", \"3\":\"bul\"},\n {\"name\":\"Burmese\", \"local\":\"မြန်မာဘာသာ\", \"1\":\"my\", \"2\":\"mya\", \"2T\":\"mya\", \"2B\":\"bur\", \"3\":\"mya\"},\n {\"name\":\"Catalan\", \"local\":\"Català\", \"1\":\"ca\", \"2\":\"cat\", \"2T\":\"cat\", \"2B\":\"cat\", \"3\":\"cat\"},\n {\"name\":\"Chamorro\", \"local\":\"Chamoru\", \"1\":\"ch\", \"2\":\"cha\", \"2T\":\"cha\", \"2B\":\"cha\", \"3\":\"cha\"},\n {\"name\":\"Chechen\", \"local\":\"Нохчийн\", \"1\":\"ce\", \"2\":\"che\", \"2T\":\"che\", \"2B\":\"che\", \"3\":\"che\"},\n {\"name\":\"Chichewa\", \"local\":\"Chichewa\", \"1\":\"ny\", \"2\":\"nya\", \"2T\":\"nya\", \"2B\":\"nya\", \"3\":\"nya\"},\n {\"name\":\"Chinese\", \"local\":\"中文\", \"1\":\"zh\", \"2\":\"zho\", \"2T\":\"zho\", \"2B\":\"chi\", \"3\":\"zho\"},\n {\"name\":\"Chuvash\", \"local\":\"Чӑвашла\", \"1\":\"cv\", \"2\":\"chv\", \"2T\":\"chv\", \"2B\":\"chv\", \"3\":\"chv\"},\n {\"name\":\"Cornish\", \"local\":\"Kernewek\", \"1\":\"kw\", \"2\":\"cor\", \"2T\":\"cor\", \"2B\":\"cor\", \"3\":\"cor\"},\n {\"name\":\"Corsican\", \"local\":\"Corsu\", \"1\":\"co\", \"2\":\"cos\", \"2T\":\"cos\", \"2B\":\"cos\", \"3\":\"cos\"},\n {\"name\":\"Cree\", \"local\":\"ᓀᐦᐃᔭᐍᐏᐣ\", \"1\":\"cr\", \"2\":\"cre\", \"2T\":\"cre\", \"2B\":\"cre\", \"3\":\"cre\"},\n {\"name\":\"Croatian\", \"local\":\"Hrvatski\", \"1\":\"hr\", \"2\":\"hrv\", \"2T\":\"hrv\", \"2B\":\"hrv\", \"3\":\"hrv\"},\n {\"name\":\"Czech\", \"local\":\"Čeština\", \"1\":\"cs\", \"2\":\"ces\", \"2T\":\"ces\", \"2B\":\"cze\", \"3\":\"ces\"},\n {\"name\":\"Danish\", \"local\":\"Dansk\", \"1\":\"da\", \"2\":\"dan\", \"2T\":\"dan\", \"2B\":\"dan\", \"3\":\"dan\"},\n {\"name\":\"Divehi\", \"local\":\"Divehi\", \"1\":\"dv\", \"2\":\"div\", \"2T\":\"div\", \"2B\":\"div\", \"3\":\"div\"},\n {\"name\":\"Dutch\", \"local\":\"Nederlands\", \"1\":\"nl\", \"2\":\"nld\", \"2T\":\"nld\", \"2B\":\"dut\", \"3\":\"nld\"},\n {\"name\":\"Dzongkha\", \"local\":\"རྫོང་ཁ\", \"1\":\"dz\", \"2\":\"dzo\", \"2T\":\"dzo\", \"2B\":\"dzo\", \"3\":\"dzo\"},\n {\"name\":\"English\", \"local\":\"English\", \"1\":\"en\", \"2\":\"eng\", \"2T\":\"eng\", \"2B\":\"eng\", \"3\":\"eng\"},\n {\"name\":\"Esperanto\", \"local\":\"Esperanto\", \"1\":\"eo\", \"2\":\"epo\", \"2T\":\"epo\", \"2B\":\"epo\", \"3\":\"epo\"},\n {\"name\":\"Estonian\", \"local\":\"Eesti\", \"1\":\"et\", \"2\":\"est\", \"2T\":\"est\", \"2B\":\"est\", \"3\":\"est\"},\n {\"name\":\"Ewe\", \"local\":\"Eʋegbe\", \"1\":\"ee\", \"2\":\"ewe\", \"2T\":\"ewe\", \"2B\":\"ewe\", \"3\":\"ewe\"},\n {\"name\":\"Faroese\", \"local\":\"Føroyskt\", \"1\":\"fo\", \"2\":\"fao\", \"2T\":\"fao\", \"2B\":\"fao\", \"3\":\"fao\"},\n {\"name\":\"Fijian\", \"local\":\"Na Vosa Vaka-Viti\", \"1\":\"fj\", \"2\":\"fij\", \"2T\":\"fij\", \"2B\":\"fij\", \"3\":\"fij\"},\n {\"name\":\"Finnish\", \"local\":\"Suomi\", \"1\":\"fi\", \"2\":\"fin\", \"2T\":\"fin\", \"2B\":\"fin\", \"3\":\"fin\"},\n {\"name\":\"French\", \"local\":\"Français\", \"1\":\"fr\", \"2\":\"fra\", \"2T\":\"fra\", \"2B\":\"fre\", \"3\":\"fra\"},\n {\"name\":\"Fula\", \"local\":\"Fulfulde\", \"1\":\"ff\", \"2\":\"ful\", \"2T\":\"ful\", \"2B\":\"ful\", \"3\":\"ful\"},\n {\"name\":\"Galician\", \"local\":\"Galego\", \"1\":\"gl\", \"2\":\"glg\", \"2T\":\"glg\", \"2B\":\"glg\", \"3\":\"glg\"},\n {\"name\":\"Georgian\", \"local\":\"ქართული\", \"1\":\"ka\", \"2\":\"kat\", \"2T\":\"kat\", \"2B\":\"geo\", \"3\":\"kat\"},\n {\"name\":\"German\", \"local\":\"Deutsch\", \"1\":\"de\", \"2\":\"deu\", \"2T\":\"deu\", \"2B\":\"ger\", \"3\":\"deu\"},\n {\"name\":\"Greek\", \"local\":\"Ελληνικά\", \"1\":\"el\", \"2\":\"ell\", \"2T\":\"ell\", \"2B\":\"gre\", \"3\":\"ell\"},\n {\"name\":\"Guaraní\", \"local\":\"Avañe'ẽ\", \"1\":\"gn\", \"2\":\"grn\", \"2T\":\"grn\", \"2B\":\"grn\", \"3\":\"grn\"},\n {\"name\":\"Gujarati\", \"local\":\"ગુજરાતી\", \"1\":\"gu\", \"2\":\"guj\", \"2T\":\"guj\", \"2B\":\"guj\", \"3\":\"guj\"},\n {\"name\":\"Haitian\", \"local\":\"Kreyòl Ayisyen\", \"1\":\"ht\", \"2\":\"hat\", \"2T\":\"hat\", \"2B\":\"hat\", \"3\":\"hat\"},\n {\"name\":\"Hausa\", \"local\":\"هَوُسَ\", \"1\":\"ha\", \"2\":\"hau\", \"2T\":\"hau\", \"2B\":\"hau\", \"3\":\"hau\"},\n {\"name\":\"Hebrew\", \"local\":\"עברית\", \"1\":\"he\", \"2\":\"heb\", \"2T\":\"heb\", \"2B\":\"heb\", \"3\":\"heb\"},\n {\"name\":\"Herero\", \"local\":\"Otjiherero\", \"1\":\"hz\", \"2\":\"her\", \"2T\":\"her\", \"2B\":\"her\", \"3\":\"her\"},\n {\"name\":\"Hindi\", \"local\":\"हिन्दी\", \"1\":\"hi\", \"2\":\"hin\", \"2T\":\"hin\", \"2B\":\"hin\", \"3\":\"hin\"},\n {\"name\":\"Hiri Motu\", \"local\":\"Hiri Motu\", \"1\":\"ho\", \"2\":\"hmo\", \"2T\":\"hmo\", \"2B\":\"hmo\", \"3\":\"hmo\"},\n {\"name\":\"Hungarian\", \"local\":\"Magyar\", \"1\":\"hu\", \"2\":\"hun\", \"2T\":\"hun\", \"2B\":\"hun\", \"3\":\"hun\"},\n {\"name\":\"Interlingua\", \"local\":\"Interlingua\", \"1\":\"ia\", \"2\":\"ina\", \"2T\":\"ina\", \"2B\":\"ina\", \"3\":\"ina\"},\n {\"name\":\"Indonesian\", \"local\":\"Bahasa Indonesia\", \"1\":\"id\", \"2\":\"ind\", \"2T\":\"ind\", \"2B\":\"ind\", \"3\":\"ind\"},\n {\"name\":\"Interlingue\", \"local\":\"Interlingue\", \"1\":\"ie\", \"2\":\"ile\", \"2T\":\"ile\", \"2B\":\"ile\", \"3\":\"ile\"},\n {\"name\":\"Irish\", \"local\":\"Gaeilge\", \"1\":\"ga\", \"2\":\"gle\", \"2T\":\"gle\", \"2B\":\"gle\", \"3\":\"gle\"},\n {\"name\":\"Igbo\", \"local\":\"Igbo\", \"1\":\"ig\", \"2\":\"ibo\", \"2T\":\"ibo\", \"2B\":\"ibo\", \"3\":\"ibo\"},\n {\"name\":\"Inupiaq\", \"local\":\"Iñupiak\", \"1\":\"ik\", \"2\":\"ipk\", \"2T\":\"ipk\", \"2B\":\"ipk\", \"3\":\"ipk\"},\n {\"name\":\"Ido\", \"local\":\"Ido\", \"1\":\"io\", \"2\":\"ido\", \"2T\":\"ido\", \"2B\":\"ido\", \"3\":\"ido\"},\n {\"name\":\"Icelandic\", \"local\":\"Íslenska\", \"1\":\"is\", \"2\":\"isl\", \"2T\":\"isl\", \"2B\":\"ice\", \"3\":\"isl\"},\n {\"name\":\"Italian\", \"local\":\"Italiano\", \"1\":\"it\", \"2\":\"ita\", \"2T\":\"ita\", \"2B\":\"ita\", \"3\":\"ita\"},\n {\"name\":\"Inuktitut\", \"local\":\"ᐃᓄᒃᑎᑐᑦ\", \"1\":\"iu\", \"2\":\"iku\", \"2T\":\"iku\", \"2B\":\"iku\", \"3\":\"iku\"},\n {\"name\":\"Japanese\", \"local\":\"日本語\", \"1\":\"ja\", \"2\":\"jpn\", \"2T\":\"jpn\", \"2B\":\"jpn\", \"3\":\"jpn\"},\n {\"name\":\"Javanese\", \"local\":\"Basa Jawa\", \"1\":\"jv\", \"2\":\"jav\", \"2T\":\"jav\", \"2B\":\"jav\", \"3\":\"jav\"},\n {\"name\":\"Kalaallisut\", \"local\":\"Kalaallisut\", \"1\":\"kl\", \"2\":\"kal\", \"2T\":\"kal\", \"2B\":\"kal\", \"3\":\"kal\"},\n {\"name\":\"Kannada\", \"local\":\"ಕನ್ನಡ\", \"1\":\"kn\", \"2\":\"kan\", \"2T\":\"kan\", \"2B\":\"kan\", \"3\":\"kan\"},\n {\"name\":\"Kanuri\", \"local\":\"Kanuri\", \"1\":\"kr\", \"2\":\"kau\", \"2T\":\"kau\", \"2B\":\"kau\", \"3\":\"kau\"},\n {\"name\":\"Kashmiri\", \"local\":\"كشميري\", \"1\":\"ks\", \"2\":\"kas\", \"2T\":\"kas\", \"2B\":\"kas\", \"3\":\"kas\"},\n {\"name\":\"Kazakh\", \"local\":\"Қазақша\", \"1\":\"kk\", \"2\":\"kaz\", \"2T\":\"kaz\", \"2B\":\"kaz\", \"3\":\"kaz\"},\n {\"name\":\"Khmer\", \"local\":\"ភាសាខ្មែរ\", \"1\":\"km\", \"2\":\"khm\", \"2T\":\"khm\", \"2B\":\"khm\", \"3\":\"khm\"},\n {\"name\":\"Kikuyu\", \"local\":\"Gĩkũyũ\", \"1\":\"ki\", \"2\":\"kik\", \"2T\":\"kik\", \"2B\":\"kik\", \"3\":\"kik\"},\n {\"name\":\"Kinyarwanda\", \"local\":\"Kinyarwanda\", \"1\":\"rw\", \"2\":\"kin\", \"2T\":\"kin\", \"2B\":\"kin\", \"3\":\"kin\"},\n {\"name\":\"Kyrgyz\", \"local\":\"Кыргызча\", \"1\":\"ky\", \"2\":\"kir\", \"2T\":\"kir\", \"2B\":\"kir\", \"3\":\"kir\"},\n {\"name\":\"Komi\", \"local\":\"Коми\", \"1\":\"kv\", \"2\":\"kom\", \"2T\":\"kom\", \"2B\":\"kom\", \"3\":\"kom\"},\n {\"name\":\"Kongo\", \"local\":\"Kongo\", \"1\":\"kg\", \"2\":\"kon\", \"2T\":\"kon\", \"2B\":\"kon\", \"3\":\"kon\"},\n {\"name\":\"Korean\", \"local\":\"한국어\", \"1\":\"ko\", \"2\":\"kor\", \"2T\":\"kor\", \"2B\":\"kor\", \"3\":\"kor\"},\n {\"name\":\"Kurdish\", \"local\":\"Kurdî\", \"1\":\"ku\", \"2\":\"kur\", \"2T\":\"kur\", \"2B\":\"kur\", \"3\":\"kur\"},\n {\"name\":\"Kwanyama\", \"local\":\"Kuanyama\", \"1\":\"kj\", \"2\":\"kua\", \"2T\":\"kua\", \"2B\":\"kua\", \"3\":\"kua\"},\n {\"name\":\"Latin\", \"local\":\"Latina\", \"1\":\"la\", \"2\":\"lat\", \"2T\":\"lat\", \"2B\":\"lat\", \"3\":\"lat\"},\n {\"name\":\"Luxembourgish\", \"local\":\"Lëtzebuergesch\", \"1\":\"lb\", \"2\":\"ltz\", \"2T\":\"ltz\", \"2B\":\"ltz\", \"3\":\"ltz\"},\n {\"name\":\"Ganda\", \"local\":\"Luganda\", \"1\":\"lg\", \"2\":\"lug\", \"2T\":\"lug\", \"2B\":\"lug\", \"3\":\"lug\"},\n {\"name\":\"Limburgish\", \"local\":\"Limburgs\", \"1\":\"li\", \"2\":\"lim\", \"2T\":\"lim\", \"2B\":\"lim\", \"3\":\"lim\"},\n {\"name\":\"Lingala\", \"local\":\"Lingála\", \"1\":\"ln\", \"2\":\"lin\", \"2T\":\"lin\", \"2B\":\"lin\", \"3\":\"lin\"},\n {\"name\":\"Lao\", \"local\":\"ພາສາລາວ\", \"1\":\"lo\", \"2\":\"lao\", \"2T\":\"lao\", \"2B\":\"lao\", \"3\":\"lao\"},\n {\"name\":\"Lithuanian\", \"local\":\"Lietuvių\", \"1\":\"lt\", \"2\":\"lit\", \"2T\":\"lit\", \"2B\":\"lit\", \"3\":\"lit\"},\n {\"name\":\"Luba-Katanga\", \"local\":\"Tshiluba\", \"1\":\"lu\", \"2\":\"lub\", \"2T\":\"lub\", \"2B\":\"lub\", \"3\":\"lub\"},\n {\"name\":\"Latvian\", \"local\":\"Latviešu\", \"1\":\"lv\", \"2\":\"lav\", \"2T\":\"lav\", \"2B\":\"lav\", \"3\":\"lav\"},\n {\"name\":\"Manx\", \"local\":\"Gaelg\", \"1\":\"gv\", \"2\":\"glv\", \"2T\":\"glv\", \"2B\":\"glv\", \"3\":\"glv\"},\n {\"name\":\"Macedonian\", \"local\":\"Македонски\", \"1\":\"mk\", \"2\":\"mkd\", \"2T\":\"mkd\", \"2B\":\"mac\", \"3\":\"mkd\"},\n {\"name\":\"Malagasy\", \"local\":\"Malagasy\", \"1\":\"mg\", \"2\":\"mlg\", \"2T\":\"mlg\", \"2B\":\"mlg\", \"3\":\"mlg\"},\n {\"name\":\"Malay\", \"local\":\"Bahasa Melayu\", \"1\":\"ms\", \"2\":\"msa\", \"2T\":\"msa\", \"2B\":\"may\", \"3\":\"msa\"},\n {\"name\":\"Malayalam\", \"local\":\"മലയാളം\", \"1\":\"ml\", \"2\":\"mal\", \"2T\":\"mal\", \"2B\":\"mal\", \"3\":\"mal\"},\n {\"name\":\"Maltese\", \"local\":\"Malti\", \"1\":\"mt\", \"2\":\"mlt\", \"2T\":\"mlt\", \"2B\":\"mlt\", \"3\":\"mlt\"},\n {\"name\":\"Māori\", \"local\":\"Māori\", \"1\":\"mi\", \"2\":\"mri\", \"2T\":\"mri\", \"2B\":\"mao\", \"3\":\"mri\"},\n {\"name\":\"Marathi\", \"local\":\"मराठी\", \"1\":\"mr\", \"2\":\"mar\", \"2T\":\"mar\", \"2B\":\"mar\", \"3\":\"mar\"},\n {\"name\":\"Marshallese\", \"local\":\"Kajin M̧ajeļ\", \"1\":\"mh\", \"2\":\"mah\", \"2T\":\"mah\", \"2B\":\"mah\", \"3\":\"mah\"},\n {\"name\":\"Mongolian\", \"local\":\"Монгол\", \"1\":\"mn\", \"2\":\"mon\", \"2T\":\"mon\", \"2B\":\"mon\", \"3\":\"mon\"},\n {\"name\":\"Nauru\", \"local\":\"Dorerin Naoero\", \"1\":\"na\", \"2\":\"nau\", \"2T\":\"nau\", \"2B\":\"nau\", \"3\":\"nau\"},\n {\"name\":\"Navajo\", \"local\":\"Diné Bizaad\", \"1\":\"nv\", \"2\":\"nav\", \"2T\":\"nav\", \"2B\":\"nav\", \"3\":\"nav\"},\n {\"name\":\"Northern Ndebele\", \"local\":\"isiNdebele\", \"1\":\"nd\", \"2\":\"nde\", \"2T\":\"nde\", \"2B\":\"nde\", \"3\":\"nde\"},\n {\"name\":\"Nepali\", \"local\":\"नेपाली\", \"1\":\"ne\", \"2\":\"nep\", \"2T\":\"nep\", \"2B\":\"nep\", \"3\":\"nep\"},\n {\"name\":\"Ndonga\", \"local\":\"Owambo\", \"1\":\"ng\", \"2\":\"ndo\", \"2T\":\"ndo\", \"2B\":\"ndo\", \"3\":\"ndo\"},\n {\"name\":\"Norwegian Bokmål\", \"local\":\"Norsk (Bokmål)\", \"1\":\"nb\", \"2\":\"nob\", \"2T\":\"nob\", \"2B\":\"nob\", \"3\":\"nob\"},\n {\"name\":\"Norwegian Nynorsk\", \"local\":\"Norsk (Nynorsk)\", \"1\":\"nn\", \"2\":\"nno\", \"2T\":\"nno\", \"2B\":\"nno\", \"3\":\"nno\"},\n {\"name\":\"Norwegian\", \"local\":\"Norsk\", \"1\":\"no\", \"2\":\"nor\", \"2T\":\"nor\", \"2B\":\"nor\", \"3\":\"nor\"},\n {\"name\":\"Nuosu\", \"local\":\"ꆈꌠ꒿ Nuosuhxop\", \"1\":\"ii\", \"2\":\"iii\", \"2T\":\"iii\", \"2B\":\"iii\", \"3\":\"iii\"},\n {\"name\":\"Southern Ndebele\", \"local\":\"isiNdebele\", \"1\":\"nr\", \"2\":\"nbl\", \"2T\":\"nbl\", \"2B\":\"nbl\", \"3\":\"nbl\"},\n {\"name\":\"Occitan\", \"local\":\"Occitan\", \"1\":\"oc\", \"2\":\"oci\", \"2T\":\"oci\", \"2B\":\"oci\", \"3\":\"oci\"},\n {\"name\":\"Ojibwe\", \"local\":\"ᐊᓂᔑᓈᐯᒧᐎᓐ\", \"1\":\"oj\", \"2\":\"oji\", \"2T\":\"oji\", \"2B\":\"oji\", \"3\":\"oji\"},\n {\"name\":\"Old Church Slavonic\", \"local\":\"Словѣ́ньскъ\", \"1\":\"cu\", \"2\":\"chu\", \"2T\":\"chu\", \"2B\":\"chu\", \"3\":\"chu\"},\n {\"name\":\"Oromo\", \"local\":\"Afaan Oromoo\", \"1\":\"om\", \"2\":\"orm\", \"2T\":\"orm\", \"2B\":\"orm\", \"3\":\"orm\"},\n {\"name\":\"Oriya\", \"local\":\"ଓଡି଼ଆ\", \"1\":\"or\", \"2\":\"ori\", \"2T\":\"ori\", \"2B\":\"ori\", \"3\":\"ori\"},\n {\"name\":\"Ossetian\", \"local\":\"Ирон æвзаг\", \"1\":\"os\", \"2\":\"oss\", \"2T\":\"oss\", \"2B\":\"oss\", \"3\":\"oss\"},\n {\"name\":\"Panjabi\", \"local\":\"ਪੰਜਾਬੀ\", \"1\":\"pa\", \"2\":\"pan\", \"2T\":\"pan\", \"2B\":\"pan\", \"3\":\"pan\"},\n {\"name\":\"Pāli\", \"local\":\"पाऴि\", \"1\":\"pi\", \"2\":\"pli\", \"2T\":\"pli\", \"2B\":\"pli\", \"3\":\"pli\"},\n {\"name\":\"Persian\", \"local\":\"فارسی\", \"1\":\"fa\", \"2\":\"fas\", \"2T\":\"fas\", \"2B\":\"per\", \"3\":\"fas\"},\n {\"name\":\"Polish\", \"local\":\"Polski\", \"1\":\"pl\", \"2\":\"pol\", \"2T\":\"pol\", \"2B\":\"pol\", \"3\":\"pol\"},\n {\"name\":\"Pashto\", \"local\":\"پښتو\", \"1\":\"ps\", \"2\":\"pus\", \"2T\":\"pus\", \"2B\":\"pus\", \"3\":\"pus\"},\n {\"name\":\"Portuguese\", \"local\":\"Português\", \"1\":\"pt\", \"2\":\"por\", \"2T\":\"por\", \"2B\":\"por\", \"3\":\"por\"},\n {\"name\":\"Quechua\", \"local\":\"Runa Simi\", \"1\":\"qu\", \"2\":\"que\", \"2T\":\"que\", \"2B\":\"que\", \"3\":\"que\"},\n {\"name\":\"Romansh\", \"local\":\"Rumantsch\", \"1\":\"rm\", \"2\":\"roh\", \"2T\":\"roh\", \"2B\":\"roh\", \"3\":\"roh\"},\n {\"name\":\"Kirundi\", \"local\":\"Kirundi\", \"1\":\"rn\", \"2\":\"run\", \"2T\":\"run\", \"2B\":\"run\", \"3\":\"run\"},\n {\"name\":\"Romanian\", \"local\":\"Română\", \"1\":\"ro\", \"2\":\"ron\", \"2T\":\"ron\", \"2B\":\"rum\", \"3\":\"ron\"},\n {\"name\":\"Russian\", \"local\":\"Русский\", \"1\":\"ru\", \"2\":\"rus\", \"2T\":\"rus\", \"2B\":\"rus\", \"3\":\"rus\"},\n {\"name\":\"Sanskrit\", \"local\":\"संस्कृतम्\", \"1\":\"sa\", \"2\":\"san\", \"2T\":\"san\", \"2B\":\"san\", \"3\":\"san\"},\n {\"name\":\"Sardinian\", \"local\":\"Sardu\", \"1\":\"sc\", \"2\":\"srd\", \"2T\":\"srd\", \"2B\":\"srd\", \"3\":\"srd\"},\n {\"name\":\"Sindhi\", \"local\":\"سنڌي‎\", \"1\":\"sd\", \"2\":\"snd\", \"2T\":\"snd\", \"2B\":\"snd\", \"3\":\"snd\"},\n {\"name\":\"Northern Sami\", \"local\":\"Sámegiella\", \"1\":\"se\", \"2\":\"sme\", \"2T\":\"sme\", \"2B\":\"sme\", \"3\":\"sme\"},\n {\"name\":\"Samoan\", \"local\":\"Gagana Sāmoa\", \"1\":\"sm\", \"2\":\"smo\", \"2T\":\"smo\", \"2B\":\"smo\", \"3\":\"smo\"},\n {\"name\":\"Sango\", \"local\":\"Sängö\", \"1\":\"sg\", \"2\":\"sag\", \"2T\":\"sag\", \"2B\":\"sag\", \"3\":\"sag\"},\n {\"name\":\"Serbian\", \"local\":\"Српски\", \"1\":\"sr\", \"2\":\"srp\", \"2T\":\"srp\", \"2B\":\"srp\", \"3\":\"srp\"},\n {\"name\":\"Gaelic\", \"local\":\"Gàidhlig\", \"1\":\"gd\", \"2\":\"gla\", \"2T\":\"gla\", \"2B\":\"gla\", \"3\":\"gla\"},\n {\"name\":\"Shona\", \"local\":\"ChiShona\", \"1\":\"sn\", \"2\":\"sna\", \"2T\":\"sna\", \"2B\":\"sna\", \"3\":\"sna\"},\n {\"name\":\"Sinhala\", \"local\":\"සිංහල\", \"1\":\"si\", \"2\":\"sin\", \"2T\":\"sin\", \"2B\":\"sin\", \"3\":\"sin\"},\n {\"name\":\"Slovak\", \"local\":\"Slovenčina\", \"1\":\"sk\", \"2\":\"slk\", \"2T\":\"slk\", \"2B\":\"slo\", \"3\":\"slk\"},\n {\"name\":\"Slovene\", \"local\":\"Slovenščina\", \"1\":\"sl\", \"2\":\"slv\", \"2T\":\"slv\", \"2B\":\"slv\", \"3\":\"slv\"},\n {\"name\":\"Somali\", \"local\":\"Soomaaliga\", \"1\":\"so\", \"2\":\"som\", \"2T\":\"som\", \"2B\":\"som\", \"3\":\"som\"},\n {\"name\":\"Southern Sotho\", \"local\":\"Sesotho\", \"1\":\"st\", \"2\":\"sot\", \"2T\":\"sot\", \"2B\":\"sot\", \"3\":\"sot\"},\n {\"name\":\"Spanish\", \"local\":\"Español\", \"1\":\"es\", \"2\":\"spa\", \"2T\":\"spa\", \"2B\":\"spa\", \"3\":\"spa\"},\n {\"name\":\"Sundanese\", \"local\":\"Basa Sunda\", \"1\":\"su\", \"2\":\"sun\", \"2T\":\"sun\", \"2B\":\"sun\", \"3\":\"sun\"},\n {\"name\":\"Swahili\", \"local\":\"Kiswahili\", \"1\":\"sw\", \"2\":\"swa\", \"2T\":\"swa\", \"2B\":\"swa\", \"3\":\"swa\"},\n {\"name\":\"Swati\", \"local\":\"SiSwati\", \"1\":\"ss\", \"2\":\"ssw\", \"2T\":\"ssw\", \"2B\":\"ssw\", \"3\":\"ssw\"},\n {\"name\":\"Swedish\", \"local\":\"Svenska\", \"1\":\"sv\", \"2\":\"swe\", \"2T\":\"swe\", \"2B\":\"swe\", \"3\":\"swe\"},\n {\"name\":\"Tamil\", \"local\":\"தமிழ்\", \"1\":\"ta\", \"2\":\"tam\", \"2T\":\"tam\", \"2B\":\"tam\", \"3\":\"tam\"},\n {\"name\":\"Telugu\", \"local\":\"తెలుగు\", \"1\":\"te\", \"2\":\"tel\", \"2T\":\"tel\", \"2B\":\"tel\", \"3\":\"tel\"},\n {\"name\":\"Tajik\", \"local\":\"Тоҷикӣ\", \"1\":\"tg\", \"2\":\"tgk\", \"2T\":\"tgk\", \"2B\":\"tgk\", \"3\":\"tgk\"},\n {\"name\":\"Thai\", \"local\":\"ภาษาไทย\", \"1\":\"th\", \"2\":\"tha\", \"2T\":\"tha\", \"2B\":\"tha\", \"3\":\"tha\"},\n {\"name\":\"Tigrinya\", \"local\":\"ትግርኛ\", \"1\":\"ti\", \"2\":\"tir\", \"2T\":\"tir\", \"2B\":\"tir\", \"3\":\"tir\"},\n {\"name\":\"Tibetan Standard\", \"local\":\"བོད་ཡིག\", \"1\":\"bo\", \"2\":\"bod\", \"2T\":\"bod\", \"2B\":\"tib\", \"3\":\"bod\"},\n {\"name\":\"Turkmen\", \"local\":\"Türkmençe\", \"1\":\"tk\", \"2\":\"tuk\", \"2T\":\"tuk\", \"2B\":\"tuk\", \"3\":\"tuk\"},\n {\"name\":\"Tagalog\", \"local\":\"Tagalog\", \"1\":\"tl\", \"2\":\"tgl\", \"2T\":\"tgl\", \"2B\":\"tgl\", \"3\":\"tgl\"},\n {\"name\":\"Tswana\", \"local\":\"Setswana\", \"1\":\"tn\", \"2\":\"tsn\", \"2T\":\"tsn\", \"2B\":\"tsn\", \"3\":\"tsn\"},\n {\"name\":\"Tonga\", \"local\":\"faka Tonga\", \"1\":\"to\", \"2\":\"ton\", \"2T\":\"ton\", \"2B\":\"ton\", \"3\":\"ton\"},\n {\"name\":\"Turkish\", \"local\":\"Türkçe\", \"1\":\"tr\", \"2\":\"tur\", \"2T\":\"tur\", \"2B\":\"tur\", \"3\":\"tur\"},\n {\"name\":\"Tsonga\", \"local\":\"Xitsonga\", \"1\":\"ts\", \"2\":\"tso\", \"2T\":\"tso\", \"2B\":\"tso\", \"3\":\"tso\"},\n {\"name\":\"Tatar\", \"local\":\"Татарча\", \"1\":\"tt\", \"2\":\"tat\", \"2T\":\"tat\", \"2B\":\"tat\", \"3\":\"tat\"},\n {\"name\":\"Twi\", \"local\":\"Twi\", \"1\":\"tw\", \"2\":\"twi\", \"2T\":\"twi\", \"2B\":\"twi\", \"3\":\"twi\"},\n {\"name\":\"Tahitian\", \"local\":\"Reo Mā’ohi\", \"1\":\"ty\", \"2\":\"tah\", \"2T\":\"tah\", \"2B\":\"tah\", \"3\":\"tah\"},\n {\"name\":\"Uyghur\", \"local\":\"ئۇيغۇرچه\", \"1\":\"ug\", \"2\":\"uig\", \"2T\":\"uig\", \"2B\":\"uig\", \"3\":\"uig\"},\n {\"name\":\"Ukrainian\", \"local\":\"Українська\", \"1\":\"uk\", \"2\":\"ukr\", \"2T\":\"ukr\", \"2B\":\"ukr\", \"3\":\"ukr\"},\n {\"name\":\"Urdu\", \"local\":\"اردو\", \"1\":\"ur\", \"2\":\"urd\", \"2T\":\"urd\", \"2B\":\"urd\", \"3\":\"urd\"},\n {\"name\":\"Uzbek\", \"local\":\"O‘zbek\", \"1\":\"uz\", \"2\":\"uzb\", \"2T\":\"uzb\", \"2B\":\"uzb\", \"3\":\"uzb\"},\n {\"name\":\"Venda\", \"local\":\"Tshivenḓa\", \"1\":\"ve\", \"2\":\"ven\", \"2T\":\"ven\", \"2B\":\"ven\", \"3\":\"ven\"},\n {\"name\":\"Vietnamese\", \"local\":\"Tiếng Việt\", \"1\":\"vi\", \"2\":\"vie\", \"2T\":\"vie\", \"2B\":\"vie\", \"3\":\"vie\"},\n {\"name\":\"Volapük\", \"local\":\"Volapük\", \"1\":\"vo\", \"2\":\"vol\", \"2T\":\"vol\", \"2B\":\"vol\", \"3\":\"vol\"},\n {\"name\":\"Walloon\", \"local\":\"Walon\", \"1\":\"wa\", \"2\":\"wln\", \"2T\":\"wln\", \"2B\":\"wln\", \"3\":\"wln\"},\n {\"name\":\"Welsh\", \"local\":\"Cymraeg\", \"1\":\"cy\", \"2\":\"cym\", \"2T\":\"cym\", \"2B\":\"wel\", \"3\":\"cym\"},\n {\"name\":\"Wolof\", \"local\":\"Wolof\", \"1\":\"wo\", \"2\":\"wol\", \"2T\":\"wol\", \"2B\":\"wol\", \"3\":\"wol\"},\n {\"name\":\"Western Frisian\", \"local\":\"Frysk\", \"1\":\"fy\", \"2\":\"fry\", \"2T\":\"fry\", \"2B\":\"fry\", \"3\":\"fry\"},\n {\"name\":\"Xhosa\", \"local\":\"isiXhosa\", \"1\":\"xh\", \"2\":\"xho\", \"2T\":\"xho\", \"2B\":\"xho\", \"3\":\"xho\"},\n {\"name\":\"Yiddish\", \"local\":\"ייִדיש\", \"1\":\"yi\", \"2\":\"yid\", \"2T\":\"yid\", \"2B\":\"yid\", \"3\":\"yid\"},\n {\"name\":\"Yoruba\", \"local\":\"Yorùbá\", \"1\":\"yo\", \"2\":\"yor\", \"2T\":\"yor\", \"2B\":\"yor\", \"3\":\"yor\"},\n {\"name\":\"Zhuang\", \"local\":\"Cuengh\", \"1\":\"za\", \"2\":\"zha\", \"2T\":\"zha\", \"2B\":\"zha\", \"3\":\"zha\"},\n {\"name\":\"Zulu\", \"local\":\"isiZulu\", \"1\":\"zu\", \"2\":\"zul\", \"2T\":\"zul\", \"2B\":\"zul\", \"3\":\"zul\"}\n];\n","var data = require('./data');\n\nvar langs = {\n all: allLanguages,\n has: hasLanguage,\n codes: getCodes,\n names: getNames,\n where: findBy\n};\n\nmodule.exports = langs;\n\n// allLanguages :: -> Language[]\nfunction allLanguages() {\n return data;\n}\n\n// hasLanguage :: String, String -> Boolean\nfunction hasLanguage(crit, val) {\n return void(0) !== findBy(crit, val);\n}\n\n// getCodes :: String -> String[]\nfunction getCodes(type) {\n if (isValidType(type)) {\n return forAll(data, function getCodesIterator(row) {\n return row[type];\n });\n }\n}\n\n// getNames :: Boolean -> String[]\nfunction getNames(local) {\n return forAll(data, function getNamesIterator(row) {\n return local ? row.local : row.name;\n });\n}\n\n// findBy :: String, String -> Language\nfunction findBy(crit, val) {\n for (var i = 0; i < data.length; i++) {\n if (val === data[i][crit]) {\n return data[i];\n }\n }\n}\n\n// forAll :: Array, Function -> Array\nfunction forAll(arr, fn) {\n var out = [], i;\n for (i = 0; i < arr.length; i++) {\n out.push(fn(arr[i], i));\n }\n\n return out;\n}\n\n// isValidType :: String -> Boolean\nfunction isValidType(type) {\n var types = [1, 2, 3, '1', '2', '2B', '2T', '3'];\n return -1 !== types.indexOf(type);\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order of result values is determined by the\n * order they occur in the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = intersection;\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","/*! magnet-uri. MIT License. WebTorrent LLC <https://webtorrent.io/opensource> */\nmodule.exports = magnetURIDecode\nmodule.exports.decode = magnetURIDecode\nmodule.exports.encode = magnetURIEncode\n\nconst base32 = require('thirty-two')\nconst bep53Range = require('bep53-range')\n\n/**\n * Parse a magnet URI and return an object of keys/values\n *\n * @param {string} uri\n * @return {Object} parsed uri\n */\nfunction magnetURIDecode (uri) {\n const result = {}\n\n // Support 'magnet:' and 'stream-magnet:' uris\n const data = uri.split('magnet:?')[1]\n\n const params = (data && data.length >= 0)\n ? data.split('&')\n : []\n\n params.forEach(param => {\n const keyval = param.split('=')\n\n // This keyval is invalid, skip it\n if (keyval.length !== 2) return\n\n const key = keyval[0]\n let val = keyval[1]\n\n // Clean up torrent name\n if (key === 'dn') val = decodeURIComponent(val).replace(/\\+/g, ' ')\n\n // Address tracker (tr), exact source (xs), and acceptable source (as) are encoded\n // URIs, so decode them\n if (key === 'tr' || key === 'xs' || key === 'as' || key === 'ws') {\n val = decodeURIComponent(val)\n }\n\n // Return keywords as an array\n if (key === 'kt') val = decodeURIComponent(val).split('+')\n\n // Cast file index (ix) to a number\n if (key === 'ix') val = Number(val)\n\n // bep53\n if (key === 'so') val = bep53Range.parse(decodeURIComponent(val).split(','))\n\n // If there are repeated parameters, return an array of values\n if (result[key]) {\n if (!Array.isArray(result[key])) {\n result[key] = [result[key]]\n }\n\n result[key].push(val)\n } else {\n result[key] = val\n }\n })\n\n // Convenience properties for parity with `parse-torrent-file` module\n let m\n if (result.xt) {\n const xts = Array.isArray(result.xt) ? result.xt : [result.xt]\n xts.forEach(xt => {\n if ((m = xt.match(/^urn:btih:(.{40})/))) {\n result.infoHash = m[1].toLowerCase()\n } else if ((m = xt.match(/^urn:btih:(.{32})/))) {\n const decodedStr = base32.decode(m[1])\n result.infoHash = Buffer.from(decodedStr, 'binary').toString('hex')\n } else if ((m = xt.match(/^urn:btmh:1220(.{64})/))) {\n result.infoHashV2 = m[1].toLowerCase()\n }\n })\n }\n\n if (result.xs) {\n const xss = Array.isArray(result.xs) ? result.xs : [result.xs]\n xss.forEach(xs => {\n if ((m = xs.match(/^urn:btpk:(.{64})/))) {\n result.publicKey = m[1].toLowerCase()\n }\n })\n }\n\n if (result.infoHash) result.infoHashBuffer = Buffer.from(result.infoHash, 'hex')\n if (result.infoHashV2) result.infoHashV2Buffer = Buffer.from(result.infoHashV2, 'hex')\n if (result.publicKey) result.publicKeyBuffer = Buffer.from(result.publicKey, 'hex')\n\n if (result.dn) result.name = result.dn\n if (result.kt) result.keywords = result.kt\n\n result.announce = []\n if (typeof result.tr === 'string' || Array.isArray(result.tr)) {\n result.announce = result.announce.concat(result.tr)\n }\n\n result.urlList = []\n if (typeof result.as === 'string' || Array.isArray(result.as)) {\n result.urlList = result.urlList.concat(result.as)\n }\n if (typeof result.ws === 'string' || Array.isArray(result.ws)) {\n result.urlList = result.urlList.concat(result.ws)\n }\n\n result.peerAddresses = []\n if (typeof result['x.pe'] === 'string' || Array.isArray(result['x.pe'])) {\n result.peerAddresses = result.peerAddresses.concat(result['x.pe'])\n }\n\n // remove duplicates by converting to Set and back\n result.announce = Array.from(new Set(result.announce))\n result.urlList = Array.from(new Set(result.urlList))\n result.peerAddresses = Array.from(new Set(result.peerAddresses))\n\n return result\n}\n\nfunction magnetURIEncode (obj) {\n obj = Object.assign({}, obj) // clone obj, so we can mutate it\n\n // support using convenience names, in addition to spec names\n // (example: `infoHash` for `xt`, `name` for `dn`)\n\n // Deduplicate xt by using a set\n let xts = new Set()\n if (obj.xt && typeof obj.xt === 'string') xts.add(obj.xt)\n if (obj.xt && Array.isArray(obj.xt)) xts = new Set(obj.xt)\n if (obj.infoHashBuffer) xts.add(`urn:btih:${obj.infoHashBuffer.toString('hex')}`)\n if (obj.infoHash) xts.add(`urn:btih:${obj.infoHash}`)\n if (obj.infoHashV2Buffer) xts.add(obj.xt = `urn:btmh:1220${obj.infoHashV2Buffer.toString('hex')}`)\n if (obj.infoHashV2) xts.add(`urn:btmh:1220${obj.infoHashV2}`)\n const xtsDeduped = Array.from(xts)\n if (xtsDeduped.length === 1) obj.xt = xtsDeduped[0]\n if (xtsDeduped.length > 1) obj.xt = xtsDeduped\n\n if (obj.publicKeyBuffer) obj.xs = `urn:btpk:${obj.publicKeyBuffer.toString('hex')}`\n if (obj.publicKey) obj.xs = `urn:btpk:${obj.publicKey}`\n if (obj.name) obj.dn = obj.name\n if (obj.keywords) obj.kt = obj.keywords\n if (obj.announce) obj.tr = obj.announce\n if (obj.urlList) {\n obj.ws = obj.urlList\n delete obj.as\n }\n if (obj.peerAddresses) obj['x.pe'] = obj.peerAddresses\n\n let result = 'magnet:?'\n Object.keys(obj)\n .filter(key => key.length === 2 || key === 'x.pe')\n .forEach((key, i) => {\n const values = Array.isArray(obj[key]) ? obj[key] : [obj[key]]\n values.forEach((val, j) => {\n if ((i > 0 || j > 0) && ((key !== 'kt' && key !== 'so') || j === 0)) result += '&'\n\n if (key === 'dn') val = encodeURIComponent(val).replace(/%20/g, '+')\n if (key === 'tr' || key === 'as' || key === 'ws') {\n val = encodeURIComponent(val)\n }\n // Don't URI encode BEP46 keys\n if (key === 'xs' && !val.startsWith('urn:btpk:')) {\n val = encodeURIComponent(val)\n }\n if (key === 'kt') val = encodeURIComponent(val)\n if (key === 'so') return\n\n if (key === 'kt' && j > 0) result += `+${val}`\n else result += `${key}=${val}`\n })\n if (key === 'so') result += `${key}=${bep53Range.compose(values)}`\n })\n\n return result\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"error-container\":\"error-container-OJnoc\",\"error-image\":\"error-image-qU9Qo\",\"error-message\":\"error-message-kW59Z\",\"buttons-container\":\"buttons-container-tQonN\",\"button-container\":\"button-container-vLSQK\",\"label\":\"label-Up_te\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fade-in\":\"fade-in-pFkt_\",\"toasts-container\":\"toasts-container-oKECy\",\"router\":\"router-_65XU\",\"error-container\":\"error-container-VZXwH\",\"loader-container\":\"loader-container-vwvnb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addon-details-container\":\"addon-details-container-ZQqDB\",\"title-container\":\"title-container-fR02m\",\"icon\":\"icon-ScXNu\",\"logo\":\"logo-BujW_\",\"name-container\":\"name-container-Gfhqw\",\"name\":\"name-XNqfo\",\"version\":\"version-w_xoN\",\"section-container\":\"section-container-l3YaI\",\"section-header\":\"section-header-bs8iy\",\"section-label\":\"section-label-rYxQh\",\"transport-url-label\":\"transport-url-label-EW7I5\",\"disclaimer-label\":\"disclaimer-label-IGdd3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addon-details-modal-container\":\"addon-details-modal-container-_bwQ0\",\"addon-details-container\":\"addon-details-container-AmNx2\",\"addon-details-message-container\":\"addon-details-message-container-VEzeN\",\"cancel-button\":\"cancel-button-luYIO\",\"install-button\":\"install-button-XUzqz\",\"uninstall-button\":\"uninstall-button-X2JXr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button-container\":\"button-container-HNufV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkbox-container\":\"checkbox-container-heGq4\",\"icon\":\"icon-NUvac\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"color-picker-container\":\"color-picker-container-deFkW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"color-input-container\":\"color-input-container-jRZsi\",\"transparent-label-container\":\"transparent-label-container-Tx2fI\",\"transparent-label\":\"transparent-label-omLaY\",\"color-picker-container\":\"color-picker-container-C4puR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main-nav-bars-container\":\"main-nav-bars-container-fA7pO\",\"horizontal-nav-bar\":\"horizontal-nav-bar-x5sxp\",\"vertical-nav-bar\":\"vertical-nav-bar-JNw53\",\"nav-content-container\":\"nav-content-container-VHwOU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta-item-container\":\"meta-item-container-drt6V\",\"poster-shape-poster\":\"poster-shape-poster-F_CO5\",\"poster-container\":\"poster-container-Fruke\",\"poster-shape-square\":\"poster-shape-square-UCby3\",\"poster-shape-landscape\":\"poster-shape-landscape-BPmb1\",\"poster-image-layer\":\"poster-image-layer-CdxrT\",\"poster-image\":\"poster-image-lt9zC\",\"placeholder-icon\":\"placeholder-icon-uYwsv\",\"play-icon-layer\":\"play-icon-layer-_75Lo\",\"play-icon\":\"play-icon-d9_ll\",\"progress-bar-layer\":\"progress-bar-layer-r81Qx\",\"progress-bar\":\"progress-bar-E3QY9\",\"new-videos\":\"new-videos-gZv0w\",\"layer\":\"layer-RqXo1\",\"title-bar-container\":\"title-bar-container-DFXJK\",\"title-label\":\"title-label-dZZ_A\",\"menu-label-container\":\"menu-label-container-dlL1I\",\"icon\":\"icon-IfJ81\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"action-button-container\":\"action-button-container-TmbQ2\",\"icon-container\":\"icon-container-hvLw4\",\"icon\":\"icon-DG4TM\",\"label-container\":\"label-container-eh2bk\",\"label\":\"label-YhHvD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta-links-container\":\"meta-links-container-wSrm1\",\"label-container\":\"label-container-zWFke\",\"links-container\":\"links-container-o4RUG\",\"link-container\":\"link-container-HUDqV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta-preview-placeholder-container\":\"meta-preview-placeholder-container-AQ4ld\",\"meta-info-container\":\"meta-info-container-pEOFb\",\"logo-container\":\"logo-container-g5eNB\",\"duration-release-info-container\":\"duration-release-info-container-lNaI6\",\"duration-container\":\"duration-container-x2E01\",\"release-info-container\":\"release-info-container-PEmeu\",\"description-container\":\"description-container-yGOO4\",\"description-label-container\":\"description-label-container-G_0pj\",\"genres-container\":\"genres-container-v3H7A\",\"genres-header-container\":\"genres-header-container-lsPLU\",\"genre-label-container\":\"genre-label-container-z7kU8\",\"action-buttons-container\":\"action-buttons-container-U3sbl\",\"action-button-container\":\"action-button-container-xJmjB\",\"action-button-icon\":\"action-button-icon-E7Epc\",\"action-button-label\":\"action-button-label-R7UPL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta-preview-container\":\"meta-preview-container-bgBNf\",\"compact\":\"compact-Wbl4Q\",\"meta-info-container\":\"meta-info-container-tlmcb\",\"logo\":\"logo-X9v1A\",\"logo-placeholder\":\"logo-placeholder-kIy0x\",\"runtime-release-info-container\":\"runtime-release-info-container-lXo3K\",\"release-info-label\":\"release-info-label-XmqSY\",\"runtime-label\":\"runtime-label-B29EN\",\"description-container\":\"description-container-eSGft\",\"action-buttons-container\":\"action-buttons-container-qQrnO\",\"action-button\":\"action-button-R44aX\",\"background-image-layer\":\"background-image-layer-GstuA\",\"background-image\":\"background-image-B0d6i\",\"imdb-button-container\":\"imdb-button-container-qCbl7\",\"icon\":\"icon-MBu8k\",\"label\":\"label-_DfnK\",\"name-container\":\"name-container-HsS4c\",\"meta-links\":\"meta-links-mTHUo\",\"share-prompt\":\"share-prompt-F8qOC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta-row-placeholder-container\":\"meta-row-placeholder-container-wpHNk\",\"header-container\":\"header-container-GCHdB\",\"title-container\":\"title-container-Bjp93\",\"see-all-container\":\"see-all-container-FnlIf\",\"label\":\"label-dU3S2\",\"icon\":\"icon-FLhtv\",\"meta-items-container\":\"meta-items-container-dbGXx\",\"meta-item\":\"meta-item-IegjY\",\"poster-container\":\"poster-container-RlQMV\",\"title-bar-container\":\"title-bar-container-YJZrl\",\"title-label\":\"title-label-Ka1vs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta-row-container\":\"meta-row-container-ucOuu\",\"header-container\":\"header-container-RherZ\",\"title-container\":\"title-container-SJ0nR\",\"see-all-container\":\"see-all-container-HlJ4b\",\"label\":\"label-isJw8\",\"icon\":\"icon-PO0GH\",\"message-container\":\"message-container-bIcjN\",\"meta-items-container\":\"meta-items-container-TqzFs\",\"meta-item\":\"meta-item-x28TU\",\"poster-shape-poster\":\"poster-shape-poster-B1QR0\",\"poster-shape-square\":\"poster-shape-square-m5r_O\",\"poster-shape-landscape\":\"poster-shape-landscape-_FSOH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal-container\":\"modal-container-jZglc\",\"modal-dialog-container\":\"modal-dialog-container-QgsId\",\"close-button-container\":\"close-button-container-QrgQo\",\"icon\":\"icon-hRjWc\",\"title-container\":\"title-container-wqhp3\",\"modal-dialog-content\":\"modal-dialog-content-ChXwF\",\"buttons-container\":\"buttons-container-EJKJF\",\"action-button\":\"action-button-bi6FL\",\"label\":\"label-_ADoX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"label-container\":\"label-container-ZHk2S\",\"label\":\"label-kz1K0\",\"icon\":\"icon-YGvLz\",\"modal-container\":\"modal-container-BQwj3\",\"menu-container\":\"menu-container-Z1Pou\",\"option-container\":\"option-container-yVj1o\",\"no-options-container\":\"no-options-container-NYx9Z\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nav-menu-container\":\"nav-menu-container-VSzwW\",\"user-info-container\":\"user-info-container-BR8yb\",\"avatar-container\":\"avatar-container-jmlBM\",\"email-container\":\"email-container-fvFrL\",\"email-label\":\"email-label-WBX2T\",\"logout-button-container\":\"logout-button-container-hSW_i\",\"logout-label\":\"logout-label-dUa8B\",\"nav-menu-section\":\"nav-menu-section-oMELF\",\"nav-menu-option-container\":\"nav-menu-option-container-gZ1gT\",\"icon\":\"icon-OSgm6\",\"nav-menu-option-label\":\"nav-menu-option-label-XNuY6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"search-bar-container\":\"search-bar-container-TNPzI\",\"search-input\":\"search-input-aOiJ2\",\"placeholder-label\":\"placeholder-label-Irklk\",\"submit-button-container\":\"submit-button-container-jPP5J\",\"icon\":\"icon-FT4bG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"horizontal-nav-bar-container\":\"horizontal-nav-bar-container-jFw5Y\",\"logo-container\":\"logo-container-fnFzY\",\"logo\":\"logo-RVSxt\",\"spacing\":\"spacing-jzj7t\",\"title\":\"title-_UxXH\",\"search-bar\":\"search-bar-NopQ6\",\"button-container\":\"button-container-B23qB\",\"back-button-container\":\"back-button-container-K9AwF\",\"icon\":\"icon-wrBcp\",\"menu-button-container\":\"menu-button-container-WWcwa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nav-tab-button-container\":\"nav-tab-button-container-r8HUb\",\"icon\":\"icon-vxKmB\",\"label\":\"label-mc9eB\",\"logo\":\"logo-ST06l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"vertical-nav-bar-container\":\"vertical-nav-bar-container-AsGLM\",\"nav-tab-button\":\"nav-tab-button-noMv6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pagination-input-container\":\"pagination-input-container-vXhi6\",\"next-button-container\":\"next-button-container-zNwG6\",\"prev-button-container\":\"prev-button-container-qmJ1m\",\"icon\":\"icon-UoyQ9\",\"label-container\":\"label-container-VwInD\",\"label\":\"label-cJKC1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"background\":\"background-FNyrF\",\"icon\":\"icon-XXj2q\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"label-container\":\"label-container-iBMb9\",\"menu-container\":\"menu-container-bfvDO\",\"menu-direction-top-left\":\"menu-direction-top-left-KpAQN\",\"menu-direction-bottom-left\":\"menu-direction-bottom-left-Uw06K\",\"menu-direction-top-right\":\"menu-direction-top-right-jOtwq\",\"menu-direction-bottom-right\":\"menu-direction-bottom-right-XZ9Ch\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"search-bar-container\":\"search-bar-container-Vb_fz\",\"search-input\":\"search-input-BWyeG\",\"icon\":\"icon-poa62\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"search-bar-container\":\"search-bar-container-MpNBA\",\"search-input\":\"search-input-ge2wu\",\"icon\":\"icon-Z_Hni\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"share-prompt-container\":\"share-prompt-container-YsJwl\",\"buttons-container\":\"buttons-container-Oc7PG\",\"button-container\":\"button-container-oMOnv\",\"icon\":\"icon-FVvQH\",\"label\":\"label-iOGrs\",\"facebook-button\":\"facebook-button-KaNwb\",\"twitter-button\":\"twitter-button-pJka2\",\"url-container\":\"url-container-fMSp4\",\"url-text-input\":\"url-text-input-Yka4x\",\"copy-button\":\"copy-button-ShwCB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"active-slider-within\":\"active-slider-within-lQFc1\",\"slider-container\":\"slider-container-aRzVq\",\"track-after\":\"track-after-iD0ee\",\"track\":\"track-jWhBI\",\"thumb\":\"thumb-tfDk6\",\"layer\":\"layer-FqnD7\",\"track-before\":\"track-before-FwOXh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"warning-container\":\"warning-container-FIITF\",\"warning-statement\":\"warning-statement-I7pdD\",\"warning-button\":\"warning-button-zlx_V\",\"warning-label\":\"warning-label-XJnBc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"text-input\":\"text-input-jR2Nr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"toast-item-container\":\"toast-item-container-nG0uk\",\"success\":\"success-eIDTa\",\"icon-container\":\"icon-container-rjAiH\",\"icon\":\"icon-Y4I_O\",\"error\":\"error-quyOd\",\"info-container\":\"info-container-xD9V6\",\"title-container\":\"title-container-VFReJ\",\"message-container\":\"message-container-znkCj\",\"close-button-container\":\"close-button-container-YtyYE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addon-container\":\"addon-container-lC5KN\",\"logo-container\":\"logo-container-ZcSSC\",\"logo\":\"logo-WrsGF\",\"icon\":\"icon-GxVbY\",\"info-container\":\"info-container-AdMB6\",\"name-container\":\"name-container-qIAg8\",\"version-container\":\"version-container-zdPyN\",\"types-container\":\"types-container-DaOrg\",\"description-container\":\"description-container-v7Jhe\",\"buttons-container\":\"buttons-container-g0xXr\",\"action-buttons-container\":\"action-buttons-container-xMVmz\",\"configure-button-container\":\"configure-button-container-VwVAQ\",\"install-button-container\":\"install-button-container-yfcq5\",\"share-button-container\":\"share-button-container-s3gwP\",\"uninstall-button-container\":\"uninstall-button-container-oV4Yo\",\"label\":\"label-OnWh2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addons-container\":\"addons-container-ogGYu\",\"addons-content\":\"addons-content-zhFBl\",\"selectable-inputs-container\":\"selectable-inputs-container-tUul1\",\"add-button-container\":\"add-button-container-SkafT\",\"icon\":\"icon-HsyZS\",\"add-button-label\":\"add-button-label-NN6bu\",\"select-input-container\":\"select-input-container-KqG8N\",\"spacing\":\"spacing-wH1w5\",\"search-bar\":\"search-bar-k7MXd\",\"filter-button\":\"filter-button-lLJ1X\",\"filter-icon\":\"filter-icon-LUDTS\",\"message-container\":\"message-container-GBw0P\",\"addons-list-container\":\"addons-list-container-Ovr2Z\",\"addon\":\"addon-whmdO\",\"filters-modal\":\"filters-modal-w6oWY\",\"add-addon-modal-container\":\"add-addon-modal-container-KR5ny\",\"notice\":\"notice-UQkO1\",\"addon-url-input\":\"addon-url-input-ucetZ\",\"cancel-button\":\"cancel-button-R2AxR\",\"share-modal-container\":\"share-modal-container-DkzPM\",\"title-container\":\"title-container-La49g\",\"logo\":\"logo-PmYDP\",\"name-container\":\"name-container-m_Sz0\",\"name\":\"name-YD0xd\",\"version\":\"version-wuAFB\",\"share-prompt-container\":\"share-prompt-container-vaK4P\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"board-container\":\"board-container-DTN_b\",\"board-content-container\":\"board-content-container-ToQTz\",\"board-content\":\"board-content-nPWv1\",\"board-row\":\"board-row-CoJrZ\",\"board-warning-container\":\"board-warning-container-a4m04\",\"board-row-landscape\":\"board-row-landscape-FRGXx\",\"board-row-poster\":\"board-row-poster-QPQqC\",\"board-row-square\":\"board-row-square-pgaZ3\",\"continue-watching-row\":\"continue-watching-row-ZiNSa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"discover-container\":\"discover-container-L6OGL\",\"discover-content\":\"discover-content-CRsRg\",\"catalog-container\":\"catalog-container-VNK_T\",\"selectable-inputs-container\":\"selectable-inputs-container-IRz50\",\"select-input\":\"select-input-CHDbe\",\"filter-container\":\"filter-container-BVkqT\",\"filter-icon\":\"filter-icon-zlFnX\",\"missing-addon-warning-container\":\"missing-addon-warning-container-IXGuv\",\"warning-label\":\"warning-label-f19Jg\",\"install-button\":\"install-button-SmJe1\",\"label\":\"label-ToW4S\",\"message-container\":\"message-container-Zv9eF\",\"image\":\"image-txC9E\",\"message-label\":\"message-label-mRyRX\",\"meta-items-container\":\"meta-items-container-n8vNz\",\"meta-item-placeholder\":\"meta-item-placeholder-wxG4I\",\"poster-container\":\"poster-container-Dch4R\",\"title-bar-container\":\"title-bar-container-dtDnk\",\"title-label\":\"title-label-vHdQd\",\"meta-preview-container\":\"meta-preview-container-CoWs5\",\"selectable-inputs-modal\":\"selectable-inputs-modal-ChpOa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"consent-checkbox-container\":\"consent-checkbox-container-WV60T\",\"label\":\"label-l3LSw\",\"link\":\"link-UppYg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"password-reset-modal-container\":\"password-reset-modal-container-KzJPQ\",\"credentials-text-input\":\"credentials-text-input-ncrIR\",\"error-message\":\"error-message-DkekN\",\"cancel-button\":\"cancel-button-AneJE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"intro-container\":\"intro-container-tkNS6\",\"form-container\":\"form-container-HMlEh\",\"logo-container\":\"logo-container-W49kt\",\"logo\":\"logo-WJ36F\",\"name\":\"name-BNo9R\",\"form-button\":\"form-button-vyqqj\",\"icon\":\"icon-L_6b6\",\"label\":\"label-uHD7L\",\"facebook-button\":\"facebook-button-LZ_kG\",\"login-form-button\":\"login-form-button-DqJUV\",\"login-label\":\"login-label-AelYq\",\"credentials-text-input\":\"credentials-text-input-QMCZz\",\"forgot-password-link-container\":\"forgot-password-link-container-ygZqb\",\"forgot-password-link\":\"forgot-password-link-NxNUD\",\"error-message\":\"error-message-cKdzB\",\"submit-button\":\"submit-button-x3L8z\",\"guest-login-button\":\"guest-login-button-D8DWZ\",\"signup-form-button\":\"signup-form-button-UGmSk\",\"loading-modal-container\":\"loading-modal-container-eLyTm\",\"loader-container\":\"loader-container-oe8rU\",\"flash\":\"flash-wUFXY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"library-container\":\"library-container-zM_bj\",\"library-content\":\"library-content-PgX4O\",\"selectable-inputs-container\":\"selectable-inputs-container-hR3or\",\"select-input-container\":\"select-input-container-H1VZ1\",\"filter-container\":\"filter-container-oRBlw\",\"filter-icon\":\"filter-icon-ZhMyS\",\"spacing\":\"spacing-Rdiyt\",\"pagination-input\":\"pagination-input-DvMtv\",\"pagination-input-placeholder\":\"pagination-input-placeholder-vZeuq\",\"message-container\":\"message-container-MhY5t\",\"no-user-message-container\":\"no-user-message-container-KMLpE\",\"login-button-container\":\"login-button-container-RoEh7\",\"label\":\"label-QqYmf\",\"image\":\"image-csRHm\",\"message-label\":\"message-label-UExl3\",\"meta-items-container\":\"meta-items-container-IKrND\",\"selectable-inputs-modal\":\"selectable-inputs-modal-rHlo7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stream-placeholder-container\":\"stream-placeholder-container-T1nxv\",\"addon-container\":\"addon-container-pm1P0\",\"addon-name\":\"addon-name-zAOKP\",\"info-container\":\"info-container-Z1Dl6\",\"description-container\":\"description-container-ZOMcn\",\"play-icon\":\"play-icon-MXqj3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stream-container\":\"stream-container-JPdah\",\"play-icon\":\"play-icon-w1yb5\",\"addon-name-container\":\"addon-name-container-IZ2De\",\"thumbnail-container\":\"thumbnail-container-ptbAk\",\"thumbnail\":\"thumbnail-whoms\",\"placeholder-icon\":\"placeholder-icon-znYz0\",\"addon-name\":\"addon-name-tC8PX\",\"info-container\":\"info-container-TihQo\",\"progress-bar-container\":\"progress-bar-container-ADRp_\",\"progress-bar\":\"progress-bar-XrEBL\",\"stream-containerfocus\":\"stream-containerfocus-xiWVj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"streams-list-container\":\"streams-list-container-xYMJo\",\"message-container\":\"message-container-f9_L4\",\"image\":\"image-rIyu6\",\"label\":\"label-luvnO\",\"select-input-container\":\"select-input-container-irGn_\",\"streams-container\":\"streams-container-bbSc4\",\"install-button-container\":\"install-button-container-Q60yJ\",\"icon\":\"icon-SoFgF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"seasons-bar-placeholder-container\":\"seasons-bar-placeholder-container-M81RN\",\"next-season-button\":\"next-season-button-oGnlT\",\"prev-season-button\":\"prev-season-button-TCbOq\",\"icon\":\"icon-UzQjF\",\"label\":\"label-lmBnj\",\"seasons-popup-label-container\":\"seasons-popup-label-container-r2UDB\",\"seasons-popup-label\":\"seasons-popup-label-xBinL\",\"seasons-popup-icon\":\"seasons-popup-icon-p1T5d\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"seasons-bar-container\":\"seasons-bar-container-nOZjG\",\"next-season-button\":\"next-season-button-RrYAq\",\"prev-season-button\":\"prev-season-button-bs1GQ\",\"label\":\"label-uJbfD\",\"icon\":\"icon-_ZBEE\",\"seasons-popup-label-container\":\"seasons-popup-label-container-fZcu4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"video-placeholder-container\":\"video-placeholder-container-uDsav\",\"info-container\":\"info-container-KTKtT\",\"name-container\":\"name-container-Jvesr\",\"released-container\":\"released-container-uoc4E\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"video-container\":\"video-container-UBBpR\",\"thumbnail-container\":\"thumbnail-container-n_jp7\",\"thumbnail\":\"thumbnail-MiS3K\",\"placeholder-icon\":\"placeholder-icon-LzVIO\",\"info-container\":\"info-container-szYxP\",\"title-container\":\"title-container-EMXpV\",\"flex-row-container\":\"flex-row-container-ExEua\",\"released-container\":\"released-container-zA91y\",\"upcoming-watched-container\":\"upcoming-watched-container-y_ijd\",\"upcoming-container\":\"upcoming-container-ASE1L\",\"watched-container\":\"watched-container-LCso2\",\"flag-label\":\"flag-label-dIdBb\",\"progress-bar-container\":\"progress-bar-container-gMpiB\",\"progress-bar\":\"progress-bar-Yhl4z\",\"context-menu-content\":\"context-menu-content-MGBhW\",\"context-menu-option-container\":\"context-menu-option-container-VlNjD\",\"context-menu-option-label\":\"context-menu-option-label-hOUnH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videos-list-container\":\"videos-list-container-NepX5\",\"message-container\":\"message-container-_hhmQ\",\"image\":\"image-_xAbP\",\"label\":\"label-Ff1_X\",\"seasons-bar\":\"seasons-bar-Ma8vp\",\"search-bar\":\"search-bar-mZHWa\",\"videos-container\":\"videos-container-msX8s\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"metadetails-container\":\"metadetails-container-K_Dqa\",\"nav-bar\":\"nav-bar-MH6Vk\",\"metadetails-content\":\"metadetails-content-Uz5EV\",\"vertical-nav-bar\":\"vertical-nav-bar-B39nq\",\"background-image-layer\":\"background-image-layer-wJa90\",\"background-image\":\"background-image-tSjYu\",\"meta-message-container\":\"meta-message-container-MJZN5\",\"image\":\"image-R1LcJ\",\"message-label\":\"message-label-Uz4_P\",\"meta-preview\":\"meta-preview-ES0h3\",\"spacing\":\"spacing-rgIYg\",\"streams-list\":\"streams-list-Y1lCM\",\"videos-list\":\"videos-list-nE0LJ\",\"meta-extension-modal-container\":\"meta-extension-modal-container-gHjqy\",\"meta-extension-modal-iframe\":\"meta-extension-modal-iframe-GGHlm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"not-found-container\":\"not-found-container-Q1qsP\",\"nav-bar\":\"nav-bar-Eu3_y\",\"not-found-content\":\"not-found-content-z_Eza\",\"not-found-image\":\"not-found-image-Qab4G\",\"not-found-label\":\"not-found-label-mmwyZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buffering-loader-container\":\"buffering-loader-container-P7S0m\",\"buffering-loader\":\"buffering-loader-fMSpb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"seek-bar-container\":\"seek-bar-container-JGGTa\",\"slider\":\"slider-hBDOf\",\"label\":\"label-QFbsS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"volume-slider\":\"volume-slider-G_xAt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"control-bar-container\":\"control-bar-container-xsWA7\",\"seek-bar\":\"seek-bar-I7WeY\",\"control-bar-buttons-container\":\"control-bar-buttons-container-SWhkU\",\"control-bar-button\":\"control-bar-button-FQUsj\",\"icon\":\"icon-qy6I6\",\"volume-slider\":\"volume-slider-U9jfo\",\"spacing\":\"spacing-p8NJQ\",\"control-bar-buttons-menu-button\":\"control-bar-buttons-menu-button-h0MWd\",\"control-bar-buttons-menu-container\":\"control-bar-buttons-menu-container-M6L0_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"info-menu-container\":\"info-menu-container-R1QKH\",\"stream\":\"stream-MY2Oy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"next-video-popup-container\":\"next-video-popup-container-H4wnL\",\"slide-fade-in\":\"slide-fade-in-rk2M8\",\"poster-container\":\"poster-container-tXZjA\",\"poster-image\":\"poster-image-2D6wg\",\"placeholder-icon\":\"placeholder-icon-fu1rK\",\"info-container\":\"info-container-KLOMx\",\"details-container\":\"details-container-bUOTZ\",\"name\":\"name-sIiDL\",\"description\":\"description-gIXiC\",\"buttons-container\":\"buttons-container-iYrpZ\",\"spacing\":\"spacing-iFwsN\",\"button-container\":\"button-container-i4F7t\",\"play-button\":\"play-button-Dluk6\",\"icon\":\"icon-N3Ewm\",\"label\":\"label-zOq_w\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"option-container\":\"option-container-m_jZq\",\"icon\":\"icon-krR0X\",\"label\":\"label-cmqqu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"options-menu-container\":\"options-menu-container-qlzLt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"option\":\"option-_O96j\",\"icon\":\"icon-kqaPF\",\"label\":\"label-FEOiu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"speed-menu-container\":\"speed-menu-container-ABjzc\",\"title\":\"title-Hu2Dm\",\"options-container\":\"options-container-DNn3D\",\"option\":\"option-GcPlB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"statistics-menu-container\":\"statistics-menu-container-DhiHn\",\"title\":\"title-NCwWH\",\"label\":\"label-h6nN_\",\"value\":\"value-E8Ftb\",\"stats\":\"stats-Tr37t\",\"stat\":\"stat-zoq5A\",\"info-hash\":\"info-hash-GT1Cv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"discrete-input-container\":\"discrete-input-container-CMThy\",\"header\":\"header-n0jWL\",\"input-container\":\"input-container-TNuI2\",\"button-container\":\"button-container-ciSB5\",\"icon\":\"icon-JDltr\",\"option-label\":\"option-label-tjeeT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"subtitles-menu-container\":\"subtitles-menu-container-PxBRZ\",\"languages-container\":\"languages-container-NS7H9\",\"subtitles-settings-container\":\"subtitles-settings-container-LhRGS\",\"variants-container\":\"variants-container-XglzH\",\"languages-header\":\"languages-header-jGNcK\",\"settings-header\":\"settings-header-eaWnm\",\"variants-header\":\"variants-header-TsVSR\",\"languages-list\":\"languages-list-sxIwI\",\"variants-list\":\"variants-list-yZo6B\",\"language-option\":\"language-option-O1Yr9\",\"variant-option\":\"variant-option-t7_LA\",\"language-label\":\"language-label-FjjqA\",\"variant-label\":\"variant-label-opjnP\",\"icon\":\"icon-I1Ruh\",\"no-variants-container\":\"no-variants-container-q6u1Q\",\"no-variants-label\":\"no-variants-label-RmDKZ\",\"spacing\":\"spacing-AWJpt\",\"discrete-input\":\"discrete-input-fXELp\",\"advanced-button\":\"advanced-button-YGN5T\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"video-container\":\"video-container-v9_vA\",\"video\":\"video-tkpQm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videos-menu-container\":\"videos-menu-container-ATzKq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"player-container\":\"player-container-wIELK\",\"immersed\":\"immersed-Y0hn1\",\"control-bar-layer\":\"control-bar-layer-m2jto\",\"menu-layer\":\"menu-layer-HZFG9\",\"nav-bar-layer\":\"nav-bar-layer-r9HT5\",\"layer\":\"layer-qalDW\",\"error-layer\":\"error-layer-RCEZC\",\"error-label\":\"error-label-FPIMw\",\"error-sub\":\"error-sub-Myxw2\",\"playlist-button\":\"playlist-button-CB2WC\",\"icon\":\"icon-aMPEE\",\"label\":\"label-njZqk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"search-container\":\"search-container-uXEFf\",\"search-content\":\"search-content-LX6un\",\"search-row\":\"search-row-EQLaD\",\"search-hints-container\":\"search-hints-container-FHpPM\",\"search-hint-container\":\"search-hint-container-kd8iX\",\"icon\":\"icon-fOZZl\",\"label\":\"label-l6wxz\",\"message-container\":\"message-container-YAunr\",\"image\":\"image-Xuwya\",\"message-label\":\"message-label-K8LPz\",\"search-row-landscape\":\"search-row-landscape-o3Lfv\",\"search-row-poster\":\"search-row-poster-m7CUE\",\"search-row-square\":\"search-row-square-VesJA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"settings-container\":\"settings-container-b0DCu\",\"settings-content\":\"settings-content-lLXmk\",\"side-menu-container\":\"side-menu-container-NG17D\",\"side-menu-button\":\"side-menu-button-vbkJ1\",\"selected\":\"selected-yhdng\",\"spacing\":\"spacing-fpLUM\",\"version-info-label\":\"version-info-label-uMkm7\",\"sections-container\":\"sections-container-EUKAe\",\"section-container\":\"section-container-twzKQ\",\"section-title\":\"section-title-Nt71Z\",\"option-container\":\"option-container-EGlcv\",\"user-info-option-container\":\"user-info-option-container-oRLJc\",\"avatar-container\":\"avatar-container-YWq9E\",\"email-logout-container\":\"email-logout-container-kYQDM\",\"email-label-container\":\"email-label-container-oVmiO\",\"logout-button-container\":\"logout-button-container-jLrU2\",\"email-label\":\"email-label-Q__sJ\",\"logout-label\":\"logout-label-zo4ES\",\"user-panel-container\":\"user-panel-container-kkrJG\",\"user-panel-label\":\"user-panel-label-beAQl\",\"option-input-container\":\"option-input-container-NPgpT\",\"option-name-container\":\"option-name-container-exGMI\",\"icon\":\"icon-REQkK\",\"label\":\"label-FFamJ\",\"button-container\":\"button-container-ENMae\",\"multiselect-container\":\"multiselect-container-w0c9l\",\"link-container\":\"link-container-ERYsD\",\"checkbox-container\":\"checkbox-container-R9LLN\",\"color-input-container\":\"color-input-container-WclA_\",\"info-container\":\"info-container-wfFcS\",\"selectable\":\"selectable-eucrJ\",\"configure-input-container\":\"configure-input-container-PMyIY\",\"configure-button-container\":\"configure-button-container-xGFgg\",\"shortcut-container\":\"shortcut-container-ZSm5O\",\"configure-server-url-modal-container\":\"configure-server-url-modal-container-vSL44\",\"server-url-input\":\"server-url-input-Dfazw\",\"cancel-button\":\"cancel-button-iydew\"};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=xh(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return\"function\"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Vh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);\"function\"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?(\"function\"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?(\"function\"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:\"visible\",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case \"together\":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d=\"\",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version=\"18.2.0-next-9e3b772b8-20220608\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/**\n * defines a focus group\n */\nexport var FOCUS_GROUP = 'data-focus-lock';\n/**\n * disables element discovery inside a group marked by key\n */\nexport var FOCUS_DISABLED = 'data-focus-lock-disabled';\n/**\n * allows uncontrolled focus within the marked area, effectively disabling focus lock for it's content\n */\nexport var FOCUS_ALLOW = 'data-no-focus-lock';\n/**\n * instructs autofocus engine to pick default autofocus inside a given node\n * can be set on the element or container\n */\nexport var FOCUS_AUTO = 'data-autofocus-inside';\n/**\n * instructs autofocus to ignore elements within a given node\n * can be set on the element or container\n */\nexport var FOCUS_NO_AUTOFOCUS = 'data-no-autofocus';\n","import { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n return useCallbackRef(defaultValue || null, function (newValue) { return refs.forEach(function (ref) { return assignRef(ref, newValue); }); });\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nexport var hiddenGuard = {\n width: '1px',\n height: '0px',\n padding: 0,\n overflow: 'hidden',\n position: 'fixed',\n top: '1px',\n left: '1px'\n};\n\nvar InFocusGuard = function InFocusGuard(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-first\",\n \"data-focus-guard\": true,\n \"data-focus-auto-guard\": true,\n style: hiddenGuard\n }), children, children && /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-last\",\n \"data-focus-guard\": true,\n \"data-focus-auto-guard\": true,\n style: hiddenGuard\n }));\n};\n\nInFocusGuard.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.node\n} : {};\nInFocusGuard.defaultProps = {\n children: null\n};\nexport default InFocusGuard;","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { createMedium, createSidecarMedium } from 'use-sidecar';\nexport var mediumFocus = createMedium({}, function (_ref) {\n var target = _ref.target,\n currentTarget = _ref.currentTarget;\n return {\n target: target,\n currentTarget: currentTarget\n };\n});\nexport var mediumBlur = createMedium();\nexport var mediumEffect = createMedium();\nexport var mediumSidecar = createSidecarMedium({\n async: true\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { node, bool, string, any, arrayOf, oneOfType, object, func } from 'prop-types';\nimport * as constants from 'focus-lock/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { useEffect } from 'react';\nimport { hiddenGuard } from './FocusGuard';\nimport { mediumFocus, mediumBlur, mediumSidecar } from './medium';\nvar emptyArray = [];\nvar FocusLock = /*#__PURE__*/React.forwardRef(function FocusLockUI(props, parentRef) {\n var _extends2;\n\n var _React$useState = React.useState(),\n realObserved = _React$useState[0],\n setObserved = _React$useState[1];\n\n var observed = React.useRef();\n var isActive = React.useRef(false);\n var originalFocusedElement = React.useRef(null);\n var children = props.children,\n disabled = props.disabled,\n noFocusGuards = props.noFocusGuards,\n persistentFocus = props.persistentFocus,\n crossFrame = props.crossFrame,\n autoFocus = props.autoFocus,\n allowTextSelection = props.allowTextSelection,\n group = props.group,\n className = props.className,\n whiteList = props.whiteList,\n hasPositiveIndices = props.hasPositiveIndices,\n _props$shards = props.shards,\n shards = _props$shards === void 0 ? emptyArray : _props$shards,\n _props$as = props.as,\n Container = _props$as === void 0 ? 'div' : _props$as,\n _props$lockProps = props.lockProps,\n containerProps = _props$lockProps === void 0 ? {} : _props$lockProps,\n SideCar = props.sideCar,\n shouldReturnFocus = props.returnFocus,\n focusOptions = props.focusOptions,\n onActivationCallback = props.onActivation,\n onDeactivationCallback = props.onDeactivation;\n\n var _React$useState2 = React.useState({}),\n id = _React$useState2[0]; // SIDE EFFECT CALLBACKS\n\n\n var onActivation = React.useCallback(function () {\n originalFocusedElement.current = originalFocusedElement.current || document && document.activeElement;\n\n if (observed.current && onActivationCallback) {\n onActivationCallback(observed.current);\n }\n\n isActive.current = true;\n }, [onActivationCallback]);\n var onDeactivation = React.useCallback(function () {\n isActive.current = false;\n\n if (onDeactivationCallback) {\n onDeactivationCallback(observed.current);\n }\n }, [onDeactivationCallback]);\n useEffect(function () {\n if (!disabled) {\n // cleanup return focus on trap deactivation\n // sideEffect/returnFocus should happen by this time\n originalFocusedElement.current = null;\n }\n }, []);\n var returnFocus = React.useCallback(function (allowDefer) {\n var returnFocusTo = originalFocusedElement.current;\n\n if (returnFocusTo && returnFocusTo.focus) {\n var howToReturnFocus = typeof shouldReturnFocus === 'function' ? shouldReturnFocus(returnFocusTo) : shouldReturnFocus;\n\n if (howToReturnFocus) {\n var returnFocusOptions = typeof howToReturnFocus === 'object' ? howToReturnFocus : undefined;\n originalFocusedElement.current = null;\n\n if (allowDefer) {\n // React might return focus after update\n // it's safer to defer the action\n Promise.resolve().then(function () {\n return returnFocusTo.focus(returnFocusOptions);\n });\n } else {\n returnFocusTo.focus(returnFocusOptions);\n }\n }\n }\n }, [shouldReturnFocus]); // MEDIUM CALLBACKS\n\n var onFocus = React.useCallback(function (event) {\n if (isActive.current) {\n mediumFocus.useMedium(event);\n }\n }, []);\n var onBlur = mediumBlur.useMedium; // REF PROPAGATION\n // not using real refs due to race conditions\n\n var setObserveNode = React.useCallback(function (newObserved) {\n if (observed.current !== newObserved) {\n observed.current = newObserved;\n setObserved(newObserved);\n }\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof allowTextSelection !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn('React-Focus-Lock: allowTextSelection is deprecated and enabled by default');\n }\n\n React.useEffect(function () {\n if (!observed.current) {\n // eslint-disable-next-line no-console\n console.error('FocusLock: could not obtain ref to internal node');\n }\n }, []);\n }\n\n var lockProps = _extends((_extends2 = {}, _extends2[constants.FOCUS_DISABLED] = disabled && 'disabled', _extends2[constants.FOCUS_GROUP] = group, _extends2), containerProps);\n\n var hasLeadingGuards = noFocusGuards !== true;\n var hasTailingGuards = hasLeadingGuards && noFocusGuards !== 'tail';\n var mergedRef = useMergeRefs([parentRef, setObserveNode]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, hasLeadingGuards && [\n /*#__PURE__*/\n // nearest focus guard\n React.createElement(\"div\", {\n key: \"guard-first\",\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 0,\n style: hiddenGuard\n }), // first tabbed element guard\n hasPositiveIndices ? /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-nearest\",\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 1,\n style: hiddenGuard\n }) : null], !disabled && /*#__PURE__*/React.createElement(SideCar, {\n id: id,\n sideCar: mediumSidecar,\n observed: realObserved,\n disabled: disabled,\n persistentFocus: persistentFocus,\n crossFrame: crossFrame,\n autoFocus: autoFocus,\n whiteList: whiteList,\n shards: shards,\n onActivation: onActivation,\n onDeactivation: onDeactivation,\n returnFocus: returnFocus,\n focusOptions: focusOptions\n }), /*#__PURE__*/React.createElement(Container, _extends({\n ref: mergedRef\n }, lockProps, {\n className: className,\n onBlur: onBlur,\n onFocus: onFocus\n }), children), hasTailingGuards && /*#__PURE__*/React.createElement(\"div\", {\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 0,\n style: hiddenGuard\n }));\n});\nFocusLock.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: node,\n disabled: bool,\n returnFocus: oneOfType([bool, object, func]),\n focusOptions: object,\n noFocusGuards: bool,\n hasPositiveIndices: bool,\n allowTextSelection: bool,\n autoFocus: bool,\n persistentFocus: bool,\n crossFrame: bool,\n group: string,\n className: string,\n whiteList: func,\n shards: arrayOf(any),\n as: oneOfType([string, func, object]),\n lockProps: object,\n onActivation: func,\n onDeactivation: func,\n sideCar: any.isRequired\n} : {};\nFocusLock.defaultProps = {\n children: undefined,\n disabled: false,\n returnFocus: false,\n focusOptions: undefined,\n noFocusGuards: false,\n autoFocus: true,\n persistentFocus: false,\n crossFrame: true,\n hasPositiveIndices: undefined,\n allowTextSelection: undefined,\n group: undefined,\n className: undefined,\n whiteList: undefined,\n shards: undefined,\n as: 'div',\n lockProps: {},\n onActivation: undefined,\n onDeactivation: undefined\n};\nexport default FocusLock;","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { PureComponent } from 'react';\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n handleStateChangeOnClient(state);\n }\n\n var SideEffect = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n SideEffect.peek = function peek() {\n return state;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n return SideEffect;\n };\n}\n\nexport default withSideEffect;\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import { FOCUS_NO_AUTOFOCUS } from '../constants';\nvar isElementHidden = function (node) {\n // we can measure only \"elements\"\n // consider others as \"visible\"\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false;\n }\n var computedStyle = window.getComputedStyle(node, null);\n if (!computedStyle || !computedStyle.getPropertyValue) {\n return false;\n }\n return (computedStyle.getPropertyValue('display') === 'none' || computedStyle.getPropertyValue('visibility') === 'hidden');\n};\nvar getParentNode = function (node) {\n // DOCUMENT_FRAGMENT_NODE can also point on ShadowRoot. In this case .host will point on the next node\n return node.parentNode && node.parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node.parentNode.host\n : node.parentNode;\n};\nvar isTopNode = function (node) {\n // @ts-ignore\n return node === document || (node && node.nodeType === Node.DOCUMENT_NODE);\n};\nvar isVisibleUncached = function (node, checkParent) {\n return !node || isTopNode(node) || (!isElementHidden(node) && checkParent(getParentNode(node)));\n};\nexport var isVisibleCached = function (visibilityCache, node) {\n var cached = visibilityCache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isVisibleUncached(node, isVisibleCached.bind(undefined, visibilityCache));\n visibilityCache.set(node, result);\n return result;\n};\nvar isAutoFocusAllowedUncached = function (node, checkParent) {\n return node && !isTopNode(node) ? (isAutoFocusAllowed(node) ? checkParent(getParentNode(node)) : false) : true;\n};\nexport var isAutoFocusAllowedCached = function (cache, node) {\n var cached = cache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isAutoFocusAllowedUncached(node, isAutoFocusAllowedCached.bind(undefined, cache));\n cache.set(node, result);\n return result;\n};\nexport var getDataset = function (node) {\n // @ts-ignore\n return node.dataset;\n};\nexport var isHTMLButtonElement = function (node) { return node.tagName === 'BUTTON'; };\nexport var isHTMLInputElement = function (node) { return node.tagName === 'INPUT'; };\nexport var isRadioElement = function (node) {\n return isHTMLInputElement(node) && node.type === 'radio';\n};\nexport var notHiddenInput = function (node) {\n return !((isHTMLInputElement(node) || isHTMLButtonElement(node)) && (node.type === 'hidden' || node.disabled));\n};\nexport var isAutoFocusAllowed = function (node) {\n var attribute = node.getAttribute(FOCUS_NO_AUTOFOCUS);\n return ![true, 'true', ''].includes(attribute);\n};\nexport var isGuard = function (node) { var _a; return Boolean(node && ((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.focusGuard)); };\nexport var isNotAGuard = function (node) { return !isGuard(node); };\nexport var isDefined = function (x) { return Boolean(x); };\n","import { isRadioElement } from './is';\nvar findSelectedRadio = function (node, nodes) {\n return nodes\n .filter(isRadioElement)\n .filter(function (el) { return el.name === node.name; })\n .filter(function (el) { return el.checked; })[0] || node;\n};\nexport var correctNode = function (node, nodes) {\n if (isRadioElement(node) && node.name) {\n return findSelectedRadio(node, nodes);\n }\n return node;\n};\n/**\n * giving a set of radio inputs keeps only selected (tabbable) ones\n * @param nodes\n */\nexport var correctNodes = function (nodes) {\n // IE11 has no Set(array) constructor\n var resultSet = new Set();\n nodes.forEach(function (node) { return resultSet.add(correctNode(node, nodes)); });\n // using filter to support IE11\n return nodes.filter(function (node) { return resultSet.has(node); });\n};\n","import { correctNode } from './correctFocus';\nexport var pickFirstFocus = function (nodes) {\n if (nodes[0] && nodes.length > 1) {\n return correctNode(nodes[0], nodes);\n }\n return nodes[0];\n};\nexport var pickFocusable = function (nodes, index) {\n if (nodes.length > 1) {\n return nodes.indexOf(correctNode(nodes[index], nodes));\n }\n return index;\n};\n","import { correctNodes } from './utils/correctFocus';\nimport { pickFocusable } from './utils/firstFocus';\nimport { isGuard } from './utils/is';\nexport var NEW_FOCUS = 'NEW_FOCUS';\n/**\n * Main solver for the \"find next focus\" question\n * @param innerNodes\n * @param outerNodes\n * @param activeElement\n * @param lastNode\n * @returns {number|string|undefined|*}\n */\nexport var newFocus = function (innerNodes, outerNodes, activeElement, lastNode) {\n var cnt = innerNodes.length;\n var firstFocus = innerNodes[0];\n var lastFocus = innerNodes[cnt - 1];\n var isOnGuard = isGuard(activeElement);\n // focus is inside\n if (activeElement && innerNodes.indexOf(activeElement) >= 0) {\n return undefined;\n }\n var activeIndex = activeElement !== undefined ? outerNodes.indexOf(activeElement) : -1;\n var lastIndex = lastNode ? outerNodes.indexOf(lastNode) : activeIndex;\n var lastNodeInside = lastNode ? innerNodes.indexOf(lastNode) : -1;\n var indexDiff = activeIndex - lastIndex;\n var firstNodeIndex = outerNodes.indexOf(firstFocus);\n var lastNodeIndex = outerNodes.indexOf(lastFocus);\n var correctedNodes = correctNodes(outerNodes);\n var correctedIndex = activeElement !== undefined ? correctedNodes.indexOf(activeElement) : -1;\n var correctedIndexDiff = correctedIndex - (lastNode ? correctedNodes.indexOf(lastNode) : activeIndex);\n var returnFirstNode = pickFocusable(innerNodes, 0);\n var returnLastNode = pickFocusable(innerNodes, cnt - 1);\n // new focus\n if (activeIndex === -1 || lastNodeInside === -1) {\n return NEW_FOCUS;\n }\n // old focus\n if (!indexDiff && lastNodeInside >= 0) {\n return lastNodeInside;\n }\n // first element\n if (activeIndex <= firstNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnLastNode;\n }\n // last element\n if (activeIndex >= lastNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnFirstNode;\n }\n // jump out, but not on the guard\n if (indexDiff && Math.abs(correctedIndexDiff) > 1) {\n return lastNodeInside;\n }\n // focus above lock\n if (activeIndex <= firstNodeIndex) {\n return returnLastNode;\n }\n // focus below lock\n if (activeIndex > lastNodeIndex) {\n return returnFirstNode;\n }\n // index is inside tab order, but outside Lock\n if (indexDiff) {\n if (Math.abs(indexDiff) > 1) {\n return lastNodeInside;\n }\n return (cnt + lastNodeInside + indexDiff) % cnt;\n }\n // do nothing\n return undefined;\n};\n","/*\nIE11 support\n */\nexport var toArray = function (a) {\n var ret = Array(a.length);\n for (var i = 0; i < a.length; ++i) {\n ret[i] = a[i];\n }\n return ret;\n};\nexport var asArray = function (a) { return (Array.isArray(a) ? a : [a]); };\n","import { toArray } from './array';\nexport var tabSort = function (a, b) {\n var tabDiff = a.tabIndex - b.tabIndex;\n var indexDiff = a.index - b.index;\n if (tabDiff) {\n if (!a.tabIndex) {\n return 1;\n }\n if (!b.tabIndex) {\n return -1;\n }\n }\n return tabDiff || indexDiff;\n};\nexport var orderByTabIndex = function (nodes, filterNegative, keepGuards) {\n return toArray(nodes)\n .map(function (node, index) { return ({\n node: node,\n index: index,\n tabIndex: keepGuards && node.tabIndex === -1 ? ((node.dataset || {}).focusGuard ? 0 : -1) : node.tabIndex,\n }); })\n .filter(function (data) { return !filterNegative || data.tabIndex >= 0; })\n .sort(tabSort);\n};\n","import { FOCUS_AUTO } from '../constants';\nimport { toArray } from './array';\nimport { tabbables } from './tabbables';\nvar queryTabbables = tabbables.join(',');\nvar queryGuardTabbables = \"\".concat(queryTabbables, \", [data-focus-guard]\");\nvar getFocusablesWithShadowDom = function (parent, withGuards) {\n var _a;\n return toArray(((_a = parent.shadowRoot) === null || _a === void 0 ? void 0 : _a.children) || parent.children).reduce(function (acc, child) {\n return acc.concat(child.matches(withGuards ? queryGuardTabbables : queryTabbables) ? [child] : [], getFocusablesWithShadowDom(child));\n }, []);\n};\nexport var getFocusables = function (parents, withGuards) {\n return parents.reduce(function (acc, parent) {\n return acc.concat(\n // add all tabbables inside and within shadow DOMs in DOM order\n getFocusablesWithShadowDom(parent, withGuards), \n // add if node is tabbable itself\n parent.parentNode\n ? toArray(parent.parentNode.querySelectorAll(queryTabbables)).filter(function (node) { return node === parent; })\n : []);\n }, []);\n};\n/**\n * return a list of focusable nodes within an area marked as \"auto-focusable\"\n * @param parent\n */\nexport var getParentAutofocusables = function (parent) {\n var parentFocus = parent.querySelectorAll(\"[\".concat(FOCUS_AUTO, \"]\"));\n return toArray(parentFocus)\n .map(function (node) { return getFocusables([node]); })\n .reduce(function (acc, nodes) { return acc.concat(nodes); }, []);\n};\n","/**\n * list of the object to be considered as focusable\n */\nexport var tabbables = [\n 'button:enabled',\n 'select:enabled',\n 'textarea:enabled',\n 'input:enabled',\n // elements with explicit roles will also use explicit tabindex\n // '[role=\"button\"]',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[tabindex]',\n '[contenteditable]',\n '[autofocus]',\n];\n","import { toArray } from './array';\nimport { isAutoFocusAllowedCached, isVisibleCached, notHiddenInput } from './is';\nimport { orderByTabIndex } from './tabOrder';\nimport { getFocusables, getParentAutofocusables } from './tabUtils';\n/**\n * given list of focusable elements keeps the ones user can interact with\n * @param nodes\n * @param visibilityCache\n */\nexport var filterFocusable = function (nodes, visibilityCache) {\n return toArray(nodes)\n .filter(function (node) { return isVisibleCached(visibilityCache, node); })\n .filter(function (node) { return notHiddenInput(node); });\n};\nexport var filterAutoFocusable = function (nodes, cache) {\n if (cache === void 0) { cache = new Map(); }\n return toArray(nodes).filter(function (node) { return isAutoFocusAllowedCached(cache, node); });\n};\n/**\n * only tabbable ones\n * (but with guards which would be ignored)\n */\nexport var getTabbableNodes = function (topNodes, visibilityCache, withGuards) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes, withGuards), visibilityCache), true, withGuards);\n};\n/**\n * actually anything \"focusable\", not only tabbable\n * (without guards, as long as they are not expected to be focused)\n */\nexport var getAllTabbableNodes = function (topNodes, visibilityCache) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes), visibilityCache), false);\n};\n/**\n * return list of nodes which are expected to be auto-focused\n * @param topNode\n * @param visibilityCache\n */\nexport var parentAutofocusables = function (topNode, visibilityCache) {\n return filterFocusable(getParentAutofocusables(topNode), visibilityCache);\n};\n/*\n * Determines if element is contained in scope, including nested shadow DOMs\n */\nexport var contains = function (scope, element) {\n return ((scope.shadowRoot\n ? contains(scope.shadowRoot, element)\n : Object.getPrototypeOf(scope).contains.call(scope, element)) ||\n toArray(scope.children).some(function (child) { return contains(child, element); }));\n};\n","import { FOCUS_DISABLED, FOCUS_GROUP } from '../constants';\nimport { asArray, toArray } from './array';\n/**\n * in case of multiple nodes nested inside each other\n * keeps only top ones\n * this is O(nlogn)\n * @param nodes\n * @returns {*}\n */\nvar filterNested = function (nodes) {\n var contained = new Set();\n var l = nodes.length;\n for (var i = 0; i < l; i += 1) {\n for (var j = i + 1; j < l; j += 1) {\n var position = nodes[i].compareDocumentPosition(nodes[j]);\n /* eslint-disable no-bitwise */\n if ((position & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0) {\n contained.add(j);\n }\n if ((position & Node.DOCUMENT_POSITION_CONTAINS) > 0) {\n contained.add(i);\n }\n /* eslint-enable */\n }\n }\n return nodes.filter(function (_, index) { return !contained.has(index); });\n};\n/**\n * finds top most parent for a node\n * @param node\n * @returns {*}\n */\nvar getTopParent = function (node) {\n return node.parentNode ? getTopParent(node.parentNode) : node;\n};\n/**\n * returns all \"focus containers\" inside a given node\n * @param node\n * @returns {T}\n */\nexport var getAllAffectedNodes = function (node) {\n var nodes = asArray(node);\n return nodes.filter(Boolean).reduce(function (acc, currentNode) {\n var group = currentNode.getAttribute(FOCUS_GROUP);\n acc.push.apply(acc, (group\n ? filterNested(toArray(getTopParent(currentNode).querySelectorAll(\"[\".concat(FOCUS_GROUP, \"=\\\"\").concat(group, \"\\\"]:not([\").concat(FOCUS_DISABLED, \"=\\\"disabled\\\"])\"))))\n : [currentNode]));\n return acc;\n }, []);\n};\n","var getNestedShadowActiveElement = function (shadowRoot) {\n return shadowRoot.activeElement\n ? shadowRoot.activeElement.shadowRoot\n ? getNestedShadowActiveElement(shadowRoot.activeElement.shadowRoot)\n : shadowRoot.activeElement\n : undefined;\n};\n/**\n * returns active element from document or from nested shadowdoms\n */\nexport var getActiveElement = function () {\n return (document.activeElement\n ? document.activeElement.shadowRoot\n ? getNestedShadowActiveElement(document.activeElement.shadowRoot)\n : document.activeElement\n : undefined); // eslint-disable-next-line @typescript-eslint/no-explicit-any\n};\n","import { parentAutofocusables } from './DOMutils';\nimport { contains } from './DOMutils';\nimport { asArray } from './array';\nvar getParents = function (node, parents) {\n if (parents === void 0) { parents = []; }\n parents.push(node);\n if (node.parentNode) {\n getParents(node.parentNode.host || node.parentNode, parents);\n }\n return parents;\n};\n/**\n * finds a parent for both nodeA and nodeB\n * @param nodeA\n * @param nodeB\n * @returns {boolean|*}\n */\nexport var getCommonParent = function (nodeA, nodeB) {\n var parentsA = getParents(nodeA);\n var parentsB = getParents(nodeB);\n // tslint:disable-next-line:prefer-for-of\n for (var i = 0; i < parentsA.length; i += 1) {\n var currentParent = parentsA[i];\n if (parentsB.indexOf(currentParent) >= 0) {\n return currentParent;\n }\n }\n return false;\n};\nexport var getTopCommonParent = function (baseActiveElement, leftEntry, rightEntries) {\n var activeElements = asArray(baseActiveElement);\n var leftEntries = asArray(leftEntry);\n var activeElement = activeElements[0];\n var topCommon = false;\n leftEntries.filter(Boolean).forEach(function (entry) {\n topCommon = getCommonParent(topCommon || entry, entry) || topCommon;\n rightEntries.filter(Boolean).forEach(function (subEntry) {\n var common = getCommonParent(activeElement, subEntry);\n if (common) {\n if (!topCommon || contains(common, topCommon)) {\n topCommon = common;\n }\n else {\n topCommon = getCommonParent(common, topCommon);\n }\n }\n });\n });\n // TODO: add assert here?\n return topCommon;\n};\n/**\n * return list of nodes which are expected to be autofocused inside a given top nodes\n * @param entries\n * @param visibilityCache\n */\nexport var allParentAutofocusables = function (entries, visibilityCache) {\n return entries.reduce(function (acc, node) { return acc.concat(parentAutofocusables(node, visibilityCache)); }, []);\n};\n","import { NEW_FOCUS, newFocus } from './solver';\nimport { filterAutoFocusable, getAllTabbableNodes, getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { pickFirstFocus } from './utils/firstFocus';\nimport { getActiveElement } from './utils/getActiveElement';\nimport { getDataset, isDefined, isNotAGuard } from './utils/is';\nimport { allParentAutofocusables, getTopCommonParent } from './utils/parenting';\nvar findAutoFocused = function (autoFocusables) {\n return function (node) { var _a; \n // @ts-expect-error\n return node.autofocus || !!((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.autofocus) || autoFocusables.indexOf(node) >= 0; };\n};\nvar reorderNodes = function (srcNodes, dstNodes) {\n var remap = new Map();\n // no Set(dstNodes) for IE11 :(\n dstNodes.forEach(function (entity) { return remap.set(entity.node, entity); });\n // remap to dstNodes\n return srcNodes.map(function (node) { return remap.get(node); }).filter(isDefined);\n};\n/**\n * given top node(s) and the last active element return the element to be focused next\n * @param topNode\n * @param lastNode\n */\nexport var getFocusMerge = function (topNode, lastNode) {\n var activeElement = document && getActiveElement();\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(activeElement || topNode, topNode, entries);\n var visibilityCache = new Map();\n var anyFocusable = getAllTabbableNodes(entries, visibilityCache);\n var innerElements = getTabbableNodes(entries, visibilityCache).filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n });\n if (!innerElements[0]) {\n innerElements = anyFocusable;\n if (!innerElements[0]) {\n return undefined;\n }\n }\n var outerNodes = getAllTabbableNodes([commonParent], visibilityCache).map(function (_a) {\n var node = _a.node;\n return node;\n });\n var orderedInnerElements = reorderNodes(outerNodes, innerElements);\n var innerNodes = orderedInnerElements.map(function (_a) {\n var node = _a.node;\n return node;\n });\n var newId = newFocus(innerNodes, outerNodes, activeElement, lastNode);\n if (newId === NEW_FOCUS) {\n var autoFocusable = filterAutoFocusable(anyFocusable.map(function (_a) {\n var node = _a.node;\n return node;\n })).filter(findAutoFocused(allParentAutofocusables(entries, visibilityCache)));\n return {\n node: autoFocusable && autoFocusable.length\n ? pickFirstFocus(autoFocusable)\n : pickFirstFocus(filterAutoFocusable(innerNodes)),\n };\n }\n if (newId === undefined) {\n return newId;\n }\n return orderedInnerElements[newId];\n};\n","import { getFocusMerge } from './focusMerge';\nexport var focusOn = function (target, focusOptions) {\n if ('focus' in target) {\n target.focus(focusOptions);\n }\n if ('contentWindow' in target && target.contentWindow) {\n target.contentWindow.focus();\n }\n};\nvar guardCount = 0;\nvar lockDisabled = false;\n/**\n * Sets focus at a given node. The last focused element will help to determine which element(first or last) should be focused.\n * HTML markers (see {@link import('./constants').FOCUS_AUTO} constants) can control autofocus\n * @param topNode\n * @param lastNode\n * @param options\n */\nexport var setFocus = function (topNode, lastNode, options) {\n if (options === void 0) { options = {}; }\n var focusable = getFocusMerge(topNode, lastNode);\n if (lockDisabled) {\n return;\n }\n if (focusable) {\n if (guardCount > 2) {\n // tslint:disable-next-line:no-console\n console.error('FocusLock: focus-fighting detected. Only one focus management system could be active. ' +\n 'See https://github.com/theKashey/focus-lock/#focus-fighting');\n lockDisabled = true;\n setTimeout(function () {\n lockDisabled = false;\n }, 1);\n return;\n }\n guardCount++;\n focusOn(focusable.node, options.focusOptions);\n guardCount--;\n }\n};\n","import * as constants from './constants';\nimport { focusInside } from './focusInside';\nimport { focusIsHidden } from './focusIsHidden';\nimport { getFocusMerge as focusMerge } from './focusMerge';\nimport { getFocusabledIn, getFocusableIn } from './focusables';\nimport { setFocus } from './setFocus';\nimport { focusNextElement, focusPrevElement } from './sibling';\nimport tabHook from './tabHook';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { getActiveElement } from './utils/getActiveElement';\nexport { tabHook, focusInside, focusIsHidden, focusMerge, getFocusableIn, getFocusabledIn, constants, getAllAffectedNodes, focusNextElement, focusPrevElement, getActiveElement, };\nexport default setFocus;\n//\n","import { FOCUS_ALLOW } from './constants';\nimport { contains } from './utils/DOMutils';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\n/**\n * focus is hidden FROM the focus-lock\n * ie contained inside a node focus-lock shall ignore\n * @returns {boolean} focus is currently is in \"allow\" area\n */\nexport var focusIsHidden = function () {\n var activeElement = document && getActiveElement();\n if (!activeElement) {\n return false;\n }\n // this does not support setting FOCUS_ALLOW within shadow dom\n return toArray(document.querySelectorAll(\"[\".concat(FOCUS_ALLOW, \"]\"))).some(function (node) { return contains(node, activeElement); });\n};\n","import { contains } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\nvar focusInFrame = function (frame) { return frame === document.activeElement; };\nvar focusInsideIframe = function (topNode) {\n return Boolean(toArray(topNode.querySelectorAll('iframe')).some(function (node) { return focusInFrame(node); }));\n};\n/**\n * @returns {Boolean} true, if the current focus is inside given node or nodes\n */\nexport var focusInside = function (topNode) {\n var activeElement = document && getActiveElement();\n if (!activeElement || (activeElement.dataset && activeElement.dataset.focusGuard)) {\n return false;\n }\n return getAllAffectedNodes(topNode).some(function (node) { return contains(node, activeElement) || focusInsideIframe(node); });\n};\n","import { getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { isGuard, isNotAGuard } from './utils/is';\nimport { getTopCommonParent } from './utils/parenting';\n/**\n * return list of focusable elements inside a given top node\n * @deprecated use {@link getFocusableIn}. Yep, there is typo in the function name\n */\nexport var getFocusabledIn = function (topNode) {\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(topNode, topNode, entries);\n var visibilityCache = new Map();\n var outerNodes = getTabbableNodes([commonParent], visibilityCache, true);\n var innerElements = getTabbableNodes(entries, visibilityCache)\n .filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n })\n .map(function (_a) {\n var node = _a.node;\n return node;\n });\n return outerNodes.map(function (_a) {\n var node = _a.node, index = _a.index;\n return ({\n node: node,\n index: index,\n lockItem: innerElements.indexOf(node) >= 0,\n guard: isGuard(node),\n });\n });\n};\n/**\n * return list of focusable elements inside a given top node\n */\nexport var getFocusableIn = getFocusabledIn;\n","export function deferAction(action) {\n // Hidding setImmediate from Webpack to avoid inserting polyfill\n var _window = window,\n setImmediate = _window.setImmediate;\n\n if (typeof setImmediate !== 'undefined') {\n setImmediate(action);\n } else {\n setTimeout(action, 1);\n }\n}\nexport var inlineProp = function inlineProp(name, value) {\n var obj = {};\n obj[name] = value;\n return obj;\n};","/* eslint-disable no-mixed-operators */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport withSideEffect from 'react-clientside-effect';\nimport moveFocusInside, { focusInside, focusIsHidden, getFocusabledIn } from 'focus-lock';\nimport { deferAction } from './util';\nimport { mediumFocus, mediumBlur, mediumEffect } from './medium';\n\nvar focusOnBody = function focusOnBody() {\n return document && document.activeElement === document.body;\n};\n\nvar isFreeFocus = function isFreeFocus() {\n return focusOnBody() || focusIsHidden();\n};\n\nvar lastActiveTrap = null;\nvar lastActiveFocus = null;\nvar lastPortaledElement = null;\nvar focusWasOutsideWindow = false;\n\nvar defaultWhitelist = function defaultWhitelist() {\n return true;\n};\n\nvar focusWhitelisted = function focusWhitelisted(activeElement) {\n return (lastActiveTrap.whiteList || defaultWhitelist)(activeElement);\n};\n\nvar recordPortal = function recordPortal(observerNode, portaledElement) {\n lastPortaledElement = {\n observerNode: observerNode,\n portaledElement: portaledElement\n };\n};\n\nvar focusIsPortaledPair = function focusIsPortaledPair(element) {\n return lastPortaledElement && lastPortaledElement.portaledElement === element;\n};\n\nfunction autoGuard(startIndex, end, step, allNodes) {\n var lastGuard = null;\n var i = startIndex;\n\n do {\n var item = allNodes[i];\n\n if (item.guard) {\n if (item.node.dataset.focusAutoGuard) {\n lastGuard = item;\n }\n } else if (item.lockItem) {\n if (i !== startIndex) {\n // we will tab to the next element\n return;\n }\n\n lastGuard = null;\n } else {\n break;\n }\n } while ((i += step) !== end);\n\n if (lastGuard) {\n lastGuard.node.tabIndex = 0;\n }\n}\n\nvar extractRef = function extractRef(ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\n\nvar focusWasOutside = function focusWasOutside(crossFrameOption) {\n if (crossFrameOption) {\n // with cross frame return true for any value\n return Boolean(focusWasOutsideWindow);\n } // in other case return only of focus went a while aho\n\n\n return focusWasOutsideWindow === 'meanwhile';\n};\n\nvar checkInHost = function checkInHost(check, el, boundary) {\n return el && ( // find host equal to active element and check nested active element\n el.host === check && (!el.activeElement || boundary.contains(el.activeElement)) // dive up\n || el.parentNode && checkInHost(check, el.parentNode, boundary));\n};\n\nvar withinHost = function withinHost(activeElement, workingArea) {\n return workingArea.some(function (area) {\n return checkInHost(activeElement, area, area);\n });\n};\n\nvar activateTrap = function activateTrap() {\n var result = false;\n\n if (lastActiveTrap) {\n var _lastActiveTrap = lastActiveTrap,\n observed = _lastActiveTrap.observed,\n persistentFocus = _lastActiveTrap.persistentFocus,\n autoFocus = _lastActiveTrap.autoFocus,\n shards = _lastActiveTrap.shards,\n crossFrame = _lastActiveTrap.crossFrame,\n focusOptions = _lastActiveTrap.focusOptions;\n var workingNode = observed || lastPortaledElement && lastPortaledElement.portaledElement;\n var activeElement = document && document.activeElement;\n\n if (workingNode) {\n var workingArea = [workingNode].concat(shards.map(extractRef).filter(Boolean));\n\n if (!activeElement || focusWhitelisted(activeElement)) {\n if (persistentFocus || focusWasOutside(crossFrame) || !isFreeFocus() || !lastActiveFocus && autoFocus) {\n if (workingNode && !( // active element is \"inside\" working area\n focusInside(workingArea) || // check for shadow-dom contained elements\n activeElement && withinHost(activeElement, workingArea) || focusIsPortaledPair(activeElement, workingNode))) {\n if (document && !lastActiveFocus && activeElement && !autoFocus) {\n // Check if blur() exists, which is missing on certain elements on IE\n if (activeElement.blur) {\n activeElement.blur();\n }\n\n document.body.focus();\n } else {\n result = moveFocusInside(workingArea, lastActiveFocus, {\n focusOptions: focusOptions\n });\n lastPortaledElement = {};\n }\n }\n\n focusWasOutsideWindow = false;\n lastActiveFocus = document && document.activeElement;\n }\n }\n\n if (document) {\n var newActiveElement = document && document.activeElement;\n var allNodes = getFocusabledIn(workingArea);\n var focusedIndex = allNodes.map(function (_ref) {\n var node = _ref.node;\n return node;\n }).indexOf(newActiveElement);\n\n if (focusedIndex > -1) {\n // remove old focus\n allNodes.filter(function (_ref2) {\n var guard = _ref2.guard,\n node = _ref2.node;\n return guard && node.dataset.focusAutoGuard;\n }).forEach(function (_ref3) {\n var node = _ref3.node;\n return node.removeAttribute('tabIndex');\n });\n autoGuard(focusedIndex, allNodes.length, +1, allNodes);\n autoGuard(focusedIndex, -1, -1, allNodes);\n }\n }\n }\n }\n\n return result;\n};\n\nvar onTrap = function onTrap(event) {\n if (activateTrap() && event) {\n // prevent scroll jump\n event.stopPropagation();\n event.preventDefault();\n }\n};\n\nvar onBlur = function onBlur() {\n return deferAction(activateTrap);\n};\n\nvar onFocus = function onFocus(event) {\n // detect portal\n var source = event.target;\n var currentNode = event.currentTarget;\n\n if (!currentNode.contains(source)) {\n recordPortal(currentNode, source);\n }\n};\n\nvar FocusWatcher = function FocusWatcher() {\n return null;\n};\n\nvar FocusTrap = function FocusTrap(_ref4) {\n var children = _ref4.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n onBlur: onBlur,\n onFocus: onFocus\n }, children);\n};\n\nFocusTrap.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.node.isRequired\n} : {};\n\nvar onWindowBlur = function onWindowBlur() {\n focusWasOutsideWindow = 'just'; // using setTimeout to set this variable after React/sidecar reaction\n\n setTimeout(function () {\n focusWasOutsideWindow = 'meanwhile';\n }, 0);\n};\n\nvar attachHandler = function attachHandler() {\n document.addEventListener('focusin', onTrap);\n document.addEventListener('focusout', onBlur);\n window.addEventListener('blur', onWindowBlur);\n};\n\nvar detachHandler = function detachHandler() {\n document.removeEventListener('focusin', onTrap);\n document.removeEventListener('focusout', onBlur);\n window.removeEventListener('blur', onWindowBlur);\n};\n\nfunction reducePropsToState(propsList) {\n return propsList.filter(function (_ref5) {\n var disabled = _ref5.disabled;\n return !disabled;\n });\n}\n\nfunction handleStateChangeOnClient(traps) {\n var trap = traps.slice(-1)[0];\n\n if (trap && !lastActiveTrap) {\n attachHandler();\n }\n\n var lastTrap = lastActiveTrap;\n var sameTrap = lastTrap && trap && trap.id === lastTrap.id;\n lastActiveTrap = trap;\n\n if (lastTrap && !sameTrap) {\n lastTrap.onDeactivation(); // return focus only of last trap was removed\n\n if (!traps.filter(function (_ref6) {\n var id = _ref6.id;\n return id === lastTrap.id;\n }).length) {\n // allow defer is no other trap is awaiting restore\n lastTrap.returnFocus(!trap);\n }\n }\n\n if (trap) {\n lastActiveFocus = null;\n\n if (!sameTrap || lastTrap.observed !== trap.observed) {\n trap.onActivation();\n }\n\n activateTrap(true);\n deferAction(activateTrap);\n } else {\n detachHandler();\n lastActiveFocus = null;\n }\n} // bind medium\n\n\nmediumFocus.assignSyncMedium(onFocus);\nmediumBlur.assignMedium(onBlur);\nmediumEffect.assignMedium(function (cb) {\n return cb({\n moveFocusInside: moveFocusInside,\n focusInside: focusInside\n });\n});\nexport default withSideEffect(reducePropsToState, handleStateChangeOnClient)(FocusWatcher);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport FocusLockUI from './Lock';\nimport FocusTrap from './Trap';\n/* that would be a BREAKING CHANGE!\n// delaying sidecar execution till the first usage\nconst RequireSideCar = (props) => {\n // eslint-disable-next-line global-require\n const SideCar = require('./Trap').default;\n return <SideCar {...props} />;\n};\n*/\n\nvar FocusLockCombination = /*#__PURE__*/React.forwardRef(function FocusLockUICombination(props, ref) {\n return /*#__PURE__*/React.createElement(FocusLockUI, _extends({\n sideCar: FocusTrap,\n ref: ref\n }, props));\n});\n\nvar _ref = FocusLockUI.propTypes || {},\n sideCar = _ref.sideCar,\n propTypes = _objectWithoutPropertiesLoose(_ref, [\"sideCar\"]);\n\nFocusLockCombination.propTypes = process.env.NODE_ENV !== \"production\" ? propTypes : {};\nexport default FocusLockCombination;","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import FocusLock from './Combination';\nexport * from './UI';\nexport default FocusLock;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.I18nextProvider = I18nextProvider;\n\nvar _react = require(\"react\");\n\nvar _context = require(\"./context.js\");\n\nfunction I18nextProvider(_ref) {\n var i18n = _ref.i18n,\n defaultNS = _ref.defaultNS,\n children = _ref.children;\n var value = (0, _react.useMemo)(function () {\n return {\n i18n: i18n,\n defaultNS: defaultNS\n };\n }, [i18n, defaultNS]);\n return (0, _react.createElement)(_context.I18nContext.Provider, {\n value: value\n }, children);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Trans = Trans;\nObject.defineProperty(exports, \"nodesToString\", {\n enumerable: true,\n get: function get() {\n return _TransWithoutContext.nodesToString;\n }\n});\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _react = require(\"react\");\n\nvar _TransWithoutContext = require(\"./TransWithoutContext.js\");\n\nvar _context = require(\"./context.js\");\n\nvar _excluded = [\"children\", \"count\", \"parent\", \"i18nKey\", \"context\", \"tOptions\", \"values\", \"defaults\", \"components\", \"ns\", \"i18n\", \"t\", \"shouldUnescape\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction Trans(_ref) {\n var children = _ref.children,\n count = _ref.count,\n parent = _ref.parent,\n i18nKey = _ref.i18nKey,\n context = _ref.context,\n _ref$tOptions = _ref.tOptions,\n tOptions = _ref$tOptions === void 0 ? {} : _ref$tOptions,\n values = _ref.values,\n defaults = _ref.defaults,\n components = _ref.components,\n ns = _ref.ns,\n i18nFromProps = _ref.i18n,\n tFromProps = _ref.t,\n shouldUnescape = _ref.shouldUnescape,\n additionalProps = (0, _objectWithoutProperties2[\"default\"])(_ref, _excluded);\n\n var _ref2 = (0, _react.useContext)(_context.I18nContext) || {},\n i18nFromContext = _ref2.i18n,\n defaultNSFromContext = _ref2.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || (0, _context.getI18n)();\n\n var t = tFromProps || i18n.t.bind(i18n) || function (k) {\n return k;\n };\n\n return (0, _TransWithoutContext.Trans)(_objectSpread({\n children: children,\n count: count,\n parent: parent,\n i18nKey: i18nKey,\n context: context,\n tOptions: tOptions,\n values: values,\n defaults: defaults,\n components: components,\n ns: ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS,\n i18n: i18n,\n t: tFromProps,\n shouldUnescape: shouldUnescape\n }, additionalProps));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.nodesToString = nodesToString;\nexports.Trans = Trans;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _react = require(\"react\");\n\nvar _htmlParseStringify = _interopRequireDefault(require(\"html-parse-stringify\"));\n\nvar _utils = require(\"./utils.js\");\n\nvar _defaults = require(\"./defaults.js\");\n\nvar _i18nInstance = require(\"./i18nInstance.js\");\n\nvar _excluded = [\"format\"],\n _excluded2 = [\"children\", \"count\", \"parent\", \"i18nKey\", \"context\", \"tOptions\", \"values\", \"defaults\", \"components\", \"ns\", \"i18n\", \"t\", \"shouldUnescape\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction hasChildren(node, checkLength) {\n if (!node) return false;\n var base = node.props ? node.props.children : node.children;\n if (checkLength) return base.length > 0;\n return !!base;\n}\n\nfunction getChildren(node) {\n if (!node) return [];\n return node.props ? node.props.children : node.children;\n}\n\nfunction hasValidReactChildren(children) {\n if (Object.prototype.toString.call(children) !== '[object Array]') return false;\n return children.every(function (child) {\n return (0, _react.isValidElement)(child);\n });\n}\n\nfunction getAsArray(data) {\n return Array.isArray(data) ? data : [data];\n}\n\nfunction mergeProps(source, target) {\n var newTarget = _objectSpread({}, target);\n\n newTarget.props = Object.assign(source.props, target.props);\n return newTarget;\n}\n\nfunction nodesToString(children, i18nOptions) {\n if (!children) return '';\n var stringNode = '';\n var childrenArray = getAsArray(children);\n var keepArray = i18nOptions.transSupportBasicHtmlNodes && i18nOptions.transKeepBasicHtmlNodesFor ? i18nOptions.transKeepBasicHtmlNodesFor : [];\n childrenArray.forEach(function (child, childIndex) {\n if (typeof child === 'string') {\n stringNode += \"\".concat(child);\n } else if ((0, _react.isValidElement)(child)) {\n var childPropsCount = Object.keys(child.props).length;\n var shouldKeepChild = keepArray.indexOf(child.type) > -1;\n var childChildren = child.props.children;\n\n if (!childChildren && shouldKeepChild && childPropsCount === 0) {\n stringNode += \"<\".concat(child.type, \"/>\");\n } else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) {\n stringNode += \"<\".concat(childIndex, \"></\").concat(childIndex, \">\");\n } else if (child.props.i18nIsDynamicList) {\n stringNode += \"<\".concat(childIndex, \"></\").concat(childIndex, \">\");\n } else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === 'string') {\n stringNode += \"<\".concat(child.type, \">\").concat(childChildren, \"</\").concat(child.type, \">\");\n } else {\n var content = nodesToString(childChildren, i18nOptions);\n stringNode += \"<\".concat(childIndex, \">\").concat(content, \"</\").concat(childIndex, \">\");\n }\n } else if (child === null) {\n (0, _utils.warn)(\"Trans: the passed in value is invalid - seems you passed in a null child.\");\n } else if ((0, _typeof2[\"default\"])(child) === 'object') {\n var format = child.format,\n clone = (0, _objectWithoutProperties2[\"default\"])(child, _excluded);\n var keys = Object.keys(clone);\n\n if (keys.length === 1) {\n var value = format ? \"\".concat(keys[0], \", \").concat(format) : keys[0];\n stringNode += \"{{\".concat(value, \"}}\");\n } else {\n (0, _utils.warn)(\"react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.\", child);\n }\n } else {\n (0, _utils.warn)(\"Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.\", child);\n }\n });\n return stringNode;\n}\n\nfunction renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) {\n if (targetString === '') return [];\n var keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];\n var emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.join('|')).test(targetString);\n if (!children && !emptyChildrenButNeedsHandling) return [targetString];\n var data = {};\n\n function getData(childs) {\n var childrenArray = getAsArray(childs);\n childrenArray.forEach(function (child) {\n if (typeof child === 'string') return;\n if (hasChildren(child)) getData(getChildren(child));else if ((0, _typeof2[\"default\"])(child) === 'object' && !(0, _react.isValidElement)(child)) Object.assign(data, child);\n });\n }\n\n getData(children);\n\n var ast = _htmlParseStringify[\"default\"].parse(\"<0>\".concat(targetString, \"</0>\"));\n\n var opts = _objectSpread(_objectSpread({}, data), combinedTOpts);\n\n function renderInner(child, node, rootReactNode) {\n var childs = getChildren(child);\n var mappedChildren = mapAST(childs, node.children, rootReactNode);\n return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;\n }\n\n function pushTranslatedJSX(child, inner, mem, i, isVoid) {\n if (child.dummy) child.children = inner;\n mem.push((0, _react.cloneElement)(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n }), isVoid ? undefined : inner));\n }\n\n function mapAST(reactNode, astNode, rootReactNode) {\n var reactNodes = getAsArray(reactNode);\n var astNodes = getAsArray(astNode);\n return astNodes.reduce(function (mem, node, i) {\n var translationContent = node.children && node.children[0] && node.children[0].content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);\n\n if (node.type === 'tag') {\n var tmp = reactNodes[parseInt(node.name, 10)];\n if (!tmp && rootReactNode.length === 1 && rootReactNode[0][node.name]) tmp = rootReactNode[0][node.name];\n if (!tmp) tmp = {};\n var child = Object.keys(node.attrs).length !== 0 ? mergeProps({\n props: node.attrs\n }, tmp) : tmp;\n var isElement = (0, _react.isValidElement)(child);\n var isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;\n var isEmptyTransWithHTML = emptyChildrenButNeedsHandling && (0, _typeof2[\"default\"])(child) === 'object' && child.dummy && !isElement;\n var isKnownComponent = (0, _typeof2[\"default\"])(children) === 'object' && children !== null && Object.hasOwnProperty.call(children, node.name);\n\n if (typeof child === 'string') {\n var value = i18n.services.interpolator.interpolate(child, opts, i18n.language);\n mem.push(value);\n } else if (hasChildren(child) || isValidTranslationWithChildren) {\n var inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (isEmptyTransWithHTML) {\n var _inner = mapAST(reactNodes, node.children, rootReactNode);\n\n mem.push((0, _react.cloneElement)(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n }), _inner));\n } else if (Number.isNaN(parseFloat(node.name))) {\n if (isKnownComponent) {\n var _inner2 = renderInner(child, node, rootReactNode);\n\n pushTranslatedJSX(child, _inner2, mem, i, node.voidElement);\n } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {\n if (node.voidElement) {\n mem.push((0, _react.createElement)(node.name, {\n key: \"\".concat(node.name, \"-\").concat(i)\n }));\n } else {\n var _inner3 = mapAST(reactNodes, node.children, rootReactNode);\n\n mem.push((0, _react.createElement)(node.name, {\n key: \"\".concat(node.name, \"-\").concat(i)\n }, _inner3));\n }\n } else if (node.voidElement) {\n mem.push(\"<\".concat(node.name, \" />\"));\n } else {\n var _inner4 = mapAST(reactNodes, node.children, rootReactNode);\n\n mem.push(\"<\".concat(node.name, \">\").concat(_inner4, \"</\").concat(node.name, \">\"));\n }\n } else if ((0, _typeof2[\"default\"])(child) === 'object' && !isElement) {\n var content = node.children[0] ? translationContent : null;\n if (content) mem.push(content);\n } else if (node.children.length === 1 && translationContent) {\n mem.push((0, _react.cloneElement)(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n }), translationContent));\n } else {\n mem.push((0, _react.cloneElement)(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n })));\n }\n } else if (node.type === 'text') {\n var wrapTextNodes = i18nOptions.transWrapTextNodes;\n\n var _content = shouldUnescape ? i18nOptions.unescape(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);\n\n if (wrapTextNodes) {\n mem.push((0, _react.createElement)(wrapTextNodes, {\n key: \"\".concat(node.name, \"-\").concat(i)\n }, _content));\n } else {\n mem.push(_content);\n }\n }\n\n return mem;\n }, []);\n }\n\n var result = mapAST([{\n dummy: true,\n children: children || []\n }], ast, getAsArray(children || []));\n return getChildren(result[0]);\n}\n\nfunction Trans(_ref) {\n var children = _ref.children,\n count = _ref.count,\n parent = _ref.parent,\n i18nKey = _ref.i18nKey,\n context = _ref.context,\n _ref$tOptions = _ref.tOptions,\n tOptions = _ref$tOptions === void 0 ? {} : _ref$tOptions,\n values = _ref.values,\n defaults = _ref.defaults,\n components = _ref.components,\n ns = _ref.ns,\n i18nFromProps = _ref.i18n,\n tFromProps = _ref.t,\n shouldUnescape = _ref.shouldUnescape,\n additionalProps = (0, _objectWithoutProperties2[\"default\"])(_ref, _excluded2);\n var i18n = i18nFromProps || (0, _i18nInstance.getI18n)();\n\n if (!i18n) {\n (0, _utils.warnOnce)('You will need to pass in an i18next instance by using i18nextReactModule');\n return children;\n }\n\n var t = tFromProps || i18n.t.bind(i18n) || function (k) {\n return k;\n };\n\n if (context) tOptions.context = context;\n\n var reactI18nextOptions = _objectSpread(_objectSpread({}, (0, _defaults.getDefaults)()), i18n.options && i18n.options.react);\n\n var namespaces = ns || t.ns || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n var defaultValue = defaults || nodesToString(children, reactI18nextOptions) || reactI18nextOptions.transEmptyNodeValue || i18nKey;\n var hashTransKey = reactI18nextOptions.hashTransKey;\n var key = i18nKey || (hashTransKey ? hashTransKey(defaultValue) : defaultValue);\n var interpolationOverride = values ? tOptions.interpolation : {\n interpolation: _objectSpread(_objectSpread({}, tOptions.interpolation), {}, {\n prefix: '#$?',\n suffix: '?$#'\n })\n };\n\n var combinedTOpts = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, tOptions), {}, {\n count: count\n }, values), interpolationOverride), {}, {\n defaultValue: defaultValue,\n ns: namespaces\n });\n\n var translation = key ? t(key, combinedTOpts) : defaultValue;\n var content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape);\n var useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent;\n return useAsParent ? (0, _react.createElement)(useAsParent, additionalProps, content) : content;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Translation = Translation;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _useTranslation3 = require(\"./useTranslation.js\");\n\nvar _excluded = [\"ns\", \"children\"];\n\nfunction Translation(props) {\n var ns = props.ns,\n children = props.children,\n options = (0, _objectWithoutProperties2[\"default\"])(props, _excluded);\n\n var _useTranslation = (0, _useTranslation3.useTranslation)(ns, options),\n _useTranslation2 = (0, _slicedToArray2[\"default\"])(_useTranslation, 3),\n t = _useTranslation2[0],\n i18n = _useTranslation2[1],\n ready = _useTranslation2[2];\n\n return children(t, {\n i18n: i18n,\n lng: i18n.language\n }, ready);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.composeInitialProps = composeInitialProps;\nexports.getInitialProps = getInitialProps;\nObject.defineProperty(exports, \"getDefaults\", {\n enumerable: true,\n get: function get() {\n return _defaults.getDefaults;\n }\n});\nObject.defineProperty(exports, \"setDefaults\", {\n enumerable: true,\n get: function get() {\n return _defaults.setDefaults;\n }\n});\nObject.defineProperty(exports, \"getI18n\", {\n enumerable: true,\n get: function get() {\n return _i18nInstance.getI18n;\n }\n});\nObject.defineProperty(exports, \"setI18n\", {\n enumerable: true,\n get: function get() {\n return _i18nInstance.setI18n;\n }\n});\nObject.defineProperty(exports, \"initReactI18next\", {\n enumerable: true,\n get: function get() {\n return _initReactI18next.initReactI18next;\n }\n});\nexports.ReportNamespaces = exports.I18nContext = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _react = require(\"react\");\n\nvar _defaults = require(\"./defaults.js\");\n\nvar _i18nInstance = require(\"./i18nInstance.js\");\n\nvar _initReactI18next = require(\"./initReactI18next.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar I18nContext = (0, _react.createContext)();\nexports.I18nContext = I18nContext;\n\nvar ReportNamespaces = function () {\n function ReportNamespaces() {\n (0, _classCallCheck2[\"default\"])(this, ReportNamespaces);\n this.usedNamespaces = {};\n }\n\n (0, _createClass2[\"default\"])(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n return ReportNamespaces;\n}();\n\nexports.ReportNamespaces = ReportNamespaces;\n\nfunction composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n };\n}\n\nfunction getInitialProps() {\n var i18n = (0, _i18nInstance.getI18n)();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setDefaults = setDefaults;\nexports.getDefaults = getDefaults;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _unescape = require(\"./unescape.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape: _unescape.unescape\n};\n\nfunction setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\n\nfunction getDefaults() {\n return defaultOptions;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setI18n = setI18n;\nexports.getI18n = getI18n;\nvar i18nInstance;\n\nfunction setI18n(instance) {\n i18nInstance = instance;\n}\n\nfunction getI18n() {\n return i18nInstance;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Trans\", {\n enumerable: true,\n get: function get() {\n return _Trans.Trans;\n }\n});\nObject.defineProperty(exports, \"TransWithoutContext\", {\n enumerable: true,\n get: function get() {\n return _TransWithoutContext.Trans;\n }\n});\nObject.defineProperty(exports, \"useTranslation\", {\n enumerable: true,\n get: function get() {\n return _useTranslation.useTranslation;\n }\n});\nObject.defineProperty(exports, \"withTranslation\", {\n enumerable: true,\n get: function get() {\n return _withTranslation.withTranslation;\n }\n});\nObject.defineProperty(exports, \"Translation\", {\n enumerable: true,\n get: function get() {\n return _Translation.Translation;\n }\n});\nObject.defineProperty(exports, \"I18nextProvider\", {\n enumerable: true,\n get: function get() {\n return _I18nextProvider.I18nextProvider;\n }\n});\nObject.defineProperty(exports, \"withSSR\", {\n enumerable: true,\n get: function get() {\n return _withSSR.withSSR;\n }\n});\nObject.defineProperty(exports, \"useSSR\", {\n enumerable: true,\n get: function get() {\n return _useSSR.useSSR;\n }\n});\nObject.defineProperty(exports, \"I18nContext\", {\n enumerable: true,\n get: function get() {\n return _context.I18nContext;\n }\n});\nObject.defineProperty(exports, \"initReactI18next\", {\n enumerable: true,\n get: function get() {\n return _context.initReactI18next;\n }\n});\nObject.defineProperty(exports, \"setDefaults\", {\n enumerable: true,\n get: function get() {\n return _context.setDefaults;\n }\n});\nObject.defineProperty(exports, \"getDefaults\", {\n enumerable: true,\n get: function get() {\n return _context.getDefaults;\n }\n});\nObject.defineProperty(exports, \"setI18n\", {\n enumerable: true,\n get: function get() {\n return _context.setI18n;\n }\n});\nObject.defineProperty(exports, \"getI18n\", {\n enumerable: true,\n get: function get() {\n return _context.getI18n;\n }\n});\nObject.defineProperty(exports, \"composeInitialProps\", {\n enumerable: true,\n get: function get() {\n return _context.composeInitialProps;\n }\n});\nObject.defineProperty(exports, \"getInitialProps\", {\n enumerable: true,\n get: function get() {\n return _context.getInitialProps;\n }\n});\nexports.selectOrdinal = exports.plural = exports.select = exports.number = exports.time = exports.date = void 0;\n\nvar _Trans = require(\"./Trans.js\");\n\nvar _TransWithoutContext = require(\"./TransWithoutContext.js\");\n\nvar _useTranslation = require(\"./useTranslation.js\");\n\nvar _withTranslation = require(\"./withTranslation.js\");\n\nvar _Translation = require(\"./Translation.js\");\n\nvar _I18nextProvider = require(\"./I18nextProvider.js\");\n\nvar _withSSR = require(\"./withSSR.js\");\n\nvar _useSSR = require(\"./useSSR.js\");\n\nvar _context = require(\"./context.js\");\n\nvar date = function date() {\n return '';\n};\n\nexports.date = date;\n\nvar time = function time() {\n return '';\n};\n\nexports.time = time;\n\nvar number = function number() {\n return '';\n};\n\nexports.number = number;\n\nvar select = function select() {\n return '';\n};\n\nexports.select = select;\n\nvar plural = function plural() {\n return '';\n};\n\nexports.plural = plural;\n\nvar selectOrdinal = function selectOrdinal() {\n return '';\n};\n\nexports.selectOrdinal = selectOrdinal;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.initReactI18next = void 0;\n\nvar _defaults = require(\"./defaults.js\");\n\nvar _i18nInstance = require(\"./i18nInstance.js\");\n\nvar initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n (0, _defaults.setDefaults)(instance.options.react);\n (0, _i18nInstance.setI18n)(instance);\n }\n};\nexports.initReactI18next = initReactI18next;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.unescape = void 0;\nvar matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nvar htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\n\nvar unescapeHtmlEntity = function unescapeHtmlEntity(m) {\n return htmlEntities[m];\n};\n\nvar unescape = function unescape(text) {\n return text.replace(matchHtmlEntity, unescapeHtmlEntity);\n};\n\nexports.unescape = unescape;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.useSSR = useSSR;\n\nvar _react = require(\"react\");\n\nvar _context = require(\"./context.js\");\n\nfunction useSSR(initialI18nStore, initialLanguage) {\n var props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var i18nFromProps = props.i18n;\n\n var _ref = (0, _react.useContext)(_context.I18nContext) || {},\n i18nFromContext = _ref.i18n;\n\n var i18n = i18nFromProps || i18nFromContext || (0, _context.getI18n)();\n if (i18n.options && i18n.options.isClone) return;\n\n if (initialI18nStore && !i18n.initializedStoreOnce) {\n i18n.services.resourceStore.data = initialI18nStore;\n i18n.options.ns = Object.values(initialI18nStore).reduce(function (mem, lngResources) {\n Object.keys(lngResources).forEach(function (ns) {\n if (mem.indexOf(ns) < 0) mem.push(ns);\n });\n return mem;\n }, i18n.options.ns);\n i18n.initializedStoreOnce = true;\n i18n.isInitialized = true;\n }\n\n if (initialLanguage && !i18n.initializedLanguageOnce) {\n i18n.changeLanguage(initialLanguage);\n i18n.initializedLanguageOnce = true;\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.useTranslation = useTranslation;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _react = require(\"react\");\n\nvar _context = require(\"./context.js\");\n\nvar _utils = require(\"./utils.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar usePrevious = function usePrevious(value, ignore) {\n var ref = (0, _react.useRef)();\n (0, _react.useEffect)(function () {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\n\nfunction useTranslation(ns) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nFromProps = props.i18n;\n\n var _ref = (0, _react.useContext)(_context.I18nContext) || {},\n i18nFromContext = _ref.i18n,\n defaultNSFromContext = _ref.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || (0, _context.getI18n)();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new _context.ReportNamespaces();\n\n if (!i18n) {\n (0, _utils.warnOnce)('You will need to pass in an i18next instance by using initReactI18next');\n\n var notReadyT = function notReadyT(k) {\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n\n var retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n\n if (i18n.options.react && i18n.options.react.wait !== undefined) (0, _utils.warnOnce)('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n\n var i18nOptions = _objectSpread(_objectSpread(_objectSpread({}, (0, _context.getDefaults)()), i18n.options.react), props);\n\n var useSuspense = i18nOptions.useSuspense,\n keyPrefix = i18nOptions.keyPrefix;\n var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n return (0, _utils.hasLoadedNamespace)(n, i18n, i18nOptions);\n });\n\n function getT() {\n return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n }\n\n var _useState = (0, _react.useState)(getT),\n _useState2 = (0, _slicedToArray2[\"default\"])(_useState, 2),\n t = _useState2[0],\n setT = _useState2[1];\n\n var joinedNS = namespaces.join();\n var previousJoinedNS = usePrevious(joinedNS);\n var isMounted = (0, _react.useRef)(true);\n (0, _react.useEffect)(function () {\n var bindI18n = i18nOptions.bindI18n,\n bindI18nStore = i18nOptions.bindI18nStore;\n isMounted.current = true;\n\n if (!ready && !useSuspense) {\n (0, _utils.loadNamespaces)(i18n, namespaces, function () {\n if (isMounted.current) setT(getT);\n });\n }\n\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getT);\n }\n\n function boundReset() {\n if (isMounted.current) setT(getT);\n }\n\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return function () {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n return i18n.off(e, boundReset);\n });\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n return i18n.store.off(e, boundReset);\n });\n };\n }, [i18n, joinedNS]);\n var isInitial = (0, _react.useRef)(true);\n (0, _react.useEffect)(function () {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n\n isInitial.current = false;\n }, [i18n, keyPrefix]);\n var ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(function (resolve) {\n (0, _utils.loadNamespaces)(i18n, namespaces, function () {\n resolve();\n });\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.warn = warn;\nexports.warnOnce = warnOnce;\nexports.loadNamespaces = loadNamespaces;\nexports.hasLoadedNamespace = hasLoadedNamespace;\nexports.getDisplayName = getDisplayName;\n\nfunction warn() {\n if (console && console.warn) {\n var _console;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n (_console = console).warn.apply(_console, args);\n }\n}\n\nvar alreadyWarned = {};\n\nfunction warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn.apply(void 0, args);\n}\n\nfunction loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, function () {\n if (i18n.isInitialized) {\n cb();\n } else {\n var initialized = function initialized() {\n setTimeout(function () {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n\n i18n.on('initialized', initialized);\n }\n });\n}\n\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var lng = i18n.languages[0];\n var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n var lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\n\nfunction hasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n\n var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n\n if (!isNewerI18next) {\n return oldI18nextHasLoadedNamespace(ns, i18n, options);\n }\n\n return i18n.hasLoadedNamespace(ns, {\n precheck: function precheck(i18nInstance, loadNotPending) {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n}\n\nfunction getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.withSSR = withSSR;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _react = require(\"react\");\n\nvar _useSSR = require(\"./useSSR.js\");\n\nvar _context = require(\"./context.js\");\n\nvar _utils = require(\"./utils.js\");\n\nvar _excluded = [\"initialI18nStore\", \"initialLanguage\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction withSSR() {\n return function Extend(WrappedComponent) {\n function I18nextWithSSR(_ref) {\n var initialI18nStore = _ref.initialI18nStore,\n initialLanguage = _ref.initialLanguage,\n rest = (0, _objectWithoutProperties2[\"default\"])(_ref, _excluded);\n (0, _useSSR.useSSR)(initialI18nStore, initialLanguage);\n return (0, _react.createElement)(WrappedComponent, _objectSpread({}, rest));\n }\n\n I18nextWithSSR.getInitialProps = (0, _context.composeInitialProps)(WrappedComponent);\n I18nextWithSSR.displayName = \"withI18nextSSR(\".concat((0, _utils.getDisplayName)(WrappedComponent), \")\");\n I18nextWithSSR.WrappedComponent = WrappedComponent;\n return I18nextWithSSR;\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.withTranslation = withTranslation;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _react = require(\"react\");\n\nvar _useTranslation3 = require(\"./useTranslation.js\");\n\nvar _utils = require(\"./utils.js\");\n\nvar _excluded = [\"forwardedRef\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction withTranslation(ns) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function Extend(WrappedComponent) {\n function I18nextWithTranslation(_ref) {\n var forwardedRef = _ref.forwardedRef,\n rest = (0, _objectWithoutProperties2[\"default\"])(_ref, _excluded);\n\n var _useTranslation = (0, _useTranslation3.useTranslation)(ns, _objectSpread(_objectSpread({}, rest), {}, {\n keyPrefix: options.keyPrefix\n })),\n _useTranslation2 = (0, _slicedToArray2[\"default\"])(_useTranslation, 3),\n t = _useTranslation2[0],\n i18n = _useTranslation2[1],\n ready = _useTranslation2[2];\n\n var passDownProps = _objectSpread(_objectSpread({}, rest), {}, {\n t: t,\n i18n: i18n,\n tReady: ready\n });\n\n if (options.withRef && forwardedRef) {\n passDownProps.ref = forwardedRef;\n } else if (!options.withRef && forwardedRef) {\n passDownProps.forwardedRef = forwardedRef;\n }\n\n return (0, _react.createElement)(WrappedComponent, passDownProps);\n }\n\n I18nextWithTranslation.displayName = \"withI18nextTranslation(\".concat((0, _utils.getDisplayName)(WrappedComponent), \")\");\n I18nextWithTranslation.WrappedComponent = WrappedComponent;\n\n var forwardRef = function forwardRef(props, ref) {\n return (0, _react.createElement)(I18nextWithTranslation, Object.assign({}, props, {\n forwardedRef: ref\n }));\n };\n\n return options.withRef ? (0, _react.forwardRef)(forwardRef) : I18nextWithTranslation;\n };\n}","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","/* Spatial Navigation Polyfill\n *\n * It follows W3C official specification\n * https://drafts.csswg.org/css-nav-1/\n *\n * Copyright (c) 2018-2019 LG Electronics Inc.\n * https://github.com/WICG/spatial-navigation/polyfill\n *\n * Licensed under the MIT license (MIT)\n */\n\n(function () {\n\n // The polyfill must not be executed, if it's already enabled via browser engine or browser extensions.\n if (window.navigate !== undefined) {\n return;\n }\n\n const ARROW_KEY_CODE = {37: 'left', 38: 'up', 39: 'right', 40: 'down'};\n const TAB_KEY_CODE = 9;\n let mapOfBoundRect = null;\n let startingPoint = null; // Indicates global variables for spatnav (starting position)\n\n /**\n * Initiate the spatial navigation features of the polyfill.\n * This function defines which input methods trigger the spatial navigation behavior.\n * @function initiateSpatialNavigation\n */\n function initiateSpatialNavigation() {\n /*\n * Bind the standards APIs to be exposed to the window object for authors\n */\n window.navigate = navigate;\n window.Element.prototype.spatialNavigationSearch = spatialNavigationSearch;\n window.Element.prototype.focusableAreas = focusableAreas;\n window.Element.prototype.getSpatialNavigationContainer = getSpatialNavigationContainer;\n\n /*\n * CSS.registerProperty() from the Properties and Values API\n * Reference: https://drafts.css-houdini.org/css-properties-values-api/#the-registerproperty-function\n */\n if (window.CSS && CSS.registerProperty) {\n if (window.getComputedStyle(document.documentElement).getPropertyValue('--spatial-navigation-contain') === '') {\n CSS.registerProperty({\n name: '--spatial-navigation-contain',\n syntax: 'auto | contain',\n inherits: false,\n initialValue: 'auto'\n });\n }\n\n if (window.getComputedStyle(document.documentElement).getPropertyValue('--spatial-navigation-action') === '') {\n CSS.registerProperty({\n name: '--spatial-navigation-action',\n syntax: 'auto | focus | scroll',\n inherits: false,\n initialValue: 'auto'\n });\n }\n\n if (window.getComputedStyle(document.documentElement).getPropertyValue('--spatial-navigation-function') === '') {\n CSS.registerProperty({\n name: '--spatial-navigation-function',\n syntax: 'normal | euclidean | grid',\n inherits: true,\n initialValue: 'normal'\n });\n }\n }\n\n /*\n * keydown EventListener :\n * If arrow key pressed, get the next focusing element and send it to focusing controller\n */\n window.addEventListener('keydown', e => {\n const currentKeyMode = (parent && parent.__spatialNavigation__.keyMode) || window.__spatialNavigation__.keyMode;\n const eventTarget = document.activeElement;\n const dir = ARROW_KEY_CODE[e.keyCode];\n\n if (e.keyCode === TAB_KEY_CODE)\n startingPoint = null;\n\n if (!currentKeyMode ||\n (currentKeyMode === 'NONE') ||\n ((currentKeyMode === 'SHIFTARROW') && !e.shiftKey) ||\n ((currentKeyMode === 'ARROW') && e.shiftKey))\n return;\n\n if (!e.defaultPrevented && !e.spatialNavigationPrevented) {\n let focusNavigableArrowKey = {left: true, up: true, right: true, down: true};\n\n // Edge case (text input, area) : Don't move focus, just navigate cursor in text area\n if ((eventTarget.nodeName === 'INPUT') || eventTarget.nodeName === 'TEXTAREA')\n focusNavigableArrowKey = handlingEditableElement(e);\n\n if (focusNavigableArrowKey[dir]) {\n e.preventDefault();\n mapOfBoundRect = new Map();\n\n navigate(dir);\n\n mapOfBoundRect = null;\n startingPoint = null;\n }\n }\n });\n\n /*\n * mouseup EventListener :\n * If the mouse click a point in the page, the point will be the starting point.\n * NOTE: Let UA set the spatial navigation starting point based on click\n */\n // document.addEventListener('mouseup', e => {\n // startingPoint = {x: e.clientX, y: e.clientY};\n // });\n }\n\n /**\n * Enable the author to trigger spatial navigation programmatically, as if the user had done so manually.\n * @see {@link https://drafts.csswg.org/css-nav-1/#dom-window-navigate}\n * @function navigate\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n */\n function navigate(dir) {\n // spatial navigation steps\n\n // 1\n const searchOrigin = findSearchOrigin();\n let eventTarget = searchOrigin;\n\n let elementFromPosition = null;\n\n // 2 Optional step, UA defined starting point\n if (startingPoint) {\n // if there is a starting point, set eventTarget as the element from position for getting the spatnav container\n elementFromPosition = document.elementFromPoint(startingPoint.x, startingPoint.y);\n\n // Use starting point if the starting point isn't inside the focusable element (but not container)\n // * Starting point is meaningfull when:\n // 1) starting point is inside the spatnav container\n // 2) starting point is inside the non-focusable element\n if(elementFromPosition === null) {\n elementFromPosition = document.body;\n }\n if (isFocusable(elementFromPosition) && !isContainer(elementFromPosition)) {\n startingPoint = null;\n } else if (isContainer(elementFromPosition)) {\n eventTarget = elementFromPosition;\n } else {\n eventTarget = elementFromPosition.getSpatialNavigationContainer();\n }\n }\n\n // 4\n if (eventTarget === document || eventTarget === document.documentElement) {\n eventTarget = document.body || document.documentElement;\n }\n\n // 5\n // At this point, spatialNavigationSearch can be applied.\n // If startingPoint is either a scroll container or the document,\n // find the best candidate within startingPoint\n let container = null;\n if ((isContainer(eventTarget) || eventTarget.nodeName === 'BODY') && !(eventTarget.nodeName === 'INPUT')) {\n container = eventTarget;\n\n if (eventTarget.nodeName === 'IFRAME')\n eventTarget = eventTarget.contentDocument.documentElement;\n\n let bestInsideCandidate = null;\n\n // 5-2\n if (getCSSSpatNavAction(eventTarget) === 'scroll') {\n if (scrollingController(eventTarget, dir)) return;\n } else if (getCSSSpatNavAction(eventTarget) === 'focus') {\n bestInsideCandidate = eventTarget.spatialNavigationSearch(dir, {container: eventTarget, candidates: getSpatialNavigationCandidates(eventTarget, {mode: 'all'}), inside: true});\n if (focusingController(bestInsideCandidate, dir)) return;\n } else if (getCSSSpatNavAction(eventTarget) === 'auto') {\n bestInsideCandidate = eventTarget.spatialNavigationSearch(dir, {container: eventTarget, inside: true});\n if (focusingController(bestInsideCandidate, dir) || scrollingController(eventTarget, dir)) return;\n }\n }\n\n // 6\n // Let container be the nearest ancestor of eventTarget\n container = container || eventTarget.getSpatialNavigationContainer();\n let parentContainer = (container.parentElement) ? container.getSpatialNavigationContainer() : null;\n\n // When the container is the viewport of a browsing context\n if (!parentContainer && ( window.location !== window.parent.location)) {\n parentContainer = window.parent.document.documentElement;\n }\n\n if (getCSSSpatNavAction(eventTarget) === 'scroll') {\n if (scrollingController(container, dir)) return;\n }\n else if (getCSSSpatNavAction(eventTarget) === 'focus') {\n navigateChain(eventTarget, container, parentContainer, dir, 'all');\n }\n else if (getCSSSpatNavAction(eventTarget) === 'auto') {\n navigateChain(eventTarget, container, parentContainer, dir, 'visible');\n }\n }\n\n /**\n * Move the focus to the best candidate or do nothing.\n * @function focusingController\n * @param bestCandidate {Node} - The best candidate of the spatial navigation\n * @param dir {SpatialNavigationDirection}- The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function focusingController(bestCandidate, dir) {\n // 10 & 11\n // When bestCandidate is found\n if (bestCandidate) {\n const container = bestCandidate.getSpatialNavigationContainer();\n const elementStyle = window.getComputedStyle(container, null);\n const overflowX = elementStyle.getPropertyValue('overflow-x');\n const overflowY = elementStyle.getPropertyValue('overflow-y');\n\n // Scrolling container or document when the next focusing element isn't entirely visible\n // This is for the browser compatability\n if (isScrollable(container, dir) && !isEntirelyVisible(bestCandidate));\n bestCandidate.scrollIntoView();\n\n // When bestCandidate is a focusable element and not a container : move focus\n /*\n * [event] navbeforefocus : Fired before spatial or sequential navigation changes the focus.\n */\n if (!createSpatNavEvents('beforefocus', bestCandidate, null, dir))\n return true;\n\n bestCandidate.focus();\n return true;\n }\n\n // When bestCandidate is not found within the scrollport of a container: Nothing\n return false;\n }\n\n /**\n * Directionally scroll the scrollable spatial navigation container if it can be manually scrolled more.\n * @function scrollingController\n * @param container {Node} - The spatial navigation container which can scroll\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function scrollingController(container, dir) {\n\n // If there is any scrollable area among parent elements and it can be manually scrolled, scroll the document\n if (isScrollable(container, dir) && !isScrollBoundary(container, dir)) {\n moveScroll(container, dir);\n return true;\n }\n\n // If the spatnav container is document and it can be scrolled, scroll the document\n if (!container.parentElement && !isHTMLScrollBoundary(container, dir)) {\n moveScroll(document.documentElement, dir);\n return true;\n }\n return false;\n }\n\n /**\n * Find the candidates within a spatial navigation container include delegable container.\n * This function does not search inside delegable container or focusable container.\n * In other words, this return candidates set is not included focusable elements inside delegable container or focusable container.\n *\n * @function getSpatialNavigationCandidates\n * @param container {Node} - The spatial navigation container\n * @param option {FocusableAreasOptions} - 'mode' attribute takes 'visible' or 'all' for searching the boundary of focusable elements.\n * Default value is 'visible'.\n * @returns {sequence<Node>} candidate elements within the container\n */\n function getSpatialNavigationCandidates (container, option = {mode: 'visible'}) {\n let candidates = [];\n\n if (container.childElementCount > 0) {\n if (!container.parentElement) {\n container = container.getElementsByTagName('body')[0] || document.body;\n }\n const children = container.children;\n for (const elem of children) {\n if (isDelegableContainer(elem)) {\n candidates.push(elem);\n } else if(isFocusable(elem)) {\n candidates.push(elem);\n\n if(!isContainer(elem) && elem.childElementCount) {\n candidates = candidates.concat(getSpatialNavigationCandidates(elem, {mode: 'all'}));\n }\n } else if (elem.childElementCount) {\n candidates = candidates.concat(getSpatialNavigationCandidates(elem, {mode: 'all'}));\n }\n }\n }\n return (option.mode === 'all') ? candidates : candidates.filter(isVisible);\n }\n\n /**\n * Find the candidates among focusable elements within a spatial navigation container from the search origin (currently focused element)\n * depending on the directional information.\n * @function getFilteredSpatialNavigationCandidates\n * @param element {Node} - The currently focused element which is defined as 'search origin' in the spec\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @param candidates {sequence<Node>} - The candidates for spatial navigation without the directional information\n * @param container {Node} - The spatial navigation container\n * @returns {Node} The candidates for spatial navigation considering the directional information\n */\n function getFilteredSpatialNavigationCandidates (element, dir, candidates, container) {\n const targetElement = element;\n // Removed below line due to a bug. (iframe body rect is sometime weird.)\n // const targetElement = (element.nodeName === 'IFRAME') ? element.contentDocument.body : element;\n // If the container is unknown, get the closest container from the element\n container = container || targetElement.getSpatialNavigationContainer();\n\n // If the candidates is unknown, find candidates\n // 5-1\n candidates = (!candidates || candidates.length <= 0) ? getSpatialNavigationCandidates(container) : candidates;\n return filteredCandidates(targetElement, candidates, dir, container);\n }\n\n /**\n * Find the best candidate among the candidates within the container from the search origin (currently focused element)\n * @see {@link https://drafts.csswg.org/css-nav-1/#dom-element-spatialnavigationsearch}\n * @function spatialNavigationSearch\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @param candidates {sequence<Node>} - The candidates for spatial navigation\n * @param container {Node} - The spatial navigation container\n * @param inside {boolean} - Whether candidates should be elements outside of the target element or not.\n * @returns {Node} The best candidate which will gain the focus\n */\n function spatialNavigationSearch (dir, args) {\n const targetElement = this;\n let internalCandidates = [];\n let externalCandidates = [];\n let bestTarget;\n\n // Set default parameter value\n if (!args)\n args = {};\n const container = args.container || targetElement.getSpatialNavigationContainer();\n const candidates = (args.candidates && args.candidates.length > 0) ?\n args.candidates.filter((candidate) => container.contains(candidate)) : getSpatialNavigationCandidates(container);\n const inside = args.inside || false;\n\n // Find the best candidate\n // 5\n // If startingPoint is either a scroll container or the document,\n // find the best candidate within startingPoint\n if (candidates && candidates.length > 0) {\n\n // Divide internal or external candidates\n candidates.forEach(candidate => {\n (targetElement.contains(candidate) && targetElement !== candidate ? internalCandidates : externalCandidates).push(candidate);\n });\n if (!(args.candidates && args.candidates.length > 0) && (internalCandidates.length === 0)) {\n // If targetElement is focusable container or delegable container,\n // getFilteredSpatialNavigationCandidates not return internal candidate.\n internalCandidates = getSpatialNavigationCandidates(targetElement);\n }\n // Filter external Candidates\n if (externalCandidates.length > 0) {\n externalCandidates = getFilteredSpatialNavigationCandidates (targetElement, dir, externalCandidates, container);\n }\n\n if (inside && (isContainer(targetElement) || targetElement.nodeName === 'BODY') && !(targetElement.nodeName === 'INPUT')) {\n bestTarget = selectBestCandidateFromEdge(targetElement, internalCandidates, dir);\n }\n bestTarget = bestTarget || selectBestCandidate(targetElement, externalCandidates, dir);\n\n if (bestTarget && isDelegableContainer(bestTarget)) {\n // if best target is delegable container, then find descendants candidate inside delegable container.\n const innerTarget = getSpatialNavigationCandidates(bestTarget, {mode: 'all'});\n const descendantsBest = innerTarget.length > 0 ? targetElement.spatialNavigationSearch(dir, {candidates: innerTarget, container: bestTarget}) : null;\n if (descendantsBest) {\n bestTarget = descendantsBest;\n } else if (!isFocusable(bestTarget)) {\n // if there is no target inside bestTarget and delegable container is not focusable,\n // then try to find another best target without curren best target.\n candidates.splice(candidates.indexOf(bestTarget), 1);\n bestTarget = candidates.length ? targetElement.spatialNavigationSearch(dir, {candidates: candidates, container: container}) : null;\n }\n }\n return bestTarget;\n }\n\n return null;\n }\n\n /**\n * Get the filtered candidate among candidates.\n * @see {@link https://drafts.csswg.org/css-nav-1/#select-the-best-candidate}\n * @function filteredCandidates\n * @param currentElm {Node} - The currently focused element which is defined as 'search origin' in the spec\n * @param candidates {sequence<Node>} - The candidates for spatial navigation\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @param container {Node} - The spatial navigation container\n * @returns {sequence<Node>} The filtered candidates which are not the search origin and not in the given spatial navigation direction from the search origin\n */\n function filteredCandidates(currentElm, candidates, dir, container) {\n const originalContainer = currentElm.getSpatialNavigationContainer();\n let eventTargetRect;\n\n // If D(dir) is null, let candidates be the same as visibles\n if (dir === undefined)\n return candidates;\n\n // to do\n // Offscreen handling when originalContainer is not <HTML>\n if (originalContainer.parentElement && container !== originalContainer && !isVisible(currentElm))\n eventTargetRect = getBoundingClientRect(originalContainer);\n else eventTargetRect = getBoundingClientRect(currentElm);\n\n /*\n * Else, let candidates be the subset of the elements in visibles\n * whose principal box’s geometric center is within the closed half plane\n * whose boundary goes through the geometric center of starting point and is perpendicular to D.\n */\n if ((isContainer(currentElm) || currentElm.nodeName === 'BODY') && !(currentElm.nodeName === 'INPUT')) {\n return candidates.filter(candidate => {\n const candidateRect = getBoundingClientRect(candidate);\n return container.contains(candidate) &&\n ((currentElm.contains(candidate) && isInside(eventTargetRect, candidateRect) && candidate !== currentElm) ||\n isOutside(candidateRect, eventTargetRect, dir));\n });\n } else {\n return candidates.filter(candidate => {\n const candidateRect = getBoundingClientRect(candidate);\n const candidateBody = (candidate.nodeName === 'IFRAME') ? candidate.contentDocument.body : null;\n return container.contains(candidate) &&\n candidate !== currentElm && candidateBody !== currentElm &&\n isOutside(candidateRect, eventTargetRect, dir);\n });\n }\n }\n\n /**\n * Select the best candidate among given candidates.\n * @see {@link https://drafts.csswg.org/css-nav-1/#select-the-best-candidate}\n * @function selectBestCandidate\n * @param currentElm {Node} - The currently focused element which is defined as 'search origin' in the spec\n * @param candidates {sequence<Node>} - The candidates for spatial navigation\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Node} The best candidate which will gain the focus\n */\n function selectBestCandidate(currentElm, candidates, dir) {\n const spatialNavigationFunction = getComputedStyle(currentElm).getPropertyValue('--spatial-navigation-function');\n const currentElmRect = getBoundingClientRect(currentElm);\n let distanceFunction;\n let alignedCandidates;\n\n switch (spatialNavigationFunction) {\n case 'grid':\n alignedCandidates = candidates.filter(elm => isAligned(currentElmRect, getBoundingClientRect(elm), dir));\n if (alignedCandidates.length > 0) {\n candidates = alignedCandidates;\n }\n distanceFunction = getAbsoluteDistance;\n break;\n case 'euclidean':\n distanceFunction = getEuclideanDistance;\n break;\n default:\n distanceFunction = getDistance;\n break;\n }\n return getClosestElement(currentElm, candidates, dir, distanceFunction);\n }\n\n /**\n * Select the best candidate among candidates by finding the closet candidate from the edge of the currently focused element (search origin).\n * @see {@link https://drafts.csswg.org/css-nav-1/#select-the-best-candidate (Step 5)}\n * @function selectBestCandidateFromEdge\n * @param currentElm {Node} - The currently focused element which is defined as 'search origin' in the spec\n * @param candidates {sequence<Node>} - The candidates for spatial navigation\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Node} The best candidate which will gain the focus\n */\n function selectBestCandidateFromEdge(currentElm, candidates, dir) {\n if (startingPoint)\n return getClosestElement(currentElm, candidates, dir, getDistanceFromPoint);\n else\n return getClosestElement(currentElm, candidates, dir, getInnerDistance);\n }\n\n /**\n * Select the closest candidate from the currently focused element (search origin) among candidates by using the distance function.\n * @function getClosestElement\n * @param currentElm {Node} - The currently focused element which is defined as 'search origin' in the spec\n * @param candidates {sequence<Node>} - The candidates for spatial navigation\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @param distanceFunction {function} - The distance function which measures the distance from the search origin to each candidate\n * @returns {Node} The candidate which is the closest one from the search origin\n */\n function getClosestElement(currentElm, candidates, dir, distanceFunction) {\n let eventTargetRect = null;\n if (( window.location !== window.parent.location ) && (currentElm.nodeName === 'BODY' || currentElm.nodeName === 'HTML')) {\n // If the eventTarget is iframe, then get rect of it based on its containing document\n // Set the iframe's position as (0,0) because the rects of elements inside the iframe don't know the real iframe's position.\n eventTargetRect = window.frameElement.getBoundingClientRect();\n eventTargetRect.x = 0;\n eventTargetRect.y = 0;\n }\n else \n eventTargetRect = currentElm.getBoundingClientRect();\n\n let minDistance = Number.POSITIVE_INFINITY;\n let minDistanceElements = [];\n\n if (candidates) {\n for (let i = 0; i < candidates.length; i++) {\n const distance = distanceFunction(eventTargetRect, getBoundingClientRect(candidates[i]), dir);\n\n // If the same distance, the candidate will be selected in the DOM order\n if (distance < minDistance) {\n minDistance = distance;\n minDistanceElements = [candidates[i]];\n } else if (distance === minDistance) {\n minDistanceElements.push(candidates[i]);\n }\n }\n }\n if (minDistanceElements.length === 0)\n return null;\n\n return (minDistanceElements.length > 1 && distanceFunction === getAbsoluteDistance) ?\n getClosestElement(currentElm, minDistanceElements, dir, getEuclideanDistance) : minDistanceElements[0];\n }\n\n /**\n * Get container of an element.\n * @see {@link https://drafts.csswg.org/css-nav-1/#dom-element-getspatialnavigationcontainer}\n * @module Element\n * @function getSpatialNavigationContainer\n * @returns {Node} The spatial navigation container\n */\n function getSpatialNavigationContainer() {\n let container = this;\n\n do {\n if (!container.parentElement) {\n if (window.location !== window.parent.location)\n container = window.parent.document.documentElement;\n else\n container = window.document.documentElement;\n break;\n }\n else {\n container = container.parentElement;\n }\n } while (!isContainer(container));\n return container;\n }\n\n /**\n * Find focusable elements within the spatial navigation container.\n * @see {@link https://drafts.csswg.org/css-nav-1/#dom-element-focusableareas}\n * @function focusableAreas\n * @param option {FocusableAreasOptions} - 'mode' attribute takes 'visible' or 'all' for searching the boundary of focusable elements.\n * Default value is 'visible'.\n * @returns {sequence<Node>} All focusable elements or only visible focusable elements within the container\n */\n function focusableAreas(option = {mode: 'visible'}) {\n const container = this.parentElement ? this : document.body;\n const focusables = Array.prototype.filter.call(container.getElementsByTagName('*'), isFocusable);\n return (option.mode === 'all') ? focusables : focusables.filter(isVisible);\n }\n\n /**\n * Create the NavigationEvent: navbeforefocus, navnotarget\n * @see {@link https://drafts.csswg.org/css-nav-1/#events-navigationevent}\n * @function createSpatNavEvents\n * @param option {string} - Type of the navigation event (beforefocus, notarget)\n * @param element {Node} - The target element of the event\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n */\n function createSpatNavEvents(eventType, containerElement, currentElement, direction) {\n if(['beforefocus', 'notarget'].includes(eventType)) {\n const data = {\n causedTarget: currentElement,\n dir: direction\n };\n const triggeredEvent = new CustomEvent('nav' + eventType, {bubbles: true, cancelable: true, detail: data});\n return containerElement.dispatchEvent(triggeredEvent);\n }\n }\n\n /**\n * Get the value of the CSS custom property of the element\n * @function readCssVar\n * @param element {Node}\n * @param varName {string} - The name of the css custom property without '--'\n * @returns {string} The value of the css custom property\n */\n function readCssVar(element, varName) {\n return window.getComputedStyle(element).getPropertyValue(`--${varName}`).trim();\n }\n\n /**\n * Decide whether or not the 'contain' value is given to 'spatial-navigation-contain' css property of an element\n * @function isCSSSpatNavContain\n * @param element {Node}\n * @returns {boolean}\n */\n function isCSSSpatNavContain(element) {\n return readCssVar(element, 'spatial-navigation-contain') === 'contain';\n }\n\n /**\n * Return the value of 'spatial-navigation-action' css property of an element\n * @function getCSSSpatNavAction\n * @param element {Node} - would be the spatial navigation container\n * @returns {string} auto | focus | scroll\n */\n function getCSSSpatNavAction(element) {\n return readCssVar(element, 'spatial-navigation-action') || 'auto';\n }\n\n /**\n * Only move the focus with spatial navigation. Manually scrolling isn't available.\n * @function navigateChain\n * @param eventTarget {Node} - currently focused element\n * @param container {SpatialNavigationContainer} - container\n * @param parentContainer {SpatialNavigationContainer} - parent container\n * @param option - visible || all\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n */\n function navigateChain(eventTarget, container, parentContainer, dir, option) {\n let currentOption = {candidates: getSpatialNavigationCandidates(container, {mode: option}), container};\n\n while (parentContainer) {\n if (focusingController(eventTarget.spatialNavigationSearch(dir, currentOption), dir)) {\n return;\n }\n else {\n if ((option === 'visible') && scrollingController(container, dir)) return;\n else {\n if (!createSpatNavEvents('notarget', container, eventTarget, dir)) return;\n\n // find the container\n if (container === document || container === document.documentElement) {\n if ( window.location !== window.parent.location ) {\n // The page is in an iframe. eventTarget needs to be reset because the position of the element in the iframe\n eventTarget = window.frameElement;\n container = window.parent.document.documentElement;\n\n if (container.parentElement)\n parentContainer = container.getSpatialNavigationContainer();\n else {\n parentContainer = null;\n break;\n }\n }\n }\n else {\n container = parentContainer;\n currentOption = {candidates: getSpatialNavigationCandidates(container, {mode: option}), container};\n\n if (container.parentElement)\n parentContainer = container.getSpatialNavigationContainer();\n else {\n parentContainer = null;\n break;\n }\n }\n }\n }\n }\n\n currentOption = {candidates: getSpatialNavigationCandidates(container, {mode: option}), container};\n\n // Behavior after 'navnotarget' - Getting out from the current spatnav container\n if ((!parentContainer && container) && focusingController(eventTarget.spatialNavigationSearch(dir, currentOption), dir)) return;\n\n if (!createSpatNavEvents('notarget', currentOption.container, eventTarget, dir)) return;\n\n if ((getCSSSpatNavAction(container) === 'auto') && (option === 'visible'))\n if (scrollingController(container, dir)) return;\n }\n\n /**\n * Find search origin\n * @see {@link https://drafts.csswg.org/css-nav-1/#nav}\n * @function findSearchOrigin\n * @returns {Node} The search origin for the spatial navigation\n */\n function findSearchOrigin() {\n let searchOrigin = document.activeElement;\n if (!searchOrigin ||\n (searchOrigin === document.body && !document.querySelector(':focus')) /* body isn't actually focused*/\n ) {\n searchOrigin = document;\n }\n return searchOrigin;\n }\n\n /**\n * Move the scroll of an element depending on the given spatial navigation directrion\n * (Assume that User Agent defined distance is '40px')\n * @see {@link https://drafts.csswg.org/css-nav-1/#directionally-scroll-an-element}\n * @function moveScroll\n * @param element {Node} - The scrollable element\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @param offset {Number} - The explicit amount of offset for scrolling. Default value is 0.\n */\n function moveScroll(element, dir, offset = 0) {\n if (element) {\n switch (dir) {\n case 'left': element.scrollLeft -= (40 + offset); break;\n case 'right': element.scrollLeft += (40 + offset); break;\n case 'up': element.scrollTop -= (40 + offset); break;\n case 'down': element.scrollTop += (40 + offset); break;\n }\n }\n }\n\n /**\n * Decide whether an element is container or not.\n * @function isContainer\n * @param element {Node} element\n * @returns {boolean}\n */\n function isContainer(element) {\n return (!element.parentElement) ||\n (element.nodeName === 'IFRAME') ||\n (isScrollContainer(element)) ||\n (isCSSSpatNavContain(element));\n }\n\n /**\n * Decide whether an element is delegable container or not.\n * NOTE: THIS IS NON-NORMATIVE API. \n * @function isDelegableContainer\n * @param element {Node} element\n * @returns {boolean}\n */\n function isDelegableContainer(element) {\n return readCssVar(element, 'spatial-navigation-contain') === 'delegable';\n }\n\n /**\n * Decide whether an element is a scrollable container or not.\n * @see {@link https://drafts.csswg.org/css-overflow-3/#scroll-container}\n * @function isScrollContainer\n * @param element {Node}\n * @returns {boolean}\n */\n function isScrollContainer(element) {\n const elementStyle = window.getComputedStyle(element, null);\n const overflowX = elementStyle.getPropertyValue('overflow-x');\n const overflowY = elementStyle.getPropertyValue('overflow-y');\n\n return ((overflowX !== 'visible' && overflowX !== 'clip' && isOverflow(element, 'left')) ||\n (overflowY !== 'visible' && overflowY !== 'clip' && isOverflow(element, 'down'))) ?\n true : false;\n }\n\n /**\n * Decide whether this element is scrollable or not.\n * NOTE: If the value of 'overflow' is given to either 'visible', 'clip', or 'hidden', the element isn't scrollable.\n * If the value is 'hidden', the element can be only programmically scrollable. (https://drafts.csswg.org/css-overflow-3/#valdef-overflow-hidden)\n * @function isScrollable\n * @param element {Node}\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function isScrollable(element, dir) { // element, dir\n if (element && typeof element === 'object') {\n if (dir && typeof dir === 'string') { // parameter: dir, element\n if (isOverflow(element, dir)) {\n // style property\n const elementStyle = window.getComputedStyle(element, null);\n const overflowX = elementStyle.getPropertyValue('overflow-x');\n const overflowY = elementStyle.getPropertyValue('overflow-y');\n\n switch (dir) {\n case 'left':\n /* falls through */\n case 'right':\n return (overflowX !== 'visible' && overflowX !== 'clip' && overflowX !== 'hidden');\n case 'up':\n /* falls through */\n case 'down':\n return (overflowY !== 'visible' && overflowY !== 'clip' && overflowY !== 'hidden');\n }\n }\n return false;\n } else { // parameter: element\n return (element.nodeName === 'HTML' || element.nodeName === 'BODY') ||\n (isScrollContainer(element) && isOverflow(element));\n }\n }\n }\n\n /**\n * Decide whether an element is overflow or not.\n * @function isOverflow\n * @param element {Node}\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function isOverflow(element, dir) {\n if (element && typeof element === 'object') {\n if (dir && typeof dir === 'string') { // parameter: element, dir\n switch (dir) {\n case 'left':\n /* falls through */\n case 'right':\n return (element.scrollWidth > element.clientWidth);\n case 'up':\n /* falls through */\n case 'down':\n return (element.scrollHeight > element.clientHeight);\n }\n } else { // parameter: element\n return (element.scrollWidth > element.clientWidth || element.scrollHeight > element.clientHeight);\n }\n return false;\n }\n }\n\n /**\n * Decide whether the scrollbar of the browsing context reaches to the end or not.\n * @function isHTMLScrollBoundary\n * @param element {Node} - The top browsing context\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function isHTMLScrollBoundary(element, dir) {\n let result = false;\n switch (dir) {\n case 'left':\n result = window.scrollX === 0;\n break;\n case 'right':\n result = (element.scrollWidth - element.scrollLeft - element.clientWidth) === 0;\n break;\n case 'up':\n result = window.scrollY === 0;\n break;\n case 'down':\n result = (element.scrollHeight - element.scrollTop - element.clientHeight) === 0;\n break;\n }\n return result;\n }\n\n /**\n * Decide whether the scrollbar of an element reaches to the end or not.\n * @function isScrollBoundary\n * @param element {Node}\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function isScrollBoundary(element, dir) {\n if (isScrollable(element, dir)) {\n const winScrollY = element.scrollTop;\n const winScrollX = element.scrollLeft;\n\n const height = element.scrollHeight - element.clientHeight;\n const width = element.scrollWidth - element.clientWidth;\n\n switch (dir) {\n case 'left': return (winScrollX === 0);\n case 'right': return (Math.abs(winScrollX - width) <= 1);\n case 'up': return (winScrollY === 0);\n case 'down': return (Math.abs(winScrollY - height) <= 1);\n }\n }\n return false;\n }\n\n /**\n * Decide whether an element is focusable for spatial navigation.\n * 1. If element is the browsing context (document, iframe), then it's focusable,\n * 2. If the element is scrollable container (regardless of scrollable axis), then it's focusable,\n * 3. The value of tabIndex >= 0, then it's focusable,\n * 4. If the element is disabled, it isn't focusable,\n * 5. If the element is expressly inert, it isn't focusable,\n * 6. Whether the element is being rendered or not.\n *\n * @function isFocusable\n * @param element {Node}\n * @returns {boolean}\n *\n * @see {@link https://html.spec.whatwg.org/multipage/interaction.html#focusable-area}\n */\n function isFocusable(element) {\n if ((element.tabIndex < 0) || isAtagWithoutHref(element) || isActuallyDisabled(element) || isExpresslyInert(element) || !isBeingRendered(element))\n return false;\n else if ((!element.parentElement) || (isScrollable(element) && isOverflow(element)) || (element.tabIndex >= 0))\n return true;\n }\n\n /**\n * Decide whether an element is a tag without href attribute or not.\n *\n * @function isAtagWithoutHref\n * @param element {Node}\n * @returns {boolean}\n */\n function isAtagWithoutHref(element) {\n return (element.tagName === 'A' && element.getAttribute('href') === null && element.getAttribute('tabIndex') === null);\n }\n\n /**\n * Decide whether an element is actually disabled or not.\n *\n * @function isActuallyDisabled\n * @param element {Node}\n * @returns {boolean}\n *\n * @see {@link https://html.spec.whatwg.org/multipage/semantics-other.html#concept-element-disabled}\n */\n function isActuallyDisabled(element) {\n if (['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA', 'OPTGROUP', 'OPTION', 'FIELDSET'].includes(element.tagName))\n return (element.disabled);\n else\n return false;\n }\n\n /**\n * Decide whether the element is expressly inert or not.\n * @see {@link https://html.spec.whatwg.org/multipage/interaction.html#expressly-inert}\n * @function isExpresslyInert\n * @param element {Node}\n * @returns {boolean}\n */\n function isExpresslyInert(element) {\n return ((element.inert) && (!element.ownerDocument.documentElement.inert));\n }\n\n /**\n * Decide whether the element is being rendered or not.\n * 1. If an element has the style as \"visibility: hidden | collapse\" or \"display: none\", it is not being rendered.\n * 2. If an element has the style as \"opacity: 0\", it is not being rendered.(that is, invisible).\n * 3. If width and height of an element are explicitly set to 0, it is not being rendered.\n * 4. If a parent element is hidden, an element itself is not being rendered.\n * (CSS visibility property and display property are inherited.)\n * @see {@link https://html.spec.whatwg.org/multipage/rendering.html#being-rendered}\n * @function isBeingRendered\n * @param element {Node}\n * @returns {boolean}\n */\n function isBeingRendered(element) {\n if (!isVisibleStyleProperty(element.parentElement))\n return false;\n if (!isVisibleStyleProperty(element) || (element.style.opacity === 0) ||\n ((element.style.width === '0px' || element.style.width === 0) && (element.style.height === '0px' || element.style.height === 0)))\n return false;\n return true;\n }\n\n /**\n * Decide whether this element is partially or completely visible to user agent.\n * @function isVisible\n * @param element {Node}\n * @returns {boolean}\n */\n function isVisible(element) {\n return (!element.parentElement) || (isVisibleStyleProperty(element) && hitTest(element));\n }\n\n /**\n * Decide whether this element is completely visible in this viewport for the arrow direction.\n * @function isEntirelyVisible\n * @param element {Node}\n * @returns {boolean}\n */\n function isEntirelyVisible(element) {\n const rect = getBoundingClientRect(element);\n const containerRect = getBoundingClientRect(element.getSpatialNavigationContainer());\n\n // FIXME: when element is bigger than container?\n const entirelyVisible = !((rect.left < containerRect.left) ||\n (rect.right > containerRect.right) ||\n (rect.top < containerRect.top) ||\n (rect.bottom > containerRect.bottom));\n\n return entirelyVisible;\n }\n\n /**\n * Decide the style property of this element is specified whether it's visible or not.\n * @function isVisibleStyleProperty\n * @param element {CSSStyleDeclaration}\n * @returns {boolean}\n */\n function isVisibleStyleProperty(element) {\n const elementStyle = window.getComputedStyle(element, null);\n const thisVisibility = elementStyle.getPropertyValue('visibility');\n const thisDisplay = elementStyle.getPropertyValue('display');\n const invisibleStyle = ['hidden', 'collapse'];\n\n return (thisDisplay !== 'none' && !invisibleStyle.includes(thisVisibility));\n }\n\n /**\n * Decide whether this element is entirely or partially visible within the viewport.\n * @function hitTest\n * @param element {Node}\n * @returns {boolean}\n */\n function hitTest(element) {\n const elementRect = getBoundingClientRect(element);\n if (element.nodeName !== 'IFRAME' && (elementRect.top < 0 || elementRect.left < 0 ||\n elementRect.top > window.innerHeight || elementRect.left > window.innerWidth))\n return false;\n\n let offsetX = parseInt(element.offsetWidth) / 10;\n let offsetY = parseInt(element.offsetHeight) / 10;\n\n offsetX = isNaN(offsetX) ? 1 : offsetX;\n offsetY = isNaN(offsetY) ? 1 : offsetY;\n\n const hitTestPoint = {\n middle: [(elementRect.left + elementRect.right) / 2, (elementRect.top + elementRect.bottom) / 2],\n leftTop: [elementRect.left + offsetX, elementRect.top + offsetY],\n // For performance\n // leftBoottom: [elementRect.left + offsetX, elementRect.bottom - offsetY],\n // rightTop: [elementRect.right - offsetX, elementRect.top + offsetY],\n rightBottom: [elementRect.right - offsetX, elementRect.bottom - offsetY]\n };\n\n for(const point in hitTestPoint) {\n const elemFromPoint = document.elementFromPoint(...hitTestPoint[point]);\n if (element === elemFromPoint || element.contains(elemFromPoint)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Decide whether a child element is entirely or partially Included within container visually.\n * @function isInside\n * @param containerRect {DOMRect}\n * @param childRect {DOMRect}\n * @returns {boolean}\n */\n function isInside(containerRect, childRect) {\n const rightEdgeCheck = (containerRect.left <= childRect.right && containerRect.right >= childRect.right);\n const leftEdgeCheck = (containerRect.left <= childRect.left && containerRect.right >= childRect.left);\n const topEdgeCheck = (containerRect.top <= childRect.top && containerRect.bottom >= childRect.top);\n const bottomEdgeCheck = (containerRect.top <= childRect.bottom && containerRect.bottom >= childRect.bottom);\n return (rightEdgeCheck || leftEdgeCheck) && (topEdgeCheck || bottomEdgeCheck);\n }\n\n /**\n * Decide whether this element is entirely or partially visible within the viewport.\n * Note: rect1 is outside of rect2 for the dir\n * @function isOutside\n * @param rect1 {DOMRect}\n * @param rect2 {DOMRect}\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function isOutside(rect1, rect2, dir) {\n switch (dir) {\n case 'left':\n return isRightSide(rect2, rect1);\n case 'right':\n return isRightSide(rect1, rect2);\n case 'up':\n return isBelow(rect2, rect1);\n case 'down':\n return isBelow(rect1, rect2);\n default:\n return false;\n }\n }\n\n /* rect1 is right of rect2 */\n function isRightSide(rect1, rect2) {\n return rect1.left >= rect2.right || (rect1.left >= rect2.left && rect1.right > rect2.right && rect1.bottom > rect2.top && rect1.top < rect2.bottom);\n }\n\n /* rect1 is below of rect2 */\n function isBelow(rect1, rect2) {\n return rect1.top >= rect2.bottom || (rect1.top >= rect2.top && rect1.bottom > rect2.bottom && rect1.left < rect2.right && rect1.right > rect2.left);\n }\n\n /* rect1 is completely aligned or partially aligned for the direction */\n function isAligned(rect1, rect2, dir) {\n switch (dir) {\n case 'left' :\n /* falls through */\n case 'right' :\n return rect1.bottom > rect2.top && rect1.top < rect2.bottom;\n case 'up' :\n /* falls through */\n case 'down' :\n return rect1.right > rect2.left && rect1.left < rect2.right;\n default:\n return false;\n }\n }\n\n /**\n * Get distance between the search origin and a candidate element along the direction when candidate element is inside the search origin.\n * @see {@link https://drafts.csswg.org/css-nav-1/#find-the-shortest-distance}\n * @function getDistanceFromPoint\n * @param point {Point} - The search origin\n * @param element {DOMRect} - A candidate element\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Number} The euclidian distance between the spatial navigation container and an element inside it\n */\n function getDistanceFromPoint(point, element, dir) {\n point = startingPoint;\n // Get exit point, entry point -> {x: '', y: ''};\n const points = getEntryAndExitPoints(dir, point, element);\n\n // Find the points P1 inside the border box of starting point and P2 inside the border box of candidate\n // that minimize the distance between these two points\n const P1 = Math.abs(points.entryPoint.x - points.exitPoint.x);\n const P2 = Math.abs(points.entryPoint.y - points.exitPoint.y);\n\n // The result is euclidian distance between P1 and P2.\n return Math.sqrt(Math.pow(P1, 2) + Math.pow(P2, 2));\n }\n\n /**\n * Get distance between the search origin and a candidate element along the direction when candidate element is inside the search origin.\n * @see {@link https://drafts.csswg.org/css-nav-1/#find-the-shortest-distance}\n * @function getInnerDistance\n * @param rect1 {DOMRect} - The search origin\n * @param rect2 {DOMRect} - A candidate element\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Number} The euclidean distance between the spatial navigation container and an element inside it\n */\n function getInnerDistance(rect1, rect2, dir) {\n const baseEdgeForEachDirection = {left: 'right', right: 'left', up: 'bottom', down: 'top'};\n const baseEdge = baseEdgeForEachDirection[dir];\n\n return Math.abs(rect1[baseEdge] - rect2[baseEdge]);\n }\n\n /**\n * Get the distance between the search origin and a candidate element considering the direction.\n * @see {@link https://drafts.csswg.org/css-nav-1/#calculating-the-distance}\n * @function getDistance\n * @param searchOrigin {DOMRect || Point} - The search origin\n * @param candidateRect {DOMRect} - A candidate element\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Number} The distance scoring between two elements\n */\n function getDistance(searchOrigin, candidateRect, dir) {\n const kOrthogonalWeightForLeftRight = 30;\n const kOrthogonalWeightForUpDown = 2;\n\n let orthogonalBias = 0;\n let alignBias = 0;\n const alignWeight = 5.0;\n\n // Get exit point, entry point -> {x: '', y: ''};\n const points = getEntryAndExitPoints(dir, searchOrigin, candidateRect);\n\n // Find the points P1 inside the border box of starting point and P2 inside the border box of candidate\n // that minimize the distance between these two points\n const P1 = Math.abs(points.entryPoint.x - points.exitPoint.x);\n const P2 = Math.abs(points.entryPoint.y - points.exitPoint.y);\n\n // A: The euclidean distance between P1 and P2.\n const A = Math.sqrt(Math.pow(P1, 2) + Math.pow(P2, 2));\n let B, C;\n\n // B: The absolute distance in the direction which is orthogonal to dir between P1 and P2, or 0 if dir is null.\n // C: The intersection edges between a candidate and the starting point.\n\n // D: The square root of the area of intersection between the border boxes of candidate and starting point\n const intersectionRect = getIntersectionRect(searchOrigin, candidateRect);\n const D = intersectionRect.area;\n\n switch (dir) {\n case 'left':\n /* falls through */\n case 'right' :\n // If two elements are aligned, add align bias\n // else, add orthogonal bias\n if (isAligned(searchOrigin, candidateRect, dir))\n alignBias = Math.min(intersectionRect.height / searchOrigin.height , 1);\n else\n orthogonalBias = (searchOrigin.height / 2);\n\n B = (P2 + orthogonalBias) * kOrthogonalWeightForLeftRight;\n C = alignWeight * alignBias;\n break;\n\n case 'up' :\n /* falls through */\n case 'down' :\n // If two elements are aligned, add align bias\n // else, add orthogonal bias\n if (isAligned(searchOrigin, candidateRect, dir))\n alignBias = Math.min(intersectionRect.width / searchOrigin.width , 1);\n else\n orthogonalBias = (searchOrigin.width / 2);\n\n B = (P1 + orthogonalBias) * kOrthogonalWeightForUpDown;\n C = alignWeight * alignBias;\n break;\n\n default:\n B = 0;\n C = 0;\n break;\n }\n\n return (A + B - C - D);\n }\n\n /**\n * Get the euclidean distance between the search origin and a candidate element considering the direction.\n * @function getEuclideanDistance\n * @param rect1 {DOMRect} - The search origin\n * @param rect2 {DOMRect} - A candidate element\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Number} The distance scoring between two elements\n */\n function getEuclideanDistance(rect1, rect2, dir) {\n // Get exit point, entry point\n const points = getEntryAndExitPoints(dir, rect1, rect2);\n\n // Find the points P1 inside the border box of starting point and P2 inside the border box of candidate\n // that minimize the distance between these two points\n const P1 = Math.abs(points.entryPoint.x - points.exitPoint.x);\n const P2 = Math.abs(points.entryPoint.y - points.exitPoint.y);\n\n // Return the euclidean distance between P1 and P2.\n return Math.sqrt(Math.pow(P1, 2) + Math.pow(P2, 2));\n }\n\n /**\n * Get the absolute distance between the search origin and a candidate element considering the direction.\n * @function getAbsoluteDistance\n * @param rect1 {DOMRect} - The search origin\n * @param rect2 {DOMRect} - A candidate element\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Number} The distance scoring between two elements\n */\n function getAbsoluteDistance(rect1, rect2, dir) {\n // Get exit point, entry point\n const points = getEntryAndExitPoints(dir, rect1, rect2);\n\n // Return the absolute distance in the dir direction between P1 and P.\n return ((dir === 'left') || (dir === 'right')) ?\n Math.abs(points.entryPoint.x - points.exitPoint.x) : Math.abs(points.entryPoint.y - points.exitPoint.y);\n }\n\n /**\n * Get entry point and exit point of two elements considering the direction.\n * @function getEntryAndExitPoints\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD). Default value for dir is 'down'.\n * @param searchOrigin {DOMRect | Point} - The search origin which contains the exit point\n * @param candidateRect {DOMRect} - One of candidates which contains the entry point\n * @returns {Points} The exit point from the search origin and the entry point from a candidate\n */\n function getEntryAndExitPoints(dir = 'down', searchOrigin, candidateRect) {\n /**\n * User type definition for Point\n * @typeof {Object} Points\n * @property {Point} Points.entryPoint\n * @property {Point} Points.exitPoint\n */\n const points = {entryPoint: {x: 0, y: 0}, exitPoint:{x: 0, y: 0}};\n\n if (startingPoint) {\n points.exitPoint = searchOrigin;\n\n switch (dir) {\n case 'left':\n points.entryPoint.x = candidateRect.right;\n break;\n case 'up':\n points.entryPoint.y = candidateRect.bottom;\n break;\n case 'right':\n points.entryPoint.x = candidateRect.left;\n break;\n case 'down':\n points.entryPoint.y = candidateRect.top;\n break;\n }\n\n // Set orthogonal direction\n switch (dir) {\n case 'left':\n case 'right':\n if (startingPoint.y <= candidateRect.top) {\n points.entryPoint.y = candidateRect.top;\n } else if (startingPoint.y < candidateRect.bottom) {\n points.entryPoint.y = startingPoint.y;\n } else {\n points.entryPoint.y = candidateRect.bottom;\n }\n break;\n\n case 'up':\n case 'down':\n if (startingPoint.x <= candidateRect.left) {\n points.entryPoint.x = candidateRect.left;\n } else if (startingPoint.x < candidateRect.right) {\n points.entryPoint.x = startingPoint.x;\n } else {\n points.entryPoint.x = candidateRect.right;\n }\n break;\n }\n }\n else {\n // Set direction\n switch (dir) {\n case 'left':\n points.exitPoint.x = searchOrigin.left;\n points.entryPoint.x = (candidateRect.right < searchOrigin.left) ? candidateRect.right : searchOrigin.left;\n break;\n case 'up':\n points.exitPoint.y = searchOrigin.top;\n points.entryPoint.y = (candidateRect.bottom < searchOrigin.top) ? candidateRect.bottom : searchOrigin.top;\n break;\n case 'right':\n points.exitPoint.x = searchOrigin.right;\n points.entryPoint.x = (candidateRect.left > searchOrigin.right) ? candidateRect.left : searchOrigin.right;\n break;\n case 'down':\n points.exitPoint.y = searchOrigin.bottom;\n points.entryPoint.y = (candidateRect.top > searchOrigin.bottom) ? candidateRect.top : searchOrigin.bottom;\n break;\n }\n\n // Set orthogonal direction\n switch (dir) {\n case 'left':\n case 'right':\n if (isBelow(searchOrigin, candidateRect)) {\n points.exitPoint.y = searchOrigin.top;\n points.entryPoint.y = (candidateRect.bottom < searchOrigin.top) ? candidateRect.bottom : searchOrigin.top;\n } else if (isBelow(candidateRect, searchOrigin)) {\n points.exitPoint.y = searchOrigin.bottom;\n points.entryPoint.y = (candidateRect.top > searchOrigin.bottom) ? candidateRect.top : searchOrigin.bottom;\n } else {\n points.exitPoint.y = Math.max(searchOrigin.top, candidateRect.top);\n points.entryPoint.y = points.exitPoint.y;\n }\n break;\n\n case 'up':\n case 'down':\n if (isRightSide(searchOrigin, candidateRect)) {\n points.exitPoint.x = searchOrigin.left;\n points.entryPoint.x = (candidateRect.right < searchOrigin.left) ? candidateRect.right : searchOrigin.left;\n } else if (isRightSide(candidateRect, searchOrigin)) {\n points.exitPoint.x = searchOrigin.right;\n points.entryPoint.x = (candidateRect.left > searchOrigin.right) ? candidateRect.left : searchOrigin.right;\n } else {\n points.exitPoint.x = Math.max(searchOrigin.left, candidateRect.left);\n points.entryPoint.x = points.exitPoint.x;\n }\n break;\n }\n }\n\n return points;\n }\n\n /**\n * Find focusable elements within the container\n * @see {@link https://drafts.csswg.org/css-nav-1/#find-the-shortest-distance}\n * @function getIntersectionRect\n * @param rect1 {DOMRect} - The search origin which contains the exit point\n * @param rect2 {DOMRect} - One of candidates which contains the entry point\n * @returns {IntersectionArea} The intersection area between two elements.\n *\n * @typeof {Object} IntersectionArea\n * @property {Number} IntersectionArea.width\n * @property {Number} IntersectionArea.height\n */\n function getIntersectionRect(rect1, rect2) {\n const intersection_rect = {width: 0, height: 0, area: 0};\n\n const new_location = [Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)];\n const new_max_point = [Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom)];\n\n intersection_rect.width = Math.abs(new_location[0] - new_max_point[0]);\n intersection_rect.height = Math.abs(new_location[1] - new_max_point[1]);\n\n if (!(new_location[0] >= new_max_point[0] || new_location[1] >= new_max_point[1])) {\n // intersecting-cases\n intersection_rect.area = Math.sqrt(intersection_rect.width * intersection_rect.height);\n }\n\n return intersection_rect;\n }\n\n /**\n * Handle the spatial navigation behavior for HTMLInputElement, HTMLTextAreaElement\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input|HTMLInputElement (MDN)}\n * @function handlingEditableElement\n * @param e {Event} - keydownEvent\n * @returns {boolean}\n */\n function handlingEditableElement(e) {\n const SPINNABLE_INPUT_TYPES = ['email', 'date', 'month', 'number', 'time', 'week'],\n TEXT_INPUT_TYPES = ['password', 'text', 'search', 'tel', 'url', null];\n const eventTarget = document.activeElement;\n const startPosition = eventTarget.selectionStart;\n const endPosition = eventTarget.selectionEnd;\n const focusNavigableArrowKey = {left: false, up: false, right: false, down: false};\n\n const dir = ARROW_KEY_CODE[e.keyCode];\n if (dir === undefined) {\n return focusNavigableArrowKey;\n }\n\n if (SPINNABLE_INPUT_TYPES.includes(eventTarget.getAttribute('type')) &&\n (dir === 'up' || dir === 'down')) {\n focusNavigableArrowKey[dir] = true;\n } else if (TEXT_INPUT_TYPES.includes(eventTarget.getAttribute('type')) || eventTarget.nodeName === 'TEXTAREA') {\n if (startPosition === endPosition) { // if there isn't any selected text\n if (startPosition === 0) {\n focusNavigableArrowKey.left = true;\n focusNavigableArrowKey.up = true;\n }\n if (endPosition === eventTarget.value.length) {\n focusNavigableArrowKey.right = true;\n focusNavigableArrowKey.down = true;\n }\n }\n } else { // HTMLDataListElement, HTMLSelectElement, HTMLOptGroup\n focusNavigableArrowKey[dir] = true;\n }\n\n return focusNavigableArrowKey;\n }\n\n /**\n * Get the DOMRect of an element\n * @function getBoundingClientRect\n * @param element {Node}\n * @returns {DOMRect}\n */\n function getBoundingClientRect(element) {\n // memoization\n let rect = mapOfBoundRect && mapOfBoundRect.get(element);\n if (!rect) {\n const boundingClientRect = element.getBoundingClientRect();\n rect = {\n top: Number(boundingClientRect.top.toFixed(2)),\n right: Number(boundingClientRect.right.toFixed(2)),\n bottom: Number(boundingClientRect.bottom.toFixed(2)),\n left: Number(boundingClientRect.left.toFixed(2)),\n width: Number(boundingClientRect.width.toFixed(2)),\n height: Number(boundingClientRect.height.toFixed(2))\n };\n mapOfBoundRect && mapOfBoundRect.set(element, rect);\n }\n return rect;\n }\n\n /**\n * Get the list of the experimental APIs\n * @function getExperimentalAPI\n */\n function getExperimentalAPI() {\n function canScroll(container, dir) {\n return (isScrollable(container, dir) && !isScrollBoundary(container, dir)) ||\n (!container.parentElement && !isHTMLScrollBoundary(container, dir));\n }\n\n function findTarget(findCandidate, element, dir, option) {\n let eventTarget = element;\n let bestNextTarget = null;\n\n // 4\n if (eventTarget === document || eventTarget === document.documentElement) {\n eventTarget = document.body || document.documentElement;\n }\n\n // 5\n // At this point, spatialNavigationSearch can be applied.\n // If startingPoint is either a scroll container or the document,\n // find the best candidate within startingPoint\n if ((isContainer(eventTarget) || eventTarget.nodeName === 'BODY') && !(eventTarget.nodeName === 'INPUT')) {\n if (eventTarget.nodeName === 'IFRAME')\n eventTarget = eventTarget.contentDocument.body;\n\n const candidates = getSpatialNavigationCandidates(eventTarget, option);\n\n // 5-2\n if (Array.isArray(candidates) && candidates.length > 0) {\n return findCandidate ? getFilteredSpatialNavigationCandidates(eventTarget, dir, candidates) : eventTarget.spatialNavigationSearch(dir, {candidates});\n }\n if (canScroll(eventTarget, dir)) {\n return findCandidate ? [] : eventTarget;\n }\n }\n\n // 6\n // Let container be the nearest ancestor of eventTarget\n let container = eventTarget.getSpatialNavigationContainer();\n let parentContainer = (container.parentElement) ? container.getSpatialNavigationContainer() : null;\n\n // When the container is the viewport of a browsing context\n if (!parentContainer && ( window.location !== window.parent.location)) {\n parentContainer = window.parent.document.documentElement;\n }\n\n // 7\n while (parentContainer) {\n const candidates = filteredCandidates(eventTarget, getSpatialNavigationCandidates(container, option), dir, container);\n\n if (Array.isArray(candidates) && candidates.length > 0) {\n bestNextTarget = eventTarget.spatialNavigationSearch(dir, {candidates, container});\n if (bestNextTarget) {\n return findCandidate ? candidates : bestNextTarget;\n }\n }\n\n // If there isn't any candidate and the best candidate among candidate:\n // 1) Scroll or 2) Find candidates of the ancestor container\n // 8 - if\n else if (canScroll(container, dir)) {\n return findCandidate ? [] : eventTarget;\n } else if (container === document || container === document.documentElement) {\n container = window.document.documentElement;\n\n // The page is in an iframe\n if ( window.location !== window.parent.location ) {\n\n // eventTarget needs to be reset because the position of the element in the IFRAME\n // is unuseful when the focus moves out of the iframe\n eventTarget = window.frameElement;\n container = window.parent.document.documentElement;\n if (container.parentElement)\n parentContainer = container.getSpatialNavigationContainer();\n else {\n parentContainer = null;\n break;\n }\n }\n } else {\n // avoiding when spatnav container with tabindex=-1\n if (isFocusable(container)) {\n eventTarget = container;\n }\n\n container = parentContainer;\n if (container.parentElement)\n parentContainer = container.getSpatialNavigationContainer();\n else {\n parentContainer = null;\n break;\n }\n }\n }\n\n if (!parentContainer && container) {\n // Getting out from the current spatnav container\n const candidates = filteredCandidates(eventTarget, getSpatialNavigationCandidates(container, option), dir, container);\n\n // 9\n if (Array.isArray(candidates) && candidates.length > 0) {\n bestNextTarget = eventTarget.spatialNavigationSearch(dir, {candidates, container});\n if (bestNextTarget) {\n return findCandidate ? candidates : bestNextTarget;\n }\n }\n }\n\n if (canScroll(container, dir)) {\n bestNextTarget = eventTarget;\n return bestNextTarget;\n }\n }\n\n return {\n isContainer,\n isScrollContainer,\n findCandidates: findTarget.bind(null, true),\n findNextTarget: findTarget.bind(null, false),\n getDistanceFromTarget: (element, candidateElement, dir) => {\n if ((isContainer(element) || element.nodeName === 'BODY') && !(element.nodeName === 'INPUT')) {\n if (getSpatialNavigationCandidates(element).includes(candidateElement)) {\n return getInnerDistance(getBoundingClientRect(element), getBoundingClientRect(candidateElement), dir);\n }\n }\n return getDistance(getBoundingClientRect(element), getBoundingClientRect(candidateElement), dir);\n }\n };\n }\n\n /**\n * Makes to use the experimental APIs.\n * @function enableExperimentalAPIs\n * @param option {boolean} - If it is true, the experimental APIs can be used or it cannot.\n */\n function enableExperimentalAPIs (option) {\n const currentKeyMode = window.__spatialNavigation__ && window.__spatialNavigation__.keyMode;\n window.__spatialNavigation__ = (option === false) ? getInitialAPIs() : Object.assign(getInitialAPIs(), getExperimentalAPI());\n window.__spatialNavigation__.keyMode = currentKeyMode;\n Object.seal(window.__spatialNavigation__);\n }\n\n /**\n * Set the environment for using the spatial navigation polyfill.\n * @function getInitialAPIs\n */\n function getInitialAPIs() {\n return {\n enableExperimentalAPIs,\n get keyMode() { return this._keymode ? this._keymode : 'ARROW'; },\n set keyMode(mode) { this._keymode = (['SHIFTARROW', 'ARROW', 'NONE'].includes(mode)) ? mode : 'ARROW'; },\n setStartingPoint: function (x, y) {startingPoint = (x && y) ? {x, y} : null;}\n };\n }\n\n window.addEventListener('load', () => {\n initiateSpatialNavigation();\n enableExperimentalAPIs(false);\n });\n})();\n","// No automatic generation: we don't want to depend on fs, as we want to keep this universal\n// ls *-*.json | while read line; do printf \"\\\"`printf $line | cut -d '.' -f1`\\\": require(\\\"./$line\\\"),\\n\"; done\nmodule.exports = function() {\n\treturn {\n\t\t\"ar-AR\": require(\"./ar-AR.json\"),\n\t\t\"id-ID\": require(\"./id-ID.json\"),\n\t\t\"bg-BG\": require(\"./bg-BG.json\"),\n\t\t\"ca-CA\": require(\"./ca-CA.json\"),\n\t\t\"da-DK\": require(\"./da-DK.json\"),\n\t\t\"de-DE\": require(\"./de-DE.json\"),\n\t\t\"el-GR\": require(\"./el-GR.json\"),\n\t\t\"en-US\": require(\"./en-US.json\"),\n\t\t\"eo-EO\": require(\"./eo-EO.json\"),\n\t\t\"es-ES\": require(\"./es-ES.json\"),\n\t\t\"eu-ES\": require(\"./eu-ES.json\"),\n\t\t\"fa-IR\": require(\"./fa-IR.json\"),\n\t\t\"fr-FR\": require(\"./fr-FR.json\"),\n\t\t\"he-IL\": require(\"./he-IL.json\"),\n\t\t\"hi-IN\": require(\"./hi-IN.json\"),\n\t\t\"hr-HR\": require(\"./hr-HR.json\"),\n\t\t\"hu-HU\": require(\"./hu-HU.json\"),\n\t\t\"it-IT\": require(\"./it-IT.json\"),\n\t\t\"mk-MK\": require(\"./mk-MK.json\"),\n\t\t\"my-BM\": require(\"./my-BM.json\"),\n\t\t\"nb-NO\": require(\"./nb-NO.json\"),\n\t\t\"nl-NL\": require(\"./nl-NL.json\"),\n\t\t\"nn-NO\": require(\"./nn-NO.json\"),\n\t\t\"pl-PL\": require(\"./pl-PL.json\"),\n\t\t\"pt-BR\": require(\"./pt-BR.json\"),\n\t\t\"pt-PT\": require(\"./pt-PT.json\"),\n\t\t\"ru-RU\": require(\"./ru-RU.json\"),\n\t\t\"sv-SE\": require(\"./sv-SE.json\"),\n\t\t\"sr-RS\": require(\"./sr-RS.json\"),\n\t\t\"tr-TR\": require(\"./tr-TR.json\"),\n\t\t\"zh-CN\": require(\"./zh-CN.json\"),\n\t\t\"zh-HK\": require(\"./zh-HK.json\"),\n\t\t\"sl-SL\": require(\"./sl-SL.json\"),\n\t\t\"cs-CZ\": require(\"./cs-CZ.json\"),\n\t\t\"te-IN\": require(\"./te-IN.json\"),\n\t\t\"zh-TW\": require(\"./zh-TW.json\"),\n\t}\n};\n\n// ls *-*.json | while read line; do printf \"\\\"`printf $line | cut -d '.' -f1`\\\",\\n\"; done\nmodule.exports.all = [\n\t\"ar-AR\",\n\t\"id-ID\",\n\t\"bg-BG\",\n\t\"ca-CA\",\n\t\"da-DK\",\n\t\"de-DE\",\n\t\"el-GR\",\n\t\"en-US\",\n\t\"eo-EO\",\n\t\"es-ES\",\n\t\"eu-ES\",\n\t\"fa-IR\",\n\t\"fr-FR\",\n\t\"he-IL\",\n\t\"hi-IN\",\n\t\"hr-HR\",\n\t\"hu-HU\",\n\t\"it-IT\",\n\t\"mk-MK\",\n\t\"my-BM\",\n\t\"nb-NO\",\n\t\"nl-NL\",\n\t\"nn-NO\",\n\t\"pl-PL\",\n\t\"pt-BR\",\n\t\"pt-PT\",\n\t\"ru-RU\",\n\t\"sv-SE\",\n\t\"sr-RS\",\n\t\"tr-TR\",\n\t\"zh-CN\",\n\t\"zh-HK\",\n\t\"sl-SL\",\n\t\"cs-CZ\",\n\t\"te-IN\",\n\t\"zh-TW\"\n];\n","/* \nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in \nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN \nTHE SOFTWARE.\n*/\n\nvar base32 = require('./thirty-two');\n\nexports.encode = base32.encode;\nexports.decode = base32.decode;\n","/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n'use strict';\n\nvar charTable = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\nvar byteTable = [\n 0xff, 0xff, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,\n 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,\n 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,\n 0x17, 0x18, 0x19, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,\n 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,\n 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,\n 0x17, 0x18, 0x19, 0xff, 0xff, 0xff, 0xff, 0xff\n];\n\nfunction quintetCount(buff) {\n var quintets = Math.floor(buff.length / 5);\n return buff.length % 5 === 0 ? quintets: quintets + 1;\n}\n\nexports.encode = function(plain) {\n if(!Buffer.isBuffer(plain)){\n \tplain = new Buffer(plain);\n }\n var i = 0;\n var j = 0;\n var shiftIndex = 0;\n var digit = 0;\n var encoded = new Buffer(quintetCount(plain) * 8);\n\n /* byte by byte isn't as pretty as quintet by quintet but tests a bit\n faster. will have to revisit. */\n while(i < plain.length) {\n var current = plain[i];\n\n if(shiftIndex > 3) {\n digit = current & (0xff >> shiftIndex);\n shiftIndex = (shiftIndex + 5) % 8;\n digit = (digit << shiftIndex) | ((i + 1 < plain.length) ?\n plain[i + 1] : 0) >> (8 - shiftIndex);\n i++;\n } else {\n digit = (current >> (8 - (shiftIndex + 5))) & 0x1f;\n shiftIndex = (shiftIndex + 5) % 8;\n if(shiftIndex === 0) i++;\n }\n\n encoded[j] = charTable.charCodeAt(digit);\n j++;\n }\n\n for(i = j; i < encoded.length; i++) {\n encoded[i] = 0x3d; //'='.charCodeAt(0)\n }\n\n return encoded;\n};\n\nexports.decode = function(encoded) {\n var shiftIndex = 0;\n var plainDigit = 0;\n var plainChar;\n var plainPos = 0;\n if(!Buffer.isBuffer(encoded)){\n \tencoded = new Buffer(encoded);\n }\n var decoded = new Buffer(Math.ceil(encoded.length * 5 / 8));\n\n /* byte by byte isn't as pretty as octet by octet but tests a bit\n faster. will have to revisit. */\n for(var i = 0; i < encoded.length; i++) {\n \tif(encoded[i] === 0x3d){ //'='\n \t\tbreak;\n \t}\n\n var encodedByte = encoded[i] - 0x30;\n\n if(encodedByte < byteTable.length) {\n plainDigit = byteTable[encodedByte];\n\n if(shiftIndex <= 3) {\n shiftIndex = (shiftIndex + 5) % 8;\n\n if(shiftIndex === 0) {\n plainChar |= plainDigit;\n decoded[plainPos] = plainChar;\n plainPos++;\n plainChar = 0;\n } else {\n plainChar |= 0xff & (plainDigit << (8 - shiftIndex));\n }\n } else {\n shiftIndex = (shiftIndex + 5) % 8;\n plainChar |= 0xff & (plainDigit >>> shiftIndex);\n decoded[plainPos] = plainChar;\n plainPos++;\n\n plainChar = 0xff & (plainDigit << (8 - shiftIndex));\n }\n } else {\n \tthrow new Error('Invalid input - it is not base32 encoded string');\n }\n }\n\n return decoded.slice(0, plainPos);\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","\"use strict\";Object.defineProperty(exports,Symbol.toStringTag,{value:\"Module\"});const o=require(\"react\");var c=(e=>(e.Mouse=\"mouse\",e.Touch=\"touch\",e.Pointer=\"pointer\",e))(c||{}),a=(e=>(e.CancelledByMovement=\"cancelled-by-movement\",e.CancelledByRelease=\"cancelled-by-release\",e.CancelledOutsideElement=\"cancelled-outside-element\",e))(a||{});const j=()=>typeof window==\"object\"?window?.PointerEvent??null:null,Y=()=>typeof window==\"object\"?window?.TouchEvent??null:null;function D(e){const{nativeEvent:t}=e;if(!t)return!1;const s=Y();return s&&t instanceof s||\"touches\"in t}function A(e){const t=j();return e.nativeEvent instanceof MouseEvent&&!(t&&e.nativeEvent instanceof t)}function S(e){const{nativeEvent:t}=e;if(!t)return!1;const s=j();return s&&t instanceof s||\"pointerId\"in t}function R(e){return A(e)||D(e)||S(e)}function B(e){return D(e)?{x:e.touches[0].pageX,y:e.touches[0].pageY}:A(e)||S(e)?{x:e.pageX,y:e.pageY}:null}function q(e){return{target:e.target,currentTarget:e.currentTarget,nativeEvent:e,persist:()=>{}}}function I(e,{threshold:t=400,captureEvent:s=!1,detect:p=c.Pointer,cancelOnMovement:w=!1,cancelOutsideElement:P=!0,filterEvents:g,onStart:T,onMove:y,onFinish:M,onCancel:C}={}){const h=o.useRef(!1),f=o.useRef(!1),U=o.useRef(),l=o.useRef(),m=o.useRef(e),d=o.useRef(null),E=o.useCallback(n=>r=>{f.current||R(r)&&(g!==void 0&&!g(r)||(s&&r.persist(),T?.(r,{context:n}),d.current=B(r),f.current=!0,U.current=r.currentTarget,l.current=setTimeout(()=>{m.current&&(m.current(r,{context:n}),h.current=!0)},t)))},[s,g,T,t]),i=o.useCallback(n=>(r,u)=>{R(r)&&f.current&&(d.current=null,s&&r.persist(),h.current?M?.(r,{context:n}):f.current&&C?.(r,{context:n,reason:u??a.CancelledByRelease}),h.current=!1,f.current=!1,l.current!==void 0&&clearTimeout(l.current))},[s,M,C]),v=o.useCallback(n=>r=>{if(y?.(r,{context:n}),w&&d.current){const u=B(r);if(u){const b=w===!0?25:w,L={x:Math.abs(u.x-d.current.x),y:Math.abs(u.y-d.current.y)};(L.x>b||L.y>b)&&i(n)(r,a.CancelledByMovement)}}},[i,w,y]),X=o.useCallback(n=>{if(e===null)return{};switch(p){case c.Mouse:{const r={onMouseDown:E(n),onMouseMove:v(n),onMouseUp:i(n)};return P&&(r.onMouseLeave=u=>{i(n)(u,a.CancelledOutsideElement)}),r}case c.Touch:return{onTouchStart:E(n),onTouchMove:v(n),onTouchEnd:i(n)};case c.Pointer:{const r={onPointerDown:E(n),onPointerMove:v(n),onPointerUp:i(n)};return P&&(r.onPointerLeave=u=>i(n)(u,a.CancelledOutsideElement)),r}}},[e,i,P,p,v,E]);return o.useEffect(()=>{if(!window)return;function n(r){const u=q(r);i()(u)}return window.addEventListener(\"mouseup\",n),window.addEventListener(\"touchend\",n),window.addEventListener(\"pointerup\",n),()=>{window.removeEventListener(\"mouseup\",n),window.removeEventListener(\"touchend\",n),window.removeEventListener(\"pointerup\",n)}},[i]),o.useEffect(()=>()=>{l.current!==void 0&&clearTimeout(l.current)},[]),o.useEffect(()=>{m.current=e},[e]),X}exports.LongPressCallbackReason=a;exports.LongPressEventType=c;exports.useLongPress=I;\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default exports for Node. Export the extended versions of VTTCue and\n// VTTRegion in Node since we likely want the capability to convert back and\n// forth between JSON. If we don't then it's not that big of a deal since we're\n// off browser.\nmodule.exports = {\n WebVTT: require(\"./vtt.js\").WebVTT,\n VTTCue: require(\"./vttcue-extended.js\").VTTCue,\n VTTRegion: require(\"./vttregion-extended.js\").VTTRegion\n};\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\n\n(function(global) {\n function makeColorSet(color, opacity) {\n if(opacity === undefined) {\n opacity = 1;\n }\n return \"rgba(\" + [parseInt(color.substring(0, 2), 16),\n parseInt(color.substring(2, 4), 16),\n parseInt(color.substring(4, 6), 16),\n opacity].join(\",\") + \")\";\n }\n\n var WebVTTPrefs = ['webvtt.font.color', 'webvtt.font.opacity', 'webvtt.font.scale',\n 'webvtt.bg.color', 'webvtt.bg.opacity',\n 'webvtt.edge.color', 'webvtt.edge.type'];\n\n var fontScale = 1;\n\n function observe(subject, topic, data) {\n switch (data) {\n case \"webvtt.font.color\":\n case \"webvtt.font.opacity\":\n var fontColor = Services.prefs.getCharPref(\"webvtt.font.color\");\n var fontOpacity = Services.prefs.getIntPref(\"webvtt.font.opacity\") / 100;\n WebVTTSet.fontSet = makeColorSet(fontColor, fontOpacity);\n break;\n case \"webvtt.font.scale\":\n fontScale = Services.prefs.getIntPref(\"webvtt.font.scale\") / 100;\n break;\n case \"webvtt.bg.color\":\n case \"webvtt.bg.opacity\":\n var backgroundColor = Services.prefs.getCharPref(\"webvtt.bg.color\");\n var backgroundOpacity = Services.prefs.getIntPref(\"webvtt.bg.opacity\") / 100;\n WebVTTSet.backgroundSet = makeColorSet(backgroundColor, backgroundOpacity);\n break;\n case \"webvtt.edge.color\":\n case \"webvtt.edge.type\":\n var edgeTypeList = [\"\", \"0px 0px \", \"4px 4px 4px \", \"-2px -2px \", \"2px 2px \"];\n var edgeType = Services.prefs.getIntPref(\"webvtt.edge.type\");\n var edgeColor = Services.prefs.getCharPref(\"webvtt.edge.color\");\n WebVTTSet.edgeSet = edgeTypeList[edgeType] + makeColorSet(edgeColor);\n break;\n }\n }\n\n if(typeof Services !== \"undefined\") {\n var WebVTTSet = {};\n WebVTTPrefs.forEach(function (pref) {\n observe(undefined, undefined, pref);\n Services.prefs.addObserver(pref, observe, false);\n });\n }\n\n var _objCreate = Object.create || (function() {\n function F() {}\n return function(o) {\n if (arguments.length !== 1) {\n throw new Error('Object.create shim only accepts one parameter.');\n }\n F.prototype = o;\n return new F();\n };\n })();\n\n // Creates a new ParserError object from an errorData object. The errorData\n // object should have default code and message properties. The default message\n // property can be overriden by passing in a message parameter.\n // See ParsingError.Errors below for acceptable errors.\n function ParsingError(errorData, message) {\n this.name = \"ParsingError\";\n this.code = errorData.code;\n this.message = message || errorData.message;\n }\n ParsingError.prototype = _objCreate(Error.prototype);\n ParsingError.prototype.constructor = ParsingError;\n\n // ParsingError metadata for acceptable ParsingErrors.\n ParsingError.Errors = {\n BadSignature: {\n code: 0,\n message: \"Malformed WebVTT signature.\"\n },\n BadTimeStamp: {\n code: 1,\n message: \"Malformed time stamp.\"\n }\n };\n\n // Try to parse input as a time stamp.\n function parseTimeStamp(input) {\n\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000;\n }\n\n var m = input.match(/^(\\d+):(\\d{2})(:\\d{2})?\\.(\\d{3})/);\n if (!m) {\n return null;\n }\n\n if (m[3]) {\n // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(m[1], m[2], m[3].replace(\":\", \"\"), m[4]);\n } else if (m[1] > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[1], m[2], 0, m[4]);\n } else {\n // Timestamp takes the form of [minutes]:[seconds].[milliseconds]\n return computeSeconds(0, m[1], m[2], m[4]);\n }\n }\n\n // A settings object holds key/value pairs and will ignore anything but the first\n // assignment to a specific key.\n function Settings() {\n this.values = _objCreate(null);\n }\n\n Settings.prototype = {\n // Only accept the first assignment to any key.\n set: function(k, v) {\n if (!this.get(k) && v !== \"\") {\n this.values[k] = v;\n }\n },\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n get: function(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n return this.has(k) ? this.values[k] : dflt;\n },\n // Check whether we have a value for a key.\n has: function(k) {\n return k in this.values;\n },\n // Accept a setting if its one of the given alternatives.\n alt: function(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n },\n // Accept a setting if its a valid (signed) integer.\n integer: function(k, v) {\n if (/^-?\\d+$/.test(v)) { // integer\n this.set(k, parseInt(v, 10));\n }\n },\n // Accept a setting if its a valid percentage.\n percent: function(k, v) {\n var m;\n if ((m = v.match(/^([\\d]{1,3})(\\.[\\d]*)?%$/))) {\n v = parseFloat(v);\n if (v >= 0 && v <= 100) {\n this.set(k, v);\n return true;\n }\n }\n return false;\n }\n };\n\n // Helper function to parse input into groups separated by 'groupDelim', and\n // interprete each group as a key/value pair separated by 'keyValueDelim'.\n function parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n for (var i in groups) {\n if (typeof groups[i] !== \"string\") {\n continue;\n }\n var kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) {\n continue;\n }\n var k = kv[0];\n var v = kv[1];\n callback(k, v);\n }\n }\n\n function parseCue(input, cue, regionList, successCb, errCb) {\n // Remember the original input if we need to throw an error.\n var oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n if (ts === null) {\n if (errCb) {\n errCb(new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed timestamp: \" + oInput));\n return;\n }\n }\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, \"\");\n return ts;\n }\n\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"region\":\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n break;\n case \"vertical\":\n settings.alt(k, v, [\"rl\", \"lr\"]);\n break;\n case \"line\":\n var vals = v.split(\",\"),\n vals0 = vals[0];\n settings.integer(k, vals0);\n settings.percent(k, vals0) ? settings.set(\"snapToLines\", false) : null;\n settings.alt(k, vals0, [\"auto\"]);\n if (vals.length === 2) {\n settings.alt(\"lineAlign\", vals[1], [\"start\", \"middle\", \"end\"]);\n }\n break;\n case \"position\":\n vals = v.split(\",\");\n settings.percent(k, vals[0]);\n if (vals.length === 2) {\n settings.alt(\"positionAlign\", vals[1], [\"start\", \"middle\", \"end\"]);\n }\n break;\n case \"size\":\n settings.percent(k, v);\n break;\n case \"align\":\n settings.alt(k, v, [\"start\", \"middle\", \"end\", \"left\", \"right\"]);\n break;\n }\n }, /:/, /\\s/);\n\n // Apply default values for any missing fields.\n cue.region = settings.get(\"region\", null);\n cue.vertical = settings.get(\"vertical\", \"\");\n cue.line = settings.get(\"line\", \"auto\");\n cue.lineAlign = settings.get(\"lineAlign\", \"start\");\n cue.snapToLines = settings.get(\"snapToLines\", true);\n cue.size = settings.get(\"size\", 100);\n cue.align = settings.get(\"align\", \"center\");\n cue.position = settings.get(\"position\", \"auto\");\n cue.positionAlign = settings.get(\"positionAlign\", {\n start: \"start\",\n left: \"start\",\n middle: \"middle\",\n end: \"end\",\n right: \"end\"\n }, cue.align);\n\n successCb();\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, \"\");\n }\n\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n\n var timestamp = consumeTimeStamp()\n if (timestamp === undefined) return\n cue.startTime = timestamp; // (1) collect cue start time\n skipWhitespace();\n if (input.substr(0, 3) !== \"-->\") {\n // (3) next characters must match \"-->\"\n errCb(new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed time stamp (time stamps must be separated by '-->'): \" +\n oInput));\n return;\n }\n input = input.substr(3);\n skipWhitespace();\n var timestamp = consumeTimeStamp()\n if (timestamp === undefined) return\n cue.endTime = timestamp; // (5) collect cue end time\n\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n }\n\n var ESCAPE = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n \"‎\": \"\\u200e\",\n \"‏\": \"\\u200f\",\n \" \": \"\\u00a0\"\n };\n\n var TAG_NAME = {\n c: \"span\",\n i: \"i\",\n b: \"b\",\n u: \"u\",\n ruby: \"ruby\",\n rt: \"rt\",\n v: \"span\",\n lang: \"span\"\n };\n\n var TAG_ANNOTATION = {\n v: \"title\",\n lang: \"lang\"\n };\n\n var NEEDS_PARENT = {\n rt: \"ruby\"\n };\n\n // Parse content into a document fragment.\n function parseContent(window, input) {\n function nextToken() {\n // Check for end-of-string.\n if (!input) {\n return null;\n }\n\n // Consume 'n' characters from the input.\n function consume(result) {\n input = input.substr(result.length);\n return result;\n }\n\n var m = input.match(/^([^<]*)(<[^>]+>?)?/);\n // If there is some text before the next tag, return it, otherwise return\n // the tag.\n return consume(m[1] ? m[1] : m[2]);\n }\n\n // Unescape a string 's'.\n function unescape1(e) {\n return ESCAPE[e];\n }\n function unescape(s) {\n while ((m = s.match(/&(amp|lt|gt|lrm|rlm|nbsp);/))) {\n s = s.replace(m[0], unescape1);\n }\n return s;\n }\n\n function shouldAdd(current, element) {\n return !NEEDS_PARENT[element.localName] ||\n NEEDS_PARENT[element.localName] === current.localName;\n }\n\n // Create an element for this tag.\n function createElement(type, annotation) {\n var tagName = TAG_NAME[type];\n if (!tagName) {\n return null;\n }\n var element = window.document.createElement(tagName);\n element.localName = tagName;\n var name = TAG_ANNOTATION[type];\n if (name && annotation) {\n element[name] = annotation.trim();\n }\n return element;\n }\n\n var rootDiv = window.document.createElement(\"div\"),\n current = rootDiv,\n t,\n tagStack = [];\n\n while ((t = nextToken()) !== null) {\n if (t[0] === '<') {\n if (t[1] === \"/\") {\n // If the closing tag matches, move back up to the parent node.\n if (tagStack.length &&\n tagStack[tagStack.length - 1] === t.substr(2).replace(\">\", \"\")) {\n tagStack.pop();\n current = current.parentNode;\n }\n // Otherwise just ignore the end tag.\n continue;\n }\n var ts = parseTimeStamp(t.substr(1, t.length - 2));\n var node;\n if (ts) {\n // Timestamps are lead nodes as well.\n node = window.document.createProcessingInstruction(\"timestamp\", ts);\n current.appendChild(node);\n continue;\n }\n var m = t.match(/^<([^.\\s/0-9>]+)(\\.[^\\s\\\\>]+)?([^>\\\\]+)?(\\\\?)>?$/);\n // If we can't parse the tag, skip to the next tag.\n if (!m) {\n continue;\n }\n // Try to construct an element, and ignore the tag if we couldn't.\n node = createElement(m[1], m[3]);\n if (!node) {\n continue;\n }\n // Determine if the tag should be added based on the context of where it\n // is placed in the cuetext.\n if (!shouldAdd(current, node)) {\n continue;\n }\n // Set the class list (as a list of classes, separated by space).\n if (m[2]) {\n node.className = m[2].substr(1).replace('.', ' ');\n }\n // Append the node to the current node, and enter the scope of the new\n // node.\n tagStack.push(m[1]);\n current.appendChild(node);\n current = node;\n continue;\n }\n\n // Text nodes are leaf nodes.\n current.appendChild(window.document.createTextNode(unescape(t)));\n }\n\n return rootDiv;\n }\n\n // This is a list of all the Unicode characters that have a strong\n // right-to-left category. What this means is that these characters are\n // written right-to-left for sure. It was generated by pulling all the strong\n // right-to-left characters out of the Unicode data table. That table can\n // found at: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\n var strongRTLRanges = [[0x5be, 0x5be], [0x5c0, 0x5c0], [0x5c3, 0x5c3], [0x5c6, 0x5c6],\n [0x5d0, 0x5ea], [0x5f0, 0x5f4], [0x608, 0x608], [0x60b, 0x60b], [0x60d, 0x60d],\n [0x61b, 0x61b], [0x61e, 0x64a], [0x66d, 0x66f], [0x671, 0x6d5], [0x6e5, 0x6e6],\n [0x6ee, 0x6ef], [0x6fa, 0x70d], [0x70f, 0x710], [0x712, 0x72f], [0x74d, 0x7a5],\n [0x7b1, 0x7b1], [0x7c0, 0x7ea], [0x7f4, 0x7f5], [0x7fa, 0x7fa], [0x800, 0x815],\n [0x81a, 0x81a], [0x824, 0x824], [0x828, 0x828], [0x830, 0x83e], [0x840, 0x858],\n [0x85e, 0x85e], [0x8a0, 0x8a0], [0x8a2, 0x8ac], [0x200f, 0x200f],\n [0xfb1d, 0xfb1d], [0xfb1f, 0xfb28], [0xfb2a, 0xfb36], [0xfb38, 0xfb3c],\n [0xfb3e, 0xfb3e], [0xfb40, 0xfb41], [0xfb43, 0xfb44], [0xfb46, 0xfbc1],\n [0xfbd3, 0xfd3d], [0xfd50, 0xfd8f], [0xfd92, 0xfdc7], [0xfdf0, 0xfdfc],\n [0xfe70, 0xfe74], [0xfe76, 0xfefc], [0x10800, 0x10805], [0x10808, 0x10808],\n [0x1080a, 0x10835], [0x10837, 0x10838], [0x1083c, 0x1083c], [0x1083f, 0x10855],\n [0x10857, 0x1085f], [0x10900, 0x1091b], [0x10920, 0x10939], [0x1093f, 0x1093f],\n [0x10980, 0x109b7], [0x109be, 0x109bf], [0x10a00, 0x10a00], [0x10a10, 0x10a13],\n [0x10a15, 0x10a17], [0x10a19, 0x10a33], [0x10a40, 0x10a47], [0x10a50, 0x10a58],\n [0x10a60, 0x10a7f], [0x10b00, 0x10b35], [0x10b40, 0x10b55], [0x10b58, 0x10b72],\n [0x10b78, 0x10b7f], [0x10c00, 0x10c48], [0x1ee00, 0x1ee03], [0x1ee05, 0x1ee1f],\n [0x1ee21, 0x1ee22], [0x1ee24, 0x1ee24], [0x1ee27, 0x1ee27], [0x1ee29, 0x1ee32],\n [0x1ee34, 0x1ee37], [0x1ee39, 0x1ee39], [0x1ee3b, 0x1ee3b], [0x1ee42, 0x1ee42],\n [0x1ee47, 0x1ee47], [0x1ee49, 0x1ee49], [0x1ee4b, 0x1ee4b], [0x1ee4d, 0x1ee4f],\n [0x1ee51, 0x1ee52], [0x1ee54, 0x1ee54], [0x1ee57, 0x1ee57], [0x1ee59, 0x1ee59],\n [0x1ee5b, 0x1ee5b], [0x1ee5d, 0x1ee5d], [0x1ee5f, 0x1ee5f], [0x1ee61, 0x1ee62],\n [0x1ee64, 0x1ee64], [0x1ee67, 0x1ee6a], [0x1ee6c, 0x1ee72], [0x1ee74, 0x1ee77],\n [0x1ee79, 0x1ee7c], [0x1ee7e, 0x1ee7e], [0x1ee80, 0x1ee89], [0x1ee8b, 0x1ee9b],\n [0x1eea1, 0x1eea3], [0x1eea5, 0x1eea9], [0x1eeab, 0x1eebb], [0x10fffd, 0x10fffd]];\n\n function isStrongRTLChar(charCode) {\n for (var i = 0; i < strongRTLRanges.length; i++) {\n var currentRange = strongRTLRanges[i];\n if (charCode >= currentRange[0] && charCode <= currentRange[1]) {\n return true;\n }\n }\n\n return false;\n }\n\n function determineBidi(cueDiv) {\n var nodeStack = [],\n text = \"\",\n charCode;\n\n if (!cueDiv || !cueDiv.childNodes) {\n return \"ltr\";\n }\n\n function pushNodes(nodeStack, node) {\n for (var i = node.childNodes.length - 1; i >= 0; i--) {\n nodeStack.push(node.childNodes[i]);\n }\n }\n\n function nextTextNode(nodeStack) {\n if (!nodeStack || !nodeStack.length) {\n return null;\n }\n\n var node = nodeStack.pop(),\n text = node.textContent || node.innerText;\n if (text) {\n // TODO: This should match all unicode type B characters (paragraph\n // separator characters). See issue #115.\n var m = text.match(/^.*(\\n|\\r)/);\n if (m) {\n nodeStack.length = 0;\n return m[0];\n }\n return text;\n }\n if (node.tagName === \"ruby\") {\n return nextTextNode(nodeStack);\n }\n if (node.childNodes) {\n pushNodes(nodeStack, node);\n return nextTextNode(nodeStack);\n }\n }\n\n pushNodes(nodeStack, cueDiv);\n while ((text = nextTextNode(nodeStack))) {\n for (var i = 0; i < text.length; i++) {\n charCode = text.charCodeAt(i);\n if (isStrongRTLChar(charCode)) {\n return \"rtl\";\n }\n }\n }\n return \"ltr\";\n }\n\n function computeLinePos(cue) {\n if (typeof cue.line === \"number\" &&\n (cue.snapToLines || (cue.line >= 0 && cue.line <= 100))) {\n return cue.line;\n }\n if (!cue.track || !cue.track.textTrackList ||\n !cue.track.textTrackList.mediaElement) {\n return -1;\n }\n var track = cue.track,\n trackList = track.textTrackList,\n count = 0;\n for (var i = 0; i < trackList.length && trackList[i] !== track; i++) {\n if (trackList[i].mode === \"showing\") {\n count++;\n }\n }\n return ++count * -1;\n }\n\n function StyleBox() {\n }\n\n // Apply styles to a div. If there is no div passed then it defaults to the\n // div on 'this'.\n StyleBox.prototype.applyStyles = function(styles, div) {\n div = div || this.div;\n for (var prop in styles) {\n if (styles.hasOwnProperty(prop)) {\n div.style[prop] = styles[prop];\n }\n }\n };\n\n StyleBox.prototype.formatStyle = function(val, unit) {\n return val === 0 ? 0 : val + unit;\n };\n\n // Constructs the computed display state of the cue (a div). Places the div\n // into the overlay which should be a block level element (usually a div).\n function CueStyleBox(window, cue, styleOptions) {\n var isIE8 = (typeof navigator !== \"undefined\") &&\n (/MSIE\\s8\\.0/).test(navigator.userAgent);\n var color = \"rgba(255, 255, 255, 1)\";\n var backgroundColor = \"rgba(0, 0, 0, 0.8)\";\n var textShadow = \"\";\n\n if(typeof WebVTTSet !== \"undefined\") {\n color = WebVTTSet.fontSet;\n backgroundColor = WebVTTSet.backgroundSet;\n textShadow = WebVTTSet.edgeSet;\n }\n\n if (isIE8) {\n color = \"rgb(255, 255, 255)\";\n backgroundColor = \"rgb(0, 0, 0)\";\n }\n\n StyleBox.call(this);\n this.cue = cue;\n\n // Parse our cue's text into a DOM tree rooted at 'cueDiv'. This div will\n // have inline positioning and will function as the cue background box.\n this.cueDiv = parseContent(window, cue.text);\n var styles = {\n color: color,\n backgroundColor: backgroundColor,\n textShadow: textShadow,\n position: \"relative\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"inline\"\n };\n\n if (!isIE8) {\n styles.writingMode = cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\";\n styles.unicodeBidi = \"plaintext\";\n }\n this.applyStyles(styles, this.cueDiv);\n\n // Create an absolutely positioned div that will be used to position the cue\n // div. Note, all WebVTT cue-setting alignments are equivalent to the CSS\n // mirrors of them except \"middle\" which is \"center\" in CSS.\n this.div = window.document.createElement(\"div\");\n styles = {\n textAlign: cue.align === \"middle\" ? \"center\" : cue.align,\n font: styleOptions.font,\n whiteSpace: \"pre-line\",\n position: \"absolute\"\n };\n\n if (!isIE8) {\n styles.direction = determineBidi(this.cueDiv);\n styles.writingMode = cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\".\n stylesunicodeBidi = \"plaintext\";\n }\n\n this.applyStyles(styles);\n\n this.div.appendChild(this.cueDiv);\n\n // Calculate the distance from the reference edge of the viewport to the text\n // position of the cue box. The reference edge will be resolved later when\n // the box orientation styles are applied.\n var textPos = 0;\n switch (cue.positionAlign) {\n case \"start\":\n textPos = cue.position;\n break;\n case \"middle\":\n textPos = cue.position - (cue.size / 2);\n break;\n case \"end\":\n textPos = cue.position - cue.size;\n break;\n }\n\n // Horizontal box orientation; textPos is the distance from the left edge of the\n // area to the left edge of the box and cue.size is the distance extending to\n // the right from there.\n if (cue.vertical === \"\") {\n this.applyStyles({\n left: this.formatStyle(textPos, \"%\"),\n width: this.formatStyle(cue.size, \"%\")\n });\n // Vertical box orientation; textPos is the distance from the top edge of the\n // area to the top edge of the box and cue.size is the height extending\n // downwards from there.\n } else {\n this.applyStyles({\n top: this.formatStyle(textPos, \"%\"),\n height: this.formatStyle(cue.size, \"%\")\n });\n }\n\n this.move = function(box) {\n this.applyStyles({\n top: this.formatStyle(box.top, \"px\"),\n bottom: this.formatStyle(box.bottom, \"px\"),\n left: this.formatStyle(box.left, \"px\"),\n right: this.formatStyle(box.right, \"px\"),\n height: this.formatStyle(box.height, \"px\"),\n width: this.formatStyle(box.width, \"px\")\n });\n };\n }\n CueStyleBox.prototype = _objCreate(StyleBox.prototype);\n CueStyleBox.prototype.constructor = CueStyleBox;\n\n // Represents the co-ordinates of an Element in a way that we can easily\n // compute things with such as if it overlaps or intersects with another Element.\n // Can initialize it with either a StyleBox or another BoxPosition.\n function BoxPosition(obj) {\n var isIE8 = (typeof navigator !== \"undefined\") &&\n (/MSIE\\s8\\.0/).test(navigator.userAgent);\n\n // Either a BoxPosition was passed in and we need to copy it, or a StyleBox\n // was passed in and we need to copy the results of 'getBoundingClientRect'\n // as the object returned is readonly. All co-ordinate values are in reference\n // to the viewport origin (top left).\n var lh, height, width, top;\n if (obj.div) {\n height = obj.div.offsetHeight;\n width = obj.div.offsetWidth;\n top = obj.div.offsetTop;\n\n var rects = (rects = obj.div.childNodes) && (rects = rects[0]) &&\n rects.getClientRects && rects.getClientRects();\n obj = obj.div.getBoundingClientRect();\n // In certain cases the outter div will be slightly larger then the sum of\n // the inner div's lines. This could be due to bold text, etc, on some platforms.\n // In this case we should get the average line height and use that. This will\n // result in the desired behaviour.\n lh = rects ? Math.max((rects[0] && rects[0].height) || 0, obj.height / rects.length)\n : 0;\n\n }\n this.left = obj.left;\n this.right = obj.right;\n this.top = obj.top || top;\n this.height = obj.height || height;\n this.bottom = obj.bottom || (top + (obj.height || height));\n this.width = obj.width || width;\n this.lineHeight = lh !== undefined ? lh : obj.lineHeight;\n\n if (isIE8 && !this.lineHeight) {\n this.lineHeight = 13;\n }\n }\n\n // Move the box along a particular axis. Optionally pass in an amount to move\n // the box. If no amount is passed then the default is the line height of the\n // box.\n BoxPosition.prototype.move = function(axis, toMove) {\n toMove = toMove !== undefined ? toMove : this.lineHeight;\n switch (axis) {\n case \"+x\":\n this.left += toMove;\n this.right += toMove;\n break;\n case \"-x\":\n this.left -= toMove;\n this.right -= toMove;\n break;\n case \"+y\":\n this.top += toMove;\n this.bottom += toMove;\n break;\n case \"-y\":\n this.top -= toMove;\n this.bottom -= toMove;\n break;\n }\n };\n\n // Check if this box overlaps another box, b2.\n BoxPosition.prototype.overlaps = function(b2) {\n return this.left < b2.right &&\n this.right > b2.left &&\n this.top < b2.bottom &&\n this.bottom > b2.top;\n };\n\n // Check if this box overlaps any other boxes in boxes.\n BoxPosition.prototype.overlapsAny = function(boxes) {\n for (var i = 0; i < boxes.length; i++) {\n if (this.overlaps(boxes[i])) {\n return true;\n }\n }\n return false;\n };\n\n // Check if this box is within another box.\n BoxPosition.prototype.within = function(container) {\n return this.top >= container.top &&\n this.bottom <= container.bottom &&\n this.left >= container.left &&\n this.right <= container.right;\n };\n\n // Check if this box is entirely within the container or it is overlapping\n // on the edge opposite of the axis direction passed. For example, if \"+x\" is\n // passed and the box is overlapping on the left edge of the container, then\n // return true.\n BoxPosition.prototype.overlapsOppositeAxis = function(container, axis) {\n switch (axis) {\n case \"+x\":\n return this.left < container.left;\n case \"-x\":\n return this.right > container.right;\n case \"+y\":\n return this.top < container.top;\n case \"-y\":\n return this.bottom > container.bottom;\n }\n };\n\n // Find the percentage of the area that this box is overlapping with another\n // box.\n BoxPosition.prototype.intersectPercentage = function(b2) {\n var x = Math.max(0, Math.min(this.right, b2.right) - Math.max(this.left, b2.left)),\n y = Math.max(0, Math.min(this.bottom, b2.bottom) - Math.max(this.top, b2.top)),\n intersectArea = x * y;\n return intersectArea / (this.height * this.width);\n };\n\n // Convert the positions from this box to CSS compatible positions using\n // the reference container's positions. This has to be done because this\n // box's positions are in reference to the viewport origin, whereas, CSS\n // values are in referecne to their respective edges.\n BoxPosition.prototype.toCSSCompatValues = function(reference) {\n return {\n top: this.top - reference.top,\n bottom: reference.bottom - this.bottom,\n left: this.left - reference.left,\n right: reference.right - this.right,\n height: this.height,\n width: this.width\n };\n };\n\n // Get an object that represents the box's position without anything extra.\n // Can pass a StyleBox, HTMLElement, or another BoxPositon.\n BoxPosition.getSimpleBoxPosition = function(obj) {\n var height = obj.div ? obj.div.offsetHeight : obj.tagName ? obj.offsetHeight : 0;\n var width = obj.div ? obj.div.offsetWidth : obj.tagName ? obj.offsetWidth : 0;\n var top = obj.div ? obj.div.offsetTop : obj.tagName ? obj.offsetTop : 0;\n\n obj = obj.div ? obj.div.getBoundingClientRect() :\n obj.tagName ? obj.getBoundingClientRect() : obj;\n var ret = {\n left: obj.left,\n right: obj.right,\n top: obj.top || top,\n height: obj.height || height,\n bottom: obj.bottom || (top + (obj.height || height)),\n width: obj.width || width\n };\n return ret;\n };\n\n // Move a StyleBox to its specified, or next best, position. The containerBox\n // is the box that contains the StyleBox, such as a div. boxPositions are\n // a list of other boxes that the styleBox can't overlap with.\n function moveBoxToLinePosition(window, styleBox, containerBox, boxPositions) {\n\n // Find the best position for a cue box, b, on the video. The axis parameter\n // is a list of axis, the order of which, it will move the box along. For example:\n // Passing [\"+x\", \"-x\"] will move the box first along the x axis in the positive\n // direction. If it doesn't find a good position for it there it will then move\n // it along the x axis in the negative direction.\n function findBestPosition(b, axis) {\n var bestPosition,\n specifiedPosition = new BoxPosition(b),\n percentage = 1; // Highest possible so the first thing we get is better.\n\n for (var i = 0; i < axis.length; i++) {\n while (b.overlapsOppositeAxis(containerBox, axis[i]) ||\n (b.within(containerBox) && b.overlapsAny(boxPositions))) {\n b.move(axis[i]);\n }\n // We found a spot where we aren't overlapping anything. This is our\n // best position.\n if (b.within(containerBox)) {\n return b;\n }\n var p = b.intersectPercentage(containerBox);\n // If we're outside the container box less then we were on our last try\n // then remember this position as the best position.\n if (percentage > p) {\n bestPosition = new BoxPosition(b);\n percentage = p;\n }\n // Reset the box position to the specified position.\n b = new BoxPosition(specifiedPosition);\n }\n return bestPosition || specifiedPosition;\n }\n\n var boxPosition = new BoxPosition(styleBox),\n cue = styleBox.cue,\n linePos = computeLinePos(cue),\n axis = [];\n\n // If we have a line number to align the cue to.\n if (cue.snapToLines) {\n var size;\n switch (cue.vertical) {\n case \"\":\n axis = [ \"+y\", \"-y\" ];\n size = \"height\";\n break;\n case \"rl\":\n axis = [ \"+x\", \"-x\" ];\n size = \"width\";\n break;\n case \"lr\":\n axis = [ \"-x\", \"+x\" ];\n size = \"width\";\n break;\n }\n\n var step = boxPosition.lineHeight,\n position = step * Math.round(linePos),\n maxPosition = containerBox[size] + step,\n initialAxis = axis[0];\n\n // If the specified intial position is greater then the max position then\n // clamp the box to the amount of steps it would take for the box to\n // reach the max position.\n if (Math.abs(position) > maxPosition) {\n position = position < 0 ? -1 : 1;\n position *= Math.ceil(maxPosition / step) * step;\n }\n\n // If computed line position returns negative then line numbers are\n // relative to the bottom of the video instead of the top. Therefore, we\n // need to increase our initial position by the length or width of the\n // video, depending on the writing direction, and reverse our axis directions.\n if (linePos < 0) {\n position += cue.vertical === \"\" ? containerBox.height : containerBox.width;\n axis = axis.reverse();\n }\n\n // Move the box to the specified position. This may not be its best\n // position.\n boxPosition.move(initialAxis, position);\n\n } else {\n // If we have a percentage line value for the cue.\n var calculatedPercentage = (boxPosition.lineHeight / containerBox.height) * 100;\n\n switch (cue.lineAlign) {\n case \"middle\":\n linePos -= (calculatedPercentage / 2);\n break;\n case \"end\":\n linePos -= calculatedPercentage;\n break;\n }\n\n // Apply initial line position to the cue box.\n switch (cue.vertical) {\n case \"\":\n styleBox.applyStyles({\n top: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"rl\":\n styleBox.applyStyles({\n left: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"lr\":\n styleBox.applyStyles({\n right: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n }\n\n axis = [ \"+y\", \"-x\", \"+x\", \"-y\" ];\n\n // Get the box position again after we've applied the specified positioning\n // to it.\n boxPosition = new BoxPosition(styleBox);\n }\n\n var bestPosition = findBestPosition(boxPosition, axis);\n styleBox.move(bestPosition.toCSSCompatValues(containerBox));\n }\n\n function WebVTT() {\n // Nothing\n }\n\n // Helper to allow strings to be decoded instead of the default binary utf8 data.\n WebVTT.StringDecoder = function() {\n return {\n decode: function(data) {\n if (!data) {\n return \"\";\n }\n if (typeof data !== \"string\") {\n throw new Error(\"Error - expected string data.\");\n }\n return decodeURIComponent(encodeURIComponent(data));\n }\n };\n };\n\n WebVTT.convertCueToDOMTree = function(window, cuetext) {\n if (!window || !cuetext) {\n return null;\n }\n return parseContent(window, cuetext);\n };\n\n var FONT_SIZE_PERCENT = 0.05;\n var FONT_STYLE = \"sans-serif\";\n var CUE_BACKGROUND_PADDING = \"1.5%\";\n\n // Runs the processing model over the cues and regions passed to it.\n // @param overlay A block level element (usually a div) that the computed cues\n // and regions will be placed into.\n WebVTT.processCues = function(window, cues, overlay) {\n if (!window || !cues || !overlay) {\n return null;\n }\n\n // Remove all previous children.\n while (overlay.firstChild) {\n overlay.removeChild(overlay.firstChild);\n }\n\n var paddedOverlay = window.document.createElement(\"div\");\n paddedOverlay.style.position = \"absolute\";\n paddedOverlay.style.left = \"0\";\n paddedOverlay.style.right = \"0\";\n paddedOverlay.style.top = \"0\";\n paddedOverlay.style.bottom = \"0\";\n paddedOverlay.style.margin = CUE_BACKGROUND_PADDING;\n overlay.appendChild(paddedOverlay);\n\n // Determine if we need to compute the display states of the cues. This could\n // be the case if a cue's state has been changed since the last computation or\n // if it has not been computed yet.\n function shouldCompute(cues) {\n for (var i = 0; i < cues.length; i++) {\n if (cues[i].hasBeenReset || !cues[i].displayState) {\n return true;\n }\n }\n return false;\n }\n\n // We don't need to recompute the cues' display states. Just reuse them.\n if (!shouldCompute(cues)) {\n for (var i = 0; i < cues.length; i++) {\n paddedOverlay.appendChild(cues[i].displayState);\n }\n return;\n }\n\n var boxPositions = [],\n containerBox = BoxPosition.getSimpleBoxPosition(paddedOverlay),\n fontSize = Math.round(containerBox.height * FONT_SIZE_PERCENT * 100) / 100;\n var styleOptions = {\n font: (fontSize * fontScale) + \"px \" + FONT_STYLE\n };\n\n (function() {\n var styleBox, cue;\n\n for (var i = 0; i < cues.length; i++) {\n cue = cues[i];\n\n // Compute the intial position and styles of the cue div.\n styleBox = new CueStyleBox(window, cue, styleOptions);\n paddedOverlay.appendChild(styleBox.div);\n\n // Move the cue div to it's correct line position.\n moveBoxToLinePosition(window, styleBox, containerBox, boxPositions);\n\n // Remember the computed div so that we don't have to recompute it later\n // if we don't have too.\n cue.displayState = styleBox.div;\n\n boxPositions.push(BoxPosition.getSimpleBoxPosition(styleBox));\n }\n })();\n };\n\n WebVTT.Parser = function(window, decoder, VTTCue) {\n this.window = window;\n this.state = \"INITIAL\";\n this.buffer = \"\";\n this.decoder = decoder || new TextDecoder(\"utf8\");\n this.regionList = [];\n this.VTTCue = VTTCue\n };\n\n WebVTT.Parser.prototype = {\n // If the error is a ParsingError then report it to the consumer if\n // possible. If it's not a ParsingError then throw it like normal.\n reportOrThrowError: function(e) {\n if (e instanceof ParsingError) {\n this.onparsingerror && this.onparsingerror(e);\n } else {\n throw e;\n }\n },\n parse: function (data) {\n var self = this;\n\n // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n if (data) {\n // Try to decode the data that we received.\n self.buffer += self.decoder.decode(data, {stream: true});\n }\n\n function collectNextLine() {\n var buffer = self.buffer;\n var pos = 0;\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n var line = buffer.substr(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n self.buffer = buffer.substr(pos);\n return line;\n }\n\n // 3.4 WebVTT region and WebVTT region settings syntax\n function parseRegion(input) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"id\":\n settings.set(k, v);\n break;\n case \"width\":\n settings.percent(k, v);\n break;\n case \"lines\":\n settings.integer(k, v);\n break;\n case \"regionanchor\":\n case \"viewportanchor\":\n var xy = v.split(',');\n if (xy.length !== 2) {\n break;\n }\n // We have to make sure both x and y parse, so use a temporary\n // settings object here.\n var anchor = new Settings();\n anchor.percent(\"x\", xy[0]);\n anchor.percent(\"y\", xy[1]);\n if (!anchor.has(\"x\") || !anchor.has(\"y\")) {\n break;\n }\n settings.set(k + \"X\", anchor.get(\"x\"));\n settings.set(k + \"Y\", anchor.get(\"y\"));\n break;\n case \"scroll\":\n settings.alt(k, v, [\"up\"]);\n break;\n }\n }, /=/, /\\s/);\n\n // Create the region, using default values for any values that were not\n // specified.\n if (settings.has(\"id\")) {\n var region = new self.window.VTTRegion();\n region.width = settings.get(\"width\", 100);\n region.lines = settings.get(\"lines\", 3);\n region.regionAnchorX = settings.get(\"regionanchorX\", 0);\n region.regionAnchorY = settings.get(\"regionanchorY\", 100);\n region.viewportAnchorX = settings.get(\"viewportanchorX\", 0);\n region.viewportAnchorY = settings.get(\"viewportanchorY\", 100);\n region.scroll = settings.get(\"scroll\", \"\");\n // Register the region.\n self.onregion && self.onregion(region);\n // Remember the VTTRegion for later in case we parse any VTTCues that\n // reference it.\n self.regionList.push({\n id: settings.get(\"id\"),\n region: region\n });\n }\n }\n\n // draft-pantos-http-live-streaming-20\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.5\n // 3.5 WebVTT\n function parseTimestampMap(input) {\n var settings = new Settings();\n\n parseOptions(input, function(k, v) {\n switch (k) {\n case \"MPEGT\":\n settings.integer(k + 'S', v);\n break;\n case \"LOCA\":\n settings.set(k + 'L', parseTimeStamp(v));\n break;\n }\n }, /[^\\d]:/, /,/);\n\n self.ontimestampmap && self.ontimestampmap({\n \"MPEGTS\": settings.get(\"MPEGTS\"),\n \"LOCAL\": settings.get(\"LOCAL\")\n });\n }\n\n // 3.2 WebVTT metadata header syntax\n function parseHeader(input) {\n if (input.match(/X-TIMESTAMP-MAP/)) {\n // This line contains HLS X-TIMESTAMP-MAP metadata\n parseOptions(input, function(k, v) {\n switch (k) {\n case \"X-TIMESTAMP-MAP\":\n parseTimestampMap(v);\n break;\n }\n }, /=/);\n } else {\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"Region\":\n // 3.3 WebVTT region metadata header syntax\n parseRegion(v);\n break;\n }\n }, /:/);\n }\n }\n\n // 5.1 WebVTT file parsing.\n\n function fail(e) {\n\n self.reportOrThrowError(e);\n\n // If we are currently parsing a cue, report what we have.\n if (self.state === \"CUETEXT\" && self.cue && self.oncue) {\n self.oncue(self.cue);\n }\n self.cue = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n self.state = self.state === \"INITIAL\" ? \"BADWEBVTT\" : \"BADCUE\";\n\n }\n\n var line;\n\n if (self.state === \"INITIAL\") {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n line = collectNextLine();\n\n var m = line.match(/^WEBVTT([ \\t].*)?$/);\n if (!m || !m[0]) {\n fail(new ParsingError(ParsingError.Errors.BadSignature))\n return\n }\n\n self.state = \"HEADER\";\n }\n\n var alreadyCollectedLine = false;\n\n var lineparse = function() {\n // We can't parse a line until we have the full line.\n if (!self.buffer || !/\\r\\n|\\n/.test(self.buffer)) {\n self.flush()\n return\n }\n\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n\n switch (self.state) {\n case \"HEADER\":\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n self.state = \"ID\";\n }\n linebyline();\n break;\n case \"NOTE\":\n // Ignore NOTE blocks.\n if (!line) {\n self.state = \"ID\";\n }\n linebyline();\n break;\n case \"ID\":\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n self.state = \"NOTE\";\n linebyline();\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) {\n linebyline();\n break;\n }\n self.cue = new (self.VTTCue || self.window.VTTCue)(0, 0, \"\");\n self.state = \"CUE\";\n // 30-39 - Check if self line contains an optional identifier or timing data.\n if (line.indexOf(\"-->\") === -1) {\n self.cue.id = line;\n linebyline();\n break;\n }\n // Process line as start of a cue.\n /*falls through*/\n case \"CUE\":\n // 40 - Collect cue timings and settings.\n\n parseCue(line, self.cue, self.regionList, function successCb() {\n\n self.state = \"CUETEXT\";\n\n linebyline();\n\n }, function errCb(err) {\n\n self.reportOrThrowError(err);\n\n // In case of an error ignore rest of the cue.\n self.cue = null;\n self.state = \"BADCUE\";\n\n linebyline();\n\n });\n\n break;\n case \"CUETEXT\":\n var hasSubstring = line.indexOf(\"-->\") !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n self.oncue && self.oncue(self.cue);\n self.cue = null;\n self.state = \"ID\";\n linebyline();\n break;\n }\n if (self.cue.text) {\n self.cue.text += \"\\n\";\n }\n self.cue.text += line;\n linebyline();\n break;\n case \"BADCUE\":\n // BADCUE\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n self.state = \"ID\";\n }\n linebyline();\n break;\n }\n };\n\n var STACK_LIMIT = 1000;\n\n var count = 0\n\n function unwrapStack(fn) {\n return function() {\n count++\n if (count < STACK_LIMIT) return fn()\n setTimeout(function() {\n count = 0\n fn()\n })\n }\n }\n\n var linebyline = unwrapStack(lineparse)\n\n linebyline();\n\n return this;\n },\n flush: function () {\n var self = this;\n try {\n // Finish decoding the stream.\n self.buffer += self.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (self.cue || self.state === \"HEADER\") {\n self.buffer += \"\\n\\n\";\n self.parse();\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (self.state === \"INITIAL\") {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n } catch(e) {\n self.reportOrThrowError(e);\n }\n self.onflush && self.onflush();\n return this;\n }\n };\n\n global.WebVTT = WebVTT;\n\n}(this));\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// If we're in Node.js then require VTTCue so we can extend it, otherwise assume\n// VTTCue is on the global.\nif (typeof module !== \"undefined\" && module.exports) {\n this.VTTCue = this.VTTCue || require(\"./vttcue\").VTTCue;\n}\n\n// Extend VTTCue with methods to convert to JSON, from JSON, and construct a\n// VTTCue from an options object. The primary purpose of this is for use in the\n// vtt.js test suite (for testing only properties that we care about). It's also\n// useful if you need to work with VTTCues in JSON format.\n(function(root) {\n\n root.VTTCue.prototype.toJSON = function() {\n var cue = {},\n self = this;\n // Filter out getCueAsHTML as it's a function and hasBeenReset and displayState as\n // they're only used when running the processing model algorithm.\n Object.keys(this).forEach(function(key) {\n if (key !== \"getCueAsHTML\" && key !== \"hasBeenReset\" && key !== \"displayState\") {\n cue[key] = self[key];\n }\n });\n return cue;\n };\n\n root.VTTCue.create = function(options) {\n if (!options.hasOwnProperty(\"startTime\") || !options.hasOwnProperty(\"endTime\") ||\n !options.hasOwnProperty(\"text\")) {\n throw new Error(\"You must at least have start time, end time, and text.\");\n }\n var cue = new root.VTTCue(options.startTime, options.endTime, options.text);\n for (var key in options) {\n if (cue.hasOwnProperty(key)) {\n cue[key] = options[key];\n }\n }\n return cue;\n };\n\n root.VTTCue.fromJSON = function(json) {\n return this.create(JSON.parse(json));\n };\n\n}(this));\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function(root) {\n\n var autoKeyword = \"auto\";\n var directionSetting = {\n \"\": true,\n \"lr\": true,\n \"rl\": true\n };\n var alignSetting = {\n \"start\": true,\n \"middle\": true,\n \"end\": true,\n \"left\": true,\n \"right\": true\n };\n\n function findDirectionSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var dir = directionSetting[value.toLowerCase()];\n return dir ? value.toLowerCase() : false;\n }\n\n function findAlignSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var align = alignSetting[value.toLowerCase()];\n return align ? value.toLowerCase() : false;\n }\n\n function extend(obj) {\n var i = 1;\n for (; i < arguments.length; i++) {\n var cobj = arguments[i];\n for (var p in cobj) {\n obj[p] = cobj[p];\n }\n }\n\n return obj;\n }\n\n function VTTCue(startTime, endTime, text) {\n var cue = this;\n var isIE8 = (/MSIE\\s8\\.0/).test(navigator.userAgent);\n var baseObj = {};\n\n if (isIE8) {\n cue = document.createElement('custom');\n } else {\n baseObj.enumerable = true;\n }\n\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n cue.hasBeenReset = false;\n\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = \"\";\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = \"\";\n var _snapToLines = true;\n var _line = \"auto\";\n var _lineAlign = \"start\";\n var _position = 50;\n var _positionAlign = \"middle\";\n var _size = 50;\n var _align = \"middle\";\n\n Object.defineProperty(cue,\n \"id\", extend({}, baseObj, {\n get: function() {\n return _id;\n },\n set: function(value) {\n _id = \"\" + value;\n }\n }));\n\n Object.defineProperty(cue,\n \"pauseOnExit\", extend({}, baseObj, {\n get: function() {\n return _pauseOnExit;\n },\n set: function(value) {\n _pauseOnExit = !!value;\n }\n }));\n\n Object.defineProperty(cue,\n \"startTime\", extend({}, baseObj, {\n get: function() {\n return _startTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Start time must be set to a number.\");\n }\n _startTime = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"endTime\", extend({}, baseObj, {\n get: function() {\n return _endTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"End time must be set to a number.\");\n }\n _endTime = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"text\", extend({}, baseObj, {\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = \"\" + value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"region\", extend({}, baseObj, {\n get: function() {\n return _region;\n },\n set: function(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"vertical\", extend({}, baseObj, {\n get: function() {\n return _vertical;\n },\n set: function(value) {\n var setting = findDirectionSetting(value);\n // Have to check for false because the setting an be an empty string.\n if (setting === false) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _vertical = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"snapToLines\", extend({}, baseObj, {\n get: function() {\n return _snapToLines;\n },\n set: function(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"line\", extend({}, baseObj, {\n get: function() {\n return _line;\n },\n set: function(value) {\n if (typeof value !== \"number\" && value !== autoKeyword) {\n throw new SyntaxError(\"An invalid number or illegal string was specified.\");\n }\n _line = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"lineAlign\", extend({}, baseObj, {\n get: function() {\n return _lineAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"position\", extend({}, baseObj, {\n get: function() {\n return _position;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Position must be between 0 and 100.\");\n }\n _position = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"positionAlign\", extend({}, baseObj, {\n get: function() {\n return _positionAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"size\", extend({}, baseObj, {\n get: function() {\n return _size;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Size must be between 0 and 100.\");\n }\n _size = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"align\", extend({}, baseObj, {\n get: function() {\n return _align;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _align = setting;\n this.hasBeenReset = true;\n }\n }));\n\n /**\n * Other <track> spec defined properties\n */\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n cue.displayState = undefined;\n\n if (isIE8) {\n return cue;\n }\n }\n\n /**\n * VTTCue methods\n */\n\n VTTCue.prototype.getCueAsHTML = function() {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n return WebVTT.convertCueToDOMTree(window, this.text);\n };\n\n root.VTTCue = root.VTTCue || VTTCue;\n}(this));\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// If we're in Node.js then require VTTRegion so we can extend it, otherwise assume\n// VTTRegion is on the global.\nif (typeof module !== \"undefined\" && module.exports) {\n this.VTTRegion = require(\"./vttregion\").VTTRegion;\n}\n\n// Extend VTTRegion with methods to convert to JSON, from JSON, and construct a\n// VTTRegion from an options object. The primary purpose of this is for use in the\n// vtt.js test suite. It's also useful if you need to work with VTTRegions in\n// JSON format.\n(function(root) {\n\n root.VTTRegion.create = function(options) {\n var region = new root.VTTRegion();\n for (var key in options) {\n if (region.hasOwnProperty(key)) {\n region[key] = options[key];\n }\n }\n return region;\n };\n\n root.VTTRegion.fromJSON = function(json) {\n return this.create(JSON.parse(json));\n };\n\n}(this));\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function(root) {\n\n var scrollSetting = {\n \"\": true,\n \"up\": true\n };\n\n function findScrollSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var scroll = scrollSetting[value.toLowerCase()];\n return scroll ? value.toLowerCase() : false;\n }\n\n function isValidPercentValue(value) {\n return typeof value === \"number\" && (value >= 0 && value <= 100);\n }\n\n // VTTRegion shim http://dev.w3.org/html5/webvtt/#vttregion-interface\n function VTTRegion() {\n var _width = 100;\n var _lines = 3;\n var _regionAnchorX = 0;\n var _regionAnchorY = 100;\n var _viewportAnchorX = 0;\n var _viewportAnchorY = 100;\n var _scroll = \"\";\n\n Object.defineProperties(this, {\n \"width\": {\n enumerable: true,\n get: function() {\n return _width;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"Width must be between 0 and 100.\");\n }\n _width = value;\n }\n },\n \"lines\": {\n enumerable: true,\n get: function() {\n return _lines;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Lines must be set to a number.\");\n }\n _lines = value;\n }\n },\n \"regionAnchorY\": {\n enumerable: true,\n get: function() {\n return _regionAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorX must be between 0 and 100.\");\n }\n _regionAnchorY = value;\n }\n },\n \"regionAnchorX\": {\n enumerable: true,\n get: function() {\n return _regionAnchorX;\n },\n set: function(value) {\n if(!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorY must be between 0 and 100.\");\n }\n _regionAnchorX = value;\n }\n },\n \"viewportAnchorY\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorY must be between 0 and 100.\");\n }\n _viewportAnchorY = value;\n }\n },\n \"viewportAnchorX\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorX;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorX must be between 0 and 100.\");\n }\n _viewportAnchorX = value;\n }\n },\n \"scroll\": {\n enumerable: true,\n get: function() {\n return _scroll;\n },\n set: function(value) {\n var setting = findScrollSetting(value);\n // Have to check for false as an empty string is a legal value.\n if (setting === false) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _scroll = setting;\n }\n }\n });\n }\n\n root.VTTRegion = root.VTTRegion || VTTRegion;\n}(this));\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\nmodule.exports = _toArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl + \"../../\";","// Copyright (C) 2017-2023 Smart code 203358507\n\nif (typeof process.env.SENTRY_DSN === 'string') {\n const Sentry = require('@sentry/browser');\n Sentry.init({ dsn: process.env.SENTRY_DSN });\n}\n\nconst Bowser = require('bowser');\nconst browser = Bowser.parse(window.navigator?.userAgent || '');\nif (browser?.platform?.type === 'desktop') {\n document.querySelector('meta[name=\"viewport\"]')?.setAttribute('content', '');\n}\n\nconst React = require('react');\nconst ReactDOM = require('react-dom/client');\nconst i18n = require('i18next');\nconst { initReactI18next } = require('react-i18next');\nconst stremioTranslations = require('stremio-translations');\nconst App = require('./App');\n\nconst translations = Object.fromEntries(Object.entries(stremioTranslations()).map(([key, value]) => [key, {\n translation: value\n}]));\n\ni18n\n .use(initReactI18next)\n .init({\n resources: translations,\n lng: 'en-US',\n fallbackLng: 'en-US',\n interpolation: {\n escapeValue: false\n }\n });\n\nconst root = ReactDOM.createRoot(document.getElementById('app'));\nroot.render(<App />);\n\nif (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n window.addEventListener('load', () => {\n navigator.serviceWorker.register('service-worker.js')\n .catch((registrationError) => {\n console.error('SW registration failed: ', registrationError);\n });\n });\n}\n"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","isArray","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","fn","self","this","args","arguments","apply","err","undefined","instance","Constructor","TypeError","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","protoProps","staticProps","prototype","obj","_i","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","push","objectWithoutPropertiesLoose","source","excluded","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_typeof","constructor","arrayLikeToArray","o","minLen","n","toString","slice","name","from","test","_interopRequireDefault","_regenerator","_asyncToGenerator2","scope","handler","addEventListener","_ref2","mark","_callee","_ref","request","id","path","data","thisArg","wrap","_context","prev","abrupt","reduce","prop","sent","postMessage","response","result","t0","stop","_x","_ref3","_callee2","_context2","Math","random","onMessage","_ref4","removeEventListener","_x2","_x3","React","PropTypes","icons","Icon","forwardRef","ref","icon","createElement","assign","viewBox","paths","map","index","d","displayName","propTypes","oneOf","EventEmitter","ERROR","ChromecastSenderVideo","options","containerElement","HTMLElement","Error","chromecastTransport","device","getCastDevice","deviceNameContainerElement","document","style","display","flexDirection","alignItems","justifyContent","width","height","backgroundColor","deviceNameLabelElement","flex","maxWidth","fontSize","lineHeight","maxHeight","textAlign","color","innerText","friendlyName","appendChild","on","onMessageReceivedError","events","destroyed","observedProps","stream","loaded","paused","time","duration","buffering","buffered","audioTracks","selectedAudioTrackId","subtitlesTracks","selectedSubtitlesTrackId","subtitlesOffset","subtitlesSize","subtitlesTextColor","subtitlesBackgroundColor","subtitlesOutlineColor","volume","muted","playbackSpeed","extraSubtitlesTracks","selectedExtraSubtitlesTrackId","extraSubtitlesDelay","extraSubtitlesSize","extraSubtitlesOffset","extraSubtitlesTextColor","extraSubtitlesBackgroundColor","extraSubtitlesOutlineColor","onMessageSendError","action","emit","CHROMECAST_SENDER_VIDEO","MESSAGE_SEND_FAILED","INVALID_MESSAGE_RECEIVED","message","event","concat","onPropChanged","propName","propValue","eventName","listener","dispatch","type","hasOwnProperty","sendMessage","catch","commandName","commandArgs","removeAllListeners","off","removeChild","JSON","stringify","canPlayStream","manifest","external","commands","Hls","cloneDeep","deepFreeze","Color","getContentType","HLS_CONFIG","HTMLVideo","styleElement","sheet","insertRule","videoElement","controls","onerror","code","HTML_VIDEO","MEDIA_ERR_ABORTED","MEDIA_ERR_NETWORK","MEDIA_ERR_DECODE","MEDIA_ERR_SRC_NOT_SUPPORTED","UNKNOWN_ERROR","onError","critical","onVideoError","onended","onpause","onplay","ontimeupdate","ondurationchange","onwaiting","onseeking","onseeked","onstalled","onplaying","oncanplay","canplaythrough","onloadedmetadata","onloadeddata","onvolumechange","onratechange","textTracks","onchange","onCueChange","forEach","track","oncuechange","hls","getProp","readyState","HAVE_METADATA","currentTime","isFinite","floor","HAVE_FUTURE_DATA","start","end","freeze","String","lang","language","label","origin","embedded","mode","parseInt","cssRules","textShadow","audioTrack","playbackRate","cues","cue","snapToLines","line","command","url","autoplay","contentType","isSupported","Events","AUDIO_TRACKS_UPDATED","AUDIO_TRACK_SWITCHED","loadSource","attachMedia","src","UNSUPPORTED_STREAM","detachMedia","destroy","removeAttribute","load","pause","play","selecterdSubtitlesTrack","find","max","min","rgb","string","console","selecterdAudioTrack","split","pop","parseFloat","setProp","behaviorHints","notWebReady","canPlayType","proxyHeaders","fetch","method","resp","ok","headers","get","status","statusText","debug","enableWorker","lowLatencyMode","backBufferLength","maxBufferLength","maxMaxBufferLength","maxFragLookUpTolerance","maxBufferHole","appendErrorMaxRetry","nudgeMaxRetry","manifestLoadingTimeOut","manifestLoadingMaxRetry","IFrameVideo","iframeElement","border","allowFullscreen","allow","contentWindow","playerFrameUrl","window","onload","SUBS_SCALE_FACTOR","stremioToMPVProps","ShellVideo","ipc","shellTransport","stremioProps","send","continueFrom","avgDuration","setBackground","visible","bg","container","parentElement","background","last_time","log","windowRenderer","navigator","platform","videoOutput","mpvSeparateWindow","separateWindow","speed","aid","mute","sid","logProp","intDuration","round","embeddedProp","filter","x","title","current_time","actualId","argb","replace","selectVideoImplementation","StremioVideo","video","Video","TizenVideo","WebOsVideo","YouTubeVideo","withStreamingServer","withHTMLSubtitles","externalUrl","getCastState","cast","framework","CastState","CONNECTED","ytId","streamingServerURL","g","tizen","webOS","isBuffering","videoSpeed","currentSubTrack","currentAudioTrack","lastSub","promiseAudioTrackChange","size","offset","textColor","outlineColor","objElement","disabledSubs","refreshSubtitle","lastSubDurationDiff","now","renderSubtitle","text","subtitleTimeout","clearTimeout","subtitlesElement","hasChildNodes","lastChild","bottom","cueNode","innerHTML","padding","setTimeout","Listener","onbufferingstart","onbufferingprogress","onbufferingcomplete","oncurrentplaytime","onsubtitlechange","onstreamcompleted","webapis","avplay","setListener","position","right","left","zIndex","isPaused","getState","setSelectTrack","getCurrentTime","getDuration","totalTrackInfo","getTotalTrackInfo","textTrack","textTrackId","extra","parse","extra_info","e","textTrackLang","track_lang","trim","currentTracks","getCurrentStreamInfo","currentIndex","audioTrackId","audioTrackLang","open","setDisplayRect","innerWidth","innerHeight","setDisplayMethod","seekTo","prepare","willPause","lastKnownProp","selectedSubtitlesTrack","selectedAudioTrack","setSpeed","luna","params","fail","onSuccess","onFailure","service","runWebOS","failed","parameters","need","webOsColors","stremioColors","knownMediaId","subSize","subscribed","count_message","subscribe","cb","answered","sourceInfo","programInfo","numSubtitleTracks","subtitleTrackInfo","setSubs","numAudioTracks","audioTrackInfo","setTracks","unsubscribe","errorCode","unloadCompleted","mediaId","state","toggleSubtitles","startTime","lastSubColor","lastSubBgColor","lastSubBgOpacity","lastPlaybackSpeed","trackIndex","nextOffset","nextSubSize","nextColor","enabled","count","timer","setInterval","clearInterval","timeChangedTimeout","apiScriptElement","YT","ready","onAPIError","PlayerState","Player","videoContainerElement","playerVars","cc_load_policy","disablekb","enablejsapi","fs","iv_load_policy","loop","modestbranding","playsinline","rel","onReady","onVideoReady","onApiChange","onVideoAPIChange","onStateChange","onVideoStateChange","timeChangedIntervalId","pendingLoadArgs","YOUTUBE_VIDEO","API_LOAD_FAILED","videoError","INVALID_PARAMETER","HTML5_VIDEO","VIDEO_NOT_FOUND","VIDEO_NOT_EMBEDDABLE","loadModule","setOption","ENDED","CUED","UNSTARTED","PAUSED","PLAYING","getPlayerState","BUFFERING","getVolume","isMuted","getOption","languageCode","loadVideoById","videoId","startSeconds","cueVideoById","stopVideo","pauseVideo","playVideo","unMute","setVolume","selecterdTrack","WITH_HTML_SUBTITLES","LOAD_FAILED","WITH_STREAMING_SERVER","CONVERT_FAILED","mediaElement","VIDEO_CODEC_CONFIGS","codec","mime","aliases","AUDIO_CODEC_CONFIGS","canPlay","config","formats","videoCodecs","audioCodecs","maxAudioChannels","userAgent","AudioContext","maxChannelCount","destination","getMaxAudioChannels","array","middle","convertSrtCue","caption","s","splice","match","m","convert","includes","srt","cuelist","srt2webvtt","VTTJS","binarySearchUpperBound","parser","WebVTT","Parser","StringDecoder","errors","cuesByTime","oncue","c","endTime","onparsingerror","onflush","warn","times","sort","t1","t2","j","k","c1","c2","render","nodes","timeIndex","cuesForTime","node","convertCueToDOMTree","subtitlesParser","subtitlesRenderer","subtitlesConverter","VideoWithHTMLSubtitles","onVideoPropEvent","bind","onOtherVideoEvent","videoState","tracks","selectedTrackId","delay","renderSubtitles","videoPropValue","selectedTrack","findIndex","t","subtitles","exclusive","observeProp","magnet","createTorrent","seriesInfo","infoHash","fileIdx","announce","parsedMagnetURI","decode","sources","buildTorrentUrl","query","URLSearchParams","encodeURIComponent","body","torrent","peerSearch","guessFileIdx","season","episode","json","guessedFileIdx","hat","mediaCapabilities","convertStream","VideoWithStreamingServer","loadArgs","actionsQueue","mediaURL","canPlayStreamOptions","forceTranscoding","queryParams","set","videoCodec","append","audioCodec","shift","flushActionsQueue","probe","isFormatSupported","some","format","areStreamsSupported","streams","every","channels","r","l","toStringTag","create","default","p","VERSION","PALETTE_MATERIAL_CHROME","PALETTE_MATERIAL_500","COLOR_NAMES","getLuminance","intToRgb","rgbToInt","rgbToHsv","rgbToHsl","hslToRgb","rgbToHex","parseColor","parseColorToHsla","parseColorToHsl","parseColorToRgba","parseColorToRgb","createPicker","a","return","u","h","attachTo","showHSL","showRGB","showHEX","showAlpha","palette","paletteEditable","useAlphaInPalette","slBarSize","hueBarSize","alphaBarSize","f","b","v","NodeList","querySelector","jquery","getContext","createLinearGradient","addColorStop","setHue","fillStyle","fillRect","globalCompositeOperation","grabColor","getImageData","findColor","A","y","Number","nvl","hasAttribute","getAttribute","H","S","L","R","G","B","element","className","setupHueCanvas","hueBarHelper","huePointer","setupSlCanvas","slBarHelper","slPointer","preview","setupClipboard","setupInput","inputH","inputS","inputL","remove","inputR","inputG","inputB","inputRGBHEX","setPalette","paletteRow","setupAlphaCanvas","alphaPointer","onValueChanged","limit","clientX","getBoundingClientRect","clientY","top","toFixed","select","returnValue","execCommand","ensureArray","setAttribute","insertBefore","onPaletteColorAdd","onPaletteColorRemove","querySelectorAll","shiftKey","silent","updatePointerH","updateInputHSL","updateInputRGB","updateInputRGBHEX","updatePointerSL","F","E","updatePointerA","C","cssColorToRgb","w","T","I","P","D","oncoloradd","oncolorremove","listeners","change","coloradd","colorremove","hsl","rgbhex","all","hex","rgba","hsla","setColor","updatePalette","show","classList","hide","add","toggle","ctrl","cssHslaToHsla","cssHslToHsl","cssRgbaToRgba","cssRgbToRgb","cssColorToRgba","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","isNaN","toLowerCase","exec","pow","btoa","unescape","sourceRoot","join","require","useTranslation","Router","Core","Shell","Chromecast","DragAndDrop","KeyboardShortcuts","ServicesProvider","NotFound","ToastProvider","CONSTANTS","withCoreSuspender","ServicesToaster","DeepLinkHandler","ErrorDialog","withProtectedRoutes","routerViewsConfig","styles","RouterWithProtectedRoutes","i18n","onPathNotMatch","useCallback","services","useMemo","core","appVersion","process","shellVersion","shell","chromecast","keyboardShortcuts","dragAndDrop","useState","initialized","setInitialized","useEffect","prevPath","location","hash","onLocationHashChange","active","transport","analytics","onCoreStateChanged","onShellStateChanged","onChromecastStateChange","setOptions","receiverApplicationId","CHROMECAST_RECEIVER_APP_ID","autoJoinPolicy","chrome","AutoJoinPolicy","PAGE_SCOPED","resumeSavedSession","onCoreEvent","settings","interfaceLanguage","changeLanguage","onWindowFocus","profile","StrictMode","viewsConfig","useStreamingServer","streamingServer","content","deepLinks","metaDetailsVideos","classnames","Button","Image","dataCleared","setDataCleared","reload","clearData","localStorage","clear","alt","onClick","disabled","useServices","useToast","toast","uid","transport_url","startsWith","timeout","dataset","onDragAndDropError","file","App","routes","routesRegexp","board","component","Board","intro","Intro","discover","Discover","library","Library","continuewatching","search","Search","metadetails","MetaDetails","addons","Addons","Settings","player","useProfile","Component","previousAuthRef","useRef","auth","current","onRouteChange","routeConfig","AddonDetails","version","logo","description","types","transportUrl","official","renderLogoFallback","renderFallback","arrayOf","bool","ModalDialog","AddonDetailsWithRemoteAndLocalAddon","withRemoteAndLocalAddon","remoteAddon","localAddon","addon","flags","useAddonDetails","AddonDetailsModal","onCloseRequest","addonDetails","modalButtons","cancelButton","reactEvent","nativeEvent","configureButton","toggleButton","buttons","selected","func","AddonDetailsModalFallback","useModelState","model","useLongPress","href","children","onLongPress","longPress","detect","onKeyDown","preventDefault","buttonClickPrevented","currentTarget","click","onMouseDown","buttonBlurPrevented","activeElement","blur","tabIndex","TYPE_PRIORITIES","movie","series","channel","tv","music","radio","podcast","game","book","adult","other","Infinity","ICON_FOR_TYPE","Map","SUBTITLES_SIZES","SUBTITLES_FONTS","SEEK_TIME_DURATIONS","NEXT_VIDEO_POPUP_DURATIONS","CATALOG_PREVIEW_SIZE","CATALOG_PAGE_SIZE","NONE_EXTRA_VALUE","SKIP_EXTRA_NAME","META_LINK_CATEGORY","IMDB_LINK_CATEGORY","SHARE_LINK_CATEGORY","WRITERS_LINK_CATEGORY","Checkbox","checked","AColorPicker","useBinaryState","ColorPicker","ColorInput","onChange","modalOpen","openModal","closeModal","tempValue","setTempValue","labelButtonStyle","isTransparent","endsWith","labelButtonOnClick","openModalPrevented","modalDialogOnClick","colorPickerOnInput","useLayoutEffect","onInput","object","pickerRef","pickerElementRef","pickerClipboard","picker","nextValue","CoreSuspenderContext","createContext","wrapPromise","promise","suspender","read","useCoreSuspender","useContext","Fallback","parentSuspender","setRender","statesRef","streamsRef","decodeStream","Suspense","fallback","Provider","DelayedRenderer","fallbackSrc","broken","setBroken","MetaItem","useNotifications","OPTIONS","LibItem","_id","removable","notifications","newVideos","items","metaDetailsStreams","progress","option","optionOnSelect","optionSelectPrevented","number","shape","VerticalNavBar","HorizontalNavBar","TABS","MainNavBars","memo","route","backButton","searchBar","addonsButton","fullscreenButton","navMenu","tabs","filterInvalidDOMProps","Multiselect","PlayIconCircleCentered","poster","posterShape","playIcon","menuOpen","onMenuOpen","onMenuClose","metaItemOnClick","selectPrevented","menuOnClick","menuOnSelect","renderPosterFallback","has","renderMenuLabelContent","renderLabelContent","onOpen","onClose","onSelect","ActionButton","MetaLinks","links","toUpperCase","UrlUtils","SharePrompt","MetaPreviewPlaceholder","ALLOWED_LINK_REDIRECTS","regexp","MetaPreview","compact","runtime","releaseInfo","released","trailerStreams","inLibrary","toggleInLibrary","shareModalOpen","openShareModal","closeShareModal","linksGroups","link","category","protocol","pathname","hostname","showHref","trailerHref","Date","getTime","getFullYear","Fragment","Placeholder","instanceOf","ReactIs","MetaRowPlaceholder","MetaRow","itemComponent","isValidElementType","item","fill","_","elementType","useRouteFocused","useModalsContainer","Modal","routeFocused","modalsContainer","modalContainerRef","closeButtonOnClick","onModalContainerMouseDown","closeModalDialogPrevented","onModalDialogContainerMouseDown","childNodes","childElementCount","oneOfType","Popup","direction","renderLabelText","closeMenu","toggleMenu","labelOnClick","toggleMenuPrevented","menuOnKeyDown","optionOnClick","closeMenuPrevented","mountedRef","renderLabel","renderMenu","renderPopupLabel","labelProps","any","isRequired","useFullscreen","SearchBar","NavMenu","backButtonOnClick","history","back","fullscreen","requestFullscreen","exitFullscreen","renderNavMenuLabel","NavMenuContent","popupLabelOnClick","togglePopupPrevented","popupMenuOnClick","useTorrent","createTorrentFromMagnet","logoutButtonOnClick","onPlayMagnetLinkClick","clipboard","readText","clipboardText","backgroundImage","user","avatar","email","TextInput","searchInputRef","searchBarOnClick","queryInputOnChange","queryInputOnSubmit","focus","placeholder","defaultValue","onSubmit","SearchBarFallback","NavTabButton","tab","PaginationInput","prevNextButtonOnClick","cx","cy","FocusLock","getAnchorElement","documentElement","getComputedStyle","overflowY","labelRef","menuRef","autoDirection","setAutoDirection","menuOnMouseDown","closePopupPrevented","onCloseEvent","closeEvent","contains","anchorRect","labelRect","menuRect","labelPosition","autoFocus","lockProps","SearchBarPlaceholder","inputRef","selectInputContent","copyToClipboard","readOnly","useAnimationFrame","useLiveRef","Slider","minimumValue","maximumValue","onSlide","onComplete","minimumValueRef","maximumValueRef","valueRef","bufferedRef","onSlideRef","onCompleteRef","sliderContainerRef","requestThumbAnimation","cancelThumbAnimation","calculateValueForMouseX","mouseX","sliderX","sliderWidth","retainThumb","onBlur","onMouseUp","onMouseMove","releaseThumb","classIndex","button","thumbPosition","bufferedPosition","marginLeft","StreamingServerWarning","onLaterClick","streamingServerWarningDismissed","setMonth","getMonth","onDismissClick","setFullYear","submitPrevented","autoCorrect","autoCapitalize","autoComplete","spellCheck","ToastContext","ToastItem","toastOnClick","selectToastPrevented","closeToastPrevented","setContainer","useReducer","itemOnClose","filters","addFilter","removeFilter","priorities","localeCompare","NEGATIVE_INFINITY","child","elementTop","offsetTop","elementBottom","clientHeight","containerTop","scrollTop","containerBottom","isChildVisible","comparatorWithPriorities","getVisibleChildrenRange","interfaceLanguages","languageNames","translateOption","useOnScrollToBottom","externalPlayerOptions","browser","os","isMobile","urlParamsNames","translateKeyPrefix","translateKey","translateValue","charAt","animationFrameId","cancel","cancelAnimationFrame","requestAnimationFrame","initialValue","setValue","fullscreenElement","setFullscreen","toggleFullscreen","onFullscreenChange","throttle","isEqual","intersection","deps","prevState","nextState","setState","useInsertionEffect","onNewState","models","onNewStateThrottled","ctx","threshold","triggeredRef","onScroll","scrollHeight","NaN","createTorrentTimeout","parsed","ReactDOM","createPortal","ModalsContainerContext","ModalsContainerProvider","Route","RouteFocusedContext","RouteFocusedProvider","routeConfigForPath","urlParamsForPath","views","setViews","urlParams","routeViewIndex","vc","routeIndex","rc","view","entries","exact","RegExp","matches","decodeURIComponent","Addon","installed","onToggle","onConfigure","onShare","toggleButtonOnClick","configureButtonOnClick","shareButtonOnClick","configurationRequired","p2p","useInstalledAddons","useRemoteAddons","useAddonDetailsTransportUrl","useSelectableInputs","installedAddons","remoteAddons","addonDetailsTransportUrl","setAddonDetailsTransportUrl","selectInputs","filtersModalOpen","openFiltersModal","closeFiltersModal","addAddonModalOpen","openAddAddonModal","closeAddAddonModal","addAddonUrlInputRef","addAddonOnSubmit","addAddonModalButtons","setSearch","searchInputOnChange","sharedAddon","setSharedAddon","clearSharedAddon","onAddonShare","onAddonToggle","onAddonConfigure","closeAddonDetails","searchFilterPredicate","selectInput","selectable","catalog","catalogId","setTransportUrl","nextQueryParams","base","resource","selectableInputs","catalogSelect","catalogs","selectableCatalog","typeSelect","mapSelectableInputs","debounce","useBoard","useContinueWatchingPreview","continueWatchingPreview","loadBoardRows","boardCatalogsOffset","scrollContainerRef","onVisibleRangeChange","range","loadRange","useDiscover","loadNextPage","hasNextPage","inputsModalOpen","openInputsModal","closeInputsModal","addonModalOpen","openAddonModal","closeAddonModal","selectedMetaItemIndex","setSelectedMetaItemIndex","metasContainerRef","selectedMetaItem","addToLibrary","removeFromLibrary","metaItemsOnFocusCapture","onScrollToBottom","onFocusCapture","metaItem","extraSelects","nextPage","ConsentCheckbox","checkboxOnClick","togglePrevented","linkOnClick","CredentialsTextInput","navigationPrevented","spatialNavigationPrevented","navigate","PasswordResetModal","useFacebookToken","SIGNUP_FORM","LOGIN_FORM","getFacebookToken","emailRef","passwordRef","confirmPasswordRef","termsRef","privacyPolicyRef","marketingRef","errorRef","passwordRestModalOpen","openPasswordRestModal","closePasswordResetModal","loaderModalOpen","openLoaderModal","closeLoaderModal","form","password","confirmPassword","termsAccepted","privacyPolicyAccepted","marketingAccepted","loginWithFacebook","accessToken","fbLoginToken","facebook","loginWithEmail","validity","valid","loginAsGuest","signup","gdpr_consent","tos","privacy","marketing","emailOnChange","emailOnSubmit","passwordOnChange","passwordOnSubmit","confirmPasswordOnChange","confirmPasswordOnSubmit","toggleTermsAccepted","togglePrivacyPolicyAccepted","toggleMarketingAccepted","switchFormOnClick","scrollIntoView","setError","goToPasswordReset","passwordResetModalButtons","getToken","FB","getLoginStatus","authResponse","login","fbAsyncInit","init","appId","xfbml","sdkScriptElement","async","defer","useLibrary","sortSelect","paginationInput","libItem","LibraryFallback","withModel","page","sorts","prevPage","StreamsList","VideosList","useMetaDetails","useSeason","useMetaExtensionTabs","metaDetails","setSeason","metaExtensions","metaExtension","clearMetaExtension","metaPath","streamPath","videos","seasonOnSelect","renderBackgroundImageFallback","overview","sandbox","StreamPlaceholder","Stream","addonName","thumbnail","haveStreamingServer","playerType","externalPlayer","openPlayer","streaming","forceDownload","fileName","renderThumbnailFallback","download","choose","ios","android","windows","macos","linux","vlc","outplayer","infuse","justplayer","mxplayer","ALL_ADDONS_KEY","selectedAddon","setSelectedAddon","onAddonSelected","streamsByAddon","filteredStreams","values","flat","selectableOptions","SeasonsBarPlaceholder","SeasonsBar","seasons","seasonIndex","valueIndex","VideoPlaceholder","upcoming","watched","scheduled","popupLabelOnMouseUp","ctrlKey","popupLabelOnContextMenu","popupLabelOnLongPress","pointerType","popupMenuOnPointerDown","popupMenuOnContextMenu","popupMenuOnKeyDown","toggleWatchedOnClick","toLocaleString","year","month","day","onPointerDown","onContextMenu","MAX_SAFE_INTEGER","selectedSeason","nonSpecialSeasons","videosForSeason","extension","setSelected","BufferingLoader","SeekBar","VolumeSlider","ControlBar","nextVideo","statistics","onPlayRequested","onPauseRequested","onMuteRequested","onUnmuteRequested","onVolumeChangeRequested","onSeekRequested","onToggleSubtitlesMenu","onToggleInfoMenu","onToggleSpeedMenu","onToggleVideosMenu","onToggleOptionsMenu","onToggleStatisticsMenu","chromecastServiceActive","setChromecastServiceActive","buttonsMenuOpen","toogleButtonsMenu","onSubtitlesButtonMouseDown","subtitlesMenuClosePrevented","onInfoButtonMouseDown","infoMenuClosePrevented","onSpeedButtonMouseDown","speedMenuClosePrevented","onVideosButtonMouseDown","videosMenuClosePrevented","onOptionsButtonMouseDown","optionsMenuClosePrevented","onStatisticsButtonMouseDown","statisticsMenuClosePrevented","onPlayPauseButtonClick","onNextVideoButtonClick","onMuteButtonClick","onSubtitlesButtonClick","onInfoButtonClick","onSpeedButtonClick","onVideosButtonClick","onOptionsButtonClick","onStatisticsButtonClick","onChromecastButtonClick","requestSession","onStateChanged","formatTime","seekTime","setSeekTime","resetTimeDebounced","formatUnit","hours","minutes","seconds","slidingVolume","setSlidingVolume","resetVolumeDebounced","InfoMenu","NextVideoPopup","onDismiss","onPlayNextVideoRequested","watchNowButtonRef","animationEnded","setAnimationEnded","videoName","onAnimationEnd","onDismissButtonClick","onWatchNowButtonClick","Option","deviceId","onButtonClick","OptionsMenu","playbackDevices","streamingUrl","downloadUrl","externalDevices","onCopyStreamButtonClick","writeText","onDownloadVideoButtonClick","onExternalDeviceRequested","langs","StatisticsMenu","VideosMenu","SubtitlesMenu","SpeedMenu","usePlayer","useSettings","nextVideoState","videoParams","setVideoState","timeChanged","pausedChanged","ended","updateSettings","casting","setCasting","immersed","setImmersed","setImmersedDebounced","optionsMenuOpen","closeOptionsMenu","toggleOptionsMenu","subtitlesMenuOpen","closeSubtitlesMenu","toggleSubtitlesMenu","infoMenuOpen","closeInfoMenu","toggleInfoMenu","speedMenuOpen","closeSpeedMenu","toggleSpeedMenu","videosMenuOpen","closeVideosMenu","toggleVideosMenu","nextVideoPopupOpen","openNextVideoPopup","closeNextVideoPopup","statisticsMenuOpen","closeStatisticsMenu","toggleStatisticsMenu","nextVideoPopupDismissed","defaultSubtitlesSelected","defaultAudioTrackSelected","videoRef","onImplementationChanged","onEnded","onSubtitlesTrackLoaded","onExtraSubtitlesTrackLoaded","onPlayRequestedDebounced","onPauseRequestedDebounced","onPlaybackSpeedChanged","rate","onSubtitlesTrackSelected","onExtraSubtitlesTrackSelected","onAudioTrackSelected","onExtraSubtitlesDelayChanged","onSubtitlesSizeChanged","onSubtitlesOffsetChanged","onDismissNextVideoPopup","onVideoClick","onVideoDoubleClick","onContainerMouseDown","onContainerMouseMove","immersePrevented","onContainerMouseLeave","onBarMouseMove","baseUrl","metaRequest","libraryItem","streamRequest","video_id","timeOffset","bingeWatching","nextVideoNotificationDuration","getStatistics","statisticsInterval","findTrackByLang","where","subtitlesTrack","subtitlesLanguage","extraSubtitlesTrack","audioLanguage","toastFilter","onCastStateChange","onChromecastServiceStateChange","CastContextEventType","CAST_STATE_CHANGED","seekTimeMultiplier","seekTimeDuration","onWheel","deltaY","onMouseOver","onMouseLeave","onPropValue","onDoubleClick","onExtraSubtitlesOffsetChanged","onExtraSubtitlesSizeChanged","streamTransportUrl","metaTransportUrl","OptionButton","RATES","reverse","onOptionSelect","classNames","peers","downloadSpeed","completed","streamProgress","DiscreteSelectInput","buttonOnClick","ORIGIN_PRIORITIES","LANGUAGE_PRIORITIES","subtitlesLanguages","selectedSubtitlesLanguage","subtitlesTracksForLanguage","subtitlesLanguageOnClick","subtitlesTrackOnClick","onSubtitlesDelayChanged","delta","extraDelay","sizeIndex","extraSizeIndex","extraSize","audioTrackOnClick","onEndedRef","onErrorRef","onPropValueRef","onPropChangedRef","onSubtitlesTrackLoadedRef","onExtraSubtitlesTrackLoadedRef","onImplementationChangedRef","videoElementRef","useImperativeHandle","subtitlesPath","useSearch","loadSearchRows","reduceRight","SearchFallback","useProfileSettingsInputs","useStreamingServerSettingsInputs","useDataExport","GENERAL_SECTION","PLAYER_SECTION","STREAMING_SECTION","SHORTCUTS_SECTION","dataExport","loadDataExport","interfaceLanguageSelect","subtitlesLanguageSelect","subtitlesSizeSelect","subtitlesTextColorInput","subtitlesBackgroundColorInput","subtitlesOutlineColorInput","audioLanguageSelect","seekTimeDurationSelect","playInExternalPlayerSelect","nextVideoPopupDurationSelect","bingeWatchingCheckbox","playInBackgroundCheckbox","hardwareDecodingCheckbox","streamingServerUrlInput","cacheSizeSelect","torrentProfileSelect","configureServerUrlModalOpen","openConfigureServerUrlModal","closeConfigureServerUrlModal","configureServerUrlInputRef","configureServerUrlOnSubmit","traktAuthStarted","setTraktAuthStarted","isTraktAuthenticated","trakt","created_at","expires_in","configureServerUrlModalButtons","toggleTraktOnClick","subscribeCalendarOnClick","exportDataOnClick","reloadStreamingServer","sectionsContainerRef","generalSectionRef","playerSectionRef","streamingServerSectionRef","shortcutsSectionRef","sections","selectedSectionId","setSelectedSectionId","updateSelectedSectionId","sideMenuButtonOnClick","section","scrollTo","behavior","sectionsContainerOnScorll","exportUrl","serverVersion","codes","opt","playInBackground","hardwareDecoding","streamingServerUrl","CACHE_SIZES","cacheSizeToString","ceil","EPSILON","TORRENT_PROFILES","btDownloadSpeedHardLimit","btDownloadSpeedSoftLimit","btHandshakeTimeout","btMaxConnections","btMinPeersForStable","btRequestTimeout","soft","fast","cacheSize","selectedTorrentProfile","isCustomTorrentProfileSelected","torrentProfile","profileName","ChromecastTransport","starting","onTransportInit","onTransportInitError","cause","defineProperties","MESSAGE_NAMESPACE","CHUNK_SIZE","castAPIAvailable","castAPIEvents","available","messages","chunk","parsedMessage","onApplicationStatusChanged","CastSession","APPLICATION_STATUS_CHANGED","onApplicationMetadataChanged","APPLICATION_METADATA_CHANGED","onActiveInputStateChanged","ACTIVE_INPUT_STATE_CHANGED","onVolumeChanged","VOLUME_CHANGED","onMediaSessionChanged","MEDIA_SESSION","onCastStateChanged","onSesstionStateChanged","SESSION_STATE_CHANGED","sessionState","SessionState","SESSION_STARTED","session","addMessageListener","SESSION_ENDED","removeMessageListener","onCastAPIAvailabilityChanged","CastContext","getInstance","getSessionState","getCurrentSession","endCurrentSession","stopCasting","castSession","serializedMessage","chunksCount","chunks","CoreTransport","onTransportError","Bridge","worker","Worker","bridge","field","getDebugState","onDragOver","onDrop","dataTransfer","files","FileList","arrayBuffer","Uint8Array","keyboardShortcutPrevented","tagName","altKey","metaKey","forward","ServicesContext","ShellTransport","shellAvailable","shellEvents","QtMsgTypes","QtObjId","initShellComm","qt","onShellAvailabilityChanged","webChannelTransport","msg","onmessage","properties","shellVersionArr","signals","sig","signal","onEvent","methods","ev","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","num","output","parseRange","acc","cur","idx","generateRange","compose","getFirstMatch","getSecondMatch","matchAndReturnConst","getWindowsVersionName","getMacOSVersionName","getAndroidVersionName","getVersionPrecision","compareVersions","getBrowserAlias","BROWSER_ALIASES_MAP","getBrowserTypeByAlias","BROWSER_MAP","ENGINE_MAP","OS_MAP","PLATFORMS_MAP","Bada","BlackBerry","Chrome","Chromium","Electron","Epiphany","Firefox","Focus","Generic","Googlebot","Maxthon","Opera","PhantomJS","Puffin","QupZilla","QQ","QQLite","Safari","Sailfish","SeaMonkey","Sleipnir","Swing","Tizen","Vivaldi","WeChat","Roku","amazon_silk","bada","blackberry","chromium","electron","epiphany","firefox","generic","googlebot","google_search","ie","k_meleon","maxthon","edge","mz","naver","opera","opera_coast","phantomjs","puffin","qupzilla","qq","qqlite","safari","sailfish","samsung_internet","seamonkey","sleipnir","swing","uc","vivaldi","webos","wechat","yandex","tablet","mobile","desktop","WindowsPhone","Windows","MacOS","iOS","Android","WebOS","Linux","ChromeOS","PlayStation4","EdgeHTML","Blink","Trident","Presto","Gecko","WebKit","getParser","getResult","_ua","parsedResult","getUA","parseBrowser","describe","getBrowser","getBrowserName","getBrowserVersion","getOS","parseOS","getOSName","getOSVersion","getPlatform","parsePlatform","getPlatformType","getEngine","engine","parseEngine","getEngineName","satisfies","isOS","isPlatform","isBrowser","compareVersion","substr","isEngine","is","versionName","vendor","base64","ieee754","customInspectSymbol","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","setPrototypeOf","encodingOrOffset","allocUnsafe","encoding","isEncoding","actual","write","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","buffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","isBuffer","numberIsNaN","fromObject","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","poolSize","allocUnsafeSlow","_isBuffer","compare","list","pos","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","toJSON","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","sym","getMessage","Base","super","stack","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","received","isInteger","abs","INVALID_BASE64_RE","leadSurrogate","base64clean","dst","alphabet","table","i16","BufferBigIntNotDefined","hasOwn","classes","argType","inner","colorNames","swizzle","reverseNames","cs","to","clamp","hexDouble","substring","hwb","hexAlpha","i2","alpha","percent","hwba","keyword","colorString","skippedModels","hashedModelKeys","labels","limiters","valpha","newArray","zeroArray","hashedKeys","places","percentString","unitArray","unitObject","roundToPlace","getset","maxfn","hue","saturationl","lightness","saturationv","chroma","wblack","z","hexa","rgbArray","alphaHex","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","isDark","isLight","negate","lighten","ratio","darken","saturate","desaturate","whiten","blacken","grayscale","fade","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w1","w2","raw","roundTo","modifier","cssKeywords","reverseKeywords","hsv","cmyk","xyz","lab","lch","ansi16","ansi256","hcg","apple","rdif","gdif","bdif","diff","diffc","reversed","currentClosestKeyword","currentClosestDistance","distance","t3","smin","lmin","q","vmin","sl","wh","bl","y2","x2","z2","atan2","PI","sqrt","hr","cos","sin","saturation","ansi","mult","rem","char","integer","pure","mg","conversions","fromModel","toModel","wrappedFn","arg0","conversion","wrapRounded","wrapRaw","deriveBFS","graph","parent","buildGraph","queue","adjacents","adjacent","unshift","wrapConversion","getOwnPropertyNames","isFrozen","prefix","EE","context","once","addListener","emitter","evt","_events","_eventsCount","clearEvent","__proto__","eventNames","names","handlers","ee","listenerCount","a1","a2","a3","a4","a5","removeListener","prefixed","domProps","isValidDOMProp","_htmlAttributes","_htmlAttributes2","eventProps","onCopy","onCut","onPaste","onLoad","onCompositionEnd","onCompositionStart","onCompositionUpdate","onKeyPress","onKeyUp","onFocus","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragStart","onMouseEnter","onMouseOut","onTouchCancel","onTouchEnd","onTouchMove","onTouchStart","onAnimationStart","onAnimationIteration","onTransitionEnd","bits","digits","rack","expandBy","iters","hats","factory","modules","installedModules","moduleId","getter","ns","property","__webpack_require__","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","URLToolkit","buildAbsoluteURL","baseURL","relativeURL","opts","alwaysNormalize","basePartsForNormalise","parseURL","normalizePath","buildURLFromParts","relativeParts","scheme","baseParts","netLoc","pathParts","builtParts","fragment","baseURLPath","newPath","webpackBootstrapFunc","oe","ENTRY_MODULE","moduleNameReqExp","dependencyRegExp","quoteRegExp","getModuleDependencies","queueName","retval","fnString","wrapperSignature","webpackRequireName","re","hasValuesInQueues","queues","hasValues","main","requiredModules","modulesQueue","seenModules","moduleToCheck","newModules","newModulesKeys","getRequiredModules","entryModule","blob","Blob","bare","workerUrl","URL","webkitURL","mozURL","msURL","createObjectURL","objectURL","__webpack_exports__","hlsDefaultConfig","mergeConfig","enableStreamingMode","_controller_abr_controller__WEBPACK_IMPORTED_MODULE_0__","_controller_audio_stream_controller__WEBPACK_IMPORTED_MODULE_1__","_controller_audio_track_controller__WEBPACK_IMPORTED_MODULE_2__","_controller_subtitle_stream_controller__WEBPACK_IMPORTED_MODULE_3__","_controller_subtitle_track_controller__WEBPACK_IMPORTED_MODULE_4__","_controller_buffer_controller__WEBPACK_IMPORTED_MODULE_5__","_controller_timeline_controller__WEBPACK_IMPORTED_MODULE_6__","_controller_cap_level_controller__WEBPACK_IMPORTED_MODULE_7__","_controller_fps_controller__WEBPACK_IMPORTED_MODULE_8__","_controller_eme_controller__WEBPACK_IMPORTED_MODULE_9__","_controller_cmcd_controller__WEBPACK_IMPORTED_MODULE_10__","_utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__","_utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__","_utils_cues__WEBPACK_IMPORTED_MODULE_13__","_utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_14__","_utils_logger__WEBPACK_IMPORTED_MODULE_15__","_extends","ownKeys","enumerableOnly","symbols","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","autoStartLoad","startPosition","defaultAudioCodec","capLevelOnFPSDrop","capLevelToPlayerSize","ignoreDevicePixelRatio","initialLiveManifestSize","maxBufferSize","highBufferWatchdogPeriod","nudgeOffset","liveSyncDurationCount","liveMaxLatencyDurationCount","liveSyncDuration","liveMaxLatencyDuration","maxLiveSyncPlaybackRate","liveDurationInfinity","liveBackBufferLength","enableSoftwareAES","manifestLoadingRetryDelay","manifestLoadingMaxRetryTimeout","startLevel","levelLoadingTimeOut","levelLoadingMaxRetry","levelLoadingRetryDelay","levelLoadingMaxRetryTimeout","fragLoadingTimeOut","fragLoadingMaxRetry","fragLoadingRetryDelay","fragLoadingMaxRetryTimeout","startFragPrefetch","fpsDroppedMonitoringPeriod","fpsDroppedMonitoringThreshold","loader","fLoader","pLoader","xhrSetup","licenseXhrSetup","licenseResponseCallback","abrController","bufferController","capLevelController","fpsController","stretchShortVideoTrack","maxAudioFramesDrift","forceKeyFrameOnDiscontinuity","abrEwmaFastLive","abrEwmaSlowLive","abrEwmaFastVoD","abrEwmaSlowVoD","abrEwmaDefaultEstimate","abrBandWidthFactor","abrBandWidthUpFactor","abrMaxWithRealBitrate","maxStarvationDelay","maxLoadingDelay","minAutoBitrate","emeEnabled","widevineLicenseUrl","drmSystemOptions","requestMediaKeySystemAccessFunc","testBandwidth","progressive","cmcd","enableDateRangeMetadataCues","enableEmsgMetadataCues","enableID3MetadataCues","cueHandler","enableWebVTT","enableIMSC1","enableCEA708Captions","captionsTextTrack1Label","captionsTextTrack1LanguageCode","captionsTextTrack2Label","captionsTextTrack2LanguageCode","captionsTextTrack3Label","captionsTextTrack3LanguageCode","captionsTextTrack4Label","captionsTextTrack4LanguageCode","renderTextTracksNatively","subtitleStreamController","subtitleTrackController","timelineController","audioStreamController","audioTrackController","emeController","cmcdController","defaultConfig","userConfig","currentLoader","_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__","_utils_ewma_bandwidth_estimator__WEBPACK_IMPORTED_MODULE_1__","_events__WEBPACK_IMPORTED_MODULE_2__","_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__","_errors__WEBPACK_IMPORTED_MODULE_4__","_types_loader__WEBPACK_IMPORTED_MODULE_5__","_utils_logger__WEBPACK_IMPORTED_MODULE_6__","AbrController","lastLoadedFragLevel","_nextAutoLevel","onCheck","_abandonRulesCheck","fragCurrent","partCurrent","bitrateTestDelay","bwEstimator","registerListeners","_proto","FRAG_LOADING","onFragLoading","FRAG_LOADED","onFragLoaded","FRAG_BUFFERED","onFragBuffered","LEVEL_LOADED","onLevelLoaded","unregisterListeners","clearTimer","_data$part","frag","MAIN","part","details","live","update","autoLevelEnabled","media","stats","aborted","requestDelay","performance","loading","levels","minAutoLevel","expectedLen","total","maxBitrate","loadRate","bwEstimate","fragLoadedDelay","bufferStarvationDelay","bufferInfo","nextLoadLevel","fragLevelNextLoadedDelay","POSITIVE_INFINITY","getEstimate","sn","sample","abort","trigger","FRAG_LOAD_EMERGENCY_ABORTED","loadedBytes","loadedDuration","realBitrate","bitrateTest","fragBufferedData","processingMs","parsing","FRAG_LOAD_ERROR","FRAG_LOAD_TIMEOUT","getNextABRAutoLevel","maxAutoLevel","currentFragDuration","avgbw","bestLevel","findBestLevel","trace","bwFactor","bwUpFactor","currentBw","maxFetchDuration","_level$details","currentLevel","currentCodecSet","codecSet","levelInfo","levelDetails","partTarget","averagetargetduration","adjustedbw","bitrate","fetchDuration","forcedAutoLevel","canEstimate","nextABRAutoLevel","loadError","nextLevel","_base_stream_controller__WEBPACK_IMPORTED_MODULE_1__","_fragment_tracker__WEBPACK_IMPORTED_MODULE_4__","_types_level__WEBPACK_IMPORTED_MODULE_5__","_types_loader__WEBPACK_IMPORTED_MODULE_6__","_loader_fragment__WEBPACK_IMPORTED_MODULE_7__","_demux_chunk_cache__WEBPACK_IMPORTED_MODULE_8__","_demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_9__","_types_transmuxer__WEBPACK_IMPORTED_MODULE_10__","_fragment_finders__WEBPACK_IMPORTED_MODULE_11__","_utils_discontinuities__WEBPACK_IMPORTED_MODULE_12__","_errors__WEBPACK_IMPORTED_MODULE_13__","_setPrototypeOf","AudioStreamController","_BaseStreamController","subClass","superClass","fragmentTracker","_this","videoBuffer","videoTrackCC","waitingVideoCC","audioSwitch","trackId","waitingData","mainDetails","bufferFlushed","cachedTrackLoadedData","_registerListeners","onHandlerDestroying","_unregisterListeners","MEDIA_ATTACHED","onMediaAttached","MEDIA_DETACHING","onMediaDetaching","MANIFEST_LOADING","onManifestLoading","onAudioTracksUpdated","AUDIO_TRACK_SWITCHING","onAudioTrackSwitching","AUDIO_TRACK_LOADED","onAudioTrackLoaded","BUFFER_RESET","onBufferReset","BUFFER_CREATED","onBufferCreated","BUFFER_FLUSHED","onBufferFlushed","INIT_PTS_FOUND","onInitPtsFound","initPTS","cc","WAITING_INIT_PTS","tick","startLoad","STOPPED","lastCurrentTime","stopLoad","fragLoadError","IDLE","loadedmetadata","WAITING_TRACK","nextLoadPosition","doTick","doTickIdle","_levels$trackId","waitForCdnTuneIn","FRAG_LOADING_WAITING_RETRY","_this$media","retryDate","seeking","resetStartWhenNotLoaded","cache","complete","payload","flush","networkDetails","_handleFragmentLoadProgress","_handleFragmentLoadComplete","clearWaitingFragment","getLoadPosition","mediaBuffer","onTickEnd","removeFragment","resetLoadingState","_frag$decryptdata","_frag$decryptdata2","startFragRequested","trackDetails","levelLastLoaded","bufferable","afterBufferFlushed","AUDIO","getFwdBufferInfo","mainBufferInfo","bufferLen","maxBufLen","getMaxBufferLength","_streamEnded","BUFFER_EOS","fragments","targetBufferTime","PTSKnown","nextStart","targetduration","getNextFragment","decryptdata","keyFormat","loadFragment","loadKey","mainBufferLength","maxConfigBuffer","resetTransmuxer","mediaPlaylist","altAudio","removeAllFragments","_track$details","newDetails","startSN","endSN","totalduration","sliding","deltaUpdateFailed","hasProgramDateTime","alignPlaylists","setStartPosition","_frag$initSegment","assert","transmuxer","_handleTransmuxComplete","_handleTransmuxerFlush","initSegmentData","initSegment","partIndex","partial","chunkMeta","chunkCount","fragLoadedData","audio","fragContextChanged","fragPrevious","fragBufferedComplete","KEY_LOAD_ERROR","KEY_LOAD_TIMEOUT","onFragmentOrKeyLoadError","AUDIO_TRACK_LOAD_ERROR","AUDIO_TRACK_LOAD_TIMEOUT","fatal","BUFFER_FULL_ERROR","PARSING","PARSED","flushBuffer","bufferedInfo","reduceMaxBufferLength","flushMainBuffer","transmuxResult","_id3$samples","remuxResult","getCurrentContext","id3","completeAudioSwitch","_bufferInitSegment","FRAG_PARSING_INIT_SEGMENT","startPTS","endPTS","startDTS","endDTS","elementaryStreams","setElementaryStreamInfo","bufferFragmentData","samples","emittedID3","FRAG_PARSING_METADATA","emittedText","FRAG_PARSING_USERDATA","levelCodec","BUFFER_CODECS","segment","BUFFER_APPENDING","fragState","NOT_LOADED","PARTIAL","_loadInitSegment","_events__WEBPACK_IMPORTED_MODULE_0__","_errors__WEBPACK_IMPORTED_MODULE_1__","_base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__","_types_loader__WEBPACK_IMPORTED_MODULE_3__","AudioTrackController","_BasePlaylistControll","groupId","tracksInGroup","trackName","selectDefaultTrack","MANIFEST_PARSED","onManifestParsed","LEVEL_LOADING","onLevelLoading","LEVEL_SWITCHING","onLevelSwitching","currentTrack","curDetails","retryCount","playlistLoaded","switchLevel","levelIndex","audioGroupIds","audioGroupId","urlId","audioTracksUpdated","selectInitialTrack","AUDIO_TRACK","retryLoadingOrFail","setAudioTrack","newId","lastTrack","_track$groupId","hlsUrlParameters","switchParams","loadPlaylist","currentAudioTrackName","findTrackId","MEDIA_ERROR","shouldLoadTrack","addDirectives","AUDIO_TRACK_LOADING","deliveryDirectives","BasePlaylistController","_types_level__WEBPACK_IMPORTED_MODULE_1__","_level_helper__WEBPACK_IMPORTED_MODULE_2__","_utils_logger__WEBPACK_IMPORTED_MODULE_3__","logPrefix","canLoad","NETWORK_ERROR","playlistUri","previous","renditionReports","attr","uri","URI","msn","currentGoal","age","No","previousDetails","elapsed","advancedDateTime","reloaded","advanced","lastPartSn","lastPartIndex","canBlockReload","endSn","lastPart","lastAdvanced","cdnAge","ageHeader","tuneInGoal","segments","getDeliveryDirectives","reloadInterval","previousDeliveryDirectives","skip","errorEvent","_errorEvent$context","_this2","retry","State","BaseStreamController","_task_loop__WEBPACK_IMPORTED_MODULE_1__","_fragment_tracker__WEBPACK_IMPORTED_MODULE_2__","_utils_logger__WEBPACK_IMPORTED_MODULE_4__","_events__WEBPACK_IMPORTED_MODULE_5__","_errors__WEBPACK_IMPORTED_MODULE_6__","_types_transmuxer__WEBPACK_IMPORTED_MODULE_7__","_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_8__","_utils_discontinuities__WEBPACK_IMPORTED_MODULE_9__","_fragment_finders__WEBPACK_IMPORTED_MODULE_10__","_level_helper__WEBPACK_IMPORTED_MODULE_11__","_loader_fragment_loader__WEBPACK_IMPORTED_MODULE_12__","_crypt_decrypter__WEBPACK_IMPORTED_MODULE_13__","_utils_time_ranges__WEBPACK_IMPORTED_MODULE_14__","_types_loader__WEBPACK_IMPORTED_MODULE_15__","_assertThisInitialized","ReferenceError","KEY_LOADING","WAITING_LEVEL","_TaskLoop","_state","fragmentLoader","decrypter","onvseeking","onvended","KEY_LOADED","onKeyLoaded","clearNextTick","partList","isBuffered","OK","onMediaSeeking","onMediaEnded","tolerance","fragStartOffset","pastFragment","tickImmediate","onHandlerDestroyed","_loadFragForPlayback","_doFragLoad","reason","resetFragmentLoading","startOffset","endOffset","flushScope","BUFFER_FLUSHING","_this3","decryptData","iv","webCryptoDecrypt","decryptedData","FRAG_DECRYPTED","tstart","tdecrypt","getBuffered","seekToStartPos","fragLoadedEndData","partsLoaded","fragLoaded","progressCallback","_this4","fragmentHint","getNextPart","doFragPartsLoad","handleFragLoadError","loadedEndOfParts","_this5","loadPartIndex","loadPart","partLoadedData","loadedPart","nextPart","INTERNAL_ABORTED","handleFragLoadAborted","updateLevelTiming","data1","data2","dropped","independent","flushBufferGap","fragDuration","segmentFraction","bufferedFragAtPos","getBufferedFrag","levelBitrate","minLength","fragLen","getInitialLiveFragment","liveSyncPosition","partEnd","fragmentEnd","getFragmentAtPosition","mapToInitFragWhenRequired","contiguous","independentAttrOmitted","programDateTime","endProgramDateTime","targetSN","fragNext","liveStart","bufferEnd","loadingParts","lookupTolerance","curSNIdx","nextFrag","synchronizeToLiveEdge","withinSlidingWindow","maxLatency","lastLevel","slidingStart","firstLevelLoad","aligned","alignedSliding","alignedSlidingStart","partHoldBack","startTimeOffset","filterType","levelRetry","bufferType","playlistType","bufferedTimeRanges","detectEvictedFragments","_this6","parsedDuration","drift","LEVEL_PTS_UPDATED","FRAG_PARSED","previousState","BufferController","_events__WEBPACK_IMPORTED_MODULE_1__","_utils_logger__WEBPACK_IMPORTED_MODULE_2__","_errors__WEBPACK_IMPORTED_MODULE_3__","_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__","_utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__","_loader_fragment__WEBPACK_IMPORTED_MODULE_6__","_buffer_operation_queue__WEBPACK_IMPORTED_MODULE_7__","MediaSource","VIDEO_CODEC_PROFILE_REPACE","_hls","_objectUrl","operationQueue","bufferCodecEventsExpected","_bufferCodecEventsTotal","mediaSource","appendError","pendingTracks","sourceBuffer","_onMediaSourceOpen","updateMediaElementDuration","checkPendingTracks","_onMediaSourceClose","_onMediaSourceEnded","_initSourceBuffer","hasSourceTypes","getSourceBufferTypes","MEDIA_ATTACHING","onMediaAttaching","onBufferAppending","onBufferCodecs","onBufferEos","onBufferFlushing","LEVEL_UPDATED","onLevelUpdated","onFragParsed","FRAG_CHANGED","onFragChanged","audiovideo","codecEvents","ms","endOfStream","revokeObjectURL","MEDIA_DETACHED","sb","removeBufferListeners","removeSourceBuffer","sourceBufferCount","changeType","_data$trackName","metadata","currentCodec","nextCodec","mimeType","appendChangeType","operation","execute","shiftAndExecuteNext","onStart","eventData","chunkStats","bufferAppendingStart","fragBuffering","partBuffering","checkTimestampOffset","executeStart","timestampOffset","appendExecutor","executeEnd","timeRanges","_type","BUFFER_APPENDED","BUFFER_APPEND_ERROR","DOMException","QUOTA_EXCEEDED_ERR","flushOperation","removeExecutor","_this7","buffersAppendedTo","AUDIOVIDEO","VIDEO","blockBuffers","flushBackBuffer","_this8","sourceBufferTypes","targetDuration","levelTargetDuration","maxBackBufferLength","targetBackBufferPosition","BACK_BUFFER_REACHED","LIVE_BACK_BUFFER_REACHED","levelDuration","mediaDuration","msDuration","updateSeekableRange","setLiveSeekableRange","pendingTracksCount","createSourceBuffers","buffers","BUFFER_INCOMPATIBLE_CODECS_ERROR","executeNext","tracksCreated","addSourceBuffer","sbName","addBufferListener","_onSBUpdateStart","_onSBUpdateEnd","_onSBUpdateError","BUFFER_ADD_CODEC_ERROR","BUFFER_APPENDING_ERROR","removeStart","removeEnd","updating","appendBuffer","onUnblocked","_this9","blockingOperations","appendBlocker","BufferOperationQueue","_utils_logger__WEBPACK_IMPORTED_MODULE_0__","sourceBufferReference","insertAbort","CapLevelController","autoLevelCapping","firstLevel","restrictedLevels","streamController","clientRect","setStreamController","unregisterListener","stopCapping","FPS_DROP_LEVEL_CAPPING","onFpsDropLevelCapping","isLevelAllowed","droppedLevel","HTMLVideoElement","startCapping","detectPlayerSize","mediaHeight","mediaWidth","getMaxLevel","nextLevelSwitch","capLevelIndex","validLevels","getMaxLevelByMediaSize","getDimensions","boundsRect","curLevel","maxLevelIndex","contentScaleFactor","pixelRatio","devicePixelRatio","CMCDController","_types_cmcd__WEBPACK_IMPORTED_MODULE_1__","_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_2__","_createClass","_createForOfIteratorHelperLoose","allowArrayLike","it","_arrayLikeToArray","_unsupportedIterableToArray","cid","useHeaders","starved","audioBuffer","onWaiting","onPlaying","applyPlaylistData","ot","MANIFEST","su","applyFragmentData","getObjectType","MUXED","br","tb","getTopBandwidth","getBufferLength","createPlaylistLoader","createFragmentLoader","sessionId","uuid","contentId","onMediaDetached","_data$tracks$audio","_data$tracks$video","createData","sf","HLS","pr","mtp","bandwidthEstimate","isVideo","INIT","bs","toHeaders","toQuery","appendQueryToUri","TIMED_TEXT","_step","_iterator","Ctor","CmcdPlaylistLoader","_proto2","callbacks","CmcdFragmentLoader","_proto3","serialize","_step2","results","isValid","toRounded","toHundred","formatters","dl","nor","rtp","_iterator2","formatter","headerNames","headerGroups","headerMap","nrr","st","_keys","separator","_utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__","EMEController","_widevineLicenseUrl","_licenseXhrSetup","_licenseResponseCallback","_emeEnabled","_requestMediaKeySystemAccess","_drmSystemOptions","_config","_mediaKeysList","_media","_hasSetMediaKeys","_requestLicenseFailureCount","mediaKeysPromise","_onMediaEncrypted","onMediaEncrypted","getLicenseServerUrl","keySystem","WIDEVINE","_attemptKeySystemAccess","mediaKeySystemConfigs","baseConfig","audioCapabilities","videoCapabilities","robustness","audioRobustness","videoRobustness","createWidevineMediaKeySystemConfigurations","getSupportedMediaKeySystemConfigurations","keySystemAccessPromise","requestMediaKeySystemAccess","mediaKeySystemAccess","_onMediaKeySystemAccessObtained","mediaKeysListItem","mediaKeysSessionInitialized","mediaKeySystemDomain","createMediaKeys","mediaKeys","_onMediaKeysCreated","mediaKeysSession","createSession","_onNewMediaKeySession","keySession","_onKeySessionMessage","_requestLicense","initDataType","KEY_SYSTEM_ERROR","KEY_SYSTEM_NO_KEYS","finallySetKeyAndStartSession","_attemptSetMediaKeys","_generateRequestWithPreferredKeySession","initData","keysListItem","setMediaKeys","KEY_SYSTEM_NO_ACCESS","KEY_SYSTEM_NO_SESSION","KEY_SYSTEM_NO_INIT_DATA","generateRequest","_createLicenseXhr","keyMessage","callback","xhr","XMLHttpRequest","responseType","onreadystatechange","_onLicenseRequestReadyStageChange","_data","KEY_SYSTEM_LICENSE_REQUEST_FAILED","attemptsLeft","_generateLicenseRequestChallenge","_url","_xhr","challenge","mediaKeysList","close","_utils_logger__WEBPACK_IMPORTED_MODULE_1__","FPSController","isVideoPlaybackQualityAvailable","lastTime","lastDroppedFrames","lastDecodedFrames","getVideoPlaybackQuality","checkFPSInterval","checkFPS","decodedFrames","droppedFrames","currentPeriod","currentDropped","currentDecoded","droppedFPS","FPS_DROP","totalDroppedFrames","videoPlaybackQuality","totalVideoFrames","droppedVideoFrames","webkitDecodedFrameCount","webkitDroppedFrameCount","findFragmentByPDT","findFragmentByPTS","fragmentWithinToleranceTest","pdtWithinToleranceTest","findFragWithCC","_utils_binary_search__WEBPACK_IMPORTED_MODULE_1__","PDTValue","seg","foundFragment","candidate","candidateLookupTolerance","deltaPTS","pdtBufferEnd","FragmentState","FragmentTracker","_types_loader__WEBPACK_IMPORTED_MODULE_1__","activeFragment","activeParts","bufferPadding","onBufferAppended","getAppendedFrag","levelType","activePart","appendedPTS","fragmentEntity","elementaryStream","timeRange","esData","isNotBuffered","isTimeBuffered","detectPartialFragments","fragKey","getFragmentKey","streamInfo","getBufferedTimes","fragBuffered","minEndPTS","maxStartPTS","getPartialFragment","timePadding","bestFragment","bestOverlap","isPartial","APPENDING","hasFragment","removeFragmentsInRange","clearElementaryStreamInfo","_fragmentEntity$range","_fragmentEntity$range2","STALL_MINIMUM_DURATION_MS","MAX_START_GAP_JUMP","SKIP_BUFFER_HOLE_STEP_SECONDS","SKIP_BUFFER_RANGE_START","GapController","_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__","nudgeRetry","stallReported","stalled","moved","poll","activeFrag","seeked","beginSeek","hasEnoughBuffer","noBufferGap","startJump","maxStartGapJump","_trySkipBufferHole","tnow","stalledDuration","_reportStall","bufferedWithHoles","_tryFixBufferStall","_stalledDuration","stalledDurationMs","_tryNudgeBuffer","BUFFER_STALLED_ERROR","lastEndTime","targetTime","BUFFER_SEEK_OVER_HOLE","BUFFER_NUDGE_ON_STALL","_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__","_demux_id3__WEBPACK_IMPORTED_MODULE_3__","_loader_date_range__WEBPACK_IMPORTED_MODULE_4__","_types_demuxer__WEBPACK_IMPORTED_MODULE_5__","getCueClass","WebKitDataCue","VTTCue","TextTrackCue","dateRangeDateToTimelineSeconds","date","ID3TrackController","id3Track","dateRangeCuesAppended","onFragParsingMetadata","createTrack","getID3Track","kind","addTextTrack","_this$hls$config","maxCueTime","Cue","updateCueRanges","frameTypesAdded","emsg","frames","pts","frame","addCue","updateId3CueEnds","_this$id3Track","_cue$value","frameType","predicate","_hls$config","audioId3","dateRanges","ids","idsToRemove","_loop","removeCue","lastFragment","dateTimeOffset","_loop2","dateRange","appendedDateRangeCues","durationKnown","startDate","endDate","endOnNext","nextDateRangeWithSameClass","filterMapArray","class","attributes","ID","CLASS","START_DATE","DURATION","END_DATE","END_ON_NEXT","SCTE35_OUT","SCTE35_IN","LatencyController","_errors__WEBPACK_IMPORTED_MODULE_0__","stallCount","_latency","timeupdateHandler","timeupdate","latency","computeLatency","_this$config","targetLatency","distanceFromTarget","inLiveRange","forwardBufferLength","exp","edgeStalled","estimateLiveEdge","liveEdge","holdBack","_this$config2","maxLiveSyncOnStallIncrease","syncPosition","maxLevelUpdateAge","bufferedRanges","LevelController","_types_level__WEBPACK_IMPORTED_MODULE_0__","_errors__WEBPACK_IMPORTED_MODULE_2__","_utils_codecs__WEBPACK_IMPORTED_MODULE_3__","_level_helper__WEBPACK_IMPORTED_MODULE_4__","_base_playlist_controller__WEBPACK_IMPORTED_MODULE_5__","chromeOrFirefox","_levels","_firstLevel","_startLevel","currentLevelIndex","manualLevelIndex","onParsedComplete","MANIFEST_LOADED","onManifestLoaded","onAudioTrackSwitched","bitrateStart","levelFromSet","subtitleTracks","levelSet","resolutionFound","videoCodecFound","audioCodecFound","levelParsed","attrs","levelKey","RESOLUTION","CODECS","SUBTITLES","audioOnly","edata","forceStartLoad","MANIFEST_INCOMPATIBLE_CODECS_ERROR","_data$level","SUBTITLE_TRACK","textGroupIds","redundantFailover","levelError","levelSwitch","variantLevelIndex","_level","fragmentError","LEVEL_LOAD_ERROR","LEVEL_LOAD_TIMEOUT","REMUX_ALLOC_ERROR","recoverLevel","errorDetails","redundantLevels","nextAutoLevel","newUrlId","_data$deliveryDirecti2","_data$deliveryDirecti","removeLevel","filterLevelAndGroupByIdIndex","LEVELS_UPDATED","newLevel","_levels$newLevel","OTHER_ERROR","LEVEL_SWITCH_ERROR","lastLevelIndex","levelSwitchingData","_urlId","configStartLevel","addGroupId","assignTrackIdsByGroup","updatePTS","updateFragPTSDTS","mergeDetails","mapPartIntersection","mapFragmentIntersection","adjustSliding","addSliding","computeReloadInterval","getFragmentWithSN","getPartWith","_loader_date_range__WEBPACK_IMPORTED_MODULE_2__","groups","fromIdx","toIdx","updateFromToPTS","fragFrom","fragTo","fragToPTS","fragStartPts","fragEndPts","fragIdx","oldDetails","currentInitSegment","oldFragments","oldInit","PTSFrag","oldDateRanges","deltaDateRanges","recentlyRemovedDateranges","ccOffset","oldFrag","newFrag","relurl","_currentInitSegment","skippedSegments","startCC","canSkipDateRanges","newFragments","_i2","oldPart","newPart","driftStartTime","driftStart","driftEndTime","driftEnd","oldParts","newParts","intersectionFn","_oldPart","_newPart","newFrags","oldFrags","_oldFrag","_newFrag","estimatedTimeUntilUpdate","reloadIntervalAfterMiss","timeSinceLastModified","useLastModified","roundTrip","availabilityDelay","updated","minRetry","misses","StreamController","_is_supported__WEBPACK_IMPORTED_MODULE_2__","_events__WEBPACK_IMPORTED_MODULE_3__","_fragment_tracker__WEBPACK_IMPORTED_MODULE_5__","_demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_8__","_types_transmuxer__WEBPACK_IMPORTED_MODULE_9__","_gap_controller__WEBPACK_IMPORTED_MODULE_10__","_errors__WEBPACK_IMPORTED_MODULE_11__","audioCodecSwap","gapController","_forceStartLoad","fragPlaying","onvplaying","onvseeked","fragLastKbps","couldBacktrack","backtrackFragment","audioCodecSwitch","onFragLoadEmergencyAborted","onLevelsUpdated","_levels$level","checkBuffer","checkFragmentChanged","getMainFwdBufferInfo","_this$backtrackFragme","backtrackFrag","_this$media2","_loadBitrateTestFrag","fragOrPart","followingBufferedFrag","immediateLevelSwitch","abortCurrentFrag","fetchdelay","fragPlayingCurrent","bufferedFrag","nextBufferedFrag","maxStart","startPts","onMediaPlaying","onMediaSeeked","aac","heaac","_curLevel$details","newLevelId","endCC","accurateTimeOffset","_getAudioCodec","fromAltAudio","mediaTrack","alternate","videoTrack","swapAudioCodec","timescale","firstKeyFrame","firstKeyFramePTS","backtrack","_startPTS","_endPTS","_startDTS","_endDTS","ua","channelCount","fragCurrentLevel","LEVEL_SWITCHED","currentFrag","epocMs","SubtitleStreamController","_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_1__","_fragment_finders__WEBPACK_IMPORTED_MODULE_2__","_utils_discontinuities__WEBPACK_IMPORTED_MODULE_3__","_base_stream_controller__WEBPACK_IMPORTED_MODULE_6__","_types_loader__WEBPACK_IMPORTED_MODULE_7__","_types_level__WEBPACK_IMPORTED_MODULE_8__","currentTrackId","tracksBuffered","SUBTITLE_TRACKS_UPDATED","onSubtitleTracksUpdated","SUBTITLE_TRACK_SWITCH","onSubtitleTrackSwitch","SUBTITLE_TRACK_LOADED","onSubtitleTrackLoaded","SUBTITLE_FRAG_PROCESSED","onSubtitleFragProcessed","success","fragStart","fragEnd","endOffsetSubtitles","SUBTITLE","_this$fragCurrent","mediaBufferTimeRanges","mainSlidingStartFragment","foundFrag","encrypted","BufferableInstance","timeranges","getRange","_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_1__","SubtitleTrackController","queuedDefaultTrack","trackChangeListener","onTextTracksChanged","asyncPollTrackChange","pollTrackChange","useTextTrackPolling","subtitlePollingInterval","_subtitleDisplay","subtitleTrack","filterSubtitleTracks","textGroupId","initialTrackId","subtitleTracksUpdated","setSubtitleTrack","SUBTITLE_TRACK_LOADING","toggleTrackModes","groupTracks","oldTrack","nextTrack","subtitleDisplay","_tracks$newId","textTrackList","TimelineController","_utils_cea_608_parser__WEBPACK_IMPORTED_MODULE_2__","_utils_output_filter__WEBPACK_IMPORTED_MODULE_3__","_utils_webvtt_parser__WEBPACK_IMPORTED_MODULE_4__","_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__","_utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__","_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_7__","_types_loader__WEBPACK_IMPORTED_MODULE_8__","_utils_logger__WEBPACK_IMPORTED_MODULE_9__","Cues","unparsedVttFrags","captionsTracks","nonNativeCaptionsTracks","cea608Parser1","cea608Parser2","lastSn","prevCC","vttCCs","presentationOffset","new","captionsProperties","textTrack1","textTrack2","textTrack3","textTrack4","channel1","channel2","channel3","channel4","onFragParsingUserdata","onFragDecrypted","SUBTITLE_TRACKS_CLEARED","onSubtitleTracksCleared","addCues","screen","cueRanges","x1","y1","merged","cueRange","overlap","newCue","CUES_PARSED","getExistingTrack","createCaptionsTrack","createNativeTrack","createNonNativeTrack","_captionsProperties$t","existingTrack","createTextTrack","trackProperties","closedCaptions","NON_NATIVE_TEXT_TRACKS_FOUND","_cleanTracks","reset","hasIMSC1","textCodec","sameTracks","inUseTracks","inUseTrack","canReuseVttTextTrack","textTrackKind","_captionsOrSubtitlesFromCharacteristics","tracksList","_track$attrs","CHARACTERISTICS","transcribesSpokenDialog","describesMusicAndSound","captions","captionsTrack","instreamIdMatch","instreamId","_data$part$index","decrypted","trackPlaylistMedia","_parseIMSC1","_parseVTTs","_appendCues","payloadWebVTT","_fallbackToIMSC1","fragLevel","ccBytes","ccdatas","extractCea608Data","addData","actualCCBytes","tmpByte","ccbyte1","ccbyte2","ccType","manifestTrack","AESCrypto","subtle","aesIV","decrypt","removePadding","AESDecryptor","_utils_typed_array__WEBPACK_IMPORTED_MODULE_0__","outputBytes","paddingBytes","DataView","getUint8","rcon","subMix","Uint32Array","invSubMix","sBox","invSBox","ksRows","keySize","keySchedule","invKeySchedule","initTable","uint8ArrayToUint32Array_","getUint32","subMix0","subMix1","subMix2","subMix3","invSubMix0","invSubMix1","invSubMix2","invSubMix3","xi","sx","x4","x8","expandKey","keyBuffer","sameKey","ksRow","invKsRow","sbox","networkToHostOrderSwap","word","inputArrayBuffer","s0","s1","s2","s3","inputWords0","inputWords1","inputWords2","inputWords3","nRounds","invSBOX","initVector","initVector0","initVector1","initVector2","initVector3","inputInt32","Int32Array","outputInt32","swapWord","Decrypter","_aes_crypto__WEBPACK_IMPORTED_MODULE_0__","_fast_aes_key__WEBPACK_IMPORTED_MODULE_1__","_aes_decryptor__WEBPACK_IMPORTED_MODULE_2__","_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__","_utils_typed_array__WEBPACK_IMPORTED_MODULE_5__","observer","_temp","_ref$removePKCS7Paddi","removePKCS7Padding","logEnabled","softwareDecrypter","fastAesKey","remainderData","currentIV","currentResult","browserCrypto","crypto","webkitSubtle","isSync","softwareDecrypt","decryptResult","logOnce","currentChunk","getValidChunk","aesKey","onWebCryptoError","splitPoint","FastAESKey","importKey","_base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__","_adts__WEBPACK_IMPORTED_MODULE_1__","AACDemuxer","_BaseAudioDemuxer","resetInitSegment","trackDuration","_audioTrack","pid","sequenceNumber","segmentCodec","manifestCodec","inputTimeScale","canParse","appendFrame","basePTS","frameIndex","missing","getAudioConfig","isHeaderPattern","getHeaderLength","getFullFrameLength","canGetFrameLength","isHeader","initTrackConfig","getFrameDuration","parseFrameHeader","adtsObjectType","adtsExtensionSamplingIndex","adtsChanelConfig","adtsSampleingRates","adtsSamplingIndex","samplerate","FRAG_PARSING_ERROR","headerLength","frameLength","newOffset","unit","stamp","header","_length","_sample","initPTSFn","_demux_id3__WEBPACK_IMPORTED_MODULE_1__","_types_demuxer__WEBPACK_IMPORTED_MODULE_2__","_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__","BaseAudioDemuxer","_id3Track","cachedData","resetTimeStamp","deaultTimestamp","resetContiguity","demux","lastDataIndex","id3Data","timestamp","dts","partialData","demuxSampleAes","keyData","ChunkCache","dataLength","concatUint8Arrays","dummyTrack","ExpGolomb","bytesAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","skipBytes","readBits","valu","skipLZ","leadingZeroCount","skipUEG","skipEG","readUEG","clz","readEG","readBoolean","readUByte","readUShort","readUInt","skipScalingList","lastScale","nextScale","readSPS","numRefFramesInPicOrderCntCycle","scalingListCount","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","profileIdc","chromaFormatIdc","picOrderCntType","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","readSliceType","isFooter","getID3Data","getTimeStamp","isTimeStampFrame","getID3Frames","decodeFrame","utf8ArrayToStr","testables","decoder","front","readSize","readTimeStamp","getFrameData","frameData","decodePrivFrame","decodeURLFrame","decodeTextFrame","owner","privateData","timeStampFrame","pts33Bit","exitOnNull","getTextDecoder","decoded","char2","char3","TextDecoder","_mpegaudio__WEBPACK_IMPORTED_MODULE_3__","MP3Demuxer","_types_demuxer__WEBPACK_IMPORTED_MODULE_1__","_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__","emsgSchemePattern","MP4Demuxer","txtTrack","captionTrack","_initData$video","_initData$audio","_timescale","_codec","sampleDuration","videoSamples","segmentedData","remainder","extractID3Track","emsgs","emsgInfo","schemeIdUri","presentationTime","timeScale","presentationTimeDelta","parseHeader","chromeVersion","BitratesMap","SamplingRateMap","SamplesCoefficients","BytesInSlot","samplesPerFrame","sampleRate","mpegVersion","mpegLayer","bitRateIndex","sampleRateIndex","paddingBit","channelMode","bitRate","sampleCoefficient","bytesInSlot","_crypt_decrypter__WEBPACK_IMPORTED_MODULE_0__","_tsdemuxer__WEBPACK_IMPORTED_MODULE_1__","SampleAesDecrypter","decryptBuffer","encryptedData","decryptAacSample","sampleIndex","sync","curUnit","encryptedBuffer","localthis","decryptedBuffer","decryptAacSamples","getAvcEncryptedData","decodedData","encryptedDataLen","Int8Array","outputPos","inputPos","getAvcDecryptedUnit","uint8DecryptedData","decryptAvcSample","unitIndex","decryptAvcSamples","curUnits","TransmuxerInterface","webworkify_webpack__WEBPACK_IMPORTED_MODULE_0__","_demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__","eventemitter3__WEBPACK_IMPORTED_MODULE_6__","isTypeSupported","onTransmuxComplete","onFlush","onwmsg","forwardMessage","typeSupported","mp4","mpeg","mp3","onWorkerMessage","INTERNAL_EXCEPTION","filename","lineno","cmd","terminate","defaultInitPTS","_lastFrag$initSegment","transmuxing","lastFrag","discontinuity","trackSwitch","snDiff","partDiff","initSegmentChange","configureTransmuxer","_transmuxResult","handleTransmuxComplete","_transmuxResult2","handleFlushResult","logType","configure","TransmuxerWorker","_demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__","eventemitter3__WEBPACK_IMPORTED_MODULE_3__","logFn","forwardWorkerLogs","emitTransmuxComplete","transferable","_transmuxResult$remux","addToTransferable","Transmuxer","isPromise","TransmuxConfig","TransmuxState","_crypt_decrypter__WEBPACK_IMPORTED_MODULE_2__","_demux_aacdemuxer__WEBPACK_IMPORTED_MODULE_3__","_demux_mp4demuxer__WEBPACK_IMPORTED_MODULE_4__","_demux_tsdemuxer__WEBPACK_IMPORTED_MODULE_5__","_demux_mp3demuxer__WEBPACK_IMPORTED_MODULE_6__","_remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__","_remux_passthrough_remuxer__WEBPACK_IMPORTED_MODULE_8__","muxConfig","remux","demuxer","remuxer","decryptionPromise","transmuxConfig","currentTransmuxState","uintData","defaultInitPts","resetInitialTimestamp","encryptionType","getEncryptionType","getDecrypter","emptyResult","needsProbing","transmux","currentState","transmuxResults","demuxResultOrPromise","demuxResult","flushRemux","_this$currentTransmux","resetNextTimestamp","transmuxSampleAes","transmuxUnencrypted","_demux","mux","Remuxer","Demuxer","Function","discardEPB","_adts__WEBPACK_IMPORTED_MODULE_0__","_mpegaudio__WEBPACK_IMPORTED_MODULE_1__","_exp_golomb__WEBPACK_IMPORTED_MODULE_2__","_sample_aes__WEBPACK_IMPORTED_MODULE_3__","_events__WEBPACK_IMPORTED_MODULE_4__","_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_5__","_errors__WEBPACK_IMPORTED_MODULE_7__","_types_demuxer__WEBPACK_IMPORTED_MODULE_8__","TSDemuxer","sampleAes","pmtParsed","_duration","_pmtId","_avcTrack","_txtTrack","aacOverFlow","avcSample","pesData","isSampleAes","pes","avcId","avcData","audioId","id3Id","audioData","unknownPID","pmtId","tsPacketErrors","stt","parsePES","parseAVCPES","parseAACPES","parseMPEGPES","parseID3PES","parsePAT","parsedPIDs","parsePMT","avc","extractRemainingSamples","parseAVCNALu","spsfound","audFound","pushAccessUnit","createAVCSample","sliceType","sps","codecarray","codecstring","pps","getLastNalUnit","_avcSample","lastUnit","overflow","naluState","lastState","lastUnitStart","lastUnitType","_unit","_lastUnit","_tmp","frameMissingBytes","sampleLength","frameOverflowBytes","frameDuration","id3Sample","tableEnd","pesLen","pesHdrLen","pesPts","pesDts","newData","pesFlags","payloadStartOffset","dataLen","avcTrack","nbSamples","lastSample","EPBPositions","newLength","sourceIndex","ErrorTypes","ErrorDetails","url_toolkit__WEBPACK_IMPORTED_MODULE_0__","_loader_playlist_loader__WEBPACK_IMPORTED_MODULE_1__","_loader_key_loader__WEBPACK_IMPORTED_MODULE_2__","_controller_id3_track_controller__WEBPACK_IMPORTED_MODULE_3__","_controller_latency_controller__WEBPACK_IMPORTED_MODULE_4__","_controller_level_controller__WEBPACK_IMPORTED_MODULE_5__","_controller_fragment_tracker__WEBPACK_IMPORTED_MODULE_6__","_controller_stream_controller__WEBPACK_IMPORTED_MODULE_7__","_is_supported__WEBPACK_IMPORTED_MODULE_8__","_config__WEBPACK_IMPORTED_MODULE_10__","eventemitter3__WEBPACK_IMPORTED_MODULE_11__","_events__WEBPACK_IMPORTED_MODULE_12__","coreComponents","networkControllers","_emitter","_autoLevelCapping","latencyController","levelController","DefaultConfig","ConfigAbrController","ConfigBufferController","ConfigCapLevelController","ConfigFpsController","playListLoader","keyLoader","id3TrackController","createController","ControllerClass","components","controllerInstance","eventObject","DESTROYING","loadedSource","loadingSource","controller","recoverMediaError","loadLevel","manualLevel","shouldStartCapping","newCapLevelToPlayerSize","currentProgramDateTime","subtitleTrackId","changeTypeSupported","_utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_0__","getSourceBuffer","SourceBuffer","WebKitSourceBuffer","sourceBufferValidAPI","_sourceBuffer$prototy","DateRangeAttribute","DateRange","_utils_attr_list__WEBPACK_IMPORTED_MODULE_1__","dateRangeAttr","dateRangeWithSameId","_startDate","_endDate","_badValueForSameId","previousAttr","decimalFloatingPoint","PLANNED_DURATION","FragmentLoader","LoadError","_wrapNativeSuper","Class","_cache","Wrapper","_construct","_getPrototypeOf","Parent","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","getPrototypeOf","MIN_CHUNK_SIZE","partLoadTimeout","_onProgress","FragmentILoader","DefaultILoader","loaderContext","createLoaderContext","loaderConfig","maxRetry","retryDelay","maxRetryDelay","highWaterMark","resetLoader","onAbort","onTimeout","onProgress","updateStatsFromPart","fragStats","partStats","partTotal","estTotalParts","estLoadedParts","estRemainingBytes","fragLoading","partLoading","rangeStart","rangeEnd","byteRangeStartOffset","byteRangeEndOffset","_Error","_len","_key","ElementaryStreamTypes","BaseSegment","Part","url_toolkit__WEBPACK_IMPORTED_MODULE_1__","_level_key__WEBPACK_IMPORTED_MODULE_3__","_load_stats__WEBPACK_IMPORTED_MODULE_4__","_inheritsLoose","baseurl","_this$elementaryStrea","_byteRange","setByteRange","byteRange","_BaseSegment","_decryptdata","rawProgramDateTime","tagList","levelkey","createInitializationVector","segmentNumber","uint8View","setDecryptDataFromLevelKey","fromURI","_this$decryptdata","_BaseSegment2","partAttrs","fragOffset","gap","enumeratedString","KeyLoader","loaders","decryptkey","decrypturl","destroyInternalLoaders","onKeyLoading","loaderName","Loader","fragLoader","loaderCallbacks","loadsuccess","loaderror","loadtimeout","LevelDetails","needSidxRanges","m3u8","canSkipUntil","preloadHint","partSnDiff","partIndexDiff","runTime","_this$partList","_this$fragments","_this$partList2","_this$partList3","LevelKey","absoluteOrBaseURI","_uri","keyFormatVersions","keyID","fromURL","relativeUrl","LoadStats","M3U8Parser","_date_range__WEBPACK_IMPORTED_MODULE_2__","_fragment__WEBPACK_IMPORTED_MODULE_3__","_level_details__WEBPACK_IMPORTED_MODULE_4__","_level_key__WEBPACK_IMPORTED_MODULE_5__","_utils_attr_list__WEBPACK_IMPORTED_MODULE_6__","_utils_logger__WEBPACK_IMPORTED_MODULE_7__","_utils_codecs__WEBPACK_IMPORTED_MODULE_8__","MASTER_PLAYLIST_REGEX","MASTER_PLAYLIST_MEDIA_REGEX","LEVEL_PLAYLIST_REGEX_FAST","LEVEL_PLAYLIST_REGEX_SLOW","MP4_REGEX_SUFFIX","findGroup","mediaGroupId","group","convertAVC1ToAVCOTI","avcdata","parseMasterPlaylist","sessionData","hasSessionData","lastIndex","decimalInteger","NAME","resolution","decimalResolution","setCodecs","sessionAttrs","parseMasterPlaylistMedia","medias","TYPE","LANGUAGE","autoselect","forced","groupCodec","assignCodec","parseLevelPlaylist","levelUrlId","currentSN","currentPart","discontinuityCounter","prevFrag","firstPdtIndex","createNextFrag","assignProgramDateTime","tag","value1","value2","skipAttrs","_keyAttrs$enumeratedS","keyAttrs","decryptmethod","decrypturi","decryptiv","hexadecimalInteger","decryptkeyformatversions","decryptkeyid","decryptkeyformat","mapAttrs","setInitSegment","serverControlAttrs","optionalFloat","partInfAttrs","previousFragmentPart","preloadHintAttrs","renditionReportAttrs","fragmentLength","firstFragment","_URLToolkit$parseURL$","_URLToolkit$parseURL","fragPrev","backfillProgramDateTimes","codecs","filtered","preferred","unknownCodecs","groupItem","codecProperty","codecValue","BYTERANGE","_m3u8_parser__WEBPACK_IMPORTED_MODULE_5__","_utils_attr_list__WEBPACK_IMPORTED_MODULE_7__","getResponseUrl","PlaylistLoader","onAudioTrackLoading","onSubtitleTrackLoading","createInternalLoader","PLoader","getInternalLoader","resetInternalLoader","contextType","LEVEL","_context$deliveryDire","isSidxRequest","handleSidxRequest","handlePlaylistLoaded","handleTrackOrLevelPlaylist","handleMasterPlaylist","handleManifestParsingError","handleNetworkError","_M3U8Parser$parseMast","audioGroups","subtitleGroups","levelId","mapContextToLevelType","singleLevel","_levelDetails$fragmen","sidxUrl","LEVEL_EMPTY_ERROR","sidxBox","sidxInfo","sidxReferences","references","segmentRef","segRefInfo","moovBox","moovEndOffset","MANIFEST_PARSING_ERROR","UNKNOWN","MANIFEST_LOAD_TIMEOUT","MANIFEST_LOAD_ERROR","SUBTITLE_TRACK_LOAD_TIMEOUT","SUBTITLE_LOAD_ERROR","errorData","getCacheAge","isFiniteNumber","AAC","getSilentFrame","UINT32_MAX","MP4","avc1","avcC","btrt","dinf","dref","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","pasp","sdtp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trun","trex","tkhd","vmhd","smhd","videoHdlr","audioHdlr","HDLR_TYPES","STTS","STSC","STCO","STSZ","VMHD","SMHD","STSD","majorBrand","avc1Brand","minorVersion","FTYP","box","DINF","upperWordDuration","lowerWordDuration","baseMediaDecodeTime","boxes","dependsOn","isDependedOn","hasRedundancy","avcc","hSpacing","vSpacing","configlen","sampleDependencyTable","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","cts","arraylen","isLeading","paddingValue","isNonSync","degradPrio","MP4Remuxer","normalizePts","flushTextTrackMetadataCueSamples","flushTextTrackUserdataCueSamples","_aac_helper__WEBPACK_IMPORTED_MODULE_1__","_mp4_generator__WEBPACK_IMPORTED_MODULE_2__","_utils_logger__WEBPACK_IMPORTED_MODULE_5__","_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__","safariWebkitVersion","ISGenerated","_initPTS","_initDTS","nextAvcDts","nextAudioPts","videoSampleDuration","isAudioContiguous","isVideoContiguous","_result","defaultTimeStamp","getVideoStartPts","rolloverDetected","minPTS","audioTimeOffset","videoTimeOffset","hasAudio","hasVideo","enoughAudioSamples","enoughVideoSamples","generateIS","firstKeyFrameIndex","findKeyframeIndex","audiovideoTimestampDelta","remuxAudio","audioTrackLength","remuxVideo","initDTS","audioSamples","computePTSDTS","firstDTS","lastDTS","inputSamples","outputSamples","mp4SampleDuration","maxPTS","sortSamples","deltadts","deltapts","inputDuration","averageSampleDuration","foundHole","firstPTS","nbNalu","naluLen","nbUnits","sampleLen","mdatSize","MUX_ERROR","setUint32","stretchedLastFrame","minDtsDelta","minPtsDelta","maxDtsDelta","maxPtsDelta","avcSampleUnits","mp4SampleLength","_j","_nbUnits","unitData","unitDataLen","ptsDelta","lastFrameDuration","gapTolerance","deltaToFrameEnd","compositionTimeOffset","Mp4Sample","_i3","nextDts","_pts","nextPts","nb","scaleFactor","inputSampleDuration","rawMPEG","alignedWithVideo","timeOffsetMpegTS","newStamp","fillFrame","lastPTS","_j2","_nbSamples","audioSample","_pts2","unitLen","remuxEmptyAudio","videoData","silentFrame","reference","isKeyframe","Mp4SampleFlags","_mp4_remuxer__WEBPACK_IMPORTED_MODULE_1__","_loader_fragment__WEBPACK_IMPORTED_MODULE_3__","PassThroughRemuxer","emitInitSegment","initTracks","generateInitSegment","getParsedTrackCodec","_this$initPTS","initPtsNum","parsedCodec","TaskLoop","_boundTick","_tickTimer","_tickInterval","_tickCallCount","hasInterval","hasNextTick","millis","CMCDVersion","CMCDObjectType","CMCDStreamingFormat","CMCDStreamType","MetadataSchema","HlsSkip","getSkipValue","v2","Yes","HlsUrlParameters","Level","searchParams","newValue","PlaylistContextType","PlaylistLevelType","ChunkMetadata","AttrList","DECIMAL_RESOLUTION_REGEX","ATTR_LIST_REGEX","parseAttrList","attrName","intValue","stringValue","hexadecimalIntegerAsNumber","comparisonFn","minIndex","maxIndex","currentElement","comparisonResult","BufferHelper","_logger__WEBPACK_IMPORTED_MODULE_0__","noopBuffered","maxHoleDuration","vbuffered","buffered2","buf2len","buf2end","bufferStartNext","bufferStart","Row","CaptionScreen","VerboseLevel","specialCea608CharsCodes","getCharForByte","_byte","charCode","NR_ROWS","NR_COLS","rowsLowCh1","rowsHighCh1","rowsLowCh2","rowsHighCh2","backgroundColors","CaptionsLogger","verboseLevel","severity","numArrayToHexArray","numArray","hexArray","PenState","foreground","underline","italics","flash","setStyles","attribs","isDefault","newPenState","StyledUnicodeChar","uchar","penState","setChar","setPenState","newChar","isEmpty","logger","chars","currPenState","cueStartTime","_proto4","equal","empty","setCursor","absPos","DEBUG","moveCursor","relPos","newPos","backSpace","insertChar","_byte2","_char","clearFromPos","startPos","clearToEndOfRow","getTextString","_char2","setPenStyles","rows","currRow","nrRollUpRows","lastOutputScreen","_proto5","_char3","setPen","INFO","setPAC","pacData","newRow","row","topRowIndex","prevLineTime","indent","prevPos","setBkgData","bkgData","setRollUpRows","nrRows","rollUp","TEXT","getDisplayText","topRow","asOneRow","displayText","rowNr","rowText","getTextAndFormat","Cea608Channel","channelNumber","outputFilter","chNr","verbose","displayedMemory","nonDisplayedMemory","currRollUpRow","writeScreen","_proto6","getHandler","setHandler","newHandler","setMode","newMode","insertChars","outputDataUpdate","ccRCL","ccBS","ccAOF","ccAON","ccDER","ccRU","ccFON","ccRDC","ccTR","ccRTD","ccEDM","ccCR","ccENM","ccEOC","ccTO","nrCols","ccMIDROW","colorIndex","dispatchCue","cueSplitAtTime","Cea608Parser","out1","out2","currentChannel","cmdHistory","_proto7","byteList","cmdFound","charsFound","DATA","parseCmd","parseMidrow","parsePAC","parseBackgroundAttributes","parseChars","currChNr","WARNING","hasCmdRepeated","setLastCmd","interpretPAC","_byte3","pacIndex","channelNr","oneCode","charCodes","charCode1","hexCodes","isCodecType","isCodecSupportedInMp4","sampleEntryCodesISO","a3ds","alac","alaw","dra1","dtsc","dtse","dtsh","enca","g719","g726","m4ae","mha1","mha2","mhm1","mhm2","mlpa","Opus","samr","sawb","sawp","sevc","sqcp","ssmv","twos","ulaw","avc2","avc3","avc4","avcp","av01","drac","dvav","dvhe","encv","hev1","hvc1","mjp2","mp4v","mvc1","mvc2","mvc3","mvc4","resv","rv60","s263","svc1","svc2","vp08","vp09","stpp","wvtt","typeCodes","_vttparser__WEBPACK_IMPORTED_MODULE_0__","_webvtt_parser__WEBPACK_IMPORTED_MODULE_1__","_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__","WHITESPACE_CHAR","captionScreen","indenting","cueText","getCueById","align","cueA","cueB","findFirstFragWithCC","shouldAlignOnDiscontinuities","findDiscontinuousReferenceFrag","adjustSlidingStart","alignStream","alignPDT","alignFragmentByPDTDelta","alignMediaPlaylistByPDT","_logger__WEBPACK_IMPORTED_MODULE_1__","_controller_level_helper__WEBPACK_IMPORTED_MODULE_2__","firstFrag","prevDetails","prevFrags","curFrags","prevStartFrag","adjustFragmentStart","referenceFrag","alignDiscontinuities","lastDetails","lastPDT","newPDT","refDetails","_utils_ewma__WEBPACK_IMPORTED_MODULE_0__","EwmaBandWidthEstimator","slow","defaultEstimate","defaultEstimate_","minWeight_","minDelayMs_","slow_","fast_","halfLife","getTotalWeight","durationMs","numBytes","durationS","bandwidthInBps","EWMA","estimate","alpha_","estimate_","totalWeight_","adjAlpha","zeroFactor","fetchSupported","_loader_load_stats__WEBPACK_IMPORTED_MODULE_1__","_demux_chunk_cache__WEBPACK_IMPORTED_MODULE_2__","AbortController","ReadableStream","Request","FetchLoader","fetchSetup","requestTimeout","getRequest","abortInternal","_this$callbacks","initParams","credentials","Headers","getRequestParameters","isArrayBuffer","LENGTH","FetchError","loadProgressively","responseData","loaderResponse","chunkCache","reader","getReader","pump","IMSC1_CODEC","parseIMSC1","_mp4_tools__WEBPACK_IMPORTED_MODULE_0__","_vttparser__WEBPACK_IMPORTED_MODULE_1__","_vttcue__WEBPACK_IMPORTED_MODULE_2__","_timescale_conversion__WEBPACK_IMPORTED_MODULE_4__","_webvtt_parser__WEBPACK_IMPORTED_MODULE_5__","HMSF_REGEX","TIME_UNIT_REGEX","textAlignToLineAlign","center","callBack","errorCallBack","ttmlList","syncTime","ttml","tt","DOMParser","parseFromString","getElementsByTagName","defaultRateInfo","frameRate","subFrameRate","frameRateMultiplier","tickRate","rateInfo","styleElements","collectionToDictionary","getElementCollection","regionElements","cueElements","cueElement","getTextContent","parseTtmlTime","timestampParsingError","region","ttsNs","regionStyle","styleAttributes","regionStyleName","getAttributeNS","getTtmlStyles","lineAlign","parseTTML","fromElement","parentName","childName","elementsWithId","dict","_node$childNodes","nodeName","textContent","hasAttributeNS","timeAttributeValue","parseHoursMinutesSecondsFrames","parseTimeUnits","enableLogs","noop","fakeLogger","exportedLogger","consolePrintFn","debugConfig","functions","exportLoggerFunctions","KeySystems","getMediaSource","WebKitMediaSource","RemuxerTrackIdConfig","bin2str","readUint16","readUint32","readSint32","writeUint32","findBox","parseSegmentIndex","parseInitSegment","getStartDTS","computeRawDurationFromSamples","offsetStartDTS","segmentValidRange","appendUint8Array","parseSamples","parseSEIMessageFromNALu","parseEmsg","_typed_array__WEBPACK_IMPORTED_MODULE_0__","_loader_fragment__WEBPACK_IMPORTED_MODULE_1__","_demux_id3__WEBPACK_IMPORTED_MODULE_2__","endbox","subresults","sidx","startByte","referencesCount","referenceIndex","referenceInfo","referenceSize","subsegmentDuration","earliestPresentationTime","traks","_index","hdlrType","soun","vide","fmp4","baseTime","sidxDuration","sidxs","dur","rawDuration","videoDuration","audioDuration","trafs","trackDefault","tfhdFlags","truns","sampleCount","upper","lower","segmentedRange","moofs","temp","seiSamples","isHEVCFlavor","moofOffset","defaultSampleDuration","defaultSampleSizePresent","defaultSampleSize","defaultSampleFlagsPresent","tfhdOffset","delimit","baseCodec","isHEVC","dataOffsetPresent","dataOffset","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleSize","sampleFlagsPresent","sampleCompositionOffsetsPresent","compositionOffset","trunOffset","sampleOffset","ix","naluTotalSize","naluSize","naluType","isSEIMessage","unescapedData","seiPtr","payloadType","payloadSize","endOfCaptions","leftOver","providerCode","userStructure","userDataType","totalBytes","uuidStrArray","_b","userDataBytes","userData","eventDuration","leftPresentationTime","rightPresentationTime","isSafeInteger","OutputFilter","sendAddTrackEvent","addCueToTrack","clearCurrentCues","removeCuesInRange","getCuesInRange","videoEl","Event","createEvent","initEvent","dispatchEvent","textTrackCue","cuesFound","firstCueInRange","mid","getFirstCueIndexAfterTime","_cue","toTimescaleFromBase","destScale","srcBase","toTimescaleFromScale","srcScale","toMsFromMpegTsClock","toMpegTsClockFromTimescale","sliceUint8","AllowedDirections","AllowedAlignments","isAllowedValue","allowed","lcValue","findAlignSetting","extend","rest","cobj","baseObj","hasBeenReset","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","setting","findDirectionSetting","SyntaxError","displayState","getCueAsHTML","parseTimeStamp","fixLineBreaks","VTTParser","_vttcue__WEBPACK_IMPORTED_MODULE_0__","computeSeconds","dflt","defaultKey","parseOptions","keyValueDelim","groupDelim","kv","defaults","parseCue","regionList","oInput","consumeTimeStamp","ts","skipWhitespace","vals","vertical","consumeCueSettings","collectNextLine","alreadyCollectedLine","hasSubstring","generateCueId","parseWebVTT","_timescale_conversion__WEBPACK_IMPORTED_MODULE_3__","_remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_4__","LINEBREAKS","inputString","searchString","vttByteArray","parsingError","vttLines","initPTS90Hz","cueTime","timestampMapMPEGTS","timestampMapLOCAL","inHeader","currCC","cueOffset","webVttMpegTsMapOffset","_prevCC","calculateOffset","timeString","secs","mins","cueString2millis","AGE_HEADER_LINE_REGEX","XhrLoader","retryTimeout","onprogress","loadInternal","setRequestHeader","readystatechange","loadprogress","responseText","responseURL","lengthComputable","getAllResponseHeaders","getResponseHeader","voidElement","comment","_classCallCheck","_inherits","_possibleConstructorReturn","_toArray","_interopDefaultLegacy","_typeof__default","_classCallCheck__default","_createClass__default","_assertThisInitialized__default","_inherits__default","_possibleConstructorReturn__default","_getPrototypeOf__default","_defineProperty__default","_toArray__default","ownKeys$6","_objectSpread$6","consoleLogger","baseLogger","Logger","concreteLogger","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","observers","cloned","_cloned","rej","makeString","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","setPath","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","regexEscape","_entityMap","escape","isIE10","userAgentData","ownKeys$5","_objectSpread$5","_createSuper$3","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct$3","Super","NewTarget","deepFind","keySeparator","joinedPath","ResourceStore","_EventEmitter","_super","defaultNS","ignoreJSONStructure","lng","addNamespaces","resources","addResource","deep","pack","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","getDataByLanguage","postProcessor","processors","addPostProcessor","handle","translator","processor","ownKeys$4","_objectSpread$4","_createSuper$2","_isNativeReflectConstruct$2","checkedLoadedFor","Translator","interpolation","resolved","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","matched","ki","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","overloadTranslationOptionHandler","returnDetails","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","isValidLookup","missingKeyNoValueFallbackToKey","resForMissing","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","defaultVariables","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","interpolate","na","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","extracted","fallbackNS","needsZeroSuffixLookup","ordinal","shouldUseIntlApi","needsContextHandling","utils","hasLoadedNamespace","possibleKey","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","pluralSeparator","contextKey","contextSeparator","returnNull","returnEmptyString","resourceStore","capitalize","LanguageUtil","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","cleanCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","isSupportedCode","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","deprecatedJsonVersions","suffixesOrder","zero","one","two","few","many","createRules","rules","numbers","plurals","PluralResolver","compatibilityJSON","Intl","PluralRules","_unused","rule","getRule","resolvedOptions","pluralCategories","pluralCategory1","pluralCategory2","pluralCategory","prepend","getSuffixRetroCompatible","noAbs","simplifyPluralSuffix","returnSuffix","ownKeys$3","_objectSpread$3","Interpolator","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","regex","safeValue","todo","matchedVar","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","doReduce","elem","ownKeys$2","_objectSpread$2","createCachedFormatter","Formatter","NumberFormat","currency","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","ListFormat","_format","mem","_parseFormatStr","formatStr","formatName","formatOptions","optStr","_opt$split","_opt$split2","parseFormatStr","formatted","valOptions","formatParams","locale","ownKeys$1","_objectSpread$1","_createSuper$1","_isNativeReflectConstruct$1","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","languages","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","pendingCount","addResourceBundle","_getLastOfPath2","removePending","loadedKeys","fcName","tried","wait","resolver","queueLoad","loadOne","prepareLoading","fallbackValue","isUpdate","clb","initImmediate","preload","partialBundledLanguages","tDescription","transformOptions","_createSuper","bindMemberFunctions","inst","I18n","isInitialized","isClone","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","finish","initializedStoreOnce","usedCallback","resolvedLanguage","setResolvedLanguage","li","lngInLngs","hasLanguageSomeTranslations","isLanguageChangingTo","setLngProps","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","keyPrefix","fixedT","resultKey","_this$translator","_this$translator2","exists","lastLng","loadNotPending","loadState","precheck","preResult","preloaded","newLngs","mergedOptions","clone","membersToCopy","createInstance","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","crit","findBy","isValidType","forAll","local","HASH_UNDEFINED","argsTag","boolTag","dateTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reFlags","reIsHostCtor","reIsUint","cloneableTags","freeGlobal","freeSelf","root","freeExports","nodeType","freeModule","moduleExports","addMapEntry","pair","addSetEntry","arrayReduce","iteratee","accumulator","initAccum","isHostObject","mapToArray","overArg","transform","setToArray","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","objectToString","reIsNative","getPrototype","objectCreate","nativeGetSymbols","nativeIsBuffer","nativeKeys","getNative","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","entry","ListCache","MapCache","Stack","__data__","arrayLikeKeys","inherited","isObjectLike","isArrayLike","isArrayLikeObject","isArguments","baseTimes","skipIndexes","isIndex","assignValue","objValue","eq","assocIndexOf","baseClone","isDeep","isFull","customizer","isObject","isArr","initCloneArray","copyArray","getTag","isFunc","cloneBuffer","isPrototype","initCloneObject","copyObject","getSymbols","copySymbols","baseAssign","cloneFunc","cloneArrayBuffer","dataView","cloneDataView","typedArray","cloneTypedArray","cloneMap","cloneRegExp","cloneSet","symbol","initCloneByTag","stacked","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getAllKeys","arrayEach","subValue","baseIsNative","isFunction","getMapData","getValue","pairs","LARGE_ARRAY_SIZE","ctorString","isLength","baseKeys","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","nativeMax","nativeMin","toNumber","isSymbol","isBinary","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","arrayIncludes","fromIndex","fromRight","baseFindIndex","baseIsNaN","baseIndexOf","arrayIncludesWith","comparator","arrayMap","baseUnary","cacheHas","SetCache","pattern","castArrayLikeObject","arrays","mapped","othLength","othIndex","caches","maxLength","seen","outer","computed","baseIntersection","otherArgs","arrayTag","errorTag","typedArrayTags","freeProcess","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","nativeObjectToString","symToStringTag","isArg","isBuff","isType","baseGetTag","isOwn","unmasked","getRawTag","baseIsArguments","baseIsEqual","bitmask","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","isMasked","arrValue","resIndex","arrayFilter","FUNC_ERROR_TEXT","magnetURIDecode","encode","xts","xt","infoHashBuffer","infoHashV2Buffer","infoHashV2","xtsDeduped","publicKeyBuffer","xs","publicKey","dn","keywords","kt","tr","urlList","ws","as","peerAddresses","bep53Range","base32","param","keyval","decodedStr","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","componentName","propFullName","secret","getShim","ReactPropTypes","objectOf","checkPropTypes","global","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","ucs2decode","counter","ucs2encode","digitToBasic","digit","flag","adapt","numPoints","firstTime","baseMinusTMin","basic","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","qs","maxKeys","kstr","vstr","stringifyPrimitive","ks","aa","ca","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","setAttributeNS","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Pa","Qa","$$typeof","_payload","_init","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","controlled","ab","bb","db","ownerDocument","eb","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","namespaceURI","firstChild","MSApp","execUnsafeLocalFunction","ob","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","opacity","order","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","setProperty","menuitem","area","col","embed","img","keygen","meta","wbr","ub","vb","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","jc","unstable_LowPriority","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","sc","tc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","delete","pointerId","Tc","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","defaultPrevented","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","pageX","pageY","getModifierState","zd","relatedTarget","toElement","movementX","movementY","Bd","Dd","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","fe","ge","he","le","tel","week","me","ne","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","compareDocumentPosition","Me","HTMLIFrameElement","Ne","contentEditable","Oe","focusedElem","selectionRange","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","of","pf","qf","rf","capture","passive","J","tf","uf","parentWindow","vf","wf","xa","$a","ba","je","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","bh","ch","eventTime","lane","dh","K","eh","fh","gh","hh","ih","jh","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_owner","_stringRef","th","uh","vh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","gi","ii","ji","getSnapshot","mi","ni","lastEffect","stores","oi","pi","qi","ri","si","ti","ui","vi","wi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Cj","Dj","nj","oj","pj","qj","rj","tj","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onclick","createElementNS","createTextNode","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","isHidden","gk","hk","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","pk","Y","Z","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","rl","unmount","unstable_scheduleHydration","tl","usingClientEntryPoint","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","FOCUS_GROUP","FOCUS_DISABLED","useMergeRefs","assignRef","facade","hiddenGuard","InFocusGuard","__assign","ItoI","innerCreateMedium","middleware","assigned","useMedium","assignSyncMedium","cbs","assignMedium","pendingQueue","executeQueue","cycle","createMedium","mediumFocus","mediumBlur","mediumEffect","mediumSidecar","medium","ssr","createSidecarMedium","emptyArray","parentRef","_extends2","_React$useState","realObserved","setObserved","observed","isActive","originalFocusedElement","noFocusGuards","persistentFocus","crossFrame","allowTextSelection","whiteList","hasPositiveIndices","_props$shards","shards","_props$as","Container","_props$lockProps","containerProps","SideCar","sideCar","shouldReturnFocus","returnFocus","focusOptions","onActivationCallback","onActivation","onDeactivationCallback","onDeactivation","allowDefer","returnFocusTo","howToReturnFocus","returnFocusOptions","setObserveNode","newObserved","hasLeadingGuards","hasTailingGuards","mergedRef","reducePropsToState","handleStateChangeOnClient","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","peek","PureComponent","getDisplayName","getParentNode","Node","DOCUMENT_FRAGMENT_NODE","host","isTopNode","DOCUMENT_NODE","isVisibleUncached","checkParent","ELEMENT_NODE","computedStyle","getPropertyValue","isElementHidden","isVisibleCached","visibilityCache","cached","isAutoFocusAllowedCached","isAutoFocusAllowed","isAutoFocusAllowedUncached","getDataset","isHTMLInputElement","isRadioElement","attribute","isGuard","_a","focusGuard","isNotAGuard","isDefined","correctNode","findSelectedRadio","pickFirstFocus","pickFocusable","NEW_FOCUS","newFocus","innerNodes","outerNodes","lastNode","cnt","firstFocus","lastFocus","isOnGuard","resultSet","activeIndex","lastNodeInside","indexDiff","firstNodeIndex","lastNodeIndex","correctedNodes","correctedIndexDiff","returnFirstNode","returnLastNode","toArray","asArray","tabSort","tabDiff","orderByTabIndex","filterNegative","keepGuards","queryTabbables","queryGuardTabbables","getFocusablesWithShadowDom","withGuards","shadowRoot","getFocusables","parents","filterFocusable","isHTMLButtonElement","notHiddenInput","filterAutoFocusable","getTabbableNodes","topNodes","getAllTabbableNodes","parentAutofocusables","topNode","parentFocus","getParentAutofocusables","getTopParent","getAllAffectedNodes","currentNode","contained","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","filterNested","getNestedShadowActiveElement","getActiveElement","getParents","getCommonParent","nodeA","nodeB","parentsA","parentsB","currentParent","getTopCommonParent","baseActiveElement","leftEntry","rightEntries","activeElements","leftEntries","topCommon","subEntry","common","getFocusMerge","commonParent","anyFocusable","innerElements","srcNodes","dstNodes","remap","autoFocusables","orderedInnerElements","entity","autoFocusable","allParentAutofocusables","autofocus","guardCount","lockDisabled","focusable","focusInsideIframe","focusInside","getFocusabledIn","lockItem","guard","deferAction","setImmediate","isFreeFocus","lastActiveTrap","lastActiveFocus","lastPortaledElement","focusWasOutsideWindow","defaultWhitelist","autoGuard","startIndex","step","allNodes","lastGuard","focusAutoGuard","extractRef","checkInHost","check","boundary","activateTrap","_lastActiveTrap","workingNode","portaledElement","workingArea","focusWhitelisted","withinHost","newActiveElement","focusedIndex","onTrap","observerNode","onWindowBlur","moveFocusInside","propsList","_ref5","traps","trap","lastTrap","sameTrap","_ref6","FocusLockCombination","_objectWithoutPropertiesLoose","I18nextProvider","_react","I18nContext","Trans","i18nKey","_ref$tOptions","tOptions","i18nFromProps","tFromProps","shouldUnescape","additionalProps","_objectWithoutProperties2","_excluded","i18nFromContext","defaultNSFromContext","getI18n","_TransWithoutContext","_defineProperty2","nodesToString","_excluded2","_i18nInstance","_utils","warnOnce","reactI18nextOptions","_defaults","getDefaults","react","transEmptyNodeValue","hashTransKey","interpolationOverride","combinedTOpts","translation","targetString","i18nOptions","keepArray","transKeepBasicHtmlNodesFor","emptyChildrenButNeedsHandling","getData","childs","getAsArray","hasChildren","getChildren","_typeof2","isValidElement","ast","_htmlParseStringify","renderInner","rootReactNode","mappedChildren","mapAST","hasValidReactChildren","pushTranslatedJSX","isVoid","dummy","cloneElement","reactNode","astNode","reactNodes","newTarget","translationContent","isElement","isValidTranslationWithChildren","isEmptyTransWithHTML","isKnownComponent","_inner","transSupportBasicHtmlNodes","_inner3","_inner4","wrapTextNodes","transWrapTextNodes","_content","renderNodes","useAsParent","defaultTransParent","checkLength","stringNode","childrenArray","childIndex","childPropsCount","shouldKeepChild","childChildren","i18nIsDynamicList","Translation","_useTranslation","_useTranslation3","_useTranslation2","_slicedToArray2","composeInitialProps","ForComponent","i18nInitialProps","getInitialProps","componentsInitialProps","setDefaults","setI18n","_initReactI18next","initReactI18next","ReportNamespaces","_classCallCheck2","_createClass2","usedNamespaces","reportNamespaces","getUsedNamespaces","initialI18nStore","getResourceBundle","initialLanguage","defaultOptions","bindI18n","bindI18nStore","useSuspense","i18nInstance","_Trans","_withTranslation","withTranslation","_Translation","_I18nextProvider","_withSSR","withSSR","_useSSR","useSSR","selectOrdinal","plural","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","lngResources","initializedLanguageOnce","notReadyT","retNotReady","addUsedNamespaces","getT","getFixedT","nsMode","_useState","_useState2","setT","joinedNS","previousJoinedNS","usePrevious","boundReset","loadNamespaces","isInitial","ignore","_console","isNewerI18next","oldI18nextHasLoadedNamespace","alreadyWarned","I18nextWithSSR","I18nextWithTranslation","forwardedRef","passDownProps","tReady","withRef","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","SuspenseList","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isSuspenseList","getModuleId","typeOf","forceUpdate","__self","__source","_status","Children","only","_currentValue2","_threadCount","Consumer","_defaultValue","_globalName","createFactory","createRef","lazy","startTransition","unstable_act","Op","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","methodName","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","awrap","iter","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","sortIndex","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","isArrayish","ARROW_KEY_CODE","mapOfBoundRect","startingPoint","initiateSpatialNavigation","spatialNavigationSearch","focusableAreas","getSpatialNavigationContainer","CSS","registerProperty","syntax","inherits","currentKeyMode","__spatialNavigation__","keyMode","eventTarget","focusNavigableArrowKey","up","down","SPINNABLE_INPUT_TYPES","TEXT_INPUT_TYPES","endPosition","handlingEditableElement","searchOrigin","findSearchOrigin","elementFromPosition","elementFromPoint","isFocusable","isContainer","contentDocument","bestInsideCandidate","getCSSSpatNavAction","scrollingController","candidates","getSpatialNavigationCandidates","inside","focusingController","parentContainer","navigateChain","bestCandidate","elementStyle","isScrollable","rect","containerRect","isEntirelyVisible","createSpatNavEvents","isScrollBoundary","moveScroll","isHTMLScrollBoundary","isDelegableContainer","isVisible","getFilteredSpatialNavigationCandidates","targetElement","filteredCandidates","bestTarget","internalCandidates","externalCandidates","currentElm","getClosestElement","getDistanceFromPoint","getInnerDistance","selectBestCandidateFromEdge","spatialNavigationFunction","currentElmRect","distanceFunction","alignedCandidates","elm","isAligned","getAbsoluteDistance","getEuclideanDistance","getDistance","selectBestCandidate","innerTarget","descendantsBest","originalContainer","eventTargetRect","candidateRect","candidateBody","isOutside","childRect","rightEdgeCheck","leftEdgeCheck","topEdgeCheck","bottomEdgeCheck","isInside","frameElement","minDistance","minDistanceElements","focusables","eventType","triggeredEvent","CustomEvent","causedTarget","readCssVar","varName","currentOption","isScrollContainer","overflowX","isOverflow","scrollWidth","clientWidth","scrollX","scrollY","winScrollY","winScrollX","isAtagWithoutHref","isActuallyDisabled","inert","isExpresslyInert","isVisibleStyleProperty","isBeingRendered","elementRect","offsetX","offsetWidth","offsetY","offsetHeight","hitTestPoint","leftTop","rightBottom","point","elemFromPoint","hitTest","thisVisibility","rect1","rect2","isRightSide","isBelow","points","getEntryAndExitPoints","P1","entryPoint","exitPoint","P2","baseEdge","orthogonalBias","alignBias","intersectionRect","intersection_rect","new_location","new_max_point","getIntersectionRect","boundingClientRect","enableExperimentalAPIs","getInitialAPIs","canScroll","findTarget","findCandidate","bestNextTarget","findCandidates","findNextTarget","getDistanceFromTarget","candidateElement","getExperimentalAPI","seal","_keymode","setStartingPoint","byteTable","plain","buff","quintets","shiftIndex","encoded","plainChar","plainDigit","plainPos","encodedByte","util","Url","slashes","port","urlParse","relative","resolveObject","isString","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","esc","qm","tkeys","tkey","rkeys","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","hasTrailingSlash","isAbsolute","Mouse","Touch","Pointer","CancelledByMovement","CancelledByRelease","CancelledOutsideElement","PointerEvent","TouchEvent","MouseEvent","LongPressCallbackReason","LongPressEventType","captureEvent","cancelOnMovement","cancelOutsideElement","filterEvents","onMove","onFinish","onCancel","onPointerMove","onPointerUp","onPointerLeave","VTTRegion","makeColorSet","fontScale","observe","subject","topic","fontColor","Services","prefs","getCharPref","fontOpacity","getIntPref","WebVTTSet","fontSet","backgroundOpacity","backgroundSet","edgeType","edgeColor","edgeSet","pref","addObserver","_objCreate","ParsingError","Errors","BadSignature","BadTimeStamp","ESCAPE","TAG_NAME","ruby","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","unescape1","shouldAdd","localName","annotation","rootDiv","tagStack","createProcessingInstruction","strongRTLRanges","isStrongRTLChar","currentRange","StyleBox","CueStyleBox","styleOptions","isIE8","cueDiv","writingMode","unicodeBidi","applyStyles","div","font","whiteSpace","nodeStack","pushNodes","nextTextNode","determineBidi","stylesunicodeBidi","textPos","positionAlign","formatStyle","move","BoxPosition","rects","getClientRects","moveBoxToLinePosition","styleBox","containerBox","boxPositions","boxPosition","linePos","trackList","computeLinePos","axis","maxPosition","initialAxis","calculatedPercentage","bestPosition","specifiedPosition","percentage","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","findBestPosition","toCSSCompatValues","toMove","overlaps","b2","getSimpleBoxPosition","cuetext","processCues","overlay","paddedOverlay","margin","shouldCompute","reportOrThrowError","ontimestampmap","parseTimestampMap","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseRegion","linebyline","successCb","errCb","vals0","fromJSON","directionSetting","alignSetting","scrollSetting","isValidPercentValue","_width","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","findScrollSetting","toPropertyKey","assertThisInitialized","iterableToArray","hint","prim","__webpack_module_cache__","cachedModule","__webpack_modules__","definition","nmd","scriptUrl","importScripts","currentScript","scripts","stremioTranslations","translations","fromEntries","use","getElementById","serviceWorker","register","registrationError"],"sourceRoot":""} \ No newline at end of file diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/worker.js b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/worker.js similarity index 91% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/worker.js rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/worker.js index 36ed1a7ab..11eaae392 100644 --- a/development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/worker.js +++ b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/worker.js @@ -1,2 +1,2 @@ -(()=>{var e={8926:e=>{function t(e,t,n,r,o,a,i){try{var u=e[a](i),c=u.value}catch(e){return void n(e)}u.done?t(c):Promise.resolve(c).then(r,o)}e.exports=function(e){return function(){var n=this,r=arguments;return new Promise((function(o,a){var i=e.apply(n,r);function u(e){t(i,o,a,u,c,"next",e)}function c(e){t(i,o,a,u,c,"throw",e)}u(void 0)}))}},e.exports.default=e.exports,e.exports.__esModule=!0},5318:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.default=e.exports,e.exports.__esModule=!0},8:e=>{function t(n){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=t=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=t=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),t(n)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0},7757:(e,t,n)=>{e.exports=n(5666)},6553:(e,t,n)=>{"use strict";var r=n(5318),o=r(n(7757)),a=r(n(8926));e.exports=function(e,t){t.addEventListener("message",(function(){var n=(0,a.default)(o.default.mark((function n(r){var a,i,u,c,f,s,l;return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(a=r.data.request){n.next=3;break}return n.abrupt("return");case 3:if(i=a.id,u=a.path,c=a.args,n.prev=4,"function"!=typeof(f=u.reduce((function(e,t){return e[t]}),e))){n.next=13;break}return l=u.slice(0,u.length-1).reduce((function(e,t){return e[t]}),e),n.next=10,f.apply(l,c);case 10:s=n.sent,n.next=16;break;case 13:return n.next=15,f;case 15:s=n.sent;case 16:t.postMessage({response:{id:i,result:{data:s}}}),n.next=22;break;case 19:n.prev=19,n.t0=n.catch(4),t.postMessage({response:{id:i,result:{error:n.t0}}});case 22:case"end":return n.stop()}}),n,null,[[4,19]])})));return function(e){return n.apply(this,arguments)}})()),this.call=(function(){var e=(0,a.default)(o.default.mark((function e(n,r){var a;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=Math.random().toString(32).slice(2),e.abrupt("return",new Promise((function(e,o){t.addEventListener("message",(function n(r){var i=r.data.response;i&&i.id===a&&(t.removeEventListener("message",n),"error"in i.result?o(i.result.error):e(i.result.data))})),t.postMessage({request:{id:a,path:n,args:r}})})));case 2:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}})()}},6489:(e,t,n)=>{"use strict";var r=n(5318);Object.defineProperty(t,"__esModule",{value:!0}),t.analytics=function(e,t){o.analytics(b(e),b(t))},t.decode_stream=function(e){return _(o.decode_stream(b(e)))},t.default=void 0,t.dispatch=function(e,t,n){o.dispatch(b(e),b(t),b(n))},t.get_state=function(e){return _(o.get_state(b(e)))},t.initialize_runtime=function(e){return _(o.initialize_runtime(b(e)))},t.start=function(){o.start()};var o,a=r(n(7757)),i=r(n(8926)),u=r(n(8)),c={url:new URL("/stremio_core_web.js",document.baseURI).href},f=new Array(32).fill(void 0);function s(e){return f[e]}f.push(void 0,null,!0,!1);var l=f.length;function _(e){var t=s(e);return(function(e){e<36||(f[e]=l,l=e)})(e),t}function b(e){l===f.length&&f.push(f.length+1);var t=l;return l=f[t],f[t]=e,t}var g=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});g.decode();var w=null;function d(){return null!==w&&w.buffer===o.memory.buffer||(w=new Uint8Array(o.memory.buffer)),w}function p(e,t){return g.decode(d().subarray(e,e+t))}var h=0,y=new TextEncoder("utf-8"),v="function"==typeof y.encodeInto?function(e,t){return y.encodeInto(e,t)}:function(e,t){var n=y.encode(e);return t.set(n),{read:e.length,written:n.length}};function m(e,t,n){if(void 0===n){var r=y.encode(e),o=t(r.length);return d().subarray(o,o+r.length).set(r),h=r.length,o}for(var a=e.length,i=t(a),u=d(),c=0;c<a;c++){var f=e.charCodeAt(c);if(f>127)break;u[i+c]=f}if(c!==a){0!==c&&(e=e.slice(c)),i=n(i,a,a=c+3*e.length);var s=d().subarray(i+c,i+a);c+=v(e,s).written}return h=c,i}function x(e){return null==e}var k=null;function E(){return null!==k&&k.buffer===o.memory.buffer||(k=new Int32Array(o.memory.buffer)),k}function L(e){var t=(0,u.default)(e);if("number"==t||"boolean"==t||null==e)return"".concat(e);if("string"==t)return'"'.concat(e,'"');if("symbol"==t){var n=e.description;return null==n?"Symbol":"Symbol(".concat(n,")")}if("function"==t){var r=e.name;return"string"==typeof r&&r.length>0?"Function(".concat(r,")"):"Function"}if(Array.isArray(e)){var o=e.length,a="[";o>0&&(a+=L(e[0]));for(var i=1;i<o;i++)a+=", "+L(e[i]);return a+="]"}var c,f=/\[object ([^\]]+)\]/.exec(toString.call(e));if(!(f.length>1))return toString.call(e);if("Object"==(c=f[1]))try{return"Object("+JSON.stringify(e)+")"}catch(e){return"Object"}return e instanceof Error?"".concat(e.name,": ").concat(e.message,"\n").concat(e.stack):c}function S(e,t,n,r){var a={a:e,b:t,cnt:1,dtor:n},i=function(){a.cnt++;var e=a.a;a.a=0;try{for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return r.apply(void 0,[e,a.b].concat(n))}finally{0==--a.cnt?o.__wbindgen_export_2.get(a.dtor)(e,a.b):a.a=e}};return i.original=a,i}function j(e,t){o.wasm_bindgen__convert__closures__invoke0_mut__he2543e290e6d4ef5(e,t)}function O(e,t,n){o.wasm_bindgen__convert__closures__invoke1_mut__hf3103f2dd259d587(e,t,b(n))}function A(e,t){try{return e.apply(this,t)}catch(e){o.__wbindgen_exn_store(b(e))}}function R(e,t,n,r){o.wasm_bindgen__convert__closures__invoke2_mut__h210e3468a7d65409(e,t,b(n),b(r))}function T(e,t){return I.apply(this,arguments)}function I(){return(I=(0,i.default)(a.default.mark((function e(t,n){var r,o;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!("function"==typeof Response&&t instanceof Response)){e.next=23;break}if("function"!=typeof WebAssembly.instantiateStreaming){e.next=15;break}return e.prev=2,e.next=5,WebAssembly.instantiateStreaming(t,n);case 5:case 20:return e.abrupt("return",e.sent);case 8:if(e.prev=8,e.t0=e.catch(2),"application/wasm"==t.headers.get("Content-Type")){e.next=14;break}console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e.t0),e.next=15;break;case 14:throw e.t0;case 15:return e.next=17,t.arrayBuffer();case 17:return r=e.sent,e.next=20,WebAssembly.instantiate(r,n);case 23:return e.next=25,WebAssembly.instantiate(t,n);case 25:if(!((o=e.sent)instanceof WebAssembly.Instance)){e.next=30;break}return e.abrupt("return",{instance:o,module:t});case 30:return e.abrupt("return",o);case 31:case"end":return e.stop()}}),e,null,[[2,8]])})))).apply(this,arguments)}function M(e){return P.apply(this,arguments)}function P(){return P=(0,i.default)(a.default.mark((function e(t){var r,i,f,l;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===t&&(t=new URL("stremio_core_web_bg.wasm",c.url)),(r={}).wbg={},r.wbg.__wbg_new_693216e109162396=function(){return b(new Error)},r.wbg.__wbg_stack_0ddaca5d1abfb52f=function(e,t){var n=m(s(t).stack,o.__wbindgen_malloc,o.__wbindgen_realloc),r=h;E()[e/4+1]=r,E()[e/4+0]=n},r.wbg.__wbg_error_09919627ac0992f5=function(e,t){try{console.error(p(e,t))}finally{o.__wbindgen_free(e,t)}},r.wbg.__wbindgen_object_drop_ref=function(e){_(e)},r.wbg.__wbindgen_object_clone_ref=function(e){return b(s(e))},r.wbg.__wbg_crypto_0e9b639eaff47699=function(e){return b(s(e).crypto)},r.wbg.__wbindgen_is_object=function(e){var t=s(e);return"object"===(0,u.default)(t)&&null!==t},r.wbg.__wbg_process_c1e9ac005dd29bbc=function(e){return b(s(e).process)},r.wbg.__wbg_versions_6850926753fc88df=function(e){return b(s(e).versions)},r.wbg.__wbg_node_c8026099e4c8fb6f=function(e){return b(s(e).node)},r.wbg.__wbindgen_is_string=function(e){return"string"==typeof s(e)},r.wbg.__wbg_require_39d411311735f255=function(){return A((function(){return b(l.require)}),arguments)},r.wbg.__wbindgen_is_function=function(e){return"function"==typeof s(e)},r.wbg.__wbindgen_string_new=function(e,t){return b(p(e,t))},r.wbg.__wbg_call_346669c262382ad7=function(){return A((function(e,t,n){return b(s(e).call(s(t),s(n)))}),arguments)},r.wbg.__wbg_msCrypto_558ee59e36bf4331=function(e){return b(s(e).msCrypto)},r.wbg.__wbg_newwithlength_929232475839a482=function(e){return b(new Uint8Array(e>>>0))},r.wbg.__wbg_self_c6fbdfc2918d5e58=function(){return A((function(){return b(self.self)}),arguments)},r.wbg.__wbg_window_baec038b5ab35c54=function(){return A((function(){return b(window.window)}),arguments)},r.wbg.__wbg_globalThis_3f735a5746d41fbd=function(){return A((function(){return b(globalThis.globalThis)}),arguments)},r.wbg.__wbg_global_1bc0b39582740e95=function(){return A((function(){return b(n.g.global)}),arguments)},r.wbg.__wbindgen_is_undefined=function(e){return void 0===s(e)},r.wbg.__wbg_newnoargs_be86524d73f67598=function(e,t){return b(new Function(p(e,t)))},r.wbg.__wbg_call_888d259a5fefc347=function(){return A((function(e,t){return b(s(e).call(s(t)))}),arguments)},r.wbg.__wbindgen_string_get=function(e,t){var n=s(t),r="string"==typeof n?n:void 0,a=x(r)?0:m(r,o.__wbindgen_malloc,o.__wbindgen_realloc),i=h;E()[e/4+1]=i,E()[e/4+0]=a},r.wbg.__wbg_set_82a4e8a85e31ac42=function(){return A((function(e,t,n){return Reflect.set(s(e),s(t),s(n))}),arguments)},r.wbg.__wbg_instanceof_Error_561efcb1265706d8=function(e){return s(e)instanceof Error},r.wbg.__wbg_message_9f7d15ff97fc4102=function(e){return b(s(e).message)},r.wbg.__wbindgen_json_serialize=function(e,t){var n=s(t),r=m(JSON.stringify(void 0===n?null:n),o.__wbindgen_malloc,o.__wbindgen_realloc),a=h;E()[e/4+1]=a,E()[e/4+0]=r},r.wbg.__wbindgen_memory=function(){return b(o.memory)},r.wbg.__wbg_buffer_397eaa4d72ee94dd=function(e){return b(s(e).buffer)},r.wbg.__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff=function(e,t,n){return b(new Uint8Array(s(e),t>>>0,n>>>0))},r.wbg.__wbg_randomFillSync_f8d4e42f84f40e2a=function(){return A((function(e,t){s(e).randomFillSync(_(t))}),arguments)},r.wbg.__wbg_subarray_8b658422a224f479=function(e,t,n){return b(s(e).subarray(t>>>0,n>>>0))},r.wbg.__wbg_getRandomValues_3af6527bb0405f8f=function(){return A((function(e,t){s(e).getRandomValues(s(t))}),arguments)},r.wbg.__wbg_new_a7ce447f15ff496f=function(e){return b(new Uint8Array(s(e)))},r.wbg.__wbg_set_969ad0a60e51d320=function(e,t,n){s(e).set(s(t),n>>>0)},r.wbg.__wbg_instanceof_WorkerGlobalScope_f191ca0158f5637b=function(e){return s(e)instanceof WorkerGlobalScope},r.wbg.__wbindgen_json_parse=function(e,t){return b(JSON.parse(p(e,t)))},r.wbg.__wbg_static_accessor_app_version_5c1836accd84a174=function(e){var t=m(self.app_version,o.__wbindgen_malloc,o.__wbindgen_realloc),n=h;E()[e/4+1]=n,E()[e/4+0]=t},r.wbg.__wbg_static_accessor_shell_version_f3a039b84f11b4c2=function(e){var t=self.shell_version,n=x(t)?0:m(t,o.__wbindgen_malloc,o.__wbindgen_realloc),r=h;E()[e/4+1]=r,E()[e/4+0]=n},r.wbg.__wbg_navigator_8bc0889cda8f8500=function(e){return b(s(e).navigator)},r.wbg.__wbg_language_cd6e22892ba36a1f=function(e,t){var n=s(t).language,r=x(n)?0:m(n,o.__wbindgen_malloc,o.__wbindgen_realloc),a=h;E()[e/4+1]=a,E()[e/4+0]=r},r.wbg.__wbg_now_af172eabe2e041ad=function(){return Date.now()},r.wbg.__wbg_instanceof_Response_e1b11afbefa5b563=function(e){return s(e)instanceof Response},r.wbg.__wbg_status_6d8bb444ddc5a7b2=function(e){return s(e).status},r.wbg.__wbg_json_88cc6d5cf8f61121=function(){return A((function(e){return b(s(e).json())}),arguments)},r.wbg.__wbg_localstoragegetitem_09ebd6f5e5c7a06a=function(){return A((function(e,t){try{return b(self.local_storage_get_item(p(e,t)))}finally{o.__wbindgen_free(e,t)}}),arguments)},r.wbg.__wbg_setInterval_a02797f5ab1c7eb1=function(){return A((function(e,t,n){return s(e).setInterval(s(t),n)}),arguments)},r.wbg.__wbg_getlocationhash_9da0e4fa220f480d=function(){return A((function(){return b(self.get_location_hash())}),arguments)},r.wbg.__wbg_new_0b83d3df67ecb33e=function(){return b(new Object)},r.wbg.__wbg_newwithstrandinit_9b0fa00478c37287=function(){return A((function(e,t,n){return b(new Request(p(e,t),s(n)))}),arguments)},r.wbg.__wbg_fetch_b4e81012e07ff95a=function(e,t){return b(s(e).fetch(s(t)))},r.wbg.__wbg_localstorageremoveitem_13b980040b048f8b=function(){return A((function(e,t){try{return b(self.local_storage_remove_item(p(e,t)))}finally{o.__wbindgen_free(e,t)}}),arguments)},r.wbg.__wbg_localstoragesetitem_dcd49a24bcbceacd=function(){return A((function(e,t,n,r){try{return b(self.local_storage_set_item(p(e,t),p(n,r)))}finally{o.__wbindgen_free(e,t),o.__wbindgen_free(n,r)}}),arguments)},r.wbg.__wbg_new_b1d61b5687f5e73a=function(e,t){try{var n={a:e,b:t},r=new Promise((function(e,t){var r=n.a;n.a=0;try{return R(r,n.b,e,t)}finally{n.a=r}}));return b(r)}finally{n.a=n.b=0}},r.wbg.__wbg_measure_c528ff64085b7146=function(){return A((function(e,t,n,r){try{performance.measure(p(e,t),p(n,r))}finally{o.__wbindgen_free(e,t),o.__wbindgen_free(n,r)}}),arguments)},r.wbg.__wbg_mark_abc7631bdced64f0=function(e,t){performance.mark(p(e,t))},r.wbg.__wbg_log_02e20a3c32305fb7=function(e,t){try{console.log(p(e,t))}finally{o.__wbindgen_free(e,t)}},r.wbg.__wbg_log_5c7513aa8c164502=function(e,t,n,r,a,i,u,c){try{console.log(p(e,t),p(n,r),p(a,i),p(u,c))}finally{o.__wbindgen_free(e,t)}},r.wbg.__wbindgen_debug_string=function(e,t){var n=m(L(s(t)),o.__wbindgen_malloc,o.__wbindgen_realloc),r=h;E()[e/4+1]=r,E()[e/4+0]=n},r.wbg.__wbindgen_throw=function(e,t){throw new Error(p(e,t))},r.wbg.__wbg_then_2fcac196782070cc=function(e,t){return b(s(e).then(s(t)))},r.wbg.__wbg_then_8c2d62e8ae5978f7=function(e,t,n){return b(s(e).then(s(t),s(n)))},r.wbg.__wbg_resolve_d23068002f584f22=function(e){return b(Promise.resolve(s(e)))},r.wbg.__wbindgen_cb_drop=function(e){var t=_(e).original;if(1==t.cnt--)return t.a=0,!0;return!1},r.wbg.__wbindgen_closure_wrapper3796=function(e,t,n){return b(S(e,t,194,j))},r.wbg.__wbindgen_closure_wrapper5048=function(e,t,n){return b(S(e,t,194,O))},("string"==typeof t||"function"==typeof Request&&t instanceof Request||"function"==typeof URL&&t instanceof URL)&&(t=fetch(t)),e.t0=T,e.next=75,t;case 75:return e.t1=e.sent,e.t2=r,e.next=79,(0,e.t0)(e.t1,e.t2);case 79:return i=e.sent,f=i.instance,l=i.module,o=f.exports,M.__wbindgen_wasm_module=l,o.__wbindgen_start(),e.abrupt("return",o);case 86:case"end":return e.stop()}}),e)}))),P.apply(this,arguments)}var F=M;t.default=F},5666:e=>{var t=(function(e){"use strict";var t,n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",u=a.asyncIterator||"@@asyncIterator",c=a.toStringTag||"@@toStringTag";function f(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{f({},"")}catch(e){f=function(e,t,n){return e[t]=n}}function s(e,t,n,r){var a=t&&t.prototype instanceof d?t:d,i=Object.create(a.prototype),u=new A(r||[]);return o(i,"_invoke",{value:L(e,n,u)}),i}function l(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var _="suspendedStart",b="executing",g="completed",w={};function d(){}function p(){}function h(){}var y={};f(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(R([])));m&&m!==n&&r.call(m,i)&&(y=m);var x=h.prototype=d.prototype=Object.create(y);function k(e){["next","throw","return"].forEach((function(t){f(e,t,(function(e){return this._invoke(t,e)}))}))}function E(e,t){function n(o,a,i,u){var c=l(e[o],e,a);if("throw"!==c.type){var f=c.arg,s=f.value;return s&&"object"==typeof s&&r.call(s,"__await")?t.resolve(s.__await).then((function(e){n("next",e,i,u)}),(function(e){n("throw",e,i,u)})):t.resolve(s).then((function(e){f.value=e,i(f)}),(function(e){return n("throw",e,i,u)}))}u(c.arg)}var a;o(this,"_invoke",{value:function(e,r){function o(){return new t((function(t,o){n(e,r,t,o)}))}return a=a?a.then(o,o):o()}})}function L(e,t,n){var r=_;return function(o,a){if(r===b)throw new Error("Generator is already running");if(r===g){if("throw"===o)throw a;return T()}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var u=S(i,n);if(u){if(u===w)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===_)throw r=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=b;var c=l(e,t,n);if("normal"===c.type){if(r=n.done?g:"suspendedYield",c.arg===w)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=g,n.method="throw",n.arg=c.arg)}}}function S(e,n){var r=n.method,o=e.iterator[r];if(o===t)return n.delegate=null,"throw"===r&&e.iterator.return&&(n.method="return",n.arg=t,S(e,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),w;var a=l(o,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,w;var i=a.arg;return i?i.done?(n[e.resultName]=i.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,w):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,w)}function j(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(j,this),this.reset(!0)}function R(e){if(e){var n=e[i];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function n(){for(;++o<e.length;)if(r.call(e,o))return n.value=e[o],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}return{next:T}}function T(){return{value:t,done:!0}}return p.prototype=h,o(x,"constructor",{value:h,configurable:!0}),o(h,"constructor",{value:p,configurable:!0}),p.displayName=f(h,c,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,h):(e.__proto__=h,f(e,c,"GeneratorFunction")),e.prototype=Object.create(x),e},e.awrap=function(e){return{__await:e}},k(E.prototype),f(E.prototype,u,(function(){return this})),e.AsyncIterator=E,e.async=function(t,n,r,o,a){void 0===a&&(a=Promise);var i=new E(s(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},k(x),f(x,c,"Generator"),f(x,i,(function(){return this})),f(x,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=R,A.prototype={constructor:A,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(O),!e)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function o(r,o){return u.type="throw",u.arg=e,n.next=r,o&&(n.method="next",n.arg=t),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],u=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),f=r.call(i,"finallyLoc");if(c&&f){if(this.prev<i.catchLoc)return o(i.catchLoc,!0);if(this.prev<i.finallyLoc)return o(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return o(i.catchLoc,!0)}else{if(!f)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return o(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,w):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),w},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),O(n),w}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;O(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:R(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),w}},e})(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},6310:(e,t,n)=>{"use strict";e.exports=n.p+"f4f59074954b11898de7b384b6320863c5aa1fba/binaries/stremio_core_web_bg.wasm"}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.g=(function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}})(),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var t=n.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e+"../../"})(),(()=>{"use strict";var e=n(5318),t=e(n(7757)),r=e(n(8926)),o=new(n(6553))(self,self);self.init=(function(){var e=(0,r.default)(t.default.mark((function e(a){var i,u,c,f,s,l,_,b,g,w;return t.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=a.appVersion,u=a.shellVersion,self.document={baseURI:self.location.href},self.app_version=i,self.shell_version=u,self.get_location_hash=(0,r.default)(t.default.mark((function e(){return t.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.call(["location","hash"],[]));case 1:case"end":return e.stop()}}),e)}))),self.local_storage_get_item=(function(){var e=(0,r.default)(t.default.mark((function e(n){return t.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.call(["localStorage","getItem"],[n]));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}})(),self.local_storage_set_item=(function(){var e=(0,r.default)(t.default.mark((function e(n,r){return t.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.call(["localStorage","setItem"],[n,r]));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}})(),self.local_storage_remove_item=(function(){var e=(0,r.default)(t.default.mark((function e(n){return t.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.call(["localStorage","removeItem"],[n]));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}})(),c=n(6489),f=c.default,s=c.initialize_runtime,l=c.get_state,_=c.get_debug_state,b=c.dispatch,g=c.analytics,w=c.decode_stream,self.getState=l,self.getDebugState=_,self.dispatch=b,self.analytics=g,self.decodeStream=w,e.next=16,f(n(6310));case 16:return e.next=18,s((function(e){return o.call(["onCoreEvent"],[e])}));case 18:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}})()})()})(); +(()=>{var e={8926:e=>{function t(e,t,n,r,o,a,i){try{var u=e[a](i),c=u.value}catch(e){return void n(e)}u.done?t(c):Promise.resolve(c).then(r,o)}e.exports=function(e){return function(){var n=this,r=arguments;return new Promise((function(o,a){var i=e.apply(n,r);function u(e){t(i,o,a,u,c,"next",e)}function c(e){t(i,o,a,u,c,"throw",e)}u(void 0)}))}},e.exports.default=e.exports,e.exports.__esModule=!0},5318:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.default=e.exports,e.exports.__esModule=!0},8:e=>{function t(n){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=t=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=t=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),t(n)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0},7757:(e,t,n)=>{e.exports=n(5666)},6553:(e,t,n)=>{"use strict";var r=n(5318),o=r(n(7757)),a=r(n(8926));e.exports=function(e,t){t.addEventListener("message",(function(){var n=(0,a.default)(o.default.mark((function n(r){var a,i,u,c,f,s,l;return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(a=r.data.request){n.next=3;break}return n.abrupt("return");case 3:if(i=a.id,u=a.path,c=a.args,n.prev=4,"function"!=typeof(f=u.reduce((function(e,t){return e[t]}),e))){n.next=13;break}return l=u.slice(0,u.length-1).reduce((function(e,t){return e[t]}),e),n.next=10,f.apply(l,c);case 10:s=n.sent,n.next=16;break;case 13:return n.next=15,f;case 15:s=n.sent;case 16:t.postMessage({response:{id:i,result:{data:s}}}),n.next=22;break;case 19:n.prev=19,n.t0=n.catch(4),t.postMessage({response:{id:i,result:{error:n.t0}}});case 22:case"end":return n.stop()}}),n,null,[[4,19]])})));return function(e){return n.apply(this,arguments)}})()),this.call=(function(){var e=(0,a.default)(o.default.mark((function e(n,r){var a;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=Math.random().toString(32).slice(2),e.abrupt("return",new Promise((function(e,o){t.addEventListener("message",(function n(r){var i=r.data.response;i&&i.id===a&&(t.removeEventListener("message",n),"error"in i.result?o(i.result.error):e(i.result.data))})),t.postMessage({request:{id:a,path:n,args:r}})})));case 2:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}})()}},6489:(e,t,n)=>{"use strict";var r=n(5318);Object.defineProperty(t,"__esModule",{value:!0}),t.analytics=function(e,t){o.analytics(b(e),b(t))},t.decode_stream=function(e){return _(o.decode_stream(b(e)))},t.default=void 0,t.dispatch=function(e,t,n){o.dispatch(b(e),b(t),b(n))},t.get_state=function(e){return _(o.get_state(b(e)))},t.initialize_runtime=function(e){return _(o.initialize_runtime(b(e)))},t.start=function(){o.start()};var o,a=r(n(7757)),i=r(n(8926)),u=r(n(8)),c={url:new URL("/stremio_core_web.js",document.baseURI).href},f=new Array(32).fill(void 0);function s(e){return f[e]}f.push(void 0,null,!0,!1);var l=f.length;function _(e){var t=s(e);return(function(e){e<36||(f[e]=l,l=e)})(e),t}function b(e){l===f.length&&f.push(f.length+1);var t=l;return l=f[t],f[t]=e,t}var g=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});g.decode();var w=null;function d(){return null!==w&&w.buffer===o.memory.buffer||(w=new Uint8Array(o.memory.buffer)),w}function p(e,t){return g.decode(d().subarray(e,e+t))}var h=0,y=new TextEncoder("utf-8"),v="function"==typeof y.encodeInto?function(e,t){return y.encodeInto(e,t)}:function(e,t){var n=y.encode(e);return t.set(n),{read:e.length,written:n.length}};function m(e,t,n){if(void 0===n){var r=y.encode(e),o=t(r.length);return d().subarray(o,o+r.length).set(r),h=r.length,o}for(var a=e.length,i=t(a),u=d(),c=0;c<a;c++){var f=e.charCodeAt(c);if(f>127)break;u[i+c]=f}if(c!==a){0!==c&&(e=e.slice(c)),i=n(i,a,a=c+3*e.length);var s=d().subarray(i+c,i+a);c+=v(e,s).written}return h=c,i}function x(e){return null==e}var k=null;function E(){return null!==k&&k.buffer===o.memory.buffer||(k=new Int32Array(o.memory.buffer)),k}function L(e){var t=(0,u.default)(e);if("number"==t||"boolean"==t||null==e)return"".concat(e);if("string"==t)return'"'.concat(e,'"');if("symbol"==t){var n=e.description;return null==n?"Symbol":"Symbol(".concat(n,")")}if("function"==t){var r=e.name;return"string"==typeof r&&r.length>0?"Function(".concat(r,")"):"Function"}if(Array.isArray(e)){var o=e.length,a="[";o>0&&(a+=L(e[0]));for(var i=1;i<o;i++)a+=", "+L(e[i]);return a+="]"}var c,f=/\[object ([^\]]+)\]/.exec(toString.call(e));if(!(f.length>1))return toString.call(e);if("Object"==(c=f[1]))try{return"Object("+JSON.stringify(e)+")"}catch(e){return"Object"}return e instanceof Error?"".concat(e.name,": ").concat(e.message,"\n").concat(e.stack):c}function S(e,t,n,r){var a={a:e,b:t,cnt:1,dtor:n},i=function(){a.cnt++;var e=a.a;a.a=0;try{for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return r.apply(void 0,[e,a.b].concat(n))}finally{0==--a.cnt?o.__wbindgen_export_2.get(a.dtor)(e,a.b):a.a=e}};return i.original=a,i}function j(e,t){o.wasm_bindgen__convert__closures__invoke0_mut__hdbcd58e79b51c8bc(e,t)}function O(e,t,n){o.wasm_bindgen__convert__closures__invoke1_mut__hef870a7742f9453d(e,t,b(n))}function A(e,t){try{return e.apply(this,t)}catch(e){o.__wbindgen_exn_store(b(e))}}function R(e,t,n,r){o.wasm_bindgen__convert__closures__invoke2_mut__hb0342fccdba4f5e5(e,t,b(n),b(r))}function T(e,t){return I.apply(this,arguments)}function I(){return(I=(0,i.default)(a.default.mark((function e(t,n){var r,o;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!("function"==typeof Response&&t instanceof Response)){e.next=23;break}if("function"!=typeof WebAssembly.instantiateStreaming){e.next=15;break}return e.prev=2,e.next=5,WebAssembly.instantiateStreaming(t,n);case 5:case 20:return e.abrupt("return",e.sent);case 8:if(e.prev=8,e.t0=e.catch(2),"application/wasm"==t.headers.get("Content-Type")){e.next=14;break}console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",e.t0),e.next=15;break;case 14:throw e.t0;case 15:return e.next=17,t.arrayBuffer();case 17:return r=e.sent,e.next=20,WebAssembly.instantiate(r,n);case 23:return e.next=25,WebAssembly.instantiate(t,n);case 25:if(!((o=e.sent)instanceof WebAssembly.Instance)){e.next=30;break}return e.abrupt("return",{instance:o,module:t});case 30:return e.abrupt("return",o);case 31:case"end":return e.stop()}}),e,null,[[2,8]])})))).apply(this,arguments)}function M(e){return P.apply(this,arguments)}function P(){return P=(0,i.default)(a.default.mark((function e(t){var r,i,f,l;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===t&&(t=new URL("stremio_core_web_bg.wasm",c.url)),(r={}).wbg={},r.wbg.__wbg_new_693216e109162396=function(){return b(new Error)},r.wbg.__wbg_stack_0ddaca5d1abfb52f=function(e,t){var n=m(s(t).stack,o.__wbindgen_malloc,o.__wbindgen_realloc),r=h;E()[e/4+1]=r,E()[e/4+0]=n},r.wbg.__wbg_error_09919627ac0992f5=function(e,t){try{console.error(p(e,t))}finally{o.__wbindgen_free(e,t)}},r.wbg.__wbindgen_object_drop_ref=function(e){_(e)},r.wbg.__wbindgen_object_clone_ref=function(e){return b(s(e))},r.wbg.__wbg_crypto_0e9b639eaff47699=function(e){return b(s(e).crypto)},r.wbg.__wbindgen_is_object=function(e){var t=s(e);return"object"===(0,u.default)(t)&&null!==t},r.wbg.__wbg_process_c1e9ac005dd29bbc=function(e){return b(s(e).process)},r.wbg.__wbg_versions_6850926753fc88df=function(e){return b(s(e).versions)},r.wbg.__wbg_node_c8026099e4c8fb6f=function(e){return b(s(e).node)},r.wbg.__wbindgen_is_string=function(e){return"string"==typeof s(e)},r.wbg.__wbg_require_39d411311735f255=function(){return A((function(){return b(l.require)}),arguments)},r.wbg.__wbindgen_is_function=function(e){return"function"==typeof s(e)},r.wbg.__wbindgen_string_new=function(e,t){return b(p(e,t))},r.wbg.__wbg_call_346669c262382ad7=function(){return A((function(e,t,n){return b(s(e).call(s(t),s(n)))}),arguments)},r.wbg.__wbg_msCrypto_558ee59e36bf4331=function(e){return b(s(e).msCrypto)},r.wbg.__wbg_newwithlength_929232475839a482=function(e){return b(new Uint8Array(e>>>0))},r.wbg.__wbg_self_c6fbdfc2918d5e58=function(){return A((function(){return b(self.self)}),arguments)},r.wbg.__wbg_window_baec038b5ab35c54=function(){return A((function(){return b(window.window)}),arguments)},r.wbg.__wbg_globalThis_3f735a5746d41fbd=function(){return A((function(){return b(globalThis.globalThis)}),arguments)},r.wbg.__wbg_global_1bc0b39582740e95=function(){return A((function(){return b(n.g.global)}),arguments)},r.wbg.__wbindgen_is_undefined=function(e){return void 0===s(e)},r.wbg.__wbg_newnoargs_be86524d73f67598=function(e,t){return b(new Function(p(e,t)))},r.wbg.__wbg_call_888d259a5fefc347=function(){return A((function(e,t){return b(s(e).call(s(t)))}),arguments)},r.wbg.__wbindgen_string_get=function(e,t){var n=s(t),r="string"==typeof n?n:void 0,a=x(r)?0:m(r,o.__wbindgen_malloc,o.__wbindgen_realloc),i=h;E()[e/4+1]=i,E()[e/4+0]=a},r.wbg.__wbg_set_82a4e8a85e31ac42=function(){return A((function(e,t,n){return Reflect.set(s(e),s(t),s(n))}),arguments)},r.wbg.__wbg_instanceof_Error_561efcb1265706d8=function(e){return s(e)instanceof Error},r.wbg.__wbg_message_9f7d15ff97fc4102=function(e){return b(s(e).message)},r.wbg.__wbindgen_json_serialize=function(e,t){var n=s(t),r=m(JSON.stringify(void 0===n?null:n),o.__wbindgen_malloc,o.__wbindgen_realloc),a=h;E()[e/4+1]=a,E()[e/4+0]=r},r.wbg.__wbindgen_memory=function(){return b(o.memory)},r.wbg.__wbg_buffer_397eaa4d72ee94dd=function(e){return b(s(e).buffer)},r.wbg.__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff=function(e,t,n){return b(new Uint8Array(s(e),t>>>0,n>>>0))},r.wbg.__wbg_randomFillSync_f8d4e42f84f40e2a=function(){return A((function(e,t){s(e).randomFillSync(_(t))}),arguments)},r.wbg.__wbg_subarray_8b658422a224f479=function(e,t,n){return b(s(e).subarray(t>>>0,n>>>0))},r.wbg.__wbg_getRandomValues_3af6527bb0405f8f=function(){return A((function(e,t){s(e).getRandomValues(s(t))}),arguments)},r.wbg.__wbg_new_a7ce447f15ff496f=function(e){return b(new Uint8Array(s(e)))},r.wbg.__wbg_set_969ad0a60e51d320=function(e,t,n){s(e).set(s(t),n>>>0)},r.wbg.__wbg_instanceof_WorkerGlobalScope_f191ca0158f5637b=function(e){return s(e)instanceof WorkerGlobalScope},r.wbg.__wbindgen_json_parse=function(e,t){return b(JSON.parse(p(e,t)))},r.wbg.__wbg_static_accessor_app_version_1a8421c4bb8697bc=function(e){var t=m(self.app_version,o.__wbindgen_malloc,o.__wbindgen_realloc),n=h;E()[e/4+1]=n,E()[e/4+0]=t},r.wbg.__wbg_static_accessor_shell_version_bb1985069cf6a1a8=function(e){var t=self.shell_version,n=x(t)?0:m(t,o.__wbindgen_malloc,o.__wbindgen_realloc),r=h;E()[e/4+1]=r,E()[e/4+0]=n},r.wbg.__wbg_navigator_8bc0889cda8f8500=function(e){return b(s(e).navigator)},r.wbg.__wbg_language_cd6e22892ba36a1f=function(e,t){var n=s(t).language,r=x(n)?0:m(n,o.__wbindgen_malloc,o.__wbindgen_realloc),a=h;E()[e/4+1]=a,E()[e/4+0]=r},r.wbg.__wbg_now_af172eabe2e041ad=function(){return Date.now()},r.wbg.__wbg_setInterval_a02797f5ab1c7eb1=function(){return A((function(e,t,n){return s(e).setInterval(s(t),n)}),arguments)},r.wbg.__wbg_instanceof_Response_e1b11afbefa5b563=function(e){return s(e)instanceof Response},r.wbg.__wbg_status_6d8bb444ddc5a7b2=function(e){return s(e).status},r.wbg.__wbg_json_88cc6d5cf8f61121=function(){return A((function(e){return b(s(e).json())}),arguments)},r.wbg.__wbg_localstoragegetitem_6f77a7f26f754d06=function(){return A((function(e,t){try{return b(self.local_storage_get_item(p(e,t)))}finally{o.__wbindgen_free(e,t)}}),arguments)},r.wbg.__wbg_getlocationhash_6ea98db541c6a479=function(){return A((function(){return b(self.get_location_hash())}),arguments)},r.wbg.__wbg_new_0b83d3df67ecb33e=function(){return b(new Object)},r.wbg.__wbg_newwithstrandinit_9b0fa00478c37287=function(){return A((function(e,t,n){return b(new Request(p(e,t),s(n)))}),arguments)},r.wbg.__wbg_fetch_b4e81012e07ff95a=function(e,t){return b(s(e).fetch(s(t)))},r.wbg.__wbg_localstoragesetitem_856b6a9c229407d4=function(){return A((function(e,t,n,r){try{return b(self.local_storage_set_item(p(e,t),p(n,r)))}finally{o.__wbindgen_free(e,t),o.__wbindgen_free(n,r)}}),arguments)},r.wbg.__wbg_localstorageremoveitem_0ca723d14ea26f8e=function(){return A((function(e,t){try{return b(self.local_storage_remove_item(p(e,t)))}finally{o.__wbindgen_free(e,t)}}),arguments)},r.wbg.__wbg_new_b1d61b5687f5e73a=function(e,t){try{var n={a:e,b:t},r=new Promise((function(e,t){var r=n.a;n.a=0;try{return R(r,n.b,e,t)}finally{n.a=r}}));return b(r)}finally{n.a=n.b=0}},r.wbg.__wbg_measure_c528ff64085b7146=function(){return A((function(e,t,n,r){try{performance.measure(p(e,t),p(n,r))}finally{o.__wbindgen_free(e,t),o.__wbindgen_free(n,r)}}),arguments)},r.wbg.__wbg_mark_abc7631bdced64f0=function(e,t){performance.mark(p(e,t))},r.wbg.__wbg_log_02e20a3c32305fb7=function(e,t){try{console.log(p(e,t))}finally{o.__wbindgen_free(e,t)}},r.wbg.__wbg_log_5c7513aa8c164502=function(e,t,n,r,a,i,u,c){try{console.log(p(e,t),p(n,r),p(a,i),p(u,c))}finally{o.__wbindgen_free(e,t)}},r.wbg.__wbindgen_debug_string=function(e,t){var n=m(L(s(t)),o.__wbindgen_malloc,o.__wbindgen_realloc),r=h;E()[e/4+1]=r,E()[e/4+0]=n},r.wbg.__wbindgen_throw=function(e,t){throw new Error(p(e,t))},r.wbg.__wbg_then_2fcac196782070cc=function(e,t){return b(s(e).then(s(t)))},r.wbg.__wbg_then_8c2d62e8ae5978f7=function(e,t,n){return b(s(e).then(s(t),s(n)))},r.wbg.__wbg_resolve_d23068002f584f22=function(e){return b(Promise.resolve(s(e)))},r.wbg.__wbindgen_cb_drop=function(e){var t=_(e).original;if(1==t.cnt--)return t.a=0,!0;return!1},r.wbg.__wbindgen_closure_wrapper3528=function(e,t,n){return b(S(e,t,167,j))},r.wbg.__wbindgen_closure_wrapper5028=function(e,t,n){return b(S(e,t,167,O))},("string"==typeof t||"function"==typeof Request&&t instanceof Request||"function"==typeof URL&&t instanceof URL)&&(t=fetch(t)),e.t0=T,e.next=75,t;case 75:return e.t1=e.sent,e.t2=r,e.next=79,(0,e.t0)(e.t1,e.t2);case 79:return i=e.sent,f=i.instance,l=i.module,o=f.exports,M.__wbindgen_wasm_module=l,o.__wbindgen_start(),e.abrupt("return",o);case 86:case"end":return e.stop()}}),e)}))),P.apply(this,arguments)}var F=M;t.default=F},5666:e=>{var t=(function(e){"use strict";var t,n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",u=a.asyncIterator||"@@asyncIterator",c=a.toStringTag||"@@toStringTag";function f(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{f({},"")}catch(e){f=function(e,t,n){return e[t]=n}}function s(e,t,n,r){var a=t&&t.prototype instanceof d?t:d,i=Object.create(a.prototype),u=new A(r||[]);return o(i,"_invoke",{value:L(e,n,u)}),i}function l(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var _="suspendedStart",b="executing",g="completed",w={};function d(){}function p(){}function h(){}var y={};f(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(R([])));m&&m!==n&&r.call(m,i)&&(y=m);var x=h.prototype=d.prototype=Object.create(y);function k(e){["next","throw","return"].forEach((function(t){f(e,t,(function(e){return this._invoke(t,e)}))}))}function E(e,t){function n(o,a,i,u){var c=l(e[o],e,a);if("throw"!==c.type){var f=c.arg,s=f.value;return s&&"object"==typeof s&&r.call(s,"__await")?t.resolve(s.__await).then((function(e){n("next",e,i,u)}),(function(e){n("throw",e,i,u)})):t.resolve(s).then((function(e){f.value=e,i(f)}),(function(e){return n("throw",e,i,u)}))}u(c.arg)}var a;o(this,"_invoke",{value:function(e,r){function o(){return new t((function(t,o){n(e,r,t,o)}))}return a=a?a.then(o,o):o()}})}function L(e,t,n){var r=_;return function(o,a){if(r===b)throw new Error("Generator is already running");if(r===g){if("throw"===o)throw a;return T()}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var u=S(i,n);if(u){if(u===w)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===_)throw r=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=b;var c=l(e,t,n);if("normal"===c.type){if(r=n.done?g:"suspendedYield",c.arg===w)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=g,n.method="throw",n.arg=c.arg)}}}function S(e,n){var r=n.method,o=e.iterator[r];if(o===t)return n.delegate=null,"throw"===r&&e.iterator.return&&(n.method="return",n.arg=t,S(e,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),w;var a=l(o,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,w;var i=a.arg;return i?i.done?(n[e.resultName]=i.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,w):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,w)}function j(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(j,this),this.reset(!0)}function R(e){if(e){var n=e[i];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function n(){for(;++o<e.length;)if(r.call(e,o))return n.value=e[o],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}return{next:T}}function T(){return{value:t,done:!0}}return p.prototype=h,o(x,"constructor",{value:h,configurable:!0}),o(h,"constructor",{value:p,configurable:!0}),p.displayName=f(h,c,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,h):(e.__proto__=h,f(e,c,"GeneratorFunction")),e.prototype=Object.create(x),e},e.awrap=function(e){return{__await:e}},k(E.prototype),f(E.prototype,u,(function(){return this})),e.AsyncIterator=E,e.async=function(t,n,r,o,a){void 0===a&&(a=Promise);var i=new E(s(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},k(x),f(x,c,"Generator"),f(x,i,(function(){return this})),f(x,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=R,A.prototype={constructor:A,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(O),!e)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function o(r,o){return u.type="throw",u.arg=e,n.next=r,o&&(n.method="next",n.arg=t),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],u=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),f=r.call(i,"finallyLoc");if(c&&f){if(this.prev<i.catchLoc)return o(i.catchLoc,!0);if(this.prev<i.finallyLoc)return o(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return o(i.catchLoc,!0)}else{if(!f)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return o(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,w):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),w},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),O(n),w}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;O(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:R(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),w}},e})(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},6310:(e,t,n)=>{"use strict";e.exports=n.p+"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/binaries/stremio_core_web_bg.wasm"}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.g=(function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}})(),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var t=n.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e+"../../"})(),(()=>{"use strict";var e=n(5318),t=e(n(7757)),r=e(n(8926)),o=new(n(6553))(self,self);self.init=(function(){var e=(0,r.default)(t.default.mark((function e(a){var i,u,c,f,s,l,_,b,g,w;return t.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=a.appVersion,u=a.shellVersion,self.document={baseURI:self.location.href},self.app_version=i,self.shell_version=u,self.get_location_hash=(0,r.default)(t.default.mark((function e(){return t.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.call(["location","hash"],[]));case 1:case"end":return e.stop()}}),e)}))),self.local_storage_get_item=(function(){var e=(0,r.default)(t.default.mark((function e(n){return t.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.call(["localStorage","getItem"],[n]));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}})(),self.local_storage_set_item=(function(){var e=(0,r.default)(t.default.mark((function e(n,r){return t.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.call(["localStorage","setItem"],[n,r]));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}})(),self.local_storage_remove_item=(function(){var e=(0,r.default)(t.default.mark((function e(n){return t.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.call(["localStorage","removeItem"],[n]));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}})(),c=n(6489),f=c.default,s=c.initialize_runtime,l=c.get_state,_=c.get_debug_state,b=c.dispatch,g=c.analytics,w=c.decode_stream,self.getState=l,self.getDebugState=_,self.dispatch=b,self.analytics=g,self.decodeStream=w,e.next=16,f(n(6310));case 16:return e.next=18,s((function(e){return o.call(["onCoreEvent"],[e])}));case 18:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}})()})()})(); //# sourceMappingURL=worker.js.map \ No newline at end of file diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/worker.js.map b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/worker.js.map similarity index 95% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/worker.js.map rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/worker.js.map index 1ec87b40d..45791068b 100644 --- a/development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/worker.js.map +++ b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/worker.js.map @@ -1 +1 @@ -{"version":3,"file":"f4f59074954b11898de7b384b6320863c5aa1fba/scripts/worker.js","mappings":"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","sources":["webpack://stremio/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://stremio/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://stremio/./node_modules/@babel/runtime/helpers/typeof.js","webpack://stremio/./node_modules/@babel/runtime/regenerator/index.js","webpack://stremio/./node_modules/@stremio/stremio-core-web/bridge.js","webpack://stremio/./node_modules/@stremio/stremio-core-web/stremio_core_web.js","webpack://stremio/./node_modules/regenerator-runtime/runtime.js","webpack://stremio/webpack/bootstrap","webpack://stremio/webpack/runtime/global","webpack://stremio/webpack/runtime/publicPath","webpack://stremio/./node_modules/@stremio/stremio-core-web/worker.js"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nfunction getId() {\n return Math.random().toString(32).slice(2);\n}\n\nfunction Bridge(scope, handler) {\n handler.addEventListener('message', /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(_ref) {\n var request, id, path, args, value, data, thisArg;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n request = _ref.data.request;\n\n if (request) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 3:\n id = request.id, path = request.path, args = request.args;\n _context.prev = 4;\n value = path.reduce(function (value, prop) {\n return value[prop];\n }, scope);\n\n if (!(typeof value === 'function')) {\n _context.next = 13;\n break;\n }\n\n thisArg = path.slice(0, path.length - 1).reduce(function (value, prop) {\n return value[prop];\n }, scope);\n _context.next = 10;\n return value.apply(thisArg, args);\n\n case 10:\n data = _context.sent;\n _context.next = 16;\n break;\n\n case 13:\n _context.next = 15;\n return value;\n\n case 15:\n data = _context.sent;\n\n case 16:\n handler.postMessage({\n response: {\n id: id,\n result: {\n data: data\n }\n }\n });\n _context.next = 22;\n break;\n\n case 19:\n _context.prev = 19;\n _context.t0 = _context[\"catch\"](4);\n handler.postMessage({\n response: {\n id: id,\n result: {\n error: _context.t0\n }\n }\n });\n\n case 22:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[4, 19]]);\n }));\n\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }());\n\n this.call = /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(path, args) {\n var id;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n id = getId();\n return _context2.abrupt(\"return\", new Promise(function (resolve, reject) {\n var onMessage = function onMessage(_ref4) {\n var response = _ref4.data.response;\n if (!response || response.id !== id) return;\n handler.removeEventListener('message', onMessage);\n\n if ('error' in response.result) {\n reject(response.result.error);\n } else {\n resolve(response.result.data);\n }\n };\n\n handler.addEventListener('message', onMessage);\n handler.postMessage({\n request: {\n id: id,\n path: path,\n args: args\n }\n });\n }));\n\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n}\n\nmodule.exports = Bridge;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.analytics = analytics;\nexports.decode_stream = decode_stream;\nexports[\"default\"] = void 0;\nexports.dispatch = dispatch;\nexports.get_state = get_state;\nexports.initialize_runtime = initialize_runtime;\nexports.start = start;\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar importMeta = {\n url: new URL('/stremio_core_web.js', document.baseURI).href\n};\nvar wasm;\nvar heap = new Array(32).fill(undefined);\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) {\n return heap[idx];\n}\n\nvar heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n var ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n var idx = heap_next;\n heap_next = heap[idx];\n heap[idx] = obj;\n return idx;\n}\n\nvar cachedTextDecoder = new TextDecoder('utf-8', {\n ignoreBOM: true,\n fatal: true\n});\ncachedTextDecoder.decode();\nvar cachegetUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n\n return cachegetUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nvar WASM_VECTOR_LEN = 0;\nvar cachedTextEncoder = new TextEncoder('utf-8');\nvar encodeString = typeof cachedTextEncoder.encodeInto === 'function' ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n} : function (arg, view) {\n var buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n};\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n var buf = cachedTextEncoder.encode(arg);\n\n var _ptr = malloc(buf.length);\n\n getUint8Memory0().subarray(_ptr, _ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return _ptr;\n }\n\n var len = arg.length;\n var ptr = malloc(len);\n var mem = getUint8Memory0();\n var offset = 0;\n\n for (; offset < len; offset++) {\n var code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n\n ptr = realloc(ptr, len, len = offset + arg.length * 3);\n var view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n var ret = encodeString(arg, view);\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nvar cachegetInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n\n return cachegetInt32Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n var type = (0, _typeof2[\"default\"])(val);\n\n if (type == 'number' || type == 'boolean' || val == null) {\n return \"\".concat(val);\n }\n\n if (type == 'string') {\n return \"\\\"\".concat(val, \"\\\"\");\n }\n\n if (type == 'symbol') {\n var description = val.description;\n\n if (description == null) {\n return 'Symbol';\n } else {\n return \"Symbol(\".concat(description, \")\");\n }\n }\n\n if (type == 'function') {\n var name = val.name;\n\n if (typeof name == 'string' && name.length > 0) {\n return \"Function(\".concat(name, \")\");\n } else {\n return 'Function';\n }\n } // objects\n\n\n if (Array.isArray(val)) {\n var length = val.length;\n var debug = '[';\n\n if (length > 0) {\n debug += debugString(val[0]);\n }\n\n for (var i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n\n debug += ']';\n return debug;\n } // Test for built-in\n\n\n var builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n var className;\n\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n } // errors\n\n\n if (val instanceof Error) {\n return \"\".concat(val.name, \": \").concat(val.message, \"\\n\").concat(val.stack);\n } // TODO we could test for more things here, like `Set`s and `Map`s.\n\n\n return className;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n var state = {\n a: arg0,\n b: arg1,\n cnt: 1,\n dtor: dtor\n };\n\n var real = function real() {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n var a = state.a;\n state.a = 0;\n\n try {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return f.apply(void 0, [a, state.b].concat(args));\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n } else {\n state.a = a;\n }\n }\n };\n\n real.original = state;\n return real;\n}\n\nfunction __wbg_adapter_30(arg0, arg1) {\n wasm.wasm_bindgen__convert__closures__invoke0_mut__he2543e290e6d4ef5(arg0, arg1);\n}\n\nfunction __wbg_adapter_33(arg0, arg1, arg2) {\n wasm.wasm_bindgen__convert__closures__invoke1_mut__hf3103f2dd259d587(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n\nfunction __wbg_adapter_70(arg0, arg1, arg2, arg3) {\n wasm.wasm_bindgen__convert__closures__invoke2_mut__h210e3468a7d65409(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n/**\n*/\n\n\nfunction start() {\n wasm.start();\n}\n/**\n* @param {Function} emit_to_ui\n* @returns {Promise<void>}\n*/\n\n\nfunction initialize_runtime(emit_to_ui) {\n var ret = wasm.initialize_runtime(addHeapObject(emit_to_ui));\n return takeObject(ret);\n}\n/**\n* @param {any} field\n* @returns {any}\n*/\n\n\nfunction get_state(field) {\n var ret = wasm.get_state(addHeapObject(field));\n return takeObject(ret);\n}\n/**\n* @param {any} action\n* @param {any} field\n* @param {any} location_hash\n*/\n\n\nfunction dispatch(action, field, location_hash) {\n wasm.dispatch(addHeapObject(action), addHeapObject(field), addHeapObject(location_hash));\n}\n/**\n* @param {any} event\n* @param {any} location_hash\n*/\n\n\nfunction analytics(event, location_hash) {\n wasm.analytics(addHeapObject(event), addHeapObject(location_hash));\n}\n/**\n* @param {any} stream\n* @returns {any}\n*/\n\n\nfunction decode_stream(stream) {\n var ret = wasm.decode_stream(addHeapObject(stream));\n return takeObject(ret);\n}\n\nfunction load(_x, _x2) {\n return _load.apply(this, arguments);\n}\n\nfunction _load() {\n _load = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(module, imports) {\n var bytes, instance;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(typeof Response === 'function' && module instanceof Response)) {\n _context.next = 23;\n break;\n }\n\n if (!(typeof WebAssembly.instantiateStreaming === 'function')) {\n _context.next = 15;\n break;\n }\n\n _context.prev = 2;\n _context.next = 5;\n return WebAssembly.instantiateStreaming(module, imports);\n\n case 5:\n return _context.abrupt(\"return\", _context.sent);\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context[\"catch\"](2);\n\n if (!(module.headers.get('Content-Type') != 'application/wasm')) {\n _context.next = 14;\n break;\n }\n\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", _context.t0);\n _context.next = 15;\n break;\n\n case 14:\n throw _context.t0;\n\n case 15:\n _context.next = 17;\n return module.arrayBuffer();\n\n case 17:\n bytes = _context.sent;\n _context.next = 20;\n return WebAssembly.instantiate(bytes, imports);\n\n case 20:\n return _context.abrupt(\"return\", _context.sent);\n\n case 23:\n _context.next = 25;\n return WebAssembly.instantiate(module, imports);\n\n case 25:\n instance = _context.sent;\n\n if (!(instance instanceof WebAssembly.Instance)) {\n _context.next = 30;\n break;\n }\n\n return _context.abrupt(\"return\", {\n instance: instance,\n module: module\n });\n\n case 30:\n return _context.abrupt(\"return\", instance);\n\n case 31:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[2, 8]]);\n }));\n return _load.apply(this, arguments);\n}\n\nfunction init(_x3) {\n return _init.apply(this, arguments);\n}\n\nfunction _init() {\n _init = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(input) {\n var imports, _yield$load, instance, module;\n\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (typeof input === 'undefined') {\n input = new URL('stremio_core_web_bg.wasm', importMeta.url);\n }\n\n imports = {};\n imports.wbg = {};\n\n imports.wbg.__wbg_new_693216e109162396 = function () {\n var ret = new Error();\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_stack_0ddaca5d1abfb52f = function (arg0, arg1) {\n var ret = getObject(arg1).stack;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbg_error_09919627ac0992f5 = function (arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n };\n\n imports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n takeObject(arg0);\n };\n\n imports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n var ret = getObject(arg0);\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_crypto_0e9b639eaff47699 = function (arg0) {\n var ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbindgen_is_object = function (arg0) {\n var val = getObject(arg0);\n var ret = (0, _typeof2[\"default\"])(val) === 'object' && val !== null;\n return ret;\n };\n\n imports.wbg.__wbg_process_c1e9ac005dd29bbc = function (arg0) {\n var ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_versions_6850926753fc88df = function (arg0) {\n var ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_node_c8026099e4c8fb6f = function (arg0) {\n var ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbindgen_is_string = function (arg0) {\n var ret = typeof getObject(arg0) === 'string';\n return ret;\n };\n\n imports.wbg.__wbg_require_39d411311735f255 = function () {\n return handleError(function () {\n var ret = module.require;\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbindgen_is_function = function (arg0) {\n var ret = typeof getObject(arg0) === 'function';\n return ret;\n };\n\n imports.wbg.__wbindgen_string_new = function (arg0, arg1) {\n var ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_call_346669c262382ad7 = function () {\n return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_msCrypto_558ee59e36bf4331 = function (arg0) {\n var ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_newwithlength_929232475839a482 = function (arg0) {\n var ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_self_c6fbdfc2918d5e58 = function () {\n return handleError(function () {\n var ret = self.self;\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_window_baec038b5ab35c54 = function () {\n return handleError(function () {\n var ret = window.window;\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_globalThis_3f735a5746d41fbd = function () {\n return handleError(function () {\n var ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_global_1bc0b39582740e95 = function () {\n return handleError(function () {\n var ret = global.global;\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbindgen_is_undefined = function (arg0) {\n var ret = getObject(arg0) === undefined;\n return ret;\n };\n\n imports.wbg.__wbg_newnoargs_be86524d73f67598 = function (arg0, arg1) {\n var ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_call_888d259a5fefc347 = function () {\n return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbindgen_string_get = function (arg0, arg1) {\n var obj = getObject(arg1);\n var ret = typeof obj === 'string' ? obj : undefined;\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbg_set_82a4e8a85e31ac42 = function () {\n return handleError(function (arg0, arg1, arg2) {\n var ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments);\n };\n\n imports.wbg.__wbg_instanceof_Error_561efcb1265706d8 = function (arg0) {\n var ret = getObject(arg0) instanceof Error;\n return ret;\n };\n\n imports.wbg.__wbg_message_9f7d15ff97fc4102 = function (arg0) {\n var ret = getObject(arg0).message;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbindgen_json_serialize = function (arg0, arg1) {\n var obj = getObject(arg1);\n var ret = JSON.stringify(obj === undefined ? null : obj);\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbindgen_memory = function () {\n var ret = wasm.memory;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_buffer_397eaa4d72ee94dd = function (arg0) {\n var ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff = function (arg0, arg1, arg2) {\n var ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_randomFillSync_f8d4e42f84f40e2a = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n }, arguments);\n };\n\n imports.wbg.__wbg_subarray_8b658422a224f479 = function (arg0, arg1, arg2) {\n var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_getRandomValues_3af6527bb0405f8f = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments);\n };\n\n imports.wbg.__wbg_new_a7ce447f15ff496f = function (arg0) {\n var ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_set_969ad0a60e51d320 = function (arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n\n imports.wbg.__wbg_instanceof_WorkerGlobalScope_f191ca0158f5637b = function (arg0) {\n var ret = getObject(arg0) instanceof WorkerGlobalScope;\n return ret;\n };\n\n imports.wbg.__wbindgen_json_parse = function (arg0, arg1) {\n var ret = JSON.parse(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_static_accessor_app_version_5c1836accd84a174 = function (arg0) {\n var ret = self.app_version;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbg_static_accessor_shell_version_f3a039b84f11b4c2 = function (arg0) {\n var ret = self.shell_version;\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbg_navigator_8bc0889cda8f8500 = function (arg0) {\n var ret = getObject(arg0).navigator;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_language_cd6e22892ba36a1f = function (arg0, arg1) {\n var ret = getObject(arg1).language;\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbg_now_af172eabe2e041ad = function () {\n var ret = Date.now();\n return ret;\n };\n\n imports.wbg.__wbg_instanceof_Response_e1b11afbefa5b563 = function (arg0) {\n var ret = getObject(arg0) instanceof Response;\n return ret;\n };\n\n imports.wbg.__wbg_status_6d8bb444ddc5a7b2 = function (arg0) {\n var ret = getObject(arg0).status;\n return ret;\n };\n\n imports.wbg.__wbg_json_88cc6d5cf8f61121 = function () {\n return handleError(function (arg0) {\n var ret = getObject(arg0).json();\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_localstoragegetitem_09ebd6f5e5c7a06a = function () {\n return handleError(function (arg0, arg1) {\n try {\n var ret = self.local_storage_get_item(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n }, arguments);\n };\n\n imports.wbg.__wbg_setInterval_a02797f5ab1c7eb1 = function () {\n return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).setInterval(getObject(arg1), arg2);\n return ret;\n }, arguments);\n };\n\n imports.wbg.__wbg_getlocationhash_9da0e4fa220f480d = function () {\n return handleError(function () {\n var ret = self.get_location_hash();\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_new_0b83d3df67ecb33e = function () {\n var ret = new Object();\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_newwithstrandinit_9b0fa00478c37287 = function () {\n return handleError(function (arg0, arg1, arg2) {\n var ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_fetch_b4e81012e07ff95a = function (arg0, arg1) {\n var ret = getObject(arg0).fetch(getObject(arg1));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_localstorageremoveitem_13b980040b048f8b = function () {\n return handleError(function (arg0, arg1) {\n try {\n var ret = self.local_storage_remove_item(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n }, arguments);\n };\n\n imports.wbg.__wbg_localstoragesetitem_dcd49a24bcbceacd = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n try {\n var ret = self.local_storage_set_item(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));\n return addHeapObject(ret);\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n\n wasm.__wbindgen_free(arg2, arg3);\n }\n }, arguments);\n };\n\n imports.wbg.__wbg_new_b1d61b5687f5e73a = function (arg0, arg1) {\n try {\n var state0 = {\n a: arg0,\n b: arg1\n };\n\n var cb0 = function cb0(arg0, arg1) {\n var a = state0.a;\n state0.a = 0;\n\n try {\n return __wbg_adapter_70(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n\n var ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n };\n\n imports.wbg.__wbg_measure_c528ff64085b7146 = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n try {\n performance.measure(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n\n wasm.__wbindgen_free(arg2, arg3);\n }\n }, arguments);\n };\n\n imports.wbg.__wbg_mark_abc7631bdced64f0 = function (arg0, arg1) {\n performance.mark(getStringFromWasm0(arg0, arg1));\n };\n\n imports.wbg.__wbg_log_02e20a3c32305fb7 = function (arg0, arg1) {\n try {\n console.log(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n };\n\n imports.wbg.__wbg_log_5c7513aa8c164502 = function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n try {\n console.log(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3), getStringFromWasm0(arg4, arg5), getStringFromWasm0(arg6, arg7));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n };\n\n imports.wbg.__wbindgen_debug_string = function (arg0, arg1) {\n var ret = debugString(getObject(arg1));\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbindgen_throw = function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n imports.wbg.__wbg_then_2fcac196782070cc = function (arg0, arg1) {\n var ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_then_8c2d62e8ae5978f7 = function (arg0, arg1, arg2) {\n var ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_resolve_d23068002f584f22 = function (arg0) {\n var ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbindgen_cb_drop = function (arg0) {\n var obj = takeObject(arg0).original;\n\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n\n var ret = false;\n return ret;\n };\n\n imports.wbg.__wbindgen_closure_wrapper3796 = function (arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 194, __wbg_adapter_30);\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbindgen_closure_wrapper5048 = function (arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 194, __wbg_adapter_33);\n return addHeapObject(ret);\n };\n\n if (typeof input === 'string' || typeof Request === 'function' && input instanceof Request || typeof URL === 'function' && input instanceof URL) {\n input = fetch(input);\n }\n\n _context2.t0 = load;\n _context2.next = 75;\n return input;\n\n case 75:\n _context2.t1 = _context2.sent;\n _context2.t2 = imports;\n _context2.next = 79;\n return (0, _context2.t0)(_context2.t1, _context2.t2);\n\n case 79:\n _yield$load = _context2.sent;\n instance = _yield$load.instance;\n module = _yield$load.module;\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n\n wasm.__wbindgen_start();\n\n return _context2.abrupt(\"return\", wasm);\n\n case 86:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _init.apply(this, arguments);\n}\n\nvar _default = init;\nexports[\"default\"] = _default;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl + \"../../\";","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar Bridge = require('./bridge');\n\nvar bridge = new Bridge(self, self);\n\nself.init = /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee5(_ref) {\n var appVersion, shellVersion, _require, initialize_api, initialize_runtime, get_state, get_debug_state, dispatch, analytics, decode_stream;\n\n return _regenerator[\"default\"].wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n appVersion = _ref.appVersion, shellVersion = _ref.shellVersion;\n // TODO remove the document shim when this PR is merged\n // https://github.com/cfware/babel-plugin-bundled-import-meta/pull/26\n self.document = {\n baseURI: self.location.href\n };\n self.app_version = appVersion;\n self.shell_version = shellVersion;\n self.get_location_hash = /*#__PURE__*/(0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", bridge.call(['location', 'hash'], []));\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n self.local_storage_get_item = /*#__PURE__*/function () {\n var _ref4 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(key) {\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", bridge.call(['localStorage', 'getItem'], [key]));\n\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x2) {\n return _ref4.apply(this, arguments);\n };\n }();\n\n self.local_storage_set_item = /*#__PURE__*/function () {\n var _ref5 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee3(key, value) {\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", bridge.call(['localStorage', 'setItem'], [key, value]));\n\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n return function (_x3, _x4) {\n return _ref5.apply(this, arguments);\n };\n }();\n\n self.local_storage_remove_item = /*#__PURE__*/function () {\n var _ref6 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee4(key) {\n return _regenerator[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt(\"return\", bridge.call(['localStorage', 'removeItem'], [key]));\n\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n return function (_x5) {\n return _ref6.apply(this, arguments);\n };\n }();\n\n _require = require('./stremio_core_web.js'), initialize_api = _require[\"default\"], initialize_runtime = _require.initialize_runtime, get_state = _require.get_state, get_debug_state = _require.get_debug_state, dispatch = _require.dispatch, analytics = _require.analytics, decode_stream = _require.decode_stream;\n self.getState = get_state;\n self.getDebugState = get_debug_state;\n self.dispatch = dispatch;\n self.analytics = analytics;\n self.decodeStream = decode_stream;\n _context5.next = 16;\n return initialize_api(require('./stremio_core_web_bg.wasm'));\n\n case 16:\n _context5.next = 18;\n return initialize_runtime(function (event) {\n return bridge.call(['onCoreEvent'], [event]);\n });\n\n case 18:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n}();\n"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","module","exports","fn","self","this","args","arguments","apply","err","undefined","__esModule","obj","_typeof","Symbol","iterator","constructor","prototype","_interopRequireDefault","_regenerator","_asyncToGenerator2","scope","handler","addEventListener","_ref2","mark","_callee","_ref","request","id","path","data","thisArg","wrap","_context","prev","next","abrupt","reduce","prop","slice","length","sent","postMessage","response","result","t0","stop","_x","call","_ref3","_callee2","_context2","Math","random","toString","onMessage","_ref4","removeEventListener","_x2","_x3","Object","defineProperty","analytics","event","location_hash","wasm","addHeapObject","decode_stream","stream","takeObject","dispatch","action","field","get_state","initialize_runtime","emit_to_ui","start","_typeof2","importMeta","url","URL","document","baseURI","href","heap","Array","fill","getObject","idx","push","heap_next","ret","dropObject","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachegetUint8Memory0","getUint8Memory0","buffer","memory","Uint8Array","getStringFromWasm0","ptr","len","subarray","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encodeString","encodeInto","view","buf","encode","set","read","written","passStringToWasm0","malloc","realloc","_ptr","mem","offset","code","charCodeAt","isLikeNone","x","cachegetInt32Memory0","getInt32Memory0","Int32Array","debugString","val","type","concat","description","name","isArray","debug","i","className","builtInMatches","exec","JSON","stringify","_","Error","message","stack","makeMutClosure","arg0","arg1","dtor","f","state","a","b","cnt","real","_len","_key","__wbindgen_export_2","get","original","__wbg_adapter_30","wasm_bindgen__convert__closures__invoke0_mut__he2543e290e6d4ef5","__wbg_adapter_33","arg2","wasm_bindgen__convert__closures__invoke1_mut__hf3103f2dd259d587","handleError","e","__wbindgen_exn_store","__wbg_adapter_70","arg3","wasm_bindgen__convert__closures__invoke2_mut__h210e3468a7d65409","load","_load","imports","bytes","instance","Response","WebAssembly","instantiateStreaming","headers","console","warn","arrayBuffer","instantiate","Instance","init","_init","input","_yield$load","wbg","__wbg_new_693216e109162396","__wbg_stack_0ddaca5d1abfb52f","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","__wbg_error_09919627ac0992f5","__wbindgen_free","__wbindgen_object_drop_ref","__wbindgen_object_clone_ref","__wbg_crypto_0e9b639eaff47699","crypto","__wbindgen_is_object","__wbg_process_c1e9ac005dd29bbc","process","__wbg_versions_6850926753fc88df","versions","__wbg_node_c8026099e4c8fb6f","node","__wbindgen_is_string","__wbg_require_39d411311735f255","require","__wbindgen_is_function","__wbindgen_string_new","__wbg_call_346669c262382ad7","__wbg_msCrypto_558ee59e36bf4331","msCrypto","__wbg_newwithlength_929232475839a482","__wbg_self_c6fbdfc2918d5e58","__wbg_window_baec038b5ab35c54","window","__wbg_globalThis_3f735a5746d41fbd","globalThis","__wbg_global_1bc0b39582740e95","g","global","__wbindgen_is_undefined","__wbg_newnoargs_be86524d73f67598","Function","__wbg_call_888d259a5fefc347","__wbindgen_string_get","__wbg_set_82a4e8a85e31ac42","Reflect","__wbg_instanceof_Error_561efcb1265706d8","__wbg_message_9f7d15ff97fc4102","__wbindgen_json_serialize","__wbindgen_memory","__wbg_buffer_397eaa4d72ee94dd","__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff","__wbg_randomFillSync_f8d4e42f84f40e2a","randomFillSync","__wbg_subarray_8b658422a224f479","__wbg_getRandomValues_3af6527bb0405f8f","getRandomValues","__wbg_new_a7ce447f15ff496f","__wbg_set_969ad0a60e51d320","__wbg_instanceof_WorkerGlobalScope_f191ca0158f5637b","WorkerGlobalScope","__wbindgen_json_parse","parse","__wbg_static_accessor_app_version_5c1836accd84a174","app_version","__wbg_static_accessor_shell_version_f3a039b84f11b4c2","shell_version","__wbg_navigator_8bc0889cda8f8500","navigator","__wbg_language_cd6e22892ba36a1f","language","__wbg_now_af172eabe2e041ad","Date","now","__wbg_instanceof_Response_e1b11afbefa5b563","__wbg_status_6d8bb444ddc5a7b2","status","__wbg_json_88cc6d5cf8f61121","json","__wbg_localstoragegetitem_09ebd6f5e5c7a06a","local_storage_get_item","__wbg_setInterval_a02797f5ab1c7eb1","setInterval","__wbg_getlocationhash_9da0e4fa220f480d","get_location_hash","__wbg_new_0b83d3df67ecb33e","__wbg_newwithstrandinit_9b0fa00478c37287","Request","__wbg_fetch_b4e81012e07ff95a","fetch","__wbg_localstorageremoveitem_13b980040b048f8b","local_storage_remove_item","__wbg_localstoragesetitem_dcd49a24bcbceacd","local_storage_set_item","__wbg_new_b1d61b5687f5e73a","state0","__wbg_measure_c528ff64085b7146","performance","measure","__wbg_mark_abc7631bdced64f0","__wbg_log_02e20a3c32305fb7","log","__wbg_log_5c7513aa8c164502","arg4","arg5","arg6","arg7","__wbindgen_debug_string","__wbindgen_throw","__wbg_then_2fcac196782070cc","__wbg_then_8c2d62e8ae5978f7","__wbg_resolve_d23068002f584f22","__wbindgen_cb_drop","__wbindgen_closure_wrapper3796","__wbindgen_closure_wrapper5048","t1","t2","__wbindgen_wasm_module","__wbindgen_start","_default","runtime","Op","hasOwn","hasOwnProperty","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","methodName","TypeError","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","setPrototypeOf","__proto__","awrap","async","iter","keys","object","reverse","pop","skipTempReset","charAt","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","scriptUrl","importScripts","location","currentScript","src","scripts","getElementsByTagName","replace","p","bridge","_callee5","appVersion","shellVersion","_require","initialize_api","get_debug_state","_context5","_ref5","_callee3","_context3","_x4","_ref6","_callee4","_context4","_x5","getState","getDebugState","decodeStream"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/worker.js","mappings":"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","sources":["webpack://stremio/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://stremio/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://stremio/./node_modules/@babel/runtime/helpers/typeof.js","webpack://stremio/./node_modules/@babel/runtime/regenerator/index.js","webpack://stremio/./node_modules/@stremio/stremio-core-web/bridge.js","webpack://stremio/./node_modules/@stremio/stremio-core-web/stremio_core_web.js","webpack://stremio/./node_modules/regenerator-runtime/runtime.js","webpack://stremio/webpack/bootstrap","webpack://stremio/webpack/runtime/global","webpack://stremio/webpack/runtime/publicPath","webpack://stremio/./node_modules/@stremio/stremio-core-web/worker.js"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nfunction getId() {\n return Math.random().toString(32).slice(2);\n}\n\nfunction Bridge(scope, handler) {\n handler.addEventListener('message', /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(_ref) {\n var request, id, path, args, value, data, thisArg;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n request = _ref.data.request;\n\n if (request) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 3:\n id = request.id, path = request.path, args = request.args;\n _context.prev = 4;\n value = path.reduce(function (value, prop) {\n return value[prop];\n }, scope);\n\n if (!(typeof value === 'function')) {\n _context.next = 13;\n break;\n }\n\n thisArg = path.slice(0, path.length - 1).reduce(function (value, prop) {\n return value[prop];\n }, scope);\n _context.next = 10;\n return value.apply(thisArg, args);\n\n case 10:\n data = _context.sent;\n _context.next = 16;\n break;\n\n case 13:\n _context.next = 15;\n return value;\n\n case 15:\n data = _context.sent;\n\n case 16:\n handler.postMessage({\n response: {\n id: id,\n result: {\n data: data\n }\n }\n });\n _context.next = 22;\n break;\n\n case 19:\n _context.prev = 19;\n _context.t0 = _context[\"catch\"](4);\n handler.postMessage({\n response: {\n id: id,\n result: {\n error: _context.t0\n }\n }\n });\n\n case 22:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[4, 19]]);\n }));\n\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }());\n\n this.call = /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(path, args) {\n var id;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n id = getId();\n return _context2.abrupt(\"return\", new Promise(function (resolve, reject) {\n var onMessage = function onMessage(_ref4) {\n var response = _ref4.data.response;\n if (!response || response.id !== id) return;\n handler.removeEventListener('message', onMessage);\n\n if ('error' in response.result) {\n reject(response.result.error);\n } else {\n resolve(response.result.data);\n }\n };\n\n handler.addEventListener('message', onMessage);\n handler.postMessage({\n request: {\n id: id,\n path: path,\n args: args\n }\n });\n }));\n\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n}\n\nmodule.exports = Bridge;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.analytics = analytics;\nexports.decode_stream = decode_stream;\nexports[\"default\"] = void 0;\nexports.dispatch = dispatch;\nexports.get_state = get_state;\nexports.initialize_runtime = initialize_runtime;\nexports.start = start;\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar importMeta = {\n url: new URL('/stremio_core_web.js', document.baseURI).href\n};\nvar wasm;\nvar heap = new Array(32).fill(undefined);\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) {\n return heap[idx];\n}\n\nvar heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n var ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n var idx = heap_next;\n heap_next = heap[idx];\n heap[idx] = obj;\n return idx;\n}\n\nvar cachedTextDecoder = new TextDecoder('utf-8', {\n ignoreBOM: true,\n fatal: true\n});\ncachedTextDecoder.decode();\nvar cachegetUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n\n return cachegetUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nvar WASM_VECTOR_LEN = 0;\nvar cachedTextEncoder = new TextEncoder('utf-8');\nvar encodeString = typeof cachedTextEncoder.encodeInto === 'function' ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n} : function (arg, view) {\n var buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n};\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n var buf = cachedTextEncoder.encode(arg);\n\n var _ptr = malloc(buf.length);\n\n getUint8Memory0().subarray(_ptr, _ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return _ptr;\n }\n\n var len = arg.length;\n var ptr = malloc(len);\n var mem = getUint8Memory0();\n var offset = 0;\n\n for (; offset < len; offset++) {\n var code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n\n ptr = realloc(ptr, len, len = offset + arg.length * 3);\n var view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n var ret = encodeString(arg, view);\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nvar cachegetInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n\n return cachegetInt32Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n var type = (0, _typeof2[\"default\"])(val);\n\n if (type == 'number' || type == 'boolean' || val == null) {\n return \"\".concat(val);\n }\n\n if (type == 'string') {\n return \"\\\"\".concat(val, \"\\\"\");\n }\n\n if (type == 'symbol') {\n var description = val.description;\n\n if (description == null) {\n return 'Symbol';\n } else {\n return \"Symbol(\".concat(description, \")\");\n }\n }\n\n if (type == 'function') {\n var name = val.name;\n\n if (typeof name == 'string' && name.length > 0) {\n return \"Function(\".concat(name, \")\");\n } else {\n return 'Function';\n }\n } // objects\n\n\n if (Array.isArray(val)) {\n var length = val.length;\n var debug = '[';\n\n if (length > 0) {\n debug += debugString(val[0]);\n }\n\n for (var i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n\n debug += ']';\n return debug;\n } // Test for built-in\n\n\n var builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n var className;\n\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n } // errors\n\n\n if (val instanceof Error) {\n return \"\".concat(val.name, \": \").concat(val.message, \"\\n\").concat(val.stack);\n } // TODO we could test for more things here, like `Set`s and `Map`s.\n\n\n return className;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n var state = {\n a: arg0,\n b: arg1,\n cnt: 1,\n dtor: dtor\n };\n\n var real = function real() {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n var a = state.a;\n state.a = 0;\n\n try {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return f.apply(void 0, [a, state.b].concat(args));\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n } else {\n state.a = a;\n }\n }\n };\n\n real.original = state;\n return real;\n}\n\nfunction __wbg_adapter_30(arg0, arg1) {\n wasm.wasm_bindgen__convert__closures__invoke0_mut__hdbcd58e79b51c8bc(arg0, arg1);\n}\n\nfunction __wbg_adapter_33(arg0, arg1, arg2) {\n wasm.wasm_bindgen__convert__closures__invoke1_mut__hef870a7742f9453d(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n\nfunction __wbg_adapter_70(arg0, arg1, arg2, arg3) {\n wasm.wasm_bindgen__convert__closures__invoke2_mut__hb0342fccdba4f5e5(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n/**\n*/\n\n\nfunction start() {\n wasm.start();\n}\n/**\n* @param {Function} emit_to_ui\n* @returns {Promise<void>}\n*/\n\n\nfunction initialize_runtime(emit_to_ui) {\n var ret = wasm.initialize_runtime(addHeapObject(emit_to_ui));\n return takeObject(ret);\n}\n/**\n* @param {any} field\n* @returns {any}\n*/\n\n\nfunction get_state(field) {\n var ret = wasm.get_state(addHeapObject(field));\n return takeObject(ret);\n}\n/**\n* @param {any} action\n* @param {any} field\n* @param {any} location_hash\n*/\n\n\nfunction dispatch(action, field, location_hash) {\n wasm.dispatch(addHeapObject(action), addHeapObject(field), addHeapObject(location_hash));\n}\n/**\n* @param {any} event\n* @param {any} location_hash\n*/\n\n\nfunction analytics(event, location_hash) {\n wasm.analytics(addHeapObject(event), addHeapObject(location_hash));\n}\n/**\n* @param {any} stream\n* @returns {any}\n*/\n\n\nfunction decode_stream(stream) {\n var ret = wasm.decode_stream(addHeapObject(stream));\n return takeObject(ret);\n}\n\nfunction load(_x, _x2) {\n return _load.apply(this, arguments);\n}\n\nfunction _load() {\n _load = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(module, imports) {\n var bytes, instance;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(typeof Response === 'function' && module instanceof Response)) {\n _context.next = 23;\n break;\n }\n\n if (!(typeof WebAssembly.instantiateStreaming === 'function')) {\n _context.next = 15;\n break;\n }\n\n _context.prev = 2;\n _context.next = 5;\n return WebAssembly.instantiateStreaming(module, imports);\n\n case 5:\n return _context.abrupt(\"return\", _context.sent);\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context[\"catch\"](2);\n\n if (!(module.headers.get('Content-Type') != 'application/wasm')) {\n _context.next = 14;\n break;\n }\n\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", _context.t0);\n _context.next = 15;\n break;\n\n case 14:\n throw _context.t0;\n\n case 15:\n _context.next = 17;\n return module.arrayBuffer();\n\n case 17:\n bytes = _context.sent;\n _context.next = 20;\n return WebAssembly.instantiate(bytes, imports);\n\n case 20:\n return _context.abrupt(\"return\", _context.sent);\n\n case 23:\n _context.next = 25;\n return WebAssembly.instantiate(module, imports);\n\n case 25:\n instance = _context.sent;\n\n if (!(instance instanceof WebAssembly.Instance)) {\n _context.next = 30;\n break;\n }\n\n return _context.abrupt(\"return\", {\n instance: instance,\n module: module\n });\n\n case 30:\n return _context.abrupt(\"return\", instance);\n\n case 31:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[2, 8]]);\n }));\n return _load.apply(this, arguments);\n}\n\nfunction init(_x3) {\n return _init.apply(this, arguments);\n}\n\nfunction _init() {\n _init = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(input) {\n var imports, _yield$load, instance, module;\n\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (typeof input === 'undefined') {\n input = new URL('stremio_core_web_bg.wasm', importMeta.url);\n }\n\n imports = {};\n imports.wbg = {};\n\n imports.wbg.__wbg_new_693216e109162396 = function () {\n var ret = new Error();\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_stack_0ddaca5d1abfb52f = function (arg0, arg1) {\n var ret = getObject(arg1).stack;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbg_error_09919627ac0992f5 = function (arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n };\n\n imports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n takeObject(arg0);\n };\n\n imports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n var ret = getObject(arg0);\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_crypto_0e9b639eaff47699 = function (arg0) {\n var ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbindgen_is_object = function (arg0) {\n var val = getObject(arg0);\n var ret = (0, _typeof2[\"default\"])(val) === 'object' && val !== null;\n return ret;\n };\n\n imports.wbg.__wbg_process_c1e9ac005dd29bbc = function (arg0) {\n var ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_versions_6850926753fc88df = function (arg0) {\n var ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_node_c8026099e4c8fb6f = function (arg0) {\n var ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbindgen_is_string = function (arg0) {\n var ret = typeof getObject(arg0) === 'string';\n return ret;\n };\n\n imports.wbg.__wbg_require_39d411311735f255 = function () {\n return handleError(function () {\n var ret = module.require;\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbindgen_is_function = function (arg0) {\n var ret = typeof getObject(arg0) === 'function';\n return ret;\n };\n\n imports.wbg.__wbindgen_string_new = function (arg0, arg1) {\n var ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_call_346669c262382ad7 = function () {\n return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_msCrypto_558ee59e36bf4331 = function (arg0) {\n var ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_newwithlength_929232475839a482 = function (arg0) {\n var ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_self_c6fbdfc2918d5e58 = function () {\n return handleError(function () {\n var ret = self.self;\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_window_baec038b5ab35c54 = function () {\n return handleError(function () {\n var ret = window.window;\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_globalThis_3f735a5746d41fbd = function () {\n return handleError(function () {\n var ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_global_1bc0b39582740e95 = function () {\n return handleError(function () {\n var ret = global.global;\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbindgen_is_undefined = function (arg0) {\n var ret = getObject(arg0) === undefined;\n return ret;\n };\n\n imports.wbg.__wbg_newnoargs_be86524d73f67598 = function (arg0, arg1) {\n var ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_call_888d259a5fefc347 = function () {\n return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbindgen_string_get = function (arg0, arg1) {\n var obj = getObject(arg1);\n var ret = typeof obj === 'string' ? obj : undefined;\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbg_set_82a4e8a85e31ac42 = function () {\n return handleError(function (arg0, arg1, arg2) {\n var ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments);\n };\n\n imports.wbg.__wbg_instanceof_Error_561efcb1265706d8 = function (arg0) {\n var ret = getObject(arg0) instanceof Error;\n return ret;\n };\n\n imports.wbg.__wbg_message_9f7d15ff97fc4102 = function (arg0) {\n var ret = getObject(arg0).message;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbindgen_json_serialize = function (arg0, arg1) {\n var obj = getObject(arg1);\n var ret = JSON.stringify(obj === undefined ? null : obj);\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbindgen_memory = function () {\n var ret = wasm.memory;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_buffer_397eaa4d72ee94dd = function (arg0) {\n var ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff = function (arg0, arg1, arg2) {\n var ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_randomFillSync_f8d4e42f84f40e2a = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n }, arguments);\n };\n\n imports.wbg.__wbg_subarray_8b658422a224f479 = function (arg0, arg1, arg2) {\n var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_getRandomValues_3af6527bb0405f8f = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments);\n };\n\n imports.wbg.__wbg_new_a7ce447f15ff496f = function (arg0) {\n var ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_set_969ad0a60e51d320 = function (arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n\n imports.wbg.__wbg_instanceof_WorkerGlobalScope_f191ca0158f5637b = function (arg0) {\n var ret = getObject(arg0) instanceof WorkerGlobalScope;\n return ret;\n };\n\n imports.wbg.__wbindgen_json_parse = function (arg0, arg1) {\n var ret = JSON.parse(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_static_accessor_app_version_1a8421c4bb8697bc = function (arg0) {\n var ret = self.app_version;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbg_static_accessor_shell_version_bb1985069cf6a1a8 = function (arg0) {\n var ret = self.shell_version;\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbg_navigator_8bc0889cda8f8500 = function (arg0) {\n var ret = getObject(arg0).navigator;\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_language_cd6e22892ba36a1f = function (arg0, arg1) {\n var ret = getObject(arg1).language;\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbg_now_af172eabe2e041ad = function () {\n var ret = Date.now();\n return ret;\n };\n\n imports.wbg.__wbg_setInterval_a02797f5ab1c7eb1 = function () {\n return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).setInterval(getObject(arg1), arg2);\n return ret;\n }, arguments);\n };\n\n imports.wbg.__wbg_instanceof_Response_e1b11afbefa5b563 = function (arg0) {\n var ret = getObject(arg0) instanceof Response;\n return ret;\n };\n\n imports.wbg.__wbg_status_6d8bb444ddc5a7b2 = function (arg0) {\n var ret = getObject(arg0).status;\n return ret;\n };\n\n imports.wbg.__wbg_json_88cc6d5cf8f61121 = function () {\n return handleError(function (arg0) {\n var ret = getObject(arg0).json();\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_localstoragegetitem_6f77a7f26f754d06 = function () {\n return handleError(function (arg0, arg1) {\n try {\n var ret = self.local_storage_get_item(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n }, arguments);\n };\n\n imports.wbg.__wbg_getlocationhash_6ea98db541c6a479 = function () {\n return handleError(function () {\n var ret = self.get_location_hash();\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_new_0b83d3df67ecb33e = function () {\n var ret = new Object();\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_newwithstrandinit_9b0fa00478c37287 = function () {\n return handleError(function (arg0, arg1, arg2) {\n var ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n\n imports.wbg.__wbg_fetch_b4e81012e07ff95a = function (arg0, arg1) {\n var ret = getObject(arg0).fetch(getObject(arg1));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_localstoragesetitem_856b6a9c229407d4 = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n try {\n var ret = self.local_storage_set_item(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));\n return addHeapObject(ret);\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n\n wasm.__wbindgen_free(arg2, arg3);\n }\n }, arguments);\n };\n\n imports.wbg.__wbg_localstorageremoveitem_0ca723d14ea26f8e = function () {\n return handleError(function (arg0, arg1) {\n try {\n var ret = self.local_storage_remove_item(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n }, arguments);\n };\n\n imports.wbg.__wbg_new_b1d61b5687f5e73a = function (arg0, arg1) {\n try {\n var state0 = {\n a: arg0,\n b: arg1\n };\n\n var cb0 = function cb0(arg0, arg1) {\n var a = state0.a;\n state0.a = 0;\n\n try {\n return __wbg_adapter_70(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n\n var ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n };\n\n imports.wbg.__wbg_measure_c528ff64085b7146 = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n try {\n performance.measure(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n\n wasm.__wbindgen_free(arg2, arg3);\n }\n }, arguments);\n };\n\n imports.wbg.__wbg_mark_abc7631bdced64f0 = function (arg0, arg1) {\n performance.mark(getStringFromWasm0(arg0, arg1));\n };\n\n imports.wbg.__wbg_log_02e20a3c32305fb7 = function (arg0, arg1) {\n try {\n console.log(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n };\n\n imports.wbg.__wbg_log_5c7513aa8c164502 = function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n try {\n console.log(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3), getStringFromWasm0(arg4, arg5), getStringFromWasm0(arg6, arg7));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n };\n\n imports.wbg.__wbindgen_debug_string = function (arg0, arg1) {\n var ret = debugString(getObject(arg1));\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n\n imports.wbg.__wbindgen_throw = function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n imports.wbg.__wbg_then_2fcac196782070cc = function (arg0, arg1) {\n var ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_then_8c2d62e8ae5978f7 = function (arg0, arg1, arg2) {\n var ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbg_resolve_d23068002f584f22 = function (arg0) {\n var ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbindgen_cb_drop = function (arg0) {\n var obj = takeObject(arg0).original;\n\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n\n var ret = false;\n return ret;\n };\n\n imports.wbg.__wbindgen_closure_wrapper3528 = function (arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 167, __wbg_adapter_30);\n return addHeapObject(ret);\n };\n\n imports.wbg.__wbindgen_closure_wrapper5028 = function (arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 167, __wbg_adapter_33);\n return addHeapObject(ret);\n };\n\n if (typeof input === 'string' || typeof Request === 'function' && input instanceof Request || typeof URL === 'function' && input instanceof URL) {\n input = fetch(input);\n }\n\n _context2.t0 = load;\n _context2.next = 75;\n return input;\n\n case 75:\n _context2.t1 = _context2.sent;\n _context2.t2 = imports;\n _context2.next = 79;\n return (0, _context2.t0)(_context2.t1, _context2.t2);\n\n case 79:\n _yield$load = _context2.sent;\n instance = _yield$load.instance;\n module = _yield$load.module;\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n\n wasm.__wbindgen_start();\n\n return _context2.abrupt(\"return\", wasm);\n\n case 86:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _init.apply(this, arguments);\n}\n\nvar _default = init;\nexports[\"default\"] = _default;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl + \"../../\";","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar Bridge = require('./bridge');\n\nvar bridge = new Bridge(self, self);\n\nself.init = /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee5(_ref) {\n var appVersion, shellVersion, _require, initialize_api, initialize_runtime, get_state, get_debug_state, dispatch, analytics, decode_stream;\n\n return _regenerator[\"default\"].wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n appVersion = _ref.appVersion, shellVersion = _ref.shellVersion;\n // TODO remove the document shim when this PR is merged\n // https://github.com/cfware/babel-plugin-bundled-import-meta/pull/26\n self.document = {\n baseURI: self.location.href\n };\n self.app_version = appVersion;\n self.shell_version = shellVersion;\n self.get_location_hash = /*#__PURE__*/(0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee() {\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", bridge.call(['location', 'hash'], []));\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n self.local_storage_get_item = /*#__PURE__*/function () {\n var _ref4 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(key) {\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", bridge.call(['localStorage', 'getItem'], [key]));\n\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x2) {\n return _ref4.apply(this, arguments);\n };\n }();\n\n self.local_storage_set_item = /*#__PURE__*/function () {\n var _ref5 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee3(key, value) {\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", bridge.call(['localStorage', 'setItem'], [key, value]));\n\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n return function (_x3, _x4) {\n return _ref5.apply(this, arguments);\n };\n }();\n\n self.local_storage_remove_item = /*#__PURE__*/function () {\n var _ref6 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee4(key) {\n return _regenerator[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt(\"return\", bridge.call(['localStorage', 'removeItem'], [key]));\n\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n return function (_x5) {\n return _ref6.apply(this, arguments);\n };\n }();\n\n _require = require('./stremio_core_web.js'), initialize_api = _require[\"default\"], initialize_runtime = _require.initialize_runtime, get_state = _require.get_state, get_debug_state = _require.get_debug_state, dispatch = _require.dispatch, analytics = _require.analytics, decode_stream = _require.decode_stream;\n self.getState = get_state;\n self.getDebugState = get_debug_state;\n self.dispatch = dispatch;\n self.analytics = analytics;\n self.decodeStream = decode_stream;\n _context5.next = 16;\n return initialize_api(require('./stremio_core_web_bg.wasm'));\n\n case 16:\n _context5.next = 18;\n return initialize_runtime(function (event) {\n return bridge.call(['onCoreEvent'], [event]);\n });\n\n case 18:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n}();\n"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","module","exports","fn","self","this","args","arguments","apply","err","undefined","__esModule","obj","_typeof","Symbol","iterator","constructor","prototype","_interopRequireDefault","_regenerator","_asyncToGenerator2","scope","handler","addEventListener","_ref2","mark","_callee","_ref","request","id","path","data","thisArg","wrap","_context","prev","next","abrupt","reduce","prop","slice","length","sent","postMessage","response","result","t0","stop","_x","call","_ref3","_callee2","_context2","Math","random","toString","onMessage","_ref4","removeEventListener","_x2","_x3","Object","defineProperty","analytics","event","location_hash","wasm","addHeapObject","decode_stream","stream","takeObject","dispatch","action","field","get_state","initialize_runtime","emit_to_ui","start","_typeof2","importMeta","url","URL","document","baseURI","href","heap","Array","fill","getObject","idx","push","heap_next","ret","dropObject","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachegetUint8Memory0","getUint8Memory0","buffer","memory","Uint8Array","getStringFromWasm0","ptr","len","subarray","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encodeString","encodeInto","view","buf","encode","set","read","written","passStringToWasm0","malloc","realloc","_ptr","mem","offset","code","charCodeAt","isLikeNone","x","cachegetInt32Memory0","getInt32Memory0","Int32Array","debugString","val","type","concat","description","name","isArray","debug","i","className","builtInMatches","exec","JSON","stringify","_","Error","message","stack","makeMutClosure","arg0","arg1","dtor","f","state","a","b","cnt","real","_len","_key","__wbindgen_export_2","get","original","__wbg_adapter_30","wasm_bindgen__convert__closures__invoke0_mut__hdbcd58e79b51c8bc","__wbg_adapter_33","arg2","wasm_bindgen__convert__closures__invoke1_mut__hef870a7742f9453d","handleError","e","__wbindgen_exn_store","__wbg_adapter_70","arg3","wasm_bindgen__convert__closures__invoke2_mut__hb0342fccdba4f5e5","load","_load","imports","bytes","instance","Response","WebAssembly","instantiateStreaming","headers","console","warn","arrayBuffer","instantiate","Instance","init","_init","input","_yield$load","wbg","__wbg_new_693216e109162396","__wbg_stack_0ddaca5d1abfb52f","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","__wbg_error_09919627ac0992f5","__wbindgen_free","__wbindgen_object_drop_ref","__wbindgen_object_clone_ref","__wbg_crypto_0e9b639eaff47699","crypto","__wbindgen_is_object","__wbg_process_c1e9ac005dd29bbc","process","__wbg_versions_6850926753fc88df","versions","__wbg_node_c8026099e4c8fb6f","node","__wbindgen_is_string","__wbg_require_39d411311735f255","require","__wbindgen_is_function","__wbindgen_string_new","__wbg_call_346669c262382ad7","__wbg_msCrypto_558ee59e36bf4331","msCrypto","__wbg_newwithlength_929232475839a482","__wbg_self_c6fbdfc2918d5e58","__wbg_window_baec038b5ab35c54","window","__wbg_globalThis_3f735a5746d41fbd","globalThis","__wbg_global_1bc0b39582740e95","g","global","__wbindgen_is_undefined","__wbg_newnoargs_be86524d73f67598","Function","__wbg_call_888d259a5fefc347","__wbindgen_string_get","__wbg_set_82a4e8a85e31ac42","Reflect","__wbg_instanceof_Error_561efcb1265706d8","__wbg_message_9f7d15ff97fc4102","__wbindgen_json_serialize","__wbindgen_memory","__wbg_buffer_397eaa4d72ee94dd","__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff","__wbg_randomFillSync_f8d4e42f84f40e2a","randomFillSync","__wbg_subarray_8b658422a224f479","__wbg_getRandomValues_3af6527bb0405f8f","getRandomValues","__wbg_new_a7ce447f15ff496f","__wbg_set_969ad0a60e51d320","__wbg_instanceof_WorkerGlobalScope_f191ca0158f5637b","WorkerGlobalScope","__wbindgen_json_parse","parse","__wbg_static_accessor_app_version_1a8421c4bb8697bc","app_version","__wbg_static_accessor_shell_version_bb1985069cf6a1a8","shell_version","__wbg_navigator_8bc0889cda8f8500","navigator","__wbg_language_cd6e22892ba36a1f","language","__wbg_now_af172eabe2e041ad","Date","now","__wbg_setInterval_a02797f5ab1c7eb1","setInterval","__wbg_instanceof_Response_e1b11afbefa5b563","__wbg_status_6d8bb444ddc5a7b2","status","__wbg_json_88cc6d5cf8f61121","json","__wbg_localstoragegetitem_6f77a7f26f754d06","local_storage_get_item","__wbg_getlocationhash_6ea98db541c6a479","get_location_hash","__wbg_new_0b83d3df67ecb33e","__wbg_newwithstrandinit_9b0fa00478c37287","Request","__wbg_fetch_b4e81012e07ff95a","fetch","__wbg_localstoragesetitem_856b6a9c229407d4","local_storage_set_item","__wbg_localstorageremoveitem_0ca723d14ea26f8e","local_storage_remove_item","__wbg_new_b1d61b5687f5e73a","state0","__wbg_measure_c528ff64085b7146","performance","measure","__wbg_mark_abc7631bdced64f0","__wbg_log_02e20a3c32305fb7","log","__wbg_log_5c7513aa8c164502","arg4","arg5","arg6","arg7","__wbindgen_debug_string","__wbindgen_throw","__wbg_then_2fcac196782070cc","__wbg_then_8c2d62e8ae5978f7","__wbg_resolve_d23068002f584f22","__wbindgen_cb_drop","__wbindgen_closure_wrapper3528","__wbindgen_closure_wrapper5028","t1","t2","__wbindgen_wasm_module","__wbindgen_start","_default","runtime","Op","hasOwn","hasOwnProperty","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","methodName","TypeError","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","setPrototypeOf","__proto__","awrap","async","iter","keys","object","reverse","pop","skipTempReset","charAt","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","scriptUrl","importScripts","location","currentScript","src","scripts","getElementsByTagName","replace","p","bridge","_callee5","appVersion","shellVersion","_require","initialize_api","get_debug_state","_context5","_ref5","_callee3","_context3","_x4","_ref6","_callee4","_context4","_x5","getState","getDebugState","decodeStream"],"sourceRoot":""} \ No newline at end of file diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/styles/main.css b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/styles/main.css similarity index 97% rename from development/f4f59074954b11898de7b384b6320863c5aa1fba/styles/main.css rename to development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/styles/main.css index a5484f26e..438550450 100644 --- a/development/f4f59074954b11898de7b384b6320863c5aa1fba/styles/main.css +++ b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/styles/main.css @@ -8,7 +8,7 @@ .label-container-iBMb9{-webkit-touch-callout:none!important;overflow:visible;position:relative}.label-container-iBMb9 .menu-container-bfvDO{box-shadow:0 1.35rem 2.7rem hsla(0,0%,0%,0.4),0 1.1rem 0.85rem hsla(0,0%,0%,0.2);cursor:auto;overflow:visible;position:absolute;visibility:hidden;z-index:1}.label-container-iBMb9 .menu-container-bfvDO.menu-direction-top-left-KpAQN{bottom:100%;left:initial;right:0;top:initial;visibility:visible}.label-container-iBMb9 .menu-container-bfvDO.menu-direction-bottom-left-Uw06K{bottom:initial;left:initial;right:0;top:100%;visibility:visible}.label-container-iBMb9 .menu-container-bfvDO.menu-direction-top-right-jOtwq{bottom:100%;left:0;right:initial;top:initial;visibility:visible}.label-container-iBMb9 .menu-container-bfvDO.menu-direction-bottom-right-XZ9Ch{bottom:initial;left:0;right:initial;top:100%;visibility:visible} .label-container-ZHk2S{align-items:center;background-color:hsl(243,24.4%,21%);display:flex;flex-direction:row;padding:0 1rem}.label-container-ZHk2S.active .label-kz1K0{color:hsla(0,0%,100%,0.9)}.label-container-ZHk2S.active .icon-YGvLz{fill:hsla(0,0%,100%,0.9)}.label-container-ZHk2S>.label-kz1K0{color:hsla(224.3,42.1%,66%,0.9);flex:1;font-weight:500;max-height:2.4em}.label-container-ZHk2S .icon-YGvLz{fill:hsla(224.3,42.1%,66%,0.9);flex:none;height:1rem;margin-left:1rem;width:1rem}.label-container-ZHk2S .menu-container-bfvDO{width:100%}.modal-container-BQwj3 .menu-container-Z1Pou .option-container-yVj1o,.menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o{align-items:center;background-color:hsl(243,24.4%,21%);display:flex;flex-direction:row;padding:1rem}.modal-container-BQwj3 .menu-container-Z1Pou .option-container-yVj1o.selected .icon-YGvLz,.menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o.selected .icon-YGvLz{display:block}.modal-container-BQwj3 .menu-container-Z1Pou .option-container-yVj1o:focus,.modal-container-BQwj3 .menu-container-Z1Pou .option-container-yVj1o:hover,.menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o:focus,.menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o:hover{background-color:hsl(243,24.4%,31%)}.modal-container-BQwj3 .menu-container-Z1Pou .option-container-yVj1o .label-kz1K0,.menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o .label-kz1K0{color:hsla(0,0%,100%,0.9);flex:1;max-height:4.8em}.modal-container-BQwj3 .menu-container-Z1Pou .option-container-yVj1o .icon-YGvLz,.menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o .icon-YGvLz{background-color:hsla(147.7,68%,41.7%,0.9);border-radius:100%;display:none;flex:none;height:0.5rem;margin-left:1rem;width:0.5rem}.modal-container-BQwj3 .menu-container-Z1Pou .no-options-container-NYx9Z,.menu-container-bfvDO .menu-container-Z1Pou .no-options-container-NYx9Z{align-items:center;background-color:hsl(243,24.4%,21%);display:flex;flex-direction:row;justify-content:center;padding:1rem}.modal-container-BQwj3 .menu-container-Z1Pou .no-options-container-NYx9Z .label-kz1K0,.menu-container-bfvDO .menu-container-Z1Pou .no-options-container-NYx9Z .label-kz1K0{color:hsla(0,0%,100%,0.9);flex-basis:auto;flex-grow:0;flex-shrink:1;font-size:1.2rem;font-weight:500;text-align:center} .background-FNyrF{fill:hsl(0,0%,100%)}.icon-XXj2q{fill:hsl(0,0%,0%)} -.meta-item-container-drt6V{overflow:visible;padding:1rem}.meta-item-container-drt6V:focus,.meta-item-container-drt6V.active,.meta-item-container-drt6V.selected,.meta-item-container-drt6V:hover{background-color:hsl(243,24.4%,36%);outline-style:none;transition:background-color 100ms ease-out}.meta-item-container-drt6V.poster-shape-poster-F_CO5 .poster-container-Fruke{padding-top:calc(100% * var(--poster-shape-ratio))}.meta-item-container-drt6V.poster-shape-square-UCby3 .poster-container-Fruke{padding-top:100%}.meta-item-container-drt6V.poster-shape-landscape-BPmb1 .poster-container-Fruke{padding-top:calc(100% * var(--landscape-shape-ratio))}.meta-item-container-drt6V .poster-container-Fruke{background-color:hsl(243,24.4%,21%);position:relative;z-index:0}.meta-item-container-drt6V .poster-container-Fruke .poster-image-layer-CdxrT{align-items:center;bottom:0;display:flex;flex-direction:row;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:-3}.meta-item-container-drt6V .poster-container-Fruke .poster-image-layer-CdxrT .poster-image-lt9zC{flex:none;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;opacity:0.9;width:100%}.meta-item-container-drt6V .poster-container-Fruke .poster-image-layer-CdxrT .placeholder-icon-uYwsv{fill:hsla(243,24.4%,36%,0.9);flex:none;height:50%;width:80%}.meta-item-container-drt6V .poster-container-Fruke .play-icon-layer-_75Lo{bottom:30%;left:0;overflow:visible;position:absolute;right:0;top:30%;z-index:-2}.meta-item-container-drt6V .poster-container-Fruke .play-icon-layer-_75Lo .play-icon-d9_ll{display:block;filter:drop-shadow(0 0 0.5rem hsl(243,24.4%,21%));height:100%;width:100%}.meta-item-container-drt6V .poster-container-Fruke .play-icon-layer-_75Lo .play-icon-d9_ll .background-FNyrF{fill:hsla(160,81.5%,46.8%,0.9)}.meta-item-container-drt6V .poster-container-Fruke .play-icon-layer-_75Lo .play-icon-d9_ll .icon-XXj2q{fill:hsla(0,0%,100%,0.9)}.meta-item-container-drt6V .poster-container-Fruke .progress-bar-layer-r81Qx{background-color:hsl(243,24.4%,31%);bottom:0;left:0;position:absolute;right:0;z-index:-1}.meta-item-container-drt6V .poster-container-Fruke .progress-bar-layer-r81Qx .progress-bar-E3QY9{background-color:hsl(276.8,48%,62%);height:0.4rem}.meta-item-container-drt6V .title-bar-container-DFXJK{align-items:center;display:flex;flex-direction:row;height:2.8rem;overflow:visible}.meta-item-container-drt6V .title-bar-container-DFXJK .title-label-dZZ_A{color:hsla(0,0%,100%,0.9);flex:1;max-height:2.4em;padding-left:0.5rem}.meta-item-container-drt6V .title-bar-container-DFXJK .title-label-dZZ_A:only-child{padding-right:0.5rem}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I{background-color:transparent;flex:none;height:2.8rem;padding:1rem 0;width:1.5rem}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .icon-IfJ81{fill:hsla(0,0%,80%,0.9);display:block;height:100%;width:100%}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .menu-container-bfvDO{width:auto}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .menu-container-bfvDO .menu-container-Z1Pou{max-width:12rem;min-width:6rem}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o{background-color:hsl(0,0%,100%);padding:0.5rem}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o:focus,.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o:hover{background-color:hsl(0,0%,85%);outline:none}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o .label-kz1K0{color:hsla(0,0%,0%,0.9)}@media only screen and (max-width:640px){.meta-item-container-drt6V{padding:0.5rem}.meta-item-container-drt6V .title-bar-container-DFXJK{margin-top:0.5rem}} +.meta-item-container-drt6V{overflow:visible;padding:1rem}.meta-item-container-drt6V:focus,.meta-item-container-drt6V.active,.meta-item-container-drt6V.selected,.meta-item-container-drt6V:hover{background-color:hsl(243,24.4%,36%);outline-style:none;transition:background-color 100ms ease-out}.meta-item-container-drt6V.poster-shape-poster-F_CO5 .poster-container-Fruke{padding-top:calc(100% * var(--poster-shape-ratio))}.meta-item-container-drt6V.poster-shape-square-UCby3 .poster-container-Fruke{padding-top:100%}.meta-item-container-drt6V.poster-shape-landscape-BPmb1 .poster-container-Fruke{padding-top:calc(100% * var(--landscape-shape-ratio))}.meta-item-container-drt6V .poster-container-Fruke{background-color:hsl(243,24.4%,21%);position:relative;z-index:0}.meta-item-container-drt6V .poster-container-Fruke .poster-image-layer-CdxrT{align-items:center;bottom:0;display:flex;flex-direction:row;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:-3}.meta-item-container-drt6V .poster-container-Fruke .poster-image-layer-CdxrT .poster-image-lt9zC{flex:none;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;opacity:0.9;width:100%}.meta-item-container-drt6V .poster-container-Fruke .poster-image-layer-CdxrT .placeholder-icon-uYwsv{fill:hsla(243,24.4%,36%,0.9);flex:none;height:50%;width:80%}.meta-item-container-drt6V .poster-container-Fruke .play-icon-layer-_75Lo{bottom:30%;left:0;overflow:visible;position:absolute;right:0;top:30%;z-index:-2}.meta-item-container-drt6V .poster-container-Fruke .play-icon-layer-_75Lo .play-icon-d9_ll{display:block;filter:drop-shadow(0 0 0.5rem hsl(243,24.4%,21%));height:100%;width:100%}.meta-item-container-drt6V .poster-container-Fruke .play-icon-layer-_75Lo .play-icon-d9_ll .background-FNyrF{fill:hsla(160,81.5%,46.8%,0.9)}.meta-item-container-drt6V .poster-container-Fruke .play-icon-layer-_75Lo .play-icon-d9_ll .icon-XXj2q{fill:hsla(0,0%,100%,0.9)}.meta-item-container-drt6V .poster-container-Fruke .progress-bar-layer-r81Qx{background-color:hsl(243,24.4%,31%);bottom:0;left:0;position:absolute;right:0;z-index:-1}.meta-item-container-drt6V .poster-container-Fruke .progress-bar-layer-r81Qx .progress-bar-E3QY9{background-color:hsl(276.8,48%,62%);height:0.4rem}.meta-item-container-drt6V .poster-container-Fruke .new-videos-gZv0w{overflow:visible;position:absolute;right:0;top:0;z-index:-1}.meta-item-container-drt6V .poster-container-Fruke .new-videos-gZv0w .layer-RqXo1{align-items:center;border-radius:0.25rem;color:hsla(243,24.4%,11%,0.9);display:flex;font-size:1rem;font-weight:600;height:1.6rem;justify-content:center;position:absolute;width:2.75rem}.meta-item-container-drt6V .poster-container-Fruke .new-videos-gZv0w .layer-RqXo1:first-child{background-color:hsla(0,0%,100%,0.4);right:0.5rem;top:0.5rem}.meta-item-container-drt6V .poster-container-Fruke .new-videos-gZv0w .layer-RqXo1:nth-child(2){background-color:hsla(0,0%,100%,0.6);right:0.75rem;top:0.75rem}.meta-item-container-drt6V .poster-container-Fruke .new-videos-gZv0w .layer-RqXo1:nth-child(3){background-color:hsl(0,0%,100%);right:1rem;top:1rem}.meta-item-container-drt6V .title-bar-container-DFXJK{align-items:center;display:flex;flex-direction:row;height:2.8rem;overflow:visible}.meta-item-container-drt6V .title-bar-container-DFXJK .title-label-dZZ_A{color:hsla(0,0%,100%,0.9);flex:1;max-height:2.4em;padding-left:0.5rem}.meta-item-container-drt6V .title-bar-container-DFXJK .title-label-dZZ_A:only-child{padding-right:0.5rem}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I{background-color:transparent;flex:none;height:2.8rem;padding:1rem 0;width:1.5rem}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .icon-IfJ81{fill:hsla(0,0%,80%,0.9);display:block;height:100%;width:100%}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .menu-container-bfvDO{width:auto}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .menu-container-bfvDO .menu-container-Z1Pou{max-width:12rem;min-width:6rem}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o{background-color:hsl(0,0%,100%);padding:0.5rem}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o:focus,.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o:hover{background-color:hsl(0,0%,85%);outline:none}.meta-item-container-drt6V .title-bar-container-DFXJK .menu-label-container-dlL1I .menu-container-bfvDO .menu-container-Z1Pou .option-container-yVj1o .label-kz1K0{color:hsla(0,0%,0%,0.9)}@media only screen and (max-width:640px){.meta-item-container-drt6V{padding:0.5rem}.meta-item-container-drt6V .title-bar-container-DFXJK{margin-top:0.5rem}} .text-input-jR2Nr{-webkit-user-select:text;-moz-user-select:text;user-select:text}.text-input-jR2Nr::-moz-focus-inner{border:none} .search-bar-container-TNPzI{--search-bar-size:calc(var(--horizontal-nav-bar-size) - 1.2rem);background-color:hsl(243,24.4%,31%);border-radius:var(--search-bar-size);display:flex;flex-direction:row;height:var(--search-bar-size)}.search-bar-container-TNPzI:hover{background-color:hsl(243,24.4%,36%)}.search-bar-container-TNPzI .search-input-aOiJ2{align-items:center;align-self:stretch;color:hsl(224.3,42.1%,71%);cursor:text;display:flex;flex:1;flex-direction:row;font-weight:500;padding:0 0.5rem 0 1.5rem}.search-bar-container-TNPzI .search-input-aOiJ2::-moz-placeholder{color:hsla(224.3,42.1%,71%,0.9);max-height:1.2em;opacity:1}.search-bar-container-TNPzI .search-input-aOiJ2 .placeholder-label-Irklk,.search-bar-container-TNPzI .search-input-aOiJ2::placeholder{color:hsla(224.3,42.1%,71%,0.9);max-height:1.2em;opacity:1}.search-bar-container-TNPzI .submit-button-container-jPP5J{align-items:center;display:flex;flex:none;flex-direction:row;height:var(--search-bar-size);justify-content:center;width:var(--search-bar-size)}.search-bar-container-TNPzI .submit-button-container-jPP5J:hover .icon-FT4bG{fill:hsla(222.8,100%,78%,0.9)}.search-bar-container-TNPzI .submit-button-container-jPP5J .icon-FT4bG{fill:hsla(224.3,42.1%,66%,0.9);flex:none;height:1.7rem;width:1.7rem} .nav-menu-container-VSzwW{background-color:hsl(243,24.4%,16%);max-height:calc(100vh - var(--horizontal-nav-bar-size));overflow-y:auto;width:20rem}.nav-menu-container-VSzwW .user-info-container-BR8yb{display:grid;grid-template-areas:"avatar-area email-area" "avatar-area logout-button-area";grid-template-columns:7rem 1fr;grid-template-rows:50% 50%;height:7rem}.nav-menu-container-VSzwW .user-info-container-BR8yb .avatar-container-jmlBM{background-clip:content-box;background-origin:content-box;background-position:center;background-repeat:no-repeat;background-size:cover;border-radius:50%;grid-area:avatar-area;opacity:0.9;padding:1rem}.nav-menu-container-VSzwW .user-info-container-BR8yb .email-container-fvFrL{align-items:center;display:flex;flex-direction:row;grid-area:email-area;padding:1rem 1rem 0 0}.nav-menu-container-VSzwW .user-info-container-BR8yb .email-container-fvFrL .email-label-WBX2T{color:hsla(0,0%,100%,0.9);flex:1;max-height:2.4em}.nav-menu-container-VSzwW .user-info-container-BR8yb .logout-button-container-hSW_i{align-items:center;display:flex;flex-direction:row;grid-area:logout-button-area;padding:0 1rem 1rem 0}.nav-menu-container-VSzwW .user-info-container-BR8yb .logout-button-container-hSW_i:focus,.nav-menu-container-VSzwW .user-info-container-BR8yb .logout-button-container-hSW_i:hover{outline:none}.nav-menu-container-VSzwW .user-info-container-BR8yb .logout-button-container-hSW_i:focus .logout-label-dUa8B,.nav-menu-container-VSzwW .user-info-container-BR8yb .logout-button-container-hSW_i:hover .logout-label-dUa8B{color:hsla(0,0%,100%,0.9);text-decoration:underline}.nav-menu-container-VSzwW .user-info-container-BR8yb .logout-button-container-hSW_i .logout-label-dUa8B{color:hsla(0,0%,90%,0.9);flex:1;max-height:2.4em}.nav-menu-container-VSzwW .nav-menu-section-oMELF{border-top:thin solid hsla(0,0%,100%,0.2)}.nav-menu-container-VSzwW .nav-menu-section-oMELF .nav-menu-option-container-gZ1gT{align-items:center;display:flex;flex-direction:row;height:4rem}.nav-menu-container-VSzwW .nav-menu-section-oMELF .nav-menu-option-container-gZ1gT:hover{background-color:hsl(243,24.4%,31%)}.nav-menu-container-VSzwW .nav-menu-section-oMELF .nav-menu-option-container-gZ1gT .icon-OSgm6{fill:hsla(222.8,100%,78%,0.9);flex:none;height:1.4rem;margin:1.3rem;width:1.4rem}.nav-menu-container-VSzwW .nav-menu-section-oMELF .nav-menu-option-container-gZ1gT .nav-menu-option-label-XNuY6{color:hsla(0,0%,100%,0.9);flex:1;max-height:2.4em;padding-right:1.3rem}.nav-menu-container-VSzwW .nav-menu-section-oMELF .nav-menu-option-container-gZ1gT .nav-menu-option-label-XNuY6:only-child{padding-left:1.3rem}@media only screen and (max-width:640px){.nav-menu-container-VSzwW{max-height:calc(100vh - var(--horizontal-nav-bar-size) - var(--vertical-nav-bar-size) - 1rem)}} @@ -64,8 +64,8 @@ html.active-slider-within-lQFc1{cursor:-webkit-grabbing;cursor:grabbing}html.act html:not(.active-slider-within-lQFc1) .player-container-wIELK.immersed-Y0hn1{cursor:none}html:not(.active-slider-within-lQFc1) .player-container-wIELK.immersed-Y0hn1 .control-bar-layer-m2jto,html:not(.active-slider-within-lQFc1) .player-container-wIELK.immersed-Y0hn1 .menu-layer-HZFG9,html:not(.active-slider-within-lQFc1) .player-container-wIELK.immersed-Y0hn1 .nav-bar-layer-r9HT5{opacity:0;transition:opacity 200ms}.player-container-wIELK{background-color:hsl(0,0%,0%);height:100%;position:relative;width:100%;z-index:0}.player-container-wIELK .layer-qalDW{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.player-container-wIELK .layer-qalDW.error-layer-RCEZC{align-items:center;background-color:hsl(0,0%,0%);display:flex;flex-direction:column;justify-content:center}.player-container-wIELK .layer-qalDW.error-layer-RCEZC .error-label-FPIMw{color:hsla(0,0%,100%,0.9);flex:0 1 auto;font-size:2rem;max-height:4.8em;padding:0 8rem;text-align:center}.player-container-wIELK .layer-qalDW.error-layer-RCEZC .error-sub-Myxw2{color:hsla(0,0%,100%,0.9);flex:0 1 auto;font-size:1.3rem;margin-top:0.8rem;max-height:4.8em;padding:0 2rem;text-align:center}.player-container-wIELK .layer-qalDW.error-layer-RCEZC .playlist-button-CB2WC{align-items:center;background-color:hsl(147.7,68%,41.7%);display:flex;flex:none;flex-direction:row;height:3.5rem;margin-top:1.5rem;max-width:16rem;padding:0.5rem 1rem}.player-container-wIELK .layer-qalDW.error-layer-RCEZC .playlist-button-CB2WC:focus,.player-container-wIELK .layer-qalDW.error-layer-RCEZC .playlist-button-CB2WC:hover{background-color:hsl(147.7,68%,46.7%)}.player-container-wIELK .layer-qalDW.error-layer-RCEZC .playlist-button-CB2WC .icon-aMPEE{fill:hsla(0,0%,100%,0.9);flex:none;height:1.5rem;margin-right:1rem;width:1.5rem}.player-container-wIELK .layer-qalDW.error-layer-RCEZC .playlist-button-CB2WC .label-njZqk{color:hsla(0,0%,100%,0.9);flex:1;font-size:1.1rem;font-weight:500;max-height:2.4em;text-align:center}.player-container-wIELK .layer-qalDW.nav-bar-layer-r9HT5{background:transparent;bottom:initial;overflow:visible}.player-container-wIELK .layer-qalDW.nav-bar-layer-r9HT5:before{box-shadow:0 0 8rem 6rem hsl(0,0%,0%);content:"";left:0;position:absolute;right:0;top:0;z-index:-1}.player-container-wIELK .layer-qalDW.nav-bar-layer-r9HT5 .button-container-B23qB:hover{background:transparent}.player-container-wIELK .layer-qalDW.nav-bar-layer-r9HT5 .button-container-B23qB .icon-wrBcp{fill:hsl(0,0%,100%)}.player-container-wIELK .layer-qalDW.nav-bar-layer-r9HT5 .title-_UxXH{color:hsl(0,0%,100%)}.player-container-wIELK .layer-qalDW.control-bar-layer-m2jto{overflow:visible;top:initial}.player-container-wIELK .layer-qalDW.control-bar-layer-m2jto:before{bottom:0;box-shadow:0 0 8rem 8rem hsl(0,0%,0%);content:"";left:0;position:absolute;right:0;z-index:-1}.player-container-wIELK .layer-qalDW.menu-layer-HZFG9{background-color:hsl(243,24.4%,16%);bottom:8rem;box-shadow:0 1.35rem 2.7rem hsla(0,0%,0%,0.4),0 1.1rem 0.85rem hsla(0,0%,0%,0.2);left:initial;max-height:calc(100% - 13.5rem);max-width:calc(100% - 4rem);overflow:auto;right:2rem;top:initial} .consent-checkbox-container-WV60T{align-items:center;display:flex;flex-direction:row;padding:0.5rem 1rem}.consent-checkbox-container-WV60T:focus{background-color:hsla(0,0%,100%,0.2);outline:none}.consent-checkbox-container-WV60T .icon-NUvac{fill:hsl(0,0%,50%);flex:none;height:1.2rem;width:1.2rem}.consent-checkbox-container-WV60T .label-l3LSw{color:hsla(0,0%,75%,0.9);flex:1;font-size:0.9rem;margin-left:0.5rem}.consent-checkbox-container-WV60T .label-l3LSw .link-UppYg{color:hsla(0,0%,100%,0.9);font-size:0.9rem}.consent-checkbox-container-WV60T .label-l3LSw .link-UppYg:hover{text-decoration:underline} .password-reset-modal-container-KzJPQ .modal-dialog-content-ChXwF{width:30rem}.password-reset-modal-container-KzJPQ .modal-dialog-content-ChXwF .credentials-text-input-ncrIR{color:hsl(0,0%,50%);outline:var(--focus-outline-size) solid hsla(0,0%,85%,0.9);outline-offset:calc(-1 * var(--focus-outline-size));padding:1rem;width:100%}.password-reset-modal-container-KzJPQ .modal-dialog-content-ChXwF .credentials-text-input-ncrIR:hover{outline-color:hsla(0,0%,95%,0.9)}.password-reset-modal-container-KzJPQ .modal-dialog-content-ChXwF .credentials-text-input-ncrIR:focus{outline-color:hsla(0,0%,0%,0.9)}.password-reset-modal-container-KzJPQ .error-message-DkekN{color:hsla(42,100%,54.9%,0.9);font-size:1.1rem;margin-top:2rem;text-align:center}.password-reset-modal-container-KzJPQ .cancel-button-AneJE{background-color:transparent}.password-reset-modal-container-KzJPQ .cancel-button-AneJE:hover{background-color:hsl(0,0%,90%)}.password-reset-modal-container-KzJPQ .cancel-button-AneJE:focus{outline-color:hsla(0,0%,0%,0.9)}.password-reset-modal-container-KzJPQ .cancel-button-AneJE .label-_ADoX{color:hsla(0,0%,55%,0.9)}@media only screen and (max-width:640px){.password-reset-modal-container-KzJPQ .modal-dialog-content-ChXwF{width:auto}} -.intro-container-tkNS6{background:linear-gradient(hsla(243,24.4%,6%,0.8),hsla(243,24.4%,6%,0.8)),url(../../f4f59074954b11898de7b384b6320863c5aa1fba/images/intro_background.jpg);background-origin:border-box;background-position:center;background-repeat:no-repeat;background-size:cover;display:flex;flex-direction:row;height:100%;justify-content:center;overflow-y:auto;width:100%}.intro-container-tkNS6 .form-container-HMlEh{flex:none;margin:auto;padding:2rem 0;width:28rem}.intro-container-tkNS6 .form-container-HMlEh .logo-container-W49kt{align-items:center;display:flex;flex-direction:row;justify-content:center;margin-bottom:3rem}.intro-container-tkNS6 .form-container-HMlEh .logo-container-W49kt .logo-WJ36F{flex:none;height:4rem;margin-right:1rem;opacity:0.9;width:4rem}.intro-container-tkNS6 .form-container-HMlEh .logo-container-W49kt .name-BNo9R{fill:hsla(0,0%,55%,0.9);flex:none;height:4rem;width:8rem}.intro-container-tkNS6 .form-container-HMlEh .form-button-vyqqj{align-items:center;display:flex;flex-direction:row;justify-content:center;padding:0.5rem 1rem}.intro-container-tkNS6 .form-container-HMlEh .form-button-vyqqj .icon-L_6b6{fill:hsla(0,0%,100%,0.9);flex:none;height:2rem;margin-right:1rem;width:1rem}.intro-container-tkNS6 .form-container-HMlEh .form-button-vyqqj .label-uHD7L{color:hsla(0,0%,100%,0.9);flex-basis:auto;flex-grow:0;flex-shrink:1;font-size:1.1rem;font-weight:500;text-align:center}.intro-container-tkNS6 .form-container-HMlEh .facebook-button-LZ_kG{background:var(--color-facebook);margin:1rem 0;min-height:4.5rem}.intro-container-tkNS6 .form-container-HMlEh .facebook-button-LZ_kG .label-uHD7L{font-size:1.2rem}.intro-container-tkNS6 .form-container-HMlEh .login-form-button-DqJUV{color:hsla(0,0%,65%,0.9);display:block;margin:1rem 0;text-align:center}.intro-container-tkNS6 .form-container-HMlEh .login-form-button-DqJUV:hover .login-label-AelYq{text-decoration:underline}.intro-container-tkNS6 .form-container-HMlEh .login-form-button-DqJUV:focus{background-color:hsla(0,0%,100%,0.2);outline:none}.intro-container-tkNS6 .form-container-HMlEh .login-form-button-DqJUV .login-label-AelYq{color:hsla(160,81.5%,51.8%,0.9);font-weight:500}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz{border-bottom:thin solid hsla(0,0%,75%,0.9);color:hsl(0,0%,100%);display:block;margin:1rem 0;padding:1rem;width:100%}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz:hover{background-color:hsla(0,0%,100%,0.2)}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz:focus{border-bottom-color:hsla(222.8,100%,78%,0.9)}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz:focus::-moz-placeholder{color:hsla(222.8,100%,78%,0.9)}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz:focus::placeholder{color:hsla(222.8,100%,78%,0.9)}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz::-moz-placeholder{color:hsla(0,0%,65%,0.9)}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz::placeholder{color:hsla(0,0%,65%,0.9)}.intro-container-tkNS6 .form-container-HMlEh .forgot-password-link-container-ygZqb{display:flex;flex-direction:row;justify-content:flex-end;margin:1rem 0;text-align:right}.intro-container-tkNS6 .form-container-HMlEh .forgot-password-link-container-ygZqb .forgot-password-link-NxNUD{color:hsla(0,0%,90%,0.9);flex-basis:auto;flex-grow:0;flex-shrink:1;padding:0.5rem 1rem}.intro-container-tkNS6 .form-container-HMlEh .forgot-password-link-container-ygZqb .forgot-password-link-NxNUD:hover{color:hsla(222.8,100%,78%,0.9);text-decoration:underline}.intro-container-tkNS6 .form-container-HMlEh .forgot-password-link-container-ygZqb .forgot-password-link-NxNUD:focus{background-color:hsla(0,0%,100%,0.2);outline:none}.intro-container-tkNS6 .form-container-HMlEh .error-message-cKdzB{color:hsla(42,100%,54.9%,0.9);margin:1rem 0;padding:0 1rem;text-align:center}.intro-container-tkNS6 .form-container-HMlEh .submit-button-x3L8z{background-color:hsl(147.7,68%,41.7%);margin:1rem 0;min-height:4rem}.intro-container-tkNS6 .form-container-HMlEh .submit-button-x3L8z:hover{background-color:hsl(147.7,68%,46.7%)}.intro-container-tkNS6 .form-container-HMlEh .submit-button-x3L8z .label-uHD7L{font-size:1.2rem}.intro-container-tkNS6 .form-container-HMlEh .guest-login-button-D8DWZ,.intro-container-tkNS6 .form-container-HMlEh .signup-form-button-UGmSk{margin-top:1rem;padding:1rem}.intro-container-tkNS6 .form-container-HMlEh .guest-login-button-D8DWZ:hover .label-uHD7L,.intro-container-tkNS6 .form-container-HMlEh .signup-form-button-UGmSk:hover .label-uHD7L{text-decoration:underline}.intro-container-tkNS6 .form-container-HMlEh .guest-login-button-D8DWZ:focus,.intro-container-tkNS6 .form-container-HMlEh .signup-form-button-UGmSk:focus{background-color:hsla(0,0%,100%,0.2);outline:none}.loading-modal-container-eLyTm{align-items:center;background-color:hsla(0,0%,0%,0.4);display:flex;justify-content:center}.loading-modal-container-eLyTm .loader-container-oe8rU{align-items:center;background-color:hsl(0,0%,100%);display:flex;flex:none;flex-direction:column;justify-content:center;padding:2rem}@-webkit-keyframes flash-wUFXY{0%{opacity:0.4}to{opacity:1}}@keyframes flash-wUFXY{0%{opacity:0.4}to{opacity:1}}.loading-modal-container-eLyTm .loader-container-oe8rU .icon-L_6b6{fill:hsla(0,0%,0%,0.9);-webkit-animation:flash-wUFXY 1s linear infinite alternate;animation:flash-wUFXY 1s linear infinite alternate;flex:none;height:5rem;margin-bottom:1rem;width:5rem}.loading-modal-container-eLyTm .loader-container-oe8rU .label-uHD7L{-webkit-animation:flash-wUFXY 1s linear infinite alternate;animation:flash-wUFXY 1s linear infinite alternate;color:hsla(0,0%,0%,0.9);font-size:2rem}@media only screen and (max-width:640px){.intro-container-tkNS6 .form-container-HMlEh{flex:0 1 auto;padding:2rem 1.5rem;width:100%}} +.intro-container-tkNS6{background:linear-gradient(hsla(243,24.4%,6%,0.8),hsla(243,24.4%,6%,0.8)),url(../../cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/intro_background.jpg);background-origin:border-box;background-position:center;background-repeat:no-repeat;background-size:cover;display:flex;flex-direction:row;height:100%;justify-content:center;overflow-y:auto;width:100%}.intro-container-tkNS6 .form-container-HMlEh{flex:none;margin:auto;padding:2rem 0;width:28rem}.intro-container-tkNS6 .form-container-HMlEh .logo-container-W49kt{align-items:center;display:flex;flex-direction:row;justify-content:center;margin-bottom:3rem}.intro-container-tkNS6 .form-container-HMlEh .logo-container-W49kt .logo-WJ36F{flex:none;height:4rem;margin-right:1rem;opacity:0.9;width:4rem}.intro-container-tkNS6 .form-container-HMlEh .logo-container-W49kt .name-BNo9R{fill:hsla(0,0%,55%,0.9);flex:none;height:4rem;width:8rem}.intro-container-tkNS6 .form-container-HMlEh .form-button-vyqqj{align-items:center;display:flex;flex-direction:row;justify-content:center;padding:0.5rem 1rem}.intro-container-tkNS6 .form-container-HMlEh .form-button-vyqqj .icon-L_6b6{fill:hsla(0,0%,100%,0.9);flex:none;height:2rem;margin-right:1rem;width:1rem}.intro-container-tkNS6 .form-container-HMlEh .form-button-vyqqj .label-uHD7L{color:hsla(0,0%,100%,0.9);flex-basis:auto;flex-grow:0;flex-shrink:1;font-size:1.1rem;font-weight:500;text-align:center}.intro-container-tkNS6 .form-container-HMlEh .facebook-button-LZ_kG{background:var(--color-facebook);margin:1rem 0;min-height:4.5rem}.intro-container-tkNS6 .form-container-HMlEh .facebook-button-LZ_kG .label-uHD7L{font-size:1.2rem}.intro-container-tkNS6 .form-container-HMlEh .login-form-button-DqJUV{color:hsla(0,0%,65%,0.9);display:block;margin:1rem 0;text-align:center}.intro-container-tkNS6 .form-container-HMlEh .login-form-button-DqJUV:hover .login-label-AelYq{text-decoration:underline}.intro-container-tkNS6 .form-container-HMlEh .login-form-button-DqJUV:focus{background-color:hsla(0,0%,100%,0.2);outline:none}.intro-container-tkNS6 .form-container-HMlEh .login-form-button-DqJUV .login-label-AelYq{color:hsla(160,81.5%,51.8%,0.9);font-weight:500}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz{border-bottom:thin solid hsla(0,0%,75%,0.9);color:hsl(0,0%,100%);display:block;margin:1rem 0;padding:1rem;width:100%}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz:hover{background-color:hsla(0,0%,100%,0.2)}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz:focus{border-bottom-color:hsla(222.8,100%,78%,0.9)}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz:focus::-moz-placeholder{color:hsla(222.8,100%,78%,0.9)}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz:focus::placeholder{color:hsla(222.8,100%,78%,0.9)}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz::-moz-placeholder{color:hsla(0,0%,65%,0.9)}.intro-container-tkNS6 .form-container-HMlEh .credentials-text-input-QMCZz::placeholder{color:hsla(0,0%,65%,0.9)}.intro-container-tkNS6 .form-container-HMlEh .forgot-password-link-container-ygZqb{display:flex;flex-direction:row;justify-content:flex-end;margin:1rem 0;text-align:right}.intro-container-tkNS6 .form-container-HMlEh .forgot-password-link-container-ygZqb .forgot-password-link-NxNUD{color:hsla(0,0%,90%,0.9);flex-basis:auto;flex-grow:0;flex-shrink:1;padding:0.5rem 1rem}.intro-container-tkNS6 .form-container-HMlEh .forgot-password-link-container-ygZqb .forgot-password-link-NxNUD:hover{color:hsla(222.8,100%,78%,0.9);text-decoration:underline}.intro-container-tkNS6 .form-container-HMlEh .forgot-password-link-container-ygZqb .forgot-password-link-NxNUD:focus{background-color:hsla(0,0%,100%,0.2);outline:none}.intro-container-tkNS6 .form-container-HMlEh .error-message-cKdzB{color:hsla(42,100%,54.9%,0.9);margin:1rem 0;padding:0 1rem;text-align:center}.intro-container-tkNS6 .form-container-HMlEh .submit-button-x3L8z{background-color:hsl(147.7,68%,41.7%);margin:1rem 0;min-height:4rem}.intro-container-tkNS6 .form-container-HMlEh .submit-button-x3L8z:hover{background-color:hsl(147.7,68%,46.7%)}.intro-container-tkNS6 .form-container-HMlEh .submit-button-x3L8z .label-uHD7L{font-size:1.2rem}.intro-container-tkNS6 .form-container-HMlEh .guest-login-button-D8DWZ,.intro-container-tkNS6 .form-container-HMlEh .signup-form-button-UGmSk{margin-top:1rem;padding:1rem}.intro-container-tkNS6 .form-container-HMlEh .guest-login-button-D8DWZ:hover .label-uHD7L,.intro-container-tkNS6 .form-container-HMlEh .signup-form-button-UGmSk:hover .label-uHD7L{text-decoration:underline}.intro-container-tkNS6 .form-container-HMlEh .guest-login-button-D8DWZ:focus,.intro-container-tkNS6 .form-container-HMlEh .signup-form-button-UGmSk:focus{background-color:hsla(0,0%,100%,0.2);outline:none}.loading-modal-container-eLyTm{align-items:center;background-color:hsla(0,0%,0%,0.4);display:flex;justify-content:center}.loading-modal-container-eLyTm .loader-container-oe8rU{align-items:center;background-color:hsl(0,0%,100%);display:flex;flex:none;flex-direction:column;justify-content:center;padding:2rem}@-webkit-keyframes flash-wUFXY{0%{opacity:0.4}to{opacity:1}}@keyframes flash-wUFXY{0%{opacity:0.4}to{opacity:1}}.loading-modal-container-eLyTm .loader-container-oe8rU .icon-L_6b6{fill:hsla(0,0%,0%,0.9);-webkit-animation:flash-wUFXY 1s linear infinite alternate;animation:flash-wUFXY 1s linear infinite alternate;flex:none;height:5rem;margin-bottom:1rem;width:5rem}.loading-modal-container-eLyTm .loader-container-oe8rU .label-uHD7L{-webkit-animation:flash-wUFXY 1s linear infinite alternate;animation:flash-wUFXY 1s linear infinite alternate;color:hsla(0,0%,0%,0.9);font-size:2rem}@media only screen and (max-width:640px){.intro-container-tkNS6 .form-container-HMlEh{flex:0 1 auto;padding:2rem 1.5rem;width:100%}} .error-container-OJnoc{align-items:center;display:flex;flex-direction:column;justify-content:center}.error-container-OJnoc .error-image-qU9Qo{flex:none;height:12rem;margin-bottom:1rem;-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;opacity:0.9;width:12rem}.error-container-OJnoc .error-message-kW59Z{color:hsla(0,0%,100%,0.9);flex:none;font-size:2rem;max-height:3.6em;padding:0 3rem;text-align:center}.error-container-OJnoc .buttons-container-tQonN{align-items:center;align-self:stretch;display:flex;flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;margin:0 2rem}.error-container-OJnoc .buttons-container-tQonN .button-container-vLSQK{align-items:center;background-color:hsl(147.7,68%,41.7%);display:flex;flex-basis:auto;flex-direction:row;flex-grow:0;flex-shrink:1;height:3rem;justify-content:center;margin:2rem 1rem 0;min-width:8rem;padding:0 1rem}.error-container-OJnoc .buttons-container-tQonN .button-container-vLSQK:hover{background-color:hsl(147.7,68%,46.7%)}.error-container-OJnoc .buttons-container-tQonN .button-container-vLSQK.disabled{background-color:hsl(0,0%,50%)}.error-container-OJnoc .buttons-container-tQonN .button-container-vLSQK .label-Up_te{color:hsla(0,0%,100%,0.9);flex-basis:auto;flex-grow:0;flex-shrink:1;font-size:1.1rem;font-weight:500;max-height:2.4em;text-align:center} -@font-face{font-family:Roboto;font-style:italic;font-weight:300;src:url(../../f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-LightItalic.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:italic;font-weight:400;src:url(../../f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-RegularItalic.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:italic;font-weight:500;src:url(../../f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-MediumItalic.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:italic;font-weight:700;src:url(../../f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-BoldItalic.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:normal;font-weight:300;src:url(../../f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Light.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../../f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Regular.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:normal;font-weight:500;src:url(../../f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Medium.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:normal;font-weight:700;src:url(../../f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Bold.ttf) format("truetype")}.animation-fade-in{-webkit-animation-duration:100ms;animation-duration:100ms;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}.animation-fade-in{-webkit-animation-name:fade-in-pFkt_;animation-name:fade-in-pFkt_}@-webkit-keyframes fade-in-pFkt_{0%{opacity:0.6;transform:translateY(0.2vh)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-pFkt_{0%{opacity:0.6;transform:translateY(0.2vh)}to{opacity:1;transform:translateY(0)}}.routes-container{position:relative;z-index:0}.routes-container .route-container{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.routes-container .route-container:not(:last-child){display:none}.routes-container .route-container .route-content{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:0}.routes-container .route-container .modals-container{height:0;width:0}.routes-container .route-container .modals-container .modal-container{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:1}:root{--landscape-shape-ratio:0.5625;--poster-shape-ratio:1.464;--scroll-bar-size:6px;--horizontal-nav-bar-size:4rem;--vertical-nav-bar-size:5.2rem;--focus-outline-size:2px;--color-facebook:#4267b2;--color-twitter:#1DA1F2;--color-placeholder:#60606080;--color-placeholder-text:hsla(0,0%,75%,0.5);--color-placeholder-background:hsla(0,0%,50%,0.2)}*{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;box-shadow:none;box-sizing:border-box;font-family:inherit;font-size:1rem;line-height:1.2em;list-style:none;margin:0;outline:none;overflow:hidden;padding:0;scrollbar-color:hsl(222.8,100%,78%) hsl(243,24.4%,11%);scrollbar-width:thin;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;word-break:break-word}::-webkit-scrollbar{height:var(--scroll-bar-size);width:var(--scroll-bar-size)}::-webkit-scrollbar-thumb{background-color:hsl(222.8,100%,78%)}::-webkit-scrollbar-thumb:hover{background-color:hsl(222.8,100%,83%)}::-webkit-scrollbar-track{background-color:hsl(243,24.4%,11%)}svg{overflow:visible}html{font-family:Roboto,"sans-serif";min-height:480px;min-width:640px;overflow:auto}html,html body{height:100%;width:100%}html body #app{height:100%;position:relative;width:100%;z-index:0}html body #app .toasts-container-oKECy{bottom:calc(1.2 * var(--horizontal-nav-bar-size));left:auto;overflow-y:auto;padding:0 calc(0.5 * var(--horizontal-nav-bar-size));pointer-events:none;position:absolute;right:0;scrollbar-width:none;top:calc(1.2 * var(--horizontal-nav-bar-size));z-index:1}html body #app .toasts-container-oKECy::-webkit-scrollbar{display:none}html body #app .router-_65XU{height:100%;width:100%}html body #app .error-container-VZXwH,html body #app .loader-container-vwvnb{background-color:hsl(243,24.4%,11%);height:100%;width:100%}@media only screen and (min-width:2800px){html{font-size:18px}}@media only screen and (max-width:2800px){html{font-size:16px}}@media only screen and (max-width:2200px){html{font-size:15px}}@media only screen and (max-width:1600px){html{font-size:14px}}@media only screen and (max-width:1000px){html{min-height:inherit;min-width:inherit}} +@font-face{font-family:Roboto;font-style:italic;font-weight:300;src:url(../../cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-LightItalic.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:italic;font-weight:400;src:url(../../cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-RegularItalic.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:italic;font-weight:500;src:url(../../cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-MediumItalic.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:italic;font-weight:700;src:url(../../cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-BoldItalic.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:normal;font-weight:300;src:url(../../cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Light.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../../cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Regular.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:normal;font-weight:500;src:url(../../cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Medium.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:normal;font-weight:700;src:url(../../cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Bold.ttf) format("truetype")}.animation-fade-in{-webkit-animation-duration:100ms;animation-duration:100ms;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}.animation-fade-in{-webkit-animation-name:fade-in-pFkt_;animation-name:fade-in-pFkt_}@-webkit-keyframes fade-in-pFkt_{0%{opacity:0.6;transform:translateY(0.2vh)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-pFkt_{0%{opacity:0.6;transform:translateY(0.2vh)}to{opacity:1;transform:translateY(0)}}.routes-container{position:relative;z-index:0}.routes-container .route-container{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.routes-container .route-container:not(:last-child){display:none}.routes-container .route-container .route-content{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:0}.routes-container .route-container .modals-container{height:0;width:0}.routes-container .route-container .modals-container .modal-container{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:1}:root{--landscape-shape-ratio:0.5625;--poster-shape-ratio:1.464;--scroll-bar-size:6px;--horizontal-nav-bar-size:4rem;--vertical-nav-bar-size:5.2rem;--focus-outline-size:2px;--color-facebook:#4267b2;--color-twitter:#1DA1F2;--color-placeholder:#60606080;--color-placeholder-text:hsla(0,0%,75%,0.5);--color-placeholder-background:hsla(0,0%,50%,0.2)}*{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;box-shadow:none;box-sizing:border-box;font-family:inherit;font-size:1rem;line-height:1.2em;list-style:none;margin:0;outline:none;overflow:hidden;padding:0;scrollbar-color:hsl(222.8,100%,78%) hsl(243,24.4%,11%);scrollbar-width:thin;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;word-break:break-word}::-webkit-scrollbar{height:var(--scroll-bar-size);width:var(--scroll-bar-size)}::-webkit-scrollbar-thumb{background-color:hsl(222.8,100%,78%)}::-webkit-scrollbar-thumb:hover{background-color:hsl(222.8,100%,83%)}::-webkit-scrollbar-track{background-color:hsl(243,24.4%,11%)}svg{overflow:visible}html{font-family:Roboto,"sans-serif";min-height:480px;min-width:640px;overflow:auto}html,html body{height:100%;width:100%}html body #app{height:100%;position:relative;width:100%;z-index:0}html body #app .toasts-container-oKECy{bottom:calc(1.2 * var(--horizontal-nav-bar-size));left:auto;overflow-y:auto;padding:0 calc(0.5 * var(--horizontal-nav-bar-size));pointer-events:none;position:absolute;right:0;scrollbar-width:none;top:calc(1.2 * var(--horizontal-nav-bar-size));z-index:1}html body #app .toasts-container-oKECy::-webkit-scrollbar{display:none}html body #app .router-_65XU{height:100%;width:100%}html body #app .error-container-VZXwH,html body #app .loader-container-vwvnb{background-color:hsl(243,24.4%,11%);height:100%;width:100%}@media only screen and (min-width:2800px){html{font-size:18px}}@media only screen and (max-width:2800px){html{font-size:16px}}@media only screen and (max-width:2200px){html{font-size:15px}}@media only screen and (max-width:1600px){html{font-size:14px}}@media only screen and (max-width:1000px){html{min-height:inherit;min-width:inherit}} /*# sourceMappingURL=main.css.map*/ \ No newline at end of file diff --git a/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/styles/main.css.map b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/styles/main.css.map new file mode 100644 index 000000000..aea471c35 --- /dev/null +++ b/development/cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/styles/main.css.map @@ -0,0 +1 @@ +{"version":3,"file":"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/styles/main.css","mappings":"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","sources":["webpack://stremio/./src/common/Button/styles.less","webpack://stremio/./src/common/ModalDialog/styles.less","webpack://stremio/./src/common/AddonDetailsModal/AddonDetails/styles.less","webpack://stremio/./src/common/AddonDetailsModal/styles.less","webpack://stremio/./src/common/Checkbox/styles.less","webpack://stremio/./src/common/ColorInput/ColorPicker/styles.less","webpack://stremio/./src/common/ColorInput/styles.less","webpack://stremio/./src/common/Popup/styles.less","webpack://stremio/./src/common/Multiselect/styles.less","webpack://stremio/./src/common/PlayIconCircleCentered/styles.less","webpack://stremio/./src/common/MetaItem/styles.less","webpack://stremio/./src/common/TextInput/styles.less","webpack://stremio/./src/common/NavBar/HorizontalNavBar/SearchBar/styles.less","webpack://stremio/./src/common/NavBar/HorizontalNavBar/NavMenu/styles.less","webpack://stremio/./src/common/NavBar/HorizontalNavBar/styles.less","webpack://stremio/./src/common/NavBar/VerticalNavBar/NavTabButton/styles.less","webpack://stremio/./src/common/NavBar/VerticalNavBar/styles.less","webpack://stremio/./src/common/MainNavBars/styles.less","webpack://stremio/./src/common/SharePrompt/styles.less","webpack://stremio/./src/common/MetaPreview/ActionButton/styles.less","webpack://stremio/./src/common/MetaPreview/MetaLinks/styles.less","webpack://stremio/./src/common/MetaPreview/MetaPreviewPlaceholder/styles.less","webpack://stremio/./src/common/MetaPreview/styles.less","webpack://stremio/./src/common/MetaRow/MetaRowPlaceholder/styles.less","webpack://stremio/./src/common/MetaRow/styles.less","webpack://stremio/./src/common/PaginationInput/styles.less","webpack://stremio/./src/common/SearchBar/SearchBarPlaceholder/styles.less","webpack://stremio/./src/common/SearchBar/styles.less","webpack://stremio/./src/common/StreamingServerWarning/styles.less","webpack://stremio/./src/common/Slider/styles.less","webpack://stremio/./src/common/Toast/ToastItem/styles.less","webpack://stremio/./src/routes/Addons/Addon/styles.less","webpack://stremio/./src/routes/Addons/styles.less","webpack://stremio/./src/routes/Board/styles.less","webpack://stremio/./src/routes/Discover/styles.less","webpack://stremio/./src/routes/NotFound/styles.less","webpack://stremio/./src/routes/Library/styles.less","webpack://stremio/./src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/styles.less","webpack://stremio/./src/routes/MetaDetails/StreamsList/Stream/styles.less","webpack://stremio/./src/routes/MetaDetails/StreamsList/styles.less","webpack://stremio/./src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/styles.less","webpack://stremio/./src/routes/MetaDetails/VideosList/SeasonsBar/styles.less","webpack://stremio/./src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less","webpack://stremio/./src/routes/MetaDetails/VideosList/Video/styles.less","webpack://stremio/./src/routes/MetaDetails/VideosList/styles.less","webpack://stremio/./src/routes/MetaDetails/styles.less","webpack://stremio/./src/routes/Search/styles.less","webpack://stremio/./src/routes/Settings/styles.less","webpack://stremio/./src/routes/Player/BufferingLoader/styles.less","webpack://stremio/./src/routes/Player/ControlBar/SeekBar/styles.less","webpack://stremio/./src/routes/Player/ControlBar/VolumeSlider/styles.less","webpack://stremio/./src/routes/Player/ControlBar/styles.less","webpack://stremio/./src/routes/Player/NextVideoPopup/styles.less","webpack://stremio/./src/routes/Player/StatisticsMenu/styles.less","webpack://stremio/./src/routes/Player/InfoMenu/styles.less","webpack://stremio/./src/routes/Player/OptionsMenu/Option/styles.less","webpack://stremio/./src/routes/Player/OptionsMenu/styles.less","webpack://stremio/./src/routes/Player/VideosMenu/styles.less","webpack://stremio/./src/routes/Player/SubtitlesMenu/DiscreteSelectInput/styles.less","webpack://stremio/./src/routes/Player/SubtitlesMenu/styles.less","webpack://stremio/./src/routes/Player/SpeedMenu/Option/styles.less","webpack://stremio/./src/routes/Player/SpeedMenu/styles.less","webpack://stremio/./src/routes/Player/Video/styles.less","webpack://stremio/./src/routes/Player/styles.less","webpack://stremio/./src/routes/Intro/ConsentCheckbox/styles.less","webpack://stremio/./src/routes/Intro/PasswordResetModal/styles.less","webpack://stremio/./src/routes/Intro/styles.less","webpack://stremio/./src/App/ErrorDialog/styles.less","webpack://stremio/./src/common/roboto.css","webpack://stremio/./src/App/styles.less","webpack://stremio/./src/common/animations.less","webpack://stremio/./src/router/styles.css"],"sourcesContent":["// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.button-container {\n outline-width: var(--focus-outline-size);\n outline-color: @color-surface-light5;\n outline-offset: calc(-1 * var(--focus-outline-size));\n cursor: pointer;\n\n &:focus {\n outline-style: solid;\n }\n\n &:global(.disabled) {\n pointer-events: none;\n opacity: 0.25;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.modal-container {\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: @color-background-dark5-40;\n\n .modal-dialog-container {\n flex: none;\n display: flex;\n flex-direction: column;\n max-width: 80%;\n max-height: 80%;\n background-color: @color-surface-light5;\n\n .close-button-container {\n flex: none;\n align-self: flex-end;\n width: 2rem;\n height: 2rem;\n margin: 0.2rem 0.2rem 0 0;\n padding: 0.5rem;\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n fill: @color-surface-dark1-90;\n }\n\n &:hover, &:focus {\n .icon {\n fill: @color-surface-light1-90;\n }\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n }\n\n .title-container {\n flex: 1 0 auto;\n max-height: 2.4em;\n margin: 0 2rem;\n font-size: 1.2rem;\n font-weight: 500;\n color: @color-background-dark5-90;\n }\n\n .modal-dialog-content {\n flex: 1;\n align-self: stretch;\n margin: 1.5rem 1rem 0;\n padding: 0 1rem;\n overflow-y: auto;\n\n &:last-child {\n margin-bottom: 2rem;\n }\n }\n\n .buttons-container {\n flex: none;\n align-self: stretch;\n margin: 2rem 2rem 0;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n &:last-child {\n margin-bottom: 2rem;\n }\n }\n }\n}\n\n.action-button {\n flex: 1;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 1.2rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n\n &:not(:last-child) {\n margin-right: 1rem;\n }\n\n .icon {\n flex: none;\n width: 1.2rem;\n height: 1.2rem;\n margin-right: .5rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 3.6em;\n font-size: 1.1rem;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .modal-container {\n .modal-dialog-container {\n position: relative;\n width: 90%;\n max-width: initial;\n z-index: 0;\n\n .close-button-container {\n position: absolute;\n top: 0;\n right: 0;\n margin: 0.75rem 0.75rem 0 0;\n padding: 0.25rem;\n }\n\n .title-container {\n max-height: 4.8em;\n margin: 1rem 3rem 1rem 1.5rem;\n }\n\n .modal-dialog-content {\n margin: 0 0.5rem;\n padding: 0 0.5rem;\n\n &:last-child {\n margin-bottom: 1rem;\n }\n }\n\n .buttons-container {\n margin: 1rem 1rem 0;\n\n &:last-child {\n margin-bottom: 1rem;\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.addon-details-container {\n .title-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .logo, .icon {\n float: left;\n width: 5rem;\n height: 5rem;\n margin-right: 1.5rem;\n padding: 0.5rem;\n background-color: @color-background-dark5;\n }\n\n .logo {\n object-fit: contain;\n object-position: center;\n }\n\n .icon {\n fill: @color-secondaryvariant1-light3;\n }\n\n .name-container {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: 0;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: baseline;\n \n .name {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n margin-right: 0.5rem;\n font-size: 1.6rem;\n color: @color-background-dark5-90;\n }\n \n .version {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: auto;\n margin-top: 0.5rem;\n color: @color-background-dark5-60;\n }\n }\n }\n\n .section-container {\n margin-top: 1rem;\n\n .section-header {\n font-size: 1.1rem;\n color: @color-background-dark5-90;\n }\n\n .section-label {\n font-size: 1.1rem;\n font-weight: 300;\n color: @color-background-dark5-90;\n\n &.transport-url-label {\n user-select: text;\n }\n\n &.disclaimer-label {\n font-style: italic;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n:import('~stremio/common/ModalDialog/styles.less') {\n label: label;\n}\n\n.addon-details-modal-container {\n .addon-details-container, .addon-details-message-container {\n width: 40rem;\n max-width: 100%;\n }\n\n .install-button, .uninstall-button, .cancel-button {\n .label {\n font-size: 1.2rem;\n font-weight: 500;\n }\n }\n\n .uninstall-button, .cancel-button {\n &:focus {\n outline-color: @color-background-dark5;\n }\n }\n\n .cancel-button {\n background-color: transparent;\n\n &:hover {\n background-color: @color-surface-light3;\n }\n\n .label {\n color: @color-surface-dark2;\n }\n }\n\n .uninstall-button {\n background-color: @color-accent2;\n\n &:hover {\n background-color: @color-accent2-light2;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.checkbox-container {\n &:global(.checked) {\n .icon {\n fill: @color-surface-light5;\n background-color: @color-primaryvariant1;\n }\n }\n\n .icon {\n display: block;\n width: 1rem;\n height: 1rem;\n fill: @color-surface-light5;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.color-picker-container {\n overflow: visible;\n text-align: center;\n\n * {\n overflow: visible;\n }\n\n :global(.a-color-picker-stack):not(:global(.a-color-picker-row-top)) canvas, :global(.a-color-picker-circle) {\n border: solid thin var(--color-surfacedark);\n }\n\n :global(.a-color-picker-circle) {\n box-shadow: 0 0 .2rem var(--color-surfacedark);\n }\n\n :global(.a-color-picker-clipbaord) {\n pointer-events: none;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.color-input-container {\n position: relative;\n z-index: 0;\n\n .transparent-label-container {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.5rem;\n border: thin solid @color-surface-light5-20;\n pointer-events: none;\n\n .transparent-label {\n flex: 1;\n text-align: center;\n color: @color-surface-light5;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n}\n\n.color-picker-container {\n margin: 1rem 0;\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.label-container {\n // IOS specific \n // prevents showing the default context-menu when long pressing an anchor in safari.\n -webkit-touch-callout: none !important;\n\n position: relative;\n overflow: visible;\n\n .menu-container {\n position: absolute;\n z-index: 1;\n overflow: visible;\n visibility: hidden;\n box-shadow: 0 1.35rem 2.7rem @color-background-dark5-40,\n 0 1.1rem 0.85rem @color-background-dark5-20;\n cursor: auto;\n\n &.menu-direction-top-left {\n top: initial;\n right: 0;\n bottom: 100%;\n left: initial;\n visibility: visible;\n }\n\n &.menu-direction-bottom-left {\n top: 100%;\n right: 0;\n bottom: initial;\n left: initial;\n visibility: visible;\n }\n\n &.menu-direction-top-right {\n top: initial;\n right: initial;\n bottom: 100%;\n left: 0;\n visibility: visible;\n }\n\n &.menu-direction-bottom-right {\n top: 100%;\n right: initial;\n bottom: initial;\n left: 0;\n visibility: visible;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Popup/styles.less') {\n popup-menu-container: menu-container;\n}\n\n.label-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0 1rem;\n background-color: @color-background;\n\n &:global(.active) {\n .label {\n color: @color-surface-light5-90;\n }\n\n .icon {\n fill: @color-surface-light5-90;\n }\n }\n\n >.label {\n flex: 1;\n max-height: 2.4em;\n font-weight: 500;\n color: @color-secondaryvariant1-90;\n }\n\n .icon {\n flex: none;\n width: 1rem;\n height: 1rem;\n margin-left: 1rem;\n fill: @color-secondaryvariant1-90;\n }\n\n .popup-menu-container {\n width: 100%;\n }\n}\n\n.modal-container, .popup-menu-container {\n .menu-container {\n .option-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 1rem;\n background-color: @color-background;\n\n &:global(.selected) {\n .icon {\n display: block;\n }\n }\n\n &:hover, &:focus {\n background-color: @color-background-light2;\n }\n\n .label {\n flex: 1;\n max-height: 4.8em;\n color: @color-surface-light5-90;\n }\n\n .icon {\n flex: none;\n display: none;\n width: 0.5rem;\n height: 0.5rem;\n border-radius: 100%;\n margin-left: 1rem;\n background-color: @color-accent3-90;\n }\n }\n\n .no-options-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 1rem;\n background-color: @color-background;\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n font-size: 1.2rem;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.background {\n fill: @color-surface-light5;\n}\n\n.icon {\n fill: @color-background-dark5;\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Popup/styles.less') {\n popup-menu-container: menu-container;\n}\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n multiselect-option-container: option-container;\n multiselect-option-label: label;\n}\n\n:import('~stremio/common/PlayIconCircleCentered/styles.less') {\n play-icon-circle-centered-background: background;\n play-icon-circle-centered-icon: icon;\n}\n\n.meta-item-container {\n padding: 1rem;\n overflow: visible;\n\n &:hover, &:focus, &:global(.active), &:global(.selected) {\n outline-style: none;\n background-color: @color-background-light3;\n transition: background-color 100ms ease-out;\n }\n\n &.poster-shape-poster {\n .poster-container {\n padding-top: calc(100% * var(--poster-shape-ratio));\n }\n }\n\n &.poster-shape-square {\n .poster-container {\n padding-top: 100%;\n }\n }\n\n &.poster-shape-landscape {\n .poster-container {\n padding-top: calc(100% * var(--landscape-shape-ratio));\n }\n }\n\n .poster-container {\n position: relative;\n z-index: 0;\n background-color: @color-background;\n\n .poster-image-layer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -3;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n\n .poster-image {\n flex: none;\n width: 100%;\n height: 100%;\n object-position: center;\n object-fit: cover;\n opacity: 0.9;\n }\n\n .placeholder-icon {\n flex: none;\n width: 80%;\n height: 50%;\n fill: @color-background-light3-90;\n }\n }\n\n .play-icon-layer {\n position: absolute;\n top: 30%;\n right: 0;\n bottom: 30%;\n left: 0;\n z-index: -2;\n overflow: visible;\n\n .play-icon {\n display: block;\n width: 100%;\n height: 100%;\n filter: drop-shadow(0 0 0.5rem @color-background);\n\n .play-icon-circle-centered-background {\n fill: @color-accent4-90;\n }\n\n .play-icon-circle-centered-icon {\n fill: @color-surface-light5-90;\n }\n }\n }\n\n .progress-bar-layer {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n background-color: @color-background-light2;\n\n .progress-bar {\n height: 0.4rem;\n background-color: @color-primaryvariant1;\n }\n }\n\n .new-videos {\n z-index: -1;\n position: absolute;\n top: 0;\n right: 0;\n overflow: visible;\n\n .layer {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 1.6rem;\n width: 2.75rem;\n border-radius: 0.25rem;\n font-size: 1rem;\n font-weight: 600;\n color: @color-background-dark2-90;\n\n &:nth-child(1) {\n top: 0.5rem;\n right: 0.5rem;\n background-color: @color-surface-light5-40;\n }\n\n &:nth-child(2) {\n top: 0.75rem;\n right: 0.75rem;\n background-color: @color-surface-light5-60;\n }\n\n &:nth-child(3) {\n top: 1rem;\n right: 1rem;\n background-color: @color-surface-light5;\n }\n }\n }\n }\n\n .title-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 2.8rem;\n overflow: visible;\n\n .title-label {\n flex: 1;\n max-height: 2.4em;\n padding-left: 0.5rem;\n color: @color-surface-light5-90;\n\n &:only-child {\n padding-right: 0.5rem;\n }\n }\n\n .menu-label-container {\n flex: none;\n width: 1.5rem;\n height: 2.8rem;\n padding: 1rem 0;\n background-color: transparent;\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n fill: @color-surface-light1-90;\n }\n\n .popup-menu-container {\n width: auto;\n\n .multiselect-menu-container {\n min-width: 6rem;\n max-width: 12rem;\n\n .multiselect-option-container {\n padding: 0.5rem;\n background-color: @color-surface-light5;\n\n &:hover, &:focus {\n outline: none;\n background-color: @color-surface-light2;\n }\n\n .multiselect-option-label {\n color: @color-background-dark5-90;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .meta-item-container {\n padding: 0.5rem;\n\n .title-bar-container {\n margin-top: 0.5rem;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.text-input {\n user-select: text;\n\n &::-moz-focus-inner {\n border: none;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.search-bar-container {\n --search-bar-size: calc(var(--horizontal-nav-bar-size) - 1.2rem);\n display: flex;\n flex-direction: row;\n height: var(--search-bar-size);\n border-radius: var(--search-bar-size);\n background-color: @color-background-light2;\n\n &:hover {\n background-color: @color-background-light3;\n }\n\n .search-input {\n flex: 1;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0 0.5rem 0 1.5rem;\n font-weight: 500;\n color: @color-secondaryvariant1-light1;\n cursor: text;\n\n &::placeholder, .placeholder-label {\n max-height: 1.2em;\n opacity: 1;\n color: @color-secondaryvariant1-light1-90;\n }\n }\n\n .submit-button-container {\n flex: none;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: var(--search-bar-size);\n height: var(--search-bar-size);\n\n &:hover {\n .icon {\n fill: @color-secondaryvariant2-light1-90;\n }\n }\n\n .icon {\n flex: none;\n width: 1.7rem;\n height: 1.7rem;\n fill: @color-secondaryvariant1-90;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.nav-menu-container {\n width: 20rem;\n max-height: calc(100vh - var(--horizontal-nav-bar-size));\n overflow-y: auto;\n background-color: @color-background-dark1;\n\n .user-info-container {\n display: grid;\n height: 7rem;\n grid-template-columns: 7rem 1fr;\n grid-template-rows: 50% 50%;\n grid-template-areas:\n \"avatar-area email-area\"\n \"avatar-area logout-button-area\";\n\n .avatar-container {\n grid-area: avatar-area;\n padding: 1rem;\n border-radius: 50%;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n background-origin: content-box;\n background-clip: content-box;\n opacity: 0.9;\n }\n\n .email-container {\n grid-area: email-area;\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 1rem 1rem 0 0;\n\n .email-label {\n flex: 1;\n max-height: 2.4em;\n color: @color-surface-light5-90;\n }\n }\n\n .logout-button-container {\n grid-area: logout-button-area;\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0 1rem 1rem 0;\n\n &:hover, &:focus {\n outline: none;\n\n .logout-label {\n color: @color-surface-light5-90;\n text-decoration: underline;\n }\n }\n\n .logout-label {\n flex: 1;\n max-height: 2.4em;\n color: @color-surface-light3-90;\n }\n }\n }\n\n .nav-menu-section {\n border-top: thin solid @color-surface-light5-20;\n\n .nav-menu-option-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 4rem;\n\n &:hover {\n background-color: @color-background-light2;\n }\n\n .icon {\n flex: none;\n width: 1.4rem;\n height: 1.4rem;\n margin: 1.3rem;\n fill: @color-secondaryvariant2-light1-90;\n }\n\n .nav-menu-option-label {\n flex: 1;\n max-height: 2.4em;\n padding-right: 1.3rem;\n color: @color-surface-light5-90;\n\n &:only-child {\n padding-left: 1.3rem;\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .nav-menu-container {\n max-height: calc(100vh - var(--horizontal-nav-bar-size) - var(--vertical-nav-bar-size) - 1rem);\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.horizontal-nav-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: var(--horizontal-nav-bar-size);\n padding-right: 1rem;\n background-color: @color-background;\n overflow: visible;\n\n .logo-container {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--vertical-nav-bar-size);\n height: var(--horizontal-nav-bar-size);\n\n .logo {\n flex: none;\n width: 2.5rem;\n height: 2.5rem;\n object-position: center;\n object-fit: contain;\n opacity: 0.9;\n }\n }\n\n .spacing {\n flex: 1 0 0;\n }\n\n .title {\n flex: 4 0 0;\n padding: 0 1rem;\n font-size: 1.2rem;\n font-style: normal;\n font-weight: 500;\n letter-spacing: 0.01rem;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: @color-secondaryvariant2-light1-90;\n\n &+.spacing {\n display: none;\n }\n }\n\n .search-bar {\n flex: 2 0 9.5rem;\n max-width: 30rem;\n\n &+.spacing {\n max-width: 11rem;\n }\n }\n\n .button-container {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--horizontal-nav-bar-size);\n height: var(--horizontal-nav-bar-size);\n\n &.back-button-container {\n width: var(--vertical-nav-bar-size);\n height: var(--horizontal-nav-bar-size);\n }\n\n &:hover {\n background-color: @color-background-light2;\n }\n\n &:global(.active) {\n background-color: @color-background-light3;\n\n .icon {\n fill: @color-surface-light5-90;\n }\n }\n\n .icon {\n flex: none;\n width: 1.7rem;\n height: 1.7rem;\n fill: @color-secondaryvariant2-light1-90;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .horizontal-nav-bar-container {\n justify-content: space-between;\n padding-right: 0;\n\n .logo-container {\n width: var(--horizontal-nav-bar-size);\n }\n\n .search-bar {\n margin: 0 0.5rem;\n }\n\n .spacing {\n display: none;\n }\n\n .button-container:not(.back-button-container):not(.menu-button-container) {\n display: none;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.nav-tab-button-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background-color: @color-background-dark1;\n\n &:hover {\n background-color: @color-background-light2;\n }\n\n &:global(.selected) {\n background-color: @color-secondaryvariant1-dark5;\n\n &:hover {\n background-color: @color-secondaryvariant1-dark4;\n }\n\n .icon {\n fill: @color-surface-light5-90;\n }\n\n .label {\n color: @color-surface-light5-90;\n }\n }\n\n .icon, .logo {\n flex: none;\n width: 1.7rem;\n height: 1.7rem;\n margin-bottom: 0.5rem;\n fill: @color-secondary-light5-90;\n }\n\n .label {\n flex: none;\n max-height: 2.4em;\n padding: 0 0.2rem;\n font-size: 0.9rem;\n font-weight: 500;\n letter-spacing: 0.01rem;\n text-align: center;\n color: @color-secondaryvariant1-90;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.vertical-nav-bar-container {\n width: var(--vertical-nav-bar-size);\n background-color: @color-background-dark1;\n overflow-y: auto;\n scrollbar-width: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n .nav-tab-button {\n width: var(--vertical-nav-bar-size);\n height: var(--vertical-nav-bar-size);\n\n &:first-child {\n margin-top: 1rem;\n }\n\n &:last-child {\n margin-bottom: 1rem;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .vertical-nav-bar-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n height: var(--vertical-nav-bar-size);\n width: 100%;\n overflow-y: hidden;\n overflow-x: auto;\n\n .nav-tab-button {\n flex: none;\n\n &:first-child {\n margin-top: 0;\n }\n \n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.main-nav-bars-container {\n position: relative;\n z-index: 0;\n\n .horizontal-nav-bar {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n }\n\n .vertical-nav-bar {\n position: absolute;\n top: var(--horizontal-nav-bar-size);\n bottom: 0;\n left: 0;\n z-index: 1;\n }\n\n .nav-content-container {\n position: absolute;\n top: var(--horizontal-nav-bar-size);\n right: 0;\n bottom: 0;\n left: var(--vertical-nav-bar-size);\n z-index: 0;\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .main-nav-bars-container {\n .nav-content-container {\n left: 0;\n bottom: var(--vertical-nav-bar-size);\n }\n\n .vertical-nav-bar {\n top: initial;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.share-prompt-container {\n .buttons-container {\n display: flex;\n flex-direction: row;\n\n .button-container {\n flex: 1;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 1rem;\n\n &:not(:last-child) {\n margin-right: 1rem;\n }\n\n .icon {\n flex: none;\n height: 1.2rem;\n margin-right: 1rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 2.4em;\n font-size: 1.1rem;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n\n .facebook-button, .twitter-button {\n &:focus {\n outline-color: @color-background-dark5;\n }\n }\n\n .facebook-button {\n background-color: var(--color-facebook);\n }\n\n .twitter-button {\n background-color: var(--color-twitter);\n }\n }\n\n .url-container {\n display: flex;\n flex-direction: row;\n margin-top: 1rem;\n background-color: @color-surface-light2;\n\n .url-text-input {\n flex: 1;\n align-self: stretch;\n padding: 1rem;\n font-size: 1.1rem;\n text-align: center;\n color: @color-background-dark5;\n }\n\n .copy-button {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n width: 8rem;\n padding: 1rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n\n .icon {\n flex: none;\n width: 1.2rem;\n height: 1.2rem;\n margin-right: 0.5rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 2.4em;\n font-size: 1.1rem;\n color: @color-surface-light5-90;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.action-button-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n background-color: @color-surface-light5-20;\n\n &:hover, &:focus {\n background-color: @color-accent3;\n }\n\n .icon-container {\n flex: 0 0 50%;\n align-self: stretch;\n padding-top: 15%;\n\n &:only-child {\n padding: 5% 0;\n }\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n fill: @color-surface-light5-90;\n }\n }\n\n .label-container {\n flex: 0 0 50%;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .label {\n flex: 1;\n font-weight: 500;\n max-height: 2.4em;\n padding: 0 0.2rem;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .action-button-container {\n flex-direction: row;\n padding: 0 1rem;\n\n .icon-container {\n flex: none;\n align-self: center;\n height: 2rem;\n width: 2rem;\n padding-top: 0;\n margin-right: 0.5rem;\n\n &:only-child {\n padding: 0;\n margin-right: 0;\n }\n }\n\n .label-container {\n flex: 1;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.meta-links-container {\n .label-container {\n margin-bottom: 0.2rem;\n text-transform: uppercase;\n font-weight: 500;\n color: @color-surface-dark3-90;\n }\n\n .links-container {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n .link-container {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n margin-right: 0.5rem;\n margin-bottom: 0.2rem;\n padding: 0.3rem 0.5rem;\n white-space: nowrap;\n text-overflow: ellipsis;\n border-radius: 2rem;\n border: var(--focus-outline-size) solid transparent;\n color: @color-surface-light2-90;\n background-color: @color-surface-light5-20;\n\n &:hover, &:focus {\n background-color: @color-surface-light5-30;\n }\n\n &:focus {\n outline: none;\n border-color: @color-surface-light5;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.meta-preview-placeholder-container {\n display: flex;\n flex-direction: column;\n padding: 2rem;\n\n .meta-info-container {\n flex: 1;\n align-self: stretch;\n\n .logo-container {\n width: 20rem;\n height: 8rem;\n max-width: 100%;\n background-color: var(--color-placeholder-background);\n }\n\n .duration-release-info-container {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n margin: 1rem 0;\n\n .duration-container {\n flex-basis: 5rem;\n height: 1.4rem;\n margin-right: 1rem;\n background-color: var(--color-placeholder-background);\n }\n\n .release-info-container {\n flex-basis: 5rem;\n height: 1.4rem;\n background-color: var(--color-placeholder-background);\n }\n }\n\n .description-container {\n margin: 1rem 0;\n\n .description-label-container {\n background-color: var(--color-placeholder-background);\n\n &:nth-child(1) {\n width: 20rem;\n height: 1.4rem;\n max-width: 80%;\n }\n\n &:nth-child(2) {\n width: 26rem;\n height: 4.6rem;\n max-width: 80%;\n margin-top: 1rem;\n }\n }\n }\n\n .genres-container {\n margin: 1rem 0;\n\n .genres-header-container {\n width: 6.5rem;\n height: 1.6rem;\n max-width: 100%;\n background-color: var(--color-placeholder-background);\n }\n\n .genre-label-container {\n width: 10rem;\n height: 1.2rem;\n max-width: 100%;\n margin-top: 0.2rem;\n background-color: var(--color-placeholder-background);\n }\n }\n }\n\n .action-buttons-container {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n max-height: 6rem;\n\n .action-button-container {\n flex: none;\n width: 6rem;\n height: 6rem;\n margin-right: 2rem;\n background-color: var(--color-placeholder-background);\n\n &:last-child {\n margin-right: 0;\n }\n\n .action-button-icon {\n width: 2rem;\n height: 2rem;\n margin: 1rem 2rem 0 2rem;\n background-color: var(--color-placeholder-background);\n }\n\n .action-button-label {\n width: 4rem;\n height: 1.2rem;\n margin: 0.9rem 1rem;\n background-color: var(--color-placeholder-background);\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.meta-preview-container {\n position: relative;\n z-index: 0;\n display: flex;\n flex-direction: column;\n\n &.compact {\n .meta-info-container {\n .logo, .logo-placeholder {\n width: 100%;\n height: 8rem;\n background-color: @color-surface-dark5-10;\n }\n\n .runtime-release-info-container {\n justify-content: space-evenly;\n\n .runtime-label, .release-info-label {\n margin: 1rem 0.4rem;\n }\n }\n\n .description-container {\n max-height: none;\n }\n }\n\n .action-buttons-container {\n justify-content: space-evenly;\n padding: 0;\n\n .action-button:not(:last-child) {\n margin-right: 0;\n }\n }\n }\n\n .background-image-layer {\n position: absolute;\n top: -10px;\n right: -10px;\n bottom: -10px;\n left: -10px;\n z-index: -1;\n\n &::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n background: @color-background-dark2-60;\n content: \"\";\n }\n\n .background-image {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n opacity: 0.9;\n filter: blur(5px);\n }\n }\n\n .meta-info-container {\n flex: 1;\n align-self: stretch;\n padding: 0 2rem;\n overflow-y: auto;\n\n &:not(:hover) {\n scrollbar-color: transparent transparent;\n\n &::-webkit-scrollbar-thumb, &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n }\n\n .logo, .logo-placeholder {\n display: block;\n max-width: 100%;\n margin: 2rem 0;\n }\n\n .logo {\n height: 8rem;\n object-fit: contain;\n object-position: center;\n }\n\n .logo-placeholder {\n font-size: 1.7rem;\n color: @color-surface-light5-90;\n }\n\n .runtime-release-info-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-wrap: wrap;\n margin-top: 1rem;\n\n .runtime-label, .release-info-label {\n flex: 0 1 auto;\n margin-right: 2rem;\n margin-bottom: 0.5rem;\n font-size: 1.4rem;\n color: @color-surface-light5-90;\n }\n\n .imdb-button-container {\n flex: 0 1 auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5rem;\n padding: 0.3rem 1rem;\n border-radius: 2.5rem;\n border: var(--focus-outline-size) solid transparent;\n background-color: @color-surface-light5-20;\n\n &:hover, &:focus {\n background-color: @color-surface-light5-30;\n }\n\n &:focus {\n outline: none;\n border: var(--focus-outline-size) solid @color-surface-light5;\n }\n\n .icon {\n flex: none;\n width: 3rem;\n height: 1.1rem;\n margin-right: 1rem;\n fill: @color-surface-90;\n }\n\n .label {\n flex: 0 1 auto;\n max-height: 1.2em;\n font-size: 1.6rem;\n font-weight: 500;\n color: @color-surface-light5-90;\n }\n }\n }\n\n .name-container {\n margin-top: 1rem;\n font-size: 1.5rem;\n color: @color-surface-light5-90;\n }\n\n .description-container {\n max-height: 6em;\n margin-top: 1rem;\n font-size: 1.1rem;\n line-height: 1.5em;\n color: @color-surface-light5-90;\n }\n\n .meta-links {\n margin-top: 1rem;\n }\n }\n\n .action-buttons-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n max-height: 10rem;\n padding: 0 2rem;\n\n .action-button {\n flex: none;\n width: 6rem;\n height: 6rem;\n margin: 2rem 0;\n\n &:not(:last-child) {\n margin-right: 2rem;\n }\n }\n }\n}\n\n.share-prompt {\n width: 24rem;\n}\n\n@media only screen and (max-width: @minimum) {\n .meta-preview-container {\n .meta-info-container {\n padding: 0 1.5rem;\n\n .logo {\n margin: 1em 0;\n }\n }\n\n .action-buttons-container {\n flex-wrap: nowrap;\n padding: 0 1.5rem;\n overflow-x: visible;\n scrollbar-width: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n .action-button {\n width: auto;\n height: 4rem;\n max-width: 60%;\n margin: 1rem 0;\n\n &:not(:last-child) {\n margin-right: 1rem;\n }\n }\n }\n }\n\n .share-prompt {\n width: 100%;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.meta-row-placeholder-container {\n .header-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-end;\n padding: 0 1rem;\n margin-bottom: 1rem;\n\n .title-container {\n flex: 1;\n max-height: 2.4em;\n font-size: 1.8rem;\n color: var(--color-placeholder-text);\n\n &:empty {\n height: 1.2em;\n background: linear-gradient(to right, var(--color-placeholder-background) 0 40%, transparent 40% 100%);\n }\n }\n\n .see-all-container {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n max-width: 12rem;\n padding: 0.2rem;\n\n &:focus {\n outline: none;\n background-color: var(--color-placeholder-background);\n }\n\n .label {\n flex: 0 1 auto;\n max-height: 1.2em;\n font-size: 1.3rem;\n font-weight: 500;\n text-transform: uppercase;\n color: var(--color-placeholder-text);\n }\n\n .icon {\n flex: none;\n height: 1.3rem;\n margin-left: 0.5rem;\n fill: var(--color-placeholder-text);\n }\n }\n }\n\n .meta-items-container {\n display: flex;\n flex-direction: row;\n align-items: stretch;\n\n .meta-item {\n flex: 1;\n margin: 1rem;\n\n &:not(:first-child) {\n margin-left: 1.5rem;\n }\n\n .poster-container {\n padding-bottom: calc(100% * var(--poster-shape-ratio));\n background-color: var(--color-placeholder-background);\n }\n\n .title-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 2.8rem;\n\n .title-label {\n flex: none;\n width: 60%;\n height: 1.2rem;\n background-color: var(--color-placeholder-background);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .meta-row-placeholder-container {\n .meta-items-container {\n .meta-item {\n margin: 0.5rem;\n\n &:not(:first-child) {\n margin-left: 0.5rem;\n }\n\n .title-bar-container {\n margin-top: 0.5rem;\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.meta-row-container {\n overflow: visible;\n\n .header-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-end;\n padding: 0 1rem;\n margin-bottom: 1rem;\n\n .title-container {\n flex: 1;\n max-height: 2.4em;\n font-size: 1.8rem;\n color: @color-secondaryvariant2-light1-90;\n }\n\n .see-all-container {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n max-width: 12rem;\n padding: 0.2rem;\n\n &:focus {\n outline: none;\n background-color: @color-background-light3;\n }\n\n &:hover {\n .label {\n color: @color-secondaryvariant2-light2-90;\n }\n\n .icon {\n fill: @color-secondaryvariant2-light2-90;\n }\n }\n\n .label {\n flex: 0 1 auto;\n max-height: 1.2em;\n font-size: 1.3rem;\n font-weight: 500;\n text-transform: uppercase;\n color: @color-secondaryvariant2-light1-90;\n }\n\n .icon {\n flex: none;\n height: 1.3rem;\n margin-left: 0.5rem;\n fill: @color-secondaryvariant2-light1-90;\n }\n }\n }\n\n .message-container {\n max-height: 3.6em;\n padding: 0 1rem;\n font-size: 1.3rem;\n color: @color-secondaryvariant2-light1-90;\n }\n\n .meta-items-container {\n display: flex;\n flex-direction: row;\n align-items: stretch;\n overflow: visible;\n\n .meta-item {\n &:not(:first-child) {\n margin-left: 0.5rem;\n }\n\n &.poster-shape-poster {\n flex: calc(1 / var(--poster-shape-ratio));\n }\n\n &.poster-shape-square {\n flex: 1;\n }\n\n &.poster-shape-landscape {\n flex: calc(1 / var(--landscape-shape-ratio));\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .meta-row-container {\n .header-container {\n padding: 0 0.5rem;\n\n .title-container {\n margin-right: 0.5rem;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n\n .meta-items-container {\n .meta-item {\n &:not(:first-child) {\n margin-left: 0;\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.pagination-input-container {\n display: flex;\n flex-direction: row;\n\n .prev-button-container, .next-button-container {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: @color-background;\n\n .icon {\n display: block;\n fill: @color-secondaryvariant1-90;\n }\n }\n\n .label-container {\n flex: 1;\n align-self: stretch;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: @color-background-dark1;\n\n .label {\n flex: none;\n min-width: 1.2rem;\n max-width: 3rem;\n white-space: nowrap;\n text-overflow: ellipsis;\n text-align: center;\n font-weight: 500;\n color: @color-secondaryvariant1-90;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.search-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 3.5rem;\n padding: 0 1rem;\n border-radius: 3.5rem;\n border: var(--focus-outline-size) solid transparent;\n background-color: var(--color-placeholder-background);\n\n .search-input {\n flex: 1;\n max-height: 1.2em;\n margin-right: 1rem;\n font-size: 1.1rem;\n color: var(--color-placeholder-text);\n }\n\n .icon {\n flex: none;\n width: 1.5rem;\n height: 1.5rem;\n fill: var(--color-placeholder-background);\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.search-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 3.5rem;\n padding: 0 1rem;\n border-radius: 3.5rem;\n border: var(--focus-outline-size) solid transparent;\n background-color: @color-background;\n cursor: text;\n\n &:hover, &:focus-within {\n background-color: @color-background-light1;\n }\n\n &:focus-within {\n border: var(--focus-outline-size) solid @color-surface-light5;\n }\n\n .search-input {\n flex: 1;\n margin-right: 1rem;\n font-size: 1.1rem;\n color: @color-surface-light5;\n\n &::placeholder {\n max-height: 1.2em;\n opacity: 1;\n color: @color-secondaryvariant1-light1-90;\n }\n }\n\n .icon {\n flex: none;\n width: 1.5rem;\n height: 1.5rem;\n fill: @color-secondaryvariant1-90;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.warning-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 1rem;\n background-color: @color-accent5-dark3;\n\n .warning-statement {\n flex: 1;\n margin-right: 1rem;\n font-size: 1.2rem;\n max-height: 2.4em;\n color: @color-surface-light5-90;\n }\n\n .warning-button {\n flex: none;\n margin-left: 1rem;\n color: @color-surface-light5-90;\n\n &:first-child {\n margin-left: 0;\n }\n\n &:hover {\n .warning-label {\n text-decoration: underline;\n }\n }\n\n .warning-label {\n font-size: 1.2rem;\n max-height: 1.2em;\n color: @color-surface-light5-90;\n }\n }\n\n .warning-button:hover {\n text-decoration: underline;\n }\n}\n\n@media only screen and (max-width: 500px) {\n .warning-container {\n display: block;\n height: auto !important;\n text-align: center;\n .warning-statement {\n margin-bottom: 0.5rem;\n margin-right: 0;\n }\n .warning-button {\n display: inline-block;\n }\n }\n}\n","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\nhtml.active-slider-within {\n cursor: grabbing;\n\n body {\n pointer-events: none;\n }\n}\n\n.slider-container {\n position: relative;\n z-index: 0;\n overflow: visible;\n cursor: pointer;\n\n &:hover, &:global(.active) {\n .track-after {\n background-color: @color-primary-light5;\n }\n }\n\n &:global(.disabled) {\n pointer-events: none;\n\n .track {\n background-color: @color-surface-dark5;\n }\n\n .track-after {\n background-color: @color-surface;\n }\n\n .thumb {\n fill: @color-surface;\n }\n }\n\n .layer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 0;\n display: flex;\n flex-direction: row;\n align-items: center;\n overflow: visible;\n }\n\n .track {\n z-index: 0;\n flex: 1;\n height: var(--track-size);\n background-color: @color-surface-light5-20;\n }\n\n .track-before {\n z-index: 1;\n flex: none;\n height: var(--track-size);\n background-color: @color-surface-light5-10;\n }\n\n .track-after {\n z-index: 2;\n flex: none;\n height: var(--track-size);\n background-color: @color-primary-light3;\n }\n\n .thumb {\n z-index: 3;\n flex: none;\n width: var(--thumb-size);\n height: var(--thumb-size);\n transform: translateX(-50%);\n fill: @color-surface-light5;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.toast-item-container {\n display: flex;\n flex-direction: row;\n width: 25rem;\n margin-bottom: 1rem;\n background-color: @color-surface-light4;\n overflow: visible;\n box-shadow: 0 0.3rem 0.5rem @color-background-dark5-40,\n 0 0.6rem 1rem @color-background-dark5-20;\n pointer-events: auto;\n\n &.success {\n .icon-container {\n background-color: @color-accent3;\n\n .icon {\n fill: @color-surface-light5-90;\n }\n }\n }\n\n &.error {\n .icon-container {\n background-color: @color-accent2;\n\n .icon {\n fill: @color-surface-light5-90;\n }\n }\n }\n\n .icon-container {\n flex: none;\n align-self: stretch;\n width: 2.5rem;\n padding: 0.5rem;\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n fill: @color-background-dark5-90;\n }\n }\n\n .info-container {\n flex: 1;\n align-self: stretch;\n padding: 1rem;\n\n .title-container {\n font-size: 1.2rem;\n\n &:not(:last-child) {\n margin-bottom: 0.2rem;\n }\n }\n\n .message-container {\n font-size: 1.1rem;\n }\n }\n\n .close-button-container {\n flex: none;\n align-self: flex-start;\n width: 2rem;\n height: 2rem;\n margin: 0.2rem;\n padding: 0.5rem;\n\n &:hover {\n background-color: @color-surface-light2;\n }\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.addon-container {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n padding: 1.5rem;\n background-color: @color-background;\n cursor: inherit;\n\n .logo-container {\n flex: none;\n width: 6rem;\n height: 6rem;\n background-color: @color-background-light1;\n\n .logo {\n display: block;\n width: 100%;\n height: 100%;\n padding: 0.5rem;\n object-fit: contain;\n object-position: center;\n }\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n padding: 1rem;\n fill: @color-secondaryvariant1-light3;\n }\n }\n\n .info-container {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: 0;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: baseline;\n padding: 0 0.5rem;\n\n .name-container {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n padding: 0 0.5rem;\n max-height: 3.6em;\n font-size: 1.6rem;\n color: @color-surface-light5-90;\n }\n\n .version-container {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: auto;\n margin-top: 0.5rem;\n padding: 0 0.5rem;\n max-height: 2.4em;\n color: @color-surface-light5-60;\n }\n\n .types-container {\n flex-grow: 0;\n flex-shrink: 0;\n flex-basis: 100%;\n margin-top: 0.5rem;\n padding: 0 0.5rem;\n max-height: 2.4em;\n color: @color-surface-light5-40;\n text-transform: capitalize;\n }\n\n .description-container {\n flex-grow: 0;\n flex-shrink: 0;\n flex-basis: 100%;\n margin-top: 0.5rem;\n padding: 0 0.5rem;\n max-height: 4.8em;\n color: @color-surface-light5-90;\n }\n }\n\n .buttons-container {\n flex: none;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n width: 17rem;\n\n .action-buttons-container {\n flex: auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 1rem;\n }\n\n .install-button-container, .configure-button-container, .uninstall-button-container, .share-button-container {\n flex: auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 1rem;\n height: 4rem;\n padding: 0 1rem;\n\n .icon {\n flex: none;\n width: 2rem;\n height: 2rem;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 2.4em;\n font-size: 1.2rem;\n font-weight: 500;\n text-align: center;\n }\n }\n\n .install-button-container {\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light2;\n }\n\n .label {\n color: @color-surface-light5;\n }\n }\n\n .configure-button-container {\n flex: none;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light2;\n }\n\n .icon {\n fill: @color-surface-light5;\n }\n }\n\n .uninstall-button-container {\n outline-color: @color-background-light3;\n outline-style: solid;\n\n &:hover {\n background-color: @color-background-light2;\n }\n\n .label {\n color: @color-surface-light5-90;\n }\n }\n\n .share-button-container {\n &:hover {\n .icon {\n fill: @color-secondaryvariant1-light1;\n }\n\n .label {\n text-decoration: underline;\n color: @color-secondaryvariant1-light2;\n }\n }\n\n .icon {\n fill: @color-secondaryvariant1-dark1-60;\n }\n\n .label {\n color: @color-secondaryvariant1-90;\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .addon-container {\n flex-wrap: wrap;\n\n .info-container {\n margin-left: 0.5rem;\n padding: 0;\n }\n\n .buttons-container {\n flex: 0 1 100%;\n width: auto;\n margin-top: 1rem;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n .share-button-container {\n flex: none;\n\n .icon {\n margin-right: 0;\n }\n\n .label {\n display: none;\n }\n }\n\n .install-button-container, .uninstall-button-container {\n flex-basis: 100%;\n margin-right: 1rem;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n share-modal-content: modal-dialog-content;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n addon-modal-content: modal-dialog-content;\n cancel-button-label: label;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n filters-modal-container: modal-dialog-container;\n filters-modal-content: modal-dialog-content;\n}\n\n.addons-container {\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .addons-content {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-self: stretch;\n\n .selectable-inputs-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 1.5rem;\n overflow: visible;\n\n .add-button-container {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n width: 10rem;\n height: 3.5rem;\n margin-right: 1.5rem;\n padding: 0 1rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light2;\n }\n\n &:focus {\n outline-color: @color-surface-light5;\n }\n\n .icon {\n flex: none;\n width: 1.2rem;\n height: 1.2rem;\n margin-right: 1rem;\n fill: @color-surface-light5;\n }\n\n .add-button-label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 2.4em;\n font-size: 1.1rem;\n color: @color-surface-light5;\n }\n }\n\n .select-input-container {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: 15rem;\n height: 3.5rem;\n margin-right: 1.5rem;\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 7);\n overflow: auto;\n }\n }\n\n .spacing {\n flex: 1;\n }\n\n .search-bar {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: 18rem;\n }\n\n .filter-button {\n flex: none;\n display: none;\n align-items: center;\n justify-content: center;\n width: 3.5rem;\n height: 3.5rem;\n background-color: @color-background;\n\n .filter-icon {\n flex: none;\n width: 1.4rem;\n height: 1.4rem;\n fill: @color-secondaryvariant1-90;\n }\n }\n }\n\n .message-container {\n flex: 1;\n align-self: stretch;\n padding: 0 1.5rem;\n font-size: 2rem;\n color: @color-surface-light5;\n }\n\n .addons-list-container {\n flex: 1;\n align-self: stretch;\n padding: 0 1.5rem;\n overflow-y: auto;\n\n .addon {\n margin-bottom: 1.5rem;\n }\n }\n }\n}\n\n.filters-modal {\n .filters-modal-container {\n overflow: visible;\n\n .filters-modal-content {\n display: flex;\n flex-direction: column;\n overflow: visible;\n\n .select-input-container {\n height: 3.5rem;\n\n &:not(:last-child) {\n margin-bottom: 1rem;\n }\n }\n }\n }\n}\n\n.add-addon-modal-container {\n .addon-modal-content {\n width: 30rem;\n\n .notice {\n margin-bottom: 1.5rem;\n font-size: 1rem;\n color: @color-background-dark5-90;\n }\n\n .addon-url-input {\n width: 100%;\n padding: 1rem;\n color: @color-surface-dark5;\n outline: var(--focus-outline-size) solid @color-surface-light2;\n outline-offset: calc(-1 * var(--focus-outline-size));\n\n &:hover {\n outline-color: @color-surface-light4;\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n }\n }\n\n .cancel-button {\n background-color: transparent;\n\n &:hover {\n background-color: @color-surface-light3;\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n\n .cancel-button-label {\n color: @color-surface-dark2;\n }\n }\n}\n\n.share-modal-container {\n .share-modal-content {\n width: 30rem;\n\n .title-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .logo, .icon {\n float: left;\n width: 5rem;\n height: 5rem;\n margin-right: 1.5rem;\n padding: 0.5rem;\n }\n\n .logo {\n object-fit: contain;\n object-position: center;\n }\n\n .icon {\n fill: @color-secondaryvariant1-light3;\n }\n\n .name-container {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: 0;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: baseline;\n\n .name {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n margin-right: 0.5rem;\n font-size: 1.6rem;\n color: @color-background-dark5-90;\n }\n\n .version {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: auto;\n margin-top: 0.5rem;\n color: @color-background-dark5-60;\n }\n }\n }\n\n .share-prompt-container {\n margin-top: 1rem;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .addons-container {\n .addons-content {\n .selectable-inputs-container {\n .add-button-container {\n position: fixed;\n right: 0;\n bottom: calc(3rem + var(--horizontal-nav-bar-size));\n box-shadow: 0 1.35rem 2.7rem @color-background-dark5-40,\n 0 1.1rem 0.85rem @color-background-dark5-20;\n }\n\n .select-input-container {\n display: none;\n }\n\n .spacing {\n display: none;\n }\n\n .search-bar {\n flex-basis: 100%;\n margin-right: 1rem;\n }\n\n .filter-button {\n display: flex;\n }\n }\n }\n }\n\n .share-modal-container {\n .share-modal-content {\n width: auto;\n }\n }\n\n .add-addon-modal-container {\n .addon-modal-content {\n width: auto;\n\n .notice {\n margin-bottom: 1rem;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/MetaRow/styles.less') {\n meta-item: meta-item;\n}\n\n:import('~stremio/common/MetaRow/MetaRowPlaceholder/styles.less') {\n meta-item-placeholder: meta-item;\n}\n\n.board-container {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n\n .board-content-container {\n flex: 1;\n align-self: stretch;\n background-color: @color-background-dark2;\n\n .board-content {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n\n .board-row {\n margin: 4rem 2rem;\n }\n }\n }\n\n .board-warning-container {\n flex: none;\n align-self: stretch;\n }\n}\n\n@media only screen and (max-width: @large) {\n .board-container {\n .board-content-container {\n .board-content {\n .board-row-poster, .board-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+10) {\n display: none;\n }\n }\n }\n\n .board-row-landscape, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+9) {\n display: none;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @normal) {\n .board-container {\n .board-content-container {\n .board-content {\n .board-row-poster, .board-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+9) {\n display: none;\n }\n }\n }\n\n .board-row-landscape, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+8) {\n display: none;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @medium) {\n .board-container {\n .board-content-container {\n .board-content {\n .board-row-poster, .board-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+8) {\n display: none;\n }\n }\n }\n\n .board-row-landscape, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+7) {\n display: none;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @small) {\n .board-container {\n .board-content-container {\n .board-content {\n .board-row-poster, .board-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+7) {\n display: none;\n }\n }\n }\n\n .board-row-landscape, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+6) {\n display: none;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xsmall) {\n .board-container {\n .board-content-container {\n .board-content {\n .board-row-poster, .board-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+6) {\n display: none;\n }\n }\n }\n\n .board-row-landscape, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+5) {\n display: none;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xxsmall) {\n .board-container {\n .board-content-container {\n .board-content {\n .board-row-poster, .board-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+5) {\n display: none;\n }\n }\n }\n\n .board-row-landscape, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+4) {\n display: none;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .board-container {\n position: relative;\n z-index: 0;\n\n .board-content-container {\n &:only-child {\n .board-content {\n height: 100%;\n }\n }\n \n .board-content {\n height: calc(100% - 4rem);\n\n .board-row {\n margin: 2rem 1rem;\n }\n\n .board-row-poster, .board-row-square, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+4) {\n display: none;\n }\n }\n }\n\n .board-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+3) {\n display: none;\n }\n }\n }\n }\n }\n \n .board-warning-container {\n position: absolute;\n left: 0;\n right: 0;\n bottom: var(--vertical-nav-bar-size);\n height: 4rem;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n multiselect-modal-container: modal-container;\n multiselect-option-container: option-container;\n multiselect-icon: icon;\n multiselect-label: label;\n}\n\n:import('~stremio/common/PaginationInput/styles.less') {\n pagination-prev-button-container: prev-button-container;\n pagination-next-button-container: next-button-container;\n pagination-button-icon: icon;\n pagination-label: label;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n selectable-inputs-modal-container: modal-dialog-container;\n selectable-inputs-modal-content: modal-dialog-content;\n}\n\n.discover-container {\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .discover-content {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row;\n\n .catalog-container {\n flex: 1;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n\n .selectable-inputs-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n padding: 1.5rem;\n overflow: visible;\n\n .select-input {\n flex: 0 1 15rem;\n height: 3.5rem;\n\n &:not(:first-child) {\n margin-left: 1.5rem;\n }\n\n &:nth-child(n+4) {\n display: none;\n\n &~.filter-container {\n display: flex;\n }\n }\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 7);\n overflow: auto;\n }\n }\n\n .filter-container {\n flex: none;\n display: none;\n align-items: center;\n justify-content: center;\n width: 3.5rem;\n height: 3.5rem;\n margin-left: 1.5rem;\n background-color: @color-background;\n\n .filter-icon {\n flex: none;\n width: 1.4rem;\n height: 1.4rem;\n fill: @color-secondaryvariant1-90;\n }\n }\n }\n\n .missing-addon-warning-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 0 1.5rem 1.5rem 1.5rem;\n\n .warning-label {\n flex: none;\n max-height: 2.4em;\n margin-bottom: 1rem;\n font-size: 1.4rem;\n text-align: center;\n color: @color-surface-light5-90;\n }\n\n .install-button {\n flex: none;\n min-width: 10rem;\n max-width: 15rem;\n padding: 1rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n .label {\n max-height: 2.4em;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n }\n\n .message-container {\n flex: 0 1 auto;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 0 1.5rem;\n overflow-y: auto;\n\n &:first-child {\n padding: 4rem;\n }\n\n .image {\n flex: none;\n width: 12rem;\n height: 12rem;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .message-label {\n flex: none;\n font-size: 2.5rem;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n\n .meta-items-container {\n flex: 1;\n align-self: stretch;\n display: grid;\n grid-auto-rows: max-content;\n align-items: center;\n grid-gap: 0.5rem;\n margin-right: 1.5rem;\n padding: 0 1.5rem;\n overflow-y: auto;\n\n .meta-item-placeholder {\n padding: 1rem;\n\n .poster-container {\n padding-bottom: calc(100% * var(--poster-shape-ratio));\n background-color: var(--color-placeholder-background);\n }\n\n .title-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 2.8rem;\n\n .title-label {\n flex: none;\n width: 60%;\n height: 1.2rem;\n background-color: var(--color-placeholder-background);\n }\n }\n }\n }\n }\n\n .meta-preview-container {\n flex: none;\n align-self: stretch;\n width: 28rem;\n background-color: @color-background-dark3;\n }\n }\n}\n\n.selectable-inputs-modal {\n .selectable-inputs-modal-container {\n overflow: visible;\n\n .selectable-inputs-modal-content {\n overflow: visible;\n\n .select-input {\n height: 3.5rem;\n\n &:not(:last-child) {\n margin-bottom: 1rem;\n }\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 4);\n overflow: auto;\n }\n }\n }\n }\n}\n\n.multiselect-modal-container {\n .multiselect-menu-container {\n width: 15rem;\n max-height: calc(3.2rem * 7);\n overflow-y: auto;\n scrollbar-color: @color-surface-light1 @color-surface-light4;\n\n ::-webkit-scrollbar-thumb {\n background-color: @color-surface-light1;\n\n &:hover {\n background-color: @color-surface-light2;\n }\n }\n\n ::-webkit-scrollbar-track {\n background-color: @color-surface-light4;\n }\n\n .multiselect-option-container {\n background: none;\n\n &:hover, &:focus {\n background-color: @color-surface-light3;\n }\n\n &:focus {\n outline-color: @color-background-dark2;\n }\n\n .multiselect-label {\n color: @color-background-dark2-90;\n }\n\n .multiselect-icon {\n fill: @color-background-dark2-90;\n }\n }\n }\n}\n\n@media only screen and (min-width: @xxlarge) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(10, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xxlarge) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(9, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xlarge) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(8, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @large) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(7, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @normal) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(6, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @medium) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(5, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @small) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(4, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xsmall) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(5, 1fr);\n margin-right: 0;\n }\n }\n\n .meta-preview-container {\n display: none;\n }\n }\n }\n}\n\n@media only screen and (max-width: @xxsmall) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(4, 1fr);\n margin-right: 0;\n }\n }\n\n .meta-preview-container {\n display: none;\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .selectable-inputs-container {\n justify-content: space-between;\n\n .select-input {\n &:nth-child(n+3) {\n display: none;\n\n &~.filter-container {\n display: flex;\n }\n }\n }\n }\n\n .meta-items-container {\n grid-template-columns: repeat(3, 1fr);\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.not-found-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .nav-bar {\n flex: none;\n align-self: stretch;\n }\n\n .not-found-content {\n flex: 1;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n .not-found-image {\n flex: none;\n width: 12rem;\n height: 12rem;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .not-found-label {\n flex: none;\n font-size: 2.5rem;\n max-height: 3.6em;\n max-width: 60%;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n}\n\n:import('~stremio/common/PaginationInput/styles.less') {\n pagination-prev-button-container: prev-button-container;\n pagination-next-button-container: next-button-container;\n pagination-button-icon: icon;\n pagination-label: label;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n selectable-inputs-modal-container: modal-dialog-container;\n selectable-inputs-modal-content: modal-dialog-content;\n}\n\n.library-container {\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .library-content {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n\n .selectable-inputs-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n padding: 1.5rem;\n overflow: visible;\n\n .select-input-container {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: 15rem;\n height: 3.5rem;\n\n &:not(:last-child) {\n margin-right: 1.5rem;\n }\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 7);\n overflow: auto;\n }\n }\n\n .filter-container {\n flex: none;\n display: none;\n align-items: center;\n justify-content: center;\n width: 3.5rem;\n height: 3.5rem;\n background-color: @color-background;\n\n .filter-icon {\n flex: none;\n width: 1.4rem;\n height: 1.4rem;\n fill: @color-secondaryvariant1-90;\n }\n }\n\n .spacing {\n flex: 1;\n }\n\n .pagination-input {\n flex: none;\n height: 3.5rem;\n margin-left: 1.5rem;\n\n &.pagination-input-placeholder {\n pointer-events: none;\n\n .pagination-prev-button-container, .pagination-next-button-container {\n .pagination-button-icon {\n fill: @color-surface-dark5-90;\n }\n }\n\n .pagination-label {\n color: @color-surface-dark5-90;\n }\n }\n\n .pagination-prev-button-container, .pagination-next-button-container {\n width: 3.5rem;\n height: 3.5rem;\n\n .pagination-button-icon {\n width: 1rem;\n height: 1rem;\n }\n }\n\n .pagination-label {\n width: 3rem;\n }\n }\n }\n\n .message-container {\n flex: 0 1 auto;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 0 1.5rem;\n overflow-y: auto;\n\n &:first-child {\n padding: 4rem;\n }\n\n &.no-user-message-container {\n .login-button-container {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n width: 20rem;\n min-height: 4rem;\n padding: 0.5rem 1rem;\n margin-bottom: 1rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 4.8em;\n font-size: 1.2rem;\n font-weight: 700;\n color: @color-surface-light5-90;\n text-align: center;\n }\n }\n }\n\n .image {\n flex: none;\n width: 12rem;\n height: 12rem;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .message-label {\n flex: none;\n font-size: 2.5rem;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n\n .meta-items-container {\n flex: 1;\n align-self: stretch;\n display: grid;\n grid-auto-rows: max-content;\n align-items: center;\n grid-gap: 0.5rem;\n padding: 0 1.5rem;\n overflow-y: auto;\n }\n }\n}\n\n.selectable-inputs-modal {\n .selectable-inputs-modal-container {\n overflow: visible;\n\n .selectable-inputs-modal-content {\n overflow: visible;\n\n .select-input-container {\n height: 3.5rem;\n\n &:not(:last-child) {\n margin-bottom: 1rem;\n }\n }\n }\n }\n}\n\n@media only screen and (min-width: @large) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(10, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @large) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(9, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @normal) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(8, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @medium) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(7, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @small) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(6, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @xsmall) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(5, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @xxsmall) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(4, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .library-container {\n .library-content {\n .selectable-inputs-container {\n justify-content: space-between;\n\n .select-input-container {\n display: none;\n }\n\n .spacing {\n display: none;\n }\n\n .pagination-input {\n margin-left: 0;\n }\n\n .filter-container {\n display: flex;\n }\n }\n\n .meta-items-container {\n grid-template-columns: repeat(3, 1fr);\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n:import('~stremio/common/PlayIconCircleCentered/styles.less') {\n play-icon-circle-centered-background: background;\n play-icon-circle-centered-icon: icon;\n}\n\n.stream-placeholder-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0.5rem 1rem;\n\n .addon-container {\n flex: none;\n\n .addon-name {\n width: 5rem;\n height: 2rem;\n background-color: var(--color-placeholder-background);\n }\n }\n\n .info-container {\n flex: 1;\n margin: 0.5rem 1rem;\n\n .description-container {\n height: 1.2rem;\n background-color: var(--color-placeholder-background);\n\n &:nth-child(1) {\n width: 80%;\n }\n\n &:nth-child(2) {\n width: 40%;\n margin-top: 0.5rem;\n }\n }\n }\n\n .play-icon {\n flex: none;\n width: 3.5rem;\n height: 5rem;\n\n .play-icon-circle-centered-background {\n fill: none;\n }\n\n .play-icon-circle-centered-icon {\n fill: var(--color-placeholder-background);\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/PlayIconCircleCentered/styles.less') {\n play-icon-circle-centered-background: background;\n play-icon-circle-centered-icon: icon;\n}\n\n.stream-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-wrap: wrap;\n padding: 0.5rem 1rem;\n\n &:hover, &:focus {\n background-color: @color-background;\n }\n\n &:hover, &:focus, &:global(.selected) {\n .play-icon {\n .play-icon-circle-centered-background {\n fill: @color-accent4-90;\n }\n\n .play-icon-circle-centered-icon {\n fill: @color-surface-light5-90;\n }\n }\n }\n\n .thumbnail-container, .addon-name-container {\n flex: none;\n\n .thumbnail {\n display: block;\n width: 5rem;\n height: 5rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .placeholder-icon {\n display: block;\n width: 5rem;\n height: 5rem;\n padding: 0.5rem;\n fill: @color-secondaryvariant1-light3-90;\n }\n\n .addon-name {\n width: 5rem;\n max-height: 3.6em;\n font-size: 1.1rem;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n\n .info-container {\n flex: 1;\n max-height: 3.6em;\n margin: 0.5rem 1rem;\n white-space: pre;\n color: @color-surface-light5-90;\n }\n\n .play-icon {\n flex: none;\n width: 3.5rem;\n height: 5rem;\n\n .play-icon-circle-centered-background {\n fill: none;\n }\n\n .play-icon-circle-centered-icon {\n fill: @color-surface-dark5-90;\n }\n }\n\n .progress-bar-container {\n flex: 0 0 100%;\n background-color: @color-background-light2;\n\n .progress-bar {\n height: 0.5rem;\n background-color: @color-primaryvariant1;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .stream-container {\n &:hover, &focus {\n background-color: @color-surface-light5-20;\n }\n\n .thumbnail-container, .addon-name-container {\n .addon-name {\n font-weight: 500;\n }\n }\n\n .play-icon {\n .play-icon-circle-centered-icon {\n fill: @color-surface-light5-90;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n multiselect-label: label;\n multiselect-icon: icon;\n}\n\n.streams-list-container {\n display: flex;\n flex-direction: column;\n\n .message-container {\n flex: 0 1 auto;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 1rem 1rem 0;\n overflow-y: auto;\n\n .image {\n flex: none;\n width: 10rem;\n height: 10rem;\n max-width: 100%;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .label {\n flex: none;\n font-size: 1.4rem;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n\n .select-input-container {\n flex: 0 0 auto;\n height: 3.5rem;\n margin: 1em 1em 0 1em;\n background: none;\n\n &:hover, &:focus, &:global(.active) {\n background-color: @color-background;\n }\n\n & >.multiselect-label {\n color: @color-surface-light5-90;\n }\n\n & >.multiselect-icon {\n fill: @color-surface-light5-90;\n }\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 7);\n overflow: auto;\n }\n }\n\n .streams-container {\n flex: 0 1 auto;\n align-self: stretch;\n margin-top: 1rem;\n overflow-y: auto;\n }\n\n .install-button-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n margin: 1rem;\n padding: 1.5rem 1rem;\n background-color: @color-accent3;\n\n &:hover, &:focus {\n background-color: @color-accent3-light1;\n }\n\n .icon {\n flex: none;\n width: 2rem;\n height: 2rem;\n margin-right: 1rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex: 0 1 auto;\n font-size: 1.5rem;\n font-weight: 500;\n max-height: 3.6em;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .streams-list-container {\n overflow: visible;\n\n .streams-container {\n margin-top: 0;\n scrollbar-color: @color-surface-light5-20 transparent;\n\n &::-webkit-scrollbar-thumb {\n background-color: @color-surface-light5-20;\n }\n\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.seasons-bar-placeholder-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 1rem;\n\n .prev-season-button, .next-season-button {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 6.5rem;\n height: 3.5rem;\n padding: 0.5rem;\n\n &>:first-child {\n margin-right: 0.5rem;\n }\n\n .icon {\n flex: none;\n display: block;\n width: 1.5rem;\n height: 1.5rem;\n fill: var(--color-placeholder-background);\n }\n\n .label {\n flex: 1;\n max-height: 1.2em;\n font-weight: 500;\n text-align: center;\n color: var(--color-placeholder-text);\n }\n }\n\n .seasons-popup-label-container {\n flex: 0 1 auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n margin: 0 1rem;\n\n .seasons-popup-label {\n max-height: 1.2em;\n font-weight: 500;\n color: var(--color-placeholder-text);\n }\n\n .seasons-popup-icon {\n flex: none;\n width: 1rem;\n height: 1rem;\n margin-left: 1rem;\n fill: var(--color-placeholder-background);\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n multiselect-label: label;\n multiselect-icon: icon;\n}\n\n.seasons-bar-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 1rem;\n overflow: visible;\n\n .prev-season-button, .next-season-button {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 6.5rem;\n height: 3.5rem;\n padding: 0.5rem;\n\n &:hover, &:focus {\n .label {\n color: @color-surface-light2-90;\n }\n\n .icon {\n fill: @color-surface-light2-90;\n }\n }\n\n &:focus {\n background-color: @color-surface-light5-10;\n }\n\n &>:first-child {\n margin-right: 0.5rem;\n }\n\n .label {\n flex: 1;\n max-height: 1.2em;\n font-weight: 500;\n text-align: center;\n color: @color-surface-90;\n }\n\n .icon {\n flex: none;\n width: 1.5rem;\n height: 1.5rem;\n fill: @color-surface-90;\n }\n }\n\n .seasons-popup-label-container {\n flex: 0 1 auto;\n height: 3.5rem;\n background: none;\n\n &:hover, &:focus, &:global(.active) {\n background-color: @color-background;\n }\n\n &>.multiselect-label {\n color: @color-surface-light5-90;\n }\n\n &>.multiselect-icon {\n fill: @color-surface-light5-90;\n }\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 7);\n overflow: auto;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .seasons-bar-container {\n padding-top: 0;\n\n .seasons-popup-label-container {\n .multiselect-menu-container {\n max-height: calc(3.2rem * 3);\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.video-placeholder-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0.5rem 1rem;\n\n .info-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n height: 3rem;\n margin: 0.5rem 1rem;\n\n .name-container {\n width: 80%;\n height: 1.2rem;\n background: var(--color-placeholder-background);\n }\n\n .released-container {\n height: 1rem;\n background: var(--color-placeholder-background);\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Popup/styles.less') {\n context-menu-container: menu-container;\n menu-direction-top-left: menu-direction-top-left;\n menu-direction-bottom-left: menu-direction-bottom-left;\n menu-direction-top-right: menu-direction-top-right;\n menu-direction-bottom-right: menu-direction-bottom-right;\n}\n\n.video-container {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n padding: 0.5rem 1rem;\n\n &:hover,\n &:focus,\n &:global(.active) {\n background-color: @color-background;\n }\n\n .thumbnail-container {\n flex: none;\n\n .thumbnail {\n pointer-events: none;\n display: block;\n width: 7.5rem;\n height: 5rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .placeholder-icon {\n display: block;\n width: 7.5rem;\n height: 5rem;\n padding: 1rem;\n fill: @color-surface-light5;\n background-color: @color-surface-light5-40;\n opacity: 0.25;\n }\n }\n\n .info-container {\n flex: 1;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n margin: 0.5rem 1rem;\n\n &:first-child {\n height: 3rem;\n\n .title-container {\n max-height: 1.2em;\n }\n }\n\n .title-container {\n max-height: 2.4em;\n color: @color-surface-light5-90;\n }\n\n .flex-row-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-end;\n\n .released-container {\n flex: 1;\n margin-right: 0.5rem;\n padding: 0.2rem 0;\n font-size: 0.8rem;\n font-weight: 500;\n white-space: nowrap;\n text-overflow: ellipsis;\n text-transform: uppercase;\n color: @color-surface-dark5-90;\n }\n\n .upcoming-watched-container {\n flex: 0 1 auto;\n display: flex;\n flex-direction: row;\n\n &>:nth-child(2) {\n margin-left: 0.5rem;\n }\n\n .upcoming-container,\n .watched-container {\n flex: none;\n padding: 0.2rem 0.4rem;\n max-width: 10rem;\n\n &:not(:only-child) {\n max-width: 5rem;\n }\n\n .flag-label {\n font-size: 0.8rem;\n font-weight: 500;\n white-space: nowrap;\n text-overflow: ellipsis;\n text-transform: uppercase;\n color: @color-background-90;\n }\n }\n\n .upcoming-container {\n background-color: @color-accent4;\n }\n\n .watched-container {\n background-color: @color-accent5;\n }\n }\n }\n }\n\n .progress-bar-container {\n flex: 0 0 100%;\n background-color: @color-background-light2;\n\n .progress-bar {\n height: 0.5rem;\n background-color: @color-primaryvariant1;\n }\n }\n\n .context-menu-container {\n max-width: calc(90% - 1.5rem);\n\n .context-menu-content {\n --spatial-navigation-contain: contain;\n background-color: @color-background-dark1;\n\n .context-menu-option-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0.5rem 1rem;\n\n &:hover,\n &:focus {\n background-color: @color-background;\n }\n\n .context-menu-option-label {\n font-size: 1rem;\n max-height: 2.4em;\n color: @color-surface-light5-90;\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .video-container {\n\n &:hover,\n &:focus,\n &:global(.active) {\n background-color: @color-surface-light5-20;\n }\n\n .context-menu-container {\n\n &.menu-direction-top-left,\n &.menu-direction-bottom-left {\n right: 1.5rem;\n }\n\n &.menu-direction-top-right,\n &.menu-direction-bottom-right {\n left: 1.5rem;\n }\n\n &.menu-direction-top-left,\n &.menu-direction-top-right {\n bottom: 90%;\n }\n\n &.menu-direction-bottom-left,\n &.menu-direction-bottom-right {\n top: 90%;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.videos-list-container {\n display: flex;\n flex-direction: column;\n\n .message-container {\n flex: 1;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 2rem;\n overflow-y: auto;\n\n .image {\n flex: none;\n width: 10rem;\n height: 10rem;\n max-width: 100%;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .label {\n flex: none;\n font-size: 1.4rem;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n\n .seasons-bar {\n flex: none;\n align-self: stretch;\n }\n\n .search-bar {\n flex: none;\n align-self: stretch;\n margin: 0 1.5rem 1rem 1.5rem;\n\n &:first-child {\n margin-top: 1rem;\n }\n }\n\n .videos-container {\n flex: 1;\n align-self: stretch;\n overflow-y: auto;\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .videos-list-container {\n overflow: visible;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/MetaPreview/styles.less') {\n meta-info-container: meta-info-container;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n modal-dialog-container: modal-dialog-container;\n title-modal-container: title-container;\n}\n\n.metadetails-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .nav-bar {\n flex: none;\n align-self: stretch;\n }\n\n .metadetails-content {\n flex: 1;\n align-self: stretch;\n position: relative;\n z-index: 0;\n display: flex;\n flex-direction: row;\n\n .vertical-nav-bar {\n --vertical-nav-bar-size: 6rem;\n flex: none;\n }\n\n .background-image-layer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n\n &::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n background: @color-background-dark2-70;\n content: \"\";\n }\n\n .background-image {\n pointer-events: none; \n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: top left;\n opacity: 0.9;\n }\n }\n\n .meta-message-container {\n flex: 0 1 30rem;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 2rem;\n\n .image {\n flex: none;\n width: 12rem;\n height: 12rem;\n max-width: 100%;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .message-label {\n flex: none;\n align-self: stretch;\n font-size: 2rem;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n\n .meta-preview {\n flex: 0 1 40rem;\n align-self: stretch;\n }\n\n .spacing {\n flex: 1;\n }\n\n .videos-list, .streams-list {\n flex: 0 0 26.5rem;\n align-self: stretch;\n background-color: @color-background-dark5-70;\n }\n }\n}\n\n.meta-extension-modal-container {\n .modal-dialog-container {\n width: 80%;\n height: 80%;\n\n .title-modal-container {\n max-height: 1.2em;\n }\n\n .meta-extension-modal-iframe {\n width: 100%;\n height: 100%;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .metadetails-container {\n position: relative;\n z-index: 0;\n\n .metadetails-content {\n display: block;\n position: static;\n z-index: initial;\n overflow-y: auto;\n\n .spacing {\n display: none;\n }\n\n .background-image-layer {\n top: var(--horizontal-nav-bar-size);\n }\n\n .videos-list, .streams-list {\n background-color: transparent;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/MetaRow/styles.less') {\n meta-item: meta-item;\n}\n\n:import('~stremio/common/MetaRow/MetaRowPlaceholder/styles.less') {\n meta-item-placeholder: meta-item;\n}\n\n.search-container {\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .search-content {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n\n .search-row {\n margin: 4rem 2rem;\n }\n\n .search-hints-container {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: flex-start;\n align-content: flex-start;\n flex-wrap: wrap;\n padding: 4rem;\n\n .search-hint-container {\n flex: 0 0 50%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 0 2rem;\n margin-bottom: 4rem;\n\n .icon {\n flex: none;\n width: 6rem;\n height: 6rem;\n margin-bottom: 2rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n font-size: 1.2rem;\n color: @color-surface-light5-90;\n text-align: center;\n }\n }\n }\n\n .message-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 4rem;\n\n .image {\n flex: none;\n width: 12rem;\n height: 12rem;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .message-label {\n flex: 0 1 auto;\n font-size: 2.5rem;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n }\n}\n\n@media only screen and (max-width: @large) {\n .search-container {\n .search-content {\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+10) {\n display: none;\n }\n }\n }\n\n .search-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+9) {\n display: none;\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @normal) {\n .search-container {\n .search-content {\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+9) {\n display: none;\n }\n }\n }\n\n .search-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+8) {\n display: none;\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @medium) {\n .search-container {\n .search-content {\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+8) {\n display: none;\n }\n }\n }\n\n .search-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+7) {\n display: none;\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @small) {\n .search-container {\n .search-content {\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+7) {\n display: none;\n }\n }\n }\n\n .search-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+6) {\n display: none;\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xsmall) {\n .search-container {\n .search-content {\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+6) {\n display: none;\n }\n }\n }\n\n .search-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+5) {\n display: none;\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xxsmall) {\n .search-container {\n .search-content {\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+5) {\n display: none;\n }\n }\n }\n\n .search-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+4) {\n display: none;\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .search-container {\n .search-content {\n .search-row {\n margin: 2rem 1rem;\n }\n\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+4) {\n display: none;\n }\n }\n }\n\n .search-hints-container {\n padding: 4rem 2rem;\n\n .search-hint-container {\n padding: 0 1.5rem;\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Checkbox/styles.less') {\n checkbox-icon: icon;\n}\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n multiselect-label: label;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n configure-server-url-modal-content: modal-dialog-content;\n cancel-button-label: label;\n}\n\n.settings-container {\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .settings-content {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row;\n\n .side-menu-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n width: 20rem;\n padding: 3rem;\n\n .side-menu-button {\n flex: none;\n align-self: stretch;\n padding: 1rem;\n font-size: 1.1rem;\n color: @color-secondaryvariant1-90;\n\n &.selected {\n background-color: @color-background;\n color: @color-surface-light5-90;\n }\n\n &:hover {\n background-color: @color-background-light1;\n }\n }\n\n .spacing {\n flex: 1;\n }\n\n .version-info-label {\n flex: 0 1 auto;\n margin: 0.5rem 0;\n color: @color-secondaryvariant1-90;\n }\n }\n\n .sections-container {\n flex: 1;\n align-self: stretch;\n padding: 0 2rem;\n overflow-y: auto;\n\n .section-container {\n display: flex;\n flex-direction: column;\n padding: 3rem 0;\n overflow: visible;\n\n &:not(:last-child) {\n border-bottom: thin solid @color-secondaryvariant1-90;\n }\n\n .section-title {\n flex: none;\n align-self: stretch;\n font-size: 1.8rem;\n line-height: 3.4rem;\n margin-bottom: 1rem;\n color: @color-surface-light5-90;\n }\n\n .option-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n align-items: center;\n max-width: 35rem;\n margin-bottom: 2rem;\n overflow: visible;\n\n &:last-child {\n margin-bottom: 0;\n }\n\n &.user-info-option-container {\n height: 6rem;\n\n .avatar-container {\n flex: none;\n align-self: stretch;\n width: 6rem;\n margin-right: 1rem;\n border-radius: 50%;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n background-origin: content-box;\n background-clip: content-box;\n opacity: 0.9;\n }\n\n .email-logout-container {\n flex: 1;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n padding: 1rem 0;\n\n .email-label-container, .logout-button-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n\n .email-label-container {\n flex: 1 0 auto;\n\n .email-label {\n flex: 1;\n font-size: 1.1rem;\n max-height: 2.4em;\n color: @color-surface-light5-90;\n }\n }\n\n .logout-button-container {\n flex: 0 1 50%;\n\n &:hover, &:focus {\n outline: none;\n\n .logout-label {\n color: @color-surface-light5-90;\n text-decoration: underline;\n }\n }\n\n .logout-label {\n flex: 1;\n max-height: 1.2em;\n color: @color-surface-90;\n }\n }\n }\n\n .user-panel-container {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 10rem;\n height: 3.5rem;\n margin-left: 1rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n .user-panel-label {\n flex: 1;\n max-height: 2.4em;\n padding: 0 0.5rem;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n }\n\n .option-name-container, .option-input-container {\n flex: 1 1 50%;\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .icon {\n flex: none;\n width: 1.5rem;\n height: 1.5rem;\n margin-right: 0.5rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n line-height: 1.5rem;\n color: @color-surface-light5-90;\n }\n }\n\n .option-name-container {\n justify-content: flex-start;\n padding: 1rem 1rem 1rem 0;\n margin-right: 2rem;\n }\n\n .option-input-container {\n padding: 1rem;\n\n &.button-container {\n justify-content: center;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n .label {\n font-weight: 500;\n }\n }\n\n &.multiselect-container {\n >.multiselect-label {\n line-height: 1.5rem;\n max-height: 1.5rem;\n }\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 7);\n overflow: auto;\n }\n }\n\n &.link-container {\n flex: 0 1 auto;\n padding: 1rem 0;\n\n &:hover {\n .label {\n text-decoration: underline;\n }\n }\n }\n\n &.checkbox-container {\n justify-content: center;\n\n .checkbox-icon {\n width: 1.5rem;\n height: 1.5rem;\n }\n }\n\n &.color-input-container {\n padding: 1.75rem 1rem;\n }\n\n &.info-container {\n justify-content: center;\n\n &.selectable {\n user-select: text;\n\n .label {\n user-select: text;\n }\n }\n }\n\n &.configure-input-container {\n padding: 0;\n\n .label {\n flex-grow: 1;\n white-space: pre;\n text-overflow: ellipsis;\n padding: 0 1rem;\n }\n\n .configure-button-container {\n flex: none;\n width: 3rem;\n height: 3rem;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n .icon {\n flex: none;\n width: 1rem;\n height: 1rem;\n margin: 0;\n fill: @color-surface-light5-90;\n }\n }\n }\n\n &.shortcut-container {\n justify-content: center;\n padding: 0;\n overflow: visible;\n\n kbd {\n flex: 0 1 auto;\n height: 2.5rem;\n min-width: 2.5rem;\n line-height: 2.5rem;\n padding: 0 1rem;\n font-weight: 500;\n color: @color-secondaryvariant1-90;\n border-radius: 0.25em;\n box-shadow: 0 4px 0 1px @color-background-40;\n background-color: @color-background;\n }\n\n .label {\n margin: 0 1rem;\n white-space: nowrap;\n color: @color-secondaryvariant1-90;\n }\n }\n }\n }\n }\n }\n }\n}\n\n.configure-server-url-modal-container {\n .configure-server-url-modal-content {\n width: 30rem;\n\n .server-url-input {\n width: 100%;\n padding: 1rem;\n color: @color-surface-dark5;\n outline: var(--focus-outline-size) solid @color-surface-light2;\n outline-offset: calc(-1 * var(--focus-outline-size));\n\n &:hover {\n outline-color: @color-surface-light4;\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n }\n }\n\n .cancel-button {\n background-color: transparent;\n\n &:hover {\n background-color: @color-surface-light3;\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n\n .cancel-button-label {\n color: @color-surface-dark2;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .settings-container {\n .settings-content {\n flex-direction: column-reverse;\n\n .side-menu-container {\n width: 100%;\n padding: 0 1rem;\n\n .side-menu-button {\n display: none;\n }\n\n .version-info-label {\n width: 100%;\n text-align: end;\n }\n }\n }\n }\n\n .configure-server-url-modal-container {\n .configure-server-url-modal-content {\n width: auto;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.buffering-loader-container {\n display: flex;\n align-items: center;\n justify-content: center;\n\n .buffering-loader {\n flex: none;\n width: 17rem;\n height: 17rem;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n:import('~stremio/common/Slider/styles.less') {\n slider-track-after: track-after;\n slider-thumb: thumb;\n}\n\n.seek-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n\n &:hover, &:global(.active) {\n .slider:not(:global(.disabled)) {\n .slider-thumb {\n fill: @color-surface-light5;\n }\n }\n }\n\n &:hover {\n .slider:not(:global(.disabled)) {\n .slider-track-after {\n transition: background-color 0s 100ms;\n }\n\n .slider-thumb {\n transition: fill 0s 100ms;\n }\n }\n }\n\n .label {\n flex: none;\n max-width: 5rem;\n white-space: nowrap;\n text-overflow: ellipsis;\n direction: rtl;\n text-align: left;\n color: @color-surface-light5;\n }\n\n .slider {\n flex: 1;\n align-self: stretch;\n margin: 0 var(--thumb-size);\n\n .slider-thumb {\n fill: transparent;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n:import('~stremio/common/Slider/styles.less') {\n slider-track: track;\n slider-track-after: track-after;\n}\n\n.volume-slider:not(:global(.disabled)) {\n .slider-track {\n background-color: @color-surface-dark5;\n }\n\n .slider-track-after {\n background-color: @color-surface-light3;\n }\n\n &:hover, &:global(.active) {\n .slider-track-after {\n background-color: @color-surface-light5;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.control-bar-container {\n padding: 0 1.5rem;\n\n .seek-bar {\n --track-size: 0.5rem;\n --thumb-size: 1.5rem;\n\n height: 2.5rem;\n }\n\n .control-bar-buttons-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .control-bar-button {\n flex: none;\n width: 4rem;\n height: 4rem;\n display: flex;\n justify-content: center;\n align-items: center;\n\n &:global(.disabled) {\n .icon {\n fill: @color-surface;\n }\n }\n\n .icon {\n flex: none;\n width: 3rem;\n height: 2rem;\n fill: @color-surface-light5;\n }\n }\n\n .volume-slider {\n --track-size: 0.4rem;\n --thumb-size: 1.3rem;\n\n flex: 0 1 16rem;\n min-width: 10rem;\n height: 4rem;\n margin: 0 1rem;\n }\n\n .spacing {\n flex: 1;\n }\n\n .control-bar-buttons-menu-button {\n flex: none;\n width: 4rem;\n height: 4rem;\n display: none;\n justify-content: center;\n align-items: center;\n\n .icon {\n flex: none;\n width: 3rem;\n height: 2rem;\n fill: @color-surface-light5;\n }\n }\n\n .control-bar-buttons-menu-container {\n flex: none;\n display: flex;\n flex-direction: row;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .control-bar-container {\n padding: 0;\n\n .seek-bar {\n margin: 0 1.5rem;\n }\n\n .control-bar-buttons-container {\n position: relative;\n padding: 0 0.5rem;\n overflow: visible;\n\n .volume-slider {\n display: none;\n }\n\n .control-bar-buttons-menu-button {\n display: flex;\n }\n\n .control-bar-buttons-menu-container {\n position: absolute;\n right: 0.15rem;\n bottom: 4.5rem;\n flex-direction: column;\n padding: 0.5rem;\n background-color: @color-background-dark1;\n box-shadow: 0 1.35rem 2.7rem @color-background-dark5-40,\n 0 1.1rem 0.85rem @color-background-dark5-20;\n\n &:not(:global(.open)) {\n display: none;\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.next-video-popup-container {\n display: flex;\n flex-direction: row;\n height: 16rem;\n width: 40rem;\n animation: slide-fade-in 0.5s ease-in;\n\n @keyframes slide-fade-in {\n 0% {\n opacity: 0;\n transform: translateX(calc(40rem + 2rem));\n }\n\n 100% {\n opacity: 1;\n transform: translateX(0);\n }\n }\n\n .poster-container {\n flex: 1 1 40%;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: @color-background;\n\n .poster-image {\n flex: none;\n width: 100%;\n height: 100%;\n object-position: center;\n object-fit: cover;\n }\n\n .placeholder-icon {\n flex: none;\n width: 80%;\n height: 50%;\n fill: @color-background-light3-90;\n }\n }\n\n .info-container {\n flex: 1 1 70%;\n display: flex;\n flex-direction: column;\n\n .details-container {\n flex: auto;\n padding: 1.5rem 1.5rem;\n\n .name {\n flex: none;\n align-self: stretch;\n max-height: 2.4em;\n font-weight: 600;\n margin-bottom: 0.5rem;\n color: @color-surface-light5-90;\n }\n\n .description {\n color: @color-surface-light5-50;\n }\n }\n\n .buttons-container {\n display: flex;\n flex-direction: row;\n\n .spacing {\n flex: 0 0 50%;\n }\n\n .button-container {\n flex: 0 0 50%;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n height: 3.5rem;\n\n &.play-button {\n background-color: @color-accent3;\n\n .icon {\n fill: @color-surface-light5-90;\n }\n\n .label {\n color: @color-surface-light5-90;\n }\n\n &:hover, &:focus {\n background-color: @color-accent3-light1;\n }\n }\n\n .icon {\n flex: none;\n width: 1.4rem;\n height: 1.4rem;\n margin-right: 1rem;\n fill: @color-secondaryvariant1-90;\n }\n\n .label {\n flex: none;\n max-height: 2.4em;\n font-size: 1.1rem;\n font-weight: 500;\n color: @color-secondaryvariant1-90;\n }\n\n &:hover, &:focus {\n background-color: @color-background-light2;\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.statistics-menu-container {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n width: 30rem;\n padding: 1.5rem;\n\n .title {\n flex: none;\n font-weight: 600;\n color: @color-surface-light5-90;\n }\n\n .label {\n flex: none;\n font-weight: 500;\n color: @color-surface-light5-50;\n }\n\n .value {\n flex: none;\n font-weight: 500;\n color: @color-surface-light5-90;\n }\n\n .stats {\n flex: auto;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n gap: 1rem;\n\n .stat {\n flex: auto;\n display: flex;\n flex-direction: row;\n gap: 0.5rem;\n }\n }\n\n .info-hash {\n flex: auto;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.info-menu-container {\n width: 30rem;\n\n .stream {\n pointer-events: none;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.option-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 4rem;\n\n .icon {\n flex: none;\n width: 1.4rem;\n height: 1.4rem;\n margin: 1.3rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex: 1;\n max-height: 2.4em;\n font-weight: 400;\n color: @color-surface-light5-90;\n }\n\n &:hover {\n background-color: @color-background-light2;\n }\n\n &:global(.disabled) {\n opacity: 0.5;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.options-menu-container {\n width: 15rem;\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.videos-menu-container {\n width: 30rem;\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.discrete-input-container {\n &:global(.disabled) {\n .header {\n color: @color-surface-90;\n }\n\n .input-container {\n opacity: 0.4;\n }\n }\n\n .header {\n max-height: 2.4em;\n margin-bottom: 0.5rem;\n color: @color-surface-light5-90;\n }\n\n .input-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n background: @color-background;\n\n .button-container {\n flex: none;\n width: 3rem;\n height: 3rem;\n padding: 1rem;\n background-color: @color-background-light2;\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n fill: @color-surface-light5-90;\n }\n }\n\n .option-label {\n flex: 1;\n max-height: 2.4em;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.subtitles-menu-container {\n height: 23rem;\n display: flex;\n flex-direction: row;\n\n .languages-container, .variants-container, .subtitles-settings-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n\n .languages-header, .variants-header, .settings-header {\n flex: none;\n align-self: stretch;\n max-height: 2.4em;\n margin: 1rem;\n font-weight: 600;\n color: @color-surface-light5-90;\n }\n\n .languages-list, .variants-list {\n flex: 1;\n align-self: stretch;\n overflow-y: auto;\n\n .language-option, .variant-option {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 1rem 1.5rem;\n\n &:global(.selected), &:hover {\n background-color: @color-background;\n }\n\n .language-label, .variant-label {\n flex: 1;\n max-height: 2.4em;\n font-size: 1.1rem;\n color: @color-surface-light5-90;\n }\n\n .icon {\n flex: none;\n width: 0.5rem;\n height: 0.5rem;\n border-radius: 100%;\n margin-left: 1rem;\n background-color: @color-accent3-90;\n }\n }\n }\n }\n\n .languages-container {\n width: 12rem;\n }\n\n .variants-container {\n width: 12rem;\n\n .no-variants-container {\n flex: 1;\n align-self: stretch;\n padding: 1rem;\n\n .no-variants-label {\n max-height: 4.8em;\n font-weight: 500;\n color: @color-surface-90;\n }\n }\n }\n\n .subtitles-settings-container {\n width: 16rem;\n\n .spacing {\n flex: 1;\n }\n\n .discrete-input {\n margin: 0 1.5rem 1rem;\n }\n\n .advanced-button {\n flex: none;\n align-self: flex-end;\n max-width: calc(100% - 3rem);\n margin: 0 1.5rem 1rem;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: @color-surface-light5-90;\n\n &:hover {\n text-decoration: underline;\n }\n\n &:global(.disabled) {\n color: @color-surface-90;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.option {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0 1.5em;\n \n &:global(.selected) {\n background-color: @color-background;\n\n .icon {\n display: block;\n }\n }\n\n &:hover, &:focus {\n background-color: @color-background-light2;\n }\n\n .label {\n flex: 1;\n font-weight: 400;\n color: @color-surface-light5-90;\n }\n\n .icon {\n flex: none;\n display: none;\n width: 0.5rem;\n height: 0.5rem;\n border-radius: 100%;\n margin-left: 1rem;\n background-color: @color-accent3-90;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.speed-menu-container {\n width: 12rem;\n overflow: visible !important;\n\n .title {\n flex: none;\n align-self: stretch;\n max-height: 2.4em;\n font-weight: 600;\n color: @color-surface-light5-90;\n margin: 1rem;\n }\n\n .options-container {\n flex: 0 1 auto;\n max-height: calc(3.2rem * 8);\n overflow-y: auto;\n \n .option {\n height: 3.2rem;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.video-container {\n .video {\n width: 100%;\n height: 100%;\n\n * {\n font-size: inherit;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n:import('~stremio/common/Slider/styles.less') {\n active-slider-within: active-slider-within;\n}\n\n:import('~stremio/common/NavBar/HorizontalNavBar/styles.less') {\n nav-bar-button-container: button-container;\n nav-bar-title: title;\n nav-bar-icon: icon;\n}\n\nhtml:not(.active-slider-within) {\n .player-container.immersed {\n cursor: none;\n\n .nav-bar-layer, .control-bar-layer, .menu-layer {\n opacity: 0;\n transition: opacity 200ms;\n }\n }\n}\n\n.player-container {\n position: relative;\n z-index: 0;\n width: 100%;\n height: 100%;\n background-color: @color-background-dark5;\n\n .layer {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 0;\n\n &.error-layer {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background-color: @color-background-dark5;\n\n .error-label {\n flex: 0 1 auto;\n padding: 0 8rem;\n max-height: 4.8em;\n font-size: 2rem;\n color: @color-surface-light5-90;\n text-align: center;\n }\n\n .error-sub {\n flex: 0 1 auto;\n padding: 0 2rem;\n max-height: 4.8em;\n font-size: 1.3rem;\n margin-top: 0.8rem;\n color: @color-surface-light5-90;\n text-align: center; \n }\n\n .playlist-button {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 3.5rem;\n max-width: 16rem;\n margin-top: 1.5rem;\n padding: 0.5rem 1rem;\n background-color: @color-accent3;\n\n &:hover, &:focus {\n background-color: @color-accent3-light1;\n }\n\n .icon {\n flex: none;\n width: 1.5rem;\n height: 1.5rem;\n margin-right: 1rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex: 1;\n max-height: 2.4em;\n font-size: 1.1rem;\n font-weight: 500;\n color: @color-surface-light5-90;\n text-align: center;\n }\n }\n }\n\n &.nav-bar-layer {\n bottom: initial;\n background: transparent;\n overflow: visible;\n\n &::before {\n position: absolute;\n right: 0;\n top: 0;\n left: 0;\n z-index: -1;\n box-shadow: 0 0 8rem 6rem @color-background-dark5;\n content: \"\";\n }\n\n .nav-bar-button-container {\n &:hover {\n background: transparent;\n }\n\n .nav-bar-icon {\n fill: @color-surface-light5;\n }\n }\n\n .nav-bar-title {\n color: @color-surface-light5;\n }\n }\n\n &.control-bar-layer {\n top: initial;\n overflow: visible;\n\n &::before {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n box-shadow: 0 0 8rem 8rem @color-background-dark5;\n content: \"\";\n }\n }\n\n &.menu-layer {\n top: initial;\n left: initial;\n right: 2rem;\n bottom: 8rem;\n max-height: calc(100% - 13.5rem);\n max-width: calc(100% - 4rem);\n background-color: @color-background-dark1;\n box-shadow: 0 1.35rem 2.7rem @color-background-dark5-40,\n 0 1.1rem 0.85rem @color-background-dark5-20;\n overflow: auto;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n:import('~stremio/common/Checkbox/styles.less') {\n checkbox-icon: icon;\n}\n\n.consent-checkbox-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0.5rem 1rem;\n\n &:focus {\n outline: none;\n background-color: @color-surface-light5-20;\n }\n\n .checkbox-icon {\n flex: none;\n width: 1.2rem;\n height: 1.2rem;\n fill: @color-surface-dark5;\n }\n\n .label {\n flex: 1;\n margin-left: 0.5rem;\n font-size: 0.9rem;\n color: @color-surface-90;\n\n .link {\n font-size: 0.9rem;\n color: @color-surface-light5-90;\n\n &:hover {\n text-decoration: underline;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/ModalDialog/styles.less') {\n password-reset-modal-content: modal-dialog-content;\n cancel-button-label: label;\n}\n\n.password-reset-modal-container {\n .password-reset-modal-content {\n width: 30rem;\n\n .credentials-text-input {\n width: 100%;\n padding: 1rem;\n color: @color-surface-dark5;\n outline: var(--focus-outline-size) solid @color-surface-light2-90;\n outline-offset: calc(-1 * var(--focus-outline-size));\n\n &:hover {\n outline-color: @color-surface-light4-90;\n }\n\n &:focus {\n outline-color: @color-background-dark5-90;\n }\n }\n }\n\n .error-message {\n font-size: 1.1rem;\n margin-top: 2rem;\n text-align: center;\n color: @color-accent5-90;\n }\n\n .cancel-button {\n background-color: transparent;\n\n &:hover {\n background-color: @color-surface-light3;\n }\n\n &:focus {\n outline-color: @color-background-dark5-90;\n }\n\n .cancel-button-label {\n color: @color-surface-dark4-90;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .password-reset-modal-container {\n .password-reset-modal-content {\n width: auto;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.intro-container {\n display: flex;\n flex-direction: row;\n justify-content: center;\n width: 100%;\n height: 100%;\n background:\n linear-gradient(@color-background-dark3-80, @color-background-dark3-80),\n url('/images/intro_background.jpg');\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n background-origin: border-box;\n overflow-y: auto;\n\n .form-container {\n flex: none;\n width: 28rem;\n margin: auto;\n padding: 2rem 0;\n\n .logo-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n margin-bottom: 3rem;\n\n .logo {\n flex: none;\n width: 4rem;\n height: 4rem;\n margin-right: 1rem;\n opacity: 0.9;\n }\n\n .name {\n flex: none;\n width: 8rem;\n height: 4rem;\n fill: @color-surface-dark4-90;\n }\n }\n\n .form-button {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 0.5rem 1rem;\n\n .icon {\n flex: none;\n width: 1rem;\n height: 2rem;\n margin-right: 1rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n font-size: 1.1rem;\n font-weight: 500;\n color: @color-surface-light5-90;\n text-align: center;\n }\n }\n\n .facebook-button {\n min-height: 4.5rem;\n margin: 1rem 0;\n background: var(--color-facebook);\n\n .label {\n font-size: 1.2rem;\n }\n }\n\n .login-form-button {\n display: block;\n margin: 1rem 0;\n text-align: center;\n color: @color-surface-dark2-90;\n\n &:hover {\n .login-label {\n text-decoration: underline;\n }\n }\n\n &:focus {\n outline: none;\n background-color: @color-surface-light5-20;\n }\n\n .login-label {\n font-weight: 500;\n color: @color-accent4-light1-90;\n }\n }\n\n .credentials-text-input {\n display: block;\n width: 100%;\n margin: 1rem 0;\n padding: 1rem;\n border-bottom: thin solid @color-surface-90;\n color: @color-surface-light5;\n\n &:hover {\n background-color: @color-surface-light5-20;\n }\n\n &:focus {\n border-bottom-color: @color-secondaryvariant2-light1-90;\n\n &::placeholder {\n color: @color-secondaryvariant2-light1-90;\n }\n }\n\n &::placeholder {\n color: @color-surface-dark2-90;\n }\n }\n\n .forgot-password-link-container {\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n margin: 1rem 0;\n text-align: right;\n\n .forgot-password-link {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n padding: 0.5rem 1rem;\n color: @color-surface-light3-90;\n\n &:hover {\n text-decoration: underline;\n color: @color-secondaryvariant2-light1-90;\n }\n\n &:focus {\n outline: none;\n background-color: @color-surface-light5-20;\n }\n }\n }\n\n .error-message {\n margin: 1rem 0;\n padding: 0 1rem;\n text-align: center;\n color: @color-accent5-90;\n }\n\n .submit-button {\n min-height: 4rem;\n margin: 1rem 0;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n .label {\n font-size: 1.2rem;\n }\n }\n\n .guest-login-button, .signup-form-button {\n margin-top: 1rem;\n padding: 1rem;\n\n &:hover {\n .label {\n text-decoration: underline;\n }\n }\n\n &:focus {\n outline: none;\n background-color: @color-surface-light5-20;\n }\n }\n }\n}\n\n.loading-modal-container {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: @color-background-dark5-40;\n\n .loader-container {\n flex: none;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n background-color: @color-surface-light5;\n\n @keyframes flash {\n 0% {\n opacity: 0.4;\n }\n\n 100% {\n opacity: 1.0;\n }\n }\n\n .icon {\n flex: none;\n width: 5rem;\n height: 5rem;\n margin-bottom: 1rem;\n fill: @color-background-dark5-90;\n animation: 1s linear infinite alternate flash;\n }\n\n .label {\n font-size: 2rem;\n color: @color-background-dark5-90;\n animation: 1s linear infinite alternate flash;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .intro-container {\n .form-container {\n flex: 0 1 auto;\n width: 100%;\n padding: 2rem 1.5rem;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.error-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n .error-image {\n flex: none;\n width: 12rem;\n height: 12rem;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .error-message {\n flex: none;\n padding: 0 3rem;\n font-size: 2rem;\n max-height: 3.6em;\n text-align: center;\n color: @color-surface-light5-90;\n }\n\n .buttons-container {\n flex: none;\n align-self: stretch;\n margin: 0 2rem;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n\n .button-container {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n margin: 2rem 1rem 0;\n padding: 0 1rem;\n min-width: 8rem;\n height: 3rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n &:global(.disabled) {\n background-color: @color-surface-dark5;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 2.4em;\n font-size: 1.1rem;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n }\n}","@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-weight: 300;\n src: url('/fonts/Roboto-LightItalic.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-weight: 400;\n src: url('/fonts/Roboto-RegularItalic.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-weight: 500;\n src: url('/fonts/Roboto-MediumItalic.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-weight: 700;\n src: url('/fonts/Roboto-BoldItalic.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-weight: 300;\n src: url('/fonts/Roboto-Light.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-weight: 400;\n src: url('/fonts/Roboto-Regular.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-weight: 500;\n src: url('/fonts/Roboto-Medium.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-weight: 700;\n src: url('/fonts/Roboto-Bold.ttf') format('truetype');\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (inline, once, css) '~stremio/common/roboto.css';\n@import (reference) '~stremio/common/screen-sizes.less';\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n:global {\n @import (once, less) '~stremio/common/animations.less';\n @import (once, less) '~stremio-router/styles.css';\n}\n\n:root {\n --landscape-shape-ratio: 0.5625;\n --poster-shape-ratio: 1.464;\n --scroll-bar-size: 6px;\n --horizontal-nav-bar-size: 4rem;\n --vertical-nav-bar-size: 5.2rem;\n --focus-outline-size: 2px;\n --color-facebook: #4267b2;\n --color-twitter: #1DA1F2;\n --color-placeholder: #60606080;\n --color-placeholder-text: @color-surface-50;\n --color-placeholder-background: @color-surface-dark5-20;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n font-size: 1rem;\n line-height: 1.2em;\n font-family: inherit;\n border: none;\n outline: none;\n list-style: none;\n user-select: none;\n text-decoration: none;\n appearance: none;\n background: none;\n box-shadow: none;\n overflow: hidden;\n word-break: break-word;\n scrollbar-width: thin;\n scrollbar-color: @color-secondaryvariant2-light1 @color-background-dark2;\n}\n\n::-webkit-scrollbar {\n width: var(--scroll-bar-size);\n height: var(--scroll-bar-size);\n}\n\n::-webkit-scrollbar-thumb {\n background-color: @color-secondaryvariant2-light1;\n\n &:hover {\n background-color: @color-secondaryvariant2-light2;\n }\n}\n\n::-webkit-scrollbar-track {\n background-color: @color-background-dark2;\n}\n\nsvg {\n overflow: visible;\n}\n\nhtml {\n width: 100%;\n height: 100%;\n min-width: 640px;\n min-height: 480px;\n font-family: 'Roboto', 'sans-serif';\n overflow: auto;\n\n body {\n width: 100%;\n height: 100%;\n\n :global(#app) {\n position: relative;\n z-index: 0;\n width: 100%;\n height: 100%;\n\n .toasts-container {\n position: absolute;\n top: calc(1.2 * var(--horizontal-nav-bar-size));\n right: 0;\n bottom: calc(1.2 * var(--horizontal-nav-bar-size));\n left: auto;\n z-index: 1;\n padding: 0 calc(0.5 * var(--horizontal-nav-bar-size));\n overflow-y: auto;\n scrollbar-width: none;\n pointer-events: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n .router {\n width: 100%;\n height: 100%;\n }\n\n .loader-container, .error-container {\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n }\n }\n }\n}\n\n@media only screen and (min-width: @xxlarge) {\n html {\n font-size: 18px;\n }\n}\n\n@media only screen and (max-width: @xxlarge) {\n html {\n font-size: 16px;\n }\n}\n\n@media only screen and (max-width: @large) {\n html {\n font-size: 15px;\n }\n}\n\n@media only screen and (max-width: @medium) {\n html {\n font-size: 14px;\n }\n}\n\n@media only screen and (max-width: @xsmall) {\n html {\n min-width: inherit;\n min-height: inherit;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n:global(.animation-fade-in) {\n :local {\n animation-name: fade-in;\n }\n\n animation-timing-function: ease-in-out;\n animation-duration: 100ms;\n}\n\n@keyframes fade-in {\n 0% {\n opacity: 0.6;\n transform: translateY(0.2vh);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}","/* Copyright (C) 2017-2023 Smart code 203358507 */\n\n.routes-container {\n position: relative;\n z-index: 0;\n}\n\n.routes-container .route-container {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 0;\n}\n\n.routes-container .route-container:not(:last-child) {\n display: none;\n}\n\n.routes-container .route-container .route-content {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 0;\n overflow: hidden;\n}\n\n.routes-container .route-container .modals-container {\n width: 0;\n height: 0;\n}\n\n.routes-container .route-container .modals-container .modal-container {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n overflow: hidden;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/binaries/stremio_core_web_bg.wasm b/development/f4f59074954b11898de7b384b6320863c5aa1fba/binaries/stremio_core_web_bg.wasm deleted file mode 100644 index 2ee8c634087e0a76c7b98196fdf16f58dae91d4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3288208 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 gqKse`Nf7EwKK0b!kIRXZm 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¿ou&aY)aVLnNg85*a~8 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%0D(i(f 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�GAL-k)nDUBQ3R=GE@d7_ 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 J@^g?C(kK-}%0$CL10sxqGmkxHdin46!8z`Wwc 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�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%0DL!3H?P6&~=y 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 FsrM{;@ z+^@eE*Y}iQpYQsf&e(QJeNVw9eSc5?RNqr1-%me}>wD_Vw*Ed->U$c_{k)z0-uD#8 zww}M#_B|!=`TBcJZQoOoP~Z3aZ}mMj=lg4a_*eBkb>{!m@7wh~dD*^+?Z2z<DLBmc z{Zi_CD#HDG{{FJQC;mUZKCZRz>3P0B8(;r>-xJ&V{a<U}(;2=#>Gy4YOu?mm@9(bf zDVlBF@A{qwv8~^S>wB7P_oue+DbBv$^*tr9t@oSM_B~B5?c3kGzNfG<zW0x7?R)CX z*X#NCr~01Wv&ZZDp5kpgu<waON>3%I&Q%wxb9J)qmbTrCoNDHfqS}|lA+Y|noEOS! zY(@e!9#Zoq$uGwL`j+NT(){|#%}0=$c?eGNwVLC;FE5zaq3f>x^LA<Ot|$ybES6xI zSx&CNO00s$WCxDRKF-I2dGa)mTL_w=1=`?gY{fRHA8aoU;s}o794_FJ3Fe%l1~mRg z=NIeo6Hek3G}cUXFn23%$2|x~b3{Sob)qp4uR-&}#b6!2!X9XTxI;)p6?XL1&=8H` zKc7iAwy&i>Y6)Mr68`gzZD3n-j$Llvu|)1ah70D;Uhhh79)pG)Sfn(MK{WS0gKND` zxP-4=1^;;-Hn1Hy&x7W7xPWV|16AYTC2$;GLq7H}k{gHDjgQMeQ5V?2_X!+Fb*1z8 zYMjgkj(=*%$F4N~N!LI6V*pZf9b^fg7dY;I10PFi+`SubpIn``GPT=k2psp@kdHMs z8vol2ZJ=?$y`XWxS6dHDX&j)&|DAyUc(1y=F*h=O$<&U2U%=-sLUQBazvScM#=j>u zW7Ciwj=*tc{rT7+_>V911k;a(ilz!#1Cbbp_c0bRNN!yP|M_?RoAVcG-lAcM!6}@9 z<`E3y<gN=1{#~K@3;W`I{KxoGu94=1#!;4m>z_=i9_ZzBW@9eaVu#sHO5k{EH*aEc z*F`FFfD>3(^zt$P@y;r`sNXXL8n@XNJu%5FBjd0En(ssNS(ZUL)IuF-eoKuroq|s= z0}HVqKjIiP4?uai@&7Hk-CK2IXkM=2SO~X%Mso8Ls;}vs(RDJ-CG;asLh~m4)$<80 zrsrj;SwXt_g*I?I9{%$TC9th|`u*n_y1;g~5TC&7a%s38C+STlGADAG+sHg9XbO>1 z#OQin3522&s>03R-+<eVO%yo@a|`nR5A{|30L}gW3pD4u=411eNPa#m|M8$26Y9k~ zh`~fm#;1tIT+GK(#9=koVk6?Q9Xs(I5}<k4LQDF%xq|YA`Q`~KMXG;5^98AQAOimL z+Kgvg^PyaTt{=O;X4gOA<|TFWr1<xVXnd&Vfw%~bSIsh!<2mF-F=+g%`tF`aPrQge zIEq^*@p;hoQT52CW`2!ylX;#|7`pD#173WNRpvN(8t2VLQuE1Wn!;m(#<4$uC}@5n zFJ|F0EQ9OQ)^)O@I0s!X(}8+<ghTVAM&ViX!cxQ;jm383vA^YZ0*>N1P9e4Pt@&U7 z)%+pR_z5Y^rxe(y<K`Q2^XY2-qarAV)Xsx6lh1YYA4gtf{|z_)vF1HKkHC441Lrr< zJUXeG=ZUIeW@JSn6hUQFMK#nwBSfM#yf}w&dP94{%NP#LKN5p@c+xVb0W|M}=7n?D z8NJ-rIO`a=c^@`$doz;ee_(C`&94wR?}CT1)S3^_&7=Eg$7QE<J>ARPFUigaa}|BF znukjBJv<9Hk4FNx{pZWlybrk$0?pT=c}g^Y$x<wXhikB@nU6^GWV{3~#z5E0*I*rf zfQPvwG>>yQG%r*XG+&gvPU_~@2%Nve^-1}UPyd8#I=_!kXRd}jp}9Il*DdQn*Nyuk z7Ax`l{Ef`zPzT+hd6m^4G#{FSO5D5;8h=q5wV`>D)ql_(>Ol})pIwIKSc#3;gs;tR zQvCa2$}-PN1yh~Wd`qdhem|MdQ{T)%Tx%a~HLeu~_R%)vV=2vRsCil<Pz!ZX5BH)C zG;fRMFIbM1SOv{xApY}tEM-2Aoo-$a=AfvKaHF|yMAu>GV7~F6|GgOVzK0`e{&(gm zs0htlum_s6;A-ast;+l~HBb}D^)Kw<<9p3MQuEnpzJt;zhw9KgAn#(V(frz)M<uy= zzN<6uP`K$%{@HnnBIq@#W$Kcerzkc3u<!7Bn&VJ3|I)8WZa%VbdZgVvPM(lI&LitB z=$k)Q{r8E`{HUR2d5xehexIMeGtbi#{M^udMA6VZA8uZD%~KPKaMVJ3Jcr&G2F<tB z2Pw^yq<KO#Kal1!l;7twjAo6BfqdN{-@IpT-jK`nw`rcXz<K-v=WY9a9-_sUpEvdc z?w5b_e9T(+V+Fp(ZfO0F3%Hs2nQwvC0V$8hh=kSyiN+wj4y_9^6)Uh3n&0_9<|j+w z?-Ey>r<Kq7!+gMdee*n3AT`gE=64d!i!vRWzvO3V{;8jFrFm%Gyj&V*S_}1z)|`;* z>o71k%rCrO9%DW&MB;Ho<2C%*er@#xNwyIBeo+i1(Fu>Eh$m@kdXDQjA3=4~ij>yo zMN)bj9s0^5Q<*wRHH@ZKpn1S5g>a1@bx;?*@iK;BD8lpk1m$O(F)|=4a+qA?Ew~+d zkQez;&=ex2ILe@ssX{iy189mih(bHlfqW8AV=#tc1l}_rk`piy^RX1munu1$9-FZp zN05k1$WVYoD}*2)ilP`g7p4x2IP*EV8f&o*U*Jn@#dhq*claJh(Z48<4Wki*4>1Gt zO&qxj>&!-S3%<fO?8I*DHT%f@IEX_yiL<zXi^x=r*9-1KJ`^;CNGWQHlO<6W<xmyX z(G1Pe0UhxKo<dhdqX&B81x&z1Ovemt$8Pf-Dc|D&4&xV`FsI4$xM+SW&UqoyaNeB` z8IcKDkQH|#4?<8BP4Nf<`;J=tM!g6f&=DCpU&@F(&0VBu{Q{|GT9MM)v>`Pfv>n>x z8}{##i+!~;F|U#Gx#21I2oEhuWl|nBQKWDRon$&GGt6hC%)@-drr~#=mftxv7q;fX z7R`O_zkY{$KVO5cAxRsf`Fm4y9Z7TgiidrT)&X(Xk=*_#oR5k65p_Mu&AYpu+Zx-v z2fCj06Ld{U^S4P36Gm!2w~2_w&+xyFq<IVFmJGgm?^=+WpK_2HPP%o4#&KKMkkVx2 zcWbJW5`p??WYh=O4DFzK@pT<Z`kKY0EQhWWeQCZY_d#pVh_3&nft!~)g4>syms;0v zx<S`)+;yCO++J*!ldG@>YoR%~<$GxU?Q^&UU6&EfcPKSX1gYyTn)A@jd#GzJ?V$M% zb$vzRjOLV+q-M1&?6ZyLdz0!2M@sX)wc|d`^VZjB-e6f~R+FM@7@9x$duYC3U9Sj2 z6;wq8be*D+X-DdML|^0P8{ERS|9pd`vT>~xWuf`xbZwzAW}45)#R!})H#hHTx1pS= zKuRT}`R87S7q8$|48#!lUpH9Iwv-6wkR7E_0hLf0)lePH(E^Vm3f<5X{mcOJRSYq@ z)*zbCU$ibk8{9-q{brPg>hllaLAd!1KjZcs%)=6_HtWc(aP@i3SuB}z^Y@5aW&rsr zrkD`w@A**}MNryQA~pZ*t<>0aLp6DM*fb~IyoyoWZf81@UC;w=zD3Qs=<4@wo^I9c z)1s^?PgX`%Q<Ib@(F3aI_r-_!7?Yv;{xnR-0dtT%gd^rCse1oC)alDWHGj?j`#e<d z*SMlB_zLP9ztVi+nlD-F257Ag84ZosT9Vgi8Mz!^ViPpq{~jEH=Ka42&G(-<#CKem zo4gGLO<_`sp(LWv0iDnl-Ao@++_;)}Zfk7KOZV_|;V6zlHF9zDCMH+sR;}C3)8Xpe zRrr`_T+|0pUHdoWit#z~5kCu5s}_xg?he(bdqeeU8G~_1#4)(_ilQg+UII6-gXVoc zi8DBhG?RU9Bqg)Cn=FKT%t}%<>jY>{64j`s&=me=Q4jY+_33_?ZRU~-uoz3=>ec(X zeE>zL^7}_AltwwIZe7bXBqiFsL`tlgMSg~Pm=D#qmtnb4O<NA*2u|Q6G)J;%o{Kh6 z&H72~HwQ`49LjRnd7oM23b=8CIXMOr%~!AWV>Bm*G&OErr}US&7JzK#c2cUFa8d%t zKknmWqV=85BXB<aXQ=~gUf`7KutAyrvo4yQkNMBbuDRLwL-SJ?wDF#rUsLr<w;o{K z?3{a{9|j<Z8l+T2T|}E6WKU=vxW1T;xmbXOSYliq)6J)^I%XOaMsbvY)_dz=RLAU# zxmb#I*Z|csC6t<DDX4ZS<)Ip;>X)vDsXFE!vyasL@v2j5yn-925YBB0TrZ^}HNzUH ziQ1@Z9wlWq=3}8*M#f<UKF2KTi<&=pF_vH%;;<W<Pq@r2Tt7fHQ-f3ua+;Y=N-R`| zoM*KDWM1UQ-6#yLM;S`pu>vZgGPKT+>WbA(EmFRMn-}{VZYP)^YK56l1{F~Ssw-+v zRk<GzqXk;wb-aW3FbZMR5#2h1)wo^5xcSbfvK@<An2kBm{O6^p{iQVDc^&RkEm7RM zC~tFH-Zdwv8J@JdVGwn~^3Xa4su@a66IPaO)PvSf(mISM5k_sVyy|;U-B0tMi<|%4 zzpkhC3sS1vja}@kv$^%vQW`(pV{`KBRn*+V>kOW+c|53sE_lYgLQ3HL)2W>&BXFH7 zH*dM-_Lajp3e~WVBL1Ln-uT*9mpXrf+BO2$`|<?&*4c<)7ugbR(F^Qqlcc6^a3Mc7 zzdp}0tc2FZeH$828;9jcfcgpj`v<k2(cjfS7{$4p`UYcyc^||Y^Cc<%eJh&(B(QHJ zrG5w3&+vb_kD+Wnj`K}bvIgp)0UDbqvJd*>6<ljygRbvC1uw?Jf4uWhj)#V0J>rql zx*5N6pN^l-A-U_`T4yxydUoJ-X3q`mR}gsJ_Rn6Y)p3CIPvN?3;B`xPo$B}N8DIT- z*J=E_t_x(`!?k?)uV3Q!kFGACQvErCr&{|tw_l6n_IB*V9<YN<l7<wX@+2&8;*ku7 zLoZ#z*5&0S9C~?#!=)rTRFRtvZ~q?Qtv$)@r0^D+L~nr-V)Bzx&=ex2h$%+OJ*Ffn zVWu=Gyj3PCPf8_Ig_LTh1}PDy7AbX1JyIIrUNkg~Nr^NMkn)gun3U$GB`J@XM@fk? z?MUfhI+4=ZJV8nq^E4^ZraLJ;&9kIDj~DQw=}k%>)0garSIn#AK)i-GFcfcMB;LY1 zcn@PR7UK|u56wrUOvEHiF`tm~DP~|MW@C<-N6v@dPh}-mVGY(|J-)z~W)mqKmL%Cq z$~LoulwIZ<Qob_@q<n9FAmxBLNXk#<Fe$&7W8`t1G{2H(aL!yH<u~Ku7(mjP8%Vj) zWFRGz$wEpt6HLlY=4MiEF}X>(-P}paT_%K-{H7o&g-j7rikW*zDQUt;DQzl~RZtDp z5n*bPby45kOG-o2m=yoxA<Y@q-RQVT-1?4}8&5He&wCT&F#*%C!fYZpV;i<(r}>(c z-R3(|63q9c{9q1{a?t!l%3<>hDOy+Z7*4{C@6Z^Jvp9!~2&FC`W!jO_!E_>}vw4D) zF6L=cqD^;FdYWfRdEWFQ<t6hnDPE&-Co<R!C1to7LCRa^9a7#i?~^jdd_YQ!`H+;4 z%tTTqo2jIHVm>7$*32U1Gc%Wz`DP(0i_KC};;<Z_n^mN&G3!YA!hA_eyxBs^S7tjY zJI&Xm>^9$#l3>0k<p*<sl!N9cQVyG6NJ%uuNjYhLCFP7cN6H2B8z~-+`6Z3Hfs`9f z22wJaETm*J!KB<|ZYJdxlbe*=&7Gv&WkN{FZwiu9$P^)^n7N0PlE#gH8pyV!bpGP{ z+fzJGxr^Te(wG}axzS`GC6mcQN;VTr%1!2GQf@K1Nx9wJNy=R&gp~ZIASs1R5mJho zdq^p1!bmA?%92vvR3xRcsY*(96HZD^Q=62!rame6nueq_Hj$(}U>+jnVbh$HmgW&s z9yL*<v@;z@>0~;S@`UL^%F`yAl<uY{DbJecN$F)?BIRY{C8eKvg_Kv#AW~j8gGm`` zhLbYFyhY0U7>y513@IO)k4TwlCX+JNd_u~nCYF?0<}*^}n)#$GG>b`DYT`&)VOEl| z+N>pIz1cv@MiWoU7V{M;+s#f=zBao_`OYMe^1b<ilmq4<DL<LRr2JwMNjYv#lJcuL zL&`aGft24&hP+%afm@%s2)9E~5j9XBjnKlhBBixyLrQ0Kg%>k03tF#v9u~umt60Nr zjjPy+Z*UO)<0($FeF25?`4l6IqqI?7pey<t)de;|;~hc~W!jM)@R)g=lqbzoWHh>) zXGnP&Ui34skn*Y-M9S-CFeyXLa8gE?w@7)%yhqCWW(+AGm>5z%G#`;N(M%>~s`-SJ zPfaW-v&?6t%r)~#S!foMved+pvcjw+WwlvL%6hYbl#M2ylr82fQns6&q<n35lk%NO zAmw|b@hft~94AF}9jR$*lTz2zC*@w#kd($Il9UI`L!>-xnv>GfJVMH&CW@4HrUNOR zOlMM_FkMLTntr6bVqPU>ka?Yy!Dc8a!_5d%-ZJly@}7C06xF+=peaO35mStmdrV1E zN}IBzls6Sgscfo}Qr(1;Qq$BXrLL(@%Dtu`DUD4eDG!*3NO{;aC#9u%gp@~36e;aY z2U0qj&ZInHx{&g;d4ZG{O>gpLcuhZ2UNNtdqVYj8#Hg+)Bg{Lbyl37gWsLcNlo<0N zDIb}Mq)awb$xjiB&oI}_CuN~oOv+LdN6HGbl3aszCZ3e-W+y49jK=v~uHLC)S7Eq1 z=auT4u0E-{<T9u(*#@e^<wFF!cK_=N$<^I{<#W!U0$-;3)L;z7`xpb&PE<2l0M$g6 zV3}D-hHxIO^Z7E+`S?S47|qbav?3ot6xyP_=}2}$XLLbV(~azoXH0KWyrv)79|JKM zBg|Ox1NfiU`(NjHk@Mf)NX>b@JD+#w@9up1yq!n)<$ULL_|Kcr_6p|>?z+cCu6bO| zbq}q3ExpZ9Qal`o1Rf9m8^?F1bUc!p>lM+wUv)<h=osT!=s05^Qae6V?{)4v#%SBG zhw?Y6{d8AopEVF}AEbTHThKno?I+fATYuZS&Y{2WUC`h4uXvEZYq`?jcf=+B9`Uzb z&&a|xV#Gn~B>%_t3ib)=n~&fjXul8#SAYMG+aCU&C5>TMbiMx0@1UN!mz0L4F)9CB z>+jd=?i?%g{QY3A*WG=!ch%hG@2b12*8W%4+f`?mzq`J!y1J;Qe!Z@Ky{>+}uFm-| z$GoYntEW^?cl|$s^PA}SR??UoNV(BuASIK@LP|ChOv+8>W>Ri3xk<U*+)2t^CWMsy zrXVSWOc7FwnR`enX~IY;ZOW2T-c%%|vZ+c+brViXO;ekcx~4uU_nL;JG&Yf>JYXIo z<zdsDl$PcZQXVx?q_i^~Na<uclk$Y=Ldw%7nw0LQCn?XG=Sk^hULxgX<0Yk^d4-f$ z%^*@<H-kwTYKD_C!n{Sw2PTG;56wrUOf-{8nQA^E<x>+&$}IC4DRa$yQWl!Uq%1XY zq^vM2Nm*^ylCs`xAZ4S8CuNKIij?hUCn;Z>-K2bH5=i;p{6NY9bC8su%wbY~F^Qxc zHz!H?)tn*aoVh^CZzcn^>c6snK8XKs7~aD;Oor;|^PxKWS|nFLKf}kb*Uhij&9B$Z zuh-30JHK8x_tnn-Ep>C(5Byix$J=svseXG`7vIBeR}a6$?I7v`!jPdPOcAB2qCDwM zMp7~xh68D8BTsgdgOr?xp(`G_)!atP9VQPcc}+f23Yfb|DQt?8QrwgvCDfE6rHm;@ zifa8**;FN^x(O$xrm0OzT~nWIfcs1%Qkt0iNqNvTC8e2ZK}svrnv^!CEh+6yM^YX$ zkCXDGd5V;-rW+|e%rm4sXL^zHl6jf*qQ4nH${;hClo94_Qbs}7Nj@;+Nts|iCS|gj zPD-r#jFh=%0Vzw2|8<s?d~7w=U>(+DgV{(*yxBs^S7tjYJI&Xm?8dj)WA>7=&+I4V zM{|gjpUn|cj^Y?jm{X*jHRnmWXfBZwM2$((nslV3HyKIEY_gJ)-Q*x8r^!Xit>!jT z?l5^s$!iLba<?f=N>NjsloBSClu}05yrinBL58EIsYgl!a~~;<OcV0obiJ$_buG~~ zGkMOq>t@5*mQSz|@o?A2c5r)_`G%Bl%^p(rnti0~H$Rec$ox#o5p$G00bPTWGe+0q zB#i5DZP3=VC#9o#jFiXClcYRlx{}h(^dRLK^BgHJm={UuZTgU+Yl8BI8A8f1^Cl@H z&D*5BYetbW+KeS-oEcBb1oJT|lgt!SrkUxa%rG-anQi8fGS4g^WszAz$}+Qpl$B;R zDQnGoQZ|^4<R)x3TS?hwc962md_&5&W)CTQ%|250n;%IzWPT>)h&f8iF>`{HQ|2@& zXU%z1E}BcE1X1IXv?d)X=}ksbGMlWVWH&iT$!T(ta;v$GlsilwQu3O7q!ciBlTz3e zC8fA2L5i+TOIxU)HL!0rrR&N;oS#ctla7@1CL<}CO;%E}n;fL%G`UE*)!atP9VQPc zc}+f23Yfb|DQt?8QrwgvCDfE6rHm;@N(EDilq#kgDK$(4DYZ-;QtFuoq}*p3k<!H6 zPs)R)DJjiN3sPE{)}*vCZAocwI+F63d7P9d%~PawHQh+*VV)u7Ir9Q3FPh$@^f7%& z>2C&*GSIw6${S_~DZ|X0q>MCglcO=-Od#cBGl`TbW*RBe%?wgzn%ShxG4n`SU>1?G z#4ICax%r%wRb~w->&zFVd}%h3ve|4UWt-VS$}aN_Dc_nsr0g~ONZD_GB;}C#nUo{u zC@IIx2~tj()1;g==SjI}E|KY}aRo#DAt5M?FjPP|>L3!$5QWDOjowgS>Oc&~yNJOg z#6o?lb1@Ie%>%xMkH^E!1HOaX3HTBI^MIdbyKz3BXtEDpG4TcY-5`vfk2Yv)I+C5x z**rl?7o(mLQO}6<HT_8$U<Q)%nt6kiA!ZmUZ<>*$ylvhkWt16B%2+dwl<{T)DIc3j zq)ai>NSSVCkTTQECS{J9N6G@Th?FH}87a%n=cKGMYe-pVz98jGvx$_=W-BS%%nnj^ znQut>*6bl=uh~b+VWT<L<%IDtH_Y8AY)X(4LGO;#GIdC)XBv=lpJ_x&6LUW)51OW= zG&3zoX=PfI(#EtUrM>A$%46nnQl2#GIg-AnKPdyuKvG^aZ;&#?3?t=DGm@0I&AX(G zGU{!T0@SeNZc~_)qNX@0C5(EZq>L#?N(EDilq#kgDK$(4DYZ-;QtFuoq}*p3k<!H6 zPs)R)DJjiN3sPE{)}*vCZAocwI+F63d7P9d%~PbP_e*-2mq_Vj`jXP$3?OBo8BEHX zW+bV;v3JcVQbwDxq>MA;Nts|iCS{VDLdqO7kCX*w5h+W|GE$bC&q-Np)Was~VUrzZ z7b)sxOHDtU>tic&gKu2^PVzk7O&8=Dj|rHG*;s%@SPa*f7DunD=6jBM+BYw7eu@g} zOKW?*9+y;;yIzm`ch}=q1^H@mYsq!^0;<LR8|rY0JPwTsS1s;(9nM#ayIzO$)#9$# z;e55YH>v5!Nb@!+@0wAhj5cFQ8E3B7;jY)=RExXTI$Yp5kn43hUu~`ubqc9ss*zH| zM37R;)FGvwX+X+-rV%Mk%>AT1XquAJ%(Nh-m1#{%8`GAQ_NF5#kD13wdD1*ZN>|g3 zlpf|8Ql2v}kn*DGO-dirmz4fy04W2_YoxqkhLAGMyh+MP^ENpe<IMz8J~op`nPR4q zGTqD|Wu}=;${aI~lm%uHDND>UQkI*~Nm*sqkh0EvLCTkA6Dga`R#LW^9i;3s-;naH z*+a@+vyYVh=0{QvnV(5HVvdq>%$y+QlsQexS#zG0i{=uUp1M~suC*@bUw>1No1|2S zQ}3IkwjQURIJsVz^VR0A*X6F)<y4!yUYGOL=2}oMlIwN3|G(>Ul-^a6_q@(AuPikl z*7ubgnYUkpLwFy<gXTq2-Y_@iXDkM8E$MSRDV0$L;ifeycZT_dkrHD{{l=IIG&k)@ z$$H6WdN$^N77xcNXhM&Oxb;KY<lq_?+`0vBJ%Y?U&g>`#H_v@nZg(i<<KcT`$0ZZP z_mf1N(e1_5KB0Mvdx4QCo=e%YCH2ZRV6(@KKF_gsgS=oSuqMJsc!KYx@8{P0aq|T~ z%Ks!$hN<L})@zwTiq>e6d6<t_`idI!^G2c>TB99OTDPS?=d}aj)@#u^E#ol(DXrJC zlKZs&$^&SI=Fqw;3D}PV_z8y*mYy*xn21>Xj8n*+fj$7d2e*#O7H;puZ_pYl;=g{% zLu|WsQ?yo!xOGz8dMJ%D@ilPko4EB%F7h$0W8&5?X_T4ILsRo5DOI!hG$LiO`H~d3 zeu!H)#H|xjFB{`;ptV3`p;=3Az?IhjsLt!52KvE&{SUX^ht~M;U+1Ge+a2&Yp29$A zEf1|7?$!?<&26`iht}}O1-CATTaUx7tMSb3T>pU9#t^NGu@uYk1>CwAwOPAD+&UOj zxve!Xl3T~(AnR8gF(*kmjk9p;R;*+$gH1SvYgxDA=sg^R!>yC7bt6Kdbt1+<>qJP` zi9Ropz2Uze#8|ci*Mk@|iTxeU;4HMRgSd4aiceubfd`FS$03ew(Yg)t;#9sLwAR83 zq_m#G;c5J?;MPwFVLua!)UJDwz`%X+rcZvIS+{OM{;bS1f|S-P&>98)>lC>42+HL6 z<2nOzY|DCReSvZ}G5<OaLF)xn&FRyKl)!ZYv_62i^#R=c|8Bm2&Fe37p*j3DSHHM< z`m5dMo1@>&&+q2rFMB(W6K?)}&9N_TUj3SR_`awO&6Dru!%t~`dpDoGTbDAWdF)e~ zxBjWktTT%j(GLUg2Bu;<-2BO!SH3&~=au)LPrfeK$?D@?6kuO3#SAZTPbKh@OY$ix zRYQClkdi;2PbE^`!YE9^RNT&gdIyS_O{5&c37o+>tSIO+^=|(DG1tVAavs0IQ;2b! z$Yyeoax-!vx5-0Fh{;bDKp|6%l#&QVMN~$(sYyzGJcu@kLVMGZ?1awdMN(cyAB@1e z7-dG2V-SP!m}I7s(-4c9Sc0WkiB(u@Hj<mL*=!}h!Xf;GM4ZBDoWn(vrZ8h(k<Mfw zvm(2>iIkhoEu`cz`A8{Z%8+GI+teeap=nIYgJ_CorajpKZ{uBzH?gEFGi8g?FMxE# zsb}C0+=)ojloWRySB)2{yj$956e%}w@k%xsty|d*FQX5Jnm5V!aR8SPbe#22aJva5 zr8Fud68A$F#qyybM&cd3i%}Sj50HoxIEB-=c#`jdYFtcffX0Z#W9W)#^gu5RG_R9G zFx<RNzJrhOF(#Xt<SZ;UE6A1DjIG#>@37bGBjunuO3Ddyj%@NP`+uy$7ubSr*n!>H zk3;5X@-Pz33GxCGPP3K;5=|Bw`75I;>YyGjA^IHagTsqK7>*@ahE>>zZ;*h4NW>Yi z>qvILm6d&y>@zyn7WX{6bu?o6-m?+H@pT`#kGuWHS^kbB6R%JG-3;J)loeQsHD*1z z0X2DkYoRV8(FxDvCDWJej{z8nVdhOzrkbAo{-1$f3ljMJ*Wq_t5BEXO(**MwITvwe z11b8wOLmi+%!@)MjI0DbFV*p!nM2OSd@R5s^Ch_noAE6^=ef}H<enF|-`9TrFcOXS z`Et?r=Wf64_Ose|%1EPqrMUfM;QmqjMbW-cv@ew7I05YwMf*hm{i53+>Uqr!w|~3R ze$4H^0{2@f?WY3wLzmm{Xy23Eey2PiuZY0?PYAEK5-5iXcnL2<`=c1>HMt2}kpS(F zPMR}hbzW=XMz7loaQmnGc+L6mpWN%vfB&O>(0TapC*12Tp4VL9{$dXwbNh*t-2Nx_ z4}bOX%OGC6@>d+kq~kT29ydXM2Lmu1dTr```k#7VevI$sUe|y3`?81k<4efOdu?`v znl9w!-k+y)|9<FiBzp>fC;I!SiW+EubG*j2pn=|R>-xP;FY(&z$@@_sY{MmFIm7>p z`e=fdXoEo*hEH(`$-aNF-_zm<7a54Ax{1V7H`$Ev8-32DXa56NAJ96V;@0)dM9oXw zI+kudNu3AFi$-f1id)BUEVq+ezc9;0<}ZO;_fKp7iCfRlt<UGy<%_1~Bz-yG>xb4k zeOBiR@~nl{7n7O{l+^lM{_An=W3XgZ&NZ|yyVj}Fc?EB~o|h4WPoQ&$OZ+~f(^9WO zFKF&Wt@ryn2AiSecxe5De$<fy=S5UqNp-^^7zS5AjN`U^ZdQ{LkDqW9S_k+>o{#Lf z!{j0FMHITC8@Ay)<LXa`*p^?AmFF?o+(d?=5kAID6G#4plhE`28**jfe8?0erHBb5 zt0NrE@u-O+pFlK*A_iI`IBiDGw@}4YBg4@E4bd2pXpXk%05AHXKL%hhhG95HVlt*8 z7PHJ;asif@Wn>)IU@gAD25dCD$#1a-dvO34kv5Z0Ix-WoBN#bR1jP`B(kO#+D36M$ zgz5-K3p|2HO((J|x}ztaHT_8$fFT%$H!%{EF%_|xh1r;c1z3VOtTSJb8xU_2$h|m# zV>oNlWaj5XI%Gk11S2PkpcukX8f8!pl~B!ulTr`$aUUAu5wu1dv_&U8hyG>&`8tMT zI7Z-YjKcdEV?H3qVFEtFWK6}USb$|_Ik^I>u@>vG0rBPlc@9BY_<4~IS&$9ExCup2 z43$vLM3A-794*n>M3HUL30?6Vyy%C)7>eN-fytPP*_eX`Sc0X9!*YC%l~{wdSdTC8 zExtnn_Tm7J;uuaKO;&ymWJ54+LS<AlHOO$(MSa|hhG>i?cnA-pIohHV`k){BV*uX4 z`<RK@ScD}ej$Dm+Y{pJ}hXXi@<2VVH`SXOKG|Hd`^ghxAt<V?!@QQhrd>w-^0Uw)5 zWGrT3HkOz;awXjRQarbJVK?@`Lp}Lc+>Wv+Zz_^f8THTrUC_r2AY~8+V<}c)4K`pS zzJ@25S}sbNilkIQRn$N;v_xyPMKqp4U-ZW-Q2lx^hGGmpKuYTe*1w786O9mwhtb@$ zBwHg2gYY_rU^rqi3v)0ZOA%*QkgKp3+p!bDTK^ikkQ*%#g_q#PD7g8{TpyRNiH*61 zkK+tH)ZBAGwRg#jQYee^2*>@1LKi%ZXm~LjbInq671m%azQS%K;1CjV79Kk;2_|nt z2%d)*uV5f1W2%WIPr<|5+IOJ<3ZW>9BMhZb1{D!*YLibP8a?5~G{j;Z;_)@U!!2At zxDB`CE;L0m)0UL>=zyot9bUYK;TVM&OvepeYbb*%rWzT6T4;z!Jb|8g8T~LG6EO+8 zULl`iKYlbnk%#e%IZmFy1r+C4t}M!-3L2mh2El*cx;1QXHG4@pgv0m+CvXb726E2) zo$Fez%*%cOZv36rjrbNv;XnRP>woJ2FcWkgw=hD{2GQt-o*0VZ7=swZ!IO_`ycmu` z)P%!vFQU++IPdRx8}CBnytD>^#(JGaa^t+hO3+gWtq~p#FWx~6CSo!^MJ(oGK9(X5 ztFaav5s&TIiSOVk$$kM|jKXM~fG3pWM<n7rJYl@{p?YNvMBp8a#wDcVdT=O8VJL=U z9};m_X?~3u{1G3=YQ&@XM1C)L8a>R*q^>)~;3$scG(3}h<8<77(_7h=ZP<n52%5}$ zInp6LG9e2JqA-dh43!X$=itTX*oa*?j^Ch*1$RT&vg+ai=$cj=yoCOkh0ibt3$X}G z@g;P=vJ2ng2k4yTH)s*tA_zqo%AhR5Q4_Us9~zlRvIQQ2yJj|n+cV7^axNBN3F3^d zsmV9^8Nc8Zf~IlqfQ-n79JmD`D1;&?i7;qA^Jx5l1Nae#plfo8I18N=P1wQf4y*A6 z&ckz-ebza?9=i~@o@t)*)aH>F<xvq;QQd@-5vYaQs0*!|z7@kRavX&<*klsPO9-Ym zdK<#<03JdobjFj2Mo&D83kbTz>kaBzSc(-`gZ0>iE!cstu^S0EfP?r27jO~$PoB)k zib5!Y%BYHJsDVa^L~D3)4xS+D^hl2~sDPmujxmTa@#F<~xt2KwF^I=roQEeZHDr{) zy@<p!@M0{+;d89THh37DHWo3M0=K?`8@J|RY+7N2p*^~y7hb~a7>p5k3vc5}<J>$q zavhKJ@o+Rn6dr>Y127P=n1zMV!lvnv!DJ%Kp#mzRs;NOXMKgSWNtl5I9LGtV!g<`0 zky<e-p@#92^RO73umxI3H5fUO3%BAnltVb`BNELKg>i_(5BM3sLK9$>LnSmtb9Be^ zcoU;A22(HtTC}x3-1-%6T;MrAR)Fi$VW@;CdU#%j7gN;FV`9mf&_r8>5r#UrA1x4# zzIYX{Ar@aC0l&g66q_cP-!bZ;5gtHSbVGMMWBQS^Fc0&w2#c{4%Mp)*NW@vB&B5OV z?lI-bdWb}K^u)91hdEe=wfGVn5sy9Ci<8h|wmFa!B~cn>pzG~Y5!Fxw;qc;B3^K2i zLof_uF%DA@i|>$t?~#bJNJAYdEz%(ivLhHdQ3S;hhSDg5a;SuArUoeysEvB4kNcoL zfJmcyReNZm-U<ju1nQW2WGl2bZOFFpVg_bn78aOA<YFu}%Sl;@HHgP9c&Uwjidf9V zd@RCJvz+_}S~R#cs-P;Wn+UQtBGCd-=mIaM;uG^JIRolnkoj1EIIM#vg1a3d$cI8E zjI0YSR$LMlO%+nKuETL$!i~2Dc`}+TWKQJ5Ey#^fltMXFKt-r;LTaEUYNIY9(E>4; zgsIqy-PnV@_yI|aCsS9<jMAut%BX?5h&0W}=6D3J;a&4S`5|I)2ATjbBeWQE24q4g zs+(}K4kFP7(HMp)W+o}08BL;hBQhW(G9wIiO(fX@QRs-r&>2r)C`RHfykp)YB?eQF za2LOSoWdET$;;mdZbCU!M-4=nT4W2vnmF<pE@4ywe(r)no~IFwp75g9-MlY`@_nF% zr9;c||Di548DCvZ#@CtW^9lZL@F=42IG)B*#9<xcaRjG~Ce8~*1=K+#TA&r$qCK8N zZw!Oh6?z|<VDDZ;VjxCh98_0UJ=yigXhG=H1Nr<xy#Ed+hwxk=#lD%?AW#08yp~KP z`2d=l4&-Bq#`#(Ne~Wpp5RI4M#UKpFD2y@VNQvCU@c=YI-YICY=0Yfn4(Mc_Al0kW zAFp6Arr=Zj1kV<p1Jp5b<W?l$1hn|`!-&H3&;)!B;bDxy2N;JB&Bx?KOu;Ak6brD( zEFnL~Dx}-SaT78jD{jUuxD$7w5~`p&!ciM_&AntK9>B-j=|8|1J9w|brCq!ZzUJ>2 zPoXECMSl#y8_)!S$*%Xlm-jeSfUYBiqX8PD35I{qdp6?mGZJwYmrVQ*d>n~5i-aHP z>A*q!j3f93iTDj#40|QkU=!SW^Y<O%y#<kIfk)8>-43%)K+q8$AGC0GTBJi><U@WG zG=)hiiqa^H3aDhNkW$msBc*}4kCaAeg8T6R9x}~HX<=HC(%Q5kr7hZ_gL#a60$tD@ zJ@Fh~z)N`9c*)oB21a8%Cg5XC!89yFB91}V^@<}5BN2m7F%!$M9O}i{j8o7gkGiI( zehl^71fvSVQ6H|)CW_k~;W_a?eJ8HZMAwf!r+JOxMeIUgzljzx&x~NyLnK-t3Ij15 z(-DiA&_t6Dp5uNzg=kz$Uy3HF9D%p69*H;$D$Slf6S)vJDUGMnyfmJ0<e8tw6N2#@ z(|BT$@H6+H;p68>Pg>8tIn#2Slh!k%02jsh*A?osehuocPN}bY75A+%!8h_&i~G<9 z(Plfj8|t_I0YBm(e!>ytNbi$e-}MRZyJ&97!1*KYKmpv1!YGOoXn|I6{n_iey%*}w zPLq+kv8hT*1nR@TU%MIG?a&^5&0<oPn&sq5xIXS3+?MaL55Jk9OnhHdH4$V@)I)vT z2laj5Z=%U=c*gW4`(d$JPOicltcB|n|DN0Xa1QDh56bN0`o^oXT>}xQ4fT*qQ#3<6 zv`0U)l$1E59&_1YJXv_j;0ELR&#SW?j=HFid!c^xrg#|b&>nq_>r-FGwyZF#N!bAP zuW!S4e2;zLMBWnw*VkU1+Y*7=aDDF0xGn9_9(|4Lf8WHmY{6I9ZuXE;Dw|JPvNF^! zuRi&i<}-3J)GxmgSL&DVmYw=8yzuXrAHw##7=^`f{qrS)Ig~<a`1jFQW4k(<qXiyC z6uO}&`k4Xbt5A=<j5V&m{-#?wl|gBg!2@^@-O&S|VGibD309lHeteBb$%^b|0QoAW zm=Nme`B4}}P};aY{#&V$=f)l8VN#moQAC+`q;y0V^gv+$|3*IMxr1F8)c;=@RZUG& z+&BO)xBKEle2mGM0*wurjsxZ(c?d_$QSun>p&niaZX7{8x3}OcB;b1_H=f`OAJ=$- zxIFy5B1?!*JedeLKA=wtu5BR!m*786;QcW6(Gz*D&=bA!0mdN_$B<^S&yA#HHg}VS zaF5X#fmLwh1TJw~3Qb|Zih8&oUi5<-H!zpm3$PeVu-_D&N}Up=P#Wb>9<@wEQeHB# zq|Cx+n1}gT3XMTnZVr=2@T=KBjqizr<_IZnJc1kl<i;g@KrL{bYJx%Z(I6p>&$HCr zdLbwi$6H8;8<7RsQ4y6<!?<w?1+)6bB}~i4@i0;vpAZzx|BZ_9AE(fR?Vjj^zL<@< zaN`$Na9cb%IDSE46h{e^MGxa8`(iGZVjVVMlL@_vb83_|8uL&A)lCE`d(1vk;~_K= zd=RQYV<W1Ya8jC?z;O~4Z{~Lejg_bkH(ugVZcD70P0q(cvxJmoh=UtnF(Vgs3CzMA zEXESJaTmL}{VmE+qo|B(Mq@F;G0jXTB^Gm_F&dKRR*tWcA9tfLG;Sj_H@_#i@f%^( z5~K>MqPlV8Ilf|h2foHPaN|3IZs$A*Wl#}SP#tc($Nk)X7%k8Wuj3u47fRzm!tSI# zi;AcQH!frZw<lpLVlfM|F$Z%|igW++sBEf|)ldT(M^euWC*Q=|#*HsIL9O5<G{Jum z%A+#EO-)k5%lf1=9;FHA+M;nOBk+S6yO?uK1dc=LxS8W|Jch^dG%hzDrREl1XV4_^ z<xvG)@Qitdl+hT6@t6Tm0)OYofZVtP`A`4_Q3%B_%%n8l<uK=hN8vy2MdMvuzqcnS z8*|QQ`~5i69XIOOPuy{wj>$yFTB2ho(J_#?;~jT=<Bnr=Y$6MdjxD4T@As9V_jp~$ zFKf1t;@(%?_&8l-)_b43j_lrl-1~?B`-R>!bj?lTjN31}{jl3#YM<x7-_!n1w4W0< zPAe`4fA?^8V(o)OHCWO9M6_QJ{r!voxGU8y{l{JDZ`X~xa(|Ck8gCUi&PsJLz0P^d zO&YHhLDofEbV4xiDYrrEeiVY{8>|c7vXe|FMLmV$KmIsJh;MAM#u%UH8%W^z;Ew!X zqU*iKa1y%idmJa=|F~N6ecBj3zFy$%GKpI^WFFhH(8Q73u@k@I43=|RxEks&O~4O0 zY<?j{=ZPAl`z&0)W#D?%DfL~t^{M-Ee(A>ZCfA3lUd$*ALTb-L{rfSG^L6gLG~`Cc zp5ke2g?cdEd8s=ey}-vV8TDUk9I*N>)pHpKjRSUlw(h*tlY!?M;n4YK6kI>$KyJSV z^;PP;)SZv&{IV0eLgRz`<7)dQbxx}DQ2#zj^+>w&(cRp3eUdsaRiETBTrmFUsp_3f zhfKKIzDaj}tNzK$o!_?L{zu^7SE+Mdo#$RlAEnNV-TAP3Db+`*eQCT=AEnNV)kk?0 z>Z5e$$7$KWUTq(x&Zl+$?B74B{k1!feuUeuk5cE;>Z9z6Zbs+V{qa}zQ|cUj1^oLc z^}gZyDBbzG`YDe>=j@m3qtto4`X^I5e^0KjQs?uXpuS2k`eOi6(^skUfAvx7T;KIk z>V3|g@B8;t>b(B|{QD_Y2MFw^)cJp1xc*7?PO5KGb$~Wd9iS7sq8Iw0FRrG4(!KAh zcHmz(P(P*W2LAn&C)nn#Kk5BBoK*cF5-rddsqLdw?_^-#q^mn5*FUKqN>`5v;dW7! zGZjdwWHgT7zn@Zd3Rj;<t}dbe$p(moY6>w(sqgU|_g%n$v;Wc6J07R^v77Zl4ojvF zGKfCNF7!WkMIZFV`%quxPxu9{KhpI@>X<4Vs+&Z?zaP@oQM`P7D|Q(5Kx!_71gH<v zzkU+f|EQkFz<x*7Q(T{86>ir>YWf;I)J9Ze34yDtxcZ5I-=Z5AqWKh-U>RIp#q}$; z;5gC0j-tLp4>gSn2#4!8?9FX20{ae^@iG5;iFymwSEzZ#aw88ypn3l5qY)y}3@uD6 zQd*lfWN&!k<{3+AezCxL#lGQd5^xy)eTJG(tVRew6CN_%Na<sSlVhOz&2H>9`$^Sv z(&Y0=Pf8}_L@tw?%!7ia5Gh4WF|rb>q6X@q0UDbqau7WCaGZvpp?*ajd|s(vQ9X+~ z&VL6n_%r>A34FckR2n;!9{HeoE!;SwirlV>2&g|%^IeR?c$~upB-gJPQ;OFh)US96 zp0aE=A{+bq7S*qK5uT5EKbXkz9$f#TYGkfH)`#1wi`_bjQ(EN5AiRO~xLp6DdKBIH zkNOjPK>dlTo5e%@iK?HS#(8s*RQ)UrI!}s%`V&=0(>astLrmbd>pxVTEF9`Fj6@4W z;aT*8>l@VAsstRxap>IZYWfFTPUBb%k3)TgKf%rC@mKT@7CBG75~=MUoXO{^f3Vs` zes1{p5vqUiJOb-^W#|zsi$-XI!2Uu1^Rmj9_}ei$KWm9jNKIcMzu9Z*9}K6)*b}ba z=%wE1-yi7ekLnN13;+H=)gxVhU<|iif8Zu=Z^pIs2}aWk_;2nLjLN`uR(PR)!N5L2 zEnb-mAyA*7>knMY?PXAJU|{_=xjw<bdan8eUxF87pnkzMScd~}{et0{ef@$_r1}ND zP`_YG{efCsQ}foi{y;A^V)X^OdT}hb)fcF`@txWET%-QLNJL`*VzCnb{eY^cbb@;R zR7+V1S1%6i?^FF)^<wq))j(~y{yx=^)!QekBd>(3AFH?TYwR{2YB8>_&()7rH%?9e z-ef*c{d=nCxV}Brm#?L7Pxa`__362~wCmRktWSHW9o>saw18^Tu1{|jx7B+W*ng+G zv-<AhuoJ2`d#E+3zO3Fl|Nc5J+v=T*gMZ(g>ddN5sb8)V!r}VnDpRLYpWGp&rcchl zKTh>%)u5B>hjaC4^}_9g>xc8NKdb*ub>^|=_dYjj$gaQ5)t}YdroOfo=nnO@xjMA^ z+f;W>uAeQXI<#ugSL$zb^=b9F1@^W5YV~Q?&!+mc`q@;ki-dn4n<wOt{cHYxYl)#e z?l529n(En2aizYs=qHlzTTA5QC!xNz@(4#QxW2Xa+z#wl>+>|9-__TzrdqlB)l@Hc z{c3x;t)4a2&i^faYnQ9vt8TB}v{cpYzxwy~oyBcuzlyK18|QEVH}9aI4P{XtjS-2b z5sg839g{H?E3gv3_px#Ns;^h<`D0&OYOi0o`MTV73@w_gJ~&;^2<(GXFP!?|G^dyP z;MD)7zPGFCcXQW4)bHls=XSlH&HCB?sy;2dt`xzcaZ9vCFK{Z5#MS#3vMq7gj;pQn zYd(c5)%joLa|R(b_5Lf>`2*|sAvaQohwAoj{sdRQR}J6IpYRK}kK!Bx>-ehWr!<ek zdhT=cDEQa+RoB1Vd<v@fYaWG^>isd?w+=UC<oq4gjOI)bH*bRK|C%>p0Ip@egp}q* zNaX+XulJ|RbZzzhz`DJg2VnsJ-w<5Qya$^5z`s7fmu=PM<!bBkZe9cbx_jHq|5I;Q zt^Kd8x4XJ}YUd+Ju3p|Y3(vJlZJk{64~Ty~T=NTPUV-DdA?ttE!TskIPz~JG!8Lz? z>fmkR>ffoIH$ZjlFt~XERL|DD09RATj^*>OG#`NfJOHX=hX>TB-S~b_Ff|5fyuPR& z-4rd+8f{HSvJ;+0G~76TjoX(P{G0378n^#v>(v_1@5b?~UVXXo`~G!m)vEo+<6mwZ ze&iME(5gRcT)pbg55d)$)7?QI9qK^!<^G6)#=FnJLhOg?%LSlu>`l-Tm#Z%)H;(;R zzUH48$NpE;ox6o3UuRB}@1L(H`;UW9ZC%-0;;*SI``42-&ON1i@@Ve+yXwh#C$g`B zt1D|<yz0sR<KeHRuAI`i`23UE??H9uewYo7e-ErLYdn0WDZcUWsx#L`6jWz^1+(Dh z=Te>d2OPjroP(=77n$m-JJ%#@L*v||;Ofq*J->{r9pCQi)IagHs#BlDpQ%%SPo3KH z$)6wB{&&=;1MAP~2U6YnpRP9t)|oxjiv#P+{^QSMxc_qX<tvRp|G!XIR&6<@ap#w- zA8XvXCo?^52#3a-M<KQKV~sC&bz@gA_GJIhda=fnt6r>e<bn0#wA6+*Zai?Dcz-@N z1Fl}|#(}Fo>}tfWPONd@u1?&a+q1A7su!z9oKl^*IQ8DE8RzZl#2V*)t>d}<$7{Ex zR;+q&S=58-zJcSiHQw64?(4=|tIq4jRfpd4KXqQ!cQtNWHC}P!qW$Z+#jT#Jb%Rq= z&(*kRjc=9+<3FxBo{y=9>*~0w<pz#x)|h5dJy+Z~=F8P}OH!{@O;=n!H@W(47`0b7 z9yz&j$gf##R`ppo-Z%~QSGfVMK3j&{Zd`F{>#-4K`QAvW9_#9`@zh*3ZrF_%c6HY) z)mt?_SVkhS-m04Ge|voJzj<8l-%%e;?f6~QDqX$Of84Gcr<>aGxq;(yuh%JkbxO`M z{?s_q8#x|#eIPn+SN}(4`1fyI8prn8Kh8(w#s{SIclZ0a`ak*jvT%Nt6{=&@hU>4J z!+GpHEHraCW}S-#W)Zm<ZF%Uuz|ACq_0~On{8y--n!`X(5W5oLa4QLy<299!C%w@n zY~k=A32*(ngsivwB)rY)Qm!tWCebBGxz*?`LGCc@inS}(@Qoz-NGV|MCZ(_`N=k84 zf|O8Gij*>@94Qr05tU6<QmUJ9Qfivoq-aVAsgDM@&om;XiMgMY2TfB_nwb`)v@)$p zX=B=w(%y6=<uUU(DNmZGNYSoex|trNJY$|CrI&e$l$YT}e=~rTLB^(-@Qh$v-ZrDi z(fGiOCuM^9n3Tz8Dme|)O)M#&nYpAaz(Op+GORZ1NZDXEk`iyWkn)w;PRdU6H7UFC zE%unbr0g^MN%_$nBIRdugp{L5#0hhXl(UA*CK~ciKaI~NQi2$ZAZblHQqr4@q+~W( zNy%<<kdo8nBIQ<d8!2~~Jf!3``A8{X?k1(MDN0IlQ-YLGQ;L)_sD!Gf1{sc;rXDE` z%zdOZGEK;lcpD7$_rzg25}@%Lb+|qw-AoTsG<L&({Kjy$<r8c~JT_w+c3_wJhLms3 z-??7<1-?fZV@2Aat!Yn6NAnmdkDDh+dCGJprJLzN$}{FUQeH4GlG5AsA*HW*gOnj= z7%A7+Yp0iw-@`VugOpw78&bYCdq~-9_K~vR{7A|n^D`+&%u!N~nG>X(GN(y7YtEB$ z(Oe=Wh_OPF)}$jPy~#*QW|Nha>?Q{(IZZB7ZZ)@&a)-%7N?wzX6s^@Rcbmeb6g9<3 zDPclMiGs#S#RpT{gZl0-!OipQ`mo*ntwDG3^CGQDM@o8=k(A6PD=FDc4pMTOT%_D; zZX@LmlZTYNCLbvU%-y6EHbqG(Zc306YD$q(#*`zaf~iDG6;q9r8YY62TBZ&u^-Kd& z?lX-@X=3gt<w4VwlxC&{DXmOvQreidq_j63NqNjXPRf(!DN?$cZlv@u&yez*d4ZG{ zO>a{An7*X+Hv>o+XkH`b4Ksw4VdhOzMw++Du^4B@lQO}4Ov)rPg_LP#Iw>>EOj2f> zIi$=p3rJaHmXNZ{EGOl2vx<~8W*sSCm@i4$WHyts)odeWhuKBSH|ASX_L#k->@)jG z`OzFA<!5t*l%wVtDJRS+Qcjz*q?|VwNx6jddFg}4wXV}Xkgpw%cM*e0h=m(hF^}6R zt=k^YeQy5d9o*KqiXY)WuHrP?-9mi&kTM)&kSU)}HZnVMnov^8no6WpMK#n#12i_# zWFNd@;tTToM%X?44Wg~-NOnSJ^8_hfOgB<`peLS1Z}c_&Nf}@UlJc5)gOnj=7%6X> zk)*tB-X&#}8BNMqGmez;W&$Z6n@OZhG1EwyZf1}&)66Dij+sZw|6}hy;HxUr_3y7x zLq~xC0uqW4dT7!DB=k;@-X!#(KtfYgO6XNVMFjx~(u)wJ_s~H>f^-21MMMEX0qOGo zuIziw$>a}~nKS3iJ12hTJJ(*>DVx3aUVE*l+|PQmk(AA5D=FK|4pMfRJ*4b2Uy^db z93<tCIZVn?bDWfu<`gMs%vn;-nG2-my<9cwtCXAOY5kQ!^xsK!Q<Ie1rY<S<O+!)| zn<k_*HO)zBX<C!g*0d+3gXu_0XVaCG?xqJRubN(@3^OB08D++hGR{mO<!v*Gly}Yh zq<mmLB4wJHPO5)1A9G{m1yhieLZ%2Q#Y_pZBubmIq?9uiNU3BhlTy_Lky72%B&D{g zOG<sykd(%z2`NoYb5dHG)};I^)`1_$?|st@B4wx<M#=~?ij*;CA}Q~fcS(64AK)W1 zjg;wTCMmPbY*OZ!d88~bi%3~+R+F;UtS4oo*-Xk-vyGG;W-lq4LnVidYQW1;bDWfu zMs?wD;a8(|i|@mqKHh}$leVhg_W`vNkO^7g_N)3OqrM2-`q+O|?>ZtSeQFqiC)Kxh z>pMqhqb3eQdNaoY&(RQ48jaxA$?VSU;h2s!cv?NogWUHck{<Qczbr?pzU8YJjak@$ z!}tj)X=urdN@#&FjECxB#vhM-j_vs4k#ijX`|-%l*^WORc@o?4$0P4!TVs+%4LGTg z22ZM=nU_YJ>L|jlkN{M{%VrQML(EcAR+!_Y+%alb_!??gkQ?|Jx9}@cq@dI|e0)7h zk!28QYLN1h=}30Ln;3%ecn2{!jdSKZ@)EA#I+AdHAex&gI{(l)M;4Qf%!T~Mk1T|u zC<dLAltgKiht5ZI9#Y>-CKq54mLUo&um)?f38!$zTqM84Ej-T4bC8c~F!&-52AS#P zYOFOeq@2ciM83dr0L!ozo3IVLu?Jt^OB}>uoHrLq`5sqs7mty=0Q&@i#$CTSgze7g zg)l@H<on?iA`A0==EYJ2wb1~Dc<)Nb-#G6=s7dpfe<yO{c?6g$q_i_HlXBktKwiba zb3fVNjr;$J;{X!tx_aum#xS?@I(}mxKE`h}>ORJAEavwZzdcS$CMA=R$;jknaxw*( zf=o%KB)v&*G8LJMOiiXH(~xP%v}9T`9hr_yPo^g`kQvB~WX8X>lSU=ya}Qh1HgY?5 zVi)!px4w+(p0-45bU?Uq>z|%u`y$->r>cFLu>NV)l+3|K6jbjtE1p#Ev?yOcg0r}Q zA8-RnQ_&BDN~i*NoxaB0ZjP3SU*B{D+p24tu#Sw@+jHy4xOGjvQuF)qq&hDR`1<eF zF;#t+E!YLsFLmp+Xx+Q`^-CYJ?UjbV1Jx}}SZ}2PUu%J<)h$g}4`n~!>()VW(t2u^ zRv~Mk7V4lL8sJHFN>$Hf3wB~R_Tmfdhg+xQJhxS!L~Fc>>XIZy6(p=jqV?RKRF_os zN1j$sMC-Dtj!43Kqz&n_l=$^X*R#D5s!MvnsGi3NB&;)9gtoyK5r6%&Dr~nv{JNr@ z*zSVv=!N)oMpajIlKGfaJ&<R!^7)BUD2<n(`WS9K46P5Q^}wD~C)BNLp>?}d7gY5s zwDy+jRcOtv{!l%NXzYhumqKf7l|^-^uBW?(mg;#fh3a`~-7MAZ%+DBL)$IH}7oV|M zW9<U5#W?;z^#b04TTj!iqv_Vq%(sy1A87vnFsy>sDcWV?*Uv1xh|fK|ga~MDqE*<6 z`1LYhT+CxPs*S1n|8HS1ey={JYGi5+A=Lr6Z7wYF%;$IOVE$2k%Y=0-wcbb)s9t4F zxOFNcxIG+E(7Gb-d}DP=yY(qcal0mJLGy`+V<og^h~^WkCS}oQJ+&w`huED*tXh=u z>rh^1+npb*x|0d#`!?Wf?mXX4+}64rWi#_TP#ra)I+NR=+L7-3U9Fkn){FG_VXi1N zhgVc5QgtCUPq#3Na_+CSEL8I`;e1=we+)EQlR^%`oo}o4Cp6bq-1?7YpJU!H-1?8I z`{>qt)LIi-L&BYBtF<H&&a3^sdX7Q4_;(w(uH$&NwLV1r`LkLhLUkS8d9$kPnADUZ z-TAYs@u+#I(gf~&RMl^E=bx%}V_f~l*uPdsu{PHb;{P+X=n;$_2*)@yPRg}BIy^(4 z2HZNtT{%~mE+su8IaiPyxC>Uzij#!QjR-u(4JNKU&XE3Z^}F5AHGRH_K1)RPw8Z_q z*v_$B+~d5C=i(l}b-WhUd=edhBrT6oiu-eIfKPaAsypk}Pjz3nZXHy&?x|bnRIfKt z4NP(CU%K@q*YdBFF+4}&)-}@Fh2kDpvvK_(#f`?t&j5#sI2%ZbqHp;3`ir%WvZy~v zigL_+1q01=ax41yKDj+NoWHMjShxLkP*G3&=?spsYF`Rp;Ni9hs2$)QRG*{+RHH=x z=(^pV=lU}LCi%VVOVuCr;qgks>&lLNtqTTY2;Rnj$8}_Oo`YQYE7y@#`Tm;F_2dVb zh8dWJ+4vN5F%P=Nbgwf%<8~BQApUjc0k&gs2#3v4@)XV(_xjVl?p&4c$=8{>#!Psf zx#k7Wb!IgASFbbw%=KmO0({OE<agr|u46<YYAfOdPT?UQLD!e!*3)#aGZS7{{ySec z{wu~;#;v1r+$(W?5w5|tzDNkK`!MJ{@F1S{xx}|<=}p!SqzwdZq2o-5d5au^*;s%@ zhC^3eJJ>Q(qObyM%tlhSn&YJ0F&TY1--JJ^AP7y-94})s53B=^+u=PofcL``JTAg^ zagMw2^5=R4-tdLi36(03XmdwR-Xpb;iXY))%<(m&NJ-BZGQbao;H01}2xm-&l-!TW z-n3WayxGh-q8u<ZWjVsbi=*d7+<$*IU&aQY0xF^!k6qI8STi6OawCYxS_4TQd!!_# z6FMV;pLx=Hsh57HT>;vU!neh#O3Jw89=Z5;<;D@?@NY|kd!`)!KB-_TlU2}#C$KB( zWu)y7otU>N-4Tl3)DM)hS-Ji|Qfm82Dx>v@YhoeSHA~PY2d^=_j1CwKtq-jAd;>59 zLv`Di{u9(jT@>dZCIO}?*$hc|?&R@YkM#3-UUAcCEmwJMA!7)jbyp9f#3GNq<UX|L z1fm0O;AdQ6C(29g6KR2#@M2#`dXt-!j;2Lw&f(EK19e*9u76mY*GnC^>lFq)!?`VX zVK=nypnMChJE-*pE1(hrptS;}KIi@ou$^=M9oUEC(0X{)5WqQp71ZEdOSGn(RO4K{ zI;LX=f;bnihC7@$YyC8>k5&U(w=4|qI%Qg)tUPL%slBOJ19x4ovENV^1U($ipHRZf z!yV5TnuOO0W}44QxyiYTv`FUBij+>AbIFHhE-4F5vFAPGW!&)%eRyq19bWu8pU`=j z<UK;obF@H9jK>6Q!B+f&n<#LU8dYe6ws;4VupK+_EAF81G5QGbGCJTrypQM3dNkmA zp&>$z-iyLRiNi}Z?tQ7_Y$a4RLwF9vJ@0kjuRD0(O4<}2IY@cZ`#3f4;k4$iy`TNP zJ@4O_NpauDZPN4pgEws_k`B+peSddM@V>snd;40v_xBOr<HzugNy7U)IlTYi{obDU zc*6I4)xYq558?@w2Bs0&818XEp9eY){AS02biC)?<G}B||Mw(#|DWZ(FA0wW!Myi% z9B794$APrG@5MbHJjd-ENO)Z6!q-IW;!2FsI<lg5V#Pgv+~62;8x_+qe+usUtxr0x zXx-Gma$HGxJZYGj*FUt*r;aPT@Q)r>W^-)Ox{^A+R7W3^@HpeHv-qUrO@(;Jn~xG4 zZ^m$}8IOeXEz;j-f8!aGiOh`LCJ!n3kRJt62)t_k+<Xw{@7EIx;wRf68pm(~-@@Uc zNfJXBt|KW7yV?<UZJe~Eq&Mu!xTSG9)T=a|ruoJ3A%&)!I6TF1Q{{Mi9pMlj$Cs46 zCO;_!j2|h5O;J*c8-G$tnKGojXey9W$y6q#stF>cx~WM@ZBvhw2Br}y!R94Wnwb`) zv@&f-X=h$0CB$?hrHkoCN~n2-l%A$HDdDCsDgDiBqzuFxc*_hXWf+EIq!~?)!8lC7 zJ9roGV+uaRRLsCk%t9nSHFHUsj|Es{mXfjz%drA0vD&O9*I|>{Ny;Ac1t|y2K~fHx z!=&(07e|*;a?+e4<y#X=%6W5<luPC^DL<O4r2J%lCgqm-mAs4l<{>G+8Q!LPt2#+c zGE!0)Z&Fg5w4|gr8A*B8WG2POWFzG{larL^jV~#AO@2}e7(Y@9o1&x?H~yrQG8M^6 zsEjHIGS$gisAKAp(!ew#C7g2x>1(uJg$y;SUG=p3Rg<{yUChQDEWtseu?t6V!hA!@ zY4a^9vF1D}7tJM7E}I`oxoUnQMdKmlj=4wP$0L;BJTSy`(m5fzm~Nzmnpa5aX?l|q zZu*ka-@Hc3K=URkgUk?8B8=*K$wc!GDU;26q)ag%k}}nNOv()N2`Q20Q&Q%d`J^l~ zi%D5(mXQ)=J||_BSwqS?vw@UNW(z6N*oGZu7b$zpK2p9k2S|xAUz2jg93$m~`G%C! z=37!?&3RHTnoFcyHb0Vb)%--t4f6{rx6H4k+%@+}d1!tk#o?S<l9*(qq%hv3q&8_u zNpCWe@~p{BijT=g%5x?sDbE{UQu3Poq!ciIq!czqNhxkhk}dGG`c9FYzu(4W&aF3K zGgOz}dEO%lDalL<QoK!SQqr3Aq+~SDl9Ji@kdn<jM@mlfJSn~=FDdy=0aE--VN!~k z;-vVSQlykIFOpK;R3s(9R3RnMR3oK^sYOa1Q;(DerV%N@<|R^^nHHq9GHpm{XI>^H z#B?I1i|Iy6sCk8yo~Ab`;ifMs{mpBn3^Z?&GRO=eCBh6RWuzHR%2+d=l!@jYQYM@C zNSR_jAtlm$O3GX_pOl4WF)2&UGE$<<=cKGMYe-pVHjuK(Y#}AuY$s)>*-gq`^93pU z%~zzvn6F7WVvdn=!hA!@Y4a^9vF1D}7tJM7E}I`oxoUnQ<%ao%lw0OkQtq1jq&zgg zk>Z`3>mOu8F8HAY%A+dW^(I<#TiTlTq-dQ92}KyzVI%h9OPs(dT!z+@xQho!lE)(@ zDQS=n8SyN#nCxUO<TnLK@iT?VV(>?4R6$kLG$CXdMi{qUTa7Cv5Mnx!UC`b1Amvrl ziws9!Gk}yKh`?|&l9bVAEGgs7L{i={lSz5cOd;h%GnJH&%?wgLF_ENvYUYwM-z+3$ zu~|yWG80A0=VlctYs@-QHkeJMY%$TKY&Sbe*=_cc@`c$?%2y_al&{SZQjVDuq<mve zlk%;JCFQ)iLdrGs3n_uL>qs?IgOpmP4k`6a15z59U{YQ(%}8lsT9MMmv?JwZ6GBQS z(}k37CX|#{OixlG%y3dhn$e_;HRDN{Xx<@ZvU!h`Dds~`rkamQ(K;ZK-xMIl&lD!5 zs3}fLDN}}&7fpFmDw+UNs+d4hs+k(3)G~EQsb?CH(#Qmp@{(yrN(<A9ls2XvDKDE4 zQaYI~q;xZ(q`YE!lG59}LCRZZFgXMfW;iJ$&1h04n72upY~CZ~Lo=0>kIf8HJ~5G` zd}`*BGT$sDWigf^3ahZjtRrQE*+j|~6HUr?vy<F|eI|yKW99@Yw@seM?0cv&t03I^ zX@68FEg~&-wV-tXwj!`M?dMScbas?MLxf@&W|&XNS@_h<Bj;lgmSP!JBL+Vp84VZ7 zkrJtq4w>PDoG6b9sDvsAL=Dt3^~hlK#3)2!J&xcSypPexh5$52IL2Wi)SrDGs-vEh zMibRfZvoX!pA6MY|H7z9L>@e?KQ{ilSz3GC`HjzYI9{IhR%zn?+j^a9f9zm7l5c{h z>o{)RmbGll1`|!X?UlcB`!2T8p72-K#e9qF^udVV-tcGYWRKt)Yz)Rj^Sj;a8Lf#a zAsCBy@n^;<C#<XOj$8Ik!RJ1D!>y}*n%ie_89(A79-E9QIX0moRv;R;ao;>5#i1`H zaa~M~`>8qBqc-ZGJ{rOuFP*Tyb~o-DfW&n%8S|8ezI=R)8Ripm7Up0s7Gg1$VLdd4 zFX1@w#C0(_zhH1j;<}hz_tA%&9f|8=@|j5cmpgv+zoX80;<}hzKhuBT51NONxGpB= z%D!B`;+*-8yn%%6A*pGv$b>8=8~I1=AQkwY0J!ZRb-CThs2yZ19Ik~gLf6Qu3GlRf z0RF{j3xU?e{NG*|^J7k4XX0N~&%DTdPuoBksrfF0p?c;&BkKaj0w6EOLf36yK-WB) z+Z}&ix8`#Hg2eSPY5O})J0B9(vrIT|J=X);7VwX(kJ<hq*XnrMI+^z#@%QaI$d@dE z(kO$5XpBClA1SY!H%NKQ3?^kL9wH;xwAtZa-&W<e1fdNQ*VAOITXHXF3O>Le)gjP8 zmlsoVeU0V_L3e1L!;|U~XfRB2c$?H@S(HP01emI1bA%vqJx$sVGSFUua3rp$>E)El zL>&v1MFk|Tr}_WR?@L@y)601__kYa?Ok7WsF{aDCoCkP>-=Jc<c~|g$GQs3aXl}ZY z-SM}2)tkJWR}hXth`?A(#xx|Zr|D@APFzou*Vp&FzAm%A1`^lPWG)7SA!lO_=3x<* zK=Ze5JYaoNa7Fp&#wXuR;^ewdL%#F(<CNWggCOove?dn)sh{AV?H|xs#QxA2MAcn> zQvbly#v{7p5H){Q;{k{LiT;6v?fz=-uLrgFhoKMLcK^inH0h^L<#C!kgR?k?#Pu{8 zQ$pMND2&HDn2h)EkF?V#uBXWup7e|(FoEPhx}K)i)ZA>M$(`7364%qDO_6r)Y-of3 zj&|<E^)%`8Wvp!CdYZK3<zbuw{z^Nv>eFhB)?aCl{-0h?^IzHioVcDQW2P1}KM5;L z{B?#l^R;NRos?7fPg_s(&$MU%qwUphJ9Yf_>6x@st7gy^Y{wpafrI!O$MFqLLz5HJ zARP+84;2xB%BYHl2u6EE;64JqyqFWmb`r*DArdigk|wUh`OmgTYa(dkI-H)hI7d8_ zxDIFHI-ImI=3-1JUP0nIod3G^+5c;Gq7v8Pq}~MWi>*ytQrepiq;y0lbTQq@SI`rE z(I2nl4Gh8%6G4u{1pHq6=0Dr6x#{Cf4#VA?@>R0X;>kD;wo{YAY@enXG|BW#Dvj&- zH_zhGoahu}o1ubEFx!2}A~P~MG$lB(t+K?;p-;j#Lyn!X-Lg0{$xybllHspraeDLn zrr37ukSxv!z8-DccZX+jI&y!WnV#==KIHea-O#otFUsQdV|(bVOmUCHZ*!Ko-+P&D zP0NgB`x!DN6F2qvL$_qn5M#%eZJOttg>3I2r?IWa7rir!^AXvPZT<TP?#mMQbEDbT zzh^JooRv9k*``^*iDBE1JjM32WX3PEI8De6vokqa$f*aiIE~0p*w)|mj>+P1+2@r1 z)bo60Je0+Gl_$76+xmN<SJ~zd47dBE?__bx^Ywjf>+we1%i_@V>Re!38O65#T?OZO z9*=WB3oY7=*<d>}nUQTh-m82+O>Ry$wzWfZaK9c;wr73f*8fY+w(gHA;1l<A&(HPj z-{68iaX;UDp6B^*#db=*Z#3I_Jd@d;#UEVCwq6Hg1ALtE<SG096M;T)&&!YVGdUUg zdT5Z3bAwF2Ad{1qyj;g8?(Y_3ThCWuT_1;XR?KV36t~~J>-og}-nMM(`S-K!Ft+u4 z)nQxvc?8>f9{lS2IHSpQ3qAL@YU~rYU;WtD&quJW?{CJo_FqV_=l(FZ_4ToA>)*H7 zzCW66y{`AOt*`qv@ripsTx47OJCJQXzfBi;9&a7CgV`>^ww}+uO?~42ok5E|`{P72 zAEzf@pUk#im*rde#62&^*w*v8j_nCNpJ|ua>#3LL-=CTL_51v%+UuD6<KBPVpOXDK zf^GeL=qMlOV}4$bS@fU2uAkNS>p94cp_qlwOio@*lAbvclE&8~J(&T1D2@<>;W1-- zM0Hdjz`qRFHi)E8at`_(@^apU{^FDBs_ID$)8pnvGY)@tK7u>{pgxba0}|Ft*ZhO{ z_0lyD;ToP{=ZQZw55cXMeudjN;m$u${q*d3QvGzzOK6R@n2K5W0_UK5>PdK_RYzR{ zOb}TI4NVg=VLkO>d~K6aU3J+8)mJ}Y-1@WU*}j0^jOwc=L4XM&e{bGEIQRE~<_fs; z1%`8bli5b@g6ggB#Q}4kyny?lJbqlgb=6!CFjdH^2!iUbH#E&j)yeII&KPbq-d>`O z#@dTpM>p=p$_qA`2_Qvv*aH#24tqnko1+Cfp)-b=O{8o!Zhc<WWf#?CKY*h+hV!@p zy?MM)2?22H_y%!X_1PO5x2|s|wmV~(`GOR;-tX7kK7wP$t^b>_K6`E6pp6i}KD+9& z@5NVe$Dx<y;3wrw1yWSEeF!2j5~DE&3G2A;=4(=ngR(zLp&TlpA}T|5-CH4kUHABP z+=p}DD2#?`x{GSLOM4Ek8Yiy0?wRqly6$eB=Cyp!X6!cm$ip~e63*Ll>lH8JSS7xE zXyipf_@R`kKvsh4!e@hO!%GX(id3EW5Yvg2uIPz=7=)oFigfG8CuOX58B|1osYXit z@!Z4M{uJ}D5UMY~1gbB8$y_FXz%_H7RNeWad?=NMYR{KL48Fz@#Ns?I<C?ie%3a(; zG<E$RBQ3{liNOtAFUs%7&|)63<YN@}XZ$CoLF0)v*0(R*@xE?-`x|^s<9^*b_bC=q z=K^lM`xm%f07cDCau;IpGve2~FSdwzPG|zvyC05~W(~O>o3I(*nL>;CJVHs7LRloN zhp(FWgG>}DpJNr)VjWZqe=D|`tK>EOYQ9^--^68ejTE;|e!_9HZr$!jwB<=GZFurW z_4LcrMpY42&3EJ_B&@UlC_VK^Q7eOIeBy9Y;}g9ydZ_+>Erc7l4*yWLhhZhwU_CbA zN%i=P&_+}YWzf&4F8?sB!4~YpeyBFTlz7(5DTy-XMe=EN`p<IT1^fur>-VzpgaM>m z?>vy(;?_Oy#_gU6M}L&h%yWfmsDWDMWm4Qa=_|Rt4jYVHH+?JH(b$e1aO<dlp2bu5 ze-pVGTM-Sn{(os7_7f_bs-(LPfYt)|%tVn|7htW?`T)6+7cZb7il78@cFUmxD#ESf zUMV|m#;9U6wos11T`%Aiw_}aFUO;II*OiC6UO;Vbi`ETjf!1)>5BQMVQ!x$xIsa=N zfy&&jYTWe%7PB3N&#@A#u?D}lzCcadmfUp(-1P)L;A`@c(YgY+;4p4b>k7PR;|H~t zfM^V%1eWorO*Y4kSNJ*jbFuUy+;s;gg)yEQ7tQaDk5ire?&txxUjAF$9*$9%fW`O> z)xPF+1}$FyA}XOL2AGkgOvfzD#&W2LTMBq18*(5I@*zJ8pfDyG|8x9)EIaRUmAsCt z6o0!8cU)Hu<~Y~GgPR-=;LCaTP@Ub|JZ4>7#I1$E@p2GSJ08wbZXl;APf9ZrPRc~H zkd&P!mXwDk+h=^PqKpY9rKcH7%3Kpo%4u_#l+4RK{7GqGLP;5EB1zd~PLOiTWL(ZQ zFN&Hvq;xS6q|7kuNI7C|kdija!;h32CWMqhW-2MGObjVkjrR(!`H|lQlG4r$BxQ<; zB4xk1OiHrPJ$y+CFs(@GZzhwn)a)hYqH$KT|B=&_C#9JQCuO2pNXkwVOUgr&Z58_; zWlS(BJ<V8B=9*|yPMf==WM)FW_?rf#gqo40M4C;coG`aY$+*U&C@FPJ7g8e33{uva zBc$9gY1gv<;b&@)5@H6CGS#diCB|GO#e1Dceo_KWJ5mOkDWpW1{iIwr$=0*~;cEg& zX=VD8GTAI8Wv{tNid(24=LTK_C~umP5^g4vve4`#CDuG7CEG@iGNc5Xo}`R5b4iId zr%AbMGH+u4!{0O@CDe>0CDLpn<%GFKO2*9|MM<e+x{wlKW{|SZ93ka~NxOyp4?k0b zln^tBl&NMFDKX|MDc)N>@{<y1+L1EQOd%!8>?h^2Nfyoihp!1BrIqPV%4D;Yl)dI6 zDb6;JoTQXD%}5D16G>TUc9Ifn9+Hx6yGI#Pf=y3S#+tdLM4Qv3+%=hZu>aw28juod zMv@X~Hj#3|+#)68PLHCb)G=L1i7+!rS!a%ra>JzE#r}t%sX<DJ8AQrdvx<}$bCneD z-5&W#2{i3U8EB@E5@q(2a@i!?!~Tb_2_U7F=}*dJvy_y*<{~N1UXPrllsC;t2{#i- zS!i~W5^Elkl5L+y8B&5xPg2I3xuis!)1=%rnZIEF!{0O@CDe>0CDLpn<%GFKO2#ie zijq>tbRi|e%phf*IYP<}lXgG*AAY6=DIsPMDO1fVQew<iQoIj%<R>N2v?FDpnL<jG z*-y%4lk6+@KYUF9DXmO@QYM?Fr0g{pNpTK(<RqoMX+}!8nMle)vy+rq^N^HmF&<?| z2{t`R8EfW}5^YYCa@S-&#QulBX+TP-8A(c{*+j|-bBmOWUwafKrH<)BN`#p~$~tp| zlp7}PVfH`#Obt>(%pg*xnpLF4n5(3CAMwafN}y>+%0M%Plqj>Gl*=aBQT9K4O#msa zOn*`)o28`eH5W;VD^7HbeQ(N>(#(XDGSMs~Wv7WH<)O)Toc)h7CYY3-W-KXQOKEpQ zE|fzBG(~fSp${hDZ7jed?7%LZ#W_5{BV_%IHhPpsSu{oyyoz2JgK?OHdDx0=IE6E~ zgL}xdj4{3_fs&|?hUktS7=clkh1uAM%{Y#exQW}yu$;aH6hSf6MqPA9R}954Ovg;D z#d;jZQC!E*NE1b~GYX;*s-q@4pd;SGV0?sWSc%m*h(ox7Ye>0*J|E=63#f`9v_*To zjyLc=KEQIUz?V3H@9_hYeoj9faw88ap)y*cHTq!yCgEKy!DrZmeYk+{@EBez+5gCe za;Si&XpS)S!34aG1z3a~*oCt=hX;6stgG1nD2=jcj3#&$y)XvjFbDIn729wMXK)Ai zkZCphA0<!{_0bUB(E}qe3bQa98?hP3aS}Ii8yVKH|4{_RP#bm88C@|H!!R8)u@>ub z7)Nm(KO@ar_CE@u5UQglI-n!o!eD%aX;_KXIEX{If@?_0HA5=o!waa2Ahbn$ypA{U zK0d&5tiYEzfba1Gl5)L}9J!GPl~5Ti(Hi|Q0F&@8mf$n&!9HBTcX$jht`%}17s{am znxZ+v&<7LnHWpwJc3>CI;v62}5wdd4kR7E_7LCyauc8;mU>xRP9=2i|PT>sh;2tt@ zy^sYZP!jdg5Z%!OBQOfHFdG}O8OL!FH*p&oxMp|;MNka2Q5T)j6+<x$(=iiku^xwU z6xZ=H(r~?y4h2yN)lm~2&=GH8Fh0UGti);@#35Y4HKgR4Ar<oB1yn^4+M+#P#~XMb zA7D9F;7c69_xJ%xquKw+jXbD?%4mt!=!XHAgm<w7pJ5O7;R3$HV|a0`kOR3;4i(T8 z%@Kw^n1Hvj0E@5#yKolg@BojHm1~CVD2=jcj3#&$y)XvjFbDIn729wMXK)AikcsPs zEGU7JsE>x|jvg3+QJ96<*oe(Ij+3~F+sME*!!sy?VyKO}=!~uyieZ?JnOKYUIE<sX zj-Qc+>xFbEh(f52n&^OzcngE^5vE}!R^uQJ;R>!HCD#n8kPk1QDuU1!?eRL^!29?B z%drAq;sCzK4@k=OLUQCr9#leQv_xz4!vIXeyI6wHum}5a0pH;<ytr1#fm|qu3TTSv z2tyxCz}r}WMc9E|IE!<5fJey6HA8lkMp-mQ6TFIE7=v+`gL&ABZ8(K9xPyDh#PvcJ zlt4+;M?-W+4~)Pl%))GJ#AY1FN!-M3WZ;_N85BV=)J9!&Mpq2QFigixti^g9#!+0y z&q%YM{f~kugzBh?4(N!tFc=?U8dhR84&o55;2KgMVE-c@UO-g@p)K0ub-aQ1@d1`& z1-`@qe2*WH^egs1aw88ap)y*cHTq!yCgEKy!DrZmeYk+{@EBeP+5gCea;Si&XpS)S z!34aG1z3a~*oCt=hX;6stTF6=ltx)JMiab>UKoRMn1gxPifuTBGq{6$$aIMPj}j<} z`e=ym=z$R!g;|)5jo6IiIEkCMjSOG2|4{_RP#bm88C@|H!!R8)u@>ub7)Nm(KO@ay z_CE@u5UQglI-n!o!eD%aX;_KXIEX{If@?^5g#C|vcmY)rgtlmp*YO74#|K!B75EYd z@I8J&(xdEu<VGG;LS?i>YxKhaOv1ZZg3quA`)~o@;W509vHy_^<xl}l(Hvpug9&&W z3$O?~unT8#4iE4MS&y^-Q5t2@7)|ghdSML4VGf)W{2Oq_WJt;WLc(<?8>M611rn}5 zx&0aX2T_%NHVHBnpQFDHBQXxO=+BZQ^i@gHR6KvEWU7#XsEY<@gvJ<-5!i}o?7?1q ziTy~L+C%j~12MvEA)~R+d`a#{k~Dlj0!?kQ4(g);wwi6^cI?Jpe1ZM&O3Tk92sJPq zBe2CpliRQZJFy3Q@ddubO_PM@GAXJe5b^6sHeh==Mj!@<a01`r7u-bY^d2iosgi-; zg`uWoM&7figaEWaON=zCDJW&k8dA1k7xrK;@?~e70t%rB{8196Q6AZ!W4#SDH!Vr& zg}z9Z!=n-@l@WyMsDa^THYxM50E^A{r2L4h_{sc2st#cOoIEa+L0OzLcSy;%kne$N zsYwKeVHI}ZrA55YFv6@NS7QS<Vhf^CVln@AltvjeG*?LZ3D<GkTv$ST0xscu{D2>E z)x<5b#`uCHW;iKP_#A7o4n=uyNlnzkaI=zJjjf2rSElH*UQTh8LTQvWvE+FqVQfHB zR5d|l4b(;*)JH>fLT8kv@4p-Z5rmp%1^GGFn~mfqY%$wNiDGQP3arCMY%%`y`<Fr` z1fYspO3E@U#~M?Bu>ew(F#yF;-jw8cQx@e=9+gcXDb>s&@-R;0EH0V~9Gj#iTHzy8 zg1&pHViu9I!mJ`?Jjb+m@II#CLvx!x`(Ke%$2ycjSyVw)1eqrE!;irY{ETjgJbIC` z@EJZI;MTzl;r0SV9p~7DbiN*6@6F^S;c$L;rf0lu@@UU^T;~&?xN*GR`#j^Jr?TDC zi}x_wgmZV1Pu$OyVOu}%z1Z{f<!w77+mral%4{d){;_L3+tt|SV}du4Puw`;gyVgK zxjzke59I!NWLviN_agUt{$6|Aj<W5}Z0q+&v#sw7LK}3%o8WB~XEiAsOf<<yUflYJ zzmj)xoPWr-c#MQ~LEhw#B&-|$&(;NLmz*(jCWKV|@bTs*DZYHZ)<a@_5XP9L;<E<p zvDqZn2jSe4H%td~L?1JPl*IZVp7YOUocpvu2Xw@n7>ZH&5FcX&R$?PIn`m-3;tp1v zBL$*1>Y^vcVj`Zlu2~G{P51E-b)MzDjD`qC3$!wA$o2@qSd7Qpn2acVj@4L)Er>ST z$z9lsV>p3~nHV38|BX5uzS%f-BLX8a1`Dy+M3J}Qa1Qu99M1K8keqX}(x{0B7=cJE z!*XoEchF>#d}xTqXoJCsz*r<)Kkf&<b`?M2CjPI~$;h6EYeM8V1xWETg-NYjRRR?d zfU2m8x@crV$g$A6RX@Nf%K0g-;D57jMv3A)b|m-rs6+<nc1gaDl6VJ^*a|0-_vu`& zi|`0Kxkx*o_X_?@{R{5}T#MoN>Mnb6U62&XkrJtq7I_hfei)9G_yu?Hz&s*<L+VAe zEx;eO5CV-e9Es0y(CDPb4}qwL8mNz0{D@z03tmgOR7WbL$20JOFABg9#o>=02*-Ii zOFh^5?)jp79+|Lya_|F=n>dW8)j@vnh~N7g{it{is$ZP29z<dt2(A&RQ@j%Eu@Rf# z{QsaXabg_^PYsCIxRy?=1HssCuD#b8E&5&rT1V?F9wP<U(5XyXG83}E2iZ^p3EKrD z`Pu?3MhwoG3#7y?D$g}|8kB<Dju^~sX$Q3@&NNZvU1$+{Z=^<X1e(6&Bsg4`r+_z7 zAr1WDwo8U^yDR?B)P30W`*m{@>oU;(63gp`xdug14wcc!OlHo(XNblX#4z{Z3Sz%! zUJ@?j3a;TN+(7*Lvs#C(I_euOOrI3VksEoC7x_&=QVO9I%Ag!7m`bEnGqp*nYwDBI z5RK6UFQJ)HO@@Dmx(rWSmo6`-GNMMJ|Fn70>IZS>M5`Y}{T@%62d#dP`17DO|2ckt zh~`57-aKgamALbu)n8H#weh6&)1EXBT74_-JZSZ=?1JV&tB*zfE1C=aq<PRu)9`nV z=0R)zbNqgnhHU@dJm`e|FbDYl`17EXrRDdVDx~^lYM~D5p&^<h;rwUy+qm<e)qkV@ z8qIlj`)dwx`zYeidv^P89NH4pe-nTHv*ta=@5j*`=qJs8R=<wsK8xl*$DjACex9>% z`*}*zw<Bdx5&!J`XSbh7^PvCC{O2OHcW9oo`j6tzbMC};7j#E2^g(|N$J>}>J|<@( z{(NWkJ88bN`kr1wQ}jhYXuk7bo!9L4OS$uyHGf(CQSQ9ur_E1R-<0Mjs~;-<d}Q@W zsV~Z%f9&=%C7fUUq<O{abNb($SFHXn^>exNisScp{n7kl^@C}CvHHSRLj7Lx=MyKK zKde5mw=fu*J1l=Re^`BGZa<mk5UZce?HBuZoHwj~I`z^0-n?PA-|lJig*8vu?Z1mZ zUs!#4>c><6ojYGx{dk%$tbV+w%@20x1*;!V>x{Vbf}hln=gtpy`|}dc6ITD8<_5=~ z7wpdWU2Xk#@#pud-_D)StGT<Hx2t)&>X&op=f>}k(>z_x(T(39r+K>Sk8|hg#&X;3 zkBdJ~SN(ENny2f|&z;8o>Z5xR<)Jyb?tEPJ)%}(Ew{Ab4I}ca=d76W(`M2uFbLZd2 z@6W4f{ds?7{;k{JmvA1g+yD1_^Kmr~SABwg@t-mew*#kiQo`4xDjA4oCgD0;?)q4t zIUJwi(5I&HD{g(BKN`p4*6&Hr@6Uk3D2@<xK{tfKt>1I+F>QNDIPT?X^?baTV=M{R z2hjRtk{f?@owCOKOi6#nH()wuAQJcS5RY+#w$aCkDMkAuoYI_oK<kI8KI@I;yq58# z^;Wdzith@~x+@9SS*ggclC@?G=ikzSK25o03i|T7gG{suN^|oZe_M+3^HRwS;djV5 zeqPeD57VKixl8A=)ZlkYMt+}UHo>GcGimu7lEW0|??^U&Haqg0m-v23$@fWm!zrc1 zsh%^+`0@RPz*Fl~KnRaZ>p8z_Zjkp7&12k$ZmD?P;1aGw>kWtD60V~ge;^E(a2?(F zV_~?2>*&TgUl=aoI)c-4zJ(Z^gfHi7g%FsLc7067G{kbg^aC=|7n2>e=!<EL7@R}| z=RxBz8PgD)gWroNtVbZ{D|Hc!*6^Lr-$4xL5GUa*qRkmGIEfp$hv3D0KW;2x8}2%G zk;xb*0snMdo1z<^ong3vdwB5~j?;+2N!;Lb?jC~q3~G%SoJ266Ev*raeemZqrUGL5 zocRI4d}g#pFvt1U2<BMb8j)CpV2;hL5kd`w9*D+11XBy4HNHAd8x{h&p0A4=T*KeP z4X)wuA(-p()^OKBDacbHz9zzl=N9@x3V0(mI+(Z@jz426fAWlzn7Yr$sm6GOgyS@> zaX-7?S$N7b?!g_W5yf^zFOEHSf5dm5x@&0}*TKuqS;ux}GWT^)oxE0;eBx>tjF0iu zty{=8FBj$<{{6U)8hn2$zV7?IPh2)-TfZ-qZC++hDZBp!+xq&eZ1eJVyf1s|x}Cr3 z+4f~Sh_5Fc_c567*T2W_N6)`!iv2!+w)OiGj`Jwa*CgTl(|upM*Zq3#3!$xPPs&?n zFe$tg<7_0QB2PkPOlM!sKsH~VGgLrD)I==|#t^)Xci^3m@unz*!f49_2tg<YU>A1d z60Tze4{j<>;1nL>5%iBshn&a-Ulc+$)0}JvZ(b|UATx3x7jmP@Bl`1@m19;mltm5H zMjf=q%kbtnmI{?jWm4Lj_M~(`2s)uNUi;O{83-pS#~=JB)tgIfS4nJFImTzHB(|&k z=e4V(<2W6I8~9h(YfEfbq5mwkmy;G5@Xyv`OKex+oRszzw{BWuyUKr!lTK_``SbP7 z64o{Qj8jh0$@V|eE|P|0sia2+6h?7`pbNSo4F7EVNJr=Q$913O{$FtyoTfTnoT5rn zqaiht(xf6Kjp5SMkqm}QO-E=hjl)~d5iTj?a4G3X4#Op+h773LFHRm(@|hP%DQF6j zQp6M^rGzO-N@-J;lyWE!UF%7JsX|JisYXf-Q;U>3sEhihAt{Yb6H=O*=A^VVtx0KX z+LO}3bR?y-=}Jm>(}NT)spIq_CCv08rJor<%IoG$QU;kJWCTW-QKXDD6Un#np80^3 zX_$^r%xqHTn0cfuG>ge4_{>C+vdXL>Wj!`vGqz&4*+<HL^A#yE=4(=pm}8`zFyD}J z8fS3UoFnCe`HmEZ55)O_lq=>MDc5lWH_dHQ?wJRqJTi|-@uE#alA7eCq%^5WNn_HH zlEFMfN+y$ql&mH@DLG6oQgWL-q~tR%kW$bTBBh8aMoI}&l9bY@fB;jK420TTq_(L` zN`2Fil*V`;A7CA#u??}fh(25!OFyGEX2qRPGMU@56kj0*hj0|fanhV3<%~H?$~kj^ zl<&;<r2Js6kaEpjCvQS)*UDY<fP4u5WW1Nr(R3!ItLaWk5A!N1y-XM>eM~=62AJ1L zdBeO#%3w2;lwoE9DQ}xeq`Yh1C*=e45h>HmbW&!TS)|N1b4ZzI7Lc;YEFtAHvz(L_ zW+f@B&012{n~kJwHd{&AZg!Hg+w3Lf3$ve;uW%5D%wbZFn&YILG^a>8W6qLt&Rihn zJM%p$KbR||Tr<~6`Ptkg<+iy)%02Udlt<<<DPGAvl9H0#q$DMkNkd9HlYx|HOeRvY zn5?8^H#tbjWpa~}$K)gB1yhieLZ%2Q#Y_oOLZJCtn%5zBnQ!q3?mPr17yB1p&wC^# zCAmpSN-C3vlyoKoDbJWpq+~H!Ny%<<kdn*fCMA!_N6HJPASs1R5mJho5~P$grAaAk z%8^pRR3fFasY*(asZL5wQ=62!rambRO=D7;n5LvOH!VqNZQ7F3-gF?Pqv=daSJR!8 z9_Ce2dYLd%`j~#C3^1>g@`ibfl)+{wDZ|VNQbw6Eq>M8YNO{{#BIRB4J}DnyCT5x0 zq|7n%NLgSOk+Q^mM#^%tf|QkJH7RS&dQvu;&7^EK+eq1Ac9F8j>?7q%bAXhC<`5}| z%~4X0o0FuRGG|CRYtE5!!F)%`_vQyuu9$12TsJ?Ha?{)<<&L>W$^-L=l*dS!oBk_g zfiDWeALS5;ng~WqgrGaZF&GgTgUR>^kywBztil?s#TK)j+=<=TgBTpfF&sxMzQ-@P zg<o+8eSAHJk}?@HkUEb?dNKntnG&RwF%?J&KxNcI{P{uQY!Agq6O*6k8~#Ok|DmJl zN_Io2d4-gorVlCo&>yd1Fou~Cq>M6SNEv4)kn*;fM9RD7eNsL!ACWT6OebZgnMKNM zGl!IUW&tUS%o0*QGs{U?VOEl|+N>pIz1c|0X0w%)ZDt24yUZR^_L(n9IbaTwa>yJe z<)}GM%1LvIlr!cmDd)@uQuDs98qNKZo5m@|XA26NVx$Dk_oz-vO;ekcx~4uU4NYTG znwX}fG&e0tX>Hn)(%y6+rK9OgN>|gJlpf|)QhJ$Tq>M15NEu_skut%&P0A$mE-CMu z4@mjQOe1AFW+LALj~7TOXbO>1#1tc?1WKZ`DN9N@Q-PF9rZOp2O%N&7O-)j2o4Tab zHw{T?Y?_eL)HElhrD;t{ThpGD4yGe1olRF#x|<%PylQ%p5{7|z(+nbIs2N7e2s4V5 zF=iqu@0fQ<c^@C(BQuSZ>1HM=v&?K#=9qb;EHH~mS#DO7vev98Wuw_l%2u<DlpSU- zDVl>Qhs<G8j+*17oHW0XxA3dEOWud(`?WzkxbyzDay#MtK6kxlKgMP>#tA&YN6A@> z0dw%Ad210Vy&M^VQ5b_Le2xu>PV43Tg6M3Xc|jq)y_}(Vj)srYXoO~Hf$kWN=~#pH z*l0GBJFp7}@gtHR^>Us^IlP2dF&eY50f+GuQqr)J7nRTgVHl5j*p6>-8t3p3nU6C^ z2|4g08X*|X5stAKk4adJ?bwNZ_|mAsCKb})dAxwa@Q?M(8_7!}jpldIh5!GIAL^Nc zwi+akANs#DerTf?#|T7Y2d2=bB<ryiyKx9t%}=ECrwvD1bB!wT#}y{l6`>wMD$cc` znj(pHML2gz!|?`{O*=BNt_b~E>A1$jv#5y5#;t4j&(;<3O3!C8N<p>R0#OUYFdQSz zXmUIzVh-k+1!NRHhw8a)Hqqox>^7&#vxpnq$GEmYJgJU}7ELXTswS9hjy7nIj;1Tw z4ZRVL0T_mNObmG+kMQqM_r!}qk3AX37lxr2hK~^mh8Q|O;V!hu@iWMck_bc-grFyS zBODP}iR0!pDSx&8Nibt=dm$YC5rHL$!alh5QG6ML+YAfLKU**5uhvN^n}_~JL|`~Z zVJ!TMan6n~6G486NX*AVEJGC5U>&v~8oRL<Um*s^a01^VetnOW{<LGF5K2Ph*~=pU zLHH0eF$=R1e|-DX>Vdf9-kmahjyB|ZZuIBsgY@QFO@^9C@;b6|PMsTL%_LIpm<Qzl zWPOm>MO?4r60YMue#6u1hJ-LC`!&32hLFp#!mK9OU_CY?+H5D~6wV+P|499j=p}zp zcjO-Lll#0+a1#H_yoi6KUWq#&BJwe>Uu?%7e1U`b8prVsPJ_Ko9Xl_kds2T8eyE55 zR7O=aL@?ST0{0Q<#X5|LNaE$pKqO+|BxQa#ilH8YF#r*miAe0gUL3?B97QnKYBS+* zomLS3=nUs6bw!48Z8jW^H*?D2ZBmnEQ4Zx1V5*YM5rWqcflm;NUvLYzp+Oc|;EM`~ zz*=m<R;Y%^|3n=T4erQ?i1dv2M-)~-13q%1pz$YbA{@gIg`J4SuSlAa=K_7u7X!=) zayepf8A+dE|D%SfO-eBOLN!AY>xQsDd=k_R$x2%Q0#OTY9g)QPAzt)3csb9aG@^{- z%X*{vc%JgJ<|ZOg{RJ;)atY?5!0~6!V;Sm)q82nDsFnr-h4OxWh36SBBOF^0gKN;> zoDv8`b#%t-7>r5KfSq~>Ht&<O5Q}rTV4QF-=gt_ue=Nr(8;s-qHji!j)907vT|vzX z6HLB@g!9b8`Pzfe`MsNdzb;AYv($LOzp5@rVm%Iyr$2c)ORy1C%y!Psry*iN5~sr2 zBu*f5F+j!_v%gB>L?QMH_uu8~_em$IQ!i6eCm74~C5@Z&$7x{P9KwoZd)hE0Z3_Cx zaW|z$66UUnx5?zoTo`z99w-@q<9r_O{KAslE`?w;fji%@6}P3c(VW0^aOWX*;kM-A zu}D?p&O^+_W6F&q#^LcL!97#Xo3?pWFqO$F=#q+dZ`8|3TRS>2hCsR_6ur47k+NJ{ zyojXyJ0+E=!8JlnEPRgZ2DHgRn>$`c2Mop#RAP=^0ES?wZu1;fMs3tZ@!}o<q%=h{ zB;h%f$8$Z>&*!5OH_aVVURy|iIKIL`l;B)b_F^B}b6(g1H}EsAaK0xkc)nZ0i|1By zn~tQkNKJhiG|#}iI*i6R)aJ9b4z^$$f}Y{{gk9K;1Lj-uEXqI2c?T*X0E<lh%wA3d zY|p~^6ZYXag7`eDh5$Z$s-Q-8k6NTudyc<{>6n3_oO}&;o~N!9s&ibff!-WL!*JV_ z<Cs|<HO$oBtQCz}9KU4jHy)!LuCd_9zA1!M+!mT;oV4&Yk)*_*SD4zD=iYQ6#hq6e z#LYH{#xb10x8T$>j!rctnc*~1r;0iqjKi*oJ5{6U-jVc%T@Y8AoTt?hp3*oxg^tk7 zABU$Zu2dIKl}c|pJXLY{_|iw1lh^R^rH?YFfbk=xuqjGPapO-)DWi`#dC^oLrIM*k zN>vj?N_A6{l-i~qDGf{`Qi9D(q%<=vNNHu-kkZb)OiGC9L`oOajg(OH3MoBJZ&Jcd zUsC#;*GL(NH}IAjOv*3}$4E1p)W`EUOu##M7w=;VKEzbaz)Z|SBtA8BNturYSY(!x zvJA_y0xPlFtR>fBli5k`!XE6!7x)qf%t2BPnZu+UHOEOgX-<*yt%)V&ytzoqC3BgS zAI()#elkCkzu=bnmAs4l<{>G+89oMiL-9Y8jFc3{o0QZhEh*_uMpB+NnMv_6*+_ZL z<Rs;J<4a0jlb@6V#*dW3rYI@JjXx=+OhvL1Dx(U5Om(sr>X>?@G%$@wQC)TEYhEK| zs8LPzr`1)T#C`8#Hs)Xn4w|pYBRFBcA?39BmXug?o|KE`5-FF>kEC2RKaq0F+#%&2 z?&A?kB;);TI+4=FbR#9yyh2J()0>oV)0dR~<~33Vnm0)qWQLFuVaAg((Y!;-Wb+;= zQ_P2?Of?^qGQ)gAN~HOel(}X;DGSYFQkI%!q(qs|Nm*sqkh0EfAZ3%;LP|8YVTaj8 z${w?ilrPNzQew>4q#QBFNI7A?A?39BmXug?o|KE`5-FF>kEC2RKaq07{6fkt^D8NL z&3#fHn%_uqIQNw#CK)Lyj5jH%O<GdYn~bD9YciAKW3rL*oXJVb^TwByye2;>1&kjl zg-uaXikp&T3q*2`y9;~F0a7A4*S!trd5<KdBr_>U@iwVRNo&%RlF>X%N@n9jN;dNx zDLKvar1+Y=q~tdRNbxg;NhxZIlj3hmky6IINJ@EAk(2;ag_J;3jg%Uu7AbX1JyIH& zMx+Frmq=-5T9DGpv>~OPd6|?D(}|QWrW+}t<`q(Un%<;@o4%y<H?NU0(7Z{?ATxxN z2s50Nk!Cb0W6gL{CYpChnQY!8Ws3QPlt}X_DRa$yQWl!Uq%1YdNQp9^ld{UJA!VJ} zK*}bwg_LNsos^wsHz|9~7o_YrUy%}Hz9!{}IY!C}^9?Dd&9|h)n)9SwG?z%ZY<?u= zs`-hO8|D{MZkb<6xohr|^3eQ7ig#|VACV2Y;D-_@kE*DHhG=ctlG5IEASD!G7>h}m zidk5Q<yePJ*o*x*fm67QtGJ7YNRr1RB`Il;4jJ(*vY6~-F61`_Nbxg;$zt$FX;eW~ z)HESv7)F>i`8jui8ahfK#B?INpu6co%B!Xq8IHbY04YNdf#GH(DWlC;QpTH!q`YG$ zlk%RKLdu6`Dk&eE8Kit-B1!qw%q3;MSxCxavy_x&CW@5L%_>sXn02IVFq=r(Vxmde zZg!Hg+w3Lf3$ve;uS^UnUz;PO95W|K`No_k<y#X=%6W5zlxyY}QUYl!k!q#}DYZ-; zQtFuoq%<<Yq`YLBk<!AnBBhOKN6O14gp^LE3n|@9C@HU)o}@&W;iQZ-qe&TS#*;G9 zyhF-l^ByTv%!i~*H6N3bcY#NKQVJM9QVN@*q!c%$NGW4pB&EEmNJ@aILQ0^iMoJA+ zi<CO19w`k>BT|CROQbY2El6o)+K|%Dyi7`n=|oBw(~Xo+^9m_FO>a`(FmI7E7()<Y zhLbYVj3#A*d7G5U<~>qAG*e0W*vug16B9|wr)DlG^UXq17GoKrunKF;I#M>6O{8ow z(WGoQJIOuRXS6Pd95W|Kxoz@1X1_xXTLlq?!w66A<-CbO7>|i~4^!{~BGNKu6_MHK zr$k_HFQ)@EK{q?fpdmsr3^U9p<Scw@=8^NU2uraHs}X}Akc<Y5<VcCsNQcbuK~9uM z1yn*61fm9NnR;X}dSVnJu^vZo4c^D74UPabM>xh|A);{}_mPvvlQL+5-k6Mq_`+xs zaUMLa-u4FSd~urZL|pN4blH-yZrN_TKa%^^zVFs8^S<U2*FNXgDU12l$H~I|3G0xZ zvY#J#$H$pTdxBe6EF^7KCy4JqVs*ws(`SvFD}0A-wVQ@8phuS%S+98>-(9vf>>~}^ zT)I0Ud9ynFIwup`%5b*zbI;rNuVZ^6cU&Bj$?443HHVjG^uKM-WIJ8F?Z^b%i`mxi zbAMiK7xA~3v7MUxON55?>RO`jfZn~k_AODobH~2j!%Fn++Pz1={(avl(XVgk5<Pl% z={m4@=e`~LckNfaM_92JyOk{0rBta-ojR5*>+fH(o4&j2z+(O0=-t2Lz+(Qz%M~vZ z_j92=`tq~=yY_vpW6$D!`?V^c)d}VAy#cxp9Cw>Tufu84-)&cjw@uT1T>Uur`(xNH zjE?>Kb?w`~M_6y)ZXJ8{?AoQGZ=QZ#dv+_{w`1?_UHi4|*uHp=ejVcee!s4r^?e<> z_6qO+hF^iO{-Is_y5H8ReW7@N>kPN`oVtJOM{YBv@^9O8<Nw`buaaO}ZM*URZPnOL z%g_J*W7PxoJhu3cr5!)3{pCKE?rf`Ern}uU!QWCFTl~kWdFk=DHRrr`yq^zbyK;hU z-Cx&sS<|llJx?WH>tX*6y}z>Zy6G0yvrE@5oSU$%uL+xf_kG#;zW6_<x%z5@ObP8n z{l~A3YwwMF1^I?|?Ax!aZ`Zzk!}?ZC?VPUYdH?*&UY~J)h!-ZWpq@Q?clGu4>m1f| zK(F4ug?#&m_6-}*J=F7c9%JiDSsib(BdLAz3dwNBzikin%@Ox+@jP~4XD;`r<o>(- z8#<C3q1Tl!|G8f~!?uS1x!ZTST^0Vt{rP`AH$ji@oOaS2D(w65w7>f=dzNLj&%K%X zzy9yr{3(WgP<=wr?;kAs`Rj(AGJbd@RcPLx1K*riw0h1f=U;qoN%h{NbKJPsapaBA z3u9N`&7Ake|BtvYfs65L`=9KTG}FG1gra>VqFwvGNbA&0HL97KrA=igN`(l8ibM;d zL|L;`vSh17B2l(v3EBEz=e}nc{eI8$KJWj1p7))P%Q@HC?sK2}oa<cYI_G>_Jjd=s zLzU5{H`N87uZS(3w&}d6`+@a7wnt9ydfz6O=F%2cY<_ZY*W3)9?#x8V@drrCZbF*R zkL9$^=o8i=?w{z^yfWf&YfbH$w)<Vl@-IzFiVWVodla;dn)qb-56Qa5wSAukW-gZ{ zzSLZ~Gne>fa;w?dDiK=!$~e1-`soT=V;|}7$c}j_lsCI@UEUfg%L}RMj}Ls9nkVVq zyXVMglCh!gl<RG4>9bF7XwN-%TVW`B$-=fS<Eb0A-?gzB6qWwUw!LQkJgB#z%<}fF z02V1=-Q=YCreVbf<+o3`G_6*w+|!m5nycg%FwJ6%NMXM81&74WRb8naDK2@Uld7JQ zBFg<jZtbAX+Wst1T8unb$zz~<Wy#|c{Z?+rNM^@1We&}7x#8}#W%1II%!51YeZ<Z8 zryi|Y<~p;qJ*8u?<-L-DEA4zx(*gH7@#e#q%<5&b54_yzc=wfP)0Fw|jdtA-UonYz zvBD#<(p)y!_3Wpk%Hb0@qtYL0UI<@w{J_t^C9>`X>W0jtss`)!*1!7cU@P%Jwm<v5 zuVVI|<q;cbt#ieK)Q?svUi{{mt5<UH-n37$$7+28Dh;=rmisB!#=p2Ep%(HaWoBSm zuD6}zw=L^;i%s4g(bV2l_I^M#=}S%VHn|1TwI)f0r~Q_&v^2M_v65`I{-)I^clF5O z%=C>GyGIkPCvK@c@cH2}`<{f--QVWOk0~_2@M=rSAY-+rSEY7?<mjsK@C{t*rN#L^ z@iS*c5pTaPZhw##9sTjj^!LK1kL4dsdu1av{_Mt!bClHf{cx1BJK=Sk81<8pAMD`a zqT5Ck-T3x|i+FBjaJcnanN{fu#f9g-u%?vHlsmQ5xI(B^O38U=a6QZW)RSN@4b>Y~ zq-|35*GDV)3>x036OVpsqF7cYBs^NCeAeuC?YNCDA=2I(449)HpRV%~|8R*RQcc=$ z@J(gQwT3Nkl}_HZPwH13U+a@;HtEiT_YPadnBU$>k8A9TCEPohJjk5VvH1H;@m7(r z7y5N2U+Wx?sb>ZsP$IUiS+D-xeOuGMOiy9CwKAgREw^i%4wjBz-5$q0yj%Qfxtvnq z!;a44Tjza_9Su=-*=XzFaMU){&3spR=6QM9`-OMz-SdrZ?zsNMyI5aJV%f@v@x*05 z^Sj%6%U;$K#b(_M_FWbD{)*9z1LdV-PRQ03uUHfzGZ=Z<?UlFJ?#&Y0*AT|NNt`w9 zR*6biX9`Emd%VHECt01hR*Kxx-TvJ}&N}K-pB%fV#K5%Vqt%Zol6$<rcyy~NdIaRU z2Q1CKFBamn>D1^4lvi5sUAKvy8<gv_-rsQ3*7@{ezmCoWw9S&_$kkEz@5F{ybU%?+ zRx&4EC+@9KTc@zscFgDx)X+S6;RiBjJtB`j8@JmqOYw!IRFUMO<|!LKyo|Kp%<3VR z5sgpBCOAGgX=PI?zb0D9S|KR(!j)FZhS6ia>_(s6wOdN|#q~(*M{|sf<Hyr~9+oCu zFqg6^3ccXHcri;fxAMKhjqtKtD;0#g62%8&NttTW#jm~0Z%7#|r##HQAlkl;#8~8Q zn4(IijcVwP=*ifxIDKxyXC1{AFNLB`krmrcNU!;-G4$c+&N_o>6esEOFQmDj7pZwT z`v-Z>iI99>zC=k&<IX9raLRJaU=J(5jkYq2r#)==d{1ZRP1!?6$@8McXWSlQWo)R* zJeDQ;ZfLfo@=0^8tbOBWvD6L-e{4A2Df4yL*<zQubr;qtwfc|C?GgX<S!bebePDi@ z&cN4J)w{}Hf|iVzh<Ij~xM_xV*XlUg;O9@qijmzI4U^o@J-ZnwA-8trEs+%+@5VAk zcdohbAU1e6VwD8pl1ppP(~kv%B)Qq~Z-h#B((e;%6h0sS{6OOL<&8pV68#mNEk`f= z4;>NHnD{8-z?)<{&zCEhIcmq{RPXk9ob<VBBIdR0TpZb7a&?@dWpLuW5O(R|;lLGA z#64#kZ-ouc-hEQ6Qm<LxM}9dq+T8up>6GBfA2W;myCkoj*ckqR{^RO%(~IrSDa(mn z8{=7*r)Zb8X^+k9(HfRtac_&?820<L@{FYm6wlG5!mKRpTGR&bc$<3dupfR&+*dH# z!pS`Cl+U)h4`O;{3NN0IifFq&my#I&z2404t(2$xC~{&frB`#PDdM`MFKM0Y?wy&{ z5yi=VaU4l+KgHVz?4K;yOm_PrdHGYPRkF0Ga*^DynN!JCE8{JdElni*X8LF9jl;r3 z#$s2OswqnI=J#KAZBL(H@-C6RFk3{Xsp*|@N8-e*Yd<#B>zSE~Kd^Xl?o<82L(E!{ zJvCvCN>B4@ug$*cF?Gham{bk-0-05I+hR7b4#}PDoIxAl92eisO_Q6lhWj}~d%=X> z^=p--0}Gb1j5Y^Nnz3Wt>%GRZT|Khf{l1vV-dkfcc3`=NgyYLaWk;?Mo`@Nby_K<Z zn%JVwh1QPy!*BGe-m6-abz62^<+a_dFWlReYdSCPWgV25Gjo!Ib^n7zS&dY>Z2dYh z-}XbqqNhRXSvERTvW#NolEmvuRw^8?Esp%q-X1tpQv1-h*Snsog}80Vs(9@1T1=Yz z_VMRAqPzP<9gplP7ne_*<tw*Uv;C+Ct95#}_aR9wuSK>~&L(bpc;QjaN^4JIa-DET z>h>(joc!F3n-gl~bG2I~hKUE_<BoQ<vZA%55;GoI4wtwMZT@g9VergZVrIpU+dmg7 z)GNHMS)vk3RcPNxwb0W)DkMD+Bw1a30tV;myv%xEp>p5no!OUWllG0C8zepE(~a`_ zec$Eok`!0xYdV(G16gPC6t3D@T1e+V-PpRpQ)ci-x7393^gPm)v1Mnbcy8*~j(jK5 z&bh2OHd5s$E3WNqhRTH)n_0J{$DDR<R=Z3ZZgmdd6j?V}ykICLfiusoSv9qN87U}P z$%*oFNWE$D#2Vd-@8-)xWhSj`&Y60*t>E%Z)vE^AR*A>oNbtOQ>RdQeB-(Ong|YHb ztY&9%&NXG<n2k4`e1>EiKAuT&>ug<~^r3L!g7UB8!u{G!eOhOSFP_ZT`;qurxmEQ; z0r{M6n9*0M`X3EjWD^wq<>ao-JQ?_{OsF}ED-qn2yzKBqkF7FIr^AZ|0>pL}<Xk># z@k;3<CuiZ(UTwK2&*R3-9JS$@|Ex~EH02Kxy{~5PUVEdU=4k&>wSwjKV(ndB6sEn9 zZ<W0>NB>%jT!rKF-s$(QKUObVke$`amVDRhw$3d+)~Ua$`93Q_o!IB|qP6dA-?F2g z<ymVsaplS4Q@cF$YQOt-ZV*|z|Fh%@i(VN^wZ_oH_KcYR7h8y7OWSA8nLK%%G|^s8 z+EPj3)zpgD8v9KnNgT#9QhutGx3kZg0fnDw5BwK@H-Gw*IL&@~NL9{u^B~HmV570k z3NP*|_NkYag)i?lb^6jWL3(|sG`Vi7_bI(o)V3jZG^u!7M%ZlnwECA9Oy1YOUZ$w{ zs8wl0?W!Af1|fc<e6~x=$aFc34>2tM{;8^4sQeMh_X9PtJwI(;&b#%-M&i0kPX<>v z*w{yZf4F4amCY72W#nd$9=Dg_qa%G}&#jU?ck%2;x8^seOqZK3qpNUW%S$D*XC*rG ze=6G6BrbWn=3t!+!EN37CS8X+mm3bR+U?OKe!Xhnb&D57_lXCjZ#AwxsJuU0VZo@W z4>;pbcA1&%@sM?$Y~L(YCHZ-5ux$9Z9t(+*NfRdKsXzK+d_2kh`)Wh6woZ|Qn=N!Q zeNWD+**f>FthmD@vgoKy3!V)1f3cvPlbAAp!ioiXrnKIM#b5K}c8c|AOeRpjG%|`s zGP8%WGv!`R+rRV0(4F*}eX(Ygjs=o+3a(FTa}LcPTJ>?KoaC_BY|8PxOSRmF%v<D( z0d>0a8|2ibmTtRrTUfL=qB7)yWZ|+}Vp@F51Lgwd^)pw66Z5tND43mFq47L)$AX0| z?eccq9y|SO`e)ou*wBVW7D?R=aAjn*W?d}_9P4&1<~Grz>G)FzA6cvWKN!vxy{i=t znS5F`F>%r8C%My$H@?0pRr~Ey#NFVin=2C6ykrb4B+VKcFS_0!>DjKqJ7NxU`id$! zbA_X_wcNUAS$0g2^p~za)Nt?gf%J}*UN@iI5j#p+KjprPR%};xzSpx+9xI<KMu|wc zq%U#okb0ze^Wd&m(i`_3DlS^K?{GqDWih#1Mf}j%Lq$u2Zl}!5tuESSv`5MF7I{_L z@&~!f<)57;x1`F%m#nxkE-X3GaoUykPR<VTcfvwFlVUWpDkAsI-0rzVc}Xk5wa8ah z<m}sO<peQFSxM_%_g6|N#{7K$`Pk5XF^Tx4%OvtFrO*HLyP~GGY_iyU%Pns%jeURZ zs>USIl-WmQ>+?m=wix?OVxB3Cy{eKSapUQNX7-TngpAy(nfK&l#E$NzCcO3&?I@q_ zDdIKcD0hCjYw*C41<TIV9BLJ#Op??OGh6ZDT=TYEjs8b$xqD*nG1tS~!^+<-UUZat zD!X6qf$#p4qHCwkSQPc)#McAql6HqrY;A8@r4%(yJ!sq7`9$u~jmjV8_WUTHbMR;X zgdF+LzW0u)AF0eevvu8$>Ep$uG?v8=)=tkX&waQ@Tq)`RQT*~^mDv+hlFn)VJlT|J zst~ud!uf5%56U&4=HSAdT&c_bXM}y_e)dijpV;fvNg|n4ez*1u2tDv{jcEIkZ!Z-Z zH|azku~%4ov}J+#hY%I%yKOU0zh^vcnbFbAt?ye&T9>i^%1i0JRc-1v8+MoED@Mk+ zj(yuDGs~ubOri9;qtY8b+}}O@_+!t=^xaO0dp?jj?w>-Kudc68u+~mi%XL=@I2gF< zoQm+BD@)Hcts_~;^qg{txF$b;%HFhLliQ*Z;?e4fW=R^sGCMkUY+l_XqO3YKN59eg zxQ%$XxTuk0o6HF(OZ9?;tT_*>9`4_4-zC2BNaVq=nah_1Po)&DDs5ISI`{U}tF?NP zPE}4-d38)#=bagp4Yx8&O|$oZ>JIUh5P8xnS6I^CfA#)}*)FRViCO2V2IjG5rV>AG z?5Z3sA~(iPQO0g??a#?y=E?feTP0cw?8WZ}>}lRVq%D!WzD&$Xi0JOo6xwCt|NPXD zaJgJ;cn4=np@OXTQKfHRnck8Y+-+ywUvacz`gsR!?GHqvf!pNLOoLv@iPuTTQeU~q zUz!}-zaT)lEPB!uHN6e@C3o-NlunbDJ?%3=gsgTqiI`)OOq&1xqlWL~$Jg$k`Ydm` zZTo}oA1@9(Ha#Bmq#;OZG?65g8(_3Vu6c0A%DK;pWBL>ZRKI&?XFpOAHq6?m(DM3e zhN4c_{R0lGiUJnCkm{JW+O*Pl`IA>gH=HZ=JW2j@=V({gH%BDiO6hT4<DvLeGx%J9 zVXH?@3DuP~I!;<4{W-02R>GmU*C!5S-n>NmYSqT9E}b#uop^d%%CYfEAxpc?%~Ek+ zIMb3@PE{Kx<D9m9XPWZ^nsWa84X)%l;`WoTsd4NtGih62PN~vAuQYG}#Py#Fm-?=m zqQd@Ezf)%WiSbcidiyJk?pF<NHaslu?IZH|!@^WM)xlbo)ha2<*5$2^pN6S-Uu19V zi|Esly|p31^vm#S%YL@i8xQhK2~OeG+$-1eZ@$YK{cehrvY7j*Q`7e^qAXW9KDKZ9 z;bz$>h7C0@ZaZC*^1t<Z_+632{p{O8Q>O@<l8$yv)Aw5?cA?jGXM{r;#r62CacgHU zl?y**CQ)0Y;%w&c6}j~ER7sB<LT65&v+#90tJD2Wy<%=}2#xDIq)E1i?p(2t6Or#Y zLnw%{wRsS={$b?3&HE&eP_H|l88_B$<KCxlJ4;-Ml_uRujguxEv>cxET>HQ=`HxzC z-{uz0^`H-LRr;_-O)B91Ywd4U4czs^Q;rRet|e-{T=abN)cYz6hnJsFx#O?!-gDeq z^OZ@}wBg~+eFu+94O-4I77_}%RHLW=VBMP;r2f4h-U&q*nfR`GwRyj!uwuIGr<r-D z0>3?`pXRs{=S#OH1+MG<nyTHqJ~Y6Lvz_F<`A2KZ=iFzp_veIMUw1~atmA6J<gJNo zE+lF8ncluC?JddFjJ2S&>}uS&PWRvhaTOJrBhE`BoHloqn!1>Al=`X?-!Dk>*xzwD zjk=H!AhSMzqBb1$@WtW9(XQ8ariky~7BQK2IQUS{CR@2Ae{JQ}R&Pve&K|E_9b0gi za`e57(e9198hW3!j4nJs+v__hK0t|IC9Zg;XG30F?!r&~%1fLz3=gGTU0ryjt4r@o zx~yce_h<6Y!u;O%#~ka2m=dLmq@m-w^7g0HvSRXbe8oDqow)G2I?!@(^0O6}->Avi zKMEA`34CUFX}@ClnDjRi_bO$C%2R7D(G^qOTPB<pQ#r9DFEMv|;S_D1n&Tx+aw`KR z?I`6nPWKmo_)@RTkj!(i8ozSdm9~n<gIf)ss}g6I-&v41*3{R|z<ZsFDMSABhKJ3P zdwx8QzDOLq>gqem(88xoqRh|Zs&sSXym^_#TY0yaSNn#p8_zYIe)+PLg6LCG{ml|D zZr#rQ>}tFxK}uL*VOB?6Er&b#ikXJYS7O2y-DlaVpWoEk?hAkHdr?7itY3|pqDFet zooZ#L!=t2C$0P?`Pw{5noih7*OnL-qT=bP4woL=6Z;la7ok<+Uy=V439#?pNhfjUU zkNu+A($B9tINe@BSd^Ie`l@U3eNvHCqOIZ$LVM=r3agb9)Rk7XXhuu7>x(bE<+FR& z9kR@g1FEWtHlGgCO3Lje<DA4(_L~%Bnx5e>i<9Ehyt|dCuG^k3(4_`s)O@=<j#MpE zbD;E9^QIH_F&f)%MT%Y$_t{@c5|>gX$}Jk`BS{x1cfIHreQ341Ln7*fheem8?24)9 z+LL#W>b9JwZW*!MR6>8HUeb@02xlV&P^0y9#ZKOE&ED2zW`E|&DF=18KG`e6B?sc~ z>QB(U-N0PmaY`a`;%lWVaq0z|MDLuteK<#~>p?knpN|E>PWt4qV(NN1*{9Q9R(A<q zFCYc)tkj(=dAM33ZL{Nz7$@%YikX>T#k#$64pdh>l{-=wV<(a_OTI7Oa_uFb7t7v< zY#MKxTPL}G$Z*Wk#Pv;?)sx0iyF!Su^{2;)WfgOK(&AgAXt(5N8eWY&P+ar*#hoo> z1B&KS%9jdHD=A$G>Yp;jdsF3gBJIv73N>`!u+;I&4Yn@H3T_YcoLm)N=yj=O-W_+p zNlG-uE|&e2oOO)c9yeBE9w}LC%Br<v^HN`4_kB0dW47Yev&BMtjE^+;w=Mdp{m@Ig zaK{=0hoQw2&y`1A%#bQ05zM=aIst%Lj9~s2^GJZL74ygv%ro~v)F?A$g83fImnKdy zKaBa7$`H)YAm8W}a7f7fI_7O5L3}6XT?1FM&EH^N+I2;O`FG?ULk=o{2WIR?{=PU{ zNRp5Fi*n>3O&Ri!HG7t?1BvP|CR^#!Y50>h%@|`aV=z*IVBUe4aVs7hCtf5H%wJ+$ zLHk-C14#H4;~JgAqc6x4%r_RJl%|`5dlo~=oroK6mQkIcctnz5eh6b--*&h5$U)ju zh;3Q0<(|{Hn*(qp4*#wAWdEdLlqT8>!+zwd-S-nM6X2=`{>#Z8rKT|}{a5-^2BY<A zK31T=@q>P5y+Uh#_Qaw;>4g2#bXJm-wR>ms)0ZYsZF~Opu`VzDin|Y9WE9NxUBF9U z(B!UqbVAzOO=wRDeq+uamtu^qu0DzO(%`qYA~?UvM&;=NxQ+rpv*+yzqm$cT=AmOs z@axN3KYNu^1B+sTr|)LdPjr(LZw`^L^eZ}AMpNbKK9(n?vGmz#A*+-s3#De=xj{nN zt7d&u2~)Js|G0h?Tzvrp|KO>zbNl@-zEclHdnpC}b3L0sKbMs={u+SNHy&T4ezrQe z;PIt|L1fFXE!cTn^Jzk(%%|34uvcfs8Dp0HeUn4VP2VeTiLhnAd8}*Ive-TTmIF1B zkbeK*IBH?X<SY7~uZzbi5LT@7UGr%F!A8G=s^c@)5DDZy=5(nWw`*CAg$26LBnfKW z&4=?=uBT_2T%C{#*KK^G7di=5ek|NcO}#8CPc%DXn^j=m89V9xkIuN;6iKlMa>plZ z@f4k`ld?@>QLWs|#sQ}FgO6$x7BD)aqN>DHzrAjjBI)UGyxt^{w*HC4o4I|d`P+Y< zdu{ezcIgXQIRjO<n^TpBKW{x~>e{XADrO!%-LmxA&%u)<r=BGXs1jQm`|n8XP1O(g z3EutADMj`~(#r`QHh~25=#yg@g%6dFWo)sweQi=;YxSYNr{{(EBkj-LOG@k-mq;G{ zpcvRA)B3IIwGPogsZuUKrkJa!OjCTf_3XyP*N3wyVe9EE@pIHSa~N-OOFBLdEqpQB zMds}pwT7m?6gML4OV-m%AxhP8i3+Ke{kQEGeVZ#<_k$F2H+NrWK<Ro#*`&r>>Sv^v zHKmAn4d%R{?%iQx!zovMv-`$OFWDc&y`g)1${N#25!Uswr9sK9>*hCfw$^G%*SG44 zZi|=CI4C@KTL%5B!rUueYG-C`_OUCm?EJh^fz((d&5q)7E95ul+~pSSld3K5%xbuO zdq+t1DLe6WM}?gAFHfDmxO#5@Q9|@}>k(q2I<2p)iaNepawoCmn!HpSJGHy@iK(56 z-|)Sbb4BuD6SACUR9uN3+;MJgca1f1#ntzZnTzK%=`Giu`CxjkBsoR<emY~_vf;pQ z18#4>%NZO#6D~d0pdv_qx6xL~M`9ObE6fANt=wT8Vm0Q=E=ftfV3{o+7Zs*nPVyRi zLdZ`}dA`eoFV|F=bx~dyiBA&5W(rRu858>LUpCA#@RrS$7`R^6YPI4}XHTNxg|e>G zvL}LPkDEQPVUl*#g~iRnQer)GPBa)sX<RpHc&BwXQ(i)`Vc%TK_3<kv&OKZk%~Fx= zIVmzhg1+ssLxZpS#3_-=nIFclEvE!TWhu0uqP-{*XARgLkgnw{IzG)=?cBa}nXIUX zS-bn(WDCkE?+<4jR=R)jMPi8Vohd!SDL!wcHN|flP-W_VG>CUP`&aY@e32e)k@86W z$En3RA;;T8xStd)>_lgqEa24SE5<YgOspksd2p+`(aG)E=;@AgtJ5Q-<K1nZniLj4 zveMeSzUZ)p;>HicH!iK2Df}w=V$SpmJ5uyOrqCzayX({aKMpZu9!jN^zhB8d7j3T1 zjy<_iX{*A$GGpC?xjkt=dTowNeRx2;x_zzbmNSa4z8A^_KYZ&hmGb@hwNDz)rYB!j zO1M+jD}N(E%uH_nk=#uS#Aj2RV~7@9i59YO-VYtoc0<#j*Ce-Wksb5mx{&D^qVwu& zre^Ya-?EA-$y05ln#FGKoiTy9>Z`u+qliOo4}RoaS)^kxIc<oLDS2`0b$3&flfI|( z<xb?CPk7^-eBL8WRs7^&q1e9qf!2tayrX@~-$>73UzKqDP%g6CvHoFqSKscpQ+~)! zk$K&Fi#gQvCcUzLP<?@zxKc0WN^|`D7ySYH>?$XT9nXTl)|}mzzHg}^A$uxC_NUU& z7n;^GhT~-m!bkck<)Gtvb;I99F1ysJub9()N8GqzRq4X{t|z9=GAOvx(I{hOJ8heb zL(jf)19RI1;y0z)la0<0k1(FUI<Kbr>ZQLpH+!{4>yk;2XS`#5DV}a1vz4>ICjFhr zj+lz9xGCD^N)H>axPO+K5EOPzwv>LRk0ib<VP>_$)lbV87D!xrT_oMM(>u0%U-HKw zmqyval61ux<kof3&#!;U(^b?NvW+L{98B+<5G?e0RH|ySvAm@8{4Ix7gil_mTD@D- zZ)`}10!_YRaGdy%D{IyF#g-`(NDD(`jyL)kKNH<IPdg`nqtwl$M_sj=YxmqvpEU23 zrKZ9Kkyp(*^Tqdt=03mVVV_TYck|iLQ^H`DHYK0v^B*nMZ@D-1py-Xm>5d1Vsu--1 z=Wd+lqTXcY)TV8BV_Sh9kre&9i2W^_e0|vi^E%t*lHO@0>8>W#5$Bh<lU~Yo$r)AK z`mn5G%}*w<9d5@oi>>aKdy~2Cy4!Pa*GJ==eoCn3Q4YTUYW93@RL?fs$EI?h38shI z^84OCy?8i4vph`9z&vB?<V)SJ9&+TW=lHCUSn0<6BF23%LxM!<9v598`)-SM-Yj*y z9gbzmPO4U8#40{ZS#a5YXO&wY1Z#SYmDo|8zs244eMLz#=~P1LIN9NDOXKh!#?H;D zKD|<2w#r@68&{ooel{$3WV@@D;U;mPiJJRjiXNSNvgCA6;;I;#3WqPvA`Y$EyJBAj z$n48da@1Zn+}r;wfH3p8$=her;>zEAhYObmanBC~O^od7l<rN`S#ED#vt{6QO|!Mn zJw+YI)GX)pV}4Q}-S?(@7nA091?a12?R_s_Idi>MxwEvekKy^!A)B`$yWgpq_^2p` zdrv(%$v@*>z^Gi`HF1U{p>p-G$?UiGgZ1B;)9=<x2}xI-YjG*teeA=xW~~iuh2YGV z_-<l)kxN3#!ZU`A#G%Sdl76k4>7lLuSsIomQt^)rAG~uIivBKaaQyR~M)^r)LhA81 z>n^3NC$uE32_RmVwD{n8@ugwFA;OxS&#ENN@<=+fIJDJOcL>jhl~m*>6bc9Kicr4o zx`zBV$YW5<enaNqd5e;9wBo*(#s~Ezch7#W7c1^&d-g`rGi&$dau$AV=Vp}ay)nA5 z_DJN`EHRSab*7Hb@`G!1!}Dwsj!WdGo=^X-vG?|~A7&Pdy&uaexh!r|Oy0Ne$esxG z&xRUe&qK7Fru$`N_+6?0z_B!z*!wN9pg;Bq^L_kr9d`+9+4V^~Y?nIc3BUDvd^*f` zyK;_WQ1mFGd3d#<h|%NEXT)ojYbIEF5ih7%W?8m#D`XD#_FUas>J|G+obBm+r(LN@ z>}Fv8#(Oi^uNyv!tyv`g?e3~L%QqVbvU-PfC26uUCL5=D<{Yee&88%zE;*~LL^ax8 z<-g%IyKla5)|b{hq#qaSo*Xah%~lb)aqPskH0d8zvpNd4Pc@vKwKAw@c&VaN<&rej zp9Vt9hK|<tcZHB>0kNeOrmHU8H{QMUW$rhrb5)ZiWv_SZwyd=p`z)na;d8cHh4y(( z<)S<G(~e|*BpOz;cFfZmI<PTK@%55pu~Mr-vQq7nYg{W{s+PP{5>?o|TQ=)(1<Sph z6hFb|P8#vkn8$i@zEi?|+H$UHOn4=!KW@jlVC_3*nv+d_7+<ByKOTK9KL5vR+xfOu zKSTB?6WcEx-ZuKj{v{4e?w$FzHe6CPPHvgid}rN9N9`+;!Y{}*Z5X&#`mE*A#>39# z<&RH_%`4YfA*sA}yXKORwl<kw3HvtV#~ooazMmX0xjwmzESLFQ<(e&F$8L73RY63$ zr<h*B?BOMZpKHWKyc;bJ(<K(9eL5Sv!t{VdR%Fs0*)_7xv#PW*A78t9pEb_cmi$aP zW|vOqVv)yF8^`ZA)--r4KKVkj1ar#bS+x^4t(_zEO2+kF-hF%V{wg)cfdlI<Ojo`g zC)6l<O(J%uwzt~H9r5Dp?g}N5hJCLuuZz^vUG61w&~BAXTk6sCL8arC|9G@iX(Gdo zY2(6ZUp9-%3~U}Hp58QFSmx=58*+xG!bYhVrTgc-o&3m8V-;nUNan?WDn;(v>c*v~ z{N5$sYM8UDHk)+&d3Vy~l4F_=FArTYdto5Gt|0IJ2{+}r9>yoXWKSEV=xHTnOWJyT zbdCx;&%}EwiM~y!qcy%@%-mNl7ENV`q%MA4nSE_rqxJabPq)-bc`DS-ck9?2usi({ z^Ts^G%qn7E`m>ht)oTt{3)gR~ube9Nv|s76UH5dkeVHsxeWg-)Cog?@MupG7^qt|~ zyWH)Gg|i4nO*^8an9Emw%k9mVv@={W>HE*LMGjq*uPIZ<$U9HXUKg;pS|n?B%IW@` zZm~jjgFb`tPj9l~@*`)N$V*N#FjpDX^kDUroYmv1CxpnYJ0Iay7(hR^VLnMU);dM3 zWT3uuV)ba{@@A>%>)Z1sZk4ko9g8l_$W8TcTygrM>}bb`P0VK|2}(ETrnGp;iH#1b zk7?dxC-vMSE#K-DS>n>C_l~LK9_H=!D7`2-LtQqmO8c?mggdL&_vIMmG1<yZEsEu& zXBR6yiJgQC(+`S&x0>$b^T^=QAukDYUF|J0^S1YEypgQ;l8E%({G;}S(lbTL`BhFk zt6z7wB|S3G6Az@xIZQ1a?k;(-Nmi=<r}T-Rk9X5IoO`g@{oUR?)=x#<z2&32t9{h- z?tHQ=9Dk1V^NP>vCHpEqtW5iuv!RJ0edeU5s;<b+n4(hMudkNbE5>cjKe4AIXkGE7 zpk($YXOibhOX|AKpL?CJ$N9DBbW70>c>d_+4i*-z@MMiSvr9p!&-3R|`rKk#3#UQl z#AD(pm6xW9m)46eALE`__H?n-s#5AE)oS(Id)6NC*{<+be)G$~b|c~v%hlqIpE_f? zM5E%k%r)C|B&ae;9IqR<C09F39D7zfUp8gWj$1ERE|MozI%eJccv)LCbhuuxQiSN; zsmvbDs;Rp*?;Lx1r;B9y-Cmb9&c(B?OgiG)b$6fKtDb>Ml3PhfU0C!MVcG$)8A{QC zKGWT9Ej>RW-udTEiKDa$Miq?WwQC2iN_77iEtk3QvbhFrJ=>%8r(;E`g;;Esk$e0C zx@%whf`Y|L9um&_mu5(2uBLWtIXCt{3zt<f<HqcY-Tz}(EhTAb*9B!sTf23HhINk$ zBvLYpX5SZ=+x4L2e1e)(lW)FudfZK!!WFk~4QxN=H!o)OH%-sc%GB&>tG)NQ$WEW3 zcP3vVL_C%AdfMx?`+^Q1Nqv2Br-{t&&Al4o;TfNI`t9j8Ftbw{RVS8QaK6UGY^Yvr zYU3Ny#TOEJjYnyA*)<<L)lCjb>#KHL_^NQuk5jBudOU5bVu82XDFv3#sfh4E`xwJy zl5G^LcOUF0SqOddzh)sXy=1)06UU+*g<DtZbC!#DE9{`&5{aP=TYc9lIH>J7nRNEd zSg~sh7JAP!ZQL?%Z?=?{=6H$aqBm!6bWDn$)L@`sn!F}z3Z3HD$}Ha)_Pv1Um{+{W z<Ko=+&FMaxE9Om<QXZ8ht7g#Hf0j`(CwODJya#1y%1*MWmoY7BTC$Nb@!+Y?9_J!5 zX01(Kq#-|Mtt9E-pxWD2+T0m|zMrRBKbI5Uuru*qrRl`>j$9MNS2x9+Uk$g}D{T_a zyk)v!)br7jD$j>Eb<$!o-&t>(y}HXv?%vyT38f3i4V`e9^Q}@iQtaxhw^G|~E~?od zI4)_=jkOYIo|pM2U6g(1^l80}jYWy9QOv7E4LO}714EuSBR5PCvvdsGQA7UT5jAJl z#Vci#Bs{y8r#@4wBc@&X$Uf;kS$0;N@*|}W>Qb}5yvq(NcU4Y$e#icUafg%Kyj;2S zkz2%NAEzk}Ty}l(c%tdlqvPUblx1G2Mt$Bd>+6`I?%$ZBB>t9^yH9TX(V8Qlch3Ex zAl_cumhAXsLVj@`mykBUM>=!c<ovy|!lScBZ6%aCbSfsMq+J+2@SL*qiJzIhODU-> z|7GQv^5ELx`>Ym)r=HT2t!R(NwtYFcJUeSlkNhmfH2dMw&~<rDF17bpG2Bc@vlP#5 z`yM{(^i#F$X;+^$N^yF$>b?n$E>qCwl+RaQrqJa4!_)N1lb7%IHojW>;TmyS(fra3 z-(9r+hT5=j9WyDp=H|O^-x7vjB+|`R&To+)2psMi+!nl0@3nbj%k&UpxzWNvcHNwt z3&P#MS{<pC^ci#0(DmiG)uKYZbEN##<xhkZPG!0G5Dx`sKYi0aBu1^9SSlJG;C&~7 z<FD>AN78gwhUe|`A7@X<-F*B*$U3>OU2UAzUlQbLKTTZQe{2;ateot=-^eHA=NUVy z^N*7fW>2!ioW{KQnxg6dqi}w&Y-5I8@KKe!ry2Ra3!bgj5&Nn=HNk)O#Hfv<2Q~$k z%$NAGOntk4obdSQF;Tikw;W_YbsS%I-s6UC+SrCOt1s_S?uc-8TKsW^CO0(Sn>FvE zxY+9b!3^Ce3GT_3ubn4V$*^hBaWobghz+NM|2)jP5l*Ih;}Ox6rA!tRcys_1kt`f+ zjixi0tQZO>G$MvYgD^P=<HyT`KZHw<LI+|6!xbRhl|^IGqG%L0O-)4wPW!5cNn;0u zb-;ylu>=d0&xyvNP$?XWnhL=R!qGufemqt#IhvOMo~_9%j!dW07#w;SorYJ7|5{`Q zH#&sI!s<IR487Qhu$lfkGvO>an-i)%heoC8Qz$gOIbk#-ngP{NFGPQiuAwp2I3$dw zL)8xnrP0Fl^bED5=pif$oD~mcvS`@BZ#X%w9nGY|(ON<y)ZYQ>zZYH(9e|}Jgwoh- zdK`^cFETUiR}Dg$(QpEo!eO%5Tm~&622O3$sN~QH2m>FBObJ8($3p|bA$2O5&iIv+ zMT`9v41ThjIyoBNfgD1Ele{!ClM$6j{#`oCiGq0_o(wq%DdExtQK(-!xaj!p-&O$f zU4wXJNW_k73$!_zO$(2P4}i*k4QbFpeK_{cg@=cc$>^<VR5qDwWME?AWWE?K`$gaf ziDkhB!ytjqfYfv<8M+3Q&Il(b(O67W)_jP^p7*Ocn9<P`UQ=k0!<bwKl??g)AssT< z#)6Cb;osJumo0;rwh&x&NSPcT0q5tj)7R+H1b+NUh(~=-pe!0Z4PJ=Oh~aWZW+Svi z`WcWOZyV?YP?`q3JMTkMpp66v-2ePsH(s8mu9l9L?i{S=VJFB@ztg5m6a1krH9)9c z`21J!qxSskfqXVSiAIK{e>5c_h!PdW4E;~k@An{uO5TJzqQl|qflwVU$pdN<{7%c_ zhspV_CWI|sDvcd5pACL0&#ys-;fq~nAk)J^9Km3L;U7h1LmGZr-{J5Lk}ENg2N~G8 z3_6D#M`6(^&{s`N2>T%%jmt`KQ9Af)+|XYspd1KC<ATGDfiA+!2>e4{J_aqGlNj?m z<|BmTedhObL?Uq+M*~qr20ywi5KW08Xn-F?B7sed<<c0Tv^l_|zRNEYuM1p+gK$&_ zml*7}2R5vNAq-ut;JptFG^itlp$jdO0WBA~cn>5KvLPJx^WTyrm{0&=!VtE%Q3h+* zuqY;lgL;1q6RwPqgHJ;|+OXiqqkAObAbo-%>><RVO91@15GE6bEdz`DG9r!%_X=RZ z5F`M}7uA9PJ@|R~ZZP_mP&l8T59!AVJmcTd8Cg^sZ>;EGgM~`tNog3OQS?ywU@;U1 zJ(S=N&klfRzk-i}HaXzc(5Iu2@lJq$79NMSKQDwqW@2B65=9}0BywnE3X4Taq~H>q zjI}Tn#cN3@w*v@$Z`2<Yp(7{(35I3BoEyyMP*@zibwKz8|A*Rv%L$u<#0G&HElmi7 z`oO(eY`h5a+7O1`7v2v4;vms5AxAed;LhRd8gcdYK*CeV3?>7U-&`b9u>Zo049GC; zqZxvY#5%vr{~D)C3|xNe@{|3M3NDB8;`z~7DKLom<D3fdsK5S^AL7^W!Ufy)HMA?@ zQM)5jhIS_dO$E9DacEqja24PI7muI{)B-&EK{R$@hZYQ%ujnvkCDDQ+X^Fw)P>`7* zfa2+#2qw%8h(*JRERYT#xKw(S9dEMp1j%6n*KYVzgb6t~7<3|aCO+Pc!9}vk3S1<c z_}RSCylO%w1VcEIHUB7`BaIQxiTLvYX^;oC(++Uad-5;tIMG2Xf%@7Y0Sfgv%}d80 zk5(Z6=%EzOuLO|yA*4ZbH$ROvJ~=|4pi!cK4}kw)bqb$^&;>lWmK23wVPk8DK<O}U zDKXm6msp9Y(@KN93x;|iU@jwY|2ntPsR`uyWJ_~bb4xo<-{3SEf*+*If<{Gh?62u* z)Nq<s1dSdZ!6BQPLT`m@bv#y+tjo`z&&$u}3;tnw@Df^4GzO?;P#TrZ!5Mx&1rUtr z0w<r(ht7vKQ~5js#zFkQR!;_#`m63xS%GrUA2LPn>&lfT1cB=d_0<vJ(I0|EW1PZB zgqaR$WA+{{&dAH9@rODYI=kT5nGR*n0GbKpjA`0x&{xfO^uWgYHz71y(C^<QwStzy zT{T>U>)=-`p{F4=o6N#{Kp{L3ZL9P7E5M^|a6S*Wa<Mn&^9be)2HdZB1aoE}z$3^m z!Tbn*YdXXW{TDy%^4hiM&<4;1<^#RpImO{W^Z+y!YUbhp=8qsWYV??~<Hk>z$jdlM zSY)#3lz&{xe-;0abN;WyxP&Z)K}|MClO)*#n@H3qL)S!V0$(gyz(k`4yefpFA;J%L z=0-&k;G+ws{ZGgl1|^Oj4)=bMnBfnbB2*tBKHmWTnLujrUHMbT9_UDXyuOiBhm4Xu z!3EO)gcm}cRgj-5z)u4GM=&1og7N7f7SI_D7A=&Et>EFdW;7@<_+pDj{p+$Nf|fw0 zu|p{_=w>S&o1cE^gdnx~L1={)g%mgbVvNm&E2*d%(4_pk5KN;%0^!$UGmH-E0gbE{ z&g77tDb7fzo2{)$XN0Nq*LRpOG5NhHLb*9iv`_`L0h1r-8L?a@+_e@gnJ<4rnIQF< zQ39)CHGi%S{4|lHYopFv68^cQ<LBnr0<@S=5R<SbhW{{)m-lQmb%VN!-TUPy#-sQg z-hTWUn;fhX{L7EM+b<4V>ipt@HE<m+<#%#^P=G*?NwBqx&4`611((2o7lEr^e-i_$ zC^owOCJK59SO#Dwhwl$}etB1Zp&#*8spJG)y<ZD1QctbXePlHaEWHU?gO|gEd=TQ1 zihh`v?gY4K*})&9{1!v&BhXd|k0Bl{W3rm@rN^J~3>eV@i)BbhNR-CzZ~w<85B~jU zc$6AEivsQ=7`NzL6rV?!m1xT3^8mx}M?Au%#Kt}^|0m$lgrW|zfUnwL9>LFoI285} z^2`Rm29PF@7SLJ9uMI95_b|K(I^Y-NrGQ6aGD*_d->A|BzaCH><U@G{r{-ml-#P(I zMvOnh^&vgK?a>07%h6<pX<}WT3|2Q9hYoNE|6@#qP`E+PU;-L~ftH>Tw%lS+!0e^{ z>j^vq8DN^gyU?MoNkC}1We$TI<t1Bj!5D_{4cMSkM^TZGfZ-2TD-Jyb7ULi`D8JHp zfCYd?{hwDGw0bHn2x;-4XXqMe;VVVFLNEz<EW`Ur8`Kl2zFbBmgBcHtx=<#Y0$1ii z1IExIE<rkEX8AW%D1xF3t*EP`Wr(#RGUKtpgs9DChH=oeMCgHMg}}4s0-^CG*axV< zv%!D}U<E<!C`yQlNoZKOiHQ|0jKYoLSTY%5^zcmRH>j^6GJw8e2xJ5#7@h@bj3I2! zi14|<n};HkCMG5LmQXf_id7b11VBOKt+H{H3iR2+X#ll>rW26EVERC41CWetXJtYT zp>x<Vlu$rHNQj_-2@^mT29l)-#!$CA;G#2#W>8VIEaEa?Jwgj-vS1BH#ZeP*V-Pm3 zd6GPu7R_WO{&gx01B)M*!RE%qFj?>rW(=wj>T76u&SG(6AP|s1xR^~7lb9SPlMJ(B zIDhD%5*QS)L_>HqQkg-XMzTX$Og3ASN{gezJD?CW2ePn)RCq@)t3}chV8Z55P!~pJ zkVClaMEIgiE(@|C1`EX=2Q{D}j-3cC5sgiY6lfV_Oa*f)jRvJNpb?SpS9vgS*kD4Y zgwx1aOUAR%l#JHnXkdf+k_&boT)js&cD^4sX(IbGyb>7xITWZGgT{$xvLf+%Mo<{k zD8cGPF_|&w^`OVoK?%W{4_86dXj<V~WOiaS)&eM<I{Lzzm?2u=g&;G(u23~PHySSp zz8KgLK$AguC3H5KLjDzwf(6*$-z^>&5m*DmJ^&|?Oo>9zOoaA=36CAZVn)&!<QRGk zbUys8s4#LVR4N)x*yAX1paG$F<OhN#!e!IYBSG#kFmpW5gL(=j1nWBd(zpzG9H>)} zKY|G}tN<^N2_8n{{K1F8BdE~*qR|Q*iiK?qI(%OI9niBe8#nZK6BuhS3^AGqel$M$ zbIg3;9pF2-fIJW!x26!j0En-bE(AYWjmgG`3;EZap8$Vc3z-A?bN3eXAowBY1}u6; z4s1G88^$=Di3CtN<duhXm!WJlZ}G-?44A($iy{noLOY~E3#saS+?2u3^9}N#`4tL- zQ3qpNpswcNw*ayPLZ1~r0vAk^Oqc*b^NfdX2LlTk0gx#-n#-XjjI1Rf@`M674;F`s zN`m`Jz$k*}Z3aTJ@~=7AK_FqHnG9`QC;@;@81|Nc;{|!q+>Vyw`aq!+2KqcOkI}<G ziG>Xn%zQ|WU@~FEu$a+g3LX-P3@dnX=b;RPzj-c}6QzS{eup$@`(!;3Y8yW93f}?g zCW7D73fe}nA6Nr#1B6UGNS-eOzwL-LcEH;M34Y@e_|RUz#i1ogUS>4p7wk(8kjG0< z=DKh>E@4iXfc5&dUuDe<v->SV&3Pi!5r&{Alj#WZ(+(FtHazhOp-vz@9g*;~M8cEC zw!)+*IJmsD{v|I_9ysBb=+2Xt$dAHM$w*WpKQ1cWU;#m~<_St?CdY#(Aw6)(XamZo z50Z;ZKrDJ9u?X+NtC$rCMV{9VZS!~_N$8A=4D<k7Obq^hlp{ztcc`ihY_k0hwZbGK z2r_uMH4<ZXY;(b|-;56uTo$N<o8tn@8k1KRn7ncYam9PK6-X;{kXBHjIbTpA-j3nL zra_=3UqtadAWO_~3B@bG>$iZi1py_%{>}j{OXHUW1-R2N>E!xLI$2@D37%$ybe-SQ zm(9hLfG}uR-exFY1%U6N9Zz9LYins~3rx7$=!MzZ{Gr*pMjA8SA^Cy&JnFwlze4&T z@*_g>1Mz6?M`IUl86mlb<QDQHLgr8uhtkdfngfKkeb71?rA1|<H3}*Zg`qf<9+ion zjpQkkWhe}#L1P`2i=Kh}C>`>n@)bd*i2!|FE=_m|)B)50R1I_xXcy30phO@BkS~xG zkRi}aAPJ!URB6Hqpxr?0fRcb>fx>}&fXskq0?7i20DVc3CJX@G18M-O0V)K_09pwY z2^0wA0b~Y*-Uq!0YD?5Mh)^3Mp5GoQ9=#K`btK@Tc>Xs)?SbB(-`=QP)Rrh8B7Xa# zcvL=$M|lvBo{8FvpO)W-$ex4zweamrfp!9I1X>0}2U-l|2xJMQ52Oa91VjWH5A=04 zv>#9>P&3dOpc0@wplqNtpyfauAUcpckPVOtkQxvfhy*ka=ri1Q=>fVAlnrzZ=mJpD zaT!7txGhjm^h5JuE6{(3cLcd9n7(sF{;m=H{Smy=i2TkY_)$<P!SesFdHE6bQ34(e z6=+)(mZL0+D+|;{w8A3)-V=JA2HykT8?9YX-$8TN10Y^LTUr!oNFy^ryy^ygO(2M~ z<^t{G3gkATowh<f)Pdk1M(z+VxK{EQ!FvKPuzLg6s9(E0(Xe=;qYYuCQnUYsO`qSJ zMVOI@zgrYS3xjQI*k2IXO8Pe}8L>6&Uu@;rleOVlpkqjHlqS%i9S%ZcAbqI(m<(oL zwR5tvAahw!unvJ^COlw4h!@`vG6~#OKym{78Xj*Q2Z|W@1>4gL+7D9&7?dc%aPJZA z>;pXSJ9{D<B#reaZeA*s%Zo<`gX~}>1gD7N=(Ko8S~w*%5i?xUSV52m_MO;-#ZaCt z<UxJN7yKXK9g!SD{1V=?#dy3Q@Pd89pBInPA_@TB?mT{kz~F)m7B(Mv6vwHQ!R%j4 zfJd^^n-}f?E|PT*x8PfB`ykzT;7h?peLFb^4?hDul7Y7A_%`18)3|*s5T41eZxHx{ z1$YYhN3;dMO~5LE+60bXL7HrMXY{O4@C&v*6?j*e{AnylP-8GtutzMHf*s)!Oo!e_ zke?0Z@t*4qhD|2wu{4A(8OHq8KKwq!f6q$jQ>YHFFUnwZg*6;CK<#ik17B<K-y1!L z|Gu;l^$i0ae;_VEkeVo1uWZOWqCG5V5n!}uvTR}b!R9y4AAwZd`Vka|-Xw@l4Wm&w zTsS@QD<Fcx4q}H!fC(M8bn#I3pZx^QTY~inhkC};$Y6ix32j3ny@JnkfR_W_)63gu zvF{Q;|A4@tU`j|RR3kiszBDo_n!${Tg%!6eH_m0IlAD9Q`&<h#kx}9jlJaE5X{ysz zWbERl6VyC3bY{)g)mmVxZEa;T$9SH;t&ygInfby+mNrg_&PmG4#>h@23du=L9<Mh; zbjqaB6XuT_3xMjv>I#O*DXEUjSFBvMdd=E(>(e%DOwZVqnU%eH%hsH2+jDp9+?AKV zd(Ym2!lHfqiw~3>JXBg%UUB%y(aK}TtEx}boIF)qclylPbLTJAU%YhrN<(AQ)#hv0 zZ`^FTb^FfUd#!El_d6au?0nSq_(}KEo@dW{`(C_!_4-Z!+ktoQKYSeg^!dxs*Kgl{ z{2c!4_9eDeiPmpy-tH(IKhiTag0^~i65pcz3Vx(#d~L#yGa(sd0;E<eLs$$h(k+mk zjn8|6AB`zK?*o36|6iRSBH%mnWdj}jOM%FcANAu%@C$zPs1bbh2%a&5X9AD@4o@r) z3y2NG0pbG10mTC)0HLr%pd_GWK*>NTECnbP2>soj6+kEq$-HPf(?nZa8?$;XgnC+K z<J<DEH~@139PZ=7T7->E7+~z<nN;yOFs;OZSqL+1{0d>fnwHK$_8;i{ze4%OlwUDO z43nV%lpH^W2kUX3@(&9VunOUEQOxjgusYEhgu5UQkew3EA$CB>`edDe>~G;T4$4A7 z6}J4f*AMusBSIF@U?InwD!~{=V<n<Pdm!_96V=~Mo#AwjHVoy^NU(c>(G+hlO>|UK zQ-7{;SXfA??p&&Vr~$>$NLzPKSST&b7&l$Qt_5405<>?A0z3-#?2)b2eKWq%ydLVW z%X<f8!J@fxIp}>bKUDLV9|<5xC)jV0U0#r13ExqWUp0bX4LtT8V43#&3%cXq75_qZ zY*4BMz9THq?Ed(Kyrt!@Ku3I)hCU*HF^9eY_#LtDWykolPHRTgi3;z)le-=?3JW)T z(W9v$LCB2C2<IKj#U=>;{K=m;`SU1${=5bAB$_XiK-Wg|4u9Sh9J5FV7&)(_Bgts2 zqOrLa>L<vr8&Ti&zzdd_HX?q*2!7)TJ{@@8`|=MDnsYf3=p#VaFfoBvLnA}*>>&A% z1nwB1G_tGy<1|<yKA;$TB2(obeIf&%kBkhKpyF_7$V7qlG~V-(#R{f#Xa~W5v<dP+ zw}jpZb{z2Y=h!Up$6z`@5Nr*g!>OReMx+0J>pK7FTk&<5>3R5Et^qF6h0;K$L2`E! z&ozQ@#PfBUkvf(j&!0>Aau?}j=so!L%?5rmPy&RZZ@q;VkDiMN>1e!W73kJc&_Y4+ z=zuznir(!HKQk;0>>S9F2vRO+WHg(fHY|#QgcqO1io}%$UjL?o^n)Ykunz&o5_S-k z&PL{6_z;2Ha2;<c&y52Y_3@S9B0Ix2aM61gfs5v_Txc)!ZoWHlcQ3DfD<K}OoiBll z*59a)qjZSSF?_-AjmFMMU3V*_AwxK7r<}iSCopfpRy*D+Vfg=k8w)OMRdD_$1_=#b zFzVtwF9@J8WPZa-0!2O&L=b3)e~!y-zw5Bb%GDht8rau4VIiP}fykr<;kfH?MF856 zFE^qA=>qkoNx66*ivu3*JLez5+i(hmqc+^gOP2*MvOVku7xkg-@JuyuQJdxdem;_S zf5?P?wr*^JyyyqbPuKxv2=Y5e@ViFvdB7)f;0;aCtYAWk!B5gbkI`nrxqgl&v>7a1 z=Aok)&?`;hET-n1c_DB`!pJ}ap7$Q!PaoWA){8xz^t~n_*Us6-L<c^&&JM6)KwKh+ z!;0W=V%VSwB*IL`4WVg)Q~=8x41k4krmm0<*_3&PO?2D_9_fMYIhmN?yTp_z-p9iu z3FfdqLG8?!1^jglU!Nc3>Gk|Eo)7PN5YnT*wj2B-`{Eu5<B#dR;1}$>1;FEvMQsGz zJycAwh(^^X<LA-vBinE|12zG$VTm2e{o_q|_2)}yyg>d-da?NL_xJI>Os*$1+dnPC zlgWa;JpQ2g`*K{PD2X(d4cbSeVY}~?s32HT|8@QXiOpitsX?4L6wiTOOa}7A(?XbR z<PmHiG=Ifl1qX$pl1Ij8Lz^R+iewAwqlJ(@5<KWzz_tOQXheJO8^I%;g!ksSt%b+n zO$cK<A<-75ADF)Yv<32#Aw3#T#Usi&0Q?_W|5$k8rTq~E0yGHT7zRFU)%|si6#}{h zEhrpz)?={UA68-zob2Jy(2i^gJd59-4uT(4*@VQP2!1sQhak+1SI<)L3$`a(uL<e{ z|7`64omPp<sekqFL$KjIRa6`;6!!6r;7|d&Fa+A<U)Mv}(E)S^19p~SEaia>6zV?@ zJ|bGf{53sX6bORTT;v5<4u1MA@WIjC5`|eu$k_S{Y1t-dr<lLtjjaoyv;S9#@NH>U zOek;1(1c7VgFQSn*YNl9Twv>q#rvxTWC(ABc=UYUUJDuDfX0?5kQ>ecK|Hdl^W)K{ z|CN0=K0kWJgu`+GEMxqgY?#KQ;UE-#BaNr-gB6Vnd#7;L9xGP?@*<raZIt};+-Pr( zzdk{yjN{RCLs$&?(Vl^8GOp940*~euem!{$nqRxb{G|wfZs7O(oriqr{qVID^hypB z4q1`GCJ}`tMU{OFY2+Y{4YGGp(V2)a*cOJf+7LEo559i$M7BjAT!V3jG4DuWb9gLo zi1E}No)$P#-U{kiWh453`3SyZ1b-NK{18JBI=;p8qT>!cDMaNhBzY{Z6~)u3oQOX{ z@I%wco&w!4lJjd$=dS_ya|>VZY01Ldp05uTKwBWasf_2I02h6e%iyAUuMJ$JAH4(@ zjggUSfPbbhp>NJ>NX*3KiY+DoloLmw9gYGm23d;aT_yM-56qn)u`t~q{(c&SA>9<o z+T-Alh9w_Amdy=;vk0IT1;Jg(2!PjucpYBaYVhOjhA(0T<<kj>6Xcgc9$r7h_ARZ^ znLJ*AJB%Me-UAye-uO`A4J5&`YM^Xh)<2T|8aMDP!SraX3-ZVo$jk2q=VN(iCSWvB zX;_yB-H*XW0>=h*=|8(Fu2jO`oq{?P@Y?hg_-ldGczhlBoxyV9<!Pfi2Mh=J#Ur>N z1sm;*a7zkfCc3DD{!&VCFqy&z8G$a^A(;uc9iXm8g}D5&1Q+!YzRvUOs4F>`5CL(h z-|(+4U<L6W#m}DsY0&&4sO!l>9skvN1GO3IGpJu6yQkoI<ga=7@u%UPQF=6gqx5Hh zA31*u<{!Ctah8`K<wbOE1V7TIfb<2yZ+d=2`U@lY`Vsud_3_0K@s~#Mmq+l-5&V@A ze8UKS1GKwfeH%x_H;v#&+TN~0{O_~4wBY~5S#h|Ng4u|Y_eo=R;2~&ZWRK(XXdg@q z_(e3>h-V{9Hn!7(cV+z0%-^XR|1$#?JPA|swK1s#no~4ZNB(}!c3vF?+ZNe6XlOr& z{O_y|9Fw6%v9&`v35cK)Cc1MCkSGQ7B^<e7(M(M6BydELlYsq4fz@RYSm2<JAA4|n z!^9K#nq+FRG&Z(Sz4<y|Gt~PU&~+eaYC=5_`sMTXu0}&1bbdwyTu4HYnJrJSLVjNO zlq4DK+8@gMzw!Qhx;lS(uTEG~Az6Xya2p8y@}Yjn?#-{~m;-qIMgFhrudj#Ivk$8! z`kR-3Ur*Kl>v|d(BgxK!ZO9<dsMv5ak`P&fUxP#K{22(Xk;XunU^^!RkKzgc*Y!6t z!0Isps|?tJM%0tvA9VgnJ#RpVC&R0t`Q|401;=~K2p;Jgg7HX~736P0`rAOZ5RT@W zJ0tR=wW?tHk^3ZQ?Kx6c6-<A3ME-lgw*sL#3)R1EL_8J31oO8;JWuN|ceTSbqd(?s zWJ?xIkDxB@Lms{y=>R`w>cdX<!CA}^=^y+q|MzAE9Gr?l#w<uHs2?CZGrumFy%<jg zQxWJ#U=rfRA%iZy6~Zq^@TxIcz^v(nP8<HUP7i-S#{)l##V?5W1T@`Pf(ZVbU}VH| zpe6p%CY?~8z*E^HvY~Tsf3ZdKp0tR?jE6mZ9_LD<vG5%NUVukDg%xc{i9s*}>=-!6 z49FZo;Ii1f1o$m?uuQ}LbOa@mhM8x<q=nK1v9ZktHYx+Hd<mz)UW(QS4d6nR30J{I z@>8h{UqdYg9`#Xe;88jgaM3#9125fIo-4Eq&nLKkcmxG@0g)j+>UWR9FBty>c>YUa zb1c?rVB-uOD2Gc!LD;s~FHaCU?2b6z!h!$3$N&r040<RVokxai_;6AmwF_Lh{pE+f zJ9PXQOop(If{k~9wg^IhxDxbVs0mt?fELX2p~V`{3u{o=kzuoW?e?oMUO)`CjK(9; zjcs^W{<`dO7v5gx&_2iptHWz28*ov(63g*33(DZ4@e=~!XuS{xE^0Fl&rJpw<zERd zvMH|Txw9dk81VDJMf$iixG4W(aMAY)1sARNSm2_wXsf|R&&dK8rR#=oz#q3y!QUgm zKLh`Bpa@8Z>e35-!S!Gt@ci$GH69yTwqYdv8Hg`g{!SJ8ZyJIA{!|WJ)&-+lMFoEC zJ_{NZ*&z7*PT*At<|iILA_&)*3?Ow9eyV1eL-562vn<?AyNJ6>zhLf)HCpBb__dHi zF?UT{F6Pp%Uq>#$a*whA7a+NfkqdC#(cmH^?jmpz2zM*E2!C6|l7Jy^n_Chv%<VW! zLL)-kF0&+HINMJwc>vp1II^~b6^^LA!U{*yuC~Gvv|n0n#*nkg)`l2jwx{(d3@Lkq zHI9&d-Wo^7{%HLYL&R3M!I7|oY@{&+?5#F9@^zyPj(Gjk21mNqU-T41xQ<waBU|rT zgd<wtUW6lAkGCzx5UfpYdoko{mMsNCtUh3yh#^%!v~|Q0s_k%OY8yKokviGVA48(9 zv|~3S1nOsYJmhKnT^QoDn>~&+z1AK_n69<Qk);RhZ(xYhst)EDlJpXXLl}Z|wu3l^ z9DT_FM~ohFz>%W09dU%{P)8gYdWWMth6sJraWjSlJ=$pyLx7&+gd;yQoN&bFA}1W_ zxy=bjc%JM`#gLsXoJ}!A=Xhrk49U6N8AovLcIF{ByWoh;jxIP-^GX*f459gi3y#eE z%4H{p$UM~*M`HGJ4Z;wZH@f1;%jaEj#N|QPWf;=(EVpP3VL8~X5kpqaaZADwm7Cmf zBxQm-j-YJdjw2`2-EqX^z3z$_Qt};lRSY3{f=300jJ&`@1Vcn-d$?do$R!@37y@#q zhZ2r_?1>{DFY?5Zj#E5SFofe{o;b4cb59<ku~#34WbEcugdrHO^TLsf>%10Xh{f-` zaHQht-Xsj6*v}hBCf@A*6GJ4v?2RK4fAz)@h;@8cV93K%pT`*D@J^o$3~9K<=PiaX zJZ5nuhAcdHF^(wAT#O?L?^}!`2)8db#E^qUeJ@~$!Ir)_QgDJVju3p<7e@x}_T?c0 zFTs(3otEff2*9hB;K;u<OZH%hzpt0zNWUt6IKr>DUj~Nko8gBe`d;wEk$gY-IbjIC zv;B22<X(z@GKSc@&EF40>b>fph#~Y60(>xJUW0&W43T$fz$FZcw;+IvA@JS}z>#++ z2I7djW`Q`;E+_CBhOm1ma5;vo+ZD(|)D7~(kaTT>SQvtCY7mZ`dpzhJhM3zM^ae-D z4aO02-Ggyt-1UH`ju3Ir1mj4!?}IO52)HvSA2H-xe+rIxyP1L`-Cm)HU<kM0C^)jM zZU~NOOAEP+A=&1I;0U%YAvkjF*wC98Vy#Iij#L{Hs)r%e?hpNmA=BOu-HRjAQgI|& zD{2CUK$}SQ#*k-^P>nFe*{4(<(kx8^Lzs1@;mES9X?+-?>`5AqB->9j#Smmw!f@nR zpD-LTc2gLR6k8uQ2SbSc6t)gShSdnaiy^{N!Z%<@u-n65VF<9-!o@M<SD^?T@zpQ_ zM|zEnz!6>xBXDHbdl8iwqU$935e&)IjE*C?a_H|c<knI;j@bH`&O>TliX*hzEoEcK ztjm{9zz|uFFP(%TvGy(HA+Sd3V92W;kvQUNS|pCNdNvYASp5)*BdgAg!Vy&iqHrYD zEm2o61l5Kp969wz)HDn+RWBMxN)3y~5mNJ`V=!dYThSsIBI-Cs7KVg6kAWkg#xii^ z(_#jWc=~{$fg_zVafDNACXQ^H#5BbaO^-6KVMwMu%;h+OX$+2B>KbE-A(pO*@x+iy zPsO~z5K7<1;K-!YV!bg$(#5ej5@}}aQw)LhV(dc<dGvFv2ZlJR$-0XnjfSu`U<jkR ztTGH)^g2rzLlhmw#*svg*efvv(I_^K99qc65kp(q>oBBHVU7fb5NgiBkwLi}91*mP zgCl`H;mpSoK)J#g@~1sF97FtE!Nrk2tGMqlgwK~;9NCi`mw_RAdd6vENS+(w>M#V) zb8(Uwa_5J*B^Y9-T0D-_85EBrbZ(75iXn40#`|N4oIm4nBu>5m$KIL1$5~Z>|0#<g zYekR%ibGhs(Clji1=5WMx`Z}mhh&nOG((e2n3=Q*YuOPI>jI*p;DR8cA}W7efTC<F zAR;0PvWwsb3Me4T`~BTz^30Q@ol<yJB%ho)_ul93>$&Hid+yNnMg!-vA**@wGecJ6 z=DkB!)8=NwryC8M`wmwb&6=5Et5Ney!wZZi&4-2utOm^!&NrGf=bn%@8Z%Ek!D`C< z#tEky4Vk|^!D+@k@j;^zv-QM#jV8>qPMm8rV1D<+`9|~Qb0@YNjhB0zWHntLandVB z!{zFetY*twPP*M_w0!v_tI4wBWUIll>*Otr=E{ptwi+w%KKUA>sdD2}E-@M^8&28S zXr}Bt<#D5t^7E(s+GwKu<tbJJ<<_TK&66`vonkajt~k|dn!Nhd%Z!G}$4(9NitiKc z1?X=AAbw8R{)>qHXA%4Q-ZO~$e<Tv$!x4M*9zyiq!Ji`j{~WRZA!2_eVt+1Te+;|! z-J->{cX-g*Wfq7p;Ka_kJ_$F~UZPvZt#NKern}5tT+W|Q{d!5T82`;ws`&fiIJNf+ z^T}TipZyu~5hEVub2;W60MD0y4`!w3^DJITxJ`f0_ptpB5&It__CH19`*XyuIti!u zY{dRt#Qv9veKq+DhyQEjyLcJl@6Si<FGTDwM(lr!*#C}w!?#LS_Jz~(>Z<Z;BaLZJ zf6Pt^`M~d5^=z$_tqd><#zwA%uI!<^pnj`sP{*wt40WP=%pVT<u#yYb{_)MpE3$xI zwH#@j`#q~OU?t{lLiUp|$AJ79VY%dBLr3&R`ZauhkIWZ$1at>}ak`UZ<=yAHzulz) zMSspvz=IOME6Q(6Wepnw!C=pV;u2=68-@X_h8*ff+c|DWLrkKbYX#k@p=8!%2A&IY z!Rck$PA6pF-Xkgd5m~JScONtcJ^$cS<X2<R%MSTF68_G_Z2XHa@FaID#Fx1O|JwKe z3A@JMwb)f>UdHGp`qyOa`t~yB!-092H6D+^d;#G30UyTvO33~X%vXf$k{Nk5WdA4T z@L2d4cE<|vmE-Q6j9=b$mD88Q#p@-AeEhK4oJf{#s0t`oI8U#UrzJh`4kH<xW!uHa z<E({YRY~GKnMU_=Ah3o8Xuoh86Y#gbQdmA=bHQtz!kKSPO)AyeeV76o->u4>l_<>H zt&YWPyU{cd&i6*-+c6L4OA%7|Tj>6Z&uW1f61{#zv^qaD3hO07TR7nc$wXK=EUB?* zH)3i`HM)X?ec3R#p>yswNmxR(-Ahfx2e~_sNB}%QRGkbiL)C>GdgJ}e205O{Cdm)# zCx+X{bI;Eip)kqiR+7~xLT2CynrtOANX{U}nh~c^VyaR$AjbBSpD8hG=-<Fv<F3ES zj=wEFYh@@)z*=LQ!Q#LDknfTsd;}Z=zXq23#5H!D?h4j@jKwZoJ$Cs|xcD*-uX6YT z@I=0U7OeEI1@8>L6TBmMG2xYd0$d6XpF3<!dxzKhO|XaCT=RSQyXKeh_f7G?;q$+0 znIp_Hq)AaPigGL|YjJ90ten@mH}4ow)xiVMEBwC!X~K9U9gauS^t?C;)|6Xyc&PU1 zt>BPXSNuXcPmF(*c%Yrei79P?#F5qK5pvE>le&x8B-AQSl3tHVmfJo_>b85*My+nw z5A6E03S387UZre0GdqQX>CRKiX%<2ANPmobAsJGEpBnE%Q%Sd5g=6@8fbd!uehXHA z+3<E)d!5*lh|@}6{UP^(!IzU~^$DM6D{QKq2f_LHQNQzkMduj5gz@XkBHUVmLx3>N z_c8papJ|Pvi<$K>+z($5P1@CirlFWo(d-p_qhz&AT3v$5Tde+#@EZRDd3XnjD}9p( zel|~)7#&xV(Tw5l?OGFe3E97fU1QIG{|NT?hwK+S|KT!kPW)l}J0te_gb9D&g70yo zN{;cvoMdE|_t!P1F%(a|UI~aqGC9C9fno`-jXl`uR!cjUQ=S^23uPVI<nAq;5BKNx z(X>9ph-6hDbG(nP0QMzkn7r+S@?HFU9cdR3&m`<RSnkh}?-jjW{Fe=tN%3nZ{T;Uv zOBv$4=I&9vZ-0z4g8K-+H{pHCs61NE#6KgQSypZ`z*107grO{r%8t*==C|z_>^nwW z$bXmjA%Wc0W23ZdS9v_Kwn#%|Y$M(|*pEXQhz%Rftx`a*&LFo{%B_#JMeXx@9r5l* zygJh}BF%XNb;gZS<{<k!x(emrRN(t>-_htol!Ih}%lm4`W&SQ)0uelB!XRkFpT_af zx2>A%sNK7V!rD9$c6B7I_d6c;{zGxG(st>VNyS6NrS&Zu_Tqk<uTU66XlF@(;vI!~ z_hG&Js4yXirGyn7?XgeC_y0SYAGDr&``ym&{rj|{;iO|O9Bz%X7wis*H@wb{wI?O3 z(g!dbZHk%H07AZm*^)WI%K&bLIlR_yjXfOaHrPkS;i&U%`Su*~Y5tu!mcO}N>xt03 z3H%xg^H3?fEj+`I$_r@E@6z`4daHyx!})vHNV?vSlhPe)f?L0X#O`d4CBL@Z-c!uP zS5_FV35(lk331vb6WeV@Y~iAXbK09{&t5!d$r68;c5B*BYtiUX49IeJh+17HPs!iC z{Re*K--j15vnTcx_}{T6CS2#?R2;?1NM|RKY*yK!CKLM@LS}X<tHF#0-c_G?B-rxt zUHwXLG$BZpWnLsO2v+^Xo-}*yltvvF+ynEXK&&IU+I{yDqgV2Nuui7Ef1TIsBAArA zp+cJwa4HBR>ez<~uYgf*og_=w_Fde(FjcV~JuGa0H+H!laHrJ_xjp6^h|_C^+yOiP z2Ht}qY~KvK+)g6wj^GkNVRr&+#7|-M_SDR+#1Xbn<(u5DC+yysrvYU^IiRp%?pY;n zVY|3#a(lt$xe9YN;Pbq*^5XKm3+Ax>z1Zbec^4EZcvnDqem_|0s&0I*jNulx?}lA& zy@V|V?+z&J9$<yt6YR^o7v`{i5_Y*=N!ZEYDS*OG1uN{{;BdNOyHEE?m+mwd)~D-c z6|2@_$;d9>I{1w%6N=vy7k-E*jze=|e~!mq!Z)Ovjo`?v+>ogQk~DolvzY3{+dmPp z|BQABfB#tI`v>{H_5>|ULibq_7m`ZBV!UVN-^|33^t6Ky=ckN}uQfs^zBF^V4XUo- z`Hq;a5naumZ3u-dkJ7|5%grr-W`E^kt&xYqlF#rA7+ozAd|wbpIccsi|EnYAla!rn z|5hfgMg3L_8Vc011?B$wy6Sz2-}WPs59txEvvTSzY_EveD<gJEWv{gwBvs}z?O9p2 zZdHV2rm0DHSZ1-&<QDB({k0kqB<FLjN!pkTC3$vQXFidniqv;iq^#8udrib%8?o0# z?DY|QL&V;QeatGb(s4~q7O%DJMR+M_-|3M&G)3&XSr+aO`$p_DBKG|v_WdLF10we3 zh<zsZ`837+G`l2Q7$!4xDbY4zYHwB~+-&RxB9c<S#C+iASxH%j%P|N41$UVp?d21j z%Xfcc=fFr>^RSQ1wC0MB4_1&y3;y_E*tG@GN5<cXc%O~tAi^C^c|pO!{Dkv8AA2Nt zcrF+-A73G!NEoXmz};1~fg(PZ4#40|qF_S@BogkVLL*+3u=cS|8RM8~FBqNQnOs|5 zx_G|z9xmI$(S8flryODbi}0`MMeXhr4}WiU-<?pa=|ti0hw#0i54g$27BlN?Zjo>{ z*v-1b?rgS_LQ=2=`MWS*@9NRX#A4D5-x3RRV~&jU&m|`B=FzxTxZ%EdK^yLqi5C<s z<tJR8Lr20aL9Hpx)1MC)_IDWmbhRDP=lu7>al4E-MbjJ+iT6nC%~HIQ9SISR?<l@Q zJ4i@4AK%fq`FtJ|iSO8ae1-XMkNE4r?%JZDoZZxwR@ZPIK1#mjhDuQF>ya6jrQPoG zlZk@xapE<82@{T^6Zfp$b-H9F?b(*mZcqL^z4sty&#CbEIZmmVZoI}<YS+H}!@bP` zn3^k+-0sxAF+3-&jXP)=ONHs`)U3;Blx^=!w#VCb20DdAm99WLFE}IIV(3eT^E=kf zF$tGPZ;x?YVIJrU*NJElrLmDqql-Fv2f)7p?F+*GMK6T+D3TyRmv;tL8Ut#Qa<Q0k zyY%7`GrxWlv-Uscs0OTW#vccr-p>uVmC28}t=tr&jX1UN*OT+A^~@s(Xaz7L^LQ{x z`8a+=_^E)dH_eM@d-A6vE<@hm!!E4}!Gz|Svu4kkd*Hm5gASg*VBw<HLl!S_`nkr^ z%r&@T<<Rg6l~vU>wRQCkjnnt8SdSM{_QUV~HeAy_`_6D7M_zNW&$LW@*LEoUde4p} zJ6R7q@ABUF?fU-MZlx#y+iTL~DO2~JR#sl2EUZV;Z=TnD8~>g<-2<?9SlMb{$5#7? z8~ZB%GoLmEq>YeU<kjVsMoUmC+)XCX1;tD?N;1Gc>^pJa6Z@S06-_bl{0FT9kP&6W z%t+?eMN{l(zKOwh#w}Lqha2h#k?i8uSzH3~W8YuMwUe21&Fe+7Gof40!(BgmsU@)q zhrsANT5Mzt3Wte=Agp`n<$_K$2&1h!R#{$&LW@KUh5nV~H+X1AQ^t{t;PyTs>MpgF zb8n(F#VYX^!@Gu$yGtA-$%Enm1>OAEp<};>^S+F4=U!D}-h9%dGh&Diy1&j`|6q5< z+eWYvJAd^%wB>}OgXYV=hvA0DHuAA-&uqC5v3UD#*u_#mI(KyD=>DU-kM2DB=%e8i z_K>o2C(vXPp3oLkOX0~R#rLpXYD|5j@pPQtLLDW>5H4ki<>m<sRIQlW=t3_$x@FSo z922NcLILSox9&Ps>CAD6JH$Oif6pR|%cv_TxMl3EZ+|HTm%>{c?Ru8Mo=uPbriU2v z-}3ifxF;gzmC_uv=wW-U@i4HCFXP~Cz-eb62CMZx2v%>u)Y-oQ)-mf{4nG6d5l)Ia z^hB~Yrs3-=$5G$m>k!&Rh3&c?5w2fdlXC4*NE;Gw*q;~+zTNUyTil3}zDTMy+aofI z>rW!W!(ml67gj@C-nAt1(nGRLY<~C6k+!;pG}^^#iLJ>$6j=SJJvvr8;YHr((N75B ze5}T=SEtj3FpowZCp%X5rJRslqfMn}wJe;oU`|_eI|Q%0k^aVC<E2Z|HxRPX;pOd= zMVp7|fcl5e<BFOxpUr&kcq7kB^ptDv<%*OGJ0lX73%2<%kbt8K<HPMoxVfP;b+Bdw z@(chcLGxP{9^5`w1cdQ%9DrFfmh#Q%PE~aSPuFr@-c(gp+fccrZSkDu1uY8?Y+o{G z@u71TkIG6uo|(j<`No%DYl`w9^|hlzjif(|FoL7Di1Bx#`IV{E*Hvj#$klvFC2%X% zNf!lPK}lVAD4muMZTz_@MV@OY()8$e(QW!TYn<@3v*fPkNbCxK<~gLo6hi!NMby@# zmsL?d1}z#h=P%~Gy)TUxShK>2OqJe8*KMO2LX0atc0$_rN##zziath0bWED%ldVOS z-v5=F)FUbBW2wzdX+epOiBw_6ZKubH+ZAN2*fl=KayQlDh1S-dcq+m1k&$#8yJWfC z+Qa9od8~RF>1n>EOr_Yq1@Sya-i-&<G}#%qT8$^)vs%*wh&*P-iwlvYOnl6;`8<uC zOaHahr(-DoaZ<^9PQg{MqGlx7jcT!EVPkub9+x_?uC-<`@7XdL*O3SLE^SUolL6X& zi}Ku`LI?!Hpcv0HQ(UTy5A+Nd<9Sw^HztbnnSo_mOq8>oL^NVzMR`YU*jQu4*Qv*) zbCDVAEh@^nEKBihQC{b<c=H%WF&UkQj<xi7z1ZhcxO9PDMJg`R#Yjp)L==<$lCD(Q z+*DCMwa+fbV_Q!qg*M%y3U%1HBe<aKhe7$k3@DtF!aih<Ot8_<e#{wZNd{h3!R#FN zee(E&x5!B&Yc6iDqq0gjWY+jkD(v#qcvHHs)&G#9j@jbJjB*{L{l{+i(xR6%M-YtN zvGQxp+iRNdFeCWwHO<vU>Fl@Hw724#Hujt_G5}cm(RtU)8-HbOhpuBuQK-_kc<=Hu zZWXL7#`A$})U4-G(_lCY|4GZu+iPpMWnypbwRM=*9;Y9duGfBXVRF3jQ2KA&D{@5l zhHe$BE32!=sjhIRDaBt^k^U-+^H(*!NPmq*`fDiCUwx7O>WcJNTcp35BK;NF9#uuQ zM^%ySQCVbrR2JDDl|{BkWs&VsS!8=u7TF$^MYcy}k?m1gWP4N=)gD#Trx(>8_$#VC z@K;oO;IF9mz+X}Afxn{K1Aj%e2mXp`5BwF?9{4M=JsOK_kH#X~qp`^LXe_cl8jEa? z#v<FJvB>slEV4Zsi)@d^BHN>($o6O`vOOA#Y>$Q_+oPe#_Gl=wJsOH^kA@=KqoK(5 zXehEh>WgfT`Xbw-zR32dFS0%Ai)@ejBHN?B$o8l&vOVgHY>)aP+oP_?_NXheJ?e^V zkGdk;qpryIs4KEP>WXZSx+2@7uE_SNE3!Rmi)@eDBHN?3$o8l$vOQ{xY>(O^+oQI~ z_NXngJ!*?=kJ=*Jqo&CAs422NYKm-+nj+hyrpWfFDY89kifoUXBHN>;$o8lyvOTJc zY>(<9+oQV3_NXqhJ*tarkLn`Zqq@lUC~kjVHNCj~IsPjDdrrmv*AI${VP+L~QuH=A zE5y!vo0}D?jF6FfsVZvr!e3Fd7ygP`P4HLLYJ$I_R+H+=x4BuNcJ)Tu_ib*LuZ$2b zg$q>V>i#x2D^zdZNd3Ld&GMBI!m5{|=BujdZ*#Lk_2!M#-`m_QUl}1xy}X6ES^qV1 z1pn*15nUs&7q`Ya$y~n!_PM;(j^uG-yvY8Ir|fS_WWOzu{kBB*|F%T-+p~SKvwd+K zsJEy45C!LrZwo8Cns{4S`K@^Y=WStS*TKiW5R#t<{O!T)|N63{S0c-dj^FHf8v`%K zTim)cp9o`XkMIrKX(;nXO<uMoF<$obO<r)DYyISU*HgN_uCj96P4>xSei`GAQ-Qxo z21?CM;#vMG^?Kj&^%u3*)#50R9?y#(K#Sa+@A3SZwhmpsJt|U^eDfHOOZ-C+x_CQA zrHr25#vbSH;#aZd9PggEGMB&n^_D1Uabx%`QPeIJrt~NOyE`z79{PBwH#a=q@bYtW z5hE2A!`kEew+_{!OIp-eeT$T}xY7C+DQuDB^(|7`+=}srv|m}@A_Z+tC%Pch#v{-2 z%j;XDxanNaxO}{SS6SCeO8U3c=IQA)$ga@@71SpBO!+hpo4$0QdSESIQ6*#_vqGa- zG2W!{Bt$TpL<>qVLPDQBLJyXrPNpCAdzswQj5HRNdSy)ORz?*Xh^5_njDg^VwNRQT zB%62uFM1=elvm4m*947l1k~qzZf#CoE=QtV5B*L?xmPOf=EmqCDh;W5sw%IkERV`y z=6l=`>A|+a&Zx!_6iKb8ny16!xvrkrFnWgR4J$w>xs18UV?LMYe=6(FB(2^jlxxQ9 zt7FMT%)Exk2pNv?J^_kqWBtjMZnIb(Y6e4hzbP7_{34TYA|(~sl9X<s=BKsBy)MO0 zM(bo#p~z@7e{ZUCCtpJ&LrYcU|9poUt%ob`;|<&0|4%7t`A<+|wLbc$(7>GTOXqkE zH!^O0KM3Q}nMt098;<Q2n~S!^A~jmgk`n$bVHWbV7*lL_YFr|sAT0=qVwGE^)63B~ zP7?D_;E?MnrX*;2>?6P&UfRl_{kgvneO^U{%cT2a#p#DY<pa4YCer!ljnrY*)v-rw zLA@;CW!kP{JR-ZSYHv-W(<0RsU30>5dUNR#Exg&nS<8R)I5LZQXOI8Cs(<=l=lZUl zKkJza|J6&uXgbaJG>?6cgK8U(D;f1#gl@8e)!&C7gOyp}FETbp^LL{j{uiir%fHL! z)xj33kPXdb8&0(sZZcjk*{<gj9l>6{QiO8PU}q?s>I{VxdsSU|R9@8+Sfz&2o;Nyz z^(NWp>Y-H#?@W>h0%FP^3hnb0ydmHXPc3WJw4#>?Q(u~wIC8Ot$y|4DYG_(4)y4y^ zyvRCluy=4;thq0KLb@N@%tf&S7nyJ<G#rkZ&2P3m=Ggezm~rhwcPr0oCbQ#_`1!rs z%9SfeS{vn;yggjuE3!=cf%1V-3uEbjsD4;m(S=K5bQG^^Gq65dUZZi3IwFdCc&kq# zzT=GaD6dx8sGtrF%>TssV_>i|ftFAROleS#5@ChY2uiC%r7_ctXCk%^cJdBjY_^Fi zwqVS-)_X>A3eU4f!!sFG3O2Jbo7?hOOMh4IAS$9`@mN<HWuxZNH$A%Cm)1Pg!_xzt zlE%gi94(7u1mtIl<I+9-aK=~E)l`-97%!77+RrPN^_008qpGg4zNWUev9Y%NxPd4g zz2VcvS{Lru&pP=3Jzo?QLw#n1KP8+0b0?{`q1MtP^Zq^YXnI1VDf6CO_x%6DMfk6w z^~c}CjomcS+C-~)JkzzVUF?6EI=X^x8ePKv=hrwr83L~$Pj&LHW5wv9THc?AuIl-( zqMy?P$^QJqNs(zJy!us^SJ#fe{4FAuCH_f`Xe{f$?nT}>C`<R7B`}}QShu)5YfUt~ znDOSsSQM}6)!B-I8hA6P-*Hcu$5rrOYEQS;Iwse#0_N*#Jt*VR%S36I1^)J|5IOQH z=s6?guiKhdtO(!z{!gTRd-Wh^bhH*6b?LdPs0UB-n&&)Y<~5$!<dx8eydUnL9f@VF zfZ3F2;PsvhY$^;@O#<wz_10W$fLAK@a1u7&0&0qt^U6R52Jy65dEY>-ewVK>yXEru zil|Qi(l_P2Ydk8<zko8D=GgEtJ~p+IXKak~I*O<nbD?eQ_g3=6&KOgW{}!1DyfY;1 zS|3x%`!oHnDbh9kSK-pmT;yoZe;tFtH@a%qQ88`@Fglz`T6Fa~s%E^#_L=mJUNC?A zj~iNfQC>wp-chMp_FDdXVR;K1>+P9;q_R#Psi-l99Y()kRbe`GnV~1%MB;BOk%ujg zSu}TU%dD2>`R&cKXD?c~q~Jv|-n{Z}aOn*%y(wo-B=lOQF)ZN`yaM5F%U3W@NV!vq z+=_zt`AT^YF8p5K`y%#TBlh=3?7KwlyG86fMeM&M&kWeXu3T)1dk@e)^;VaE>Me*Z zED7F^zj5ArGm`7Aab69`+Mv}VL4(5y%aesZ4Lx`}%F~(n*=59!-r2Q&rjJB)Wuc$K zyoM6I)8%!{GFAEbg5U-G?K+aCeKy;yd0J{?4c=!KKkr>s66`kO_rTe$i)ZnE91Eh& zW^KsxJp6{ryTH8`XFXPpyq}lDUu+~!_eQeyHsUJ?F2P?YpNrjNUafIokD<hG!SC)P zaV{C`>Plwy4z+pB(`CWu6@Sm+UoU~?>&iY{?L1a`pV?SzVP2sQ7WLZ~teZ2-T%(6F zJrDnSd34Npt4A7Zs4!l=OFgOrF2hf#Z}{@Nmk+J?kr;Vo82@{Xq&+*C?aHJEpkGGC zOdr5+s9g)+UmU}K?2y9xioU}b%}p!*Cy(SM^yanoS(WdP*<clZ!)<4dH?n$6+4>C) z$KY!GhWeO`x1dTwtq}wd6y`gW4?Uxv9F>{P7mt<inS))+k%2P9W2D9#@w>-J85i(m zoH7le0=swReDnOUOQ2v(B?zYnihUok<sCbXOA6BvNo=DG_5C~W6Y3{RM(Xciq_iTL zCfz^cKiv1ti}TiBxT=HqE-4A#H<Hf-GwGE)IW;=M+4u{M(?tUk|8qm5YGfz{z4+5y z>dU<{p6Qzv9~c$k#|!;w5L-X_J`)7r$Is3qakVCs89R?zp9Ov3QT&Gbx*DFx!w`#b zDd(eQ!rQ8?pnrwmdmrhLq1YSo9~$ptKl>ZWeGg%#jpRL?MmF3FLQNc8LKr<rokQp@ z$=l$(7tR!HU#(Nev+tN^o0=BHGt14Y)SNZPkCNEatUl6hgL{ZeZ&rra+Knd^+V72g zzb|6{dBpxe#D4z<+LuS(?tLv1-+!9@(RJi+UFCUr9pTqi-iIRLACK63BlQ{m-WU1) zLL~g3BKH1>|5qa4(~<Ad^tOrgw|_>$NB#dj^8KlZePA8w9UuArVkCSf@;w`|KNs<z zi+uk}<ojUcd$d0O7V-aN#J(aD{#Cw*Y0&2*{#Qo)ZxyNECnElbBL1WGJskOdLd1Sz z#Qv^Gde27EJ1OEnn%;Ji@Fz$7zZ{A0w-NgvBX&I^AD-V{irD`gvHvw<|3}1rN+dr| zN4}pL`To1e_a`IvXCijhhn>wuiX}5V+{+>=bC}#ra9uQ(NFj5b&LNl~Ic~{p_~n4J zS;REr%a$?eC;JEcVzUqw$tB%cujo~qgryKTbXZ~@FSm~FD(Yb@7El?8Mmo>#Yi`II zM5#Ix!ry)AM6!2jzvRFR>s#&JI@sG=u(&N5?(cFGn3CaXXL)H(Bp?^&!ge<f*&gfA zmUiE@CklO))qI<eFv(!9EfZg!bIYzVo6rSqud&ASUWwV%Ubs)FPZi|PFa#|b5%#CP zFe^7Sx`LcbR)v|P$8cTYW)8Q(=?N{%kqWm>JYSVI@92_XW8%N;+7k1o{lVDvX8AGT zcY*uCTZ2yoZwWpdye;@b@H@bt22<6+gj20Oag@b#`V+ivU)UzmKB+lgn^HD&DVXs| zSBs_smk#h0Z6ayS{i%Ll40kQHbbwx%T#~dKCOovI^Hexn{G^&H@30b<s<ViEnw`q_ zrLx&@rOTOo#EvO3@5+BSZu39Q*`K03s)q-`Du1JMpA8nzVX?y<&b=2b|0g?q0a)+W z-%WVc<4s`I-!%?j3YPy5fmQD(IlCWH<UctStBmbCBbJKo8>?!>PvfyA!A{`teEcBx z&1nn02R~le9N|j%ZYtFgY!QMnH2Pe%g<L*P_^k*Z?ISCxGriq@8Q(<{e;2H>_`Xv{ zzEpR<5Ba|1`&^9gs+;lhUCp;??Y7L}aiKM(jkkqoA?3%E(<))_gtK(uUuiA}EAE#_ zV^gs2r{Q=smoH9^o<shEyU5u*B|Dn74c55$?*gmL<CLNLIlimz!|93!&>&pMb%$02 z)xzI2KgT+3eHYB42PShP8;J1y90XUAhQ_4tld}o0vLE8`u`a%G@>utAzAKN)(_&RA z=5OKlPO#6*fT?6FCD4BSAdeOI#fRE6$t>5q#IFgLVHFcY*nV2X9{qlL<a^Yv@Z#Jd z(l;Uy#3b!@-*faXb~b5#HPy};l0^BE_==>aZ0b$O^!-_RaU!OXhztG(%?x9wcYag- z8Ut<V<wUQa#mQxC-;$Yucs9E-ok<uk-SMtur@0HDM~s=PhGXG{P}7{tW)R%VggcMA zqBy}B{G17d-Oj>(Hc-*SHH3=HAXm^c73E#=%(8Sv#w4B@uE=J(D$L|i-j!iK%p$*3 zR^MIKkf^Ti?2K0-8CBIS-^rme?oA-Om5Y~Eme-WmnvjFJRBuIBd_da#vgMg<@C0L6 z<KyRG%^_>Rn%|;x%sJ$1GVY+@Tz)<P+ym{TFy~?ZAfPz{6r9h`hk)lW>-z<m!~Q>v zec=B}f+P9%J<NN6b<hSG(TTigLjCEX>q~;8z@Gt10qUGf6Obm{9fKE<XkuENF(X## z{e1*Knoqs`1J0fzk3L_EsQ*^r5Fp$?KZc*x<b!_$AHnd^ko{wrKMtrYpy03gSN+H= zxR9TVfbjQsVAnUnX8a754P~>silW<o6k~{6ZhD^6Jr+Mymgv{#WOowcs!T_UnRM@v zG0^?Wbb{mka_+CD%`cy@Ggv5>tw_Zg;KPG<0WD+cOm@-AWf@+t=ZS4jFU`uzT$w3j z(&^8cTaVq?lKoxj1To-1)n@2ah}?FOsJ|9jW}-rsKsK2pOWb@(5{ph%lU-#ilbzYL z*i>cin6=PRMNTtp3tg8di7OnIsSu$J@ox&<<M2}lU@YY_!)5Vq#u!yZ*X>bFVa}8d zaMh%1*jRDUBw>YE%1EMYfLfpeG#_x*+B+QiMBavomby%5QYXNjN%xO9QA3708OX$! z_3`37Etbwu*NLo-M&wtg3}sNFsqR#gpRz#&F0G|3o8pajoJ@wm{ptQ>nIW99jPhkZ z^rW*nmqL=Ye;`FMLAo5uj3U}6(Vw%GukPV{g*Q`ex=~4)O@)L@J&qUeZ1U(WzHE7W zl77*Xw^6@?bRKW_J;&P<Dfr%5uKuLyQcPc_t9K>(%Oq@+^xfK8pzLyk*@6!REy1m- zvg`^@^Lx`PNm3nw5u}tD8NOGSaU$H4PK@)h2jZJf8u_ZG933H5oz5o9#tvdKQAQ_W zQHaE5KiO<VQ?lRI7G)PoRn^hry(a8H&h{8@>2>w3H2LPM+gVu?8G$)#Yi(|uHE-6U zg$w7*YMVEQgR?pF=d{gfUE0>VXi3|FbJ`ZQwzY7U#<G&lbyYNyY)w3#tZwX1)+cKd zb=93Uja79GiH6SZWM!hJvn!eGuCA`D=uLHIm{lrNlrFP`j4Z*~icYE{Gu%!I2P){* zEGQTElms2jdB-zHidKE2*0QSd>E%@>eY3VzXo^C3jTMY}H&qhE!S8?w5<ME8+dskF z8@68@v40Z#Sb0P^xPmU*wVZ`1>kdOL^;6bW+1Xh)y{alv)!C4&iZ@hDukEa^PT1P% z6&;f8$t6?$CUaMlH?4Cw0@@FF`_C|oM)P*@ISr4R<(-;L_S#<)N8@pp#yl54O95}s zVO{`Sc%h}kmtdYEw-htI#$e3SXH7Bo7cLI1TcY(ScJL{F+z!ilZ%-xiaVeb&ARiZz z+(8_ot;1nrFa=hciy(Gg_IWuPfA1N?FN}eNTf*~cwd1b_piQ}7GK=|qc{0Ji)(}*7 z&pKC&rQ;{KE8_?*Wf=fWl9F82Y~nTqtfDJY>A~#M#q%>s?F<d27uRmT&97(#HV!Sb zU15x$UJ-rfCr|lVx{F0o+kLy!$mjbO@>~hnZ?H`0k-q#l<6Z>}7_N%l75i`B#eD}L zm7Ph5<eYw;fiiWfs5od_U^wYE?2=r1V8HCDefVn$tG$u^?m}Vr->=53_-*OkzIbIk z+m`GbkR~%qo=i|ox^}_X_%!|D5`Z}+hDHZg_;_!$t)3@d(T5NaFpD_IqDB$zj&%-p zvmkrlBY6>jwGQxk6TfZmkUfT7@h$CNj-+XSY)&SV&V;^C<9oCD?$*LYY+hSiYs{`5 zTo6bkW37E9!FxktY6vp}drLnBpnvArE8@RzAmrx~m#+F;A0#wXOg@j-@lAWWXg?S8 z3mPlctM&@Tb-nZN%XkBJ%|lzeaamy-s$%NYsRp*{F9{~{edyaI0bWO8AI~rNSQbj> z{)qjT5&Hwq9!f8`WtUxufiqf%_s4uO>EktE6SJH)Th^QIq@mec4J2c!tl{zHi|O<7 z3;|RoJ4WfH?Un*Gqo_T>DwOJl=%Jdqv5{yu&RKQ9T+&%sBIDkpsEl4>(8$$_p6VY= zwwp^g#N3&N$QtF^ZiaPoC4^ACU5hnWs3F|id*KUq<%aswmY<aXYu|bVSaa0@V68*@ zfVI!L;(WW$+3${$U^DDfao4`#xaD>ay(@O@7q)YFQ?Tag7hRh@4VL`@Xa5-SY405$ z7!dCbbSM-Db8ogM+1u;Q!|WUT=KIBbV89#0J*;K+iWH<%3y1tr1TpRNlKm@K0Gb+W zTrX|!;s#7RUA3u+Pr(aM+A?TP_j{b5u(!DrxC>AlYfaGKJ_9AeyTJ>=ni~>eeSdoD zE<rD5@9x`M-$rMo&V*UYH~rl*PMj~SCC<+<zi9o@Ug@)#F9o*83<@se=W~GORDJ(E z<}U!gY+uBDIk1Xvpx{gVMB}>xHy_`Xn7<78ec4r*zXJI9ug3gUAVysB^EJ$02i7?I zHJHBvT<PrBV*Vx&!ww3*#m~0^pWbzt{}0f2#dkgCaQ?r8{kwqouf6a0L-rdmNAq(d zZa%)7Fs}jTx%h9!9L>)UaP#%`L(I1TKD}Ephx2nA_S=C*;sXVD@be?U`~NZKaC|?( z9u9ve_Go+Dh1=u_w)}TT{QngDJwT=V{xi(?%I?ztIp+I-$*z3Az<fW@>c0OH^8<kQ z|0~SD4t;+R^Fu()h5rraaCsia9xl%#*dGNtT>Otk{6CKU3Bc#)NzCE${}y|+|2~DA z?_a;e9BrScar5>24CZk8evkbRfZ7)n{E?qO0Y1JzV-A<+S?uBXp2PkZU=3k62mXpV z+`pcW*wx>n?e_w1m$~+Nag6VO({~sD-!VtWUo^g#@N)qELBY%Xgxl*C>{0*G`uYcc zdR%(1j^RICfB)orxPJbHJv@G1!>&cZmu~{*XnGsr7IW!sj5(UWO>pz$Yg5eO^xuI! z+8;K<&8N3H=63?CUHn^Mj;6mQZa)33Fo*l=)?@gO<}YgBCKTVcm?r|hKfMd{c7X4X z@5UUizwIOT9k9O#nCSY)j+jdT-#$BGj+SR<+<bX<!5pohaQWV=xN^CHZ1i%AA+Re9 zO`$zW<4P-6QwjYf+HtPo2uhNEKpSH8XhEx^ND6{qW~<sOHkj#M_eRf?gIZ|IYNj`I zcXxJGO;6Nx)yC`UE2<j1yOP}vW*cfYY1s-$j|$5-Za2wVV#n@FFC?G6<WJ?_84wRh zv?#<iED}gl%W~pCb=VMHoypihG6N3?B{Xc^;OAt~k<&Z8{ZNUSqZh$bA}lnP3_bB| z%x`sihhv>d?!^wIQ(00;a6UqqsigUO_xssg!W1*h(P;(ToFqj$mpJDW=Y@dwAI0)k zr_f*cH?SDG<asQ9484H4hjFQ)DcFo38bPwLi^a?n8D#gv(3_^tlI?7jy4cobRLk>* zt!&pLgcTh&mj41Wlt4p-*#p0QF3ho>V4i%`u@%Qmoicg<rV3|V7oM^|5qX+vI`JI_ z=xCfWK+5LtkG)AfkKRXlwmqRFIEHlp4v3Z&J*c`AypJ*Ezuzl6z)?p`Y~V@RShE=< zBj+M?JHsswE+Nj{@vFGP{DN@YyApTU{{B!}KOo#Rpcxw7N4oimmbMOuiG{*Ejeq4Y z{C&4b8l@rso6~oc1_v=ZKJZx&dP&EhVfcF3op5htBXBySq3lR>&Id^INb>SkU^37V z*T{)=_ji!5?4U-pVPCUj?L(4I+!;3Zu$Gf-yn2#-@tEVD$NFH<F`ChGXZZDSOLQ?% zv)k?`S^3RYu*&7rd=#^2dL{;#_x*_+-zjb|3}(0m@tBp~<9sEHaC}T-_Z~oh8kdrP zZ_5nN?TzOM&LpBO+^Fo1ReS4qD%Cw`j-ASM2xZQssvFH5W8EuY@wbPKHaqn1dnv~W z<WqZk&1s*#r6fpzmjU7>c>CcI``ONJ_Av`#AQ^*Bj;+gJUne|_fq^(P@Bn^`ozM25 zayQ4n+CXPP;kw+DZ(;jh5&NWw{r5Cb*#G2pe2?BWh~6z&*Ik9^-G&K~{A(W7`19ox zzsJvS-S~Y!_WU`rVO?|hk(uvKL?j~b4&s-X&HWN_=$3@}dW8S;DRwXF&*V2d)%Mq| zz}j1DRZ~oE9q`F5ZJDE;aZ}S6shJaL2AYw&&(4z8nDIi}jE(!%uoUeAG%DeOg2WTY zarWDvW9<!}__|zDE4>Mrqhju>hQe(;K*!ne(ZmFvfEmCMby-z;6&IP!SV|--QcN)B zY&W*5B<P|(wZ7Jar_i^i0(%3~fHI&wWZ&>S`4O(udi1A<2YKH>)~w`==Wmg(9`ds# z`O<vv?c!a8?H6qn1hss3yv6JQ^&LwN^&pDCVc0$~ZiDF95|toutzhwGnN5+cP7hM^ zq7S+`Ig-8*7GpS-BkAlzyy|B@-38cHKYyWr`+l!+&78P|Bn(RuWq*k<9aBNQ<-=2s zxrFbc(69)*dLhAL9SWMvbi~Tan7h+foskX`px#Wbm3vr4p?sW1`L%xgc&mtaPwegt zMiNU|J2sXj$=ibXaA$J1(khs-;du^11ILkAAZ*V~B|!!(x?~bC`W#&`zHu!do!c2_ z@boKO$7mnyM{ojlQVDll6nyRUl3<v8{fzoHV?UnCv|HgP=v&kdo{$Vq{d!5T7(d^l zo%RDSgMJynpX$zkyUw+tz8Pr^7Fs3&b7MA<?qUJPf}ln=HxlM1!sz~hZ?|+moyG@e zy|vuqrEPP|8e<H7y4pzCFA{b;g{63K!RKp5vBy3!*pd>vNca1^wc}Uxh_|O)SZ_bu z*;|avmq?irNr>7r?OZul3l*MGsiwuremz?kPQ7*Qn6cSPdK#OL1LB){`)4qV#_;yf zV%{TUKNGXgp8WT7FsnUZ@BTxjup1DLgD}DFC3lR^v*1+{Z!Kd(@q2qScEeY6-)CZ1 z{{8n^*!Kw8&%u5`$o^IAir4!WZ|=~L{l~PC<o8C8ABJ&kzZsfi=sSDug#c_qQhUA0 zejk@;0RHoFH(;3@vi}aVc-5ohMt8IhV|GK(MNvDejeR7(PZKsA{}MNk`t%ROzH=zO z7-LQ8`S06e4}X_ETvzp!J?#Hb?3zn__+znehFx?6)n=fQ4DCR=p11HG%+Y<`Sbci^ zC`xe)SY)cpr<=ZFPujVzI$-+B9_N$<$C96ak~#Gi`&q<ZEUs()tS1OeP*&&ftK?Z{ z2W}$)4eb4x8N3%ktfcq54Vz8*_4d86>%7z3AEP3|-^It%+-}a*kQ0j`tdh<&(OWoY zBc;K9CK8rSX#min7GL@XP<xyA-;X2VOU^AZbnxpPSL2-HGj}8_l!Pj-gEWp(TGWT= zz0v(Lo9yi_?@6YX_2gpv#VYaR!*tRYRPNDX(!Ggx1SooP?F^0B-fn)TFVAXjZJyQA zc0@joACa!wYwS3BlifB72A!GX^WlE%!uh<sj9qQAj(En(N<PlbY1i@dGEyF&8K3q$ zT{v%_?)t~*ycpph@u|9&w<i<JlAOX1#ZElBKgQpD%DO1CShWV(i)At&r^IIL2W2^= zSw@xWD`eUjVNB3ypnR?gadN2bK23d%-FB#2&nKf~^G%kor-d%;So{}D1F(F$Geh;U zm(H{I*Q!XLsxfET(#B}7xMmkHM$JZ81XX8*!bxeb&sGvfSFEFz-D*>l4z-6nHhe<y z1Z<Ryar;t-+ypcD!ID5UmS_@<ZEtVFta738A=rfTL8iV@JW3Q)qHsw}$x+-(tM|j` z0cna&CA?^qR5}aYm`SG+5^YD%W?#H3o#pUza3}|j)X$+{8b$)Ff@C_INiT=s$zRTc zc7X=V+EZu=+DTAVVgu|T94js4+lU?*0Xvd0H!Sk)C*?3UoXbnw3Xu)kTE_=c6=PNZ z>!neQ%8ClbY9u1tF_}621?r=d`p~+f^Js6^I1k$;4<Ne==Jt}*flO~?E*%p%UqK@s z{8Jw)3A#!D4A#;qU~fMgyYkf;&n6K<$-DPP{H2{gAMXF$cY?A<YJU2X$Ac|@yBy{P z<dG5HsW=YKulM~u7urbINg+aKZb5u#R$e48+nJk36CyveJSlz%G-qdSv1R?`?Xz9; zFBwQC6HC(FIitb2Ggsg~kF$E`z97}F>#*6m>CBRx6_M~#2VT;_=kF1pKSMo_)Xrnh zJ;8i;z=tiD%ZK@!`v%ucdT}Z&<vkL13sxRcRo?$Z?53s>Z_q0;%s&;5(HpELZte6g z28(j>VYGTFjJF@>>|*t46KSvSQtRqSrg9gj)5xAn7WPnk?yvDNGLcacE|9BTmy=K$ zl0FXS`yy9PMBL)JtkE|*N<w7zYAfB~^Vt%~w|2BD$D7dC-DcD<9@-iG%qE7}5S&Y% zjw4NRp<4k{XGW$2VI%6_8H0%*v3cKjjcwmeu<JCy-8*shG{9cI&_y>T4Bt*QOk?`{ zX-+B(Wf<H7SzxABYj(l4ZC;$zteFg730iDK!@@4`!s+Mkev!Rxlra49rT!jL(%Btn z)_iR7GB0g9b%GVmjg&?1dYJJrR}$TdI4iM`*(m&gd7&!_dB5g<LP(%HoT;pCswETd z9$KhKd_cs6OHf>daL&5sCc!n`Uqf<~<<Vpy?9)4h;#BIPxU4nwJ$z{@AC==>yOqTU zcdldQ(tT>R8_h@nQ*~Cj&KhkC+ofiX8qOMtM51ukqF=hfXo70;R0$(ZDL0Ie@>I56 z!q=0hj5QY4Z@1xzgYmdqFd+vG0Udn&V|FZvvoSXHIC*M6D{&~3Syt}JS}A<k6I@tH zLg96Q7KKQ(hnelr4XH%d2tc{r3gtu^7xFRb#R=O9q8e&fO6@D)MWzcP$R?1J>@xSC z+BH~BY)H*p(xiY3{2+M|_ls%8oEUVmn+bEnbgK6b-1s-3Q@mR)x8r+vt&T7zIMf}B zIPA3o#%6I3c0^)M)XqvkRN<HbLb78DHIFd6<5w%b!dNM7mDy4<M)6Nee>Y^2m#E5f zwD-V2#VY2sreJrg9d>xP+lC#IwHYz(EV>YEg&RJc<kulnJChviCV8@mmY|9^ye}H= zFO1*H@~Xx>=hyal>LhkiNzhKY?w}nc|5psF@b@=bYPJjisu$ba;cKLNdt*igym^5M z8gzhb70Wif2!1$?Lu>0e=(w~Mqke+&^pYn@6|23%-1JRw2-~9?C4Ld{|FekwzKH$) z4YdC%68<+4`=b%NPF%wI|3k$781~tNPM{k`w|K~mW$_5b+vawQWT3fzE!F`O#4>mX ztrwRVDGzR;Ac?43Yj8hP{V_Ej9dfL;d%c8uTqnqqeXuiAg;+8nYp>Bp<G8(&-CUn* z<Of00E^eK*m~$N?J(^0GS&SXB!CV(l4nT-mw%8J*PDYdlL>K3v2`-|~)patDS;mjY z><EmkQ!B$EK{_!o$o(XzKZY7}7gw^7q06lD8O}2bsAWiEr}ri6w8>}&rD>=Lq}MYm zQkmRfymyKF$dwaAMe{h1A(8cC&!PB&W7gz7J3=jLTb1Q*Sk~{sOmO?~nK63zWWqXv z`@4F$rkGIHvSum5DTQIAKy7+SVI=E|xnamiw!4@4@UP82QM);7VzFLE-{Q8T6y}Un zi?Q3~+8DLL*o#Iog%D*-AY=A!uFAFN3DE`;%UF?2K%Nb>b5Y1r*kKQ<4x`G=DU^|) zka3Y=j_RO?F5Oo6&Fi4in|u&tE>yw|BS(tnwZw4=I7!|TFdI0mv-_#+>{M1mDj^95 zrfi{ulN<=y`{#x)r^}ySl-E`n)w#s%2H4wa`Audd6>Jt}lLx-bxut(5-GshH_vFAa zK?Nsg(@;7XGWP-(Q}PAUv!Dp+Q@P}_;rx;orpWxv5FbpW(yb6f)P8z!8E0hJ^LbMr zNN`i9xxm#cHy-6JFSe5Z;=QV=^J;kKLYd?(Ghs#LEw*X$);5+sWK7bTyvs=O3*Did z;b|nTV=}p1&FYI7so}%ywMUvsSNlaG({WXA&HV{=yk6FobbsD;5!e5GlLnvojNSj8 z2Nr#n1B-(&!OCK^)2BqNo3%zXk8QI#1+0^N4`}aog5CKHIyQi)G)t424(HmQ)2()G z5N+!#X1P#9hAm@=wq(Y43IyhDugKTjNNT=K+I2`a^1VCUD(#)&W@)!G<%nMqmI#%H zTPBpZ=oh9pHI8*QbRJB<fD3|#?t*+w=WE;dUA}97-FAiL#K$oo3UsVnIwl`RToe;# zuzw}e8tv-fD?8jxlZxZb26_L^8TlIysY~r`sO0cLD~~w*pq|dd7o-;T<`VN~9h5ur z@WtuQ>O)eCQpViVl3JOHABO$7IoX!JffG8b>xR1y#DA(~c>ZzCsqRB&%s7+y=8=a> zSyP9=s{u(J{kz3w950d?PEtFTe%|;pd)g}w<RrjL#^|JUJ`jiTH*7SJiMf!BaSvm; zzq8~0azGj=yqA8khp~B06g9VyhECc<|B8nKi5X~rK<}5-o(~pUyTzV0dIHws!`}OO zy%IPVkqMs{o!nQ^F~j!g-X*$MspQstWp!muWo>0$WqoBsWn<;^s>-UWs_Lqms@kf$ zs`{#is>Z76)s@v%)z#HC)wR`i)%Dd4)s5BDYbtB1YN~5$YHDlhYU*nmY8q>%*H+e6 z)mGQ?l1Ob`ZGCM+ZDZ~9y2`q$y6U=`y4t$By860?y2iTc^_BHi_0{z?^|keN_4V}) z^^Nt@8!8*B8mb#=8fqKr8tNMw8X6m>H&!-QHC8v)G}boqKuKdmV`Jm=>11&_$xkQh z=>(gO)1bRWWu;F#I;J5mVQvs7V!_botp<{Fz~Z-fzrMjbaQh<P#L4!4!gOghbsDzU zMC=a}F1#l?J+eot#eevFUBq4=v7ZwOuT#@-_{NBRdc@uovF{VH?;Ekth}idw*!Rai z)_xRnA<kvGtmTL?p=RP{Fh1}FD}lS5deOer^FsIiiaik+D=tIjy316GWREY}z3p-I z>9OKyf4Ic#$y<pNFTqf37lX}4&`{<g8pJtE^*hRIZ~zHJNX})P`CIBv+^Inb9VISi zneZHzBYPb`IQn+0$)=O|4+Okj`^1?cyXNVsA$tmQGmt++^&&aAZ3S;Y{cOWeF;^tH zcS{#<my~3CibWK5hs1+S8%!phV@YQpK++nL4)M|;Ui#vlEbu$??arTA>E<aMbsL(1 z*O<-QZe#71){k-28$V&VT{CW~i!Hks)#9qDR#SacX73`eszdQVCITUqx4ATOKdBY* zE_gFs*%K>U#TBcLy%55qsow6+mIRmf*!f6Pz+$JW1nOE`Np^^Rslh&7n?tL>vcy1! zHQXrEZPRBlM=Up;i+hj+M)d$hi7u9Bv+YKl#<6MCKgOz$*SmZ4QuK7mbU)Xu;|bB+ zrtN<7rIH{?Jv0JpyEigfFTLw9>CJ*YW5f$N<j?Yoso8s&+!b7JCLf-b(K<O9NOJMD zE5~b9;_v8&s1z2!@<D(|`=H(xPH}47C_@+tFIqxlfTqdC3}f4`#3Ozd@LfDXpQie8 zB`{W9tY4Q@`=@*17D^1EeE^loUF|(+_CT7Vs@&dipvlz`9aokFn!_aZFDa(*9DD$C zVlyxkm<5E_+~^v+t~ENUab-5~JxzLwa}MS+nTPZjUV|RRj`UVcx;<i!5`tqTLc~5v z$VqKBHhCG%67+uAo;dqCa>MITBUge+MgqkuCvbK4MbbKoye$H>uizPCC(prr#Q~Q8 zE~z$^%G*VwNovX4%P_0Xy}cT<<|=QW?!LnaqW5Kat^(0Vj?1YM)36&}M#E=p*V&?F zHdb0aLO82$oO_k!Gv37FQ%hdPTGQ+{*bM35CHzamQ#Sy$o{2~4+jX*A!(wHzyqjMu zHCDVo?>64r=kC-dIn7B9%;$D6n?pS!r-`M@uGRMXFkAGwlG0^Mk041VGdRGq5u0qJ zN#V1_xzoOk!ROaIjXS!bZX2K_U>O2l+|9xM5c$@6p>d(M6g~VYe!}BqE&=TjR}E>O z2t%AX*xu%)ZklQvqpnR&Q5SecNMR^dfAjaytL<%Pr6rn9X-97WE8p6~Zjav>xE5Rr z?f}bu-@SJU1~7YfUtXFhUv|xPhlK2dn6*x6J+(UttNp=;{UqP^2>JgMW~J%oTYt-( z)8E9f4<iXfomtvRSD!}aL+|G@zV8MgwgBU=tH=BB-@n8+mDk&^z#PuUmDrUJ|NSeN zm8Q3U9rK>R$UdpCTsQG89N!x3;rM=tJsjU{*p*)&|Gk)-0KHAoom|P~d%C7XQ?ugE z#?fCi9PIHmOK+)7{d}tZ)oA}rZn(GMe+O{KY}Rh^OOUPdER&AB9CR|VBm8~QY>#Xl z7;WwTrkx}!Oi$BGh~m(e+2K)9VX-}dX3ilUmE~5j`dU<OWso^R+YKhfH|egOGUu-T zGh{aYy4Cu!A9+z<)J!ZT1}wT`O?!nDicvs-S}Q3aC|kQi7rP3MNbhQYDLPkEi(?AH z`VenWHg>w^4uWbU@)$tYz73#ovyim&J|O~^AD@xTpUSsB>~Y0JqsM(r>l@yv(9^~o zcAI-<(?@0Y4p}is7dVwxN@$L0UGK-XbxVS1%<g?e@4vXN*%2$8l4V&~PpK|0@UiWX z3bbTm<a?`CT(4S0+EvtT*7A=Hmp{8?<OB~cEoZqXF`>2&`-auLa12;HCe$}U{lkk( zpj3+YZjK*>B3t10G%ksZW%P>RbyJaZN!ZX_R~bmEK^PFaREi*r5uHk~6QG{VfnrOd z8<B4`t0kP3i<nFN9?CdnQ+<g}IFS?tH7OZ!(@kXApk<Anb8Bz5XQN&QBIn9-B;PfE z917N4elVErNN_RVg}>m+dKFl6!?n)+HL$|H6K$?qS8u?swQ5`J^7jMmq9YC@U9DB> zIjn`rW$6s;pj>ZKdow*A(2b~%8St<!S^rYK2<y8^cHM)@%p&U}fo?{jQv+fMg!{;E zC;96ElwWtY9mxq=0-Qgszw&3#QnbPkq&dq$OMMO=J1dh8U#-l8JA*)<uIa3cL^3JE zaepABZLdEY@~l-IW|&TBpIR}kYmGE|kNB?5o}<S3h`6Z`fZ8Lq%ytH`|D90>E6!+p zPTmibw&j@nKq0QTJ)~DO)}&Z0N#!SbYco+EmP+J$LiTw^M3=mpeV!*gc*X6FY|M3> z02UqyS~~D^-zo`CqTO0t`xU-0WFm|yT;cU?D-nu(y?a0b$xCj4PbLn36THGLR$ksL ziih#9aS?To+Py!Y&;1Eg1Bla4r!g=0_&ySS=HMaHh~d`|;0%7|4RZ*<d82qQTuR9d zAJzk>qL*`7X2YT3dC)p^MmCR!B|8_3CUR+b)?9v~ZfaVjsVU574Sl0yS5{Tm)YjEE zG)|9qb}?(sa#xbv)fP#3>ta0F%9<;saa|dg2)el$ny}nk?Z9I#I$nkhp1Y)N3lQ_e zaLh=+n=3VFlZts2P+Ycxc8O(;k{eqaaqBfx5c?K6PEl>7*6%bOVE4z^{*r*U&P>AD z6sg<2GX$W|fl`op3mdTf1J_xNPnUzgM_rHAo!4(a+>I*7N?0>?>zj$M^cR%!no5tR z<Gho!a><HxJj(+&UHvP|dwToI5`)zGvKdXC-8I8?d$rfDm`?pK-*f+=S+kp$%x#%D z=eX9k6BaLAu=o5$$Im<Pu%(AiJL2Gjjy(L3eWpx4<)~x!*lp6(1A++~ZM?~*@7Qef zcW$xeR$Fhg?ZkI&_wMa?c+ZX{JMFy7d*8R~`(vfM@4Mg8$99}}(#fZ;I_>l`&OGbv zbI$$1c^^FgLl=B_^+!JXv5#MP(I+nc<flG;$!9)$>1Ch${1?7>`IoM^^2=9!<?63~ z?d#Wk<Jxb2>)Y4;-}T@5?)Scb!;Lqsx%me_yye#0ZolJ4KmN&`cisKddwzEB&+q%i z{l9$RSHFJnq2E0G$fJ)v{=}2Ned>2lKlA%P{P9nJe)hS){Pp=4Ui{nNUwZkKf4ut7 zf4%l*)V05P;I+4YcO!e-$lGtjz6*6fTG&g<u}x?z9EBer<`TlFy}bQ$>^p|+*F?Vm z5<A<yynku84f~e_uGUT;-)-2#{(Ic_(Rr+r$b5h2Fp5=mi^rL8YkZ^Y(xkx@JNdgM z!QtdJ0cgJS_GOs22Z}vsDcN-w!^60ONOmKfw|^76;tAXJJt`9xJ$H%T0J?`T`lITC z1Bo+ipNHM>u{AsBh!=9or`G^+q_$ZEV@mrZ(Mp0A!i4Q-u-6IO4~l$0IAWiV9aWr3 zSikJh@~Jaz#rrx_%LdUZIHFCiDK<?PP%OtKiQFZ#C_*{YVnJ}*_v~KjcVO+!UIo*= zM#^Itg|HBoaT7>l4Uj5*15L4#@7uM*P1^|sdz{jX7!xjpw->80dkj%5S@UC+x?2`L zoINPd!K6QP9*ZaA{p5A7dF^WSo%6|q_RzBc(UN0^H+m=Fnd5h7=dTK!r@6)olxNI1 zg>a-b;Ref-Tj=6=1IEL;bqq+TtR2db^czWEd+2Wf^}xv|PHRQ`<XrBSiYKJDRZE52 zL7Oa=H`eYL51gq}vR=7e{Kyu(Y|JhAh8IsaJo?jSrK+ws@|5I<0|7Kqz&D{pj0?BV zf5q+d*LPPqFWHM0n*6;pL&l7MPi@1Cv<@*ql;d=w@`Y_5rSme1Ewq*Rs&9Jg5<)D< z!N`s3CYOf=%o!6gYyQzKs71h)m^TMnF&_d*HdWsjV_pJW#)PNuZJ3t=;qd(;@R8Fq zH(*k5G3{%5h@)`Ih^9s_IpSng82>0hhVOv{U{`LA&Vux2Emw6i=<9|jl3m{pU>}fc z$w$)X-cuY*C7@dS3|FAt>O4xgW1|_A#h-6J$DUR5`D^^0d~xt9<{{vEb26$87DrI% zw`Nbg#6GC(Y$~sRy3uXdJCi*;cAU=4qc<Y+h--IhD7oGR^0E5))7xi;qmOe2nj5Hw zLhtWprq395u{TSS$Y<S$hK9CMdyc7`HQSb1Ob<E@mY!8xRHxzHA#+zovPiK7%-&ou z?H9kEL}^a3pE)(s2kjw^uO*fNF{Z~ulU-0h)<<l=e57z*BmhrjW5sR*`7~UxCHc+F z_(4Ye*rb{z_?cZx8lxCI;XJM-oX?x<1hM_hv(0RK*sJ%cZmjfYi_SK!&?%h!_C8I5 zbSoo8g#&yb-Ii-xf!W-U1Di{7V7o&$!b;duaD(QtotMmIOJYbnCS)m-!?~8kV5Zkr zF9RySPs`YQQnbHWg>yaVk?E(x^I}y?`%$*f$fE_=cZ-eW8fl5?FwV`MN=OlJSKPiu zB!Ni8*Ho|mtyK-+p!uP5p9r>mX2Mbq^Q|-oJ=vtKQ4jZcPX7wFfu4mpM;C`@xi6WF z*-+|f50<L2=F39HsH(XLEdtJ0o=<L;BDfc31@e+aUtku{s(PqqJlIp3@eacrrpOM* zegv?2=`M!rqi;I|&G(!~iEq7oLJ@*u>^#*Vv=~8)C2XStLLX;#R`xVWi@_T`yfl@_ z{?rKbM-@4ZRjcc{`&>KKLeEba8G+!%TT6lzd5i(O18;iLA!2FZHY<dG5$TFx8;i!% zS~J3;M};L}O7W|MF%gq2Y#L?|RU?A7=(*E{zQss7^0<QK$<x7^j#+B-7=`~b_R(4X za771@hXVePNwpR|AgbfLHV)oTL=zvJGS2T!b?aP9Lzu;!gJ&`P{UMIJ^gBawgw>yW zKRTFwPbkcpm~}|uzn_J<3}DDey*>}=7*#^nW~aKW_j@w__6mhP6|>6Wzw2-`{9TMH zx^Td?C!RAHig8^Dp>*+hIy%lr?eV+$b}3kX{DcCBwcBY2>*$E-yu2g020z;5-2xVa zeJx=)ypph)4fiDeRmXcgX$77Bfn8(EhxdfS!uMKXC6AGXW_{<@+Cq}2iy+0!!q~?| zrvox0K8=*GPHfSC$cr8JN>dQrOhNqN=P9J)zS7HhxdMB5x)GDSGnF&)abfo(nS$!> zDlrVnX>`=x@Mn+yv?ALUUfF}dgsG@x=FT5k29(Mfj^`-i5u@lB;PnbOdDV*?$K_Qy zZS~`l;9$~v9uO1a4H)+tTh-=J-|Zym0_yqZWWR^>I!LF}r5CQ_V<}rZ&;i`Tcm1g^ z=^|^z#+EUlc~mMtHawrYG*DkFv6LG30EBr3L%RX5-yID-jifgb0j^`fng>L1YYVeX zdvZuCqYBF0Ut+QC;)FnlGp;QS>oXKyDn=!k^LpD)0zmdL2nnazZJ8G?yMuwW2XT*P z67{8w+8Co*gRVPyio|+Z$<_Zf2}=`5n(^RI>MWxbpD5rkYLa+@xB2i5&oh$`RlDj= zEA)H~dDT4T?K;@k7<#?wg!;Dn8eNXW-hjyb=J#pxy@34v1kgO~$Mog&%}VV4`$L#@ zaJ1q5Q&LBT<LHD`+K@rlFrOSr8n*#E0W5ElF@c+4!bnaDik2q<oxkVsGYJ?gPa8s{ z8AebtQRe48L#ug9qseM8`|gt9c+%b%(EQ@<I$W21W-4c9-bOd8hUYx>2g53Z`4Dy& z<7=$4tRHDKdi<L!5mrVpnD|pW=6^-|zMu5GT?z)m_NOCusd@{4e<fny7;ato`&JSA z4$f}#l90A178^D-ZgSzg!cRN-JY~qA>dNPF3)0kF;O$#t7em?GtFUYAd3!DPokR9{ z*wu&q_k*!-7qYiw*ILiT26wK~WKYoGBn+cI7{SC!%`S~hEdwYWvkYox8XfyXH6S29 z&CW9YX}r+HOi{L=*^l2-610WV`eGz6*JBrr6z&fR?5g)LoxPa-FV{-!Wk$^iv6k6m zif^o6r_mL(IGS;^wPK0$5{=F|Wf^62er5$sMLVh9y!}ed8VAa|rz<*H>$(8B`TQra zC!L$tJHbEc7ykmfBYyu#x$W*R#-@_hhYpfwFS`mbcQ<25Cg@lU1%7CoV)lnC;tzUx z;)@{`NHvJ^AXr8^{qg>^+{1O<gZqY$JvP`~tdmxyoCHH_tdyf6pUlK@{=N3V{#D8x zZExivoF}z^*q-8h3yxv8<8X`a#iD|v!7psPO(M+(;`H{tv1`6ke7@a!iLcM)!@Kok zPXqH2-=tqd=dW9x_SHXk>a;ibX-4VNZs*p$>6eX8Yp35i2al4DXc(zI)|xSA@!~~` z4{Kh$uw~)gMYHG3TzX*J;^tX%q;9Y`TyF#TH*yWS6({kQ*-4}q;WV%-=92;6M`gd@ zzLMYrz*)d)z)8UIeDHOY!JGwh06h{NRoXuoUT|<9ex(X;G7uflZ(g5cB=f*bPV;`V zrHm}M%uWnsE*|TcZN+qEIj<cIBow{*4P9~wrhRs|SeuTuSL#-KmmW2huq-Sf?F4lp zDm@T0bfP1_L?$vvnyJYsV%FI7dBK3-Pq~eeNPAPuQP)mRsQcYwyi?^xa?Om}k8F+N zQs_~6ZEErbL1s_=5&rEcPaWk+`u;ztci-nFc&qi<+aJYVjWtY{ub>TA0z<$sZ~|~5 za1wAba7qYH#k>kQ4LBV*13*6ZK=VY9t6tO3;{Mqns2Pby83krZq}QxqCYcZKrHyiW zWV?cA?k_QPnfk7uN42+X&U8WBA{#+Kzi>AG((XTBFL^jZhf5W=rE}VdvxW5LGZ<8F z-oBd5h~}3D4&_b!3XPXDDSrS@RHr~8jr_5AmtpR*o+9*vmtPQX4E%cY>gi(S8!C{k z=&L9%uNV{?(ee?w8PT;oTVYbO1$n?;7SaAZI`5uEp3er(0XBR*>Wwu-6U*SmbZQso z9+H)Qo(f*Vlvd7S&x)F2E0d`VG(?IU6T@9>rh^wLM-ydO4NihT#vHD?5BHCADaQwZ zaG$;#e_{JSut(R4=sH5Q=1@Wh6IVP{5@^lblkp-N%G=Aai{?Vxs~fCFnJ+v>u1Lft zPbr*H(Dcj2<2!z3`5ljdMf3W&W)hd$CKA^)W``WdiZ)6+DOobh%vLS4w=feFr%vW% zz`VN*ZN~7RKj`8X^UDCDjd~->WU9m3nvAt$3OXRnQM8e^>15B5M)%P&N!d)!``k+* zJEoKe+yC0m<-3E=59PgqyvIWJh1hq;Zr@qe{A5OJeyr{m^4o=9jjepSrFDW#6IRpT zNcji5dcu{UIJSDw*5&TtokMXROPs3P1sZRXDv}&%Vx+FW!FTQVeBFN=yZTkdZb!p| zcWvosSVLb)1bbv6$KMuq8h4i{`dMK$he0GG6N=tDx&ucFl0{&~GmC|v>C0oyu?|Nn zb!h6Rq(%zbYNF<NhX|NFQfw3x<@9yR_R&yYe?(plzagAgd-rN|PI<FIXCUTG@Bd?_ z_kE}&_;e`GKXZ8wkHPa8qaOs$2V8Zub0(tWOZ4pf1uiqp#Rfa45FgP5zt#_bM>BrL z!_Sfa=D#U1!uh_98S-zy{N`!gk(@Hi!D@1XVEJdaIbB_Dr``ebp}n%kgAP6)_?;C* z*M3Oj-JFTqaf;qdn$YcQG=11EksRWARY|ucQARtI>Kp8fp_qh9D%c0b*rR6|AoLsv zZn_>SK}B<I!lh4*ja|XbV1E(DUu=2}w>NFx&)Ln>xuo4rI$s1dE?prfO+vG-VO!bR z)7&eQvfW8*sgz06VsCPGo2u$-o2sj}U=>F>&Pp!i>AIAs3(+gU9d|WYV$g^lGQYYf zM44#07+1bU@Dk+}y%Ic9Vgx~>bzg(K>SAA1s&Iav*ss-0QHE3suVvZ?`u_4H{?%W+ z{aMW7Cwu#ik?%i>d_RP^<X`LAn@e|OR*L>m?;m=!#5}vPzssAiLnspt%vrI_dXr3S z%y<2Lh`HcO@Fu_om_H1x20j9O6!;kMao|GWBH$Ci#lR<lPXSU%dkOFvU^LIvFiV+i zd)ekpW;;FQjnwv5<iwyOXM0mx_49$pN`e)X^>9FK`&sfm5v=lGiaES@f0{}P+qIVu z_Z88_;qN=)KP+IUHCEphzxw87E`D$STqM5FV-L^QUx?Vnzt0iRn#b+gP&n^j#P8+6 zmw+pPD}gTqR{>uEt_Jq(+OsQ0_*V(9x%ppU^#gz2<K2zEktP;No^TiuXK9M<j<y8% zjfZj2V>RyQl@g!M_Mz=)Tra)xmHk|APxg=NBauega;B5V62|qy13bg~z>(?aCGy;G zFLOr<>5f#F%Vnw`kw56FP#Ir%!q%NHv$uEQr-bt`syHYwFVEMBKl>`hz0rO5*oXCY zkG;Fceg|gXaozB#)OURCLs$!|-LXraM{zp&)ZG7h3L}0d(u;a|V+&vAf4FjZ?EULm zT&-U|-`;%<?t9}Nn-SZ`$Fc8kZQt1+tUB|4e~4uc_AgS;rvvT40l*%>?zpQSh2Ib8 z3<$zqv<8HpyCe)X2Fu6F+CWqrPMckz4fT!6Tdv~eB$*DS$G_dn=jY@LNniVgHXEjp z2zE<4gu0O+!piDy31#sJ3>jdxsmy>1);GIsW+^#wK22Gh!Bg0qXbgXUCwo4+3bS7m zCXs%4&8Weyc|h}q<`}_O8H-De5=fETW)}?Q3H55^Xbi>u#&wc)kxiD;GlbI>ZqFq? zx9V`iGqJY4sXY<WHq|n{4JmK<5WYqXGsbp?-KIgqCCF0=c@r<#+x5JX_;7DpUQH1! zUFqBSRnpVAx`FoBJgPs<?;8VZdx2;!`4Py^mJZ}D9-ct^SoIBo{HV?)M6Y->Hg*N% zuCXFe*q8%_-3=%O6mEB5Pe5yu_~lapxog}C-T_Q=pgvgUK<?#$&Q#@I2}}p*qGo^A z1eW_gzyW~bYzB@5RL-M-4nXd4-~>SKCjzGcaz7O~6HvL%a-edZ4O|My{W1qi>vIki z_Vd8yfXekH;LCvAuX3QYz5-kg$o;Dh6zA7~uLE+w2KWY`c&-J$38;+Uav(q7cAz+~ z1Fi?;{v8MM|6K?2^F81uKz`N$_XBeOr31M?0Q?P*``;bN{UzXfDnahw0qa7A+`k9D z*}4A!{8Q(C5BO)!{a)}R&izsFlg|CO;6FL{KZ6B||5@;B&RvzA2Gr*Uz*#_ka^OKg zc~}8n>D*5MpX|)1fCch%Dp;VfXM)di?q`Dqa+iW2f&8BfKF_(I4;IMJ1>ny)^B2G` zI`iMa0)_oM_;fmk{GS2-0HFMz2d<z|<X#1q7@N!zR}()<X6<<eibu4rXk3{^=L*yx zMDGf;#~0mu1EBbC1PkPT6IdYkHDH0<ZwCLsx&II>kozs*Tb=uDV1e9k2MZL>9pKlT zy9Vf{zy#di0p1KyKJ~nXK!19&Vhccd-V!X(-&SA&)e&qB7U)k;plk~$o{8X{0j0YO z_#i-k2ZP(4dj~iLC=bVh1xjl<xYxP&fzyEg2EYQvc|7<R&i#JyL(cs-V1eR%7%WhJ z9sxfIDC}>+PXYS-9r$VI{tQ?k|Gx+S$+`a-{4Aiq=fE!mRAcZ8c%m}Q-@Cv9#lIc6 z!ns$14|47YgD-dPUjkp_+`j?7$+@oq{~l1={Q>+upg3Ouzv$fm27Vb(K3@U9>fH6L zjepwaUzm4bkx)GE0q+DTo}Ix0x$gqr-MQ}p7RY^1@FeFx87z?d6mXeyF9#p)+>Zbs z<=l@3w>$R^@Nt0tmV?vIeE@ucbN?_{p!mge{|KPA`zZJm&i!KWrGWB(8Tdzl{(cO8 z%(*`f7AWi!;EfoJ^1m^7I-s%H#E(Gk`+x=f2mA6Pkoyeq0RaC&Ge7eHxwnAl1N;XI z_z}o`A-EObKRAS+!vMJ-4vqu-2c7(M0dh}(R{{J7r|~0@`|02_0RDrs_&ML1KMY>& z%pU_^>C9JwuW{yU!2<q+>-hPOGk+f}Q2aN5*Esi^!M8Z~+rf7@_n(08bmqIj0)@RB zEZ{%*B|ie0AL8dX&in}YF=u`p`~;w|Pl5m9-2V!G9-wOmFMwZh?*9M_<o+u7pU(YX zV1eS90AaHcAoIpx0iS|R!CN@<w&01*{BH1MXPyeKbmnSsjWgGQ>z%m~Jl&c11q+nc ze&7R~doy^Zb3YI~&zTPfFL35VzygIm0(>-}d>#uH$lMK1JM#eectHL$;GA<G1PkQ8 z0xVG2)4-=Y_cOo(xt|68kTZW6{1IpV82CzOz6yMeGhYk-rZayV{2gchK3Jf1Zvd}x z?l*&Pb?&!=?{MZHfd$ILPr!FN^Ic$p;<*Pbke^4vk2&+>;3ok2c?$fTbN>rip#JbO zSfH@4fL{aTe*y%qK<16W8w2vQDR?Vq-WEL3ncoeb?95ZamCjrZu5so%@N{S17c5Zx zGr;>f_x-^FxgP))DBWi8Z0CL;c%E}V7(CyZ7k~u{yA*t=Gam*PD4wIi$2fC4IPT1y z;4VO6yTL1+`{`hT+|K|D6wg`U^PKqt@M>rNDELBW{v`NQ&U^`2ps=3>U+T<X0DsY$ zuLNJ^%wGe4$C+;g-{j0|zyjsxX7CT3`)%MmocYJ#JDvG1ut5Ir0SlCeUxEcPKL!4) zGd~Z03DDa2GFYH~@(NfWcfa9LoD<miYz!!#O~3-VZwlVZxo-oW=*-)JCp+_0@N{S1 z7c5ZN8DN3p+z)(!b8iOEcJ6b*^PKxZ;04aS6nv;N9}YeeP&~(g1u}Pl<Ida(?gEr< zH#qIwSAqrdKLkDnP}xrfuX66EfdvYCI{19&egSy3Gk+9(r88dz{-!g38~hz-{ytcs zcy0jS;@oco-{H(Z2LHsF?*!ik$p0_E_dECBfFE||N5PLd^W)$r0Qr9k{H$~T3;20w z*2f8e{A|R}R)EUB4S1q6ZwGF2=6%5X0{jOv_&ETO|7P%Pfd61FKl1>&9|WH7%nQH* z{)2`5ECS@G4IFpoPH-2%f6&d(set^P1{UxioX*b~fZWdlU*yc60)NAqzX|@HGv5Ff z$p0GfZO;5-uz>&Ir~Ld3ke_?O_W}F|_wyr=`2l_&0p#Z?@UzbRSMUqYJb}(q3CK?s zSiq;C8eHStYr##<eSfe(W9<O&TtHzD1TO>>b`kg}=YAUabZ0&jERg@R!RI;i`QR@& z^W|WH{9FOP#+knX7AXE}!QXW5-vWQ%x!(X5DC`>WEzW!!SRnU1z;^?R=N|B{oclxI zN1RzgOgjSdUjp6<kpG>*wa&c`ERcIWSRnrmV1e8l!2-EY2Mgrh1fBtqT(BSbKtO(4 zz`f3VJopqq{!ax9<YyK5Oy_<USRnVa!RI*lbHV33_YZ+T;oLt7{=PHc2)-3i*xSGY zrFA>_PUn6%_}9)X#^W?V{>#9Xfc#g11#+(jH#ql3ut4t9!A;J6AMn1;eFk_x=e|Gq zFz0?a_z35IB={KTek{1dxyQi+&i#0B&bbeQPjl|4g9Xax8Q?RW`&r<#o%=c9^PT&L zzykTd0DOsa{|s0l_s@cFb?&!=1uElRV1dl{fak$1l=&d=0%vXoAL`79g9Y+)B={I- z?f{?b%;$kW<jkwV*EsXF;BPzg_23(wc@0>gIDY`X)tT=A-|x&1fG57&`q>V=gEN<a zk96i^!0mv_+W|hwxvv6$*qK*@KMAN0Uj}~BxxWPdr!$*NLI@(s&jj$PFb|ctRbT=C z!D;+_3XuD!!IuCgPVh_4U5A<P0_0~q@b-Z6wgXro_xFRVoVglY1ISM;xZb%R06xT- z7lW4ori|cT=iUz<aOMm+3&_tZ@Hd_Nx4_?a?$?0@%ESMGZ*cB6f^T*1w}AzU=XUTN z&izN=pF8*az`u6x4}t}nV;=$w6#s9)0>$$v_!;N^9Qb8G^(G;yEdZIf1aB?Cyp7xd zSX#lhV1e8xf_DNGe+)e2%&Wj>I`diJvjO=(2YjV-N0(_JkURQ24Je*#Fuw@MEGGG` zfQcVm3dsNN;JuvtB=BVCJ_WqDbFTzfIde5wps+RIM&~{qypMA~04z}1XM^WB^IUKr zpgatKbI!a9{1s=u2K*yuz6bnkXMPy`8er;nXZkFlcy<Jr0Lsr!;GLcOE?|M&cLgtX z?uUW}az6|#P&|i&k9F=HV1fL^!2<c|1PkQe1x`5kB)HeP_klCcJqtd`xt|IaDC{cm z2LQ#n8vIFTz6|_TXTAn}Hz5By6xbM$c@uCAps=-If!yoB0=d_No1FVTV1eBC1q<YV z2DsU|&jbtPJ_|hGxwnFkbLQpXEFeEQ@F~uH75FsgemeMb&i(V?%boj|z*ji;E5ToO z?pJ{Y%G+1KUv=(Z1OL{!KLr*j-QR%)^8YmW8R!0c@E@J~pTGk7|1(%1|IdQ|;@tlV ze%`si3f`N;7WtV5t^pLb7F_4t>%k4qeIIa(b6)^H*O^y?zw695fNyu^d%*Vsiu31S zfzrAU{HSw(3@niQ<KU;A`!nD_I`=<;1*Tl!=biftV1e9U1pnQ+zXX2SxxWGyD1K@8 zy$O(c4fr)cVRhKF1BXm<F9E;LnPcEN&O8siz?oaYhdJ{RV1dFO1s2GB3|Js@JNRU0 zUIqS^GhYY(zBAtd7HEv$2o@;pP2iiI`wzgkIQQGYcRKT3;GY5tdk^^M&i#JygU<XL z@FRfyJPQ7!bN>_gS?B&&@C(lUZ{Sy*`Jdo_0cQS*F}DLOi@}!QtpUyF+kgei^R{4t z_^1=XlK_RC3>GNt6tIA!nP4hd06Qhv8!UiC2&RDrkbglLSilx6C<hBz&VvfDK>Yto za4n!Us}4L1P`b0h0{NK(J{FLBJ6NFnbbu3p%F+!Mu!Rqnfd!BgK@V5}OE*Y?1&~?6 zao{wdumfO$c=E@C1@FY10}lgoKLLCq0Lwl&3498m{G19F$p0$v2LSm$5Bxzu{?7+r z0LcGp@Fjr!Uk3gupt9csehx5wdpGDFK>jxZ3*>)e@H?FQW?+HbHy3v9TY%r~+_wh{ z6weM|f&9M*T;kk!0>96>?+V`Cx$glM$p4;Tf#TT<ERg#out4sU!2-EY0Sn|l6<p@r z%fSMbw*oxfxi^9L0px#Q@cz#I0Pt+*J_p?5+z$dTaPAAii=2BaxZSyTfX{XA9{_*Q zxvvJltJJ2o9ax|?dN)|0yloGz+ui!92cH0_TqlA*?%Xc~3*>$gc&|OI{{z4WIdcd2 z9A`ck{Aoaa;}Y;QfWrPB{FS|I*sH+;xqlV>+9c~PA(z(xxd&5N*Y>vVE5H{z^C!Ts zIdd?LvnoLTe+&LSpt}77_|MM$S@2%~^|!x*pLgyrgI@#WKPaQ!0mU;3EReYjEReYp zyv&)?-~neo6)e~qKdZnO0rGzt_)E@wCHQO3d=2<IXTBbMqcg7o-{#DBfbVwZd%*WQ z^8?_Ao%vDlYrxi|6_hid11ifZ@F$)5)8OZwS%L(=0Jg!;bKrkCvk@$)wDZga@Fsx# zYzp2CP+2wy$DI3a;3>|1D!2?#9?HQL&b<;WP&`%OI_F*wZgB36;C-F@4DkNWy%~Iw zbN?jxQ-I?CH24xgaefATDPZaue3^6q9QYOI{tvJ~{$B;Z=G-@}BA<Z5R)H^Y=GEYv zoOuoS2|!_=1HZT0`hOpIS3vGD@FM5l`v0hU69Aj5|NsBI=Y8FoYlgwt2bUSymy0lV zGYk?EQd&epL`hOfB`r!Sm6mB$pYl;jXw@q1D*NuHvAyj}+GyeTc)riM|Ihb->v*2? zI<M`#&T`-P{XXYC;FXR(0=&)9r-OGm`kmksM_&ql=IATH?;ZUIaE+s{1*f*Lc5eo! zk!1Ha@Fz##3I6QprQjJyKMN{}Ux)fX>u>d}0MC*_`T*AJS1f%l_%%uNwP4l)OD_jz zlSHooHg)vw;B_v4Jvf=9KDrT968{wNc1OPhywlNVfX|Z@{};d)Ns^rp9(VK;;4hAT z68zKA&41ZjLz4bHa282=?gy1be*j$N=xf1sF24a(68|P}o6DaBy@i&Z1}e!PA1veO zQBX<rbg-<WXM#$iXMyz{{T#4?qc;SVWVaF6lq5f!fl881fbB`*DF8c=(#dxRZ*=r2 z;LRk-&H%q~^e@4$NYb+!+~(+|;4hAT5<KJRXF(<LYtzm-B-w2MHYbVR0_;VKk?##& zND_SzIG7Y8e<e8G<!691N#eO1T;}L+gG!>m1HS9%?}5u5{X_60NB<c7#L+(me{}RU z;5L`v3GQ|IeV~%`2jCe;*CwP!q!{$ZU<;CXT7n5jZw0n?^futRj@}k*=jh$RB1i85 zDoIaI@O($_2P%o)A5@avf#5KgzZ|^H<)?#6;=dhy%h8vBN}?|Xm854G_>QB$3%=** z?}HyW`f~6SNB<Q3%+XhXO49Q=s3iR>K_$_5fQMcF2zZnvo@3zej{XOzB)azobAcq; z7+BurD}q&BzAo6n<r{%5Ts{GgbNTV$wIq$_N#I^b-v=tmRsimI^aG%h=m)_gj(!wW z68!{t+R?S~>_1zqpG&~6UH*IUZ<jZv-1qp)@=OA^xx5aFMoDU84p`0QYlBJ^q1OSG zWH$~ra`eWaQWSa<@B&942zL1wBA>3{1thh7Ah_Dm*MLf*p8)@H^nby#j&9DdCX-~h z0$772{<>gGM^AtkIQl?PDFV-hppy6pfl8te0hL6*2vib%C^+2FuLPB}E{y<3I{H=M zD3aQHH8{r6uK|^$a~wFHB-v|0CDA8=XGr>-1(kgA-dWaRl6ZWu3`w$4u&kqJf=aTR z1uDtsa-fpv<-u%6uK?B{>AJKgs3iVeur5iq>VX|e>i14ycSkP-FLm_Gz|oFA2K>~~ zSAyTT{3>vb%dZEwxcqi7>GGxEE|S`{8{A8h5BtEt(GP&f9Q`!-ugeo5e*bx)pXI;? zF5d|3=<=PxE-v2<?C<ge!7E&T2KblD8_z?n)#-ss@+S>cQcTjpHZI>D?B?>_!8s)H zKLkGP=ySp69DP2hB%Zb4KP2h=7gW-Co{<JWN%Z;PT9+>cmBh0P{F|hHG`?r@N#bt~ z_I3Gz;7u++6`V#2^@Gnl`itNfF8?jK$>mK19#ZH7_?pWv0XMk(R`73^H)TB2kR<*D zILhU(2dBCGba1xI&jBBE`FY?IF8>txlFR=GT<Y>~gUen1Bk*IFH&M^DOSg8rgBQ8{ z2ym>+&j9ar`B~r+mtO{c=<+7RGj(EKxTeKHCG}BV(D0%at#uyglN7@Us3dwBFzV>( zV5XyIf!U5;0c`K+1z<-<?*w*r^lqS%^mhmMI{H2^aP<9P0UO|Dw*%OXBtN@@XR|Eb zlw&-Q^r;UvBuQr@uq8>d39ti6TphtH%Uk*g@D7sbcY?1w`WxUPlJvX@{^RKXf@dAw zWTT%H>IaKS`t$+^k|cW}ILy&61@9t>e<pY@Nj&#~XC2*CKnF?V$^(_elLoeT^a8M# zqxS~;JNh7SG)eIp177dwlRzcuxdEK)=r@8>9Q`IxNp|l9?{f5+;4(*l8+^~v-v>W% z^yT1(j{Xt&xudTHm1OrvP)YjNf(Kmw1bEuzO-0rmlK6eF0ZIG~!KRMh3{(=mIe4z4 zw*z}S`ap29%ijnpN#_)Bs-w>U?{f5+;Jc3g9{8!Fe+GW*=-+`qIQoy^YDZrKDoOuZ z@MlNg1^(vprV@QllFvC{3zu&RwjxQkHQ2_{&jpo4Zwo3(wjJ2s(F?#Xj@}hi5`Q<a zyQ3F^N}|sI?{oC~K_%&&4L;=ZkATm+{EOggF24la>GD5=O43;h?soJ&;2}pp0iJer zlfxJ$i9ZeWNwQl8%yRi`u!76yfQ?+f37ByC)?gc#Zwq#C`A%SGlJs{0yE%GyP)YPc zu&1N<2K%`D`CxyS9|$VRw~Ij~<*xuox%?P#0!cb2fm2-GRHk1@;x7QZk;Ky-EOhiD zu&1LJgG%D>1uBWZH+Y$&UjZtKXE>-No-4tTjy?li=JIcYACSbe98{9*hoF+^AAz4b z`e)z@NB<mD68}o@3rGJF{KnDOg4<kvMisuNNa9}xzDtt+55SKc{bTSGNB<O568~r5 z3P=AO+~Md+@Fzz%RXx+1B>pyFN0Rh+0y{f;7f?y`uAq|myMf&uy%6l_=mWuFE<XaC zK+-xn1AN`l-vE`Qa}lT{oo|9lqAv#Da`YwOyN>=Is3iXPK_&5j04{g*72tO+Z>o8w zCQ1CY!8l3$b-{X$o(G=e=nX(6@izpUI(h=^<>)$$)q*6RmSB65bQXY0qIUp0I(jEi zN%Z;PNtZthMmfkOdQ9l@SzwOKR{^WKe08v`%eMy$T)q?7nIs>&fJ)NY6;u+v8(8G% zJwPSVdxE_jeIPi@<>!O{b@|u94KBYC+(MG<c5sKwC&8advReu&iDwtM*U?Q)zH>?9 z@xUlaJn3MDqsPFqj-Cm&cJwx2funZ-J34wNu&bkY1A94oZ%|442ZBnndm%W~(Juxs zar9x}WsZJ1_<*C&2A_2Fr$8m?c^WKn^k=}A9eoLS%H>Tiyh`w!TC|a*d|9xi%O}8g zB>7nYc5(TxU@=Mj1HlO{KM8!q<sSq8OOotsppy7s2bVbdQcy|sW#HS6{tl=l`n%wJ zj&5qxFC@`3gf5>6CS1N1*p4K-9YH1KJA++Zz8hHV^1VPM>Ff<EiGLtC%+W`Hqg{S1 zc#X@C2OoC%x!|KD$vzIwbMz-bCDES*m1OHFP)YQsK_$`WgRi-KX&vSxN%UXA-$>&B z9X#deCeC*&N%S<Z0!jRpz_u>m4(v!0Pgk&;qjv|DL@xxDBwGY3iQWSo=IBd6CGo5P zH@f^LFiFx{`V&}6(r?>c;4hAT7A(oPvZlUgt|Lj$Byft$&j5RzW9f5S(sq(~Oah<J zwfXL#Qs^_-%h7v-7dg7=3B8w-y@t6t-pPW)U48^O&gHKIKXv&P;CC*+7Ch?mC&1rG zvim!z6#8~8^M#~*0&GVTPkXS~(FcOVT>dg}q|1*2Z+7|H!AD%a`*ogqh7{_*p5L}4 z<u3r0q<<hd%h4YJA9M7_!51C96x`+VyFn%O(H>AqI`@J~(s=^>#nH_q&-^*d`EWnK zk>|MlL#!1f$)0%2Gry9Q{~i3><^KiGxV%~7nY^Wzr!}Y~{(;~im%j*968&m$tjkXV z|6XS4=3~!{Cy8egINjxEfcLxnT(HFDp97V||2+5tNo{-)R1$qY_#cw)JDD|}X-*PP z0_^4T1Hmsy;^*dt`JEKz*YRCUQob=b#^uL?<4Dpo9-QpxH-ghhvUM9clO&$I!Fx#3 zb1(Ryqt5|fbM)82HywR3c)-yQf`>@zQ?s7=OH#fF>`9XTVo*u+72pPvY?Xq)y1d!I z_YO%sBfwioVH-DkW(Z07q2O~a{{r};%fAdNiRV>tfy=)JE^_(B;BuG$2vidPC*T(@ z{}otflclGFWnI1;SlQ*Pg0)<}4%orvJAqwYzB|~{<$Hljveg$H=<<WWS2tVwLU6mw z?*Nq)ha^~ei{+^TDv4ed9N_2|fJ&kd1n+nB2S6p!XM-yp{R>b@^e@5h9ep);mK5IC z+Dd+#wX2srwIit?+k+iRYD*_@f}>9ar#Sjeppy8ff_FRmJ)n~4_ks^P`m^ARj{Xw( zmdl%;xi3VLt#iO8E^kWt{v}CI23XzYbHREppAXh|`37JUmrsBbNz(ZUs3bjR7r*66 zq9?$1B+=W0T^zkTc%I7-055R)xx1McB*`uYl_a|YJnZO4z~hd70zB>LXF(->Pp#bx zKS_FyfX7MFa{@f==%xF)A4L++0r0TP9|e!O{0Z=k%bNq-6Cmk6&suOZNjkTHJq}uW zPp~gZ^z*?<M=bpY@Ewvq?+TAvx(9Y4>C+WF>*(efK9lr00scbL7&{4`b#!x_JW2kT z6a01{i6;R*?(*}&#V)@T{LJM)2iLg#I`DUw*NaTck~D5J!EBOrRsdU&6swk?QfLbt z=jh|X>m7X(xX97p1eL@efN3YKo(f<mm+ubtaruGZg)Tn=98Hp}`IX-Sf7pByJmT^v zz<*rc{K>r_lK5`}x4C>Nc-ZAnfJ&jxQ{3kyDPIBX?eYV`VJ<%coaOR!!8cug3Aohd z&1ugJ{>$na0Zw%JN#Jysp8?+Q@^isYT>dlgE0<pl?r`~1@PNyo08hER`I~D4l6;;A zu5$Sk;Av90=9o0|^MbUnzs!HrOo#VvzB^c(7b2)1>w+)w0!ihUfTf2W|0#I>a(TYp z`sVl{&p`04e4CebC4KkR1@Clu<CSMvmJi3jcGLZPHrx7ODv+<>@~kImPkDM?b3IRO z-U98@8=m{KGcO}7>)jl^uu(32S4S0g=@pwJyxXvXt4#yvkuD}>;D=^?Ri2lm@s183 zt+kNl`k&cRjZ!Z898>thw!J3vT~BL7I@A_Wd2S#6>xX;)#Ko^gwAeAKDz3))H;w;% zQXTRcXcbM7zLgXSrBs$zWvHtX*8AZe!nUDYneZ7_8F<sew~oL_-hN`xVqpuUF(b@X z3S-qFtPy9LDJ<QN_gm7q`l6)m$~ow-jNS+~b3&S0t~$1(hjf65mgQghn@#kD`lM0f z-alBDr%y3*s>vj&PxZV_N&55&uczQh3*U|+O64%7S;~g-SFU_$TfAk-MMI5}=R1b7 zqNm==Ch6mc+RKG@<d6O64|q$GYf=b8^{hr+#W1pE$XA7?NXkx>vTdFC<Z~HQ2si6k zm`_746CT^{R9}kIzFA4qvQ2zf{6u_vtNZkk3Vk#bWWb^nStaURUHqxmIxk6epdRPp z#JruTi`mwu;c?;XB3vx~SlBol0(FAIYzL2Ysrl9mpL_-s(d1|aFdEjWu{NY+_(V<N z?4MD;iNS3@@-l;Dz2mklHf$@@={9_+;i7h=qeCH=R{g90Z0E~n6nVR_*jU&h5rbE8 z(PWV&*|WpOP6O+U)nkJ!O=<9HI;f2*+3vF%rKt@6X>s#GeWbteKq;*ot6<5wNGL8- zwpyqFX8eCH$h37yvnQR=ka9-qY^`-kI&DK!W8OD~+jn8Ew{4puVW*%~VTJXtjgoDF zBKp4?8BfI<?-%Vx-L1A7Iaej7a-nV8E{*MUlK!*4$$*toSJ|9JX-N&glraqz)#^V5 z*XA{N3K#FefgV<=nyGOsBZ{$An2L33Lf9Z#Gx}EnE<<<=|B@;Xo%ie|v&oZ>cDPy* zmD58XQf-jm@-Y=K8MOT<f0fJNUkwGT!SZVW*fqosGC5%T>3>s2dNqACrT#B9wQ8iM ztt{Jyso}CC-!u_qQKkQtrIQhGav!aGzpnK<<$bD!wyb|upW=}POA%Tt3b0)y>?D(R z8y8W7zP<_mYHqgwRof&x_~zh0wN0#lSre?SYXV*hndCuvz`=v$%VkW^;EaiJldHx` z=!c>vxM_h&4#@U`!wXHaH7g{Ct%JgJv-O5`Ub6Wa6P&DVf}NyY3r*#Zkl#dpb%qIU zt7-0;l5K)up^4Xsnsgov1h>{S!4*+c>lf<lmU;o3&65AZe-3(jAM}EoYMR)G<xRlF ze=aYx3ARN|j2q*@5&Y$_Y%nBdf`iRX@HTpWMaQ3{-3vLxUg{+qoiW~4+QWvZWPkkS zMJqu?bg;Q8s7w9;DM}pnHa9VDSf#J3=mjU5ndBDQ%>(A3)h;jAv4Tl<N;d~Cfp1pC z1WU2Q!<vADAHgwv?F@YrHhAGnz)c(P*YRHZ$MT6bY$sg{Z_^AD<A7YSqqZskP8qX% z;yTachkeiw*%Qr;*B-nv$4ft0$xE)NX}m+|>*|}kIGpNT179zn-;f8qBp3h5X2gYq zCBY%=?SQY<wO-IRotTyPl6S20V&~TMf;e@xh~>}p?SZ-`#>S>#7kU05RFazo!Iruv zegSd#9ltnu9ehWOdFUE^Oxva{Fab9SlE?OX0Y9PwUYfa+!(YM0^fNcRqukgD+F-9S zesBmS#v$2&w~Z#N(FR`L6io0<=2H5cLoq?RZ|YqbHOU0^ygV~G6q|eTV^GYTD2D%+ z=EN4=!=UpL%YXw&0h_GTc_GHk>F6C#?Dj4+!QUAsYZ>+Ru=#g$bD$==3Yh5|>Y8K| zXybCcnUmpPS<@uBArf#%cU435a{wmjlkLTLxE*l7DH#x#b7@ndZw~xH-4S%Z0sj%~ z^Mfz@U2J?q4AK}o9Mlc?0U7+9VQTfG{u0tI(tdnigPt^e_!3?=$>l6(UU0J|#zU0g zSL!>Y(??*E`0$`S+3YnF<RkMdHrdRY<bi(h19@Je6zg5no4TBFd@cSCM?Z&pg3a)j zlCC2jTfqkOWe;ZUHu}5IL9fDl_*oI!f!b#8pXm9A@yiY1;6CF2Iq~HsSFxV8y%?K1 zV;sOrvcVw9%axKtv2hIkqs>k2{@7k$&BQpg9~2+-Vmzn|eCpXWTgnFPfFI()H9204 z2VmYF<^wM)O&-rMNnR2gG$KA15LY&yZsn#_z~=biJlb@K`Ou7U!pi`HY<P|`zA7{B zKcZhY9PrXRXPST)$tKy15&T`-M7cp2G(qPv`tfIM{6tz$dpQ(4a~kolfR8-r4306s zd0-iINjHbCz(+QyrSpP>;2YY)3#C@oqc0ZV*NKHD=R@!au|LKo!O8JnC0@oAR3fgt z#5TRCwwL^nK6?j$)-#uQiBd3`7@JbB>=OLqg<i?twBr`$!?_i`bRMJz4a#{zlDH4_ z&CJ`gxi?MwIB1>Rz|}Gb*OIO1>q_|4n0EYyK3*af{8Za)9Zg&gB3Fkvwq+b0t!*yj zMHE3L%6podnYW>9Cw)B;+24@eh(Dc?<sopu%UpwR@$)e4X!@E-XTw2kMMckRhYvG| z%SPhGi+KYNUA#ETJJ&Z`a~U7&vFAfO!5FA5y~J%Y`YQYEb*;|aB)^Zb(x##paQHa5 zxuzN0fw9L1ml!XQNH#}?mjVaJk>h1g!7lJ(#!XY`Y+easATQWT@<OqoGIn;ta|WI^ ztU*80hQ_|BeUi9zX8r38A1|s3+R-L9>;$!`-$Z+RK<`B=$uM<!VVTE)xWGd%H!y<x zh*>G$3p}(-UgVoP)v?3I@Zc<Z3_f?EpI6f7RiGCkQ;isnrA=(E2@XSxmwMOsEpL+N zz;_<?`K%3W+zL40u=RR$XVZ5aL=1N0bN6%;<DubJUKWr%PTT@$v*1~e{=STXt@y#= z%is|7Tk+u@XdL`McqMxIUJZ`Xu9L))hZ{jh+EWKwxl(WQYGVI>O|$hnbPd9fKk)r# z<T)rB>?hxvSZ#ynH0dB^HUR`*v*zz74(n=}L&NDu9u5Q?5Dm^pzLRhAc?nxE2L0zS z7I{Hal8wAEUg8pbSKCzOWp>H6=;5VfNjAWxcP?v^)3Mze{~FL2Y-mVsLw6nO@1_m> zmQHdgFnK56LEK=Djlj-%2fbvuvR;gbxyc%gul>3fK>u^-{g?KSC2lKN!){~kYJ(rV z*f=;$U5qhs99{L%+4PJ_HYDC`m<n>K<ECCvyVQ%Z(L2}?HA8q2ON;|9!S-6F%Ex@C z@N(&3DsedlZF5~y?rqv}7vDRp@Mmz$tZIav`S9>!>R^-fQRXl}kOfYK=WF_DH*x7l zn@-Sw-^0UZv0ymk`g;0pSxvL|6u$9-<bVxe0WUNQvPwN~AH4rC_68z*1R5_p3y$vQ zJF&JITfkg+p7IUM>r26}u<-z~<ZwZ<4|aDz`x2dX$?sWcf?fx`t&@l$o0@|kYMMhM zh{I?2_IXWnpc!lEpUutG5760~`F{po-RRrH*yp8g$=+OXvjHdIfI@H{eZ_(E;1{qO ze*K7!0RFw$yAWG1fH_ff=tpc{MEx%2|K-ffPguv6!+XmD6Jz6BvI)FL7n<!HsPVRA zryTRXDSm9pFu5ntk>vit`+PTW2qEAhK)?(7g3{V%CoilGe!(7_rIMQtctLse9LJXv zBwh#}G^8)N`I)T6_huF9*fbtgMfQ*8rW!9z^g0mV!BMl72N%It#9<^nr)c9BHBCA% zs)(`SD7X$<1U>nrYshcLUQgmxgpGUooy3N(<W}yTaBwy_gRj3cF3OjB)4ngySY$mp zT$^=;xxx+A<S^tbpeF+IBJAX5WZuT7N%T7}7ff;hA=rkFbFcN1yjUbCi=Cr&%>i!6 z2He06c&L#aLSOvCJi81Xdx&dS{3yeCWkX5uExz5ucWEtjwAtlV`hXa8hmRMddp!IJ zlK8@=ljI)0-@4WEl5D&?cscbu@M95UcpYo`yL^Z65}8$b*gl^z`UN&Fh35$C4jY@U zJ)d=omj@<WK)Z}s<}r6R!1D|?4=iMT0C|yTFp)O>pzAc+-m!+s;2=}LChcH1yc`%# zo?-3FAr>2n_W=0Yvc9lUHO8j9;3ssft8Kgj=+hT)4bE73q|{4i!$!bEoq(I}F<u&$ z<i+B32Cx?IMISF!35vN(#mkrS2H{s3{O^eT@5H1U^M}LBF*aTV>llO8q35y2usJ2D zK)xRKZt=Y&FDno3Mh^!CR;@*jhf&FO)V&3LUu~1YfvjLO{Jg*~7>E8o>1Nt@%#&*H zY>%1)NB1&M<qLgMk@`Jc2XLS}`7HHbMXx$9<qQrmJ}Tp13u19AHrHUM88P4wpvHRU zniwyv2)<{2Ovp9UR-wBJz6Z>S`tbLl?e+MsIIp~^&r2i&URIgT0h8cT#tw)0gYDSa zMa<dwketDoKE9CeQuN>Kdk3$=Z(f-1wZ*TK^xtgizo(9uv3mhN_xH^-UVam7K^HGM z33yRxFdp6p$d#p^I8c-PFSJ9*Y{vin=+0y;@=!RPL+GU(fV;L2@>}WO5AdIt9|WhH zo0=RF2u7iUms<w)(ZdV+16~jx@WRR%2i}9~_<RsuJTy+SSv1&)ehz&E`>@v&88(RS z<d9vm6*}(6=cCY~=;823axk>2T(7M{rW<YIg*yR<s*>Du4fYY!BgF04Zg1~m?A^dP zYz*(Y@V$p``xytfqwinh#S09v!*2-aLx`y!NVv}xTrXb{{sPq<zghggZtHFs=~whF zb4ys)nBU`%nEFnpRfrS$w++8o`+-(nhMA6hKkmym34hUwP50b5DMPA&z8JT07|+}~ zO5L^X64o~f|Mg7WkYD$ab!RXS>PS)~yvJyN)!Umw<<P-BV>H^||JB34D<Eq%Le2U; zt#jN}_%|!OgTlriP&epw&!8S?dF)+5c^L`s7?h*l-e+hK-uu*D2zw7$9I3F?C&&Dy zM(wh{@oh<(^sGlz-O$oUH^sQ+v+TZoCi8jjj-+f?bva2YD(8g!Ws#R}R$nD42=gi{ z$xr3fa(NUD?`G1gl=Ugc{Z!p7Q-mVq<%#^LL0NRJOYuh^W=4p5UZmTNk}2Fe3oqXY zy;P;WAEMhl`ecRu!>kWmB%gKHIi*+kH575(?a>`p^@sjd1Qi$Al^*NA+GuT(;ZrUA z*HU#VUgISa-dDHYrs6Ldd6l|r!hPB~58(5?_^duxt91uk@exJRwskt$qj<?5)!1l~ zA(y&8Wc}3LYFn>(Do!?1x=E=!Q}RJ~#v|ds;!IJv3--)xys4K`E@L_dk^^%MoDtnR zQTU}8bF;8zeY6(sojQBBsPKST+9+Vsp?jgaxo^#hB^6GI@&iBAEne<6FL)5q2e^c{ z;ZlS2v4dE**3_wXcqvG>f#TK8Mt!WOHh@+~Bplkd>6YK#?w38?YP4J$7B*m_q=H8` zeJ}@)j`A?b4oQ2nO_r>6b*i1tvM&vy>n5I^=JLx%Q?}C>%r;2&?zJ7L)@$9DR5$<M zp<>%DioM@VCXA@PS*d|$TWVV^KkO}6J6SSA%d###slg$esWwu@N8Gx-s*k-XUAXvR zT3zC0F?sAKb%QfC7E%$GZ+1%BTf25x*nufurBT*wY!n|m1Z~;I-i{1uv_9AvD{^H+ z4f0+!w)bqz3fDh^hfBjLFRixiDIOaSwcAos(za~dDzEGVw^YwTfMRdJN~b)xJz%w@ zVr!#h<Ei$iTA`dQTMc@gCoPJu>{@<C)WeVB`FCB#Y1^BMrHzywL6S{Lz(`44mZk_; zA7sn+faSHlqxM-IN&03;v~RQlregj$^BqtAqW)-81r?coe&i&sW%<3i6vBpov6)G| z=YM5*N^1)I_4U@&qZj=iI&}k1Gt<E=|2*wVqCD9QgTEwkexhH3Ej|9o_)Bro3rzzY z%J;7|ZK#j<CH^+(o_}7vKUn0i^0$By|02U~HICEoNc<GaUl(5ty_H{NqR3_Vbs_=& zor69-v25iJGQ+`Q|Bv{e@D=!z^QPnp`{bPmdj4ne)zC{4UnjmnU%o%p+zEfWKgnDS zdj5s+i>Pnp-(+sYZb{;@#O3gnMgLbsD&K#}+XG)k{Hluo>Hc6df^wFhH0*pKloy!w zK)QduX-U0D+<t=|^GBNhg!(h$S?Krt<^Ed?D$j2d8I1qMe%<(7=;{7d#)q%i_v3d{ z&LH0RP)_$RHMfQSe4bc|KQa9H8Tv)hhS78Ax61x!eqpG0toa>2&wtUM6Y4)?K7%jI zAEi@9=rwV@F30n8B0hHW{qs$0>OKEf!%0o>W^*^?V!wR+;n02`(|~eGVnO0J>>5AK zTN3h5Fdf5o6`K#ka))>q_$xAgGHG{&adRvjHzUnz_>5m6UWt0+7euZI?e;PCk!zb< zF}D)WtUbn06ux|ah?xN0XZ$pxoaVn&=S|8Pe%r`}$fXlU{TX0}Y&;Ep>Hb7h81hdw zw}TD+8_ku-MTmP{%2ANrrnF~b{7v|M`sH`TTQTn1Qs0X4c_nE4CEj7MZ7yG2_|u&J zol3bZ_V!U-lIWF~NBi66cFfi5ugX$?9eO**8pRs(HJ0Ol=Z`>tf_amRobL}~o2$yj zTuRH%)g~Lvpx;-~FC~fR6EC1I)9(@am3DQ_?47As31{P9Iog-+UuSxU{Nv1V>^Dbm z4a$rI?`qKVtH*0$&+}vPa$vFFF#Z&n#{7FUtRH563ftMwbfjGDUmbrXtY2Q|o3LCz zK991_vs9s+O~1vk+sdC}t`Ft=#QRa-3Vlz6{Eg!!ls$i=SxY(Me`$8oe$Ri(e}ML6 zX`YAWit+HZPyTOa6MPM6e<Sqf(yo`NkN963b}kWz690ANiv88TUXSF_kKN#p`M&oy zm<IoExR*tLjtuqQ#F0<&jf+nV`Cs!NLB7E6Vn*ai&)4y9pc}^TUC2lMMrpOcR{jLj z2`ovxnOID`)BF$Wd>!h)$n1c9O}TC5l3dqD{8#;h$XE7X!-D*tVn$)N0rR^${%6wP zlPEuvxIS?MdKxl*+EY%jPTYh(4?i!XT;wO>?T}B`_@lfj>+7s<^aY95YoU9z?=AQ% zB3BK)onwhuE5=VrVr1ef^ycIL1EId(O@Gk%|Cl6tvY8JV@TbvF#~>H``SHimXNdC# z_%i(SBc~Zh#eR$U3n6{9IY4!W)?v`|8^xQ2^y=}N;9%B`Jk|}5b*Db%0^iSz5XT7X zKpX5BzeBte^m7>h9{OX@{{(&iE$<lU(LcY!me05@N4X?%L1G~O7yDlPF63hVDzg%L zhQHq5NI!Z0!1xg89DR-ZU@>w22h8vrMt;NZG~#?Y?eti`hk#MWO=U12`c>$O`eRL; za)CcJ?-u+ttOo;;D@nYYcn`ao_;Vrk5x;t5H}rJYyG+U+_BVv%WO`m{*go0=UGK>_ ziv3o8Pg5TK6`5b@wA=GfnX}Yq(Le0!q@M?y;b2MP;>0Ck``-7zKrV}ZSR2+~XL^C@ z{w?M~^l+Cr9;M!AJvmOfA>$yA`k24cETr6=@z@0{N%T()K%bAE#?<E%*Avjw`2N_4 zdmiiTV#*nQ@5t}8r@&vB_h#7cul#A~&+#AiGr;D=KL<X~Ut?N;+3GLa5oO(cpK?C^ z_B&YM&#m`NJ;nW;_!G!Qu+tB_QE&iQl6X7u4*oPG9u?r<lKEKXJl3NO#(ffh@`=xK z=p~8U64T+!LT(*$5&ESb^elh8cILr%k=aYx<NIj`n9n-+8)*3cTmh6MmM1<$K7;Rv z6ST`CzLz5ROk!(dJM<WF-w%HRJyXDjjEAArXZY<SKf`YrS1X_w`19&5t|$MO`b%g} z5!V%C!2-W?ULkQRNvuz7Kwq(cZTt=B>CA&f=wG3kk9-XM0ho!s8=#jY1}BEVUy`^Y zF&xbI`<ZssNBjn9rPOEpH$`s7ek1g>pltkl@qF}p*c~0(uNQ9!rV$TLKtLa0dVoH- z4tB$Ow>{+l%>RM$X#6VS<#J`dH%3A)@L$eb6#Bg*k;Hyw)+4<FFPrvPpg;4`(+hu! z{c`b#LOVa!*+w~w^<g`9BK~I61U`Ni#Us?0B-SL>q9@8c*%FSQ%)Bi08~WoUav6TL z$WG{4e9!bjK8yBt3H=`D-5S<ch^(jH^XGfpDQDAvy4dts=P!cKXMTPRy=`u}-16b~ zcO|bX<ut#qIhT6F^~f!uAHx!t;zuUqWgzrMj89I2<KNcAHt5BE)A+OSd4BhJPcWNt zRt7u8{$l^jkbaGK3wj%{9_K<Y;`>vt;4Aj8kG~bxzv@3sJd61re1Ni{U$+5S`1>Pv z8ggCn4drydm#Kpu&wtl{6aKE{dY3z&b-yD1_~^~>H<<y{8~S59dZK(U4-eaaCcZPY zQ{vA?E}i-G2z(L$(mI!ej0;l*`A=it#PsJi+UBO`W)P1A^SU|p&oEzZr=2B<Zxi2v z1^(N4hx6pe67OJW?^ce-NbkkwKClsTE%7^_>%GS)7x`cL0rq3WZ*^F19B&!6bH10P zT<kZAKNI@b-y2N1z+YSM$9mFpk(rF1R{k~SN$6Q%96vq!xdZe9|GvEY@uM==iRU37 zWxO2#hjJa#hk0L;xG6Cee<S{7b*>2QjE}!geM7F#u0q~teR>Ca4)T4V7ZLyLP)~)( zTH<E>{@#VuM~LHb$_4&o^`6DA0)J%QRoIRAznkXxlS6+dkjr5G{v+%szVDICC9X@b zQ<8W;@d18tU0mlH=u!GL4SHp+I~pUG#yTIPoW}ao7WDjm+BM2}xzW@>f3ZI$z7oC| z<LV>ivxw{M)ED^Y<Tb#L9KMIHp}ryGI^3{EJ2FFm+C_fC?_yTj`zg2Lx;!2E0{_Om zn~=-*hnhPm=hH7gfDyk%S^|4RqMM>C_+HInT{6h|)Ni6)9^ZRqC`a%k2mATVpAV4x zH1q3B{ken!e{|jr=&j7U9)r*LmAuN-r!((+f*JH*L$D(H%45f;f3HDLW&b7r2>c%Q z7BN1vp;xB9!0&3VM<3VA-dN;{{Yd<tP;asM7WHj&W4UD+rzMGh6K9C8M-(Pd@8jPm z@JHyEb(FU-uJtElGW@2IQ^cbo{uE=k*dG=D5A{*5=Q}{JjD3%C1I9;9?58tduSJi? zd|HiPm0ABfP+yW*nplRtH2U{%{MgL(k^aO$N#c{lr_c@S(P{J-!QBo1h~F@67v%y! zBQHjKqI|#Cz+RTVx1pCs&-LICu4nRzdzA7-%Eo`6o|m6v;tN6?7k>>*_b>BC<5v;a zLoGu3r1-KBv*V9|t?>Uk>I?ka^6tW3fj=wn0kDYHrBk25Jb8om6#Jv&uTnN#53dj7 z^@nLnyEkQhmbHTR6!``5uGAO!%kmB(pUwEHNPS7-v&0J8nc*Ld9Ht!w{@r=^Qg8h4 z{oU|;e7}7f>KkTS!_W1uIZAa&;>yGb<kD$(S?bgLAL?uci}@aU6uF9;7w}iaP7Y}B z^HAvDu=r(Q#NVrv5zq(52T?BY`{zx>u1CCkLT^soZbqNS_2fFRh<?-SN<HGZI9&Ix zGsVy&*fH>XevNqTQ14QIDfmp{mc%st%V!<CAHEFc{V%kyIpe%~SgsQBC^usK9zs6D z-xk?HIm3@e(m@})Ti}Z_?$)9&opD$Vz9Poub)lVt$R7B(j)?c5Z2U9vpFj_N8z?s9 zI;dhO-#D!{=<&N{8uIzf+cK1kS=IF_)_m68U&8tk@vAA9B*rAh;&*|6b>1Z6Vf<F{ zHX+|g^Adc9)va%6=c4dWZVt`rm8C!X!F7ng9(tDlzIQCNGud1Qe-YQy4WMWEiO2^0 zE%0aN-4n)nSo{j;MXV>~!F>8L3;q@r&Z*F#g5vt9zZ`lievh9U+8xIxaO(X&rU_+_ zbuK-O$GG_Q@a6D5Rsnp5@A-B3pT)fFP5s5J-~CumJoMd1zcnI`HK6l-9RCsiBKq@d zFr9v>3f*Izb`JI2l(-o^9`+NVecxLO`u=Y72AD>_uS87-`VNEX{v~EM^epDf)#%CL zdukwhD&tp0ux)PF-0tCZL4|nbQ2*q_6!aG}@1CYy;NP5gD{(3Cr{&E6)3{Eqg`N!j z`X2rD_5FqZV!v7ZIrtmmS3By{xc*vAeH!Z_r!DbgkhugtuEWeO=vnX`fF6VI+t9xW zMz_(@{r;vq<%r*|PC<xY`Mc0tmhbZt$~k<WG@{&`_DrH|_*Oiha@*XZT)o0Nhq%?H z?D@w{OX@v;zlnhv{&;U1=reD>4CR*kli(W?T_4@RdQ_6wl-L}$yJh@E=!W=A2J185 zZiGL|b>L>kNfvR<#m_Y6&lE7~&#&_y^~HXAd{$_8VfZHz)A09Z>YFof&!;|%@6Gj; zi<z&#!k5PNP6lNkzSGp_vkp%LWAx)|pyAuLb*S%J(~2_R%Xxc<e`Ws(X0+PXINls= zq<I_aeJ}n#<p|eD&C=voBC-yDGx+|#0QofhTomfPCO#fMLmXFydWy|=6eFx(P0_Q3 z@3|isml6E!PdS5myP5h=Gr!6F9(or2&B;C5vB-Z1`69;a8t@se<2Mq&bbpMAhjs=S zPNE=xt2v8&3&ufH=vlhI0zDnQE%395tLH0`FG;+WSb}`S56m9wxo_$J$h^qlclN!= zRc5_u1z$e>v5#_$>*GH{eUGIbhd+v66GFMb{0nCI*Lt^6pN*X??BsBr+Z}n&-)hcK z@AEtFb?OcG5eGw$vECe|+?@H@7mU&VHDP`ANV#x*cr9-+@h@hbTL^#K+|IdrmAXM| z5#?e(GyWhL#qUzEIqOCx<Tqul%F>_X@%=;QE6P!RPnAcX=YL}|C}*+$-GM*p`h5mg zq(7thYp{P3C`o*j_?Wn4@O`=$xst?%i9wX}`F+|R`O1v<de|#VoSvqfPd|PS`pmOE zq5Ln2)9@Gbz5h0RUCZ?<*H_O6iRV<x1^&i*tLv%$s`$&4)6jDhenj}avKi$5qgM@m zC5dYi<Iq#Y-Lo<9<!fF;&tW|3wc&>LeNMTE@5lY2-X3{9iB}2VH@6~}!*xXg^aS(0 z8GPy3nFV^xr-O($L|<dd1^&BvN0BSS-}m5;vOazQdaMgwsgJR~y$rU^Et4B1{``(K z*TJ8`c(?_BeeT=5OMOGu<3?aU_p5q<C5fvOqwyod9~!xsIHtir75*X7&!a1u|DNA5 zayfLv{QEEb9__lH@z;>`d_UxL|4#2&=tH7?qV>b|;*G>2^yTxrYd7=^e`{nr@~yaT zokux~{@jm#!*%y5{BKA*8>fl?JhO^=-a8b}fnLP;yBN%;eMQhc=KZ-L{{+(+`C`9J z{9ek2-|0VvcB)2_*hyy|Wm0a=?}W}^W&d-3AAAx2kf+mphVQSkl+&<#h@v5mA5!+X ze|{1C#eQ0RCgm8v50+8(nOEaNds*>0A>a4@l5qY_F;7u%h{w0k3;f&jb`kG<#_i+K zD>6>AX;&lgaA>z~JP$s@DwPZRTz^l8FN^zddg!0wABY?Z<NTWc7xhKl-}xMj`t2es zp?ln)-vVC*e>ka*z2dyy*ozRiCZT*mWFLGNGmiCVq6~befdc=Xyd&^sQ2vK<W#-|9 z=uP)Wcw?|1^{YlcM=qCj;;m5c8+mWRZ~T7VK<bNFUE0H6>^F!%2^RQ|=Iy4Q`(b7X z^$m%0C*(Z(_f|07FEVM+bBOz1_&u(7ibHz?%~0rBtnXRy<@5Vy6y=h{MTwz|mlEzv zP723i|Hx7NDfY+4{~OA`<sE>}u&y_y+%~scuKr9z8tcI-$Wh{ZL1_OUvlT2!oJ{<M zo?^dw{P|G6pEn5k4Ceh__=}mR^Pv~}W#hBKD0Ck=1N|z>hWl8DLjJCi{rFMf=jYWA z+q=r2OTRzE_u-aMe_s5tQ2!>=5B_3*LVOYBbiRMbQ;zuU>vRBDaesC@{oylCcTvt_ z{?$p-_&Q|12+Mr`W8ddGd~;aletX!C<B319lLmi%%K2O;TuQxReO>@I=X>!6FvD*i zIf9=*V`nFJGFS(`ge}{j5}69!<9_u&$b0l-+pv8j<D<Zp{BF^oMDx)1N~q^6Rw$Ks zn^!3paWyp5@|#lhRb-r%#qWm9-+c6?vraq=Uoqd8Kfo8m|BaM==6z`>e<rR!E#Ubz zBU$*7g}<YbGmPUMU<UUaAA&DJc@yO{`e8TKX^f+}&^yQ4#Lne+TQ1*I^Qo^$`zvAJ z=epq+__FE$NEpYryd$BWV!h=Hd-dYyU^n8oOlw7bl=XEh<yL%u^?{G)H}Q^?qgrp_ zkMh0H94z*u@%uu5&oe*5X1I=-0e?y2MB)_vki~tz5%6(cWqtrk5|a}*LN{D>H9;<& ze#(PCM*DY${v6hcVd$gkjH8^-IQ<dy>7OqUD`wsK7`aB2BO%{4CZGCNwC_A{6?gT2 z3j6aCGlw$s$b25!{W9?tcJrBM5$I{mqbrbKoTV)!ye>1+jaDD<8kretJ@-hxw5X|T z=vs4wdC)7z)r)>_q?vo!4pi1e_?D?BLGwB^-Pw8<9{ZtyhOtI_8BoTjw`m<>XJqve zhc*NWZE3Y>My@u=?qH~h<ys~^tQ`-ZHjrE&md@edhT)EbJaQkC=x#pRsKWX|nnmge zkDdTmB~?aeJ<vY)tzsHb!_ea6nQEqnE2*XONIsPb|K+9C<n^3eS}XFW+I0xCoEbpN zA{;J^nX5xx+G$Y6s8g-9>~uA~pxL(ZLML+Kkqvu{)5eJVgYFn>8PhVfnL!Ms=^X6Z zNaT~#Clib6tBNLzwpyC>=|G$!tvIM&drF#NNinNv3iqzziTZwif>wu;!0#-$6fwKI zM7u`p)*L+<&qR|p%-HAi=fIO2`oWg|(3=X>skM?<Vj<vTdr?yMBd_$a8-VN)S;dh< z^dVhmCvBhQLDh~1)$!^EQY$zjrY`l`9aE1s*ys9OB806ggCFJL&_|<1BaN%IFsI|e zg&Wt=-W%kK+~Nv5MAcg%4J6fQzn2|eb_0$dhNS|Hu){<Fl4BYIlFbPlo<{deR$)|t z?Ri+$7p`58;fZz>rXryDq>i*zL{zbp8&YleGRTB&y?RWJr6~WKP3jrDK~82>l9q;y zoWj)`FzS^xg-K-|^s;G_+AarDL!3n~R167W)l?-e>UNbil>cwnsici4az&?%wTsZk zDHRvqGeJ$NWIIyZQKVZ^(hxCmQ~1Y5e0tuikGv+I&LLZ^@<DqB^{+naV!Qc8d2Mw` zqqcl#$L_onN4d~<HC~!zMSI~SX+vUry9|7q9CrIkD)>>j^vMo&*nwLOz8ELQH{<0M z648kB5m%q3V?cq_jIbwPHR2UCZMU<dPW1|nnkGXwq`Yb^l(dc0$kai~Ef|^QsrNMA z^+|P+#)2%{kEr^j&~}Gx=p#-WV2u^cblJ8ihgGk=Knk@!c3+b{#;zK>lSp<rs61~g z{!G-E*C%Dn_NgYhK2l@V+sUrTTLV(2kz;#2wGGI|T|8RKq$}zcWyPBrGJ6|Fy_#58 z=0@8?YJ!}SPWzEJvTY}|sG4Q!t2DYp+;*Ia!%iC2T5s)Wlx5pcEqb<Ng*8m!)7#~P zZwg;g=CV|0s8(a%cA+Aou*#Oc3hZH8m3Ws;NVhH50FYhlQB`WR-st(3+FyA84ov9B zE(H5weR@H}HF#h@GOP`t*`a9}kWx|guQjQXl183wzHO|`*xg;(V&|hEiSvK;YP`O8 zG-d4MPc>1^Q;2PsN=Cu7yZ)r3a#&}-A8hAX%?h#Y0If;-$cMsHN!m40oA{)vnv0|y zwhht_Q?c3sY@2C?^{-^CDNQ7)wWGi~rS(fqupiq?nhJ%-e!{4JX7R}&{QB6E7Kl_! zMM(*(Cln*mEWf_<W!lngU!?|=wAs#;JB*sroftgmDP}hMYF=u8r3RC>&enxja`xLX zr4b?@ZDkdg-G(fR-M%XQ(x{a{TT*RKUdlVwrdp?P+F`FARLi7G8ntlRK-pn!>ut-# zX-AL#Rq(9W){ebyNPS(}Q74;hAKqR{i#@iV2Fi?*v_7(BCyBV^kEE=pwv^i5ZR0C0 z>$lZzTV|=!XSHg_9yT}b!W6%*uzE;YR%aVqNm)+i?55<DW!n<lD^_pHuT<~aez!X8 z2)1*oaPw}AupZfuhD~b1S`|{4%85st7PWC#L&>fZwnMC&cBI-BDAlagH=ot3f34ev z>-S)q@l<#~nbYnXI@LFdmCXGwPBw4pwwL9YqN3fIcEsBrSKO^DDd+Xwkc!s-U#qN$ zqS2QcZPtdhobtnJk~QW2FNY1Dl~tot5-HE^1%R!wE0Sy~EOrIsJMzdrBEY?Tt6J{Z zyn-Pn38W~gHNa9*Q_MC)C05^$1JspKmU+8Mg~F6cO#mA<J7Lt5{~K0XIAl$fRJg5m z6wTX@qPyv^)PI&knr%)KTzP5HWrVz!Ch61oNChNiQR||*%9d>~>{qxtQ&uFSS9jR4 zqhT&ye0li*zG&<$Qik)A;+L#ir9rQ;DJjLzb{T~*XO{|Tx8K5+ZoLytHP&lg4A}`( z`0_!_l#yF3y-QRWEeUHw8f^Uk7fBl<bwTQSQmwIiZG`2O;$lB`kSMS3P#Xp9*DsuZ z2xEM?*i}#s)hE>`ed}484MECz1<8glb%kYvV4G%tjajE{sMRigELY+D!x;4#NsE;^ zew^P>sV+!ea9a1R4mHDu-gc3!q~@CqwCb%tvZ4U|uiLHXYN2+IKEor;alE9dgsoh9 zYWx~o;PlkCY}7Y(5n3SK+@=e7<Z%G}j;#RN?YN#T9iu7tqO7Oce{id#BYMW8hk;@y zAa@`2W2wKGZH3L)y8I}5Bk8`;E~9&}t6hqB&}`jZJqhaWUN3MA{Q4sRdYavcTk3lH zb2SG8_4NFC{8~u;ZPc&E-WlvQLT(xM&WBzXdUfc1px=Kw&3wSEyear`5q{|D%xCD) z-NoVPZ3EvZ`2GQ#!KdAh_3^7KdUDV+9Bc#D0slh&PxR>z2V9B0D1Np@-`B*U_ut0s z;nvet)IWxv``{mjTuba$K<+2>mxF#I7f<!!uY%m29L!$}HsCPcD)`=jPrIxi#=h?6 z_u!Fj3HrW6ZYAZXh}$>l`4fLXM*kz|*KV>m=&$AQ9h83b4WS<{Ltkg~4T3%s`jzmX z3%_>Fbj5xok6*ONy$t^%_z%&Z+3E-I9pYFQc@KHrz1|Xygm;UdhHn}AcB8Kzeq4wj zn<+<$$7uBHk2l<a+#uw%OC!SJu!-oagI?__3c!u<N8lgHwzkR~kei3xSmd-zx-ab> z4}W#|F5$xOOUilh55is-^y&{$=x*g2;x-BU^Rd5}@@o21cMWSZE?S~be}F=}2_xvy z(}TUVw+Q~p@GnKrW9Yd8zSi)qr~EeMt?+eKKR|yTx_15arTj1Uo8xaL*a<(rgI>K1 zamwcp*DxQRr2GPLnNR&%>er%gDf)DG_-XuK8P2^lb1Qr!@l#Lh=R?=i_jlL|`8)K7 z(Wj@ZONe_j#?iZFeKU)3Sc5G%$I-VIeZQlhbK>Fd*!r|fPtiNje?LI~2fO-1MMd~M z1OAclr-KLZ?_%0Li*_%^&N2MlM7a$7r>Wl#-^-NOQ-40?W|Z%syqI#FvbOvj0e=Lw zdvpPQYj^mi;G5VVjQwiZ?~T5Z$UTZ&ZTQb9F8DJJf3(}^a@wU`H4Ev7KD4_Z^X@Qs zi1zDg;MKJMMf9ve&jIvQ2Y*J-3hcf`{W{{-gmNb3ThMzxdMAK|pzdbAfL`4VpG1ER zM1BT-e22c%=&6O=zxdOJ@5!C`y&r$N<4-1ho#1;EJy)aWC&t@$>ia;y1^O7|dSkC0 z{qa5X`eMojlxI`_A@w?~a69dviJfKG$)o>tZ}JNGy2AGZeE+~V9()G8i}rrY_-s;- zADH-~r-t3>$JgMW4gV+jF&97Tpl<;B4nzL|dV9)aDK9|JX7m)%&fT=PWkp_mi(h)0 zc^T`%3fiUblI`%7h5udT_JN;M{sp;r(DwxTv<tHVb_Y>zLpcMx2SGg*7{_{}U0tv8 zd$AJrzv5>_=wH)6h?r&kvmAW~(N~KX`t@TxzDs!@<@@n#CgbY^^gT#BdVtlzp6J_- zUk_4$KlQutt0HpK(SHSY?*+$zQS2<F|CWKb)1DphWx}VYGdmb3U!d<v^y#U5Yy9X# z{VlZbds<x?{d(%(LF*-a6W}YNelqn_!3E&`*cpeN0KT8mHxxa;A*ZJU598Mv+R*|& z?fyJOeCtpiK)ZB`;wr|4o{}#^PEVEV6A#^`KL+3T=v{=~Uf7w6{2J`PjD1KPXH7GE zm?u{<P6n~=*MeWCb0$(=hTP*YHG}U%_{Je$g8ZxCCQ!S4O5ppH@-fPK8n=V^Xm`ua zjH5T8?|}Xbe%1p&Mc<3)`v5Ef^>lwGar_xS2P3CbGHJ9!Pb*e}vyuN0xdZU+rCo2} z_Z|3s8JGaIt7Zy(4e<XQ{P5}THuOg&>QA75FM6*c4x5qx6!})ztpxog>Zc&z4*g@$ ze~|is`rp7)_%i{2pChgnsV}7dO8i-mogeAP>cn9<^oOB8g1$-U%a9$`dp#}t2|x6d zb{hO&QNMtCJxv?Mcs&9>3=W6h4f+7)?Jvxauh6UCz_(-fP3-E_NfG_<HFo~M&aKd2 zgMN~79_?F=y*%2br(xOf&A{)kh_`mtJc|7Xh{pxsTI>yE94><YTU}3}=PvYU_r_oN zq0<3v8ISAHn}*&p#3jJ5Iq-c9-@nwCWqxIX@6taXQvVQfn~A=ujK`JmorEtzeFfG_ z?N0fb@8OZ~wS!Mj&pYGa0rXc#e|h-3!q1&h^ECeZ@a@GOp)&8_=W43@ftBdTBKR+W z|4#VzRCPQ|cfmgdz2AV(fFBXZ=a9c1xjf`_O5kDQXir&i;|2RYvA+)c9{RM~^#|(P zp?3^=wY&8YdbN9D2l2WUz5URu-Tk*xz5%(Hh<_vS5>QY77GkG9@y)0HZTRnle?R)F zQLo*>KQfN=RQ?|La){G3>|Y9BOZZk(zl3`2QmRV)u14=X<UXbTQR=gyPlmq$`ZdsN zqh~(;&ZC_-(azprBT%Ph8Y>=@ucDkl?qlRCqklF1^b7R$(6!5PIOF*$>YHKj3jBPC zb`QW_KKAq!{Q&$0(652M0K1#9+YR};$p1=Ne~ju)_-DXB4ZhdmOMoN5Z^2U_Rpt)- z)M>A;Y4^?OeV_604sx@oyca$1qW4eqZbk0}l<%b6o%$-&Uqkt6%5x}RNqIH%p(grP zP=1`UPQ%<yyb(9Up)W!It;A8M5`H5N4Uiv-ymqy2VEk#9@pI6hXFW?0mx=UO8{`{N z{}<!#BKYrx|5oTdpudNm2e8u?16A=)yI6-JuRs2gNu!QocK~*8qn#aTUl#G4fL=YF zE+VelWxEyn#n`I@{T$+Q5pmHUsqqvP<i;Z(fHUE{5c_vwe>HeUeuM9Thw*0={#=Wn z&oH008(=MR2dS??KYWVbW9ZEX2ZI}+`_QL@i;zE$cGRIA+O4;R`TjKYZ=vgS$@S<h zhu)9qZ|%-uSBB}p`m=`h=Tho#qkakPf0Xv0MSn}=bV}+~=r^P1zm)&NpO;xT>Z1P{ z<g3AdiuK_Ea6EG5!Q+(AMejH0eE>bn@pBCLBsdy;0&Iz%6|}27^Smqmk3?S+;;3C! zuM;01zBcgf!QZWn-=4Iq2JKovc`)mhc7v>j?-k1DQ`YXMDC_S9@YRR!Dg6Bgf6qtn zZ}|B#^qZh}K<_y8UWD8@;@g_~71W==?{)Zph<@&cUmM|zAU_UzU+9RN5zyPfzY_lI z!G8GrI`t1yUjWts8z46n{hcY-ro5YRbRXkLrwSXuzmoC<%Gymn1Jo{v2K@fW$KS!& z({AP=&<~=g24$Tt?1Q}#l;@&%1$xfVuiC}17=PL#HyXYl>+xifeu~3)0em{ulS5pF z;dl$$-IxA2NPo0PZWVGhi2HfOT~EVj<5xw>g_Iw|?;G*^S#Ub2UE}T1n}MAI?7Rg3 z>+tKe>?hDKXS~<NzmFN`KI6P5a(~nR=V5O@_8!BZmH6`!zoY6>uU%<_XrFe=Ux%Iz z`1uk2t6f<4GM}%;zY6qgQ|w)ay)Mw(&`<Xfr)tR6r+kd@`y=g|PrIstzv8EMkKIfE zXHq^wc?R-JkZ(>o4Zer*<5T=-fnOitS1aiHqkr06zl8Om3iZX*uR`uG<SwGV3H7Hb zHzqFH&2krhMDcGb@%s#Wf71`zZPtKwt}eJ2J)_}&0{O=18-~8Wp+||+cZ?rBmg7#I zDFwfP?^pP=J9{(j)$W>B^p|#9{6hQQqW)*<Z^n<l@{@juqh~7dZbZC?66f}`Q@ceL z5x4nZ7viYhT<g*QHvavDf7<0zlQ_4f-QUsfcaeJ%xw7az48Dro1=!UtNqq?)gMT{q zwTt9Z=K1BIE~@tcddc*I$PLFI?Y4Uge+tn1BYH2Qz4y}I7pT91`T@utfd3}+U4s2y z&~u@eWt`~`7HaqVdi1`A+&1K@z&{s$?Oy%@y}gk;LOV;TuRt8`K>kAHwfp1?+WQ#w zPoj4$^-m$MKWO_Ve%wy`hSRR)@Xvw27xh!Aza9Pw@P7;aS?Ce$O~#&1(=DXk74WM& ze%*xpP~^vh=Yvh**O%Lk*nNwBzL<WQg+JOQ*Pl4)^iWHUOXx$OZ-oE9@ZU!H4a$SD ze>e8KL9YybHh2Zt4}Xv1ZzuFNXIy=W89ilsrUKu&&<oL<&F|`R*tw24XgA&+p`Wa; z`1K3)d$I3hrww+FqURWKIS!so_rhIBOXz={@;OADAH(iw?7o6O8}a8`+V>iI=7V>E z+Wq?}c6`cvnZG)v*%Ny)_&dO#PW=e#m!khR?5u<CVYedmsnFL$|A6r~oOxc3d0vQL zH&A~S`g)-M1bj2`w-g)-YIo_4^m8BjVK?pWiF_~OkU(w(a@ut`9=%<$a~<~Q!T%!s z+ErhRejGx38q=PC(Ek(qcd9=buW8bc++Orlra$kbegyT}-Ms<7zn47ov^VuPW2ZU# zuR#Aq>gQv>AN7B*j_4`-AoO&GZvuQ@g1?C$zI6C>n!Yaa3I9MG?ajiUqu99*zW3nM zuE=Gy^KNhr*CTt-cO~Vn)L%#aQS8<R@1ndE90K1M^j3v$CicgpPk&5Qy8zqKf6W;$ zA8@}VllB~;f4WlM!Z=xid@1s+q32*fKz<DE8;<^mY1bAoo%-(3chVm1dL2s~b!wsq z_O#1!4()gqd$(ZkKhS%#9*jlrQ^-Az-YMvP2tA*m?<nK6AN>`jz8&>XBX=!w9_3b) z|3v;@#=+(MUityOBdBjn{VL*BK=~@l`a`N;pzl}ot-`OG_&X3gt+1oFEHt6L&!BG= z`X+(%!As$v4Sx>vv<LnAAp8^H&!N5t^~+fo3us>r=zkHP57B#qaWWUV703;SelGml zg}R-25uv;fz9japXWZx%PgDFG0KFxAKO>ioUhRV4jDOl4{WfvaY0x{tS?HO8{=eYg z0e@5YFT+l4us`@8a03{@-*fS|Bkk57lhy9(+1S~H-({ee1G`{nEPDE&X9Ii-;5&)k zUy0*=*tr8c&8aU>{hyQ{!=DG>yBxkL*m(szgTR^KkMJ#qZwTdkC~NohE5zk<&}01V z0DFU|Fdq`<9`M}=-%@ZF_yKljYo2gjeF{JOL7xsifxR-=)2YUd&@X|0KlIDspTam= z$<v|_p%0`zGicA{$e*CxAGti_9)~ZJaW#c<Z_2|cPi8&UA6)29940~U0lhl-8~)#q z{twXqKDZxzo_5^<eFyk4*d43~K7^j%nO{$Vx#+Jz`=-#|r>MV$`l0x9AO5@!ZU+mg zFQq<<a%aj{q5m=TkAdEfad8TqM{v%Aek=5O;FsW?&?nIkjj{6&^|kQx6#ADy--z54 z=u2tOLCO<}??;s96343;Us=R?J@ck6^X4h!#?#LF=pBMyovzO!PTD1WG2`k8az~K6 z6TU(4^~KL=_&E#y_u;Qbym}Kay(M4;atZXWL~mR0Yfz^&A4kv2%!k&rQ>XM^hp!=e z|HQ9R#HA;G_Xk^m-5K}g`JVX^JO5(G!~Y@3Z2()s&+}$83BCG%3GJ9pxii=d`Etlt zg6|gi+pr#e#d`EOeviTL-)Zlq2x+(HHvG}4<+aHD3VkT_2<<tS_N)L;fHkS#OMNZ$ z&1L<ogPoV*dj!A#rGNXOw;p;gqur}$Pch}1lsAD3!4~Klj-JaYx1#(${ymL<bP0cN zi|bYNyu^IcuH25uC#nC0`li(X$^36YIh*os>|aj1A3@(|=<7#ZrW2QY(0eg@_fXCu z{+r={AAao?O+$Zu<X$EYms39n{solZV_Yl*KL)k?cnfj38M#Z4`x1Rmp|2CDKQ0|X z?p);FpneYZIt@4vKkHKeH|2Ed+f)BF`YPaG8OA|d{CI=wg+GaVH|R<1-<!vE3wC<Y z&I<JFcJzHDdHCDIUj-}%^_G!W(67^{bBOb8#OE`DwWc2P2>EH0KcT#j{_0A-PAxwV zy)yDWk$;r<d`^7!;a3&PcY|-^-(2K8;(RauOlQ96?FIFbFU7B6$m{fAE9@>tekbyO z<6jd0o&#?O^%jhs#PfaR4-&W6;oA=1y~tHTt}5|33Eyt)Rl@Er{J)L<Gx()Hiamt# z3GBU(AG7e|IC}0RUTMhfL2fQ`EAVp=^bGXtl*KaiJ`epz=yzl9ZR~A9eg*PB;MbeT zH2~8=?Ygf-yQ1jZPx(Ty0sZ$I^f{~x+tE`NKiX0LR`Uq`AEW;)bp7$}-RQ4`o!6;f ziTyVz|Af7C^c+CnH27Ypehl~|I0L@P*wd-5A;e`Ae%-@*`zAP%^{x(no#lIMKJqu> z$0+nYjy}B|X#?@rsr9R|UlV<O(N_k2m*baq#Xm!wMxy6V`Z<^QosWN|@Kpf2P`{D- z*39cK7+<d<_cs1&7j+KvvpV%pQqNLlKE*GcvWQ@>8}ip<=RW*+4?jxr?{nHU3A_-z zgZjnPPo_MWvQF`Riyoam?v7vD1^x(ns#5<a?b^+_xq@;%<Ss;R1m%{L$6)Uv;*gCU z{SkGqF6$`#_e0+UeF5>fm3S<sd;@WMh4RgmwOhRj^`BFoNBI%(D)0){mDR*)9d?)D zmrg|tz@I*p8&lTlm(7&7!M_N89#orN@K2<E0QEY3GM;|Y+eM0?>$H6%;u44cG;%K@ zHyJsdB5I5OdH6jDzi(olZb1DFlwYD;2`myFzHab!!`}}0t5Xu+Q{KjWYC^o;fNuwU z)6m-=y;bnz587WFdymsUhp|5g`x)>R!1plm`;_<%hQAT~3*euH-&xdmrv7*E9O}~; z2d(M<yU;U*_9Wn|2;T_o--Z1{_;Y|xpG`aK(9X+|n}hs!&=)|zp7M*7%VMvi^ntCx zw$MjI?~h*r{$IuKglarj%}0L({ZCT=HTBKYSnrw7C!ueEuD4q)$F5HOeFNSB{YvP& zvA2o&d4zcMMc;Xp2QZEwqJ1N1-_z*(7Jcv1jy;UqdHC@qel*4Y2k@82&JV=r8p@SH zoz9p*oaZCA7P&#_X^5UK$W26UJ9e5O_a*wuvYtEvK1Y1UA~#p#3BF(8+lhal;a?Z@ zOhnI7%Bv}VhQ7zpr&D3WiCa0!$Dl6-?}7do{7sP8X@wJvhg{_Tp+5&wPQ(Acl$*jo z7yeQ3-^2Jgk9f?dej$F0qa9Ughi;JWLhdm18}V}=<*$)Dgnu>Z*G1S#;@2s#5%zT2 zJ`H<+P;Nl^8u-tHe**Ho(7P3S2K4tR>xIW9l)pp%3*r$a9!s#>2fI3D_C5AS!Pf#g zogSG@eO>GhL_UJw`_Q`$`55H__<mrV&O<Jn`Pm)5NziWx-vkH1cL#P}#h?3-OEN#V z5;vW?x*EMlke`aZ`PeDK{yWI+MNV%|_yfLkk-r-GOvZC3+PxL~ZxA<~_V|dn{f^$v z=sh34+u$3HzWVt6HRV4jcS7H_=(`a8$FTPger6!o0X^l>6N7&={+FO<8hQfcs>1&v zcnJBa-~uoo`9;WgW*yzcI{GC1H^Z;fI&-jxh?z<KG5G6Hh*5ut{_BgKICfsck8RMS z)VD*Q-s18(etZP|F!Y<iSHbGEvk&cjfbw$6v(R%5cFH2x5xJ)+-%9yb@KUfGcnmvv zpig-Y?fZr6toC3&<GBz1?!#Z5hM$GK*66(oz3cJ28F61nKh(kRMwDM?{M<r2&ZQp~ z!Iy+@B;~S{*V2yv&<>Ar--muFWZX7H-zV680lO#guP*$>=sAF%ZO}i2{u*-Ak!uT< z1@-os$?8}5zJ#wKd>Qb4K{*|NcA}>|dS1r<dawue^{Ib^`nkk;6Xo|P&jd$-18L{w ztQR_Umd^OQi*>jedS_wpQtS;t&mHJ_gZk0bcY$6B`Zn4%hV|)5>c6IbHu~>F|0UEn zr(UNFpI{vvN&TbL_hg-{D8HfCB(4jw{{Z$!p{G3YIiENmCeC`R#%B0#K;J<0?Iykj z#P?VDH^Tn{?ORPhz76gH`=f6d`cA|DB-b4+p<fBT1%CMWQJHd2%Ihe<LisEB$`PlZ zv6IBkOVqEUz61JeqQ4PK#|ivd4?PXPKVf~Y&-#2Hc6Kl>u7UnE{7vBdjrQ-MoCDvb z>{r-}zHi}sg?8s*?;rFXrG1aW_agddQ2u~;9Dsj6SdDS|5quBhmrnm)0beWP@Huhl zMR_OfK8e5g)2^4$+nsg3y2|v=v&dbC+zfCq_yhPNsJA;5;D0ChHo`Xr97-Io#m{H) zJD>7==r_UF0zRGc-A-9=otTdQ&(`C*hH-fh^l8Yg!S5yb-IH<vUrlfhI2wOu6Zgi{ zm!-Zp<GCqvdMoD3=$VeaMc8Wz|8mxczLcj?o<qAoru{F0>%ecRuS)wa#-BfE?`QBG zhp&)0>>v)O(YFYFPr&~b{4L=76u$Sc`xJIRM*cVatOq`aUxmoufP7W>9)oW%@|Pq3 z81gHTzncE6O@Ho!uOj7}h+7}xmWIAPtOFU~L9iP2z0q?e<?h(&MEP3E+339=y*lld z2kMme1GIZI_S^8i&;!4J!tW2EFNOXraca!GnSfj^;{6SBS;$?BKhI+S6#BQJU#B%s zK_7*GHSzDi=v$6Hy^W|pdcMcc7x2@Ae>eU;jNa3X#~ABf2gcF2=sShJ^2kjh4(Gww z1ic5aSA^cq$X7)E2<@l^-wrSn{C`~C2mDs^`#<ncJ1U6=Dikt830WDD5g{`qq@qHl zq!2Q)GDDQ?y)v@0GDG&>WbaY-`0{_gKIfdD9{-zn*SW6ub-k|f9_QTm=RW6N#yp-c zuH3CXiJuAdcBXeC{Ac0kF6`^ncQJa8(R-Qv9`pN8{?_34XLhf%TaNrK>uO*6%ZvLE zI9tH^fZh`H=8ETf@w_9?VdnV~^dF{w4Ees~kE7S1ZS-Ft-mUSS@c*!1oBbPbH>97Z zdfsI`A0+=){Jqs@E&g9)x0m>SBwvyKI_N<CYoPliU;dsE_c7wyDf!9&PUHClx`O_l z`RmHx`S!oH)o*KdW65(D@i_Q<+b`zwdkcTN;D3ep7rZ*`*MZZ4eO>lF;kSnW5B@{^ z)%YXvchUQlUQ=~^TAYvSze<12iarlAo(=e0pTFD?(wCp3;6Gqr?oU3Me6;*`H4bg@ zJK#TJ{}}sc@qgiWgnumj>(MvS2JEj@ude3f9P_b`I6kKTgZa=`eIGH;)-unQrQe(W zJo2T;XLj)ZQhsamcaL@Zj{IN5Po#G{y>94%XzsQ>)Hr@2-gCv<pL{a;kK`B2?<sNp zCa$4ydYBJQ#rvH+cNEVL;`y2W%KCHH`}+Rw*IfUP`Y$Jc5zch+uVUStChq>~H%Gi{ zh&NA}JWD*o$TuU;Q(`tYUd!Qsm0vyn_QJ0QZ!!E4;<$#NJVo?dakhv1k-Frr;ibg+ z3cG9JJcG_aFXI0x{+nA@o0~^7*?++PY4uq`eIC^Rt^VQU)5-rrJJWlf{D0&t$nQ4! z?LdBv{ubmt$@ejTp5{MKv3ptk<IS@*#JL!~jp)rZul68+OWd=?eYSW8if0Y^%%rC@ zHAnORBK?2qA47hyx;_j4FZhqqzmWd^>eSrl@GHY<0B0oH7tP(nedT>B`+M1sR)<^7 zuiRbTjr>kHAH&%aP8&FR>hV3|y%awRKa1Tb?3P7)qp!lf3-00id+F~2ubK0~+wgkA z>!J=1sl$74o6^6Fe7<;Bq5nU2hml{(U!G1dg`eETyrT0!9XQj`m-OeNaAW?4qq*CA zCwd$6+m`*m=zO#jyX#UPb~D-4Loet5O@3|?*U511;%94gESjg{b%c|rv5i3UbgjG9 zy&Joh;%{u+H#DBds`qB*$ENV#g1;ubI`H-v&pG0mfj)<hWOp6A4aBpIc-Eu07`@!R z{f{_?8Rw4d=bJz48Nc!DZeVvjdK>x!KU4Y1({%dM+XKIl-rVG2e^J7kC-jdK=Y`^I zE1t9IO_I;u@@b}jp8hBJzn1^&(bLeg(UItm{4Ynp0sZyq?+yP?_<4%#Ug#G5^e_(y zYd)g?tGGI4-s4Y@M=NvzdFKw^pYY#MeY)$<)7v_+UrRi9!EX-dQTgU+ZJW?L9Dg(1 zZP~Yjlcx$cq1R3veZ(<a|C#dZr2ilIf8gt~TTgsXz&%g=qsb32pIcb>x8Tphuf~2a z_HWaFlKnUMw(2+;eSrK9@qdJWkp89g*MR>oIzjy|f&UBq8R|8j{cQ1#*1xs*CW?D& z{mZc5j{T?d>miQ1aJ#{M18qp2r<5#b-aN_fVs=VVb27cX_}hq|ht=bE^L%mqHx}(5 z`mf+GPoMgpT|a(DnlBCM?WZ0uqpPdiPvpPKr!)R`^83(l?e}B(y_Wwi;jILJIK7M5 z&xbqS{=1`ij}=#*zV$c!CFyTLzdOAZ>HUOXNq?SVeULZ@!r2ne81k#>9VefbJ|AsC zzEHe#<uy%Sm+F6B{{isNWq%_19^@nOm*dxk-v)l3CUi7<uy{9;_uK0HygE*YcMLz@ zs_PKERBG;1hded4t2kDHvj?1^a5sg!1%IRX%TtIplgGL6rX+v(vy4-oM%+SOHm5g| z-jVS8!5@LY4BuBhzJ)uD-8Jk?o0?tuYt7F#{H%`djn;>Em3m)~_H%y8)8EFbV=w#F zhZb8q{AF-9Mqfaer1yk<<q3X%<|j{QxdQ&~{IAb{4cxA9^R&PZ<#`W!D>{tbh2p-I z-r4lVvD=s32J&qx-}T5_k>8F#3IDY^4P-ZipXc~lRlU9!e`h##)b}WUZscco^kj5- zcvID5CY*ENe8#R7d7hrWuKM+1w<o)v`a9}hkKJJXSL08{=jq%J)4PP-v;5tT&PPvz zJ6@dM(r;&S9{}fAd937oa6A1G`nT7=b_;V`y#|=q3(51e&v(T85WDaAIZ|o5;%}z^ zq<Qf<d24us`MH3fb>J=qw+s3H^j9SBOa2b|Q`W(n_<iwP<9o|v0{STZ-QYEWH=5m5 z?3S}1ZJ#*h)l*(?@_T^s{F2^q<D93F)K{l1*>3@70K2o;eNXQK@x97VJ^YUJ|8TvN zr*Exh+^5oSV}2|H_YdphHuPNhf6?zu{{Z@{sY9O9z772U>Hk3gH}KmgPyJoR+1b3B zrB3tVy)3U*`nP7^7S0axd!PJS@_X=~<4<RIGThnlro)@1f1>_R#5+;EdD`D;>iwcP z+lg}lx+^*d?hkOEf%6BP8_>7VeaO!szX5#<y%J6@IG4dc9{x7s`$&9G;cvj_=`IJs zf1cj<^yZLXL4K>ao|R9Y<#7am*T8!XUVr>Q_-E+dL~mLA#rSRTtKxUJ9>$v2O^s6z zb$L<$PH>Mk@B5nfz38n%uRZ<`^f9;#;SMI>I(X*Q$MoOFKa8KO9^ZLia-j9H4%}Jf z7m#0to`m-0?{M-j`8kDMo_72sK2MpQgYH9b6MAQ$hoDFD+glv1)oUB|%G3G!7|%Qv z<~8=`$@>E1@hSZ$>0iwM3f_k=iC<t|yd~bo@@kLnDDFI!Z!PoYUE{L0I^=1Ui>v2_ z^p9l!G5R>V61{KC&pchHHGeOV-$wo&e@Brw)qfw_4sIW~d0N}`;y;((;q->;Ki_)D z(_W^SANSJxg5Dwe`{-XxUSFgCs>4iqEUAAB{Xe6A8?feh`Q9eqz4=>4eh>TJS_9XO zhqB+1-7T&gx{GUR{Lk`iMt@WKtFrG0X9N7f_&k;CYH@upjvvKwCH)iG?+$kfxFg7~ zw(jl~&l&2xiTU=b`L+N~2XS=wxygL>Ii23;^qyn4y#01B{ih`#@h>O-Uic&MfAG6H zs>C&Y*!@cXT>4k*f0g_M{db6~k3Z=B%g=K7?eXvHZ^qwXacm@x+sHp8|Bk#p`Pbrp zR@^iE9q|`-JM;Us@jIHlKY4F@N5Ste-p~2%PTq!mKm3>Y>G0;k+d&??$>U`GL-Zde zzU|au3HF<@Ut=ZvQtD|vY|8JQ;+Z6#Jhgo<ICa_2Fz(&R8<8K0zuPz;#{N?F*Q0Nu zSHqnN_kMmZ;inb7m)YHhj#Zok#NSxm2GKvC{wnku()$&C6Me+E-D}+P)Tl4%&ERh& ze;XU0m*syyoU@JR5zZ$|yFPet4eN#e3h;J@_lSM<AMySqjx*H%ar)EgKco)dsly8V zU!#84n@8)JM?drXI=^|^;h*fbr8kb=_U!tq*Ew+Kz#TzvXL_HbPobZnPoTZ%A3=X< zbSw03@t!8$o7fMO@1xe6>eW77x0kwnM*hBd8qwc?{{HAW=qB*m!TVi&m&tpW_&2w& zeL?>t>$)GlCHv>#wT5?zxSkbPp2~iixc>)dEqn*|H|SqTZ+CRMcn%ZK5A;_suH)(5 zz~A2dZOq>e=Hvg=^<jQ4@V&G>>3638unUz{UEe-H{~P+BqAlSso4TsoTJQ$o*JM{; zoj&5PJAe0(e@=cD{1Nb5qQ96|%fkHy{{ng?{C&jvH~swD%cjP!552YYKLKxseD7~% zEm`;X@%ttJb<E3kvL5iu!M|7>SE<Kj{vN=;hc?wejeSS<XP{r%kK3Uin137c+l=4c z=$%CWH#n=JJ@s#99zO+dX?m^s*#^$u`cJQ|6H4zz{J;1<;{H_J=fioNd^7wT_%+ab z(DTS2C7%cP2IHJx+h}Ke#_+!l|8MJG4E|R1-wF=g$KkGu_Cp8J^Lw~8c{=o3>>9zj zSzHf@Z=rm*Vm}7{!Ss62%hO1Yq_-5kr|JC+ce?qr0sVQ#sX6`4=`W-IHS1v<{h{<N zothE+*YMkw-`n7w2=5WsQ}^lr#&~Y0{~b8J;2z8Vadq0;zVfmDh3q=Qz07*O()hiB zK7+2!-+tul8qb!-a|He}{2p+Y6#ogvds})t;s17BGaAlS{QpgFO?7$Dyz6M(`-*23 z@vKR{FZ(<#Z!){D;Ld~FgWaL*e%HSmyIsY1fO&WeyW`ni0Dn4vZ{TmlKdb*H<FPKj zF}^MO8=UXqy@;+!|4#Mtf6YDWHxB;w!DpAB^7u-<P9y&Zy#+m#-x=cCg<S*dG*9P0 zQC+TqHwoSr_N%w8tB&e9lRUp7&;z}U-3#nG(`!oaBlYMH{|LBi!rdO;LP2aqZy3Ei zje84r*NgXPaZf_`Lcd`DG<!?dk0UydlMf{yL%uuty6gwBe+++h{J`DYIKE1MPkvs~ zpErqXi1Q9{A~grX*_qzI#-)?If2N;brRhfAiTbzf)=`&%>heAN<=O86zdQU9a97lS zt^U{bx5dw3cO<-hj6<H%*i2qM;C3}mi<1w<k4N`YzctwH!)`5h53+j_{|i1(<?c>@ zUw$^_rvv_T^Y~5v8}UC1f1`QX65mU{C#l1p>hL<;^~L{1{Lmk-&OO!n5ja=Ed6Rq- z{qy+wlb<}rb$jvL3g>+|`*|PolDao#*MVK0?)RekvmN~Q@awbRhyI(!eLTJVy3~8} zA4R^CeD{QV3f!;Mua|sw;kO&Vc}ia+pDXSLZ;-rN(x0H-C+Q!o|26b(bc{Hz7RQHZ zb9tUgei*q>Y98U|LikU@zezmDiYHGkJwP0J`u=T{dWm~=^k4pm@}H*wkJ8_%gK@AQ zGp(6OzBT$DIv)Ps@ShjgOnENF@0R>`hu;MLBlsWjdHUj1I7_fQh22@?50MX$M+f7$ zmGkN{>asfi7IZVXE5Ln{-Y@iC;D1?h9V7mm1#v(5*W{1UuWvl2>u;fdusBXtpN8ze z5bvAleQ<ipr^cEH^>(V3DrYTK##-9Aq`r<@vlYEn(XC6n(Ab5>E;RbR%l^>xho(O? z{X3z--x-bn(CCFmFSP29{vP<~g+?zldZFpxyOa+^qZb;z(CCE*FEsk0$!8Fne1@R0 z3yoc9>_VeI3{8J%`a{znn*I^#Mn|I23yofA^g^rt=#RxmFEo0g(F;xgQKdXId{5ML zsEs=`yy2|nL&L9D@}XPdgFC3C;e#JOG`!P#Egu@bX~~E7D*3@B-5QPG)FU)}{Duz= zADr-^;S)#r(D1<xAG$4?I1Vmp_~3*O4IiBFq2X68`Oxj~u^(E}-e~HZ@dyo{IKzjA z4{rF-@QEvYX!!Wq9u4mBlJ0=U-ytRKgQl*BmNb0&!-s}Xe&Iti&!eCD5gI;v;X}hm zFMR0EXyVO$2@Rik!-s}<8ClDR?urlY=#qvHZurpf!3`g}8yfvFB@Lf^!-s~CUHH)O zu?ru%dnrGnq~RkEAG!yc`ez=8hEE>hL&GPJ@S)+e4#S6rPhR0e!)JWLhxS7g=eUw) z-G|RQ2@T&E-3LvcN0&5wqmmB|pLo+Bn!2_{Q|Hk54UON>tgq+|ENSLT_{^WmJ~Z~B zu@8-X#V4++7S(a|a-3MBTOC*O3M2AGajLx|@*F3=90xx!R>zSi-%4H`&n1uS^O9zL z1wZR8H1j?*^FB27Sq)8op%ovDN|xh$>lFG^oL6I)brc%><QV+W%=^Thd0)k!@lRjk zuZ|OEWQjBMt&;v;(&X2?v<VIGH_U4>LbLBgo_!}YeB|LnGmepG97DrL9zHaAMxGo) z!$%%IH0vw!tgq1Uk%te>I7Xha4GkZ8_|UAcPH5IwXx39`)>CNqxzsQFTxjyk7^X&{ z$!AqG`Gh9EYU~qZbsTxtV>MpYapb{?ZfM0<dXeQg>nb$sEHq=5@mN}mj~vf7=9}oc zK?{FgDZdwgVR?K}NvD<c@{(R#(i=-U8?A7oo8#z&-k}Bm?vmbH(%3})q*mEhIF)S9 zB0AB1rsQ8)gvQqIlhx)J8h&Xs`rZQ9^2?R{GH7bC650?AAG%>l*Dw1+gR?FgoIOi^ z<C2elaJE8Ye*{`PZ%W#_ly@)bk|piB2p|0LRs6w;-_W;8`P(H8Ui5+&+NPu%lr(u{ zoD)}Q_~?ZXUB0B7mGsM!epS-7O1fi7Q=i}@ztHf(2_G6h`+fM(RZID{CGA|&9ZI@t zLu*G1-Cf(Rq~Z6_wlDeDOZsR@Un%Koi+TU3buDRrj5~a*lC~~so07IGX@`<_ENSPG zb}8vo=)+p*o7$DygW6Rky{)9(yzlR!ZCKLQC2dpEb|vjx(rufVGg|0oCGCfH(0XVc zOF9L8Q=6+jtUXoI@R4uR6pl7WdtIBm2z{gEA6tY*XB+P|H`BH)Y50EH+uFR6zPJdj zWFL}k+1xon>r>KQO1fuB`<HYJ^lt5NZFEVGK=0HhYO_k3{_s<@;La%Nl_kBdq&JuJ zTr{|=Ea`K4t%3KY>uZflx>!k@l(bn%Ta<L;lJ+R+W+mOcq+6CW`|>L0ZT98REz#_q z2bMJaN+ll}ew~sJ-3q@dn!RDrBFDWP2WN0e!^b{+X!zKN4-Frj@S)+?D*4cyFS7o! z*W{d09ar-BujDz7Ja&;)_FYRpH2v|DJtjKU@ivYdksVahod4r1=l{^0*V3Q!T4?y> z6FxM2_J#1F;e#DMH2m5nAKDwAc!rfUeC(1#WYzHwjw3syq~YT)d}#R8F??vBQhsPj zD?T|?vK&Vq{m3f2)GK`Gj%fTIR?_gvJA7#P_zxeN>!ZkXeH0o#^6*uE{DcopfBb|G z-5ITi#^=aIjw^ZUQOR>0dGg4-h`c(k<P}cjIqpj*bW};hC(iJpxef}=bx_48?(m`M z4-H-=%W>q%C$i97AH_b`N1@?k7d|w6;;3}0<H&QpRLQI3%D$2ZBgeV!3e9y_#iuWP zX!;XR_|WjFbNJ9)*R71^x-K+)=41HK@X-rj>DR+2-pH!s=%o%BlgO*%JxiS<OBz0L zg%8d9qKsYM7lnoocKFcn!3-Z7K6!=@4IiBFp?j6`@g)r(yYQj89*kYC2Sf9ID(}DY zekwG4aKeX%Pu;?YW*t}ctm4WwfAB(&uT$V=UyXhC)zI*Zm3(OU_)Ct_sg5goYEj8^ zT*)hp=r4*>ZxQ_*M?Zd}7o6%i^6Yt)-|D!MSAHX}{N}jwTOC*WmEXu0^&7tOo8#=a zi6MJ!X!u};4-Fst@S)+WnnYF|SMtPG$#Y!EE6l1smAt}^yux3}arod=$Ju{_k-axG zeEPzNW?u=-UQ_YW3m=;PD%QxV<4T@bD|wD9d4&=EMRDpaqMzgF$8Yq4QyoX1_xl;w z$gAT@Uipo@@|)wzZ*^ShSAHX}{N_0RD*PO0-G^q)S9~zTho(Pvi7T?|xRNK9N}l6N zUSULkQJi{<=;yf7uVScT%sLNV)@5k;=!6dqAKdVv;e!`G^bRfW5kp%p!UwC8Rmagw zewDmBj(p2S<T*Z1i##;A6(6ihRvlNkl{~nWeuWi`9Ope{^g|=7_+VAC>bSzK<iWjA zi##;;6(5^QRvlONl|1%&FB^Gi>?=Mtm8?3h>?`@A_Q|D^=lCKm`k}$C_+VAC>bSzK z<iV}<E39DTIPb5c9~xQ32dk1*#}#fR4{oJjVO6-(^hG~3vWgE@C994r+)5tYN<X-j zJjZ$eAN|naR(!B3S#@0DR`TFpu0<Xi`-+cEC994r`$``Bd=3$LXzVLKHkGV8uIwxM zqV~z9lIQqZEqE0TMs*y!>NvX3Xu%GRO~uEil2yl543#`sm41a4j2z#nML#sMiVs#L ztBxz&N*>%wzrw0;@6Z>!(CFP=@}c4HE&0&!vr9fS{G5^x4gX}xhlYQq<U_;9PvYCU zJWd?dapZ}m;?uV%U*)xEe=sXP{mHN5s~p2uds1~=`K{!YpYV(Nt@<lJRsW*=qJFFX zDvs1G{qdXQ%5NpF{8oL7@{8tM^;do?`$hdMn(sx6_|0+Uw~|+Ws=h_}Mg3O&mEX#~ z@>}&+e8#!TH^-IVN?!S?`WEFE^;`8<ek=P${VbaAjf?orapkv?SAMF#MfpYjR{fRV z%D(bj^;i5IeC66PH18)uE9@LsbFspUEVdP`=3_9<(}EEijL_JHMlWmb23@hgSF8Nw zxSC&;pU5h`D%P9}V-p&^j9vK9iVw~lf6tCQH1g13#DC%pO`M^5e-Yj4IQluR^wXc? zX<BSUV;dT~(AfM_`V6i3*gdJmE;M$bmCx!p`j2WE$Iy&@`YQV>hHJ@!6&kG2#1I;c zE4A3B#*v3cegOIm8rjxbjw_n}>Nx(=7aCd4O|c1$Ugl2t(29@VUBq=))TN~_pOfUh zOWv!U+rj6U=#-LPP|}x5`dUd}DQUfqg?{6bHYw>!C0(VYJxaP&Nw+TPb|u}E|M(qP z@;jEaM=9T|q=QTOkdlrr>6nrpS<-POJ-VdFl=Q@so>bCPN_uKZuPW&cCB3nvH<xrm zNsle*c_p1v(mP8!tE6|8^zM>2?&{iFdw-20-yIxJ({?QB&L!QYq`Q@LkCOH)>E0#n zU(x|3-M^#*OFFou2bFYaNk=Y1r#l{9@}c3!mV9XV@g*M`{+N;v4ZlsvUs}?eOL}Wb zZ!75?C7o5$yGwd+NoSYzfs#H{(m5r4w4_gzbZ$wXF6oPl(8Tph$%lr2z2rl~zg6;~ z;omL!(D2ul{0}Alv7`%1y0E1GE9rJ;`fivHO6Q&JJ7|ty_90$3ALxDN!>SpV7i|}B ztX@9PcX+%}+s^T?1HG5_;m@SweXsQt&k#7(R}W8fkI1>!>2U84eUSL}DBsl_<9l8w z`#UV#1=D<|4(?dE^?ktE)`x6sv0eT$pXUwmJ#}wLpP%Hj<J0XC2g>sV-!+0cZ$Ez@ z^1<zJn18c*fsa$X!M%4E_&%_E!iUYT^0}nGFT_-5qCE`mzS<9G$>k#NbuaOK;7i>L z<^!bTy*a$%SUye?$N6~v-#Ej4H9lmjzkf~50TVp?490=*=FxvlO@5my9{mUIYY*k? z9kDbQZx=Wl9A`h$|B6^9vwKfm&uQ&^*z~ae1^kTFKXJ0}oXIQo`G>!a)Z&Z&?oT;D zUDaunH_&a=<}W_y$nQq6G^6vJ4{^u)aHAuv$Mx?gjygUl>#eRg!MR^8Z$HQP8R`84 z|FaY2H^}E9@Mf|fCYEQk6Nd69w~_i^VfW&BzQZf#Eq$0c#+ZJq&QJ35kG$4UqgyXj z^Xblg>hpqj3EjB|`HYUg1Nl3G{<-Es{>U)h7_7vu_u=kS_o3uG_CJevq<VCs`@L9K zGH%<ecN;iYYY*}Jv^nyaF-{)O!23nc$B2C<ADfAFth#(Ehd=f#YIXkrbycrB$%pYX z{dnt`kM*XQlWM%3v0mn4<FGRfG2A7``^Z0Ha|)by`ie!(H#d&c<eIT~LCjkoX>N&e zf*8-bTrK6fHoMcsd5pRDlh)Ii&lq7Z<ackiJ;XRIDaZZzJ8T#F>M)*7XFiq{=hyVt zko#mg^-`xc>Ys5wh0f}5o6CPl<`Z8#!M{QOXU4E0{Ey)uCASyV<|FMnd3?-n^WBWM z7}~RaN!%CH{d1Cf>gzYddDJ*v1nXJ8zqEdyH3wHb#<@`~9~muY_1<f;W3}jRUT!Ro zM%s01|El=kpf^c<mS=yLxHb`gAO3fQKiRr`mEIO|ePj=xshWpJ(D?wrhP>t->2HB* zzMnQkJ4f5ocsvaAA-ODdiao+OZ>Yxq(|%C5zqQq-@pUO2vU~ZNY3#n}%O~7t#P+GS zi@Y!8v*DgTyVbVf`vz_BzW(N*U0{5Ns`1&{LTzVb`>}SO_$I0AIQcB6ZXHL`SGUfi z9jo1W<IOX1_SUx3`f7V>1GKZWv$ZYM@C5A<b<CVz>^O5l8!e{>=H7QF7^@SD*3TST zQk|x1b<}wy?N$3n<FkAZSuK<MCvyB(T{e;XSaE;9rTanIcQPh-%Xz3aQ4O{Z)t-|7 zpIY+YLz||3tfl_5v|fArdw_P}K5A*~UNJ^*Ys1XDTeY|N*hx(qYpKrxT57bO@qWTu zYiI55s_m&>8PDvsZM8kMqpZX1FPZ!As^7C^4VNEP)baXp{+_9pw`rLJhpTDBv2xSe zA8G&AGB4iMe%7|9zlHXky5CXO^ceG_zq+Qjo0T=))!h6+JL*)v)$)|GrgO}n%%Nws z)HnO+cUtOvhL$>SsLrF+dD?mYJ~73bo?6sAbMaj*wQr*KssB=!6z8|?SMwcP?R5`` zymS+L$QCfQ-n;s4^}g=;Ij(NaR+p=v_I3mFRa>att9_+CTGGc#`rsn697q0=7X8rs zN}9fxwa`~e`f5pEE9vVceWRprl{9h0?wyjpThjMR`awzOm-M5Oep1p;OZs_9zbNUK zB~4zz|GK1!W44xf=V<X48l2E+?rFMTyQHMomUNvK?uXF2m2}&seGgm<?WfIlPuTrh z=<Owa2))leBe!X@OS-<B{<>=YUiMsjZLj~2j#xxCa*^XviyR-m$nj{$v$bH|U($*X zRwc`EB@b>T&+(?#?1oxTt)uU8A7I^P|9U{HYY#hGo2F$ydr`Y=J$tV2w`XtLT^p>8 z)AEeu+4>H4e3rHY{vz}m?K#-DpxGNfJkR&8(R%iS59x1$ZljIX#%ZnAFZPRS-^{+z zz~0$V%e6&sEqm!c+8FIv?f6C7n(iGKHOiVL`%oL?-i>e21zN-1#jkCsZKn;@uF`(h zmb4%3rVY|gE?f4go3&ZmV_NHe#s1v}-DOXEjh1uI_x7+C$bQzEIi8GmL)X!6(LVKK z4-3)Xw1)P%<+P63@3b3yQU7c0TgPqff2(S5IX(#ezPs~_*0{fYrEE_x>;4?aZ)v&q z`bk^HkC6R~Hgq1@&3@StJz)d;B${)}BidQor|s<l1AG?{9f2OAP0&8lKGwQy=)8um zX7AlJ`>%E&*-0Hd?*_dcKTEqu%QfwktKENsuCtQ+Ftj?(0UhICdy4*j-Q2G;&~s4m zhiIRWO-G;C-qilkPO!Icypj2%UEugNH+DRQZfAe*qh;R@JzC4&f2VehcANHrwouEp z{F2TEZM6Z~9olPJU+0FVo!vi({*51so}_)MEg<jcobjaN8@07JmM{J|?NV)=b|_iS z!-r~%cXdxO`n&T>Z*AF4igR;g^iz6M%;^iYd_iM|{#z&7XSe$AT-1SlKW#VdaeH)c zc7Hmar0webo^$+R>v;w@x`Nhnm^kQciC(RJt=%x(ad*$4LYL{`yGzb%*Kg<^dvquK zX!LR|=eq~Avo`kZB4hn0x|8d&2Ya}85Pe=dSZnQ^xS5t~i<}>aY2&p?+VY!v#su1B zggK<GyJ>Ome9H05o4I#d--wZN+FZ=qT*n((cR8=N)uz(l9z9kYr`@WpVo%umaBIx< z!VL80t=ua$x;X##MH_EZw`L-GVPxC7hh{tXm5#BVv|Bdw84h|Mnzro`-XCc>Ur*BJ zX>B+6-GQ;L3;Vdw1D%5AJ;~+f?~+IQ>}O~9qiDVQdOjcB##<EU^q=qxwPkm4KbE%q zIAc(@obNZHHyPaqovO9pT|LJa@5OQ*@CjL`J>6q-l=+Q5spZ=78?8&v;`(d*qs=94 z!rtzk+NWsW<Lhpz4*k{d7}tv0s`!b{*RM?Q9?0>R=qFmuv92NZcMla>$Gmz9t$Unn zENwmfY6rSkRNLF}+vw598{0wd%R&Ft8ccMa9qjo8L+tU6Z$L+(`<siev$@l8y%Stl z^kRqJy^pzduxF=e=hK;?)j84oOYO3AtY>=XIi9Rts?FNfx(n4F(mvOE9OC{`wEaoO zT)S0UNqb29Ld&)0Zs<JiIqf~I`=RblJxok!=dG<%IzMTxC(#>Iw`MT9=1BK?>Kmxt z;rNwNY#jGJrFhSLFgi@TQ9Dgr;#B(^nrpGuv_rI0v^Uv&gw{FDUgY=ybdYxNk?x~H zKhW0SM*YwS)^lDQ?>VwZxi^*UDeVf^ZMk;Kb=w|is_6vx5TTE1ZO=0AwJyhdrblD< z#yWmb`%(J<|JvEbb>1tJ+y|^(aIRdn7U$WEPW5aAbi*lP)ZWr2Xn&mV{CI(QCcDq{ zLhGcr>oIiPS?+Ol{P<MkI6#drGB2EGmz!dr-`+K(HlJ+q3p~rq@l-U|k7=uG_gv_i zM(Dab;HMdP?J?~i?FF)~m$?7x67zV5^Mm$6A9-sBU+VY@&r@^U;7a#kUFCjL?Sac& zd+#V-^dGIk<=!i5t+h=wKe$-aW$4JmhIAP{cEpGwqr0p<XyE9BM|K%K<ltdrju?GZ zmocLUbs08d@R0Fq4;nr2h#_Ov9yW5V?gy>2!QgJ)4m@z+I_r1sy3Rpe#*P>^Xyo7_ zYmFE=`mlkA4m*0_5yM7~SgY&W>#W_aTP?z&BS#)GcGQ@)N82`P?)qlg+V6%roz^U; z<yEgBHJ)BtX9>RmRk!3rJt3>+qS~il*<b2}w^vjKHT7!@k9!eWQf}gSzPkkL)!qT_ zGXY2KYM(r6JpHPlZuhsH>pRJB<WO(3ng(dYnq_?ts#~2te(1fSZ{!v54L$cRM|VIs zk!sr3JW|uBCNV9g#me2#b)I%)3#k2>WZCI&46|3Acl9=m8XqnFyK}9j`{W%r@MNwD zo=RKvHzL`eta))yfu}ANuX9U3%ll5=>9wDa*RNTjw#(hje#@?z=<?gs%hn?2_jl|0 zC6*>NtJi)9Vi%g;armCnL5?n@+4H)0zo=<)Wgdu8a~5wMJkNb`S>@GO{{&e12*xuM zY9n*u>D8^Kiz+v(xx&AVYgR5JII;HoH3Rjx=eHP@Myi()$g2t6#<fSA`qy%(eH9XW z7cQ}{Su1S`)qTf~i`oV+N2`d=^R#QRTtC$Q3XkVqu}<avGDpoyH7i0fr#;bhrJ7A^ zabxYNUH)}XWsQa5mD=Q0`0rGET=~lgrv~9Yb(O7WEArM9ja3WQo07Dx)o99hF>0|} ztTuziYBs1@3%8UQ@@l7b5^bwmi&Uh(8PGsg8|ka(Zumsv&iC5>BC<r-7{565rS<34 zrPhCImPIs6vR#7Qvlu+_C9leMNn;r<F(rmVo|#u1HLU#>Xl7w%ZDwz>T|;kv$hx6C z5|7U^w9JH5w6%YWZ`~FcO~tzkyA|}MHY<qL&M2brsdvNL=u+dLCyM++eSwoPX=QE| zSVezkMyg%ZIX$bZ)SCF7FU>boJ9i{%S(|Dj9d7xo1#Kqqyn1Pcv!v1U<d2w~RWEw& zYA13Ya-897SeuXw9JD>n1|D<LLXStZ`L~fW=hdJ#oyN63BF%8DSgWyIEm|i-YO}8O zSpAlFgW6JN(G*3@0JPHbitijH{R~_tS!9bX(qfk=I{7!REQ_Y5a^&4bQXr+Tm~zQC zF{eMT`VfnsxNl^rgPxa1r};OVP+mpV!h2kbmfvq*QXa)1rw+^1>NPL1Y8hT4ZKK6g zr`kxeNE+ALJD{DIn#d{{Rgos2_)T9%qUVfHjmi&o7OT}tv`d(v8T7oGYmI9<k}avn zBV<gmEWx67%Q$XbJ1W^yi-{fN^kzd!JoQb$yjs*wy&NT)4wjG)!t~aGT#Q9SGbs}` zHd#a&@zi_8as!K9qEAh$`mT%*V!S7=aIsmsHpg&j!H+bEnewTB lw`-D1$$0f-N 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 F{|1d7l9K=c diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/main.js b/development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/main.js deleted file mode 100644 index 2d3002868..000000000 --- a/development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/main.js +++ /dev/null @@ -1,2 +0,0 @@ -(()=>{var e={7228:e=>{e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a},e.exports.default=e.exports,e.exports.__esModule=!0},2858:e=>{e.exports=function(e){if(Array.isArray(e))return e},e.exports.default=e.exports,e.exports.__esModule=!0},8926:e=>{function t(e,t,o,a,n,i,r){try{var s=e[i](r),E=s.value}catch(e){return void o(e)}s.done?t(E):Promise.resolve(E).then(a,n)}e.exports=function(e){return function(){var o=this,a=arguments;return new Promise((function(n,i){var r=e.apply(o,a);function s(e){t(r,n,i,s,E,"next",e)}function E(e){t(r,n,i,s,E,"throw",e)}s(void 0)}))}},e.exports.default=e.exports,e.exports.__esModule=!0},4575:e=>{e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},3913:e=>{function t(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}e.exports=function(e,o,a){return o&&t(e.prototype,o),a&&t(e,a),e},e.exports.default=e.exports,e.exports.__esModule=!0},9713:e=>{e.exports=function(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e},e.exports.default=e.exports,e.exports.__esModule=!0},5318:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.default=e.exports,e.exports.__esModule=!0},3884:e=>{e.exports=function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i}},e.exports.default=e.exports,e.exports.__esModule=!0},521:e=>{e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},6479:(e,t,o)=>{var a=o(7316);e.exports=function(e,t){if(null==e)return{};var o,n,i=a(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n<r.length;n++)o=r[n],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i},e.exports.default=e.exports,e.exports.__esModule=!0},7316:e=>{e.exports=function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n},e.exports.default=e.exports,e.exports.__esModule=!0},3038:(e,t,o)=>{var a=o(2858),n=o(3884),i=o(379),r=o(521);e.exports=function(e,t){return a(e)||n(e,t)||i(e,t)||r()},e.exports.default=e.exports,e.exports.__esModule=!0},8:e=>{function t(o){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=t=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=t=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),t(o)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0},379:(e,t,o)=>{var a=o(7228);e.exports=function(e,t){if(e){if("string"==typeof e)return a(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?a(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},7757:(e,t,o)=>{e.exports=o(5666)},6553:(e,t,o)=>{"use strict";var a=o(5318),n=a(o(7757)),i=a(o(8926));e.exports=function(e,t){t.addEventListener("message",(function(){var o=(0,i.default)(n.default.mark((function o(a){var i,r,s,E,_,T,l;return n.default.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(i=a.data.request){o.next=3;break}return o.abrupt("return");case 3:if(r=i.id,s=i.path,E=i.args,o.prev=4,"function"!=typeof(_=s.reduce((function(e,t){return e[t]}),e))){o.next=13;break}return l=s.slice(0,s.length-1).reduce((function(e,t){return e[t]}),e),o.next=10,_.apply(l,E);case 10:T=o.sent,o.next=16;break;case 13:return o.next=15,_;case 15:T=o.sent;case 16:t.postMessage({response:{id:r,result:{data:T}}}),o.next=22;break;case 19:o.prev=19,o.t0=o.catch(4),t.postMessage({response:{id:r,result:{error:o.t0}}});case 22:case"end":return o.stop()}}),o,null,[[4,19]])})));return function(e){return o.apply(this,arguments)}})()),this.call=(function(){var e=(0,i.default)(n.default.mark((function e(o,a){var i;return n.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=Math.random().toString(32).slice(2),e.abrupt("return",new Promise((function(e,n){t.addEventListener("message",(function o(a){var r=a.data.response;r&&r.id===i&&(t.removeEventListener("message",o),"error"in r.result?n(r.result.error):e(r.result.data))})),t.postMessage({request:{id:i,path:o,args:a}})})));case 2:case"end":return e.stop()}}),e)})));return function(t,o){return e.apply(this,arguments)}})()}},5796:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(1785),r=a.forwardRef((function(e,t){var o=i[e.icon];return o?a.createElement("svg",Object.assign({viewBox:o.viewBox},e,{ref:t}),o.paths.map((function(e,t){return a.createElement("path",{key:t,d:e})}))):null}));r.displayName="Icon",r.propTypes={icon:n.oneOf(Object.keys(i))},e.exports=r},2601:(e,t,o)=>{var a=o(5796);e.exports=a},792:(e,t,o)=>{var a=o(6729),n=o(9657);function i(e){var t=(e=e||{}).containerElement;if(!(t instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var o=e.chromecastTransport;if(!o)throw new Error("Chromecast transport required");var i=o.getCastDevice();if(null===i)throw new Error("Chromecast session must be started");var r=document.createElement("div");r.style.display="flex",r.style.flexDirection="row",r.style.alignItems="center",r.style.justifyContent="center",r.style.width="100%",r.style.height="100%",r.style.backgroundColor="black";var s=document.createElement("div");s.style.flex="none",s.style.maxWidth="80%",s.style.fontSize="5vmin",s.style.lineHeight="1.2em",s.style.maxHeight="3.6em",s.style.textAlign="center",s.style.color="#FFFFFF90",s.innerText="Casting to "+i.friendlyName,r.appendChild(s),t.appendChild(r),o.on("message",u),o.on("message-error",S);var E=new a,_=!1,T={stream:!1,loaded:!1,paused:!1,time:!1,duration:!1,buffering:!1,buffered:!1,audioTracks:!1,selectedAudioTrackId:!1,subtitlesTracks:!1,selectedSubtitlesTrackId:!1,subtitlesOffset:!1,subtitlesSize:!1,subtitlesTextColor:!1,subtitlesBackgroundColor:!1,subtitlesOutlineColor:!1,volume:!1,muted:!1,playbackSpeed:!1,extraSubtitlesTracks:!1,selectedExtraSubtitlesTrackId:!1,extraSubtitlesDelay:!1,extraSubtitlesSize:!1,extraSubtitlesOffset:!1,extraSubtitlesTextColor:!1,extraSubtitlesBackgroundColor:!1,extraSubtitlesOutlineColor:!1};function l(e,t){E.emit("error",Object.assign({},n.CHROMECAST_SENDER_VIDEO.MESSAGE_SEND_FAILED,{error:e,action:t}))}function S(e){E.emit("error",Object.assign({},n.CHROMECAST_SENDER_VIDEO.INVALID_MESSAGE_RECEIVED,{error:e}))}function u(e){if(e&&"string"==typeof e.event){var t=Array.isArray(e.args)?e.args:[];E.emit.apply(E,[e.event].concat(t))}else S(new Error("Invalid message: "+e))}function d(e,t){T[e]&&E.emit("propChanged",e,t)}this.on=function(e,t){if(_)throw new Error("Video is destroyed");E.on(e,t)},this.dispatch=function(e){if(_)throw new Error("Video is destroyed");if(e)switch(e.type){case"observeProp":return n=e.propName,T.hasOwnProperty(n)&&(T[n]=!0),void o.sendMessage(e).catch((function(t){l(t,e)}));case"setProp":return void o.sendMessage(e).catch((function(t){l(t,e)}));case"command":return a=e.commandName,e.commandArgs,"destroy"===a&&(_=!0,d("stream",null),d("loaded",null),d("paused",null),d("time",null),d("duration",null),d("buffering",null),d("buffered",null),d("audioTracks",[]),d("selectedAudioTrackId",[]),d("subtitlesTracks",[]),d("selectedSubtitlesTrackId",null),d("subtitlesOffset",null),d("subtitlesSize",null),d("subtitlesTextColor",null),d("subtitlesBackgroundColor",null),d("subtitlesOutlineColor",null),d("volume",null),d("muted",null),d("playbackSpeed",null),d("extraSubtitlesTracks",[]),d("selectedExtraSubtitlesTrackId",null),d("extraSubtitlesDelay",null),d("extraSubtitlesSize",null),d("extraSubtitlesOffset",null),d("extraSubtitlesTextColor",null),d("extraSubtitlesBackgroundColor",null),d("extraSubtitlesOutlineColor",null),E.removeAllListeners(),o.off("message",u),t.removeChild(r)),void o.sendMessage(e).catch((function(t){l(t,e)}))}var a,n;throw new Error("Invalid action dispatched: "+JSON.stringify(e))}}i.canPlayStream=function(){return Promise.resolve(!0)},i.manifest={name:"ChromecastSenderVideo",external:!0,props:["stream","loaded","paused","time","duration","buffering","buffered","audioTracks","selectedAudioTrackId","subtitlesTracks","selectedSubtitlesTrackId","subtitlesOffset","subtitlesSize","subtitlesTextColor","subtitlesBackgroundColor","subtitlesOutlineColor","volume","muted","playbackSpeed","extraSubtitlesTracks","selectedExtraSubtitlesTrackId","extraSubtitlesDelay","extraSubtitlesSize","extraSubtitlesOffset","extraSubtitlesTextColor","extraSubtitlesBackgroundColor","extraSubtitlesOutlineColor"],commands:["load","unload","destroy","addExtraSubtitlesTracks"],events:["propValue","propChanged","ended","error","subtitlesTrackLoaded","audioTrackLoaded","extraSubtitlesTrackLoaded","implementationChanged"]},e.exports=i},3153:(e,t,o)=>{var a=o(792);e.exports=a},1431:(e,t,o)=>{var a=o(6729),n=o(7631),i=o(3465),r=o(2682),s=o(6767),E=o(9657),_=o(8973),T=o(1566);function l(e){var t=(e=e||{}).containerElement;if(!(t instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var o=document.createElement("style");t.appendChild(o),o.sheet.insertRule("video::cue { font-size: 4vmin; color: rgb(255, 255, 255); background-color: rgba(0, 0, 0, 0); text-shadow: rgb(34, 34, 34) 1px 1px 0.1em; }");var l=document.createElement("video");l.style.width="100%",l.style.height="100%",l.style.backgroundColor="black",l.controls=!1,l.onerror=function(){!(function(){if(d)return;var e;switch(l.error.code){case 1:e=E.HTML_VIDEO.MEDIA_ERR_ABORTED;break;case 2:e=E.HTML_VIDEO.MEDIA_ERR_NETWORK;break;case 3:e=E.HTML_VIDEO.MEDIA_ERR_DECODE;break;case 4:e=E.HTML_VIDEO.MEDIA_ERR_SRC_NOT_SUPPORTED;break;default:e=E.UNKNOWN_ERROR}R(Object.assign({},e,{critical:!0,error:l.error}))})()},l.onended=function(){u.emit("ended")},l.onpause=function(){m("paused")},l.onplay=function(){m("paused")},l.ontimeupdate=function(){m("time"),m("buffered")},l.ondurationchange=function(){m("duration")},l.onwaiting=function(){m("buffering"),m("buffered")},l.onseeking=function(){m("time"),m("buffering"),m("buffered")},l.onseeked=function(){m("time"),m("buffering"),m("buffered")},l.onstalled=function(){m("buffering"),m("buffered")},l.onplaying=function(){m("time"),m("buffering"),m("buffered")},l.oncanplay=function(){m("buffering"),m("buffered")},l.canplaythrough=function(){m("buffering"),m("buffered")},l.onloadedmetadata=function(){m("loaded")},l.onloadeddata=function(){m("buffering"),m("buffered")},l.onvolumechange=function(){m("volume"),m("muted")},l.onratechange=function(){m("playbackSpeed")},l.textTracks.onchange=function(){m("subtitlesTracks"),m("selectedSubtitlesTrackId"),N(),Array.from(l.textTracks).forEach((function(e){e.oncuechange=N}))},t.appendChild(l);var S=null,u=new a,d=!1,c=null,A=0,I={stream:!1,loaded:!1,paused:!1,time:!1,duration:!1,buffering:!1,buffered:!1,subtitlesTracks:!1,selectedSubtitlesTrackId:!1,subtitlesOffset:!1,subtitlesSize:!1,subtitlesTextColor:!1,subtitlesBackgroundColor:!1,subtitlesOutlineColor:!1,audioTracks:!1,selectedAudioTrackId:!1,volume:!1,muted:!1,playbackSpeed:!1};function O(e){switch(e){case"stream":return c;case"loaded":return null===c?null:l.readyState>=l.HAVE_METADATA;case"paused":return null===c?null:!!l.paused;case"time":return null!==c&&null!==l.currentTime&&isFinite(l.currentTime)?Math.floor(1e3*l.currentTime):null;case"duration":return null!==c&&null!==l.duration&&isFinite(l.duration)?Math.floor(1e3*l.duration):null;case"buffering":return null===c?null:l.readyState<l.HAVE_FUTURE_DATA;case"buffered":if(null===c)return null;for(var t=null!==l.currentTime&&isFinite(l.currentTime)?l.currentTime:0,a=0;a<l.buffered.length;a++)if(l.buffered.start(a)<=t&&t<=l.buffered.end(a))return Math.floor(1e3*l.buffered.end(a));return Math.floor(1e3*t);case"subtitlesTracks":return null===c?[]:Array.from(l.textTracks).map((function(e,t){return Object.freeze({id:"EMBEDDED_"+String(t),lang:e.language,label:e.label,origin:"EMBEDDED",embedded:!0})}));case"selectedSubtitlesTrackId":return null===c?null:Array.from(l.textTracks).reduce((function(e,t,o){return null===e&&"showing"===t.mode?"EMBEDDED_"+String(o):e}),null);case"subtitlesOffset":return d?null:A;case"subtitlesSize":return d?null:25*parseInt(o.sheet.cssRules[0].style.fontSize,10);case"subtitlesTextColor":return d?null:o.sheet.cssRules[0].style.color;case"subtitlesBackgroundColor":return d?null:o.sheet.cssRules[0].style.backgroundColor;case"subtitlesOutlineColor":return d?null:o.sheet.cssRules[0].style.textShadow.slice(0,o.sheet.cssRules[0].style.textShadow.indexOf(")")+1);case"audioTracks":return null!==S&&Array.isArray(S.audioTracks)?S.audioTracks.map((function(e){return Object.freeze({id:"EMBEDDED_"+String(e.id),lang:"string"==typeof e.lang&&e.lang.length>0?e.lang:"string"==typeof e.name&&e.name.length>0?e.name:String(e.id),label:"string"==typeof e.name&&e.name.length>0?e.name:"string"==typeof e.lang&&e.lang.length>0?e.lang:String(e.id),origin:"EMBEDDED",embedded:!0})})):[];case"selectedAudioTrackId":return null!==S&&null!==S.audioTrack&&isFinite(S.audioTrack)&&-1!==S.audioTrack?"EMBEDDED_"+String(S.audioTrack):null;case"volume":return d||null===l.volume||!isFinite(l.volume)?null:Math.floor(100*l.volume);case"muted":return d?null:!!l.muted;case"playbackSpeed":return d||null===l.playbackRate||!isFinite(l.playbackRate)?null:l.playbackRate;default:return null}}function N(){Array.from(l.textTracks).forEach((function(e){Array.from(e.cues||[]).forEach((function(e){e.snapToLines=!1,e.line=100-A}))}))}function R(e){u.emit("error",e),e.critical&&p("unload")}function m(e){I[e]&&u.emit("propChanged",e,O(e))}function p(e,a){switch(e){case"load":p("unload"),a&&a.stream&&"string"==typeof a.stream.url?(c=a.stream,m("stream"),m("loaded"),l.autoplay="boolean"!=typeof a.autoplay||a.autoplay,l.currentTime=null!==a.time&&isFinite(a.time)?parseInt(a.time,10)/1e3:0,m("paused"),m("time"),m("duration"),m("buffering"),m("buffered"),m("subtitlesTracks"),m("selectedSubtitlesTrackId"),m("audioTracks"),m("selectedAudioTrackId"),_(c).then((function(e){c===a.stream&&("application/vnd.apple.mpegurl"===e&&n.isSupported()?((S=new n(T)).on(n.Events.AUDIO_TRACKS_UPDATED,(function(){m("audioTracks"),m("selectedAudioTrackId")})),S.on(n.Events.AUDIO_TRACK_SWITCHED,(function(){m("audioTracks"),m("selectedAudioTrackId")})),S.loadSource(c.url),S.attachMedia(l)):l.src=c.url)})).catch((function(){c===a.stream&&(l.src=c.url)}))):R(Object.assign({},E.UNSUPPORTED_STREAM,{critical:!0,stream:a?a.stream:null}));break;case"unload":c=null,Array.from(l.textTracks).forEach((function(e){e.oncuechange=null})),null!==S&&(S.removeAllListeners(),S.detachMedia(l),S.destroy(),S=null),l.removeAttribute("src"),l.load(),l.currentTime=0,m("stream"),m("loaded"),m("paused"),m("time"),m("duration"),m("buffering"),m("buffered"),m("subtitlesTracks"),m("selectedSubtitlesTrackId"),m("audioTracks"),m("selectedAudioTrackId");break;case"destroy":p("unload"),d=!0,m("subtitlesOffset"),m("subtitlesSize"),m("subtitlesTextColor"),m("subtitlesBackgroundColor"),m("subtitlesOutlineColor"),m("volume"),m("muted"),m("playbackSpeed"),u.removeAllListeners(),l.onerror=null,l.onended=null,l.onpause=null,l.onplay=null,l.ontimeupdate=null,l.ondurationchange=null,l.onwaiting=null,l.onseeking=null,l.onseeked=null,l.onstalled=null,l.onplaying=null,l.oncanplay=null,l.canplaythrough=null,l.onloadeddata=null,l.onvolumechange=null,l.onratechange=null,l.textTracks.onchange=null,t.removeChild(l),t.removeChild(o)}}this.on=function(e,t){if(d)throw new Error("Video is destroyed");u.on(e,t)},this.dispatch=function(e){if(d)throw new Error("Video is destroyed");if(e)switch((e=r(i(e))).type){case"observeProp":return t=e.propName,void(I.hasOwnProperty(t)&&(u.emit("propValue",t,O(t)),I[t]=!0));case"setProp":return void(function(e,t){switch(e){case"paused":null!==c&&(t?l.pause():l.play(),m("paused"));break;case"time":null!==c&&null!==t&&isFinite(t)&&(l.currentTime=parseInt(t,10)/1e3,m("time"));break;case"selectedSubtitlesTrackId":if(null!==c){Array.from(l.textTracks).forEach((function(e,o){e.mode="EMBEDDED_"+String(o)===t?"showing":"disabled"}));var a=O("subtitlesTracks").find((function(e){return e.id===t}));a&&(m("selectedSubtitlesTrackId"),u.emit("subtitlesTrackLoaded",a))}break;case"subtitlesOffset":null!==t&&isFinite(t)&&(A=Math.max(0,Math.min(100,parseInt(t,10))),N(),m("subtitlesOffset"));break;case"subtitlesSize":null!==t&&isFinite(t)&&(o.sheet.cssRules[0].style.fontSize=Math.floor(Math.max(0,parseInt(t,10))/25)+"vmin",m("subtitlesSize"));break;case"subtitlesTextColor":if("string"==typeof t){try{o.sheet.cssRules[0].style.color=s(t).rgb().string()}catch(e){console.error("HTMLVideo",e)}m("subtitlesTextColor")}break;case"subtitlesBackgroundColor":if("string"==typeof t){try{o.sheet.cssRules[0].style.backgroundColor=s(t).rgb().string()}catch(e){console.error("HTMLVideo",e)}m("subtitlesBackgroundColor")}break;case"subtitlesOutlineColor":if("string"==typeof t){try{o.sheet.cssRules[0].style.textShadow=s(t).rgb().string()+" 1px 1px 0.1em"}catch(e){console.error("HTMLVideo",e)}m("subtitlesOutlineColor")}break;case"selectedAudioTrackId":if(null!==S){var n=O("audioTracks").find((function(e){return e.id===t}));S.audioTrack=n?parseInt(n.id.split("_").pop(),10):-1,n&&(m("selectedAudioTrackId"),u.emit("audioTrackLoaded",n))}break;case"volume":null!==t&&isFinite(t)&&(l.muted=!1,l.volume=Math.max(0,Math.min(100,parseInt(t,10)))/100,m("muted"),m("volume"));break;case"muted":l.muted=!!t,m("muted");break;case"playbackSpeed":null!==t&&isFinite(t)&&(l.playbackRate=parseFloat(t),m("playbackSpeed"))}})(e.propName,e.propValue);case"command":return void p(e.commandName,e.commandArgs)}var t;throw new Error("Invalid action dispatched: "+JSON.stringify(e))}}l.canPlayStream=function(e){return!e||e.behaviorHints&&e.behaviorHints.notWebReady?Promise.resolve(!1):_(e).then((function(e){return!!document.createElement("video").canPlayType(e)||"application/vnd.apple.mpegurl"===e&&n.isSupported()})).catch((function(){return!1}))},l.manifest={name:"HTMLVideo",external:!1,props:["stream","loaded","paused","time","duration","buffering","buffered","audioTracks","selectedAudioTrackId","subtitlesTracks","selectedSubtitlesTrackId","subtitlesOffset","subtitlesSize","subtitlesTextColor","subtitlesBackgroundColor","subtitlesOutlineColor","volume","muted","playbackSpeed"],commands:["load","unload","destroy"],events:["propValue","propChanged","ended","error","subtitlesTrackLoaded","audioTrackLoaded"]},e.exports=l},8973:e=>{e.exports=function(e){return e&&"string"==typeof e.url?e.behaviorHints&&e.behaviorHints.proxyHeaders&&e.behaviorHints.proxyHeaders.response&&"string"==typeof e.behaviorHints.proxyHeaders.response["content-type"]?Promise.resolve(e.behaviorHints.proxyHeaders.response["content-type"]):fetch(e.url,{method:"HEAD"}).then((function(e){if(e.ok)return e.headers.get("content-type");throw new Error(e.status+" ("+e.statusText+")")})):Promise.reject(new Error("Invalid stream parameter!"))}},1566:e=>{e.exports={debug:!1,enableWorker:!0,lowLatencyMode:!1,backBufferLength:30,maxBufferLength:50,maxMaxBufferLength:80,maxFragLookUpTolerance:0,maxBufferHole:0,appendErrorMaxRetry:20,nudgeMaxRetry:20,manifestLoadingTimeOut:3e4,manifestLoadingMaxRetry:10}},9222:(e,t,o)=>{var a=o(1431);e.exports=a},8879:(e,t,o)=>{var a=o(6729),n=o(3465),i=o(2682),r=o(9657);function s(e){var t=(e=e||{}).containerElement;if(!(t instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var o=document.createElement("iframe");o.style.width="100%",o.style.height="100%",o.style.border=0,o.style.backgroundColor="black",o.allowFullscreen=!1,o.allow="autoplay",t.appendChild(o);var s=new a,E=!1,_={stream:!1,loaded:!1,paused:!1,time:!1,duration:!1,buffering:!1,buffered:!1,volume:!1,muted:!1,playbackSpeed:!1};function T(e){if(e.source===o.contentWindow){var t=e.data||e.message;if(t&&"string"==typeof t.event){var a=t.event,n=Array.isArray(t.args)?t.args:[];s.emit.apply(s,[a].concat(n))}}}function l(e){o.contentWindow.postMessage(e,"*")}function S(e,t){_[e]&&s.emit("propChanged",e,t)}function u(e,a){switch(e){case"load":return u("unload"),a&&a.stream&&"string"==typeof a.stream.playerFrameUrl?(window.addEventListener("message",T,!1),o.onload=function(){l({type:"command",commandName:e,commandArgs:a})},o.src=a.stream.playerFrameUrl):(n=Object.assign({},r.UNSUPPORTED_STREAM,{critical:!0,stream:a?a.stream:null}),s.emit("error",n),n.critical&&u("unload")),!0;case"unload":return window.removeEventListener("message",T),o.onload=null,o.removeAttribute("src"),S("stream",null),S("loaded",null),S("paused",null),S("time",null),S("duration",null),S("buffering",null),S("buffered",null),S("volume",null),S("muted",null),S("playbackSpeed",null),!0;case"destroy":return u("unload"),E=!0,s.removeAllListeners(),t.removeChild(o),!0}var n}this.on=function(e,t){if(E)throw new Error("Video is destroyed");s.on(e,t)},this.dispatch=function(e){if(E)throw new Error("Video is destroyed");if(e)switch((e=i(n(e))).type){case"observeProp":return t=e.propName,_.hasOwnProperty(t)&&(_[t]=!0),void l(e);case"setProp":return void l(e);case"command":return void(u(e.commandName,e.commandArgs)||l(e))}var t;throw new Error("Invalid action dispatched: "+JSON.stringify(e))}}s.canPlayStream=function(e){return Promise.resolve(e&&"string"==typeof e.playerFrameUrl)},s.manifest={name:"IFrameVideo",external:!0,props:["stream","loaded","paused","time","duration","buffering","buffered","audioTracks","selectedAudioTrackId","subtitlesTracks","selectedSubtitlesTrackId","subtitlesOffset","subtitlesSize","subtitlesTextColor","subtitlesBackgroundColor","subtitlesOutlineColor","volume","muted","playbackSpeed","extraSubtitlesTracks","selectedExtraSubtitlesTrackId","extraSubtitlesDelay","extraSubtitlesSize","extraSubtitlesOffset","extraSubtitlesTextColor","extraSubtitlesBackgroundColor","extraSubtitlesOutlineColor"],commands:["load","unload","destroy","addExtraSubtitlesTracks"],events:["propValue","propChanged","ended","error","subtitlesTrackLoaded","audioTrackLoaded","extraSubtitlesTrackLoaded","implementationChanged"]},e.exports=s},7685:(e,t,o)=>{var a=o(8879);e.exports=a},8945:(e,t,o)=>{var a=o(6729),n=o(3465),i=o(2682),r=o(9657),s=.0066,E={stream:null,paused:"pause",time:"time-pos",duration:"duration",buffering:"buffering",volume:"volume",muted:"mute",playbackSpeed:"speed",audioTracks:"audioTracks",selectedAudioTrackId:"aid",subtitlesTracks:"subtitlesTracks",selectedSubtitlesTrackId:"sid",subtitlesSize:"sub-scale",subtitlesTextColor:"sub-color",subtitlesBackgroundColor:"sub-back-color",subtitlesOutlineColor:"sub-border-color"};function _(e){var t=(e=e||{}).shellTransport,o={};Object.keys(E).forEach((function(e){E[e]&&(o[E[e]]=e)})),t.send("mpv-command",["stop"]),t.send("mpv-observe-prop","path"),t.send("mpv-observe-prop","time-pos"),t.send("mpv-observe-prop","volume"),t.send("mpv-observe-prop","pause"),t.send("mpv-observe-prop","seeking"),t.send("mpv-observe-prop","eof-reached"),t.send("mpv-observe-prop","duration"),t.send("mpv-observe-prop","metadata"),t.send("mpv-observe-prop","video-params"),t.send("mpv-observe-prop","track-list"),t.send("mpv-observe-prop","paused-for-cache"),t.send("mpv-observe-prop","cache-buffering-state"),t.send("mpv-observe-prop","aid"),t.send("mpv-observe-prop","vid"),t.send("mpv-observe-prop","sid"),t.send("mpv-observe-prop","sub-scale"),t.send("mpv-observe-prop","sub-pos"),t.send("mpv-observe-prop","speed"),t.send("mpv-observe-prop","mpv-version"),t.send("mpv-observe-prop","ffmpeg-version");var _=new a,T=!1,l=null,S={},u=0,d=0,c={};function A(t){for(var o=t?"":"transparent",a=e.containerElement;a;a=a.parentElement)a.style.background=o}var I=0;function O(e){return E[e]?c[E[e]]:(console.log("Unsupported prop requested",e),null)}function N(e){_.emit("error",e),e.critical&&m("unload")}function R(e){S[e]&&_.emit("propChanged",e,O(e))}function m(o,a){switch(o){case"load":if(m("unload"),a&&a.stream&&"string"==typeof a.stream.url){l=a.stream,R("stream"),u=null!==a.time&&isFinite(a.time)?parseInt(a.time,10)/1e3:0,A(!1),t.send("mpv-set-prop",["no-sub-ass"]);var n="Win32"===navigator.platform?"direct3d":"opengl",i=e.mpvSeparateWindow?n:"opengl-cb",s=e.mpvSeparateWindow?"yes":"no";t.send("mpv-set-prop",["vo",i]),t.send("mpv-set-prop",["osc",s]),t.send("mpv-set-prop",["input-defalt-bindings",s]),t.send("mpv-set-prop",["input-vo-keyboard",s]),t.send("mpv-command",["loadfile",l.url]),t.send("mpv-set-prop",["pause",!1]),t.send("mpv-set-prop",["speed",c.speed]),t.send("mpv-set-prop",["aid",c.aid]),t.send("mpv-set-prop",["mute","no"]),R("paused"),R("time"),R("duration"),R("buffering"),R("volume"),R("muted"),R("subtitlesTracks"),R("selectedSubtitlesTrackId")}else N(Object.assign({},r.UNSUPPORTED_STREAM,{critical:!0,stream:a?a.stream:null}));break;case"unload":c={mute:!1,speed:1,subtitlesTracks:[],buffering:!0,aid:null,sid:null},u=0,d=0,t.send("mpv-command",["stop"]),R("stream"),R("paused"),R("time"),R("duration"),R("buffering"),R("volume"),R("muted"),R("subtitlesTracks"),R("selectedSubtitlesTrackId"),A(!0);break;case"destroy":m("unload"),T=!0,_.removeAllListeners()}}t.on("mpv-prop-change",(function(e){switch(e.name){case"mpv-version":case"ffmpeg-version":c[e.name]=(function(e){console.log(e.name+": "+e.data)})(e);break;case"duration":var a=0|e.data;c[e.name]=e.data>=30&&(!d||a===d)?Math.round(1e3*e.data):null,d=d?d+a>>1:a;break;case"time-pos":c[e.name]=Math.round(1e3*e.data),u&&(t.send("mpv-set-prop",["time-pos",u]),c[e.name]=Math.round(u),u=0);break;case"sub-scale":c[e.name]=Math.round(e.data/s);break;case"paused-for-cache":case"seeking":c.buffering!==e.data&&(c.buffering=e.data,R("buffering"));break;case"aid":case"sid":case"vid":c[e.name]=(function(e){return e.data?"EMBEDDED_"+e.data.toString():null})(e);break;case"track-list":c.audioTracks=e.data.filter((function(e){return"audio"===e.type})).map((function(e,t){return{id:"EMBEDDED_"+e.id,lang:void 0===e.lang?"Track"+(t+1):e.lang,label:void 0===e.title||void 0===e.lang?"":e.title||e.lang,origin:"EMBEDDED",embedded:!0,mode:e.id===c.aid?"showing":"disabled"}})),R("audioTracks"),c.subtitlesTracks=e.data.filter((function(e){return"sub"===e.type})).map((function(e,t){return{id:"EMBEDDED_"+e.id,lang:void 0===e.lang?"Track "+(t+1):e.lang,label:void 0===e.title||void 0===e.lang?"":e.title||e.lang,origin:"EMBEDDED",embedded:!0,mode:e.id===c.sid?"showing":"disabled"}})),R("subtitlesTracks");break;default:c[e.name]=e.data}var n="time-pos"===e.name?Math.floor(c["time-pos"]/1e3):null;n&&I===n||!o[e.name]||(n&&(I=n),R(o[e.name]))})),t.on("mpv-event-ended",(function(e){e.error?N(e.error):_.emit("ended")})),this.on=function(e,t){if(T)throw new Error("Video is destroyed");_.on(e,t)},this.dispatch=function(e){if(T)throw new Error("Video is destroyed");if(e)switch((e=i(n(e))).type){case"observeProp":o=e.propName,_.emit("propValue",o,O(o)),S[o]=!0;break;case"setProp":return void(function(e,o){switch(e){case"paused":null!==l&&t.send("mpv-set-prop",["pause",o]);break;case"time":null!==l&&null!==o&&isFinite(o)&&t.send("mpv-set-prop",["time-pos",o/1e3]);break;case"playbackSpeed":null!==l&&null!==o&&isFinite(o)&&t.send("mpv-set-prop",["speed",o]);break;case"volume":null!==l&&null!==o&&isFinite(o)&&(c.mute=!1,t.send("mpv-set-prop",["mute","no"]),t.send("mpv-set-prop",["volume",o]),R("muted"),R("volume"));break;case"muted":null!==l&&(t.send("mpv-set-prop",["mute",o?"yes":"no"]),c.mute=o,R("muted"));break;case"selectedAudioTrackId":if(null!==l){var a=o.slice("EMBEDDED_".length);t.send("mpv-set-prop",["aid",a])}break;case"selectedSubtitlesTrackId":null!==l&&(o?(a=o.slice("EMBEDDED_".length),t.send("mpv-set-prop",["sid",a]),_.emit("subtitlesTrackLoaded",o)):(t.send("mpv-set-prop",["sid","no"]),c.sid=null)),R("selectedSubtitlesTrackId");break;case"subtitlesSize":t.send("mpv-set-prop",[E[e],o*s]);break;case"subtitlesOffset":t.send("mpv-set-prop",[E[e],o]);break;case"subtitlesTextColor":case"subtitlesBackgroundColor":case"subtitlesOutlineColor":var n=o.replace(/^#(\w{6})(\w{2})$/,"#$2$1");t.send("mpv-set-prop",[E[e],n]);break;default:console.log("Unhandled setProp for",e)}})(e.propName,e.propValue);case"command":return void m(e.commandName,e.commandArgs)}var o}}_.canPlayStream=function(){return Promise.resolve(!0)},_.manifest={name:"ShellVideo",external:!1,props:Object.keys(E),commands:["load","unload","destroy"],events:["propValue","propChanged","ended","error","subtitlesTrackLoaded"]},e.exports=_},2024:(e,t,o)=>{var a=o(8945);e.exports=a},8117:(e,t,o)=>{var a=o(6729),n=o(3465),i=o(2682),r=o(2081),s=o(9657);function E(){var e=null,t=new a,o=!1;this.on=function(e,a){if(o)throw new Error("Video is destroyed");t.on(e,a)},this.dispatch=function(a,E){if(o)throw new Error("Video is destroyed");if(!a)throw new Error("Invalid action dispatched: "+JSON.stringify(a));if(E=E||{},"command"===(a=i(n(a))).type&&"load"===a.commandName&&a.commandArgs){var _=r(a.commandArgs,E);if(null!==e&&e.constructor!==_&&(e.dispatch({type:"command",commandName:"destroy"}),e=null),null===e){if(null===_)return void t.emit("error",Object.assign({},s.UNSUPPORTED_STREAM,{error:new Error("No video implementation was selected"),critical:!0,stream:a.commandArgs.stream}));(e=new _(E)).on("ended",(function(){t.emit("ended")})),e.on("error",(function(e){t.emit("error",e)})),e.on("propValue",(function(e,o){t.emit("propValue",e,o)})),e.on("propChanged",(function(e,o){t.emit("propChanged",e,o)})),e.on("subtitlesTrackLoaded",(function(e){t.emit("subtitlesTrackLoaded",e)})),e.on("audioTrackLoaded",(function(e){t.emit("audioTrackLoaded",e)})),e.on("extraSubtitlesTrackLoaded",(function(e){t.emit("extraSubtitlesTrackLoaded",e)})),_.manifest.external?e.on("implementationChanged",(function(e){t.emit("implementationChanged",e)})):t.emit("implementationChanged",_.manifest)}}if(null!==e)try{e.dispatch(a)}catch(t){console.error(e.constructor.manifest.name,t)}"command"===a.type&&"destroy"===a.commandName&&(e=null)},this.destroy=function(){o=!0,null!==e&&(e.dispatch({type:"command",commandName:"destroy"}),e=null),t.removeAllListeners()}}E.ERROR=s,e.exports=E},5010:(e,t,o)=>{var a=o(8117);e.exports=a},2081:(e,t,o)=>{var a=o(3153),n=o(2024),i=o(9222),r=o(5682),s=o(8846),E=o(7685),_=o(3142),T=o(5690),l=o(4282);e.exports=function(e,t){return e.stream&&"string"!=typeof e.stream.externalUrl?t.chromecastTransport&&t.chromecastTransport.getCastState()===cast.framework.CastState.CONNECTED?a:"string"==typeof e.stream.ytId?l(_):"string"==typeof e.stream.playerFrameUrl?E:t.shellTransport?T(l(n)):"string"==typeof e.streamingServerURL?void 0!==o.g.tizen?T(l(r)):void 0!==o.g.webOS?T(l(s)):T(l(i)):"string"==typeof e.stream.url?void 0!==o.g.webOS?l(s):void 0!==o.g.tizen?l(r):l(i):null:null}},5071:(e,t,o)=>{var a=o(6729),n=o(3465),i=o(2682),r=o(6767),s=o(9657);function E(e){var t=!0,o=1,E=null,_=null,T=(e=e||{}).containerElement;if(!(T instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var l,S=!1,u=100,d=0,c="rgb(255, 255, 255)",A="rgba(0, 0, 0, 0)",I="rgb(34, 34, 34)",O=document.createElement("object");O.type="application/avplayer",O.style.width="100%",O.style.height="100%",O.style.backgroundColor="black";var N=!1;function R(){if(l){var e=l.duration-(v("time")-l.now);e>0&&m(e,l.text)}}function m(e,t){if(!N){for(l={duration:e,text:t,now:v("time")},p&&(clearTimeout(p),p=!1);L.hasChildNodes();)L.removeChild(L.lastChild);L.style.bottom=d+"%";var a=document.createElement("span");a.innerHTML=t,a.style.display="inline-block",a.style.padding="0.2em",a.style.fontSize=Math.floor(u/25)+"vmin",a.style.color=c,a.style.backgroundColor=A,a.style.textShadow="1px 1px 0.1em "+I,L.appendChild(a),L.appendChild(document.createElement("br")),e&&(p=setTimeout((function(){for(;L.hasChildNodes();)L.removeChild(L.lastChild)}),parseInt(e*o)))}}var p=!1,h={onbufferingstart:function(){t=!0,y("buffering")},onbufferingprogress:function(){t=!0,y("buffering")},onbufferingcomplete:function(){t=!1,y("buffering")},oncurrentplaytime:function(){y("time")},onerror:function(){!(function(){if(C)return;var e;e=s.UNKNOWN_ERROR,P(Object.assign({},e,{critical:!0,error:e}))})()},onsubtitlechange:function(e,t){m(e,t)},onstreamcompleted:function(){f.emit("ended")}};window.webapis.avplay.setListener(h),T.appendChild(O);var L=document.createElement("div");L.style.position="absolute",L.style.right="0",L.style.bottom="0",L.style.left="0",L.style.zIndex="1",L.style.textAlign="center",T.style.position="relative",T.style.zIndex="0",T.appendChild(L);var f=new a,C=!1,D=null,g={stream:!1,paused:!1,time:!1,duration:!1,buffering:!1,subtitlesTracks:!1,selectedSubtitlesTrackId:!1,subtitlesOffset:!1,subtitlesSize:!1,subtitlesTextColor:!1,subtitlesBackgroundColor:!1,subtitlesOutlineColor:!1,audioTracks:!1,selectedAudioTrackId:!1,playbackSpeed:!1};function v(e){switch(e){case"stream":return D;case"paused":if(null===D)return null;var a=!("PAUSED"!==window.webapis.avplay.getState());return!a&&S&&(window.webapis.avplay.setSelectTrack("AUDIO",parseInt(S.replace("EMBEDDED_",""))),S=!1),a;case"time":var n=window.webapis.avplay.getCurrentTime();return null!==D&&null!==n&&isFinite(n)?Math.floor(n):null;case"duration":var i=window.webapis.avplay.getDuration();return null!==D&&null!==i&&isFinite(i)?Math.floor(i):null;case"buffering":return null===D?null:t;case"subtitlesTracks":if(null===D)return[];for(var r=window.webapis.avplay.getTotalTrackInfo(),s=[],T=0;T<r.length;T++)if("TEXT"===r[T].type){var l=r[T],O="EMBEDDED_"+String(l.index);E||s.length||(E=O);var R={};try{R=JSON.parse(l.extra_info)}catch(e){}var m=(R.track_lang||"").trim();s.push({id:O,lang:m,label:m,origin:"EMBEDDED",embedded:!0,mode:N||O!==E?"disabled":"showing"})}return s;case"selectedSubtitlesTrackId":if(null===D||N)return null;var p=window.webapis.avplay.getCurrentStreamInfo();for(T=0;T<p.length;T++)if("TEXT"===p[T].type){v=p[T].index;break}return v?"EMBEDDED_"+String(v):null;case"subtitlesOffset":return C?null:d;case"subtitlesSize":return C?null:u;case"subtitlesTextColor":return C?null:c;case"subtitlesBackgroundColor":return C?null:A;case"subtitlesOutlineColor":return C?null:I;case"audioTracks":if(null===D)return[];r=window.webapis.avplay.getTotalTrackInfo();var h=[];for(T=0;T<r.length;T++)if("AUDIO"===r[T].type){var L=r[T],f="EMBEDDED_"+String(L.index);_||h.length||(_=f);R={};try{R=JSON.parse(L.extra_info)}catch(e){}var g=R.language||"";h.push({id:f,lang:g,label:g,origin:"EMBEDDED",embedded:!0,mode:f===_?"showing":"disabled"})}return h;case"selectedAudioTrackId":if(null===D)return null;if(S)return S;p=window.webapis.avplay.getCurrentStreamInfo();var v=!1;for(T=0;T<p.length;T++)if("AUDIO"===p[T].type){v=p[T].index;break}return!1!==v?"EMBEDDED_"+String(v):null;case"playbackSpeed":return C||null===o||!isFinite(o)?null:o;default:return null}}function P(e){f.emit("error",e),e.critical&&B("unload")}function y(e){g[e]&&f.emit("propChanged",e,v(e))}function B(e,t){switch(e){case"load":if(t&&t.stream&&"string"==typeof t.stream.url){if((D=t.stream)!==t.stream)return;y("buffering"),window.webapis.avplay.open(D.url),window.webapis.avplay.setDisplayRect(0,0,window.innerWidth,window.innerHeight),window.webapis.avplay.setDisplayMethod("PLAYER_DISPLAY_MODE_LETTER_BOX"),window.webapis.avplay.seekTo(null!==t.time&&isFinite(t.time)?parseInt(t.time,10):0),window.webapis.avplay.prepare(),y("duration"),window.webapis.avplay.play(),y("stream"),y("paused"),y("time"),y("duration"),y("subtitlesTracks"),y("selectedSubtitlesTrackId"),y("audioTracks"),y("selectedAudioTrackId")}else P(Object.assign({},s.UNSUPPORTED_STREAM,{critical:!0,stream:t?t.stream:null}));break;case"unload":D=null,window.webapis.avplay.stop(),y("stream"),y("paused"),y("time"),y("duration"),y("buffering"),y("subtitlesTracks"),y("selectedSubtitlesTrackId"),y("audioTracks"),y("selectedAudioTrackId");break;case"destroy":B("unload"),C=!0,y("subtitlesOffset"),y("subtitlesSize"),y("subtitlesTextColor"),y("subtitlesBackgroundColor"),y("subtitlesOutlineColor"),y("playbackSpeed"),f.removeAllListeners(),T.removeChild(O)}}this.on=function(e,t){if(C)throw new Error("Video is destroyed");f.on(e,t)},this.dispatch=function(e){if(C)throw new Error("Video is destroyed");if(e)switch((e=i(n(e))).type){case"observeProp":return t=e.propName,void(g.hasOwnProperty(t)&&(f.emit("propValue",t,v(t)),g[t]=!0));case"setProp":return void(function(e,t){switch(e){case"paused":if(null!==D){var a=!!t;a?window.webapis.avplay.pause():window.webapis.avplay.play(),a?p&&clearTimeout(p):R()}y("paused");var n=v("paused");setTimeout((function(){v("paused")!==n&&y("paused")}),1e3);break;case"time":null!==D&&null!==t&&isFinite(t)&&(window.webapis.avplay.seekTo(parseInt(t,10)),m(1,""));break;case"selectedSubtitlesTrackId":if(null!==D)if(0===(E||"").indexOf("EMBEDDED_")){if(-1===(t||"").indexOf("EMBEDDED_"))return m(1,""),N=!0,void y("selectedSubtitlesTrackId");N=!1,E=t;var i=v("subtitlesTracks").find((function(e){return e.id===t}));window.webapis.avplay.setSelectTrack("TEXT",parseInt(E.replace("EMBEDDED_",""))),i&&(f.emit("subtitlesTrackLoaded",i),y("selectedSubtitlesTrackId"))}else t||(m(1,""),N=!0,y("selectedSubtitlesTrackId"));break;case"subtitlesOffset":null!==t&&isFinite(t)&&(d=Math.max(0,Math.min(100,parseInt(t,10))),R(),y("subtitlesOffset"));break;case"subtitlesSize":null!==t&&isFinite(t)&&(u=Math.max(0,parseInt(t,10)),R(),y("subtitlesSize"));break;case"subtitlesTextColor":if("string"==typeof t){try{c=r(t).rgb().string()}catch(e){console.error("Tizen player with HTML Subtitles",e)}R(),y("subtitlesTextColor")}break;case"subtitlesBackgroundColor":if("string"==typeof t){try{A=r(t).rgb().string()}catch(e){console.error("Tizen player with HTML Subtitles",e)}R(),y("subtitlesBackgroundColor")}break;case"subtitlesOutlineColor":if("string"==typeof t){try{I=r(t).rgb().string()}catch(e){console.error("Tizen player with HTML Subtitles",e)}R(),y("subtitlesOutlineColor")}break;case"selectedAudioTrackId":if(null!==D){_=t;var s=v("audioTracks").find((function(e){return e.id===t}));v("paused")?(S=t,y("selectedAudioTrackId")):window.webapis.avplay.setSelectTrack("AUDIO",parseInt(_.replace("EMBEDDED_",""))),s&&(f.emit("audioTrackLoaded",s),y("selectedAudioTrackId"))}break;case"playbackSpeed":if(null!==t&&isFinite(t)){o=parseFloat(t);try{window.webapis.avplay.setSpeed(o)}catch(e){}y("playbackSpeed")}}})(e.propName,e.propValue);case"command":return void B(e.commandName,e.commandArgs)}var t;throw new Error("Invalid action dispatched: "+JSON.stringify(e))}}E.canPlayStream=function(){return Promise.resolve(!0)},E.manifest={name:"TizenVideo",external:!1,props:["stream","paused","time","duration","buffering","audioTracks","selectedAudioTrackId","subtitlesTracks","selectedSubtitlesTrackId","subtitlesOffset","subtitlesSize","subtitlesTextColor","subtitlesBackgroundColor","subtitlesOutlineColor","playbackSpeed"],commands:["load","unload","destroy"],events:["propValue","propChanged","ended","error","subtitlesTrackLoaded","audioTrackLoaded"]},e.exports=E},5682:(e,t,o)=>{var a=o(5071);e.exports=a},4333:(e,t,o)=>{var a=o(6729),n=o(3465),i=o(2682),r=o(9657);function s(e,t,o,a){t&&(e.onSuccess=t||function(){}),e.onFailure=function(){o&&o()},window.webOS.service.request(a||"luna://com.webos.media",e)}function E(e,t){window.webOS.service.request("luna://com.webos.applicationManager",{method:"launch",parameters:{id:e.need,params:{payload:[{fullPath:e.url,artist:"",subtitle:"",dlnaInfo:{flagVal:4096,cleartextSize:"-1",contentLength:"-1",opVal:1,protocolInfo:"http-get:*:video/x-matroska:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000",duration:0},mediaType:"VIDEO",thumbnail:"",deviceType:"DMR",album:"",fileName:e.name,lastPlayPosition:e.position}]}},onSuccess:function(){},onFailure:function(){"com.webos.app.photovideo"===e.need?(e.need="com.webos.app.smartshare",E(e)):"com.webos.app.smartshare"===e.need?(e.need="com.webos.app.mediadiscovery",E(e)):"com.webos.app.mediadiscovery"===e.need&&t()}})}var _=["black","white","yellow","red","green","blue"],T={"rgba(0, 0, 0, 255)":"black","rgba(255, 255, 255, 255)":"white","rgba(255, 255, 0, 255)":"yellow","rgba(255, 0, 0, 255)":"red","rgba(0, 255, 0, 255)":"green","rgba(0, 0, 255, 255)":"blue","rgba(0, 0, 0, 1)":"black","rgba(255, 255, 255, 1)":"white","rgba(255, 255, 0, 1)":"yellow","rgba(255, 0, 0, 1)":"red","rgba(0, 255, 0, 1)":"green","rgba(0, 0, 255, 1)":"blue","rgba(0, 0, 0)":"black","rgba(255, 255, 255)":"white","rgba(255, 255, 0)":"yellow","rgba(255, 0, 0)":"red","rgba(0, 255, 0)":"green","rgba(0, 0, 255)":"blue","#000000FF":"black","#FFFFFFFF":"white","#FFFF00FF":"yellow","#FF0000FF":"red","#00FF00FF":"green","#0000FFFF":"blue","#000000":"black","#FFFFFF":"white","#FFFF00":"yellow","#FF0000":"red","#00FF00":"green","#0000FF":"blue"};function l(e){var t=(e=e||{}).containerElement;if(!(t instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var o=!1,l=75,S=!0,u=!1,d=!1,c=!1,A=[],I=[],O=0,N=function(e){if(!u){u=!0;var t=!1;s({method:"subscribe",parameters:{mediaId:o,subscribe:!0}},(function(a){if(a.sourceInfo&&!t){t=!0;var n=a.sourceInfo.programInfo[0];!(function(e){if(A=[],e.numSubtitleTracks){for(var t=0;t<e.subtitleTrackInfo.length;t++){var o=e.subtitleTrackInfo[t];o.index=t;var a="(null)"===o.language?"":o.language,n="EMBEDDED_"+o.index;d||A.length||(d=n),A.push({id:n,lang:a,label:a,origin:"EMBEDDED",embedded:!0,mode:n===d?"showing":"disabled"})}G("subtitlesTracks"),G("selectedSubtitlesTrackId")}})(n),(function(e){if(I=[],e.numAudioTracks){for(var t=0;t<e.audioTrackInfo.length;t++){var o=e.audioTrackInfo[t];o.index=t;var a="EMBEDDED_"+o.index;c||I.length||(c=a);var n="(null)"===o.language?"":o.language;I.push({id:a,lang:n,label:n,origin:"EMBEDDED",embedded:!0,mode:a===c?"showing":"disabled"})}G("audioTracks"),G("selectedAudioTrackId")}})(n),R(e)}if((a.error||{}).errorCode)return t=!0,void R(e);(a.unloadCompleted||{}).mediaId===o&&(a.unloadCompleted||{}).state||30!==++O||t||R(e)}),(function(){}))}},R=function(e){u&&(u=!1,s({method:"unsubscribe",parameters:{mediaId:o}},(function(){e()}),(function(){e()})),e())},m=function(e){o&&(S=!e,s({method:"setSubtitleEnable",parameters:{mediaId:o,enable:e}}))},p=document.createElement("style");t.appendChild(p),p.sheet.insertRule("video::cue { font-size: 4vmin; color: rgb(255, 255, 255); background-color: rgba(0, 0, 0, 0); text-shadow: rgb(34, 34, 34) 1px 1px 0.1em; }");var h=document.createElement("video");h.style.width="100%",h.style.height="100%",h.style.backgroundColor="black",h.controls=!1,h.onerror=function(){!(function(){if(v)return;var e;switch((h.error||{}).code){case 1:e=r.HTML_VIDEO.MEDIA_ERR_ABORTED;break;case 2:e=r.HTML_VIDEO.MEDIA_ERR_NETWORK;break;case 3:e=r.HTML_VIDEO.MEDIA_ERR_DECODE,E({need:"com.webos.app.photovideo",url:P.url,name:"Stremio",position:-1});break;case 4:e=r.HTML_VIDEO.MEDIA_ERR_SRC_NOT_SUPPORTED,E({need:"com.webos.app.photovideo",url:P.url,name:"Stremio",position:-1});break;default:e=r.UNKNOWN_ERROR}W(Object.assign({},e,{critical:!0,error:h.error}))})()},h.onended=function(){g.emit("ended")},h.onpause=function(){G("paused")},h.onplay=function(){G("paused")},h.ontimeupdate=function(){G("time"),G("buffered")},h.ondurationchange=function(){G("duration")},h.onwaiting=function(){G("buffering"),G("buffered")},h.onseeking=function(){G("buffering"),G("buffered")},h.onseeked=function(){G("buffering"),G("buffered")},h.onstalled=function(){G("buffering"),G("buffered")},h.onplaying=function(){G("buffering"),G("buffered")},h.oncanplay=function(){G("buffering"),G("buffered")},h.canplaythrough=function(){G("buffering"),G("buffered")},h.onloadeddata=function(){G("buffering"),G("buffered")},h.onloadedmetadata=function(){G("buffering"),G("buffered"),F("time",y)},h.onvolumechange=function(){G("volume"),G("muted")},h.onratechange=function(){G("playbackSpeed")},h.textTracks.onchange=function(){G("subtitlesTracks"),G("selectedSubtitlesTrackId"),U(),Array.from(h.textTracks).forEach((function(e){e.oncuechange=U}))},t.appendChild(h);var L=null,f=null,C=0,D=1,g=new a,v=!1,P=null,y=null,B=0,b={stream:!1,paused:!1,time:!1,duration:!1,buffering:!1,buffered:!1,subtitlesTracks:!1,selectedSubtitlesTrackId:!1,subtitlesOffset:!1,subtitlesSize:!1,subtitlesTextColor:!1,subtitlesBackgroundColor:!1,audioTracks:!1,selectedAudioTrackId:!1,volume:!1,muted:!1,playbackSpeed:!1};function M(e){switch(e){case"stream":return P;case"paused":return null===P?null:!!h.paused;case"time":return null!==P&&null!==h.currentTime&&isFinite(h.currentTime)?Math.floor(1e3*h.currentTime):null;case"duration":return null!==P&&null!==h.duration&&isFinite(h.duration)?Math.floor(1e3*h.duration):null;case"buffering":return null===P?null:h.readyState<h.HAVE_FUTURE_DATA;case"buffered":if(null===P)return null;for(var t=null!==h.currentTime&&isFinite(h.currentTime)?h.currentTime:0,o=0;o<h.buffered.length;o++)if(h.buffered.start(o)<=t&&t<=h.buffered.end(o))return Math.floor(1e3*h.buffered.end(o));return Math.floor(1e3*t);case"subtitlesTracks":return null===P?[]:A;case"selectedSubtitlesTrackId":return null===P||S?null:d;case"subtitlesOffset":return v?null:B;case"subtitlesSize":return v?null:l;case"subtitlesTextColor":return v?null:L||"rgba(255, 255, 255, 255)";case"subtitlesBackgroundColor":return v?null:f||"rgba(255, 255, 255, 0)";case"audioTracks":return I;case"selectedAudioTrackId":return c;case"volume":return v||null===h.volume||!isFinite(h.volume)?null:Math.floor(100*h.volume);case"muted":return v?null:!!h.muted;case"playbackSpeed":return v||null===D||!isFinite(D)?null:D;default:return null}}function U(){Array.from(h.textTracks).forEach((function(e){Array.from(e.cues||[]).forEach((function(e){e.snapToLines=!1,e.line=100-B}))}))}function W(e){g.emit("error",e),e.critical&&k("unload")}function G(e){b[e]&&g.emit("propChanged",e,M(e))}function F(e,t){switch(e){case"paused":null!==P&&(t?h.pause():h.play());break;case"time":if(null!==P&&h.readyState>=h.HAVE_METADATA&&null!==t&&isFinite(t))try{h.currentTime=parseInt(t,10)/1e3}catch(e){}break;case"selectedSubtitlesTrackId":if(null!==P)if(0===(t||"").indexOf("EMBEDDED_")){S&&m(!0),d=t;var a=parseInt(t.replace("EMBEDDED_",""));s({method:"selectTrack",parameters:{type:"text",mediaId:o,index:a}},(function(){var e=M("subtitlesTracks").find((function(e){return e.id===t}));A=A.map((function(e){return e.mode=e.id===d?"showing":"disabled",e})),e&&(g.emit("subtitlesTrackLoaded",e),G("selectedSubtitlesTrackId"))}))}else t||m(!1);break;case"subtitlesOffset":if(null!==t&&isFinite(t)){B=Math.max(0,Math.min(100,parseInt(t,10)));var n=0===(O=5)?-3:O<=2?-2:O<=3?-1:O<=5?0:O<=10?1:O<=25?2:O<=50?3:O<=100&&4;!1===n&&(n=0),s({method:"setSubtitlePosition",parameters:{mediaId:o,position:n}},(function(){})),G("subtitlesOffset")}break;case"subtitlesSize":if(null!==t&&isFinite(t)){l=Math.max(0,parseInt(t,10));var i=(u=l)<=75?1:u<=100?2:u<=150?3:u<=250&&4;!1===i&&(i=2),s({method:"setSubtitleFontSize",parameters:{mediaId:o,fontSize:i}},(function(){})),G("subtitlesSize")}break;case"subtitlesTextColor":if("string"==typeof t){var r="white";T[t]&&_.indexOf(T[t])>-1&&(r=T[t]),s({method:"setSubtitleCharacterColor",parameters:{mediaId:o,charColor:r}},(function(){})),L=t,G("subtitlesTextColor")}break;case"subtitlesBackgroundColor":"string"==typeof t&&(T[t]&&_.indexOf(T[t])>-1?s({method:"setSubtitleBackgroundColor",parameters:{mediaId:o,color:T[t]}},(function(){C||s({method:"setSubtitleBackgroundOpacity",parameters:{mediaId:o,bgOpacity:255}},(function(){C=255}))})):s({method:"setSubtitleBackgroundOpacity",parameters:{mediaId:o,bgOpacity:0}},(function(){C=0})),f=t,G("subtitlesBackgroundColor"));break;case"selectedAudioTrackId":if(0===(t||"").indexOf("EMBEDDED_")){c=t;a=parseInt(t.replace("EMBEDDED_",""));if(s({method:"selectTrack",parameters:{type:"audio",mediaId:o,index:a}},(function(){var e=M("audioTracks").find((function(e){return e.id===t}));I=I.map((function(e){return e.mode=e.id===c?"showing":"disabled",e})),e&&(g.emit("audioTrackLoaded",e),G("selectedAudioTrackId"))})),h.audioTracks){for(var E=0;E<h.audioTracks.length;E++)h.audioTracks[E].enabled=!1;h.audioTracks[a]&&(h.audioTracks[a].enabled=!0)}}break;case"volume":null!==t&&isFinite(t)&&(h.muted=!1,h.volume=Math.max(0,Math.min(100,parseInt(t,10)))/100);break;case"muted":h.muted=!!t;break;case"playbackSpeed":null!==t&&isFinite(t)&&(D=parseFloat(t),s({method:"setPlayRate",parameters:{mediaId:o,playRate:D,audioOutput:!0}},(function(){}),(function(){})),G("playbackSpeed"))}var u,O}function k(e,a){switch(e){case"load":if(a&&a.stream&&"string"==typeof a.stream.url){P=a.stream,y=a.time,G("stream"),h.autoplay="boolean"!=typeof a.autoplay||a.autoplay,G("paused"),G("time"),G("duration"),G("buffering"),G("buffered"),G("subtitlesTracks"),G("selectedSubtitlesTrackId"),G("audioTracks"),G("selectedAudioTrackId");var n=0;h.src=P.url,i=function(){try{h.load()}catch(e){}try{h.play()}catch(e){}},s=setInterval((function(){if(h.mediaId)return o=h.mediaId,clearInterval(s),void N(i);++n>4&&(clearInterval(s),i())}),300)}else W(Object.assign({},r.UNSUPPORTED_STREAM,{critical:!0,stream:a?a.stream:null}));break;case"unload":P=null,y=null,Array.from(h.textTracks).forEach((function(e){e.oncuechange=null})),h.removeAttribute("src"),h.load(),G("stream"),G("paused"),G("time"),G("duration"),G("buffering"),G("buffered"),G("subtitlesTracks"),G("selectedSubtitlesTrackId"),G("audioTracks"),G("selectedAudioTrackId");break;case"destroy":k("unload"),v=!0,G("subtitlesOffset"),G("subtitlesSize"),G("subtitlesTextColor"),G("subtitlesBackgroundColor"),G("volume"),G("muted"),G("playbackSpeed"),g.removeAllListeners(),h.onerror=null,h.onended=null,h.onpause=null,h.onplay=null,h.ontimeupdate=null,h.ondurationchange=null,h.onwaiting=null,h.onseeking=null,h.onseeked=null,h.onstalled=null,h.onplaying=null,h.oncanplay=null,h.canplaythrough=null,h.onloadeddata=null,h.onloadedmetadata=null,h.onvolumechange=null,h.onratechange=null,h.textTracks.onchange=null,t.removeChild(h),t.removeChild(p)}var i,s}this.on=function(e,t){if(v)throw new Error("Video is destroyed");g.on(e,t)},this.dispatch=function(e){if(v)throw new Error("Video is destroyed");if(e)switch((e=i(n(e))).type){case"observeProp":return t=e.propName,void(b.hasOwnProperty(t)&&(g.emit("propValue",t,M(t)),b[t]=!0));case"setProp":return void F(e.propName,e.propValue);case"command":return void k(e.commandName,e.commandArgs)}var t;throw new Error("Invalid action dispatched: "+JSON.stringify(e))}}l.canPlayStream=function(){return Promise.resolve(!0)},l.manifest={name:"WebOsVideo",external:!1,props:["stream","paused","time","duration","buffering","buffered","audioTracks","selectedAudioTrackId","subtitlesTracks","selectedSubtitlesTrackId","subtitlesOffset","subtitlesSize","subtitlesTextColor","subtitlesBackgroundColor","volume","muted","playbackSpeed"],commands:["load","unload","destroy"],events:["propValue","propChanged","ended","error","subtitlesTrackLoaded","audioTrackLoaded"]},e.exports=l},8846:(e,t,o)=>{var a=o(4333);e.exports=a},9736:(e,t,o)=>{var a=o(6729),n=o(3465),i=o(2682),r=o(9657);function s(e){var t=null!==(e=e||{}).timeChangedTimeout&&isFinite(e.timeChangedTimeout)?parseInt(e.timeChangedTimeout,10):100,o=e.containerElement;if(!(o instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var s=document.createElement("script");s.type="text/javascript",s.src="https://www.youtube.com/iframe_api",s.onload=function(){if(d)return;if(!YT||"function"!=typeof YT.ready)return void O();YT.ready((function(){d||(YT&&YT.PlayerState&&"function"==typeof YT.Player?T=new YT.Player(E,{width:"100%",height:"100%",playerVars:{autoplay:1,cc_load_policy:3,controls:0,disablekb:1,enablejsapi:1,fs:0,iv_load_policy:3,loop:0,modestbranding:1,playsinline:1,rel:0},events:{onError:N,onReady:R,onApiChange:m,onStateChange:p}}):O())}))},s.onerror=O,o.appendChild(s);var E=document.createElement("div");E.style.width="100%",E.style.height="100%",E.style.backgroundColor="black",o.appendChild(E);var _=window.setInterval((function(){f("time"),f("volume"),f("muted")}),t),T=null,l=!1,S=null,u=new a,d=!1,c=null,A=null,I={stream:!1,loaded:!1,paused:!1,time:!1,duration:!1,buffering:!1,volume:!1,muted:!1,subtitlesTracks:!1,selectedSubtitlesTrackId:!1};function O(){d||L(Object.assign({},r.YOUTUBE_VIDEO.API_LOAD_FAILED,{critical:!0}))}function N(e){if(!d){var t;switch(e.data){case 2:t=r.YOUTUBE_VIDEO.INVALID_PARAMETER;break;case 5:t=r.YOUTUBE_VIDEO.HTML5_VIDEO;break;case 100:t=r.YOUTUBE_VIDEO.VIDEO_NOT_FOUND;break;case 101:case 150:t=r.YOUTUBE_VIDEO.VIDEO_NOT_EMBEDDABLE;break;default:t=r.UNKNOWN_ERROR}L(Object.assign({},t,{critical:!0,error:e}))}}function R(){d||(l=!0,null!==S&&(C("load",S),S=null))}function m(){d||("function"==typeof T.loadModule&&T.loadModule("captions"),"function"==typeof T.setOption&&T.setOption("captions","track",{}),f("paused"),f("time"),f("duration"),f("buffering"),f("volume"),f("muted"),f("subtitlesTracks"),f("selectedSubtitlesTrackId"))}function p(e){switch(f("buffering"),e.data){case YT.PlayerState.ENDED:u.emit("ended");break;case YT.PlayerState.CUED:case YT.PlayerState.UNSTARTED:case YT.PlayerState.PAUSED:case YT.PlayerState.PLAYING:f("paused"),f("time"),f("duration")}}function h(e){switch(e){case"stream":return c;case"loaded":return null!==c||null;case"paused":return null===c||"function"!=typeof T.getPlayerState?null:T.getPlayerState()!==YT.PlayerState.PLAYING;case"time":return null!==c&&"function"==typeof T.getCurrentTime&&null!==T.getCurrentTime()&&isFinite(T.getCurrentTime())?Math.floor(1e3*T.getCurrentTime()):null;case"duration":return null!==c&&"function"==typeof T.getDuration&&null!==T.getDuration()&&isFinite(T.getDuration())?Math.floor(1e3*T.getDuration()):null;case"buffering":return null===c||"function"!=typeof T.getPlayerState?null:T.getPlayerState()===YT.PlayerState.BUFFERING;case"volume":return null!==c&&"function"==typeof T.getVolume&&null!==T.getVolume()&&isFinite(T.getVolume())?T.getVolume():null;case"muted":return null===c||"function"!=typeof T.isMuted?null:T.isMuted();case"subtitlesTracks":return null===c||"function"!=typeof T.getOption?[]:(T.getOption("captions","tracklist")||[]).filter((function(e){return e&&"string"==typeof e.languageCode})).map((function(e,t){return Object.freeze({id:"EMBEDDED_"+String(t),lang:e.languageCode,label:"string"==typeof e.displayName?e.displayName:e.languageCode,origin:"EMBEDDED",embedded:!0})}));case"selectedSubtitlesTrackId":return null===c?null:A;default:return null}}function L(e){u.emit("error",e),e.critical&&C("unload")}function f(e){I[e]&&u.emit("propChanged",e,h(e))}function C(e,t){switch(e){case"load":if(C("unload"),t&&t.stream&&"string"==typeof t.stream.ytId)if(l){c=t.stream,f("stream"),f("loaded");var a="boolean"!=typeof t.autoplay||t.autoplay,n=null!==t.time&&isFinite(t.time)?parseInt(t.time,10)/1e3:0;a&&"function"==typeof T.loadVideoById?T.loadVideoById({videoId:t.stream.ytId,startSeconds:n}):"function"==typeof T.cueVideoById&&T.cueVideoById({videoId:t.stream.ytId,startSeconds:n}),f("paused"),f("time"),f("duration"),f("buffering"),f("volume"),f("muted"),f("subtitlesTracks"),f("selectedSubtitlesTrackId")}else S=t;else L(Object.assign({},r.UNSUPPORTED_STREAM,{critical:!0,stream:t?t.stream:null}));break;case"unload":S=null,c=null,f("stream"),f("loaded"),A=null,l&&"function"==typeof T.stopVideo&&T.stopVideo(),f("paused"),f("time"),f("duration"),f("buffering"),f("volume"),f("muted"),f("subtitlesTracks"),f("selectedSubtitlesTrackId");break;case"destroy":C("unload"),d=!0,u.removeAllListeners(),clearInterval(_),l&&"function"==typeof T.destroy&&T.destroy(),o.removeChild(s),o.removeChild(E)}}this.on=function(e,t){if(d)throw new Error("Video is destroyed");u.on(e,t)},this.dispatch=function(e){if(d)throw new Error("Video is destroyed");if(e)switch((e=i(n(e))).type){case"observeProp":return t=e.propName,void(I.hasOwnProperty(t)&&(u.emit("propValue",t,h(t)),I[t]=!0));case"setProp":return void(function(e,t){switch(e){case"paused":null!==c&&(t?"function"==typeof T.pauseVideo&&T.pauseVideo():"function"==typeof T.playVideo&&T.playVideo());break;case"time":null!==c&&"function"==typeof T.seekTo&&null!==t&&isFinite(t)&&T.seekTo(parseInt(t,10)/1e3);break;case"volume":null!==c&&null!==t&&isFinite(t)&&("function"==typeof T.unMute&&T.unMute(),"function"==typeof T.setVolume&&T.setVolume(Math.max(0,Math.min(100,parseInt(t,10)))),f("muted"),f("volume"));break;case"muted":null!==c&&(t?"function"==typeof T.mute&&T.mute():"function"==typeof T.unMute&&T.unMute(),f("muted"));break;case"selectedSubtitlesTrackId":if(null!==c){A=null;var o=h("subtitlesTracks").find((function(e){return e.id===t}));"function"==typeof T.setOption&&(o?(A=o.id,T.setOption("captions","track",{languageCode:o.lang}),u.emit("subtitlesTrackLoaded",o)):T.setOption("captions","track",{})),f("selectedSubtitlesTrackId")}}})(e.propName,e.propValue);case"command":return void C(e.commandName,e.commandArgs)}var t;throw new Error("Invalid action dispatched: "+JSON.stringify(e))}}s.canPlayStream=function(e){return Promise.resolve(e&&"string"==typeof e.ytId)},s.manifest={name:"YouTubeVideo",external:!1,props:["stream","loaded","paused","time","duration","buffering","volume","muted","subtitlesTracks","selectedSubtitlesTrackId"],commands:["load","unload","destroy"],events:["propValue","propChanged","ended","error","subtitlesTrackLoaded"]},e.exports=s},3142:(e,t,o)=>{var a=o(9736);e.exports=a},9657:e=>{e.exports={CHROMECAST_SENDER_VIDEO:{INVALID_MESSAGE_RECEIVED:{code:100,message:"Invalid message received"},MESSAGE_SEND_FAILED:{code:101,message:"Failed to send message"}},YOUTUBE_VIDEO:{API_LOAD_FAILED:{code:90,message:"YouTube player iframe API failed to load"},INVALID_PARAMETER:{code:91,message:"The request contains an invalid parameter value"},HTML5_VIDEO:{code:92,message:"The requested content cannot be played in an HTML5 player"},VIDEO_NOT_FOUND:{code:93,message:"The video requested was not found"},VIDEO_NOT_EMBEDDABLE:{code:94,message:"The owner of the requested video does not allow it to be played in embedded players"}},HTML_VIDEO:{MEDIA_ERR_ABORTED:{code:80,message:"Fetching process aborted"},MEDIA_ERR_NETWORK:{code:81,message:"Error occurred when downloading"},MEDIA_ERR_DECODE:{code:82,message:"Error occurred when decoding"},MEDIA_ERR_SRC_NOT_SUPPORTED:{code:83,message:"Video is not supported"}},WITH_HTML_SUBTITLES:{LOAD_FAILED:{code:70,message:"Failed to load external subtitles"}},WITH_STREAMING_SERVER:{CONVERT_FAILED:{code:60,message:"Streaming server failed to convert torrent stream"}},UNKNOWN_ERROR:{code:1,message:"Unknown error"},UNSUPPORTED_STREAM:{code:2,message:"Stream is not supported"}}},1654:(e,t,o)=>{var a=o(5010);e.exports=a},5015:e=>{var t,o=[{codec:"h264",mime:'video/mp4; codecs="avc1.42E01E"'},{codec:"h265",mime:'video/mp4; codecs="hev1.1.6.L150.B0"',aliases:["hevc"]},{codec:"vp8",mime:'video/mp4; codecs="vp8"'},{codec:"vp9",mime:'video/mp4; codecs="vp9"'}],a=[{codec:"aac",mime:'audio/mp4; codecs="mp4a.40.2"'},{codec:"mp3",mime:'audio/mp4; codecs="mp3"'},{codec:"ac3",mime:'audio/mp4; codecs="ac-3"'},{codec:"eac3",mime:'audio/mp4; codecs="ec-3"'},{codec:"vorbis",mime:'audio/mp4; codecs="vorbis"'},{codec:"opus",mime:'audio/mp4; codecs="opus"'}];function n(e,t){return t.mediaElement.canPlayType(e.mime)?[e.codec].concat(e.aliases||[]):[]}e.exports=(t=document.createElement("video"),{formats:["mp4"],videoCodecs:o.map((function(e){return n(e,{mediaElement:t})})).reduce((function(e,t){return e.concat(t)}),[]),audioCodecs:a.map((function(e){return n(e,{mediaElement:t})})).reduce((function(e,t){return e.concat(t)}),[]),maxAudioChannels:(function(){if(/firefox/i.test(window.navigator.userAgent))return 6;if(!window.AudioContext)return 2;var e=(new AudioContext).destination.maxChannelCount;return e>0?e:2})()})},9490:e=>{e.exports=function(e,t){if(t<e[0]||e[e.length-1]<t)return-1;for(var o=0,a=e.length-1,n=-1;o<=a;){var i=Math.floor((o+a)/2);e[i]>t?a=i-1:(e[i]<t||(n=i),o=i+1)}return-1!==n?n:a}},4282:(e,t,o)=>{var a=o(4253);e.exports=a},6950:e=>{function t(e){for(var t="",o=(e=e.replace(/<[a-zA-Z/][^>]*>/g,"")).split(/\n/);o.length>3;){for(var a=3;a<o.length;a++)o[2]+="\n"+o[a];o.splice(3,o.length-3)}var n=0;if(!o[0].match(/\d+:\d+:\d+/)&&o[1].match(/\d+:\d+:\d+/)&&(t+=o[0].match(/\w+/)+"\n",n+=1),!o[n].match(/\d+:\d+:\d+/))return"";var i=o[1].match(/(\d+):(\d+):(\d+)(?:,(\d+))?\s*--?>\s*(\d+):(\d+):(\d+)(?:,(\d+))?/);return i?(t+=i[1]+":"+i[2]+":"+i[3]+"."+i[4]+" --\x3e "+i[5]+":"+i[6]+":"+i[7]+"."+i[8]+"\n",o[n+=1]&&(t+=o[n]+"\n\n"),t):""}e.exports={convert:function(e){if(e.includes("WEBVTT"))return e;try{return(function(e){var o=e.replace(/\r+/g,""),a=(o=o.replace(/^\s+|\s+$/g,"")).split("\n\n"),n="";if(a.length>0){n+="WEBVTT\n\n";for(var i=0;i<a.length;i+=1)n+=t(a[i])}return n})(e)}catch(e){throw new Error("Failed to convert srt to webvtt: "+e.message)}}}},1494:(e,t,o)=>{var a=o(8369),n=o(9490);e.exports={parse:function(e){return new Promise((function(t,o){var i=new a.WebVTT.Parser(window,a.WebVTT.StringDecoder()),r=[],s=[],E={};i.oncue=function(e){var t={startTime:1e3*e.startTime|0,endTime:1e3*e.endTime|0,text:e.text};s.push(t),E[t.startTime]=E[t.startTime]||[],E[t.endTime]=E[t.endTime]||[]},i.onparsingerror=function(e){0===e.code?(i.oncue=null,i.onparsingerror=null,i.onflush=null,o(e)):(console.warn("Subtitles parsing error",e),r.push(e))},i.onflush=function(){E.times=Object.keys(E).map((function(e){return parseInt(e,10)})).sort((function(e,t){return e-t}));for(var e=0;e<s.length;e++){E[s[e].startTime].push(s[e]);for(var a=n(E.times,s[e].startTime)+1;a<E.times.length&&!(s[e].endTime<=E.times[a]);a++)E[E.times[a]].push(s[e])}for(var _=0;_<E.times.length;_++)E[E.times[_]].sort((function(e,t){return e.startTime-t.startTime||e.endTime-t.endTime}));i.oncue=null,i.onparsingerror=null,i.onflush=null,0===s.length&&r.length?o(r[0]):0===E.times.length?o(new Error("Missing subtitle track cues")):t(E)},i.parse(e)}))}}},2913:(e,t,o)=>{var a=o(8369),n=o(9490);e.exports={render:function(e,t){var o=[],i=n(e.times,t);if(-1!==i)for(var r=e[e.times[i]],s=0;s<r.length;s++){var E=a.WebVTT.convertCueToDOMTree(window,r[s].text);o.push(E)}return o}}},4253:(e,t,o)=>{var a=o(6729),n=o(3465),i=o(2682),r=o(6767),s=o(9657),E=o(1494),_=o(2913),T=o(6950);e.exports=function(e){function t(t){var o=new e(t=t||{});o.on("error",(function(e){c.emit("error",e),e.critical&&y("unload")})),o.on("propValue",D.bind(null,"propValue")),o.on("propChanged",D.bind(null,"propChanged")),e.manifest.events.filter((function(e){return!["error","propValue","propChanged"].includes(e)})).forEach((function(e){o.on(e,(function(e){return function(){c.emit.apply(c,[e].concat(Array.from(arguments)))}})(e))}));var l=t.containerElement;if(!(l instanceof HTMLElement))throw new Error("Container element required to be instance of HTMLElement");var S=document.createElement("div");S.style.position="absolute",S.style.right="0",S.style.bottom="0",S.style.left="0",S.style.zIndex="1",S.style.textAlign="center",l.style.position="relative",l.style.zIndex="0",l.appendChild(S);var u={time:null},d=null,c=new a,A=!1,I=[],O=null,N=null,R=100,m=0,p="rgb(255, 255, 255)",h="rgba(0, 0, 0, 0)",L="rgb(34, 34, 34)",f={extraSubtitlesTracks:!1,selectedExtraSubtitlesTrackId:!1,extraSubtitlesDelay:!1,extraSubtitlesSize:!1,extraSubtitlesOffset:!1,extraSubtitlesTextColor:!1,extraSubtitlesBackgroundColor:!1,extraSubtitlesOutlineColor:!1};function C(){for(;S.hasChildNodes();)S.removeChild(S.lastChild);null!==d&&null!==u.time&&isFinite(u.time)&&(S.style.bottom=m+"%",_.render(d,u.time+N).forEach((function(e){e.style.display="inline-block",e.style.padding="0.2em",e.style.fontSize=Math.floor(R/25)+"vmin",e.style.color=p,e.style.backgroundColor=h,e.style.textShadow="1px 1px 0.1em "+L,S.appendChild(e),S.appendChild(document.createElement("br"))})))}function D(e,t,o){if("time"===t)u.time=o,C();c.emit(e,t,v(t,o))}function g(e){f[e]&&c.emit("propChanged",e,v(e,null))}function v(e,t){switch(e){case"extraSubtitlesTracks":return A?[]:I.slice();case"selectedExtraSubtitlesTrackId":return A?null:O;case"extraSubtitlesDelay":return A?null:N;case"extraSubtitlesSize":return A?null:R;case"extraSubtitlesOffset":return A?null:m;case"extraSubtitlesTextColor":return A?null:p;case"extraSubtitlesBackgroundColor":return A?null:h;case"extraSubtitlesOutlineColor":return A?null:L;default:return t}}function P(e,t){switch(e){case"selectedExtraSubtitlesTrackId":d=null,O=null,N=null;var a=I.find((function(e){return e.id===t}));return a&&(O=a.id,N=0,fetch(a.url).then((function(e){if(e.ok)return e.text();throw new Error(e.status+" ("+e.statusText+")")})).then((function(e){return T.convert(e)})).then((function(e){return E.parse(e)})).then((function(e){O===a.id&&(d=e,C(),c.emit("extraSubtitlesTrackLoaded",a))})).catch((function(e){O===a.id&&(function(e){c.emit("error",e),e.critical&&(y("unload"),o.dispatch({type:"command",commandName:"unload"}))})(Object.assign({},s.WITH_HTML_SUBTITLES.LOAD_FAILED,{error:e,track:a,critical:!1}))}))),C(),g("selectedExtraSubtitlesTrackId"),g("extraSubtitlesDelay"),!0;case"extraSubtitlesDelay":return null!==O&&null!==t&&isFinite(t)&&(N=parseInt(t,10),C(),g("extraSubtitlesDelay")),!0;case"extraSubtitlesSize":return null!==t&&isFinite(t)&&(R=Math.max(0,parseInt(t,10)),C(),g("extraSubtitlesSize")),!0;case"extraSubtitlesOffset":return null!==t&&isFinite(t)&&(m=Math.max(0,Math.min(100,parseInt(t,10))),C(),g("extraSubtitlesOffset")),!0;case"extraSubtitlesTextColor":if("string"==typeof t){try{p=r(t).rgb().string()}catch(e){console.error("withHTMLSubtitles",e)}C(),g("extraSubtitlesTextColor")}return!0;case"extraSubtitlesBackgroundColor":if("string"==typeof t){try{h=r(t).rgb().string()}catch(e){console.error("withHTMLSubtitles",e)}C(),g("extraSubtitlesBackgroundColor")}return!0;case"extraSubtitlesOutlineColor":if("string"==typeof t){try{L=r(t).rgb().string()}catch(e){console.error("withHTMLSubtitles",e)}C(),g("extraSubtitlesOutlineColor")}return!0;default:return!1}}function y(e,t){switch(e){case"addExtraSubtitlesTracks":return t&&Array.isArray(t.tracks)&&(I=I.concat(t.tracks).filter((function(e,t,o){return e&&"string"==typeof e.id&&"string"==typeof e.url&&"string"==typeof e.lang&&"string"==typeof e.label&&"string"==typeof e.origin&&!e.embedded&&t===o.findIndex((function(t){return t.id===e.id}))})),g("extraSubtitlesTracks")),!0;case"load":return y("unload"),t.stream&&Array.isArray(t.stream.subtitles)&&y("addExtraSubtitlesTracks",{tracks:t.stream.subtitles.map((function(e){return Object.assign({},e,{origin:"EXCLUSIVE",exclusive:!0,embedded:!1})}))}),!1;case"unload":return d=null,I=[],O=null,N=null,C(),g("extraSubtitlesTracks"),g("selectedExtraSubtitlesTrackId"),g("extraSubtitlesDelay"),!1;case"destroy":return y("unload"),A=!0,g("extraSubtitlesSize"),g("extraSubtitlesOffset"),g("extraSubtitlesTextColor"),g("extraSubtitlesBackgroundColor"),g("extraSubtitlesOutlineColor"),o.dispatch({type:"command",commandName:"destroy"}),c.removeAllListeners(),l.removeChild(S),!0;default:return!1}}this.on=function(e,t){if(A)throw new Error("Video is destroyed");c.on(e,t)},this.dispatch=function(e){if(A)throw new Error("Video is destroyed");if(e)switch((e=i(n(e))).type){case"observeProp":if((function(e){switch(e){case"extraSubtitlesTracks":case"selectedExtraSubtitlesTrackId":case"extraSubtitlesDelay":case"extraSubtitlesSize":case"extraSubtitlesOffset":case"extraSubtitlesTextColor":case"extraSubtitlesBackgroundColor":case"extraSubtitlesOutlineColor":return c.emit("propValue",e,v(e,null)),f[e]=!0,!0;default:return!1}})(e.propName))return;break;case"setProp":if(P(e.propName,e.propValue))return;break;case"command":if(y(e.commandName,e.commandArgs))return}o.dispatch(e)}}return t.canPlayStream=function(t){return e.canPlayStream(t)},t.manifest={name:e.manifest.name+"WithHTMLSubtitles",external:e.manifest.external,props:e.manifest.props.concat(["extraSubtitlesTracks","selectedExtraSubtitlesTrackId","extraSubtitlesDelay","extraSubtitlesSize","extraSubtitlesOffset","extraSubtitlesTextColor","extraSubtitlesBackgroundColor","extraSubtitlesOutlineColor"]).filter((function(e,t,o){return o.indexOf(e)===t})),commands:e.manifest.commands.concat(["load","unload","destroy","addExtraSubtitlesTracks"]).filter((function(e,t,o){return o.indexOf(e)===t})),events:e.manifest.events.concat(["propValue","propChanged","error","extraSubtitlesTrackLoaded"]).filter((function(e,t,o){return o.indexOf(e)===t}))},t}},7054:(e,t,o)=>{var a=o(9566),n=o(7190);e.exports=function(e,t,o){return new Promise((function(i,r){if("string"!=typeof t.url)"string"!=typeof t.infoHash?r(new Error("Stream cannot be converted")):n(e,t.infoHash,t.fileIdx,t.announce,o).then((function(e){i(e)})).catch((function(e){r(e)}));else if(0===t.url.indexOf("magnet:")){var s;try{if(!(s=a.decode(t.url))||"string"!=typeof s.infoHash)throw new Error("Failed to decode magnet url")}catch(e){return void r(e)}var E=Array.isArray(s.announce)?s.announce.map((function(e){return"tracker:"+e})):[];n(e,s.infoHash,null,E,o).then((function(e){i(e)})).catch((function(e){r(e)}))}else i(t.url)}))}},7190:(e,t,o)=>{var a=o(8575);function n(e,t,o,n){var i=Array.isArray(n)&&n.length>0?"?"+new URLSearchParams(n.map((function(e){return["tr",e]}))):"";return a.resolve(e,"/"+encodeURIComponent(t)+"/"+encodeURIComponent(o))+i}e.exports=function(e,t,o,i,r){if((!Array.isArray(i)||0===i.length)&&null!==o&&isFinite(o))return Promise.resolve(n(e,t,o,i));var s={torrent:{infoHash:t}};return Array.isArray(i)&&i.length>0&&(s.peerSearch={sources:["dht:"+t].concat(i).filter((function(e,t,o){return o.indexOf(e)===t})),min:40,max:200}),null!==o&&isFinite(o)?s.guessFileIdx=!1:(s.guessFileIdx={},r&&(null!==r.season&&isFinite(r.season)&&(s.guessFileIdx.season=r.season),null!==r.episode&&isFinite(r.episode)&&(s.guessFileIdx.episode=r.episode))),fetch(a.resolve(e,"/"+encodeURIComponent(t)+"/create"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(s)}).then((function(e){if(e.ok)return e.json();throw new Error(e.status+" ("+e.statusText+")")})).then((function(a){return n(e,t,s.guessFileIdx?a.guessedFileIdx:o,s.peerSearch?s.peerSearch.sources:[])}))}},5690:(e,t,o)=>{var a=o(7746);e.exports=a},7746:(e,t,o)=>{var a=o(6729),n=o(8575),i=o(542),r=o(3465),s=o(2682),E=o(5015),_=o(7054),T=o(9657);e.exports=function(e){function t(o){var l=new e(o=o||{});l.on("error",(function(e){A.emit("error",e),e.critical&&h("unload")})),l.on("propValue",N.bind(null,"propValue")),l.on("propChanged",N.bind(null,"propChanged")),e.manifest.events.filter((function(e){return!["error","propValue","propChanged"].includes(e)})).forEach((function(e){l.on(e,(function(e){return function(){A.emit.apply(A,[e].concat(Array.from(arguments)))}})(e))}));var S=this,u=null,d=!1,c=[],A=new a,I=!1,O={stream:!1};function N(e,t,o){A.emit(e,t,p(t,o))}function R(e){O[e]&&A.emit("propChanged",e,p(e,null))}function m(e){A.emit("error",e),e.critical&&(h("unload"),l.dispatch({type:"command",commandName:"unload"}))}function p(e,t){return"stream"===e?null!==u?u.stream:null:t}function h(e,o){switch(e){case"load":return o&&o.stream&&"string"==typeof o.streamingServerURL?(h("unload"),l.dispatch({type:"command",commandName:"unload"}),u=o,R("stream"),_(o.streamingServerURL,o.stream,o.seriesInfo).then((function(e){var a=Array.isArray(o.formats)?o.formats:E.formats,r=Array.isArray(o.videoCodecs)?o.videoCodecs:E.videoCodecs,s=Array.isArray(o.audioCodecs)?o.audioCodecs:E.audioCodecs,_=null!==o.maxAudioChannels&&isFinite(o.maxAudioChannels)?o.maxAudioChannels:E.maxAudioChannels,T=Object.assign({},o,{formats:a,videoCodecs:r,audioCodecs:s,maxAudioChannels:_});return(o.forceTranscoding?Promise.resolve(!1):t.canPlayStream({url:e},T)).catch((function(e){return console.warn("Media probe error",e),!1})).then((function(t){if(t)return{url:e};var a=i(),E=new URLSearchParams([["mediaURL",e]]);return o.forceTranscoding&&E.set("forceTranscoding","1"),r.forEach((function(e){E.append("videoCodecs",e)})),s.forEach((function(e){E.append("audioCodecs",e)})),E.set("maxAudioChannels",_),{url:n.resolve(o.streamingServerURL,"/hlsv2/"+a+"/master.m3u8?"+E.toString()),subtitles:Array.isArray(o.stream.subtitles)?o.stream.subtitles.map((function(e){return Object.assign({},e,{url:"string"==typeof e.url?n.resolve(o.streamingServerURL,"/subtitles.vtt?"+new URLSearchParams([["from",e.url]]).toString()):e.url})})):[],behaviorHints:{headers:{"content-type":"application/vnd.apple.mpegurl"}}}}))})).then((function(e){o===u&&(l.dispatch({type:"command",commandName:"load",commandArgs:Object.assign({},o,{stream:e})}),d=!0,(function(){for(;c.length>0;){var e=c.shift();S.dispatch.call(S,e)}})())})).catch((function(e){o===u&&m(Object.assign({},T.WITH_STREAMING_SERVER.CONVERT_FAILED,{error:e,critical:!0,stream:o.stream,streamingServerURL:o.streamingServerURL}))}))):m(Object.assign({},T.UNSUPPORTED_STREAM,{critical:!0,stream:o?o.stream:null,streamingServerURL:o&&"string"==typeof o.streamingServerURL?o.streamingServerURL:null})),!0;case"addExtraSubtitlesTracks":return u&&o&&Array.isArray(o.tracks)&&(d?l.dispatch({type:"command",commandName:"addExtraSubtitlesTracks",commandArgs:Object.assign({},o,{tracks:o.tracks.map((function(e){return Object.assign({},e,{url:"string"==typeof e.url?n.resolve(u.streamingServerURL,"/subtitles.vtt?"+new URLSearchParams([["from",e.url]]).toString()):e.url})}))})}):c.push({type:"command",commandName:"addExtraSubtitlesTracks",commandArgs:o})),!0;case"unload":return u=null,d=!1,c=[],R("stream"),!1;case"destroy":return h("unload"),I=!0,l.dispatch({type:"command",commandName:"destroy"}),A.removeAllListeners(),!0;default:return!d&&(c.push({type:"command",commandName:e,commandArgs:o}),!0)}}this.on=function(e,t){if(I)throw new Error("Video is destroyed");A.on(e,t)},this.dispatch=function(e){if(I)throw new Error("Video is destroyed");if(e)switch((e=s(r(e))).type){case"observeProp":if("stream"===(t=e.propName)&&(A.emit("propValue",t,p(t,null)),O[t]=!0,1))return;break;case"command":if(h(e.commandName,e.commandArgs))return}var t;l.dispatch(e)}}return t.canPlayStream=function(t,o){return e.canPlayStream(t).then((function(e){if(!e)throw new Error("Fallback using /hlsv2/probe");return e})).catch((function(){var e=new URLSearchParams([["mediaURL",t.url]]);return fetch(n.resolve(o.streamingServerURL,"/hlsv2/probe?"+e.toString())).then((function(e){return e.json()})).then((function(e){var t=o.formats.some((function(t){return-1!==e.format.name.indexOf(t)})),a=e.streams.every((function(e){return"audio"===e.track?e.channels<=o.maxAudioChannels&&-1!==o.audioCodecs.indexOf(e.codec):"video"!==e.track||-1!==o.videoCodecs.indexOf(e.codec)}));return t&&a}))}))},t.manifest={name:e.manifest.name+"WithStreamingServer",external:e.manifest.external,props:e.manifest.props.concat(["stream"]).filter((function(e,t,o){return o.indexOf(e)===t})),commands:e.manifest.commands.concat(["load","unload","destroy","addExtraSubtitlesTracks"]).filter((function(e,t,o){return o.indexOf(e)===t})),events:e.manifest.events.concat(["propValue","propChanged","error"]).filter((function(e,t,o){return o.indexOf(e)===t}))},t}},3746:function(e){"undefined"!=typeof self&&self,e.exports=(function(e){var t={};function o(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(a,n,function(t){return e[t]}.bind(null,n));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=1)})([function(e,t,o){"use strict";var a=o(3);function n(e){return!0===a(e)&&"[object Object]"===Object.prototype.toString.call(e)}e.exports=function(e){var t,o;return!1!==n(e)&&"function"==typeof(t=e.constructor)&&!1!==n(o=t.prototype)&&!1!==o.hasOwnProperty("isPrototypeOf")}},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=t.PALETTE_MATERIAL_CHROME=t.PALETTE_MATERIAL_500=t.COLOR_NAMES=t.getLuminance=t.intToRgb=t.rgbToInt=t.rgbToHsv=t.rgbToHsl=t.hslToRgb=t.rgbToHex=t.parseColor=t.parseColorToHsla=t.parseColorToHsl=t.parseColorToRgba=t.parseColorToRgb=t.from=t.createPicker=void 0;var a=(function(){function e(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,o,a){return o&&e(t.prototype,o),a&&e(t,a),t}})(),n=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return(function(e,t){var o=[],a=!0,n=!1,i=void 0;try{for(var r,s=e[Symbol.iterator]();!(a=(r=s.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){n=!0,i=e}finally{try{!a&&s.return&&s.return()}finally{if(n)throw i}}return o})(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},i=o(2),r=E(o(0)),s=E(o(4));function E(e){return e&&e.__esModule?e:{default:e}}function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function T(e){if(Array.isArray(e)){for(var t=0,o=Array(e.length);t<e.length;t++)o[t]=e[t];return o}return Array.from(e)}var l="undefined"!=typeof window&&window.navigator.userAgent.indexOf("Edge")>-1,S="undefined"!=typeof window&&window.navigator.userAgent.indexOf("rv:")>-1,u={id:null,attachTo:"body",showHSL:!0,showRGB:!0,showHEX:!0,showAlpha:!1,color:"#ff0000",palette:null,paletteEditable:!1,useAlphaInPalette:"auto",slBarSize:[232,150],hueBarSize:[150,11],alphaBarSize:[150,11]},d="COLOR",c="RGBA_USER",A="HSLA_USER";function I(e,t,o){return e?e instanceof HTMLElement?e:e instanceof NodeList?e[0]:"string"==typeof e?document.querySelector(e):e.jquery?e.get(0):o?t:null:t}function O(e){var t=e.getContext("2d"),o=+e.width,a=+e.height,r=t.createLinearGradient(1,1,1,a-1);return r.addColorStop(0,"white"),r.addColorStop(1,"black"),{setHue:function(e){var n=t.createLinearGradient(1,0,o-1,0);n.addColorStop(0,"hsla("+e+", 100%, 50%, 0)"),n.addColorStop(1,"hsla("+e+", 100%, 50%, 1)"),t.fillStyle=r,t.fillRect(0,0,o,a),t.fillStyle=n,t.globalCompositeOperation="multiply",t.fillRect(0,0,o,a),t.globalCompositeOperation="source-over"},grabColor:function(e,o){return t.getImageData(e,o,1,1).data},findColor:function(e,t,r){var s=(0,i.rgbToHsv)(e,t,r),E=n(s,3),_=E[1],T=E[2];return[_*o,a-T*a]}}}function N(e,t,o){return null===e?t:/^\s*$/.test(e)?o:!!/true|yes|1/i.test(e)||!/false|no|0/i.test(e)&&t}function R(e,t,o){if(null===e)return t;if(/^\s*$/.test(e))return o;var a=e.split(",").map(Number);return 2===a.length&&a[0]&&a[1]?a:t}var m=(function(){function e(t,o){if(_(this,e),o?(t=I(t),this.options=Object.assign({},u,o)):t&&(0,r.default)(t)?(this.options=Object.assign({},u,t),t=I(this.options.attachTo)):(this.options=Object.assign({},u),t=I((0,i.nvl)(t,this.options.attachTo))),!t)throw new Error("Container not found: "+this.options.attachTo);!(function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"acp-";if(t.hasAttribute(o+"show-hsl")&&(e.showHSL=N(t.getAttribute(o+"show-hsl"),u.showHSL,!0)),t.hasAttribute(o+"show-rgb")&&(e.showRGB=N(t.getAttribute(o+"show-rgb"),u.showRGB,!0)),t.hasAttribute(o+"show-hex")&&(e.showHEX=N(t.getAttribute(o+"show-hex"),u.showHEX,!0)),t.hasAttribute(o+"show-alpha")&&(e.showAlpha=N(t.getAttribute(o+"show-alpha"),u.showAlpha,!0)),t.hasAttribute(o+"palette-editable")&&(e.paletteEditable=N(t.getAttribute(o+"palette-editable"),u.paletteEditable,!0)),t.hasAttribute(o+"sl-bar-size")&&(e.slBarSize=R(t.getAttribute(o+"sl-bar-size"),u.slBarSize,[232,150])),t.hasAttribute(o+"hue-bar-size")&&(e.hueBarSize=R(t.getAttribute(o+"hue-bar-size"),u.hueBarSize,[150,11]),e.alphaBarSize=e.hueBarSize),t.hasAttribute(o+"palette")){var a=t.getAttribute(o+"palette");switch(a){case"PALETTE_MATERIAL_500":e.palette=i.PALETTE_MATERIAL_500;break;case"PALETTE_MATERIAL_CHROME":case"":e.palette=i.PALETTE_MATERIAL_CHROME;break;default:e.palette=a.split(/[;|]/)}}t.hasAttribute(o+"color")&&(e.color=t.getAttribute(o+"color"))})(this.options,t),this.H=0,this.S=0,this.L=0,this.R=0,this.G=0,this.B=0,this.A=1,this.palette={},this.element=document.createElement("div"),this.options.id&&(this.element.id=this.options.id),this.element.className="a-color-picker",this.element.innerHTML=s.default,t.appendChild(this.element);var a=this.element.querySelector(".a-color-picker-h");this.setupHueCanvas(a),this.hueBarHelper=O(a),this.huePointer=this.element.querySelector(".a-color-picker-h+.a-color-picker-dot");var n=this.element.querySelector(".a-color-picker-sl");this.setupSlCanvas(n),this.slBarHelper=O(n),this.slPointer=this.element.querySelector(".a-color-picker-sl+.a-color-picker-dot"),this.preview=this.element.querySelector(".a-color-picker-preview"),this.setupClipboard(this.preview.querySelector(".a-color-picker-clipbaord")),this.options.showHSL?(this.setupInput(this.inputH=this.element.querySelector(".a-color-picker-hsl>input[nameref=H]")),this.setupInput(this.inputS=this.element.querySelector(".a-color-picker-hsl>input[nameref=S]")),this.setupInput(this.inputL=this.element.querySelector(".a-color-picker-hsl>input[nameref=L]"))):this.element.querySelector(".a-color-picker-hsl").remove(),this.options.showRGB?(this.setupInput(this.inputR=this.element.querySelector(".a-color-picker-rgb>input[nameref=R]")),this.setupInput(this.inputG=this.element.querySelector(".a-color-picker-rgb>input[nameref=G]")),this.setupInput(this.inputB=this.element.querySelector(".a-color-picker-rgb>input[nameref=B]"))):this.element.querySelector(".a-color-picker-rgb").remove(),this.options.showHEX?this.setupInput(this.inputRGBHEX=this.element.querySelector("input[nameref=RGBHEX]")):this.element.querySelector(".a-color-picker-rgbhex").remove(),this.options.paletteEditable||this.options.palette&&this.options.palette.length>0?this.setPalette(this.paletteRow=this.element.querySelector(".a-color-picker-palette")):(this.paletteRow=this.element.querySelector(".a-color-picker-palette"),this.paletteRow.remove()),this.options.showAlpha?(this.setupAlphaCanvas(this.element.querySelector(".a-color-picker-a")),this.alphaPointer=this.element.querySelector(".a-color-picker-a+.a-color-picker-dot")):this.element.querySelector(".a-color-picker-alpha").remove(),this.element.style.width=this.options.slBarSize[0]+"px",this.onValueChanged(d,this.options.color)}return a(e,[{key:"setupHueCanvas",value:function(e){var t=this;e.width=this.options.hueBarSize[0],e.height=this.options.hueBarSize[1];for(var o=e.getContext("2d"),a=o.createLinearGradient(0,0,this.options.hueBarSize[0],0),n=0;n<=1;n+=1/360)a.addColorStop(n,"hsl("+360*n+", 100%, 50%)");o.fillStyle=a,o.fillRect(0,0,this.options.hueBarSize[0],this.options.hueBarSize[1]);var r=function(o){var a=(0,i.limit)(o.clientX-e.getBoundingClientRect().left,0,t.options.hueBarSize[0]),n=Math.round(360*a/t.options.hueBarSize[0]);t.huePointer.style.left=a-7+"px",t.onValueChanged("H",n)},s=function e(){document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",e)};e.addEventListener("mousedown",(function(e){r(e),document.addEventListener("mousemove",r),document.addEventListener("mouseup",s)}))}},{key:"setupSlCanvas",value:function(e){var t=this;e.width=this.options.slBarSize[0],e.height=this.options.slBarSize[1];var o=function(o){var a=(0,i.limit)(o.clientX-e.getBoundingClientRect().left,0,t.options.slBarSize[0]-1),n=(0,i.limit)(o.clientY-e.getBoundingClientRect().top,0,t.options.slBarSize[1]-1),r=t.slBarHelper.grabColor(a,n);t.slPointer.style.left=a-7+"px",t.slPointer.style.top=n-7+"px",t.onValueChanged("RGB",r)},a=function e(){document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",e)};e.addEventListener("mousedown",(function(e){o(e),document.addEventListener("mousemove",o),document.addEventListener("mouseup",a)}))}},{key:"setupAlphaCanvas",value:function(e){var t=this;e.width=this.options.alphaBarSize[0],e.height=this.options.alphaBarSize[1];var o=e.getContext("2d"),a=o.createLinearGradient(0,0,e.width-1,0);a.addColorStop(0,"hsla(0, 0%, 50%, 0)"),a.addColorStop(1,"hsla(0, 0%, 50%, 1)"),o.fillStyle=a,o.fillRect(0,0,this.options.alphaBarSize[0],this.options.alphaBarSize[1]);var n=function(o){var a=(0,i.limit)(o.clientX-e.getBoundingClientRect().left,0,t.options.alphaBarSize[0]),n=+(a/t.options.alphaBarSize[0]).toFixed(2);t.alphaPointer.style.left=a-7+"px",t.onValueChanged("ALPHA",n)},r=function e(){document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",e)};e.addEventListener("mousedown",(function(e){n(e),document.addEventListener("mousemove",n),document.addEventListener("mouseup",r)}))}},{key:"setupInput",value:function(e){var t=this,o=+e.min,a=+e.max,n=e.getAttribute("nameref");e.hasAttribute("select-on-focus")&&e.addEventListener("focus",(function(){e.select()})),"text"===e.type?e.addEventListener("change",(function(){t.onValueChanged(n,e.value)})):((l||S)&&e.addEventListener("keydown",(function(r){"Up"===r.key?(e.value=(0,i.limit)(+e.value+1,o,a),t.onValueChanged(n,e.value),r.returnValue=!1):"Down"===r.key&&(e.value=(0,i.limit)(+e.value-1,o,a),t.onValueChanged(n,e.value),r.returnValue=!1)})),e.addEventListener("change",(function(){var r=+e.value;t.onValueChanged(n,(0,i.limit)(r,o,a))})))}},{key:"setupClipboard",value:function(e){var t=this;e.title="click to copy",e.addEventListener("click",(function(){e.value=(0,i.parseColor)([t.R,t.G,t.B,t.A],"hexcss4"),e.select(),document.execCommand("copy")}))}},{key:"setPalette",value:function(e){var t=this,o="auto"===this.options.useAlphaInPalette?this.options.showAlpha:this.options.useAlphaInPalette,a=null;switch(this.options.palette){case"PALETTE_MATERIAL_500":a=i.PALETTE_MATERIAL_500;break;case"PALETTE_MATERIAL_CHROME":a=i.PALETTE_MATERIAL_CHROME;break;default:a=(0,i.ensureArray)(this.options.palette)}if(this.options.paletteEditable||a.length>0){var n=function(o,a,n){var i=e.querySelector('.a-color-picker-palette-color[data-color="'+o+'"]')||document.createElement("div");i.className="a-color-picker-palette-color",i.style.backgroundColor=o,i.setAttribute("data-color",o),i.title=o,e.insertBefore(i,a),t.palette[o]=!0,n&&t.onPaletteColorAdd(o)},r=function(o,a){o?(e.removeChild(o),t.palette[o.getAttribute("data-color")]=!1,a&&t.onPaletteColorRemove(o.getAttribute("data-color"))):(e.querySelectorAll(".a-color-picker-palette-color[data-color]").forEach((function(t){e.removeChild(t)})),Object.keys(t.palette).forEach((function(e){t.palette[e]=!1})),a&&t.onPaletteColorRemove())};if(a.map((function(e){return(0,i.parseColor)(e,o?"rgbcss4":"hex")})).filter((function(e){return!!e})).forEach((function(e){return n(e)})),this.options.paletteEditable){var s=document.createElement("div");s.className="a-color-picker-palette-color a-color-picker-palette-add",s.innerHTML="+",e.appendChild(s),e.addEventListener("click",(function(e){/a-color-picker-palette-add/.test(e.target.className)?e.shiftKey?r(null,!0):n(o?(0,i.parseColor)([t.R,t.G,t.B,t.A],"rgbcss4"):(0,i.rgbToHex)(t.R,t.G,t.B),e.target,!0):/a-color-picker-palette-color/.test(e.target.className)&&(e.shiftKey?r(e.target,!0):t.onValueChanged(d,e.target.getAttribute("data-color")))}))}else e.addEventListener("click",(function(e){/a-color-picker-palette-color/.test(e.target.className)&&t.onValueChanged(d,e.target.getAttribute("data-color"))}))}else e.style.display="none"}},{key:"updatePalette",value:function(e){this.paletteRow.innerHTML="",this.palette={},this.paletteRow.parentElement||this.element.appendChild(this.paletteRow),this.options.palette=e,this.setPalette(this.paletteRow)}},{key:"onValueChanged",value:function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{silent:!1};switch(e){case"H":this.H=t;var a=(0,i.hslToRgb)(this.H,this.S,this.L),r=n(a,3);this.R=r[0],this.G=r[1],this.B=r[2],this.slBarHelper.setHue(t),this.updatePointerH(this.H),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case"S":this.S=t;var s=(0,i.hslToRgb)(this.H,this.S,this.L),E=n(s,3);this.R=E[0],this.G=E[1],this.B=E[2],this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case"L":this.L=t;var _=(0,i.hslToRgb)(this.H,this.S,this.L),T=n(_,3);this.R=T[0],this.G=T[1],this.B=T[2],this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case"R":this.R=t;var l=(0,i.rgbToHsl)(this.R,this.G,this.B),S=n(l,3);this.H=S[0],this.S=S[1],this.L=S[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGBHEX(this.R,this.G,this.B);break;case"G":this.G=t;var u=(0,i.rgbToHsl)(this.R,this.G,this.B),I=n(u,3);this.H=I[0],this.S=I[1],this.L=I[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGBHEX(this.R,this.G,this.B);break;case"B":this.B=t;var O=(0,i.rgbToHsl)(this.R,this.G,this.B),N=n(O,3);this.H=N[0],this.S=N[1],this.L=N[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGBHEX(this.R,this.G,this.B);break;case"RGB":var R=n(t,3);this.R=R[0],this.G=R[1],this.B=R[2];var m=(0,i.rgbToHsl)(this.R,this.G,this.B),p=n(m,3);this.H=p[0],this.S=p[1],this.L=p[2],this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case c:var h=n(t,4);this.R=h[0],this.G=h[1],this.B=h[2],this.A=h[3];var L=(0,i.rgbToHsl)(this.R,this.G,this.B),f=n(L,3);this.H=f[0],this.S=f[1],this.L=f[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B),this.updatePointerA(this.A);break;case A:var C=n(t,4);this.H=C[0],this.S=C[1],this.L=C[2],this.A=C[3];var D=(0,i.hslToRgb)(this.H,this.S,this.L),g=n(D,3);this.R=g[0],this.G=g[1],this.B=g[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B),this.updatePointerA(this.A);break;case"RGBHEX":var v=(0,i.cssColorToRgb)(t)||[this.R,this.G,this.B],P=n(v,3);this.R=P[0],this.G=P[1],this.B=P[2];var y=(0,i.rgbToHsl)(this.R,this.G,this.B),B=n(y,3);this.H=B[0],this.S=B[1],this.L=B[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B);break;case d:var b=(0,i.parseColor)(t,"rgba")||[0,0,0,1],M=n(b,4);this.R=M[0],this.G=M[1],this.B=M[2],this.A=M[3];var U=(0,i.rgbToHsl)(this.R,this.G,this.B),W=n(U,3);this.H=W[0],this.S=W[1],this.L=W[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B),this.updatePointerA(this.A);break;case"ALPHA":this.A=t}1===this.A?this.preview.style.backgroundColor="rgb("+this.R+","+this.G+","+this.B+")":this.preview.style.backgroundColor="rgba("+this.R+","+this.G+","+this.B+","+this.A+")",o&&o.silent||this.onchange&&this.onchange(this.preview.style.backgroundColor)}},{key:"onPaletteColorAdd",value:function(e){this.oncoloradd&&this.oncoloradd(e)}},{key:"onPaletteColorRemove",value:function(e){this.oncolorremove&&this.oncolorremove(e)}},{key:"updateInputHSL",value:function(e,t,o){this.options.showHSL&&(this.inputH.value=e,this.inputS.value=t,this.inputL.value=o)}},{key:"updateInputRGB",value:function(e,t,o){this.options.showRGB&&(this.inputR.value=e,this.inputG.value=t,this.inputB.value=o)}},{key:"updateInputRGBHEX",value:function(e,t,o){this.options.showHEX&&(this.inputRGBHEX.value=(0,i.rgbToHex)(e,t,o))}},{key:"updatePointerH",value:function(e){var t=this.options.hueBarSize[0]*e/360;this.huePointer.style.left=t-7+"px"}},{key:"updatePointerSL",value:function(e,t,o){var a=(0,i.hslToRgb)(e,t,o),r=n(a,3),s=r[0],E=r[1],_=r[2],T=this.slBarHelper.findColor(s,E,_),l=n(T,2),S=l[0],u=l[1];S>=0&&(this.slPointer.style.left=S-7+"px",this.slPointer.style.top=u-7+"px")}},{key:"updatePointerA",value:function(e){if(this.options.showAlpha){var t=this.options.alphaBarSize[0]*e;this.alphaPointer.style.left=t-7+"px"}}}]),e})(),p=(function(){function e(t){_(this,e),this.name=t,this.listeners=[]}return a(e,[{key:"on",value:function(e){e&&this.listeners.push(e)}},{key:"off",value:function(e){this.listeners=e?this.listeners.filter((function(t){return t!==e})):[]}},{key:"emit",value:function(e,t){for(var o=this.listeners.slice(0),a=0;a<o.length;a++)o[a].apply(t,e)}}]),e})();function h(e,t){var o=new m(e,t),a={change:new p("change"),coloradd:new p("coloradd"),colorremove:new p("colorremove")},r=!0,s={},E={get element(){return o.element},get rgb(){return[o.R,o.G,o.B]},set rgb(e){var t=n(e,3),a=t[0],r=t[1],s=t[2],E=[(0,i.limit)(a,0,255),(0,i.limit)(r,0,255),(0,i.limit)(s,0,255)];a=E[0],r=E[1],s=E[2],o.onValueChanged(c,[a,r,s,1])},get hsl(){return[o.H,o.S,o.L]},set hsl(e){var t=n(e,3),a=t[0],r=t[1],s=t[2],E=[(0,i.limit)(a,0,360),(0,i.limit)(r,0,100),(0,i.limit)(s,0,100)];a=E[0],r=E[1],s=E[2],o.onValueChanged(A,[a,r,s,1])},get rgbhex(){return this.all.hex},get rgba(){return[o.R,o.G,o.B,o.A]},set rgba(e){var t=n(e,4),a=t[0],r=t[1],s=t[2],E=t[3],_=[(0,i.limit)(a,0,255),(0,i.limit)(r,0,255),(0,i.limit)(s,0,255),(0,i.limit)(E,0,1)];a=_[0],r=_[1],s=_[2],E=_[3],o.onValueChanged(c,[a,r,s,E])},get hsla(){return[o.H,o.S,o.L,o.A]},set hsla(e){var t=n(e,4),a=t[0],r=t[1],s=t[2],E=t[3],_=[(0,i.limit)(a,0,360),(0,i.limit)(r,0,100),(0,i.limit)(s,0,100),(0,i.limit)(E,0,1)];a=_[0],r=_[1],s=_[2],E=_[3],o.onValueChanged(A,[a,r,s,E])},get color(){return this.all.toString()},set color(e){o.onValueChanged(d,e)},setColor:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];o.onValueChanged(d,e,{silent:t})},get all(){if(r){var e=[o.R,o.G,o.B,o.A],t=o.A<1?"rgba("+o.R+","+o.G+","+o.B+","+o.A+")":i.rgbToHex.apply(void 0,e);(s=(0,i.parseColor)(e,s)).toString=function(){return t},r=!1}return Object.assign({},s)},get onchange(){return a.change&&a.change.listeners[0]},set onchange(e){this.off("change").on("change",e)},get oncoloradd(){return a.coloradd&&a.coloradd.listeners[0]},set oncoloradd(e){this.off("coloradd").on("coloradd",e)},get oncolorremove(){return a.colorremove&&a.colorremove.listeners[0]},set oncolorremove(e){this.off("colorremove").on("colorremove",e)},get palette(){return Object.keys(o.palette).filter((function(e){return o.palette[e]}))},set palette(e){o.updatePalette(e)},show:function(){o.element.classList.remove("hidden")},hide:function(){o.element.classList.add("hidden")},toggle:function(){o.element.classList.toggle("hidden")},on:function(e,t){return e&&a[e]&&a[e].on(t),this},off:function(e,t){return e&&a[e]&&a[e].off(t),this},destroy:function(){a.change.off(),a.coloradd.off(),a.colorremove.off(),o.element.remove(),a=null,o=null}};return o.onchange=function(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];r=!0,a.change.emit([E].concat(t),E)},o.oncoloradd=function(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];a.coloradd.emit([E].concat(t),E)},o.oncolorremove=function(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];a.colorremove.emit([E].concat(t),E)},o.element.ctrl=E,E}if("undefined"!=typeof window&&!document.querySelector('head>style[data-source="a-color-picker"]')){var L=o(5).toString(),f=document.createElement("style");f.setAttribute("type","text/css"),f.setAttribute("data-source","a-color-picker"),f.innerHTML=L,document.querySelector("head").appendChild(f)}t.createPicker=h,t.from=function(e,t){var o=(function(e){return e?Array.isArray(e)?e:e instanceof HTMLElement?[e]:e instanceof NodeList?[].concat(T(e)):"string"==typeof e?[].concat(T(document.querySelectorAll(e))):e.jquery?e.get():[]:[]})(e).map((function(e,o){var a=h(e,t);return a.index=o,a}));return o.on=function(e,t){return o.forEach((function(o){return o.on(e,t)})),this},o.off=function(e){return o.forEach((function(t){return t.off(e)})),this},o},t.parseColorToRgb=i.parseColorToRgb,t.parseColorToRgba=i.parseColorToRgba,t.parseColorToHsl=i.parseColorToHsl,t.parseColorToHsla=i.parseColorToHsla,t.parseColor=i.parseColor,t.rgbToHex=i.rgbToHex,t.hslToRgb=i.hslToRgb,t.rgbToHsl=i.rgbToHsl,t.rgbToHsv=i.rgbToHsv,t.rgbToInt=i.rgbToInt,t.intToRgb=i.intToRgb,t.getLuminance=i.getLuminance,t.COLOR_NAMES=i.COLOR_NAMES,t.PALETTE_MATERIAL_500=i.PALETTE_MATERIAL_500,t.PALETTE_MATERIAL_CHROME=i.PALETTE_MATERIAL_CHROME,t.VERSION="1.2.1"},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.nvl=t.ensureArray=t.limit=t.getLuminance=t.parseColor=t.parseColorToHsla=t.parseColorToHsl=t.cssHslaToHsla=t.cssHslToHsl=t.parseColorToRgba=t.parseColorToRgb=t.cssRgbaToRgba=t.cssRgbToRgb=t.cssColorToRgba=t.cssColorToRgb=t.intToRgb=t.rgbToInt=t.rgbToHsv=t.rgbToHsl=t.hslToRgb=t.rgbToHex=t.PALETTE_MATERIAL_CHROME=t.PALETTE_MATERIAL_500=t.COLOR_NAMES=void 0;var a=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return(function(e,t){var o=[],a=!0,n=!1,i=void 0;try{for(var r,s=e[Symbol.iterator]();!(a=(r=s.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){n=!0,i=e}finally{try{!a&&s.return&&s.return()}finally{if(n)throw i}}return o})(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},n=(function(e){return e&&e.__esModule?e:{default:e}})(o(0));function i(e){if(Array.isArray(e)){for(var t=0,o=Array(e.length);t<e.length;t++)o[t]=e[t];return o}return Array.from(e)}var r={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgrey:"#A9A9A9",darkgreen:"#006400",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4","indianred ":"#CD5C5C","indigo ":"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgrey:"#D3D3D3",lightgreen:"#90EE90",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"};function s(e,t,o){return e=+e,isNaN(e)||e<t?t:e>o?o:e}function E(e,t){return null==e?t:e}function _(e,t,o){var a=[s(e,0,255),s(t,0,255),s(o,0,255)];return"#"+("000000"+((e=a[0])<<16|(t=a[1])<<8|(o=a[2])).toString(16)).slice(-6)}function T(e,t,o){var a=void 0,n=void 0,i=void 0,r=[s(e,0,360)/360,s(t,0,100)/100,s(o,0,100)/100];if(e=r[0],o=r[2],0==(t=r[1]))a=n=i=o;else{var E=function(e,t,o){return o<0&&(o+=1),o>1&&(o-=1),o<1/6?e+6*(t-e)*o:o<.5?t:o<2/3?e+(t-e)*(2/3-o)*6:e},_=o<.5?o*(1+t):o+t-o*t,T=2*o-_;a=E(T,_,e+1/3),n=E(T,_,e),i=E(T,_,e-1/3)}return[255*a,255*n,255*i].map(Math.round)}function l(e,t,o){var a=[s(e,0,255)/255,s(t,0,255)/255,s(o,0,255)/255];e=a[0],t=a[1],o=a[2];var n=Math.max(e,t,o),i=Math.min(e,t,o),r=void 0,E=void 0,_=(n+i)/2;if(n==i)r=E=0;else{var T=n-i;switch(E=_>.5?T/(2-n-i):T/(n+i),n){case e:r=(t-o)/T+(t<o?6:0);break;case t:r=(o-e)/T+2;break;case o:r=(e-t)/T+4}r/=6}return[360*r,100*E,100*_].map(Math.round)}function S(e,t,o){return e<<16|t<<8|o}function u(e){if(e){var t=r[e.toString().toLowerCase()],o=/^\s*#?((([0-9A-F])([0-9A-F])([0-9A-F]))|(([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})))\s*$/i.exec(t||e)||[],n=a(o,10),i=n[3],s=n[4],E=n[5],_=n[7],T=n[8],l=n[9];if(void 0!==i)return[parseInt(i+i,16),parseInt(s+s,16),parseInt(E+E,16)];if(void 0!==_)return[parseInt(_,16),parseInt(T,16),parseInt(l,16)]}}function d(e){if(e){var t=r[e.toString().toLowerCase()],o=/^\s*#?((([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])?)|(([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})?))\s*$/i.exec(t||e)||[],n=a(o,12),i=n[3],s=n[4],E=n[5],_=n[6],T=n[8],l=n[9],S=n[10],u=n[11];if(void 0!==i)return[parseInt(i+i,16),parseInt(s+s,16),parseInt(E+E,16),_?+(parseInt(_+_,16)/255).toFixed(2):1];if(void 0!==T)return[parseInt(T,16),parseInt(l,16),parseInt(S,16),u?+(parseInt(u,16)/255).toFixed(2):1]}}function c(e){if(e){var t=/^rgb\((\d+)[\s,](\d+)[\s,](\d+)\)/i.exec(e)||[],o=a(t,4),n=o[0],i=o[1],r=o[2],E=o[3];return n?[s(i,0,255),s(r,0,255),s(E,0,255)]:void 0}}function A(e){if(e){var t=/^rgba?\((\d+)\s*[\s,]\s*(\d+)\s*[\s,]\s*(\d+)(\s*[\s,]\s*(\d*(.\d+)?))?\)/i.exec(e)||[],o=a(t,6),n=o[0],i=o[1],r=o[2],_=o[3],T=o[5];return n?[s(i,0,255),s(r,0,255),s(_,0,255),s(E(T,1),0,1)]:void 0}}function I(e){if(Array.isArray(e))return[s(e[0],0,255),s(e[1],0,255),s(e[2],0,255),s(E(e[3],1),0,1)];var t=d(e)||A(e);return t&&3===t.length&&t.push(1),t}function O(e){if(e){var t=/^hsl\((\d+)[\s,](\d+)[\s,](\d+)\)/i.exec(e)||[],o=a(t,4),n=o[0],i=o[1],r=o[2],E=o[3];return n?[s(i,0,360),s(r,0,100),s(E,0,100)]:void 0}}function N(e){if(e){var t=/^hsla?\((\d+)\s*[\s,]\s*(\d+)\s*[\s,]\s*(\d+)(\s*[\s,]\s*(\d*(.\d+)?))?\)/i.exec(e)||[],o=a(t,6),n=o[0],i=o[1],r=o[2],_=o[3],T=o[5];return n?[s(i,0,255),s(r,0,255),s(_,0,255),s(E(T,1),0,1)]:void 0}}function R(e){if(Array.isArray(e))return[s(e[0],0,360),s(e[1],0,100),s(e[2],0,100),s(E(e[3],1),0,1)];var t=N(e);return t&&3===t.length&&t.push(1),t}function m(e,t){switch(t){default:return e.slice(0,3);case"rgbcss":return"rgb("+e[0]+", "+e[1]+", "+e[2]+")";case"rgbcss4":return"rgb("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+")";case"rgba":return e;case"rgbacss":return"rgba("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+")";case"hsl":return l.apply(void 0,i(e));case"hslcss":return"hsl("+(e=l.apply(void 0,i(e)))[0]+", "+e[1]+", "+e[2]+")";case"hslcss4":var o=l.apply(void 0,i(e));return"hsl("+o[0]+", "+o[1]+", "+o[2]+", "+e[3]+")";case"hsla":return[].concat(i(l.apply(void 0,i(e))),[e[3]]);case"hslacss":var a=l.apply(void 0,i(e));return"hsla("+a[0]+", "+a[1]+", "+a[2]+", "+e[3]+")";case"hex":return _.apply(void 0,i(e));case"hexcss4":return _.apply(void 0,i(e))+("00"+parseInt(255*e[3]).toString(16)).slice(-2);case"int":return S.apply(void 0,i(e))}}t.COLOR_NAMES=r,t.PALETTE_MATERIAL_500=["#F44336","#E91E63","#E91E63","#9C27B0","#9C27B0","#673AB7","#673AB7","#3F51B5","#3F51B5","#2196F3","#2196F3","#03A9F4","#03A9F4","#00BCD4","#00BCD4","#009688","#009688","#4CAF50","#4CAF50","#8BC34A","#8BC34A","#CDDC39","#CDDC39","#FFEB3B","#FFEB3B","#FFC107","#FFC107","#FF9800","#FF9800","#FF5722","#FF5722","#795548","#795548","#9E9E9E","#9E9E9E","#607D8B","#607D8B"],t.PALETTE_MATERIAL_CHROME=["#f44336","#e91e63","#9c27b0","#673ab7","#3f51b5","#2196f3","#03a9f4","#00bcd4","#009688","#4caf50","#8bc34a","#cddc39","#ffeb3b","#ffc107","#ff9800","#ff5722","#795548","#9e9e9e","#607d8b"],t.rgbToHex=_,t.hslToRgb=T,t.rgbToHsl=l,t.rgbToHsv=function(e,t,o){var a=[s(e,0,255)/255,s(t,0,255)/255,s(o,0,255)/255];e=a[0],t=a[1],o=a[2];var n,i=Math.max(e,t,o),r=Math.min(e,t,o),E=void 0,_=i,T=i-r;if(n=0===i?0:T/i,i==r)E=0;else{switch(i){case e:E=(t-o)/T+(t<o?6:0);break;case t:E=(o-e)/T+2;break;case o:E=(e-t)/T+4}E/=6}return[E,n,_]},t.rgbToInt=S,t.intToRgb=function(e){return[e>>16&255,e>>8&255,255&e]},t.cssColorToRgb=u,t.cssColorToRgba=d,t.cssRgbToRgb=c,t.cssRgbaToRgba=A,t.parseColorToRgb=function(e){return Array.isArray(e)?e=[s(e[0],0,255),s(e[1],0,255),s(e[2],0,255)]:u(e)||c(e)},t.parseColorToRgba=I,t.cssHslToHsl=O,t.cssHslaToHsla=N,t.parseColorToHsl=function(e){return Array.isArray(e)?e=[s(e[0],0,360),s(e[1],0,100),s(e[2],0,100)]:O(e)},t.parseColorToHsla=R,t.parseColor=function(e,t){if(t=t||"rgb",null!=e){var o=void 0;if((o=I(e))||(o=R(e))&&(o=[].concat(i(T.apply(void 0,i(o))),[o[3]])))return(0,n.default)(t)?["rgb","rgbcss","rgbcss4","rgba","rgbacss","hsl","hslcss","hslcss4","hsla","hslacss","hex","hexcss4","int"].reduce((function(e,t){return e[t]=m(o,t),e}),t||{}):m(o,t.toString().toLowerCase())}},t.getLuminance=function(e,t,o){return.2126*(e=(e/=255)<.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.7152*(t=(t/=255)<.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.0722*((o/=255)<.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))},t.limit=s,t.ensureArray=function(e){return e?Array.from(e):[]},t.nvl=E},function(e,t,o){"use strict";e.exports=function(e){return null!=e&&"object"==typeof e&&!1===Array.isArray(e)}},function(e,t){e.exports='<div class="a-color-picker-row a-color-picker-stack a-color-picker-row-top"> <canvas class="a-color-picker-sl a-color-picker-transparent"></canvas> <div class=a-color-picker-dot></div> </div> <div class=a-color-picker-row> <div class="a-color-picker-stack a-color-picker-transparent a-color-picker-circle"> <div class=a-color-picker-preview> <input class=a-color-picker-clipbaord type=text> </div> </div> <div class=a-color-picker-column> <div class="a-color-picker-cell a-color-picker-stack"> <canvas class=a-color-picker-h></canvas> <div class=a-color-picker-dot></div> </div> <div class="a-color-picker-cell a-color-picker-alpha a-color-picker-stack" show-on-alpha> <canvas class="a-color-picker-a a-color-picker-transparent"></canvas> <div class=a-color-picker-dot></div> </div> </div> </div> <div class="a-color-picker-row a-color-picker-hsl" show-on-hsl> <label>H</label> <input nameref=H type=number maxlength=3 min=0 max=360 value=0> <label>S</label> <input nameref=S type=number maxlength=3 min=0 max=100 value=0> <label>L</label> <input nameref=L type=number maxlength=3 min=0 max=100 value=0> </div> <div class="a-color-picker-row a-color-picker-rgb" show-on-rgb> <label>R</label> <input nameref=R type=number maxlength=3 min=0 max=255 value=0> <label>G</label> <input nameref=G type=number maxlength=3 min=0 max=255 value=0> <label>B</label> <input nameref=B type=number maxlength=3 min=0 max=255 value=0> </div> <div class="a-color-picker-row a-color-picker-rgbhex a-color-picker-single-input" show-on-single-input> <label>HEX</label> <input nameref=RGBHEX type=text select-on-focus> </div> <div class="a-color-picker-row a-color-picker-palette"></div>'},function(e,t,o){var a=o(6);e.exports="string"==typeof a?a:a.toString()},function(e,t,o){(e.exports=o(7)(!1)).push([e.i,"/*!\n * a-color-picker\n * https://github.com/narsenico/a-color-picker\n *\n * Copyright (c) 2017-2018, Gianfranco Caldi.\n * Released under the MIT License.\n */.a-color-picker{background-color:#fff;padding:0;display:inline-flex;flex-direction:column;user-select:none;width:232px;font:400 10px Helvetica,Arial,sans-serif;border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,.05),0 2px 4px rgba(0,0,0,.25)}.a-color-picker,.a-color-picker-row,.a-color-picker input{box-sizing:border-box}.a-color-picker-row{padding:15px;display:flex;flex-direction:row;align-items:center;justify-content:space-between;user-select:none}.a-color-picker-row-top{padding:0}.a-color-picker-row:not(:first-child){border-top:1px solid #f5f5f5}.a-color-picker-column{display:flex;flex-direction:column}.a-color-picker-cell{flex:1 1 auto;margin-bottom:4px}.a-color-picker-cell:last-child{margin-bottom:0}.a-color-picker-stack{position:relative}.a-color-picker-dot{position:absolute;width:14px;height:14px;top:0;left:0;background:#fff;pointer-events:none;border-radius:50px;z-index:1000;box-shadow:0 1px 2px rgba(0,0,0,.75)}.a-color-picker-a,.a-color-picker-h,.a-color-picker-sl{cursor:cell}.a-color-picker-a+.a-color-picker-dot,.a-color-picker-h+.a-color-picker-dot{top:-2px}.a-color-picker-a,.a-color-picker-h{border-radius:2px}.a-color-picker-preview{box-sizing:border-box;width:30px;height:30px;user-select:none;border-radius:15px}.a-color-picker-circle{border-radius:50px;border:1px solid #eee}.a-color-picker-hsl,.a-color-picker-rgb,.a-color-picker-single-input{justify-content:space-evenly}.a-color-picker-hsl>label,.a-color-picker-rgb>label,.a-color-picker-single-input>label{padding:0 8px;flex:0 0 auto;color:#969696}.a-color-picker-hsl>input,.a-color-picker-rgb>input,.a-color-picker-single-input>input{text-align:center;padding:2px 0;width:0;flex:1 1 auto;border:1px solid #e0e0e0;line-height:20px}.a-color-picker-hsl>input::-webkit-inner-spin-button,.a-color-picker-rgb>input::-webkit-inner-spin-button,.a-color-picker-single-input>input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.a-color-picker-hsl>input:focus,.a-color-picker-rgb>input:focus,.a-color-picker-single-input>input:focus{border-color:#04a9f4;outline:none}.a-color-picker-transparent{background-image:linear-gradient(-45deg,#cdcdcd 25%,transparent 0),linear-gradient(45deg,#cdcdcd 25%,transparent 0),linear-gradient(-45deg,transparent 75%,#cdcdcd 0),linear-gradient(45deg,transparent 75%,#cdcdcd 0);background-size:11px 11px;background-position:0 0,0 -5.5px,-5.5px 5.5px,5.5px 0}.a-color-picker-sl{border-radius:3px 3px 0 0}.a-color-picker.hide-alpha [show-on-alpha],.a-color-picker.hide-hsl [show-on-hsl],.a-color-picker.hide-rgb [show-on-rgb],.a-color-picker.hide-single-input [show-on-single-input]{display:none}.a-color-picker-clipbaord{width:100%;height:100%;opacity:0;cursor:pointer}.a-color-picker-palette{flex-flow:wrap;flex-direction:row;justify-content:flex-start;padding:10px}.a-color-picker-palette-color{width:15px;height:15px;flex:0 1 15px;margin:3px;box-sizing:border-box;cursor:pointer;border-radius:3px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1)}.a-color-picker-palette-add{text-align:center;line-height:13px;color:#607d8b}.a-color-picker.hidden{display:none}",""])},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var o=(function(e,t){var o=e[1]||"",a=e[3];if(!a)return o;if(t&&"function"==typeof btoa){var n=(function(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"})(a),i=a.sources.map((function(e){return"/*# sourceURL="+a.sourceRoot+e+" */"}));return[o].concat(i).concat([n]).join("\n")}return[o].join("\n")})(t,e);return t[2]?"@media "+t[2]+"{"+o+"}":o})).join("")},t.i=function(e,o){"string"==typeof e&&(e=[[null,e,""]]);for(var a={},n=0;n<this.length;n++){var i=this[n][0];"number"==typeof i&&(a[i]=!0)}for(n=0;n<e.length;n++){var r=e[n];"number"==typeof r[0]&&a[r[0]]||(o&&!r[2]?r[2]=o:o&&(r[2]="("+r[2]+") and ("+o+")"),t.push(r))}},t}}])},5677:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}o(2341);var i=o(7294),r=o(1468).useTranslation,s=o(1665).Router,E=o(3662),_=E.Core,T=E.Shell,l=E.Chromecast,S=E.DragAndDrop,u=E.KeyboardShortcuts,d=E.ServicesProvider,c=o(1529).NotFound,A=o(6590),I=A.ToastProvider,O=A.CONSTANTS,N=A.withCoreSuspender,R=o(9239),m=o(1210),p=o(8011),h=o(1544),L=o(9884),f=o(9448),C=N(h(s));e.exports=function(){var e=r().i18n,t=i.useCallback((function(){return c}),[]),o=i.useMemo((function(){var e=new _({appVersion:"5.0.0",shellVersion:null});return{core:e,shell:new T,chromecast:new l,keyboardShortcuts:new u,dragAndDrop:new S({core:e})}}),[]),n=a(i.useState(!1),2),s=n[0],E=n[1];return i.useEffect((function(){var e=window.location.hash.slice(1),t=function(){o.core.active&&o.core.transport.analytics({event:"LocationPathChanged",args:{prevPath:e}}),e=window.location.hash.slice(1)};return window.addEventListener("hashchange",t),function(){window.removeEventListener("hashchange",t)}}),[]),i.useEffect((function(){var e=function(){E((o.core.active||o.core.error instanceof Error)&&(o.shell.active||o.shell.error instanceof Error))},t=function(){E((o.core.active||o.core.error instanceof Error)&&(o.shell.active||o.shell.error instanceof Error))},a=function(){o.chromecast.active&&o.chromecast.transport.setOptions({receiverApplicationId:O.CHROMECAST_RECEIVER_APP_ID,autoJoinPolicy:chrome.cast.AutoJoinPolicy.PAGE_SCOPED,resumeSavedSession:!1,language:null})};return o.core.on("stateChanged",e),o.shell.on("stateChanged",t),o.chromecast.on("stateChanged",a),o.core.start(),o.shell.start(),o.chromecast.start(),o.keyboardShortcuts.start(),o.dragAndDrop.start(),window.services=o,function(){o.core.stop(),o.shell.stop(),o.chromecast.stop(),o.keyboardShortcuts.stop(),o.dragAndDrop.stop(),o.core.off("stateChanged",e),o.shell.off("stateChanged",t),o.chromecast.off("stateChanged",a)}}),[]),i.useEffect((function(){var t=function(t){var o=t.event,a=t.args;if("SettingsUpdated"===o)a&&a.settings&&"string"==typeof a.settings.interfaceLanguage&&e.changeLanguage(a.settings.interfaceLanguage)},a=function(){o.core.transport.dispatch({action:"Ctx",args:{action:"PullAddonsFromAPI"}}),o.core.transport.dispatch({action:"Ctx",args:{action:"PullUserFromAPI"}}),o.core.transport.dispatch({action:"Ctx",args:{action:"SyncLibraryWithAPI"}})};return o.core.active&&(a(),window.addEventListener("focus",a),o.core.transport.on("CoreEvent",t),o.core.transport.getState("ctx").then((function(t){t&&t.profile&&t.profile.settings&&"string"==typeof t.profile.settings.interfaceLanguage&&e.changeLanguage(t.profile.settings.interfaceLanguage)})).catch((function(e){return console.error(e)}))),function(){window.removeEventListener("focus",a),o.core.transport.off("CoreEvent",t)}}),[s]),i.createElement(i.StrictMode,null,i.createElement(d,{services:o},s?o.core.error instanceof Error?i.createElement(p,{className:f["error-container"]}):i.createElement(I,{className:f["toasts-container"]},i.createElement(R,null),i.createElement(m,null),i.createElement(C,{className:f.router,viewsConfig:L,onPathNotMatch:t})):i.createElement("div",{className:f["loader-container"]})))}},1210:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(6590),s=r.withCoreSuspender,E=r.useStreamingServer;e.exports=s((function(){var e=E();return i.useEffect((function(){if(null!==e.torrent){var t=a(e.torrent,2)[1],o=t.type,n=t.content;if("Ready"===o){var i=a(n,2)[1];"string"==typeof i.metaDetailsVideos&&(window.location=i.metaDetailsVideos)}}}),[e.torrent]),null}))},1341:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=o(4184),E=o(6590),_=E.Button,T=E.Image,l=o(6499),S=function(e){var t=e.className,n=a(i.useState(!1),2),r=n[0],E=n[1],S=i.useCallback((function(){window.location.reload()}),[]),u=i.useCallback((function(){window.localStorage.clear(),E(!0)}),[]);return i.createElement("div",{className:s(t,l["error-container"])},i.createElement(T,{className:l["error-image"],src:o(7740),alt:" "}),i.createElement("div",{className:l["error-message"]},"Something went wrong!"),i.createElement("div",{className:l["buttons-container"]},i.createElement(_,{className:l["button-container"],title:"Try again",onClick:S},i.createElement("div",{className:l.label},"Try again")),i.createElement(_,{className:l["button-container"],disabled:r,title:"Clear data",onClick:u},i.createElement("div",{className:l.label},"Clear data"))))};S.displayName="ErrorDialog",S.propTypes={className:r.string},e.exports=S},8011:(e,t,o)=>{var a=o(1341);e.exports=a},9239:(e,t,o)=>{var a=o(7294),n=o(3662).useServices,i=o(6590).useToast;e.exports=function(){var e=n(),t=e.core,o=e.dragAndDrop,r=i();return a.useEffect((function(){var e=function(e){var t=e.event,o=e.args;switch(t){case"Error":if("UserPulledFromAPI"===o.source.event&&null===o.source.args.uid)break;if("LibrarySyncWithAPIPlanned"===o.source.event&&null===o.source.args.uid)break;if("Other"===o.error.type&&3===o.error.code&&"AddonInstalled"===o.source.event&&o.source.args.transport_url.startsWith("https://www.strem.io/trakt/addon"))break;r.show({type:"error",title:o.source.event,message:o.error.message,timeout:4e3,dataset:{type:"CoreEvent"}});break;case"TorrentParsed":r.show({type:"success",title:"Torrent file parsed",timeout:4e3});break;case"MagnetParsed":r.show({type:"success",title:"Magnet link parsed",timeout:4e3});break;case"PlayingOnDevice":r.show({type:"success",title:"Stream opened in ".concat(o.device),timeout:4e3})}},a=function(e){var t;r.show({type:"error",title:e.message,message:null===(t=e.file)||void 0===t?void 0:t.name,timeout:4e3})};return t.transport.on("CoreEvent",e),o.on("error",a),function(){t.transport.off("CoreEvent",e),o.off("error",a)}}),[]),null}},4008:(e,t,o)=>{var a=o(5677);e.exports=a},9884:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){i(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var r=o(1529),s=o(6590).routesRegexp,E=[[n(n({},s.board),{},{component:r.Board})],[n(n({},s.intro),{},{component:r.Intro}),n(n({},s.discover),{},{component:r.Discover}),n(n({},s.library),{},{component:r.Library}),n(n({},s.continuewatching),{},{component:r.Library}),n(n({},s.search),{},{component:r.Search})],[n(n({},s.metadetails),{},{component:r.MetaDetails})],[n(n({},s.addons),{},{component:r.Addons}),n(n({},s.settings),{},{component:r.Settings})],[n(n({},s.player),{},{component:r.Player})]];e.exports=E},1544:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},a.apply(this,arguments)}var n=o(7294),i=o(1529).Intro,r=o(6590).useProfile;e.exports=function(e){return function(t){var o=r(),s=n.useRef(o.auth);n.useEffect((function(){null!==s.current&&null===o.auth&&(window.location="#/intro"),s.current=o.auth}),[o]);var E=n.useCallback((function(e){if(null!==o.auth&&e.component===i)return window.location.replace("#/"),!0}),[o]);return n.createElement(e,a({},t,{onRouteChange:E}))}}},5471:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(9872),E=o(8135),_=function(e){var t=e.className,o=e.id,n=e.name,_=e.version,T=e.logo,l=e.description,S=e.types,u=e.transportUrl,d=e.official,c=a.useCallback((function(){return a.createElement(r,{className:E.icon,icon:"ic_addons"})}),[]);return a.createElement("div",{className:i(t,E["addon-details-container"])},a.createElement("div",{className:E["title-container"]},a.createElement(s,{className:E.logo,src:T,alt:" ",renderFallback:c}),a.createElement("div",{className:E["name-container"]},a.createElement("span",{className:E.name},"string"==typeof n&&n.length>0?n:o),"string"==typeof _&&_.length>0?a.createElement("span",{className:E.version},"v. ",_):null)),"string"==typeof l&&l.length>0?a.createElement("div",{className:E["section-container"]},a.createElement("span",{className:E["section-label"]},l)):null,"string"==typeof u&&u.length>0?a.createElement("div",{className:E["section-container"]},a.createElement("span",{className:E["section-header"]},"URL: "),a.createElement("span",{className:i(E["section-label"],E["transport-url-label"])},u)):null,Array.isArray(S)&&S.length>0?a.createElement("div",{className:E["section-container"]},a.createElement("span",{className:E["section-header"]},"Supported types: "),a.createElement("span",{className:E["section-label"]},1===S.length?S[0]:S.slice(0,-1).join(", ")+" & "+S[S.length-1])):null,d?null:a.createElement("div",{className:E["section-container"]},a.createElement("div",{className:i(E["section-label"],E["disclaimer-label"])},"Using third-party add-ons will always be subject to your responsibility and the governing law of the jurisdiction you are located.")))};_.propTypes={className:n.string,id:n.string,name:n.string,version:n.string,logo:n.string,description:n.string,types:n.arrayOf(n.string),transportUrl:n.string,official:n.bool},e.exports=_},5368:(e,t,o)=>{var a=o(5471);e.exports=a},8029:(e,t,o)=>{var a=["remoteAddon","localAddon"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(8253),_=o(6672).withCoreSuspender,T=o(3662).useServices,l=(function(e){var t=function(t){var o=t.remoteAddon,s=t.localAddon,E=i(t,a),_=null!==o&&"Ready"===o.content.type?o.content.content:null!==s?s:null;return null===_?null:r.createElement(e,n({},E,{id:_.manifest.id,name:_.manifest.name,version:_.manifest.version,logo:_.manifest.logo,description:_.manifest.description,types:_.manifest.types,transportUrl:_.transportUrl,official:_.flags.official}))};return t.displayName="withRemoteAndLocalAddon",t})(o(5368)),S=o(9208),u=o(355);var d=function(e){var t=e.transportUrl,o=e.onCloseRequest,a=T().core,n=S(t),i=r.useMemo((function(){var e={className:u["cancel-button"],label:"Cancel",props:{onClick:function(e){"function"==typeof o&&o({type:"cancel",reactEvent:e,nativeEvent:e.nativeEvent})}}},i=null!==n.remoteAddon&&"Ready"===n.remoteAddon.content.type&&n.remoteAddon.content.content.manifest.behaviorHints.configurable?{className:u["configure-button"],label:"Configure",props:{onClick:function(e){window.open(t.replace("manifest.json","configure")),"function"==typeof o&&o({type:"configure",reactEvent:e,nativeEvent:e.nativeEvent})}}}:null,r=null!==n.localAddon?{className:u["uninstall-button"],label:"Uninstall",props:{onClick:function(e){a.transport.dispatch({action:"Ctx",args:{action:"UninstallAddon",args:n.localAddon}}),"function"==typeof o&&o({type:"uninstall",reactEvent:e,nativeEvent:e.nativeEvent})}}}:null!==n.remoteAddon&&"Ready"===n.remoteAddon.content.type?{className:u["install-button"],label:"Install",props:{onClick:function(e){a.transport.dispatch({action:"Ctx",args:{action:"InstallAddon",args:n.remoteAddon.content.content}}),"function"==typeof o&&o({type:"install",reactEvent:e,nativeEvent:e.nativeEvent})}}}:null;return null!==r?i?[e,i,r]:[e,r]:[e]}),[n,o]);return r.createElement(E,{className:u["addon-details-modal-container"],title:"Stremio addon",buttons:i,onCloseRequest:o},null===n.selected?r.createElement("div",{className:u["addon-details-message-container"]},"Loading addon manifest"):null===n.remoteAddon||"Loading"===n.remoteAddon.content.type?r.createElement("div",{className:u["addon-details-message-container"]},"Loading addon manifest from ",n.selected.transportUrl):"Err"===n.remoteAddon.content.type&&null===n.localAddon?r.createElement("div",{className:u["addon-details-message-container"]},"Failed to get addon manifest from ",n.selected.transportUrl,r.createElement("div",null,n.remoteAddon.content.content.message)):r.createElement(l,{className:u["addon-details-container"],remoteAddon:n.remoteAddon,localAddon:n.localAddon}))};d.propTypes={transportUrl:s.string,onCloseRequest:s.func};var c=function(e){var t=e.onCloseRequest;return r.createElement(E,{className:u["addon-details-modal-container"],title:"Stremio addon",onCloseRequest:t},r.createElement("div",{className:u["addon-details-message-container"]},"Loading addon manifest"))};c.propTypes=d.propTypes,e.exports=_(d,c)},8512:(e,t,o)=>{var a=o(8029);e.exports=a},9208:(e,t,o)=>{var a=o(7294),n=o(1535);e.exports=function(e){var t=a.useMemo((function(){return"string"==typeof e?{action:"Load",args:{model:"AddonDetails",args:{transportUrl:e}}}:{action:"Unload"}}),[e]);return n({model:"addon_details",action:t})}},7458:(e,t,o)=>{var a=["className","href","disabled","children","onLongPress"];function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?n(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function s(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=o(4184),l=o(4520),S=o(243).useLongPress,u=E.forwardRef((function(e,t){var o=e.className,n=e.href,r=e.disabled,_=e.children,u=e.onLongPress,d=s(e,a),c=S(u,{detect:"pointer"}),A=E.useCallback((function(e){"function"==typeof d.onKeyDown&&d.onKeyDown(e),"Enter"===e.key&&(e.preventDefault(),e.nativeEvent.buttonClickPrevented||e.currentTarget.click())}),[d.onKeyDown]),I=E.useCallback((function(e){"function"==typeof d.onMouseDown&&d.onMouseDown(e),e.nativeEvent.buttonBlurPrevented||(e.preventDefault(),document.activeElement instanceof HTMLElement&&document.activeElement.blur())}),[d.onMouseDown]);return E.createElement("string"==typeof n&&n.length>0?"a":"div",i(i({tabIndex:0},d),{},{ref:t,className:T(o,l["button-container"],{disabled:r}),href:n,onKeyDown:A,onMouseDown:I},c()),_)}));u.displayName="Button",u.propTypes={className:_.string,href:_.string,disabled:_.bool,children:_.node,onKeyDown:_.func,onMouseDown:_.func,onLongPress:_.func},e.exports=u},6851:(e,t,o)=>{var a=o(7458);e.exports=a},2734:e=>{var t={movie:10,series:9,channel:8,tv:7,music:6,radio:5,podcast:4,game:3,book:2,adult:1,other:-1/0},o=new Map([["movie","ic_movies"],["series","ic_series"],["channel","ic_channels"],["tv","ic_tv"],["book","ic_book"],["game","ic_games"],["music","ic_music"],["adult","ic_adult"],["radio","ic_radio"],["podcast","ic_podcast"],["other","ic_movies"]]);e.exports={CHROMECAST_RECEIVER_APP_ID:"1634F54B",SUBTITLES_SIZES:[75,100,125,150,175,200,250],SUBTITLES_FONTS:["Roboto","Arial","Halvetica","Times New Roman","Verdana","Courier","Lucida Console","sans-serif","serif","monospace"],SEEK_TIME_DURATIONS:[5e3,1e4,15e3,2e4,25e3,3e4],NEXT_VIDEO_POPUP_DURATIONS:[0,5e3,1e4,15e3,2e4,25e3,3e4,35e3,4e4,45e3,5e4],CATALOG_PREVIEW_SIZE:10,CATALOG_PAGE_SIZE:100,NONE_EXTRA_VALUE:"None",SKIP_EXTRA_NAME:"skip",META_LINK_CATEGORY:"meta",IMDB_LINK_CATEGORY:"imdb",SHARE_LINK_CATEGORY:"share",WRITERS_LINK_CATEGORY:"Writers",TYPE_PRIORITIES:t,ICON_FOR_TYPE:o}},3064:(e,t,o)=>{var a=["className","checked","children"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(4184),_=o(2601),T=o(6851),l=o(1726),S=r.forwardRef((function(e,t){var o=e.className,s=e.checked,S=e.children,u=i(e,a);return r.createElement(T,n({},u,{ref:t,className:E(o,l["checkbox-container"],{checked:s})}),s?r.createElement("svg",{className:l.icon,viewBox:"0 0 100 100"},r.createElement(_,{x:"10",y:"10",width:"80",height:"80",icon:"ic_check"})):r.createElement(_,{className:l.icon,icon:"ic_box_empty"}),S)}));S.displayName="Checkbox",S.propTypes={className:s.string,checked:s.bool,children:s.node},e.exports=S},9666:(e,t,o)=>{var a=o(3064);e.exports=a},4750:(e,t,o)=>{var a=["className","value","dataset","onChange"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return r(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}function s(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=o(4184),l=o(3746),S=o(1468).useTranslation,u=o(6851),d=o(8253),c=o(4024),A=o(7711),I=o(5461),O=function(e){var t=l.parseColor(e,"hexcss4");return"string"==typeof t?t:"#ffffffff"},N=function(e){var t=e.className,o=e.value,r=e.dataset,_=e.onChange,l=s(e,a),N=S().t,R=i(c(!1),3),m=R[0],p=R[1],h=R[2],L=i(E.useState((function(){return O(o)})),2),f=L[0],C=L[1],D=E.useMemo((function(){return{backgroundColor:o}}),[o]),g=E.useMemo((function(){return O(o).endsWith("00")}),[o]),v=E.useCallback((function(e){"function"==typeof l.onClick&&l.onClick(e),e.nativeEvent.openModalPrevented||p()}),[l.onClick]),P=E.useCallback((function(e){e.nativeEvent.openModalPrevented=!0}),[]),y=E.useMemo((function(){return[{label:"Select",props:{"data-autofocus":!0,onClick:function(e){"function"==typeof _&&_({type:"change",value:f,dataset:r,reactEvent:e,nativeEvent:e.nativeEvent}),h()}}}]}),[f,r,_]),B=E.useCallback((function(e){C(O(e.value))}),[]);return E.useLayoutEffect((function(){C(O(o))}),[o,m]),E.createElement(u,n({title:g?N("BUTTON_COLOR_TRANSPARENT"):o},l,{style:D,className:T(t,I["color-input-container"]),onClick:v}),g?E.createElement("div",{className:I["transparent-label-container"]},E.createElement("div",{className:I["transparent-label"]},N("BUTTON_COLOR_TRANSPARENT"))):null,m?E.createElement(d,{title:"Choose a color:",buttons:y,onCloseRequest:h,onClick:P},E.createElement(A,{className:I["color-picker-container"],value:f,onInput:B})):null)};N.propTypes={className:_.string,value:_.string,dataset:_.object,onChange:_.func,onClick:_.func},e.exports=N},3378:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(3746),s=o(4809),E=function(e){return r.parseColor(e,"hexcss4")},_=function(e){var t=e.className,o=e.value,n=e.onInput,_=a.useRef(null),T=a.useRef(null);return a.useLayoutEffect((function(){_.current=r.createPicker(T.current,{color:E(o),showHSL:!1,showHEX:!1,showRGB:!1,showAlpha:!0});var e=T.current.querySelector(".a-color-picker-clipbaord");e instanceof HTMLElement&&(e.tabIndex=-1)}),[]),a.useLayoutEffect((function(){return"function"==typeof n&&_.current.on("change",(function(e,t){n({type:"input",value:E(t)})})),function(){_.current.off("change")}}),[n]),a.useLayoutEffect((function(){var e=E(o);e!==E(_.current.color)&&(_.current.color=e)}),[o]),a.createElement("div",{ref:T,className:i(t,s["color-picker-container"])})};_.propTypes={className:n.string,value:n.string,onInput:n.func},e.exports=_},7711:(e,t,o)=>{var a=o(3378);e.exports=a},8809:(e,t,o)=>{var a=o(4750);e.exports=a},6672:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(3662).useServices,s=i.createContext(null);function E(e){var t,o="pending",a=e.then((function(e){o="success",t=e}),(function(e){o="error",t=e}));return{read:function(){if("pending"===o)throw a;if("error"===o)throw t;if("success"===o)return t}}}s.displayName="CoreSuspenderContext";var _=function(){return i.useContext(s)};e.exports={withCoreSuspender:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};return function(o){var n=r().core,T=_(),l=a(i.useState(null===T),2),S=l[0],u=l[1],d=i.useRef({}),c=i.useRef({}),A=i.useCallback((function(e){return d.current[e]||(d.current[e]=E(n.transport.getState(e))),d.current[e].read()}),[]),I=i.useCallback((function(e){return c.current[e]||(c.current[e]=E(n.transport.decodeStream(e))),c.current[e].read()}),[]),O=i.useMemo((function(){return{getState:A,decodeStream:I}}),[]);return i.useLayoutEffect((function(){S||u(!0)}),[]),S?i.createElement(i.Suspense,{fallback:i.createElement(t,o)},i.createElement(s.Provider,{value:O},i.createElement(e,o))):null}},useCoreSuspender:_}},7473:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=function(e){var t=e.children,o=e.delay,n=a(i.useState(!1),2),r=n[0],s=n[1];return i.useEffect((function(){var e=setTimeout((function(){s(!0)}),o);return function(){clearTimeout(e)}}),[]),r?t:null};s.propTypes={children:r.node},e.exports=s},8006:(e,t,o)=>{var a=o(7473);e.exports=a},9504:(e,t,o)=>{var a=["className","src","alt","fallbackSrc","renderFallback"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return r(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}function s(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=function(e){var t=e.className,o=e.src,r=e.alt,_=e.fallbackSrc,T=e.renderFallback,l=s(e,a),S=i(E.useState(!1),2),u=S[0],d=S[1],c=E.useCallback((function(e){"function"==typeof l.onError&&l.onError(e),d(!0)}),[l.onError]);return E.useLayoutEffect((function(){d(!1)}),[o]),!u&&"string"==typeof o&&0!==o.length||"function"!=typeof T&&"string"!=typeof _?E.createElement("img",n({},l,{className:t,src:o,alt:r,onError:c})):"function"==typeof T?T():E.createElement("img",n({},l,{className:t,src:_,alt:r}))};T.propTypes={className:_.string,src:_.string,alt:_.string,fallbackSrc:_.string,renderFallback:_.func,onError:_.func},e.exports=T},9872:(e,t,o)=>{var a=o(9504);e.exports=a},859:(e,t,o)=>{var a=["_id","removable"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function r(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?i(Object(o),!0).forEach((function(t){s(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):i(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function s(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function E(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var _=o(7294),T=o(3662).useServices,l=o(5697),S=o(8277),u=o(6073).t,d=[{label:"LIBRARY_PLAY",value:"play"},{label:"LIBRARY_DETAILS",value:"details"},{label:"LIBRARY_RESUME_DISMISS",value:"dismiss"},{label:"LIBRARY_REMOVE",value:"remove"}],c=function(e){var t=e._id,o=e.removable,i=E(e,a),s=T().core,l=_.useMemo((function(){return d.filter((function(e){switch(e.value){case"play":return i.deepLinks&&"string"==typeof i.deepLinks.player;case"details":return i.deepLinks&&("string"==typeof i.deepLinks.metaDetailsVideos||"string"==typeof i.deepLinks.metaDetailsStreams);case"dismiss":return"string"==typeof t&&null!==i.progress&&!isNaN(i.progress);case"remove":return"string"==typeof t&&o}})).map((function(e){return r(r({},e),{},{label:u(e.label)})}))}),[t,o,i.progress,i.deepLinks]),c=_.useCallback((function(e){if("function"==typeof i.optionOnSelect&&i.optionOnSelect(e),!e.nativeEvent.optionSelectPrevented)switch(e.value){case"play":i.deepLinks&&"string"==typeof i.deepLinks.player&&(window.location=i.deepLinks.player);break;case"details":i.deepLinks&&("string"==typeof i.deepLinks.metaDetailsVideos?window.location=i.deepLinks.metaDetailsVideos:"string"==typeof i.deepLinks.metaDetailsStreams&&(window.location=i.deepLinks.metaDetailsStreams));break;case"dismiss":"string"==typeof t&&s.transport.dispatch({action:"Ctx",args:{action:"RewindLibraryItem",args:t}});break;case"remove":"string"==typeof t&&s.transport.dispatch({action:"Ctx",args:{action:"RemoveFromLibrary",args:t}})}}),[t,i.deepLinks,i.optionOnSelect]);return _.createElement(S,n({},i,{options:l,optionOnSelect:c}))};c.propTypes={_id:l.string,removable:l.bool,progress:l.number,deepLinks:l.shape({metaDetailsVideos:l.string,metaDetailsStreams:l.string,player:l.string}),optionOnSelect:l.func},e.exports=c},5748:(e,t,o)=>{var a=o(859);e.exports=a},3364:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2935),s=r.VerticalNavBar,E=r.HorizontalNavBar,_=o(9684),T=[{id:"board",label:"Board",icon:"ic_board",href:"#/"},{id:"discover",label:"Discover",icon:"ic_discover",href:"#/discover"},{id:"library",label:"Library",icon:"ic_library",href:"#/library"},{id:"settings",label:"SETTINGS",icon:"ic_settings",href:"#/settings"},{id:"addons",label:"ADDONS",icon:"ic_addons",href:"#/addons"}],l=a.memo((function(e){var t=e.className,o=e.route,n=e.query,r=e.children;return a.createElement("div",{className:i(t,_["main-nav-bars-container"])},a.createElement(E,{className:_["horizontal-nav-bar"],route:o,query:n,backButton:!1,searchBar:!0,addonsButton:!0,fullscreenButton:!0,navMenu:!0}),a.createElement(s,{className:_["vertical-nav-bar"],selected:o,tabs:T}),a.createElement("div",{className:_["nav-content-container"]},r))}));l.displayName="MainNavBars",l.propTypes={className:n.string,route:n.string,query:n.string,children:n.node},e.exports=l},1297:(e,t,o)=>{var a=o(3364);e.exports=a},3037:(e,t,o)=>{var a=["className","type","name","poster","posterShape","playIcon","progress","options","deepLinks","dataset","optionOnSelect"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return r(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}function s(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=o(4184),l=o(7280).Z,S=o(2601),u=o(6851),d=o(9872),c=o(3981),A=o(926),I=o(4024),O=o(2734).ICON_FOR_TYPE,N=o(4661),R=E.memo((function(e){var t=e.className,o=e.type,r=e.name,_=e.poster,R=e.posterShape,m=e.playIcon,p=e.progress,h=e.options,L=e.deepLinks,f=e.dataset,C=e.optionOnSelect,D=s(e,a),g=i(I(!1),3),v=g[0],P=g[1],y=g[2],B=E.useMemo((function(){return L?"string"==typeof L.player?L.player:"string"==typeof L.metaDetailsStreams?L.metaDetailsStreams:"string"==typeof L.metaDetailsVideos?L.metaDetailsVideos:null:null}),[L]),b=E.useCallback((function(e){"function"==typeof D.onClick&&D.onClick(e),e.nativeEvent.selectPrevented&&e.preventDefault()}),[D.onClick]),M=E.useCallback((function(e){e.nativeEvent.selectPrevented=!0}),[]),U=E.useCallback((function(e){"function"==typeof C&&C({type:"select-option",value:e.value,dataset:f,reactEvent:e.reactEvent,nativeEvent:e.nativeEvent})}),[f,C]),W=E.useCallback((function(){return E.createElement(S,{className:N["placeholder-icon"],icon:O.has(o)?O.get(o):O.get("other")})}),[o]),G=E.useCallback((function(){return E.createElement(S,{className:N.icon,icon:"ic_more"})}),[]);return E.createElement(u,n({title:r,href:B},l(D),{className:T(t,N["meta-item-container"],N["poster-shape-poster"],N["poster-shape-".concat(R)],{active:v}),onClick:b}),E.createElement("div",{className:N["poster-container"]},E.createElement("div",{className:N["poster-image-layer"]},E.createElement(d,{className:N["poster-image"],src:_,alt:" ",renderFallback:W})),m?E.createElement("div",{className:N["play-icon-layer"]},E.createElement(A,{className:N["play-icon"]})):null,p>0?E.createElement("div",{className:N["progress-bar-layer"]},E.createElement("div",{className:N["progress-bar"],style:{width:"".concat(100*Math.max(0,Math.min(1,p)),"%")}})):null),"string"==typeof r&&r.length>0||Array.isArray(h)&&h.length>0?E.createElement("div",{className:N["title-bar-container"]},E.createElement("div",{className:N["title-label"]},"string"==typeof r&&r.length>0?r:""),Array.isArray(h)&&h.length>0?E.createElement(c,{className:N["menu-label-container"],renderLabelContent:G,options:h,onOpen:P,onClose:y,onSelect:U,tabIndex:-1,onClick:M}):null):null)}));R.displayName="MetaItem",R.propTypes={className:_.string,type:_.string,name:_.string,poster:_.string,posterShape:_.oneOf(["poster","landscape","square"]),playIcon:_.bool,progress:_.number,options:_.array,deepLinks:_.shape({metaDetailsVideos:_.string,metaDetailsStreams:_.string,player:_.string}),dataset:_.object,optionOnSelect:_.func,onClick:_.func},e.exports=R},8277:(e,t,o)=>{var a=o(3037);e.exports=a},4902:(e,t,o)=>{var a=["className","icon","label"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(4184),_=o(2601),T=o(6851),l=o(5883),S=function(e){var t=e.className,o=e.icon,s=e.label,S=i(e,a);return r.createElement(T,n({title:s},S,{className:E(t,l["action-button-container"])}),"string"==typeof o&&o.length>0?r.createElement("div",{className:l["icon-container"]},r.createElement(_,{className:l.icon,icon:o})):null,"string"==typeof s&&s.length>0?r.createElement("div",{className:l["label-container"]},r.createElement("div",{className:l.label},s)):null)};S.propTypes={className:s.string,icon:s.string,label:s.string},e.exports=S},217:(e,t,o)=>{var a=o(4902);e.exports=a},8049:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(6851),E=o(7621),_=function(e){var t=e.className,o=e.label,n=e.links,_=r().t;return a.createElement("div",{className:i(t,E["meta-links-container"])},"string"==typeof o&&o.length>0?a.createElement("div",{className:E["label-container"]},_("LINKS_".concat(o.toUpperCase()))):null,Array.isArray(n)&&n.length>0?a.createElement("div",{className:E["links-container"]},n.map((function(e,t){var o=e.label,n=e.href;return a.createElement(s,{key:t,className:E["link-container"],title:o,href:n},_(o))}))):null)};_.propTypes={className:n.string,label:n.string,links:n.arrayOf(n.shape({label:n.string,href:n.string}))},e.exports=_},7818:(e,t,o)=>{var a=o(8049);e.exports=a},6314:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},a.apply(this,arguments)}function n(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return i(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return i(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var r=o(7294),s=o(5697),E=o(4184),_=o(8575),T=o(1468).useTranslation,l=o(2601),S=o(6851),u=o(9872),d=o(8253),c=o(9393),A=o(2734),I=o(8803),O=o(4024),N=o(217),R=o(7818),m=o(4322),p=o(6037),h=[I.search.regexp,I.discover.regexp,I.metadetails.regexp],L=function(e){var t,o,i,s=e.className,I=e.compact,m=e.name,L=e.logo,f=e.background,C=e.runtime,D=e.releaseInfo,g=e.released,v=e.description,P=e.deepLinks,y=e.links,B=e.trailerStreams,b=e.inLibrary,M=e.toggleInLibrary,U=T().t,W=n(O(!1),3),G=W[0],F=W[1],k=W[2],w=r.useMemo((function(){return Array.isArray(y)?y.filter((function(e){return e&&"string"==typeof e.category&&"string"==typeof e.url})).reduce((function(e,t){var o=t.category,a=t.name,n=t.url,i=_.parse(n),r=i.protocol,s=i.path,E=i.pathname,T=i.hostname;return o===A.IMDB_LINK_CATEGORY?"imdb.com"===T&&e.set(o,{label:a,href:"https://www.stremio.com/warning#".concat(encodeURIComponent(n))}):o===A.SHARE_LINK_CATEGORY?e.set(o,{label:a,href:n}):"stremio:"===r?null!==E&&h.some((function(e){return E.match(e)}))&&(e.has(o)||e.set(o,[]),e.get(o).push({label:a,href:"#".concat(s)})):"string"==typeof T&&T.length>0&&(e.has(o)||e.set(o,[]),e.get(o).push({label:a,href:"https://www.stremio.com/warning#".concat(encodeURIComponent(n))})),e}),new Map):new Map}),[y]),H=r.useMemo((function(){return P?"string"==typeof P.player?P.player:"string"==typeof P.metaDetailsStreams?P.metaDetailsStreams:"string"==typeof P.metaDetailsVideos?P.metaDetailsVideos:null:null}),[P]),V=r.useMemo((function(){return Array.isArray(B)&&0!==B.length?B[0].deepLinks.player:null}),[B]),Y=r.useCallback((function(){return r.createElement("div",{className:p["logo-placeholder"]},I?null:m)}),[I,m]);return r.createElement("div",{className:E(s,p["meta-preview-container"],(t={},o=p.compact,i=I,o in t?Object.defineProperty(t,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[o]=i,t))},"string"==typeof f&&f.length>0?r.createElement("div",{className:p["background-image-layer"]},r.createElement(u,{className:p["background-image"],src:f,alt:" "})):null,r.createElement("div",{className:p["meta-info-container"]},"string"==typeof L&&L.length>0?r.createElement(u,{className:p.logo,src:L,alt:" ",title:m,renderFallback:Y}):Y(),"string"==typeof D&&D.length>0||g instanceof Date&&!isNaN(g.getTime())||"string"==typeof C&&C.length>0||w.has(A.IMDB_LINK_CATEGORY)?r.createElement("div",{className:p["runtime-release-info-container"]},"string"==typeof C&&C.length>0?r.createElement("div",{className:p["runtime-label"]},C):null,"string"==typeof D&&D.length>0?r.createElement("div",{className:p["release-info-label"]},D):g instanceof Date&&!isNaN(g.getTime())?r.createElement("div",{className:p["release-info-label"]},g.getFullYear()):null,w.has(A.IMDB_LINK_CATEGORY)?r.createElement(S,a({className:p["imdb-button-container"],title:w.get(A.IMDB_LINK_CATEGORY).label,href:w.get(A.IMDB_LINK_CATEGORY).href,target:"_blank"},I?{tabIndex:-1}:null),r.createElement(l,{className:p.icon,icon:"ic_imdbnoframe"}),r.createElement("div",{className:p.label},w.get(A.IMDB_LINK_CATEGORY).label)):null):null,I&&"string"==typeof m&&m.length>0?r.createElement("div",{className:p["name-container"]},m):null,I&&"string"==typeof v&&v.length>0?r.createElement("div",{className:p["description-container"]},v):null,Array.from(w.keys()).filter((function(e){return e!==A.IMDB_LINK_CATEGORY&&e!==A.SHARE_LINK_CATEGORY&&e!==A.WRITERS_LINK_CATEGORY})).map((function(e,t){return r.createElement(R,{key:t,className:p["meta-links"],label:e,links:w.get(e)})}))),r.createElement("div",{className:p["action-buttons-container"]},"function"==typeof M?r.createElement(N,{className:p["action-button"],icon:b?"ic_removelib":"ic_addlib",label:U(b?"REMOVE_FROM_LIB":"ADD_TO_LIB"),tabIndex:I?-1:0,onClick:M}):null,"string"==typeof V?r.createElement(N,{className:p["action-button"],icon:"ic_movies",label:U("TRAILER"),tabIndex:I?-1:0,href:V}):null,"string"==typeof H&&I?r.createElement(N,{className:p["action-button"],icon:"ic_play",label:U("SHOW"),tabIndex:I?-1:0,href:H}):null,w.has(A.SHARE_LINK_CATEGORY)&&!I?r.createElement(r.Fragment,null,r.createElement(N,{className:p["action-button"],icon:"ic_share",label:U("CTX_SHARE"),tabIndex:I?-1:0,onClick:F}),G?r.createElement(d,{title:U("CTX_SHARE"),onCloseRequest:k},r.createElement(c,{className:p["share-prompt"],url:w.get(A.SHARE_LINK_CATEGORY).href})):null):null))};L.Placeholder=m,L.propTypes={className:s.string,compact:s.bool,name:s.string,logo:s.string,background:s.string,runtime:s.string,releaseInfo:s.string,released:s.instanceOf(Date),description:s.string,deepLinks:s.shape({metaDetailsVideos:s.string,metaDetailsStreams:s.string,player:s.string}),links:s.arrayOf(s.shape({category:s.string,name:s.string,url:s.string})),trailerStreams:s.array,inLibrary:s.bool,toggleInLibrary:s.func},e.exports=L},2641:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(6506),s=function(e){var t=e.className;return a.createElement("div",{className:i(t,r["meta-preview-placeholder-container"])},a.createElement("div",{className:r["meta-info-container"]},a.createElement("div",{className:r["logo-container"]}),a.createElement("div",{className:r["duration-release-info-container"]},a.createElement("div",{className:r["duration-container"]}),a.createElement("div",{className:r["release-info-container"]})),a.createElement("div",{className:r["description-container"]},a.createElement("div",{className:r["description-label-container"]}),a.createElement("div",{className:r["description-label-container"]})),a.createElement("div",{className:r["genres-container"]},a.createElement("div",{className:r["genres-header-container"]}),a.createElement("div",{className:r["genre-label-container"]})),a.createElement("div",{className:r["genres-container"]},a.createElement("div",{className:r["genres-header-container"]}),a.createElement("div",{className:r["genre-label-container"]}))),a.createElement("div",{className:r["action-buttons-container"]},a.createElement("div",{className:r["action-button-container"]},a.createElement("div",{className:r["action-button-icon"]}),a.createElement("div",{className:r["action-button-label"]})),a.createElement("div",{className:r["action-button-container"]},a.createElement("div",{className:r["action-button-icon"]}),a.createElement("div",{className:r["action-button-label"]})),a.createElement("div",{className:r["action-button-container"]},a.createElement("div",{className:r["action-button-icon"]}),a.createElement("div",{className:r["action-button-label"]}))))};s.propTypes={className:n.string},e.exports=s},4322:(e,t,o)=>{var a=o(2641);e.exports=a},3070:(e,t,o)=>{var a=o(6314);e.exports=a},8370:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){i(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var r=o(7294),s=o(9864),E=o(5697),_=o(4184),T=o(1468).useTranslation,l=o(2601),S=o(6851),u=o(2734),d=o(411),c=o(676),A=function(e){var t=e.className,o=e.title,a=e.message,i=e.items,E=e.itemComponent,d=e.deepLinks,A=T().t;return r.createElement("div",{className:_(t,c["meta-row-container"])},"string"==typeof o&&o.length>0||d&&("string"==typeof d.discover||"string"==typeof d.library)?r.createElement("div",{className:c["header-container"]},"string"==typeof o&&o.length>0?r.createElement("div",{className:c["title-container"],title:o},o):null,!d||"string"!=typeof d.discover&&"string"!=typeof d.library?null:r.createElement(S,{className:c["see-all-container"],title:A("BUTTON_SEE_ALL"),href:d.discover||d.library,tabIndex:-1},r.createElement("div",{className:c.label},A("BUTTON_SEE_ALL")),r.createElement(l,{className:c.icon,icon:"ic_arrow_thin_right"}))):null,"string"==typeof a&&a.length>0?r.createElement("div",{className:c["message-container"],title:a},a):r.createElement("div",{className:c["meta-items-container"]},s.isValidElementType(E)?i.slice(0,u.CATALOG_PREVIEW_SIZE).map((function(e,t){return r.createElement(E,n(n({},e),{},{key:t,className:_(c["meta-item"],c["poster-shape-poster"],c["poster-shape-".concat(e.posterShape)])}))})):null,Array(Math.max(0,u.CATALOG_PREVIEW_SIZE-i.length)).fill(null).map((function(e,t){return r.createElement("div",{key:t,className:_(c["meta-item"],c["poster-shape-poster"])})}))))};A.Placeholder=d,A.propTypes={className:E.string,title:E.string,message:E.string,items:E.arrayOf(E.shape({posterShape:E.string})),itemComponent:E.elementType,deepLinks:E.shape({discover:E.string,library:E.string})},e.exports=A},2268:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(2601),E=o(6851),_=o(2734),T=o(7841),l=function(e){var t=e.className,o=e.title,n=e.deepLinks,l=r().t;return a.createElement("div",{className:i(t,T["meta-row-placeholder-container"])},a.createElement("div",{className:T["header-container"]},a.createElement("div",{className:T["title-container"],title:"string"==typeof o&&o.length>0?o:null},"string"==typeof o&&o.length>0?o:null),n&&"string"==typeof n.discover?a.createElement(E,{className:T["see-all-container"],title:l("BUTTON_SEE_ALL"),href:n.discover,tabIndex:-1},a.createElement("div",{className:T.label},l("BUTTON_SEE_ALL")),a.createElement(s,{className:T.icon,icon:"ic_arrow_thin_right"})):null),a.createElement("div",{className:T["meta-items-container"]},Array(_.CATALOG_PREVIEW_SIZE).fill(null).map((function(e,t){return a.createElement("div",{key:t,className:T["meta-item"]},a.createElement("div",{className:T["poster-container"]}),a.createElement("div",{className:T["title-bar-container"]},a.createElement("div",{className:T["title-label"]})))}))))};l.propTypes={className:n.string,title:n.string,deepLinks:n.shape({discover:n.string})},e.exports=l},411:(e,t,o)=>{var a=o(2268);e.exports=a},9321:(e,t,o)=>{var a=o(8370);e.exports=a},8787:(e,t,o)=>{var a=["className","title","buttons","children","dataset","onCloseRequest"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(4184),_=o(1665),T=_.useRouteFocused,l=_.useModalsContainer,S=o(6851),u=o(2601),d=o(1665).Modal,c=o(1621),A=function(e){var t=e.className,o=e.title,s=e.buttons,_=e.children,A=e.dataset,I=e.onCloseRequest,O=i(e,a),N=T(),R=l(),m=r.useRef(null),p=r.useCallback((function(e){"function"==typeof I&&I({type:"close",dataset:A,reactEvent:e,nativeEvent:e.nativeEvent})}),[A,I]),h=r.useCallback((function(e){e.nativeEvent.closeModalDialogPrevented||"function"!=typeof I||I({type:"close",dataset:A,reactEvent:e,nativeEvent:e.nativeEvent})}),[A,I]),L=r.useCallback((function(e){e.nativeEvent.closeModalDialogPrevented=!0}),[]);return r.useEffect((function(){var e=function(e){"Escape"===e.code&&R.childNodes[R.childElementCount-2]===m.current&&"function"==typeof I&&I({type:"close",dataset:A,nativeEvent:e})};return N&&window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[N,A,I]),r.createElement(d,n({ref:m},O,{className:E(t,c["modal-container"]),onMouseDown:h}),r.createElement("div",{className:c["modal-dialog-container"],onMouseDown:L},r.createElement(S,{className:c["close-button-container"],title:"Close",onClick:p},r.createElement(u,{className:c.icon,icon:"ic_x"})),"string"==typeof o&&o.length>0?r.createElement("div",{className:c["title-container"],title:o},o):null,r.createElement("div",{className:c["modal-dialog-content"]},_),Array.isArray(s)&&s.length>0?r.createElement("div",{className:c["buttons-container"]},s.map((function(e,t){var o=e.className,a=e.label,i=e.icon,s=e.props;return r.createElement(S,n({title:a},s,{key:t,className:E(o,c["action-button"])}),"string"==typeof i&&i.length>0?r.createElement(u,{className:c.icon,icon:i}):null,"string"==typeof a&&a.length>0?r.createElement("div",{className:c.label},a):null)}))):null))};A.propTypes={className:s.string,title:s.string,buttons:s.arrayOf(s.shape({className:s.string,label:s.string,icon:s.string,props:s.object})),children:s.oneOfType([s.arrayOf(s.node),s.node]),dataset:s.object,onCloseRequest:s.func},e.exports=A},8253:(e,t,o)=>{var a=o(8787);e.exports=a},2035:(e,t,o)=>{var a=["className","mode","direction","title","disabled","dataset","renderLabelContent","renderLabelText","onOpen","onClose","onSelect"],n=["children","className"];function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function r(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?i(Object(o),!0).forEach((function(t){s(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):i(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function s(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function E(){return E=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},E.apply(this,arguments)}function _(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return T(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return T(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}function l(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var S=o(7294),u=o(5697),d=o(4184),c=o(2601),A=o(6851),I=o(9418),O=o(8253),N=o(4024),R=o(7409),m=function(e){var t=e.className,o=e.mode,i=e.direction,s=e.title,T=e.disabled,u=e.dataset,m=e.renderLabelContent,p=e.renderLabelText,h=e.onOpen,L=e.onClose,f=e.onSelect,C=l(e,a),D=_(N(!1),4),g=D[0],v=D[2],P=D[3],y=S.useMemo((function(){return Array.isArray(C.options)?C.options.filter((function(e){return e&&"string"==typeof e.value})):[]}),[C.options]),B=S.useMemo((function(){return Array.isArray(C.selected)?C.selected.filter((function(e){return"string"==typeof e})):[]}),[C.selected]),b=S.useCallback((function(e){"function"==typeof C.onClick&&C.onClick(e),e.nativeEvent.toggleMenuPrevented||P()}),[C.onClick,P]),M=S.useCallback((function(e){e.nativeEvent.toggleMenuPrevented=!0}),[]),U=S.useCallback((function(e){e.nativeEvent.buttonClickPrevented=!0}),[]),W=S.useCallback((function(e){"function"==typeof f&&f({type:"select",value:e.currentTarget.dataset.value,reactEvent:e,nativeEvent:e.nativeEvent,dataset:u}),e.nativeEvent.closeMenuPrevented||v()}),[u,f]),G=S.useRef(!1);S.useLayoutEffect((function(){G.current&&(g?"function"==typeof h&&h({type:"open",dataset:u}):"function"==typeof L&&L({type:"close",dataset:u})),G.current=!0}),[g]);var F=S.useCallback((function(e){var t=e.children,o=e.className,a=l(e,n);return S.createElement(A,E({},a,{className:d(o,R["label-container"],{active:g}),title:s,disabled:T,onClick:b}),"function"==typeof m?m():S.createElement(S.Fragment,null,S.createElement("div",{className:R.label},"function"==typeof p?p():B.length>0?B.map((function(e){var t=y.find((function(t){return t.value===e}));return t&&"string"==typeof t.label?t.label:e})).join(", "):s),S.createElement(c,{className:R.icon,icon:"ic_arrow_thin_down"})),t)}),[g,s,T,y,B,b,m,p]),k=S.useCallback((function(){return S.createElement("div",{className:R["menu-container"],onKeyDown:U,onClick:M},y.length>0?y.map((function(e){var t=e.label,o=e.title,a=e.value;return S.createElement(A,{key:a,className:d(R["option-container"],{selected:B.includes(a)}),title:"string"==typeof o?o:"string"==typeof t?t:a,"data-value":a,onClick:W},S.createElement("div",{className:R.label},"string"==typeof t?t:a),S.createElement("div",{className:R.icon}))})):S.createElement("div",{className:R["no-options-container"]},S.createElement("div",{className:R.label},"No options available")))}),[y,B,U,M,W]),w=S.useMemo((function(){return function(e){return F(r(r(r({},e),C),{},{className:d(t,e.className)}))}}),[C,t,F]);return"modal"===o?F(r(r({},C),{},{className:t,children:g?S.createElement(O,{className:R["modal-container"],title:s,onCloseRequest:v,onKeyDown:U,onClick:M},k()):null})):S.createElement(I,{open:g,direction:i,onCloseRequest:v,renderLabel:w,renderMenu:k})};m.propTypes={className:u.string,mode:u.oneOf(["popup","modal"]),direction:u.any,title:u.string,options:u.arrayOf(u.shape({value:u.string.isRequired,title:u.string,label:u.string})),selected:u.arrayOf(u.string),disabled:u.bool,dataset:u.object,renderLabelContent:u.func,renderLabelText:u.func,onOpen:u.func,onClose:u.func,onSelect:u.func,onClick:u.func},e.exports=m},3981:(e,t,o)=>{var a=o(2035);e.exports=a},6934:(e,t,o)=>{var a=["className","route","query","title","backButton","searchBar","addonsButton","fullscreenButton","navMenu"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return r(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}function s(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=o(4184),l=o(2601),S=o(6851),u=o(9872),d=o(8489),c=o(5430),A=o(923),I=o(4887),O=o(6073).t,N=E.memo((function(e){var t=e.className,r=e.route,_=e.query,N=e.title,R=e.backButton,m=e.searchBar,p=e.addonsButton,h=e.fullscreenButton,L=e.navMenu,f=s(e,a),C=E.useCallback((function(){window.history.back()}),[]),D=i(d(),3),g=D[0],v=D[1],P=D[2],y=E.useCallback((function(e){var t=e.ref,o=e.className,a=e.onClick,n=e.children;return E.createElement(S,{ref:t,className:T(o,I["button-container"],I["menu-button-container"]),tabIndex:-1,onClick:a},E.createElement(l,{className:I.icon,icon:"ic_more"}),n)}),[]);return E.createElement("nav",n({},f,{className:T(t,I["horizontal-nav-bar-container"])}),R?E.createElement(S,{className:T(I["button-container"],I["back-button-container"]),tabIndex:-1,onClick:C},E.createElement(l,{className:I.icon,icon:"ic_back_ios"})):E.createElement("div",{className:I["logo-container"]},E.createElement(u,{className:I.logo,src:o(5313),alt:" "})),"string"==typeof N&&N.length>0?E.createElement("h2",{className:I.title},N):null,E.createElement("div",{className:I.spacing}),m?E.createElement(c,{className:I["search-bar"],query:_,active:"search"===r}):null,E.createElement("div",{className:I.spacing}),p?E.createElement(S,{className:I["button-container"],href:"#/addons",title:O("ADDONS"),tabIndex:-1},E.createElement(l,{className:I.icon,icon:"ic_addons"})):null,h?E.createElement(S,{className:I["button-container"],title:O(g?"EXIT_FULLSCREEN":"ENTER_FULLSCREEN"),tabIndex:-1,onClick:g?P:v},E.createElement(l,{className:I.icon,icon:g?"ic_exit_fullscreen":"ic_fullscreen"})):null,L?E.createElement(A,{renderLabel:y}):null)}));N.displayName="HorizontalNavBar",N.propTypes={className:_.string,route:_.string,query:_.string,title:_.string,backButton:_.bool,searchBar:_.bool,addonsButton:_.bool,fullscreenButton:_.bool,navMenu:_.bool},e.exports=N},1229:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=o(4184),E=o(1665).useRouteFocused,_=o(9418),T=o(4024),l=o(6856),S=function(e){var t=E(),o=a(T(!1),4),n=o[0],r=o[2],S=o[3],u=i.useCallback((function(e){e.nativeEvent.togglePopupPrevented||S()}),[S]),d=i.useCallback((function(e){e.nativeEvent.togglePopupPrevented=!0}),[]),c=i.useMemo((function(){return function(t){var o=t.ref,a=t.className,i=t.children;return e.renderLabel({ref:o,className:s(a,{active:n}),onClick:u,children:i})}}),[n,u,e.renderLabel]),A=i.useCallback((function(){return i.createElement(l,{onClick:d})}),[]);return i.useEffect((function(){t||r()}),[t]),i.createElement(_,{open:n,direction:"bottom-left",onCloseRequest:r,renderLabel:c,renderMenu:A})};S.propTypes={renderLabel:r.func},e.exports=S},6856:(e,t,o)=>{function a(e,t,o,a,n,i,r){try{var s=e[i](r),E=s.value}catch(e){return void o(e)}s.done?t(E):Promise.resolve(E).then(a,n)}function n(e){return function(){var t=this,o=arguments;return new Promise((function(n,i){var r=e.apply(t,o);function s(e){a(r,n,i,s,E,"next",e)}function E(e){a(r,n,i,s,E,"throw",e)}s(void 0)}))}}function i(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return r(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var s=o(7294),E=o(5697),_=o(4184),T=o(1468).useTranslation,l=o(2601),S=o(3662).useServices,u=o(6851),d=o(8489),c=o(552),A=o(1657),I=o(6672).withCoreSuspender,O=o(8147),N=function(e){var t=e.onClick,a=T().t,r=S().core,E=c(),I=A().createTorrentFromMagnet,N=i(d(),3),R=N[0],m=N[1],p=N[2],h=s.useCallback((function(){r.transport.dispatch({action:"Ctx",args:{action:"Logout"}})}),[]),L=s.useCallback(n(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,navigator.clipboard.readText();case 3:t=e.sent,I(t),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),console.error(e.t0);case 10:case"end":return e.stop()}}),e,null,[[0,7]])}))),[]);return s.createElement("div",{className:_(O["nav-menu-container"],"animation-fade-in"),onClick:t},s.createElement("div",{className:O["user-info-container"]},s.createElement("div",{className:O["avatar-container"],style:{backgroundImage:null===E.auth?"url('".concat(o(3028),"')"):E.auth.user.avatar?"url('".concat(E.auth.user.avatar,"')"):"url('".concat(o(1251),"')")}}),s.createElement("div",{className:O["email-container"]},s.createElement("div",{className:O["email-label"]},null===E.auth?a("ANONYMOUS_USER"):E.auth.user.email)),s.createElement(u,{className:O["logout-button-container"],title:null===E.auth?"".concat(a("LOG_IN")," / ").concat(a("SIGN_UP")):a("LOG_OUT"),href:null===E.auth?"#/intro":null,onClick:null!==E.auth?h:null},s.createElement("div",{className:O["logout-label"]},null===E.auth?"".concat(a("LOG_IN")," / ").concat(a("SIGN_UP")):a("LOG_OUT")))),s.createElement("div",{className:O["nav-menu-section"]},s.createElement(u,{className:O["nav-menu-option-container"],title:a(R?"EXIT_FULLSCREEN":"ENTER_FULLSCREEN"),onClick:R?p:m},s.createElement(l,{className:O.icon,icon:R?"ic_exit_fullscreen":"ic_fullscreen"}),s.createElement("div",{className:O["nav-menu-option-label"]},a(R?"EXIT_FULLSCREEN":"ENTER_FULLSCREEN")))),s.createElement("div",{className:O["nav-menu-section"]},s.createElement(u,{className:O["nav-menu-option-container"],title:a("SETTINGS"),href:"#/settings"},s.createElement(l,{className:O.icon,icon:"ic_settings"}),s.createElement("div",{className:O["nav-menu-option-label"]},a("SETTINGS"))),s.createElement(u,{className:O["nav-menu-option-container"],title:a("ADDONS"),href:"#/addons"},s.createElement(l,{className:O.icon,icon:"ic_addons"}),s.createElement("div",{className:O["nav-menu-option-label"]},a("ADDONS"))),s.createElement(u,{className:O["nav-menu-option-container"],title:a("PLAY_URL_MAGNET_LINK"),onClick:L},s.createElement(l,{className:O.icon,icon:"ic_magnet"}),s.createElement("div",{className:O["nav-menu-option-label"]},a("PLAY_URL_MAGNET_LINK"))),s.createElement(u,{className:O["nav-menu-option-container"],title:a("HELP_FEEDBACK"),href:"https://stremio.zendesk.com/",target:"_blank"},s.createElement(l,{className:O.icon,icon:"ic_help"}),s.createElement("div",{className:O["nav-menu-option-label"]},a("HELP_FEEDBACK")))),s.createElement("div",{className:O["nav-menu-section"]},s.createElement(u,{className:O["nav-menu-option-container"],title:a("TERMS_OF_SERVICE"),href:"https://www.stremio.com/tos",target:"_blank"},s.createElement("div",{className:O["nav-menu-option-label"]},a("TERMS_OF_SERVICE"))),s.createElement(u,{className:O["nav-menu-option-container"],title:a("PRIVACY_POLICY"),href:"https://www.stremio.com/privacy",target:"_blank"},s.createElement("div",{className:O["nav-menu-option-label"]},a("PRIVACY_POLICY"))),s.createElement(u,{className:O["nav-menu-option-container"],title:a("ABOUT_STREMIO"),href:"https://www.stremio.com/",target:"_blank"},s.createElement("div",{className:O["nav-menu-option-label"]},a("ABOUT_STREMIO")))))};N.propTypes={onClick:E.func};e.exports=I(N,(function(){return s.createElement("div",{className:O["nav-menu-container"]})}))},923:(e,t,o)=>{var a=o(1229);e.exports=a},3833:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(2601),E=o(1665).useRouteFocused,_=o(6851),T=o(6230),l=o(1657),S=o(6672).withCoreSuspender,u=o(7551),d=function(e){var t=e.className,o=e.query,n=e.active,S=r().t,d=E(),c=l().createTorrentFromMagnet,A=a.useRef(null),I=a.useCallback((function(){n||(window.location="#/search")}),[n]),O=a.useCallback((function(){try{c(A.current.value)}catch(e){}}),[]),N=a.useCallback((function(){if(null!==A.current){var e=new URLSearchParams([["search",A.current.value]]);window.location="#/search?".concat(e.toString())}}),[]);return a.useEffect((function(){d&&n&&A.current.focus()}),[d,n,o]),a.createElement("label",{className:i(t,u["search-bar-container"],{active:n}),onClick:I},n?a.createElement(T,{key:o,ref:A,className:u["search-input"],type:"text",placeholder:S("SEARCH_OR_PASTE_LINK"),defaultValue:o,tabIndex:-1,onChange:O,onSubmit:N}):a.createElement("div",{className:u["search-input"]},a.createElement("div",{className:u["placeholder-label"]},S("SEARCH_OR_PASTE_LINK"))),a.createElement(_,{className:u["submit-button-container"],tabIndex:-1,onClick:N},a.createElement(s,{className:u.icon,icon:"ic_search_link"})))};d.propTypes={className:n.string,query:n.string,active:n.bool};var c=function(e){var t=e.className,o=r().t;return a.createElement("label",{className:i(t,u["search-bar-container"])},a.createElement("div",{className:u["search-input"]},a.createElement("div",{className:u["placeholder-label"]},o("SEARCH_OR_PASTE_LINK"))),a.createElement(_,{className:u["submit-button-container"],tabIndex:-1},a.createElement(s,{className:u.icon,icon:"ic_search_link"})))};c.propTypes=d.propTypes,e.exports=S(d,c)},5430:(e,t,o)=>{var a=o(3833);e.exports=a},1871:(e,t,o)=>{var a=o(6934);e.exports=a},2878:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(6851),E=o(9872),_=o(9842),T=function(e){var t=e.className,o=e.logo,n=e.icon,T=e.label,l=e.href,S=e.selected,u=e.onClick,d=a.useCallback((function(){return"string"==typeof n&&n.length>0?a.createElement(r,{className:_.icon,icon:n}):null}),[n]);return a.createElement(s,{className:i(t,_["nav-tab-button-container"],{selected:S}),title:T,tabIndex:-1,href:l,onClick:u},"string"==typeof o&&o.length>0?a.createElement(E,{className:_.logo,src:o,alt:" ",renderFallback:d}):"string"==typeof n&&n.length>0?a.createElement(r,{className:_.icon,icon:n}):null,"string"==typeof T&&T.length>0?a.createElement("div",{className:_.label},T):null)};T.propTypes={className:n.string,logo:n.string,icon:n.string,label:n.string,href:n.string,selected:n.bool,onClick:n.func},e.exports=T},3908:(e,t,o)=>{var a=o(2878);e.exports=a},6063:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(3908),E=o(7636),_=a.memo((function(e){var t=e.className,o=e.selected,n=e.tabs,_=r().t;return a.createElement("nav",{className:i(t,E["vertical-nav-bar-container"])},Array.isArray(n)?n.map((function(e,t){return a.createElement(s,{key:t,className:E["nav-tab-button"],selected:e.id===o,href:e.href,logo:e.logo,icon:e.icon,label:_(e.label),onClick:e.onClick})})):null)}));_.displayName="VerticalNavBar",_.propTypes={className:n.string,selected:n.string,tabs:n.arrayOf(n.shape({id:n.string,label:n.string,logo:n.string,icon:n.string,href:n.string,onClick:n.func}))},e.exports=_},9798:(e,t,o)=>{var a=o(6063);e.exports=a},2935:(e,t,o)=>{var a=o(1871),n=o(9798);e.exports={HorizontalNavBar:a,VerticalNavBar:n}},8417:(e,t,o)=>{var a=["className","label","dataset","onSelect"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(4184),_=o(2601),T=o(6851),l=o(2168),S=function(e){var t=e.className,o=e.label,s=e.dataset,S=e.onSelect,u=i(e,a),d=r.useCallback((function(e){"function"==typeof S&&S({type:"change-page",value:e.currentTarget.dataset.value,dataset:s,reactEvent:e,nativeEvent:e.nativeEvent})}),[s,S]);return r.createElement("div",n({},u,{className:E(t,l["pagination-input-container"])}),r.createElement(T,{className:l["prev-button-container"],title:"Previous page","data-value":"prev",onClick:d},r.createElement(_,{className:l.icon,icon:"ic_arrow_left"})),r.createElement("div",{className:l["label-container"],title:o},r.createElement("div",{className:l.label},o)),r.createElement(T,{className:l["next-button-container"],title:"Next page","data-value":"next",onClick:d},r.createElement(_,{className:l.icon,icon:"ic_arrow_right"})))};S.propTypes={className:s.string,label:s.string,dataset:s.object,onSelect:s.func},e.exports=S},2391:(e,t,o)=>{var a=o(8417);e.exports=a},7206:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(9192),r=function(e){var t=e.className;return a.createElement("svg",{className:t,viewBox:"0 0 100 100"},a.createElement("circle",{className:i.background,cx:"50",cy:"50",r:"50"}),a.createElement("svg",{className:i.icon,x:"0",y:"25",width:"100",height:"50",viewBox:"0 0 37.14 32"},a.createElement("path",{d:"M 9.14,0 37.14,16 9.14,32 Z"})))};r.propTypes={className:n.string},e.exports=r},926:(e,t,o)=>{var a=o(7206);e.exports=a},1804:(e,t,o)=>{var a=["open","direction","renderLabel","renderMenu","dataset","onCloseRequest"];function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?n(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function s(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return E(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return E(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}function _(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var T=o(7294),l=o(5697),S=o(4184),u=o(6413).ZP,d=o(1665).useRouteFocused,c=o(194),A=function e(t){if(t===document.documentElement)return t;var o=window.getComputedStyle(t);return-1!==o.overflowY.indexOf("auto")||-1!==o.overflowY.indexOf("scroll")?t:e(t.parentElement)},I=function(e){var t=e.open,o=e.direction,n=e.renderLabel,E=e.renderMenu,l=e.dataset,I=e.onCloseRequest,O=_(e,a),N=d(),R=T.useRef(null),m=T.useRef(null),p=s(T.useState(null),2),h=p[0],L=p[1],f=T.useCallback((function(e){e.nativeEvent.closePopupPrevented=!0}),[]);return T.useEffect((function(){var e=function(e){if(!e.closePopupPrevented&&"function"==typeof I){var t={type:"close",nativeEvent:e,dataset:l};switch(e.type){case"keydown":"Escape"===e.code&&I(t);break;case"mousedown":case"pointerdown":e.target===document.documentElement||R.current.contains(e.target)||I(t)}}};return N&&t&&(window.addEventListener("keydown",e),window.addEventListener("mousedown",e),window.addEventListener("pointerdown",e)),function(){window.removeEventListener("keydown",e),window.removeEventListener("mousedown",e),window.removeEventListener("pointerdown",e)}}),[N,t,I,l]),T.useLayoutEffect((function(){if(t){var e=[],o=A(R.current).getBoundingClientRect(),a=R.current.getBoundingClientRect(),n=m.current.getBoundingClientRect(),i={left:a.left-o.left,top:a.top-o.top,right:o.width+o.left-(a.left+a.width),bottom:o.height+o.top-(a.top+a.height)};n.height<=i.bottom?e.push("bottom"):n.height<=i.top?e.push("top"):i.bottom>=i.top?e.push("bottom"):e.push("top"),n.width<=i.right+a.width?e.push("right"):n.width<=i.left+a.width?e.push("left"):i.right>i.left?e.push("right"):e.push("left"),L(e.join("-"))}else L(null)}),[t]),n(i(i({},O),{},{ref:R,className:S(c["label-container"],O.className,{active:t}),children:t?T.createElement(u,{ref:m,className:S(c["menu-container"],r({},c["menu-direction-".concat(h)],!o),r({},c["menu-direction-".concat(o)],o)),autoFocus:!1,lockProps:{onMouseDown:f}},E()):null}))};I.propTypes={open:l.bool,direction:l.oneOf(["top-left","bottom-left","top-right","bottom-right"]),renderLabel:l.func.isRequired,renderMenu:l.func.isRequired,dataset:l.object,onCloseRequest:l.func},e.exports=I},9418:(e,t,o)=>{var a=o(1804);e.exports=a},6182:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(6230),E=o(4830),_=o(330),T=function(e){var t=e.className,o=e.title,n=e.value,E=e.onChange;return a.createElement("label",{title:o,className:i(t,_["search-bar-container"])},a.createElement(s,{className:_["search-input"],type:"text",placeholder:o,value:n,onChange:E}),a.createElement(r,{className:_.icon,icon:"ic_search"}))};T.Placeholder=E,T.propTypes={className:n.string,title:n.string,value:n.string,onChange:n.func},e.exports=T},3994:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(3109),E=function(e){var t=e.className,o=e.title;return a.createElement("div",{className:i(t,s["search-bar-container"])},a.createElement("div",{className:s["search-input"]},o),a.createElement(r,{className:s.icon,icon:"ic_search"}))};E.propTypes={className:n.string,title:n.string},e.exports=E},4830:(e,t,o)=>{var a=o(3994);e.exports=a},6798:(e,t,o)=>{var a=o(6182);e.exports=a},5005:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(2601),E=o(1665).useRouteFocused,_=o(3662).useServices,T=o(6851),l=o(6230),S=o(4530),u=function(e){var t=e.className,o=e.url,n=r().t,u=_().core,d=a.useRef(null),c=E(),A=a.useCallback((function(){null!==d.current&&d.current.select()}),[]),I=a.useCallback((function(){null!==d.current&&(d.current.select(),document.execCommand("copy"))}),[]);return a.useEffect((function(){c&&null!==d.current&&d.current.select()}),[c]),a.useEffect((function(){u.transport.analytics({event:"Share",args:{url:o}})}),[o]),a.createElement("div",{className:i(t,S["share-prompt-container"])},a.createElement("div",{className:S["buttons-container"]},a.createElement(T,{className:i(S["button-container"],S["facebook-button"]),title:"Facebook",href:"https://www.facebook.com/sharer/sharer.php?u=".concat(o),target:"_blank"},a.createElement(s,{className:S.icon,icon:"ic_facebook"}),a.createElement("div",{className:S.label},"Facebook")),a.createElement(T,{className:i(S["button-container"],S["twitter-button"]),title:"Twitter",href:"https://twitter.com/home?status=".concat(o),target:"_blank"},a.createElement(s,{className:S.icon,icon:"ic_twitter"}),a.createElement("div",{className:S.label},"Twitter"))),a.createElement("div",{className:S["url-container"]},a.createElement(l,{ref:d,className:S["url-text-input"],type:"text",readOnly:!0,defaultValue:o,onClick:A,tabIndex:-1}),a.createElement(T,{className:S["copy-button"],title:"Copy to clipboard",onClick:I},a.createElement(s,{className:S.icon,icon:"ic_link"}),a.createElement("div",{className:S.label},n("COPY")))))};u.propTypes={className:n.string,url:n.string},e.exports=u},9393:(e,t,o)=>{var a=o(5005);e.exports=a},4068:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=o(4184),E=o(1665).useRouteFocused,_=o(4),T=o(1549),l=o(5036),S=function(e){var t=e.className,o=e.value,n=e.buffered,r=e.minimumValue,S=e.maximumValue,u=e.disabled,d=e.onSlide,c=e.onComplete,A=T(null===r||isNaN(r)?0:r),I=T(null===S||isNaN(S)?100:S),O=T(null===o||isNaN(o)?0:Math.min(I.current,Math.max(A.current,o))),N=T(null===n||isNaN(n)?0:Math.min(I.current,Math.max(A.current,n))),R=T(d),m=T(c),p=i.useRef(null),h=E(),L=a(_(),2),f=L[0],C=L[1],D=i.useCallback((function(e){if(null===p.current)return 0;var t=p.current.getBoundingClientRect(),o=t.x,a=t.width;return Math.min(Math.max(e-o,0),a)/a*(I.current-A.current)+A.current}),[]),g=i.useCallback((function(){window.addEventListener("blur",P),window.addEventListener("mouseup",y),window.addEventListener("mousemove",B),document.documentElement.className=s(document.documentElement.className,l["active-slider-within"])}),[]),v=i.useCallback((function(){C(),window.removeEventListener("blur",P),window.removeEventListener("mouseup",y),window.removeEventListener("mousemove",B);var e=document.documentElement.className.split(" "),t=e.indexOf(l["active-slider-within"]);-1!==t&&(e.splice(t,1),document.documentElement.className=s(e))}),[]),P=i.useCallback((function(){"function"==typeof R.current&&R.current(O.current),"function"==typeof m.current&&m.current(O.current),v()}),[]),y=i.useCallback((function(e){var t=D(e.clientX);"function"==typeof m.current&&m.current(t),v()}),[]),B=i.useCallback((function(e){f((function(){var t=D(e.clientX);"function"==typeof R.current&&R.current(t)}))}),[]),b=i.useCallback((function(e){if(0===e.button){var t=D(e.clientX);"function"==typeof R.current&&R.current(t),g()}}),[]);i.useLayoutEffect((function(){h&&!u||v()}),[h,u]),i.useLayoutEffect((function(){return function(){v()}}),[]);var M=Math.max(0,Math.min(1,(O.current-A.current)/(I.current-A.current))),U=Math.max(0,Math.min(1,(N.current-A.current)/(I.current-A.current)));return i.createElement("div",{ref:p,className:s(t,l["slider-container"],{disabled:u}),onMouseDown:b},i.createElement("div",{className:l.layer},i.createElement("div",{className:l.track})),i.createElement("div",{className:l.layer},i.createElement("div",{className:l["track-before"],style:{width:"calc(100% * ".concat(U,")")}})),i.createElement("div",{className:l.layer},i.createElement("div",{className:l["track-after"],style:{width:"calc(100% * ".concat(M,")")}})),i.createElement("div",{className:l.layer},i.createElement("svg",{className:l.thumb,style:{marginLeft:"calc(100% * ".concat(M,")")},viewBox:"0 0 10 10"},i.createElement("circle",{cx:"5",cy:"5",r:"5"}))))};S.propTypes={className:r.string,value:r.number,buffered:r.number,minimumValue:r.number,maximumValue:r.number,disabled:r.bool,onSlide:r.func,onComplete:r.func},e.exports=S},6e3:(e,t,o)=>{var a=o(4068);e.exports=a},9009:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){i(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var r=o(7294),s=o(3662).useServices,E=o(5697),_=o(4184),T=o(1468).useTranslation,l=o(6851),S=o(552),u=o(6672).withCoreSuspender,d=o(7985),c=function(e){var t=e.className,o=T().t,a=s().core,i=S(),E=r.useCallback((function(){var e=new Date;e.setMonth(e.getMonth()+1),a.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},i.settings),{},{streamingServerWarningDismissed:e})}})}),[i.settings]),u=r.useCallback((function(){var e=new Date;e.setFullYear(e.getFullYear()+50),a.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},i.settings),{},{streamingServerWarningDismissed:e})}})}),[i.settings]);return!isNaN(i.settings.streamingServerWarningDismissed.getTime())&&i.settings.streamingServerWarningDismissed.getTime()>Date.now()?null:r.createElement("div",{className:_(t,d["warning-container"])},r.createElement("div",{className:d["warning-statement"]},o("SETTINGS_SERVER_UNAVAILABLE")),r.createElement("a",{href:"https://www.stremio.com/download-service",target:"_blank",rel:"noreferrer"},r.createElement(l,{className:d["warning-button"],title:o("SERVICE_INSTALL"),tabIndex:-1},r.createElement("div",{className:d["warning-label"]},o("SERVICE_INSTALL")))),r.createElement(l,{className:d["warning-button"],title:o("WARNING_STREAMING_SERVER_LATER"),onClick:E,tabIndex:-1},r.createElement("div",{className:d["warning-label"]},o("WARNING_STREAMING_SERVER_LATER"))),r.createElement(l,{className:d["warning-button"],title:o("DONT_SHOW_AGAIN"),onClick:u,tabIndex:-1},r.createElement("div",{className:d["warning-label"]},o("DONT_SHOW_AGAIN"))))};c.propTypes={className:E.string},e.exports=u(c)},861:(e,t,o)=>{var a=o(9009);e.exports=a},1007:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},a.apply(this,arguments)}var n=o(7294),i=o(5697),r=o(4184),s=o(5725),E=n.forwardRef((function(e,t){var o=n.useCallback((function(t){"function"==typeof e.onKeyDown&&e.onKeyDown(t),"Enter"!==t.key||t.nativeEvent.submitPrevented||"function"!=typeof e.onSubmit||e.onSubmit(t)}),[e.onKeyDown,e.onSubmit]);return n.createElement("input",a({size:1,autoCorrect:"off",autoCapitalize:"off",autoComplete:"off",spellCheck:!1,tabIndex:0},e,{ref:t,className:r(e.className,s["text-input"],{disabled:e.disabled}),onKeyDown:o}))}));E.displayName="TextInput",E.propTypes={className:i.string,disabled:i.bool,onKeyDown:i.func,onSubmit:i.func},e.exports=E},6230:(e,t,o)=>{var a=o(1007);e.exports=a},6049:(e,t,o)=>{var a=o(7294).createContext({show:function(){},clear:function(){}});a.displayName="ToastContext",e.exports=a},3345:(e,t,o)=>{var a=["title","message","dataset","onSelect","onClose"];function n(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var i=o(7294),r=o(5697),s=o(4184),E=o(2601),_=o(6851),T=o(9775),l=function(e){var t=e.title,o=e.message,r=e.dataset,l=e.onSelect,S=e.onClose,u=n(e,a),d=i.useMemo((function(){return["success","alert","error"].includes(u.type)?u.type:"success"}),[u.type]),c=i.useMemo((function(){return"string"==typeof u.icon?u.icon:"success"===d?"ic_check":"error"===d?"ic_warning":null}),[d,u.icon]),A=i.useCallback((function(e){e.nativeEvent.selectToastPrevented||"function"!=typeof l||l({type:"select",dataset:r,reactEvent:e,nativeEvent:e.nativeEvent}),e.nativeEvent.closeToastPrevented||"function"!=typeof S||S({type:"close",dataset:r,reactEvent:e,nativeEvent:e.nativeEvent})}),[r,l,S]),I=i.useCallback((function(e){e.nativeEvent.selectToastPrevented=!0,"function"==typeof S&&S({type:"close",dataset:r,reactEvent:e,nativeEvent:e.nativeEvent})}),[r,S]);return i.createElement(_,{className:s(T["toast-item-container"],T[d]),tabIndex:-1,onClick:A},"string"==typeof c&&c.length>0?i.createElement("div",{className:T["icon-container"]},i.createElement(E,{className:T.icon,icon:c})):null,i.createElement("div",{className:T["info-container"]},"string"==typeof t&&t.length>0?i.createElement("div",{className:T["title-container"]},t):null,"string"==typeof o&&o.length>0?i.createElement("div",{className:T["message-container"]},o):null),i.createElement(_,{className:T["close-button-container"],title:"Close",tabIndex:-1,onClick:I},i.createElement(E,{className:T.icon,icon:"ic_x"})))};l.propTypes={type:r.oneOf(["success","alert","error"]),title:r.string,message:r.string,icon:r.string,dataset:r.object,onSelect:r.func,onClose:r.func},e.exports=l},5008:(e,t,o)=>{var a=o(3345);e.exports=a},9076:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},a.apply(this,arguments)}function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?n(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function s(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return E(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return E(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var _=o(7294),T=o(5697),l=o(5008),S=o(6049),u=function(e){var t=e.className,o=e.children,n=s(_.useState(null),2),r=n[0],E=n[1],T=_.useReducer((function(e,t){switch(t.type){case"add":return e.concat(t.item);case"remove":return e.filter((function(e){return e.id!==t.id}));case"clear":return[];default:return e}}),[]),u=s(T,2),d=u[0],c=u[1],A=_.useCallback((function(e){clearTimeout(e.dataset.id),c({type:"remove",id:e.dataset.id})}),[]),I=_.useMemo((function(){var e=[];return{addFilter:function(t){e.push(t)},removeFilter:function(t){var o=e.indexOf(t);o>-1&&e.splice(o,1)},show:function(t){if(!e.some((function(e){return e(t)}))){var o="number"!=typeof t.timeout||isNaN(t.timeout)?3e3:t.timeout,a=setTimeout((function(){c({type:"remove",id:a})}),o);c({type:"add",item:i(i({},t),{},{id:a,dataset:i(i({},t.dataset),{},{id:a}),onClose:A})})}},clear:function(){c({type:"clear"})}}}),[]);return _.createElement(S.Provider,{value:I},r instanceof HTMLElement?o:null,_.createElement("div",{ref:E,className:t},d.map((function(e,t){return _.createElement(l,a({key:t},e))}))))};u.propTypes={className:T.string,children:T.node},e.exports=u},18:(e,t,o)=>{var a=o(9076),n=o(7263);e.exports={ToastProvider:a,useToast:n}},7263:(e,t,o)=>{var a=o(7294),n=o(6049);e.exports=function(){return a.useContext(n)}},9309:e=>{e.exports=function(e){return function(t,o){return isNaN(e[t])&&isNaN(e[o])?t.localeCompare(o):isNaN(e[t])?e[o]===Number.NEGATIVE_INFINITY?-1:1:isNaN(e[o])?e[t]===Number.NEGATIVE_INFINITY?1:-1:e[o]-e[t]}}},3418:(e,t,o)=>{var a=o(335),n=[{label:"EXTERNAL_PLAYER_DISABLED",value:"internal"}];n="ios"===a.name?n.concat([{label:"VLC",value:"vlc"},{label:"Outplayer",value:"outplayer"}]):"android"===a.name?n.concat([{label:"EXTERNAL_PLAYER_ALLOW_CHOOSING",value:"choose"},{label:"VLC",value:"vlc"},{label:"Just Player",value:"justplayer"},{label:"MX Player",value:"mxplayer"}]):["windows","macos","linux"].includes(a.name)?n.concat([{label:"VLC",value:"vlc"}]):n.concat([{label:"M3U Playlist",value:"m3u"}]),e.exports=n},9324:e=>{e.exports=function(e){return Array.from(e.children).reduce((function(t,o,a){return(function(e,t){var o=t.offsetTop,a=t.offsetTop+t.clientHeight,n=e.scrollTop,i=e.scrollTop+e.clientHeight;return o>=n&&a<=i||o<n&&n<a||o<i&&i<a})(e,o)&&(null===t?t={start:a,end:a}:t.end=a),t}),null)}},6590:(e,t,o)=>{var a=o(8512),n=o(6851),i=o(9666),r=o(8809),s=o(8006),E=o(9872),_=o(5748),T=o(1297),l=o(8277),S=o(3070),u=o(9321),d=o(8253),c=o(3981),A=o(2935),I=A.HorizontalNavBar,O=A.VerticalNavBar,N=o(2391),R=o(926),m=o(9418),p=o(6798),h=o(861),L=o(9393),f=o(6e3),C=o(6230),D=o(18),g=D.ToastProvider,v=D.useToast,P=o(9309),y=o(2734),B=o(6672),b=B.withCoreSuspender,M=B.useCoreSuspender,U=o(9324),W=o(5232),G=o(8832),F=o(8803),k=o(6649),w=o(4),H=o(4024),V=o(8489),Y=o(1549),z=o(1535),x=o(3760),K=o(552),j=o(432),Q=o(1657),X=o(335),$=o(3418);e.exports={AddonDetailsModal:a,Button:n,Checkbox:i,ColorInput:r,DelayedRenderer:s,Image:E,LibItem:_,MainNavBars:T,MetaItem:l,MetaPreview:S,MetaRow:u,ModalDialog:d,Multiselect:c,HorizontalNavBar:I,VerticalNavBar:O,PaginationInput:N,PlayIconCircleCentered:R,Popup:m,SearchBar:p,StreamingServerWarning:h,SharePrompt:L,Slider:f,TextInput:C,ToastProvider:g,useToast:v,comparatorWithPriorities:P,CONSTANTS:y,withCoreSuspender:b,useCoreSuspender:M,getVisibleChildrenRange:U,interfaceLanguages:W,languageNames:G,routesRegexp:F,translateOption:k,useAnimationFrame:w,useBinaryState:H,useFullscreen:V,useLiveRef:Y,useModelState:z,useOnScrollToBottom:x,useProfile:K,useStreamingServer:j,useTorrent:Q,platform:X,externalPlayerOptions:$}},335:(e,t,o)=>{var a,n;var i=o(1206).parse((null===(a=window.navigator)||void 0===a?void 0:a.userAgent)||""),r=["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document?"ios":((null==i||null===(n=i.os)||void 0===n?void 0:n.name)||"unknown").toLowerCase();e.exports={name:r,isMobile:function(){return"ios"===r||"android"===r}}},8803:e=>{e.exports={intro:{regexp:/^\/intro$/,urlParamsNames:[]},board:{regexp:/^\/?$/,urlParamsNames:[]},discover:{regexp:/^\/discover(?:\/([^/]*)\/([^/]*)\/([^/]*))?$/,urlParamsNames:["transportUrl","type","catalogId"]},library:{regexp:/^\/library(?:\/([^/]*))?$/,urlParamsNames:["type"]},continuewatching:{regexp:/^\/continuewatching(?:\/([^/]*))?$/,urlParamsNames:["type"]},search:{regexp:/^\/search$/,urlParamsNames:[]},metadetails:{regexp:/^\/(?:metadetails|detail)\/([^/]*)\/([^/]*)(?:\/([^/]*))?$/,urlParamsNames:["type","id","videoId"]},addons:{regexp:/^\/addons(?:\/([^/]*)(?:\/([^/]*)\/([^/]*))?)?$/,urlParamsNames:["type","transportUrl","catalogId"]},settings:{regexp:/^\/settings$/,urlParamsNames:[]},player:{regexp:/^\/player\/([^/]*)(?:\/([^/]*)\/([^/]*)\/([^/]*)\/([^/]*)\/([^/]*))?$/,urlParamsNames:["stream","streamTransportUrl","metaTransportUrl","type","id","videoId"]}}},6649:(e,t,o)=>{var a=o(6073).t;e.exports=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",o="".concat(t).concat(e),n=a(o,{defaultValue:a(o.toUpperCase(),{defaultValue:null})});return null!=n?n:e.charAt(0).toUpperCase()+e.slice(1)}},4:(e,t,o)=>{var a=o(7294);e.exports=function(){var e=a.useRef(null),t=a.useCallback((function(){cancelAnimationFrame(e.current),e.current=null}),[]);return[a.useCallback((function(o){t(),e.current=requestAnimationFrame((function(){o(),e.current=null}))}),[]),t]}},4024:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294);e.exports=function(e){var t=a(i.useState(!!e),2),o=t[0],n=t[1],r=i.useCallback((function(){n(!0)}),[]),s=i.useCallback((function(){n(!1)}),[]),E=i.useCallback((function(){n(!o)}),[o]);return[o,r,s,E]}},8489:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294);e.exports=function(){var e=a(i.useState(document.fullscreenElement===document.documentElement),2),t=e[0],o=e[1],n=i.useCallback((function(){document.documentElement.requestFullscreen()}),[]),r=i.useCallback((function(){document.exitFullscreen()}),[]),s=i.useCallback((function(){t?r():n()}),[t]);return i.useEffect((function(){var e=function(){o(document.fullscreenElement===document.documentElement)};return document.addEventListener("fullscreenchange",e),function(){document.removeEventListener("fullscreenchange",e)}}),[]),[t,n,r,s]}},1549:(e,t,o)=>{var a=o(7294);e.exports=function(e){var t=a.useRef();return t.current=e,t}},1535:(e,t,o)=>{var a=["action"];function n(e,t,o,a,n,i,r){try{var s=e[i](r),E=s.value}catch(e){return void o(e)}s.done?t(E):Promise.resolve(E).then(a,n)}function i(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return r(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}function s(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(3096),T=o(2307),l=o(394),S=o(6672).useCoreSuspender,u=o(1665).useRouteFocused,d=o(3662).useServices;e.exports=function(e){var t=e.action,o=s(e,a),r=d().core,c=u(),A=E.useRef(!1),I=i(E.useMemo((function(){return[o.model,o.timeout,o.map,o.deps]}),[]),4),O=I[0],N=I[1],R=I[2],m=I[3],p=S().getState,h=i(E.useReducer((function(e,t){return Object.keys(e).reduce((function(o,a){return o[a]=T(e[a],t[a])?e[a]:t[a],o}),{})}),void 0,(function(){return"function"==typeof R?R(p(O)):p(O)})),2),L=h[0],f=h[1];return E.useInsertionEffect((function(){t&&r.transport.dispatch(t,O)}),[t]),E.useInsertionEffect((function(){return function(){r.transport.dispatch({action:"Unload"},O)}}),[]),E.useInsertionEffect((function(){var e=(function(){var e,t=(e=regeneratorRuntime.mark((function e(t){var o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(-1!==t.indexOf(O)||Array.isArray(m)&&0!==l(m,t).length){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,r.transport.getState(O);case 4:o=e.sent,f("function"==typeof R?R(o):o);case 6:case"end":return e.stop()}}),e)})),function(){var t=this,o=arguments;return new Promise((function(a,i){var r=e.apply(t,o);function s(e){n(r,a,i,s,E,"next",e)}function E(e){n(r,a,i,s,E,"throw",e)}s(void 0)}))});return function(e){return t.apply(this,arguments)}})(),t=_(e,N);return c&&(r.transport.on("NewState",t),A.current&&e([O])),function(){t.cancel(),r.transport.off("NewState",t)}}),[c]),E.useInsertionEffect((function(){A.current=!0}),[]),L}},3760:(e,t,o)=>{var a=o(7294);e.exports=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=a.useRef(!1),n=a.useCallback((function(a){a.target.scrollTop+a.target.clientHeight>=a.target.scrollHeight-t?o.current||(o.current=!0,"function"==typeof e&&e(a)):o.current=!1}),[e]);return n}},552:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){i(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var r=o(1535),s=function(e){return n(n({},e.profile),{},{settings:n(n({},e.profile.settings),{},{streamingServerWarningDismissed:new Date("string"==typeof e.profile.settings.streamingServerWarningDismissed?e.profile.settings.streamingServerWarningDismissed:NaN)})})};e.exports=function(){return r({model:"ctx",map:s})}},432:(e,t,o)=>{var a=o(1535);e.exports=function(){return a({model:"streaming_server"})}},1657:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(9566),s=o(3662).useServices,E=o(7263),_=o(432);e.exports=function(){var e=s().core,t=_(),o=E(),n=i.useRef(null),T=i.useCallback((function(t){var a=r.decode(t);a&&"string"==typeof a.infoHash&&(e.transport.dispatch({action:"StreamingServer",args:{action:"CreateTorrent",args:t}}),clearTimeout(n.current),n.current=setTimeout((function(){o.show({type:"error",title:"It's taking a long time to get metadata from the torrent.",timeout:1e4})}),1e4))}),[]);return i.useEffect((function(){null!==t.torrent&&("Ready"===a(t.torrent,2)[1].type&&clearTimeout(n.current))}),[t.torrent]),i.useEffect((function(){return function(){return clearTimeout(n.current)}}),[]),{createTorrentFromMagnet:T}}},9900:(e,t,o)=>{var a=["className","autoFocus","disabled","children"];function n(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var i=o(7294),r=o(3935),s=o(5697),E=o(4184),_=o(6413).ZP,T=o(8795).useModalsContainer,l=i.forwardRef((function(e,t){var o=e.className,s=e.autoFocus,l=e.disabled,S=e.children,u=n(e,a),d=T();return r.createPortal(i.createElement(_,{ref:t,className:E(o,"modal-container"),autoFocus:!!s,disabled:!!l,lockProps:u},S),d)}));l.displayName="Modal",l.propTypes={className:s.string,autoFocus:s.bool,disabled:s.bool,children:s.node},e.exports=l},5717:(e,t,o)=>{var a=o(9900);e.exports=a},7033:(e,t,o)=>{var a=o(7294).createContext(null);a.displayName="ModalsContainerContext",e.exports=a},115:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=o(7033),E=function(e){var t=e.children,o=a(i.useState(null),2),n=o[0],r=o[1];return i.createElement(s.Provider,{value:n},n instanceof HTMLElement?t:null,i.createElement("div",{ref:r,className:"modals-container"}))};E.propTypes={children:r.node},e.exports=E},8795:(e,t,o)=>{var a=o(115),n=o(4163);e.exports={ModalsContainerProvider:a,useModalsContainer:n}},4163:(e,t,o)=>{var a=o(7294),n=o(7033);e.exports=function(){return a.useContext(n)}},9314:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(8795).ModalsContainerProvider,r=function(e){var t=e.children;return a.createElement("div",{className:"route-container"},a.createElement(i,null,a.createElement("div",{className:"route-content"},t)))};r.propTypes={children:n.node},e.exports=r},4777:(e,t,o)=>{var a=o(9314);e.exports=a},9010:(e,t,o)=>{var a=o(7294).createContext(!0);a.displayName="RouteFocusedContext",e.exports=a},6267:(e,t,o)=>{var a=o(9010),n=o(1517);e.exports={RouteFocusedProvider:a.Provider,useRouteFocused:n}},1517:(e,t,o)=>{var a=o(7294),n=o(9010);e.exports=function(){return a.useContext(n)}},8968:(e,t,o)=>{var a=["className","onPathNotMatch","onRouteChange"];function n(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return i(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return i(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}function r(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var s=o(7294),E=o(9864),_=o(5697),T=o(4184),l=o(8575),S=o(2307),u=o(6267).RouteFocusedProvider,d=o(4777),c=o(3295),A=o(598),I=function(e){var t=e.className,o=e.onPathNotMatch,i=e.onRouteChange,_=r(e,a),I=s.useMemo((function(){return _.viewsConfig}),[]),O=n(s.useState((function(){return Array(I.length).fill(null)})),2),N=O[0],R=O[1];return s.useLayoutEffect((function(){var e=function(){var e=l.parse(window.location.hash.slice(1)),t=e.pathname,a=e.query,n=new URLSearchParams("string"==typeof a?a:""),r=c(I,"string"==typeof t?t:"");if(null!==r){var s=A(r,"string"==typeof t?t:""),_=I.findIndex((function(e){return e.includes(r)})),T=I[_].findIndex((function(e){return e===r}));"function"==typeof i&&i(r,s,n)||R((function(e){return e.slice(0,I.length).map((function(e,t){return t<_?e:t===_?{key:"".concat(_).concat(T),component:r.component,urlParams:null!==e&&S(e.urlParams,s)?e.urlParams:s,queryParams:null!==e&&S(Array.from(e.queryParams.entries()),Array.from(n.entries()))?e.queryParams:n}:null}))}))}else if("function"==typeof o){var u=o();E.isValidElementType(u)&&R((function(e){return e.slice(0,I.length).concat({key:"-1",component:u})}))}};return window.addEventListener("hashchange",e),e(),function(){window.removeEventListener("hashchange",e)}}),[o,i]),s.createElement("div",{className:T(t,"routes-container")},N.filter((function(e){return null!==e})).map((function(e,t,o){var a=e.key,n=e.component,i=e.urlParams,r=e.queryParams;return s.createElement(u,{key:a,value:t===o.length-1},s.createElement(d,null,s.createElement(n,{urlParams:i,queryParams:r})))})))};I.propTypes={className:_.string,onPathNotMatch:_.func,onRouteChange:_.func,viewsConfig:_.arrayOf(_.arrayOf(_.exact({regexp:_.instanceOf(RegExp).isRequired,urlParamsNames:_.arrayOf(_.string).isRequired,component:_.elementType.isRequired}))).isRequired},e.exports=I},6013:(e,t,o)=>{var a=o(8968);e.exports=a},3295:e=>{function t(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=(function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(e);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return o(e,t)})(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,s=!0,E=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return s=e.done,e},e:function(e){E=!0,r=e},f:function(){try{s||null==a.return||a.return()}finally{if(E)throw r}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}e.exports=function(e,o){var a,n=t(e);try{for(n.s();!(a=n.n()).done;){var i,r=t(a.value);try{for(r.s();!(i=r.n()).done;){var s=i.value;if(o.match(s.regexp))return s}}catch(e){r.e(e)}finally{r.f()}}}catch(e){n.e(e)}finally{n.f()}return null}},598:e=>{e.exports=function(e,t){var o=t.match(e.regexp);return e.urlParamsNames.reduce((function(e,t,a){return Array.isArray(o)&&"string"==typeof o[a+1]?e[t]=decodeURIComponent(o[a+1]):e[t]=null,e}),{path:t})}},1665:(e,t,o)=>{var a=o(6267).useRouteFocused,n=o(8795).useModalsContainer,i=o(5717),r=o(6013);e.exports={useRouteFocused:a,useModalsContainer:n,Modal:i,Router:r}},2788:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(2601),E=o(6590),_=E.Button,T=E.Image,l=o(2638),S=function(e){var t=e.className,o=e.id,n=e.name,E=e.version,S=e.logo,u=e.description,d=e.types,c=e.behaviorHints,A=e.installed,I=e.onToggle,O=e.onConfigure,N=e.onShare,R=e.dataset,m=r().t,p=a.useCallback((function(e){"function"==typeof I&&I({type:"toggle",nativeEvent:e.nativeEvent,reactEvent:e,dataset:R})}),[I,R]),h=a.useCallback((function(e){"function"==typeof O&&O({type:"configure",nativeEvent:e.nativeEvent,reactEvent:e,dataset:R})}),[O,R]),L=a.useCallback((function(e){"function"==typeof N&&N({type:"share",nativeEvent:e.nativeEvent,reactEvent:e,dataset:R})}),[N,R]),f=a.useCallback((function(e){"Enter"===e.key&&"function"==typeof I&&I({type:"toggle",nativeEvent:e.nativeEvent,reactEvent:e,dataset:R})}),[I,R]),C=a.useCallback((function(){return a.createElement(s,{className:l.icon,icon:"ic_addons"})}),[]);return a.createElement(_,{className:i(t,l["addon-container"]),onKeyDown:f},a.createElement("div",{className:l["logo-container"]},a.createElement(T,{className:l.logo,src:S,alt:" ",renderFallback:C})),a.createElement("div",{className:l["info-container"]},a.createElement("div",{className:l["name-container"],title:"string"==typeof n&&n.length>0?n:o},"string"==typeof n&&n.length>0?n:o),"string"==typeof E&&E.length>0?a.createElement("div",{className:l["version-container"],title:"v.".concat(E)},"v.",E):null,Array.isArray(d)&&d.length>0?a.createElement("div",{className:l["types-container"]},1===d.length?d.join(""):d.slice(0,-1).join(", ")+" & "+d[d.length-1]):null,"string"==typeof u&&u.length>0?a.createElement("div",{className:l["description-container"],title:u},u):null),a.createElement("div",{className:l["buttons-container"]},a.createElement("div",{className:l["action-buttons-container"]},!c.configurationRequired&&c.configurable?a.createElement(_,{className:l["configure-button-container"],title:m("ADDON_CONFIGURE"),tabIndex:-1,onClick:h},a.createElement(s,{className:l.icon,icon:"ic_settings"})):null,a.createElement(_,{className:A?l["uninstall-button-container"]:l["install-button-container"],title:A?m("ADDON_UNINSTALL"):c.configurationRequired?m("ADDON_CONFIGURE"):m("ADDON_INSTALL"),tabIndex:-1,onClick:!A&&c.configurationRequired?h:p},a.createElement("div",{className:l.label},A?m("ADDON_UNINSTALL"):c.configurationRequired?m("ADDON_CONFIGURE"):m("ADDON_INSTALL")))),a.createElement(_,{className:l["share-button-container"],title:m("SHARE_ADDON"),tabIndex:-1,onClick:L},a.createElement(s,{className:l.icon,icon:"ic_share"}),a.createElement("div",{className:l.label},m("SHARE_ADDON")))))};S.propTypes={className:n.string,id:n.string,name:n.string,version:n.string,logo:n.string,description:n.string,types:n.arrayOf(n.string),behaviorHints:n.shape({adult:n.bool,configurable:n.bool,configurationRequired:n.bool,p2p:n.bool}),installed:n.bool,onToggle:n.func,onConfigure:n.func,onShare:n.func,dataset:n.object},e.exports=S},4845:(e,t,o)=>{var a=o(2788);e.exports=a},2994:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},a.apply(this,arguments)}function n(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return i(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return i(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var r=o(7294),s=o(5697),E=o(4184),_=o(1468).useTranslation,T=o(2601),l=o(6590),S=l.AddonDetailsModal,u=l.Button,d=l.Image,c=l.Multiselect,A=l.MainNavBars,I=l.TextInput,O=l.SearchBar,N=l.SharePrompt,R=l.ModalDialog,m=l.useBinaryState,p=l.withCoreSuspender,h=o(4845),L=o(8061),f=o(8916),C=o(290),D=o(146),g=o(5531),v=function(e){var t=e.urlParams,o=e.queryParams,i=_().t,s=L(t),l=f(t),p=n(C(t,o),2),v=p[0],P=p[1],y=D(s,l),B=n(m(!1),3),b=B[0],M=B[1],U=B[2],W=n(m(!1),3),G=W[0],F=W[1],k=W[2],w=r.useRef(null),H=r.useCallback((function(){null!==w.current&&P(w.current.value)}),[P]),V=r.useMemo((function(){return[{className:g["cancel-button"],label:i("BUTTON_CANCEL"),props:{onClick:k}},{label:i("ADDON_ADD"),props:{onClick:H}}]}),[H]),Y=n(r.useState(""),2),z=Y[0],x=Y[1],K=r.useCallback((function(e){x(e.currentTarget.value)}),[]),j=n(r.useState(null),2),Q=j[0],X=j[1],$=r.useCallback((function(){X(null)}),[]),q=r.useCallback((function(e){X(e.dataset.addon)}),[]),J=r.useCallback((function(e){P(e.dataset.addon.transportUrl)}),[P]),Z=r.useCallback((function(e){window.open(e.dataset.addon.transportUrl.replace("manifest.json","configure"))}),[]),ee=r.useCallback((function(){P(null)}),[P]),te=r.useCallback((function(e){return 0===z.length||"string"==typeof e.manifest.name&&e.manifest.name.toLowerCase().includes(z.toLowerCase())||"string"==typeof e.manifest.description&&e.manifest.description.toLowerCase().includes(z.toLowerCase())}),[z]),oe=r.useCallback((function(){return r.createElement(T,{className:g.icon,icon:"ic_addons"})}),[]);return r.useLayoutEffect((function(){k(),x(""),$()}),[t,o]),r.createElement(A,{className:g["addons-container"],route:"addons"},r.createElement("div",{className:g["addons-content"]},r.createElement("div",{className:g["selectable-inputs-container"]},r.createElement(u,{className:g["add-button-container"],title:i("ADD_ADDON"),onClick:F},r.createElement(T,{className:g.icon,icon:"ic_plus"}),r.createElement("div",{className:g["add-button-label"]},i("ADD_ADDON"))),y.map((function(e,t){return r.createElement(c,a({},e,{key:t,className:g["select-input-container"]}))})),r.createElement("div",{className:g.spacing}),r.createElement(O,{className:g["search-bar"],title:i("ADDON_SEARCH"),value:z,onChange:K}),r.createElement(u,{className:g["filter-button"],title:"All filters",onClick:M},r.createElement(T,{className:g["filter-icon"],icon:"ic_filter"}))),null!==s.selected?0===s.selectable.types.length?r.createElement("div",{className:g["message-container"]},"No addons ware installed!"):0===s.catalog.length?r.createElement("div",{className:g["message-container"]},"No addons ware installed for that type!"):r.createElement("div",{className:g["addons-list-container"]},s.catalog.filter(te).map((function(e,t){return r.createElement(h,{key:t,className:E(g.addon,"animation-fade-in"),id:e.manifest.id,name:e.manifest.name,version:e.manifest.version,logo:e.manifest.logo,description:e.manifest.description,types:e.manifest.types,behaviorHints:e.manifest.behaviorHints,installed:e.installed,onToggle:J,onConfigure:Z,onShare:q,dataset:{addon:e}})}))):null!==l.selected?"Err"===l.catalog.content.type?r.createElement("div",{className:g["message-container"]},l.catalog.content.content):"Loading"===l.catalog.content.type?r.createElement("div",{className:g["message-container"]},"Loading!"):r.createElement("div",{className:g["addons-list-container"]},l.catalog.content.content.filter(te).map((function(e,t){return r.createElement(h,{key:t,className:E(g.addon,"animation-fade-in"),id:e.manifest.id,name:e.manifest.name,version:e.manifest.version,logo:e.manifest.logo,description:e.manifest.description,types:e.manifest.types,behaviorHints:e.manifest.behaviorHints,installed:e.installed,onToggle:J,onConfigure:Z,onShare:q,dataset:{addon:e}})}))):r.createElement("div",{className:g["message-container"]},"No select")),b?r.createElement(R,{title:"Addons filters",className:g["filters-modal"],onCloseRequest:U},y.map((function(e,t){return r.createElement(c,a({},e,{key:t,className:g["select-input-container"]}))}))):null,G?r.createElement(R,{className:g["add-addon-modal-container"],title:i("ADD_ADDON"),buttons:V,onCloseRequest:k},r.createElement("div",{className:g.notice},i("ADD_ADDON_DESCRIPTION")),r.createElement(I,{ref:w,className:g["addon-url-input"],type:"text",placeholder:i("PASTE_ADDON_URL"),autoFocus:!0,onSubmit:H})):null,null!==Q?r.createElement(R,{className:g["share-modal-container"],title:i("SHARE_ADDON"),onCloseRequest:$},r.createElement("div",{className:g["title-container"]},r.createElement(d,{className:g.logo,src:Q.manifest.logo,alt:" ",renderFallback:oe}),r.createElement("div",{className:g["name-container"]},r.createElement("span",{className:g.name},"string"==typeof Q.manifest.name&&Q.manifest.name.length>0?Q.manifest.name:Q.manifest.id),"string"==typeof Q.manifest.version&&Q.manifest.version.length>0?r.createElement("span",{className:g.version},"v. ",Q.manifest.version):null)),r.createElement(N,{className:g["share-prompt-container"],url:Q.transportUrl})):null,"string"==typeof v?r.createElement(S,{transportUrl:v,onCloseRequest:ee}):null)};v.propTypes={urlParams:s.shape({path:s.string,transportUrl:s.string,catalogId:s.string,type:s.string}),queryParams:s.instanceOf(URLSearchParams)};e.exports=p(v,(function(){return r.createElement(A,{className:g["addons-container"],route:"addons"})}))},7165:(e,t,o)=>{var a=o(2994);e.exports=a},290:(e,t,o)=>{var a=o(7294);e.exports=function(e,t){var o=a.useMemo((function(){return t.get("addon")}),[t]),n=a.useCallback((function(o){var a=new URLSearchParams(t);"string"==typeof o?a.set("addon",o):a.delete("addon"),window.location.replace("#".concat(e.path,"?").concat(a))}),[e,t]);return[o,n]}},8061:(e,t,o)=>{var a=o(7294),n=o(6590).useModelState;e.exports=function(e){var t=a.useMemo((function(){return"string"!=typeof e.transportUrl&&"string"!=typeof e.catalogId?{action:"Load",args:{model:"InstalledAddonsWithFilters",args:{request:{type:"string"==typeof e.type?e.type:null}}}}:{action:"Unload"}}),[e]);return n({model:"installed_addons",action:t})}},8916:(e,t,o)=>{var a=o(7294),n=o(6590).useModelState;e.exports=function(e){var t=a.useMemo((function(){return"string"==typeof e.type&&"string"==typeof e.transportUrl&&"string"==typeof e.catalogId?{action:"Load",args:{model:"CatalogWithFilters",args:{request:{base:e.transportUrl,path:{resource:"addon_catalog",type:e.type,id:e.catalogId,extra:[]}}}}}:{action:"Unload"}}),[e]);return n({model:"remote_addons",action:t,deps:["ctx"]})}},146:(e,t,o)=>{var a=o(7294),n=o(6073).t,i=o(6590).translateOption;e.exports=function(e,t){var o=a.useMemo((function(){return(function(e,t){var o={title:n("SELECT_CATALOG"),options:t.selectable.catalogs.concat(e.selectable.catalogs).map((function(e){var t=e.name;return{value:e.deepLinks.addons,label:i(t,"ADDON_"),title:i(t,"ADDON_")}})),selected:t.selectable.catalogs.concat(e.selectable.catalogs).filter((function(e){return e.selected})).map((function(e){return e.deepLinks.addons})),renderLabelText:null!==t.selected?function(){var e=t.selectable.catalogs.find((function(e){return e.id===t.selected.request.path.id}));return e?i(e.name,"ADDON_"):t.selected.request.path.id}:null,onSelect:function(e){window.location=e.value}},a={title:n("SELECT_TYPE"),options:null!==e.selected?e.selectable.types.map((function(e){var t=e.type;return{value:e.deepLinks.addons,label:null!==t?i(t,"TYPE_"):n("TYPE_ALL")}})):t.selectable.types.map((function(e){var t=e.type;return{value:e.deepLinks.addons,label:i(t,"TYPE_")}})),selected:null!==e.selected?e.selectable.types.filter((function(e){return e.selected})).map((function(e){return e.deepLinks.addons})):t.selectable.types.filter((function(e){return e.selected})).map((function(e){return e.deepLinks.addons})),renderLabelText:function(){return null!==e.selected?null===e.selected.request.type?n("TYPE_ALL"):i(e.selected.request.type,"TYPE_"):null!==t.selected?i(t.selected.request.path.type,"TYPE_"):a.title},onSelect:function(e){window.location=e.value}};return[o,a]})(e,t)}),[e,t]);return o}},1180:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(4184),s=o(1296),E=o(1468).useTranslation,_=o(6590),T=_.MainNavBars,l=_.MetaRow,S=_.LibItem,u=_.MetaItem,d=_.StreamingServerWarning,c=_.useStreamingServer,A=_.withCoreSuspender,I=_.getVisibleChildrenRange,O=o(6981),N=o(2916),R=o(969);e.exports=A((function(){var e=E().t,t=c(),o=N(),n=a(O(),2),_=n[0],A=n[1],m=o.libraryItems.length>0?1:0,p=i.useRef(),h=i.useCallback((function(){var e=I(p.current);if(null!==e){var t=Math.max(0,e.start-m-5),o=e.end-m+5;o<t||A({start:t,end:o})}}),[m]),L=i.useCallback(s(h,250),[h]);return i.useLayoutEffect((function(){h()}),[_.catalogs,h]),i.createElement("div",{className:R["board-container"]},i.createElement(T,{className:R["board-content-container"],route:"board"},i.createElement("div",{ref:p,className:R["board-content"],onScroll:L},o.libraryItems.length>0?i.createElement(l,{className:r(R["board-row"],R["continue-watching-row"],"animation-fade-in"),title:e("BOARD_CONTINUE_WATCHING"),items:o.libraryItems,itemComponent:S,deepLinks:o.deepLinks}):null,_.catalogs.map((function(e,t){var o;switch(null===(o=e.content)||void 0===o?void 0:o.type){case"Ready":return i.createElement(l,{key:t,className:r(R["board-row"],R["board-row-".concat(e.content.content[0].posterShape)],"animation-fade-in"),title:e.title,items:e.content.content,itemComponent:u,deepLinks:e.deepLinks});case"Err":return i.createElement(l,{key:t,className:r(R["board-row"],"animation-fade-in"),title:e.title,message:e.content.content,deepLinks:e.deepLinks});default:return i.createElement(l.Placeholder,{key:t,className:r(R["board-row"],R["board-row-poster"],"animation-fade-in"),title:e.title,deepLinks:e.deepLinks})}})))),null!==t.settings&&"Err"===t.settings.type?i.createElement(d,{className:R["board-warning-container"]}):null)}),(function(){return i.createElement("div",{className:R["board-container"]},i.createElement(T,{className:R["board-content-container"],route:"board"}))}))},8823:(e,t,o)=>{var a=o(1180);e.exports=a},6981:(e,t,o)=>{var a=o(7294),n=o(3662).useServices,i=o(6590).useModelState;e.exports=function(){var e=n().core,t=a.useMemo((function(){return{action:"Load",args:{model:"CatalogsWithExtra",args:{extra:[]}}}}),[]),o=a.useCallback((function(t){e.transport.dispatch({action:"CatalogsWithExtra",args:{action:"LoadRange",args:t}},"board")}),[]);return[i({model:"board",timeout:1500,action:t}),o]}},2916:(e,t,o)=>{var a=o(6590).useModelState;e.exports=function(){return a({model:"continue_watching_preview"})}},9694:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=o(4184),E=o(2601),_=o(3662).useServices,T=o(6590),l=T.AddonDetailsModal,S=T.DelayedRenderer,u=T.Button,d=T.MainNavBars,c=T.MetaItem,A=T.Image,I=T.MetaPreview,O=T.Multiselect,N=T.ModalDialog,R=T.CONSTANTS,m=T.useBinaryState,p=T.useOnScrollToBottom,h=T.withCoreSuspender,L=o(83),f=o(8674),C=o(820),D=function(e){var t=e.urlParams,n=e.queryParams,r=_().core,T=a(L(t,n),2),h=T[0],D=T[1],g=a(f(h),2),v=g[0],P=g[1],y=a(m(!1),3),B=y[0],b=y[1],M=y[2],U=a(m(!1),3),W=U[0],G=U[1],F=U[2],k=a(i.useState(0),2),w=k[0],H=k[1],V=i.useRef();i.useEffect((function(){var e;"Loading"===(null===(e=h.catalog)||void 0===e?void 0:e.content.type)&&(V.current.scrollTop=0)}),[h.catalog]);var Y=i.useMemo((function(){return null!==h.catalog&&"Ready"===h.catalog.content.type&&h.catalog.content.content[w]?h.catalog.content.content[w]:null}),[h.catalog,w]),z=i.useCallback((function(){null!==Y&&r.transport.dispatch({action:"Ctx",args:{action:"AddToLibrary",args:Y}})}),[Y]),x=i.useCallback((function(){null!==Y&&r.transport.dispatch({action:"Ctx",args:{action:"RemoveFromLibrary",args:Y.id}})}),[Y]),K=i.useCallback((function(e){null===e.target.dataset.index||isNaN(e.target.dataset.index)||H(parseInt(e.target.dataset.index,10))}),[]),j=i.useCallback((function(e){e.currentTarget.dataset.index!==w.toString()&&(e.preventDefault(),e.currentTarget.focus())}),[w]),Q=i.useCallback((function(){P&&D()}),[P,D]),X=p(Q,400);return i.useEffect((function(){M(),F(),H(0)}),[h.selected]),i.createElement(d,{className:C["discover-container"],route:"discover"},i.createElement("div",{className:C["discover-content"]},i.createElement("div",{className:C["catalog-container"]},i.createElement("div",{className:C["selectable-inputs-container"]},v.map((function(e,t){var o=e.title,a=e.options,n=e.selected,r=e.renderLabelText,s=e.onSelect;return i.createElement(O,{key:t,className:C["select-input"],title:o,options:a,selected:n,renderLabelText:r,onSelect:s})})),i.createElement(u,{className:C["filter-container"],title:"All filters",onClick:b},i.createElement(E,{className:C["filter-icon"],icon:"ic_filter"}))),null===h.catalog||h.catalog.installed?null:i.createElement("div",{className:C["missing-addon-warning-container"]},i.createElement("div",{className:C["warning-label"]},"Addon is not installed. Install now?"),i.createElement(u,{className:C["install-button"],title:"Install addon",onClick:G},i.createElement("div",{className:C.label},"Install"))),null===h.catalog?i.createElement(S,{delay:500},i.createElement("div",{className:C["message-container"]},i.createElement(A,{className:C.image,src:o(7740),alt:" "}),i.createElement("div",{className:C["message-label"]},"No catalog selected!"))):"Err"===h.catalog.content.type?i.createElement("div",{className:C["message-container"]},i.createElement(A,{className:C.image,src:o(7740),alt:" "}),i.createElement("div",{className:C["message-label"]},h.catalog.content.content)):"Loading"===h.catalog.content.type?i.createElement("div",{ref:V,className:s(C["meta-items-container"],"animation-fade-in")},Array(R.CATALOG_PAGE_SIZE).fill(null).map((function(e,t){return i.createElement("div",{key:t,className:C["meta-item-placeholder"]},i.createElement("div",{className:C["poster-container"]}),i.createElement("div",{className:C["title-bar-container"]},i.createElement("div",{className:C["title-label"]})))}))):i.createElement("div",{ref:V,className:s(C["meta-items-container"],"animation-fade-in"),onScroll:X,onFocusCapture:K},h.catalog.content.content.map((function(e,t){return i.createElement(c,{key:t,className:s({selected:w===t}),type:e.type,name:e.name,poster:e.poster,posterShape:e.posterShape,playIcon:w===t,deepLinks:e.deepLinks,"data-index":t,onClick:j})})))),null!==Y?i.createElement(I,{className:C["meta-preview-container"],compact:!0,name:Y.name,logo:Y.logo,background:Y.poster,runtime:Y.runtime,releaseInfo:Y.releaseInfo,released:Y.released,description:Y.description,deepLinks:Y.deepLinks,links:Y.links,trailerStreams:Y.trailerStreams,inLibrary:Y.inLibrary,toggleInLibrary:Y.inLibrary?x:z}):null!==h.catalog&&"Loading"===h.catalog.content.type?i.createElement("div",{className:C["meta-preview-container"]}):null),B?i.createElement(N,{title:"Catalog filters",className:C["selectable-inputs-modal"],onCloseRequest:M},v.map((function(e,t){var o=e.title,a=e.options,n=e.selected,r=e.renderLabelText,s=e.onSelect;return i.createElement(O,{key:t,className:C["select-input"],title:o,options:a,selected:n,renderLabelText:r,onSelect:s})}))):null,W&&null!==h.selected?i.createElement(l,{transportUrl:h.selected.request.base,onCloseRequest:F}):null)};D.propTypes={urlParams:r.shape({transportUrl:r.string,type:r.string,catalogId:r.string}),queryParams:r.instanceOf(URLSearchParams)};e.exports=h(D,(function(){return i.createElement(d,{className:C["discover-container"],route:"discover"})}))},1901:(e,t,o)=>{var a=o(9694);e.exports=a},83:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){i(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var r=o(7294),s=o(8575),E=o(3662).useServices,_=o(6590).useModelState,T=function(e){return n(n({},e),{},{catalog:null!==e.catalog&&"Ready"===e.catalog.content.type?n(n({},e.catalog),{},{content:n(n({},e.catalog.content),{},{content:e.catalog.content.content.map((function(e){return n(n({},e),{},{released:new Date("string"==typeof e.released?e.released:NaN)})}))})}):e.catalog})};e.exports=function(e,t){var o=E().core,a=r.useCallback((function(){o.transport.dispatch({action:"CatalogWithFilters",args:{action:"LoadNextPage"}},"discover")}),[]),n=r.useMemo((function(){if("string"!=typeof e.transportUrl||"string"!=typeof e.type||"string"!=typeof e.catalogId)return{action:"Load",args:{model:"CatalogWithFilters",args:null}};var o=s.parse(e.transportUrl).hostname;return"string"==typeof o&&o.length>0?{action:"Load",args:{model:"CatalogWithFilters",args:{request:{base:e.transportUrl,path:{resource:"catalog",type:e.type,id:e.catalogId,extra:Array.from(t.entries())}}}}}:{action:"Unload"}}),[e,t]);return[_({model:"discover",action:n,map:T,deps:["ctx"]}),a]}},8674:(e,t,o)=>{function a(e){return(function(e){if(Array.isArray(e))return n(e)})(e)||(function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)})(e)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e)||(function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(1468).useTranslation,s=o(6590).translateOption;e.exports=function(e){var t=r().t,o=i.useMemo((function(){return(function(e,t){var o={title:t("SELECT_TYPE"),options:e.selectable.types.map((function(e){var t=e.type;return{value:e.deepLinks.discover,label:s(t,"TYPE_")}})),selected:e.selectable.types.filter((function(e){return e.selected})).map((function(e){return e.deepLinks.discover})),renderLabelText:null!==e.selected?function(){return s(e.selected.request.path.type,"TYPE_")}:null,onSelect:function(e){window.location=e.value}},n={title:t("SELECT_CATALOG"),options:e.selectable.catalogs.map((function(e){var t=e.name,o=e.addon;return{value:e.deepLinks.discover,label:t,title:"".concat(t," (").concat(o.manifest.name,")")}})),selected:e.selectable.catalogs.filter((function(e){return e.selected})).map((function(e){return e.deepLinks.discover})),renderLabelText:null!==e.selected?function(){var t=e.selectable.catalogs.find((function(t){return t.id===e.selected.request.path.id}));return t?t.name:e.selected.request.path.id}:null,onSelect:function(e){window.location=e.value}},i=e.selectable.extra.map((function(e){var o=e.name,a=e.isRequired,n=e.options;return{title:s(o,"SELECT_"),isRequired:a,options:n.map((function(e){var o=e.value,a=e.deepLinks;return{label:"string"==typeof o?s(o):t("NONE"),value:JSON.stringify({href:a.discover,value:o})}})),selected:n.filter((function(e){return e.selected})).map((function(e){var t=e.value,o=e.deepLinks;return JSON.stringify({href:o.discover,value:t})})),renderLabelText:n.some((function(e){var t=e.selected,o=e.value;return t&&null===o}))?function(){return s(o,"SELECT_")}:null,onSelect:function(e){var t=JSON.parse(e.value).href;window.location=t}}}));return[[o,n].concat(a(i)),e.selectable.nextPage]})(e,t)}),[e.selected,e.selectable]);return o}},8465:(e,t,o)=>{var a=["className","label","link","href","onToggle"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(4184),_=o(6590),T=_.Button,l=_.Checkbox,S=o(6947),u=r.forwardRef((function(e,t){var o=e.className,s=e.label,_=e.link,u=e.href,d=e.onToggle,c=i(e,a),A=r.useCallback((function(e){"function"==typeof c.onClick&&c.onClick(e),e.nativeEvent.togglePrevented||"function"!=typeof d||d({type:"toggle",reactEvent:e,nativeEvent:e.nativeEvent})}),[d,c.onClick]),I=r.useCallback((function(e){e.nativeEvent.togglePrevented=!0}),[]);return r.createElement(l,n({},c,{ref:t,className:E(o,S["consent-checkbox-container"]),onClick:A}),r.createElement("div",{className:S.label},s," ","string"==typeof _&&_.length>0&&"string"==typeof u&&u.length>0?r.createElement(T,{className:S.link,href:u,target:"_blank",tabIndex:-1,onClick:I},_):null))}));u.displayName="ConsentCheckbox",u.propTypes={className:s.string,checked:s.bool,label:s.string,link:s.string,href:s.string,onToggle:s.func,onClick:s.func},e.exports=u},6050:(e,t,o)=>{var a=o(8465);e.exports=a},2130:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},a.apply(this,arguments)}var n=o(7294),i=o(5697),r=o(6590).TextInput,s=n.forwardRef((function(e,t){var o=n.useCallback((function(t){"function"==typeof e.onKeyDown&&e.onKeyDown(t),t.nativeEvent.navigationPrevented||(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key)&&(t.nativeEvent.spatialNavigationPrevented=!0),t.shiftKey||("ArrowDown"===t.key?window.navigate("down"):"ArrowUp"===t.key&&window.navigate("up")))}),[e.onKeyDown]);return n.createElement(r,a({},e,{ref:t,onKeyDown:o}))}));s.displayName="CredentialsTextInput",s.propTypes={onKeyDown:i.func},e.exports=s},3962:(e,t,o)=>{var a=o(2130);e.exports=a},5398:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){i(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function r(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return s(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var E=o(7294),_=o(5697),T=o(4184),l=o(2601),S=o(1665),u=S.Modal,d=S.useRouteFocused,c=o(3662).useServices,A=o(6590),I=A.Button,O=A.Image,N=A.useBinaryState,R=o(3962),m=o(6050),p=o(2015),h=o(4167),L=o(8999),f="signup",C="login",D=function(e){var t=e.queryParams,a=c().core,s=d(),_=h(),S=E.useRef(null),A=E.useRef(null),D=E.useRef(null),g=E.useRef(null),v=E.useRef(null),P=E.useRef(null),y=E.useRef(null),B=r(N(!1),3),b=B[0],M=B[1],U=B[2],W=r(N(!1),3),G=W[0],F=W[1],k=W[2],w=E.useReducer((function(e,t){switch(t.type){case"set-form":return e.form!==t.form?{form:t.form,email:"",password:"",confirmPassword:"",termsAccepted:!1,privacyPolicyAccepted:!1,marketingAccepted:!1,error:""}:e;case"change-credentials":return n(n({},e),{},i({error:""},t.name,t.value));case"toggle-checkbox":return n(n({},e),{},i({error:""},t.name,!e[t.name]));case"error":return n(n({},e),{},{error:t.error});default:return e}}),{form:[C,f].includes(t.get("form"))?t.get("form"):f,email:"",password:"",confirmPassword:"",termsAccepted:!1,privacyPolicyAccepted:!1,marketingAccepted:!1,error:""}),H=r(w,2),V=H[0],Y=H[1],z=E.useCallback((function(){F(),_().then((function(e){return fetch("https://www.strem.io/fb-login-with-token/"+encodeURIComponent(e)).then((function(e){return e.json()})).catch((function(){throw new Error("Login failed at getting token from Stremio")})).then((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.user;if(!t||"string"!=typeof t.email||"string"!=typeof t.fbLoginToken)throw new Error("Login failed at getting token from Stremio");return{email:t.email,password:t.fbLoginToken}}))})).then((function(e){var t=e.email,o=e.password;a.transport.dispatch({action:"Ctx",args:{action:"Authenticate",args:{type:"Login",email:t,password:o,facebook:!0}}})})).catch((function(e){k(),Y({type:"error",error:e.message})}))}),[]),x=E.useCallback((function(){"string"==typeof V.email&&0!==V.email.length&&S.current.validity.valid?"string"==typeof V.password&&0!==V.password.length?(F(),a.transport.dispatch({action:"Ctx",args:{action:"Authenticate",args:{type:"Login",email:V.email,password:V.password}}})):Y({type:"error",error:"Invalid password"}):Y({type:"error",error:"Invalid email"})}),[V.email,V.password]),K=E.useCallback((function(){V.termsAccepted?window.location="#/":Y({type:"error",error:"You must accept the Terms of Service"})}),[V.termsAccepted]),j=E.useCallback((function(){"string"==typeof V.email&&0!==V.email.length&&S.current.validity.valid?"string"==typeof V.password&&0!==V.password.length?V.password===V.confirmPassword?V.termsAccepted?V.privacyPolicyAccepted?(F(),a.transport.dispatch({action:"Ctx",args:{action:"Authenticate",args:{type:"Register",email:V.email,password:V.password,gdpr_consent:{tos:V.termsAccepted,privacy:V.privacyPolicyAccepted,marketing:V.marketingAccepted,from:"web"}}}})):Y({type:"error",error:"You must accept the Privacy Policy"}):Y({type:"error",error:"You must accept the Terms of Service"}):Y({type:"error",error:"Passwords do not match"}):Y({type:"error",error:"Invalid password"}):Y({type:"error",error:"Invalid email"})}),[V.email,V.password,V.confirmPassword,V.termsAccepted,V.privacyPolicyAccepted,V.marketingAccepted]),Q=E.useCallback((function(e){Y({type:"change-credentials",name:"email",value:e.currentTarget.value})}),[]),X=E.useCallback((function(){A.current.focus()}),[]),$=E.useCallback((function(e){Y({type:"change-credentials",name:"password",value:e.currentTarget.value})}),[]),q=E.useCallback((function(){V.form===f?D.current.focus():x()}),[V.form,x]),J=E.useCallback((function(e){Y({type:"change-credentials",name:"confirmPassword",value:e.currentTarget.value})}),[]),Z=E.useCallback((function(){g.current.focus()}),[]),ee=E.useCallback((function(){Y({type:"toggle-checkbox",name:"termsAccepted"})}),[]),te=E.useCallback((function(){Y({type:"toggle-checkbox",name:"privacyPolicyAccepted"})}),[]),oe=E.useCallback((function(){Y({type:"toggle-checkbox",name:"marketingAccepted"})}),[]),ae=E.useCallback((function(){var e=new URLSearchParams([["form",V.form===f?C:f]]);window.location="#/intro?".concat(e.toString())}),[V.form]);return E.useEffect((function(){[C,f].includes(t.get("form"))&&Y({type:"set-form",form:t.get("form")})}),[t]),E.useEffect((function(){s&&"string"==typeof V.error&&V.error.length>0&&y.current.scrollIntoView()}),[V.error]),E.useEffect((function(){s&&S.current.focus()}),[V.form,s]),E.useEffect((function(){var e=function(e){var t=e.event,o=e.args;switch(t){case"UserAuthenticated":k(),s&&(window.location="#/");break;case"Error":"UserAuthenticated"===o.source.event&&k()}};return a.transport.on("CoreEvent",e),function(){a.transport.off("CoreEvent",e)}}),[s]),E.createElement("div",{className:L["intro-container"]},E.createElement("div",{className:L["form-container"]},E.createElement("div",{className:L["logo-container"]},E.createElement(O,{className:L.logo,src:o(5313),alt:" "}),E.createElement(l,{className:L.name,icon:"ic_stremio"})),E.createElement(I,{className:T(L["form-button"],L["facebook-button"]),onClick:z},E.createElement(l,{className:L.icon,icon:"ic_facebook"}),E.createElement("div",{className:L.label},"Continue with Facebook")),V.form===f?E.createElement(I,{className:T(L["form-button"],L["login-form-button"]),onClick:ae},"Already have an account?"," ",E.createElement("span",{className:L["login-label"]},"LOG IN")):null,E.createElement(R,{ref:S,className:L["credentials-text-input"],type:"email",placeholder:"Email",value:V.email,onChange:Q,onSubmit:X}),E.createElement(R,{ref:A,className:L["credentials-text-input"],type:"password",placeholder:"Password",value:V.password,onChange:$,onSubmit:q}),V.form===f?E.createElement(E.Fragment,null,E.createElement(R,{ref:D,className:L["credentials-text-input"],type:"password",placeholder:"Confirm Password",value:V.confirmPassword,onChange:J,onSubmit:Z}),E.createElement(m,{ref:g,className:L["consent-checkbox"],label:"I have read and agree with the Stremio",link:"Terms and conditions",href:"https://www.stremio.com/tos",checked:V.termsAccepted,onToggle:ee}),E.createElement(m,{ref:v,className:L["consent-checkbox"],label:"I have read and agree with the Stremio",link:"Privacy Policy",href:"https://www.stremio.com/privacy",checked:V.privacyPolicyAccepted,onToggle:te}),E.createElement(m,{ref:P,className:L["consent-checkbox"],label:"I agree to receive marketing communications from Stremio",checked:V.marketingAccepted,onToggle:oe})):E.createElement("div",{className:L["forgot-password-link-container"]},E.createElement(I,{className:L["forgot-password-link"],onClick:M},"Forgot password?")),V.error.length>0?E.createElement("div",{ref:y,className:L["error-message"]},V.error):null,E.createElement(I,{className:T(L["form-button"],L["submit-button"]),onClick:V.form===f?j:x},E.createElement("div",{className:L.label},V.form===f?"Sign up":"Log in")),V.form===f?E.createElement(I,{className:T(L["form-button"],L["guest-login-button"]),onClick:K},E.createElement("div",{className:L.label},"GUEST LOGIN")):null,V.form===C?E.createElement(I,{className:T(L["form-button"],L["signup-form-button"]),onClick:ae},E.createElement("div",{className:L.label},"SIGN UP WITH EMAIL")):null),b?E.createElement(p,{email:V.email,onCloseRequest:U}):null,G?E.createElement(u,{className:L["loading-modal-container"]},E.createElement("div",{className:L["loader-container"]},E.createElement(l,{className:L.icon,icon:"ic_user"}),E.createElement("div",{className:L.label},"Authenticating..."))):null)};D.propTypes={queryParams:_.instanceOf(URLSearchParams)},e.exports=D},8142:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=o(1665).useRouteFocused,E=o(6590).ModalDialog,_=o(3962),T=o(9070),l=function(e){var t=e.email,o=e.onCloseRequest,n=s(),r=a(i.useState(""),2),l=r[0],S=r[1],u=i.useRef(null),d=i.useCallback((function(){u.current.value.length>0&&u.current.validity.valid?window.open("https://www.strem.io/reset-password/"+u.current.value,"_blank"):S("Invalid email")}),[]),c=i.useMemo((function(){return[{className:T["cancel-button"],label:"Cancel",props:{onClick:o}},{label:"Send",props:{onClick:d}}]}),[o]),A=i.useCallback((function(){S("")}),[]);return i.useEffect((function(){n&&u.current.focus()}),[n]),i.createElement(E,{className:T["password-reset-modal-container"],title:"Password reset",buttons:c,onCloseRequest:o},i.createElement(_,{ref:u,className:T["credentials-text-input"],type:"email",placeholder:"Email",defaultValue:"string"==typeof t?t:"",onChange:A,onSubmit:d}),l.length>0?i.createElement("div",{className:T["error-message"]},l):null)};l.propTypes={email:r.string,onCloseRequest:r.func},e.exports=l},2015:(e,t,o)=>{var a=o(8142);e.exports=a},6732:(e,t,o)=>{var a=o(5398);e.exports=a},4167:(e,t,o)=>{var a=o(7294);e.exports=function(){var e=a.useCallback((function(){return new Promise((function(e,t){"undefined"!=typeof FB?FB.getLoginStatus((function(o){o&&o.authResponse&&"string"==typeof o.authResponse.accessToken?e(o.authResponse.accessToken):FB.login((function(o){o&&o.authResponse&&"string"==typeof o.authResponse.accessToken?e(o.authResponse.accessToken):t(new Error("Failed to get token from Facebook"))}))})):t(new Error("Failed to connect to Facebook"))}))}),[]);return a.useEffect((function(){window.fbAsyncInit=function(){FB.init({appId:"1537119779906825",status:!0,xfbml:!1,version:"v2.7"})};var e=document.createElement("script");return e.src="https://connect.facebook.net/en_US/sdk.js",e.async=!0,e.defer=!0,document.body.appendChild(e),function(){document.body.removeChild(e)}}),[]),e}},8171:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},a.apply(this,arguments)}function n(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return i(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return i(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var r=o(7294),s=o(5697),E=o(4184),_=o(2601),T=o(353),l=o(6590),S=l.Button,u=l.DelayedRenderer,d=l.Multiselect,c=l.MainNavBars,A=l.LibItem,I=l.Image,O=l.ModalDialog,N=l.PaginationInput,R=l.useProfile,m=l.routesRegexp,p=l.useBinaryState,h=l.withCoreSuspender,L=o(3242),f=o(3780),C=o(1596);var D=function(e){var t=e.model,i=e.urlParams,s=e.queryParams,T=R(),l=L(t,i,s),m=n(f(l),3),h=m[0],D=m[1],g=m[2],v=n(p(!1),3),P=v[0],y=v[1],B=v[2];return r.createElement(c,{className:C["library-container"],route:t},r.createElement("div",{className:C["library-content"]},"continue_watching"===t||null!==T.auth?r.createElement("div",{className:C["selectable-inputs-container"]},r.createElement(d,a({},h,{className:C["select-input-container"]})),r.createElement(d,a({},D,{className:C["select-input-container"]})),r.createElement("div",{className:C.spacing}),null!==g?r.createElement(N,a({},g,{className:C["pagination-input"]})):r.createElement(N,{label:"1",className:E(C["pagination-input"],C["pagination-input-placeholder"])}),r.createElement(S,{className:C["filter-container"],title:"All filters",onClick:y},r.createElement(_,{className:C["filter-icon"],icon:"ic_filter"}))):null,"library"===t&&null===T.auth?r.createElement("div",{className:E(C["message-container"],C["no-user-message-container"])},r.createElement(I,{className:C.image,src:o(3028),alt:" "}),r.createElement(S,{className:C["login-button-container"],href:"#/intro"},r.createElement("div",{className:C.label},"LOG IN")),r.createElement("div",{className:C["message-label"]},"Library is only available for logged in users!")):null===l.selected?r.createElement(u,{delay:500},r.createElement("div",{className:C["message-container"]},r.createElement(I,{className:C.image,src:o(7740),alt:" "}),r.createElement("div",{className:C["message-label"]},"library"===t?"Library":"Continue Watching"," not loaded!"))):0===l.catalog.length?r.createElement("div",{className:C["message-container"]},r.createElement(I,{className:C.image,src:o(7740),alt:" "}),r.createElement("div",{className:C["message-label"]},"Empty ","library"===t?"Library":"Continue Watching")):r.createElement("div",{className:E(C["meta-items-container"],"animation-fade-in")},l.catalog.map((function(e,o){return r.createElement(A,a({},e,{removable:"library"===t,key:o}))})))),P?r.createElement(O,{title:"Library filters",className:C["selectable-inputs-modal"],onCloseRequest:B},r.createElement(d,a({},h,{className:C["select-input-container"]})),r.createElement(d,a({},D,{className:C["select-input-container"]}))):null)};D.propTypes={model:s.oneOf(["library","continue_watching"]),urlParams:s.shape({type:s.string}),queryParams:s.instanceOf(URLSearchParams)};var g=function(e){var t=e.model;return r.createElement(c,{className:C["library-container"],route:t})};g.propTypes=D.propTypes,e.exports=(function(e){var t=function(t){var o=t.urlParams,a=t.queryParams,n=r.useMemo((function(){return"string"==typeof o.path?o.path.match(m.library.regexp)?"library":o.path.match(m.continuewatching.regexp)?"continue_watching":null:null}),[o.path]);return null===n?r.createElement(T,null):r.createElement(e,{key:n,model:n,urlParams:o,queryParams:a})};return t.displayName="withModel",t})(h(D,g))},7965:(e,t,o)=>{var a=o(8171);e.exports=a},3242:(e,t,o)=>{var a=o(7294),n=o(6590).useModelState;e.exports=function(e,t,o){var i=a.useMemo((function(){return{action:"Load",args:{model:"LibraryWithFilters",args:{request:{type:"string"==typeof t.type?t.type:null,sort:o.has("sort")?o.get("sort"):void 0,page:o.has("page")?parseInt(o.get("page"),10):void 0}}}}}),[t,o]);return n({model:e,action:i})}},3780:(e,t,o)=>{var a=o(7294),n=o(1468).useTranslation,i=o(6590).translateOption;e.exports=function(e){var t=n().t,o=a.useMemo((function(){return(function(e,t){return[{title:t("SELECT_TYPE"),options:e.selectable.types.map((function(e){var o=e.type;return{value:e.deepLinks.library,label:null===o?t("TYPE_ALL"):i(o,"TYPE_")}})),selected:e.selectable.types.filter((function(e){return e.selected})).map((function(e){return e.deepLinks.library})),onSelect:function(e){window.location=e.value}},{title:t("SELECT_SORT"),options:e.selectable.sorts.map((function(e){var t=e.sort;return{value:e.deepLinks.library,label:i(t,"SORT_")}})),selected:e.selectable.sorts.filter((function(e){return e.selected})).map((function(e){return e.deepLinks.library})),onSelect:function(e){window.location=e.value}},e.selectable.prevPage||e.selectable.nextPage?{label:e.selected.request.page.toString(),onSelect:function(t){"prev"===t.value&&e.selectable.prevPage&&(window.location=e.selectable.prevPage.deepLinks.library),"next"===t.value&&e.selectable.nextPage&&(window.location=e.selectable.nextPage.deepLinks.library)}}:null]})(e,t)}),[e]);return o}},8493:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=o(4184),E=o(3662).useServices,_=o(6590),T=_.VerticalNavBar,l=_.HorizontalNavBar,S=_.MetaPreview,u=_.ModalDialog,d=_.Image,c=_.DelayedRenderer,A=_.withCoreSuspender,I=o(2231),O=o(8437),N=o(8450),R=o(5651),m=o(4636),p=o(9514),h=function(e){var t=e.urlParams,n=e.queryParams,r=E().core,_=N(t),A=a(R(t,n),2),h=A[0],L=A[1],f=a(m(_.metaExtensions),3),C=f[0],D=f[1],g=f[2],v=a(i.useMemo((function(){return null!==_.selected?[_.selected.metaPath,_.selected.streamPath]:[null,null]}),[_.selected]),2),P=v[0],y=v[1],B=i.useMemo((function(){return null!==y&&null!==_.metaItem&&"Ready"===_.metaItem.content.type?_.metaItem.content.content.videos.reduce((function(e,t){return t.id===y.id?t:e}),null):null}),[_.metaItem,y]),b=i.useCallback((function(){null!==_.metaItem&&"Ready"===_.metaItem.content.type&&r.transport.dispatch({action:"Ctx",args:{action:"AddToLibrary",args:_.metaItem.content.content}})}),[_]),M=i.useCallback((function(){null!==_.metaItem&&"Ready"===_.metaItem.content.type&&r.transport.dispatch({action:"Ctx",args:{action:"RemoveFromLibrary",args:_.metaItem.content.content.id}})}),[_]),U=i.useCallback((function(e){L(e.value)}),[L]),W=i.useCallback((function(){return null}),[]);return i.createElement("div",{className:p["metadetails-container"]},i.createElement(l,{className:p["nav-bar"],backButton:!0,addonsButton:!0,fullscreenButton:!0,navMenu:!0}),i.createElement("div",{className:p["metadetails-content"]},C.length>0?i.createElement(T,{className:p["vertical-nav-bar"],tabs:C,selected:null!==D?D.url:null}):null,null===P?i.createElement(c,{delay:500},i.createElement("div",{className:p["meta-message-container"]},i.createElement(d,{className:p.image,src:o(7740),alt:" "}),i.createElement("div",{className:p["message-label"]},"No meta was selected!"))):null===_.metaItem?i.createElement("div",{className:p["meta-message-container"]},i.createElement(d,{className:p.image,src:o(7740),alt:" "}),i.createElement("div",{className:p["message-label"]},"No addons ware requested for this meta!")):"Err"===_.metaItem.content.type?i.createElement("div",{className:p["meta-message-container"]},i.createElement(d,{className:p.image,src:o(7740),alt:" "}),i.createElement("div",{className:p["message-label"]},"No metadata was found!")):"Loading"===_.metaItem.content.type?i.createElement(S.Placeholder,{className:p["meta-preview"]}):i.createElement(i.Fragment,null,"string"==typeof _.metaItem.content.content.background&&_.metaItem.content.content.background.length>0?i.createElement("div",{className:p["background-image-layer"]},i.createElement(d,{className:p["background-image"],src:_.metaItem.content.content.background,renderFallback:W,alt:" "})):null,i.createElement(S,{className:s(p["meta-preview"],"animation-fade-in"),name:_.metaItem.content.content.name,logo:_.metaItem.content.content.logo,runtime:_.metaItem.content.content.runtime,releaseInfo:_.metaItem.content.content.releaseInfo,released:_.metaItem.content.content.released,description:null!==B&&"string"==typeof B.overview&&B.overview.length>0?B.overview:_.metaItem.content.content.description,links:_.metaItem.content.content.links,trailerStreams:_.metaItem.content.content.trailerStreams,inLibrary:_.metaItem.content.content.inLibrary,toggleInLibrary:_.metaItem.content.content.inLibrary?M:b})),i.createElement("div",{className:p.spacing}),null!==y?i.createElement(I,{className:p["streams-list"],streams:_.streams}):null!==P?i.createElement(O,{className:p["videos-list"],metaItem:_.metaItem,season:h,seasonOnSelect:U}):null),null!==D?i.createElement(u,{className:p["meta-extension-modal-container"],title:D.name,onCloseRequest:g},i.createElement("iframe",{className:p["meta-extension-modal-iframe"],sandbox:"allow-forms allow-scripts allow-same-origin",src:D.url})):null)};h.propTypes={urlParams:r.shape({type:r.string,id:r.string,videoId:r.string}),queryParams:r.instanceOf(URLSearchParams)};e.exports=A(h,(function(){return i.createElement("div",{className:p["metadetails-container"]},i.createElement(l,{className:p["nav-bar"],backButton:!0,addonsButton:!0,fullscreenButton:!0,navMenu:!0}))}))},2742:(e,t,o)=>{var a=["className","addonName","name","description","thumbnail","progress","deepLinks"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var r=o(7294),s=o(5697),E=o(4184),_=o(2601),T=o(6590),l=T.Button,S=T.Image,u=T.PlayIconCircleCentered,d=T.useProfile,c=T.platform,A=T.useStreamingServer,I=T.useToast,O=o(3662).useServices,N=o(4134),R=o(3458),m=function(e){var t=e.className,o=e.addonName,s=e.name,T=e.description,N=e.thumbnail,m=e.progress,p=e.deepLinks,h=i(e,a),L=d(),f=A(),C=O().core,D=I(),g=r.useMemo((function(){var e=null!==f.settings&&"Ready"===f.settings.type;return p?L.settings.playerType&&"internal"!==L.settings.playerType?c.isMobile()||!e?(p.externalPlayer.openPlayer||{})[c.name]||p.externalPlayer.href:null:"string"==typeof p.player?p.player:null:null}),[p,L,f]),v=r.useCallback((function(e){null===g?C.transport.dispatch({action:"StreamingServer",args:{action:"PlayOnDevice",args:{device:"vlc",source:p.externalPlayer.streaming}}}):"external"===L.settings.playerType&&D.show({type:"success",title:"Stream opened in external player",timeout:4e3}),h.onClick(e)}),[g,p,h.onClick,L,D]),P=r.useMemo((function(){return g===p.externalPlayer.href&&p.externalPlayer.fileName}),[g]),y=r.useCallback((function(){return r.createElement(_,{className:R["placeholder-icon"],icon:"ic_broken_link"})}),[]);return r.createElement(l,n({href:g,download:P},h,{onClick:v,className:E(t,R["stream-container"]),title:o}),"string"==typeof N&&N.length>0?r.createElement("div",{className:R["thumbnail-container"],title:s||o},r.createElement(S,{className:R.thumbnail,src:N,alt:" ",renderFallback:y})):r.createElement("div",{className:R["addon-name-container"],title:s||o},r.createElement("div",{className:R["addon-name"]},s||o)),r.createElement("div",{className:R["info-container"],title:T},T),r.createElement(u,{className:R["play-icon"]}),null!==m&&!isNaN(m)&&m>0?r.createElement("div",{className:R["progress-bar-container"]},r.createElement("div",{className:R["progress-bar"],style:{width:"".concat(100*Math.min(m,1),"%")}})):null)};m.Placeholder=N,m.propTypes={className:s.string,addonName:s.string,name:s.string,description:s.string,thumbnail:s.string,progress:s.number,deepLinks:s.shape({player:s.string,externalPlayer:s.shape({href:s.string,fileName:s.string,streaming:s.string,openPlayer:s.shape({choose:{ios:s.string,android:s.string,windows:s.string,macos:s.string,linux:s.string},vlc:{ios:s.string,android:s.string,windows:s.string,macos:s.string,linux:s.string},outplayer:{ios:s.string,android:s.string,windows:s.string,macos:s.string,linux:s.string},infuse:{ios:s.string,android:s.string,windows:s.string,macos:s.string,linux:s.string},justplayer:{ios:s.string,android:s.string,windows:s.string,macos:s.string,linux:s.string},mxplayer:{ios:s.string,android:s.string,windows:s.string,macos:s.string,linux:s.string}})})}),onClick:s.func},e.exports=m},3210:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(926),s=o(1384),E=function(e){var t=e.className;return a.createElement("div",{className:i(t,s["stream-placeholder-container"])},a.createElement("div",{className:s["addon-container"]},a.createElement("div",{className:s["addon-name"]})),a.createElement("div",{className:s["info-container"]},a.createElement("div",{className:s["description-container"]}),a.createElement("div",{className:s["description-container"]})),a.createElement(r,{className:s["play-icon"]}))};E.propTypes={className:n.string},e.exports=E},4134:(e,t,o)=>{var a=o(3210);e.exports=a},4674:(e,t,o)=>{var a=o(2742);e.exports=a},4176:(e,t,o)=>{var a=["className"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e){return(function(e){if(Array.isArray(e))return l(e)})(e)||(function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)})(e)||T(e)||(function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function s(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?r(Object(o),!0).forEach((function(t){E(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function E(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function _(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||T(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function T(e,t){if(e){if("string"==typeof e)return l(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}function S(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var u=o(7294),d=o(5697),c=o(4184),A=o(1468).useTranslation,I=o(2601),O=o(6590),N=O.Button,R=O.Image,m=O.Multiselect,p=o(3662).useServices,h=o(4674),L=o(6796),f="ALL",C=function(e){var t=e.className,r=S(e,a),E=A().t,T=p().core,l=_(u.useState(f),2),d=l[0],O=l[1],C=u.useCallback((function(e){O(e.value)}),[]),D=u.useMemo((function(){return r.streams.filter((function(e){return"Ready"===e.content.type})).reduce((function(e,t){return e[t.addon.transportUrl]={addon:t.addon,streams:t.content.content.map((function(e){return s(s({},e),{},{onClick:function(){T.transport.analytics({event:"StreamClicked",args:{stream:e}})},addonName:t.addon.manifest.name})}))},e}),{})}),[r.streams]),g=u.useMemo((function(){return d===f?Object.values(D).map((function(e){return e.streams})).flat(1):D[d]?D[d].streams:[]}),[D,d]),v=u.useMemo((function(){return{title:"Select Addon",options:[{value:f,label:E("ALL_ADDONS"),title:E("ALL_ADDONS")}].concat(i(Object.keys(D).map((function(e){return{value:e,label:D[e].addon.manifest.name,title:D[e].addon.manifest.name}})))),selected:[d],onSelect:C}}),[D,d]);return u.createElement("div",{className:c(t,L["streams-list-container"])},0===r.streams.length?u.createElement("div",{className:L["message-container"]},u.createElement(R,{className:L.image,src:o(7740),alt:" "}),u.createElement("div",{className:L.label},"No addons were requested for streams!")):r.streams.every((function(e){return"Err"===e.content.type}))?u.createElement("div",{className:L["message-container"]},u.createElement(R,{className:L.image,src:o(7740),alt:" "}),u.createElement("div",{className:L.label},E("NO_STREAM"))):0===g.length?u.createElement("div",{className:L["streams-container"]},u.createElement(h.Placeholder,null),u.createElement(h.Placeholder,null)):u.createElement(u.Fragment,null,Object.keys(D).length>1?u.createElement(m,n({},v,{className:L["select-input-container"]})):null,u.createElement("div",{className:L["streams-container"]},g.map((function(e,t){return u.createElement(h,{key:t,addonName:e.addonName,name:e.name,description:e.description,thumbnail:e.thumbnail,progress:e.progress,deepLinks:e.deepLinks,onClick:e.onClick})})))),u.createElement(N,{className:L["install-button-container"],title:E("ADDON_CATALOGUE_MORE"),href:"#/addons"},u.createElement(I,{className:L.icon,icon:"ic_addons"}),u.createElement("div",{className:L.label},E("ADDON_CATALOGUE_MORE"))))};C.propTypes={className:d.string,streams:d.arrayOf(d.object).isRequired},e.exports=C},2231:(e,t,o)=>{var a=o(4176);e.exports=a},2813:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(6073).t,s=o(2601),E=o(6590),_=E.Button,T=E.Multiselect,l=o(3570),S=o(6351),u=function(e){var t=e.className,o=e.seasons,n=e.season,E=e.onSelect,l=a.useMemo((function(){return o.map((function(e){return{value:String(e),label:e>0?"".concat(r("SEASON")," ").concat(e):r("SPECIAL")}}))}),[o]),u=a.useMemo((function(){return[String(n)]}),[n]),d=a.useCallback((function(e){if("function"==typeof E){var t=o.indexOf(n),a="next"===e.currentTarget.dataset.action?t+1<o.length?t+1:o.length-1:t-1>=0?t-1:0,i=o[a];E({type:"select",value:i,reactEvent:e,nativeEvent:e.nativeEvent})}}),[n,o,E]),c=a.useCallback((function(e){var t=parseFloat(e.value);"function"==typeof E&&E({type:"select",value:t,reactEvent:e.reactEvent,nativeEvent:e.nativeEvent})}),[E]);return a.createElement("div",{className:i(t,S["seasons-bar-container"])},a.createElement(_,{className:S["prev-season-button"],title:"Previous season","data-action":"prev",onClick:d},a.createElement(s,{className:S.icon,icon:"ic_arrow_thin_left"}),a.createElement("div",{className:S.label},"Prev")),a.createElement(T,{className:S["seasons-popup-label-container"],title:n>0?"".concat(r("SEASON")," ").concat(n):r("SPECIAL"),direction:"bottom-left",options:l,selected:u,onSelect:c}),a.createElement(_,{className:S["next-season-button"],title:"Next season","data-action":"next",onClick:d},a.createElement("div",{className:S.label},"Next"),a.createElement(s,{className:S.icon,icon:"ic_arrow_thin_right"})))};u.Placeholder=l,u.propTypes={className:n.string,seasons:n.arrayOf(n.number).isRequired,season:n.number.isRequired,onSelect:n.func},e.exports=u},9319:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(2180),E=function(e){var t=e.className;return a.createElement("div",{className:i(t,s["seasons-bar-placeholder-container"])},a.createElement("div",{className:s["prev-season-button"]},a.createElement(r,{className:s.icon,icon:"ic_arrow_thin_left"}),a.createElement("div",{className:s.label},"Prev")),a.createElement("div",{className:s["seasons-popup-label-container"]},a.createElement("div",{className:s["seasons-popup-label"]},"Season 1"),a.createElement(r,{className:s["seasons-popup-icon"],icon:"ic_arrow_thin_down"})),a.createElement("div",{className:s["next-season-button"]},a.createElement("div",{className:s.label},"Next"),a.createElement(r,{className:s.icon,icon:"ic_arrow_thin_right"})))};E.propTypes={className:n.string},e.exports=E},3570:(e,t,o)=>{var a=o(9319);e.exports=a},3424:(e,t,o)=>{var a=o(2813);e.exports=a},2824:(e,t,o)=>{var a=["className","id","title","thumbnail","episode","released","upcoming","watched","progress","scheduled","deepLinks"],n=["className","id","title","thumbnail","episode","released","upcoming","watched","progress","scheduled","children"];function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},i.apply(this,arguments)}function r(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return s(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}function E(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var _=o(7294),T=o(5697),l=o(4184),S=o(6073).t,u=o(3662).useServices,d=o(1665).useRouteFocused,c=o(2601),A=o(6590),I=A.Button,O=A.Image,N=A.Popup,R=A.useBinaryState,m=o(9922),p=o(4486),h=function(e){var t=e.className,o=e.id,s=e.title,T=e.thumbnail,A=e.episode,m=e.released,h=e.upcoming,L=e.watched,f=e.progress,C=e.scheduled,D=e.deepLinks,g=E(e,a),v=u().core,P=d(),y=r(R(!1),4),B=y[0],b=y[2],M=y[3],U=_.useCallback((function(e){e.nativeEvent.togglePopupPrevented||(e.nativeEvent.ctrlKey||2===e.nativeEvent.button)&&(e.preventDefault(),M())}),[]),W=_.useCallback((function(e){e.nativeEvent.togglePopupPrevented||e.nativeEvent.ctrlKey||e.preventDefault()}),[M]),G=_.useCallback((function(e){"mouse"===e.nativeEvent.pointerType||e.nativeEvent.togglePopupPrevented||M()}),[M]),F=_.useCallback((function(e){e.nativeEvent.togglePopupPrevented=!0}),[]),k=_.useCallback((function(e){e.nativeEvent.togglePopupPrevented=!0}),[]),w=_.useCallback((function(e){e.nativeEvent.togglePopupPrevented=!0}),[]),H=_.useCallback((function(e){e.nativeEvent.buttonClickPrevented=!0}),[]),V=_.useCallback((function(e){e.preventDefault(),b(),v.transport.dispatch({action:"MetaDetails",args:{action:"MarkVideoAsWatched",args:[o,!L]}})}),[o,L]),Y=_.useMemo((function(){return D?"string"==typeof D.player?D.player:"string"==typeof D.metaDetailsStreams?D.metaDetailsStreams:null:null}),[D]),z=_.useMemo((function(){return function(e){var t=e.className,o=e.id,a=e.title,r=e.thumbnail,s=e.episode,T=e.released,S=e.upcoming,u=e.watched,d=e.progress,A=e.scheduled,N=e.children,R=E(e,n);return _.createElement(I,i({},R,{className:l(t,p["video-container"]),title:a}),"string"==typeof r&&r.length>0?_.createElement("div",{className:p["thumbnail-container"]},_.createElement(O,{className:p.thumbnail,src:r,alt:" ",renderFallback:function(){return _.createElement(c,{className:p["placeholder-icon"],icon:"ic_stremio_tray"})}})):null,_.createElement("div",{className:p["info-container"]},_.createElement("div",{className:p["title-container"]},null===s||isNaN(s)?null:"".concat(s,". "),"string"==typeof a&&a.length>0?a:o),_.createElement("div",{className:p["flex-row-container"]},T instanceof Date&&!isNaN(T.getTime())?_.createElement("div",{className:p["released-container"]},T.toLocaleString(void 0,{year:"numeric",month:"short",day:"numeric"})):A?_.createElement("div",{className:p["released-container"],title:"To be announced"},"TBA"):null,_.createElement("div",{className:p["upcoming-watched-container"]},S?_.createElement("div",{className:p["upcoming-container"]},_.createElement("div",{className:p["flag-label"]},"Upcoming")):null,u?_.createElement("div",{className:p["watched-container"]},_.createElement("div",{className:p["flag-label"]},"Watched")):null))),null!==d&&!isNaN(d)&&d>0?_.createElement("div",{className:p["progress-bar-container"]},_.createElement("div",{className:p["progress-bar"],style:{width:"".concat(100*Math.min(d,1),"%")}})):null,N)}}),[]),x=_.useMemo((function(){return function(){return _.createElement("div",{className:p["context-menu-content"],onPointerDown:F,onContextMenu:k,onClick:w,onKeyDown:H},_.createElement(I,{className:p["context-menu-option-container"],title:"Watch"},_.createElement("div",{className:p["context-menu-option-label"]},S("CTX_WATCH"))),_.createElement(I,{className:p["context-menu-option-container"],title:L?"Mark as non-watched":"Mark as watched",onClick:V},_.createElement("div",{className:p["context-menu-option-label"]},S(L?"CTX_MARK_NON_WATCHED":"CTX_MARK_WATCHED"))))}}),[L,V]);return _.useEffect((function(){P||b()}),[P]),_.createElement(N,i({className:t,id:o,title:s,thumbnail:T,episode:A,released:m,upcoming:h,watched:L,progress:f,scheduled:C,href:Y},g,{onMouseUp:U,onLongPress:G,onContextMenu:W,open:B,onCloseRequest:b,renderLabel:z,renderMenu:x}))};h.Placeholder=m,h.propTypes={className:T.string,id:T.string,title:T.string,thumbnail:T.string,episode:T.number,released:T.instanceOf(Date),upcoming:T.bool,watched:T.bool,progress:T.number,scheduled:T.bool,deepLinks:T.shape({metaDetailsStreams:T.string,player:T.string})},e.exports=h},8509:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(5507),s=function(e){var t=e.className;return a.createElement("div",{className:i(t,r["video-placeholder-container"])},a.createElement("div",{className:r["info-container"]},a.createElement("div",{className:r["name-container"]}),a.createElement("div",{className:r["released-container"]})))};s.propTypes={className:n.string},e.exports=s},9922:(e,t,o)=>{var a=o(8509);e.exports=a},123:(e,t,o)=>{var a=o(2824);e.exports=a},1702:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=o(4184),E=o(6073).t,_=o(9872),T=o(6798),l=o(3424),S=o(123),u=o(2759),d=function(e){var t=e.className,n=e.metaItem,r=e.season,d=e.seasonOnSelect,c=i.useMemo((function(){return n&&"Ready"===n.content.type?n.content.content.videos:[]}),[n]),A=i.useMemo((function(){return c.map((function(e){return e.season})).filter((function(e,t,o){return null!==e&&!isNaN(e)&&"number"==typeof e&&o.indexOf(e)===t})).sort((function(e,t){return(e||Number.MAX_SAFE_INTEGER)-(t||Number.MAX_SAFE_INTEGER)}))}),[c]),I=i.useMemo((function(){if(A.includes(r))return r;var e=A.filter((function(e){return 0!==e}));return e.length>0?e[e.length-1]:A.length>0?A[A.length-1]:null}),[A,r]),O=i.useMemo((function(){return c.filter((function(e){return null===I||e.season===I})).sort((function(e,t){return e.episode-t.episode}))}),[c,I]),N=a(i.useState(""),2),R=N[0],m=N[1],p=i.useCallback((function(e){m(e.currentTarget.value)}),[]);return i.createElement("div",{className:s(t,u["videos-list-container"])},n&&"Loading"!==n.content.type?"Err"===n.content.type||0===O.length?i.createElement("div",{className:u["message-container"]},i.createElement(_,{className:u.image,src:o(7740),alt:" "}),i.createElement("div",{className:u.label},"No videos found for this meta!")):i.createElement(i.Fragment,null,A.length>0?i.createElement(l,{className:u["seasons-bar"],season:I,seasons:A,onSelect:d}):null,i.createElement(T,{className:u["search-bar"],title:E("SEARCH_VIDEOS"),value:R,onChange:p}),i.createElement("div",{className:u["videos-container"]},O.filter((function(e){return 0===R.length||"string"==typeof e.title&&e.title.toLowerCase().includes(R.toLowerCase())||!isNaN(e.released.getTime())&&e.released.toLocaleString(void 0,{year:"2-digit",month:"short",day:"numeric"}).toLowerCase().includes(R.toLowerCase())})).map((function(e,t){return i.createElement(S,{key:t,id:e.id,title:e.title,thumbnail:e.thumbnail,episode:e.episode,released:e.released,upcoming:e.upcoming,watched:e.watched,progress:e.progress,deepLinks:e.deepLinks,scheduled:e.scheduled})})))):i.createElement(i.Fragment,null,i.createElement(l.Placeholder,{className:u["seasons-bar"]}),i.createElement(T.Placeholder,{className:u["search-bar"],title:E("SEARCH_VIDEOS")}),i.createElement("div",{className:u["videos-scroll-container"]},i.createElement(S.Placeholder,null),i.createElement(S.Placeholder,null),i.createElement(S.Placeholder,null),i.createElement(S.Placeholder,null),i.createElement(S.Placeholder,null))))};d.propTypes={className:r.string,metaItem:r.object,season:r.number,seasonOnSelect:r.func},e.exports=d},8437:(e,t,o)=>{var a=o(1702);e.exports=a},9005:(e,t,o)=>{var a=o(8493);e.exports=a},8450:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){i(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var r=o(7294),s=o(6590).useModelState,E=function(e){return n(n({},e),{},{metaItem:null!==e.metaItem&&"Ready"===e.metaItem.content.type?n(n({},e.metaItem),{},{content:n(n({},e.metaItem.content),{},{content:n(n({},e.metaItem.content.content),{},{released:new Date("string"==typeof e.metaItem.content.content.released?e.metaItem.content.content.released:NaN),videos:e.metaItem.content.content.videos.map((function(e){return n(n({},e),{},{released:new Date("string"==typeof e.released?e.released:NaN)})}))})})}):e.metaItem})};e.exports=function(e){var t=r.useMemo((function(){return"string"==typeof e.type&&"string"==typeof e.id?{action:"Load",args:{model:"MetaDetails",args:{metaPath:{resource:"meta",type:e.type,id:e.id,extra:[]},streamPath:"string"==typeof e.videoId?{resource:"stream",type:e.type,id:e.videoId,extra:[]}:null}}}:{action:"Unload"}}),[e]);return s({model:"meta_details",action:t,map:E})}},4636:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294);e.exports=function(e){var t=i.useMemo((function(){return e.map((function(e){return{id:e.url,label:e.addon.manifest.name,logo:e.addon.manifest.logo,icon:"ic_addons",onClick:function(){return r(e)}}}))}),[e]),o=a(i.useState(null),2),n=o[0],r=o[1];return[t,n,i.useCallback((function(){r(null)}),[])]}},5651:(e,t,o)=>{var a=o(7294);e.exports=function(e,t){var o=a.useMemo((function(){return t.has("season")&&!isNaN(t.get("season"))?parseInt(t.get("season"),10):null}),[t]),n=a.useCallback((function(o){var a=new URLSearchParams(t);a.set("season",o),window.location.replace("#".concat(e.path,"?").concat(a))}),[e,t]);return[o,n]}},9096:(e,t,o)=>{var a=o(7294),n=o(6590),i=n.Image,r=n.HorizontalNavBar,s=o(5142);e.exports=function(){return a.createElement("div",{className:s["not-found-container"]},a.createElement(r,{className:s["nav-bar"],title:"Page not found",backButton:!0,fullscreenButton:!0,navMenu:!0}),a.createElement("div",{className:s["not-found-content"]},a.createElement(i,{className:s["not-found-image"],src:o(7740),alt:" "}),a.createElement("div",{className:s["not-found-label"]},"Page not found!")))}},353:(e,t,o)=>{var a=o(9096);e.exports=a},9579:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(6590).Image,s=o(1391),E=function(e){var t=e.className,n=e.logo;return a.createElement("div",{className:i(t,s["buffering-loader-container"])},a.createElement(r,{className:s["buffering-loader"],src:n,alt:" ",fallbackSrc:o(5313)}))};E.propTypes={className:n.string,logo:n.string},e.exports=E},3475:(e,t,o)=>{var a=o(9579);e.exports=a},2479:(e,t,o)=>{var a=["className","paused","time","duration","buffered","volume","muted","playbackSpeed","subtitlesTracks","audioTracks","metaItem","nextVideo","stream","statistics","onPlayRequested","onPauseRequested","onMuteRequested","onUnmuteRequested","onVolumeChangeRequested","onSeekRequested","onToggleSubtitlesMenu","onToggleInfoMenu","onToggleSpeedMenu","onToggleVideosMenu","onToggleOptionsMenu","onToggleStatisticsMenu"];function n(){return n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},n.apply(this,arguments)}function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return s(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}function E(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var _=o(7294),T=o(5697),l=o(4184),S=o(2601),u=o(6590).Button,d=o(3662).useServices,c=o(5280),A=o(7429),I=o(578),O=o(6590).useBinaryState,N=o(6073).t,R=function(e){var t,o,s=e.className,T=e.paused,R=e.time,m=e.duration,p=e.buffered,h=e.volume,L=e.muted,f=e.playbackSpeed,C=e.subtitlesTracks,D=e.audioTracks,g=e.metaItem,v=e.nextVideo,P=e.stream,y=e.statistics,B=e.onPlayRequested,b=e.onPauseRequested,M=e.onMuteRequested,U=e.onUnmuteRequested,W=e.onVolumeChangeRequested,G=e.onSeekRequested,F=e.onToggleSubtitlesMenu,k=e.onToggleInfoMenu,w=e.onToggleSpeedMenu,H=e.onToggleVideosMenu,V=e.onToggleOptionsMenu,Y=e.onToggleStatisticsMenu,z=E(e,a),x=d().chromecast,K=r(_.useState((function(){return x.active})),2),j=K[0],Q=K[1],X=r(O(!1),4),$=X[0],q=X[3],J=_.useCallback((function(e){e.nativeEvent.subtitlesMenuClosePrevented=!0}),[]),Z=_.useCallback((function(e){e.nativeEvent.infoMenuClosePrevented=!0}),[]),ee=_.useCallback((function(e){e.nativeEvent.speedMenuClosePrevented=!0}),[]),te=_.useCallback((function(e){e.nativeEvent.videosMenuClosePrevented=!0}),[]),oe=_.useCallback((function(e){e.nativeEvent.optionsMenuClosePrevented=!0}),[]),ae=_.useCallback((function(e){e.nativeEvent.statisticsMenuClosePrevented=!0}),[]),ne=_.useCallback((function(){T?"function"==typeof B&&B():"function"==typeof b&&b()}),[T,B,b]),ie=_.useCallback((function(){null!==v&&"object"===i(v.deepLinks)&&(null!==v.deepLinks.player?window.location.replace(v.deepLinks.player):null!==v.deepLinks.metaDetailsStreams&&window.location.replace(v.deepLinks.metaDetailsStreams))}),[v]),re=_.useCallback((function(){L?"function"==typeof U&&U():"function"==typeof M&&M()}),[L,M,U]),se=_.useCallback((function(){"function"==typeof F&&F()}),[F]),Ee=_.useCallback((function(){"function"==typeof k&&k()}),[k]),_e=_.useCallback((function(){"function"==typeof w&&w()}),[w]),Te=_.useCallback((function(){"function"==typeof H&&H()}),[H]),le=_.useCallback((function(){"function"==typeof V&&V()}),[V]),Se=_.useCallback((function(){"function"==typeof Y&&Y()}),[Y]),ue=_.useCallback((function(){x.transport.requestSession()}),[]);return _.useEffect((function(){var e=function(){Q(x.active)};return x.on("stateChanged",e),function(){x.off("stateChanged",e)}}),[]),_.createElement("div",n({},z,{className:l(s,I["control-bar-container"])}),_.createElement(c,{className:I["seek-bar"],time:R,duration:m,buffered:p,onSeekRequested:G}),_.createElement("div",{className:I["control-bar-buttons-container"]},_.createElement(u,{className:l(I["control-bar-button"],{disabled:"boolean"!=typeof T}),title:N(T?"PLAYER_PLAY":"PLAYER_PAUSE"),tabIndex:-1,onClick:ne},_.createElement(S,{className:I.icon,icon:"boolean"!=typeof T||T?"ic_play":"ic_pause"})),null!==v?_.createElement(u,{className:l(I["control-bar-button"]),title:N("PLAYER_NEXT_VIDEO"),tabIndex:-1,onClick:ie},_.createElement(S,{className:I.icon,icon:"ic_play_next"})):null,_.createElement(u,{className:l(I["control-bar-button"],{disabled:"boolean"!=typeof L}),title:N(L?"PLAYER_UNMUTE":"PLAYER_MUTE"),tabIndex:-1,onClick:re},_.createElement(S,{className:I.icon,icon:"boolean"==typeof L&&L?"ic_volume0":null===h||isNaN(h)?"ic_volume3":h<30?"ic_volume1":h<70?"ic_volume2":"ic_volume3"})),_.createElement(A,{className:I["volume-slider"],volume:h,onVolumeChangeRequested:W}),_.createElement("div",{className:I.spacing}),_.createElement(u,{className:I["control-bar-buttons-menu-button"],onClick:q},_.createElement(S,{className:I.icon,icon:"ic_more"})),_.createElement("div",{className:l(I["control-bar-buttons-menu-container"],{open:$})},_.createElement(u,{className:l(I["control-bar-button"],{disabled:null===y||"Err"===y.type||null===P||"string"!=typeof P.infoHash||"number"!=typeof P.fileIdx}),tabIndex:-1,onMouseDown:ae,onClick:Se},_.createElement(S,{className:I.icon,icon:"ic_network"})),_.createElement(u,{className:l(I["control-bar-button"],{disabled:null===f}),tabIndex:-1,onMouseDown:ee,onClick:_e},_.createElement(S,{className:I.icon,icon:"ic_speedometer"})),_.createElement(u,{className:l(I["control-bar-button"],{disabled:null===g||"Ready"!==g.type}),tabIndex:-1,onMouseDown:Z,onClick:Ee},_.createElement(S,{className:I.icon,icon:"ic_info"})),_.createElement(u,{className:l(I["control-bar-button"],{disabled:!j}),tabIndex:-1,onClick:ue},_.createElement(S,{className:I.icon,icon:"ic_cast"})),_.createElement(u,{className:l(I["control-bar-button"],{disabled:!(Array.isArray(C)&&0!==C.length||Array.isArray(D)&&0!==D.length)}),tabIndex:-1,onMouseDown:J,onClick:se},_.createElement(S,{className:I.icon,icon:"ic_sub"})),(null==g||null===(t=g.content)||void 0===t||null===(o=t.videos)||void 0===o?void 0:o.length)>0?_.createElement(u,{className:I["control-bar-button"],tabIndex:-1,onMouseDown:te,onClick:Te},_.createElement(S,{className:I.icon,icon:"ic_videos"})):null,_.createElement(u,{className:I["control-bar-button"],tabIndex:-1,onMouseDown:oe,onClick:le},_.createElement(S,{className:I.icon,icon:"ic_more"})))))};R.propTypes={className:T.string,paused:T.bool,time:T.number,duration:T.number,buffered:T.number,volume:T.number,muted:T.bool,playbackSpeed:T.number,subtitlesTracks:T.array,audioTracks:T.array,metaItem:T.object,nextVideo:T.object,stream:T.object,statistics:T.object,onPlayRequested:T.func,onPauseRequested:T.func,onMuteRequested:T.func,onUnmuteRequested:T.func,onVolumeChangeRequested:T.func,onSeekRequested:T.func,onToggleSubtitlesMenu:T.func,onToggleInfoMenu:T.func,onToggleSpeedMenu:T.func,onToggleVideosMenu:T.func,onToggleOptionsMenu:T.func,onToggleStatisticsMenu:T.func},e.exports=R},6181:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=o(4184),E=o(1296),_=o(1665).useRouteFocused,T=o(6590).Slider,l=o(7537),S=o(8982),u=function(e){var t=e.className,o=e.time,n=e.duration,r=e.buffered,u=e.onSeekRequested,d=null===o||isNaN(o)||null===n||isNaN(n),c=_(),A=a(i.useState(null),2),I=A[0],O=A[1],N=i.useCallback(E((function(){O(null)}),1500),[]),R=i.useCallback((function(e){N.cancel(),O(e)}),[]),m=i.useCallback((function(e){N(),O(e),"function"==typeof u&&u(e)}),[u]);return i.useLayoutEffect((function(){c&&!d||(N.cancel(),O(null))}),[c,d]),i.useEffect((function(){return function(){N.cancel()}}),[]),i.createElement("div",{className:s(t,S["seek-bar-container"],{active:null!==I})},i.createElement("div",{className:S.label},l(null!==I?I:o)),i.createElement(T,{className:s(S.slider,{active:null!==I}),value:d?0:null!==I?I:o,buffered:r,minimumValue:0,maximumValue:n,disabled:d,onSlide:R,onComplete:m}),i.createElement("div",{className:S.label},l(n)))};u.propTypes={className:r.string,time:r.number,duration:r.number,buffered:r.number,onSeekRequested:r.func},e.exports=u},7537:e=>{var t=function(e){return("0"+e).slice(-1*Math.max(e.toString().length,2))};e.exports=function(e){if(null===e||isNaN(e))return"--:--:--";var o=Math.floor(e/36e5),a=Math.floor(e/6e4%60),n=Math.floor(e/1e3%60);return"".concat(t(o),":").concat(t(a),":").concat(t(n))}},5280:(e,t,o)=>{var a=o(6181);e.exports=a},4932:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=o(4184),E=o(1296),_=o(1665).useRouteFocused,T=o(6590).Slider,l=o(6708),S=function(e){var t=e.className,o=e.volume,n=e.onVolumeChangeRequested,r=null===o||isNaN(o),S=_(),u=a(i.useState(null),2),d=u[0],c=u[1],A=i.useCallback(E((function(){c(null)}),100),[]),I=i.useCallback((function(e){A.cancel(),c(e),"function"==typeof n&&n(e)}),[n]),O=i.useCallback((function(e){A(),c(e),"function"==typeof n&&n(e)}),[n]);return i.useLayoutEffect((function(){S&&!r||(A.cancel(),c(null))}),[S,r]),i.useEffect((function(){return function(){A.cancel()}}),[]),i.createElement(T,{className:s(t,l["volume-slider"],{active:null!==d}),value:r?100:null!==d?d:o,minimumValue:0,maximumValue:100,disabled:r,onSlide:I,onComplete:O})};S.propTypes={className:r.string,volume:r.number,onVolumeChangeRequested:r.func},e.exports=S},7429:(e,t,o)=>{var a=o(4932);e.exports=a},9292:(e,t,o)=>{var a=o(2479);e.exports=a},8928:(e,t,o)=>{var a=["className"];function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?n(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function s(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=o(4184),l=o(6590),S=l.MetaPreview,u=l.CONSTANTS,d=o(3800),c=function(e){var t=e.className,o=s(e,a),n=E.useMemo((function(){return null!==o.metaItem?i(i({},o.metaItem),{},{links:o.metaItem.links.filter((function(e){return e.category===u.SHARE_LINK_CATEGORY}))}):null}),[o.metaItem]),r=E.useCallback((function(e){e.nativeEvent.infoMenuClosePrevented=!0}),[]);return E.createElement("div",{className:T(t,d["info-menu-container"]),onMouseDown:r},null!==n?E.createElement(S,{className:d["meta-preview"],compact:!0,name:n.name,logo:n.logo,runtime:n.runtime,releaseInfo:n.releaseInfo,released:n.released,description:n.description,links:n.links}):null)};c.propTypes={className:_.string,metaItem:_.object,addon:_.object,stream:_.object},e.exports=c},5458:(e,t,o)=>{var a=o(8928);e.exports=a},2690:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=o(4184),E=o(2601),_=o(6590),T=_.Image,l=_.Button,S=_.CONSTANTS,u=o(5626),d=function(e){var t=e.className,o=e.metaItem,n=e.nextVideo,r=e.onDismiss,_=e.onPlayNextVideoRequested,d=i.useRef(null),c=a(i.useState(!1),2),A=c[0],I=c[1],O=i.useMemo((function(){var e=n&&n.title||o&&o.title;return null!==n&&"number"==typeof n.season&&"number"==typeof n.episode?"".concat(e," (S").concat(n.season,"E").concat(n.episode,")"):e}),[o,n]),N=i.useCallback((function(){I(!0)}),[]),R=i.useCallback((function(){return null!==o&&"string"==typeof o.type?i.createElement(E,{className:u["placeholder-icon"],icon:S.ICON_FOR_TYPE.has(o.type)?S.ICON_FOR_TYPE.get(o.type):S.ICON_FOR_TYPE.get("other")}):null}),[o]),m=i.useCallback((function(){"function"==typeof r&&r()}),[r]),p=i.useCallback((function(){"function"==typeof _&&_()}),[_]);return i.useLayoutEffect((function(){!0===A&&null!==d.current&&d.current.focus()}),[A]),i.createElement("div",{className:s(t,u["next-video-popup-container"]),onAnimationEnd:N},i.createElement("div",{className:u["poster-container"]},i.createElement(T,{className:u["poster-image"],src:null==n?void 0:n.thumbnail,alt:" ",fallbackSrc:null==o?void 0:o.poster,renderFallback:R})),i.createElement("div",{className:u["info-container"]},i.createElement("div",{className:u["details-container"]},"string"==typeof O?i.createElement("div",{className:u.name},O):null,null!==n&&"string"==typeof n.overview?i.createElement("div",{className:u.description},n.overview):null),i.createElement("div",{className:u["buttons-container"]},i.createElement(l,{className:u["button-container"],onClick:m},i.createElement(E,{className:u.icon,icon:"ic_x"}),i.createElement("div",{className:u.label},"Dismiss")),i.createElement(l,{ref:d,className:s(u["button-container"],u["play-button"]),onClick:p},i.createElement(E,{className:u.icon,icon:"ic_play"}),i.createElement("div",{className:u.label},"Watch Now")))))};d.propTypes={className:r.string,metaItem:r.object,nextVideo:r.object,onDismiss:r.func,onPlayNextVideoRequested:r.func},e.exports=d},8698:(e,t,o)=>{var a=o(2690);e.exports=a},9252:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(6590).Button,E=o(1530),_=function(e){var t=e.icon,o=e.label,n=e.deviceId,_=e.disabled,T=e.onClick,l=a.useCallback((function(){"function"==typeof T&&T(n)}),[T,n]);return a.createElement(s,{className:i(E["option-container"],{disabled:_}),disabled:_,onClick:l},a.createElement(r,{className:E.icon,icon:t}),a.createElement("div",{className:E.label},o))};_.propTypes={icon:n.string,label:n.string,deviceId:n.string,disabled:n.bool,onClick:n.func},e.exports=_},9944:(e,t,o)=>{var a=o(9252);e.exports=a},1366:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=o(4184),E=o(1468).useTranslation,_=o(6590).useToast,T=o(3662).useServices,l=o(9944),S=o(8183),u=function(e){var t=e.className,o=e.stream,n=e.playbackDevices,r=E().t,u=T().core,d=_(),c=a(i.useMemo((function(){return null!==o?o.deepLinks&&o.deepLinks.externalPlayer&&[o.deepLinks.externalPlayer.streaming,o.deepLinks.externalPlayer.download]:[null,null]}),[o]),2),A=c[0],I=c[1],O=i.useMemo((function(){return n.filter((function(e){return"external"===e.type}))}),[n]),N=i.useCallback((function(){(A||I)&&navigator.clipboard.writeText(A||I).then((function(){d.show({type:"success",title:"Copied",message:r("PLAYER_COPY_STREAM_SUCCESS"),timeout:3e3})})).catch((function(e){console.error(e),d.show({type:"error",title:r("Error"),message:"".concat(r("PLAYER_COPY_STREAM_ERROR"),": ").concat(A||I),timeout:3e3})}))}),[A,I]),R=i.useCallback((function(){(A||I)&&window.open(A||I)}),[A,I]),m=i.useCallback((function(e){A&&u.transport.dispatch({action:"StreamingServer",args:{action:"PlayOnDevice",args:{device:e,source:A}}})}),[A]),p=i.useCallback((function(e){e.nativeEvent.optionsMenuClosePrevented=!0}),[]);return i.createElement("div",{className:s(t,S["options-menu-container"]),onMouseDown:p},A||I?i.createElement(l,{icon:"ic_link",label:r("CTX_COPY_STREAM_LINK"),disabled:null===o,onClick:N}):null,A||I?i.createElement(l,{icon:"ic_downloads",label:r("CTX_DOWNLOAD_VIDEO"),disabled:null===o,onClick:R}):null,A&&O.map((function(e){var t=e.id,a=e.name;return i.createElement(l,{key:t,icon:"ic_vlc",label:r("PLAYER_PLAY_IN",{device:a}),deviceId:t,disabled:null===o,onClick:m})})))};u.propTypes={className:r.string,stream:r.object,playbackDevices:r.array},e.exports=u},5714:(e,t,o)=>{var a=o(1366);e.exports=a},2230:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){i(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function r(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return s(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var E=o(7294),_=o(5697),T=o(4184),l=o(1296),S=o(7576),u=o(1468).useTranslation,d=o(1665).useRouteFocused,c=o(3662).useServices,A=o(6590),I=A.HorizontalNavBar,O=A.Button,N=A.useFullscreen,R=A.useBinaryState,m=A.useToast,p=A.useStreamingServer,h=A.withCoreSuspender,L=o(2601),f=o(3475),C=o(9292),D=o(8698),g=o(4426),v=o(5458),P=o(5714),y=o(6429),B=o(9646),b=o(1998),M=o(5711),U=o(5852),W=o(4109),G=o(9731),F=function(e){var t=e.urlParams,o=e.queryParams,a=u().t,s=c(),_=s.chromecast,A=s.shell,h=s.core,F=r(E.useMemo((function(){return[o.has("forceTranscoding"),o.has("maxAudioChannels")?parseInt(o.get("maxAudioChannels"),10):null]}),[o]),2),k=F[0],w=F[1],H=E.useReducer((function(e,t){return n(n({},e),t)}),{manifest:null,stream:null,paused:null,time:null,duration:null,buffering:null,buffered:null,volume:null,muted:null,playbackSpeed:null,videoParams:null,audioTracks:[],selectedAudioTrackId:null,subtitlesTracks:[],selectedSubtitlesTrackId:null,subtitlesOffset:null,subtitlesSize:null,subtitlesTextColor:null,subtitlesBackgroundColor:null,subtitlesOutlineColor:null,extraSubtitlesTracks:[],selectedExtraSubtitlesTrackId:null,extraSubtitlesSize:null,extraSubtitlesDelay:null,extraSubtitlesOffset:null,extraSubtitlesTextColor:null,extraSubtitlesBackgroundColor:null,extraSubtitlesOutlineColor:null}),V=r(H,2),Y=V[0],z=V[1],x=r(U(t,Y.videoParams),4),K=x[0],j=x[1],Q=x[2],X=x[3],$=r(W(),2),q=$[0],J=$[1],Z=p(),ee=d(),te=m(),oe=r(N(),4)[3],ae=r(E.useState((function(){return _.active&&_.transport.getCastState()===cast.framework.CastState.CONNECTED})),2),ne=ae[0],ie=ae[1],re=r(E.useState(!0),2),se=re[0],Ee=re[1],_e=E.useCallback(l(Ee,3e3),[]),Te=r(R(!1),4),le=Te[0],Se=Te[2],ue=Te[3],de=r(R(!1),4),ce=de[0],Ae=de[2],Ie=de[3],Oe=r(R(!1),4),Ne=Oe[0],Re=Oe[2],me=Oe[3],pe=r(R(!1),4),he=pe[0],Le=pe[2],fe=pe[3],Ce=r(R(!1),4),De=Ce[0],ge=Ce[2],ve=Ce[3],Pe=r(R(!1),3),ye=Pe[0],Be=Pe[1],be=Pe[2],Me=r(R(!1),4),Ue=Me[0],We=Me[2],Ge=Me[3],Fe=E.useRef(!1),ke=E.useRef(!1),we=E.useRef(!1),He=r(E.useState(null),2),Ve=He[0],Ye=He[1],ze=E.useRef(null),xe=E.useCallback((function(e,t){null!==ze.current&&ze.current.dispatch(e,t)}),[]),Ke=E.useCallback((function(e){z({manifest:e}),e.props.forEach((function(e){xe({type:"observeProp",propName:e})})),xe({type:"setProp",propName:"subtitlesSize",propValue:q.subtitlesSize}),xe({type:"setProp",propName:"subtitlesOffset",propValue:q.subtitlesOffset}),xe({type:"setProp",propName:"subtitlesTextColor",propValue:q.subtitlesTextColor}),xe({type:"setProp",propName:"subtitlesBackgroundColor",propValue:q.subtitlesBackgroundColor}),xe({type:"setProp",propName:"subtitlesOutlineColor",propValue:q.subtitlesOutlineColor}),xe({type:"setProp",propName:"extraSubtitlesSize",propValue:q.subtitlesSize}),xe({type:"setProp",propName:"extraSubtitlesOffset",propValue:q.subtitlesOffset}),xe({type:"setProp",propName:"extraSubtitlesTextColor",propValue:q.subtitlesTextColor}),xe({type:"setProp",propName:"extraSubtitlesBackgroundColor",propValue:q.subtitlesBackgroundColor}),xe({type:"setProp",propName:"extraSubtitlesOutlineColor",propValue:q.subtitlesOutlineColor})}),[q.subtitlesSize,q.subtitlesOffset,q.subtitlesTextColor,q.subtitlesBackgroundColor,q.subtitlesOutlineColor]),je=E.useCallback((function(e,t){z(i({},e,t))}),[]),Qe=E.useCallback((function(){X(),null!==K.nextVideo?dt():window.history.back()}),[K.nextVideo,dt]),Xe=E.useCallback((function(e){console.error("Player",e),e.critical?Ye(e):te.show({type:"error",title:a("ERROR"),message:e.message,timeout:3e3})}),[]),$e=E.useCallback((function(){te.show({type:"success",title:a("PLAYER_SUBTITLES_LOADED"),message:a("PLAYER_SUBTITLES_LOADED_EMBEDDED"),timeout:3e3})}),[]),qe=E.useCallback((function(e){te.show({type:"success",title:a("PLAYER_SUBTITLES_LOADED"),message:e.exclusive?a("PLAYER_SUBTITLES_LOADED_EXCLUSIVE"):a("PLAYER_SUBTITLES_LOADED_ORIGIN",{origin:e.origin}),timeout:3e3})}),[]),Je=E.useCallback((function(){xe({type:"setProp",propName:"paused",propValue:!1})}),[]),Ze=E.useCallback(l(Je,200),[]),et=E.useCallback((function(){xe({type:"setProp",propName:"paused",propValue:!0})}),[]),tt=E.useCallback(l(et,200),[]),ot=E.useCallback((function(){xe({type:"setProp",propName:"muted",propValue:!0})}),[]),at=E.useCallback((function(){xe({type:"setProp",propName:"muted",propValue:!1})}),[]),nt=E.useCallback((function(e){xe({type:"setProp",propName:"volume",propValue:e})}),[]),it=E.useCallback((function(e){xe({type:"setProp",propName:"time",propValue:e})}),[]),rt=E.useCallback((function(e){xe({type:"setProp",propName:"playbackSpeed",propValue:e})}),[]),st=E.useCallback((function(e){xe({type:"setProp",propName:"selectedSubtitlesTrackId",propValue:e}),xe({type:"setProp",propName:"selectedExtraSubtitlesTrackId",propValue:null})}),[]),Et=E.useCallback((function(e){xe({type:"setProp",propName:"selectedSubtitlesTrackId",propValue:null}),xe({type:"setProp",propName:"selectedExtraSubtitlesTrackId",propValue:e})}),[]),_t=E.useCallback((function(e){xe({type:"setProp",propName:"selectedAudioTrackId",propValue:e})}),[]),Tt=E.useCallback((function(e){xe({type:"setProp",propName:"extraSubtitlesDelay",propValue:e})}),[]),lt=E.useCallback((function(e){J({subtitlesSize:e})}),[J]),St=E.useCallback((function(e){J({subtitlesOffset:e})}),[J]),ut=E.useCallback((function(){be(),Fe.current=!0}),[]),dt=E.useCallback((function(){null!==K.nextVideo&&window.location.replace("string"==typeof K.nextVideo.deepLinks.player?K.nextVideo.deepLinks.player:K.nextVideo.deepLinks.metaDetailsStreams)}),[K.nextVideo]),ct=E.useCallback((function(){null!==Y.paused&&(Y.paused?Ze():tt())}),[Y.paused]),At=E.useCallback((function(){Ze.cancel(),tt.cancel(),oe()}),[oe]),It=E.useCallback((function(e){e.nativeEvent.optionsMenuClosePrevented||Se(),e.nativeEvent.subtitlesMenuClosePrevented||Ae(),e.nativeEvent.infoMenuClosePrevented||Re(),e.nativeEvent.speedMenuClosePrevented||Le(),e.nativeEvent.videosMenuClosePrevented||ge(),e.nativeEvent.statisticsMenuClosePrevented||We()}),[]),Ot=E.useCallback((function(e){Ee(!1),e.nativeEvent.immersePrevented?_e.cancel():_e(!0)}),[]),Nt=E.useCallback((function(){_e.cancel(),Ee(!0)}),[]),Rt=E.useCallback((function(e){e.nativeEvent.immersePrevented=!0}),[]);return E.useEffect((function(){Ye(null),null===K.selected?xe({type:"command",commandName:"unload"}):null!==Z.baseUrl&&"Loading"!==Z.baseUrl.type&&(null===K.selected.metaRequest||null!==K.metaItem&&"Loading"!==K.metaItem.type)&&xe({type:"command",commandName:"load",commandArgs:{stream:n(n({},K.selected.stream),{},{subtitles:Array.isArray(K.selected.stream.subtitles)?K.selected.stream.subtitles.map((function(e){return n(n({},e),{},{label:e.url})})):[]}),autoplay:!0,time:null!==K.libraryItem&&null!==K.selected.streamRequest&&null!==K.selected.streamRequest.path&&K.libraryItem.state.video_id===K.selected.streamRequest.path.id?K.libraryItem.state.timeOffset:0,forceTranscoding:k||ne,maxAudioChannels:"number"==typeof w?w:window.chrome?2:null,streamingServerURL:"Ready"===Z.baseUrl.type?ne?Z.baseUrl.content:Z.selected.transportUrl:null,seriesInfo:K.seriesInfo}},{chromecastTransport:_.active?_.transport:null,shellTransport:A.active?A.transport:null})}),[Z.baseUrl,K.selected,K.metaItem,k,w,ne]),E.useEffect((function(){null!==Y.stream&&xe({type:"command",commandName:"addExtraSubtitlesTracks",commandArgs:{tracks:K.subtitles.map((function(e){return n(n({},e),{},{label:e.url})}))}})}),[K.subtitles,Y.stream]),E.useEffect((function(){xe({type:"setProp",propName:"subtitlesSize",propValue:q.subtitlesSize}),xe({type:"setProp",propName:"extraSubtitlesSize",propValue:q.subtitlesSize})}),[q.subtitlesSize]),E.useEffect((function(){xe({type:"setProp",propName:"subtitlesOffset",propValue:q.subtitlesOffset}),xe({type:"setProp",propName:"extraSubtitlesOffset",propValue:q.subtitlesOffset})}),[q.subtitlesOffset]),E.useEffect((function(){xe({type:"setProp",propName:"subtitlesTextColor",propValue:q.subtitlesTextColor}),xe({type:"setProp",propName:"extraSubtitlesTextColor",propValue:q.subtitlesTextColor})}),[q.subtitlesTextColor]),E.useEffect((function(){xe({type:"setProp",propName:"subtitlesBackgroundColor",propValue:q.subtitlesBackgroundColor}),xe({type:"setProp",propName:"extraSubtitlesBackgroundColor",propValue:q.subtitlesBackgroundColor})}),[q.subtitlesBackgroundColor]),E.useEffect((function(){xe({type:"setProp",propName:"subtitlesOutlineColor",propValue:q.subtitlesOutlineColor}),xe({type:"setProp",propName:"extraSubtitlesOutlineColor",propValue:q.subtitlesOutlineColor})}),[q.subtitlesOutlineColor]),E.useEffect((function(){null===Y.time||isNaN(Y.time)||null===Y.duration||isNaN(Y.duration)||null===Y.manifest||"string"!=typeof Y.manifest.name||j(Y.time,Y.duration,Y.manifest.name)}),[Y.time,Y.duration,Y.manifest]),E.useEffect((function(){null!==Y.paused&&Q(Y.paused)}),[Y.paused]),E.useEffect((function(){q.bingeWatching&&null!==K.nextVideo&&!Fe.current&&(null!==Y.time&&null!==Y.duration&&Y.time<Y.duration&&Y.duration-Y.time<=q.nextVideoNotificationDuration?Be():be())}),[K.nextVideo,Y.time,Y.duration]),E.useEffect((function(){if(K.selected&&K.selected.stream&&"string"==typeof K.selected.stream.infoHash&&"number"==typeof K.selected.stream.fileIdx){var e=K.selected.stream,t=e.infoHash,o=e.fileIdx,a=function(){h.transport.dispatch({action:"StreamingServer",args:{action:"GetStatistics",args:{infoHash:t,fileIdx:o}}})};a();var n=setInterval(a,5e3);return function(){return clearInterval(n)}}}),[K.selected]),E.useEffect((function(){if(!ke.current){var e=function(e,t){return e.find((function(e){var o;return e.lang===t||(null===(o=S.where("1",e.lang))||void 0===o?void 0:o[2])===t}))},t=e(Y.subtitlesTracks,q.subtitlesLanguage),o=e(Y.extraSubtitlesTracks,q.subtitlesLanguage);t&&t.id?(st(t.id),ke.current=!0):o&&o.id&&(Et(o.id),ke.current=!0)}}),[Y.subtitlesTracks,Y.extraSubtitlesTracks]),E.useEffect((function(){if(!we.current){var e=(t=Y.audioTracks,o=q.audioLanguage,t.find((function(e){var t;return e.lang===o||(null===(t=S.where("1",e.lang))||void 0===t?void 0:t[2])===o})));e&&e.id&&(_t(e.id),we.current=!0)}var t,o}),[Y.audioTracks]),E.useEffect((function(){ke.current=!1,we.current=!1,Fe.current=!1}),[Y.stream]),E.useEffect((function(){Array.isArray(Y.subtitlesTracks)&&0!==Y.subtitlesTracks.length||Array.isArray(Y.extraSubtitlesTracks)&&0!==Y.extraSubtitlesTracks.length||Array.isArray(Y.audioTracks)&&0!==Y.audioTracks.length||Ae()}),[Y.audioTracks,Y.subtitlesTracks,Y.extraSubtitlesTracks]),E.useEffect((function(){null!==K.metaItem&&"Ready"===K.metaItem.type||(Re(),ge())}),[K.metaItem]),E.useEffect((function(){null===Y.playbackSpeed&&Le()}),[Y.playbackSpeed]),E.useEffect((function(){var e=function(e){var t;return"CoreEvent"===(null==e||null===(t=e.dataset)||void 0===t?void 0:t.type)};te.addFilter(e);var t=function(){ie(_.active&&_.transport.getCastState()===cast.framework.CastState.CONNECTED)},o=function(){t(),_.active&&_.transport.on(cast.framework.CastContextEventType.CAST_STATE_CHANGED,t)},a=function(e){"PlayingOnDevice"===e.event&&et()};return _.on("stateChanged",o),h.transport.on("CoreEvent",a),o(),function(){te.removeFilter(e),_.off("stateChanged",o),h.transport.off("CoreEvent",a),_.active&&_.transport.off(cast.framework.CastContextEventType.CAST_STATE_CHANGED,t)}}),[]),E.useLayoutEffect((function(){var e=function(e){switch(e.code){case"Space":ce||Ne||De||he||le||Ue||null===Y.paused||(Y.paused?Je():et());break;case"ArrowRight":if(!(ce||Ne||De||he||le||Ue||null===Y.time)){var t=e.shiftKey?3:1;it(Y.time+q.seekTimeDuration*t)}break;case"ArrowLeft":if(!(ce||Ne||De||he||le||Ue||null===Y.time)){var o=e.shiftKey?3:1;it(Y.time-q.seekTimeDuration*o)}break;case"ArrowUp":ce||Ne||De||he||le||Ue||null===Y.volume||nt(Y.volume+5);break;case"ArrowDown":ce||Ne||De||he||le||Ue||null===Y.volume||nt(Y.volume-5);break;case"KeyS":Se(),Re(),Le(),ge(),We(),(Array.isArray(Y.subtitlesTracks)&&Y.subtitlesTracks.length>0||Array.isArray(Y.extraSubtitlesTracks)&&Y.extraSubtitlesTracks.length>0||Array.isArray(Y.audioTracks)&&Y.audioTracks.length>0)&&Ie();break;case"KeyI":Se(),Ae(),Le(),ge(),We(),null!==K.metaItem&&"Ready"===K.metaItem.type&&me();break;case"KeyR":Se(),Re(),Ae(),ge(),We(),null!==Y.playbackSpeed&&fe();break;case"KeyV":Se(),Re(),Ae(),Le(),We(),null!==K.metaItem&&"Ready"===K.metaItem.type&&ve();break;case"KeyD":Se(),Re(),Ae(),Le(),ge(),null!==Z.statistics&&"Err"!==Z.statistics.type&&K.selected&&"string"==typeof K.selected.stream.infoHash&&"number"==typeof K.selected.stream.fileIdx&&Ge();break;case"Escape":Se(),Ae(),Re(),Le(),ge(),We(),ut()}},t=function(e){e.deltaY>0?ce||Ne||De||he||le||Ue||null===Y.volume||nt(Y.volume-5):ce||Ne||De||he||le||Ue||null===Y.volume||nt(Y.volume+5)};return ee&&(window.addEventListener("keydown",e),window.addEventListener("wheel",t)),function(){window.removeEventListener("keydown",e),window.removeEventListener("wheel",t)}}),[K.metaItem,K.selected,Z.statistics,q.seekTimeDuration,ee,ce,Ne,De,he,le,Ue,Y.paused,Y.time,Y.volume,Y.audioTracks,Y.subtitlesTracks,Y.extraSubtitlesTracks,Y.playbackSpeed,Ie,me,ve,Ge]),E.useLayoutEffect((function(){return function(){_e.cancel(),Ze.cancel(),tt.cancel()}}),[]),E.createElement("div",{className:T(G["player-container"],i({},G.immersed,se&&!ne&&null!==Y.paused&&!Y.paused&&!ce&&!Ne&&!he&&!De&&!ye&&!le&&!Ue)),onMouseDown:It,onMouseMove:Ot,onMouseOver:Ot,onMouseLeave:Nt},E.createElement(M,{ref:ze,className:G.layer,onEnded:Qe,onError:Xe,onPropValue:je,onPropChanged:je,onSubtitlesTrackLoaded:$e,onExtraSubtitlesTrackLoaded:qe,onImplementationChanged:Ke}),Y.buffering?E.createElement(f,{className:G.layer}):null,E.createElement("div",{className:G.layer,onClick:ct,onDoubleClick:At}),null!==Ve?E.createElement("div",{className:T(G.layer,G["error-layer"])},E.createElement("div",{className:G["error-label"],title:Ve.message},Ve.message),2===Ve.code?E.createElement("div",{className:G["error-sub"],title:a("EXTERNAL_PLAYER_HINT")},a("EXTERNAL_PLAYER_HINT")):null,null!==K.selected?E.createElement(O,{className:G["playlist-button"],title:a("PLAYER_OPEN_IN_EXTERNAL"),href:K.selected.stream.deepLinks.externalPlayer.href,download:K.selected.stream.deepLinks.externalPlayer.fileName,target:"_blank"},E.createElement(L,{className:G.icon,icon:"ic_downloads"}),E.createElement("div",{className:G.label},a("PLAYER_OPEN_IN_EXTERNAL"))):null):null,ce||Ne||De||he||le||Ue?E.createElement("div",{className:G.layer}):null,E.createElement(I,{className:T(G.layer,G["nav-bar-layer"]),title:null!==K.title?K.title:"",backButton:!0,fullscreenButton:!0,onMouseMove:Rt,onMouseOver:Rt}),E.createElement(C,{className:T(G.layer,G["control-bar-layer"]),paused:Y.paused,time:Y.time,duration:Y.duration,buffered:Y.buffered,volume:Y.volume,muted:Y.muted,playbackSpeed:Y.playbackSpeed,subtitlesTracks:Y.subtitlesTracks.concat(Y.extraSubtitlesTracks),audioTracks:Y.audioTracks,metaItem:K.metaItem,nextVideo:K.nextVideo,stream:null!==K.selected?K.selected.stream:null,statistics:Z.statistics,onPlayRequested:Je,onPauseRequested:et,onMuteRequested:ot,onUnmuteRequested:at,onVolumeChangeRequested:nt,onSeekRequested:it,onToggleOptionsMenu:ue,onToggleSubtitlesMenu:Ie,onToggleInfoMenu:me,onToggleSpeedMenu:fe,onToggleVideosMenu:ve,onToggleStatisticsMenu:Ge,onMouseMove:Rt,onMouseOver:Rt}),ye?E.createElement(D,{className:T(G.layer,G["menu-layer"]),metaItem:null!==K.metaItem&&"Ready"===K.metaItem.type?K.metaItem.content:null,nextVideo:K.nextVideo,onDismiss:ut,onPlayNextVideoRequested:dt}):null,Ue?E.createElement(g,{className:T(G.layer,G["menu-layer"]),stream:null!==K.selected?K.selected.stream:null,statistics:Z.statistics}):null,ce?E.createElement(B,{className:T(G.layer,G["menu-layer"]),audioTracks:Y.audioTracks,selectedAudioTrackId:Y.selectedAudioTrackId,subtitlesTracks:Y.subtitlesTracks,selectedSubtitlesTrackId:Y.selectedSubtitlesTrackId,subtitlesOffset:Y.subtitlesOffset,subtitlesSize:Y.subtitlesSize,extraSubtitlesTracks:Y.extraSubtitlesTracks,selectedExtraSubtitlesTrackId:Y.selectedExtraSubtitlesTrackId,extraSubtitlesOffset:Y.extraSubtitlesOffset,extraSubtitlesDelay:Y.extraSubtitlesDelay,extraSubtitlesSize:Y.extraSubtitlesSize,onSubtitlesTrackSelected:st,onExtraSubtitlesTrackSelected:Et,onAudioTrackSelected:_t,onSubtitlesOffsetChanged:St,onSubtitlesSizeChanged:lt,onExtraSubtitlesOffsetChanged:St,onExtraSubtitlesDelayChanged:Tt,onExtraSubtitlesSizeChanged:lt}):null,Ne?E.createElement(v,{className:T(G.layer,G["menu-layer"]),stream:null!==K.selected?K.selected.stream:null,addon:K.addon,metaItem:null!==K.metaItem&&"Ready"===K.metaItem.type?K.metaItem.content:null}):null,he?E.createElement(b,{className:T(G.layer,G["menu-layer"]),playbackSpeed:Y.playbackSpeed,onPlaybackSpeedChanged:rt}):null,De?E.createElement(y,{className:T(G.layer,G["menu-layer"]),metaItem:null!==K.metaItem&&"Ready"===K.metaItem.type?K.metaItem.content:null,seriesInfo:K.seriesInfo}):null,le?E.createElement(P,{className:T(G.layer,G["menu-layer"]),stream:K.selected.stream,playbackDevices:null!==Z.playbackDevices&&"Ready"===Z.playbackDevices.type?Z.playbackDevices.content:[]}):null)};F.propTypes={urlParams:_.shape({stream:_.string,streamTransportUrl:_.string,metaTransportUrl:_.string,type:_.string,id:_.string,videoId:_.string}),queryParams:_.instanceOf(URLSearchParams)};e.exports=h(F,(function(){return E.createElement("div",{className:T(G["player-container"])})}))},7764:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(6590).Button,s=o(4805),E=function(e){var t=e.className,o=e.value,n=e.selected,E=e.onSelect,_=a.useCallback((function(){"function"==typeof E&&E(o)}),[E,o]);return a.createElement(r,{className:i(t,s.option,{selected:n}),onClick:_},a.createElement("div",{className:s.label},o,"x"),a.createElement("div",{className:s.icon}))};E.propTypes={className:n.string,value:n.number,selected:n.bool,onSelect:n.func},e.exports=E},9396:(e,t,o)=>{var a=o(7764);e.exports=a},5296:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(1468).useTranslation,s=o(9396),E=o(9715),_=Array.from(Array(8).keys(),(function(e){return.25*e+.25})).reverse(),T=function(e){var t=e.className,o=e.playbackSpeed,n=e.onPlaybackSpeedChanged,T=r().t,l=a.useCallback((function(e){e.nativeEvent.speedMenuClosePrevented=!0}),[]),S=a.useCallback((function(e){"function"==typeof n&&n(e)}),[n]);return a.createElement("div",{className:i(t,E["speed-menu-container"]),onMouseDown:l},a.createElement("div",{className:E.title},T("PLAYBACK_SPEED")),a.createElement("div",{className:E["options-container"]},_.map((function(e){return a.createElement(s,{className:E.option,key:e,value:e,selected:e===o,onSelect:S})}))))};T.propTypes={className:n.string,playbackSpeed:n.number,onPlaybackSpeedChanged:n.func},e.exports=T},1998:(e,t,o)=>{var a=o(5296);e.exports=a},2763:(e,t,o)=>{var a=o(7294),n=o(4184),i=o(5697),r=o(1289),s=function(e){var t=e.className,o=e.stream,i=e.statistics,s=a.useMemo((function(){var e;return"Ready"===i.type&&null!==(e=i.content)&&void 0!==e&&e.peers?i.content.peers:0}),[i]),E=a.useMemo((function(){var e;return"Ready"===i.type&&null!==(e=i.content)&&void 0!==e&&e.downloadSpeed?(i.content.downloadSpeed/1e3/1e3).toFixed(2):0}),[i]),_=a.useMemo((function(){var e;return"Ready"===i.type&&null!==(e=i.content)&&void 0!==e&&e.streamProgress?(100*i.content.streamProgress).toFixed(2):0}),[i]);return a.createElement("div",{className:n(t,r["statistics-menu-container"])},a.createElement("div",{className:r.title},"Statistics"),a.createElement("div",{className:r.stats},a.createElement("div",{className:r.stat},a.createElement("div",{className:r.label},"Peers"),a.createElement("div",{className:r.value},s)),a.createElement("div",{className:r.stat},a.createElement("div",{className:r.label},"Speed"),a.createElement("div",{className:r.value},E," MB/s")),a.createElement("div",{className:r.stat},a.createElement("div",{className:r.label},"Completed"),a.createElement("div",{className:r.value},_," %"))),a.createElement("div",{className:r["info-hash"]},a.createElement("div",{className:r.label},"Info Hash"),a.createElement("div",{className:r.value},o.infoHash)))};s.propTypes={className:i.string,stream:i.object,statistics:i.object},e.exports=s},4426:(e,t,o)=>{var a=o(2763);e.exports=a},569:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(2601),s=o(6590).Button,E=o(3283),_=function(e){var t=e.className,o=e.value,n=e.label,_=e.disabled,T=e.dataset,l=e.onChange,S=a.useCallback((function(e){"function"==typeof l&&l({type:"change",value:e.currentTarget.dataset.type,dataset:T,reactEvent:e,nativeEvent:e.nativeEvent})}),[T,l]);return a.createElement("div",{className:i(t,E["discrete-input-container"],{disabled:_})},a.createElement("div",{className:E.header},n),a.createElement("div",{className:E["input-container"],title:_?"".concat(n," is not configurable"):null},a.createElement(s,{className:i(E["button-container"],{disabled:_}),"data-type":"decrement",onClick:S},a.createElement(r,{className:E.icon,icon:"ic_minus"})),a.createElement("div",{className:E["option-label"],title:o},o),a.createElement(s,{className:i(E["button-container"],{disabled:_}),"data-type":"increment",onClick:S},a.createElement(r,{className:E.icon,icon:"ic_plus"}))))};_.propTypes={className:n.string,value:n.string,label:n.string,disabled:n.bool,dataset:n.object,onChange:n.func},e.exports=_},3132:(e,t,o)=>{var a=o(569);e.exports=a},1346:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(6590),s=r.Button,E=r.CONSTANTS,_=r.comparatorWithPriorities,T=r.languageNames,l=o(3132),S=o(3889),u=o(6073).t,d={EMBEDDED:2,EXCLUSIVE:1},c={eng:1},A=a.memo((function(e){var t=a.useMemo((function(){return(Array.isArray(e.subtitlesTracks)?e.subtitlesTracks:[]).concat(Array.isArray(e.extraSubtitlesTracks)?e.extraSubtitlesTracks:[]).reduce((function(e,t){var o=t.lang;return e.includes(o)||e.push(o),e}),[]).sort(_(c))}),[e.subtitlesTracks,e.extraSubtitlesTracks]),o=a.useMemo((function(){return"string"==typeof e.selectedSubtitlesTrackId?(Array.isArray(e.subtitlesTracks)?e.subtitlesTracks:[]).reduce((function(t,o){var a=o.id,n=o.lang;return a===e.selectedSubtitlesTrackId?n:t}),null):"string"==typeof e.selectedExtraSubtitlesTrackId?(Array.isArray(e.extraSubtitlesTracks)?e.extraSubtitlesTracks:[]).reduce((function(t,o){var a=o.id,n=o.lang;return a===e.selectedExtraSubtitlesTrackId?n:t}),null):null}),[e.subtitlesTracks,e.extraSubtitlesTracks,e.selectedSubtitlesTrackId,e.selectedExtraSubtitlesTrackId]),n=a.useMemo((function(){return(Array.isArray(e.subtitlesTracks)?e.subtitlesTracks:[]).concat(Array.isArray(e.extraSubtitlesTracks)?e.extraSubtitlesTracks:[]).filter((function(e){return e.lang===o})).sort((function(e,t){return _(d)(e.origin,t.origin)}))}),[e.subtitlesTracks,e.extraSubtitlesTracks,o]),r=a.useCallback((function(e){e.nativeEvent.subtitlesMenuClosePrevented=!0}),[]),A=a.useCallback((function(t){var o=(Array.isArray(e.subtitlesTracks)?e.subtitlesTracks:[]).concat(Array.isArray(e.extraSubtitlesTracks)?e.extraSubtitlesTracks:[]).filter((function(e){return e.lang===t.currentTarget.dataset.lang})).sort((function(e,t){return _(d)(e.origin,t.origin)})).shift();o?o.embedded?"function"==typeof e.onSubtitlesTrackSelected&&e.onSubtitlesTrackSelected(o.id):"function"==typeof e.onExtraSubtitlesTrackSelected&&e.onExtraSubtitlesTrackSelected(o.id):("function"==typeof e.onSubtitlesTrackSelected&&e.onSubtitlesTrackSelected(null),"function"==typeof e.onExtraSubtitlesTrackSelected&&e.onExtraSubtitlesTrackSelected(null))}),[e.subtitlesTracks,e.extraSubtitlesTracks,e.onSubtitlesTrackSelected,e.onExtraSubtitlesTrackSelected]),I=a.useCallback((function(t){"true"===t.currentTarget.dataset.embedded?"function"==typeof e.onSubtitlesTrackSelected&&e.onSubtitlesTrackSelected(t.currentTarget.dataset.id):"function"==typeof e.onExtraSubtitlesTrackSelected&&e.onExtraSubtitlesTrackSelected(t.currentTarget.dataset.id)}),[e.onSubtitlesTrackSelected,e.onExtraSubtitlesTrackSelected]),O=a.useCallback((function(t){var o="increment"===t.value?250:-250;if("string"==typeof e.selectedExtraSubtitlesTrackId&&null!==e.extraSubtitlesDelay&&!isNaN(e.extraSubtitlesDelay)){var a=e.extraSubtitlesDelay+o;"function"==typeof e.onExtraSubtitlesDelayChanged&&e.onExtraSubtitlesDelayChanged(a)}}),[e.selectedExtraSubtitlesTrackId,e.extraSubtitlesDelay,e.onExtraSubtitlesDelayChanged]),N=a.useCallback((function(t){var o="increment"===t.value?1:-1;if("string"==typeof e.selectedSubtitlesTrackId){if(null!==e.subtitlesSize&&!isNaN(e.subtitlesSize)){var a=E.SUBTITLES_SIZES.indexOf(e.subtitlesSize),n=E.SUBTITLES_SIZES[Math.max(0,Math.min(E.SUBTITLES_SIZES.length-1,a+o))];"function"==typeof e.onSubtitlesSizeChanged&&e.onSubtitlesSizeChanged(n)}}else if("string"==typeof e.selectedExtraSubtitlesTrackId&&null!==e.extraSubtitlesSize&&!isNaN(e.extraSubtitlesSize)){var i=E.SUBTITLES_SIZES.indexOf(e.extraSubtitlesSize),r=E.SUBTITLES_SIZES[Math.max(0,Math.min(E.SUBTITLES_SIZES.length-1,i+o))];"function"==typeof e.onExtraSubtitlesSizeChanged&&e.onExtraSubtitlesSizeChanged(r)}}),[e.selectedSubtitlesTrackId,e.selectedExtraSubtitlesTrackId,e.subtitlesSize,e.extraSubtitlesSize,e.onSubtitlesSizeChanged,e.onExtraSubtitlesSizeChanged]),R=a.useCallback((function(t){var o="increment"===t.value?1:-1;if("string"==typeof e.selectedSubtitlesTrackId){if(null!==e.extraSubtitlesOffset&&!isNaN(e.extraSubtitlesOffset)){var a=Math.max(0,Math.min(100,Math.floor(e.extraSubtitlesOffset+o)));"function"==typeof e.onExtraSubtitlesOffsetChanged&&e.onExtraSubtitlesOffsetChanged(a)}}else if("string"==typeof e.selectedExtraSubtitlesTrackId&&null!==e.subtitlesOffset&&!isNaN(e.subtitlesOffset)){var n=Math.max(0,Math.min(100,Math.floor(e.subtitlesOffset+o)));"function"==typeof e.onSubtitlesOffsetChanged&&e.onSubtitlesOffsetChanged(n)}}),[e.selectedSubtitlesTrackId,e.selectedExtraSubtitlesTrackId,e.subtitlesOffset,e.extraSubtitlesOffset,e.onSubtitlesOffsetChanged,e.onExtraSubtitlesOffsetChanged]),m=a.useCallback((function(t){"function"==typeof e.onAudioTrackSelected&&e.onAudioTrackSelected(t.currentTarget.dataset.id)}),[e.onAudioTrackSelected]);return a.createElement("div",{className:i(e.className,S["subtitles-menu-container"]),onMouseDown:r},Array.isArray(e.audioTracks)&&e.audioTracks.length>1?a.createElement("div",{className:S["languages-container"]},a.createElement("div",{className:S["languages-header"]},"Audio Languages"),a.createElement("div",{className:S["languages-list"]},e.audioTracks.map((function(t,o){var n=t.id,r=t.label,E=t.lang;return a.createElement(s,{key:o,title:r,className:i(S["language-option"],{selected:e.selectedAudioTrackId===n}),"data-id":n,onClick:m},a.createElement("div",{className:S["language-label"]},"string"==typeof T[E]?T[E]:E),e.selectedAudioTrackId===n?a.createElement("div",{className:S.icon}):null)})))):null,a.createElement("div",{className:S["languages-container"]},a.createElement("div",{className:S["languages-header"]},u("PLAYER_SUBTITLES_LANGUAGES")),a.createElement("div",{className:S["languages-list"]},a.createElement(s,{title:u("OFF"),className:i(S["language-option"],{selected:null===o}),onClick:A},a.createElement("div",{className:S["language-label"]},u("OFF")),null===o?a.createElement("div",{className:S.icon}):null),t.map((function(e,t){return a.createElement(s,{key:t,title:"string"==typeof T[e]?T[e]:e,className:i(S["language-option"],{selected:o===e}),"data-lang":e,onClick:A},a.createElement("div",{className:S["language-label"]},"string"==typeof T[e]?T[e]:e),o===e?a.createElement("div",{className:S.icon}):null)})))),a.createElement("div",{className:S["variants-container"]},a.createElement("div",{className:S["variants-header"]},u("PLAYER_SUBTITLES_VARIANTS")),n.length>0?a.createElement("div",{className:S["variants-list"]},n.map((function(t,o){return a.createElement(s,{key:o,title:t.label,className:i(S["variant-option"],{selected:e.selectedSubtitlesTrackId===t.id||e.selectedExtraSubtitlesTrackId===t.id}),"data-id":t.id,"data-origin":t.origin,"data-embedded":t.embedded,onClick:I},a.createElement("div",{className:S["variant-label"]},t.origin),e.selectedSubtitlesTrackId===t.id||e.selectedExtraSubtitlesTrackId===t.id?a.createElement("div",{className:S.icon}):null)}))):a.createElement("div",{className:S["no-variants-container"]},a.createElement("div",{className:S["no-variants-label"]},u("PLAYER_SUBTITLES_DISABLED")))),a.createElement("div",{className:S["subtitles-settings-container"]},a.createElement("div",{className:S["settings-header"]},"Subtitles Settings"),a.createElement(l,{className:S["discrete-input"],label:u("DELAY"),value:"string"!=typeof e.selectedExtraSubtitlesTrackId||null===e.extraSubtitlesDelay||isNaN(e.extraSubtitlesDelay)?"--":"".concat((e.extraSubtitlesDelay/1e3).toFixed(2),"s"),disabled:"string"!=typeof e.selectedExtraSubtitlesTrackId||null===e.extraSubtitlesDelay||isNaN(e.extraSubtitlesDelay),onChange:O}),a.createElement(l,{className:S["discrete-input"],label:u("SIZE"),value:"string"==typeof e.selectedSubtitlesTrackId?null===e.subtitlesSize||isNaN(e.subtitlesSize)?"--":"".concat(e.subtitlesSize,"%"):"string"==typeof e.selectedExtraSubtitlesTrackId?null===e.extraSubtitlesSize||isNaN(e.extraSubtitlesSize)?"--":"".concat(e.extraSubtitlesSize,"%"):"--",disabled:"string"==typeof e.selectedSubtitlesTrackId?null===e.subtitlesSize||isNaN(e.subtitlesSize):"string"!=typeof e.selectedExtraSubtitlesTrackId||(null===e.extraSubtitlesSize||isNaN(e.extraSubtitlesSize)),onChange:N}),a.createElement(l,{className:S["discrete-input"],label:u("PLAYER_SUBTITLES_VERTICAL_POSIITON"),value:"string"==typeof e.selectedSubtitlesTrackId?null===e.subtitlesOffset||isNaN(e.subtitlesOffset)?"--":"".concat(e.subtitlesOffset,"%"):"string"==typeof e.selectedExtraSubtitlesTrackId?null===e.extraSubtitlesOffset||isNaN(e.extraSubtitlesOffset)?"--":"".concat(e.extraSubtitlesOffset,"%"):"--",disabled:"string"==typeof e.selectedSubtitlesTrackId?null===e.subtitlesOffset||isNaN(e.subtitlesOffset):"string"!=typeof e.selectedExtraSubtitlesTrackId||(null===e.extraSubtitlesOffset||isNaN(e.extraSubtitlesOffset)),onChange:R}),a.createElement("div",{className:S.spacing}),a.createElement(s,{className:i(S["advanced-button"],"disabled"),title:"Advanced"},"Advanced")))}));A.displayName="MainNavBars",A.propTypes={className:n.string,subtitlesTracks:n.arrayOf(n.shape({id:n.string.isRequired,lang:n.string.isRequired,origin:n.string.isRequired})),selectedSubtitlesTrackId:n.string,subtitlesOffset:n.number,subtitlesSize:n.number,extraSubtitlesTracks:n.arrayOf(n.shape({id:n.string.isRequired,lang:n.string.isRequired,origin:n.string.isRequired,label:n.string.isRequired})),selectedExtraSubtitlesTrackId:n.string,extraSubtitlesOffset:n.number,extraSubtitlesDelay:n.number,extraSubtitlesSize:n.number,audioTracks:n.arrayOf(n.shape({id:n.string.isRequired,lang:n.string.isRequired,origin:n.string.isRequired,label:n.string.isRequired})),selectedAudioTrackId:n.string,onSubtitlesTrackSelected:n.func,onExtraSubtitlesTrackSelected:n.func,onAudioTrackSelected:n.func,onSubtitlesOffsetChanged:n.func,onSubtitlesSizeChanged:n.func,onExtraSubtitlesOffsetChanged:n.func,onExtraSubtitlesDelayChanged:n.func,onExtraSubtitlesSizeChanged:n.func},e.exports=A},9646:(e,t,o)=>{var a=o(1346);e.exports=a},5245:(e,t,o)=>{var a=["className"];function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?n(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function s(e,t){if(null==e)return{};var o,a,n=(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o]);return n})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var E=o(7294),_=o(5697),T=o(4184),l=o(1654),S=o(6590).useLiveRef,u=o(4236),d=E.forwardRef((function(e,t){var o=e.className,n=s(e,a),r=S(n.onEnded),_=S(n.onError),d=S(n.onPropValue),c=S(n.onPropChanged),A=S(n.onSubtitlesTrackLoaded),I=S(n.onExtraSubtitlesTrackLoaded),O=S(n.onImplementationChanged),N=E.useRef(null),R=E.useRef(null),m=E.useCallback((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null!==R.current)try{R.current.dispatch(e,i(i({},t),{},{containerElement:N.current}))}catch(e){console.error("Video",e)}}),[]);return E.useImperativeHandle(t,(function(){return{dispatch:m}}),[]),E.useEffect((function(){return null!==N.current&&(R.current=new l,R.current.on("ended",(function(){"function"==typeof r.current&&r.current()})),R.current.on("error",(function(e){"function"==typeof _.current&&_.current(e)})),R.current.on("propValue",(function(e,t){"function"==typeof d.current&&d.current(e,t)})),R.current.on("propChanged",(function(e,t){"function"==typeof c.current&&c.current(e,t)})),R.current.on("subtitlesTrackLoaded",(function(e){"function"==typeof A.current&&A.current(e)})),R.current.on("extraSubtitlesTrackLoaded",(function(e){"function"==typeof I.current&&I.current(e)})),R.current.on("implementationChanged",(function(e){"function"==typeof O.current&&O.current(e)}))),function(){R.current.destroy()}}),[]),E.createElement("div",{className:T(o,u["video-container"])},E.createElement("div",{ref:N,className:u.video}))}));d.displayName="Video",d.propTypes={className:_.string,onEnded:_.func,onError:_.func,onPropValue:_.func,onPropChanged:_.func,onSubtitlesTrackLoaded:_.func,onExtraSubtitlesTrackLoaded:_.func,onImplementationChanged:_.func},e.exports=d},5711:(e,t,o)=>{var a=o(5245);e.exports=a},4027:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(4184),r=o(123),s=o(674),E=function(e){var t=e.className,o=e.metaItem,n=e.seriesInfo,E=a.useCallback((function(e){e.nativeEvent.videosMenuClosePrevented=!0}),[]),_=a.useMemo((function(){return n&&"number"==typeof n.season&&Array.isArray(o.videos)?o.videos.filter((function(e){return e.season===n.season})):o.videos}),[o,n]);return a.createElement("div",{className:i(t,s["videos-menu-container"]),onMouseDown:E},_.map((function(e,t){return a.createElement(r,{key:t,id:e.id,title:e.title,thumbnail:e.thumbnail,episode:e.episode,released:e.released,upcoming:e.upcoming,watched:e.watched,progress:e.progress,deepLinks:e.deepLinks,scheduled:e.scheduled})})))};E.propTypes={className:n.string,metaItem:n.object,seriesInfo:n.shape({season:n.number,episode:n.number})},e.exports=E},6429:(e,t,o)=>{var a=o(4027);e.exports=a},7793:(e,t,o)=>{var a=o(2230);e.exports=a},5852:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){i(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var r=o(7294),s=o(3662).useServices,E=o(6590),_=E.useModelState,T=E.useCoreSuspender,l=function(e){return n(n({},e),{},{metaItem:null!==e.metaItem&&"Ready"===e.metaItem.type?n(n({},e.metaItem),{},{content:n(n({},e.metaItem.content),{},{released:new Date("string"==typeof e.metaItem.content.released?e.metaItem.content.released:NaN),videos:e.metaItem.content.videos.map((function(e){return n(n({},e),{},{released:new Date("string"==typeof e.released?e.released:NaN)})}))})}):e.metaItem})};e.exports=function(e,t){var o=s().core,a=(0,T().decodeStream)(e.stream),n=r.useMemo((function(){return null!==a?{action:"Load",args:{model:"Player",args:{stream:a,videoParams:t,streamRequest:"string"==typeof e.streamTransportUrl&&"string"==typeof e.type&&"string"==typeof e.videoId?{base:e.streamTransportUrl,path:{resource:"stream",type:e.type,id:e.videoId,extra:[]}}:null,metaRequest:"string"==typeof e.metaTransportUrl&&"string"==typeof e.type&&"string"==typeof e.id?{base:e.metaTransportUrl,path:{resource:"meta",type:e.type,id:e.id,extra:[]}}:null,subtitlesPath:"string"==typeof e.type&&"string"==typeof e.videoId?{resource:"subtitles",type:e.type,id:e.videoId,extra:[]}:null}}}:{action:"Unload"}}),[e,t]),i=r.useCallback((function(e,t,a){o.transport.dispatch({action:"Player",args:{action:"TimeChanged",args:{time:e,duration:t,device:a}}},"player")}),[]),E=r.useCallback((function(){o.transport.dispatch({action:"Player",args:{action:"Ended"}},"player")}),[]),S=r.useCallback((function(e){o.transport.dispatch({action:"Player",args:{action:"PausedChanged",args:{paused:e}}},"player")}),[]);return[_({model:"player",action:n,map:l}),i,S,E]}},4109:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){i(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var r=o(7294),s=o(3662).useServices,E=o(6590).useProfile;e.exports=function(){var e=s().core,t=E(),o=r.useCallback((function(o){e.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},t.settings),o)}})}),[t]);return[t.settings,o]}},4853:(e,t,o)=>{function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i=o(7294),r=o(5697),s=o(4184),E=o(1296),_=o(1468).useTranslation,T=o(2601),l=o(6590),S=l.Image,u=l.MainNavBars,d=l.MetaRow,c=l.MetaItem,A=l.withCoreSuspender,I=l.getVisibleChildrenRange,O=o(4182),N=o(5532),R=function(e){var t=e.queryParams,n=_().t,r=a(O(t),2),l=r[0],A=r[1],R=i.useMemo((function(){return null!==l.selected?l.selected.extra.reduceRight((function(e,t){var o=a(t,2),n=o[0],i=o[1];return"search"===n?i:e}),null):null}),[l.selected]),m=i.useRef(),p=i.useCallback((function(){if(0!==l.catalogs.length){var e=I(m.current,100);null!==e&&A(e)}}),[l.catalogs]),h=i.useCallback(E(p,250),[p]);return i.useLayoutEffect((function(){p()}),[l.catalogs,p]),i.createElement(u,{className:N["search-container"],route:"search",query:R},i.createElement("div",{ref:m,className:N["search-content"],onScroll:h},null===R?i.createElement("div",{className:s(N["search-hints-container"],"animation-fade-in")},i.createElement("div",{className:N["search-hint-container"]},i.createElement(T,{className:N.icon,icon:"ic_movies"}),i.createElement("div",{className:N.label},n("SEARCH_EXPLANATION_CONTENT"))),i.createElement("div",{className:N["search-hint-container"]},i.createElement(T,{className:N.icon,icon:"ic_actor"}),i.createElement("div",{className:N.label},n("SEARCH_EXPLANATION_PEOPLE")))):0===l.catalogs.length?i.createElement("div",{className:N["message-container"]},i.createElement(S,{className:N.image,src:o(7740),alt:" "}),i.createElement("div",{className:N["message-label"]},n("STREMIO_TV_SEARCH_NO_ADDONS"))):l.catalogs.map((function(e,t){var o;switch(null===(o=e.content)||void 0===o?void 0:o.type){case"Ready":return i.createElement(d,{key:t,className:s(N["search-row"],N["search-row-".concat(e.content.content[0].posterShape)],"animation-fade-in"),title:e.title,items:e.content.content,itemComponent:c,deepLinks:e.deepLinks});case"Err":return i.createElement(d,{key:t,className:s(N["search-row"],"animation-fade-in"),title:e.title,message:e.content.content,deepLinks:e.deepLinks});default:return i.createElement(d.Placeholder,{key:t,className:s(N["search-row"],N["search-row-poster"],"animation-fade-in"),title:e.title,deepLinks:e.deepLinks})}}))))};R.propTypes={queryParams:r.instanceOf(URLSearchParams)};var m=function(e){var t=e.queryParams;return i.createElement(u,{className:N["search-container"],route:"search",query:t.get("search")})};m.propTypes=R.propTypes,e.exports=A(R,m)},6375:(e,t,o)=>{var a=o(4853);e.exports=a},4182:(e,t,o)=>{var a=o(7294),n=o(6590).useModelState,i=o(3662).useServices;e.exports=function(e){var t=i().core,o=a.useMemo((function(){return e.has("search")&&e.get("search").length>0?{action:"Load",args:{model:"CatalogsWithExtra",args:{extra:[["search",e.get("search")]]}}}:{action:"Unload"}}),[e]),r=a.useCallback((function(e){t.transport.dispatch({action:"CatalogsWithExtra",args:{action:"LoadRange",args:e}},"search")}),[]);return[n({model:"search",action:o}),r]}},5674:(e,t,o)=>{function a(){return a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},a.apply(this,arguments)}function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return r(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var s=o(7294),E=o(4184),_=o(3096),T=o(1468).useTranslation,l=o(2601),S=o(1665).useRouteFocused,u=o(3662).useServices,d=o(6590),c=d.Button,A=d.Checkbox,I=d.MainNavBars,O=d.Multiselect,N=d.ColorInput,R=d.TextInput,m=d.ModalDialog,p=d.useProfile,h=d.useStreamingServer,L=d.useBinaryState,f=d.withCoreSuspender,C=d.useToast,D=o(1960),g=o(6842),v=o(4137),P=o(9819),y="general",B="player",b="streaming",M="shortcuts";e.exports=f((function(){var e=T().t,t=u().core,r=S().routeFocused,d=p(),f=i(v(),2),U=f[0],W=f[1],G=h(),F=C(),k=D(d),w=k.interfaceLanguageSelect,H=k.subtitlesLanguageSelect,V=k.subtitlesSizeSelect,Y=k.subtitlesTextColorInput,z=k.subtitlesBackgroundColorInput,x=k.subtitlesOutlineColorInput,K=k.audioLanguageSelect,j=k.seekTimeDurationSelect,Q=k.playInExternalPlayerSelect,X=k.nextVideoPopupDurationSelect,$=k.bingeWatchingCheckbox,q=k.playInBackgroundCheckbox,J=k.hardwareDecodingCheckbox,Z=k.streamingServerUrlInput,ee=g(G),te=ee.cacheSizeSelect,oe=ee.torrentProfileSelect,ae=i(L(!1),3),ne=ae[0],ie=ae[1],re=ae[2],se=s.useRef(null),Ee=s.useCallback((function(){Z.onChange(se.current.value),re()}),[Z]),_e=i(s.useState(!1),2),Te=_e[0],le=_e[1],Se=s.useMemo((function(){return null!==d.auth&&null!==d.auth.user&&null!==d.auth.user.trakt&&Date.now()/1e3<d.auth.user.trakt.created_at+d.auth.user.trakt.expires_in}),[d.auth]),ue=s.useMemo((function(){return[{className:P["cancel-button"],label:"Cancel",props:{onClick:re}},{label:"Submit",props:{onClick:Ee}}]}),[Ee]),de=s.useCallback((function(){t.transport.dispatch({action:"Ctx",args:{action:"Logout"}})}),[]),ce=s.useCallback((function(){Se||null===d.auth||null===d.auth.user||"string"!=typeof d.auth.user._id?t.transport.dispatch({action:"Ctx",args:{action:"LogoutTrakt"}}):(window.open("https://www.strem.io/trakt/auth/".concat(d.auth.user._id)),le(!0))}),[Se,d.auth]),Ae=s.useCallback((function(){var e="webcal://www.strem.io/calendar/".concat(d.auth.user._id,".ics");window.open(e),F.show({type:"success",title:"Calendar has been added to your default caldendar app",timeout:25e3})}),[]),Ie=s.useCallback((function(){W()}),[]),Oe=s.useCallback((function(){t.transport.dispatch({action:"StreamingServer",args:{action:"Reload"}})}),[]),Ne=s.useRef(null),Re=s.useRef(null),me=s.useRef(null),pe=s.useRef(null),he=s.useRef(null),Le=s.useMemo((function(){return[{ref:Re,id:y},{ref:me,id:B},{ref:pe,id:b},{ref:he,id:M}]}),[]),fe=i(s.useState(y),2),Ce=fe[0],De=fe[1],ge=s.useCallback((function(){if(Ne.current.scrollTop+Ne.current.clientHeight>=Ne.current.scrollHeight-50)De(Le[Le.length-1].id);else for(var e=Le.length-1;e>=0;e--)if(Le[e].ref.current.offsetTop-Ne.current.offsetTop<=Ne.current.scrollTop){De(Le[e].id);break}}),[]),ve=s.useCallback((function(e){var t=Le.find((function(t){return t.id===e.currentTarget.dataset.section}));Ne.current.scrollTo({top:t.ref.current.offsetTop-Ne.current.offsetTop,behavior:"smooth"})}),[]),Pe=s.useCallback(_((function(){ge()}),50),[]);return s.useEffect((function(){Se&&Te&&(t.transport.dispatch({action:"Ctx",args:{action:"InstallTraktAddon"}}),le(!1))}),[Se,Te]),s.useEffect((function(){null!==U.exportUrl&&"string"==typeof U.exportUrl&&window.open(U.exportUrl)}),[U.exportUrl]),s.useLayoutEffect((function(){r&&ge(),re()}),[r]),s.createElement(I,{className:P["settings-container"],route:"settings"},s.createElement("div",{className:E(P["settings-content"],"animation-fade-in")},s.createElement("div",{className:P["side-menu-container"]},s.createElement(c,{className:E(P["side-menu-button"],n({},P.selected,Ce===y)),title:e("SETTINGS_NAV_GENERAL"),"data-section":y,onClick:ve},e("SETTINGS_NAV_GENERAL")),s.createElement(c,{className:E(P["side-menu-button"],n({},P.selected,Ce===B)),title:e("SETTINGS_NAV_PLAYER"),"data-section":B,onClick:ve},e("SETTINGS_NAV_PLAYER")),s.createElement(c,{className:E(P["side-menu-button"],n({},P.selected,Ce===b)),title:e("SETTINGS_NAV_STREAMING"),"data-section":b,onClick:ve},e("SETTINGS_NAV_STREAMING")),s.createElement(c,{className:E(P["side-menu-button"],n({},P.selected,Ce===M)),title:e("SETTINGS_NAV_SHORTCUTS"),"data-section":M,onClick:ve},e("SETTINGS_NAV_SHORTCUTS")),s.createElement("div",{className:P.spacing}),s.createElement("div",{className:P["version-info-label"],title:"5.0.0"},"App Version: ","5.0.0"),null!==G.settings&&"Ready"===G.settings.type?s.createElement("div",{className:P["version-info-label"],title:G.settings.content.serverVersion},"Server Version: ",G.settings.content.serverVersion):null),s.createElement("div",{ref:Ne,className:P["sections-container"],onScroll:Pe},s.createElement("div",{ref:Re,className:P["section-container"]},s.createElement("div",{className:P["section-title"]},e("SETTINGS_NAV_GENERAL")),s.createElement("div",{className:E(P["option-container"],P["user-info-option-container"])},s.createElement("div",{className:P["avatar-container"],style:{backgroundImage:null===d.auth?"url('".concat(o(3028),"')"):d.auth.user.avatar?"url('".concat(d.auth.user.avatar,"')"):"url('".concat(o(1251),"')")}}),s.createElement("div",{className:P["email-logout-container"]},s.createElement("div",{className:P["email-label-container"],title:null===d.auth?"Anonymous user":d.auth.user.email},s.createElement("div",{className:P["email-label"]},null===d.auth?"Anonymous user":d.auth.user.email)),null!==d.auth?s.createElement(c,{className:P["logout-button-container"],title:e("LOG_OUT"),onClick:de},s.createElement("div",{className:P["logout-label"]},e("LOG_OUT"))):null),s.createElement(c,{className:P["user-panel-container"],title:"User panel",target:"_blank",href:"https://www.stremio.com/acc-settings"},s.createElement("div",{className:P["user-panel-label"]},e("USER_PANEL")))),null===d.auth?s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["button-container"]),title:"".concat(e("LOG_IN")," / ").concat(e("SIGN_UP")),href:"#/intro"},s.createElement("div",{className:P.label},e("LOG_IN")," / ",e("SIGN_UP")))):null,s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_INTERFACE_LANGUAGE"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"]),tabIndex:-1},w))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},"Trakt Scrobbling")),s.createElement(c,{className:E(P["option-input-container"],P["button-container"]),title:"Authenticate",disabled:null===d.auth,tabIndex:-1,onClick:ce},s.createElement(l,{className:P.icon,icon:"ic_trakt"}),s.createElement("div",{className:P.label},null!==d.auth&&null!==d.auth.user&&null!==d.auth.user.trakt?e("LOG_OUT"):e("SETTINGS_TRAKT_AUTHENTICATE")))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("Calendar"))),s.createElement(c,{className:E(P["option-input-container"],P["button-container"]),title:"Subscribe",disabled:!(d.auth&&d.auth.user&&d.auth.user._id),tabIndex:-1,onClick:Ae},s.createElement(l,{className:P.icon,icon:"ic_calendar"}),s.createElement("div",{className:P.label},e("SETTINGS_CALENDAR_SUBSCRIBE")))),s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["link-container"]),title:e("SETTINGS_DATA_EXPORT"),tabIndex:-1,onClick:Ie},s.createElement("div",{className:P.label},e("SETTINGS_DATA_EXPORT")))),s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["link-container"]),title:e("SETTINGS_SUPPORT"),target:"_blank",href:"https://stremio.zendesk.com/hc/en-us"},s.createElement("div",{className:P.label},e("SETTINGS_SUPPORT")))),s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["link-container"]),title:"Source code",target:"_blank",href:"https://github.com/stremio/stremio-web/tree/".concat("f4f59074954b11898de7b384b6320863c5aa1fba")},s.createElement("div",{className:P.label},"Source code"))),s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["link-container"]),title:e("TERMS_OF_SERVICE"),target:"_blank",href:"https://www.stremio.com/tos"},s.createElement("div",{className:P.label},e("TERMS_OF_SERVICE")))),s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["link-container"]),title:e("PRIVACY_POLICY"),target:"_blank",href:"https://www.stremio.com/privacy"},s.createElement("div",{className:P.label},e("PRIVACY_POLICY"))))),s.createElement("div",{ref:me,className:P["section-container"]},s.createElement("div",{className:P["section-title"]},e("SETTINGS_NAV_PLAYER")),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SUBTITLES_LANGUAGE"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},H))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SUBTITLES_SIZE"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},V))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SUBTITLES_COLOR"))),s.createElement(N,a({className:E(P["option-input-container"],P["color-input-container"])},Y))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SUBTITLES_COLOR_BACKGROUND"))),s.createElement(N,a({className:E(P["option-input-container"],P["color-input-container"])},z))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SUBTITLES_COLOR_OUTLINE"))),s.createElement(N,a({className:E(P["option-input-container"],P["color-input-container"])},x))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_DEFAULT_AUDIO_TRACK"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},K))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_REWIND_FAST_FORWARD_DURATION"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},j))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("AUTO_PLAY"))),s.createElement(A,a({className:E(P["option-input-container"],P["checkbox-container"])},$))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_NEXT_VIDEO_POPUP_DURATION"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"]),disabled:!d.settings.bingeWatching},X))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_PLAY_IN_BACKGROUND"))),s.createElement(A,a({className:E(P["option-input-container"],P["checkbox-container"]),disabled:!0,tabIndex:-1},q))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_PLAY_IN_EXTERNAL_PLAYER"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},Q))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_HWDEC"))),s.createElement(A,a({className:E(P["option-input-container"],P["checkbox-container"]),disabled:!0,tabIndex:-1},J)))),s.createElement("div",{ref:pe,className:P["section-container"]},s.createElement("div",{className:P["section-title"]},e("SETTINGS_NAV_STREAMING")),s.createElement("div",{className:P["option-container"]},s.createElement(c,{className:E(P["option-input-container"],P["button-container"]),title:"Reload",onClick:Oe},s.createElement("div",{className:P.label},e("RELOAD")))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("STATUS"))),s.createElement("div",{className:E(P["option-input-container"],P["info-container"])},s.createElement("div",{className:P.label},null===G.settings?"NotLoaded":"Ready"===G.settings.type?e("SETTINGS_SERVER_STATUS_ONLINE"):"Error"===G.settings.type?"".concat(e("SETTINGS_SERVER_STATUS_ERROR"),": (").concat(G.settings.content,")"):G.settings.type))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},"Url")),s.createElement("div",{className:E(P["option-input-container"],P["configure-input-container"])},s.createElement("div",{className:P.label,title:Z.value},Z.value),s.createElement(c,{className:P["configure-button-container"],title:"Configure server url",onClick:ie},s.createElement(l,{className:P.icon,icon:"ic_settings"})))),null!==te?s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SERVER_CACHE_SIZE"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},te))):null,null!==oe?s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SERVER_TORRENT_PROFILE"))),s.createElement(O,a({className:E(P["option-input-container"],P["multiselect-container"])},oe))):null),s.createElement("div",{ref:he,className:P["section-container"]},s.createElement("div",{className:P["section-title"]},e("SETTINGS_NAV_SHORTCUTS")),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_PLAY_PAUSE"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,e("SETTINGS_SHORTCUT_SPACE")))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_SEEK_FORWARD"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"→"),s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_OR")),s.createElement("kbd",null,"⇧ ",e("SETTINGS_SHORTCUT_SHIFT")),s.createElement("div",{className:P.label},"+"),s.createElement("kbd",null,"→"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_SEEK_BACKWARD"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"←"),s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_OR")),s.createElement("kbd",null,"⇧ ",e("SETTINGS_SHORTCUT_SHIFT")),s.createElement("div",{className:P.label},"+"),s.createElement("kbd",null,"←"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_VOLUME_UP"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"↑"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_VOLUME_DOWN"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"↓"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_MENU_SUBTITLES"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"S"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_MENU_INFO"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"I"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_FULLSCREEN"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"F"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_NAVIGATE_MENUS"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"1"),s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_TO")),s.createElement("kbd",null,"5"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_GO_TO_SEARCH"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,"0"))),s.createElement("div",{className:P["option-container"]},s.createElement("div",{className:P["option-name-container"]},s.createElement("div",{className:P.label},e("SETTINGS_SHORTCUT_EXIT_BACK"))),s.createElement("div",{className:E(P["option-input-container"],P["shortcut-container"])},s.createElement("kbd",null,e("SETTINGS_SHORTCUT_ESC"))))))),ne?s.createElement(m,{className:P["configure-server-url-modal-container"],title:e("SETTINGS_SERVER_CONFIGURE_TITLE"),buttons:ue,onCloseRequest:re},s.createElement(R,{ref:se,autoFocus:!0,className:P["server-url-input"],type:"text",defaultValue:Z.value,placeholder:e("SETTINGS_SERVER_CONFIGURE_INPUT"),onSubmit:Ee})):null)}),(function(){return s.createElement(I,{className:P["settings-container"],route:"settings"})}))},2465:(e,t,o)=>{var a=o(5674);e.exports=a},4137:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){i(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var r=o(7294),s=o(3662).useServices,E=o(6590).useModelState,_=function(e){return n(n({},e),{},{exportUrl:null!==e&&null!==e.exportUrl&&"Ready"===e.exportUrl.type?e.exportUrl.content:null})};e.exports=function(){var e=s().core,t=r.useCallback((function(){e.transport.dispatch({action:"Load",args:{model:"DataExport"}},"data_export")}),[]);return[E({model:"data_export",map:_}),t]}},1960:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){i(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var r=o(7294),s=o(1468).useTranslation,E=o(3662).useServices,_=o(6590),T=_.CONSTANTS,l=_.interfaceLanguages,S=_.languageNames,u=_.externalPlayerOptions;e.exports=function(e){var t=s().t,o=E().core;return{interfaceLanguageSelect:r.useMemo((function(){var t,a;return{options:l.map((function(e){var t=e.name;return{value:e.codes[0],label:t}})),selected:[(null===(t=l.find((function(t){return t.codes[1]===e.settings.interfaceLanguage})))||void 0===t||null===(a=t.codes)||void 0===a?void 0:a[0])||e.settings.interfaceLanguage],onSelect:function(t){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{interfaceLanguage:t.value})}})}}}),[e.settings]),subtitlesLanguageSelect:r.useMemo((function(){return{options:Object.keys(S).map((function(e){return{value:e,label:S[e]}})),selected:[e.settings.subtitlesLanguage],onSelect:function(t){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{subtitlesLanguage:t.value})}})}}}),[e.settings]),subtitlesSizeSelect:r.useMemo((function(){return{options:T.SUBTITLES_SIZES.map((function(e){return{value:"".concat(e),label:"".concat(e,"%")}})),selected:["".concat(e.settings.subtitlesSize)],renderLabelText:function(){return"".concat(e.settings.subtitlesSize,"%")},onSelect:function(t){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{subtitlesSize:parseInt(t.value,10)})}})}}}),[e.settings]),subtitlesTextColorInput:r.useMemo((function(){return{value:e.settings.subtitlesTextColor,onChange:function(t){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{subtitlesTextColor:t.value})}})}}}),[e.settings]),subtitlesBackgroundColorInput:r.useMemo((function(){return{value:e.settings.subtitlesBackgroundColor,onChange:function(t){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{subtitlesBackgroundColor:t.value})}})}}}),[e.settings]),subtitlesOutlineColorInput:r.useMemo((function(){return{value:e.settings.subtitlesOutlineColor,onChange:function(t){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{subtitlesOutlineColor:t.value})}})}}}),[e.settings]),audioLanguageSelect:r.useMemo((function(){return{options:Object.keys(S).map((function(e){return{value:e,label:S[e]}})),selected:[e.settings.audioLanguage],onSelect:function(t){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{audioLanguage:t.value})}})}}}),[e.settings]),seekTimeDurationSelect:r.useMemo((function(){return{options:T.SEEK_TIME_DURATIONS.map((function(e){return{value:"".concat(e),label:"".concat(e/1e3," ").concat(t("SECONDS"))}})),selected:["".concat(e.settings.seekTimeDuration)],renderLabelText:function(){return"".concat(e.settings.seekTimeDuration/1e3," ").concat(t("SECONDS"))},onSelect:function(t){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{seekTimeDuration:parseInt(t.value,10)})}})}}}),[e.settings]),playInExternalPlayerSelect:r.useMemo((function(){return{options:u.map((function(e){return e.label=t(e.label),e})),selected:["".concat(e.settings.playerType||"internal")],onSelect:function(t){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{playerType:t.value})}})}}}),[e.settings]),nextVideoPopupDurationSelect:r.useMemo((function(){return{options:T.NEXT_VIDEO_POPUP_DURATIONS.map((function(e){return{value:"".concat(e),label:0===e?"Disabled":"".concat(e/1e3," ").concat(t("SECONDS"))}})),selected:["".concat(e.settings.nextVideoNotificationDuration)],renderLabelText:function(){return 0===e.settings.nextVideoNotificationDuration?"Disabled":"".concat(e.settings.nextVideoNotificationDuration/1e3," ").concat(t("SECONDS"))},onSelect:function(t){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{nextVideoNotificationDuration:parseInt(t.value,10)})}})}}}),[e.settings]),bingeWatchingCheckbox:r.useMemo((function(){return{checked:e.settings.bingeWatching,onClick:function(){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{bingeWatching:!e.settings.bingeWatching})}})}}}),[e.settings]),playInBackgroundCheckbox:r.useMemo((function(){return{checked:e.settings.playInBackground,onClick:function(){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{playInBackground:!e.settings.playInBackground})}})}}}),[e.settings]),hardwareDecodingCheckbox:r.useMemo((function(){return{checked:e.settings.hardwareDecoding,onClick:function(){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{hardwareDecoding:!e.settings.hardwareDecoding})}})}}}),[e.settings]),streamingServerUrlInput:r.useMemo((function(){return{value:e.settings.streamingServerUrl,onChange:function(t){o.transport.dispatch({action:"Ctx",args:{action:"UpdateSettings",args:n(n({},e.settings),{},{streamingServerUrl:t})}})}}}),[e.settings])}}},6842:(e,t,o)=>{function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function n(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?a(Object(o),!0).forEach((function(t){i(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):a(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var r=o(7294),s=o(2307),E=o(3662).useServices,_=[0,2147483648,5368709120,10737418240,null],T=function(e){return null===e?"Infinite":0===e?"No caching":"".concat(Math.ceil(100*(e/1024/1024/1024+Number.EPSILON))/100,"GiB")},l={default:{btDownloadSpeedHardLimit:3670016,btDownloadSpeedSoftLimit:2621440,btHandshakeTimeout:2e4,btMaxConnections:55,btMinPeersForStable:5,btRequestTimeout:4e3},soft:{btDownloadSpeedHardLimit:1677721.6,btDownloadSpeedSoftLimit:1677721.6,btHandshakeTimeout:2e4,btMaxConnections:35,btMinPeersForStable:5,btRequestTimeout:4e3},fast:{btDownloadSpeedHardLimit:39321600,btDownloadSpeedSoftLimit:4194304,btHandshakeTimeout:2e4,btMaxConnections:200,btMinPeersForStable:10,btRequestTimeout:4e3},"ultra fast":{btDownloadSpeedHardLimit:78643200,btDownloadSpeedSoftLimit:8388608,btHandshakeTimeout:25e3,btMaxConnections:400,btMinPeersForStable:10,btRequestTimeout:6e3}};e.exports=function(e){var t=E().core;return{cacheSizeSelect:r.useMemo((function(){return null===e.settings||"Ready"!==e.settings.type?null:{options:_.map((function(e){return{label:T(e),value:JSON.stringify(e)}})),selected:[JSON.stringify(e.settings.content.cacheSize)],renderLabelText:function(){return T(e.settings.content.cacheSize)},onSelect:function(o){t.transport.dispatch({action:"StreamingServer",args:{action:"UpdateSettings",args:n(n({},e.settings.content),{},{cacheSize:JSON.parse(o.value)})}})}}}),[e.settings]),torrentProfileSelect:r.useMemo((function(){if(null===e.settings||"Ready"!==e.settings.type)return null;var o={btDownloadSpeedHardLimit:e.settings.content.btDownloadSpeedHardLimit,btDownloadSpeedSoftLimit:e.settings.content.btDownloadSpeedSoftLimit,btHandshakeTimeout:e.settings.content.btHandshakeTimeout,btMaxConnections:e.settings.content.btMaxConnections,btMinPeersForStable:e.settings.content.btMinPeersForStable,btRequestTimeout:e.settings.content.btRequestTimeout},a=Object.values(l).every((function(e){return!s(e,o)}));return{options:Object.keys(l).map((function(e){return{label:e,value:JSON.stringify(l[e])}})).concat(a?[{label:"custom",value:JSON.stringify(o)}]:[]),selected:[JSON.stringify(o)],onSelect:function(o){t.transport.dispatch({action:"StreamingServer",args:{action:"UpdateSettings",args:n(n({},e.settings.content),JSON.parse(o.value))}})}}}),[e.settings])}}},1529:(e,t,o)=>{var a=o(7165),n=o(8823),i=o(1901),r=o(7965),s=o(9005),E=o(353),_=o(6375),T=o(2465),l=o(7793),S=o(6732);e.exports={Addons:a,Board:n,Discover:i,Library:r,MetaDetails:s,NotFound:E,Search:_,Settings:T,Player:l,Intro:S}},1099:(e,t,o)=>{var a=o(6729),n=o(5482);e.exports=function(){var e=!1,t=null,o=!1,i=null,r=new a;function s(){e=!0,t=null,o=!1,_()}function E(a){console.error(a),e=!1,t=new Error("Google Cast API not available",{cause:a}),o=!1,_(),i=null}function _(){r.emit("stateChanged")}Object.defineProperties(this,{active:{configurable:!1,enumerable:!0,get:function(){return e}},error:{configurable:!1,enumerable:!0,get:function(){return t}},starting:{configurable:!1,enumerable:!0,get:function(){return o}},transport:{configurable:!1,enumerable:!0,get:function(){return i}}}),this.start=function(){e||t instanceof Error||o||(o=!0,(i=new n).on("init",s),i.on("init-error",E),_())},this.stop=function(){e=!1,t=null,o=!1,_(),null!==i&&(i.removeAllListeners(),i=null)},this.on=function(e,t){r.on(e,t)},this.off=function(e,t){r.off(e,t)}}},5482:(e,t,o)=>{var a=o(6729),n=o(542),i="urn:x-cast:com.stremio",r=2e4,s=null,E=new a;window.__onGCastApiAvailable=function(e){delete window.__onGCastApiAvailable,s=!!e,E.emit("availabilityChanged")};e.exports=function(){var e=new a,t={};function o(o,a){try{var n=JSON.parse(a),i=n.id,r=n.chunk,s=n.index,E=n.length;if(t[i]=t[i]||[],t[i][s]=r,Object.keys(t[i]).length===E){var _=JSON.parse(t[i].join(""));delete t[i],e.emit("message",_)}}catch(t){e.emit("message-error",t)}}function _(t){e.emit(cast.framework.CastSession.APPLICATION_STATUS_CHANGED,t)}function T(t){e.emit(cast.framework.CastSession.APPLICATION_METADATA_CHANGED,t)}function l(t){e.emit(cast.framework.CastSession.ACTIVE_INPUT_STATE_CHANGED,t)}function S(t){e.emit(cast.framework.CastSession.VOLUME_CHANGED,t)}function u(t){e.emit(cast.framework.CastSession.MEDIA_SESSION,t)}function d(t){e.emit(cast.framework.CastContextEventType.CAST_STATE_CHANGED,t)}function c(t){switch(e.emit(cast.framework.CastContextEventType.SESSION_STATE_CHANGED,t),t.sessionState){case cast.framework.SessionState.SESSION_STARTED:t.session.addMessageListener(i,o),t.session.addEventListener(cast.framework.CastSession.APPLICATION_STATUS_CHANGED,_),t.session.addEventListener(cast.framework.CastSession.APPLICATION_METADATA_CHANGED,T),t.session.addEventListener(cast.framework.CastSession.ACTIVE_INPUT_STATE_CHANGED,l),t.session.addEventListener(cast.framework.CastSession.VOLUME_CHANGED,S),t.session.addEventListener(cast.framework.CastSession.MEDIA_SESSION,u);break;case cast.framework.SessionState.SESSION_ENDED:t.session.removeMessageListener(i,o),t.session.removeEventListener(cast.framework.CastSession.APPLICATION_STATUS_CHANGED,_),t.session.removeEventListener(cast.framework.CastSession.APPLICATION_METADATA_CHANGED,T),t.session.removeEventListener(cast.framework.CastSession.ACTIVE_INPUT_STATE_CHANGED,l),t.session.removeEventListener(cast.framework.CastSession.VOLUME_CHANGED,S),t.session.removeEventListener(cast.framework.CastSession.MEDIA_SESSION,u)}}new Promise((function(e,t){function o(){E.off("availabilityChanged",o),s?e():t(new Error("window.cast api not available"))}null!==s?o():E.on("availabilityChanged",o)})).then((function(){cast.framework.CastContext.getInstance().addEventListener(cast.framework.CastContextEventType.CAST_STATE_CHANGED,d),cast.framework.CastContext.getInstance().addEventListener(cast.framework.CastContextEventType.SESSION_STATE_CHANGED,c)})).then((function(){try{e.emit("init")}catch(e){console.error("ChromecastTransport",e)}})).catch((function(t){e.emit("init-error",t)})),this.on=function(t,o){e.on(t,o)},this.off=function(t,o){e.off(t,o)},this.removeAllListeners=function(){e.removeAllListeners()},this.getCastState=function(){return cast.framework.CastContext.getInstance().getCastState()},this.getSessionState=function(){return cast.framework.CastContext.getInstance().getSessionState()},this.getCastDevice=function(){var e=cast.framework.CastContext.getInstance().getCurrentSession();return null!==e?e.getCastDevice():null},this.setOptions=function(e){cast.framework.CastContext.getInstance().setOptions(e)},this.requestSession=function(){return cast.framework.CastContext.getInstance().requestSession()},this.endCurrentSession=function(e){cast.framework.CastContext.getInstance().endCurrentSession(e)},this.sendMessage=function(e){var t=cast.framework.CastContext.getInstance().getCurrentSession();if(null!==t){for(var o=JSON.stringify(e),a=Math.ceil(o.length/r),s=[],E=0;E<a;E++){var _=E*r,T=o.slice(_,_+r);s.push(T)}var l=n();return Promise.all(s.map((function(e,o){return t.sendMessage(i,{id:l,chunk:e,index:o,length:s.length})})))}return Promise.reject(new Error("Session not started"))}}},6623:(e,t,o)=>{var a=o(1099);e.exports=a},6194:(e,t,o)=>{var a=o(6729),n=o(6806);e.exports=function(e){var t=!1,o=null,i=!1,r=null,s=new a;function E(){t=!0,o=null,i=!1,T()}function _(e){console.error(e),t=!1,o=new Error("Stremio Core Transport initialization failed",{cause:e}),i=!1,T(),r=null}function T(){s.emit("stateChanged")}Object.defineProperties(this,{active:{configurable:!1,enumerable:!0,get:function(){return t}},error:{configurable:!1,enumerable:!0,get:function(){return o}},starting:{configurable:!1,enumerable:!0,get:function(){return i}},transport:{configurable:!1,enumerable:!0,get:function(){return r}}}),this.start=function(){t||o instanceof Error||i||(i=!0,(r=new n(e)).on("init",E),r.on("error",_),T())},this.stop=function(){t=!1,o=null,i=!1,T(),null!==r&&(r.removeAllListeners(),r=null)},this.on=function(e,t){s.on(e,t)},this.off=function(e,t){s.off(e,t)}}},6806:(e,t,o)=>{function a(e,t,o,a,n,i,r){try{var s=e[i](r),E=s.value}catch(e){return void o(e)}s.done?t(E):Promise.resolve(E).then(a,n)}function n(e){return function(){var t=this,o=arguments;return new Promise((function(n,i){var r=e.apply(t,o);function s(e){a(r,n,i,s,E,"next",e)}function E(e){a(r,n,i,s,E,"throw",e)}s(void 0)}))}}var i=o(6729),r=o(6553);e.exports=function(e){var t=new i,o=new Worker("".concat("f4f59074954b11898de7b384b6320863c5aa1fba","/scripts/worker.js")),a=new r(window,o);window.onCoreEvent=function(e){var o=e.name,a=e.args;try{t.emit(o,a)}catch(e){console.error("CoreTransport",e)}},a.call(["init"],[e]).then((function(){try{t.emit("init")}catch(e){console.error("CoreTransport",e)}})).catch((function(e){t.emit("error",e)})),this.on=function(e,o){t.on(e,o)},this.off=function(e,o){t.off(e,o)},this.removeAllListeners=function(){t.removeAllListeners()},this.getState=(function(){var e=n(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.call(["getState"],[t]));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}})(),this.getDebugState=n(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.call(["getDebugState"],[]));case 1:case"end":return e.stop()}}),e)}))),this.dispatch=(function(){var e=n(regeneratorRuntime.mark((function e(t,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.call(["dispatch"],[t,o,location.hash]));case 1:case"end":return e.stop()}}),e)})));return function(t,o){return e.apply(this,arguments)}})(),this.analytics=(function(){var e=n(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.call(["analytics"],[t,location.hash]));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}})(),this.decodeStream=(function(){var e=n(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.call(["decodeStream"],[t]));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}})()}},4937:(e,t,o)=>{var a=o(6194);e.exports=a},8634:(e,t,o)=>{function a(e,t,o,a,n,i,r){try{var s=e[i](r),E=s.value}catch(e){return void o(e)}s.done?t(E):Promise.resolve(E).then(a,n)}function n(e){return function(){var t=this,o=arguments;return new Promise((function(n,i){var r=e.apply(t,o);function s(e){a(r,n,i,s,E,"next",e)}function E(e){a(r,n,i,s,E,"throw",e)}s(void 0)}))}}var i=o(6729);e.exports=function(e){var t=e.core,o=!1,a=new i;function r(e){e.preventDefault()}function s(e){return E.apply(this,arguments)}function E(){return(E=n(regeneratorRuntime.mark((function e(o){var n,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o.preventDefault(),!(o.dataTransfer.files instanceof FileList&&o.dataTransfer.files.length>0)){e.next=18;break}n=o.dataTransfer.files[0],e.t0=n.type,e.next="application/x-bittorrent"===e.t0?6:17;break;case 6:return e.prev=6,e.next=9,n.arrayBuffer();case 9:i=e.sent,t.transport.dispatch({action:"StreamingServer",args:{action:"CreateTorrent",args:Array.from(new Uint8Array(i))}}),e.next=16;break;case 13:e.prev=13,e.t1=e.catch(6),a.emit("error",{message:"Failed to process file",file:{name:n.name,type:n.type}});case 16:return e.abrupt("break",18);case 17:a.emit("error",{message:"Unsupported file",file:{name:n.name,type:n.type}});case 18:case"end":return e.stop()}}),e,null,[[6,13]])})))).apply(this,arguments)}function _(){a.emit("stateChanged")}Object.defineProperties(this,{active:{configurable:!1,enumerable:!0,get:function(){return o}}}),this.start=function(){o||(window.addEventListener("dragover",r),window.addEventListener("drop",s),o=!0,_())},this.stop=function(){window.removeEventListener("dragover",r),window.removeEventListener("drop",s),o=!1,_()},this.on=function(e,t){a.on(e,t)},this.off=function(e,t){a.off(e,t)}}},8500:(e,t,o)=>{var a=o(8634);e.exports=a},9093:(e,t,o)=>{var a=o(6729);e.exports=function(){var e=!1,t=new a;function o(e){if(!(e.keyboardShortcutPrevented||"INPUT"===e.target.tagName||e.ctrlKey||e.altKey||e.shiftKey||e.metaKey))switch(e.code){case"Digit0":e.preventDefault(),window.location="#/search";break;case"Digit1":e.preventDefault(),window.location="#/";break;case"Digit2":e.preventDefault(),window.location="#/discover";break;case"Digit3":e.preventDefault(),window.location="#/library";break;case"Digit4":e.preventDefault(),window.location="#/settings";break;case"Digit5":e.preventDefault(),window.location="#/addons";break;case"Backspace":e.preventDefault(),e.ctrlKey?window.history.forward():window.history.back();break;case"KeyF":e.preventDefault(),document.fullscreenElement===document.documentElement?document.exitFullscreen():document.documentElement.requestFullscreen()}}function n(){t.emit("stateChanged")}Object.defineProperties(this,{active:{configurable:!1,enumerable:!0,get:function(){return e}}}),this.start=function(){e||(window.addEventListener("keydown",o),e=!0,n())},this.stop=function(){window.removeEventListener("keydown",o),e=!1,n()}}},7369:(e,t,o)=>{var a=o(9093);e.exports=a},2207:(e,t,o)=>{var a=o(7294).createContext({});a.displayName="ServicesContext",e.exports=a},8261:(e,t,o)=>{var a=o(7294),n=o(5697),i=o(2207),r=function(e){var t=e.services,o=void 0===t?{}:t,n=e.children;return a.createElement(i.Provider,{value:o},n)};r.propTypes={services:n.object,children:n.oneOfType([n.arrayOf(n.node),n.node])},e.exports=r},3487:(e,t,o)=>{var a=o(8261),n=o(1806);e.exports={ServicesProvider:a,useServices:n}},1806:(e,t,o)=>{var a=o(7294),n=o(2207);e.exports=function(){return a.useContext(n)}},3015:(e,t,o)=>{var a=o(6729),n=o(755);e.exports=function(){var e=!1,t=null,o=!1,i=null,r=new a;function s(){e=!0,t=null,o=!1,_()}function E(a){console.error(a),e=!1,t=new Error(a),o=!1,_(),i=null}function _(){r.emit("stateChanged")}Object.defineProperties(this,{active:{configurable:!1,enumerable:!0,get:function(){return e}},error:{configurable:!1,enumerable:!0,get:function(){return t}},starting:{configurable:!1,enumerable:!0,get:function(){return o}},transport:{configurable:!1,enumerable:!0,get:function(){return i}}}),this.start=function(){e||t instanceof Error||o||(e=!1,o=!0,(i=new n).on("init",s),i.on("init-error",E),_())},this.stop=function(){e=!1,t=null,o=!1,_()},this.on=function(e,t){r.on(e,t)},this.off=function(e,t){r.off(e,t)}}},755:(e,t,o)=>{var a=o(6729),n=!1,i=new a,r=1,s=3,E=6,_=7,T="transport";window.initShellComm=function(){delete window.initShellComm,i.emit("availabilityChanged")};e.exports=function(){var e=new a;this.props={};var t=this;(window.qt?new Promise((function(e){function t(){i.off("availabilityChanged",t),n=!0,e()}n?t():i.on("availabilityChanged",t)})):Promise.reject("Qt API not found")).then((function(){var o=window.qt&&window.qt.webChannelTransport;if(!o)throw"no viable transport found (qt.webChannelTransport)";var a=0;function n(e){e.id=a++,o.send(JSON.stringify(e))}o.onmessage=function(o){var a=JSON.parse(o.data);if(0===a.id){var i=a.data[T];i.properties.slice(1).forEach((function(e){t.props[e[1]]=e[3]})),"string"==typeof t.props.shellVersion&&(t.shellVersionArr=(t.props.shellVersion.match(/(\d+)\.(\d+)\.(\d+)/)||[]).slice(1,4).map(Number)),e.emit("received-props",t.props),i.signals.forEach((function(e){n({type:_,object:T,signal:e[1]})}));var s=i.methods.filter((function(e){return"onEvent"===e[0]}))[0];t.send=function(e,t){n({type:E,object:T,method:s[1],args:[e,t||{}]})},t.send("app-ready",{})}a.object===T&&a.type===r&&e.emit(a.args[0],a.args[1]),e.emit("init")},n({type:s})})).catch((function(t){e.emit("init-error",t)})),this.on=function(t,o){e.on(t,o)},this.off=function(t,o){e.off(t,o)},this.removeAllListeners=function(){e.removeAllListeners()}}},1921:(e,t,o)=>{var a=o(3015);e.exports=a},3662:(e,t,o)=>{var a=o(6623),n=o(4937),i=o(8500),r=o(7369),s=o(3487),E=s.ServicesProvider,_=s.useServices,T=o(1921);e.exports={Chromecast:a,Core:n,DragAndDrop:i,KeyboardShortcuts:r,ServicesProvider:E,useServices:_,Shell:T}},9742:(e,t)=>{"use strict";t.byteLength=function(e){var t=E(e),o=t[0],a=t[1];return 3*(o+a)/4-a},t.toByteArray=function(e){var t,o,i=E(e),r=i[0],s=i[1],_=new n((function(e,t,o){return 3*(t+o)/4-o})(0,r,s)),T=0,l=s>0?r-4:r;for(o=0;o<l;o+=4)t=a[e.charCodeAt(o)]<<18|a[e.charCodeAt(o+1)]<<12|a[e.charCodeAt(o+2)]<<6|a[e.charCodeAt(o+3)],_[T++]=t>>16&255,_[T++]=t>>8&255,_[T++]=255&t;2===s&&(t=a[e.charCodeAt(o)]<<2|a[e.charCodeAt(o+1)]>>4,_[T++]=255&t);1===s&&(t=a[e.charCodeAt(o)]<<10|a[e.charCodeAt(o+1)]<<4|a[e.charCodeAt(o+2)]>>2,_[T++]=t>>8&255,_[T++]=255&t);return _},t.fromByteArray=function(e){for(var t,a=e.length,n=a%3,i=[],r=16383,s=0,E=a-n;s<E;s+=r)i.push(_(e,s,s+r>E?E:s+r));1===n?(t=e[a-1],i.push(o[t>>2]+o[t<<4&63]+"==")):2===n&&(t=(e[a-2]<<8)+e[a-1],i.push(o[t>>10]+o[t>>4&63]+o[t<<2&63]+"="));return i.join("")};for(var o=[],a=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=0,s=i.length;r<s;++r)o[r]=i[r],a[i.charCodeAt(r)]=r;function E(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var o=e.indexOf("=");return-1===o&&(o=t),[o,o===t?0:4-o%4]}function _(e,t,a){for(var n,i,r=[],s=t;s<a;s+=3)n=(e[s]<<16&16711680)+(e[s+1]<<8&65280)+(255&e[s+2]),r.push(o[(i=n)>>18&63]+o[i>>12&63]+o[i>>6&63]+o[63&i]);return r.join("")}a["-".charCodeAt(0)]=62,a["_".charCodeAt(0)]=63},7500:e=>{function t(e){return e.reduce(((e,t,o,a)=>{const n=t.split("-").map((e=>parseInt(e)));return e.concat(((e,t=e)=>Array.from({length:t-e+1},((t,o)=>o+e)))(...n))}),[])}e.exports=t,e.exports.parse=t,e.exports.compose=function(e){return e.reduce(((e,t,o,a)=>(0!==o&&t===a[o-1]+1||e.push([]),e[e.length-1].push(t),e)),[]).map((e=>e.length>1?`${e[0]}-${e[e.length-1]}`:`${e[0]}`))}},1206:function(e){e.exports=(function(e){var t={};function o(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(a,n,function(t){return e[t]}.bind(null,n));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=90)})({17:function(e,t,o){"use strict";t.__esModule=!0,t.default=void 0;var a=o(18),n=(function(){function e(){}return e.getFirstMatch=function(e,t){var o=t.match(e);return o&&o.length>0&&o[1]||""},e.getSecondMatch=function(e,t){var o=t.match(e);return o&&o.length>1&&o[2]||""},e.matchAndReturnConst=function(e,t,o){if(e.test(t))return o},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,o,a){void 0===a&&(a=!1);var n=e.getVersionPrecision(t),i=e.getVersionPrecision(o),r=Math.max(n,i),s=0,E=e.map([t,o],(function(t){var o=r-e.getVersionPrecision(t),a=t+new Array(o+1).join(".0");return e.map(a.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(a&&(s=r-Math.min(n,i)),r-=1;r>=s;){if(E[0][r]>E[1][r])return 1;if(E[0][r]===E[1][r]){if(r===s)return 0;r-=1}else if(E[0][r]<E[1][r])return-1}},e.map=function(e,t){var o,a=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(o=0;o<e.length;o+=1)a.push(t(e[o]));return a},e.find=function(e,t){var o,a;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(o=0,a=e.length;o<a;o+=1){var n=e[o];if(t(n,o))return n}},e.assign=function(e){for(var t,o,a=e,n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];if(Object.assign)return Object.assign.apply(Object,[e].concat(i));var s=function(){var e=i[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){a[t]=e[t]}))};for(t=0,o=i.length;t<o;t+=1)s();return e},e.getBrowserAlias=function(e){return a.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return a.BROWSER_MAP[e]||""},e})();t.default=n,e.exports=t.default},18:function(e,t,o){"use strict";t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0,t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"},t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"},t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"},t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"},t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"}},90:function(e,t,o){"use strict";t.__esModule=!0,t.default=void 0;var a,n=(a=o(91))&&a.__esModule?a:{default:a},i=o(18);function r(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}var s=(function(){function e(){}var t,o,a;return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw new Error("UserAgent should be a string");return new n.default(e,t)},e.parse=function(e){return new n.default(e).getResult()},t=e,a=[{key:"BROWSER_MAP",get:function(){return i.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return i.ENGINE_MAP}},{key:"OS_MAP",get:function(){return i.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return i.PLATFORMS_MAP}}],(o=null)&&r(t.prototype,o),a&&r(t,a),e})();t.default=s,e.exports=t.default},91:function(e,t,o){"use strict";t.__esModule=!0,t.default=void 0;var a=E(o(92)),n=E(o(93)),i=E(o(94)),r=E(o(95)),s=E(o(17));function E(e){return e&&e.__esModule?e:{default:e}}var _=(function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=s.default.find(a.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=s.default.find(n.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=s.default.find(i.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=s.default.find(r.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return s.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,o={},a=0,n={},i=0;if(Object.keys(e).forEach((function(t){var r=e[t];"string"==typeof r?(n[t]=r,i+=1):"object"==typeof r&&(o[t]=r,a+=1)})),a>0){var r=Object.keys(o),E=s.default.find(r,(function(e){return t.isOS(e)}));if(E){var _=this.satisfies(o[E]);if(void 0!==_)return _}var T=s.default.find(r,(function(e){return t.isPlatform(e)}));if(T){var l=this.satisfies(o[T]);if(void 0!==l)return l}}if(i>0){var S=Object.keys(n),u=s.default.find(S,(function(e){return t.isBrowser(e,!0)}));if(void 0!==u)return this.compareVersion(n[u])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var o=this.getBrowserName().toLowerCase(),a=e.toLowerCase(),n=s.default.getBrowserTypeByAlias(a);return t&&n&&(a=n.toLowerCase()),a===o},t.compareVersion=function(e){var t=[0],o=e,a=!1,n=this.getBrowserVersion();if("string"==typeof n)return">"===e[0]||"<"===e[0]?(o=e.substr(1),"="===e[1]?(a=!0,o=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?o=e.substr(1):"~"===e[0]&&(a=!0,o=e.substr(1)),t.indexOf(s.default.compareVersions(n,o,a))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e})();t.default=_,e.exports=t.default},92:function(e,t,o){"use strict";t.__esModule=!0,t.default=void 0;var a,n=(a=o(17))&&a.__esModule?a:{default:a},i=/version\/(\d+(\.?_?\d+)+)/i,r=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},o=n.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},o=n.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},o=n.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},o=n.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},o=n.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},o=n.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},o=n.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},o=n.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},o=n.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},o=n.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},o=n.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},o=n.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},o=n.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},o=n.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},o=n.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return o&&(t.version=o),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},o=n.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},o=n.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},o=n.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},o=n.default.getFirstMatch(i,e)||n.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},o=n.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},o=n.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},o=n.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},o=n.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},o=n.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},o=n.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},o=n.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},o=n.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},o=n.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:function(e){var t=!e.test(/like android/i),o=e.test(/android/i);return t&&o},describe:function(e){var t={name:"Android Browser"},o=n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},o=n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},o=n.default.getFirstMatch(i,e);return o&&(t.version=o),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:n.default.getFirstMatch(t,e),version:n.default.getSecondMatch(t,e)}}}];t.default=r,e.exports=t.default},93:function(e,t,o){"use strict";t.__esModule=!0,t.default=void 0;var a,n=(a=o(17))&&a.__esModule?a:{default:a},i=o(18),r=[{test:[/Roku\/DVP/],describe:function(e){var t=n.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:i.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=n.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:i.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=n.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),o=n.default.getWindowsVersionName(t);return{name:i.OS_MAP.Windows,version:t,versionName:o}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:i.OS_MAP.iOS},o=n.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return o&&(t.version=o),t}},{test:[/macintosh/i],describe:function(e){var t=n.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),o=n.default.getMacOSVersionName(t),a={name:i.OS_MAP.MacOS,version:t};return o&&(a.versionName=o),a}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=n.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:i.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),o=e.test(/android/i);return t&&o},describe:function(e){var t=n.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),o=n.default.getAndroidVersionName(t),a={name:i.OS_MAP.Android,version:t};return o&&(a.versionName=o),a}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=n.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),o={name:i.OS_MAP.WebOS};return t&&t.length&&(o.version=t),o}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=n.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||n.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||n.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:i.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=n.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:i.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=n.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:i.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:i.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:i.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=n.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:i.OS_MAP.PlayStation4,version:t}}}];t.default=r,e.exports=t.default},94:function(e,t,o){"use strict";t.__esModule=!0,t.default=void 0;var a,n=(a=o(17))&&a.__esModule?a:{default:a},i=o(18),r=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=n.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",o={type:i.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(o.model=t),o}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:i.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),o=e.test(/like (ipod|iphone)/i);return t&&!o},describe:function(e){var t=n.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:i.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:i.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:i.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:i.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:i.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:i.PLATFORMS_MAP.tv}}}];t.default=r,e.exports=t.default},95:function(e,t,o){"use strict";t.__esModule=!0,t.default=void 0;var a,n=(a=o(17))&&a.__esModule?a:{default:a},i=o(18),r=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:i.ENGINE_MAP.Blink};var t=n.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:i.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:i.ENGINE_MAP.Trident},o=n.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:i.ENGINE_MAP.Presto},o=n.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:function(e){var t=e.test(/gecko/i),o=e.test(/like gecko/i);return t&&!o},describe:function(e){var t={name:i.ENGINE_MAP.Gecko},o=n.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:i.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:i.ENGINE_MAP.WebKit},o=n.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return o&&(t.version=o),t}}];t.default=r,e.exports=t.default}})},8764:(e,t,o)=>{"use strict";const a=o(9742),n=o(645),i="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=E,t.SlowBuffer=function(e){+e!=e&&(e=0);return E.alloc(+e)},t.INSPECT_MAX_BYTES=50;const r=2147483647;function s(e){if(e>r)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,E.prototype),t}function E(e,t,o){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return l(e)}return _(e,t,o)}function _(e,t,o){if("string"==typeof e)return(function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!E.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const o=0|c(e,t);let a=s(o);const n=a.write(e,t);n!==o&&(a=a.slice(0,n));return a})(e,t);if(ArrayBuffer.isView(e))return(function(e){if(X(e,Uint8Array)){const t=new Uint8Array(e);return u(t.buffer,t.byteOffset,t.byteLength)}return S(e)})(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(X(e,ArrayBuffer)||e&&X(e.buffer,ArrayBuffer))return u(e,t,o);if("undefined"!=typeof SharedArrayBuffer&&(X(e,SharedArrayBuffer)||e&&X(e.buffer,SharedArrayBuffer)))return u(e,t,o);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const a=e.valueOf&&e.valueOf();if(null!=a&&a!==e)return E.from(a,t,o);const n=(function(e){if(E.isBuffer(e)){const t=0|d(e.length),o=s(t);return 0===o.length||e.copy(o,0,0,t),o}if(void 0!==e.length)return"number"!=typeof e.length||$(e.length)?s(0):S(e);if("Buffer"===e.type&&Array.isArray(e.data))return S(e.data)})(e);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return E.from(e[Symbol.toPrimitive]("string"),t,o);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function T(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function l(e){return T(e),s(e<0?0:0|d(e))}function S(e){const t=e.length<0?0:0|d(e.length),o=s(t);for(let a=0;a<t;a+=1)o[a]=255&e[a];return o}function u(e,t,o){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(o||0))throw new RangeError('"length" is outside of buffer bounds');let a;return a=void 0===t&&void 0===o?new Uint8Array(e):void 0===o?new Uint8Array(e,t):new Uint8Array(e,t,o),Object.setPrototypeOf(a,E.prototype),a}function d(e){if(e>=r)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r.toString(16)+" bytes");return 0|e}function c(e,t){if(E.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||X(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const o=e.length,a=arguments.length>2&&!0===arguments[2];if(!a&&0===o)return 0;let n=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return o;case"utf8":case"utf-8":return K(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*o;case"hex":return o>>>1;case"base64":return j(e).length;default:if(n)return a?-1:K(e).length;t=(""+t).toLowerCase(),n=!0}}function A(e,t,o){let a=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===o||o>this.length)&&(o=this.length),o<=0)return"";if((o>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,o);case"utf8":case"utf-8":return C(this,t,o);case"ascii":return g(this,t,o);case"latin1":case"binary":return v(this,t,o);case"base64":return f(this,t,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return y(this,t,o);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}function I(e,t,o){const a=e[t];e[t]=e[o],e[o]=a}function O(e,t,o,a,n){if(0===e.length)return-1;if("string"==typeof o?(a=o,o=0):o>2147483647?o=2147483647:o<-2147483648&&(o=-2147483648),$(o=+o)&&(o=n?0:e.length-1),o<0&&(o=e.length+o),o>=e.length){if(n)return-1;o=e.length-1}else if(o<0){if(!n)return-1;o=0}if("string"==typeof t&&(t=E.from(t,a)),E.isBuffer(t))return 0===t.length?-1:N(e,t,o,a,n);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(e,t,o):Uint8Array.prototype.lastIndexOf.call(e,t,o):N(e,[t],o,a,n);throw new TypeError("val must be string, number or Buffer")}function N(e,t,o,a,n){let i,r=1,s=e.length,E=t.length;if(void 0!==a&&("ucs2"===(a=String(a).toLowerCase())||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(e.length<2||t.length<2)return-1;r=2,s/=2,E/=2,o/=2}function _(e,t){return 1===r?e[t]:e.readUInt16BE(t*r)}if(n){let a=-1;for(i=o;i<s;i++)if(_(e,i)===_(t,-1===a?0:i-a)){if(-1===a&&(a=i),i-a+1===E)return a*r}else-1!==a&&(i-=i-a),a=-1}else for(o+E>s&&(o=s-E),i=o;i>=0;i--){let o=!0;for(let a=0;a<E;a++)if(_(e,i+a)!==_(t,a)){o=!1;break}if(o)return i}return-1}function R(e,t,o,a){o=Number(o)||0;const n=e.length-o;a?(a=Number(a))>n&&(a=n):a=n;const i=t.length;let r;for(a>i/2&&(a=i/2),r=0;r<a;++r){const a=parseInt(t.substr(2*r,2),16);if($(a))return r;e[o+r]=a}return r}function m(e,t,o,a){return Q(K(t,e.length-o),e,o,a)}function p(e,t,o,a){return Q((function(e){const t=[];for(let o=0;o<e.length;++o)t.push(255&e.charCodeAt(o));return t})(t),e,o,a)}function h(e,t,o,a){return Q(j(t),e,o,a)}function L(e,t,o,a){return Q((function(e,t){let o,a,n;const i=[];for(let r=0;r<e.length&&!((t-=2)<0);++r)o=e.charCodeAt(r),a=o>>8,n=o%256,i.push(n),i.push(a);return i})(t,e.length-o),e,o,a)}function f(e,t,o){return 0===t&&o===e.length?a.fromByteArray(e):a.fromByteArray(e.slice(t,o))}function C(e,t,o){o=Math.min(e.length,o);const a=[];let n=t;for(;n<o;){const t=e[n];let i=null,r=t>239?4:t>223?3:t>191?2:1;if(n+r<=o){let o,a,s,E;switch(r){case 1:t<128&&(i=t);break;case 2:o=e[n+1],128==(192&o)&&(E=(31&t)<<6|63&o,E>127&&(i=E));break;case 3:o=e[n+1],a=e[n+2],128==(192&o)&&128==(192&a)&&(E=(15&t)<<12|(63&o)<<6|63&a,E>2047&&(E<55296||E>57343)&&(i=E));break;case 4:o=e[n+1],a=e[n+2],s=e[n+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(E=(15&t)<<18|(63&o)<<12|(63&a)<<6|63&s,E>65535&&E<1114112&&(i=E))}}null===i?(i=65533,r=1):i>65535&&(i-=65536,a.push(i>>>10&1023|55296),i=56320|1023&i),a.push(i),n+=r}return(function(e){const t=e.length;if(t<=D)return String.fromCharCode.apply(String,e);let o="",a=0;for(;a<t;)o+=String.fromCharCode.apply(String,e.slice(a,a+=D));return o})(a)}t.kMaxLength=r,E.TYPED_ARRAY_SUPPORT=(function(){try{const e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}})(),E.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(E.prototype,"parent",{enumerable:!0,get:function(){if(E.isBuffer(this))return this.buffer}}),Object.defineProperty(E.prototype,"offset",{enumerable:!0,get:function(){if(E.isBuffer(this))return this.byteOffset}}),E.poolSize=8192,E.from=function(e,t,o){return _(e,t,o)},Object.setPrototypeOf(E.prototype,Uint8Array.prototype),Object.setPrototypeOf(E,Uint8Array),E.alloc=function(e,t,o){return(function(e,t,o){return T(e),e<=0?s(e):void 0!==t?"string"==typeof o?s(e).fill(t,o):s(e).fill(t):s(e)})(e,t,o)},E.allocUnsafe=function(e){return l(e)},E.allocUnsafeSlow=function(e){return l(e)},E.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==E.prototype},E.compare=function(e,t){if(X(e,Uint8Array)&&(e=E.from(e,e.offset,e.byteLength)),X(t,Uint8Array)&&(t=E.from(t,t.offset,t.byteLength)),!E.isBuffer(e)||!E.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let o=e.length,a=t.length;for(let n=0,i=Math.min(o,a);n<i;++n)if(e[n]!==t[n]){o=e[n],a=t[n];break}return o<a?-1:a<o?1:0},E.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},E.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return E.alloc(0);let o;if(void 0===t)for(t=0,o=0;o<e.length;++o)t+=e[o].length;const a=E.allocUnsafe(t);let n=0;for(o=0;o<e.length;++o){let t=e[o];if(X(t,Uint8Array))n+t.length>a.length?(E.isBuffer(t)||(t=E.from(t)),t.copy(a,n)):Uint8Array.prototype.set.call(a,t,n);else{if(!E.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(a,n)}n+=t.length}return a},E.byteLength=c,E.prototype._isBuffer=!0,E.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;t<e;t+=2)I(this,t,t+1);return this},E.prototype.swap32=function(){const e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let t=0;t<e;t+=4)I(this,t,t+3),I(this,t+1,t+2);return this},E.prototype.swap64=function(){const e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let t=0;t<e;t+=8)I(this,t,t+7),I(this,t+1,t+6),I(this,t+2,t+5),I(this,t+3,t+4);return this},E.prototype.toString=function(){const e=this.length;return 0===e?"":0===arguments.length?C(this,0,e):A.apply(this,arguments)},E.prototype.toLocaleString=E.prototype.toString,E.prototype.equals=function(e){if(!E.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===E.compare(this,e)},E.prototype.inspect=function(){let e="";const o=t.INSPECT_MAX_BYTES;return e=this.toString("hex",0,o).replace(/(.{2})/g,"$1 ").trim(),this.length>o&&(e+=" ... "),"<Buffer "+e+">"},i&&(E.prototype[i]=E.prototype.inspect),E.prototype.compare=function(e,t,o,a,n){if(X(e,Uint8Array)&&(e=E.from(e,e.offset,e.byteLength)),!E.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===o&&(o=e?e.length:0),void 0===a&&(a=0),void 0===n&&(n=this.length),t<0||o>e.length||a<0||n>this.length)throw new RangeError("out of range index");if(a>=n&&t>=o)return 0;if(a>=n)return-1;if(t>=o)return 1;if(this===e)return 0;let i=(n>>>=0)-(a>>>=0),r=(o>>>=0)-(t>>>=0);const s=Math.min(i,r),_=this.slice(a,n),T=e.slice(t,o);for(let e=0;e<s;++e)if(_[e]!==T[e]){i=_[e],r=T[e];break}return i<r?-1:r<i?1:0},E.prototype.includes=function(e,t,o){return-1!==this.indexOf(e,t,o)},E.prototype.indexOf=function(e,t,o){return O(this,e,t,o,!0)},E.prototype.lastIndexOf=function(e,t,o){return O(this,e,t,o,!1)},E.prototype.write=function(e,t,o,a){if(void 0===t)a="utf8",o=this.length,t=0;else if(void 0===o&&"string"==typeof t)a=t,o=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(o)?(o>>>=0,void 0===a&&(a="utf8")):(a=o,o=void 0)}const n=this.length-t;if((void 0===o||o>n)&&(o=n),e.length>0&&(o<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");let i=!1;for(;;)switch(a){case"hex":return R(this,e,t,o);case"utf8":case"utf-8":return m(this,e,t,o);case"ascii":case"latin1":case"binary":return p(this,e,t,o);case"base64":return h(this,e,t,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,e,t,o);default:if(i)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),i=!0}},E.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const D=4096;function g(e,t,o){let a="";o=Math.min(e.length,o);for(let n=t;n<o;++n)a+=String.fromCharCode(127&e[n]);return a}function v(e,t,o){let a="";o=Math.min(e.length,o);for(let n=t;n<o;++n)a+=String.fromCharCode(e[n]);return a}function P(e,t,o){const a=e.length;(!t||t<0)&&(t=0),(!o||o<0||o>a)&&(o=a);let n="";for(let a=t;a<o;++a)n+=q[e[a]];return n}function y(e,t,o){const a=e.slice(t,o);let n="";for(let e=0;e<a.length-1;e+=2)n+=String.fromCharCode(a[e]+256*a[e+1]);return n}function B(e,t,o){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>o)throw new RangeError("Trying to access beyond buffer length")}function b(e,t,o,a,n,i){if(!E.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>n||t<i)throw new RangeError('"value" argument is out of bounds');if(o+a>e.length)throw new RangeError("Index out of range")}function M(e,t,o,a,n){V(t,a,n,e,o,7);let i=Number(t&BigInt(4294967295));e[o++]=i,i>>=8,e[o++]=i,i>>=8,e[o++]=i,i>>=8,e[o++]=i;let r=Number(t>>BigInt(32)&BigInt(4294967295));return e[o++]=r,r>>=8,e[o++]=r,r>>=8,e[o++]=r,r>>=8,e[o++]=r,o}function U(e,t,o,a,n){V(t,a,n,e,o,7);let i=Number(t&BigInt(4294967295));e[o+7]=i,i>>=8,e[o+6]=i,i>>=8,e[o+5]=i,i>>=8,e[o+4]=i;let r=Number(t>>BigInt(32)&BigInt(4294967295));return e[o+3]=r,r>>=8,e[o+2]=r,r>>=8,e[o+1]=r,r>>=8,e[o]=r,o+8}function W(e,t,o,a,n,i){if(o+a>e.length)throw new RangeError("Index out of range");if(o<0)throw new RangeError("Index out of range")}function G(e,t,o,a,i){return t=+t,o>>>=0,i||W(e,0,o,4),n.write(e,t,o,a,23,4),o+4}function F(e,t,o,a,i){return t=+t,o>>>=0,i||W(e,0,o,8),n.write(e,t,o,a,52,8),o+8}E.prototype.slice=function(e,t){const o=this.length;(e=~~e)<0?(e+=o)<0&&(e=0):e>o&&(e=o),(t=void 0===t?o:~~t)<0?(t+=o)<0&&(t=0):t>o&&(t=o),t<e&&(t=e);const a=this.subarray(e,t);return Object.setPrototypeOf(a,E.prototype),a},E.prototype.readUintLE=E.prototype.readUIntLE=function(e,t,o){e>>>=0,t>>>=0,o||B(e,t,this.length);let a=this[e],n=1,i=0;for(;++i<t&&(n*=256);)a+=this[e+i]*n;return a},E.prototype.readUintBE=E.prototype.readUIntBE=function(e,t,o){e>>>=0,t>>>=0,o||B(e,t,this.length);let a=this[e+--t],n=1;for(;t>0&&(n*=256);)a+=this[e+--t]*n;return a},E.prototype.readUint8=E.prototype.readUInt8=function(e,t){return e>>>=0,t||B(e,1,this.length),this[e]},E.prototype.readUint16LE=E.prototype.readUInt16LE=function(e,t){return e>>>=0,t||B(e,2,this.length),this[e]|this[e+1]<<8},E.prototype.readUint16BE=E.prototype.readUInt16BE=function(e,t){return e>>>=0,t||B(e,2,this.length),this[e]<<8|this[e+1]},E.prototype.readUint32LE=E.prototype.readUInt32LE=function(e,t){return e>>>=0,t||B(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},E.prototype.readUint32BE=E.prototype.readUInt32BE=function(e,t){return e>>>=0,t||B(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},E.prototype.readBigUInt64LE=J((function(e){Y(e>>>=0,"offset");const t=this[e],o=this[e+7];void 0!==t&&void 0!==o||z(e,this.length-8);const a=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,n=this[++e]+256*this[++e]+65536*this[++e]+o*2**24;return BigInt(a)+(BigInt(n)<<BigInt(32))})),E.prototype.readBigUInt64BE=J((function(e){Y(e>>>=0,"offset");const t=this[e],o=this[e+7];void 0!==t&&void 0!==o||z(e,this.length-8);const a=t*2**24+65536*this[++e]+256*this[++e]+this[++e],n=this[++e]*2**24+65536*this[++e]+256*this[++e]+o;return(BigInt(a)<<BigInt(32))+BigInt(n)})),E.prototype.readIntLE=function(e,t,o){e>>>=0,t>>>=0,o||B(e,t,this.length);let a=this[e],n=1,i=0;for(;++i<t&&(n*=256);)a+=this[e+i]*n;return n*=128,a>=n&&(a-=Math.pow(2,8*t)),a},E.prototype.readIntBE=function(e,t,o){e>>>=0,t>>>=0,o||B(e,t,this.length);let a=t,n=1,i=this[e+--a];for(;a>0&&(n*=256);)i+=this[e+--a]*n;return n*=128,i>=n&&(i-=Math.pow(2,8*t)),i},E.prototype.readInt8=function(e,t){return e>>>=0,t||B(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},E.prototype.readInt16LE=function(e,t){e>>>=0,t||B(e,2,this.length);const o=this[e]|this[e+1]<<8;return 32768&o?4294901760|o:o},E.prototype.readInt16BE=function(e,t){e>>>=0,t||B(e,2,this.length);const o=this[e+1]|this[e]<<8;return 32768&o?4294901760|o:o},E.prototype.readInt32LE=function(e,t){return e>>>=0,t||B(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},E.prototype.readInt32BE=function(e,t){return e>>>=0,t||B(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},E.prototype.readBigInt64LE=J((function(e){Y(e>>>=0,"offset");const t=this[e],o=this[e+7];void 0!==t&&void 0!==o||z(e,this.length-8);const a=this[e+4]+256*this[e+5]+65536*this[e+6]+(o<<24);return(BigInt(a)<<BigInt(32))+BigInt(t+256*this[++e]+65536*this[++e]+this[++e]*2**24)})),E.prototype.readBigInt64BE=J((function(e){Y(e>>>=0,"offset");const t=this[e],o=this[e+7];void 0!==t&&void 0!==o||z(e,this.length-8);const a=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(a)<<BigInt(32))+BigInt(this[++e]*2**24+65536*this[++e]+256*this[++e]+o)})),E.prototype.readFloatLE=function(e,t){return e>>>=0,t||B(e,4,this.length),n.read(this,e,!0,23,4)},E.prototype.readFloatBE=function(e,t){return e>>>=0,t||B(e,4,this.length),n.read(this,e,!1,23,4)},E.prototype.readDoubleLE=function(e,t){return e>>>=0,t||B(e,8,this.length),n.read(this,e,!0,52,8)},E.prototype.readDoubleBE=function(e,t){return e>>>=0,t||B(e,8,this.length),n.read(this,e,!1,52,8)},E.prototype.writeUintLE=E.prototype.writeUIntLE=function(e,t,o,a){if(e=+e,t>>>=0,o>>>=0,!a){b(this,e,t,o,Math.pow(2,8*o)-1,0)}let n=1,i=0;for(this[t]=255&e;++i<o&&(n*=256);)this[t+i]=e/n&255;return t+o},E.prototype.writeUintBE=E.prototype.writeUIntBE=function(e,t,o,a){if(e=+e,t>>>=0,o>>>=0,!a){b(this,e,t,o,Math.pow(2,8*o)-1,0)}let n=o-1,i=1;for(this[t+n]=255&e;--n>=0&&(i*=256);)this[t+n]=e/i&255;return t+o},E.prototype.writeUint8=E.prototype.writeUInt8=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,1,255,0),this[t]=255&e,t+1},E.prototype.writeUint16LE=E.prototype.writeUInt16LE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},E.prototype.writeUint16BE=E.prototype.writeUInt16BE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},E.prototype.writeUint32LE=E.prototype.writeUInt32LE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},E.prototype.writeUint32BE=E.prototype.writeUInt32BE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},E.prototype.writeBigUInt64LE=J((function(e,t=0){return M(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),E.prototype.writeBigUInt64BE=J((function(e,t=0){return U(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),E.prototype.writeIntLE=function(e,t,o,a){if(e=+e,t>>>=0,!a){const a=Math.pow(2,8*o-1);b(this,e,t,o,a-1,-a)}let n=0,i=1,r=0;for(this[t]=255&e;++n<o&&(i*=256);)e<0&&0===r&&0!==this[t+n-1]&&(r=1),this[t+n]=(e/i>>0)-r&255;return t+o},E.prototype.writeIntBE=function(e,t,o,a){if(e=+e,t>>>=0,!a){const a=Math.pow(2,8*o-1);b(this,e,t,o,a-1,-a)}let n=o-1,i=1,r=0;for(this[t+n]=255&e;--n>=0&&(i*=256);)e<0&&0===r&&0!==this[t+n+1]&&(r=1),this[t+n]=(e/i>>0)-r&255;return t+o},E.prototype.writeInt8=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},E.prototype.writeInt16LE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},E.prototype.writeInt16BE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},E.prototype.writeInt32LE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},E.prototype.writeInt32BE=function(e,t,o){return e=+e,t>>>=0,o||b(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},E.prototype.writeBigInt64LE=J((function(e,t=0){return M(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),E.prototype.writeBigInt64BE=J((function(e,t=0){return U(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),E.prototype.writeFloatLE=function(e,t,o){return G(this,e,t,!0,o)},E.prototype.writeFloatBE=function(e,t,o){return G(this,e,t,!1,o)},E.prototype.writeDoubleLE=function(e,t,o){return F(this,e,t,!0,o)},E.prototype.writeDoubleBE=function(e,t,o){return F(this,e,t,!1,o)},E.prototype.copy=function(e,t,o,a){if(!E.isBuffer(e))throw new TypeError("argument should be a Buffer");if(o||(o=0),a||0===a||(a=this.length),t>=e.length&&(t=e.length),t||(t=0),a>0&&a<o&&(a=o),a===o)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(o<0||o>=this.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),e.length-t<a-o&&(a=e.length-t+o);const n=a-o;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,o,a):Uint8Array.prototype.set.call(e,this.subarray(o,a),t),n},E.prototype.fill=function(e,t,o,a){if("string"==typeof e){if("string"==typeof t?(a=t,t=0,o=this.length):"string"==typeof o&&(a=o,o=this.length),void 0!==a&&"string"!=typeof a)throw new TypeError("encoding must be a string");if("string"==typeof a&&!E.isEncoding(a))throw new TypeError("Unknown encoding: "+a);if(1===e.length){const t=e.charCodeAt(0);("utf8"===a&&t<128||"latin1"===a)&&(e=t)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<o)throw new RangeError("Out of range index");if(o<=t)return this;let n;if(t>>>=0,o=void 0===o?this.length:o>>>0,e||(e=0),"number"==typeof e)for(n=t;n<o;++n)this[n]=e;else{const i=E.isBuffer(e)?e:E.from(e,a),r=i.length;if(0===r)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(n=0;n<o-t;++n)this[n+t]=i[n%r]}return this};const k={};function w(e,t,o){k[e]=class extends o{constructor(){super(),Object.defineProperty(this,"message",{value:t.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${e}]`,this.stack,delete this.name}get code(){return e}set code(e){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:e,writable:!0})}toString(){return`${this.name} [${e}]: ${this.message}`}}}function H(e){let t="",o=e.length;const a="-"===e[0]?1:0;for(;o>=a+4;o-=3)t=`_${e.slice(o-3,o)}${t}`;return`${e.slice(0,o)}${t}`}function V(e,t,o,a,n,i){if(e>o||e<t){const a="bigint"==typeof t?"n":"";let n;throw n=i>3?0===t||t===BigInt(0)?`>= 0${a} and < 2${a} ** ${8*(i+1)}${a}`:`>= -(2${a} ** ${8*(i+1)-1}${a}) and < 2 ** ${8*(i+1)-1}${a}`:`>= ${t}${a} and <= ${o}${a}`,new k.ERR_OUT_OF_RANGE("value",n,e)}!(function(e,t,o){Y(t,"offset"),void 0!==e[t]&&void 0!==e[t+o]||z(t,e.length-(o+1))})(a,n,i)}function Y(e,t){if("number"!=typeof e)throw new k.ERR_INVALID_ARG_TYPE(t,"number",e)}function z(e,t,o){if(Math.floor(e)!==e)throw Y(e,o),new k.ERR_OUT_OF_RANGE(o||"offset","an integer",e);if(t<0)throw new k.ERR_BUFFER_OUT_OF_BOUNDS;throw new k.ERR_OUT_OF_RANGE(o||"offset",`>= ${o?1:0} and <= ${t}`,e)}w("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),w("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),w("ERR_OUT_OF_RANGE",(function(e,t,o){let a=`The value of "${e}" is out of range.`,n=o;return Number.isInteger(o)&&Math.abs(o)>2**32?n=H(String(o)):"bigint"==typeof o&&(n=String(o),(o>BigInt(2)**BigInt(32)||o<-(BigInt(2)**BigInt(32)))&&(n=H(n)),n+="n"),a+=` It must be ${t}. Received ${n}`,a}),RangeError);const x=/[^+/0-9A-Za-z-_]/g;function K(e,t){let o;t=t||1/0;const a=e.length;let n=null;const i=[];for(let r=0;r<a;++r){if(o=e.charCodeAt(r),o>55295&&o<57344){if(!n){if(o>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(r+1===a){(t-=3)>-1&&i.push(239,191,189);continue}n=o;continue}if(o<56320){(t-=3)>-1&&i.push(239,191,189),n=o;continue}o=65536+(n-55296<<10|o-56320)}else n&&(t-=3)>-1&&i.push(239,191,189);if(n=null,o<128){if((t-=1)<0)break;i.push(o)}else if(o<2048){if((t-=2)<0)break;i.push(o>>6|192,63&o|128)}else if(o<65536){if((t-=3)<0)break;i.push(o>>12|224,o>>6&63|128,63&o|128)}else{if(!(o<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(o>>18|240,o>>12&63|128,o>>6&63|128,63&o|128)}}return i}function j(e){return a.toByteArray((function(e){if((e=(e=e.split("=")[0]).trim().replace(x,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e})(e))}function Q(e,t,o,a){let n;for(n=0;n<a&&!(n+o>=t.length||n>=e.length);++n)t[n+o]=e[n];return n}function X(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function $(e){return e!=e}const q=(function(){const e="0123456789abcdef",t=new Array(256);for(let o=0;o<16;++o){const a=16*o;for(let n=0;n<16;++n)t[a+n]=e[o]+e[n]}return t})();function J(e){return"undefined"==typeof BigInt?Z:e}function Z(){throw new Error("BigInt not supported")}},4184:(e,t)=>{var o;!(function(){"use strict";var a={}.hasOwnProperty;function n(){for(var e=[],t=0;t<arguments.length;t++){var o=arguments[t];if(o){var i=typeof o;if("string"===i||"number"===i)e.push(o);else if(Array.isArray(o)){if(o.length){var r=n.apply(null,o);r&&e.push(r)}}else if("object"===i)if(o.toString===Object.prototype.toString)for(var s in o)a.call(o,s)&&o[s]&&e.push(s);else e.push(o.toString())}}return e.join(" ")}e.exports?(n.default=n,e.exports=n):void 0===(o=function(){return n}.apply(t,[]))||(e.exports=o)})()},8874:e=>{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},9818:(e,t,o)=>{var a=o(8874),n=o(1110),i=Object.hasOwnProperty,r=Object.create(null);for(var s in a)i.call(a,s)&&(r[a[s]]=s);var E=e.exports={to:{},get:{}};function _(e,t,o){return Math.min(Math.max(t,e),o)}function T(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}E.get=function(e){var t,o;switch(e.substring(0,3).toLowerCase()){case"hsl":t=E.get.hsl(e),o="hsl";break;case"hwb":t=E.get.hwb(e),o="hwb";break;default:t=E.get.rgb(e),o="rgb"}return t?{model:o,value:t}:null},E.get.rgb=function(e){if(!e)return null;var t,o,n,r=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(n=t[2],t=t[1],o=0;o<3;o++){var s=2*o;r[o]=parseInt(t.slice(s,s+2),16)}n&&(r[3]=parseInt(n,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(n=(t=t[1])[3],o=0;o<3;o++)r[o]=parseInt(t[o]+t[o],16);n&&(r[3]=parseInt(n+n,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(o=0;o<3;o++)r[o]=parseInt(t[o+1],0);t[4]&&(t[5]?r[3]=.01*parseFloat(t[4]):r[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(t=e.match(/^(\w+)$/))?"transparent"===t[1]?[0,0,0,0]:i.call(a,t[1])?((r=a[t[1]])[3]=1,r):null:null;for(o=0;o<3;o++)r[o]=Math.round(2.55*parseFloat(t[o+1]));t[4]&&(t[5]?r[3]=.01*parseFloat(t[4]):r[3]=parseFloat(t[4]))}for(o=0;o<3;o++)r[o]=_(r[o],0,255);return r[3]=_(r[3],0,1),r},E.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var o=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,_(parseFloat(t[2]),0,100),_(parseFloat(t[3]),0,100),_(isNaN(o)?1:o,0,1)]}return null},E.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var o=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,_(parseFloat(t[2]),0,100),_(parseFloat(t[3]),0,100),_(isNaN(o)?1:o,0,1)]}return null},E.to.hex=function(){var e=n(arguments);return"#"+T(e[0])+T(e[1])+T(e[2])+(e[3]<1?T(Math.round(255*e[3])):"")},E.to.rgb=function(){var e=n(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},E.to.rgb.percent=function(){var e=n(arguments),t=Math.round(e[0]/255*100),o=Math.round(e[1]/255*100),a=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+o+"%, "+a+"%)":"rgba("+t+"%, "+o+"%, "+a+"%, "+e[3]+")"},E.to.hsl=function(){var e=n(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},E.to.hwb=function(){var e=n(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},E.to.keyword=function(e){return r[e.slice(0,3)]}},6767:(e,t,o)=>{const a=o(9818),n=o(978),i=["keyword","gray","hex"],r={};for(const e of Object.keys(n))r[[...n[e].labels].sort().join("")]=e;const s={};function E(e,t){if(!(this instanceof E))return new E(e,t);if(t&&t in i&&(t=null),t&&!(t in n))throw new Error("Unknown model: "+t);let o,_;if(null==e)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof E)this.model=e.model,this.color=[...e.color],this.valpha=e.valpha;else if("string"==typeof e){const t=a.get(e);if(null===t)throw new Error("Unable to parse color from string: "+e);this.model=t.model,_=n[this.model].channels,this.color=t.value.slice(0,_),this.valpha="number"==typeof t.value[_]?t.value[_]:1}else if(e.length>0){this.model=t||"rgb",_=n[this.model].channels;const o=Array.prototype.slice.call(e,0,_);this.color=S(o,_),this.valpha="number"==typeof e[_]?e[_]:1}else if("number"==typeof e)this.model="rgb",this.color=[e>>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;const t=Object.keys(e);"alpha"in e&&(t.splice(t.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);const a=t.sort().join("");if(!(a in r))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=r[a];const{labels:i}=n[this.model],s=[];for(o=0;o<i.length;o++)s.push(e[i[o]]);this.color=S(s)}if(s[this.model])for(_=n[this.model].channels,o=0;o<_;o++){const e=s[this.model][o];e&&(this.color[o]=e(this.color[o]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}E.prototype={toString(){return this.string()},toJSON(){return this[this.model]()},string(e){let t=this.model in a.to?this:this.rgb();t=t.round("number"==typeof e?e:1);const o=1===t.valpha?t.color:[...t.color,this.valpha];return a.to[t.model](o)},percentString(e){const t=this.rgb().round("number"==typeof e?e:1),o=1===t.valpha?t.color:[...t.color,this.valpha];return a.to.rgb.percent(o)},array(){return 1===this.valpha?[...this.color]:[...this.color,this.valpha]},object(){const e={},{channels:t}=n[this.model],{labels:o}=n[this.model];for(let a=0;a<t;a++)e[o[a]]=this.color[a];return 1!==this.valpha&&(e.alpha=this.valpha),e},unitArray(){const e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,1!==this.valpha&&e.push(this.valpha),e},unitObject(){const e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,1!==this.valpha&&(e.alpha=this.valpha),e},round(e){return e=Math.max(e||0,0),new E([...this.color.map(_(e)),this.valpha],this.model)},alpha(e){return void 0!==e?new E([...this.color,Math.max(0,Math.min(1,e))],this.model):this.valpha},red:T("rgb",0,l(255)),green:T("rgb",1,l(255)),blue:T("rgb",2,l(255)),hue:T(["hsl","hsv","hsl","hwb","hcg"],0,(e=>(e%360+360)%360)),saturationl:T("hsl",1,l(100)),lightness:T("hsl",2,l(100)),saturationv:T("hsv",1,l(100)),value:T("hsv",2,l(100)),chroma:T("hcg",1,l(100)),gray:T("hcg",2,l(100)),white:T("hwb",1,l(100)),wblack:T("hwb",2,l(100)),cyan:T("cmyk",0,l(100)),magenta:T("cmyk",1,l(100)),yellow:T("cmyk",2,l(100)),black:T("cmyk",3,l(100)),x:T("xyz",0,l(95.047)),y:T("xyz",1,l(100)),z:T("xyz",2,l(108.833)),l:T("lab",0,l(100)),a:T("lab",1),b:T("lab",2),keyword(e){return void 0!==e?new E(e):n[this.model].keyword(this.color)},hex(e){return void 0!==e?new E(e):a.to.hex(this.rgb().round().color)},hexa(e){if(void 0!==e)return new E(e);const t=this.rgb().round().color;let o=Math.round(255*this.valpha).toString(16).toUpperCase();return 1===o.length&&(o="0"+o),a.to.hex(t)+o},rgbNumber(){const e=this.rgb().color;return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},luminosity(){const e=this.rgb().color,t=[];for(const[o,a]of e.entries()){const e=a/255;t[o]=e<=.04045?e/12.92:((e+.055)/1.055)**2.4}return.2126*t[0]+.7152*t[1]+.0722*t[2]},contrast(e){const t=this.luminosity(),o=e.luminosity();return t>o?(t+.05)/(o+.05):(o+.05)/(t+.05)},level(e){const t=this.contrast(e);return t>=7?"AAA":t>=4.5?"AA":""},isDark(){const e=this.rgb().color;return(2126*e[0]+7152*e[1]+722*e[2])/1e4<128},isLight(){return!this.isDark()},negate(){const e=this.rgb();for(let t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten(e){const t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken(e){const t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate(e){const t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate(e){const t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten(e){const t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken(e){const t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale(){const e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return E.rgb(t,t,t)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){const t=this.hsl();let o=t.color[0];return o=(o+e)%360,o=o<0?360+o:o,t.color[0]=o,t},mix(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);const o=e.rgb(),a=this.rgb(),n=void 0===t?.5:t,i=2*n-1,r=o.alpha()-a.alpha(),s=((i*r==-1?i:(i+r)/(1+i*r))+1)/2,_=1-s;return E.rgb(s*o.red()+_*a.red(),s*o.green()+_*a.green(),s*o.blue()+_*a.blue(),o.alpha()*n+a.alpha()*(1-n))}};for(const e of Object.keys(n)){if(i.includes(e))continue;const{channels:t}=n[e];E.prototype[e]=function(...t){return this.model===e?new E(this):t.length>0?new E(t,e):new E([...(o=n[this.model][e].raw(this.color),Array.isArray(o)?o:[o]),this.valpha],e);var o},E[e]=function(...o){let a=o[0];return"number"==typeof a&&(a=S(o,t)),new E(a,e)}}function _(e){return function(t){return(function(e,t){return Number(e.toFixed(t))})(t,e)}}function T(e,t,o){e=Array.isArray(e)?e:[e];for(const a of e)(s[a]||(s[a]=[]))[t]=o;return e=e[0],function(a){let n;return void 0!==a?(o&&(a=o(a)),n=this[e](),n.color[t]=a,n):(n=this[e]().color[t],o&&(n=o(n)),n)}}function l(e){return function(t){return Math.max(0,Math.min(e,t))}}function S(e,t){for(let o=0;o<t;o++)"number"!=typeof e[o]&&(e[o]=0);return e}e.exports=E},2956:(e,t,o)=>{const a=o(8900),n={};for(const e of Object.keys(a))n[a[e]]=e;const i={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};e.exports=i;for(const e of Object.keys(i)){if(!("channels"in i[e]))throw new Error("missing channels property: "+e);if(!("labels"in i[e]))throw new Error("missing channel labels property: "+e);if(i[e].labels.length!==i[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:t,labels:o}=i[e];delete i[e].channels,delete i[e].labels,Object.defineProperty(i[e],"channels",{value:t}),Object.defineProperty(i[e],"labels",{value:o})}i.rgb.hsl=function(e){const t=e[0]/255,o=e[1]/255,a=e[2]/255,n=Math.min(t,o,a),i=Math.max(t,o,a),r=i-n;let s,E;i===n?s=0:t===i?s=(o-a)/r:o===i?s=2+(a-t)/r:a===i&&(s=4+(t-o)/r),s=Math.min(60*s,360),s<0&&(s+=360);const _=(n+i)/2;return E=i===n?0:_<=.5?r/(i+n):r/(2-i-n),[s,100*E,100*_]},i.rgb.hsv=function(e){let t,o,a,n,i;const r=e[0]/255,s=e[1]/255,E=e[2]/255,_=Math.max(r,s,E),T=_-Math.min(r,s,E),l=function(e){return(_-e)/6/T+.5};return 0===T?(n=0,i=0):(i=T/_,t=l(r),o=l(s),a=l(E),r===_?n=a-o:s===_?n=1/3+t-a:E===_&&(n=2/3+o-t),n<0?n+=1:n>1&&(n-=1)),[360*n,100*i,100*_]},i.rgb.hwb=function(e){const t=e[0],o=e[1];let a=e[2];const n=i.rgb.hsl(e)[0],r=1/255*Math.min(t,Math.min(o,a));return a=1-1/255*Math.max(t,Math.max(o,a)),[n,100*r,100*a]},i.rgb.cmyk=function(e){const t=e[0]/255,o=e[1]/255,a=e[2]/255,n=Math.min(1-t,1-o,1-a);return[100*((1-t-n)/(1-n)||0),100*((1-o-n)/(1-n)||0),100*((1-a-n)/(1-n)||0),100*n]},i.rgb.keyword=function(e){const t=n[e];if(t)return t;let o,i=1/0;for(const t of Object.keys(a)){const n=a[t],E=(s=n,((r=e)[0]-s[0])**2+(r[1]-s[1])**2+(r[2]-s[2])**2);E<i&&(i=E,o=t)}var r,s;return o},i.keyword.rgb=function(e){return a[e]},i.rgb.xyz=function(e){let t=e[0]/255,o=e[1]/255,a=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,o=o>.04045?((o+.055)/1.055)**2.4:o/12.92,a=a>.04045?((a+.055)/1.055)**2.4:a/12.92;return[100*(.4124*t+.3576*o+.1805*a),100*(.2126*t+.7152*o+.0722*a),100*(.0193*t+.1192*o+.9505*a)]},i.rgb.lab=function(e){const t=i.rgb.xyz(e);let o=t[0],a=t[1],n=t[2];o/=95.047,a/=100,n/=108.883,o=o>.008856?o**(1/3):7.787*o+16/116,a=a>.008856?a**(1/3):7.787*a+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;return[116*a-16,500*(o-a),200*(a-n)]},i.hsl.rgb=function(e){const t=e[0]/360,o=e[1]/100,a=e[2]/100;let n,i,r;if(0===o)return r=255*a,[r,r,r];n=a<.5?a*(1+o):a+o-a*o;const s=2*a-n,E=[0,0,0];for(let e=0;e<3;e++)i=t+1/3*-(e-1),i<0&&i++,i>1&&i--,r=6*i<1?s+6*(n-s)*i:2*i<1?n:3*i<2?s+(n-s)*(2/3-i)*6:s,E[e]=255*r;return E},i.hsl.hsv=function(e){const t=e[0];let o=e[1]/100,a=e[2]/100,n=o;const i=Math.max(a,.01);a*=2,o*=a<=1?a:2-a,n*=i<=1?i:2-i;return[t,100*(0===a?2*n/(i+n):2*o/(a+o)),100*((a+o)/2)]},i.hsv.rgb=function(e){const t=e[0]/60,o=e[1]/100;let a=e[2]/100;const n=Math.floor(t)%6,i=t-Math.floor(t),r=255*a*(1-o),s=255*a*(1-o*i),E=255*a*(1-o*(1-i));switch(a*=255,n){case 0:return[a,E,r];case 1:return[s,a,r];case 2:return[r,a,E];case 3:return[r,s,a];case 4:return[E,r,a];case 5:return[a,r,s]}},i.hsv.hsl=function(e){const t=e[0],o=e[1]/100,a=e[2]/100,n=Math.max(a,.01);let i,r;r=(2-o)*a;const s=(2-o)*n;return i=o*n,i/=s<=1?s:2-s,i=i||0,r/=2,[t,100*i,100*r]},i.hwb.rgb=function(e){const t=e[0]/360;let o=e[1]/100,a=e[2]/100;const n=o+a;let i;n>1&&(o/=n,a/=n);const r=Math.floor(6*t),s=1-a;i=6*t-r,0!=(1&r)&&(i=1-i);const E=o+i*(s-o);let _,T,l;switch(r){default:_=s,T=E,l=o;break;case 1:_=E,T=s,l=o;break;case 2:_=o,T=s,l=E;break;case 3:_=o,T=E,l=s;break;case 4:_=E,T=o,l=s;break;case 5:_=s,T=o,l=E}return[255*_,255*T,255*l]},i.cmyk.rgb=function(e){const t=e[0]/100,o=e[1]/100,a=e[2]/100,n=e[3]/100;return[255*(1-Math.min(1,t*(1-n)+n)),255*(1-Math.min(1,o*(1-n)+n)),255*(1-Math.min(1,a*(1-n)+n))]},i.xyz.rgb=function(e){const t=e[0]/100,o=e[1]/100,a=e[2]/100;let n,i,r;return n=3.2406*t+-1.5372*o+-.4986*a,i=-.9689*t+1.8758*o+.0415*a,r=.0557*t+-.204*o+1.057*a,n=n>.0031308?1.055*n**(1/2.4)-.055:12.92*n,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,r=r>.0031308?1.055*r**(1/2.4)-.055:12.92*r,n=Math.min(Math.max(0,n),1),i=Math.min(Math.max(0,i),1),r=Math.min(Math.max(0,r),1),[255*n,255*i,255*r]},i.xyz.lab=function(e){let t=e[0],o=e[1],a=e[2];t/=95.047,o/=100,a/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,o=o>.008856?o**(1/3):7.787*o+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;return[116*o-16,500*(t-o),200*(o-a)]},i.lab.xyz=function(e){let t,o,a;o=(e[0]+16)/116,t=e[1]/500+o,a=o-e[2]/200;const n=o**3,i=t**3,r=a**3;return o=n>.008856?n:(o-16/116)/7.787,t=i>.008856?i:(t-16/116)/7.787,a=r>.008856?r:(a-16/116)/7.787,t*=95.047,o*=100,a*=108.883,[t,o,a]},i.lab.lch=function(e){const t=e[0],o=e[1],a=e[2];let n;n=360*Math.atan2(a,o)/2/Math.PI,n<0&&(n+=360);return[t,Math.sqrt(o*o+a*a),n]},i.lch.lab=function(e){const t=e[0],o=e[1],a=e[2]/360*2*Math.PI;return[t,o*Math.cos(a),o*Math.sin(a)]},i.rgb.ansi16=function(e,t=null){const[o,a,n]=e;let r=null===t?i.rgb.hsv(e)[2]:t;if(r=Math.round(r/50),0===r)return 30;let s=30+(Math.round(n/255)<<2|Math.round(a/255)<<1|Math.round(o/255));return 2===r&&(s+=60),s},i.hsv.ansi16=function(e){return i.rgb.ansi16(i.hsv.rgb(e),e[2])},i.rgb.ansi256=function(e){const t=e[0],o=e[1],a=e[2];if(t===o&&o===a)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;return 16+36*Math.round(t/255*5)+6*Math.round(o/255*5)+Math.round(a/255*5)},i.ansi16.rgb=function(e){let t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const o=.5*(1+~~(e>50));return[(1&t)*o*255,(t>>1&1)*o*255,(t>>2&1)*o*255]},i.ansi256.rgb=function(e){if(e>=232){const t=10*(e-232)+8;return[t,t,t]}let t;e-=16;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},i.rgb.hex=function(e){const t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},i.hex.rgb=function(e){const t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let o=t[0];3===t[0].length&&(o=o.split("").map((e=>e+e)).join(""));const a=parseInt(o,16);return[a>>16&255,a>>8&255,255&a]},i.rgb.hcg=function(e){const t=e[0]/255,o=e[1]/255,a=e[2]/255,n=Math.max(Math.max(t,o),a),i=Math.min(Math.min(t,o),a),r=n-i;let s,E;return s=r<1?i/(1-r):0,E=r<=0?0:n===t?(o-a)/r%6:n===o?2+(a-t)/r:4+(t-o)/r,E/=6,E%=1,[360*E,100*r,100*s]},i.hsl.hcg=function(e){const t=e[1]/100,o=e[2]/100,a=o<.5?2*t*o:2*t*(1-o);let n=0;return a<1&&(n=(o-.5*a)/(1-a)),[e[0],100*a,100*n]},i.hsv.hcg=function(e){const t=e[1]/100,o=e[2]/100,a=t*o;let n=0;return a<1&&(n=(o-a)/(1-a)),[e[0],100*a,100*n]},i.hcg.rgb=function(e){const t=e[0]/360,o=e[1]/100,a=e[2]/100;if(0===o)return[255*a,255*a,255*a];const n=[0,0,0],i=t%1*6,r=i%1,s=1-r;let E=0;switch(Math.floor(i)){case 0:n[0]=1,n[1]=r,n[2]=0;break;case 1:n[0]=s,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=r;break;case 3:n[0]=0,n[1]=s,n[2]=1;break;case 4:n[0]=r,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=s}return E=(1-o)*a,[255*(o*n[0]+E),255*(o*n[1]+E),255*(o*n[2]+E)]},i.hcg.hsv=function(e){const t=e[1]/100,o=t+e[2]/100*(1-t);let a=0;return o>0&&(a=t/o),[e[0],100*a,100*o]},i.hcg.hsl=function(e){const t=e[1]/100,o=e[2]/100*(1-t)+.5*t;let a=0;return o>0&&o<.5?a=t/(2*o):o>=.5&&o<1&&(a=t/(2*(1-o))),[e[0],100*a,100*o]},i.hcg.hwb=function(e){const t=e[1]/100,o=t+e[2]/100*(1-t);return[e[0],100*(o-t),100*(1-o)]},i.hwb.hcg=function(e){const t=e[1]/100,o=1-e[2]/100,a=o-t;let n=0;return a<1&&(n=(o-a)/(1-a)),[e[0],100*a,100*n]},i.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},i.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},i.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},i.gray.hsl=function(e){return[0,0,e[0]]},i.gray.hsv=i.gray.hsl,i.gray.hwb=function(e){return[0,100,e[0]]},i.gray.cmyk=function(e){return[0,0,0,e[0]]},i.gray.lab=function(e){return[e[0],0,0]},i.gray.hex=function(e){const t=255&Math.round(e[0]/100*255),o=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(o.length)+o},i.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},978:(e,t,o)=>{const a=o(2956),n=o(7774),i={};Object.keys(a).forEach((e=>{i[e]={},Object.defineProperty(i[e],"channels",{value:a[e].channels}),Object.defineProperty(i[e],"labels",{value:a[e].labels});const t=n(e);Object.keys(t).forEach((o=>{const a=t[o];i[e][o]=(function(e){const t=function(...t){const o=t[0];if(null==o)return o;o.length>1&&(t=o);const a=e(t);if("object"==typeof a)for(let e=a.length,t=0;t<e;t++)a[t]=Math.round(a[t]);return a};return"conversion"in e&&(t.conversion=e.conversion),t})(a),i[e][o].raw=(function(e){const t=function(...t){const o=t[0];return null==o?o:(o.length>1&&(t=o),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t})(a)}))})),e.exports=i},7774:(e,t,o)=>{const a=o(2956);function n(e){const t=(function(){const e={},t=Object.keys(a);for(let o=t.length,a=0;a<o;a++)e[t[a]]={distance:-1,parent:null};return e})(),o=[e];for(t[e].distance=0;o.length;){const e=o.pop(),n=Object.keys(a[e]);for(let a=n.length,i=0;i<a;i++){const a=n[i],r=t[a];-1===r.distance&&(r.distance=t[e].distance+1,r.parent=e,o.unshift(a))}}return t}function i(e,t){return function(o){return t(e(o))}}function r(e,t){const o=[t[e].parent,e];let n=a[t[e].parent][e],r=t[e].parent;for(;t[r].parent;)o.unshift(t[r].parent),n=i(a[t[r].parent][r],n),r=t[r].parent;return n.conversion=o,n}e.exports=function(e){const t=n(e),o={},a=Object.keys(t);for(let e=a.length,n=0;n<e;n++){const e=a[n];null!==t[e].parent&&(o[e]=r(e,t))}return o}},8900:e=>{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},2682:e=>{e.exports=function e(t){return Object.freeze(t),Object.getOwnPropertyNames(t).forEach((function(o){!t.hasOwnProperty(o)||null===t[o]||"object"!=typeof t[o]&&"function"!=typeof t[o]||Object.isFrozen(t[o])||e(t[o])})),t}},6729:e=>{"use strict";var t=Object.prototype.hasOwnProperty,o="~";function a(){}function n(e,t,o){this.fn=e,this.context=t,this.once=o||!1}function i(e,t,a,i,r){if("function"!=typeof a)throw new TypeError("The listener must be a function");var s=new n(a,i||e,r),E=o?o+t:t;return e._events[E]?e._events[E].fn?e._events[E]=[e._events[E],s]:e._events[E].push(s):(e._events[E]=s,e._eventsCount++),e}function r(e,t){0==--e._eventsCount?e._events=new a:delete e._events[t]}function s(){this._events=new a,this._eventsCount=0}Object.create&&(a.prototype=Object.create(null),(new a).__proto__||(o=!1)),s.prototype.eventNames=function(){var e,a,n=[];if(0===this._eventsCount)return n;for(a in e=this._events)t.call(e,a)&&n.push(o?a.slice(1):a);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},s.prototype.listeners=function(e){var t=o?o+e:e,a=this._events[t];if(!a)return[];if(a.fn)return[a.fn];for(var n=0,i=a.length,r=new Array(i);n<i;n++)r[n]=a[n].fn;return r},s.prototype.listenerCount=function(e){var t=o?o+e:e,a=this._events[t];return a?a.fn?1:a.length:0},s.prototype.emit=function(e,t,a,n,i,r){var s=o?o+e:e;if(!this._events[s])return!1;var E,_,T=this._events[s],l=arguments.length;if(T.fn){switch(T.once&&this.removeListener(e,T.fn,void 0,!0),l){case 1:return T.fn.call(T.context),!0;case 2:return T.fn.call(T.context,t),!0;case 3:return T.fn.call(T.context,t,a),!0;case 4:return T.fn.call(T.context,t,a,n),!0;case 5:return T.fn.call(T.context,t,a,n,i),!0;case 6:return T.fn.call(T.context,t,a,n,i,r),!0}for(_=1,E=new Array(l-1);_<l;_++)E[_-1]=arguments[_];T.fn.apply(T.context,E)}else{var S,u=T.length;for(_=0;_<u;_++)switch(T[_].once&&this.removeListener(e,T[_].fn,void 0,!0),l){case 1:T[_].fn.call(T[_].context);break;case 2:T[_].fn.call(T[_].context,t);break;case 3:T[_].fn.call(T[_].context,t,a);break;case 4:T[_].fn.call(T[_].context,t,a,n);break;default:if(!E)for(S=1,E=new Array(l-1);S<l;S++)E[S-1]=arguments[S];T[_].fn.apply(T[_].context,E)}}return!0},s.prototype.on=function(e,t,o){return i(this,e,t,o,!1)},s.prototype.once=function(e,t,o){return i(this,e,t,o,!0)},s.prototype.removeListener=function(e,t,a,n){var i=o?o+e:e;if(!this._events[i])return this;if(!t)return r(this,i),this;var s=this._events[i];if(s.fn)s.fn!==t||n&&!s.once||a&&s.context!==a||r(this,i);else{for(var E=0,_=[],T=s.length;E<T;E++)(s[E].fn!==t||n&&!s[E].once||a&&s[E].context!==a)&&_.push(s[E]);_.length?this._events[i]=1===_.length?_[0]:_:r(this,i)}return this},s.prototype.removeAllListeners=function(e){var t;return e?(t=o?o+e:e,this._events[t]&&r(this,t)):(this._events=new a,this._eventsCount=0),this},s.prototype.off=s.prototype.removeListener,s.prototype.addListener=s.prototype.on,s.prefixed=o,s.EventEmitter=s,e.exports=s},7280:(e,t,o)=>{"use strict";t.Z=function(e){var t={};for(var o in e)e.hasOwnProperty(o)&&s(o)&&(t[o]=e[o]);return t};var a,n=o(2047),i=(a=n)&&a.__esModule?a:{default:a};var r={onCopy:!0,onCut:!0,onPaste:!0,onLoad:!0,onError:!0,onWheel:!0,onScroll:!0,onCompositionEnd:!0,onCompositionStart:!0,onCompositionUpdate:!0,onKeyDown:!0,onKeyPress:!0,onKeyUp:!0,onFocus:!0,onBlur:!0,onChange:!0,onInput:!0,onSubmit:!0,onClick:!0,onContextMenu:!0,onDoubleClick:!0,onDrag:!0,onDragEnd:!0,onDragEnter:!0,onDragExit:!0,onDragLeave:!0,onDragOver:!0,onDragStart:!0,onDrop:!0,onMouseDown:!0,onMouseEnter:!0,onMouseLeave:!0,onMouseMove:!0,onMouseOut:!0,onMouseOver:!0,onMouseUp:!0,onSelect:!0,onTouchCancel:!0,onTouchEnd:!0,onTouchMove:!0,onTouchStart:!0,onAnimationStart:!0,onAnimationEnd:!0,onAnimationIteration:!0,onTransitionEnd:!0};function s(e){return r[e]||i.default[e]||/^(data|aria)-/.test(e)}},542:e=>{var t=e.exports=function(e,o){if(o||(o=16),void 0===e&&(e=128),e<=0)return"0";for(var a=Math.log(Math.pow(2,e))/Math.log(o),n=2;a===1/0;n*=2)a=Math.log(Math.pow(2,e/n))/Math.log(o)*n;var i=a-Math.floor(a),r="";for(n=0;n<Math.floor(a);n++){r=Math.floor(Math.random()*o).toString(o)+r}if(i){var s=Math.pow(o,i);r=Math.floor(Math.random()*s).toString(o)+r}var E=parseInt(r,o);return E!==1/0&&E>=Math.pow(2,e)?t(e,o):r};t.rack=function(e,o,a){var n=function(n){var r=0;do{if(r++>10){if(!a)throw new Error("too many ID collisions, use more bits");e+=a}var s=t(e,o)}while(Object.hasOwnProperty.call(i,s));return i[s]=n,s},i=n.hats={};return n.get=function(e){return n.hats[e]},n.set=function(e,t){return n.hats[e]=t,n},n.bits=e||128,n.base=o||16,n}},7631:function(e){var t;"undefined"!=typeof window&&(t=function(){return(function(e){var t={};function o(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(a,n,function(t){return e[t]}.bind(null,n));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="/dist/",o(o.s="./src/hls.ts")})({"./node_modules/eventemitter3/index.js":function(e,t,o){"use strict";var a=Object.prototype.hasOwnProperty,n="~";function i(){}function r(e,t,o){this.fn=e,this.context=t,this.once=o||!1}function s(e,t,o,a,i){if("function"!=typeof o)throw new TypeError("The listener must be a function");var s=new r(o,a||e,i),E=n?n+t:t;return e._events[E]?e._events[E].fn?e._events[E]=[e._events[E],s]:e._events[E].push(s):(e._events[E]=s,e._eventsCount++),e}function E(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function _(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),_.prototype.eventNames=function(){var e,t,o=[];if(0===this._eventsCount)return o;for(t in e=this._events)a.call(e,t)&&o.push(n?t.slice(1):t);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o},_.prototype.listeners=function(e){var t=n?n+e:e,o=this._events[t];if(!o)return[];if(o.fn)return[o.fn];for(var a=0,i=o.length,r=new Array(i);a<i;a++)r[a]=o[a].fn;return r},_.prototype.listenerCount=function(e){var t=n?n+e:e,o=this._events[t];return o?o.fn?1:o.length:0},_.prototype.emit=function(e,t,o,a,i,r){var s=n?n+e:e;if(!this._events[s])return!1;var E,_,T=this._events[s],l=arguments.length;if(T.fn){switch(T.once&&this.removeListener(e,T.fn,void 0,!0),l){case 1:return T.fn.call(T.context),!0;case 2:return T.fn.call(T.context,t),!0;case 3:return T.fn.call(T.context,t,o),!0;case 4:return T.fn.call(T.context,t,o,a),!0;case 5:return T.fn.call(T.context,t,o,a,i),!0;case 6:return T.fn.call(T.context,t,o,a,i,r),!0}for(_=1,E=new Array(l-1);_<l;_++)E[_-1]=arguments[_];T.fn.apply(T.context,E)}else{var S,u=T.length;for(_=0;_<u;_++)switch(T[_].once&&this.removeListener(e,T[_].fn,void 0,!0),l){case 1:T[_].fn.call(T[_].context);break;case 2:T[_].fn.call(T[_].context,t);break;case 3:T[_].fn.call(T[_].context,t,o);break;case 4:T[_].fn.call(T[_].context,t,o,a);break;default:if(!E)for(S=1,E=new Array(l-1);S<l;S++)E[S-1]=arguments[S];T[_].fn.apply(T[_].context,E)}}return!0},_.prototype.on=function(e,t,o){return s(this,e,t,o,!1)},_.prototype.once=function(e,t,o){return s(this,e,t,o,!0)},_.prototype.removeListener=function(e,t,o,a){var i=n?n+e:e;if(!this._events[i])return this;if(!t)return E(this,i),this;var r=this._events[i];if(r.fn)r.fn!==t||a&&!r.once||o&&r.context!==o||E(this,i);else{for(var s=0,_=[],T=r.length;s<T;s++)(r[s].fn!==t||a&&!r[s].once||o&&r[s].context!==o)&&_.push(r[s]);_.length?this._events[i]=1===_.length?_[0]:_:E(this,i)}return this},_.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&E(this,t)):(this._events=new i,this._eventsCount=0),this},_.prototype.off=_.prototype.removeListener,_.prototype.addListener=_.prototype.on,_.prefixed=n,_.EventEmitter=_,e.exports=_},"./node_modules/url-toolkit/src/url-toolkit.js":function(e,t,o){var a,n,i,r,s;a=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,n=/^(?=([^\/?#]*))\1([^]*)$/,i=/(?:\/|^)\.(?=\/)/g,r=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,s={buildAbsoluteURL:function(e,t,o){if(o=o||{},e=e.trim(),!(t=t.trim())){if(!o.alwaysNormalize)return e;var a=s.parseURL(e);if(!a)throw new Error("Error trying to parse base URL.");return a.path=s.normalizePath(a.path),s.buildURLFromParts(a)}var i=s.parseURL(t);if(!i)throw new Error("Error trying to parse relative URL.");if(i.scheme)return o.alwaysNormalize?(i.path=s.normalizePath(i.path),s.buildURLFromParts(i)):t;var r=s.parseURL(e);if(!r)throw new Error("Error trying to parse base URL.");if(!r.netLoc&&r.path&&"/"!==r.path[0]){var E=n.exec(r.path);r.netLoc=E[1],r.path=E[2]}r.netLoc&&!r.path&&(r.path="/");var _={scheme:r.scheme,netLoc:i.netLoc,path:null,params:i.params,query:i.query,fragment:i.fragment};if(!i.netLoc&&(_.netLoc=r.netLoc,"/"!==i.path[0]))if(i.path){var T=r.path,l=T.substring(0,T.lastIndexOf("/")+1)+i.path;_.path=s.normalizePath(l)}else _.path=r.path,i.params||(_.params=r.params,i.query||(_.query=r.query));return null===_.path&&(_.path=o.alwaysNormalize?s.normalizePath(i.path):i.path),s.buildURLFromParts(_)},parseURL:function(e){var t=a.exec(e);return t?{scheme:t[1]||"",netLoc:t[2]||"",path:t[3]||"",params:t[4]||"",query:t[5]||"",fragment:t[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(i,"");e.length!==(e=e.replace(r,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=s},"./node_modules/webworkify-webpack/index.js":function(e,t,o){function a(e){var t={};function o(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=e,o.c=t,o.i=function(e){return e},o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},o.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="/",o.oe=function(e){throw console.error(e),e};var a=o(o.s=ENTRY_MODULE);return a.default||a}var n="[\\.|\\-|\\+|\\w|/|@]+",i="\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)";function r(e){return(e+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function s(e,t,a){var s={};s[a]=[];var E=t.toString(),_=E.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);if(!_)return s;for(var T,l=_[1],S=new RegExp("(\\\\n|\\W)"+r(l)+i,"g");T=S.exec(E);)"dll-reference"!==T[3]&&s[a].push(T[3]);for(S=new RegExp("\\("+r(l)+'\\("(dll-reference\\s('+n+'))"\\)\\)'+i,"g");T=S.exec(E);)e[T[2]]||(s[a].push(T[1]),e[T[2]]=o(T[1]).m),s[T[2]]=s[T[2]]||[],s[T[2]].push(T[4]);for(var u,d=Object.keys(s),c=0;c<d.length;c++)for(var A=0;A<s[d[c]].length;A++)u=s[d[c]][A],isNaN(1*u)||(s[d[c]][A]=1*s[d[c]][A]);return s}function E(e){return Object.keys(e).reduce((function(t,o){return t||e[o].length>0}),!1)}e.exports=function(e,t){t=t||{};var n={main:o.m},i=t.all?{main:Object.keys(n.main)}:(function(e,t){for(var o={main:[t]},a={main:[]},n={main:{}};E(o);)for(var i=Object.keys(o),r=0;r<i.length;r++){var _=i[r],T=o[_].pop();if(n[_]=n[_]||{},!n[_][T]&&e[_][T]){n[_][T]=!0,a[_]=a[_]||[],a[_].push(T);for(var l=s(e,e[_][T],_),S=Object.keys(l),u=0;u<S.length;u++)o[S[u]]=o[S[u]]||[],o[S[u]]=o[S[u]].concat(l[S[u]])}}return a})(n,e),r="";Object.keys(i).filter((function(e){return"main"!==e})).forEach((function(e){for(var t=0;i[e][t];)t++;i[e].push(t),n[e][t]="(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",r=r+"var "+e+" = ("+a.toString().replace("ENTRY_MODULE",JSON.stringify(t))+")({"+i[e].map((function(t){return JSON.stringify(t)+": "+n[e][t].toString()})).join(",")+"});\n"})),r=r+"new (("+a.toString().replace("ENTRY_MODULE",JSON.stringify(e))+")({"+i.main.map((function(e){return JSON.stringify(e)+": "+n.main[e].toString()})).join(",")+"}))(self);";var _=new window.Blob([r],{type:"text/javascript"});if(t.bare)return _;var T=(window.URL||window.webkitURL||window.mozURL||window.msURL).createObjectURL(_),l=new window.Worker(T);return l.objectURL=T,l}},"./src/config.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"hlsDefaultConfig",(function(){return h})),o.d(t,"mergeConfig",(function(){return L})),o.d(t,"enableStreamingMode",(function(){return f}));var a=o("./src/controller/abr-controller.ts"),n=o("./src/controller/audio-stream-controller.ts"),i=o("./src/controller/audio-track-controller.ts"),r=o("./src/controller/subtitle-stream-controller.ts"),s=o("./src/controller/subtitle-track-controller.ts"),E=o("./src/controller/buffer-controller.ts"),_=o("./src/controller/timeline-controller.ts"),T=o("./src/controller/cap-level-controller.ts"),l=o("./src/controller/fps-controller.ts"),S=o("./src/controller/eme-controller.ts"),u=o("./src/controller/cmcd-controller.ts"),d=o("./src/utils/xhr-loader.ts"),c=o("./src/utils/fetch-loader.ts"),A=o("./src/utils/cues.ts"),I=o("./src/utils/mediakeys-helper.ts"),O=o("./src/utils/logger.ts");function N(){return N=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},N.apply(this,arguments)}function R(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function m(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?R(Object(o),!0).forEach((function(t){p(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):R(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function p(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var h=m(m({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,startLevel:void 0,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:d.default,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:a.default,bufferController:E.default,capLevelController:T.default,fpsController:l.default,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystemOptions:{},requestMediaKeySystemAccessFunc:I.requestMediaKeySystemAccess,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0},{cueHandler:A.default,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:r.SubtitleStreamController,subtitleTrackController:s.default,timelineController:_.TimelineController,audioStreamController:n.default,audioTrackController:i.default,emeController:S.default,cmcdController:u.default});function L(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');return N({},e,t)}function f(e){var t=e.loader;t!==c.default&&t!==d.default?(O.logger.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1):Object(c.fetchSupported)()&&(e.loader=c.default,e.progressive=!0,e.enableSoftwareAES=!0,O.logger.log("[config]: Progressive streaming enabled, using FetchLoader"))}},"./src/controller/abr-controller.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/polyfills/number.ts"),n=o("./src/utils/ewma-bandwidth-estimator.ts"),i=o("./src/events.ts"),r=o("./src/utils/buffer-helper.ts"),s=o("./src/errors.ts"),E=o("./src/types/loader.ts"),_=o("./src/utils/logger.ts");function T(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}var l=(function(){function e(e){this.hls=void 0,this.lastLoadedFragLevel=0,this._nextAutoLevel=-1,this.timer=void 0,this.onCheck=this._abandonRulesCheck.bind(this),this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this.hls=e;var t=e.config;this.bwEstimator=new n.default(t.abrEwmaSlowVoD,t.abrEwmaFastVoD,t.abrEwmaDefaultEstimate),this.registerListeners()}var t,o,l,S=e.prototype;return S.registerListeners=function(){var e=this.hls;e.on(i.Events.FRAG_LOADING,this.onFragLoading,this),e.on(i.Events.FRAG_LOADED,this.onFragLoaded,this),e.on(i.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.on(i.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(i.Events.ERROR,this.onError,this)},S.unregisterListeners=function(){var e=this.hls;e.off(i.Events.FRAG_LOADING,this.onFragLoading,this),e.off(i.Events.FRAG_LOADED,this.onFragLoaded,this),e.off(i.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.off(i.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(i.Events.ERROR,this.onError,this)},S.destroy=function(){this.unregisterListeners(),this.clearTimer(),this.hls=this.onCheck=null,this.fragCurrent=this.partCurrent=null},S.onFragLoading=function(e,t){var o,a=t.frag;a.type===E.PlaylistLevelType.MAIN&&(this.timer||(this.fragCurrent=a,this.partCurrent=null!=(o=t.part)?o:null,this.timer=self.setInterval(this.onCheck,100)))},S.onLevelLoaded=function(e,t){var o=this.hls.config;t.details.live?this.bwEstimator.update(o.abrEwmaSlowLive,o.abrEwmaFastLive):this.bwEstimator.update(o.abrEwmaSlowVoD,o.abrEwmaFastVoD)},S._abandonRulesCheck=function(){var e=this.fragCurrent,t=this.partCurrent,o=this.hls,n=o.autoLevelEnabled,s=o.config,E=o.media;if(e&&E){var T=t?t.stats:e.stats,l=t?t.duration:e.duration;if(T.aborted)return _.logger.warn("frag loader destroy or aborted, disarm abandonRules"),this.clearTimer(),void(this._nextAutoLevel=-1);if(n&&!E.paused&&E.playbackRate&&E.readyState){var S=performance.now()-T.loading.start,u=Math.abs(E.playbackRate);if(!(S<=500*l/u)){var d=o.levels,c=o.minAutoLevel,A=d[e.level],I=T.total||Math.max(T.loaded,Math.round(l*A.maxBitrate/8)),O=Math.max(1,T.bwEstimate?T.bwEstimate/8:1e3*T.loaded/S),N=(I-T.loaded)/O,R=E.currentTime,m=(r.BufferHelper.bufferInfo(E,R,s.maxBufferHole).end-R)/u;if(!(m>=2*l/u||N<=m)){var p,h=Number.POSITIVE_INFINITY;for(p=e.level-1;p>c&&!((h=l*d[p].maxBitrate/(6.4*O))<m);p--);if(!(h>=N)){var L=this.bwEstimator.getEstimate();_.logger.warn("Fragment "+e.sn+(t?" part "+t.index:"")+" of level "+e.level+" is loading too slowly and will cause an underbuffer; aborting and switching to level "+p+"\n Current BW estimate: "+(Object(a.isFiniteNumber)(L)?(L/1024).toFixed(3):"Unknown")+" Kb/s\n Estimated load time for current fragment: "+N.toFixed(3)+" s\n Estimated load time for the next fragment: "+h.toFixed(3)+" s\n Time to underbuffer: "+m.toFixed(3)+" s"),o.nextLoadLevel=p,this.bwEstimator.sample(S,T.loaded),this.clearTimer(),e.loader&&(this.fragCurrent=this.partCurrent=null,e.loader.abort()),o.trigger(i.Events.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:T})}}}}}},S.onFragLoaded=function(e,t){var o=t.frag,n=t.part;if(o.type===E.PlaylistLevelType.MAIN&&Object(a.isFiniteNumber)(o.sn)){var r=n?n.stats:o.stats,s=n?n.duration:o.duration;if(this.clearTimer(),this.lastLoadedFragLevel=o.level,this._nextAutoLevel=-1,this.hls.config.abrMaxWithRealBitrate){var _=this.hls.levels[o.level],T=(_.loaded?_.loaded.bytes:0)+r.loaded,l=(_.loaded?_.loaded.duration:0)+s;_.loaded={bytes:T,duration:l},_.realBitrate=Math.round(8*T/l)}if(o.bitrateTest){var S={stats:r,frag:o,part:n,id:o.type};this.onFragBuffered(i.Events.FRAG_BUFFERED,S)}}},S.onFragBuffered=function(e,t){var o=t.frag,a=t.part,n=a?a.stats:o.stats;if(!n.aborted&&o.type===E.PlaylistLevelType.MAIN&&"initSegment"!==o.sn){var i=n.parsing.end-n.loading.start;this.bwEstimator.sample(i,n.loaded),n.bwEstimate=this.bwEstimator.getEstimate(),o.bitrateTest?this.bitrateTestDelay=i/1e3:this.bitrateTestDelay=0}},S.onError=function(e,t){switch(t.details){case s.ErrorDetails.FRAG_LOAD_ERROR:case s.ErrorDetails.FRAG_LOAD_TIMEOUT:this.clearTimer()}},S.clearTimer=function(){self.clearInterval(this.timer),this.timer=void 0},S.getNextABRAutoLevel=function(){var e=this.fragCurrent,t=this.partCurrent,o=this.hls,a=o.maxAutoLevel,n=o.config,i=o.minAutoLevel,s=o.media,E=t?t.duration:e?e.duration:0,T=s?s.currentTime:0,l=s&&0!==s.playbackRate?Math.abs(s.playbackRate):1,S=this.bwEstimator?this.bwEstimator.getEstimate():n.abrEwmaDefaultEstimate,u=(r.BufferHelper.bufferInfo(s,T,n.maxBufferHole).end-T)/l,d=this.findBestLevel(S,i,a,u,n.abrBandWidthFactor,n.abrBandWidthUpFactor);if(d>=0)return d;_.logger.trace((u?"rebuffering expected":"buffer is empty")+", finding optimal quality level");var c=E?Math.min(E,n.maxStarvationDelay):n.maxStarvationDelay,A=n.abrBandWidthFactor,I=n.abrBandWidthUpFactor;if(!u){var O=this.bitrateTestDelay;O&&(c=(E?Math.min(E,n.maxLoadingDelay):n.maxLoadingDelay)-O,_.logger.trace("bitrate test took "+Math.round(1e3*O)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*c)+" ms"),A=I=1)}return d=this.findBestLevel(S,i,a,u+c,A,I),Math.max(d,0)},S.findBestLevel=function(e,t,o,a,n,i){for(var r,s=this.fragCurrent,E=this.partCurrent,T=this.lastLoadedFragLevel,l=this.hls.levels,S=l[T],u=!(null==S||null===(r=S.details)||void 0===r||!r.live),d=null==S?void 0:S.codecSet,c=E?E.duration:s?s.duration:0,A=o;A>=t;A--){var I=l[A];if(I&&(!d||I.codecSet===d)){var O=I.details,N=(E?null==O?void 0:O.partTarget:null==O?void 0:O.averagetargetduration)||c,R=void 0;R=A<=T?n*e:i*e;var m=l[A].maxBitrate,p=m*N/R;if(_.logger.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: "+A+"/"+Math.round(R)+"/"+m+"/"+N+"/"+a+"/"+p),R>m&&(!p||u&&!this.bitrateTestDelay||p<a))return A}}return-1},t=e,(o=[{key:"nextAutoLevel",get:function(){var e=this._nextAutoLevel,t=this.bwEstimator;if(-1!==e&&!t.canEstimate())return e;var o=this.getNextABRAutoLevel();return-1!==e&&this.hls.levels[o].loadError?e:(-1!==e&&(o=Math.min(e,o)),o)},set:function(e){this._nextAutoLevel=e}}])&&T(t.prototype,o),l&&T(t,l),Object.defineProperty(t,"prototype",{writable:!1}),e})();t.default=l},"./src/controller/audio-stream-controller.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/polyfills/number.ts"),n=o("./src/controller/base-stream-controller.ts"),i=o("./src/events.ts"),r=o("./src/utils/buffer-helper.ts"),s=o("./src/controller/fragment-tracker.ts"),E=o("./src/types/level.ts"),_=o("./src/types/loader.ts"),T=o("./src/loader/fragment.ts"),l=o("./src/demux/chunk-cache.ts"),S=o("./src/demux/transmuxer-interface.ts"),u=o("./src/types/transmuxer.ts"),d=o("./src/controller/fragment-finders.ts"),c=o("./src/utils/discontinuities.ts"),A=o("./src/errors.ts");function I(){return I=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},I.apply(this,arguments)}function O(e,t){return O=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},O(e,t)}var N=(function(e){var t,o;function N(t,o){var a;return(a=e.call(this,t,o,"[audio-stream-controller]")||this).videoBuffer=null,a.videoTrackCC=-1,a.waitingVideoCC=-1,a.audioSwitch=!1,a.trackId=-1,a.waitingData=null,a.mainDetails=null,a.bufferFlushed=!1,a.cachedTrackLoadedData=null,a._registerListeners(),a}o=e,(t=N).prototype=Object.create(o.prototype),t.prototype.constructor=t,O(t,o);var R=N.prototype;return R.onHandlerDestroying=function(){this._unregisterListeners(),this.mainDetails=null},R._registerListeners=function(){var e=this.hls;e.on(i.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(i.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(i.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(i.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(i.Events.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),e.on(i.Events.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(i.Events.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(i.Events.ERROR,this.onError,this),e.on(i.Events.BUFFER_RESET,this.onBufferReset,this),e.on(i.Events.BUFFER_CREATED,this.onBufferCreated,this),e.on(i.Events.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(i.Events.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(i.Events.FRAG_BUFFERED,this.onFragBuffered,this)},R._unregisterListeners=function(){var e=this.hls;e.off(i.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(i.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(i.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(i.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(i.Events.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),e.off(i.Events.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(i.Events.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(i.Events.ERROR,this.onError,this),e.off(i.Events.BUFFER_RESET,this.onBufferReset,this),e.off(i.Events.BUFFER_CREATED,this.onBufferCreated,this),e.off(i.Events.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(i.Events.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(i.Events.FRAG_BUFFERED,this.onFragBuffered,this)},R.onInitPtsFound=function(e,t){var o=t.frag,a=t.id,i=t.initPTS;if("main"===a){var r=o.cc;this.initPTS[o.cc]=i,this.log("InitPTS for cc: "+r+" found from main: "+i),this.videoTrackCC=r,this.state===n.State.WAITING_INIT_PTS&&this.tick()}},R.startLoad=function(e){if(!this.levels)return this.startPosition=e,void(this.state=n.State.STOPPED);var t=this.lastCurrentTime;this.stopLoad(),this.setInterval(100),this.fragLoadError=0,t>0&&-1===e?(this.log("Override startPosition with lastCurrentTime @"+t.toFixed(3)),e=t,this.state=n.State.IDLE):(this.loadedmetadata=!1,this.state=n.State.WAITING_TRACK),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()},R.doTick=function(){switch(this.state){case n.State.IDLE:this.doTickIdle();break;case n.State.WAITING_TRACK:var t,o=this.levels,a=this.trackId,i=null==o||null===(t=o[a])||void 0===t?void 0:t.details;if(i){if(this.waitForCdnTuneIn(i))break;this.state=n.State.WAITING_INIT_PTS}break;case n.State.FRAG_LOADING_WAITING_RETRY:var s,E=performance.now(),_=this.retryDate;(!_||E>=_||null!==(s=this.media)&&void 0!==s&&s.seeking)&&(this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded(this.trackId),this.state=n.State.IDLE);break;case n.State.WAITING_INIT_PTS:var T=this.waitingData;if(T){var l=T.frag,S=T.part,u=T.cache,c=T.complete;if(void 0!==this.initPTS[l.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=n.State.FRAG_LOADING;var A={frag:l,part:S,payload:u.flush(),networkDetails:null};this._handleFragmentLoadProgress(A),c&&e.prototype._handleFragmentLoadComplete.call(this,A)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log("Waiting fragment cc ("+l.cc+") cancelled because video is at cc "+this.videoTrackCC),this.clearWaitingFragment();else{var I=this.getLoadPosition(),O=r.BufferHelper.bufferInfo(this.mediaBuffer,I,this.config.maxBufferHole);Object(d.fragmentWithinToleranceTest)(O.end,this.config.maxFragLookUpTolerance,l)<0&&(this.log("Waiting fragment cc ("+l.cc+") @ "+l.start+" cancelled because another fragment at "+O.end+" is needed"),this.clearWaitingFragment())}}else this.state=n.State.IDLE}this.onTickEnd()},R.clearWaitingFragment=function(){var e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=n.State.IDLE)},R.resetLoadingState=function(){this.clearWaitingFragment(),e.prototype.resetLoadingState.call(this)},R.onTickEnd=function(){var e=this.media;if(e&&e.readyState){var t=(this.mediaBuffer?this.mediaBuffer:e).buffered;!this.loadedmetadata&&t.length&&(this.loadedmetadata=!0),this.lastCurrentTime=e.currentTime}},R.doTickIdle=function(){var e,t,o=this.hls,a=this.levels,r=this.media,s=this.trackId,E=o.config;if(a&&a[s]&&(r||!this.startFragRequested&&E.startFragPrefetch)){var l=a[s].details;if(!l||l.live&&this.levelLastLoaded!==s||this.waitForCdnTuneIn(l))this.state=n.State.WAITING_TRACK;else{var S=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&S&&(this.bufferFlushed=!1,this.afterBufferFlushed(S,T.ElementaryStreamTypes.AUDIO,_.PlaylistLevelType.AUDIO));var u=this.getFwdBufferInfo(S,_.PlaylistLevelType.AUDIO);if(null!==u){var d=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,_.PlaylistLevelType.MAIN),c=u.len,A=this.getMaxBufferLength(null==d?void 0:d.len),I=this.audioSwitch;if(!(c>=A)||I){if(!I&&this._streamEnded(u,l))return o.trigger(i.Events.BUFFER_EOS,{type:"audio"}),void(this.state=n.State.ENDED);var O=l.fragments[0].start,N=u.end;if(I&&r){var R=this.getLoadPosition();N=R,l.PTSKnown&&R<O&&(u.end>O||u.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),r.currentTime=O+.05)}if(!(d&&N>d.end+l.targetduration)&&(d&&d.len||!u.len)){var m=this.getNextFragment(N,l);m?"identity"!==(null===(e=m.decryptdata)||void 0===e?void 0:e.keyFormat)||null!==(t=m.decryptdata)&&void 0!==t&&t.key?this.loadFragment(m,l,N):this.loadKey(m,l):this.bufferFlushed=!0}}}}}},R.getMaxBufferLength=function(t){var o=e.prototype.getMaxBufferLength.call(this);return t?Math.max(o,t):o},R.onMediaDetaching=function(){this.videoBuffer=null,e.prototype.onMediaDetaching.call(this)},R.onAudioTracksUpdated=function(e,t){var o=t.audioTracks;this.resetTransmuxer(),this.levels=o.map((function(e){return new E.Level(e)}))},R.onAudioTrackSwitching=function(e,t){var o=!!t.url;this.trackId=t.id;var a=this.fragCurrent;null!=a&&a.loader&&a.loader.abort(),this.fragCurrent=null,this.clearWaitingFragment(),o?this.setInterval(100):this.resetTransmuxer(),o?(this.audioSwitch=!0,this.state=n.State.IDLE):this.state=n.State.STOPPED,this.tick()},R.onManifestLoading=function(){this.mainDetails=null,this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=!1},R.onLevelLoaded=function(e,t){this.mainDetails=t.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(i.Events.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)},R.onAudioTrackLoaded=function(e,t){var o;if(null!=this.mainDetails){var a=this.levels,i=t.details,r=t.id;if(a){this.log("Track "+r+" loaded ["+i.startSN+","+i.endSN+"],duration:"+i.totalduration);var s=a[r],E=0;if(i.live||null!==(o=s.details)&&void 0!==o&&o.live){var _=this.mainDetails;if(i.fragments[0]||(i.deltaUpdateFailed=!0),i.deltaUpdateFailed||!_)return;!s.details&&i.hasProgramDateTime&&_.hasProgramDateTime?(Object(c.alignMediaPlaylistByPDT)(i,_),E=i.fragments[0].start):E=this.alignPlaylists(i,s.details)}s.details=i,this.levelLastLoaded=r,this.startFragRequested||!this.mainDetails&&i.live||this.setStartPosition(s.details,E),this.state!==n.State.WAITING_TRACK||this.waitForCdnTuneIn(i)||(this.state=n.State.IDLE),this.tick()}else this.warn("Audio tracks were reset while loading level "+r)}else this.cachedTrackLoadedData=t},R._handleFragmentLoadProgress=function(e){var t,o=e.frag,a=e.part,i=e.payload,r=this.config,s=this.trackId,E=this.levels;if(E){var T=E[s];console.assert(T,"Audio track is defined on fragment load progress");var d=T.details;console.assert(d,"Audio track details are defined on fragment load progress");var c=r.defaultAudioCodec||T.audioCodec||"mp4a.40.2",A=this.transmuxer;A||(A=this.transmuxer=new S.default(this.hls,_.PlaylistLevelType.AUDIO,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));var I=this.initPTS[o.cc],O=null===(t=o.initSegment)||void 0===t?void 0:t.data;if(void 0!==I){var N=a?a.index:-1,R=-1!==N,m=new u.ChunkMetadata(o.level,o.sn,o.stats.chunkCount,i.byteLength,N,R);A.push(i,O,c,"",o,a,d.totalduration,!1,m,I)}else this.log("Unknown video PTS for cc "+o.cc+", waiting for video PTS before demuxing audio frag "+o.sn+" of ["+d.startSN+" ,"+d.endSN+"],track "+s),(this.waitingData=this.waitingData||{frag:o,part:a,cache:new l.default,complete:!1}).cache.push(new Uint8Array(i)),this.waitingVideoCC=this.videoTrackCC,this.state=n.State.WAITING_INIT_PTS}else this.warn("Audio tracks were reset while fragment load was in progress. Fragment "+o.sn+" of level "+o.level+" will not be buffered")},R._handleFragmentLoadComplete=function(t){this.waitingData?this.waitingData.complete=!0:e.prototype._handleFragmentLoadComplete.call(this,t)},R.onBufferReset=function(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1},R.onBufferCreated=function(e,t){var o=t.tracks.audio;o&&(this.mediaBuffer=o.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)},R.onFragBuffered=function(e,t){var o=t.frag,a=t.part;o.type===_.PlaylistLevelType.AUDIO&&(this.fragContextChanged(o)?this.warn("Fragment "+o.sn+(a?" p: "+a.index:"")+" of level "+o.level+" finished buffering, but was aborted. state: "+this.state+", audioSwitch: "+this.audioSwitch):("initSegment"!==o.sn&&(this.fragPrevious=o,this.audioSwitch&&(this.audioSwitch=!1,this.hls.trigger(i.Events.AUDIO_TRACK_SWITCHED,{id:this.trackId}))),this.fragBufferedComplete(o,a)))},R.onError=function(t,o){switch(o.details){case A.ErrorDetails.FRAG_LOAD_ERROR:case A.ErrorDetails.FRAG_LOAD_TIMEOUT:case A.ErrorDetails.KEY_LOAD_ERROR:case A.ErrorDetails.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(_.PlaylistLevelType.AUDIO,o);break;case A.ErrorDetails.AUDIO_TRACK_LOAD_ERROR:case A.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:this.state!==n.State.ERROR&&this.state!==n.State.STOPPED&&(this.state=o.fatal?n.State.ERROR:n.State.IDLE,this.warn(o.details+" while loading frag, switching to "+this.state+" state"));break;case A.ErrorDetails.BUFFER_FULL_ERROR:if("audio"===o.parent&&(this.state===n.State.PARSING||this.state===n.State.PARSED)){var a=!0,i=this.getFwdBufferInfo(this.mediaBuffer,_.PlaylistLevelType.AUDIO);i&&i.len>.5&&(a=!this.reduceMaxBufferLength(i.len)),a&&(this.warn("Buffer full error also media.currentTime is not buffered, flush audio buffer"),this.fragCurrent=null,e.prototype.flushMainBuffer.call(this,0,Number.POSITIVE_INFINITY,"audio")),this.resetLoadingState()}}},R.onBufferFlushed=function(e,t){t.type===T.ElementaryStreamTypes.AUDIO&&(this.bufferFlushed=!0)},R._handleTransmuxComplete=function(e){var t,o="audio",a=this.hls,r=e.remuxResult,s=e.chunkMeta,E=this.getCurrentContext(s);if(!E)return this.warn("The loading context changed while buffering fragment "+s.sn+" of level "+s.level+". This chunk will not be buffered."),void this.resetStartWhenNotLoaded(s.level);var _=E.frag,l=E.part,S=E.level.details,u=r.audio,d=r.text,c=r.id3,A=r.initSegment;if(!this.fragContextChanged(_)&&S){if(this.state=n.State.PARSING,this.audioSwitch&&u&&this.completeAudioSwitch(),null!=A&&A.tracks&&(this._bufferInitSegment(A.tracks,_,s),a.trigger(i.Events.FRAG_PARSING_INIT_SEGMENT,{frag:_,id:o,tracks:A.tracks})),u){var O=u.startPTS,N=u.endPTS,R=u.startDTS,m=u.endDTS;l&&(l.elementaryStreams[T.ElementaryStreamTypes.AUDIO]={startPTS:O,endPTS:N,startDTS:R,endDTS:m}),_.setElementaryStreamInfo(T.ElementaryStreamTypes.AUDIO,O,N,R,m),this.bufferFragmentData(u,_,l,s)}if(null!=c&&null!==(t=c.samples)&&void 0!==t&&t.length){var p=I({id:o,frag:_,details:S},c);a.trigger(i.Events.FRAG_PARSING_METADATA,p)}if(d){var h=I({id:o,frag:_,details:S},d);a.trigger(i.Events.FRAG_PARSING_USERDATA,h)}}},R._bufferInitSegment=function(e,t,o){if(this.state===n.State.PARSING){e.video&&delete e.video;var a=e.audio;if(a){a.levelCodec=a.codec,a.id="audio",this.log("Init audio buffer, container:"+a.container+", codecs[parsed]=["+a.codec+"]"),this.hls.trigger(i.Events.BUFFER_CODECS,e);var r=a.initSegment;if(null!=r&&r.byteLength){var s={type:"audio",frag:t,part:null,chunkMeta:o,parent:t.type,data:r};this.hls.trigger(i.Events.BUFFER_APPENDING,s)}this.tick()}}},R.loadFragment=function(t,o,i){var r=this.fragmentTracker.getState(t);this.fragCurrent=t,(this.audioSwitch||r===s.FragmentState.NOT_LOADED||r===s.FragmentState.PARTIAL)&&("initSegment"===t.sn?this._loadInitSegment(t):o.live&&!Object(a.isFiniteNumber)(this.initPTS[t.cc])?(this.log("Waiting for video PTS in continuity counter "+t.cc+" of live stream before loading audio fragment "+t.sn+" of level "+this.trackId),this.state=n.State.WAITING_INIT_PTS):(this.startFragRequested=!0,e.prototype.loadFragment.call(this,t,o,i)))},R.completeAudioSwitch=function(){var t=this.hls,o=this.media,a=this.trackId;o&&(this.log("Switching audio track : flushing all audio"),e.prototype.flushMainBuffer.call(this,0,Number.POSITIVE_INFINITY,"audio")),this.audioSwitch=!1,t.trigger(i.Events.AUDIO_TRACK_SWITCHED,{id:a})},N})(n.default);t.default=N},"./src/controller/audio-track-controller.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/events.ts"),n=o("./src/errors.ts"),i=o("./src/controller/base-playlist-controller.ts"),r=o("./src/types/loader.ts");function s(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function E(e,t){return E=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},E(e,t)}var _=(function(e){var t,o;function i(t){var o;return(o=e.call(this,t,"[audio-track-controller]")||this).tracks=[],o.groupId=null,o.tracksInGroup=[],o.trackId=-1,o.trackName="",o.selectDefaultTrack=!0,o.registerListeners(),o}o=e,(t=i).prototype=Object.create(o.prototype),t.prototype.constructor=t,E(t,o);var _,T,l,S=i.prototype;return S.registerListeners=function(){var e=this.hls;e.on(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(a.Events.LEVEL_LOADING,this.onLevelLoading,this),e.on(a.Events.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(a.Events.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(a.Events.ERROR,this.onError,this)},S.unregisterListeners=function(){var e=this.hls;e.off(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(a.Events.LEVEL_LOADING,this.onLevelLoading,this),e.off(a.Events.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(a.Events.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(a.Events.ERROR,this.onError,this)},S.destroy=function(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,e.prototype.destroy.call(this)},S.onManifestLoading=function(){this.tracks=[],this.groupId=null,this.tracksInGroup=[],this.trackId=-1,this.trackName="",this.selectDefaultTrack=!0},S.onManifestParsed=function(e,t){this.tracks=t.audioTracks||[]},S.onAudioTrackLoaded=function(e,t){var o=t.id,a=t.details,n=this.tracksInGroup[o];if(n){var i=n.details;n.details=t.details,this.log("audioTrack "+o+" loaded ["+a.startSN+"-"+a.endSN+"]"),o===this.trackId&&(this.retryCount=0,this.playlistLoaded(o,t,i))}else this.warn("Invalid audio track id "+o)},S.onLevelLoading=function(e,t){this.switchLevel(t.level)},S.onLevelSwitching=function(e,t){this.switchLevel(t.level)},S.switchLevel=function(e){var t=this.hls.levels[e];if(null!=t&&t.audioGroupIds){var o=t.audioGroupIds[t.urlId];if(this.groupId!==o){this.groupId=o;var n=this.tracks.filter((function(e){return!o||e.groupId===o}));this.selectDefaultTrack&&!n.some((function(e){return e.default}))&&(this.selectDefaultTrack=!1),this.tracksInGroup=n;var i={audioTracks:n};this.log("Updating audio tracks, "+n.length+' track(s) found in "'+o+'" group-id'),this.hls.trigger(a.Events.AUDIO_TRACKS_UPDATED,i),this.selectInitialTrack()}}},S.onError=function(t,o){e.prototype.onError.call(this,t,o),!o.fatal&&o.context&&o.context.type===r.PlaylistContextType.AUDIO_TRACK&&o.context.id===this.trackId&&o.context.groupId===this.groupId&&this.retryLoadingOrFail(o)},S.setAudioTrack=function(e){var t=this.tracksInGroup;if(e<0||e>=t.length)this.warn("Invalid id passed to audio-track controller");else{this.clearTimer();var o=t[this.trackId];this.log("Now switching to audio-track index "+e);var n=t[e],i=n.id,r=n.groupId,s=void 0===r?"":r,E=n.name,_=n.type,T=n.url;if(this.trackId=e,this.trackName=E,this.selectDefaultTrack=!1,this.hls.trigger(a.Events.AUDIO_TRACK_SWITCHING,{id:i,groupId:s,name:E,type:_,url:T}),!n.details||n.details.live){var l=this.switchParams(n.url,null==o?void 0:o.details);this.loadPlaylist(l)}}},S.selectInitialTrack=function(){var e=this.tracksInGroup;console.assert(e.length,"Initial audio track should be selected when tracks are known");var t=this.trackName,o=this.findTrackId(t)||this.findTrackId();-1!==o?this.setAudioTrack(o):(this.warn("No track found for running audio group-ID: "+this.groupId),this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.AUDIO_TRACK_LOAD_ERROR,fatal:!0}))},S.findTrackId=function(e){for(var t=this.tracksInGroup,o=0;o<t.length;o++){var a=t[o];if((!this.selectDefaultTrack||a.default)&&(!e||e===a.name))return a.id}return-1},S.loadPlaylist=function(e){var t=this.tracksInGroup[this.trackId];if(this.shouldLoadTrack(t)){var o=t.id,n=t.groupId,i=t.url;if(e)try{i=e.addDirectives(i)}catch(e){this.warn("Could not construct new URL with HLS Delivery Directives: "+e)}this.log("loading audio-track playlist for id: "+o),this.clearTimer(),this.hls.trigger(a.Events.AUDIO_TRACK_LOADING,{url:i,id:o,groupId:n,deliveryDirectives:e||null})}},_=i,(T=[{key:"audioTracks",get:function(){return this.tracksInGroup}},{key:"audioTrack",get:function(){return this.trackId},set:function(e){this.selectDefaultTrack=!1,this.setAudioTrack(e)}}])&&s(_.prototype,T),l&&s(_,l),Object.defineProperty(_,"prototype",{writable:!1}),i})(i.default);t.default=_},"./src/controller/base-playlist-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return E}));var a=o("./src/polyfills/number.ts"),n=o("./src/types/level.ts"),i=o("./src/controller/level-helper.ts"),r=o("./src/utils/logger.ts"),s=o("./src/errors.ts"),E=(function(){function e(e,t){this.hls=void 0,this.timer=-1,this.canLoad=!1,this.retryCount=0,this.log=void 0,this.warn=void 0,this.log=r.logger.log.bind(r.logger,t+":"),this.warn=r.logger.warn.bind(r.logger,t+":"),this.hls=e}var t=e.prototype;return t.destroy=function(){this.clearTimer(),this.hls=this.log=this.warn=null},t.onError=function(e,t){t.fatal&&t.type===s.ErrorTypes.NETWORK_ERROR&&this.clearTimer()},t.clearTimer=function(){clearTimeout(this.timer),this.timer=-1},t.startLoad=function(){this.canLoad=!0,this.retryCount=0,this.loadPlaylist()},t.stopLoad=function(){this.canLoad=!1,this.clearTimer()},t.switchParams=function(e,t){var o=null==t?void 0:t.renditionReports;if(o)for(var i=0;i<o.length;i++){var r=o[i],s=""+r.URI;if(s===e.slice(-s.length)){var E=parseInt(r["LAST-MSN"]),_=parseInt(r["LAST-PART"]);if(t&&this.hls.config.lowLatencyMode){var T=Math.min(t.age-t.partTarget,t.targetduration);void 0!==_&&T>t.partTarget&&(_+=1)}if(Object(a.isFiniteNumber)(E))return new n.HlsUrlParameters(E,Object(a.isFiniteNumber)(_)?_:void 0,n.HlsSkip.No)}}},t.loadPlaylist=function(e){},t.shouldLoadTrack=function(e){return this.canLoad&&e&&!!e.url&&(!e.details||e.details.live)},t.playlistLoaded=function(e,t,o){var a=this,n=t.details,r=t.stats,s=r.loading.end?Math.max(0,self.performance.now()-r.loading.end):0;if(n.advancedDateTime=Date.now()-s,n.live||null!=o&&o.live){if(n.reloaded(o),o&&this.log("live playlist "+e+" "+(n.advanced?"REFRESHED "+n.lastPartSn+"-"+n.lastPartIndex:"MISSED")),o&&n.fragments.length>0&&Object(i.mergeDetails)(o,n),!this.canLoad||!n.live)return;var E,_=void 0,T=void 0;if(n.canBlockReload&&n.endSN&&n.advanced){var l=this.hls.config.lowLatencyMode,S=n.lastPartSn,u=n.endSN,d=n.lastPartIndex,c=S===u;-1!==d?(_=c?u+1:S,T=c?l?0:d:d+1):_=u+1;var A=n.age,I=A+n.ageHeader,O=Math.min(I-n.partTarget,1.5*n.targetduration);if(O>0){if(o&&O>o.tuneInGoal)this.warn("CDN Tune-in goal increased from: "+o.tuneInGoal+" to: "+O+" with playlist age: "+n.age),O=0;else{var N=Math.floor(O/n.targetduration);_+=N,void 0!==T&&(T+=Math.round(O%n.targetduration/n.partTarget)),this.log("CDN Tune-in age: "+n.ageHeader+"s last advanced "+A.toFixed(2)+"s goal: "+O+" skip sn "+N+" to part "+T)}n.tuneInGoal=O}if(E=this.getDeliveryDirectives(n,t.deliveryDirectives,_,T),l||!c)return void this.loadPlaylist(E)}else E=this.getDeliveryDirectives(n,t.deliveryDirectives,_,T);var R=Object(i.computeReloadInterval)(n,r);void 0!==_&&n.canBlockReload&&(R-=n.partTarget||1),this.log("reload live playlist "+e+" in "+Math.round(R)+" ms"),this.timer=self.setTimeout((function(){return a.loadPlaylist(E)}),R)}else this.clearTimer()},t.getDeliveryDirectives=function(e,t,o,a){var i=Object(n.getSkipValue)(e,o);return null!=t&&t.skip&&e.deltaUpdateFailed&&(o=t.msn,a=t.part,i=n.HlsSkip.No),new n.HlsUrlParameters(o,a,i)},t.retryLoadingOrFail=function(e){var t,o=this,a=this.hls.config,n=this.retryCount<a.levelLoadingMaxRetry;if(n)if(this.retryCount++,e.details.indexOf("LoadTimeOut")>-1&&null!==(t=e.context)&&void 0!==t&&t.deliveryDirectives)this.warn("retry playlist loading #"+this.retryCount+' after "'+e.details+'"'),this.loadPlaylist();else{var i=Math.min(Math.pow(2,this.retryCount)*a.levelLoadingRetryDelay,a.levelLoadingMaxRetryTimeout);this.timer=self.setTimeout((function(){return o.loadPlaylist()}),i),this.warn("retry playlist loading #"+this.retryCount+" in "+i+' ms after "'+e.details+'"')}else this.warn('cannot recover from error "'+e.details+'"'),this.clearTimer(),e.fatal=!0;return n},e})()},"./src/controller/base-stream-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"State",(function(){return p})),o.d(t,"default",(function(){return h}));var a=o("./src/polyfills/number.ts"),n=o("./src/task-loop.ts"),i=o("./src/controller/fragment-tracker.ts"),r=o("./src/utils/buffer-helper.ts"),s=o("./src/utils/logger.ts"),E=o("./src/events.ts"),_=o("./src/errors.ts"),T=o("./src/types/transmuxer.ts"),l=o("./src/utils/mp4-tools.ts"),S=o("./src/utils/discontinuities.ts"),u=o("./src/controller/fragment-finders.ts"),d=o("./src/controller/level-helper.ts"),c=o("./src/loader/fragment-loader.ts"),A=o("./src/crypt/decrypter.ts"),I=o("./src/utils/time-ranges.ts"),O=o("./src/types/loader.ts");function N(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function R(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e,t){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},m(e,t)}var p={STOPPED:"STOPPED",IDLE:"IDLE",KEY_LOADING:"KEY_LOADING",FRAG_LOADING:"FRAG_LOADING",FRAG_LOADING_WAITING_RETRY:"FRAG_LOADING_WAITING_RETRY",WAITING_TRACK:"WAITING_TRACK",PARSING:"PARSING",PARSED:"PARSED",ENDED:"ENDED",ERROR:"ERROR",WAITING_INIT_PTS:"WAITING_INIT_PTS",WAITING_LEVEL:"WAITING_LEVEL"},h=(function(e){var t,o;function n(t,o,a){var n;return(n=e.call(this)||this).hls=void 0,n.fragPrevious=null,n.fragCurrent=null,n.fragmentTracker=void 0,n.transmuxer=null,n._state=p.STOPPED,n.media=null,n.mediaBuffer=null,n.config=void 0,n.bitrateTest=!1,n.lastCurrentTime=0,n.nextLoadPosition=0,n.startPosition=0,n.loadedmetadata=!1,n.fragLoadError=0,n.retryDate=0,n.levels=null,n.fragmentLoader=void 0,n.levelLastLoaded=null,n.startFragRequested=!1,n.decrypter=void 0,n.initPTS=[],n.onvseeking=null,n.onvended=null,n.logPrefix="",n.log=void 0,n.warn=void 0,n.logPrefix=a,n.log=s.logger.log.bind(s.logger,a+":"),n.warn=s.logger.warn.bind(s.logger,a+":"),n.hls=t,n.fragmentLoader=new c.default(t.config),n.fragmentTracker=o,n.config=t.config,n.decrypter=new A.default(t,t.config),t.on(E.Events.KEY_LOADED,n.onKeyLoaded,R(n)),t.on(E.Events.LEVEL_SWITCHING,n.onLevelSwitching,R(n)),n}o=e,(t=n).prototype=Object.create(o.prototype),t.prototype.constructor=t,m(t,o);var h,L,f,C=n.prototype;return C.doTick=function(){this.onTickEnd()},C.onTickEnd=function(){},C.startLoad=function(e){},C.stopLoad=function(){this.fragmentLoader.abort();var e=this.fragCurrent;e&&this.fragmentTracker.removeFragment(e),this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=p.STOPPED},C._streamEnded=function(e,t){var o=this.fragCurrent,a=this.fragmentTracker;if(!t.live&&o&&this.media&&o.sn>=t.endSN&&!e.nextStart){var n=t.partList;if(null!=n&&n.length){var s=n[n.length-1];return r.BufferHelper.isBuffered(this.media,s.start+s.duration/2)}var E=a.getState(o);return E===i.FragmentState.PARTIAL||E===i.FragmentState.OK}return!1},C.onMediaAttached=function(e,t){var o=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),o.addEventListener("seeking",this.onvseeking),o.addEventListener("ended",this.onvended);var a=this.config;this.levels&&a.autoStartLoad&&this.state===p.STOPPED&&this.startLoad(a.startPosition)},C.onMediaDetaching=function(){var e=this.media;null!=e&&e.ended&&(this.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),e&&this.onvseeking&&this.onvended&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvended=null),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.fragmentTracker.removeAllFragments(),this.stopLoad()},C.onMediaSeeking=function(){var e=this.config,t=this.fragCurrent,o=this.media,n=this.mediaBuffer,i=this.state,s=o?o.currentTime:0,E=r.BufferHelper.bufferInfo(n||o,s,e.maxBufferHole);if(this.log("media seeking to "+(Object(a.isFiniteNumber)(s)?s.toFixed(3):s)+", state: "+i),i===p.ENDED)this.resetLoadingState();else if(t&&!E.len){var _=e.maxFragLookUpTolerance,T=t.start-_,l=s>t.start+t.duration+_;(s<T||l)&&(l&&t.loader&&(this.log("seeking outside of buffer while fragment load in progress, cancel fragment load"),t.loader.abort()),this.resetLoadingState())}o&&(this.lastCurrentTime=s),this.loadedmetadata||E.len||(this.nextLoadPosition=this.startPosition=s),this.tickImmediate()},C.onMediaEnded=function(){this.startPosition=this.lastCurrentTime=0},C.onKeyLoaded=function(e,t){if(this.state===p.KEY_LOADING&&t.frag===this.fragCurrent&&this.levels){this.state=p.IDLE;var o=this.levels[t.frag.level].details;o&&this.loadFragment(t.frag,o,t.frag.start)}},C.onLevelSwitching=function(e,t){this.fragLoadError=0},C.onHandlerDestroying=function(){this.stopLoad(),e.prototype.onHandlerDestroying.call(this)},C.onHandlerDestroyed=function(){this.state=p.STOPPED,this.hls.off(E.Events.KEY_LOADED,this.onKeyLoaded,this),this.hls.off(E.Events.LEVEL_SWITCHING,this.onLevelSwitching,this),this.fragmentLoader&&this.fragmentLoader.destroy(),this.decrypter&&this.decrypter.destroy(),this.hls=this.log=this.warn=this.decrypter=this.fragmentLoader=this.fragmentTracker=null,e.prototype.onHandlerDestroyed.call(this)},C.loadKey=function(e,t){this.log("Loading key for "+e.sn+" of ["+t.startSN+"-"+t.endSN+"], "+("[stream-controller]"===this.logPrefix?"level":"track")+" "+e.level),this.state=p.KEY_LOADING,this.fragCurrent=e,this.hls.trigger(E.Events.KEY_LOADING,{frag:e})},C.loadFragment=function(e,t,o){this._loadFragForPlayback(e,t,o)},C._loadFragForPlayback=function(e,t,o){var a=this;this._doFragLoad(e,t,o,(function(t){if(a.fragContextChanged(e))return a.warn("Fragment "+e.sn+(t.part?" p: "+t.part.index:"")+" of level "+e.level+" was dropped during download."),void a.fragmentTracker.removeFragment(e);e.stats.chunkCount++,a._handleFragmentLoadProgress(t)})).then((function(t){if(t){a.fragLoadError=0;var o=a.state;a.fragContextChanged(e)?(o===p.FRAG_LOADING||!a.fragCurrent&&o===p.PARSING)&&(a.fragmentTracker.removeFragment(e),a.state=p.IDLE):("payload"in t&&(a.log("Loaded fragment "+e.sn+" of level "+e.level),a.hls.trigger(E.Events.FRAG_LOADED,t)),a._handleFragmentLoadComplete(t))}})).catch((function(t){a.state!==p.STOPPED&&a.state!==p.ERROR&&(a.warn(t),a.resetFragmentLoading(e))}))},C.flushMainBuffer=function(e,t,o){if(void 0===o&&(o=null),e-t){var a={startOffset:e,endOffset:t,type:o};this.fragLoadError=0,this.hls.trigger(E.Events.BUFFER_FLUSHING,a)}},C._loadInitSegment=function(e){var t=this;this._doFragLoad(e).then((function(o){if(!o||t.fragContextChanged(e)||!t.levels)throw new Error("init load aborted");return o})).then((function(o){var a=t.hls,n=o.payload,i=e.decryptdata;if(n&&n.byteLength>0&&i&&i.key&&i.iv&&"AES-128"===i.method){var r=self.performance.now();return t.decrypter.webCryptoDecrypt(new Uint8Array(n),i.key.buffer,i.iv.buffer).then((function(t){var n=self.performance.now();return a.trigger(E.Events.FRAG_DECRYPTED,{frag:e,payload:t,stats:{tstart:r,tdecrypt:n}}),o.payload=t,o}))}return o})).then((function(o){var a=t.fragCurrent,n=t.hls,i=t.levels;if(!i)throw new Error("init load aborted, missing levels");var r=i[e.level].details;console.assert(r,"Level details are defined when init segment is loaded");var s=e.stats;t.state=p.IDLE,t.fragLoadError=0,e.data=new Uint8Array(o.payload),s.parsing.start=s.buffering.start=self.performance.now(),s.parsing.end=s.buffering.end=self.performance.now(),o.frag===a&&n.trigger(E.Events.FRAG_BUFFERED,{stats:s,frag:a,part:null,id:e.type}),t.tick()})).catch((function(o){t.state!==p.STOPPED&&t.state!==p.ERROR&&(t.warn(o),t.resetFragmentLoading(e))}))},C.fragContextChanged=function(e){var t=this.fragCurrent;return!e||!t||e.level!==t.level||e.sn!==t.sn||e.urlId!==t.urlId},C.fragBufferedComplete=function(e,t){var o=this.mediaBuffer?this.mediaBuffer:this.media;this.log("Buffered "+e.type+" sn: "+e.sn+(t?" part: "+t.index:"")+" of "+("[stream-controller]"===this.logPrefix?"level":"track")+" "+e.level+" "+(o?I.default.toString(r.BufferHelper.getBuffered(o)):"(detached)")),this.state=p.IDLE,o&&(!this.loadedmetadata&&o.buffered.length&&this.fragCurrent===this.fragPrevious&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())},C.seekToStartPos=function(){},C._handleFragmentLoadComplete=function(e){var t=this.transmuxer;if(t){var o=e.frag,a=e.part,n=e.partsLoaded,i=!n||0===n.length||n.some((function(e){return!e})),r=new T.ChunkMetadata(o.level,o.sn,o.stats.chunkCount+1,0,a?a.index:-1,!i);t.flush(r)}},C._handleFragmentLoadProgress=function(e){},C._doFragLoad=function(e,t,o,n){var i=this;if(void 0===o&&(o=null),!this.levels)throw new Error("frag load aborted, missing levels");if(o=Math.max(e.start,o||0),this.config.lowLatencyMode&&t){var r=t.partList;if(r&&n){o>e.end&&t.fragmentHint&&(e=t.fragmentHint);var s=this.getNextPart(r,e,o);if(s>-1){var _=r[s];return this.log("Loading part sn: "+e.sn+" p: "+_.index+" cc: "+e.cc+" of playlist ["+t.startSN+"-"+t.endSN+"] parts [0-"+s+"-"+(r.length-1)+"] "+("[stream-controller]"===this.logPrefix?"level":"track")+": "+e.level+", target: "+parseFloat(o.toFixed(3))),this.nextLoadPosition=_.start+_.duration,this.state=p.FRAG_LOADING,this.hls.trigger(E.Events.FRAG_LOADING,{frag:e,part:r[s],targetBufferTime:o}),this.doFragPartsLoad(e,r,s,n).catch((function(e){return i.handleFragLoadError(e)}))}if(!e.url||this.loadedEndOfParts(r,o))return Promise.resolve(null)}}return this.log("Loading fragment "+e.sn+" cc: "+e.cc+" "+(t?"of ["+t.startSN+"-"+t.endSN+"] ":"")+("[stream-controller]"===this.logPrefix?"level":"track")+": "+e.level+", target: "+parseFloat(o.toFixed(3))),Object(a.isFiniteNumber)(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=p.FRAG_LOADING,this.hls.trigger(E.Events.FRAG_LOADING,{frag:e,targetBufferTime:o}),this.fragmentLoader.load(e,n).catch((function(e){return i.handleFragLoadError(e)}))},C.doFragPartsLoad=function(e,t,o,a){var n=this;return new Promise((function(i,r){var s=[];!(function o(_){var T=t[_];n.fragmentLoader.loadPart(e,T,a).then((function(a){s[T.index]=a;var r=a.part;n.hls.trigger(E.Events.FRAG_LOADED,a);var l=t[_+1];if(!l||l.fragment!==e)return i({frag:e,part:r,partsLoaded:s});o(_+1)})).catch(r)})(o)}))},C.handleFragLoadError=function(e){var t=e.data;return t&&t.details===_.ErrorDetails.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(E.Events.ERROR,t),null},C._handleTransmuxerFlush=function(e){var t=this.getCurrentContext(e);if(t&&this.state===p.PARSING){var o=t.frag,a=t.part,n=t.level,i=self.performance.now();o.stats.parsing.end=i,a&&(a.stats.parsing.end=i),this.updateLevelTiming(o,a,n,e.partial)}else this.fragCurrent||(this.state=p.IDLE)},C.getCurrentContext=function(e){var t=this.levels,o=e.level,a=e.sn,n=e.part;if(!t||!t[o])return this.warn("Levels object was unset while buffering fragment "+a+" of level "+o+". The current chunk will not be buffered."),null;var i=t[o],r=n>-1?Object(d.getPartWith)(i,a,n):null,s=r?r.fragment:Object(d.getFragmentWithSN)(i,a,this.fragCurrent);return s?{frag:s,part:r,level:i}:null},C.bufferFragmentData=function(e,t,o,a){if(e&&this.state===p.PARSING){var n=e.data1,i=e.data2,r=n;if(n&&i&&(r=Object(l.appendUint8Array)(n,i)),r&&r.length){var s={type:e.type,frag:t,part:o,chunkMeta:a,parent:t.type,data:r};this.hls.trigger(E.Events.BUFFER_APPENDING,s),e.dropped&&e.independent&&!o&&this.flushBufferGap(t)}}},C.flushBufferGap=function(e){var t=this.media;if(t)if(r.BufferHelper.isBuffered(t,t.currentTime)){var o=t.currentTime,a=r.BufferHelper.bufferInfo(t,o,0),n=e.duration,i=Math.min(2*this.config.maxFragLookUpTolerance,.25*n),s=Math.max(Math.min(e.start-i,a.end-i),o+i);e.start-s>i&&this.flushMainBuffer(s,e.start)}else this.flushMainBuffer(0,e.start)},C.getFwdBufferInfo=function(e,t){var o=this.config,n=this.getLoadPosition();if(!Object(a.isFiniteNumber)(n))return null;var i=r.BufferHelper.bufferInfo(e,n,o.maxBufferHole);if(0===i.len&&void 0!==i.nextStart){var s=this.fragmentTracker.getBufferedFrag(n,t);if(s&&i.nextStart<s.end)return r.BufferHelper.bufferInfo(e,n,Math.max(i.nextStart,o.maxBufferHole))}return i},C.getMaxBufferLength=function(e){var t,o=this.config;return t=e?Math.max(8*o.maxBufferSize/e,o.maxBufferLength):o.maxBufferLength,Math.min(t,o.maxMaxBufferLength)},C.reduceMaxBufferLength=function(e){var t=this.config,o=e||t.maxBufferLength;return t.maxMaxBufferLength>=o&&(t.maxMaxBufferLength/=2,this.warn("Reduce max buffer length to "+t.maxMaxBufferLength+"s"),!0)},C.getNextFragment=function(e,t){var o=t.fragments,a=o.length;if(!a)return null;var n,i=this.config,r=o[0].start;if(t.live){var s=i.initialLiveManifestSize;if(a<s)return this.warn("Not enough fragments to start playback (have: "+a+", need: "+s+")"),null;t.PTSKnown||this.startFragRequested||-1!==this.startPosition||(n=this.getInitialLiveFragment(t,o),this.startPosition=n?this.hls.liveSyncPosition||n.start:e)}else e<=r&&(n=o[0]);if(!n){var E=i.lowLatencyMode?t.partEnd:t.fragmentEnd;n=this.getFragmentAtPosition(e,E,t)}return this.mapToInitFragWhenRequired(n)},C.mapToInitFragWhenRequired=function(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment},C.getNextPart=function(e,t,o){for(var a=-1,n=!1,i=!0,r=0,s=e.length;r<s;r++){var E=e[r];if(i=i&&!E.independent,a>-1&&o<E.start)break;var _=E.loaded;!_&&(n||E.independent||i)&&E.fragment===t&&(a=r),n=_}return a},C.loadedEndOfParts=function(e,t){var o=e[e.length-1];return o&&t>o.start&&o.loaded},C.getInitialLiveFragment=function(e,t){var o=this.fragPrevious,a=null;if(o){if(e.hasProgramDateTime&&(this.log("Live playlist, switching playlist, load frag with same PDT: "+o.programDateTime),a=Object(u.findFragmentByPDT)(t,o.endProgramDateTime,this.config.maxFragLookUpTolerance)),!a){var n=o.sn+1;if(n>=e.startSN&&n<=e.endSN){var i=t[n-e.startSN];o.cc===i.cc&&(a=i,this.log("Live playlist, switching playlist, load frag with next SN: "+a.sn))}a||(a=Object(u.findFragWithCC)(t,o.cc))&&this.log("Live playlist, switching playlist, load frag with same CC: "+a.sn)}}else{var r=this.hls.liveSyncPosition;null!==r&&(a=this.getFragmentAtPosition(r,this.bitrateTest?e.fragmentEnd:e.edge,e))}return a},C.getFragmentAtPosition=function(e,t,o){var a,n=this.config,r=this.fragPrevious,s=o.fragments,E=o.endSN,_=o.fragmentHint,T=n.maxFragLookUpTolerance,l=!!(n.lowLatencyMode&&o.partList&&_);if(l&&_&&!this.bitrateTest&&(s=s.concat(_),E=_.sn),e<t){var S=e>t-T?0:T;a=Object(u.findFragmentByPTS)(r,s,e,S)}else a=s[s.length-1];if(a){var d=a.sn-o.startSN;if(r&&a.sn===r.sn&&!l&&r&&a.level===r.level){var c=s[d+1];a.sn<E&&this.fragmentTracker.getState(c)!==i.FragmentState.OK?(this.log("SN "+a.sn+" just loaded, load next one: "+c.sn),a=c):a=null}}return a},C.synchronizeToLiveEdge=function(e){var t=this.config,o=this.media;if(o){var a=this.hls.liveSyncPosition,n=o.currentTime,i=e.fragments[0].start,r=e.edge,s=n>=i-t.maxFragLookUpTolerance&&n<=r;if(null!==a&&o.duration>a&&(n<a||!s)){var E=void 0!==t.liveMaxLatencyDuration?t.liveMaxLatencyDuration:t.liveMaxLatencyDurationCount*e.targetduration;(!s&&o.readyState<4||n<r-E)&&(this.loadedmetadata||(this.nextLoadPosition=a),o.readyState&&(this.warn("Playback: "+n.toFixed(3)+" is located too far from the end of live sliding playlist: "+r+", reset currentTime to : "+a.toFixed(3)),o.currentTime=a))}}},C.alignPlaylists=function(e,t){var o=this.levels,n=this.levelLastLoaded,i=this.fragPrevious,r=null!==n?o[n]:null,s=e.fragments.length;if(!s)return this.warn("No fragments in live playlist"),0;var E=e.fragments[0].start,_=!t,T=e.alignedSliding&&Object(a.isFiniteNumber)(E);if(_||!T&&!E){Object(S.alignStream)(i,r,e);var l=e.fragments[0].start;return this.log("Live playlist sliding: "+l.toFixed(2)+" start-sn: "+(t?t.startSN:"na")+"->"+e.startSN+" prev-sn: "+(i?i.sn:"na")+" fragments: "+s),l}return E},C.waitForCdnTuneIn=function(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)},C.setStartPosition=function(e,t){var o=this.startPosition;if(o<t&&(o=-1),-1===o||-1===this.lastCurrentTime){var n=e.startTimeOffset;Object(a.isFiniteNumber)(n)?(o=t+n,n<0&&(o+=e.totalduration),o=Math.min(Math.max(t,o),t+e.totalduration),this.log("Start time offset "+n+" found in playlist, adjust startPosition to "+o),this.startPosition=o):e.live?o=this.hls.liveSyncPosition||t:this.startPosition=o=0,this.lastCurrentTime=o}this.nextLoadPosition=o},C.getLoadPosition=function(){var e=this.media,t=0;return this.loadedmetadata&&e?t=e.currentTime:this.nextLoadPosition&&(t=this.nextLoadPosition),t},C.handleFragLoadAborted=function(e,t){this.transmuxer&&"initSegment"!==e.sn&&e.stats.aborted&&(this.warn("Fragment "+e.sn+(t?" part"+t.index:"")+" of level "+e.level+" was aborted"),this.resetFragmentLoading(e))},C.resetFragmentLoading=function(e){this.fragCurrent&&(this.fragContextChanged(e)||this.state===p.FRAG_LOADING_WAITING_RETRY)||(this.state=p.IDLE)},C.onFragmentOrKeyLoadError=function(e,t){if(!t.fatal){var o=t.frag;if(o&&o.type===e){var a=this.fragCurrent;console.assert(a&&o.sn===a.sn&&o.level===a.level&&o.urlId===a.urlId,"Frag load error must match current frag to retry");var n=this.config;if(this.fragLoadError+1<=n.fragLoadingMaxRetry){this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition);var i=Math.min(Math.pow(2,this.fragLoadError)*n.fragLoadingRetryDelay,n.fragLoadingMaxRetryTimeout);this.warn("Fragment "+o.sn+" of "+e+" "+o.level+" failed to load, retrying in "+i+"ms"),this.retryDate=self.performance.now()+i,this.fragLoadError++,this.state=p.FRAG_LOADING_WAITING_RETRY}else t.levelRetry?(e===O.PlaylistLevelType.AUDIO&&(this.fragCurrent=null),this.fragLoadError=0,this.state=p.IDLE):(s.logger.error(t.details+" reaches max retry, redispatch as fatal ..."),t.fatal=!0,this.hls.stopLoad(),this.state=p.ERROR)}}},C.afterBufferFlushed=function(e,t,o){if(e){var a=r.BufferHelper.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,a,o),this.state===p.ENDED&&this.resetLoadingState()}},C.resetLoadingState=function(){this.fragCurrent=null,this.fragPrevious=null,this.state=p.IDLE},C.resetStartWhenNotLoaded=function(e){if(!this.loadedmetadata){this.startFragRequested=!1;var t=this.levels?this.levels[e].details:null;null!=t&&t.live?(this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}},C.updateLevelTiming=function(e,t,o,a){var n=this,i=o.details;console.assert(!!i,"level.details must be defined"),Object.keys(e.elementaryStreams).reduce((function(t,r){var s=e.elementaryStreams[r];if(s){var _=s.endPTS-s.startPTS;if(_<=0)return n.warn("Could not parse fragment "+e.sn+" "+r+" duration reliably ("+_+")"),t||!1;var T=a?0:Object(d.updateFragPTSDTS)(i,e,s.startPTS,s.endPTS,s.startDTS,s.endDTS);return n.hls.trigger(E.Events.LEVEL_PTS_UPDATED,{details:i,level:o,drift:T,type:r,frag:e,start:s.startPTS,end:s.endPTS}),!0}return t}),!1)||(this.warn("Found no media in fragment "+e.sn+" of level "+o.id+" resetting transmuxer to fallback to playlist timing"),this.resetTransmuxer()),this.state=p.PARSED,this.hls.trigger(E.Events.FRAG_PARSED,{frag:e,part:t})},C.resetTransmuxer=function(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)},h=n,(L=[{key:"state",get:function(){return this._state},set:function(e){var t=this._state;t!==e&&(this._state=e,this.log(t+"->"+e))}}])&&N(h.prototype,L),f&&N(h,f),Object.defineProperty(h,"prototype",{writable:!1}),n})(n.default)},"./src/controller/buffer-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return u}));var a=o("./src/polyfills/number.ts"),n=o("./src/events.ts"),i=o("./src/utils/logger.ts"),r=o("./src/errors.ts"),s=o("./src/utils/buffer-helper.ts"),E=o("./src/utils/mediasource-helper.ts"),_=o("./src/loader/fragment.ts"),T=o("./src/controller/buffer-operation-queue.ts"),l=Object(E.getMediaSource)(),S=/([ha]vc.)(?:\.[^.,]+)+/,u=(function(){function e(e){var t=this;this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.appendError=0,this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this._onMediaSourceOpen=function(){var e=t.hls,o=t.media,a=t.mediaSource;i.logger.log("[buffer-controller]: Media source opened"),o&&(t.updateMediaElementDuration(),e.trigger(n.Events.MEDIA_ATTACHED,{media:o})),a&&a.removeEventListener("sourceopen",t._onMediaSourceOpen),t.checkPendingTracks()},this._onMediaSourceClose=function(){i.logger.log("[buffer-controller]: Media source closed")},this._onMediaSourceEnded=function(){i.logger.log("[buffer-controller]: Media source ended")},this.hls=e,this._initSourceBuffer(),this.registerListeners()}var t=e.prototype;return t.hasSourceTypes=function(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0},t.destroy=function(){this.unregisterListeners(),this.details=null},t.registerListeners=function(){var e=this.hls;e.on(n.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(n.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(n.Events.BUFFER_RESET,this.onBufferReset,this),e.on(n.Events.BUFFER_APPENDING,this.onBufferAppending,this),e.on(n.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.on(n.Events.BUFFER_EOS,this.onBufferEos,this),e.on(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(n.Events.FRAG_PARSED,this.onFragParsed,this),e.on(n.Events.FRAG_CHANGED,this.onFragChanged,this)},t.unregisterListeners=function(){var e=this.hls;e.off(n.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(n.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(n.Events.BUFFER_RESET,this.onBufferReset,this),e.off(n.Events.BUFFER_APPENDING,this.onBufferAppending,this),e.off(n.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.off(n.Events.BUFFER_EOS,this.onBufferEos,this),e.off(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(n.Events.FRAG_PARSED,this.onFragParsed,this),e.off(n.Events.FRAG_CHANGED,this.onFragChanged,this)},t._initSourceBuffer=function(){this.sourceBuffer={},this.operationQueue=new T.default(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]}},t.onManifestParsed=function(e,t){var o=2;(t.audio&&!t.video||!t.altAudio)&&(o=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=o,this.details=null,i.logger.log(this.bufferCodecEventsExpected+" bufferCodec event(s) expected")},t.onMediaAttaching=function(e,t){var o=this.media=t.media;if(o&&l){var a=this.mediaSource=new l;a.addEventListener("sourceopen",this._onMediaSourceOpen),a.addEventListener("sourceended",this._onMediaSourceEnded),a.addEventListener("sourceclose",this._onMediaSourceClose),o.src=self.URL.createObjectURL(a),this._objectUrl=o.src}},t.onMediaDetaching=function(){var e=this.media,t=this.mediaSource,o=this._objectUrl;if(t){if(i.logger.log("[buffer-controller]: media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){i.logger.warn("[buffer-controller]: onMediaDetaching: "+e.message+" while calling endOfStream")}this.onBufferReset(),t.removeEventListener("sourceopen",this._onMediaSourceOpen),t.removeEventListener("sourceended",this._onMediaSourceEnded),t.removeEventListener("sourceclose",this._onMediaSourceClose),e&&(o&&self.URL.revokeObjectURL(o),e.src===o?(e.removeAttribute("src"),e.load()):i.logger.warn("[buffer-controller]: media.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(n.Events.MEDIA_DETACHED,void 0)},t.onBufferReset=function(){var e=this;this.getSourceBufferTypes().forEach((function(t){var o=e.sourceBuffer[t];try{o&&(e.removeBufferListeners(t),e.mediaSource&&e.mediaSource.removeSourceBuffer(o),e.sourceBuffer[t]=void 0)}catch(e){i.logger.warn("[buffer-controller]: Failed to reset the "+t+" buffer",e)}})),this._initSourceBuffer()},t.onBufferCodecs=function(e,t){var o=this,a=this.getSourceBufferTypes().length;Object.keys(t).forEach((function(e){if(a){var n=o.tracks[e];if(n&&"function"==typeof n.buffer.changeType){var r=t[e],s=r.id,E=r.codec,_=r.levelCodec,T=r.container,l=r.metadata,u=(n.levelCodec||n.codec).replace(S,"$1"),d=(_||E).replace(S,"$1");if(u!==d){var c=T+";codecs="+(_||E);o.appendChangeType(e,c),i.logger.log("[buffer-controller]: switching codec "+u+" to "+d),o.tracks[e]={buffer:n.buffer,codec:E,container:T,levelCodec:_,metadata:l,id:s}}}}else o.pendingTracks[e]=t[e]})),a||(this.bufferCodecEventsExpected=Math.max(this.bufferCodecEventsExpected-1,0),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks())},t.appendChangeType=function(e,t){var o=this,a=this.operationQueue,n={execute:function(){var n=o.sourceBuffer[e];n&&(i.logger.log("[buffer-controller]: changing "+e+" sourceBuffer type to "+t),n.changeType(t)),a.shiftAndExecuteNext(e)},onStart:function(){},onComplete:function(){},onError:function(t){i.logger.warn("[buffer-controller]: Failed to change "+e+" SourceBuffer type",t)}};a.append(n,e)},t.onBufferAppending=function(e,t){var o=this,a=this.hls,E=this.operationQueue,_=this.tracks,T=t.data,l=t.type,S=t.frag,u=t.part,d=t.chunkMeta,c=d.buffering[l],A=self.performance.now();c.start=A;var I=S.stats.buffering,O=u?u.stats.buffering:null;0===I.start&&(I.start=A),O&&0===O.start&&(O.start=A);var N=_.audio,R="audio"===l&&1===d.id&&"audio/mpeg"===(null==N?void 0:N.container),m={execute:function(){if(c.executeStart=self.performance.now(),R){var e=o.sourceBuffer[l];if(e){var t=S.start-e.timestampOffset;Math.abs(t)>=.1&&(i.logger.log("[buffer-controller]: Updating audio SourceBuffer timestampOffset to "+S.start+" (delta: "+t+") sn: "+S.sn+")"),e.timestampOffset=S.start)}}o.appendExecutor(T,l)},onStart:function(){},onComplete:function(){var e=self.performance.now();c.executeEnd=c.end=e,0===I.first&&(I.first=e),O&&0===O.first&&(O.first=e);var t=o.sourceBuffer,a={};for(var i in t)a[i]=s.BufferHelper.getBuffered(t[i]);o.appendError=0,o.hls.trigger(n.Events.BUFFER_APPENDED,{type:l,frag:S,part:u,chunkMeta:d,parent:S.type,timeRanges:a})},onError:function(e){i.logger.error("[buffer-controller]: Error encountered while trying to append to the "+l+" SourceBuffer",e);var t={type:r.ErrorTypes.MEDIA_ERROR,parent:S.type,details:r.ErrorDetails.BUFFER_APPEND_ERROR,err:e,fatal:!1};e.code===DOMException.QUOTA_EXCEEDED_ERR?t.details=r.ErrorDetails.BUFFER_FULL_ERROR:(o.appendError++,t.details=r.ErrorDetails.BUFFER_APPEND_ERROR,o.appendError>a.config.appendErrorMaxRetry&&(i.logger.error("[buffer-controller]: Failed "+a.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),t.fatal=!0,a.stopLoad())),a.trigger(n.Events.ERROR,t)}};E.append(m,l)},t.onBufferFlushing=function(e,t){var o=this,a=this.operationQueue,r=function(e){return{execute:o.removeExecutor.bind(o,e,t.startOffset,t.endOffset),onStart:function(){},onComplete:function(){o.hls.trigger(n.Events.BUFFER_FLUSHED,{type:e})},onError:function(t){i.logger.warn("[buffer-controller]: Failed to remove from "+e+" SourceBuffer",t)}}};t.type?a.append(r(t.type),t.type):this.getSourceBufferTypes().forEach((function(e){a.append(r(e),e)}))},t.onFragParsed=function(e,t){var o=this,a=t.frag,r=t.part,s=[],E=r?r.elementaryStreams:a.elementaryStreams;E[_.ElementaryStreamTypes.AUDIOVIDEO]?s.push("audiovideo"):(E[_.ElementaryStreamTypes.AUDIO]&&s.push("audio"),E[_.ElementaryStreamTypes.VIDEO]&&s.push("video")),0===s.length&&i.logger.warn("Fragments must have at least one ElementaryStreamType set. type: "+a.type+" level: "+a.level+" sn: "+a.sn),this.blockBuffers((function(){var e=self.performance.now();a.stats.buffering.end=e,r&&(r.stats.buffering.end=e);var t=r?r.stats:a.stats;o.hls.trigger(n.Events.FRAG_BUFFERED,{frag:a,part:r,stats:t,id:a.type})}),s)},t.onFragChanged=function(e,t){this.flushBackBuffer()},t.onBufferEos=function(e,t){var o=this;this.getSourceBufferTypes().reduce((function(e,a){var n=o.sourceBuffer[a];return t.type&&t.type!==a||n&&!n.ended&&(n.ended=!0,i.logger.log("[buffer-controller]: "+a+" sourceBuffer now EOS")),e&&!(n&&!n.ended)}),!0)&&this.blockBuffers((function(){var e=o.mediaSource;e&&"open"===e.readyState&&e.endOfStream()}))},t.onLevelUpdated=function(e,t){var o=t.details;o.fragments.length&&(this.details=o,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())},t.flushBackBuffer=function(){var e=this.hls,t=this.details,o=this.media,i=this.sourceBuffer;if(o&&null!==t){var r=this.getSourceBufferTypes();if(r.length){var E=t.live&&null!==e.config.liveBackBufferLength?e.config.liveBackBufferLength:e.config.backBufferLength;if(Object(a.isFiniteNumber)(E)&&!(E<0)){var _=o.currentTime,T=t.levelTargetDuration,l=Math.max(E,T),S=Math.floor(_/T)*T-l;r.forEach((function(o){var a=i[o];if(a){var r=s.BufferHelper.getBuffered(a);r.length>0&&S>r.start(0)&&(e.trigger(n.Events.BACK_BUFFER_REACHED,{bufferEnd:S}),t.live&&e.trigger(n.Events.LIVE_BACK_BUFFER_REACHED,{bufferEnd:S}),e.trigger(n.Events.BUFFER_FLUSHING,{startOffset:0,endOffset:S,type:o}))}}))}}}},t.updateMediaElementDuration=function(){if(this.details&&this.media&&this.mediaSource&&"open"===this.mediaSource.readyState){var e=this.details,t=this.hls,o=this.media,n=this.mediaSource,r=e.fragments[0].start+e.totalduration,s=o.duration,E=Object(a.isFiniteNumber)(n.duration)?n.duration:0;e.live&&t.config.liveDurationInfinity?(i.logger.log("[buffer-controller]: Media Source duration is set to Infinity"),n.duration=1/0,this.updateSeekableRange(e)):(r>E&&r>s||!Object(a.isFiniteNumber)(s))&&(i.logger.log("[buffer-controller]: Updating Media Source duration to "+r.toFixed(3)),n.duration=r)}},t.updateSeekableRange=function(e){var t=this.mediaSource,o=e.fragments;if(o.length&&e.live&&null!=t&&t.setLiveSeekableRange){var a=Math.max(0,o[0].start),n=Math.max(a,a+e.totalduration);t.setLiveSeekableRange(a,n)}},t.checkPendingTracks=function(){var e=this.bufferCodecEventsExpected,t=this.operationQueue,o=this.pendingTracks,a=Object.keys(o).length;if(a&&!e||2===a){this.createSourceBuffers(o),this.pendingTracks={};var i=this.getSourceBufferTypes();if(0===i.length)return void this.hls.trigger(n.Events.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,reason:"could not create source buffer for media codec(s)"});i.forEach((function(e){t.executeNext(e)}))}},t.createSourceBuffers=function(e){var t=this.sourceBuffer,o=this.mediaSource;if(!o)throw Error("createSourceBuffers called when mediaSource was null");var a=0;for(var s in e)if(!t[s]){var E=e[s];if(!E)throw Error("source buffer exists for track "+s+", however track does not");var _=E.levelCodec||E.codec,T=E.container+";codecs="+_;i.logger.log("[buffer-controller]: creating sourceBuffer("+T+")");try{var l=t[s]=o.addSourceBuffer(T),S=s;this.addBufferListener(S,"updatestart",this._onSBUpdateStart),this.addBufferListener(S,"updateend",this._onSBUpdateEnd),this.addBufferListener(S,"error",this._onSBUpdateError),this.tracks[s]={buffer:l,codec:_,container:E.container,levelCodec:E.levelCodec,metadata:E.metadata,id:E.id},a++}catch(e){i.logger.error("[buffer-controller]: error while trying to add sourceBuffer: "+e.message),this.hls.trigger(n.Events.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,mimeType:T})}}a&&this.hls.trigger(n.Events.BUFFER_CREATED,{tracks:this.tracks})},t._onSBUpdateStart=function(e){this.operationQueue.current(e).onStart()},t._onSBUpdateEnd=function(e){var t=this.operationQueue;t.current(e).onComplete(),t.shiftAndExecuteNext(e)},t._onSBUpdateError=function(e,t){i.logger.error("[buffer-controller]: "+e+" SourceBuffer error",t),this.hls.trigger(n.Events.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.BUFFER_APPENDING_ERROR,fatal:!1});var o=this.operationQueue.current(e);o&&o.onError(t)},t.removeExecutor=function(e,t,o){var n=this.media,r=this.mediaSource,s=this.operationQueue,E=this.sourceBuffer[e];if(!n||!r||!E)return i.logger.warn("[buffer-controller]: Attempting to remove from the "+e+" SourceBuffer, but it does not exist"),void s.shiftAndExecuteNext(e);var _=Object(a.isFiniteNumber)(n.duration)?n.duration:1/0,T=Object(a.isFiniteNumber)(r.duration)?r.duration:1/0,l=Math.max(0,t),S=Math.min(o,_,T);S>l?(i.logger.log("[buffer-controller]: Removing ["+l+","+S+"] from the "+e+" SourceBuffer"),console.assert(!E.updating,e+" sourceBuffer must not be updating"),E.remove(l,S)):s.shiftAndExecuteNext(e)},t.appendExecutor=function(e,t){var o=this.operationQueue,a=this.sourceBuffer[t];if(!a)return i.logger.warn("[buffer-controller]: Attempting to append to the "+t+" SourceBuffer, but it does not exist"),void o.shiftAndExecuteNext(t);a.ended=!1,console.assert(!a.updating,t+" sourceBuffer must not be updating"),a.appendBuffer(e)},t.blockBuffers=function(e,t){var o=this;if(void 0===t&&(t=this.getSourceBufferTypes()),!t.length)return i.logger.log("[buffer-controller]: Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);var a=this.operationQueue,n=t.map((function(e){return a.appendBlocker(e)}));Promise.all(n).then((function(){e(),t.forEach((function(e){var t=o.sourceBuffer[e];t&&t.updating||a.shiftAndExecuteNext(e)}))}))},t.getSourceBufferTypes=function(){return Object.keys(this.sourceBuffer)},t.addBufferListener=function(e,t,o){var a=this.sourceBuffer[e];if(a){var n=o.bind(this,e);this.listeners[e].push({event:t,listener:n}),a.addEventListener(t,n)}},t.removeBufferListeners=function(e){var t=this.sourceBuffer[e];t&&this.listeners[e].forEach((function(e){t.removeEventListener(e.event,e.listener)}))},e})()},"./src/controller/buffer-operation-queue.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return n}));var a=o("./src/utils/logger.ts"),n=(function(){function e(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}var t=e.prototype;return t.append=function(e,t){var o=this.queues[t];o.push(e),1===o.length&&this.buffers[t]&&this.executeNext(t)},t.insertAbort=function(e,t){this.queues[t].unshift(e),this.executeNext(t)},t.appendBlocker=function(e){var t,o=new Promise((function(e){t=e})),a={execute:t,onStart:function(){},onComplete:function(){},onError:function(){}};return this.append(a,e),o},t.executeNext=function(e){var t=this.buffers,o=this.queues,n=t[e],i=o[e];if(i.length){var r=i[0];try{r.execute()}catch(t){a.logger.warn("[buffer-operation-queue]: Unhandled exception executing the current operation"),r.onError(t),n&&n.updating||(i.shift(),this.executeNext(e))}}},t.shiftAndExecuteNext=function(e){this.queues[e].shift(),this.executeNext(e)},t.current=function(e){return this.queues[e][0]},e})()},"./src/controller/cap-level-controller.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/events.ts");function n(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}var i=(function(){function e(e){this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.hls=void 0,this.streamController=void 0,this.clientRect=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}var t,o,i,r=e.prototype;return r.setStreamController=function(e){this.streamController=e},r.destroy=function(){this.unregisterListener(),this.hls.config.capLevelToPlayerSize&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null},r.registerListeners=function(){var e=this.hls;e.on(a.Events.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(a.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(a.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.on(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this)},r.unregisterListener=function(){var e=this.hls;e.off(a.Events.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(a.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(a.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.off(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this)},r.onFpsDropLevelCapping=function(t,o){e.isLevelAllowed(o.droppedLevel,this.restrictedLevels)&&this.restrictedLevels.push(o.droppedLevel)},r.onMediaAttaching=function(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null},r.onManifestParsed=function(e,t){var o=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,o.config.capLevelToPlayerSize&&t.video&&this.startCapping()},r.onBufferCodecs=function(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()},r.onMediaDetaching=function(){this.stopCapping()},r.detectPlayerSize=function(){if(this.media&&this.mediaHeight>0&&this.mediaWidth>0){var e=this.hls.levels;if(e.length){var t=this.hls;t.autoLevelCapping=this.getMaxLevel(e.length-1),t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}},r.getMaxLevel=function(t){var o=this,a=this.hls.levels;if(!a.length)return-1;var n=a.filter((function(a,n){return e.isLevelAllowed(n,o.restrictedLevels)&&n<=t}));return this.clientRect=null,e.getMaxLevelByMediaSize(n,this.mediaWidth,this.mediaHeight)},r.startCapping=function(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,this.hls.firstLevel=this.getMaxLevel(this.firstLevel),self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())},r.stopCapping=function(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)},r.getDimensions=function(){if(this.clientRect)return this.clientRect;var e=this.media,t={width:0,height:0};if(e){var o=e.getBoundingClientRect();t.width=o.width,t.height=o.height,t.width||t.height||(t.width=o.right-o.left||e.width||0,t.height=o.bottom-o.top||e.height||0)}return this.clientRect=t,t},e.isLevelAllowed=function(e,t){return void 0===t&&(t=[]),-1===t.indexOf(e)},e.getMaxLevelByMediaSize=function(e,t,o){if(!e||!e.length)return-1;for(var a,n,i=e.length-1,r=0;r<e.length;r+=1){var s=e[r];if((s.width>=t||s.height>=o)&&(a=s,!(n=e[r+1])||a.width!==n.width||a.height!==n.height)){i=r;break}}return i},t=e,(o=[{key:"mediaWidth",get:function(){return this.getDimensions().width*this.contentScaleFactor}},{key:"mediaHeight",get:function(){return this.getDimensions().height*this.contentScaleFactor}},{key:"contentScaleFactor",get:function(){var e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch(e){}return e}}])&&n(t.prototype,o),i&&n(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e})();t.default=i},"./src/controller/cmcd-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return S}));var a=o("./src/events.ts"),n=o("./src/types/cmcd.ts"),i=o("./src/utils/buffer-helper.ts"),r=o("./src/utils/logger.ts");function s(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function E(e,t,o){return t&&s(e.prototype,t),o&&s(e,o),Object.defineProperty(e,"prototype",{writable:!1}),e}function _(e,t){var o="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(o)return(o=o.call(e)).next.bind(o);if(Array.isArray(e)||(o=(function(e,t){if(e){if("string"==typeof e)return T(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?T(e,t):void 0}})(e))||t&&e&&"number"==typeof e.length){o&&(e=o);var a=0;return function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},l.apply(this,arguments)}var S=(function(){function e(t){var o=this;this.hls=void 0,this.config=void 0,this.media=void 0,this.sid=void 0,this.cid=void 0,this.useHeaders=!1,this.initialized=!1,this.starved=!1,this.buffering=!0,this.audioBuffer=void 0,this.videoBuffer=void 0,this.onWaiting=function(){o.initialized&&(o.starved=!0),o.buffering=!0},this.onPlaying=function(){o.initialized||(o.initialized=!0),o.buffering=!1},this.applyPlaylistData=function(e){try{o.apply(e,{ot:n.CMCDObjectType.MANIFEST,su:!o.initialized})}catch(e){r.logger.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=function(e){try{var t=e.frag,a=o.hls.levels[t.level],i=o.getObjectType(t),s={d:1e3*t.duration,ot:i};i!==n.CMCDObjectType.VIDEO&&i!==n.CMCDObjectType.AUDIO&&i!=n.CMCDObjectType.MUXED||(s.br=a.bitrate/1e3,s.tb=o.getTopBandwidth(i)/1e3,s.bl=o.getBufferLength(i)),o.apply(e,s)}catch(e){r.logger.warn("Could not generate segment CMCD data.",e)}},this.hls=t;var a=this.config=t.config,i=a.cmcd;null!=i&&(a.pLoader=this.createPlaylistLoader(),a.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||e.uuid(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.registerListeners())}var t=e.prototype;return t.registerListeners=function(){var e=this.hls;e.on(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(a.Events.MEDIA_DETACHED,this.onMediaDetached,this),e.on(a.Events.BUFFER_CREATED,this.onBufferCreated,this)},t.unregisterListeners=function(){var e=this.hls;e.off(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(a.Events.MEDIA_DETACHED,this.onMediaDetached,this),e.off(a.Events.BUFFER_CREATED,this.onBufferCreated,this),this.onMediaDetached()},t.destroy=function(){this.unregisterListeners(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null},t.onMediaAttached=function(e,t){this.media=t.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)},t.onMediaDetached=function(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)},t.onBufferCreated=function(e,t){var o,a;this.audioBuffer=null===(o=t.tracks.audio)||void 0===o?void 0:o.buffer,this.videoBuffer=null===(a=t.tracks.video)||void 0===a?void 0:a.buffer},t.createData=function(){var e;return{v:n.CMCDVersion,sf:n.CMCDStreamingFormat.HLS,sid:this.sid,cid:this.cid,pr:null===(e=this.media)||void 0===e?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}},t.apply=function(t,o){void 0===o&&(o={}),l(o,this.createData());var a=o.ot===n.CMCDObjectType.INIT||o.ot===n.CMCDObjectType.VIDEO||o.ot===n.CMCDObjectType.MUXED;if(this.starved&&a&&(o.bs=!0,o.su=!0,this.starved=!1),null==o.su&&(o.su=this.buffering),this.useHeaders){var i=e.toHeaders(o);if(!Object.keys(i).length)return;t.headers||(t.headers={}),l(t.headers,i)}else{var r=e.toQuery(o);if(!r)return;t.url=e.appendQueryToUri(t.url,r)}},t.getObjectType=function(e){var t=e.type;return"subtitle"===t?n.CMCDObjectType.TIMED_TEXT:"initSegment"===e.sn?n.CMCDObjectType.INIT:"audio"===t?n.CMCDObjectType.AUDIO:"main"===t?this.hls.audioTracks.length?n.CMCDObjectType.VIDEO:n.CMCDObjectType.MUXED:void 0},t.getTopBandwidth=function(e){var t,o=0,a=this.hls;if(e===n.CMCDObjectType.AUDIO)t=a.audioTracks;else{var i=a.maxAutoLevel,r=i>-1?i+1:a.levels.length;t=a.levels.slice(0,r)}for(var s,E=_(t);!(s=E()).done;){var T=s.value;T.bitrate>o&&(o=T.bitrate)}return o>0?o:NaN},t.getBufferLength=function(e){var t=this.hls.media,o=e===n.CMCDObjectType.AUDIO?this.audioBuffer:this.videoBuffer;return o&&t?1e3*i.BufferHelper.bufferInfo(o,t.currentTime,this.config.maxBufferHole).len:NaN},t.createPlaylistLoader=function(){var e=this.config.pLoader,t=this.applyPlaylistData,o=e||this.config.loader;return(function(){function e(e){this.loader=void 0,this.loader=new o(e)}var a=e.prototype;return a.destroy=function(){this.loader.destroy()},a.abort=function(){this.loader.abort()},a.load=function(e,o,a){t(e),this.loader.load(e,o,a)},E(e,[{key:"stats",get:function(){return this.loader.stats}},{key:"context",get:function(){return this.loader.context}}]),e})()},t.createFragmentLoader=function(){var e=this.config.fLoader,t=this.applyFragmentData,o=e||this.config.loader;return(function(){function e(e){this.loader=void 0,this.loader=new o(e)}var a=e.prototype;return a.destroy=function(){this.loader.destroy()},a.abort=function(){this.loader.abort()},a.load=function(e,o,a){t(e),this.loader.load(e,o,a)},E(e,[{key:"stats",get:function(){return this.loader.stats}},{key:"context",get:function(){return this.loader.context}}]),e})()},e.uuid=function(){var e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)},e.serialize=function(e){for(var t,o=[],a=function(e){return!Number.isNaN(e)&&null!=e&&""!==e&&!1!==e},n=function(e){return Math.round(e)},i=function(e){return 100*n(e/100)},r={br:n,d:n,bl:i,dl:i,mtp:i,nor:function(e){return encodeURIComponent(e)},rtp:i,tb:n},s=_(Object.keys(e||{}).sort());!(t=s()).done;){var E=t.value,T=e[E];if(a(T)&&!("v"===E&&1===T||"pr"==E&&1===T)){var l=r[E];l&&(T=l(T));var S=typeof T,u=void 0;u="ot"===E||"sf"===E||"st"===E?E+"="+T:"boolean"===S?E:"number"===S?E+"="+T:E+"="+JSON.stringify(T),o.push(u)}}return o.join(",")},e.toHeaders=function(t){for(var o={},a=["Object","Request","Session","Status"],n=[{},{},{},{}],i={br:0,d:0,ot:0,tb:0,bl:1,dl:1,mtp:1,nor:1,nrr:1,su:1,cid:2,pr:2,sf:2,sid:2,st:2,v:2,bs:3,rtp:3},r=0,s=Object.keys(t);r<s.length;r++){var E=s[r];n[null!=i[E]?i[E]:1][E]=t[E]}for(var _=0;_<n.length;_++){var T=e.serialize(n[_]);T&&(o["CMCD-"+a[_]]=T)}return o},e.toQuery=function(t){return"CMCD="+encodeURIComponent(e.serialize(t))},e.appendQueryToUri=function(e,t){if(!t)return e;var o=e.includes("?")?"&":"?";return""+e+o+t},e})()},"./src/controller/eme-controller.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/events.ts"),n=o("./src/errors.ts"),i=o("./src/utils/logger.ts"),r=o("./src/utils/mediakeys-helper.ts");function s(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}var E=(function(){function e(e){this.hls=void 0,this._widevineLicenseUrl=void 0,this._licenseXhrSetup=void 0,this._licenseResponseCallback=void 0,this._emeEnabled=void 0,this._requestMediaKeySystemAccess=void 0,this._drmSystemOptions=void 0,this._config=void 0,this._mediaKeysList=[],this._media=null,this._hasSetMediaKeys=!1,this._requestLicenseFailureCount=0,this.mediaKeysPromise=null,this._onMediaEncrypted=this.onMediaEncrypted.bind(this),this.hls=e,this._config=e.config,this._widevineLicenseUrl=this._config.widevineLicenseUrl,this._licenseXhrSetup=this._config.licenseXhrSetup,this._licenseResponseCallback=this._config.licenseResponseCallback,this._emeEnabled=this._config.emeEnabled,this._requestMediaKeySystemAccess=this._config.requestMediaKeySystemAccessFunc,this._drmSystemOptions=this._config.drmSystemOptions,this._registerListeners()}var t,o,E,_=e.prototype;return _.destroy=function(){this._unregisterListeners(),this.hls=this._onMediaEncrypted=null,this._requestMediaKeySystemAccess=null},_._registerListeners=function(){this.hls.on(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(a.Events.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(a.Events.MANIFEST_PARSED,this.onManifestParsed,this)},_._unregisterListeners=function(){this.hls.off(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(a.Events.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(a.Events.MANIFEST_PARSED,this.onManifestParsed,this)},_.getLicenseServerUrl=function(e){switch(e){case r.KeySystems.WIDEVINE:if(!this._widevineLicenseUrl)break;return this._widevineLicenseUrl}throw new Error('no license server URL configured for key-system "'+e+'"')},_._attemptKeySystemAccess=function(e,t,o){var a=this,n=(function(e,t,o,a){if(e===r.KeySystems.WIDEVINE)return(function(e,t,o){var a={audioCapabilities:[],videoCapabilities:[]};return e.forEach((function(e){a.audioCapabilities.push({contentType:'audio/mp4; codecs="'+e+'"',robustness:o.audioRobustness||""})})),t.forEach((function(e){a.videoCapabilities.push({contentType:'video/mp4; codecs="'+e+'"',robustness:o.videoRobustness||""})})),[a]})(t,o,a);throw new Error("Unknown key-system: "+e)})(e,t,o,this._drmSystemOptions);i.logger.log("Requesting encrypted media key-system access");var s=this.requestMediaKeySystemAccess(e,n);this.mediaKeysPromise=s.then((function(t){return a._onMediaKeySystemAccessObtained(e,t)})),s.catch((function(t){i.logger.error('Failed to obtain key-system "'+e+'" access:',t)}))},_._onMediaKeySystemAccessObtained=function(e,t){var o=this;i.logger.log('Access for key-system "'+e+'" obtained');var a={mediaKeysSessionInitialized:!1,mediaKeySystemAccess:t,mediaKeySystemDomain:e};this._mediaKeysList.push(a);var n=Promise.resolve().then((function(){return t.createMediaKeys()})).then((function(t){return a.mediaKeys=t,i.logger.log('Media-keys created for key-system "'+e+'"'),o._onMediaKeysCreated(),t}));return n.catch((function(e){i.logger.error("Failed to create media-keys:",e)})),n},_._onMediaKeysCreated=function(){var e=this;this._mediaKeysList.forEach((function(t){t.mediaKeysSession||(t.mediaKeysSession=t.mediaKeys.createSession(),e._onNewMediaKeySession(t.mediaKeysSession))}))},_._onNewMediaKeySession=function(e){var t=this;i.logger.log("New key-system session "+e.sessionId),e.addEventListener("message",(function(o){t._onKeySessionMessage(e,o.message)}),!1)},_._onKeySessionMessage=function(e,t){i.logger.log("Got EME message event, creating license request"),this._requestLicense(t,(function(t){i.logger.log("Received license data (length: "+(t?t.byteLength:t)+"), updating key-session"),e.update(t).catch((function(e){i.logger.warn("Updating key-session failed: "+e)}))}))},_.onMediaEncrypted=function(e){var t=this;if(i.logger.log('Media is encrypted using "'+e.initDataType+'" init data type'),!this.mediaKeysPromise)return i.logger.error("Fatal: Media is encrypted but no CDM access or no keys have been requested"),void this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_NO_KEYS,fatal:!0});var o=function(o){t._media&&(t._attemptSetMediaKeys(o),t._generateRequestWithPreferredKeySession(e.initDataType,e.initData))};this.mediaKeysPromise.then(o).catch(o)},_._attemptSetMediaKeys=function(e){if(!this._media)throw new Error("Attempted to set mediaKeys without first attaching a media element");if(!this._hasSetMediaKeys){var t=this._mediaKeysList[0];if(!t||!t.mediaKeys)return i.logger.error("Fatal: Media is encrypted but no CDM access or no keys have been obtained yet"),void this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_NO_KEYS,fatal:!0});i.logger.log("Setting keys for encrypted media"),this._media.setMediaKeys(t.mediaKeys),this._hasSetMediaKeys=!0}},_._generateRequestWithPreferredKeySession=function(e,t){var o=this,r=this._mediaKeysList[0];if(!r)return i.logger.error("Fatal: Media is encrypted but not any key-system access has been obtained yet"),void this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_NO_ACCESS,fatal:!0});if(r.mediaKeysSessionInitialized)i.logger.warn("Key-Session already initialized but requested again");else{var s=r.mediaKeysSession;if(!s)return i.logger.error("Fatal: Media is encrypted but no key-session existing"),void this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_NO_SESSION,fatal:!0});if(!t)return i.logger.warn("Fatal: initData required for generating a key session is null"),void this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_NO_INIT_DATA,fatal:!0});i.logger.log('Generating key-session request for "'+e+'" init data type'),r.mediaKeysSessionInitialized=!0,s.generateRequest(e,t).then((function(){i.logger.debug("Key-session generation succeeded")})).catch((function(e){i.logger.error("Error generating key-session request:",e),o.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_NO_SESSION,fatal:!1})}))}},_._createLicenseXhr=function(e,t,o){var a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=this._onLicenseRequestReadyStageChange.bind(this,a,e,t,o);var n=this._licenseXhrSetup;if(n)try{n.call(this.hls,a,e),n=void 0}catch(e){i.logger.error(e)}try{a.readyState||a.open("POST",e,!0),n&&n.call(this.hls,a,e)}catch(e){throw new Error("issue setting up KeySystem license XHR "+e)}return a},_._onLicenseRequestReadyStageChange=function(e,t,o,r){if(4===e.readyState)if(200===e.status){this._requestLicenseFailureCount=0,i.logger.log("License request succeeded");var s=e.response,E=this._licenseResponseCallback;if(E)try{s=E.call(this.hls,e,t)}catch(e){i.logger.error(e)}r(s)}else{if(i.logger.error("License Request XHR failed ("+t+"). Status: "+e.status+" ("+e.statusText+")"),this._requestLicenseFailureCount++,this._requestLicenseFailureCount>3)return void this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0});var _=3-this._requestLicenseFailureCount+1;i.logger.warn("Retrying license request, "+_+" attempts left"),this._requestLicense(o,r)}},_._generateLicenseRequestChallenge=function(e,t){if(e.mediaKeySystemDomain===r.KeySystems.WIDEVINE)return t;throw new Error("unsupported key-system: "+e.mediaKeySystemDomain)},_._requestLicense=function(e,t){i.logger.log("Requesting content license for key-system");var o=this._mediaKeysList[0];if(!o)return i.logger.error("Fatal error: Media is encrypted but no key-system access has been obtained yet"),void this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_NO_ACCESS,fatal:!0});try{var r=this.getLicenseServerUrl(o.mediaKeySystemDomain),s=this._createLicenseXhr(r,e,t);i.logger.log("Sending license request to URL: "+r);var E=this._generateLicenseRequestChallenge(o,e);s.send(E)}catch(e){i.logger.error("Failure requesting DRM license: "+e),this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.KEY_SYSTEM_ERROR,details:n.ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0})}},_.onMediaAttached=function(e,t){if(this._emeEnabled){var o=t.media;this._media=o,o.addEventListener("encrypted",this._onMediaEncrypted)}},_.onMediaDetached=function(){var e=this._media,t=this._mediaKeysList;e&&(e.removeEventListener("encrypted",this._onMediaEncrypted),this._media=null,this._mediaKeysList=[],Promise.all(t.map((function(e){if(e.mediaKeysSession)return e.mediaKeysSession.close().catch((function(){}))}))).then((function(){return e.setMediaKeys(null)})).catch((function(){})))},_.onManifestParsed=function(e,t){if(this._emeEnabled){var o=t.levels.map((function(e){return e.audioCodec})).filter((function(e){return!!e})),a=t.levels.map((function(e){return e.videoCodec})).filter((function(e){return!!e}));this._attemptKeySystemAccess(r.KeySystems.WIDEVINE,o,a)}},t=e,(o=[{key:"requestMediaKeySystemAccess",get:function(){if(!this._requestMediaKeySystemAccess)throw new Error("No requestMediaKeySystemAccess function configured");return this._requestMediaKeySystemAccess}}])&&s(t.prototype,o),E&&s(t,E),Object.defineProperty(t,"prototype",{writable:!1}),e})();t.default=E},"./src/controller/fps-controller.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/events.ts"),n=o("./src/utils/logger.ts"),i=(function(){function e(e){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=e,this.registerListeners()}var t=e.prototype;return t.setStreamController=function(e){this.streamController=e},t.registerListeners=function(){this.hls.on(a.Events.MEDIA_ATTACHING,this.onMediaAttaching,this)},t.unregisterListeners=function(){this.hls.off(a.Events.MEDIA_ATTACHING,this.onMediaAttaching)},t.destroy=function(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null},t.onMediaAttaching=function(e,t){var o=this.hls.config;if(o.capLevelOnFPSDrop){var a=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=a,a&&"function"==typeof a.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),o.fpsDroppedMonitoringPeriod)}},t.checkFPS=function(e,t,o){var i=performance.now();if(t){if(this.lastTime){var r=i-this.lastTime,s=o-this.lastDroppedFrames,E=t-this.lastDecodedFrames,_=1e3*s/r,T=this.hls;if(T.trigger(a.Events.FPS_DROP,{currentDropped:s,currentDecoded:E,totalDroppedFrames:o}),_>0&&s>T.config.fpsDroppedMonitoringThreshold*E){var l=T.currentLevel;n.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: "+l),l>0&&(-1===T.autoLevelCapping||T.autoLevelCapping>=l)&&(l-=1,T.trigger(a.Events.FPS_DROP_LEVEL_CAPPING,{level:l,droppedLevel:T.currentLevel}),T.autoLevelCapping=l,this.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=o,this.lastDecodedFrames=t}},t.checkFPSInterval=function(){var e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){var t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)},e})();t.default=i},"./src/controller/fragment-finders.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"findFragmentByPDT",(function(){return i})),o.d(t,"findFragmentByPTS",(function(){return r})),o.d(t,"fragmentWithinToleranceTest",(function(){return s})),o.d(t,"pdtWithinToleranceTest",(function(){return E})),o.d(t,"findFragWithCC",(function(){return _}));var a=o("./src/polyfills/number.ts"),n=o("./src/utils/binary-search.ts");function i(e,t,o){if(null===t||!Array.isArray(e)||!e.length||!Object(a.isFiniteNumber)(t))return null;if(t<(e[0].programDateTime||0))return null;if(t>=(e[e.length-1].endProgramDateTime||0))return null;o=o||0;for(var n=0;n<e.length;++n){var i=e[n];if(E(t,o,i))return i}return null}function r(e,t,o,a){void 0===o&&(o=0),void 0===a&&(a=0);var i=null;if(e?i=t[e.sn-t[0].sn+1]||null:0===o&&0===t[0].start&&(i=t[0]),i&&0===s(o,a,i))return i;var r=n.default.search(t,s.bind(null,o,a));return r||i}function s(e,t,o){void 0===e&&(e=0),void 0===t&&(t=0);var a=Math.min(t,o.duration+(o.deltaPTS?o.deltaPTS:0));return o.start+o.duration-a<=e?1:o.start-a>e&&o.start?-1:0}function E(e,t,o){var a=1e3*Math.min(t,o.duration+(o.deltaPTS?o.deltaPTS:0));return(o.endProgramDateTime||0)-a>e}function _(e,t){return n.default.search(e,(function(e){return e.cc<t?1:e.cc>t?-1:0}))}},"./src/controller/fragment-tracker.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"FragmentState",(function(){return a})),o.d(t,"FragmentTracker",(function(){return r}));var a,n=o("./src/events.ts"),i=o("./src/types/loader.ts");!(function(e){e.NOT_LOADED="NOT_LOADED",e.APPENDING="APPENDING",e.PARTIAL="PARTIAL",e.OK="OK"})(a||(a={}));var r=(function(){function e(e){this.activeFragment=null,this.activeParts=null,this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hls=e,this._registerListeners()}var t=e.prototype;return t._registerListeners=function(){var e=this.hls;e.on(n.Events.BUFFER_APPENDED,this.onBufferAppended,this),e.on(n.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.on(n.Events.FRAG_LOADED,this.onFragLoaded,this)},t._unregisterListeners=function(){var e=this.hls;e.off(n.Events.BUFFER_APPENDED,this.onBufferAppended,this),e.off(n.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.off(n.Events.FRAG_LOADED,this.onFragLoaded,this)},t.destroy=function(){this._unregisterListeners(),this.fragments=this.timeRanges=null},t.getAppendedFrag=function(e,t){if(t===i.PlaylistLevelType.MAIN){var o=this.activeFragment,a=this.activeParts;if(!o)return null;if(a)for(var n=a.length;n--;){var r=a[n],s=r?r.end:o.appendedPTS;if(r.start<=e&&void 0!==s&&e<=s)return n>9&&(this.activeParts=a.slice(n-9)),r}else if(o.start<=e&&void 0!==o.appendedPTS&&e<=o.appendedPTS)return o}return this.getBufferedFrag(e,t)},t.getBufferedFrag=function(e,t){for(var o=this.fragments,a=Object.keys(o),n=a.length;n--;){var i=o[a[n]];if((null==i?void 0:i.body.type)===t&&i.buffered){var r=i.body;if(r.start<=e&&e<=r.end)return r}}return null},t.detectEvictedFragments=function(e,t,o){var a=this;Object.keys(this.fragments).forEach((function(n){var i=a.fragments[n];if(i)if(i.buffered){var r=i.range[e];r&&r.time.some((function(e){var o=!a.isTimeBuffered(e.startPTS,e.endPTS,t);return o&&a.removeFragment(i.body),o}))}else i.body.type===o&&a.removeFragment(i.body)}))},t.detectPartialFragments=function(e){var t=this,o=this.timeRanges,a=e.frag,n=e.part;if(o&&"initSegment"!==a.sn){var i=E(a),r=this.fragments[i];r&&(Object.keys(o).forEach((function(e){var i=a.elementaryStreams[e];if(i){var s=o[e],E=null!==n||!0===i.partial;r.range[e]=t.getBufferedTimes(a,n,E,s)}})),r.loaded=null,Object.keys(r.range).length?r.buffered=!0:this.removeFragment(r.body))}},t.fragBuffered=function(e){var t=E(e),o=this.fragments[t];o&&(o.loaded=null,o.buffered=!0)},t.getBufferedTimes=function(e,t,o,a){for(var n={time:[],partial:o},i=t?t.start:e.start,r=t?t.end:e.end,s=e.minEndPTS||r,E=e.maxStartPTS||i,_=0;_<a.length;_++){var T=a.start(_)-this.bufferPadding,l=a.end(_)+this.bufferPadding;if(E>=T&&s<=l){n.time.push({startPTS:Math.max(i,a.start(_)),endPTS:Math.min(r,a.end(_))});break}if(i<l&&r>T)n.partial=!0,n.time.push({startPTS:Math.max(i,a.start(_)),endPTS:Math.min(r,a.end(_))});else if(r<=T)break}return n},t.getPartialFragment=function(e){var t,o,a,n=null,i=0,r=this.bufferPadding,E=this.fragments;return Object.keys(E).forEach((function(_){var T=E[_];T&&s(T)&&(o=T.body.start-r,a=T.body.end+r,e>=o&&e<=a&&(t=Math.min(e-o,a-e),i<=t&&(n=T.body,i=t)))})),n},t.getState=function(e){var t=E(e),o=this.fragments[t];return o?o.buffered?s(o)?a.PARTIAL:a.OK:a.APPENDING:a.NOT_LOADED},t.isTimeBuffered=function(e,t,o){for(var a,n,i=0;i<o.length;i++){if(a=o.start(i)-this.bufferPadding,n=o.end(i)+this.bufferPadding,e>=a&&t<=n)return!0;if(t<=a)return!1}return!1},t.onFragLoaded=function(e,t){var o=t.frag,a=t.part;if("initSegment"!==o.sn&&!o.bitrateTest&&!a){var n=E(o);this.fragments[n]={body:o,loaded:t,buffered:!1,range:Object.create(null)}}},t.onBufferAppended=function(e,t){var o=this,a=t.frag,n=t.part,r=t.timeRanges;if(a.type===i.PlaylistLevelType.MAIN)if(this.activeFragment=a,n){var s=this.activeParts;s||(this.activeParts=s=[]),s.push(n)}else this.activeParts=null;this.timeRanges=r,Object.keys(r).forEach((function(e){var t=r[e];if(o.detectEvictedFragments(e,t),!n)for(var i=0;i<t.length;i++)a.appendedPTS=Math.max(t.end(i),a.appendedPTS||0)}))},t.onFragBuffered=function(e,t){this.detectPartialFragments(t)},t.hasFragment=function(e){var t=E(e);return!!this.fragments[t]},t.removeFragmentsInRange=function(e,t,o){var a=this;Object.keys(this.fragments).forEach((function(n){var i=a.fragments[n];if(i&&i.buffered){var r=i.body;r.type===o&&r.start<t&&r.end>e&&a.removeFragment(r)}}))},t.removeFragment=function(e){var t=E(e);e.stats.loaded=0,e.clearElementaryStreamInfo(),delete this.fragments[t]},t.removeAllFragments=function(){this.fragments=Object.create(null),this.activeFragment=null,this.activeParts=null},e})();function s(e){var t,o;return e.buffered&&((null===(t=e.range.video)||void 0===t?void 0:t.partial)||(null===(o=e.range.audio)||void 0===o?void 0:o.partial))}function E(e){return e.type+"_"+e.level+"_"+e.urlId+"_"+e.sn}},"./src/controller/gap-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"STALL_MINIMUM_DURATION_MS",(function(){return s})),o.d(t,"MAX_START_GAP_JUMP",(function(){return E})),o.d(t,"SKIP_BUFFER_HOLE_STEP_SECONDS",(function(){return _})),o.d(t,"SKIP_BUFFER_RANGE_START",(function(){return T})),o.d(t,"default",(function(){return l}));var a=o("./src/utils/buffer-helper.ts"),n=o("./src/errors.ts"),i=o("./src/events.ts"),r=o("./src/utils/logger.ts"),s=250,E=2,_=.1,T=.05,l=(function(){function e(e,t,o,a){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=e,this.media=t,this.fragmentTracker=o,this.hls=a}var t=e.prototype;return t.destroy=function(){this.media=null,this.hls=this.fragmentTracker=null},t.poll=function(e,t){var o=this.config,n=this.media,i=this.stalled;if(null!==n){var _=n.currentTime,T=n.seeking,l=this.seeking&&!T,S=!this.seeking&&T;if(this.seeking=T,_===e){if((S||l)&&(this.stalled=null),!(n.paused&&!T||n.ended||0===n.playbackRate)&&a.BufferHelper.getBuffered(n).length){var u=a.BufferHelper.bufferInfo(n,_,0),d=u.len>0,c=u.nextStart||0;if(d||c){if(T){var A=u.len>E,I=!c||t&&t.start<=_||c-_>E&&!this.fragmentTracker.getPartialFragment(_);if(A||I)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var O,N=Math.max(c,u.start||0)-_,R=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,m=(null==R||null===(O=R.details)||void 0===O?void 0:O.live)?2*R.details.targetduration:E;if(N>0&&N<=m)return void this._trySkipBufferHole(null)}var p=self.performance.now();if(null!==i){var h=p-i;if(T||!(h>=s)||(this._reportStall(u),this.media)){var L=a.BufferHelper.bufferInfo(n,_,o.maxBufferHole);this._tryFixBufferStall(L,h)}}else this.stalled=p}}}else if(this.moved=!0,null!==i){if(this.stallReported){var f=self.performance.now()-i;r.logger.warn("playback not stuck anymore @"+_+", after "+Math.round(f)+"ms"),this.stallReported=!1}this.stalled=null,this.nudgeRetry=0}}},t._tryFixBufferStall=function(e,t){var o=this.config,a=this.fragmentTracker,n=this.media;if(null!==n){var i=n.currentTime,s=a.getPartialFragment(i);if(s&&(this._trySkipBufferHole(s)||!this.media))return;e.len>o.maxBufferHole&&t>1e3*o.highBufferWatchdogPeriod&&(r.logger.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}},t._reportStall=function(e){var t=this.hls,o=this.media;!this.stallReported&&o&&(this.stallReported=!0,r.logger.warn("Playback stalling at @"+o.currentTime+" due to low buffer ("+JSON.stringify(e)+")"),t.trigger(i.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!1,buffer:e.len}))},t._trySkipBufferHole=function(e){var t=this.config,o=this.hls,s=this.media;if(null===s)return 0;for(var E=s.currentTime,l=0,S=a.BufferHelper.getBuffered(s),u=0;u<S.length;u++){var d=S.start(u);if(E+t.maxBufferHole>=l&&E<d){var c=Math.max(d+T,s.currentTime+_);return r.logger.warn("skipping hole, adjusting currentTime from "+E+" to "+c),this.moved=!0,this.stalled=null,s.currentTime=c,e&&o.trigger(i.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.BUFFER_SEEK_OVER_HOLE,fatal:!1,reason:"fragment loaded with buffer holes, seeking from "+E+" to "+c,frag:e}),c}l=S.end(u)}return 0},t._tryNudgeBuffer=function(){var e=this.config,t=this.hls,o=this.media,a=this.nudgeRetry;if(null!==o){var s=o.currentTime;if(this.nudgeRetry++,a<e.nudgeMaxRetry){var E=s+(a+1)*e.nudgeOffset;r.logger.warn("Nudging 'currentTime' from "+s+" to "+E),o.currentTime=E,t.trigger(i.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.BUFFER_NUDGE_ON_STALL,fatal:!1})}else r.logger.error("Playhead still not moving while enough data buffered @"+s+" after "+e.nudgeMaxRetry+" nudges"),t.trigger(i.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!0})}},e})()},"./src/controller/id3-track-controller.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/polyfills/number.ts"),n=o("./src/events.ts"),i=o("./src/utils/texttrack-utils.ts"),r=o("./src/demux/id3.ts"),s=o("./src/loader/date-range.ts"),E=o("./src/types/demuxer.ts");function _(){return self.WebKitDataCue||self.VTTCue||self.TextTrackCue}function T(e,t){return e.getTime()/1e3-t}var l=(function(){function e(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=e,this._registerListeners()}var t=e.prototype;return t.destroy=function(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null},t._registerListeners=function(){var e=this.hls;e.on(n.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(n.Events.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this)},t._unregisterListeners=function(){var e=this.hls;e.off(n.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(n.Events.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this)},t.onMediaAttached=function(e,t){this.media=t.media},t.onMediaDetaching=function(){this.id3Track&&(Object(i.clearCurrentCues)(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})},t.onManifestLoading=function(){this.dateRangeCuesAppended={}},t.createTrack=function(e){var t=this.getID3Track(e.textTracks);return t.mode="hidden",t},t.getID3Track=function(e){if(this.media){for(var t=0;t<e.length;t++){var o=e[t];if("metadata"===o.kind&&"id3"===o.label)return Object(i.sendAddTrackEvent)(o,this.media),o}return this.media.addTextTrack("metadata","id3")}},t.onFragParsingMetadata=function(e,t){if(this.media){var o=this.hls.config,a=o.enableEmsgMetadataCues,n=o.enableID3MetadataCues;if(a||n){var i=t.frag,s=t.samples,T=t.details;this.id3Track||(this.id3Track=this.createTrack(this.media));for(var l=T.edge||i.end,S=_(),u=!1,d={},c=0;c<s.length;c++){var A=s[c].type;if((A!==E.MetadataSchema.emsg||a)&&n){var I=r.getID3Frames(s[c].data);if(I){var O=s[c].pts,N=l;N-O<=0&&(N=O+.25);for(var R=0;R<I.length;R++){var m=I[R];if(!r.isTimeStampFrame(m)){var p=new S(O,N,"");p.value=m,A&&(p.type=A),this.id3Track.addCue(p),d[m.key]=null,u=!0}}}}}u&&this.updateId3CueEnds(d)}}},t.updateId3CueEnds=function(e){var t,o=null===(t=this.id3Track)||void 0===t?void 0:t.cues;if(o)for(var a=o.length;a--;){var n,i=o[a],r=null===(n=i.value)||void 0===n?void 0:n.key;if(r&&r in e){var s=e[r];s&&i.endTime!==s&&(i.endTime=s),e[r]=i.startTime}}},t.onBufferFlushing=function(e,t){var o=t.startOffset,a=t.endOffset,n=t.type,r=this.id3Track,s=this.hls;if(s){var _,T=s.config,l=T.enableEmsgMetadataCues,S=T.enableID3MetadataCues;r&&(l||S)&&(_="audio"===n?function(e){return e.type===E.MetadataSchema.audioId3&&S}:"video"===n?function(e){return e.type===E.MetadataSchema.emsg&&l}:function(e){return e.type===E.MetadataSchema.audioId3&&S||e.type===E.MetadataSchema.emsg&&l},Object(i.removeCuesInRange)(r,o,a,_))}},t.onLevelUpdated=function(e,t){var o=this,n=t.details;if(this.media&&n.hasProgramDateTime&&this.hls.config.enableDateRangeMetadataCues){var i=this.dateRangeCuesAppended,r=this.id3Track,l=n.dateRanges,S=Object.keys(l);if(r)for(var u=Object.keys(i).filter((function(e){return!S.includes(e)})),d=function(e){var t=u[e];Object.keys(i[t].cues).forEach((function(e){r.removeCue(i[t].cues[e])})),delete i[t]},c=u.length;c--;)d(c);var A=n.fragments[n.fragments.length-1];if(0!==S.length&&Object(a.isFiniteNumber)(null==A?void 0:A.programDateTime)){this.id3Track||(this.id3Track=this.createTrack(this.media));for(var I=A.programDateTime/1e3-A.start,O=n.edge||A.end,N=_(),R=function(e){var t=S[e],a=l[t],n=i[t],r=(null==n?void 0:n.cues)||{},_=(null==n?void 0:n.durationKnown)||!1,u=T(a.startDate,I),d=O,c=a.endDate;if(c)d=T(c,I),_=!0;else if(a.endOnNext&&!_){var A=S.reduce((function(e,t){var o=l[t];return o.class===a.class&&o.id!==t&&o.startDate>a.startDate&&e.push(o),e}),[]).sort((function(e,t){return e.startDate.getTime()-t.startDate.getTime()}))[0];A&&(d=T(A.startDate,I),_=!0)}for(var R,m=Object.keys(a.attr),p=0;p<m.length;p++){var h=m[p];if(h!==s.DateRangeAttribute.ID&&h!==s.DateRangeAttribute.CLASS&&h!==s.DateRangeAttribute.START_DATE&&h!==s.DateRangeAttribute.DURATION&&h!==s.DateRangeAttribute.END_DATE&&h!==s.DateRangeAttribute.END_ON_NEXT){var L=r[h];if(L)_&&!n.durationKnown&&(L.endTime=d);else{var f=a.attr[h];L=new N(u,d,""),h!==s.DateRangeAttribute.SCTE35_OUT&&h!==s.DateRangeAttribute.SCTE35_IN||(R=f,f=Uint8Array.from(R.replace(/^0x/,"").replace(/([\da-fA-F]{2}) ?/g,"0x$1 ").replace(/ +$/,"").split(" ")).buffer),L.value={key:h,data:f},L.type=E.MetadataSchema.dateRange,o.id3Track.addCue(L),r[h]=L}}}i[t]={cues:r,dateRange:a,durationKnown:_}},m=0;m<S.length;m++)R(m)}}},e})();t.default=l},"./src/controller/latency-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return s}));var a=o("./src/errors.ts"),n=o("./src/events.ts"),i=o("./src/utils/logger.ts");function r(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}var s=(function(){function e(e){var t=this;this.hls=void 0,this.config=void 0,this.media=null,this.levelDetails=null,this.currentTime=0,this.stallCount=0,this._latency=null,this.timeupdateHandler=function(){return t.timeupdate()},this.hls=e,this.config=e.config,this.registerListeners()}var t,o,s,E=e.prototype;return E.destroy=function(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null},E.registerListeners=function(){this.hls.on(n.Events.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(n.Events.ERROR,this.onError,this)},E.unregisterListeners=function(){this.hls.off(n.Events.MEDIA_ATTACHED,this.onMediaAttached),this.hls.off(n.Events.MEDIA_DETACHING,this.onMediaDetaching),this.hls.off(n.Events.MANIFEST_LOADING,this.onManifestLoading),this.hls.off(n.Events.LEVEL_UPDATED,this.onLevelUpdated),this.hls.off(n.Events.ERROR,this.onError)},E.onMediaAttached=function(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)},E.onMediaDetaching=function(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)},E.onManifestLoading=function(){this.levelDetails=null,this._latency=null,this.stallCount=0},E.onLevelUpdated=function(e,t){var o=t.details;this.levelDetails=o,o.advanced&&this.timeupdate(),!o.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)},E.onError=function(e,t){t.details===a.ErrorDetails.BUFFER_STALLED_ERROR&&(this.stallCount++,i.logger.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))},E.timeupdate=function(){var e=this.media,t=this.levelDetails;if(e&&t){this.currentTime=e.currentTime;var o=this.computeLatency();if(null!==o){this._latency=o;var a=this.config,n=a.lowLatencyMode,i=a.maxLiveSyncPlaybackRate;if(n&&1!==i){var r=this.targetLatency;if(null!==r){var s=o-r,E=s<Math.min(this.maxLatency,r+t.targetduration);if(t.live&&E&&s>.05&&this.forwardBufferLength>1){var _=Math.min(2,Math.max(1,i)),T=Math.round(2/(1+Math.exp(-.75*s-this.edgeStalled))*20)/20;e.playbackRate=Math.min(_,Math.max(1,T))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}}}}},E.estimateLiveEdge=function(){var e=this.levelDetails;return null===e?null:e.edge+e.age},E.computeLatency=function(){var e=this.estimateLiveEdge();return null===e?null:e-this.currentTime},t=e,(o=[{key:"latency",get:function(){return this._latency||0}},{key:"maxLatency",get:function(){var e=this.config,t=this.levelDetails;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}},{key:"targetLatency",get:function(){var e=this.levelDetails;if(null===e)return null;var t=e.holdBack,o=e.partHoldBack,a=e.targetduration,n=this.config,i=n.liveSyncDuration,r=n.liveSyncDurationCount,s=n.lowLatencyMode,E=this.hls.userConfig,_=s&&o||t;(E.liveSyncDuration||E.liveSyncDurationCount||0===_)&&(_=void 0!==i?i:r*a);var T=a;return _+Math.min(1*this.stallCount,T)}},{key:"liveSyncPosition",get:function(){var e=this.estimateLiveEdge(),t=this.targetLatency,o=this.levelDetails;if(null===e||null===t||null===o)return null;var a=o.edge,n=e-t-this.edgeStalled,i=a-o.totalduration,r=a-(this.config.lowLatencyMode&&o.partTarget||o.targetduration);return Math.min(Math.max(i,n),r)}},{key:"drift",get:function(){var e=this.levelDetails;return null===e?1:e.drift}},{key:"edgeStalled",get:function(){var e=this.levelDetails;if(null===e)return 0;var t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}},{key:"forwardBufferLength",get:function(){var e=this.media,t=this.levelDetails;if(!e||!t)return 0;var o=e.buffered.length;return(o?e.buffered.end(o-1):t.edge)-this.currentTime}}])&&r(t.prototype,o),s&&r(t,s),Object.defineProperty(t,"prototype",{writable:!1}),e})()},"./src/controller/level-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return d}));var a=o("./src/types/level.ts"),n=o("./src/events.ts"),i=o("./src/errors.ts"),r=o("./src/utils/codecs.ts"),s=o("./src/controller/level-helper.ts"),E=o("./src/controller/base-playlist-controller.ts"),_=o("./src/types/loader.ts");function T(){return T=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},T.apply(this,arguments)}function l(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function S(e,t){return S=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},S(e,t)}var u=/chrome|firefox/.test(navigator.userAgent.toLowerCase()),d=(function(e){var t,o;function E(t){var o;return(o=e.call(this,t,"[level-controller]")||this)._levels=[],o._firstLevel=-1,o._startLevel=void 0,o.currentLevelIndex=-1,o.manualLevelIndex=-1,o.onParsedComplete=void 0,o._registerListeners(),o}o=e,(t=E).prototype=Object.create(o.prototype),t.prototype.constructor=t,S(t,o);var d,c,A,I=E.prototype;return I._registerListeners=function(){var e=this.hls;e.on(n.Events.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(n.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(n.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.on(n.Events.FRAG_LOADED,this.onFragLoaded,this),e.on(n.Events.ERROR,this.onError,this)},I._unregisterListeners=function(){var e=this.hls;e.off(n.Events.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(n.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(n.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.off(n.Events.FRAG_LOADED,this.onFragLoaded,this),e.off(n.Events.ERROR,this.onError,this)},I.destroy=function(){this._unregisterListeners(),this.manualLevelIndex=-1,this._levels.length=0,e.prototype.destroy.call(this)},I.startLoad=function(){this._levels.forEach((function(e){e.loadError=0})),e.prototype.startLoad.call(this)},I.onManifestLoaded=function(e,t){var o,E,_=[],T=[],l=[],S={},d=!1,c=!1,A=!1;if(t.levels.forEach((function(e){var t=e.attrs;d=d||!(!e.width||!e.height),c=c||!!e.videoCodec,A=A||!!e.audioCodec,u&&e.audioCodec&&-1!==e.audioCodec.indexOf("mp4a.40.34")&&(e.audioCodec=void 0);var o=e.bitrate+"-"+e.attrs.RESOLUTION+"-"+e.attrs.CODECS;(E=S[o])?E.url.push(e.url):(E=new a.Level(e),S[o]=E,_.push(E)),t&&(t.AUDIO&&Object(s.addGroupId)(E,"audio",t.AUDIO),t.SUBTITLES&&Object(s.addGroupId)(E,"text",t.SUBTITLES))})),(d||c)&&A&&(_=_.filter((function(e){var t=e.videoCodec,o=e.width,a=e.height;return!!t||!(!o||!a)}))),_=_.filter((function(e){var t=e.audioCodec,o=e.videoCodec;return(!t||Object(r.isCodecSupportedInMp4)(t,"audio"))&&(!o||Object(r.isCodecSupportedInMp4)(o,"video"))})),t.audioTracks&&(T=t.audioTracks.filter((function(e){return!e.audioCodec||Object(r.isCodecSupportedInMp4)(e.audioCodec,"audio")})),Object(s.assignTrackIdsByGroup)(T)),t.subtitles&&(l=t.subtitles,Object(s.assignTrackIdsByGroup)(l)),_.length>0){o=_[0].bitrate,_.sort((function(e,t){return e.bitrate-t.bitrate})),this._levels=_;for(var I=0;I<_.length;I++)if(_[I].bitrate===o){this._firstLevel=I,this.log("manifest loaded, "+_.length+" level(s) found, first bitrate: "+o);break}var O=A&&!c,N={levels:_,audioTracks:T,subtitleTracks:l,firstLevel:this._firstLevel,stats:t.stats,audio:A,video:c,altAudio:!O&&T.some((function(e){return!!e.url}))};this.hls.trigger(n.Events.MANIFEST_PARSED,N),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}else this.hls.trigger(n.Events.ERROR,{type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,reason:"no level with compatible codecs found in manifest"})},I.onError=function(t,o){var a;if(e.prototype.onError.call(this,t,o),!o.fatal){var n=o.context,r=this._levels[this.currentLevelIndex];if(n&&(n.type===_.PlaylistContextType.AUDIO_TRACK&&r.audioGroupIds&&n.groupId===r.audioGroupIds[r.urlId]||n.type===_.PlaylistContextType.SUBTITLE_TRACK&&r.textGroupIds&&n.groupId===r.textGroupIds[r.urlId]))this.redundantFailover(this.currentLevelIndex);else{var s,E=!1,T=!0;switch(o.details){case i.ErrorDetails.FRAG_LOAD_ERROR:case i.ErrorDetails.FRAG_LOAD_TIMEOUT:case i.ErrorDetails.KEY_LOAD_ERROR:case i.ErrorDetails.KEY_LOAD_TIMEOUT:if(o.frag){var l=o.frag.type===_.PlaylistLevelType.MAIN?o.frag.level:this.currentLevelIndex,S=this._levels[l];S?(S.fragmentError++,S.fragmentError>this.hls.config.fragLoadingMaxRetry&&(s=l)):s=l}break;case i.ErrorDetails.LEVEL_LOAD_ERROR:case i.ErrorDetails.LEVEL_LOAD_TIMEOUT:n&&(n.deliveryDirectives&&(T=!1),s=n.level),E=!0;break;case i.ErrorDetails.REMUX_ALLOC_ERROR:s=null!=(a=o.level)?a:this.currentLevelIndex,E=!0}void 0!==s&&this.recoverLevel(o,s,E,T)}}},I.recoverLevel=function(e,t,o,a){var n=e.details,i=this._levels[t];if(i.loadError++,o){if(!this.retryLoadingOrFail(e))return void(this.currentLevelIndex=-1);e.levelRetry=!0}if(a){var r=i.url.length;if(r>1&&i.loadError<r)e.levelRetry=!0,this.redundantFailover(t);else if(-1===this.manualLevelIndex){for(var s=-1,E=this._levels,_=E.length;_--;){var T=(_+this.currentLevelIndex)%E.length;if(T!==this.currentLevelIndex&&0===E[T].loadError){s=T;break}}s>-1&&this.currentLevelIndex!==s&&(this.warn(n+": switch to "+s),e.levelRetry=!0,this.hls.nextAutoLevel=s)}}},I.redundantFailover=function(e){var t=this._levels[e],o=t.url.length;if(o>1){var a=(t.urlId+1)%o;this.warn("Switching to redundant URL-id "+a),this._levels.forEach((function(e){e.urlId=a})),this.level=e}},I.onFragLoaded=function(e,t){var o=t.frag;if(void 0!==o&&o.type===_.PlaylistLevelType.MAIN){var a=this._levels[o.level];void 0!==a&&(a.fragmentError=0,a.loadError=0)}},I.onLevelLoaded=function(e,t){var o,a,n=t.level,i=t.details,r=this._levels[n];if(!r)return this.warn("Invalid level index "+n),void(null!==(a=t.deliveryDirectives)&&void 0!==a&&a.skip&&(i.deltaUpdateFailed=!0));n===this.currentLevelIndex?(0===r.fragmentError&&(r.loadError=0,this.retryCount=0),this.playlistLoaded(n,t,r.details)):null!==(o=t.deliveryDirectives)&&void 0!==o&&o.skip&&(i.deltaUpdateFailed=!0)},I.onAudioTrackSwitched=function(e,t){var o=this.hls.levels[this.currentLevelIndex];if(o&&o.audioGroupIds){for(var a=-1,n=this.hls.audioTracks[t.id].groupId,i=0;i<o.audioGroupIds.length;i++)if(o.audioGroupIds[i]===n){a=i;break}a!==o.urlId&&(o.urlId=a,this.startLoad())}},I.loadPlaylist=function(e){var t=this.currentLevelIndex,o=this._levels[t];if(this.canLoad&&o&&o.url.length>0){var a=o.urlId,i=o.url[a];if(e)try{i=e.addDirectives(i)}catch(e){this.warn("Could not construct new URL with HLS Delivery Directives: "+e)}this.log("Attempt loading level index "+t+(e?" at sn "+e.msn+" part "+e.part:"")+" with URL-id "+a+" "+i),this.clearTimer(),this.hls.trigger(n.Events.LEVEL_LOADING,{url:i,level:t,id:a,deliveryDirectives:e||null})}},I.removeLevel=function(e,t){var o=function(e,o){return o!==t},a=this._levels.filter((function(a,n){return n!==e||a.url.length>1&&void 0!==t&&(a.url=a.url.filter(o),a.audioGroupIds&&(a.audioGroupIds=a.audioGroupIds.filter(o)),a.textGroupIds&&(a.textGroupIds=a.textGroupIds.filter(o)),a.urlId=0,!0)})).map((function(e,t){var o=e.details;return null!=o&&o.fragments&&o.fragments.forEach((function(e){e.level=t})),e}));this._levels=a,this.hls.trigger(n.Events.LEVELS_UPDATED,{levels:a})},d=E,(c=[{key:"levels",get:function(){return 0===this._levels.length?null:this._levels}},{key:"level",get:function(){return this.currentLevelIndex},set:function(e){var t,o=this._levels;if(0!==o.length&&(this.currentLevelIndex!==e||null===(t=o[e])||void 0===t||!t.details)){if(e<0||e>=o.length){var a=e<0;if(this.hls.trigger(n.Events.ERROR,{type:i.ErrorTypes.OTHER_ERROR,details:i.ErrorDetails.LEVEL_SWITCH_ERROR,level:e,fatal:a,reason:"invalid level idx"}),a)return;e=Math.min(e,o.length-1)}this.clearTimer();var r=this.currentLevelIndex,s=o[r],E=o[e];this.log("switching to level "+e+" from "+r),this.currentLevelIndex=e;var _=T({},E,{level:e,maxBitrate:E.maxBitrate,uri:E.uri,urlId:E.urlId});delete _._urlId,this.hls.trigger(n.Events.LEVEL_SWITCHING,_);var l=E.details;if(!l||l.live){var S=this.switchParams(E.uri,null==s?void 0:s.details);this.loadPlaylist(S)}}}},{key:"manualLevel",get:function(){return this.manualLevelIndex},set:function(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(e){this._firstLevel=e}},{key:"startLevel",get:function(){if(void 0===this._startLevel){var e=this.hls.config.startLevel;return void 0!==e?e:this._firstLevel}return this._startLevel},set:function(e){this._startLevel=e}},{key:"nextLoadLevel",get:function(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel},set:function(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}}])&&l(d.prototype,c),A&&l(d,A),Object.defineProperty(d,"prototype",{writable:!1}),E})(E.default)},"./src/controller/level-helper.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"addGroupId",(function(){return s})),o.d(t,"assignTrackIdsByGroup",(function(){return E})),o.d(t,"updatePTS",(function(){return _})),o.d(t,"updateFragPTSDTS",(function(){return l})),o.d(t,"mergeDetails",(function(){return S})),o.d(t,"mapPartIntersection",(function(){return u})),o.d(t,"mapFragmentIntersection",(function(){return d})),o.d(t,"adjustSliding",(function(){return c})),o.d(t,"addSliding",(function(){return A})),o.d(t,"computeReloadInterval",(function(){return I})),o.d(t,"getFragmentWithSN",(function(){return O})),o.d(t,"getPartWith",(function(){return N}));var a=o("./src/polyfills/number.ts"),n=o("./src/utils/logger.ts"),i=o("./src/loader/date-range.ts");function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},r.apply(this,arguments)}function s(e,t,o){switch(t){case"audio":e.audioGroupIds||(e.audioGroupIds=[]),e.audioGroupIds.push(o);break;case"text":e.textGroupIds||(e.textGroupIds=[]),e.textGroupIds.push(o)}}function E(e){var t={};e.forEach((function(e){var o=e.groupId||"";e.id=t[o]=t[o]||0,t[o]++}))}function _(e,t,o){T(e[t],e[o])}function T(e,t){var o=t.startPTS;if(Object(a.isFiniteNumber)(o)){var n,i=0;t.sn>e.sn?(i=o-e.start,n=e):(i=e.start-o,n=t),n.duration!==i&&(n.duration=i)}else t.sn>e.sn?e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration:t.start=Math.max(e.start-t.duration,0)}function l(e,t,o,i,r,s){i-o<=0&&(n.logger.warn("Fragment should have a positive duration",t),i=o+t.duration,s=r+t.duration);var E=o,_=i,l=t.startPTS,S=t.endPTS;if(Object(a.isFiniteNumber)(l)){var u=Math.abs(l-o);Object(a.isFiniteNumber)(t.deltaPTS)?t.deltaPTS=Math.max(u,t.deltaPTS):t.deltaPTS=u,E=Math.max(o,l),o=Math.min(o,l),r=Math.min(r,t.startDTS),_=Math.min(i,S),i=Math.max(i,S),s=Math.max(s,t.endDTS)}t.duration=i-o;var d=o-t.start;t.appendedPTS=i,t.start=t.startPTS=o,t.maxStartPTS=E,t.startDTS=r,t.endPTS=i,t.minEndPTS=_,t.endDTS=s;var c,A=t.sn;if(!e||A<e.startSN||A>e.endSN)return 0;var I=A-e.startSN,O=e.fragments;for(O[I]=t,c=I;c>0;c--)T(O[c],O[c-1]);for(c=I;c<O.length-1;c++)T(O[c],O[c+1]);return e.fragmentHint&&T(O[O.length-1],e.fragmentHint),e.PTSKnown=e.alignedSliding=!0,d}function S(e,t){for(var o=null,s=e.fragments,E=s.length-1;E>=0;E--){var _=s[E].initSegment;if(_){o=_;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;var T,S,A,I,O,N=0;if(d(e,t,(function(e,n){e.relurl&&(N=e.cc-n.cc),Object(a.isFiniteNumber)(e.startPTS)&&Object(a.isFiniteNumber)(e.endPTS)&&(n.start=n.startPTS=e.startPTS,n.startDTS=e.startDTS,n.appendedPTS=e.appendedPTS,n.maxStartPTS=e.maxStartPTS,n.endPTS=e.endPTS,n.endDTS=e.endDTS,n.minEndPTS=e.minEndPTS,n.duration=e.endPTS-e.startPTS,n.duration&&(T=n),t.PTSKnown=t.alignedSliding=!0),n.elementaryStreams=e.elementaryStreams,n.loader=e.loader,n.stats=e.stats,n.urlId=e.urlId,e.initSegment&&(n.initSegment=e.initSegment,o=e.initSegment)})),o&&(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((function(e){var t;e.initSegment&&e.initSegment.relurl!==(null===(t=o)||void 0===t?void 0:t.relurl)||(e.initSegment=o)})),t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((function(e){return!e})),t.deltaUpdateFailed){n.logger.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(var R=t.skippedSegments;R--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=(S=e.dateRanges,A=t.dateRanges,I=t.recentlyRemovedDateranges,O=r({},S),I&&I.forEach((function(e){delete O[e]})),Object.keys(A).forEach((function(e){var t=new i.DateRange(A[e].attr,O[e]);t.isValid?O[e]=t:n.logger.warn('Ignoring invalid Playlist Delta Update DATERANGE tag: "'+JSON.stringify(A[e].attr)+'"')})),O));var m=t.fragments;if(N){n.logger.warn("discontinuity sliding from playlist, take drift into account");for(var p=0;p<m.length;p++)m[p].cc+=N}t.skippedSegments&&(t.startCC=t.fragments[0].cc),u(e.partList,t.partList,(function(e,t){t.elementaryStreams=e.elementaryStreams,t.stats=e.stats})),T?l(t,T,T.startPTS,T.endPTS,T.startDTS,T.endDTS):c(e,t),m.length&&(t.totalduration=t.edge-m[0].start),t.driftStartTime=e.driftStartTime,t.driftStart=e.driftStart;var h=t.advancedDateTime;if(t.advanced&&h){var L=t.edge;t.driftStart||(t.driftStartTime=h,t.driftStart=L),t.driftEndTime=h,t.driftEnd=L}else t.driftEndTime=e.driftEndTime,t.driftEnd=e.driftEnd,t.advancedDateTime=e.advancedDateTime}function u(e,t,o){if(e&&t)for(var a=0,n=0,i=e.length;n<=i;n++){var r=e[n],s=t[n+a];r&&s&&r.index===s.index&&r.fragment.sn===s.fragment.sn?o(r,s):a--}}function d(e,t,o){for(var a=t.skippedSegments,n=Math.max(e.startSN,t.startSN)-t.startSN,i=(e.fragmentHint?1:0)+(a?t.endSN:Math.min(e.endSN,t.endSN))-t.startSN,r=t.startSN-e.startSN,s=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,E=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments,_=n;_<=i;_++){var T=E[r+_],l=s[_];a&&!l&&_<a&&(l=t.fragments[_]=T),T&&l&&o(T,l)}}function c(e,t){var o=t.startSN+t.skippedSegments-e.startSN,a=e.fragments;o<0||o>=a.length||A(t,a[o].start)}function A(e,t){if(t){for(var o=e.fragments,a=e.skippedSegments;a<o.length;a++)o[a].start+=t;e.fragmentHint&&(e.fragmentHint.start+=t)}}function I(e,t){var o,a=1e3*e.levelTargetDuration,n=a/2,i=e.age,r=i>0&&i<3*a,s=t.loading.end-t.loading.start,E=e.availabilityDelay;if(!1===e.updated)if(r){var _=333*e.misses;o=Math.max(Math.min(n,2*s),_),e.availabilityDelay=(e.availabilityDelay||0)+o}else o=n;else r?(E=Math.min(E||a/2,i),e.availabilityDelay=E,o=E+a-i):o=a-s;return Math.round(o)}function O(e,t,o){if(!e||!e.details)return null;var a=e.details,n=a.fragments[t-a.startSN];return n||((n=a.fragmentHint)&&n.sn===t?n:t<a.startSN&&o&&o.sn===t?o:null)}function N(e,t,o){if(!e||!e.details)return null;var a=e.details.partList;if(a)for(var n=a.length;n--;){var i=a[n];if(i.index===o&&i.fragment.sn===t)return i}return null}},"./src/controller/stream-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return I}));var a=o("./src/polyfills/number.ts"),n=o("./src/controller/base-stream-controller.ts"),i=o("./src/is-supported.ts"),r=o("./src/events.ts"),s=o("./src/utils/buffer-helper.ts"),E=o("./src/controller/fragment-tracker.ts"),_=o("./src/types/loader.ts"),T=o("./src/loader/fragment.ts"),l=o("./src/demux/transmuxer-interface.ts"),S=o("./src/types/transmuxer.ts"),u=o("./src/controller/gap-controller.ts"),d=o("./src/errors.ts");function c(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function A(e,t){return A=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},A(e,t)}var I=(function(e){var t,o;function I(t,o){var a;return(a=e.call(this,t,o,"[stream-controller]")||this).audioCodecSwap=!1,a.gapController=null,a.level=-1,a._forceStartLoad=!1,a.altAudio=!1,a.audioOnly=!1,a.fragPlaying=null,a.onvplaying=null,a.onvseeked=null,a.fragLastKbps=0,a.couldBacktrack=!1,a.backtrackFragment=null,a.audioCodecSwitch=!1,a.videoBuffer=null,a._registerListeners(),a}o=e,(t=I).prototype=Object.create(o.prototype),t.prototype.constructor=t,A(t,o);var O,N,R,m=I.prototype;return m._registerListeners=function(){var e=this.hls;e.on(r.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(r.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(r.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(r.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(r.Events.LEVEL_LOADING,this.onLevelLoading,this),e.on(r.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(r.Events.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.on(r.Events.ERROR,this.onError,this),e.on(r.Events.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(r.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.on(r.Events.BUFFER_CREATED,this.onBufferCreated,this),e.on(r.Events.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(r.Events.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(r.Events.FRAG_BUFFERED,this.onFragBuffered,this)},m._unregisterListeners=function(){var e=this.hls;e.off(r.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(r.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(r.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(r.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(r.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(r.Events.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.off(r.Events.ERROR,this.onError,this),e.off(r.Events.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(r.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.off(r.Events.BUFFER_CREATED,this.onBufferCreated,this),e.off(r.Events.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(r.Events.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(r.Events.FRAG_BUFFERED,this.onFragBuffered,this)},m.onHandlerDestroying=function(){this._unregisterListeners(),this.onMediaDetaching()},m.startLoad=function(e){if(this.levels){var t=this.lastCurrentTime,o=this.hls;if(this.stopLoad(),this.setInterval(100),this.level=-1,this.fragLoadError=0,!this.startFragRequested){var a=o.startLevel;-1===a&&(o.config.testBandwidth&&this.levels.length>1?(a=0,this.bitrateTest=!0):a=o.nextAutoLevel),this.level=o.nextLoadLevel=a,this.loadedmetadata=!1}t>0&&-1===e&&(this.log("Override startPosition with lastCurrentTime @"+t.toFixed(3)),e=t),this.state=n.State.IDLE,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=n.State.STOPPED},m.stopLoad=function(){this._forceStartLoad=!1,e.prototype.stopLoad.call(this)},m.doTick=function(){switch(this.state){case n.State.IDLE:this.doTickIdle();break;case n.State.WAITING_LEVEL:var e,t=this.levels,o=this.level,a=null==t||null===(e=t[o])||void 0===e?void 0:e.details;if(a&&(!a.live||this.levelLastLoaded===this.level)){if(this.waitForCdnTuneIn(a))break;this.state=n.State.IDLE;break}break;case n.State.FRAG_LOADING_WAITING_RETRY:var i,r=self.performance.now(),s=this.retryDate;(!s||r>=s||null!==(i=this.media)&&void 0!==i&&i.seeking)&&(this.log("retryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded(this.level),this.state=n.State.IDLE)}this.onTickEnd()},m.onTickEnd=function(){e.prototype.onTickEnd.call(this),this.checkBuffer(),this.checkFragmentChanged()},m.doTickIdle=function(){var e,t,o=this.hls,a=this.levelLastLoaded,i=this.levels,s=this.media,l=o.config,S=o.nextLoadLevel;if(null!==a&&(s||!this.startFragRequested&&l.startFragPrefetch)&&(!this.altAudio||!this.audioOnly)&&i&&i[S]){var u=i[S];this.level=o.nextLoadLevel=S;var d=u.details;if(!d||this.state===n.State.WAITING_LEVEL||d.live&&this.levelLastLoaded!==S)this.state=n.State.WAITING_LEVEL;else{var c=this.getMainFwdBufferInfo();if(null!==c&&!(c.len>=this.getMaxBufferLength(u.maxBitrate))){if(this._streamEnded(c,d)){var A={};return this.altAudio&&(A.type="video"),this.hls.trigger(r.Events.BUFFER_EOS,A),void(this.state=n.State.ENDED)}this.backtrackFragment&&this.backtrackFragment.start>c.end&&(this.backtrackFragment=null);var I=this.backtrackFragment?this.backtrackFragment.start:c.end,O=this.getNextFragment(I,d);if(this.couldBacktrack&&!this.fragPrevious&&O&&"initSegment"!==O.sn&&this.fragmentTracker.getState(O)!==E.FragmentState.OK){var N,R=(null!=(N=this.backtrackFragment)?N:O).sn-d.startSN,m=d.fragments[R-1];m&&O.cc===m.cc&&(O=m,this.fragmentTracker.removeFragment(m))}else this.backtrackFragment&&c.len&&(this.backtrackFragment=null);if(O&&this.fragmentTracker.getState(O)===E.FragmentState.OK&&this.nextLoadPosition>I){var p=this.audioOnly&&!this.altAudio?T.ElementaryStreamTypes.AUDIO:T.ElementaryStreamTypes.VIDEO;s&&this.afterBufferFlushed(s,p,_.PlaylistLevelType.MAIN),O=this.getNextFragment(this.nextLoadPosition,d)}O&&(!O.initSegment||O.initSegment.data||this.bitrateTest||(O=O.initSegment),"identity"!==(null===(e=O.decryptdata)||void 0===e?void 0:e.keyFormat)||null!==(t=O.decryptdata)&&void 0!==t&&t.key?this.loadFragment(O,d,I):this.loadKey(O,d))}}}},m.loadFragment=function(t,o,a){var n,i=this.fragmentTracker.getState(t);this.fragCurrent=t,i===E.FragmentState.NOT_LOADED?"initSegment"===t.sn?this._loadInitSegment(t):this.bitrateTest?(this.log("Fragment "+t.sn+" of level "+t.level+" is being downloaded to test bitrate and will not be buffered"),this._loadBitrateTestFrag(t)):(this.startFragRequested=!0,e.prototype.loadFragment.call(this,t,o,a)):i===E.FragmentState.APPENDING?this.reduceMaxBufferLength(t.duration)&&this.fragmentTracker.removeFragment(t):0===(null===(n=this.media)||void 0===n?void 0:n.buffered.length)&&this.fragmentTracker.removeAllFragments()},m.getAppendedFrag=function(e){var t=this.fragmentTracker.getAppendedFrag(e,_.PlaylistLevelType.MAIN);return t&&"fragment"in t?t.fragment:t},m.getBufferedFrag=function(e){return this.fragmentTracker.getBufferedFrag(e,_.PlaylistLevelType.MAIN)},m.followingBufferedFrag=function(e){return e?this.getBufferedFrag(e.end+.5):null},m.immediateLevelSwitch=function(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)},m.nextLevelSwitch=function(){var e=this.levels,t=this.media;if(null!=t&&t.readyState){var o,a=this.getAppendedFrag(t.currentTime);if(a&&a.start>1&&this.flushMainBuffer(0,a.start-1),!t.paused&&e){var n=e[this.hls.nextLoadLevel],i=this.fragLastKbps;o=i&&this.fragCurrent?this.fragCurrent.duration*n.maxBitrate/(1e3*i)+1:0}else o=0;var r=this.getBufferedFrag(t.currentTime+o);if(r){var s=this.followingBufferedFrag(r);if(s){this.abortCurrentFrag();var E=s.maxStartPTS?s.maxStartPTS:s.start,_=s.duration,T=Math.max(r.end,E+Math.min(Math.max(_-this.config.maxFragLookUpTolerance,.5*_),.75*_));this.flushMainBuffer(T,Number.POSITIVE_INFINITY)}}}},m.abortCurrentFrag=function(){var e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,null!=e&&e.loader&&e.loader.abort(),this.state){case n.State.KEY_LOADING:case n.State.FRAG_LOADING:case n.State.FRAG_LOADING_WAITING_RETRY:case n.State.PARSING:case n.State.PARSED:this.state=n.State.IDLE}this.nextLoadPosition=this.getLoadPosition()},m.flushMainBuffer=function(t,o){e.prototype.flushMainBuffer.call(this,t,o,this.altAudio?"video":null)},m.onMediaAttached=function(t,o){e.prototype.onMediaAttached.call(this,t,o);var a=o.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),a.addEventListener("playing",this.onvplaying),a.addEventListener("seeked",this.onvseeked),this.gapController=new u.default(this.config,a,this.fragmentTracker,this.hls)},m.onMediaDetaching=function(){var t=this.media;t&&this.onvplaying&&this.onvseeked&&(t.removeEventListener("playing",this.onvplaying),t.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),e.prototype.onMediaDetaching.call(this)},m.onMediaPlaying=function(){this.tick()},m.onMediaSeeked=function(){var e=this.media,t=e?e.currentTime:null;Object(a.isFiniteNumber)(t)&&this.log("Media seeked to "+t.toFixed(3)),this.tick()},m.onManifestLoading=function(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(r.Events.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=0,this.fragPlaying=null,this.backtrackFragment=null},m.onManifestParsed=function(e,t){var o,a=!1,n=!1;t.levels.forEach((function(e){(o=e.audioCodec)&&(-1!==o.indexOf("mp4a.40.2")&&(a=!0),-1!==o.indexOf("mp4a.40.5")&&(n=!0))})),this.audioCodecSwitch=a&&n&&!Object(i.changeTypeSupported)(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1},m.onLevelLoading=function(e,t){var o=this.levels;if(o&&this.state===n.State.IDLE){var a=o[t.level];(!a.details||a.details.live&&this.levelLastLoaded!==t.level||this.waitForCdnTuneIn(a.details))&&(this.state=n.State.WAITING_LEVEL)}},m.onLevelLoaded=function(e,t){var o,a=this.levels,i=t.level,s=t.details,E=s.totalduration;if(a){this.log("Level "+i+" loaded ["+s.startSN+","+s.endSN+"], cc ["+s.startCC+", "+s.endCC+"] duration:"+E);var _=this.fragCurrent;!_||this.state!==n.State.FRAG_LOADING&&this.state!==n.State.FRAG_LOADING_WAITING_RETRY||_.level!==t.level&&_.loader&&(this.state=n.State.IDLE,this.backtrackFragment=null,_.loader.abort());var T=a[i],l=0;if(s.live||null!==(o=T.details)&&void 0!==o&&o.live){if(s.fragments[0]||(s.deltaUpdateFailed=!0),s.deltaUpdateFailed)return;l=this.alignPlaylists(s,T.details)}if(T.details=s,this.levelLastLoaded=i,this.hls.trigger(r.Events.LEVEL_UPDATED,{details:s,level:i}),this.state===n.State.WAITING_LEVEL){if(this.waitForCdnTuneIn(s))return;this.state=n.State.IDLE}this.startFragRequested?s.live&&this.synchronizeToLiveEdge(s):this.setStartPosition(s,l),this.tick()}else this.warn("Levels were reset while loading level "+i)},m._handleFragmentLoadProgress=function(e){var t,o=e.frag,a=e.part,n=e.payload,i=this.levels;if(i){var r=i[o.level],s=r.details;if(s){var E=r.videoCodec,T=s.PTSKnown||!s.live,u=null===(t=o.initSegment)||void 0===t?void 0:t.data,d=this._getAudioCodec(r),c=this.transmuxer=this.transmuxer||new l.default(this.hls,_.PlaylistLevelType.MAIN,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),A=a?a.index:-1,I=-1!==A,O=new S.ChunkMetadata(o.level,o.sn,o.stats.chunkCount,n.byteLength,A,I),N=this.initPTS[o.cc];c.push(n,u,d,E,o,a,s.totalduration,T,O,N)}else this.warn("Dropping fragment "+o.sn+" of level "+o.level+" after level details were reset")}else this.warn("Levels were reset while fragment load was in progress. Fragment "+o.sn+" of level "+o.level+" will not be buffered")},m.onAudioTrackSwitching=function(e,t){var o=this.altAudio,a=!!t.url,n=t.id;if(!a){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;var i=this.fragCurrent;null!=i&&i.loader&&(this.log("Switching to main audio track, cancel main fragment load"),i.loader.abort()),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();var s=this.hls;o&&s.trigger(r.Events.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),s.trigger(r.Events.AUDIO_TRACK_SWITCHED,{id:n})}},m.onAudioTrackSwitched=function(e,t){var o=t.id,a=!!this.hls.audioTracks[o].url;if(a){var n=this.videoBuffer;n&&this.mediaBuffer!==n&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=n)}this.altAudio=a,this.tick()},m.onBufferCreated=function(e,t){var o,a,n=t.tracks,i=!1;for(var r in n){var s=n[r];if("main"===s.id){if(a=r,o=s,"video"===r){var E=n[r];E&&(this.videoBuffer=E.buffer)}}else i=!0}i&&o?(this.log("Alternate track found, use "+a+".buffered to schedule main fragment loading"),this.mediaBuffer=o.buffer):this.mediaBuffer=this.media},m.onFragBuffered=function(e,t){var o=t.frag,a=t.part;if(!o||o.type===_.PlaylistLevelType.MAIN){if(this.fragContextChanged(o))return this.warn("Fragment "+o.sn+(a?" p: "+a.index:"")+" of level "+o.level+" finished buffering, but was aborted. state: "+this.state),void(this.state===n.State.PARSED&&(this.state=n.State.IDLE));var i=a?a.stats:o.stats;this.fragLastKbps=Math.round(8*i.total/(i.buffering.end-i.loading.first)),"initSegment"!==o.sn&&(this.fragPrevious=o),this.fragBufferedComplete(o,a)}},m.onError=function(e,t){switch(t.details){case d.ErrorDetails.FRAG_LOAD_ERROR:case d.ErrorDetails.FRAG_LOAD_TIMEOUT:case d.ErrorDetails.KEY_LOAD_ERROR:case d.ErrorDetails.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(_.PlaylistLevelType.MAIN,t);break;case d.ErrorDetails.LEVEL_LOAD_ERROR:case d.ErrorDetails.LEVEL_LOAD_TIMEOUT:this.state!==n.State.ERROR&&(t.fatal?(this.warn(""+t.details),this.state=n.State.ERROR):t.levelRetry||this.state!==n.State.WAITING_LEVEL||(this.state=n.State.IDLE));break;case d.ErrorDetails.BUFFER_FULL_ERROR:if("main"===t.parent&&(this.state===n.State.PARSING||this.state===n.State.PARSED)){var o=!0,a=this.getFwdBufferInfo(this.media,_.PlaylistLevelType.MAIN);if(a&&a.len>.5&&(o=!this.reduceMaxBufferLength(a.len)),o)this.warn("buffer full error also media.currentTime is not buffered, flush main"),this.immediateLevelSwitch();else{var i=this.fragCurrent;this.abortCurrentFrag(),i&&(this.flushMainBuffer(i.start,Number.POSITIVE_INFINITY),this.nextLoadPosition=i.start)}this.resetTransmuxer(),this.resetLoadingState()}}},m.checkBuffer=function(){var e=this.media,t=this.gapController;if(e&&t&&e.readyState){if(this.loadedmetadata||!s.BufferHelper.getBuffered(e).length){var o=this.state!==n.State.IDLE?this.fragCurrent:null;t.poll(this.lastCurrentTime,o)}this.lastCurrentTime=e.currentTime}},m.onFragLoadEmergencyAborted=function(){this.state=n.State.IDLE,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()},m.onBufferFlushed=function(e,t){var o=t.type;if(o!==T.ElementaryStreamTypes.AUDIO||this.audioOnly&&!this.altAudio){var a=(o===T.ElementaryStreamTypes.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(a,o,_.PlaylistLevelType.MAIN)}},m.onLevelsUpdated=function(e,t){this.levels=t.levels},m.swapAudioCodec=function(){this.audioCodecSwap=!this.audioCodecSwap},m.seekToStartPos=function(){var e=this.media;if(e){var t=e.currentTime,o=this.startPosition;if(o>=0&&t<o){if(e.seeking)return void this.log("could not seek to "+o+", already seeking at "+t);var a=s.BufferHelper.getBuffered(e),n=(a.length?a.start(0):0)-o;n>0&&(n<this.config.maxBufferHole||n<this.config.maxFragLookUpTolerance)&&(this.log("adjusting start position by "+n+" to match buffer start"),o+=n,this.startPosition=o),this.log("seek to target start position "+o+" from current time "+t),e.currentTime=o}}},m._getAudioCodec=function(e){var t=this.config.defaultAudioCodec||e.audioCodec;return this.audioCodecSwap&&t&&(this.log("Swapping audio codec"),t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),t},m._loadBitrateTestFrag=function(e){var t=this;e.bitrateTest=!0,this._doFragLoad(e).then((function(o){var a=t.hls;if(o&&!a.nextLoadLevel&&!t.fragContextChanged(e)){t.fragLoadError=0,t.state=n.State.IDLE,t.startFragRequested=!1,t.bitrateTest=!1;var i=e.stats;i.parsing.start=i.parsing.end=i.buffering.start=i.buffering.end=self.performance.now(),a.trigger(r.Events.FRAG_LOADED,o),e.bitrateTest=!1}}))},m._handleTransmuxComplete=function(e){var t,o="main",i=this.hls,s=e.remuxResult,E=e.chunkMeta,_=this.getCurrentContext(E);if(!_)return this.warn("The loading context changed while buffering fragment "+E.sn+" of level "+E.level+". This chunk will not be buffered."),void this.resetStartWhenNotLoaded(E.level);var l=_.frag,S=_.part,u=_.level,d=s.video,c=s.text,A=s.id3,I=s.initSegment,O=u.details,N=this.altAudio?void 0:s.audio;if(!this.fragContextChanged(l)){if(this.state=n.State.PARSING,I){I.tracks&&(this._bufferInitSegment(u,I.tracks,l,E),i.trigger(r.Events.FRAG_PARSING_INIT_SEGMENT,{frag:l,id:o,tracks:I.tracks}));var R=I.initPTS,m=I.timescale;Object(a.isFiniteNumber)(R)&&(this.initPTS[l.cc]=R,i.trigger(r.Events.INIT_PTS_FOUND,{frag:l,id:o,initPTS:R,timescale:m}))}if(d&&!1!==s.independent){if(O){var p=d.startPTS,h=d.endPTS,L=d.startDTS,f=d.endDTS;if(S)S.elementaryStreams[d.type]={startPTS:p,endPTS:h,startDTS:L,endDTS:f};else if(d.firstKeyFrame&&d.independent&&(this.couldBacktrack=!0),d.dropped&&d.independent){var C=this.getMainFwdBufferInfo();if((C?C.end:this.getLoadPosition())+this.config.maxBufferHole<(d.firstKeyFramePTS?d.firstKeyFramePTS:p)-this.config.maxBufferHole)return void this.backtrack(l);l.setElementaryStreamInfo(d.type,l.start,h,l.start,f,!0)}l.setElementaryStreamInfo(d.type,p,h,L,f),this.backtrackFragment&&(this.backtrackFragment=l),this.bufferFragmentData(d,l,S,E)}}else if(!1===s.independent)return void this.backtrack(l);if(N){var D=N.startPTS,g=N.endPTS,v=N.startDTS,P=N.endDTS;S&&(S.elementaryStreams[T.ElementaryStreamTypes.AUDIO]={startPTS:D,endPTS:g,startDTS:v,endDTS:P}),l.setElementaryStreamInfo(T.ElementaryStreamTypes.AUDIO,D,g,v,P),this.bufferFragmentData(N,l,S,E)}if(O&&null!=A&&null!==(t=A.samples)&&void 0!==t&&t.length){var y={id:o,frag:l,details:O,samples:A.samples};i.trigger(r.Events.FRAG_PARSING_METADATA,y)}if(O&&c){var B={id:o,frag:l,details:O,samples:c.samples};i.trigger(r.Events.FRAG_PARSING_USERDATA,B)}}},m._bufferInitSegment=function(e,t,o,a){var i=this;if(this.state===n.State.PARSING){this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;var s=t.audio,E=t.video,_=t.audiovideo;if(s){var T=e.audioCodec,l=navigator.userAgent.toLowerCase();this.audioCodecSwitch&&(T&&(T=-1!==T.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),1!==s.metadata.channelCount&&-1===l.indexOf("firefox")&&(T="mp4a.40.5")),-1!==l.indexOf("android")&&"audio/mpeg"!==s.container&&(T="mp4a.40.2",this.log("Android: force audio codec to "+T)),e.audioCodec&&e.audioCodec!==T&&this.log('Swapping manifest audio codec "'+e.audioCodec+'" for "'+T+'"'),s.levelCodec=T,s.id="main",this.log("Init audio buffer, container:"+s.container+", codecs[selected/level/parsed]=["+(T||"")+"/"+(e.audioCodec||"")+"/"+s.codec+"]")}E&&(E.levelCodec=e.videoCodec,E.id="main",this.log("Init video buffer, container:"+E.container+", codecs[level/parsed]=["+(e.videoCodec||"")+"/"+E.codec+"]")),_&&this.log("Init audiovideo buffer, container:"+_.container+", codecs[level/parsed]=["+(e.attrs.CODECS||"")+"/"+_.codec+"]"),this.hls.trigger(r.Events.BUFFER_CODECS,t),Object.keys(t).forEach((function(e){var n=t[e].initSegment;null!=n&&n.byteLength&&i.hls.trigger(r.Events.BUFFER_APPENDING,{type:e,data:n,frag:o,part:null,chunkMeta:a,parent:o.type})})),this.tick()}},m.getMainFwdBufferInfo=function(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,_.PlaylistLevelType.MAIN)},m.backtrack=function(e){this.couldBacktrack=!0,this.backtrackFragment=e,this.resetTransmuxer(),this.flushBufferGap(e),this.fragmentTracker.removeFragment(e),this.fragPrevious=null,this.nextLoadPosition=e.start,this.state=n.State.IDLE},m.checkFragmentChanged=function(){var e=this.media,t=null;if(e&&e.readyState>1&&!1===e.seeking){var o=e.currentTime;if(s.BufferHelper.isBuffered(e,o)?t=this.getAppendedFrag(o):s.BufferHelper.isBuffered(e,o+.1)&&(t=this.getAppendedFrag(o+.1)),t){this.backtrackFragment=null;var a=this.fragPlaying,n=t.level;a&&t.sn===a.sn&&a.level===n&&t.urlId===a.urlId||(this.hls.trigger(r.Events.FRAG_CHANGED,{frag:t}),a&&a.level===n||this.hls.trigger(r.Events.LEVEL_SWITCHED,{level:n}),this.fragPlaying=t)}}},O=I,(N=[{key:"nextLevel",get:function(){var e=this.nextBufferedFrag;return e?e.level:-1}},{key:"currentFrag",get:function(){var e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}},{key:"currentProgramDateTime",get:function(){var e=this.media;if(e){var t=e.currentTime,o=this.currentFrag;if(o&&Object(a.isFiniteNumber)(t)&&Object(a.isFiniteNumber)(o.programDateTime)){var n=o.programDateTime+1e3*(t-o.start);return new Date(n)}}return null}},{key:"currentLevel",get:function(){var e=this.currentFrag;return e?e.level:-1}},{key:"nextBufferedFrag",get:function(){var e=this.currentFrag;return e?this.followingBufferedFrag(e):null}},{key:"forceStartLoad",get:function(){return this._forceStartLoad}}])&&c(O.prototype,N),R&&c(O,R),Object.defineProperty(O,"prototype",{writable:!1}),I})(n.default)},"./src/controller/subtitle-stream-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"SubtitleStreamController",(function(){return d}));var a=o("./src/events.ts"),n=o("./src/utils/buffer-helper.ts"),i=o("./src/controller/fragment-finders.ts"),r=o("./src/utils/discontinuities.ts"),s=o("./src/controller/level-helper.ts"),E=o("./src/controller/fragment-tracker.ts"),_=o("./src/controller/base-stream-controller.ts"),T=o("./src/types/loader.ts"),l=o("./src/types/level.ts");function S(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function u(e,t){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},u(e,t)}var d=(function(e){var t,o;function d(t,o){var a;return(a=e.call(this,t,o,"[subtitle-stream-controller]")||this).levels=[],a.currentTrackId=-1,a.tracksBuffered=[],a.mainDetails=null,a._registerListeners(),a}o=e,(t=d).prototype=Object.create(o.prototype),t.prototype.constructor=t,u(t,o);var A,I,O,N=d.prototype;return N.onHandlerDestroying=function(){this._unregisterListeners(),this.mainDetails=null},N._registerListeners=function(){var e=this.hls;e.on(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(a.Events.ERROR,this.onError,this),e.on(a.Events.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(a.Events.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(a.Events.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(a.Events.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(a.Events.BUFFER_FLUSHING,this.onBufferFlushing,this)},N._unregisterListeners=function(){var e=this.hls;e.off(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(a.Events.ERROR,this.onError,this),e.off(a.Events.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(a.Events.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(a.Events.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(a.Events.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(a.Events.BUFFER_FLUSHING,this.onBufferFlushing,this)},N.startLoad=function(){this.stopLoad(),this.state=_.State.IDLE,this.setInterval(500),this.tick()},N.onManifestLoading=function(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()},N.onLevelLoaded=function(e,t){this.mainDetails=t.details},N.onSubtitleFragProcessed=function(e,t){var o=t.frag,a=t.success;if(this.fragPrevious=o,this.state=_.State.IDLE,a){var n=this.tracksBuffered[this.currentTrackId];if(n){for(var i,r=o.start,s=0;s<n.length;s++)if(r>=n[s].start&&r<=n[s].end){i=n[s];break}var E=o.start+o.duration;i?i.end=E:(i={start:r,end:E},n.push(i)),this.fragmentTracker.fragBuffered(o)}}},N.onBufferFlushing=function(e,t){var o=t.startOffset,a=t.endOffset;if(0===o&&a!==Number.POSITIVE_INFINITY){var n=this.currentTrackId,i=this.levels;if(!i.length||!i[n]||!i[n].details)return;var r=a-i[n].details.targetduration;if(r<=0)return;t.endOffsetSubtitles=Math.max(0,r),this.tracksBuffered.forEach((function(e){for(var t=0;t<e.length;)if(e[t].end<=r)e.shift();else{if(!(e[t].start<r))break;e[t].start=r,t++}})),this.fragmentTracker.removeFragmentsInRange(o,r,T.PlaylistLevelType.SUBTITLE)}},N.onError=function(e,t){var o,a=t.frag;a&&a.type===T.PlaylistLevelType.SUBTITLE&&(null!==(o=this.fragCurrent)&&void 0!==o&&o.loader&&this.fragCurrent.loader.abort(),this.state=_.State.IDLE)},N.onSubtitleTracksUpdated=function(e,t){var o=this,a=t.subtitleTracks;this.tracksBuffered=[],this.levels=a.map((function(e){return new l.Level(e)})),this.fragmentTracker.removeAllFragments(),this.fragPrevious=null,this.levels.forEach((function(e){o.tracksBuffered[e.id]=[]})),this.mediaBuffer=null},N.onSubtitleTrackSwitch=function(e,t){if(this.currentTrackId=t.id,this.levels.length&&-1!==this.currentTrackId){var o=this.levels[this.currentTrackId];null!=o&&o.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,o&&this.setInterval(500)}else this.clearInterval()},N.onSubtitleTrackLoaded=function(e,t){var o,a=t.details,n=t.id,E=this.currentTrackId,T=this.levels;if(T.length){var l=T[E];if(!(n>=T.length||n!==E)&&l){if(this.mediaBuffer=this.mediaBufferTimeRanges,a.live||null!==(o=l.details)&&void 0!==o&&o.live){var S=this.mainDetails;if(a.deltaUpdateFailed||!S)return;var u=S.fragments[0];l.details?0===this.alignPlaylists(a,l.details)&&u&&Object(s.addSliding)(a,u.start):a.hasProgramDateTime&&S.hasProgramDateTime?Object(r.alignMediaPlaylistByPDT)(a,S):u&&Object(s.addSliding)(a,u.start)}l.details=a,this.levelLastLoaded=n,this.tick(),a.live&&!this.fragCurrent&&this.media&&this.state===_.State.IDLE&&(Object(i.findFragmentByPTS)(null,a.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),l.details=void 0))}}},N._handleFragmentLoadComplete=function(e){var t=e.frag,o=e.payload,n=t.decryptdata,i=this.hls;if(!this.fragContextChanged(t)&&o&&o.byteLength>0&&n&&n.key&&n.iv&&"AES-128"===n.method){var r=performance.now();this.decrypter.webCryptoDecrypt(new Uint8Array(o),n.key.buffer,n.iv.buffer).then((function(e){var o=performance.now();i.trigger(a.Events.FRAG_DECRYPTED,{frag:t,payload:e,stats:{tstart:r,tdecrypt:o}})}))}},N.doTick=function(){if(this.media){if(this.state===_.State.IDLE){var e=this.currentTrackId,t=this.levels;if(!t.length||!t[e]||!t[e].details)return;var o=t[e].details,a=o.targetduration,r=this.config,s=this.media,T=n.BufferHelper.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],s.currentTime-a,r.maxBufferHole),l=T.end;if(T.len>this.getMaxBufferLength()+a)return;console.assert(o,"Subtitle track details are defined on idle subtitle stream controller tick");var S,u=o.fragments,d=u.length,c=o.edge,A=this.fragPrevious;if(l<c){var I=r.maxFragLookUpTolerance;!(S=Object(i.findFragmentByPTS)(A,u,Math.max(u[0].start,l),I))&&A&&A.start<u[0].start&&(S=u[0])}else S=u[d-1];if(!(S=this.mapToInitFragWhenRequired(S)))return;if(this.fragmentTracker.getState(S)!==E.FragmentState.NOT_LOADED)return;S.encrypted?this.loadKey(S,o):this.loadFragment(S,o,l)}}else this.state=_.State.IDLE},N.loadFragment=function(t,o,a){this.fragCurrent=t,"initSegment"===t.sn?this._loadInitSegment(t):e.prototype.loadFragment.call(this,t,o,a)},A=d,(I=[{key:"mediaBufferTimeRanges",get:function(){return new c(this.tracksBuffered[this.currentTrackId]||[])}}])&&S(A.prototype,I),O&&S(A,O),Object.defineProperty(A,"prototype",{writable:!1}),d})(_.default),c=function(e){this.buffered=void 0;var t=function(t,o,a){if((o>>>=0)>a-1)throw new DOMException("Failed to execute '"+t+"' on 'TimeRanges': The index provided ("+o+") is greater than the maximum bound ("+a+")");return e[o][t]};this.buffered={get length(){return e.length},end:function(o){return t("end",o,e.length)},start:function(o){return t("start",o,e.length)}}}},"./src/controller/subtitle-track-controller.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/events.ts"),n=o("./src/utils/texttrack-utils.ts"),i=o("./src/controller/base-playlist-controller.ts"),r=o("./src/types/loader.ts");function s(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function E(e,t){return E=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},E(e,t)}var _=(function(e){var t,o;function i(t){var o;return(o=e.call(this,t,"[subtitle-track-controller]")||this).media=null,o.tracks=[],o.groupId=null,o.tracksInGroup=[],o.trackId=-1,o.selectDefaultTrack=!0,o.queuedDefaultTrack=-1,o.trackChangeListener=function(){return o.onTextTracksChanged()},o.asyncPollTrackChange=function(){return o.pollTrackChange(0)},o.useTextTrackPolling=!1,o.subtitlePollingInterval=-1,o._subtitleDisplay=!0,o.registerListeners(),o}o=e,(t=i).prototype=Object.create(o.prototype),t.prototype.constructor=t,E(t,o);var _,l,S,u=i.prototype;return u.destroy=function(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.trackChangeListener=this.asyncPollTrackChange=null,e.prototype.destroy.call(this)},u.registerListeners=function(){var e=this.hls;e.on(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(a.Events.LEVEL_LOADING,this.onLevelLoading,this),e.on(a.Events.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(a.Events.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(a.Events.ERROR,this.onError,this)},u.unregisterListeners=function(){var e=this.hls;e.off(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(a.Events.LEVEL_LOADING,this.onLevelLoading,this),e.off(a.Events.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(a.Events.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(a.Events.ERROR,this.onError,this)},u.onMediaAttached=function(e,t){this.media=t.media,this.media&&(this.queuedDefaultTrack>-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))},u.pollTrackChange=function(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.trackChangeListener,e)},u.onMediaDetaching=function(){this.media&&(self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId),T(this.media.textTracks).forEach((function(e){Object(n.clearCurrentCues)(e)})),this.subtitleTrack=-1,this.media=null)},u.onManifestLoading=function(){this.tracks=[],this.groupId=null,this.tracksInGroup=[],this.trackId=-1,this.selectDefaultTrack=!0},u.onManifestParsed=function(e,t){this.tracks=t.subtitleTracks},u.onSubtitleTrackLoaded=function(e,t){var o=t.id,a=t.details,n=this.trackId,i=this.tracksInGroup[n];if(i){var r=i.details;i.details=t.details,this.log("subtitle track "+o+" loaded ["+a.startSN+"-"+a.endSN+"]"),o===this.trackId&&(this.retryCount=0,this.playlistLoaded(o,t,r))}else this.warn("Invalid subtitle track id "+o)},u.onLevelLoading=function(e,t){this.switchLevel(t.level)},u.onLevelSwitching=function(e,t){this.switchLevel(t.level)},u.switchLevel=function(e){var t=this.hls.levels[e];if(null!=t&&t.textGroupIds){var o=t.textGroupIds[t.urlId];if(this.groupId!==o){var n=this.tracksInGroup?this.tracksInGroup[this.trackId]:void 0,i=this.tracks.filter((function(e){return!o||e.groupId===o}));this.tracksInGroup=i;var r=this.findTrackId(null==n?void 0:n.name)||this.findTrackId();this.groupId=o;var s={subtitleTracks:i};this.log("Updating subtitle tracks, "+i.length+' track(s) found in "'+o+'" group-id'),this.hls.trigger(a.Events.SUBTITLE_TRACKS_UPDATED,s),-1!==r&&this.setSubtitleTrack(r,n)}}},u.findTrackId=function(e){for(var t=this.tracksInGroup,o=0;o<t.length;o++){var a=t[o];if((!this.selectDefaultTrack||a.default)&&(!e||e===a.name))return a.id}return-1},u.onError=function(t,o){e.prototype.onError.call(this,t,o),!o.fatal&&o.context&&o.context.type===r.PlaylistContextType.SUBTITLE_TRACK&&o.context.id===this.trackId&&o.context.groupId===this.groupId&&this.retryLoadingOrFail(o)},u.loadPlaylist=function(e){var t=this.tracksInGroup[this.trackId];if(this.shouldLoadTrack(t)){var o=t.id,n=t.groupId,i=t.url;if(e)try{i=e.addDirectives(i)}catch(e){this.warn("Could not construct new URL with HLS Delivery Directives: "+e)}this.log("Loading subtitle playlist for id "+o),this.hls.trigger(a.Events.SUBTITLE_TRACK_LOADING,{url:i,id:o,groupId:n,deliveryDirectives:e||null})}},u.toggleTrackModes=function(e){var t=this,o=this.media,a=this.trackId;if(o){var n=T(o.textTracks),i=n.filter((function(e){return e.groupId===t.groupId}));if(-1===e)[].slice.call(n).forEach((function(e){e.mode="disabled"}));else{var r=i[a];r&&(r.mode="disabled")}var s=i[e];s&&(s.mode=this.subtitleDisplay?"showing":"hidden")}},u.setSubtitleTrack=function(e,t){var o,n=this.tracksInGroup;if(this.media){if(this.trackId!==e&&this.toggleTrackModes(e),!(this.trackId===e&&(-1===e||null!==(o=n[e])&&void 0!==o&&o.details)||e<-1||e>=n.length)){this.clearTimer();var i=n[e];if(this.log("Switching to subtitle track "+e),this.trackId=e,i){var r=i.id,s=i.groupId,E=void 0===s?"":s,_=i.name,T=i.type,l=i.url;this.hls.trigger(a.Events.SUBTITLE_TRACK_SWITCH,{id:r,groupId:E,name:_,type:T,url:l});var S=this.switchParams(i.url,null==t?void 0:t.details);this.loadPlaylist(S)}else this.hls.trigger(a.Events.SUBTITLE_TRACK_SWITCH,{id:e})}}else this.queuedDefaultTrack=e},u.onTextTracksChanged=function(){if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),this.media&&this.hls.config.renderTextTracksNatively){for(var e=-1,t=T(this.media.textTracks),o=0;o<t.length;o++)if("hidden"===t[o].mode)e=o;else if("showing"===t[o].mode){e=o;break}this.subtitleTrack!==e&&(this.subtitleTrack=e)}},_=i,(l=[{key:"subtitleDisplay",get:function(){return this._subtitleDisplay},set:function(e){this._subtitleDisplay=e,this.trackId>-1&&this.toggleTrackModes(this.trackId)}},{key:"subtitleTracks",get:function(){return this.tracksInGroup}},{key:"subtitleTrack",get:function(){return this.trackId},set:function(e){this.selectDefaultTrack=!1;var t=this.tracksInGroup?this.tracksInGroup[this.trackId]:void 0;this.setSubtitleTrack(e,t)}}])&&s(_.prototype,l),S&&s(_,S),Object.defineProperty(_,"prototype",{writable:!1}),i})(i.default);function T(e){for(var t=[],o=0;o<e.length;o++){var a=e[o];"subtitles"===a.kind&&a.label&&t.push(e[o])}return t}t.default=_},"./src/controller/timeline-controller.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"TimelineController",(function(){return u}));var a=o("./src/polyfills/number.ts"),n=o("./src/events.ts"),i=o("./src/utils/cea-608-parser.ts"),r=o("./src/utils/output-filter.ts"),s=o("./src/utils/webvtt-parser.ts"),E=o("./src/utils/texttrack-utils.ts"),_=o("./src/utils/imsc1-ttml-parser.ts"),T=o("./src/utils/mp4-tools.ts"),l=o("./src/types/loader.ts"),S=o("./src/utils/logger.ts"),u=(function(){function e(e){if(this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.timescale=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this.captionsProperties=void 0,this.hls=e,this.config=e.config,this.Cues=e.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},this.config.enableCEA708Captions){var t=new r.default(this,"textTrack1"),o=new r.default(this,"textTrack2"),a=new r.default(this,"textTrack3"),s=new r.default(this,"textTrack4");this.cea608Parser1=new i.default(1,t,o),this.cea608Parser2=new i.default(3,a,s)}e.on(n.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(n.Events.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(n.Events.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(n.Events.FRAG_LOADING,this.onFragLoading,this),e.on(n.Events.FRAG_LOADED,this.onFragLoaded,this),e.on(n.Events.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(n.Events.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(n.Events.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(n.Events.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this)}var t=e.prototype;return t.destroy=function(){var e=this.hls;e.off(n.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(n.Events.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(n.Events.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(n.Events.FRAG_LOADING,this.onFragLoading,this),e.off(n.Events.FRAG_LOADED,this.onFragLoaded,this),e.off(n.Events.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(n.Events.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(n.Events.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(n.Events.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=this.cea608Parser1=this.cea608Parser2=null},t.addCues=function(e,t,o,a,i){for(var r,s,E,_,T=!1,l=i.length;l--;){var S=i[l],u=(r=S[0],s=S[1],E=t,_=o,Math.min(s,_)-Math.max(r,E));if(u>=0&&(S[0]=Math.min(S[0],t),S[1]=Math.max(S[1],o),T=!0,u/(o-t)>.5))return}if(T||i.push([t,o]),this.config.renderTextTracksNatively){var d=this.captionsTracks[e];this.Cues.newCue(d,t,o,a)}else{var c=this.Cues.newCue(null,t,o,a);this.hls.trigger(n.Events.CUES_PARSED,{type:"captions",cues:c,track:e})}},t.onInitPtsFound=function(e,t){var o=this,a=t.frag,i=t.id,r=t.initPTS,s=t.timescale,E=this.unparsedVttFrags;"main"===i&&(this.initPTS[a.cc]=r,this.timescale[a.cc]=s),E.length&&(this.unparsedVttFrags=[],E.forEach((function(e){o.onFragLoaded(n.Events.FRAG_LOADED,e)})))},t.getExistingTrack=function(e){var t=this.media;if(t)for(var o=0;o<t.textTracks.length;o++){var a=t.textTracks[o];if(a[e])return a}return null},t.createCaptionsTrack=function(e){this.config.renderTextTracksNatively?this.createNativeTrack(e):this.createNonNativeTrack(e)},t.createNativeTrack=function(e){if(!this.captionsTracks[e]){var t=this.captionsProperties,o=this.captionsTracks,a=this.media,n=t[e],i=n.label,r=n.languageCode,s=this.getExistingTrack(e);if(s)o[e]=s,Object(E.clearCurrentCues)(o[e]),Object(E.sendAddTrackEvent)(o[e],a);else{var _=this.createTextTrack("captions",i,r);_&&(_[e]=!0,o[e]=_)}}},t.createNonNativeTrack=function(e){if(!this.nonNativeCaptionsTracks[e]){var t=this.captionsProperties[e];if(t){var o={_id:e,label:t.label,kind:"captions",default:!!t.media&&!!t.media.default,closedCaptions:t.media};this.nonNativeCaptionsTracks[e]=o,this.hls.trigger(n.Events.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:[o]})}}},t.createTextTrack=function(e,t,o){var a=this.media;if(a)return a.addTextTrack(e,t,o)},t.onMediaAttaching=function(e,t){this.media=t.media,this._cleanTracks()},t.onMediaDetaching=function(){var e=this.captionsTracks;Object.keys(e).forEach((function(t){Object(E.clearCurrentCues)(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}},t.onManifestLoading=function(){this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=this.unparsedVttFrags||[],this.initPTS=[],this.timescale=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())},t._cleanTracks=function(){var e=this.media;if(e){var t=e.textTracks;if(t)for(var o=0;o<t.length;o++)Object(E.clearCurrentCues)(t[o])}},t.onSubtitleTracksUpdated=function(e,t){var o=this;this.textTracks=[];var a=t.subtitleTracks||[],i=a.some((function(e){return e.textCodec===_.IMSC1_CODEC}));if(this.config.enableWebVTT||i&&this.config.enableIMSC1){var r=this.tracks&&a&&this.tracks.length===a.length;if(this.tracks=a||[],this.config.renderTextTracksNatively){var s=this.media?this.media.textTracks:[];this.tracks.forEach((function(e,t){var a;if(t<s.length){for(var n=null,i=0;i<s.length;i++)if(d(s[i],e)){n=s[i];break}n&&(a=n)}if(a)Object(E.clearCurrentCues)(a);else{var r=o._captionsOrSubtitlesFromCharacteristics(e);(a=o.createTextTrack(r,e.name,e.lang))&&(a.mode="disabled")}a&&(a.groupId=e.groupId,o.textTracks.push(a))}))}else if(!r&&this.tracks&&this.tracks.length){var T=this.tracks.map((function(e){return{label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e}}));this.hls.trigger(n.Events.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:T})}}},t._captionsOrSubtitlesFromCharacteristics=function(e){var t;if(null!==(t=e.attrs)&&void 0!==t&&t.CHARACTERISTICS){var o=/transcribes-spoken-dialog/gi.test(e.attrs.CHARACTERISTICS),a=/describes-music-and-sound/gi.test(e.attrs.CHARACTERISTICS);if(o&&a)return"captions"}return"subtitles"},t.onManifestLoaded=function(e,t){var o=this;this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((function(e){var t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(t){var a="textTrack"+t[1],n=o.captionsProperties[a];n&&(n.label=e.name,e.lang&&(n.languageCode=e.lang),n.media=e)}}))},t.onFragLoading=function(e,t){var o=this.cea608Parser1,a=this.cea608Parser2,n=this.lastSn,i=this.lastPartIndex;if(this.enabled&&o&&a&&t.frag.type===l.PlaylistLevelType.MAIN){var r,s,E=t.frag.sn,_=null!=(r=null==t||null===(s=t.part)||void 0===s?void 0:s.index)?r:-1;E===n+1||E===n&&_===i+1||(o.reset(),a.reset()),this.lastSn=E,this.lastPartIndex=_}},t.onFragLoaded=function(e,t){var o=t.frag,i=t.payload,r=this.initPTS,s=this.unparsedVttFrags;if(o.type===l.PlaylistLevelType.SUBTITLE)if(i.byteLength){if(!Object(a.isFiniteNumber)(r[o.cc]))return s.push(t),void(r.length&&this.hls.trigger(n.Events.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:o,error:new Error("Missing initial subtitle PTS")}));var E=o.decryptdata,T="stats"in t;if(null==E||null==E.key||"AES-128"!==E.method||T){var S=this.tracks[o.level],u=this.vttCCs;u[o.cc]||(u[o.cc]={start:o.start,prevCC:this.prevCC,new:!0},this.prevCC=o.cc),S&&S.textCodec===_.IMSC1_CODEC?this._parseIMSC1(o,i):this._parseVTTs(o,i,u)}}else this.hls.trigger(n.Events.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:o,error:new Error("Empty subtitle payload")})},t._parseIMSC1=function(e,t){var o=this,a=this.hls;Object(_.parseIMSC1)(t,this.initPTS[e.cc],this.timescale[e.cc],(function(t){o._appendCues(t,e.level),a.trigger(n.Events.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(function(t){S.logger.log("Failed to parse IMSC1: "+t),a.trigger(n.Events.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))},t._parseVTTs=function(e,t,o){var a,i=this,r=this.hls,E=null!==(a=e.initSegment)&&void 0!==a&&a.data?Object(T.appendUint8Array)(e.initSegment.data,new Uint8Array(t)):t;Object(s.parseWebVTT)(E,this.initPTS[e.cc],this.timescale[e.cc],o,e.cc,e.start,(function(t){i._appendCues(t,e.level),r.trigger(n.Events.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(function(o){i._fallbackToIMSC1(e,t),S.logger.log("Failed to parse VTT cue: "+o),r.trigger(n.Events.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:o})}))},t._fallbackToIMSC1=function(e,t){var o=this,a=this.tracks[e.level];a.textCodec||Object(_.parseIMSC1)(t,this.initPTS[e.cc],this.timescale[e.cc],(function(){a.textCodec=_.IMSC1_CODEC,o._parseIMSC1(e,t)}),(function(){a.textCodec="wvtt"}))},t._appendCues=function(e,t){var o=this.hls;if(this.config.renderTextTracksNatively){var a=this.textTracks[t];if(!a||"disabled"===a.mode)return;e.forEach((function(e){return Object(E.addCueToTrack)(a,e)}))}else{var i=this.tracks[t];if(!i)return;var r=i.default?"default":"subtitles"+t;o.trigger(n.Events.CUES_PARSED,{type:"subtitles",cues:e,track:r})}},t.onFragDecrypted=function(e,t){var o=t.frag;if(o.type===l.PlaylistLevelType.SUBTITLE){if(!Object(a.isFiniteNumber)(this.initPTS[o.cc]))return void this.unparsedVttFrags.push(t);this.onFragLoaded(n.Events.FRAG_LOADED,t)}},t.onSubtitleTracksCleared=function(){this.tracks=[],this.captionsTracks={}},t.onFragParsingUserdata=function(e,t){var o=this.cea608Parser1,a=this.cea608Parser2;if(this.enabled&&o&&a)for(var n=0;n<t.samples.length;n++){var i=t.samples[n].bytes;if(i){var r=this.extractCea608Data(i);o.addData(t.samples[n].pts,r[0]),a.addData(t.samples[n].pts,r[1])}}},t.onBufferFlushing=function(e,t){var o=t.startOffset,a=t.endOffset,n=t.endOffsetSubtitles,i=t.type,r=this.media;if(r&&!(r.currentTime<a)){if(!i||"video"===i){var s=this.captionsTracks;Object.keys(s).forEach((function(e){return Object(E.removeCuesInRange)(s[e],o,a)}))}if(this.config.renderTextTracksNatively&&0===o&&void 0!==n){var _=this.textTracks;Object.keys(_).forEach((function(e){return Object(E.removeCuesInRange)(_[e],o,n)}))}}},t.extractCea608Data=function(e){for(var t=[[],[]],o=31&e[0],a=2,n=0;n<o;n++){var i=e[a++],r=127&e[a++],s=127&e[a++];if((0!==r||0!==s)&&0!=(4&i)){var E=3&i;0!==E&&1!==E||(t[E].push(r),t[E].push(s))}}return t},e})();function d(e,t){return e&&e.label===t.name&&!(e.textTrack1||e.textTrack2)}},"./src/crypt/aes-crypto.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return a}));var a=(function(){function e(e,t){this.subtle=void 0,this.aesIV=void 0,this.subtle=e,this.aesIV=t}return e.prototype.decrypt=function(e,t){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e)},e})()},"./src/crypt/aes-decryptor.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"removePadding",(function(){return n})),o.d(t,"default",(function(){return i}));var a=o("./src/utils/typed-array.ts");function n(e){var t=e.byteLength,o=t&&new DataView(e.buffer).getUint8(t-1);return o?Object(a.sliceUint8)(e,0,t-o):e}var i=(function(){function e(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}var t=e.prototype;return t.uint8ArrayToUint32Array_=function(e){for(var t=new DataView(e),o=new Uint32Array(4),a=0;a<4;a++)o[a]=t.getUint32(4*a);return o},t.initTable=function(){var e=this.sBox,t=this.invSBox,o=this.subMix,a=o[0],n=o[1],i=o[2],r=o[3],s=this.invSubMix,E=s[0],_=s[1],T=s[2],l=s[3],S=new Uint32Array(256),u=0,d=0,c=0;for(c=0;c<256;c++)S[c]=c<128?c<<1:c<<1^283;for(c=0;c<256;c++){var A=d^d<<1^d<<2^d<<3^d<<4;A=A>>>8^255&A^99,e[u]=A,t[A]=u;var I=S[u],O=S[I],N=S[O],R=257*S[A]^16843008*A;a[u]=R<<24|R>>>8,n[u]=R<<16|R>>>16,i[u]=R<<8|R>>>24,r[u]=R,R=16843009*N^65537*O^257*I^16843008*u,E[A]=R<<24|R>>>8,_[A]=R<<16|R>>>16,T[A]=R<<8|R>>>24,l[A]=R,u?(u=I^S[S[S[N^I]]],d^=S[S[d]]):u=d=1}},t.expandKey=function(e){for(var t=this.uint8ArrayToUint32Array_(e),o=!0,a=0;a<t.length&&o;)o=t[a]===this.key[a],a++;if(!o){this.key=t;var n=this.keySize=t.length;if(4!==n&&6!==n&&8!==n)throw new Error("Invalid aes key size="+n);var i,r,s,E,_=this.ksRows=4*(n+6+1),T=this.keySchedule=new Uint32Array(_),l=this.invKeySchedule=new Uint32Array(_),S=this.sBox,u=this.rcon,d=this.invSubMix,c=d[0],A=d[1],I=d[2],O=d[3];for(i=0;i<_;i++)i<n?s=T[i]=t[i]:(E=s,i%n==0?(E=S[(E=E<<8|E>>>24)>>>24]<<24|S[E>>>16&255]<<16|S[E>>>8&255]<<8|S[255&E],E^=u[i/n|0]<<24):n>6&&i%n==4&&(E=S[E>>>24]<<24|S[E>>>16&255]<<16|S[E>>>8&255]<<8|S[255&E]),T[i]=s=(T[i-n]^E)>>>0);for(r=0;r<_;r++)i=_-r,E=3&r?T[i]:T[i-4],l[r]=r<4||i<=4?E:c[S[E>>>24]]^A[S[E>>>16&255]]^I[S[E>>>8&255]]^O[S[255&E]],l[r]=l[r]>>>0}},t.networkToHostOrderSwap=function(e){return e<<24|(65280&e)<<8|(16711680&e)>>8|e>>>24},t.decrypt=function(e,t,o){for(var a,n,i,r,s,E,_,T,l,S,u,d,c,A,I=this.keySize+6,O=this.invKeySchedule,N=this.invSBox,R=this.invSubMix,m=R[0],p=R[1],h=R[2],L=R[3],f=this.uint8ArrayToUint32Array_(o),C=f[0],D=f[1],g=f[2],v=f[3],P=new Int32Array(e),y=new Int32Array(P.length),B=this.networkToHostOrderSwap;t<P.length;){for(l=B(P[t]),S=B(P[t+1]),u=B(P[t+2]),d=B(P[t+3]),s=l^O[0],E=d^O[1],_=u^O[2],T=S^O[3],c=4,A=1;A<I;A++)a=m[s>>>24]^p[E>>16&255]^h[_>>8&255]^L[255&T]^O[c],n=m[E>>>24]^p[_>>16&255]^h[T>>8&255]^L[255&s]^O[c+1],i=m[_>>>24]^p[T>>16&255]^h[s>>8&255]^L[255&E]^O[c+2],r=m[T>>>24]^p[s>>16&255]^h[E>>8&255]^L[255&_]^O[c+3],s=a,E=n,_=i,T=r,c+=4;a=N[s>>>24]<<24^N[E>>16&255]<<16^N[_>>8&255]<<8^N[255&T]^O[c],n=N[E>>>24]<<24^N[_>>16&255]<<16^N[T>>8&255]<<8^N[255&s]^O[c+1],i=N[_>>>24]<<24^N[T>>16&255]<<16^N[s>>8&255]<<8^N[255&E]^O[c+2],r=N[T>>>24]<<24^N[s>>16&255]<<16^N[E>>8&255]<<8^N[255&_]^O[c+3],y[t]=B(a^C),y[t+1]=B(r^D),y[t+2]=B(i^g),y[t+3]=B(n^v),C=l,D=S,g=u,v=d,t+=4}return y.buffer},e})()},"./src/crypt/decrypter.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return _}));var a=o("./src/crypt/aes-crypto.ts"),n=o("./src/crypt/fast-aes-key.ts"),i=o("./src/crypt/aes-decryptor.ts"),r=o("./src/utils/logger.ts"),s=o("./src/utils/mp4-tools.ts"),E=o("./src/utils/typed-array.ts"),_=(function(){function e(e,t,o){var a=(void 0===o?{}:o).removePKCS7Padding,n=void 0===a||a;if(this.logEnabled=!0,this.observer=void 0,this.config=void 0,this.removePKCS7Padding=void 0,this.subtle=null,this.softwareDecrypter=null,this.key=null,this.fastAesKey=null,this.remainderData=null,this.currentIV=null,this.currentResult=null,this.observer=e,this.config=t,this.removePKCS7Padding=n,n)try{var i=self.crypto;i&&(this.subtle=i.subtle||i.webkitSubtle)}catch(e){}null===this.subtle&&(this.config.enableSoftwareAES=!0)}var t=e.prototype;return t.destroy=function(){this.observer=null},t.isSync=function(){return this.config.enableSoftwareAES},t.flush=function(){var e=this.currentResult;if(e){var t=new Uint8Array(e);return this.reset(),this.removePKCS7Padding?Object(i.removePadding)(t):t}this.reset()},t.reset=function(){this.currentResult=null,this.currentIV=null,this.remainderData=null,this.softwareDecrypter&&(this.softwareDecrypter=null)},t.decrypt=function(e,t,o,a){if(this.config.enableSoftwareAES){this.softwareDecrypt(new Uint8Array(e),t,o);var n=this.flush();n&&a(n.buffer)}else this.webCryptoDecrypt(new Uint8Array(e),t,o).then(a)},t.softwareDecrypt=function(e,t,o){var a=this.currentIV,n=this.currentResult,r=this.remainderData;this.logOnce("JS AES decrypt"),r&&(e=Object(s.appendUint8Array)(r,e),this.remainderData=null);var _=this.getValidChunk(e);if(!_.length)return null;a&&(o=a);var T=this.softwareDecrypter;T||(T=this.softwareDecrypter=new i.default),T.expandKey(t);var l=n;return this.currentResult=T.decrypt(_.buffer,0,o),this.currentIV=Object(E.sliceUint8)(_,-16).buffer,l||null},t.webCryptoDecrypt=function(e,t,o){var i=this,r=this.subtle;return this.key===t&&this.fastAesKey||(this.key=t,this.fastAesKey=new n.default(r,t)),this.fastAesKey.expandKey().then((function(t){return r?new a.default(r,o).decrypt(e.buffer,t):Promise.reject(new Error("web crypto not initialized"))})).catch((function(a){return i.onWebCryptoError(a,e,t,o)}))},t.onWebCryptoError=function(e,t,o,a){return r.logger.warn("[decrypter.ts]: WebCrypto Error, disable WebCrypto API:",e),this.config.enableSoftwareAES=!0,this.logEnabled=!0,this.softwareDecrypt(t,o,a)},t.getValidChunk=function(e){var t=e,o=e.length-e.length%16;return o!==e.length&&(t=Object(E.sliceUint8)(e,0,o),this.remainderData=Object(E.sliceUint8)(e,o)),t},t.logOnce=function(e){this.logEnabled&&(r.logger.log("[decrypter.ts]: "+e),this.logEnabled=!1)},e})()},"./src/crypt/fast-aes-key.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return a}));var a=(function(){function e(e,t){this.subtle=void 0,this.key=void 0,this.subtle=e,this.key=t}return e.prototype.expandKey=function(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])},e})()},"./src/demux/aacdemuxer.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/demux/base-audio-demuxer.ts"),n=o("./src/demux/adts.ts"),i=o("./src/utils/logger.ts"),r=o("./src/demux/id3.ts");function s(e,t){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},s(e,t)}var E=(function(e){var t,o;function a(t,o){var a;return(a=e.call(this)||this).observer=void 0,a.config=void 0,a.observer=t,a.config=o,a}o=e,(t=a).prototype=Object.create(o.prototype),t.prototype.constructor=t,s(t,o);var E=a.prototype;return E.resetInitSegment=function(t,o,a,n){e.prototype.resetInitSegment.call(this,t,o,a,n),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:o,duration:n,inputTimeScale:9e4,dropped:0}},a.probe=function(e){if(!e)return!1;for(var t=(r.getID3Data(e,0)||[]).length,o=e.length;t<o;t++)if(n.probe(e,t))return i.logger.log("ADTS sync word found !"),!0;return!1},E.canParse=function(e,t){return n.canParse(e,t)},E.appendFrame=function(e,t,o){n.initTrackConfig(e,this.observer,t,o,e.manifestCodec);var a=n.appendFrame(e,t,o,this.basePTS,this.frameIndex);if(a&&0===a.missing)return a},a})(a.default);t.default=E},"./src/demux/adts.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"getAudioConfig",(function(){return r})),o.d(t,"isHeaderPattern",(function(){return s})),o.d(t,"getHeaderLength",(function(){return E})),o.d(t,"getFullFrameLength",(function(){return _})),o.d(t,"canGetFrameLength",(function(){return T})),o.d(t,"isHeader",(function(){return l})),o.d(t,"canParse",(function(){return S})),o.d(t,"probe",(function(){return u})),o.d(t,"initTrackConfig",(function(){return d})),o.d(t,"getFrameDuration",(function(){return c})),o.d(t,"parseFrameHeader",(function(){return A})),o.d(t,"appendFrame",(function(){return I}));var a=o("./src/utils/logger.ts"),n=o("./src/errors.ts"),i=o("./src/events.ts");function r(e,t,o,r){var s,E,_,T,l=navigator.userAgent.toLowerCase(),S=r,u=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];s=1+((192&t[o+2])>>>6);var d=(60&t[o+2])>>>2;if(!(d>u.length-1))return _=(1&t[o+2])<<2,_|=(192&t[o+3])>>>6,a.logger.log("manifest codec:"+r+", ADTS type:"+s+", samplingIndex:"+d),/firefox/i.test(l)?d>=6?(s=5,T=new Array(4),E=d-3):(s=2,T=new Array(2),E=d):-1!==l.indexOf("android")?(s=2,T=new Array(2),E=d):(s=5,T=new Array(4),r&&(-1!==r.indexOf("mp4a.40.29")||-1!==r.indexOf("mp4a.40.5"))||!r&&d>=6?E=d-3:((r&&-1!==r.indexOf("mp4a.40.2")&&(d>=6&&1===_||/vivaldi/i.test(l))||!r&&1===_)&&(s=2,T=new Array(2)),E=d)),T[0]=s<<3,T[0]|=(14&d)>>1,T[1]|=(1&d)<<7,T[1]|=_<<3,5===s&&(T[1]|=(14&E)>>1,T[2]=(1&E)<<7,T[2]|=8,T[3]=0),{config:T,samplerate:u[d],channelCount:_,codec:"mp4a.40."+s,manifestCodec:S};e.trigger(i.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+d})}function s(e,t){return 255===e[t]&&240==(246&e[t+1])}function E(e,t){return 1&e[t+1]?7:9}function _(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function T(e,t){return t+5<e.length}function l(e,t){return t+1<e.length&&s(e,t)}function S(e,t){return T(e,t)&&s(e,t)&&_(e,t)<=e.length-t}function u(e,t){if(l(e,t)){var o=E(e,t);if(t+o>=e.length)return!1;var a=_(e,t);if(a<=o)return!1;var n=t+a;return n===e.length||l(e,n)}return!1}function d(e,t,o,n,i){if(!e.samplerate){var s=r(t,o,n,i);if(!s)return;e.config=s.config,e.samplerate=s.samplerate,e.channelCount=s.channelCount,e.codec=s.codec,e.manifestCodec=s.manifestCodec,a.logger.log("parsed codec:"+e.codec+", rate:"+s.samplerate+", channels:"+s.channelCount)}}function c(e){return 9216e4/e}function A(e,t){var o=E(e,t);if(t+o<=e.length){var a=_(e,t)-o;if(a>0)return{headerLength:o,frameLength:a}}}function I(e,t,o,a,n){var i,r=a+n*c(e.samplerate),s=A(t,o);if(s){var E=s.frameLength,_=s.headerLength,T=_+E,l=Math.max(0,o+T-t.length);l?(i=new Uint8Array(T-_)).set(t.subarray(o+_,t.length),0):i=t.subarray(o+_,o+T);var S={unit:i,pts:r};return l||e.samples.push(S),{sample:S,length:T,missing:l}}var u=t.length-o;return(i=new Uint8Array(u)).set(t.subarray(o,t.length),0),{sample:{unit:i,pts:r},length:u,missing:-1}}},"./src/demux/base-audio-demuxer.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"initPTSFn",(function(){return T}));var a=o("./src/polyfills/number.ts"),n=o("./src/demux/id3.ts"),i=o("./src/types/demuxer.ts"),r=o("./src/demux/dummy-demuxed-track.ts"),s=o("./src/utils/mp4-tools.ts"),E=o("./src/utils/typed-array.ts"),_=(function(){function e(){this._audioTrack=void 0,this._id3Track=void 0,this.frameIndex=0,this.cachedData=null,this.basePTS=null,this.initPTS=null}var t=e.prototype;return t.resetInitSegment=function(e,t,o,a){this._id3Track={type:"id3",id:3,pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0}},t.resetTimeStamp=function(e){this.initPTS=e,this.resetContiguity()},t.resetContiguity=function(){this.basePTS=null,this.frameIndex=0},t.canParse=function(e,t){return!1},t.appendFrame=function(e,t,o){},t.demux=function(e,t){this.cachedData&&(e=Object(s.appendUint8Array)(this.cachedData,e),this.cachedData=null);var o,_,l=n.getID3Data(e,0),S=l?l.length:0,u=this._audioTrack,d=this._id3Track,c=l?n.getTimeStamp(l):void 0,A=e.length;for((null===this.basePTS||0===this.frameIndex&&Object(a.isFiniteNumber)(c))&&(this.basePTS=T(c,t,this.initPTS)),l&&l.length>0&&d.samples.push({pts:this.basePTS,dts:this.basePTS,data:l,type:i.MetadataSchema.audioId3}),_=this.basePTS;S<A;){if(this.canParse(e,S)){var I=this.appendFrame(u,e,S);I?(this.frameIndex++,_=I.sample.pts,o=S+=I.length):S=A}else n.canParse(e,S)?(l=n.getID3Data(e,S),d.samples.push({pts:_,dts:_,data:l,type:i.MetadataSchema.audioId3}),o=S+=l.length):S++;if(S===A&&o!==A){var O=Object(E.sliceUint8)(e,o);this.cachedData?this.cachedData=Object(s.appendUint8Array)(this.cachedData,O):this.cachedData=O}}return{audioTrack:u,videoTrack:Object(r.dummyTrack)(),id3Track:d,textTrack:Object(r.dummyTrack)()}},t.demuxSampleAes=function(e,t,o){return Promise.reject(new Error("["+this+"] This demuxer does not support Sample-AES decryption"))},t.flush=function(e){var t=this.cachedData;return t&&(this.cachedData=null,this.demux(t,0)),{audioTrack:this._audioTrack,videoTrack:Object(r.dummyTrack)(),id3Track:this._id3Track,textTrack:Object(r.dummyTrack)()}},t.destroy=function(){},e})(),T=function(e,t,o){return Object(a.isFiniteNumber)(e)?90*e:9e4*t+(o||0)};t.default=_},"./src/demux/chunk-cache.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return a}));var a=(function(){function e(){this.chunks=[],this.dataLength=0}var t=e.prototype;return t.push=function(e){this.chunks.push(e),this.dataLength+=e.length},t.flush=function(){var e,t=this.chunks,o=this.dataLength;return t.length?(e=1===t.length?t[0]:(function(e,t){for(var o=new Uint8Array(t),a=0,n=0;n<e.length;n++){var i=e[n];o.set(i,a),a+=i.length}return o})(t,o),this.reset(),e):new Uint8Array(0)},t.reset=function(){this.chunks.length=0,this.dataLength=0},e})()},"./src/demux/dummy-demuxed-track.ts":function(e,t,o){"use strict";function a(e,t){return void 0===e&&(e=""),void 0===t&&(t=9e4),{type:e,id:-1,pid:-1,inputTimeScale:t,sequenceNumber:-1,samples:[],dropped:0}}o.r(t),o.d(t,"dummyTrack",(function(){return a}))},"./src/demux/exp-golomb.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/utils/logger.ts"),n=(function(){function e(e){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}var t=e.prototype;return t.loadWord=function(){var e=this.data,t=this.bytesAvailable,o=e.byteLength-t,a=new Uint8Array(4),n=Math.min(4,t);if(0===n)throw new Error("no bytes available");a.set(e.subarray(o,o+n)),this.word=new DataView(a.buffer).getUint32(0),this.bitsAvailable=8*n,this.bytesAvailable-=n},t.skipBits=function(e){var t;this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,e-=(t=e>>3)>>3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)},t.readBits=function(e){var t=Math.min(this.bitsAvailable,e),o=this.word>>>32-t;return e>32&&a.logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0?this.word<<=t:this.bytesAvailable>0&&this.loadWord(),(t=e-t)>0&&this.bitsAvailable?o<<t|this.readBits(t):o},t.skipLZ=function(){var e;for(e=0;e<this.bitsAvailable;++e)if(0!=(this.word&2147483648>>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()},t.skipUEG=function(){this.skipBits(1+this.skipLZ())},t.skipEG=function(){this.skipBits(1+this.skipLZ())},t.readUEG=function(){var e=this.skipLZ();return this.readBits(e+1)-1},t.readEG=function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)},t.readBoolean=function(){return 1===this.readBits(1)},t.readUByte=function(){return this.readBits(8)},t.readUShort=function(){return this.readBits(16)},t.readUInt=function(){return this.readBits(32)},t.skipScalingList=function(e){for(var t=8,o=8,a=0;a<e;a++)0!==o&&(o=(t+this.readEG()+256)%256),t=0===o?t:o},t.readSPS=function(){var e,t,o,a=0,n=0,i=0,r=0,s=this.readUByte.bind(this),E=this.readBits.bind(this),_=this.readUEG.bind(this),T=this.readBoolean.bind(this),l=this.skipBits.bind(this),S=this.skipEG.bind(this),u=this.skipUEG.bind(this),d=this.skipScalingList.bind(this);s();var c=s();if(E(5),l(3),s(),u(),100===c||110===c||122===c||244===c||44===c||83===c||86===c||118===c||128===c){var A=_();if(3===A&&l(1),u(),u(),l(1),T())for(t=3!==A?8:12,o=0;o<t;o++)T()&&d(o<6?16:64)}u();var I=_();if(0===I)_();else if(1===I)for(l(1),S(),S(),e=_(),o=0;o<e;o++)S();u(),l(1);var O=_(),N=_(),R=E(1);0===R&&l(1),l(1),T()&&(a=_(),n=_(),i=_(),r=_());var m=[1,1];if(T()&&T())switch(s()){case 1:m=[1,1];break;case 2:m=[12,11];break;case 3:m=[10,11];break;case 4:m=[16,11];break;case 5:m=[40,33];break;case 6:m=[24,11];break;case 7:m=[20,11];break;case 8:m=[32,11];break;case 9:m=[80,33];break;case 10:m=[18,11];break;case 11:m=[15,11];break;case 12:m=[64,33];break;case 13:m=[160,99];break;case 14:m=[4,3];break;case 15:m=[3,2];break;case 16:m=[2,1];break;case 255:m=[s()<<8|s(),s()<<8|s()]}return{width:Math.ceil(16*(O+1)-2*a-2*n),height:(2-R)*(N+1)*16-(R?2:4)*(i+r),pixelRatio:m}},t.readSliceType=function(){return this.readUByte(),this.readUEG(),this.readUEG()},e})();t.default=n},"./src/demux/id3.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"isHeader",(function(){return n})),o.d(t,"isFooter",(function(){return i})),o.d(t,"getID3Data",(function(){return r})),o.d(t,"canParse",(function(){return E})),o.d(t,"getTimeStamp",(function(){return _})),o.d(t,"isTimeStampFrame",(function(){return T})),o.d(t,"getID3Frames",(function(){return S})),o.d(t,"decodeFrame",(function(){return u})),o.d(t,"utf8ArrayToStr",(function(){return O})),o.d(t,"testables",(function(){return N}));var a,n=function(e,t){return t+10<=e.length&&73===e[t]&&68===e[t+1]&&51===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128},i=function(e,t){return t+10<=e.length&&51===e[t]&&68===e[t+1]&&73===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128},r=function(e,t){for(var o=t,a=0;n(e,t);)a+=10,a+=s(e,t+6),i(e,t+10)&&(a+=10),t+=a;if(a>0)return e.subarray(o,o+a)},s=function(e,t){var o=0;return o=(127&e[t])<<21,o|=(127&e[t+1])<<14,o|=(127&e[t+2])<<7,o|=127&e[t+3]},E=function(e,t){return n(e,t)&&s(e,t+6)+10<=e.length-t},_=function(e){for(var t=S(e),o=0;o<t.length;o++){var a=t[o];if(T(a))return I(a)}},T=function(e){return e&&"PRIV"===e.key&&"com.apple.streaming.transportStreamTimestamp"===e.info},l=function(e){var t=String.fromCharCode(e[0],e[1],e[2],e[3]),o=s(e,4);return{type:t,size:o,data:e.subarray(10,10+o)}},S=function(e){for(var t=0,o=[];n(e,t);){for(var a=s(e,t+6),r=(t+=10)+a;t+8<r;){var E=l(e.subarray(t)),_=u(E);_&&o.push(_),t+=E.size+10}i(e,t)&&(t+=10)}return o},u=function(e){return"PRIV"===e.type?d(e):"W"===e.type[0]?A(e):c(e)},d=function(e){if(!(e.size<2)){var t=O(e.data,!0),o=new Uint8Array(e.data.subarray(t.length+1));return{key:e.type,info:t,data:o.buffer}}},c=function(e){if(!(e.size<2)){if("TXXX"===e.type){var t=1,o=O(e.data.subarray(t),!0);t+=o.length+1;var a=O(e.data.subarray(t));return{key:e.type,info:o,data:a}}var n=O(e.data.subarray(1));return{key:e.type,data:n}}},A=function(e){if("WXXX"===e.type){if(e.size<2)return;var t=1,o=O(e.data.subarray(t),!0);t+=o.length+1;var a=O(e.data.subarray(t));return{key:e.type,info:o,data:a}}var n=O(e.data);return{key:e.type,data:n}},I=function(e){if(8===e.data.byteLength){var t=new Uint8Array(e.data),o=1&t[3],a=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return a/=45,o&&(a+=47721858.84),Math.round(a)}},O=function(e,t){void 0===t&&(t=!1);var o=R();if(o){var a=o.decode(e);if(t){var n=a.indexOf("\0");return-1!==n?a.substring(0,n):a}return a.replace(/\0/g,"")}for(var i,r,s,E=e.length,_="",T=0;T<E;){if(0===(i=e[T++])&&t)return _;if(0!==i&&3!==i)switch(i>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:_+=String.fromCharCode(i);break;case 12:case 13:r=e[T++],_+=String.fromCharCode((31&i)<<6|63&r);break;case 14:r=e[T++],s=e[T++],_+=String.fromCharCode((15&i)<<12|(63&r)<<6|(63&s)<<0)}}return _},N={decodeTextFrame:c};function R(){return a||void 0===self.TextDecoder||(a=new self.TextDecoder("utf-8")),a}},"./src/demux/mp3demuxer.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/demux/base-audio-demuxer.ts"),n=o("./src/demux/id3.ts"),i=o("./src/utils/logger.ts"),r=o("./src/demux/mpegaudio.ts");function s(e,t){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},s(e,t)}var E=(function(e){var t,o;function a(){return e.apply(this,arguments)||this}o=e,(t=a).prototype=Object.create(o.prototype),t.prototype.constructor=t,s(t,o);var E=a.prototype;return E.resetInitSegment=function(t,o,a,n){e.prototype.resetInitSegment.call(this,t,o,a,n),this._audioTrack={container:"audio/mpeg",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"mp3",samples:[],manifestCodec:o,duration:n,inputTimeScale:9e4,dropped:0}},a.probe=function(e){if(!e)return!1;for(var t=(n.getID3Data(e,0)||[]).length,o=e.length;t<o;t++)if(r.probe(e,t))return i.logger.log("MPEG Audio sync word found !"),!0;return!1},E.canParse=function(e,t){return r.canParse(e,t)},E.appendFrame=function(e,t,o){if(null!==this.basePTS)return r.appendFrame(e,t,o,this.basePTS,this.frameIndex)},a})(a.default);t.default=E},"./src/demux/mp4demuxer.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/polyfills/number.ts"),n=o("./src/types/demuxer.ts"),i=o("./src/utils/mp4-tools.ts"),r=o("./src/demux/dummy-demuxed-track.ts"),s=/\/emsg[-/]ID3/i,E=(function(){function e(e,t){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=t}var t=e.prototype;return t.resetTimeStamp=function(){},t.resetInitSegment=function(e,t,o,a){var n=Object(i.parseInitSegment)(e),s=this.videoTrack=Object(r.dummyTrack)("video",1),E=this.audioTrack=Object(r.dummyTrack)("audio",1),_=this.txtTrack=Object(r.dummyTrack)("text",1);if(this.id3Track=Object(r.dummyTrack)("id3",1),this.timeOffset=0,n.video){var T=n.video,l=T.id,S=T.timescale,u=T.codec;s.id=l,s.timescale=_.timescale=S,s.codec=u}if(n.audio){var d=n.audio,c=d.id,A=d.timescale,I=d.codec;E.id=c,E.timescale=A,E.codec=I}_.id=i.RemuxerTrackIdConfig.text,s.sampleDuration=0,s.duration=E.duration=a},t.resetContiguity=function(){},e.probe=function(e){return e=e.length>16384?e.subarray(0,16384):e,Object(i.findBox)(e,["moof"]).length>0},t.demux=function(e,t){this.timeOffset=t;var o=e,a=this.videoTrack,n=this.txtTrack;if(this.config.progressive){this.remainderData&&(o=Object(i.appendUint8Array)(this.remainderData,e));var r=Object(i.segmentValidRange)(o);this.remainderData=r.remainder,a.samples=r.valid||new Uint8Array}else a.samples=o;var s=this.extractID3Track(a,t);return n.samples=Object(i.parseSamples)(t,a),{videoTrack:a,audioTrack:this.audioTrack,id3Track:s,textTrack:this.txtTrack}},t.flush=function(){var e=this.timeOffset,t=this.videoTrack,o=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;var a=this.extractID3Track(t,this.timeOffset);return o.samples=Object(i.parseSamples)(e,t),{videoTrack:t,audioTrack:Object(r.dummyTrack)(),id3Track:a,textTrack:Object(r.dummyTrack)()}},t.extractID3Track=function(e,t){var o=this.id3Track;if(e.samples.length){var r=Object(i.findBox)(e.samples,["emsg"]);r&&r.forEach((function(e){var r=Object(i.parseEmsg)(e);if(s.test(r.schemeIdUri)){var E=Object(a.isFiniteNumber)(r.presentationTime)?r.presentationTime/r.timeScale:t+r.presentationTimeDelta/r.timeScale,_=r.payload;o.samples.push({data:_,len:_.byteLength,dts:E,pts:E,type:n.MetadataSchema.emsg})}}))}return o},t.demuxSampleAes=function(e,t,o){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))},t.destroy=function(){},e})();t.default=E},"./src/demux/mpegaudio.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"appendFrame",(function(){return E})),o.d(t,"parseHeader",(function(){return _})),o.d(t,"isHeaderPattern",(function(){return T})),o.d(t,"isHeader",(function(){return l})),o.d(t,"canParse",(function(){return S})),o.d(t,"probe",(function(){return u}));var a=null,n=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],i=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],r=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],s=[0,1,1,4];function E(e,t,o,a,n){if(!(o+24>t.length)){var i=_(t,o);if(i&&o+i.frameLength<=t.length){var r=a+n*(9e4*i.samplesPerFrame/i.sampleRate),s={unit:t.subarray(o,o+i.frameLength),pts:r,dts:r};return e.config=[],e.channelCount=i.channelCount,e.samplerate=i.sampleRate,e.samples.push(s),{sample:s,length:i.frameLength,missing:0}}}}function _(e,t){var o=e[t+1]>>3&3,E=e[t+1]>>1&3,_=e[t+2]>>4&15,T=e[t+2]>>2&3;if(1!==o&&0!==_&&15!==_&&3!==T){var l=e[t+2]>>1&1,S=e[t+3]>>6,u=1e3*n[14*(3===o?3-E:3===E?3:4)+_-1],d=i[3*(3===o?0:2===o?1:2)+T],c=3===S?1:2,A=r[o][E],I=s[E],O=8*A*I,N=Math.floor(A*u/d+l)*I;if(null===a){var R=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);a=R?parseInt(R[1]):0}return!!a&&a<=87&&2===E&&u>=224e3&&0===S&&(e[t+3]=128|e[t+3]),{sampleRate:d,channelCount:c,frameLength:N,samplesPerFrame:O}}}function T(e,t){return 255===e[t]&&224==(224&e[t+1])&&0!=(6&e[t+1])}function l(e,t){return t+1<e.length&&T(e,t)}function S(e,t){return T(e,t)&&4<=e.length-t}function u(e,t){if(t+1<e.length&&T(e,t)){var o=_(e,t),a=4;null!=o&&o.frameLength&&(a=o.frameLength);var n=t+a;return n===e.length||l(e,n)}return!1}},"./src/demux/sample-aes.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/crypt/decrypter.ts"),n=o("./src/demux/tsdemuxer.ts"),i=(function(){function e(e,t,o){this.keyData=void 0,this.decrypter=void 0,this.keyData=o,this.decrypter=new a.default(e,t,{removePKCS7Padding:!1})}var t=e.prototype;return t.decryptBuffer=function(e,t){this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer,t)},t.decryptAacSample=function(e,t,o,a){var n=e[t].unit;if(!(n.length<=16)){var i=n.subarray(16,n.length-n.length%16),r=i.buffer.slice(i.byteOffset,i.byteOffset+i.length),s=this;this.decryptBuffer(r,(function(i){var r=new Uint8Array(i);n.set(r,16),a||s.decryptAacSamples(e,t+1,o)}))}},t.decryptAacSamples=function(e,t,o){for(;;t++){if(t>=e.length)return void o();if(!(e[t].unit.length<32)){var a=this.decrypter.isSync();if(this.decryptAacSample(e,t,o,a),!a)return}}},t.getAvcEncryptedData=function(e){for(var t=16*Math.floor((e.length-48)/160)+16,o=new Int8Array(t),a=0,n=32;n<e.length-16;n+=160,a+=16)o.set(e.subarray(n,n+16),a);return o},t.getAvcDecryptedUnit=function(e,t){for(var o=new Uint8Array(t),a=0,n=32;n<e.length-16;n+=160,a+=16)e.set(o.subarray(a,a+16),n);return e},t.decryptAvcSample=function(e,t,o,a,i,r){var s=Object(n.discardEPB)(i.data),E=this.getAvcEncryptedData(s),_=this;this.decryptBuffer(E.buffer,(function(n){i.data=_.getAvcDecryptedUnit(s,n),r||_.decryptAvcSamples(e,t,o+1,a)}))},t.decryptAvcSamples=function(e,t,o,a){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,o=0){if(t>=e.length)return void a();for(var n=e[t].units;!(o>=n.length);o++){var i=n[o];if(!(i.data.length<=48||1!==i.type&&5!==i.type)){var r=this.decrypter.isSync();if(this.decryptAvcSample(e,t,o,a,i,r),!r)return}}}},e})();t.default=i},"./src/demux/transmuxer-interface.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return l}));var a=o("./node_modules/webworkify-webpack/index.js"),n=o("./src/events.ts"),i=o("./src/demux/transmuxer.ts"),r=o("./src/utils/logger.ts"),s=o("./src/errors.ts"),E=o("./src/utils/mediasource-helper.ts"),_=o("./node_modules/eventemitter3/index.js"),T=Object(E.getMediaSource)()||{isTypeSupported:function(){return!1}},l=(function(){function e(e,t,o,E){var l=this;this.hls=void 0,this.id=void 0,this.observer=void 0,this.frag=null,this.part=null,this.worker=void 0,this.onwmsg=void 0,this.transmuxer=null,this.onTransmuxComplete=void 0,this.onFlush=void 0,this.hls=e,this.id=t,this.onTransmuxComplete=o,this.onFlush=E;var S=e.config,u=function(t,o){(o=o||{}).frag=l.frag,o.id=l.id,e.trigger(t,o)};this.observer=new _.EventEmitter,this.observer.on(n.Events.FRAG_DECRYPTED,u),this.observer.on(n.Events.ERROR,u);var d={mp4:T.isTypeSupported("video/mp4"),mpeg:T.isTypeSupported("audio/mpeg"),mp3:T.isTypeSupported('audio/mp4; codecs="mp3"')},c=navigator.vendor;if(S.enableWorker&&"undefined"!=typeof Worker){var A;r.logger.log("demuxing in webworker");try{A=this.worker=a("./src/demux/transmuxer-worker.ts"),this.onwmsg=this.onWorkerMessage.bind(this),A.addEventListener("message",this.onwmsg),A.onerror=function(t){e.trigger(n.Events.ERROR,{type:s.ErrorTypes.OTHER_ERROR,details:s.ErrorDetails.INTERNAL_EXCEPTION,fatal:!0,event:"demuxerWorker",error:new Error(t.message+" ("+t.filename+":"+t.lineno+")")})},A.postMessage({cmd:"init",typeSupported:d,vendor:c,id:t,config:JSON.stringify(S)})}catch(e){r.logger.warn("Error in worker:",e),r.logger.error("Error while initializing DemuxerWorker, fallback to inline"),A&&self.URL.revokeObjectURL(A.objectURL),this.transmuxer=new i.default(this.observer,d,S,c,t),this.worker=null}}else this.transmuxer=new i.default(this.observer,d,S,c,t)}var t=e.prototype;return t.destroy=function(){var e=this.worker;if(e)e.removeEventListener("message",this.onwmsg),e.terminate(),this.worker=null,this.onwmsg=void 0;else{var t=this.transmuxer;t&&(t.destroy(),this.transmuxer=null)}var o=this.observer;o&&o.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null},t.push=function(e,t,o,a,n,s,E,_,T,l){var S,u,d=this;T.transmuxing.start=self.performance.now();var c=this.transmuxer,A=this.worker,I=s?s.start:n.start,O=n.decryptdata,N=this.frag,R=!(N&&n.cc===N.cc),m=!(N&&T.level===N.level),p=N?T.sn-N.sn:-1,h=this.part?T.part-this.part.index:-1,L=0===p&&T.id>1&&T.id===(null==N?void 0:N.stats.chunkCount),f=!m&&(1===p||0===p&&(1===h||L&&h<=0)),C=self.performance.now();(m||p||0===n.stats.parsing.start)&&(n.stats.parsing.start=C),!s||!h&&f||(s.stats.parsing.start=C);var D=!(N&&(null===(S=n.initSegment)||void 0===S?void 0:S.url)===(null===(u=N.initSegment)||void 0===u?void 0:u.url)),g=new i.TransmuxState(R,f,_,m,I,D);if(!f||R||D){r.logger.log("[transmuxer-interface, "+n.type+"]: Starting new transmux session for sn: "+T.sn+" p: "+T.part+" level: "+T.level+" id: "+T.id+"\n discontinuity: "+R+"\n trackSwitch: "+m+"\n contiguous: "+f+"\n accurateTimeOffset: "+_+"\n timeOffset: "+I+"\n initSegmentChange: "+D);var v=new i.TransmuxConfig(o,a,t,E,l);this.configureTransmuxer(v)}if(this.frag=n,this.part=s,A)A.postMessage({cmd:"demux",data:e,decryptdata:O,chunkMeta:T,state:g},e instanceof ArrayBuffer?[e]:[]);else if(c){var P=c.push(e,O,T,g);Object(i.isPromise)(P)?P.then((function(e){d.handleTransmuxComplete(e)})):this.handleTransmuxComplete(P)}},t.flush=function(e){var t=this;e.transmuxing.start=self.performance.now();var o=this.transmuxer,a=this.worker;if(a)a.postMessage({cmd:"flush",chunkMeta:e});else if(o){var n=o.flush(e);Object(i.isPromise)(n)?n.then((function(o){t.handleFlushResult(o,e)})):this.handleFlushResult(n,e)}},t.handleFlushResult=function(e,t){var o=this;e.forEach((function(e){o.handleTransmuxComplete(e)})),this.onFlush(t)},t.onWorkerMessage=function(e){var t=e.data,o=this.hls;switch(t.event){case"init":self.URL.revokeObjectURL(this.worker.objectURL);break;case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":r.logger[t.data.logType]&&r.logger[t.data.logType](t.data.message);break;default:t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,o.trigger(t.event,t.data)}},t.configureTransmuxer=function(e){var t=this.worker,o=this.transmuxer;t?t.postMessage({cmd:"configure",config:e}):o&&o.configure(e)},t.handleTransmuxComplete=function(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)},e})()},"./src/demux/transmuxer-worker.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return s}));var a=o("./src/demux/transmuxer.ts"),n=o("./src/events.ts"),i=o("./src/utils/logger.ts"),r=o("./node_modules/eventemitter3/index.js");function s(e){var t=new r.EventEmitter,o=function(t,o){e.postMessage({event:t,data:o})};t.on(n.Events.FRAG_DECRYPTED,o),t.on(n.Events.ERROR,o),e.addEventListener("message",(function(n){var r=n.data;switch(r.cmd){case"init":var s=JSON.parse(r.config);e.transmuxer=new a.default(t,r.typeSupported,s,r.vendor,r.id),Object(i.enableLogs)(s.debug),(function(){var e=function(e){i.logger[e]=function(t){o("workerLog",{logType:e,message:t})}};for(var t in i.logger)e(t)})(),o("init",null);break;case"configure":e.transmuxer.configure(r.config);break;case"demux":var _=e.transmuxer.push(r.data,r.decryptdata,r.chunkMeta,r.state);Object(a.isPromise)(_)?_.then((function(t){E(e,t)})):E(e,_);break;case"flush":var l=r.chunkMeta,S=e.transmuxer.flush(l);Object(a.isPromise)(S)?S.then((function(t){T(e,t,l)})):T(e,S,l)}}))}function E(e,t){if(!((o=t.remuxResult).audio||o.video||o.text||o.id3||o.initSegment))return!1;var o,a=[],n=t.remuxResult,i=n.audio,r=n.video;return i&&_(a,i),r&&_(a,r),e.postMessage({event:"transmuxComplete",data:t},a),!0}function _(e,t){t.data1&&e.push(t.data1.buffer),t.data2&&e.push(t.data2.buffer)}function T(e,t,o){t.reduce((function(t,o){return E(e,o)||t}),!1)||e.postMessage({event:"transmuxComplete",data:t[0]}),e.postMessage({event:"flush",data:o})}},"./src/demux/transmuxer.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return c})),o.d(t,"isPromise",(function(){return I})),o.d(t,"TransmuxConfig",(function(){return O})),o.d(t,"TransmuxState",(function(){return N}));var a,n=o("./src/events.ts"),i=o("./src/errors.ts"),r=o("./src/crypt/decrypter.ts"),s=o("./src/demux/aacdemuxer.ts"),E=o("./src/demux/mp4demuxer.ts"),_=o("./src/demux/tsdemuxer.ts"),T=o("./src/demux/mp3demuxer.ts"),l=o("./src/remux/mp4-remuxer.ts"),S=o("./src/remux/passthrough-remuxer.ts"),u=o("./src/utils/logger.ts");try{a=self.performance.now.bind(self.performance)}catch(e){u.logger.debug("Unable to use Performance API on this environment"),a=self.Date.now}var d=[{demux:_.default,remux:l.default},{demux:E.default,remux:S.default},{demux:s.default,remux:l.default},{demux:T.default,remux:l.default}],c=(function(){function e(e,t,o,a,n){this.observer=void 0,this.typeSupported=void 0,this.config=void 0,this.vendor=void 0,this.id=void 0,this.demuxer=void 0,this.remuxer=void 0,this.decrypter=void 0,this.probe=void 0,this.decryptionPromise=null,this.transmuxConfig=void 0,this.currentTransmuxState=void 0,this.observer=e,this.typeSupported=t,this.config=o,this.vendor=a,this.id=n}var t=e.prototype;return t.configure=function(e){this.transmuxConfig=e,this.decrypter&&this.decrypter.reset()},t.push=function(e,t,o,n){var i=this,r=o.transmuxing;r.executeStart=a();var s=new Uint8Array(e),E=this.config,_=this.currentTransmuxState,T=this.transmuxConfig;n&&(this.currentTransmuxState=n);var l=n||_,S=l.contiguous,u=l.discontinuity,d=l.trackSwitch,c=l.accurateTimeOffset,I=l.timeOffset,O=l.initSegmentChange,N=T.audioCodec,R=T.videoCodec,m=T.defaultInitPts,p=T.duration,h=T.initSegmentData;(u||d||O)&&this.resetInitSegment(h,N,R,p),(u||O)&&this.resetInitialTimestamp(m),S||this.resetContiguity();var L=(function(e,t){var o=null;return e.byteLength>0&&null!=t&&null!=t.key&&null!==t.iv&&null!=t.method&&(o=t),o})(s,t);if(L&&"AES-128"===L.method){var f=this.getDecrypter();if(!E.enableSoftwareAES)return this.decryptionPromise=f.webCryptoDecrypt(s,L.key.buffer,L.iv.buffer).then((function(e){var t=i.push(e,null,o);return i.decryptionPromise=null,t})),this.decryptionPromise;var C=f.softwareDecrypt(s,L.key.buffer,L.iv.buffer);if(!C)return r.executeEnd=a(),A(o);s=new Uint8Array(C)}this.needsProbing(s,u,d)&&this.configureTransmuxer(s,T);var D=this.transmux(s,L,I,c,o),g=this.currentTransmuxState;return g.contiguous=!0,g.discontinuity=!1,g.trackSwitch=!1,r.executeEnd=a(),D},t.flush=function(e){var t=this,o=e.transmuxing;o.executeStart=a();var r=this.decrypter,s=this.currentTransmuxState,E=this.decryptionPromise;if(E)return E.then((function(){return t.flush(e)}));var _=[],T=s.timeOffset;if(r){var l=r.flush();l&&_.push(this.push(l,null,e))}var S=this.demuxer,u=this.remuxer;if(!S||!u)return this.observer.emit(n.Events.ERROR,n.Events.ERROR,{type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"no demux matching with content found"}),o.executeEnd=a(),[A(e)];var d=S.flush(T);return I(d)?d.then((function(o){return t.flushRemux(_,o,e),_})):(this.flushRemux(_,d,e),_)},t.flushRemux=function(e,t,o){var n=t.audioTrack,i=t.videoTrack,r=t.id3Track,s=t.textTrack,E=this.currentTransmuxState,_=E.accurateTimeOffset,T=E.timeOffset;u.logger.log("[transmuxer.ts]: Flushed fragment "+o.sn+(o.part>-1?" p: "+o.part:"")+" of level "+o.level);var l=this.remuxer.remux(n,i,r,s,T,_,!0,this.id);e.push({remuxResult:l,chunkMeta:o}),o.transmuxing.executeEnd=a()},t.resetInitialTimestamp=function(e){var t=this.demuxer,o=this.remuxer;t&&o&&(t.resetTimeStamp(e),o.resetTimeStamp(e))},t.resetContiguity=function(){var e=this.demuxer,t=this.remuxer;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())},t.resetInitSegment=function(e,t,o,a){var n=this.demuxer,i=this.remuxer;n&&i&&(n.resetInitSegment(e,t,o,a),i.resetInitSegment(e,t,o))},t.destroy=function(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)},t.transmux=function(e,t,o,a,n){return t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,o,a,n):this.transmuxUnencrypted(e,o,a,n)},t.transmuxUnencrypted=function(e,t,o,a){var n=this.demuxer.demux(e,t,!1,!this.config.progressive),i=n.audioTrack,r=n.videoTrack,s=n.id3Track,E=n.textTrack;return{remuxResult:this.remuxer.remux(i,r,s,E,t,o,!1,this.id),chunkMeta:a}},t.transmuxSampleAes=function(e,t,o,a,n){var i=this;return this.demuxer.demuxSampleAes(e,t,o).then((function(e){return{remuxResult:i.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,o,a,!1,i.id),chunkMeta:n}}))},t.configureTransmuxer=function(e,t){for(var o,a=this.config,n=this.observer,i=this.typeSupported,r=this.vendor,s=t.audioCodec,_=t.defaultInitPts,T=t.duration,l=t.initSegmentData,c=t.videoCodec,A=0,I=d.length;A<I;A++)if(d[A].demux.probe(e)){o=d[A];break}o||(u.logger.warn("Failed to find demuxer by probing frag, treating as mp4 passthrough"),o={demux:E.default,remux:S.default});var O=this.demuxer,N=this.remuxer,R=o.remux,m=o.demux;N&&N instanceof R||(this.remuxer=new R(n,a,i,r)),O&&O instanceof m||(this.demuxer=new m(n,a,i),this.probe=m.probe),this.resetInitSegment(l,s,c,T),this.resetInitialTimestamp(_)},t.needsProbing=function(e,t,o){return!this.demuxer||!this.remuxer||t||o},t.getDecrypter=function(){var e=this.decrypter;return e||(e=this.decrypter=new r.default(this.observer,this.config)),e},e})(),A=function(e){return{remuxResult:{},chunkMeta:e}};function I(e){return"then"in e&&e.then instanceof Function}var O=function(e,t,o,a,n){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=e,this.videoCodec=t,this.initSegmentData=o,this.duration=a,this.defaultInitPts=n},N=function(e,t,o,a,n,i){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=e,this.contiguous=t,this.accurateTimeOffset=o,this.trackSwitch=a,this.timeOffset=n,this.initSegmentChange=i}},"./src/demux/tsdemuxer.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"discardEPB",(function(){return N}));var a=o("./src/demux/adts.ts"),n=o("./src/demux/mpegaudio.ts"),i=o("./src/demux/exp-golomb.ts"),r=o("./src/demux/sample-aes.ts"),s=o("./src/events.ts"),E=o("./src/utils/mp4-tools.ts"),_=o("./src/utils/logger.ts"),T=o("./src/errors.ts"),l=o("./src/types/demuxer.ts");function S(){return S=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},S.apply(this,arguments)}var u=(function(){function e(e,t,o){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this._pmtId=-1,this._avcTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.avcSample=null,this.remainderData=null,this.observer=e,this.config=t,this.typeSupported=o}e.probe=function(e){return 71===e[0]&&71===e[188]},e.createTrack=function(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:E.RemuxerTrackIdConfig[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}};var t=e.prototype;return t.resetInitSegment=function(t,o,a,n){this.pmtParsed=!1,this._pmtId=-1,this._avcTrack=e.createTrack("video"),this._audioTrack=e.createTrack("audio",n),this._id3Track=e.createTrack("id3"),this._txtTrack=e.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.avcSample=null,this.remainderData=null,this.audioCodec=o,this.videoCodec=a,this._duration=n},t.resetTimeStamp=function(){},t.resetContiguity=function(){var e=this._audioTrack,t=this._avcTrack,o=this._id3Track;e&&(e.pesData=null),t&&(t.pesData=null),o&&(o.pesData=null),this.aacOverFlow=null},t.demux=function(e,t,o,a){var n;void 0===o&&(o=!1),void 0===a&&(a=!1),o||(this.sampleAes=null);var i=this._avcTrack,r=this._audioTrack,l=this._id3Track,S=this._txtTrack,u=i.pid,d=i.pesData,O=r.pid,N=l.pid,R=r.pesData,m=l.pesData,p=null,h=this.pmtParsed,L=this._pmtId,f=e.length;if(this.remainderData&&(f=(e=Object(E.appendUint8Array)(this.remainderData,e)).length,this.remainderData=null),f<188&&!a)return this.remainderData=e,{audioTrack:r,videoTrack:i,id3Track:l,textTrack:S};(f-=f%188)<e.byteLength&&!a&&(this.remainderData=new Uint8Array(e.buffer,f,e.buffer.byteLength-f));for(var C=0,D=0;D<f;D+=188)if(71===e[D]){var g=!!(64&e[D+1]),v=((31&e[D+1])<<8)+e[D+2],P=void 0;if((48&e[D+3])>>4>1){if((P=D+5+e[D+4])===D+188)continue}else P=D+4;switch(v){case u:g&&(d&&(n=I(d))&&this.parseAVCPES(i,S,n,!1),d={data:[],size:0}),d&&(d.data.push(e.subarray(P,D+188)),d.size+=D+188-P);break;case O:if(g){if(R&&(n=I(R)))switch(r.segmentCodec){case"aac":this.parseAACPES(r,n);break;case"mp3":this.parseMPEGPES(r,n)}R={data:[],size:0}}R&&(R.data.push(e.subarray(P,D+188)),R.size+=D+188-P);break;case N:g&&(m&&(n=I(m))&&this.parseID3PES(l,n),m={data:[],size:0}),m&&(m.data.push(e.subarray(P,D+188)),m.size+=D+188-P);break;case 0:g&&(P+=e[P]+1),L=this._pmtId=c(e,P);break;case L:g&&(P+=e[P]+1);var y=A(e,P,this.typeSupported,o);(u=y.avc)>0&&(i.pid=u),(O=y.audio)>0&&(r.pid=O,r.segmentCodec=y.segmentCodec),(N=y.id3)>0&&(l.pid=N),null===p||h||(_.logger.log("unknown PID '"+p+"' in TS found"),p=null),h=this.pmtParsed=!0;break;case 17:case 8191:break;default:p=v}}else C++;C>0&&this.observer.emit(s.Events.ERROR,s.Events.ERROR,{type:T.ErrorTypes.MEDIA_ERROR,details:T.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"Found "+C+" TS packet/s that do not start with 0x47"}),i.pesData=d,r.pesData=R,l.pesData=m;var B={audioTrack:r,videoTrack:i,id3Track:l,textTrack:S};return a&&this.extractRemainingSamples(B),B},t.flush=function(){var e,t=this.remainderData;return this.remainderData=null,e=t?this.demux(t,-1,!1,!0):{videoTrack:this._avcTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(e),this.sampleAes?this.decrypt(e,this.sampleAes):e},t.extractRemainingSamples=function(e){var t,o=e.audioTrack,a=e.videoTrack,n=e.id3Track,i=e.textTrack,r=a.pesData,s=o.pesData,E=n.pesData;if(r&&(t=I(r))?(this.parseAVCPES(a,i,t,!0),a.pesData=null):a.pesData=r,s&&(t=I(s))){switch(o.segmentCodec){case"aac":this.parseAACPES(o,t);break;case"mp3":this.parseMPEGPES(o,t)}o.pesData=null}else null!=s&&s.size&&_.logger.log("last AAC PES packet truncated,might overlap between fragments"),o.pesData=s;E&&(t=I(E))?(this.parseID3PES(n,t),n.pesData=null):n.pesData=E},t.demuxSampleAes=function(e,t,o){var a=this.demux(e,o,!0,!this.config.progressive),n=this.sampleAes=new r.default(this.observer,this.config,t);return this.decrypt(a,n)},t.decrypt=function(e,t){return new Promise((function(o){var a=e.audioTrack,n=e.videoTrack;a.samples&&"aac"===a.segmentCodec?t.decryptAacSamples(a.samples,0,(function(){n.samples?t.decryptAvcSamples(n.samples,0,0,(function(){o(e)})):o(e)})):n.samples&&t.decryptAvcSamples(n.samples,0,0,(function(){o(e)}))}))},t.destroy=function(){this._duration=0},t.parseAVCPES=function(e,t,o,a){var n,r=this,s=this.parseAVCNALu(e,o.data),_=this.avcSample,T=!1;o.data=null,_&&s.length&&!e.audFound&&(O(_,e),_=this.avcSample=d(!1,o.pts,o.dts,"")),s.forEach((function(a){switch(a.type){case 1:n=!0,_||(_=r.avcSample=d(!0,o.pts,o.dts,"")),_.frame=!0;var s=a.data;if(T&&s.length>4){var l=new i.default(s).readSliceType();2!==l&&4!==l&&7!==l&&9!==l||(_.key=!0)}break;case 5:n=!0,_||(_=r.avcSample=d(!0,o.pts,o.dts,"")),_.key=!0,_.frame=!0;break;case 6:n=!0,Object(E.parseSEIMessageFromNALu)(N(a.data),o.pts,t.samples);break;case 7:if(n=!0,T=!0,!e.sps){var S=new i.default(a.data).readSPS();e.width=S.width,e.height=S.height,e.pixelRatio=S.pixelRatio,e.sps=[a.data],e.duration=r._duration;for(var u=a.data.subarray(1,4),c="avc1.",A=0;A<3;A++){var I=u[A].toString(16);I.length<2&&(I="0"+I),c+=I}e.codec=c}break;case 8:n=!0,e.pps||(e.pps=[a.data]);break;case 9:n=!1,e.audFound=!0,_&&O(_,e),_=r.avcSample=d(!1,o.pts,o.dts,"");break;case 12:n=!0;break;default:n=!1,_&&(_.debug+="unknown NAL "+a.type+" ")}_&&n&&_.units.push(a)})),a&&_&&(O(_,e),this.avcSample=null)},t.getLastNalUnit=function(e){var t,o,a=this.avcSample;if(a&&0!==a.units.length||(a=e[e.length-1]),null!==(t=a)&&void 0!==t&&t.units){var n=a.units;o=n[n.length-1]}return o},t.parseAVCNALu=function(e,t){var o,a,n=t.byteLength,i=e.naluState||0,r=i,s=[],E=0,_=-1,T=0;for(-1===i&&(_=0,T=31&t[0],i=0,E=1);E<n;)if(o=t[E++],i)if(1!==i)if(o)if(1===o){if(_>=0){var l={data:t.subarray(_,E-i-1),type:T};s.push(l)}else{var S=this.getLastNalUnit(e.samples);if(S&&(r&&E<=4-r&&S.state&&(S.data=S.data.subarray(0,S.data.byteLength-r)),(a=E-i-1)>0)){var u=new Uint8Array(S.data.byteLength+a);u.set(S.data,0),u.set(t.subarray(0,a),S.data.byteLength),S.data=u,S.state=0}}E<n?(_=E,T=31&t[E],i=0):i=-1}else i=0;else i=3;else i=o?0:2;else i=o?0:1;if(_>=0&&i>=0){var d={data:t.subarray(_,n),type:T,state:i};s.push(d)}if(0===s.length){var c=this.getLastNalUnit(e.samples);if(c){var A=new Uint8Array(c.data.byteLength+t.byteLength);A.set(c.data,0),A.set(t,c.data.byteLength),c.data=A}}return e.naluState=i,s},t.parseAACPES=function(e,t){var o,n,i,r,E,l=0,S=this.aacOverFlow,u=t.data;if(S){this.aacOverFlow=null;var d=S.missing,c=S.sample.unit.byteLength;if(-1===d){var A=new Uint8Array(c+u.byteLength);A.set(S.sample.unit,0),A.set(u,c),u=A}else{var I=c-d;S.sample.unit.set(u.subarray(0,d),I),e.samples.push(S.sample),l=S.missing}}for(o=l,n=u.length;o<n-1&&!a.isHeader(u,o);o++);if(o===l||(o<n-1?(i="AAC PES did not start with ADTS header,offset:"+o,r=!1):(i="no ADTS header found in AAC PES",r=!0),_.logger.warn("parsing error:"+i),this.observer.emit(s.Events.ERROR,s.Events.ERROR,{type:T.ErrorTypes.MEDIA_ERROR,details:T.ErrorDetails.FRAG_PARSING_ERROR,fatal:r,reason:i}),!r)){if(a.initTrackConfig(e,this.observer,u,o,this.audioCodec),void 0!==t.pts)E=t.pts;else{if(!S)return void _.logger.warn("[tsdemuxer]: AAC PES unknown PTS");var O=a.getFrameDuration(e.samplerate);E=S.sample.pts+O}for(var N,R=0;o<n;){if(o+=(N=a.appendFrame(e,u,o,E,R)).length,N.missing){this.aacOverFlow=N;break}for(R++;o<n-1&&!a.isHeader(u,o);o++);}}},t.parseMPEGPES=function(e,t){var o=t.data,a=o.length,i=0,r=0,s=t.pts;if(void 0!==s)for(;r<a;)if(n.isHeader(o,r)){var E=n.appendFrame(e,o,r,s,i);if(!E)break;r+=E.length,i++}else r++;else _.logger.warn("[tsdemuxer]: MPEG PES unknown PTS")},t.parseID3PES=function(e,t){if(void 0!==t.pts){var o=S({},t,{type:this._avcTrack?l.MetadataSchema.emsg:l.MetadataSchema.audioId3});e.samples.push(o)}else _.logger.warn("[tsdemuxer]: ID3 PES unknown PTS")},e})();function d(e,t,o,a){return{key:e,frame:!1,pts:t,dts:o,units:[],debug:a,length:0}}function c(e,t){return(31&e[t+10])<<8|e[t+11]}function A(e,t,o,a){var n={audio:-1,avc:-1,id3:-1,segmentCodec:"aac"},i=t+3+((15&e[t+1])<<8|e[t+2])-4;for(t+=12+((15&e[t+10])<<8|e[t+11]);t<i;){var r=(31&e[t+1])<<8|e[t+2];switch(e[t]){case 207:if(!a){_.logger.log("ADTS AAC with AES-128-CBC frame encryption found in unencrypted stream");break}case 15:-1===n.audio&&(n.audio=r);break;case 21:-1===n.id3&&(n.id3=r);break;case 219:if(!a){_.logger.log("H.264 with AES-128-CBC slice encryption found in unencrypted stream");break}case 27:-1===n.avc&&(n.avc=r);break;case 3:case 4:!0!==o.mpeg&&!0!==o.mp3?_.logger.log("MPEG audio found, not supported in this browser"):-1===n.audio&&(n.audio=r,n.segmentCodec="mp3");break;case 36:_.logger.warn("Unsupported HEVC stream type found")}t+=5+((15&e[t+3])<<8|e[t+4])}return n}function I(e){var t,o,a,n,i,r=0,s=e.data;if(!e||0===e.size)return null;for(;s[0].length<19&&s.length>1;){var E=new Uint8Array(s[0].length+s[1].length);E.set(s[0]),E.set(s[1],s[0].length),s[0]=E,s.splice(1,1)}if(1===((t=s[0])[0]<<16)+(t[1]<<8)+t[2]){if((o=(t[4]<<8)+t[5])&&o>e.size-6)return null;var T=t[7];192&T&&(n=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&T?n-(i=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2)>54e5&&(_.logger.warn(Math.round((n-i)/9e4)+"s delta between PTS and DTS, align them"),n=i):i=n);var l=(a=t[8])+9;if(e.size<=l)return null;e.size-=l;for(var S=new Uint8Array(e.size),u=0,d=s.length;u<d;u++){var c=(t=s[u]).byteLength;if(l){if(l>c){l-=c;continue}t=t.subarray(l),c-=l,l=0}S.set(t,r),r+=c}return o&&(o-=a+3),{data:S,pts:n,dts:i,len:o}}return null}function O(e,t){if(e.units.length&&e.frame){if(void 0===e.pts){var o=t.samples,a=o.length;if(!a)return void t.dropped++;var n=o[a-1];e.pts=n.pts,e.dts=n.dts}t.samples.push(e)}e.debug.length&&_.logger.log(e.pts+"/"+e.dts+":"+e.debug)}function N(e){for(var t=e.byteLength,o=[],a=1;a<t-2;)0===e[a]&&0===e[a+1]&&3===e[a+2]?(o.push(a+2),a+=2):a++;if(0===o.length)return e;var n=t-o.length,i=new Uint8Array(n),r=0;for(a=0;a<n;r++,a++)r===o[0]&&(r++,o.shift()),i[a]=e[r];return i}t.default=u},"./src/errors.ts":function(e,t,o){"use strict";var a,n;o.r(t),o.d(t,"ErrorTypes",(function(){return a})),o.d(t,"ErrorDetails",(function(){return n})),(function(e){e.NETWORK_ERROR="networkError",e.MEDIA_ERROR="mediaError",e.KEY_SYSTEM_ERROR="keySystemError",e.MUX_ERROR="muxError",e.OTHER_ERROR="otherError"})(a||(a={})),(function(e){e.KEY_SYSTEM_NO_KEYS="keySystemNoKeys",e.KEY_SYSTEM_NO_ACCESS="keySystemNoAccess",e.KEY_SYSTEM_NO_SESSION="keySystemNoSession",e.KEY_SYSTEM_LICENSE_REQUEST_FAILED="keySystemLicenseRequestFailed",e.KEY_SYSTEM_NO_INIT_DATA="keySystemNoInitData",e.MANIFEST_LOAD_ERROR="manifestLoadError",e.MANIFEST_LOAD_TIMEOUT="manifestLoadTimeOut",e.MANIFEST_PARSING_ERROR="manifestParsingError",e.MANIFEST_INCOMPATIBLE_CODECS_ERROR="manifestIncompatibleCodecsError",e.LEVEL_EMPTY_ERROR="levelEmptyError",e.LEVEL_LOAD_ERROR="levelLoadError",e.LEVEL_LOAD_TIMEOUT="levelLoadTimeOut",e.LEVEL_SWITCH_ERROR="levelSwitchError",e.AUDIO_TRACK_LOAD_ERROR="audioTrackLoadError",e.AUDIO_TRACK_LOAD_TIMEOUT="audioTrackLoadTimeOut",e.SUBTITLE_LOAD_ERROR="subtitleTrackLoadError",e.SUBTITLE_TRACK_LOAD_TIMEOUT="subtitleTrackLoadTimeOut",e.FRAG_LOAD_ERROR="fragLoadError",e.FRAG_LOAD_TIMEOUT="fragLoadTimeOut",e.FRAG_DECRYPT_ERROR="fragDecryptError",e.FRAG_PARSING_ERROR="fragParsingError",e.REMUX_ALLOC_ERROR="remuxAllocError",e.KEY_LOAD_ERROR="keyLoadError",e.KEY_LOAD_TIMEOUT="keyLoadTimeOut",e.BUFFER_ADD_CODEC_ERROR="bufferAddCodecError",e.BUFFER_INCOMPATIBLE_CODECS_ERROR="bufferIncompatibleCodecsError",e.BUFFER_APPEND_ERROR="bufferAppendError",e.BUFFER_APPENDING_ERROR="bufferAppendingError",e.BUFFER_STALLED_ERROR="bufferStalledError",e.BUFFER_FULL_ERROR="bufferFullError",e.BUFFER_SEEK_OVER_HOLE="bufferSeekOverHole",e.BUFFER_NUDGE_ON_STALL="bufferNudgeOnStall",e.INTERNAL_EXCEPTION="internalException",e.INTERNAL_ABORTED="aborted",e.UNKNOWN="unknown"})(n||(n={}))},"./src/events.ts":function(e,t,o){"use strict";var a;o.r(t),o.d(t,"Events",(function(){return a})),(function(e){e.MEDIA_ATTACHING="hlsMediaAttaching",e.MEDIA_ATTACHED="hlsMediaAttached",e.MEDIA_DETACHING="hlsMediaDetaching",e.MEDIA_DETACHED="hlsMediaDetached",e.BUFFER_RESET="hlsBufferReset",e.BUFFER_CODECS="hlsBufferCodecs",e.BUFFER_CREATED="hlsBufferCreated",e.BUFFER_APPENDING="hlsBufferAppending",e.BUFFER_APPENDED="hlsBufferAppended",e.BUFFER_EOS="hlsBufferEos",e.BUFFER_FLUSHING="hlsBufferFlushing",e.BUFFER_FLUSHED="hlsBufferFlushed",e.MANIFEST_LOADING="hlsManifestLoading",e.MANIFEST_LOADED="hlsManifestLoaded",e.MANIFEST_PARSED="hlsManifestParsed",e.LEVEL_SWITCHING="hlsLevelSwitching",e.LEVEL_SWITCHED="hlsLevelSwitched",e.LEVEL_LOADING="hlsLevelLoading",e.LEVEL_LOADED="hlsLevelLoaded",e.LEVEL_UPDATED="hlsLevelUpdated",e.LEVEL_PTS_UPDATED="hlsLevelPtsUpdated",e.LEVELS_UPDATED="hlsLevelsUpdated",e.AUDIO_TRACKS_UPDATED="hlsAudioTracksUpdated",e.AUDIO_TRACK_SWITCHING="hlsAudioTrackSwitching",e.AUDIO_TRACK_SWITCHED="hlsAudioTrackSwitched",e.AUDIO_TRACK_LOADING="hlsAudioTrackLoading",e.AUDIO_TRACK_LOADED="hlsAudioTrackLoaded",e.SUBTITLE_TRACKS_UPDATED="hlsSubtitleTracksUpdated",e.SUBTITLE_TRACKS_CLEARED="hlsSubtitleTracksCleared",e.SUBTITLE_TRACK_SWITCH="hlsSubtitleTrackSwitch",e.SUBTITLE_TRACK_LOADING="hlsSubtitleTrackLoading",e.SUBTITLE_TRACK_LOADED="hlsSubtitleTrackLoaded",e.SUBTITLE_FRAG_PROCESSED="hlsSubtitleFragProcessed",e.CUES_PARSED="hlsCuesParsed",e.NON_NATIVE_TEXT_TRACKS_FOUND="hlsNonNativeTextTracksFound",e.INIT_PTS_FOUND="hlsInitPtsFound",e.FRAG_LOADING="hlsFragLoading",e.FRAG_LOAD_EMERGENCY_ABORTED="hlsFragLoadEmergencyAborted",e.FRAG_LOADED="hlsFragLoaded",e.FRAG_DECRYPTED="hlsFragDecrypted",e.FRAG_PARSING_INIT_SEGMENT="hlsFragParsingInitSegment",e.FRAG_PARSING_USERDATA="hlsFragParsingUserdata",e.FRAG_PARSING_METADATA="hlsFragParsingMetadata",e.FRAG_PARSED="hlsFragParsed",e.FRAG_BUFFERED="hlsFragBuffered",e.FRAG_CHANGED="hlsFragChanged",e.FPS_DROP="hlsFpsDrop",e.FPS_DROP_LEVEL_CAPPING="hlsFpsDropLevelCapping",e.ERROR="hlsError",e.DESTROYING="hlsDestroying",e.KEY_LOADING="hlsKeyLoading",e.KEY_LOADED="hlsKeyLoaded",e.LIVE_BACK_BUFFER_REACHED="hlsLiveBackBufferReached",e.BACK_BUFFER_REACHED="hlsBackBufferReached"})(a||(a={}))},"./src/hls.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return O}));var a=o("./node_modules/url-toolkit/src/url-toolkit.js"),n=o("./src/loader/playlist-loader.ts"),i=o("./src/loader/key-loader.ts"),r=o("./src/controller/id3-track-controller.ts"),s=o("./src/controller/latency-controller.ts"),E=o("./src/controller/level-controller.ts"),_=o("./src/controller/fragment-tracker.ts"),T=o("./src/controller/stream-controller.ts"),l=o("./src/is-supported.ts"),S=o("./src/utils/logger.ts"),u=o("./src/config.ts"),d=o("./node_modules/eventemitter3/index.js"),c=o("./src/events.ts"),A=o("./src/errors.ts");function I(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}var O=(function(){function e(t){void 0===t&&(t={}),this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new d.EventEmitter,this._autoLevelCapping=void 0,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null;var o=this.config=Object(u.mergeConfig)(e.DefaultConfig,t);this.userConfig=t,Object(S.enableLogs)(o.debug),this._autoLevelCapping=-1,o.progressive&&Object(u.enableStreamingMode)(o);var a=o.abrController,l=o.bufferController,c=o.capLevelController,A=o.fpsController,I=this.abrController=new a(this),O=this.bufferController=new l(this),N=this.capLevelController=new c(this),R=new A(this),m=new n.default(this),p=new i.default(this),h=new r.default(this),L=this.levelController=new E.default(this),f=new _.FragmentTracker(this),C=this.streamController=new T.default(this,f);N.setStreamController(C),R.setStreamController(C);var D=[m,p,L,C];this.networkControllers=D;var g=[I,O,N,R,h,f];this.audioTrackController=this.createController(o.audioTrackController,null,D),this.createController(o.audioStreamController,f,D),this.subtitleTrackController=this.createController(o.subtitleTrackController,null,D),this.createController(o.subtitleStreamController,f,D),this.createController(o.timelineController,null,g),this.emeController=this.createController(o.emeController,null,g),this.cmcdController=this.createController(o.cmcdController,null,g),this.latencyController=this.createController(s.default,null,g),this.coreComponents=g}e.isSupported=function(){return Object(l.isSupported)()};var t,o,O,N=e.prototype;return N.createController=function(e,t,o){if(e){var a=t?new e(this,t):new e(this);return o&&o.push(a),a}return null},N.on=function(e,t,o){void 0===o&&(o=this),this._emitter.on(e,t,o)},N.once=function(e,t,o){void 0===o&&(o=this),this._emitter.once(e,t,o)},N.removeAllListeners=function(e){this._emitter.removeAllListeners(e)},N.off=function(e,t,o,a){void 0===o&&(o=this),this._emitter.off(e,t,o,a)},N.listeners=function(e){return this._emitter.listeners(e)},N.emit=function(e,t,o){return this._emitter.emit(e,t,o)},N.trigger=function(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){S.logger.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),this.trigger(c.Events.ERROR,{type:A.ErrorTypes.OTHER_ERROR,details:A.ErrorDetails.INTERNAL_EXCEPTION,fatal:!1,event:e,error:t})}return!1},N.listenerCount=function(e){return this._emitter.listenerCount(e)},N.destroy=function(){S.logger.log("destroy"),this.trigger(c.Events.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((function(e){return e.destroy()})),this.networkControllers.length=0,this.coreComponents.forEach((function(e){return e.destroy()})),this.coreComponents.length=0},N.attachMedia=function(e){S.logger.log("attachMedia"),this._media=e,this.trigger(c.Events.MEDIA_ATTACHING,{media:e})},N.detachMedia=function(){S.logger.log("detachMedia"),this.trigger(c.Events.MEDIA_DETACHING,void 0),this._media=null},N.loadSource=function(e){this.stopLoad();var t=this.media,o=this.url,n=this.url=a.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});S.logger.log("loadSource:"+n),t&&o&&o!==n&&this.bufferController.hasSourceTypes()&&(this.detachMedia(),this.attachMedia(t)),this.trigger(c.Events.MANIFEST_LOADING,{url:e})},N.startLoad=function(e){void 0===e&&(e=-1),S.logger.log("startLoad("+e+")"),this.networkControllers.forEach((function(t){t.startLoad(e)}))},N.stopLoad=function(){S.logger.log("stopLoad"),this.networkControllers.forEach((function(e){e.stopLoad()}))},N.swapAudioCodec=function(){S.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()},N.recoverMediaError=function(){S.logger.log("recoverMediaError");var e=this._media;this.detachMedia(),e&&this.attachMedia(e)},N.removeLevel=function(e,t){void 0===t&&(t=0),this.levelController.removeLevel(e,t)},t=e,O=[{key:"version",get:function(){}},{key:"Events",get:function(){return c.Events}},{key:"ErrorTypes",get:function(){return A.ErrorTypes}},{key:"ErrorDetails",get:function(){return A.ErrorDetails}},{key:"DefaultConfig",get:function(){return e.defaultConfig?e.defaultConfig:u.hlsDefaultConfig},set:function(t){e.defaultConfig=t}}],(o=[{key:"levels",get:function(){var e=this.levelController.levels;return e||[]}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(e){S.logger.log("set currentLevel:"+e),this.loadLevel=e,this.abrController.clearTimer(),this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(e){S.logger.log("set nextLevel:"+e),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(e){S.logger.log("set loadLevel:"+e),this.levelController.manualLevel=e}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(e){this.levelController.nextLoadLevel=e}},{key:"firstLevel",get:function(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)},set:function(e){S.logger.log("set firstLevel:"+e),this.levelController.firstLevel=e}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(e){S.logger.log("set startLevel:"+e),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}},{key:"capLevelToPlayerSize",get:function(){return this.config.capLevelToPlayerSize},set:function(e){var t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(e){this._autoLevelCapping!==e&&(S.logger.log("set autoLevelCapping:"+e),this._autoLevelCapping=e)}},{key:"bandwidthEstimate",get:function(){var e=this.abrController.bwEstimator;return e?e.getEstimate():NaN}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}},{key:"minAutoLevel",get:function(){var e=this.levels,t=this.config.minAutoBitrate;if(!e)return 0;for(var o=e.length,a=0;a<o;a++)if(e[a].maxBitrate>=t)return a;return 0}},{key:"maxAutoLevel",get:function(){var e=this.levels,t=this.autoLevelCapping;return-1===t&&e&&e.length?e.length-1:t}},{key:"nextAutoLevel",get:function(){return Math.min(Math.max(this.abrController.nextAutoLevel,this.minAutoLevel),this.maxAutoLevel)},set:function(e){this.abrController.nextAutoLevel=Math.max(this.minAutoLevel,e)}},{key:"playingDate",get:function(){return this.streamController.currentProgramDateTime}},{key:"audioTracks",get:function(){var e=this.audioTrackController;return e?e.audioTracks:[]}},{key:"audioTrack",get:function(){var e=this.audioTrackController;return e?e.audioTrack:-1},set:function(e){var t=this.audioTrackController;t&&(t.audioTrack=e)}},{key:"subtitleTracks",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTracks:[]}},{key:"subtitleTrack",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTrack:-1},set:function(e){var t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}},{key:"media",get:function(){return this._media}},{key:"subtitleDisplay",get:function(){var e=this.subtitleTrackController;return!!e&&e.subtitleDisplay},set:function(e){var t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}},{key:"lowLatencyMode",get:function(){return this.config.lowLatencyMode},set:function(e){this.config.lowLatencyMode=e}},{key:"liveSyncPosition",get:function(){return this.latencyController.liveSyncPosition}},{key:"latency",get:function(){return this.latencyController.latency}},{key:"maxLatency",get:function(){return this.latencyController.maxLatency}},{key:"targetLatency",get:function(){return this.latencyController.targetLatency}},{key:"drift",get:function(){return this.latencyController.drift}},{key:"forceStartLoad",get:function(){return this.streamController.forceStartLoad}}])&&I(t.prototype,o),O&&I(t,O),Object.defineProperty(t,"prototype",{writable:!1}),e})();O.defaultConfig=void 0},"./src/is-supported.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"isSupported",(function(){return i})),o.d(t,"changeTypeSupported",(function(){return r}));var a=o("./src/utils/mediasource-helper.ts");function n(){return self.SourceBuffer||self.WebKitSourceBuffer}function i(){var e=Object(a.getMediaSource)();if(!e)return!1;var t=n(),o=e&&"function"==typeof e.isTypeSupported&&e.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),i=!t||t.prototype&&"function"==typeof t.prototype.appendBuffer&&"function"==typeof t.prototype.remove;return!!o&&!!i}function r(){var e,t=n();return"function"==typeof(null==t||null===(e=t.prototype)||void 0===e?void 0:e.changeType)}},"./src/loader/date-range.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"DateRangeAttribute",(function(){return a})),o.d(t,"DateRange",(function(){return _}));var a,n=o("./src/polyfills/number.ts"),i=o("./src/utils/attr-list.ts"),r=o("./src/utils/logger.ts");function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},s.apply(this,arguments)}function E(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}!(function(e){e.ID="ID",e.CLASS="CLASS",e.START_DATE="START-DATE",e.DURATION="DURATION",e.END_DATE="END-DATE",e.END_ON_NEXT="END-ON-NEXT",e.PLANNED_DURATION="PLANNED-DURATION",e.SCTE35_OUT="SCTE35-OUT",e.SCTE35_IN="SCTE35-IN"})(a||(a={}));var _=(function(){function e(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){var o=t.attr;for(var E in o)if(Object.prototype.hasOwnProperty.call(e,E)&&e[E]!==o[E]){r.logger.warn('DATERANGE tag attribute: "'+E+'" does not match for tags with ID: "'+e.ID+'"'),this._badValueForSameId=E;break}e=s(new i.AttrList({}),o,e)}if(this.attr=e,this._startDate=new Date(e[a.START_DATE]),a.END_DATE in this.attr){var _=new Date(this.attr[a.END_DATE]);Object(n.isFiniteNumber)(_.getTime())&&(this._endDate=_)}}var t,o,_;return t=e,(o=[{key:"id",get:function(){return this.attr.ID}},{key:"class",get:function(){return this.attr.CLASS}},{key:"startDate",get:function(){return this._startDate}},{key:"endDate",get:function(){if(this._endDate)return this._endDate;var e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}},{key:"duration",get:function(){if(a.DURATION in this.attr){var e=this.attr.decimalFloatingPoint(a.DURATION);if(Object(n.isFiniteNumber)(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}},{key:"plannedDuration",get:function(){return a.PLANNED_DURATION in this.attr?this.attr.decimalFloatingPoint(a.PLANNED_DURATION):null}},{key:"endOnNext",get:function(){return this.attr.bool(a.END_ON_NEXT)}},{key:"isValid",get:function(){return!!this.id&&!this._badValueForSameId&&Object(n.isFiniteNumber)(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}])&&E(t.prototype,o),_&&E(t,_),Object.defineProperty(t,"prototype",{writable:!1}),e})()},"./src/loader/fragment-loader.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return l})),o.d(t,"LoadError",(function(){return u}));var a=o("./src/polyfills/number.ts"),n=o("./src/errors.ts");function i(e){var t="function"==typeof Map?new Map:void 0;return i=function(e){if(null===e||(o=e,-1===Function.toString.call(o).indexOf("[native code]")))return e;var o;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,a)}function a(){return r(e,arguments,_(this).constructor)}return a.prototype=Object.create(e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),E(a,e)},i(e)}function r(e,t,o){return r=s()?Reflect.construct.bind():function(e,t,o){var a=[null];a.push.apply(a,t);var n=new(Function.bind.apply(e,a));return o&&E(n,o.prototype),n},r.apply(null,arguments)}function s(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function E(e,t){return E=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},E(e,t)}function _(e){return _=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},_(e)}var T=Math.pow(2,17),l=(function(){function e(e){this.config=void 0,this.loader=null,this.partLoadTimeout=-1,this.config=e}var t=e.prototype;return t.destroy=function(){this.loader&&(this.loader.destroy(),this.loader=null)},t.abort=function(){this.loader&&this.loader.abort()},t.load=function(e,t){var o=this,a=e.url;if(!a)return Promise.reject(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,networkDetails:null},"Fragment does not have a "+(a?"part list":"url")));this.abort();var i=this.config,r=i.fLoader,s=i.loader;return new Promise((function(a,E){o.loader&&o.loader.destroy();var _=o.loader=e.loader=r?new r(i):new s(i),l=S(e),d={timeout:i.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:i.fragLoadingMaxRetryTimeout,highWaterMark:"initSegment"===e.sn?1/0:T};e.stats=_.stats,_.load(l,d,{onSuccess:function(t,n,i,r){o.resetLoader(e,_),a({frag:e,part:null,payload:t.data,networkDetails:r})},onError:function(t,a,i){o.resetLoader(e,_),E(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:t,networkDetails:i}))},onAbort:function(t,a,i){o.resetLoader(e,_),E(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.INTERNAL_ABORTED,fatal:!1,frag:e,networkDetails:i}))},onTimeout:function(t,a,i){o.resetLoader(e,_),E(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,networkDetails:i}))},onProgress:function(o,a,n,i){t&&t({frag:e,part:null,payload:n,networkDetails:i})}})}))},t.loadPart=function(e,t,o){var a=this;this.abort();var i=this.config,r=i.fLoader,s=i.loader;return new Promise((function(E,_){a.loader&&a.loader.destroy();var l=a.loader=e.loader=r?new r(i):new s(i),d=S(e,t),c={timeout:i.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:i.fragLoadingMaxRetryTimeout,highWaterMark:T};t.stats=l.stats,l.load(d,c,{onSuccess:function(n,i,r,s){a.resetLoader(e,l),a.updateStatsFromPart(e,t);var _={frag:e,part:t,payload:n.data,networkDetails:s};o(_),E(_)},onError:function(o,i,r){a.resetLoader(e,l),_(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:o,networkDetails:r}))},onAbort:function(o,i,r){e.stats.aborted=t.stats.aborted,a.resetLoader(e,l),_(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,networkDetails:r}))},onTimeout:function(o,i,r){a.resetLoader(e,l),_(new u({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,networkDetails:r}))}})}))},t.updateStatsFromPart=function(e,t){var o=e.stats,a=t.stats,n=a.total;if(o.loaded+=a.loaded,n){var i=Math.round(e.duration/t.duration),r=Math.min(Math.round(o.loaded/n),i),s=(i-r)*Math.round(o.loaded/r);o.total=o.loaded+s}else o.total=Math.max(o.loaded,o.total);var E=o.loading,_=a.loading;E.start?E.first+=_.first-_.start:(E.start=_.start,E.first=_.first),E.end=_.end},t.resetLoader=function(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()},e})();function S(e,t){void 0===t&&(t=null);var o=t||e,n={frag:e,part:t,responseType:"arraybuffer",url:o.url,headers:{},rangeStart:0,rangeEnd:0},i=o.byteRangeStartOffset,r=o.byteRangeEndOffset;return Object(a.isFiniteNumber)(i)&&Object(a.isFiniteNumber)(r)&&(n.rangeStart=i,n.rangeEnd=r),n}var u=(function(e){var t,o;function a(t){for(var o,a=arguments.length,n=new Array(a>1?a-1:0),i=1;i<a;i++)n[i-1]=arguments[i];return(o=e.call.apply(e,[this].concat(n))||this).data=void 0,o.data=t,o}return o=e,(t=a).prototype=Object.create(o.prototype),t.prototype.constructor=t,E(t,o),a})(i(Error))},"./src/loader/fragment.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"ElementaryStreamTypes",(function(){return a})),o.d(t,"BaseSegment",(function(){return u})),o.d(t,"Fragment",(function(){return d})),o.d(t,"Part",(function(){return c}));var a,n=o("./src/polyfills/number.ts"),i=o("./node_modules/url-toolkit/src/url-toolkit.js"),r=o("./src/utils/logger.ts"),s=o("./src/loader/level-key.ts"),E=o("./src/loader/load-stats.ts");function _(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,T(e,t)}function T(e,t){return T=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},T(e,t)}function l(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function S(e,t,o){return t&&l(e.prototype,t),o&&l(e,o),Object.defineProperty(e,"prototype",{writable:!1}),e}!(function(e){e.AUDIO="audio",e.VIDEO="video",e.AUDIOVIDEO="audiovideo"})(a||(a={}));var u=(function(){function e(e){var t;this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams=((t={})[a.AUDIO]=null,t[a.VIDEO]=null,t[a.AUDIOVIDEO]=null,t),this.baseurl=e}return e.prototype.setByteRange=function(e,t){var o=e.split("@",2),a=[];1===o.length?a[0]=t?t.byteRangeEndOffset:0:a[0]=parseInt(o[1]),a[1]=parseInt(o[0])+a[0],this._byteRange=a},S(e,[{key:"byteRange",get:function(){return this._byteRange?this._byteRange:[]}},{key:"byteRangeStartOffset",get:function(){return this.byteRange[0]}},{key:"byteRangeEndOffset",get:function(){return this.byteRange[1]}},{key:"url",get:function(){return!this._url&&this.baseurl&&this.relurl&&(this._url=Object(i.buildAbsoluteURL)(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""},set:function(e){this._url=e}}]),e})(),d=(function(e){function t(t,o){var a;return(a=e.call(this,o)||this)._decryptdata=null,a.rawProgramDateTime=null,a.programDateTime=null,a.tagList=[],a.duration=0,a.sn=0,a.levelkey=void 0,a.type=void 0,a.loader=null,a.level=-1,a.cc=0,a.startPTS=void 0,a.endPTS=void 0,a.appendedPTS=void 0,a.startDTS=void 0,a.endDTS=void 0,a.start=0,a.deltaPTS=void 0,a.maxStartPTS=void 0,a.minEndPTS=void 0,a.stats=new E.LoadStats,a.urlId=0,a.data=void 0,a.bitrateTest=!1,a.title=null,a.initSegment=null,a.type=t,a}_(t,e);var o=t.prototype;return o.createInitializationVector=function(e){for(var t=new Uint8Array(16),o=12;o<16;o++)t[o]=e>>8*(15-o)&255;return t},o.setDecryptDataFromLevelKey=function(e,t){var o=e;return"AES-128"===(null==e?void 0:e.method)&&e.uri&&!e.iv&&((o=s.LevelKey.fromURI(e.uri)).method=e.method,o.iv=this.createInitializationVector(t),o.keyFormat="identity"),o},o.setElementaryStreamInfo=function(e,t,o,a,n,i){void 0===i&&(i=!1);var r=this.elementaryStreams,s=r[e];s?(s.startPTS=Math.min(s.startPTS,t),s.endPTS=Math.max(s.endPTS,o),s.startDTS=Math.min(s.startDTS,a),s.endDTS=Math.max(s.endDTS,n)):r[e]={startPTS:t,endPTS:o,startDTS:a,endDTS:n,partial:i}},o.clearElementaryStreamInfo=function(){var e=this.elementaryStreams;e[a.AUDIO]=null,e[a.VIDEO]=null,e[a.AUDIOVIDEO]=null},S(t,[{key:"decryptdata",get:function(){if(!this.levelkey&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkey){var e=this.sn;"number"!=typeof e&&(this.levelkey&&"AES-128"===this.levelkey.method&&!this.levelkey.iv&&r.logger.warn('missing IV for initialization segment with method="'+this.levelkey.method+'" - compliance issue'),e=0),this._decryptdata=this.setDecryptDataFromLevelKey(this.levelkey,e)}return this._decryptdata}},{key:"end",get:function(){return this.start+this.duration}},{key:"endProgramDateTime",get:function(){if(null===this.programDateTime)return null;if(!Object(n.isFiniteNumber)(this.programDateTime))return null;var e=Object(n.isFiniteNumber)(this.duration)?this.duration:0;return this.programDateTime+1e3*e}},{key:"encrypted",get:function(){var e;return!(null===(e=this.decryptdata)||void 0===e||!e.keyFormat||!this.decryptdata.uri)}}]),t})(u),c=(function(e){function t(t,o,a,n,i){var r;(r=e.call(this,a)||this).fragOffset=0,r.duration=0,r.gap=!1,r.independent=!1,r.relurl=void 0,r.fragment=void 0,r.index=void 0,r.stats=new E.LoadStats,r.duration=t.decimalFloatingPoint("DURATION"),r.gap=t.bool("GAP"),r.independent=t.bool("INDEPENDENT"),r.relurl=t.enumeratedString("URI"),r.fragment=o,r.index=n;var s=t.enumeratedString("BYTERANGE");return s&&r.setByteRange(s,i),i&&(r.fragOffset=i.fragOffset+i.duration),r}return _(t,e),S(t,[{key:"start",get:function(){return this.fragment.start+this.fragOffset}},{key:"end",get:function(){return this.start+this.duration}},{key:"loaded",get:function(){var e=this.elementaryStreams;return!!(e.audio||e.video||e.audiovideo)}}]),t})(u)},"./src/loader/key-loader.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return r}));var a=o("./src/events.ts"),n=o("./src/errors.ts"),i=o("./src/utils/logger.ts"),r=(function(){function e(e){this.hls=void 0,this.loaders={},this.decryptkey=null,this.decrypturl=null,this.hls=e,this.registerListeners()}var t=e.prototype;return t.startLoad=function(e){},t.stopLoad=function(){this.destroyInternalLoaders()},t.registerListeners=function(){this.hls.on(a.Events.KEY_LOADING,this.onKeyLoading,this)},t.unregisterListeners=function(){this.hls.off(a.Events.KEY_LOADING,this.onKeyLoading)},t.destroyInternalLoaders=function(){for(var e in this.loaders){var t=this.loaders[e];t&&t.destroy()}this.loaders={}},t.destroy=function(){this.unregisterListeners(),this.destroyInternalLoaders()},t.onKeyLoading=function(e,t){var o=t.frag,n=o.type,r=this.loaders[n];if(o.decryptdata){var s=o.decryptdata.uri;if(s!==this.decrypturl||null===this.decryptkey){var E=this.hls.config;if(r&&(i.logger.warn("abort previous key loader for type:"+n),r.abort()),!s)return void i.logger.warn("key uri is falsy");var _=E.loader,T=o.loader=this.loaders[n]=new _(E);this.decrypturl=s,this.decryptkey=null;var l={url:s,frag:o,responseType:"arraybuffer"},S={timeout:E.fragLoadingTimeOut,maxRetry:0,retryDelay:E.fragLoadingRetryDelay,maxRetryDelay:E.fragLoadingMaxRetryTimeout,highWaterMark:0},u={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)};T.load(l,S,u)}else this.decryptkey&&(o.decryptdata.key=this.decryptkey,this.hls.trigger(a.Events.KEY_LOADED,{frag:o}))}else i.logger.warn("Missing decryption data on fragment in onKeyLoading")},t.loadsuccess=function(e,t,o){var n=o.frag;n.decryptdata?(this.decryptkey=n.decryptdata.key=new Uint8Array(e.data),n.loader=null,delete this.loaders[n.type],this.hls.trigger(a.Events.KEY_LOADED,{frag:n})):i.logger.error("after key load, decryptdata unset")},t.loaderror=function(e,t){var o=t.frag,i=o.loader;i&&i.abort(),delete this.loaders[o.type],this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.KEY_LOAD_ERROR,fatal:!1,frag:o,response:e})},t.loadtimeout=function(e,t){var o=t.frag,i=o.loader;i&&i.abort(),delete this.loaders[o.type],this.hls.trigger(a.Events.ERROR,{type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.KEY_LOAD_TIMEOUT,fatal:!1,frag:o})},e})()},"./src/loader/level-details.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"LevelDetails",(function(){return i}));var a=o("./src/polyfills/number.ts");function n(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}var i=(function(){function e(e){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.needSidxRanges=!1,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.fragments=[],this.dateRanges={},this.url=e}var t,o,i;return e.prototype.reloaded=function(e){if(!e)return this.advanced=!0,void(this.updated=!0);var t=this.lastPartSn-e.lastPartSn,o=this.lastPartIndex-e.lastPartIndex;this.updated=this.endSN!==e.endSN||!!o||!!t,this.advanced=this.endSN>e.endSN||t>0||0===t&&o>0,this.updated||this.advanced?this.misses=Math.floor(.6*e.misses):this.misses=e.misses+1,this.availabilityDelay=e.availabilityDelay},t=e,(o=[{key:"hasProgramDateTime",get:function(){return!!this.fragments.length&&Object(a.isFiniteNumber)(this.fragments[this.fragments.length-1].programDateTime)}},{key:"levelTargetDuration",get:function(){return this.averagetargetduration||this.targetduration||10}},{key:"drift",get:function(){var e=this.driftEndTime-this.driftStartTime;return e>0?1e3*(this.driftEnd-this.driftStart)/e:1}},{key:"edge",get:function(){return this.partEnd||this.fragmentEnd}},{key:"partEnd",get:function(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}},{key:"fragmentEnd",get:function(){var e;return null!==(e=this.fragments)&&void 0!==e&&e.length?this.fragments[this.fragments.length-1].end:0}},{key:"age",get:function(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}},{key:"lastPartIndex",get:function(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].index:-1}},{key:"lastPartSn",get:function(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}])&&n(t.prototype,o),i&&n(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e})()},"./src/loader/level-key.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"LevelKey",(function(){return i}));var a=o("./node_modules/url-toolkit/src/url-toolkit.js");function n(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}var i=(function(){function e(e,t){this._uri=null,this.method=null,this.keyFormat=null,this.keyFormatVersions=null,this.keyID=null,this.key=null,this.iv=null,this._uri=t?Object(a.buildAbsoluteURL)(e,t,{alwaysNormalize:!0}):e}var t,o,i;return e.fromURL=function(t,o){return new e(t,o)},e.fromURI=function(t){return new e(t)},t=e,(o=[{key:"uri",get:function(){return this._uri}}])&&n(t.prototype,o),i&&n(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e})()},"./src/loader/load-stats.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"LoadStats",(function(){return a}));var a=function(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}}},"./src/loader/m3u8-parser.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return I}));var a=o("./src/polyfills/number.ts"),n=o("./node_modules/url-toolkit/src/url-toolkit.js"),i=o("./src/loader/date-range.ts"),r=o("./src/loader/fragment.ts"),s=o("./src/loader/level-details.ts"),E=o("./src/loader/level-key.ts"),_=o("./src/utils/attr-list.ts"),T=o("./src/utils/logger.ts"),l=o("./src/utils/codecs.ts"),S=/#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-SESSION-DATA:([^\r\n]*)[\r\n]+/g,u=/#EXT-X-MEDIA:(.*)/g,d=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/(?!#) *(\S[\S ]*)/.source,/#EXT-X-BYTERANGE:*(.+)/.source,/#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,/#.*/.source].join("|"),"g"),c=new RegExp([/#(EXTM3U)/.source,/#EXT-X-(DATERANGE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source,/#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source,/#EXT-X-(DISCONTINUITY|ENDLIST|GAP)/.source,/(#)([^:]*):(.*)/.source,/(#)(.*)(?:.*)\r?\n?/.source].join("|")),A=/\.(mp4|m4s|m4v|m4a)$/i,I=(function(){function e(){}return e.findGroup=function(e,t){for(var o=0;o<e.length;o++){var a=e[o];if(a.id===t)return a}},e.convertAVC1ToAVCOTI=function(e){var t=e.split(".");if(t.length>2){var o=t.shift()+".";return o+=parseInt(t.shift()).toString(16),o+=("000"+parseInt(t.shift()).toString(16)).slice(-4)}return e},e.resolve=function(e,t){return n.buildAbsoluteURL(t,e,{alwaysNormalize:!0})},e.parseMasterPlaylist=function(t,o){var a,n=[],i={},r=!1;for(S.lastIndex=0;null!=(a=S.exec(t));)if(a[1]){var s=new _.AttrList(a[1]),E={attrs:s,bitrate:s.decimalInteger("AVERAGE-BANDWIDTH")||s.decimalInteger("BANDWIDTH"),name:s.NAME,url:e.resolve(a[2],o)},T=s.decimalResolution("RESOLUTION");T&&(E.width=T.width,E.height=T.height),O((s.CODECS||"").split(/[ ,]+/).filter((function(e){return e})),E),E.videoCodec&&-1!==E.videoCodec.indexOf("avc1")&&(E.videoCodec=e.convertAVC1ToAVCOTI(E.videoCodec)),n.push(E)}else if(a[3]){var l=new _.AttrList(a[3]);l["DATA-ID"]&&(r=!0,i[l["DATA-ID"]]=l)}return{levels:n,sessionData:r?i:null}},e.parseMasterPlaylistMedia=function(t,o,a,n){var i;void 0===n&&(n=[]);var r=[],s=0;for(u.lastIndex=0;null!==(i=u.exec(t));){var E=new _.AttrList(i[1]);if(E.TYPE===a){var T={attrs:E,bitrate:0,id:s++,groupId:E["GROUP-ID"],instreamId:E["INSTREAM-ID"],name:E.NAME||E.LANGUAGE||"",type:a,default:E.bool("DEFAULT"),autoselect:E.bool("AUTOSELECT"),forced:E.bool("FORCED"),lang:E.LANGUAGE,url:E.URI?e.resolve(E.URI,o):""};if(n.length){var l=e.findGroup(n,T.groupId)||n[0];N(T,l,"audioCodec"),N(T,l,"textCodec")}r.push(T)}}return r},e.parseLevelPlaylist=function(e,t,o,l,S){var u,I,O,N=new s.LevelDetails(t),p=N.fragments,h=null,L=0,f=0,C=0,D=0,g=null,v=new r.Fragment(l,t),P=-1,y=!1;for(d.lastIndex=0,N.m3u8=e;null!==(u=d.exec(e));){y&&(y=!1,(v=new r.Fragment(l,t)).start=C,v.sn=L,v.cc=D,v.level=o,h&&(v.initSegment=h,v.rawProgramDateTime=h.rawProgramDateTime,h.rawProgramDateTime=null));var B=u[1];if(B){v.duration=parseFloat(B);var b=(" "+u[2]).slice(1);v.title=b||null,v.tagList.push(b?["INF",B,b]:["INF",B])}else if(u[3])Object(a.isFiniteNumber)(v.duration)&&(v.start=C,O&&(v.levelkey=O),v.sn=L,v.level=o,v.cc=D,v.urlId=S,p.push(v),v.relurl=(" "+u[3]).slice(1),R(v,g),g=v,C+=v.duration,L++,f=0,y=!0);else if(u[4]){var M=(" "+u[4]).slice(1);g?v.setByteRange(M,g):v.setByteRange(M)}else if(u[5])v.rawProgramDateTime=(" "+u[5]).slice(1),v.tagList.push(["PROGRAM-DATE-TIME",v.rawProgramDateTime]),-1===P&&(P=p.length);else{if(!(u=u[0].match(c))){T.logger.warn("No matches on slow regex match for level playlist!");continue}for(I=1;I<u.length&&void 0===u[I];I++);var U=(" "+u[I]).slice(1),W=(" "+u[I+1]).slice(1),G=u[I+2]?(" "+u[I+2]).slice(1):"";switch(U){case"PLAYLIST-TYPE":N.type=W.toUpperCase();break;case"MEDIA-SEQUENCE":L=N.startSN=parseInt(W);break;case"SKIP":var F=new _.AttrList(W),k=F.decimalInteger("SKIPPED-SEGMENTS");if(Object(a.isFiniteNumber)(k)){N.skippedSegments=k;for(var w=k;w--;)p.unshift(null);L+=k}var H=F.enumeratedString("RECENTLY-REMOVED-DATERANGES");H&&(N.recentlyRemovedDateranges=H.split("\t"));break;case"TARGETDURATION":N.targetduration=parseFloat(W);break;case"VERSION":N.version=parseInt(W);break;case"EXTM3U":break;case"ENDLIST":N.live=!1;break;case"#":(W||G)&&v.tagList.push(G?[W,G]:[W]);break;case"DISCONTINUITY":D++,v.tagList.push(["DIS"]);break;case"GAP":v.tagList.push([U]);break;case"BITRATE":v.tagList.push([U,W]);break;case"DATERANGE":var V=new _.AttrList(W),Y=new i.DateRange(V,N.dateRanges[V.ID]);Y.isValid||N.skippedSegments?N.dateRanges[Y.id]=Y:T.logger.warn('Ignoring invalid DATERANGE tag: "'+W+'"'),v.tagList.push(["EXT-X-DATERANGE",W]);break;case"DISCONTINUITY-SEQUENCE":D=parseInt(W);break;case"KEY":var z,x=new _.AttrList(W),K=x.enumeratedString("METHOD"),j=x.URI,Q=x.hexadecimalInteger("IV"),X=x.enumeratedString("KEYFORMATVERSIONS"),$=x.enumeratedString("KEYID"),q=null!=(z=x.enumeratedString("KEYFORMAT"))?z:"identity";if(["com.apple.streamingkeydelivery","com.microsoft.playready","urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed","com.widevine"].indexOf(q)>-1){T.logger.warn("Keyformat "+q+" is not supported from the manifest");continue}if("identity"!==q)continue;K&&(O=E.LevelKey.fromURL(t,j),j&&["AES-128","SAMPLE-AES","SAMPLE-AES-CENC"].indexOf(K)>=0&&(O.method=K,O.keyFormat=q,$&&(O.keyID=$),X&&(O.keyFormatVersions=X),O.iv=Q));break;case"START":var J=new _.AttrList(W).decimalFloatingPoint("TIME-OFFSET");Object(a.isFiniteNumber)(J)&&(N.startTimeOffset=J);break;case"MAP":var Z=new _.AttrList(W);if(v.duration){var ee=new r.Fragment(l,t);m(ee,Z,o,O),h=ee,v.initSegment=h,h.rawProgramDateTime&&!v.rawProgramDateTime&&(v.rawProgramDateTime=h.rawProgramDateTime)}else m(v,Z,o,O),h=v,y=!0;break;case"SERVER-CONTROL":var te=new _.AttrList(W);N.canBlockReload=te.bool("CAN-BLOCK-RELOAD"),N.canSkipUntil=te.optionalFloat("CAN-SKIP-UNTIL",0),N.canSkipDateRanges=N.canSkipUntil>0&&te.bool("CAN-SKIP-DATERANGES"),N.partHoldBack=te.optionalFloat("PART-HOLD-BACK",0),N.holdBack=te.optionalFloat("HOLD-BACK",0);break;case"PART-INF":var oe=new _.AttrList(W);N.partTarget=oe.decimalFloatingPoint("PART-TARGET");break;case"PART":var ae=N.partList;ae||(ae=N.partList=[]);var ne=f>0?ae[ae.length-1]:void 0,ie=f++,re=new r.Part(new _.AttrList(W),v,t,ie,ne);ae.push(re),v.duration+=re.duration;break;case"PRELOAD-HINT":var se=new _.AttrList(W);N.preloadHint=se;break;case"RENDITION-REPORT":var Ee=new _.AttrList(W);N.renditionReports=N.renditionReports||[],N.renditionReports.push(Ee);break;default:T.logger.warn("line parsed but not handled: "+u)}}}g&&!g.relurl?(p.pop(),C-=g.duration,N.partList&&(N.fragmentHint=g)):N.partList&&(R(v,g),v.cc=D,N.fragmentHint=v);var _e=p.length,Te=p[0],le=p[_e-1];if((C+=N.skippedSegments*N.targetduration)>0&&_e&&le){N.averagetargetduration=C/_e;var Se=le.sn;N.endSN="initSegment"!==Se?Se:0,Te&&(N.startCC=Te.cc,Te.initSegment||N.fragments.every((function(e){return e.relurl&&(t=e.relurl,A.test(null!=(o=null===(a=n.parseURL(t))||void 0===a?void 0:a.path)?o:""));var t,o,a}))&&(T.logger.warn("MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX"),(v=new r.Fragment(l,t)).relurl=le.relurl,v.level=o,v.sn="initSegment",Te.initSegment=v,N.needSidxRanges=!0))}else N.endSN=0,N.startCC=0;return N.fragmentHint&&(C+=N.fragmentHint.duration),N.totalduration=C,N.endCC=D,P>0&&(function(e,t){for(var o=e[t],a=t;a--;){var n=e[a];if(!n)return;n.programDateTime=o.programDateTime-1e3*n.duration,o=n}})(p,P),N},e})();function O(e,t){["video","audio","text"].forEach((function(o){var a=e.filter((function(e){return Object(l.isCodecType)(e,o)}));if(a.length){var n=a.filter((function(e){return 0===e.lastIndexOf("avc1",0)||0===e.lastIndexOf("mp4a",0)}));t[o+"Codec"]=n.length>0?n[0]:a[0],e=e.filter((function(e){return-1===a.indexOf(e)}))}})),t.unknownCodecs=e}function N(e,t,o){var a=t[o];a&&(e[o]=a)}function R(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),Object(a.isFiniteNumber)(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function m(e,t,o,a){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=o,e.sn="initSegment",a&&(e.levelkey=a),e.initSegment=null}},"./src/loader/playlist-loader.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/polyfills/number.ts"),n=o("./src/events.ts"),i=o("./src/errors.ts"),r=o("./src/utils/logger.ts"),s=o("./src/utils/mp4-tools.ts"),E=o("./src/loader/m3u8-parser.ts"),_=o("./src/types/loader.ts"),T=o("./src/utils/attr-list.ts");function l(e,t){var o=e.url;return void 0!==o&&0!==o.indexOf("data:")||(o=t.url),o}var S=(function(){function e(e){this.hls=void 0,this.loaders=Object.create(null),this.hls=e,this.registerListeners()}var t=e.prototype;return t.startLoad=function(e){},t.stopLoad=function(){this.destroyInternalLoaders()},t.registerListeners=function(){var e=this.hls;e.on(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(n.Events.LEVEL_LOADING,this.onLevelLoading,this),e.on(n.Events.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(n.Events.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},t.unregisterListeners=function(){var e=this.hls;e.off(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(n.Events.LEVEL_LOADING,this.onLevelLoading,this),e.off(n.Events.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(n.Events.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},t.createInternalLoader=function(e){var t=this.hls.config,o=t.pLoader,a=t.loader,n=new(o||a)(t);return e.loader=n,this.loaders[e.type]=n,n},t.getInternalLoader=function(e){return this.loaders[e.type]},t.resetInternalLoader=function(e){this.loaders[e]&&delete this.loaders[e]},t.destroyInternalLoaders=function(){for(var e in this.loaders){var t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}},t.destroy=function(){this.unregisterListeners(),this.destroyInternalLoaders()},t.onManifestLoading=function(e,t){var o=t.url;this.load({id:null,groupId:null,level:0,responseType:"text",type:_.PlaylistContextType.MANIFEST,url:o,deliveryDirectives:null})},t.onLevelLoading=function(e,t){var o=t.id,a=t.level,n=t.url,i=t.deliveryDirectives;this.load({id:o,groupId:null,level:a,responseType:"text",type:_.PlaylistContextType.LEVEL,url:n,deliveryDirectives:i})},t.onAudioTrackLoading=function(e,t){var o=t.id,a=t.groupId,n=t.url,i=t.deliveryDirectives;this.load({id:o,groupId:a,level:null,responseType:"text",type:_.PlaylistContextType.AUDIO_TRACK,url:n,deliveryDirectives:i})},t.onSubtitleTrackLoading=function(e,t){var o=t.id,a=t.groupId,n=t.url,i=t.deliveryDirectives;this.load({id:o,groupId:a,level:null,responseType:"text",type:_.PlaylistContextType.SUBTITLE_TRACK,url:n,deliveryDirectives:i})},t.load=function(e){var t,o,a,n,i,s,E=this.hls.config,T=this.getInternalLoader(e);if(T){var l=T.context;if(l&&l.url===e.url)return void r.logger.trace("[playlist-loader]: playlist request ongoing");r.logger.log("[playlist-loader]: aborting previous loader for type: "+e.type),T.abort()}switch(e.type){case _.PlaylistContextType.MANIFEST:o=E.manifestLoadingMaxRetry,a=E.manifestLoadingTimeOut,n=E.manifestLoadingRetryDelay,i=E.manifestLoadingMaxRetryTimeout;break;case _.PlaylistContextType.LEVEL:case _.PlaylistContextType.AUDIO_TRACK:case _.PlaylistContextType.SUBTITLE_TRACK:o=0,a=E.levelLoadingTimeOut;break;default:o=E.levelLoadingMaxRetry,a=E.levelLoadingTimeOut,n=E.levelLoadingRetryDelay,i=E.levelLoadingMaxRetryTimeout}if(T=this.createInternalLoader(e),null!==(t=e.deliveryDirectives)&&void 0!==t&&t.part&&(e.type===_.PlaylistContextType.LEVEL&&null!==e.level?s=this.hls.levels[e.level].details:e.type===_.PlaylistContextType.AUDIO_TRACK&&null!==e.id?s=this.hls.audioTracks[e.id].details:e.type===_.PlaylistContextType.SUBTITLE_TRACK&&null!==e.id&&(s=this.hls.subtitleTracks[e.id].details),s)){var S=s.partTarget,u=s.targetduration;S&&u&&(a=Math.min(1e3*Math.max(3*S,.8*u),a))}var d={timeout:a,maxRetry:o,retryDelay:n,maxRetryDelay:i,highWaterMark:0},c={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)};T.load(e,d,c)},t.loadsuccess=function(e,t,o,a){if(void 0===a&&(a=null),o.isSidxRequest)return this.handleSidxRequest(e,o),void this.handlePlaylistLoaded(e,t,o,a);this.resetInternalLoader(o.type);var n=e.data;0===n.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),n.indexOf("#EXTINF:")>0||n.indexOf("#EXT-X-TARGETDURATION:")>0?this.handleTrackOrLevelPlaylist(e,t,o,a):this.handleMasterPlaylist(e,t,o,a)):this.handleManifestParsingError(e,o,"no EXTM3U delimiter",a)},t.loaderror=function(e,t,o){void 0===o&&(o=null),this.handleNetworkError(t,o,!1,e)},t.loadtimeout=function(e,t,o){void 0===o&&(o=null),this.handleNetworkError(t,o,!0)},t.handleMasterPlaylist=function(e,t,o,a){var i=this.hls,s=e.data,_=l(e,o),S=E.default.parseMasterPlaylist(s,_),u=S.levels,d=S.sessionData;if(u.length){var c=u.map((function(e){return{id:e.attrs.AUDIO,audioCodec:e.audioCodec}})),A=u.map((function(e){return{id:e.attrs.SUBTITLES,textCodec:e.textCodec}})),I=E.default.parseMasterPlaylistMedia(s,_,"AUDIO",c),O=E.default.parseMasterPlaylistMedia(s,_,"SUBTITLES",A),N=E.default.parseMasterPlaylistMedia(s,_,"CLOSED-CAPTIONS");I.length&&(I.some((function(e){return!e.url}))||!u[0].audioCodec||u[0].attrs.AUDIO||(r.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),I.unshift({type:"main",name:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new T.AttrList({}),bitrate:0,url:""}))),i.trigger(n.Events.MANIFEST_LOADED,{levels:u,audioTracks:I,subtitles:O,captions:N,url:_,stats:t,networkDetails:a,sessionData:d})}else this.handleManifestParsingError(e,o,"no level found in manifest",a)},t.handleTrackOrLevelPlaylist=function(e,t,o,r){var s=this.hls,S=o.id,u=o.level,d=o.type,c=l(e,o),A=Object(a.isFiniteNumber)(S)?S:0,I=Object(a.isFiniteNumber)(u)?u:A,O=(function(e){switch(e.type){case _.PlaylistContextType.AUDIO_TRACK:return _.PlaylistLevelType.AUDIO;case _.PlaylistContextType.SUBTITLE_TRACK:return _.PlaylistLevelType.SUBTITLE;default:return _.PlaylistLevelType.MAIN}})(o),N=E.default.parseLevelPlaylist(e.data,c,I,O,A);if(N.fragments.length){if(d===_.PlaylistContextType.MANIFEST){var R={attrs:new T.AttrList({}),bitrate:0,details:N,name:"",url:c};s.trigger(n.Events.MANIFEST_LOADED,{levels:[R],audioTracks:[],url:c,stats:t,networkDetails:r,sessionData:null})}if(t.parsing.end=performance.now(),N.needSidxRanges){var m,p=null===(m=N.fragments[0].initSegment)||void 0===m?void 0:m.url;this.load({url:p,isSidxRequest:!0,type:d,level:u,levelDetails:N,id:S,groupId:null,rangeStart:0,rangeEnd:2048,responseType:"arraybuffer",deliveryDirectives:null})}else o.levelDetails=N,this.handlePlaylistLoaded(e,t,o,r)}else s.trigger(n.Events.ERROR,{type:i.ErrorTypes.NETWORK_ERROR,details:i.ErrorDetails.LEVEL_EMPTY_ERROR,fatal:!1,url:c,reason:"no fragments found in level",level:"number"==typeof o.level?o.level:void 0})},t.handleSidxRequest=function(e,t){var o=new Uint8Array(e.data),a=Object(s.findBox)(o,["sidx"])[0];if(a){var n=Object(s.parseSegmentIndex)(a);if(n){var i=n.references,r=t.levelDetails;i.forEach((function(e,t){var a=e.info,n=r.fragments[t];if(0===n.byteRange.length&&n.setByteRange(String(1+a.end-a.start)+"@"+String(a.start)),n.initSegment){var i=Object(s.findBox)(o,["moov"])[0],E=i?i.length:null;n.initSegment.setByteRange(String(E)+"@0")}}))}}},t.handleManifestParsingError=function(e,t,o,a){this.hls.trigger(n.Events.ERROR,{type:i.ErrorTypes.NETWORK_ERROR,details:i.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:t.type===_.PlaylistContextType.MANIFEST,url:e.url,reason:o,response:e,context:t,networkDetails:a})},t.handleNetworkError=function(e,t,o,a){void 0===o&&(o=!1),r.logger.warn("[playlist-loader]: A network "+(o?"timeout":"error")+" occurred while loading "+e.type+" level: "+e.level+" id: "+e.id+' group-id: "'+e.groupId+'"');var s=i.ErrorDetails.UNKNOWN,E=!1,T=this.getInternalLoader(e);switch(e.type){case _.PlaylistContextType.MANIFEST:s=o?i.ErrorDetails.MANIFEST_LOAD_TIMEOUT:i.ErrorDetails.MANIFEST_LOAD_ERROR,E=!0;break;case _.PlaylistContextType.LEVEL:s=o?i.ErrorDetails.LEVEL_LOAD_TIMEOUT:i.ErrorDetails.LEVEL_LOAD_ERROR,E=!1;break;case _.PlaylistContextType.AUDIO_TRACK:s=o?i.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:i.ErrorDetails.AUDIO_TRACK_LOAD_ERROR,E=!1;break;case _.PlaylistContextType.SUBTITLE_TRACK:s=o?i.ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT:i.ErrorDetails.SUBTITLE_LOAD_ERROR,E=!1}T&&this.resetInternalLoader(e.type);var l={type:i.ErrorTypes.NETWORK_ERROR,details:s,fatal:E,url:e.url,loader:T,context:e,networkDetails:t};a&&(l.response=a),this.hls.trigger(n.Events.ERROR,l)},t.handlePlaylistLoaded=function(e,t,o,a){var i=o.type,r=o.level,s=o.id,E=o.groupId,T=o.loader,l=o.levelDetails,S=o.deliveryDirectives;if(null!=l&&l.targetduration){if(T)switch(l.live&&(T.getCacheAge&&(l.ageHeader=T.getCacheAge()||0),T.getCacheAge&&!isNaN(l.ageHeader)||(l.ageHeader=0)),i){case _.PlaylistContextType.MANIFEST:case _.PlaylistContextType.LEVEL:this.hls.trigger(n.Events.LEVEL_LOADED,{details:l,level:r||0,id:s||0,stats:t,networkDetails:a,deliveryDirectives:S});break;case _.PlaylistContextType.AUDIO_TRACK:this.hls.trigger(n.Events.AUDIO_TRACK_LOADED,{details:l,id:s||0,groupId:E||"",stats:t,networkDetails:a,deliveryDirectives:S});break;case _.PlaylistContextType.SUBTITLE_TRACK:this.hls.trigger(n.Events.SUBTITLE_TRACK_LOADED,{details:l,id:s||0,groupId:E||"",stats:t,networkDetails:a,deliveryDirectives:S})}}else this.handleManifestParsingError(e,o,"invalid target duration",a)},e})();t.default=S},"./src/polyfills/number.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"isFiniteNumber",(function(){return a})),o.d(t,"MAX_SAFE_INTEGER",(function(){return n}));var a=Number.isFinite||function(e){return"number"==typeof e&&isFinite(e)},n=Number.MAX_SAFE_INTEGER||9007199254740991},"./src/remux/aac-helper.ts":function(e,t,o){"use strict";o.r(t);var a=(function(){function e(){}return e.getSilentFrame=function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}},e})();t.default=a},"./src/remux/mp4-generator.ts":function(e,t,o){"use strict";o.r(t);var a=Math.pow(2,32)-1,n=(function(){function e(){}return e.init=function(){var t;for(t in e.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},e.types)e.types.hasOwnProperty(t)&&(e.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);var o=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),a=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);e.HDLR_TYPES={video:o,audio:a};var n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),i=new Uint8Array([0,0,0,0,0,0,0,0]);e.STTS=e.STSC=e.STCO=i,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);var r=new Uint8Array([105,115,111,109]),s=new Uint8Array([97,118,99,49]),E=new Uint8Array([0,0,0,1]);e.FTYP=e.box(e.types.ftyp,r,E,r,s),e.DINF=e.box(e.types.dinf,e.box(e.types.dref,n))},e.box=function(e){for(var t=8,o=arguments.length,a=new Array(o>1?o-1:0),n=1;n<o;n++)a[n-1]=arguments[n];for(var i=a.length,r=i;i--;)t+=a[i].byteLength;var s=new Uint8Array(t);for(s[0]=t>>24&255,s[1]=t>>16&255,s[2]=t>>8&255,s[3]=255&t,s.set(e,4),i=0,t=8;i<r;i++)s.set(a[i],t),t+=a[i].byteLength;return s},e.hdlr=function(t){return e.box(e.types.hdlr,e.HDLR_TYPES[t])},e.mdat=function(t){return e.box(e.types.mdat,t)},e.mdhd=function(t,o){o*=t;var n=Math.floor(o/(a+1)),i=Math.floor(o%(a+1));return e.box(e.types.mdhd,new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,n>>24,n>>16&255,n>>8&255,255&n,i>>24,i>>16&255,i>>8&255,255&i,85,196,0,0]))},e.mdia=function(t){return e.box(e.types.mdia,e.mdhd(t.timescale,t.duration),e.hdlr(t.type),e.minf(t))},e.mfhd=function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))},e.minf=function(t){return"audio"===t.type?e.box(e.types.minf,e.box(e.types.smhd,e.SMHD),e.DINF,e.stbl(t)):e.box(e.types.minf,e.box(e.types.vmhd,e.VMHD),e.DINF,e.stbl(t))},e.moof=function(t,o,a){return e.box(e.types.moof,e.mfhd(t),e.traf(a,o))},e.moov=function(t){for(var o=t.length,a=[];o--;)a[o]=e.trak(t[o]);return e.box.apply(null,[e.types.moov,e.mvhd(t[0].timescale,t[0].duration)].concat(a).concat(e.mvex(t)))},e.mvex=function(t){for(var o=t.length,a=[];o--;)a[o]=e.trex(t[o]);return e.box.apply(null,[e.types.mvex].concat(a))},e.mvhd=function(t,o){o*=t;var n=Math.floor(o/(a+1)),i=Math.floor(o%(a+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,n>>24,n>>16&255,n>>8&255,255&n,i>>24,i>>16&255,i>>8&255,255&i,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return e.box(e.types.mvhd,r)},e.sdtp=function(t){var o,a,n=t.samples||[],i=new Uint8Array(4+n.length);for(o=0;o<n.length;o++)a=n[o].flags,i[o+4]=a.dependsOn<<4|a.isDependedOn<<2|a.hasRedundancy;return e.box(e.types.sdtp,i)},e.stbl=function(t){return e.box(e.types.stbl,e.stsd(t),e.box(e.types.stts,e.STTS),e.box(e.types.stsc,e.STSC),e.box(e.types.stsz,e.STSZ),e.box(e.types.stco,e.STCO))},e.avc1=function(t){var o,a,n,i=[],r=[];for(o=0;o<t.sps.length;o++)n=(a=t.sps[o]).byteLength,i.push(n>>>8&255),i.push(255&n),i=i.concat(Array.prototype.slice.call(a));for(o=0;o<t.pps.length;o++)n=(a=t.pps[o]).byteLength,r.push(n>>>8&255),r.push(255&n),r=r.concat(Array.prototype.slice.call(a));var s=e.box(e.types.avcC,new Uint8Array([1,i[3],i[4],i[5],255,224|t.sps.length].concat(i).concat([t.pps.length]).concat(r))),E=t.width,_=t.height,T=t.pixelRatio[0],l=t.pixelRatio[1];return e.box(e.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,E>>8&255,255&E,_>>8&255,255&_,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),s,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),e.box(e.types.pasp,new Uint8Array([T>>24,T>>16&255,T>>8&255,255&T,l>>24,l>>16&255,l>>8&255,255&l])))},e.esds=function(e){var t=e.config.length;return new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e.config).concat([6,1,2]))},e.mp4a=function(t){var o=t.samplerate;return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,o>>8&255,255&o,0,0]),e.box(e.types.esds,e.esds(t)))},e.mp3=function(t){var o=t.samplerate;return e.box(e.types[".mp3"],new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,o>>8&255,255&o,0,0]))},e.stsd=function(t){return"audio"===t.type?"mp3"===t.segmentCodec&&"mp3"===t.codec?e.box(e.types.stsd,e.STSD,e.mp3(t)):e.box(e.types.stsd,e.STSD,e.mp4a(t)):e.box(e.types.stsd,e.STSD,e.avc1(t))},e.tkhd=function(t){var o=t.id,n=t.duration*t.timescale,i=t.width,r=t.height,s=Math.floor(n/(a+1)),E=Math.floor(n%(a+1));return e.box(e.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,o>>24&255,o>>16&255,o>>8&255,255&o,0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s,E>>24,E>>16&255,E>>8&255,255&E,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>8&255,255&i,0,0,r>>8&255,255&r,0,0]))},e.traf=function(t,o){var n=e.sdtp(t),i=t.id,r=Math.floor(o/(a+1)),s=Math.floor(o%(a+1));return e.box(e.types.traf,e.box(e.types.tfhd,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i])),e.box(e.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,s>>24,s>>16&255,s>>8&255,255&s])),e.trun(t,n.length+16+20+8+16+8+8),n)},e.trak=function(t){return t.duration=t.duration||4294967295,e.box(e.types.trak,e.tkhd(t),e.mdia(t))},e.trex=function(t){var o=t.id;return e.box(e.types.trex,new Uint8Array([0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))},e.trun=function(t,o){var a,n,i,r,s,E,_=t.samples||[],T=_.length,l=12+16*T,S=new Uint8Array(l);for(o+=8+l,S.set(["video"===t.type?1:0,0,15,1,T>>>24&255,T>>>16&255,T>>>8&255,255&T,o>>>24&255,o>>>16&255,o>>>8&255,255&o],0),a=0;a<T;a++)i=(n=_[a]).duration,r=n.size,s=n.flags,E=n.cts,S.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,r>>>24&255,r>>>16&255,r>>>8&255,255&r,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.paddingValue<<1|s.isNonSync,61440&s.degradPrio,15&s.degradPrio,E>>>24&255,E>>>16&255,E>>>8&255,255&E],12+16*a);return e.box(e.types.trun,S)},e.initSegment=function(t){e.types||e.init();var o=e.moov(t),a=new Uint8Array(e.FTYP.byteLength+o.byteLength);return a.set(e.FTYP),a.set(o,e.FTYP.byteLength),a},e})();n.types=void 0,n.HDLR_TYPES=void 0,n.STTS=void 0,n.STSC=void 0,n.STCO=void 0,n.STSZ=void 0,n.VMHD=void 0,n.SMHD=void 0,n.STSD=void 0,n.FTYP=void 0,n.DINF=void 0,t.default=n},"./src/remux/mp4-remuxer.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return d})),o.d(t,"normalizePts",(function(){return c})),o.d(t,"flushTextTrackMetadataCueSamples",(function(){return A})),o.d(t,"flushTextTrackUserdataCueSamples",(function(){return I}));var a=o("./src/polyfills/number.ts"),n=o("./src/remux/aac-helper.ts"),i=o("./src/remux/mp4-generator.ts"),r=o("./src/events.ts"),s=o("./src/errors.ts"),E=o("./src/utils/logger.ts"),_=o("./src/types/loader.ts"),T=o("./src/utils/timescale-conversion.ts");function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},l.apply(this,arguments)}var S=null,u=null,d=(function(){function e(e,t,o,a){if(void 0===a&&(a=""),this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=void 0,this._initDTS=void 0,this.nextAvcDts=null,this.nextAudioPts=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.observer=e,this.config=t,this.typeSupported=o,this.ISGenerated=!1,null===S){var n=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);S=n?parseInt(n[1]):0}if(null===u){var i=navigator.userAgent.match(/Safari\/(\d+)/i);u=i?parseInt(i[1]):0}}var t=e.prototype;return t.destroy=function(){},t.resetTimeStamp=function(e){E.logger.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e},t.resetNextTimestamp=function(){E.logger.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1},t.resetInitSegment=function(){E.logger.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1},t.getVideoStartPts=function(e){var t=!1,o=e.reduce((function(e,o){var a=o.pts-e;return a<-4294967296?(t=!0,c(e,o.pts)):a>0?e:o.pts}),e[0].pts);return t&&E.logger.debug("PTS rollover detected"),o},t.remux=function(e,t,o,a,n,i,r,s){var T,l,S,u,d,O,N=n,R=n,m=e.pid>-1,p=t.pid>-1,h=t.samples.length,L=e.samples.length>0,f=r&&h>0||h>1;if((!m||L)&&(!p||f)||this.ISGenerated||r){this.ISGenerated||(S=this.generateIS(e,t,n));var C,D=this.isVideoContiguous,g=-1;if(f&&(g=(function(e){for(var t=0;t<e.length;t++)if(e[t].key)return t;return-1})(t.samples),!D&&this.config.forceKeyFrameOnDiscontinuity))if(O=!0,g>0){E.logger.warn("[mp4-remuxer]: Dropped "+g+" out of "+h+" video samples due to a missing keyframe");var v=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(g),t.dropped+=g,C=R+=(t.samples[0].pts-v)/t.inputTimeScale}else-1===g&&(E.logger.warn("[mp4-remuxer]: No keyframe found out of "+h+" video samples"),O=!1);if(this.ISGenerated){if(L&&f){var P=this.getVideoStartPts(t.samples),y=(c(e.samples[0].pts,P)-P)/t.inputTimeScale;N+=Math.max(0,y),R+=Math.max(0,-y)}if(L){if(e.samplerate||(E.logger.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),S=this.generateIS(e,t,n)),l=this.remuxAudio(e,N,this.isAudioContiguous,i,p||f||s===_.PlaylistLevelType.AUDIO?R:void 0),f){var B=l?l.endPTS-l.startPTS:0;t.inputTimeScale||(E.logger.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),S=this.generateIS(e,t,n)),T=this.remuxVideo(t,R,D,B)}}else f&&(T=this.remuxVideo(t,R,D,0));T&&(T.firstKeyFrame=g,T.independent=-1!==g,T.firstKeyFramePTS=C)}}return this.ISGenerated&&(o.samples.length&&(d=A(o,n,this._initPTS,this._initDTS)),a.samples.length&&(u=I(a,n,this._initPTS))),{audio:l,video:T,initSegment:S,independent:O,text:u,id3:d}},t.generateIS=function(e,t,o){var n,r,s,E=e.samples,_=t.samples,T=this.typeSupported,l={},S=!Object(a.isFiniteNumber)(this._initPTS),u="audio/mp4";if(S&&(n=r=1/0),e.config&&E.length&&(e.timescale=e.samplerate,"mp3"===e.segmentCodec&&(T.mpeg?(u="audio/mpeg",e.codec=""):T.mp3&&(e.codec="mp3")),l.audio={id:"audio",container:u,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&T.mpeg?new Uint8Array(0):i.default.initSegment([e]),metadata:{channelCount:e.channelCount}},S&&(s=e.inputTimeScale,n=r=E[0].pts-Math.round(s*o))),t.sps&&t.pps&&_.length&&(t.timescale=t.inputTimeScale,l.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:i.default.initSegment([t]),metadata:{width:t.width,height:t.height}},S)){s=t.inputTimeScale;var d=this.getVideoStartPts(_),A=Math.round(s*o);r=Math.min(r,c(_[0].dts,d)-A),n=Math.min(n,d-A)}if(Object.keys(l).length)return this.ISGenerated=!0,S&&(this._initPTS=n,this._initDTS=r),{tracks:l,initPTS:n,timescale:s}},t.remuxVideo=function(e,t,o,a){var n,_,d=e.inputTimeScale,A=e.samples,I=[],N=A.length,R=this._initPTS,m=this.nextAvcDts,p=8,h=this.videoSampleDuration,L=Number.POSITIVE_INFINITY,f=Number.NEGATIVE_INFINITY,C=!1;o&&null!==m||(m=t*d-(A[0].pts-c(A[0].dts,A[0].pts)));for(var D=0;D<N;D++){var g=A[D];g.pts=c(g.pts-R,m),g.dts=c(g.dts-R,m),g.dts<A[D>0?D-1:D].dts&&(C=!0)}C&&A.sort((function(e,t){var o=e.dts-t.dts,a=e.pts-t.pts;return o||a})),n=A[0].dts;var v=(_=A[A.length-1].dts)-n,P=v?Math.round(v/(N-1)):h||e.inputTimeScale/30;if(o){var y=n-m,B=y>P;if(B||y<-1){B?E.logger.warn("AVC: "+Object(T.toMsFromMpegTsClock)(y,!0)+" ms ("+y+"dts) hole between fragments detected, filling it"):E.logger.warn("AVC: "+Object(T.toMsFromMpegTsClock)(-y,!0)+" ms ("+y+"dts) overlapping between fragments detected"),n=m;var b=A[0].pts-y;A[0].dts=n,A[0].pts=b,E.logger.log("Video: First PTS/DTS adjusted: "+Object(T.toMsFromMpegTsClock)(b,!0)+"/"+Object(T.toMsFromMpegTsClock)(n,!0)+", delta: "+Object(T.toMsFromMpegTsClock)(y,!0)+" ms")}}n=Math.max(0,n);for(var M=0,U=0,W=0;W<N;W++){for(var G=A[W],F=G.units,k=F.length,w=0,H=0;H<k;H++)w+=F[H].data.length;U+=w,M+=k,G.length=w,G.dts=Math.max(G.dts,n),L=Math.min(G.pts,L),f=Math.max(G.pts,f)}_=A[N-1].dts;var V,Y=U+4*M+8;try{V=new Uint8Array(Y)}catch(e){return void this.observer.emit(r.Events.ERROR,r.Events.ERROR,{type:s.ErrorTypes.MUX_ERROR,details:s.ErrorDetails.REMUX_ALLOC_ERROR,fatal:!1,bytes:Y,reason:"fail allocating video mdat "+Y})}var z=new DataView(V.buffer);z.setUint32(0,Y),V.set(i.default.types.mdat,4);for(var x=!1,K=Number.POSITIVE_INFINITY,j=Number.POSITIVE_INFINITY,Q=Number.NEGATIVE_INFINITY,X=Number.NEGATIVE_INFINITY,$=0;$<N;$++){for(var q=A[$],J=q.units,Z=0,ee=0,te=J.length;ee<te;ee++){var oe=J[ee],ae=oe.data,ne=oe.data.byteLength;z.setUint32(p,ne),p+=4,V.set(ae,p),p+=ne,Z+=4+ne}var ie=void 0;if($<N-1)h=A[$+1].dts-q.dts,ie=A[$+1].pts-q.pts;else{var re=this.config,se=$>0?q.dts-A[$-1].dts:P;if(ie=$>0?q.pts-A[$-1].pts:P,re.stretchShortVideoTrack&&null!==this.nextAudioPts){var Ee=Math.floor(re.maxBufferHole*d),_e=(a?L+a*d:this.nextAudioPts)-q.pts;_e>Ee?((h=_e-se)<0?h=se:x=!0,E.logger.log("[mp4-remuxer]: It is approximately "+_e/90+" ms to the next segment; using duration "+h/90+" ms for the last video frame.")):h=se}else h=se}var Te=Math.round(q.pts-q.dts);K=Math.min(K,h),Q=Math.max(Q,h),j=Math.min(j,ie),X=Math.max(X,ie),I.push(new O(q.key,h,Z,Te))}if(I.length)if(S){if(S<70){var le=I[0].flags;le.dependsOn=2,le.isNonSync=0}}else if(u&&X-j<Q-K&&P/Q<.025&&0===I[0].cts){E.logger.warn("Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.");for(var Se=n,ue=0,de=I.length;ue<de;ue++){var ce=Se+I[ue].duration,Ae=Se+I[ue].cts;if(ue<de-1){var Ie=ce+I[ue+1].cts;I[ue].duration=Ie-Ae}else I[ue].duration=ue?I[ue-1].duration:P;I[ue].cts=0,Se=ce}}console.assert(null!==h,"mp4SampleDuration must be computed"),h=x||!h?P:h,this.nextAvcDts=m=_+h,this.videoSampleDuration=h,this.isVideoContiguous=!0;var Oe={data1:i.default.moof(e.sequenceNumber++,n,l({},e,{samples:I})),data2:V,startPTS:L/d,endPTS:(f+h)/d,startDTS:n/d,endDTS:m/d,type:"video",hasAudio:!1,hasVideo:!0,nb:I.length,dropped:e.dropped};return e.samples=[],e.dropped=0,console.assert(V.length,"MDAT length must not be zero"),Oe},t.remuxAudio=function(e,t,o,a,_){var T=e.inputTimeScale,S=T/(e.samplerate?e.samplerate:T),u="aac"===e.segmentCodec?1024:1152,d=u*S,A=this._initPTS,I="mp3"===e.segmentCodec&&this.typeSupported.mpeg,N=[],R=void 0!==_,m=e.samples,p=I?0:8,h=this.nextAudioPts||-1,L=t*T;if(this.isAudioContiguous=o=o||m.length&&h>0&&(a&&Math.abs(L-h)<9e3||Math.abs(c(m[0].pts-A,L)-h)<20*d),m.forEach((function(e){e.pts=c(e.pts-A,L)})),!o||h<0){if(m=m.filter((function(e){return e.pts>=0})),!m.length)return;h=0===_?0:a&&!R?Math.max(0,L):m[0].pts}if("aac"===e.segmentCodec)for(var f=this.config.maxAudioFramesDrift,C=0,D=h;C<m.length;C++){var g=m[C],v=g.pts,P=v-D,y=Math.abs(1e3*P/T);if(P<=-f*d&&R)0===C&&(E.logger.warn("Audio frame @ "+(v/T).toFixed(3)+"s overlaps nextAudioPts by "+Math.round(1e3*P/T)+" ms."),this.nextAudioPts=h=D=v);else if(P>=f*d&&y<1e4&&R){var B=Math.round(P/d);(D=v-B*d)<0&&(B--,D+=d),0===C&&(this.nextAudioPts=h=D),E.logger.warn("[mp4-remuxer]: Injecting "+B+" audio frame @ "+(D/T).toFixed(3)+"s due to "+Math.round(1e3*P/T)+" ms gap.");for(var b=0;b<B;b++){var M=Math.max(D,0),U=n.default.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);U||(E.logger.log("[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead."),U=g.unit.subarray()),m.splice(C,0,{unit:U,pts:M}),D+=d,C++}}g.pts=D,D+=d}for(var W,G=null,F=null,k=0,w=m.length;w--;)k+=m[w].unit.byteLength;for(var H=0,V=m.length;H<V;H++){var Y=m[H],z=Y.unit,x=Y.pts;if(null!==F)N[H-1].duration=Math.round((x-F)/S);else{if(o&&"aac"===e.segmentCodec&&(x=h),G=x,!(k>0))return;k+=p;try{W=new Uint8Array(k)}catch(e){return void this.observer.emit(r.Events.ERROR,r.Events.ERROR,{type:s.ErrorTypes.MUX_ERROR,details:s.ErrorDetails.REMUX_ALLOC_ERROR,fatal:!1,bytes:k,reason:"fail allocating audio mdat "+k})}I||(new DataView(W.buffer).setUint32(0,k),W.set(i.default.types.mdat,4))}W.set(z,p);var K=z.byteLength;p+=K,N.push(new O(!0,u,K,0)),F=x}var j=N.length;if(j){var Q=N[N.length-1];this.nextAudioPts=h=F+S*Q.duration;var X=I?new Uint8Array(0):i.default.moof(e.sequenceNumber++,G/S,l({},e,{samples:N}));e.samples=[];var $=G/T,q=h/T,J={data1:X,data2:W,startPTS:$,endPTS:q,startDTS:$,endDTS:q,type:"audio",hasAudio:!0,hasVideo:!1,nb:j};return this.isAudioContiguous=!0,console.assert(W.length,"MDAT length must not be zero"),J}},t.remuxEmptyAudio=function(e,t,o,a){var i=e.inputTimeScale,r=i/(e.samplerate?e.samplerate:i),s=this.nextAudioPts,_=(null!==s?s:a.startDTS*i)+this._initDTS,T=a.endDTS*i+this._initDTS,l=1024*r,S=Math.ceil((T-_)/l),u=n.default.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(E.logger.warn("[mp4-remuxer]: remux empty Audio"),u){for(var d=[],c=0;c<S;c++){var A=_+c*l;d.push({unit:u,pts:A,dts:A})}return e.samples=d,this.remuxAudio(e,t,o,!1)}E.logger.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec")},e})();function c(e,t){var o;if(null===t)return e;for(o=t<e?-8589934592:8589934592;Math.abs(e-t)>4294967296;)e+=o;return e}function A(e,t,o,a){var n=e.samples.length;if(n){for(var i=e.inputTimeScale,r=0;r<n;r++){var s=e.samples[r];s.pts=c(s.pts-o,t*i)/i,s.dts=c(s.dts-a,t*i)/i}var E=e.samples;return e.samples=[],{samples:E}}}function I(e,t,o){var a=e.samples.length;if(a){for(var n=e.inputTimeScale,i=0;i<a;i++){var r=e.samples[i];r.pts=c(r.pts-o,t*n)/n}e.samples.sort((function(e,t){return e.pts-t.pts}));var s=e.samples;return e.samples=[],{samples:s}}}var O=function(e,t,o,a){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=o,this.cts=a,this.flags=new N(e)},N=function(e){this.isLeading=0,this.isDependedOn=0,this.hasRedundancy=0,this.degradPrio=0,this.dependsOn=1,this.isNonSync=1,this.dependsOn=e?2:1,this.isNonSync=e?0:1}},"./src/remux/passthrough-remuxer.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/polyfills/number.ts"),n=o("./src/remux/mp4-remuxer.ts"),i=o("./src/utils/mp4-tools.ts"),r=o("./src/loader/fragment.ts"),s=o("./src/utils/logger.ts"),E=(function(){function e(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=void 0,this.initTracks=void 0,this.lastEndTime=null}var t=e.prototype;return t.destroy=function(){},t.resetTimeStamp=function(e){this.initPTS=e,this.lastEndTime=null},t.resetNextTimestamp=function(){this.lastEndTime=null},t.resetInitSegment=function(e,t,o){this.audioCodec=t,this.videoCodec=o,this.generateInitSegment(e),this.emitInitSegment=!0},t.generateInitSegment=function(e){var t=this.audioCodec,o=this.videoCodec;if(!e||!e.byteLength)return this.initTracks=void 0,void(this.initData=void 0);var a=this.initData=Object(i.parseInitSegment)(e);t||(t=_(a.audio,r.ElementaryStreamTypes.AUDIO)),o||(o=_(a.video,r.ElementaryStreamTypes.VIDEO));var n={};a.audio&&a.video?n.audiovideo={container:"video/mp4",codec:t+","+o,initSegment:e,id:"main"}:a.audio?n.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:a.video?n.video={container:"video/mp4",codec:o,initSegment:e,id:"main"}:s.logger.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=n},t.remux=function(e,t,o,r,E){var _,T=this.initPTS,l=this.lastEndTime,S={audio:void 0,video:void 0,text:r,id3:o,initSegment:void 0};Object(a.isFiniteNumber)(l)||(l=this.lastEndTime=E||0);var u=t.samples;if(!u||!u.length)return S;var d={initPTS:void 0,timescale:1},c=this.initData;if(c&&c.length||(this.generateInitSegment(u),c=this.initData),!c||!c.length)return s.logger.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),S;this.emitInitSegment&&(d.tracks=this.initTracks,this.emitInitSegment=!1);var A=Object(i.getStartDTS)(c,u);Object(a.isFiniteNumber)(T)||(this.initPTS=d.initPTS=T=A-E);var I=Object(i.getDuration)(u,c),O=e?A-T:l,N=O+I;Object(i.offsetStartDTS)(c,u,T),I>0?this.lastEndTime=N:(s.logger.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());var R=!!c.audio,m=!!c.video,p="";R&&(p+="audio"),m&&(p+="video");var h={data1:u,startPTS:O,startDTS:O,endPTS:N,endDTS:N,type:p,hasAudio:R,hasVideo:m,nb:1,dropped:0};S.audio="audio"===h.type?h:void 0,S.video="audio"!==h.type?h:void 0,S.initSegment=d;var L=null!=(_=this.initPTS)?_:0;return S.id3=Object(n.flushTextTrackMetadataCueSamples)(o,E,L,L),r.samples.length&&(S.text=Object(n.flushTextTrackUserdataCueSamples)(r,E,L)),S},e})();function _(e,t){var o=null==e?void 0:e.codec;return o&&o.length>4?o:"hvc1"===o||"hev1"===o?"hvc1.1.c.L120.90":"av01"===o?"av01.0.04M.08":"avc1"===o||t===r.ElementaryStreamTypes.VIDEO?"avc1.42e01e":"mp4a.40.5"}t.default=E},"./src/task-loop.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return a}));var a=(function(){function e(){this._boundTick=void 0,this._tickTimer=null,this._tickInterval=null,this._tickCallCount=0,this._boundTick=this.tick.bind(this)}var t=e.prototype;return t.destroy=function(){this.onHandlerDestroying(),this.onHandlerDestroyed()},t.onHandlerDestroying=function(){this.clearNextTick(),this.clearInterval()},t.onHandlerDestroyed=function(){},t.hasInterval=function(){return!!this._tickInterval},t.hasNextTick=function(){return!!this._tickTimer},t.setInterval=function(e){return!this._tickInterval&&(this._tickInterval=self.setInterval(this._boundTick,e),!0)},t.clearInterval=function(){return!!this._tickInterval&&(self.clearInterval(this._tickInterval),this._tickInterval=null,!0)},t.clearNextTick=function(){return!!this._tickTimer&&(self.clearTimeout(this._tickTimer),this._tickTimer=null,!0)},t.tick=function(){this._tickCallCount++,1===this._tickCallCount&&(this.doTick(),this._tickCallCount>1&&this.tickImmediate(),this._tickCallCount=0)},t.tickImmediate=function(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)},t.doTick=function(){},e})()},"./src/types/cmcd.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"CMCDVersion",(function(){return r})),o.d(t,"CMCDObjectType",(function(){return a})),o.d(t,"CMCDStreamingFormat",(function(){return n})),o.d(t,"CMCDStreamType",(function(){return i}));var a,n,i,r=1;!(function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"})(a||(a={})),(function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"})(n||(n={})),(function(e){e.VOD="v",e.LIVE="l"})(i||(i={}))},"./src/types/demuxer.ts":function(e,t,o){"use strict";var a;o.r(t),o.d(t,"MetadataSchema",(function(){return a})),(function(e){e.audioId3="org.id3",e.dateRange="com.apple.quicktime.HLS",e.emsg="https://aomedia.org/emsg/ID3"})(a||(a={}))},"./src/types/level.ts":function(e,t,o){"use strict";function a(e,t){for(var o=0;o<t.length;o++){var a=t[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}var n;function i(e,t){var o=e.canSkipUntil,a=e.canSkipDateRanges,i=e.endSN;return o&&(void 0!==t?t-i:0)<o?a?n.v2:n.Yes:n.No}o.r(t),o.d(t,"HlsSkip",(function(){return n})),o.d(t,"getSkipValue",(function(){return i})),o.d(t,"HlsUrlParameters",(function(){return r})),o.d(t,"Level",(function(){return s})),(function(e){e.No="",e.Yes="YES",e.v2="v2"})(n||(n={}));var r=(function(){function e(e,t,o){this.msn=void 0,this.part=void 0,this.skip=void 0,this.msn=e,this.part=t,this.skip=o}return e.prototype.addDirectives=function(e){var t=new self.URL(e);return void 0!==this.msn&&t.searchParams.set("_HLS_msn",this.msn.toString()),void 0!==this.part&&t.searchParams.set("_HLS_part",this.part.toString()),this.skip&&t.searchParams.set("_HLS_skip",this.skip),t.toString()},e})(),s=(function(){function e(e){this.attrs=void 0,this.audioCodec=void 0,this.bitrate=void 0,this.codecSet=void 0,this.height=void 0,this.id=void 0,this.name=void 0,this.videoCodec=void 0,this.width=void 0,this.unknownCodecs=void 0,this.audioGroupIds=void 0,this.details=void 0,this.fragmentError=0,this.loadError=0,this.loaded=void 0,this.realBitrate=0,this.textGroupIds=void 0,this.url=void 0,this._urlId=0,this.url=[e.url],this.attrs=e.attrs,this.bitrate=e.bitrate,e.details&&(this.details=e.details),this.id=e.id||0,this.name=e.name,this.width=e.width||0,this.height=e.height||0,this.audioCodec=e.audioCodec,this.videoCodec=e.videoCodec,this.unknownCodecs=e.unknownCodecs,this.codecSet=[e.videoCodec,e.audioCodec].filter((function(e){return e})).join(",").replace(/\.[^.,]+/g,"")}var t,o,n;return t=e,(o=[{key:"maxBitrate",get:function(){return Math.max(this.realBitrate,this.bitrate)}},{key:"uri",get:function(){return this.url[this._urlId]||""}},{key:"urlId",get:function(){return this._urlId},set:function(e){var t=e%this.url.length;this._urlId!==t&&(this.details=void 0,this._urlId=t)}}])&&a(t.prototype,o),n&&a(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e})()},"./src/types/loader.ts":function(e,t,o){"use strict";var a,n;o.r(t),o.d(t,"PlaylistContextType",(function(){return a})),o.d(t,"PlaylistLevelType",(function(){return n})),(function(e){e.MANIFEST="manifest",e.LEVEL="level",e.AUDIO_TRACK="audioTrack",e.SUBTITLE_TRACK="subtitleTrack"})(a||(a={})),(function(e){e.MAIN="main",e.AUDIO="audio",e.SUBTITLE="subtitle"})(n||(n={}))},"./src/types/transmuxer.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"ChunkMetadata",(function(){return a}));var a=function(e,t,o,a,n,i){void 0===a&&(a=0),void 0===n&&(n=-1),void 0===i&&(i=!1),this.level=void 0,this.sn=void 0,this.part=void 0,this.id=void 0,this.size=void 0,this.partial=void 0,this.transmuxing={start:0,executeStart:0,executeEnd:0,end:0},this.buffering={audio:{start:0,executeStart:0,executeEnd:0,end:0},video:{start:0,executeStart:0,executeEnd:0,end:0},audiovideo:{start:0,executeStart:0,executeEnd:0,end:0}},this.level=e,this.sn=t,this.id=o,this.size=a,this.part=n,this.partial=i}},"./src/utils/attr-list.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"AttrList",(function(){return i}));var a=/^(\d+)x(\d+)$/,n=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,i=(function(){function e(t){for(var o in"string"==typeof t&&(t=e.parseAttrList(t)),t)t.hasOwnProperty(o)&&(this[o]=t[o])}var t=e.prototype;return t.decimalInteger=function(e){var t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t},t.hexadecimalInteger=function(e){if(this[e]){var t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;for(var o=new Uint8Array(t.length/2),a=0;a<t.length/2;a++)o[a]=parseInt(t.slice(2*a,2*a+2),16);return o}return null},t.hexadecimalIntegerAsNumber=function(e){var t=parseInt(this[e],16);return t>Number.MAX_SAFE_INTEGER?1/0:t},t.decimalFloatingPoint=function(e){return parseFloat(this[e])},t.optionalFloat=function(e,t){var o=this[e];return o?parseFloat(o):t},t.enumeratedString=function(e){return this[e]},t.bool=function(e){return"YES"===this[e]},t.decimalResolution=function(e){var t=a.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}},e.parseAttrList=function(e){var t,o={};for(n.lastIndex=0;null!==(t=n.exec(e));){var a=t[2];0===a.indexOf('"')&&a.lastIndexOf('"')===a.length-1&&(a=a.slice(1,-1)),o[t[1]]=a}return o},e})()},"./src/utils/binary-search.ts":function(e,t,o){"use strict";o.r(t),t.default={search:function(e,t){for(var o=0,a=e.length-1,n=null,i=null;o<=a;){var r=t(i=e[n=(o+a)/2|0]);if(r>0)o=n+1;else{if(!(r<0))return i;a=n-1}}return null}}},"./src/utils/buffer-helper.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"BufferHelper",(function(){return i}));var a=o("./src/utils/logger.ts"),n={length:0,start:function(){return 0},end:function(){return 0}},i=(function(){function e(){}return e.isBuffered=function(t,o){try{if(t)for(var a=e.getBuffered(t),n=0;n<a.length;n++)if(o>=a.start(n)&&o<=a.end(n))return!0}catch(e){}return!1},e.bufferInfo=function(t,o,a){try{if(t){var n,i=e.getBuffered(t),r=[];for(n=0;n<i.length;n++)r.push({start:i.start(n),end:i.end(n)});return this.bufferedInfo(r,o,a)}}catch(e){}return{len:0,start:o,end:o,nextStart:void 0}},e.bufferedInfo=function(e,t,o){t=Math.max(0,t),e.sort((function(e,t){var o=e.start-t.start;return o||t.end-e.end}));var a=[];if(o)for(var n=0;n<e.length;n++){var i=a.length;if(i){var r=a[i-1].end;e[n].start-r<o?e[n].end>r&&(a[i-1].end=e[n].end):a.push(e[n])}else a.push(e[n])}else a=e;for(var s,E=0,_=t,T=t,l=0;l<a.length;l++){var S=a[l].start,u=a[l].end;if(t+o>=S&&t<u)_=S,E=(T=u)-t;else if(t+o<S){s=S;break}}return{len:E,start:_||0,end:T||0,nextStart:s}},e.getBuffered=function(e){try{return e.buffered}catch(e){return a.logger.log("failed to get media.buffered",e),n}},e})()},"./src/utils/cea-608-parser.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"Row",(function(){return O})),o.d(t,"CaptionScreen",(function(){return N}));var a,n=o("./src/utils/logger.ts"),i={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},r=function(e){var t=e;return i.hasOwnProperty(e)&&(t=i[e]),String.fromCharCode(t)},s=15,E=100,_={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},T={17:2,18:4,21:6,22:8,23:10,19:13,20:15},l={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},S={25:2,26:4,29:6,30:8,31:10,27:13,28:15},u=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];!(function(e){e[e.ERROR=0]="ERROR",e[e.TEXT=1]="TEXT",e[e.WARNING=2]="WARNING",e[e.INFO=2]="INFO",e[e.DEBUG=3]="DEBUG",e[e.DATA=3]="DATA"})(a||(a={}));var d=(function(){function e(){this.time=null,this.verboseLevel=a.ERROR}return e.prototype.log=function(e,t){this.verboseLevel>=e&&n.logger.log(this.time+" ["+e+"] "+t)},e})(),c=function(e){for(var t=[],o=0;o<e.length;o++)t.push(e[o].toString(16));return t},A=(function(){function e(e,t,o,a,n){this.foreground=void 0,this.underline=void 0,this.italics=void 0,this.background=void 0,this.flash=void 0,this.foreground=e||"white",this.underline=t||!1,this.italics=o||!1,this.background=a||"black",this.flash=n||!1}var t=e.prototype;return t.reset=function(){this.foreground="white",this.underline=!1,this.italics=!1,this.background="black",this.flash=!1},t.setStyles=function(e){for(var t=["foreground","underline","italics","background","flash"],o=0;o<t.length;o++){var a=t[o];e.hasOwnProperty(a)&&(this[a]=e[a])}},t.isDefault=function(){return"white"===this.foreground&&!this.underline&&!this.italics&&"black"===this.background&&!this.flash},t.equals=function(e){return this.foreground===e.foreground&&this.underline===e.underline&&this.italics===e.italics&&this.background===e.background&&this.flash===e.flash},t.copy=function(e){this.foreground=e.foreground,this.underline=e.underline,this.italics=e.italics,this.background=e.background,this.flash=e.flash},t.toString=function(){return"color="+this.foreground+", underline="+this.underline+", italics="+this.italics+", background="+this.background+", flash="+this.flash},e})(),I=(function(){function e(e,t,o,a,n,i){this.uchar=void 0,this.penState=void 0,this.uchar=e||" ",this.penState=new A(t,o,a,n,i)}var t=e.prototype;return t.reset=function(){this.uchar=" ",this.penState.reset()},t.setChar=function(e,t){this.uchar=e,this.penState.copy(t)},t.setPenState=function(e){this.penState.copy(e)},t.equals=function(e){return this.uchar===e.uchar&&this.penState.equals(e.penState)},t.copy=function(e){this.uchar=e.uchar,this.penState.copy(e.penState)},t.isEmpty=function(){return" "===this.uchar&&this.penState.isDefault()},e})(),O=(function(){function e(e){this.chars=void 0,this.pos=void 0,this.currPenState=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chars=[];for(var t=0;t<E;t++)this.chars.push(new I);this.logger=e,this.pos=0,this.currPenState=new A}var t=e.prototype;return t.equals=function(e){for(var t=!0,o=0;o<E;o++)if(!this.chars[o].equals(e.chars[o])){t=!1;break}return t},t.copy=function(e){for(var t=0;t<E;t++)this.chars[t].copy(e.chars[t])},t.isEmpty=function(){for(var e=!0,t=0;t<E;t++)if(!this.chars[t].isEmpty()){e=!1;break}return e},t.setCursor=function(e){this.pos!==e&&(this.pos=e),this.pos<0?(this.logger.log(a.DEBUG,"Negative cursor position "+this.pos),this.pos=0):this.pos>E&&(this.logger.log(a.DEBUG,"Too large cursor position "+this.pos),this.pos=E)},t.moveCursor=function(e){var t=this.pos+e;if(e>1)for(var o=this.pos+1;o<t+1;o++)this.chars[o].setPenState(this.currPenState);this.setCursor(t)},t.backSpace=function(){this.moveCursor(-1),this.chars[this.pos].setChar(" ",this.currPenState)},t.insertChar=function(e){e>=144&&this.backSpace();var t=r(e);this.pos>=E?this.logger.log(a.ERROR,"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!"):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))},t.clearFromPos=function(e){var t;for(t=e;t<E;t++)this.chars[t].reset()},t.clear=function(){this.clearFromPos(0),this.pos=0,this.currPenState.reset()},t.clearToEndOfRow=function(){this.clearFromPos(this.pos)},t.getTextString=function(){for(var e=[],t=!0,o=0;o<E;o++){var a=this.chars[o].uchar;" "!==a&&(t=!1),e.push(a)}return t?"":e.join("")},t.setPenStyles=function(e){this.currPenState.setStyles(e),this.chars[this.pos].setPenState(this.currPenState)},e})(),N=(function(){function e(e){this.rows=void 0,this.currRow=void 0,this.nrRollUpRows=void 0,this.lastOutputScreen=void 0,this.logger=void 0,this.rows=[];for(var t=0;t<s;t++)this.rows.push(new O(e));this.logger=e,this.currRow=14,this.nrRollUpRows=null,this.lastOutputScreen=null,this.reset()}var t=e.prototype;return t.reset=function(){for(var e=0;e<s;e++)this.rows[e].clear();this.currRow=14},t.equals=function(e){for(var t=!0,o=0;o<s;o++)if(!this.rows[o].equals(e.rows[o])){t=!1;break}return t},t.copy=function(e){for(var t=0;t<s;t++)this.rows[t].copy(e.rows[t])},t.isEmpty=function(){for(var e=!0,t=0;t<s;t++)if(!this.rows[t].isEmpty()){e=!1;break}return e},t.backSpace=function(){this.rows[this.currRow].backSpace()},t.clearToEndOfRow=function(){this.rows[this.currRow].clearToEndOfRow()},t.insertChar=function(e){this.rows[this.currRow].insertChar(e)},t.setPen=function(e){this.rows[this.currRow].setPenStyles(e)},t.moveCursor=function(e){this.rows[this.currRow].moveCursor(e)},t.setCursor=function(e){this.logger.log(a.INFO,"setCursor: "+e),this.rows[this.currRow].setCursor(e)},t.setPAC=function(e){this.logger.log(a.INFO,"pacData = "+JSON.stringify(e));var t=e.row-1;if(this.nrRollUpRows&&t<this.nrRollUpRows-1&&(t=this.nrRollUpRows-1),this.nrRollUpRows&&this.currRow!==t){for(var o=0;o<s;o++)this.rows[o].clear();var n=this.currRow+1-this.nrRollUpRows,i=this.lastOutputScreen;if(i){var r=i.rows[n].cueStartTime,E=this.logger.time;if(r&&null!==E&&r<E)for(var _=0;_<this.nrRollUpRows;_++)this.rows[t-this.nrRollUpRows+_+1].copy(i.rows[n+_])}}this.currRow=t;var T=this.rows[this.currRow];if(null!==e.indent){var l=e.indent,S=Math.max(l-1,0);T.setCursor(e.indent),e.color=T.chars[S].penState.foreground}var u={foreground:e.color,underline:e.underline,italics:e.italics,background:"black",flash:!1};this.setPen(u)},t.setBkgData=function(e){this.logger.log(a.INFO,"bkgData = "+JSON.stringify(e)),this.backSpace(),this.setPen(e),this.insertChar(32)},t.setRollUpRows=function(e){this.nrRollUpRows=e},t.rollUp=function(){if(null!==this.nrRollUpRows){this.logger.log(a.TEXT,this.getDisplayText());var e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(a.INFO,"Rolling up")}else this.logger.log(a.DEBUG,"roll_up but nrRollUpRows not set yet")},t.getDisplayText=function(e){e=e||!1;for(var t=[],o="",a=-1,n=0;n<s;n++){var i=this.rows[n].getTextString();i&&(a=n+1,e?t.push("Row "+a+": '"+i+"'"):t.push(i.trim()))}return t.length>0&&(o=e?"["+t.join(" | ")+"]":t.join("\n")),o},t.getTextAndFormat=function(){return this.rows},e})(),R=(function(){function e(e,t,o){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new N(o),this.nonDisplayedMemory=new N(o),this.lastOutputScreen=new N(o),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=o}var t=e.prototype;return t.reset=function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null},t.getHandler=function(){return this.outputFilter},t.setHandler=function(e){this.outputFilter=e},t.setPAC=function(e){this.writeScreen.setPAC(e)},t.setBkgData=function(e){this.writeScreen.setBkgData(e)},t.setMode=function(e){e!==this.mode&&(this.mode=e,this.logger.log(a.INFO,"MODE="+e),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)},t.insertChars=function(e){for(var t=0;t<e.length;t++)this.writeScreen.insertChar(e[t]);var o=this.writeScreen===this.displayedMemory?"DISP":"NON_DISP";this.logger.log(a.INFO,o+": "+this.writeScreen.getDisplayText(!0)),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(this.logger.log(a.TEXT,"DISPLAYED: "+this.displayedMemory.getDisplayText(!0)),this.outputDataUpdate())},t.ccRCL=function(){this.logger.log(a.INFO,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")},t.ccBS=function(){this.logger.log(a.INFO,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())},t.ccAOF=function(){},t.ccAON=function(){},t.ccDER=function(){this.logger.log(a.INFO,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()},t.ccRU=function(e){this.logger.log(a.INFO,"RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)},t.ccFON=function(){this.logger.log(a.INFO,"FON - Flash On"),this.writeScreen.setPen({flash:!0})},t.ccRDC=function(){this.logger.log(a.INFO,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")},t.ccTR=function(){this.logger.log(a.INFO,"TR"),this.setMode("MODE_TEXT")},t.ccRTD=function(){this.logger.log(a.INFO,"RTD"),this.setMode("MODE_TEXT")},t.ccEDM=function(){this.logger.log(a.INFO,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)},t.ccCR=function(){this.logger.log(a.INFO,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)},t.ccENM=function(){this.logger.log(a.INFO,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()},t.ccEOC=function(){if(this.logger.log(a.INFO,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){var e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(a.TEXT,"DISP: "+this.displayedMemory.getDisplayText())}this.outputDataUpdate(!0)},t.ccTO=function(e){this.logger.log(a.INFO,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)},t.ccMIDROW=function(e){var t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{var o=Math.floor(e/2)-16;t.foreground=["white","green","blue","cyan","red","yellow","magenta"][o]}this.logger.log(a.INFO,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)},t.outputDataUpdate=function(e){void 0===e&&(e=!1);var t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen),e&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:t):this.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))},t.cueSplitAtTime=function(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))},e})(),m=(function(){function e(e,t,o){this.channels=void 0,this.currentChannel=0,this.cmdHistory=void 0,this.logger=void 0;var a=new d;this.channels=[null,new R(e,t,a),new R(e+1,o,a)],this.cmdHistory={a:null,b:null},this.logger=a}var t=e.prototype;return t.getHandler=function(e){return this.channels[e].getHandler()},t.setHandler=function(e,t){this.channels[e].setHandler(t)},t.addData=function(e,t){var o,n,i,r=!1;this.logger.time=e;for(var s=0;s<t.length;s+=2)if(n=127&t[s],i=127&t[s+1],0!==n||0!==i){if(this.logger.log(a.DATA,"["+c([t[s],t[s+1]])+"] -> ("+c([n,i])+")"),(o=this.parseCmd(n,i))||(o=this.parseMidrow(n,i)),o||(o=this.parsePAC(n,i)),o||(o=this.parseBackgroundAttributes(n,i)),!o&&(r=this.parseChars(n,i))){var E=this.currentChannel;E&&E>0?this.channels[E].insertChars(r):this.logger.log(a.WARNING,"No channel found yet. TEXT-MODE?")}o||r||this.logger.log(a.WARNING,"Couldn't parse cleaned data "+c([n,i])+" orig: "+c([t[s],t[s+1]]))}},t.parseCmd=function(e,t){var o=this.cmdHistory;if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47||(23===e||31===e)&&t>=33&&t<=35))return!1;if(h(e,t,o))return p(null,null,o),this.logger.log(a.DEBUG,"Repeated command ("+c([e,t])+") is dropped"),!0;var n=20===e||21===e||23===e?1:2,i=this.channels[n];return 20===e||21===e||28===e||29===e?32===t?i.ccRCL():33===t?i.ccBS():34===t?i.ccAOF():35===t?i.ccAON():36===t?i.ccDER():37===t?i.ccRU(2):38===t?i.ccRU(3):39===t?i.ccRU(4):40===t?i.ccFON():41===t?i.ccRDC():42===t?i.ccTR():43===t?i.ccRTD():44===t?i.ccEDM():45===t?i.ccCR():46===t?i.ccENM():47===t&&i.ccEOC():i.ccTO(t-32),p(e,t,o),this.currentChannel=n,!0},t.parseMidrow=function(e,t){var o=0;if((17===e||25===e)&&t>=32&&t<=47){if((o=17===e?1:2)!==this.currentChannel)return this.logger.log(a.ERROR,"Mismatch channel in midrow parsing"),!1;var n=this.channels[o];return!!n&&(n.ccMIDROW(t),this.logger.log(a.DEBUG,"MIDROW ("+c([e,t])+")"),!0)}return!1},t.parsePAC=function(e,t){var o,a=this.cmdHistory;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127||(16===e||24===e)&&t>=64&&t<=95))return!1;if(h(e,t,a))return p(null,null,a),!0;var n=e<=23?1:2;o=t>=64&&t<=95?1===n?_[e]:l[e]:1===n?T[e]:S[e];var i=this.channels[n];return!!i&&(i.setPAC(this.interpretPAC(o,t)),p(e,t,a),this.currentChannel=n,!0)},t.interpretPAC=function(e,t){var o,a={color:null,italics:!1,indent:null,underline:!1,row:e};return o=t>95?t-96:t-64,a.underline=1==(1&o),o<=13?a.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(o/2)]:o<=15?(a.italics=!0,a.color="white"):a.indent=4*Math.floor((o-16)/2),a},t.parseChars=function(e,t){var o,n,i=null,s=null;if(e>=25?(o=2,s=e-8):(o=1,s=e),s>=17&&s<=19?(n=17===s?t+80:18===s?t+112:t+144,this.logger.log(a.INFO,"Special char '"+r(n)+"' in channel "+o),i=[n]):e>=32&&e<=127&&(i=0===t?[e]:[e,t]),i){var E=c(i);this.logger.log(a.DEBUG,"Char codes = "+E.join(",")),p(e,t,this.cmdHistory)}return i},t.parseBackgroundAttributes=function(e,t){var o;if(!((16===e||24===e)&&t>=32&&t<=47||(23===e||31===e)&&t>=45&&t<=47))return!1;var a={};16===e||24===e?(o=Math.floor((t-32)/2),a.background=u[o],t%2==1&&(a.background=a.background+"_semi")):45===t?a.background="transparent":(a.foreground="black",47===t&&(a.underline=!0));var n=e<=23?1:2;return this.channels[n].setBkgData(a),p(e,t,this.cmdHistory),!0},t.reset=function(){for(var e=0;e<Object.keys(this.channels).length;e++){var t=this.channels[e];t&&t.reset()}this.cmdHistory={a:null,b:null}},t.cueSplitAtTime=function(e){for(var t=0;t<this.channels.length;t++){var o=this.channels[t];o&&o.cueSplitAtTime(e)}},e})();function p(e,t,o){o.a=e,o.b=t}function h(e,t,o){return o.a===e&&o.b===t}t.default=m},"./src/utils/codecs.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"isCodecType",(function(){return n})),o.d(t,"isCodecSupportedInMp4",(function(){return i}));var a={audio:{a3ds:!0,"ac-3":!0,"ac-4":!0,alac:!0,alaw:!0,dra1:!0,"dts+":!0,"dts-":!0,dtsc:!0,dtse:!0,dtsh:!0,"ec-3":!0,enca:!0,g719:!0,g726:!0,m4ae:!0,mha1:!0,mha2:!0,mhm1:!0,mhm2:!0,mlpa:!0,mp4a:!0,"raw ":!0,Opus:!0,samr:!0,sawb:!0,sawp:!0,sevc:!0,sqcp:!0,ssmv:!0,twos:!0,ulaw:!0},video:{avc1:!0,avc2:!0,avc3:!0,avc4:!0,avcp:!0,av01:!0,drac:!0,dvav:!0,dvhe:!0,encv:!0,hev1:!0,hvc1:!0,mjp2:!0,mp4v:!0,mvc1:!0,mvc2:!0,mvc3:!0,mvc4:!0,resv:!0,rv60:!0,s263:!0,svc1:!0,svc2:!0,"vc-1":!0,vp08:!0,vp09:!0},text:{stpp:!0,wvtt:!0}};function n(e,t){var o=a[t];return!!o&&!0===o[e.slice(0,4)]}function i(e,t){return MediaSource.isTypeSupported((t||"video")+'/mp4;codecs="'+e+'"')}},"./src/utils/cues.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/utils/vttparser.ts"),n=o("./src/utils/webvtt-parser.ts"),i=o("./src/utils/texttrack-utils.ts"),r=/\s/,s={newCue:function(e,t,o,s){for(var E,_,T,l,S,u=[],d=self.VTTCue||self.TextTrackCue,c=0;c<s.rows.length;c++)if(T=!0,l=0,S="",!(E=s.rows[c]).isEmpty()){for(var A=0;A<E.chars.length;A++)r.test(E.chars[A].uchar)&&T?l++:(S+=E.chars[A].uchar,T=!1);E.cueStartTime=t,t===o&&(o+=1e-4),l>=16?l--:l++;var I=Object(a.fixLineBreaks)(S.trim()),O=Object(n.generateCueId)(t,o,I);e&&e.cues&&e.cues.getCueById(O)||((_=new d(t,o,I)).id=O,_.line=c+1,_.align="left",_.position=10+Math.min(80,10*Math.floor(8*l/32)),u.push(_))}return e&&u.length&&(u.sort((function(e,t){return"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line})),u.forEach((function(t){return Object(i.addCueToTrack)(e,t)}))),u}};t.default=s},"./src/utils/discontinuities.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"findFirstFragWithCC",(function(){return r})),o.d(t,"shouldAlignOnDiscontinuities",(function(){return s})),o.d(t,"findDiscontinuousReferenceFrag",(function(){return E})),o.d(t,"adjustSlidingStart",(function(){return T})),o.d(t,"alignStream",(function(){return l})),o.d(t,"alignPDT",(function(){return S})),o.d(t,"alignFragmentByPDTDelta",(function(){return u})),o.d(t,"alignMediaPlaylistByPDT",(function(){return d}));var a=o("./src/polyfills/number.ts"),n=o("./src/utils/logger.ts"),i=o("./src/controller/level-helper.ts");function r(e,t){for(var o=null,a=0,n=e.length;a<n;a++){var i=e[a];if(i&&i.cc===t){o=i;break}}return o}function s(e,t,o){return!(!t.details||!(o.endCC>o.startCC||e&&e.cc<o.startCC))}function E(e,t){var o=e.fragments,a=t.fragments;if(a.length&&o.length){var i=r(o,a[0].cc);if(i&&(!i||i.startPTS))return i;n.logger.log("No frag in previous level to align on")}else n.logger.log("No fragments to align")}function _(e,t){if(e){var o=e.start+t;e.start=e.startPTS=o,e.endPTS=o+e.duration}}function T(e,t){for(var o=t.fragments,a=0,n=o.length;a<n;a++)_(o[a],e);t.fragmentHint&&_(t.fragmentHint,e),t.alignedSliding=!0}function l(e,t,o){t&&((function(e,t,o){if(s(e,o,t)){var i=E(o.details,t);i&&Object(a.isFiniteNumber)(i.start)&&(n.logger.log("Adjusting PTS using last level due to CC increase within current level "+t.url),T(i.start,t))}})(e,o,t),!o.alignedSliding&&t.details&&S(o,t.details),o.alignedSliding||!t.details||o.skippedSegments||Object(i.adjustSliding)(t.details,o))}function S(e,t){if(t.fragments.length&&e.hasProgramDateTime&&t.hasProgramDateTime){var o=t.fragments[0].programDateTime,i=e.fragments[0].programDateTime,r=(i-o)/1e3+t.fragments[0].start;r&&Object(a.isFiniteNumber)(r)&&(n.logger.log("Adjusting PTS using programDateTime delta "+(i-o)+"ms, sliding:"+r.toFixed(3)+" "+e.url+" "),T(r,e))}}function u(e,t){var o=e.programDateTime;if(o){var a=(o-t)/1e3;e.start=e.startPTS=a,e.endPTS=a+e.duration}}function d(e,t){if(t.fragments.length&&e.hasProgramDateTime&&t.hasProgramDateTime){var o=t.fragments[0].programDateTime-1e3*t.fragments[0].start;e.fragments.forEach((function(e){u(e,o)})),e.fragmentHint&&u(e.fragmentHint,o),e.alignedSliding=!0}}},"./src/utils/ewma-bandwidth-estimator.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/utils/ewma.ts"),n=(function(){function e(e,t,o){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultEstimate_=o,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new a.default(e),this.fast_=new a.default(t)}var t=e.prototype;return t.update=function(e,t){var o=this.slow_,n=this.fast_;this.slow_.halfLife!==e&&(this.slow_=new a.default(e,o.getEstimate(),o.getTotalWeight())),this.fast_.halfLife!==t&&(this.fast_=new a.default(t,n.getEstimate(),n.getTotalWeight()))},t.sample=function(e,t){var o=(e=Math.max(e,this.minDelayMs_))/1e3,a=8*t/o;this.fast_.sample(o,a),this.slow_.sample(o,a)},t.canEstimate=function(){var e=this.fast_;return e&&e.getTotalWeight()>=this.minWeight_},t.getEstimate=function(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_},t.destroy=function(){},e})();t.default=n},"./src/utils/ewma.ts":function(e,t,o){"use strict";o.r(t);var a=(function(){function e(e,t,o){void 0===t&&(t=0),void 0===o&&(o=0),this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=e,this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=t,this.totalWeight_=o}var t=e.prototype;return t.sample=function(e,t){var o=Math.pow(this.alpha_,e);this.estimate_=t*(1-o)+o*this.estimate_,this.totalWeight_+=e},t.getTotalWeight=function(){return this.totalWeight_},t.getEstimate=function(){if(this.alpha_){var e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_},e})();t.default=a},"./src/utils/fetch-loader.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"fetchSupported",(function(){return S}));var a=o("./src/polyfills/number.ts"),n=o("./src/loader/load-stats.ts"),i=o("./src/demux/chunk-cache.ts");function r(e){var t="function"==typeof Map?new Map:void 0;return r=function(e){if(null===e||(o=e,-1===Function.toString.call(o).indexOf("[native code]")))return e;var o;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,a)}function a(){return s(e,arguments,T(this).constructor)}return a.prototype=Object.create(e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),_(a,e)},r(e)}function s(e,t,o){return s=E()?Reflect.construct.bind():function(e,t,o){var a=[null];a.push.apply(a,t);var n=new(Function.bind.apply(e,a));return o&&_(n,o.prototype),n},s.apply(null,arguments)}function E(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _(e,t){return _=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},_(e,t)}function T(e){return T=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},T(e)}function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},l.apply(this,arguments)}function S(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1}var u=(function(){function e(e){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=void 0,this.response=void 0,this.controller=void 0,this.context=void 0,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=e.fetchSetup||d,this.controller=new self.AbortController,this.stats=new n.LoadStats}var t=e.prototype;return t.destroy=function(){this.loader=this.callbacks=null,this.abortInternal()},t.abortInternal=function(){var e=this.response;e&&e.ok||(this.stats.aborted=!0,this.controller.abort())},t.abort=function(){var e;this.abortInternal(),null!==(e=this.callbacks)&&void 0!==e&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)},t.load=function(e,t,o){var n=this,i=this.stats;if(i.loading.start)throw new Error("Loader can only be used once.");i.loading.start=self.performance.now();var r=(function(e,t){var o={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(l({},e.headers))};return e.rangeEnd&&o.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1)),o})(e,this.controller.signal),s=o.onProgress,E="arraybuffer"===e.responseType,_=E?"byteLength":"length";this.context=e,this.config=t,this.callbacks=o,this.request=this.fetchSetup(e,r),self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout((function(){n.abortInternal(),o.onTimeout(i,e,n.response)}),t.timeout),self.fetch(this.request).then((function(o){if(n.response=n.loader=o,!o.ok){var r=o.status,_=o.statusText;throw new c(_||"fetch, bad network response",r,o)}return i.loading.first=Math.max(self.performance.now(),i.loading.start),i.total=parseInt(o.headers.get("Content-Length")||"0"),s&&Object(a.isFiniteNumber)(t.highWaterMark)?n.loadProgressively(o,i,e,t.highWaterMark,s):E?o.arrayBuffer():o.text()})).then((function(r){var E=n.response;self.clearTimeout(n.requestTimeout),i.loading.end=Math.max(self.performance.now(),i.loading.first),i.loaded=i.total=r[_];var T={url:E.url,data:r};s&&!Object(a.isFiniteNumber)(t.highWaterMark)&&s(i,e,r,E),o.onSuccess(T,i,e,E)})).catch((function(t){if(self.clearTimeout(n.requestTimeout),!i.aborted){var a=t&&t.code||0,r=t?t.message:null;o.onError({code:a,text:r},e,t?t.details:null)}}))},t.getCacheAge=function(){var e=null;if(this.response){var t=this.response.headers.get("age");e=t?parseFloat(t):null}return e},t.loadProgressively=function(e,t,o,a,n){void 0===a&&(a=0);var r=new i.default,s=e.body.getReader();return(function i(){return s.read().then((function(s){if(s.done)return r.dataLength&&n(t,o,r.flush(),e),Promise.resolve(new ArrayBuffer(0));var E=s.value,_=E.length;return t.loaded+=_,_<a||r.dataLength?(r.push(E),r.dataLength>=a&&n(t,o,r.flush(),e)):n(t,o,E,e),i()})).catch((function(){return Promise.reject()}))})()},e})();function d(e,t){return new self.Request(e.url,t)}var c=(function(e){var t,o;function a(t,o,a){var n;return(n=e.call(this,t)||this).code=void 0,n.details=void 0,n.code=o,n.details=a,n}return o=e,(t=a).prototype=Object.create(o.prototype),t.prototype.constructor=t,_(t,o),a})(r(Error));t.default=u},"./src/utils/imsc1-ttml-parser.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"IMSC1_CODEC",(function(){return T})),o.d(t,"parseIMSC1",(function(){return d}));var a=o("./src/utils/mp4-tools.ts"),n=o("./src/utils/vttparser.ts"),i=o("./src/utils/vttcue.ts"),r=o("./src/demux/id3.ts"),s=o("./src/utils/timescale-conversion.ts"),E=o("./src/utils/webvtt-parser.ts");function _(){return _=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},_.apply(this,arguments)}var T="stpp.ttml.im1t",l=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,S=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,u={left:"start",center:"center",right:"end",start:"start",end:"end"};function d(e,t,o,n,T){var l=Object(a.findBox)(new Uint8Array(e),["mdat"]);if(0!==l.length){var S=l.map((function(e){return Object(r.utf8ArrayToStr)(e)})),d=Object(s.toTimescaleFromScale)(t,1,o);try{S.forEach((function(e){return n((function(e,t){var o=(new DOMParser).parseFromString(e,"text/xml").getElementsByTagName("tt")[0];if(!o)throw new Error("Invalid ttml");var a={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(a).reduce((function(e,t){return e[t]=o.getAttribute("ttp:"+t)||a[t],e}),{}),r="preserve"!==o.getAttribute("xml:space"),s=A(c(o,"styling","style")),T=A(c(o,"layout","region")),l=c(o,"body","[begin]");return[].map.call(l,(function(e){var o=I(e,r);if(!o||!e.hasAttribute("begin"))return null;var a=R(e.getAttribute("begin"),n),l=R(e.getAttribute("dur"),n),S=R(e.getAttribute("end"),n);if(null===a)throw N(e);if(null===S){if(null===l)throw N(e);S=a+l}var d=new i.default(a-t,S-t,o);d.id=Object(E.generateCueId)(d.startTime,d.endTime,d.text);var c=T[e.getAttribute("region")],A=s[e.getAttribute("style")];d.position=10,d.size=80;var m=(function(e,t,o){var a="http://www.w3.org/ns/ttml#styling",n=null,i=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],r=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;return r&&o.hasOwnProperty(r)&&(n=o[r]),i.reduce((function(o,i){var r=O(t,a,i)||O(e,a,i)||O(n,a,i);return r&&(o[i]=r),o}),{})})(c,A,s),p=m.textAlign;if(p){var h=u[p];h&&(d.lineAlign=h),d.align=p}return _(d,m),d})).filter((function(e){return null!==e}))})(e,d))}))}catch(e){T(e)}}else T(new Error("Could not parse IMSC1 mdat"))}function c(e,t,o){var a=e.getElementsByTagName(t)[0];return a?[].slice.call(a.querySelectorAll(o)):[]}function A(e){return e.reduce((function(e,t){var o=t.getAttribute("xml:id");return o&&(e[o]=t),e}),{})}function I(e,t){return[].slice.call(e.childNodes).reduce((function(e,o,a){var n;return"br"===o.nodeName&&a?e+"\n":null!==(n=o.childNodes)&&void 0!==n&&n.length?I(o,t):t?e+o.textContent.trim().replace(/\s+/g," "):e+o.textContent}),"")}function O(e,t,o){return e&&e.hasAttributeNS(t,o)?e.getAttributeNS(t,o):null}function N(e){return new Error("Could not parse ttml timestamp "+e)}function R(e,t){if(!e)return null;var o=Object(n.parseTimeStamp)(e);return null===o&&(l.test(e)?o=(function(e,t){var o=l.exec(e),a=(0|o[4])+(0|o[5])/t.subFrameRate;return 3600*(0|o[1])+60*(0|o[2])+(0|o[3])+a/t.frameRate})(e,t):S.test(e)&&(o=(function(e,t){var o=S.exec(e),a=Number(o[1]);switch(o[2]){case"h":return 3600*a;case"m":return 60*a;case"ms":return 1e3*a;case"f":return a/t.frameRate;case"t":return a/t.tickRate}return a})(e,t))),o}},"./src/utils/logger.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"enableLogs",(function(){return s})),o.d(t,"logger",(function(){return E}));var a=function(){},n={trace:a,debug:a,log:a,warn:a,info:a,error:a},i=n;function r(e){var t=self.console[e];return t?t.bind(self.console,"["+e+"] >"):a}function s(e){if(self.console&&!0===e||"object"==typeof e){!(function(e){for(var t=arguments.length,o=new Array(t>1?t-1:0),a=1;a<t;a++)o[a-1]=arguments[a];o.forEach((function(t){i[t]=e[t]?e[t].bind(e):r(t)}))})(e,"debug","log","info","warn","error");try{i.log()}catch(e){i=n}}else i=n}var E=n},"./src/utils/mediakeys-helper.ts":function(e,t,o){"use strict";var a;o.r(t),o.d(t,"KeySystems",(function(){return a})),o.d(t,"requestMediaKeySystemAccess",(function(){return n})),(function(e){e.WIDEVINE="com.widevine.alpha",e.PLAYREADY="com.microsoft.playready"})(a||(a={}));var n="undefined"!=typeof self&&self.navigator&&self.navigator.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null},"./src/utils/mediasource-helper.ts":function(e,t,o){"use strict";function a(){return self.MediaSource||self.WebKitMediaSource}o.r(t),o.d(t,"getMediaSource",(function(){return a}))},"./src/utils/mp4-tools.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"RemuxerTrackIdConfig",(function(){return E})),o.d(t,"bin2str",(function(){return _})),o.d(t,"readUint16",(function(){return T})),o.d(t,"readUint32",(function(){return l})),o.d(t,"readSint32",(function(){return S})),o.d(t,"writeUint32",(function(){return u})),o.d(t,"findBox",(function(){return d})),o.d(t,"parseSegmentIndex",(function(){return c})),o.d(t,"parseInitSegment",(function(){return A})),o.d(t,"getStartDTS",(function(){return I})),o.d(t,"getDuration",(function(){return O})),o.d(t,"computeRawDurationFromSamples",(function(){return N})),o.d(t,"offsetStartDTS",(function(){return R})),o.d(t,"segmentValidRange",(function(){return m})),o.d(t,"appendUint8Array",(function(){return p})),o.d(t,"parseSamples",(function(){return h})),o.d(t,"parseSEIMessageFromNALu",(function(){return f})),o.d(t,"parseEmsg",(function(){return C}));var a=o("./src/utils/typed-array.ts"),n=o("./src/loader/fragment.ts"),i=o("./src/demux/id3.ts"),r=Math.pow(2,32)-1,s=[].push,E={video:1,audio:2,id3:3,text:4};function _(e){return String.fromCharCode.apply(null,e)}function T(e,t){var o=e[t]<<8|e[t+1];return o<0?65536+o:o}function l(e,t){var o=S(e,t);return o<0?4294967296+o:o}function S(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]}function u(e,t,o){e[t]=o>>24,e[t+1]=o>>16&255,e[t+2]=o>>8&255,e[t+3]=255&o}function d(e,t){var o=[];if(!t.length)return o;for(var a=e.byteLength,n=0;n<a;){var i=l(e,n),r=i>1?n+i:a;if(_(e.subarray(n+4,n+8))===t[0])if(1===t.length)o.push(e.subarray(n+8,r));else{var E=d(e.subarray(n+8,r),t.slice(1));E.length&&s.apply(o,E)}n=r}return o}function c(e){var t=[],o=e[0],a=8,n=l(e,a);a+=4,a+=0===o?8:16,a+=2;var i=e.length+0,r=T(e,a);a+=2;for(var s=0;s<r;s++){var E=a,_=l(e,E);E+=4;var S=2147483647&_;if(1==(2147483648&_)>>>31)return console.warn("SIDX has hierarchical references (not supported)"),null;var u=l(e,E);E+=4,t.push({referenceSize:S,subsegmentDuration:u,info:{duration:u/n,start:i,end:i+S-1}}),i+=S,a=E+=4}return{earliestPresentationTime:0,timescale:n,version:o,referencesCount:r,references:t}}function A(e){for(var t=[],o=d(e,["moov","trak"]),a=0;a<o.length;a++){var i=o[a],r=d(i,["tkhd"])[0];if(r){var s=r[0],E=0===s?12:20,T=l(r,E),S=d(i,["mdia","mdhd"])[0];if(S){var u=l(S,E=0===(s=S[0])?12:20),c=d(i,["mdia","hdlr"])[0];if(c){var A=_(c.subarray(8,12)),I={soun:n.ElementaryStreamTypes.AUDIO,vide:n.ElementaryStreamTypes.VIDEO}[A];if(I){var O=d(i,["mdia","minf","stbl","stsd"])[0],N=void 0;O&&(N=_(O.subarray(12,16))),t[T]={timescale:u,type:I},t[I]={timescale:u,id:T,codec:N}}}}}}return d(e,["moov","mvex","trex"]).forEach((function(e){var o=l(e,4),a=t[o];a&&(a.default={duration:l(e,12),flags:l(e,20)})})),t}function I(e,t){return d(t,["moof","traf"]).reduce((function(t,o){var a=d(o,["tfdt"])[0],n=a[0],i=d(o,["tfhd"]).reduce((function(t,o){var i=l(o,4),r=e[i];if(r){var s=l(a,4);1===n&&(s*=Math.pow(2,32),s+=l(a,8));var E=s/(r.timescale||9e4);if(isFinite(E)&&(null===t||E<t))return E}return t}),null);return null!==i&&isFinite(i)&&(null===t||i<t)?i:t}),null)||0}function O(e,t){for(var o=0,a=d(e,["sidx"]),i=0;i<a.length;i++){var r=c(a[i]);null!=r&&r.references&&(o+=r.references.reduce((function(e,t){return e+t.info.duration||0}),0))}if(o)return o;for(var s=0,E=0,_=0,T=d(e,["moof","traf"]),S=0;S<T.length;S++){var u=T[S],A=d(u,["tfhd"])[0],I=t[l(A,4)];if(I){var O=I.default,R=l(A,0)|(null==O?void 0:O.flags),m=null==O?void 0:O.duration;8&R&&(m=l(A,2&R?12:8));for(var p=I.timescale||9e4,h=d(u,["trun"]),L=0;L<h.length;L++)!(s=N(h[L]))&&m&&(s=m*l(h[L],4)),I.type===n.ElementaryStreamTypes.VIDEO?E+=s/p:I.type===n.ElementaryStreamTypes.AUDIO&&(_+=s/p)}}return E||_}function N(e){var t=l(e,0),o=8;1&t&&(o+=4),4&t&&(o+=4);for(var a=0,n=l(e,4),i=0;i<n;i++)256&t&&(a+=l(e,o),o+=4),512&t&&(o+=4),1024&t&&(o+=4),2048&t&&(o+=4);return a}function R(e,t,o){d(t,["moof","traf"]).forEach((function(t){d(t,["tfhd"]).forEach((function(a){var n=l(a,4),i=e[n];if(i){var s=i.timescale||9e4;d(t,["tfdt"]).forEach((function(e){var t=e[0],a=l(e,4);if(0===t)a-=o*s,u(e,4,a=Math.max(a,0));else{a*=Math.pow(2,32),a+=l(e,8),a-=o*s,a=Math.max(a,0);var n=Math.floor(a/(r+1)),i=Math.floor(a%(r+1));u(e,4,n),u(e,8,i)}}))}}))}))}function m(e){var t={valid:null,remainder:null},o=d(e,["moof"]);if(!o)return t;if(o.length<2)return t.remainder=e,t;var n=o[o.length-1];return t.valid=Object(a.sliceUint8)(e,0,n.byteOffset-8),t.remainder=Object(a.sliceUint8)(e,n.byteOffset-8),t}function p(e,t){var o=new Uint8Array(e.length+t.length);return o.set(e),o.set(t,e.length),o}function h(e,t){var o=[],a=t.samples,i=t.timescale,r=t.id,s=!1;return d(a,["moof"]).map((function(E){var _=E.byteOffset-8;d(E,["traf"]).map((function(E){var T=d(E,["tfdt"]).map((function(e){var t=e[0],o=l(e,4);return 1===t&&(o*=Math.pow(2,32),o+=l(e,8)),o/i}))[0];return void 0!==T&&(e=T),d(E,["tfhd"]).map((function(T){var u=l(T,4),c=16777215&l(T,0),A=0,I=0!=(16&c),O=0,N=0!=(32&c),R=8;u===r&&(0!=(1&c)&&(R+=8),0!=(2&c)&&(R+=4),0!=(8&c)&&(A=l(T,R),R+=4),I&&(O=l(T,R),R+=4),N&&(R+=4),"video"===t.type&&(s=(function(e){if(!e)return!1;var t=e.indexOf("."),o=t<0?e:e.substring(0,t);return"hvc1"===o||"hev1"===o||"dvh1"===o||"dvhe"===o})(t.codec)),d(E,["trun"]).map((function(r){var E=r[0],T=16777215&l(r,0),u=0!=(1&T),d=0,c=0!=(4&T),I=0!=(256&T),N=0,R=0!=(512&T),m=0,p=0!=(1024&T),h=0!=(2048&T),C=0,D=l(r,4),g=8;u&&(d=l(r,g),g+=4),c&&(g+=4);for(var v=d+_,P=0;P<D;P++){if(I?(N=l(r,g),g+=4):N=A,R?(m=l(r,g),g+=4):m=O,p&&(g+=4),h&&(C=0===E?l(r,g):S(r,g),g+=4),t.type===n.ElementaryStreamTypes.VIDEO)for(var y=0;y<m;){var B=l(a,v),b=31&a[v+=4];L(s,b)&&f(a.subarray(v,v+B),e+C/i,o),v+=B,y+=B+4}e+=N/i}})))}))}))})),o}function L(e,t){return e?39===t||40===t:6===t}function f(e,t,o){var a=(function(e){for(var t=e.byteLength,o=[],a=1;a<t-2;)0===e[a]&&0===e[a+1]&&3===e[a+2]?(o.push(a+2),a+=2):a++;if(0===o.length)return e;var n=t-o.length,i=new Uint8Array(n),r=0;for(a=0;a<n;r++,a++)r===o[0]&&(r++,o.shift()),i[a]=e[r];return i})(e),n=0;n++;for(var r=0,s=0,E=!1,_=0;n<a.length;){r=0;do{if(n>=a.length)break;r+=_=a[n++]}while(255===_);s=0;do{if(n>=a.length)break;s+=_=a[n++]}while(255===_);var S=a.length-n;if(!E&&4===r&&n<a.length){if(E=!0,181===a[n++]){var u=T(a,n);if(n+=2,49===u){var d=l(a,n);if(n+=4,1195456820===d){var c=a[n++];if(3===c){var A=a[n++],I=64&A,O=I?2+3*(31&A):0,N=new Uint8Array(O);if(I){N[0]=A;for(var R=1;R<O;R++)N[R]=a[n++]}o.push({type:c,payloadType:r,pts:t,bytes:N})}}}}}else if(5===r&&s<S){if(E=!0,s>16){for(var m=[],p=0;p<16;p++){var h=a[n++].toString(16);m.push(1==h.length?"0"+h:h),3!==p&&5!==p&&7!==p&&9!==p||m.push("-")}for(var L=s-16,f=new Uint8Array(L),C=0;C<L;C++)f[C]=a[n++];o.push({payloadType:r,pts:t,uuid:m.join(""),userData:Object(i.utf8ArrayToStr)(f),userDataBytes:f})}}else if(s<S)n+=s;else if(s>S)break}}function C(e){var t=e[0],o="",a="",n=0,i=0,r=0,s=0,E=0,T=0;if(0===t){for(;"\0"!==_(e.subarray(T,T+1));)o+=_(e.subarray(T,T+1)),T+=1;for(o+=_(e.subarray(T,T+1)),T+=1;"\0"!==_(e.subarray(T,T+1));)a+=_(e.subarray(T,T+1)),T+=1;a+=_(e.subarray(T,T+1)),T+=1,n=l(e,12),i=l(e,16),s=l(e,20),E=l(e,24),T=28}else if(1===t){n=l(e,T+=4);var S=l(e,T+=4),u=l(e,T+=4);for(T+=4,r=Math.pow(2,32)*S+u,Number.isSafeInteger(r)||(r=Number.MAX_SAFE_INTEGER,console.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),s=l(e,T),E=l(e,T+=4),T+=4;"\0"!==_(e.subarray(T,T+1));)o+=_(e.subarray(T,T+1)),T+=1;for(o+=_(e.subarray(T,T+1)),T+=1;"\0"!==_(e.subarray(T,T+1));)a+=_(e.subarray(T,T+1)),T+=1;a+=_(e.subarray(T,T+1)),T+=1}return{schemeIdUri:o,value:a,timeScale:n,presentationTime:r,presentationTimeDelta:i,eventDuration:s,id:E,payload:e.subarray(T,e.byteLength)}}},"./src/utils/output-filter.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return a}));var a=(function(){function e(e,t){this.timelineController=void 0,this.cueRanges=[],this.trackName=void 0,this.startTime=null,this.endTime=null,this.screen=null,this.timelineController=e,this.trackName=t}var t=e.prototype;return t.dispatchCue=function(){null!==this.startTime&&(this.timelineController.addCues(this.trackName,this.startTime,this.endTime,this.screen,this.cueRanges),this.startTime=null)},t.newCue=function(e,t,o){(null===this.startTime||this.startTime>e)&&(this.startTime=e),this.endTime=t,this.screen=o,this.timelineController.createCaptionsTrack(this.trackName)},t.reset=function(){this.cueRanges=[],this.startTime=null},e})()},"./src/utils/texttrack-utils.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"sendAddTrackEvent",(function(){return n})),o.d(t,"addCueToTrack",(function(){return i})),o.d(t,"clearCurrentCues",(function(){return r})),o.d(t,"removeCuesInRange",(function(){return s})),o.d(t,"getCuesInRange",(function(){return E}));var a=o("./src/utils/logger.ts");function n(e,t){var o;try{o=new Event("addtrack")}catch(e){(o=document.createEvent("Event")).initEvent("addtrack",!1,!1)}o.track=e,t.dispatchEvent(o)}function i(e,t){var o=e.mode;if("disabled"===o&&(e.mode="hidden"),e.cues&&!e.cues.getCueById(t.id))try{if(e.addCue(t),!e.cues.getCueById(t.id))throw new Error("addCue is failed for: "+t)}catch(o){a.logger.debug("[texttrack-utils]: "+o);var n=new self.TextTrackCue(t.startTime,t.endTime,t.text);n.id=t.id,e.addCue(n)}"disabled"===o&&(e.mode=o)}function r(e){var t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(var o=e.cues.length;o--;)e.removeCue(e.cues[o]);"disabled"===t&&(e.mode=t)}function s(e,t,o,a){var n=e.mode;if("disabled"===n&&(e.mode="hidden"),e.cues&&e.cues.length>0)for(var i=E(e.cues,t,o),r=0;r<i.length;r++)a&&!a(i[r])||e.removeCue(i[r]);"disabled"===n&&(e.mode=n)}function E(e,t,o){var a=[],n=(function(e,t){if(t<e[0].startTime)return 0;var o=e.length-1;if(t>e[o].endTime)return-1;for(var a=0,n=o;a<=n;){var i=Math.floor((n+a)/2);if(t<e[i].startTime)n=i-1;else{if(!(t>e[i].startTime&&a<o))return i;a=i+1}}return e[a].startTime-t<t-e[n].startTime?a:n})(e,t);if(n>-1)for(var i=n,r=e.length;i<r;i++){var s=e[i];if(s.startTime>=t&&s.endTime<=o)a.push(s);else if(s.startTime>o)return a}return a}},"./src/utils/time-ranges.ts":function(e,t,o){"use strict";o.r(t),t.default={toString:function(e){for(var t="",o=e.length,a=0;a<o;a++)t+="["+e.start(a).toFixed(3)+","+e.end(a).toFixed(3)+"]";return t}}},"./src/utils/timescale-conversion.ts":function(e,t,o){"use strict";function a(e,t,o,a){void 0===o&&(o=1),void 0===a&&(a=!1);var n=e*t*o;return a?Math.round(n):n}function n(e,t,o,n){return void 0===o&&(o=1),void 0===n&&(n=!1),a(e,t,1/o,n)}function i(e,t){return void 0===t&&(t=!1),a(e,1e3,1/9e4,t)}function r(e,t){return void 0===t&&(t=1),a(e,9e4,1/t)}o.r(t),o.d(t,"toTimescaleFromBase",(function(){return a})),o.d(t,"toTimescaleFromScale",(function(){return n})),o.d(t,"toMsFromMpegTsClock",(function(){return i})),o.d(t,"toMpegTsClockFromTimescale",(function(){return r}))},"./src/utils/typed-array.ts":function(e,t,o){"use strict";function a(e,t,o){return Uint8Array.prototype.slice?e.slice(t,o):new Uint8Array(Array.prototype.slice.call(e,t,o))}o.r(t),o.d(t,"sliceUint8",(function(){return a}))},"./src/utils/vttcue.ts":function(e,t,o){"use strict";o.r(t),t.default=(function(){if("undefined"!=typeof self&&self.VTTCue)return self.VTTCue;var e=["","lr","rl"],t=["start","middle","end","left","right"];function o(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;var o=t.toLowerCase();return!!~e.indexOf(o)&&o}function a(e){return o(t,e)}function n(e){for(var t=arguments.length,o=new Array(t>1?t-1:0),a=1;a<t;a++)o[a-1]=arguments[a];for(var n=1;n<arguments.length;n++){var i=arguments[n];for(var r in i)e[r]=i[r]}return e}function i(t,i,r){var s=this,E={enumerable:!0};s.hasBeenReset=!1;var _="",T=!1,l=t,S=i,u=r,d=null,c="",A=!0,I="auto",O="start",N=50,R="middle",m=50,p="middle";Object.defineProperty(s,"id",n({},E,{get:function(){return _},set:function(e){_=""+e}})),Object.defineProperty(s,"pauseOnExit",n({},E,{get:function(){return T},set:function(e){T=!!e}})),Object.defineProperty(s,"startTime",n({},E,{get:function(){return l},set:function(e){if("number"!=typeof e)throw new TypeError("Start time must be set to a number.");l=e,this.hasBeenReset=!0}})),Object.defineProperty(s,"endTime",n({},E,{get:function(){return S},set:function(e){if("number"!=typeof e)throw new TypeError("End time must be set to a number.");S=e,this.hasBeenReset=!0}})),Object.defineProperty(s,"text",n({},E,{get:function(){return u},set:function(e){u=""+e,this.hasBeenReset=!0}})),Object.defineProperty(s,"region",n({},E,{get:function(){return d},set:function(e){d=e,this.hasBeenReset=!0}})),Object.defineProperty(s,"vertical",n({},E,{get:function(){return c},set:function(t){var a=(function(t){return o(e,t)})(t);if(!1===a)throw new SyntaxError("An invalid or illegal string was specified.");c=a,this.hasBeenReset=!0}})),Object.defineProperty(s,"snapToLines",n({},E,{get:function(){return A},set:function(e){A=!!e,this.hasBeenReset=!0}})),Object.defineProperty(s,"line",n({},E,{get:function(){return I},set:function(e){if("number"!=typeof e&&"auto"!==e)throw new SyntaxError("An invalid number or illegal string was specified.");I=e,this.hasBeenReset=!0}})),Object.defineProperty(s,"lineAlign",n({},E,{get:function(){return O},set:function(e){var t=a(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");O=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"position",n({},E,{get:function(){return N},set:function(e){if(e<0||e>100)throw new Error("Position must be between 0 and 100.");N=e,this.hasBeenReset=!0}})),Object.defineProperty(s,"positionAlign",n({},E,{get:function(){return R},set:function(e){var t=a(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");R=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"size",n({},E,{get:function(){return m},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");m=e,this.hasBeenReset=!0}})),Object.defineProperty(s,"align",n({},E,{get:function(){return p},set:function(e){var t=a(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");p=t,this.hasBeenReset=!0}})),s.displayState=void 0}return i.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},i})()},"./src/utils/vttparser.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"parseTimeStamp",(function(){return i})),o.d(t,"fixLineBreaks",(function(){return l})),o.d(t,"VTTParser",(function(){return S}));var a=o("./src/utils/vttcue.ts"),n=(function(){function e(){}return e.prototype.decode=function(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))},e})();function i(e){function t(e,t,o,a){return 3600*(0|e)+60*(0|t)+(0|o)+parseFloat(a||0)}var o=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return o?parseFloat(o[2])>59?t(o[2],o[3],0,o[4]):t(o[1],o[2],o[3],o[4]):null}var r=(function(){function e(){this.values=Object.create(null)}var t=e.prototype;return t.set=function(e,t){this.get(e)||""===t||(this.values[e]=t)},t.get=function(e,t,o){return o?this.has(e)?this.values[e]:t[o]:this.has(e)?this.values[e]:t},t.has=function(e){return e in this.values},t.alt=function(e,t,o){for(var a=0;a<o.length;++a)if(t===o[a]){this.set(e,t);break}},t.integer=function(e,t){/^-?\d+$/.test(t)&&this.set(e,parseInt(t,10))},t.percent=function(e,t){if(/^([\d]{1,3})(\.[\d]*)?%$/.test(t)){var o=parseFloat(t);if(o>=0&&o<=100)return this.set(e,o),!0}return!1},e})();function s(e,t,o,a){var n=a?e.split(a):[e];for(var i in n)if("string"==typeof n[i]){var r=n[i].split(o);2===r.length&&t(r[0],r[1])}}var E=new a.default(0,0,""),_="middle"===E.align?"middle":"center";function T(e,t,o){var a=e;function n(){var t=i(e);if(null===t)throw new Error("Malformed timestamp: "+a);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function T(){e=e.replace(/^\s+/,"")}if(T(),t.startTime=n(),T(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+a);e=e.slice(3),T(),t.endTime=n(),T(),(function(e,t){var a=new r;s(e,(function(e,t){var n;switch(e){case"region":for(var i=o.length-1;i>=0;i--)if(o[i].id===t){a.set(e,o[i].region);break}break;case"vertical":a.alt(e,t,["rl","lr"]);break;case"line":n=t.split(","),a.integer(e,n[0]),a.percent(e,n[0])&&a.set("snapToLines",!1),a.alt(e,n[0],["auto"]),2===n.length&&a.alt("lineAlign",n[1],["start",_,"end"]);break;case"position":n=t.split(","),a.percent(e,n[0]),2===n.length&&a.alt("positionAlign",n[1],["start",_,"end","line-left","line-right","auto"]);break;case"size":a.percent(e,t);break;case"align":a.alt(e,t,["start",_,"end","left","right"])}}),/:/,/\s/),t.region=a.get("region",null),t.vertical=a.get("vertical","");var n=a.get("line","auto");"auto"===n&&-1===E.line&&(n=-1),t.line=n,t.lineAlign=a.get("lineAlign","start"),t.snapToLines=a.get("snapToLines",!0),t.size=a.get("size",100),t.align=a.get("align",_);var i=a.get("position","auto");"auto"===i&&50===E.position&&(i="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=i})(e,t)}function l(e){return e.replace(/<br(?: \/)?>/gi,"\n")}var S=(function(){function e(){this.state="INITIAL",this.buffer="",this.decoder=new n,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}var t=e.prototype;return t.parse=function(e){var t=this;function o(){var e=t.buffer,o=0;for(e=l(e);o<e.length&&"\r"!==e[o]&&"\n"!==e[o];)++o;var a=e.slice(0,o);return"\r"===e[o]&&++o,"\n"===e[o]&&++o,t.buffer=e.slice(o),a}e&&(t.buffer+=t.decoder.decode(e,{stream:!0}));try{var n="";if("INITIAL"===t.state){if(!/\r\n|\n/.test(t.buffer))return this;var i=(n=o()).match(/^()?WEBVTT([ \t].*)?$/);if(!i||!i[0])throw new Error("Malformed WebVTT signature.");t.state="HEADER"}for(var r=!1;t.buffer;){if(!/\r\n|\n/.test(t.buffer))return this;switch(r?r=!1:n=o(),t.state){case"HEADER":/:/.test(n)?s(n,(function(e,t){}),/:/):n||(t.state="ID");continue;case"NOTE":n||(t.state="ID");continue;case"ID":if(/^NOTE($|[ \t])/.test(n)){t.state="NOTE";break}if(!n)continue;if(t.cue=new a.default(0,0,""),t.state="CUE",-1===n.indexOf("--\x3e")){t.cue.id=n;continue}case"CUE":if(!t.cue){t.state="BADCUE";continue}try{T(n,t.cue,t.regionList)}catch(e){t.cue=null,t.state="BADCUE";continue}t.state="CUETEXT";continue;case"CUETEXT":var E=-1!==n.indexOf("--\x3e");if(!n||E&&(r=!0)){t.oncue&&t.cue&&t.oncue(t.cue),t.cue=null,t.state="ID";continue}if(null===t.cue)continue;t.cue.text&&(t.cue.text+="\n"),t.cue.text+=n;continue;case"BADCUE":n||(t.state="ID")}}}catch(e){"CUETEXT"===t.state&&t.cue&&t.oncue&&t.oncue(t.cue),t.cue=null,t.state="INITIAL"===t.state?"BADWEBVTT":"BADCUE"}return this},t.flush=function(){var e=this;try{if((e.cue||"HEADER"===e.state)&&(e.buffer+="\n\n",e.parse()),"INITIAL"===e.state||"BADWEBVTT"===e.state)throw new Error("Malformed WebVTT signature.")}catch(t){e.onparsingerror&&e.onparsingerror(t)}return e.onflush&&e.onflush(),this},e})()},"./src/utils/webvtt-parser.ts":function(e,t,o){"use strict";o.r(t),o.d(t,"generateCueId",(function(){return l})),o.d(t,"parseWebVTT",(function(){return S}));var a=o("./src/polyfills/number.ts"),n=o("./src/utils/vttparser.ts"),i=o("./src/demux/id3.ts"),r=o("./src/utils/timescale-conversion.ts"),s=o("./src/remux/mp4-remuxer.ts"),E=/\r\n|\n\r|\n|\r/g,_=function(e,t,o){return void 0===o&&(o=0),e.slice(o,o+t.length)===t},T=function(e){for(var t=5381,o=e.length;o;)t=33*t^e.charCodeAt(--o);return(t>>>0).toString()};function l(e,t,o){return T(e.toString())+T(t.toString())+T(o)}function S(e,t,o,T,S,u,d,c){var A,I=new n.VTTParser,O=Object(i.utf8ArrayToStr)(new Uint8Array(e)).trim().replace(E,"\n").split("\n"),N=[],R=Object(r.toMpegTsClockFromTimescale)(t,o),m="00:00.000",p=0,h=0,L=!0;I.oncue=function(e){var t=T[S],o=T.ccOffset,a=(p-R)/9e4;null!=t&&t.new&&(void 0!==h?o=T.ccOffset=t.start:(function(e,t,o){var a=e[t],n=e[a.prevCC];if(!n||!n.new&&a.new)return e.ccOffset=e.presentationOffset=a.start,void(a.new=!1);for(;null!==(i=n)&&void 0!==i&&i.new;){var i;e.ccOffset+=a.start-n.start,a.new=!1,n=e[(a=n).prevCC]}e.presentationOffset=o})(T,S,a)),a&&(o=a-T.presentationOffset);var n=e.endTime-e.startTime,i=Object(s.normalizePts)(9e4*(e.startTime+o-h),9e4*u)/9e4;e.startTime=Math.max(i,0),e.endTime=Math.max(i+n,0);var r=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(r)),e.id||(e.id=l(e.startTime,e.endTime,r)),e.endTime>0&&N.push(e)},I.onparsingerror=function(e){A=e},I.onflush=function(){A?c(A):d(N)},O.forEach((function(e){if(L){if(_(e,"X-TIMESTAMP-MAP=")){L=!1,e.slice(16).split(",").forEach((function(e){_(e,"LOCAL:")?m=e.slice(6):_(e,"MPEGTS:")&&(p=parseInt(e.slice(7)))}));try{h=(function(e){var t=parseInt(e.slice(-3)),o=parseInt(e.slice(-6,-4)),n=parseInt(e.slice(-9,-7)),i=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(Object(a.isFiniteNumber)(t)&&Object(a.isFiniteNumber)(o)&&Object(a.isFiniteNumber)(n)&&Object(a.isFiniteNumber)(i)))throw Error("Malformed X-TIMESTAMP-MAP: Local:"+e);return t+=1e3*o,(t+=6e4*n)+36e5*i})(m)/1e3}catch(e){A=e}return}""===e&&(L=!1)}I.parse(e+"\n")})),I.flush()}},"./src/utils/xhr-loader.ts":function(e,t,o){"use strict";o.r(t);var a=o("./src/utils/logger.ts"),n=o("./src/loader/load-stats.ts"),i=/^age:\s*[\d.]+\s*$/m,r=(function(){function e(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=void 0,this.loader=null,this.stats=void 0,this.xhrSetup=e?e.xhrSetup:null,this.stats=new n.LoadStats,this.retryDelay=0}var t=e.prototype;return t.destroy=function(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null},t.abortInternal=function(){var e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))},t.abort=function(){var e;this.abortInternal(),null!==(e=this.callbacks)&&void 0!==e&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)},t.load=function(e,t,o){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=o,this.retryDelay=t.retryDelay,this.loadInternal()},t.loadInternal=function(){var e=this.config,t=this.context;if(e){var o=this.loader=new self.XMLHttpRequest,a=this.stats;a.loading.first=0,a.loaded=0;var n=this.xhrSetup;try{if(n)try{n(o,t.url)}catch(e){o.open("GET",t.url,!0),n(o,t.url)}o.readyState||o.open("GET",t.url,!0);var i=this.context.headers;if(i)for(var r in i)o.setRequestHeader(r,i[r])}catch(e){return void this.callbacks.onError({code:o.status,text:e.message},t,o)}t.rangeEnd&&o.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),o.onreadystatechange=this.readystatechange.bind(this),o.onprogress=this.loadprogress.bind(this),o.responseType=t.responseType,self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),e.timeout),o.send()}},t.readystatechange=function(){var e=this.context,t=this.loader,o=this.stats;if(e&&t){var n=t.readyState,i=this.config;if(!o.aborted&&n>=2)if(self.clearTimeout(this.requestTimeout),0===o.loading.first&&(o.loading.first=Math.max(self.performance.now(),o.loading.start)),4===n){t.onreadystatechange=null,t.onprogress=null;var r=t.status;if(r>=200&&r<300){var s,E;if(o.loading.end=Math.max(self.performance.now(),o.loading.first),E="arraybuffer"===e.responseType?(s=t.response).byteLength:(s=t.responseText).length,o.loaded=o.total=E,!this.callbacks)return;var _=this.callbacks.onProgress;if(_&&_(o,e,s,t),!this.callbacks)return;var T={url:t.responseURL,data:s};this.callbacks.onSuccess(T,o,e,t)}else o.retry>=i.maxRetry||r>=400&&r<499?(a.logger.error(r+" while loading "+e.url),this.callbacks.onError({code:r,text:t.statusText},e,t)):(a.logger.warn(r+" while loading "+e.url+", retrying in "+this.retryDelay+"..."),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,i.maxRetryDelay),o.retry++)}else self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout)}},t.loadtimeout=function(){a.logger.warn("timeout while loading "+this.context.url);var e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))},t.loadprogress=function(e){var t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)},t.getCacheAge=function(){var e=null;if(this.loader&&i.test(this.loader.getAllResponseHeaders())){var t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e},e})();t.default=r}}).default},e.exports=t())},2047:e=>{"use strict";e.exports={abbr:"abbr",accept:"accept",acceptCharset:"accept-charset",accessKey:"accesskey",action:"action",allowFullScreen:"allowfullscreen",allowTransparency:"allowtransparency",alt:"alt",async:"async",autoComplete:"autocomplete",autoFocus:"autofocus",autoPlay:"autoplay",cellPadding:"cellpadding",cellSpacing:"cellspacing",challenge:"challenge",charset:"charset",checked:"checked",cite:"cite",class:"class",className:"class",cols:"cols",colSpan:"colspan",command:"command",content:"content",contentEditable:"contenteditable",contextMenu:"contextmenu",controls:"controls",coords:"coords",crossOrigin:"crossorigin",data:"data",dateTime:"datetime",default:"default",defer:"defer",dir:"dir",disabled:"disabled",download:"download",draggable:"draggable",dropzone:"dropzone",encType:"enctype",for:"for",form:"form",formAction:"formaction",formEncType:"formenctype",formMethod:"formmethod",formNoValidate:"formnovalidate",formTarget:"formtarget",frameBorder:"frameBorder",headers:"headers",height:"height",hidden:"hidden",high:"high",href:"href",hrefLang:"hreflang",htmlFor:"for",httpEquiv:"http-equiv",icon:"icon",id:"id",inputMode:"inputmode",isMap:"ismap",itemId:"itemid",itemProp:"itemprop",itemRef:"itemref",itemScope:"itemscope",itemType:"itemtype",kind:"kind",label:"label",lang:"lang",list:"list",loop:"loop",manifest:"manifest",max:"max",maxLength:"maxlength",media:"media",mediaGroup:"mediagroup",method:"method",min:"min",minLength:"minlength",multiple:"multiple",muted:"muted",name:"name",noValidate:"novalidate",open:"open",optimum:"optimum",pattern:"pattern",ping:"ping",placeholder:"placeholder",poster:"poster",preload:"preload",radioGroup:"radiogroup",readOnly:"readonly",rel:"rel",required:"required",role:"role",rows:"rows",rowSpan:"rowspan",sandbox:"sandbox",scope:"scope",scoped:"scoped",scrolling:"scrolling",seamless:"seamless",selected:"selected",shape:"shape",size:"size",sizes:"sizes",sortable:"sortable",span:"span",spellCheck:"spellcheck",src:"src",srcDoc:"srcdoc",srcSet:"srcset",start:"start",step:"step",style:"style",tabIndex:"tabindex",target:"target",title:"title",translate:"translate",type:"type",typeMustMatch:"typemustmatch",useMap:"usemap",value:"value",width:"width",wmode:"wmode",wrap:"wrap"}},1613:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>S});var a=o(1739),n=o.n(a),i=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function r(e){var t={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},o=e.match(/<\/?([^\s]+?)[/\s>]/);if(o&&(t.name=o[1],(n()[o[1]]||"/"===e.charAt(e.length-2))&&(t.voidElement=!0),t.name.startsWith("!--"))){var a=e.indexOf("--\x3e");return{type:"comment",comment:-1!==a?e.slice(4,a):""}}for(var r=new RegExp(i),s=null;null!==(s=r.exec(e));)if(s[0].trim())if(s[1]){var E=s[1].trim(),_=[E,""];E.indexOf("=")>-1&&(_=E.split("=")),t.attrs[_[0]]=_[1],r.lastIndex--}else s[2]&&(t.attrs[s[2]]=s[3].trim().substring(1,s[3].length-1));return t}var s=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,E=/^\s*$/,_=Object.create(null);function T(e,t){switch(t.type){case"text":return e+t.content;case"tag":return e+="<"+t.name+(t.attrs?(function(e){var t=[];for(var o in e)t.push(o+'="'+e[o]+'"');return t.length?" "+t.join(" "):""})(t.attrs):"")+(t.voidElement?"/>":">"),t.voidElement?e:e+t.children.reduce(T,"")+"</"+t.name+">";case"comment":return e+"\x3c!--"+t.comment+"--\x3e"}}var l={parse:function(e,t){t||(t={}),t.components||(t.components=_);var o,a=[],n=[],i=-1,T=!1;if(0!==e.indexOf("<")){var l=e.indexOf("<");a.push({type:"text",content:-1===l?e:e.substring(0,l)})}return e.replace(s,(function(s,_){if(T){if(s!=="</"+o.name+">")return;T=!1}var l,S="/"!==s.charAt(1),u=s.startsWith("\x3c!--"),d=_+s.length,c=e.charAt(d);if(u){var A=r(s);return i<0?(a.push(A),a):((l=n[i]).children.push(A),a)}if(S&&(i++,"tag"===(o=r(s)).type&&t.components[o.name]&&(o.type="component",T=!0),o.voidElement||T||!c||"<"===c||o.children.push({type:"text",content:e.slice(d,e.indexOf("<",d))}),0===i&&a.push(o),(l=n[i-1])&&l.children.push(o),n[i]=o),(!S||o.voidElement)&&(i>-1&&(o.voidElement||o.name===s.slice(2,-1))&&(i--,o=-1===i?a:n[i]),!T&&"<"!==c&&c)){l=-1===i?a:n[i].children;var I=e.indexOf("<",d),O=e.slice(d,-1===I?void 0:I);E.test(O)&&(O=" "),(I>-1&&i+l.length>=0||" "!==O)&&l.push({type:"text",content:O})}})),a},stringify:function(e){return e.reduce((function(e,t){return e+T("",t)}),"")}};const S=l},6073:(e,t,o)=>{"use strict";var a=o(7021),n=o(949),i=o(4813),r=o(5627),s=o(6433),E=o(8542),_=o(2411),T=o(2401),l=o(9394);function S(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=S(a),d=S(n),c=S(i),A=S(r),I=S(s),O=S(E),N=S(_),R=S(T),m=S(l);function p(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function h(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?p(Object(o),!0).forEach((function(t){R.default(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):p(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}var L={type:"logger",log:function(e){this.output("log",e)},warn:function(e){this.output("warn",e)},error:function(e){this.output("error",e)},output:function(e,t){console&&console[e]&&console[e].apply(console,t)}},f=new((function(){function e(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};d.default(this,e),this.init(t,o)}return c.default(e,[{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=t.prefix||"i18next:",this.logger=e||L,this.options=t,this.debug=t.debug}},{key:"setDebug",value:function(e){this.debug=e}},{key:"log",value:function(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"log","",!0)}},{key:"warn",value:function(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"warn","",!0)}},{key:"error",value:function(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"error","")}},{key:"deprecate",value:function(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}},{key:"forward",value:function(e,t,o,a){return a&&!this.debug?null:("string"==typeof e[0]&&(e[0]="".concat(o).concat(this.prefix," ").concat(e[0])),this.logger[t](e))}},{key:"create",value:function(t){return new e(this.logger,h(h({},{prefix:"".concat(this.prefix,":").concat(t,":")}),this.options))}},{key:"clone",value:function(t){return(t=t||this.options).prefix=t.prefix||this.prefix,new e(this.logger,t)}}]),e})()),C=(function(){function e(){d.default(this,e),this.observers={}}return c.default(e,[{key:"on",value:function(e,t){var o=this;return e.split(" ").forEach((function(e){o.observers[e]=o.observers[e]||[],o.observers[e].push(t)})),this}},{key:"off",value:function(e,t){this.observers[e]&&(t?this.observers[e]=this.observers[e].filter((function(e){return e!==t})):delete this.observers[e])}},{key:"emit",value:function(e){for(var t=arguments.length,o=new Array(t>1?t-1:0),a=1;a<t;a++)o[a-1]=arguments[a];if(this.observers[e]){var n=[].concat(this.observers[e]);n.forEach((function(e){e.apply(void 0,o)}))}if(this.observers["*"]){var i=[].concat(this.observers["*"]);i.forEach((function(t){t.apply(t,[e].concat(o))}))}}}]),e})();function D(){var e,t,o=new Promise((function(o,a){e=o,t=a}));return o.resolve=e,o.reject=t,o}function g(e){return null==e?"":""+e}function v(e,t,o){e.forEach((function(e){t[e]&&(o[e]=t[e])}))}function P(e,t,o){function a(e){return e&&e.indexOf("###")>-1?e.replace(/###/g,"."):e}function n(){return!e||"string"==typeof e}for(var i="string"!=typeof t?[].concat(t):t.split(".");i.length>1;){if(n())return{};var r=a(i.shift());!e[r]&&o&&(e[r]=new o),e=Object.prototype.hasOwnProperty.call(e,r)?e[r]:{}}return n()?{}:{obj:e,k:a(i.shift())}}function y(e,t,o){var a=P(e,t,Object);a.obj[a.k]=o}function B(e,t){var o=P(e,t),a=o.obj,n=o.k;if(a)return a[n]}function b(e,t,o){var a=B(e,o);return void 0!==a?a:B(t,o)}function M(e,t,o){for(var a in t)"__proto__"!==a&&"constructor"!==a&&(a in e?"string"==typeof e[a]||e[a]instanceof String||"string"==typeof t[a]||t[a]instanceof String?o&&(e[a]=t[a]):M(e[a],t[a],o):e[a]=t[a]);return e}function U(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var W={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function G(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,(function(e){return W[e]})):e}var F="undefined"!=typeof window&&window.navigator&&void 0===window.navigator.userAgentData&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1,k=[" ",",","?","!",";"];function w(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function H(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?w(Object(o),!0).forEach((function(t){R.default(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):w(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function V(e){var t=(function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}})();return function(){var o,a=N.default(e);if(t){var n=N.default(this).constructor;o=Reflect.construct(a,arguments,n)}else o=a.apply(this,arguments);return O.default(this,o)}}function Y(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";if(e){if(e[t])return e[t];for(var a=t.split(o),n=e,i=0;i<a.length;++i){if(!n)return;if("string"==typeof n[a[i]]&&i+1<a.length)return;if(void 0===n[a[i]]){for(var r=2,s=a.slice(i,i+r).join(o),E=n[s];void 0===E&&a.length>i+r;)r++,E=n[s=a.slice(i,i+r).join(o)];if(void 0===E)return;if(null===E)return null;if(t.endsWith(s)){if("string"==typeof E)return E;if(s&&"string"==typeof E[s])return E[s]}var _=a.slice(i+r).join(o);return _?Y(E,_,o):void 0}n=n[a[i]]}return n}}var z=(function(e){I.default(o,e);var t=V(o);function o(e){var a,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};return d.default(this,o),a=t.call(this),F&&C.call(A.default(a)),a.data=e||{},a.options=n,void 0===a.options.keySeparator&&(a.options.keySeparator="."),void 0===a.options.ignoreJSONStructure&&(a.options.ignoreJSONStructure=!0),a}return c.default(o,[{key:"addNamespaces",value:function(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}},{key:"removeNamespaces",value:function(e){var t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}},{key:"getResource",value:function(e,t,o){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=void 0!==a.keySeparator?a.keySeparator:this.options.keySeparator,i=void 0!==a.ignoreJSONStructure?a.ignoreJSONStructure:this.options.ignoreJSONStructure,r=[e,t];o&&"string"!=typeof o&&(r=r.concat(o)),o&&"string"==typeof o&&(r=r.concat(n?o.split(n):o)),e.indexOf(".")>-1&&(r=e.split("."));var s=B(this.data,r);return s||!i||"string"!=typeof o?s:Y(this.data&&this.data[e]&&this.data[e][t],o,n)}},{key:"addResource",value:function(e,t,o,a){var n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},i=this.options.keySeparator;void 0===i&&(i=".");var r=[e,t];o&&(r=r.concat(i?o.split(i):o)),e.indexOf(".")>-1&&(a=t,t=(r=e.split("."))[1]),this.addNamespaces(t),y(this.data,r,a),n.silent||this.emit("added",e,t,o,a)}},{key:"addResources",value:function(e,t,o){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var n in o)"string"!=typeof o[n]&&"[object Array]"!==Object.prototype.toString.apply(o[n])||this.addResource(e,t,n,o[n],{silent:!0});a.silent||this.emit("added",e,t,o)}},{key:"addResourceBundle",value:function(e,t,o,a,n){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},r=[e,t];e.indexOf(".")>-1&&(a=o,o=t,t=(r=e.split("."))[1]),this.addNamespaces(t);var s=B(this.data,r)||{};a?M(s,o,n):s=H(H({},s),o),y(this.data,r,s),i.silent||this.emit("added",e,t,o)}},{key:"removeResourceBundle",value:function(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}},{key:"hasResourceBundle",value:function(e,t){return void 0!==this.getResource(e,t)}},{key:"getResourceBundle",value:function(e,t){return t||(t=this.options.defaultNS),"v1"===this.options.compatibilityAPI?H(H({},{}),this.getResource(e,t)):this.getResource(e,t)}},{key:"getDataByLanguage",value:function(e){return this.data[e]}},{key:"hasLanguageSomeTranslations",value:function(e){var t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find((function(e){return t[e]&&Object.keys(t[e]).length>0}))}},{key:"toJSON",value:function(){return this.data}}]),o})(C),x={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,t,o,a,n){var i=this;return e.forEach((function(e){i.processors[e]&&(t=i.processors[e].process(t,o,a,n))})),t}};function K(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function j(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?K(Object(o),!0).forEach((function(t){R.default(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):K(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function Q(e){var t=(function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}})();return function(){var o,a=N.default(e);if(t){var n=N.default(this).constructor;o=Reflect.construct(a,arguments,n)}else o=a.apply(this,arguments);return O.default(this,o)}}var X={},$=(function(e){I.default(o,e);var t=Q(o);function o(e){var a,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return d.default(this,o),a=t.call(this),F&&C.call(A.default(a)),v(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],e,A.default(a)),a.options=n,void 0===a.options.keySeparator&&(a.options.keySeparator="."),a.logger=f.create("translator"),a}return c.default(o,[{key:"changeLanguage",value:function(e){e&&(this.language=e)}},{key:"exists",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}};if(null==e)return!1;var o=this.resolve(e,t);return o&&void 0!==o.res}},{key:"extractFromKey",value:function(e,t){var o=void 0!==t.nsSeparator?t.nsSeparator:this.options.nsSeparator;void 0===o&&(o=":");var a=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,n=t.ns||this.options.defaultNS||[],i=o&&e.indexOf(o)>-1,r=!(this.options.userDefinedKeySeparator||t.keySeparator||this.options.userDefinedNsSeparator||t.nsSeparator||(function(e,t,o){t=t||"",o=o||"";var a=k.filter((function(e){return t.indexOf(e)<0&&o.indexOf(e)<0}));if(0===a.length)return!0;var n=new RegExp("(".concat(a.map((function(e){return"?"===e?"\\?":e})).join("|"),")")),i=!n.test(e);if(!i){var r=e.indexOf(o);r>0&&!n.test(e.substring(0,r))&&(i=!0)}return i})(e,o,a));if(i&&!r){var s=e.match(this.interpolator.nestingRegexp);if(s&&s.length>0)return{key:e,namespaces:n};var E=e.split(o);(o!==a||o===a&&this.options.ns.indexOf(E[0])>-1)&&(n=E.shift()),e=E.join(a)}return"string"==typeof n&&(n=[n]),{key:e,namespaces:n}}},{key:"translate",value:function(e,t,a){var n=this;if("object"!==u.default(t)&&this.options.overloadTranslationOptionHandler&&(t=this.options.overloadTranslationOptionHandler(arguments)),t||(t={}),null==e)return"";Array.isArray(e)||(e=[String(e)]);var i=void 0!==t.returnDetails?t.returnDetails:this.options.returnDetails,r=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,s=this.extractFromKey(e[e.length-1],t),E=s.key,_=s.namespaces,T=_[_.length-1],l=t.lng||this.language,S=t.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(l&&"cimode"===l.toLowerCase()){if(S){var d=t.nsSeparator||this.options.nsSeparator;return i?(c.res="".concat(T).concat(d).concat(E),c):"".concat(T).concat(d).concat(E)}return i?(c.res=E,c):E}var c=this.resolve(e,t),A=c&&c.res,I=c&&c.usedKey||E,O=c&&c.exactUsedKey||E,N=Object.prototype.toString.apply(A),R=["[object Number]","[object Function]","[object RegExp]"],m=void 0!==t.joinArrays?t.joinArrays:this.options.joinArrays,p=!this.i18nFormat||this.i18nFormat.handleAsObject,h="string"!=typeof A&&"boolean"!=typeof A&&"number"!=typeof A;if(p&&A&&h&&R.indexOf(N)<0&&("string"!=typeof m||"[object Array]"!==N)){if(!t.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");var L=this.options.returnedObjectHandler?this.options.returnedObjectHandler(I,A,j(j({},t),{},{ns:_})):"key '".concat(E," (").concat(this.language,")' returned an object instead of string.");return i?(c.res=L,c):L}if(r){var f="[object Array]"===N,C=f?[]:{},D=f?O:I;for(var g in A)if(Object.prototype.hasOwnProperty.call(A,g)){var v="".concat(D).concat(r).concat(g);C[g]=this.translate(v,j(j({},t),{joinArrays:!1,ns:_})),C[g]===v&&(C[g]=A[g])}A=C}}else if(p&&"string"==typeof m&&"[object Array]"===N)(A=A.join(m))&&(A=this.extendTranslation(A,e,t,a));else{var P=!1,y=!1,B=void 0!==t.count&&"string"!=typeof t.count,b=o.hasDefaultValue(t),M=B?this.pluralResolver.getSuffix(l,t.count,t):"",U=t["defaultValue".concat(M)]||t.defaultValue;!this.isValidLookup(A)&&b&&(P=!0,A=U),this.isValidLookup(A)||(y=!0,A=E);var W=t.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey,G=W&&y?void 0:A,F=b&&U!==A&&this.options.updateMissing;if(y||P||F){if(this.logger.log(F?"updateKey":"missingKey",l,T,E,F?U:A),r){var k=this.resolve(E,j(j({},t),{},{keySeparator:!1}));k&&k.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}var w=[],H=this.languageUtils.getFallbackCodes(this.options.fallbackLng,t.lng||this.language);if("fallback"===this.options.saveMissingTo&&H&&H[0])for(var V=0;V<H.length;V++)w.push(H[V]);else"all"===this.options.saveMissingTo?w=this.languageUtils.toResolveHierarchy(t.lng||this.language):w.push(t.lng||this.language);var Y=function(e,o,a){var i=b&&a!==A?a:G;n.options.missingKeyHandler?n.options.missingKeyHandler(e,T,o,i,F,t):n.backendConnector&&n.backendConnector.saveMissing&&n.backendConnector.saveMissing(e,T,o,i,F,t),n.emit("missingKey",e,T,o,A)};this.options.saveMissing&&(this.options.saveMissingPlurals&&B?w.forEach((function(e){n.pluralResolver.getSuffixes(e,t).forEach((function(o){Y([e],E+o,t["defaultValue".concat(o)]||U)}))})):Y(w,E,U))}A=this.extendTranslation(A,e,t,c,a),y&&A===E&&this.options.appendNamespaceToMissingKey&&(A="".concat(T,":").concat(E)),(y||P)&&this.options.parseMissingKeyHandler&&(A="v1"!==this.options.compatibilityAPI?this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?"".concat(T,":").concat(E):E,P?A:void 0):this.options.parseMissingKeyHandler(A))}return i?(c.res=A,c):A}},{key:"extendTranslation",value:function(e,t,o,a,n){var i=this;if(this.i18nFormat&&this.i18nFormat.parse)e=this.i18nFormat.parse(e,j(j({},this.options.interpolation.defaultVariables),o),a.usedLng,a.usedNS,a.usedKey,{resolved:a});else if(!o.skipInterpolation){o.interpolation&&this.interpolator.init(j(j({},o),{interpolation:j(j({},this.options.interpolation),o.interpolation)}));var r,s="string"==typeof e&&(o&&o.interpolation&&void 0!==o.interpolation.skipOnVariables?o.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);if(s){var E=e.match(this.interpolator.nestingRegexp);r=E&&E.length}var _=o.replace&&"string"!=typeof o.replace?o.replace:o;if(this.options.interpolation.defaultVariables&&(_=j(j({},this.options.interpolation.defaultVariables),_)),e=this.interpolator.interpolate(e,_,o.lng||this.language,o),s){var T=e.match(this.interpolator.nestingRegexp);r<(T&&T.length)&&(o.nest=!1)}!1!==o.nest&&(e=this.interpolator.nest(e,(function(){for(var e=arguments.length,a=new Array(e),r=0;r<e;r++)a[r]=arguments[r];return n&&n[0]===a[0]&&!o.context?(i.logger.warn("It seems you are nesting recursively key: ".concat(a[0]," in key: ").concat(t[0])),null):i.translate.apply(i,a.concat([t]))}),o)),o.interpolation&&this.interpolator.reset()}var l=o.postProcess||this.options.postProcess,S="string"==typeof l?[l]:l;return null!=e&&S&&S.length&&!1!==o.applyPostProcessor&&(e=x.handle(S,e,t,this.options&&this.options.postProcessPassResolved?j({i18nResolved:a},o):o,this)),e}},{key:"resolve",value:function(e){var t,o,a,n,i,r=this,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e&&(e=[e]),e.forEach((function(e){if(!r.isValidLookup(t)){var E=r.extractFromKey(e,s),_=E.key;o=_;var T=E.namespaces;r.options.fallbackNS&&(T=T.concat(r.options.fallbackNS));var l=void 0!==s.count&&"string"!=typeof s.count,S=l&&!s.ordinal&&0===s.count&&r.pluralResolver.shouldUseIntlApi(),u=void 0!==s.context&&("string"==typeof s.context||"number"==typeof s.context)&&""!==s.context,d=s.lngs?s.lngs:r.languageUtils.toResolveHierarchy(s.lng||r.language,s.fallbackLng);T.forEach((function(e){r.isValidLookup(t)||(i=e,!X["".concat(d[0],"-").concat(e)]&&r.utils&&r.utils.hasLoadedNamespace&&!r.utils.hasLoadedNamespace(i)&&(X["".concat(d[0],"-").concat(e)]=!0,r.logger.warn('key "'.concat(o,'" for languages "').concat(d.join(", "),'" won\'t get resolved as namespace "').concat(i,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),d.forEach((function(o){if(!r.isValidLookup(t)){n=o;var i,E=[_];if(r.i18nFormat&&r.i18nFormat.addLookupKeys)r.i18nFormat.addLookupKeys(E,_,o,e,s);else{var T;l&&(T=r.pluralResolver.getSuffix(o,s.count,s));var d="".concat(r.options.pluralSeparator,"zero");if(l&&(E.push(_+T),S&&E.push(_+d)),u){var c="".concat(_).concat(r.options.contextSeparator).concat(s.context);E.push(c),l&&(E.push(c+T),S&&E.push(c+d))}}for(;i=E.pop();)r.isValidLookup(t)||(a=i,t=r.getResource(o,e,i,s))}})))}))}})),{res:t,usedKey:o,exactUsedKey:a,usedLng:n,usedNS:i}}},{key:"isValidLookup",value:function(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}},{key:"getResource",value:function(e,t,o){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,t,o,a):this.resourceStore.getResource(e,t,o,a)}}],[{key:"hasDefaultValue",value:function(e){var t="defaultValue";for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&t===o.substring(0,t.length)&&void 0!==e[o])return!0;return!1}}]),o})(C);function q(e){return e.charAt(0).toUpperCase()+e.slice(1)}var J=(function(){function e(t){d.default(this,e),this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=f.create("languageUtils")}return c.default(e,[{key:"getScriptPartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return null;var t=e.split("-");return 2===t.length?null:(t.pop(),"x"===t[t.length-1].toLowerCase()?null:this.formatLanguageCode(t.join("-")))}},{key:"getLanguagePartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return e;var t=e.split("-");return this.formatLanguageCode(t[0])}},{key:"formatLanguageCode",value:function(e){if("string"==typeof e&&e.indexOf("-")>-1){var t=["hans","hant","latn","cyrl","cans","mong","arab"],o=e.split("-");return this.options.lowerCaseLng?o=o.map((function(e){return e.toLowerCase()})):2===o.length?(o[0]=o[0].toLowerCase(),o[1]=o[1].toUpperCase(),t.indexOf(o[1].toLowerCase())>-1&&(o[1]=q(o[1].toLowerCase()))):3===o.length&&(o[0]=o[0].toLowerCase(),2===o[1].length&&(o[1]=o[1].toUpperCase()),"sgn"!==o[0]&&2===o[2].length&&(o[2]=o[2].toUpperCase()),t.indexOf(o[1].toLowerCase())>-1&&(o[1]=q(o[1].toLowerCase())),t.indexOf(o[2].toLowerCase())>-1&&(o[2]=q(o[2].toLowerCase()))),o.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}},{key:"isSupportedCode",value:function(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}},{key:"getBestMatchFromCodes",value:function(e){var t,o=this;return e?(e.forEach((function(e){if(!t){var a=o.formatLanguageCode(e);o.options.supportedLngs&&!o.isSupportedCode(a)||(t=a)}})),!t&&this.options.supportedLngs&&e.forEach((function(e){if(!t){var a=o.getLanguagePartFromCode(e);if(o.isSupportedCode(a))return t=a;t=o.options.supportedLngs.find((function(e){if(0===e.indexOf(a))return e}))}})),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t):null}},{key:"getFallbackCodes",value:function(e,t){if(!e)return[];if("function"==typeof e&&(e=e(t)),"string"==typeof e&&(e=[e]),"[object Array]"===Object.prototype.toString.apply(e))return e;if(!t)return e.default||[];var o=e[t];return o||(o=e[this.getScriptPartFromCode(t)]),o||(o=e[this.formatLanguageCode(t)]),o||(o=e[this.getLanguagePartFromCode(t)]),o||(o=e.default),o||[]}},{key:"toResolveHierarchy",value:function(e,t){var o=this,a=this.getFallbackCodes(t||this.options.fallbackLng||[],e),n=[],i=function(e){e&&(o.isSupportedCode(e)?n.push(e):o.logger.warn("rejecting language code not found in supportedLngs: ".concat(e)))};return"string"==typeof e&&e.indexOf("-")>-1?("languageOnly"!==this.options.load&&i(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&i(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&i(this.getLanguagePartFromCode(e))):"string"==typeof e&&i(this.formatLanguageCode(e)),a.forEach((function(e){n.indexOf(e)<0&&i(o.formatLanguageCode(e))})),n}}]),e})(),Z=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],ee={1:function(e){return Number(e>1)},2:function(e){return Number(1!=e)},3:function(e){return 0},4:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},5:function(e){return Number(0==e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5)},6:function(e){return Number(1==e?0:e>=2&&e<=4?1:2)},7:function(e){return Number(1==e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},8:function(e){return Number(1==e?0:2==e?1:8!=e&&11!=e?2:3)},9:function(e){return Number(e>=2)},10:function(e){return Number(1==e?0:2==e?1:e<7?2:e<11?3:4)},11:function(e){return Number(1==e||11==e?0:2==e||12==e?1:e>2&&e<20?2:3)},12:function(e){return Number(e%10!=1||e%100==11)},13:function(e){return Number(0!==e)},14:function(e){return Number(1==e?0:2==e?1:3==e?2:3)},15:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2)},16:function(e){return Number(e%10==1&&e%100!=11?0:0!==e?1:2)},17:function(e){return Number(1==e||e%10==1&&e%100!=11?0:1)},18:function(e){return Number(0==e?0:1==e?1:2)},19:function(e){return Number(1==e?0:0==e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3)},20:function(e){return Number(1==e?0:0==e||e%100>0&&e%100<20?1:2)},21:function(e){return Number(e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0)},22:function(e){return Number(1==e?0:2==e?1:(e<0||e>10)&&e%10==0?2:3)}},te=["v1","v2","v3"],oe={zero:0,one:1,two:2,few:3,many:4,other:5};function ae(){var e={};return Z.forEach((function(t){t.lngs.forEach((function(o){e[o]={numbers:t.nr,plurals:ee[t.fc]}}))})),e}var ne=(function(){function e(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};d.default(this,e),this.languageUtils=t,this.options=o,this.logger=f.create("pluralResolver"),this.options.compatibilityJSON&&"v4"!==this.options.compatibilityJSON||"undefined"!=typeof Intl&&Intl.PluralRules||(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=ae()}return c.default(e,[{key:"addRule",value:function(e,t){this.rules[e]=t}},{key:"getRule",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(e,{type:t.ordinal?"ordinal":"cardinal"})}catch(e){return}return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}},{key:"needsPlural",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=this.getRule(e,t);return this.shouldUseIntlApi()?o&&o.resolvedOptions().pluralCategories.length>1:o&&o.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.getSuffixes(e,o).map((function(e){return"".concat(t).concat(e)}))}},{key:"getSuffixes",value:function(e){var t=this,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=this.getRule(e,o);return a?this.shouldUseIntlApi()?a.resolvedOptions().pluralCategories.sort((function(e,t){return oe[e]-oe[t]})).map((function(e){return"".concat(t.options.prepend).concat(e)})):a.numbers.map((function(a){return t.getSuffix(e,a,o)})):[]}},{key:"getSuffix",value:function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=this.getRule(e,o);return a?this.shouldUseIntlApi()?"".concat(this.options.prepend).concat(a.select(t)):this.getSuffixRetroCompatible(a,t):(this.logger.warn("no plural rule found for: ".concat(e)),"")}},{key:"getSuffixRetroCompatible",value:function(e,t){var o=this,a=e.noAbs?e.plurals(t):e.plurals(Math.abs(t)),n=e.numbers[a];this.options.simplifyPluralSuffix&&2===e.numbers.length&&1===e.numbers[0]&&(2===n?n="plural":1===n&&(n=""));var i=function(){return o.options.prepend&&n.toString()?o.options.prepend+n.toString():n.toString()};return"v1"===this.options.compatibilityJSON?1===n?"":"number"==typeof n?"_plural_".concat(n.toString()):i():"v2"===this.options.compatibilityJSON||this.options.simplifyPluralSuffix&&2===e.numbers.length&&1===e.numbers[0]?i():this.options.prepend&&a.toString()?this.options.prepend+a.toString():a.toString()}},{key:"shouldUseIntlApi",value:function(){return!te.includes(this.options.compatibilityJSON)}}]),e})();function ie(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function re(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?ie(Object(o),!0).forEach((function(t){R.default(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):ie(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}var se=(function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};d.default(this,e),this.logger=f.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||function(e){return e},this.init(t)}return c.default(e,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.interpolation||(e.interpolation={escapeValue:!0});var t=e.interpolation;this.escape=void 0!==t.escape?t.escape:G,this.escapeValue=void 0===t.escapeValue||t.escapeValue,this.useRawValueToEscape=void 0!==t.useRawValueToEscape&&t.useRawValueToEscape,this.prefix=t.prefix?U(t.prefix):t.prefixEscaped||"{{",this.suffix=t.suffix?U(t.suffix):t.suffixEscaped||"}}",this.formatSeparator=t.formatSeparator?t.formatSeparator:t.formatSeparator||",",this.unescapePrefix=t.unescapeSuffix?"":t.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":t.unescapeSuffix||"",this.nestingPrefix=t.nestingPrefix?U(t.nestingPrefix):t.nestingPrefixEscaped||U("$t("),this.nestingSuffix=t.nestingSuffix?U(t.nestingSuffix):t.nestingSuffixEscaped||U(")"),this.nestingOptionsSeparator=t.nestingOptionsSeparator?t.nestingOptionsSeparator:t.nestingOptionsSeparator||",",this.maxReplaces=t.maxReplaces?t.maxReplaces:1e3,this.alwaysFormat=void 0!==t.alwaysFormat&&t.alwaysFormat,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var e="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=new RegExp(e,"g");var t="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(t,"g");var o="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=new RegExp(o,"g")}},{key:"interpolate",value:function(e,t,o,a){var n,i,r,s=this,E=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function _(e){return e.replace(/\$/g,"$$$$")}var T=function(e){if(e.indexOf(s.formatSeparator)<0){var n=b(t,E,e);return s.alwaysFormat?s.format(n,void 0,o,re(re(re({},a),t),{},{interpolationkey:e})):n}var i=e.split(s.formatSeparator),r=i.shift().trim(),_=i.join(s.formatSeparator).trim();return s.format(b(t,E,r),_,o,re(re(re({},a),t),{},{interpolationkey:r}))};this.resetRegExp();var l=a&&a.missingInterpolationHandler||this.options.missingInterpolationHandler,S=a&&a.interpolation&&void 0!==a.interpolation.skipOnVariables?a.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:function(e){return _(e)}},{regex:this.regexp,safeValue:function(e){return s.escapeValue?_(s.escape(e)):_(e)}}].forEach((function(t){for(r=0;n=t.regex.exec(e);){var o=n[1].trim();if(void 0===(i=T(o)))if("function"==typeof l){var E=l(e,n,a);i="string"==typeof E?E:""}else if(a&&a.hasOwnProperty(o))i="";else{if(S){i=n[0];continue}s.logger.warn("missed to pass in variable ".concat(o," for interpolating ").concat(e)),i=""}else"string"==typeof i||s.useRawValueToEscape||(i=g(i));var _=t.safeValue(i);if(e=e.replace(n[0],_),S?(t.regex.lastIndex+=i.length,t.regex.lastIndex-=n[0].length):t.regex.lastIndex=0,++r>=s.maxReplaces)break}})),e}},{key:"nest",value:function(e,t){var o,a,n,i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};function s(e,t){var o=this.nestingOptionsSeparator;if(e.indexOf(o)<0)return e;var a=e.split(new RegExp("".concat(o,"[ ]*{"))),i="{".concat(a[1]);e=a[0];var r=(i=this.interpolate(i,n)).match(/'/g),s=i.match(/"/g);(r&&r.length%2==0&&!s||s.length%2!=0)&&(i=i.replace(/'/g,'"'));try{n=JSON.parse(i),t&&(n=re(re({},t),n))}catch(t){return this.logger.warn("failed parsing options string in nesting for key ".concat(e),t),"".concat(e).concat(o).concat(i)}return delete n.defaultValue,e}for(;o=this.nestingRegexp.exec(e);){var E=[];(n=re({},r)).applyPostProcessor=!1,delete n.defaultValue;var _=!1;if(-1!==o[0].indexOf(this.formatSeparator)&&!/{.*}/.test(o[1])){var T=o[1].split(this.formatSeparator).map((function(e){return e.trim()}));o[1]=T.shift(),E=T,_=!0}if((a=t(s.call(this,o[1].trim(),n),n))&&o[0]===e&&"string"!=typeof a)return a;"string"!=typeof a&&(a=g(a)),a||(this.logger.warn("missed to resolve ".concat(o[1]," for nesting ").concat(e)),a=""),_&&(a=E.reduce((function(e,t){return i.format(e,t,r.lng,re(re({},r),{},{interpolationkey:o[1].trim()}))}),a.trim())),e=e.replace(o[0],a),this.regexp.lastIndex=0}return e}}]),e})();function Ee(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function _e(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?Ee(Object(o),!0).forEach((function(t){R.default(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):Ee(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function Te(e){var t={};return function(o,a,n){var i=a+JSON.stringify(n),r=t[i];return r||(r=e(a,n),t[i]=r),r(o)}}var le=(function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};d.default(this,e),this.logger=f.create("formatter"),this.options=t,this.formats={number:Te((function(e,t){var o=new Intl.NumberFormat(e,t);return function(e){return o.format(e)}})),currency:Te((function(e,t){var o=new Intl.NumberFormat(e,_e(_e({},t),{},{style:"currency"}));return function(e){return o.format(e)}})),datetime:Te((function(e,t){var o=new Intl.DateTimeFormat(e,_e({},t));return function(e){return o.format(e)}})),relativetime:Te((function(e,t){var o=new Intl.RelativeTimeFormat(e,_e({},t));return function(e){return o.format(e,t.range||"day")}})),list:Te((function(e,t){var o=new Intl.ListFormat(e,_e({},t));return function(e){return o.format(e)}}))},this.init(t)}return c.default(e,[{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}},o=t.interpolation;this.formatSeparator=o.formatSeparator?o.formatSeparator:o.formatSeparator||","}},{key:"add",value:function(e,t){this.formats[e.toLowerCase().trim()]=t}},{key:"addCached",value:function(e,t){this.formats[e.toLowerCase().trim()]=Te(t)}},{key:"format",value:function(e,t,o,a){var n=this;return t.split(this.formatSeparator).reduce((function(e,t){var i=(function(e){var t=e.toLowerCase().trim(),o={};if(e.indexOf("(")>-1){var a=e.split("(");t=a[0].toLowerCase().trim();var n=a[1].substring(0,a[1].length-1);"currency"===t&&n.indexOf(":")<0?o.currency||(o.currency=n.trim()):"relativetime"===t&&n.indexOf(":")<0?o.range||(o.range=n.trim()):n.split(";").forEach((function(e){if(e){var t=e.split(":"),a=m.default(t),n=a[0],i=a.slice(1).join(":").trim().replace(/^'+|'+$/g,"");o[n.trim()]||(o[n.trim()]=i),"false"===i&&(o[n.trim()]=!1),"true"===i&&(o[n.trim()]=!0),isNaN(i)||(o[n.trim()]=parseInt(i,10))}}))}return{formatName:t,formatOptions:o}})(t),r=i.formatName,s=i.formatOptions;if(n.formats[r]){var E=e;try{var _=a&&a.formatParams&&a.formatParams[a.interpolationkey]||{},T=_.locale||_.lng||a.locale||a.lng||o;E=n.formats[r](e,T,_e(_e(_e({},s),a),_))}catch(e){n.logger.warn(e)}return E}return n.logger.warn("there was no format function for ".concat(r)),e}),e)}}]),e})();function Se(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function ue(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?Se(Object(o),!0).forEach((function(t){R.default(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):Se(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function de(e){var t=(function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}})();return function(){var o,a=N.default(e);if(t){var n=N.default(this).constructor;o=Reflect.construct(a,arguments,n)}else o=a.apply(this,arguments);return O.default(this,o)}}var ce=(function(e){I.default(o,e);var t=de(o);function o(e,a,n){var i,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return d.default(this,o),i=t.call(this),F&&C.call(A.default(i)),i.backend=e,i.store=a,i.services=n,i.languageUtils=n.languageUtils,i.options=r,i.logger=f.create("backendConnector"),i.waitingReads=[],i.maxParallelReads=r.maxParallelReads||10,i.readingCalls=0,i.maxRetries=r.maxRetries>=0?r.maxRetries:5,i.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,i.state={},i.queue=[],i.backend&&i.backend.init&&i.backend.init(n,r.backend,r),i}return c.default(o,[{key:"queueLoad",value:function(e,t,o,a){var n=this,i={},r={},s={},E={};return e.forEach((function(e){var a=!0;t.forEach((function(t){var s="".concat(e,"|").concat(t);!o.reload&&n.store.hasResourceBundle(e,t)?n.state[s]=2:n.state[s]<0||(1===n.state[s]?void 0===r[s]&&(r[s]=!0):(n.state[s]=1,a=!1,void 0===r[s]&&(r[s]=!0),void 0===i[s]&&(i[s]=!0),void 0===E[t]&&(E[t]=!0)))})),a||(s[e]=!0)})),(Object.keys(i).length||Object.keys(r).length)&&this.queue.push({pending:r,pendingCount:Object.keys(r).length,loaded:{},errors:[],callback:a}),{toLoad:Object.keys(i),pending:Object.keys(r),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(E)}}},{key:"loaded",value:function(e,t,o){var a=e.split("|"),n=a[0],i=a[1];t&&this.emit("failedLoading",n,i,t),o&&this.store.addResourceBundle(n,i,o),this.state[e]=t?-1:2;var r={};this.queue.forEach((function(o){var a,s,E,_,T,l;a=o.loaded,s=i,_=P(a,[n],Object),T=_.obj,l=_.k,T[l]=T[l]||[],E&&(T[l]=T[l].concat(s)),E||T[l].push(s),(function(e,t){void 0!==e.pending[t]&&(delete e.pending[t],e.pendingCount--)})(o,e),t&&o.errors.push(t),0!==o.pendingCount||o.done||(Object.keys(o.loaded).forEach((function(e){r[e]||(r[e]={});var t=o.loaded[e];t.length&&t.forEach((function(t){void 0===r[e][t]&&(r[e][t]=!0)}))})),o.done=!0,o.errors.length?o.callback(o.errors):o.callback())})),this.emit("loaded",r),this.queue=this.queue.filter((function(e){return!e.done}))}},{key:"read",value:function(e,t,o){var a=this,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this.retryTimeout,r=arguments.length>5?arguments[5]:void 0;if(!e.length)return r(null,{});if(this.readingCalls>=this.maxParallelReads)this.waitingReads.push({lng:e,ns:t,fcName:o,tried:n,wait:i,callback:r});else{this.readingCalls++;var s=function(s,E){if(a.readingCalls--,a.waitingReads.length>0){var _=a.waitingReads.shift();a.read(_.lng,_.ns,_.fcName,_.tried,_.wait,_.callback)}s&&E&&n<a.maxRetries?setTimeout((function(){a.read.call(a,e,t,o,n+1,2*i,r)}),i):r(s,E)},E=this.backend[o].bind(this.backend);if(2!==E.length)return E(e,t,s);try{var _=E(e,t);_&&"function"==typeof _.then?_.then((function(e){return s(null,e)})).catch(s):s(null,_)}catch(e){s(e)}}}},{key:"prepareLoading",value:function(e,t){var o=this,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),n&&n();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof t&&(t=[t]);var i=this.queueLoad(e,t,a,n);if(!i.toLoad.length)return i.pending.length||n(),null;i.toLoad.forEach((function(e){o.loadOne(e)}))}},{key:"load",value:function(e,t,o){this.prepareLoading(e,t,{},o)}},{key:"reload",value:function(e,t,o){this.prepareLoading(e,t,{reload:!0},o)}},{key:"loadOne",value:function(e){var t=this,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",a=e.split("|"),n=a[0],i=a[1];this.read(n,i,"read",void 0,void 0,(function(a,r){a&&t.logger.warn("".concat(o,"loading namespace ").concat(i," for language ").concat(n," failed"),a),!a&&r&&t.logger.log("".concat(o,"loaded namespace ").concat(i," for language ").concat(n),r),t.loaded(e,a,r)}))}},{key:"saveMissing",value:function(e,t,o,a,n){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:function(){};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(t))this.logger.warn('did not save key "'.concat(o,'" as the namespace "').concat(t,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");else if(null!=o&&""!==o){if(this.backend&&this.backend.create){var s=ue(ue({},i),{},{isUpdate:n}),E=this.backend.create.bind(this.backend);if(E.length<6)try{var _;(_=5===E.length?E(e,t,o,a,s):E(e,t,o,a))&&"function"==typeof _.then?_.then((function(e){return r(null,e)})).catch(r):r(null,_)}catch(e){r(e)}else E(e,t,o,a,r,s)}e&&e[0]&&this.store.addResource(e[0],t,o,a)}}}]),o})(C);function Ae(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(e){var t={};if("object"===u.default(e[1])&&(t=e[1]),"string"==typeof e[1]&&(t.defaultValue=e[1]),"string"==typeof e[2]&&(t.tDescription=e[2]),"object"===u.default(e[2])||"object"===u.default(e[3])){var o=e[3]||e[2];Object.keys(o).forEach((function(e){t[e]=o[e]}))}return t},interpolation:{escapeValue:!0,format:function(e,t,o,a){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function Ie(e){return"string"==typeof e.ns&&(e.ns=[e.ns]),"string"==typeof e.fallbackLng&&(e.fallbackLng=[e.fallbackLng]),"string"==typeof e.fallbackNS&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function Oe(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function Ne(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?Oe(Object(o),!0).forEach((function(t){R.default(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):Oe(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function Re(e){var t=(function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}})();return function(){var o,a=N.default(e);if(t){var n=N.default(this).constructor;o=Reflect.construct(a,arguments,n)}else o=a.apply(this,arguments);return O.default(this,o)}}function me(){}function pe(e){Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach((function(t){"function"==typeof e[t]&&(e[t]=e[t].bind(e))}))}var he=(function(e){I.default(o,e);var t=Re(o);function o(){var e,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(d.default(this,o),e=t.call(this),F&&C.call(A.default(e)),e.options=Ie(a),e.services={},e.logger=f,e.modules={external:[]},pe(A.default(e)),n&&!e.isInitialized&&!a.isClone){if(!e.options.initImmediate)return e.init(a,n),O.default(e,A.default(e));setTimeout((function(){e.init(a,n)}),0)}return e}return c.default(o,[{key:"init",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1?arguments[1]:void 0;"function"==typeof t&&(o=t,t={}),!t.defaultNS&&!1!==t.defaultNS&&t.ns&&("string"==typeof t.ns?t.defaultNS=t.ns:t.ns.indexOf("translation")<0&&(t.defaultNS=t.ns[0]));var a=Ae();function n(e){return e?"function"==typeof e?new e:e:null}if(this.options=Ne(Ne(Ne({},a),this.options),Ie(t)),"v1"!==this.options.compatibilityAPI&&(this.options.interpolation=Ne(Ne({},a.interpolation),this.options.interpolation)),void 0!==t.keySeparator&&(this.options.userDefinedKeySeparator=t.keySeparator),void 0!==t.nsSeparator&&(this.options.userDefinedNsSeparator=t.nsSeparator),!this.options.isClone){var i;this.modules.logger?f.init(n(this.modules.logger),this.options):f.init(null,this.options),this.modules.formatter?i=this.modules.formatter:"undefined"!=typeof Intl&&(i=le);var r=new J(this.options);this.store=new z(this.options.resources,this.options);var s=this.services;s.logger=f,s.resourceStore=this.store,s.languageUtils=r,s.pluralResolver=new ne(r,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),!i||this.options.interpolation.format&&this.options.interpolation.format!==a.interpolation.format||(s.formatter=n(i),s.formatter.init(s,this.options),this.options.interpolation.format=s.formatter.format.bind(s.formatter)),s.interpolator=new se(this.options),s.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},s.backendConnector=new ce(n(this.modules.backend),s.resourceStore,s,this.options),s.backendConnector.on("*",(function(t){for(var o=arguments.length,a=new Array(o>1?o-1:0),n=1;n<o;n++)a[n-1]=arguments[n];e.emit.apply(e,[t].concat(a))})),this.modules.languageDetector&&(s.languageDetector=n(this.modules.languageDetector),s.languageDetector.init&&s.languageDetector.init(s,this.options.detection,this.options)),this.modules.i18nFormat&&(s.i18nFormat=n(this.modules.i18nFormat),s.i18nFormat.init&&s.i18nFormat.init(this)),this.translator=new $(this.services,this.options),this.translator.on("*",(function(t){for(var o=arguments.length,a=new Array(o>1?o-1:0),n=1;n<o;n++)a[n-1]=arguments[n];e.emit.apply(e,[t].concat(a))})),this.modules.external.forEach((function(t){t.init&&t.init(e)}))}if(this.format=this.options.interpolation.format,o||(o=me),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){var E=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);E.length>0&&"dev"!==E[0]&&(this.options.lng=E[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined");var _=["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"];_.forEach((function(t){e[t]=function(){var o;return(o=e.store)[t].apply(o,arguments)}}));var T=["addResource","addResources","addResourceBundle","removeResourceBundle"];T.forEach((function(t){e[t]=function(){var o;return(o=e.store)[t].apply(o,arguments),e}}));var l=D(),S=function(){var t=function(t,a){e.isInitialized&&!e.initializedStoreOnce&&e.logger.warn("init: i18next is already initialized. You should call init just once!"),e.isInitialized=!0,e.options.isClone||e.logger.log("initialized",e.options),e.emit("initialized",e.options),l.resolve(a),o(t,a)};if(e.languages&&"v1"!==e.options.compatibilityAPI&&!e.isInitialized)return t(null,e.t.bind(e));e.changeLanguage(e.options.lng,t)};return this.options.resources||!this.options.initImmediate?S():setTimeout(S,0),l}},{key:"loadResources",value:function(e){var t=this,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:me,a=o,n="string"==typeof e?e:this.language;if("function"==typeof e&&(a=e),!this.options.resources||this.options.partialBundledLanguages){if(n&&"cimode"===n.toLowerCase())return a();var i=[],r=function(e){e&&t.services.languageUtils.toResolveHierarchy(e).forEach((function(e){i.indexOf(e)<0&&i.push(e)}))};if(n)r(n);else{var s=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);s.forEach((function(e){return r(e)}))}this.options.preload&&this.options.preload.forEach((function(e){return r(e)})),this.services.backendConnector.load(i,this.options.ns,(function(e){e||t.resolvedLanguage||!t.language||t.setResolvedLanguage(t.language),a(e)}))}else a(null)}},{key:"reloadResources",value:function(e,t,o){var a=D();return e||(e=this.languages),t||(t=this.options.ns),o||(o=me),this.services.backendConnector.reload(e,t,(function(e){a.resolve(),o(e)})),a}},{key:"use",value:function(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&x.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}},{key:"setResolvedLanguage",value:function(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1))for(var t=0;t<this.languages.length;t++){var o=this.languages[t];if(!(["cimode","dev"].indexOf(o)>-1)&&this.store.hasLanguageSomeTranslations(o)){this.resolvedLanguage=o;break}}}},{key:"changeLanguage",value:function(e,t){var o=this;this.isLanguageChangingTo=e;var a=D();this.emit("languageChanging",e);var n=function(e){o.language=e,o.languages=o.services.languageUtils.toResolveHierarchy(e),o.resolvedLanguage=void 0,o.setResolvedLanguage(e)},i=function(i){e||i||!o.services.languageDetector||(i=[]);var r="string"==typeof i?i:o.services.languageUtils.getBestMatchFromCodes(i);r&&(o.language||n(r),o.translator.language||o.translator.changeLanguage(r),o.services.languageDetector&&o.services.languageDetector.cacheUserLanguage&&o.services.languageDetector.cacheUserLanguage(r)),o.loadResources(r,(function(e){!(function(e,i){i?(n(i),o.translator.changeLanguage(i),o.isLanguageChangingTo=void 0,o.emit("languageChanged",i),o.logger.log("languageChanged",i)):o.isLanguageChangingTo=void 0,a.resolve((function(){return o.t.apply(o,arguments)})),t&&t(e,(function(){return o.t.apply(o,arguments)}))})(e,r)}))};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(i):this.services.languageDetector.detect(i):i(e):i(this.services.languageDetector.detect()),a}},{key:"getFixedT",value:function(e,t,o){var a=this,n=function e(t,n){var i;if("object"!==u.default(n)){for(var r=arguments.length,s=new Array(r>2?r-2:0),E=2;E<r;E++)s[E-2]=arguments[E];i=a.options.overloadTranslationOptionHandler([t,n].concat(s))}else i=Ne({},n);i.lng=i.lng||e.lng,i.lngs=i.lngs||e.lngs,i.ns=i.ns||e.ns,i.keyPrefix=i.keyPrefix||o||e.keyPrefix;var _=a.options.keySeparator||".",T=i.keyPrefix?"".concat(i.keyPrefix).concat(_).concat(t):t;return a.t(T,i)};return"string"==typeof e?n.lng=e:n.lngs=e,n.ns=t,n.keyPrefix=o,n}},{key:"t",value:function(){var e;return this.translator&&(e=this.translator).translate.apply(e,arguments)}},{key:"exists",value:function(){var e;return this.translator&&(e=this.translator).exists.apply(e,arguments)}},{key:"setDefaultNamespace",value:function(e){this.options.defaultNS=e}},{key:"hasLoadedNamespace",value:function(e){var t=this,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var a=this.resolvedLanguage||this.languages[0],n=!!this.options&&this.options.fallbackLng,i=this.languages[this.languages.length-1];if("cimode"===a.toLowerCase())return!0;var r=function(e,o){var a=t.services.backendConnector.state["".concat(e,"|").concat(o)];return-1===a||2===a};if(o.precheck){var s=o.precheck(this,r);if(void 0!==s)return s}return!!this.hasResourceBundle(a,e)||(!(this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages))||!(!r(a,e)||n&&!r(i,e)))}},{key:"loadNamespaces",value:function(e,t){var o=this,a=D();return this.options.ns?("string"==typeof e&&(e=[e]),e.forEach((function(e){o.options.ns.indexOf(e)<0&&o.options.ns.push(e)})),this.loadResources((function(e){a.resolve(),t&&t(e)})),a):(t&&t(),Promise.resolve())}},{key:"loadLanguages",value:function(e,t){var o=D();"string"==typeof e&&(e=[e]);var a=this.options.preload||[],n=e.filter((function(e){return a.indexOf(e)<0}));return n.length?(this.options.preload=a.concat(n),this.loadResources((function(e){o.resolve(),t&&t(e)})),o):(t&&t(),Promise.resolve())}},{key:"dir",value:function(e){if(e||(e=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!e)return"rtl";var t=this.services&&this.services.languageUtils||new J(Ae());return["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(t.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}},{key:"cloneInstance",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:me,n=Ne(Ne(Ne({},this.options),t),{isClone:!0}),i=new o(n);void 0===t.debug&&void 0===t.prefix||(i.logger=i.logger.clone(t));var r=["store","services","language"];return r.forEach((function(t){i[t]=e[t]})),i.services=Ne({},this.services),i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i.translator=new $(i.services,i.options),i.translator.on("*",(function(e){for(var t=arguments.length,o=new Array(t>1?t-1:0),a=1;a<t;a++)o[a-1]=arguments[a];i.emit.apply(i,[e].concat(o))})),i.init(n,a),i.translator.options=i.options,i.translator.backendConnector.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i}},{key:"toJSON",value:function(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}]),o})(C);R.default(he,"createInstance",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return new he(e,t)}));var Le=he.createInstance();Le.createInstance=he.createInstance,e.exports=Le},645:(e,t)=>{t.read=function(e,t,o,a,n){var i,r,s=8*n-a-1,E=(1<<s)-1,_=E>>1,T=-7,l=o?n-1:0,S=o?-1:1,u=e[t+l];for(l+=S,i=u&(1<<-T)-1,u>>=-T,T+=s;T>0;i=256*i+e[t+l],l+=S,T-=8);for(r=i&(1<<-T)-1,i>>=-T,T+=a;T>0;r=256*r+e[t+l],l+=S,T-=8);if(0===i)i=1-_;else{if(i===E)return r?NaN:1/0*(u?-1:1);r+=Math.pow(2,a),i-=_}return(u?-1:1)*r*Math.pow(2,i-a)},t.write=function(e,t,o,a,n,i){var r,s,E,_=8*i-n-1,T=(1<<_)-1,l=T>>1,S=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,u=a?0:i-1,d=a?1:-1,c=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,r=T):(r=Math.floor(Math.log(t)/Math.LN2),t*(E=Math.pow(2,-r))<1&&(r--,E*=2),(t+=r+l>=1?S/E:S*Math.pow(2,1-l))*E>=2&&(r++,E/=2),r+l>=T?(s=0,r=T):r+l>=1?(s=(t*E-1)*Math.pow(2,n),r+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,n),r=0));n>=8;e[o+u]=255&s,u+=d,s/=256,n-=8);for(r=r<<n|s,_+=n;_>0;e[o+u]=255&r,u+=d,r/=256,_-=8);e[o+u-d]|=128*c}},5457:e=>{e.exports=[{name:"Abkhaz",local:"Аҧсуа",1:"ab",2:"abk","2T":"abk","2B":"abk",3:"abk"},{name:"Afar",local:"Afaraf",1:"aa",2:"aar","2T":"aar","2B":"aar",3:"aar"},{name:"Afrikaans",local:"Afrikaans",1:"af",2:"afr","2T":"afr","2B":"afr",3:"afr"},{name:"Akan",local:"Akan",1:"ak",2:"aka","2T":"aka","2B":"aka",3:"aka"},{name:"Albanian",local:"Shqip",1:"sq",2:"sqi","2T":"sqi","2B":"alb",3:"sqi"},{name:"Amharic",local:"አማርኛ",1:"am",2:"amh","2T":"amh","2B":"amh",3:"amh"},{name:"Arabic",local:"العربية",1:"ar",2:"ara","2T":"ara","2B":"ara",3:"ara"},{name:"Aragonese",local:"Aragonés",1:"an",2:"arg","2T":"arg","2B":"arg",3:"arg"},{name:"Armenian",local:"Հայերեն",1:"hy",2:"hye","2T":"hye","2B":"arm",3:"hye"},{name:"Assamese",local:"অসমীয়া",1:"as",2:"asm","2T":"asm","2B":"asm",3:"asm"},{name:"Avaric",local:"Авар",1:"av",2:"ava","2T":"ava","2B":"ava",3:"ava"},{name:"Avestan",local:"avesta",1:"ae",2:"ave","2T":"ave","2B":"ave",3:"ave"},{name:"Aymara",local:"Aymar",1:"ay",2:"aym","2T":"aym","2B":"aym",3:"aym"},{name:"Azerbaijani",local:"Azərbaycanca",1:"az",2:"aze","2T":"aze","2B":"aze",3:"aze"},{name:"Bambara",local:"Bamanankan",1:"bm",2:"bam","2T":"bam","2B":"bam",3:"bam"},{name:"Bashkir",local:"Башҡортса",1:"ba",2:"bak","2T":"bak","2B":"bak",3:"bak"},{name:"Basque",local:"Euskara",1:"eu",2:"eus","2T":"eus","2B":"baq",3:"eus"},{name:"Belarusian",local:"Беларуская",1:"be",2:"bel","2T":"bel","2B":"bel",3:"bel"},{name:"Bengali",local:"বাংলা",1:"bn",2:"ben","2T":"ben","2B":"ben",3:"ben"},{name:"Bihari",local:"भोजपुरी",1:"bh",2:"bih","2T":"bih","2B":"bih",3:"bih"},{name:"Bislama",local:"Bislama",1:"bi",2:"bis","2T":"bis","2B":"bis",3:"bis"},{name:"Bosnian",local:"Bosanski",1:"bs",2:"bos","2T":"bos","2B":"bos",3:"bos"},{name:"Breton",local:"Brezhoneg",1:"br",2:"bre","2T":"bre","2B":"bre",3:"bre"},{name:"Bulgarian",local:"Български",1:"bg",2:"bul","2T":"bul","2B":"bul",3:"bul"},{name:"Burmese",local:"မြန်မာဘာသာ",1:"my",2:"mya","2T":"mya","2B":"bur",3:"mya"},{name:"Catalan",local:"Català",1:"ca",2:"cat","2T":"cat","2B":"cat",3:"cat"},{name:"Chamorro",local:"Chamoru",1:"ch",2:"cha","2T":"cha","2B":"cha",3:"cha"},{name:"Chechen",local:"Нохчийн",1:"ce",2:"che","2T":"che","2B":"che",3:"che"},{name:"Chichewa",local:"Chichewa",1:"ny",2:"nya","2T":"nya","2B":"nya",3:"nya"},{name:"Chinese",local:"中文",1:"zh",2:"zho","2T":"zho","2B":"chi",3:"zho"},{name:"Chuvash",local:"Чӑвашла",1:"cv",2:"chv","2T":"chv","2B":"chv",3:"chv"},{name:"Cornish",local:"Kernewek",1:"kw",2:"cor","2T":"cor","2B":"cor",3:"cor"},{name:"Corsican",local:"Corsu",1:"co",2:"cos","2T":"cos","2B":"cos",3:"cos"},{name:"Cree",local:"ᓀᐦᐃᔭᐍᐏᐣ",1:"cr",2:"cre","2T":"cre","2B":"cre",3:"cre"},{name:"Croatian",local:"Hrvatski",1:"hr",2:"hrv","2T":"hrv","2B":"hrv",3:"hrv"},{name:"Czech",local:"Čeština",1:"cs",2:"ces","2T":"ces","2B":"cze",3:"ces"},{name:"Danish",local:"Dansk",1:"da",2:"dan","2T":"dan","2B":"dan",3:"dan"},{name:"Divehi",local:"Divehi",1:"dv",2:"div","2T":"div","2B":"div",3:"div"},{name:"Dutch",local:"Nederlands",1:"nl",2:"nld","2T":"nld","2B":"dut",3:"nld"},{name:"Dzongkha",local:"རྫོང་ཁ",1:"dz",2:"dzo","2T":"dzo","2B":"dzo",3:"dzo"},{name:"English",local:"English",1:"en",2:"eng","2T":"eng","2B":"eng",3:"eng"},{name:"Esperanto",local:"Esperanto",1:"eo",2:"epo","2T":"epo","2B":"epo",3:"epo"},{name:"Estonian",local:"Eesti",1:"et",2:"est","2T":"est","2B":"est",3:"est"},{name:"Ewe",local:"Eʋegbe",1:"ee",2:"ewe","2T":"ewe","2B":"ewe",3:"ewe"},{name:"Faroese",local:"Føroyskt",1:"fo",2:"fao","2T":"fao","2B":"fao",3:"fao"},{name:"Fijian",local:"Na Vosa Vaka-Viti",1:"fj",2:"fij","2T":"fij","2B":"fij",3:"fij"},{name:"Finnish",local:"Suomi",1:"fi",2:"fin","2T":"fin","2B":"fin",3:"fin"},{name:"French",local:"Français",1:"fr",2:"fra","2T":"fra","2B":"fre",3:"fra"},{name:"Fula",local:"Fulfulde",1:"ff",2:"ful","2T":"ful","2B":"ful",3:"ful"},{name:"Galician",local:"Galego",1:"gl",2:"glg","2T":"glg","2B":"glg",3:"glg"},{name:"Georgian",local:"ქართული",1:"ka",2:"kat","2T":"kat","2B":"geo",3:"kat"},{name:"German",local:"Deutsch",1:"de",2:"deu","2T":"deu","2B":"ger",3:"deu"},{name:"Greek",local:"Ελληνικά",1:"el",2:"ell","2T":"ell","2B":"gre",3:"ell"},{name:"Guaraní",local:"Avañe'ẽ",1:"gn",2:"grn","2T":"grn","2B":"grn",3:"grn"},{name:"Gujarati",local:"ગુજરાતી",1:"gu",2:"guj","2T":"guj","2B":"guj",3:"guj"},{name:"Haitian",local:"Kreyòl Ayisyen",1:"ht",2:"hat","2T":"hat","2B":"hat",3:"hat"},{name:"Hausa",local:"هَوُسَ",1:"ha",2:"hau","2T":"hau","2B":"hau",3:"hau"},{name:"Hebrew",local:"עברית",1:"he",2:"heb","2T":"heb","2B":"heb",3:"heb"},{name:"Herero",local:"Otjiherero",1:"hz",2:"her","2T":"her","2B":"her",3:"her"},{name:"Hindi",local:"हिन्दी",1:"hi",2:"hin","2T":"hin","2B":"hin",3:"hin"},{name:"Hiri Motu",local:"Hiri Motu",1:"ho",2:"hmo","2T":"hmo","2B":"hmo",3:"hmo"},{name:"Hungarian",local:"Magyar",1:"hu",2:"hun","2T":"hun","2B":"hun",3:"hun"},{name:"Interlingua",local:"Interlingua",1:"ia",2:"ina","2T":"ina","2B":"ina",3:"ina"},{name:"Indonesian",local:"Bahasa Indonesia",1:"id",2:"ind","2T":"ind","2B":"ind",3:"ind"},{name:"Interlingue",local:"Interlingue",1:"ie",2:"ile","2T":"ile","2B":"ile",3:"ile"},{name:"Irish",local:"Gaeilge",1:"ga",2:"gle","2T":"gle","2B":"gle",3:"gle"},{name:"Igbo",local:"Igbo",1:"ig",2:"ibo","2T":"ibo","2B":"ibo",3:"ibo"},{name:"Inupiaq",local:"Iñupiak",1:"ik",2:"ipk","2T":"ipk","2B":"ipk",3:"ipk"},{name:"Ido",local:"Ido",1:"io",2:"ido","2T":"ido","2B":"ido",3:"ido"},{name:"Icelandic",local:"Íslenska",1:"is",2:"isl","2T":"isl","2B":"ice",3:"isl"},{name:"Italian",local:"Italiano",1:"it",2:"ita","2T":"ita","2B":"ita",3:"ita"},{name:"Inuktitut",local:"ᐃᓄᒃᑎᑐᑦ",1:"iu",2:"iku","2T":"iku","2B":"iku",3:"iku"},{name:"Japanese",local:"日本語",1:"ja",2:"jpn","2T":"jpn","2B":"jpn",3:"jpn"},{name:"Javanese",local:"Basa Jawa",1:"jv",2:"jav","2T":"jav","2B":"jav",3:"jav"},{name:"Kalaallisut",local:"Kalaallisut",1:"kl",2:"kal","2T":"kal","2B":"kal",3:"kal"},{name:"Kannada",local:"ಕನ್ನಡ",1:"kn",2:"kan","2T":"kan","2B":"kan",3:"kan"},{name:"Kanuri",local:"Kanuri",1:"kr",2:"kau","2T":"kau","2B":"kau",3:"kau"},{name:"Kashmiri",local:"كشميري",1:"ks",2:"kas","2T":"kas","2B":"kas",3:"kas"},{name:"Kazakh",local:"Қазақша",1:"kk",2:"kaz","2T":"kaz","2B":"kaz",3:"kaz"},{name:"Khmer",local:"ភាសាខ្មែរ",1:"km",2:"khm","2T":"khm","2B":"khm",3:"khm"},{name:"Kikuyu",local:"Gĩkũyũ",1:"ki",2:"kik","2T":"kik","2B":"kik",3:"kik"},{name:"Kinyarwanda",local:"Kinyarwanda",1:"rw",2:"kin","2T":"kin","2B":"kin",3:"kin"},{name:"Kyrgyz",local:"Кыргызча",1:"ky",2:"kir","2T":"kir","2B":"kir",3:"kir"},{name:"Komi",local:"Коми",1:"kv",2:"kom","2T":"kom","2B":"kom",3:"kom"},{name:"Kongo",local:"Kongo",1:"kg",2:"kon","2T":"kon","2B":"kon",3:"kon"},{name:"Korean",local:"한국어",1:"ko",2:"kor","2T":"kor","2B":"kor",3:"kor"},{name:"Kurdish",local:"Kurdî",1:"ku",2:"kur","2T":"kur","2B":"kur",3:"kur"},{name:"Kwanyama",local:"Kuanyama",1:"kj",2:"kua","2T":"kua","2B":"kua",3:"kua"},{name:"Latin",local:"Latina",1:"la",2:"lat","2T":"lat","2B":"lat",3:"lat"},{name:"Luxembourgish",local:"Lëtzebuergesch",1:"lb",2:"ltz","2T":"ltz","2B":"ltz",3:"ltz"},{name:"Ganda",local:"Luganda",1:"lg",2:"lug","2T":"lug","2B":"lug",3:"lug"},{name:"Limburgish",local:"Limburgs",1:"li",2:"lim","2T":"lim","2B":"lim",3:"lim"},{name:"Lingala",local:"Lingála",1:"ln",2:"lin","2T":"lin","2B":"lin",3:"lin"},{name:"Lao",local:"ພາສາລາວ",1:"lo",2:"lao","2T":"lao","2B":"lao",3:"lao"},{name:"Lithuanian",local:"Lietuvių",1:"lt",2:"lit","2T":"lit","2B":"lit",3:"lit"},{name:"Luba-Katanga",local:"Tshiluba",1:"lu",2:"lub","2T":"lub","2B":"lub",3:"lub"},{name:"Latvian",local:"Latviešu",1:"lv",2:"lav","2T":"lav","2B":"lav",3:"lav"},{name:"Manx",local:"Gaelg",1:"gv",2:"glv","2T":"glv","2B":"glv",3:"glv"},{name:"Macedonian",local:"Македонски",1:"mk",2:"mkd","2T":"mkd","2B":"mac",3:"mkd"},{name:"Malagasy",local:"Malagasy",1:"mg",2:"mlg","2T":"mlg","2B":"mlg",3:"mlg"},{name:"Malay",local:"Bahasa Melayu",1:"ms",2:"msa","2T":"msa","2B":"may",3:"msa"},{name:"Malayalam",local:"മലയാളം",1:"ml",2:"mal","2T":"mal","2B":"mal",3:"mal"},{name:"Maltese",local:"Malti",1:"mt",2:"mlt","2T":"mlt","2B":"mlt",3:"mlt"},{name:"Māori",local:"Māori",1:"mi",2:"mri","2T":"mri","2B":"mao",3:"mri"},{name:"Marathi",local:"मराठी",1:"mr",2:"mar","2T":"mar","2B":"mar",3:"mar"},{name:"Marshallese",local:"Kajin M̧ajeļ",1:"mh",2:"mah","2T":"mah","2B":"mah",3:"mah"},{name:"Mongolian",local:"Монгол",1:"mn",2:"mon","2T":"mon","2B":"mon",3:"mon"},{name:"Nauru",local:"Dorerin Naoero",1:"na",2:"nau","2T":"nau","2B":"nau",3:"nau"},{name:"Navajo",local:"Diné Bizaad",1:"nv",2:"nav","2T":"nav","2B":"nav",3:"nav"},{name:"Northern Ndebele",local:"isiNdebele",1:"nd",2:"nde","2T":"nde","2B":"nde",3:"nde"},{name:"Nepali",local:"नेपाली",1:"ne",2:"nep","2T":"nep","2B":"nep",3:"nep"},{name:"Ndonga",local:"Owambo",1:"ng",2:"ndo","2T":"ndo","2B":"ndo",3:"ndo"},{name:"Norwegian Bokmål",local:"Norsk (Bokmål)",1:"nb",2:"nob","2T":"nob","2B":"nob",3:"nob"},{name:"Norwegian Nynorsk",local:"Norsk (Nynorsk)",1:"nn",2:"nno","2T":"nno","2B":"nno",3:"nno"},{name:"Norwegian",local:"Norsk",1:"no",2:"nor","2T":"nor","2B":"nor",3:"nor"},{name:"Nuosu",local:"ꆈꌠ꒿ Nuosuhxop",1:"ii",2:"iii","2T":"iii","2B":"iii",3:"iii"},{name:"Southern Ndebele",local:"isiNdebele",1:"nr",2:"nbl","2T":"nbl","2B":"nbl",3:"nbl"},{name:"Occitan",local:"Occitan",1:"oc",2:"oci","2T":"oci","2B":"oci",3:"oci"},{name:"Ojibwe",local:"ᐊᓂᔑᓈᐯᒧᐎᓐ",1:"oj",2:"oji","2T":"oji","2B":"oji",3:"oji"},{name:"Old Church Slavonic",local:"Словѣ́ньскъ",1:"cu",2:"chu","2T":"chu","2B":"chu",3:"chu"},{name:"Oromo",local:"Afaan Oromoo",1:"om",2:"orm","2T":"orm","2B":"orm",3:"orm"},{name:"Oriya",local:"ଓଡି଼ଆ",1:"or",2:"ori","2T":"ori","2B":"ori",3:"ori"},{name:"Ossetian",local:"Ирон æвзаг",1:"os",2:"oss","2T":"oss","2B":"oss",3:"oss"},{name:"Panjabi",local:"ਪੰਜਾਬੀ",1:"pa",2:"pan","2T":"pan","2B":"pan",3:"pan"},{name:"Pāli",local:"पाऴि",1:"pi",2:"pli","2T":"pli","2B":"pli",3:"pli"},{name:"Persian",local:"فارسی",1:"fa",2:"fas","2T":"fas","2B":"per",3:"fas"},{name:"Polish",local:"Polski",1:"pl",2:"pol","2T":"pol","2B":"pol",3:"pol"},{name:"Pashto",local:"پښتو",1:"ps",2:"pus","2T":"pus","2B":"pus",3:"pus"},{name:"Portuguese",local:"Português",1:"pt",2:"por","2T":"por","2B":"por",3:"por"},{name:"Quechua",local:"Runa Simi",1:"qu",2:"que","2T":"que","2B":"que",3:"que"},{name:"Romansh",local:"Rumantsch",1:"rm",2:"roh","2T":"roh","2B":"roh",3:"roh"},{name:"Kirundi",local:"Kirundi",1:"rn",2:"run","2T":"run","2B":"run",3:"run"},{name:"Romanian",local:"Română",1:"ro",2:"ron","2T":"ron","2B":"rum",3:"ron"},{name:"Russian",local:"Русский",1:"ru",2:"rus","2T":"rus","2B":"rus",3:"rus"},{name:"Sanskrit",local:"संस्कृतम्",1:"sa",2:"san","2T":"san","2B":"san",3:"san"},{name:"Sardinian",local:"Sardu",1:"sc",2:"srd","2T":"srd","2B":"srd",3:"srd"},{name:"Sindhi",local:"سنڌي‎",1:"sd",2:"snd","2T":"snd","2B":"snd",3:"snd"},{name:"Northern Sami",local:"Sámegiella",1:"se",2:"sme","2T":"sme","2B":"sme",3:"sme"},{name:"Samoan",local:"Gagana Sāmoa",1:"sm",2:"smo","2T":"smo","2B":"smo",3:"smo"},{name:"Sango",local:"Sängö",1:"sg",2:"sag","2T":"sag","2B":"sag",3:"sag"},{name:"Serbian",local:"Српски",1:"sr",2:"srp","2T":"srp","2B":"srp",3:"srp"},{name:"Gaelic",local:"Gàidhlig",1:"gd",2:"gla","2T":"gla","2B":"gla",3:"gla"},{name:"Shona",local:"ChiShona",1:"sn",2:"sna","2T":"sna","2B":"sna",3:"sna"},{name:"Sinhala",local:"සිංහල",1:"si",2:"sin","2T":"sin","2B":"sin",3:"sin"},{name:"Slovak",local:"Slovenčina",1:"sk",2:"slk","2T":"slk","2B":"slo",3:"slk"},{name:"Slovene",local:"Slovenščina",1:"sl",2:"slv","2T":"slv","2B":"slv",3:"slv"},{name:"Somali",local:"Soomaaliga",1:"so",2:"som","2T":"som","2B":"som",3:"som"},{name:"Southern Sotho",local:"Sesotho",1:"st",2:"sot","2T":"sot","2B":"sot",3:"sot"},{name:"Spanish",local:"Español",1:"es",2:"spa","2T":"spa","2B":"spa",3:"spa"},{name:"Sundanese",local:"Basa Sunda",1:"su",2:"sun","2T":"sun","2B":"sun",3:"sun"},{name:"Swahili",local:"Kiswahili",1:"sw",2:"swa","2T":"swa","2B":"swa",3:"swa"},{name:"Swati",local:"SiSwati",1:"ss",2:"ssw","2T":"ssw","2B":"ssw",3:"ssw"},{name:"Swedish",local:"Svenska",1:"sv",2:"swe","2T":"swe","2B":"swe",3:"swe"},{name:"Tamil",local:"தமிழ்",1:"ta",2:"tam","2T":"tam","2B":"tam",3:"tam"},{name:"Telugu",local:"తెలుగు",1:"te",2:"tel","2T":"tel","2B":"tel",3:"tel"},{name:"Tajik",local:"Тоҷикӣ",1:"tg",2:"tgk","2T":"tgk","2B":"tgk",3:"tgk"},{name:"Thai",local:"ภาษาไทย",1:"th",2:"tha","2T":"tha","2B":"tha",3:"tha"},{name:"Tigrinya",local:"ትግርኛ",1:"ti",2:"tir","2T":"tir","2B":"tir",3:"tir"},{name:"Tibetan Standard",local:"བོད་ཡིག",1:"bo",2:"bod","2T":"bod","2B":"tib",3:"bod"},{name:"Turkmen",local:"Türkmençe",1:"tk",2:"tuk","2T":"tuk","2B":"tuk",3:"tuk"},{name:"Tagalog",local:"Tagalog",1:"tl",2:"tgl","2T":"tgl","2B":"tgl",3:"tgl"},{name:"Tswana",local:"Setswana",1:"tn",2:"tsn","2T":"tsn","2B":"tsn",3:"tsn"},{name:"Tonga",local:"faka Tonga",1:"to",2:"ton","2T":"ton","2B":"ton",3:"ton"},{name:"Turkish",local:"Türkçe",1:"tr",2:"tur","2T":"tur","2B":"tur",3:"tur"},{name:"Tsonga",local:"Xitsonga",1:"ts",2:"tso","2T":"tso","2B":"tso",3:"tso"},{name:"Tatar",local:"Татарча",1:"tt",2:"tat","2T":"tat","2B":"tat",3:"tat"},{name:"Twi",local:"Twi",1:"tw",2:"twi","2T":"twi","2B":"twi",3:"twi"},{name:"Tahitian",local:"Reo Mā’ohi",1:"ty",2:"tah","2T":"tah","2B":"tah",3:"tah"},{name:"Uyghur",local:"ئۇيغۇرچه",1:"ug",2:"uig","2T":"uig","2B":"uig",3:"uig"},{name:"Ukrainian",local:"Українська",1:"uk",2:"ukr","2T":"ukr","2B":"ukr",3:"ukr"},{name:"Urdu",local:"اردو",1:"ur",2:"urd","2T":"urd","2B":"urd",3:"urd"},{name:"Uzbek",local:"O‘zbek",1:"uz",2:"uzb","2T":"uzb","2B":"uzb",3:"uzb"},{name:"Venda",local:"Tshivenḓa",1:"ve",2:"ven","2T":"ven","2B":"ven",3:"ven"},{name:"Vietnamese",local:"Tiếng Việt",1:"vi",2:"vie","2T":"vie","2B":"vie",3:"vie"},{name:"Volapük",local:"Volapük",1:"vo",2:"vol","2T":"vol","2B":"vol",3:"vol"},{name:"Walloon",local:"Walon",1:"wa",2:"wln","2T":"wln","2B":"wln",3:"wln"},{name:"Welsh",local:"Cymraeg",1:"cy",2:"cym","2T":"cym","2B":"wel",3:"cym"},{name:"Wolof",local:"Wolof",1:"wo",2:"wol","2T":"wol","2B":"wol",3:"wol"},{name:"Western Frisian",local:"Frysk",1:"fy",2:"fry","2T":"fry","2B":"fry",3:"fry"},{name:"Xhosa",local:"isiXhosa",1:"xh",2:"xho","2T":"xho","2B":"xho",3:"xho"},{name:"Yiddish",local:"ייִדיש",1:"yi",2:"yid","2T":"yid","2B":"yid",3:"yid"},{name:"Yoruba",local:"Yorùbá",1:"yo",2:"yor","2T":"yor","2B":"yor",3:"yor"},{name:"Zhuang",local:"Cuengh",1:"za",2:"zha","2T":"zha","2B":"zha",3:"zha"},{name:"Zulu",local:"isiZulu",1:"zu",2:"zul","2T":"zul","2B":"zul",3:"zul"}]},7576:(e,t,o)=>{var a=o(5457),n={all:function(){return a},has:function(e,t){return void 0!==i(e,t)},codes:function(e){if((function(e){return-1!==[1,2,3,"1","2","2B","2T","3"].indexOf(e)})(e))return r(a,(function(t){return t[e]}))},names:function(e){return r(a,(function(t){return e?t.local:t.name}))},where:i};function i(e,t){for(var o=0;o<a.length;o++)if(t===a[o][e])return a[o]}function r(e,t){var o,a=[];for(o=0;o<e.length;o++)a.push(t(e[o],o));return a}e.exports=n},3465:(e,t,o)=>{e=o.nmd(e);var a="__lodash_hash_undefined__",n=9007199254740991,i="[object Arguments]",r="[object Boolean]",s="[object Date]",E="[object Function]",_="[object GeneratorFunction]",T="[object Map]",l="[object Number]",S="[object Object]",u="[object Promise]",d="[object RegExp]",c="[object Set]",A="[object String]",I="[object Symbol]",O="[object WeakMap]",N="[object ArrayBuffer]",R="[object DataView]",m="[object Float32Array]",p="[object Float64Array]",h="[object Int8Array]",L="[object Int16Array]",f="[object Int32Array]",C="[object Uint8Array]",D="[object Uint8ClampedArray]",g="[object Uint16Array]",v="[object Uint32Array]",P=/\w*$/,y=/^\[object .+?Constructor\]$/,B=/^(?:0|[1-9]\d*)$/,b={};b[i]=b["[object Array]"]=b[N]=b[R]=b[r]=b[s]=b[m]=b[p]=b[h]=b[L]=b[f]=b[T]=b[l]=b[S]=b[d]=b[c]=b[A]=b[I]=b[C]=b[D]=b[g]=b[v]=!0,b["[object Error]"]=b[E]=b[O]=!1;var M="object"==typeof o.g&&o.g&&o.g.Object===Object&&o.g,U="object"==typeof self&&self&&self.Object===Object&&self,W=M||U||Function("return this")(),G=t&&!t.nodeType&&t,F=G&&e&&!e.nodeType&&e,k=F&&F.exports===G;function w(e,t){return e.set(t[0],t[1]),e}function H(e,t){return e.add(t),e}function V(e,t,o,a){var n=-1,i=e?e.length:0;for(a&&i&&(o=e[++n]);++n<i;)o=t(o,e[n],n,e);return o}function Y(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}function z(e){var t=-1,o=Array(e.size);return e.forEach((function(e,a){o[++t]=[a,e]})),o}function x(e,t){return function(o){return e(t(o))}}function K(e){var t=-1,o=Array(e.size);return e.forEach((function(e){o[++t]=e})),o}var j,Q=Array.prototype,X=Function.prototype,$=Object.prototype,q=W["__core-js_shared__"],J=(j=/[^.]+$/.exec(q&&q.keys&&q.keys.IE_PROTO||""))?"Symbol(src)_1."+j:"",Z=X.toString,ee=$.hasOwnProperty,te=$.toString,oe=RegExp("^"+Z.call(ee).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ae=k?W.Buffer:void 0,ne=W.Symbol,ie=W.Uint8Array,re=x(Object.getPrototypeOf,Object),se=Object.create,Ee=$.propertyIsEnumerable,_e=Q.splice,Te=Object.getOwnPropertySymbols,le=ae?ae.isBuffer:void 0,Se=x(Object.keys,Object),ue=Fe(W,"DataView"),de=Fe(W,"Map"),ce=Fe(W,"Promise"),Ae=Fe(W,"Set"),Ie=Fe(W,"WeakMap"),Oe=Fe(Object,"create"),Ne=Ye(ue),Re=Ye(de),me=Ye(ce),pe=Ye(Ae),he=Ye(Ie),Le=ne?ne.prototype:void 0,fe=Le?Le.valueOf:void 0;function Ce(e){var t=-1,o=e?e.length:0;for(this.clear();++t<o;){var a=e[t];this.set(a[0],a[1])}}function De(e){var t=-1,o=e?e.length:0;for(this.clear();++t<o;){var a=e[t];this.set(a[0],a[1])}}function ge(e){var t=-1,o=e?e.length:0;for(this.clear();++t<o;){var a=e[t];this.set(a[0],a[1])}}function ve(e){this.__data__=new De(e)}function Pe(e,t){var o=xe(e)||(function(e){return(function(e){return(function(e){return!!e&&"object"==typeof e})(e)&&Ke(e)})(e)&&ee.call(e,"callee")&&(!Ee.call(e,"callee")||te.call(e)==i)})(e)?(function(e,t){for(var o=-1,a=Array(e);++o<e;)a[o]=t(o);return a})(e.length,String):[],a=o.length,n=!!a;for(var r in e)!t&&!ee.call(e,r)||n&&("length"==r||He(r,a))||o.push(r);return o}function ye(e,t,o){var a=e[t];ee.call(e,t)&&ze(a,o)&&(void 0!==o||t in e)||(e[t]=o)}function Be(e,t){for(var o=e.length;o--;)if(ze(e[o][0],t))return o;return-1}function be(e,t,o,a,n,u,O){var y;if(a&&(y=u?a(e,n,u,O):a(e)),void 0!==y)return y;if(!Xe(e))return e;var B=xe(e);if(B){if(y=(function(e){var t=e.length,o=e.constructor(t);t&&"string"==typeof e[0]&&ee.call(e,"index")&&(o.index=e.index,o.input=e.input);return o})(e),!t)return(function(e,t){var o=-1,a=e.length;t||(t=Array(a));for(;++o<a;)t[o]=e[o];return t})(e,y)}else{var M=we(e),U=M==E||M==_;if(je(e))return(function(e,t){if(t)return e.slice();var o=new e.constructor(e.length);return e.copy(o),o})(e,t);if(M==S||M==i||U&&!u){if(Y(e))return u?e:{};if(y=(function(e){return"function"!=typeof e.constructor||Ve(e)?{}:(t=re(e),Xe(t)?se(t):{});var t})(U?{}:e),!t)return(function(e,t){return We(e,ke(e),t)})(e,(function(e,t){return e&&We(t,$e(t),e)})(y,e))}else{if(!b[M])return u?e:{};y=(function(e,t,o,a){var n=e.constructor;switch(t){case N:return Ue(e);case r:case s:return new n(+e);case R:return(function(e,t){var o=t?Ue(e.buffer):e.buffer;return new e.constructor(o,e.byteOffset,e.byteLength)})(e,a);case m:case p:case h:case L:case f:case C:case D:case g:case v:return(function(e,t){var o=t?Ue(e.buffer):e.buffer;return new e.constructor(o,e.byteOffset,e.length)})(e,a);case T:return(function(e,t,o){return V(t?o(z(e),!0):z(e),w,new e.constructor)})(e,a,o);case l:case A:return new n(e);case d:return(function(e){var t=new e.constructor(e.source,P.exec(e));return t.lastIndex=e.lastIndex,t})(e);case c:return(function(e,t,o){return V(t?o(K(e),!0):K(e),H,new e.constructor)})(e,a,o);case I:return i=e,fe?Object(fe.call(i)):{}}var i})(e,M,be,t)}}O||(O=new ve);var W=O.get(e);if(W)return W;if(O.set(e,y),!B)var G=o?(function(e){return(function(e,t,o){var a=t(e);return xe(e)?a:(function(e,t){for(var o=-1,a=t.length,n=e.length;++o<a;)e[n+o]=t[o];return e})(a,o(e))})(e,$e,ke)})(e):$e(e);return(function(e,t){for(var o=-1,a=e?e.length:0;++o<a&&!1!==t(e[o],o,e););})(G||e,(function(n,i){G&&(n=e[i=n]),ye(y,i,be(n,t,o,a,i,e,O))})),y}function Me(e){return!(!Xe(e)||(t=e,J&&J in t))&&(Qe(e)||Y(e)?oe:y).test(Ye(e));var t}function Ue(e){var t=new e.constructor(e.byteLength);return new ie(t).set(new ie(e)),t}function We(e,t,o,a){o||(o={});for(var n=-1,i=t.length;++n<i;){var r=t[n],s=a?a(o[r],e[r],r,o,e):void 0;ye(o,r,void 0===s?e[r]:s)}return o}function Ge(e,t){var o,a,n=e.__data__;return("string"==(a=typeof(o=t))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==o:null===o)?n["string"==typeof t?"string":"hash"]:n.map}function Fe(e,t){var o=(function(e,t){return null==e?void 0:e[t]})(e,t);return Me(o)?o:void 0}Ce.prototype.clear=function(){this.__data__=Oe?Oe(null):{}},Ce.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},Ce.prototype.get=function(e){var t=this.__data__;if(Oe){var o=t[e];return o===a?void 0:o}return ee.call(t,e)?t[e]:void 0},Ce.prototype.has=function(e){var t=this.__data__;return Oe?void 0!==t[e]:ee.call(t,e)},Ce.prototype.set=function(e,t){return this.__data__[e]=Oe&&void 0===t?a:t,this},De.prototype.clear=function(){this.__data__=[]},De.prototype.delete=function(e){var t=this.__data__,o=Be(t,e);return!(o<0)&&(o==t.length-1?t.pop():_e.call(t,o,1),!0)},De.prototype.get=function(e){var t=this.__data__,o=Be(t,e);return o<0?void 0:t[o][1]},De.prototype.has=function(e){return Be(this.__data__,e)>-1},De.prototype.set=function(e,t){var o=this.__data__,a=Be(o,e);return a<0?o.push([e,t]):o[a][1]=t,this},ge.prototype.clear=function(){this.__data__={hash:new Ce,map:new(de||De),string:new Ce}},ge.prototype.delete=function(e){return Ge(this,e).delete(e)},ge.prototype.get=function(e){return Ge(this,e).get(e)},ge.prototype.has=function(e){return Ge(this,e).has(e)},ge.prototype.set=function(e,t){return Ge(this,e).set(e,t),this},ve.prototype.clear=function(){this.__data__=new De},ve.prototype.delete=function(e){return this.__data__.delete(e)},ve.prototype.get=function(e){return this.__data__.get(e)},ve.prototype.has=function(e){return this.__data__.has(e)},ve.prototype.set=function(e,t){var o=this.__data__;if(o instanceof De){var a=o.__data__;if(!de||a.length<199)return a.push([e,t]),this;o=this.__data__=new ge(a)}return o.set(e,t),this};var ke=Te?x(Te,Object):function(){return[]},we=function(e){return te.call(e)};function He(e,t){return!!(t=null==t?n:t)&&("number"==typeof e||B.test(e))&&e>-1&&e%1==0&&e<t}function Ve(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||$)}function Ye(e){if(null!=e){try{return Z.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function ze(e,t){return e===t||e!=e&&t!=t}(ue&&we(new ue(new ArrayBuffer(1)))!=R||de&&we(new de)!=T||ce&&we(ce.resolve())!=u||Ae&&we(new Ae)!=c||Ie&&we(new Ie)!=O)&&(we=function(e){var t=te.call(e),o=t==S?e.constructor:void 0,a=o?Ye(o):void 0;if(a)switch(a){case Ne:return R;case Re:return T;case me:return u;case pe:return c;case he:return O}return t});var xe=Array.isArray;function Ke(e){return null!=e&&(function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=n})(e.length)&&!Qe(e)}var je=le||function(){return!1};function Qe(e){var t=Xe(e)?te.call(e):"";return t==E||t==_}function Xe(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function $e(e){return Ke(e)?Pe(e):(function(e){if(!Ve(e))return Se(e);var t=[];for(var o in Object(e))ee.call(e,o)&&"constructor"!=o&&t.push(o);return t})(e)}e.exports=function(e){return be(e,!0,!0)}},1296:(e,t,o)=>{var a=/^\s+|\s+$/g,n=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,r=/^0o[0-7]+$/i,s=parseInt,E="object"==typeof o.g&&o.g&&o.g.Object===Object&&o.g,_="object"==typeof self&&self&&self.Object===Object&&self,T=E||_||Function("return this")(),l=Object.prototype.toString,S=Math.max,u=Math.min,d=function(){return T.Date.now()};function c(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function A(e){if("number"==typeof e)return e;if((function(e){return"symbol"==typeof e||(function(e){return!!e&&"object"==typeof e})(e)&&"[object Symbol]"==l.call(e)})(e))return NaN;if(c(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=c(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(a,"");var o=i.test(e);return o||r.test(e)?s(e.slice(2),o?2:8):n.test(e)?NaN:+e}e.exports=function(e,t,o){var a,n,i,r,s,E,_=0,T=!1,l=!1,I=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function O(t){var o=a,i=n;return a=n=void 0,_=t,r=e.apply(i,o)}function N(e){return _=e,s=setTimeout(m,t),T?O(e):r}function R(e){var o=e-E;return void 0===E||o>=t||o<0||l&&e-_>=i}function m(){var e=d();if(R(e))return p(e);s=setTimeout(m,(function(e){var o=t-(e-E);return l?u(o,i-(e-_)):o})(e))}function p(e){return s=void 0,I&&a?O(e):(a=n=void 0,r)}function h(){var e=d(),o=R(e);if(a=arguments,n=this,E=e,o){if(void 0===s)return N(E);if(l)return s=setTimeout(m,t),O(E)}return void 0===s&&(s=setTimeout(m,t)),r}return t=A(t)||0,c(o)&&(T=!!o.leading,i=(l="maxWait"in o)?S(A(o.maxWait)||0,t):i,I="trailing"in o?!!o.trailing:I),h.cancel=function(){void 0!==s&&clearTimeout(s),_=0,a=E=n=s=void 0},h.flush=function(){return void 0===s?r:p(d())},h}},394:(e,t,o)=>{var a="__lodash_hash_undefined__",n=9007199254740991,i=/^\[object .+?Constructor\]$/,r="object"==typeof o.g&&o.g&&o.g.Object===Object&&o.g,s="object"==typeof self&&self&&self.Object===Object&&self,E=r||s||Function("return this")();function _(e,t,o){switch(o.length){case 0:return e.call(t);case 1:return e.call(t,o[0]);case 2:return e.call(t,o[0],o[1]);case 3:return e.call(t,o[0],o[1],o[2])}return e.apply(t,o)}function T(e,t){return!!(e?e.length:0)&&(function(e,t,o){if(t!=t)return(function(e,t,o,a){var n=e.length,i=o+(a?1:-1);for(;a?i--:++i<n;)if(t(e[i],i,e))return i;return-1})(e,u,o);var a=o-1,n=e.length;for(;++a<n;)if(e[a]===t)return a;return-1})(e,t,0)>-1}function l(e,t,o){for(var a=-1,n=e?e.length:0;++a<n;)if(o(t,e[a]))return!0;return!1}function S(e,t){for(var o=-1,a=e?e.length:0,n=Array(a);++o<a;)n[o]=t(e[o],o,e);return n}function u(e){return e!=e}function d(e){return function(t){return e(t)}}function c(e,t){return e.has(t)}var A,I=Array.prototype,O=Function.prototype,N=Object.prototype,R=E["__core-js_shared__"],m=(A=/[^.]+$/.exec(R&&R.keys&&R.keys.IE_PROTO||""))?"Symbol(src)_1."+A:"",p=O.toString,h=N.hasOwnProperty,L=N.toString,f=RegExp("^"+p.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),C=I.splice,D=Math.max,g=Math.min,v=k(E,"Map"),P=k(Object,"create");function y(e){var t=-1,o=e?e.length:0;for(this.clear();++t<o;){var a=e[t];this.set(a[0],a[1])}}function B(e){var t=-1,o=e?e.length:0;for(this.clear();++t<o;){var a=e[t];this.set(a[0],a[1])}}function b(e){var t=-1,o=e?e.length:0;for(this.clear();++t<o;){var a=e[t];this.set(a[0],a[1])}}function M(e){var t=-1,o=e?e.length:0;for(this.__data__=new b;++t<o;)this.add(e[t])}function U(e,t){for(var o,a,n=e.length;n--;)if((o=e[n][0])===(a=t)||o!=o&&a!=a)return n;return-1}function W(e){if(!z(e)||(t=e,m&&m in t))return!1;var t,o=Y(e)||(function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t})(e)?f:i;return o.test((function(e){if(null!=e){try{return p.call(e)}catch(e){}try{return e+""}catch(e){}}return""})(e))}function G(e){return(function(e){return(function(e){return!!e&&"object"==typeof e})(e)&&(function(e){return null!=e&&(function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=n})(e.length)&&!Y(e)})(e)})(e)?e:[]}function F(e,t){var o,a,n=e.__data__;return("string"==(a=typeof(o=t))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==o:null===o)?n["string"==typeof t?"string":"hash"]:n.map}function k(e,t){var o=(function(e,t){return null==e?void 0:e[t]})(e,t);return W(o)?o:void 0}y.prototype.clear=function(){this.__data__=P?P(null):{}},y.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},y.prototype.get=function(e){var t=this.__data__;if(P){var o=t[e];return o===a?void 0:o}return h.call(t,e)?t[e]:void 0},y.prototype.has=function(e){var t=this.__data__;return P?void 0!==t[e]:h.call(t,e)},y.prototype.set=function(e,t){return this.__data__[e]=P&&void 0===t?a:t,this},B.prototype.clear=function(){this.__data__=[]},B.prototype.delete=function(e){var t=this.__data__,o=U(t,e);return!(o<0)&&(o==t.length-1?t.pop():C.call(t,o,1),!0)},B.prototype.get=function(e){var t=this.__data__,o=U(t,e);return o<0?void 0:t[o][1]},B.prototype.has=function(e){return U(this.__data__,e)>-1},B.prototype.set=function(e,t){var o=this.__data__,a=U(o,e);return a<0?o.push([e,t]):o[a][1]=t,this},b.prototype.clear=function(){this.__data__={hash:new y,map:new(v||B),string:new y}},b.prototype.delete=function(e){return F(this,e).delete(e)},b.prototype.get=function(e){return F(this,e).get(e)},b.prototype.has=function(e){return F(this,e).has(e)},b.prototype.set=function(e,t){return F(this,e).set(e,t),this},M.prototype.add=M.prototype.push=function(e){return this.__data__.set(e,a),this},M.prototype.has=function(e){return this.__data__.has(e)};var w,H,V=(w=function(e){var t=S(e,G);return t.length&&t[0]===e[0]?(function(e,t,o){for(var a=o?l:T,n=e[0].length,i=e.length,r=i,s=Array(i),E=1/0,_=[];r--;){var u=e[r];r&&t&&(u=S(u,d(t))),E=g(u.length,E),s[r]=!o&&(t||n>=120&&u.length>=120)?new M(r&&u):void 0}u=e[0];var A=-1,I=s[0];e:for(;++A<n&&_.length<E;){var O=u[A],N=t?t(O):O;if(O=o||0!==O?O:0,!(I?c(I,N):a(_,N,o))){for(r=i;--r;){var R=s[r];if(!(R?c(R,N):a(e[r],N,o)))continue e}I&&I.push(N),_.push(O)}}return _})(t):[]},H=D(void 0===H?w.length-1:H,0),function(){for(var e=arguments,t=-1,o=D(e.length-H,0),a=Array(o);++t<o;)a[t]=e[H+t];t=-1;for(var n=Array(H+1);++t<H;)n[t]=e[t];return n[H]=a,_(w,this,n)});function Y(e){var t=z(e)?L.call(e):"";return"[object Function]"==t||"[object GeneratorFunction]"==t}function z(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}e.exports=V},2307:(e,t,o)=>{e=o.nmd(e);var a="__lodash_hash_undefined__",n=9007199254740991,i="[object Arguments]",r="[object Array]",s="[object Boolean]",E="[object Date]",_="[object Error]",T="[object Function]",l="[object Map]",S="[object Number]",u="[object Object]",d="[object Promise]",c="[object RegExp]",A="[object Set]",I="[object String]",O="[object Symbol]",N="[object WeakMap]",R="[object ArrayBuffer]",m="[object DataView]",p=/^\[object .+?Constructor\]$/,h=/^(?:0|[1-9]\d*)$/,L={};L["[object Float32Array]"]=L["[object Float64Array]"]=L["[object Int8Array]"]=L["[object Int16Array]"]=L["[object Int32Array]"]=L["[object Uint8Array]"]=L["[object Uint8ClampedArray]"]=L["[object Uint16Array]"]=L["[object Uint32Array]"]=!0,L[i]=L[r]=L[R]=L[s]=L[m]=L[E]=L[_]=L[T]=L[l]=L[S]=L[u]=L[c]=L[A]=L[I]=L[N]=!1;var f="object"==typeof o.g&&o.g&&o.g.Object===Object&&o.g,C="object"==typeof self&&self&&self.Object===Object&&self,D=f||C||Function("return this")(),g=t&&!t.nodeType&&t,v=g&&e&&!e.nodeType&&e,P=v&&v.exports===g,y=P&&f.process,B=(function(){try{return y&&y.binding&&y.binding("util")}catch(e){}})(),b=B&&B.isTypedArray;function M(e,t){for(var o=-1,a=null==e?0:e.length;++o<a;)if(t(e[o],o,e))return!0;return!1}function U(e){var t=-1,o=Array(e.size);return e.forEach((function(e,a){o[++t]=[a,e]})),o}function W(e){var t=-1,o=Array(e.size);return e.forEach((function(e){o[++t]=e})),o}var G,F,k,w=Array.prototype,H=Function.prototype,V=Object.prototype,Y=D["__core-js_shared__"],z=H.toString,x=V.hasOwnProperty,K=(G=/[^.]+$/.exec(Y&&Y.keys&&Y.keys.IE_PROTO||""))?"Symbol(src)_1."+G:"",j=V.toString,Q=RegExp("^"+z.call(x).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),X=P?D.Buffer:void 0,$=D.Symbol,q=D.Uint8Array,J=V.propertyIsEnumerable,Z=w.splice,ee=$?$.toStringTag:void 0,te=Object.getOwnPropertySymbols,oe=X?X.isBuffer:void 0,ae=(F=Object.keys,k=Object,function(e){return F(k(e))}),ne=Be(D,"DataView"),ie=Be(D,"Map"),re=Be(D,"Promise"),se=Be(D,"Set"),Ee=Be(D,"WeakMap"),_e=Be(Object,"create"),Te=We(ne),le=We(ie),Se=We(re),ue=We(se),de=We(Ee),ce=$?$.prototype:void 0,Ae=ce?ce.valueOf:void 0;function Ie(e){var t=-1,o=null==e?0:e.length;for(this.clear();++t<o;){var a=e[t];this.set(a[0],a[1])}}function Oe(e){var t=-1,o=null==e?0:e.length;for(this.clear();++t<o;){var a=e[t];this.set(a[0],a[1])}}function Ne(e){var t=-1,o=null==e?0:e.length;for(this.clear();++t<o;){var a=e[t];this.set(a[0],a[1])}}function Re(e){var t=-1,o=null==e?0:e.length;for(this.__data__=new Ne;++t<o;)this.add(e[t])}function me(e){var t=this.__data__=new Oe(e);this.size=t.size}function pe(e,t){var o=ke(e),a=!o&&Fe(e),n=!o&&!a&&we(e),i=!o&&!a&&!n&&xe(e),r=o||a||n||i,s=r?(function(e,t){for(var o=-1,a=Array(e);++o<e;)a[o]=t(o);return a})(e.length,String):[],E=s.length;for(var _ in e)!t&&!x.call(e,_)||r&&("length"==_||n&&("offset"==_||"parent"==_)||i&&("buffer"==_||"byteLength"==_||"byteOffset"==_)||Ue(_,E))||s.push(_);return s}function he(e,t){for(var o=e.length;o--;)if(Ge(e[o][0],t))return o;return-1}function Le(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":ee&&ee in Object(e)?(function(e){var t=x.call(e,ee),o=e[ee];try{e[ee]=void 0;var a=!0}catch(e){}var n=j.call(e);a&&(t?e[ee]=o:delete e[ee]);return n})(e):(function(e){return j.call(e)})(e)}function fe(e){return ze(e)&&Le(e)==i}function Ce(e,t,o,a,n){return e===t||(null==e||null==t||!ze(e)&&!ze(t)?e!=e&&t!=t:(function(e,t,o,a,n,T){var d=ke(e),N=ke(t),p=d?r:Me(e),h=N?r:Me(t),L=(p=p==i?u:p)==u,f=(h=h==i?u:h)==u,C=p==h;if(C&&we(e)){if(!we(t))return!1;d=!0,L=!1}if(C&&!L)return T||(T=new me),d||xe(e)?ve(e,t,o,a,n,T):(function(e,t,o,a,n,i,r){switch(o){case m:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case R:return!(e.byteLength!=t.byteLength||!i(new q(e),new q(t)));case s:case E:case S:return Ge(+e,+t);case _:return e.name==t.name&&e.message==t.message;case c:case I:return e==t+"";case l:var T=U;case A:var u=1&a;if(T||(T=W),e.size!=t.size&&!u)return!1;var d=r.get(e);if(d)return d==t;a|=2,r.set(e,t);var N=ve(T(e),T(t),a,n,i,r);return r.delete(e),N;case O:if(Ae)return Ae.call(e)==Ae.call(t)}return!1})(e,t,p,o,a,n,T);if(!(1&o)){var D=L&&x.call(e,"__wrapped__"),g=f&&x.call(t,"__wrapped__");if(D||g){var v=D?e.value():e,P=g?t.value():t;return T||(T=new me),n(v,P,o,a,T)}}if(!C)return!1;return T||(T=new me),(function(e,t,o,a,n,i){var r=1&o,s=Pe(e),E=s.length,_=Pe(t).length;if(E!=_&&!r)return!1;var T=E;for(;T--;){var l=s[T];if(!(r?l in t:x.call(t,l)))return!1}var S=i.get(e);if(S&&i.get(t))return S==t;var u=!0;i.set(e,t),i.set(t,e);var d=r;for(;++T<E;){var c=e[l=s[T]],A=t[l];if(a)var I=r?a(A,c,l,t,e,i):a(c,A,l,e,t,i);if(!(void 0===I?c===A||n(c,A,o,a,i):I)){u=!1;break}d||(d="constructor"==l)}if(u&&!d){var O=e.constructor,N=t.constructor;O==N||!("constructor"in e)||!("constructor"in t)||"function"==typeof O&&O instanceof O&&"function"==typeof N&&N instanceof N||(u=!1)}return i.delete(e),i.delete(t),u})(e,t,o,a,n,T)})(e,t,o,a,Ce,n))}function De(e){return!(!Ye(e)||(function(e){return!!K&&K in e})(e))&&(He(e)?Q:p).test(We(e))}function ge(e){if(o=(t=e)&&t.constructor,a="function"==typeof o&&o.prototype||V,t!==a)return ae(e);var t,o,a,n=[];for(var i in Object(e))x.call(e,i)&&"constructor"!=i&&n.push(i);return n}function ve(e,t,o,a,n,i){var r=1&o,s=e.length,E=t.length;if(s!=E&&!(r&&E>s))return!1;var _=i.get(e);if(_&&i.get(t))return _==t;var T=-1,l=!0,S=2&o?new Re:void 0;for(i.set(e,t),i.set(t,e);++T<s;){var u=e[T],d=t[T];if(a)var c=r?a(d,u,T,t,e,i):a(u,d,T,e,t,i);if(void 0!==c){if(c)continue;l=!1;break}if(S){if(!M(t,(function(e,t){if(r=t,!S.has(r)&&(u===e||n(u,e,o,a,i)))return S.push(t);var r}))){l=!1;break}}else if(u!==d&&!n(u,d,o,a,i)){l=!1;break}}return i.delete(e),i.delete(t),l}function Pe(e){return(function(e,t,o){var a=t(e);return ke(e)?a:(function(e,t){for(var o=-1,a=t.length,n=e.length;++o<a;)e[n+o]=t[o];return e})(a,o(e))})(e,Ke,be)}function ye(e,t){var o,a,n=e.__data__;return("string"==(a=typeof(o=t))||"number"==a||"symbol"==a||"boolean"==a?"__proto__"!==o:null===o)?n["string"==typeof t?"string":"hash"]:n.map}function Be(e,t){var o=(function(e,t){return null==e?void 0:e[t]})(e,t);return De(o)?o:void 0}Ie.prototype.clear=function(){this.__data__=_e?_e(null):{},this.size=0},Ie.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},Ie.prototype.get=function(e){var t=this.__data__;if(_e){var o=t[e];return o===a?void 0:o}return x.call(t,e)?t[e]:void 0},Ie.prototype.has=function(e){var t=this.__data__;return _e?void 0!==t[e]:x.call(t,e)},Ie.prototype.set=function(e,t){var o=this.__data__;return this.size+=this.has(e)?0:1,o[e]=_e&&void 0===t?a:t,this},Oe.prototype.clear=function(){this.__data__=[],this.size=0},Oe.prototype.delete=function(e){var t=this.__data__,o=he(t,e);return!(o<0)&&(o==t.length-1?t.pop():Z.call(t,o,1),--this.size,!0)},Oe.prototype.get=function(e){var t=this.__data__,o=he(t,e);return o<0?void 0:t[o][1]},Oe.prototype.has=function(e){return he(this.__data__,e)>-1},Oe.prototype.set=function(e,t){var o=this.__data__,a=he(o,e);return a<0?(++this.size,o.push([e,t])):o[a][1]=t,this},Ne.prototype.clear=function(){this.size=0,this.__data__={hash:new Ie,map:new(ie||Oe),string:new Ie}},Ne.prototype.delete=function(e){var t=ye(this,e).delete(e);return this.size-=t?1:0,t},Ne.prototype.get=function(e){return ye(this,e).get(e)},Ne.prototype.has=function(e){return ye(this,e).has(e)},Ne.prototype.set=function(e,t){var o=ye(this,e),a=o.size;return o.set(e,t),this.size+=o.size==a?0:1,this},Re.prototype.add=Re.prototype.push=function(e){return this.__data__.set(e,a),this},Re.prototype.has=function(e){return this.__data__.has(e)},me.prototype.clear=function(){this.__data__=new Oe,this.size=0},me.prototype.delete=function(e){var t=this.__data__,o=t.delete(e);return this.size=t.size,o},me.prototype.get=function(e){return this.__data__.get(e)},me.prototype.has=function(e){return this.__data__.has(e)},me.prototype.set=function(e,t){var o=this.__data__;if(o instanceof Oe){var a=o.__data__;if(!ie||a.length<199)return a.push([e,t]),this.size=++o.size,this;o=this.__data__=new Ne(a)}return o.set(e,t),this.size=o.size,this};var be=te?function(e){return null==e?[]:(e=Object(e),(function(e,t){for(var o=-1,a=null==e?0:e.length,n=0,i=[];++o<a;){var r=e[o];t(r,o,e)&&(i[n++]=r)}return i})(te(e),(function(t){return J.call(e,t)})))}:function(){return[]},Me=Le;function Ue(e,t){return!!(t=null==t?n:t)&&("number"==typeof e||h.test(e))&&e>-1&&e%1==0&&e<t}function We(e){if(null!=e){try{return z.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function Ge(e,t){return e===t||e!=e&&t!=t}(ne&&Me(new ne(new ArrayBuffer(1)))!=m||ie&&Me(new ie)!=l||re&&Me(re.resolve())!=d||se&&Me(new se)!=A||Ee&&Me(new Ee)!=N)&&(Me=function(e){var t=Le(e),o=t==u?e.constructor:void 0,a=o?We(o):"";if(a)switch(a){case Te:return m;case le:return l;case Se:return d;case ue:return A;case de:return N}return t});var Fe=fe((function(){return arguments})())?fe:function(e){return ze(e)&&x.call(e,"callee")&&!J.call(e,"callee")},ke=Array.isArray;var we=oe||function(){return!1};function He(e){if(!Ye(e))return!1;var t=Le(e);return t==T||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Ve(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=n}function Ye(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function ze(e){return null!=e&&"object"==typeof e}var xe=b?(function(e){return function(t){return e(t)}})(b):function(e){return ze(e)&&Ve(e.length)&&!!L[Le(e)]};function Ke(e){return null!=(t=e)&&Ve(t.length)&&!He(t)?pe(e):ge(e);var t}e.exports=function(e,t){return Ce(e,t)}},3096:(e,t,o)=>{var a="Expected a function",n=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,s=/^0o[0-7]+$/i,E=parseInt,_="object"==typeof o.g&&o.g&&o.g.Object===Object&&o.g,T="object"==typeof self&&self&&self.Object===Object&&self,l=_||T||Function("return this")(),S=Object.prototype.toString,u=Math.max,d=Math.min,c=function(){return l.Date.now()};function A(e,t,o){var n,i,r,s,E,_,T=0,l=!1,S=!1,A=!0;if("function"!=typeof e)throw new TypeError(a);function N(t){var o=n,a=i;return n=i=void 0,T=t,s=e.apply(a,o)}function R(e){return T=e,E=setTimeout(p,t),l?N(e):s}function m(e){var o=e-_;return void 0===_||o>=t||o<0||S&&e-T>=r}function p(){var e=c();if(m(e))return h(e);E=setTimeout(p,(function(e){var o=t-(e-_);return S?d(o,r-(e-T)):o})(e))}function h(e){return E=void 0,A&&n?N(e):(n=i=void 0,s)}function L(){var e=c(),o=m(e);if(n=arguments,i=this,_=e,o){if(void 0===E)return R(_);if(S)return E=setTimeout(p,t),N(_)}return void 0===E&&(E=setTimeout(p,t)),s}return t=O(t)||0,I(o)&&(l=!!o.leading,r=(S="maxWait"in o)?u(O(o.maxWait)||0,t):r,A="trailing"in o?!!o.trailing:A),L.cancel=function(){void 0!==E&&clearTimeout(E),T=0,n=_=i=E=void 0},L.flush=function(){return void 0===E?s:h(c())},L}function I(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function O(e){if("number"==typeof e)return e;if((function(e){return"symbol"==typeof e||(function(e){return!!e&&"object"==typeof e})(e)&&"[object Symbol]"==S.call(e)})(e))return NaN;if(I(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=I(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(n,"");var o=r.test(e);return o||s.test(e)?E(e.slice(2),o?2:8):i.test(e)?NaN:+e}e.exports=function(e,t,o){var n=!0,i=!0;if("function"!=typeof e)throw new TypeError(a);return I(o)&&(n="leading"in o?!!o.leading:n,i="trailing"in o?!!o.trailing:i),A(e,t,{leading:n,maxWait:t,trailing:i})}},9566:(e,t,o)=>{var a=o(8764).Buffer;e.exports=r,e.exports.decode=r,e.exports.encode=function(e){e=Object.assign({},e);let t=new Set;e.xt&&"string"==typeof e.xt&&t.add(e.xt);e.xt&&Array.isArray(e.xt)&&(t=new Set(e.xt));e.infoHashBuffer&&t.add(`urn:btih:${e.infoHashBuffer.toString("hex")}`);e.infoHash&&t.add(`urn:btih:${e.infoHash}`);e.infoHashV2Buffer&&t.add(e.xt=`urn:btmh:1220${e.infoHashV2Buffer.toString("hex")}`);e.infoHashV2&&t.add(`urn:btmh:1220${e.infoHashV2}`);const o=Array.from(t);1===o.length&&(e.xt=o[0]);o.length>1&&(e.xt=o);e.publicKeyBuffer&&(e.xs=`urn:btpk:${e.publicKeyBuffer.toString("hex")}`);e.publicKey&&(e.xs=`urn:btpk:${e.publicKey}`);e.name&&(e.dn=e.name);e.keywords&&(e.kt=e.keywords);e.announce&&(e.tr=e.announce);e.urlList&&(e.ws=e.urlList,delete e.as);e.peerAddresses&&(e["x.pe"]=e.peerAddresses);let a="magnet:?";return Object.keys(e).filter((e=>2===e.length||"x.pe"===e)).forEach(((t,o)=>{const n=Array.isArray(e[t])?e[t]:[e[t]];n.forEach(((e,n)=>{(o>0||n>0)&&("kt"!==t&&"so"!==t||0===n)&&(a+="&"),"dn"===t&&(e=encodeURIComponent(e).replace(/%20/g,"+")),"tr"!==t&&"as"!==t&&"ws"!==t||(e=encodeURIComponent(e)),"xs"!==t||e.startsWith("urn:btpk:")||(e=encodeURIComponent(e)),"kt"===t&&(e=encodeURIComponent(e)),"so"!==t&&(a+="kt"===t&&n>0?`+${e}`:`${t}=${e}`)})),"so"===t&&(a+=`${t}=${i.compose(n)}`)})),a};const n=o(5017),i=o(7500);function r(e){const t={},o=e.split("magnet:?")[1];let r;if((o&&o.length>=0?o.split("&"):[]).forEach((e=>{const o=e.split("=");if(2!==o.length)return;const a=o[0];let n=o[1];"dn"===a&&(n=decodeURIComponent(n).replace(/\+/g," ")),"tr"!==a&&"xs"!==a&&"as"!==a&&"ws"!==a||(n=decodeURIComponent(n)),"kt"===a&&(n=decodeURIComponent(n).split("+")),"ix"===a&&(n=Number(n)),"so"===a&&(n=i.parse(decodeURIComponent(n).split(","))),t[a]?(Array.isArray(t[a])||(t[a]=[t[a]]),t[a].push(n)):t[a]=n})),t.xt){(Array.isArray(t.xt)?t.xt:[t.xt]).forEach((e=>{if(r=e.match(/^urn:btih:(.{40})/))t.infoHash=r[1].toLowerCase();else if(r=e.match(/^urn:btih:(.{32})/)){const e=n.decode(r[1]);t.infoHash=a.from(e,"binary").toString("hex")}else(r=e.match(/^urn:btmh:1220(.{64})/))&&(t.infoHashV2=r[1].toLowerCase())}))}if(t.xs){(Array.isArray(t.xs)?t.xs:[t.xs]).forEach((e=>{(r=e.match(/^urn:btpk:(.{64})/))&&(t.publicKey=r[1].toLowerCase())}))}return t.infoHash&&(t.infoHashBuffer=a.from(t.infoHash,"hex")),t.infoHashV2&&(t.infoHashV2Buffer=a.from(t.infoHashV2,"hex")),t.publicKey&&(t.publicKeyBuffer=a.from(t.publicKey,"hex")),t.dn&&(t.name=t.dn),t.kt&&(t.keywords=t.kt),t.announce=[],("string"==typeof t.tr||Array.isArray(t.tr))&&(t.announce=t.announce.concat(t.tr)),t.urlList=[],("string"==typeof t.as||Array.isArray(t.as))&&(t.urlList=t.urlList.concat(t.as)),("string"==typeof t.ws||Array.isArray(t.ws))&&(t.urlList=t.urlList.concat(t.ws)),t.peerAddresses=[],("string"==typeof t["x.pe"]||Array.isArray(t["x.pe"]))&&(t.peerAddresses=t.peerAddresses.concat(t["x.pe"])),t.announce=Array.from(new Set(t.announce)),t.urlList=Array.from(new Set(t.urlList)),t.peerAddresses=Array.from(new Set(t.peerAddresses)),t}},6499:e=>{e.exports={"error-container":"error-container-OJnoc","error-image":"error-image-qU9Qo","error-message":"error-message-kW59Z","buttons-container":"buttons-container-tQonN","button-container":"button-container-vLSQK",label:"label-Up_te"}},9448:e=>{e.exports={"fade-in":"fade-in-pFkt_","toasts-container":"toasts-container-oKECy",router:"router-_65XU","error-container":"error-container-VZXwH","loader-container":"loader-container-vwvnb"}},8135:e=>{e.exports={"addon-details-container":"addon-details-container-ZQqDB","title-container":"title-container-fR02m",icon:"icon-ScXNu",logo:"logo-BujW_","name-container":"name-container-Gfhqw",name:"name-XNqfo",version:"version-w_xoN","section-container":"section-container-l3YaI","section-header":"section-header-bs8iy","section-label":"section-label-rYxQh","transport-url-label":"transport-url-label-EW7I5","disclaimer-label":"disclaimer-label-IGdd3"}},355:e=>{e.exports={"addon-details-modal-container":"addon-details-modal-container-_bwQ0","addon-details-container":"addon-details-container-AmNx2","addon-details-message-container":"addon-details-message-container-VEzeN","cancel-button":"cancel-button-luYIO","install-button":"install-button-XUzqz","uninstall-button":"uninstall-button-X2JXr"}},4520:e=>{e.exports={"button-container":"button-container-HNufV"}},1726:e=>{e.exports={"checkbox-container":"checkbox-container-heGq4",icon:"icon-NUvac"}},4809:e=>{e.exports={"color-picker-container":"color-picker-container-deFkW"}},5461:e=>{e.exports={"color-input-container":"color-input-container-jRZsi","transparent-label-container":"transparent-label-container-Tx2fI","transparent-label":"transparent-label-omLaY","color-picker-container":"color-picker-container-C4puR"}},9684:e=>{e.exports={"main-nav-bars-container":"main-nav-bars-container-fA7pO","horizontal-nav-bar":"horizontal-nav-bar-x5sxp","vertical-nav-bar":"vertical-nav-bar-JNw53","nav-content-container":"nav-content-container-VHwOU"}},4661:e=>{e.exports={"meta-item-container":"meta-item-container-drt6V","poster-shape-poster":"poster-shape-poster-F_CO5","poster-container":"poster-container-Fruke","poster-shape-square":"poster-shape-square-UCby3","poster-shape-landscape":"poster-shape-landscape-BPmb1","poster-image-layer":"poster-image-layer-CdxrT","poster-image":"poster-image-lt9zC","placeholder-icon":"placeholder-icon-uYwsv","play-icon-layer":"play-icon-layer-_75Lo","play-icon":"play-icon-d9_ll","progress-bar-layer":"progress-bar-layer-r81Qx","progress-bar":"progress-bar-E3QY9","title-bar-container":"title-bar-container-DFXJK","title-label":"title-label-dZZ_A","menu-label-container":"menu-label-container-dlL1I",icon:"icon-IfJ81"}},5883:e=>{e.exports={"action-button-container":"action-button-container-TmbQ2","icon-container":"icon-container-hvLw4",icon:"icon-DG4TM","label-container":"label-container-eh2bk",label:"label-YhHvD"}},7621:e=>{e.exports={"meta-links-container":"meta-links-container-wSrm1","label-container":"label-container-zWFke","links-container":"links-container-o4RUG","link-container":"link-container-HUDqV"}},6506:e=>{e.exports={"meta-preview-placeholder-container":"meta-preview-placeholder-container-AQ4ld","meta-info-container":"meta-info-container-pEOFb","logo-container":"logo-container-g5eNB","duration-release-info-container":"duration-release-info-container-lNaI6","duration-container":"duration-container-x2E01","release-info-container":"release-info-container-PEmeu","description-container":"description-container-yGOO4","description-label-container":"description-label-container-G_0pj","genres-container":"genres-container-v3H7A","genres-header-container":"genres-header-container-lsPLU","genre-label-container":"genre-label-container-z7kU8","action-buttons-container":"action-buttons-container-U3sbl","action-button-container":"action-button-container-xJmjB","action-button-icon":"action-button-icon-E7Epc","action-button-label":"action-button-label-R7UPL"}},6037:e=>{e.exports={"meta-preview-container":"meta-preview-container-bgBNf",compact:"compact-Wbl4Q","meta-info-container":"meta-info-container-tlmcb",logo:"logo-X9v1A","logo-placeholder":"logo-placeholder-kIy0x","runtime-release-info-container":"runtime-release-info-container-lXo3K","release-info-label":"release-info-label-XmqSY","runtime-label":"runtime-label-B29EN","description-container":"description-container-eSGft","action-buttons-container":"action-buttons-container-qQrnO","action-button":"action-button-R44aX","background-image-layer":"background-image-layer-GstuA","background-image":"background-image-B0d6i","imdb-button-container":"imdb-button-container-qCbl7",icon:"icon-MBu8k",label:"label-_DfnK","name-container":"name-container-HsS4c","meta-links":"meta-links-mTHUo","share-prompt":"share-prompt-F8qOC"}},7841:e=>{e.exports={"meta-row-placeholder-container":"meta-row-placeholder-container-wpHNk","header-container":"header-container-GCHdB","title-container":"title-container-Bjp93","see-all-container":"see-all-container-FnlIf",label:"label-dU3S2",icon:"icon-FLhtv","meta-items-container":"meta-items-container-dbGXx","meta-item":"meta-item-IegjY","poster-container":"poster-container-RlQMV","title-bar-container":"title-bar-container-YJZrl","title-label":"title-label-Ka1vs"}},676:e=>{e.exports={"meta-row-container":"meta-row-container-ucOuu","header-container":"header-container-RherZ","title-container":"title-container-SJ0nR","see-all-container":"see-all-container-HlJ4b",label:"label-isJw8",icon:"icon-PO0GH","message-container":"message-container-bIcjN","meta-items-container":"meta-items-container-TqzFs","meta-item":"meta-item-x28TU","poster-shape-poster":"poster-shape-poster-B1QR0","poster-shape-square":"poster-shape-square-m5r_O","poster-shape-landscape":"poster-shape-landscape-_FSOH"}},1621:e=>{e.exports={"modal-container":"modal-container-jZglc","modal-dialog-container":"modal-dialog-container-QgsId","close-button-container":"close-button-container-QrgQo",icon:"icon-hRjWc","title-container":"title-container-wqhp3","modal-dialog-content":"modal-dialog-content-ChXwF","buttons-container":"buttons-container-EJKJF","action-button":"action-button-bi6FL",label:"label-_ADoX"}},7409:e=>{e.exports={"label-container":"label-container-ZHk2S",label:"label-kz1K0",icon:"icon-YGvLz","modal-container":"modal-container-BQwj3","menu-container":"menu-container-Z1Pou","option-container":"option-container-yVj1o","no-options-container":"no-options-container-NYx9Z"}},8147:e=>{e.exports={"nav-menu-container":"nav-menu-container-VSzwW","user-info-container":"user-info-container-BR8yb","avatar-container":"avatar-container-jmlBM","email-container":"email-container-fvFrL","email-label":"email-label-WBX2T","logout-button-container":"logout-button-container-hSW_i","logout-label":"logout-label-dUa8B","nav-menu-section":"nav-menu-section-oMELF","nav-menu-option-container":"nav-menu-option-container-gZ1gT",icon:"icon-OSgm6","nav-menu-option-label":"nav-menu-option-label-XNuY6"}},7551:e=>{e.exports={"search-bar-container":"search-bar-container-TNPzI","search-input":"search-input-aOiJ2","placeholder-label":"placeholder-label-Irklk","submit-button-container":"submit-button-container-jPP5J",icon:"icon-FT4bG"}},4887:e=>{e.exports={"horizontal-nav-bar-container":"horizontal-nav-bar-container-jFw5Y","logo-container":"logo-container-fnFzY",logo:"logo-RVSxt",spacing:"spacing-jzj7t",title:"title-_UxXH","search-bar":"search-bar-NopQ6","button-container":"button-container-B23qB","back-button-container":"back-button-container-K9AwF",icon:"icon-wrBcp","menu-button-container":"menu-button-container-WWcwa"}},9842:e=>{e.exports={"nav-tab-button-container":"nav-tab-button-container-r8HUb",icon:"icon-vxKmB",label:"label-mc9eB",logo:"logo-ST06l"}},7636:e=>{e.exports={"vertical-nav-bar-container":"vertical-nav-bar-container-AsGLM","nav-tab-button":"nav-tab-button-noMv6"}},2168:e=>{e.exports={"pagination-input-container":"pagination-input-container-vXhi6","next-button-container":"next-button-container-zNwG6","prev-button-container":"prev-button-container-qmJ1m",icon:"icon-UoyQ9","label-container":"label-container-VwInD",label:"label-cJKC1"}},9192:e=>{e.exports={background:"background-FNyrF",icon:"icon-XXj2q"}},194:e=>{e.exports={"label-container":"label-container-iBMb9","menu-container":"menu-container-bfvDO","menu-direction-top-left":"menu-direction-top-left-KpAQN","menu-direction-bottom-left":"menu-direction-bottom-left-Uw06K","menu-direction-top-right":"menu-direction-top-right-jOtwq","menu-direction-bottom-right":"menu-direction-bottom-right-XZ9Ch"}},3109:e=>{e.exports={"search-bar-container":"search-bar-container-Vb_fz","search-input":"search-input-BWyeG",icon:"icon-poa62"}},330:e=>{e.exports={"search-bar-container":"search-bar-container-MpNBA","search-input":"search-input-ge2wu",icon:"icon-Z_Hni"}},4530:e=>{e.exports={"share-prompt-container":"share-prompt-container-YsJwl","buttons-container":"buttons-container-Oc7PG","button-container":"button-container-oMOnv",icon:"icon-FVvQH",label:"label-iOGrs","facebook-button":"facebook-button-KaNwb","twitter-button":"twitter-button-pJka2","url-container":"url-container-fMSp4","url-text-input":"url-text-input-Yka4x","copy-button":"copy-button-ShwCB"}},5036:e=>{e.exports={"active-slider-within":"active-slider-within-lQFc1","slider-container":"slider-container-aRzVq","track-after":"track-after-iD0ee",track:"track-jWhBI",thumb:"thumb-tfDk6",layer:"layer-FqnD7","track-before":"track-before-FwOXh"}},7985:e=>{e.exports={"warning-container":"warning-container-FIITF","warning-statement":"warning-statement-I7pdD","warning-button":"warning-button-zlx_V","warning-label":"warning-label-XJnBc"}},5725:e=>{e.exports={"text-input":"text-input-jR2Nr"}},9775:e=>{e.exports={"toast-item-container":"toast-item-container-nG0uk",success:"success-eIDTa","icon-container":"icon-container-rjAiH",icon:"icon-Y4I_O",error:"error-quyOd","info-container":"info-container-xD9V6","title-container":"title-container-VFReJ","message-container":"message-container-znkCj","close-button-container":"close-button-container-YtyYE"}},2638:e=>{e.exports={"addon-container":"addon-container-lC5KN","logo-container":"logo-container-ZcSSC",logo:"logo-WrsGF",icon:"icon-GxVbY","info-container":"info-container-AdMB6","name-container":"name-container-qIAg8","version-container":"version-container-zdPyN","types-container":"types-container-DaOrg","description-container":"description-container-v7Jhe","buttons-container":"buttons-container-g0xXr","action-buttons-container":"action-buttons-container-xMVmz","configure-button-container":"configure-button-container-VwVAQ","install-button-container":"install-button-container-yfcq5","share-button-container":"share-button-container-s3gwP","uninstall-button-container":"uninstall-button-container-oV4Yo",label:"label-OnWh2"}},5531:e=>{e.exports={"addons-container":"addons-container-ogGYu","addons-content":"addons-content-zhFBl","selectable-inputs-container":"selectable-inputs-container-tUul1","add-button-container":"add-button-container-SkafT",icon:"icon-HsyZS","add-button-label":"add-button-label-NN6bu","select-input-container":"select-input-container-KqG8N",spacing:"spacing-wH1w5","search-bar":"search-bar-k7MXd","filter-button":"filter-button-lLJ1X","filter-icon":"filter-icon-LUDTS","message-container":"message-container-GBw0P","addons-list-container":"addons-list-container-Ovr2Z",addon:"addon-whmdO","filters-modal":"filters-modal-w6oWY","add-addon-modal-container":"add-addon-modal-container-KR5ny",notice:"notice-UQkO1","addon-url-input":"addon-url-input-ucetZ","cancel-button":"cancel-button-R2AxR","share-modal-container":"share-modal-container-DkzPM","title-container":"title-container-La49g",logo:"logo-PmYDP","name-container":"name-container-m_Sz0",name:"name-YD0xd",version:"version-wuAFB","share-prompt-container":"share-prompt-container-vaK4P"}},969:e=>{e.exports={"board-container":"board-container-DTN_b","board-content-container":"board-content-container-ToQTz","board-content":"board-content-nPWv1","board-row":"board-row-CoJrZ","board-warning-container":"board-warning-container-a4m04","board-row-landscape":"board-row-landscape-FRGXx","board-row-poster":"board-row-poster-QPQqC","board-row-square":"board-row-square-pgaZ3","continue-watching-row":"continue-watching-row-ZiNSa"}},820:e=>{e.exports={"discover-container":"discover-container-L6OGL","discover-content":"discover-content-CRsRg","catalog-container":"catalog-container-VNK_T","selectable-inputs-container":"selectable-inputs-container-IRz50","select-input":"select-input-CHDbe","filter-container":"filter-container-BVkqT","filter-icon":"filter-icon-zlFnX","missing-addon-warning-container":"missing-addon-warning-container-IXGuv","warning-label":"warning-label-f19Jg","install-button":"install-button-SmJe1",label:"label-ToW4S","message-container":"message-container-Zv9eF",image:"image-txC9E","message-label":"message-label-mRyRX","meta-items-container":"meta-items-container-n8vNz","meta-item-placeholder":"meta-item-placeholder-wxG4I","poster-container":"poster-container-Dch4R","title-bar-container":"title-bar-container-dtDnk","title-label":"title-label-vHdQd","meta-preview-container":"meta-preview-container-CoWs5","selectable-inputs-modal":"selectable-inputs-modal-ChpOa"}},6947:e=>{e.exports={"consent-checkbox-container":"consent-checkbox-container-WV60T",label:"label-l3LSw",link:"link-UppYg"}},9070:e=>{e.exports={"password-reset-modal-container":"password-reset-modal-container-KzJPQ","credentials-text-input":"credentials-text-input-ncrIR","error-message":"error-message-DkekN","cancel-button":"cancel-button-AneJE"}},8999:e=>{e.exports={"intro-container":"intro-container-tkNS6","form-container":"form-container-HMlEh","logo-container":"logo-container-W49kt",logo:"logo-WJ36F",name:"name-BNo9R","form-button":"form-button-vyqqj",icon:"icon-L_6b6",label:"label-uHD7L","facebook-button":"facebook-button-LZ_kG","login-form-button":"login-form-button-DqJUV","login-label":"login-label-AelYq","credentials-text-input":"credentials-text-input-QMCZz","forgot-password-link-container":"forgot-password-link-container-ygZqb","forgot-password-link":"forgot-password-link-NxNUD","error-message":"error-message-cKdzB","submit-button":"submit-button-x3L8z","guest-login-button":"guest-login-button-D8DWZ","signup-form-button":"signup-form-button-UGmSk","loading-modal-container":"loading-modal-container-eLyTm","loader-container":"loader-container-oe8rU",flash:"flash-wUFXY"}},1596:e=>{e.exports={"library-container":"library-container-zM_bj","library-content":"library-content-PgX4O","selectable-inputs-container":"selectable-inputs-container-hR3or","select-input-container":"select-input-container-H1VZ1","filter-container":"filter-container-oRBlw","filter-icon":"filter-icon-ZhMyS",spacing:"spacing-Rdiyt","pagination-input":"pagination-input-DvMtv","pagination-input-placeholder":"pagination-input-placeholder-vZeuq","message-container":"message-container-MhY5t","no-user-message-container":"no-user-message-container-KMLpE","login-button-container":"login-button-container-RoEh7",label:"label-QqYmf",image:"image-csRHm","message-label":"message-label-UExl3","meta-items-container":"meta-items-container-IKrND","selectable-inputs-modal":"selectable-inputs-modal-rHlo7"}},1384:e=>{e.exports={"stream-placeholder-container":"stream-placeholder-container-T1nxv","addon-container":"addon-container-pm1P0","addon-name":"addon-name-zAOKP","info-container":"info-container-Z1Dl6","description-container":"description-container-ZOMcn","play-icon":"play-icon-MXqj3"}},3458:e=>{e.exports={"stream-container":"stream-container-JPdah","play-icon":"play-icon-w1yb5","addon-name-container":"addon-name-container-IZ2De","thumbnail-container":"thumbnail-container-ptbAk",thumbnail:"thumbnail-whoms","placeholder-icon":"placeholder-icon-znYz0","addon-name":"addon-name-tC8PX","info-container":"info-container-TihQo","progress-bar-container":"progress-bar-container-ADRp_","progress-bar":"progress-bar-XrEBL","stream-containerfocus":"stream-containerfocus-xiWVj"}},6796:e=>{e.exports={"streams-list-container":"streams-list-container-xYMJo","message-container":"message-container-f9_L4",image:"image-rIyu6",label:"label-luvnO","select-input-container":"select-input-container-irGn_","streams-container":"streams-container-bbSc4","install-button-container":"install-button-container-Q60yJ",icon:"icon-SoFgF"}},2180:e=>{e.exports={"seasons-bar-placeholder-container":"seasons-bar-placeholder-container-M81RN","next-season-button":"next-season-button-oGnlT","prev-season-button":"prev-season-button-TCbOq",icon:"icon-UzQjF",label:"label-lmBnj","seasons-popup-label-container":"seasons-popup-label-container-r2UDB","seasons-popup-label":"seasons-popup-label-xBinL","seasons-popup-icon":"seasons-popup-icon-p1T5d"}},6351:e=>{e.exports={"seasons-bar-container":"seasons-bar-container-nOZjG","next-season-button":"next-season-button-RrYAq","prev-season-button":"prev-season-button-bs1GQ",label:"label-uJbfD",icon:"icon-_ZBEE","seasons-popup-label-container":"seasons-popup-label-container-fZcu4"}},5507:e=>{e.exports={"video-placeholder-container":"video-placeholder-container-uDsav","info-container":"info-container-KTKtT","name-container":"name-container-Jvesr","released-container":"released-container-uoc4E"}},4486:e=>{e.exports={"video-container":"video-container-UBBpR","thumbnail-container":"thumbnail-container-n_jp7",thumbnail:"thumbnail-MiS3K","placeholder-icon":"placeholder-icon-LzVIO","info-container":"info-container-szYxP","title-container":"title-container-EMXpV","flex-row-container":"flex-row-container-ExEua","released-container":"released-container-zA91y","upcoming-watched-container":"upcoming-watched-container-y_ijd","upcoming-container":"upcoming-container-ASE1L","watched-container":"watched-container-LCso2","flag-label":"flag-label-dIdBb","progress-bar-container":"progress-bar-container-gMpiB","progress-bar":"progress-bar-Yhl4z","context-menu-content":"context-menu-content-MGBhW","context-menu-option-container":"context-menu-option-container-VlNjD","context-menu-option-label":"context-menu-option-label-hOUnH"}},2759:e=>{e.exports={"videos-list-container":"videos-list-container-NepX5","message-container":"message-container-_hhmQ",image:"image-_xAbP",label:"label-Ff1_X","seasons-bar":"seasons-bar-Ma8vp","search-bar":"search-bar-mZHWa","videos-container":"videos-container-msX8s"}},9514:e=>{e.exports={"metadetails-container":"metadetails-container-K_Dqa","nav-bar":"nav-bar-MH6Vk","metadetails-content":"metadetails-content-Uz5EV","vertical-nav-bar":"vertical-nav-bar-B39nq","background-image-layer":"background-image-layer-wJa90","background-image":"background-image-tSjYu","meta-message-container":"meta-message-container-MJZN5",image:"image-R1LcJ","message-label":"message-label-Uz4_P","meta-preview":"meta-preview-ES0h3",spacing:"spacing-rgIYg","streams-list":"streams-list-Y1lCM","videos-list":"videos-list-nE0LJ","meta-extension-modal-container":"meta-extension-modal-container-gHjqy","meta-extension-modal-iframe":"meta-extension-modal-iframe-GGHlm"}},5142:e=>{e.exports={"not-found-container":"not-found-container-Q1qsP","nav-bar":"nav-bar-Eu3_y","not-found-content":"not-found-content-z_Eza","not-found-image":"not-found-image-Qab4G","not-found-label":"not-found-label-mmwyZ"}},1391:e=>{e.exports={"buffering-loader-container":"buffering-loader-container-P7S0m","buffering-loader":"buffering-loader-fMSpb"}},8982:e=>{e.exports={"seek-bar-container":"seek-bar-container-JGGTa",slider:"slider-hBDOf",label:"label-QFbsS"}},6708:e=>{e.exports={"volume-slider":"volume-slider-G_xAt"}},578:e=>{e.exports={"control-bar-container":"control-bar-container-xsWA7","seek-bar":"seek-bar-I7WeY","control-bar-buttons-container":"control-bar-buttons-container-SWhkU","control-bar-button":"control-bar-button-FQUsj",icon:"icon-qy6I6","volume-slider":"volume-slider-U9jfo",spacing:"spacing-p8NJQ","control-bar-buttons-menu-button":"control-bar-buttons-menu-button-h0MWd","control-bar-buttons-menu-container":"control-bar-buttons-menu-container-M6L0_"}},3800:e=>{e.exports={"info-menu-container":"info-menu-container-R1QKH",stream:"stream-MY2Oy"}},5626:e=>{e.exports={"next-video-popup-container":"next-video-popup-container-H4wnL","slide-fade-in":"slide-fade-in-rk2M8","poster-container":"poster-container-tXZjA","poster-image":"poster-image-2D6wg","placeholder-icon":"placeholder-icon-fu1rK","info-container":"info-container-KLOMx","details-container":"details-container-bUOTZ",name:"name-sIiDL",description:"description-gIXiC","buttons-container":"buttons-container-iYrpZ",spacing:"spacing-iFwsN","button-container":"button-container-i4F7t","play-button":"play-button-Dluk6",icon:"icon-N3Ewm",label:"label-zOq_w"}},1530:e=>{e.exports={"option-container":"option-container-m_jZq",icon:"icon-krR0X",label:"label-cmqqu"}},8183:e=>{e.exports={"options-menu-container":"options-menu-container-qlzLt"}},4805:e=>{e.exports={option:"option-_O96j",icon:"icon-kqaPF",label:"label-FEOiu"}},9715:e=>{e.exports={"speed-menu-container":"speed-menu-container-ABjzc",title:"title-Hu2Dm","options-container":"options-container-DNn3D",option:"option-GcPlB"}},1289:e=>{e.exports={"statistics-menu-container":"statistics-menu-container-DhiHn",title:"title-NCwWH",label:"label-h6nN_",value:"value-E8Ftb",stats:"stats-Tr37t",stat:"stat-zoq5A","info-hash":"info-hash-GT1Cv"}},3283:e=>{e.exports={"discrete-input-container":"discrete-input-container-CMThy",header:"header-n0jWL","input-container":"input-container-TNuI2","button-container":"button-container-ciSB5",icon:"icon-JDltr","option-label":"option-label-tjeeT"}},3889:e=>{e.exports={"subtitles-menu-container":"subtitles-menu-container-PxBRZ","languages-container":"languages-container-NS7H9","subtitles-settings-container":"subtitles-settings-container-LhRGS","variants-container":"variants-container-XglzH","languages-header":"languages-header-jGNcK","settings-header":"settings-header-eaWnm","variants-header":"variants-header-TsVSR","languages-list":"languages-list-sxIwI","variants-list":"variants-list-yZo6B","language-option":"language-option-O1Yr9","variant-option":"variant-option-t7_LA","language-label":"language-label-FjjqA","variant-label":"variant-label-opjnP",icon:"icon-I1Ruh","no-variants-container":"no-variants-container-q6u1Q","no-variants-label":"no-variants-label-RmDKZ",spacing:"spacing-AWJpt","discrete-input":"discrete-input-fXELp","advanced-button":"advanced-button-YGN5T"}},4236:e=>{e.exports={"video-container":"video-container-v9_vA",video:"video-tkpQm"}},674:e=>{e.exports={"videos-menu-container":"videos-menu-container-ATzKq"}},9731:e=>{e.exports={"player-container":"player-container-wIELK",immersed:"immersed-Y0hn1","control-bar-layer":"control-bar-layer-m2jto","menu-layer":"menu-layer-HZFG9","nav-bar-layer":"nav-bar-layer-r9HT5",layer:"layer-qalDW","error-layer":"error-layer-RCEZC","error-label":"error-label-FPIMw","error-sub":"error-sub-Myxw2","playlist-button":"playlist-button-CB2WC",icon:"icon-aMPEE",label:"label-njZqk"}},5532:e=>{e.exports={"search-container":"search-container-uXEFf","search-content":"search-content-LX6un","search-row":"search-row-EQLaD","search-hints-container":"search-hints-container-FHpPM","search-hint-container":"search-hint-container-kd8iX",icon:"icon-fOZZl",label:"label-l6wxz","message-container":"message-container-YAunr",image:"image-Xuwya","message-label":"message-label-K8LPz","search-row-landscape":"search-row-landscape-o3Lfv","search-row-poster":"search-row-poster-m7CUE","search-row-square":"search-row-square-VesJA"}},9819:e=>{e.exports={"settings-container":"settings-container-b0DCu","settings-content":"settings-content-lLXmk","side-menu-container":"side-menu-container-NG17D","side-menu-button":"side-menu-button-vbkJ1",selected:"selected-yhdng",spacing:"spacing-fpLUM","version-info-label":"version-info-label-uMkm7","sections-container":"sections-container-EUKAe","section-container":"section-container-twzKQ","section-title":"section-title-Nt71Z","option-container":"option-container-EGlcv","user-info-option-container":"user-info-option-container-oRLJc","avatar-container":"avatar-container-YWq9E","email-logout-container":"email-logout-container-kYQDM","email-label-container":"email-label-container-oVmiO","logout-button-container":"logout-button-container-jLrU2","email-label":"email-label-Q__sJ","logout-label":"logout-label-zo4ES","user-panel-container":"user-panel-container-kkrJG","user-panel-label":"user-panel-label-beAQl","option-input-container":"option-input-container-NPgpT","option-name-container":"option-name-container-exGMI",icon:"icon-REQkK",label:"label-FFamJ","button-container":"button-container-ENMae","multiselect-container":"multiselect-container-w0c9l","link-container":"link-container-ERYsD","checkbox-container":"checkbox-container-R9LLN","color-input-container":"color-input-container-WclA_","info-container":"info-container-wfFcS",selectable:"selectable-eucrJ","configure-input-container":"configure-input-container-PMyIY","configure-button-container":"configure-button-container-xGFgg","shortcut-container":"shortcut-container-ZSm5O","configure-server-url-modal-container":"configure-server-url-modal-container-vSL44","server-url-input":"server-url-input-Dfazw","cancel-button":"cancel-button-iydew"}},2703:(e,t,o)=>{"use strict";var a=o(414);function n(){}function i(){}i.resetWarningCache=n,e.exports=function(){function e(e,t,o,n,i,r){if(r!==a){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var o={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:n};return o.PropTypes=o,o}},5697:(e,t,o)=>{e.exports=o(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4971:function(e,t,o){var a;e=o.nmd(e),(function(n){t&&t.nodeType,e&&e.nodeType;var i="object"==typeof o.g&&o.g;i.global!==i&&i.window!==i&&i.self;var r,s=2147483647,E=36,_=/^xn--/,T=/[^\x20-\x7E]/,l=/[\x2E\u3002\uFF0E\uFF61]/g,S={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},u=Math.floor,d=String.fromCharCode;function c(e){throw RangeError(S[e])}function A(e,t){for(var o=e.length,a=[];o--;)a[o]=t(e[o]);return a}function I(e,t){var o=e.split("@"),a="";return o.length>1&&(a=o[0]+"@",e=o[1]),a+A((e=e.replace(l,".")).split("."),t).join(".")}function O(e){for(var t,o,a=[],n=0,i=e.length;n<i;)(t=e.charCodeAt(n++))>=55296&&t<=56319&&n<i?56320==(64512&(o=e.charCodeAt(n++)))?a.push(((1023&t)<<10)+(1023&o)+65536):(a.push(t),n--):a.push(t);return a}function N(e){return A(e,(function(e){var t="";return e>65535&&(t+=d((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=d(e)})).join("")}function R(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function m(e,t,o){var a=0;for(e=o?u(e/700):e>>1,e+=u(e/t);e>455;a+=E)e=u(e/35);return u(a+36*e/(e+38))}function p(e){var t,o,a,n,i,r,_,T,l,S,d,A=[],I=e.length,O=0,R=128,p=72;for((o=e.lastIndexOf("-"))<0&&(o=0),a=0;a<o;++a)e.charCodeAt(a)>=128&&c("not-basic"),A.push(e.charCodeAt(a));for(n=o>0?o+1:0;n<I;){for(i=O,r=1,_=E;n>=I&&c("invalid-input"),((T=(d=e.charCodeAt(n++))-48<10?d-22:d-65<26?d-65:d-97<26?d-97:E)>=E||T>u((s-O)/r))&&c("overflow"),O+=T*r,!(T<(l=_<=p?1:_>=p+26?26:_-p));_+=E)r>u(s/(S=E-l))&&c("overflow"),r*=S;p=m(O-i,t=A.length+1,0==i),u(O/t)>s-R&&c("overflow"),R+=u(O/t),O%=t,A.splice(O++,0,R)}return N(A)}function h(e){var t,o,a,n,i,r,_,T,l,S,A,I,N,p,h,L=[];for(I=(e=O(e)).length,t=128,o=0,i=72,r=0;r<I;++r)(A=e[r])<128&&L.push(d(A));for(a=n=L.length,n&&L.push("-");a<I;){for(_=s,r=0;r<I;++r)(A=e[r])>=t&&A<_&&(_=A);for(_-t>u((s-o)/(N=a+1))&&c("overflow"),o+=(_-t)*N,t=_,r=0;r<I;++r)if((A=e[r])<t&&++o>s&&c("overflow"),A==t){for(T=o,l=E;!(T<(S=l<=i?1:l>=i+26?26:l-i));l+=E)h=T-S,p=E-S,L.push(d(R(S+h%p,0))),T=u(h/p);L.push(d(R(T,0))),i=m(o,N,a==n),o=0,++a}++o,++t}return L.join("")}r={version:"1.3.2",ucs2:{decode:O,encode:N},decode:p,encode:h,toASCII:function(e){return I(e,(function(e){return T.test(e)?"xn--"+h(e):e}))},toUnicode:function(e){return I(e,(function(e){return _.test(e)?p(e.slice(4).toLowerCase()):e}))}},void 0===(a=function(){return r}.call(t,o,t,e))||(e.exports=a)})()},2587:e=>{"use strict";function t(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,o,a,n){o=o||"&",a=a||"=";var i={};if("string"!=typeof e||0===e.length)return i;var r=/\+/g;e=e.split(o);var s=1e3;n&&"number"==typeof n.maxKeys&&(s=n.maxKeys);var E=e.length;s>0&&E>s&&(E=s);for(var _=0;_<E;++_){var T,l,S,u,d=e[_].replace(r,"%20"),c=d.indexOf(a);c>=0?(T=d.substr(0,c),l=d.substr(c+1)):(T=d,l=""),S=decodeURIComponent(T),u=decodeURIComponent(l),t(i,S)?Array.isArray(i[S])?i[S].push(u):i[S]=[i[S],u]:i[S]=u}return i}},2361:e=>{"use strict";var t=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,o,a,n){return o=o||"&",a=a||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(n){var i=encodeURIComponent(t(n))+a;return Array.isArray(e[n])?e[n].map((function(e){return i+encodeURIComponent(t(e))})).join(o):i+encodeURIComponent(t(e[n]))})).join(o):n?encodeURIComponent(t(n))+a+encodeURIComponent(t(e)):""}},7673:(e,t,o)=>{"use strict";t.decode=t.parse=o(2587),t.encode=t.stringify=o(2361)},4448:(e,t,o)=>{"use strict";var a=o(7294),n=o(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=1;o<arguments.length;o++)t+="&args[]="+encodeURIComponent(arguments[o]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var r=new Set,s={};function E(e,t){_(e,t),_(e+"Capture",t)}function _(e,t){for(s[e]=t,e=0;e<t.length;e++)r.add(t[e])}var T=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),l=Object.prototype.hasOwnProperty,S=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,u={},d={};function c(e,t,o,a,n,i,r){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=a,this.attributeNamespace=n,this.mustUseProperty=o,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=r}var A={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){A[e]=new c(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];A[t]=new c(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){A[e]=new c(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){A[e]=new c(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){A[e]=new c(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){A[e]=new c(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){A[e]=new c(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){A[e]=new c(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){A[e]=new c(e,5,!1,e.toLowerCase(),null,!1,!1)}));var I=/[\-:]([a-z])/g;function O(e){return e[1].toUpperCase()}function N(e,t,o,a){var n=A.hasOwnProperty(t)?A[t]:null;(null!==n?0!==n.type:a||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&((function(e,t,o,a){if(null==t||(function(e,t,o,a){if(null!==o&&0===o.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!a&&(null!==o?!o.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}})(e,t,o,a))return!0;if(a)return!1;if(null!==o)switch(o.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1})(t,o,n,a)&&(o=null),a||null===n?(function(e){return!!l.call(d,e)||!l.call(u,e)&&(S.test(e)?d[e]=!0:(u[e]=!0,!1))})(t)&&(null===o?e.removeAttribute(t):e.setAttribute(t,""+o)):n.mustUseProperty?e[n.propertyName]=null===o?3!==n.type&&"":o:(t=n.attributeName,a=n.attributeNamespace,null===o?e.removeAttribute(t):(o=3===(n=n.type)||4===n&&!0===o?"":""+o,a?e.setAttributeNS(a,t,o):e.setAttribute(t,o))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(I,O);A[t]=new c(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(I,O);A[t]=new c(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(I,O);A[t]=new c(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){A[e]=new c(e,1,!1,e.toLowerCase(),null,!1,!1)})),A.xlinkHref=new c("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){A[e]=new c(e,1,!1,e.toLowerCase(),null,!0,!0)}));var R=a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,m=Symbol.for("react.element"),p=Symbol.for("react.portal"),h=Symbol.for("react.fragment"),L=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),C=Symbol.for("react.provider"),D=Symbol.for("react.context"),g=Symbol.for("react.forward_ref"),v=Symbol.for("react.suspense"),P=Symbol.for("react.suspense_list"),y=Symbol.for("react.memo"),B=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var b=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var M=Symbol.iterator;function U(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=M&&e[M]||e["@@iterator"])?e:null}var W,G=Object.assign;function F(e){if(void 0===W)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);W=t&&t[1]||""}return"\n"+W+e}var k=!1;function w(e,t){if(!e||k)return"";k=!0;var o=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(e){var a=e}Reflect.construct(e,[],t)}else{try{t.call()}catch(e){a=e}e.call(t.prototype)}else{try{throw Error()}catch(e){a=e}e()}}catch(t){if(t&&a&&"string"==typeof t.stack){for(var n=t.stack.split("\n"),i=a.stack.split("\n"),r=n.length-1,s=i.length-1;1<=r&&0<=s&&n[r]!==i[s];)s--;for(;1<=r&&0<=s;r--,s--)if(n[r]!==i[s]){if(1!==r||1!==s)do{if(r--,0>--s||n[r]!==i[s]){var E="\n"+n[r].replace(" at new "," at ");return e.displayName&&E.includes("<anonymous>")&&(E=E.replace("<anonymous>",e.displayName)),E}}while(1<=r&&0<=s);break}}}finally{k=!1,Error.prepareStackTrace=o}return(e=e?e.displayName||e.name:"")?F(e):""}function H(e){switch(e.tag){case 5:return F(e.type);case 16:return F("Lazy");case 13:return F("Suspense");case 19:return F("SuspenseList");case 0:case 2:case 15:return e=w(e.type,!1);case 11:return e=w(e.type.render,!1);case 1:return e=w(e.type,!0);default:return""}}function V(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case h:return"Fragment";case p:return"Portal";case f:return"Profiler";case L:return"StrictMode";case v:return"Suspense";case P:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case D:return(e.displayName||"Context")+".Consumer";case C:return(e._context.displayName||"Context")+".Provider";case g:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case y:return null!==(t=e.displayName||null)?t:V(e.type)||"Memo";case B:t=e._payload,e=e._init;try{return V(e(t))}catch(e){}}return null}function Y(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return V(t);case 8:return t===L?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function z(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function x(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=(function(e){var t=x(e)?"checked":"value",o=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),a=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==o&&"function"==typeof o.get&&"function"==typeof o.set){var n=o.get,i=o.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return n.call(this)},set:function(e){a=""+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:o.enumerable}),{getValue:function(){return a},setValue:function(e){a=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}})(e))}function j(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var o=t.getValue(),a="";return e&&(a=x(e)?e.checked?"true":"false":e.value),(e=a)!==o&&(t.setValue(e),!0)}function Q(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function X(e,t){var o=t.checked;return G({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=o?o:e._wrapperState.initialChecked})}function $(e,t){var o=null==t.defaultValue?"":t.defaultValue,a=null!=t.checked?t.checked:t.defaultChecked;o=z(null!=t.value?t.value:o),e._wrapperState={initialChecked:a,initialValue:o,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function q(e,t){null!=(t=t.checked)&&N(e,"checked",t,!1)}function J(e,t){q(e,t);var o=z(t.value),a=t.type;if(null!=o)"number"===a?(0===o&&""===e.value||e.value!=o)&&(e.value=""+o):e.value!==""+o&&(e.value=""+o);else if("submit"===a||"reset"===a)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,o):t.hasOwnProperty("defaultValue")&&ee(e,t.type,z(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Z(e,t,o){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var a=t.type;if(!("submit"!==a&&"reset"!==a||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,o||t===e.value||(e.value=t),e.defaultValue=t}""!==(o=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==o&&(e.name=o)}function ee(e,t,o){"number"===t&&Q(e.ownerDocument)===e||(null==o?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+o&&(e.defaultValue=""+o))}var te=Array.isArray;function oe(e,t,o,a){if(e=e.options,t){t={};for(var n=0;n<o.length;n++)t["$"+o[n]]=!0;for(o=0;o<e.length;o++)n=t.hasOwnProperty("$"+e[o].value),e[o].selected!==n&&(e[o].selected=n),n&&a&&(e[o].defaultSelected=!0)}else{for(o=""+z(o),t=null,n=0;n<e.length;n++){if(e[n].value===o)return e[n].selected=!0,void(a&&(e[n].defaultSelected=!0));null!==t||e[n].disabled||(t=e[n])}null!==t&&(t.selected=!0)}}function ae(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return G({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ne(e,t){var o=t.value;if(null==o){if(o=t.children,t=t.defaultValue,null!=o){if(null!=t)throw Error(i(92));if(te(o)){if(1<o.length)throw Error(i(93));o=o[0]}t=o}null==t&&(t=""),o=t}e._wrapperState={initialValue:z(o)}}function ie(e,t){var o=z(t.value),a=z(t.defaultValue);null!=o&&((o=""+o)!==e.value&&(e.value=o),null==t.defaultValue&&e.defaultValue!==o&&(e.defaultValue=o)),null!=a&&(e.defaultValue=""+a)}function re(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function se(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Ee(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?se(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var _e,Te,le=(Te=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((_e=_e||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=_e.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,o,a){MSApp.execUnsafeLocalFunction((function(){return Te(e,t)}))}:Te);function Se(e,t){if(t){var o=e.firstChild;if(o&&o===e.lastChild&&3===o.nodeType)return void(o.nodeValue=t)}e.textContent=t}var ue={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},de=["Webkit","ms","Moz","O"];function ce(e,t,o){return null==t||"boolean"==typeof t||""===t?"":o||"number"!=typeof t||0===t||ue.hasOwnProperty(e)&&ue[e]?(""+t).trim():t+"px"}function Ae(e,t){for(var o in e=e.style,t)if(t.hasOwnProperty(o)){var a=0===o.indexOf("--"),n=ce(o,t[o],a);"float"===o&&(o="cssFloat"),a?e.setProperty(o,n):e[o]=n}}Object.keys(ue).forEach((function(e){de.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ue[t]=ue[e]}))}));var Ie=G({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Oe(e,t){if(t){if(Ie[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function Ne(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Re=null;function me(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var pe=null,he=null,Le=null;function fe(e){if(e=Nn(e)){if("function"!=typeof pe)throw Error(i(280));var t=e.stateNode;t&&(t=mn(t),pe(e.stateNode,e.type,t))}}function Ce(e){he?Le?Le.push(e):Le=[e]:he=e}function De(){if(he){var e=he,t=Le;if(Le=he=null,fe(e),t)for(e=0;e<t.length;e++)fe(t[e])}}function ge(e,t){return e(t)}function ve(){}var Pe=!1;function ye(e,t,o){if(Pe)return e(t,o);Pe=!0;try{return ge(e,t,o)}finally{Pe=!1,(null!==he||null!==Le)&&(ve(),De())}}function Be(e,t){var o=e.stateNode;if(null===o)return null;var a=mn(o);if(null===a)return null;o=a[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(a=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!a;break e;default:e=!1}if(e)return null;if(o&&"function"!=typeof o)throw Error(i(231,t,typeof o));return o}var be=!1;if(T)try{var Me={};Object.defineProperty(Me,"passive",{get:function(){be=!0}}),window.addEventListener("test",Me,Me),window.removeEventListener("test",Me,Me)}catch(Te){be=!1}function Ue(e,t,o,a,n,i,r,s,E){var _=Array.prototype.slice.call(arguments,3);try{t.apply(o,_)}catch(e){this.onError(e)}}var We=!1,Ge=null,Fe=!1,ke=null,we={onError:function(e){We=!0,Ge=e}};function He(e,t,o,a,n,i,r,s,E){We=!1,Ge=null,Ue.apply(we,arguments)}function Ve(e){var t=e,o=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(4098&(t=e).flags)&&(o=t.return),e=t.return}while(e)}return 3===t.tag?o:null}function Ye(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function ze(e){if(Ve(e)!==e)throw Error(i(188))}function xe(e){return null!==(e=(function(e){var t=e.alternate;if(!t){if(null===(t=Ve(e)))throw Error(i(188));return t!==e?null:e}for(var o=e,a=t;;){var n=o.return;if(null===n)break;var r=n.alternate;if(null===r){if(null!==(a=n.return)){o=a;continue}break}if(n.child===r.child){for(r=n.child;r;){if(r===o)return ze(n),e;if(r===a)return ze(n),t;r=r.sibling}throw Error(i(188))}if(o.return!==a.return)o=n,a=r;else{for(var s=!1,E=n.child;E;){if(E===o){s=!0,o=n,a=r;break}if(E===a){s=!0,a=n,o=r;break}E=E.sibling}if(!s){for(E=r.child;E;){if(E===o){s=!0,o=r,a=n;break}if(E===a){s=!0,a=r,o=n;break}E=E.sibling}if(!s)throw Error(i(189))}}if(o.alternate!==a)throw Error(i(190))}if(3!==o.tag)throw Error(i(188));return o.stateNode.current===o?e:t})(e))?Ke(e):null}function Ke(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Ke(e);if(null!==t)return t;e=e.sibling}return null}var je=n.unstable_scheduleCallback,Qe=n.unstable_cancelCallback,Xe=n.unstable_shouldYield,$e=n.unstable_requestPaint,qe=n.unstable_now,Je=n.unstable_getCurrentPriorityLevel,Ze=n.unstable_ImmediatePriority,et=n.unstable_UserBlockingPriority,tt=n.unstable_NormalPriority,ot=(n.unstable_LowPriority,n.unstable_IdlePriority),at=null,nt=null;var it=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(rt(e)/st|0)|0},rt=Math.log,st=Math.LN2;var Et=64,_t=4194304;function Tt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function lt(e,t){var o=e.pendingLanes;if(0===o)return 0;var a=0,n=e.suspendedLanes,i=e.pingedLanes,r=268435455&o;if(0!==r){var s=r&~n;0!==s?a=Tt(s):0!==(i&=r)&&(a=Tt(i))}else 0!==(r=o&~n)?a=Tt(r):0!==i&&(a=Tt(i));if(0===a)return 0;if(0!==t&&t!==a&&0==(t&n)&&((n=a&-a)>=(i=t&-t)||16===n&&0!=(4194240&i)))return t;if(0!=(4&a)&&(a|=16&o),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=a;0<t;)n=1<<(o=31-it(t)),a|=e[o],t&=~n;return a}function St(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function ut(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function dt(){var e=Et;return 0==(4194240&(Et<<=1))&&(Et=64),e}function ct(e){for(var t=[],o=0;31>o;o++)t.push(e);return t}function At(e,t,o){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=o}function It(e,t){var o=e.entangledLanes|=t;for(e=e.entanglements;o;){var a=31-it(o),n=1<<a;n&t|e[a]&t&&(e[a]|=t),o&=~n}}var Ot=0;function Nt(e){return 1<(e&=-e)?4<e?0!=(268435455&e)?16:536870912:4:1}var Rt,mt,pt,ht,Lt,ft=!1,Ct=[],Dt=null,gt=null,vt=null,Pt=new Map,yt=new Map,Bt=[],bt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Mt(e,t){switch(e){case"focusin":case"focusout":Dt=null;break;case"dragenter":case"dragleave":gt=null;break;case"mouseover":case"mouseout":vt=null;break;case"pointerover":case"pointerout":Pt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":yt.delete(t.pointerId)}}function Ut(e,t,o,a,n,i){return null===e||e.nativeEvent!==i?(e={blockedOn:t,domEventName:o,eventSystemFlags:a,nativeEvent:i,targetContainers:[n]},null!==t&&(null!==(t=Nn(t))&&mt(t)),e):(e.eventSystemFlags|=a,t=e.targetContainers,null!==n&&-1===t.indexOf(n)&&t.push(n),e)}function Wt(e){var t=On(e.target);if(null!==t){var o=Ve(t);if(null!==o)if(13===(t=o.tag)){if(null!==(t=Ye(o)))return e.blockedOn=t,void Lt(e.priority,(function(){pt(o)}))}else if(3===t&&o.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===o.tag?o.stateNode.containerInfo:null)}e.blockedOn=null}function Gt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var o=Qt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==o)return null!==(t=Nn(o))&&mt(t),e.blockedOn=o,!1;var a=new(o=e.nativeEvent).constructor(o.type,o);Re=a,o.target.dispatchEvent(a),Re=null,t.shift()}return!0}function Ft(e,t,o){Gt(e)&&o.delete(t)}function kt(){ft=!1,null!==Dt&&Gt(Dt)&&(Dt=null),null!==gt&&Gt(gt)&&(gt=null),null!==vt&&Gt(vt)&&(vt=null),Pt.forEach(Ft),yt.forEach(Ft)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,ft||(ft=!0,n.unstable_scheduleCallback(n.unstable_NormalPriority,kt)))}function Ht(e){function t(t){return wt(t,e)}if(0<Ct.length){wt(Ct[0],e);for(var o=1;o<Ct.length;o++){var a=Ct[o];a.blockedOn===e&&(a.blockedOn=null)}}for(null!==Dt&&wt(Dt,e),null!==gt&&wt(gt,e),null!==vt&&wt(vt,e),Pt.forEach(t),yt.forEach(t),o=0;o<Bt.length;o++)(a=Bt[o]).blockedOn===e&&(a.blockedOn=null);for(;0<Bt.length&&null===(o=Bt[0]).blockedOn;)Wt(o),null===o.blockedOn&&Bt.shift()}var Vt=R.ReactCurrentBatchConfig,Yt=!0;function zt(e,t,o,a){var n=Ot,i=Vt.transition;Vt.transition=null;try{Ot=1,Kt(e,t,o,a)}finally{Ot=n,Vt.transition=i}}function xt(e,t,o,a){var n=Ot,i=Vt.transition;Vt.transition=null;try{Ot=4,Kt(e,t,o,a)}finally{Ot=n,Vt.transition=i}}function Kt(e,t,o,a){if(Yt){var n=Qt(e,t,o,a);if(null===n)Ya(e,t,a,jt,o),Mt(e,a);else if((function(e,t,o,a,n){switch(t){case"focusin":return Dt=Ut(Dt,e,t,o,a,n),!0;case"dragenter":return gt=Ut(gt,e,t,o,a,n),!0;case"mouseover":return vt=Ut(vt,e,t,o,a,n),!0;case"pointerover":var i=n.pointerId;return Pt.set(i,Ut(Pt.get(i)||null,e,t,o,a,n)),!0;case"gotpointercapture":return i=n.pointerId,yt.set(i,Ut(yt.get(i)||null,e,t,o,a,n)),!0}return!1})(n,e,t,o,a))a.stopPropagation();else if(Mt(e,a),4&t&&-1<bt.indexOf(e)){for(;null!==n;){var i=Nn(n);if(null!==i&&Rt(i),null===(i=Qt(e,t,o,a))&&Ya(e,t,a,jt,o),i===n)break;n=i}null!==n&&a.stopPropagation()}else Ya(e,t,a,null,o)}}var jt=null;function Qt(e,t,o,a){if(jt=null,null!==(e=On(e=me(a))))if(null===(t=Ve(e)))e=null;else if(13===(o=t.tag)){if(null!==(e=Ye(t)))return e;e=null}else if(3===o){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return jt=e,null}function Xt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Je()){case Ze:return 1;case et:return 4;default:return 16;case ot:return 536870912}default:return 16}}var $t=null,qt=null,Jt=null;function Zt(){if(Jt)return Jt;var e,t,o=qt,a=o.length,n="value"in $t?$t.value:$t.textContent,i=n.length;for(e=0;e<a&&o[e]===n[e];e++);var r=a-e;for(t=1;t<=r&&o[a-t]===n[i-t];t++);return Jt=n.slice(e,1<t?1-t:void 0)}function eo(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function to(){return!0}function oo(){return!1}function ao(e){function t(t,o,a,n,i){for(var r in this._reactName=t,this._targetInst=a,this.type=o,this.nativeEvent=n,this.target=i,this.currentTarget=null,e)e.hasOwnProperty(r)&&(t=e[r],this[r]=t?t(n):n[r]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?to:oo,this.isPropagationStopped=oo,this}return G(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=to)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=to)},persist:function(){},isPersistent:to}),t}var no,io,ro,so={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Eo=ao(so),_o=G({},so,{view:0,detail:0}),To=ao(_o),lo=G({},_o,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Lo,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==ro&&(ro&&"mousemove"===e.type?(no=e.screenX-ro.screenX,io=e.screenY-ro.screenY):io=no=0,ro=e),no)},movementY:function(e){return"movementY"in e?e.movementY:io}}),So=ao(lo),uo=ao(G({},lo,{dataTransfer:0})),co=ao(G({},_o,{relatedTarget:0})),Ao=ao(G({},so,{animationName:0,elapsedTime:0,pseudoElement:0})),Io=G({},so,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Oo=ao(Io),No=ao(G({},so,{data:0})),Ro={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},mo={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},po={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function ho(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=po[e])&&!!t[e]}function Lo(){return ho}var fo=G({},_o,{key:function(e){if(e.key){var t=Ro[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=eo(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?mo[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Lo,charCode:function(e){return"keypress"===e.type?eo(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?eo(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Co=ao(fo),Do=ao(G({},lo,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),go=ao(G({},_o,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Lo})),vo=ao(G({},so,{propertyName:0,elapsedTime:0,pseudoElement:0})),Po=G({},lo,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),yo=ao(Po),Bo=[9,13,27,32],bo=T&&"CompositionEvent"in window,Mo=null;T&&"documentMode"in document&&(Mo=document.documentMode);var Uo=T&&"TextEvent"in window&&!Mo,Wo=T&&(!bo||Mo&&8<Mo&&11>=Mo),Go=String.fromCharCode(32),Fo=!1;function ko(e,t){switch(e){case"keyup":return-1!==Bo.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function wo(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Ho=!1;var Vo={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Yo(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Vo[e.type]:"textarea"===t}function zo(e,t,o,a){Ce(a),0<(t=xa(t,"onChange")).length&&(o=new Eo("onChange","change",null,o,a),e.push({event:o,listeners:t}))}var xo=null,Ko=null;function jo(e){Ga(e,0)}function Qo(e){if(j(Rn(e)))return e}function Xo(e,t){if("change"===e)return t}var $o=!1;if(T){var qo;if(T){var Jo="oninput"in document;if(!Jo){var Zo=document.createElement("div");Zo.setAttribute("oninput","return;"),Jo="function"==typeof Zo.oninput}qo=Jo}else qo=!1;$o=qo&&(!document.documentMode||9<document.documentMode)}function ea(){xo&&(xo.detachEvent("onpropertychange",ta),Ko=xo=null)}function ta(e){if("value"===e.propertyName&&Qo(Ko)){var t=[];zo(t,Ko,e,me(e)),ye(jo,t)}}function oa(e,t,o){"focusin"===e?(ea(),Ko=o,(xo=t).attachEvent("onpropertychange",ta)):"focusout"===e&&ea()}function aa(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Qo(Ko)}function na(e,t){if("click"===e)return Qo(t)}function ia(e,t){if("input"===e||"change"===e)return Qo(t)}var ra="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function sa(e,t){if(ra(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var o=Object.keys(e),a=Object.keys(t);if(o.length!==a.length)return!1;for(a=0;a<o.length;a++){var n=o[a];if(!l.call(t,n)||!ra(e[n],t[n]))return!1}return!0}function Ea(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function _a(e,t){var o,a=Ea(e);for(e=0;a;){if(3===a.nodeType){if(o=e+a.textContent.length,e<=t&&o>=t)return{node:a,offset:t-e};e=o}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Ea(a)}}function Ta(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?Ta(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function la(){for(var e=window,t=Q();t instanceof e.HTMLIFrameElement;){try{var o="string"==typeof t.contentWindow.location.href}catch(e){o=!1}if(!o)break;t=Q((e=t.contentWindow).document)}return t}function Sa(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function ua(e){var t=la(),o=e.focusedElem,a=e.selectionRange;if(t!==o&&o&&o.ownerDocument&&Ta(o.ownerDocument.documentElement,o)){if(null!==a&&Sa(o))if(t=a.start,void 0===(e=a.end)&&(e=t),"selectionStart"in o)o.selectionStart=t,o.selectionEnd=Math.min(e,o.value.length);else if((e=(t=o.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var n=o.textContent.length,i=Math.min(a.start,n);a=void 0===a.end?i:Math.min(a.end,n),!e.extend&&i>a&&(n=a,a=i,i=n),n=_a(o,i);var r=_a(o,a);n&&r&&(1!==e.rangeCount||e.anchorNode!==n.node||e.anchorOffset!==n.offset||e.focusNode!==r.node||e.focusOffset!==r.offset)&&((t=t.createRange()).setStart(n.node,n.offset),e.removeAllRanges(),i>a?(e.addRange(t),e.extend(r.node,r.offset)):(t.setEnd(r.node,r.offset),e.addRange(t)))}for(t=[],e=o;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof o.focus&&o.focus(),o=0;o<t.length;o++)(e=t[o]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var da=T&&"documentMode"in document&&11>=document.documentMode,ca=null,Aa=null,Ia=null,Oa=!1;function Na(e,t,o){var a=o.window===o?o.document:9===o.nodeType?o:o.ownerDocument;Oa||null==ca||ca!==Q(a)||("selectionStart"in(a=ca)&&Sa(a)?a={start:a.selectionStart,end:a.selectionEnd}:a={anchorNode:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset},Ia&&sa(Ia,a)||(Ia=a,0<(a=xa(Aa,"onSelect")).length&&(t=new Eo("onSelect","select",null,t,o),e.push({event:t,listeners:a}),t.target=ca)))}function Ra(e,t){var o={};return o[e.toLowerCase()]=t.toLowerCase(),o["Webkit"+e]="webkit"+t,o["Moz"+e]="moz"+t,o}var ma={animationend:Ra("Animation","AnimationEnd"),animationiteration:Ra("Animation","AnimationIteration"),animationstart:Ra("Animation","AnimationStart"),transitionend:Ra("Transition","TransitionEnd")},pa={},ha={};function La(e){if(pa[e])return pa[e];if(!ma[e])return e;var t,o=ma[e];for(t in o)if(o.hasOwnProperty(t)&&t in ha)return pa[e]=o[t];return e}T&&(ha=document.createElement("div").style,"AnimationEvent"in window||(delete ma.animationend.animation,delete ma.animationiteration.animation,delete ma.animationstart.animation),"TransitionEvent"in window||delete ma.transitionend.transition);var fa=La("animationend"),Ca=La("animationiteration"),Da=La("animationstart"),ga=La("transitionend"),va=new Map,Pa="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function ya(e,t){va.set(e,t),E(t,[e])}for(var Ba=0;Ba<Pa.length;Ba++){var ba=Pa[Ba];ya(ba.toLowerCase(),"on"+(ba[0].toUpperCase()+ba.slice(1)))}ya(fa,"onAnimationEnd"),ya(Ca,"onAnimationIteration"),ya(Da,"onAnimationStart"),ya("dblclick","onDoubleClick"),ya("focusin","onFocus"),ya("focusout","onBlur"),ya(ga,"onTransitionEnd"),_("onMouseEnter",["mouseout","mouseover"]),_("onMouseLeave",["mouseout","mouseover"]),_("onPointerEnter",["pointerout","pointerover"]),_("onPointerLeave",["pointerout","pointerover"]),E("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),E("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),E("onBeforeInput",["compositionend","keypress","textInput","paste"]),E("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),E("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),E("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ma="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Ua=new Set("cancel close invalid load scroll toggle".split(" ").concat(Ma));function Wa(e,t,o){var a=e.type||"unknown-event";e.currentTarget=o,(function(e,t,o,a,n,r,s,E,_){if(He.apply(this,arguments),We){if(!We)throw Error(i(198));var T=Ge;We=!1,Ge=null,Fe||(Fe=!0,ke=T)}})(a,t,void 0,e),e.currentTarget=null}function Ga(e,t){t=0!=(4&t);for(var o=0;o<e.length;o++){var a=e[o],n=a.event;a=a.listeners;e:{var i=void 0;if(t)for(var r=a.length-1;0<=r;r--){var s=a[r],E=s.instance,_=s.currentTarget;if(s=s.listener,E!==i&&n.isPropagationStopped())break e;Wa(n,s,_),i=E}else for(r=0;r<a.length;r++){if(E=(s=a[r]).instance,_=s.currentTarget,s=s.listener,E!==i&&n.isPropagationStopped())break e;Wa(n,s,_),i=E}}}if(Fe)throw e=ke,Fe=!1,ke=null,e}function Fa(e,t){var o=t[cn];void 0===o&&(o=t[cn]=new Set);var a=e+"__bubble";o.has(a)||(Va(t,e,2,!1),o.add(a))}function ka(e,t,o){var a=0;t&&(a|=4),Va(o,e,a,t)}var wa="_reactListening"+Math.random().toString(36).slice(2);function Ha(e){if(!e[wa]){e[wa]=!0,r.forEach((function(t){"selectionchange"!==t&&(Ua.has(t)||ka(t,!1,e),ka(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[wa]||(t[wa]=!0,ka("selectionchange",!1,t))}}function Va(e,t,o,a){switch(Xt(t)){case 1:var n=zt;break;case 4:n=xt;break;default:n=Kt}o=n.bind(null,t,o,e),n=void 0,!be||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(n=!0),a?void 0!==n?e.addEventListener(t,o,{capture:!0,passive:n}):e.addEventListener(t,o,!0):void 0!==n?e.addEventListener(t,o,{passive:n}):e.addEventListener(t,o,!1)}function Ya(e,t,o,a,n){var i=a;if(0==(1&t)&&0==(2&t)&&null!==a)e:for(;;){if(null===a)return;var r=a.tag;if(3===r||4===r){var s=a.stateNode.containerInfo;if(s===n||8===s.nodeType&&s.parentNode===n)break;if(4===r)for(r=a.return;null!==r;){var E=r.tag;if((3===E||4===E)&&((E=r.stateNode.containerInfo)===n||8===E.nodeType&&E.parentNode===n))return;r=r.return}for(;null!==s;){if(null===(r=On(s)))return;if(5===(E=r.tag)||6===E){a=i=r;continue e}s=s.parentNode}}a=a.return}ye((function(){var a=i,n=me(o),r=[];e:{var s=va.get(e);if(void 0!==s){var E=Eo,_=e;switch(e){case"keypress":if(0===eo(o))break e;case"keydown":case"keyup":E=Co;break;case"focusin":_="focus",E=co;break;case"focusout":_="blur",E=co;break;case"beforeblur":case"afterblur":E=co;break;case"click":if(2===o.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":E=So;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":E=uo;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":E=go;break;case fa:case Ca:case Da:E=Ao;break;case ga:E=vo;break;case"scroll":E=To;break;case"wheel":E=yo;break;case"copy":case"cut":case"paste":E=Oo;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":E=Do}var T=0!=(4&t),l=!T&&"scroll"===e,S=T?null!==s?s+"Capture":null:s;T=[];for(var u,d=a;null!==d;){var c=(u=d).stateNode;if(5===u.tag&&null!==c&&(u=c,null!==S&&(null!=(c=Be(d,S))&&T.push(za(d,c,u)))),l)break;d=d.return}0<T.length&&(s=new E(s,_,null,o,n),r.push({event:s,listeners:T}))}}if(0==(7&t)){if(E="mouseout"===e||"pointerout"===e,(!(s="mouseover"===e||"pointerover"===e)||o===Re||!(_=o.relatedTarget||o.fromElement)||!On(_)&&!_[dn])&&(E||s)&&(s=n.window===n?n:(s=n.ownerDocument)?s.defaultView||s.parentWindow:window,E?(E=a,null!==(_=(_=o.relatedTarget||o.toElement)?On(_):null)&&(_!==(l=Ve(_))||5!==_.tag&&6!==_.tag)&&(_=null)):(E=null,_=a),E!==_)){if(T=So,c="onMouseLeave",S="onMouseEnter",d="mouse","pointerout"!==e&&"pointerover"!==e||(T=Do,c="onPointerLeave",S="onPointerEnter",d="pointer"),l=null==E?s:Rn(E),u=null==_?s:Rn(_),(s=new T(c,d+"leave",E,o,n)).target=l,s.relatedTarget=u,c=null,On(n)===a&&((T=new T(S,d+"enter",_,o,n)).target=u,T.relatedTarget=l,c=T),l=c,E&&_)e:{for(S=_,d=0,u=T=E;u;u=Ka(u))d++;for(u=0,c=S;c;c=Ka(c))u++;for(;0<d-u;)T=Ka(T),d--;for(;0<u-d;)S=Ka(S),u--;for(;d--;){if(T===S||null!==S&&T===S.alternate)break e;T=Ka(T),S=Ka(S)}T=null}else T=null;null!==E&&ja(r,s,E,T,!1),null!==_&&null!==l&&ja(r,l,_,T,!0)}if("select"===(E=(s=a?Rn(a):window).nodeName&&s.nodeName.toLowerCase())||"input"===E&&"file"===s.type)var A=Xo;else if(Yo(s))if($o)A=ia;else{A=aa;var I=oa}else(E=s.nodeName)&&"input"===E.toLowerCase()&&("checkbox"===s.type||"radio"===s.type)&&(A=na);switch(A&&(A=A(e,a))?zo(r,A,o,n):(I&&I(e,s,a),"focusout"===e&&(I=s._wrapperState)&&I.controlled&&"number"===s.type&&ee(s,"number",s.value)),I=a?Rn(a):window,e){case"focusin":(Yo(I)||"true"===I.contentEditable)&&(ca=I,Aa=a,Ia=null);break;case"focusout":Ia=Aa=ca=null;break;case"mousedown":Oa=!0;break;case"contextmenu":case"mouseup":case"dragend":Oa=!1,Na(r,o,n);break;case"selectionchange":if(da)break;case"keydown":case"keyup":Na(r,o,n)}var O;if(bo)e:{switch(e){case"compositionstart":var N="onCompositionStart";break e;case"compositionend":N="onCompositionEnd";break e;case"compositionupdate":N="onCompositionUpdate";break e}N=void 0}else Ho?ko(e,o)&&(N="onCompositionEnd"):"keydown"===e&&229===o.keyCode&&(N="onCompositionStart");N&&(Wo&&"ko"!==o.locale&&(Ho||"onCompositionStart"!==N?"onCompositionEnd"===N&&Ho&&(O=Zt()):(qt="value"in($t=n)?$t.value:$t.textContent,Ho=!0)),0<(I=xa(a,N)).length&&(N=new No(N,e,null,o,n),r.push({event:N,listeners:I}),O?N.data=O:null!==(O=wo(o))&&(N.data=O))),(O=Uo?(function(e,t){switch(e){case"compositionend":return wo(t);case"keypress":return 32!==t.which?null:(Fo=!0,Go);case"textInput":return(e=t.data)===Go&&Fo?null:e;default:return null}})(e,o):(function(e,t){if(Ho)return"compositionend"===e||!bo&&ko(e,t)?(e=Zt(),Jt=qt=$t=null,Ho=!1,e):null;switch(e){default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Wo&&"ko"!==t.locale?null:t.data}})(e,o))&&(0<(a=xa(a,"onBeforeInput")).length&&(n=new No("onBeforeInput","beforeinput",null,o,n),r.push({event:n,listeners:a}),n.data=O))}Ga(r,t)}))}function za(e,t,o){return{instance:e,listener:t,currentTarget:o}}function xa(e,t){for(var o=t+"Capture",a=[];null!==e;){var n=e,i=n.stateNode;5===n.tag&&null!==i&&(n=i,null!=(i=Be(e,o))&&a.unshift(za(e,i,n)),null!=(i=Be(e,t))&&a.push(za(e,i,n))),e=e.return}return a}function Ka(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function ja(e,t,o,a,n){for(var i=t._reactName,r=[];null!==o&&o!==a;){var s=o,E=s.alternate,_=s.stateNode;if(null!==E&&E===a)break;5===s.tag&&null!==_&&(s=_,n?null!=(E=Be(o,i))&&r.unshift(za(o,E,s)):n||null!=(E=Be(o,i))&&r.push(za(o,E,s))),o=o.return}0!==r.length&&e.push({event:t,listeners:r})}var Qa=/\r\n?/g,Xa=/\u0000|\uFFFD/g;function $a(e){return("string"==typeof e?e:""+e).replace(Qa,"\n").replace(Xa,"")}function qa(e,t,o){if(t=$a(t),$a(e)!==t&&o)throw Error(i(425))}function Ja(){}var Za=null,en=null;function tn(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var on="function"==typeof setTimeout?setTimeout:void 0,an="function"==typeof clearTimeout?clearTimeout:void 0,nn="function"==typeof Promise?Promise:void 0,rn="function"==typeof queueMicrotask?queueMicrotask:void 0!==nn?function(e){return nn.resolve(null).then(e).catch(sn)}:on;function sn(e){setTimeout((function(){throw e}))}function En(e,t){var o=t,a=0;do{var n=o.nextSibling;if(e.removeChild(o),n&&8===n.nodeType)if("/$"===(o=n.data)){if(0===a)return e.removeChild(n),void Ht(t);a--}else"$"!==o&&"$?"!==o&&"$!"!==o||a++;o=n}while(o);Ht(t)}function _n(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function Tn(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var o=e.data;if("$"===o||"$!"===o||"$?"===o){if(0===t)return e;t--}else"/$"===o&&t++}e=e.previousSibling}return null}var ln=Math.random().toString(36).slice(2),Sn="__reactFiber$"+ln,un="__reactProps$"+ln,dn="__reactContainer$"+ln,cn="__reactEvents$"+ln,An="__reactListeners$"+ln,In="__reactHandles$"+ln;function On(e){var t=e[Sn];if(t)return t;for(var o=e.parentNode;o;){if(t=o[dn]||o[Sn]){if(o=t.alternate,null!==t.child||null!==o&&null!==o.child)for(e=Tn(e);null!==e;){if(o=e[Sn])return o;e=Tn(e)}return t}o=(e=o).parentNode}return null}function Nn(e){return!(e=e[Sn]||e[dn])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function Rn(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function mn(e){return e[un]||null}var pn=[],hn=-1;function Ln(e){return{current:e}}function fn(e){0>hn||(e.current=pn[hn],pn[hn]=null,hn--)}function Cn(e,t){hn++,pn[hn]=e.current,e.current=t}var Dn={},gn=Ln(Dn),vn=Ln(!1),Pn=Dn;function yn(e,t){var o=e.type.contextTypes;if(!o)return Dn;var a=e.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===t)return a.__reactInternalMemoizedMaskedChildContext;var n,i={};for(n in o)i[n]=t[n];return a&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function Bn(e){return null!=(e=e.childContextTypes)}function bn(){fn(vn),fn(gn)}function Mn(e,t,o){if(gn.current!==Dn)throw Error(i(168));Cn(gn,t),Cn(vn,o)}function Un(e,t,o){var a=e.stateNode;if(t=t.childContextTypes,"function"!=typeof a.getChildContext)return o;for(var n in a=a.getChildContext())if(!(n in t))throw Error(i(108,Y(e)||"Unknown",n));return G({},o,a)}function Wn(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Dn,Pn=gn.current,Cn(gn,e),Cn(vn,vn.current),!0}function Gn(e,t,o){var a=e.stateNode;if(!a)throw Error(i(169));o?(e=Un(e,t,Pn),a.__reactInternalMemoizedMergedChildContext=e,fn(vn),fn(gn),Cn(gn,e)):fn(vn),Cn(vn,o)}var Fn=null,kn=!1,wn=!1;function Hn(e){null===Fn?Fn=[e]:Fn.push(e)}function Vn(){if(!wn&&null!==Fn){wn=!0;var e=0,t=Ot;try{var o=Fn;for(Ot=1;e<o.length;e++){var a=o[e];do{a=a(!0)}while(null!==a)}Fn=null,kn=!1}catch(t){throw null!==Fn&&(Fn=Fn.slice(e+1)),je(Ze,Vn),t}finally{Ot=t,wn=!1}}return null}var Yn=[],zn=0,xn=null,Kn=0,jn=[],Qn=0,Xn=null,$n=1,qn="";function Jn(e,t){Yn[zn++]=Kn,Yn[zn++]=xn,xn=e,Kn=t}function Zn(e,t,o){jn[Qn++]=$n,jn[Qn++]=qn,jn[Qn++]=Xn,Xn=e;var a=$n;e=qn;var n=32-it(a)-1;a&=~(1<<n),o+=1;var i=32-it(t)+n;if(30<i){var r=n-n%5;i=(a&(1<<r)-1).toString(32),a>>=r,n-=r,$n=1<<32-it(t)+n|o<<n|a,qn=i+e}else $n=1<<i|o<<n|a,qn=e}function ei(e){null!==e.return&&(Jn(e,1),Zn(e,1,0))}function ti(e){for(;e===xn;)xn=Yn[--zn],Yn[zn]=null,Kn=Yn[--zn],Yn[zn]=null;for(;e===Xn;)Xn=jn[--Qn],jn[Qn]=null,qn=jn[--Qn],jn[Qn]=null,$n=jn[--Qn],jn[Qn]=null}var oi=null,ai=null,ni=!1,ii=null;function ri(e,t){var o=P_(5,null,null,0);o.elementType="DELETED",o.stateNode=t,o.return=e,null===(t=e.deletions)?(e.deletions=[o],e.flags|=16):t.push(o)}function si(e,t){switch(e.tag){case 5:var o=e.type;return null!==(t=1!==t.nodeType||o.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,oi=e,ai=_n(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,oi=e,ai=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(o=null!==Xn?{id:$n,overflow:qn}:null,e.memoizedState={dehydrated:t,treeContext:o,retryLane:1073741824},(o=P_(18,null,null,0)).stateNode=t,o.return=e,e.child=o,oi=e,ai=null,!0);default:return!1}}function Ei(e){return 0!=(1&e.mode)&&0==(128&e.flags)}function _i(e){if(ni){var t=ai;if(t){var o=t;if(!si(e,t)){if(Ei(e))throw Error(i(418));t=_n(o.nextSibling);var a=oi;t&&si(e,t)?ri(a,o):(e.flags=-4097&e.flags|2,ni=!1,oi=e)}}else{if(Ei(e))throw Error(i(418));e.flags=-4097&e.flags|2,ni=!1,oi=e}}}function Ti(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;oi=e}function li(e){if(e!==oi)return!1;if(!ni)return Ti(e),ni=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!tn(e.type,e.memoizedProps)),t&&(t=ai)){if(Ei(e))throw Si(),Error(i(418));for(;t;)ri(e,t),t=_n(t.nextSibling)}if(Ti(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var o=e.data;if("/$"===o){if(0===t){ai=_n(e.nextSibling);break e}t--}else"$"!==o&&"$!"!==o&&"$?"!==o||t++}e=e.nextSibling}ai=null}}else ai=oi?_n(e.stateNode.nextSibling):null;return!0}function Si(){for(var e=ai;e;)e=_n(e.nextSibling)}function ui(){ai=oi=null,ni=!1}function di(e){null===ii?ii=[e]:ii.push(e)}var ci=R.ReactCurrentBatchConfig;function Ai(e,t){if(e&&e.defaultProps){for(var o in t=G({},t),e=e.defaultProps)void 0===t[o]&&(t[o]=e[o]);return t}return t}var Ii=Ln(null),Oi=null,Ni=null,Ri=null;function mi(){Ri=Ni=Oi=null}function pi(e){var t=Ii.current;fn(Ii),e._currentValue=t}function hi(e,t,o){for(;null!==e;){var a=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==a&&(a.childLanes|=t)):null!==a&&(a.childLanes&t)!==t&&(a.childLanes|=t),e===o)break;e=e.return}}function Li(e,t){Oi=e,Ri=Ni=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Ns=!0),e.firstContext=null)}function fi(e){var t=e._currentValue;if(Ri!==e)if(e={context:e,memoizedValue:t,next:null},null===Ni){if(null===Oi)throw Error(i(308));Ni=e,Oi.dependencies={lanes:0,firstContext:e}}else Ni=Ni.next=e;return t}var Ci=null;function Di(e){null===Ci?Ci=[e]:Ci.push(e)}function gi(e,t,o,a){var n=t.interleaved;return null===n?(o.next=o,Di(t)):(o.next=n.next,n.next=o),t.interleaved=o,vi(e,a)}function vi(e,t){e.lanes|=t;var o=e.alternate;for(null!==o&&(o.lanes|=t),o=e,e=e.return;null!==e;)e.childLanes|=t,null!==(o=e.alternate)&&(o.childLanes|=t),o=e,e=e.return;return 3===o.tag?o.stateNode:null}var Pi=!1;function yi(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Bi(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function bi(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Mi(e,t,o){var a=e.updateQueue;if(null===a)return null;if(a=a.shared,0!=(2&DE)){var n=a.pending;return null===n?t.next=t:(t.next=n.next,n.next=t),a.pending=t,vi(e,o)}return null===(n=a.interleaved)?(t.next=t,Di(a)):(t.next=n.next,n.next=t),a.interleaved=t,vi(e,o)}function Ui(e,t,o){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194240&o))){var a=t.lanes;o|=a&=e.pendingLanes,t.lanes=o,It(e,o)}}function Wi(e,t){var o=e.updateQueue,a=e.alternate;if(null!==a&&o===(a=a.updateQueue)){var n=null,i=null;if(null!==(o=o.firstBaseUpdate)){do{var r={eventTime:o.eventTime,lane:o.lane,tag:o.tag,payload:o.payload,callback:o.callback,next:null};null===i?n=i=r:i=i.next=r,o=o.next}while(null!==o);null===i?n=i=t:i=i.next=t}else n=i=t;return o={baseState:a.baseState,firstBaseUpdate:n,lastBaseUpdate:i,shared:a.shared,effects:a.effects},void(e.updateQueue=o)}null===(e=o.lastBaseUpdate)?o.firstBaseUpdate=t:e.next=t,o.lastBaseUpdate=t}function Gi(e,t,o,a){var n=e.updateQueue;Pi=!1;var i=n.firstBaseUpdate,r=n.lastBaseUpdate,s=n.shared.pending;if(null!==s){n.shared.pending=null;var E=s,_=E.next;E.next=null,null===r?i=_:r.next=_,r=E;var T=e.alternate;null!==T&&((s=(T=T.updateQueue).lastBaseUpdate)!==r&&(null===s?T.firstBaseUpdate=_:s.next=_,T.lastBaseUpdate=E))}if(null!==i){var l=n.baseState;for(r=0,T=_=E=null,s=i;;){var S=s.lane,u=s.eventTime;if((a&S)===S){null!==T&&(T=T.next={eventTime:u,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});e:{var d=e,c=s;switch(S=t,u=o,c.tag){case 1:if("function"==typeof(d=c.payload)){l=d.call(u,l,S);break e}l=d;break e;case 3:d.flags=-65537&d.flags|128;case 0:if(null==(S="function"==typeof(d=c.payload)?d.call(u,l,S):d))break e;l=G({},l,S);break e;case 2:Pi=!0}}null!==s.callback&&0!==s.lane&&(e.flags|=64,null===(S=n.effects)?n.effects=[s]:S.push(s))}else u={eventTime:u,lane:S,tag:s.tag,payload:s.payload,callback:s.callback,next:null},null===T?(_=T=u,E=l):T=T.next=u,r|=S;if(null===(s=s.next)){if(null===(s=n.shared.pending))break;s=(S=s).next,S.next=null,n.lastBaseUpdate=S,n.shared.pending=null}}if(null===T&&(E=l),n.baseState=E,n.firstBaseUpdate=_,n.lastBaseUpdate=T,null!==(t=n.shared.interleaved)){n=t;do{r|=n.lane,n=n.next}while(n!==t)}else null===i&&(n.shared.lanes=0);UE|=r,e.lanes=r,e.memoizedState=l}}function Fi(e,t,o){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var a=e[t],n=a.callback;if(null!==n){if(a.callback=null,a=o,"function"!=typeof n)throw Error(i(191,n));n.call(a)}}}var ki=(new a.Component).refs;function wi(e,t,o,a){o=null==(o=o(a,t=e.memoizedState))?t:G({},t,o),e.memoizedState=o,0===e.lanes&&(e.updateQueue.baseState=o)}var Hi={isMounted:function(e){return!!(e=e._reactInternals)&&Ve(e)===e},enqueueSetState:function(e,t,o){e=e._reactInternals;var a=ZE(),n=e_(e),i=bi(a,n);i.payload=t,null!=o&&(i.callback=o),null!==(t=Mi(e,i,n))&&(t_(t,e,n,a),Ui(t,e,n))},enqueueReplaceState:function(e,t,o){e=e._reactInternals;var a=ZE(),n=e_(e),i=bi(a,n);i.tag=1,i.payload=t,null!=o&&(i.callback=o),null!==(t=Mi(e,i,n))&&(t_(t,e,n,a),Ui(t,e,n))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var o=ZE(),a=e_(e),n=bi(o,a);n.tag=2,null!=t&&(n.callback=t),null!==(t=Mi(e,n,a))&&(t_(t,e,a,o),Ui(t,e,a))}};function Vi(e,t,o,a,n,i,r){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(a,i,r):!t.prototype||!t.prototype.isPureReactComponent||(!sa(o,a)||!sa(n,i))}function Yi(e,t,o){var a=!1,n=Dn,i=t.contextType;return"object"==typeof i&&null!==i?i=fi(i):(n=Bn(t)?Pn:gn.current,i=(a=null!=(a=t.contextTypes))?yn(e,n):Dn),t=new t(o,i),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=Hi,e.stateNode=t,t._reactInternals=e,a&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=i),t}function zi(e,t,o,a){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(o,a),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(o,a),t.state!==e&&Hi.enqueueReplaceState(t,t.state,null)}function xi(e,t,o,a){var n=e.stateNode;n.props=o,n.state=e.memoizedState,n.refs=ki,yi(e);var i=t.contextType;"object"==typeof i&&null!==i?n.context=fi(i):(i=Bn(t)?Pn:gn.current,n.context=yn(e,i)),n.state=e.memoizedState,"function"==typeof(i=t.getDerivedStateFromProps)&&(wi(e,t,i,o),n.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof n.getSnapshotBeforeUpdate||"function"!=typeof n.UNSAFE_componentWillMount&&"function"!=typeof n.componentWillMount||(t=n.state,"function"==typeof n.componentWillMount&&n.componentWillMount(),"function"==typeof n.UNSAFE_componentWillMount&&n.UNSAFE_componentWillMount(),t!==n.state&&Hi.enqueueReplaceState(n,n.state,null),Gi(e,o,n,a),n.state=e.memoizedState),"function"==typeof n.componentDidMount&&(e.flags|=4194308)}function Ki(e,t,o){if(null!==(e=o.ref)&&"function"!=typeof e&&"object"!=typeof e){if(o._owner){if(o=o._owner){if(1!==o.tag)throw Error(i(309));var a=o.stateNode}if(!a)throw Error(i(147,e));var n=a,r=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===r?t.ref:(t=function(e){var t=n.refs;t===ki&&(t=n.refs={}),null===e?delete t[r]:t[r]=e},t._stringRef=r,t)}if("string"!=typeof e)throw Error(i(284));if(!o._owner)throw Error(i(290,e))}return e}function ji(e,t){throw e=Object.prototype.toString.call(t),Error(i(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Qi(e){return(0,e._init)(e._payload)}function Xi(e){function t(t,o){if(e){var a=t.deletions;null===a?(t.deletions=[o],t.flags|=16):a.push(o)}}function o(o,a){if(!e)return null;for(;null!==a;)t(o,a),a=a.sibling;return null}function a(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function n(e,t){return(e=B_(e,t)).index=0,e.sibling=null,e}function r(t,o,a){return t.index=a,e?null!==(a=t.alternate)?(a=a.index)<o?(t.flags|=2,o):a:(t.flags|=2,o):(t.flags|=1048576,o)}function s(t){return e&&null===t.alternate&&(t.flags|=2),t}function E(e,t,o,a){return null===t||6!==t.tag?((t=W_(o,e.mode,a)).return=e,t):((t=n(t,o)).return=e,t)}function _(e,t,o,a){var i=o.type;return i===h?l(e,t,o.props.children,a,o.key):null!==t&&(t.elementType===i||"object"==typeof i&&null!==i&&i.$$typeof===B&&Qi(i)===t.type)?((a=n(t,o.props)).ref=Ki(e,t,o),a.return=e,a):((a=b_(o.type,o.key,o.props,null,e.mode,a)).ref=Ki(e,t,o),a.return=e,a)}function T(e,t,o,a){return null===t||4!==t.tag||t.stateNode.containerInfo!==o.containerInfo||t.stateNode.implementation!==o.implementation?((t=G_(o,e.mode,a)).return=e,t):((t=n(t,o.children||[])).return=e,t)}function l(e,t,o,a,i){return null===t||7!==t.tag?((t=M_(o,e.mode,a,i)).return=e,t):((t=n(t,o)).return=e,t)}function S(e,t,o){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=W_(""+t,e.mode,o)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case m:return(o=b_(t.type,t.key,t.props,null,e.mode,o)).ref=Ki(e,null,t),o.return=e,o;case p:return(t=G_(t,e.mode,o)).return=e,t;case B:return S(e,(0,t._init)(t._payload),o)}if(te(t)||U(t))return(t=M_(t,e.mode,o,null)).return=e,t;ji(e,t)}return null}function u(e,t,o,a){var n=null!==t?t.key:null;if("string"==typeof o&&""!==o||"number"==typeof o)return null!==n?null:E(e,t,""+o,a);if("object"==typeof o&&null!==o){switch(o.$$typeof){case m:return o.key===n?_(e,t,o,a):null;case p:return o.key===n?T(e,t,o,a):null;case B:return u(e,t,(n=o._init)(o._payload),a)}if(te(o)||U(o))return null!==n?null:l(e,t,o,a,null);ji(e,o)}return null}function d(e,t,o,a,n){if("string"==typeof a&&""!==a||"number"==typeof a)return E(t,e=e.get(o)||null,""+a,n);if("object"==typeof a&&null!==a){switch(a.$$typeof){case m:return _(t,e=e.get(null===a.key?o:a.key)||null,a,n);case p:return T(t,e=e.get(null===a.key?o:a.key)||null,a,n);case B:return d(e,t,o,(0,a._init)(a._payload),n)}if(te(a)||U(a))return l(t,e=e.get(o)||null,a,n,null);ji(t,a)}return null}function c(n,i,s,E){for(var _=null,T=null,l=i,c=i=0,A=null;null!==l&&c<s.length;c++){l.index>c?(A=l,l=null):A=l.sibling;var I=u(n,l,s[c],E);if(null===I){null===l&&(l=A);break}e&&l&&null===I.alternate&&t(n,l),i=r(I,i,c),null===T?_=I:T.sibling=I,T=I,l=A}if(c===s.length)return o(n,l),ni&&Jn(n,c),_;if(null===l){for(;c<s.length;c++)null!==(l=S(n,s[c],E))&&(i=r(l,i,c),null===T?_=l:T.sibling=l,T=l);return ni&&Jn(n,c),_}for(l=a(n,l);c<s.length;c++)null!==(A=d(l,n,c,s[c],E))&&(e&&null!==A.alternate&&l.delete(null===A.key?c:A.key),i=r(A,i,c),null===T?_=A:T.sibling=A,T=A);return e&&l.forEach((function(e){return t(n,e)})),ni&&Jn(n,c),_}function A(n,s,E,_){var T=U(E);if("function"!=typeof T)throw Error(i(150));if(null==(E=T.call(E)))throw Error(i(151));for(var l=T=null,c=s,A=s=0,I=null,O=E.next();null!==c&&!O.done;A++,O=E.next()){c.index>A?(I=c,c=null):I=c.sibling;var N=u(n,c,O.value,_);if(null===N){null===c&&(c=I);break}e&&c&&null===N.alternate&&t(n,c),s=r(N,s,A),null===l?T=N:l.sibling=N,l=N,c=I}if(O.done)return o(n,c),ni&&Jn(n,A),T;if(null===c){for(;!O.done;A++,O=E.next())null!==(O=S(n,O.value,_))&&(s=r(O,s,A),null===l?T=O:l.sibling=O,l=O);return ni&&Jn(n,A),T}for(c=a(n,c);!O.done;A++,O=E.next())null!==(O=d(c,n,A,O.value,_))&&(e&&null!==O.alternate&&c.delete(null===O.key?A:O.key),s=r(O,s,A),null===l?T=O:l.sibling=O,l=O);return e&&c.forEach((function(e){return t(n,e)})),ni&&Jn(n,A),T}return function e(a,i,r,E){if("object"==typeof r&&null!==r&&r.type===h&&null===r.key&&(r=r.props.children),"object"==typeof r&&null!==r){switch(r.$$typeof){case m:e:{for(var _=r.key,T=i;null!==T;){if(T.key===_){if((_=r.type)===h){if(7===T.tag){o(a,T.sibling),(i=n(T,r.props.children)).return=a,a=i;break e}}else if(T.elementType===_||"object"==typeof _&&null!==_&&_.$$typeof===B&&Qi(_)===T.type){o(a,T.sibling),(i=n(T,r.props)).ref=Ki(a,T,r),i.return=a,a=i;break e}o(a,T);break}t(a,T),T=T.sibling}r.type===h?((i=M_(r.props.children,a.mode,E,r.key)).return=a,a=i):((E=b_(r.type,r.key,r.props,null,a.mode,E)).ref=Ki(a,i,r),E.return=a,a=E)}return s(a);case p:e:{for(T=r.key;null!==i;){if(i.key===T){if(4===i.tag&&i.stateNode.containerInfo===r.containerInfo&&i.stateNode.implementation===r.implementation){o(a,i.sibling),(i=n(i,r.children||[])).return=a,a=i;break e}o(a,i);break}t(a,i),i=i.sibling}(i=G_(r,a.mode,E)).return=a,a=i}return s(a);case B:return e(a,i,(T=r._init)(r._payload),E)}if(te(r))return c(a,i,r,E);if(U(r))return A(a,i,r,E);ji(a,r)}return"string"==typeof r&&""!==r||"number"==typeof r?(r=""+r,null!==i&&6===i.tag?(o(a,i.sibling),(i=n(i,r)).return=a,a=i):(o(a,i),(i=W_(r,a.mode,E)).return=a,a=i),s(a)):o(a,i)}}var $i=Xi(!0),qi=Xi(!1),Ji={},Zi=Ln(Ji),er=Ln(Ji),tr=Ln(Ji);function or(e){if(e===Ji)throw Error(i(174));return e}function ar(e,t){switch(Cn(tr,t),Cn(er,e),Cn(Zi,Ji),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Ee(null,"");break;default:t=Ee(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}fn(Zi),Cn(Zi,t)}function nr(){fn(Zi),fn(er),fn(tr)}function ir(e){or(tr.current);var t=or(Zi.current),o=Ee(t,e.type);t!==o&&(Cn(er,e),Cn(Zi,o))}function rr(e){er.current===e&&(fn(Zi),fn(er))}var sr=Ln(0);function Er(e){for(var t=e;null!==t;){if(13===t.tag){var o=t.memoizedState;if(null!==o&&(null===(o=o.dehydrated)||"$?"===o.data||"$!"===o.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var _r=[];function Tr(){for(var e=0;e<_r.length;e++)_r[e]._workInProgressVersionPrimary=null;_r.length=0}var lr=R.ReactCurrentDispatcher,Sr=R.ReactCurrentBatchConfig,ur=0,dr=null,cr=null,Ar=null,Ir=!1,Or=!1,Nr=0,Rr=0;function mr(){throw Error(i(321))}function pr(e,t){if(null===t)return!1;for(var o=0;o<t.length&&o<e.length;o++)if(!ra(e[o],t[o]))return!1;return!0}function hr(e,t,o,a,n,r){if(ur=r,dr=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,lr.current=null===e||null===e.memoizedState?rs:ss,e=o(a,n),Or){r=0;do{if(Or=!1,Nr=0,25<=r)throw Error(i(301));r+=1,Ar=cr=null,t.updateQueue=null,lr.current=Es,e=o(a,n)}while(Or)}if(lr.current=is,t=null!==cr&&null!==cr.next,ur=0,Ar=cr=dr=null,Ir=!1,t)throw Error(i(300));return e}function Lr(){var e=0!==Nr;return Nr=0,e}function fr(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Ar?dr.memoizedState=Ar=e:Ar=Ar.next=e,Ar}function Cr(){if(null===cr){var e=dr.alternate;e=null!==e?e.memoizedState:null}else e=cr.next;var t=null===Ar?dr.memoizedState:Ar.next;if(null!==t)Ar=t,cr=e;else{if(null===e)throw Error(i(310));e={memoizedState:(cr=e).memoizedState,baseState:cr.baseState,baseQueue:cr.baseQueue,queue:cr.queue,next:null},null===Ar?dr.memoizedState=Ar=e:Ar=Ar.next=e}return Ar}function Dr(e,t){return"function"==typeof t?t(e):t}function gr(e){var t=Cr(),o=t.queue;if(null===o)throw Error(i(311));o.lastRenderedReducer=e;var a=cr,n=a.baseQueue,r=o.pending;if(null!==r){if(null!==n){var s=n.next;n.next=r.next,r.next=s}a.baseQueue=n=r,o.pending=null}if(null!==n){r=n.next,a=a.baseState;var E=s=null,_=null,T=r;do{var l=T.lane;if((ur&l)===l)null!==_&&(_=_.next={lane:0,action:T.action,hasEagerState:T.hasEagerState,eagerState:T.eagerState,next:null}),a=T.hasEagerState?T.eagerState:e(a,T.action);else{var S={lane:l,action:T.action,hasEagerState:T.hasEagerState,eagerState:T.eagerState,next:null};null===_?(E=_=S,s=a):_=_.next=S,dr.lanes|=l,UE|=l}T=T.next}while(null!==T&&T!==r);null===_?s=a:_.next=E,ra(a,t.memoizedState)||(Ns=!0),t.memoizedState=a,t.baseState=s,t.baseQueue=_,o.lastRenderedState=a}if(null!==(e=o.interleaved)){n=e;do{r=n.lane,dr.lanes|=r,UE|=r,n=n.next}while(n!==e)}else null===n&&(o.lanes=0);return[t.memoizedState,o.dispatch]}function vr(e){var t=Cr(),o=t.queue;if(null===o)throw Error(i(311));o.lastRenderedReducer=e;var a=o.dispatch,n=o.pending,r=t.memoizedState;if(null!==n){o.pending=null;var s=n=n.next;do{r=e(r,s.action),s=s.next}while(s!==n);ra(r,t.memoizedState)||(Ns=!0),t.memoizedState=r,null===t.baseQueue&&(t.baseState=r),o.lastRenderedState=r}return[r,a]}function Pr(){}function yr(e,t){var o=dr,a=Cr(),n=t(),r=!ra(a.memoizedState,n);if(r&&(a.memoizedState=n,Ns=!0),a=a.queue,Yr(Mr.bind(null,o,a,e),[e]),a.getSnapshot!==t||r||null!==Ar&&1&Ar.memoizedState.tag){if(o.flags|=2048,Fr(9,br.bind(null,o,a,n,t),void 0,null),null===gE)throw Error(i(349));0!=(30&ur)||Br(o,t,n)}return n}function Br(e,t,o){e.flags|=16384,e={getSnapshot:t,value:o},null===(t=dr.updateQueue)?(t={lastEffect:null,stores:null},dr.updateQueue=t,t.stores=[e]):null===(o=t.stores)?t.stores=[e]:o.push(e)}function br(e,t,o,a){t.value=o,t.getSnapshot=a,Ur(t)&&Wr(e)}function Mr(e,t,o){return o((function(){Ur(t)&&Wr(e)}))}function Ur(e){var t=e.getSnapshot;e=e.value;try{var o=t();return!ra(e,o)}catch(e){return!0}}function Wr(e){var t=vi(e,1);null!==t&&t_(t,e,1,-1)}function Gr(e){var t=fr();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Dr,lastRenderedState:e},t.queue=e,e=e.dispatch=ts.bind(null,dr,e),[t.memoizedState,e]}function Fr(e,t,o,a){return e={tag:e,create:t,destroy:o,deps:a,next:null},null===(t=dr.updateQueue)?(t={lastEffect:null,stores:null},dr.updateQueue=t,t.lastEffect=e.next=e):null===(o=t.lastEffect)?t.lastEffect=e.next=e:(a=o.next,o.next=e,e.next=a,t.lastEffect=e),e}function kr(){return Cr().memoizedState}function wr(e,t,o,a){var n=fr();dr.flags|=e,n.memoizedState=Fr(1|t,o,void 0,void 0===a?null:a)}function Hr(e,t,o,a){var n=Cr();a=void 0===a?null:a;var i=void 0;if(null!==cr){var r=cr.memoizedState;if(i=r.destroy,null!==a&&pr(a,r.deps))return void(n.memoizedState=Fr(t,o,i,a))}dr.flags|=e,n.memoizedState=Fr(1|t,o,i,a)}function Vr(e,t){return wr(8390656,8,e,t)}function Yr(e,t){return Hr(2048,8,e,t)}function zr(e,t){return Hr(4,2,e,t)}function xr(e,t){return Hr(4,4,e,t)}function Kr(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function jr(e,t,o){return o=null!=o?o.concat([e]):null,Hr(4,4,Kr.bind(null,t,e),o)}function Qr(){}function Xr(e,t){var o=Cr();t=void 0===t?null:t;var a=o.memoizedState;return null!==a&&null!==t&&pr(t,a[1])?a[0]:(o.memoizedState=[e,t],e)}function $r(e,t){var o=Cr();t=void 0===t?null:t;var a=o.memoizedState;return null!==a&&null!==t&&pr(t,a[1])?a[0]:(e=e(),o.memoizedState=[e,t],e)}function qr(e,t,o){return 0==(21&ur)?(e.baseState&&(e.baseState=!1,Ns=!0),e.memoizedState=o):(ra(o,t)||(o=dt(),dr.lanes|=o,UE|=o,e.baseState=!0),t)}function Jr(e,t){var o=Ot;Ot=0!==o&&4>o?o:4,e(!0);var a=Sr.transition;Sr.transition={};try{e(!1),t()}finally{Ot=o,Sr.transition=a}}function Zr(){return Cr().memoizedState}function es(e,t,o){var a=e_(e);if(o={lane:a,action:o,hasEagerState:!1,eagerState:null,next:null},os(e))as(t,o);else if(null!==(o=gi(e,t,o,a))){t_(o,e,a,ZE()),ns(o,t,a)}}function ts(e,t,o){var a=e_(e),n={lane:a,action:o,hasEagerState:!1,eagerState:null,next:null};if(os(e))as(t,n);else{var i=e.alternate;if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var r=t.lastRenderedState,s=i(r,o);if(n.hasEagerState=!0,n.eagerState=s,ra(s,r)){var E=t.interleaved;return null===E?(n.next=n,Di(t)):(n.next=E.next,E.next=n),void(t.interleaved=n)}}catch(e){}null!==(o=gi(e,t,n,a))&&(t_(o,e,a,n=ZE()),ns(o,t,a))}}function os(e){var t=e.alternate;return e===dr||null!==t&&t===dr}function as(e,t){Or=Ir=!0;var o=e.pending;null===o?t.next=t:(t.next=o.next,o.next=t),e.pending=t}function ns(e,t,o){if(0!=(4194240&o)){var a=t.lanes;o|=a&=e.pendingLanes,t.lanes=o,It(e,o)}}var is={readContext:fi,useCallback:mr,useContext:mr,useEffect:mr,useImperativeHandle:mr,useInsertionEffect:mr,useLayoutEffect:mr,useMemo:mr,useReducer:mr,useRef:mr,useState:mr,useDebugValue:mr,useDeferredValue:mr,useTransition:mr,useMutableSource:mr,useSyncExternalStore:mr,useId:mr,unstable_isNewReconciler:!1},rs={readContext:fi,useCallback:function(e,t){return fr().memoizedState=[e,void 0===t?null:t],e},useContext:fi,useEffect:Vr,useImperativeHandle:function(e,t,o){return o=null!=o?o.concat([e]):null,wr(4194308,4,Kr.bind(null,t,e),o)},useLayoutEffect:function(e,t){return wr(4194308,4,e,t)},useInsertionEffect:function(e,t){return wr(4,2,e,t)},useMemo:function(e,t){var o=fr();return t=void 0===t?null:t,e=e(),o.memoizedState=[e,t],e},useReducer:function(e,t,o){var a=fr();return t=void 0!==o?o(t):t,a.memoizedState=a.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},a.queue=e,e=e.dispatch=es.bind(null,dr,e),[a.memoizedState,e]},useRef:function(e){return e={current:e},fr().memoizedState=e},useState:Gr,useDebugValue:Qr,useDeferredValue:function(e){return fr().memoizedState=e},useTransition:function(){var e=Gr(!1),t=e[0];return e=Jr.bind(null,e[1]),fr().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,o){var a=dr,n=fr();if(ni){if(void 0===o)throw Error(i(407));o=o()}else{if(o=t(),null===gE)throw Error(i(349));0!=(30&ur)||Br(a,t,o)}n.memoizedState=o;var r={value:o,getSnapshot:t};return n.queue=r,Vr(Mr.bind(null,a,r,e),[e]),a.flags|=2048,Fr(9,br.bind(null,a,r,o,t),void 0,null),o},useId:function(){var e=fr(),t=gE.identifierPrefix;if(ni){var o=qn;t=":"+t+"R"+(o=($n&~(1<<32-it($n)-1)).toString(32)+o),0<(o=Nr++)&&(t+="H"+o.toString(32)),t+=":"}else t=":"+t+"r"+(o=Rr++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},ss={readContext:fi,useCallback:Xr,useContext:fi,useEffect:Yr,useImperativeHandle:jr,useInsertionEffect:zr,useLayoutEffect:xr,useMemo:$r,useReducer:gr,useRef:kr,useState:function(){return gr(Dr)},useDebugValue:Qr,useDeferredValue:function(e){return qr(Cr(),cr.memoizedState,e)},useTransition:function(){return[gr(Dr)[0],Cr().memoizedState]},useMutableSource:Pr,useSyncExternalStore:yr,useId:Zr,unstable_isNewReconciler:!1},Es={readContext:fi,useCallback:Xr,useContext:fi,useEffect:Yr,useImperativeHandle:jr,useInsertionEffect:zr,useLayoutEffect:xr,useMemo:$r,useReducer:vr,useRef:kr,useState:function(){return vr(Dr)},useDebugValue:Qr,useDeferredValue:function(e){var t=Cr();return null===cr?t.memoizedState=e:qr(t,cr.memoizedState,e)},useTransition:function(){return[vr(Dr)[0],Cr().memoizedState]},useMutableSource:Pr,useSyncExternalStore:yr,useId:Zr,unstable_isNewReconciler:!1};function _s(e,t){try{var o="",a=t;do{o+=H(a),a=a.return}while(a);var n=o}catch(e){n="\nError generating stack: "+e.message+"\n"+e.stack}return{value:e,source:t,stack:n,digest:null}}function Ts(e,t,o){return{value:e,source:null,stack:null!=o?o:null,digest:null!=t?t:null}}function ls(e,t){try{console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}var Ss="function"==typeof WeakMap?WeakMap:Map;function us(e,t,o){(o=bi(-1,o)).tag=3,o.payload={element:null};var a=t.value;return o.callback=function(){YE||(YE=!0,zE=a),ls(0,t)},o}function ds(e,t,o){(o=bi(-1,o)).tag=3;var a=e.type.getDerivedStateFromError;if("function"==typeof a){var n=t.value;o.payload=function(){return a(n)},o.callback=function(){ls(0,t)}}var i=e.stateNode;return null!==i&&"function"==typeof i.componentDidCatch&&(o.callback=function(){ls(0,t),"function"!=typeof a&&(null===xE?xE=new Set([this]):xE.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),o}function cs(e,t,o){var a=e.pingCache;if(null===a){a=e.pingCache=new Ss;var n=new Set;a.set(t,n)}else void 0===(n=a.get(t))&&(n=new Set,a.set(t,n));n.has(o)||(n.add(o),e=L_.bind(null,e,t,o),t.then(e,e))}function As(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function Is(e,t,o,a,n){return 0==(1&e.mode)?(e===t?e.flags|=65536:(e.flags|=128,o.flags|=131072,o.flags&=-52805,1===o.tag&&(null===o.alternate?o.tag=17:((t=bi(-1,1)).tag=2,Mi(o,t,1))),o.lanes|=1),e):(e.flags|=65536,e.lanes=n,e)}var Os=R.ReactCurrentOwner,Ns=!1;function Rs(e,t,o,a){t.child=null===e?qi(t,null,o,a):$i(t,e.child,o,a)}function ms(e,t,o,a,n){o=o.render;var i=t.ref;return Li(t,n),a=hr(e,t,o,a,i,n),o=Lr(),null===e||Ns?(ni&&o&&ei(t),t.flags|=1,Rs(e,t,a,n),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n,Ys(e,t,n))}function ps(e,t,o,a,n){if(null===e){var i=o.type;return"function"!=typeof i||y_(i)||void 0!==i.defaultProps||null!==o.compare||void 0!==o.defaultProps?((e=b_(o.type,null,a,t,t.mode,n)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,hs(e,t,i,a,n))}if(i=e.child,0==(e.lanes&n)){var r=i.memoizedProps;if((o=null!==(o=o.compare)?o:sa)(r,a)&&e.ref===t.ref)return Ys(e,t,n)}return t.flags|=1,(e=B_(i,a)).ref=t.ref,e.return=t,t.child=e}function hs(e,t,o,a,n){if(null!==e){var i=e.memoizedProps;if(sa(i,a)&&e.ref===t.ref){if(Ns=!1,t.pendingProps=a=i,0==(e.lanes&n))return t.lanes=e.lanes,Ys(e,t,n);0!=(131072&e.flags)&&(Ns=!0)}}return Cs(e,t,o,a,n)}function Ls(e,t,o){var a=t.pendingProps,n=a.children,i=null!==e?e.memoizedState:null;if("hidden"===a.mode)if(0==(1&t.mode))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Cn(BE,yE),yE|=o;else{if(0==(1073741824&o))return e=null!==i?i.baseLanes|o:o,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Cn(BE,yE),yE|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},a=null!==i?i.baseLanes:o,Cn(BE,yE),yE|=a}else null!==i?(a=i.baseLanes|o,t.memoizedState=null):a=o,Cn(BE,yE),yE|=a;return Rs(e,t,n,o),t.child}function fs(e,t){var o=t.ref;(null===e&&null!==o||null!==e&&e.ref!==o)&&(t.flags|=512,t.flags|=2097152)}function Cs(e,t,o,a,n){var i=Bn(o)?Pn:gn.current;return i=yn(t,i),Li(t,n),o=hr(e,t,o,a,i,n),a=Lr(),null===e||Ns?(ni&&a&&ei(t),t.flags|=1,Rs(e,t,o,n),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n,Ys(e,t,n))}function Ds(e,t,o,a,n){if(Bn(o)){var i=!0;Wn(t)}else i=!1;if(Li(t,n),null===t.stateNode)Vs(e,t),Yi(t,o,a),xi(t,o,a,n),a=!0;else if(null===e){var r=t.stateNode,s=t.memoizedProps;r.props=s;var E=r.context,_=o.contextType;"object"==typeof _&&null!==_?_=fi(_):_=yn(t,_=Bn(o)?Pn:gn.current);var T=o.getDerivedStateFromProps,l="function"==typeof T||"function"==typeof r.getSnapshotBeforeUpdate;l||"function"!=typeof r.UNSAFE_componentWillReceiveProps&&"function"!=typeof r.componentWillReceiveProps||(s!==a||E!==_)&&zi(t,r,a,_),Pi=!1;var S=t.memoizedState;r.state=S,Gi(t,a,r,n),E=t.memoizedState,s!==a||S!==E||vn.current||Pi?("function"==typeof T&&(wi(t,o,T,a),E=t.memoizedState),(s=Pi||Vi(t,o,s,a,S,E,_))?(l||"function"!=typeof r.UNSAFE_componentWillMount&&"function"!=typeof r.componentWillMount||("function"==typeof r.componentWillMount&&r.componentWillMount(),"function"==typeof r.UNSAFE_componentWillMount&&r.UNSAFE_componentWillMount()),"function"==typeof r.componentDidMount&&(t.flags|=4194308)):("function"==typeof r.componentDidMount&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=E),r.props=a,r.state=E,r.context=_,a=s):("function"==typeof r.componentDidMount&&(t.flags|=4194308),a=!1)}else{r=t.stateNode,Bi(e,t),s=t.memoizedProps,_=t.type===t.elementType?s:Ai(t.type,s),r.props=_,l=t.pendingProps,S=r.context,"object"==typeof(E=o.contextType)&&null!==E?E=fi(E):E=yn(t,E=Bn(o)?Pn:gn.current);var u=o.getDerivedStateFromProps;(T="function"==typeof u||"function"==typeof r.getSnapshotBeforeUpdate)||"function"!=typeof r.UNSAFE_componentWillReceiveProps&&"function"!=typeof r.componentWillReceiveProps||(s!==l||S!==E)&&zi(t,r,a,E),Pi=!1,S=t.memoizedState,r.state=S,Gi(t,a,r,n);var d=t.memoizedState;s!==l||S!==d||vn.current||Pi?("function"==typeof u&&(wi(t,o,u,a),d=t.memoizedState),(_=Pi||Vi(t,o,_,a,S,d,E)||!1)?(T||"function"!=typeof r.UNSAFE_componentWillUpdate&&"function"!=typeof r.componentWillUpdate||("function"==typeof r.componentWillUpdate&&r.componentWillUpdate(a,d,E),"function"==typeof r.UNSAFE_componentWillUpdate&&r.UNSAFE_componentWillUpdate(a,d,E)),"function"==typeof r.componentDidUpdate&&(t.flags|=4),"function"==typeof r.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof r.componentDidUpdate||s===e.memoizedProps&&S===e.memoizedState||(t.flags|=4),"function"!=typeof r.getSnapshotBeforeUpdate||s===e.memoizedProps&&S===e.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=d),r.props=a,r.state=d,r.context=E,a=_):("function"!=typeof r.componentDidUpdate||s===e.memoizedProps&&S===e.memoizedState||(t.flags|=4),"function"!=typeof r.getSnapshotBeforeUpdate||s===e.memoizedProps&&S===e.memoizedState||(t.flags|=1024),a=!1)}return gs(e,t,o,a,i,n)}function gs(e,t,o,a,n,i){fs(e,t);var r=0!=(128&t.flags);if(!a&&!r)return n&&Gn(t,o,!1),Ys(e,t,i);a=t.stateNode,Os.current=t;var s=r&&"function"!=typeof o.getDerivedStateFromError?null:a.render();return t.flags|=1,null!==e&&r?(t.child=$i(t,e.child,null,i),t.child=$i(t,null,s,i)):Rs(e,t,s,i),t.memoizedState=a.state,n&&Gn(t,o,!0),t.child}function vs(e){var t=e.stateNode;t.pendingContext?Mn(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Mn(0,t.context,!1),ar(e,t.containerInfo)}function Ps(e,t,o,a,n){return ui(),di(n),t.flags|=256,Rs(e,t,o,a),t.child}var ys,Bs,bs,Ms={dehydrated:null,treeContext:null,retryLane:0};function Us(e){return{baseLanes:e,cachePool:null,transitions:null}}function Ws(e,t,o){var a,n=t.pendingProps,r=sr.current,s=!1,E=0!=(128&t.flags);if((a=E)||(a=(null===e||null!==e.memoizedState)&&0!=(2&r)),a?(s=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(r|=1),Cn(sr,1&r),null===e)return _i(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(0==(1&t.mode)?t.lanes=1:"$!"===e.data?t.lanes=8:t.lanes=1073741824,null):(E=n.children,e=n.fallback,s?(n=t.mode,s=t.child,E={mode:"hidden",children:E},0==(1&n)&&null!==s?(s.childLanes=0,s.pendingProps=E):s=U_(E,n,0,null),e=M_(e,n,o,null),s.return=t,e.return=t,s.sibling=e,t.child=s,t.child.memoizedState=Us(o),t.memoizedState=Ms,e):Gs(t,E));if(null!==(r=e.memoizedState)&&null!==(a=r.dehydrated))return(function(e,t,o,a,n,r,s){if(o)return 256&t.flags?(t.flags&=-257,Fs(e,t,s,a=Ts(Error(i(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(r=a.fallback,n=t.mode,a=U_({mode:"visible",children:a.children},n,0,null),(r=M_(r,n,s,null)).flags|=2,a.return=t,r.return=t,a.sibling=r,t.child=a,0!=(1&t.mode)&&$i(t,e.child,null,s),t.child.memoizedState=Us(s),t.memoizedState=Ms,r);if(0==(1&t.mode))return Fs(e,t,s,null);if("$!"===n.data){if(a=n.nextSibling&&n.nextSibling.dataset)var E=a.dgst;return a=E,Fs(e,t,s,a=Ts(r=Error(i(419)),a,void 0))}if(E=0!=(s&e.childLanes),Ns||E){if(null!==(a=gE)){switch(s&-s){case 4:n=2;break;case 16:n=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:n=32;break;case 536870912:n=268435456;break;default:n=0}0!==(n=0!=(n&(a.suspendedLanes|s))?0:n)&&n!==r.retryLane&&(r.retryLane=n,vi(e,n),t_(a,e,n,-1))}return d_(),Fs(e,t,s,a=Ts(Error(i(421))))}return"$?"===n.data?(t.flags|=128,t.child=e.child,t=C_.bind(null,e),n._reactRetry=t,null):(e=r.treeContext,ai=_n(n.nextSibling),oi=t,ni=!0,ii=null,null!==e&&(jn[Qn++]=$n,jn[Qn++]=qn,jn[Qn++]=Xn,$n=e.id,qn=e.overflow,Xn=t),(t=Gs(t,a.children)).flags|=4096,t)})(e,t,E,n,a,r,o);if(s){s=n.fallback,E=t.mode,a=(r=e.child).sibling;var _={mode:"hidden",children:n.children};return 0==(1&E)&&t.child!==r?((n=t.child).childLanes=0,n.pendingProps=_,t.deletions=null):(n=B_(r,_)).subtreeFlags=14680064&r.subtreeFlags,null!==a?s=B_(a,s):(s=M_(s,E,o,null)).flags|=2,s.return=t,n.return=t,n.sibling=s,t.child=n,n=s,s=t.child,E=null===(E=e.child.memoizedState)?Us(o):{baseLanes:E.baseLanes|o,cachePool:null,transitions:E.transitions},s.memoizedState=E,s.childLanes=e.childLanes&~o,t.memoizedState=Ms,n}return e=(s=e.child).sibling,n=B_(s,{mode:"visible",children:n.children}),0==(1&t.mode)&&(n.lanes=o),n.return=t,n.sibling=null,null!==e&&(null===(o=t.deletions)?(t.deletions=[e],t.flags|=16):o.push(e)),t.child=n,t.memoizedState=null,n}function Gs(e,t){return(t=U_({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function Fs(e,t,o,a){return null!==a&&di(a),$i(t,e.child,null,o),(e=Gs(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function ks(e,t,o){e.lanes|=t;var a=e.alternate;null!==a&&(a.lanes|=t),hi(e.return,t,o)}function ws(e,t,o,a,n){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:o,tailMode:n}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=a,i.tail=o,i.tailMode=n)}function Hs(e,t,o){var a=t.pendingProps,n=a.revealOrder,i=a.tail;if(Rs(e,t,a.children,o),0!=(2&(a=sr.current)))a=1&a|2,t.flags|=128;else{if(null!==e&&0!=(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&ks(e,o,t);else if(19===e.tag)ks(e,o,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}a&=1}if(Cn(sr,a),0==(1&t.mode))t.memoizedState=null;else switch(n){case"forwards":for(o=t.child,n=null;null!==o;)null!==(e=o.alternate)&&null===Er(e)&&(n=o),o=o.sibling;null===(o=n)?(n=t.child,t.child=null):(n=o.sibling,o.sibling=null),ws(t,!1,n,o,i);break;case"backwards":for(o=null,n=t.child,t.child=null;null!==n;){if(null!==(e=n.alternate)&&null===Er(e)){t.child=n;break}e=n.sibling,n.sibling=o,o=n,n=e}ws(t,!0,o,null,i);break;case"together":ws(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Vs(e,t){0==(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Ys(e,t,o){if(null!==e&&(t.dependencies=e.dependencies),UE|=t.lanes,0==(o&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(o=B_(e=t.child,e.pendingProps),t.child=o,o.return=t;null!==e.sibling;)e=e.sibling,(o=o.sibling=B_(e,e.pendingProps)).return=t;o.sibling=null}return t.child}function zs(e,t){if(!ni)switch(e.tailMode){case"hidden":t=e.tail;for(var o=null;null!==t;)null!==t.alternate&&(o=t),t=t.sibling;null===o?e.tail=null:o.sibling=null;break;case"collapsed":o=e.tail;for(var a=null;null!==o;)null!==o.alternate&&(a=o),o=o.sibling;null===a?t||null===e.tail?e.tail=null:e.tail.sibling=null:a.sibling=null}}function xs(e){var t=null!==e.alternate&&e.alternate.child===e.child,o=0,a=0;if(t)for(var n=e.child;null!==n;)o|=n.lanes|n.childLanes,a|=14680064&n.subtreeFlags,a|=14680064&n.flags,n.return=e,n=n.sibling;else for(n=e.child;null!==n;)o|=n.lanes|n.childLanes,a|=n.subtreeFlags,a|=n.flags,n.return=e,n=n.sibling;return e.subtreeFlags|=a,e.childLanes=o,t}function Ks(e,t,o){var a=t.pendingProps;switch(ti(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return xs(t),null;case 1:case 17:return Bn(t.type)&&bn(),xs(t),null;case 3:return a=t.stateNode,nr(),fn(vn),fn(gn),Tr(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),null!==e&&null!==e.child||(li(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&0==(256&t.flags)||(t.flags|=1024,null!==ii&&(i_(ii),ii=null))),xs(t),null;case 5:rr(t);var n=or(tr.current);if(o=t.type,null!==e&&null!=t.stateNode)Bs(e,t,o,a),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!a){if(null===t.stateNode)throw Error(i(166));return xs(t),null}if(e=or(Zi.current),li(t)){a=t.stateNode,o=t.type;var r=t.memoizedProps;switch(a[Sn]=t,a[un]=r,e=0!=(1&t.mode),o){case"dialog":Fa("cancel",a),Fa("close",a);break;case"iframe":case"object":case"embed":Fa("load",a);break;case"video":case"audio":for(n=0;n<Ma.length;n++)Fa(Ma[n],a);break;case"source":Fa("error",a);break;case"img":case"image":case"link":Fa("error",a),Fa("load",a);break;case"details":Fa("toggle",a);break;case"input":$(a,r),Fa("invalid",a);break;case"select":a._wrapperState={wasMultiple:!!r.multiple},Fa("invalid",a);break;case"textarea":ne(a,r),Fa("invalid",a)}for(var E in Oe(o,r),n=null,r)if(r.hasOwnProperty(E)){var _=r[E];"children"===E?"string"==typeof _?a.textContent!==_&&(!0!==r.suppressHydrationWarning&&qa(a.textContent,_,e),n=["children",_]):"number"==typeof _&&a.textContent!==""+_&&(!0!==r.suppressHydrationWarning&&qa(a.textContent,_,e),n=["children",""+_]):s.hasOwnProperty(E)&&null!=_&&"onScroll"===E&&Fa("scroll",a)}switch(o){case"input":K(a),Z(a,r,!0);break;case"textarea":K(a),re(a);break;case"select":case"option":break;default:"function"==typeof r.onClick&&(a.onclick=Ja)}a=n,t.updateQueue=a,null!==a&&(t.flags|=4)}else{E=9===n.nodeType?n:n.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=se(o)),"http://www.w3.org/1999/xhtml"===e?"script"===o?((e=E.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof a.is?e=E.createElement(o,{is:a.is}):(e=E.createElement(o),"select"===o&&(E=e,a.multiple?E.multiple=!0:a.size&&(E.size=a.size))):e=E.createElementNS(e,o),e[Sn]=t,e[un]=a,ys(e,t),t.stateNode=e;e:{switch(E=Ne(o,a),o){case"dialog":Fa("cancel",e),Fa("close",e),n=a;break;case"iframe":case"object":case"embed":Fa("load",e),n=a;break;case"video":case"audio":for(n=0;n<Ma.length;n++)Fa(Ma[n],e);n=a;break;case"source":Fa("error",e),n=a;break;case"img":case"image":case"link":Fa("error",e),Fa("load",e),n=a;break;case"details":Fa("toggle",e),n=a;break;case"input":$(e,a),n=X(e,a),Fa("invalid",e);break;default:n=a;break;case"select":e._wrapperState={wasMultiple:!!a.multiple},n=G({},a,{value:void 0}),Fa("invalid",e);break;case"textarea":ne(e,a),n=ae(e,a),Fa("invalid",e)}for(r in Oe(o,n),_=n)if(_.hasOwnProperty(r)){var T=_[r];"style"===r?Ae(e,T):"dangerouslySetInnerHTML"===r?null!=(T=T?T.__html:void 0)&&le(e,T):"children"===r?"string"==typeof T?("textarea"!==o||""!==T)&&Se(e,T):"number"==typeof T&&Se(e,""+T):"suppressContentEditableWarning"!==r&&"suppressHydrationWarning"!==r&&"autoFocus"!==r&&(s.hasOwnProperty(r)?null!=T&&"onScroll"===r&&Fa("scroll",e):null!=T&&N(e,r,T,E))}switch(o){case"input":K(e),Z(e,a,!1);break;case"textarea":K(e),re(e);break;case"option":null!=a.value&&e.setAttribute("value",""+z(a.value));break;case"select":e.multiple=!!a.multiple,null!=(r=a.value)?oe(e,!!a.multiple,r,!1):null!=a.defaultValue&&oe(e,!!a.multiple,a.defaultValue,!0);break;default:"function"==typeof n.onClick&&(e.onclick=Ja)}switch(o){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}}a&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return xs(t),null;case 6:if(e&&null!=t.stateNode)bs(0,t,e.memoizedProps,a);else{if("string"!=typeof a&&null===t.stateNode)throw Error(i(166));if(o=or(tr.current),or(Zi.current),li(t)){if(a=t.stateNode,o=t.memoizedProps,a[Sn]=t,(r=a.nodeValue!==o)&&null!==(e=oi))switch(e.tag){case 3:qa(a.nodeValue,o,0!=(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&qa(a.nodeValue,o,0!=(1&e.mode))}r&&(t.flags|=4)}else(a=(9===o.nodeType?o:o.ownerDocument).createTextNode(a))[Sn]=t,t.stateNode=a}return xs(t),null;case 13:if(fn(sr),a=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ni&&null!==ai&&0!=(1&t.mode)&&0==(128&t.flags))Si(),ui(),t.flags|=98560,r=!1;else if(r=li(t),null!==a&&null!==a.dehydrated){if(null===e){if(!r)throw Error(i(318));if(!(r=null!==(r=t.memoizedState)?r.dehydrated:null))throw Error(i(317));r[Sn]=t}else ui(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;xs(t),r=!1}else null!==ii&&(i_(ii),ii=null),r=!0;if(!r)return 65536&t.flags?t:null}return 0!=(128&t.flags)?(t.lanes=o,t):((a=null!==a)!==(null!==e&&null!==e.memoizedState)&&a&&(t.child.flags|=8192,0!=(1&t.mode)&&(null===e||0!=(1&sr.current)?0===bE&&(bE=3):d_())),null!==t.updateQueue&&(t.flags|=4),xs(t),null);case 4:return nr(),null===e&&Ha(t.stateNode.containerInfo),xs(t),null;case 10:return pi(t.type._context),xs(t),null;case 19:if(fn(sr),null===(r=t.memoizedState))return xs(t),null;if(a=0!=(128&t.flags),null===(E=r.rendering))if(a)zs(r,!1);else{if(0!==bE||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(E=Er(e))){for(t.flags|=128,zs(r,!1),null!==(a=E.updateQueue)&&(t.updateQueue=a,t.flags|=4),t.subtreeFlags=0,a=o,o=t.child;null!==o;)e=a,(r=o).flags&=14680066,null===(E=r.alternate)?(r.childLanes=0,r.lanes=e,r.child=null,r.subtreeFlags=0,r.memoizedProps=null,r.memoizedState=null,r.updateQueue=null,r.dependencies=null,r.stateNode=null):(r.childLanes=E.childLanes,r.lanes=E.lanes,r.child=E.child,r.subtreeFlags=0,r.deletions=null,r.memoizedProps=E.memoizedProps,r.memoizedState=E.memoizedState,r.updateQueue=E.updateQueue,r.type=E.type,e=E.dependencies,r.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),o=o.sibling;return Cn(sr,1&sr.current|2),t.child}e=e.sibling}null!==r.tail&&qe()>HE&&(t.flags|=128,a=!0,zs(r,!1),t.lanes=4194304)}else{if(!a)if(null!==(e=Er(E))){if(t.flags|=128,a=!0,null!==(o=e.updateQueue)&&(t.updateQueue=o,t.flags|=4),zs(r,!0),null===r.tail&&"hidden"===r.tailMode&&!E.alternate&&!ni)return xs(t),null}else 2*qe()-r.renderingStartTime>HE&&1073741824!==o&&(t.flags|=128,a=!0,zs(r,!1),t.lanes=4194304);r.isBackwards?(E.sibling=t.child,t.child=E):(null!==(o=r.last)?o.sibling=E:t.child=E,r.last=E)}return null!==r.tail?(t=r.tail,r.rendering=t,r.tail=t.sibling,r.renderingStartTime=qe(),t.sibling=null,o=sr.current,Cn(sr,a?1&o|2:1&o),t):(xs(t),null);case 22:case 23:return T_(),a=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==a&&(t.flags|=8192),a&&0!=(1&t.mode)?0!=(1073741824&yE)&&(xs(t),6&t.subtreeFlags&&(t.flags|=8192)):xs(t),null;case 24:case 25:return null}throw Error(i(156,t.tag))}function js(e,t){switch(ti(t),t.tag){case 1:return Bn(t.type)&&bn(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return nr(),fn(vn),fn(gn),Tr(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 5:return rr(t),null;case 13:if(fn(sr),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));ui()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return fn(sr),null;case 4:return nr(),null;case 10:return pi(t.type._context),null;case 22:case 23:return T_(),null;default:return null}}ys=function(e,t){for(var o=t.child;null!==o;){if(5===o.tag||6===o.tag)e.appendChild(o.stateNode);else if(4!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)return;o=o.return}o.sibling.return=o.return,o=o.sibling}},Bs=function(e,t,o,a){var n=e.memoizedProps;if(n!==a){e=t.stateNode,or(Zi.current);var i,r=null;switch(o){case"input":n=X(e,n),a=X(e,a),r=[];break;case"select":n=G({},n,{value:void 0}),a=G({},a,{value:void 0}),r=[];break;case"textarea":n=ae(e,n),a=ae(e,a),r=[];break;default:"function"!=typeof n.onClick&&"function"==typeof a.onClick&&(e.onclick=Ja)}for(T in Oe(o,a),o=null,n)if(!a.hasOwnProperty(T)&&n.hasOwnProperty(T)&&null!=n[T])if("style"===T){var E=n[T];for(i in E)E.hasOwnProperty(i)&&(o||(o={}),o[i]="")}else"dangerouslySetInnerHTML"!==T&&"children"!==T&&"suppressContentEditableWarning"!==T&&"suppressHydrationWarning"!==T&&"autoFocus"!==T&&(s.hasOwnProperty(T)?r||(r=[]):(r=r||[]).push(T,null));for(T in a){var _=a[T];if(E=null!=n?n[T]:void 0,a.hasOwnProperty(T)&&_!==E&&(null!=_||null!=E))if("style"===T)if(E){for(i in E)!E.hasOwnProperty(i)||_&&_.hasOwnProperty(i)||(o||(o={}),o[i]="");for(i in _)_.hasOwnProperty(i)&&E[i]!==_[i]&&(o||(o={}),o[i]=_[i])}else o||(r||(r=[]),r.push(T,o)),o=_;else"dangerouslySetInnerHTML"===T?(_=_?_.__html:void 0,E=E?E.__html:void 0,null!=_&&E!==_&&(r=r||[]).push(T,_)):"children"===T?"string"!=typeof _&&"number"!=typeof _||(r=r||[]).push(T,""+_):"suppressContentEditableWarning"!==T&&"suppressHydrationWarning"!==T&&(s.hasOwnProperty(T)?(null!=_&&"onScroll"===T&&Fa("scroll",e),r||E===_||(r=[])):(r=r||[]).push(T,_))}o&&(r=r||[]).push("style",o);var T=r;(t.updateQueue=T)&&(t.flags|=4)}},bs=function(e,t,o,a){o!==a&&(t.flags|=4)};var Qs=!1,Xs=!1,$s="function"==typeof WeakSet?WeakSet:Set,qs=null;function Js(e,t){var o=e.ref;if(null!==o)if("function"==typeof o)try{o(null)}catch(o){h_(e,t,o)}else o.current=null}function Zs(e,t,o){try{o()}catch(o){h_(e,t,o)}}var eE=!1;function tE(e,t,o){var a=t.updateQueue;if(null!==(a=null!==a?a.lastEffect:null)){var n=a=a.next;do{if((n.tag&e)===e){var i=n.destroy;n.destroy=void 0,void 0!==i&&Zs(t,o,i)}n=n.next}while(n!==a)}}function oE(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var o=t=t.next;do{if((o.tag&e)===e){var a=o.create;o.destroy=a()}o=o.next}while(o!==t)}}function aE(e){var t=e.ref;if(null!==t){var o=e.stateNode;e.tag,e=o,"function"==typeof t?t(e):t.current=e}}function nE(e){var t=e.alternate;null!==t&&(e.alternate=null,nE(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[Sn],delete t[un],delete t[cn],delete t[An],delete t[In])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function iE(e){return 5===e.tag||3===e.tag||4===e.tag}function rE(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||iE(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function sE(e,t,o){var a=e.tag;if(5===a||6===a)e=e.stateNode,t?8===o.nodeType?o.parentNode.insertBefore(e,t):o.insertBefore(e,t):(8===o.nodeType?(t=o.parentNode).insertBefore(e,o):(t=o).appendChild(e),null!=(o=o._reactRootContainer)||null!==t.onclick||(t.onclick=Ja));else if(4!==a&&null!==(e=e.child))for(sE(e,t,o),e=e.sibling;null!==e;)sE(e,t,o),e=e.sibling}function EE(e,t,o){var a=e.tag;if(5===a||6===a)e=e.stateNode,t?o.insertBefore(e,t):o.appendChild(e);else if(4!==a&&null!==(e=e.child))for(EE(e,t,o),e=e.sibling;null!==e;)EE(e,t,o),e=e.sibling}var _E=null,TE=!1;function lE(e,t,o){for(o=o.child;null!==o;)SE(e,t,o),o=o.sibling}function SE(e,t,o){if(nt&&"function"==typeof nt.onCommitFiberUnmount)try{nt.onCommitFiberUnmount(at,o)}catch(e){}switch(o.tag){case 5:Xs||Js(o,t);case 6:var a=_E,n=TE;_E=null,lE(e,t,o),TE=n,null!==(_E=a)&&(TE?(e=_E,o=o.stateNode,8===e.nodeType?e.parentNode.removeChild(o):e.removeChild(o)):_E.removeChild(o.stateNode));break;case 18:null!==_E&&(TE?(e=_E,o=o.stateNode,8===e.nodeType?En(e.parentNode,o):1===e.nodeType&&En(e,o),Ht(e)):En(_E,o.stateNode));break;case 4:a=_E,n=TE,_E=o.stateNode.containerInfo,TE=!0,lE(e,t,o),_E=a,TE=n;break;case 0:case 11:case 14:case 15:if(!Xs&&(null!==(a=o.updateQueue)&&null!==(a=a.lastEffect))){n=a=a.next;do{var i=n,r=i.destroy;i=i.tag,void 0!==r&&(0!=(2&i)||0!=(4&i))&&Zs(o,t,r),n=n.next}while(n!==a)}lE(e,t,o);break;case 1:if(!Xs&&(Js(o,t),"function"==typeof(a=o.stateNode).componentWillUnmount))try{a.props=o.memoizedProps,a.state=o.memoizedState,a.componentWillUnmount()}catch(e){h_(o,t,e)}lE(e,t,o);break;case 21:lE(e,t,o);break;case 22:1&o.mode?(Xs=(a=Xs)||null!==o.memoizedState,lE(e,t,o),Xs=a):lE(e,t,o);break;default:lE(e,t,o)}}function uE(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var o=e.stateNode;null===o&&(o=e.stateNode=new $s),t.forEach((function(t){var a=D_.bind(null,e,t);o.has(t)||(o.add(t),t.then(a,a))}))}}function dE(e,t){var o=t.deletions;if(null!==o)for(var a=0;a<o.length;a++){var n=o[a];try{var r=e,s=t,E=s;e:for(;null!==E;){switch(E.tag){case 5:_E=E.stateNode,TE=!1;break e;case 3:case 4:_E=E.stateNode.containerInfo,TE=!0;break e}E=E.return}if(null===_E)throw Error(i(160));SE(r,s,n),_E=null,TE=!1;var _=n.alternate;null!==_&&(_.return=null),n.return=null}catch(e){h_(n,t,e)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)cE(t,e),t=t.sibling}function cE(e,t){var o=e.alternate,a=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(dE(t,e),AE(e),4&a){try{tE(3,e,e.return),oE(3,e)}catch(t){h_(e,e.return,t)}try{tE(5,e,e.return)}catch(t){h_(e,e.return,t)}}break;case 1:dE(t,e),AE(e),512&a&&null!==o&&Js(o,o.return);break;case 5:if(dE(t,e),AE(e),512&a&&null!==o&&Js(o,o.return),32&e.flags){var n=e.stateNode;try{Se(n,"")}catch(t){h_(e,e.return,t)}}if(4&a&&null!=(n=e.stateNode)){var r=e.memoizedProps,s=null!==o?o.memoizedProps:r,E=e.type,_=e.updateQueue;if(e.updateQueue=null,null!==_)try{"input"===E&&"radio"===r.type&&null!=r.name&&q(n,r),Ne(E,s);var T=Ne(E,r);for(s=0;s<_.length;s+=2){var l=_[s],S=_[s+1];"style"===l?Ae(n,S):"dangerouslySetInnerHTML"===l?le(n,S):"children"===l?Se(n,S):N(n,l,S,T)}switch(E){case"input":J(n,r);break;case"textarea":ie(n,r);break;case"select":var u=n._wrapperState.wasMultiple;n._wrapperState.wasMultiple=!!r.multiple;var d=r.value;null!=d?oe(n,!!r.multiple,d,!1):u!==!!r.multiple&&(null!=r.defaultValue?oe(n,!!r.multiple,r.defaultValue,!0):oe(n,!!r.multiple,r.multiple?[]:"",!1))}n[un]=r}catch(t){h_(e,e.return,t)}}break;case 6:if(dE(t,e),AE(e),4&a){if(null===e.stateNode)throw Error(i(162));n=e.stateNode,r=e.memoizedProps;try{n.nodeValue=r}catch(t){h_(e,e.return,t)}}break;case 3:if(dE(t,e),AE(e),4&a&&null!==o&&o.memoizedState.isDehydrated)try{Ht(t.containerInfo)}catch(t){h_(e,e.return,t)}break;default:dE(t,e),AE(e);break;case 13:dE(t,e),AE(e),8192&(n=e.child).flags&&(r=null!==n.memoizedState,n.stateNode.isHidden=r,!r||null!==n.alternate&&null!==n.alternate.memoizedState||(wE=qe())),4&a&&uE(e);break;case 22:if(l=null!==o&&null!==o.memoizedState,1&e.mode?(Xs=(T=Xs)||l,dE(t,e),Xs=T):dE(t,e),AE(e),8192&a){if(T=null!==e.memoizedState,(e.stateNode.isHidden=T)&&!l&&0!=(1&e.mode))for(qs=e,l=e.child;null!==l;){for(S=qs=l;null!==qs;){switch(d=(u=qs).child,u.tag){case 0:case 11:case 14:case 15:tE(4,u,u.return);break;case 1:Js(u,u.return);var c=u.stateNode;if("function"==typeof c.componentWillUnmount){a=u,o=u.return;try{t=a,c.props=t.memoizedProps,c.state=t.memoizedState,c.componentWillUnmount()}catch(e){h_(a,o,e)}}break;case 5:Js(u,u.return);break;case 22:if(null!==u.memoizedState){RE(S);continue}}null!==d?(d.return=u,qs=d):RE(S)}l=l.sibling}e:for(l=null,S=e;;){if(5===S.tag){if(null===l){l=S;try{n=S.stateNode,T?"function"==typeof(r=n.style).setProperty?r.setProperty("display","none","important"):r.display="none":(E=S.stateNode,s=null!=(_=S.memoizedProps.style)&&_.hasOwnProperty("display")?_.display:null,E.style.display=ce("display",s))}catch(t){h_(e,e.return,t)}}}else if(6===S.tag){if(null===l)try{S.stateNode.nodeValue=T?"":S.memoizedProps}catch(t){h_(e,e.return,t)}}else if((22!==S.tag&&23!==S.tag||null===S.memoizedState||S===e)&&null!==S.child){S.child.return=S,S=S.child;continue}if(S===e)break e;for(;null===S.sibling;){if(null===S.return||S.return===e)break e;l===S&&(l=null),S=S.return}l===S&&(l=null),S.sibling.return=S.return,S=S.sibling}}break;case 19:dE(t,e),AE(e),4&a&&uE(e);case 21:}}function AE(e){var t=e.flags;if(2&t){try{e:{for(var o=e.return;null!==o;){if(iE(o)){var a=o;break e}o=o.return}throw Error(i(160))}switch(a.tag){case 5:var n=a.stateNode;32&a.flags&&(Se(n,""),a.flags&=-33),EE(e,rE(e),n);break;case 3:case 4:var r=a.stateNode.containerInfo;sE(e,rE(e),r);break;default:throw Error(i(161))}}catch(t){h_(e,e.return,t)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function IE(e,t,o){qs=e,OE(e,t,o)}function OE(e,t,o){for(var a=0!=(1&e.mode);null!==qs;){var n=qs,i=n.child;if(22===n.tag&&a){var r=null!==n.memoizedState||Qs;if(!r){var s=n.alternate,E=null!==s&&null!==s.memoizedState||Xs;s=Qs;var _=Xs;if(Qs=r,(Xs=E)&&!_)for(qs=n;null!==qs;)E=(r=qs).child,22===r.tag&&null!==r.memoizedState?mE(n):null!==E?(E.return=r,qs=E):mE(n);for(;null!==i;)qs=i,OE(i,t,o),i=i.sibling;qs=n,Qs=s,Xs=_}NE(e)}else 0!=(8772&n.subtreeFlags)&&null!==i?(i.return=n,qs=i):NE(e)}}function NE(e){for(;null!==qs;){var t=qs;if(0!=(8772&t.flags)){var o=t.alternate;try{if(0!=(8772&t.flags))switch(t.tag){case 0:case 11:case 15:Xs||oE(5,t);break;case 1:var a=t.stateNode;if(4&t.flags&&!Xs)if(null===o)a.componentDidMount();else{var n=t.elementType===t.type?o.memoizedProps:Ai(t.type,o.memoizedProps);a.componentDidUpdate(n,o.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}var r=t.updateQueue;null!==r&&Fi(t,r,a);break;case 3:var s=t.updateQueue;if(null!==s){if(o=null,null!==t.child)switch(t.child.tag){case 5:case 1:o=t.child.stateNode}Fi(t,s,o)}break;case 5:var E=t.stateNode;if(null===o&&4&t.flags){o=E;var _=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":_.autoFocus&&o.focus();break;case"img":_.src&&(o.src=_.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var T=t.alternate;if(null!==T){var l=T.memoizedState;if(null!==l){var S=l.dehydrated;null!==S&&Ht(S)}}}break;default:throw Error(i(163))}Xs||512&t.flags&&aE(t)}catch(e){h_(t,t.return,e)}}if(t===e){qs=null;break}if(null!==(o=t.sibling)){o.return=t.return,qs=o;break}qs=t.return}}function RE(e){for(;null!==qs;){var t=qs;if(t===e){qs=null;break}var o=t.sibling;if(null!==o){o.return=t.return,qs=o;break}qs=t.return}}function mE(e){for(;null!==qs;){var t=qs;try{switch(t.tag){case 0:case 11:case 15:var o=t.return;try{oE(4,t)}catch(e){h_(t,o,e)}break;case 1:var a=t.stateNode;if("function"==typeof a.componentDidMount){var n=t.return;try{a.componentDidMount()}catch(e){h_(t,n,e)}}var i=t.return;try{aE(t)}catch(e){h_(t,i,e)}break;case 5:var r=t.return;try{aE(t)}catch(e){h_(t,r,e)}}}catch(e){h_(t,t.return,e)}if(t===e){qs=null;break}var s=t.sibling;if(null!==s){s.return=t.return,qs=s;break}qs=t.return}}var pE,hE=Math.ceil,LE=R.ReactCurrentDispatcher,fE=R.ReactCurrentOwner,CE=R.ReactCurrentBatchConfig,DE=0,gE=null,vE=null,PE=0,yE=0,BE=Ln(0),bE=0,ME=null,UE=0,WE=0,GE=0,FE=null,kE=null,wE=0,HE=1/0,VE=null,YE=!1,zE=null,xE=null,KE=!1,jE=null,QE=0,XE=0,$E=null,qE=-1,JE=0;function ZE(){return 0!=(6&DE)?qe():-1!==qE?qE:qE=qe()}function e_(e){return 0==(1&e.mode)?1:0!=(2&DE)&&0!==PE?PE&-PE:null!==ci.transition?(0===JE&&(JE=dt()),JE):0!==(e=Ot)?e:e=void 0===(e=window.event)?16:Xt(e.type)}function t_(e,t,o,a){if(50<XE)throw XE=0,$E=null,Error(i(185));At(e,o,a),0!=(2&DE)&&e===gE||(e===gE&&(0==(2&DE)&&(WE|=o),4===bE&&r_(e,PE)),o_(e,a),1===o&&0===DE&&0==(1&t.mode)&&(HE=qe()+500,kn&&Vn()))}function o_(e,t){var o=e.callbackNode;!(function(e,t){for(var o=e.suspendedLanes,a=e.pingedLanes,n=e.expirationTimes,i=e.pendingLanes;0<i;){var r=31-it(i),s=1<<r,E=n[r];-1===E?0!=(s&o)&&0==(s&a)||(n[r]=St(s,t)):E<=t&&(e.expiredLanes|=s),i&=~s}})(e,t);var a=lt(e,e===gE?PE:0);if(0===a)null!==o&&Qe(o),e.callbackNode=null,e.callbackPriority=0;else if(t=a&-a,e.callbackPriority!==t){if(null!=o&&Qe(o),1===t)0===e.tag?(function(e){kn=!0,Hn(e)})(s_.bind(null,e)):Hn(s_.bind(null,e)),rn((function(){0==(6&DE)&&Vn()})),o=null;else{switch(Nt(a)){case 1:o=Ze;break;case 4:o=et;break;default:o=tt;break;case 536870912:o=ot}o=g_(o,a_.bind(null,e))}e.callbackPriority=t,e.callbackNode=o}}function a_(e,t){if(qE=-1,JE=0,0!=(6&DE))throw Error(i(327));var o=e.callbackNode;if(m_()&&e.callbackNode!==o)return null;var a=lt(e,e===gE?PE:0);if(0===a)return null;if(0!=(30&a)||0!=(a&e.expiredLanes)||t)t=c_(e,a);else{t=a;var n=DE;DE|=2;var r=u_();for(gE===e&&PE===t||(VE=null,HE=qe()+500,l_(e,t));;)try{I_();break}catch(t){S_(e,t)}mi(),LE.current=r,DE=n,null!==vE?t=0:(gE=null,PE=0,t=bE)}if(0!==t){if(2===t&&(0!==(n=ut(e))&&(a=n,t=n_(e,n))),1===t)throw o=ME,l_(e,0),r_(e,a),o_(e,qe()),o;if(6===t)r_(e,a);else{if(n=e.current.alternate,0==(30&a)&&!(function(e){for(var t=e;;){if(16384&t.flags){var o=t.updateQueue;if(null!==o&&null!==(o=o.stores))for(var a=0;a<o.length;a++){var n=o[a],i=n.getSnapshot;n=n.value;try{if(!ra(i(),n))return!1}catch(e){return!1}}}if(o=t.child,16384&t.subtreeFlags&&null!==o)o.return=t,t=o;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0})(n)&&(2===(t=c_(e,a))&&(0!==(r=ut(e))&&(a=r,t=n_(e,r))),1===t))throw o=ME,l_(e,0),r_(e,a),o_(e,qe()),o;switch(e.finishedWork=n,e.finishedLanes=a,t){case 0:case 1:throw Error(i(345));case 2:case 5:R_(e,kE,VE);break;case 3:if(r_(e,a),(130023424&a)===a&&10<(t=wE+500-qe())){if(0!==lt(e,0))break;if(((n=e.suspendedLanes)&a)!==a){ZE(),e.pingedLanes|=e.suspendedLanes&n;break}e.timeoutHandle=on(R_.bind(null,e,kE,VE),t);break}R_(e,kE,VE);break;case 4:if(r_(e,a),(4194240&a)===a)break;for(t=e.eventTimes,n=-1;0<a;){var s=31-it(a);r=1<<s,(s=t[s])>n&&(n=s),a&=~r}if(a=n,10<(a=(120>(a=qe()-a)?120:480>a?480:1080>a?1080:1920>a?1920:3e3>a?3e3:4320>a?4320:1960*hE(a/1960))-a)){e.timeoutHandle=on(R_.bind(null,e,kE,VE),a);break}R_(e,kE,VE);break;default:throw Error(i(329))}}}return o_(e,qe()),e.callbackNode===o?a_.bind(null,e):null}function n_(e,t){var o=FE;return e.current.memoizedState.isDehydrated&&(l_(e,t).flags|=256),2!==(e=c_(e,t))&&(t=kE,kE=o,null!==t&&i_(t)),e}function i_(e){null===kE?kE=e:kE.push.apply(kE,e)}function r_(e,t){for(t&=~GE,t&=~WE,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var o=31-it(t),a=1<<o;e[o]=-1,t&=~a}}function s_(e){if(0!=(6&DE))throw Error(i(327));m_();var t=lt(e,0);if(0==(1&t))return o_(e,qe()),null;var o=c_(e,t);if(0!==e.tag&&2===o){var a=ut(e);0!==a&&(t=a,o=n_(e,a))}if(1===o)throw o=ME,l_(e,0),r_(e,t),o_(e,qe()),o;if(6===o)throw Error(i(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,R_(e,kE,VE),o_(e,qe()),null}function E_(e,t){var o=DE;DE|=1;try{return e(t)}finally{0===(DE=o)&&(HE=qe()+500,kn&&Vn())}}function __(e){null!==jE&&0===jE.tag&&0==(6&DE)&&m_();var t=DE;DE|=1;var o=CE.transition,a=Ot;try{if(CE.transition=null,Ot=1,e)return e()}finally{Ot=a,CE.transition=o,0==(6&(DE=t))&&Vn()}}function T_(){yE=BE.current,fn(BE)}function l_(e,t){e.finishedWork=null,e.finishedLanes=0;var o=e.timeoutHandle;if(-1!==o&&(e.timeoutHandle=-1,an(o)),null!==vE)for(o=vE.return;null!==o;){var a=o;switch(ti(a),a.tag){case 1:null!=(a=a.type.childContextTypes)&&bn();break;case 3:nr(),fn(vn),fn(gn),Tr();break;case 5:rr(a);break;case 4:nr();break;case 13:case 19:fn(sr);break;case 10:pi(a.type._context);break;case 22:case 23:T_()}o=o.return}if(gE=e,vE=e=B_(e.current,null),PE=yE=t,bE=0,ME=null,GE=WE=UE=0,kE=FE=null,null!==Ci){for(t=0;t<Ci.length;t++)if(null!==(a=(o=Ci[t]).interleaved)){o.interleaved=null;var n=a.next,i=o.pending;if(null!==i){var r=i.next;i.next=n,a.next=r}o.pending=a}Ci=null}return e}function S_(e,t){for(;;){var o=vE;try{if(mi(),lr.current=is,Ir){for(var a=dr.memoizedState;null!==a;){var n=a.queue;null!==n&&(n.pending=null),a=a.next}Ir=!1}if(ur=0,Ar=cr=dr=null,Or=!1,Nr=0,fE.current=null,null===o||null===o.return){bE=1,ME=t,vE=null;break}e:{var r=e,s=o.return,E=o,_=t;if(t=PE,E.flags|=32768,null!==_&&"object"==typeof _&&"function"==typeof _.then){var T=_,l=E,S=l.tag;if(0==(1&l.mode)&&(0===S||11===S||15===S)){var u=l.alternate;u?(l.updateQueue=u.updateQueue,l.memoizedState=u.memoizedState,l.lanes=u.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=As(s);if(null!==d){d.flags&=-257,Is(d,s,E,0,t),1&d.mode&&cs(r,T,t),_=T;var c=(t=d).updateQueue;if(null===c){var A=new Set;A.add(_),t.updateQueue=A}else c.add(_);break e}if(0==(1&t)){cs(r,T,t),d_();break e}_=Error(i(426))}else if(ni&&1&E.mode){var I=As(s);if(null!==I){0==(65536&I.flags)&&(I.flags|=256),Is(I,s,E,0,t),di(_s(_,E));break e}}r=_=_s(_,E),4!==bE&&(bE=2),null===FE?FE=[r]:FE.push(r),r=s;do{switch(r.tag){case 3:r.flags|=65536,t&=-t,r.lanes|=t,Wi(r,us(0,_,t));break e;case 1:E=_;var O=r.type,N=r.stateNode;if(0==(128&r.flags)&&("function"==typeof O.getDerivedStateFromError||null!==N&&"function"==typeof N.componentDidCatch&&(null===xE||!xE.has(N)))){r.flags|=65536,t&=-t,r.lanes|=t,Wi(r,ds(r,E,t));break e}}r=r.return}while(null!==r)}N_(o)}catch(e){t=e,vE===o&&null!==o&&(vE=o=o.return);continue}break}}function u_(){var e=LE.current;return LE.current=is,null===e?is:e}function d_(){0!==bE&&3!==bE&&2!==bE||(bE=4),null===gE||0==(268435455&UE)&&0==(268435455&WE)||r_(gE,PE)}function c_(e,t){var o=DE;DE|=2;var a=u_();for(gE===e&&PE===t||(VE=null,l_(e,t));;)try{A_();break}catch(t){S_(e,t)}if(mi(),DE=o,LE.current=a,null!==vE)throw Error(i(261));return gE=null,PE=0,bE}function A_(){for(;null!==vE;)O_(vE)}function I_(){for(;null!==vE&&!Xe();)O_(vE)}function O_(e){var t=pE(e.alternate,e,yE);e.memoizedProps=e.pendingProps,null===t?N_(e):vE=t,fE.current=null}function N_(e){var t=e;do{var o=t.alternate;if(e=t.return,0==(32768&t.flags)){if(null!==(o=Ks(o,t,yE)))return void(vE=o)}else{if(null!==(o=js(o,t)))return o.flags&=32767,void(vE=o);if(null===e)return bE=6,void(vE=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}if(null!==(t=t.sibling))return void(vE=t);vE=t=e}while(null!==t);0===bE&&(bE=5)}function R_(e,t,o){var a=Ot,n=CE.transition;try{CE.transition=null,Ot=1,(function(e,t,o,a){do{m_()}while(null!==jE);if(0!=(6&DE))throw Error(i(327));o=e.finishedWork;var n=e.finishedLanes;if(null===o)return null;if(e.finishedWork=null,e.finishedLanes=0,o===e.current)throw Error(i(177));e.callbackNode=null,e.callbackPriority=0;var r=o.lanes|o.childLanes;if((function(e,t){var o=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var a=e.eventTimes;for(e=e.expirationTimes;0<o;){var n=31-it(o),i=1<<n;t[n]=0,a[n]=-1,e[n]=-1,o&=~i}})(e,r),e===gE&&(vE=gE=null,PE=0),0==(2064&o.subtreeFlags)&&0==(2064&o.flags)||KE||(KE=!0,g_(tt,(function(){return m_(),null}))),r=0!=(15990&o.flags),0!=(15990&o.subtreeFlags)||r){r=CE.transition,CE.transition=null;var s=Ot;Ot=1;var E=DE;DE|=4,fE.current=null,(function(e,t){if(Za=Yt,Sa(e=la())){if("selectionStart"in e)var o={start:e.selectionStart,end:e.selectionEnd};else e:{var a=(o=(o=e.ownerDocument)&&o.defaultView||window).getSelection&&o.getSelection();if(a&&0!==a.rangeCount){o=a.anchorNode;var n=a.anchorOffset,r=a.focusNode;a=a.focusOffset;try{o.nodeType,r.nodeType}catch(e){o=null;break e}var s=0,E=-1,_=-1,T=0,l=0,S=e,u=null;t:for(;;){for(var d;S!==o||0!==n&&3!==S.nodeType||(E=s+n),S!==r||0!==a&&3!==S.nodeType||(_=s+a),3===S.nodeType&&(s+=S.nodeValue.length),null!==(d=S.firstChild);)u=S,S=d;for(;;){if(S===e)break t;if(u===o&&++T===n&&(E=s),u===r&&++l===a&&(_=s),null!==(d=S.nextSibling))break;u=(S=u).parentNode}S=d}o=-1===E||-1===_?null:{start:E,end:_}}else o=null}o=o||{start:0,end:0}}else o=null;for(en={focusedElem:e,selectionRange:o},Yt=!1,qs=t;null!==qs;)if(e=(t=qs).child,0!=(1028&t.subtreeFlags)&&null!==e)e.return=t,qs=e;else for(;null!==qs;){t=qs;try{var c=t.alternate;if(0!=(1024&t.flags))switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==c){var A=c.memoizedProps,I=c.memoizedState,O=t.stateNode,N=O.getSnapshotBeforeUpdate(t.elementType===t.type?A:Ai(t.type,A),I);O.__reactInternalSnapshotBeforeUpdate=N}break;case 3:var R=t.stateNode.containerInfo;1===R.nodeType?R.textContent="":9===R.nodeType&&R.documentElement&&R.removeChild(R.documentElement);break;default:throw Error(i(163))}}catch(e){h_(t,t.return,e)}if(null!==(e=t.sibling)){e.return=t.return,qs=e;break}qs=t.return}c=eE,eE=!1})(e,o),cE(o,e),ua(en),Yt=!!Za,en=Za=null,e.current=o,IE(o,e,n),$e(),DE=E,Ot=s,CE.transition=r}else e.current=o;if(KE&&(KE=!1,jE=e,QE=n),0===(r=e.pendingLanes)&&(xE=null),(function(e){if(nt&&"function"==typeof nt.onCommitFiberRoot)try{nt.onCommitFiberRoot(at,e,void 0,128==(128&e.current.flags))}catch(e){}})(o.stateNode),o_(e,qe()),null!==t)for(a=e.onRecoverableError,o=0;o<t.length;o++)n=t[o],a(n.value,{componentStack:n.stack,digest:n.digest});if(YE)throw YE=!1,e=zE,zE=null,e;0!=(1&QE)&&0!==e.tag&&m_(),0!=(1&(r=e.pendingLanes))?e===$E?XE++:(XE=0,$E=e):XE=0,Vn()})(e,t,o,a)}finally{CE.transition=n,Ot=a}return null}function m_(){if(null!==jE){var e=Nt(QE),t=CE.transition,o=Ot;try{if(CE.transition=null,Ot=16>e?16:e,null===jE)var a=!1;else{if(e=jE,jE=null,QE=0,0!=(6&DE))throw Error(i(331));var n=DE;for(DE|=4,qs=e.current;null!==qs;){var r=qs,s=r.child;if(0!=(16&qs.flags)){var E=r.deletions;if(null!==E){for(var _=0;_<E.length;_++){var T=E[_];for(qs=T;null!==qs;){var l=qs;switch(l.tag){case 0:case 11:case 15:tE(8,l,r)}var S=l.child;if(null!==S)S.return=l,qs=S;else for(;null!==qs;){var u=(l=qs).sibling,d=l.return;if(nE(l),l===T){qs=null;break}if(null!==u){u.return=d,qs=u;break}qs=d}}}var c=r.alternate;if(null!==c){var A=c.child;if(null!==A){c.child=null;do{var I=A.sibling;A.sibling=null,A=I}while(null!==A)}}qs=r}}if(0!=(2064&r.subtreeFlags)&&null!==s)s.return=r,qs=s;else e:for(;null!==qs;){if(0!=(2048&(r=qs).flags))switch(r.tag){case 0:case 11:case 15:tE(9,r,r.return)}var O=r.sibling;if(null!==O){O.return=r.return,qs=O;break e}qs=r.return}}var N=e.current;for(qs=N;null!==qs;){var R=(s=qs).child;if(0!=(2064&s.subtreeFlags)&&null!==R)R.return=s,qs=R;else e:for(s=N;null!==qs;){if(0!=(2048&(E=qs).flags))try{switch(E.tag){case 0:case 11:case 15:oE(9,E)}}catch(e){h_(E,E.return,e)}if(E===s){qs=null;break e}var m=E.sibling;if(null!==m){m.return=E.return,qs=m;break e}qs=E.return}}if(DE=n,Vn(),nt&&"function"==typeof nt.onPostCommitFiberRoot)try{nt.onPostCommitFiberRoot(at,e)}catch(e){}a=!0}return a}finally{Ot=o,CE.transition=t}}return!1}function p_(e,t,o){e=Mi(e,t=us(0,t=_s(o,t),1),1),t=ZE(),null!==e&&(At(e,1,t),o_(e,t))}function h_(e,t,o){if(3===e.tag)p_(e,e,o);else for(;null!==t;){if(3===t.tag){p_(t,e,o);break}if(1===t.tag){var a=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof a.componentDidCatch&&(null===xE||!xE.has(a))){t=Mi(t,e=ds(t,e=_s(o,e),1),1),e=ZE(),null!==t&&(At(t,1,e),o_(t,e));break}}t=t.return}}function L_(e,t,o){var a=e.pingCache;null!==a&&a.delete(t),t=ZE(),e.pingedLanes|=e.suspendedLanes&o,gE===e&&(PE&o)===o&&(4===bE||3===bE&&(130023424&PE)===PE&&500>qe()-wE?l_(e,0):GE|=o),o_(e,t)}function f_(e,t){0===t&&(0==(1&e.mode)?t=1:(t=_t,0==(130023424&(_t<<=1))&&(_t=4194304)));var o=ZE();null!==(e=vi(e,t))&&(At(e,t,o),o_(e,o))}function C_(e){var t=e.memoizedState,o=0;null!==t&&(o=t.retryLane),f_(e,o)}function D_(e,t){var o=0;switch(e.tag){case 13:var a=e.stateNode,n=e.memoizedState;null!==n&&(o=n.retryLane);break;case 19:a=e.stateNode;break;default:throw Error(i(314))}null!==a&&a.delete(t),f_(e,o)}function g_(e,t){return je(e,t)}function v_(e,t,o,a){this.tag=e,this.key=o,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function P_(e,t,o,a){return new v_(e,t,o,a)}function y_(e){return!(!(e=e.prototype)||!e.isReactComponent)}function B_(e,t){var o=e.alternate;return null===o?((o=P_(e.tag,t,e.key,e.mode)).elementType=e.elementType,o.type=e.type,o.stateNode=e.stateNode,o.alternate=e,e.alternate=o):(o.pendingProps=t,o.type=e.type,o.flags=0,o.subtreeFlags=0,o.deletions=null),o.flags=14680064&e.flags,o.childLanes=e.childLanes,o.lanes=e.lanes,o.child=e.child,o.memoizedProps=e.memoizedProps,o.memoizedState=e.memoizedState,o.updateQueue=e.updateQueue,t=e.dependencies,o.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},o.sibling=e.sibling,o.index=e.index,o.ref=e.ref,o}function b_(e,t,o,a,n,r){var s=2;if(a=e,"function"==typeof e)y_(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case h:return M_(o.children,n,r,t);case L:s=8,n|=8;break;case f:return(e=P_(12,o,t,2|n)).elementType=f,e.lanes=r,e;case v:return(e=P_(13,o,t,n)).elementType=v,e.lanes=r,e;case P:return(e=P_(19,o,t,n)).elementType=P,e.lanes=r,e;case b:return U_(o,n,r,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case C:s=10;break e;case D:s=9;break e;case g:s=11;break e;case y:s=14;break e;case B:s=16,a=null;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=P_(s,o,t,n)).elementType=e,t.type=a,t.lanes=r,t}function M_(e,t,o,a){return(e=P_(7,e,a,t)).lanes=o,e}function U_(e,t,o,a){return(e=P_(22,e,a,t)).elementType=b,e.lanes=o,e.stateNode={isHidden:!1},e}function W_(e,t,o){return(e=P_(6,e,null,t)).lanes=o,e}function G_(e,t,o){return(t=P_(4,null!==e.children?e.children:[],e.key,t)).lanes=o,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function F_(e,t,o,a,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ct(0),this.expirationTimes=ct(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ct(0),this.identifierPrefix=a,this.onRecoverableError=n,this.mutableSourceEagerHydrationData=null}function k_(e,t,o,a,n,i,r,s,E){return e=new F_(e,t,o,s,E),1===t?(t=1,!0===i&&(t|=8)):t=0,i=P_(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:a,isDehydrated:o,cache:null,transitions:null,pendingSuspenseBoundaries:null},yi(i),e}function w_(e,t,o){var a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:p,key:null==a?null:""+a,children:e,containerInfo:t,implementation:o}}function H_(e){if(!e)return Dn;e:{if(Ve(e=e._reactInternals)!==e||1!==e.tag)throw Error(i(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Bn(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(i(171))}if(1===e.tag){var o=e.type;if(Bn(o))return Un(e,o,t)}return t}function V_(e,t,o,a,n,i,r,s,E){return(e=k_(o,a,!0,e,0,i,0,s,E)).context=H_(null),o=e.current,(i=bi(a=ZE(),n=e_(o))).callback=null!=t?t:null,Mi(o,i,n),e.current.lanes=n,At(e,n,a),o_(e,a),e}function Y_(e,t,o,a){var n=t.current,i=ZE(),r=e_(n);return o=H_(o),null===t.context?t.context=o:t.pendingContext=o,(t=bi(i,r)).payload={element:e},null!==(a=void 0===a?null:a)&&(t.callback=a),null!==(e=Mi(n,t,r))&&(t_(e,n,r,i),Ui(e,n,r)),r}function z_(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function x_(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var o=e.retryLane;e.retryLane=0!==o&&o<t?o:t}}function K_(e,t){x_(e,t),(e=e.alternate)&&x_(e,t)}pE=function(e,t,o){if(null!==e)if(e.memoizedProps!==t.pendingProps||vn.current)Ns=!0;else{if(0==(e.lanes&o)&&0==(128&t.flags))return Ns=!1,(function(e,t,o){switch(t.tag){case 3:vs(t),ui();break;case 5:ir(t);break;case 1:Bn(t.type)&&Wn(t);break;case 4:ar(t,t.stateNode.containerInfo);break;case 10:var a=t.type._context,n=t.memoizedProps.value;Cn(Ii,a._currentValue),a._currentValue=n;break;case 13:if(null!==(a=t.memoizedState))return null!==a.dehydrated?(Cn(sr,1&sr.current),t.flags|=128,null):0!=(o&t.child.childLanes)?Ws(e,t,o):(Cn(sr,1&sr.current),null!==(e=Ys(e,t,o))?e.sibling:null);Cn(sr,1&sr.current);break;case 19:if(a=0!=(o&t.childLanes),0!=(128&e.flags)){if(a)return Hs(e,t,o);t.flags|=128}if(null!==(n=t.memoizedState)&&(n.rendering=null,n.tail=null,n.lastEffect=null),Cn(sr,sr.current),a)break;return null;case 22:case 23:return t.lanes=0,Ls(e,t,o)}return Ys(e,t,o)})(e,t,o);Ns=0!=(131072&e.flags)}else Ns=!1,ni&&0!=(1048576&t.flags)&&Zn(t,Kn,t.index);switch(t.lanes=0,t.tag){case 2:var a=t.type;Vs(e,t),e=t.pendingProps;var n=yn(t,gn.current);Li(t,o),n=hr(null,t,a,e,n,o);var r=Lr();return t.flags|=1,"object"==typeof n&&null!==n&&"function"==typeof n.render&&void 0===n.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Bn(a)?(r=!0,Wn(t)):r=!1,t.memoizedState=null!==n.state&&void 0!==n.state?n.state:null,yi(t),n.updater=Hi,t.stateNode=n,n._reactInternals=t,xi(t,a,e,o),t=gs(null,t,a,!0,r,o)):(t.tag=0,ni&&r&&ei(t),Rs(null,t,n,o),t=t.child),t;case 16:a=t.elementType;e:{switch(Vs(e,t),e=t.pendingProps,a=(n=a._init)(a._payload),t.type=a,n=t.tag=(function(e){if("function"==typeof e)return y_(e)?1:0;if(null!=e){if((e=e.$$typeof)===g)return 11;if(e===y)return 14}return 2})(a),e=Ai(a,e),n){case 0:t=Cs(null,t,a,e,o);break e;case 1:t=Ds(null,t,a,e,o);break e;case 11:t=ms(null,t,a,e,o);break e;case 14:t=ps(null,t,a,Ai(a.type,e),o);break e}throw Error(i(306,a,""))}return t;case 0:return a=t.type,n=t.pendingProps,Cs(e,t,a,n=t.elementType===a?n:Ai(a,n),o);case 1:return a=t.type,n=t.pendingProps,Ds(e,t,a,n=t.elementType===a?n:Ai(a,n),o);case 3:e:{if(vs(t),null===e)throw Error(i(387));a=t.pendingProps,n=(r=t.memoizedState).element,Bi(e,t),Gi(t,a,null,o);var s=t.memoizedState;if(a=s.element,r.isDehydrated){if(r={element:a,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=r,t.memoizedState=r,256&t.flags){t=Ps(e,t,a,o,n=_s(Error(i(423)),t));break e}if(a!==n){t=Ps(e,t,a,o,n=_s(Error(i(424)),t));break e}for(ai=_n(t.stateNode.containerInfo.firstChild),oi=t,ni=!0,ii=null,o=qi(t,null,a,o),t.child=o;o;)o.flags=-3&o.flags|4096,o=o.sibling}else{if(ui(),a===n){t=Ys(e,t,o);break e}Rs(e,t,a,o)}t=t.child}return t;case 5:return ir(t),null===e&&_i(t),a=t.type,n=t.pendingProps,r=null!==e?e.memoizedProps:null,s=n.children,tn(a,n)?s=null:null!==r&&tn(a,r)&&(t.flags|=32),fs(e,t),Rs(e,t,s,o),t.child;case 6:return null===e&&_i(t),null;case 13:return Ws(e,t,o);case 4:return ar(t,t.stateNode.containerInfo),a=t.pendingProps,null===e?t.child=$i(t,null,a,o):Rs(e,t,a,o),t.child;case 11:return a=t.type,n=t.pendingProps,ms(e,t,a,n=t.elementType===a?n:Ai(a,n),o);case 7:return Rs(e,t,t.pendingProps,o),t.child;case 8:case 12:return Rs(e,t,t.pendingProps.children,o),t.child;case 10:e:{if(a=t.type._context,n=t.pendingProps,r=t.memoizedProps,s=n.value,Cn(Ii,a._currentValue),a._currentValue=s,null!==r)if(ra(r.value,s)){if(r.children===n.children&&!vn.current){t=Ys(e,t,o);break e}}else for(null!==(r=t.child)&&(r.return=t);null!==r;){var E=r.dependencies;if(null!==E){s=r.child;for(var _=E.firstContext;null!==_;){if(_.context===a){if(1===r.tag){(_=bi(-1,o&-o)).tag=2;var T=r.updateQueue;if(null!==T){var l=(T=T.shared).pending;null===l?_.next=_:(_.next=l.next,l.next=_),T.pending=_}}r.lanes|=o,null!==(_=r.alternate)&&(_.lanes|=o),hi(r.return,o,t),E.lanes|=o;break}_=_.next}}else if(10===r.tag)s=r.type===t.type?null:r.child;else if(18===r.tag){if(null===(s=r.return))throw Error(i(341));s.lanes|=o,null!==(E=s.alternate)&&(E.lanes|=o),hi(s,o,t),s=r.sibling}else s=r.child;if(null!==s)s.return=r;else for(s=r;null!==s;){if(s===t){s=null;break}if(null!==(r=s.sibling)){r.return=s.return,s=r;break}s=s.return}r=s}Rs(e,t,n.children,o),t=t.child}return t;case 9:return n=t.type,a=t.pendingProps.children,Li(t,o),a=a(n=fi(n)),t.flags|=1,Rs(e,t,a,o),t.child;case 14:return n=Ai(a=t.type,t.pendingProps),ps(e,t,a,n=Ai(a.type,n),o);case 15:return hs(e,t,t.type,t.pendingProps,o);case 17:return a=t.type,n=t.pendingProps,n=t.elementType===a?n:Ai(a,n),Vs(e,t),t.tag=1,Bn(a)?(e=!0,Wn(t)):e=!1,Li(t,o),Yi(t,a,n),xi(t,a,n,o),gs(null,t,a,!0,e,o);case 19:return Hs(e,t,o);case 22:return Ls(e,t,o)}throw Error(i(156,t.tag))};var j_="function"==typeof reportError?reportError:function(e){console.error(e)};function Q_(e){this._internalRoot=e}function X_(e){this._internalRoot=e}function $_(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function q_(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function J_(){}function Z_(e,t,o,a,n){var i=o._reactRootContainer;if(i){var r=i;if("function"==typeof n){var s=n;n=function(){var e=z_(r);s.call(e)}}Y_(t,r,e,n)}else r=(function(e,t,o,a,n){if(n){if("function"==typeof a){var i=a;a=function(){var e=z_(r);i.call(e)}}var r=V_(t,a,e,0,null,!1,0,"",J_);return e._reactRootContainer=r,e[dn]=r.current,Ha(8===e.nodeType?e.parentNode:e),__(),r}for(;n=e.lastChild;)e.removeChild(n);if("function"==typeof a){var s=a;a=function(){var e=z_(E);s.call(e)}}var E=k_(e,0,!1,null,0,!1,0,"",J_);return e._reactRootContainer=E,e[dn]=E.current,Ha(8===e.nodeType?e.parentNode:e),__((function(){Y_(t,E,o,a)})),E})(o,t,e,n,a);return z_(r)}X_.prototype.render=Q_.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(i(409));Y_(e,t,null,null)},X_.prototype.unmount=Q_.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;__((function(){Y_(null,e,null,null)})),t[dn]=null}},X_.prototype.unstable_scheduleHydration=function(e){if(e){var t=ht();e={blockedOn:null,target:e,priority:t};for(var o=0;o<Bt.length&&0!==t&&t<Bt[o].priority;o++);Bt.splice(o,0,e),0===o&&Wt(e)}},Rt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var o=Tt(t.pendingLanes);0!==o&&(It(t,1|o),o_(t,qe()),0==(6&DE)&&(HE=qe()+500,Vn()))}break;case 13:__((function(){var t=vi(e,1);if(null!==t){var o=ZE();t_(t,e,1,o)}})),K_(e,1)}},mt=function(e){if(13===e.tag){var t=vi(e,134217728);if(null!==t)t_(t,e,134217728,ZE());K_(e,134217728)}},pt=function(e){if(13===e.tag){var t=e_(e),o=vi(e,t);if(null!==o)t_(o,e,t,ZE());K_(e,t)}},ht=function(){return Ot},Lt=function(e,t){var o=Ot;try{return Ot=e,t()}finally{Ot=o}},pe=function(e,t,o){switch(t){case"input":if(J(e,o),t=o.name,"radio"===o.type&&null!=t){for(o=e;o.parentNode;)o=o.parentNode;for(o=o.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<o.length;t++){var a=o[t];if(a!==e&&a.form===e.form){var n=mn(a);if(!n)throw Error(i(90));j(a),J(a,n)}}}break;case"textarea":ie(e,o);break;case"select":null!=(t=o.value)&&oe(e,!!o.multiple,t,!1)}},ge=E_,ve=__;var eT={usingClientEntryPoint:!1,Events:[Nn,Rn,mn,Ce,De,E_]},tT={findFiberByHostInstance:On,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"},oT={bundleType:tT.bundleType,version:tT.version,rendererPackageName:tT.rendererPackageName,rendererConfig:tT.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:R.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=xe(e))?null:e.stateNode},findFiberByHostInstance:tT.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var aT=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!aT.isDisabled&&aT.supportsFiber)try{at=aT.inject(oT),nt=aT}catch(Te){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=eT,t.createPortal=function(e,t){var o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!$_(t))throw Error(i(200));return w_(e,t,null,o)},t.createRoot=function(e,t){if(!$_(e))throw Error(i(299));var o=!1,a="",n=j_;return null!=t&&(!0===t.unstable_strictMode&&(o=!0),void 0!==t.identifierPrefix&&(a=t.identifierPrefix),void 0!==t.onRecoverableError&&(n=t.onRecoverableError)),t=k_(e,1,!1,null,0,o,0,a,n),e[dn]=t.current,Ha(8===e.nodeType?e.parentNode:e),new Q_(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(i(188));throw e=Object.keys(e).join(","),Error(i(268,e))}return e=null===(e=xe(t))?null:e.stateNode},t.flushSync=function(e){return __(e)},t.hydrate=function(e,t,o){if(!q_(t))throw Error(i(200));return Z_(null,e,t,!0,o)},t.hydrateRoot=function(e,t,o){if(!$_(e))throw Error(i(405));var a=null!=o&&o.hydratedSources||null,n=!1,r="",s=j_;if(null!=o&&(!0===o.unstable_strictMode&&(n=!0),void 0!==o.identifierPrefix&&(r=o.identifierPrefix),void 0!==o.onRecoverableError&&(s=o.onRecoverableError)),t=V_(t,null,e,1,null!=o?o:null,n,0,r,s),e[dn]=t.current,Ha(e),a)for(e=0;e<a.length;e++)n=(n=(o=a[e])._getVersion)(o._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[o,n]:t.mutableSourceEagerHydrationData.push(o,n);return new X_(t)},t.render=function(e,t,o){if(!q_(t))throw Error(i(200));return Z_(null,e,t,!1,o)},t.unmountComponentAtNode=function(e){if(!q_(e))throw Error(i(40));return!!e._reactRootContainer&&(__((function(){Z_(null,null,e,!1,(function(){e._reactRootContainer=null,e[dn]=null}))})),!0)},t.unstable_batchedUpdates=E_,t.unstable_renderSubtreeIntoContainer=function(e,t,o,a){if(!q_(o))throw Error(i(200));if(null==e||void 0===e._reactInternals)throw Error(i(38));return Z_(e,t,o,!1,a)},t.version="18.2.0-next-9e3b772b8-20220608"},745:(e,t,o)=>{"use strict";var a=o(3935);t.createRoot=a.createRoot,t.hydrateRoot=a.hydrateRoot},3935:(e,t,o)=>{"use strict";!(function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}})(),e.exports=o(4448)},6413:(e,t,o)=>{"use strict";function a(){return a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},a.apply(this,arguments)}o.d(t,{ZP:()=>Be});var n=o(7294),i=(o(5697),"data-focus-lock"),r="data-focus-lock-disabled";function s(e,t){return o=t||null,a=function(t){return e.forEach((function(e){return(function(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e})(e,t)}))},(i=(0,n.useState)((function(){return{value:o,callback:a,facade:{get current(){return i.value},set current(e){var t=i.value;t!==e&&(i.value=e,i.callback(e,t))}}}}))[0]).callback=a,i.facade;var o,a,i}var E={width:"1px",height:"0px",padding:0,overflow:"hidden",position:"fixed",top:"1px",left:"1px"},_=function(e){var t=e.children;return n.createElement(n.Fragment,null,n.createElement("div",{key:"guard-first","data-focus-guard":!0,"data-focus-auto-guard":!0,style:E}),t,t&&n.createElement("div",{key:"guard-last","data-focus-guard":!0,"data-focus-auto-guard":!0,style:E}))};_.propTypes={},_.defaultProps={children:null};var T=function(){return T=Object.assign||function(e){for(var t,o=1,a=arguments.length;o<a;o++)for(var n in t=arguments[o])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},T.apply(this,arguments)};Object.create;Object.create;function l(e){return e}function S(e,t){void 0===t&&(t=l);var o=[],a=!1;return{read:function(){if(a)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return o.length?o[o.length-1]:e},useMedium:function(e){var n=t(e,a);return o.push(n),function(){o=o.filter((function(e){return e!==n}))}},assignSyncMedium:function(e){for(a=!0;o.length;){var t=o;o=[],t.forEach(e)}o={push:function(t){return e(t)},filter:function(){return o}}},assignMedium:function(e){a=!0;var t=[];if(o.length){var n=o;o=[],n.forEach(e),t=o}var i=function(){var o=t;t=[],o.forEach(e)},r=function(){return Promise.resolve().then(i)};r(),o={push:function(e){t.push(e),r()},filter:function(e){return t=t.filter(e),o}}}}}function u(e,t){return void 0===t&&(t=l),S(e,t)}var d=u({},(function(e){return{target:e.target,currentTarget:e.currentTarget}})),c=u(),A=u(),I=(function(e){void 0===e&&(e={});var t=S(null);return t.options=T({async:!0,ssr:!1},e),t})({async:!0}),O=[],N=n.forwardRef((function(e,t){var o,_=n.useState(),T=_[0],l=_[1],S=n.useRef(),u=n.useRef(!1),A=n.useRef(null),N=e.children,R=e.disabled,m=e.noFocusGuards,p=e.persistentFocus,h=e.crossFrame,L=e.autoFocus,f=(e.allowTextSelection,e.group),C=e.className,D=e.whiteList,g=e.hasPositiveIndices,v=e.shards,P=void 0===v?O:v,y=e.as,B=void 0===y?"div":y,b=e.lockProps,M=void 0===b?{}:b,U=e.sideCar,W=e.returnFocus,G=e.focusOptions,F=e.onActivation,k=e.onDeactivation,w=n.useState({})[0],H=n.useCallback((function(){A.current=A.current||document&&document.activeElement,S.current&&F&&F(S.current),u.current=!0}),[F]),V=n.useCallback((function(){u.current=!1,k&&k(S.current)}),[k]);(0,n.useEffect)((function(){R||(A.current=null)}),[]);var Y=n.useCallback((function(e){var t=A.current;if(t&&t.focus){var o="function"==typeof W?W(t):W;if(o){var a="object"==typeof o?o:void 0;A.current=null,e?Promise.resolve().then((function(){return t.focus(a)})):t.focus(a)}}}),[W]),z=n.useCallback((function(e){u.current&&d.useMedium(e)}),[]),x=c.useMedium,K=n.useCallback((function(e){S.current!==e&&(S.current=e,l(e))}),[]);var j=a(((o={})[r]=R&&"disabled",o[i]=f,o),M),Q=!0!==m,X=Q&&"tail"!==m,$=s([t,K]);return n.createElement(n.Fragment,null,Q&&[n.createElement("div",{key:"guard-first","data-focus-guard":!0,tabIndex:R?-1:0,style:E}),g?n.createElement("div",{key:"guard-nearest","data-focus-guard":!0,tabIndex:R?-1:1,style:E}):null],!R&&n.createElement(U,{id:w,sideCar:I,observed:T,disabled:R,persistentFocus:p,crossFrame:h,autoFocus:L,whiteList:D,shards:P,onActivation:H,onDeactivation:V,returnFocus:Y,focusOptions:G}),n.createElement(B,a({ref:$},j,{className:C,onBlur:x,onFocus:z}),N),X&&n.createElement("div",{"data-focus-guard":!0,tabIndex:R?-1:0,style:E}))}));N.propTypes={},N.defaultProps={children:void 0,disabled:!1,returnFocus:!1,focusOptions:void 0,noFocusGuards:!1,autoFocus:!0,persistentFocus:!1,crossFrame:!0,hasPositiveIndices:void 0,allowTextSelection:void 0,group:void 0,className:void 0,whiteList:void 0,shards:void 0,as:"div",lockProps:{},onActivation:void 0,onDeactivation:void 0};const R=N;function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}const p=function(e,t){return function(o){var a,i=[];function r(){a=e(i.map((function(e){return e.props}))),t(a)}var s,E,_,T=(function(e){var t,s;function E(){return e.apply(this,arguments)||this}s=e,(t=E).prototype=Object.create(s.prototype),t.prototype.constructor=t,m(t,s),E.peek=function(){return a};var _=E.prototype;return _.componentDidMount=function(){i.push(this),r()},_.componentDidUpdate=function(){r()},_.componentWillUnmount=function(){var e=i.indexOf(this);i.splice(e,1),r()},_.render=function(){return n.createElement(o,this.props)},E})(n.PureComponent);return s=T,E="displayName",_="SideEffect("+(function(e){return e.displayName||e.name||"Component"})(o)+")",E in s?Object.defineProperty(s,E,{value:_,enumerable:!0,configurable:!0,writable:!0}):s[E]=_,T}};var h=function(e){return e.parentNode&&e.parentNode.nodeType===Node.DOCUMENT_FRAGMENT_NODE?e.parentNode.host:e.parentNode},L=function(e){return e===document||e&&e.nodeType===Node.DOCUMENT_NODE},f=function(e,t){return!e||L(e)||!(function(e){if(e.nodeType!==Node.ELEMENT_NODE)return!1;var t=window.getComputedStyle(e,null);return!(!t||!t.getPropertyValue||"none"!==t.getPropertyValue("display")&&"hidden"!==t.getPropertyValue("visibility"))})(e)&&t(h(e))},C=function(e,t){var o=e.get(t);if(void 0!==o)return o;var a=f(t,C.bind(void 0,e));return e.set(t,a),a},D=function(e,t){var o=e.get(t);if(void 0!==o)return o;var a=(function(e,t){return!(e&&!L(e))||!!y(e)&&t(h(e))})(t,D.bind(void 0,e));return e.set(t,a),a},g=function(e){return e.dataset},v=function(e){return"INPUT"===e.tagName},P=function(e){return v(e)&&"radio"===e.type},y=function(e){var t=e.getAttribute("data-no-autofocus");return![!0,"true",""].includes(t)},B=function(e){var t;return Boolean(e&&(null===(t=g(e))||void 0===t?void 0:t.focusGuard))},b=function(e){return!B(e)},M=function(e){return Boolean(e)},U=function(e,t){return P(e)&&e.name?(function(e,t){return t.filter(P).filter((function(t){return t.name===e.name})).filter((function(e){return e.checked}))[0]||e})(e,t):e},W=function(e){return e[0]&&e.length>1?U(e[0],e):e[0]},G=function(e,t){return e.length>1?e.indexOf(U(e[t],e)):t},F="NEW_FOCUS",k=function(e,t,o,a){var n=e.length,i=e[0],r=e[n-1],s=B(o);if(!(o&&e.indexOf(o)>=0)){var E,_,T=void 0!==o?t.indexOf(o):-1,l=a?t.indexOf(a):T,S=a?e.indexOf(a):-1,u=T-l,d=t.indexOf(i),c=t.indexOf(r),A=(E=t,_=new Set,E.forEach((function(e){return _.add(U(e,E))})),E.filter((function(e){return _.has(e)}))),I=(void 0!==o?A.indexOf(o):-1)-(a?A.indexOf(a):T),O=G(e,0),N=G(e,n-1);return-1===T||-1===S?F:!u&&S>=0?S:T<=d&&s&&Math.abs(u)>1?N:T>=c&&s&&Math.abs(u)>1?O:u&&Math.abs(I)>1?S:T<=d?N:T>c?O:u?Math.abs(u)>1?S:(n+S+u)%n:void 0}},w=function(e){for(var t=Array(e.length),o=0;o<e.length;++o)t[o]=e[o];return t},H=function(e){return Array.isArray(e)?e:[e]},V=function(e,t){var o=e.tabIndex-t.tabIndex,a=e.index-t.index;if(o){if(!e.tabIndex)return 1;if(!t.tabIndex)return-1}return o||a},Y=function(e,t,o){return w(e).map((function(e,t){return{node:e,index:t,tabIndex:o&&-1===e.tabIndex?(e.dataset||{}).focusGuard?0:-1:e.tabIndex}})).filter((function(e){return!t||e.tabIndex>=0})).sort(V)},z=["button:enabled","select:enabled","textarea:enabled","input:enabled","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]","[tabindex]","[contenteditable]","[autofocus]"].join(","),x="".concat(z,", [data-focus-guard]"),K=function(e,t){var o;return w((null===(o=e.shadowRoot)||void 0===o?void 0:o.children)||e.children).reduce((function(e,o){return e.concat(o.matches(t?x:z)?[o]:[],K(o))}),[])},j=function(e,t){return e.reduce((function(e,o){return e.concat(K(o,t),o.parentNode?w(o.parentNode.querySelectorAll(z)).filter((function(e){return e===o})):[])}),[])},Q=function(e,t){return w(e).filter((function(e){return C(t,e)})).filter((function(e){return(function(e){return!((v(e)||(function(e){return"BUTTON"===e.tagName})(e))&&("hidden"===e.type||e.disabled))})(e)}))},X=function(e,t){return void 0===t&&(t=new Map),w(e).filter((function(e){return D(t,e)}))},$=function(e,t,o){return Y(Q(j(e,o),t),!0,o)},q=function(e,t){return Y(Q(j(e),t),!1)},J=function(e,t){return Q((function(e){var t=e.querySelectorAll("[".concat("data-autofocus-inside","]"));return w(t).map((function(e){return j([e])})).reduce((function(e,t){return e.concat(t)}),[])})(e),t)},Z=function(e,t){return(e.shadowRoot?Z(e.shadowRoot,t):Object.getPrototypeOf(e).contains.call(e,t))||w(e.children).some((function(e){return Z(e,t)}))},ee=function(e){return e.parentNode?ee(e.parentNode):e},te=function(e){return H(e).filter(Boolean).reduce((function(e,t){var o=t.getAttribute(i);return e.push.apply(e,o?(function(e){for(var t=new Set,o=e.length,a=0;a<o;a+=1)for(var n=a+1;n<o;n+=1){var i=e[a].compareDocumentPosition(e[n]);(i&Node.DOCUMENT_POSITION_CONTAINED_BY)>0&&t.add(n),(i&Node.DOCUMENT_POSITION_CONTAINS)>0&&t.add(a)}return e.filter((function(e,o){return!t.has(o)}))})(w(ee(t).querySelectorAll("[".concat(i,'="').concat(o,'"]:not([').concat(r,'="disabled"])')))):[t]),e}),[])},oe=function(e){return e.activeElement?e.activeElement.shadowRoot?oe(e.activeElement.shadowRoot):e.activeElement:void 0},ae=function(){return document.activeElement?document.activeElement.shadowRoot?oe(document.activeElement.shadowRoot):document.activeElement:void 0},ne=function(e,t){return void 0===t&&(t=[]),t.push(e),e.parentNode&&ne(e.parentNode.host||e.parentNode,t),t},ie=function(e,t){for(var o=ne(e),a=ne(t),n=0;n<o.length;n+=1){var i=o[n];if(a.indexOf(i)>=0)return i}return!1},re=function(e,t,o){var a=H(e),n=H(t),i=a[0],r=!1;return n.filter(Boolean).forEach((function(e){r=ie(r||e,e)||r,o.filter(Boolean).forEach((function(e){var t=ie(i,e);t&&(r=!r||Z(t,r)?t:ie(t,r))}))})),r},se=function(e,t){var o=document&&ae(),a=te(e).filter(b),n=re(o||e,e,a),i=new Map,r=q(a,i),s=$(a,i).filter((function(e){var t=e.node;return b(t)}));if(s[0]||(s=r)[0]){var E,_,T,l,S=q([n],i).map((function(e){return e.node})),u=(E=S,_=s,T=new Map,_.forEach((function(e){return T.set(e.node,e)})),E.map((function(e){return T.get(e)})).filter(M)),d=u.map((function(e){return e.node})),c=k(d,S,o,t);if(c===F){var A=X(r.map((function(e){return e.node}))).filter((l=(function(e,t){return e.reduce((function(e,o){return e.concat(J(o,t))}),[])})(a,i),function(e){var t;return e.autofocus||!!(null===(t=g(e))||void 0===t?void 0:t.autofocus)||l.indexOf(e)>=0}));return{node:A&&A.length?W(A):W(X(d))}}return void 0===c?c:u[c]}},Ee=0,_e=!1;const Te=function(e,t,o){void 0===o&&(o={});var a,n,i=se(e,t);if(!_e&&i){if(Ee>2)return console.error("FocusLock: focus-fighting detected. Only one focus management system could be active. See https://github.com/theKashey/focus-lock/#focus-fighting"),_e=!0,void setTimeout((function(){_e=!1}),1);Ee++,a=i.node,n=o.focusOptions,"focus"in a&&a.focus(n),"contentWindow"in a&&a.contentWindow&&a.contentWindow.focus(),Ee--}};var le=function(e){return Boolean(w(e.querySelectorAll("iframe")).some((function(e){return e===document.activeElement})))},Se=function(e){var t=document&&ae();return!(!t||t.dataset&&t.dataset.focusGuard)&&te(e).some((function(e){return Z(e,t)||le(e)}))},ue=function(e){var t=te(e).filter(b),o=re(e,e,t),a=new Map,n=$([o],a,!0),i=$(t,a).filter((function(e){var t=e.node;return b(t)})).map((function(e){return e.node}));return n.map((function(e){var t=e.node;return{node:t,index:e.index,lockItem:i.indexOf(t)>=0,guard:B(t)}}))};function de(e){var t=window.setImmediate;void 0!==t?t(e):setTimeout(e,1)}var ce=function(){return document&&document.activeElement===document.body||!!(e=document&&ae())&&w(document.querySelectorAll("[".concat("data-no-focus-lock","]"))).some((function(t){return Z(t,e)}));var e},Ae=null,Ie=null,Oe=null,Ne=!1,Re=function(){return!0};function me(e,t,o,a){var n=null,i=e;do{var r=a[i];if(r.guard)r.node.dataset.focusAutoGuard&&(n=r);else{if(!r.lockItem)break;if(i!==e)return;n=null}}while((i+=o)!==t);n&&(n.node.tabIndex=0)}var pe=function(e){return e&&"current"in e?e.current:e},he=function e(t,o,a){return o&&(o.host===t&&(!o.activeElement||a.contains(o.activeElement))||o.parentNode&&e(t,o.parentNode,a))},Le=function(){var e,t=!1;if(Ae){var o=Ae,a=o.observed,n=o.persistentFocus,i=o.autoFocus,r=o.shards,s=o.crossFrame,E=o.focusOptions,_=a||Oe&&Oe.portaledElement,T=document&&document.activeElement;if(_){var l=[_].concat(r.map(pe).filter(Boolean));if(T&&!(function(e){return(Ae.whiteList||Re)(e)})(T)||(n||(s?Boolean(Ne):"meanwhile"===Ne)||!ce()||!Ie&&i)&&(_&&!(Se(l)||T&&(function(e,t){return t.some((function(t){return he(e,t,t)}))})(T,l)||(e=T,Oe&&Oe.portaledElement===e))&&(document&&!Ie&&T&&!i?(T.blur&&T.blur(),document.body.focus()):(t=Te(l,Ie,{focusOptions:E}),Oe={})),Ne=!1,Ie=document&&document.activeElement),document){var S=document&&document.activeElement,u=ue(l),d=u.map((function(e){return e.node})).indexOf(S);d>-1&&(u.filter((function(e){var t=e.guard,o=e.node;return t&&o.dataset.focusAutoGuard})).forEach((function(e){return e.node.removeAttribute("tabIndex")})),me(d,u.length,1,u),me(d,-1,-1,u))}}}return t},fe=function(e){Le()&&e&&(e.stopPropagation(),e.preventDefault())},Ce=function(){return de(Le)},De=function(e){var t=e.target,o=e.currentTarget;o.contains(t)||(Oe={observerNode:o,portaledElement:t})},ge=function(){Ne="just",setTimeout((function(){Ne="meanwhile"}),0)};d.assignSyncMedium(De),c.assignMedium(Ce),A.assignMedium((function(e){return e({moveFocusInside:Te,focusInside:Se})}));const ve=p((function(e){return e.filter((function(e){return!e.disabled}))}),(function(e){var t=e.slice(-1)[0];t&&!Ae&&(document.addEventListener("focusin",fe),document.addEventListener("focusout",Ce),window.addEventListener("blur",ge));var o=Ae,a=o&&t&&t.id===o.id;Ae=t,o&&!a&&(o.onDeactivation(),e.filter((function(e){return e.id===o.id})).length||o.returnFocus(!t)),t?(Ie=null,a&&o.observed===t.observed||t.onActivation(),Le(),de(Le)):(document.removeEventListener("focusin",fe),document.removeEventListener("focusout",Ce),window.removeEventListener("blur",ge),Ie=null)}))((function(){return null}));var Pe=n.forwardRef((function(e,t){return n.createElement(R,a({sideCar:ve,ref:t},e))})),ye=R.propTypes||{};ye.sideCar,(function(e,t){if(null==e)return{};var o,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)o=i[a],t.indexOf(o)>=0||(n[o]=e[o])})(ye,["sideCar"]);Pe.propTypes={};const Be=Pe},2832:(e,t,o)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.I18nextProvider=function(e){var t=e.i18n,o=e.defaultNS,i=e.children,r=(0,a.useMemo)((function(){return{i18n:t,defaultNS:o}}),[t,o]);return(0,a.createElement)(n.I18nContext.Provider,{value:r},i)};var a=o(7294),n=o(9336)},9779:(e,t,o)=>{"use strict";var a=o(5318);Object.defineProperty(t,"__esModule",{value:!0}),t.Trans=function(e){var t=e.children,o=e.count,a=e.parent,l=e.i18nKey,S=e.context,u=e.tOptions,d=void 0===u?{}:u,c=e.values,A=e.defaults,I=e.components,O=e.ns,N=e.i18n,R=e.t,m=e.shouldUnescape,p=(0,i.default)(e,_),h=(0,r.useContext)(E.I18nContext)||{},L=h.i18n,f=h.defaultNS,C=N||L||(0,E.getI18n)(),D=R||C.t.bind(C)||function(e){return e};return(0,s.Trans)((function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?T(Object(o),!0).forEach((function(t){(0,n.default)(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):T(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e})({children:t,count:o,parent:a,i18nKey:l,context:S,tOptions:d,values:c,defaults:A,components:I,ns:O||D.ns||f||C.options&&C.options.defaultNS,i18n:C,t:R,shouldUnescape:m},p))},Object.defineProperty(t,"nodesToString",{enumerable:!0,get:function(){return s.nodesToString}});var n=a(o(9713)),i=a(o(6479)),r=o(7294),s=o(7346),E=o(9336),_=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function T(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}},7346:(e,t,o)=>{"use strict";var a=o(5318);Object.defineProperty(t,"__esModule",{value:!0}),t.nodesToString=N,t.Trans=function(e){var t=e.children,o=e.count,a=e.parent,r=e.i18nKey,S=e.context,d=e.tOptions,R=void 0===d?{}:d,m=e.values,p=e.defaults,h=e.components,L=e.ns,f=e.i18n,C=e.t,D=e.shouldUnescape,g=(0,n.default)(e,u),v=f||(0,l.getI18n)();if(!v)return(0,_.warnOnce)("You will need to pass in an i18next instance by using i18nextReactModule"),t;var P=C||v.t.bind(v)||function(e){return e};S&&(R.context=S);var y=c(c({},(0,T.getDefaults)()),v.options&&v.options.react),B=L||P.ns||v.options&&v.options.defaultNS;B="string"==typeof B?[B]:B||["translation"];var b=p||N(t,y)||y.transEmptyNodeValue||r,M=y.hashTransKey,U=r||(M?M(b):b),W=m?R.interpolation:{interpolation:c(c({},R.interpolation),{},{prefix:"#$?",suffix:"?$#"})},G=c(c(c(c({},R),{},{count:o},m),W),{},{defaultValue:b,ns:B}),F=U?P(U,G):b,k=(function(e,t,o,a,n,r){if(""===t)return[];var _=a.transKeepBasicHtmlNodesFor||[],T=t&&new RegExp(_.join("|")).test(t);if(!e&&!T)return[t];var l={};function S(e){O(e).forEach((function(e){"string"!=typeof e&&(A(e)?S(I(e)):"object"!==(0,i.default)(e)||(0,s.isValidElement)(e)||Object.assign(l,e))}))}S(e);var u=E.default.parse("<0>".concat(t,"</0>")),d=c(c({},l),n);function N(e,t,o){var a=I(e),n=m(a,t.children,o);return(function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return(0,s.isValidElement)(e)}))})(a)&&0===n.length?a:n}function R(e,t,o,a,n){e.dummy&&(e.children=t),o.push((0,s.cloneElement)(e,c(c({},e.props),{},{key:a}),n?void 0:t))}function m(t,n,E){var l=O(t);return O(n).reduce((function(t,n,S){var u,I,O,p=n.children&&n.children[0]&&n.children[0].content&&o.services.interpolator.interpolate(n.children[0].content,d,o.language);if("tag"===n.type){var h=l[parseInt(n.name,10)];!h&&1===E.length&&E[0][n.name]&&(h=E[0][n.name]),h||(h={});var L=0!==Object.keys(n.attrs).length?(u={props:n.attrs},(O=c({},I=h)).props=Object.assign(u.props,I.props),O):h,f=(0,s.isValidElement)(L),C=f&&A(n,!0)&&!n.voidElement,D=T&&"object"===(0,i.default)(L)&&L.dummy&&!f,g="object"===(0,i.default)(e)&&null!==e&&Object.hasOwnProperty.call(e,n.name);if("string"==typeof L){var v=o.services.interpolator.interpolate(L,d,o.language);t.push(v)}else if(A(L)||C){R(L,N(L,n,E),t,S)}else if(D){var P=m(l,n.children,E);t.push((0,s.cloneElement)(L,c(c({},L.props),{},{key:S}),P))}else if(Number.isNaN(parseFloat(n.name))){if(g)R(L,N(L,n,E),t,S,n.voidElement);else if(a.transSupportBasicHtmlNodes&&_.indexOf(n.name)>-1)if(n.voidElement)t.push((0,s.createElement)(n.name,{key:"".concat(n.name,"-").concat(S)}));else{var y=m(l,n.children,E);t.push((0,s.createElement)(n.name,{key:"".concat(n.name,"-").concat(S)},y))}else if(n.voidElement)t.push("<".concat(n.name," />"));else{var B=m(l,n.children,E);t.push("<".concat(n.name,">").concat(B,"</").concat(n.name,">"))}}else if("object"!==(0,i.default)(L)||f)1===n.children.length&&p?t.push((0,s.cloneElement)(L,c(c({},L.props),{},{key:S}),p)):t.push((0,s.cloneElement)(L,c(c({},L.props),{},{key:S})));else{var b=n.children[0]?p:null;b&&t.push(b)}}else if("text"===n.type){var M=a.transWrapTextNodes,U=r?a.unescape(o.services.interpolator.interpolate(n.content,d,o.language)):o.services.interpolator.interpolate(n.content,d,o.language);M?t.push((0,s.createElement)(M,{key:"".concat(n.name,"-").concat(S)},U)):t.push(U)}return t}),[])}return I(m([{dummy:!0,children:e||[]}],u,O(e||[]))[0])})(h||t,F,v,y,G,D),w=void 0!==a?a:y.defaultTransParent;return w?(0,s.createElement)(w,g,k):k};var n=a(o(6479)),i=a(o(8)),r=a(o(9713)),s=o(7294),E=a(o(1613)),_=o(7873),T=o(8255),l=o(6425),S=["format"],u=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function d(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function c(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?d(Object(o),!0).forEach((function(t){(0,r.default)(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):d(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function A(e,t){if(!e)return!1;var o=e.props?e.props.children:e.children;return t?o.length>0:!!o}function I(e){return e?e.props?e.props.children:e.children:[]}function O(e){return Array.isArray(e)?e:[e]}function N(e,t){if(!e)return"";var o="",a=O(e),r=t.transSupportBasicHtmlNodes&&t.transKeepBasicHtmlNodesFor?t.transKeepBasicHtmlNodesFor:[];return a.forEach((function(e,a){if("string"==typeof e)o+="".concat(e);else if((0,s.isValidElement)(e)){var E=Object.keys(e.props).length,T=r.indexOf(e.type)>-1,l=e.props.children;if(!l&&T&&0===E)o+="<".concat(e.type,"/>");else if(l||T&&0===E)if(e.props.i18nIsDynamicList)o+="<".concat(a,"></").concat(a,">");else if(T&&1===E&&"string"==typeof l)o+="<".concat(e.type,">").concat(l,"</").concat(e.type,">");else{var u=N(l,t);o+="<".concat(a,">").concat(u,"</").concat(a,">")}else o+="<".concat(a,"></").concat(a,">")}else if(null===e)(0,_.warn)("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===(0,i.default)(e)){var d=e.format,c=(0,n.default)(e,S),A=Object.keys(c);if(1===A.length){var I=d?"".concat(A[0],", ").concat(d):A[0];o+="{{".concat(I,"}}")}else(0,_.warn)("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",e)}else(0,_.warn)("Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.",e)})),o}},634:(e,t,o)=>{"use strict";var a=o(5318);Object.defineProperty(t,"__esModule",{value:!0}),t.Translation=function(e){var t=e.ns,o=e.children,a=(0,i.default)(e,s),E=(0,r.useTranslation)(t,a),_=(0,n.default)(E,3),T=_[0],l=_[1],S=_[2];return o(T,{i18n:l,lng:l.language},S)};var n=a(o(3038)),i=a(o(6479)),r=o(2607),s=["ns","children"]},9336:(e,t,o)=>{"use strict";var a=o(5318);Object.defineProperty(t,"__esModule",{value:!0}),t.composeInitialProps=function(e){return function(t){return new Promise((function(o){var a=c();e.getInitialProps?e.getInitialProps(t).then((function(e){o(S(S({},e),a))})):o(a)}))}},t.getInitialProps=c,Object.defineProperty(t,"getDefaults",{enumerable:!0,get:function(){return E.getDefaults}}),Object.defineProperty(t,"setDefaults",{enumerable:!0,get:function(){return E.setDefaults}}),Object.defineProperty(t,"getI18n",{enumerable:!0,get:function(){return _.getI18n}}),Object.defineProperty(t,"setI18n",{enumerable:!0,get:function(){return _.setI18n}}),Object.defineProperty(t,"initReactI18next",{enumerable:!0,get:function(){return T.initReactI18next}}),t.ReportNamespaces=t.I18nContext=void 0;var n=a(o(9713)),i=a(o(4575)),r=a(o(3913)),s=o(7294),E=o(8255),_=o(6425),T=o(8564);function l(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function S(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?l(Object(o),!0).forEach((function(t){(0,n.default)(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):l(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}var u=(0,s.createContext)();t.I18nContext=u;var d=(function(){function e(){(0,i.default)(this,e),this.usedNamespaces={}}return(0,r.default)(e,[{key:"addUsedNamespaces",value:function(e){var t=this;e.forEach((function(e){t.usedNamespaces[e]||(t.usedNamespaces[e]=!0)}))}},{key:"getUsedNamespaces",value:function(){return Object.keys(this.usedNamespaces)}}]),e})();function c(){var e=(0,_.getI18n)(),t=e.reportNamespaces?e.reportNamespaces.getUsedNamespaces():[],o={},a={};return e.languages.forEach((function(o){a[o]={},t.forEach((function(t){a[o][t]=e.getResourceBundle(o,t)||{}}))})),o.initialI18nStore=a,o.initialLanguage=e.language,o}t.ReportNamespaces=d},8255:(e,t,o)=>{"use strict";var a=o(5318);Object.defineProperty(t,"__esModule",{value:!0}),t.setDefaults=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};s=r(r({},s),e)},t.getDefaults=function(){return s};var n=a(o(9713));function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function r(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?i(Object(o),!0).forEach((function(t){(0,n.default)(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):i(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}var s={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:o(832).unescape}},6425:(e,t)=>{"use strict";var o;Object.defineProperty(t,"__esModule",{value:!0}),t.setI18n=function(e){o=e},t.getI18n=function(){return o}},1468:(e,t,o)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Trans",{enumerable:!0,get:function(){return a.Trans}}),Object.defineProperty(t,"TransWithoutContext",{enumerable:!0,get:function(){return n.Trans}}),Object.defineProperty(t,"useTranslation",{enumerable:!0,get:function(){return i.useTranslation}}),Object.defineProperty(t,"withTranslation",{enumerable:!0,get:function(){return r.withTranslation}}),Object.defineProperty(t,"Translation",{enumerable:!0,get:function(){return s.Translation}}),Object.defineProperty(t,"I18nextProvider",{enumerable:!0,get:function(){return E.I18nextProvider}}),Object.defineProperty(t,"withSSR",{enumerable:!0,get:function(){return _.withSSR}}),Object.defineProperty(t,"useSSR",{enumerable:!0,get:function(){return T.useSSR}}),Object.defineProperty(t,"I18nContext",{enumerable:!0,get:function(){return l.I18nContext}}),Object.defineProperty(t,"initReactI18next",{enumerable:!0,get:function(){return l.initReactI18next}}),Object.defineProperty(t,"setDefaults",{enumerable:!0,get:function(){return l.setDefaults}}),Object.defineProperty(t,"getDefaults",{enumerable:!0,get:function(){return l.getDefaults}}),Object.defineProperty(t,"setI18n",{enumerable:!0,get:function(){return l.setI18n}}),Object.defineProperty(t,"getI18n",{enumerable:!0,get:function(){return l.getI18n}}),Object.defineProperty(t,"composeInitialProps",{enumerable:!0,get:function(){return l.composeInitialProps}}),Object.defineProperty(t,"getInitialProps",{enumerable:!0,get:function(){return l.getInitialProps}}),t.selectOrdinal=t.plural=t.select=t.number=t.time=t.date=void 0;var a=o(9779),n=o(7346),i=o(2607),r=o(8481),s=o(634),E=o(2832),_=o(469),T=o(7377),l=o(9336);t.date=function(){return""};t.time=function(){return""};t.number=function(){return""};t.select=function(){return""};t.plural=function(){return""};t.selectOrdinal=function(){return""}},8564:(e,t,o)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.initReactI18next=void 0;var a=o(8255),n=o(6425),i={type:"3rdParty",init:function(e){(0,a.setDefaults)(e.options.react),(0,n.setI18n)(e)}};t.initReactI18next=i},832:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.unescape=void 0;var o=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,a={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},n=function(e){return a[e]};t.unescape=function(e){return e.replace(o,n)}},7377:(e,t,o)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useSSR=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=o.i18n,r=(0,a.useContext)(n.I18nContext)||{},s=r.i18n,E=i||s||(0,n.getI18n)();if(E.options&&E.options.isClone)return;e&&!E.initializedStoreOnce&&(E.services.resourceStore.data=e,E.options.ns=Object.values(e).reduce((function(e,t){return Object.keys(t).forEach((function(t){e.indexOf(t)<0&&e.push(t)})),e}),E.options.ns),E.initializedStoreOnce=!0,E.isInitialized=!0);t&&!E.initializedLanguageOnce&&(E.changeLanguage(t),E.initializedLanguageOnce=!0)};var a=o(7294),n=o(9336)},2607:(e,t,o)=>{"use strict";var a=o(5318);Object.defineProperty(t,"__esModule",{value:!0}),t.useTranslation=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=t.i18n,a=(0,r.useContext)(s.I18nContext)||{},i=a.i18n,_=a.defaultNS,S=o||i||(0,s.getI18n)();S&&!S.reportNamespaces&&(S.reportNamespaces=new s.ReportNamespaces);if(!S){(0,E.warnOnce)("You will need to pass in an i18next instance by using initReactI18next");var u=function(e){return Array.isArray(e)?e[e.length-1]:e},d=[u,{},!1];return d.t=u,d.i18n={},d.ready=!1,d}S.options.react&&void 0!==S.options.react.wait&&(0,E.warnOnce)("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var c=T(T(T({},(0,s.getDefaults)()),S.options.react),t),A=c.useSuspense,I=c.keyPrefix,O=e||_||S.options&&S.options.defaultNS;O="string"==typeof O?[O]:O||["translation"],S.reportNamespaces.addUsedNamespaces&&S.reportNamespaces.addUsedNamespaces(O);var N=(S.isInitialized||S.initializedStoreOnce)&&O.every((function(e){return(0,E.hasLoadedNamespace)(e,S,c)}));function R(){return S.getFixedT(null,"fallback"===c.nsMode?O:O[0],I)}var m=(0,r.useState)(R),p=(0,n.default)(m,2),h=p[0],L=p[1],f=O.join(),C=l(f),D=(0,r.useRef)(!0);(0,r.useEffect)((function(){var e=c.bindI18n,t=c.bindI18nStore;function o(){D.current&&L(R)}return D.current=!0,N||A||(0,E.loadNamespaces)(S,O,(function(){D.current&&L(R)})),N&&C&&C!==f&&D.current&&L(R),e&&S&&S.on(e,o),t&&S&&S.store.on(t,o),function(){D.current=!1,e&&S&&e.split(" ").forEach((function(e){return S.off(e,o)})),t&&S&&t.split(" ").forEach((function(e){return S.store.off(e,o)}))}}),[S,f]);var g=(0,r.useRef)(!0);(0,r.useEffect)((function(){D.current&&!g.current&&L(R),g.current=!1}),[S,I]);var v=[h,S,N];if(v.t=h,v.i18n=S,v.ready=N,N)return v;if(!N&&!A)return v;throw new Promise((function(e){(0,E.loadNamespaces)(S,O,(function(){e()}))}))};var n=a(o(3038)),i=a(o(9713)),r=o(7294),s=o(9336),E=o(7873);function _(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function T(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?_(Object(o),!0).forEach((function(t){(0,i.default)(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):_(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}var l=function(e,t){var o=(0,r.useRef)();return(0,r.useEffect)((function(){o.current=t?o.current:e}),[e,t]),o.current}},7873:(e,t)=>{"use strict";function o(){if(console&&console.warn){for(var e,t=arguments.length,o=new Array(t),a=0;a<t;a++)o[a]=arguments[a];"string"==typeof o[0]&&(o[0]="react-i18next:: ".concat(o[0])),(e=console).warn.apply(e,o)}}Object.defineProperty(t,"__esModule",{value:!0}),t.warn=o,t.warnOnce=n,t.loadNamespaces=function(e,t,o){e.loadNamespaces(t,(function(){if(e.isInitialized)o();else{e.on("initialized",(function t(){setTimeout((function(){e.off("initialized",t)}),0),o()}))}}))},t.hasLoadedNamespace=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t.languages||!t.languages.length)return n("i18n.languages were undefined or empty",t.languages),!0;var a=void 0!==t.options.ignoreJSONStructure;if(!a)return i(e,t,o);return t.hasLoadedNamespace(e,{precheck:function(t,a){if(o.bindI18n&&o.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!a(t.isLanguageChangingTo,e))return!1}})},t.getDisplayName=function(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")};var a={};function n(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];"string"==typeof t[0]&&a[t[0]]||("string"==typeof t[0]&&(a[t[0]]=new Date),o.apply(void 0,t))}function i(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=t.languages[0],n=!!t.options&&t.options.fallbackLng,i=t.languages[t.languages.length-1];if("cimode"===a.toLowerCase())return!0;var r=function(e,o){var a=t.services.backendConnector.state["".concat(e,"|").concat(o)];return-1===a||2===a};return!(o.bindI18n&&o.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))&&(!!t.hasResourceBundle(a,e)||(!(t.services.backendConnector.backend&&(!t.options.resources||t.options.partialBundledLanguages))||!(!r(a,e)||n&&!r(i,e))))}},469:(e,t,o)=>{"use strict";var a=o(5318);Object.defineProperty(t,"__esModule",{value:!0}),t.withSSR=function(){return function(e){function t(t){var o=t.initialI18nStore,a=t.initialLanguage,E=(0,i.default)(t,T);return(0,s.useSSR)(o,a),(0,r.createElement)(e,(function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?l(Object(o),!0).forEach((function(t){(0,n.default)(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):l(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e})({},E))}return t.getInitialProps=(0,E.composeInitialProps)(e),t.displayName="withI18nextSSR(".concat((0,_.getDisplayName)(e),")"),t.WrappedComponent=e,t}};var n=a(o(9713)),i=a(o(6479)),r=o(7294),s=o(7377),E=o(9336),_=o(7873),T=["initialI18nStore","initialLanguage"];function l(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}},8481:(e,t,o)=>{"use strict";var a=o(5318);Object.defineProperty(t,"__esModule",{value:!0}),t.withTranslation=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(o){function a(a){var n=a.forwardedRef,_=(0,r.default)(a,T),l=(0,E.useTranslation)(e,S(S({},_),{},{keyPrefix:t.keyPrefix})),u=(0,i.default)(l,3),d=u[0],c=u[1],A=u[2],I=S(S({},_),{},{t:d,i18n:c,tReady:A});return t.withRef&&n?I.ref=n:!t.withRef&&n&&(I.forwardedRef=n),(0,s.createElement)(o,I)}a.displayName="withI18nextTranslation(".concat((0,_.getDisplayName)(o),")"),a.WrappedComponent=o;return t.withRef?(0,s.forwardRef)((function(e,t){return(0,s.createElement)(a,Object.assign({},e,{forwardedRef:t}))})):a}};var n=a(o(9713)),i=a(o(3038)),r=a(o(6479)),s=o(7294),E=o(2607),_=o(7873),T=["forwardedRef"];function l(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function S(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?l(Object(o),!0).forEach((function(t){(0,n.default)(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):l(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}},9921:(e,t)=>{"use strict";var o,a=Symbol.for("react.element"),n=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),E=Symbol.for("react.provider"),_=Symbol.for("react.context"),T=Symbol.for("react.server_context"),l=Symbol.for("react.forward_ref"),S=Symbol.for("react.suspense"),u=Symbol.for("react.suspense_list"),d=Symbol.for("react.memo"),c=Symbol.for("react.lazy"),A=Symbol.for("react.offscreen");function I(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case a:switch(e=e.type){case i:case s:case r:case S:case u:return e;default:switch(e=e&&e.$$typeof){case T:case _:case l:case c:case d:case E:return e;default:return t}}case n:return t}}}o=Symbol.for("react.module.reference"),t.ContextConsumer=_,t.ContextProvider=E,t.Element=a,t.ForwardRef=l,t.Fragment=i,t.Lazy=c,t.Memo=d,t.Portal=n,t.Profiler=s,t.StrictMode=r,t.Suspense=S,t.SuspenseList=u,t.isAsyncMode=function(){return!1},t.isConcurrentMode=function(){return!1},t.isContextConsumer=function(e){return I(e)===_},t.isContextProvider=function(e){return I(e)===E},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===a},t.isForwardRef=function(e){return I(e)===l},t.isFragment=function(e){return I(e)===i},t.isLazy=function(e){return I(e)===c},t.isMemo=function(e){return I(e)===d},t.isPortal=function(e){return I(e)===n},t.isProfiler=function(e){return I(e)===s},t.isStrictMode=function(e){return I(e)===r},t.isSuspense=function(e){return I(e)===S},t.isSuspenseList=function(e){return I(e)===u},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===i||e===s||e===r||e===S||e===u||e===A||"object"==typeof e&&null!==e&&(e.$$typeof===c||e.$$typeof===d||e.$$typeof===E||e.$$typeof===_||e.$$typeof===l||e.$$typeof===o||void 0!==e.getModuleId)},t.typeOf=I},9864:(e,t,o)=>{"use strict";e.exports=o(9921)},2408:(e,t)=>{"use strict";var o=Symbol.for("react.element"),a=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),E=Symbol.for("react.context"),_=Symbol.for("react.forward_ref"),T=Symbol.for("react.suspense"),l=Symbol.for("react.memo"),S=Symbol.for("react.lazy"),u=Symbol.iterator;var d={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},c=Object.assign,A={};function I(e,t,o){this.props=e,this.context=t,this.refs=A,this.updater=o||d}function O(){}function N(e,t,o){this.props=e,this.context=t,this.refs=A,this.updater=o||d}I.prototype.isReactComponent={},I.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},I.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},O.prototype=I.prototype;var R=N.prototype=new O;R.constructor=N,c(R,I.prototype),R.isPureReactComponent=!0;var m=Array.isArray,p=Object.prototype.hasOwnProperty,h={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};function f(e,t,a){var n,i={},r=null,s=null;if(null!=t)for(n in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(r=""+t.key),t)p.call(t,n)&&!L.hasOwnProperty(n)&&(i[n]=t[n]);var E=arguments.length-2;if(1===E)i.children=a;else if(1<E){for(var _=Array(E),T=0;T<E;T++)_[T]=arguments[T+2];i.children=_}if(e&&e.defaultProps)for(n in E=e.defaultProps)void 0===i[n]&&(i[n]=E[n]);return{$$typeof:o,type:e,key:r,ref:s,props:i,_owner:h.current}}function C(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var D=/\/+/g;function g(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))})(""+e.key):t.toString(36)}function v(e,t,n,i,r){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var E=!1;if(null===e)E=!0;else switch(s){case"string":case"number":E=!0;break;case"object":switch(e.$$typeof){case o:case a:E=!0}}if(E)return r=r(E=e),e=""===i?"."+g(E,0):i,m(r)?(n="",null!=e&&(n=e.replace(D,"$&/")+"/"),v(r,t,n,"",(function(e){return e}))):null!=r&&(C(r)&&(r=(function(e,t){return{$$typeof:o,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}})(r,n+(!r.key||E&&E.key===r.key?"":(""+r.key).replace(D,"$&/")+"/")+e)),t.push(r)),1;if(E=0,i=""===i?".":i+":",m(e))for(var _=0;_<e.length;_++){var T=i+g(s=e[_],_);E+=v(s,t,n,T,r)}else if(T=(function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=u&&e[u]||e["@@iterator"])?e:null})(e),"function"==typeof T)for(e=T.call(e),_=0;!(s=e.next()).done;)E+=v(s=s.value,t,n,T=i+g(s,_++),r);else if("object"===s)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return E}function P(e,t,o){if(null==e)return e;var a=[],n=0;return v(e,a,"","",(function(e){return t.call(o,e,n++)})),a}function y(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var B={current:null},b={transition:null},M={ReactCurrentDispatcher:B,ReactCurrentBatchConfig:b,ReactCurrentOwner:h};t.Children={map:P,forEach:function(e,t,o){P(e,(function(){t.apply(this,arguments)}),o)},count:function(e){var t=0;return P(e,(function(){t++})),t},toArray:function(e){return P(e,(function(e){return e}))||[]},only:function(e){if(!C(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=I,t.Fragment=n,t.Profiler=r,t.PureComponent=N,t.StrictMode=i,t.Suspense=T,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=M,t.cloneElement=function(e,t,a){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var n=c({},e.props),i=e.key,r=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(r=t.ref,s=h.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var E=e.type.defaultProps;for(_ in t)p.call(t,_)&&!L.hasOwnProperty(_)&&(n[_]=void 0===t[_]&&void 0!==E?E[_]:t[_])}var _=arguments.length-2;if(1===_)n.children=a;else if(1<_){E=Array(_);for(var T=0;T<_;T++)E[T]=arguments[T+2];n.children=E}return{$$typeof:o,type:e.type,key:i,ref:r,props:n,_owner:s}},t.createContext=function(e){return(e={$$typeof:E,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:s,_context:e},e.Consumer=e},t.createElement=f,t.createFactory=function(e){var t=f.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:_,render:e}},t.isValidElement=C,t.lazy=function(e){return{$$typeof:S,_payload:{_status:-1,_result:e},_init:y}},t.memo=function(e,t){return{$$typeof:l,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=b.transition;b.transition={};try{e()}finally{b.transition=t}},t.unstable_act=function(){throw Error("act(...) is not supported in production builds of React.")},t.useCallback=function(e,t){return B.current.useCallback(e,t)},t.useContext=function(e){return B.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return B.current.useDeferredValue(e)},t.useEffect=function(e,t){return B.current.useEffect(e,t)},t.useId=function(){return B.current.useId()},t.useImperativeHandle=function(e,t,o){return B.current.useImperativeHandle(e,t,o)},t.useInsertionEffect=function(e,t){return B.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return B.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return B.current.useMemo(e,t)},t.useReducer=function(e,t,o){return B.current.useReducer(e,t,o)},t.useRef=function(e){return B.current.useRef(e)},t.useState=function(e){return B.current.useState(e)},t.useSyncExternalStore=function(e,t,o){return B.current.useSyncExternalStore(e,t,o)},t.useTransition=function(){return B.current.useTransition()},t.version="18.2.0"},7294:(e,t,o)=>{"use strict";e.exports=o(2408)},5666:e=>{var t=(function(e){"use strict";var t,o=Object.prototype,a=o.hasOwnProperty,n=Object.defineProperty||function(e,t,o){e[t]=o.value},i="function"==typeof Symbol?Symbol:{},r=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",E=i.toStringTag||"@@toStringTag";function _(e,t,o){return Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{_({},"")}catch(e){_=function(e,t,o){return e[t]=o}}function T(e,t,o,a){var i=t&&t.prototype instanceof A?t:A,r=Object.create(i.prototype),s=new v(a||[]);return n(r,"_invoke",{value:f(e,o,s)}),r}function l(e,t,o){try{return{type:"normal",arg:e.call(t,o)}}catch(e){return{type:"throw",arg:e}}}e.wrap=T;var S="suspendedStart",u="executing",d="completed",c={};function A(){}function I(){}function O(){}var N={};_(N,r,(function(){return this}));var R=Object.getPrototypeOf,m=R&&R(R(P([])));m&&m!==o&&a.call(m,r)&&(N=m);var p=O.prototype=A.prototype=Object.create(N);function h(e){["next","throw","return"].forEach((function(t){_(e,t,(function(e){return this._invoke(t,e)}))}))}function L(e,t){function o(n,i,r,s){var E=l(e[n],e,i);if("throw"!==E.type){var _=E.arg,T=_.value;return T&&"object"==typeof T&&a.call(T,"__await")?t.resolve(T.__await).then((function(e){o("next",e,r,s)}),(function(e){o("throw",e,r,s)})):t.resolve(T).then((function(e){_.value=e,r(_)}),(function(e){return o("throw",e,r,s)}))}s(E.arg)}var i;n(this,"_invoke",{value:function(e,a){function n(){return new t((function(t,n){o(e,a,t,n)}))}return i=i?i.then(n,n):n()}})}function f(e,t,o){var a=S;return function(n,i){if(a===u)throw new Error("Generator is already running");if(a===d){if("throw"===n)throw i;return y()}for(o.method=n,o.arg=i;;){var r=o.delegate;if(r){var s=C(r,o);if(s){if(s===c)continue;return s}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(a===S)throw a=d,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);a=u;var E=l(e,t,o);if("normal"===E.type){if(a=o.done?d:"suspendedYield",E.arg===c)continue;return{value:E.arg,done:o.done}}"throw"===E.type&&(a=d,o.method="throw",o.arg=E.arg)}}}function C(e,o){var a=o.method,n=e.iterator[a];if(n===t)return o.delegate=null,"throw"===a&&e.iterator.return&&(o.method="return",o.arg=t,C(e,o),"throw"===o.method)||"return"!==a&&(o.method="throw",o.arg=new TypeError("The iterator does not provide a '"+a+"' method")),c;var i=l(n,e.iterator,o.arg);if("throw"===i.type)return o.method="throw",o.arg=i.arg,o.delegate=null,c;var r=i.arg;return r?r.done?(o[e.resultName]=r.value,o.next=e.nextLoc,"return"!==o.method&&(o.method="next",o.arg=t),o.delegate=null,c):r:(o.method="throw",o.arg=new TypeError("iterator result is not an object"),o.delegate=null,c)}function D(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function g(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function v(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(D,this),this.reset(!0)}function P(e){if(e){var o=e[r];if(o)return o.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function o(){for(;++n<e.length;)if(a.call(e,n))return o.value=e[n],o.done=!1,o;return o.value=t,o.done=!0,o};return i.next=i}}return{next:y}}function y(){return{value:t,done:!0}}return I.prototype=O,n(p,"constructor",{value:O,configurable:!0}),n(O,"constructor",{value:I,configurable:!0}),I.displayName=_(O,E,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===I||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,O):(e.__proto__=O,_(e,E,"GeneratorFunction")),e.prototype=Object.create(p),e},e.awrap=function(e){return{__await:e}},h(L.prototype),_(L.prototype,s,(function(){return this})),e.AsyncIterator=L,e.async=function(t,o,a,n,i){void 0===i&&(i=Promise);var r=new L(T(t,o,a,n),i);return e.isGeneratorFunction(o)?r:r.next().then((function(e){return e.done?e.value:r.next()}))},h(p),_(p,E,"Generator"),_(p,r,(function(){return this})),_(p,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),o=[];for(var a in t)o.push(a);return o.reverse(),function e(){for(;o.length;){var a=o.pop();if(a in t)return e.value=a,e.done=!1,e}return e.done=!0,e}},e.values=P,v.prototype={constructor:v,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(g),!e)for(var o in this)"t"===o.charAt(0)&&a.call(this,o)&&!isNaN(+o.slice(1))&&(this[o]=t)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var o=this;function n(a,n){return s.type="throw",s.arg=e,o.next=a,n&&(o.method="next",o.arg=t),!!n}for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i],s=r.completion;if("root"===r.tryLoc)return n("end");if(r.tryLoc<=this.prev){var E=a.call(r,"catchLoc"),_=a.call(r,"finallyLoc");if(E&&_){if(this.prev<r.catchLoc)return n(r.catchLoc,!0);if(this.prev<r.finallyLoc)return n(r.finallyLoc)}else if(E){if(this.prev<r.catchLoc)return n(r.catchLoc,!0)}else{if(!_)throw new Error("try statement without catch or finally");if(this.prev<r.finallyLoc)return n(r.finallyLoc)}}}},abrupt:function(e,t){for(var o=this.tryEntries.length-1;o>=0;--o){var n=this.tryEntries[o];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var i=n;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var r=i?i.completion:{};return r.type=e,r.arg=t,i?(this.method="next",this.next=i.finallyLoc,c):this.complete(r)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),c},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var o=this.tryEntries[t];if(o.finallyLoc===e)return this.complete(o.completion,o.afterLoc),g(o),c}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var o=this.tryEntries[t];if(o.tryLoc===e){var a=o.completion;if("throw"===a.type){var n=a.arg;g(o)}return n}}throw new Error("illegal catch attempt")},delegateYield:function(e,o,a){return this.delegate={iterator:P(e),resultName:o,nextLoc:a},"next"===this.method&&(this.arg=t),c}},e})(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},53:(e,t)=>{"use strict";function o(e,t){var o=e.length;e.push(t);e:for(;0<o;){var a=o-1>>>1,n=e[a];if(!(0<i(n,t)))break e;e[a]=t,e[o]=n,o=a}}function a(e){return 0===e.length?null:e[0]}function n(e){if(0===e.length)return null;var t=e[0],o=e.pop();if(o!==t){e[0]=o;e:for(var a=0,n=e.length,r=n>>>1;a<r;){var s=2*(a+1)-1,E=e[s],_=s+1,T=e[_];if(0>i(E,o))_<n&&0>i(T,E)?(e[a]=T,e[_]=o,a=_):(e[a]=E,e[s]=o,a=s);else{if(!(_<n&&0>i(T,o)))break e;e[a]=T,e[_]=o,a=_}}}return t}function i(e,t){var o=e.sortIndex-t.sortIndex;return 0!==o?o:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var r=performance;t.unstable_now=function(){return r.now()}}else{var s=Date,E=s.now();t.unstable_now=function(){return s.now()-E}}var _=[],T=[],l=1,S=null,u=3,d=!1,c=!1,A=!1,I="function"==typeof setTimeout?setTimeout:null,O="function"==typeof clearTimeout?clearTimeout:null,N="undefined"!=typeof setImmediate?setImmediate:null;function R(e){for(var t=a(T);null!==t;){if(null===t.callback)n(T);else{if(!(t.startTime<=e))break;n(T),t.sortIndex=t.expirationTime,o(_,t)}t=a(T)}}function m(e){if(A=!1,R(e),!c)if(null!==a(_))c=!0,b(p);else{var t=a(T);null!==t&&M(m,t.startTime-e)}}function p(e,o){c=!1,A&&(A=!1,O(C),C=-1),d=!0;var i=u;try{for(R(o),S=a(_);null!==S&&(!(S.expirationTime>o)||e&&!v());){var r=S.callback;if("function"==typeof r){S.callback=null,u=S.priorityLevel;var s=r(S.expirationTime<=o);o=t.unstable_now(),"function"==typeof s?S.callback=s:S===a(_)&&n(_),R(o)}else n(_);S=a(_)}if(null!==S)var E=!0;else{var l=a(T);null!==l&&M(m,l.startTime-o),E=!1}return E}finally{S=null,u=i,d=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var h,L=!1,f=null,C=-1,D=5,g=-1;function v(){return!(t.unstable_now()-g<D)}function P(){if(null!==f){var e=t.unstable_now();g=e;var o=!0;try{o=f(!0,e)}finally{o?h():(L=!1,f=null)}}else L=!1}if("function"==typeof N)h=function(){N(P)};else if("undefined"!=typeof MessageChannel){var y=new MessageChannel,B=y.port2;y.port1.onmessage=P,h=function(){B.postMessage(null)}}else h=function(){I(P,0)};function b(e){f=e,L||(L=!0,h())}function M(e,o){C=I((function(){e(t.unstable_now())}),o)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){c||d||(c=!0,b(p))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):D=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return u},t.unstable_getFirstCallbackNode=function(){return a(_)},t.unstable_next=function(e){switch(u){case 1:case 2:case 3:var t=3;break;default:t=u}var o=u;u=t;try{return e()}finally{u=o}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var o=u;u=e;try{return t()}finally{u=o}},t.unstable_scheduleCallback=function(e,n,i){var r=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?r+i:r:i=r,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:l++,callback:n,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>r?(e.sortIndex=i,o(T,e),null===a(_)&&e===a(T)&&(A?(O(C),C=-1):A=!0,M(m,i-r))):(e.sortIndex=s,o(_,e),c||d||(c=!0,b(p))),e},t.unstable_shouldYield=v,t.unstable_wrapCallback=function(e){var t=u;return function(){var o=u;u=t;try{return e.apply(this,arguments)}finally{u=o}}}},3840:(e,t,o)=>{"use strict";e.exports=o(53)},1110:(e,t,o)=>{"use strict";var a=o(9594),n=Array.prototype.concat,i=Array.prototype.slice,r=e.exports=function(e){for(var t=[],o=0,r=e.length;o<r;o++){var s=e[o];a(s)?t=n.call(t,i.call(s)):t.push(s)}return t};r.wrap=function(e){return function(){return e(r(arguments))}}},9594:e=>{e.exports=function(e){return!(!e||"string"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&"String"!==e.constructor.name))}},2341:()=>{!(function(){if(void 0!==window.navigate)return;const e={37:"left",38:"up",39:"right",40:"down"};let t=null,o=null;function a(){window.navigate=n,window.Element.prototype.spatialNavigationSearch=_,window.Element.prototype.focusableAreas=u,window.Element.prototype.getSpatialNavigationContainer=S,window.CSS&&CSS.registerProperty&&(""===window.getComputedStyle(document.documentElement).getPropertyValue("--spatial-navigation-contain")&&CSS.registerProperty({name:"--spatial-navigation-contain",syntax:"auto | contain",inherits:!1,initialValue:"auto"}),""===window.getComputedStyle(document.documentElement).getPropertyValue("--spatial-navigation-action")&&CSS.registerProperty({name:"--spatial-navigation-action",syntax:"auto | focus | scroll",inherits:!1,initialValue:"auto"}),""===window.getComputedStyle(document.documentElement).getPropertyValue("--spatial-navigation-function")&&CSS.registerProperty({name:"--spatial-navigation-function",syntax:"normal | euclidean | grid",inherits:!0,initialValue:"normal"})),window.addEventListener("keydown",(a=>{const i=parent&&parent.__spatialNavigation__.keyMode||window.__spatialNavigation__.keyMode,r=document.activeElement,s=e[a.keyCode];if(9===a.keyCode&&(o=null),!(!i||"NONE"===i||"SHIFTARROW"===i&&!a.shiftKey||"ARROW"===i&&a.shiftKey||a.defaultPrevented||a.spatialNavigationPrevented)){let i={left:!0,up:!0,right:!0,down:!0};"INPUT"!==r.nodeName&&"TEXTAREA"!==r.nodeName||(i=(function(t){const o=["email","date","month","number","time","week"],a=["password","text","search","tel","url",null],n=document.activeElement,i=n.selectionStart,r=n.selectionEnd,s={left:!1,up:!1,right:!1,down:!1},E=e[t.keyCode];if(void 0===E)return s;(!o.includes(n.getAttribute("type"))||"up"!==E&&"down"!==E)&&(a.includes(n.getAttribute("type"))||"TEXTAREA"===n.nodeName)?i===r&&(0===i&&(s.left=!0,s.up=!0),r===n.value.length&&(s.right=!0,s.down=!0)):s[E]=!0;return s})(a)),i[s]&&(a.preventDefault(),t=new Map,n(s),t=null,o=null)}}))}function n(e){let t=(function(){let e=document.activeElement;e&&(e!==document.body||document.querySelector(":focus"))||(e=document);return e})(),a=null;o&&(a=document.elementFromPoint(o.x,o.y),null===a&&(a=document.body),C(a)&&!N(a)?o=null:t=N(a)?a:a.getSpatialNavigationContainer()),t!==document&&t!==document.documentElement||(t=document.body||document.documentElement);let n=null;if((N(t)||"BODY"===t.nodeName)&&"INPUT"!==t.nodeName){n=t,"IFRAME"===t.nodeName&&(t=t.contentDocument.documentElement);let o=null;if("scroll"===A(t)){if(r(t,e))return}else if("focus"===A(t)){if(o=t.spatialNavigationSearch(e,{container:t,candidates:s(t,{mode:"all"}),inside:!0}),i(o,e))return}else if("auto"===A(t)&&(o=t.spatialNavigationSearch(e,{container:t,inside:!0}),i(o,e)||r(t,e)))return}n=n||t.getSpatialNavigationContainer();let E=n.parentElement?n.getSpatialNavigationContainer():null;if(E||window.location===window.parent.location||(E=window.parent.document.documentElement),"scroll"===A(t)){if(r(n,e))return}else"focus"===A(t)?I(t,n,E,e,"all"):"auto"===A(t)&&I(t,n,E,e,"visible")}function i(e,t){if(e){const o=e.getSpatialNavigationContainer(),a=window.getComputedStyle(o,null);a.getPropertyValue("overflow-x"),a.getPropertyValue("overflow-y");return p(o,t)&&(function(e){const t=k(e),o=k(e.getSpatialNavigationContainer());t.left<o.left||t.right>o.right||t.top<o.top||(t.bottom,o.bottom)})(e),e.scrollIntoView(),d("beforefocus",e,null,t)?(e.focus(),!0):!0}return!1}function r(e,t){return p(e,t)&&!f(e,t)?(O(e,t),!0):!e.parentElement&&!L(e,t)&&(O(document.documentElement,t),!0)}function s(e,t={mode:"visible"}){let o=[];if(e.childElementCount>0){e.parentElement||(e=e.getElementsByTagName("body")[0]||document.body);const t=e.children;for(const e of t)R(e)?o.push(e):C(e)?(o.push(e),!N(e)&&e.childElementCount&&(o=o.concat(s(e,{mode:"all"})))):e.childElementCount&&(o=o.concat(s(e,{mode:"all"})))}return"all"===t.mode?o:o.filter(D)}function E(e,t,o,a){const n=e;return a=a||n.getSpatialNavigationContainer(),T(n,o=!o||o.length<=0?s(a):o,t,a)}function _(e,t){const a=this;let n,i=[],r=[];t||(t={});const _=t.container||a.getSpatialNavigationContainer(),T=t.candidates&&t.candidates.length>0?t.candidates.filter((e=>_.contains(e))):s(_),S=t.inside||!1;if(T&&T.length>0){if(T.forEach((e=>{(a.contains(e)&&a!==e?i:r).push(e)})),t.candidates&&t.candidates.length>0||0!==i.length||(i=s(a)),r.length>0&&(r=E(a,e,r,_)),S&&(N(a)||"BODY"===a.nodeName)&&"INPUT"!==a.nodeName&&(n=(function(e,t,a){return l(e,t,a,o?b:M)})(a,i,e)),n=n||(function(e,t,o){const a=getComputedStyle(e).getPropertyValue("--spatial-navigation-function"),n=k(e);let i,r;switch(a){case"grid":r=t.filter((e=>B(n,k(e),o))),r.length>0&&(t=r),i=G;break;case"euclidean":i=W;break;default:i=U}return l(e,t,o,i)})(a,r,e),n&&R(n)){const t=s(n,{mode:"all"}),o=t.length>0?a.spatialNavigationSearch(e,{candidates:t,container:n}):null;o?n=o:C(n)||(T.splice(T.indexOf(n),1),n=T.length?a.spatialNavigationSearch(e,{candidates:T,container:_}):null)}return n}return null}function T(e,t,o,a){const n=e.getSpatialNavigationContainer();let i;return void 0===o?t:(i=n.parentElement&&a!==n&&!D(e)?k(n):k(e),!N(e)&&"BODY"!==e.nodeName||"INPUT"===e.nodeName?t.filter((t=>{const n=k(t),r="IFRAME"===t.nodeName?t.contentDocument.body:null;return a.contains(t)&&t!==e&&r!==e&&v(n,i,o)})):t.filter((t=>{const n=k(t);return a.contains(t)&&(e.contains(t)&&(function(e,t){const o=e.left<=t.right&&e.right>=t.right,a=e.left<=t.left&&e.right>=t.left,n=e.top<=t.top&&e.bottom>=t.top,i=e.top<=t.bottom&&e.bottom>=t.bottom;return(o||a)&&(n||i)})(i,n)&&t!==e||v(n,i,o))})))}function l(e,t,o,a){let n=null;window.location===window.parent.location||"BODY"!==e.nodeName&&"HTML"!==e.nodeName?n=e.getBoundingClientRect():(n=window.frameElement.getBoundingClientRect(),n.x=0,n.y=0);let i=Number.POSITIVE_INFINITY,r=[];if(t)for(let e=0;e<t.length;e++){const s=a(n,k(t[e]),o);s<i?(i=s,r=[t[e]]):s===i&&r.push(t[e])}return 0===r.length?null:r.length>1&&a===G?l(e,r,o,W):r[0]}function S(){let e=this;do{if(!e.parentElement){e=window.location!==window.parent.location?window.parent.document.documentElement:window.document.documentElement;break}e=e.parentElement}while(!N(e));return e}function u(e={mode:"visible"}){const t=this.parentElement?this:document.body,o=Array.prototype.filter.call(t.getElementsByTagName("*"),C);return"all"===e.mode?o:o.filter(D)}function d(e,t,o,a){if(["beforefocus","notarget"].includes(e)){const n=new CustomEvent("nav"+e,{bubbles:!0,cancelable:!0,detail:{causedTarget:o,dir:a}});return t.dispatchEvent(n)}}function c(e,t){return window.getComputedStyle(e).getPropertyValue(`--${t}`).trim()}function A(e){return c(e,"spatial-navigation-action")||"auto"}function I(e,t,o,a,n){let E={candidates:s(t,{mode:n}),container:t};for(;o;){if(i(e.spatialNavigationSearch(a,E),a))return;if("visible"===n&&r(t,a))return;if(!d("notarget",t,e,a))return;if(t===document||t===document.documentElement){if(window.location!==window.parent.location){if(e=window.frameElement,!(t=window.parent.document.documentElement).parentElement){o=null;break}o=t.getSpatialNavigationContainer()}}else{if(E={candidates:s(t=o,{mode:n}),container:t},!t.parentElement){o=null;break}o=t.getSpatialNavigationContainer()}}E={candidates:s(t,{mode:n}),container:t},!o&&t&&i(e.spatialNavigationSearch(a,E),a)||d("notarget",E.container,e,a)&&("auto"!==A(t)||"visible"!==n||r(t,a))}function O(e,t,o=0){if(e)switch(t){case"left":e.scrollLeft-=40+o;break;case"right":e.scrollLeft+=40+o;break;case"up":e.scrollTop-=40+o;break;case"down":e.scrollTop+=40+o}}function N(e){return!e.parentElement||"IFRAME"===e.nodeName||m(e)||(function(e){return"contain"===c(e,"spatial-navigation-contain")})(e)}function R(e){return"delegable"===c(e,"spatial-navigation-contain")}function m(e){const t=window.getComputedStyle(e,null),o=t.getPropertyValue("overflow-x"),a=t.getPropertyValue("overflow-y");return!!("visible"!==o&&"clip"!==o&&h(e,"left")||"visible"!==a&&"clip"!==a&&h(e,"down"))}function p(e,t){if(e&&"object"==typeof e){if(t&&"string"==typeof t){if(h(e,t)){const o=window.getComputedStyle(e,null),a=o.getPropertyValue("overflow-x"),n=o.getPropertyValue("overflow-y");switch(t){case"left":case"right":return"visible"!==a&&"clip"!==a&&"hidden"!==a;case"up":case"down":return"visible"!==n&&"clip"!==n&&"hidden"!==n}}return!1}return"HTML"===e.nodeName||"BODY"===e.nodeName||m(e)&&h(e)}}function h(e,t){if(e&&"object"==typeof e){if(!t||"string"!=typeof t)return e.scrollWidth>e.clientWidth||e.scrollHeight>e.clientHeight;switch(t){case"left":case"right":return e.scrollWidth>e.clientWidth;case"up":case"down":return e.scrollHeight>e.clientHeight}return!1}}function L(e,t){let o=!1;switch(t){case"left":o=0===window.scrollX;break;case"right":o=e.scrollWidth-e.scrollLeft-e.clientWidth==0;break;case"up":o=0===window.scrollY;break;case"down":o=e.scrollHeight-e.scrollTop-e.clientHeight==0}return o}function f(e,t){if(p(e,t)){const o=e.scrollTop,a=e.scrollLeft,n=e.scrollHeight-e.clientHeight,i=e.scrollWidth-e.clientWidth;switch(t){case"left":return 0===a;case"right":return Math.abs(a-i)<=1;case"up":return 0===o;case"down":return Math.abs(o-n)<=1}}return!1}function C(e){return!(e.tabIndex<0||(function(e){return"A"===e.tagName&&null===e.getAttribute("href")&&null===e.getAttribute("tabIndex")})(e)||(function(e){return!!["BUTTON","INPUT","SELECT","TEXTAREA","OPTGROUP","OPTION","FIELDSET"].includes(e.tagName)&&e.disabled})(e)||(function(e){return e.inert&&!e.ownerDocument.documentElement.inert})(e)||!(function(e){return!!g(e.parentElement)&&!(!g(e)||0===e.style.opacity||!("0px"!==e.style.width&&0!==e.style.width||"0px"!==e.style.height&&0!==e.style.height))})(e))&&(!!(!e.parentElement||p(e)&&h(e)||e.tabIndex>=0)||void 0)}function D(e){return!e.parentElement||g(e)&&(function(e){const t=k(e);if("IFRAME"!==e.nodeName&&(t.top<0||t.left<0||t.top>window.innerHeight||t.left>window.innerWidth))return!1;let o=parseInt(e.offsetWidth)/10,a=parseInt(e.offsetHeight)/10;o=isNaN(o)?1:o,a=isNaN(a)?1:a;const n={middle:[(t.left+t.right)/2,(t.top+t.bottom)/2],leftTop:[t.left+o,t.top+a],rightBottom:[t.right-o,t.bottom-a]};for(const t in n){const o=document.elementFromPoint(...n[t]);if(e===o||e.contains(o))return!0}return!1})(e)}function g(e){const t=window.getComputedStyle(e,null),o=t.getPropertyValue("visibility");return"none"!==t.getPropertyValue("display")&&!["hidden","collapse"].includes(o)}function v(e,t,o){switch(o){case"left":return P(t,e);case"right":return P(e,t);case"up":return y(t,e);case"down":return y(e,t);default:return!1}}function P(e,t){return e.left>=t.right||e.left>=t.left&&e.right>t.right&&e.bottom>t.top&&e.top<t.bottom}function y(e,t){return e.top>=t.bottom||e.top>=t.top&&e.bottom>t.bottom&&e.left<t.right&&e.right>t.left}function B(e,t,o){switch(o){case"left":case"right":return e.bottom>t.top&&e.top<t.bottom;case"up":case"down":return e.right>t.left&&e.left<t.right;default:return!1}}function b(e,t,a){const n=F(a,o,t),i=Math.abs(n.entryPoint.x-n.exitPoint.x),r=Math.abs(n.entryPoint.y-n.exitPoint.y);return Math.sqrt(Math.pow(i,2)+Math.pow(r,2))}function M(e,t,o){const a={left:"right",right:"left",up:"bottom",down:"top"}[o];return Math.abs(e[a]-t[a])}function U(e,t,o){let a=0,n=0;const i=F(o,e,t),r=Math.abs(i.entryPoint.x-i.exitPoint.x),s=Math.abs(i.entryPoint.y-i.exitPoint.y),E=Math.sqrt(Math.pow(r,2)+Math.pow(s,2));let _,T;const l=(function(e,t){const o={width:0,height:0,area:0},a=[Math.max(e.left,t.left),Math.max(e.top,t.top)],n=[Math.min(e.right,t.right),Math.min(e.bottom,t.bottom)];o.width=Math.abs(a[0]-n[0]),o.height=Math.abs(a[1]-n[1]),a[0]>=n[0]||a[1]>=n[1]||(o.area=Math.sqrt(o.width*o.height));return o})(e,t),S=l.area;switch(o){case"left":case"right":B(e,t,o)?n=Math.min(l.height/e.height,1):a=e.height/2,_=30*(s+a),T=5*n;break;case"up":case"down":B(e,t,o)?n=Math.min(l.width/e.width,1):a=e.width/2,_=2*(r+a),T=5*n;break;default:_=0,T=0}return E+_-T-S}function W(e,t,o){const a=F(o,e,t),n=Math.abs(a.entryPoint.x-a.exitPoint.x),i=Math.abs(a.entryPoint.y-a.exitPoint.y);return Math.sqrt(Math.pow(n,2)+Math.pow(i,2))}function G(e,t,o){const a=F(o,e,t);return"left"===o||"right"===o?Math.abs(a.entryPoint.x-a.exitPoint.x):Math.abs(a.entryPoint.y-a.exitPoint.y)}function F(e="down",t,a){const n={entryPoint:{x:0,y:0},exitPoint:{x:0,y:0}};if(o){switch(n.exitPoint=t,e){case"left":n.entryPoint.x=a.right;break;case"up":n.entryPoint.y=a.bottom;break;case"right":n.entryPoint.x=a.left;break;case"down":n.entryPoint.y=a.top}switch(e){case"left":case"right":o.y<=a.top?n.entryPoint.y=a.top:o.y<a.bottom?n.entryPoint.y=o.y:n.entryPoint.y=a.bottom;break;case"up":case"down":o.x<=a.left?n.entryPoint.x=a.left:o.x<a.right?n.entryPoint.x=o.x:n.entryPoint.x=a.right}}else{switch(e){case"left":n.exitPoint.x=t.left,n.entryPoint.x=a.right<t.left?a.right:t.left;break;case"up":n.exitPoint.y=t.top,n.entryPoint.y=a.bottom<t.top?a.bottom:t.top;break;case"right":n.exitPoint.x=t.right,n.entryPoint.x=a.left>t.right?a.left:t.right;break;case"down":n.exitPoint.y=t.bottom,n.entryPoint.y=a.top>t.bottom?a.top:t.bottom}switch(e){case"left":case"right":y(t,a)?(n.exitPoint.y=t.top,n.entryPoint.y=a.bottom<t.top?a.bottom:t.top):y(a,t)?(n.exitPoint.y=t.bottom,n.entryPoint.y=a.top>t.bottom?a.top:t.bottom):(n.exitPoint.y=Math.max(t.top,a.top),n.entryPoint.y=n.exitPoint.y);break;case"up":case"down":P(t,a)?(n.exitPoint.x=t.left,n.entryPoint.x=a.right<t.left?a.right:t.left):P(a,t)?(n.exitPoint.x=t.right,n.entryPoint.x=a.left>t.right?a.left:t.right):(n.exitPoint.x=Math.max(t.left,a.left),n.entryPoint.x=n.exitPoint.x)}}return n}function k(e){let o=t&&t.get(e);if(!o){const a=e.getBoundingClientRect();o={top:Number(a.top.toFixed(2)),right:Number(a.right.toFixed(2)),bottom:Number(a.bottom.toFixed(2)),left:Number(a.left.toFixed(2)),width:Number(a.width.toFixed(2)),height:Number(a.height.toFixed(2))},t&&t.set(e,o)}return o}function w(e){const t=window.__spatialNavigation__&&window.__spatialNavigation__.keyMode;window.__spatialNavigation__=!1===e?H():Object.assign(H(),(function(){function e(e,t){return p(e,t)&&!f(e,t)||!e.parentElement&&!L(e,t)}function t(t,o,a,n){let i=o,r=null;if(i!==document&&i!==document.documentElement||(i=document.body||document.documentElement),(N(i)||"BODY"===i.nodeName)&&"INPUT"!==i.nodeName){"IFRAME"===i.nodeName&&(i=i.contentDocument.body);const o=s(i,n);if(Array.isArray(o)&&o.length>0)return t?E(i,a,o):i.spatialNavigationSearch(a,{candidates:o});if(e(i,a))return t?[]:i}let _=i.getSpatialNavigationContainer(),l=_.parentElement?_.getSpatialNavigationContainer():null;for(l||window.location===window.parent.location||(l=window.parent.document.documentElement);l;){const o=T(i,s(_,n),a,_);if(Array.isArray(o)&&o.length>0){if(r=i.spatialNavigationSearch(a,{candidates:o,container:_}),r)return t?o:r}else{if(e(_,a))return t?[]:i;if(_===document||_===document.documentElement){if(_=window.document.documentElement,window.location!==window.parent.location){if(i=window.frameElement,_=window.parent.document.documentElement,!_.parentElement){l=null;break}l=_.getSpatialNavigationContainer()}}else{if(C(_)&&(i=_),_=l,!_.parentElement){l=null;break}l=_.getSpatialNavigationContainer()}}}if(!l&&_){const e=T(i,s(_,n),a,_);if(Array.isArray(e)&&e.length>0&&(r=i.spatialNavigationSearch(a,{candidates:e,container:_}),r))return t?e:r}if(e(_,a))return r=i,r}return{isContainer:N,isScrollContainer:m,findCandidates:t.bind(null,!0),findNextTarget:t.bind(null,!1),getDistanceFromTarget:(e,t,o)=>(N(e)||"BODY"===e.nodeName)&&"INPUT"!==e.nodeName&&s(e).includes(t)?M(k(e),k(t),o):U(k(e),k(t),o)}})()),window.__spatialNavigation__.keyMode=t,Object.seal(window.__spatialNavigation__)}function H(){return{enableExperimentalAPIs:w,get keyMode(){return this._keymode?this._keymode:"ARROW"},set keyMode(e){this._keymode=["SHIFTARROW","ARROW","NONE"].includes(e)?e:"ARROW"},setStartingPoint:function(e,t){o=e&&t?{x:e,y:t}:null}}}window.addEventListener("load",(()=>{a(),w(!1)}))})()},6567:(e,t,o)=>{e.exports=function(){return{"ar-AR":o(5929),"id-ID":o(1472),"bg-BG":o(7726),"ca-CA":o(8569),"da-DK":o(4806),"de-DE":o(1145),"el-GR":o(5158),"en-US":o(3865),"eo-EO":o(3989),"es-ES":o(9320),"eu-ES":o(3236),"fa-IR":o(2381),"fr-FR":o(5829),"he-IL":o(1525),"hi-IN":o(4018),"hr-HR":o(487),"hu-HU":o(5657),"it-IT":o(2948),"mk-MK":o(9163),"my-BM":o(6735),"nb-NO":o(3778),"nl-NL":o(8472),"nn-NO":o(8159),"pl-PL":o(5517),"pt-BR":o(2012),"pt-PT":o(5857),"ru-RU":o(6687),"sv-SE":o(4662),"sr-RS":o(2963),"tr-TR":o(3191),"zh-CN":o(8714),"zh-HK":o(9542),"sl-SL":o(6650),"cs-CZ":o(2840),"te-IN":o(9892),"zh-TW":o(8097)}},e.exports.all=["ar-AR","id-ID","bg-BG","ca-CA","da-DK","de-DE","el-GR","en-US","eo-EO","es-ES","eu-ES","fa-IR","fr-FR","he-IL","hi-IN","hr-HR","hu-HU","it-IT","mk-MK","my-BM","nb-NO","nl-NL","nn-NO","pl-PL","pt-BR","pt-PT","ru-RU","sv-SE","sr-RS","tr-TR","zh-CN","zh-HK","sl-SL","cs-CZ","te-IN","zh-TW"]},5017:(e,t,o)=>{var a=o(883);t.encode=a.encode,t.decode=a.decode},883:(e,t,o)=>{"use strict";var a=o(8764).Buffer,n=[255,255,26,27,28,29,30,31,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255];t.encode=function(e){a.isBuffer(e)||(e=new a(e));for(var t,o,n=0,i=0,r=0,s=0,E=new a(8*(t=e,o=Math.floor(t.length/5),t.length%5==0?o:o+1));n<e.length;){var _=e[n];r>3?(s=(s=_&255>>r)<<(r=(r+5)%8)|(n+1<e.length?e[n+1]:0)>>8-r,n++):(s=_>>8-(r+5)&31,0===(r=(r+5)%8)&&n++),E[i]="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".charCodeAt(s),i++}for(n=i;n<E.length;n++)E[n]=61;return E},t.decode=function(e){var t,o=0,i=0,r=0;a.isBuffer(e)||(e=new a(e));for(var s=new a(Math.ceil(5*e.length/8)),E=0;E<e.length&&61!==e[E];E++){var _=e[E]-48;if(!(_<n.length))throw new Error("Invalid input - it is not base32 encoded string");i=n[_],o<=3?0===(o=(o+5)%8)?(t|=i,s[r]=t,r++,t=0):t|=255&i<<8-o:(t|=255&i>>>(o=(o+5)%8),s[r]=t,r++,t=255&i<<8-o)}return s.slice(0,r)}},8575:(e,t,o)=>{"use strict";var a=o(4971),n=o(2502);function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=N,t.resolve=function(e,t){return N(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?N(e,!1,!0).resolveObject(t):t},t.format=function(e){n.isString(e)&&(e=N(e));return e instanceof i?e.format():i.prototype.format.call(e)},t.Url=i;var r=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,E=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,_=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),T=["'"].concat(_),l=["%","/","?",";","#"].concat(T),S=["/","?","#"],u=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,c={javascript:!0,"javascript:":!0},A={javascript:!0,"javascript:":!0},I={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},O=o(7673);function N(e,t,o){if(e&&n.isObject(e)&&e instanceof i)return e;var a=new i;return a.parse(e,t,o),a}i.prototype.parse=function(e,t,o){if(!n.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var i=e.indexOf("?"),s=-1!==i&&i<e.indexOf("#")?"?":"#",_=e.split(s);_[0]=_[0].replace(/\\/g,"/");var N=e=_.join(s);if(N=N.trim(),!o&&1===e.split("#").length){var R=E.exec(N);if(R)return this.path=N,this.href=N,this.pathname=R[1],R[2]?(this.search=R[2],this.query=t?O.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var m=r.exec(N);if(m){var p=(m=m[0]).toLowerCase();this.protocol=p,N=N.substr(m.length)}if(o||m||N.match(/^\/\/[^@\/]+@[^@\/]+/)){var h="//"===N.substr(0,2);!h||m&&A[m]||(N=N.substr(2),this.slashes=!0)}if(!A[m]&&(h||m&&!I[m])){for(var L,f,C=-1,D=0;D<S.length;D++){-1!==(g=N.indexOf(S[D]))&&(-1===C||g<C)&&(C=g)}-1!==(f=-1===C?N.lastIndexOf("@"):N.lastIndexOf("@",C))&&(L=N.slice(0,f),N=N.slice(f+1),this.auth=decodeURIComponent(L)),C=-1;for(D=0;D<l.length;D++){var g;-1!==(g=N.indexOf(l[D]))&&(-1===C||g<C)&&(C=g)}-1===C&&(C=N.length),this.host=N.slice(0,C),N=N.slice(C),this.parseHost(),this.hostname=this.hostname||"";var v="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!v)for(var P=this.hostname.split(/\./),y=(D=0,P.length);D<y;D++){var B=P[D];if(B&&!B.match(u)){for(var b="",M=0,U=B.length;M<U;M++)B.charCodeAt(M)>127?b+="x":b+=B[M];if(!b.match(u)){var W=P.slice(0,D),G=P.slice(D+1),F=B.match(d);F&&(W.push(F[1]),G.unshift(F[2])),G.length&&(N="/"+G.join(".")+N),this.hostname=W.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),v||(this.hostname=a.toASCII(this.hostname));var k=this.port?":"+this.port:"",w=this.hostname||"";this.host=w+k,this.href+=this.host,v&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==N[0]&&(N="/"+N))}if(!c[p])for(D=0,y=T.length;D<y;D++){var H=T[D];if(-1!==N.indexOf(H)){var V=encodeURIComponent(H);V===H&&(V=escape(H)),N=N.split(H).join(V)}}var Y=N.indexOf("#");-1!==Y&&(this.hash=N.substr(Y),N=N.slice(0,Y));var z=N.indexOf("?");if(-1!==z?(this.search=N.substr(z),this.query=N.substr(z+1),t&&(this.query=O.parse(this.query)),N=N.slice(0,z)):t&&(this.search="",this.query={}),N&&(this.pathname=N),I[p]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){k=this.pathname||"";var x=this.search||"";this.path=k+x}return this.href=this.format(),this},i.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",o=this.pathname||"",a=this.hash||"",i=!1,r="";this.host?i=e+this.host:this.hostname&&(i=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&n.isObject(this.query)&&Object.keys(this.query).length&&(r=O.stringify(this.query));var s=this.search||r&&"?"+r||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||I[t])&&!1!==i?(i="//"+(i||""),o&&"/"!==o.charAt(0)&&(o="/"+o)):i||(i=""),a&&"#"!==a.charAt(0)&&(a="#"+a),s&&"?"!==s.charAt(0)&&(s="?"+s),t+i+(o=o.replace(/[?#]/g,(function(e){return encodeURIComponent(e)})))+(s=s.replace("#","%23"))+a},i.prototype.resolve=function(e){return this.resolveObject(N(e,!1,!0)).format()},i.prototype.resolveObject=function(e){if(n.isString(e)){var t=new i;t.parse(e,!1,!0),e=t}for(var o=new i,a=Object.keys(this),r=0;r<a.length;r++){var s=a[r];o[s]=this[s]}if(o.hash=e.hash,""===e.href)return o.href=o.format(),o;if(e.slashes&&!e.protocol){for(var E=Object.keys(e),_=0;_<E.length;_++){var T=E[_];"protocol"!==T&&(o[T]=e[T])}return I[o.protocol]&&o.hostname&&!o.pathname&&(o.path=o.pathname="/"),o.href=o.format(),o}if(e.protocol&&e.protocol!==o.protocol){if(!I[e.protocol]){for(var l=Object.keys(e),S=0;S<l.length;S++){var u=l[S];o[u]=e[u]}return o.href=o.format(),o}if(o.protocol=e.protocol,e.host||A[e.protocol])o.pathname=e.pathname;else{for(var d=(e.pathname||"").split("/");d.length&&!(e.host=d.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==d[0]&&d.unshift(""),d.length<2&&d.unshift(""),o.pathname=d.join("/")}if(o.search=e.search,o.query=e.query,o.host=e.host||"",o.auth=e.auth,o.hostname=e.hostname||e.host,o.port=e.port,o.pathname||o.search){var c=o.pathname||"",O=o.search||"";o.path=c+O}return o.slashes=o.slashes||e.slashes,o.href=o.format(),o}var N=o.pathname&&"/"===o.pathname.charAt(0),R=e.host||e.pathname&&"/"===e.pathname.charAt(0),m=R||N||o.host&&e.pathname,p=m,h=o.pathname&&o.pathname.split("/")||[],L=(d=e.pathname&&e.pathname.split("/")||[],o.protocol&&!I[o.protocol]);if(L&&(o.hostname="",o.port=null,o.host&&(""===h[0]?h[0]=o.host:h.unshift(o.host)),o.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===d[0]?d[0]=e.host:d.unshift(e.host)),e.host=null),m=m&&(""===d[0]||""===h[0])),R)o.host=e.host||""===e.host?e.host:o.host,o.hostname=e.hostname||""===e.hostname?e.hostname:o.hostname,o.search=e.search,o.query=e.query,h=d;else if(d.length)h||(h=[]),h.pop(),h=h.concat(d),o.search=e.search,o.query=e.query;else if(!n.isNullOrUndefined(e.search)){if(L)o.hostname=o.host=h.shift(),(v=!!(o.host&&o.host.indexOf("@")>0)&&o.host.split("@"))&&(o.auth=v.shift(),o.host=o.hostname=v.shift());return o.search=e.search,o.query=e.query,n.isNull(o.pathname)&&n.isNull(o.search)||(o.path=(o.pathname?o.pathname:"")+(o.search?o.search:"")),o.href=o.format(),o}if(!h.length)return o.pathname=null,o.search?o.path="/"+o.search:o.path=null,o.href=o.format(),o;for(var f=h.slice(-1)[0],C=(o.host||e.host||h.length>1)&&("."===f||".."===f)||""===f,D=0,g=h.length;g>=0;g--)"."===(f=h[g])?h.splice(g,1):".."===f?(h.splice(g,1),D++):D&&(h.splice(g,1),D--);if(!m&&!p)for(;D--;D)h.unshift("..");!m||""===h[0]||h[0]&&"/"===h[0].charAt(0)||h.unshift(""),C&&"/"!==h.join("/").substr(-1)&&h.push("");var v,P=""===h[0]||h[0]&&"/"===h[0].charAt(0);L&&(o.hostname=o.host=P?"":h.length?h.shift():"",(v=!!(o.host&&o.host.indexOf("@")>0)&&o.host.split("@"))&&(o.auth=v.shift(),o.host=o.hostname=v.shift()));return(m=m||o.host&&h.length)&&!P&&h.unshift(""),h.length?o.pathname=h.join("/"):(o.pathname=null,o.path=null),n.isNull(o.pathname)&&n.isNull(o.search)||(o.path=(o.pathname?o.pathname:"")+(o.search?o.search:"")),o.auth=e.auth||o.auth,o.slashes=o.slashes||e.slashes,o.href=o.format(),o},i.prototype.parseHost=function(){var e=this.host,t=s.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},2502:e=>{"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},243:(e,t,o)=>{"use strict";Object.defineProperty(t,Symbol.toStringTag,{value:"Module"});const a=o(7294);var n,i=((n=i||{}).Mouse="mouse",n.Touch="touch",n.Pointer="pointer",n),r=(e=>(e.CancelledByMovement="cancelled-by-movement",e.CancelledByRelease="cancelled-by-release",e.CancelledOutsideElement="cancelled-outside-element",e))(r||{});const s=()=>"object"==typeof window?window?.PointerEvent??null:null;function E(e){const{nativeEvent:t}=e;if(!t)return!1;const o="object"==typeof window?window?.TouchEvent??null:null;return o&&t instanceof o||"touches"in t}function _(e){const t=s();return e.nativeEvent instanceof MouseEvent&&!(t&&e.nativeEvent instanceof t)}function T(e){const{nativeEvent:t}=e;if(!t)return!1;const o=s();return o&&t instanceof o||"pointerId"in t}function l(e){return _(e)||E(e)||T(e)}function S(e){return E(e)?{x:e.touches[0].pageX,y:e.touches[0].pageY}:_(e)||T(e)?{x:e.pageX,y:e.pageY}:null}t.LongPressCallbackReason=r,t.LongPressEventType=i,t.useLongPress=function(e,{threshold:t=400,captureEvent:o=!1,detect:n=i.Pointer,cancelOnMovement:s=!1,cancelOutsideElement:E=!0,filterEvents:_,onStart:T,onMove:u,onFinish:d,onCancel:c}={}){const A=a.useRef(!1),I=a.useRef(!1),O=a.useRef(),N=a.useRef(),R=a.useRef(e),m=a.useRef(null),p=a.useCallback((e=>a=>{I.current||l(a)&&(void 0!==_&&!_(a)||(o&&a.persist(),T?.(a,{context:e}),m.current=S(a),I.current=!0,O.current=a.currentTarget,N.current=setTimeout((()=>{R.current&&(R.current(a,{context:e}),A.current=!0)}),t)))}),[o,_,T,t]),h=a.useCallback((e=>(t,a)=>{l(t)&&I.current&&(m.current=null,o&&t.persist(),A.current?d?.(t,{context:e}):I.current&&c?.(t,{context:e,reason:a??r.CancelledByRelease}),A.current=!1,I.current=!1,void 0!==N.current&&clearTimeout(N.current))}),[o,d,c]),L=a.useCallback((e=>t=>{if(u?.(t,{context:e}),s&&m.current){const o=S(t);if(o){const a=!0===s?25:s,n={x:Math.abs(o.x-m.current.x),y:Math.abs(o.y-m.current.y)};(n.x>a||n.y>a)&&h(e)(t,r.CancelledByMovement)}}}),[h,s,u]),f=a.useCallback((t=>{if(null===e)return{};switch(n){case i.Mouse:{const e={onMouseDown:p(t),onMouseMove:L(t),onMouseUp:h(t)};return E&&(e.onMouseLeave=e=>{h(t)(e,r.CancelledOutsideElement)}),e}case i.Touch:return{onTouchStart:p(t),onTouchMove:L(t),onTouchEnd:h(t)};case i.Pointer:{const e={onPointerDown:p(t),onPointerMove:L(t),onPointerUp:h(t)};return E&&(e.onPointerLeave=e=>h(t)(e,r.CancelledOutsideElement)),e}}}),[e,h,E,n,L,p]);return a.useEffect((()=>{if(window)return window.addEventListener("mouseup",e),window.addEventListener("touchend",e),window.addEventListener("pointerup",e),()=>{window.removeEventListener("mouseup",e),window.removeEventListener("touchend",e),window.removeEventListener("pointerup",e)};function e(e){const t=(function(e){return{target:e.target,currentTarget:e.currentTarget,nativeEvent:e,persist:()=>{}}})(e);h()(t)}}),[h]),a.useEffect((()=>()=>{void 0!==N.current&&clearTimeout(N.current)}),[]),a.useEffect((()=>{R.current=e}),[e]),f}},1739:e=>{e.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}},8369:(e,t,o)=>{e.exports={WebVTT:o(112).WebVTT,VTTCue:o(6427).VTTCue,VTTRegion:o(7224).VTTRegion}},112:function(){!(function(e){function t(e,t){return void 0===t&&(t=1),"rgba("+[parseInt(e.substring(0,2),16),parseInt(e.substring(2,4),16),parseInt(e.substring(4,6),16),t].join(",")+")"}var o=1;function a(e,a,i){switch(i){case"webvtt.font.color":case"webvtt.font.opacity":var r=Services.prefs.getCharPref("webvtt.font.color"),s=Services.prefs.getIntPref("webvtt.font.opacity")/100;n.fontSet=t(r,s);break;case"webvtt.font.scale":o=Services.prefs.getIntPref("webvtt.font.scale")/100;break;case"webvtt.bg.color":case"webvtt.bg.opacity":var E=Services.prefs.getCharPref("webvtt.bg.color"),_=Services.prefs.getIntPref("webvtt.bg.opacity")/100;n.backgroundSet=t(E,_);break;case"webvtt.edge.color":case"webvtt.edge.type":var T=Services.prefs.getIntPref("webvtt.edge.type"),l=Services.prefs.getCharPref("webvtt.edge.color");n.edgeSet=["","0px 0px ","4px 4px 4px ","-2px -2px ","2px 2px "][T]+t(l)}}if("undefined"!=typeof Services){var n={};["webvtt.font.color","webvtt.font.opacity","webvtt.font.scale","webvtt.bg.color","webvtt.bg.opacity","webvtt.edge.color","webvtt.edge.type"].forEach((function(e){a(0,0,e),Services.prefs.addObserver(e,a,!1)}))}var i=Object.create||(function(){function e(){}return function(t){if(1!==arguments.length)throw new Error("Object.create shim only accepts one parameter.");return e.prototype=t,new e}})();function r(e,t){this.name="ParsingError",this.code=e.code,this.message=t||e.message}function s(e){function t(e,t,o,a){return 3600*(0|e)+60*(0|t)+(0|o)+(0|a)/1e3}var o=e.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/);return o?o[3]?t(o[1],o[2],o[3].replace(":",""),o[4]):o[1]>59?t(o[1],o[2],0,o[4]):t(0,o[1],o[2],o[4]):null}function E(){this.values=i(null)}function _(e,t,o,a){var n=a?e.split(a):[e];for(var i in n)if("string"==typeof n[i]){var r=n[i].split(o);if(2===r.length)t(r[0],r[1])}}r.prototype=i(Error.prototype),r.prototype.constructor=r,r.Errors={BadSignature:{code:0,message:"Malformed WebVTT signature."},BadTimeStamp:{code:1,message:"Malformed time stamp."}},E.prototype={set:function(e,t){this.get(e)||""===t||(this.values[e]=t)},get:function(e,t,o){return o?this.has(e)?this.values[e]:t[o]:this.has(e)?this.values[e]:t},has:function(e){return e in this.values},alt:function(e,t,o){for(var a=0;a<o.length;++a)if(t===o[a]){this.set(e,t);break}},integer:function(e,t){/^-?\d+$/.test(t)&&this.set(e,parseInt(t,10))},percent:function(e,t){return!!(t.match(/^([\d]{1,3})(\.[\d]*)?%$/)&&(t=parseFloat(t))>=0&&t<=100)&&(this.set(e,t),!0)}};var T={"&":"&","<":"<",">":">","‎":"‎","‏":"‏"," ":" "},l={c:"span",i:"i",b:"b",u:"u",ruby:"ruby",rt:"rt",v:"span",lang:"span"},S={v:"title",lang:"lang"},u={rt:"ruby"};function d(e,t){function o(){if(!t)return null;var e,o=t.match(/^([^<]*)(<[^>]+>?)?/);return e=o[1]?o[1]:o[2],t=t.substr(e.length),e}function a(e){return T[e]}function n(e){for(;O=e.match(/&(amp|lt|gt|lrm|rlm|nbsp);/);)e=e.replace(O[0],a);return e}function i(e,t){return!u[t.localName]||u[t.localName]===e.localName}function r(t,o){var a=l[t];if(!a)return null;var n=e.document.createElement(a);n.localName=a;var i=S[t];return i&&o&&(n[i]=o.trim()),n}for(var E,_=e.document.createElement("div"),d=_,c=[];null!==(E=o());)if("<"!==E[0])d.appendChild(e.document.createTextNode(n(E)));else{if("/"===E[1]){c.length&&c[c.length-1]===E.substr(2).replace(">","")&&(c.pop(),d=d.parentNode);continue}var A,I=s(E.substr(1,E.length-2));if(I){A=e.document.createProcessingInstruction("timestamp",I),d.appendChild(A);continue}var O=E.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/);if(!O)continue;if(!(A=r(O[1],O[3])))continue;if(!i(d,A))continue;O[2]&&(A.className=O[2].substr(1).replace("."," ")),c.push(O[1]),d.appendChild(A),d=A}return _}var c=[[1470,1470],[1472,1472],[1475,1475],[1478,1478],[1488,1514],[1520,1524],[1544,1544],[1547,1547],[1549,1549],[1563,1563],[1566,1610],[1645,1647],[1649,1749],[1765,1766],[1774,1775],[1786,1805],[1807,1808],[1810,1839],[1869,1957],[1969,1969],[1984,2026],[2036,2037],[2042,2042],[2048,2069],[2074,2074],[2084,2084],[2088,2088],[2096,2110],[2112,2136],[2142,2142],[2208,2208],[2210,2220],[8207,8207],[64285,64285],[64287,64296],[64298,64310],[64312,64316],[64318,64318],[64320,64321],[64323,64324],[64326,64449],[64467,64829],[64848,64911],[64914,64967],[65008,65020],[65136,65140],[65142,65276],[67584,67589],[67592,67592],[67594,67637],[67639,67640],[67644,67644],[67647,67669],[67671,67679],[67840,67867],[67872,67897],[67903,67903],[67968,68023],[68030,68031],[68096,68096],[68112,68115],[68117,68119],[68121,68147],[68160,68167],[68176,68184],[68192,68223],[68352,68405],[68416,68437],[68440,68466],[68472,68479],[68608,68680],[126464,126467],[126469,126495],[126497,126498],[126500,126500],[126503,126503],[126505,126514],[126516,126519],[126521,126521],[126523,126523],[126530,126530],[126535,126535],[126537,126537],[126539,126539],[126541,126543],[126545,126546],[126548,126548],[126551,126551],[126553,126553],[126555,126555],[126557,126557],[126559,126559],[126561,126562],[126564,126564],[126567,126570],[126572,126578],[126580,126583],[126585,126588],[126590,126590],[126592,126601],[126603,126619],[126625,126627],[126629,126633],[126635,126651],[1114109,1114109]];function A(e){for(var t=0;t<c.length;t++){var o=c[t];if(e>=o[0]&&e<=o[1])return!0}return!1}function I(){}function O(e,t,o){var a="undefined"!=typeof navigator&&/MSIE\s8\.0/.test(navigator.userAgent),i="rgba(255, 255, 255, 1)",r="rgba(0, 0, 0, 0.8)",s="";void 0!==n&&(i=n.fontSet,r=n.backgroundSet,s=n.edgeSet),a&&(i="rgb(255, 255, 255)",r="rgb(0, 0, 0)"),I.call(this),this.cue=t,this.cueDiv=d(e,t.text);var E={color:i,backgroundColor:r,textShadow:s,position:"relative",left:0,right:0,top:0,bottom:0,display:"inline"};a||(E.writingMode=""===t.vertical?"horizontal-tb":"lr"===t.vertical?"vertical-lr":"vertical-rl",E.unicodeBidi="plaintext"),this.applyStyles(E,this.cueDiv),this.div=e.document.createElement("div"),E={textAlign:"middle"===t.align?"center":t.align,font:o.font,whiteSpace:"pre-line",position:"absolute"},a||(E.direction=(function(e){var t=[],o="";if(!e||!e.childNodes)return"ltr";function a(e,t){for(var o=t.childNodes.length-1;o>=0;o--)e.push(t.childNodes[o])}function n(e){if(!e||!e.length)return null;var t=e.pop(),o=t.textContent||t.innerText;if(o){var i=o.match(/^.*(\n|\r)/);return i?(e.length=0,i[0]):o}return"ruby"===t.tagName?n(e):t.childNodes?(a(e,t),n(e)):void 0}for(a(t,e);o=n(t);)for(var i=0;i<o.length;i++)if(A(o.charCodeAt(i)))return"rtl";return"ltr"})(this.cueDiv),E.writingMode=""===t.vertical?"horizontal-tb":"lr"===t.vertical?"vertical-lr":"vertical-rl".stylesunicodeBidi="plaintext"),this.applyStyles(E),this.div.appendChild(this.cueDiv);var _=0;switch(t.positionAlign){case"start":_=t.position;break;case"middle":_=t.position-t.size/2;break;case"end":_=t.position-t.size}""===t.vertical?this.applyStyles({left:this.formatStyle(_,"%"),width:this.formatStyle(t.size,"%")}):this.applyStyles({top:this.formatStyle(_,"%"),height:this.formatStyle(t.size,"%")}),this.move=function(e){this.applyStyles({top:this.formatStyle(e.top,"px"),bottom:this.formatStyle(e.bottom,"px"),left:this.formatStyle(e.left,"px"),right:this.formatStyle(e.right,"px"),height:this.formatStyle(e.height,"px"),width:this.formatStyle(e.width,"px")})}}function N(e){var t,o,a,n,i="undefined"!=typeof navigator&&/MSIE\s8\.0/.test(navigator.userAgent);if(e.div){o=e.div.offsetHeight,a=e.div.offsetWidth,n=e.div.offsetTop;var r=(r=e.div.childNodes)&&(r=r[0])&&r.getClientRects&&r.getClientRects();e=e.div.getBoundingClientRect(),t=r?Math.max(r[0]&&r[0].height||0,e.height/r.length):0}this.left=e.left,this.right=e.right,this.top=e.top||n,this.height=e.height||o,this.bottom=e.bottom||n+(e.height||o),this.width=e.width||a,this.lineHeight=void 0!==t?t:e.lineHeight,i&&!this.lineHeight&&(this.lineHeight=13)}function R(e,t,o,a){var n=new N(t),i=t.cue,r=(function(e){if("number"==typeof e.line&&(e.snapToLines||e.line>=0&&e.line<=100))return e.line;if(!e.track||!e.track.textTrackList||!e.track.textTrackList.mediaElement)return-1;for(var t=e.track,o=t.textTrackList,a=0,n=0;n<o.length&&o[n]!==t;n++)"showing"===o[n].mode&&a++;return-1*++a})(i),s=[];if(i.snapToLines){var E;switch(i.vertical){case"":s=["+y","-y"],E="height";break;case"rl":s=["+x","-x"],E="width";break;case"lr":s=["-x","+x"],E="width"}var _=n.lineHeight,T=_*Math.round(r),l=o[E]+_,S=s[0];Math.abs(T)>l&&(T=T<0?-1:1,T*=Math.ceil(l/_)*_),r<0&&(T+=""===i.vertical?o.height:o.width,s=s.reverse()),n.move(S,T)}else{var u=n.lineHeight/o.height*100;switch(i.lineAlign){case"middle":r-=u/2;break;case"end":r-=u}switch(i.vertical){case"":t.applyStyles({top:t.formatStyle(r,"%")});break;case"rl":t.applyStyles({left:t.formatStyle(r,"%")});break;case"lr":t.applyStyles({right:t.formatStyle(r,"%")})}s=["+y","-x","+x","-y"],n=new N(t)}var d=(function(e,t){for(var n,i=new N(e),r=1,s=0;s<t.length;s++){for(;e.overlapsOppositeAxis(o,t[s])||e.within(o)&&e.overlapsAny(a);)e.move(t[s]);if(e.within(o))return e;var E=e.intersectPercentage(o);r>E&&(n=new N(e),r=E),e=new N(i)}return n||i})(n,s);t.move(d.toCSSCompatValues(o))}function m(){}I.prototype.applyStyles=function(e,t){for(var o in t=t||this.div,e)e.hasOwnProperty(o)&&(t.style[o]=e[o])},I.prototype.formatStyle=function(e,t){return 0===e?0:e+t},O.prototype=i(I.prototype),O.prototype.constructor=O,N.prototype.move=function(e,t){switch(t=void 0!==t?t:this.lineHeight,e){case"+x":this.left+=t,this.right+=t;break;case"-x":this.left-=t,this.right-=t;break;case"+y":this.top+=t,this.bottom+=t;break;case"-y":this.top-=t,this.bottom-=t}},N.prototype.overlaps=function(e){return this.left<e.right&&this.right>e.left&&this.top<e.bottom&&this.bottom>e.top},N.prototype.overlapsAny=function(e){for(var t=0;t<e.length;t++)if(this.overlaps(e[t]))return!0;return!1},N.prototype.within=function(e){return this.top>=e.top&&this.bottom<=e.bottom&&this.left>=e.left&&this.right<=e.right},N.prototype.overlapsOppositeAxis=function(e,t){switch(t){case"+x":return this.left<e.left;case"-x":return this.right>e.right;case"+y":return this.top<e.top;case"-y":return this.bottom>e.bottom}},N.prototype.intersectPercentage=function(e){return Math.max(0,Math.min(this.right,e.right)-Math.max(this.left,e.left))*Math.max(0,Math.min(this.bottom,e.bottom)-Math.max(this.top,e.top))/(this.height*this.width)},N.prototype.toCSSCompatValues=function(e){return{top:this.top-e.top,bottom:e.bottom-this.bottom,left:this.left-e.left,right:e.right-this.right,height:this.height,width:this.width}},N.getSimpleBoxPosition=function(e){var t=e.div?e.div.offsetHeight:e.tagName?e.offsetHeight:0,o=e.div?e.div.offsetWidth:e.tagName?e.offsetWidth:0,a=e.div?e.div.offsetTop:e.tagName?e.offsetTop:0;return{left:(e=e.div?e.div.getBoundingClientRect():e.tagName?e.getBoundingClientRect():e).left,right:e.right,top:e.top||a,height:e.height||t,bottom:e.bottom||a+(e.height||t),width:e.width||o}},m.StringDecoder=function(){return{decode:function(e){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}},m.convertCueToDOMTree=function(e,t){return e&&t?d(e,t):null};m.processCues=function(e,t,a){if(!e||!t||!a)return null;for(;a.firstChild;)a.removeChild(a.firstChild);var n=e.document.createElement("div");if(n.style.position="absolute",n.style.left="0",n.style.right="0",n.style.top="0",n.style.bottom="0",n.style.margin="1.5%",a.appendChild(n),(function(e){for(var t=0;t<e.length;t++)if(e[t].hasBeenReset||!e[t].displayState)return!0;return!1})(t)){var i=[],r=N.getSimpleBoxPosition(n),s={font:Math.round(.05*r.height*100)/100*o+"px sans-serif"};!(function(){for(var o,a,E=0;E<t.length;E++)a=t[E],o=new O(e,a,s),n.appendChild(o.div),R(0,o,r,i),a.displayState=o.div,i.push(N.getSimpleBoxPosition(o))})()}else for(var E=0;E<t.length;E++)n.appendChild(t[E].displayState)},m.Parser=function(e,t,o){this.window=e,this.state="INITIAL",this.buffer="",this.decoder=t||new TextDecoder("utf8"),this.regionList=[],this.VTTCue=o},m.Parser.prototype={reportOrThrowError:function(e){if(!(e instanceof r))throw e;this.onparsingerror&&this.onparsingerror(e)},parse:function(e){var t,o,a=this;function n(){for(var e=a.buffer,t=0;t<e.length&&"\r"!==e[t]&&"\n"!==e[t];)++t;var o=e.substr(0,t);return"\r"===e[t]&&++t,"\n"===e[t]&&++t,a.buffer=e.substr(t),o}function i(e){e.match(/X-TIMESTAMP-MAP/)?_(e,(function(e,t){if("X-TIMESTAMP-MAP"===e)!(function(e){var t=new E;_(e,(function(e,o){switch(e){case"MPEGT":t.integer(e+"S",o);break;case"LOCA":t.set(e+"L",s(o))}}),/[^\d]:/,/,/),a.ontimestampmap&&a.ontimestampmap({MPEGTS:t.get("MPEGTS"),LOCAL:t.get("LOCAL")})})(t)}),/=/):_(e,(function(e,t){if("Region"===e)!(function(e){var t=new E;if(_(e,(function(e,o){switch(e){case"id":t.set(e,o);break;case"width":t.percent(e,o);break;case"lines":t.integer(e,o);break;case"regionanchor":case"viewportanchor":var a=o.split(",");if(2!==a.length)break;var n=new E;if(n.percent("x",a[0]),n.percent("y",a[1]),!n.has("x")||!n.has("y"))break;t.set(e+"X",n.get("x")),t.set(e+"Y",n.get("y"));break;case"scroll":t.alt(e,o,["up"])}}),/=/,/\s/),t.has("id")){var o=new a.window.VTTRegion;o.width=t.get("width",100),o.lines=t.get("lines",3),o.regionAnchorX=t.get("regionanchorX",0),o.regionAnchorY=t.get("regionanchorY",100),o.viewportAnchorX=t.get("viewportanchorX",0),o.viewportAnchorY=t.get("viewportanchorY",100),o.scroll=t.get("scroll",""),a.onregion&&a.onregion(o),a.regionList.push({id:t.get("id"),region:o})}})(t)}),/:/)}if(e&&(a.buffer+=a.decoder.decode(e,{stream:!0})),"INITIAL"===a.state){if(!/\r\n|\n/.test(a.buffer))return this;var T=(t=n()).match(/^WEBVTT([ \t].*)?$/);if(!T||!T[0])return o=new r(r.Errors.BadSignature),a.reportOrThrowError(o),"CUETEXT"===a.state&&a.cue&&a.oncue&&a.oncue(a.cue),a.cue=null,void(a.state="INITIAL"===a.state?"BADWEBVTT":"BADCUE");a.state="HEADER"}var l=!1,S=0;var u,d=(u=function(){if(a.buffer&&/\r\n|\n/.test(a.buffer))switch(l?l=!1:t=n(),a.state){case"HEADER":/:/.test(t)?i(t):t||(a.state="ID"),d();break;case"NOTE":t||(a.state="ID"),d();break;case"ID":if(/^NOTE($|[ \t])/.test(t)){a.state="NOTE",d();break}if(!t){d();break}if(a.cue=new(a.VTTCue||a.window.VTTCue)(0,0,""),a.state="CUE",-1===t.indexOf("--\x3e")){a.cue.id=t,d();break}case"CUE":!(function(e,t,o,a,n){var i,T=e;function l(){var t=s(e);if(null!==t||!n)return e=e.replace(/^[^\sa-zA-Z-]+/,""),t;n(new r(r.Errors.BadTimeStamp,"Malformed timestamp: "+T))}function S(){e=e.replace(/^\s+/,"")}S(),void 0!==(i=l())&&(t.startTime=i,S(),"--\x3e"===e.substr(0,3)?(e=e.substr(3),S(),void 0!==(i=l())&&(t.endTime=i,S(),(function(e,t){var n=new E;_(e,(function(e,t){switch(e){case"region":for(var a=o.length-1;a>=0;a--)if(o[a].id===t){n.set(e,o[a].region);break}break;case"vertical":n.alt(e,t,["rl","lr"]);break;case"line":var i=t.split(","),r=i[0];n.integer(e,r),n.percent(e,r)&&n.set("snapToLines",!1),n.alt(e,r,["auto"]),2===i.length&&n.alt("lineAlign",i[1],["start","middle","end"]);break;case"position":i=t.split(","),n.percent(e,i[0]),2===i.length&&n.alt("positionAlign",i[1],["start","middle","end"]);break;case"size":n.percent(e,t);break;case"align":n.alt(e,t,["start","middle","end","left","right"])}}),/:/,/\s/),t.region=n.get("region",null),t.vertical=n.get("vertical",""),t.line=n.get("line","auto"),t.lineAlign=n.get("lineAlign","start"),t.snapToLines=n.get("snapToLines",!0),t.size=n.get("size",100),t.align=n.get("align","center"),t.position=n.get("position","auto"),t.positionAlign=n.get("positionAlign",{start:"start",left:"start",middle:"middle",end:"end",right:"end"},t.align),a()})(e,t))):n(new r(r.Errors.BadTimeStamp,"Malformed time stamp (time stamps must be separated by '--\x3e'): "+T)))})(t,a.cue,a.regionList,(function(){a.state="CUETEXT",d()}),(function(e){a.reportOrThrowError(e),a.cue=null,a.state="BADCUE",d()}));break;case"CUETEXT":var e=-1!==t.indexOf("--\x3e");if(!t||e&&(l=!0)){a.oncue&&a.oncue(a.cue),a.cue=null,a.state="ID",d();break}a.cue.text&&(a.cue.text+="\n"),a.cue.text+=t,d();break;case"BADCUE":t||(a.state="ID"),d()}else a.flush()},function(){if(++S<1e3)return u();setTimeout((function(){S=0,u()}))});return d(),this},flush:function(){var e=this;try{if(e.buffer+=e.decoder.decode(),(e.cue||"HEADER"===e.state)&&(e.buffer+="\n\n",e.parse()),"INITIAL"===e.state)throw new r(r.Errors.BadSignature)}catch(t){e.reportOrThrowError(t)}return e.onflush&&e.onflush(),this}},e.WebVTT=m})(this)},6427:function(e,t,o){var a;e.exports&&(this.VTTCue=this.VTTCue||o(113).VTTCue),(a=this).VTTCue.prototype.toJSON=function(){var e={},t=this;return Object.keys(this).forEach((function(o){"getCueAsHTML"!==o&&"hasBeenReset"!==o&&"displayState"!==o&&(e[o]=t[o])})),e},a.VTTCue.create=function(e){if(!e.hasOwnProperty("startTime")||!e.hasOwnProperty("endTime")||!e.hasOwnProperty("text"))throw new Error("You must at least have start time, end time, and text.");var t=new a.VTTCue(e.startTime,e.endTime,e.text);for(var o in e)t.hasOwnProperty(o)&&(t[o]=e[o]);return t},a.VTTCue.fromJSON=function(e){return this.create(JSON.parse(e))}},113:function(){!(function(e){var t={"":!0,lr:!0,rl:!0},o={start:!0,middle:!0,end:!0,left:!0,right:!0};function a(e){return"string"==typeof e&&(!!o[e.toLowerCase()]&&e.toLowerCase())}function n(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)e[a]=o[a]}return e}function i(e,o,i){var r=this,s=/MSIE\s8\.0/.test(navigator.userAgent),E={};s?r=document.createElement("custom"):E.enumerable=!0,r.hasBeenReset=!1;var _="",T=!1,l=e,S=o,u=i,d=null,c="",A=!0,I="auto",O="start",N=50,R="middle",m=50,p="middle";if(Object.defineProperty(r,"id",n({},E,{get:function(){return _},set:function(e){_=""+e}})),Object.defineProperty(r,"pauseOnExit",n({},E,{get:function(){return T},set:function(e){T=!!e}})),Object.defineProperty(r,"startTime",n({},E,{get:function(){return l},set:function(e){if("number"!=typeof e)throw new TypeError("Start time must be set to a number.");l=e,this.hasBeenReset=!0}})),Object.defineProperty(r,"endTime",n({},E,{get:function(){return S},set:function(e){if("number"!=typeof e)throw new TypeError("End time must be set to a number.");S=e,this.hasBeenReset=!0}})),Object.defineProperty(r,"text",n({},E,{get:function(){return u},set:function(e){u=""+e,this.hasBeenReset=!0}})),Object.defineProperty(r,"region",n({},E,{get:function(){return d},set:function(e){d=e,this.hasBeenReset=!0}})),Object.defineProperty(r,"vertical",n({},E,{get:function(){return c},set:function(e){var o=(function(e){return"string"==typeof e&&!!t[e.toLowerCase()]&&e.toLowerCase()})(e);if(!1===o)throw new SyntaxError("An invalid or illegal string was specified.");c=o,this.hasBeenReset=!0}})),Object.defineProperty(r,"snapToLines",n({},E,{get:function(){return A},set:function(e){A=!!e,this.hasBeenReset=!0}})),Object.defineProperty(r,"line",n({},E,{get:function(){return I},set:function(e){if("number"!=typeof e&&"auto"!==e)throw new SyntaxError("An invalid number or illegal string was specified.");I=e,this.hasBeenReset=!0}})),Object.defineProperty(r,"lineAlign",n({},E,{get:function(){return O},set:function(e){var t=a(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");O=t,this.hasBeenReset=!0}})),Object.defineProperty(r,"position",n({},E,{get:function(){return N},set:function(e){if(e<0||e>100)throw new Error("Position must be between 0 and 100.");N=e,this.hasBeenReset=!0}})),Object.defineProperty(r,"positionAlign",n({},E,{get:function(){return R},set:function(e){var t=a(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");R=t,this.hasBeenReset=!0}})),Object.defineProperty(r,"size",n({},E,{get:function(){return m},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");m=e,this.hasBeenReset=!0}})),Object.defineProperty(r,"align",n({},E,{get:function(){return p},set:function(e){var t=a(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");p=t,this.hasBeenReset=!0}})),r.displayState=void 0,s)return r}i.prototype.getCueAsHTML=function(){return WebVTT.convertCueToDOMTree(window,this.text)},e.VTTCue=e.VTTCue||i})(this)},7224:function(e,t,o){var a;e.exports&&(this.VTTRegion=o(2285).VTTRegion),(a=this).VTTRegion.create=function(e){var t=new a.VTTRegion;for(var o in e)t.hasOwnProperty(o)&&(t[o]=e[o]);return t},a.VTTRegion.fromJSON=function(e){return this.create(JSON.parse(e))}},2285:function(){!(function(e){var t={"":!0,up:!0};function o(e){return"number"==typeof e&&e>=0&&e<=100}e.VTTRegion=e.VTTRegion||function(){var e=100,a=3,n=0,i=100,r=0,s=100,E="";Object.defineProperties(this,{width:{enumerable:!0,get:function(){return e},set:function(t){if(!o(t))throw new Error("Width must be between 0 and 100.");e=t}},lines:{enumerable:!0,get:function(){return a},set:function(e){if("number"!=typeof e)throw new TypeError("Lines must be set to a number.");a=e}},regionAnchorY:{enumerable:!0,get:function(){return i},set:function(e){if(!o(e))throw new Error("RegionAnchorX must be between 0 and 100.");i=e}},regionAnchorX:{enumerable:!0,get:function(){return n},set:function(e){if(!o(e))throw new Error("RegionAnchorY must be between 0 and 100.");n=e}},viewportAnchorY:{enumerable:!0,get:function(){return s},set:function(e){if(!o(e))throw new Error("ViewportAnchorY must be between 0 and 100.");s=e}},viewportAnchorX:{enumerable:!0,get:function(){return r},set:function(e){if(!o(e))throw new Error("ViewportAnchorX must be between 0 and 100.");r=e}},scroll:{enumerable:!0,get:function(){return E},set:function(e){var o=(function(e){return"string"==typeof e&&!!t[e.toLowerCase()]&&e.toLowerCase()})(e);if(!1===o)throw new SyntaxError("An invalid or illegal string was specified.");E=o}}})}})(this)},3028:(e,t,o)=>{"use strict";e.exports=o.p+"f4f59074954b11898de7b384b6320863c5aa1fba/images/anonymous.png"},1251:(e,t,o)=>{"use strict";e.exports=o.p+"f4f59074954b11898de7b384b6320863c5aa1fba/images/default_avatar.png"},7740:(e,t,o)=>{"use strict";e.exports=o.p+"f4f59074954b11898de7b384b6320863c5aa1fba/images/empty.png"},5313:(e,t,o)=>{"use strict";e.exports=o.p+"f4f59074954b11898de7b384b6320863c5aa1fba/images/stremio_symbol.png"},9059:e=>{e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a},e.exports.__esModule=!0,e.exports.default=e.exports},3280:e=>{e.exports=function(e){if(Array.isArray(e))return e},e.exports.__esModule=!0,e.exports.default=e.exports},5627:e=>{e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.__esModule=!0,e.exports.default=e.exports},949:e=>{e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports},4813:(e,t,o)=>{var a=o(3213);function n(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,a(n.key),n)}}e.exports=function(e,t,o){return t&&n(e.prototype,t),o&&n(e,o),Object.defineProperty(e,"prototype",{writable:!1}),e},e.exports.__esModule=!0,e.exports.default=e.exports},2401:(e,t,o)=>{var a=o(3213);e.exports=function(e,t,o){return(t=a(t))in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e},e.exports.__esModule=!0,e.exports.default=e.exports},2411:e=>{function t(o){return e.exports=t=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.__esModule=!0,e.exports.default=e.exports,t(o)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},6433:(e,t,o)=>{var a=o(7529);e.exports=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&a(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports},7713:e=>{e.exports=function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)},e.exports.__esModule=!0,e.exports.default=e.exports},5886:e=>{e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports},8542:(e,t,o)=>{var a=o(7021).default,n=o(5627);e.exports=function(e,t){if(t&&("object"===a(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return n(e)},e.exports.__esModule=!0,e.exports.default=e.exports},7529:e=>{function t(o,a){return e.exports=t=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,t(o,a)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},9394:(e,t,o)=>{var a=o(3280),n=o(7713),i=o(9863),r=o(5886);e.exports=function(e){return a(e)||n(e)||i(e)||r()},e.exports.__esModule=!0,e.exports.default=e.exports},3029:(e,t,o)=>{var a=o(7021).default;e.exports=function(e,t){if("object"!==a(e)||null===e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var n=o.call(e,t||"default");if("object"!==a(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports},3213:(e,t,o)=>{var a=o(7021).default,n=o(3029);e.exports=function(e){var t=n(e,"string");return"symbol"===a(t)?t:String(t)},e.exports.__esModule=!0,e.exports.default=e.exports},7021:e=>{function t(o){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(o)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},9863:(e,t,o)=>{var a=o(9059);e.exports=function(e,t){if(e){if("string"==typeof e)return a(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?a(e,t):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports},1785:e=>{"use strict";e.exports=JSON.parse('{"ic_speedometer":{"viewBox":"0 0 1172 1024","paths":["M862.871 294.551l-368.038 190.946c-14.192 7.225-25.482 18.418-32.633 32.116l-0.195 0.411-7.228 14.155c-10.644 19.303-16.907 42.312-16.907 66.783 0 77.512 62.836 140.348 140.348 140.348 24.159 0 46.891-6.104 66.741-16.854l-0.742 0.367 14.155-7.228c12.978-6.804 23.313-17.14 29.933-29.733l0.184-0.384q96.376-185.525 193.054-370.748c3.915-7.831 13.553-16.866 6.024-24.696s-17.167 0.602-24.696 4.518z","M1162.842 489.412c-52.104-306.598-338.824-523.746-640-484.894-333.402 43.369-556.273 324.969-518.626 654.758 17.701 137.818 82.694 257.897 177.907 345.697l0.39 0.355c10.096 11.453 24.8 18.64 41.183 18.64 14.923 0 28.453-5.964 38.338-15.637l-0.010 0.009c10.063-10.392 16.266-24.575 16.266-40.207s-6.203-29.815-16.281-40.223l0.015 0.015c-3.614-4.518-7.529-8.433-11.144-12.649l-9.939-9.336c-77.339-83.757-125.406-195.552-127.393-318.548l-0.005-0.398c-0.008-1.039-0.013-2.268-0.013-3.498 0-206.535 134.212-381.724 320.18-443.108l3.297-0.943c44.586-15.48 95.974-24.42 149.451-24.42 154.071 0 290.811 74.208 376.425 188.833l0.882 1.234c138.842 185.826 123.181 430.984-38.852 609.581-45.176 49.995-27.106 77.704-9.336 93.967 9.017 9.476 21.723 15.369 35.805 15.369 0.33 0 0.659-0.003 0.987-0.010l-0.049 0.001c23.1-3.507 42.897-15.502 56.481-32.644l0.141-0.184c100.817-103.072 163.022-244.27 163.022-399.997 0-35.971-3.319-71.166-9.667-105.297l0.546 3.534z"]},"ic_ghost":{"viewBox":"0 0 858 1024","paths":["M542.118 12.951c144.866 27.407 233.713 136.734 276.179 278.287 12.053 44.692 18.976 96.003 18.976 148.932 0 0.582-0.001 1.164-0.003 1.746l0-0.090c5.722 155.106 10.541 310.212 19.275 465.016 2.711 50.296-10.24 96.678-60.235 114.146-66.259 23.492-170.767-45.779-204.198-45.779-44.875 0-99.388 51.2-165.045 51.2-58.428 0-105.412-56.019-148.781-56.019-52.405 0-125.289 78.005-225.28 49.694-31.888-17.218-53.188-50.393-53.188-88.542 0-2.12 0.066-4.226 0.195-6.313l-0.014 0.286c7.529-172.574 14.155-344.245 21.685-516.518 6.325-143.661 60.235-261.722 182.814-344.546 49.092-34.334 148.48-87.341 337.619-51.501zM379.784 445.741c0.233-3.193 0.366-6.918 0.366-10.673 0-33.575-10.627-64.668-28.7-90.099l0.324 0.48c-14.233-25.143-40.8-41.835-71.266-41.835-29.362 0-55.104 15.505-69.482 38.774l-0.202 0.351c-19.902 29.361-31.772 65.574-31.772 104.559 0 40.483 12.8 77.976 34.574 108.653l-0.392-0.582c14.78 20.985 38.905 34.526 66.193 34.526 26.108 0 49.322-12.396 64.075-31.623l0.141-0.192c22.743-27.119 36.557-62.395 36.557-100.897 0-4.026-0.151-8.017-0.448-11.968l0.032 0.526zM680.96 447.849c-1.025-40.599-14.178-77.933-35.953-108.74l0.414 0.617c-14.76-21.164-38.988-34.838-66.409-34.838s-51.649 13.674-66.236 34.575l-0.173 0.262c-21.378 30.126-34.175 67.647-34.175 108.157 0 41.783 13.614 80.386 36.647 111.616l-0.364-0.517c14.901 19.255 38.017 31.532 64 31.532s49.099-12.277 63.862-31.347l0.138-0.185c23.096-30.62 37.161-69.188 37.646-111.021l0.001-0.113z"]},"ic_hourglass_tilted":{"viewBox":"0 0 881 1024","paths":["M346.353 473.751c-71.078-129.506-122.278-262.927-36.442-413.515-8.734-5.421-44.875-24.395-37.346-47.586 3.012-9.638 18.071-12.649 28.612-12.649 5.558-0.328 12.057-0.515 18.6-0.515 16.386 0 32.497 1.173 48.256 3.438l-1.802-0.213c173.262 29.244 328.388 86.599 468.020 167.689l-6.618-3.548c16.766 9.924 31.213 21.4 43.912 34.573l0.060 0.063c15.661 15.962 10.842 28.612-11.746 32.828-11.589 1.726-25.328 2.917-39.269 3.302l-0.487 0.011c-24.094 169.562-147.275 243.652-280.395 301.176 15.36 35.84 30.118 70.174 44.875 105.111 20.279 43.419 32.111 94.27 32.111 147.885 0 39.956-6.572 78.378-18.693 114.242l0.737-2.513c0 2.108-15.059 43.369 6.927 60.235 7.228 5.12 8.132 22.588 7.228 34.033 0.029 0.458 0.045 0.993 0.045 1.532 0 13.897-10.945 25.238-24.685 25.873l-0.057 0.002h-2.711c-39.201-0.608-77.101-3.98-114.138-9.934l4.51 0.598c-153.47-30.75-289.89-81.975-414.677-151.556l7.185 3.678c-20.931-12.676-38.927-25.493-55.914-39.491l0.799 0.639c-8.083-6.049-13.259-15.599-13.259-26.358 0-5.92 1.567-11.473 4.308-16.269l-0.085 0.161c3.292-13.334 15.15-23.065 29.28-23.065 1.144 0 2.273 0.064 3.383 0.188l-0.137-0.012c24.094 2.711 30.118-8.433 34.936-30.118 22.564-80.020 73.793-145.557 141.632-186.238l1.427-0.793c41.562-27.106 86.438-48.489 131.614-72.885zM534.588 909.854c17.802-32.397 28.274-70.996 28.274-112.040 0-16.738-1.741-33.068-5.053-48.821l0.271 1.539c-14.508-75.031-43.428-141.479-83.919-199.22l1.095 1.648c-17.769-28.009-10.842-44.875 18.974-58.127 55.764-23.147 101.796-46.054 146.12-71.594l-6.073 3.227c59.741-34.041 104.060-89.343 123.029-155.371l0.453-1.843c9.939-36.442 6.927-38.249-28.311-47.887-66.56-18.071-133.722-35.84-199.078-58.127-51.501-17.769-101.496-41.562-150.588-63.247-15.962-7.228-24.998-5.421-33.732 11.445-16.038 31.887-25.429 69.491-25.429 109.288 0 19.447 2.242 38.371 6.483 56.526l-0.329-1.674c16.114 73.207 44.826 137.789 84.017 194.583l-1.194-1.83c5.183 5.656 8.36 13.226 8.36 21.538 0 9.358-4.027 17.776-10.442 23.616l-0.026 0.023c-4.415 4.127-10.1 6.947-16.408 7.813l-0.157 0.018c-17.468 6.626-35.539 12.951-52.706 20.48-77.687 29.015-141.752 79.483-186.788 144.187l-0.844 1.282c-16.969 23.335-27.373 52.407-28.007 83.876l-0.002 0.152c9.686 1.728 20.836 2.716 32.218 2.716 6.579 0 13.080-0.33 19.489-0.975l-0.808 0.066c44.574-10.24 130.409 0 189.44-30.118 7.591-2.303 16.316-3.629 25.351-3.629 28.392 0 53.726 13.096 70.29 33.576l0.134 0.171c30.118 32.226 30.118 58.127 53.911 94.871 9.46 11.879 16.966 25.811 21.739 40.955l0.247 0.909z","M627.953 320.151c-9.035-4.518-16.565 1.807-23.191 2.711-21.432 5.031-46.039 7.915-71.321 7.915-43.526 0-85.056-8.549-123.001-24.061l2.171 0.785c-2.632-0.834-5.66-1.314-8.799-1.314-8.328 0-15.866 3.38-21.318 8.843l-0.001 0.001c-3.927 6.173-6.259 13.695-6.259 21.761 0 3.83 0.526 7.538 1.509 11.054l-0.069-0.288c16.264 40.96 34.334 81.016 53.609 120.471 4.336 5.63 11.079 9.222 18.661 9.222 2.146 0 4.225-0.288 6.2-0.827l-0.165 0.038c65.11-23.975 120.952-58.988 168.008-103.238l-0.253 0.236c7.3-8.065 12.208-18.42 13.529-29.868l0.023-0.25c0.132-0.977 0.207-2.105 0.207-3.252 0-8.036-3.703-15.208-9.496-19.901l-0.048-0.038z","M461.402 675.539c-0.657 19.278-16.443 34.656-35.82 34.656-0.431 0-0.859-0.008-1.286-0.023l0.062 0.002c-17.929-2.316-31.638-17.487-31.638-35.86 0-19.542 15.51-35.461 34.891-36.12l0.060-0.002c19.117 0.651 34.367 16.304 34.367 35.519 0 0.536-0.012 1.070-0.035 1.601l0.003-0.075z","M451.765 570.428c-1.807 13.854-8.734 21.685-22.889 21.082-0.19 0.007-0.414 0.010-0.638 0.010-10.558 0-19.193-8.231-19.839-18.627l-0.003-0.057c-0.066-0.632-0.104-1.366-0.104-2.108s0.038-1.476 0.112-2.199l-0.008 0.091c-0.014-0.28-0.022-0.609-0.022-0.939 0-10.562 8.238-19.2 18.639-19.84l0.056-0.003h3.915c13.553 0.602 20.781 9.336 20.781 22.588z"]},"ic_adult":{"viewBox":"0 0 1025 1024","paths":["M490.315 544.828c-0.329-0.006-0.717-0.009-1.106-0.009-19.306 0-36.692 8.219-48.849 21.349l-0.040 0.043c-11.577 12.35-18.688 29.008-18.688 47.327 0 0.515 0.006 1.028 0.017 1.54l-0.001-0.076c0.037 14.686 6.805 27.783 17.381 36.374l0.087 0.068c12.906 9.901 29.283 15.867 47.054 15.867 1.989 0 3.96-0.075 5.912-0.222l-0.26 0.016c1.719 0.133 3.724 0.209 5.745 0.209 17.938 0 34.483-5.963 47.761-16.014l-0.198 0.144c10.53-8.951 17.167-22.208 17.167-37.015 0-0.010-0-0.021-0-0.031l0 0.002c-0.123-18.837-7.812-35.855-20.177-48.187l-0.002-0.002c-12.201-13.205-29.607-21.445-48.938-21.445-1.008 0-2.010 0.022-3.007 0.067l0.142-0.005z","M489.713 477.064c0.99 0.056 2.148 0.088 3.314 0.088 16.863 0 32.162-6.695 43.385-17.572l-0.016 0.016c10.915-10.903 17.666-25.971 17.666-42.616s-6.752-31.714-17.666-42.616l-0.001-0.001c-11.379-10.854-26.824-17.532-43.828-17.532-1.004 0-2.002 0.023-2.995 0.069l0.141-0.005c-0.801-0.035-1.741-0.056-2.685-0.056-17.152 0-32.747 6.669-44.333 17.556l0.034-0.032c-10.915 10.903-17.666 25.971-17.666 42.616s6.752 31.714 17.666 42.616l0.001 0.001c11.381 10.862 26.831 17.546 43.842 17.546 1.105 0 2.203-0.028 3.294-0.084l-0.153 0.006z","M883.351 161.732c-90.543-95.747-216.891-156.82-357.52-161.708l-0.88-0.024c-3.070-0.066-6.687-0.104-10.314-0.104-138.198 0-263.562 54.947-355.438 144.186l0.123-0.119c-98.26 92.852-159.424 224.071-159.424 369.575 0 142.717 58.843 271.691 153.591 363.984l0.111 0.107c88.622 88.958 210.672 144.561 345.709 146.368l0.343 0.004h24.094c277.633-5.364 500.641-231.69 500.641-510.104 0-136.661-53.732-260.772-141.221-352.36l0.185 0.195zM339.426 714.993c-7.091 5.917-16.3 9.509-26.349 9.509-1.327 0-2.639-0.063-3.934-0.185l0.165 0.013h-130.711c-1.129 0.11-2.442 0.172-3.768 0.172-10.049 0-19.259-3.592-26.415-9.563l0.066 0.054c-5.614-6.051-9.059-14.183-9.059-23.12 0-0.448 0.009-0.895 0.026-1.339l-0.002 0.064c-0.017-0.396-0.027-0.861-0.027-1.328 0-8.825 3.451-16.844 9.076-22.782l-0.014 0.015c7.091-5.917 16.3-9.509 26.349-9.509 1.327 0 2.639 0.063 3.934 0.185l-0.165-0.013h36.744v-279.793l-53.308 15.661c-5.588 2.093-12.052 3.493-18.784 3.906l-0.19 0.009c-8.066-0.047-15.187-4.050-19.526-10.165l-0.050-0.075c-5.275-6.316-8.478-14.522-8.478-23.477 0-0.641 0.016-1.278 0.049-1.911l-0.004 0.089c-0.030-0.531-0.047-1.152-0.047-1.777 0-7.226 2.272-13.922 6.142-19.411l-0.071 0.107c6.866-6.697 15.55-11.562 25.242-13.785l0.358-0.069 128.301-36.442v367.134h33.732c1.129-0.11 2.442-0.172 3.768-0.172 10.049 0 19.259 3.592 26.415 9.563l-0.066-0.054c5.789 6.089 9.35 14.344 9.35 23.431 0 0.339-0.005 0.677-0.015 1.014l0.001-0.049c0.022 0.455 0.035 0.988 0.035 1.524 0 8.711-3.332 16.645-8.791 22.595l0.022-0.025zM605.666 673.129c-10.414 19.416-26.249 34.767-45.478 44.304l-0.602 0.27c-19.812 10.259-43.25 16.274-68.092 16.274-0.626 0-1.251-0.004-1.876-0.011l0.095 0.001c-0.405 0.004-0.884 0.006-1.363 0.006-24.372 0-47.338-6.018-67.493-16.65l0.79 0.38c-19.663-9.925-35.31-25.378-45.209-44.311l-0.269-0.565c-9.303-17.514-14.765-38.293-14.765-60.348 0-0.49 0.003-0.979 0.008-1.467l-0.001 0.074c-0.011-0.646-0.018-1.407-0.018-2.17 0-19.5 4.221-38.014 11.8-54.677l-0.337 0.829c8.289-17.907 19.892-32.981 34.143-45.019l0.191-0.157c-12.293-12.574-22.42-27.329-29.735-43.622l-0.382-0.953c-6.473-14.307-10.245-31.021-10.245-48.615 0-0.379 0.002-0.758 0.005-1.137l-0 0.058c-0.009-0.552-0.014-1.203-0.014-1.856 0-33.682 13.323-64.253 34.987-86.729l-0.037 0.038c21.437-22.884 51.842-37.142 85.577-37.142 1.68 0 3.351 0.035 5.013 0.105l-0.238-0.008c1.274-0.049 2.771-0.077 4.274-0.077 33.888 0 64.45 14.241 86.027 37.066l0.052 0.056c21.627 22.438 34.95 53.008 34.95 86.69 0 0.652-0.005 1.304-0.015 1.954l0.001-0.098c0 0.023 0 0.049 0 0.076 0 18.040-3.767 35.199-10.558 50.735l0.318-0.816c-7.581 17.179-17.722 31.854-30.12 44.275l0.002-0.002c14.441 12.272 26.118 27.322 34.288 44.372l0.347 0.804c7.235 16.149 11.45 35 11.45 54.836 0 0.416-0.002 0.832-0.006 1.247l0-0.064c-0.653 22.924-7.055 44.22-17.806 62.67l0.338-0.628zM913.769 539.708h-85.233v92.762c0.111 1.134 0.174 2.452 0.174 3.784 0 9.367-3.121 18.004-8.38 24.93l0.074-0.102c-5.14 5.231-12.29 8.472-20.197 8.472-0.523 0-1.043-0.014-1.56-0.042l0.072 0.003c-0.706 0.059-1.528 0.092-2.357 0.092-7.378 0-14.136-2.653-19.373-7.057l0.046 0.038c-5.185-6.823-8.306-15.461-8.306-24.828 0-1.332 0.063-2.65 0.187-3.95l-0.013 0.166v-93.365h-85.233c-1.121 0.094-2.425 0.147-3.743 0.147-9.829 0-18.962-2.98-26.545-8.086l0.17 0.108c-5.54-4.984-9.008-12.176-9.008-20.179s3.468-15.195 8.983-20.157l0.025-0.022c7.187-4.857 16.046-7.753 25.582-7.753 1.597 0 3.176 0.081 4.731 0.24l-0.195-0.016h85.233v-93.365c-0.218-1.583-0.343-3.413-0.343-5.271 0-9.398 3.189-18.052 8.544-24.938l-0.069 0.092c5.648-5.33 13.284-8.606 21.685-8.606s16.037 3.276 21.7 8.62l-0.015-0.014c5.466 6.753 8.775 15.447 8.775 24.914 0 1.835-0.124 3.641-0.365 5.41l0.023-0.206v93.064h85.233c1.243-0.115 2.688-0.181 4.149-0.181 9.658 0 18.644 2.877 26.148 7.821l-0.179-0.111c5.719 4.891 9.321 12.114 9.321 20.179s-3.602 15.287-9.284 20.149l-0.036 0.030c-7.217 4.692-16.046 7.482-25.526 7.482-1.723 0-3.425-0.092-5.101-0.272l0.208 0.018z"]},"ic_arrow_thin_down":{"viewBox":"0 0 1024 1024","paths":["M14.155 314.428l463.511 465.318c8.928 8.731 21.149 14.127 34.63 14.155l0.005 0c0.103 0.001 0.225 0.001 0.348 0.001 13.437 0 25.582-5.534 34.278-14.448l0.009-0.010 462.908-463.812c8.82-9.052 14.26-21.434 14.26-35.087s-5.44-26.035-14.27-35.098l0.010 0.011c-8.905-8.816-21.115-14.308-34.607-14.456l-0.028-0c-13.572 0.165-25.802 5.779-34.629 14.751l-0.006 0.007-428.574 428.273-427.972-429.779c-8.799-8.927-21.024-14.458-34.541-14.458-0.139 0-0.278 0.001-0.417 0.002l0.021-0c-0.043-0-0.094-0-0.145-0-13.595 0-25.899 5.526-34.789 14.455l-0.002 0.002c-8.82 9.052-14.26 21.434-14.26 35.087s5.44 26.035 14.27 35.098l-0.010-0.011z"]},"ic_arrow_thin_up":{"viewBox":"0 0 1024 1024","paths":["M14.155 709.572l463.511-465.318c8.819-8.774 20.917-14.258 34.296-14.456l0.038-0c0.103-0.001 0.225-0.001 0.348-0.001 13.437 0 25.582 5.534 34.278 14.448l0.009 0.010 463.209 464.113c8.82 9.052 14.26 21.434 14.26 35.087s-5.44 26.035-14.27 35.098l0.010-0.011c-8.905 8.816-21.115 14.308-34.607 14.456l-0.028 0c-13.572-0.165-25.802-5.779-34.629-14.751l-0.006-0.007-428.574-428.273-427.972 429.779c-8.799 8.927-21.024 14.458-34.541 14.458-0.139 0-0.278-0.001-0.417-0.002l0.021 0c-0.043 0-0.094 0-0.145 0-13.595 0-25.899-5.526-34.789-14.455l-0.002-0.002c-8.82-9.052-14.26-21.434-14.26-35.087s5.44-26.035 14.27-35.098l-0.010 0.011z"]},"ic_book":{"viewBox":"0 0 1400 1024","paths":["M1399.868 128c0.178-1.736 0.279-3.752 0.279-5.791 0-26.136-16.646-48.385-39.915-56.722l-0.42-0.131c-87.030-41.19-189.074-65.239-296.736-65.239-115.001 0-223.594 27.44-319.588 76.129l4.031-1.855c-13.42 7.947-29.578 12.643-46.833 12.643s-33.413-4.696-47.266-12.88l0.433 0.237c-92.114-47.265-200.974-74.968-316.304-74.968-107.283 0-208.967 23.972-299.987 66.851l4.301-1.821c-24.753 7.859-42.374 30.635-42.374 57.526 0 2.76 0.186 5.477 0.545 8.139l-0.034-0.31c1.506 133.12 0 266.541 0 399.962v389.12c0 64.452 7.529 70.174 69.572 58.428 160.828-30.118 322.259-45.176 484.593-10.24 41.887 4.043 79.51 19.604 110.429 43.438l-0.499-0.37c9.366 8.864 22.042 14.314 35.991 14.314s26.625-5.45 36.015-14.336l-0.024 0.023c28.498-22.389 63.856-37.29 102.462-41.192l0.841-0.069c167.153-36.141 333.101-21.384 498.447 11.445 48.489 9.638 60.235 0 60.235-47.887 1.506-269.854 0.904-536.696 1.807-804.442zM666.504 885.76c0 27.407-5.421 31.925-31.624 20.781-86.826-40.457-188.495-64.061-295.677-64.061-84.415 0-165.411 14.641-240.585 41.523l4.987-1.556c-30.118 9.638-36.744 3.313-36.442-26.504 0-115.652 0-231.304 0-346.955s0-231.304 0-346.955c-0.346-2.101-0.544-4.523-0.544-6.991 0-20.751 13.991-38.235 33.055-43.532l0.318-0.075c70.236-27.54 151.566-43.502 236.624-43.502 107.797 0 209.605 25.637 299.662 71.147l-3.806-1.744c20.35 7.712 34.554 27.043 34.554 49.691 0 1.698-0.080 3.377-0.236 5.033l0.016-0.212q-1.205 346.955-0.301 693.911zM1298.974 882.748c-70.521-25.646-151.925-40.476-236.793-40.476-106.735 0-207.992 23.457-298.896 65.497l4.413-1.831c-30.118 12.951-33.129 5.12-32.828-22.588 0-115.652 0-231.304 0-346.955s0-231.304 0-346.955c-0.211-1.682-0.331-3.628-0.331-5.602 0-20.117 12.483-37.319 30.126-44.281l0.323-0.112c87.281-45.099 190.507-71.541 299.909-71.541 85.919 0 168.028 16.309 243.402 46l-4.506-1.564c17.676 4.924 30.429 20.88 30.429 39.814 0 1.784-0.113 3.542-0.333 5.266l0.021-0.205q0 350.569 0 700.838c-1.205 29.816-8.734 33.732-36.442 24.696z","M880.941 434.899c54.525-15.858 117.159-24.98 181.923-24.98 44.303 0 87.61 4.269 129.53 12.417l-4.254-0.689c23.492 4.518 47.887 6.325 53.609-23.492s-17.769-38.551-40.96-42.165c-45.176-6.626-90.353-11.144-125.892-15.36-74.961 1.382-146.898 11.626-215.648 29.727l6.33-1.416c-23.191 6.626-49.092 14.758-40.056 46.682s32.527 25.6 55.416 19.275z","M1206.513 516.216c-39.428-8.842-84.711-13.909-131.178-13.909-2.907 0-5.809 0.020-8.706 0.059l0.439-0.005c-4.76-0.118-10.365-0.186-15.986-0.186-69.456 0-136.506 10.303-199.705 29.464l4.868-1.269c-21.384 6.325-38.852 17.167-32.828 41.864s26.805 30.118 50.296 22.287c55.582-16.26 119.433-25.615 185.469-25.615 46.909 0 92.715 4.72 136.97 13.711l-4.397-0.746c24.094 4.518 44.273 0 49.092-26.202s-12.649-34.936-34.334-39.454z","M1204.706 673.732c-41.892-8.583-90.307-13.816-139.83-14.451l-0.518-0.005c-72.244 0.563-141.853 10.863-207.888 29.648l5.498-1.337c-21.685 6.325-42.466 16.264-35.84 43.369s30.118 27.708 51.802 21.685c55.645-16.139 119.564-25.422 185.651-25.422 45.652 0 90.269 4.43 133.445 12.883l-4.367-0.712c21.986 4.216 45.478 3.012 50.296-24.696s-16.866-37.045-38.249-40.96z","M1206.212 199.078c-43.025-9.383-92.45-14.758-143.13-14.758-0.293 0-0.585 0-0.878 0.001l0.045-0c-72.248 0.215-141.998 10.54-208.027 29.631l5.335-1.321c-21.685 6.024-42.165 16.866-34.334 43.972s30.118 26.504 52.104 20.179c55.132-15.869 118.457-24.996 183.913-24.996 46.491 0 91.907 4.604 135.816 13.381l-4.398-0.733c22.889 4.518 44.875 0 49.393-26.202s-14.758-34.936-35.84-39.153z","M212.329 421.647c37.914-7.607 81.5-11.961 126.102-11.961 64.474 0 126.823 9.097 185.834 26.078l-4.736-1.166c22.889 6.626 46.984 9.638 55.115-19.576s-15.059-38.852-37.346-45.176c-62.816-17.653-135.21-28.546-209.9-30.102l-0.924-0.015c-33.732 3.915-79.511 8.433-124.687 14.758-24.094 3.614-49.995 11.746-43.671 43.369s31.021 28.612 54.212 23.793z","M536.998 686.984c-57.125-16.136-122.984-26.15-190.935-27.692l-0.915-0.016c-0.237-0-0.519-0-0.801-0-55.735 0-110.034 6.144-162.258 17.792l4.942-0.926c-17.046 0.738-30.586 14.736-30.586 31.897 0 1.925 0.17 3.811 0.497 5.642l-0.029-0.193c2.362 15.844 15.873 27.86 32.19 27.86 2.467 0 4.87-0.275 7.18-0.795l-0.217 0.041c6.388-0.153 12.514-0.804 18.478-1.917l-0.708 0.11c36.812-7.204 79.142-11.326 122.434-11.326 65.052 0 127.929 9.307 187.375 26.662l-4.717-1.18c23.191 6.325 47.586 9.336 55.718-19.576s-14.758-40.659-37.647-46.381z","M210.824 263.831c38.555-7.776 82.874-12.227 128.234-12.227 64.006 0 125.942 8.862 184.649 25.426l-4.779-1.152c23.492 6.325 47.285 9.336 55.718-18.974s-14.758-38.852-37.346-46.080c-58.552-16.877-125.88-26.847-195.45-27.405l-0.315-0.002c-1.555-0.012-3.394-0.020-5.234-0.020-49.101 0-97.022 5.052-143.272 14.663l4.544-0.79c-21.986 5.12-44.273 13.553-39.755 40.659s28.913 30.72 53.007 25.901z","M542.118 530.372c-60.551-18.247-130.136-28.75-202.174-28.75-50.709 0-100.202 5.204-147.974 15.108l4.699-0.814c-23.191 4.216-43.068 14.456-37.346 41.261s26.805 30.118 50.296 24.395c32.814-7.541 70.495-11.863 109.185-11.863 7.253 0 14.47 0.152 21.649 0.453l-1.027-0.034c5.442-0.183 11.837-0.288 18.258-0.288 59.327 0 116.572 8.911 170.471 25.468l-4.108-1.086c23.191 6.024 44.273 6.024 52.104-20.179s-13.553-37.346-34.033-43.671z"]},"ic_circle":{"viewBox":"0 0 1025 1024","paths":["M883.351 161.732c-90.543-95.747-216.891-156.82-357.52-161.708l-0.88-0.024c-3.070-0.066-6.687-0.104-10.314-0.104-138.198 0-263.562 54.947-355.438 144.186l0.123-0.119c-98.26 92.852-159.424 224.071-159.424 369.575 0 142.717 58.843 271.691 153.591 363.984l0.111 0.107c88.622 88.958 210.672 144.561 345.709 146.368l0.343 0.004h24.094c277.633-5.364 500.641-231.69 500.641-510.104 0-136.661-53.732-260.772-141.221-352.36l0.185 0.195z"]},"ic_games":{"viewBox":"0 0 1104 1024","paths":["M520.132 434.296c10.989 4.455 23.736 7.041 37.086 7.041 10.073 0 19.803-1.472 28.986-4.212l-0.716 0.184c0-2.711 0-33.431 2.409-49.995 16.866-103.304 70.776-123.482 175.586-123.784 24.998 0 50.296 0 75.595 0 114.246-6.611 205.436-96.864 213.493-210.099l0.041-0.725c1.506-26.805-1.807-51.2-33.732-52.706s-36.744 19.576-39.454 46.984c-5.889 80.823-72.907 144.164-154.719 144.164-2.784 0-5.552-0.073-8.3-0.218l0.384 0.016c-32.527 0-65.355 0-97.882 0-118.965 6.626-201.487 103.906-198.776 192.151 0 4.518-0.602 46.984 0 51.2z","M984.245 495.736c-75.294-102.099-161.129-121.976-276.179-67.464-25.111 12.909-55.017 25.262-85.993 35.23l-4.36 1.212c-84.028 24.696-159.322-4.819-234.616-39.755-107.52-49.995-184.922-30.118-258.108 62.946-76.895 99.462-123.702 225.601-124.986 362.623l-0.002 0.295c0 14.758 0 30.118 0 44.273 5.12 92.762 70.174 143.661 160.226 120.471 75.294-18.974 128.301-72.282 178.296-127.398 31.84-37.037 78.748-60.348 131.1-60.348 2.193 0 4.377 0.041 6.55 0.122l-0.314-0.009c47.586 0 95.172 1.807 142.456 0 2.364-0.107 5.136-0.168 7.923-0.168 59.396 0 112.325 27.687 146.586 70.859l0.296 0.386c35.659 40.66 77.324 74.937 123.836 101.749l2.357 1.253c109.327 57.224 202.692 0 204.499-122.88 0.198-5.809 0.31-12.636 0.31-19.489 0-137.013-45.003-263.515-121.033-365.53l1.156 1.622zM407.492 679.153h-93.967v93.967h-78.306v-93.967h-93.967v-76.8h93.967v-95.473h78.306v95.473h93.967zM708.668 683.671c-0.269 0.006-0.585 0.009-0.903 0.009-24.95 0-45.176-20.226-45.176-45.176s20.226-45.176 45.176-45.176c24.95 0 45.176 20.226 45.176 45.176 0 0.103-0 0.205-0.001 0.308l0-0.016c0 0.001 0 0.003 0 0.004 0 24.784-20.091 44.875-44.875 44.875-0.212 0-0.423-0.001-0.634-0.004l0.032 0zM807.153 783.059c-0.089 0.001-0.195 0.001-0.3 0.001-24.95 0-45.176-20.226-45.176-45.176s20.226-45.176 45.176-45.176c24.95 0 45.176 20.226 45.176 45.176 0 0.106-0 0.211-0.001 0.316l0-0.016c0 24.784-20.091 44.875-44.875 44.875v0zM807.153 583.68c-24.784-0-44.875-20.091-44.875-44.875s20.091-44.875 44.875-44.875c24.784 0 44.875 20.091 44.875 44.875v0c0.003 0.179 0.004 0.391 0.004 0.603 0 24.618-19.957 44.574-44.574 44.574-0.107 0-0.215-0-0.322-0.001l0.016 0zM906.842 683.369c-0.089 0.001-0.195 0.001-0.3 0.001-24.95 0-45.176-20.226-45.176-45.176s20.226-45.176 45.176-45.176c24.95 0 45.176 20.226 45.176 45.176 0 0.106-0 0.211-0.001 0.316l0-0.016c0 0 0 0.001 0 0.001 0 24.844-20.055 45.005-44.859 45.175l-0.016 0z"]},"ic_info":{"viewBox":"0 0 1025 1024","paths":["M883.351 161.732c-90.543-95.747-216.891-156.82-357.52-161.708l-0.88-0.024c-3.070-0.066-6.687-0.104-10.314-0.104-138.198 0-263.562 54.947-355.438 144.186l0.123-0.119c-98.26 92.852-159.424 224.071-159.424 369.575 0 142.717 58.843 271.691 153.591 363.984l0.111 0.107c88.622 88.958 210.672 144.561 345.709 146.368l0.343 0.004h24.094c277.633-5.364 500.641-231.69 500.641-510.104 0-136.661-53.732-260.772-141.221-352.36l0.185 0.195zM512 894.494v0c-210.453-1.363-380.611-171.944-381.289-382.429l-0-0.065c0.342-210.443 170.847-380.947 381.257-381.289l0.033-0c210.913 0 381.892 170.979 381.892 381.892s-170.979 381.892-381.892 381.892v0z","M512 234.315c-45.742 0-82.824 37.081-82.824 82.824s37.081 82.824 82.824 82.824c45.742 0 82.824-37.081 82.824-82.824v0c0-45.742-37.081-82.824-82.824-82.824v-0z","M512 439.115c-0.001-0-0.002-0-0.003-0-39.92 0-72.282 32.362-72.282 72.282 0 0.212 0.001 0.423 0.003 0.635l-0-0.032v225.882c2.528 38.025 33.99 67.91 72.433 67.91s69.905-29.886 72.421-67.691l0.012-0.219v-225.882c0.004-0.269 0.006-0.587 0.006-0.906 0-39.754-32.227-71.981-71.981-71.981-0.214 0-0.427 0.001-0.641 0.003l0.033-0z"]},"ic_music":{"viewBox":"0 0 907 1024","paths":["M124.988 1024c-17.343-2.846-32.741-7.035-47.459-12.605l1.68 0.558c-46.661-16.040-79.594-59.552-79.594-110.756 0-22.405 6.306-43.338 17.239-61.12l-0.29 0.507c24.967-45.951 65.413-80.828 114.195-98.037l1.457-0.448c24.953-10.689 53.992-16.904 84.482-16.904 16.268 0 32.123 1.769 47.382 5.126l-1.455-0.269c4.948 1.005 9.282 2.356 13.417 4.089l-0.467-0.173c9.939 3.614 9.939 3.614 9.939-7.529 0-143.059 3.313-532.179 3.313-532.179l618.014-194.259s0 515.012 0 716.499c0.073 1.853 0.115 4.029 0.115 6.215 0 59.92-31.248 112.543-78.337 142.46l-0.686 0.407c-36.949 27.037-83.293 43.261-133.427 43.261-22.092 0-43.448-3.15-63.643-9.027l1.607 0.4c-42.447-9.687-76.085-40.135-90.086-79.847l-0.267-0.869c-3.886-11.323-6.13-24.37-6.13-37.94 0-22.549 6.195-43.651 16.976-61.697l-0.305 0.55c25.448-45.949 66.878-80.429 116.621-96.282l1.44-0.396c23.183-9.063 50.025-14.315 78.093-14.315 26.535 0 51.974 4.694 75.531 13.298l-1.53-0.489c4.518 1.807 6.024 0 5.722-3.915v-5.722c0-97.28 0-337.318 0-337.318l-460.499 146.372s-4.518 287.624-3.614 409.299c0.054 1.643 0.085 3.576 0.085 5.515 0 75.203-46.559 139.532-112.424 165.733l-1.204 0.423c-20.336 9.788-43.934 17.252-68.706 21.191l-1.468 0.192z"]},"ic_play_next":{"viewBox":"0 0 965 1024","paths":["M877.628 0c-48.237-0-87.341 39.104-87.341 87.341v849.318c0 48.237 39.104 87.341 87.341 87.341s87.341-39.104 87.341-87.341v-849.318c0-48.237-39.104-87.341-87.341-87.341v0z","M0 927.322l717.402-415.322-717.402-415.322v830.645z"]},"ic_play_prev":{"viewBox":"0 0 965 1024","paths":["M87.341 0c0-0 0-0 0.001-0 48.071 0 87.040 38.969 87.040 87.040 0 0.106-0 0.212-0.001 0.318l0-0.016v849.318c0.096 1.532 0.151 3.323 0.151 5.127 0 48.237-39.104 87.341-87.341 87.341s-87.341-39.104-87.341-87.341c0-1.804 0.055-3.594 0.162-5.371l-0.012 0.244v-849.318c0-48.237 39.104-87.341 87.341-87.341l-0-0z","M964.969 927.322l-717.402-415.322 717.402-415.322v830.645z"]},"ic_podcast":{"viewBox":"0 0 933 1024","paths":["M461.402 602.353c-1.038-0.034-2.259-0.053-3.484-0.053-57.37 0-104.828 42.435-112.699 97.63l-0.071 0.607c-2.442 10.59-3.841 22.75-3.841 35.238s1.4 24.648 4.050 36.333l-0.209-1.095c19.465 60.641 31.077 130.457 31.921 202.863l0.004 0.431c-1.506 25.901 16.866 40.659 41.864 46.682 10.723 2.052 23.056 3.225 35.663 3.225 3.24 0 6.462-0.078 9.665-0.231l-0.452 0.017c75.896 0 90.353-14.456 90.353-90.353-0.012-1.033-0.019-2.253-0.019-3.474 0-38.249 6.627-74.951 18.795-109.020l-0.705 2.263c9.747-24.689 15.397-53.286 15.397-83.203 0-15.095-1.438-29.853-4.186-44.147l0.233 1.458c-9.799-54.6-56.938-95.496-113.629-95.496-3.044 0-6.060 0.118-9.044 0.349l0.396-0.025z","M582.174 460.499c-3.266-62.75-54.941-112.394-118.212-112.394s-114.946 49.643-118.2 112.104l-0.012 0.29c3.266 62.75 54.941 112.394 118.212 112.394s114.946-49.643 118.2-112.104l0.012-0.29z","M798.118 138.24c-84.395-85.371-201.508-138.24-330.97-138.24-0.22 0-0.44 0-0.659 0l0.034-0c-0.506-0.002-1.105-0.003-1.704-0.003-170.862 0-320.032 92.872-399.784 230.889l-1.186 2.225c-40.123 66.9-63.851 147.61-63.851 233.862 0 84.782 22.927 164.21 62.918 232.421l-1.176-2.169c30.144 52.899 69.046 97.277 115.21 132.653l1.044 0.768c5.645 5.318 13.273 8.586 21.663 8.586 9.976 0 18.874-4.62 24.67-11.837l0.048-0.062c4.573-5.707 7.339-13.033 7.339-21.006 0-10.261-4.581-19.452-11.81-25.638l-0.046-0.038-9.035-8.433-2.711-2.409c-86.64-73.508-141.258-182.471-141.258-304.19 0-219.895 178.26-398.155 398.155-398.155 0.426 0 0.852 0.001 1.277 0.002l-0.066-0c9.939 0 20.179 0 30.118 0 207.34 15.263 369.778 187.233 369.778 397.143 0 66.824-16.462 129.803-45.552 185.103l1.045-2.18c-27.484 52.013-63.657 95.783-107.049 131.007l-0.772 0.607c-7.71 5.639-13.041 14.137-14.434 23.903l-0.022 0.191c-0.066 0.748-0.104 1.618-0.104 2.497 0 8.021 3.136 15.31 8.248 20.708l-0.013-0.014c6.116 7.186 15.168 11.715 25.278 11.715 8.322 0 15.927-3.068 21.745-8.135l-0.040 0.034c4.777-3.243 8.9-6.41 12.833-9.792l-0.184 0.154c102.019-84.144 166.556-210.569 166.556-352.067 0-0.744-0.002-1.488-0.005-2.232l0 0.115c0.005-0.766 0.007-1.672 0.007-2.578 0-127.215-51.822-242.326-135.508-325.375l-0.029-0.029z","M774.927 411.407c-24.748-150.036-153.508-263.075-308.67-263.075-172.656 0-312.621 139.965-312.621 312.621 0 14.389 0.972 28.55 2.854 42.423l-0.179-1.616c7.58 72.532 40.759 136.15 90.204 182.675l0.149 0.139c5.521 5.973 13.395 9.7 22.14 9.7 7.844 0 14.988-2.999 20.348-7.913l-0.022 0.020c5.594-5.473 9.062-13.098 9.062-21.534s-3.468-16.061-9.056-21.529l-0.005-0.005c-1.807-2.409-3.915-4.518-5.722-6.626l-4.216-4.216c-39.974-43.81-64.458-102.353-64.458-166.615 0-0.613 0.002-1.225 0.007-1.837l-0.001 0.094c0.339-139.434 113.024-252.437 252.304-253.289l0.081-0c138.899 0.428 251.332 113.126 251.332 252.084 0 68.002-26.926 129.715-70.698 175.059l0.071-0.074c-24.395 26.805-14.456 41.562-5.12 50.296 4.686 5.018 11.341 8.146 18.727 8.146 0.299 0 0.596-0.005 0.892-0.015l-0.043 0.001c12.301-2.027 22.812-8.493 30.040-17.667l0.078-0.102c54.025-54.736 87.393-129.975 87.393-213.008 0-19.136-1.772-37.859-5.162-56.012l0.291 1.876z"]},"ic_radio":{"viewBox":"0 0 1096 1024","paths":["M1095.379 356.292c0-84.932-36.744-129.506-117.76-150.588-9.781-5.009-16.729-14.347-18.35-25.416l-0.022-0.184c0-32.828-16.264-44.875-46.080-49.694-180.706-30.118-359.906-58.729-539.708-87.642-85.233-15.36-170.466-28.612-255.699-42.767-24.395-2.711-43.671 4.518-47.285 30.118s12.047 39.153 36.744 43.068l394.541 65.355 359.002 58.428v3.915h-69.873c-210.824 0-418.635 0-628.254 0-96.979 0.301-160.828 54.513-162.635 140.047q0 274.372 0 548.141c0.128 74.587 60.623 135.003 135.228 135.003 1.589 0 3.171-0.027 4.746-0.082l-0.229 0.006h817.393c0.69 0.013 1.504 0.020 2.32 0.020 70.057 0 127.588-53.633 133.774-122.079l0.038-0.52c1.233-9.477 1.996-20.55 2.107-31.779l0.001-0.146c0.301-171.369 0.602-342.136 0-513.205zM316.235 950.212c-125.36-0.513-226.786-102.256-226.786-227.688 0-125.749 101.94-227.689 227.689-227.689s227.689 101.94 227.689 227.689c0 0.105-0 0.21-0 0.316l0-0.016c-0.513 125.693-102.526 227.388-228.29 227.388-0.106 0-0.213-0-0.319-0l0.016 0zM722.824 664.395c-0.090 0-0.197 0.001-0.304 0.001-42.914 0-77.704-34.789-77.704-77.704 0-0.212 0.001-0.424 0.003-0.635l-0 0.032c-0.142-1.774-0.223-3.84-0.223-5.926 0-43.58 35.328-78.908 78.908-78.908s78.908 35.328 78.908 78.908c0 1.237-0.028 2.467-0.085 3.689l0.006-0.173c0.065 1.185 0.103 2.572 0.103 3.967 0 42.415-34.385 76.8-76.8 76.8-0.989 0-1.974-0.019-2.955-0.056l0.141 0.004zM838.475 421.647c-45.478 0-128.904 0-128.904 0-13.84-22.941-27.754-50.151-39.846-78.328l-1.716-4.495c-15.736 32.157-31.666 59.283-49.362 85.102l1.475-2.279h-55.416c-146.974-2.409-293.647-1.807-441.224 0-25.6 0-36.141-6.927-33.431-33.732 3.012-30.118-6.325-71.379 9.035-92.16 11.445-14.758 54.212-5.722 83.125-5.722h821.007v131.614h-164.744zM933.647 664.395c-0.453 0.010-0.986 0.015-1.521 0.015-42.249 0-76.499-34.25-76.499-76.499 0-0.535 0.005-1.068 0.016-1.6l-0.001 0.079c-0.045-0.989-0.070-2.148-0.070-3.313 0-43.166 34.927-78.174 78.062-78.306l0.012-0c43.147 0.507 77.97 35.435 78.306 78.575l0 0.032c0.037 0.899 0.058 1.953 0.058 3.013 0 43.081-34.924 78.005-78.005 78.005-0.126 0-0.253-0-0.379-0.001l0.019 0z"]},"ic_videos":{"viewBox":"0 0 1342 1024","paths":["M1342.344 85.835c0.020-0.665 0.031-1.448 0.031-2.233 0-16.543-4.958-31.927-13.469-44.749l0.187 0.299c-14.571-23.67-40.339-39.214-69.738-39.214-1.107 0-2.208 0.022-3.304 0.066l0.157-0.005h-607.172c-73.186 0-146.071 0-219.256 0-6.15 0.243-11.955 0.89-17.626 1.922l0.76-0.115c-27.209 4.546-49.428 22.378-60.035 46.474l-0.2 0.51c-1.865 3.923-3.516 8.538-4.709 13.334l-0.11 0.52c-1.827 6.48-2.92 13.935-3.011 21.632l-0 0.053v56.922c0 9.939 0 19.878 0 30.118h-85.233c-6.15 0.243-11.955 0.89-17.626 1.922l0.76-0.115c-27.118 4.763-49.249 22.513-60.030 46.474l-0.205 0.51c-1.504 3.65-3.048 8.263-4.319 12.988l-0.198 0.866c-1.807 6.475-2.899 13.928-3.011 21.619l-0.001 0.066c0 9.638 0 19.275 0 30.118v28.009c0 9.939 0 19.576 0 30.118h-90.353c-6.042 0.244-11.742 0.891-17.307 1.921l0.742-0.114c-26.895 4.515-48.957 21.8-60.027 45.287l-0.209 0.492c-1.72 3.888-3.271 8.51-4.406 13.294l-0.112 0.56c-1.72 6.372-2.904 13.791-3.302 21.418l-0.011 0.267v512c-0.007 0.404-0.011 0.881-0.011 1.359 0 16.53 4.951 31.904 13.45 44.72l-0.187-0.3c14.571 23.67 40.339 39.214 69.738 39.214 1.107 0 2.208-0.022 3.304-0.066l-0.157 0.005h826.428c6.095-0.189 11.903-0.838 17.559-1.917l-0.693 0.11c27.141-4.709 49.293-22.48 60.031-46.474l0.204-0.51c1.583-3.756 3.129-8.372 4.356-13.116l0.162-0.738c1.669-6.13 2.654-13.178 2.71-20.447l0-0.033c0-9.336 0-18.974 0-28.311v-30.118c0-9.638 0-19.275 0-30.118h90.353c5.987-0.188 11.689-0.838 17.239-1.916l-0.674 0.109c27.163-4.656 49.338-22.446 60.033-46.474l0.203-0.51c1.78-3.928 3.334-8.554 4.423-13.356l0.095-0.498c1.572-6.022 2.65-13.034 3.002-20.236l0.010-0.244v-86.739h86.136c5.987-0.188 11.689-0.838 17.239-1.916l-0.674 0.109c27.118-4.763 49.249-22.513 60.030-46.474l0.205-0.51c1.72-3.888 3.271-8.51 4.406-13.294l0.112-0.56c1.333-5.948 2.3-12.968 2.696-20.14l0.015-0.34zM890.579 906.24c0 9.939 0 21.986-13.854 24.094h-752.941c-0.859 0.132-1.85 0.207-2.859 0.207-4.753 0-9.117-1.669-12.538-4.452l0.036 0.029c-2.752-3.492-4.414-7.954-4.414-12.805 0-1.007 0.072-1.998 0.21-2.967l-0.013 0.111v-418.936c0-10.24 0-20.781 0-30.118s0-23.492 14.155-25.299h755.049c0.884-0.135 1.904-0.212 2.942-0.212 4.825 0 9.261 1.669 12.761 4.461l-0.041-0.032c2.656 3.164 4.269 7.281 4.269 11.774 0 1.269-0.129 2.508-0.374 3.705l0.020-0.118zM1066.165 735.172v0c0 9.939 0 21.986-13.854 24.094h-55.718v-332.198c0.028-0.797 0.044-1.734 0.044-2.674 0-16.357-4.848-31.582-13.185-44.317l0.19 0.309c-14.92-23.686-40.933-39.194-70.568-39.194-0.921 0-1.838 0.015-2.751 0.045l0.133-0.003h-629.459v-20.179c0-10.24 0-20.781 0-30.118s0-23.492 13.854-25.299h752.941c0.899-0.148 1.934-0.233 2.989-0.233 4.862 0 9.303 1.8 12.694 4.77l-0.022-0.019c2.755 3.384 4.423 7.748 4.423 12.501 0 1.009-0.075 2-0.22 2.968l0.013-0.109zM1236.329 564.104v0c0 9.939 0 22.287-13.854 24.094h-50.296v-331.294c0.011-0.492 0.017-1.071 0.017-1.651 0-16.534-4.953-31.911-13.456-44.728l0.187 0.3c-14.712-23.674-40.577-39.201-70.069-39.201-0.99 0-1.977 0.018-2.958 0.052l0.142-0.004h-634.278v-21.082c0-10.541 0-20.781 0-30.118s0-23.492 13.854-25.299h752.941c0.859-0.132 1.85-0.207 2.859-0.207 4.753 0 9.117 1.669 12.538 4.452l-0.036-0.029c2.752 3.492 4.414 7.954 4.414 12.805 0 1.007-0.072 1.998-0.21 2.967l0.013-0.111z"]},"ic_arrow_right":{"viewBox":"0 0 606 1024","paths":["M341.534 512l-309.609-319.247c-19.713-20.744-31.839-48.862-31.839-79.812s12.126-59.067 31.886-79.861l-0.047 0.050c19.51-20.447 46.972-33.16 77.402-33.16s57.892 12.713 77.363 33.118l0.040 0.042 387.012 399.059c19.848 20.685 32.069 48.821 32.069 79.812s-12.221 59.127-32.107 79.852l0.038-0.040-387.012 399.059c-19.51 20.447-46.972 33.16-77.402 33.16s-57.892-12.713-77.363-33.118l-0.040-0.042c-19.713-20.744-31.839-48.862-31.839-79.812s12.126-59.067 31.886-79.861l-0.047 0.050z"]},"ic_arrow_thin_left":{"viewBox":"0 0 565 1024","paths":["M479.774 14.155l-465.016 463.511c-8.963 8.73-14.578 20.859-14.757 34.301l-0 0.033c-0.001 0.103-0.001 0.225-0.001 0.348 0 13.437 5.534 25.582 14.448 34.278l0.010 0.009 464.113 463.209c9.052 8.82 21.434 14.26 35.087 14.26s26.035-5.44 35.098-14.27l-0.011 0.010c8.921-8.839 14.448-21.091 14.456-34.634l0-0.002c0.001-0.132 0.002-0.288 0.002-0.443 0-13.463-5.663-25.604-14.737-34.17l-0.023-0.021-427.972-428.574 429.478-427.972c9.102-8.867 14.75-21.242 14.758-34.935l0-0.001c-0.080-13.682-5.71-26.034-14.751-34.93l-0.007-0.006c-9.052-8.82-21.434-14.26-35.087-14.26s-26.035 5.44-35.098 14.27l0.011-0.010z"]},"ic_arrow_thin_right":{"viewBox":"0 0 565 1024","paths":["M84.932 14.155l465.016 463.511c8.963 8.73 14.578 20.859 14.757 34.301l0 0.033c-0.021 13.598-5.67 25.873-14.743 34.621l-0.015 0.014-464.113 463.209c-9.052 8.82-21.434 14.26-35.087 14.26s-26.035-5.44-35.098-14.27l0.011 0.010c-9.355-8.799-15.292-21.14-15.66-34.87l-0.001-0.066c-0.001-0.103-0.001-0.225-0.001-0.348 0-13.437 5.534-25.582 14.448-34.278l0.010-0.009 430.080-428.273-429.779-427.972c-9.101-8.684-14.76-20.907-14.76-34.451 0-0.171 0.001-0.341 0.003-0.511l-0 0.026c-0-0.043-0-0.094-0-0.145 0-13.595 5.526-25.899 14.455-34.789l0.002-0.002c9.099-8.838 21.532-14.287 35.238-14.287s26.138 5.449 35.25 14.299l-0.012-0.012z"]},"ic_arrow_up":{"viewBox":"0 0 1731 1024","paths":["M1674.541 969.788c-35.054 33.866-82.855 54.734-135.529 54.734s-100.475-20.868-135.585-54.788l0.056 0.054-538.202-523.144-539.708 523.144c-34.993 34.004-82.813 54.97-135.529 54.97s-100.536-20.966-135.576-55.015l0.046 0.045c-34.583-32.979-56.087-79.409-56.087-130.861s21.504-97.882 56.015-130.793l0.072-0.068 675.84-653.854c35.054-33.866 82.855-54.734 135.529-54.734s100.475 20.868 135.585 54.788l-0.056-0.054 673.129 653.854c34.583 32.979 56.087 79.409 56.087 130.861s-21.504 97.882-56.015 130.793l-0.072 0.068z"]},"ic_bell":{"viewBox":"0 0 926 1024","paths":["M903.529 703.548c-35.951-2.417-64.198-32.171-64.198-68.523 0-0.899 0.017-1.793 0.051-2.683l-0.004 0.128v4.216c-34.936-371.652-201.186-502.362-323.765-530.071 8.732-11.117 14.005-25.313 14.005-40.74 0-36.594-29.665-66.259-66.259-66.259s-66.259 29.665-66.259 66.259c0 15.427 5.272 29.623 14.113 40.883l-0.109-0.143c-123.482 28.612-293.647 158.72-325.572 523.445v3.012s4.819 70.475-62.946 70.475c-12.407 0.167-22.421 10.181-22.588 22.572l-0 0.016v84.932c0 12.475 10.113 22.588 22.588 22.588v0h880.941c12.475 0 22.588-10.113 22.588-22.588v0-84.932c-0.167-12.407-10.181-22.421-22.572-22.588l-0.016-0z","M463.209 1024c72.945-0.339 132.008-59.296 132.517-132.168l0-0.049h-264.433c0.17 72.847 59.092 131.875 131.883 132.216l0.033 0z"]},"ic_bell_dot":{"viewBox":"0 0 926 1024","paths":["M462.908 1024c73.013-0.17 132.176-59.227 132.518-132.184l0-0.033h-264.132c0.337 72.674 58.989 131.537 131.55 132.216l0.065 0z","M903.529 703.548v0c-35.926-2.256-64.209-31.945-64.209-68.241 0-0.998 0.021-1.991 0.064-2.978l-0.005 0.141v4.518c-6.861-75.256-20.275-144.277-39.886-210.638l1.938 7.645h-4.216c-0.007 0-0.015 0-0.023 0-118.597 0-214.739-96.142-214.739-214.739 0-28.751 5.65-56.183 15.901-81.245l-0.519 1.433c-23.758-14.377-51.276-25.871-80.5-33.013l-2.022-0.418c8.824-11.152 14.155-25.419 14.155-40.932 0-36.594-29.665-66.259-66.259-66.259s-66.259 29.665-66.259 66.259c0 15.513 5.331 29.781 14.261 41.071l-0.106-0.139c-123.482 29.214-293.647 159.322-325.572 524.047v3.012s4.819 70.475-62.946 70.475c-12.475 0-22.588 10.113-22.588 22.588v0 84.932c0.167 12.407 10.181 22.421 22.572 22.588l0.016 0h880.941c12.475 0 22.588-10.113 22.588-22.588v0-84.932c0-12.475-10.113-22.588-22.588-22.588v0z","M797.214 90.353c-71.191 0.001-128.902 57.713-128.902 128.904s57.712 128.904 128.904 128.904c70.98 0 128.56-57.369 128.902-128.268l0-0.033c0.001-0.179 0.001-0.391 0.001-0.602 0-71.191-57.712-128.904-128.904-128.904-0.001 0-0.001 0-0.002 0l0-0z"]},"ic_broken_link":{"viewBox":"0 0 1087 1024","paths":["M1086.344 355.991c-6.842-92.958-70.074-169.496-155.342-195.947l-1.571-0.42c-22.578-9.159-48.767-14.474-76.198-14.474s-53.62 5.315-77.594 14.97l1.397-0.497c-34.334 13.252-66.56 30.118-99.689 46.984s-71.078 35.84-105.111 53.911c-15.107 6.728-25.448 21.61-25.448 38.907 0 1.253 0.054 2.493 0.161 3.718l-0.011-0.159c0.505 16.438 10.692 30.376 25.030 36.343l0.269 0.099c5.428 2.015 11.699 3.18 18.242 3.18 10.658 0 20.594-3.093 28.959-8.43l-0.217 0.13c57.525-28.612 115.049-57.525 172.875-85.534 19.113-10.021 41.754-15.902 65.769-15.902 54.677 0 102.235 30.481 126.607 75.379l0.377 0.758c9.611 18.227 15.253 39.833 15.253 62.757 0 54.833-32.276 102.127-78.865 123.921l-0.839 0.353-240.941 120.471c-11.46 6.066-24.745 10.951-38.725 13.969l-1.031 0.186c-7.731 1.472-16.623 2.315-25.712 2.315-61.068 0-113.255-38.024-134.178-91.687l-0.336-0.98c-10.24-27.106-25.299-38.551-47.887-37.045-32.226 2.409-46.984 30.118-34.033 65.958 33.82 88.878 118.315 150.884 217.292 150.884 36.527 0 71.082-8.445 101.818-23.489l-1.369 0.605q123.784-64.753 248.471-124.988c73.64-37.403 123.22-112.587 123.22-199.352 0-5.945-0.233-11.836-0.69-17.664l0.049 0.771zM544.828 752.941c-7.056-15.193-22.184-25.539-39.729-25.539-14.078 0-26.601 6.662-34.587 17.005l-0.075 0.101c-46.682 45.176-92.461 90.353-139.144 136.132-26.17 26.802-62.663 43.423-103.039 43.423-38.261 0-73.035-14.926-98.819-39.272l0.070 0.065c-25.366-24.935-41.086-59.614-41.086-97.965 0-39.957 17.064-75.929 44.303-101.026l0.096-0.087c63.247-62.344 127.096-124.386 190.645-186.729 10.184-10.433 21.77-19.429 34.47-26.701l0.767-0.405c19.434-10.31 42.489-16.364 66.957-16.364 45.113 0 85.419 20.578 112.045 52.86l0.198 0.248c8.149 9.613 20.232 15.674 33.732 15.674 24.375 0 44.135-19.76 44.135-44.135 0-10.876-3.934-20.832-10.456-28.525l0.053 0.064c-42.837-51.214-106.766-83.555-178.248-83.555-60.188 0-115.021 22.929-156.24 60.529l0.182-0.164c-69.572 66.259-137.939 133.722-205.704 201.487-39.203 39.731-63.415 94.339-63.415 154.601 0 31.194 6.488 60.873 18.187 87.761l-0.551-1.421c34.192 80.811 112.816 136.48 204.443 136.48 1.608 0 3.212-0.017 4.812-0.051l-0.239 0.004c3.041 0.157 6.603 0.246 10.185 0.246 54.022 0 103.298-20.319 140.603-53.731l-0.2 0.176c54.814-49.694 106.616-103.002 159.322-155.106 6.755-7.155 10.908-16.83 10.908-27.475 0-6.803-1.696-13.21-4.688-18.821l0.105 0.216zM947.501 804.141l-97.28-38.852c-3.695-1.547-7.99-2.446-12.494-2.446-13.976 0-25.93 8.654-30.797 20.895l-0.079 0.224c-1.499 3.678-2.369 7.946-2.369 12.417 0 14.055 8.596 26.102 20.818 31.171l0.224 0.082 97.28 38.852c3.604 1.418 7.778 2.24 12.144 2.24 14.175 0 26.326-8.666 31.444-20.989l0.083-0.225c1.409-3.576 2.226-7.719 2.226-12.052 0-14.115-8.67-26.206-20.975-31.236l-0.225-0.081zM769.506 870.701c-5.198-12.127-17.032-20.467-30.815-20.467-4.755 0-9.277 0.993-13.372 2.782l0.215-0.084c-11.966 5.449-20.135 17.304-20.135 31.066 0 4.769 0.981 9.308 2.752 13.428l-0.085-0.221 41.261 96.678c5.823 10.613 16.921 17.688 29.672 17.688 18.63 0 33.732-15.102 33.732-33.732 0-3.739-0.608-7.337-1.732-10.698l0.069 0.238zM615.002 861.967c-3.695-1.547-7.99-2.446-12.494-2.446-13.976 0-25.93 8.654-30.797 20.895l-0.079 0.224-38.852 97.581c-1.491 3.658-2.357 7.902-2.357 12.348 0 18.517 15.011 33.528 33.528 33.528 14.071 0 26.118-8.668 31.091-20.955l0.080-0.225 37.346-97.28c1.61-3.799 2.545-8.218 2.545-12.854 0-13.662-8.122-25.428-19.802-30.73l-0.212-0.086zM193.958 219.859l97.28 38.852c3.768 1.581 8.148 2.499 12.742 2.499 13.76 0 25.596-8.239 30.843-20.054l0.085-0.215c1.418-3.604 2.24-7.778 2.24-12.144 0-14.175-8.666-26.326-20.989-31.444l-0.225-0.083-97.28-39.755c-3.604-1.418-7.778-2.24-12.144-2.24-14.175 0-26.326 8.666-31.444 20.989l-0.083 0.225c-1.409 3.576-2.226 7.719-2.226 12.052 0 14.115 8.67 26.206 20.975 31.236l0.225 0.081zM371.953 153.299c3.659 14.793 16.818 25.588 32.498 25.588 18.463 0 33.431-14.967 33.431-33.431 0-6.961-2.127-13.425-5.768-18.777l0.075 0.116-40.659-96.678c-6.213-8.34-16.046-13.683-27.127-13.683-18.63 0-33.732 15.102-33.732 33.732 0 2.283 0.227 4.514 0.659 6.67l-0.036-0.216zM526.456 162.033c3.678 1.499 7.946 2.369 12.417 2.369 14.055 0 26.102-8.596 31.171-20.818l0.082-0.224 38.551-97.581c1.491-3.658 2.357-7.902 2.357-12.348 0-18.517-15.011-33.528-33.528-33.528-14.071 0-26.118 8.668-31.091 20.955l-0.080 0.225-38.551 97.28c-1.499 3.678-2.369 7.946-2.369 12.417 0 14.055 8.596 26.102 20.818 31.171l0.224 0.082z"]},"ic_data_export":{"viewBox":"0 0 934 1024","paths":["M916.781 259.012c-4.198-2.361-9.216-3.752-14.559-3.752-7.726 0-14.773 2.909-20.105 7.693l0.028-0.025c-9.745 8.598-15.86 21.115-15.86 35.060 0 3.045 0.292 6.022 0.848 8.904l-0.047-0.293v531.878c2.711 65.656-39.454 112.64-99.689 110.231h-592.715c-2.993 0.31-6.466 0.486-9.981 0.486-18.463 0-35.789-4.872-50.761-13.401l0.506 0.265c-27.939-18.045-46.171-49.029-46.171-84.271 0-1.503 0.033-2.999 0.099-4.487l-0.007 0.212v-556.875c-0.007-0.45-0.011-0.981-0.011-1.513 0-57.299 46.112-103.827 103.251-104.501l0.064-0.001h566.513c3.614 0 12.047-2.711 10.842 1.807s-4.518 6.626-7.228 9.638c-10.842 12.047-22.588 23.793-32.527 36.744-5.323 6.773-8.537 15.422-8.537 24.823 0 10.39 3.926 19.863 10.376 27.016l-0.032-0.036 3.313 3.313 2.409 1.807c5.051 3.965 11.5 6.358 18.508 6.358 9.567 0 18.092-4.461 23.609-11.416l0.048-0.062q50.899-55.115 101.195-111.736c5.612-6.728 9.019-15.465 9.019-24.998s-3.407-18.27-9.070-25.060l0.051 0.063c-4.478-5.602-9.011-10.612-13.827-15.333l-0.027-0.027c-30.118-30.118-56.019-64.151-86.136-94.268-5.927-8.090-15.392-13.283-26.071-13.283-5.442 0-10.568 1.349-15.064 3.73l0.175-0.085c-2.76 1.539-5.136 3.339-7.23 5.422l0.001-0.001c-7.767 7.226-12.61 17.505-12.61 28.914 0 10.361 3.994 19.788 10.525 26.828l-0.023-0.025c12.649 14.456 26.805 27.407 40.056 40.96l-2.108 4.216h-578.259c-1.398-0.047-3.042-0.073-4.692-0.073-35.329 0-67.817 12.166-93.502 32.538l0.312-0.239c-43.215 31.463-71.128 81.685-71.679 138.454l-0.001 0.087v575.247c-0.034 1.249-0.053 2.719-0.053 4.194 0 85.961 65.958 156.517 150.025 163.819l0.617 0.043c30.118 0 60.235 0 90.353 0h538.504c0.107 0 0.234 0.001 0.362 0.001 17.811 0 34.768-3.655 50.162-10.256l-0.829 0.316c62.094-26.862 104.753-87.594 104.753-158.29 0-3.223-0.089-6.426-0.264-9.606l0.019 0.442v-554.165c0.087-0.932 0.136-2.014 0.136-3.109 0-12.771-6.737-23.969-16.85-30.234l-0.152-0.088z","M722.824 358.4c-26.899 0.16-48.722 21.667-49.392 48.427l-0.001 0.062v419.539c0.67 26.822 22.494 48.329 49.377 48.489l0.015 0c26.515-0.502 47.857-21.949 48.188-48.458l0-0.032v-419.539c-0.331-26.54-21.673-47.988-48.141-48.489l-0.047-0.001z","M347.859 312.019v514.409c-0.096 1.143-0.151 2.475-0.151 3.819 0 26.78 21.709 48.489 48.489 48.489s48.489-21.709 48.489-48.489c0-1.344-0.055-2.675-0.162-3.991l0.011 0.173v-514.409c-2.041-25.086-22.903-44.671-48.339-44.671s-46.298 19.585-48.327 44.498l-0.011 0.173z","M508.988 483.991v342.438c0.655 26.512 21.977 47.834 48.428 48.488l0.062 0.001c25.893-0.502 46.691-21.611 46.691-47.577 0-0.321-0.003-0.641-0.009-0.96l0.001 0.048v-344.546c-1.157-25.36-21.998-45.482-47.539-45.482-0.228 0-0.456 0.002-0.683 0.005l0.034-0c-25.566 1.417-45.9 21.96-46.98 47.485l-0.003 0.101z","M180.706 628.254v198.174c0.64 26.309 21.633 47.512 47.797 48.487l0.090 0.003h1.807c25.893-0.502 46.691-21.611 46.691-47.577 0-0.321-0.003-0.641-0.009-0.96l0.001 0.048v-199.68c-0.505-25.891-21.613-46.686-47.577-46.686-0.215 0-0.429 0.001-0.643 0.004l0.032-0c-26.282 0.81-47.379 21.907-48.186 48.112l-0.002 0.076z"]},"ic_exit_fullscreen":{"viewBox":"0 0 1016 1024","paths":["M63.793 442.038l316.257 1.505c0.090 0 0.196 0.001 0.302 0.001 34.462 0 62.418-27.851 62.589-62.273l0-0.016v-316.257c0-35.897-29.1-64.997-64.997-64.997v0c-17.37 0.034-33.097 7.037-44.54 18.361l0.005-0.005c-11.337 10.959-18.375 26.303-18.375 43.291 0 0.543 0.007 1.085 0.022 1.625l-0.002-0.080v252.464h-252.163c-0.548-0.018-1.192-0.028-1.838-0.028-16.992 0-32.339 7.042-43.282 18.366l-0.017 0.017c-10.984 11.354-17.754 26.844-17.754 43.915 0 0.006 0 0.012 0 0.018l-0-0.001c0.497 35.091 28.727 63.427 63.73 64.093l0.063 0.001z","M634.621 443.543l316.257-1.505c35.195-0.501 63.593-28.899 64.094-64.046l0.001-0.048c-0.018-17.467-7.021-33.296-18.365-44.845l0.009 0.010c-10.96-11.342-26.307-18.384-43.299-18.384-0.646 0-1.29 0.010-1.932 0.030l0.094-0.002h-252.464v-252.464c0.004-0.28 0.007-0.61 0.007-0.941 0-16.569-6.287-31.669-16.605-43.045l0.048 0.054c-11.438-11.319-27.165-18.322-44.528-18.356l-0.006-0c-34.962 0.662-63.131 28.831-63.792 63.73l-0.001 0.063v316.257c-0.005 0.289-0.008 0.631-0.008 0.973 0 17.26 7.020 32.88 18.36 44.161l0.003 0.003c10.844 10.833 25.624 17.728 42.011 18.352l0.117 0.004z","M382.458 580.457v0 0h-318.063c-35.533 0.339-64.227 29.139-64.395 64.68l-0 0.016c0.018 17.467 7.021 33.296 18.365 44.845l-0.009-0.010c10.96 11.342 26.307 18.384 43.299 18.384 0.646 0 1.29-0.010 1.932-0.030l-0.094 0.002h252.163v252.464c-0.013 0.46-0.020 1.002-0.020 1.545 0 16.988 7.039 32.332 18.358 43.274l0.017 0.016c11.438 11.319 27.165 18.322 44.528 18.356l0.006 0c35.091-0.497 63.427-28.727 64.093-63.73l0.001-0.063v-316.257c0.005-0.282 0.007-0.615 0.007-0.949 0-33.723-26.67-61.217-60.069-62.54l-0.12-0.004z","M951.48 581.059h-316.257c-0.27-0.004-0.59-0.007-0.909-0.007-34.567 0-62.589 28.022-62.589 62.589 0 0.32 0.002 0.639 0.007 0.957l-0.001-0.048v316.257c1.163 34.652 29.533 62.3 64.361 62.3 0.435 0 0.869-0.004 1.303-0.013l-0.065 0.001c17.37-0.034 33.097-7.037 44.54-18.361l-0.005 0.005c11.335-11.54 18.337-27.369 18.356-44.832l0-0.003v-252.464h252.464c0.548 0.018 1.192 0.028 1.838 0.028 16.992 0 32.339-7.042 43.282-18.366l0.017-0.017c11.281-11.454 18.248-27.185 18.248-44.544 0-35.066-28.426-63.492-63.492-63.492-0.385 0-0.77 0.003-1.153 0.010l0.058-0.001z"]},"ic_folder":{"viewBox":"0 0 1413 1024","paths":["M1307.708 266.842h-136.433v-34.334c0-59.548-48.273-107.821-107.821-107.821v0h-467.125v-30.118c-0.68-52.374-43.296-94.569-95.767-94.569-0.003 0-0.005 0-0.008 0l-404.781-0c-52.895 0-95.774 42.88-95.774 95.774v0 805.346c0.229 47.086 27.036 87.857 66.179 108.103l0.682 0.321 5.722 3.012 6.325 2.409c12.215 5.597 26.486 8.912 41.518 9.035l0.044 0h947.501c49.994-0.020 91.636-35.759 100.79-83.081l0.104-0.646 232.809-518.626c7.229-13.93 11.468-30.414 11.468-47.887 0-58.286-47.171-105.555-105.42-105.713l-0.015-0zM1063.153 918.287h-942.682l231.002-545.732h955.934z"]},"ic_fullscreen":{"viewBox":"0 0 1016 1024","paths":["M379.784 1.506l-316.235-1.506c-17.58 0.003-33.524 7.011-45.19 18.385l0.014-0.013c-11.345 11.55-18.354 27.393-18.372 44.872l-0 0.003 1.506 316.838c0.663 34.993 28.856 63.187 63.787 63.848l0.063 0.001c0.090 0 0.196 0.001 0.302 0.001 34.492 0 62.473-27.876 62.644-62.328l0-0.016v-253.591h252.386c0.271 0.004 0.59 0.007 0.91 0.007 34.598 0 62.645-28.047 62.645-62.645 0-0.32-0.002-0.639-0.007-0.958l0.001 0.048c-1.004-34.88-29.443-62.792-64.437-62.946l-0.015-0z","M633.976 128.904h254.494v252.386c-0.004 0.269-0.007 0.586-0.007 0.904 0 34.598 28.047 62.645 62.645 62.645 0.002 0 0.005-0 0.007-0l-0 0c35.122-0.497 63.483-28.753 64.15-63.787l0.001-0.063v-316.838c0.019-0.581 0.030-1.264 0.030-1.95 0-16.946-6.54-32.364-17.233-43.869l0.037 0.040c-11.448-11.329-27.189-18.338-44.568-18.372l-0.007-0-317.139 1.506c-35.189 0.334-63.646 28.686-64.15 63.802l-0.001 0.048c-0.004 0.271-0.007 0.59-0.007 0.91 0 34.282 27.538 62.133 61.7 62.638l0.048 0.001z","M380.386 895.096h-252.386v-252.386c0.005-0.282 0.007-0.616 0.007-0.95 0-33.753-26.694-61.271-60.122-62.595l-0.12-0.004c-0.448-0.011-0.976-0.018-1.506-0.018-35.762 0-64.753 28.991-64.753 64.753 0 0.006 0 0.012 0 0.018l-0-0.001-1.506 316.838c-0.002 0.18-0.003 0.392-0.003 0.605 0 34.387 27.706 62.303 62.013 62.642l0.032 0h317.139c35.189-0.334 63.646-28.686 64.15-63.802l0.001-0.048c-0.142-35.138-27.992-63.725-62.825-65.050l-0.121-0.004z","M950.814 580.066c-0.002-0-0.004-0-0.007-0-34.598 0-62.645 28.047-62.645 62.645 0 0.318 0.002 0.635 0.007 0.951l-0.001-0.048v252.386h-252.687c-0.18-0.002-0.392-0.003-0.605-0.003-34.387 0-62.303 27.706-62.642 62.013l-0 0.032c-0.007 0.359-0.011 0.783-0.011 1.207 0 35.554 28.655 64.416 64.13 64.75l0.032 0h316.536c17.385-0.034 33.126-7.043 44.58-18.377l-0.005 0.005c11.345-11.55 18.354-27.393 18.372-44.872l0-0.003v-316.838c-0.677-35.406-29.538-63.849-65.043-63.849-0.004 0-0.008 0-0.012 0l0.001-0z"]},"ic_laptop":{"viewBox":"0 0 1843 1024","paths":["M317.139 785.468v0z","M317.44 508.687v258.711q0-129.205 0-258.409z","M1525.459 508.988c0 87.642 0 175.586 0 263.529v-263.831z","M1525.76 772.518v0z","M1781.459 901.12h-135.529c0-49.393 0-99.087 0-148.48v-256.602q0-194.56 0-389.12v0c0.051-1.198 0.080-2.603 0.080-4.014 0-36.775-19.794-68.928-49.309-86.385l-0.466-0.255c-15.389-10.206-34.286-16.284-54.603-16.284-0.71 0-1.417 0.007-2.123 0.022l0.105-0.002h-1234.824c-1.373-0.068-2.981-0.106-4.598-0.106-20.372 0-39.317 6.111-55.101 16.599l0.367-0.23c-29.312 17.858-48.587 49.646-48.587 85.936 0 1.553 0.035 3.099 0.105 4.635l-0.008-0.218q0 194.259 0 389.12v254.193c0 50.296 0 100.894 0 150.588h-136.734c-34.099 0-61.741 27.642-61.741 61.741s27.642 61.741 61.741 61.741v0h1721.224c33.932 0 61.44-27.508 61.44-61.44s-27.508-61.44-61.44-61.44v0zM324.066 124.988c5.236-4.513 12.104-7.262 19.614-7.262 1.581 0 3.134 0.122 4.649 0.357l-0.169-0.022h1146.278c1.347-0.213 2.899-0.335 4.48-0.335 7.51 0 14.378 2.749 19.653 7.295l-0.039-0.033c4.669 5.28 7.52 12.262 7.52 19.911 0 1.476-0.106 2.927-0.311 4.346l0.019-0.162v721.016c0.088 1.216 0.137 2.635 0.137 4.066s-0.050 2.85-0.148 4.255l0.011-0.189c-3.012 24.094-24.094 23.191-38.551 22.588s-26.805 0-40.056 0h-1050.805c-13.252 0-26.805 0-40.358 0s-35.238 1.506-38.249-22.588c-0.088-1.216-0.137-2.635-0.137-4.066s0.050-2.85 0.148-4.255l-0.011 0.189v-719.511c-0.424-1.895-0.667-4.072-0.667-6.305 0-7.363 2.642-14.109 7.030-19.341l-0.038 0.047z"]},"ic_p2p":{"viewBox":"0 0 1078 1024","paths":["M881.544 267.445c-65.161 0.343-122.781 32.322-158.326 81.349l-0.394 0.571-301.176-106.315c1.473-9.011 2.347-19.437 2.409-30.055l0-0.062c0-117.433-95.198-212.631-212.631-212.631s-212.631 95.198-212.631 212.631c0 117.433 95.198 212.631 212.631 212.631v0h14.155l69.873 271.059c-60.652 27.643-102.052 87.74-102.052 157.507 0 95.31 77.264 172.574 172.574 172.574s172.574-77.264 172.574-172.574c0-32.688-9.088-63.253-24.875-89.306l0.433 0.769 233.713-156.913c34.594 32.104 81.091 51.803 132.189 51.803 0.116 0 0.231-0 0.347-0l-0.018 0c5.645 0.575 12.199 0.904 18.83 0.904 108.617 0 196.668-88.051 196.668-196.668s-88.051-196.668-196.668-196.668c-6.631 0-13.185 0.328-19.647 0.969l0.817-0.066zM71.379 212.631c0-78.011 63.241-141.252 141.252-141.252s141.252 63.241 141.252 141.252c0 78.011-63.241 141.252-141.252 141.252v0c-78.011 0-141.252-63.241-141.252-141.252v0zM296.358 408.094c45.354-19.841 81.555-53.611 103.951-95.827l0.558-1.152 291.84 103.002c-4.211 15.081-6.631 32.398-6.631 50.281 0 31.861 7.682 61.927 21.295 88.448l-0.509-1.092-240.941 160.527c-27.038-18.855-60.585-30.126-96.765-30.126-0.605 0-1.209 0.003-1.812 0.009l0.092-0.001h-1.506zM368.038 952.621c-55.39-0-100.292-44.902-100.292-100.292s44.902-100.292 100.292-100.292c55.39 0 100.292 44.902 100.292 100.292h0c0 55.39-44.902 100.292-100.292 100.292l0 0zM880.038 589.101c-69.195-0-125.289-56.094-125.289-125.289s56.094-125.289 125.289-125.289c69.195 0 125.289 56.094 125.289 125.289 0 0.106-0 0.212-0 0.318l0-0.017c0 0.002 0 0.004 0 0.006 0 68.605-55.274 124.301-123.719 124.982l-0.065 0.001z"]},"ic_reset_2":{"viewBox":"0 0 894 1024","paths":["M535.492 1015.266l10.24-2.711c10.842-2.409 22.287-5.12 32.828-8.433l5.12-1.506c138.137-44.431 244.881-150.877 288.846-285.688l0.886-3.14 1.807-4.518c3.313-11.144 6.024-22.287 8.734-34.033 0-3.313 1.506-6.325 2.108-9.336 1.703-9.351 3.096-20.826 3.865-32.471l0.051-0.96c0-3.313 0-6.626 1.506-9.939 1.525-13.855 2.395-29.922 2.395-46.191 0-246.675-199.97-446.645-446.645-446.645-60.688 0-118.549 12.104-171.301 34.029l2.958-1.090 13.854-79.511c1.096-4.666 1.724-10.024 1.724-15.528 0-39.089-31.688-70.776-70.776-70.776-36.496 0-66.54 27.623-70.365 63.102l-0.027 0.313-42.165 240.941s0 3.915 0 6.024c-0.144 1.489-0.226 3.22-0.226 4.969s0.082 3.48 0.242 5.188l-0.017-0.218v3.012c-0.104 0.361-0.164 0.776-0.164 1.205s0.060 0.844 0.171 1.237l-0.008-0.032c0.709 4.054 1.65 7.598 2.857 11.015l-0.146-0.474s0 3.012 0 4.216c2.136 5.060 4.66 9.422 7.647 13.417l-0.118-0.165c3.020 4.278 6.288 8.024 9.899 11.407l0.040 0.037 3.614 2.711c2.644 2.35 5.605 4.447 8.785 6.198l0.251 0.126 1.807 1.506 202.993 109.327c9.577 5.128 20.951 8.14 33.029 8.14 27.26 0 50.937-15.347 62.86-37.871l0.186-0.386c5.334-9.734 8.472-21.327 8.472-33.654 0-26.793-14.825-50.123-36.719-62.236l-0.365-0.185-102.099-54.513c38.973-19.36 84.876-30.688 133.425-30.688 168.664 0 305.393 136.729 305.393 305.393 0 0.518-0.001 1.036-0.004 1.554l0-0.080c-0.335 146.468-103.829 268.666-241.66 297.812l-1.992 0.353c-18.057 3.72-38.855 5.908-60.144 6.023l-0.091 0c-10.24 0-20.781 0-30.118-1.506h-6.626c-7.529 0-15.36-2.108-22.889-3.614l-31.624-8.132-7.831-2.711-20.48-7.529-5.12-2.409-23.191-10.541s0 0 0 0c-95.1-52.891-158.389-152.774-158.419-267.441l-0-0.004c-2.5-37.214-33.299-66.453-70.927-66.453s-68.427 29.239-70.915 66.237l-0.012 0.217c-0 0.23-0.001 0.502-0.001 0.774 0 122.455 49.346 233.384 129.238 313.988l-0.032-0.033c28.675 28.304 61.127 52.888 96.506 72.903l2.28 1.187 4.819 2.711c9.638 5.421 19.576 9.939 30.118 14.456l10.541 4.819c8.734 3.614 17.167 6.626 25.901 9.638l15.962 5.421c7.228 2.409 15.661 4.216 23.492 6.024s12.649 3.614 19.275 4.819 15.962 2.409 24.094 3.614 12.649 2.108 19.275 2.711c11.702 1.344 25.263 2.111 39.003 2.111 0.476 0 0.952-0.001 1.428-0.003l-0.074 0h3.614c0.491 0.002 1.072 0.003 1.654 0.003 15.115 0 30.051-0.767 44.771-2.264l-1.85 0.152 11.746-1.807c11.144 0 21.986-1.506 32.828-3.614z"]},"ic_search_link":{"viewBox":"0 0 1443 1024","paths":["M1033.035 774.927h-105.111c-0.013 0-0.027 0-0.042 0-10.802 0-21.14-1.988-30.667-5.619l0.591 0.198c-15.423-5.707-27.932-16.268-35.965-29.798l-0.176-0.32c-2.484-3.967-4.719-8.539-6.464-13.345l-0.162-0.509c-3.048-7.589-4.817-16.388-4.819-25.599l-0-0.001c0.67-42.233 35.063-76.212 77.393-76.212 0.533 0 1.064 0.005 1.594 0.016l-0.079-0.001h144.264c0.863-0.033 1.877-0.052 2.896-0.052 7.433 0 14.63 1.008 21.462 2.896l-0.565-0.133c11.866 3.986 21.976 10.503 30.094 18.95l0.023 0.024c13.553 13.793 21.92 32.721 21.92 53.602 0 3.187-0.195 6.328-0.573 9.412l0.037-0.37c-0.198 1.162-0.312 2.5-0.312 3.864 0 6.594 2.649 12.569 6.94 16.92l-0.003-0.003c3.716 3.783 8.767 6.245 14.389 6.622l0.068 0.004c0.278 0.011 0.605 0.018 0.932 0.018 13.056 0 23.716-10.256 24.364-23.151l0.002-0.058c0.649-4.698 1.020-10.125 1.020-15.64 0-33.301-13.512-63.447-35.352-85.253l-0.001-0.001c-21.066-21.097-50.071-34.263-82.15-34.635l-0.071-0.001c-52.104 0-103.906 0-156.009 0-49.554 2.528-91.243 33.695-109.027 77.175l-0.3 0.83c-2.498 6.628-4.885 14.795-6.704 23.173l-0.223 1.222c-2.090 8.002-3.29 17.188-3.29 26.654s1.2 18.652 3.456 27.414l-0.166-0.76c-0.065 0.722-0.103 1.561-0.103 2.409s0.037 1.688 0.11 2.517l-0.008-0.107c0 2.711 2.108 5.722 3.313 8.433 0.933 2.58 1.948 4.765 3.126 6.846l-0.115-0.22 3.614 7.228c1.752 3.103 3.546 5.761 5.523 8.266l-0.102-0.134c1.236 2.097 2.429 3.867 3.716 5.561l-0.102-0.14c3.598 4.93 7.154 9.25 10.937 13.356l-0.094-0.104c0.859 1.159 1.853 2.153 2.974 2.985l0.038 0.027c18.807 19.502 44.944 31.827 73.961 32.525l0.129 0.002c40.056 1.506 80.113 0 120.471 0 0.263 0.011 0.571 0.017 0.881 0.017 9.895 0 18.303-6.362 21.359-15.218l0.048-0.159c1.655-2.99 2.629-6.556 2.629-10.35 0-4.964-1.668-9.539-4.474-13.194l0.038 0.051c-4.974-5.048-11.885-8.176-19.527-8.176-0.547 0-1.090 0.016-1.63 0.048l0.074-0.003z","M1407.398 611.689l-3.012-3.012c-17.962-18.55-42.498-30.641-69.842-32.509l-0.332-0.018c-19.576-1.506-39.454 0-60.235 0s-42.767 0-64.151 0c-0.38-0.022-0.825-0.035-1.273-0.035-9.786 0-18.157 6.062-21.562 14.636l-0.055 0.157c-1.435 2.772-2.276 6.052-2.276 9.528 0 5.366 2.005 10.264 5.307 13.986l-0.019-0.022 1.506 1.807c5.195 4.38 11.964 7.042 19.355 7.042 0.926 0 1.843-0.042 2.748-0.124l-0.117 0.009h104.508c0.17-0.001 0.37-0.002 0.571-0.002 21.491 0 40.967 8.624 55.157 22.6l-0.010-0.010c13.214 13.239 21.385 31.515 21.385 51.699 0 0.142-0 0.284-0.001 0.426l0-0.022c-0.842 42.098-35.167 75.902-77.388 75.902-0.323 0-0.645-0.002-0.967-0.006l0.049 0h-145.468c-0.821 0.030-1.785 0.047-2.754 0.047-7.045 0-13.88-0.896-20.399-2.58l0.565 0.124c-12.291-3.615-22.831-9.967-31.328-18.378l0.006 0.006c-13.459-13.864-21.756-32.803-21.756-53.68 0-3.586 0.245-7.115 0.719-10.571l-0.045 0.401c0.377-1.787 0.592-3.84 0.592-5.943 0-6.983-2.376-13.411-6.365-18.519l0.050 0.067c-1.77-2.045-3.862-3.753-6.208-5.060l-0.116-0.060c-16.264-6.626-30.118 3.614-33.129 23.793-0.783 5.16-1.23 11.115-1.23 17.173 0 66.534 53.937 120.471 120.471 120.471 0.433 0 0.865-0.002 1.296-0.007l-0.066 0.001c49.995 0 99.991 0 150.588 0 50.623-0.695 93.946-31.236 113.227-74.793l0.317-0.802c6.184-13.844 9.785-30.001 9.785-46.998 0-34.274-14.642-65.128-38.013-86.649l-0.083-0.075z","M992.075 865.882c-25.6 0-51.802 0-78.005 0-40.714-1.196-77.196-18.374-103.573-45.445l-0.031-0.032-3.614-3.915c-28.592-29.766-46.199-70.27-46.199-114.887 0-60.965 32.875-114.252 81.865-143.1l0.777-0.423c12.528-38.704 19.791-83.241 19.878-129.462l0-0.044c-1.371-237.151-193.936-428.869-431.278-428.869-238.192 0-431.285 193.093-431.285 431.285 0 237.342 191.718 429.907 428.738 431.277l0.131 0.001c0.118 0 0.258 0 0.397 0 88.033 0 169.923-26.302 238.24-71.477l-1.612 1.002 200.885 202.089c13.51 18.524 35.139 30.425 59.548 30.425 2.363 0 4.699-0.112 7.005-0.33l-0.295 0.023c1.429 0.081 3.101 0.127 4.784 0.127 35.359 0 65.974-20.311 80.814-49.902l0.237-0.521c7.55-11.025 12.058-24.651 12.058-39.33 0-20.085-8.438-38.2-21.963-50.992l-0.033-0.031zM433.694 736.376c-166.335 0-301.176-134.841-301.176-301.176v0-7.529c1.449-166.068 136.41-300.133 302.682-300.133 167.173 0 302.693 135.52 302.693 302.693 0 0.9-0.004 1.799-0.012 2.698l0.001-0.138c-1.855 167.126-137.013 302.072-304.044 303.585l-0.144 0.001z"]},"ic_triangle_down":{"viewBox":"0 0 1899 1024","paths":["M949.609 0h848.414c55.355 0.697 99.96 45.733 99.96 101.188 0 28.463-11.751 54.181-30.666 72.568l-0.024 0.023-368.64 358.099-478.569 463.511c-18.12 17.728-42.945 28.667-70.325 28.667s-52.205-10.939-70.343-28.685l0.018 0.018-849.318-821.609c-18.935-18.409-30.684-44.125-30.684-72.585 0-55.889 45.307-101.195 101.195-101.195 0.199 0 0.398 0.001 0.596 0.002l-0.030-0z"]},"ic_tv":{"viewBox":"0 0 1391 1024","paths":["M1141.459 936.358h-897.807c-22.669 1.937-40.336 20.816-40.336 43.821s17.666 41.884 40.173 43.81l0.163 0.011h897.807c22.669-1.937 40.336-20.816 40.336-43.821s-17.666-41.884-40.173-43.81l-0.163-0.011z","M1275.181 0h-1159.529c-63.873 0-115.652 51.779-115.652 115.652v0 656.264c0.17 63.865 51.811 115.612 115.619 115.953l0.032 0h1159.529c63.841-0.341 115.482-52.088 115.652-115.937l0-0.016v-656.264c0-63.873-51.779-115.652-115.652-115.652v0zM1316.141 771.915c0.001 0.089 0.001 0.195 0.001 0.301 0 22.622-18.338 40.96-40.96 40.96-0 0-0.001-0-0.001-0l-1159.529 0c-22.622 0-40.96-18.338-40.96-40.96v0-656.565c0-22.622 18.338-40.96 40.96-40.96v-0h1159.529c22.622 0 40.96 18.338 40.96 40.96v-0z","M654.758 230.099h-341.534c-0.468-0.052-1.011-0.081-1.561-0.081-8.317 0-15.059 6.742-15.059 15.059 0 0.453 0.020 0.901 0.059 1.343l-0.004-0.057v7.831c-0.109 0.674-0.171 1.45-0.171 2.241 0 8.15 6.607 14.758 14.758 14.758 0.698 0 1.384-0.048 2.056-0.142l-0.078 0.009h147.878v397.553c-0.055 0.478-0.086 1.031-0.086 1.592 0 8.15 6.607 14.758 14.758 14.758 0.561 0 1.114-0.031 1.659-0.092l-0.067 0.006h13.252c0.412 0.042 0.889 0.067 1.373 0.067 7.818 0 14.155-6.338 14.155-14.155 0-0.768-0.061-1.521-0.179-2.256l0.011 0.081v-397.553h148.781c0.571 0.080 1.23 0.125 1.899 0.125 7.984 0 14.456-6.472 14.456-14.456 0-0.575-0.034-1.142-0.099-1.699l0.006 0.068v-8.734c0.055-0.478 0.086-1.031 0.086-1.592 0-8.15-6.607-14.758-14.758-14.758-0.561 0-1.114 0.031-1.659 0.092l0.067-0.006z","M1073.995 230.099h-15.661c-0.387-0.032-0.837-0.050-1.291-0.050-7.886 0-14.484 5.51-16.156 12.89l-0.021 0.111-123.181 331.294c-7.831 23.492-17.769 60.235-17.769 60.235v0s-9.035-35.238-17.769-60.235l-121.976-331.294c-1.801-7.524-8.47-13.031-16.424-13.031-0.58 0-1.153 0.029-1.718 0.086l0.071-0.006h-15.059c-12.348 0-16.866 7.228-12.951 18.974l158.419 421.647c1.819 7.501 8.476 12.984 16.413 12.984 0.371 0 0.74-0.012 1.105-0.036l-0.050 0.003h21.685c0.424 0.037 0.917 0.058 1.415 0.058 8.004 0 14.729-5.478 16.63-12.89l0.026-0.119 158.72-421.647c1.807-11.746-2.711-18.974-14.456-18.974z"]},"ic_highspeaker":{"viewBox":"0 0 1029 1024","paths":["M967.078 393.336c-18.071-4.819-22.287-14.155-22.287-30.118 0-51.501 0-102.701 0-153.901v0c0-53.308 0-106.616 0-159.925 0.098-1.118 0.155-2.42 0.155-3.734 0-19.61-12.494-36.302-29.957-42.549l-0.315-0.098c-4.194-1.389-9.021-2.19-14.036-2.19-15.94 0-29.991 8.094-38.264 20.397l-0.104 0.165-4.819 6.325c-80.087 101.496-183.435 181.156-302.211 231.532l-4.989 1.88c-58.694 25.219-127.001 39.936-198.731 40.056l-0.046 0c-87.040 0-174.381 0-261.12 0-60.235 0-90.353 30.118-90.353 90.353v170.165c0 56.32 26.202 85.835 78.607 90.353 7.831 20.781 21.384 56.019 22.889 58.729 38.516 75.076 68.346 162.159 84.967 253.843l0.868 5.771c1.644 29.948 26.329 53.611 56.541 53.611 0.134 0 0.268-0 0.402-0.001l-0.021 0c40.659 0 81.016 0 120.471 0 0.052 0 0.113 0 0.174 0 28.776 0 52.104-23.328 52.104-52.104 0-3.732-0.392-7.373-1.138-10.882l0.061 0.341c-3.651-32.706-20.978-60.758-46.044-78.679l-0.338-0.229c-20.579-15.691-38.188-33.875-52.79-54.351l-0.518-0.764c-31.775-48.795-51.553-108.002-53.893-171.661l-0.018-0.612h74.692c1.668-0.020 3.638-0.031 5.61-0.031 32.835 0 64.95 3.080 96.073 8.967l-3.199-0.503c158.72 30.118 284.612 115.953 391.529 233.713 12.951 14.155 24.395 30.118 37.045 44.273 8.287 9.841 20.616 16.051 34.394 16.051 23.968 0 43.547-18.79 44.81-42.442l0.005-0.112c0.216-3.6 0.339-7.809 0.339-12.047s-0.123-8.447-0.365-12.624l0.027 0.577c0-98.786 0-197.271 0-296.056 0-16.866 3.915-26.202 21.986-30.118 36.374-9.771 62.712-42.45 62.712-81.279 0-1.179-0.024-2.352-0.072-3.518l0.005 0.167c0.122-1.703 0.192-3.689 0.192-5.692 0-38.274-25.498-70.592-60.433-80.896l-0.597-0.151zM853.534 760.471c0 3.614 0 6.927 0 10.24s1.506 10.541-4.216 11.746-6.927-3.313-9.939-5.722c-24.507-22.934-50.813-45.037-78.266-65.698l-2.45-1.765c-88.392-68.548-195.423-117.444-312.187-138.202l-4.349-0.641h-5.722c-53.911-5.421-46.080-2.409-46.682-55.416 0-33.431 0-66.861 0-99.991 0-14.456 4.518-21.685 20.179-23.492 166.616-22.449 312.651-97.236 424.152-207.002l-0.095 0.094c4.262-5.59 9.99-9.862 16.612-12.268l0.254-0.080c2.017 4.792 3.189 10.362 3.189 16.206 0 2.252-0.174 4.464-0.51 6.622l0.031-0.24z"]},"ic_list":{"viewBox":"0 0 1525 1024","paths":["M671.322 196.066h765.892c46.63-2.806 83.384-41.309 83.384-88.395s-36.754-85.589-83.138-88.383l-0.246-0.012h-765.892c-46.63 2.806-83.384 41.309-83.384 88.395s36.754 85.589 83.138 88.383l0.246 0.012z","M1437.214 424.659h-765.892c-46.63 2.806-83.384 41.309-83.384 88.395s36.754 85.589 83.138 88.383l0.246 0.012h765.892c46.63-2.806 83.384-41.309 83.384-88.395s-36.754-85.589-83.138-88.383l-0.246-0.012z","M1437.214 830.042h-765.892c-46.63 2.806-83.384 41.309-83.384 88.395s36.754 85.589 83.138 88.383l0.246 0.012h765.892c46.63-2.806 83.384-41.309 83.384-88.395s-36.754-85.589-83.138-88.383l-0.246-0.012z","M56.019 0h317.44c30.938 0 56.019 25.080 56.019 56.019v317.44c0 30.938-25.080 56.019-56.019 56.019h-317.44c-30.938 0-56.019-25.080-56.019-56.019v-317.44c0-30.938 25.080-56.019 56.019-56.019z","M56.019 594.522h317.44c30.938 0 56.019 25.080 56.019 56.019v317.44c0 30.938-25.080 56.019-56.019 56.019h-317.44c-30.938 0-56.019-25.080-56.019-56.019v-317.44c0-30.938 25.080-56.019 56.019-56.019z"]},"ic_volume0":{"viewBox":"0 0 1234 1024","paths":["M903.529 512l111.736-112.038c4.905-4.72 7.951-11.341 7.951-18.673s-3.047-13.953-7.943-18.665l-0.008-0.008c-4.789-4.756-11.388-7.695-18.673-7.695s-13.884 2.939-18.674 7.697l0.002-0.002-111.736 112.038-113.242-113.242c-4.579-3.879-10.554-6.237-17.079-6.237-14.637 0-26.504 11.866-26.504 26.504 0 6.525 2.358 12.5 6.269 17.118l-0.032-0.039 112.038 113.242-112.038 112.038c-5.037 4.884-8.164 11.715-8.164 19.275 0 14.822 12.015 26.837 26.837 26.837 7.261 0 13.849-2.884 18.68-7.568l-0.007 0.007 112.038-112.038 111.736 112.038c4.789 4.756 11.388 7.695 18.673 7.695s13.884-2.939 18.674-7.697l-0.002 0.002c4.905-4.72 7.951-11.341 7.951-18.673s-3.047-13.953-7.943-18.665l-0.008-0.008z","M597.835 512q0-193.656 0-387.614c0-17.167 0-36.141-18.372-45.176s-33.129 4.518-47.285 14.758l-13.854 10.541c-94.268 76.198-188.838 153.299-282.202 231.002-14.854 13.503-34.678 21.771-56.434 21.771-1.337 0-2.667-0.031-3.989-0.093l0.187 0.007c-38.852-1.807-77.402 0-116.254 0-2.637-0.482-5.672-0.757-8.771-0.757-28.277 0-51.2 22.923-51.2 51.2 0 2.071 0.123 4.113 0.362 6.12l-0.024-0.243q0 98.485 0 196.969c-0.218 1.779-0.342 3.838-0.342 5.926 0 28.443 23.058 51.501 51.501 51.501 3.208 0 6.347-0.293 9.393-0.855l-0.317 0.048c41.562 0 83.125 0 124.687 0 1.099-0.069 2.383-0.109 3.676-0.109 15.42 0 29.526 5.626 40.378 14.936l-0.083-0.070c98.786 81.016 198.475 161.732 297.864 242.447 15.661 12.348 30.118 30.118 53.609 20.179s18.673-33.732 18.974-53.308z"]},"ic_network":{"viewBox":"0 0 1024 1024","paths":["M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512v0c0-282.77-229.23-512-512-512v0zM512 77.101h12.649c-77.345 56.905-140.107 129.003-184.771 212.261l-1.657 3.382c-5.762-1.488-12.377-2.342-19.192-2.342-44.079 0-79.812 35.733-79.812 79.812 0 5.842 0.628 11.538 1.82 17.024l-0.096-0.527c-62.24 30.758-115.88 66.688-164.173 108.616l0.935-0.795c9.792-232.397 200.422-417.131 434.267-417.431l0.030-0zM659.275 315.934c-23.69 3.618-44.377 14.442-60.246 30.128l0.010-0.010c-8.965 8.837-16.272 19.327-21.431 30.981l-0.254 0.642c-48.249-9.688-103.715-15.233-160.477-15.233-6.054 0-12.093 0.063-18.116 0.189l0.899-0.015c-1.756-19.196-10.172-36.151-22.885-48.787l-0.004-0.004-2.711-2.409c50.882-94.221 122.83-171.184 209.87-226.529l2.459-1.461h11.144c30.321 67.798 52.112 146.432 61.406 228.851l0.335 3.657zM646.325 98.485c102.992 34.487 186.786 103.149 239.833 192.248l1.109 2.011c-35.501 27.252-77.527 48.044-123.202 59.718l-2.389 0.518c-2.078-2.918-4.154-5.471-6.376-7.887l0.052 0.057c-14.754-14.871-33.742-25.521-55.005-29.992l-0.712-0.125s0-3.012 0-4.216c-9.737-78.922-28.462-150.65-55.38-218.226l2.072 5.896zM602.353 506.278c-59.324 72.3-133.142 130.407-217.259 170.346l-3.804 1.625c-1.807-2.108-3.313-4.518-5.421-6.626-14.479-14.387-34.432-23.279-56.463-23.279-1.327 0-2.646 0.032-3.957 0.096l0.185-0.007c-8.020-29.597-12.628-63.578-12.628-98.635s4.608-69.039 13.25-101.372l-0.622 2.736c0.428 0.008 0.933 0.013 1.439 0.013 22.143 0 42.187-8.983 56.688-23.504l0.001-0.001c6.681-6.773 12.156-14.757 16.064-23.588l0.2-0.506c6.793-0.203 14.784-0.318 22.803-0.318 53.604 0 106.004 5.158 156.73 15.005l-5.151-0.833c-0.195 2.453-0.307 5.311-0.307 8.195 0 30.184 12.198 57.519 31.934 77.343l-0.004-0.004zM259.012 421.647l4.216 4.819c4.689 4.775 10.039 8.878 15.908 12.165l0.356 0.183c-9.152 32.974-14.412 70.837-14.412 109.929s5.26 76.956 15.11 112.922l-0.699-2.992c-5.789 3.582-10.814 7.459-15.407 11.789l0.047-0.044c-13.346 13.61-21.966 31.897-23.18 52.179l-0.011 0.225c-42.108-0.883-82.289-7.757-120.166-19.8l3.008 0.826c-23.48-46.088-39.196-99.914-43.869-156.868l-0.102-1.55c51.649-48.156 110.63-89.437 174.871-121.806l4.329-1.977zM248.169 764.386v0c3.784 8.027 8.63 14.896 14.463 20.787l-0.006-0.006c14.453 14.239 34.306 23.032 56.213 23.032 7.54 0 14.837-1.042 21.754-2.989l-0.564 0.136c33.319 54.071 74.076 99.91 121.514 137.722l1.065 0.82c-130.722-15.402-242.154-86.903-311.034-189.39l-0.985-1.556c29.211 6.983 62.832 11.137 97.372 11.443l0.21 0.001zM375.567 785.769v0c14.495-14.452 23.463-34.44 23.463-56.522 0-4.824-0.428-9.547-1.248-14.135l0.072 0.483c95.317-44.691 175.116-108.096 237.525-186.031l1.007-1.301c6.431 2.497 14.025 4.59 21.878 5.924l0.711 0.1c-18.048 150.881-63.115 287.869-130.361 411.008l2.963-5.926c-69.271-30.419-126.494-107.52-156.009-153.6zM575.849 941.779c63.072-118.673 107.119-257.162 123.888-403.936l0.498-5.362c21.599-4.891 40.226-15.487 54.812-30.115l0.003-0.003c2.711-3.012 5.12-6.325 7.529-9.336 48.489 14.456 134.024 50.899 169.261 130.409-45.658 166.472-183.294 291.49-353.538 318.029l-2.453 0.315zM783.059 457.487c3.295-10.036 5.195-21.587 5.195-33.581s-1.9-23.545-5.416-34.367l0.221 0.786c47.577-13.559 89.1-34.183 125.799-61.011l-1.112 0.775c24.728 52.867 39.157 114.791 39.157 180.086 0 0.642-0.001 1.283-0.004 1.924l0-0.099c-0.146 18.836-1.455 37.217-3.859 55.251l0.245-2.244c-40.552-50.443-95.202-88.040-157.955-106.933l-2.271-0.587z"]},"ic_person":{"viewBox":"0 0 863 1024","paths":["M832.452 519.228c-7.347-6.489-11.956-15.932-11.956-26.451 0-3.122 0.406-6.15 1.168-9.033l-0.055 0.246c5.421-36.744 11.746-73.788 13.553-111.134 0.123-3.321 0.193-7.222 0.193-11.14 0-97.558-43.473-184.963-112.104-243.899l-0.428-0.359c-54.446-51.832-122.303-90.071-197.823-108.979l-3.062-0.649s-113.544-17.769-177.995 0c-110.19 26.928-202.008 92.263-262.551 180.698l-0.979 1.514c-30.283 47.237-48.272 104.875-48.272 166.714 0 11.080 0.578 22.025 1.704 32.807l-0.114-1.347c1.807 30.118 6.024 63.247 9.336 94.871 0.563 2.449 0.885 5.261 0.885 8.148 0 9.871-3.769 18.862-9.946 25.612l0.026-0.029c-42.466 42.165-39.454 92.16-21.685 143.059 12.385 36.954 34.921 67.758 64.291 90.017l0.462 0.336c15.148 11.578 26.924 26.839 34.080 44.469l0.254 0.708c44.733 111.687 140.421 194.552 257.51 220.614l2.405 0.45c19.176 4.288 41.2 6.745 63.798 6.745 75.446 0 144.495-27.385 197.751-72.757l-0.428 0.356c56.5-42.341 99.936-99.259 125.043-165.215l0.849-2.54c5.806-12.543 14.785-22.78 25.925-29.95l0.278-0.167c47.769-35.856 78.345-92.376 78.345-156.037 0-1.367-0.014-2.731-0.042-4.091l0.003 0.204c0.068-1.335 0.106-2.898 0.106-4.471 0-27.41-11.736-52.078-30.456-69.255l-0.069-0.063zM770.409 613.496c-3.001 43.719-29.756 80.541-67.345 97.885l-0.721 0.298c-11.746 4.819-13.553 16.264-17.167 26.504-16.532 47.41-42.843 87.788-76.703 120.378l-0.097 0.093c-43.136 43.467-101.446 71.822-166.318 76.451l-0.835 0.048c-2.659 0.106-5.78 0.167-8.915 0.167-54.139 0-104.059-18.059-144.067-48.482l0.586 0.428c-51.806-36.326-90.606-88.089-109.968-148.55l-0.564-2.039c-3.511-13.716-13.079-24.668-25.612-30.008l-0.289-0.11c-35.494-21.391-58.867-59.73-58.867-103.528 0-4.696 0.269-9.329 0.791-13.884l-0.052 0.556c1.464-13.846 10.556-25.253 22.944-30.034l0.247-0.084c19.275-6.024 23.191-18.974 21.986-36.744-0.054-2.042-0.085-4.447-0.085-6.858 0-33.853 6.104-66.28 17.272-96.242l-0.622 1.904c8.17-24.333 22.572-44.76 41.327-60.049l0.235-0.186c9.638-7.831 15.059-6.626 18.673 4.819 19.576 64.452 70.776 92.762 128.301 112.038 22.716 8.097 48.919 12.776 76.215 12.776 4.974 0 9.911-0.155 14.808-0.462l-0.67 0.034c10.864-0.333 21.177-2.181 30.9-5.34l-0.782 0.22c19.878-6.927 21.986-12.348 8.433-28.009-9.482-11.021-17.389-23.761-23.148-37.617l-0.344-0.933c-1.656-2.352-2.647-5.277-2.647-8.433s0.991-6.081 2.678-8.48l-0.031 0.047c32.736 38.509 80.621 63.285 134.329 65.046l0.297 0.008c9.817 0.891 21.234 1.399 32.77 1.399 31.109 0 61.355-3.693 90.324-10.666l-2.623 0.533c19.576-3.915 21.986-2.711 21.986 17.468 0.094 3.712 0.147 8.082 0.147 12.466 0 15.968-0.71 31.77-2.099 47.377l0.145-2.017c-0.27 1.292-0.424 2.776-0.424 4.297 0 9.821 6.44 18.138 15.327 20.959l0.156 0.043c18.523 5.572 31.786 22.475 31.786 42.475 0 4.286-0.609 8.43-1.746 12.35l0.078-0.313z"]},"ic_report":{"viewBox":"0 0 1061 1024","paths":["M526.155 632.471c-28.443 0-51.501 23.058-51.501 51.501s23.058 51.501 51.501 51.501h-0c0.13 0.001 0.284 0.002 0.438 0.002 26.447 0 47.887-21.44 47.887-47.887 0-1.273-0.050-2.534-0.147-3.781l0.010 0.165c0.121-1.267 0.19-2.74 0.19-4.229 0-26.115-21.17-47.285-47.285-47.285-0.384 0-0.768 0.005-1.15 0.014l0.057-0.001z","M568.922 194.56h-77.101c-15.701 1.135-28.010 14.152-28.010 30.044 0 0.026 0 0.052 0 0.078l-0-0.004 37.346 340.932c1.519 14.17 13.411 25.109 27.859 25.109s26.34-10.939 27.848-24.986l0.011-0.123 40.056-339.125c0.147-1.085 0.232-2.34 0.232-3.614 0-15.611-12.635-28.271-28.237-28.31l-0.004-0z","M939.972 171.068c-99.529-105.446-240.249-171.090-396.301-171.090-1.711 0-3.42 0.008-5.127 0.024l0.261-0.002c-3.3-0.068-7.19-0.107-11.090-0.107-140.587 0-269.389 50.459-369.283 134.255l0.891-0.727c-97.302 79.919-158.887 200.24-158.887 334.946 0 43.573 6.444 85.641 18.43 125.303l-0.795-3.062c33.771 104.468 100.483 190.395 187.686 247.69l1.754 1.082 3.313 3.915c-5.73 39.008-16.262 74.196-31.129 107.002l1.011-2.493c-6.062 7.938-9.714 17.999-9.714 28.913s3.651 20.975 9.799 29.029l-0.085-0.116c8.156 11.131 21.153 18.297 35.828 18.372l0.012 0c7.957-0.125 15.495-1.774 22.383-4.665l-0.397 0.148c60.139-17.026 111.243-49.703 150.324-93.365l0.264-0.301c5.421-6.024 5.421-6.325 15.059-4.216 38.445 9.174 82.585 14.434 127.954 14.434 123.918 0 238.67-39.244 332.506-105.982l-1.769 1.195c86.349-57.311 150.395-142.27 179.918-242.053l0.788-3.104c11.286-36.089 17.788-77.586 17.788-120.602 0-114.876-46.37-218.922-121.414-294.441l0.021 0.021zM966.776 565.308c-25.629 84.55-78.947 154.184-149.201 200.035l-1.388 0.849c-79.572 56.188-178.569 89.809-285.419 89.809-39.658 0-78.233-4.631-115.216-13.383l3.383 0.675c-6.542-1.743-14.052-2.744-21.796-2.744-27.642 0-52.305 12.753-68.427 32.695l-0.13 0.166c-15.496 17.090-33.011 31.923-52.278 44.258l-1.030 0.617c5.396-16.911 10.025-37.262 13.007-58.146l0.245-2.090c0.726-4.050 1.141-8.712 1.141-13.471 0-28.855-15.255-54.147-38.14-68.251l-0.346-0.198c-74.341-47.842-130.094-119.011-157.363-203.016l-0.754-2.687c-9.221-29.954-14.531-64.387-14.531-100.061 0-110.947 51.362-209.898 131.606-274.372l0.685-0.532c85.842-71.462 197.26-114.838 318.809-114.838 3.331 0 6.654 0.033 9.97 0.097l-0.497-0.008c1.074-0.009 2.344-0.014 3.616-0.014 133.514 0 253.97 55.906 339.237 145.585l0.187 0.199c61.584 61.040 99.712 145.657 99.712 239.179 0 35.567-5.515 69.846-15.735 102.029l0.654-2.385z"]},"ic_reset_1":{"viewBox":"0 0 891 1024","paths":["M841.487 578.861h-1.506c-24.583 0.489-44.648 19.199-47.266 43.153l-0.019 0.216c-22.859 172.763-169.185 304.709-346.344 304.791l-0.009 0c-2.589 0.069-5.637 0.108-8.694 0.108-192.45 0-348.461-156.011-348.461-348.461 0-173.619 126.974-317.581 293.126-344.092l1.986-0.261-53.007 54.212c-5.963 8.392-9.533 18.848-9.533 30.138 0 28.942 23.462 52.405 52.405 52.405 11.366 0 21.886-3.618 30.473-9.766l-0.158 0.108 137.638-135.529c9.46-9.434 15.312-22.481 15.312-36.894s-5.853-27.46-15.311-36.893l-0.001-0.001-137.638-136.734c-9.403-9.281-22.329-15.013-36.593-15.013s-27.19 5.732-36.599 15.018l0.006-0.006c-9.749 9.525-15.795 22.805-15.795 37.496s6.046 27.971 15.785 37.487l0.010 0.010 48.188 48.188c-215.731 33.495-378.911 217.913-378.911 440.444 0 124.779 51.306 237.574 133.973 318.442l0.082 0.079c77.044 77.608 183.294 126.131 300.88 127.696l0.297 0.003h21.082c2.658 0.060 5.791 0.094 8.932 0.094 223.206 0 406.334-171.597 424.657-390.067l0.105-1.556c0.323-2.091 0.508-4.503 0.508-6.958 0-26.447-21.44-47.887-47.887-47.887-0.602 0-1.202 0.011-1.799 0.033l0.086-0.003z"]},"ic_stremio_tray":{"viewBox":"0 0 1024 1024","paths":["M512 0l-512 512 512 512 512-512zM411.106 752.941v-480.376l323.464 240.941z"]},"ic_trakt":{"viewBox":"0 0 1024 1024","paths":["M180.706 648.433l-30.118-36.744 487.605-487.906c-37.906-12.871-81.568-20.301-126.966-20.301-224.885 0-407.191 182.305-407.191 407.191 0 92.685 30.967 178.137 83.119 246.575l-0.727-0.994 213.835-216.847c36.442 37.045 70.174 72.282 104.809 107.219l203.595 203.595c8.433 8.433 15.962 17.468 26.504 4.518l-343.642-339.727-196.367 202.089-33.431-21.685c80.113-80.715 157.816-158.72 240.941-240.941 8.433 10.541 16.264 21.986 25.6 31.624l329.487 327.078c7.831 8.132 16.264 21.685 24.998 4.518l-387.313-386.711z","M701.44 147.878c-3.234-2.373-7.294-3.798-11.686-3.798-6.376 0-12.050 3.002-15.688 7.669l-0.033 0.044c-17.468 18.974-36.141 36.744-54.212 54.814l-189.44 187.633 388.819 388.819c4.216-5.12 9.336-10.541 13.854-16.264 45.49-57.694 76.366-128.892 85.933-206.685l0.203-2.030c1.528-13.351 2.4-28.824 2.4-44.501 0-157.684-88.195-294.77-217.948-364.618l-2.203-1.084zM457.487 400.866l237.026-234.616 23.191 21.986-237.929 237.327zM524.649 471.341l-25.6-23.191 206.607-204.8 20.179 27.708c-65.054 64.753-132.518 132.216-201.186 200.282z","M400.264 606.268l-186.127 185.525c98.184 120.471 306.598 171.369 465.92 92.762l-272.866-271.059z","M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512v0c0-282.77-229.23-512-512-512v0zM512 974.005c-255.158 0-462.005-206.847-462.005-462.005s206.847-462.005 462.005-462.005c255.158 0 462.005 206.847 462.005 462.005v-0c-0.343 255.021-206.985 461.662-461.972 462.005l-0.032 0z"]},"ic_twitter":{"viewBox":"0 0 1254 1024","paths":["M0 905.939c17.259 2.039 37.252 3.203 57.516 3.203 119.068 0 228.753-40.171 316.243-107.7l-1.203 0.893c-22.743-1.698-43.86-5.98-63.924-12.583l1.881 0.536c-70.906-20.856-127.859-69.551-159.254-133.124l-0.671-1.502c-4.071-7.73-7.946-16.895-11.073-26.401l-0.372-1.307c-2.108-6.325 0-8.734 6.626-7.529 11.971 1.873 25.777 2.943 39.832 2.943 17.867 0 35.331-1.729 52.233-5.028l-1.712 0.278 10.24-2.711c-34.455-7.267-64.815-21.216-90.995-40.508l0.642 0.451c-60.815-42.177-101.97-109.023-108.953-185.742l-0.073-0.987c0-6.927 0-13.854 0-20.48s2.409-9.638 9.035-6.024c12.154 6.37 26.429 12.204 41.285 16.703l1.783 0.464c16.636 5.729 35.806 9.036 55.749 9.036 0.201 0 0.402-0 0.602-0.001l-0.031 0c-10.719-9.567-20.551-19.399-29.803-29.759l-0.314-0.358c-41.391-40.985-68.762-96.061-74.319-157.434l-0.072-0.985c-0.599-6.701-0.94-14.495-0.94-22.37 0-35.322 6.871-69.040 19.349-99.889l-0.639 1.788c3.313-9.035 8.433-17.167 12.348-25.901s6.024-6.626 10.541-1.506c9.035 10.541 18.673 21.082 28.009 30.118 41.819 45.8 89.007 85.615 140.853 118.79l2.808 1.681c67.118 43.812 145.333 77.707 229.074 97.214l4.94 0.969c30.899 6.653 68.49 12.096 106.754 15.156l3.176 0.204c6.325 0 7.831-1.807 6.927-7.529-1.807-12.047-3.915-23.793-4.518-35.84-0.273-4.4-0.429-9.544-0.429-14.723 0-65.781 25.106-125.699 66.259-170.693l-0.174 0.193c47.406-53.456 116.263-86.977 192.949-86.977 68.273 0 130.34 26.57 176.426 69.933l-0.132-0.123c4.884 5.577 12.018 9.079 19.971 9.079 2.872 0 5.637-0.457 8.226-1.301l-0.187 0.053c52.579-13.389 98.691-32.168 141.384-56.292l-2.843 1.477c2.711-1.506 5.421-4.819 8.433-2.409s0 5.722 0 8.433c-20.092 53.257-54.499 97.274-98.544 128.634l-0.844 0.571c10.842-1.807 22.287-3.012 33.129-5.421s23.492-5.421 34.936-8.734 22.287-6.626 33.431-10.541 21.384-8.433 33.431-11.746c-5.043 11.548-11.411 21.487-19.088 30.25l0.114-0.132c-28.487 36.762-60.588 68.671-96.333 96.061l-1.248 0.918c-5.741 3.761-9.48 10.164-9.48 17.44 0 0.859 0.052 1.706 0.153 2.538l-0.010-0.1c0.226 6.664 0.354 14.497 0.354 22.36 0 39.211-3.195 77.676-9.34 115.148l0.553-4.087c-11.548 67.92-30.080 128.603-55.27 185.688l1.961-4.982c-27.51 62.763-59.97 116.862-98.284 166.189l1.305-1.747c-41.023 52.791-87.62 98.431-139.649 137.185l-1.904 1.356c-76.627 56.553-167.686 98.485-266.451 119.644l-4.607 0.827c-47.911 10.463-102.945 16.456-159.38 16.456-18.101 0-36.057-0.617-53.85-1.83l2.406 0.131c-70.124-4.425-135.583-18.303-197.118-40.41l4.968 1.558c-57.442-19.942-106.979-43.852-153.173-72.626l3.187 1.85c-2.6-1.080-4.467-3.449-4.815-6.287l-0.004-0.038z"]},"ic_volume1":{"viewBox":"0 0 1234 1024","paths":["M597.835 512q0-193.656 0-387.614c0-17.167 0-36.141-18.372-45.176s-33.129 4.518-47.285 14.758l-13.854 10.541c-94.268 76.198-188.838 153.299-282.202 231.002-14.854 13.503-34.678 21.771-56.434 21.771-1.337 0-2.667-0.031-3.989-0.093l0.187 0.007c-38.852-1.807-77.402 0-116.254 0-2.637-0.482-5.672-0.757-8.771-0.757-28.277 0-51.2 22.923-51.2 51.2 0 2.071 0.123 4.113 0.362 6.12l-0.024-0.243q0 98.485 0 196.969c-0.218 1.779-0.342 3.838-0.342 5.926 0 28.443 23.058 51.501 51.501 51.501 3.208 0 6.347-0.293 9.393-0.855l-0.317 0.048c41.562 0 83.125 0 124.687 0 1.099-0.069 2.383-0.109 3.676-0.109 15.42 0 29.526 5.626 40.378 14.936l-0.083-0.070c98.786 81.016 198.475 161.732 297.864 242.447 15.661 12.348 30.118 30.118 53.609 20.179s18.673-33.732 18.974-53.308z","M873.412 473.449c-11.316-70.608-48.697-130.889-101.772-171.808l-0.628-0.465c-5.401-5.181-12.746-8.371-20.836-8.371-9.112 0-17.279 4.047-22.802 10.441l-0.033 0.039c-10.541 12.951-6.626 30.118 9.035 43.068 51.567 39.981 84.44 101.942 84.44 171.581 0 20.284-2.789 39.917-8.004 58.536l0.365-1.524c-10.544 44.811-37.899 81.899-74.888 105l-0.708 0.412c-9.308 4.683-15.583 14.16-15.583 25.102 0 5.422 1.54 10.484 4.208 14.772l-0.069-0.119c5.489 8.055 14.619 13.274 24.968 13.274 6.827 0 13.124-2.272 18.176-6.101l-0.075 0.055 4.819-4.518c63.36-44.040 104.316-116.467 104.316-198.46 0-2.547-0.040-5.085-0.118-7.613l0.009 0.369c-0.005-15.481-1.761-30.549-5.079-45.021l0.261 1.35z"]},"ic_volume2":{"viewBox":"0 0 1234 1024","paths":["M597.835 512q0-193.656 0-387.614c0-17.167 0-36.141-18.372-45.176s-33.129 4.518-47.285 14.758l-13.854 10.541c-94.268 76.198-188.838 153.299-282.202 231.002-14.854 13.503-34.678 21.771-56.434 21.771-1.337 0-2.667-0.031-3.989-0.093l0.187 0.007c-38.852-1.807-77.402 0-116.254 0-2.637-0.482-5.672-0.757-8.771-0.757-28.277 0-51.2 22.923-51.2 51.2 0 2.071 0.123 4.113 0.362 6.12l-0.024-0.243q0 98.485 0 196.969c-0.218 1.779-0.342 3.838-0.342 5.926 0 28.443 23.058 51.501 51.501 51.501 3.208 0 6.347-0.293 9.393-0.855l-0.317 0.048c41.562 0 83.125 0 124.687 0 1.099-0.069 2.383-0.109 3.676-0.109 15.42 0 29.526 5.626 40.378 14.936l-0.083-0.070c98.786 81.016 198.475 161.732 297.864 242.447 15.661 12.348 30.118 30.118 53.609 20.179s18.673-33.732 18.974-53.308z","M1050.504 427.369c-20.607-113.854-80.336-211.092-164.487-279.419l-0.858-0.675c-19.275-15.962-37.346-16.264-49.694-1.807s-9.638 32.527 10.24 48.489c22.45 18.023 42.212 37.785 59.656 59.49l0.579 0.745c57.394 71.924 92.096 164.158 92.096 264.497 0 13.55-0.633 26.953-1.871 40.179l0.128-1.693c-3.584 113.985-61.903 213.626-149.426 273.916l-1.162 0.757c-9.666 5.144-16.136 15.154-16.136 26.675 0 6.739 2.213 12.961 5.952 17.979l-0.057-0.080c5.476 8.151 14.66 13.443 25.080 13.443 7.594 0 14.532-2.811 19.83-7.449l-0.035 0.030c15.072-9.568 28.155-19.491 40.356-30.38l-0.299 0.262c98.485-87.944 139.746-199.078 139.746-339.125-0.255-30.545-3.753-60.135-10.165-88.622l0.527 2.786z","M886.362 470.739c-11.887-76.996-52.81-142.713-111.017-186.809l-0.719-0.522c-5.541-6.197-13.559-10.079-22.484-10.079-9.881 0-18.65 4.758-24.142 12.108l-0.057 0.079c-3.656 5.124-5.845 11.513-5.845 18.414 0 11.559 6.143 21.683 15.342 27.286l0.141 0.080c55.223 43.106 90.395 109.678 90.395 184.465 0 22.576-3.205 44.403-9.185 65.052l0.409-1.649c-11.296 48.267-40.733 88.224-80.557 113.101l-0.761 0.443c-10.032 5.028-16.798 15.23-16.798 27.012 0 5.829 1.656 11.272 4.524 15.883l-0.074-0.128c5.931 8.67 15.775 14.286 26.931 14.286 7.33 0 14.094-2.425 19.533-6.516l-0.083 0.060 6.024-3.614c68.304-47.513 112.451-125.618 112.451-214.033 0-2.684-0.041-5.359-0.121-8.023l0.009 0.39c0.061-1.894 0.096-4.121 0.096-6.356 0-14.483-1.46-28.624-4.242-42.285l0.231 1.356z"]},"ic_volume3":{"viewBox":"0 0 1234 1024","paths":["M597.835 516.216q0-193.958 0-387.614c0-17.167 0-36.141-18.372-45.176s-33.129 4.216-47.285 14.758l-13.854 10.541c-93.967 76.8-188.536 153.299-281.901 230.701-14.772 13.681-34.613 22.074-56.414 22.074-1.344 0-2.681-0.032-4.009-0.095l0.188 0.007c-40.056-1.807-78.607-0-115.953-0-2.709-0.505-5.825-0.794-9.009-0.794-28.443 0-51.501 23.058-51.501 51.501 0 1.871 0.1 3.719 0.294 5.538l-0.020-0.226q0 98.485 0 196.969c-0.241 1.872-0.379 4.037-0.379 6.234 0 28.443 23.058 51.501 51.501 51.501 3.221 0 6.373-0.296 9.43-0.861l-0.317 0.049c41.562 0 83.125 0 124.687 0 0.944-0.050 2.049-0.079 3.161-0.079 15.582 0 29.853 5.608 40.907 14.915l-0.096-0.079c98.786 81.318 198.475 162.033 297.864 242.447 15.661 12.649 30.118 30.118 53.609 20.48s18.673-33.732 18.974-53.609z","M1056.226 512c0.040-2.032 0.062-4.427 0.062-6.828 0-27.557-2.985-54.417-8.648-80.274l0.454 2.471c-20.736-112.48-79.851-208.501-162.993-276.114l-0.847-0.667c-19.275-15.661-37.045-15.962-49.694-1.807s-9.638 32.226 10.24 48.489c21.936 17.519 41.211 36.794 58.168 58.002l0.562 0.727c57.34 71.651 92.017 163.607 92.017 263.663 0 13.207-0.604 26.272-1.786 39.171l0.123-1.657c-4.035 113.334-62.261 212.262-149.419 272.108l-1.169 0.758c-9.322 5.241-15.516 15.068-15.516 26.341 0 6.363 1.973 12.265 5.341 17.128l-0.065-0.1c5.502 7.948 14.571 13.088 24.841 13.088 7.566 0 14.48-2.79 19.77-7.396l-0.036 0.031c15.073-9.548 28.156-19.471 40.347-30.373l-0.29 0.255c97.882-86.438 138.842-196.969 138.541-337.016z","M885.158 471.040c-11.898-76.433-52.456-141.682-110.13-185.613l-0.703-0.514c-5.069-3.928-11.519-6.297-18.522-6.297-16.784 0-30.391 13.606-30.391 30.391 0 9.781 4.621 18.483 11.799 24.042l0.070 0.052c54.99 42.709 90.037 108.838 90.037 183.153 0 22.4-3.184 44.057-9.125 64.542l0.406-1.634c-10.991 48.32-40.388 88.344-80.256 113.104l-0.76 0.44c-9.905 5.070-16.567 15.205-16.567 26.897 0 5.877 1.683 11.361 4.594 15.995l-0.074-0.125c5.954 8.471 15.685 13.939 26.692 13.939 7.303 0 14.044-2.407 19.472-6.47l-0.085 0.061 6.024-3.614c67.758-47.063 111.56-124.493 111.56-212.153 0-2.816-0.045-5.621-0.135-8.415l0.010 0.408c0.087-2.237 0.136-4.864 0.136-7.502 0-14.4-1.475-28.455-4.283-42.022l0.231 1.336z","M993.882 5.722c-4.81-3.4-10.797-5.435-17.258-5.435-9.423 0-17.835 4.327-23.357 11.103l-0.043 0.055c-3.4 4.81-5.435 10.797-5.435 17.258 0 9.423 4.327 17.835 11.103 23.357l0.055 0.043c129.72 110.558 212.383 272.999 215.634 454.822l0.008 0.557c0 260.518-124.386 391.529-217.751 465.016-5.549 5.466-8.987 13.062-8.987 21.461 0 15.875 12.282 28.881 27.862 30.034l0.099 0.006c6.849-0.093 13.128-2.459 18.137-6.375l-0.066 0.050c60.235-47.586 240.941-191.849 240.941-510.193-2.605-201.84-95.391-381.493-239.828-500.866l-1.113-0.894z"]},"ic_arrow_left":{"viewBox":"0 0 606 1024","paths":["M264.132 512l309.609-319.247c19.848-20.685 32.069-48.821 32.069-79.812s-12.221-59.127-32.107-79.852l0.038 0.040c-19.51-20.447-46.972-33.16-77.402-33.16s-57.892 12.713-77.363 33.118l-0.040 0.042-387.012 399.059c-19.713 20.744-31.839 48.862-31.839 79.812s12.126 59.067 31.886 79.861l-0.047-0.050 387.012 399.059c19.51 20.447 46.972 33.16 77.402 33.16s57.892-12.713 77.363-33.118l0.040-0.042c19.848-20.685 32.069-48.821 32.069-79.812s-12.221-59.127-32.107-79.852l0.038 0.040z"]},"ic_user":{"viewBox":"0 0 1025 1024","paths":["M512 1024h-480.075c-30.118 0-30.118 0-30.118-30.118s0-58.729 0-87.944c-0.136-2.391-0.213-5.189-0.213-8.005 0-45.941 20.573-87.077 53.008-114.699l0.212-0.176c56.1-47.641 123.699-83.585 197.954-103.116l3.533-0.79c76.56-26.327 164.777-41.528 256.544-41.528 7.328 0 14.633 0.097 21.915 0.29l-1.075-0.023c135 4.354 260.853 39.505 372.034 98.607l-4.599-2.231c30.35 16.328 56.289 36.409 78.453 60.069l0.154 0.166c27.38 27.272 44.322 65.006 44.322 106.697 0 1.348-0.018 2.693-0.053 4.033l0.004-0.198c0 30.118 0 60.235 0 90.353 0 22.588-7.228 30.118-30.118 30.118-159.624-1.506-320.753-1.506-481.882-1.506z","M512 0c141.942 0.681 256.825 115.564 257.506 257.441l0 0.065c0.073 2.291 0.115 4.984 0.115 7.688 0 142.217-115.289 257.506-257.506 257.506s-257.506-115.289-257.506-257.506c0-3.445 0.068-6.874 0.202-10.286l-0.015 0.49c1.528-141.068 115.99-254.896 257.156-255.398l0.048-0z"]},"ic_cloud":{"viewBox":"0 0 1507 1024","paths":["M1505.882 725.835c-0.418-158.794-124.777-288.407-281.42-297.226l-0.782-0.035c-5.678-238.777-200.589-430.173-440.203-430.173-215.321 0-394.543 154.553-432.784 358.776l-0.425 2.728h-18.071c-4.495-0.218-9.762-0.342-15.059-0.342-183.158 0-331.636 148.479-331.636 331.636 0 177.861 140.015 323.020 315.836 331.266l0.741 0.028c9.939 0 20.179 0 30.118 0s20.781 0 30.118 0h812.273c9.806 1.151 21.165 1.807 32.678 1.807s22.872-0.656 34.043-1.934l-1.365 0.127h4.518c148.127-19.060 261.422-144.378 261.422-296.158 0-0.176-0-0.352-0-0.528l0 0.027zM1234.824 930.033h-3.012c-6.83 0.958-14.721 1.505-22.739 1.505s-15.909-0.547-23.636-1.605l0.897 0.101h-830.344c-7.529 0-15.059 0-22.287 0s-14.758 0-22.287 0v0c-115.542-19.156-202.563-118.348-202.563-237.865 0-127.406 98.889-231.716 224.099-240.362l0.751-0.042h18.372c45.001-0.182 82.379-32.588 90.266-75.329l0.087-0.567c31.159-162.767 172.393-284.103 341.966-284.103 188.761 0 342.406 150.348 347.717 337.825l0.011 0.49c-0 0.018-0 0.039-0 0.061 0 48.735 38.585 88.459 86.874 90.287l0.166 0.005c109.332 5.349 195.952 95.295 195.952 205.472 0 104.649-78.146 191.046-179.266 204.020l-1.025 0.107z","M950.513 405.986c-3.313-16.125-17.389-28.079-34.257-28.079-19.295 0-34.936 15.642-34.936 34.936 0 3.129 0.411 6.162 1.183 9.048l-0.056-0.244 76.499 331.294c3.685 15.552 17.453 26.945 33.882 26.945 19.206 0 34.775-15.569 34.775-34.775 0-2.777-0.326-5.478-0.94-8.067l0.047 0.236z","M814.682 370.447c-19.129-0-34.635 15.507-34.635 34.635v339.125c-0.096 0.971-0.151 2.099-0.151 3.24 0 19.295 15.642 34.936 34.936 34.936s34.936-15.642 34.936-34.936c0-1.141-0.055-2.269-0.162-3.382l0.011 0.142v-339.125c0-0 0-0.001 0-0.001 0-19.129-15.507-34.635-34.635-34.635-0.106 0-0.212 0-0.317 0.001l0.016-0z","M580.668 370.447c-0.090-0.001-0.195-0.001-0.301-0.001-19.129 0-34.635 15.507-34.635 34.635 0 0 0 0.001 0 0.001l-0-0v339.125c0 19.295 15.642 34.936 34.936 34.936s34.936-15.642 34.936-34.936v0-339.125c0-0 0-0.001 0-0.001 0-19.129-15.507-34.635-34.635-34.635-0.106 0-0.212 0-0.317 0.001l0.016-0z","M697.826 438.513c-0-0-0.001-0-0.001-0-19.355 0-35.066 15.605-35.236 34.92l-0 0.016v271.059c-0.096 0.971-0.151 2.099-0.151 3.24 0 19.295 15.642 34.936 34.936 34.936s34.936-15.642 34.936-34.936c0-1.141-0.055-2.269-0.162-3.382l0.011 0.142v-271.059c-0.161-19.020-15.366-34.435-34.288-34.935l-0.047-0.001z"]},"ic_arrow_down":{"viewBox":"0 0 1731 1024","paths":["M1674.541 54.212c-35.054-33.866-82.855-54.734-135.529-54.734s-100.475 20.868-135.585 54.788l0.056-0.054-538.202 523.144-539.708-523.144c-34.993-34.004-82.813-54.97-135.529-54.97s-100.536 20.966-135.576 55.015l0.046-0.045c-34.583 32.979-56.087 79.409-56.087 130.861s21.504 97.882 56.015 130.793l0.072 0.068 675.84 653.854c35.054 33.866 82.855 54.734 135.529 54.734s100.475-20.868 135.585-54.788l-0.056 0.054 673.129-653.854c34.583-32.979 56.087-79.409 56.087-130.861s-21.504-97.882-56.015-130.793l-0.072-0.068z"]},"ic_chromecast":{"viewBox":"0 0 864 1024","paths":["M527.059 187.332c0.656-1.898 1.183-4.138 1.487-6.447l0.019-0.178v-148.48c-0.17-17.835-14.667-32.227-32.526-32.227-0.106 0-0.213 0.001-0.319 0.002l0.016-0h-127.398c-0.090-0.001-0.196-0.001-0.303-0.001-17.859 0-32.356 14.392-32.526 32.211l-0 0.016v148.48c-0.15 1.22-0.235 2.633-0.235 4.066s0.086 2.845 0.252 4.233l-0.016-0.168c-191.813 42.59-333.449 210.318-335.509 411.482l-0.002 0.226c2.543 234.419 193.168 423.472 427.948 423.472 1.385 0 2.768-0.007 4.15-0.020l-0.211 0.002c1.26 0.013 2.749 0.021 4.24 0.021 234.781 0 425.406-189.055 427.946-423.235l0.002-0.24c-1.491-202.419-144.073-371.112-334.203-412.698l-2.814-0.516zM150.588 365.327c68.198-79.69 168.881-129.875 281.286-129.875 133.446 0 250.371 70.733 315.329 176.751l0.919 1.614s0 3.915 0 9.638c-37.647 0-75.294 0-113.242 0-74.993 0-150.588 0-225.581 6.024-73.855 5.205-133.522 59.937-146.228 130.948l-0.143 0.967c-2.365 6.315-4.798 11.575-7.562 16.628l0.334-0.666c-37.647-62.645-73.186-120.471-106.616-180.706-1.895-4.166-2.999-9.035-2.999-14.162 0-6.307 1.671-12.224 4.595-17.331l-0.090 0.171zM563.501 598.739c-0.601 69.735-57.272 126.035-127.092 126.035-2.12 0-4.228-0.052-6.323-0.155l0.295 0.012c-0.627 0.011-1.367 0.017-2.108 0.017-70.193 0-127.096-56.903-127.096-127.096 0-0.006 0-0.012 0-0.018l-0 0.001c2.574-70.162 60.073-126.064 130.628-126.064 2.36 0 4.705 0.063 7.034 0.186l-0.325-0.014c69.071 0.164 125.001 56.195 125.001 125.289 0 0.636-0.005 1.27-0.014 1.903l0.001-0.096zM364.122 952.621c-171.752-28.752-301.023-176.296-301.023-354.033 0-64.087 16.807-124.249 46.253-176.318l-0.929 1.787c2.626-3.697 5.396-6.945 8.424-9.93l0.009-0.008c37.948 62.946 74.391 124.687 111.134 186.428 10.24 16.866 20.179 34.033 30.118 51.2 60.235 97.581 120.471 125.892 240.941 105.713-37.045 63.548-71.379 123.181-107.52 182.212-6.231 7.921-15.816 12.961-26.578 12.961-0.291 0-0.582-0.004-0.872-0.011l0.043 0.001zM520.734 949.308c-30.118 6.927-60.235 9.939-97.581 15.962 7.529-15.36 10.842-23.492 15.36-30.118 40.96-70.776 79.812-142.758 123.784-210.824 60.235-93.365 58.729-177.995-24.094-262.626 74.391 0 146.372 0 218.353 0 9.336 0 22.889 16.866 26.805 28.311 10.359 32.118 16.331 69.068 16.331 107.414 0 170.354-117.863 313.179-276.491 351.379l-2.466 0.501z"]},"ic_cinema":{"viewBox":"0 0 1024 1024","paths":["M624.64 0l-624.64 624.64c22.010 21.835 35.635 52.093 35.635 85.534s-13.625 63.699-35.627 85.526l-0.008 0.008 228.292 228.292c21.835-22.010 52.093-35.635 85.534-35.635s63.699 13.625 85.526 35.627l0.008 0.008 624.64-624.64c-22.010-21.835-35.635-52.093-35.635-85.534s13.625-63.699 35.627-85.526l0.008-0.008-228.292-228.292c-21.835 22.010-52.093 35.635-85.534 35.635s-63.699-13.625-85.526-35.627l-0.008-0.008zM967.981 232.207c-13.636 23.441-21.685 51.59-21.685 81.619s8.049 58.177 22.107 82.407l-0.422-0.788-572.235 572.235c-23.441-13.636-51.59-21.685-81.619-21.685s-58.177 8.049-82.407 22.107l0.788-0.422-176.489-175.887c13.636-23.441 21.685-51.59 21.685-81.619s-8.049-58.177-22.107-82.407l0.422 0.788 572.235-572.235c23.441 13.636 51.59 21.685 81.619 21.685s58.177-8.049 82.407-22.107l-0.788 0.422z","M634.88 109.929l-525.553 525.854c10.694 21.459 16.952 46.742 16.952 73.487s-6.259 52.028-17.391 74.465l0.439-0.978 131.614 133.421c21.67-10.942 47.236-17.351 74.299-17.351 25.842 0 50.319 5.843 72.182 16.28l-1.012-0.435 527.661-526.456c-10.093-20.933-15.991-45.518-15.991-71.48 0-27.651 6.69-53.739 18.54-76.735l-0.44 0.94-133.12-132.216c-21.932 11.258-47.852 17.856-75.313 17.856-26.502 0-51.569-6.146-73.853-17.089l0.987 0.438zM372.254 629.459v41.864c-0 0.003-0 0.007-0 0.010 0 1.871 0.948 3.521 2.39 4.495l0.019 0.012 34.033 24.094c1.758 0.92 2.938 2.732 2.938 4.819s-1.179 3.899-2.908 4.805l-0.030 0.014-43.068 13.252c-1.578 0.517-2.796 1.735-3.303 3.277l-0.010 0.036-12.951 40.659c-0.7 2.239-2.756 3.836-5.184 3.836-1.837 0-3.461-0.914-4.442-2.313l-0.012-0.017-24.094-34.033c-0.986-1.461-2.636-2.409-4.508-2.409-0.004 0-0.007 0-0.011 0l0.001-0h-41.864c-0.149 0.015-0.322 0.023-0.498 0.023-2.994 0-5.421-2.427-5.421-5.421 0-1.402 0.532-2.679 1.405-3.642l-0.004 0.005 25.6-34.334c0.302-0.712 0.477-1.54 0.477-2.409s-0.175-1.697-0.492-2.451l0.016 0.042-13.252-40.056c-0.176-0.511-0.278-1.1-0.278-1.712 0-2.994 2.427-5.421 5.421-5.421 0.528 0 1.038 0.075 1.521 0.216l-0.038-0.010 40.056 13.252c0.75 0.36 1.63 0.571 2.56 0.571s1.81-0.211 2.596-0.587l-0.036 0.016 34.033-25.6c0.923-1.66 2.667-2.764 4.668-2.764 2.94 0 5.324 2.384 5.324 5.324 0 0.939-0.243 1.821-0.67 2.587l0.014-0.027zM568.32 418.635l-1.506 61.741c-0 0.022-0 0.049-0 0.075 0 2.678 1.294 5.053 3.291 6.535l0.022 0.016 50.296 34.033c1.986 1.499 3.257 3.856 3.257 6.509 0 3.499-2.209 6.481-5.309 7.628l-0.056 0.018-60.235 18.974c-2.504 0.684-4.436 2.616-5.108 5.069l-0.012 0.051-19.275 60.235c-1.047 3.176-3.987 5.428-7.453 5.428-2.635 0-4.966-1.301-6.385-3.296l-0.016-0.024-34.635-49.393c-1.372-2.016-3.656-3.323-6.245-3.323-0.134 0-0.267 0.004-0.4 0.010l0.019-0.001h-61.741c-0.139 0.009-0.301 0.014-0.464 0.014-4.325 0-7.831-3.506-7.831-7.831 0-1.831 0.629-3.516 1.682-4.849l-0.013 0.017 37.647-49.995c0.494-1.061 0.783-2.304 0.783-3.614s-0.288-2.553-0.805-3.668l0.022 0.054-19.576-60.235c-0.266-0.754-0.419-1.623-0.419-2.527 0-4.325 3.506-7.831 7.831-7.831 0.905 0 1.774 0.153 2.582 0.436l-0.055-0.017 60.235 19.275c1 0.556 2.194 0.884 3.464 0.884s2.463-0.328 3.501-0.903l-0.037 0.019 50.296-37.346c1.317-1.041 3.001-1.669 4.833-1.669 4.325 0 7.831 3.506 7.831 7.831 0 0.163-0.005 0.326-0.015 0.486l0.001-0.022zM731.859 271.059v42.165c0.050 1.862 0.982 3.496 2.392 4.506l0.017 0.012 34.334 24.094c1.467 0.917 2.429 2.524 2.429 4.356 0 2.407-1.661 4.426-3.899 4.974l-0.035 0.007-40.659 12.951c-1.736 0.538-3.076 1.878-3.604 3.576l-0.010 0.038-12.951 40.659c-0.7 2.239-2.756 3.836-5.184 3.836-1.837 0-3.461-0.914-4.442-2.313l-0.012-0.017-23.793-34.334c-1.001-1.29-2.552-2.113-4.295-2.113-0.078 0-0.156 0.002-0.234 0.005l0.011-0h-42.165c-0.069 0.003-0.149 0.005-0.23 0.005-2.994 0-5.421-2.427-5.421-5.421 0-1.255 0.427-2.411 1.143-3.33l-0.009 0.012 24.395-33.431c0.406-0.691 0.646-1.522 0.646-2.409s-0.24-1.718-0.658-2.432l0.012 0.023-13.252-40.056c-0.2-0.542-0.315-1.168-0.315-1.821 0-2.994 2.427-5.421 5.421-5.421 0.653 0 1.279 0.115 1.858 0.327l-0.038-0.012 39.755 13.252c0.734 0.431 1.617 0.686 2.56 0.686s1.826-0.255 2.584-0.699l-0.024 0.013 34.635-27.106c0.984-0.997 2.35-1.615 3.86-1.615 2.994 0 5.421 2.427 5.421 5.421 0 0.577-0.090 1.132-0.257 1.653l0.011-0.038z"]},"ic_ellipsis":{"viewBox":"0 0 1024 1024","paths":["M108.122 403.878c-0.089-0-0.195-0-0.301-0-59.714 0-108.122 48.408-108.122 108.122s48.408 108.122 108.122 108.122c59.714 0 108.122-48.408 108.122-108.122l-0 0c0-0 0-0 0-0 0-59.608-48.236-107.951-107.805-108.122l-0.016-0z","M507.181 403.878c-59.714 0-108.122 48.408-108.122 108.122s48.408 108.122 108.122 108.122c59.714 0 108.122-48.408 108.122-108.122v0c0-59.714-48.408-108.122-108.122-108.122v0z","M915.878 403.878c-59.714 0-108.122 48.408-108.122 108.122s48.408 108.122 108.122 108.122c59.714 0 108.122-48.408 108.122-108.122v0c0-0.090 0-0.196 0-0.302 0-59.548-48.273-107.821-107.821-107.821-0.106 0-0.212 0-0.318 0l0.016-0z"]},"ic_glasses":{"viewBox":"0 0 1926 1024","paths":["M1905.845 481.882c-1.833-2.635-3.919-4.912-6.271-6.883l-0.054-0.044-487.304-425.562c-33.631-29.308-77.897-47.176-126.338-47.176-51.742 0-98.721 20.387-133.345 53.566l0.068-0.065-51.802 49.995c-8.043 8.373-12.996 19.767-12.996 32.318 0 25.782 20.9 46.682 46.682 46.682 11.951 0 22.854-4.491 31.111-11.878l-0.045 0.039 51.802-49.995c17.736-16.688 41.691-26.942 68.041-26.942 25.088 0 48.005 9.295 65.494 24.63l-0.114-0.098 391.529 343.944h-1561.6l395.144-346.052c17.305-15.125 40.104-24.349 65.057-24.349 26.526 0 50.618 10.423 68.402 27.398l-0.039-0.037 51.802 50.296c8.387 8.060 19.802 13.024 32.376 13.024 25.822 0 46.755-20.933 46.755-46.755 0-13.248-5.51-25.209-14.363-33.717l-0.016-0.015-51.802-49.995c-34.333-33.555-81.352-54.258-133.207-54.258-48.589 0-92.933 18.177-126.601 48.103l0.194-0.169-487.304 426.165c-2.681 2.337-5.056 4.903-7.136 7.701l-0.092 0.129c-12.267 11.895-19.881 28.528-19.881 46.94 0 0.227 0.001 0.454 0.003 0.68l-0-0.035v428.273c-0 0.090-0.001 0.196-0.001 0.302 0 36.427 29.53 65.958 65.958 65.958 0.106 0 0.212-0 0.318-0.001l-0.016 0h644.819c0.363 0.003 0.793 0.005 1.223 0.005 39.41 0 75.082-16.003 100.873-41.866l0.003-0.003 109.026-108.725c10.375-10.473 24.759-16.957 40.659-16.957s30.284 6.484 40.654 16.953l0.004 0.004 110.833 108.725c25.763 25.745 61.299 41.714 100.564 41.863l0.029 0h644.518c0.090 0 0.196 0.001 0.302 0.001 36.427 0 65.958-29.53 65.958-65.958 0-0.106-0-0.212-0.001-0.318l0 0.016v-428.273c0.004-0.267 0.006-0.583 0.006-0.899 0-18.333-7.619-34.887-19.863-46.667l-0.021-0.020zM827.332 798.72l-124.687 120.471h-599.341v-350.569h722.824zM1821.214 919.191h-598.739l-124.687-120.471v-230.099h722.824z"]},"ic_grid":{"viewBox":"0 0 1039 1024","paths":["M56.019 0h317.44c30.938 0 56.019 25.080 56.019 56.019v317.44c0 30.938-25.080 56.019-56.019 56.019h-317.44c-30.938 0-56.019-25.080-56.019-56.019v-317.44c0-30.938 25.080-56.019 56.019-56.019z","M665.901 0h317.44c30.938 0 56.019 25.080 56.019 56.019v317.44c0 30.938-25.080 56.019-56.019 56.019h-317.44c-30.938 0-56.019-25.080-56.019-56.019v-317.44c0-30.938 25.080-56.019 56.019-56.019z","M56.019 594.522h317.44c30.938 0 56.019 25.080 56.019 56.019v317.44c0 30.938-25.080 56.019-56.019 56.019h-317.44c-30.938 0-56.019-25.080-56.019-56.019v-317.44c0-30.938 25.080-56.019 56.019-56.019z","M665.901 594.522h317.44c30.938 0 56.019 25.080 56.019 56.019v317.44c0 30.938-25.080 56.019-56.019 56.019h-317.44c-30.938 0-56.019-25.080-56.019-56.019v-317.44c0-30.938 25.080-56.019 56.019-56.019z"]},"ic_imdbnoframe":{"viewBox":"0 0 2874 1024","paths":["M0 0h197.873v1013.459h-197.873v-1013.459z","M794.805 683.068l-193.054-683.068h-251.784v1013.459h173.478v-706.259l187.031 593.318h168.659l186.729-606.569v719.511h173.478v-1013.459h-251.482l-193.054 683.068z","M1740.8 0h-335.511v1013.459h334.607q190.946 0 295.755-95.172t104.508-268.047v-287.021q0-172.875-104.207-268.047t-295.153-95.172zM1945.6 655.962c0.14 2.502 0.219 5.431 0.219 8.378 0 47.010-20.245 89.292-52.493 118.601l-0.131 0.117c-36.827 28.45-83.646 45.602-134.47 45.602-4.823 0-9.61-0.154-14.356-0.459l0.647 0.033h-148.781v-644.216h148.48c4.099-0.271 8.886-0.425 13.708-0.425 50.825 0 97.643 17.152 134.983 45.983l-0.513-0.381c32.41 29.579 52.664 72.002 52.664 119.156 0 3.217-0.094 6.413-0.28 9.583l0.021-0.438z","M2630.174 279.492c-0.356-0.003-0.778-0.004-1.2-0.004-39.282 0-75.526 13.011-104.656 34.96l0.444-0.32c-25.55 19.818-46.465 44.29-61.741 72.282l-0.602 1.205v-387.614h-191.247v1013.459h191.247v-95.473c26.883 62.914 88.237 106.202 159.701 106.202 2.833 0 5.65-0.068 8.45-0.203l-0.395 0.015c3.585 0.214 7.778 0.336 11.999 0.336 68.311 0 129.151-31.986 168.359-81.798l0.348-0.458q63.548-81.92 63.548-231.002v-115.652q0-150.588-63.548-233.412c-39.49-50.608-100.489-82.842-169.016-82.842-4.112 0-8.197 0.116-12.252 0.345l0.562-0.025zM2682.579 711.078c0.154 2.574 0.242 5.584 0.242 8.615 0 34.54-11.401 66.418-30.645 92.075l0.285-0.398c-18.89 21.912-46.683 35.699-77.697 35.699-2.015 0-4.017-0.058-6.004-0.173l0.275 0.013c-1.239 0.047-2.695 0.075-4.156 0.075-19.738 0-38.324-4.932-54.593-13.63l0.623 0.304c-15.974-8.736-28.61-21.857-36.517-37.745l-0.227-0.504c-7.83-16.554-12.402-35.963-12.402-56.439 0-1.335 0.019-2.665 0.058-3.991l-0.004 0.195v-162.936c-0.047-1.369-0.074-2.977-0.074-4.592 0-21.028 4.576-40.988 12.786-58.938l-0.363 0.886c8.012-16.829 20.666-30.355 36.307-39.227l0.436-0.228c15.781-8.571 34.555-13.609 54.506-13.609 1.273 0 2.542 0.021 3.805 0.061l-0.184-0.005c1.532-0.082 3.325-0.129 5.13-0.129 31.373 0 59.44 14.15 78.169 36.416l0.127 0.155c18.981 26.070 30.367 58.731 30.367 94.051 0 3.149-0.091 6.277-0.269 9.381l0.020-0.43z"]},"ic_time":{"viewBox":"0 0 1025 1024","paths":["M690.899 477.064l-132.518-3.313-3.614-232.809c-0.841-32.613-27.479-58.729-60.216-58.729-0.007 0-0.013 0-0.020 0l0.001-0c-0.019-0-0.043-0-0.066-0-30.938 0-56.019 25.080-56.019 56.019 0 0.953 0.024 1.901 0.071 2.843l-0.005-0.132 4.518 290.334c0.841 32.613 27.479 58.729 60.216 58.729 0.007 0 0.013-0 0.020-0l-0.001 0 190.344 4.518c0.455 0.013 0.99 0.021 1.527 0.021 30.772 0 55.718-24.946 55.718-55.718 0-0.537-0.008-1.072-0.023-1.605l0.002 0.078c0-0 0-0 0-0.001 0-33.161-26.797-60.064-59.918-60.234l-0.016-0z","M883.351 161.732c-90.543-95.747-216.891-156.82-357.52-161.708l-0.88-0.024c-3.070-0.066-6.687-0.104-10.314-0.104-138.198 0-263.562 54.947-355.438 144.186l0.123-0.119c-98.26 92.852-159.424 224.071-159.424 369.575 0 142.717 58.843 271.691 153.591 363.984l0.111 0.107c88.622 88.958 210.672 144.561 345.709 146.368l0.343 0.004h24.094c277.633-5.364 500.641-231.69 500.641-510.104 0-136.661-53.732-260.772-141.221-352.36l0.185 0.195zM512 894.494v0c-210.453-1.363-380.611-171.944-381.289-382.429l-0-0.065c0.342-210.443 170.847-380.947 381.257-381.289l0.033-0c210.913 0 381.892 170.979 381.892 381.892s-170.979 381.892-381.892 381.892v0z"]},"ic_addlib":{"viewBox":"0 0 1264 1024","paths":["M78.306 0c-43.178 0.17-78.135 35.127-78.306 78.29l-0 0.016v764.988c2.636 41.27 36.754 73.744 78.456 73.744s75.82-32.474 78.445-73.514l0.012-0.23v-764.988c-0.171-43.284-35.299-78.306-78.606-78.306-0 0-0 0-0.001 0l0 0z","M341.835 153.901c-43.178 0.17-78.135 35.127-78.306 78.29l-0 0.016v611.087c0 43.663 35.396 79.059 79.059 79.059s79.059-35.396 79.059-79.059v0-611.087c-0.166-43.288-35.296-78.315-78.607-78.315-0.424 0-0.847 0.003-1.269 0.010l0.064-0.001z","M963.765 421.647c-166.335 0-301.176 134.841-301.176 301.176s134.841 301.176 301.176 301.176c166.335 0 301.176-134.841 301.176-301.176v0c0-166.335-134.841-301.176-301.176-301.176v0zM1156.518 768.602h-148.179v147.275h-90.353v-148.179h-147.878v-90.353h147.275v-147.878h90.353v147.275h147.275z","M683.972 465.016v-386.711c-2.636-41.27-36.754-73.744-78.456-73.744s-75.82 32.474-78.445 73.514l-0.012 0.23v764.988c-0 0-0 0-0 0.001 0 43.247 35.059 78.306 78.306 78.306 0.106 0 0.212-0 0.318-0.001l-0.016 0c0.068 0 0.147 0 0.227 0 10.82 0 21.097-2.329 30.355-6.513l-0.465 0.188c-32.753-54.79-52.119-120.857-52.119-191.447 0-99.528 38.499-190.064 101.417-257.529l-0.206 0.223z","M817.092 371.351c42.987-18.759 93.047-29.807 145.652-30.117l0.117-0.001h8.433l-60.235-262.325c-8.294-35.054-39.322-60.736-76.348-60.736-43.274 0-78.355 35.081-78.355 78.355 0 6.248 0.731 12.325 2.113 18.151l-0.106-0.532z"]},"ic_minus":{"viewBox":"0 0 1019 1024","paths":["M63.548 442.428h891.784c33.326 2.362 59.467 29.978 59.467 63.699s-26.141 61.336-59.263 63.687l-0.204 0.012h-891.784c-33.326-2.362-59.467-29.978-59.467-63.699s26.141-61.336 59.263-63.687l0.204-0.012z"]},"ic_plus":{"viewBox":"0 0 1024 1024","paths":["M576.151 576.151h383.699c35.429 0 64.151-28.721 64.151-64.151s-28.721-64.151-64.151-64.151v-0h-383.699v-383.699c0-35.429-28.721-64.151-64.151-64.151s-64.151 28.721-64.151 64.151h-0v383.699h-383.699c-35.429 0-64.151 28.721-64.151 64.151s28.721 64.151 64.151 64.151v0h383.699v383.699c0 35.429 28.721 64.151 64.151 64.151s64.151-28.721 64.151-64.151v0z"]},"ic_removelib":{"viewBox":"0 0 1264 1024","paths":["M78.306 0c-43.178 0.17-78.135 35.127-78.306 78.29l-0 0.016v764.988c2.636 41.27 36.754 73.744 78.456 73.744s75.82-32.474 78.445-73.514l0.012-0.23v-764.988c-0.171-43.284-35.299-78.306-78.606-78.306-0 0-0 0-0.001 0l0 0z","M341.835 153.901c-43.178 0.17-78.135 35.127-78.306 78.29l-0 0.016v611.087c0 43.663 35.396 79.059 79.059 79.059s79.059-35.396 79.059-79.059v0-611.087c-0.166-43.288-35.296-78.315-78.607-78.315-0.424 0-0.847 0.003-1.269 0.010l0.064-0.001z","M963.765 421.647c-166.335 0-301.176 134.841-301.176 301.176s134.841 301.176 301.176 301.176c166.335 0 301.176-134.841 301.176-301.176v0c0-166.335-134.841-301.176-301.176-301.176v0zM1156.518 768.602h-386.409v-90.353h385.506z","M683.972 465.016v-386.711c-2.636-41.27-36.754-73.744-78.456-73.744s-75.82 32.474-78.445 73.514l-0.012 0.23v764.988c-0 0-0 0-0 0.001 0 43.247 35.059 78.306 78.306 78.306 0.106 0 0.212-0 0.318-0.001l-0.016 0c0.068 0 0.147 0 0.227 0 10.82 0 21.097-2.329 30.355-6.513l-0.465 0.188c-32.753-54.79-52.119-120.857-52.119-191.447 0-99.528 38.499-190.064 101.417-257.529l-0.206 0.223z","M817.092 371.351c42.987-18.759 93.047-29.807 145.652-30.117l0.117-0.001h8.433l-60.235-262.325c-8.294-35.054-39.322-60.736-76.348-60.736-43.274 0-78.355 35.081-78.355 78.355 0 6.248 0.731 12.325 2.113 18.151l-0.106-0.532z"]},"ic_upload":{"viewBox":"0 0 1082 1024","paths":["M1014.061 888.772h-946.598c-35.431 2.438-63.25 31.777-63.25 67.614s27.818 65.176 63.039 67.602l0.211 0.012h946.598c1.351 0.096 2.926 0.151 4.515 0.151 37.425 0 67.765-30.339 67.765-67.765s-30.339-67.765-67.765-67.765c-1.589 0-3.165 0.055-4.726 0.162l0.211-0.012zM349.666 354.485l123.482-123.784v487.002c-0.096 1.351-0.151 2.926-0.151 4.515 0 37.425 30.339 67.765 67.765 67.765s67.765-30.339 67.765-67.765c0-1.589-0.055-3.165-0.162-4.726l0.012 0.211v-487.002l123.784 123.784c12.482 14.159 30.66 23.044 50.913 23.044 37.425 0 67.765-30.339 67.765-67.765 0-20.328-8.951-38.566-23.127-50.987l-0.078-0.067-238.833-238.833c-12.26-12.245-29.189-19.818-47.887-19.818s-35.627 7.573-47.888 19.819l-239.133 238.832c-11.269 12.069-18.187 28.325-18.187 46.197 0 37.425 30.339 67.765 67.765 67.765 17.872 0 34.128-6.919 46.236-18.224l-0.039 0.036z"]},"ic_back_android":{"viewBox":"0 0 1024 1024","paths":["M1024 448.151h-778.842l357.195-357.798-90.353-90.353-512 512 512 512 90.353-90.353-357.195-357.798h778.842z"]},"ic_back_ios":{"viewBox":"0 0 607 1024","paths":["M607.473 926.419l-412.009-414.419 412.009-414.419-97.28-97.581-510.193 512 510.193 512z"]},"ic_box_empty":{"viewBox":"0 0 1024 1024","paths":["M843.294 180.706v662.588h-662.588v-662.588h662.588zM1024 0h-1024v1024h1024v-1024z"]},"ic_cast_connected":{"viewBox":"0 0 1248 1024","paths":["M1247.774 292.141v-163.539c0.014-0.705 0.022-1.536 0.022-2.369 0-25.286-7.419-48.839-20.2-68.602l0.3 0.496c-22.443-35.182-61.27-58.178-105.467-58.178-1.251 0-2.498 0.018-3.741 0.055l0.182-0.004h-995.991c-66.831 0.479-121.042 53.846-122.876 120.3l-0.004 0.17c0 37.346 0 75.294 0 111.736 0 15.661 0 30.118 0 46.984s6.927 25.6 26.202 25.901h82.522c1.616 0.279 3.476 0.439 5.374 0.439 7.919 0 15.189-2.778 20.889-7.414l-0.061 0.048c4.001-5.639 6.397-12.663 6.397-20.246 0-2.428-0.245-4.798-0.713-7.087l0.039 0.227c0-16.264 0-32.828 0-49.092v-34.635c0-13.854 0-27.708 0-43.369 0.072-0.722 0.112-1.561 0.112-2.409s-0.041-1.687-0.121-2.515l0.008 0.105h969.788v26.504c0 12.649 0 25.299 0 37.948s0 32.226 0 48.188v400.264c0 10.541 0 21.082 0 31.624 0 17.769 0 35.238 0 52.706v90.353c0 19.275 0 38.852 0 60.235h-364.725c-0.419-0.024-0.909-0.037-1.402-0.037-6.755 0-12.919 2.527-17.599 6.687l0.027-0.024c-3.974 4.647-6.392 10.728-6.392 17.373 0 0.669 0.025 1.333 0.073 1.99l-0.005-0.088c0 19.576 0 39.153 0 58.729v30.118c0 18.673 6.325 24.998 25.299 24.998h112.038q131.313 0 263.228 0v0c0 0 0.001 0 0.001 0 69.528 0 125.892-56.364 125.892-125.892 0-0.212-0.001-0.423-0.002-0.635l0 0.033c0-38.551 0-77.101 0-115.652z","M570.127 726.136c-45.557-87.92-108.351-161.018-184.427-217.155l-1.701-1.198c-50.839-37.899-109.826-68.648-173.412-89.159l-4.282-1.194c-53.805-18.222-115.815-29.171-180.249-30.112l-0.457-0.005c-0.61-0.055-1.32-0.086-2.037-0.086-6.168 0-11.795 2.318-16.057 6.13l0.023-0.020c-3.774 4.152-6.085 9.694-6.085 15.775 0 0.596 0.022 1.186 0.066 1.771l-0.005-0.078q0 46.080 0 92.16c-0.071 0.651-0.112 1.406-0.112 2.17 0 11.643 9.439 21.082 21.082 21.082 0.569 0 1.134-0.023 1.692-0.067l-0.074 0.005c38.257 1.093 74.788 5.973 109.992 14.285l-3.677-0.732c34.559 8.541 64.648 19.581 93.113 33.439l-2.76-1.213c65.045 30.939 119.844 73.501 163.859 125.486l0.584 0.707c49.104 58.395 85.080 129.473 102.397 207.571l0.606 3.252c6.061 27.848 9.966 60.185 10.828 93.279l0.014 0.688c-0.045 0.508-0.070 1.099-0.070 1.696 0 11.311 9.169 20.48 20.48 20.48 0.981 0 1.945-0.069 2.889-0.202l-0.109 0.013h60.235c10.842 0 21.685 0 32.226 0h1.807c0.306 0.015 0.665 0.024 1.026 0.024 5.755 0 11.001-2.182 14.956-5.763l-0.019 0.017c4.123-4.402 6.655-10.338 6.655-16.865 0-0.424-0.011-0.846-0.032-1.264l0.002 0.059c-0.758-26.735-3.14-52.209-7.064-77.171l0.438 3.383c-9.612-74.923-31.586-142.854-63.924-204.494l1.581 3.308z","M346.654 783.059c-30.246-43.515-67.507-79.817-110.518-108.088l-1.519-0.938c-58.496-38.891-129.786-63.029-206.538-65.638l-0.671-0.018c-0.987-0.115-2.13-0.18-3.288-0.18-6.563 0-12.635 2.099-17.583 5.662l0.089-0.061c-3.862 4.574-6.209 10.536-6.209 17.046 0 1.104 0.067 2.192 0.199 3.261l-0.013-0.128v88.847c0 18.974 7.228 26.805 26.202 26.805 49.069 1.007 94.378 16.277 132.181 41.814l-0.868-0.553c51.412 33.037 89.775 82.534 107.934 140.931l0.489 1.827c6.315 19.746 10.33 42.533 11.132 66.136l0.011 0.424c-0.016 0.325-0.025 0.706-0.025 1.090 0 6.372 2.537 12.152 6.656 16.384l-0.005-0.005c4.272 3.926 9.995 6.332 16.28 6.332 0.206 0 0.412-0.003 0.617-0.008l-0.030 0.001h90.353c1.034 0.153 2.227 0.241 3.441 0.241 6.323 0 12.092-2.377 16.461-6.285l-0.024 0.021c3.189-4.048 5.116-9.221 5.116-14.844 0-1.891-0.218-3.732-0.63-5.498l0.032 0.163c-0.799-18.573-2.523-35.909-5.156-52.945l0.337 2.649c-9.375-62.263-32.141-117.876-65.302-165.74l0.851 1.298z","M27.407 830.042c-1.56-0.351-3.351-0.551-5.19-0.551-5.663 0-10.881 1.906-15.047 5.112l0.058-0.043c-4.014 4.335-6.477 10.157-6.477 16.555 0 0.959 0.055 1.904 0.163 2.834l-0.011-0.113v145.769c-0.040 0.518-0.062 1.122-0.062 1.731 0 6.313 2.428 12.060 6.402 16.356l-0.015-0.016c4.314 3.926 10.073 6.329 16.394 6.329 0.166 0 0.332-0.002 0.497-0.005l-0.025 0h148.179c0.467 0.033 1.011 0.051 1.56 0.051 6.27 0 11.974-2.425 16.224-6.389l-0.014 0.013c3.517-4.198 5.653-9.658 5.653-15.616 0-1.184-0.084-2.349-0.248-3.488l0.015 0.13c-1.725-23.969-7.987-46.1-17.929-66.077l0.461 1.023c-27.317-58.394-83.713-99.091-150.041-103.575l-0.547-0.030z","M998.099 244.856h-748.122v70.475c220.551 66.016 391.154 235.128 458.004 449.963l1.29 4.813h288.828z"]},"ic_cast_load1":{"viewBox":"0 0 1248 1024","paths":["M1247.774 292.141v-163.539c0.014-0.705 0.022-1.536 0.022-2.369 0-25.286-7.419-48.839-20.2-68.602l0.3 0.496c-22.443-35.182-61.27-58.178-105.467-58.178-1.251 0-2.498 0.018-3.741 0.055l0.182-0.004h-995.991c-66.831 0.479-121.042 53.846-122.876 120.3l-0.004 0.17c0 37.346 0 75.294 0 111.736 0 15.661 0 30.118 0 46.984s6.927 25.6 26.202 25.901h82.522c1.616 0.279 3.476 0.439 5.374 0.439 7.919 0 15.189-2.778 20.889-7.414l-0.061 0.048c4.001-5.639 6.397-12.663 6.397-20.246 0-2.428-0.245-4.798-0.713-7.087l0.039 0.227c0-16.264 0-32.828 0-49.092v-34.635c0-13.854 0-27.708 0-43.369 0.072-0.722 0.112-1.561 0.112-2.409s-0.041-1.687-0.121-2.515l0.008 0.105h969.788v26.504c0 12.649 0 25.299 0 37.948s0 32.226 0 48.188v400.264c0 10.541 0 21.082 0 31.624 0 17.769 0 35.238 0 52.706v90.353c0 19.275 0 38.852 0 60.235h-364.725c-0.419-0.024-0.909-0.037-1.402-0.037-6.755 0-12.919 2.527-17.599 6.687l0.027-0.024c-3.974 4.647-6.392 10.728-6.392 17.373 0 0.669 0.025 1.333 0.073 1.99l-0.005-0.088c0 19.576 0 39.153 0 58.729v30.118c0 18.673 6.325 24.998 25.299 24.998h112.038q131.313 0 263.228 0v0c0 0 0.001 0 0.001 0 69.528 0 125.892-56.364 125.892-125.892 0-0.212-0.001-0.423-0.002-0.635l0 0.033c0-38.551 0-77.101 0-115.652z","M570.127 726.136c-45.557-87.92-108.351-161.018-184.427-217.155l-1.701-1.198c-50.839-37.899-109.826-68.648-173.412-89.159l-4.282-1.194c-53.805-18.222-115.815-29.171-180.249-30.112l-0.457-0.005c-0.61-0.055-1.32-0.086-2.037-0.086-6.168 0-11.795 2.318-16.057 6.13l0.023-0.020c-3.774 4.152-6.085 9.694-6.085 15.775 0 0.596 0.022 1.186 0.066 1.771l-0.005-0.078q0 46.080 0 92.16c-0.071 0.651-0.112 1.406-0.112 2.17 0 11.643 9.439 21.082 21.082 21.082 0.569 0 1.134-0.023 1.692-0.067l-0.074 0.005c38.257 1.093 74.788 5.973 109.992 14.285l-3.677-0.732c34.559 8.541 64.648 19.581 93.113 33.439l-2.76-1.213c65.045 30.939 119.844 73.501 163.859 125.486l0.584 0.707c49.104 58.395 85.080 129.473 102.397 207.571l0.606 3.252c6.061 27.848 9.966 60.185 10.828 93.279l0.014 0.688c-0.045 0.508-0.070 1.099-0.070 1.696 0 11.311 9.169 20.48 20.48 20.48 0.981 0 1.945-0.069 2.889-0.202l-0.109 0.013h60.235c10.842 0 21.685 0 32.226 0h1.807c0.306 0.015 0.665 0.024 1.026 0.024 5.755 0 11.001-2.182 14.956-5.763l-0.019 0.017c4.123-4.402 6.655-10.338 6.655-16.865 0-0.424-0.011-0.846-0.032-1.264l0.002 0.059c-0.758-26.735-3.14-52.209-7.064-77.171l0.438 3.383c-9.612-74.923-31.586-142.854-63.924-204.494l1.581 3.308z","M346.654 783.059c-30.246-43.515-67.507-79.817-110.518-108.088l-1.519-0.938c-58.496-38.891-129.786-63.029-206.538-65.638l-0.671-0.018c-0.987-0.115-2.13-0.18-3.288-0.18-6.563 0-12.635 2.099-17.583 5.662l0.089-0.061c-3.862 4.574-6.209 10.536-6.209 17.046 0 1.104 0.067 2.192 0.199 3.261l-0.013-0.128v88.847c0 18.974 7.228 26.805 26.202 26.805 49.069 1.007 94.378 16.277 132.181 41.814l-0.868-0.553c51.412 33.037 89.775 82.534 107.934 140.931l0.489 1.827c6.315 19.746 10.33 42.533 11.132 66.136l0.011 0.424c-0.016 0.325-0.025 0.706-0.025 1.090 0 6.372 2.537 12.152 6.656 16.384l-0.005-0.005c4.272 3.926 9.995 6.332 16.28 6.332 0.206 0 0.412-0.003 0.617-0.008l-0.030 0.001h90.353c1.034 0.153 2.227 0.241 3.441 0.241 6.323 0 12.092-2.377 16.461-6.285l-0.024 0.021c3.189-4.048 5.116-9.221 5.116-14.844 0-1.891-0.218-3.732-0.63-5.498l0.032 0.163c-0.799-18.573-2.523-35.909-5.156-52.945l0.337 2.649c-9.375-62.263-32.141-117.876-65.302-165.74l0.851 1.298z","M27.407 830.042c-1.56-0.351-3.351-0.551-5.19-0.551-5.663 0-10.881 1.906-15.047 5.112l0.058-0.043c-4.014 4.335-6.477 10.157-6.477 16.555 0 0.959 0.055 1.904 0.163 2.834l-0.011-0.113v145.769c-0.040 0.518-0.062 1.122-0.062 1.731 0 6.313 2.428 12.060 6.402 16.356l-0.015-0.016c4.314 3.926 10.073 6.329 16.394 6.329 0.166 0 0.332-0.002 0.497-0.005l-0.025 0h148.179c0.467 0.033 1.011 0.051 1.56 0.051 6.27 0 11.974-2.425 16.224-6.389l-0.014 0.013c3.517-4.198 5.653-9.658 5.653-15.616 0-1.184-0.084-2.349-0.248-3.488l0.015 0.13c-1.725-23.969-7.987-46.1-17.929-66.077l0.461 1.023c-27.317-58.394-83.713-99.091-150.041-103.575l-0.547-0.030z"]},"ic_cast_load2":{"viewBox":"0 0 1248 1024","paths":["M1247.774 292.141v-163.539c0.014-0.705 0.022-1.536 0.022-2.369 0-25.286-7.419-48.839-20.2-68.602l0.3 0.496c-22.443-35.182-61.27-58.178-105.467-58.178-1.251 0-2.498 0.018-3.741 0.055l0.182-0.004h-995.991c-66.831 0.479-121.042 53.846-122.876 120.3l-0.004 0.17c0 37.346 0 75.294 0 111.736 0 15.661 0 30.118 0 46.984s6.927 25.6 26.202 25.901h82.522c1.616 0.279 3.476 0.439 5.374 0.439 7.919 0 15.189-2.778 20.889-7.414l-0.061 0.048c4.001-5.639 6.397-12.663 6.397-20.246 0-2.428-0.245-4.798-0.713-7.087l0.039 0.227c0-16.264 0-32.828 0-49.092v-34.635c0-13.854 0-27.708 0-43.369 0.072-0.722 0.112-1.561 0.112-2.409s-0.041-1.687-0.121-2.515l0.008 0.105h969.788v26.504c0 12.649 0 25.299 0 37.948s0 32.226 0 48.188v400.264c0 10.541 0 21.082 0 31.624 0 17.769 0 35.238 0 52.706v90.353c0 19.275 0 38.852 0 60.235h-364.725c-0.419-0.024-0.909-0.037-1.402-0.037-6.755 0-12.919 2.527-17.599 6.687l0.027-0.024c-3.974 4.647-6.392 10.728-6.392 17.373 0 0.669 0.025 1.333 0.073 1.99l-0.005-0.088c0 19.576 0 39.153 0 58.729v30.118c0 18.673 6.325 24.998 25.299 24.998h112.038q131.313 0 263.228 0v0c0 0 0.001 0 0.001 0 69.528 0 125.892-56.364 125.892-125.892 0-0.212-0.001-0.423-0.002-0.635l0 0.033c0-38.551 0-77.101 0-115.652z","M570.127 726.136c-45.557-87.92-108.351-161.018-184.427-217.155l-1.701-1.198c-50.839-37.899-109.826-68.648-173.412-89.159l-4.282-1.194c-53.805-18.222-115.815-29.171-180.249-30.112l-0.457-0.005c-0.61-0.055-1.32-0.086-2.037-0.086-6.168 0-11.795 2.318-16.057 6.13l0.023-0.020c-3.774 4.152-6.085 9.694-6.085 15.775 0 0.596 0.022 1.186 0.066 1.771l-0.005-0.078q0 46.080 0 92.16c-0.071 0.651-0.112 1.406-0.112 2.17 0 11.643 9.439 21.082 21.082 21.082 0.569 0 1.134-0.023 1.692-0.067l-0.074 0.005c38.257 1.093 74.788 5.973 109.992 14.285l-3.677-0.732c34.559 8.541 64.648 19.581 93.113 33.439l-2.76-1.213c65.045 30.939 119.844 73.501 163.859 125.486l0.584 0.707c49.104 58.395 85.080 129.473 102.397 207.571l0.606 3.252c6.061 27.848 9.966 60.185 10.828 93.279l0.014 0.688c-0.045 0.508-0.070 1.099-0.070 1.696 0 11.311 9.169 20.48 20.48 20.48 0.981 0 1.945-0.069 2.889-0.202l-0.109 0.013h60.235c10.842 0 21.685 0 32.226 0h1.807c0.306 0.015 0.665 0.024 1.026 0.024 5.755 0 11.001-2.182 14.956-5.763l-0.019 0.017c4.123-4.402 6.655-10.338 6.655-16.865 0-0.424-0.011-0.846-0.032-1.264l0.002 0.059c-0.758-26.735-3.14-52.209-7.064-77.171l0.438 3.383c-9.612-74.923-31.586-142.854-63.924-204.494l1.581 3.308z","M346.654 783.059c-30.246-43.515-67.507-79.817-110.518-108.088l-1.519-0.938c-58.496-38.891-129.786-63.029-206.538-65.638l-0.671-0.018c-0.987-0.115-2.13-0.18-3.288-0.18-6.563 0-12.635 2.099-17.583 5.662l0.089-0.061c-3.862 4.574-6.209 10.536-6.209 17.046 0 1.104 0.067 2.192 0.199 3.261l-0.013-0.128v88.847c0 18.974 7.228 26.805 26.202 26.805 49.069 1.007 94.378 16.277 132.181 41.814l-0.868-0.553c51.412 33.037 89.775 82.534 107.934 140.931l0.489 1.827c6.315 19.746 10.33 42.533 11.132 66.136l0.011 0.424c-0.016 0.325-0.025 0.706-0.025 1.090 0 6.372 2.537 12.152 6.656 16.384l-0.005-0.005c4.272 3.926 9.995 6.332 16.28 6.332 0.206 0 0.412-0.003 0.617-0.008l-0.030 0.001h90.353c1.034 0.153 2.227 0.241 3.441 0.241 6.323 0 12.092-2.377 16.461-6.285l-0.024 0.021c3.189-4.048 5.116-9.221 5.116-14.844 0-1.891-0.218-3.732-0.63-5.498l0.032 0.163c-0.799-18.573-2.523-35.909-5.156-52.945l0.337 2.649c-9.375-62.263-32.141-117.876-65.302-165.74l0.851 1.298z","M27.407 830.042c-1.56-0.351-3.351-0.551-5.19-0.551-5.663 0-10.881 1.906-15.047 5.112l0.058-0.043c-4.014 4.335-6.477 10.157-6.477 16.555 0 0.959 0.055 1.904 0.163 2.834l-0.011-0.113v145.769c-0.040 0.518-0.062 1.122-0.062 1.731 0 6.313 2.428 12.060 6.402 16.356l-0.015-0.016c4.314 3.926 10.073 6.329 16.394 6.329 0.166 0 0.332-0.002 0.497-0.005l-0.025 0h148.179c0.467 0.033 1.011 0.051 1.56 0.051 6.27 0 11.974-2.425 16.224-6.389l-0.014 0.013c3.517-4.198 5.653-9.658 5.653-15.616 0-1.184-0.084-2.349-0.248-3.488l0.015 0.13c-1.725-23.969-7.987-46.1-17.929-66.077l0.461 1.023c-27.317-58.394-83.713-99.091-150.041-103.575l-0.547-0.030z"]},"ic_globe":{"viewBox":"0 0 1025 1024","paths":["M512 0c282.765 0.006 511.989 229.234 511.989 512 0 282.77-229.23 512-512 512s-512-229.23-512-512c0-1.165 0.004-2.328 0.012-3.491l-0.001 0.178c1.879-281.341 230.384-508.687 511.989-508.687 0.004 0 0.008 0 0.011 0l-0.001-0zM926.419 605.064c-8.897 4.421-16.148 10.995-21.257 19.061l-0.127 0.214c-5.743 7.658-14.173 13.031-23.867 14.725l-0.227 0.033c-21.384 3.915-22.588 5.722-17.468 27.106 6.626 28.612 4.216 34.334-21.384 46.682-31.278 14.299-56.792 36.618-74.58 64.365l-0.413 0.689c-5.947 11.642-13.394 21.589-22.248 30.081l-0.039 0.037c-19.312 16.025-36.403 33.498-51.549 52.584l-0.555 0.724c-24.743 26.011-59.614 42.189-98.264 42.189-7.843 0-15.53-0.666-23.009-1.945l0.802 0.113c-8.734-2.409-17.468-6.024-18.372-15.661-1.719-10.752-2.701-23.149-2.701-35.775 0-26.401 4.295-51.8 12.224-75.535l-0.487 1.681c13.8-30.302 24.327-65.485 29.846-102.305l0.271-2.203c0.822-3.134 1.294-6.732 1.294-10.44 0-22.166-16.863-40.394-38.461-42.553l-0.179-0.014c-37.155-8.644-64.805-40.389-67.151-78.967l-0.012-0.242c-0.034-1.259-0.053-2.741-0.053-4.227 0-31.806 8.867-61.541 24.265-86.867l-0.419 0.741c19.376-30.644 47.327-54.325 80.474-67.95l1.145-0.417c8.936-3.534 19.287-5.583 30.118-5.583s21.182 2.049 30.688 5.78l-0.571-0.197c3.759 1.222 8.093 1.984 12.586 2.107l0.063 0.001c2.861-0.422 6.164-0.664 9.523-0.664 36.144 0 65.766 27.925 68.467 63.377l0.014 0.232c1.525 13.996 13.279 24.792 27.554 24.792 1.65 0 3.267-0.144 4.838-0.421l-0.167 0.024c0.401-0.019 0.871-0.030 1.344-0.030 9.565 0 18.089 4.459 23.606 11.412l0.048 0.062c6.505 8.476 14.286 15.586 23.128 21.169l0.364 0.214c2.77 1.557 6.080 2.474 9.604 2.474 6.718 0 12.657-3.333 16.256-8.435l0.042-0.063c5.12-6.927 7.529-15.962 0-21.384-13.854-8.734-24.094-23.191-40.056-28.612-10.75-3.496-18.428-13.319-18.672-24.969l-0-0.029c0-9.035-2.711-18.071-3.614-27.106-0.371-6.113-3.331-11.468-7.789-15.027l-0.042-0.032c-3.915-2.711-8.433-6.626-12.951-2.711s0 7.831 1.506 11.445 8.433 13.553 12.047 20.781c0.539 1.080 0.855 2.353 0.855 3.7 0 3.207-1.79 5.995-4.425 7.421l-0.045 0.022c-2.028 1.518-4.586 2.431-7.357 2.431-1.691 0-3.303-0.34-4.771-0.956l0.081 0.030c-4.819-2.108-2.711-6.024 0-9.638s-2.409-13.252-6.626-18.372c-8.749-9.752-16.887-20.475-24.109-31.839l-0.588-0.99c-4.118-7.988-12.309-13.355-21.754-13.355-4.161 0-8.078 1.042-11.506 2.878l0.131-0.064c-10.24 4.216-19.878 9.939-30.118 15.059-4.068 1.486-8.765 2.346-13.662 2.346-20.58 0-37.616-15.178-40.522-34.952l-0.027-0.223c1.897-24.715 22.418-44.050 47.454-44.050 3.893 0 7.678 0.468 11.3 1.35l-0.326-0.067c7.831 2.108 15.059 5.421 22.588 8.132 3.413 0.756 7.333 1.189 11.354 1.189 10.621 0 20.537-3.021 28.935-8.25l-0.232 0.135c9.336-3.915 5.722-13.854 7.228-21.384 2.711-14.456 13.252-21.685 30.118-20.48 3.576 0.576 7.698 0.905 11.896 0.905s8.321-0.329 12.342-0.963l-0.445 0.058c2.053-0.414 4.413-0.651 6.828-0.651 10.991 0 20.837 4.906 27.465 12.649l0.041 0.049c18.673 17.769 34.936 37.948 53.911 55.718-37.624-76.378-96.006-137.667-167.804-177.84l-2.060-1.059c2.108 18.071 8.433 33.129-3.915 46.080-10.16 10.391-22.98 18.14-37.359 22.147l-0.589 0.14c-6.463 1.516-13.884 2.385-21.507 2.385-11.498 0-22.535-1.977-32.789-5.608l0.687 0.212c-32.828-8.433-67.765-5.722-100.292-17.167-12.951-4.819-16.264-11.445-10.541-22.588s14.456-27.407 22.588-40.659 3.915-19.878-8.433-25.299c-10.496-3.928-22.667-6.706-35.321-7.795l-0.519-0.036c-1.063-0.18-2.288-0.282-3.536-0.282-9.488 0-17.592 5.929-20.807 14.285l-0.052 0.152c-2.983 7.394-4.714 15.968-4.714 24.946 0 1.82 0.071 3.624 0.211 5.408l-0.015-0.236c0.518 2.567 0.814 5.519 0.814 8.539 0 6.037-1.184 11.797-3.333 17.061l0.109-0.302c-27.407 49.995-24.395 60.235-88.546 60.235h-18.974c-2.725-0.524-5.859-0.823-9.064-0.823-6.375 0-12.473 1.186-18.085 3.349l0.344-0.117c-35.238 19.878-74.993 30.118-109.929 50.899-20.618 9.86-34.607 30.552-34.607 54.511 0 2.016 0.099 4.008 0.292 5.973l-0.020-0.249c2.558 16.507 10.622 30.785 22.223 41.205l0.064 0.057c29.201 24.35 51.967 55.44 66.025 90.929l0.535 1.533c9.861 35.388 27.712 65.818 51.553 90.407l-0.052-0.054c8.2 7.807 13.299 18.805 13.299 30.994 0 1.921-0.127 3.812-0.372 5.665l0.024-0.218c-2.675 24.472-12.953 46.148-28.387 63.031l0.077-0.085c-22.873 22.673-52.998 38.064-86.589 42.387l-0.752 0.079c-13.536 1.62-25.778 6.003-36.538 12.574l0.397-0.225c-10.505 6.659-17.378 18.223-17.378 31.393 0 7.855 2.445 15.139 6.615 21.133l-0.080-0.121c99.991 127.096 231.002 187.332 391.529 167.755s277.685-110.532 343.642-261.421c8.663-18.865 15.752-40.86 20.182-63.804l0.298-1.853zM117.158 665.299c-0.705-5.18-1.107-11.168-1.107-17.249 0-12.176 1.613-23.976 4.637-35.196l-0.217 0.944c2.874-9.93 4.527-21.337 4.527-33.13 0-16.147-3.099-31.571-8.736-45.708l0.293 0.833c-4.72-11.428-7.461-24.697-7.461-38.606 0-5.401 0.413-10.705 1.21-15.883l-0.073 0.578c5.722-35.84 11.445-71.379 16.866-106.918 0.947-3.792 1.491-8.146 1.491-12.626 0-8.085-1.77-15.756-4.943-22.647l0.139 0.337c-22.767 50.184-36.036 108.822-36.036 170.558 0 55.697 10.799 108.872 30.418 157.546l-1.009-2.833z"]},"ic_auto":{"viewBox":"0 0 1681 1024","paths":["M280.998 1.506l-222.871-1.506c-0.18-0.002-0.393-0.003-0.606-0.003-31.77 0-57.525 25.755-57.525 57.525 0 0.213 0.001 0.426 0.003 0.638l-0-0.032 1.506 222.871c0.818 32.101 26.628 57.911 58.653 58.728l0.077 0.002c0.027 0 0.059 0 0.090 0 15.854 0 30.203-6.448 40.566-16.864l0.002-0.002c10.418-10.182 16.878-24.375 16.878-40.077 0-0.416-0.005-0.832-0.014-1.246l0.001 0.062v-164.442h164.442c0.353 0.008 0.768 0.013 1.185 0.013 15.702 0 29.895-6.46 40.066-16.868l0.010-0.011c10.003-10.373 16.189-24.485 16.263-40.042l0-0.015c-0.818-32.101-26.628-57.911-58.653-58.728l-0.077-0.002z","M1399.567 118.061h164.442v164.442c-0.008 0.353-0.013 0.768-0.013 1.185 0 15.702 6.46 29.895 16.868 40.066l0.011 0.010c10.366 10.418 24.714 16.866 40.568 16.866 0.032 0 0.064-0 0.095-0l-0.005 0c0.006 0 0.012 0 0.019 0 32.738 0 59.375-26.117 60.215-58.652l0.002-0.078v-222.871c0.013-0.447 0.020-0.973 0.020-1.501 0-16-6.707-30.432-17.464-40.64l-0.025-0.023c-10.548-10.426-25.055-16.866-41.066-16.866-0.068 0-0.137 0-0.205 0l0.011-0-222.871 1.506c-0.008-0-0.018-0-0.027-0-32.632 0-59.203 25.948-60.206 58.336l-0.002 0.092c-0.001 0.094-0.001 0.206-0.001 0.318 0 15.972 6.442 30.44 16.87 40.947l-0.004-0.004c10.324 10.444 24.651 16.912 40.488 16.912 0.801 0 1.599-0.017 2.393-0.049l-0.114 0.004z","M281.6 898.108h-164.442v-164.141c0.027-0.65 0.043-1.413 0.043-2.18 0-15.229-6.11-29.031-16.012-39.089l0.007 0.007c-10.7-9.894-25.063-15.962-40.844-15.962-0.041 0-0.082 0-0.123 0l0.006-0c-31.999 0.811-57.75 26.456-58.727 58.337l-0.002 0.091v222.871c-0.004 0.242-0.006 0.527-0.006 0.812 0 15.818 6.452 30.128 16.867 40.444l0.004 0.004c10.181 10.413 24.37 16.869 40.067 16.869 0.208 0 0.416-0.001 0.623-0.003l-0.032 0h222.871c32.613-0.841 58.729-27.479 58.729-60.216 0-0.007-0-0.013-0-0.020l0 0.001c-0.149-16.048-6.551-30.572-16.883-41.279l0.017 0.018c-11.187-9.977-25.916-16.194-42.089-16.563l-0.076-0.001z","M1621.233 676.744c-16.048 0.149-30.572 6.551-41.279 16.883l0.018-0.017c-10.418 10.135-16.881 24.289-16.881 39.952 0 0.46 0.006 0.919 0.017 1.377l-0.001-0.068v164.141h-164.442c-15.991 0.49-30.417 6.814-41.302 16.903l0.041-0.038c-10.315 10.689-16.717 25.213-16.866 41.232l-0 0.029c0 33.267 26.968 60.235 60.235 60.235v0h222.871c0.001 0 0.002 0 0.003 0 31.77 0 57.525-25.755 57.525-57.525 0-0.212-0.001-0.423-0.003-0.635l0 0.032v-222.871c-0.339-32.903-27.007-59.465-59.918-59.633l-0.016-0z","M903.529 93.666l9.638-9.638c8.784-8.956 14.205-21.238 14.205-34.786s-5.421-25.83-14.213-34.794l0.008 0.008c-8.906-9.018-21.269-14.603-34.936-14.603s-26.031 5.585-34.932 14.598l-0.005 0.005-93.064 92.762c-8.925 8.753-14.457 20.937-14.457 34.414 0 0.078 0 0.156 0.001 0.234l-0-0.012c-0 0.043-0 0.094-0 0.145 0 13.595 5.526 25.899 14.455 34.789l0.002 0.002 93.064 94.268c8.799 8.927 21.024 14.457 34.54 14.457 0.034 0 0.067-0 0.101-0l-0.005 0c0.291 0.006 0.634 0.010 0.979 0.010 27.279 0 49.393-22.114 49.393-49.393 0-14.26-6.043-27.108-15.707-36.124l-0.029-0.027-4.216-4.216c143.255 35.187 247.858 162.511 247.858 314.266 0 114.339-59.381 214.81-148.986 272.254l-1.29 0.774c-13.603 8.885-22.467 24.038-22.467 41.261 0 27.129 21.992 49.122 49.122 49.122 9.906 0 19.127-2.932 26.842-7.976l-0.188 0.115c118.499-75.978 195.902-207.012 195.902-356.126 0-208.13-150.798-381.039-349.096-415.429l-2.515-0.361z","M819.802 754.447c-8.956-8.784-21.238-14.205-34.786-14.205s-25.83 5.421-34.794 14.213l0.008-0.008c-8.788 8.822-14.221 20.992-14.221 34.43 0 12.191 4.471 23.338 11.864 31.891l-0.052-0.062c-139.655-37.615-240.752-163.124-240.752-312.246 0-114.342 59.439-214.802 149.105-272.165l1.295-0.775c11.965-9.052 19.615-23.261 19.615-39.257 0-27.113-21.979-49.092-49.092-49.092-8.268 0-16.059 2.044-22.894 5.654l0.267-0.129c-118.722 75.939-196.294 207.098-196.294 356.374 0 209.557 152.874 383.409 353.182 416.117l2.434 0.328-14.456 14.456c-8.927 8.891-14.452 21.193-14.452 34.786s5.524 25.895 14.45 34.784l0.002 0.002c8.799 8.927 21.024 14.457 34.54 14.457 0.034 0 0.067-0 0.101-0l-0.005 0c0.006 0 0.013 0 0.021 0 13.634 0 25.978-5.524 34.916-14.457l92.762-92.762c8.868-8.873 14.377-21.103 14.456-34.62l0-0.015c-0.166-13.613-5.65-25.913-14.466-34.947l0.010 0.010z"]},"ic_forw15":{"viewBox":"0 0 904 1024","paths":["M868.292 536.094c-0-0-0.001-0-0.001-0-19.794 0-35.84 16.046-35.84 35.84 0 0.106 0 0.212 0.001 0.317l-0-0.016c-0.172 209.952-170.41 380.085-380.386 380.085-210.081 0-380.386-170.305-380.386-380.386 0-209.975 170.133-380.214 380.068-380.386l0.017-0-66.861 64.753c-5.968 5.807-9.67 13.916-9.67 22.889s3.702 17.083 9.663 22.882l0.007 0.007c6.019 5.874 14.257 9.497 23.341 9.497s17.323-3.623 23.348-9.504l-0.007 0.007 124.988-123.482c5.968-5.807 9.67-13.916 9.67-22.889s-3.702-17.083-9.663-22.882l-0.007-0.007-124.988-123.482c-6.078-5.738-14.298-9.265-23.341-9.265s-17.263 3.527-23.358 9.281l0.016-0.015c-5.984 5.856-9.694 14.015-9.694 23.040s3.71 17.184 9.689 23.034l0.006 0.006 66.861 65.054c-249.503 0-451.765 202.262-451.765 451.765s202.262 451.765 451.765 451.765c249.503 0 451.765-202.262 451.765-451.765v0c0.001-0.091 0.001-0.199 0.001-0.306 0-19.583-15.705-35.497-35.207-35.835l-0.032-0z","M305.393 542.118v168.358h60.235v-290.936h-49.092l-93.967 74.391 30.118 37.045 33.431-26.805c3.915-3.012 11.144-9.939 21.384-20.179v30.118z","M609.581 471.642v-52.104h-157.816l-10.842 148.179 24.395 13.252c5.916-1.929 12.945-3.512 20.175-4.453l0.606-0.064c6.961-1.319 14.979-2.085 23.171-2.108l0.019-0c39.153 0 58.428 14.456 58.428 43.972s-18.673 46.080-56.32 46.080c-14.091-0.182-27.664-2.038-40.641-5.379l1.187 0.259c-13.948-3.409-26.187-8.162-37.592-14.269l0.849 0.415v53.308c20.815 9.985 45.249 15.819 71.046 15.819 2.553 0 5.093-0.057 7.619-0.17l-0.359 0.013c2.508 0.176 5.434 0.276 8.384 0.276 29.404 0 56.482-9.962 78.042-26.695l-0.289 0.216c18.652-17.324 30.285-41.984 30.285-69.361 0-1.981-0.061-3.948-0.181-5.9l0.013 0.268c0.072-1.311 0.112-2.846 0.112-4.39 0-23.688-9.595-45.134-25.111-60.665l0.001 0.001c-16.577-14.657-38.499-23.606-62.511-23.606-1.636 0-3.263 0.042-4.878 0.124l0.227-0.009c-0.743-0.014-1.619-0.022-2.497-0.022-9.774 0-19.317 0.995-28.53 2.889l0.91-0.156h-6.927l5.421-56.922z"]},"ic_forw30":{"viewBox":"0 0 904 1024","paths":["M868.292 536.094c-0-0-0.001-0-0.001-0-19.794 0-35.84 16.046-35.84 35.84 0 0.106 0 0.212 0.001 0.317l-0-0.016c-0.172 209.952-170.41 380.085-380.386 380.085-210.081 0-380.386-170.305-380.386-380.386 0-209.975 170.133-380.214 380.068-380.386l0.017-0-66.861 64.753c-5.968 5.807-9.67 13.916-9.67 22.889s3.702 17.083 9.663 22.882l0.007 0.007c6.019 5.874 14.257 9.497 23.341 9.497s17.323-3.623 23.348-9.504l-0.007 0.007 124.988-123.482c5.968-5.807 9.67-13.916 9.67-22.889s-3.702-17.083-9.663-22.882l-0.007-0.007-124.988-123.482c-6.078-5.738-14.298-9.265-23.341-9.265s-17.263 3.527-23.358 9.281l0.016-0.015c-5.984 5.856-9.694 14.015-9.694 23.040s3.71 17.184 9.689 23.034l0.006 0.006 66.861 65.054c-249.503 0-451.765 202.262-451.765 451.765s202.262 451.765 451.765 451.765c249.503 0 451.765-202.262 451.765-451.765v0c0.001-0.091 0.001-0.199 0.001-0.306 0-19.583-15.705-35.497-35.207-35.835l-0.032-0z","M309.609 667.106c-1.331 0.040-2.896 0.062-4.467 0.062-13.489 0-26.589-1.67-39.103-4.815l1.103 0.235c-14.927-3.742-27.961-8.693-40.217-14.949l1.064 0.493v55.115c24.798 10.507 53.636 16.614 83.901 16.614 1.633 0 3.263-0.018 4.887-0.053l-0.242 0.004c2.549 0.158 5.528 0.248 8.529 0.248 30.52 0 58.862-9.321 82.336-25.273l-0.511 0.328c19.722-15.117 32.313-38.684 32.313-65.192 0-1.328-0.032-2.65-0.094-3.963l0.007 0.185c0.048-0.918 0.075-1.993 0.075-3.074 0-17.685-7.293-33.666-19.035-45.101l-0.014-0.013c-15.25-12.824-34.695-21.112-56.017-22.572l-0.303-0.017c19.473-4.056 36.19-13.906 48.727-27.638l0.063-0.070c10.872-12.538 17.497-29.016 17.497-47.041 0-0.721-0.011-1.44-0.032-2.156l0.002 0.105c0.242-2.029 0.381-4.38 0.381-6.763 0-20.84-10.583-39.208-26.669-50.023l-0.216-0.137c-19.26-12.22-42.717-19.474-67.868-19.474-2.506 0-4.996 0.072-7.467 0.214l0.342-0.016c-1.365-0.040-2.97-0.063-4.581-0.063-35.839 0-69.040 11.3-96.233 30.531l0.522-0.35 30.118 44.875c9.97-6.951 21.422-12.859 33.631-17.16l1.004-0.308c8.958-3.054 19.285-4.912 30.017-5.118l0.1-0.002c30.118 0 43.671 11.445 43.671 34.936 0.085 0.894 0.133 1.933 0.133 2.983 0 12.302-6.645 23.052-16.541 28.856l-0.157 0.085c-13.103 6.061-28.437 9.597-44.597 9.597-2.641 0-5.261-0.094-7.855-0.28l0.348 0.020h-22.889v49.694h23.191c2.363-0.152 5.124-0.239 7.905-0.239 17.436 0 34.076 3.406 49.292 9.589l-0.877-0.315c10.466 4.871 17.592 15.298 17.592 27.389 0 0.961-0.045 1.911-0.133 2.848l0.009-0.12c0.094 1.028 0.148 2.223 0.148 3.431 0 12.788-6.038 24.165-15.418 31.437l-0.091 0.068c-12.373 7.803-27.425 12.432-43.558 12.432-1.311 0-2.614-0.031-3.91-0.091l0.183 0.007z","M481.882 441.224c-16.872 30.085-26.809 66.026-26.809 104.287 0 5.695 0.22 11.339 0.652 16.924l-0.046-0.74c-0.317 4.329-0.497 9.378-0.497 14.469 0 37.711 9.901 73.109 27.246 103.736l-0.546-1.048c16.46 24.209 43.875 39.903 74.956 39.903 1.814 0 3.616-0.053 5.403-0.159l-0.247 0.012c2.038 0.164 4.413 0.257 6.809 0.257 30.614 0 57.672-15.226 74.015-38.518l0.192-0.289c17.035-29.746 27.081-65.385 27.081-103.37 0-5.488-0.21-10.927-0.622-16.31l0.044 0.715c0.27-3.998 0.424-8.665 0.424-13.369 0-38.52-10.331-74.627-28.372-105.701l0.541 1.009c-16.415-24.541-44.018-40.484-75.344-40.484-1.678 0-3.345 0.046-5 0.136l0.231-0.010c-1.779-0.125-3.855-0.196-5.948-0.196-30.588 0-57.626 15.2-73.973 38.459l-0.192 0.288zM595.125 479.774c6.709 20.587 10.578 44.277 10.578 68.871 0 4.378-0.123 8.728-0.365 13.046l0.027-0.599c0.191 3.542 0.3 7.689 0.3 11.861 0 24.46-3.743 48.046-10.688 70.215l0.449-1.662c-4.273 14.419-17.312 24.794-32.805 24.997l-0.023 0c-0.030 0-0.065 0-0.101 0-15.471 0-28.53-10.323-32.667-24.456l-0.060-0.241c-6.511-20.462-10.264-43.998-10.264-68.41 0-4.329 0.118-8.63 0.351-12.9l-0.026 0.595c-0.197-3.629-0.31-7.876-0.31-12.15 0-24.673 3.746-48.472 10.701-70.857l-0.452 1.69c4.254-14.286 17.27-24.524 32.678-24.524s28.424 10.239 32.616 24.283l0.062 0.241z"]},"ic_forward":{"viewBox":"0 0 1117 1024","paths":["M0 1024l498.447-412.612v412.612l618.616-512-618.616-512v412.612l-498.447-412.612z"]},"ic_lock":{"viewBox":"0 0 1694 1024","paths":["M1061.948 442.127h-4.819v-69.572c0-116.435-94.389-210.824-210.824-210.824s-210.824 94.389-210.824 210.824v0 69.572h-3.012c-25.818 0.171-46.682 21.14-46.682 46.983 0 0 0 0.001 0 0.001l-0-0v325.873c0 25.782 20.9 46.682 46.682 46.682v-0h429.478c0.090 0.001 0.196 0.001 0.302 0.001 25.616 0 46.381-20.766 46.381-46.381 0-0.106-0-0.212-0.001-0.318l0 0.016v-325.873c0.001-0.089 0.001-0.195 0.001-0.301 0-25.782-20.9-46.682-46.682-46.682-0 0-0.001 0-0.001 0l-0 0zM965.572 437.609h-237.026v-65.054c-0.096-1.785-0.151-3.874-0.151-5.976 0-65.536 53.127-118.664 118.664-118.664s118.664 53.127 118.664 118.664c0 2.102-0.055 4.192-0.163 6.267l0.012-0.291z","M283.106 1.506l-222.871-1.506c-0.461-0.013-1.003-0.020-1.547-0.020-16.254 0-31.004 6.438-41.84 16.903l0.018-0.017c-10.382 10.76-16.799 25.405-16.866 41.549l-0 0.013 1.506 224.678c-0 33.267 26.968 60.235 60.235 60.235v0h-1.506c0.042 0 0.092 0 0.142 0 15.933 0 30.361-6.444 40.82-16.868l-0.002 0.002c11.845-10.481 19.275-25.72 19.275-42.695 0-0.025-0-0.051-0-0.076l0 0.004v-165.647h165.647c0.44 0.012 0.959 0.020 1.479 0.020 15.705 0 29.901-6.463 40.073-16.875l0.011-0.011c9.018-10.030 14.534-23.367 14.534-37.992 0-1.044-0.028-2.082-0.084-3.112l0.006 0.144c-0.824-32.203-26.801-58.074-58.968-58.728l-0.062-0.001z","M1410.409 120.471h165.346v165.647c0.066 16.157 6.484 30.803 16.883 41.58l-0.017-0.018c10.689 10.315 25.213 16.717 41.232 16.866l0.029 0c33.267 0 60.235-26.968 60.235-60.235v0-224.376c0.029-0.681 0.046-1.481 0.046-2.284 0-15.986-6.59-30.432-17.201-40.772l-0.012-0.012c-10.76-10.382-25.405-16.799-41.549-16.866l-0.013-0-224.678 1.506c-33.267-0-60.235 26.968-60.235 60.235v0c0.066 16.157 6.484 30.803 16.883 41.58l-0.017-0.018c10.49 10.621 25.051 17.199 41.149 17.199 0.675 0 1.347-0.012 2.016-0.034l-0.097 0.003z","M283.708 905.035h-165.647v-165.647c0.007-0.33 0.011-0.719 0.011-1.109 0-15.82-6.454-30.133-16.872-40.449l-0.005-0.005c-10.822-9.753-25.17-15.778-40.922-15.962l-0.038-0c-33.267 0-60.235 26.968-60.235 60.235v0 224.678c0.066 16.157 6.484 30.803 16.883 41.58l-0.017-0.018c10.657 9.715 24.893 15.666 40.52 15.666 0.261 0 0.521-0.002 0.781-0.005l-0.040 0h224.979c33.267 0 60.235-26.968 60.235-60.235v0c0.007-0.33 0.011-0.719 0.011-1.109 0-15.82-6.454-30.133-16.872-40.449l-0.005-0.005c-11.227-10.39-26.213-16.861-42.706-17.166l-0.061-0.001z","M1633.581 681.864c-16.229 0.211-30.929 6.591-41.896 16.896l0.033-0.031c-10.382 10.76-16.799 25.405-16.866 41.549l-0 0.013v165.647h-165.346c-16.219 0.273-30.901 6.639-41.901 16.9l0.037-0.034c-9.894 10.7-15.962 25.063-15.962 40.844 0 0.041 0 0.082 0 0.123l-0-0.006c0 33.267 26.968 60.235 60.235 60.235v0h224.678c15.973-0.030 30.437-6.464 40.966-16.871l-0.006 0.006c10.427-10.321 16.883-24.637 16.883-40.46 0-0.493-0.006-0.986-0.019-1.476l0.001 0.073v-224.376c-0.674-32.746-27.379-59.034-60.223-59.034-0.216 0-0.432 0.001-0.647 0.003l0.033-0z"]},"ic_rew15":{"viewBox":"0 0 904 1024","paths":["M453.572 120.471l65.656-64.753c5.838-5.923 9.443-14.060 9.443-23.040s-3.605-17.117-9.447-23.044l0.004 0.004c-6.078-5.738-14.298-9.265-23.341-9.265s-17.263 3.527-23.358 9.281l0.016-0.015-124.988 123.482c-5.968 5.807-9.67 13.916-9.67 22.889s3.702 17.083 9.663 22.882l0.007 0.007 124.988 122.278c6.019 5.874 14.257 9.497 23.341 9.497s17.323-3.623 23.348-9.504l-0.007 0.007c5.893-5.842 9.541-13.94 9.541-22.889s-3.648-17.048-9.539-22.887l-0.002-0.002-65.355-63.849c209.303 1.026 378.579 170.936 378.579 380.382 0 210.081-170.305 380.386-380.386 380.386-209.974 0-380.212-170.131-380.386-380.064l-0-0.017c0-19.794-16.046-35.84-35.84-35.84s-35.84 16.046-35.84 35.84v0c0.002 249.501 202.263 451.761 451.765 451.761 249.503 0 451.765-202.262 451.765-451.765 0-248.868-201.234-450.735-449.86-451.761l-0.097-0z","M285.816 504.169c3.915-3.012 11.144-9.939 21.384-20.179v226.184h60.235v-290.635h-50.899l-93.967 74.391 30.118 37.045z","M512 664.395c-14.091-0.182-27.664-2.038-40.641-5.379l1.187 0.259c-13.948-3.409-26.187-8.162-37.592-14.269l0.849 0.415v53.308c20.815 9.985 45.249 15.819 71.046 15.819 2.553 0 5.093-0.057 7.619-0.17l-0.359 0.013c2.508 0.176 5.434 0.276 8.384 0.276 29.404 0 56.482-9.962 78.042-26.695l-0.289 0.216c18.652-17.324 30.285-41.984 30.285-69.361 0-1.981-0.061-3.948-0.181-5.9l0.013 0.268c0.072-1.311 0.112-2.846 0.112-4.39 0-23.688-9.595-45.134-25.111-60.665l0.001 0.001c-16.577-14.657-38.499-23.606-62.511-23.606-1.636 0-3.263 0.042-4.878 0.124l0.227-0.009c-0.743-0.014-1.619-0.022-2.497-0.022-9.774 0-19.317 0.995-28.53 2.889l0.91-0.156h-6.927l5.421-56.922h103.906v-50.899h-158.72l-10.842 148.179 24.395 13.252c5.916-1.929 12.945-3.512 20.175-4.453l0.606-0.064c6.961-1.319 14.979-2.085 23.171-2.108l0.019-0c39.153 0 58.428 14.456 58.428 43.972s-18.974 46.080-55.718 46.080z"]},"ic_rew30":{"viewBox":"0 0 904 1024","paths":["M453.572 120.471l65.656-64.753c5.838-5.923 9.443-14.060 9.443-23.040s-3.605-17.117-9.447-23.044l0.004 0.004c-6.078-5.738-14.298-9.265-23.341-9.265s-17.263 3.527-23.358 9.281l0.016-0.015-124.988 123.482c-5.968 5.807-9.67 13.916-9.67 22.889s3.702 17.083 9.663 22.882l0.007 0.007 124.988 122.278c6.019 5.874 14.257 9.497 23.341 9.497s17.323-3.623 23.348-9.504l-0.007 0.007c5.893-5.842 9.541-13.94 9.541-22.889s-3.648-17.048-9.539-22.887l-0.002-0.002-65.355-63.849c209.303 1.026 378.579 170.936 378.579 380.382 0 210.081-170.305 380.386-380.386 380.386-209.974 0-380.212-170.131-380.386-380.064l-0-0.017c0-19.794-16.046-35.84-35.84-35.84s-35.84 16.046-35.84 35.84v0c0.002 249.501 202.263 451.761 451.765 451.761 249.503 0 451.765-202.262 451.765-451.765 0-248.868-201.234-450.735-449.86-451.761l-0.097-0z","M397.854 700.235c19.526-15.182 31.969-38.677 31.969-65.077 0-0.945-0.016-1.887-0.048-2.824l0.004 0.136c0.045-0.896 0.071-1.945 0.071-3 0-17.802-7.285-33.902-19.037-45.482l-0.008-0.008c-15.368-12.585-34.741-20.816-55.953-22.564l-0.367-0.024c19.473-4.056 36.19-13.906 48.727-27.638l0.063-0.070c11.466-12.534 18.491-29.298 18.491-47.702 0-1.442-0.043-2.875-0.128-4.296l0.009 0.196c0.026-0.67 0.041-1.458 0.041-2.248 0-21.41-10.792-40.299-27.233-51.524l-0.215-0.138c-19.56-12.203-43.312-19.438-68.754-19.438-2.3 0-4.587 0.059-6.858 0.176l0.318-0.013c-1.337-0.038-2.911-0.060-4.49-0.060-35.869 0-69.1 11.298-96.327 30.53l0.525-0.352 30.118 44.574c9.973-6.804 21.41-12.7 33.555-17.124l1.081-0.344c8.983-2.962 19.327-4.717 30.067-4.818l0.050-0c30.118 0 43.369 11.445 43.369 34.635 0.095 0.944 0.149 2.041 0.149 3.15 0 12.185-6.519 22.848-16.261 28.69l-0.152 0.084c-13.157 6.053-28.547 9.583-44.761 9.583-2.583 0-5.146-0.090-7.685-0.266l0.343 0.019h-23.793v49.995h23.191c2.407-0.159 5.219-0.249 8.052-0.249 17.386 0 33.976 3.41 49.137 9.598l-0.869-0.314c10.466 4.871 17.592 15.298 17.592 27.389 0 0.961-0.045 1.911-0.133 2.848l0.009-0.12c0.098 1.057 0.153 2.285 0.153 3.526 0 12.788-5.904 24.197-15.135 31.651l-0.077 0.060c-11.918 6.956-26.237 11.063-41.516 11.063-2.136 0-4.253-0.080-6.349-0.238l0.279 0.017c-15.116-0.017-29.737-2.105-43.604-5.995l1.138 0.273c-14.965-3.92-27.985-8.964-40.249-15.27l1.096 0.512v55.416c25.227 10.494 54.531 16.588 85.258 16.588 1.156 0 2.31-0.009 3.462-0.026l-0.174 0.002c3.146 0.234 6.816 0.368 10.516 0.368 30.213 0 58.348-8.897 81.927-24.215l-0.584 0.356z","M551.755 724.932c1.892 0.141 4.099 0.222 6.324 0.222 30.728 0 57.873-15.339 74.197-38.778l0.195-0.295c17.099-29.79 27.184-65.493 27.184-103.551 0-5.955-0.247-11.853-0.731-17.683l0.051 0.764c0.279-4.059 0.437-8.798 0.437-13.573 0-38.315-10.221-74.243-28.086-105.206l0.542 1.019c-16.413-24.55-44.021-40.499-75.354-40.499-1.78 0-3.548 0.051-5.302 0.153l0.242-0.011c-1.952-0.15-4.227-0.236-6.523-0.236-30.605 0-57.656 15.217-74 38.497l-0.192 0.289c-16.875 30.062-26.815 65.981-26.815 104.22 0 5.719 0.222 11.386 0.659 16.993l-0.046-0.742c-0.299 4.203-0.469 9.106-0.469 14.049 0 38.123 10.119 73.882 27.817 104.739l-0.544-1.028c16.389 24.716 44.090 40.79 75.546 40.79 1.712 0 3.414-0.048 5.103-0.142l-0.235 0.010zM518.927 486.099c4.197-14.374 17.257-24.697 32.727-24.697 0.036 0 0.071 0 0.106 0l-0.006-0c0.008-0 0.018-0 0.028-0 15.414 0 28.412 10.338 32.441 24.459l0.058 0.238c6.71 20.503 10.579 44.098 10.579 68.597 0 4.369-0.123 8.709-0.366 13.017l0.027-0.598c0.195 3.586 0.306 7.783 0.306 12.007 0 24.514-3.745 48.153-10.695 70.377l0.45-1.668c-4.441 14.173-17.455 24.277-32.828 24.277s-28.387-10.104-32.762-24.034l-0.066-0.243c-6.339-20.378-9.99-43.807-9.99-68.089 0-4.547 0.128-9.065 0.381-13.549l-0.028 0.622c-0.174-3.459-0.273-7.51-0.273-11.585 0-24.638 3.621-48.429 10.36-70.872l-0.449 1.742z"]},"ic_rewind":{"viewBox":"0 0 1117 1024","paths":["M1117.064 1024l-498.447-412.612v412.612l-618.616-512 618.616-512v412.612l498.447-412.612z"]},"ic_share":{"viewBox":"0 0 1024 1024","paths":["M846.005 679.454c-62.726 0.19-117.909 32.308-150.171 80.95l-0.417 0.669-295.755-96.979c2.298-11.196 3.614-24.064 3.614-37.239 0-0.038-0-0.075-0-0.113l0 0.006c0-0.039 0-0.085 0-0.132 0-29.541-6.893-57.472-19.159-82.272l0.486 1.086 221.967-143.059c42.092 37.259 97.727 60.066 158.685 60.235l0.035 0c0.81 0.010 1.768 0.016 2.726 0.016 128.794 0 233.38-103.646 234.901-232.079l0.001-0.144c0-131.737-106.794-238.532-238.532-238.532s-238.532 106.794-238.532 238.532h0c0.012 33.532 7.447 65.325 20.752 93.828l-0.573-1.367-227.087 146.372c-32.873-23.074-73.687-36.92-117.729-37.045l-0.031-0c-0.905-0.015-1.974-0.023-3.044-0.023-108.186 0-196.124 86.69-198.139 194.395l-0.003 0.189c2.017 107.893 89.956 194.583 198.142 194.583 1.070 0 2.139-0.008 3.205-0.025l-0.161 0.002c0.108 0 0.235 0 0.363 0 60.485 0 114.818-26.336 152.159-68.168l0.175-0.2 313.826 103.002c-0.004 0.448-0.006 0.976-0.006 1.506 0 98.47 79.826 178.296 178.296 178.296s178.296-79.826 178.296-178.296c0-98.468-79.823-178.293-178.29-178.296l-0-0zM923.106 851.727c0.054 1.079 0.084 2.343 0.084 3.614 0 42.748-34.654 77.402-77.402 77.402s-77.402-34.654-77.402-77.402c0-42.748 34.654-77.402 77.402-77.402 0.076 0 0.152 0 0.229 0l-0.012-0c0.455-0.010 0.99-0.015 1.527-0.015 41.12 0 74.572 32.831 75.572 73.711l0.002 0.093zM626.748 230.4c3.537-73.358 63.873-131.495 137.788-131.495s134.251 58.137 137.776 131.179l0.012 0.316c-3.537 73.358-63.873 131.495-137.788 131.495s-134.251-58.137-137.776-131.179l-0.012-0.316zM301.176 626.748c-1.34 53.35-44.907 96.087-98.456 96.087-0.54 0-1.078-0.004-1.616-0.013l0.081 0.001c-1.607 0.096-3.486 0.151-5.377 0.151-53.061 0-96.075-43.014-96.075-96.075s43.014-96.075 96.075-96.075c1.892 0 3.77 0.055 5.635 0.162l-0.258-0.012c0.459-0.008 1-0.012 1.543-0.012 53.443 0 96.943 42.568 98.445 95.648l0.003 0.139z"]},"ic_sidebar":{"viewBox":"0 0 1395 1024","paths":["M87.341 0h1220.668c48.237 0 87.341 39.104 87.341 87.341v-0.301c0 48.237-39.104 87.341-87.341 87.341h-1220.668c-48.237 0-87.341-39.104-87.341-87.341v0.301c0-48.237 39.104-87.341 87.341-87.341z","M458.993 424.659h849.016c48.237 0 87.341 39.104 87.341 87.341v-0.301c0 48.237-39.104 87.341-87.341 87.341h-849.016c-48.237 0-87.341-39.104-87.341-87.341v0.301c0-48.237 39.104-87.341 87.341-87.341z","M243.049 849.619h1064.96c48.237 0 87.341 39.104 87.341 87.341v-0.301c0 48.237-39.104 87.341-87.341 87.341h-1064.96c-48.237 0-87.341-39.104-87.341-87.341v0.301c0-48.237 39.104-87.341 87.341-87.341z"]},"ic_sub":{"viewBox":"0 0 1333 1024","paths":["M1333.308 358.099v-243.351c0.031-0.969 0.049-2.109 0.049-3.253 0-21.972-6.536-42.418-17.77-59.5l0.253 0.409c-19.663-31.687-54.263-52.473-93.719-52.473-1.358 0-2.711 0.025-4.057 0.073l0.195-0.006h-813.176c-96.979 0-194.259 0-292.744 0-7.894 0.185-15.467 1.054-22.811 2.55l0.825-0.14c-36.111 6.338-65.521 30.169-79.545 62.261l-0.267 0.685c-2.245 5.037-4.405 11.148-6.111 17.446l-0.214 0.926c-2.32 8.916-3.835 19.246-4.209 29.867l-0.007 0.25v684.574c-0.035 1.030-0.055 2.24-0.055 3.456 0 22.006 6.538 42.485 17.777 59.601l-0.254-0.412c19.765 31.522 54.322 52.172 93.701 52.172 1.364 0 2.723-0.025 4.075-0.074l-0.196 0.006q200.885 0 402.071 0h402.372l93.365 93.365c10.932 11.096 26.122 17.97 42.918 17.97s31.986-6.874 42.91-17.962l0.007-0.007 93.064-93.064h30.118c7.981-0.146 15.675-0.907 23.171-2.238l-0.884 0.13c36.076-6.614 65.417-30.48 79.541-62.558l0.271-0.689c2.22-5.098 4.285-11.223 5.85-17.544l0.173-0.828v-1.506c1.887-8.049 3.181-17.451 3.603-27.079l0.011-0.328v-442.729zM1235.125 358.099c0 15.059 0 30.118 0 44.875s0 22.889 0 34.635v342.438c0 14.155 1.506 31.925-20.179 34.635h-61.139l-97.882 97.882-98.184-97.581h-831.548c-1.244 0.182-2.681 0.286-4.142 0.286-6.98 0-13.406-2.375-18.513-6.36l0.067 0.050c-3.781-4.979-6.056-11.281-6.056-18.114 0-1.579 0.121-3.129 0.356-4.642l-0.021 0.169v-605.666c0-15.059 0-30.118 0-45.176s0-33.732 20.179-36.442h1089.054c1.146-0.154 2.47-0.243 3.815-0.243 7.127 0 13.675 2.475 18.833 6.613l-0.059-0.046c3.914 5.032 6.275 11.441 6.275 18.401 0 1.37-0.091 2.719-0.269 4.040l0.017-0.154v71.981c0 18.974 0 37.647 0 56.32z","M254.494 456.584h223.473c28.111 0 50.899 22.788 50.899 50.899v0 0c0 28.111-22.788 50.899-50.899 50.899v0h-223.473c-28.277 0-51.2-22.923-51.2-51.2v0 0c0-28.277 22.923-51.2 51.2-51.2v0z","M636.988 456.584h447.247c28.111 0 50.899 22.788 50.899 50.899v0 0c0.001 0.089 0.001 0.195 0.001 0.301 0 28.111-22.788 50.899-50.899 50.899-0 0-0.001-0-0.001-0l-447.247 0c-28.277 0-51.2-22.923-51.2-51.2v0 0c0-28.277 22.923-51.2 51.2-51.2v0z","M1084.235 621.026h-222.268c-1.175-0.096-2.543-0.151-3.924-0.151-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2c1.381 0 2.749-0.055 4.103-0.162l-0.179 0.011h222.268c1.175 0.096 2.543 0.151 3.924 0.151 28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2c-1.381 0-2.749 0.055-4.103 0.162l0.179-0.011z","M702.946 621.026h-448.452c-1.175-0.096-2.543-0.151-3.924-0.151-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2c1.381 0 2.749-0.055 4.103-0.162l-0.179 0.011h448.452c26.537-2.101 47.276-24.153 47.276-51.049s-20.739-48.948-47.097-51.038l-0.179-0.011z"]},"ic_vlc":{"viewBox":"0 0 1456 1024","paths":["M120.471 788.781v0z","M120.471 512v0z","M1334.513 512c0 87.944 0 176.188 0 264.433v-264.433z","M1334.814 775.831v0z","M1455.586 106.918c0.048-1.166 0.076-2.534 0.076-3.908 0-36.503-19.385-68.478-48.422-86.193l-0.444-0.252c-15.494-10.402-34.566-16.602-55.086-16.602-0.963 0-1.923 0.014-2.88 0.041l0.141-0.003h-1242.353c-0.947-0.032-2.060-0.051-3.177-0.051-20.336 0-39.251 6.089-55.018 16.544l0.369-0.23c-29.488 17.965-48.878 49.944-48.878 86.452 0 1.478 0.032 2.948 0.095 4.411l-0.007-0.208q0 195.464 0 391.529v254.494c0 55.416 0 111.134 0 166.551-0 0.062-0 0.136-0 0.21 0 7.178 0.768 14.177 2.226 20.918l-0.118-0.649c5.957 33.487 27.898 60.803 57.496 74.136l0.631 0.254c4.826 2.087 10.649 4.048 16.653 5.55l0.816 0.173c7.959 2.212 17.152 3.623 26.628 3.911l0.177 0.004h159.624l50.296-118.965h-113.845c-13.553 0-27.106 0-40.659 0s-35.539 1.506-39.454-23.191c0-1.807 0-5.12 0-7.831v-723.426c-0.186-1.257-0.292-2.708-0.292-4.184 0-7.648 2.851-14.631 7.548-19.943l-0.028 0.032c5.236-4.513 12.104-7.262 19.614-7.262 1.581 0 3.134 0.122 4.649 0.357l-0.169-0.022 119.266 0.904h1032.433c1.347-0.213 2.899-0.335 4.48-0.335 7.51 0 14.378 2.749 19.653 7.295l-0.039-0.033c4.669 5.28 7.52 12.262 7.52 19.911 0 1.476-0.106 2.927-0.311 4.346l0.019-0.162v721.92c0 2.711 0 6.024 0 7.831-3.012 24.696-24.094 23.793-38.551 23.191s-27.106 0-40.358 0h-90.353l53.308 119.567h131.915c9.769-0.314 19.065-1.723 27.961-4.111l-0.855 0.195c6.77-1.745 12.485-3.702 18.003-6.036l-0.836 0.314c30.281-13.459 52.315-40.667 58.335-73.476l0.093-0.614c1.341-6.093 2.108-13.092 2.108-20.27 0-0.074-0-0.148-0-0.222l0 0.011c0-54.513 0-109.327 0-163.84v-257.807q0-195.162 0-391.529z","M1011.049 787.576c-16.565-52.104-16.565-52.104-70.776-49.092h-1.807c-9.939 0-15.059 3.614-12.348 14.758 0.531 2.332 0.835 5.009 0.835 7.758 0 12.322-6.116 23.216-15.478 29.812l-0.115 0.077c-15.745 13.456-34.58 23.811-55.256 29.851l-1.064 0.266c-34.282 10.196-73.673 16.064-114.434 16.064-25.119 0-49.717-2.228-73.608-6.498l2.517 0.373c-37.051-3.835-70.295-17.614-97.746-38.591l0.466 0.342c-10.332-7.17-17.229-18.663-18.064-31.803l-0.006-0.122c0-22.588 0-22.588-24.395-22.287-5.722 0-11.445 0-17.167 0-1.456-0.25-3.134-0.392-4.845-0.392-15.071 0-27.557 11.070-29.769 25.523l-0.021 0.168c-20.179 66.861-41.562 133.421-62.344 200.282-3.24 9.697-5.684 21.038-6.871 32.752l-0.056 0.679c-0.365 1.39-0.574 2.987-0.574 4.632 0 10.479 8.495 18.974 18.974 18.974 0.733 0 1.456-0.042 2.167-0.122l-0.087 0.008c15.661 0 30.118 2.409 46.381 2.409h266.541c93.967 0 187.934 0 281.901 0 49.694 0 56.621-9.638 42.165-57.224q-26.805-89.148-55.115-178.598z","M625.845 519.228q-15.059 51.2-30.118 102.099c-7.529 25.299-4.518 34.334 19.576 46.682 9.067 4.813 19.658 9.119 30.709 12.345l1.215 0.304c22.241 6.944 47.813 10.944 74.319 10.944 6.702 0 13.345-0.256 19.919-0.758l-0.873 0.054c12.649 0 25.299 0 37.647 0 36.755-1.226 70.844-11.582 100.397-28.855l-1.008 0.544c8.734-5.722 17.167-13.252 13.854-25.299-11.746-40.659-24.395-81.016-36.744-120.471-1.506-5.421-3.313-9.035-10.541-5.722-30.516 12.921-66.001 20.431-103.24 20.431-16.733 0-33.112-1.516-49.008-4.419l1.66 0.252c-18.698-1.095-35.89-6.662-50.796-15.639l0.499 0.279c-10.842-6.927-14.456-3.614-17.468 7.228z","M798.419 376.772c10.541-2.409 12.951-9.035 9.638-19.275-5.722-18.071-10.24-36.442-16.264-54.212-10.541-32.527-15.661-35.84-49.092-35.84s-43.369 5.12-53.609 39.755c-5.12 16.866-9.939 34.033-15.36 50.899-3.012 9.638 0 15.962 9.336 18.372 17.486 4.687 37.562 7.38 58.267 7.38 20.276 0 39.948-2.582 58.707-7.435l-1.623 0.356z"]},"ic_warning":{"viewBox":"0 0 1195 1024","paths":["M1186.334 933.647l-535.191-903.529c-11.269-18.094-31.054-29.958-53.609-29.958s-42.341 11.864-53.455 29.692l-0.155 0.266-535.492 903.529c-5.080 8.644-8.080 19.039-8.080 30.135 0 33.267 26.968 60.235 60.235 60.235 0.511 0 1.021-0.006 1.53-0.019l-0.075 0.001h1070.682c0.433 0.011 0.943 0.018 1.454 0.018 33.267 0 60.235-26.968 60.235-60.235 0-11.096-3-21.492-8.234-30.419l0.154 0.284zM672.226 228.292l-36.442 484.292h-74.692l-36.442-484.292zM660.781 944.489c-15.491 13.914-36.082 22.423-58.661 22.423-1.719 0-3.427-0.049-5.122-0.147l0.235 0.011c-0.714 0.020-1.555 0.031-2.398 0.031-21.905 0-42.060-7.495-58.039-20.061l0.202 0.153c-15.075-14.492-24.439-34.828-24.439-57.351 0-2.606 0.125-5.183 0.371-7.725l-0.025 0.323c-0.487-3.216-0.765-6.927-0.765-10.703 0-41.584 33.71-75.294 75.294-75.294 3.776 0 7.487 0.278 11.114 0.815l-0.411-0.050c1.705-0.117 3.694-0.184 5.7-0.184 22.322 0 42.707 8.288 58.248 21.954l-0.098-0.085c13.948 15.044 22.506 35.258 22.506 57.47 0 2.139-0.079 4.259-0.235 6.358l0.017-0.28c0.067 1.255 0.106 2.724 0.106 4.202 0 22.618-9.001 43.134-23.616 58.161l0.019-0.019z"]},"ic_x":{"viewBox":"0 0 1024 1024","paths":["M632.471 512l366.231-365.026c21.288-15.866 34.926-40.97 34.926-69.261 0-47.572-38.565-86.136-86.136-86.136-28.29 0-53.395 13.638-69.098 34.699l-0.162 0.228-366.231 365.026-365.026-366.231c-14.126-10.54-31.928-16.876-51.21-16.876-47.572 0-86.136 38.565-86.136 86.136 0 19.282 6.335 37.084 17.038 51.438l-0.162-0.228 365.026 366.231-366.231 365.026c-21.288 15.866-34.926 40.97-34.926 69.261 0 47.572 38.565 86.136 86.136 86.136 28.29 0 53.395-13.638 69.098-34.699l0.162-0.228 366.231-365.026 365.026 366.231c15.866 21.288 40.97 34.926 69.261 34.926 47.572 0 86.136-38.565 86.136-86.136 0-28.29-13.638-53.395-34.699-69.098l-0.228-0.162z"]},"ic_youtube_small":{"viewBox":"0 0 1482 1024","paths":["M0 619.52v-214.739c5.722-58.428 8.433-116.856 14.456-175.285 15.661-139.144 92.16-186.428 171.671-204.8 27.475-5.977 60.185-10.48 93.552-12.554l1.921-0.095c163.84-12.047 327.981-12.047 492.122-12.047 22.834-0.46 49.75-0.722 76.728-0.722 153.333 0 304.688 8.468 453.623 24.961l-18.351-1.65c86.568 7.855 155.811 73.093 169.713 157.019l0.15 1.099c2.409 11.746 4.216 23.492 6.325 35.238 12.649 69.572 13.252 140.348 20.179 210.824v180.706c-5.12 56.621-8.433 113.544-15.36 169.864s-12.951 107.821-50.899 150.588c-41.546 44.996-99.756 74.072-164.768 77.379l-0.578 0.023c-121.549 12.024-262.73 18.881-405.513 18.881-14.991 0-29.965-0.076-44.921-0.226l2.283 0.018c-190.042 0-380.085 2.711-569.525-16.565-130.711-13.553-202.692-82.522-218.353-212.631-7.228-58.127-8.734-116.856-14.456-175.285zM602.353 512c0 64.151 0 128.602 0 192.753 0 20.781 1.807 30.118 24.998 15.661q156.612-97.581 314.428-193.054c17.167-10.541 18.071-16.565 0-27.407q-158.72-98.184-316.838-196.066c-19.275-12.047-22.889-5.12-22.889 13.854 0.301 64.452 0.301 128.602 0.301 194.259z"]},"ic_blind":{"viewBox":"0 0 1575 1024","paths":["M903.529 879.736c-33.916 10.871-72.945 17.242-113.429 17.468l-0.114 0c-212.201-1.191-383.884-172.979-384.903-385.107l-0-0.098c0-5.722 0-11.144 0-16.866l-222.569-174.984c-14.758 13.553-30.118 26.504-44.574 40.358-47.586 46.984-93.365 97.581-137.939 144.565 0.561 3.835 1.508 7.284 2.82 10.548l-0.109-0.308 9.035 12.047c110.851 135.786 242.047 249.813 389.926 338.978l6.724 3.761c105.074 65.974 232.806 105.11 369.678 105.11 73.682 0 144.716-11.341 211.449-32.374l-4.977 1.353z","M1570.936 496.038c-123.002-158.867-280.174-285.356-460.978-369.653l-7.653-3.204c-220.461-97.882-439.718-102.701-658.071 12.348l-15.059 8.734-164.141-127.699c-13.105-10.325-29.852-16.561-48.056-16.561-24.951 0-47.165 11.714-61.444 29.943l-0.129 0.17v2.711c-9.991 13.011-16.011 29.526-16.011 47.447 0 3.553 0.237 7.051 0.695 10.479l-0.044-0.401c0 1.807 0 3.313 0 4.819 2.583 8.264 6.17 15.459 10.709 21.937l-0.168-0.253c5.353 8.948 11.971 16.526 19.715 22.763l0.162 0.127 120.471 93.365 997.496 775.529c7.12 5.35 15.445 9.577 24.45 12.211l0.547 0.137c2.945 0.825 6.43 1.464 10.005 1.79l0.235 0.017c2.301 0.214 4.976 0.336 7.68 0.336s5.379-0.122 8.020-0.361l-0.34 0.025c2.027 0.141 4.392 0.222 6.776 0.222s4.75-0.081 7.094-0.239l-0.317 0.017c4.202-1.238 7.602-2.468 10.912-3.866l-0.672 0.252c5.842-1.891 10.823-4.033 15.56-6.57l-0.502 0.245c7.835-4.889 14.501-10.789 20.063-17.623l0.116-0.147c10.325-13.105 16.561-29.852 16.561-48.056 0-24.951-11.714-47.165-29.943-61.444l-0.17-0.129-106.014-82.221c114.029-80.446 211.903-173.63 294.696-279.206l2.264-2.997c0.752-2.412 1.184-5.185 1.184-8.059 0-6.396-2.144-12.291-5.752-17.006l0.049 0.067zM1131.219 689.995l-134.626-104.809c9.041-23.564 14.278-50.823 14.278-79.306 0-47.505-14.568-91.608-39.479-128.084l0.505 0.783c-60.235-88.546-180.706-112.339-249.073-79.812 16.18 15.443 26.24 37.177 26.24 61.261 0 10.442-1.891 20.442-5.349 29.676l0.192-0.584-209.318-162.635c67.188-60.907 156.772-98.188 255.064-98.188 0.647 0 1.293 0.002 1.939 0.005l-0.1-0c211.446 0.854 382.586 172.205 383.096 383.65l0 0.049c-0.191 65.032-16.208 126.28-44.397 180.152l1.028-2.157z"]},"ic_check":{"viewBox":"0 0 1331 1024","paths":["M545.129 1024c-40.334-0.026-76.847-16.363-103.306-42.769l-398.755-397.551c-24.752-26.158-39.97-61.56-39.97-100.516 0-80.839 65.533-146.372 146.372-146.372 38.806 0 74.085 15.101 100.281 39.748l-0.075-0.070 288.226 286.118 536.395-612.593c27.002-30.81 66.432-50.158 110.381-50.158 80.929 0 146.535 65.606 146.535 146.535 0 36.98-13.698 70.761-36.298 96.544l0.144-0.168-639.699 731.256c-25.909 29.451-63.15 48.401-104.838 49.987l-0.272 0.008z"]},"ic_magnet":{"viewBox":"0 0 1024 1024","paths":["M574.645 745.412c-35.51 28.152-80.966 45.162-130.395 45.162-116.435 0-210.824-94.389-210.824-210.824 0-49.429 17.011-94.885 45.497-130.833l-0.335 0.438 216.546-216.847-153.6-153.6-216.847 216.847c-66.233 74.833-106.675 173.824-106.675 282.261 0 235.697 191.070 426.767 426.767 426.767 108.437 0 207.428-40.443 282.713-107.068l-0.452 0.392 216.847-216.847-153.6-153.6z","M715.294 357.195l-148.179 24.696c-15.567 2.765-27.235 16.194-27.235 32.348 0 1.871 0.157 3.706 0.457 5.492l-0.027-0.193c2.482 15.543 15.792 27.278 31.844 27.278 1.944 0 3.848-0.172 5.697-0.502l-0.195 0.029 210.824-34.936c15.719-2.32 27.646-15.717 27.646-31.899 0-9.115-3.784-17.345-9.866-23.207l-0.010-0.010-72.282-72.282 148.781-27.708c15.195-2.935 26.514-16.129 26.514-31.966 0-2.223-0.223-4.394-0.648-6.492l0.035 0.209c-1.294-6.665-4.506-12.43-9.030-16.861l-0.005-0.005c-5.953-6.017-14.211-9.743-23.34-9.743-2.4 0-4.74 0.258-6.994 0.747l0.216-0.039-206.908 39.454c-15.206 2.925-26.538 16.125-26.538 31.971 0 9.054 3.699 17.244 9.669 23.141l0.003 0.003z","M1014.362 567.115l-109.026-109.327c-5.896-5.896-14.042-9.543-23.040-9.543-17.995 0-32.583 14.588-32.583 32.583 0 8.998 3.647 17.144 9.543 23.040l-0-0 109.327 109.026c5.842 5.893 13.94 9.541 22.889 9.541s17.048-3.648 22.887-9.539l0.002-0.002c5.968-5.807 9.67-13.916 9.67-22.889s-3.702-17.083-9.663-22.882l-0.007-0.007z","M520.132 164.744c5.896 5.896 14.042 9.543 23.040 9.543 17.995 0 32.583-14.588 32.583-32.583 0-8.998-3.647-17.144-9.543-23.040l-0-0-109.327-109.026c-5.807-5.968-13.916-9.67-22.889-9.67s-17.083 3.702-22.882 9.663l-0.007 0.007c-5.893 5.842-9.541 13.94-9.541 22.889s3.648 17.048 9.539 22.887l0.002 0.002z"]},"ic_pause":{"viewBox":"0 0 808 1024","paths":["M0 0h268.047v1024h-268.047v-1024z","M540.311 0h268.047v1024h-268.047v-1024z"]},"ic_stremio":{"viewBox":"0 0 7866 1024","paths":["M837.873 169.864q-28.009-13.553-64.151-30.118c-22.624-9.744-50.3-19.218-78.771-26.732l-4.353-0.977c-28.074-7.414-63.793-14.472-100.14-19.573l-5.272-0.606c-37.207-5.188-80.194-8.15-123.872-8.15-2.087 0-4.172 0.007-6.256 0.020l0.32-0.002c-0.161-0-0.352-0-0.544-0-54.215 0-107.483 4.051-159.519 11.867l5.861-0.724c-42.371 5.197-80.924 15.787-116.936 31.178l2.79-1.060c-28.605 12.112-52.506 30.502-70.798 53.545l-0.28 0.366c-15.973 20.249-25.621 46.135-25.621 74.274 0 0.782 0.007 1.563 0.022 2.341l-0.002-0.117c-0.006 0.407-0.010 0.888-0.010 1.369 0 24.225 8.774 46.402 23.317 63.525l-0.117-0.141c17.379 20.037 38.268 36.5 61.79 48.554l1.156 0.538c26.819 14.561 58.146 27.754 90.831 37.857l3.738 0.995c35.238 11.746 72.885 22.588 112.64 32.828s80.715 20.781 122.88 30.118 82.824 21.986 122.579 34.033c46.328 13.952 83.795 27.773 120.268 43.463l-7.327-2.804c35.425 14.928 65.954 32.493 93.967 53.258l-1.205-0.853c25.043 18.687 45.915 41.382 62.045 67.332l0.6 1.036c14.623 24.358 23.271 53.749 23.271 85.16 0 1.826-0.029 3.646-0.087 5.458l0.007-0.264c0.032 1.384 0.051 3.014 0.051 4.649 0 33.215-7.573 64.662-21.087 92.707l0.556-1.28c-14.602 27.645-33.684 50.958-56.542 69.869l-0.38 0.305c-23.761 19.665-51.113 36.184-80.722 48.329l-2.101 0.763c-28.649 12.002-62.535 22.403-97.615 29.512l-3.58 0.606c-31.306 7.054-69.27 12.812-107.951 16.049l-3.183 0.215c-38.551 3.012-76.198 4.518-113.242 4.518-2.867 0.022-6.255 0.035-9.647 0.035-78.304 0-155.018-6.805-229.584-19.857l7.927 1.149c-76.402-13.243-142.954-30.488-207.299-52.495l9.426 2.801v-109.026c59 36.068 127.712 63.547 200.98 78.507l4.121 0.703c67.090 13.604 144.206 21.39 223.141 21.39 1.388 0 2.774-0.002 4.161-0.007l-0.214 0.001c1.71 0.009 3.731 0.015 5.754 0.015 52.773 0 104.701-3.618 155.55-10.618l-5.897 0.665c45.977-6.108 87.633-17.618 126.719-34.035l-3.237 1.206c32.133-12.5 59.223-31.847 80.503-56.371l0.212-0.25c18.75-22.313 30.141-51.355 30.141-83.057 0-0.871-0.009-1.74-0.026-2.607l0.002 0.13c0.009-0.532 0.014-1.16 0.014-1.789 0-26.243-8.718-50.449-23.415-69.881l0.211 0.291c-17.1-21.713-37.911-39.641-61.608-53.069l-1.037-0.54c-26.469-15.544-57.139-29.511-89.285-40.254l-3.477-1.008c-35.539-11.746-72.885-22.889-112.339-33.129s-80.113-20.179-122.278-30.118-83.125-19.878-123.482-30.72c-46.23-13.107-83.567-26.143-119.966-41.004l7.627 2.755c-35.44-14.215-65.997-31.108-94.104-51.208l1.341 0.912c-25.1-18.117-45.983-40.342-62.074-65.89l-0.571-0.971c-14.591-24.041-23.227-53.1-23.227-84.176 0-1.219 0.013-2.435 0.040-3.647l-0.003 0.181c-0.018-1.002-0.029-2.184-0.029-3.369 0-30.491 6.897-59.371 19.215-85.166l-0.513 1.194c12.782-25.961 29.897-47.89 50.63-65.732l0.269-0.226c21.804-18.515 46.84-34.184 73.967-45.938l1.93-0.745c26.41-11.926 57.494-22.29 89.768-29.499l3.295-0.618c28.926-6.814 64.062-12.455 99.88-15.732l3.122-0.231c35.84-3.313 70.776-4.819 105.713-4.819s73.788 0 107.821 4.819 66.861 7.831 98.485 13.252 62.645 11.746 92.762 18.974 60.235 14.758 90.353 22.889z","M1592.922 106.315v898.409h-87.040v-898.409h-446.946v-81.318h979.727v81.318z","M2899.727 86.739c-25.552-4.851-54.944-7.626-84.984-7.626-3.371 0-6.733 0.035-10.087 0.104l0.501-0.008c-1.031-0.007-2.25-0.011-3.469-0.011-52.336 0-103.001 7.15-151.073 20.526l3.955-0.939c-49.469 13.446-92.597 31.134-132.875 53.354l3.068-1.552c-42.347 23.797-78.93 49.725-112.535 78.987l0.799-0.681c-34.053 29.519-64.79 60.734-92.93 94.206l-1.037 1.267v680.358h-90.353v-979.727h90.353v199.68c31.569-32.247 65.5-61.879 101.621-88.729l2.285-1.624c34.537-25.728 73.656-49.411 114.982-69.227l4.284-1.85c37.045-18.267 80.379-34.16 125.547-45.419l4.562-0.962c42.070-10.716 90.368-16.866 140.101-16.866 0.298 0 0.597 0 0.895 0.001l-0.046-0c16.565 0 30.118 0 44.875 0s25.6 0 36.744 2.711l30.118 3.915c9.939 0 20.179 3.012 30.118 5.12v88.847c-11.746-4.216-31.021-10.24-55.416-13.854z","M4109.553 953.525q-60.235 18.372-111.134 31.624c-34.334 8.734-68.066 15.962-101.496 21.384s-67.162 9.638-101.496 12.047-72.282 3.915-113.845 3.915c-3.606 0.052-7.864 0.082-12.128 0.082-88.381 0-173.774-12.792-254.429-36.625l6.34 1.607c-76.143-21.789-142.441-56.081-200.082-100.969l1.305 0.978c-52.872-42.191-95.397-95.028-124.726-155.456l-1.166-2.662c-27.986-58.88-44.329-127.943-44.329-200.824 0-2.563 0.020-5.121 0.060-7.675l-0.005 0.385c-0.021-1.684-0.033-3.673-0.033-5.665 0-72.327 15.651-140.999 43.751-202.814l-1.252 3.077c28.995-63.268 69.156-116.734 118.439-160.074l0.526-0.453c51.66-44.672 112.692-80.166 179.569-103.062l3.848-1.145c67.496-23.513 145.297-37.094 226.271-37.094 2.935 0 5.865 0.018 8.791 0.053l-0.445-0.004c3.352-0.055 7.307-0.087 11.27-0.087 80.812 0 158.553 13.147 231.202 37.418l-5.146-1.49c67.994 22.24 126.582 56.632 176.042 100.996l-0.456-0.403c46.608 43.851 83.4 97.574 107.101 157.878l1.022 2.95c23.681 60.814 37.403 131.211 37.403 204.812 0 2.855-0.021 5.704-0.062 8.549l0.005-0.43v21.986h-1045.384c4.44 60.794 20.75 116.846 46.616 167.181l-1.138-2.437c26.458 50.328 62.705 92.16 106.516 124.286l1.004 0.702c48.753 34.999 105.893 62.073 167.556 77.845l3.512 0.762c66.8 17.487 143.488 27.527 222.522 27.527 5.206 0 10.401-0.044 15.586-0.13l-0.781 0.010c0.4 0.001 0.875 0.001 1.349 0.001 40.841 0 81.018-2.846 120.342-8.352l-4.534 0.52c44.621-5.744 83.148-13.026 120.888-22.309l-7.344 1.528c40.332-9.907 73.399-20.231 105.636-32.259l-6.549 2.141c28.246-10.076 52.496-21.759 75.26-35.64l-1.773 1.004zM4102.325 469.835c-3.433-52.269-15.399-100.855-34.529-145.651l1.098 2.894c-20.209-47.433-49.085-87.607-84.956-120.222l-0.277-0.249c-40.365-35.959-88.457-64.235-141.378-81.984l-2.885-0.839c-57.83-19.248-124.408-30.353-193.58-30.353-6.064 0-12.107 0.085-18.13 0.255l0.886-0.020c-3.954-0.094-8.612-0.147-13.283-0.147-67.203 0-131.818 11.077-192.12 31.505l4.217-1.24c-55.644 19.586-103.667 47.621-145.194 83.046l0.63-0.524c-38.569 33.165-70.2 73.166-93.251 118.279l-1.017 2.192c-21.563 41.701-36.872 90.245-43.161 141.577l-0.208 2.084z","M4540.235 24.998v150.588c21.082-18.071 44.273-37.045 69.873-57.525 24.902-20.561 52.68-39.698 82.062-56.331l2.87-1.494c28.675-15.906 62.015-30.034 96.903-40.602l3.69-0.961c33.879-10.897 72.854-17.179 113.296-17.179 1.040 0 2.079 0.004 3.118 0.012l-0.159-0.001c2.019-0.043 4.398-0.068 6.783-0.068 61.979 0 120.088 16.568 170.141 45.516l-1.639-0.875c53.634 33.113 95.874 80.096 122.355 135.999l0.826 1.939c28.31-26.221 58.956-51.132 91.155-74l2.812-1.896c28.689-20.38 61.38-39.553 95.712-55.828l3.977-1.696c29.896-14.21 65.024-26.706 101.549-35.643l3.863-0.799c33.256-8.040 71.436-12.651 110.694-12.651 0.367 0 0.733 0 1.1 0.001l-0.057-0c1.611-0.027 3.512-0.043 5.417-0.043 46.249 0 90.349 9.201 130.569 25.872l-2.263-0.831c40.001 16.263 74.086 39.427 102.347 68.313l0.053 0.054c27.653 28.543 49.809 62.598 64.64 100.335l0.715 2.065c14.682 36.669 23.198 79.173 23.198 123.667 0 0.782-0.003 1.564-0.008 2.344l0.001-0.12v681.562h-90.353v-658.974c0.139-3.786 0.218-8.233 0.218-12.698 0-34.374-4.697-67.652-13.485-99.225l0.617 2.596c-9.279-31.71-24.947-59.068-45.626-81.784l0.149 0.166c-21.425-22.535-47.987-39.979-77.823-50.474l-1.386-0.425c-32.231-11.326-69.393-17.869-108.083-17.869-2.873 0-5.738 0.036-8.595 0.108l0.423-0.008c-37.798 0.017-74.279 5.629-108.668 16.051l2.654-0.691c-38.534 11.395-71.783 25.221-103.167 42.069l2.875-1.41c-34.534 18.232-64.101 37.312-91.856 58.634l1.503-1.109c-26.733 20.635-50.453 42.349-72.238 65.881l-0.346 0.378c2.001 10.022 3.404 21.828 3.9 33.867l0.015 0.468c0 9.336 0 20.781 0 34.033v670.419h-90.353v-658.974c0.086-2.846 0.135-6.194 0.135-9.554 0-40.412-7.113-79.163-20.155-115.069l0.744 2.345c-21.859-60.886-71.357-107.010-132.955-123.767l-1.37-0.318c-29.71-8.42-63.831-13.262-99.082-13.262-0.955 0-1.908 0.004-2.861 0.011l0.146-0.001c-36.968 0.094-72.361 6.709-105.131 18.755l2.129-0.685c-36.107 13.229-67.204 28.861-96.162 47.524l1.894-1.143c-32.234 19.918-60.188 40.878-86.114 64.058l0.58-0.51c-24.386 21.806-46.554 44.832-66.91 69.413l-0.854 1.062v720.113h-90.353v-979.727z","M6270.795 1004.725v-979.727h90.353v979.727z","M7865.525 515.614c0.106 3.855 0.166 8.392 0.166 12.943 0 78-17.723 151.86-49.362 217.773l1.309-3.027c-31.602 63.704-75.887 116.759-129.908 157.619l-1.104 0.8c-55.924 41.117-121.627 72.858-192.693 91.285l-3.975 0.875c-71.606 19.142-153.815 30.136-238.592 30.136-2.097 0-4.192-0.007-6.286-0.020l0.322 0.002c-1.769 0.012-3.86 0.018-5.954 0.018-85.305 0-168.042-10.993-246.871-31.641l6.764 1.505c-75.485-19.371-141.589-51.216-199.499-93.596l1.626 1.135c-55.662-41.405-100.294-94.52-130.783-155.9l-1.132-2.519c-30.33-62.887-48.053-136.747-48.053-214.746 0-4.551 0.060-9.089 0.18-13.611l-0.014 0.668c-0.022-1.803-0.034-3.932-0.034-6.064 0-54.644 8.157-107.383 23.321-157.065l-0.999 3.807c14.904-49.007 36.049-91.713 63.001-130.040l-0.958 1.437c26.974-38.055 58.86-70.42 95.204-97.062l1.173-0.82c36.411-26.814 78.008-50.099 122.387-67.921l3.806-1.349c43.064-17.142 93.694-31.28 146.144-40.045l4.444-0.614c48.999-8.247 105.45-12.96 163.002-12.96 1.565 0 3.13 0.003 4.694 0.010l-0.242-0.001c1.771-0.012 3.867-0.019 5.963-0.019 84.777 0 166.986 10.994 245.279 31.635l-6.687-1.498c75.068 19.286 140.783 51.139 198.221 93.556l-1.553-1.095c55.055 41.62 99.324 94.561 129.857 155.57l1.155 2.547c29.623 62.394 46.92 135.572 46.92 212.789 0 5.452-0.086 10.883-0.257 16.293l0.020-0.791zM7775.172 515.614c0.032-2.047 0.051-4.463 0.051-6.884 0-63.99-12.859-124.978-36.133-180.519l1.146 3.082c-22.795-53.774-56.95-98.85-99.682-133.84l-0.61-0.484c-46.476-37.218-101.676-65.751-161.892-82.095l-3.153-0.729c-68.983-18.077-148.178-28.457-229.798-28.457s-160.814 10.379-236.336 29.89l6.538-1.434c-63.906 17.189-119.597 45.82-167.493 83.847l0.942-0.722c-44.232 35.665-79.104 81.166-101.539 133.281l-0.861 2.248c-21.762 51.622-34.407 111.633-34.407 174.598 0 2.889 0.027 5.772 0.080 8.648l-0.006-0.432c-0.053 2.619-0.084 5.708-0.084 8.803 0 63.178 12.648 123.402 35.551 178.277l-1.133-3.061c23.3 53.779 57.823 98.831 100.856 133.82l0.64 0.504c46.962 37.203 102.659 65.737 163.351 82.090l3.199 0.734c65.117 17.852 139.885 28.109 217.048 28.109 4.589 0 9.17-0.036 13.741-0.109l-0.691 0.009c3.943 0.066 8.594 0.104 13.254 0.104 76.884 0 151.371-10.26 222.168-29.484l-5.926 1.371c63.344-17.216 118.52-45.73 165.966-83.533l-0.922 0.709c43.556-35.518 77.978-80.567 100.324-132.071l0.871-2.254c21.578-51.938 34.11-112.264 34.11-175.518 0-2.989-0.028-5.972-0.084-8.947l0.007 0.446z"]},"ic_actor":{"viewBox":"0 0 1085 1024","paths":["M1079.416 397.252c-11.403-64.785-36.251-122.282-71.634-171.727l0.858 1.261c-55.818-86.588-135.669-153.436-230.111-191.866l-3.301-1.188c-51.351-21.358-111-33.763-173.546-33.763-1.882 0-3.762 0.011-5.639 0.034l0.286-0.003c-74.242 1.759-143.267 22.563-202.841 57.688l1.956-1.067c-2.088 1.58-4.728 2.53-7.59 2.53-0.616 0-1.221-0.044-1.814-0.129l0.068 0.008c-16.962-3.079-37.648-5.545-58.648-6.848l-1.588-0.079c-9.62-0.825-20.817-1.296-32.124-1.296-48.771 0-95.497 8.756-138.692 24.781l2.759-0.897c-55.32 21.387-99.741 60.74-127.065 110.769l-0.634 1.268c0 2.409-3.915 5.12-1.807 7.529s5.12 0 7.529 0c20.216-6.76 44.065-12.15 68.646-15.176l1.829-0.184c2.919-0.427 6.289-0.67 9.716-0.67 9.865 0 19.258 2.018 27.79 5.664l-0.462-0.175c1.807 0 4.216 2.108 3.915 4.819s-2.409 2.409-4.216 3.012-11.746 5.12-17.468 8.132c-57.246 31.332-98.926 85.046-113.552 149.064l-0.293 1.524c-6.173 26.883-9.711 57.753-9.711 89.449s3.538 62.567 10.24 92.237l-0.529-2.788c20.112 99.687 51.459 188.161 93.388 270.336l-2.734-5.903c0 1.807 0 4.518 4.819 3.614 0.069-1.080 0.109-2.343 0.109-3.614s-0.039-2.534-0.117-3.786l0.009 0.172c-2.122-23.756-3.332-51.39-3.332-79.306 0-16.916 0.444-33.729 1.322-50.427l-0.098 2.335c2.143-41.776 8.279-81.046 18.068-118.845l-0.901 4.097c6.237-25.012 15.119-46.977 26.591-67.286l-0.69 1.328c10.556 50.436 44.321 91.249 89.362 111.342l0.991 0.395c6.927 3.915 9.939 2.108 10.842-5.421 2.446-16.541 6.335-31.358 11.641-45.481l-0.497 1.509c24.206-77.879 83.745-138.211 159.382-163.042l1.748-0.497c13.713-5.728 29.646-9.055 46.357-9.055 21.655 0 42.004 5.588 59.685 15.4l-0.63-0.321c30.563 19.089 55.771 43.912 74.731 73.162l0.563 0.928c29.693 44.54 54.732 95.808 72.53 150.348l1.258 4.456c3.614 10.24 4.518 10.842 13.252 4.819 37.504-25.775 69.958-54.976 98.226-87.878l0.56-0.667c35.014-36.387 56.734-85.784 57.223-140.253l0.001-0.096c0-5.12 2.108-5.722 6.024-3.614 11.716 5.659 21.692 13.036 30.070 21.935l0.048 0.051c22.879 25.437 41.269 55.452 53.583 88.431l0.629 1.922c30.128 75.686 53.532 163.968 66.179 255.684l0.682 6.038c0 3.313 0 7.831 3.614 8.734s4.216-3.915 5.722-6.626c25.167-40.726 44.986-87.981 56.877-138.3l0.648-3.253c10.527-41.368 16.569-88.858 16.569-137.759 0-30.89-2.411-61.216-7.054-90.802l0.424 3.281z","M756.555 634.278c-77.097 7.493-140.17 60.141-162.865 130.873l-0.372 1.343c-3.012 7.529-4.819 9.638-12.649 5.421-7.816-4.402-17.158-6.995-27.106-6.995s-19.29 2.593-27.388 7.14l0.282-0.145c-9.035 4.518-10.541 0-13.252-6.325-27.343-76.927-99.515-131.018-184.32-131.018-107.785 0-195.162 87.377-195.162 195.162 0 0.002 0 0.004 0 0.006l-0-0c0.177 107.652 87.486 194.852 195.162 194.852 58.836 0 111.592-26.036 147.374-67.215l0.203-0.239c29.71-32.853 47.891-76.621 47.891-124.636 0-0.442-0.002-0.883-0.005-1.324l0 0.068c-0.165-1.105-0.259-2.379-0.259-3.676 0-8.942 4.479-16.837 11.315-21.565l0.087-0.057c5.139-3.437 11.459-5.485 18.258-5.485 5.541 0 10.765 1.36 15.354 3.765l-0.182-0.087c8.284 4.103 13.879 12.499 13.879 22.201 0 1.413-0.119 2.798-0.347 4.146l0.020-0.145c-0.008 0.56-0.012 1.222-0.012 1.885 0 7.411 0.552 14.692 1.617 21.806l-0.099-0.802c12.467 97.023 94.545 171.237 193.956 171.237 107.952 0 195.464-87.512 195.464-195.464 0-10.799-0.876-21.393-2.56-31.716l0.152 1.128c-14.378-94.161-94.789-165.461-191.853-165.461-7.959 0-15.806 0.479-23.513 1.411l0.928-0.091zM326.475 988.762c-87.611-1.361-158.111-72.702-158.111-160.509 0-88.657 71.87-160.527 160.527-160.527s160.527 71.87 160.527 160.527c0 0.523-0.003 1.046-0.007 1.567l0.001-0.080c-1.183 88.082-72.864 159.031-161.116 159.031-0.64 0-1.279-0.004-1.918-0.011l0.097 0.001zM778.24 988.762c-88.136-0.684-159.32-72.29-159.32-160.523 0-88.657 71.87-160.527 160.527-160.527s160.527 71.87 160.527 160.527c0 0.316-0.001 0.632-0.003 0.948l0-0.049c-0.675 88.309-72.419 159.637-160.824 159.637-0.743 0-1.484-0.005-2.225-0.015l0.112 0.001z","M486.701 652.047c3.028 4.352 8.005 7.164 13.639 7.164 3.71 0 7.135-1.22 9.897-3.28l-0.044 0.031c4.286-3.098 7.042-8.082 7.042-13.709 0-3.669-1.172-7.065-3.161-9.833l0.034 0.050-53.609-74.993 76.499-20.179-93.967-114.146c-3.117-3.818-7.823-6.237-13.095-6.237-4.075 0-7.812 1.445-10.727 3.85l0.029-0.023c-3.751 3.17-6.117 7.877-6.117 13.138 0 4.042 1.397 7.757 3.734 10.69l-0.027-0.035 60.235 73.487-72.885 19.576z"]},"ic_back":{"viewBox":"0 0 1329 1024","paths":["M1329.393 424.659h-960.151l283.708-283.708-140.951-140.951-512 512 512 512 140.951-140.951-259.614-259.313h936.056v-199.078z"]},"ic_imdb":{"viewBox":"0 0 1762 1024","paths":["M1598.645 0h-1435.106c-90.32 0-163.539 73.219-163.539 163.539v0 696.922c0 90.32 73.219 163.539 163.539 163.539v0h1435.106c90.32 0 163.539-73.219 163.539-163.539h-0v-696.922c0-90.32-73.219-163.539-163.539-163.539h-0zM1650.146 860.461c-0.17 28.375-23.126 51.331-51.485 51.501l-0.016 0h-1435.106c-28.375-0.17-51.331-23.126-51.501-51.485l-0-0.016v-696.922c0.17-28.375 23.126-51.331 51.485-51.501l0.016-0h1435.106c28.375 0.17 51.331 23.126 51.501 51.485l0 0.016z","M246.965 267.445h89.449v458.391h-89.449v-458.391z","M606.268 576.452l-87.341-309.007h-113.845v458.391h78.607v-319.247l84.329 268.348h76.499l84.329-274.673v325.572h78.607v-458.391h-113.845l-87.341 309.007z","M1033.939 267.445h-150.588v458.391h150.588c3.777 0.267 8.184 0.419 12.627 0.419 46.147 0 88.459-16.422 121.41-43.742l-0.315 0.254c29.323-28.212 47.538-67.787 47.538-111.617 0-3.115-0.092-6.208-0.273-9.277l0.020 0.423v-130.409c0.139-2.475 0.219-5.372 0.219-8.286 0-43.945-18.065-83.671-47.175-112.157l-0.028-0.027c-32.988-27.57-75.855-44.31-122.631-44.31-4.008 0-7.987 0.123-11.934 0.365l0.541-0.027zM1126.701 564.104c0.085 1.316 0.134 2.853 0.134 4.401 0 21.296-9.21 40.441-23.863 53.67l-0.064 0.057c-16.699 12.886-37.923 20.654-60.961 20.654-2.076 0-4.137-0.063-6.181-0.187l0.281 0.014h-67.162v-291.84h67.162c1.905-0.131 4.13-0.206 6.371-0.206 22.889 0 43.96 7.785 60.709 20.851l-0.22-0.165c14.712 13.184 23.926 32.244 23.926 53.457 0 1.537-0.048 3.063-0.144 4.576l0.010-0.207z","M1436.311 393.939c-0.178-0.001-0.389-0.002-0.6-0.002-17.816 0-34.259 5.882-47.492 15.811l0.205-0.147c-11.386 9.029-20.763 20.040-27.727 32.576l-0.282 0.554v-175.285h-86.438v458.391h86.438v-43.068c6.124 13.388 15.135 24.523 26.291 32.975l0.213 0.155c13.088 9.255 29.376 14.794 46.957 14.794 0.857 0 1.71-0.013 2.56-0.039l-0.125 0.003c1.284 0.061 2.788 0.095 4.301 0.095 31.288 0 59.116-14.817 76.849-37.817l0.168-0.226c18.98-26.686 30.343-59.939 30.343-95.847 0-3.047-0.082-6.074-0.243-9.081l0.018 0.419v-51.501c0.143-2.602 0.224-5.648 0.224-8.712 0-36.189-11.357-69.725-30.701-97.238l0.359 0.539c-17.796-22.891-45.337-37.477-76.284-37.477-1.77 0-3.53 0.048-5.277 0.142l0.243-0.010zM1459.802 589.101c0.060 1.075 0.094 2.332 0.094 3.598 0 15.836-5.361 30.42-14.366 42.037l0.117-0.157c-8.604 9.843-21.183 16.026-35.206 16.026-0.859 0-1.712-0.023-2.559-0.069l0.118 0.005c-0.398 0.010-0.865 0.016-1.335 0.016-9.083 0-17.645-2.234-25.165-6.182l0.297 0.142c-7.292-3.783-13.028-9.713-16.469-16.945l-0.095-0.222c-3.627-7.519-5.747-16.351-5.747-25.678 0-0.608 0.009-1.214 0.027-1.818l-0.002 0.089v-73.487c-0.022-0.631-0.035-1.371-0.035-2.115 0-9.607 2.122-18.718 5.922-26.89l-0.164 0.394c3.604-7.587 9.311-13.682 16.368-17.667l0.197-0.102c7.223-3.806 15.784-6.040 24.868-6.040 0.469 0 0.937 0.006 1.404 0.018l-0.069-0.001c0.743-0.043 1.612-0.068 2.488-0.068 14.131 0 26.756 6.445 35.097 16.555l0.062 0.077c8.389 11.489 13.422 25.892 13.422 41.471 0 1.728-0.062 3.441-0.184 5.138l0.013-0.228z"]},"ic_link":{"viewBox":"0 0 1048 1024","paths":["M1030.325 148.179c-36.472-87.691-121.454-148.225-220.574-148.225-1.655 0-3.306 0.017-4.952 0.050l0.246-0.004c-3.361-0.181-7.295-0.284-11.254-0.284-54.84 0-105.054 19.807-143.878 52.658l0.327-0.27c-30.118 24.998-57.525 53.609-85.835 80.715s-60.235 60.235-90.353 90.353c-9.338 8.314-15.191 20.369-15.191 33.79 0 6.514 1.379 12.706 3.86 18.3l-0.114-0.288c5.862 15.985 20.431 27.416 37.814 28.604l0.134 0.007c0.505 0.016 1.098 0.025 1.694 0.025 17.862 0 33.812-8.184 44.306-21.006l0.081-0.102 146.071-145.769c28.015-28.297 66.867-45.818 109.813-45.818 41.281 0 78.781 16.19 106.496 42.566l-0.064-0.061c26.436 26.57 42.779 63.205 42.779 103.657 0 42.223-17.805 80.288-46.316 107.096l-0.076 0.071c-68.367 67.464-137.035 134.325-205.704 201.788-10.403 10.47-22.177 19.559-35.035 26.979l-0.805 0.428c-21.108 11.626-46.265 18.466-73.019 18.466-48.785 0-92.258-22.743-120.394-58.205l-0.243-0.317c-19.576-24.094-38.551-30.118-60.235-21.685-32.226 13.252-37.647 46.682-12.649 78.607 45.802 57.384 115.741 93.831 194.194 93.831 66.707 0 127.259-26.351 171.816-69.212l-0.080 0.077q107.219-103.002 212.932-206.908c44.223-43.333 71.637-103.676 71.637-170.421 0-32.255-6.402-63.015-18.005-91.078l0.58 1.584zM504.169 739.991c-49.995 48.188-99.388 97.28-149.082 145.769-28.049 28.832-67.221 46.72-110.571 46.72-40.934 0-78.143-15.95-105.75-41.973l0.077 0.072c-27.279-26.705-44.192-63.906-44.192-105.058 0-42.901 18.381-81.508 47.697-108.377l0.109-0.099c67.765-66.861 136.132-133.421 204.198-199.981 27.819-29.22 67.011-47.393 110.448-47.393 48.209 0 91.189 22.385 119.114 57.328l0.235 0.305c8.488 12.105 22.378 19.922 38.093 19.922 25.616 0 46.381-20.766 46.381-46.381 0-12.256-4.753-23.401-12.517-31.693l0.024 0.026c-45.804-55.809-114.788-91.135-192.024-91.135-64.703 0-123.616 24.792-167.757 65.394l0.176-0.16c-74.692 70.776-147.576 143.059-220.461 215.944-42.105 42.532-68.119 101.063-68.119 165.67 0 33.514 7 65.393 19.618 94.255l-0.591-1.516c36.633 86.692 120.955 146.421 219.227 146.421 1.705 0 3.406-0.018 5.102-0.054l-0.253 0.004c3.299 0.175 7.162 0.275 11.048 0.275 57.5 0 109.9-21.834 149.362-57.663l-0.184 0.165c60.235-53.308 114.447-110.231 170.767-165.948 8.849-7.922 14.392-19.38 14.392-32.133 0-7.182-1.758-13.953-4.867-19.907l0.113 0.238c-7.634-16.234-23.852-27.272-42.649-27.272-15.072 0-28.487 7.097-37.084 18.132l-0.079 0.105z"]},"ic_filter":{"viewBox":"0 0 1078 1024","paths":["M85.534 0h906.842c47.239 0 85.534 38.295 85.534 85.534v6.626c0 47.239-38.295 85.534-85.534 85.534h-906.842c-47.239 0-85.534-38.295-85.534-85.534v-6.626c0-47.239 38.295-85.534 85.534-85.534z","M224.678 427.972h628.555c47.239 0 85.534 38.295 85.534 85.534v1.205c0 47.239-38.295 85.534-85.534 85.534h-628.555c-47.239 0-85.534-38.295-85.534-85.534v-1.205c0-47.239 38.295-85.534 85.534-85.534z","M352.678 850.824h372.254c47.239 0 85.534 38.295 85.534 85.534v2.108c0 47.239-38.295 85.534-85.534 85.534h-372.254c-47.239 0-85.534-38.295-85.534-85.534v-2.108c0-47.239 38.295-85.534 85.534-85.534z"]},"ic_addons":{"viewBox":"0 0 1043 1024","paths":["M145.468 679.454c-40.056-39.454-80.715-78.908-120.471-118.664-33.431-33.129-33.129-60.235 0-90.353l132.216-129.807c5.693-5.938 12.009-11.201 18.865-15.709l0.411-0.253c23.492-15.059 41.864-7.529 48.188 18.974 0 7.228 2.711 14.758 3.614 22.287 3.801 47.788 37.399 86.785 82.050 98.612l0.773 0.174c10.296 3.123 22.128 4.92 34.381 4.92 36.485 0 69.247-15.94 91.702-41.236l0.11-0.126c24.858-21.654 40.48-53.361 40.48-88.718 0-13.746-2.361-26.941-6.701-39.201l0.254 0.822c-14.354-43.689-53.204-75.339-99.907-78.885l-0.385-0.023c-18.372-2.409-41.562 0-48.188-23.492s11.445-34.635 24.998-47.887q65.054-62.946 130.409-126.795c32.527-31.925 60.235-32.226 90.353 0 40.659 39.153 80.715 78.908 120.471 118.362 8.348 8.594 17.297 16.493 26.82 23.671l0.587 0.424c8.609 7.946 20.158 12.819 32.846 12.819 24.823 0 45.29-18.653 48.148-42.707l0.022-0.229c3.012-13.252 4.518-26.805 8.734-39.755 12.103-42.212 50.358-72.582 95.705-72.582 3.844 0 7.637 0.218 11.368 0.643l-0.456-0.042c54.982 6.832 98.119 49.867 105.048 104.211l0.062 0.598c0.139 1.948 0.218 4.221 0.218 6.512 0 45.084-30.574 83.026-72.118 94.226l-0.683 0.157c-12.348 3.915-25.299 5.722-37.948 8.433-45.779 9.638-60.235 46.984-30.118 82.824 15.265 17.569 30.806 33.587 47.177 48.718l0.409 0.373c31.925 31.925 64.452 62.946 96.075 94.871 13.698 9.715 22.53 25.511 22.53 43.369s-8.832 33.655-22.366 43.259l-0.164 0.111c-45.176 45.176-90.353 90.353-137.035 134.325-5.672 5.996-12.106 11.184-19.169 15.434l-0.408 0.227c-4.663 3.903-10.725 6.273-17.341 6.273-13.891 0-25.341-10.449-26.92-23.915l-0.012-0.127c-2.019-7.447-3.714-16.45-4.742-25.655l-0.077-0.848c-4.119-47.717-38.088-86.476-82.967-97.721l-0.76-0.161c-9.584-2.63-20.589-4.141-31.947-4.141-39.149 0-74.105 17.956-97.080 46.081l-0.178 0.225c-21.801 21.801-35.285 51.918-35.285 85.185 0 1.182 0.017 2.36 0.051 3.533l-0.004-0.172c1.534 53.671 40.587 97.786 91.776 107.115l0.685 0.104c12.649 2.409 25.901 3.313 38.249 6.626 22.588 6.325 30.118 21.685 18.372 41.864-4.976 8.015-10.653 14.937-17.116 21.035l-0.051 0.047c-44.875 44.574-90.353 90.353-135.228 133.12-10.241 14.067-26.653 23.106-45.176 23.106s-34.935-9.039-45.066-22.946l-0.111-0.159c-40.659-38.852-80.414-78.908-120.471-118.362z"]},"ic_board":{"viewBox":"0 0 1395 1024","paths":["M1308.009 174.381l-1220.668 0c-48.237 0-87.341-39.104-87.341-87.341v0.301c0-48.237 39.104-87.341 87.341-87.341l1220.668-0c48.237 0 87.341 39.104 87.341 87.341v-0.301c0 48.237-39.104 87.341-87.341 87.341z","M936.358 599.341l-849.016 0c-48.237 0-87.341-39.104-87.341-87.341v0.301c0-48.237 39.104-87.341 87.341-87.341l849.016-0c48.237 0 87.341 39.104 87.341 87.341v-0.301c0 48.237-39.104 87.341-87.341 87.341z","M1308.009 1024h-1220.668c-48.237-0-87.341-39.104-87.341-87.341v0.301c0-48.237 39.104-87.341 87.341-87.341l1220.668 0c48.237 0 87.341 39.104 87.341 87.341v-0.301c0 48.237-39.104 87.341-87.341 87.341z"]},"ic_calendar":{"viewBox":"0 0 1091 1024","paths":["M933.647 115.652h-65.355v-52.104c0-36.095-29.261-65.355-65.355-65.355s-65.355 29.261-65.355 65.355h0v52.104h-396.047v-52.104c0-36.095-29.261-65.355-65.355-65.355s-65.355 29.261-65.355 65.355v0 52.104h-53.007c-0.543-0.007-1.184-0.011-1.826-0.011-85.318 0-154.641 68.487-155.989 153.484l-0.002 0.127v602.353c2.016 84.597 71.073 152.406 155.968 152.406 0.65 0 1.299-0.004 1.947-0.012l-0.098 0.001h775.831c0.543 0.007 1.184 0.011 1.826 0.011 85.318 0 154.641-68.487 155.989-153.484l0.002-0.127v-602.353c-2.016-84.597-71.073-152.406-155.968-152.406-0.65 0-1.299 0.004-1.947 0.012l0.098-0.001zM993.882 870.4c0 33.267-26.968 60.235-60.235 60.235v0h-775.831c-33.267 0-60.235-26.968-60.235-60.235v0-458.089h896.301zM632.471 820.706h204.499c17.563-0.169 31.756-14.361 31.925-31.909l0-0.016v-204.499c0-17.632-14.293-31.925-31.925-31.925v0h-204.499c-0.090-0.001-0.196-0.001-0.303-0.001-17.465 0-31.624 14.158-31.624 31.624 0 0.106 0.001 0.213 0.002 0.319l-0-0.016v204.499c0 17.632 14.293 31.925 31.925 31.925v0z"]},"ic_cast":{"viewBox":"0 0 1248 1024","paths":["M1247.774 292.141v-163.539c0.014-0.705 0.022-1.536 0.022-2.369 0-25.286-7.419-48.839-20.2-68.602l0.3 0.496c-22.443-35.182-61.27-58.178-105.467-58.178-1.251 0-2.498 0.018-3.741 0.055l0.182-0.004h-995.991c-66.831 0.479-121.042 53.846-122.876 120.3l-0.004 0.17c0 37.346 0 75.294 0 111.736 0 15.661 0 30.118 0 46.984s6.927 25.6 26.202 25.901h82.522c1.616 0.279 3.476 0.439 5.374 0.439 7.919 0 15.189-2.778 20.889-7.414l-0.061 0.048c4.001-5.639 6.397-12.663 6.397-20.246 0-2.428-0.245-4.798-0.713-7.087l0.039 0.227c0-16.264 0-32.828 0-49.092v-34.635c0-13.854 0-27.708 0-43.369 0.072-0.722 0.112-1.561 0.112-2.409s-0.041-1.687-0.121-2.515l0.008 0.105h969.788v26.504c0 12.649 0 25.299 0 37.948s0 32.226 0 48.188v400.264c0 10.541 0 21.082 0 31.624 0 17.769 0 35.238 0 52.706v90.353c0 19.275 0 38.852 0 60.235h-364.725c-0.419-0.024-0.909-0.037-1.402-0.037-6.755 0-12.919 2.527-17.599 6.687l0.027-0.024c-3.974 4.647-6.392 10.728-6.392 17.373 0 0.669 0.025 1.333 0.073 1.99l-0.005-0.088c0 19.576 0 39.153 0 58.729v30.118c0 18.673 6.325 24.998 25.299 24.998h112.038q131.313 0 263.228 0v0c0 0 0.001 0 0.001 0 69.528 0 125.892-56.364 125.892-125.892 0-0.212-0.001-0.423-0.002-0.635l0 0.033c0-38.551 0-77.101 0-115.652z","M570.127 726.136c-45.557-87.92-108.351-161.018-184.427-217.155l-1.701-1.198c-50.839-37.899-109.826-68.648-173.412-89.159l-4.282-1.194c-53.805-18.222-115.815-29.171-180.249-30.112l-0.457-0.005c-0.61-0.055-1.32-0.086-2.037-0.086-6.168 0-11.795 2.318-16.057 6.13l0.023-0.020c-3.774 4.152-6.085 9.694-6.085 15.775 0 0.596 0.022 1.186 0.066 1.771l-0.005-0.078q0 46.080 0 92.16c-0.071 0.651-0.112 1.406-0.112 2.17 0 11.643 9.439 21.082 21.082 21.082 0.569 0 1.134-0.023 1.692-0.067l-0.074 0.005c38.257 1.093 74.788 5.973 109.992 14.285l-3.677-0.732c34.559 8.541 64.648 19.581 93.113 33.439l-2.76-1.213c65.045 30.939 119.844 73.501 163.859 125.486l0.584 0.707c49.104 58.395 85.080 129.473 102.397 207.571l0.606 3.252c6.061 27.848 9.966 60.185 10.828 93.279l0.014 0.688c-0.045 0.508-0.070 1.099-0.070 1.696 0 11.311 9.169 20.48 20.48 20.48 0.981 0 1.945-0.069 2.889-0.202l-0.109 0.013h60.235c10.842 0 21.685 0 32.226 0h1.807c0.306 0.015 0.665 0.024 1.026 0.024 5.755 0 11.001-2.182 14.956-5.763l-0.019 0.017c4.123-4.402 6.655-10.338 6.655-16.865 0-0.424-0.011-0.846-0.032-1.264l0.002 0.059c-0.758-26.735-3.14-52.209-7.064-77.171l0.438 3.383c-9.612-74.923-31.586-142.854-63.924-204.494l1.581 3.308z","M346.654 783.059c-30.246-43.515-67.507-79.817-110.518-108.088l-1.519-0.938c-58.496-38.891-129.786-63.029-206.538-65.638l-0.671-0.018c-0.987-0.115-2.13-0.18-3.288-0.18-6.563 0-12.635 2.099-17.583 5.662l0.089-0.061c-3.862 4.574-6.209 10.536-6.209 17.046 0 1.104 0.067 2.192 0.199 3.261l-0.013-0.128v88.847c0 18.974 7.228 26.805 26.202 26.805 49.069 1.007 94.378 16.277 132.181 41.814l-0.868-0.553c51.412 33.037 89.775 82.534 107.934 140.931l0.489 1.827c6.315 19.746 10.33 42.533 11.132 66.136l0.011 0.424c-0.016 0.325-0.025 0.706-0.025 1.090 0 6.372 2.537 12.152 6.656 16.384l-0.005-0.005c4.272 3.926 9.995 6.332 16.28 6.332 0.206 0 0.412-0.003 0.617-0.008l-0.030 0.001h90.353c1.034 0.153 2.227 0.241 3.441 0.241 6.323 0 12.092-2.377 16.461-6.285l-0.024 0.021c3.189-4.048 5.116-9.221 5.116-14.844 0-1.891-0.218-3.732-0.63-5.498l0.032 0.163c-0.799-18.573-2.523-35.909-5.156-52.945l0.337 2.649c-9.375-62.263-32.141-117.876-65.302-165.74l0.851 1.298z","M27.407 830.042c-1.56-0.351-3.351-0.551-5.19-0.551-5.663 0-10.881 1.906-15.047 5.112l0.058-0.043c-4.014 4.335-6.477 10.157-6.477 16.555 0 0.959 0.055 1.904 0.163 2.834l-0.011-0.113v145.769c-0.040 0.518-0.062 1.122-0.062 1.731 0 6.313 2.428 12.060 6.402 16.356l-0.015-0.016c4.314 3.926 10.073 6.329 16.394 6.329 0.166 0 0.332-0.002 0.497-0.005l-0.025 0h148.179c0.467 0.033 1.011 0.051 1.56 0.051 6.27 0 11.974-2.425 16.224-6.389l-0.014 0.013c3.517-4.198 5.653-9.658 5.653-15.616 0-1.184-0.084-2.349-0.248-3.488l0.015 0.13c-1.725-23.969-7.987-46.1-17.929-66.077l0.461 1.023c-27.317-58.394-83.713-99.091-150.041-103.575l-0.547-0.030z"]},"ic_channels":{"viewBox":"0 0 1391 1024","paths":["M501.459 632.471v-377.374c-0-0-0-0.001-0-0.001 0-22.516 18.167-40.788 40.643-40.959l0.016-0c7.294 0.019 14.141 1.915 20.089 5.228l-0.212-0.108 341.534 188.536c12.694 7.123 21.13 20.496 21.13 35.84s-8.437 28.717-20.924 35.734l-0.206 0.106-341.233 188.838c-5.741 3.22-12.599 5.116-19.9 5.116-15.251 0-28.57-8.275-35.712-20.58l-0.106-0.198c-3.172-5.843-5.060-12.784-5.12-20.16l-0-0.018z","M1141.459 1024h-897.807c-22.669-1.937-40.336-20.816-40.336-43.821s17.666-41.884 40.173-43.81l0.163-0.011h897.807c22.669 1.937 40.336 20.816 40.336 43.821s-17.666 41.884-40.173 43.81l-0.163 0.011z","M1275.181 887.868h-1159.529c-63.841-0.341-115.482-52.088-115.652-115.937l-0-0.016v-656.264c0-63.873 51.779-115.652 115.652-115.652v0h1159.529c63.873 0 115.652 51.779 115.652 115.652v0 656.264c-0.17 63.865-51.811 115.612-115.619 115.953l-0.032 0zM115.652 74.692c-22.622 0-40.96 18.338-40.96 40.96l-0-0v656.264c-0.001 0.089-0.001 0.195-0.001 0.301 0 22.622 18.338 40.96 40.96 40.96 0 0 0.001-0 0.001-0l1159.529 0c22.622 0 40.96-18.338 40.96-40.96v0 0-656.565c0-22.622-18.338-40.96-40.96-40.96v0h-1159.529z"]},"ic_continue":{"viewBox":"0 0 1342 1024","paths":["M1227.896 0h-1113.449c-0.181-0.001-0.395-0.002-0.609-0.002-62.452 0-113.158 50.286-113.838 112.577l-0.001 0.064v559.285c0.68 62.355 51.387 112.642 113.838 112.642 0.214 0 0.428-0.001 0.642-0.002l-0.033 0h718.908l-53.911 53.007c-5.236 5.412-8.463 12.795-8.463 20.932s3.227 15.52 8.471 20.94l-0.008-0.008c5.459 5.502 13.023 8.909 21.384 8.909s15.925-3.406 21.382-8.907l0.002-0.002 114.447-112.941c5.236-5.412 8.463-12.795 8.463-20.932s-3.227-15.52-8.471-20.94l0.008 0.008-114.447-112.941c-5.459-5.502-13.023-8.909-21.384-8.909s-15.925 3.406-21.382 8.907l-0.002 0.002c-5.236 5.412-8.463 12.795-8.463 20.932s3.227 15.52 8.471 20.94l-0.008-0.008 53.911 53.308h-718.908c-0.090 0.001-0.196 0.001-0.302 0.001-19.356 0-35.067-15.606-35.236-34.922l-0-0.016v-559.285c0.17-19.332 15.881-34.938 35.236-34.938 0.106 0 0.213 0 0.319 0.001l-0.016-0h1114.353c0.269-0.007 0.587-0.012 0.905-0.012 19.359 0 35.072 15.612 35.236 34.933l0 0.016v559.285c-0.17 19.332-15.881 34.938-35.236 34.938-0.106 0-0.213-0-0.319-0.001l0.016 0h-170.466c-21.457 0-38.852 17.395-38.852 38.852s17.395 38.852 38.852 38.852h168.96c0.181 0.001 0.395 0.002 0.609 0.002 62.452 0 113.158-50.286 113.838-112.577l0.001-0.064v-559.285c-0.68-62.355-51.387-112.642-113.838-112.642-0.214 0-0.428 0.001-0.642 0.002l0.033-0zM973.704 933.647h-605.064c-24.95 0-45.176 20.226-45.176 45.176s20.226 45.176 45.176 45.176v0h605.064c24.95 0 45.176-20.226 45.176-45.176s-20.226-45.176-45.176-45.176v0z"]},"ic_discover":{"viewBox":"0 0 1025 1024","paths":["M602.353 575.849c49.694-96.075 99.991-192.151 150.588-288.226 3.012-6.024 10.842-13.252 4.819-19.275s-13.553 0-19.275 4.216l-291.84 150.588c-10.241 5.534-18.27 14.048-23.055 24.371l-0.135 0.326q-64.753 124.386-129.506 248.471c-8.734 16.866-17.468 33.129-25.901 49.995-2.711 4.819-6.024 11.445 4.518 12.951 4.819-2.108 10.24-4.216 15.36-6.927l289.732-150.588c10.78-5.894 19.287-14.788 24.546-25.559l0.151-0.342z","M883.351 161.732c-90.543-95.747-216.891-156.82-357.52-161.708l-0.88-0.024c-3.070-0.066-6.687-0.104-10.314-0.104-138.198 0-263.562 54.947-355.438 144.186l0.123-0.119c-98.26 92.852-159.424 224.071-159.424 369.575 0 142.717 58.843 271.691 153.591 363.984l0.111 0.107c88.622 88.958 210.672 144.561 345.709 146.368l0.343 0.004h24.094c277.633-5.364 500.641-231.69 500.641-510.104 0-136.661-53.732-260.772-141.221-352.36l0.185 0.195zM242.748 783.059c-70.126-69.135-113.568-165.177-113.568-271.364 0-210.414 170.574-380.988 380.988-380.988 0.644 0 1.288 0.002 1.931 0.005l-0.099-0c210.913 0 381.892 170.979 381.892 381.892s-170.979 381.892-381.892 381.892v0 0c-0.446 0.002-0.975 0.003-1.503 0.003-104.66 0-199.368-42.605-267.728-111.418l-0.020-0.021z"]},"ic_downloads":{"viewBox":"0 0 1126 1024","paths":["M1058.033 887.567h-989.666c-1.356-0.096-2.939-0.151-4.535-0.151-37.758 0-68.367 30.609-68.367 68.367s30.609 68.367 68.367 68.367c1.596 0 3.179-0.055 4.747-0.162l-0.212 0.012h989.666c1.356 0.096 2.939 0.151 4.535 0.151 37.758 0 68.367-30.609 68.367-68.367s-30.609-68.367-68.367-68.367c-1.596 0-3.179 0.055-4.747 0.162l0.212-0.012zM513.506 773.12c12.895 12.322 30.409 19.906 49.694 19.906s36.799-7.584 49.721-19.932l-0.027 0.026 249.073-240.941c12.652-12.183 20.511-29.268 20.511-48.188s-7.859-36.005-20.49-48.168l-0.021-0.020c-12.913-12.409-30.486-20.051-49.845-20.051s-36.932 7.642-49.869 20.073l-129.783 124.062v-491.52c0-0.003 0-0.007 0-0.011 0-37.334-29.926-67.679-67.099-68.356l-0.063-0.001h-4.216c-37.758-0-68.367 30.609-68.367 68.367v491.52l-128.602-124.687c-12.913-12.409-30.486-20.051-49.845-20.051s-36.932 7.642-49.869 20.073l0.024-0.023c-12.652 12.183-20.511 29.268-20.511 48.188s7.859 36.005 20.49 48.168l0.021 0.020z"]},"ic_drawer":{"viewBox":"0 0 1395 1024","paths":["M87.341 174.381h1220.668c1.532 0.096 3.323 0.151 5.127 0.151 48.237 0 87.341-39.104 87.341-87.341s-39.104-87.341-87.341-87.341c-1.804 0-3.594 0.055-5.371 0.162l0.244-0.012h-1220.668c-1.532-0.096-3.323-0.151-5.127-0.151-48.237 0-87.341 39.104-87.341 87.341s39.104 87.341 87.341 87.341c1.804 0 3.594-0.055 5.371-0.162l-0.244 0.012z","M1308.009 424.659h-1220.668c-48.237 0-87.341 39.104-87.341 87.341s39.104 87.341 87.341 87.341h1220.668c48.237 0 87.341-39.104 87.341-87.341s-39.104-87.341-87.341-87.341l0-0z","M1308.009 849.619h-1220.668c-1.532-0.096-3.323-0.151-5.127-0.151-48.237 0-87.341 39.104-87.341 87.341s39.104 87.341 87.341 87.341c1.804 0 3.594-0.055 5.371-0.162l-0.244 0.012h1220.668c1.532 0.096 3.323 0.151 5.127 0.151 48.237 0 87.341-39.104 87.341-87.341s-39.104-87.341-87.341-87.341c-1.804 0-3.594 0.055-5.371 0.162l0.244-0.012z"]},"ic_eye":{"viewBox":"0 0 1742 1024","paths":["M1736.885 493.929c-135.949-175.767-309.687-315.734-509.57-409.067l-8.454-3.545c-243.953-107.821-487.304-113.544-727.642 13.854-129.466 69.885-240.813 152.614-338.716 248.962l0.194-0.19c-53.609 52.104-103.605 107.821-152.696 159.624 0.726 4.346 1.773 8.195 3.155 11.879l-0.143-0.434c3.313 4.518 6.626 9.035 10.24 13.252 122.525 150.238 267.573 276.391 431.090 375.027l7.423 4.155c116.201 72.917 257.445 116.17 408.791 116.17 81.433 0 159.941-12.522 233.704-35.745l-5.507 1.495c271.059-81.016 477.967-251.181 650.842-468.329 1.287-3.227 2.034-6.966 2.034-10.88 0-6.025-1.769-11.636-4.816-16.344l0.071 0.118zM873.412 937.261c-234.606-0.343-424.659-190.607-424.659-425.261 0-234.865 190.396-425.261 425.261-425.261s425.261 190.396 425.261 425.261l-0-0c-1.193 234.595-191.22 424.411-425.782 425.261l-0.082 0z","M799.021 275.576c40.056 48.791 40.358 95.172 0 129.807s-86.739 25.6-133.722-25.6c-61.741 85.233-42.767 229.195 39.755 303.586 43.704 41.558 102.957 67.122 168.18 67.122 63.513 0 121.365-24.242 164.806-63.977l-0.186 0.168c49.108-45.331 79.758-110.028 79.758-181.883 0-52.615-16.433-101.392-44.448-141.477l0.53 0.8c-66.56-98.184-198.776-123.181-274.673-88.546z"]},"ic_facebook":{"viewBox":"0 0 474 1024","paths":["M474.052 331.294h-161.431v-106.014c-0.245-1.731-0.385-3.731-0.385-5.764 0-23.952 19.417-43.369 43.369-43.369 0.665 0 1.326 0.015 1.984 0.045l-0.093-0.003h114.146v-176.188h-156.913c-174.381 0-213.835 131.012-213.835 214.739v116.555h-100.894v180.706h100.894v512h210.824v-512h143.059z"]},"ic_help":{"viewBox":"0 0 596 1024","paths":["M153.901 626.748c-0.109-2.593-0.17-5.636-0.17-8.694 0-38.876 9.994-75.418 27.554-107.196l-0.579 1.142c27.163-40.735 60.963-74.728 100.21-101.279l1.286-0.82c35.996-23.578 66.927-50.967 93.458-82.209l0.509-0.615c14.307-19.568 22.892-44.107 22.892-70.651 0-0.256-0.001-0.512-0.002-0.767l0 0.039c0.056-1.105 0.089-2.399 0.089-3.701 0-25.433-12.266-48.001-31.206-62.111l-0.205-0.146c-23.278-14.516-51.542-23.123-81.817-23.123-3.003 0-5.986 0.085-8.947 0.252l0.411-0.018c-58.672 1.407-114.055 13.896-164.656 35.441l2.924-1.106c-9.304 3.845-20.108 6.077-31.433 6.077-32.637 0-60.943-18.54-74.962-45.663l-0.221-0.471c-5.738-11.020-9.104-24.065-9.104-37.896 0-34.353 20.764-63.856 50.426-76.645l0.542-0.208c70.629-29.343 152.665-46.384 238.681-46.384 0.689 0 1.377 0.001 2.065 0.003l-0.107-0c5.501-0.317 11.936-0.498 18.413-0.498 76.827 0 147.72 25.412 204.729 68.289l-0.874-0.63c50.383 40.518 82.354 102.157 82.354 171.263 0 2.685-0.048 5.359-0.144 8.021l0.011-0.385c0.060 1.998 0.095 4.348 0.095 6.707 0 45.126-12.579 87.314-34.421 123.249l0.594-1.053c-35.418 48.351-78.169 88.896-127.051 120.84l-1.853 1.136c-31.417 21.25-58.543 45.505-82.065 72.94l-0.458 0.547c-10.853 17.093-17.296 37.913-17.296 60.238 0 1.906 0.047 3.801 0.14 5.683l-0.010-0.265c0.005 0.302 0.007 0.659 0.007 1.017 0 33.756-23.631 61.993-55.253 69.069l-0.472 0.089c-8.337 1.775-17.915 2.791-27.73 2.791-12.19 0-24.014-1.568-35.281-4.512l0.968 0.215c-34.846-10.040-60.224-40.827-62.035-77.807l-0.008-0.198zM132.216 908.649c-0.215-2.62-0.338-5.671-0.338-8.751 0-29.936 11.585-57.166 30.517-77.452l-0.061 0.066c21.565-18.849 49.978-30.344 81.075-30.344 2.628 0 5.238 0.082 7.825 0.244l-0.354-0.018c2.212-0.145 4.797-0.227 7.4-0.227 30.734 0 58.779 11.509 80.062 30.451l-0.121-0.106c18.834 20.337 30.388 47.653 30.388 77.668 0 2.768-0.098 5.513-0.291 8.232l0.021-0.365c0.147 2.166 0.231 4.694 0.231 7.242 0 29.918-11.541 57.141-30.414 77.46l0.066-0.071c-20.88 18.848-48.681 30.379-79.175 30.379-2.767 0-5.513-0.095-8.233-0.282l0.367 0.020c-2.381 0.168-5.161 0.263-7.962 0.263-30.753 0-58.814-11.523-80.102-30.486l0.12 0.105c-19.303-20.27-31.18-47.766-31.18-78.036 0-2.108 0.058-4.202 0.171-6.282l-0.013 0.289z"]},"ic_library":{"viewBox":"0 0 1209 1024","paths":["M1204.706 917.082l-190.645-826.729c-9.055-39.42-43.838-68.374-85.384-68.374-48.324 0-87.499 39.175-87.499 87.499 0 6.779 0.771 13.378 2.23 19.714l-0.114-0.589 191.548 827.633c11.135 36.317 44.369 62.266 83.664 62.266 48.237 0 87.341-39.104 87.341-87.341 0-4.971-0.415-9.846-1.213-14.591l0.071 0.513z","M674.334 0c-0-0-0-0-0.001-0-48.071 0-87.040 38.969-87.040 87.040 0 0.106 0 0.212 0.001 0.318l-0-0.016v849.318c-0.096 1.532-0.151 3.323-0.151 5.127 0 48.237 39.104 87.341 87.341 87.341s87.341-39.104 87.341-87.341c0-1.804-0.055-3.594-0.162-5.371l0.012 0.244v-849.318c0-48.237-39.104-87.341-87.341-87.341v0z","M87.944 0c-0.179-0.001-0.391-0.002-0.602-0.002-48.237 0-87.341 39.104-87.341 87.341 0 0.001 0 0.002 0 0.002l-0-0v849.318c-0.096 1.532-0.151 3.323-0.151 5.127 0 48.237 39.104 87.341 87.341 87.341s87.341-39.104 87.341-87.341c0-1.804-0.055-3.594-0.162-5.371l0.012 0.244v-849.318c0-0.090 0.001-0.197 0.001-0.303 0-47.859-38.627-86.697-86.406-87.038l-0.032-0z","M380.988 171.369c-48.002 0.171-86.869 39.038-87.040 87.024l-0 0.016v678.249c-0.096 1.532-0.151 3.323-0.151 5.127 0 48.237 39.104 87.341 87.341 87.341s87.341-39.104 87.341-87.341c0-1.804-0.055-3.594-0.162-5.371l0.012 0.244v-678.249c-0.171-48.108-39.209-87.040-87.341-87.040-0 0-0 0-0.001 0l0-0z"]},"ic_more":{"viewBox":"0 0 216 1024","paths":["M215.944 108.122c0-0.089 0-0.195 0-0.301 0-59.714-48.408-108.122-108.122-108.122s-108.122 48.408-108.122 108.122c0 59.714 48.408 108.122 108.122 108.122 0.106 0 0.211-0 0.317-0l-0.016 0c59.548 0 107.821-48.273 107.821-107.821v0z","M215.944 507.181c-0-59.714-48.408-108.122-108.122-108.122s-108.122 48.408-108.122 108.122c0 59.714 48.408 108.122 108.122 108.122 0.106 0 0.212-0 0.318-0l-0.016 0c0 0 0 0 0 0 59.548 0 107.821-48.273 107.821-107.821 0-0.106-0-0.212-0-0.318l0 0.017z","M215.944 915.878c-0-59.714-48.408-108.122-108.122-108.122s-108.122 48.408-108.122 108.122c0 59.714 48.408 108.122 108.122 108.122 0.106 0 0.212-0 0.318-0l-0.016 0c0 0 0 0 0 0 59.548 0 107.821-48.273 107.821-107.821 0-0.106-0-0.212-0-0.318l0 0.017z"]},"ic_movies":{"viewBox":"0 0 840 1024","paths":["M813.176 1024h-708.969c-14.3-3.367-24.781-16.017-24.781-31.115 0-0.815 0.031-1.623 0.090-2.422l-0.006 0.107q0-215.642 0-430.984v-4.819c0.015 0 0.033 0 0.051 0 30.976 0 58.991-12.673 79.146-33.116l0.013-0.013c19.218-19.773 31.069-46.796 31.069-76.586 0-1.134-0.017-2.265-0.051-3.391l0.004 0.165h649.939v558.381c-1.037 2.541-2.047 4.621-3.168 6.63l0.157-0.306c-4.8 8.938-13.235 15.394-23.273 17.431l-0.219 0.037zM796.612 481.882h-126.795c-1.944 0.438-3.547 1.646-4.5 3.28l-0.018 0.033-60.235 95.473c-0.466 0.866-0.972 1.957-1.422 3.076l-0.084 0.237h128.301c3.012 0 3.915 0 5.421-3.313l56.922-95.172c0.887-1.056 1.687-2.24 2.356-3.505l0.053-0.11zM393.638 583.078h128.602c0.156 0.017 0.337 0.026 0.52 0.026 2.3 0 4.246-1.517 4.892-3.604l0.010-0.036c18.974-30.118 37.948-62.645 56.621-94.268l2.711-4.518h-125.892c-0.179-0.018-0.387-0.028-0.597-0.028-2.519 0-4.694 1.473-5.711 3.604l-0.016 0.038-58.428 94.268zM377.675 481.882h-126.193c-0.024-0-0.052-0.001-0.080-0.001-2.57 0-4.763 1.609-5.629 3.875l-0.014 0.041-58.428 93.064-2.711 4.216h124.386c0.165 0.018 0.357 0.028 0.551 0.028 2.127 0 3.968-1.225 4.856-3.008l0.014-0.031 60.235-95.473z","M707.464 0c4.931 1.519 9.225 3.567 13.143 6.142l-0.192-0.119c4.632 3.831 8.386 8.548 11.033 13.909l0.11 0.247c18.372 44.574 36.442 90.353 54.814 134.325l-602.353 243.652c-18.275-41.26-58.864-69.523-106.054-69.523-14.706 0-28.77 2.745-41.71 7.75l0.79-0.269c-4.819-12.047-10.842-24.094-14.758-37.045-0.883-2.705-1.392-5.818-1.392-9.050 0-13.254 8.561-24.508 20.455-28.534l0.212-0.062c18.673-6.626 39.153-14.456 58.428-20.48l542.118-217.751 43.972-19.275 10.24-3.915zM123.181 271.059h1.807l93.064 67.464c0.846 0.357 1.829 0.565 2.861 0.565s2.015-0.208 2.911-0.583l-0.050 0.018 90.353-35.84 26.504-10.842-2.409-1.807-91.859-65.656c-0.846-0.572-1.889-0.914-3.012-0.914s-2.166 0.341-3.031 0.926l0.019-0.012-77.402 30.118zM535.793 214.739l-2.711-2.108-90.353-66.56c-0.933-0.622-2.080-0.993-3.313-0.993s-2.38 0.371-3.335 1.007l0.022-0.014-118.061 45.779 2.108 1.807 92.461 67.162c0.846 0.357 1.829 0.565 2.861 0.565s2.015-0.208 2.911-0.583l-0.050 0.018 87.341-34.635zM730.353 135.529h-1.807l-91.859-68.969c-0.803-0.547-1.794-0.874-2.861-0.874s-2.059 0.327-2.879 0.885l0.018-0.011-90.353 36.744c-8.433 3.012-16.565 6.325-24.998 9.939l2.409 2.108 90.353 65.355c0.846 0.357 1.829 0.565 2.861 0.565s2.015-0.208 2.911-0.583l-0.050 0.018 75.294-30.118z","M0 433.393c0-3.614 1.506-7.228 2.409-10.541 8.935-34.682 39.932-59.894 76.818-59.894 4.782 0 9.465 0.424 14.014 1.236l-0.48-0.071c37.902 5.909 66.564 38.317 66.564 77.421 0 2.432-0.111 4.839-0.328 7.214l0.023-0.305c-3.944 40.578-37.878 72.037-79.159 72.037-39.144 0-71.681-28.287-78.286-65.534l-0.070-0.48c-0.474-1.046-0.977-1.935-1.547-2.775l0.041 0.064z"]},"ic_play":{"viewBox":"0 0 899 1024","paths":["M891.482 512l-884.254 512v-1024z"]},"ic_remote":{"viewBox":"0 0 1022 1024","paths":["M624.941 175.586c-13.057-13.353-31.097-21.786-51.107-22.285l-0.093-0.002c-0.040-0-0.088-0-0.135-0-20.908 0-39.826 8.522-53.469 22.282l-0.005 0.005c-16.866 16.565-33.732 33.431-50.296 50.296l-439.718 439.115c-36.141 37.346-40.96 76.8-8.433 110.833q112.038 115.652 227.388 227.388c12.53 12.789 29.979 20.717 49.28 20.717 20.031 0 38.068-8.54 50.668-22.177l0.042-0.046c14.155-12.649 27.106-26.805 40.659-40.056 150.588-150.588 301.176-301.176 451.765-451.765 37.948-37.948 40.659-77.402 6.024-112.941-74.391-74.391-148.781-147.576-222.569-221.365zM180.706 776.734c-1.178 0.096-2.55 0.151-3.936 0.151-28.443 0-51.501-23.058-51.501-51.501s23.058-51.501 51.501-51.501c1.385 0 2.757 0.055 4.115 0.162l-0.179-0.011c0.902-0.058 1.955-0.091 3.017-0.091 27.778 0 50.296 22.518 50.296 50.296 0 0.244-0.002 0.487-0.005 0.73l0-0.037c0.101 1.169 0.158 2.53 0.158 3.904 0 26.614-21.575 48.188-48.188 48.188-1.86 0-3.695-0.105-5.499-0.31l0.221 0.020zM297.562 897.205c-28.62-0.424-51.657-23.724-51.657-52.405 0-28.945 23.465-52.41 52.41-52.41 0.265 0 0.529 0.002 0.793 0.006l-0.040-0c0.116-0.001 0.254-0.002 0.391-0.002 27.944 0 50.598 22.653 50.598 50.598 0 1.060-0.033 2.113-0.097 3.156l0.007-0.143c0.012 0.399 0.018 0.868 0.018 1.339 0 27.113-21.979 49.092-49.092 49.092-1.278 0-2.545-0.049-3.799-0.145l0.167 0.010zM297.562 660.781c-0.703 0.036-1.526 0.057-2.354 0.057-26.78 0-48.489-21.709-48.489-48.489 0-1.717 0.089-3.414 0.263-5.085l-0.018 0.209c-0.027-0.633-0.043-1.376-0.043-2.123 0-29.275 23.732-53.007 53.007-53.007 0.439 0 0.876 0.005 1.312 0.016l-0.065-0.001c27.941 2.397 49.712 25.668 49.712 54.025 0 0.489-0.006 0.977-0.019 1.464l0.002-0.072c0.010 0.372 0.015 0.81 0.015 1.249 0 28.111-22.788 50.899-50.899 50.899-0.747 0-1.49-0.016-2.229-0.048l0.105 0.004zM414.118 777.638c-0.671 0.033-1.456 0.052-2.246 0.052-26.946 0-48.791-21.844-48.791-48.791 0-1.29 0.050-2.569 0.148-3.833l-0.010 0.168c0.13-28.012 22.868-50.67 50.898-50.67 0.954 0 1.901 0.026 2.842 0.078l-0.131-0.006c28.759 0.293 52.137 22.935 53.604 51.369l0.005 0.132c-1.277 28.259-24.497 50.686-52.956 50.686-1.077 0-2.147-0.032-3.209-0.096l0.146 0.007zM553.261 621.628c-83.676-0.427-151.343-68.359-151.343-152.094 0-84 68.096-152.096 152.096-152.096 0.265 0 0.529 0.001 0.794 0.002l-0.041-0c0.006-0 0.013-0 0.019-0 83.168 0 150.588 67.421 150.588 150.588 0 0.847-0.007 1.693-0.021 2.537l0.002-0.127c-0.169 83.040-67.525 150.292-150.588 150.292-0.424 0-0.847-0.002-1.27-0.005l0.065 0zM970.692 128.602c-44.849-66.251-113.901-113.214-194.197-128.31l-1.869-0.292c-39.454 0-57.224 9.939-57.826 31.925 0 26.805 16.565 35.84 39.454 39.153 25.97 3.55 49.371 12.055 70.092 24.554l-0.821-0.46c65.543 35.169 112.467 97.757 125.675 172.009l0.217 1.469c3.614 21.986 13.553 37.948 38.249 37.647s34.334-17.468 34.334-44.574c-3.974-51.025-23.438-96.864-53.636-133.53l0.328 0.41zM738.184 118.362c-20.48 0-36.442 7.831-40.056 28.612-0.555 2.311-0.873 4.965-0.873 7.693 0 17.785 13.522 32.411 30.846 34.159l0.144 0.012c54.205 8.944 96.459 50.995 105.606 104.354l0.107 0.757c2.215 17.355 16.892 30.635 34.671 30.635 2.116 0 4.188-0.188 6.2-0.548l-0.212 0.031c16.96-1.407 30.192-15.519 30.192-32.722 0-0.779-0.027-1.552-0.081-2.317l0.006 0.103c-1.205-81.016-91.558-170.767-166.551-170.767zM555.671 386.409c-1.188-0.064-2.578-0.1-3.977-0.1-43.58 0-78.908 35.328-78.908 78.908 0 1.094 0.022 2.184 0.066 3.267l-0.005-0.155c-0.13 1.672-0.203 3.62-0.203 5.586 0 42.415 34.385 76.8 76.8 76.8 1.767 0 3.52-0.060 5.258-0.177l-0.235 0.013c1.014 0.047 2.204 0.073 3.399 0.073 43.58 0 78.908-35.328 78.908-78.908 0-1.297-0.031-2.587-0.093-3.868l0.007 0.181c0.018-0.632 0.028-1.376 0.028-2.123 0-43.912-35.598-79.511-79.511-79.511-0.539 0-1.078 0.005-1.615 0.016l0.080-0.001z"]},"ic_reset":{"viewBox":"0 0 1024 1024","paths":["M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512v0c0-282.77-229.23-512-512-512v0zM763.482 660.179c11.388 12.841 18.343 29.839 18.343 48.461 0 40.419-32.766 73.186-73.186 73.186-18.622 0-35.62-6.955-48.537-18.409l0.076 0.066-148.179-148.179-148.179 148.179c-13.176 13.194-31.383 21.363-51.497 21.384l-0.004 0c-40.335-0.111-72.99-32.835-72.99-73.186 0-20.086 8.092-38.283 21.194-51.507l-0.006 0.006 148.179-148.179-148.179-148.179c-13.114-13.267-21.214-31.513-21.214-51.652s8.101-38.385 21.221-51.659l-0.007 0.007c13.391-12.836 31.598-20.738 51.652-20.738s38.261 7.903 51.678 20.764l-0.026-0.025 148.179 148.179 148.179-148.179c12.841-11.388 29.839-18.343 48.461-18.343 40.419 0 73.186 32.766 73.186 73.186 0 18.622-6.955 35.62-18.409 48.537l0.066-0.076-148.179 148.179z"]},"ic_search":{"viewBox":"0 0 1025 1024","paths":["M1001.713 879.736c-48.791-50.899-162.334-163.84-214.438-216.546 43.772-66.969 69.909-148.918 70.174-236.956l0-0.070c-1.877-235.432-193.166-425.561-428.862-425.561-236.861 0-428.875 192.014-428.875 428.875 0 236.539 191.492 428.353 427.909 428.874l0.050 0c1.551 0.021 3.382 0.033 5.216 0.033 85.536 0 165.055-25.764 231.219-69.956l-1.518 0.954 201.487 204.499c16.379 18.259 39.94 29.789 66.201 30.117l0.058 0.001c2.034 0.171 4.401 0.269 6.791 0.269 35.32 0 65.657-21.333 78.83-51.816l0.214-0.556c5.589-10.528 8.87-23.018 8.87-36.275 0-21.857-8.921-41.631-23.32-55.878l-0.007-0.007zM429.478 730.654c-0.004 0-0.008 0-0.012 0-166.335 0-301.176-134.841-301.176-301.176 0-0.953 0.004-1.905 0.013-2.856l-0.001 0.146c0.599-165.882 135.211-300.124 301.176-300.124 166.336 0 301.178 134.842 301.178 301.178 0 0.371-0.001 0.741-0.002 1.111l0-0.057c0 0.179 0.001 0.391 0.001 0.603 0 166.335-134.841 301.176-301.176 301.176-0.106 0-0.212-0-0.318-0l0.016 0z"]},"ic_series":{"viewBox":"0 0 1125 1024","paths":["M1089.958 239.134c-16.353-10.225-36.218-16.289-57.499-16.289-2.977 0-5.926 0.119-8.843 0.351l0.385-0.025h-384.602c-2.584 0.543-5.552 0.854-8.594 0.854-7.913 0-15.335-2.105-21.736-5.785l0.212 0.112 94.569-99.689c21.384-22.588 42.767-45.176 63.849-68.066 11.746-12.951 16.866-27.407 3.012-41.562s-27.106-9.035-39.755 3.614c-3.975 3.53-7.614 7.168-11.028 11.011l-0.116 0.133c-46.381 48.791-93.064 96.678-138.842 146.974-12.047 12.951-20.48 16.565-33.129 0s-25.6-27.106-38.249-40.358l-113.845-117.459c-11.144-12.047-24.395-18.673-38.852-6.024-5.844 5.002-9.524 12.387-9.524 20.631s3.68 15.628 9.488 20.6l0.037 0.031c4.819 5.722 9.939 11.144 15.059 16.565 43.671 45.478 87.040 90.353 130.409 137.035 4.518 5.12 14.758 9.336 10.842 17.468s-13.553 3.614-20.781 3.614h-390.626c-70.174 0.602-101.798 32.527-101.798 102.701v596.329c0 71.981 30.118 102.099 101.496 102.099h922.504c0.033 0 0.071 0 0.11 0 14.016 0 27.726-1.315 41.011-3.829l-1.365 0.215c34.573-7.715 60.059-38.052 60.235-74.371l0-0.020q0-321.656 0-643.012c0.020-0.645 0.032-1.402 0.032-2.163 0-25.859-13.467-48.573-33.77-61.511l-0.295-0.176zM832.151 860.16c-0.171 39.458-32.197 71.379-71.679 71.379-0 0-0-0-0.001-0l-589.101 0c-39.421 0-71.379-31.957-71.379-71.379h-0v-478.569c-0-0-0-0-0-0.001 0-39.482 31.921-71.508 71.363-71.679l0.016-0h589.101c39.519 0.17 71.51 32.161 71.68 71.664l0 0.016zM980.932 595.125c-30.393-0.468-55.009-24.558-56.316-54.695l-0.004-0.119c-0-0.001-0-0.002-0-0.003 0-29.895 24.064-54.169 53.878-54.509l0.032-0c1.283-0.116 2.775-0.182 4.283-0.182 27.944 0 50.598 22.653 50.598 50.598 0 0.911-0.024 1.817-0.072 2.717l0.005-0.126c0.009 0.367 0.014 0.8 0.014 1.234 0 29.809-23.664 54.090-53.231 55.084l-0.091 0.002zM980.932 422.852c-0.089 0.001-0.195 0.001-0.3 0.001-30.439 0-55.115-24.676-55.115-55.115s24.676-55.115 55.115-55.115c30.439 0 55.115 24.676 55.115 55.115 0 0.106-0 0.211-0.001 0.317l0-0.016c0 0 0 0.001 0 0.001 0 29.608-24.002 53.609-53.609 53.609-0.106 0-0.212-0-0.317-0.001l0.016 0h-2.409z"]},"ic_settings":{"viewBox":"0 0 1043 1024","paths":["M791.492 901.421c-0.137 1.886-0.214 4.085-0.214 6.303 0 14.689 3.414 28.58 9.492 40.924l-0.242-0.544c1.442 2.027 2.306 4.553 2.306 7.281 0 5.548-3.572 10.262-8.542 11.967l-0.089 0.027c-37.735 21.585-81.411 40.158-127.33 53.451l-4.284 1.062c-2.114 1.002-4.593 1.587-7.209 1.587-7.903 0-14.559-5.341-16.556-12.61l-0.028-0.12c-20.88-43.535-64.606-73.060-115.229-73.060-26.819 0-51.703 8.287-72.23 22.44l0.428-0.279c-19.628 13.227-34.808 31.704-43.688 53.426l-0.284 0.786c-3.614 8.734-7.529 11.746-17.769 9.035-51.834-13.272-97.233-31.525-139.449-54.835l3.016 1.527c-14.758-7.831-8.734-16.866-5.12-26.805 4.846-12.398 7.654-26.752 7.654-41.762 0-32.050-12.804-61.11-33.576-82.344l0.021 0.021c-22.874-25.484-55.92-41.441-92.693-41.441-10.83 0-21.336 1.384-31.352 3.985l0.864-0.191h-5.722c-30.118 9.336-30.118 9.035-44.273-18.372-17.236-31.193-32.683-67.512-44.377-105.477l-1.101-4.152c-3.915-12.348-1.807-18.673 11.445-24.094 45.171-18.059 76.501-61.451 76.501-112.16 0-0.275-0.001-0.549-0.003-0.823l0 0.042c-0.157-51.84-32.003-96.203-77.176-114.748l-0.829-0.301c-13.553-4.819-15.962-10.842-12.047-23.793 13.962-48.504 31.914-90.674 54.24-130.036l-1.534 2.94c6.024-10.541 11.746-12.649 23.793-7.831 14.648 6.459 31.727 10.219 49.685 10.219 35.285 0 67.18-14.517 90.038-37.904l0.023-0.024c21.532-21.755 34.835-51.691 34.835-84.733 0-19.022-4.409-37.015-12.26-53.011l0.314 0.709c-4.216-9.638-3.012-15.059 6.024-20.48 39.702-23.013 85.609-42.536 133.977-56.195l4.263-1.029c13.252-3.614 14.758 5.12 18.372 13.252 16.261 41.325 53.282 71.221 97.87 77.036l0.614 0.065c6.241 1.121 13.425 1.762 20.759 1.762 40.852 0 77.059-19.886 99.469-50.507l0.242-0.347c7.452-9.232 13.404-20.047 17.264-31.809l0.204-0.718c3.012-8.433 8.132-9.939 16.264-8.132 52.584 13.65 98.681 32.83 141.232 57.456l-2.691-1.437c9.336 5.12 8.433 11.144 4.819 19.576-6.604 14.774-10.451 32.016-10.451 50.158 0 69.362 56.229 125.591 125.591 125.591 18.623 0 36.299-4.053 52.195-11.326l-0.784 0.321c10.24-4.518 15.962-3.012 21.384 6.927 22.212 37.657 40.917 81.17 53.87 127.095l0.944 3.916c2.711 10.24 0 15.36-10.24 19.878-46.208 16.823-78.61 60.371-78.61 111.487 0 0.299 0.001 0.599 0.003 0.898l-0-0.046c-0.106 1.871-0.166 4.060-0.166 6.264 0 49.766 30.792 92.34 74.362 109.71l0.797 0.28c12.951 6.024 16.264 11.746 12.047 25.6-14.446 47.781-32.562 89.199-54.858 127.907l1.55-2.918c-5.421 10.24-10.842 12.348-22.287 8.132-14.209-5.966-30.724-9.432-48.048-9.432-45.354 0-85.159 23.756-107.651 59.503l-0.31 0.527c-11.029 16.816-17.591 37.422-17.591 59.561 0 1.826 0.045 3.642 0.133 5.446l-0.010-0.254zM520.433 711.68c109.44-1.529 197.571-90.604 197.571-200.264 0-110.613-89.669-200.282-200.282-200.282s-200.282 89.669-200.282 200.282c0 0.205 0 0.411 0.001 0.616l-0-0.032c0.498 110.402 90.11 199.707 200.582 199.707 1.166 0 2.329-0.010 3.49-0.030l-0.175 0.002z"]},"ic_star":{"viewBox":"0 0 1091 1024","paths":["M580.367 21.685l138.541 275.275c5.896 11.391 16.916 19.418 29.924 21.062l0.193 0.020 307.802 43.369c19.209 2.874 33.773 19.258 33.773 39.043 0 11.157-4.631 21.233-12.076 28.409l-0.012 0.012-222.268 210.824c-7.469 7.047-12.118 17.011-12.118 28.062 0 2.538 0.245 5.018 0.713 7.419l-0.040-0.243 52.405 301.176c0.382 2.053 0.6 4.415 0.6 6.828 0 21.624-17.529 39.153-39.153 39.153-6.603 0-12.824-1.635-18.281-4.521l0.213 0.103-277.384-141.252c-5.211-2.713-11.38-4.304-17.92-4.304s-12.709 1.591-18.139 4.408l0.219-0.104-277.384 143.059c-5.244 2.784-11.465 4.418-18.068 4.418-21.624 0-39.153-17.529-39.153-39.153 0-2.413 0.218-4.775 0.636-7.067l-0.036 0.24 52.405-301.176c0.428-2.157 0.674-4.638 0.674-7.175 0-11.051-4.65-21.015-12.099-28.045l-0.019-0.018-222.268-210.824c-8.495-7.281-13.844-18.022-13.844-30.012 0-20.407 15.494-37.196 35.36-39.244l0.169-0.014 308.405-43.972c13.202-1.664 24.221-9.691 30.015-20.864l0.103-0.218 137.939-274.673c6.547-13.010 19.793-21.779 35.087-21.779s28.54 8.769 34.984 21.554l0.103 0.225z"]},"ic_live_tv":{"viewBox":"0 0 874 1024","paths":["M552.056 262.927c0.034 1.021 0.053 2.221 0.053 3.426 0 37.44-18.564 70.543-46.989 90.609l-0.349 0.233c-6.606 3.647-11.007 10.569-11.007 18.519 0 4.318 1.298 8.333 3.526 11.676l-0.048-0.077q98.184 222.268 195.464 444.536c18.673 42.767 37.346 85.534 55.416 128.301 4.030 6.319 6.424 14.022 6.424 22.284 0 16.707-9.786 31.128-23.939 37.843l-0.254 0.108c-5.223 2.449-11.342 3.878-17.795 3.878-19.202 0-35.448-12.654-40.853-30.079l-0.081-0.303c-20.179-44.273-39.755-90.353-58.428-134.024-1.621-9.657-9.919-16.925-19.915-16.925-3.761 0-7.282 1.029-10.296 2.821l0.093-0.051q-174.682 48.489-349.967 94.569c-15.665 3.363-27.993 14.89-32.449 29.813l-0.078 0.305c-3.825 10.243-7.476 18.485-11.527 26.489l0.685-1.491c-6.277 16.715-22.126 28.393-40.702 28.393-6.074 0-11.857-1.249-17.105-3.504l0.282 0.108c-14.79-6.675-24.897-21.293-24.897-38.271 0-8.129 2.317-15.718 6.327-22.14l-0.103 0.176c37.045-81.318 72.282-162.936 107.52-244.254 47.586-109.026 94.871-217.751 142.758-326.475 2.679-3.765 4.284-8.457 4.284-13.524 0-8.554-4.572-16.040-11.406-20.148l-0.106-0.059c-28.841-22.237-47.239-56.799-47.239-95.657 0-14.064 2.41-27.565 6.84-40.113l-0.26 0.844c14.612-51.255 61.024-88.153 116.055-88.153 66.534 0 120.471 53.937 120.471 120.471 0 3.466-0.146 6.898-0.433 10.29l0.030-0.443zM515.313 792.998c-2.409-3.012-2.711-4.819-3.915-5.421l-184.32-67.765c-11.144-3.915-16.866 1.506-21.082 11.445-16.565 38.249-33.431 76.198-50.296 114.146-2.108 5.12-6.626 10.842-2.711 15.962s10.541 0 15.661 0l128.602-34.635c39.153-10.541 78.005-21.986 118.061-33.129zM476.461 548.442c-12.047-27.407-24.998-60.235-40.659-90.353-5.12-9.939-10.24 0-12.348 5.421-18.372 41.261-36.442 82.824-54.212 124.386 0 3.614-5.12 8.132 0 11.144 1.468 0.627 3.176 0.991 4.969 0.991s3.501-0.364 5.054-1.023l-0.085 0.032q44.574-16.264 90.353-33.431c3.614-2.409 9.336-4.819 6.927-17.167zM386.108 668.913l156.009 56.621c3.313 0 7.529 3.012 9.035 0 0.154-0.783 0.242-1.683 0.242-2.604 0-2.711-0.762-5.244-2.084-7.396l0.035 0.062c-11.144-25.901-22.588-51.501-33.732-77.402-1.518-6.661-7.39-11.557-14.406-11.557-2.676 0-5.186 0.712-7.35 1.958l0.072-0.038c-34.033 12.348-67.765 25.299-107.821 40.659z","M128.904 512c19.275-13.854 10.842-34.936 0-49.995l-3.313-5.12c-41.447-54.334-66.406-123.184-66.406-197.864 0-65.4 19.142-126.329 52.128-177.491l-0.781 1.294c4.406-7.238 8.777-13.431 13.517-19.314l-0.265 0.34c5.018-6.467 9.898-13.748 14.267-21.359l0.491-0.928c2.413-4.053 3.84-8.938 3.84-14.155s-1.427-10.102-3.911-14.284l0.071 0.129c-4.953-8.003-13.683-13.255-23.64-13.255-0.16 0-0.319 0.001-0.478 0.004l0.024-0c-12.047 0-20.179 7.228-30.118 18.974-52.529 64.803-84.334 148.269-84.334 239.163 0 0.625 0.002 1.25 0.005 1.875l-0-0.097c-0.001 0.392-0.002 0.857-0.002 1.322 0 89.155 30.503 171.185 81.642 236.225l-0.623-0.822q24.998 32.527 47.887 15.36z","M262.325 438.513c19.878-14.155 12.649-33.732 3.012-47.586-28.375-35.592-45.53-81.223-45.53-130.861s17.155-95.269 45.859-131.288l-0.329 0.427c6.325-8.734 18.071-30.118 0-44.875s-30.118-9.035-46.682 10.24c-34.876 45.065-56.555 101.901-58.418 163.718l-0.010 0.423c0.771 62.878 22.165 120.614 57.713 166.913l-0.49-0.664c8.734 10.842 26.202 26.805 44.875 13.553z","M744.809 512c-19.275-13.854-10.842-34.936 0-49.995l3.313-5.12c41.447-54.334 66.406-123.184 66.406-197.864 0-65.4-19.142-126.329-52.128-177.491l0.781 1.294c-3.915-6.927-8.734-12.951-12.951-18.974-5.295-6.524-10.277-13.811-14.643-21.493l-0.415-0.794c-2.413-4.053-3.84-8.938-3.84-14.155s1.427-10.102 3.911-14.284l-0.071 0.129c4.953-8.003 13.683-13.255 23.64-13.255 0.16 0 0.319 0.001 0.478 0.004l-0.024-0c12.047 0 20.179 7.228 30.118 18.974 52.529 64.803 84.334 148.269 84.334 239.163 0 0.625-0.002 1.25-0.005 1.875l0-0.097c0.001 0.392 0.002 0.857 0.002 1.322 0 89.155-30.503 171.185-81.642 236.225l0.623-0.822q-24.998 32.527-47.887 15.36z","M611.388 438.513c-19.878-14.155-12.649-33.732-3.012-47.586 28.375-35.592 45.53-81.223 45.53-130.861s-17.155-95.269-45.859-131.288l0.329 0.427c-6.325-8.734-18.372-30.118 0-44.875s30.118-9.035 46.682 10.24c34.77 45.093 56.348 101.935 58.118 163.738l0.009 0.403c-0.771 62.878-22.165 120.614-57.713 166.913l0.49-0.664c-8.433 10.842-25.901 26.805-44.574 13.553z"]}}')},5929:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"الأفلام","TYPE_series":"المسلسلات","TYPE_tv":"قنوات تلفاز","TYPE_channel":"القنوات","TYPE_other":"أخرى","TYPE_movie_PL":"أفلام","TYPE_series_PL":"مسلسلات","TYPE_tv_PL":"قنوات تلفاز","TYPE_channel_PL":"قنوات","TYPE_other_PL":"أخرى","TYPE_ALL":"الكل","VIDEO":"فيديو","BACK":"رجوع","MORE":"المزيد","DONE":"تم","COPY":"نسخ","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"وضع البث","CASTING_MODE_HLSV2":"الافتراضي","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"لايوجد ترميز","Discover":"أكتشف","Board":"الرئيسية","Library":"المكتبة","My Library":"مكتبتي","Calendar":"التقويم","NOTIFICATION_ONLINE":"أنت الأن متصل بالأنترنيت","NOTIFICATION_OFFLINE":"أنت الأن غير متصل بالأنترنيت","INTERNET_CONNECTION":"جاري الأتصال بالشكبة","STORAGE_FULL_TITLE":"تحذير : مساحة التخزين ممتلئة !","STORAGE_FULL_TEXT":"لن يتمكن Stremio من حفظ الإعدادات أو التفضيلات أو معلومات تسجيل الدخول الخاصة بك. ضع في اعتبارك إعادة تشغيل Stremio أو إعادة تثبيته.","SEARCH":"البحث","SEARCH_NO_RESULTS":"لم يتم العثور على نتائح","SEARCH_EXPLANATION_CONTENT":"البحث عن الأفلام والمسلسلات وقنوات يوتيوب والتلفزيون","SEARCH_EXPLANATION_PEOPLE":"ابحث عن الممثلين والمخرجين والكتاب","SEARCH_PASTE_LINKS":"قم بلصق روابط HTTP و Magnet","SEARCH_OR_PASTE_LINK":"أبحث او ألصق رابط","ADD_TO_LIB":"اضافة الى المكتبة","REMOVE_FROM_LIB":"ازالة من المكتبة","ADDED_TO_LIB":"تمت الاضافة الى المكتبة","REMOVED_FROM_LIB":"تمت الازالة من المكتبة","TRAILER":"الأعلان","WATCH_TRAILER":"مشاهدة الأعلان","WATCH_NOW":"مشاهدة الأن","SHOW":"عرض","SHOW_MOVIE":"شاهد الفيلم","WATCH_RANDOM":"مشاهدة عشوائية","IMDB_RATING":"تقييم IMDb","YEAR":"السنة","DIRECTOR":"المخرج","WRITER":"الكاتب","LEAD_ACTORS":"أبرز الممثلين","CAST":"طاقم العمل","CREW":"الفريق","SHOW_MORE_CAST":"عرض المزيد «","AIRED":"تم عرضه","SEASONS":"المواسم","GENRE":"النوع","CATALOG":"فهرس","SUMMARY":"ملخص","SHOW_MORE":"عرض المزيد","SIMILAR":"مشابه","UPCOMING":"قريبا","ENDED":"تم الانتهاء","DURATION":"مدة العرض","FEATURED":"متميز","METADATA":"البيانات الوصفية","CATEGORY":"الفئة","LINKS_GENRES":"النوع","LINKS_CAST":"الطاقم","LINKS_DIRECTORS":"المخرجون","SEARCH_VIDEOS":"البحث عن فيديوهات","SEARCH_PLACEHOLDER":"ابحث أو الصق رابط","ADDON":"أضافة","ADDONS":"أضافات","OFFICIAL":"رسمية","ADDONS_OFFICIAL":"إضافات Stremio الرسمية","ADDONS_POPULAR":"شائع في منطقتك","ADDON_FREE":"مجاني","ADDON_PEERED":"مشاهد","ADDON_SUBSCRIPTION":"أشتراك","ADDON_STREAM_GEORESTRICTED":"غير متاح في منطقتك","ADDON_STREAM_OFFLINECACHE":"ذاكرة التخزين المؤقت غير متصلة","ADDON_STREAM_LOCALFILE":"ملف محلي","SHARE_ADDON":"مشاركة الأضافة","AVAILABLE_STREAMS":"العروض \'الفيديوهات\' المتاحة","NO_STREAM":"لم يتم العثور على عروض او فيديوهات","ALL_ADDONS":"الكل","INSTALL_MORE_ADDONS":"لمزيد من العروض والفيديوهات ، يرجى تثبيت المزيد من الإضافات","STREAM_NOT_SUPPORTED":"العرض المحدد غير مدعوم على هذا النظام الأساسي.","ADDON_CATALOGUE":"عرض جميع الأضافات »","ADDON_CATALOGUE_MORE":"تثبيت أضافات","REPO_ADDED":"تمت إضافة المستودع","ADDON_REPO_EXIST_ERR":"هذه الأضافة موجودة بالفعل","ADDON_REPO_ERR":"حدث خطا اثناء اضافة المجموعة","ADDON_ADD_ERR":"حدث خطأ أثناء إضافة الاضافة","ERR_ADDON_PROTECTED":"لا يمكن إلغاء تثبيت الاضافة ، فهي محمية","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"حدث خطأ - ربما فشلت المصادقة","ERR_NOT_COLLECTION_URL":"رابط غير صالح","ERR_NOT_ADDON_URL":"ليس رابط لأضافة صالحة","ERR_DETECTFROMURL":"لم يتم العثور على أضافة / مجموعة في هذا الرابط","ADDON_DUPLICATE_WARNING":"تحذير : أضافة مكررة","ADDON_COLLECTION_SET_FAILED":"فشلت مزامنة الإضافات المثبتة إلى حسابك","SETTINGS_DATA_EXPORT":"تصدير بيانات المستخدم","ADDON_PULL_FAILED":"فشلت مزامنة الإضافات المثبتة إلى حسابك","REFRESH_ON_CLICK":" إضغط لإعادة تحميل","STILL_IN_THEATER":"متواجد في دور العرض","WATCH_IN_CINEMA":"شاهده في دار العرض القريبة منك","IN_THEATER":"حاليا في دور العرض","GET_TICKETS":"أحصل على تذاكر","UPCOMING_EPISODE":"الحلقة القادمة","UPCOMING_EPISODE_MESSAGE":"سيتم عرض هذه الحلقة في","MISSING_DATE_EPISODE":"تاريخ الحلقة غير متوفرة","MISSING_DATE_EPISODE_MESSAGE":"هذه الحلقة غالبا لم تعرض بعد","CHANNEL_NOT_SCRAPED":"لم يتم مراجعة هذه القناة بعد. <br> يرجى العودة بعد بضع دقائق.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"قم بإضافته إلى مكتبتك ليتم إعلامك بمجرد توفره.","GET_NOTIFIED_WHEN_AVAILABLE":"سيتم إخطارك بمجرد توفرها.","WARNING_STREAMING_SERVER":"تحذير: خادم البث المحلي غير موجود. البث من الملفات المحلية ، لن يكون YouTube و BitTorrent متاحين.","WARNING_STREAMING_SERVER_DISMISS":"تجاهل","WARNING_STREAMING_SERVER_LATER":"فيما بعد","DECODER_WARNING":"تحذير: قد لا يدعم جهازك هذا الفيديو. ضع في اعتبارك أن التشغيل قد يكون بطيئًا.","PLAYER_ERROR":"خطأ في المشغل","PLAYER_ERROR_LOOKSLIKE":"يبدو أنه","PLAYER_ORIENTATION":"اتجاه المشغل","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"مقفل","PLAYER_ORIENTATION_SENSOR_SHORT":"المستشعر","PLAYER_ORIENTATION_LANDSCAPE":"اتجاه المشغل مقفل في الوضع الأفقي","PLAYER_ORIENTATION_SENSOR":"توجيه المشغل تلقائيًا (مستشعر)","PLAYER_PLAYBACK_SPEED":"سرعة التشغيل","PLAYER_PLAYBACK_ERROR":"خطأ في التشغيل، يرجى المحاولة مرة أخرى","PLAYER_PLAYBACK_ERROR_UNKNOWN":"خطأ غير معروف","PLAYER_PLAYBACK_ERROR_DEFAULT":"آسف، لا يمكن تشغيل هذا الفيديو بإستخدام {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"لغات الترجمة","PLAYER_SUBTITLES_VARIANTS":"انواع الترجمة","PLAYER_SUBTITLES_SETTINGS":"إعدادات الترجمة","PLAYER_SUBTITLES_DISABLED":"الترجمة معطلة","PLAYER_SUBTITLES_VERTICAL_POSIITON":"الاتجاه العمودي","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"تشغيل","PLAYER_PAUSE":"ايقاف","PLAYER_NEXT_VIDEO":"الفيديو التالي","PLAYER_MUTE":"كتم","PLAYER_UNMUTE":"إلغاء الكتم","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"مباشر","PLAYER_NEXT_VIDEO_TITLE":"الفيديو التالي","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"إغلاق","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"شاهد الان","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"يتم البث من","CASTING_TO":"ارسال البث ل","NETWORK_STATUS":"حالة الشبكة","STREAM_SPEED":"سرعة البث : ","STREAM_BUFFERED":"مخزن:","PEERS_INFO":"معلومات الأقران (Peers)","PEERS_ACTIVE":"فعال :","PEERS_CONNECTED":"متصل :","PEERS_WAITING":"في الأنتطار:","TRANSCODING_WARNING":"تحذير: تحويل ترميز الفيديو.","STREAM_LOADING":"جاري التحميل...","PLAYING_LOCAL":"يتم التشغيل من ملف محلي","PLAYING_CACHE":"يتم التشغيل من ملفات التخزين السابقة (Cache)","WRONG_SUBS":"ترجمة خاطئة ؟","ERR_SUBS_LOADING_TITLE":"حدث خطأ أثناء تحميل الترجمة","ERR_SUBS_LOADING":"فشل تحميل الترجمة: قد يكون هذا مشكلة في الملحق الذي تستخدمه أو في اتصال الشبكة","WARN_FOLLOWING_SUB_ADDONS_FAILED":"فشل في تحميل الترجمة من الإضافات التالية","ERR_CASTING_UPDATE_TITLE":"تعذر تحديث معلومات جهاز الإرسال: قد يكون خادم البث غير متصل بالإنترنت","CHOOSE_DEVICE":"اختر جهازًا للمشاهدة عليه","NO_CAST_DEVICES":"لا يوجد أجهزة عرض متاحة.","NO_SETTINGS":"لا يوجد إعدادات متاحة.","PHONE_TABLET":"هاتف / جهاز لوحي","SUBTITLES":"الترجمات","SUBTITLES_CHANGE":"قم بتغيير ترجمات ل ","SUBTITLES_CHANGE_NONE":"لا توجد ترجمات أخرى لهذه اللغة ، معذرة.","SUBTITLES_CHANGE_ACIVE":"الترجمات الحالية #{{subtitlesDialog.activeIdx + 1}} فعالة. انقر \\"متابعة\\" لتفعيل الترجمات #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"بدلا من ذلك,","SUBTITLES_ADJUST_DELAY":"ضبط تأخير الترجمة:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"أو استخدم مفاتيح <span>G</span> / <span>H</span> أثناء التشغيل للضبط.","SUBTITLES_ADJUST_DELAY_TIP":"نصيحة: يمكنك استخدام مفاتيح <span>G</span> / <span>H</span> أثناء التشغيل للضبط.","SUBTITLES_DELAY":"تأخير الترجمة:","SUBTITLES_LOADING":"جارٍ تحميل الترجمات ...","SUBTITLES_UNAVAILABLE":"لا توجد ترجمات متاحة.","SUBTITLES_DISABLED":"معطل","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"اللغة الإفتراضية","DEFAULT_SECONDARY_LANGUAGE":"اللغة الثانوية الافتراضية","SEASON":"موسم","EPISODE":"حلقة","SPECIAL":"حلقات خاصة","SORT":"ترتيب","SORT_BY":"ترتيب حسب","FILTER":"تصفية","SORT_TRENDING":"الشائع","SORT_RECENT":"مؤخرا","SORT_ALPHABET":"من a الى z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"التقييم","SORT_WATCHED":"تمت المشاهدة","SORT_YEAR":"عام","SELECT_TYPE":"اختر صنف","SELECT_SORT":"حدد الترتيب","SELECT_CATALOG":"حدد الكتالوج","SELECT_GENRE":"اختر النوع","SORT_LASTWATCHED":"حسب آخر مشاهدة","SORT_NAME":"بالاسم","SORT_TIMESWATCHED":"حسب مرات المشاهدة","New for You":"جديد من أجلك","New Episodes":"حلقات جديدة","New Videos":"فيديوهات جديدة","Recommendations":"المقترحة","LIBRARY_RESUME":"تابع","LIBRARY_PLAY":"تشغيل","LIBRARY_DETAILS":"التفاصيل","LIBRARY_RESUME_DISMISS":"انهاء","LIBRARY_CLEAR_PROGRESS":"مسح التقدم","LIBRARY_REMOVE":"حذف","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"متميز","DISCOVER_TOP":"الأعلى","DISCOVER_OSCAR":"حاصلة على جائزة الأوسكار","DISCOVER_WARNING_TITLE":"عذرا !","DISCOVER_EMPTY_CATALOG":"هذه الاضافة لاتحتوي على محتوى","DISCOVER_ADULT_WARNING":"هذا المحتوى مخصص للبالغين عمرك اكبر من 18 ؟","DISCOVER_NOADDON_WARNING":"تحذير: لا يوجد ملحق Stremio نشط لهذا النوع. إظهار العناصر المحفوظة ، لن يتم تحديث أي شيء هنا.","DISCOVER_LOAD_ERR":"لم يتم تحميل المحتوى ، حدث خطأ.","DISCOVER_ADDON_UNINSTALLED":"لم يعد هذا المحتوى متاحًا ، ربما تكون قد قمت بإلغاء تثبيت الأضافة.","UNINSTALL_THIS_ADDON":"الغاء تثبيت الأضافة","ERR_ADDON_NOT_INSTALLED":"هذه الاضافه غير مثبته، هل تريد تثبيتها الان؟","DETAIL_RECEIVE_NOTIF_SERIES":"تلقي أشعار في حال وجود حلقات جديدة","DETAIL_RECEIVE_NOTIF_VIDEOS":"تلقي أشعار في حال وجود فيديوهات جديدة","SIDEBAR_SHOW_STREAMS":"إظهار العروض","RELAUNCH":"إعادة التشغيل الأن!","UPGRADE":"نسخة جديدة متاحة! قم بالترقية إلى أحدث إصدار من Stremio","RELOAD_UI":"إعادة تحميل الواجهة الأساسية","MANUAL_UPDATE_TITLE":"تحديث نسخة جديدة من Stremio","MANUAL_UPDATE_LINE1":".أنت تستخدم نسخه قديم من Stremio و هو غير موصى به ","MANUAL_UPDATE_LINE2":"يرجى تحديث البرنامج في اقرب وقت ممكن.","BUTTON_UPDATE_LATTER":"ليس الأن","BUTTON_UPDATE_NOW":"تحديث الأن","ANONYMOUS_USER":"مستخدم مجهول","DONT_HAVE_ACC":"ليس لديك حساب؟","HAVE_ACC":"هل لديك حساب؟","PASSWORD":"كلمة السر","PASSWORD_CONFIRM":"تأكيد كلمة السر","EMAIL":"البريد الألكتروني","FB_LOGIN":"متابعة بأستخدام حساب فيسبوك","FB_NOTHINGSHARED":"لن يتم مشاركة أي شي بدون موافقتك","FB_NOPOST":"لن نقوم بنشر أي شي بالنيابة عنك","OR":"أو","I_ACCEPT":"أنا أقبل","I_ACCEPT_BY_CLICKING":"بالنقر فوق الزر أعلاه ، أشهد بأنني أقبل ","TOS":"الأحكام والشروط","MUST_ACCEPT_TERMS":"يجب عليك قبول الشروط","PASSWORDS_NOMATCH":"كلمات السر غير متطابقة","SIGN_UP":"أنشاء حساب","SIGN_UP_EMAIL":"أنشاء حساب بأستخدام البريد الألكتروني","CLICK_TO_SIGN_UP":"أنقر هنا لأنشاء حساب","LOG_IN":"تسجيل الدخول","LOG_OUT":"تسجيل الخروج","EXIT_FULLSCREEN":"خروج من وضع ملء الشاشة","ENTER_FULLSCREEN":"تشغيل وضع ملء الشاشة","PLAY_URL_MAGNET_LINK":" تشغيل رابط ال URL/Magnet","HELP_FEEDBACK":"المساعدة و ملاحظة","TERMS_OF_SERVICE":"الأحكام والشروط","PRIVACY_POLICY":"سياسة الخصوصية","ABOUT_STREMIO":"عن Stremio","USER_PANEL":"لوحة التحكم","LOGIN_LABEL":"تسجيل الدخول","GUEST_LOGIN":"تسجيل الدخول كزائر","GUEST_LOGIN_NOTICE":"لا يوصى بتسجيل دخول كزائر. يسمح استخدام تسجيل الدخول المنتظم لـ Stremio بمزامنة مكتبتك ، وتلقي إعلامات للمسلسلات / القنوات المفضلة. هل انت متأكد انك تريد المتابعة؟","GUEST_LOGIN_NOTICE_2":"لا يوصى بتسجيل دخول كزائر. يسمح استخدام تسجيل الدخول المنتظم لـ Stremio بمزامنة مكتبتك ، وتلقي إعلامات للمسلسلات / القنوات المفضلة. هل انت متأكد انك تريد المتابعة؟","CLICK_HERE":"أنقر هنا","WRONG_PASSWORD":"بريد إلكتروني أو كلمة السر خاطئة. في حالة نسيان كلمة السر الخاصة بك ، ","SET_A_PASS":"وضع كلمة سر","RESET_PASSWORD":"أستعادة كلمة السر","FORGOT_PASSWORD":"نسيت كلمة السر ؟","EMAIL_USED_WITH_FB":"تم استخدام هذا البريد الإلكتروني مع تسجيل الدخول إلى Facebook.","INVALID_EMAIL":"رجاء قم بإدخال بريد الكتروني صحيح","INVALID_PASSWORD":"الرجاء إدخال كلمة السر الصحيحة","CONN_ERR":"خطأ في الاتصال - يرجى المحاولة مرة أخرى لاحقًا. إذا استمر ذلك ، فقم بتعطيل جدران الحماية / برنامج مكافحة الفيروسات (خاصة Bitdefender).","IMPORT_FROM_GUEST":"استيراد مكتبتك من حساب الزائر الخاص بك","RECEIVE_UPDATES_EMAIL":"تلقي تحديثات البريد الإلكتروني الخاص بك من Stremio","LOGIN_FAILED":"لم ينجح تسجيل الدخول","SIGNUP_FAILED":"لم ينجح أنشاء حساب","SEARCH_FAILED":"لم ينجح البحث","EMAIL_USED":"تم أستخدام هذا البريد الألكتروني مسبقا","WAITING_FB_LOGIN":"جاري تسجيل الدخول ب أستخدام فيسبوك ...","EXTERNAL_PLAYER_TITLE":"تشغيل باستخدام المشغل الخارجي","EXTERNAL_REMEMBER_PLAYER":"هل ترغب في تذكر خيارك","EXTERNAL_ALWAYS_PLAY":"نعم","EXTERNAL_ONLY_ONCE":"لا","BEST_FIT":"الأنسب","FIT_SCREEN":"تناسب الشاشة","FILL":"تعبئة","16:9":"16:9","4:3":"4:3","Original":"اصلي","INTRO_TASTE":"أخبرنا بما تحبه","INTRO_TASTE_LONG":"أخبرنا بما تود مشاهدته","INTRO_TASTE_PICK":"اختر {{interestsRemaining}} أهتمامات","INTRO_TASTE_PICK_MORE":"اختر {{interestsRemaining}} أهتمامات أخرى","INTRO_TASTE_HELP_US":"ساعدنا في معرفة المزيد عنك.","INTRO_TASTE_CHOOSE_THESE":"اختر بعضًا من هذه:","INTRO_TASTE_CHOOSE_MIN":"اختر 3 فئات على الأقل","INTRO_TASTE_CHOOSE_MIN_ERR":"عليك أن تختار 3 فئات على الأقل!","INTRO_TASTE_LIFESTYLE":"أسلوب الحياة","INTRO_TASTE_SPORTS":"الرياضة","INTRO_TASTE_FOOD_HEALTH":"الطعام و الصحة","INTRO_TASTE_BEAUTY_FASHION":"الجمال و الموضة","INTRO_TASTE_NEWS":"الأخبار","INTRO_TASTE_GAMING":"الألعاب","INTRO_TASTE_SCIENCE_EDU":"التعلم و العلوم","INTRO_TASTE_MUSIC":"الموسيقى","INTRO_TASTE_TRAVEL":"السفر","INTRO_TASTE_LATE_NIGHT":"برامج أخر الليل","INTRO_TASTE_REALITY":"الواقع","INTRO_TASTE_COMEDY":"الكوميديا","INTRO_TASTE_DIY":"كيف تصنعها بنفسك","INTRO_TASTE_TECH":"التقنية","INTRO_TASTE_CINEMA":"السينيما","ADDON_NOT_SUPPORTED":"الأضافة المحددة غير مدعومة على هذا النظام الأساسي.","ADDON_DISCLAIMER":"سيخضع استخدام أدوات الطرف الثالث دائمًا لمسؤوليتك والقانون الحاكم للولاية القضائية التي توجد بها.","ADDON_ACTIVATE":"تفعيل هذه الأضافة","ADDON_REPO_ADD":"رابط الأضافة","ADDON_ADD":"أضافة","ADD_ADDON":"أضافة ملحق","ADD_ADDON_DESCRIPTION":"يمكنك إضافة ملحق عبر رابط خارجي ، والذي سيظهر ضمن الوظائف الإضافية المثبتة.","PASTE_ADDON_URL":"لصق عنوان الملحق","WHATS_NEW":"ما الجديد","BUTTON_CONTINUE":"متابعة","BUTTON_ACTIVATE":"تفعيل","BUTTON_ACTIVATED":"مفعلة","BUTTON_CANCEL":"ألغاء","BUTTON_SUBMIT":"تقديم","BUTTON_DISMISS_ALL":"أنهاء الجميع","BUTTON_VIEW_ALL":"عرض الكل","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"شفاف","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"مكتبتك تبدو فارغة. اكتشف مدى فائدتها :) ","HOW_START":"إليك كيف يمكنك البدء:","LIB_EMPTY_CAL":"يعرض التقويم الخاص بك المسلسلات في مكتبتك.","HOW_START_CAL":"إليك كيف يمكنك إضافة مسلسل:","LIB_EMPTY_BOARD":"يظهر المجلس الإخطارات و. التوصيات المتعلقة بمكتبتك.","HOW_START_BOARD_WAIT":"من فضلك ، أضف بعض المسلسلات أو القنوات إلى مكتبتك ، امنحنا بضع دقائق للمعالجة :)","HOW_START_BOARD":"إليك كيفية إضافة المسلسلات والأفلام إليها:","IMPORT_FB":"استيراد الأشياء التي تريدها من <span>Facebook</span>","IMPORT_TRAKT":"قم باستيراد مكتبة الوسائط الخاصة بك من <span>Trakt</span>","IMPORT_DISCOVER":"اعثر على أشياء شيقة من <span>الأكتشاف</span>","IMPORT_DISK":"قم باستيراد الأفلام أو العروض الموجودة لديك على <span> القرص المحلي </ span>","PLEASE_CREATE_ACC":"يرجى <u> إنشاء حساب </ u> لتمكين مزامنة المكتبة و لوحة التحكم.","IMPORT_DISCOVER_SIGNUP":"اشترك وابحث عن أشياء ممتعة من <span> الأكتشاف </span>","IMPORT_DISK_SIGNUP":"اشترك واستورد الأفلام أو العروض التي لديك على <span> القرص المحلي </ span>","LIB_EMPTY_CLOUD":"مكتبة التخزين السحابي","LIB_EMPTY_CLOUD_DESC":"تمت مزامنة مكتبة السحابة الشخصية على جميع الأجهزة","LIB_EMPTY_EARLY":"بداية الأطلاق","LIB_EMPTY_EARLY_DESC":"تلقي الأشعارات للحلقات الجديدة","LIB_EMPTY_PERSONAL":"شخصي","LIB_EMPTY_PERSONAL_DESC":"احصل على مقترحات شخصية","LIB_EMPTY_CALENDAR_DESC":"قم ب إنشاء تقويم شخصي للمشاهدة","LIB_EMPTY_ALL":"اشترك للحصول على كل ما يلي:","LIB_EMPTY_BEST":"قم بالتسجيل للحصول على أفضل ما في Stremio","LIB_EMPTY_OTHER":"قم بالتسجيل لتمكين التقويم والميزات الرائعة الأخرى","CALENDAR_ADDED":"تمت إضافة تقويم Stremio إلى تقويم سطح المكتب الافتراضي الخاص بك.","CALENDAR_ADDED_MSG":"إذا لم يفلح ذلك ، يرجى إضافة عنوان URL هذا إلى تطبيق التقويم يدويًا","TRAKT_EXPIRED":"انتهت صلاحية مصادقة Trakt ، يرجى الانتقال إلى الإعدادات وإعادة المصادقة","TRAKT_REQUIRES_LOGIN":"خطأ Trakt","TRAKT_REQUIRES_LOGIN_MSG":"تحتاج إلى تسجيل الدخول","SETTINGS_LABEL":"الأعدادات","SETTINGS_NAV_GENERAL":"عام","SETTINGS_NAV_PLAYER":"المشغل","SETTINGS_NAV_STREAMING":"بث","SETTINGS_NAV_SHORTCUTS":"اختصارات","SETTINGS_SHORTCUT_RELOAD_APP":"إعادة تحميل التطبيق","SETTINGS_SHORTCUT_OPEN_SETTINGS":"فتح الاعدادات","SETTINGS_SHORTCUT_SWITCH_TABS":"تبديل التبويبات","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"الانتقال من خلال علامات التبويب إلى الأمام","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"الانتقال من خلال علامات التبويب إلى الخلف","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"تنقل بين القوائم","SETTINGS_SHORTCUT_GO_TO_SEARCH":"اذهب إلى البحث","SETTINGS_SHORTCUT_EXIT_BACK":"الخروج / العودة","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"تبديل قائمة سرعة التشغيل","SETTINGS_SHORTCUT_MENU_VIDEOS":"تبديل قائمة مقاطع الفيديو","SETTINGS_SHORTCUT_MENU_SUBTITLES":"تبديل قائمة الترجمة","SETTINGS_SHORTCUT_MENU_INFO":"تبديل قائمة المعلومات","SETTINGS_SHORTCUT_FULLSCREEN":"تفعيل وضع ملء الشاشة","SETTINGS_SHORTCUT_SHOW_CONTROLS":"عرض ادوات التحكم","SETTINGS_SHORTCUT_PLAY_PAUSE":"اتشغيل / ايقاف","SETTINGS_SHORTCUT_VOLUME_UP":"زيادة الصوت","SETTINGS_SHORTCUT_VOLUME_DOWN":"انقاص الصوت","SETTINGS_SHORTCUT_SEEK_NEXT":"ابحث عن التالي","SETTINGS_SHORTCUT_SEEK_PREV":"ابحث عن السابق","SETTINGS_SHORTCUT_SEEK_BACKWARD":"التحريك للخلف","SETTINGS_SHORTCUT_SEEK_FORWARD":"التحريك للامام","SETTINGS_SHORTCUT_PLAY_NEXT":"عرض التالي","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"تكبير خط الترجمة","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"تصغير خط الترجمة","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"زيادة مدة تأخير الترجمة","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"انقاص مدة تأخير الترجمة","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"تفعيل / تعطيل الشريط الجانبي","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"المصادقة","SETTINGS_FACEBOOK_IMPORT":"استيراد","SETTINGS_CALENDAR_SUBSCRIBE":"اشتراك","SETTINGS_INTERFACE_LANGUAGE":"لغة الواجهة","SETTINGS_LAUNCH_STARTUP":"ابدأ عند بدء التشغيل","SETTINGS_VLC_DEFAULT":"تشغيل عن طريق VLC","SETTINGS_UI_LANGUAGE":"لغة واجهة المستخدم","SETTINGS_FULLSCREEN_EXIT":"مفتاح Escape للخروج من وضع ملء الشاشة ","SETTINGS_GAMEPAD":"تفعيل دعم gamepad","SETTINGS_CLOSE_WINDOW":"أغلق التطبيق عند إغلاق النافذة","SETTINGS_SUBTITLES_LANGUAGE":"لغة الترجمة الافتراضية","SETTINGS_SUBTITLES_SIZE":"حجم خط الترجمة الافتراضي","SETTINGS_SUBTITLES_BACKGROUND":"خلفية الترجمة","SETTINGS_SUBTITLES_COLOR":"لون خط الترجمة","SETTINGS_SUBTITLES_COLOR_OUTLINE":"لون خط الترجمة الخارجي","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"لون خلفية الترجمة","SETTINGS_SEEK_KEY":"الاسهم لتقديم الوقت","SETTINGS_SEEK_KEY_SHIFT":"تتقدم مفاتيح الأسهم الوقت عندما يكون مفتاح Shift مضغوطًا","SETTINGS_REWIND_FAST_FORWARD_DURATION":"مدة التقديم او الإرجاع","SETTINGS_BINGE":"تشغيل تلقائي للحلقة القادمة","SETTINGS_NEXT_VIDEO":"عرض إشعار بداية الحلقة التالية","SETTINGS_NEXT_VIDEO_TRIGGER":"عرض إشعار الحلقة التالية لمده:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"مدة انبثاق الفيديو التالي","SETTINGS_PLAY_IN_BACKGROUND":"تشغيل في الخلفية","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"تشغيل في المشغل الخارجي","SETTINGS_RESIZE":"نافذة تغيير الحجم التلقائي قبل التشغيل","SETTINGS_OVERRIDE_SERVER":"تجاوز عنوان URL لخادم البث (متقدم)","SETTINGS_SERVER_URL":"عنوان رابط خادم البث: ","SETTINGS_SERVER_AVAILABLE":"خادم البث متاح.","SETTINGS_SERVER_UNAVAILABLE":"خادم البث غير متاح.","SETTINGS_SERVER_STATUS_ONLINE":"متصل","SETTINGS_SERVER_STATUS_ERROR":"خطأ","SETTINGS_SERVER_CONFIGURE_TITLE":"تكوين عنوان لخادم البث","SETTINGS_SERVER_CONFIGURE_INPUT":"أدخل عنوان لخادم البث","SETTINGS_SERVER_CACHE_SIZE":"حجم التخزين المؤقت","SETTINGS_SERVER_TORRENT_PROFILE":"ملف التورنت التعريفي","SETTINGS_HTTPS_ENDPOINT":"نقطة نهاية دفق HTTPS: ","SETTINGS_USE_BETA":"استخدم دائمًا أحدث إصدار بيتا","SETTINGS_IMPORT_FB":"استيراد من فيسبوك","SETTINGS_IMPORT_DISK":"استيراد من القرص الصلب","SETTINGS_IMPORT_TRAKT":"استيراد من Trakt","SETTINGS_PAUSE_MINIMIZED":"وقف الفيديو عند تصغير النافذة","SETTINGS_HWDEC":"فك تسريع الأجهزة","SETTINGS_BACKGROUND":"تشغيل في الخلفية","SETTINGS_SUBSCRIBE_CALENDAR":"الأشتراك بالتقويم","SETTINGS_REQ_EXPORT":"طلب تصدير الداتا","SETTINGS_ACC_DELETE":"طلب حذف حسابك","SETTINGS_CHANGE_PASSWORD":"تغير كلمة السر","SETTINGS_TOS":"الشروط و الأحكام","SETTINGS_SUPPORT":"تواصل مع الدعم الفني","SETTING_LANGUAGE":"اللغة","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"تسجيل الخروج من Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"امسح رمز الاستجابة السريعة QR لفتح جهاز التحكم عن بعد","SETTINGS_DESKTOP_NOTIFICATIONS":"اشعارات سطح المكتب","SETTINGS_DATA_SAVER":"المحافظة على البيانات","SETTINGS_LANGUAGE_INTERFACE":"واجهة المستخدم","SETTINGS_LANGUAGE_SUBS":"الترجمة الافتراضية","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"اختيار مسار الصوت تلقائيا","SETTINGS_DEFAULT_AUDIO_TRACK":"مسار الصوت المبدئي","SETTINGS_ACCOUNT":"الحساب","SETTINGS_VERSION":"النسخة","SETTINGS_MPV_WINDOW":"بدء المشغل في صفحة جديدة (متقدم)","SETTINGS_PLAY_IN_EXTERNAL":"تشغيل الفيديو دائماً باستخدام مشغل خارجي","SETTINGS_STORAGE_BUTTON":"مسح التخزين المحلي","SETTINGS_STORAGE_MODAL_TITLE":"هل انت متأكد؟","SETTINGS_STORAGE_MODAL_MESSAGE":"هذا سيقوم بمسح التخزين المحلي وتسجيل خروجك.","SETTINGS_HWDEC_PICKER":"اختر إعداد فك تسريع الأجهزة","SETTINGS_HW_AUTOMATIC":"تلقائي","SETTINGS_HW_DISABLED":"غير مفغل","SETTINGS_HW_ACCELERATED":"تسريع فك التشفير","SETTINGS_HW_FULL":"تسريع كامل","SETTINGS_HW_LEGACY":"قديم","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"الصوت","SUBSPICKER_SUBTITLES":"ملحق الترجمة","SUBSPICKER_BLACK_BACKGROUND":"استخدم لون اسود للخلفية","SUBSPICKER_VERTICAL_OFFSET":"المكان العمودي","SUBSPICKER_SIZE":"الحجم","SUBSPICKER_DELAY":"التاخير","SUBSPICKER_EMBEDDED_SUBS":"ترجمات مدمجة","MOBILE_PRIVACY_POLICY":"سياسة الخصوصية","MOBILE_CRASH_REPORTING":"تقرير الاخطاء","MOBILE_ZOOM_TO_FILL":"تكبير لتعبئة الشاشة","MOBILE_PASSTHROUGH":"إخراج الصوت الرقمي (العبور)","MOBILE_RUN_LOW_BATTERY":"تشغيل على بطارية منخفضة","MOBILE_RUN_FOREGROUND":"تشغيل كخدمة في الخلفية","MOBILE_PERFORMANCE":"الأداء والاستقرار","MOBILE_SERVER_ONLINE":"متصل","MOBILE_SERVER_OFFLINE":"غير متصل","MOBILE_QR_EXPIRES":"تنتهي صلاحية رمز الاستجابة السريعة في ","MOBILE_LOG_INTO":"قم بتسجيل الدخول إلى حساب Stremio الخاص بك ","MOBILE_SCAN_QR":"امسح رمز الاستجابة السريعة أعلاه أو انتقل إلى ","MOBILE_LINK_ACCOUNT":"ربط حساب","MOBILE_SPEEDPICKER_CANCEL":"إلغاء","MOBILE_SPEEDPICKER_LABEL":"اختيار سرعة التشغيل","MOBILE_EMPTY_LIBRARY":"المكتبة الخاصه بك فارغة","MOBILE_NO_ADDON_ACTIVE":"لا يوجد ملحق Stremio نشط لهذا النوع.","MOBILE_ORGANIZER_WARNING":"يوفر تطبيق Stremio Organizer وظائف محدودة. للحصول على قائمة التدفقات القابلة للتشغيل وتجربة Stremio الكاملة ، استخدم Stremio على سطح المكتب.","MOBILE_ADDON_LOADING":"قيد التحميل","MOBILE_ADDONS_LOADING":"الملحقات قيد التحميل","MOBILE_ADDON":"ملحق","MOBILE_CONFIGURE_ADDON":"تكوين الملحق الخاص بك","MOBILE_CONFIGURE_ADDON_LABEL":"تكوين الملحق","MOBILE_ORGANIZER_ADDONS_WARNING":"يوفر تطبيق Stremio Organizer مجموعة محدودة من الوظائف الإضافية. للحصول على تجربة Stremio الكاملة ، استخدم Stremio على سطح المكتب.","MOBILE_DISCONNECT":"إلغاء الاتصال","MOBILE_LOOKING_FOR_DEVICES":"البحث عن اجهزه...","MOBILE_CAST_TO":"بث الى","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"تشغيل","NAVIGATION_OFF":"ايقاف","MARKETING_AGREE":"أوافق على تلقي رسائل تسويقية من Stremio","QUIT":"خروج","CONNECTED":"متصل","AUTHENTICATE":"المصادقة","CACHING":"تخزين مؤقت","SETTINGS_CACHING_DRIVE":"محرك التخزين المؤقت","ENABLE_LOCAL_FILES_ADDON":"تمكين الملحق المحلي للملفات (يتطلب إعادة التشغيل)","LOCAL_ADDON_NOT_ENABLED":"لم يتم تمكين الملحق المحلي. انقر هنا للذهاب إلى الإعدادات وتمكينه","ENABLE_REMOTE_HTTPS_CONN":"قم بتمكين اتصالات HTTPS البعيدة","TORRENT_PROFILE":"ملف التورنت التعريفي","DATA_CACHING":"تخزين مؤقت البيانات","MAGNET_PARSING":"معالجة رابط تورنيت","January":"كانون الثاني (يناير)","February":"شباط (فبراير)","March":"آذار (مارس)","April":"نيسان (ابريل)","May":"أيار (مايو)","June":"حزيران (يونيو)","July":"تموز (يوليو)","August":"آب (أغسطس)","September":"أيلول (سبتمبر)","October":"تشرين الأول (أكتوبر)","November":"تشرين الثاني (نوفمبر)","December":"كانون الأول (ديسمبر)","Monday":"الأثنين","Tuesday":"الثلاثاء","Wednesday":"الأربعاء","Thursday":"الخميس","Friday":"الجمعة","Saturday":"السبت","Sunday":"الاحد","Action":"حركة","Comedy":"كوميديا","War":"حرب","Family":"عائلة","Animation":"انيمي","Adventure":"مغامرة","Fantasy":"خيال","Crime":"جريمة","Mystery":"غموض","Romance":"رومنسي","Drama":"دراما","Horror":"رعب","Thriller":"القصة المثيرة","Sci-Fi":"خيال علمي","Music":"موسيقى","Biography":"سيرة شخصية","Documentary":"وثائقي","Sport":"رياضة","Musical":"موسيقي","Western":"افلام الغرب الامريكي","Film-Noir":"ابيض واسود","News":"اخبار","History":"تاريخ","Game-Show":"عرض اللعبة","Reality-TV":"تلفاز واقعي","Talk-Show":"برنامج حواري","Film & Entertainment":"فيلم وترفيه","Gaming":"العاب","From TV":"من التلفاز","Lifestyle":"أسلوب الحياة","Science & Education":"علوم وتعلم","Cooking & Health":"الطبخ و الصحة","Beauty & Fashion":"الجمال و الموضة","Sports":"الرياضات","News & Politics":"سياسة واخبار","How-to & DIY":"كيف يمكنك عملها بنفسك","Tech":"تقنية","Automotive":"السيارات","Causes & Non-Profits":"الأسباب وغير الربحية","Movies":"افلام","Uk Live Tv":"تلفاز مباشر المملكة المتحدة","Fashion":"الموضة","Business News Radio":"راديو اخبار الاعمال","Business Tv":"تلفاز اعمال","Cars & Auto":"سيارات و محركات","Comedy Radio":"راديو كوميديا","Lifestyle Radio":"اسلوب حياة راديو","News Tv":"تلفاز اخباري","Food And Wine":"طعام ونبيذ","Latino Tv":"تلفاز لاتيني","Shopping Tv":"تلفاز تسوق","Religion":"دين","Kids":"أطفال","Body & Soul":"الجسد و الروح","Education":"تعليم","Indian Tv":"تلفاز هندي","Extreme Sports":"رياضات عنيفة","Middle Eastern Tv":"تلفاز شرق متوسط ","Celebrity Tv":"تلفاز مشاهير","Science Tv":"تلفاز علمي","Bikini babe":"فاتنة بيكيني","Outdoors":"خارج المنزل","German Tv":"تلفاز الماني","French Tv":"تلفاز فرنسي","Italian Tv":"تلفاز ايطالي","Gamer Tv":"تلفاز للالعاب","Travel":"السفر","Asian Tv":"تلفاز اسيوي","Entertainment":"متعة المشاهدة","News Radio":"راديو اخبار","Music Radio":"راديو موسيقى","Language Learning":"تعليم اللغات","Science Radio":"راديو علمي","Tech Radio":"راديو للتقنية","Science & Technology Vod":"علوم وتقنية فيديوهات حسب الطلب","new video":"فيديو جديد","new episode":"حلقة جديدة","new movie":"فيلم جديد","recommended":"مقترح","we recommend":"قترح لك","offer of the day":"عرض اليوم","news":"اخبار","music video":"فيديو موسيقي","CTX_SHOW_HOTKEYS":"اضهار المفاتيح الساخنة","CTX_DISMISS_NOTIF":"اخفاء الاشعار","CTX_DISMISS_ALL":"اخفاء الجميع","CTX_SHARE":"مشاركة","CTX_COPY_SHARE_LINK":"نسخ رابط المشاركة","CTX_COPY_MAGNET_LINK":"نسخ رابط magnet","CTX_COPY_STREAM_LINK":"نسخ رابط البث","CTX_DOWNLOAD_VIDEO":"تحميل هذا الفيديو","CTX_DOWNLOAD_SUBS":"تحميل الترجمات","CTX_VIEW_ON_YOUTUBE":"المشاهدة على YouTube","CTX_SHOW":"عرض","CTX_PLAY":"تشغيل","CTX_PLAY_IN":"تشغيل في","CTX_PLAY_ON":"تشغيل على","CTX_WATCH_ON":"مشاهدة على","CTX_WATCH":"مشاهدة","CTX_WATCHED":"تمت المشاهدة","CTX_WATCH_BEGINNING":"مشاهدة من البداية","CTX_WATCH_MOBILE":"مشاهدة على الجهاز المحمول","CTX_REWIND":"اعادة التشغيل من البداية","CTX_MARK_WATCHED":"تعليمه ك تمت مشاهدته","CTX_MARK_NON_WATCHED":"تعليمه غير مشاهد","CTX_MARK_UNWATCHED":"التعليم على أنه لم تتم مشاهدته","CTX_MARK_REST":"ضع علامة على أنها شاهدت","CTX_UNMARK_REST":"ضع علامة على أنها شاهدت","CTX_RECEIVE_NEW_NOTIF":"تلقى اشعارات جديد","CTX_REMOVE_CACHE":"حذف من التخزين المؤقت","CTX_REMOVE_CACHE_EP":"إزالة الحلقة من ذاكرة التخزين المؤقت","CTX_OPEN_CONTAINING":"افتح محتوى المجلد","CTX_REMOVE":"ازالة من المكتبة","CTX_AVAILABLE_OFFLINE":"متوفر بدون اتصال","CTX_PAUSED":"ايقاف","CTX_ALWAYS_ON_TOP":"دائما فوق التطبيقات الاخرى","CTX_FULLSCREEN":"شاشة كاملة","CTX_WRONG_SUBS":"ترجمة خاطئة ؟","CTX_REPORT_ISSUES":"تبليغ عن مشكلة","CTX_COPY":"نسخ","CTX_PASTE":"لصق","CTX_CLEAR":"مسح","CTX_CLEAR_RECENT_SEARCHES":"مسح اخر عمليات البحث","HELLO_THERE":"مرحبا بك","HOPE_YOU_ENJOY":"نأمل أن تستمتع بـ Stremio وهو أحد تطبيقاتك المفضلة بالفعل!","WHO_ARE_WE":"من نحن؟ نحن الفريق الذي يقف وراء ذلك - رجلان يعملان بجد كل يوم على مدار السنوات الثلاث الماضية لجعل هذا المنتج أفضل وأفضل.","SUPPORT_US":"إذا كنت تستمتع باستخدام Stremio ، إذا كان Stremio مفيدًا بالنسبة لك - انشر الخبر!","SPREAD_THE_WORD":"شارك مع أصدقائك الآن ، انشر الخبر حول Stremio","MORE_PEOPLE":"كلما زاد عدد الأشخاص الذين يستخدمون Stremio ، كان ذلك أفضل!","SEND_A_LINK":"أو إرسال رابط إلى موقعنا","TIP_LOCALFILES":"نصيحة: يمكنك سحب وإسقاط ملفات الفيديو المحلية في Stremio","ADDON_MY":"أضافاتي","ADDON_COMMUNITY":"إضافات المجتمع","ADDON_OFFICIAL":"أضافات رسمية","ADDON_REPOS":"مجموعة أضافات","ADDON_SEARCH":"الباحث عن أضافات","ADDON_INSTALL":"تثبيت","ADDON_CONFIGURE":"أعداد","ADDON_UNINSTALL":"ألغاء التثبيت","ADDON_UPGRADE":"ترقية","ADDON_INSTALLED":"مثبتة","ADDON_INSTALLED_MSG":"الاضافة مثبتة","ADDON_UPGRADED_MSG":"الاضافة تمت ترقيتها","ADDON_UNKNOWN":"غير معروف","ADDON_ERR":"حدث خطا اثناء تثبيت الأضافة","ADDON_DISCONNECTED":"غير متصل","ADDON_APP_MISSING":"التطبيق لهذا المصدر غير مثبت. هل تريد تثبيته الآن؟","ADDON_APP_INSTALL":"تثبيت الأن","ADDON_PAGE":"صفحة الأضافة","ADDON_TOP_CONTENT":"أفضل ما في الأضافة","ADDON_PROVIDES":"هذه الاضافة س تقدم لك :","ADDON_WATCH":"شاهد #{types} الان!","ADDON_WATCH_FREE":"شاهد #{types} مجانا الان !","ADDON_ADDON":"أضافة","ADDON_SUPPORTED_TYPES":"الانواع المدعومة","ADDON_SUPPORTED_CATALOGS":"الفهارس المدعومة","ADDON_PROVIDES_DISCOVER":"المزيد #{types} في الاكتشاف","ADDON_PROVIDES_STREAMS":"شاهد #{types}","ADDON_PROVIDES_STREAMS_FREE":"شاهد #{types} مجانا","ADDON_PROVIDES_SUBTITLES":"ترجمات ل #{types}","ADDON_CANTDETECT":"لم نتمكن من اكتشاف Stremio قيد التشغيل ، لذلك لم نتمكن من اكتشاف الوظائف الإضافية التي قمت بتثبيتها.","ERR_NO_META":"لم يتم العثور على معلومات ","ERR_GETTING_META":"حدث خطا اثناء الحصول على معلومات خاصة بهذا","ERR_CANT_PARSE_MAGNET":"غير ممكن معالجة رابط التورنيت","ERR_NO_MAGNET_INFOHASH":"معلومات غير صالحة من الرابط","ERR_NO_FILE_PATH":"تعذر إرسال الطلب بدون مسار للملف","ERR_NO_TORRENT":"لم يتم إرجاع أي تورنيت","ERR_NO_SUPPORTERD_FILES":"لم يتم العثور على ملفات مدعومة","ERR_OPENING_FILES":"تعذر فتح الملفات الخارجية","ERR_INVALID_LINK":"رابط غير صالح","ERR_REGISTERED_ONLY":"هذا الخيار متاح للمستخدمين المسجلين فقط.","ERR_CLIPBOARD":"تعذر التشغيل من الحافظة","ERR_CLIPBOARD_READ":"لايمكن قراءة الحافظة على هذه المنصة","ERR_CLIPBOARD_GENERIC":"لم يتم العثور على عنوان URL قابل للتشغيل في الحافظة. يرجى نسخ عنوان URL (على سبيل المثال ، رابط مغناطيسي) إلى مقطع فيديو.","BOARD_CONTINUE_WATCHING":"متابعة المشاهدة","BOARD_EXPLANATION_RECOMMENDATIONS":"أفلام منتقاة خصيصًا لك. <br /> هذا الفيلم هو نموذج توصية.","BOARD_EXPLANATION_EPISODES":"تأتي هنا حلقات جديدة من مسلسلاتك المفضلة. <br /> أضف المسلسلات التي تتابعها إلى مكتبتك.","BOARD_EXPLANATION_VIDEOS":"تأتي هنا حلقات جديدة من قنواتك المفضلة. <br /> أضف قنوات YouTube التي تتابعها إلى مكتبتك.","WEBSITE_SLOGAN_WATCH":"شاهد على الفور","WEBSITE_SLOGAN_ALL":"كل محتوى الفيديو الذي تستمتع به في مكان واحد","WEBSITE_SLOGAN_NEW":"كل ما يمكنك مشاهدته","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"مشاهدة من","WEBSITE_DOWNLOAD":"التحميل الان","WEBSITE_DOWNLOAD_FOR":"تحميل الان من ","WEBSITE_IS_DESKTOP":"Stremio هو تطبيق سطح مكتب ، افتح هذه الصفحة على جهاز الكمبيوتر الخاص بك وقم بتنزيله","WEBSITE_DESKTOP_DEMO_VID":"تجربة سطح المكتب","WEBSITE_PAGE_HOME":"الرئيسية","WEBSITE_PAGE_FEATURES":"المميزات","WEBSITE_PAGE_ADDONS":"الأضافات","WEBSITE_PAGE_TECH":"تقنية","WEBSITE_PAGE_CREATE_ADDON":"أنشاء أضافة","WEBSITE_PAGE_CONTACTS":"جهات الاتصال","WEBSITE_PAGE_BLOG":"المدونة","WEBSITE_TYPE_movie":"أفلام","WEBSITE_TYPE_series_PL":"مسلسلات","WEBSITE_TYPE_tv":"تلفاز مباشر","WEBSITE_TYPE_channel":"قنوات","WEBSITE_STREMIO_WHAT_IS":"Stremio هو تطبيق يساعدك على تنظيم مقاطع الفيديو المفضلة لديك والأفلام والمسلسلات التلفزيونية والقنوات التلفزيونية ومشاهدتها على الفور.","WEBSITE_FEATURES_WATCH":"شاهد على الفور بدقة عالية","WEBSITE_FEATURES_WATCH_DETAIL":"انقر لتشغيل الأفلام والبرامج التلفزيونية ومقاطع الفيديو والقنوات التلفزيونية المفضلة لديك.","WEBSITE_FEATURES_SUBS":"ترجمة تلقائية","WEBSITE_FEATURES_SUBS_DETAIL":"يختار Stremio تلقائيًا ترجمات متزامنة للغتك.","WEBSITE_FEATURES_SUBS_LABEL":"حركتك ،يارئيس.","WEBSITE_FEATURES_CAST":"تشغيل على التلفزيون والأجهزة المحمولة","WEBSITE_FEATURES_CAST_DETAIL":"البث إلى AppleTV و Chromecast والتلفزيون الذكي (DLNA / UPnP) والأجهزة المحمولة.","WEBSITE_LIB":"استمتع بمكتبة شخصية متزامنة على جميع أجهزتك","WEBSITE_LIB_COLLECT":"جمع من Stremio","WEBSITE_LIB_IMPORT":"استيراد من فيسبوك","WEBSITE_LIB_LOCAL":"اضافة من القرص الصلب","WEBSITE_BOARD":"لوحة التحكم - مكانك الوحيد للإشعارات والتوصيات","WEBSITE_BOARD_RECOMMEND":"برامج تلفاز مقترحة لك","WEBSITE_BOARD_TRENDING":"فيلم شائع","WEBSITE_BOARD_NEW":"فيديو جديد","WEBSITE_BOARD_EPISODE":"حلقة جديدة","WEBSITE_BOARD_1":"هل تبحث عن شيء ممتع لمشاهدته؟ احصل على توصيات بناء على ذوقك!","WEBSITE_BOARD_2":"احصل على إشعار عند عرض حلقة جديدة من برنامجك التلفزيوني المفضل أو قناة YouTube!","WEBSITE_BOARD_YOUTUBE":"مقاطع فيديو جديدة لقنوات يوتيوب","WEBSITE_BOARD_EPISODES":"حلقات جديدة من مسلسلات تتابعها","WEBSITE_ADDONS":"أضافات المحتوى","WEBSITE_TECH_DETAIL":"نحن نحب التكنولوجيا ، ونحب العلم المجنون! تستخدم Stremio تقنيات مفتوحة المصدر التالية:","WEBSITE_TECH_WCJS":"يسمح WebChimera.js لـ Stremio بتشغيل أي تنسيق فيديو بأداء جيد.","WEBSITE_TECH_WCJS_EXTRA":"نحن مساهمون أساسيون في المشروع","WEBSITE_TECH_ELECTRON":"توفر Electron منصة مبتكرة لبناء Stremio معها.","WEBSITE_TECH_ELECTRON_EXTRA":"نحن مساهمون في المشروع","WEBSITE_TECH_LINVODB":"تقنية قواعد البيانات التي تضمن تنظيم بياناتك وإتاحتها في أي مكان تقوم بتسجيل الدخول إليه.","WEBSITE_TECH_LINVODB_EXTRA":"التكنولوجيا الداخلية","WEBSITE_CREATE_ADDON":"انشئ اضافتك الخاصة","WEBSITE_CREATE_ADDON_DETAIL":"هل لديك خدمة تقدم محتوى فيديو؟ سنساعدك على الاستفادة من ميزات Stremio من خلال إنشاء الاضافة الخاصة بك.","WEBSITE_CREATE_ADDON_BENEFITS":"فوائد إنشاء أضافة لـ Stremio","WEBSITE_P2P_BEAUTY":"جمال البث من نظير إلى نظير","WEBSITE_P2P_1":"فيديو عالي الدقة / 4K موثوق وميسور التكلفة عند الطلب أو البث المباشر","WEBSITE_P2P_2":"توفر منصة التوزيع تجربة مستخدم رائعة","WEBSITE_P2P_3":"سنقوم بإنشاء اضافة تلبي احتياجاتك بالضبط","WEBSITE_P2P_CONTACT":"مهتم؟ مرحبًا بك في <a href=\'mailto:office@stremio.com\'> الاتصال بنا </a>.","WEBSITE_P2P_CONTACT_EXTRA":"سنكون سعداء لمساعدتك على دمج المحتوى الخاص بك مع Stremio!","WEBSITE_P2P":"من حين لآخر ، تأتي تقنية تغير اسم اللعبة. لقد استثمرنا الكثير من الوقت والجهد في بناء محرك دفق الفيديو من نظير إلى نظير (P2P) الذي يوفر أداءً رائعًا وتعدد الاستخدامات للتكيف مع أي حالة استخدام. \\n اتصل بنا للحصول على فيديو P2P ممكّن بواسطة DRM عند الطلب أو البث المباشر.","WEBSITE_THOUGHTS":"الأفكار التي نشاركها:","WEBSITE_SPREAD":"انشر الخبر حول Stremio:","WEBSITE_CONTACT":"اتصل بنا ، يسعدنا أن نسمع منك!","WEBSITE_OPENSOURCE":"لمشاريعنا مفتوحة المصدر ، انتقل إلى","WEBSITE_BITCOIN":"تبرع بعملة البيتكوين:","WEBSITE_FAQ":"أسئلة مكررة","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"أسئلة","WEBSITE_TOS":"تعليمات الاستخدام","WEBSITE_LEGAL":"قانوني","WEBSITE_PAGE_ABOUT":"حول","WEBSITE_PAGE_BECOME_PARTNER":"كن شريكا معنا","WEBSITE_ALL_YOU_CAN_WATCH":"حرية المشاهدة \\n كل ما تريد.","WEBSITE_FREEDOM_TO_STREAM":"الحرية للبث","WEBSITE_WHAT_IS_STREMIO":"ما هو Stremio ?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio هو مركز شامل لتجميع محتوى الفيديو. اكتشف ، نظم ، وشاهد الفيديو من جميع أنواع المصادر على أي جهاز تملكه.","WEBSITE_WHAT_IS_STREMIO_P2":"الأفلام والبرامج التلفزيونية والمسلسلات والتلفزيون المباشر أو قنوات الويب مثل YouTube و Twitch.tv - يمكنك العثور على كل هذا على Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio هو مركز وسائط حديث يمثل حلاً شاملاً لترفيه الفيديو الخاص بك. يمكنك اكتشاف محتوى الفيديو ومشاهدته وتنظيمه من الوظائف الإضافية سهلة التثبيت.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"الأفلام والبرامج التلفزيونية والتلفزيون المباشر أو قنوات الويب - ابحث عن كل هذا على Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"استمتع على جميع أجهزة الوسائط الخاصة بك","WEBSITE_DEVICES_COLLECT":"جمع من Stremio","WEBSITE_DEVICES_IMPORT_FB":"استيراد من فيسبوك","WEBSITE_DEVICES_LOCAL":"اضافة من القرص الصلب","WEBSITE_JOIN_THE_PARTY_NOW":"انضم إلى الحفلة الآن","WEBSITE_DEVICES_ALL":"سهل الاستخدام على جميع أجهزتك؛","WEBSITE_EXTENDABLE_CATALOG":"مجموعة كبيرة من الفيديوهات يمكنك توسعتها ايضا","WEBSITE_ORGANIZE_YOUR_MEDIA":"ميزات رائعة لتنظيم الوسائط الخاصة بك ؛","WEBSITE_AS_SEEN_ON":"كما شوهد على","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"معلومات عنا","WEBSITE_LINK_TECHNOLOGY":"التقنية","WEBSITE_LINK_APPS":"التطبيقات","WEBSITE_LINK_DOWNLOADS":"تنزيل","WEBSITE_MORE":"المزيد","WEBSITE_LINK_ADDONS":"الأضافات","WEBSITE_LINK_ADDON_SDK":"حزمة مساعدة لأنشاء أضافات","WEBSITE_LINK_CONTRIBUTE":"ساهم معنا","WEBSITE_LINK_COMMUNITY":"المجتمع","WEBSITE_LINK_BLOG":"المدونة","WEBSITE_MORE_MORE":"... و المزيد","WEBSITE_LINK_HELP":"مركز المساعدة","WEBSITE_LINK_CONTACTS":"استفسارات الأعمال","WEBSITE_LINK_TOS":"البنود و الشروط","WEBSITE_LINK_PRAVACY":"سياسة الخصوصية","WEBSITE_SUBSCRIBE":"اشتراك","WEBSITE_NEWSLETTER":"انضم إلى النشرة الإخبارية لدينا لأشياء مذهلة","WEBSITE_PLACEHOLDER_EMAIL":"بريدك الالكتروني","WEBSITE_COMMUNITY":"المجتمع","WEBSITE_LINK_PRAVACY_LEGAL":"الخصوصية والقانونية","WEBSITE_WHY":"لماذا نقوم بذلك","WEBSITE_WHY_P1":"في Stremio ، نأتي إلى العمل كل يوم لأننا نريد حل مشكلة مهمة لصناعة الفيديو عند الطلب. يتم نشر الكثير من المحتوى الجديد كل دقيقة بحيث يكاد يكون من المستحيل العثور على ما تريده.","WEBSITE_WHY_P2":"نحن نساعد الأشخاص على التنقل في هذا العالم الضخم من الترفيه بالفيديو واكتشاف محتوى جديد للاستمتاع به. تجمع تطبيقاتنا بين الأفلام والمسلسلات والبث التلفزيوني المباشر وقنوات الويب والمزيد. نحن ملتزمون بجعل من السهل جدًا على المستخدمين العثور على العناوين والمذيعين الذين يحبونهم.","WEBSITE_WHY_P3":"يمكنك استخدام خدمتنا على أي جهاز وفي أي وقت ، مما يجعل Stremio مركز الترفيه بالفيديو الوحيد الذي ستحتاج إليه على الإطلاق.","WEBSITE_TEAM":"الفريق","WEBSITE_TEAM_P":"فريق Stremio صغير ولكنه قوي: بين العشرة منا ، نقوم بالبرمجة بلغات X ، ونتشارك الخبرات في تطوير البرمجيات ، وتصميم UI و UX ، والتسويق والإعلان ، والأعمال التجارية والشركات الناشئة.","WEBSITE_FEATURES":"المميزات","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"اكتشف محتوى جديدًا بسهولة","WEBSITE_FEATURES_DISCOVER_P":"اكتشف بسهولة الأفلام والبرامج التلفزيونية والمسلسلات والقنوات الجديدة لمشاهدتها. تصفح حسب الفئة أو النوع أو التصنيف أو الحداثة أو ما إلى ذلك ، أو ببساطة اكتب اسمًا للبحث عنه. يجعل Stremio العثور على محتوى فيديو جديد بمثابة قطعة من الكعكة.","WEBSITE_FEATURES_ALL_CONTENT":"كل محتوى الفيديو الخاص بك على شاشة واحدة","WEBSITE_FEATURES_ALL_CONTENT_P1":"تعرف على الأفلام أو المسلسلات أو مقاطع الفيديو التي لم تنته واستمر في مشاهدتها ؛ الحصول على إشعارات بشأن الحلقات والإصدارات الجديدة ؛ وتصفح التوصيات التي ستحصل عليها بناءً على عادات المشاهدة لديك.","WEBSITE_FEATURES_LIBRARY":"تنظيم مكتبة الفيديو الخاصة بك","WEBSITE_FEATURES_LIBRARY_P1":"أضف أي عنوان إلى مكتبة Stremio الخاصة بك بنقرة واحدة وابحث عن طريقك حول المحتوى الخاص بك ، مرتبة بدقة حسب النوع أو الحداثة أو الترتيب الأبجدي.","WEBSITE_FEATURES_CALENDAR":"تتبع كل ما تشاهده","WEBSITE_FEATURES_CALENDAR_P1":"احصل على تصور تقويم لجميع الأفلام والمسلسلات التي تضيفها إلى مكتبتك. قم بتصدير تقويم Stremio الخاص بك وقم بمزامنته حتى تعرف دائمًا موعد حلقة جديدة أو عرض أول.","WEBSITE_FEATURES_BIG_SCREEN":"استمتع بمحتوى الفيديو الخاص بك على شاشة أكبر","WEBSITE_FEATURES_BIG_SCREEN_P1":"قم بإرسال كل ما تشاهده إلى جهاز آخر - سواء كان هاتفًا أو جهازًا لوحيًا أو تلفزيونًا بنقرة واحدة.","WEBSITE_FEATURES_SOURCES":"شاهد الفيديو من عدة مصادر مختلفة","WEBSITE_FEATURES_SOURCES_P":"قم بتثبيت الوظائف الإضافية الرسمية والمجتمعية للاستمتاع بمقاطع الفيديو التي يتم الحصول عليها من العديد من المزودين المختلفين - كل ذلك في تطبيق واحد أنيق وسهل الاستخدام.","WEBSITE_CREATE_AN_ADDON":"أنشاء أضافة","WEBSITE_FEATURES_SYNC":"قم بمزامنة مكتبتك عبر أجهزة مختلفة واستأنف التشغيل","WEBSITE_FEATURES_SYNC_P1":"قم بتسجيل الدخول بحسابك عبر جميع أجهزتك واستمتع بمكتبتك ووظائفك الإضافية والتشغيل والتقويم المتزامن.","WEBSITE_FEATURES_EXTENDABLE":"كتالوج الفيديو القابل للتوسيع من خلال الإضافات","WEBSITE_FEATURES_EXTENDABLE_P1":"يوفر كتالوج Stremio الملحق عددًا من الوظائف الإضافية لتثبيت ومشاهدة مجموعة متنوعة من محتوى الفيديو. يتضمن ذلك الأفلام والعروض والتلفزيون المباشر والرياضة والأخبار والبودكاست وقنوات الويب وألعاب الفيديو والمزيد.","WEBSITE_FEATURES_AUTO_SUBS":"ترجمة تلقائية","WEBSITE_FEATURES_AUTO_SUBS_P1":"من خلال إضافات الترجمة لدينا ، ستحصل تلقائيًا على خيارات محددة للغتك المفضلة.","WEBSITE_FEATURES_CHROMECAST":"الإرسال إلى Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"استمتع بمحتوى الفيديو الخاص بك على شاشة أكبر أو قم فقط بإرسال كل ما تشاهده إلى جهاز آخر.","WEBSITE_FEATURES_KEEP_TRACK":"تتبع البرامج التلفزيونية وقنوات الويب المفضلة لديك","WEBSITE_FEATURES_KEEP_TRACK_P1":"احصل على تصور للتقويم وإشعارات لحلقات جديدة من مسلسلاتك وقنوات الويب المفضلة لديك.","WEBSITE_FEATURES_POWER_USER":"ميزات المستخدم القوي","WEBSITE_FEATURES_POWER_USER_P1":"التشغيل على مشغل خارجي","WEBSITE_FEATURES_POWER_USER_P2":"التشغيل من رابط تورنيت","WEBSITE_FEATURES_POWER_USER_P3":"الاستيراد إلى مكتبتك من الإعجابات على Facebook أو القرص المحلي","WEBSITE_ADD_ONS":"الأضافات","WEBSITE_ADD_ONS_P1":"يتم الحصول على كل محتوى الفيديو الذي يوفره Stremio من خلال نظام إضافي - لم يتم تضمين أي محتوى أو مزود محتوى في التطبيق.","WEBSITE_ADD_ONS_P2":"هناك مجموعتان من الاضافات المتاحة: الاضافات الرسمية واضافات المجتمع.","WEBSITE_ADD_ONS_P3":"يتم تطوير الاضافات الرسمية واستضافتها بواسطة Stremio ، بينما يتم إنشاء الإضافات المجتمعية من قبل أعضاء مجتمعنا ، والذين يستضيفونها أيضًا.","WEBSITE_ADDONS_OFFICIAL":"الاضافات الرسمية","WEBSITE_ADDONS_WATCHUB":"قم ببث أفلامك ومسلسلاتك وعروضك المفضلة من مزودين مثل iTunes و Hulu و Amazon وغيرها من خدمات المملكة المتحدة / الولايات المتحدة.","WEBSITE_ADDONS_YOUTUBE":"شاهد قنوات YouTube المفضلة لديك بدون إعلانات واحصل على إشعارات بالتحميلات الجديدة من المساهمين الذين تتابعهم.","WEBSITE_ADDONS_FILMON":"شاهد البث التلفزيوني المباشر والأفلام والتلفزيون الاجتماعي مجانًا. 600 قناة تلفزيونية و 45000 فيلم مجاني ووثائقي وغير ذلك.","WEBSITE_ADDONS_OPENSUBTITLES":"ترجمات الأفلام والتلفزيون بلغات متعددة ، يتم تحميل آلاف الترجمات المترجمة كل يوم.","WEBSITE_ADDONS_COMMUNITY":"أضافات المجتمع","WEBSITE_ADDONS_FILMON_VOD":"شاهد الفيديو عند الطلب من Filmon.tv","WEBSITE_ADDONS_TWICH":"شاهد البث المباشر من Twitch.tv - منصة بث فيديو لصناعة الرياضة الإلكترونية.","WEBSITE_ADDONS_VODO":"مشاهدة الافلام المستقلة تماما مجانا.","WEBSITE_ADDONS_NETFLIX":"شاهد أفلام Netflix ومسلسلات الويب.","WEBSITE_ADDONS_CREATE":"أنشىء أضافة جديدة","WEBSITE_ADDONS_CREATE_P1":"إذا كنت ترغب في ذلك ، يمكنك تطوير الأضافة الخاصة بك. بهذه الطريقة ، يمكنك منح نفسك ومجتمعنا إمكانية الوصول إلى محتوى فيديو جديد والوصول إلى جمهور مستهدف جديد من ملايين المستخدمين حول العالم.","WEBSITE_ADDONS_START_CREATE":"للبدء ، قم بزيارة صفحة Stremio Addon SDK:","WEBSITE_DOWNLOADS":"التنزيلات","WEBSITE_DOWNLOADS_P1":"للحصول على الأداء الأمثل ، نوصي باستخدام أحدث إصدار متوفر من تطبيقات Stremio. ومع ذلك ، إذا كنت ترغب في استخدام إصدار أقدم لسبب ما ، فيمكنك تنزيله من هنا.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio لأجهزة الويندوز","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio لأجهزة ماك","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio لأجهزة لينوكس","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio لأجهزة الأندرويد","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio لأجهزة تلفاز الأندرويد","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio لأجهزة الأندرويد","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio لجهاز ستيم ديك","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio لأجهزة الأيفون (نسخة محدودة)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"شارك في التطوير","WEBSITE_CONTRIBUTE_P1":"منصة Stremio مفتوحة المصدر ويمكنك بسهولة إنشاء أضافات للمحتوى غير المصدر حاليًا.","WEBSITE_CONTRIBUTE_WHY":"لماذا يجب عليك إنشاء أضافة ؟","WEBSITE_CONTRIBUTE_WHY_P1":"الوصول إلى جمهور جديد لمحتوى الفيديو الخاص بك","WEBSITE_CONTRIBUTE_WHY_P2":"تنمو قاعدة مستخدمي Stremio بسرعة - خلال العام الأول من الإطلاق ، اكتسبت Stremio مليون مستخدم حول العالم ، وفي العام الثاني من وجود النظام الأساسي ارتفع هذا الرقم إلى 2.5 مليون.","WEBSITE_CONTRIBUTE_WHY_P3":"باستخدام الأضافة الخاصة بك ، يمكنك الوصول بسهولة إلى هذا الجمهور وتوزيع محتوى الفيديو الخاص بك عليهم.","WEBSITE_CONTRIBUTE_ALL":"شاهد أفلامك ومقاطع الفيديو والمسلسلات والقنوات المفضلة لديك في مكان واحد.","WEBSITE_CONTRIBUTE_ALL_P1":"هل أنت معجب بنوع معين من المحتوى غير متوفر على Stremio حتى الآن؟ قم بإنشاء أضافة له واستمتع بمشاهدة مقاطع الفيديو المفضلة لديك في واحدة من أكبر وأسهل مراكز الترفيه في السوق من حيث الاستخدام.","WEBSITE_CONTRIBUTE_ALL_P2":"علاوة على ذلك ، ستحصل على الامتنان اللانهائي لأعضاء مجتمع Stremio الآخرين المتشابهين في التفكير.","WEBSITE_CONTRIBUTE_MONETIZE":"استثمر الأضافة الخاصة بك واكسب المال بمساعدته","WEBSITE_CONTRIBUTE_MONETIZE_P1":"بمجرد تطوير أضافة جديدة لـ Stremio ، يمكنك بسهولة تحقيق الدخل منه من خلال عدد من الطرق المختلفة. إذا كنت تفكر في ذلك ، فلا تتردد في الاتصال بنا على","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":"- يسعدنا أن نتشاور معك وننصحك بخيارات تحقيق الدخل الإضافي.","WEBSITE_CONTRIBUTE_TRANSLATE":"كن مترجمًا متطوعًا","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"إذا كنت ترغب في الاستمتاع بتطبيقات Stremio بلغات مختلفة ، فيمكنك الانضمام إلى مجتمع المترجمين المتطوعين لدينا. يساعدوننا في إضافة إصدارات من Stremio بعدة لغات مختلفة.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"هل أنت متشوق للبدء؟","WEBSITE_TRANSALTE_STREMIO":"ترجمة Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"المجتمع الرسمي","WEBSITE_COMMUNITY_OFFICIALS_P1":"كن جزءًا من مجتمع Stremio المتنامي. تابعنا على وسائل التواصل الاجتماعي ولا تخجل من إلقاء التحية - فنحن نحب أن نسمع من معجبينا!","WEBSITE_COMMUNITY_UNOFFICIALS":"المجتمعات غير الرسمية","STREMIO_COMMUNITY_NL":"Stremio في هولندا","STREMIO_COMMUNITY_BRASIL":"Stremio في البرازيل","STREMIO_COMMUNITY_GERMANY":"Stremio في المانيا","STREMIO_COMMUNITY_BELGIUM":"Stremio في بلجيكا","STREMIO_COMMUNITY_FRANCE":"Stremio في فرنسا","STREMIO_COMMUNITY_PORTUGAL":"Stremio في البرتغال","STREMIO_COMMUNITY_ITALY":"Stremio في ايطاليا","STREMIO_COMMUNITY_UK":"Stremio الممكلة المتحدة","STREMIO_COMMUNITY_USA":"Stremio الولايات المتحدة الأمريكية","STREMIO_COMMUNITY_MEXICO":"Stremio في المكسيك","STREMIO_COMMUNITY_ADDONS":"Stremio أضافات","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"الشركاء والداعمون","WEBSITE_COMMUNITY_GOODIES":"الأشياء الجيدة Stremio","WEBSITE_COMMUNITY_WALLPAPERS":"خلفيات الشاشة","WEBSITE_COMMUNITY_ART":"معرض الفنون","WEBSITE_LINK_ART":"معرض الفنون","WEBSITE_CONTACT_US":"تواصل معنا","WEBSITE_CONTACT_US_P1":"إذا كان لديك أي أسئلة أو تعليقات أو اقتراحات ، فلا تتردد في الاتصال بنا من خلال نموذج الاتصال أدناه.","WEBSITE_CONTACT_US_P2":"ضع في اعتبارك أننا موجودون في بلغاريا ، لذا قد يكون هناك تأخير في معالجة استفسارك بسبب اختلافات المنطقة الزمنية.","WEBSITE_CONTACT_US_SUCCESS":"تم ارسال رسالتك. سنعود إليك في أقرب وقت ممكن.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"يرجى إدخال البريد الإلكتروني الصحيح!","WEBSITE_CONTACT_US_Q_RELATED_TO":"بماذا يتعلق سؤالك؟","WEBSITE_CONTACT_US_Q_OS":"ما هو نظام التشغيل الخاص بك؟","WEBSITE_CONTACT_US_PH_EMAIL":"بريدك الالكتروني","WEBSITE_CONTACT_US_PH_MESSAGE":"رسالتك","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"أرسال","WEBSITE_CONTACT_US_Q_1":"كيفية التثبيت ؟","WEBSITE_CONTACT_US_Q_2":"كيفية ألغاء التثبيت ؟","WEBSITE_CONTACT_US_Q_3":"(HTML) كيف تصنع اللازانيا؟","WEBSITE_CONTACT_US_Q_4":"أضافات","WEBSITE_CONTACT_US_OS_1":"ويندوز","WEBSITE_CONTACT_US_OS_2":"ماك","WEBSITE_CONTACT_US_OS_3":"لينوكس","WEBSITE_CONTACT_US_OS_4":"أندرويد","WEBSITE_CONTACT_US_OS_5":"أيفون","WEBSITE_TECHNOLOGY":"التقنية","WEBSITE_TECHNOLOGY_P1":"نحن نحب التكنولوجيا والعلم المجنون. </br> هنا ما يمدك بالطاقة Stremio (كلها مفتوحة المصدر).","WEBSITE_TECHNOLOGY_P_QT":"تطوير البرامج عبر الأنظمة الأساسية في أفضل حالاتها.","WEBSITE_TECHNOLOGY_P_MPV":"مشغل وسائط مجاني ومفتوح المصدر ومتعدد المنصات.","WEBSITE_TECHNOLOGY_P_RN":"يتيح لك React Native إنشاء تطبيقات جوال باستخدام JavaScript فقط.","WEBSITE_TECHNOLOGY_P_VLC":"إطار الوسائط المضمن في التطبيق للحصول على الوسائط المتعددة.","WEBSITE_TECHNOLOGY_P_REALM":"Realm هي منصة متنقلة وبديل لبيانات SQLite & Core.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js هي بيئة تشغيل JavaScript مفتوحة المصدر ومتعددة المنصات.","WEBSITE_TECHNOLOGY_P_RUST":"Rust هي لغة برمجة نظام متعددة النماذج تركز على السلامة ، وخاصة التزامن الآمن.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"المساهمة في المشروع","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"هناك طريقتان يمكنك من خلالهما المساهمة في Stremio ومساعدتنا على تحسين المنتج.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"يمكنك التبرع بمهاراتك اللغوية القيمة من خلال ترجمة المنصة ...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"أو","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... يمكنك توظيف مهاراتك في البرمجة لإنشاء إضافات مجتمعية.","WEBSITE_TRANSLATE_STREMIO":"ترجمة Stremio","WEBSITE_404_OH_NO":"عذرًا! الصفحة التي تبحث عنها ليست هنا ...","WEBSITE_GO_HOME":"الرئيسية","WEBSITE_LINK_OTHER_DOWNLOADS":"تنزيلات أخرى","WEBSITE_FAQ_ABR":"أسئلة متكررة","WEBSITE_SUPPORT":"الدعم","WEBSITE_DOWNLOAD_4_0_BETA":"قم بتنزيل Stremio 4 beta الآن","WEBSITE_GET_FOR_DESKTOP":"احصل عليه للكمبيوتر","WEBSITE_LINK_ADDON_COMPETITION":"منافسة الأضافات","WEBSITE_LINK_ART_CONTEST":"مسابقه الفنون","WEBSITE_MY_ACCOUNT":"حسابي الشخصي","WEBSITE_MAINPAGE_FAQ_001_H1":"ما هو Stremio ؟ ","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio هو مركز وسائط حديث يمنحك حرية مشاهدة كل ما تريد.","WEBSITE_MAINPAGE_FAQ_002_H1":"كيف يعمل؟","WEBSITE_MAINPAGE_FAQ_002_P1":"بمجرد تثبيت Stremio على جهازك وإنشاء حساب ، كل ما عليك فعله هو زيارة الكتالوج الإضافي وتثبيت أي أداة إضافية تريدها ، وأنت على ما يرام!","WEBSITE_MAINPAGE_FAQ_002_P2":"بعد ذلك ، يمكنك الانتقال إلى قسم الأكتشاف أو لوحة التحكم لبدء استكشاف المحتوى.","WEBSITE_MAINPAGE_FAQ_003_H1":"ماذا يمكنني أن أشاهد هنا؟","WEBSITE_MAINPAGE_FAQ_003_P1":"الكثير: الأفلام والبرامج التلفزيونية وقنوات الويب والرياضة والقنوات التلفزيونية والاستماع إلى البودكاست والمزيد. بفضل نظام الأضافات الخاص بنا ، يمكنك الوصول إلى مجموعة متنوعة من المحتويات.","WEBSITE_MAINPAGE_FAQ_004_H1":"هل Stremio مفتوح المصدر؟","WEBSITE_MAINPAGE_FAQ_004_P1":"يمكنك التحقق من بعض الروابط : ${1}برنامج سطح المكتب${2} و ${3}GitHub المنظمة${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"هل Stremio آمن؟","WEBSITE_MAINPAGE_FAQ_005_P1":"نعم: نظرًا لأنه برنامج مفتوح المصدر ، فإن الكود قابل للتدقيق بشكل عام ويمكنك مراجعته بنفسك.","WEBSITE_MAINPAGE_FAQ_006_H1":"ماذا عن خصوصيتي؟","WEBSITE_MAINPAGE_FAQ_006_P1":"نحترم خصوصية المستخدمين ولا نجمع أي بيانات شخصية إلى جانب الحد الأدنى الأساسي لإنشاء حسابك ومزامنته.","WEBSITE_MAINPAGE_FAQ_006_P2":"يوجد أيضًا ${1} وضع الضيف ${2} عند التسجيل ، والذي لا يتطلب أي بيانات على الإطلاق: في هذا الوضع ، لا يتم إجراء مكالمات إلى الواجهة الخلفية لدينا. ومع ذلك ، فإنه يأتي على حساب الميزات المفيدة ، مثل القدرة على مزامنة مكتبتك عبر الأجهزة.","WEBSITE_MAINPAGE_FAQ_007_H1":"هل يمكنني ارسال البث إلى التلفزيون الخاص بي؟","WEBSITE_MAINPAGE_FAQ_007_P1":"نعم ، نحن ندعم Chromecast ويمكنك الإرسال من تطبيقات سطح المكتب والأجهزة المحمولة (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"كم عدد الإضافات التي يمتلكها Stremio؟","WEBSITE_MAINPAGE_FAQ_008_P1":"اعتبارًا من أواخر عام 2019 ، أكثر من 50 - لمزيد من المعلومات ، راجع كتالوج الملحقات الخاصة بنا.","WEBSITE_MAINPAGE_FAQ_009_H1":"هل يمكن تمديد Stremio بما يتجاوز ما هو موجود في الكتالوج الإضافي؟","WEBSITE_MAINPAGE_FAQ_009_P1":"نعم ، يجب عليك التحقق مما يلي: ${1} PimpMyStremio ${2} ، ${3} مجتمعات Reddit ${4} ، ${5} Stremio Downloader ${6} ، إلخ.","WEBSITE_MAINPAGE_FAQ_010_H1":"ما هي الأجهزة التي يدعمها Stremio؟","WEBSITE_MAINPAGE_FAQ_010_P1":"لدينا تطبيقات سطح مكتب لأنظمة Windows و Mac و Linux. بالنسبة للجوال ، ندعم Android و iOS ، على الرغم من أن ضع في اعتبارك أن وظائف iOS محدودة (لا تدعم معظم الوظائف الإضافية).","WEBSITE_MAINPAGE_FAQ_010_P2":"هناك العديد من الأجهزة التي تعمل بنظام Android والتي يمكنك تشغيل Stremio عليها ، مثل NVIDIA Shield و Amazon Fire Stick ، ​​لكننا لا ندعمها رسميًا.","WEBSITE_MAINPAGE_FAQ_011_H1":"هل يمكنك إضافة محتوى معين إلى Stremio؟","WEBSITE_MAINPAGE_FAQ_011_P1":"عذرًا ، لا نقدم أي محتوى بأنفسنا ، ولكن كلما قمت بتثبيت المزيد من إضافات Stremio ، ستتمكن من العثور على المزيد من المحتوى.","WEBSITE_MAINPAGE_FAQ_012_H1":"هل يستطيع Stremio تشغيل روابط التورنيت ؟","WEBSITE_MAINPAGE_FAQ_012_P1":"نعم ، ويمكنه أيضًا تشغيل روابط HTTP العادية وملفات التورنت (السحب والإفلات).","WEBSITE_MAINPAGE_FAQ_013_H1":"هل يمكنني تنزيل مقطع فيديو ومشاهدته بلا إنترنت؟","WEBSITE_MAINPAGE_FAQ_013_P1":"تعد الميزة المتاحة في وضع عدم الاتصال ميزة قادمة ، ولكن إذا سمحت لـ Stremio بالتخزين المؤقت على جهازك (من لوحة الإعدادات) ، يمكنك مشاهدة مقاطع الفيديو لاحقًا دون اتصال.","WEBSITE_MAINPAGE_FAQ_014_H1":"لا شيء يعمل ، ساعدني!","WEBSITE_MAINPAGE_FAQ_014_P1":"هل أنت متأكد أنك قمت بتثبيت الوظائف الإضافية؟ إذا كانت الإجابة بنعم ، فراجع ${1} مركز المساعدة ${2} الخاص بنا.","WEBSITE_MAINPAGE_FAQ_015_H1":"كيف يحافظ Stremio على عمليات التطوير الخاصة به؟","WEBSITE_MAINPAGE_FAQ_015_P1":"نعرض إعلانات غير تدخلية من حين لآخر ، لكننا نفكر في الانتقال إلى نموذج التبرع.","WEBSITE_MAINPAGE_FAQ_015_P2":"لمزيد من الأسئلة ، انتقل إلى مركز المساعدة $ {1}${2}.","HELP_LEARN_MORE":"ساعدنا في معرفة المزيد عنك.","LIFESTYLE":"أسلوب الحياة","SPORTS":"الرياضة","FOOD_HEALTH":"الطعام والصحة","BEAUTY_FASHION":"جمال و موضة","NEWS":"أخبار","GAMING":"ألعاب","SCIENCE_EDUCATION":"علم و تعليم","MUSIC":"موسيقى","TRAVEL":"السفر","LATE_NIGHT":"أخر الليل","REALITY":"واقعي","COMEDY":"كوميديا","DIY":"كيف تفعلها بنفسك","TECH":"تقنية","CINEMA":"سينيما","CONTINUE":"متابعة","SLOW_LOADING":"تحميل بطيئ ؟","I_GIVE_UP":"أنا أستسلم","LEARN_MORE":"معرفة المزيد","POOR_SOURCE":"هذا المصدر غير متاح بشكل جيد أو أن اتصالك بالإنترنت ليس سريعًا بما يكفي","PICK_CATEGORIES_ERR":"عليك أن تختار 3 فئات على الأقل","ADJUST_TIMING":"ضبط التوقيت باستخدام","ADJUST_SIZE":"ضبط الحجم مع","SEARCH_ANYTHING":"يمكنك البحث عن أي شيء ...","ALL_CATEGORIES":"الجميع","SEARCH_CATEGORIES":"أفلام ومسلسلات ويوتيوب وتلفزيون","SEARCH_PERSONS":"الممثلين والمخرجين والكتاب","SEARCH_PROTOCOLS":"روابط HTTP و التورنيت","SEARCH_TYPES":"IMDB / TVDB روابط","WATCHED":"تمت المشاهدة","SHOW_LESS":"إظهار أقل","LAST_SEARCHES":"أخر عمليات البحث","CLEAR_HISTORY":"مسح السجل","CHOOSE_SOME":"اختر بعضًا من هذا:","NO_WEB_REMOTE":"تعذر تحميل Web Remote","STREMIO_OFFLINE":"Stremio غير متصل","STREMIO_EXPENSIVE_CONNECTION":"لقد اكتشفنا أنك تستخدم اتصال بيانات الجوال ، هل تريد المتابعة؟","USE_DATA":"استخدم البيانات","WARNING":"تحذير","MORE_INFO":"مزيد من المعلومات ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"جار التحميل ...","STREMIO_TV_BACK_TO_LANGUAGES":"رجوع إلى اللغات","STREMIO_TV_REMOTE":"ريموت","STREMIO_TV_GO_TO":"أذهب الى:","STREMIO_TV_OR_SCAN":"أو قم بمسح:","STREMIO_TV_ADDON_INSTRUCTIONS":"يرجى اتباع التعليمات لتثبيت الإضافات المفضلة لديك.","STREMIO_TV_LIVE_TV":"تلفاز مباشر","STREMIO_TV_RESUME_WATCHING":"تابع المشاهدة","STREMIO_TV_LOADING_BACKGROUND":"التحميل في الخلفية","STREMIO_TV_CHECKING_AUTHENTICATION":"التحقق من المصادقة","STREMIO_TV_LOADING_BOARD":"تحميل لوحة التحكم","STREMIO_TV_LOGIN_HEADER_LINE_1":"نريد لمستخدمينا الحصول على أفضل تجربة شخصية ممكنة مع برنامجنا.","STREMIO_TV_LOGIN_HEADER_LINE_2":"لهذا السبب نطلب منك التفضل بإنشاء و / أو تسجيل الدخول إلى حسابك.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"شكرا لتفهمك،","STREMIO_TV_LOGIN_FOOTER_LINE_2":"فريق Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"من أجل استخدام Web Remote مع الهاتف الذكي / الجهاز اللوحي / سطح المكتب:","STREMIO_TV_WIFI_SETUP":"Wi-Fi ضبط","STREMIO_TV_WIFI_HEADER_LINE_1":"لم يكتشف Stremio Circle اتصالاً بالإنترنت.","STREMIO_TV_WIFI_DETAILS_1":"الاتصال بـ:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"استخدم كلمة المرور:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"افتح متصفح الويب بالرابط:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"تلقائي","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"باخر مرة تمت المشاهدة","STREMIO_TV_LIBRARY_SORT_NAME":"بالاسم","STREMIO_TV_LIBRARY_TIMES_WATCHED":"بعدد مرات المشاهدة","STREMIO_TV_DETAILS_SEASON_NUMBER":"موسم ${1}","STREMIO_TV_STREAMS_LOADING":"حملت ${1} / ${2} الاضافات...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} االاضافة لازالت قيد التحميل...","STREMIO_TV_PLAYER_SETTINGS":"اعدادات المشغل","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"تاخير الترجمة","STREMIO_TV_PLAYER_AUDIO_DELAY":"تاخير الصوت","STREMIO_TV_PLAYER_VIDEO_SCALING":"مقياس الفيديو","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"مصدر بث غير مدعوم","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"فشل فتح الرابط الحارجي","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"تشغيل بـ ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"تشغيل بـ libVLC مشغل","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"استعمل stremio على هاتفك او حاسوبك واعد تثبيت او اضبط الاضافات ثم اضغط على \\"اعادة المزامنة\\"","STREMIO_TV_ADDONS_SUBTITLE":"ملاحظة: تاكد من استعمال نفس حساب stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"مزامنة الاضافات","STREMIO_TV_ADDONS_SYNC_SUCCESS":"تمت مزامنة الاضافات بنجاح","STREMIO_TV_ADDONS_SYNC_FAILED":"فشل مزامنة الاضافات","STREMIO_TV_META_LINK_FAILED":"فشل فتح ارتباط التعريف","STREMIO_TV_CATALOG_LOADING":"لم يتم تحميل الفهرس بعد ...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"تم تحديث لغة الواجهة","STREMIO_TV_SETTINGS_THEME_UPDATED":"تم تحديث المظهر","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"المشغل الافتراضي","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"المشغل الخارجي","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"اللغة المفضلة","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"اللغة المفضلة الثانية","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"تشغيل عبر الانفاق","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"قد يكون هنالك مشاكل تشغيل محتملة على بعض الأجهزة","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"بعض انواع الفيديوهات قد لا تعمل","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"بدون تخزين مؤقت","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"تلقائي","STREMIO_TV_SETTINGS_PROFILE_SOFT":"ناعم","STREMIO_TV_SETTINGS_PROFILE_FAST":"سريع","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"سريع جدا","STREMIO_TV_SETTINGS_SERVER_URL":"رابط سيرفر المشاهدة","STREMIO_TV_SETTINGS_SERVER_VERSION":"اصدار السيرفر","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"مجهول","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio اصدار","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"تغير رابط السريفر","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"ادخل عنوان رابط السيرفر","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"لقراءت سايسة الخصوصية زر:","STREMIO_TV_SETTINGS_TOS_TEXT":"لقراءت الاحكام والشروط زر:","STREMIO_TV_NAV_SEARCH":"البحث","STREMIO_TV_NAV_HOME":"الرئيسية","STREMIO_TV_NAV_DISCOVER":"اكتشاف","STREMIO_TV_NAV_LIBRARY":"المكتبة","STREMIO_TV_NAV_MOVIES":"افلام","STREMIO_TV_NAV_SERIES":"مسلسلات","STREMIO_TV_NAV_CHANNELS":"قنوات","STREMIO_TV_NAV_TV":"قنوات تلفزيونية مباشرة","STREMIO_TV_NAV_SETTINGS":"الاعدادات","STREMIO_TV_NAV_ADDONS":"اضافات","STREMIO_TV_LOGIN_TITLE":"ربط الحساب","STREMIO_TV_LOGIN_EXPIRES_IN":"تنتهي الصلاحية في","STREMIO_TV_LOGIN_STEP_ONE":"امسح QR Code اعلاه او اذهب الى","STREMIO_TV_LOGIN_STEP_TWO":"تسجيل الدحول لحساب Stremio الخاص بك","STREMIO_TV_LOGIN_NEW_LINK":"طلب رابط جديد","STREMIO_TV_LOGIN_LINK_REFRESHED":"تم تحديث كود تسجيل الدحول","STREMIO_TV_SEARCH_PLACEHOLDER":"اكتب شيئا ما","STREMIO_TV_SEARCH_NO_ADDONS":"لم يتم طلب اي اضافة لهذا الفهرس!","STREMIO_TV_SEARCH_BUTTON":"بحث","STREMIO_TV_SEARCH_KEY_DEL":"حذف","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"مسح","STREMIO_TV_SEARCH_HISTORY_TITLE":"سجل البحث","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"يمكنك البحث عن عناوين, ممثلين, قنوات والمزيد ...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"مسح سجل البحث","STREMIO_TV_FILTERS_DESCRIPTION":"اختر احد الفلترات اسفله","FILTERS":"قلترات","SETTINGS":"الاعدادات","ACCOUNT":"الحساب","LOGOUT":"تسجيل الخروج","THEMES":"مظاهر","PLAYBACK":"العرض","PLAYBACK_SPEED":"سرعة العرض","AUDIO_TRACKS":"مسار صوت","VIDEOS":"فديوهات","SERVER":"السيرفر","LINKS":"روابط","ABOUT":"حول","INTERFACE":"الواجهة","ANIMATIONS":"التاثيرات","STATUS":"الحالة","LANGUAGE":"اللغة","SIZE":"الحجم","DELAY":"التاخير","BOLD":"عريض","TEXT_COLOR":"لون الكتابة","OUTLINE_COLOR":"لون الخط الخارجي","BACKGROUND_COLOR":"لون الخلفية","BACKGROUND_BLUR":"ضبابية الخلفية","SEEK_TIME_DURATION":"مدة وقت التقديم","AUTO_PLAY":"التشعيل التلقائي للحلقة القادمة","PLAY_NOW":"شغل الان","MARK_AS_WATCHED":"تعليم كتمت مشاهدته","MARK_AS_UNWATCHED":"تعليم كلم تتم مشاهدته","REWIND_TO_BEGINNING":"اعادة من الاول","CONTINUE_WATCHING":"اكمل المشاهدة","ALL":"الكل","SECONDS":"ثواني","ON":"مفعل","OFF":"معطل","RELOAD":"اعادة تحميل","EDIT_URL":"تعديل الرابط","NONE":"لاشيء","EMBEDDED":"مضمن","REMOTE_SWITCH_DEVICES":"تبديل الأجهزة","REMOTE_VIDEOS":"فيديوهات","REMOTE_ADJUST_TIMING":"ضبط التوقيت","REMOTE_ADJUST_SIZE":"ضبط الحجم","REMOTE_COULD_NOT_BE_LOADED":"تعذر تحميل Web Remote","REMOTE_RETRY":"أعادة المحاولة","TORRENT_PROFILE_DEFAULT":"إفتراضي","TORRENT_PROFILE_SOFT":"معتدل","TORRENT_PROFILE_FAST":"سريع","TORRENT_PROFILE_ULTRA_FAST":"فائقة السرعة","FAQ_001_H1":"ما هو Stremio؟","FAQ_001_P1":"Stremio هو برنامج مركز وسائط مصمم للترفيه بالفيديو مع وضع سهولة الاستخدام في الاعتبار. يسمح لك Stremio بتنظيم شاهد مجموعتك الخاصة من الأفلام والمسلسلات والقنوات والبث التلفزيوني المباشر.","FAQ_001_P2":"يقوم Stremio بجمع المحتوى الذي يعرضه لك من القرص المحلي ونظام الوظائف الإضافية الخاص بنا.","FAQ_001_P3":"سيُعلمك أيضًا عند ظهور حلقات / مقاطع فيديو / أفلام جديدة تهتم بها ، ويقدم لك توصيات بشأن الأفلام.","FAQ_02_H1":"كيف يقارن Stremio بـ Kodi و Plex؟","FAQ_02_P1":"نحن مستوحون من هذين البرنامجين. لكن لدينا أهدافًا مختلفة - يستهدف Stremio بشكل خاص الفيديو الترفيهي ، ويسعى جاهداً ليصبح الحل السائد لذلك من خلال كونه سهل الاستخدام للغاية.","FAQ_02_P2":"لن يكون Stremio أبدًا قابلاً للتخصيص وغنيًا بالميزات مثل Kodi و Plex ، ولكنه أسهل كثيرًا في الاستخدام. فقط ${1} احصل عليه واطلع على ${2} :)","FAQ_03_H1":"كيف يقارن Stremio بـ Netflix؟","FAQ_03_P1":"مرة أخرى ، يعد Netflix أحد مصادر إلهامنا. نحن نسعى جاهدين لتحقيق تجربة مستخدم Netflix ، بالإضافة إلى الكثير من الأشياء الجيدة المضافة. ولكن الأهم من ذلك ، أننا نمنحك حرية إدارة مكتبتك الخاصة وإضافة مصادر محتوى جديدة باستخدام نظام الملحق الخاص بنا.","FAQ_03_P2":"هذا يجعل Stremio قابلًا للتمديد بشكل لا نهائي ، لذلك عندما تستخدم Stremio ، فأنت لا تقتصر أبدًا على المحتوى الذي تقرر Netflix ترخيصه. على سبيل المثال ، من خلال Stremio ، يمكنك مشاهدة محتوى من $ {1} Filmon.tv ${2} ، ${3} Twitch.tv ${4} ، ${5} YouTube ${6} ، ${7} Vodo ${8} وحتى ${9} Netflix ${10} نفسها!","FAQ_04_H1":"كيف يقارن Stremio بـ Flipboard؟","FAQ_04_P1":"لا نتلقى هذا السؤال كثيرًا ، إلا عند التحدث إلى أشخاص مبتدئين :)","FAQ_04_P2":"يعد Stremio عن طريق تصميم مجمع محتوى ، مما يجعله بشكل أساسي Flipboard للفيديو. هذا واضح جدًا في قسم Board الخاص بنا ، والذي يمنحك كتالوجات وإشعارات حلقة جديدة / فيديو جديد لما تتابعه ، تمامًا مثل Flipboard.","FAQ_05_H1":"كيف يقارن Stremio بـ Popcorn Time؟","FAQ_05_P1":"يتشابه كل من Stremio و Popcorn Time في واجهة المستخدم ، لأنه لا توجد طرق عديدة لعمل كتالوجات فيديو ترفيهية بشكل صحيح :)","FAQ_05_P2":"ولكن بينما يركز Popcorn Time على بث التورنت من مصادر محددة ، فإن Stremio غير مقيد وهو مجرد مجمع محتوى - فهو غير مقيد بمصدر محتوى معين.","FAQ_05_P3":"علاوة على ذلك ، نحن لا نقدم أي إضافات تورنت افتراضيًا ، لذلك لا يغطي Stremio حالة استخدام Popcorn Time بالوظائف الرسمية.","FAQ_05_P4":"الفرق الملحوظ الآخر هو أن Popcorn Time مفتوح المصدر بالكامل ، بينما Stremio ${1} مفتوح المصدر جزئيًا ${2}.","FAQ_06_H1":"هل ستضيف هذا الفيلم / المسلسل؟","FAQ_06_P1":"لا آسف :(","FAQ_06_P2":"كما هو مذكور في معظم الأسئلة الأخرى ، لا يوفر Stremio أي محتوى بمفرده - تتم إضافة كل شيء من خلال نظام الوظائف الإضافية. في حالة وجود طلب محتوى ، يمكنك استخدام الزر إبلاغ في المشغل ، والذي سيرسل بريدًا إلكترونيًا إلى مؤلف الوظيفة الإضافية التي تستخدمها حاليًا.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"هل ستقوم بإنشاء أضافة لـ X؟","FAQ_08_P1":"إنه ممكن تمامًا.","FAQ_08_P2":"إذا كانت لديك فكرة عن أضافة ، فأرسل لنا سطرًا على ${1}office@stremio.com ${2} ، ولكن يُرجى التأكد من أن فكرة الملحق لن تنتهك أي حقوق طبع ونشر أو شروط استخدام.","FAQ_08_P3":"في الوقت الحالي ، الأشياء التالية في خارطة الطريق هي الإضافات لـ FandangoNOW ، فيديو Filmon.tv عند الطلب و Crunchyroll.","FAQ_09_H1":"هل يستخدم Stremio برنامج BitTorrent؟","FAQ_09_P1":"نعم ، يدعم Stremio BitTorrent كبروتوكول دفق. يمكنك استخدام ذلك إما مع أضافة تورنت ، أو عن طريق سحب وإفلات ملف .torrent في Stremio ، أو عن طريق لصق رابط تورينت في شريط البحث.","FAQ_09_P2":"يرجى ملاحظة أن الملحق الرسمي الوحيد الذي يستخدم BitTorrent هو ${1} Vodo ${2} ، والذي يوفر محتوى مستقل ، وكلها مسموح بتوزيعها باستخدام BitTorrent.","FAQ_09_P3":"نحن لا ندعم استخدام أي أدوات إضافية لطرف ثالث والتي قد تتيح انتهاك حقوق النشر.","FAQ_10_H1":"ما الذي يمكنني مشاهدته في Stremio باستخدام الإضافات الرسمية؟","FAQ_10_P1":"بشكل افتراضي ، يمكنك مشاهدة محتوى Filmon.tv و YouTube و Vodo داخل Stremio نفسها ، باستخدام مشغلها المضمن. بالإضافة إلى ذلك ، لدينا ملحق لـ Twitch.tv وعدد قليل من البرامج الأخرى.","FAQ_10_P2":"يوفر هذا مجتمعة مجموعة مختارة من:","FAQ_10_L1":"قنوات تلفزيونية شهيرة ، تقدمها Filmon.tv - على سبيل المثال E4 و BBC و Bollyworld TV","FAQ_10_L2":"كل شيء من YouTube - على سبيل المثال BBC News و Top Gear و Vevo و PewDiePie","FAQ_10_L3":"الأفلام المستقلة مع Vodo","FAQ_10_L4":"يتم بث الألعاب عبر الإنترنت باستخدام Twitch.tv","FAQ_10_P3":"بالإضافة إلى ذلك ، هناك العديد من مصادر المحتوى المتوفرة مع Guidebox ووظائف Netflix الإضافية ، والتي <b> لا تعمل </ b> بالكامل داخل Stremio ، ولكنها ستعيد التوجيه إلى الخدمة المحددة. على سبيل المثال ، ستمنحك الوظيفة الإضافية Guidebox مجموعة مختارة من الأفلام التي يمكنك بثها في الولايات المتحدة مجانًا ، من خدمات مثل TubiTV و Crackle.","FAQ_11_H1":"لن يتم تثبيت Stremio ، فماذا أفعل؟","FAQ_11_P1":"إذا كنت تستخدم نظام التشغيل Windows ، فجرّب ${1} أداة التثبيت البديلة هذه ${2}.","FAQ_11_P2":"إذا كنت تستخدم نظام التشغيل Mac OS X ، فيرجى العلم أننا لا ندعم أي شيء أقدم من OS X Mavericks (10.9).","FAQ_11_P3":"إذا كنت تستخدم نظام Linux ، فاعلم أننا ندعم نظام Linux 64 بت (x64) فقط في الوقت الحالي.","FAQ_11_P4":"إذا كنت لا تزال غير قادر على حل مشكلتك ، فيرجى مراسلتنا على ${1} Facebook group ${2}.","FAQ_12_H1":"لماذا يشتكي برنامج مكافحة الفيروسات الخاص بي؟ هل Stremio آمن؟","FAQ_12_P1":"نؤكد لك أن Stremio هو ${1} 100٪ نظيف ${2}.","FAQ_12_P2":"يشكو برنامج مكافحة الفيروسات الخاص بك لأننا نقوم بتضمين إعلانات في أداة التثبيت الخاصة بنا ، والتي تتعرف عليها بعض برامج مكافحة الفيروسات على أنها أدوات إعلانية.","FAQ_12_P3":"إذا كنت لا تزال غير متأكد ، فيمكنك تجربة ${1} المثبت البديل ${2}.","FAQ_13_H1":"كيف يمكنني عمل أضافة جديدة ؟","FAQ_13_P1":"بالنسبة للمبتدئين ، نوصيك بالتحقق من وحدة نظام الإضافات ${1} الخاصة بنا ${2} على GitHub.","FAQ_13_P2":"بعد ذلك ، يمكنك اتباع البرنامج التعليمي ${1} Hello World ${2}.","FAQ_13_P3":"إذا لم تكن لديك أي مهارات برمجية ، فالرجاء نشر فكرتك على ${1} مجتمع Reddit ${2} والاتصال بنا لتقديم فكرة الملحق الخاص بك على ${3}office@stremio.com${4}.","FAQ_14_H1":"كيف يتم نشر الإضافات؟","FAQ_14_P1":"عندما تنشئ ملحقًا ومضيفًا ، وتضع حقل <b> نقطة نهاية </b> في البيان الخاص بك ، والذي يشير إلى عنوان ملحق يعمل ، فإن الوظيفة الإضافية ستنشر نفسها تلقائيًا في كتالوج ${1} Addon ${2} .","FAQ_14_P2":"يحدث هذا لأن جزء الخادم من وحدة stremio-addons يقوم تلقائيًا بإجراء مكالمة إلى واجهة برمجة التطبيقات الخاصة بنا للإعلان عن الملحق. عندما تتحقق واجهة برمجة التطبيقات الخاصة بنا من <b> نقطة النهاية </ b> كإضافة صالحة ، ستبدأ في الظهور في الكتالوج.","FAQ_15_H1":"هل يمكنني تشغيل Stremio في المتصفح الخاص بي؟","FAQ_15_P1":"ليس في الوقت الحالي ، لكن هذا قادم!","FAQ_15_P2":"إذا كنت مهتمًا برؤية ألفا ، فيمكنك رؤيته هنا: ${1} alpha4.strem.io ${2}. ضع في اعتبارك أن البث معطل في هذا الإصدار ألفا. نحن ندعم Chrome و Firefox و Opera و Edge.","FAQ_16_H1":"الإرسال إلى التلفزيون لا يعمل / لا تعمل الترجمة","FAQ_16_P1":"يستخدم Casting to TV تقنية DLNA وهي غير متسقة للغاية بين مختلف العلامات التجارية والموديلات. لهذا السبب ، ليس لدينا القدرة على اختباره في كل حالة ، لذا فهو بعيد عن الكمال. على الرغم من ذلك ، نحن نعمل على تحسينه باستمرار ولكن لا يمكننا منحك تقديرًا للوقت حول موعد بدء DLNA في العمل بشكل صحيح مع تلفزيونك.","FAQ_16_P2":"إذا كنت لا ترى التلفزيون الخاص بك في قائمة الإرسال ، فالرجاء محاولة تعطيل اتصال الشبكة وإعادة تمكينه (في Windows ، انقر بزر الماوس الأيمن فوق الشبكة واستخدم تمكين / تعطيل) ، وكذلك إعادة تشغيل جهاز التوجيه والتلفزيون والكمبيوتر .","FAQ_16_P3":"إذا كنت لا تزال تواجه مشكلات ، فيمكنك مساعدتنا عن طريق إرسال معلومات الطراز والعلامة التجارية التلفزيونية الخاصة بك على ${1}office@stremio.com${2}.","FAQ_16_P4":"في غضون ذلك ، نوصي باستخدام Chromecast ، الذي ندعمه جيدًا ، أو ببساطة قم بتوصيل التلفزيون بجهاز الكمبيوتر باستخدام كابل HDMI.","FAQ_17_H1":"يتجمد Stremio و / أو يتعطل ، ماذا يمكنني أن أفعل؟","FAQ_17_P1":"بادئ ذي بدء ، إذا كنت تستخدم Windows 7 مع برنامج مكافحة الفيروسات AVG: لدينا مشكلة في هذه المجموعة. المشكلة في AVG نفسه ، وليس هناك طريقة معقولة لحلها من جانبنا. لسوء الحظ ، لن تعمل الاستثناءات أو تعطيل برنامج مكافحة الفيروسات. الحل الوحيد هو استبدال AVG بشيء آخر.","FAQ_17_P2":"إذا لم تكن هذه هي المشكلة ، ولكنك لا تزال تستخدم Windows ، فيرجى التحديث إلى أحدث حزمة خدمة وتحديث / إعادة تثبيت برامج تشغيل GPU ، ثم حاول مرة أخرى.","FAQ_17_P3":"إذا لم يتم حل المشكلة بعد ، أو إذا كنت تستخدم نظام التشغيل Mac أو Linux ، فيرجى مراسلتنا للإبلاغ عن التفاصيل الدقيقة للمشكلة على ${1} مجموعة Facebook ${2}.","FAQ_18_H1":"كيف يمكنني عمل أضافة ؟","FAQ_18_P1":"بالنسبة للمبتدئين ، نوصيك بالتحقق من وحدة نظام الإضافات ${1} الخاصة بنا ${2} على GitHub.","FAQ_18_P2":"بعد ذلك ، يمكنك اتباع البرنامج التعليمي ${1} Hello World ${2}.","FAQ_18_P3":"إذا لم تكن لديك أي مهارات برمجية ، فالرجاء نشر فكرتك على ${1} مجتمع Reddit ${2} والاتصال بنا لتقديم فكرة الملحق الخاص بك على ${3}office@stremio.com${4}.","FAQ_19_H1":"لماذا يشغل Stremio مساحة على القرص؟","FAQ_19_P1":"يحتوي Stremio على <b> ذاكرة تخزين مؤقت محلية </ b> للاحتفاظ مؤقتًا بملفات الفيديو التي تقوم بدفقها.","FAQ_19_P2":"هذا له فائدتان: أولاً ، يسمح لـ Stremio بالتخزين المؤقت للفيديو مسبقًا لضمان تدفق أكثر سلاسة. ثانيًا ، يحتفظ بمقاطع الفيديو في ذاكرة التخزين المؤقت المحلية حتى تتمكن من متابعة مشاهدتها في وضع عدم الاتصال.","FAQ_19_P3":"يعتمد مقدار ما يحتفظ به Stremio على إعداد <b> ذاكرة التخزين المؤقت </ b> في لوحة الإعدادات. قد يحافظ Stremio على الكمية المحددة (على سبيل المثال 2 جيجا بايت) على القرص الخاص بك ، ما لم يكن الفيديو المتدفق حاليًا أكبر من ذلك ، وفي هذه الحالة يجب عليه تخصيص مساحة تخزين كافية للاحتفاظ به حتى تقوم بدفقه.","FAQ_20_H1":"أين هو مجلد ذاكرة التخزين المؤقت؟","FAQ_20_P1":"في Windows ، يكون stremio-cache في محرك الأقراص الذي اخترته في الإعدادات (مثال \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"على MacOS ، إنه \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"على Linux ، إنه \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"تلقيت خطأ لم يتم العثور على خادم البث ، فماذا أفعل؟","FAQ_21_P1":"إذا تلقيت هذا الخطأ ، فهذا يعني أحد الأشياء القليلة:","FAQ_21_P2":"1) أنت تحاول استخدام ملحق مدعوم من مصدر YouTube / BitTorrent ، من خلال إصدار الويب ${1} الخاص بنا ${2}. في هذه الحالة ، يجب عليك تثبيت إصدار سطح المكتب من $ {3} موقعنا $ {4}.","FAQ_21_P3":"2) هناك خطأ ما في تثبيت Stremio. في هذه الحالة ، حاول إعادة تثبيت أحدث إصدار لسطح المكتب من ${1} موقع الويب ${2}. إذا لم يساعدك ذلك ، فحاول تعطيل برامج مكافحة الفيروسات والجدران النارية وإعادة تشغيل الكمبيوتر والمحاولة مرة أخرى. إذا لم يفلح هذا أيضًا ، يرجى مراسلتنا على ${3} مجموعتنا على Facebook ${4}.","FAQ_22_H1":"لا يمكنني رؤية / استخدام معظم الوظائف الإضافية على iOS","FAQ_22_P1":"نظرًا للقيود الواردة في شروط وأحكام متجر تطبيقات Apple ، فقد قصرنا تطبيق iOS على مجموعة معينة من الوظائف الإضافية.","FAQ_22_P2":"لكن كن مطمئنًا - سيكون هناك المزيد من الوظائف الإضافية لنظام iOS في المستقبل ، وقد نضيف أيضًا تكاملًا يسمح لك باستخدام جميع إضافات Stremio بفضل توصيل تطبيق iOS بخادم Stremio Streaming Server."}')},7726:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Филм","TYPE_series":"Сериал","TYPE_tv":"TV канал","TYPE_channel":"Канал","TYPE_other":"Друго","TYPE_movie_PL":"Филми","TYPE_series_PL":"Сериали","TYPE_tv_PL":"TV канали","TYPE_channel_PL":"Канали","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Назад","MORE":"Още","DONE":"Готово","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Открий","Board":"Табло","Library":"Библиотека","My Library":"Моята библиотека","Calendar":"Календар","NOTIFICATION_ONLINE":"Вече сте онлайн","NOTIFICATION_OFFLINE":"В момента сте офлайн","INTERNET_CONNECTION":"Интернет връзка","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"търси","SEARCH_NO_RESULTS":"Не са намерени резултати","SEARCH_EXPLANATION_CONTENT":"Търсете за филми, сериали, TV и YouTube канали","SEARCH_EXPLANATION_PEOPLE":"Търсете за актьори и режисьори","SEARCH_PASTE_LINKS":"Поставете HTTP или Magnet линк","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Добави","REMOVE_FROM_LIB":"Премахни","ADDED_TO_LIB":"Добавено към библиотека","REMOVED_FROM_LIB":"Премахнато от библиотека","TRAILER":"Трейлър","WATCH_TRAILER":"Трейлър","WATCH_NOW":"Гледай","SHOW":"Покажи","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb рейтинг","YEAR":"Година","DIRECTOR":"Режисьор","WRITER":"Автор","LEAD_ACTORS":"В главните роли","CAST":"Състав","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Излъчено","SEASONS":"Сезони","GENRE":"Жанр","CATALOG":"Каталог","SUMMARY":"Описание","SHOW_MORE":"Show More","SIMILAR":"Подобни","UPCOMING":"Очаквайте","ENDED":"Прекратено","DURATION":"Продължителност","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"търси видеа","SEARCH_PLACEHOLDER":"search or paste magnet link","ADDON":"addon","ADDONS":"Addons","OFFICIAL":"официални","ADDONS_OFFICIAL":"Официални addon-и","ADDONS_POPULAR":"Популярни в района ви","ADDON_FREE":"безплатно","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"subscription","ADDON_STREAM_GEORESTRICTED":"недостъпно във вашия район","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Достъпни източници","NO_STREAM":"Няма достъпни източници","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Show all addons »","ADDON_CATALOGUE_MORE":"More addons »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Защитен addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Предупреждение: съществуващ addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Филмът е все още по кината","WATCH_IN_CINEMA":"Гледайте го в киното","IN_THEATER":"По кината","GET_TICKETS":"Купи билети","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Нямаме информация за този канал все още.<br>Върнете се след няколко минути.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Добавете го в библиотеката, за да получите известие.","GET_NOTIFIED_WHEN_AVAILABLE":"Ще получите известие като излезе.","WARNING_STREAMING_SERVER":"Предупреждение: локалният streaming server не е свързан. Не е възможно стриймване от YouTube и BitTorrent.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"Изглежда като","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"стриймваме от","CASTING_TO":"Възпроизвеждаме на","NETWORK_STATUS":"Мрежа","STREAM_SPEED":"Скорост:","STREAM_BUFFERED":"Буфер:","PEERS_INFO":"Пиърове","PEERS_ACTIVE":"Активни:","PEERS_CONNECTED":"Свързани:","PEERS_WAITING":"Чакащи:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"зареждане...","PLAYING_LOCAL":"възпроизвеждане от локален файл","PLAYING_CACHE":"възпроизвеждане от кеш","WRONG_SUBS":"Грешни субтитри?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Изберете устройство","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Телефон / Таблет","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Смени субтитрите на ","SUBTITLES_CHANGE_NONE":"Няма други субтитри за този език.","SUBTITLES_CHANGE_ACIVE":"В момента субтитри #{{subtitlesDialog.activeIdx + 1}} са активирани. Кликнете \\"Продължи\\" за да активирате #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Алтернативно,","SUBTITLES_ADJUST_DELAY":"Настройте забавяне на субтитрите:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Или използвайте <span>G</span> / <span>H</span>, за да настроите субтитрите.","SUBTITLES_ADJUST_DELAY_TIP":"Съвет: може да ползвате <span>G</span> / <span>H</span>, за да настроите субтитрите.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Сезон","EPISODE":"Епизод","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"популярни","SORT_RECENT":"последни","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"рейтинг","SORT_WATCHED":"гледани","SORT_YEAR":"година","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"продължи","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Избрано","DISCOVER_TOP":"Топ","DISCOVER_OSCAR":"Носители на Оскар","DISCOVER_WARNING_TITLE":"Опа!","DISCOVER_EMPTY_CATALOG":"Този addon върна празно съдържание.","DISCOVER_ADULT_WARNING":"Това съдържание е достъпно само за възрастни. Имаш ли навършени 18 години?","DISCOVER_NOADDON_WARNING":"Внимание: няма активен Stremio addon за този тип съдържание. Тук виждате запазена информация, тя няма да се обнови.","DISCOVER_LOAD_ERR":"Съдържанието не може да се зареди. Възникна грешка.","DISCOVER_ADDON_UNINSTALLED":"Това съдържание вече не е достъпно. Може би addon-ът е премахнат.","UNINSTALL_THIS_ADDON":"Деинсталирай този addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Стартирай новата версия!","UPGRADE":"Достъпна е нова версия","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Обновете вашата версия на Stremio","MANUAL_UPDATE_LINE1":"Използвате стара версия на Stremio.","MANUAL_UPDATE_LINE2":"Моля обновете колкото може по-скоро.","BUTTON_UPDATE_LATTER":"По-късно","BUTTON_UPDATE_NOW":"Обнови сега","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Влизане с Facebook","FB_NOTHINGSHARED":"Нищо не се споделя без ваше разрешение.","FB_NOPOST":"We won’t post anything on your behalf","OR":"или","I_ACCEPT":"Прочетох и приемам","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Общите условия","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Паролите се разминават","SIGN_UP":"Регистрирай се","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Вход","LOG_OUT":"Отписване","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Влизане като гост","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"кликнете тук","WRONG_PASSWORD":"Грешна парола. В случай, че сте я забравили, ","SET_A_PASS":"сложете ваша парола","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"Този email е използван с Фейсбук логин.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Избраният адон не се поддържа на тази платформа.","ADDON_DISCLAIMER":"Използването на addon-и от трети лица е ваша отговорност.","ADDON_ACTIVATE":"Активирай този addon?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Какво ново?","BUTTON_CONTINUE":"Продължи","BUTTON_ACTIVATE":"Активирай","BUTTON_ACTIVATED":"Активирано","BUTTON_CANCEL":"Отказ","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Отхвърли всички","BUTTON_VIEW_ALL":"виж всички","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Библиотеката ви е празна. Открийте колко е полезна :) ","HOW_START":"Започнете така:","LIB_EMPTY_CAL":"Календарът показва епизоди от сериалите във вашата Библиотека.","HOW_START_CAL":"Ето как добавяте сериали:","LIB_EMPTY_BOARD":"Тук ще видите каталог от популярно съдържание, както и известия и препоръки, свързани с Библиотеката ви.","HOW_START_BOARD_WAIT":"Моля, добавете няколко канала/сериала и ни дайте няколко минути да съберем известия :)","HOW_START_BOARD":"Ето как добавяте филми и сериали в библиотеката:","IMPORT_FB":"Добавяне от <span>Facebook</span>","IMPORT_TRAKT":"Import your media library from <span>Trakt</span>","IMPORT_DISCOVER":"Намерете интересни неща в <span>Discover</span>","IMPORT_DISK":"Сканирайте за филми и сериали от вашия <span>локален диск</span>","PLEASE_CREATE_ACC":"Моля, <u>създайте акаунт</u>, за да използвате Library и Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from <span>Discover</span>","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your <span>local disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Настройки","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Промяна на парола","SETTINGS_TOS":"Условия за ползване","SETTINGS_SUPPORT":"Поддръжка","SETTING_LANGUAGE":"Език","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Спиране","CONNECTED":"Connected","AUTHENTICATE":"оторизация","CACHING":"Кеширане","SETTINGS_CACHING_DRIVE":"Изберете диск за кеш","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Януари","February":"Февруари","March":"Март","April":"Април","May":"Май","June":"Юни","July":"Юли","August":"Август","September":"Септември","October":"Октомври","November":"Ноември","December":"Декември","Monday":"Понеделник","Tuesday":"Вторник","Wednesday":"Сряда","Thursday":"Четвъртък","Friday":"Петък","Saturday":"Събота","Sunday":"Неделя","Action":"Екшън","Comedy":"Комедия","War":"Военни","Family":"Семейни","Animation":"Анимация","Adventure":"Приключенски","Fantasy":"Фентъзи","Crime":"Криминални","Mystery":"Мистерия","Romance":"Романтични","Drama":"Драма","Horror":"Ужаси","Thriller":"Трилъри","Sci-Fi":"Sci-Fi","Music":"Музикални","Biography":"Биографични","Documentary":"Документални","Sport":"Спортни","Musical":"Мюзикъли","Western":"Уестърн","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"ново видео","new episode":"нов епизод","new movie":"нов филм","recommended":"препоръчано","we recommend":"we recommend","offer of the day":"offer of the day","news":"новини","music video":"музикално видео","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Премахни известия","CTX_DISMISS_ALL":"Премахни всички","CTX_SHARE":"Сподели","CTX_COPY_SHARE_LINK":"Копирай линк за споделяне","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Покажи","CTX_PLAY":"Гледай","CTX_PLAY_IN":"Гледай в","CTX_PLAY_ON":"Гледай на","CTX_WATCH_ON":"Гледай на","CTX_WATCH":"Гледай","CTX_WATCHED":"Гледано","CTX_WATCH_BEGINNING":"Гледай от началото","CTX_WATCH_MOBILE":"Гледай на мобилно устройство","CTX_REWIND":"Превърти до началото","CTX_MARK_WATCHED":"Маркирай като гледано","CTX_MARK_NON_WATCHED":"Маркирай като негледано","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Получавай нови известия","CTX_REMOVE_CACHE":"Премахни от кеш","CTX_REMOVE_CACHE_EP":"Премахни епизод от кеш","CTX_OPEN_CONTAINING":"Отвори папка","CTX_REMOVE":"Премахни от библиотеката","CTX_AVAILABLE_OFFLINE":"Достъпно офлайн","CTX_PAUSED":"Пауза","CTX_ALWAYS_ON_TOP":"Винаги отгоре","CTX_FULLSCREEN":"Цял екран","CTX_WRONG_SUBS":"Грешни субтитри?","CTX_REPORT_ISSUES":"Докладвай проблем","CTX_COPY":"Копирай","CTX_PASTE":"Постави","CTX_CLEAR":"Изчисти","CTX_CLEAR_RECENT_SEARCHES":"Изчисти последни търсения","HELLO_THERE":"Здравейте","HOPE_YOU_ENJOY":"Надяваме се, че харесвате Stremio и вече ви е едно от любимите приложения!","WHO_ARE_WE":"Кои сме ние? Ние сме двама и работихме усилено всеки ден в последните 3 години, за да подобряваме този продукт.","SUPPORT_US":"Ако продуктът ни ви е полезен и ви прави щастливи, подкрепете ни!","SPREAD_THE_WORD":"Споделете с приятелите си, разгласете Stremio","MORE_PEOPLE":"Колкото повече хора ползват Stremio, толкова по-добро ще става!","SEND_A_LINK":"Или изпратете линк към уебсайта","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"Моите Addons","ADDON_COMMUNITY":"Неофициални Addons","ADDON_OFFICIAL":"Официални Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Търси addons","ADDON_INSTALL":"Инсталирай","ADDON_CONFIGURE":"Конфигурирай","ADDON_UNINSTALL":"Деинсталирай","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Инсталирано","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon страница","ADDON_TOP_CONTENT":"Най-доброто от този Addon","ADDON_PROVIDES":"предоставя","ADDON_WATCH":"Гледай #{types} сега!","ADDON_WATCH_FREE":"Гледай #{types} БЕЗПЛАТНО сега!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"Повече #{types} в Discover","ADDON_PROVIDES_STREAMS":"Гледай #{types}","ADDON_PROVIDES_STREAMS_FREE":"Гледай #{types} БЕЗПЛАТНО","ADDON_PROVIDES_SUBTITLES":"Субтитри за #{types}","ADDON_CANTDETECT":"Не успяхме да засечем работещо Stremio, затова не можем да засечем кои addons са ви инсталирани.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Продължи да гледаш","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},8569:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Pel·lícula","TYPE_series":"Sèries","TYPE_tv":"Canal de TV","TYPE_channel":"Canal","TYPE_other":"Altres","TYPE_movie_PL":"Pel·lícules","TYPE_series_PL":"Sèries","TYPE_tv_PL":"Canals de TV","TYPE_channel_PL":"Canals","TYPE_other_PL":"Altres","TYPE_ALL":"All","VIDEO":"Vídeo","BACK":"Enrere","MORE":"Més","DONE":"Fet","COPY":"Copia","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Mode d\'emissió","CASTING_MODE_HLSV2":"Per defecte","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Sense transcodificació","Discover":"Descobrir","Board":"Panell","Library":"Biblioteca","My Library":"La meva Biblioteca","Calendar":"Calendari","NOTIFICATION_ONLINE":"Ara esteu en línia","NOTIFICATION_OFFLINE":"Ara esteu fora de línia","INTERNET_CONNECTION":"Connexió de xarxa","STORAGE_FULL_TITLE":"Advertència: Emmagatzematge ple!","STORAGE_FULL_TEXT":"Stremio no podrà desar la configuració, les preferències ni la informació d\'inici de sessió. Penseu a reiniciar o tornar a instal·lar Stremio.","SEARCH":"cerca","SEARCH_NO_RESULTS":"No s\'han trobat resultats","SEARCH_EXPLANATION_CONTENT":"Cerca pel·lícules, sèries, canals de YouTube i TV","SEARCH_EXPLANATION_PEOPLE":"Cerca actors, directors i escriptors","SEARCH_PASTE_LINKS":"Enganxa enllaços HTTP i Magnètics","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Afegir a la Biblioteca","REMOVE_FROM_LIB":"Elimina de la Biblioteca","ADDED_TO_LIB":"Afegit a la Biblioteca","REMOVED_FROM_LIB":"Eliminat de la Biblioteca","TRAILER":"Tràiler","WATCH_TRAILER":"Mirar el tràiler","WATCH_NOW":"Mirar ara","SHOW":"Mirar","SHOW_MOVIE":"Mirar Pel·lícula","WATCH_RANDOM":"Mirar aleatòriament","IMDB_RATING":"Qualificació IMDb","YEAR":"Any","DIRECTOR":"Director","WRITER":"Escriptor","LEAD_ACTORS":"Actors principals","CAST":"Elenc","CREW":"Equip tècnic","SHOW_MORE_CAST":"Mostra més »","AIRED":"Emès","SEASONS":"Temporades","GENRE":"Gènere","CATALOG":"Catàleg","SUMMARY":"Resum","SHOW_MORE":"Mostra Més","SIMILAR":"Similar","UPCOMING":"Properament","ENDED":"Finalitzat","DURATION":"Duració","FEATURED":"Destacat","METADATA":"Metadades","CATEGORY":"categoria","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"cercar vídeos","SEARCH_PLACEHOLDER":"cercar o enganxar URL","ADDON":"complement","ADDONS":"Complements","OFFICIAL":"oficial","ADDONS_OFFICIAL":"Complements Stremio oficials","ADDONS_POPULAR":"Popular a la vostra regió","ADDON_FREE":"gratuït","ADDON_PEERED":"compartit","ADDON_SUBSCRIPTION":"subscripció","ADDON_STREAM_GEORESTRICTED":"no disponible a la vostra regió","ADDON_STREAM_OFFLINECACHE":"Memòria cau fora de línia","ADDON_STREAM_LOCALFILE":"Fitxer local","SHARE_ADDON":"Comparteix el complement","AVAILABLE_STREAMS":"Streams disponibles","NO_STREAM":"No s\'ha trobat cap stream","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Per obtenir més streams, instal·leu més complements","STREAM_NOT_SUPPORTED":"El stream seleccionat no és compatible amb aquesta plataforma.","ADDON_CATALOGUE":"Mostra tots els complements »","ADDON_CATALOGUE_MORE":"Instal·la complements","REPO_ADDED":"Repositori afegit","ADDON_REPO_EXIST_ERR":"Aquesta col·lecció de complements ja existeix","ADDON_REPO_ERR":"S\'ha produït un error en afegir la col·lecció","ADDON_ADD_ERR":"S\'ha produït un error en afegir un complement","ERR_ADDON_PROTECTED":"No es pot desinstal·lar el complement, està protegit","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Hi ha hagut un problema - l\'autenticació pot haver fallat","ERR_NOT_COLLECTION_URL":"No és un URL de col·lecció","ERR_NOT_ADDON_URL":"No és un URL de complement vàlid","ERR_DETECTFROMURL":"No es pot trobar cap complement/col·lecció en aquest URL","ADDON_DUPLICATE_WARNING":"Advertència: complement duplicat","ADDON_COLLECTION_SET_FAILED":"Ha fallat la sincronització de complements instal·lats al vostre compte","SETTINGS_DATA_EXPORT":"Exporta dades d\'usuari","ADDON_PULL_FAILED":"Ha fallat la sincronització dels complements instal·lats del vostre compte","REFRESH_ON_CLICK":"Prem per reintentar","STILL_IN_THEATER":"Pel·lícula encara als cinemes","WATCH_IN_CINEMA":"Mireu-lo al vostre cinema local","IN_THEATER":"En el cinema","GET_TICKETS":"Obtenir entrades","UPCOMING_EPISODE":"Pròxim episodi","UPCOMING_EPISODE_MESSAGE":"Aquest episodi s’emetrà al","MISSING_DATE_EPISODE":"Falta la data de l\'episodi","MISSING_DATE_EPISODE_MESSAGE":"És possible que aquest episodi encara no s’hagi emès","CHANNEL_NOT_SCRAPED":"Aquest canal encara no s\'ha habilitat.<br>Si us plau, torneu d\'aquí a uns minuts.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Afegiu-lo a la vostra Biblioteca per rebre una notificació un cop estigui disponible.","GET_NOTIFIED_WHEN_AVAILABLE":"Rebràs una notificació un cop estigui disponible.","WARNING_STREAMING_SERVER":"Advertència: no s\'ha trobat el servidor d\'streaming local. L\'streaming des de fitxers locals, YouTube i BitTorrent no estarà disponible.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Advertència: és possible que aquest vídeo no sigui compatible amb el vostre maquinari. Tingueu en compte que la reproducció pot ser lenta.","PLAYER_ERROR":"Vaja, error del reproductor","PLAYER_ERROR_LOOKSLIKE":"Sembla que","PLAYER_ORIENTATION":"Orientació del reproductor","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Bloquejat","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"L\'orientació del reproductor bloquejada en horitzontal","PLAYER_ORIENTATION_SENSOR":"Orientació del reproductor automàtica (sensor)","PLAYER_PLAYBACK_SPEED":"Velocitat de reproducció","PLAYER_PLAYBACK_ERROR":"Error de reproducció, torneu-ho a provar","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Error desconegut","PLAYER_PLAYBACK_ERROR_DEFAULT":"Ho sentim, aquest vídeo no pot ser reproduït per {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"En directe","PLAYER_NEXT_VIDEO_TITLE":"A continuació","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Descartar","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Veure ara","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"transmissió des de","CASTING_TO":"S\'està emetent a","NETWORK_STATUS":"Estat de la xarxa","STREAM_SPEED":"Velocitat del stream:","STREAM_BUFFERED":"Emmagatzemat:","PEERS_INFO":"Informació dels pars","PEERS_ACTIVE":"Actiu:","PEERS_CONNECTED":"Connectat:","PEERS_WAITING":"Esperant:","TRANSCODING_WARNING":"Advertència: transcodificant vídeo.","STREAM_LOADING":"carregant ...","PLAYING_LOCAL":"reproduint des del fitxer local","PLAYING_CACHE":"reproduint des de la memòria cau","WRONG_SUBS":"Subtítols incorrectes?","ERR_SUBS_LOADING_TITLE":"Error en carregar els subtítols","ERR_SUBS_LOADING":"Ha fallat la càrrega de subtítols: això podria ser un problema amb el complement que utilitzeu o amb la vostra connexió de xarxa","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Els següents complements de subtítols han fallat","ERR_CASTING_UPDATE_TITLE":"No s\'ha pogut actualitzar la informació del dispositiu d\'emissió: el servidor d\'streaming podria estar fora de línia","CHOOSE_DEVICE":"Trieu un dispositiu on mirar-lo","NO_CAST_DEVICES":"No hi ha dispositius d\'emissió disponibles.","NO_SETTINGS":"No hi ha cap configuració disponible.","PHONE_TABLET":"Telèfon / Tauleta","SUBTITLES":"Subtítols","SUBTITLES_CHANGE":"Canvia els subtítols per a ","SUBTITLES_CHANGE_NONE":"No hi ha cap altre subtítol en aquest idioma, ho sento.","SUBTITLES_CHANGE_ACIVE":"Actualment els subtítols #{{subtitlesDialog.activeIdx + 1}} estan activats. Prem \\"Continua\\" per activar els subtítols #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativament,","SUBTITLES_ADJUST_DELAY":"Ajustar el retard de subtítols:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"O usa les tecles <span>G</span> / <span>H</span> durant la reproducció per ajustar.","SUBTITLES_ADJUST_DELAY_TIP":"Nota: podeu utilitzar les tecles <span>G</span> / <span>H</span> durant la reproducció per ajustar.","SUBTITLES_DELAY":"Retard de subtítols:","SUBTITLES_LOADING":"Carregant els subtítols...","SUBTITLES_UNAVAILABLE":"No hi ha subtítols externs disponibles","SUBTITLES_DISABLED":"Desactivat","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Àudio","DEFAULT_LANGUAGE":"Idioma per Defecte","DEFAULT_SECONDARY_LANGUAGE":"Idioma Secundari per Defecte","SEASON":"Temporada","EPISODE":"Episodi","SPECIAL":"Especial","SORT":"ordenar","SORT_BY":"Ordenar per","FILTER":"filtrar","SORT_TRENDING":"tendències","SORT_RECENT":"recent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"qualificació","SORT_WATCHED":"vist","SORT_YEAR":"any","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Nou per a tu","New Episodes":"Nous episodis","New Videos":"Nous vídeos","Recommendations":"Recomanacions","LIBRARY_RESUME":"Reprendre","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Detalls","LIBRARY_RESUME_DISMISS":"Descartar","LIBRARY_CLEAR_PROGRESS":"Esborrar progrés","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Destacat","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Guanyadors d\'Oscar","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"Aquest complement ha retornat un contingut buit.","DISCOVER_ADULT_WARNING":"El contingut només és visible per a adults. Teniu més de 18 anys?","DISCOVER_NOADDON_WARNING":"Avís: no hi ha cap complement Stremio actiu per a aquest tipus. Mostrant elements desats, res d\'aquí s\'actualitzarà.","DISCOVER_LOAD_ERR":"El contingut no s\'ha carregat, s\'ha produït un error.","DISCOVER_ADDON_UNINSTALLED":"Aquest contingut ja no està disponible, és possible que hàgiu desinstal·lat el complement.","UNINSTALL_THIS_ADDON":"Desinstal·la aquest complement","ERR_ADDON_NOT_INSTALLED":"Aquest complement no està instal·lat. Instal·lar-lo ara?","DETAIL_RECEIVE_NOTIF_SERIES":"Rep notificacions d\'episodis nous","DETAIL_RECEIVE_NOTIF_VIDEOS":"Rep notificacions de vídeos nous","SIDEBAR_SHOW_STREAMS":"Mostra streams","RELAUNCH":"Rellançar ara!","UPGRADE":"Hi ha disponible una nova versió. Actualitzeu a la darrera versió d\'Stremio","RELOAD_UI":"Recarregar la interfície d\'usuari","MANUAL_UPDATE_TITLE":"Actualitza la teva versió d\'Stremio","MANUAL_UPDATE_LINE1":"Esteu executant una versió obsoleta d\'Stremio, que és molt poc recomanable.","MANUAL_UPDATE_LINE2":"Actualitzeu el més aviat possible.","BUTTON_UPDATE_LATTER":"Ara no","BUTTON_UPDATE_NOW":"Actualitza","ANONYMOUS_USER":"Usuari anònim","DONT_HAVE_ACC":"No teniu cap compte?","HAVE_ACC":"Ja tens un compte?","PASSWORD":"Contrasenya","PASSWORD_CONFIRM":"Confirma la contrasenya","EMAIL":"Correu electrònic","FB_LOGIN":"Continueu amb Facebook","FB_NOTHINGSHARED":"No es comparteix res sense el vostre permís","FB_NOPOST":"No publicarem res en nom vostre","OR":"o","I_ACCEPT":"Accepto els","I_ACCEPT_BY_CLICKING":"En fer clic al botó superior, declaro que accepto els ","TOS":"Termes i condicions","MUST_ACCEPT_TERMS":"Heu d\'acceptar els termes","PASSWORDS_NOMATCH":"Les contrasenyes no coincideixen","SIGN_UP":"Registra\'t","SIGN_UP_EMAIL":"Registra\'t amb el correu electrònic","CLICK_TO_SIGN_UP":"Feu clic aquí per registrar-vos.","LOG_IN":"Iniciar Sessió","LOG_OUT":"Tancar sessió","EXIT_FULLSCREEN":"Surt del mode de pantalla completa","ENTER_FULLSCREEN":"Introduïu el mode de pantalla completa","PLAY_URL_MAGNET_LINK":"Reprodueix URL/Enllaç magnètic","HELP_FEEDBACK":"Ajuda i comentaris","TERMS_OF_SERVICE":"Termes del servei","PRIVACY_POLICY":"Política de Privacitat","ABOUT_STREMIO":"Quant a Stremio","USER_PANEL":"Tauler d\'usuaris","LOGIN_LABEL":"Inicia sessió","GUEST_LOGIN":"Inici de sessió de convidat","GUEST_LOGIN_NOTICE":"No es recomana l\'inici de sessió de convidat. Si feu servir un inici de sessió habitual, Stremio pot sincronitzar la Biblioteca i rebre notificacions de sèries o canals preferits. Esteu segur que voleu continuar?","GUEST_LOGIN_NOTICE_2":"No es recomana l\'inici de sessió com a convidat: no tindreu notificacions sincronitzades de la Biblioteca i del fòrum, que són funcions fonamentals d\'Stremio. Esteu segur que voleu continuar?","CLICK_HERE":"clica aquí","WRONG_PASSWORD":"Correu electrònic o contrasenya incorrectes. En cas que hagueu oblidat la vostra contrasenya, ","SET_A_PASS":"definiu una contrasenya","RESET_PASSWORD":"Restablir la contrasenya","FORGOT_PASSWORD":"Has oblidat la contrasenya?","EMAIL_USED_WITH_FB":"Aquest correu electrònic s\'ha utilitzat amb un inici de sessió de Facebook.","INVALID_EMAIL":"si us plau, introdueixi una adreça de correu electrònic vàlida","INVALID_PASSWORD":"Introduïu una contrasenya vàlida","CONN_ERR":"Error de connexió - torneu-ho a provar més tard.\\n\\nSi això persisteix, desactiveu els tallafocs/antivirus (especialment Bitdefender).","IMPORT_FROM_GUEST":"Importeu la Biblioteca des del vostre compte de convidat","RECEIVE_UPDATES_EMAIL":"Rebeu actualitzacions al vostre correu electrònic des d\'Stremio","LOGIN_FAILED":"Error a l\'iniciar sessió.","SIGNUP_FAILED":"Ha fallat el registre.","SEARCH_FAILED":"La cerca ha fallat","EMAIL_USED":"Aquest correu electrònic ja està en ús.","WAITING_FB_LOGIN":"Iniciant la sessió amb Facebook...","EXTERNAL_PLAYER_TITLE":"Reprodueix en un reproductor extern","EXTERNAL_REMEMBER_PLAYER":"Voleu recordar la vostra elecció?","EXTERNAL_ALWAYS_PLAY":"Sí","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Millor encaix","FIT_SCREEN":"Encaixar la Pantalla","FILL":"Omplir","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Explica\'ns què t\'agrada","INTRO_TASTE_LONG":"Explica\'ns què voleu veure","INTRO_TASTE_PICK":"Selecciona {{interestsRemaining}} interessos","INTRO_TASTE_PICK_MORE":"Selecciona {{interestsRemaining}} interessos més","INTRO_TASTE_HELP_US":"Ajudeu-nos a aprendre més informació sobre vosaltres.","INTRO_TASTE_CHOOSE_THESE":"Trieu alguns d\'aquests:","INTRO_TASTE_CHOOSE_MIN":"Trieu com a mínim 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"Heu de triar almenys 3 categories.","INTRO_TASTE_LIFESTYLE":"Estil de vida","INTRO_TASTE_SPORTS":"Esports","INTRO_TASTE_FOOD_HEALTH":"Alimentació i Salut","INTRO_TASTE_BEAUTY_FASHION":"Bellesa i Moda","INTRO_TASTE_NEWS":"Notícies","INTRO_TASTE_GAMING":"Jocs","INTRO_TASTE_SCIENCE_EDU":"Ciència i Educació","INTRO_TASTE_MUSIC":"Música","INTRO_TASTE_TRAVEL":"Viatges","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comèdia","INTRO_TASTE_DIY":"Fes-ho tu mateix (DIY)","INTRO_TASTE_TECH":"Tecnologia","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Aquesta plataforma no admet el complement seleccionat.","ADDON_DISCLAIMER":"L\'ús de complements de tercers sempre estarà subjecte a la vostra responsabilitat i a la legislació vigent de la jurisdicció on esteu ubicat.","ADDON_ACTIVATE":"Activar aquest complement?","ADDON_REPO_ADD":"URL del repositori de complements","ADDON_ADD":"Afegir","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Que hi ha de nou","BUTTON_CONTINUE":"Continua","BUTTON_ACTIVATE":"Activa","BUTTON_ACTIVATED":"Activat","BUTTON_CANCEL":"Cancel·lar","BUTTON_SUBMIT":"Envia","BUTTON_DISMISS_ALL":"Descartar-ho tot","BUTTON_VIEW_ALL":"veure-ho tot","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"La vostra Biblioteca sembla buida. Esbrineu lo útil que és :)","HOW_START":"Així és com podeu començar:","LIB_EMPTY_CAL":"El vostre calendari mostra sèries a la Biblioteca.","HOW_START_CAL":"Així és com podeu afegir sèries:","LIB_EMPTY_BOARD":"El Tauler mostra notificacions i recomanacions relacionades amb la vostra Biblioteca.","HOW_START_BOARD_WAIT":"Afegiu unes quantes sèries o canals a la vostra Biblioteca i doneu-nos uns minuts per processar :)","HOW_START_BOARD":"Així és com podeu afegir-hi sèries i pel·lícules:","IMPORT_FB":"Importeu les coses que us agradin de <span>Facebook</span>","IMPORT_TRAKT":"Importeu la vostra biblioteca multimèdia de <span>Trakt</span>","IMPORT_DISCOVER":"Troba coses interessants de <span>Descobrir</span>","IMPORT_DISK":"Importeu pel·lícules o sèries que tingueu al <span>disc local</span>","PLEASE_CREATE_ACC":"<u>Creeu un compte</u> per habilitar la sincronització de la Biblioteca i el Tauler.","IMPORT_DISCOVER_SIGNUP":"Registreu-vos i trobeu coses interessants a <span>Descobrir</span>","IMPORT_DISK_SIGNUP":"Inscriviu-vos i importeu pel·lícules o espectacles que tingueu al vostre <span>disc local</span>","LIB_EMPTY_CLOUD":"Biblioteca al núvol","LIB_EMPTY_CLOUD_DESC":"Biblioteca personal al núvol sincronitzada a tots els dispositius","LIB_EMPTY_EARLY":"Accés aviat","LIB_EMPTY_EARLY_DESC":"Rep notificacions d\'episodis nous","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Obteniu recomanacions personalitzades","LIB_EMPTY_CALENDAR_DESC":"Programa el teu calendari de visualització personal","LIB_EMPTY_ALL":"Registreu-vos per obtenir tot això:","LIB_EMPTY_BEST":"Registreu-vos per obtenir el millor d\'Stremio","LIB_EMPTY_OTHER":"Registreu-vos per activar el calendari i altres funcions interessants","CALENDAR_ADDED":"El calendari d\'Stremio s\'ha afegit al calendari d\'escriptori predeterminat.","CALENDAR_ADDED_MSG":"Si això no funciona, afegiu aquest URL manualment a la vostra aplicació de calendari","TRAKT_EXPIRED":"L\'autenticació de Trakt ha caducat, aneu a Configuració i torneu a autenticar-la","TRAKT_REQUIRES_LOGIN":"Error de Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Cal iniciar sessió","SETTINGS_LABEL":"Configuració","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Reproductor","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Dreceres","SETTINGS_SHORTCUT_RELOAD_APP":"Recarregar l\'aplicació","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Obrir Configuració","SETTINGS_SHORTCUT_SWITCH_TABS":"Canviar Pestanya","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Mou Entre Pestanyes Cap Endavant","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Mou Entre Pestanyes Cap Enrere","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Sortir / Tornar enrere","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Commuta la Pantalla Completa","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Mostra els Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Reproduir / Pausa","SETTINGS_SHORTCUT_VOLUME_UP":"Pujar volum","SETTINGS_SHORTCUT_VOLUME_DOWN":"Baixar volum","SETTINGS_SHORTCUT_SEEK_NEXT":"Moure Endavant","SETTINGS_SHORTCUT_SEEK_PREV":"Moure Enrere","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Reproduir Següent","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Augmentar Mida Subtítols","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Disminuir Mida Subtítols","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Augmentar Retard Subtítols","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Disminuir Retard Subtítols","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Commutar Barra Lateral","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Iniciar al arrancar l\'equip","SETTINGS_VLC_DEFAULT":"Reproduir amb VLC","SETTINGS_UI_LANGUAGE":"Idioma de la interfície","SETTINGS_FULLSCREEN_EXIT":"Tecla per sortir de la pantalla completa","SETTINGS_GAMEPAD":"Activa la compatibilitat amb el gamepad","SETTINGS_CLOSE_WINDOW":"Tanca l\'aplicació quan la finestra estigui tancada","SETTINGS_SUBTITLES_LANGUAGE":"Idioma dels subtítols predeterminat","SETTINGS_SUBTITLES_SIZE":"Mida dels subtítols predeterminada","SETTINGS_SUBTITLES_BACKGROUND":"Fons dels subtítols","SETTINGS_SUBTITLES_COLOR":"Color dels subtítols","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Color de l\'esquema dels subtítols","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Color de fons dels subtítols","SETTINGS_SEEK_KEY":"Les tecles de fletxa et mouen en el temps","SETTINGS_SEEK_KEY_SHIFT":"Les tecles de fletxa et mouen en el temps quan es manté premuda la tecla Shift","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Reprodueix automàticament el proper episodi","SETTINGS_NEXT_VIDEO":"Mostra la notificació per iniciar el proper episodi","SETTINGS_NEXT_VIDEO_TRIGGER":"Mostra la notificació del següent episodi per a:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Canvieu la mida de la finestra abans de reproduir","SETTINGS_OVERRIDE_SERVER":"Substitueix l\'URL del servidor de transmissió (avançat)","SETTINGS_SERVER_URL":"URL del servidor de transmissió: ","SETTINGS_SERVER_AVAILABLE":"El servidor de transmissió està disponible.","SETTINGS_SERVER_UNAVAILABLE":"El servidor de transmissió no està disponible.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Endpoint de transmissió HTTPS: ","SETTINGS_USE_BETA":"Utilitzeu sempre l\'última versió Beta","SETTINGS_IMPORT_FB":"Importar de Facebook","SETTINGS_IMPORT_DISK":"Importar del disc local","SETTINGS_IMPORT_TRAKT":"Importar de Trakt","SETTINGS_PAUSE_MINIMIZED":"Pausar la reproducció quan es minimitzi","SETTINGS_HWDEC":"Descodificació accelerada per maquinari","SETTINGS_BACKGROUND":"Reproducció en segon pla","SETTINGS_SUBSCRIBE_CALENDAR":"Subscriu-te al calendari","SETTINGS_REQ_EXPORT":"Sol·licitar l\'exportació de dades","SETTINGS_ACC_DELETE":"Sol·licitar eliminació del compte","SETTINGS_CHANGE_PASSWORD":"Canvia la contrasenya","SETTINGS_TOS":"Termes del servei","SETTINGS_SUPPORT":"Contactar suport","SETTING_LANGUAGE":"Llenguatge","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Tanca la sessió de Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Escaneja el codi QR per obrir el comandament a distància","SETTINGS_DESKTOP_NOTIFICATIONS":"Notificacions d\'escriptori","SETTINGS_DATA_SAVER":"Estalviador de dades","SETTINGS_LANGUAGE_INTERFACE":"interfície","SETTINGS_LANGUAGE_SUBS":"subtítols per defecte","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Seleccionar Automàticament la Pista d\'Àudio","SETTINGS_DEFAULT_AUDIO_TRACK":"Pista d\'Àudio Predeterminada","SETTINGS_ACCOUNT":"compte","SETTINGS_VERSION":"versió","SETTINGS_MPV_WINDOW":"Inicia el reproductor en una finestra separada (avançat)","SETTINGS_PLAY_IN_EXTERNAL":"Inicieu sempre el vídeo en un reproductor extern","SETTINGS_STORAGE_BUTTON":"Esborra l\'emmagatzematge local","SETTINGS_STORAGE_MODAL_TITLE":"Estàs segur ?","SETTINGS_STORAGE_MODAL_MESSAGE":"Això esborrarà l\'emmagatzematge local i tancarà la sessió.","SETTINGS_HWDEC_PICKER":"Trieu la configuració de descodificació accelerada per maquinari","SETTINGS_HW_AUTOMATIC":"Automàtic","SETTINGS_HW_DISABLED":"Desactivat","SETTINGS_HW_ACCELERATED":"Acceleració de descodificació","SETTINGS_HW_FULL":"Acceleració total","SETTINGS_HW_LEGACY":"Heretat","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Àudio","SUBSPICKER_SUBTITLES":"Subtítols dels complements","SUBSPICKER_BLACK_BACKGROUND":"Utilitzar negre com color de fons","SUBSPICKER_VERTICAL_OFFSET":"Desplaçament vertical","SUBSPICKER_SIZE":"Mida","SUBSPICKER_DELAY":"Retard","SUBSPICKER_EMBEDDED_SUBS":"Subtítols incrustats","MOBILE_PRIVACY_POLICY":"Política de privacitat","MOBILE_CRASH_REPORTING":"Informe de fallades","MOBILE_ZOOM_TO_FILL":"Ampliar per omplir la pantalla","MOBILE_PASSTHROUGH":"Sortida d\'àudio digital (passthrough)","MOBILE_RUN_LOW_BATTERY":"Executar amb bateria baixa","MOBILE_RUN_FOREGROUND":"Executar com a servei de primer pla","MOBILE_PERFORMANCE":"RENDIMENT I ESTABILITAT","MOBILE_SERVER_ONLINE":"En línia","MOBILE_SERVER_OFFLINE":"Fora de línia","MOBILE_QR_EXPIRES":"El codi QR caduca en ","MOBILE_LOG_INTO":"Iniciar sessió al compte Stremio ","MOBILE_SCAN_QR":"Escaneja el codi QR de dalt o ves a ","MOBILE_LINK_ACCOUNT":"Enllaçar el compte","MOBILE_SPEEDPICKER_CANCEL":"Cancel·lar","MOBILE_SPEEDPICKER_LABEL":"Seleccionar Velocitat de Reproducció","MOBILE_EMPTY_LIBRARY":"La teva biblioteca està buida","MOBILE_NO_ADDON_ACTIVE":"No hi ha cap complement Stremio actiu per a aquest tipus.","MOBILE_ORGANIZER_WARNING":"L\'aplicació Stremio Organizer ofereix una funcionalitat limitada. Per obtenir una llista de reproduccions i l\'experiència completa d\'Stremio, feu servir Stremio a l\'escriptori.","MOBILE_ADDON_LOADING":"encara està carregant","MOBILE_ADDONS_LOADING":"els complements encara estan carregant","MOBILE_ADDON":"Complement","MOBILE_CONFIGURE_ADDON":"Configura el teu complement","MOBILE_CONFIGURE_ADDON_LABEL":"Configurar Complement","MOBILE_ORGANIZER_ADDONS_WARNING":"L\'aplicació Stremio Organizer ofereix una selecció limitada de complements. Per gaudir de l\'experiència Stremio completa, utilitzeu Stremio a l\'escriptori.","MOBILE_DISCONNECT":"Desconnectar","MOBILE_LOOKING_FOR_DEVICES":"Buscant dispositius...","MOBILE_CAST_TO":"Emet a","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"Encès","NAVIGATION_OFF":"Apagat","MARKETING_AGREE":"Accepto rebre comunicacions de màrqueting d\'Stremio","QUIT":"Sortir","CONNECTED":"Connectat","AUTHENTICATE":"Autenticar","CACHING":"Memòria cau","SETTINGS_CACHING_DRIVE":"Disc de memòria cau","ENABLE_LOCAL_FILES_ADDON":"Activa el complement de fitxers locals (requereix un reinici)","LOCAL_ADDON_NOT_ENABLED":"El complement local no està habilitat. Feu clic aquí per anar a la configuració i activar-lo","ENABLE_REMOTE_HTTPS_CONN":"Activeu les connexions HTTPS remotes","TORRENT_PROFILE":"Perfil del torrent","DATA_CACHING":"Memòria cau emmagatzemada","MAGNET_PARSING":"Analitzant un enllaç magnètic","January":"Gener","February":"Febrer","March":"Març","April":"Abril","May":"Maig","June":"Juny","July":"Juliol","August":"Agost","September":"Setembre","October":"Octubre","November":"Novembre","December":"Desembre","Monday":"Dilluns","Tuesday":"Dimarts","Wednesday":"Dimecres","Thursday":"Dijous","Friday":"Divendres","Saturday":"Dissabte","Sunday":"Diumenge","Action":"Acció","Comedy":"Comèdia","War":"Bèl·lic","Family":"Família","Animation":"Animació","Adventure":"Aventura","Fantasy":"Fantasia","Crime":"Crim","Mystery":"Misteri","Romance":"Romanç","Drama":"Drama","Horror":"Terror","Thriller":"Suspens","Sci-Fi":"Ciència-ficció","Music":"Musical","Biography":"Biogràfic","Documentary":"Documental","Sport":"Esports","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"Notícies","History":"Història","Game-Show":"Concursos","Reality-TV":"Reality shows","Talk-Show":"Entrevistes","Film & Entertainment":"Cinema i entreteniment","Gaming":"Videojocs","From TV":"De la TV","Lifestyle":"Estil de vida","Science & Education":"Ciència i educació","Cooking & Health":"Cuina i salut","Beauty & Fashion":"Bellesa i moda","Sports":"Esports","News & Politics":"Notícies i política","How-to & DIY":"Com fer-ho i DIY","Tech":"Tecnologia","Automotive":"Automoció","Causes & Non-Profits":"Causes i organitzacions sense ànim de lucre","Movies":"Pel·lícules","Uk Live Tv":"TV britànica en directe","Fashion":"Moda","Business News Radio":"Ràdio - Notícies de negocis","Business Tv":"TV negocis","Cars & Auto":"Automòbils","Comedy Radio":"Ràdio - Comèdia","Lifestyle Radio":"Ràdio - Estil de vida","News Tv":"TV notícies","Food And Wine":"Menjar i Vi","Latino Tv":"TV Llatina","Shopping Tv":"TV compres","Religion":"Religió","Kids":"Nens","Body & Soul":"Cos i ànima","Education":"Educació","Indian Tv":"TV índia","Extreme Sports":"Esports extrems","Middle Eastern Tv":"TV de l\'Orient Mitjà","Celebrity Tv":"TV famosos","Science Tv":"TV ciència","Bikini babe":"Bikini babe","Outdoors":"A l\'aire lliure","German Tv":"TV alemanya","French Tv":"Tv francesa","Italian Tv":"TV italiana","Gamer Tv":"TV videojocs","Travel":"Viatges","Asian Tv":"TV asiàtica","Entertainment":"Entreteniment","News Radio":"Ràdio - Notícies","Music Radio":"Ràdio - Música","Language Learning":"Aprenentatge d\'idiomes","Science Radio":"Ràdio - Ciències","Tech Radio":"Ràdio - Tecnologia","Science & Technology Vod":"Ciència i tecnologia sota demanda","new video":"nou vídeo","new episode":"nou episodi","new movie":"nova pel·lícula","recommended":"recomanat","we recommend":"recomanem","offer of the day":"oferta del dia","news":"notícies","music video":"vídeo musical","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Descarta les notificacions","CTX_DISMISS_ALL":"Descarta-ho tot","CTX_SHARE":"Comparteix","CTX_COPY_SHARE_LINK":"Copia l\'enllaç per compartir","CTX_COPY_MAGNET_LINK":"Copia enllaç magnètic","CTX_COPY_STREAM_LINK":"Copia enllaç de l\'stream","CTX_DOWNLOAD_VIDEO":"Descarregar aquest vídeo","CTX_DOWNLOAD_SUBS":"Descarregar els subtítols","CTX_VIEW_ON_YOUTUBE":"Veure a YouTube","CTX_SHOW":"Mostra","CTX_PLAY":"Reproduir","CTX_PLAY_IN":"Reprodueix aquí","CTX_PLAY_ON":"Reprodueix a","CTX_WATCH_ON":"Veure a","CTX_WATCH":"Veure","CTX_WATCHED":"Vist","CTX_WATCH_BEGINNING":"Veure des del principi","CTX_WATCH_MOBILE":"Veure en un dispositiu mòbil","CTX_REWIND":"Rebobinar fins al començament","CTX_MARK_WATCHED":"Marca com a vist","CTX_MARK_NON_WATCHED":"Marca com a no vist","CTX_MARK_UNWATCHED":"Marca com sense mirar","CTX_MARK_REST":"Marca la resta com a vist","CTX_UNMARK_REST":"Marca la resta com a no vist","CTX_RECEIVE_NEW_NOTIF":"Rebre notificacions noves","CTX_REMOVE_CACHE":"Elimina de la memòria cau","CTX_REMOVE_CACHE_EP":"Elimina l\'episodi de la memòria cau","CTX_OPEN_CONTAINING":"Obre la carpeta que conté","CTX_REMOVE":"Elimina de la biblioteca","CTX_AVAILABLE_OFFLINE":"Disponible fora de línia","CTX_PAUSED":"En pausa","CTX_ALWAYS_ON_TOP":"Sempre a la part superior","CTX_FULLSCREEN":"Pantalla completa","CTX_WRONG_SUBS":"Subtítols incorrectes?","CTX_REPORT_ISSUES":"Informar del problema","CTX_COPY":"Copia","CTX_PASTE":"Enganxa","CTX_CLEAR":"Esborra","CTX_CLEAR_RECENT_SEARCHES":"Esborra les cerques recents","HELLO_THERE":"Hola","HOPE_YOU_ENJOY":"Esperem que gaudiu d\'Stremio i ja sigui una de les vostres aplicacions preferides.","WHO_ARE_WE":"Qui som? Som l\'equip que hi ha darrere: dos nois que treballen molt cada dia durant els darrers 3 anys per fer que aquest producte sigui cada vegada millor.","SUPPORT_US":"Si us agrada utilitzar Stremio, si Stremio és valuós per a vosaltres, correu la veu!","SPREAD_THE_WORD":"Comparteix amb els teus amics ara, difon la notícia sobre Stremio","MORE_PEOPLE":"Com més gent utilitzi Stremio, millor serà.","SEND_A_LINK":"O envieu un enllaç al nostre lloc web","TIP_LOCALFILES":"Consell: podeu arrossegar i deixar anar fitxers de vídeo locals a Stremio","ADDON_MY":"Els meus complements","ADDON_COMMUNITY":"Complements de la comunitat","ADDON_OFFICIAL":"Complements oficials","ADDON_REPOS":"Col·leccions de complements","ADDON_SEARCH":"Cerca de complements","ADDON_INSTALL":"Instal·la","ADDON_CONFIGURE":"Configura","ADDON_UNINSTALL":"Desinstal·la","ADDON_UPGRADE":"Actualitza","ADDON_INSTALLED":"Instal·lat","ADDON_INSTALLED_MSG":"Complement instal·lat!","ADDON_UPGRADED_MSG":"Complement actualitzat!","ADDON_UNKNOWN":"Desconegut","ADDON_ERR":"Error d\'instal·lació del complement!","ADDON_DISCONNECTED":"Desconnectat","ADDON_APP_MISSING":"l\'aplicació d\'aquesta font no està instal·lada. Voleu instal·lar-la ara?","ADDON_APP_INSTALL":"Instal·lar ara","ADDON_PAGE":"Pàgina del complement","ADDON_TOP_CONTENT":"El millor d\'aquest complement","ADDON_PROVIDES":"Aquest complement proporciona:","ADDON_WATCH":"Mireu #{types} ara!","ADDON_WATCH_FREE":"Mireu #{types} GRATIS ara!","ADDON_ADDON":"Complement","ADDON_SUPPORTED_TYPES":"Tipus compatibles","ADDON_SUPPORTED_CATALOGS":"Catàlegs compatibles","ADDON_PROVIDES_DISCOVER":"Més #{types} a Descobreix","ADDON_PROVIDES_STREAMS":"Mira #{types}","ADDON_PROVIDES_STREAMS_FREE":"Mireu #{types} GRATIS","ADDON_PROVIDES_SUBTITLES":"Subtítols per #{types}","ADDON_CANTDETECT":"No hem pogut detectar un Stremio en execució, de manera que no hem pogut detectar quins complements heu instal·lat.","ERR_NO_META":"No s\'ha trobat informació sobre això ","ERR_GETTING_META":"Error en recuperar informació sobre això.","ERR_CANT_PARSE_MAGNET":"No es pot analitzar l\'enllaç magnètic","ERR_NO_MAGNET_INFOHASH":"No hi ha cap hash d\'informació magnet vàlida","ERR_NO_FILE_PATH":"No es pot enviar la sol·licitud sense una ruta al fitxer","ERR_NO_TORRENT":"No s\'ha retornat cap torrent","ERR_NO_SUPPORTERD_FILES":"No s\'han trobat fitxers compatibles","ERR_OPENING_FILES":"No s\'han pogut obrir els fitxers externs","ERR_INVALID_LINK":"Enllaç invàlid","ERR_REGISTERED_ONLY":"Aquesta opció només està disponible per als usuaris registrats.","ERR_CLIPBOARD":"No es pot reproduir des del porta-retalls","ERR_CLIPBOARD_READ":"No es pot llegir el porta-retalls d\'aquesta plataforma","ERR_CLIPBOARD_GENERIC":"No s\'ha trobat cap URL reproduïble al porta-retalls. Copieu un URL (per exemple, un enllaç magnètic) a un vídeo.","BOARD_CONTINUE_WATCHING":"Continuar mirant","BOARD_EXPLANATION_RECOMMENDATIONS":"Pel·lícules seleccionades especialment per a vosaltres.<br />Aquesta pel·lícula és una recomanació d\'exemple.","BOARD_EXPLANATION_EPISODES":"Els nous episodis de les vostres Sèries preferides arriben aquí.<br />Afegiu sèries que seguiu a la Biblioteca.","BOARD_EXPLANATION_VIDEOS":"Els nous episodis dels vostres Canals preferits arriben aquí.<br />Afegiu a la Biblioteca els canals de YouTube que seguiu.","WEBSITE_SLOGAN_WATCH":"Veure instantàniament","WEBSITE_SLOGAN_ALL":"Tot el contingut de vídeo que gaudiu d\'un sol lloc","WEBSITE_SLOGAN_NEW":"Tot el que podeu veure","WEBSITE_SLOGAN_NEW_NEW":"Llibertat d\'emissió","WEBSITE_WATCH_FROM":"Veure des de","WEBSITE_DOWNLOAD":"Baixa-ho ara","WEBSITE_DOWNLOAD_FOR":"Baixeu-lo ara per","WEBSITE_IS_DESKTOP":"Stremio és una aplicació d\'escriptori, obriu aquesta pàgina al vostre PC i descarregueu-la","WEBSITE_DESKTOP_DEMO_VID":"Demostració d\'escriptori","WEBSITE_PAGE_HOME":"Inici","WEBSITE_PAGE_FEATURES":"Característiques","WEBSITE_PAGE_ADDONS":"Complements","WEBSITE_PAGE_TECH":"Tecnologia","WEBSITE_PAGE_CREATE_ADDON":"Crea un Complement","WEBSITE_PAGE_CONTACTS":"Contactes","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Pel·lícules","WEBSITE_TYPE_series_PL":"Sèries","WEBSITE_TYPE_tv":"TV en directe","WEBSITE_TYPE_channel":"Canals","WEBSITE_STREMIO_WHAT_IS":"Stremio és una aplicació que us ajuda a organitzar i veure a l\'instant els vostres vídeos, pel·lícules, sèries i canals de televisió preferits.","WEBSITE_FEATURES_WATCH":"Veure instantàniament en HD","WEBSITE_FEATURES_WATCH_DETAIL":"Feu clic i reproduïu els vostres pel·lícules, programes de televisió, vídeos i canals de TV preferits.","WEBSITE_FEATURES_SUBS":"Subtítols automàtics","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio selecciona automàticament els subtítols sincronitzats per al vostre idioma.","WEBSITE_FEATURES_SUBS_LABEL":"Tu mous, mestre.","WEBSITE_FEATURES_CAST":"Reprodueix a la TV i dispositius mòbils","WEBSITE_FEATURES_CAST_DETAIL":"Emet a AppleTV, Chromecast, Smart TV (DLNA/UPnP) i dispositius mòbils.","WEBSITE_LIB":"Gaudeix de la teva biblioteca personal sincronitzada en tots els teus dispositius","WEBSITE_LIB_COLLECT":"Recopila informació d\'Stremio","WEBSITE_LIB_IMPORT":"Importa de Facebook","WEBSITE_LIB_LOCAL":"Afegeix des del vostre disc local","WEBSITE_BOARD":"El tauler - El lloc principal per a Notificacions i Recomanacions","WEBSITE_BOARD_RECOMMEND":"Programa de televisió recomanat","WEBSITE_BOARD_TRENDING":"Tendències de pel·lícules","WEBSITE_BOARD_NEW":"Nou vídeo","WEBSITE_BOARD_EPISODE":"Nou episodi","WEBSITE_BOARD_1":"Busqueu alguna cosa interessant per veure? Obteniu recomanacions segons el vostre gust!","WEBSITE_BOARD_2":"Sigues notificat quan surti un nou episodi del vostre programa de televisió o canal de YouTube preferit.","WEBSITE_BOARD_YOUTUBE":"Nous vídeos de canals de YouTube","WEBSITE_BOARD_EPISODES":"Nous episodis de sèries que seguiu","WEBSITE_ADDONS":"Complements de contingut","WEBSITE_TECH_DETAIL":"Ens encanta la tecnologia, ens encanta la ciència boja!\\nStremio utilitza les següents tecnologies de codi obert:","WEBSITE_TECH_WCJS":"WebChimera.js permet a Stremio reproduir qualsevol format de vídeo amb un bon rendiment.","WEBSITE_TECH_WCJS_EXTRA":"Som col·laboradors principals del projecte","WEBSITE_TECH_ELECTRON":"Electron proporciona una plataforma innovadora per construir Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Som col·laboradors del projecte","WEBSITE_TECH_LINVODB":"Una tecnologia de base de dades que garanteix que les vostres dades estiguin organitzades i disponibles a qualsevol lloc on us inicieu la sessió.","WEBSITE_TECH_LINVODB_EXTRA":"Tecnologia pròpia","WEBSITE_CREATE_ADDON":"Creeu el vostre complement","WEBSITE_CREATE_ADDON_DETAIL":"Teniu un servei que proporcioni contingut de vídeo? Us ajudarem a beneficiar-vos de les funcions d\'Stremio creant el vostre complement","WEBSITE_CREATE_ADDON_BENEFITS":"Avantatges de crear un complement per a Stremio","WEBSITE_P2P_BEAUTY":"La bellesa de la transmissió d\'igual a igual (P2P)","WEBSITE_P2P_1":"Vídeo HD / 4K fiable i assequible a petició o en directe","WEBSITE_P2P_2":"Plataforma de distribució que proporciona una gran experiència d\'usuari","WEBSITE_P2P_3":"Crearem un complement que compleixi les vostres necessitats exactes","WEBSITE_P2P_CONTACT":"T\'interessa? Et convidem a <a href=\'mailto:office@stremio.com\'>contactar-nos</a>.","WEBSITE_P2P_CONTACT_EXTRA":"Estarem encantats d\'ajudar-vos a integrar el vostre contingut amb Stremio!","WEBSITE_P2P":"De tant en tant, arriba una tecnologia que canvia el joc. Invertim tones de temps i esforç en la creació del nostre motor de transmissió de vídeo d\'igual a igual (P2P) que proporciona un gran rendiment i versatilitat a adapteu-vos amb qualsevol cas d\'ús.\\nContacteu amb nosaltres per obtenir vídeos P2P habilitats per a DRM a la carta o en directe.","WEBSITE_THOUGHTS":"Pensaments que compartim:","WEBSITE_SPREAD":"Difon la notícia sobre Stremio:","WEBSITE_CONTACT":"Poseu-vos en contacte amb nosaltres, estarem encantats de conèixer-vos!","WEBSITE_OPENSOURCE":"Per als nostres projectes de codi obert, aneu al nostre","WEBSITE_BITCOIN":"Feu una donació de bitcoins:","WEBSITE_FAQ":"Preguntes freqüents","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Preguntes","WEBSITE_TOS":"Condicions d\'ús","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"Quant a","WEBSITE_PAGE_BECOME_PARTNER":"Feu-vos soci","WEBSITE_ALL_YOU_CAN_WATCH":"Llibertat de visualització\\nTot el que desitgeu.","WEBSITE_FREEDOM_TO_STREAM":"Llibertat d\'emissió","WEBSITE_WHAT_IS_STREMIO":"Què és Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio és un centre únic per a l\'agregació de contingut de vídeo. Descobriu, organitzeu i mireu vídeos de tot tipus de fonts en qualsevol dispositiu que tingueu.","WEBSITE_WHAT_IS_STREMIO_P2":"Pel·lícules, programes de televisió, sèries, televisió en directe o canals web com YouTube i Twitch.tv - tot això ho podeu trobar a Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio és un modern centre multimèdia que és una solució única per al vostre entreteniment de vídeo. Descobriu, mireu i organitzeu contingut de vídeo des de complements fàcils d\'instal·lar.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Pel·lícules, programes de televisió, TV en directe o canals web: trobeu tot això a Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Gaudeix en tots els teus dispositius multimèdia","WEBSITE_DEVICES_COLLECT":"Recopila informació d\'Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importa de Facebook","WEBSITE_DEVICES_LOCAL":"Afegeix des del disc local","WEBSITE_JOIN_THE_PARTY_NOW":"Uniu-vos a la festa ara","WEBSITE_DEVICES_ALL":"Fàcil d\'utilitzar en tots els vostres dispositius;","WEBSITE_EXTENDABLE_CATALOG":"Catàleg de vídeo extensible infinitament;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Funcions fantàstiques per organitzar el vostre contingut multimèdia;","WEBSITE_AS_SEEN_ON":"Com es veu a","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Sobre nosaltres","WEBSITE_LINK_TECHNOLOGY":"Tecnologia","WEBSITE_LINK_APPS":"Aplicacions","WEBSITE_LINK_DOWNLOADS":"Descàrregues","WEBSITE_MORE":"Més","WEBSITE_LINK_ADDONS":"Complements","WEBSITE_LINK_ADDON_SDK":"SDK Complements","WEBSITE_LINK_CONTRIBUTE":"Contribuir","WEBSITE_LINK_COMMUNITY":"Comunitat","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... i més","WEBSITE_LINK_HELP":"Centre d\'ajuda","WEBSITE_LINK_CONTACTS":"Consultes empresarials","WEBSITE_LINK_TOS":"Termes i Condicions","WEBSITE_LINK_PRAVACY":"Política de privacitat","WEBSITE_SUBSCRIBE":"Subscriu-te","WEBSITE_NEWSLETTER":"Uniu-vos al nostre butlletí de coses increïbles","WEBSITE_PLACEHOLDER_EMAIL":"El teu correu electrònic","WEBSITE_COMMUNITY":"Comunitat","WEBSITE_LINK_PRAVACY_LEGAL":"Privadesa i legal","WEBSITE_WHY":"Per què ho fem?","WEBSITE_WHY_P1":"A Stremio, treballem cada dia perquè volem resoldre un problema important per a la indústria del vídeo a la carta. Hi ha tants continguts nous publicats cada minut que és pràcticament impossible trobar-hi el camí.","WEBSITE_WHY_P2":"Ajudem la gent a navegar per aquest enorme món d\'entreteniment en vídeo i a descobrir contingut nou per gaudir-ne. Les nostres aplicacions reuneixen pel·lícules, sèries, TV en directe, canals web i molt més. Ens dediquem a facilitar als usuaris la possibilitat de trobar títols i emissores que els encanten.","WEBSITE_WHY_P3":"Podeu utilitzar el nostre servei en qualsevol dispositiu i en qualsevol moment, cosa que converteix Stremio en l\'únic centre d\'entreteniment de vídeo que necessiteu.","WEBSITE_TEAM":"EQUIP","WEBSITE_TEAM_P":"L\'equip d\'Stremio és petit però potent: entre els deu programem en X idiomes i compartim experiència en desenvolupament de programari, disseny UI i UX, màrqueting i publicitat, i empreses i startups.","WEBSITE_FEATURES":"Característiques","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Descobriu contingut nou amb facilitat","WEBSITE_FEATURES_DISCOVER_P":"Descobriu fàcilment noves pel·lícules, programes de televisió, sèries i canals per veure. Navegueu per categoria, gènere, classificació, actualitat, etc. o simplement escriviu un nom per trobar-lo. Stremio fa que trobar contingut de vídeo nou sigui bufar i fer ampolles.","WEBSITE_FEATURES_ALL_CONTENT":"Tot el contingut de vídeo en una sola pantalla","WEBSITE_FEATURES_ALL_CONTENT_P1":"Vegeu quines pel·lícules, sèries o vídeos no heu acabat i continueu veient-les; rebre notificacions de nous episodis i llançaments; i navegueu per les recomanacions que obtindreu en funció dels vostres hàbits de visualització.","WEBSITE_FEATURES_LIBRARY":"Organitzeu la vostra videoteca","WEBSITE_FEATURES_LIBRARY_P1":"Afegiu qualsevol títol a la vostra biblioteca Stremio amb un sol clic i cerqueu el vostre contingut, ordenat per tipus, actualitat o ordre alfabètic.","WEBSITE_FEATURES_CALENDAR":"Feu un seguiment de tot el que mireu","WEBSITE_FEATURES_CALENDAR_P1":"Obteniu una visualització del calendari de totes les pel·lícules i sèries que afegiu a la biblioteca. Exporteu el calendari Stremio i sincronitzeu-lo perquè sempre sàpiga quan s\'ha de produir un episodi nou o una premier.","WEBSITE_FEATURES_BIG_SCREEN":"Gaudeix del teu contingut de vídeo en una pantalla més gran","WEBSITE_FEATURES_BIG_SCREEN_P1":"Emet qualsevol cosa que estigueu veient a un altre dispositiu, ja sigui un telèfon, una tauleta o un televisor amb un sol clic.","WEBSITE_FEATURES_SOURCES":"Mireu el vídeo de moltes fonts diferents","WEBSITE_FEATURES_SOURCES_P":"Instal·leu complements oficials i de la comunitat per gaudir de vídeos provinents de molts proveïdors diferents - tot en una aplicació elegant i fàcil d\'utilitzar.","WEBSITE_CREATE_AN_ADDON":"Creeu un complement","WEBSITE_FEATURES_SYNC":"Sincronitzeu la biblioteca entre diferents dispositius i repreneu la reproducció","WEBSITE_FEATURES_SYNC_P1":"Inicieu la sessió amb el vostre compte a tots els vostres dispositius i gaudiu de la vostra biblioteca, complements, reproducció i calendari sincronitzats.","WEBSITE_FEATURES_EXTENDABLE":"Catàleg de vídeo ampliable amb complements","WEBSITE_FEATURES_EXTENDABLE_P1":"El catàleg de complements Stremio proporciona diversos complements per instal·lar i veure una gran varietat de contingut de vídeo. Això inclou pel·lícules, programes, TV en directe, esports, notícies, podcasts, canals web, videojocs i molt més.","WEBSITE_FEATURES_AUTO_SUBS":"Subtítols automàtics","WEBSITE_FEATURES_AUTO_SUBS_P1":"Amb els nostres complements de subtítols obtindreu opcions seleccionades automàticament per al vostre idioma preferit.","WEBSITE_FEATURES_CHROMECAST":"Emetent a Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Gaudeix del contingut de vídeo en una pantalla més gran o simplement emet el que estiguis mirant a un altre dispositiu.","WEBSITE_FEATURES_KEEP_TRACK":"Feu un seguiment dels vostres programes de televisió i canals web preferits","WEBSITE_FEATURES_KEEP_TRACK_P1":"Obteniu una visualització del calendari i notificacions de capítols nous de les vostres sèries i canals web preferits.","WEBSITE_FEATURES_POWER_USER":"Funcions d\'usuari avançat","WEBSITE_FEATURES_POWER_USER_P1":"Reprodueix en un reproductor extern","WEBSITE_FEATURES_POWER_USER_P2":"Reprodueix des d\'un fitxer torrent o un enllaç magnètic","WEBSITE_FEATURES_POWER_USER_P3":"Importa a la teva biblioteca des de m\'agrada de Facebook o discs locals","WEBSITE_ADD_ONS":"Complements","WEBSITE_ADD_ONS_P1":"Tot el contingut de vídeo que proporciona Stremio s\'obté a través d\'un sistema de complements - no hi ha cap contingut ni proveïdor de contingut integrat a l\'aplicació.","WEBSITE_ADD_ONS_P2":"Hi ha dos grups de complements disponibles: complements oficials i de comunitat.","WEBSITE_ADD_ONS_P3":"Els oficials són desenvolupats i allotjats per Stremio, mentre que els complements de la comunitat els creen els membres de la comunitat, que també els allotgen.","WEBSITE_ADDONS_OFFICIAL":"Complements oficials","WEBSITE_ADDONS_WATCHUB":"Reprodueix les teves pel·lícules, sèries i programes preferits de proveïdors com iTunes, Hulu, Amazon i altres serveis del Regne Unit i dels Estats Units.","WEBSITE_ADDONS_YOUTUBE":"Mireu els vostres canals de YouTube preferits sense anuncis i obteniu notificacions de les contribucions que heu seguit sobre les càrregues noves.","WEBSITE_ADDONS_FILMON":"Mireu TV en directe, pel·lícules i televisió social de franc. 600 canals de televisió, 45.000 pel·lícules gratuïtes, documentals i molt més.","WEBSITE_ADDONS_OPENSUBTITLES":"Subtítols de pel·lícules i TV en diversos idiomes, milers de subtítols traduïts penjats cada dia.","WEBSITE_ADDONS_COMMUNITY":"Complements de la comunitat","WEBSITE_ADDONS_FILMON_VOD":"Mireu el vídeo a la carta de Filmon.tv","WEBSITE_ADDONS_TWICH":"Mireu en directe des de Twitch.tv - una plataforma de transmissió de vídeo per a la indústria dels esports electrònics.","WEBSITE_ADDONS_VODO":"Mireu pel·lícules independents de forma totalment gratuïta.","WEBSITE_ADDONS_NETFLIX":"Mireu pel·lícules i sèries web de Netflix.","WEBSITE_ADDONS_CREATE":"Creeu un complement","WEBSITE_ADDONS_CREATE_P1":"Si ho desitgeu, podeu desenvolupar el vostre propi complement. D\'aquesta manera, podeu oferir a vosaltres mateixos i a la nostra comunitat accés a contingut de vídeo nou i arribar a un públic nou i dirigit de milions d\'usuaris de tot el món.","WEBSITE_ADDONS_START_CREATE":"Per començar, visiteu la pàgina del SDK de Complements Stremio:","WEBSITE_DOWNLOADS":"Descàrregues","WEBSITE_DOWNLOADS_P1":"Per obtenir un rendiment òptim, us recomanem que utilitzeu la versió més recent disponible de les aplicacions Stremio. Tanmateix, si per algun motiu voleu utilitzar una versió anterior, la podeu descarregar aquí.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio per a Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio per a macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio per a Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio per a Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio per a Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio per a Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio per a Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio per a iOS (versió limitada)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribuir","WEBSITE_CONTRIBUTE_P1":"La plataforma Stremio és de codi obert i podeu crear fàcilment un complement per al contingut que actualment no existeix.","WEBSITE_CONTRIBUTE_WHY":"Per què heu de crear un complement?","WEBSITE_CONTRIBUTE_WHY_P1":"Arribeu a un públic nou pel contingut del vostre vídeo","WEBSITE_CONTRIBUTE_WHY_P2":"La base d\'usuaris d\'Stremio creix ràpidament - el primer any del llançament, Stremio va guanyat un milió d\'usuaris a tot el món i, el segon any d\'existència de la plataforma, aquest nombre va créixer fins als 2,5 milions.","WEBSITE_CONTRIBUTE_WHY_P3":"Amb el vostre complement, podeu arribar fàcilment a aquest públic i distribuir-hi el vostre contingut de vídeo.","WEBSITE_CONTRIBUTE_ALL":"Mireu les vostres pel·lícules, vídeos, sèries i canals preferits en un sol lloc.","WEBSITE_CONTRIBUTE_ALL_P1":"Sou fans d\'un tipus de contingut concret que encara no està disponible a Stremio? Crea un complement i gaudeix veient els teus vídeos preferits en un dels centres d\'entreteniment més grans i fàcils d\'utilitzar del mercat.","WEBSITE_CONTRIBUTE_ALL_P2":"A més, obtindreu l\'agraïment interminable d\'altres membres de la comunitat Stremio amb idees semblants.","WEBSITE_CONTRIBUTE_MONETIZE":"Obteniu ingressos del vostre complement i guanyeu diners amb la seva ajuda","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Un cop hàgiu desenvolupat un nou complement per a Stremio, podeu obtenir ingressos fàcilment a través de diverses maneres. Si ho teniu en compte, no dubteu a posar-vos en contacte amb nosaltres a ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - estarem encantats de consultar-los i assessorar-vos sobre les opcions de monetització dels complements.","WEBSITE_CONTRIBUTE_TRANSLATE":"Feu-vos traductor voluntari","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Si voleu gaudir de les aplicacions Stremio en diferents idiomes, podeu unir-vos a la nostra comunitat de traductors voluntaris. Ens ajuden a afegir versions d\'Stremio en molts idiomes diferents.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Teniu moltes ganes de començar?","WEBSITE_TRANSALTE_STREMIO":"Tradueix Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Comunitats oficials","WEBSITE_COMMUNITY_OFFICIALS_P1":"Formeu part de la creixent comunitat Stremio. Seguiu-nos a les xarxes socials i no tingueu por de saludar - ens encanta escoltar els nostres fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Comunitats no oficials","STREMIO_COMMUNITY_NL":"Stremio Països Baixos","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Alemanya","STREMIO_COMMUNITY_BELGIUM":"Stremio Bèlgica","STREMIO_COMMUNITY_FRANCE":"Stremio França","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Itàlia","STREMIO_COMMUNITY_UK":"Stremio Regne Unit","STREMIO_COMMUNITY_USA":"Stremio EUA","STREMIO_COMMUNITY_MEXICO":"Stremio Mèxic","STREMIO_COMMUNITY_ADDONS":"Complements Stremio","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Socis i simpatitzants","WEBSITE_COMMUNITY_GOODIES":"Llaminadures Stremio","WEBSITE_COMMUNITY_WALLPAPERS":"Fons de pantalla","WEBSITE_COMMUNITY_ART":"Galeria d\'Art de la Comunitat","WEBSITE_LINK_ART":"Galeria d\'art de la comunitat","WEBSITE_CONTACT_US":"Contacteu-nos","WEBSITE_CONTACT_US_P1":"Si teniu cap pregunta, comentari o suggeriment, no dubteu a posar-vos en contacte amb nosaltres a través del formulari de contacte següent.","WEBSITE_CONTACT_US_P2":"Tingueu en compte que estem ubicats a Bulgària, de manera que pot haver-hi un retard en atendre la vostra consulta a causa de les diferències de zona horària.","WEBSITE_CONTACT_US_SUCCESS":"El teu missatge ha estat enviat. Ens posarem en contacte amb vostè el més aviat possible.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Introduïu un correu electrònic vàlid!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Amb què està relacionada la vostra pregunta?","WEBSITE_CONTACT_US_Q_OS":"Quin és el vostre Sistema Operatiu?","WEBSITE_CONTACT_US_PH_EMAIL":"El teu correu electrònic","WEBSITE_CONTACT_US_PH_MESSAGE":"Missatge","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ENVIAR","WEBSITE_CONTACT_US_Q_1":"Com instal·lar?","WEBSITE_CONTACT_US_Q_2":"Com es desinstal·la?","WEBSITE_CONTACT_US_Q_3":"(HTML) Com fer lasanya?","WEBSITE_CONTACT_US_Q_4":"Complements","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Tecnologia","WEBSITE_TECHNOLOGY_P1":"Ens encanta la tecnologia i la ciència boja. </br> Això és el que potencia Stremio (tot és de codi obert).","WEBSITE_TECHNOLOGY_P_QT":"Desenvolupament de programari multiplataforma al màxim.","WEBSITE_TECHNOLOGY_P_MPV":"Un reproductor multimèdia gratuït, de codi obert i multiplataforma.","WEBSITE_TECHNOLOGY_P_RN":"React Native us permet crear aplicacions per a mòbils només amb JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Framework multimèdia incrustat a l\'aplicació per obtenir multimèdia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm és una plataforma mòbil i un substitut de SQLite i Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js és un entorn de temps d\'execució de JavaScript de multiplataforma i de codi obert.","WEBSITE_TECHNOLOGY_P_RUST":"Rust és un llenguatge de programació de sistemes multi-paradigma centrat en la seguretat, sobretot la concurrència.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribuir al projecte","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Hi ha dues maneres de contribuir a Stremio i ajudar-nos a millorar el producte.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Podeu donar les vostres valuoses habilitats lingüístiques traduint la plataforma ...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"o bé","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... podeu emprar les vostres habilitats de codificació per crear complements de la comunitat. ","WEBSITE_TRANSLATE_STREMIO":"Tradueix Stremio","WEBSITE_404_OH_NO":"Uh-oh! La pàgina que cerqueu no és aquí...","WEBSITE_GO_HOME":"Anar a l\'inici","WEBSITE_LINK_OTHER_DOWNLOADS":"Altres descàrregues","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Suport","WEBSITE_DOWNLOAD_4_0_BETA":"Descarregueu Stremio 4 beta ara","WEBSITE_GET_FOR_DESKTOP":"Per a escriptori","WEBSITE_LINK_ADDON_COMPETITION":"Competició de complements","WEBSITE_LINK_ART_CONTEST":"Concurs d\'art","WEBSITE_MY_ACCOUNT":"El meu compte","WEBSITE_MAINPAGE_FAQ_001_H1":"Què és Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio és un modern centre de comunicació que us ofereix la llibertat de veure tot el que desitgeu.","WEBSITE_MAINPAGE_FAQ_002_H1":"Com funciona?","WEBSITE_MAINPAGE_FAQ_002_P1":"Un cop instal·leu Stremio al dispositiu i creeu un compte, tot el que heu de fer és visitar el catàleg de complements i instal·lar qualsevol que vulgueu, i llestos!","WEBSITE_MAINPAGE_FAQ_002_P2":"Després d\'això, podeu anar a les seccions Descobreix o Tauler per començar a explorar el contingut.","WEBSITE_MAINPAGE_FAQ_003_H1":"Què puc veure aquí?","WEBSITE_MAINPAGE_FAQ_003_P1":"Molt: pel·lícules, programes de televisió, canals web, esports, canals de TV, escoltar podcasts i molt més. Gràcies al nostre sistema de complements, podeu accedir a diversos continguts.","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio és de codi obert?","WEBSITE_MAINPAGE_FAQ_004_P1":"Sí, podeu consultar els enllaços següents: ${1}aplicació d\'escriptori${2} i ${3}organització GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"És segur Stremio?","WEBSITE_MAINPAGE_FAQ_005_P1":"Sí: com que és programari de codi obert, el codi es pot auditar públicament i el podeu revisar vosaltres mateixos.","WEBSITE_MAINPAGE_FAQ_006_H1":"I la meva privadesa?","WEBSITE_MAINPAGE_FAQ_006_P1":"Respectem la privadesa dels usuaris i no recopilem cap dada personal a més del mínim essencial per crear i sincronitzar el vostre compte.","WEBSITE_MAINPAGE_FAQ_006_P2":"També hi ha un ${1}mode de convidat${2} al registre, que no requereix cap mena de dades: en aquest mode, no es realitzen crides al nostre backend. No obstant, a costa de funcions útils com ara poder sincronitzar la biblioteca entre dispositius.","WEBSITE_MAINPAGE_FAQ_007_H1":"Puc emetre al meu televisor?","WEBSITE_MAINPAGE_FAQ_007_P1":"Sí, donem suport a Chromecast i podeu emetre-les des d\'aplicacions d\'escriptori i mòbils (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Quants complements té Stremio?","WEBSITE_MAINPAGE_FAQ_008_P1":"A finals de 2019, més de 50 - per a més informació, consulteu el nostre catàleg de complements.","WEBSITE_MAINPAGE_FAQ_009_H1":"Es pot ampliar Stremio més enllà del que hi ha al catàleg de complements?","WEBSITE_MAINPAGE_FAQ_009_P1":"Sí, hauríeu de comprovar els següents: ${1}PimpMyStremio${2}, ${3}comunitats Reddit${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"Quins dispositius admeten Stremio?","WEBSITE_MAINPAGE_FAQ_010_P1":"Disposem d\'aplicacions d\'escriptori per a Windows, Mac i Linux. Per a mòbils, admetem Android i iOS, tot i que tingueu en compte que la funcionalitat d\'IOS és limitada (no admet la majoria dels complements).","WEBSITE_MAINPAGE_FAQ_010_P2":"Hi ha molts dispositius basats en Android en els quals podeu executar Stremio, com NVIDIA Shield i Amazon Fire Stick, però no els admetem oficialment.","WEBSITE_MAINPAGE_FAQ_011_H1":"Podeu afegir un determinat contingut a Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Ho sentim, nosaltres mateixos no proporcionem contingut, però com més complements Stremio tingueu instal·lats, més contingut podreu trobar.","WEBSITE_MAINPAGE_FAQ_012_H1":"Pot Stremio reproduir enllaços magnètics?","WEBSITE_MAINPAGE_FAQ_012_P1":"Sí, i també pot reproduir enllaços HTTP normals i fitxers torrent (arrossegar i deixar anar)..","WEBSITE_MAINPAGE_FAQ_013_H1":"Puc descarregar un vídeo i mirar-lo fora de línia?","WEBSITE_MAINPAGE_FAQ_013_P1":"Disponible fora de línia és una característica pròxima, però si permeteu que Stremio emmagatzemi memòria cau al dispositiu (des del tauler de configuració) podreu veure els vídeos més endavant sense connexió.","WEBSITE_MAINPAGE_FAQ_014_H1":"Res funciona, ajuda\'m!","WEBSITE_MAINPAGE_FAQ_014_P1":"Esteu segur que teniu instal·lats complements? Si és així, consulteu el nostre ${1}centre d\'ajuda${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Com manté Stremio les seves operacions de desenvolupament?","WEBSITE_MAINPAGE_FAQ_015_P1":"Publicem anuncis no intrusius de tant en tant, però estem considerant passar a un model de donació.","WEBSITE_MAINPAGE_FAQ_015_P2":"Per obtenir més preguntes, aneu al nostre ${1}centre d\'ajuda${2}.","HELP_LEARN_MORE":"Ajudeu-nos a obtenir més informació sobre vosaltres.","LIFESTYLE":"Estil de vida","SPORTS":"Esports","FOOD_HEALTH":"Alimentació i salut","BEAUTY_FASHION":"Bellesa i moda","NEWS":"Notícies","GAMING":"Videojocs","SCIENCE_EDUCATION":"Ciència i educació","MUSIC":"Música","TRAVEL":"Viatges","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comèdia","DIY":"Fes-ho tu mateix (DIY)","TECH":"Tecnologia","CINEMA":"Cinema","CONTINUE":"Continua","SLOW_LOADING":"CÀRREGA LENTA?","I_GIVE_UP":"EM RENDEIXO","LEARN_MORE":"Aprèn més","POOR_SOURCE":"Aquesta font té poca disponibilitat o la vostra connexió a Internet no és prou ràpida","PICK_CATEGORIES_ERR":"Heu de triar com a mínim 3 categories","ADJUST_TIMING":"Ajusteu el temps amb ","ADJUST_SIZE":"Ajusta la mida amb ","SEARCH_ANYTHING":"Podeu cercar qualsevol cosa...","ALL_CATEGORIES":"Tots","SEARCH_CATEGORIES":"Pel·lícules, Sèries, YouTube i TV","SEARCH_PERSONS":"Actors, directors i escriptors","SEARCH_PROTOCOLS":"Enllaços HTTP i magnètics","SEARCH_TYPES":"Enllaços IMDB / TVDB","WATCHED":"Vist","SHOW_LESS":"Mostrar menys","LAST_SEARCHES":"Darreres cerques","CLEAR_HISTORY":"Neteja l’historial","CHOOSE_SOME":"TRIA ALGUNS D\'AQUEST:","NO_WEB_REMOTE":"No s\'ha pogut carregar el comandament a distància web","STREMIO_OFFLINE":"Stremio està fora de línia","STREMIO_EXPENSIVE_CONNECTION":"Hem detectat que utilitzeu una connexió de dades mòbils, voleu continuar?","USE_DATA":"Utilitzeu dades","WARNING":"Avís","MORE_INFO":"Més informació ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Carregant ...","STREMIO_TV_BACK_TO_LANGUAGES":"Torna als idiomes","STREMIO_TV_REMOTE":"Remot","STREMIO_TV_GO_TO":"Anar a:","STREMIO_TV_OR_SCAN":"o escaneja:","STREMIO_TV_ADDON_INSTRUCTIONS":"Seguiu les instruccions per instal·lar els vostres complements preferits.","STREMIO_TV_LIVE_TV":"TV en directe","STREMIO_TV_RESUME_WATCHING":"Reprèn la visualització","STREMIO_TV_LOADING_BACKGROUND":"Carregant el fons","STREMIO_TV_CHECKING_AUTHENTICATION":"Comprovant l\'autenticació","STREMIO_TV_LOADING_BOARD":"Carregant el Tauler","STREMIO_TV_LOGIN_HEADER_LINE_1":"Volem que els nostres usuaris tinguin la millor experiència personalitzada possible amb el nostre programari.","STREMIO_TV_LOGIN_HEADER_LINE_2":"És per aquest motiu que us demanem que creeu i/o inicieu sessió al vostre compte.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Gràcies per la comprensió,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"L\'equip d\'Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Per utilitzar el comandament a distància web amb el vostre telèfon / tauleta / escriptori:","STREMIO_TV_WIFI_SETUP":"Configuració Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle no ha detectat connexió a Internet.","STREMIO_TV_WIFI_DETAILS_1":"Connecta\'t amb:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Utilitzeu la contrasenya:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Obriu un navegador web amb l\'enllaç:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Per defecte","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Per Última Visualització","STREMIO_TV_LIBRARY_SORT_NAME":"Per Nom","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Per Cops Vist","STREMIO_TV_DETAILS_SEASON_NUMBER":"Temporada ${1}","STREMIO_TV_STREAMS_LOADING":"Carregat ${1} / ${2} complements...","STREMIO_TV_STREAMS_STILL_LOADING":"Complement ${1} encara està carregant...","STREMIO_TV_PLAYER_SETTINGS":"Configuració del Reproductor","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Retard dels subtítols","STREMIO_TV_PLAYER_AUDIO_DELAY":"Retard d\'àudio","STREMIO_TV_PLAYER_VIDEO_SCALING":"Escalat de vídeo","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Font de reproducció no compatible","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"No s\'ha pogut obrir l\'enllaç extern","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Reprodueix amb ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Reprodueix amb el reproductor libVLC","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Canviant al reproductor libVLC a causa d\'un error de reproducció","STREMIO_TV_ADDONS_TITLE":"Utilitzeu Stremio al vostre telèfon o PC per instal·lar o configurar complements i premeu \\"Sincronitza complements\\"","STREMIO_TV_ADDONS_SUBTITLE":"Nota: assegureu-vos que feu servir el mateix compte de Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sincronitza complements","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Els complements s\'han sincronitzat correctament","STREMIO_TV_ADDONS_SYNC_FAILED":"No s\'han pogut sincronitzar els complements","STREMIO_TV_META_LINK_FAILED":"No s\'ha pogut obrir el metaenllaç","STREMIO_TV_CATALOG_LOADING":"El catàleg encara s\'està carregant...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Idioma de la interfície actualitzat","STREMIO_TV_SETTINGS_THEME_UPDATED":"Tema actualitzat","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Reproductor per Defecte","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"Reproductor Extern","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Idioma preferit","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Idioma secundari preferit","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Reproducció en túnel","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possibles problemes de reproducció en alguns dispositius","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"És possible que alguns formats de vídeo no funcionin","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Sense memòria cau","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Per defecte","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Suau","STREMIO_TV_SETTINGS_PROFILE_FAST":"Ràpid","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra-Ràpid","STREMIO_TV_SETTINGS_SERVER_URL":"URL del servidor de transmissió","STREMIO_TV_SETTINGS_SERVER_VERSION":"Versió del servidor","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Desconegut","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Versió d\'Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edita l\'URL del servidor","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Introduïu l\'URL d\'un servidor de transmissió","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Per llegir la Política de Privadesa de Stremio, visiteu:","STREMIO_TV_SETTINGS_TOS_TEXT":"Per llegir els Termes i Condicions de Stremio, visiteu:","STREMIO_TV_NAV_SEARCH":"Cerca","STREMIO_TV_NAV_HOME":"Inici","STREMIO_TV_NAV_DISCOVER":"Descobreix","STREMIO_TV_NAV_LIBRARY":"Biblioteca","STREMIO_TV_NAV_MOVIES":"Pel·lícules","STREMIO_TV_NAV_SERIES":"Sèries","STREMIO_TV_NAV_CHANNELS":"Canals","STREMIO_TV_NAV_TV":"TV en directe","STREMIO_TV_NAV_SETTINGS":"Configuració","STREMIO_TV_NAV_ADDONS":"Complements","STREMIO_TV_LOGIN_TITLE":"Enllaça Compte","STREMIO_TV_LOGIN_EXPIRES_IN":"Caduca en","STREMIO_TV_LOGIN_STEP_ONE":"Escaneja el codi QR de dalt o ves a","STREMIO_TV_LOGIN_STEP_TWO":"Inicieu sessió al vostre compte Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Demana un enllaç nou","STREMIO_TV_LOGIN_LINK_REFRESHED":"S\'ha actualitzat el codi d\'inici de sessió","STREMIO_TV_SEARCH_PLACEHOLDER":"Escriu alguna cosa","STREMIO_TV_SEARCH_NO_ADDONS":"No s\'han demanat complements per als catàlegs!","STREMIO_TV_SEARCH_BUTTON":"Cerca","STREMIO_TV_SEARCH_KEY_DEL":"Supr","STREMIO_TV_SEARCH_KEY_SPACE":"Espai","STREMIO_TV_SEARCH_KEY_CLEAR":"Retrocés","STREMIO_TV_SEARCH_HISTORY_TITLE":"Historial de cerques","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Pots cercar Títols, Actors, Canals i més...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Esborrar l\'historial de cerques","STREMIO_TV_FILTERS_DESCRIPTION":"Trieu un dels filtres següents","FILTERS":"Filtres","SETTINGS":"Configuració","ACCOUNT":"Compte","LOGOUT":"Tancar sessió","THEMES":"Temes","PLAYBACK":"Reproducció","PLAYBACK_SPEED":"Velocitat de reproducció","AUDIO_TRACKS":"Pistes d\'Àudio","VIDEOS":"Vídeos","SERVER":"Servidor","LINKS":"Enllaços","ABOUT":"Quant a","INTERFACE":"Interfície","ANIMATIONS":"Animacions","STATUS":"Estat","LANGUAGE":"Idioma","SIZE":"Mida","DELAY":"Retard","BOLD":"Negreta","TEXT_COLOR":"Color del text","OUTLINE_COLOR":"Color del contorn","BACKGROUND_COLOR":"Color de fons","BACKGROUND_BLUR":"Desenfocament de fons","SEEK_TIME_DURATION":"Cerca la durada del temps","AUTO_PLAY":"Reprodueix automàticament el següent episodi","PLAY_NOW":"Reprodueix Ara","MARK_AS_WATCHED":"Marca com a Vist","MARK_AS_UNWATCHED":"Marca com a No vist","REWIND_TO_BEGINNING":"Rebobina al principi","CONTINUE_WATCHING":"Continuar Mirant","ALL":"Tot","SECONDS":"segons","ON":"ON","OFF":"OFF","RELOAD":"Recarrega","EDIT_URL":"Edita l\'URL","NONE":"Cap","EMBEDDED":"Incrustat","REMOTE_SWITCH_DEVICES":"Canviar dispositius","REMOTE_VIDEOS":"Vídeos","REMOTE_ADJUST_TIMING":"Ajusteu el temps","REMOTE_ADJUST_SIZE":"Ajusta la mida","REMOTE_COULD_NOT_BE_LOADED":"No s\'ha pogut carregar el comandament a distància web","REMOTE_RETRY":"Reintentar","TORRENT_PROFILE_DEFAULT":"Per defecte","TORRENT_PROFILE_SOFT":"Suau","TORRENT_PROFILE_FAST":"Ràpid","TORRENT_PROFILE_ULTRA_FAST":"Ultra-Ràpid","FAQ_001_H1":"Què és Stremio?","FAQ_001_P1":"Stremio és un centre multimèdia dissenyat per a l\'entreteniment en vídeo tenint en compte la facilitat d\'ús. Stremio us permet organitzar & mirar la vostra pròpia col·lecció de pel·lícules, sèries, canals i TV en directe.","FAQ_001_P2":"Stremio recopila el contingut que us mostra del vostre disc local i del nostre sistema de complements.","FAQ_001_P3":"També us notificarà quan surten nous episodis/vídeos/pel·lícules que us interessin i us recomanarà pel·lícules.","FAQ_02_H1":"Com es compara Stremio amb Kodi i Plex?","FAQ_02_P1":"Ens inspiren aquests dos programes. Però tenim objectius diferents - Stremio s\'orienta específicament cap al entreteniment en vídeo i s\'esforça per convertir-se en la solució principal per ser molt fàcil d\'utilitzar.","FAQ_02_P2":"Stremio mai serà tan personalitzable i ric en funcions com Kodi i Plex, però és molt més fàcil d\'utilitzar. Només ${1} proveu-lo i veureu ${2} :)","FAQ_03_H1":"Com es compara Stremio amb Netflix?","FAQ_03_P1":"Una vegada més, Netflix és una de les nostres inspiracions. Ens esforcem per aconseguir l\'experiència d\'usuari de Netflix, a més d\'un munt de coses addicionals. Però el més important és que us oferim la llibertat de gestionar la vostra pròpia biblioteca i afegir noves fonts de contingut amb el nostre sistema de complements.","FAQ_03_P2":"Això fa que Stremio sigui infinitament extensible, de manera que quan feu servir Stremio mai no es limita al contingut que Netflix decideix llicenciar. Per exemple, mitjançant Stremio podeu veure contingut de ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} i fins i tot el mateix ${9}Netflix${10}!","FAQ_04_H1":"Com es compara Stremio amb Flipboard?","FAQ_04_P1":"Aquesta pregunta no ens arriba tan sovint, excepte quan parlem amb emprenedors :)","FAQ_04_P2":"Stremio és per disseny d\'un agregador de continguts, que bàsicament el converteix en Flipboard per a vídeo. Això és molt evident a la nostra secció de Tauler, que us proporciona catàlegs i notificacions de episodis/vídeos nous del que seguiu, igual que Flipboard.","FAQ_05_H1":"Com es compara Stremio amb Popcorn Time?","FAQ_05_P1":"Stremio i Popcorn Time són similars a la interfície d\'usuari, perquè no hi ha moltes maneres de fer els catàlegs d\'entreteniment de vídeo correctament :)","FAQ_05_P2":"Però, mentre que Popcorn Time se centra en la transmissió de torrents de fonts específiques, Stremio no té restriccions i és només un agregador de continguts - no està bloquejat en una font de contingut específica.","FAQ_05_P3":"A més, no proporcionem cap complement de torrent per defecte, de manera que Stremio no cobreix el cas d\'ús Popcorn Time amb la funcionalitat oficial.","FAQ_05_P4":"Una altra diferència notable és que Popcorn Time és completament de codi obert, mentre que Stremio és ${1} parcialment de codi obert${2}.","FAQ_06_H1":"Afegireu aquesta pel·lícula/sèrie?","FAQ_06_P1":"No, ho sento :(","FAQ_06_P2":"Com s\'esmenta a la majoria de les altres preguntes, Stremio no proporciona cap contingut per si mateix - tot s\'afegeix a través del sistema de complements. En cas que tingueu una sol·licitud de contingut, podeu fer servir el botó “Informa” del reproductor, que enviarà un correu electrònic a l\'autor del complement que esteu utilitzant actualment.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Creeu un complement per a X?","FAQ_08_P1":"És del tot possible.","FAQ_08_P2":"Si teniu una idea per a un complement, envieu-nos una línia a ${1}office@stremio.com${2}, però assegureu-vos que la vostra idea de complement no infringeixi cap copyright ni les condicions d\'ús.","FAQ_08_P3":"De moment, les següents coses del nostre full de ruta són complements per a FandangoNOW, el vídeo a la carta de Filmon.tv i Crunchyroll.","FAQ_09_H1":"Stremio utilitza BitTorrent?","FAQ_09_P1":"Sí, Stremio admet BitTorrent com a protocol de transmissió. Podeu fer-ho amb un complement de torrent, arrossegant i deixant anar un fitxer .torrent a Stremio o enganxant un enllaç magnètic a la barra de cerca.","FAQ_09_P2":"Tingueu en compte que l\'únic complement oficial que utilitza BitTorrent és ${1}Vodo${2}, que proporciona contingut independent, tot el que es pot distribuir amb BitTorrent.","FAQ_09_P3":"No admetem l\'ús de complements de tercers que puguin permetre la infracció dels drets d\'autor.","FAQ_10_H1":"Què puc veure a Stremio amb els complements oficials?","FAQ_10_P1":"Per defecte, podeu veure el contingut de Filmon.tv, YouTube i Vodo dins del mateix Stremio, amb el reproductor incrustat. A més, tenim un complement per a Twitch.tv i alguns altres.","FAQ_10_P2":"Aquesta combinació proporciona una selecció de:","FAQ_10_L1":"Canals de televisió populars, proporcionats per Filmon.tv - per exemple E4, BBC, Bollyworld TV","FAQ_10_L2":"Tot des de YouTube - per exemple BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Pel·lícules independents amb Vodo","FAQ_10_L4":"Emissions de jocs en línia amb Twitch.tv","FAQ_10_P3":"A més, hi ha moltes fonts de contingut que es proporcionen amb Guidebox i els complements Netflix, que <b>no</b> es reprodueixen completament dins Stremio, però que redirigiran al servei indicat. Per exemple, el complement Guidebox us proporcionarà una selecció de pel·lícules que podeu reproduir gratuïtament als Estats Units, des de serveis com TubiTV i Crackle.","FAQ_11_H1":"Stremio no s\'instal·la, què he de fer?","FAQ_11_P1":"Si utilitzeu Windows, proveu ${1}aquest instal·lador alternatiu${2}.","FAQ_11_P2":"Si utilitzeu Mac OS X, tingueu en compte que no admetem res més antic que OS X Mavericks (10.9).","FAQ_11_P3":"Si utilitzeu Linux, tingueu en compte que en aquest moment només admetem Linux de 64 bit (x64).","FAQ_11_P4":"Si encara no podeu resoldre el vostre problema, escriviu-nos al nostre ${1}grup de Facebook${2}.","FAQ_12_H1":"Per què es queixa del meu antivirus? És segur Stremio?","FAQ_12_P1":"Us assegurem que Stremio és ${1}100% net${2}.","FAQ_12_P2":"El vostre antivirus es queixa perquè incloem publicitat al nostre instal·lador, que alguns programes antivirus reconeixen com a ad-ware.","FAQ_12_P3":"Si encara no esteu segur, podeu provar el nostre ${1}instal·lador alternatiu${2}.","FAQ_13_H1":"Com puc fer un complement?","FAQ_13_P1":"Per començar, us recomanem que consulteu el nostre ${1}mòdul del sistema de complements${2} a GitHub.","FAQ_13_P2":"Després, podeu seguir el ${1}tutorial Hola Món${2}.","FAQ_13_P3":"Si no teniu cap habilitat de programació, publiqueu la vostra idea a ${1}la comunitat Reddit${2} i poseu-vos en contacte amb nosaltres amb la vostra idea de complement a ${3}office@stremio.com${4}.","FAQ_14_H1":"Com es publiquen els complements?","FAQ_14_P1":"Quan creeu un complement i un host, i col·loqueu un camp <b>endpoint</b> al manifest, que apunti a una adreça de complement funcional, el complement es publicarà automàticament al nostre ${1}catàleg de complements${2}.","FAQ_14_P2":"Això passa perquè la part del servidor del mòdul stremio-addons fa una crida automàticament a la nostra API per anunciar-lo. Quan la nostra API validi el vostre <b>endpoint</b> com a complement vàlid, començarà a aparèixer al catàleg.","FAQ_15_H1":"Puc executar Stremio al meu navegador?","FAQ_15_P1":"De moment no, però s\'acosta!","FAQ_15_P2":"Si teniu curiositat per veure un Alpha, el podeu veure aquí: ${1}alpha4.strem.io${2}. Recordeu que la transmissió està desactivada en aquest alfa. Admetem Chrome, Firefox, Opera i Edge.","FAQ_16_H1":"Emetre a la televisió no funciona / els subtítols no funcionen","FAQ_16_P1":"La transmissió a TV utilitza la tecnologia DLNA, que és molt inconsistent entre les diferents marques i models de televisors. Per aquest motiu, no tenim la capacitat de provar-ho en tots els casos, de manera que no és ni molt menys perfecte. Tot i això, estem treballant per millorar-lo constantment, però no podem proporcionar-vos una estimació de temps sobre quan DLNA començarà a funcionar correctament amb el vostre televisor.","FAQ_16_P2":"Si ni tan sols veieu el televisor al menú d\'emissió, proveu de desactivar la connexió de xarxa i tornar-la a activar (a Windows, feu clic amb el botó dret a la xarxa i utilitzeu Activa/Desactiva), així com reiniciar el router, el televisor i l\'ordinador.","FAQ_16_P3":"Si encara teniu problemes, podeu ajudar-nos enviant la informació de la vostra marca i model de televisió a ${1}office@stremio.com${2}.","FAQ_16_P4":"Mentrestant, recomanem Chromecast, que funciona molt bé, o simplement connecteu el televisor al PC amb un cable HDMI.","FAQ_17_H1":"Stremio es congela o es bloqueja, què puc fer?","FAQ_17_P1":"En primer lloc, si utilitzeu Windows 7 amb antivirus AVG: tenim aquesta problemàtica. El problema es troba en la pròpia AVG i no hi ha cap manera raonable de resoldre-ho per nosaltres mateixos. Malauradament, les excepcions o la desactivació de l\'antivirus no funcionaran. L\'única solució és substituir AVG per un altre.","FAQ_17_P2":"Si aquest no és el problema, però encara esteu utilitzant Windows, actualitzeu-lo a la versió més recent i actualitzeu/reinstal·leu els controladors de la GPU, llavors torneu-ho a provar.","FAQ_17_P3":"Si el problema encara no s\'ha resolt o si utilitzeu un Mac o Linux, escriviu-nos informant dels detalls exactes del problema al ${1}grup de Facebook${2}.","FAQ_18_H1":"Com puc fer un complement?","FAQ_18_P1":"Per començar, us recomanem que consulteu el nostre ${1}mòdul del sistema de complements${2} a GitHub.","FAQ_18_P2":"Després, podeu seguir el ${1}tutorial Hola Món${2}.","FAQ_18_P3":"Si no teniu cap habilitat de programació, publiqueu la vostra idea a ${1}la comunitat Reddit${2} i poseu-vos en contacte amb nosaltres amb la vostra idea de complement a ${3}office@stremio.com${4}.","FAQ_19_H1":"Per què Stremio ocupa espai al disc?","FAQ_19_P1":"Stremio té una <b>memòria cau local</b> per conservar temporalment els fitxers de vídeo que transmets.","FAQ_19_P2":"Això té dos avantatges: en primer lloc, permet a Stremio pre-emmagatzemar el vídeo per garantir una transmissió més fluida. En segon lloc, manté els vídeos a la memòria cau local perquè pugueu continuar veient-los fora de línia.","FAQ_19_P3":"La quantitat que guarda Stremio depèn del paràmetre <b>Memòria cau</b> del tauler de configuració. És possible que Stremio mantingui la quantitat establerta (ex: 2GB) al disc, tret que el vídeo que es reprodueixi actualment sigui més gran que aquest. En aquest cas ha d\'assignar prou emmagatzematge per conservar-lo mentre que l\'estiguis reproduint.","FAQ_20_H1":"On és la carpeta de memòria cau?","FAQ_20_P1":"A Windows, és stremio-cache a la unitat que heu seleccionat a Configuració (per exemple \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"A MacOS, és \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"A Linux, és \\"~/.stremio/stremio-cache\\" o \\"~/stremio-cache\\"","FAQ_21_H1":"Tinc l\'error \\"El servidor de transmissió no s\'ha trobat\\" què puc fer?","FAQ_21_P1":"Si obteniu aquest error, significa alguna d\'aquestes coses:","FAQ_21_P2":"1) Esteu provant d\'utilitzar un complement compatible amb la font de YouTube/BitTorrent a través de la nostra ${1}versió web${2}. En aquest cas, hauríeu d\'instal·lar la nostra versió d\'escriptori des del ${3}nostre lloc web${4}.","FAQ_21_P3":"2) Hi ha un problema amb la instal·lació d\'Stremio. En aquest cas, proveu de tornar a instal·lar la nostra versió d\'escriptori més recent des del ${1}lloc web${2}. Si això no ajuda, proveu de desactivar els programes antivirus i els tallafocs, reinicieu el PC i torneu-ho a provar. Si això també no funciona, escriviu-nos al nostre ${3}grup de Facebook${4}.","FAQ_22_H1":"No puc veure/utilitzar la majoria dels complements a iOS","FAQ_22_P1":"A causa de les restriccions dels termes i condicions de l\'App Store d\'Apple, hem restringit l\'aplicació iOS només a un conjunt concret de complements.","FAQ_22_P2":"Però tingueu la seguretat: hi haurà més complements per a iOS en el futur, i també podem afegir una integració que us permetrà utilitzar tots els complements Stremio gràcies a la connexió de l\'aplicació iOS al servidor de transmissió Stremio."}')},2840:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Seriály","TYPE_tv":"Televizní kanál","TYPE_channel":"Kanál","TYPE_other":"Ostatní","TYPE_movie_PL":"Filmy","TYPE_series_PL":"Seriály","TYPE_tv_PL":"Televizní kanály","TYPE_channel_PL":"Kanály","TYPE_other_PL":"Ostatní","TYPE_ALL":"All","VIDEO":"Video","BACK":"Dozadu","MORE":"Více","DONE":"Hotovo","COPY":"Kopírovat","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Discover","Board":"Rozdání","Library":"Knihovna","My Library":"Moje knihovna","Calendar":"Kalendář","NOTIFICATION_ONLINE":"Nyní jste online","NOTIFICATION_OFFLINE":"V současné době jste offline","INTERNET_CONNECTION":"Připojení k síti","STORAGE_FULL_TITLE":"Varování: Úložiště je plné!","STORAGE_FULL_TEXT":"Stremio nebude moci uložit vaše nastavení, preference ani přihlašovací údaje. Zvažte opětovné spuštění nebo přeinstalování aplikace Stremio.","SEARCH":"hledat","SEARCH_NO_RESULTS":"Nebyly nalezeny žádné výsledky","SEARCH_EXPLANATION_CONTENT":"Vyhledávání filmů, seriálů, YouTube a televizních kanálů","SEARCH_EXPLANATION_PEOPLE":"Hledání herců, režisérů a scénáristů","SEARCH_PASTE_LINKS":"Vkládání odkazů HTTP a Magnet","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Přidat do knihovny","REMOVE_FROM_LIB":"Odebrat z knihovny","ADDED_TO_LIB":"Přidáno do knihovny","REMOVED_FROM_LIB":"Odstraněno z knihovny","TRAILER":"Přívěs","WATCH_TRAILER":"Sledovat trailer","WATCH_NOW":"Sledujte nyní","SHOW":"Zobrazit","SHOW_MOVIE":"Zobrazit film","WATCH_RANDOM":"Sledovat náhodné","IMDB_RATING":"IMDb hodnocení","YEAR":"Rok","DIRECTOR":"Režie","WRITER":"Spisovatel/ka","LEAD_ACTORS":"Hlavní herci","CAST":"Herec","CREW":"Posádka","SHOW_MORE_CAST":"Zobrazit více »","AIRED":"Vysíláno na","SEASONS":"Série","GENRE":"Žánr","CATALOG":"Katalog","SUMMARY":"Shrnutí","SHOW_MORE":"Zobrazit více","SIMILAR":"Podobné stránky","UPCOMING":"Nadcházející","ENDED":"Skončilo","DURATION":"Délka","FEATURED":"Doporučené","METADATA":"Metadata","CATEGORY":"kategorie","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"vyhledávání videí","SEARCH_PLACEHOLDER":"vyhledat nebo vložit adresu URL","ADDON":"doplněk","ADDONS":"Doplňky","OFFICIAL":"oficiální","ADDONS_OFFICIAL":"Oficiální doplňky Stremio","ADDONS_POPULAR":"Oblíbené ve vaší oblasti","ADDON_FREE":"zdarma","ADDON_PEERED":"nahlédl na","ADDON_SUBSCRIPTION":"předplatné","ADDON_STREAM_GEORESTRICTED":"není ve vaší oblasti k dispozici","ADDON_STREAM_OFFLINECACHE":"Offline mezipaměť","ADDON_STREAM_LOCALFILE":"Místní soubor","SHARE_ADDON":"Sdílet doplněk","AVAILABLE_STREAMS":"Dostupné proudy","NO_STREAM":"Nebyly nalezeny žádné toky","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Chcete-li získat více streamů, nainstalujte si další doplňky","STREAM_NOT_SUPPORTED":"Vybraný stream není na této platformě podporován.","ADDON_CATALOGUE":"Zobrazit všechny doplňky \\"","ADDON_CATALOGUE_MORE":"Instalace doplňků","REPO_ADDED":"Přidáno úložiště","ADDON_REPO_EXIST_ERR":"Tato kolekce doplňků již existuje","ADDON_REPO_ERR":"Při přidávání kolekce došlo k chybě","ADDON_ADD_ERR":"Při přidávání doplňku došlo k chybě","ERR_ADDON_PROTECTED":"Nelze odinstalovat doplněk, je chráněn","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Něco se pokazilo - možná selhalo ověřování","ERR_NOT_COLLECTION_URL":"Nejedná se o adresu URL sbírky","ERR_NOT_ADDON_URL":"Není platná adresa URL doplňku","ERR_DETECTFROMURL":"Nelze najít doplněk/sbírku z této adresy URL","ADDON_DUPLICATE_WARNING":"Varování: duplicitní addon","ADDON_COLLECTION_SET_FAILED":"Synchronizace nainstalovaných doplňků s vaším účtem se nezdařila","SETTINGS_DATA_EXPORT":"Export uživatelských dat","ADDON_PULL_FAILED":"Synchronizace nainstalovaných doplňků z vašeho účtu se nezdařila","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Film stále v kinech","WATCH_IN_CINEMA":"Podívejte se na něj v místním kině","IN_THEATER":"V kině","GET_TICKETS":"Získat vstupenky","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Tento kanál ještě není seškrábán.<br>Vraťte se prosím za několik minut.</br>","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Přidejte si ji do své knihovny, abyste byli informováni, jakmile bude k dispozici.","GET_NOTIFIED_WHEN_AVAILABLE":"Jakmile bude k dispozici, budete o tom informováni.","WARNING_STREAMING_SERVER":"Varování: místní streamovací server nebyl nalezen. Streamování z místních souborů, YouTube a BitTorrent nebude k dispozici.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Varování: toto video nemusí být podporováno vaším hardwarem. Mějte na paměti, že přehrávání může být pomalé.","PLAYER_ERROR":"Oops, chyba hráče","PLAYER_ERROR_LOOKSLIKE":"Vypadá to, že","PLAYER_ORIENTATION":"Orientace hráče","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Uzamčeno","PLAYER_ORIENTATION_SENSOR_SHORT":"Senzor","PLAYER_ORIENTATION_LANDSCAPE":"Orientace přehrávače uzamčená na šířku","PLAYER_ORIENTATION_SENSOR":"Automatická orientace hráče (senzor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Chyba přehrávání, zkuste to prosím znovu","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Neznámá chyba","PLAYER_PLAYBACK_ERROR_DEFAULT":"Je nám líto, ale toto video nelze přehrát pomocí {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Příště v pořadu","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Skrýt","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Sledovat nyní","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streamování z","CASTING_TO":"Obsazení do","NETWORK_STATUS":"Stav sítě","STREAM_SPEED":"Rychlost proudu:","STREAM_BUFFERED":"Vyrovnávací paměť:","PEERS_INFO":"Informace o vrstevnících","PEERS_ACTIVE":"Používáno:","PEERS_CONNECTED":"Připojeno:","PEERS_WAITING":"Čekání:","TRANSCODING_WARNING":"Varování: překódování videa.","STREAM_LOADING":"načítám...","PLAYING_LOCAL":"přehrávání z místního souboru","PLAYING_CACHE":"přehrávání z mezipaměti","WRONG_SUBS":"Špatné titulky?","ERR_SUBS_LOADING_TITLE":"Chyba při načítání titulků","ERR_SUBS_LOADING":"Neúspěšné načítání titulků: může se jednat o problém s používaným doplňkem nebo se síťovým připojením","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Následující doplňky titulků selhaly","ERR_CASTING_UPDATE_TITLE":"Nelze aktualizovat informace o zařízení pro odlévání: streamovací server může být offline","CHOOSE_DEVICE":"Výběr zařízení, na kterém chcete sledovat","NO_CAST_DEVICES":"Žádné odlévací zařízení není k dispozici.","NO_SETTINGS":"Žádné nastavení není k dispozici.","PHONE_TABLET":"Telefon / tablet","SUBTITLES":"Titulky","SUBTITLES_CHANGE":"Změna titulků pro","SUBTITLES_CHANGE_NONE":"Pro tento jazyk nejsou k dispozici žádné další titulky, omlouváme se.","SUBTITLES_CHANGE_ACIVE":"Aktuálně jsou aktivovány titulky #{{subtitlesDialog.activeIdx + 1}}. Kliknutím na \\"Pokračovat\\" aktivujete titulky #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Případně,","SUBTITLES_ADJUST_DELAY":"Nastavení zpoždění titulků:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Nebo můžete při přehrávání použít klávesy <span>G</span> / <span>H</span> pro nastavení.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: při hraní můžete použít klávesy <span>G</span> / <span>H</span> pro nastavení.","SUBTITLES_DELAY":"Zpoždění titulků:","SUBTITLES_LOADING":"Načítání titulků...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Vypnuto","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Období","EPISODE":"Epizody","SPECIAL":"Special","SORT":"řazení","SORT_BY":"Seřadit podle","FILTER":"filtr","SORT_TRENDING":"trendy","SORT_RECENT":"nedávné","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"hodnocení","SORT_WATCHED":"sledoval","SORT_YEAR":"rok","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Novinky pro vás","New Episodes":"Nové epizody","New Videos":"Nové články a videa","Recommendations":"Doporučení","LIBRARY_RESUME":"Pokračovat","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Detaily","LIBRARY_RESUME_DISMISS":"Skrýt","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Doporučené","DISCOVER_TOP":"Nahoře","DISCOVER_OSCAR":"Vítězové Oscara","DISCOVER_WARNING_TITLE":"Jejda!","DISCOVER_EMPTY_CATALOG":"Tento doplněk vrátil prázdný obsah.","DISCOVER_ADULT_WARNING":"Obsah je viditelný pouze pro dospělé. Jste starší 18 let?","DISCOVER_NOADDON_WARNING":"Varování: pro tento typ není aktivní žádný doplněk Stremio. Zobrazuje uložené položky, nic se zde neaktualizuje.","DISCOVER_LOAD_ERR":"Obsah se nenačetl, došlo k chybě.","DISCOVER_ADDON_UNINSTALLED":"Tento obsah již není k dispozici, možná jste doplněk odinstalovali.","UNINSTALL_THIS_ADDON":"Odinstalování tohoto doplňku","ERR_ADDON_NOT_INSTALLED":"Tento doplněk není nainstalován. Nainstalovat nyní?","DETAIL_RECEIVE_NOTIF_SERIES":"Přijímání oznámení o nových epizodách","DETAIL_RECEIVE_NOTIF_VIDEOS":"Přijímání upozornění na nová videa","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Opětovné spuštění nyní!","UPGRADE":"Nová verze je k dispozici! Upgrade na nejnovější verzi Stremio","RELOAD_UI":"Opětovné načtení uživatelského rozhraní","MANUAL_UPDATE_TITLE":"Aktualizace verze aplikace Stremio","MANUAL_UPDATE_LINE1":"Používáte zastaralou verzi aplikace Stremio, která se nedoporučuje.","MANUAL_UPDATE_LINE2":"Prosíme o co nejrychlejší aktualizaci.","BUTTON_UPDATE_LATTER":"Nyní ne","BUTTON_UPDATE_NOW":"Aktualizovat","ANONYMOUS_USER":"Anonymní uživatel","DONT_HAVE_ACC":"Nemáte účet?","HAVE_ACC":"Již máte účet?","PASSWORD":"Heslo","PASSWORD_CONFIRM":"Potvrďte heslo","EMAIL":"E-mail","FB_LOGIN":"Pokračovat na Facebooku","FB_NOTHINGSHARED":"Nic není sdíleno bez vašeho souhlasu","FB_NOPOST":"Vaším jménem nic nezveřejníme","OR":"nebo","I_ACCEPT":"Přijímám","I_ACCEPT_BY_CLICKING":"Kliknutím na výše uvedené tlačítko stvrzuji, že souhlasím s tím, že","TOS":"Obchodní podmínky","MUST_ACCEPT_TERMS":"Musíte přijmout podmínky","PASSWORDS_NOMATCH":"Heslo se neshodují","SIGN_UP":"Registrovat se","SIGN_UP_EMAIL":"Zaregistrujte se pomocí e-mailu","CLICK_TO_SIGN_UP":"Klikněte zde a zaregistrujte se.","LOG_IN":"Přihlásit","LOG_OUT":"Odhlásit se","EXIT_FULLSCREEN":"Ukončení celoobrazovkového režimu","ENTER_FULLSCREEN":"Vstup do celoobrazovkového režimu","PLAY_URL_MAGNET_LINK":"Přehrát adresu URL / odkaz na magnet","HELP_FEEDBACK":"Nápověda a zpětná vazba","TERMS_OF_SERVICE":"Podmínky služby","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"O Stremio","USER_PANEL":"Uživatelský panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Přihlášení hosta","GUEST_LOGIN_NOTICE":"Přihlášení hosta se nedoporučuje. Použití běžného přihlášení umožňuje službě Stremio synchronizovat vaši knihovnu a přijímat oznámení o oblíbených seriálech/kanálech. Jste si jisti, že chcete pokračovat?","GUEST_LOGIN_NOTICE_2":"Přihlášení hosta se nedoporučuje - nebudete mít synchronizované oznámení o knihovně a nástěnce, což jsou důležité funkce aplikace Stremio. Jste si jisti, že chcete pokračovat?","CLICK_HERE":"klikněte sem","WRONG_PASSWORD":"Špatný e-mail nebo heslo. V případě, že jste zapomněli heslo,","SET_A_PASS":"nastavit heslo","RESET_PASSWORD":"Obnovit heslo","FORGOT_PASSWORD":"Zapomenuté heslo?","EMAIL_USED_WITH_FB":"Tento e-mail byl použit s přihlášením na Facebook.","INVALID_EMAIL":"Zadejte prosím platnou emailovou adresu","INVALID_PASSWORD":"Zadejte prosím platné heslo","CONN_ERR":"Chyba připojení - zkuste to prosím později.\\n\\nPokud přetrvává, vypněte firewall/antivirový software (zejména Bitdefender).","IMPORT_FROM_GUEST":"Import knihovny z účtu hosta","RECEIVE_UPDATES_EMAIL":"Přijímání aktualizací do e-mailu od Stremio","LOGIN_FAILED":"Přihlášení se nezdařilo.","SIGNUP_FAILED":"Registrace se nezdařila.","SEARCH_FAILED":"Vyhledávání se nezdařilo","EMAIL_USED":"E-mail je už používán.","WAITING_FB_LOGIN":"Přihlášení pomocí Facebooku...","EXTERNAL_PLAYER_TITLE":"Přehrávání v externím přehrávači","EXTERNAL_REMEMBER_PLAYER":"Chcete si svou volbu zapamatovat","EXTERNAL_ALWAYS_PLAY":"Ano","EXTERNAL_ONLY_ONCE":"Ne","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Řekněte nám, co se vám líbí","INTRO_TASTE_LONG":"Řekněte nám, co byste chtěli sledovat","INTRO_TASTE_PICK":"Vyberte {{interestsRemaining}} zájmy","INTRO_TASTE_PICK_MORE":"Vyberte {{interestsRemaining}} dalších zájmů","INTRO_TASTE_HELP_US":"Pomozte nám dozvědět se o vás více.","INTRO_TASTE_CHOOSE_THESE":"Vyberte si některé z nich:","INTRO_TASTE_CHOOSE_MIN":"Vyberte alespoň 3 kategorie","INTRO_TASTE_CHOOSE_MIN_ERR":"Musíte vybrat alespoň 3 kategorie!","INTRO_TASTE_LIFESTYLE":"Životní styl","INTRO_TASTE_SPORTS":"Sporty","INTRO_TASTE_FOOD_HEALTH":"Potraviny a zdraví","INTRO_TASTE_BEAUTY_FASHION":"Krása a móda","INTRO_TASTE_NEWS":"Novinky","INTRO_TASTE_GAMING":"Hry","INTRO_TASTE_SCIENCE_EDU":"Věda a vzdělávání","INTRO_TASTE_MUSIC":"Hudba","INTRO_TASTE_TRAVEL":"Cestovní kancelář","INTRO_TASTE_LATE_NIGHT":"Pozdní noční show","INTRO_TASTE_REALITY":"Realita","INTRO_TASTE_COMEDY":"Komedie","INTRO_TASTE_DIY":"Jak na kutilství","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Kino","ADDON_NOT_SUPPORTED":"Vybraný doplněk není na této platformě podporován.","ADDON_DISCLAIMER":"Používání doplňků třetích stran vždy podléhá vaší odpovědnosti a právním předpisům jurisdikce, ve které se nacházíte.","ADDON_ACTIVATE":"Aktivovat tento doplněk?","ADDON_REPO_ADD":"Adresa URL sbírky doplňků","ADDON_ADD":"Přidat","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Co je nového","BUTTON_CONTINUE":"Pokračovat","BUTTON_ACTIVATE":"Aktivovat","BUTTON_ACTIVATED":"Aktivovaný","BUTTON_CANCEL":"Zrušit","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Odmítnout vše","BUTTON_VIEW_ALL":"zobrazit vše","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Vaše knihovna vypadá prázdná. Zjistěte, jak je užitečná :)","HOW_START":"Zde je návod, jak začít:","LIB_EMPTY_CAL":"V kalendáři se zobrazují série ve vaší knihovně.","HOW_START_CAL":"Zde je návod, jak můžete přidávat série:","LIB_EMPTY_BOARD":"Tabule zobrazuje oznámení & doporučení týkající se vaší knihovny.","HOW_START_BOARD_WAIT":"Prosím, přidejte do své knihovny několik seriálů nebo kanálů a dejte nám pár minut na zpracování :)","HOW_START_BOARD":"Zde je návod, jak do něj můžete přidat seriály & filmy:","IMPORT_FB":"Import věcí, které se vám líbí, ze <span>služby Facebook</span>","IMPORT_TRAKT":"Import knihovny médií ze <span>služby Trakt</span>","IMPORT_DISCOVER":"Najděte zajímavé věci ze služby <span>Discover</span>","IMPORT_DISK":"Importovat filmy nebo pořady, které máte na <span>místním disku</span>","PLEASE_CREATE_ACC":" <u>Vytvořte si účet</u>, abyste mohli synchronizovat knihovnu a tabuli.","IMPORT_DISCOVER_SIGNUP":"Zaregistrujte se a najděte zajímavé věci z <span>Discover</span>","IMPORT_DISK_SIGNUP":"Zaregistrujte se a importujte filmy nebo pořady, které máte na <span>místním disku</span>","LIB_EMPTY_CLOUD":"Cloudová knihovna","LIB_EMPTY_CLOUD_DESC":"Osobní cloudová knihovna synchronizovaná na všech zařízeních","LIB_EMPTY_EARLY":"Brzy","LIB_EMPTY_EARLY_DESC":"Přijímání oznámení o nových epizodách","LIB_EMPTY_PERSONAL":"Osobní","LIB_EMPTY_PERSONAL_DESC":"Získejte osobní doporučení","LIB_EMPTY_CALENDAR_DESC":"Naplánujte si osobní kalendář sledování","LIB_EMPTY_ALL":"Zaregistrujte se a získejte je všechny:","LIB_EMPTY_BEST":"Zaregistrujte se a získejte to nejlepší ze Stremio","LIB_EMPTY_OTHER":"Zaregistrujte se a povolte Kalendář a další skvělé funkce","CALENDAR_ADDED":"Kalendář Stremio byl přidán do vašeho výchozího kalendáře na ploše.","CALENDAR_ADDED_MSG":"Pokud to nefunguje, přidejte tuto adresu URL do aplikace kalendáře ručně","TRAKT_EXPIRED":"Platnost ověření Traktu vypršela, přejděte prosím do Nastavení a znovu se ověřte","TRAKT_REQUIRES_LOGIN":"Chyba traktu","TRAKT_REQUIRES_LOGIN_MSG":"Musíte se přihlásit","SETTINGS_LABEL":"Nastavení","SETTINGS_NAV_GENERAL":"Obecné","SETTINGS_NAV_PLAYER":"Hráci","SETTINGS_NAV_STREAMING":"Streamování","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Spuštění při spuštění","SETTINGS_VLC_DEFAULT":"Přehrávání pomocí VLC","SETTINGS_UI_LANGUAGE":"Jazyk uživatelského rozhraní","SETTINGS_FULLSCREEN_EXIT":"Klávesa Escape ukončí celou obrazovku","SETTINGS_GAMEPAD":"Povolení podpory gamepadu","SETTINGS_CLOSE_WINDOW":"Zavření aplikace při zavření okna","SETTINGS_SUBTITLES_LANGUAGE":"Výchozí jazyk titulků","SETTINGS_SUBTITLES_SIZE":"Výchozí velikost titulků","SETTINGS_SUBTITLES_BACKGROUND":"Pozadí titulků","SETTINGS_SUBTITLES_COLOR":"Barva titulků","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Barva obrysu titulků","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Barva pozadí titulků","SETTINGS_SEEK_KEY":"Klávesy se šipkami hledají čas","SETTINGS_SEEK_KEY_SHIFT":"Klávesy se šipkami hledají čas při podržení klávesy Shift","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Automatické přehrávání další epizody","SETTINGS_NEXT_VIDEO":"Upozornění na spuštění další epizody","SETTINGS_NEXT_VIDEO_TRIGGER":"Zobrazit upozornění na další epizodu:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Automatická změna velikosti okna před přehráváním","SETTINGS_OVERRIDE_SERVER":"Přepsání adresy URL streamovacího serveru (pro pokročilé)","SETTINGS_SERVER_URL":"Adresa URL streamovacího serveru","SETTINGS_SERVER_AVAILABLE":"Streamovací server je k dispozici.","SETTINGS_SERVER_UNAVAILABLE":"Streamovací server není k dispozici.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Koncový bod HTTPS pro streamování","SETTINGS_USE_BETA":"Vždy používejte nejnovější betaverzi","SETTINGS_IMPORT_FB":"Import ze služby Facebook","SETTINGS_IMPORT_DISK":"Import z místního disku","SETTINGS_IMPORT_TRAKT":"Import ze služby Trakt","SETTINGS_PAUSE_MINIMIZED":"Pozastavení přehrávání při minimalizaci","SETTINGS_HWDEC":"Hardwarově akcelerované dekódování","SETTINGS_BACKGROUND":"Přehrávání na pozadí","SETTINGS_SUBSCRIBE_CALENDAR":"Přihlásit se k odběru kalendáře","SETTINGS_REQ_EXPORT":"Žádost o export dat","SETTINGS_ACC_DELETE":"Žádost o odstranění účtu","SETTINGS_CHANGE_PASSWORD":"Změnit heslo","SETTINGS_TOS":"Podmínky služby","SETTINGS_SUPPORT":"Kontaktovat podporu","SETTING_LANGUAGE":"Jazyk","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Odhlášení z Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Naskenujte QR kód pro otevření dálkového ovládání","SETTINGS_DESKTOP_NOTIFICATIONS":"Oznámení na ploše","SETTINGS_DATA_SAVER":"Spořič dat","SETTINGS_LANGUAGE_INTERFACE":"rozhraní","SETTINGS_LANGUAGE_SUBS":"výchozí titulky","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"účet","SETTINGS_VERSION":"verze","SETTINGS_MPV_WINDOW":"Spuštění přehrávače v samostatném okně (pokročilé)","SETTINGS_PLAY_IN_EXTERNAL":"Vždy spustit video v externím přehrávači","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Odejít","CONNECTED":"Připojeno","AUTHENTICATE":"Ověřit","CACHING":"Mezipaměť","SETTINGS_CACHING_DRIVE":"Jednotka mezipaměti","ENABLE_LOCAL_FILES_ADDON":"Povolení doplňku pro místní soubory (vyžaduje restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Povolení vzdálených připojení HTTPS","TORRENT_PROFILE":"Profil Torrent","DATA_CACHING":"Ukládání dat do mezipaměti","MAGNET_PARSING":"Rozbor odkazu magnetu","January":"Leden","February":"Únor","March":"Březen","April":"Duben","May":"Květen","June":"Červen","July":"Červenec","August":"Srpen","September":"Září","October":"Říjen","November":"Listopad","December":"Prosinec","Monday":"Pondělí","Tuesday":"Úterý","Wednesday":"Středa","Thursday":"Čtvrtek","Friday":"Pátek","Saturday":"Sobota","Sunday":"Neděle","Action":"Akce","Comedy":"Komedie","War":"Válka","Family":"Rodina","Animation":"Animace","Adventure":"Dobroudružná hra","Fantasy":"Fantasy","Crime":"Zločin","Mystery":"Záhada","Romance":"Romantické","Drama":"Drama","Horror":"Horory","Thriller":"Thriller","Sci-Fi":"Sci-fi","Music":"Hudba","Biography":"Životopis","Documentary":"Dokumentární film","Sport":"Sport","Musical":"Hudební","Western":"Západní","Film-Noir":"Film-noir","News":"Novinky","History":"Historie","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film a zábava","Gaming":"Hry","From TV":"Z televize","Lifestyle":"Životní styl","Science & Education":"Věda a vzdělávání","Cooking & Health":"Vaření a zdraví","Beauty & Fashion":"Krása a móda","Sports":"Sporty","News & Politics":"Zprávy a politika","How-to & DIY":"Jak na to & Udělej si sám","Tech":"Tech","Automotive":"Automobilový průmysl","Causes & Non-Profits":"Kauzy a neziskové organizace","Movies":"Filmy","Uk Live Tv":"Spojené království Živá televize","Fashion":"Móda","Business News Radio":"Business News Radio","Business Tv":"Obchodní televize","Cars & Auto":"Automobily a auta","Comedy Radio":"Komediální rádio","Lifestyle Radio":"Rádio životního stylu","News Tv":"Zpravodajská televize","Food And Wine":"Jídlo a víno","Latino Tv":"Latinskoamerická televize","Shopping Tv":"Nákupní televize","Religion":"Náboženství","Kids":"Děti","Body & Soul":"Tělo a duše","Education":"Vzdělání","Indian Tv":"Indická televize","Extreme Sports":"Extrémní sporty","Middle Eastern Tv":"Blízkovýchodní televize","Celebrity Tv":"Celebrity Tv","Science Tv":"Vědecká televize","Bikini babe":"Kočka v bikinách","Outdoors":"Venku","German Tv":"Německá televize","French Tv":"Francouzská televize","Italian Tv":"Italská televize","Gamer Tv":"Gamer Tv","Travel":"Cestovní kancelář","Asian Tv":"Asijská televize","Entertainment":"Zábava","News Radio":"Zpravodajské rádio","Music Radio":"Hudební rádio","Language Learning":"Výuka jazyků","Science Radio":"Vědecké rádio","Tech Radio":"Tech Radio","Science & Technology Vod":"Věda a technika Vod","new video":"nové video","new episode":"nová epizoda","new movie":"nový film","recommended":"doporučené","we recommend":"doporučujeme","offer of the day":"nabídka dne","news":"novinky","music video":"hudební video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Odmítnutí oznámení","CTX_DISMISS_ALL":"Odmítnout všechny","CTX_SHARE":"Sdílet","CTX_COPY_SHARE_LINK":"Kopírovat odkaz na sdílení","CTX_COPY_MAGNET_LINK":"Kopírovat odkaz na magnet","CTX_COPY_STREAM_LINK":"Kopírovat odkaz na stream","CTX_DOWNLOAD_VIDEO":"Stáhněte si toto video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Zobrazit","CTX_PLAY":"Přehrát","CTX_PLAY_IN":"Přehrát v","CTX_PLAY_ON":"Přehrát na","CTX_WATCH_ON":"Sledujte na","CTX_WATCH":"Sledovat","CTX_WATCHED":"Sledováno","CTX_WATCH_BEGINNING":"Sledujte od začátku","CTX_WATCH_MOBILE":"Sledování na mobilním zařízení","CTX_REWIND":"Přetočení na začátek","CTX_MARK_WATCHED":"Označit jako sledované","CTX_MARK_NON_WATCHED":"Označit jako nesledované","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Zbytek označte jako sledovaný","CTX_UNMARK_REST":"Zbytek označte jako nesledovaný","CTX_RECEIVE_NEW_NOTIF":"Přijímání nových oznámení","CTX_REMOVE_CACHE":"Odstranění z mezipaměti","CTX_REMOVE_CACHE_EP":"Odstranění epizody z mezipaměti","CTX_OPEN_CONTAINING":"Otevřít složku obsahující","CTX_REMOVE":"Odebrat z knihovny","CTX_AVAILABLE_OFFLINE":"Dostupné offline","CTX_PAUSED":"Pozastaveno","CTX_ALWAYS_ON_TOP":"Vždy na vrcholu","CTX_FULLSCREEN":"Celá obrazovka","CTX_WRONG_SUBS":"Špatné titulky?","CTX_REPORT_ISSUES":"Nahlásit problém","CTX_COPY":"Kopírovat","CTX_PASTE":"Vložit","CTX_CLEAR":"Vymazat","CTX_CLEAR_RECENT_SEARCHES":"Vymazat poslední vyhledávání","HELLO_THERE":"Dobrý den","HOPE_YOU_ENJOY":"Doufáme, že se vám Stremio bude líbit a že se stane jednou z vašich oblíbených aplikací!","WHO_ARE_WE":"Kdo jsme? Jsme tým, který za tím stojí - dva kluci, kteří už tři roky každý den tvrdě pracují na tom, aby byl tento produkt stále lepší a lepší.","SUPPORT_US":"Pokud se vám Stremio líbí, pokud je pro vás Stremio přínosné - šiřte tuto informaci dál!","SPREAD_THE_WORD":"Sdílejte se svými přáteli, rozšiřte informace o Stremiu","MORE_PEOPLE":"Čím více lidí bude Stremio používat, tím lepší bude!","SEND_A_LINK":"Nebo pošlete odkaz na naše webové stránky","TIP_LOCALFILES":"Tip: do aplikace Stremio můžete přetáhnout místní video soubory","ADDON_MY":"Moje doplňky","ADDON_COMMUNITY":"Doplňky komunity","ADDON_OFFICIAL":"Oficiální doplňky","ADDON_REPOS":"Sbírky doplňků","ADDON_SEARCH":"Vyhledávání doplňků","ADDON_INSTALL":"Instalovat","ADDON_CONFIGURE":"Konfigurovat","ADDON_UNINSTALL":"Odinstalovat","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Nainstalováno","ADDON_INSTALLED_MSG":"Addon nainstalován!","ADDON_UPGRADED_MSG":"Addon upgradován!","ADDON_UNKNOWN":"Neznámý","ADDON_ERR":"Chyba při instalaci doplňku!","ADDON_DISCONNECTED":"Odpojeno","ADDON_APP_MISSING":"aplikace pro tento zdroj není nainstalována. Chcete ji nyní nainstalovat?","ADDON_APP_INSTALL":"Nainstalovat nyní","ADDON_PAGE":"Stránka doplňku","ADDON_TOP_CONTENT":"To nejlepší z tohoto doplňku","ADDON_PROVIDES":"Tento doplněk vám poskytne:","ADDON_WATCH":"Sledujte #{types} nyní!","ADDON_WATCH_FREE":"Sledujte #{types} nyní ZDARMA!","ADDON_ADDON":"Doplněk","ADDON_SUPPORTED_TYPES":"Podporované typy","ADDON_SUPPORTED_CATALOGS":"Podporované katalogy","ADDON_PROVIDES_DISCOVER":"Další #{types} v aplikaci Discover","ADDON_PROVIDES_STREAMS":"Sledujte #{types}","ADDON_PROVIDES_STREAMS_FREE":"Sledujte #{types} ZDARMA","ADDON_PROVIDES_SUBTITLES":"Titulky pro #{types}","ADDON_CANTDETECT":"Nepodařilo se nám zjistit spuštěné Stremio, takže jsme nemohli zjistit, jaké máte nainstalované doplňky.","ERR_NO_META":"O tomto nebyly nalezeny žádné informace","ERR_GETTING_META":"Chyba při načítání informací o tomto.","ERR_CANT_PARSE_MAGNET":"Nelze analyzovat magnet","ERR_NO_MAGNET_INFOHASH":"Žádný platný informační hash pro magnet","ERR_NO_FILE_PATH":"Nelze odeslat požadavek bez cesty k souboru","ERR_NO_TORRENT":"Žádný torrent se nevrátil","ERR_NO_SUPPORTERD_FILES":"Nebyly nalezeny žádné podporované soubory","ERR_OPENING_FILES":"Nelze otevřít externí soubory","ERR_INVALID_LINK":"Neplatný odkaz","ERR_REGISTERED_ONLY":"Tato možnost je k dispozici pouze pro registrované uživatele.","ERR_CLIPBOARD":"Nelze přehrávat ze schránky","ERR_CLIPBOARD_READ":"Na této platformě nelze číst schránku","ERR_CLIPBOARD_GENERIC":"Ve schránce nebyla nalezena žádná přehrávatelná adresa URL. Zkopírujte prosím adresu URL (např. odkaz na magnet) na video.","BOARD_CONTINUE_WATCHING":"Pokračovat ve sledování","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmy vybrané speciálně pro vás.<br />Tento film je ukázkovým doporučením.","BOARD_EXPLANATION_EPISODES":"Zde se objevují nové epizody vašich oblíbených seriálů.<br />Přidejte si sledované seriály do své knihovny.","BOARD_EXPLANATION_VIDEOS":"Zde se objevují nové epizody vašich oblíbených kanálů.<br />Přidejte si sledované kanály YouTube do své knihovny.","WEBSITE_SLOGAN_WATCH":"Sledujte okamžitě","WEBSITE_SLOGAN_ALL":"Veškerý videoobsah, který si užíváte, na jednom místě","WEBSITE_SLOGAN_NEW":"Vše, co můžete sledovat","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Sledujte od","WEBSITE_DOWNLOAD":"Stáhnout nyní","WEBSITE_DOWNLOAD_FOR":"Stáhnout nyní pro","WEBSITE_IS_DESKTOP":"Stremio je aplikace pro stolní počítače, otevřete tuto stránku v počítači a stáhněte si ji","WEBSITE_DESKTOP_DEMO_VID":"Demonstrační verze pro stolní počítače","WEBSITE_PAGE_HOME":"Domů","WEBSITE_PAGE_FEATURES":"Vlastnosti","WEBSITE_PAGE_ADDONS":"Doplňky","WEBSITE_PAGE_TECH":"Technologie","WEBSITE_PAGE_CREATE_ADDON":"Vytvořit doplněk","WEBSITE_PAGE_CONTACTS":"Kontakty","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filmy","WEBSITE_TYPE_series_PL":"Seriály","WEBSITE_TYPE_tv":"Živý televizní přenos","WEBSITE_TYPE_channel":"Kanály","WEBSITE_STREMIO_WHAT_IS":"Stremio je aplikace, která vám pomůže uspořádat a okamžitě sledovat vaše oblíbená videa, filmy, seriály a televizní kanály.","WEBSITE_FEATURES_WATCH":"Sledujte okamžitě v HD","WEBSITE_FEATURES_WATCH_DETAIL":"Klikněte a přehrávejte své oblíbené filmy, televizní pořady, videa a televizní kanály.","WEBSITE_FEATURES_SUBS":"Automatické titulky","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automaticky vybere synchronizované titulky pro váš jazyk.","WEBSITE_FEATURES_SUBS_LABEL":"Váš tah, šéfe.","WEBSITE_FEATURES_CAST":"Přehrávání na televizoru a mobilních zařízeních","WEBSITE_FEATURES_CAST_DETAIL":"Cast na AppleTV, Chromecast, Smart TV (DLNA/UPnP) a mobilní zařízení.","WEBSITE_LIB":"Užívejte si svou osobní knihovnu synchronizovanou na všech zařízeních","WEBSITE_LIB_COLLECT":"Sbírat od Stremio","WEBSITE_LIB_IMPORT":"Import ze služby Facebook","WEBSITE_LIB_LOCAL":"Přidání z místní jednotky","WEBSITE_BOARD":"Rada - Vaše jediné místo pro oznámení a doporučení","WEBSITE_BOARD_RECOMMEND":"Doporučený televizní pořad","WEBSITE_BOARD_TRENDING":"Trendy film","WEBSITE_BOARD_NEW":"Nové video","WEBSITE_BOARD_EPISODE":"Nová epizoda","WEBSITE_BOARD_1":"Hledáte něco zajímavého ke sledování? Získejte doporučení podle svého vkusu!","WEBSITE_BOARD_2":"Nechte se upozornit na nový díl svého oblíbeného televizního pořadu nebo kanálu YouTube!","WEBSITE_BOARD_YOUTUBE":"Nová videa kanálů YouTube","WEBSITE_BOARD_EPISODES":"Nové epizody seriálů, které sledujete","WEBSITE_ADDONS":"Doplňky obsahu","WEBSITE_TECH_DETAIL":"Milujeme technologie, milujeme šílenou vědu!\\nStremio používá následující open source technologie:","WEBSITE_TECH_WCJS":"WebChimera.js umožňuje službě Stremio přehrávat jakýkoli formát videa s dobrým výkonem.","WEBSITE_TECH_WCJS_EXTRA":"Jsme hlavními přispěvateli projektu","WEBSITE_TECH_ELECTRON":"Electron poskytuje inovativní platformu, na které lze vytvořit Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Jsme přispěvatelé projektu","WEBSITE_TECH_LINVODB":"Databázová technologie, která zajišťuje, že vaše data jsou uspořádaná a dostupná kdekoli, kde se přihlásíte.","WEBSITE_TECH_LINVODB_EXTRA":"Vlastní technologie","WEBSITE_CREATE_ADDON":"Vytvoření doplňku","WEBSITE_CREATE_ADDON_DETAIL":"Máte službu poskytující videoobsah? Pomůžeme vám využít funkce Stremio vytvořením vašeho doplňku.","WEBSITE_CREATE_ADDON_BENEFITS":"Výhody vytvoření doplňku pro Stremio","WEBSITE_P2P_BEAUTY":"Krása peer-to-peer streamování","WEBSITE_P2P_1":"Spolehlivé a cenově dostupné video v rozlišení Full HD / 4K na vyžádání nebo živé vysílání","WEBSITE_P2P_2":"Distribuční platforma poskytující skvělý uživatelský zážitek","WEBSITE_P2P_3":"Vytvoříme doplněk, který bude přesně odpovídat vašim potřebám","WEBSITE_P2P_CONTACT":"Máte zájem? Můžete <a href=\'mailto:office@stremio.com\'>nás kontaktovat</a>.","WEBSITE_P2P_CONTACT_EXTRA":"Rádi vám pomůžeme s integrací vašeho obsahu do služby Stremio!","WEBSITE_P2P":"Jednou za čas se objeví technologie, která změní název hry. Investovali jsme spoustu času a úsilí do vytvoření našeho enginu pro streamování videa P2P (Peer-to-Peer), který poskytuje skvělý výkon a všestrannost, aby se přizpůsobil jakémukoli případu použití.\\nKontaktujte nás pro P2P video na vyžádání nebo živé streamování s podporou DRM.","WEBSITE_THOUGHTS":"Myšlenky, které sdílíme:","WEBSITE_SPREAD":"Šíření informací o Stremio:","WEBSITE_CONTACT":"Kontaktujte nás, budeme rádi, když se nám ozvete!","WEBSITE_OPENSOURCE":"Naše projekty s otevřeným zdrojovým kódem naleznete na adrese","WEBSITE_BITCOIN":"Darujte bitcoin:","WEBSITE_FAQ":"Nejčastější dotazy","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Otázky","WEBSITE_TOS":"Podmínky použití","WEBSITE_LEGAL":"Právo","WEBSITE_PAGE_ABOUT":"O nás","WEBSITE_PAGE_BECOME_PARTNER":"Staňte se partnerem","WEBSITE_ALL_YOU_CAN_WATCH":"Svoboda sledování\\nVše, co chcete.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Co je stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio je komplexní centrum pro agregaci video obsahu. Objevujte, organizujte a sledujte videa ze všech zdrojů na jakémkoli zařízení, které vlastníte.","WEBSITE_WHAT_IS_STREMIO_P2":"Filmy, televizní pořady, seriály, živé televizní vysílání nebo webové kanály jako YouTube a Twitch.tv - to vše najdete na Stremiu.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio je moderní multimediální centrum, které představuje komplexní řešení pro vaši videozábavu. Objevujete, sledujete a organizujete videoobsah ze snadno instalovatelných doplňků.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Filmy, televizní pořady, živé vysílání nebo webové kanály - to vše najdete na Stremiu.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Užívejte si na všech svých multimediálních zařízeních","WEBSITE_DEVICES_COLLECT":"Sbírat od Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import z facebooku","WEBSITE_DEVICES_LOCAL":"Přidání z místní jednotky","WEBSITE_JOIN_THE_PARTY_NOW":"Připojte se k večírku nyní","WEBSITE_DEVICES_ALL":"Snadné použití na všech zařízeních;","WEBSITE_EXTENDABLE_CATALOG":"Nekonečně rozšiřitelný katalog videa;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Skvělé funkce pro organizaci médií;","WEBSITE_AS_SEEN_ON":"Neviděno","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"O nás","WEBSITE_LINK_TECHNOLOGY":"Technologie","WEBSITE_LINK_APPS":"Aplikace","WEBSITE_LINK_DOWNLOADS":"Stahování","WEBSITE_MORE":"Více","WEBSITE_LINK_ADDONS":"Doplňky","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Делать вклад","WEBSITE_LINK_COMMUNITY":"Komunita","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"Dnes již máte procvičeno. Buď přidejte více karet, nebo začněte znovu zítra.","WEBSITE_LINK_HELP":"Centrum nápovědy","WEBSITE_LINK_CONTACTS":"Obchodní dotazy","WEBSITE_LINK_TOS":"Podmínky a pravidla","WEBSITE_LINK_PRAVACY":"Zásady ochrany osobních údajů","WEBSITE_SUBSCRIBE":"Odebírat","WEBSITE_NEWSLETTER":"Připojte se k našemu zpravodaji pro úžasné věci","WEBSITE_PLACEHOLDER_EMAIL":"Váš e-mail","WEBSITE_COMMUNITY":"Komunita","WEBSITE_LINK_PRAVACY_LEGAL":"Ochrana soukromí a právní předpisy","WEBSITE_WHY":"Proč to děláme","WEBSITE_WHY_P1":"Ve Stremio chodíme každý den do práce, protože chceme vyřešit důležitý problém pro odvětví videa na vyžádání. Každou minutu je zveřejněno tolik nového obsahu, že je prakticky nemožné se v něm zorientovat.","WEBSITE_WHY_P2":"Pomáháme lidem orientovat se v obrovském světě video zábavy a objevovat nový obsah. Naše aplikace sdružují filmy, seriály, živé televizní vysílání, webové kanály a další. Snažíme se uživatelům neuvěřitelně usnadnit vyhledávání oblíbených titulů a televizních stanic.","WEBSITE_WHY_P3":"Naši službu můžete používat na jakémkoli zařízení a kdykoli, takže Stremio je jediné centrum video zábavy, které kdy budete potřebovat.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"Tým Stremio je malý, ale výkonný: deset z nás programuje v X jazycích a sdílíme odborné znalosti v oblasti vývoje softwaru, designu uživatelského rozhraní a UX, marketingu a reklamy a podnikání a startupů.","WEBSITE_FEATURES":"Vlastnosti","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Snadné objevování nového obsahu","WEBSITE_FEATURES_DISCOVER_P":"Snadno objevujte nové filmy, televizní pořady, seriály a kanály ke sledování. Procházejte podle kategorie, žánru, hodnocení, oblíbenosti atd. nebo jednoduše zadejte název a vyhledejte. Se službou Stremio je vyhledávání nového videoobsahu hračka.","WEBSITE_FEATURES_ALL_CONTENT":"Veškerý video obsah na jedné obrazovce","WEBSITE_FEATURES_ALL_CONTENT_P1":"Podívejte se, které filmy, seriály nebo videa jste nedokoukali, a pokračujte v jejich sledování, nechte si posílat upozornění na nové epizody a novinky a procházejte doporučení, která dostanete na základě svých diváckých návyků.","WEBSITE_FEATURES_LIBRARY":"Uspořádejte svou knihovnu videí","WEBSITE_FEATURES_LIBRARY_P1":"Jedním kliknutím přidáte do knihovny Stremio libovolný titul a můžete se orientovat v obsahu, který je přehledně uspořádán podle typu, aktuálnosti nebo abecedního pořadí.","WEBSITE_FEATURES_CALENDAR":"Sledujte vše, co sledujete","WEBSITE_FEATURES_CALENDAR_P1":"Získejte vizualizaci všech filmů a seriálů, které přidáte do své knihovny, v kalendáři. Exportujte svůj kalendář Stremio a synchronizujte jej, abyste vždy věděli, kdy se má objevit nová epizoda nebo premiéra.","WEBSITE_FEATURES_BIG_SCREEN":"Vychutnejte si video obsah na větší obrazovce","WEBSITE_FEATURES_BIG_SCREEN_P1":"Jediným kliknutím můžete přehrát cokoli, co sledujete, do jiného zařízení - telefonu, tabletu nebo televizoru.","WEBSITE_FEATURES_SOURCES":"Sledování videí z mnoha různých zdrojů","WEBSITE_FEATURES_SOURCES_P":"Nainstalujte si oficiální a komunitní doplňky, abyste si mohli vychutnat videa od mnoha různých poskytovatelů - to vše v jedné elegantní a snadno použitelné aplikaci.","WEBSITE_CREATE_AN_ADDON":"Vytvoření doplňku","WEBSITE_FEATURES_SYNC":"Synchronizace knihovny mezi různými zařízeními a obnovení přehrávání","WEBSITE_FEATURES_SYNC_P1":"Přihlaste se pomocí svého účtu do všech zařízení a užívejte si synchronizovanou knihovnu, doplňky, přehrávání a kalendář.","WEBSITE_FEATURES_EXTENDABLE":"Rozšiřitelný katalog videí pomocí doplňků","WEBSITE_FEATURES_EXTENDABLE_P1":"Katalog doplňků Stremio nabízí řadu doplňků, které si můžete nainstalovat a sledovat z nich nejrůznější videoobsah. Patří sem filmy, seriály, živé televizní vysílání, sport, zprávy, podcasty, webové kanály, videohry a další.","WEBSITE_FEATURES_AUTO_SUBS":"Automatické titulky","WEBSITE_FEATURES_AUTO_SUBS_P1":"S našimi doplňky titulků získáte automaticky vybrané možnosti pro preferovaný jazyk.","WEBSITE_FEATURES_CHROMECAST":"Casting do Chromecastu","WEBSITE_FEATURES_CHROMECAST_P1":"Vychutnejte si videoobsah na větší obrazovce nebo jen přenášejte sledované video do jiného zařízení.","WEBSITE_FEATURES_KEEP_TRACK":"Sledování oblíbených televizních pořadů a webových kanálů","WEBSITE_FEATURES_KEEP_TRACK_P1":"Získejte vizualizaci kalendáře a upozornění na nové epizody oblíbených seriálů a webových kanálů.","WEBSITE_FEATURES_POWER_USER":"Funkce pro výkonné uživatele","WEBSITE_FEATURES_POWER_USER_P1":"Přehrávání v externím přehrávači","WEBSITE_FEATURES_POWER_USER_P2":"Přehrávání ze souboru torrent nebo odkazu magnet","WEBSITE_FEATURES_POWER_USER_P3":"Import do knihovny ze služby Facebook likes nebo z místního disku","WEBSITE_ADD_ONS":"Doplňky","WEBSITE_ADD_ONS_P1":"Veškerý videoobsah, který Stremio poskytuje, je získáván prostřednictvím systému doplňků - aplikace neobsahuje žádný obsah ani poskytovatele obsahu.","WEBSITE_ADD_ONS_P2":"K dispozici jsou dvě skupiny doplňků: oficiální a komunitní.","WEBSITE_ADD_ONS_P3":"Oficiální doplňky vyvíjí a hostuje Stremio, zatímco komunitní doplňky vytvářejí členové naší komunity, kteří je také hostují.","WEBSITE_ADDONS_OFFICIAL":"Oficiální doplňky","WEBSITE_ADDONS_WATCHUB":"Streamujte své oblíbené filmy, seriály a pořady od poskytovatelů, jako jsou iTunes, Hulu, Amazon a další britské/americké služby.","WEBSITE_ADDONS_YOUTUBE":"Sledujte své oblíbené kanály YouTube bez reklam a dostávejte upozornění na nové příspěvky od autorů, které sledujete.","WEBSITE_ADDONS_FILMON":"Sledujte živé televizní vysílání, filmy a sociální televizi zdarma. 600 televizních kanálů, 45 000 bezplatných filmů, dokumentů a další.","WEBSITE_ADDONS_OPENSUBTITLES":"Filmové a televizní titulky ve více jazycích, tisíce přeložených titulků nahraných každý den.","WEBSITE_ADDONS_COMMUNITY":"Doplňky komunity","WEBSITE_ADDONS_FILMON_VOD":"Sledujte video na vyžádání z Filmon.tv","WEBSITE_ADDONS_TWICH":"Sledujte živé přenosy z Twitch.tv - platformy pro streamování videa z e-sportů.","WEBSITE_ADDONS_VODO":"Sledujte nezávislé filmy zcela zdarma.","WEBSITE_ADDONS_NETFLIX":"Sledování filmů a webových seriálů Netflix.","WEBSITE_ADDONS_CREATE":"Vytvoření doplňku","WEBSITE_ADDONS_CREATE_P1":"Pokud chcete, můžete si vytvořit vlastní doplněk. Tímto způsobem můžete sobě i naší komunitě poskytnout přístup k novému videoobsahu a oslovit nové, cílené publikum milionů uživatelů po celém světě.","WEBSITE_ADDONS_START_CREATE":"Chcete-li začít, navštivte stránku Stremio Addon SDK:","WEBSITE_DOWNLOADS":"Stahování","WEBSITE_DOWNLOADS_P1":"Pro optimální výkon doporučujeme používat nejnovější dostupnou verzi aplikací Stremio. Pokud však z nějakého důvodu chcete používat starší verzi, můžete si ji stáhnout zde.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio pro Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio pro macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio pro Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio pro Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio pro iOS (omezená verze)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Делать вклад","WEBSITE_CONTRIBUTE_P1":"Platforma Stremio má otevřený zdrojový kód a můžete snadno vytvořit doplněk pro obsah, který v současné době nemá zdrojový kód.","WEBSITE_CONTRIBUTE_WHY":"Proč byste si měli vytvořit doplněk?","WEBSITE_CONTRIBUTE_WHY_P1":"Oslovte nové publikum pro svůj video obsah","WEBSITE_CONTRIBUTE_WHY_P2":"Uživatelská základna Stremio rychle roste - během prvního roku od spuštění získalo Stremio 1 milion uživatelů po celém světě a ve druhém roce existence platformy se jejich počet zvýšil na 2,5 milionu.","WEBSITE_CONTRIBUTE_WHY_P3":"S vaším doplňkem můžete toto publikum snadno oslovit a distribuovat mu svůj videoobsah.","WEBSITE_CONTRIBUTE_ALL":"Sledujte své oblíbené filmy, videa, seriály a kanály na jednom místě.","WEBSITE_CONTRIBUTE_ALL_P1":"Jste fanouškem určitého typu obsahu, který zatím není na Stremiu k dispozici? Vytvořte si pro něj doplněk a užijte si sledování oblíbených videí v jednom z největších a nejsnadněji použitelných zábavních center na trhu.","WEBSITE_CONTRIBUTE_ALL_P2":"Kromě toho získáte nekonečnou vděčnost dalších podobně smýšlejících členů komunity Stremio.","WEBSITE_CONTRIBUTE_MONETIZE":"Zpeněžujte svůj doplněk a vydělávejte peníze s jeho pomocí","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Jakmile vyvinete nový doplněk pro Stremio, můžete jej snadno zpeněžit několika různými způsoby. Pokud o tom uvažujete, neváhejte nás kontaktovat na adrese","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - rádi s vámi zkonzultujeme možnosti zpeněžení doplňků a poradíme vám.","WEBSITE_CONTRIBUTE_TRANSLATE":"Staňte se dobrovolným překladatelem","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Pokud chcete využívat aplikace Stremio v různých jazycích, můžete se připojit k naší komunitě dobrovolných překladatelů. Ti nám pomáhají přidávat verze aplikace Stremio v mnoha různých jazycích.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Máte chuť začít?","WEBSITE_TRANSALTE_STREMIO":"Přeložit Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Oficiální komunity","WEBSITE_COMMUNITY_OFFICIALS_P1":"Staňte se součástí rostoucí komunity Stremio. Sledujte nás na sociálních sítích a nestyďte se nás pozdravit - rádi se ozýváme našim fanouškům!","WEBSITE_COMMUNITY_UNOFFICIALS":"Neoficiální komunity","STREMIO_COMMUNITY_NL":"Stremio Nizozemsko","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Německo","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgie","STREMIO_COMMUNITY_FRANCE":"Stremio Francie","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugalsko","STREMIO_COMMUNITY_ITALY":"Stremio Itálie","STREMIO_COMMUNITY_UK":"Stremio Česká republika","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexiko","STREMIO_COMMUNITY_ADDONS":"Doplňky Stremio","STREMIO_COMMUNITY_AWESOME":"Úžasné Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partneři a podporovatelé","WEBSITE_COMMUNITY_GOODIES":"Stremio dobroty","WEBSITE_COMMUNITY_WALLPAPERS":"Tapety na plochu","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Kontaktujte nás","WEBSITE_CONTACT_US_P1":"Máte-li jakékoli dotazy, připomínky nebo návrhy, neváhejte nás kontaktovat prostřednictvím níže uvedeného kontaktního formuláře.","WEBSITE_CONTACT_US_P2":"Mějte na paměti, že se nacházíme v Bulharsku, takže může dojít ke zpoždění při řešení vašeho dotazu kvůli rozdílům v časových pásmech.","WEBSITE_CONTACT_US_SUCCESS":"Vaše zpráva byla odeslána. Ozveme se vám v nejbližším možném termínu.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Zadejte prosím platný e-mail!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Čeho se vaše otázka týká?","WEBSITE_CONTACT_US_Q_OS":"Jaký je váš operační systém?","WEBSITE_CONTACT_US_PH_EMAIL":"Váš e-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Zpráva","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ODESLAT","WEBSITE_CONTACT_US_Q_1":"Jak nainstalovat?","WEBSITE_CONTACT_US_Q_2":"Jak odinstalovat?","WEBSITE_CONTACT_US_Q_3":"(HTML) Jak připravit lasagne?","WEBSITE_CONTACT_US_Q_4":"Doplňky","WEBSITE_CONTACT_US_OS_1":"Umístěním databáze na síťovou jednotku je ve Windows zakázáno, aby se předešlo poškození dat. Mnemosyne bude nyní uzavřeno.","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technologie","WEBSITE_TECHNOLOGY_P1":" <br>Milujeme technologie a bláznivou vědu.</br> Tady je to, co pohání Stremio (vše je open-source).","WEBSITE_TECHNOLOGY_P_QT":"Vývoj softwaru napříč platformami v té nejlepší podobě.","WEBSITE_TECHNOLOGY_P_MPV":"Bezplatný multiplatformní přehrávač médií s otevřeným zdrojovým kódem.","WEBSITE_TECHNOLOGY_P_RN":"React Native umožňuje vytvářet mobilní aplikace pouze pomocí JavaScriptu.","WEBSITE_TECHNOLOGY_P_VLC":"Mediální rámec vložený do aplikace pro získání multimédií.","WEBSITE_TECHNOLOGY_P_REALM":"Realm je mobilní platforma a náhrada SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js je open-source, multiplatformní běhové prostředí jazyka JavaScript.","WEBSITE_TECHNOLOGY_P_RUST":"Rust je multiparadigmatický systémový programovací jazyk zaměřený na bezpečnost, zejména na bezpečnou souběžnost.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Přispět k projektu","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Existují dva způsoby, jak můžete přispět na Stremio a pomoci nám produkt ještě vylepšit.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Své cenné jazykové znalosti můžete věnovat překladu platformy...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"nebo","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... můžete využít své programátorské dovednosti při vytváření komunitních doplňků","WEBSITE_TRANSLATE_STREMIO":"Přeložit Stremio","WEBSITE_404_OH_NO":"Uh-oh! Hledaná stránka se zde nenachází...","WEBSITE_GO_HOME":"Jít domů","WEBSITE_LINK_OTHER_DOWNLOADS":"Ostatní soubory ke stažení","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Podpora","WEBSITE_DOWNLOAD_4_0_BETA":"Stáhněte si Stremio 4 beta nyní","WEBSITE_GET_FOR_DESKTOP":"Získat pro stolní počítače","WEBSITE_LINK_ADDON_COMPETITION":"Soutěž o doplněk","WEBSITE_LINK_ART_CONTEST":"Výtvarná soutěž","WEBSITE_MY_ACCOUNT":"Můj účet","WEBSITE_MAINPAGE_FAQ_001_H1":"Co je Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio je moderní multimediální centrum, které vám dává svobodu sledovat vše, co chcete.","WEBSITE_MAINPAGE_FAQ_002_H1":"Jak to funguje?","WEBSITE_MAINPAGE_FAQ_002_P1":"Po instalaci aplikace Stremio do zařízení a vytvoření účtu stačí navštívit katalog doplňků, nainstalovat libovolný doplněk a můžete začít!","WEBSITE_MAINPAGE_FAQ_002_P2":"Poté můžete přejít do sekce Objevovat nebo Nástěnka a začít zkoumat obsah.","WEBSITE_MAINPAGE_FAQ_003_H1":"Co zde mohu sledovat?","WEBSITE_MAINPAGE_FAQ_003_P1":"Hodně: Filmy, televizní pořady, webové kanály, sport, televizní kanály, poslech podcastů a další. Díky našemu systému doplňků máte přístup k nejrůznějšímu obsahu.","WEBSITE_MAINPAGE_FAQ_004_H1":"Je Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Ano, můžete se podívat na následující odkazy: ${1}desktopová aplikace${2} a ${3}Organizace GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Je Stremio bezpečné?","WEBSITE_MAINPAGE_FAQ_005_P1":"Ano: protože se jedná o software s otevřeným zdrojovým kódem, kód je veřejně kontrolovatelný a můžete si ho sami zkontrolovat.","WEBSITE_MAINPAGE_FAQ_006_H1":"A co moje soukromí?","WEBSITE_MAINPAGE_FAQ_006_P1":"Respektujeme soukromí uživatelů a neshromažďujeme žádné osobní údaje kromě nezbytného minima pro vytvoření a synchronizaci vašeho účtu.","WEBSITE_MAINPAGE_FAQ_006_P2":"Při registraci je k dispozici také režim ${1}Guest${2}, který nevyžaduje žádná data: v tomto režimu se nevolá na náš backend. Je to však na úkor užitečných funkcí, jako je možnost synchronizovat knihovnu napříč zařízeními.","WEBSITE_MAINPAGE_FAQ_007_H1":"Mohu vysílat na televizoru?","WEBSITE_MAINPAGE_FAQ_007_P1":"Ano, podporujeme Chromecast a můžete vysílat jak z počítače, tak z mobilních aplikací (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Kolik má Stremio doplňků?","WEBSITE_MAINPAGE_FAQ_008_P1":"Od konce roku 2019 je jich více než 50 - více informací najdete v našem katalogu doplňků.","WEBSITE_MAINPAGE_FAQ_009_H1":"Lze Stremio rozšířit nad rámec toho, co je v katalogu doplňků?","WEBSITE_MAINPAGE_FAQ_009_P1":"Ano, měli byste je zkontrolovat: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, atd.","WEBSITE_MAINPAGE_FAQ_010_H1":"Jaká zařízení Stremio podporuje?","WEBSITE_MAINPAGE_FAQ_010_P1":"Máme desktopové aplikace pro Windows, Mac a Linux. Pro mobilní zařízení podporujeme Android a iOS, i když mějte na paměti, že iOS má omezené funkce (nepodporuje většinu doplňků).","WEBSITE_MAINPAGE_FAQ_010_P2":"Existuje mnoho zařízení se systémem Android, na kterých můžete spustit Stremio, například NVIDIA Shield a Amazon Fire Stick, ale oficiálně je nepodporujeme.","WEBSITE_MAINPAGE_FAQ_011_H1":"Můžete do služby Stremio přidat určitý obsah?","WEBSITE_MAINPAGE_FAQ_011_P1":"Omlouváme se, ale sami neposkytujeme žádný obsah, ale čím více doplňků Stremio máte nainstalováno, tím více obsahu budete moci najít.","WEBSITE_MAINPAGE_FAQ_012_H1":"Umí Stremio přehrávat magnetické odkazy?","WEBSITE_MAINPAGE_FAQ_012_P1":"Ano, a umí také přehrávat běžné odkazy HTTP a soubory torrent (přetažením).","WEBSITE_MAINPAGE_FAQ_013_H1":"Mohu si video stáhnout a sledovat ho offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Funkce dostupná offline je připravovaná, ale pokud povolíte, aby Stremio ukládalo videa do mezipaměti ve vašem zařízení (na panelu nastavení), můžete je později sledovat bez připojení.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nic nefunguje, pomozte mi!","WEBSITE_MAINPAGE_FAQ_014_P1":"Jste si jisti, že máte nainstalované doplňky? Pokud ano, obraťte se na naše ${1}pomocné centrum${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Jak Stremio udržuje své vývojové operace?","WEBSITE_MAINPAGE_FAQ_015_P1":"Občas spouštíme nevtíravé reklamy, ale zvažujeme přechod na model dárcovství.","WEBSITE_MAINPAGE_FAQ_015_P2":"Další dotazy naleznete v našem ${1}pomocném centru${2}.","HELP_LEARN_MORE":"Pomozte nám dozvědět se o vás více.","LIFESTYLE":"Životní styl","SPORTS":"Sporty","FOOD_HEALTH":"Potraviny a zdraví","BEAUTY_FASHION":"Krása a móda","NEWS":"Novinky","GAMING":"Hry","SCIENCE_EDUCATION":"Věda & vzdělávání","MUSIC":"Hudba","TRAVEL":"Cestovní kancelář","LATE_NIGHT":"Pozdní noc","REALITY":"Realita","COMEDY":"Komedie","DIY":"Jak na kutilství","TECH":"Tech","CINEMA":"Kino","CONTINUE":"Pokračovat","SLOW_LOADING":"POMALÉ NAČÍTÁNÍ?","I_GIVE_UP":"VZDÁVÁM SE","LEARN_MORE":"Zjistit více","POOR_SOURCE":"Tento zdroj je špatně dostupný nebo vaše internetové připojení není dostatečně rychlé","PICK_CATEGORIES_ERR":"Musíte vybrat alespoň 3 kategorie","ADJUST_TIMING":"Nastavte časování pomocí","ADJUST_SIZE":"Upravte velikost pomocí","SEARCH_ANYTHING":"Můžete vyhledávat cokoli...","ALL_CATEGORIES":"Vše","SEARCH_CATEGORIES":"Filmy, seriály, YouTube a TV","SEARCH_PERSONS":"Herci, režiséři a scénáristé","SEARCH_PROTOCOLS":"HTTP & Magnet Odkazy","SEARCH_TYPES":"Odkazy na IMDB / TVDB","WATCHED":"Sledováno","SHOW_LESS":"Zobrazit méně","LAST_SEARCHES":"Poslední vyhledávání","CLEAR_HISTORY":"Vymazat historii","CHOOSE_SOME":"VYBERTE SI NĚCO Z TOHO:","NO_WEB_REMOTE":"Web Remote nelze načíst","STREMIO_OFFLINE":"Stremio je offline","STREMIO_EXPENSIVE_CONNECTION":"Zjistili jsme, že používáte mobilní datové připojení, chcete pokračovat?","USE_DATA":"Použití dat","WARNING":"Varování","MORE_INFO":"Více informací ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Načítám...","STREMIO_TV_BACK_TO_LANGUAGES":"Zpět na jazyky","STREMIO_TV_REMOTE":"Vzdálený","STREMIO_TV_GO_TO":"Přejít na:","STREMIO_TV_OR_SCAN":"nebo skenování:","STREMIO_TV_ADDON_INSTRUCTIONS":"Při instalaci preferovaných doplňků postupujte podle pokynů.","STREMIO_TV_LIVE_TV":"Živý televizní přenos","STREMIO_TV_RESUME_WATCHING":"Sledování životopisu","STREMIO_TV_LOADING_BACKGROUND":"Načítání pozadí","STREMIO_TV_CHECKING_AUTHENTICATION":"Kontrola ověřování","STREMIO_TV_LOADING_BOARD":"Nakládací deska","STREMIO_TV_LOGIN_HEADER_LINE_1":"Chceme, aby naši uživatelé měli s naším softwarem co nejlepší personalizované zkušenosti.","STREMIO_TV_LOGIN_HEADER_LINE_2":"Z tohoto důvodu vás žádáme, abyste si vytvořili a/nebo se přihlásili ke svému účtu.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Děkujeme za pochopení,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Tým Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Chcete-li používat webový ovladač pomocí chytrého telefonu / tabletu / stolního počítače:","STREMIO_TV_WIFI_SETUP":"Nastavení Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Aplikace Stremio Circle nezjistila připojení k internetu.","STREMIO_TV_WIFI_DETAILS_1":"Připojte se k:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Použijte heslo:","STREMIO_TV_WIFI_DETAILS_4":"stremiokruh","STREMIO_TV_WIFI_DETAILS_5":"Otevřete webový prohlížeč s odkazem:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Přepínací zařízení","REMOTE_VIDEOS":"Videa","REMOTE_ADJUST_TIMING":"Nastavení časování","REMOTE_ADJUST_SIZE":"Nastavení velikosti","REMOTE_COULD_NOT_BE_LOADED":"Web Remote nelze načíst","REMOTE_RETRY":"Zkusit znovu","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"Co je Stremio?","FAQ_001_P1":"Stremio je software mediálního centra navržený pro video zábavu s ohledem na snadné používání. Stremio vám umožňuje organizovat & sledovat vlastní sbírku filmů, seriálů, kanálů a živého televizního vysílání.","FAQ_001_P2":"Stremio shromažďuje obsah, který vám zobrazuje, z vašeho místního disku a z našeho systému doplňků.","FAQ_001_P3":"Upozorní vás také na nové epizody/videa/filmy, které vás zajímají, a doporučí vám filmy.","FAQ_02_H1":"Jak si Stremio vede ve srovnání s Kodi a Plexem?","FAQ_02_P1":"Inspirovali jsme se těmito dvěma softwary. Máme však odlišné cíle - Stremio je zaměřeno speciálně na video pro zábavu a snaží se stát hlavním řešením pro tuto oblast, protože se velmi snadno používá.","FAQ_02_P2":"Stremio nikdy nebude tak přizpůsobitelné a funkčně bohaté jako Kodi a Plex, ale jeho používání je podstatně jednodušší. Stačí ${1} si ho pořídit a uvidíte ${2} :)","FAQ_03_H1":"Jak si Stremio vede ve srovnání s Netflixem?","FAQ_03_P1":"Jednou z našich inspirací je opět Netflix. Snažíme se dosáhnout uživatelského zážitku Netflixu a navíc přidat spoustu dalších vychytávek. Co je však nejdůležitější, dáváme vám svobodu spravovat vlastní knihovnu a přidávat nové zdroje obsahu pomocí našeho systému doplňků.","FAQ_03_P2":"Díky tomu je Stremio nekonečně rozšiřitelné, takže při používání Stremio nejste nikdy omezeni obsahem, který se Netflix rozhodne licencovat. Prostřednictvím služby Stremio můžete například sledovat obsah z ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} a dokonce i ${9}Netflix${10} samotný!","FAQ_04_H1":"Jak si Stremio vede ve srovnání s Flipboardem?","FAQ_04_P1":"Tuto otázku nedostáváme tak často, kromě rozhovorů se začínajícími podnikateli :)","FAQ_04_P2":"Stremio je svým založením agregátor obsahu, což z něj v podstatě dělá Flipboard pro video. To je velmi patrné v sekci Nástěnka, která vám stejně jako Flipboard nabízí katalogy a upozornění na nové epizody/nová videa, která sledujete.","FAQ_05_H1":"Jak si Stremio vede ve srovnání s Popcorn Time?","FAQ_05_P1":"Stremio a Popcorn Time jsou si podobné uživatelským rozhraním, protože není mnoho způsobů, jak udělat katalogy video zábavy správně :)","FAQ_05_P2":"Zatímco Popcorn Time se zaměřuje na streamování torrentů z konkrétních zdrojů, Stremio je bez omezení a je pouze agregátorem obsahu - není vázáno na konkrétní zdroj obsahu.","FAQ_05_P3":"Kromě toho ve výchozím nastavení neposkytujeme žádné doplňky torrentů, takže Stremio nepokrývá případ použití Popcorn Time oficiálními funkcemi.","FAQ_05_P4":"Dalším významným rozdílem je, že Popcorn Time je zcela open source, zatímco Stremio je ${1} částečně open source${2}.","FAQ_06_H1":"Přidáte tento film/seriál?","FAQ_06_P1":"Ne, je mi líto :(","FAQ_06_P2":"Jak je uvedeno ve většině ostatních otázek, Stremio samo o sobě neposkytuje žádný obsah - vše se přidává prostřednictvím systému doplňků. V případě, že máte požadavek na obsah, můžete použít tlačítko \\"Nahlásit\\" v přehrávači, které odešle e-mail autorovi doplňku, který právě používáte.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Vytvoříte doplněk pro X?","FAQ_08_P1":"Je to docela možné.","FAQ_08_P2":"Pokud máte nápad na doplněk, napište nám na ${1}office@stremio.com${2}, ale ujistěte se, že váš nápad na doplněk neporušuje autorská práva ani podmínky používání.","FAQ_08_P3":"V současné době jsou na našem plánu doplňky pro FandangoNOW, Filmon.tv video on demand a Crunchyroll.","FAQ_09_H1":"Používá Stremio BitTorrent?","FAQ_09_P1":"Ano, Stremio podporuje BitTorrent jako streamovací protokol. Ten můžete použít buď pomocí doplňku torrent, nebo přetažením souboru .torrent do aplikace Stremio, případně vložením odkazu na magnet do vyhledávacího panelu.","FAQ_09_P2":"Vezměte prosím na vědomí, že jediným oficiálním doplňkem využívajícím BitTorrent je ${1}Vodo${2}, který poskytuje nezávislý obsah povolený k distribuci pomocí BitTorrentu.","FAQ_09_P3":"Nepodporujeme používání doplňků třetích stran, které by mohly umožnit porušování autorských práv.","FAQ_10_H1":"Co mohu sledovat v aplikaci Stremio s oficiálními doplňky?","FAQ_10_P1":"Ve výchozím nastavení můžete sledovat obsah serverů Filmon.tv, YouTube a Vodo přímo v aplikaci Stremio pomocí vloženého přehrávače. Kromě toho máme doplněk pro Twitch.tv a několik dalších.","FAQ_10_P2":"Tato kombinace nabízí výběr:","FAQ_10_L1":"Oblíbené televizní kanály, které poskytuje Filmon.tv - například E4, BBC, Bollyworld TV","FAQ_10_L2":"Vše z YouTube - například BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Nezávislé filmy s Vodo","FAQ_10_L4":"Online vysílání her pomocí Twitch.tv","FAQ_10_P3":"Kromě toho existuje mnoho zdrojů obsahu poskytovaných pomocí služby Guidebox a doplňků Netflix, které se <b>nepřehrávají</b> zcela uvnitř služby Stremio, ale přesměrovávají se na danou službu. Například doplněk Guidebox by vám poskytl výběr filmů, které můžete v USA streamovat zdarma, ze služeb jako TubiTV a Crackle.","FAQ_11_H1":"Stremio se nechce nainstalovat, co mám dělat?","FAQ_11_P1":"Pokud používáte Windows, zkuste ${1}tento alternativní instalátor${2}.","FAQ_11_P2":"Pokud používáte systém Mac OS X, upozorňujeme, že nepodporujeme nic staršího než OS X Mavericks (10.9).","FAQ_11_P3":"Pokud používáte Linux, vězte, že v současné době podporujeme pouze 64bitový (x64) Linux.","FAQ_11_P4":"Pokud se vám stále nedaří vyřešit váš problém, napište nám na naši ${1}Facebookovou skupinu${2}.","FAQ_12_H1":"Proč si můj antivirový program stěžuje? Je Stremio bezpečné?","FAQ_12_P1":"Ujišťujeme vás, že Stremio je ${1}100% cčistý ${2}.","FAQ_12_P2":"Váš antivirový program si stěžuje, protože v našem instalačním programu je reklama, kterou některé antivirové programy rozpoznávají jako ad-ware.","FAQ_12_P3":"Pokud si stále nejste jisti, můžete vyzkoušet náš ${1}alternativní instalátor${2}.","FAQ_13_H1":"Jak mohu vytvořit doplněk?","FAQ_13_P1":"Pro začátek doporučujeme zkontrolovat náš systémový modul ${1}addons${2} na GitHubu.","FAQ_13_P2":"Poté můžete postupovat podle výukového programu ${1}Hello World${2}.","FAQ_13_P3":"Pokud nemáte žádné programátorské dovednosti, napište svůj nápad na ${1}komunitu Reddit${2} a kontaktujte nás s nápadem na doplněk na ${3}office@stremio.com${4}.","FAQ_14_H1":"Jak se publikují doplňky?","FAQ_14_P1":"Když vytvoříte doplněk a hostitele a do manifestu vložíte pole <b>koncového bodu</b>, které ukazuje na adresu funkčního doplňku, doplněk se automaticky zveřejní v našem katalogu ${1}Addon catalogue${2}.","FAQ_14_P2":"K tomu dochází proto, že serverová část modulu stremio-addons automaticky volá naše rozhraní API a oznamuje doplněk. Jakmile naše rozhraní API potvrdí váš <b>koncový bod</b> jako platný doplněk, začne se zobrazovat v katalogu.","FAQ_15_H1":"Mohu spustit Stremio v prohlížeči?","FAQ_15_P1":"Momentálně ne, ale už se to blíží!","FAQ_15_P2":"Pokud jste zvědaví na verzi Alpha, můžete si ji prohlédnout zde: ${1}alpha4.strem.io${2}. Mějte na paměti, že streamování je v této alfě vypnuté. Podporujeme prohlížeče Chrome, Firefox, Opera a Edge.","FAQ_16_H1":"Casting do TV nefunguje / titulky nefungují","FAQ_16_P1":"Odesílání do televizoru využívá technologii DLNA, která je u různých značek a modelů televizorů velmi nejednotná. Z tohoto důvodu nemáme možnost testovat ji ve všech případech, takže zdaleka není dokonalá. Přesto na jejím vylepšování neustále pracujeme, ale nemůžeme vám poskytnout časový odhad, kdy DLNA začne s vaším televizorem správně fungovat.","FAQ_16_P2":"Pokud se televizor nezobrazuje ani v nabídce obsazení, zkuste zakázat síťové připojení a znovu jej povolit (v systému Windows klikněte pravým tlačítkem myši na položku Síť a použijte příkaz Povolit/Zakázat) a restartujte směrovač, televizor a počítač.","FAQ_16_P3":"Pokud se stále potýkáte s problémy, můžete nám pomoci zasláním informací o značce a modelu televizoru na adresu ${1}office@stremio.com${2}.","FAQ_16_P4":"Do té doby doporučujeme Chromecast, který velmi dobře podporujeme, nebo jednoduše připojit televizor k počítači pomocí kabelu HDMI.","FAQ_17_H1":"Co mám dělat, když Stremio zamrzne a/nebo spadne?","FAQ_17_P1":"Pokud používáte systém Windows 7 s antivirovým programem AVG, máme s touto kombinací problém. Problém je v samotném AVG a na naší straně neexistuje žádný rozumný způsob, jak jej vyřešit. Výjimky ani vypnutí antiviru bohužel nepomohou. Jediným řešením je nahradit AVG něčím jiným.","FAQ_17_P2":"Pokud to není problém, ale stále používáte systém Windows, aktualizujte jej na nejnovější servisní balíček a aktualizujte/přeinstalujte ovladače grafického procesoru a pak to zkuste znovu.","FAQ_17_P3":"Pokud problém stále není vyřešen nebo používáte Mac či Linux, napište nám přesné informace o problému na ${1}naší skupinu na Facebooku${2}.","FAQ_18_H1":"Jak mohu vytvořit doplněk?","FAQ_18_P1":"Pro začátek doporučujeme zkontrolovat náš systémový modul ${1}addons${2} na GitHubu.","FAQ_18_P2":"Poté můžete postupovat podle výukového programu ${1}Hello World${2}.","FAQ_18_P3":"Pokud nemáte žádné programátorské dovednosti, napište svůj nápad na ${1}komunitu Reddit${2} a kontaktujte nás s nápadem na doplněk na ${3}office@stremio.com${4}.","FAQ_19_H1":"Proč Stremio zabírá místo na disku?","FAQ_19_P1":"Stremio má <b>místní mezipaměť pro</b> dočasné uchovávání streamovaných video souborů.","FAQ_19_P2":"To má dvě výhody: zaprvé umožňuje Stremio předem vyrovnat video do vyrovnávací paměti, aby bylo zajištěno plynulejší streamování. Zadruhé uchovává videa v místní mezipaměti, takže je můžete dále sledovat offline.","FAQ_19_P3":"Množství, které Stremio uchovává, závisí na nastavení <b>vyrovnávací paměti</b> na panelu Nastavení. Stremio může na vašem disku uchovávat až nastavené množství (např. 2 GB), pokud není aktuálně streamované video větší než toto množství, v takovém případě musí vyčlenit dostatek úložného prostoru, aby jej uchoval až do doby, kdy jej budete streamovat.","FAQ_20_H1":"Kde se nachází složka mezipaměti?","FAQ_20_P1":"V systému Windows je to stremio-cache v jednotce, kterou jste vybrali v Nastavení (např. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"V systému MacOS je to \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"V systému Linux je to \\"~/.stremio/stremio-cache\\" nebo \\"~/stremio-cache\\"","FAQ_21_H1":"Zobrazí se mi chyba \\"Streaming server nebyl nalezen\\", co mám dělat?","FAQ_21_P1":"Pokud se vám tato chyba zobrazí, znamená to jednu z několika možností:","FAQ_21_P2":"1) Snažíte se použít doplněk podporovaný zdrojem YouTube/BitTorrent prostřednictvím naší verze ${1}web${2}. V takovém případě byste si měli nainstalovat naši verzi pro stolní počítače z ${3}našich webových stránek${4}.","FAQ_21_P3":"2) Něco je špatně s vaší instalací Stremio. V takovém případě zkuste znovu nainstalovat naši nejnovější verzi pro stolní počítače z ${1}webové stránky${2}. Pokud to nepomůže, zkuste vypnout antivirové programy a brány firewall, restartovat počítač a zkusit to znovu. Pokud ani to nepomůže, napište nám do naší ${3}skupiny na Facebooku${4}.","FAQ_22_H1":"Většinu doplňků v systému iOS nevidím/používám","FAQ_22_P1":"Vzhledem k omezením v podmínkách obchodu Apple App Store jsme aplikaci pro iOS omezili pouze na určitou sadu doplňků.","FAQ_22_P2":"Ale buďte si jisti - v budoucnu se objeví další doplňky pro iOS a možná přidáme také integraci, která vám umožní používat všechny doplňky Stremio díky připojení aplikace iOS ke Stremio Streaming Serveru."}')},4806:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serie","TYPE_tv":"Kanal","TYPE_channel":"Kanal","TYPE_other":"Andet","TYPE_movie_PL":"Film","TYPE_series_PL":"Serier","TYPE_tv_PL":"TV","TYPE_channel_PL":"YouTube","TYPE_other_PL":"Andrer","TYPE_ALL":"All","VIDEO":"Video","BACK":"Tilbage","MORE":"Mere","DONE":"Færdig","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Opdag","Board":"Væg","Library":"Bibliotek","My Library":"Mit Bibliotek","Calendar":"Kalender","NOTIFICATION_ONLINE":"Du er nu online","NOTIFICATION_OFFLINE":"Du er nu offline","INTERNET_CONNECTION":"Netværk forbindelse","STORAGE_FULL_TITLE":"OBS: Ikke mere ledig plads","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"Søg efter","SEARCH_NO_RESULTS":"Ingen resultater fundet","SEARCH_EXPLANATION_CONTENT":"Søg efter film, serier, YouTube og TV kanaler","SEARCH_EXPLANATION_PEOPLE":"Søg efter skuespiller, direktører og forfatterer","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Tilføj til Bibliotek","REMOVE_FROM_LIB":"Fjern fra Bibliotek","ADDED_TO_LIB":"Tilføjet til Bibliotek","REMOVED_FROM_LIB":"Fjernet fra Bibliotek","TRAILER":"Trailer","WATCH_TRAILER":"Se Trailer","WATCH_NOW":"Afspil","SHOW":"Vis","SHOW_MOVIE":"Vis film","WATCH_RANDOM":"Se tilfældig","IMDB_RATING":"IMDb Bedømmelse","YEAR":"År","DIRECTOR":"Instruktør","WRITER":"Skrevet af","LEAD_ACTORS":"Hovedroller","CAST":"Medvirkende","CREW":"Filmhold","SHOW_MORE_CAST":"Se flere »","AIRED":"Sendt","SEASONS":"Sæsoner","GENRE":"Genre","CATALOG":"Katalog","SUMMARY":"Opsummering","SHOW_MORE":"Show More","SIMILAR":"Lignende","UPCOMING":"Kommende","ENDED":"Sluttet","DURATION":"Længde","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"Kategori","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Søg videoer","SEARCH_PLACEHOLDER":"Søg eller indsæt magnet link","ADDON":"Tilføjelse","ADDONS":"Tilføjelser","OFFICIAL":"Officielle","ADDONS_OFFICIAL":"Officielle Stremio tilføjelser","ADDONS_POPULAR":"Populære nær dig","ADDON_FREE":"Gratis","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Abonnement","ADDON_STREAM_GEORESTRICTED":"Ikke tilgængeligt i dit område","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Lokal Fil","SHARE_ADDON":"Del tilføjelse","AVAILABLE_STREAMS":"Tilgængelige Streams","NO_STREAM":"Ingen tilgængelige streams","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For flere streams, vær venlig at installere flere tilføjelser","STREAM_NOT_SUPPORTED":"Den valgte stream er ikke understøttet på denne platform.","ADDON_CATALOGUE":"Vis alle tilføjelser »","ADDON_CATALOGUE_MORE":"Flere tilføjelser »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Der opstod fejl under tilføjelse af repository","ADDON_ADD_ERR":"Der skete en fejl under tilføjelse af tilføjelsen","ERR_ADDON_PROTECTED":"Beskyttet tilføjelse","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Noget gik galt - authentificering slog måske fejl","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Film stadig i biografen","WATCH_IN_CINEMA":"se den i din lokale biograf","IN_THEATER":"I biografen","GET_TICKETS":"Køb biletter","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Denne kanal er ikke indekseret endnu.<br>Kom tilbage om et par minutter.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Tilføj til dit bibliotek og bliv notificeret når den er tilgængelig","GET_NOTIFIED_WHEN_AVAILABLE":"Du vil blive notificeret når den er tilgængelig","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streamer fra","CASTING_TO":"Afspiller på","NETWORK_STATUS":"Netværksstatus","STREAM_SPEED":"Hastighed:","STREAM_BUFFERED":"Downloadet:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Aktive:","PEERS_CONNECTED":"Forbundet:","PEERS_WAITING":"Venter:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"Henter..","PLAYING_LOCAL":"afspiller fra lokal fil","PLAYING_CACHE":"afspiller fra cache","WRONG_SUBS":"Forkert tekst?","ERR_SUBS_LOADING_TITLE":"Fejl under indlæsning af undertekster","ERR_SUBS_LOADING":"Kunne ikke indlæse undertekster: det kunne være et problem med tilføjelsen du bruger eller med din netværk forbindelse","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Følgende underteksts tilføjelse fejlede","ERR_CASTING_UPDATE_TITLE":"Kunne ikke opdatere casting enheds info: streaming serveren er måske offline","CHOOSE_DEVICE":"Vælg enhed at afspille på","NO_CAST_DEVICES":"Ingen casting enheder tilgængelige.","NO_SETTINGS":"Ingen instillinger tilgængelige.","PHONE_TABLET":"Telefon / Tablet","SUBTITLES":"Undertekster","SUBTITLES_CHANGE":"Ændre undertekster","SUBTITLES_CHANGE_NONE":"Der er ikke flere undertekster til dette sprog, desværre.","SUBTITLES_CHANGE_ACIVE":"Undertekst #{{subtitlesDialog.activeIdx + 1}} er aktiveret. Klik \\"Forsæt\\" for at aktivere #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativt,","SUBTITLES_ADJUST_DELAY":"Juster undertekst forsinkelse:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Eller brug <span>G</span> / <span>H</span> taster under afspilning for at justere.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: du kan bruge <span>G</span> / <span>H</span> taster under afspilning for at justere.","SUBTITLES_DELAY":"Undertekst forsinkelse:","SUBTITLES_LOADING":"Indlæser undertekster...","SUBTITLES_UNAVAILABLE":"Ingen eksterne undertekster tilgængelige","SUBTITLES_DISABLED":"Slået fra","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Lyd","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sæson","EPISODE":"Episode","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"tendens","SORT_RECENT":"seneste","SORT_ALPHABET":"alfabetisk","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"bedømmelser","SORT_WATCHED":"set","SORT_YEAR":"år","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Nyt til dig","New Episodes":"Nye episoder","New Videos":"Nye Videoer","Recommendations":"Anbefalinger","LIBRARY_RESUME":"Genoptag","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Detaljer","LIBRARY_RESUME_DISMISS":"Afvis","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Indhold","DISCOVER_TOP":"Populære","DISCOVER_OSCAR":"Oscar Vindere","DISCOVER_WARNING_TITLE":"Ups!","DISCOVER_EMPTY_CATALOG":"Tilføjelsen returnerede tomt indhold.","DISCOVER_ADULT_WARNING":"Inholdet er kun synligt for voksne. Er du 18+?","DISCOVER_NOADDON_WARNING":"Advarsel: intet Stremio tilføjelse aktiveret for denne type. Viser gemte ting, intet vil blive opdateret.","DISCOVER_LOAD_ERR":"Indholdet kunne ikke indlæses, fejl opstået.","DISCOVER_ADDON_UNINSTALLED":"Indholdet er ikke længere tilgængeligt, måske har du afinstalleret tilføjelsen.","UNINSTALL_THIS_ADDON":"Afinstaler tilføjelsen","ERR_ADDON_NOT_INSTALLED":"Tilføjelsen er ikke instaleret. Instaler nu?","DETAIL_RECEIVE_NOTIF_SERIES":"Modtag notifikationer for nye episoder","DETAIL_RECEIVE_NOTIF_VIDEOS":"Modtag notificationer for nye videoer","SIDEBAR_SHOW_STREAMS":"Vis streams","RELAUNCH":"Genindlæs nu!","UPGRADE":"Opdater til seneste Stremio version","RELOAD_UI":"Genindlæs brugerflade","MANUAL_UPDATE_TITLE":"Opdater din Stremio version","MANUAL_UPDATE_LINE1":"Du kører en gammel version af Stremio hvilket ikke er anbefalet.","MANUAL_UPDATE_LINE2":"Opdater venligst så hurtigt som muligt.","BUTTON_UPDATE_LATTER":"Ikke nu","BUTTON_UPDATE_NOW":"Opdater","ANONYMOUS_USER":"Anonym bruger","DONT_HAVE_ACC":"Har du ikke en konto?","HAVE_ACC":"Har du allerede en konto?","PASSWORD":"Adgangskode","PASSWORD_CONFIRM":"Bekræft adgangskode","EMAIL":"E-mail","FB_LOGIN":"Login med Facebook","FB_NOTHINGSHARED":"Intet bliver delt uden din tilladelse","FB_NOPOST":"Vi slår aldrig noget op på dine vegne","OR":"eller","I_ACCEPT":"Jeg accepterer","I_ACCEPT_BY_CLICKING":"Ved at klikke overstående knap bekræfter jeg at jeg accepterer ","TOS":"Betingelser","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Kodeord ikke korrekt","SIGN_UP":"Opret","SIGN_UP_EMAIL":"Tilmeld med email","CLICK_TO_SIGN_UP":"Klik her for at tilmelde dig.","LOG_IN":"Log ind","LOG_OUT":"Log ud","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Hjælp & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"Om Stremio","USER_PANEL":"Bruger Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Gæste log ind","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"Klik her","WRONG_PASSWORD":"Forkert kodeord. Har du glemt dit kodeord, ","SET_A_PASS":"Vælg kodeord","RESET_PASSWORD":"Reset kodeord","FORGOT_PASSWORD":"Glemt kodeord?","EMAIL_USED_WITH_FB":"Denne email er brugt til Facebook log ind.","INVALID_EMAIL":"Venligst intast en gyldig email addresse","INVALID_PASSWORD":"Venligst indtast et gyldigt kodeord","CONN_ERR":"Forbindelse fejl - Prøv igen senere.\\n\\nHvis fejl forsætter, deaktiver firewalls/anti-virus software (specielt Bitdefender).","IMPORT_FROM_GUEST":"Importer bibliotek fra din gæstekonto","RECEIVE_UPDATES_EMAIL":"Modtag opdateringer til din email fra Stremio","LOGIN_FAILED":"Login fejlede.","SIGNUP_FAILED":"Tilmelding fejlede.","SEARCH_FAILED":"Søgning fejlede","EMAIL_USED":"Denne email er allerede i brug.","WAITING_FB_LOGIN":"Logger ind med Facebook...","EXTERNAL_PLAYER_TITLE":"Afspil i extern afspiller","EXTERNAL_REMEMBER_PLAYER":"Husk valg?","EXTERNAL_ALWAYS_PLAY":"Ja","EXTERNAL_ONLY_ONCE":"Nej","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Fortæl os hvad du godt kan lide","INTRO_TASTE_LONG":"Fortæl os om hvad du gerne vil se","INTRO_TASTE_PICK":"Vælg {{interestsRemaining}} interesser","INTRO_TASTE_PICK_MORE":"Vælg {{interestsRemaining}} flere interesser","INTRO_TASTE_HELP_US":"Hjælp os med at lære mere om dig.","INTRO_TASTE_CHOOSE_THESE":"Vælg nogle af disse:","INTRO_TASTE_CHOOSE_MIN":"Vælg mindst 3 kategorier","INTRO_TASTE_CHOOSE_MIN_ERR":"Du skal vælge mindst 3 kategorier!","INTRO_TASTE_LIFESTYLE":"Livsstil","INTRO_TASTE_SPORTS":"Sport","INTRO_TASTE_FOOD_HEALTH":"Mad & Sunhed","INTRO_TASTE_BEAUTY_FASHION":"Skønhed & Mode","INTRO_TASTE_NEWS":"Nyheder","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Videnskab & Uddannelse","INTRO_TASTE_MUSIC":"Musik","INTRO_TASTE_TRAVEL":"Rejse","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Komedie","INTRO_TASTE_DIY":"Gør det selv","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Biograf","ADDON_NOT_SUPPORTED":"Den valgte tilføjelse er ikke understøttet på denne platform.","ADDON_DISCLAIMER":"Brug af tredjeparts tilføjelser vil altid være dit eget ansvar og love og regler kan være forskellige fra land til land.","ADDON_ACTIVATE":"Aktiver denne tilføjelse?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Hvad er nyt","BUTTON_CONTINUE":"Fortsæt","BUTTON_ACTIVATE":"Aktiver","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Annuller","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Dit bibliotek er tomt. Find ud af hvor brugbart det er :) ","HOW_START":"Tilføj indhold til dit bibliotek","LIB_EMPTY_CAL":"Din kalender viser serier fra dit bibliotek.","HOW_START_CAL":"Tilføj indhold til dit bibliotek","LIB_EMPTY_BOARD":"Din væg viser notifikationer & anbefalinger relateret til dit bibliotek.","HOW_START_BOARD_WAIT":"Tilføj indhold til dit bibliotek og vent et par minutter til indholdet er opdateret :)","HOW_START_BOARD":"Sådan tilføjer du indhold","IMPORT_FB":"Importer ting du kan lide fra <span>Facebook</span>","IMPORT_TRAKT":"Import your media library from <span>Trakt</span>","IMPORT_DISCOVER":"Find interessante ting fra <span>Opdag</span>","IMPORT_DISK":"Importer film og serier fra din <span>computer</span>","PLEASE_CREATE_ACC":"Venligst <u>opret en konto</u> for at aktivere Bibliotek & Væg.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from <span>Discover</span>","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your <span>local disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Kør ved opstart","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Importer fra Facebook","SETTINGS_IMPORT_DISK":"Importer fra computer","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Abonner på kalender","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Ændre kodeord","SETTINGS_TOS":"Servicevilkår","SETTINGS_SUPPORT":"Kontakt support","SETTING_LANGUAGE":"Sprog","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Afslut","CONNECTED":"Connected","AUTHENTICATE":"Godkend","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Vælg caching drev","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januar","February":"Februar","March":"Marts","April":"April","May":"Maj","June":"Juni","July":"Juli","August":"August","September":"September","October":"Oktober","November":"November","December":"December","Monday":"Mandag","Tuesday":"Tirsdag","Wednesday":"Onsdag","Thursday":"Torsdag","Friday":"Fredag","Saturday":"Lørdag","Sunday":"Søndag","Action":"Action","Comedy":"Komedie","War":"Krig","Family":"Familie","Animation":"Animation","Adventure":"Eventyr","Fantasy":"Fantasy","Crime":"Krimi","Mystery":"Mystik","Romance":"Romantik","Drama":"Drama","Horror":"Gyser","Thriller":"Spænding","Sci-Fi":"Sci-Fi","Music":"Musik","Biography":"Biografi","Documentary":"Dokumentar","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"Nyheder","History":"Historie","Game-Show":"Gameshow","Reality-TV":"Reality TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Underholdning","Gaming":"Gaming","From TV":"Fra TV","Lifestyle":"Livsstil","Science & Education":"Videnskab & Uddannelse","Cooking & Health":"Madlavning & Helbred","Beauty & Fashion":"Skønhed & Mode","Sports":"Sport","News & Politics":"Nyheder & Politik","How-to & DIY":"Gør det selv","Tech":"Teknologi","Automotive":"Biler","Causes & Non-Profits":"Sager & Non-profit","Movies":"Film","Uk Live Tv":"UK Direkte TV","Fashion":"Mode","Business News Radio":"Business Nyheds Radio","Business Tv":"Business TV","Cars & Auto":"Biler & Auto","Comedy Radio":"Komedie Radio","Lifestyle Radio":"Livsstils Radio","News Tv":"Nyheds TV","Food And Wine":"Mad & Vin","Latino Tv":"Latino TV","Shopping Tv":"Shopping TV","Religion":"Religion","Kids":"Børn","Body & Soul":"Krop & Sjæl","Education":"Uddannelse","Indian Tv":"Indisk TV","Extreme Sports":"Ekstremsport","Middle Eastern Tv":"TV fra Mellemøsten","Celebrity Tv":"Kendis TV","Science Tv":"Videnskabs TV","Bikini babe":"Bikini Piger","Outdoors":"udendørs","German Tv":"Tysk TV","French Tv":"Fransk TV","Italian Tv":"Italiensk TV","Gamer Tv":"Spil TV","Travel":"Rejse TV","Asian Tv":"Asiatisk TV","Entertainment":"Underholdning","News Radio":"Nyheds Radio","Music Radio":"Musik Radio","Language Learning":"Sprog & Læring","Science Radio":"Videnskabs Radio","Tech Radio":"Teknologi Radio","Science & Technology Vod":"Videnskab & Teknologi VOD","new video":"ny video","new episode":"ny episode","new movie":"ny film","recommended":"anbefalet","we recommend":"vi anbefaler","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Afvis notifikationer","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Del","CTX_COPY_SHARE_LINK":"Kopier dele link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Vis","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Se på","CTX_WATCH":"Se","CTX_WATCHED":"Set","CTX_WATCH_BEGINNING":"Se fra begyndelsen","CTX_WATCH_MOBILE":"Se på en mobil enhed","CTX_REWIND":"Tilbage til begyndelsen","CTX_MARK_WATCHED":"Marker som set","CTX_MARK_NON_WATCHED":"Marker som ikke set","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Modtag nye notifikationer","CTX_REMOVE_CACHE":"Fjern cache","CTX_REMOVE_CACHE_EP":"Fjern episode fra cache","CTX_OPEN_CONTAINING":"Åben mappe","CTX_REMOVE":"Fjern fra bibliotek","CTX_AVAILABLE_OFFLINE":"Tilgængelig Offline","CTX_PAUSED":"Pause","CTX_ALWAYS_ON_TOP":"Altid øverst","CTX_FULLSCREEN":"Fuldskærm","CTX_WRONG_SUBS":"Forkerte undetekster?","CTX_REPORT_ISSUES":"Rapporter problem","CTX_COPY":"Kopier","CTX_PASTE":"Indsæt","CTX_CLEAR":"Ryd","CTX_CLEAR_RECENT_SEARCHES":"Ryd seneste søgninger","HELLO_THERE":"Hej","HOPE_YOU_ENJOY":"Vi håber du nyder Stremio og at det er et af dine favorit programmer allerede!","WHO_ARE_WE":"Hvem er vi? Vi er holded bag - to gutter som har arbejdet hårdt de sidste 3 år, med et samlet mål - at gøre dette produkt bedre og bedre.","SUPPORT_US":"Hvis du kan lide Stremio, hvis Stremio er værdifuldt for dig - støt os!","SPREAD_THE_WORD":"Del med dine venner nu, spred ordet omkring Stremio","MORE_PEOPLE":"Nu flere folk der bruger Stremio, nu bedre vil det blive!","SEND_A_LINK":"Eller send et link til vores hjemmeside","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"provides","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},1145:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serie","TYPE_tv":"Fernsehkanal","TYPE_channel":"Kanal","TYPE_other":"Andere","TYPE_movie_PL":"Filme","TYPE_series_PL":"Serien","TYPE_tv_PL":"Fernsehkanäle","TYPE_channel_PL":"Kanäle","TYPE_other_PL":"Andere","TYPE_ALL":"All","VIDEO":"Video","BACK":"Zurück","MORE":"Mehr","DONE":"Erledigt","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Entdecken","Board":"Tafel","Library":"Bibliothek","My Library":"Meine Bibliothek","Calendar":"Kalender","NOTIFICATION_ONLINE":"Sie sind jetzt online","NOTIFICATION_OFFLINE":"Sie sind gerade offline.","INTERNET_CONNECTION":"Netzwerkverbindung","STORAGE_FULL_TITLE":"Warnung: Speicher voll!","STORAGE_FULL_TEXT":"Stremio kann Ihre Einstellungen, Präferenzen oder Anmeldeinformationen nicht speichern. Erwägen Sie, Stremio neu zu starten oder zu installieren.","SEARCH":"Suche","SEARCH_NO_RESULTS":"Es wurden keine Ergebnisse gefunden","SEARCH_EXPLANATION_CONTENT":"Suche nach Filmen, Serien, YouTube- und Fernsehkanälen","SEARCH_EXPLANATION_PEOPLE":"Suche nach Schauspielern, Regisseuren und Autoren","SEARCH_PASTE_LINKS":"HTTP- und Magnet-Links einfügen","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Zur Bibliothek hinzufügen","REMOVE_FROM_LIB":"Aus Bibliothek entfernen","ADDED_TO_LIB":"Zur Bibliothek hinzugefügt","REMOVED_FROM_LIB":"Aus der Bibliothek entfernt","TRAILER":"Filmvorschau","WATCH_TRAILER":"Filmvorschau ansehen","WATCH_NOW":"Jetzt ansehen","SHOW":"Anzeigen","SHOW_MOVIE":"Zeige Film","WATCH_RANDOM":"Zufälliges ansehen","IMDB_RATING":"IMDb-Bewertung","YEAR":"Jahr","DIRECTOR":"Regisseur","WRITER":"Autor","LEAD_ACTORS":"Hauptdarsteller","CAST":"Besetzung","CREW":"Crew","SHOW_MORE_CAST":"Mehr anzeigen »","AIRED":"Ausgestrahlt","SEASONS":"Staffeln","GENRE":"Genre","CATALOG":"Katalog","SUMMARY":"Zusammenfassung","SHOW_MORE":"Zeige mehr","SIMILAR":"Ähnlich","UPCOMING":"Bevorstehend","ENDED":"Beendet","DURATION":"Dauer","FEATURED":"Vorgestellt","METADATA":"Metadaten","CATEGORY":"Kategorie","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Videos suchen","SEARCH_PLACEHOLDER":"Magnet-Link suchen oder einfügen","ADDON":"Addon","ADDONS":"Addons","OFFICIAL":"Offiziell","ADDONS_OFFICIAL":"Offizielle Stremio-Addons","ADDONS_POPULAR":"In Ihrer Gegend beliebt","ADDON_FREE":"frei","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Abonnement","ADDON_STREAM_GEORESTRICTED":"In Ihrer Gegend nicht verfügbar","ADDON_STREAM_OFFLINECACHE":"Offline-Zwischenspeicher","ADDON_STREAM_LOCALFILE":"Lokale Datei","SHARE_ADDON":"Addon teilen","AVAILABLE_STREAMS":"Verfügbare Streams","NO_STREAM":"Keine Streams verfügbar","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Um mehr Streams bitte weitere Addons installieren","STREAM_NOT_SUPPORTED":"Ausgewählter Stream wird auf dieser Plattform nicht unterstützt.","ADDON_CATALOGUE":"Alle Addons anzeigen »","ADDON_CATALOGUE_MORE":"Mehr Addons »","REPO_ADDED":"Repositorium hinzugeügt","ADDON_REPO_EXIST_ERR":"Dieses Addons-Repositorium existiert bereits","ADDON_REPO_ERR":"Beim Hinzufügen des Repositoriums ist ein Fehler aufgetreten","ADDON_ADD_ERR":"Beim Hinzufügen des Addons ist ein Fehler aufgetreten","ERR_ADDON_PROTECTED":"Geschütztes Addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Etwas ist schief gelaufen - die Authentifizierung ist möglicherweise fehlgeschlagen","ERR_NOT_COLLECTION_URL":"Keine Sammlungs-URL","ERR_NOT_ADDON_URL":"Keine Addon-URL","ERR_DETECTFROMURL":"Kann nicht aus der URL erkannt werden","ADDON_DUPLICATE_WARNING":"Warnung: dupliziertes Addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Daten exportieren","ADDON_PULL_FAILED":"Herunterladen des Addons fehlgeschlagen","REFRESH_ON_CLICK":"Hier klicken, um es erneut zu versuchen","STILL_IN_THEATER":"Film immer noch im Kino","WATCH_IN_CINEMA":"Sehen Sie ihn in Ihrem lokalen Kino an","IN_THEATER":"Im Kino","GET_TICKETS":"Karten besorgen","UPCOMING_EPISODE":"Bevorstehende Folge","UPCOMING_EPISODE_MESSAGE":"Diese Folge wird ausgestrahlt am","MISSING_DATE_EPISODE":"Für diese Folge gibt es noch kein Datum","MISSING_DATE_EPISODE_MESSAGE":"Diese Folge wurde möglicherweise noch nicht ausgestrahlt","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.<br>Please come back in a few minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Fügen Sie es zu Ihrer Bibliothek hinzu, um benachrichtigt zu werden, sobald es verfügbar ist.","GET_NOTIFIED_WHEN_AVAILABLE":"Sie werden benachrichtigt, sobald es verfügbar ist.","WARNING_STREAMING_SERVER":"Warnung: lokaler Streaming-Server nicht gefunden. Streaming von lokalen Dateien, YouTube und BitTorrent wird nicht verfügbar sein.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warnung: Dieses Video wird von Ihrer Hardware möglicherweise nicht unterstützt. Denken Sie daran, dass die Wiedergabe langsam sein könnte.","PLAYER_ERROR":"Hoppla, Abspielerfehler","PLAYER_ERROR_LOOKSLIKE":"Es sieht aus wie","PLAYER_ORIENTATION":"Abspielerausrichtung","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Gesperrt","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Abspielerausrichtung im Querformat fixiert","PLAYER_ORIENTATION_SENSOR":"Abspielerausrichtung automatisch (Sensor)","PLAYER_PLAYBACK_SPEED":"Wiedergabegeschwindigkeit","PLAYER_PLAYBACK_ERROR":"Wiedergabefehler, bitte versuchen Sie es erneut","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unbekannter Fehlerr","PLAYER_PLAYBACK_ERROR_DEFAULT":"Entschuldigung, dieses Video kann nicht von {{productName}} abgespielt werden.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Als Nächstes im Programm","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Ablehnen","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Jetzt ansehen","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streamt von","CASTING_TO":"Casting nach","NETWORK_STATUS":"Netzwerkstatus","STREAM_SPEED":"Stream-Geschwindigkeit:","STREAM_BUFFERED":"Gepuffert:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Aktiv:","PEERS_CONNECTED":"Verbunden:","PEERS_WAITING":"Warten:","TRANSCODING_WARNING":"Warnung: Video wird transkodiert.","STREAM_LOADING":"Ladevorgang...","PLAYING_LOCAL":"Wiedergabe aus lokaler Datei","PLAYING_CACHE":"Wiedergabe aus Zwischenspeicher","WRONG_SUBS":"Falsche Untertitel?","ERR_SUBS_LOADING_TITLE":"Fehler beim Laden der Untertitel","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Die folgenden Untertitel-Addons sind fehlgeschlagen","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Wählen Sie ein Gerät aus, auf dem Sie zuschauen möchten","NO_CAST_DEVICES":"Keine Casting-Geräte vorhanden.","NO_SETTINGS":"Keine Einstellungen verfügbar","PHONE_TABLET":"Telefon / Tablet","SUBTITLES":"Untertitel","SUBTITLES_CHANGE":"Untertitel ändern für ","SUBTITLES_CHANGE_NONE":"Es gibt keine anderen Untertitel für diese Sprache, Entschuldigung.","SUBTITLES_CHANGE_ACIVE":"Derzeit sind Untertitel #{{subtitlesDialog.activeIdx + 1}} aktiviert. Klicken Sie auf \\"Fortsetzen\\", um Untertitel #{{subtitlesDialog.pickedIdx + 1}}. zu aktivieren","SUBTITLES_OR":"Alternativ,","SUBTITLES_ADJUST_DELAY":"Untertitelverzögerung anpassen:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Oder verwenden Sie die Tasten <span>G</span> / <span>H</span> zum Anpassen während der Wiedergabe.","SUBTITLES_ADJUST_DELAY_TIP":"TIPP: Sie können die Tasten <span>G</span> / <span>H</span> zum Anpassen während der Wiedergabe verwenden.","SUBTITLES_DELAY":"Untertitelverzögerung:","SUBTITLES_LOADING":"Untertitel werden geladen...","SUBTITLES_UNAVAILABLE":"Keine externen Untertitel verfügbar","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Standard-Sprache","DEFAULT_SECONDARY_LANGUAGE":"Standard-Sekundärsprache","SEASON":"Staffel","EPISODE":"Episode","SPECIAL":"Special","SORT":"sortieren","SORT_BY":"Sortieren nach","FILTER":"filtern","SORT_TRENDING":"im Trend","SORT_RECENT":"kürzlich","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"Bewertung","SORT_WATCHED":"gesehen","SORT_YEAR":"Jahr","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Neu für Sie","New Episodes":"Neue Episoden","New Videos":"Neue Videos","Recommendations":"Empfehlungen","LIBRARY_RESUME":"Fortsetzen","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"Ablehnen","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Ausgewählt","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oscar-Gewinner","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"Dieses Addon liefert leeren Inhalt.","DISCOVER_ADULT_WARNING":"Diese Inhalte sind nur für Erwachsene sichtbar. Sind Sie über 18?","DISCOVER_NOADDON_WARNING":"Warnung: Für diesen Typ ist kein Stremio-Addon aktiv. Gespeicherte Elemente werden angezeigt, nichts wird hier aktualisiert.","DISCOVER_LOAD_ERR":"Diese Inhalte konnten nicht geladen werden, da ein Fehler vorlag.","DISCOVER_ADDON_UNINSTALLED":"Diese Inhalte sind nicht mehr verfügbar. Möglicherweise wurde das Addon deinstalliert.","UNINSTALL_THIS_ADDON":"Dieses Addon deinstallieren","ERR_ADDON_NOT_INSTALLED":"Dieses Addon ist nicht installiert. Jetzt installieren?","DETAIL_RECEIVE_NOTIF_SERIES":"Benachrichtigungen über neue Episoden erhalten","DETAIL_RECEIVE_NOTIF_VIDEOS":"Benachrichtigungen über neue Videos erhalten","SIDEBAR_SHOW_STREAMS":"Streams zeigen","RELAUNCH":"Jetzt neu starten!","UPGRADE":"Neue Version ist verfügbar! Aktualisieren Sie auf die neueste Stremio-Version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Aktualisieren Sie Ihre Stremio-Version","MANUAL_UPDATE_LINE1":"Sie nutzen eine veraltete Version von Stremio, was nicht empfohlen wird.","MANUAL_UPDATE_LINE2":"Bitte aktualisieren Sie schnellstmöglich.","BUTTON_UPDATE_LATTER":"Nicht jetzt","BUTTON_UPDATE_NOW":"Aktualisieren","ANONYMOUS_USER":"Anonymer Benutzer","DONT_HAVE_ACC":"Sie haben kein Konto?","HAVE_ACC":"Sie haben bereits ein Konto?","PASSWORD":"Passwort","PASSWORD_CONFIRM":"Passwort bestätigen","EMAIL":"E-Mail","FB_LOGIN":"Mit Facebook anmelden","FB_NOTHINGSHARED":"Ohne Ihre Berechtigung wird nichts geteilt","FB_NOPOST":"Wir werden nichts in Ihrem Namen posten","OR":"oder","I_ACCEPT":"Ich akzeptiere die","I_ACCEPT_BY_CLICKING":"Wenn Sie auf die obige Schaltfläche klicken, bestätigen Sie, dass Sie die ","TOS":"Geschäftsbedingungen annehmen","MUST_ACCEPT_TERMS":"Sie müssen die Bedingungen annehmen","PASSWORDS_NOMATCH":"Passwörter stimmen nicht überein","SIGN_UP":"Registrieren","SIGN_UP_EMAIL":"Mit E-Mail registrieren","CLICK_TO_SIGN_UP":"Klicken Sie hier, um sich zu registrieren.","LOG_IN":"Anmelden","LOG_OUT":"Abmelden","EXIT_FULLSCREEN":"Vollbildmodus verlassen","ENTER_FULLSCREEN":"Vollbildmodus aktivieren","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Hilfe und Feedback","TERMS_OF_SERVICE":"Geschäftsbedingungen","PRIVACY_POLICY":"Datenschutzbestimmungen","ABOUT_STREMIO":"Über Stremio","USER_PANEL":"Nutzerpanel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Gast-Anmeldung","GUEST_LOGIN_NOTICE":"Gast-Anmeldung wird nicht empfohlen. Mit einer regelmäßigen Anmeldung kann Stremio Ihre Bibliothek synchronisieren und Sie können Benachrichtigungen für Ihre Lieblingserien/-kanäle erhalten. Sind Sie sicher, dass Sie fortfahren möchten?","GUEST_LOGIN_NOTICE_2":"Gast-Anmeldung wird nicht empfohlen - Sie werden keine Bibliotheks- und Tafelbenachrichtigungen synchronisiert haben, die wichtige Stremio-Funktionen sind. Sind Sie sicher, dass Sie fortfahren möchten?","CLICK_HERE":"Klicken Sie hier","WRONG_PASSWORD":"Falsche E-Mail-Adresse oder Passwort. Falls Sie Ihr Passwort vergessen haben, ","SET_A_PASS":"Passwort festlegen","RESET_PASSWORD":"Passwort zurücksetzen","FORGOT_PASSWORD":"Passwort vergessen?","EMAIL_USED_WITH_FB":"Diese E-Mail-Adresse wurde mit einer Facebook-Anmeldung verwendet.","INVALID_EMAIL":"Bitte geben Sie eine gültige E-Mail-Adresse ein","INVALID_PASSWORD":"Bitte geben Sie ein gültiges Passwort ein","CONN_ERR":"Verbindungsfehler - bitte versuchen Sie es später noch einmal.\\n\\nWenn dies weiterhin besteht, deaktivieren Sie Firewalls/Antivirus-Software (vor allem Bitdefender).","IMPORT_FROM_GUEST":"Bibliothek von Ihrem Gastkonto importieren","RECEIVE_UPDATES_EMAIL":"Aktualisierungen in Ihrer E-Mail von Stremio erhalten","LOGIN_FAILED":"Anmeldung fehlgeschlagen.","SIGNUP_FAILED":"Registrierung fehlgeschlagen.","SEARCH_FAILED":"Suche fehlgeschlagen","EMAIL_USED":"Diese E-Mail-Adresse wird bereits verwendet","WAITING_FB_LOGIN":"Anmeldung mit Facebook...","EXTERNAL_PLAYER_TITLE":"Wiedergabe im externen Player","EXTERNAL_REMEMBER_PLAYER":"Möchten Sie Ihre Auswahl in Erinnerung behalten?","EXTERNAL_ALWAYS_PLAY":"Ja","EXTERNAL_ONLY_ONCE":"Nein","BEST_FIT":"Best Fit","FIT_SCREEN":"in Bildschirm einpassen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Erzählen Sie uns, was Sie mögen","INTRO_TASTE_LONG":"Erzählen Sie uns, was Sie gerne sehen möchten","INTRO_TASTE_PICK":"Wählen Sie {{interestsRemaining}} Interessen aus","INTRO_TASTE_PICK_MORE":"Wählen Sie {{interestsRemaining}} weitere Interessen aus","INTRO_TASTE_HELP_US":"Helfen Sie uns, mehr über Sie zu erfahren.","INTRO_TASTE_CHOOSE_THESE":"Wählen Sie einige davon:","INTRO_TASTE_CHOOSE_MIN":"Wählen Sie mindestens 3 Kategorien aus","INTRO_TASTE_CHOOSE_MIN_ERR":"Sie müssen mindestens 3 Kategorien auswählen!","INTRO_TASTE_LIFESTYLE":"Lebensstil","INTRO_TASTE_SPORTS":"Sport","INTRO_TASTE_FOOD_HEALTH":"Essen & Gesundheit","INTRO_TASTE_BEAUTY_FASHION":"Schönheit & Mode","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Spielen","INTRO_TASTE_SCIENCE_EDU":"Wissenschaft & Bildung","INTRO_TASTE_MUSIC":"Musik","INTRO_TASTE_TRAVEL":"Reise","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Kino","ADDON_NOT_SUPPORTED":"Ausgewähltes Addon wird auf dieser Plattform nicht unterstützt.","ADDON_DISCLAIMER":"Die Verwendung von Drittanbieter-Addons unterliegt immer Ihrer Verantwortung und dem Recht der Gerichtsbarkeit, in der Sie sich befinden.","ADDON_ACTIVATE":"Dieses Addon aktivieren?","ADDON_REPO_ADD":"Addon-Repositoriums-URL","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Was gibt\'s Neues","BUTTON_CONTINUE":"Fortsetzen","BUTTON_ACTIVATE":"Aktivieren","BUTTON_ACTIVATED":"Aktiviert","BUTTON_CANCEL":"Abbrechen","BUTTON_SUBMIT":"Senden","BUTTON_DISMISS_ALL":"Alle ablehnen","BUTTON_VIEW_ALL":"Alle ansehen","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Ihre Bibliothek sieht leer aus. Finden Sie heraus, wie nützlich sie ist :) ","HOW_START":"So können Sie anfangen:","LIB_EMPTY_CAL":"Ihr Kalender zeigt die Serien in Ihrer Bibliothek an.","HOW_START_CAL":"So können Sie Serien hinzufügen:","LIB_EMPTY_BOARD":"Tafel zeigt Benachrichtigungen & Empfehlungen zu Ihrer Bibliothek an.","HOW_START_BOARD_WAIT":"Bitte fügen Sie ein paar Serien oder Kanäle zu Ihrer Bibliothek hinzu und geben uns ein paar Minuten zum Verarbeiten :)","HOW_START_BOARD":"So können Sie Serien & Filme zu ihr hinzufügen:","IMPORT_FB":"Importieren Sie Dinge von <span>Facebook</span>, die Sie mögen","IMPORT_TRAKT":"Importieren Sie Ihre Medienbibliothek von <span>Trakt</span>","IMPORT_DISCOVER":"Finden Sie interessante Sachen von <span>Entdecken</span>","IMPORT_DISK":"Importieren Sie Filme oder Shows, die Sie auf Ihrer <span>lokalen Festplatte</span> haben","PLEASE_CREATE_ACC":"Bitte <u>erstellen Sie ein Konto</u>, um das Synchronisieren der Bibliothek & Tafel zu ermöglichen.","IMPORT_DISCOVER_SIGNUP":"Registrieren Sie sich und finden Sie interessante Sachen von <span>Entdecken</span>","IMPORT_DISK_SIGNUP":"Registrieren Sie sich und importieren Sie Filme oder Shows, die Sie auf Ihrer <span>lokalen Festplatte</span> haben","LIB_EMPTY_CLOUD":"Cloud-Bibliothek","LIB_EMPTY_CLOUD_DESC":"Persönliche Cloud-Bibliothek auf allen Geräten synchronisiert","LIB_EMPTY_EARLY":"Früher Vogel","LIB_EMPTY_EARLY_DESC":"Erhalten Sie Benachrichtigungen für neue Episoden","LIB_EMPTY_PERSONAL":"Persönlich","LIB_EMPTY_PERSONAL_DESC":"Holen Sie sich persönliche Empfehlungen","LIB_EMPTY_CALENDAR_DESC":"Planen Sie Ihren persönlichen Anschau-Kalender","LIB_EMPTY_ALL":"Registrieren Sie sich, um all dies zu bekommen:","LIB_EMPTY_BEST":"Registrieren Sie sich, um das Beste von Stremio zu bekommen","LIB_EMPTY_OTHER":"Registrieren Sie sich, um Kalender & andere tolle Funktionen zu aktivieren","CALENDAR_ADDED":"Der Stremio-Kalender wurde zu Ihrem Standard-Desktop-Kalender hinzugefügt.","CALENDAR_ADDED_MSG":"Wenn dies nicht funktioniert, fügen Sie diese URL bitte manuell zu Ihrer Kalenderanwendung hinzu","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt-Fehler","TRAKT_REQUIRES_LOGIN_MSG":"Sie müssen sich anmelden","SETTINGS_LABEL":"Einstellungen","SETTINGS_NAV_GENERAL":"Algemein","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Verknüpfungen","SETTINGS_SHORTCUT_RELOAD_APP":"App neu laden","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Lautstärke erhöhen","SETTINGS_SHORTCUT_VOLUME_DOWN":"Lautstärke verringern","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Seitenleiste umschalten","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Beim Start ausführen","SETTINGS_VLC_DEFAULT":"Mit VLC wiedergeben","SETTINGS_UI_LANGUAGE":"Sprache des UI","SETTINGS_FULLSCREEN_EXIT":"Esc-Taste beendet den Vollbildmodus","SETTINGS_GAMEPAD":"Gamepad-Unterstützung aktivieren","SETTINGS_CLOSE_WINDOW":"Anwendungen beenden, wenn das Fenster geschlossen wird","SETTINGS_SUBTITLES_LANGUAGE":"Standardauswahl für die Untertitelsprache","SETTINGS_SUBTITLES_SIZE":"Standardgröße der Untertitel","SETTINGS_SUBTITLES_BACKGROUND":"Hintergrund der Untertitel","SETTINGS_SUBTITLES_COLOR":"Farbe der Untertitel","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Umrandungsfarbe der Untertitel","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Hintergrundfarbe der Untertitel","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Nächste Episode automatisch wiedergeben","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Größe des Fensters vor der Wiedergabe automatisch ändern","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming-Server ist verfügbar.","SETTINGS_SERVER_UNAVAILABLE":"Streaming-Server ist nichtverfügbar.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Immer neueste Beta verwenden","SETTINGS_IMPORT_FB":"Von Facebook importieren","SETTINGS_IMPORT_DISK":"Von lokaler Festplatte importieren","SETTINGS_IMPORT_TRAKT":"Von Trakt importieren","SETTINGS_PAUSE_MINIMIZED":"Wiedergabe pausieren, wenn die Anwendung minimiert wird","SETTINGS_HWDEC":"Hardwarebeschleunigte Dekodierung","SETTINGS_BACKGROUND":"Hintergrund-Wiedergabe","SETTINGS_SUBSCRIBE_CALENDAR":"Kalender abonnieren","SETTINGS_REQ_EXPORT":"Datenexport anfordern","SETTINGS_ACC_DELETE":"Kontolöschung anfordern","SETTINGS_CHANGE_PASSWORD":"Passwort ändern","SETTINGS_TOS":"Nutzungsbedingungen","SETTINGS_SUPPORT":"Kundendienst kontaktieren","SETTING_LANGUAGE":"Sprache","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Von Trakt.tv abmelden","SETTINGS_SCAN_FOR_REMOTE":"QR-Code zum Öffnen der Fernbedienung scannen","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop-Benachrichtigungen","SETTINGS_DATA_SAVER":"Datenretter","SETTINGS_LANGUAGE_INTERFACE":"Oberfläche","SETTINGS_LANGUAGE_SUBS":"Standarduntertitel","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"Konto","SETTINGS_VERSION":"Version","SETTINGS_MPV_WINDOW":"Abspieler in einem separaten Fenster starten (erweitert)","SETTINGS_PLAY_IN_EXTERNAL":"Video immer im externen Player starten","SETTINGS_STORAGE_BUTTON":"Lokalen Speicher leeren","SETTINGS_STORAGE_MODAL_TITLE":"Sind Sie sicher?","SETTINGS_STORAGE_MODAL_MESSAGE":"Dies wird den lokalen Speicher leeren und Sie auslogggen.","SETTINGS_HWDEC_PICKER":"Einstellung für hardwarebeschleunigte Dekodierung wählen","SETTINGS_HW_AUTOMATIC":"Automatik","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Dekodier-Beschleunigung","SETTINGS_HW_FULL":"Vollständige Beschleunigung","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Schwarze Hintergrundfarbe verwenden","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Eingebettete Untertitel","MOBILE_PRIVACY_POLICY":"Datenschutzbestimmungen","MOBILE_CRASH_REPORTING":"Absturzbericht","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Wiedergabegeschwindigkeit wählen","MOBILE_EMPTY_LIBRARY":"Ihre Bibliothek ist leer","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"Ich bin damit einverstanden, von Stremio Marketingmitteilungen zu erhalten","QUIT":"Beenden","CONNECTED":"Verbunden","AUTHENTICATE":"Authentifizieren","CACHING":"Zwischenspeicherung","SETTINGS_CACHING_DRIVE":"Zwischenspeicherungslaufwerk","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Datenzwischenspeicherung","MAGNET_PARSING":"Magnet-Link wird geparst","January":"Januar","February":"Februar","March":"März","April":"April","May":"Mai","June":"Juni","July":"Juli","August":"August","September":"September","October":"Oktober","November":"November","December":"Dezember","Monday":"Montag","Tuesday":"Dienstag","Wednesday":"Mittwoch","Thursday":"Donnerstag","Friday":"Freitag","Saturday":"Samstag","Sunday":"Sonntag","Action":"Action","Comedy":"Comedy","War":"Krieg","Family":"Familie","Animation":"Animation","Adventure":"Abenteuer","Fantasy":"Fantasy","Crime":"Krimi","Mystery":"Mystery","Romance":"Romantik","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Musik","Biography":"Biografie","Documentary":"Dokumentation","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"Nachrichten","History":"Geschichte","Game-Show":"Spielshow","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Unterhaltung","Gaming":"Spielen","From TV":"Vom Fernsehen","Lifestyle":"Lebensstil","Science & Education":"Wissenschaft & Bildung","Cooking & Health":"Kochen & Gesundheit","Beauty & Fashion":"Schönheit & Mode","Sports":"Sport","News & Politics":"News & Politik","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automobil","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Filme","Uk Live Tv":"Uk Live Tv","Fashion":"Mode","Business News Radio":"Business News Radio","Business Tv":"Geschäftsfernsehen","Cars & Auto":"Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lebensstilradio","News Tv":"News Tv","Food And Wine":"Essen und Wein","Latino Tv":"Latino Tv","Shopping Tv":"Verkaufsfernsehen","Religion":"Religion","Kids":"Kinder","Body & Soul":"Körper & Seele","Education":"Bildung","Indian Tv":"Indian Tv","Extreme Sports":"Extremsport","Middle Eastern Tv":"Fernsehen des Mittleren Ostens","Celebrity Tv":"Promifernsehen","Science Tv":"Wissenschaftsfernsehen","Bikini babe":"Bikinischönheit","Outdoors":"Outdoors","German Tv":"Deutsches Fernsehen","French Tv":"Französisches Fernsehen","Italian Tv":"Italienisches Fernsehen","Gamer Tv":"Spielerfernsehen","Travel":"Reise","Asian Tv":"Asiatisches Fernsehen","Entertainment":"Unterhaltung","News Radio":"Nachrichtenradio","Music Radio":"Musikradio","Language Learning":"Sprachen lernen","Science Radio":"Wissenschaftsradio","Tech Radio":"Tech Radio","Science & Technology Vod":"Abrufvideo Wissenschaft & Technologie","new video":"neues Video","new episode":"neue Episode","new movie":"neuer Film","recommended":"empfohlen","we recommend":"wir empfehlen","offer of the day":"Angebot des Tages","news":"Nachrichten","music video":"Musikvideo","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Benachrichtigungen ablehnen","CTX_DISMISS_ALL":"Alles ablehnen","CTX_SHARE":"Teilen","CTX_COPY_SHARE_LINK":"Freigabelink kopieren","CTX_COPY_MAGNET_LINK":"Magnet-Link kopieren","CTX_COPY_STREAM_LINK":"Stream-Link kopieren","CTX_DOWNLOAD_VIDEO":"Dieses Video herunterladen","CTX_DOWNLOAD_SUBS":"Untertitel herunterladen","CTX_VIEW_ON_YOUTUBE":"Auf YouTube ansehen","CTX_SHOW":"Anzeigen","CTX_PLAY":"Wiedergabe","CTX_PLAY_IN":"Wiedergabe in","CTX_PLAY_ON":"Wiedergabe auf","CTX_WATCH_ON":"Angesehen am","CTX_WATCH":"Ansehen","CTX_WATCHED":"Angesehen","CTX_WATCH_BEGINNING":"Von Anfang an ansehen","CTX_WATCH_MOBILE":"Auf einem mobilen Gerät ansehen","CTX_REWIND":"Zurückspulen zum Anfang","CTX_MARK_WATCHED":"Als angesehen markieren","CTX_MARK_NON_WATCHED":"Als nicht angesehen markieren","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Rest als angesehen markieren","CTX_UNMARK_REST":"Rest als nicht angesehen markieren","CTX_RECEIVE_NEW_NOTIF":"Neue Benachrichtigungen erhalten","CTX_REMOVE_CACHE":"Aus Zwischenspeicher entfernen","CTX_REMOVE_CACHE_EP":"Episode aus Zwischenspeicher entfernen","CTX_OPEN_CONTAINING":"Enthaltenden Ordner öffnen","CTX_REMOVE":"Aus Bibliothek entfernen","CTX_AVAILABLE_OFFLINE":"Offline verfügbar","CTX_PAUSED":"Pausiert","CTX_ALWAYS_ON_TOP":"Immer oben","CTX_FULLSCREEN":"Vollbild","CTX_WRONG_SUBS":"Falsche Untertitel?","CTX_REPORT_ISSUES":"Problem melden","CTX_COPY":"Kopieren","CTX_PASTE":"Einfügen","CTX_CLEAR":"Löschen","CTX_CLEAR_RECENT_SEARCHES":"Kürzliche Suchanfragen löschen","HELLO_THERE":"Hallöchen","HOPE_YOU_ENJOY":"Wir hoffen, dass Sie Stremio genießen und es schon eine Ihrer Lieblings-Apps ist!","WHO_ARE_WE":"Wer sind wir? Wir sind das Team dahinter - zwei Jungs, die jeden Tag seit den letzten 3 Jahren hart arbeiten, um dieses Produkt besser und besser zu machen.","SUPPORT_US":"Wenn Sie Stremio gerne verwenden, wenn Stremio für Sie wertvoll ist - sagen Sie es weiter!","SPREAD_THE_WORD":"Teilen Sie es jetzt mit Ihren Freunden, erzählen Sie Stremio weiter","MORE_PEOPLE":"Je mehr Menschen Stremio benutzen, desto besser wird es!","SEND_A_LINK":"Oder senden Sie einen Link zu unserer Website","TIP_LOCALFILES":"Tipp: Sie können lokale Videodateien per Drag & Drop in Stremio verschieben","ADDON_MY":"Meine Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Offizielle Addons","ADDON_REPOS":"Addon-Repositorien","ADDON_SEARCH":"Addons suchen","ADDON_INSTALL":"Installieren","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Deinstallieren","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installiert","ADDON_INSTALLED_MSG":"Addon installiert!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unbekannt","ADDON_ERR":"Addon-Installationsfehler!","ADDON_DISCONNECTED":"Getrennt","ADDON_APP_MISSING":"die App für diese Quelle ist nicht installiert. Möchten Sie sie jetzt installieren?","ADDON_APP_INSTALL":"Jetzt installieren","ADDON_PAGE":"Addon-Seite","ADDON_TOP_CONTENT":"Bestes aus diesem Addon","ADDON_PROVIDES":"Dieses Addon gibt Ihnen:","ADDON_WATCH":"#{types} jetzt ansehen!","ADDON_WATCH_FREE":"#{types} jetzt KOSTENLOS ansehen!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"Mehr #{types} in Entdecken","ADDON_PROVIDES_STREAMS":"#{types} ansehen","ADDON_PROVIDES_STREAMS_FREE":"#{types} KOSTENLOS ansehen","ADDON_PROVIDES_SUBTITLES":"Untertitel für #{types}","ADDON_CANTDETECT":"Wir konnten kein laufendes Stremio erkennen, deshalb konnten wir nicht erkennen, welche Addons Sie installiert haben.","ERR_NO_META":"Keine Informationen dazu gefunden ","ERR_GETTING_META":"Fehler beim Abrufen von Informationen darüber.","ERR_CANT_PARSE_MAGNET":"Kann Magnet nicht parsen","ERR_NO_MAGNET_INFOHASH":"Kein gültiger Info-Hash für Magnet","ERR_NO_FILE_PATH":"Kann keine Anfrage ohne Pfad zur Datei senden","ERR_NO_TORRENT":"Kein Torrent zurückgegeben","ERR_NO_SUPPORTERD_FILES":"Keine unterstützten Dateien gefunden","ERR_OPENING_FILES":"Externe Dateien konnten nicht geöffnet werden","ERR_INVALID_LINK":"Ungültiger Link","ERR_REGISTERED_ONLY":"Diese Option ist nur für registrierte Benutzer verfügbar.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Weiter ansehen","BOARD_EXPLANATION_RECOMMENDATIONS":"Filme, die speziell für Sie ausgewählt wurden.<br />Dieser Film ist eine Beispielempfehlung.","BOARD_EXPLANATION_EPISODES":"Neue Episoden Ihrer Lieblingsserie kommen hierher.<br />Fügen Sie Serien, denen Sie folgen, zu Ihrer Bibliothek hinzu.","BOARD_EXPLANATION_VIDEOS":"Neue Episoden Ihrer Lieblingskanäle kommen hierher.<br />Fügen Sie YouTube-Kanäle, denen Sie folgen, zu Ihrer Bibliothek hinzu.","WEBSITE_SLOGAN_WATCH":"Sofort ansehen","WEBSITE_SLOGAN_ALL":"Alle Videoinhalte, die Sie an einem Ort genießen","WEBSITE_SLOGAN_NEW":"Alles, was Sie sehen können","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Ansehen von","WEBSITE_DOWNLOAD":"Jetzt herunterladen","WEBSITE_DOWNLOAD_FOR":"Jetzt herunterladen für","WEBSITE_IS_DESKTOP":"Stremio ist eine Desktop-Anwendung, öffnen Sie diese Seite auf Ihrem PC und laden Sie sie herunter","WEBSITE_DESKTOP_DEMO_VID":"Desktop-Demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Funktionen","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technologie","WEBSITE_PAGE_CREATE_ADDON":"Addon erstellen","WEBSITE_PAGE_CONTACTS":"Kontakte","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filme","WEBSITE_TYPE_series_PL":"Serien","WEBSITE_TYPE_tv":"Live-Fernsehen","WEBSITE_TYPE_channel":"Kanäle","WEBSITE_STREMIO_WHAT_IS":"Stremio ist eine App, die Ihnen hilft, Ihre Lieblingsvideos, Filme, Fernsehserien und Fernsehkanäle zu organisieren und sofort anzusehen.","WEBSITE_FEATURES_WATCH":"Sofort in HD ansehen","WEBSITE_FEATURES_WATCH_DETAIL":"Klicken und geben Sie Ihre Lieblingsfilme, Fernsehshows, Videos und Fernsehkanäle wieder.","WEBSITE_FEATURES_SUBS":"Automatische Untertitel","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio holt automatisch synchronisierte Untertitel für Ihre Sprache.","WEBSITE_FEATURES_SUBS_LABEL":"Sie sind dran, Chef.","WEBSITE_FEATURES_CAST":"Auf Fernseher & mobilen Geräten wiedergeben","WEBSITE_FEATURES_CAST_DETAIL":"An AppleTV, Chromecast, Smart TV (DLNA/UPnP) und mobile Geräte übertragen.","WEBSITE_LIB":"Genießen Sie Ihre persönliche synchronisierte Bibliothek auf all Ihren Geräten","WEBSITE_LIB_COLLECT":"Von Stremio sammeln","WEBSITE_LIB_IMPORT":"Von Facebook importieren","WEBSITE_LIB_LOCAL":"Von Ihrer lokaler Festplatte hinzufügen","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Empfohlene Fernsehshow","WEBSITE_BOARD_TRENDING":"Film im Trend","WEBSITE_BOARD_NEW":"Neues Video","WEBSITE_BOARD_EPISODE":"Neue Episode","WEBSITE_BOARD_1":"Suchen Sie etwas Interessantes zum Anschauen? Holen Sie sich Empfehlungen nach Ihrem Geschmack!","WEBSITE_BOARD_2":"Lassen Sie sich benachrichtigen, wenn eine neue Episode Ihrer Lieblingssendung oder Ihres Lieblingskanals auf YouTube veröffentlicht wurde!","WEBSITE_BOARD_YOUTUBE":"Neue Videos von YouTube-Kanälen","WEBSITE_BOARD_EPISODES":"Neue Episoden von Serien, denen Sie folgen","WEBSITE_ADDONS":"Inhalts-Addons","WEBSITE_TECH_DETAIL":"Wir lieben Technologie, wir lieben verrückte Wissenschaft!\\nStremio verwendet die folgenden Open-Source-Technologien:","WEBSITE_TECH_WCJS":"WebChimera.js erlaubt Stremio die Wiedergabe jedes Videoformats mit guter Leistung.","WEBSITE_TECH_WCJS_EXTRA":"Wir sind Kern-Projektbeitragende","WEBSITE_TECH_ELECTRON":"Electron bietet eine innovative Plattform, um Stremio damit zu bauen.","WEBSITE_TECH_ELECTRON_EXTRA":"Wir sind Projektbeitragende","WEBSITE_TECH_LINVODB":"Eine Datenbank-Technologie, die sicherstellt, dass Ihre Daten organisiert und überall verfügbar sind, wo Sie sich anmelden.","WEBSITE_TECH_LINVODB_EXTRA":"Hauseigene Technologie","WEBSITE_CREATE_ADDON":"Erstellen Sie Ihr Addon","WEBSITE_CREATE_ADDON_DETAIL":"Haben Sie einen Dienst, der Videoinhalte anbietet? Wir helfen Ihnen, von den Funktionen von Stremio zu profitieren, indem wir Ihr Addon erstellen.","WEBSITE_CREATE_ADDON_BENEFITS":"Vorteile vom Erstellen eines Addons für Stremio","WEBSITE_P2P_BEAUTY":"Die Schönheit von Peer-to-Peer-Streaming","WEBSITE_P2P_1":"Zuverlässige und erschwingliche Full HD / 4K Video on Demand oder Live-Streaming","WEBSITE_P2P_2":"Verteilungsplattform für großartige Benutzererfahrung","WEBSITE_P2P_3":"Wir erstellen ein Addon, das Ihre genauen Bedürfnisse erfüllt","WEBSITE_P2P_CONTACT":"Interessiert? Sie sind herzlich eingeladen, <a href=\'mailto:office@stremio.com\'>uns zu kontaktieren</a>.","WEBSITE_P2P_CONTACT_EXTRA":"Wir helfen Ihnen gerne bei der Integration Ihrer Inhalte mit Stremio!","WEBSITE_P2P":"Gelegentlich kommt eine Technologie, die den Namen des Spiels ändert. Wir haben viel Zeit und Mühe investiert, unsere Peer-to-Peer (P2P) Video-Streaming-Engine zu bauen, die eine hervorragende Leistung und Vielseitigkeit bietet, um sich jedem Anwendungsfall anzupassen.\\nKontaktieren Sie uns für DRM-fähiges P2P-Abrufvideo oder Live-Streaming.","WEBSITE_THOUGHTS":"Gedanken, die wir teilen:","WEBSITE_SPREAD":"Erzählen Sie über Stremio:","WEBSITE_CONTACT":"Kontaktieren Sie uns, wir freuen uns von Ihnen zu hören!","WEBSITE_OPENSOURCE":"Für unsere Open-Source-Projekte, gehen Sie zu unserem","WEBSITE_BITCOIN":"Bitcoin spenden:","WEBSITE_FAQ":"Häufig gestellte Fragen","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Fragen","WEBSITE_TOS":"Nutzungsbedingungen","WEBSITE_LEGAL":"Rechtlich","WEBSITE_PAGE_ABOUT":"Über","WEBSITE_PAGE_BECOME_PARTNER":"Werden Sie Partner","WEBSITE_ALL_YOU_CAN_WATCH":"Alles, was Sie ansehen können","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Was ist Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Genießen Sie es auf all Ihren Mediengeräten.","WEBSITE_DEVICES_COLLECT":"Von Stremio abholen","WEBSITE_DEVICES_IMPORT_FB":"Von Facebook importieren","WEBSITE_DEVICES_LOCAL":"Von lokalem Laufwerk hinzufügen","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"Wie gesehen am","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Über uns","WEBSITE_LINK_TECHNOLOGY":"Technologie","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"Mehr","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Beitragen","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & Mehr","WEBSITE_LINK_HELP":"Hilfezentrum","WEBSITE_LINK_CONTACTS":"Kontaktieren Sie uns","WEBSITE_LINK_TOS":"Geschäftsbedingungen","WEBSITE_LINK_PRAVACY":"Datenschutzerklärung","WEBSITE_SUBSCRIBE":"Abonnieren","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Ihre E-Mail","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Datenschutz & Rechtliches","WEBSITE_WHY":"Warum wir es tun","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Merkmale","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio für Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio für macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio für Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio für Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio für iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Beitragen","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Stremio übersetzen","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Inoffiziell","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Kontaktieren Sie uns","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Bitte geben Sie eine gültige E-Mail-Adresse ein!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Worauf bezieht sich Ihre Frage?","WEBSITE_CONTACT_US_Q_OS":"Was ist Ihr Betriebssystem?","WEBSITE_CONTACT_US_PH_EMAIL":"Ihre E-Mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Nachricht","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SENDEN","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technologie","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"oder","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Stremio übersetzen","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Helfen Sie uns, mehr über Sie zu erfahren.","LIFESTYLE":"Lebensstil","SPORTS":"Sport","FOOD_HEALTH":"Essen & Gesundheit","BEAUTY_FASHION":"Schönheit & Mode","NEWS":"Nachrichten","GAMING":"Spielen","SCIENCE_EDUCATION":"Wissenschaft & Bildung","MUSIC":"Musik","TRAVEL":"Reise","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Kino","CONTINUE":"Fortsetzen","SLOW_LOADING":"LANGSAMES LADEN?","I_GIVE_UP":"ICH GEBE AUF","LEARN_MORE":"Erfahren Sie mehr","POOR_SOURCE":"Diese Quelle ist schlecht verfügbar oder Ihre Internetverbindung ist nicht schnell genug","PICK_CATEGORIES_ERR":"Sie müssen mindestens 3 Kategorien auswählen","ADJUST_TIMING":"zeitliche Abstimmung anpassen mit ","ADJUST_SIZE":"Größe anpassen mit ","SEARCH_ANYTHING":"Sie können alles suchen...","ALL_CATEGORIES":"Alle","SEARCH_CATEGORIES":"Filme, Serien, YouTube & Fernsehen","SEARCH_PERSONS":"Schauspieler, Regisseure und Autoren","SEARCH_PROTOCOLS":"HTTP- & Magnet-Links","SEARCH_TYPES":"IMDB- / TVDB-Links","WATCHED":"Angesehen","SHOW_LESS":"Weniger anzeigen","LAST_SEARCHES":"Letzte Suchanfragen","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"WÄHLEN SIE VON DIESEN AUS:","NO_WEB_REMOTE":"Web-Fernbedienung konnte nicht geladen werden","STREMIO_OFFLINE":"Stremio ist offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warnung","MORE_INFO":"Weitere Informationen ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Wird geladen ...","STREMIO_TV_BACK_TO_LANGUAGES":"Zurück zu den Sprachen","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Das Stremio-Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi-Einrichtung","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Verbinden mit:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Passwort verwenden:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Größe anpassen","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Wiederholen","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"Was ist Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},5158:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Ταινία","TYPE_series":"Σειρά","TYPE_tv":"Τηλ. κανάλι","TYPE_channel":"Κανάλι","TYPE_other":"Άλλο","TYPE_movie_PL":"Ταινίες","TYPE_series_PL":"Σειρές","TYPE_tv_PL":"Τηλ. κανάλια","TYPE_channel_PL":"Κανάλια","TYPE_other_PL":"Άλλα","TYPE_ALL":"Όλα","VIDEO":"Βίντεο","BACK":"Πίσω","MORE":"Περισσότερα","DONE":"Τέλος","COPY":"Αντιγραφή","SUCCESS":"Επιτυχία","ERROR":"Υπήρξε πρόβλημα","SETTINGS_CASTING_MODE_PICKER":"Τύπος αναπαραγωγής","CASTING_MODE_HLSV2":"Προεπιλογή","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Χωρίς διακωδικοποίηση","Discover":"Ανακάλυψη","Board":"Πίνακας","Library":"Βιβλιοθήκη","My Library":"Η βιβλιοθήκη μου","Calendar":"Ημερολόγιο","NOTIFICATION_ONLINE":"Είστε σε σύνδεση","NOTIFICATION_OFFLINE":"Είστε εκτός σύνδεσης","INTERNET_CONNECTION":"Σύνδεση δικτύου","STORAGE_FULL_TITLE":"Προειδοποίηση: Πλήρης αποθηκευτικός χώρος!","STORAGE_FULL_TEXT":"Το Stremio δεν θα μπορεί να αποθηκεύει τις ρυθμίσεις, τις προτιμήσεις ή τα στοιχεία σύνδεσής σας. Δοκιμάστε να κάνετε εκ νέου εκκίνηση ή εγκατάσταση του Stremio.","SEARCH":"Αναζήτηση","SEARCH_NO_RESULTS":"Δεν βρέθηκαν αποτελέσματα","SEARCH_EXPLANATION_CONTENT":"Αναζήτηση ταινιών, σειρών, καναλιών τηλεόρασης και YouTube","SEARCH_EXPLANATION_PEOPLE":"Αναζήτηση ηθοποιών, σκηνοθετών και σεναριογράφων","SEARCH_PASTE_LINKS":"Επικόλληση συνδέσμων HTTP και magnet","SEARCH_OR_PASTE_LINK":"Αναζητήστε ή επικολλήστε σύνδεσμο","ADD_TO_LIB":"Εισαγωγή στη βιβλιοθήκη","REMOVE_FROM_LIB":"Αφαίρεση από τη βιβλιοθήκη","ADDED_TO_LIB":"Προστέθηκε στη βιβλιοθήκη","REMOVED_FROM_LIB":"Αφαιρέθηκε από τη βιβλιοθήκη","TRAILER":"Τρέιλερ","WATCH_TRAILER":"Προβολή τρέιλερ","WATCH_NOW":"Προβολή τώρα","SHOW":"Εμφάνιση","SHOW_MOVIE":"Εμφάνιση ταινίας","WATCH_RANDOM":"Τυχαία προβολή","IMDB_RATING":"Στο IMDb","YEAR":"Έτος","DIRECTOR":"Σκηνοθεσία","WRITER":"Σενάριο","LEAD_ACTORS":"Πρωταγωνιστές","CAST":"Ηθοποιοί","CREW":"Συντελεστές","SHOW_MORE_CAST":"Περισσότερα »","AIRED":"Μετάδοση","SEASONS":"Κύκλοι","GENRE":"Είδος","CATALOG":"Κατάλογος","SUMMARY":"Περίληψη","SHOW_MORE":"Περισσότερα","SIMILAR":"Παρόμοια","UPCOMING":"Επερχόμενα","ENDED":"Τέλος","DURATION":"Διάρκεια","FEATURED":"Προτεινόμενα","METADATA":"Μεταδεδομένα","CATEGORY":"Κατηγορία","LINKS_GENRES":"Είδη","LINKS_CAST":"Καστ","LINKS_DIRECTORS":"Σκηνοθέτες","SEARCH_VIDEOS":"Αναζήτηση βίντεο","SEARCH_PLACEHOLDER":"Αναζήτηση ή επικόλληση URL","ADDON":"Πρόσθετο","ADDONS":"Πρόσθετα","OFFICIAL":"Επίσημο","ADDONS_OFFICIAL":"Επίσημα πρόσθετα του Stremio","ADDONS_POPULAR":"Δημοφιλή στην περιοχή σας","ADDON_FREE":"Δωρεάν","ADDON_PEERED":"Σε peers","ADDON_SUBSCRIPTION":"Συνδρομή","ADDON_STREAM_GEORESTRICTED":"Δεν διατίθεται στην περιοχή σας","ADDON_STREAM_OFFLINECACHE":"Προσωρινή μνήμη εκτός σύνδεσης","ADDON_STREAM_LOCALFILE":"Τοπικό αρχείο","SHARE_ADDON":"Κοινοποίηση προσθέτου","AVAILABLE_STREAMS":"Διαθέσιμες ροές","NO_STREAM":"Δεν βρέθηκαν ροές","ALL_ADDONS":"Όλα τα","INSTALL_MORE_ADDONS":"Για περισσότερες ροές, παρακαλώ εγκαταστήστε περισσότερα πρόσθετα","STREAM_NOT_SUPPORTED":"Η επιλεγμένη ροή δεν υποστηρίζεται σε αυτήν την πλατφόρμα.","ADDON_CATALOGUE":"Εμφάνιση όλων των προσθέτων »","ADDON_CATALOGUE_MORE":"Εγκατάσταση προσθέτων","REPO_ADDED":"Το αποθετήριο προστέθηκε","ADDON_REPO_EXIST_ERR":"Αυτή η συλλογή προσθέτων υπάρχει ήδη","ADDON_REPO_ERR":"Προέκυψε σφάλμα κατά την προσθήκη της συλλογής","ADDON_ADD_ERR":"Προέκυψε σφάλμα κατά την προσθήκη του προσθέτου","ERR_ADDON_PROTECTED":"Δεν είναι δυνατή η αφαίρεση του προσθέτου, είναι προστατευόμενο","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Κάτι πήγε στραβά - η ταυτοποίηση ενδέχεται να απέτυχε","ERR_NOT_COLLECTION_URL":"Δεν είναι URL συλλογής","ERR_NOT_ADDON_URL":"Δεν είναι έγκυρο URL προσθέτου","ERR_DETECTFROMURL":"Δεν είναι δυνατή η εύρεση του προσθέτου/συλλογής από αυτό το URL","ADDON_DUPLICATE_WARNING":"Προειδοποίηση: Διπλότυπο πρόσθετο","ADDON_COLLECTION_SET_FAILED":"Αποτυχία συγχρονισμού εγκατεστημένων προσθέτων στον λογαριασμό σας","SETTINGS_DATA_EXPORT":"Εξαγωγή δεδομένων χρήστη","ADDON_PULL_FAILED":"Αποτυχία συγχρονισμού εγκατεστημένων προσθέτων από τον λογαριασμό σας","REFRESH_ON_CLICK":"Κάντε κλικ για επανάληψη","STILL_IN_THEATER":"Ακόμη στις αίθουσες","WATCH_IN_CINEMA":"Δείτε το στον τοπικό σας κινηματογράφο","IN_THEATER":"Στις αίθουσες","GET_TICKETS":"Εισιτήρια","UPCOMING_EPISODE":"Επερχόμενο επεισόδιο","UPCOMING_EPISODE_MESSAGE":"Αυτό το επεισόδιο θα προβληθεί σε","MISSING_DATE_EPISODE":"Απουσία ημερομηνίας","MISSING_DATE_EPISODE_MESSAGE":"Αυτό το επεισόδιο ενδέχεται να μην έχει προβληθεί ακόμα","CHANNEL_NOT_SCRAPED":"Δεν έχει γίνει ακόμα συλλογή δεδομένων για αυτό το κανάλι.<br>Παρακαλώ επιστρέψτε σε λίγα λεπτά.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Προσθέστε το στη βιβλιοθήκη σας για να ειδοποιηθείτε μόλις γίνει διαθέσιμο.","GET_NOTIFIED_WHEN_AVAILABLE":"Θα ειδοποιηθείτε μόλις γίνει διαθέσιμο.","WARNING_STREAMING_SERVER":"Προειδοποίηση: Δεν βρέθηκε τοπική υπηρεσία ροής. Η ροή από τοπικά αρχεία, YouTube και BitTorrent δεν θα είναι διαθέσιμη.","WARNING_STREAMING_SERVER_DISMISS":"Αγνόηση","WARNING_STREAMING_SERVER_LATER":"Αργότερα","DECODER_WARNING":"Προειδοποίηση: Αυτό το βίντεο ενδέχεται να μην υποστηρίζεται από το υλικό σας. Λάβετε υπόψη ότι η αναπαραγωγή μπορεί να είναι αργή.","PLAYER_ERROR":"Ωχ, σφάλμα αναπαραγωγής","PLAYER_ERROR_LOOKSLIKE":"Φαίνεται ότι","PLAYER_ORIENTATION":"Προσανατολισμός αναπαραγωγής","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Κλειδωμένος","PLAYER_ORIENTATION_SENSOR_SHORT":"Αισθητήρας","PLAYER_ORIENTATION_LANDSCAPE":"Ο προσανατολισμός αναπαραγωγής κλείδωσε στην οριζόντια θέση","PLAYER_ORIENTATION_SENSOR":"Αυτόματος προσανατολισμός αναπαραγωγής (αισθητήρας)","PLAYER_PLAYBACK_SPEED":"Ταχύτητα αναπαραγωγής","PLAYER_PLAYBACK_ERROR":"Σφάλμα αναπαραγωγής, παρακαλώ δοκιμάστε ξανά","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Άγνωστο σφάλμα","PLAYER_PLAYBACK_ERROR_DEFAULT":"Δυστυχώς, αυτό το βίντεο δεν μπορεί να αναπαραχθεί από το {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Γλώσσα υποτίτλων","PLAYER_SUBTITLES_VARIANTS":"Παραλλαγές υποτίτλων","PLAYER_SUBTITLES_SETTINGS":"Ρυθμίσεις υποτίτλων","PLAYER_SUBTITLES_DISABLED":"Οι υπότιτλοι είναι απενεργοποιημένοι","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Ύψος υποτίτλων","PLAYER_SUBTITLES_LOADED":"Οι υπότιτλοι φόρτωσαν","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Οι ενσωματωμένοι υπότιτλοι φόρτωσαν","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Οι ειδικοί υπότιτλοι φόρτωσαν","PLAYER_SUBTITLES_LOADED_ORIGIN":"Οι υπότιτλοι από το {{origin}} φόρτωσαν","PLAYER_PLAY":"Αναπαραγωγή","PLAYER_PAUSE":"Παύση","PLAYER_NEXT_VIDEO":"Επόμενο βίντεο","PLAYER_MUTE":"Σίγαση","PLAYER_UNMUTE":"Κατάργηση σίγασης","PLAYER_OPEN_IN_EXTERNAL":"Άνοιγμα σε εξωτερικό πρόγραμμα αναπαραγωγής","PLAYER_PLAY_IN":"Αναπαραγωγή στο {{device}}","PLAYER_LIVE":"Ζωντανά","PLAYER_NEXT_VIDEO_TITLE":"Επόμενο βίντεο","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Απόρριψη","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Προβολή τώρα","PLAYER_COPY_STREAM_SUCCESS":"Ο σύνδεσμος ροής αντιγράφηκε στο πρόχειρο","PLAYER_COPY_STREAM_ERROR":"Σφάλμα αντιγραφής συνδέσμου ροής","STREAMING_FROM":"Ροή από","CASTING_TO":"Μετάδοση σε","NETWORK_STATUS":"Κατάσταση δικτύου","STREAM_SPEED":"Ταχύτητα ροής:","STREAM_BUFFERED":"Ενδιάμεση μνήμη:","PEERS_INFO":"Πληροφορίες peers","PEERS_ACTIVE":"Ενεργοί:","PEERS_CONNECTED":"Σε σύνδεση:","PEERS_WAITING":"Αναμονή:","TRANSCODING_WARNING":"Προειδοποίηση: Αλλαγή κωδικοποίησης βίντεο.","STREAM_LOADING":"Φόρτωση...","PLAYING_LOCAL":"Αναπαραγωγή από τοπικό αρχείο","PLAYING_CACHE":"Αναπαραγωγή από προσωρινή μνήμη","WRONG_SUBS":"Εσφαλμένοι υπότιτλοι;","ERR_SUBS_LOADING_TITLE":"Σφάλμα φόρτωσης υποτίτλων","ERR_SUBS_LOADING":"Αποτυχία φόρτωσης υποτίτλων: ενδέχεται να υπάρχει πρόβλημα με το πρόσθετό σας ή τη σύνδεση δικτύου σας","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Τα ακόλουθα πρόσθετα υποτίτλων απέτυχαν","ERR_CASTING_UPDATE_TITLE":"Δεν ήταν δυνατή η ενημέρωση των πληροφοριών της συσκευής μετάδοσης: ο διακομιστής ροής ενδέχεται να είναι εκτός σύνδεσης","CHOOSE_DEVICE":"Επιλέξτε συσκευή για παρακολούθηση","NO_CAST_DEVICES":"Δεν διατίθενται συσκευές μετάδοσης.","NO_SETTINGS":"Καμία διαθέσιμη ρύθμιση.","PHONE_TABLET":"Τηλέφωνο/Tablet","SUBTITLES":"Υπότιτλοι","SUBTITLES_CHANGE":"Αλλαγή υποτίτλων για ","SUBTITLES_CHANGE_NONE":"Δυστυχώς, δεν υπάρχουν άλλοι υπότιτλοι για αυτήν τη γλώσσα.","SUBTITLES_CHANGE_ACIVE":"Αυτήν τη στιγμή, είναι ενεργοί οι υπότιτλοι #{{subtitlesDialog.activeIdx + 1}}. Κάντε κλικ στο «Συνέχεια» για να ενεργοποιήσετε τους υπότιτλους #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Εναλλακτικά,","SUBTITLES_ADJUST_DELAY":"Προσαρμογή καθυστέρησης υποτίτλων:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Ή χρησιμοποιήστε τα πλήκτρα <span>G</span> / <span>H</span> κατά την αναπαραγωγή.","SUBTITLES_ADJUST_DELAY_TIP":"ΣΥΜΒΟΥΛΗ: Μπορείτε να χρησιμοποιήσετε τα πλήκτρα <span>G</span> / <span>H</span> κατά την αναπαραγωγή.","SUBTITLES_DELAY":"Καθυστέρηση υποτίτλων:","SUBTITLES_LOADING":"Φόρτωση υποτίτλων...","SUBTITLES_UNAVAILABLE":"Δεν διατίθενται εξωτερικοί υπότιτλοι","SUBTITLES_DISABLED":"Ανενεργοί","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Ήχος","DEFAULT_LANGUAGE":"Προεπιλεγμένη γλώσσα","DEFAULT_SECONDARY_LANGUAGE":"Δευτερεύουσα προεπιλεγμένη γλώσσα","SEASON":"Κύκλος","EPISODE":"Επεισόδιο","SPECIAL":"Σπέσιαλ","SORT":"Ταξινόμηση","SORT_BY":"Ταξινόμηση κατά","FILTER":"Φιλτράρισμα","SORT_TRENDING":"Τάσεις","SORT_RECENT":"Πρόσφατα","SORT_ALPHABET":"Α-Ω","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"Βαθμολογία","SORT_WATCHED":"Ποβολή","SORT_YEAR":"Έτος","SELECT_TYPE":"Επιλέξτε τύπο","SELECT_SORT":"Ταξινόμηση κατά","SELECT_CATALOG":"Επιλέξτε κατάλογο","SELECT_GENRE":"Επιλέξτε τύπο","SORT_LASTWATCHED":"Από τη τελευταία προβολή","SORT_NAME":"Από το όνομα","SORT_TIMESWATCHED":"Από τον αριθμό αναπαραγωγών","New for You":"Νέα για εσάς","New Episodes":"Νέα επεισόδια","New Videos":"Νέα βίντεο","Recommendations":"Προτάσεις","LIBRARY_RESUME":"Συνέχιση","LIBRARY_PLAY":"Αναπαραγωγή","LIBRARY_DETAILS":"Λεπτομέρειες","LIBRARY_RESUME_DISMISS":"Απόρριψη","LIBRARY_CLEAR_PROGRESS":"Κατάργηση προόδου","LIBRARY_REMOVE":"Αφαίρεση","LIBRARY_NOT_LOGGED_IN":"Μόνο οι χρήστες που έχουν λογαριασμό στο Stremio έχουν πρόσβαση στη βιβλιοθήκη","CALENDAR_NOT_LOGGED_IN":"Μόνο οι χρήστες που έχουν λογαριασμό στο Stremio έχουν πρόσβαση στο ημερολόγιο","NOT_LOGGED_IN_CLOUD":"Δείτε τις αγαπημένες σας ταινίες και σειρές οπουδήποτε, οποιαδήποτε στιγμή.","NOT_LOGGED_IN_RECOMMENDATIONS":"Προτάσεις προσαρμοσμένες στο ιστορικό παρακολούθησής σας","NOT_LOGGED_IN_NOTIFICATIONS":"Μη ξαναχάσετε κανένα επεισόδιο","NOT_LOGGED_IN_CALENDAR":"Προσαρμόστε και προγραμματίστε το προσωπικό σας ημερολόγιο παρακολούθησης","DISCOVER_FEATURED":"Προτεινόμενα","DISCOVER_TOP":"Κορυφαία","DISCOVER_OSCAR":"Νικητές Όσκαρ","DISCOVER_WARNING_TITLE":"Ωχ!","DISCOVER_EMPTY_CATALOG":"Αυτό το πρόσθετο επέστρεψε κενό περιεχόμενο.","DISCOVER_ADULT_WARNING":"Το περιεχόμενο είναι ορατό μόνο για ενήλικες. Είστε 18+;","DISCOVER_NOADDON_WARNING":"Προειδοποίηση: Δεν υπάρχει ενεργό πρόσθετο στο Stremio για αυτόν τον τύπο. Εμφανίζονται αποθηκευμένα στοιχεία, δεν θα ενημερωθεί τίποτα εδώ.","DISCOVER_LOAD_ERR":"Το περιεχόμενο δεν φορτώθηκε, προέκυψε σφάλμα.","DISCOVER_ADDON_UNINSTALLED":"Αυτό το περιεχόμενο δεν είναι πλέον διαθέσιμο, ενδέχεται να έχετε αφαιρέσει το πρόσθετο.","UNINSTALL_THIS_ADDON":"Αφαίρεση προσθέτου","ERR_ADDON_NOT_INSTALLED":"Αυτό το πρόσθετο δεν έχει εγκατασταθεί. Να γίνει εγκατάσταση;","DETAIL_RECEIVE_NOTIF_SERIES":"Λήψη ειδοποιήσεων για νέα επεισόδια","DETAIL_RECEIVE_NOTIF_VIDEOS":"Λήψη ειδοποιήσεων για νέα βίντεο","SIDEBAR_SHOW_STREAMS":"Εμφάνιση ροών","RELAUNCH":"Κάντε επανεκκίνηση τώρα!","UPGRADE":"Υπάρχει νέα διαθέσιμη έκδοση! Αναβαθμίστε στην πιο πρόσφατη έκδοση του Stremio","RELOAD_UI":"Ανανεώστε το περιβάλλον χρήστη","MANUAL_UPDATE_TITLE":"Ενημερώστε την έκδοση του Stremio σας","MANUAL_UPDATE_LINE1":"Χρησιμοποιείτε μια παρωχημένη έκδοση του Stremio, κάτι που δεν προτείνεται.","MANUAL_UPDATE_LINE2":"Παρακαλώ κάντε ενημέρωση το συντομότερο δυνατόν.","BUTTON_UPDATE_LATTER":"Όχι τώρα","BUTTON_UPDATE_NOW":"Ενημέρωση","ANONYMOUS_USER":"Ανώνυμος χρήστης","DONT_HAVE_ACC":"Δεν έχετε λογαριασμό;","HAVE_ACC":"Έχετε ήδη λογαριασμό;","PASSWORD":"Κωδικός πρόσβασης","PASSWORD_CONFIRM":"Επιβεβαίωση κωδικού πρόσβασης","EMAIL":"Email","FB_LOGIN":"Συνέχεια με Facebook","FB_NOTHINGSHARED":"Δεν κοινοποιούμε τίποτα χωρίς την άδειά σας","FB_NOPOST":"Δεν θα δημοσιεύσουμε τίποτα εκ μέρους σας","OR":"ή","I_ACCEPT":"Αποδοχή","I_ACCEPT_BY_CLICKING":"Κάνοντας κλικ στο παραπάνω κουμπί, δηλώνω την αποδοχή ","TOS":"Όροι και Προϋποθέσεις","MUST_ACCEPT_TERMS":"Πρέπει να αποδεχθείτε τους όρους","PASSWORDS_NOMATCH":"Οι κωδικοί πρόσβασης δεν ταιριάζουν","SIGN_UP":"Εγγραφή","SIGN_UP_EMAIL":"Εγγραφή με email","CLICK_TO_SIGN_UP":"Κάντε κλικ εδώ για να εγγραφείτε.","LOG_IN":"Σύνδεση","LOG_OUT":"Αποσύνδεση","EXIT_FULLSCREEN":"Έξοδος από πλήρη οθόνη","ENTER_FULLSCREEN":"Είσοδος σε πλήρη οθόνη","PLAY_URL_MAGNET_LINK":"Αναπαραγωγή URL/συνδέσμου magnet","HELP_FEEDBACK":"Βοήθεια & σχόλια","TERMS_OF_SERVICE":"Όροι υπηρεσίας","PRIVACY_POLICY":"Πολιτική Απορρήτου","ABOUT_STREMIO":"Σχετικά με το Stremio","USER_PANEL":"Πίνακας χρήστη","LOGIN_LABEL":"Σύνδεση","GUEST_LOGIN":"Σύνδεση επισκέπτη","GUEST_LOGIN_NOTICE":"Δεν προτείνεται η σύνδεση επισκέπτη. Η κανονική σύνδεση επιτρέπει στο Stremio να συγχρονίζει τη βιβλιοθήκη σας και να σας στέλνει ειδοποιήσεις για αγαπημένες σειρές/κανάλια. Θέλετε σίγουρα να συνεχίσετε;","GUEST_LOGIN_NOTICE_2":"Δεν προτείνεται η σύνδεση επισκέπτη - δεν θα συγχρονίζεται η βιβλιοθήκη και οι ειδοποιήσεις πίνακα, που είναι βασικές λειτουργίες του Stremio. Θέλετε σίγουρα να συνεχίσετε;","CLICK_HERE":"Κάντε κλικ εδώ","WRONG_PASSWORD":"Εσφαλμένο email ή κωδικός πρόσβασης. Σε περίπτωση που έχετε ξεχάσει τον κωδικό πρόσβασής σας, ","SET_A_PASS":"Ορισμός κωδικού πρόσβασης","RESET_PASSWORD":"Επαναφορά κωδικού πρόσβασης","FORGOT_PASSWORD":"Ξεχάσατε τον κωδικό πρόσβασής σας;","EMAIL_USED_WITH_FB":"Αυτό το email χρησιμοποιήθηκε με σύνδεση Facebook.","INVALID_EMAIL":"Παρακαλώ εισαγάγετε μια έγκυρη διεύθυνση email","INVALID_PASSWORD":"Παρακαλώ εισαγάγετε έναν έγκυρο κωδικό πρόσβασης","CONN_ERR":"Σφάλμα σύνδεσης - παρακαλώ δοκιμάστε ξανά αργότερα.\\n\\nΑν επιμένει, απενεργοποιήστε το λογισμικό προστασίας από ιούς ή το τείχος προστασίας (ειδικά το Bitdefender).","IMPORT_FROM_GUEST":"Εισαγωγή βιβλιοθήκης από λογαριασμό επισκέπτη","RECEIVE_UPDATES_EMAIL":"Λήψη ενημερώσεων από το Stremio στο email σας","LOGIN_FAILED":"Αποτυχία σύνδεσης.","SIGNUP_FAILED":"Αποτυχία εγγραφής.","SEARCH_FAILED":"Αποτυχία αναζήτησης","EMAIL_USED":"Αυτό το email χρησιμοποιείται ήδη.","WAITING_FB_LOGIN":"Σύνδεση μέσω Facebook...","EXTERNAL_PLAYER_TITLE":"Αναπαραγωγή σε εξωτερικό πρόγραμμα","EXTERNAL_REMEMBER_PLAYER":"Θέλετε να αποθηκεύσετε την επιλογή σας;","EXTERNAL_ALWAYS_PLAY":"Ναι","EXTERNAL_ONLY_ONCE":"Όχι","BEST_FIT":"Βέλτιστη προσαρμογή","FIT_SCREEN":"Προσαρμογή στην οθόνη","FILL":"Γέμισμα","16:9":"16:9","4:3":"4:3","Original":"Αρχικό","INTRO_TASTE":"Πείτε μας τι σας αρέσει","INTRO_TASTE_LONG":"Πείτε μας τι θα θέλατε να δείτε","INTRO_TASTE_PICK":"Επιλέξτε {{interestsRemaining}} ενδιαφέροντα","INTRO_TASTE_PICK_MORE":"Επιλέξτε {{interestsRemaining}} κι άλλα ενδιαφέροντα","INTRO_TASTE_HELP_US":"Βοηθήστε μας να μάθουμε περισσότερα για εσάς.","INTRO_TASTE_CHOOSE_THESE":"Επιλέξτε κάποια από αυτά:","INTRO_TASTE_CHOOSE_MIN":"Επιλέξτε τουλάχιστον 3 κατηγορίες","INTRO_TASTE_CHOOSE_MIN_ERR":"Πρέπει να επιλέξετε τουλάχιστον 3 κατηγορίες!","INTRO_TASTE_LIFESTYLE":"Τρόπος ζωής","INTRO_TASTE_SPORTS":"Αθλήματα","INTRO_TASTE_FOOD_HEALTH":"Φαγητό & υγεία","INTRO_TASTE_BEAUTY_FASHION":"Ομορφιά & μόδα","INTRO_TASTE_NEWS":"Ειδήσεις","INTRO_TASTE_GAMING":"Παιχνίδια","INTRO_TASTE_SCIENCE_EDU":"Επιστήμη & εκπαίδευση","INTRO_TASTE_MUSIC":"Μουσική","INTRO_TASTE_TRAVEL":"Ταξίδια","INTRO_TASTE_LATE_NIGHT":"Βραδινό","INTRO_TASTE_REALITY":"Ριάλιτι","INTRO_TASTE_COMEDY":"Κωμωδία","INTRO_TASTE_DIY":"Κατασκευές","INTRO_TASTE_TECH":"Τεχνολογία","INTRO_TASTE_CINEMA":"Κινηματογράφος","ADDON_NOT_SUPPORTED":"Το επιλεγμένο πρόσθετο δεν υποστηρίζεται σε αυτήν την πλατφόρμα.","ADDON_DISCLAIMER":"Η χρήση τρίτων προσθέτων θα υπόκειται πάντα στη δική σας ευθύνη και την ισχύουσα νομοθεσία της χώρας σας.","ADDON_ACTIVATE":"Ενεργοποίηση προσθέτου;","ADDON_REPO_ADD":"URL συλλογής προσθέτων","ADDON_ADD":"Προσθήκη","ADD_ADDON":"Προσθέστε πρόσθετο","ADD_ADDON_DESCRIPTION":"Μπορείτε να προσθέσετε ένα πρόσθετο μέσω ενός εξωτερικού συνδέσμου, ο οποίος θα εμφανίζεται στην ενότητα Εγκατεστημένα πρόσθετα.","PASTE_ADDON_URL":"Επικόλληση URL προσθέτου","WHATS_NEW":"Τι νέο υπάρχει","BUTTON_CONTINUE":"Συνέχεια","BUTTON_ACTIVATE":"Ενεργοποίηση","BUTTON_ACTIVATED":"Ενεργό","BUTTON_CANCEL":"Ακύρωση","BUTTON_SUBMIT":"Υποβολή","BUTTON_DISMISS_ALL":"Απόρριψη όλων","BUTTON_VIEW_ALL":"Προβολή όλων","BUTTON_SEE_ALL":"Δείτε όλες τις επιλογές","BUTTON_COLOR_TRANSPARENT":"Διαφάνεια","OPEN_IN_BROWSER":"Άνοιγμα σε πρόγραμμα περιήγησης","LIB_EMPTY":"Η βιβλιοθήκη σας είναι κενή. Ανακαλύψτε πόσο χρήσιμη είναι :) ","HOW_START":"Δείτε από πού μπορείτε να ξεκινήσετε:","LIB_EMPTY_CAL":"Το ημερολόγιό σας εμφανίζει σειρές στη βιβλιοθήκη σας.","HOW_START_CAL":"Δείτε πώς μπορείτε να προσθέσετε σειρές:","LIB_EMPTY_BOARD":"Ο πίνακας εμφανίζει ειδοποιήσεις & προτάσεις σχετικές με τη βιβλιοθήκη σας.","HOW_START_BOARD_WAIT":"Παρακαλούμε προσθέστε μερικές σειρές ή κανάλια στη βιβλιοθήκη σας και δώστε μας λίγα λεπτά για να τα επεξεργαστούμε :)","HOW_START_BOARD":"Δείτε πώς μπορείτε να προσθέσετε σειρές & ταινίες:","IMPORT_FB":"Εισαγωγή αγαπημένων από το <span>Facebook</span>","IMPORT_TRAKT":"Εισαγωγή βιβλιοθήκης πολυμέσων από το <span>Trakt</span>","IMPORT_DISCOVER":"Εύρεση ενδιαφέροντος περιεχομένου από την <span>Ανακάλυψη</span>","IMPORT_DISK":"Εισαγωγή ταινιών ή εκπομπών από τον <span>τοπικό σας δίσκο</span>","PLEASE_CREATE_ACC":"Παρακαλώ <u>δημιουργήστε έναν λογαριασμό</u> για να ενεργοποιήσετε τον συγχρονισμό βιβλιοθήκης & πίνακα.","IMPORT_DISCOVER_SIGNUP":"Εγγραφείτε και βρείτε ενδιαφέρον περιεχόμενο από την <span>Ανακάλυψη</span>","IMPORT_DISK_SIGNUP":"Εγγραφείτε και εισαγάγετε ταινίες ή εκπομπές από τον <span>τοπικό σας δίσκο</span>","LIB_EMPTY_CLOUD":"Συγχρονισμός","LIB_EMPTY_CLOUD_DESC":"Συγχρονισμός προσωπικής βιβλιοθήκης cloud σε κάθε συσκευή","LIB_EMPTY_EARLY":"Πρόωρη άφιξη","LIB_EMPTY_EARLY_DESC":"Λήψη ειδοποιήσεων για νέα επεισόδια","LIB_EMPTY_PERSONAL":"Εξατομίκευση","LIB_EMPTY_PERSONAL_DESC":"Λήψη εξατομικευμένων προτάσεων","LIB_EMPTY_CALENDAR_DESC":"Διαχειριστείτε το προσωπικό σας ημερολόγιο παρακολούθησης","LIB_EMPTY_ALL":"Εγγραφείτε για να έχετε όλα τα ακόλουθα:","LIB_EMPTY_BEST":"Εγγραφείτε για να αξιοποιήσετε το Stremio στο έπακρο","LIB_EMPTY_OTHER":"Εγγραφείτε για να ενεργοποιήσετε το Ημερολόγιο και άλλες λειτουργίες","CALENDAR_ADDED":"Το ημερολόγιο του Stremio έχει προστεθεί στο προεπιλεγμένο ημερολόγιο του υπολογιστή σας.","CALENDAR_ADDED_MSG":"Αν δεν λειτουργήσει αυτό, παρακαλώ προσθέστε χειροκίνητα αυτό το URL της εφαρμογής ημερολογίου σας","TRAKT_EXPIRED":"Η ταυτοποίηση στο Trakt έληξε, παρακαλώ μεταβείτε στις Ρυθμίσεις και κάντε ξανά έλεγχο ταυτότητας","TRAKT_REQUIRES_LOGIN":"Σφάλμα Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Πρέπει να κάνετε σύνδεση","SETTINGS_LABEL":"Ρυθμίσεις","SETTINGS_NAV_GENERAL":"Γενικά","SETTINGS_NAV_PLAYER":"Αναπαραγωγή","SETTINGS_NAV_STREAMING":"Ροή","SETTINGS_NAV_SHORTCUTS":"Συντομεύσεις","SETTINGS_SHORTCUT_RELOAD_APP":"Επαναφόρτωση εφαρμογής","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Άνοιγμα ρυθμίσεων","SETTINGS_SHORTCUT_SWITCH_TABS":"Αλλαγή σελίδας","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Εναλλαγή καρτελών προς τα εμπρός","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Εναλλαγή καρτελών προς τα πίσω","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Πλοήγηση ανάμεσα στα μενού","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Πηγαίντε στην αναζήτηση","SETTINGS_SHORTCUT_EXIT_BACK":"Έξοδος / Πίσω","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Ταχύτητα αναπαραγωγής","SETTINGS_SHORTCUT_MENU_VIDEOS":"Μενού βίντεο","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Μενού ρυθμίσεων υποτίτλων","SETTINGS_SHORTCUT_MENU_INFO":"Μενού πληροφοριών","SETTINGS_SHORTCUT_FULLSCREEN":"Λειτουργεία πλήρους οθόνης","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Εμφάνιση στοιχείων ελέγχου","SETTINGS_SHORTCUT_PLAY_PAUSE":"Αναπαραγωγή / Παύση","SETTINGS_SHORTCUT_VOLUME_UP":"Ανοίξτε τη φωνή","SETTINGS_SHORTCUT_VOLUME_DOWN":"Κλεσίτε τη φωνή","SETTINGS_SHORTCUT_SEEK_NEXT":"Πηγαίντε στο επόμενο επεισόδιο","SETTINGS_SHORTCUT_SEEK_PREV":"Πηγαίντε στο προηγούμενο επεισόδιο","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Πηγαίνετε προς τα πίσω κατά 10 δευτερόλεπτα","SETTINGS_SHORTCUT_SEEK_FORWARD":"Παράκαμψη 10 δευτερολέπτων","SETTINGS_SHORTCUT_PLAY_NEXT":"Επόμενο","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Αυξήστε το μέγεθος των υποτίτλων","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Μειώστε το μέγεθος των υποτίτλων","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Αυξήστε την καθυστέρηση των υποτίτλων","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Μειώστε την καθυστέρηση των υποτίτλων","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Αλλαγή θέσης πλευρικής γραμμής","SETTINGS_SHORTCUT_OR":"ή","SETTINGS_SHORTCUT_TO":"στο","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Πιστοποίηση","SETTINGS_FACEBOOK_IMPORT":"Εισαγωγή","SETTINGS_CALENDAR_SUBSCRIBE":"Εγγραφή","SETTINGS_INTERFACE_LANGUAGE":"Γλώσσα εφαρμογής","SETTINGS_LAUNCH_STARTUP":"Άνοιγμα κατά την εκκίνηση","SETTINGS_VLC_DEFAULT":"Αναπαραγωγή με VLC","SETTINGS_UI_LANGUAGE":"Γλώσσα εφαρμογής","SETTINGS_FULLSCREEN_EXIT":"Έξοδος από πλήρη οθόνη με το πλήκτρο Escape","SETTINGS_GAMEPAD":"Ενεργοποίηση υποστήριξης για gamepad","SETTINGS_CLOSE_WINDOW":"Κλείσιμο εφαρμογής όταν κλείνει το παράθυρο","SETTINGS_SUBTITLES_LANGUAGE":"Προεπιλεγμένη γλώσσα υποτίτλων","SETTINGS_SUBTITLES_SIZE":"Προεπιλεγμένο μέγεθος υποτίτλων","SETTINGS_SUBTITLES_BACKGROUND":"Φόντο υποτίτλων","SETTINGS_SUBTITLES_COLOR":"Χρώμα υποτίτλων","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Χρώμα περιγράμματος υποτίτλων","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Χρώμα φόντου υποτίτλων","SETTINGS_SEEK_KEY":"Χρονική μετατόπιση με πλήκτρα-βέλη","SETTINGS_SEEK_KEY_SHIFT":"Χρονική μετατόπιση με πλήκτρα-βέλη όταν είναι πατημένο το πλήκτρο Shift","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Χρονική διάρκεια παράκαμψης χρόνου βίντεο","SETTINGS_BINGE":"Αυτόματη αναπαραγωγή επόμενου επεισοδίου","SETTINGS_NEXT_VIDEO":"Εμφάνιση ειδοποίησης για έναρξη επόμενου επεισοδίου","SETTINGS_NEXT_VIDEO_TRIGGER":"Εμφάνιση ειδοποίησης επόμενου επεισοδίου για:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Διάρκεια αναδυώμενου παραθύρου για το επόμενο βίντεο","SETTINGS_PLAY_IN_BACKGROUND":"Αναπαραγωγή στο παρασκήνιο","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Αναπαραγωγή σε εξωτερική εφαρμογή","SETTINGS_RESIZE":"Αυτόματη προσαρμογή παραθύρου πριν από την αναπαραγωγή","SETTINGS_OVERRIDE_SERVER":"Παράκαμψη URL διακομιστή ροής (σύνθετο)","SETTINGS_SERVER_URL":"URL διακομιστή ροής: ","SETTINGS_SERVER_AVAILABLE":"Ο διακομιστής ροής είναι διαθέσιμος.","SETTINGS_SERVER_UNAVAILABLE":"Ο διακομιστής ροής δεν είναι διαθέσιμος.","SETTINGS_SERVER_STATUS_ONLINE":"Σε σύνδεση","SETTINGS_SERVER_STATUS_ERROR":"Προέκυψε σφάλμα","SETTINGS_SERVER_CONFIGURE_TITLE":"Διαμορφώστε το URL του διακομηστή αναπαραγωγής","SETTINGS_SERVER_CONFIGURE_INPUT":"Εισαγωγή ενός URL διακομηστή αναπαραγωγής","SETTINGS_SERVER_CACHE_SIZE":"Μέγεθος επιτρεπόμενης μνήμης cache","SETTINGS_SERVER_TORRENT_PROFILE":"Προφίλ torrent","SETTINGS_HTTPS_ENDPOINT":"Ακροσημείο HTTPS ροής: ","SETTINGS_USE_BETA":"Πάντα χρήση της πιο πρόσφατης έκδοσης beta","SETTINGS_IMPORT_FB":"Εισαγωγή από Facebook","SETTINGS_IMPORT_DISK":"Εισαγωγή από τοπικό δίσκο","SETTINGS_IMPORT_TRAKT":"Εισαγωγή από Trakt","SETTINGS_PAUSE_MINIMIZED":"Παύση αναπαραγωγής κατά την ελαχιστοποίηση","SETTINGS_HWDEC":"Αποκωδικοποίηση με επιτάχυνση υλικού","SETTINGS_BACKGROUND":"Αναπαραγωγή στο παρασκήνιο","SETTINGS_SUBSCRIBE_CALENDAR":"Εγγραφή σε ημερολόγιο","SETTINGS_REQ_EXPORT":"Αίτημα εξαγωγής δεδομένων","SETTINGS_ACC_DELETE":"Αίτημα διαγραφής λογαριασμού","SETTINGS_CHANGE_PASSWORD":"Αλλαγή κωδικού πρόσβασης","SETTINGS_TOS":"Όροι υπηρεσίας","SETTINGS_SUPPORT":"Επικοινωνία με την υποστήριξη","SETTING_LANGUAGE":"Γλώσσα","SETTINGS_TRAKT":"Αυτόματη παρακολούθηση Trakt","SETTINGS_TRAKT_LOGOUT":"Αποσύνδεση από Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Σαρώστε τον κωδικό QR για να ανοίξετε το τηλεχειριστήριο","SETTINGS_DESKTOP_NOTIFICATIONS":"Ειδοποιήσεις υπολογιστή","SETTINGS_DATA_SAVER":"Εξοικονόμηση δεδομένων","SETTINGS_LANGUAGE_INTERFACE":"Περιβάλλον χρήστη","SETTINGS_LANGUAGE_SUBS":"Προεπιλεγμένοι υπότιτλοι","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Αυτόματη επιλογή κομματιού ήχου","SETTINGS_DEFAULT_AUDIO_TRACK":"Προεπιλεγμένο κομμάτι ήχου","SETTINGS_ACCOUNT":"Λογαριασμός","SETTINGS_VERSION":"Έκδοση","SETTINGS_MPV_WINDOW":"Εκκίνηση αναπαραγωγής σε ξεχωριστό παράθυρο (σύνθετο)","SETTINGS_PLAY_IN_EXTERNAL":"Πάντα εκκίνηση του βίντεο σε εξωτερικό πρόγραμμα","SETTINGS_STORAGE_BUTTON":"Απαλοιφή τοπικής αποθήκευσης","SETTINGS_STORAGE_MODAL_TITLE":"Σίγουρα;","SETTINGS_STORAGE_MODAL_MESSAGE":"Αυτό θα εκκαθαρίσει τον τοπικό χώρο αποθήκευσης και θα σας αποσυνδέσει.","SETTINGS_HWDEC_PICKER":"Επιλέξτε ρύθμιση αποκωδικοποίησης με επιτάχυνση υλικού","SETTINGS_HW_AUTOMATIC":"Αυτόματη","SETTINGS_HW_DISABLED":"Ανενεργή","SETTINGS_HW_ACCELERATED":"Επιτάχυνση αποκωδικοποίησης","SETTINGS_HW_FULL":"Πλήρης επιτάχυνση","SETTINGS_HW_LEGACY":"Παλαιού τύπου","SETTINGS_SECTION_SUBTITLES":"Υπότιτλοι","SETTINGS_SECTION_AUDIO":"Ήχος","SETTINGS_SECTION_CONTROLS":"Χειρισμός","SETTINGS_SECTION_AUTO_PLAY":"Αυτόματη αναπαραγωγή","SETTINGS_SECTION_ADVANCED":"Για προχωρημένους","SUBSPICKER_AUDIO":"Ήχος","SUBSPICKER_SUBTITLES":"Πρόσθετα Υποτίτλων","SUBSPICKER_BLACK_BACKGROUND":"Χρήση μαύρου φόντου","SUBSPICKER_VERTICAL_OFFSET":"Απόσταση από το κάτω μέρος","SUBSPICKER_SIZE":"Μέγεθος","SUBSPICKER_DELAY":"Καθυστέρηση","SUBSPICKER_EMBEDDED_SUBS":"Ενσωματωμένοι Υπότιτλοι","MOBILE_PRIVACY_POLICY":"Πολιτική Απορρήτου","MOBILE_CRASH_REPORTING":"Αναφορά σφάλματος","MOBILE_ZOOM_TO_FILL":"Ζουμ για πλήρη οθόνη","MOBILE_PASSTHROUGH":"Ψηφιακή έξοδος ήχου (passthrough)","MOBILE_RUN_LOW_BATTERY":"Λειτουργία με χαμηλή μπαταρία","MOBILE_RUN_FOREGROUND":"Εκτέλεση ως υπηρεσία προσκηνίου","MOBILE_PERFORMANCE":"Απόδοση & Σταθερότητα","MOBILE_SERVER_ONLINE":"Σε σύνδεση","MOBILE_SERVER_OFFLINE":"Δεν υπάρχει σύνδεση","MOBILE_QR_EXPIRES":"Ο κωδικός QR λήει σε","MOBILE_LOG_INTO":"Συνδεθείτε στον λογαριασμό σας","MOBILE_SCAN_QR":"Σκανάρετε το κωδικό QR η πηγαίντε","MOBILE_LINK_ACCOUNT":"Σύνδεση λογαριασμού","MOBILE_SPEEDPICKER_CANCEL":"Ακύρωση","MOBILE_SPEEDPICKER_LABEL":"Ταχύτητα Αναπαραγωγής","MOBILE_EMPTY_LIBRARY":"Η βιβλιοθήκη σας είναι άδεια","MOBILE_NO_ADDON_ACTIVE":"Κανένα πρόσθετο δε μπορεί να εκτελέσει αυτή τη λειτουργία.","MOBILE_ORGANIZER_WARNING":"Η εφαρμογή Stremio Organizer παρέχει περιορισμένη λειτουργικότητα. Για μια λίστα με ροές με δυνατότητα αναπαραγωγής και την πλήρη εμπειρία του Stremio, χρησιμοποιήστε το Stremio στον υπολογιστή.","MOBILE_ADDON_LOADING":"Φορτώνει","MOBILE_ADDONS_LOADING":"Τα πρόσθετα φορτώνουν","MOBILE_ADDON":"Πρόσθετο","MOBILE_CONFIGURE_ADDON":"Διαμορφώστε το πρόσθετο","MOBILE_CONFIGURE_ADDON_LABEL":"Διαμορφώστε το πρόσθετο","MOBILE_ORGANIZER_ADDONS_WARNING":"Η εφαρμογή Stremio Organizer παρέχει περιορισμένα πρόσθετα. Για την πλήρη εμπειρία του Stremio, χρησιμοποιήστε το Stremio στον υπολογιστή.","MOBILE_DISCONNECT":"Αποσύνδεση","MOBILE_LOOKING_FOR_DEVICES":"Αναζήτηση συσκευών...","MOBILE_CAST_TO":"Μετάδοση σε","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Διαγραφή λογαριασμού","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Η διαγραφή λογαριασμού δεν είναι άμεση λόγω νομικών υποχρεώσεων. Αφού ζητήσετε τη διαγραφή του λογαριασμού σας, θα πρέπει να χρησιμοποιήσετε διαφορετική διεύθυνση email/προφίλ Facebook για να δημιουργήσετε έναν νέο λογαριασμό Stremio στο μέλλον.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Επιβεβαίωση διαγραφής λογαριασμού","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Ο λογαριασμός σας έχει δημιουργηθεί με λογαριασμό Facebook. Για να διαγράψετε τον λογαριασμό σας, πηγαίντε στη διεύθυνση www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Εισάγετε τον κωδικό πρόσβασής σας για να επιβεβαιώσετε τη διαγραφή του λογαριασμού σας.","MOBILE_DELETE_ACCOUNT_BUTTON":"Διαγραφή λογαριασμού","NAVIGATION_ON":"Ανοιχτό","NAVIGATION_OFF":"Κλειστό","MARKETING_AGREE":"Συμφωνώ να λαμβάνω ενημερωτικά e-mail από το Stremio","QUIT":"Έξοδος","CONNECTED":"Σε σύνδεση","AUTHENTICATE":"Ταυτοποίηση","CACHING":"Προσωρινή αποθήκευση","SETTINGS_CACHING_DRIVE":"Δίσκος προσωρινής μνήμης","ENABLE_LOCAL_FILES_ADDON":"Ενεργοποίηση προσθέτου τοπικών αρχείων (απαιτεί επανεκκίνηση)","LOCAL_ADDON_NOT_ENABLED":"Το τοπικό πρόσθετο δεν είναι ενεργοποιημένο. Κάντε κλικ εδώ για να μεταβείτε στις ρυθμίσεις και να το ενεργοποιήσετε","ENABLE_REMOTE_HTTPS_CONN":"Ενεργοποίηση απομακρυσμένων συνδέσεων HTTPS","TORRENT_PROFILE":"Προφίλ torrent","DATA_CACHING":"Προσωρινή αποθήκευση δεδομένων","MAGNET_PARSING":"Ανάλυση συνδέσμου magnet","January":"Ιανουάριος","February":"Φεβρουάριος","March":"Μάρτιος","April":"Απρίλιος","May":"Μάιος","June":"Ιούνιος","July":"Ιούλιος","August":"Αύγουστος","September":"Σεπτέμβριος","October":"Οκτώβριος","November":"Νοέμβριος","December":"Δεκέμβριος","Monday":"Δευτέρα","Tuesday":"Τρίτη","Wednesday":"Τετάρτη","Thursday":"Πέμπτη","Friday":"Παρασκευή","Saturday":"Σάββατο","Sunday":"Κυριακή","Action":"Δράση","Comedy":"Κωμωδία","War":"Πόλεμος","Family":"Οικογενειακές","Animation":"Κινούμενα σχέδια","Adventure":"Περιπέτεια","Fantasy":"Φαντασία","Crime":"Έγκλημα","Mystery":"Μυστήριο","Romance":"Ρομαντικές","Drama":"Δράμα","Horror":"Τρόμος","Thriller":"Θρίλερ","Sci-Fi":"Επιστημονική φαντασία","Music":"Μουσική","Biography":"Βιογραφία","Documentary":"Ντοκιμαντέρ","Sport":"Αθλήματα","Musical":"Μιούζικαλ","Western":"Γουέστερν","Film-Noir":"Φιλμ νουάρ","News":"Ειδήσεις","History":"Ιστορία","Game-Show":"Τηλεπαιχνίδι","Reality-TV":"Ριάλιτι","Talk-Show":"Τοκ σόου","Film & Entertainment":"Σινεμά & ψυχαγωγία","Gaming":"Παιχνίδια","From TV":"Από την τηλεόραση","Lifestyle":"Τρόπος ζωής","Science & Education":"Επιστήμη & εκπαίδευση","Cooking & Health":"Μαγειρική & υγεία","Beauty & Fashion":"Ομορφιά & μόδα","Sports":"Αθλήματα","News & Politics":"Ειδήσεις & πολιτική","How-to & DIY":"Κατασκευές","Tech":"Τεχνολογία","Automotive":"Αυτοκίνηση","Causes & Non-Profits":"Φιλανθρωπία","Movies":"Ταινίες","Uk Live Tv":"Ηνωμένο Βασίλειο","Fashion":"Μόδα","Business News Radio":"Επιχειρήσεις - Ράδιο","Business Tv":"Επιχειρήσεις","Cars & Auto":"Αυτοκίνητα","Comedy Radio":"Κωμωδία - Ράδιο","Lifestyle Radio":"Τρόπος ζωής - Ράδιο","News Tv":"Ειδήσεις","Food And Wine":"Φαγητό & ποτά","Latino Tv":"Λατινική Αμερική","Shopping Tv":"Αγορές","Religion":"Θρησκεία","Kids":"Παιδικά","Body & Soul":"Σώμα & πνεύμα","Education":"Εκπαίδευση","Indian Tv":"Ινδία","Extreme Sports":"Εξτρίμ σπορ","Middle Eastern Tv":"Μέση Ανατολή","Celebrity Tv":"Διάσημοι","Science Tv":"Επιστήμη","Bikini babe":"Bikini babe","Outdoors":"Εξοχή","German Tv":"Γερμανία","French Tv":"Γαλλία","Italian Tv":"Ιταλία","Gamer Tv":"Παιχνίδια","Travel":"Ταξίδια","Asian Tv":"Ασία","Entertainment":"Ψυχαγωγία","News Radio":"Ειδήσεις - Ράδιο","Music Radio":"Μουσική - Ράδιο","Language Learning":"Εκμάθηση γλωσσών","Science Radio":"Επιστήμη - Ράδιο","Tech Radio":"Τεχνολογία - Ράδιο","Science & Technology Vod":"Επιστήμη & τεχνολογία","new video":"Νέο βίντεο","new episode":"Νέο επεισόδιο","new movie":"Νέα ταινία","recommended":"Προτάσεις","we recommend":"Προτείνουμε","offer of the day":"Προσφορά ημέρας","news":"Ειδήσεις","music video":"Μουσικό βίντεο","CTX_SHOW_HOTKEYS":"Εμφάνιση πλήκτρων συντομεύσεων","CTX_DISMISS_NOTIF":"Απόρριψη ειδοποιήσεων","CTX_DISMISS_ALL":"Απόρριψη όλων","CTX_SHARE":"Κοινοποίηση","CTX_COPY_SHARE_LINK":"Αντιγραφή συνδέσμου κοινής χρήσης","CTX_COPY_MAGNET_LINK":"Αντιγραφή συνδέσμου magnet","CTX_COPY_STREAM_LINK":"Αντιγραφή συνδέσμου ροής","CTX_DOWNLOAD_VIDEO":"Λήψη βίντεο","CTX_DOWNLOAD_SUBS":"Λήψη υποτίτλων","CTX_VIEW_ON_YOUTUBE":"Προβολή στο YouTube","CTX_SHOW":"Εμφάνιση","CTX_PLAY":"Αναπαραγωγή","CTX_PLAY_IN":"Αναπαραγωγή σε","CTX_PLAY_ON":"Αναπαραγωγή σε","CTX_WATCH_ON":"Παρακολούθηση σε","CTX_WATCH":"Προβολή","CTX_WATCHED":"Προβλήθηκε","CTX_WATCH_BEGINNING":"Προβολή από την αρχή","CTX_WATCH_MOBILE":"Προβολή σε κινητή συσκευή","CTX_REWIND":"Επιστροφή στην αρχή","CTX_MARK_WATCHED":"Σήμανση ως προβεβλημένο","CTX_MARK_NON_WATCHED":"Σήμανση ως μη προβεβλημένο","CTX_MARK_UNWATCHED":"Σήμανση ως μη προβεβλημένο","CTX_MARK_REST":"Σήμανση υπολοίπων ως προβεβλημένων","CTX_UNMARK_REST":"Σήμανση υπολοίπων ως μη προβεβλημένων","CTX_RECEIVE_NEW_NOTIF":"Λήψη νέων ειδοποιήσεων","CTX_REMOVE_CACHE":"Αφαίρεση από προσωρινή μνήμη","CTX_REMOVE_CACHE_EP":"Αφαίρεση επεισοδίου από προσωρινή μνήμη","CTX_OPEN_CONTAINING":"Άνοιγμα φακέλου αποθήκευσης","CTX_REMOVE":"Αφαίρεση από βιβλιοθήκη","CTX_AVAILABLE_OFFLINE":"Διαθέσιμο εκτός σύνδεσης","CTX_PAUSED":"Σε παύση","CTX_ALWAYS_ON_TOP":"Πάντα στο προσκήνιο","CTX_FULLSCREEN":"Πλήρης οθόνη","CTX_WRONG_SUBS":"Εσφαλμένοι υπότιτλοι;","CTX_REPORT_ISSUES":"Αναφορά ζητήματος","CTX_COPY":"Αντιγραφή","CTX_PASTE":"Επικόλληση","CTX_CLEAR":"Απαλοιφή","CTX_CLEAR_RECENT_SEARCHES":"Απαλοιφή πρόσφατων αναζητήσεων","HELLO_THERE":"Γεια σας","HOPE_YOU_ENJOY":"Ελπίζουμε να απολαμβάνετε το Stremio και να έχει γίνει ήδη μία από τις αγαπημένες σας εφαρμογές!","WHO_ARE_WE":"Ποιοι είμαστε; Είμαστε η ομάδα που το αναπτύσσει - δύο τύποι που εργάζονται σκληρά κάθε μέρα για τα τελευταία 3 έτη, προκειμένου να κάνουν αυτό το προϊόν όλο και καλύτερο.","SUPPORT_US":"Αν απολαμβάνετε το Stremio, αν το Stremio είναι ανεκτίμητο για εσάς - μοιραστείτε το με όλους!","SPREAD_THE_WORD":"Μοιραστείτε το με τους φίλους σας, μιλήστε σε όλους για το Stremio","MORE_PEOPLE":"Όσο περισσότερα άτομα χρησιμοποιούν το Stremio, τόσο καλύτερο θα γίνεται!","SEND_A_LINK":"Ή στείλτε έναν σύνδεσμο για τον ιστότοπό μας","TIP_LOCALFILES":"Συμβουλή: Μπορείτε να σύρετε και να εναποθέσετε τοπικά αρχεία βίντεο στο Stremio","ADDON_MY":"Τα πρόσθετά μου","ADDON_COMMUNITY":"Πρόσθετα κοινότητας","ADDON_OFFICIAL":"Επίσημα πρόσθετα","ADDON_REPOS":"Συλλογές προσθέτων","ADDON_SEARCH":"Αναζήτηση προσθέτων","ADDON_INSTALL":"Εγκατάσταση","ADDON_CONFIGURE":"Ρύθμιση","ADDON_UNINSTALL":"Αφαίρεση","ADDON_UPGRADE":"Αναβάθμιση","ADDON_INSTALLED":"Εγκατεστημένο","ADDON_INSTALLED_MSG":"Το πρόσθετο εγκαταστάθηκε!","ADDON_UPGRADED_MSG":"Το πρόσθετο αναβαθμίστηκε!","ADDON_UNKNOWN":"Άγνωστο","ADDON_ERR":"Σφάλμα εγκατάστασης προσθέτου!","ADDON_DISCONNECTED":"Αποσυνδέθηκε","ADDON_APP_MISSING":"Η εφαρμογή για αυτήν την πηγή δεν έχει εγκατασταθεί. Θέλετε να την εγκαταστήσετε τώρα;","ADDON_APP_INSTALL":"Εγκατάσταση","ADDON_PAGE":"Σελίδα προσθέτου","ADDON_TOP_CONTENT":"Τα καλύτερα από αυτό το πρόσθετο","ADDON_PROVIDES":"Αυτό το πρόσθετο προσφέρει:","ADDON_WATCH":"Παρακολούθηση «#{types}»!","ADDON_WATCH_FREE":"Δωρεάν παρακολούθηση «#{types}»!","ADDON_ADDON":"Πρόσθετο","ADDON_SUPPORTED_TYPES":"Υποστηριζόμενοι τύποι","ADDON_SUPPORTED_CATALOGS":"Υποστηριζόμενοι κατάλογοι","ADDON_PROVIDES_DISCOVER":"Περισσότερα «#{types}» στην Ανακάλυψη","ADDON_PROVIDES_STREAMS":"Παρακολούθηση «#{types}»","ADDON_PROVIDES_STREAMS_FREE":"Δωρεάν παρακολούθηση «#{types}»","ADDON_PROVIDES_SUBTITLES":"Υπότιτλοι για «#{types}»","ADDON_CANTDETECT":"Δεν μπορέσαμε να εντοπίσουμε κάποια εκτέλεση του Stremio, επομένως δεν μπορέσαμε να προσδιορίσουμε τα εγκατεστημένα σας πρόσθετα.","ERR_NO_META":"Δεν βρέθηκε καμία πληροφορία σχετικά με αυτό ","ERR_GETTING_META":"Σφάλμα ανάκτηση σχετικών πληροφοριών.","ERR_CANT_PARSE_MAGNET":"Δεν ήταν δυνατή η ανάλυση του magnet","ERR_NO_MAGNET_INFOHASH":"Κανένα έγκυρο hash πληροφοριών για το magnet","ERR_NO_FILE_PATH":"Δεν είναι δυνατή η αποστολή αιτήματος χωρίς διαδρομή σε αρχείο","ERR_NO_TORRENT":"Δεν επιστράφηκε κανένα torrent","ERR_NO_SUPPORTERD_FILES":"Δεν βρέθηκαν υποστηριζόμενα αρχεία","ERR_OPENING_FILES":"Δεν ήταν δυνατό το άνοιγμα εξωτερικών αρχείων","ERR_INVALID_LINK":"Μη έγκυρος σύνδεσμος","ERR_REGISTERED_ONLY":"Αυτή η επιλογή είναι διαθέσιμη μόνο για εγγεγραμμένους χρήστες.","ERR_CLIPBOARD":"Δεν είναι δυνατή η αναπαραγωγή από το πρόχειρο","ERR_CLIPBOARD_READ":"Δεν είναι δυνατή η ανάγνωση από το πρόχειρο σε αυτήν την πλατφόρμα","ERR_CLIPBOARD_GENERIC":"Δεν βρέθηκε κατάλληλο URL στο πρόχειρο. Παρακαλώ αντιγράψτε ένα URL βίντεο (π.χ. σύνδεσμος magnet).","BOARD_CONTINUE_WATCHING":"Συνέχεια παρακολούθησης","BOARD_EXPLANATION_RECOMMENDATIONS":"Ταινίες ειδικά επιλεγμένες για εσάς.<br />Αυτή η ταινία αποτελεί δείγμα πρότασης.","BOARD_EXPLANATION_EPISODES":"Τα νέα επεισόδια των αγαπημένων σας σειρών έρχονται εδώ.<br />Προσθέστε στη βιβλιοθήκη σας τις σειρές που ακολουθείτε.","BOARD_EXPLANATION_VIDEOS":"Τα νέα επεισόδια των αγαπημένων σας καναλιών έρχονται εδώ.<br />Προσθέστε στη βιβλιοθήκη σας τα κανάλια που ακολουθείτε.","WEBSITE_SLOGAN_WATCH":"Άμεση παρακολούθηση","WEBSITE_SLOGAN_ALL":"Όλο το περιεχόμενό σας, σε ένα μέρος","WEBSITE_SLOGAN_NEW":"Απεριόριστη παρακολούθηση","WEBSITE_SLOGAN_NEW_NEW":"Ελευθερία στο streaming","WEBSITE_WATCH_FROM":"Προβολή από","WEBSITE_DOWNLOAD":"Λήψη τώρα","WEBSITE_DOWNLOAD_FOR":"Λήψη τώρα για","WEBSITE_IS_DESKTOP":"Το Stremio είναι εφαρμογή για υπολογιστές, ανοίξτε αυτήν τη σελίδα στον υπολογιστή για να κάντε λήψη","WEBSITE_DESKTOP_DEMO_VID":"Επίδειξη σε υπολογιστή","WEBSITE_PAGE_HOME":"Αρχική","WEBSITE_PAGE_FEATURES":"Λειτουργίες","WEBSITE_PAGE_ADDONS":"Πρόσθετα","WEBSITE_PAGE_TECH":"Τεχνολογία","WEBSITE_PAGE_CREATE_ADDON":"Δημιουργία προσθέτου","WEBSITE_PAGE_CONTACTS":"Επαφές","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Ταινίες","WEBSITE_TYPE_series_PL":"Σειρές","WEBSITE_TYPE_tv":"Ζωντανή τηλεόραση","WEBSITE_TYPE_channel":"Κανάλια","WEBSITE_STREMIO_WHAT_IS":"Το Stremio είναι μια εφαρμογή που σας βοηθά να οργανώσετε και να παρακολουθήσετε άμεσα τα αγαπημένα σας βίντεο, ταινίες, σειρές και τηλεοπτικά κανάλια.","WEBSITE_FEATURES_WATCH":"Άμεση παρακολούθηση σε HD","WEBSITE_FEATURES_WATCH_DETAIL":"Κάντε κλικ και δείτε τις αγαπημένες σας ταινίες, εκπομπές, βίντεο και κανάλια.","WEBSITE_FEATURES_SUBS":"Αυτόματοι υπότιτλοι","WEBSITE_FEATURES_SUBS_DETAIL":"Το Stremio επιλέγει αυτόματα συγχρονισμένους υπότιτλους στη γλώσσα σας.","WEBSITE_FEATURES_SUBS_LABEL":"Εσύ αποφασίζεις.","WEBSITE_FEATURES_CAST":"Αναπαραγωγή σε τηλεόραση & κινητές συσκευές","WEBSITE_FEATURES_CAST_DETAIL":"Μετάδοση σε AppleTV, Chromecast, Smart TV (DLNA/UPnP) και κινητές συσκευές.","WEBSITE_LIB":"Η προσωπική σας βιβλιοθήκη σε όλες τις συσκευές σας","WEBSITE_LIB_COLLECT":"Συλλογή από Stremio","WEBSITE_LIB_IMPORT":"Εισαγωγή από Facebook","WEBSITE_LIB_LOCAL":"Προσθήκη από τοπικό δίσκο","WEBSITE_BOARD":"Ο πίνακας - Ένα ενιαίο μέρος για ειδοποιήσεις και προτάσεις","WEBSITE_BOARD_RECOMMEND":"Προτεινόμενη εκπομπή","WEBSITE_BOARD_TRENDING":"Δημοφιλής ταινία","WEBSITE_BOARD_NEW":"Νέο βίντεο","WEBSITE_BOARD_EPISODE":"Νέο επεισόδιο","WEBSITE_BOARD_1":"Ψάχνετε να παρακολουθήσετε κάτι ενδιαφέρον; Λάβετε προτάσεις βάσει των προτιμήσεών σας!","WEBSITE_BOARD_2":"Ειδοποιηθείτε όταν κυκλοφορήσει ένα νέο επεισόδιο της αγαπημένης σας εκπομπής ή καναλιού YouTube!","WEBSITE_BOARD_YOUTUBE":"Νέα βίντεο καναλιών YouTube","WEBSITE_BOARD_EPISODES":"Νέα επεισόδια των σειρών που ακολουθείτε","WEBSITE_ADDONS":"Πρόσθετα περιεχομένου","WEBSITE_TECH_DETAIL":"Αγαπούμε την τεχνολογία και την επιστήμη!\\nΤο Stremio χρησιμοποιεί τις εξής τεχνολογίες ανοικτού κώδικα:","WEBSITE_TECH_WCJS":"Το WebChimera.js επιτρέπει στο Stremio την αναπαραγωγή οποιασδήποτε μορφής βίντεο με καλές επιδόσεις.","WEBSITE_TECH_WCJS_EXTRA":"Είμαστε οι βασικοί συντελεστές του έργου","WEBSITE_TECH_ELECTRON":"Το Electron αποτελεί μια καινοτόμα πλατφόρμα για την ανάπτυξη του Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Είμαστε συντελεστές του έργου","WEBSITE_TECH_LINVODB":"Μια τεχνολογία βάσης δεδομένων που εξασφαλίζει ότι τα δεδομένα σας είναι οργανωμένα και διαθέσιμα απ\' όπου κάνετε σύνδεση.","WEBSITE_TECH_LINVODB_EXTRA":"Τεχνολογία από εμάς","WEBSITE_CREATE_ADDON":"Δημιουργήστε το πρόσθετό σας","WEBSITE_CREATE_ADDON_DETAIL":"Διαθέτετε κάποια υπηρεσία παροχής περιεχομένου βίντεο; Θα σας βοηθήσουμε να επωφεληθείτε από τις δυνατότητες του Stremio δημιουργώντας το πρόσθετό σας.","WEBSITE_CREATE_ADDON_BENEFITS":"Οφέλη της δημιουργίας ενός προσθέτου για το Stremio","WEBSITE_P2P_BEAUTY":"Η άνεση και ομορφιά της ροής peer-to-peer","WEBSITE_P2P_1":"Αξιόπιστη και προσιτή προβολή Full HD/4K βίντεο on demand ή σε ζωντανή ροή","WEBSITE_P2P_2":"Πλατφόρμα διανομής με εξαιρετική εμπειρία χρήσης","WEBSITE_P2P_3":"Θα δημιουργήσουμε ένα πρόσθετο που θα καλύπτει απόλυτα τις ανάγκες σας","WEBSITE_P2P_CONTACT":"Σας ενδιαφέρει; Μπορείτε πάντα να <a href=\'mailto:office@stremio.com\'>επικοινωνήσετε μαζί μας</a>.","WEBSITE_P2P_CONTACT_EXTRA":"Θα χαρούμε να σας βοηθήσουμε στην ενσωμάτωση του περιεχομένου σας στο Stremio!","WEBSITE_P2P":"Κατά καιρούς, εμφανίζεται μια τεχνολογία που αλλάζει το τοπίο. Επενδύσαμε πολύ χρόνο και προσπάθεια στην ανάπτυξη της δικής μας μηχανής ροής βίντεο Peer-to-Peer (P2P) που παρέχει εξαιρετικές επιδόσεις και ανταποκρίνεται σε κάθε είδους χρήση.\\nΕπικοινωνήστε μαζί μας για P2P βίντεο με DRM, on demand ή σε ζωντανή ροή.","WEBSITE_THOUGHTS":"Οι σκέψεις μας:","WEBSITE_SPREAD":"Μιλήστε σε άλλους για το Stremio:","WEBSITE_CONTACT":"Επικοινωνήστε μαζί μας, θα χαρούμε να σας ακούσουμε!","WEBSITE_OPENSOURCE":"Για τα έργα μας με ανοικτό κώδικα, μεταβείτε στο","WEBSITE_BITCOIN":"Δωρεά bitcoin:","WEBSITE_FAQ":"Συχνές ερωτήσεις","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Ερωτήσεις","WEBSITE_TOS":"Όροι χρήσης","WEBSITE_LEGAL":"Νομικά","WEBSITE_PAGE_ABOUT":"Πληροφορίες","WEBSITE_PAGE_BECOME_PARTNER":"Γίνετε συνεργάτης","WEBSITE_ALL_YOU_CAN_WATCH":"Δείτε ό,τι θέλετε, ελεύθερα.","WEBSITE_FREEDOM_TO_STREAM":"Ελευθερία στο streaming","WEBSITE_WHAT_IS_STREMIO":"Τι είναι το Stremio;","WEBSITE_WHAT_IS_STREMIO_P1":"Το Stremio αποτελεί ένα ενιαίο κέντρο για περιεχόμενο βίντεο. Ανακαλύψτε, οργανώστε και παρακολουθήστε βίντεο από όλα τα είδη πηγών σε οποιαδήποτε συσκευή σας.","WEBSITE_WHAT_IS_STREMIO_P2":"Ταινίες, εκπομπές, σειρές, ζωντανή τηλεόραση ή διαδικτυακά κανάλια, όπως το YouTube και το Twitch.tv - μπορείτε να τα βρείτε όλα στο Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Το Stremio είναι ένα σύγχρονο κέντρο πολυμέσων για όλο σας το ψυχαγωγικό περιεχόμενο βίντεο. Ανακαλύψτε, παρακολουθήστε και οργανώστε το περιεχόμενο βίντεο με εύχρηστα πρόσθετα.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Ταινίες, εκπομπές, ζωντανή τηλεόραση ή διαδικτυακά κανάλια - βρείτε τα όλα στο Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Απολαύστε σε όλες τις συσκευές πολυμέσων σας","WEBSITE_DEVICES_COLLECT":"Συλλογή από Stremio","WEBSITE_DEVICES_IMPORT_FB":"Εισαγωγή από Facebook","WEBSITE_DEVICES_LOCAL":"Προσθήκη από τοπικό δίσκο","WEBSITE_JOIN_THE_PARTY_NOW":"Ελάτε κι εσείς στο πάρτι","WEBSITE_DEVICES_ALL":"Εύκολο στη χρήση σε όλες σας τις συσκευές·","WEBSITE_EXTENDABLE_CATALOG":"Απεριόριστα επεκτάσιμος κατάλογος βίντεο·","WEBSITE_ORGANIZE_YOUR_MEDIA":"Εξαιρετικές δυνατότητες οργάνωσης πολυμέσων·","WEBSITE_AS_SEEN_ON":"Γνώμες από τον τύπο","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Σχετικά με εμάς","WEBSITE_LINK_TECHNOLOGY":"Τεχνολογία","WEBSITE_LINK_APPS":"Εφαρμογές","WEBSITE_LINK_DOWNLOADS":"Λήψεις","WEBSITE_MORE":"Περισσότερα","WEBSITE_LINK_ADDONS":"Πρόσθετα","WEBSITE_LINK_ADDON_SDK":"SDK προσθέτων","WEBSITE_LINK_CONTRIBUTE":"Συνεισφορά","WEBSITE_LINK_COMMUNITY":"Κοινότητα","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & ακόμα πιο πολλά","WEBSITE_LINK_HELP":"Κέντρο βοήθειας","WEBSITE_LINK_CONTACTS":"Επαγγελματικές ερωτήσεις","WEBSITE_LINK_TOS":"Όροι & προϋποθέσεις","WEBSITE_LINK_PRAVACY":"Πολιτική απορρήτου","WEBSITE_SUBSCRIBE":"Συνδρομή","WEBSITE_NEWSLETTER":"Εγγραφείτε στο ενημερωτικό μας δελτίο για απίθανα πράγματα","WEBSITE_PLACEHOLDER_EMAIL":"Το email σας","WEBSITE_COMMUNITY":"Κοινότητα","WEBSITE_LINK_PRAVACY_LEGAL":"Απόρρητο & νομικά","WEBSITE_WHY":"Γιατι το κανουμε","WEBSITE_WHY_P1":"Στο Stremio, εργαζόμαστε καθημερινά επειδή θέλουμε να επιλύσουμε ένα σημαντικό πρόβλημα της βιομηχανίας βίντεο on demand. Υπάρχει τόσο πολύ νέο περιεχόμενο που δημοσιεύεται κάθε λεπτό, που είναι σχεδόν αδύνατο να το διαχειριστείτε.","WEBSITE_WHY_P2":"Βοηθούμε τους ανθρώπους να πλοηγηθούν σε αυτόν τον τεράστιο κόσμο βίντεο ψυχαγωγίας και να ανακαλύψουν νέο περιεχόμενο. Οι εφαρμογές μας συνδυάζουν ταινίες, σειρές, ζωντανή τηλεόραση, διαδικτυακά κανάλια και πολλά άλλα. Έχουμε αφοσιωθεί στο να κάνουμε την εύρεση τίτλων εξαιρετική εύκολη για τους χρήστες μας.","WEBSITE_WHY_P3":"Μπορείτε να χρησιμοποιήσετε την υπηρεσία μας σε οποιαδήποτε συσκευή και ανά πάσα στιγμή, καθιστώντας το Stremio το μοναδικό κέντρο ψυχαγωγίας βίντεο που θα χρειαστείτε.","WEBSITE_TEAM":"Ομάδα","WEBSITE_TEAM_P":"Η ομάδα του Stremio είναι μικρή αλλά ισχυρή: τα δέκα μέλη της γράφουν κώδικα σε X γλώσσες και μοιράζονται εμπειρία στην ανάπτυξη λογισμικού, στον σχεδιασμό UI και UX, στο μάρκετινγκ και στη διαφήμιση, καθώς και στις επιχειρήσεις.","WEBSITE_FEATURES":"Λειτουργίες","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Εύκολη ανακάλυψη νέου περιεχομένου","WEBSITE_FEATURES_DISCOVER_P":"Ανακαλύψτε εύκολα νέες ταινίες, εκπομπές, σειρές και κανάλια. Περιηγηθείτε κατά κατηγορία, είδος, βαθμολογία, πρόσφατη προβολή κ.λπ. ή απλά πληκτρολογήστε ένα όνομα. Το Stremio κάνει πανεύκολη την εύρεση νέου περιεχομένου.","WEBSITE_FEATURES_ALL_CONTENT":"Όλο σας το περιεχόμενο σε μία οθόνη","WEBSITE_FEATURES_ALL_CONTENT_P1":"Δείτε ποιες ταινίες, σειρές ή βίντεο δεν τελειώσατε και συνεχίστε την παρακολούθηση τους· λάβετε ειδοποιήσεις για νέα επεισόδια και κυκλοφορίες· περιηγηθείτε στις προτάσεις που θα λάβετε βάσει των συνηθειών παρακολούθησής σας.","WEBSITE_FEATURES_LIBRARY":"Οργάνωση βιβλιοθήκης βίντεο","WEBSITE_FEATURES_LIBRARY_P1":"Προσθέστε οποιονδήποτε τίτλο στη βιβλιοθήκη του Stremio σας με ένα μόνο κλικ και πλοηγηθείτε στο περιεχόμενό σας, οργανωμένο κατά τύπο, πρόσφατη προβολή ή αλφαβητική σειρά.","WEBSITE_FEATURES_CALENDAR":"Εποπτεία όλων όσων παρακολουθείτε","WEBSITE_FEATURES_CALENDAR_P1":"Δείτε ένα ημερολόγιο με όλες τις ταινίες και σειρές που προσθέτετε στη βιβλιοθήκη σας. Εξαγάγετε και συγχρονίστε το ημερολόγιο σας, ώστε να γνωρίζετε πάντα πότε θα κυκλοφορήσει ένα νέο επεισόδιο ή μια νέα σειρά.","WEBSITE_FEATURES_BIG_SCREEN":"Απολαύστε το περιεχόμενό σας σε μεγαλύτερη οθόνη","WEBSITE_FEATURES_BIG_SCREEN_P1":"Μεταδώστε ό,τι παρακολουθείτε σε μια άλλη συσκευή - σε τηλέφωνο, tablet ή τηλεόραση TV με ένα μόνο κλικ.","WEBSITE_FEATURES_SOURCES":"Προβολή βίντεο από πολλές διαφορετικές πηγές","WEBSITE_FEATURES_SOURCES_P":"Εγκαταστήστε επίσημα πρόσθετα και πρόσθετα κοινότητας για να απολαμβάνετε βίντεο από πολλούς διαφορετικούς παρόχους - όλα σε μία κομψή, εύχρηστη εφαρμογή.","WEBSITE_CREATE_AN_ADDON":"Δημιουργία προσθέτου","WEBSITE_FEATURES_SYNC":"Συγχρονίστε τη βιβλιοθήκη σας σε πολλαπλές συσκευές και συνεχίστε την αναπαραγωγή","WEBSITE_FEATURES_SYNC_P1":"Συνδεθείτε με τον λογαριασμό σας σε όλες τις συσκευές σας και απολαύστε τον συγχρονισμό της βιβλιοθήκης, των προσθέτων, της αναπαραγωγής και του ημερολογίου σας.","WEBSITE_FEATURES_EXTENDABLE":"Επεκτάσιμος κατάλογος βίντεο με τα πρόσθετα","WEBSITE_FEATURES_EXTENDABLE_P1":"Ο κατάλογος προσθέτων του Stremio παρέχει πολυάριθμα πρόσθετα για την παρακολούθηση ποικίλου περιεχομένου βίντεο. Δείτε ταινίες, εκπομπές, ζωντανή τηλεόραση, αθλήματα, ειδήσεις, podcast, διαδικτυακά κανάλια, βιντεοπαιχνίδια και πολλά άλλα.","WEBSITE_FEATURES_AUTO_SUBS":"Αυτόματοι υπότιτλοι","WEBSITE_FEATURES_AUTO_SUBS_P1":"Με τα πρόσθετα υποτίτλων μας, καθορίζονται αυτόματα οι επιλογές για την προτιμώμενη γλώσσα σας.","WEBSITE_FEATURES_CHROMECAST":"Μετάδοση σε Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Απολαύστε το περιεχόμενό σας σε μια μεγαλύτερη οθόνη ή μεταδώστε ό,τι βλέπετε σε μια άλλη συσκευή.","WEBSITE_FEATURES_KEEP_TRACK":"Εποπτεία των αγαπημένων σειρών και καναλιών σας","WEBSITE_FEATURES_KEEP_TRACK_P1":"Δείτε ένα ημερολόγιο και λάβετε ειδοποιήσεις για νέα επεισόδια των αγαπημένων σας σειρών και καναλιών.","WEBSITE_FEATURES_POWER_USER":"Λειτουργίες για έμπειρους χρήστες","WEBSITE_FEATURES_POWER_USER_P1":"Αναπαραγωγή σε εξωτερικό πρόγραμμα","WEBSITE_FEATURES_POWER_USER_P2":"Αναπαραγωγή από αρχείο torrent ή σύνδεσμο magnet","WEBSITE_FEATURES_POWER_USER_P3":"Εισαγωγή στη βιβλιοθήκη από αγαπημένα στο Facebook ή τον τοπικό δίσκο","WEBSITE_ADD_ONS":"Πρόσθετα","WEBSITE_ADD_ONS_P1":"Όλο το περιεχόμενο που παρέχει το Stremio προέρχεται από ένα σύστημα προσθέτων - δεν ενσωματώνεται καθόλου περιεχόμενο και κανένας πάροχος στην εφαρμογή.","WEBSITE_ADD_ONS_P2":"Υπάρχουν δύο ομάδες διαθέσιμων προσθέτων: επίσημα πρόσθετα και πρόσθετα κοινότητας.","WEBSITE_ADD_ONS_P3":"Τα επίσημα αναπτύσσονται και φιλοξενούνται από το Stremio, ενώ τα πρόσθετα κοινότητας δημιουργούνται και φιλοξενούνται από τα μέλη της κοινότητάς μας.","WEBSITE_ADDONS_OFFICIAL":"Επίσημα πρόσθετα","WEBSITE_ADDONS_WATCHUB":"Δείτε τις αγαπημένες σας ταινίες, σειρές και εκπομπές από παρόχους, όπως το iTunes, το Hulu, το Amazon και άλλες υπηρεσίες των ΗΠΑ/ΗΒ.","WEBSITE_ADDONS_YOUTUBE":"Παρακολουθήστε τα αγαπημένα σας κανάλια YouTube χωρίς διαφημίσεις και λάβετε ειδοποιήσεις για νέες μεταφορτώσεις από τους δημιουργούς που ακολουθείτε.","WEBSITE_ADDONS_FILMON":"Παρακολουθήστε ζωντανή τηλεόραση, ταινίες και εκπομπές δωρεάν. 600 τηλεοπτικά κανάλια, 45.000 δωρεάν ταινίες, ντοκιμαντέρ και πολλά άλλα.","WEBSITE_ADDONS_OPENSUBTITLES":"Υπότιτλοι ταινιών και σειρών σε πολλαπλές γλώσσες, μεταφορτώνονται χιλιάδες μεταφρασμένοι υπότιτλοι καθημερινά.","WEBSITE_ADDONS_COMMUNITY":"Πρόσθετα κοινότητας","WEBSITE_ADDONS_FILMON_VOD":"Παρακολουθήστε βίντεο on demand από το Filmon.tv","WEBSITE_ADDONS_TWICH":"Παρακολουθήστε ζωντανές ροές από το Twitch.tv - μια πλατφόρμα ροής βίντεο για τη βιομηχανία των e-sports.","WEBSITE_ADDONS_VODO":"Παρακολουθήστε ανεξάρτητες ταινίες εντελώς δωρεάν.","WEBSITE_ADDONS_NETFLIX":"Παρακολουθήστε ταινίες και σειρές του Netflix.","WEBSITE_ADDONS_CREATE":"Δημιουργία προσθέτου","WEBSITE_ADDONS_CREATE_P1":"Εάν το επιθυμείτε, μπορείτε να αναπτύξετε το δικό σας πρόσθετο. Με αυτόν τον τρόπο, μπορείτε να παραχωρήσετε στον εαυτό σας και στην κοινότητά μας πρόσβαση σε νέο περιεχόμενο βίντεο και να προσεγγίσετε ένα νέο κοινό εκατομμυρίων χρηστών παγκοσμίως.","WEBSITE_ADDONS_START_CREATE":"Για να ξεκινήσετε, επισκεφθείτε τη σελίδα του SDK προσθέτων του Stremio:","WEBSITE_DOWNLOADS":"Λήψεις","WEBSITE_DOWNLOADS_P1":"Για βέλτιστες επιδόσεις, προτείνουμε τη χρήση της πιο πρόσφατης έκδοσης των εφαρμογών Stremio. Αν όμως, για κάποιο λόγο, θέλετε να χρησιμοποιήσετε μια παλαιότερη έκδοση, μπορείτε να τη βρείτε εδώ.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio για Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio για macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio για Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio για Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio για Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio για φορητή συσκευή Android","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio για το Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio για iOS (περιορισμένη έκδοση)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Συνεισφορά","WEBSITE_CONTRIBUTE_P1":"Η πλατφόρμα του Stremio είναι ανοικτού κώδικα και μπορείτε εύκολα να δημιουργήσετε ένα πρόσθετο για περιεχόμενο που δεν παρέχεται αυτήν τη στιγμή.","WEBSITE_CONTRIBUTE_WHY":"Γιατί να δημιουργήσετε ένα πρόσθετο;","WEBSITE_CONTRIBUTE_WHY_P1":"Βρείτε νέο κοινό για τα βίντεό σας","WEBSITE_CONTRIBUTE_WHY_P2":"Η βάση χρηστών του Stremio αυξάνεται ταχύτατα - μέσα στο πρώτο έτος κυκλοφορίας, το Stremio απέκτησε 1 εκατομμύριο χρήστες σε όλο τον κόσμο, ενώ το δεύτερο έτος της ύπαρξης της πλατφόρμας ο αριθμός αυτός έφτασε τα 2,5 εκατομμύρια.","WEBSITE_CONTRIBUTE_WHY_P3":"Με το πρόσθετό σας, μπορείτε εύκολα να προσεγγίσετε και να διανείμετε το περιεχόμενο σε αυτό το κοινό.","WEBSITE_CONTRIBUTE_ALL":"Παρακολουθήστε τις αγαπημένες σας ταινίες, σειρές, βίντεο και κανάλια σε ένα ενιαίο μέρος.","WEBSITE_CONTRIBUTE_ALL_P1":"Είστε λάτρης ενός συγκεκριμένου τύπου περιεχομένου που δεν διατίθεται ακόμα στο Stremio; Δημιουργήστε ένα πρόσθετο για αυτόν και απολαύστε τα αγαπημένα σας βίντεο σε ένα από τα μεγαλύτερα και πιο εύχρηστα κέντρα ψυχαγωγίας της αγοράς.","WEBSITE_CONTRIBUTE_ALL_P2":"Επιπλέον, θα έχετε την απεριόριστη ευγνωμοσύνη των υπόλοιπων μελών της κοινότητας του Stremio.","WEBSITE_CONTRIBUTE_MONETIZE":"Δημιουργήστε έσοδα με το πρόσθετό σας","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Μόλις αναπτύξετε ένα νέο πρόσθετο για το Stremio, μπορείτε εύκολα να δημιουργήσετε έσοδα μέσω πολλαπλών μεθόδων. Αν σκέφτεστε αυτήν την προοπτική, μπορείτε να επικοινωνήσετε μαζί μας στο ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - θα χαρούμε να ανταλλάξουμε συμβουλές μαζί σας σχετικά με τις επιλογές δημιουργίας εσόδων από τα πρόσθετα.","WEBSITE_CONTRIBUTE_TRANSLATE":"Γίνετε εθελοντής μεταφραστής","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Αν θέλετε να απολαύσετε τις εφαρμογές Stremio σε διαφορετικές γλώσσες, μπορείτε να συμμετάσχετε στην κοινότητα των εθελοντών μεταφραστών μας, οι οποίοι μας βοηθούν να προσθέσουμε εκδόσεις του Stremio σε πολλές διαφορετικές γλώσσες.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Θέλετε να ξεκινήσετε;","WEBSITE_TRANSALTE_STREMIO":"Μετάφραση του Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Επίσημες κοινότητες","WEBSITE_COMMUNITY_OFFICIALS_P1":"Γίνετε μέλος της αναπτυσσόμενης κοινότητας του Stremio. Ακολουθήστε μας στα κοινωνικά δίκτυα και μην ντραπείτε να πείτε ένα «γεια» - λατρεύουμε να γνωρίζουμε τους υποστηρικτές μας! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Ανεπίσημες κοινότητες","STREMIO_COMMUNITY_NL":"Stremio Ολλανδίας","STREMIO_COMMUNITY_BRASIL":"Stremio Βραζιλίας","STREMIO_COMMUNITY_GERMANY":"Stremio Γερμανίας","STREMIO_COMMUNITY_BELGIUM":"Stremio Βελγίου","STREMIO_COMMUNITY_FRANCE":"Stremio Γαλλίας","STREMIO_COMMUNITY_PORTUGAL":"Stremio Πορτογαλίας","STREMIO_COMMUNITY_ITALY":"Stremio Ιταλίας","STREMIO_COMMUNITY_UK":"Stremio ΗΒ","STREMIO_COMMUNITY_USA":"Stremio ΗΠΑ","STREMIO_COMMUNITY_MEXICO":"Stremio Μεξικού","STREMIO_COMMUNITY_ADDONS":"Πρόσθετα Stremio","STREMIO_COMMUNITY_AWESOME":"Το απίθανο Stremio","WEBSITE_COMMUNITY_PARTNERS":"Συνεργάτες και υποστηρικτές","WEBSITE_COMMUNITY_GOODIES":"Καλούδια Stremio","WEBSITE_COMMUNITY_WALLPAPERS":"Ταπετσαρίες","WEBSITE_COMMUNITY_ART":"Συλλογή κοινότητας","WEBSITE_LINK_ART":"Συλλογή κοινότητας","WEBSITE_CONTACT_US":"Επικοινωνία","WEBSITE_CONTACT_US_P1":"Αν έχετε τυχόν απορίες, σχόλια ή προτάσεις, μπορείτε να επικοινωνήσετε μαζί μας μέσω της παρακάτω φόρμας επικοινωνίας.","WEBSITE_CONTACT_US_P2":"Σημειώστε ότι εδρεύουμε στη Βουλγαρία, επομένως ενδέχεται να υπάρξει καθυστέρηση στην απάντησή σας λόγω διαφορών στις ζώνες ώρας.","WEBSITE_CONTACT_US_SUCCESS":"Το μήνυμά σας έχει αποσταλεί. Θα σας απαντήσουμε το συντομότερο δυνατόν.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Παρακαλούμε εισαγάγετε ένα έγκυρο email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Ποιο θέμα αφορά η ερώτησή σας;","WEBSITE_CONTACT_US_Q_OS":"Ποιο είναι το λειτουργικό σας σύστημα;","WEBSITE_CONTACT_US_PH_EMAIL":"Το email σας","WEBSITE_CONTACT_US_PH_MESSAGE":"Μήνυμα","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"Αποστολή","WEBSITE_CONTACT_US_Q_1":"Πώς κάνω εγκατάσταση;","WEBSITE_CONTACT_US_Q_2":"Πώς κάνω κατάργηση εγκατάστασης;","WEBSITE_CONTACT_US_Q_3":"(HTML) Πώς φτιάχνω λαζάνια;","WEBSITE_CONTACT_US_Q_4":"Πρόσθετα","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Τεχνολογία","WEBSITE_TECHNOLOGY_P1":"Αγαπάμε την τεχνολογία και την επιστήμη. </br> Δείτε τι κρύβεται πίσω από το Stremio (είναι όλα ανοικτού κώδικα).","WEBSITE_TECHNOLOGY_P_QT":"Η ανάπτυξη λογισμικού για πολλαπλές πλατφόρμες, στα καλύτερά της.","WEBSITE_TECHNOLOGY_P_MPV":"Ένα δωρεάν, ανοικτού κώδικα, πρόγραμμα αναπαραγωγής πολυμέσων για πολλαπλές πλατφόρμες.","WEBSITE_TECHNOLOGY_P_RN":"Το React Native σας επιτρέπει να αναπτύσσετε εφαρμογές για κινητές συσκευές, μόνο με τη χρήση JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Ενσωματωμένο πλαίσιο πολυμέσων στην εφαρμογή για τη λήψη πολυμέσων.","WEBSITE_TECHNOLOGY_P_REALM":"Το Realm είναι μια πλατφόρμα για κινητές συσκευές και αντικαθιστά τα SQLite και Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Το Node.js είναι ένα ανοικτού κώδικα περιβάλλον εκτέλεσης JavaScript για όλες τις πλατφόρμες.","WEBSITE_TECHNOLOGY_P_RUST":"Η Rust είναι μια γλώσσα πολλαπλών προγραμματιστικών παραδειγμάτων, η οποία εστιάζει στην ασφάλεια και ειδικά στον ασφαλή ταυτοχρονισμό.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Συνεισφορά στο έργο","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Υπάρχουν δύο τρόποι συνεισφοράς στο Stremio για την περαιτέρω βελτίωση του προϊόντος.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Μπορείτε να δωρίσετε τις πολύτιμες γλωσσικές ικανότητές σας μεταφράζοντας την πλατφόρμα...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"ή","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... μπορείτε να αξιοποιήσετε τις ικανότητές σας στον προγραμματισμό για τη δημιουργία προσθέτων κοινότητας. ","WEBSITE_TRANSLATE_STREMIO":"Μετάφραση του Stremio","WEBSITE_404_OH_NO":"Ωχ όχι! Η σελίδα που ψάχνετε δεν είναι εδώ...","WEBSITE_GO_HOME":"Αρχική","WEBSITE_LINK_OTHER_DOWNLOADS":"Άλλες λήψεις","WEBSITE_FAQ_ABR":"Συχνές ερωτήσεις","WEBSITE_SUPPORT":"Υποστήριξη","WEBSITE_DOWNLOAD_4_0_BETA":"Λήψη του Stremio 4 Beta","WEBSITE_GET_FOR_DESKTOP":"Λήψη για υπολογιστή","WEBSITE_LINK_ADDON_COMPETITION":"Διαγωνισμός προσθέτων","WEBSITE_LINK_ART_CONTEST":"Καλλιτεχνικός διαγωνισμός","WEBSITE_MY_ACCOUNT":"Ο λογαριασμός μου","WEBSITE_MAINPAGE_FAQ_001_H1":"Τι είναι το Stremio;","WEBSITE_MAINPAGE_FAQ_001_P1":"Το Stremio είναι ένα σύγχρονο κέντρο πολυμέσων που σας επιτρέπει να παρακολουθήσετε τα πάντα.","WEBSITE_MAINPAGE_FAQ_002_H1":"Πώς λειτουργεί;","WEBSITE_MAINPAGE_FAQ_002_P1":"Μόλις εγκαταστήσετε το Stremio στη συσκευή σας και δημιουργήσετε έναν λογαριασμό, το μόνο που χρειάζεται να κάνετε είναι να επισκεφθείτε τον κατάλογο προσθέτων και να εγκαταστήσετε όποιο πρόσθετο επιθυμείτε. Αυτό ήταν!","WEBSITE_MAINPAGE_FAQ_002_P2":"Έπειτα, μπορείτε να μεταβείτε στις ενότητες «Ανακάλυψη» ή «Πίνακας» για να ξεκινήσετε την εξερεύνηση περιεχομένου.","WEBSITE_MAINPAGE_FAQ_003_H1":"Τι μπορώ να παρακολουθήσω εδώ;","WEBSITE_MAINPAGE_FAQ_003_P1":"Πολλά: Ταινίες, εκπομπές, διαδικτυακά κανάλια, αθλήματα, τηλεοπτικά κανάλια, podcasts και πολλά άλλα. Χάρη στο σύστημα προσθέτων μας, μπορείτε να προσπελάσετε μια ευρεία γκάμα περιεχομένου.","WEBSITE_MAINPAGE_FAQ_004_H1":"Είναι το Stremio λογισμικό ανοικτού κώδικα;","WEBSITE_MAINPAGE_FAQ_004_P1":"Ναι, μπορείτε να δείτε τους εξής συνδέσμους: ${1}εφαρμογή για υπολογιστές${2} και ${3}οργανισμός GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Είναι το Stremio ασφαλές;","WEBSITE_MAINPAGE_FAQ_005_P1":"Ναι. Επειδή είναι λογισμικό ανοικτού κώδικα, ο κώδικάς του είναι δημόσια διαθέσιμος και μπορείτε να τον ελέγξετε και εσείς.","WEBSITE_MAINPAGE_FAQ_006_H1":"Τι γίνεται με το απόρρητό μου;","WEBSITE_MAINPAGE_FAQ_006_P1":"Σεβόμαστε το απόρρητο των χρηστών και δεν συλλέγουμε κανένα προσωπικό δεδομένο, εκτός από τα απολύτως απαραίτητα στοιχεία για τη δημιουργία και τον συγχρονισμό του λογαριασμού σας.","WEBSITE_MAINPAGE_FAQ_006_P2":"Υπάρχει επίσης η ${1}λειτουργία επισκέπτη${2} κατά την εγγραφή, η οποία δεν απαιτεί καθόλου δεδομένα: σε αυτήν τη λειτουργία, δεν γίνεται καμία κλήση στο παρασκηνιακό μας σύστημα. Ωστόσο, δεν περιέχει ορισμένες χρήσιμες λειτουργίες, όπως η δυνατότητα συγχρονισμού βιβλιοθήκης με άλλες συσκευές.","WEBSITE_MAINPAGE_FAQ_007_H1":"Μπορώ να κάνω μετάδοση στην τηλεόρασή μου;","WEBSITE_MAINPAGE_FAQ_007_P1":"Ναι, υποστηρίζουμε Chromecast και μπορείτε να κάνετε μετάδοση τόσο από τον υπολογιστή, όσο και από την κινητή σας συσκευή (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Πόσα πρόσθετα διαθέτει το Stremio;","WEBSITE_MAINPAGE_FAQ_008_P1":"Από τα τέλη του 2019, πάνω από 50 - για περισσότερες πληροφορίες, δείτε τον κατάλογο των προσθέτων μας.","WEBSITE_MAINPAGE_FAQ_009_H1":"Μπορώ να επεκτείνω τον κατάλογο προσθέτων του Stremio;","WEBSITE_MAINPAGE_FAQ_009_P1":"Ναι, ανατρέξετε στα εξής: ${1}PimpMyStremio${2}, ${3}κοινότητες Reddit${4}, ${5}Stremio Downloader${6}, κ.λπ.","WEBSITE_MAINPAGE_FAQ_010_H1":"Ποιες συσκευές υποστηρίζει το Stremio;","WEBSITE_MAINPAGE_FAQ_010_P1":"Διαθέτουμε εφαρμογές για Windows, Mac και Linux. Για τις κινητές συσκευές, υποστηρίζουμε Android και iOS, ωστόσο λάβετε υπόψη ότι η έκδοση για iOS διαθέτει περιορισμένη λειτουργικότητα (δεν υποστηρίζει τα περισσότερα πρόσθετα).","WEBSITE_MAINPAGE_FAQ_010_P2":"Υπάρχουν πολλές συσκευές που βασίζονται στο Android και μπορούν να εκτελέσουν το Stremio, όπως το NVIDIA Shield και το Amazon Fire Stick, αλλά δεν τις υποστηρίζουμε επίσημα.","WEBSITE_MAINPAGE_FAQ_011_H1":"Μπορείτε να προσθέσετε συγκεκριμένο περιεχόμενο στο Stremio;","WEBSITE_MAINPAGE_FAQ_011_P1":"Δυστυχώς, δεν παρέχουμε εμείς το περιεχόμενο, αλλά όσα περισσότερα πρόσθετε έχετε εγκαταστήσει στο Stremio, τόσο περισσότερο περιεχόμενο θα μπορέσετε να βρείτε.","WEBSITE_MAINPAGE_FAQ_012_H1":"Μπορεί το Stremio να κάνει αναπαραγωγή συνδέσμων magnet;","WEBSITE_MAINPAGE_FAQ_012_P1":"Ναι και μπορεί επίσης να κάνει αναπαραγωγή κανονικών συνδέσμων HTTP και αρχείων torrent (μεταφορά και εναπόθεση).","WEBSITE_MAINPAGE_FAQ_013_H1":"Μπορώ να κάνω λήψη ενός βίντεο για προβολή εκτός σύνδεσης;","WEBSITE_MAINPAGE_FAQ_013_P1":"Η διαθεσιμότητα εκτός σύνδεσης αποτελεί επερχόμενη λειτουργία, αλλά εάν επιτρέψετε στο Stremio την προσωρινή αποθήκευση στη συσκευή σας (από τον πίνακα ρυθμίσεων), μπορείτε να παρακολουθήσετε τα βίντεο αργότερα, χωρίς σύνδεση στο διαδίκτυο.","WEBSITE_MAINPAGE_FAQ_014_H1":"Δεν λειτουργεί τίποτα, βοήθεια!","WEBSITE_MAINPAGE_FAQ_014_P1":"Έχετε σίγουρα εγκαταστήσει πρόσθετα; Εάν ναι, δείτε το ${1}κέντρο βοήθειάς${2} μας.","WEBSITE_MAINPAGE_FAQ_015_H1":"Πώς υποστηρίζει το Stremio την ανάπτυξή του;","WEBSITE_MAINPAGE_FAQ_015_P1":"Προβάλλουμε μη παρεμβατικές διαφημίσεις περιστασιακά, αλλά εξετάζουμε το ενδεχόμενο να προχωρήσουμε σε ένα μοντέλο δωρεάς.","WEBSITE_MAINPAGE_FAQ_015_P2":"Για περισσότερες ερωτήσεις, μεταβείτε στο ${1}κέντρο βοήθειάς${2} μας.","HELP_LEARN_MORE":"Βοηθήστε μας να μάθουμε περισσότερα για εσάς.","LIFESTYLE":"Τρόπος ζωής","SPORTS":"Αθλήματα","FOOD_HEALTH":"Φαγητό & υγεία","BEAUTY_FASHION":"Ομορφιά & μόδα","NEWS":"Ειδήσεις","GAMING":"Παιχνίδια","SCIENCE_EDUCATION":"Επιστήμη & εκπαίδευση","MUSIC":"Μουσική","TRAVEL":"Ταξίδια","LATE_NIGHT":"Βραδινό","REALITY":"Ριάλιτι","COMEDY":"Κωμωδία","DIY":"Κατασκευές","TECH":"Τεχνολογία","CINEMA":"Κινηματογράφος","CONTINUE":"Συνέχεια","SLOW_LOADING":"Αργή Φόρτωση;","I_GIVE_UP":"Ακύρωση","LEARN_MORE":"Μάθετε περισσότερα","POOR_SOURCE":"Αυτή η πηγή δεν είναι επαρκώς διαθέσιμη ή η σύνδεση σας στο διαδίκτυο δεν είναι αρκετά γρήγορη","PICK_CATEGORIES_ERR":"Πρέπει να επιλέξετε τουλάχιστον 3 κατηγορίες","ADJUST_TIMING":"Προσαρμογή χρονισμού με ","ADJUST_SIZE":"Προσαρμογή μεγέθους με ","SEARCH_ANYTHING":"Μπορείτε να αναζητήσετε οτιδήποτε...","ALL_CATEGORIES":"Όλα","SEARCH_CATEGORIES":"Ταινίες, σειρές, YouTube & τηλεόραση","SEARCH_PERSONS":"Ηθοποιοί, σκηνοθέτες & σεναριογράφοι","SEARCH_PROTOCOLS":"Σύνδεσμοι HTTP & Magnet","SEARCH_TYPES":"Σύνδεσμοι IMDB/TVDB","WATCHED":"Προβλήθηκε","SHOW_LESS":"Λιγότερα","LAST_SEARCHES":"Πρόσφατες αναζητήσεις","CLEAR_HISTORY":"Απαλοιφή ιστορικού","CHOOSE_SOME":"ΕΠΙΛΕΞΤΕ ΚΑΠΟΙΑ ΑΠΟ ΑΥΤΑ:","NO_WEB_REMOTE":"Δεν ήταν δυνατή η φόρτωση του Web Remote","STREMIO_OFFLINE":"Το Stremio είναι εκτός σύνδεσης","STREMIO_EXPENSIVE_CONNECTION":"Εντοπίσαμε ότι χρησιμοποιείτε σύνδεση δεδομένων κινητής, θέλετε να συνεχίσετε;","USE_DATA":"Χρήση δεδομένων","WARNING":"Προειδοποίηση","MORE_INFO":"Περισσότερες πληροφορίες...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Φόρτωση...","STREMIO_TV_BACK_TO_LANGUAGES":"Πίσω στις γλώσσες","STREMIO_TV_REMOTE":"Τηλεχειριστήριο","STREMIO_TV_GO_TO":"Μεταβείτε στο:","STREMIO_TV_OR_SCAN":"ή σαρώστε το:","STREMIO_TV_ADDON_INSTRUCTIONS":"Παρακαλούμε ακολουθήστε τις οδηγίες για να εγκαταστήσετε τα προτιμώμενα πρόσθετά σας.","STREMIO_TV_LIVE_TV":"Ζωντανή TV","STREMIO_TV_RESUME_WATCHING":"Συνέχιση παρακολούθησης","STREMIO_TV_LOADING_BACKGROUND":"Φόρτωση παρασκηνίου","STREMIO_TV_CHECKING_AUTHENTICATION":"Έλεγχος ταυτοποίησης","STREMIO_TV_LOADING_BOARD":"Φόρτωση πίνακα","STREMIO_TV_LOGIN_HEADER_LINE_1":"Θέλουμε οι χρήστες μας να έχουν την καλύτερη δυνατή, εξατομικευμένη εμπειρία με το λογισμικό μας.","STREMIO_TV_LOGIN_HEADER_LINE_2":"Αυτός είναι ο λόγος που σας ζητούμε να δημιουργήσετε ή/και να συνδεθείτε στον λογαριασμό σας.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Σας ευχαριστούμε για την κατανόηση,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Η ομάδα του Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Για να χρησιμοποιήσετε το Web Remote με το smartphone/tablet/υπολογιστή σας:","STREMIO_TV_WIFI_SETUP":"Ρύθμιση Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Το Stremio Circle δεν εντόπισε σύνδεση στο διαδίκτυο.","STREMIO_TV_WIFI_DETAILS_1":"Συνδεθείτε στο:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Χρησιμοποιήστε τον κωδικό πρόσβασης:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Ανοίξτε ένα πρόγραμμα περιήγησης με τον σύνδεσμο:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Προεπιλεγμένο","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Από την τελευταία παρακολούθηση","STREMIO_TV_LIBRARY_SORT_NAME":"Από το όνομα","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Από τις φορές που παρακολουθήσατε","STREMIO_TV_DETAILS_SEASON_NUMBER":"Κύκλος ${1}","STREMIO_TV_STREAMS_LOADING":"Φορτωμένα ${1} / ${2} πρόσθετα...","STREMIO_TV_STREAMS_STILL_LOADING":"Το ${1} ακόμα φορτώνει ...","STREMIO_TV_PLAYER_SETTINGS":"Ρυθμίσεις προγράμματος αναπαραγωγής","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Καθυστέρηση υποτίτλων","STREMIO_TV_PLAYER_AUDIO_DELAY":"Καθυστέρηση ήχου","STREMIO_TV_PLAYER_VIDEO_SCALING":"Κλιμάκωση βίντεο","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Μη υποστηριζόμενη πηγή ροής","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Αποτυχία ανοίγματος εξωτερικού συνδέσμου","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Αναπαραγωγή με τον ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Αναπαραγωγή με τον libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Αλλαγή στον libVLC player λόγω σφάλματος αναπαραγωγής","STREMIO_TV_ADDONS_TITLE":"Χρησιμοποιήστε το Stremio στο τηλέφωνο ή τον υπολογιστή σας για να εγκαταστήσετε ή να διαμορφώσετε πρόσθετα και πατήστε \\"Συγχρονισμός πρόσθετων\\"","STREMIO_TV_ADDONS_SUBTITLE":"Σημείωση: βεβαιωθείτε ότι χρησιμοποιείτε τον ίδιο λογαριασμό Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Συγχρονισμός πρόσθετων","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Επιτυχής συγχρονισμός πρόσθετων","STREMIO_TV_ADDONS_SYNC_FAILED":"Αποτυχία συγχρονισμού πρόσθετων","STREMIO_TV_META_LINK_FAILED":"Αποτυχία ανοίγματος μετα-συνδέσμου","STREMIO_TV_CATALOG_LOADING":"Ο κατάλογος φορτώνει...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Η γλώσσα της εφαρμογής ενημερώθηκε","STREMIO_TV_SETTINGS_THEME_UPDATED":"Το θέμα ενημερώθηκε","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Προεπιλεγμένη εφαρμογή αναπαραγωγής","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"Εξωτερική εφαρμογή αναπαραγωγής","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Προτιμητέα γλώσσα","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Εναλλακτική Γλώσσα","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Πιθανά προβλήματα αναπαραγωγής σε ορισμένες συσκευές","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Ορισμένες μορφές βίντεο ενδέχεται να μην λειτουργούν","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Χωρίς προσωρινή αποθήκευση","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Προεπιλεγμένη","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Ήπιο","STREMIO_TV_SETTINGS_PROFILE_FAST":"Γρήγορο","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Πολύ γρήγορο","STREMIO_TV_SETTINGS_SERVER_URL":"URL διακομιστή ροής","STREMIO_TV_SETTINGS_SERVER_VERSION":"Έκδοση διακομιστή","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Άγνωστη","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Έκδοση του Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Επεξεργασία διεύθυνσης URL διακομιστή","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Εισαγάγετε μια διεύθυνση url διακομιστή ροής","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Για να διαβάσετε την Πολιτική Απορρήτου του Stremio, επισκεφτείτε:","STREMIO_TV_SETTINGS_TOS_TEXT":"Για να διαβάσετε τους Όρους και τις Προϋποθέσεις του Stremio, επισκεφτείτε:","STREMIO_TV_NAV_SEARCH":"Αναζήτηση","STREMIO_TV_NAV_HOME":"Αρχική","STREMIO_TV_NAV_DISCOVER":"Περιήγηση","STREMIO_TV_NAV_LIBRARY":"Βιβλιοθήκη","STREMIO_TV_NAV_MOVIES":"Ταινίες","STREMIO_TV_NAV_SERIES":"Σειρές","STREMIO_TV_NAV_CHANNELS":"Κανάλια","STREMIO_TV_NAV_TV":"Ζωντανά","STREMIO_TV_NAV_SETTINGS":"Ρυθμίσεις","STREMIO_TV_NAV_ADDONS":"Πρόσθετα","STREMIO_TV_LOGIN_TITLE":"Σύνδεση λογαριασμού","STREMIO_TV_LOGIN_EXPIRES_IN":"Λήγει σε","STREMIO_TV_LOGIN_STEP_ONE":"Σαρώστε τον κωδικό QR παραπάνω ή μεταβείτε στο","STREMIO_TV_LOGIN_STEP_TWO":"Συνδεθείτε στον λογαριασμό σας στο Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Νέος σύνδεσμος","STREMIO_TV_LOGIN_LINK_REFRESHED":"Ο κωδικός σύνδεσης ανανεώθηκε","STREMIO_TV_SEARCH_PLACEHOLDER":"Πληκτρολόγησε κάτι","STREMIO_TV_SEARCH_NO_ADDONS":"Δεν ζητήθηκαν πρόσθετα για καταλόγους!","STREMIO_TV_SEARCH_BUTTON":"Αναζήτηση","STREMIO_TV_SEARCH_KEY_DEL":"Διαγραφή όλων","STREMIO_TV_SEARCH_KEY_SPACE":"Κενό","STREMIO_TV_SEARCH_KEY_CLEAR":"Διαγραφή","STREMIO_TV_SEARCH_HISTORY_TITLE":"Ιστορικό αναζήτησης","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Μπορείτε να αναζητήσετε Τίτλους, Ηθοποιούς, Κανάλια και άλλα...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Διαγράψτε το ιστορικό αναζήτησης","STREMIO_TV_FILTERS_DESCRIPTION":"Επιλέξτε ένα από τα παρακάτω φίλτρα","FILTERS":"Φίλτρα","SETTINGS":"Ρυθμίσεις","ACCOUNT":"Λογαριασμός","LOGOUT":"Αποσύνδεση","THEMES":"Θέματα","PLAYBACK":"Αναπαραγωγή","PLAYBACK_SPEED":"Ταχύτητα Αναπαραγωγής","AUDIO_TRACKS":"Κομμάτια ήχου","VIDEOS":"Βίντεο","SERVER":"Διακομιστής","LINKS":"Σύνδεσμοι","ABOUT":"Πληροφορίες","INTERFACE":"Εμφάνιση","ANIMATIONS":"Οπτικά εφέ","STATUS":"Κατάσταση","LANGUAGE":"Γλώσσα","SIZE":"Μέγεθος","DELAY":"Καθυστέρηση","BOLD":"Έντονα γράμματα","TEXT_COLOR":"Χρώμα κειμένου","OUTLINE_COLOR":"Χρώμα περιγράμματος","BACKGROUND_COLOR":"Χρώμα φόντου","BACKGROUND_BLUR":"Θάμπωμα φόντου","SEEK_TIME_DURATION":"Διάρκεια χρόνου παράλειψης","AUTO_PLAY":"Αυτόματη αναπαραγωγή επόμενου επεισοδίου","PLAY_NOW":"Αναπαραγωγή τώρα","MARK_AS_WATCHED":"Επισήμανση ως προβεβλημένο","MARK_AS_UNWATCHED":"Επισήμανση ως μη προβεβλημένο","REWIND_TO_BEGINNING":"Προβολή από την αρχή","CONTINUE_WATCHING":"Συνεχίστε να βλέπετε","ALL":"Όλα","SECONDS":"Δευτερόλπετα","ON":"Ανοιχτοί","OFF":"Κλειστοί","RELOAD":"Επανάληψη φόρτωσης","EDIT_URL":"Επεξεργασία συνδέσμου URL","NONE":"Κανένα","EMBEDDED":"Ενσωματωμένοι","REMOTE_SWITCH_DEVICES":"Εναλλαγή συσκευών","REMOTE_VIDEOS":"Βίντεο","REMOTE_ADJUST_TIMING":"Προσαρμογή χρονισμού","REMOTE_ADJUST_SIZE":"Προσαρμογή μεγέθους","REMOTE_COULD_NOT_BE_LOADED":"Δεν ήταν δυνατή η φόρτωση του Web Remote","REMOTE_RETRY":"Επανάληψη","TORRENT_PROFILE_DEFAULT":"Προεπιλεγμένο","TORRENT_PROFILE_SOFT":"Ήπιο","TORRENT_PROFILE_FAST":"Γρήγορο","TORRENT_PROFILE_ULTRA_FAST":"Πολύ γρήγορο","FAQ_001_H1":"Τι είναι το Stremio;","FAQ_001_P1":"Το Stremio είναι ένα λογισμικό κέντρου πολυμέσων που έχει σχεδιαστεί για εύκολη πρόσβαση σε ψυχαγωγικά βίντεο. Σας επιτρέπει να οργανώσετε και να παρακολουθείτε την προσωπική σας συλλογή ταινιών, σειρών, καναλιών και ζωντανής τηλεόρασης.","FAQ_001_P2":"Το Stremio συλλέγει το περιεχόμενο, που προβάλλει σε εσάς, από τον τοπικό σας δίσκο και το σύστημα προσθέτων μας.","FAQ_001_P3":"Θα σας ειδοποιήσει επίσης όταν κυκλοφορήσουν νέα επεισόδια/βίντεο/ταινίες που σας ενδιαφέρουν και θα σας προσφέρει προτάσεις ταινιών.","FAQ_02_H1":"Πόσο μοιάζει το Stremio με το Kodi και το Plex;","FAQ_02_P1":"Έχουμε εμπνευστεί από αυτά τα δύο λογισμικά. Όμως έχουν διαφορετικούς στόχους - το Stremio αφορά αποκλειστικά τα ψυχαγωγικά βίντεο και προσπαθεί να γίνει η πιο γνωστή και εύχρηστη λύση.","FAQ_02_P2":"Το Stremio δεν θα προσφέρει ποτέ τόσες λειτουργίες και δυνατότητες προσαρμογής, όσες το Kodi και το Plex, αλλά είναι σημαντικά πιο απλό στη χρήση. ${1} Δοκιμάστε το κι εσείς ${2} :)","FAQ_03_H1":"Πόσο μοιάζει το Stremio με το Netflix;","FAQ_03_P1":"Το Netflix αποτελεί μία από τις εμπνεύσεις μας. Προσπαθούμε να επιτύχουμε την εμπειρία χρήσης του Netflix, σε συνδυασμό με πολλά άλλα «καλούδια». Το πιο σημαντικό όμως είναι ότι σας παρέχουμε την ελευθερία να διαχειρίζεστε τη δική σας βιβλιοθήκη και να προσθέτετε νέες πηγές περιεχομένου με το σύστημα προσθέτων μας.","FAQ_03_P2":"Αυτό καθιστά το Stremio απεριόριστα επεκτάσιμο, ώστε να μην περιορίζεστε ποτέ στο περιεχόμενο που αποφασίζει να προσθέσει το Netflix. Για παράδειγμα, μέσω του Stremio μπορείτε να παρακολουθήσετε περιεχόμενο από το ${1} Filmon.tv ${2}, το ${3} Twitch.tv${4}, το ${5}YouTube${6}, το ${7}Vodo${8}, ακόμα και από το ίδιο το ${9}Netflix${10}!","FAQ_04_H1":"Πόσο μοιάζει το Stremio με το Flipboard;","FAQ_04_P1":"Δεν λαμβάνουμε τόσο συχνά αυτήν την ερώτηση, εκτός αν μιλάμε με άτομα από νεοφυείς εταιρείες :)","FAQ_04_P2":"Το Stremio είναι εκ σχεδιασμού μια εφαρμογή συγκέντρωσης περιεχομένου, αποτελώντας πρακτικά ένα Flipboard για βίντεο. Αυτό είναι ιδιαίτερα προφανές στην ενότητα «Πίνακας», η οποία παρέχει καταλόγους και ειδοποιήσεις νέων επεισοδίων/βίντεο για όσα ακολουθείτε, όπως και το Flipboard.","FAQ_05_H1":"Πόσο μοιάζει το Stremio με το Popcorn Time;","FAQ_05_P1":"Το Stremio και το Popcorn Time μοιάζουν όσον αφορά το περιβάλλον χρήστη, επειδή δεν υπάρχουν και τόσοι πολλοί τρόποι για τη σωστή υλοποίηση ψυχαγωγικών καταλόγων βίντεο :)","FAQ_05_P2":"Ωστόσο, το Popcorn Time εστιάζει στη ροή torrent από συγκεκριμένες πηγές, ενώ το Stremio κάνει απλά συγκέντρωση περιεχομένου - δεν περιορίζεται σε μια συγκεκριμένη πηγή περιεχομένου.","FAQ_05_P3":"Επιπλέον, δεν παρέχουμε κανένα πρόσθετο για torrent από προεπιλογή, επομένως το Stremio δεν καλύπτει τις δυνατότητες του Popcorn Time με την επίσημη λειτουργικότητά του.","FAQ_05_P4":"Μια ακόμα αξιοσημείωτη διαφορά είναι ότι ο κώδικας του Popcorn Time είναι πλήρως ανοικτός, ενώ ο κώδικας του Stremio είναι ${1}μερικώς ανοικτός{2}.","FAQ_06_H1":"Θα προσθέσετε αυτήν την ταινία/σειρά;","FAQ_06_P1":"Δυστυχώς, όχι :(","FAQ_06_P2":"Όπως αναφέρουμε και σε πολλές άλλες απαντήσεις, το Stremio δεν παρέχει από μόνο του περιεχόμενο - όλα προστίθενται μέσω του συστήματος προσθέτων. Σε περίπτωση που έχετε κάποιο αίτημα περιεχομένου, μπορείτε να χρησιμοποιήσετε το κουμπί «Αναφορά» στο πρόγραμμα αναπαραγωγής, το οποίο θα στείλει ένα email στον δημιουργό του προσθέτου που χρησιμοποιείτε τη δεδομένη στιγμή.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Θα δημιουργήσετε πρόσθετο για το X;","FAQ_08_P1":"Είναι πολύ πιθανό.","FAQ_08_P2":"Αν έχετε κάποια ιδέα για ένα πρόσθετο, στείλτε μας ένα email στο ${1}office@stremio.com${2}, αλλά παρακαλούμε βεβαιωθείτε ότι η ιδέα σας δεν θα παραβιάσει κανένα πνευματικό δικαίωμα ή όρο χρήσης.","FAQ_08_P3":"Αυτήν τη στιγμή, τα επόμενά μας σχέδια περιλαμβάνουν πρόσθετα για το FandangoNOW, το Filmon.tv και το Crunchyroll.","FAQ_09_H1":"Το Stremio χρησιμοποιεί το BitTorrent;","FAQ_09_P1":"Ναι, το Stremio υποστηρίζει το BitTorrent ως πρωτόκολλο ροής. Μπορείτε να το χρησιμοποιήσετε με ένα πρόσθετο για torrent, με εναπόθεση ενός αρχείου .torrent στο Stremio ή με επικόλληση ενός συνδέσμου magnet στη γραμμή αναζήτησης.","FAQ_09_P2":"Παρακαλούμε σημειώστε ότι το μόνο επίσημο πρόσθετο που χρησιμοποιεί BitTorrent είναι το ${1}Vodo${2}, που παρέχει ανεξάρτητο περιεχόμενο για το οποίο επιτρέπεται η διανομή με BitTorrent.","FAQ_09_P3":"Δεν υποστηρίζουμε τη χρήση τρίτων προσθέτων που ενδέχεται να οδηγήσουν σε καταπάτηση πνευματικών δικαιωμάτων.","FAQ_10_H1":"Τι μπορώ να παρακολουθήσω στο Stremio με τα επίσημα πρόσθετα;","FAQ_10_P1":"Από προεπιλογή, μπορείτε να παρακολουθήσετε περιεχόμενο από το Filmon.tv, το YouTube και το Vodo στο Stremio, με το ενσωματωμένο πρόγραμμα αναπαραγωγής. Επιπροσθέτως, διαθέτουμε ένα πρόσθετο για το Twitch.tv και κάποιους άλλους παρόχους.","FAQ_10_P2":"Με όλα τα παραπάνω, παρέχεται μια συλλογή από:","FAQ_10_L1":"Δημοφιλή τηλεοπτικά κανάλια από το Filmon.tv - για παράδειγμα, το E4, το BBC, το Bollyworld TV","FAQ_10_L2":"Όλο το YouTube - για παράδειγμα, το BBC News, το Top Gear, το Vevo, τον PewDiePie","FAQ_10_L3":"Ανεξάρτητες ταινίες με το Vodo","FAQ_10_L4":"Διαδικτυακές μεταδόσεις παιχνιδιών με το Twitch.tv","FAQ_10_P3":"Επιπλέον, υπάρχουν πολλές πηγές περιεχομένου που παρέχονται από τα πρόσθετα Guidebox και Netflix, τα οποία <b>δεν</b> κάνουν αναπαραγωγή εξ ολοκλήρου εντός του Stremio, αλλά ανακατεύθυνση στην αντίστοιχη υπηρεσία. Για παράδειγμα, το πρόσθετο Guidebox σάς προσφέρει μια συλλογή από ταινίες που μπορείτε να παρακολουθήσετε δωρεάν στις ΗΠΑ, από υπηρεσίες όπως το TubiTV και το Crackle.","FAQ_11_H1":"Το Stremio δεν εγκαθίσταται, τι να κάνω;","FAQ_11_P1":"Εάν χρησιμοποιείτε Windows, δοκιμάστε ${1}αυτό το εναλλακτικό πρόγραμμα εγκατάστασης${2}.","FAQ_11_P2":"Εάν χρησιμοποιείτε Mac OS X, σημειώστε ότι δεν υποστηρίζουμε καμία έκδοση πριν από το OS X Mavericks (10.9).","FAQ_11_P3":"Εάν χρησιμοποιείτε Linux, σημειώστε ότι υποστηρίζουμε μόνο εκδόσεις 64-bit (x64) του Linux αυτήν τη στιγμή.","FAQ_11_P4":"Αν δεν μπορείτε ακόμα να λύσετε το πρόβλημά σας, παρακαλούμε στείλτε μας μήνυμα στην {1}ομάδα μας στο Facebook${2}.","FAQ_12_H1":"Γιατί με προειδοποιεί το πρόγραμμα προστασίας από ιούς; Είναι ασφαλές το Stremio;","FAQ_12_P1":"Σας διαβεβαιώνουμε ότι το Stremio είναι ${1}100% «καθαρό»${2}.","FAQ_12_P2":"Το λογισμικό σας, σάς προειδοποιεί επειδή το πρόγραμμα εγκατάστασής μας περιλαμβάνει διαφημίσεις, οι οποίες θεωρούνται ως ad-ware από ορισμένα προγράμματα προστασίας από ιούς.","FAQ_12_P3":"Αν ακόμα έχετε αμφιβολίες, μπορείτε να δοκιμάσετε το ${1}εναλλακτικό πρόγραμμα εγκατάστασής${2} μας.","FAQ_13_H1":"Πώς μπορώ να δημιουργήσω ένα πρόσθετο;","FAQ_13_P1":"Για αρχή, προτείνουμε να δείτε τη ${1}μονάδα του συστήματος προσθέτων${2} μας στο GitHub.","FAQ_13_P2":"Έπειτα, μπορείτε να ακολουθήσετε τον ${1}εισαγωγικό οδηγό${2} μας.","FAQ_13_P3":"Αν δεν διαθέτετε γνώσεις προγραμματισμού, παρακαλούμε αναφέρετε την ιδέα σας στην ${1}κοινότητα του Reddit${2} και επικοινωνήστε μαζί μας σχετικά με την ιδέα σας στο ${3}office@stremio.com${4}.","FAQ_14_H1":"Πώς δημοσιεύονται τα πρόσθετα;","FAQ_14_P1":"Όταν δημιουργήσετε ένα πρόσθετο και έναν κεντρικό υπολογιστή και προσθέσετε ένα πεδίο <b>ακροσημείου (endpoint)</b> στο αρχείο manifest σας, το οποίο δείχνει σε μια λειτουργική διεύθυνση προσθέτου, το πρόσθετο θα δημοσιευτεί αυτόματα στον ${1}κατάλογο προσθέτων${2} μας.","FAQ_14_P2":"Αυτό συμβαίνει επειδή το τμήμα διακομιστή της μονάδας stremio-addons κάνει αυτόματα κλήση στο API μας, προκειμένου να ανακοινώσει το πρόσθετο. Όταν το API μας επαληθεύσει το <b>ακροσημείο (endpoint)</b> σας ως έγκυρο πρόσθετο, τότε θα αρχίσει να εμφανίζεται στον κατάλογο.","FAQ_15_H1":"Μπορώ να εκτελέσω το Stremio στο πρόγραμμα περιήγησής μου;","FAQ_15_P1":"Προς το παρόν, όχι. Αλλά έρχεται σύντομα!","FAQ_15_P2":"Αν έχετε περιέργεια να δείτε μια πρώιμη έκδοση, μπορείτε να τη βρείτε εδώ: ${1}alpha4.strem.io${2}. Σημειώστε ότι η ροή είναι απενεργοποιημένη σε αυτήν την έκδοση. Υποστηρίζουμε τα Chrome, Firefox, Opera και Edge.","FAQ_16_H1":"Η μετάδοση σε τηλεόραση δεν λειτουργεί / οι υπότιτλοι δεν λειτουργούν","FAQ_16_P1":"Η μετάδοση σε τηλεόραση χρησιμοποιεί την τεχνολογία DLNA που δεν είναι κοινή για όλες τις μάρκες και τα μοντέλα τηλεοράσεων. Για τον λόγο αυτό, δεν μπορούμε να τη δοκιμάσουμε σε όλες τις περιπτώσεις, επομένως δεν είναι σε καμία περίπτωση τέλεια. Εργαζόμαστε για τη συνεχή βελτίωση της λειτουργίας, αλλά δεν μπορούμε να προσδιορίσουμε πότε θα αρχίσει να λειτουργεί κανονικά το DLNA στην τηλεόρασή σας.","FAQ_16_P2":"Αν δεν βλέπετε καν την τηλεόρασή σας στο μενού μετάδοσης, παρακαλούμε δοκιμάστε να απενεργοποιήσετε και να ενεργοποιήσετε εκ νέου τη σύνδεση δικτύου σας (στα Windows, κάντε δεξί κλικ στο «Δίκτυο» και επιλέξτε «Ενεργοποίηση/Απενεργοποίηση»). Επίσης, επανεκκινήστε το router, την τηλεόραση και τον υπολογιστή σας.","FAQ_16_P3":"Αν εξακολουθείτε να αντιμετωπίζετε ζητήματα, μπορείτε να μας βοηθήσετε στέλνοντας τη μάρκα και το μοντέλο της τηλεόρασής σας στο ${1}office@stremio.com${2}.","FAQ_16_P4":"Εν τω μεταξύ, προτείνουμε το Chromecast, το οποίο υποστηρίζουμε πολύ καλά ή μπορείτε απλά να συνδέσετε την τηλεόρασή σας στον υπολογιστή σας με ένα καλώδιο HDMI.","FAQ_17_H1":"Το Stremio «παγώνει» ή/και καταρρέει, τι μπορώ να κάνω;","FAQ_17_P1":"Πρώτα απ\' όλα, εάν χρησιμοποιείτε Windows 7 με το πρόγραμμα προστασίας AVG: υπάρχει πρόβλημα με αυτόν τον συνδυασμό. Το πρόβλημα έγκειται στο ίδιο το AVG και δεν υπάρχει κάποιος τρόπος να το επιλύσουμε από την πλευρά μας. Δυστυχώς, οι εξαιρέσεις ή η απενεργοποίηση του λογισμικού ασφαλείας δεν θα λειτουργήσει. Η μόνη λύση είναι να αντικαταστήσετε το AVG με κάποιο άλλο πρόγραμμα.","FAQ_17_P2":"Αν δεν είναι αυτό το πρόβλημα, αλλά χρησιμοποιείτε Windows, παρακαλούμε ενημερώστε στο πιο πρόσφατο Service Pack και ενημερώστε/εγκαταστήστε εκ νέου τα προγράμματα οδήγησης της GPU και έπειτα, δοκιμάστε ξανά.","FAQ_17_P3":"Αν δεν έχει επιλυθεί ακόμα το πρόβλημά σας ή χρησιμοποιείτε Mac ή Linux, παρακαλούμε στείλτε μας μια αναφορά με ακριβείς λεπτομέρειες για το πρόβλημα στην ${1}ομάδα μας στο Facebook${2}.","FAQ_18_H1":"Πώς μπορώ να δημιουργήσω ένα πρόσθετο;","FAQ_18_P1":"Για αρχή, προτείνουμε να δείτε τη ${1}μονάδα του συστήματος προσθέτων${2} μας στο GitHub.","FAQ_18_P2":"Έπειτα, μπορείτε να ακολουθήσετε τον ${1}εισαγωγικό οδηγό${2} μας.","FAQ_18_P3":"Αν δεν διαθέτετε γνώσεις προγραμματισμού, παρακαλούμε αναφέρετε την ιδέα σας στην ${1}κοινότητα του Reddit${2} και επικοινωνήστε μαζί μας σχετικά με την ιδέα σας στο ${3}office@stremio.com${4}.","FAQ_19_H1":"Γιατί το Stremio καταλαμβάνει χώρο στον δίσκο;","FAQ_19_P1":"Το Stremio διαθέτει <b>τοπική προσωρινή μνήμη (cache)</b> για την προσωρινή διατήρηση των αρχείων βίντεο που παρακολουθείτε.","FAQ_19_P2":"Αυτή έχει δύο πλεονεκτήματα: πρώτον, επιτρέπει στο Stremio να προφορτώσει το βίντεο για πιο ομαλή ροή. Δεύτερον, διατηρεί τα βίντεο στην τοπική προσωρινή μνήμη, ώστε να μπορείτε να τα παρακολουθείτε εκτός σύνδεσης.","FAQ_19_P3":"Μπορείτε να προσαρμόσετε το μέγεθος των αρχείων που επιτρέπεται να αποθηκεύει το Stremio με τη ρύθμιση <b>Προσωρινή μνήμη</b> του πίνακα ρυθμίσεων. Το Stremio μπορεί να διατηρήσει έως και το καθορισμένο μέγεθος (π.χ. 2GB) στον δίσκο σας, εκτός αν το τρέχον βίντεο ροής είναι μεγαλύτερο, στην οποία περίπτωση θα πρέπει το Stremio να δεσμεύσει επαρκή χώρο ώστε να διατηρήσει το βίντεο μέχρι να ολοκληρώσετε τη ροή του.","FAQ_20_H1":"Πού βρίσκεται ο φάκελος προσωρινής μνήμης;","FAQ_20_P1":"Στα Windows, είναι ο φάκελος «stremio-cache» στον δίσκο που επιλέξατε από τις Ρυθμίσεις (π.χ. «E:\\\\stremio-cache»)","FAQ_20_P2":"Στο MacOS, είναι στη διαδρομή «~/Library/Application Support/Stremio/stremio-cache»","FAQ_20_P3":"Στο Linux, είναι στη διαδρομή «~/.stremio/stremio-cache» ή «~/stremio-cache»","FAQ_21_H1":"Λαμβάνω το σφάλμα «Δεν βρέθηκε διακομιστής ροής», τι μπορώ να κάνω;","FAQ_21_P1":"Αν λάβετε αυτό το σφάλμα, υπάρχουν δύο πιθανές εξηγήσεις:","FAQ_21_P2":"1) Προσπαθείτε να χρησιμοποιήσετε ένα πρόσθετο με πηγή YouTube/BitTorrent, μέσω της ${1}διαδικτυακής έκδοσης${2}. Σε αυτήν την περίπτωση, θα πρέπει να εγκαταστήσετε την εφαρμογή μας για υπολογιστές από τον ${3}ιστότοπό${4} μας.","FAQ_21_P3":"2) Κάτι δεν πάει καλά με την εγκατάσταση του Stremio σας. Σε αυτήν την περίπτωση, δοκιμάστε να εγκαταστήσετε εκ νέου την πιο πρόσφατη έκδοση για υπολογιστές από τον ${1}ιστότοπό${2} μας. Αν αυτό δεν βοηθήσει, δοκιμάστε να απενεργοποιήσετε τα προγράμματα προστασίας από ιούς και τα τείχη προστασίας, επανεκκινήστε τον υπολογιστή σας και προσπαθήστε ξανά. Αν δεν λειτουργήσει ούτε αυτό, παρακαλούμε στείλτε μας μήνυμα στην ${3}ομάδα μας στο Facebook${4}.","FAQ_22_H1":"Δεν μπορώ να δω/χρησιμοποιήσω τα περισσότερα πρόσθετα στο iOS","FAQ_22_P1":"Λόγω των περιορισμών στους όρους και τις προϋποθέσεις του Apple App Store, διατίθεται μόνο ένα συγκεκριμένο σύνολο προσθέτων για την εφαρμογή του iOS.","FAQ_22_P2":"Αλλά μην ανησυχείτε - θα διατεθούν περισσότερα πρόσθετα για το iOS στο μέλλον και ίσως προστεθεί η δυνατότητα χρήσης όλων των προσθέτων του Stremio, χάρη στη σύνδεση της εφαρμογής για iOS με τον διακομιστή ροής του Stremio."}')},3865:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Movie","TYPE_series":"Series","TYPE_tv":"TV channel","TYPE_channel":"Channel","TYPE_other":"Other","TYPE_movie_PL":"Movies","TYPE_series_PL":"Series","TYPE_tv_PL":"TV channels","TYPE_channel_PL":"Channels","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Back","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Discover","Board":"Board","Library":"Library","My Library":"My Library","Calendar":"Calendar","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"search","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Add to Library","REMOVE_FROM_LIB":"Remove from Library","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Trailer","WATCH_TRAILER":"Watch Trailer","WATCH_NOW":"Watch Now","SHOW":"Show","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb Rating","YEAR":"Year","DIRECTOR":"Director","WRITER":"Writer","LEAD_ACTORS":"Lead Actors","CAST":"Cast","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Aired","SEASONS":"Seasons","GENRE":"Genre","CATALOG":"Catalog","SUMMARY":"Summary","SHOW_MORE":"Show More","SIMILAR":"Similar","UPCOMING":"Upcoming","ENDED":"Ended","DURATION":"Duration","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"search videos","SEARCH_PLACEHOLDER":"search or paste URL","ADDON":"addon","ADDONS":"Addons","OFFICIAL":"official","ADDONS_OFFICIAL":"Official Stremio Addons","ADDONS_POPULAR":"Popular in your area","ADDON_FREE":"free","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"subscription","ADDON_STREAM_GEORESTRICTED":"not available in your area","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Available Streams","NO_STREAM":"No streams were found","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Show all addons »","ADDON_CATALOGUE_MORE":"Install addons","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons collection already exist","ADDON_REPO_ERR":"Error occurred while adding collection","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Cannot uninstall addon, it is protected","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection URL","ERR_NOT_ADDON_URL":"Not a valid addon URL","ERR_DETECTFROMURL":"Cannot find addon/collection from this URL","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Syncing installed addons to your account failed","SETTINGS_DATA_EXPORT":"Export user data","ADDON_PULL_FAILED":"Syncing installed addons from your account failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Movie still in theaters","WATCH_IN_CINEMA":"Watch it in your local cinema","IN_THEATER":"In cinema","GET_TICKETS":"Get tickets","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.<br>Please come back in a few minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Add it to your library to get notified once it is available.","GET_NOTIFIED_WHEN_AVAILABLE":"You will get notified once it is available.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from local files, YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streaming from","CASTING_TO":"Casting to","NETWORK_STATUS":"Network status","STREAM_SPEED":"Stream speed:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Active:","PEERS_CONNECTED":"Connected:","PEERS_WAITING":"Waiting:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"loading...","PLAYING_LOCAL":"playing from local file","PLAYING_CACHE":"playing from cache","WRONG_SUBS":"Wrong subtitles?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Choose a device to watch on","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Phone / Tablet","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Change subtitles for ","SUBTITLES_CHANGE_NONE":"There are no other subtitles for this language, sorry.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternatively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Season","EPISODE":"Episode","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"recent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rating","SORT_WATCHED":"watched","SORT_YEAR":"year","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"Resume","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"Dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oscar Winners","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Warning: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Re-launch now!","UPGRADE":"New version is available! Upgrade to the latest Stremio version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Continue with Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"or","I_ACCEPT":"I accept the","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Terms and Conditions","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Passwords don\'t match","SIGN_UP":"Sign up","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Log in","LOG_OUT":"Log out","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Guest login","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"click here","WRONG_PASSWORD":"Wrong email or password. In case you have forgotten your password, ","SET_A_PASS":"set a password","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"This email was used with a Facebook login.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Activate this addon?","ADDON_REPO_ADD":"Addon collection URL","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"What\'s new","BUTTON_CONTINUE":"Continue","BUTTON_ACTIVATE":"Activate","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Cancel","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Here is how you can start:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from <span>Facebook</span>","IMPORT_TRAKT":"Import your media library from <span>Trakt</span>","IMPORT_DISCOVER":"Find interesting stuff from <span>Discover</span>","IMPORT_DISK":"Import movies or shows you have on your <span>local disk</span>","PLEASE_CREATE_ACC":"Please <u>create an account</u> to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from <span>Discover</span>","IMPORT_DISK_SIGNUP":"Sign up and import movies or shows you have on your <span>local disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Change password","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Contact support","SETTING_LANGUAGE":"Language","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Quit","CONNECTED":"Connected","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"January","February":"February","March":"March","April":"April","May":"May","June":"June","July":"July","August":"August","September":"September","October":"October","November":"November","December":"December","Monday":"Monday","Tuesday":"Tuesday","Wednesday":"Wednesday","Thursday":"Thursday","Friday":"Friday","Saturday":"Saturday","Sunday":"Sunday","Action":"Action","Comedy":"Comedy","War":"War","Family":"Family","Animation":"Animation","Adventure":"Adventure","Fantasy":"Fantasy","Crime":"Crime","Mystery":"Mystery","Romance":"Romance","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Music","Biography":"Biography","Documentary":"Documentary","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon collections","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You Can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Subscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS (limited version)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Stremio 4 beta Now","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can access a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},3989:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filmo","TYPE_series":"Serio","TYPE_tv":"Televida Kanalo","TYPE_channel":"Kanalo","TYPE_other":"Alia","TYPE_movie_PL":"Filmoj","TYPE_series_PL":"Serioj","TYPE_tv_PL":"Televidaj kanaloj","TYPE_channel_PL":"Kanaloj","TYPE_other_PL":"Aliaj","TYPE_ALL":"All","VIDEO":"Video","BACK":"Malantaŭen","MORE":"Pli","DONE":"Farite","COPY":"Kopii","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Esplori","Board":"Tabulo","Library":"Biblioteko","My Library":"Mia biblioteko","Calendar":"Kalendaro","NOTIFICATION_ONLINE":"Nun vi estas enreta","NOTIFICATION_OFFLINE":"Nune vi estas eksterreta","INTERNET_CONNECTION":"Reta Konekto","STORAGE_FULL_TITLE":"Atentu: Via datumstoro estas plena!","STORAGE_FULL_TEXT":"Stremio ne kapablos savi viajn agordojn, preferojn aŭ ensalut-informacion. Konsideru re-ŝalti aŭ re-instali Stremio-n.","SEARCH":"serĉi","SEARCH_NO_RESULTS":"Neniuj rezultoj trovitaj","SEARCH_EXPLANATION_CONTENT":"Serĉi filmojn, seriojn, Youtube kaj TV-kanalojn","SEARCH_EXPLANATION_PEOPLE":"Serĉi aktorojn, reĝisorojn kaj verkistojn","SEARCH_PASTE_LINKS":"Algui HTTP kaj Magnetajn ligilojn","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Aldoni al Biblioteko","REMOVE_FROM_LIB":"Forigi el Biblioteko","ADDED_TO_LIB":"Aldonite al via Biblioteko","REMOVED_FROM_LIB":"Forigita el via Biblioteko","TRAILER":"Film-anonco (trailer)","WATCH_TRAILER":"Spekti Film-anoncon","WATCH_NOW":"Spekti Nun","SHOW":"Vidi","SHOW_MOVIE":"Montri Filmon","WATCH_RANDOM":"Vidi hazarze","IMDB_RATING":"IMDb Poentaro","YEAR":"Jaro","DIRECTOR":"Reĝisoro","WRITER":"Verkisto","LEAD_ACTORS":"Ĉefaj geaktoroj","CAST":"Rolularo","CREW":"Crew","SHOW_MORE_CAST":"Montri pli »","AIRED":"Aerumita","SEASONS":"Sezonoj","GENRE":"Ĝenro","CATALOG":"Katalogo","SUMMARY":"Resumo","SHOW_MORE":"Montri pli","SIMILAR":"Simila","UPCOMING":"Venonta","ENDED":"Finiĝita","DURATION":"Daŭro","FEATURED":"Elstara","METADATA":"Metadatoj","CATEGORY":"Kategorio","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"serĉi videojn","SEARCH_PLACEHOLDER":"Serĉi aŭ algui ligilon","ADDON":"aldonaĵo","ADDONS":"Aldonaĵoj","OFFICIAL":"oficiala","ADDONS_OFFICIAL":"Oficialaj Stremio-aj Aldonaĵoj","ADDONS_POPULAR":"Populara ĉe via regiono","ADDON_FREE":"senpaga","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Abono","ADDON_STREAM_GEORESTRICTED":"Ne disponebla ĉe via regiono","ADDON_STREAM_OFFLINECACHE":"Eksterreta Kaŝmemoro","ADDON_STREAM_LOCALFILE":"loka dosiero","SHARE_ADDON":"Konigi Aldonaĵon","AVAILABLE_STREAMS":"Disponeblaj elsendfluoj","NO_STREAM":"Neniu elsendfluo estis trovita","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Por trovi pli elsendfluojn, bonvolu instalu pli aldonaĵojn","STREAM_NOT_SUPPORTED":"La elektita elsendfluo ne estas suportata en ĉi plataformo.","ADDON_CATALOGUE":"Montri ĉiujn aldonaĵojn »","ADDON_CATALOGUE_MORE":"Instali aldonaĵojn","REPO_ADDED":"Deponejo aldonita","ADDON_REPO_EXIST_ERR":"Ĉi tiu aldonaĵa kolekto jam ekzistas","ADDON_REPO_ERR":"Eraro okazis dum aldonado de kolekto","ADDON_ADD_ERR":"Eraro okazis dum aldonado de aldonaĵo","ERR_ADDON_PROTECTED":"Oni ne povas malinstali la aldonaĵon, ĝi estas protektita","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Io misfunkciis - aŭtentikigo eble malsukcesis","ERR_NOT_COLLECTION_URL":"Ĉi tiu ne estas URL por kolekto ","ERR_NOT_ADDON_URL":"Ĉi tiu ne estas valida URL por aldonaĵo","ERR_DETECTFROMURL":"Oni ne povas trovi aldonaĵon/kolekton el ĉi tiu URL","ADDON_DUPLICATE_WARNING":"Atentu: duobligita aldonaĵo","ADDON_COLLECTION_SET_FAILED":"Sinkronigado de instalitaj aldonaĵoj al via konto malsukcesis","SETTINGS_DATA_EXPORT":"Eksportu uzantajn datumojn","ADDON_PULL_FAILED":"Sinkronigado de instalitaj aldonaĵoj el via konto malsukcesis","REFRESH_ON_CLICK":"Alklaku por reprovi","STILL_IN_THEATER":"Filmo ankoraŭ en kinejoj","WATCH_IN_CINEMA":"Spektu ĝin ĉe via loka kinejo","IN_THEATER":"Ĉe kinejo","GET_TICKETS":"Aĉeti boletojn","UPCOMING_EPISODE":"Venonta Epizodo","UPCOMING_EPISODE_MESSAGE":"Ĉi tiu epizodo estos elsendita","MISSING_DATE_EPISODE":"Dato de epizodo mankas","MISSING_DATE_EPISODE_MESSAGE":"Eble ĉi tiu epizodo ne elsendiĝis ankoraŭ","CHANNEL_NOT_SCRAPED":"Ĉi tiu kanalo ankoraŭ ne estis akirita.<br>Bonvolu reveni post kelkaj minutoj.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Aldonu ĝin al via biblioteko por ricevi sciigon kiam ĝi estos disponebla.","GET_NOTIFIED_WHEN_AVAILABLE":"Vi estos sciigita kiam ĝi estos disponebla.","WARNING_STREAMING_SERVER":"Atentu: loka elsendfluservilo ne estis trovita. Elsendfluado el lokaj dosieroj, Youtube kaj BitTorrent ne estos disponeblaj.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Atentu: ĉi tiu video eble ne estas subtenita de via aparataro (hardware). Sciu, ke la ludado povas esti malrapida.","PLAYER_ERROR":"Ho ve, ludila eraro!","PLAYER_ERROR_LOOKSLIKE":"Ŝajnas ke","PLAYER_ORIENTATION":"Orientiĝo de la ludilo","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Ŝlosita","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensilo","PLAYER_ORIENTATION_LANDSCAPE":"Orientiĝo de la ludilo ŝlosita kiel pejzaĝa reĝimo","PLAYER_ORIENTATION_SENSOR":"Aŭtomata orientiĝo de la ludilo (per sensilo)","PLAYER_PLAYBACK_SPEED":"Rapideco","PLAYER_PLAYBACK_ERROR":"Ludila eraro, bonvolu reprovi","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Nekonata eraro","PLAYER_PLAYBACK_ERROR_DEFAULT":"Pardonon! Ĉi tiu video ne povas esti ludita per {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Sekvos","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Forĵeti","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Spekti nun","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"elsendado el","CASTING_TO":"Elsendante al","NETWORK_STATUS":"Reta stato","STREAM_SPEED":"Elsendada rapideco:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Active:","PEERS_CONNECTED":"Connected:","PEERS_WAITING":"Atendante:","TRANSCODING_WARNING":"Atentu: transcoding video.","STREAM_LOADING":"ŝargante...","PLAYING_LOCAL":"ludante el loka dosiero","PLAYING_CACHE":"ludante el kaŝmemoro","WRONG_SUBS":"Ĉu malĝustaj subtitoloj?","ERR_SUBS_LOADING_TITLE":"Eraro dum ŝarĝo de subtitoloj","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Elektu aparaton per kiun spekti","NO_CAST_DEVICES":"Ne disponeblas aparatoj por elsendi.","NO_SETTINGS":"Agordoj ne disponeblas.","PHONE_TABLET":"Phone / Tablet","SUBTITLES":"Subtitoloj","SUBTITLES_CHANGE":"Ŝangi subtitoloj por ","SUBTITLES_CHANGE_NONE":"Subtitloj por ĉi lingvo ne disponeblas, pardonon.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternative,","SUBTITLES_ADJUST_DELAY":"Sinkronigi subtitoloj:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Aŭ uzu <span>G</span> / <span>H</span> klavojn dum ludado por sinkronigi.","SUBTITLES_ADJUST_DELAY_TIP":"KONSILO: vi povas uzi <span>G</span> / <span>H</span> klavojn dum ludado por sinkronigi.","SUBTITLES_DELAY":"Subtitoloj sinkronado:","SUBTITLES_LOADING":"Ŝarĝante subtitoloj...","SUBTITLES_UNAVAILABLE":"Eksteraj subtitoloj ne disponeblas","SUBTITLES_DISABLED":"Malebligita","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sezono","EPISODE":"Episodo","SPECIAL":"Special","SORT":"ordigi","SORT_BY":"Ordigi laŭ ","FILTER":"filtri","SORT_TRENDING":"tendenca","SORT_RECENT":"lastatempa","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"poentaro","SORT_WATCHED":"vidita","SORT_YEAR":"jaro","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Nova por vi","New Episodes":"Novaj Epizodoj","New Videos":"Novaj Videoj","Recommendations":"Rekomendoj","LIBRARY_RESUME":"Daŭrigi","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Detaloj","LIBRARY_RESUME_DISMISS":"Forĵeti","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oskar-premiitoj","DISCOVER_WARNING_TITLE":"Ho ve!","DISCOVER_EMPTY_CATALOG":"Ĉi tiu aldonaĵo resendas malplenan enhavon.","DISCOVER_ADULT_WARNING":"La enhavo estas videbla nur por plenkreskuloj. Ĉu vi estas +18-aĝa?","DISCOVER_NOADDON_WARNING":"Atentu: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"La enhavo ne ŝargis, eraro okazis.","DISCOVER_ADDON_UNINSTALLED":"Ĉi tiu enhavo ne plu disponeblas, vi eble malinstalis la aldonaĵon.","UNINSTALL_THIS_ADDON":"Malinstali ĉi tiun aldonaĵon","ERR_ADDON_NOT_INSTALLED":"Ĉi tiu aldonaĵo ne estas instalita. Instali nun?","DETAIL_RECEIVE_NOTIF_SERIES":"Ricevi sciigoj de novaj epizodoj Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Ricevi sciigoj de novaj videoj","SIDEBAR_SHOW_STREAMS":"Montri elsendojn","RELAUNCH":"Remalfermi nun!","UPGRADE":"Nova versio estas disponebla! Ĝisdatigu Stremio-n a la lasta versio!","RELOAD_UI":"Reŝargi la uzantan interfacon","MANUAL_UPDATE_TITLE":"Ĝisdatigu vian Stremio version","MANUAL_UPDATE_LINE1":"Vi estas uzante malĝisdatiga version de Stremio, kion tute ne estas rekomendita.","MANUAL_UPDATE_LINE2":"Bonvolu ĝisdatigi kiel eble plej baldaŭ.","BUTTON_UPDATE_LATTER":"Ne nun","BUTTON_UPDATE_NOW":"Ĝisdatigi","ANONYMOUS_USER":"Anonima uzanto","DONT_HAVE_ACC":"Ĉu vi ankoraŭ ne havas konton?","HAVE_ACC":"Ĉu vi jam havas konton?","PASSWORD":"Pasvorto","PASSWORD_CONFIRM":"Konfirmu pasvorton","EMAIL":"Retpoŝto","FB_LOGIN":"Daŭri per Facebook","FB_NOTHINGSHARED":"Nenio estas disdonita sen via permeso","FB_NOPOST":"Ni ne afiŝos nenion en via nomo","OR":"aŭ","I_ACCEPT":"Mi akceptas la","I_ACCEPT_BY_CLICKING":"Alklakante la supran butonon mi atestas, ke mi akceptas la ","TOS":"Uzkondiĉoj","MUST_ACCEPT_TERMS":"Vi devas akcepti la uzkondiĉojn","PASSWORDS_NOMATCH":"Pasvortoj ne koincidas","SIGN_UP":"Registriĝi","SIGN_UP_EMAIL":"Registriĝi per retpoŝto","CLICK_TO_SIGN_UP":"Klaku ĉi por ensaluti.","LOG_IN":"Ensaluti","LOG_OUT":"Elsaluti","EXIT_FULLSCREEN":"Malplenekranigi","ENTER_FULLSCREEN":"Plenekranigi","PLAY_URL_MAGNET_LINK":"Ludi URL/Magneta ligilon","HELP_FEEDBACK":"Helpo kaj sugestoj","TERMS_OF_SERVICE":"Serv-kondiĉoj","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"Pri Stremio","USER_PANEL":"Uzantaj agordoj","LOGIN_LABEL":"Login","GUEST_LOGIN":"Ensaluti kiel gasto","GUEST_LOGIN_NOTICE":"Gasta ensaluto ne estas rekomendita. Uzado de regula ensaluto permesas al Stremio sinkronigi vian Bibliotekon, ricevi sciigojn pri viaj plej ŝatataj serioj/kanaloj. Ĉu vi certas, ke vi volas daŭrigi?","GUEST_LOGIN_NOTICE_2":"Gasta ensaluto ne estas rekomendita - vi ne havos sinkronigitajn sciigojn de Biblioteko kaj Estraro, kiuj estas esencaj funkcioj de Stremio. Ĉu vi certas, ke vi volas daŭrigi?","CLICK_HERE":"klaku ĉi-tie","WRONG_PASSWORD":"Erara retpoŝtadreso aŭ pasvorto. Se vi forgesis vian pasvorton, ","SET_A_PASS":"defini pasvorton","RESET_PASSWORD":"Restarigi pasvorton","FORGOT_PASSWORD":"Ĉu vi forgesis vian pasvorton?","EMAIL_USED_WITH_FB":"Ĉi tiu retpoŝtadreso jam estis uzata kun Facebook-ensaluto.","INVALID_EMAIL":"Bonvolu entajpi validan retpoŝtadreson","INVALID_PASSWORD":"Bonvolu entajpi validan pasvorton","CONN_ERR":"Eraro de konekto - Bonvolu reprovi poste.\\n\\nSe ĉi tiu eraro daŭras, malŝaltu fajroŝirmilojn/kontraŭvirusajn programojn (precipe Bitdefender).","IMPORT_FROM_GUEST":"Importu Bibliotekon el via gasta konto","RECEIVE_UPDATES_EMAIL":"Ricevu ĝisdatigojn al via retpoŝto de Stremio","LOGIN_FAILED":"Ensaluto malsukcesis.","SIGNUP_FAILED":"Aliĝo malsukcesis.","SEARCH_FAILED":"Serĉo malsukcesis","EMAIL_USED":"Ĉi tiu retpoŝtadreso jam estas uzata.","WAITING_FB_LOGIN":"Ensaluto per Facebook...","EXTERNAL_PLAYER_TITLE":"Ludi per ekstera ludilo","EXTERNAL_REMEMBER_PLAYER":"Ĉu vi volas memori vian selekton","EXTERNAL_ALWAYS_PLAY":"Jes","EXTERNAL_ONLY_ONCE":"Ne","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Diru al ni pri tio, kion vi ŝatas","INTRO_TASTE_LONG":"Diru al ni pri tio, kion vi ŝatus spekti","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Helpu nin lerni pli pri vi.","INTRO_TASTE_CHOOSE_THESE":"Elektu kelkajn el ĉi tiuj:","INTRO_TASTE_CHOOSE_MIN":"Elektu almenaŭ 3 kategoriojn","INTRO_TASTE_CHOOSE_MIN_ERR":"Vi devas elekti almenaŭ 3 kategoriojn!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sportoj","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"Novaĵoj","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Scienco kaj Edukado","INTRO_TASTE_MUSIC":"Musiko","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Komedio","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selektita aldonaĵo ne estas subtenata por ĉi tiu platformo.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Ĉu aktivigi ĉi tiun aldonaĵon?","ADDON_REPO_ADD":"Addon collection URL","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Kio estas nova?","BUTTON_CONTINUE":"Continue","BUTTON_ACTIVATE":"Activate","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Cancel","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Forĵeti ĉion","BUTTON_VIEW_ALL":"vidi ĉion","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Here is how you can start:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from <span>Facebook</span>","IMPORT_TRAKT":"Import your media library from <span>Trakt</span>","IMPORT_DISCOVER":"Find interesting stuff from <span>Discover</span>","IMPORT_DISK":"Importu filmojn aŭ spektaklojn kiujn vi havas ĉe via <span>loka disko</span>","PLEASE_CREATE_ACC":"Please <u>create an account</u> to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from <span>Discover</span>","IMPORT_DISK_SIGNUP":"Sign up and import movies or shows you have on your <span>local disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Agordoj","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Ludilo","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Malfermi per VLC","SETTINGS_UI_LANGUAGE":"Interfaca Lingvo","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Importi el Facebook","SETTINGS_IMPORT_DISK":"Importi el loka disko","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Peti forigon de konto","SETTINGS_CHANGE_PASSWORD":"Ŝangi pasvorton","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Kontaktu subtenon","SETTING_LANGUAGE":"Lingvo","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"versio","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Fini","CONNECTED":"Konektita","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januaro","February":"Februaro","March":"Marto","April":"Aprilo","May":"Majo","June":"Junio","July":"Julio","August":"Aŭgusto","September":"Septembro","October":"Oktobro","November":"Novembro","December":"Decembro","Monday":"Lundo","Tuesday":"Mardo","Wednesday":"Merkredo","Thursday":"Ĵaŭdo","Friday":"Vendredo","Saturday":"Sabato","Sunday":"Dimanĉo","Action":"Agadfilmo","Comedy":"Komedio","War":"Milito","Family":"Familia","Animation":"Animacio","Adventure":"Aventuroj","Fantasy":"Fantasto","Crime":"Krimo","Mystery":"Mistero","Romance":"Romance","Drama":"Dramo","Horror":"Horora Filmo","Thriller":"Suspenso","Sci-Fi":"Sciencfikcio","Music":"Music","Biography":"Biografio","Documentary":"Dokumentario","Sport":"Sport","Musical":"Musical","Western":"Vesterno","Film-Noir":"Film-Noir","News":"News","History":"Historio","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Vivstilo","Science & Education":"Scienco kaj Edukado","Cooking & Health":"Kuirado kaj Sano","Beauty & Fashion":"Beauty & Fashion","Sports":"Sportoj","News & Politics":"Novaĵoj kaj Politiko","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religio","Kids":"Infana","Body & Soul":"Body & Soul","Education":"Edukado","Indian Tv":"Hinda Televido","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Scienca Televido","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"nova video","new episode":"nova epizodo","new movie":"nova filmo","recommended":"rekomendita","we recommend":"ni rekomendas","offer of the day":"offer of the day","news":"novaĵoj","music video":"muzikvideo","CTX_SHOW_HOTKEYS":"Montri Agklavoj","CTX_DISMISS_NOTIF":"Forĵeti sciigojn","CTX_DISMISS_ALL":"Forĵeti ĉion","CTX_SHARE":"Konigi","CTX_COPY_SHARE_LINK":"Kopii ligilon por kunhavigi","CTX_COPY_MAGNET_LINK":"Kopii magnetan ligilon","CTX_COPY_STREAM_LINK":"Kopii elsendfluan ligilon","CTX_DOWNLOAD_VIDEO":"Elŝuti ĉi-tiun videon","CTX_DOWNLOAD_SUBS":"Elŝuti subtitolojn","CTX_VIEW_ON_YOUTUBE":"Spekti ĉe Youtube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Spekti","CTX_WATCHED":"Spektita","CTX_WATCH_BEGINNING":"Spekti ekde la komenco","CTX_WATCH_MOBILE":"Spekti per poŝtelefono","CTX_REWIND":"Rebobeni al komenco","CTX_MARK_WATCHED":"Marki kiel spektita","CTX_MARK_NON_WATCHED":"Marki kiel ne spektita","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Marki la ceterajn kiel rigarditajn","CTX_UNMARK_REST":"Marki la ceterajn kiel ne-spektitajn","CTX_RECEIVE_NEW_NOTIF":"Ricevi novajn sciigojn","CTX_REMOVE_CACHE":"Forigi el kaŝmemoro","CTX_REMOVE_CACHE_EP":"Forigi epizodon el kaŝmemoro","CTX_OPEN_CONTAINING":"Malfermu enhavantan dosierujon","CTX_REMOVE":"Forigi de la biblioteko","CTX_AVAILABLE_OFFLINE":"Disponebla eksterrete","CTX_PAUSED":"Paŭzo","CTX_ALWAYS_ON_TOP":"Ĉiam supre ĉio","CTX_FULLSCREEN":"Plenekrane","CTX_WRONG_SUBS":"Malĝustaj subtitoloj?","CTX_REPORT_ISSUES":"Raporti problemon","CTX_COPY":"Kopii","CTX_PASTE":"Algui","CTX_CLEAR":"Viŝi","CTX_CLEAR_RECENT_SEARCHES":"Viŝi freŝajn serĉojn","HELLO_THERE":"Saluton!","HOPE_YOU_ENJOY":"Ni esperas, ke vi ĝuos Stremio-n kaj ke ĝi jam estas unu el viaj plej ŝatataj aplikaĵoj!","WHO_ARE_WE":"Kiuj ni estas? Ni estas la teamo malantaŭ ĝi - du uloj kiuj intense laboras ĉiutage dum la lastaj 3 jaroj por fari ĉi tiun produkton pli kaj pli bona.","SUPPORT_US":"Se vi ŝatas uzi Stremio, se Stremio estas valora por vi - diskonigu ĝin!","SPREAD_THE_WORD":"Kunhavigu ĝin kun viaj amikoj nun, diskonigu pri Stremio","MORE_PEOPLE":"Ju pli da homoj uzas Stremio-n, des pli bone ĝi fariĝos!","SEND_A_LINK":"Aŭ sendu ligilon al nia retejo","TIP_LOCALFILES":"Konsilo: vi povas ŝovi kaj demeti lokaj videaj dosierojn en Stremio-n","ADDON_MY":"Miaj Aldonaĵoj","ADDON_COMMUNITY":"Komunumaj aldonaĵoj","ADDON_OFFICIAL":"Oficialaj Aldonaĵoj","ADDON_REPOS":"Aldonaĵa kolekto","ADDON_SEARCH":"Serĉi Aldonaĵoj","ADDON_INSTALL":"Instali","ADDON_CONFIGURE":"Agordi","ADDON_UNINSTALL":"Malinstali","ADDON_UPGRADE":"Ĝisdatigi","ADDON_INSTALLED":"Instalita","ADDON_INSTALLED_MSG":"Aldonaĵo instalita!","ADDON_UPGRADED_MSG":"Aldonaĵo ĝisdatita!","ADDON_UNKNOWN":"Nekonata","ADDON_ERR":"Aldonaĵ-instalado eraro!","ADDON_DISCONNECTED":"Malkonektita","ADDON_APP_MISSING":"la aplikaĵo por ĉi tiu fonto ne estas instalita. Ĉu vi volas instali ĝin nun?","ADDON_APP_INSTALL":"Instali nun","ADDON_PAGE":"Paĝo de la aldonaĵo","ADDON_TOP_CONTENT":"La plej bona de ĉi tiu aldonaĵo","ADDON_PROVIDES":"Ĉi tiu aldonaĵo donos al vi:","ADDON_WATCH":"Spekti #{types} nun!","ADDON_WATCH_FREE":"Spekti #{types} SENPAGE nun!","ADDON_ADDON":"Aldonaĵo","ADDON_SUPPORTED_TYPES":"Subtenataj tipoj","ADDON_SUPPORTED_CATALOGS":"Subtenataj katalogoj","ADDON_PROVIDES_DISCOVER":"Pli da #{types} en Discover","ADDON_PROVIDES_STREAMS":"Spekti #{types}","ADDON_PROVIDES_STREAMS_FREE":"Spekti #{types} SENPAGE","ADDON_PROVIDES_SUBTITLES":"Subtitoloj por #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"Neniu informo trovita pri tio ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Daŭre spekti","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmoj elektitaj speciale por vi.<br />Ĉi tiu filmo estas ekzempla rekomendo.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Spektu tuj!","WEBSITE_SLOGAN_ALL":"La tuta video-enhavo, kiun vi ĝuas en unu loko","WEBSITE_SLOGAN_NEW":"Ĉio, kion vi povas spekti","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Spekti el","WEBSITE_DOWNLOAD":"Elŝuti nun!","WEBSITE_DOWNLOAD_FOR":"Elŝutu Nun Por","WEBSITE_IS_DESKTOP":"Stremio estas komputila aplikaĵo, malfermu ĉi tiun paĝon je via komputilo kaj elŝutu ĝin","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Hejmo","WEBSITE_PAGE_FEATURES":"Funkcioj","WEBSITE_PAGE_ADDONS":"Aldonaĵoj","WEBSITE_PAGE_TECH":"Teknologio","WEBSITE_PAGE_CREATE_ADDON":"Kreu aldonaĵon","WEBSITE_PAGE_CONTACTS":"Kontaktoj","WEBSITE_PAGE_BLOG":"Blogo","WEBSITE_TYPE_movie":"Filmog","WEBSITE_TYPE_series_PL":"Filmoj","WEBSITE_TYPE_tv":"Viva televido","WEBSITE_TYPE_channel":"Kanaloj","WEBSITE_STREMIO_WHAT_IS":"Stremio estas aplikaĵo, kiu helpas vin organizi kaj tuj spekti viajn plej ŝatatajn videojn, filmojn, televidseriojn kaj televidkanalojn..","WEBSITE_FEATURES_WATCH":"Spektu tuj en HD","WEBSITE_FEATURES_WATCH_DETAIL":"Alklaku kaj ludu viajn plej ŝatatajn filmojn, televidajn programojn, filmetojn kaj televidajn kanalojn.","WEBSITE_FEATURES_SUBS":"Aŭtomataj Subtitoloj","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Importi el Facebook","WEBSITE_LIB_LOCAL":"Aldonu el via loka disko","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"Ni amas teknologion, ni amas frenezan sciencon!\\nStremio uzas la jenajn malfermitkodajn teknologiojn","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donaci Bitcoin:","WEBSITE_FAQ":"Plej Oftaj Demandoj","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Demandoj","WEBSITE_TOS":"Uzkondiĉoj","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"Pri","WEBSITE_PAGE_BECOME_PARTNER":"Iĝu partnero","WEBSITE_ALL_YOU_CAN_WATCH":"Libereco por Spekti\\nĈion Kion Vi Volas.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Kio estas Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio estas kompleta centro por videoenhava kolektado. Malkovru, organizu kaj spektu filmetojn el ĉiaj fontoj sur iu ajn aparato, kiun vi posedas.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio estas moderna aŭdvidaĵa centro, integrala solvo por via amuziĝo. Vi povas malkovri, spekti kaj organizi video-enhavon per facile instaleblaj aldonaĵoj.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Filmoj, televidaj programoj, viva televido aŭ retkanaloj - Stremio disponigas por vi ĉion ĉi.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importi el facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Aliĝu al la festo nun","WEBSITE_DEVICES_ALL":"Facile uzebla en ĉiuj viaj aparatoj;","WEBSITE_EXTENDABLE_CATALOG":"Senfine etendebla videokatalogo;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Mojosaj funkcioj por organizi viajn aŭdvidaĵojn;","WEBSITE_AS_SEEN_ON":"Kiel vi vidis ĝin en","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Pri ni","WEBSITE_LINK_TECHNOLOGY":"Teknologio","WEBSITE_LINK_APPS":"Aplikaĵoj","WEBSITE_LINK_DOWNLOADS":"Elŝutoj","WEBSITE_MORE":"Pli","WEBSITE_LINK_ADDONS":"Aldonaĵoj","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Kontribuu","WEBSITE_LINK_COMMUNITY":"Komunumo","WEBSITE_LINK_BLOG":"Blogo","WEBSITE_MORE_MORE":"... kaj pli","WEBSITE_LINK_HELP":"Helpcentro","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privatecaj politikoj","WEBSITE_SUBSCRIBE":"Aboni","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Via Retpoŝto","WEBSITE_COMMUNITY":"Komunumo","WEBSITE_LINK_PRAVACY_LEGAL":"Privateco kaj legalaĵo","WEBSITE_WHY":"Kial ni faras kion ni faras","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAMO","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Funkcioj","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Facile malkovru novan enhavon","WEBSITE_FEATURES_DISCOVER_P":"Facile esplori novaj filmoj, televidaj spektakloj, serioj kaj kanaloj por spekti. Serĉu laŭ kategorio, ĝenro, poentaro, lastatempeco, noveco, ktp. aŭ simple tajpu nomon por trovi. Stremio faciligas trovante novan videoenhavon tre facile.","WEBSITE_FEATURES_ALL_CONTENT":"Ĉiuj viaj videoenhavoj en unu ekrano","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organizu vian videobibliotekon","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Ĝuu vian videon enhavon sur granda ekrano","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Spektu videon el multaj diversaj fontoj","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Kreu aldonaĵon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Spektu Netflix-aj filmoj kaj ret-serioj.","WEBSITE_ADDONS_CREATE":"Kreu aldonaĵon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Elŝutoj","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS (limited version)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Kontribuu","WEBSITE_CONTRIBUTE_P1":"La platformo Stremio estas liberafontkoda kaj vi povas facile krei aldonaĵo por enhavo kiu ne estas indeksita ankoraŭ.","WEBSITE_CONTRIBUTE_WHY":"Kial vi devus krei aldonaĵon?","WEBSITE_CONTRIBUTE_WHY_P1":"Atingu nova spektantaro por via videoenhavo","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Iĝu volontula tradukisto","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Ĉu vi avidas por komenci?","WEBSITE_TRANSALTE_STREMIO":"Traduku Stremio-n","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Komunuma Artgalerio","WEBSITE_LINK_ART":"Komunuma artgalerio","WEBSITE_CONTACT_US":"Kontaktu nin","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Bonvolu entajpi vian retpoŝton!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Pri kio temas via demando?","WEBSITE_CONTACT_US_Q_OS":"Kiu estas via Operaciumo?","WEBSITE_CONTACT_US_PH_EMAIL":"Via Retpoŝto","WEBSITE_CONTACT_US_PH_MESSAGE":"Mesaĝo","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SENDI","WEBSITE_CONTACT_US_Q_1":"Kiel instali","WEBSITE_CONTACT_US_Q_2":"Kiel malinstali?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Aldonaĵoj","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Teknologio","WEBSITE_TECHNOLOGY_P1":"Ni amas teknologion kaj frenezan sciencon. </br> Jen kio ebligas Stremio-n (ĉio estas malfermitkoda).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"Senpaga, malfermitfonta kaj plurplatforma plurmedia ludilo.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Kontribuu al la projekto","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Estas du manieroj per kiuj vi povas kontribui kun Stremio kaj helpi al ni plibonigi ĝin eĉ pli!.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Vi povas donaci viajn valorajn lingvokapablojn tradukante la platformon...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"aŭ","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... vi povas uzi viajn programadajn kapablojn por krei komunumajn aldonaĵojn. ","WEBSITE_TRANSLATE_STREMIO":"Traduku Stremio-n","WEBSITE_404_OH_NO":"Ho ve! La paĝo kiu vi serĉas ne estas ĉi tie...","WEBSITE_GO_HOME":"Iru hejmen","WEBSITE_LINK_OTHER_DOWNLOADS":"Aliaj elŝut-opcioj","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Subteni","WEBSITE_DOWNLOAD_4_0_BETA":"Elŝutu Stremio-n 4 beta nun!","WEBSITE_GET_FOR_DESKTOP":"Akiru ĝin por komputilo","WEBSITE_LINK_ADDON_COMPETITION":"Aldonaĵa konkurso","WEBSITE_LINK_ART_CONTEST":"Arta konkurso","WEBSITE_MY_ACCOUNT":"Mia konto","WEBSITE_MAINPAGE_FAQ_001_H1":"Kio estas Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio estas moderna plurmedia centro, kiu donas al vi la liberon spekti ĉion, kion vi volas.","WEBSITE_MAINPAGE_FAQ_002_H1":"Kiel ĝi funkcias?","WEBSITE_MAINPAGE_FAQ_002_P1":"Post kiam vi instalos Stremio sur via aparato kaj kreos konton, vi nur devas viziti la katalogon de aldonaĵoj kaj instali ajnan aldonaĵon, kiun vi volas, kaj vi estas bona por preta por ekkomenci!","WEBSITE_MAINPAGE_FAQ_002_P2":"Post tio, vi povas iri al la sekcioj Discover aŭ Board por komenci esplori enhavon.","WEBSITE_MAINPAGE_FAQ_003_H1":"Kion mi povas spekti ĉi tie?","WEBSITE_MAINPAGE_FAQ_003_P1":"Multaĵon: Filmoj, Televidaj Spektakloj, Retaj Kanaloj, Sporto, Televidaj kanaloj, aŭskulti Podkastojn kaj multe pli. Danke al nia aldonaĵa sistemo, vi povas akiri ĉiajn enhavojn.","WEBSITE_MAINPAGE_FAQ_004_H1":"Ĉu Stremio estas malfermitkoda?","WEBSITE_MAINPAGE_FAQ_004_P1":"Jes, vi povas viziti la jenajn ligilojn: ${1}desktop app${2} kaj ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Ĉu estas Stremio sekura?","WEBSITE_MAINPAGE_FAQ_005_P1":"Jes: ĉar ĝi estas libera programaro, la kodo estas publike alirebla kaj vi mem povas revizii ĝin.","WEBSITE_MAINPAGE_FAQ_006_H1":"Kio pri mia privateco?","WEBSITE_MAINPAGE_FAQ_006_P1":"Ni respektas la privateco de la uzantoj, tial ni ne kolektas nenian personalan datumon, krom la minimunon esencialan por krei kaj sinkronigi vian konton.","WEBSITE_MAINPAGE_FAQ_006_P2":"Ankaŭ ekzistas ${1}Gasta reĝimo${2} ĉe la aliĝo, kiu postulas neniujn datumojn: en ĉi tiu reĝimo, neniuj vokoj estas faritaj al nia servilo. Tamen, ĝi forĵetas utilajn funkciojn, kiel sinkronigi vian bibliotekon inter aparatoj.","WEBSITE_MAINPAGE_FAQ_007_H1":"Ĉu mi povas elsendi al mia televidilo?","WEBSITE_MAINPAGE_FAQ_007_P1":"Jes, ni subtenas Chromecast-on kaj vi povas elsendi el kaj labortablaj kaj el poŝtelefonaj aplikaĵoj (Android)..","WEBSITE_MAINPAGE_FAQ_008_H1":"Kiom da aldonaĵoj Stremio havas?","WEBSITE_MAINPAGE_FAQ_008_P1":"Je 2019, pli ol 50 - por plia informo, vidu nian aldonaĵan katalogon.","WEBSITE_MAINPAGE_FAQ_009_H1":"Ĉu Stremio povas esti etendita preter kio estas en la aldonaĵa katalogo?","WEBSITE_MAINPAGE_FAQ_009_P1":"jes, vi povas rigardi la jenajn: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, ktp.","WEBSITE_MAINPAGE_FAQ_010_H1":"Kiujn aparatojn Stremio subtenas?","WEBSITE_MAINPAGE_FAQ_010_P1":"Ni havas labortablaj aplikaĵoj por Vindozo, Mac kaj Linukso. Por poŝtelefono, ni subtenas Android kaj iOS, kvankam konsciu, ke iOS estas limigita en funkcioj (ne subtenas la plejmultajn aldonaĵojn).","WEBSITE_MAINPAGE_FAQ_010_P2":"Estas multaj Android-bazitaj aparatoj sur kiuj vi povas ruli Stremio-n, kiel NVIDIA Shield kaj Amazon Fire Stick, sed ni ne oficiale subtenas ilin.","WEBSITE_MAINPAGE_FAQ_011_H1":"Ĉu vi povas aldoni certan enhavon al Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Pardonu, ni mem provizas neniun enhavon, sed ju pli da Stremio-aldonaĵoj vi instalos, des pli da enhavo vi povos trovi.","WEBSITE_MAINPAGE_FAQ_012_H1":"Ĉu Stremio povas ludi magnetligojn","WEBSITE_MAINPAGE_FAQ_012_P1":"Jes, kaj ĝi ankaŭ povas ludi normalajn HTTP-ligilojn kaj torentajn dosierojn (ŝovi kaj demeti).","WEBSITE_MAINPAGE_FAQ_013_H1":"Ĉu mi povas elŝuti videon kaj spekti ĝin eksterrete?","WEBSITE_MAINPAGE_FAQ_013_P1":"Eksterreta disponebleco estas venonta funkcio, sed se vi permesas al Stremio konservi kaŝmemoron en via aparato (ĉe la agorda panelo) vi povas spekti la videojn senkonekte.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nenio funkcias, helpu min!","WEBSITE_MAINPAGE_FAQ_014_P1":"Ĉu vi certas, ke vi instalis aldonaĵojn? Se jes, iru al nia ${1}helpcentro${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Kiel Stremio subtenas ĝian programadon?","WEBSITE_MAINPAGE_FAQ_015_P1":"Ni prezentas netrudemajn reklamojn foje, sed ni pripensas translokiĝi al donacmodelo.","WEBSITE_MAINPAGE_FAQ_015_P2":"Se vi havas pliaj demandoj, iru al nia ${1}helpcentro${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Montri malpli","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"Pli da informo ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Reprovi","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"Kio estas Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"Kiel Stremio komparas al Kodi kaj al Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"Kiel Stremio komparas al Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"Kiel Stremio komparas al Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"Kiel Stremio komparas al Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Ĉu vi aldonos ĉi tiun filmon/serion?","FAQ_06_P1":"Ne, pardonon :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"Kiel mi povas krei aldonaĵon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Kie estas la kaŝmemora dosiero?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},9320:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Película","TYPE_series":"Series","TYPE_tv":"TV","TYPE_channel":"Youtube","TYPE_other":"Otros","TYPE_movie_PL":"Películas","TYPE_series_PL":"Series","TYPE_tv_PL":"TV","TYPE_channel_PL":"Youtube","TYPE_other_PL":"Otros","TYPE_ALL":"Todo","VIDEO":"Video","BACK":"Atrás","MORE":"Más","DONE":"Listo","COPY":"Copiar","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Modo de emisión","CASTING_MODE_HLSV2":"Por defecto","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Sin transcodificación","Discover":"Descubrir","Board":"Panel","Library":"Biblioteca","My Library":"Mi Biblioteca","Calendar":"Calendario","NOTIFICATION_ONLINE":"Actualmente estás en línea","NOTIFICATION_OFFLINE":"Actualmente no estás conectado","INTERNET_CONNECTION":"Conexión de red","STORAGE_FULL_TITLE":"Advertencia: ¡Almacenamiento lleno!","STORAGE_FULL_TEXT":"Stremio no podrá guardar su configuración, preferencias o información de inicio de sesión. Considere reiniciar o reinstalar Stremio.","SEARCH":"Buscar","SEARCH_NO_RESULTS":"No se encontraron resultados","SEARCH_EXPLANATION_CONTENT":"Búsqueda de películas, series, Canales de Youtube y TV","SEARCH_EXPLANATION_PEOPLE":"Busca por actores, directores y escritores","SEARCH_PASTE_LINKS":"Pegar un enlace o enlace magnético","SEARCH_OR_PASTE_LINK":"Buscar o pegar enlace","ADD_TO_LIB":"Añadir a la biblioteca","REMOVE_FROM_LIB":"Eliminar de la biblioteca","ADDED_TO_LIB":"Añadido a la biblioteca","REMOVED_FROM_LIB":"Eliminado de la biblioteca","TRAILER":"Avance","WATCH_TRAILER":"Ver avance","WATCH_NOW":"Mirar ahora","SHOW":"Ver","SHOW_MOVIE":"Mostrar película","WATCH_RANDOM":"Mirar al azar","IMDB_RATING":"Calificación IMDb","YEAR":"Año","DIRECTOR":"Director","WRITER":"Escritor","LEAD_ACTORS":"Actores principales","CAST":"Reparto","CREW":"Equipo técnico","SHOW_MORE_CAST":"Mostrar más »","AIRED":"Salió al aire:","SEASONS":"Temporadas","GENRE":"Género","CATALOG":"Catálogo","SUMMARY":"Resumen","SHOW_MORE":"Mostrar más","SIMILAR":"Similar","UPCOMING":"Próximamente","ENDED":"Terminado","DURATION":"Duración","FEATURED":"Destacado","METADATA":"Metadatos","CATEGORY":"categoría","LINKS_GENRES":"Géneros","LINKS_CAST":"Elenco","LINKS_DIRECTORS":"Directores","SEARCH_VIDEOS":"Buscar videos","SEARCH_PLACEHOLDER":"Buscar o pegar enlace magnético","ADDON":"Complemento","ADDONS":"Complementos","OFFICIAL":"Oficial","ADDONS_OFFICIAL":"Complementos oficiales","ADDONS_POPULAR":"Popular en tu región","ADDON_FREE":"Gratis","ADDON_PEERED":"Compartido","ADDON_SUBSCRIPTION":"Suscripción","ADDON_STREAM_GEORESTRICTED":"No está disponible en su región","ADDON_STREAM_OFFLINECACHE":"Caché sin conexión","ADDON_STREAM_LOCALFILE":"Archivo Local","SHARE_ADDON":"Compartir extensión","AVAILABLE_STREAMS":"Transmisiones disponibles","NO_STREAM":"Transmisión no disponible","ALL_ADDONS":"Todos","INSTALL_MORE_ADDONS":"Para más transmisiones, por favor instale más complementos","STREAM_NOT_SUPPORTED":"La transmisión seleccionada no es soportada en esta plataforma.","ADDON_CATALOGUE":"Mostrar todos los complementos »","ADDON_CATALOGUE_MORE":"Más complementos »","REPO_ADDED":"Repositorio agregado","ADDON_REPO_EXIST_ERR":"Este repositorio de complementos ya existe","ADDON_REPO_ERR":"Error ocurrido mientras agregaba repositorio","ADDON_ADD_ERR":"Error agregado mientras agregaba complemento","ERR_ADDON_PROTECTED":"Complemento protegido","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Algo ha salido mal - la autenticación pudo haber fallado","ERR_NOT_COLLECTION_URL":"No es una URL de colección","ERR_NOT_ADDON_URL":"No es una URL de complemento","ERR_DETECTFROMURL":"No se puede detectar desde la URL","ADDON_DUPLICATE_WARNING":"Advertencia: complemento duplicado","ADDON_COLLECTION_SET_FAILED":"Falló la recopilación de complementos","SETTINGS_DATA_EXPORT":"Exportar datos","ADDON_PULL_FAILED":"Error de extracción de complemento","REFRESH_ON_CLICK":"Hacer clic para intentarlo de nuevo","STILL_IN_THEATER":"Película aún en cines","WATCH_IN_CINEMA":"Véalo en su cine favorito","IN_THEATER":"En el cine","GET_TICKETS":"Conseguir entradas","UPCOMING_EPISODE":"Próximo episodio","UPCOMING_EPISODE_MESSAGE":"El próximo episodio se emitirá el","MISSING_DATE_EPISODE":"No existe la fecha de este episodio","MISSING_DATE_EPISODE_MESSAGE":"Es posible que este episodio no se haya emitido todavía","CHANNEL_NOT_SCRAPED":"Este canal aún no está habilitado.<br>Por favor, vuelve en unos minutos.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Añádelo a tu biblioteca para ser notificado una vez que esté disponible.","GET_NOTIFIED_WHEN_AVAILABLE":"Recibirá una notificación cuando esté disponible.","WARNING_STREAMING_SERVER":"Advertencia: Servidor de transmisión local no encontrado. La transmisión desde YouTube y BitTorrent no estará disponible.","WARNING_STREAMING_SERVER_DISMISS":"Descartar","WARNING_STREAMING_SERVER_LATER":"Después","DECODER_WARNING":"Advertencia: este video podría no ser soportado en su hardware. Tenga en cuenta que la reproducción podría ser lenta.","PLAYER_ERROR":"Ups!, ha ocurrido un error en el reproductor","PLAYER_ERROR_LOOKSLIKE":"Parece que","PLAYER_ORIENTATION":"Orientación del reproductor","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Bloqueada","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Orientación del reproductor bloqueada en modo horizontal","PLAYER_ORIENTATION_SENSOR":"Orientación del reproductor automática (sensor)","PLAYER_PLAYBACK_SPEED":"Velocidad de reproducción","PLAYER_PLAYBACK_ERROR":"Error de reproducción, inténtelo de nuevo","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Error desconocido","PLAYER_PLAYBACK_ERROR_DEFAULT":"Lo sentimos, este video no puede ser reproducido por {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Idiomas de los subtítulos","PLAYER_SUBTITLES_VARIANTS":"Variantes de subtítulos","PLAYER_SUBTITLES_SETTINGS":"Configuración de subtítulos","PLAYER_SUBTITLES_DISABLED":"Subtítulos deshabilitados","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Posición vertical","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Reproducir","PLAYER_PAUSE":"Pausa","PLAYER_NEXT_VIDEO":"Siguiente vídeo","PLAYER_MUTE":"Silenciar","PLAYER_UNMUTE":"Activar sonido","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"En vivo","PLAYER_NEXT_VIDEO_TITLE":"A continuación en","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Descartar","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Ver vídeo","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Transmitiendo desde","CASTING_TO":"Transmitiendo a","NETWORK_STATUS":"Estado de la red","STREAM_SPEED":"Velocidad:","STREAM_BUFFERED":"Almacenado:","PEERS_INFO":"Información de pares","PEERS_ACTIVE":"Activos:","PEERS_CONNECTED":"Conectados:","PEERS_WAITING":"Esperando:","TRANSCODING_WARNING":"Alerta: transcodificando video.","STREAM_LOADING":"Cargando...","PLAYING_LOCAL":"Reproducción desde archivo local","PLAYING_CACHE":"Reproducción desde la memoria caché","WRONG_SUBS":"¿Subtítulos erróneos?","ERR_SUBS_LOADING_TITLE":"Error cargando subtítulos","ERR_SUBS_LOADING":"Fallo cargando subtítulos: esto podría ser un problema con la extensión que está usando o con su conexión de internet","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Los siguientes complementos de subtítulos fallaron","ERR_CASTING_UPDATE_TITLE":"No se pudo actualizar la información del dispositivo de transmisión: el servidor de transmisión puede estar fuera de línea","CHOOSE_DEVICE":"Elija un dispositivo para ver","NO_CAST_DEVICES":"No hay dispositivos de transmisión disponibles.","NO_SETTINGS":"No hay configuraciones disponibles.","PHONE_TABLET":"Móvil / Tableta","SUBTITLES":"Subtítulos","SUBTITLES_CHANGE":"Cambiar subtítulos para ","SUBTITLES_CHANGE_NONE":"No hay otros subtítulos para este idioma, lo siento.","SUBTITLES_CHANGE_ACIVE":"Actualmente los subtítulos #{{subtitlesDialog.activeIdx + 1}} están activados. Haga clic en \\"Continuar\\" para activar los subtítulos #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativamente,","SUBTITLES_ADJUST_DELAY":"Ajuste de retraso de subtítulos:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"O utilice las teclas <span>G</span> / <span>H</span> durante la reproducción para ajustar.","SUBTITLES_ADJUST_DELAY_TIP":"Nota: Puede usar las teclas <span>G</span> / <span>H</span> durante la reproducción para ajustar.","SUBTITLES_DELAY":"Retraso de subtítulos:","SUBTITLES_LOADING":"Cargando subtítulos...","SUBTITLES_UNAVAILABLE":"No hay subtítulos externos disponibles","SUBTITLES_DISABLED":"Desactivado","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Idioma Por Defecto","DEFAULT_SECONDARY_LANGUAGE":"Idioma Por Defecto Secundario","SEASON":"Temporada","EPISODE":"Episodio","SPECIAL":"Especial","SORT":"Ordenar","SORT_BY":"Ordenar por","FILTER":"Filtrar","SORT_TRENDING":"Tendencias","SORT_RECENT":"Reciente","SORT_ALPHABET":"A-Z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"Calificación","SORT_WATCHED":"Visto","SORT_YEAR":"Año","SELECT_TYPE":"Seleccionar tipo","SELECT_SORT":"Seleccionar ordenamiento","SELECT_CATALOG":"Seleccionar catálogo","SELECT_GENRE":"Seleccionar género","SORT_LASTWATCHED":"Por último visto","SORT_NAME":"Por nombre","SORT_TIMESWATCHED":"Por veces vista","New for You":"Nuevo para ti","New Episodes":"Nuevos Episodios","New Videos":"Nuevos Videos","Recommendations":"Recomendaciones","LIBRARY_RESUME":"Reanudar","LIBRARY_PLAY":"Reproducir","LIBRARY_DETAILS":"Detalles","LIBRARY_RESUME_DISMISS":"Descartar","LIBRARY_CLEAR_PROGRESS":"Limpiar progreso","LIBRARY_REMOVE":"Eliminar","LIBRARY_NOT_LOGGED_IN":"La biblioteca sólo está disponible para usuarios registrados","CALENDAR_NOT_LOGGED_IN":"El calendario sólo está disponible para los usuarios registrados","NOT_LOGGED_IN_CLOUD":"Acceda a sus películas y programas de televisión favoritos en cualquier momento y lugar","NOT_LOGGED_IN_RECOMMENDATIONS":"Recomendaciones adaptadas a su historial de visitas","NOT_LOGGED_IN_NOTIFICATIONS":"No vuelva a perderse un episodio","NOT_LOGGED_IN_CALENDAR":"Programe su calendario de visualización personal","DISCOVER_FEATURED":"Destacado","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Ganadores del Oscar","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"Esta extensión no retornó contenido.","DISCOVER_ADULT_WARNING":"El contenido es visible solo para adultos. ¿Eres mayor de 18 años?","DISCOVER_NOADDON_WARNING":"Advertencia: Ningún complemento activo de este tipo. Mostrando artículos guardados, nada de aquí se actualizará.","DISCOVER_LOAD_ERR":"Descubrir: error al cargar el catálogo desde el complemento","DISCOVER_ADDON_UNINSTALLED":"Este contenido no está más disponible, puede que hayas desinstalado la extensión.","UNINSTALL_THIS_ADDON":"Desinstalar esta extensión","ERR_ADDON_NOT_INSTALLED":"Este complemento no está instalado. ¿Instalar ahora?","DETAIL_RECEIVE_NOTIF_SERIES":"Recibir notificaciones de nuevos episodios","DETAIL_RECEIVE_NOTIF_VIDEOS":"Recibir notificaciones de nuevos videos","SIDEBAR_SHOW_STREAMS":"Mostrar transmisiones","RELAUNCH":"¡Relanzar ahora!","UPGRADE":"¡Una nueva versión está disponible! Actualiza a la versión más reciente de Stremio","RELOAD_UI":"Volver a cargar la interfaz de usuario","MANUAL_UPDATE_TITLE":"Actualice su versión de Stremio","MANUAL_UPDATE_LINE1":"Está ejecutando una versión desactualizada de Stremio lo cual no se recomienda.","MANUAL_UPDATE_LINE2":"Actualice lo antes posible.","BUTTON_UPDATE_LATTER":"Ahora no","BUTTON_UPDATE_NOW":"Actualizar","ANONYMOUS_USER":"Usuario anónimo","DONT_HAVE_ACC":"¿No tienes una cuenta?","HAVE_ACC":"¿Ya tiene una cuenta?","PASSWORD":"Contraseña","PASSWORD_CONFIRM":"Confirme su contraseña","EMAIL":"Correo electrónico","FB_LOGIN":"Entrar con Facebook","FB_NOTHINGSHARED":"Nada será compartido sin su permiso","FB_NOPOST":"No publicaremos nada en su nombre","OR":"o","I_ACCEPT":"Yo acepto los","I_ACCEPT_BY_CLICKING":"Al hacer clic en el botón de arriba testifico que acepto los ","TOS":"Términos y Condiciones","MUST_ACCEPT_TERMS":"Debes aceptar los términos","PASSWORDS_NOMATCH":"Las contraseñas no coinciden","SIGN_UP":"Regístrate","SIGN_UP_EMAIL":"Ingrese con correo electrónico","CLICK_TO_SIGN_UP":"Clic aquí para ingresar","LOG_IN":"Iniciar sesión","LOG_OUT":"Cerrar sesión","EXIT_FULLSCREEN":"Salir de modo pantalla completa","ENTER_FULLSCREEN":"Entrar en modo pantalla completa","PLAY_URL_MAGNET_LINK":"Reproducir URL/enlace magnético","HELP_FEEDBACK":"Ayuda y retroalimentación","TERMS_OF_SERVICE":"Términos del servicio","PRIVACY_POLICY":"Política de privacidad","ABOUT_STREMIO":"Sobre Stremio","USER_PANEL":"Panel de usuario","LOGIN_LABEL":"Login","GUEST_LOGIN":"Acceso de usuario invitado","GUEST_LOGIN_NOTICE":"Acceder como invitado no es recomendable. Ingresar con tu cuenta le permite a Stremio sincronizar tu Biblioteca y recibir notificaciones para tus series/canales favoritos. ¿Estás seguro de que quieres continuar?","GUEST_LOGIN_NOTICE_2":"No se recomienda el inicio de sesión de invitado - no habrá sincronizado las notificaciones de la Biblioteca y del Panel, que son funciones vitales de Stremio. ¿Seguro que desea continuar?","CLICK_HERE":"Haga clic aquí","WRONG_PASSWORD":"Contraseña incorrecta. En caso de que haya olvidado su contraseña, ","SET_A_PASS":"Establecer una contraseña","RESET_PASSWORD":"Restablecer contraseña","FORGOT_PASSWORD":"¿Olvidaste tu contraseña?","EMAIL_USED_WITH_FB":"Este correo electrónico fue utilizado con un inicio de sesión de Facebook.","INVALID_EMAIL":"Por favor ingrese un correo electrónico válido","INVALID_PASSWORD":"Por favor ingrese una contraseña válida","CONN_ERR":"Error de conexión - por favor, inténtelo de nuevo más tarde.\\n\\nSi esto persiste, desactivar programas cortafuegos / antivirus (especialmente Bitdefender).","IMPORT_FROM_GUEST":"Importar biblioteca de su cuenta de invitado","RECEIVE_UPDATES_EMAIL":"Recibe novedades de Stremio en tu correo electrónico","LOGIN_FAILED":"Error en el inicio de sesión.","SIGNUP_FAILED":"Registro fallido.","SEARCH_FAILED":"Búsqueda fallida","EMAIL_USED":"Este correo electrónico ya está en uso.","WAITING_FB_LOGIN":"Iniciando sesión con Facebook...","EXTERNAL_PLAYER_TITLE":"Reproducir en reproductor externo","EXTERNAL_REMEMBER_PLAYER":"¿Quieres recordar tu elección?","EXTERNAL_ALWAYS_PLAY":"Si","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Mejor Ajuste","FIT_SCREEN":"Ajustar pantalla","FILL":"Rellenar","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Cuéntanos de tus gustos","INTRO_TASTE_LONG":"Cuéntanos que te gustaría ver","INTRO_TASTE_PICK":"Selecciona {{interestsRemaining}} intereses","INTRO_TASTE_PICK_MORE":"Selecciona {{interestsRemaining}} más intereses","INTRO_TASTE_HELP_US":"Ayúdanos a saber más de ti.","INTRO_TASTE_CHOOSE_THESE":"Escoge algunos de estos:","INTRO_TASTE_CHOOSE_MIN":"Escoge al menos 3 categorías","INTRO_TASTE_CHOOSE_MIN_ERR":"¡Tienes que seleccionar al menos 3 categorías!","INTRO_TASTE_LIFESTYLE":"Estilo de vida","INTRO_TASTE_SPORTS":"Deportes","INTRO_TASTE_FOOD_HEALTH":"Comida y Salud","INTRO_TASTE_BEAUTY_FASHION":"Belleza y Moda","INTRO_TASTE_NEWS":"Noticias","INTRO_TASTE_GAMING":"Juegos","INTRO_TASTE_SCIENCE_EDU":"Ciencia y Educación","INTRO_TASTE_MUSIC":"Música","INTRO_TASTE_TRAVEL":"Viajes","INTRO_TASTE_LATE_NIGHT":"Espectáculo nocturno","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedia","INTRO_TASTE_DIY":"Hazlo tú mismo","INTRO_TASTE_TECH":"Tecnología","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"El complemento seleccionado no es soportado en esta plataforma.","ADDON_DISCLAIMER":"El uso de complementos siempre estarán sujetos a su responsabilidad y la ley de gobierno de la jurisdicción en que te encuentres.","ADDON_ACTIVATE":"¿Activar este complemento?","ADDON_REPO_ADD":"URL del repositorio del complemento","ADDON_ADD":"Agregar","ADD_ADDON":"Agregar complemento","ADD_ADDON_DESCRIPTION":"Puedes agregar un complemento a través de un enlace externo, que aparecerá en complementos instalados.","PASTE_ADDON_URL":"Pegar enlace de complemento","WHATS_NEW":"Qué hay de nuevo","BUTTON_CONTINUE":"Continuar","BUTTON_ACTIVATE":"Activar","BUTTON_ACTIVATED":"Activado","BUTTON_CANCEL":"Cancelar","BUTTON_SUBMIT":"Enviar","BUTTON_DISMISS_ALL":"Descartar todo","BUTTON_VIEW_ALL":"ver todo","BUTTON_SEE_ALL":"Ver Todo","BUTTON_COLOR_TRANSPARENT":"Transparente","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Su biblioteca se ve vacía. Averigüe lo útil que es :) ","HOW_START":"Así es cómo puedes empezar:","LIB_EMPTY_CAL":"Su calendario muestra series en su Biblioteca.","HOW_START_CAL":"Así es como se puede agregar series:","LIB_EMPTY_BOARD":"El Panel muestra notificaciones y recomendaciones relacionadas con la Biblioteca.","HOW_START_BOARD_WAIT":"Por favor, añada algunas series o canales a su Biblioteca y denos unos minutos para procesar :)","HOW_START_BOARD":"Así es como se puede agregar series y películas a la misma:","IMPORT_FB":"Importar cosas que te gustan de <span>Facebook</span>","IMPORT_TRAKT":"Importar biblioteca de <span>Trakt</span>","IMPORT_DISCOVER":"Encontrar cosas interesantes de <span>Descubrir</span>","IMPORT_DISK":"Importar películas o mira las que tiene en su <span>disco local</span>","PLEASE_CREATE_ACC":"Por favor <u>crea una cuenta</u> para activar la sincronización con la Biblioteca y Panel.","IMPORT_DISCOVER_SIGNUP":"Regístrate y encuentra cosas interesantes en <span>Descubrir</span>","IMPORT_DISK_SIGNUP":"Regístrate e importa películas o shows desde tu <span>disco local</span>","LIB_EMPTY_CLOUD":"Biblioteca","LIB_EMPTY_CLOUD_DESC":"Biblioteca personal sincronizada con todos los dispositivos","LIB_EMPTY_EARLY":"Acceso temprano","LIB_EMPTY_EARLY_DESC":"Recibir notificaciones de nuevos episodios","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Obtener recomendaciones personalizadas","LIB_EMPTY_CALENDAR_DESC":"Agende su calendario personal de programas","LIB_EMPTY_ALL":"Regístrate para obtener todo esto:","LIB_EMPTY_BEST":"Regístrate para obtener lo mejor de Stremio","LIB_EMPTY_OTHER":"Regístrate para habilitar el Calendario y otras excelentes características","CALENDAR_ADDED":"El calendario de Stremio ha sido agregado a su calendario de escritorio por defecto.","CALENDAR_ADDED_MSG":"Si esto no funciona, por favor agregue esta URL manualmente a su aplicación de calendario","TRAKT_EXPIRED":"La autenticación de Trakt expiró, vaya a Configuración y vuelva a autenticar","TRAKT_REQUIRES_LOGIN":"Error de Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Necesitas iniciar sesión","SETTINGS_LABEL":"Configuración","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Reproductor","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Atajos","SETTINGS_SHORTCUT_RELOAD_APP":"Recargar Aplicación","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Abrir Configuración","SETTINGS_SHORTCUT_SWITCH_TABS":"Cambiar Pestañas","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Desplazarse por las Pestañas hacia Adelante","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Desplazarse por las Pestañas hacia Atrás","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navegar entre menús","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Ir a Buscar","SETTINGS_SHORTCUT_EXIT_BACK":"Salir / Regresar","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Alternar el menú de velocidad de reproducción","SETTINGS_SHORTCUT_MENU_VIDEOS":"Alternar menú de videos","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Alternar menú de subtítulos","SETTINGS_SHORTCUT_MENU_INFO":"Alternar menú de información","SETTINGS_SHORTCUT_FULLSCREEN":"Alternar Pantalla Completa","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Mostrar Controles","SETTINGS_SHORTCUT_PLAY_PAUSE":"Reproducir / Pausa","SETTINGS_SHORTCUT_VOLUME_UP":"Subir Volumen","SETTINGS_SHORTCUT_VOLUME_DOWN":"Bajar Volumen","SETTINGS_SHORTCUT_SEEK_NEXT":"Buscar Siguiente","SETTINGS_SHORTCUT_SEEK_PREV":"Buscar Previo","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Buscar hacia atrás","SETTINGS_SHORTCUT_SEEK_FORWARD":"Buscar hacia adelante","SETTINGS_SHORTCUT_PLAY_NEXT":"Reproducir Siguiente","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Aumentar Tamaño del Subtítulo","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Reducir Tamaño del Subtítulo","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Aumentar Retraso del Subtítulo","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Reducir Retraso del Subtítulo","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Alternar Menu Lateral","SETTINGS_SHORTCUT_OR":"o","SETTINGS_SHORTCUT_TO":"a","SETTINGS_SHORTCUT_SPACE":"Espacio","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Autenticar","SETTINGS_FACEBOOK_IMPORT":"Importar","SETTINGS_CALENDAR_SUBSCRIBE":"Suscribir","SETTINGS_INTERFACE_LANGUAGE":"Lenguaje de interfaz","SETTINGS_LAUNCH_STARTUP":"Abrir cuando arranque el equipo","SETTINGS_VLC_DEFAULT":"Reproducir en VLC","SETTINGS_UI_LANGUAGE":"Idioma de la interfaz de usuario","SETTINGS_FULLSCREEN_EXIT":"Tecla de escape para salir del modo pantalla completa","SETTINGS_GAMEPAD":"Habilitar soporte para mando","SETTINGS_CLOSE_WINDOW":"Cerrar la aplicación cuando se cierra la ventana","SETTINGS_SUBTITLES_LANGUAGE":"Idioma de subtítulos predeterminado","SETTINGS_SUBTITLES_SIZE":"Tamaño de subtítulos predeterminado","SETTINGS_SUBTITLES_BACKGROUND":"Fondo de subtítulos","SETTINGS_SUBTITLES_COLOR":"Color de subtítulos","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Color del contorno de los subtítulos","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Color de fondo de los subtítulos","SETTINGS_SEEK_KEY":"Tiempo de búsqueda de las teclas de flecha","SETTINGS_SEEK_KEY_SHIFT":"Tiempo de búsqueda de las teclas de flecha cuando se mantiene la tecla Shift","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Duración de rebobinado y avance rápido","SETTINGS_BINGE":"Comenzar automáticamente el siguiente episodio","SETTINGS_NEXT_VIDEO":"Mostrar notificación para que comience el siguiente episodio","SETTINGS_NEXT_VIDEO_TRIGGER":"Mostrar la notificación de próximo episodio para:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Duración de la ventana emergente del siguiente video","SETTINGS_PLAY_IN_BACKGROUND":"Reproducir en segundo plano","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Reproducir en un reproductor externo","SETTINGS_RESIZE":"Ajustar ventana automáticamente antes de reproducir","SETTINGS_OVERRIDE_SERVER":"Anular la URL del servidor de transmisión (avanzado)","SETTINGS_SERVER_URL":"URL del servidor de transmisión ","SETTINGS_SERVER_AVAILABLE":"El servidor de transmisión está disponible.","SETTINGS_SERVER_UNAVAILABLE":"El servidor de transmisión no está disponible.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configurar enlace del servidor de transmisión","SETTINGS_SERVER_CONFIGURE_INPUT":"Ingrese enlace del servidor de transmisión","SETTINGS_SERVER_CACHE_SIZE":"Tamaño de caché","SETTINGS_SERVER_TORRENT_PROFILE":"Perfil de torrent","SETTINGS_HTTPS_ENDPOINT":"Punto final HTTPS de transmisión: ","SETTINGS_USE_BETA":"Utilice siempre la última Beta","SETTINGS_IMPORT_FB":"Importar desde Facebook","SETTINGS_IMPORT_DISK":"Importar desde el disco local","SETTINGS_IMPORT_TRAKT":"Importar desde Trakt","SETTINGS_PAUSE_MINIMIZED":"Pausar la reproducción cuando se minimiza","SETTINGS_HWDEC":"Decodificación acelerada por hardware","SETTINGS_BACKGROUND":"Reproducción de fondo","SETTINGS_SUBSCRIBE_CALENDAR":"Suscribirse al calendario","SETTINGS_REQ_EXPORT":"Solicitar mis datos","SETTINGS_ACC_DELETE":"Eliminar mi cuenta","SETTINGS_CHANGE_PASSWORD":"Cambiar contraseña","SETTINGS_TOS":"Términos de servicio","SETTINGS_SUPPORT":"Soporte","SETTING_LANGUAGE":"Idioma","SETTINGS_TRAKT":"Seguimiento con Trakt","SETTINGS_TRAKT_LOGOUT":"Salir de Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Escanear código QR para abrir el control remoto","SETTINGS_DESKTOP_NOTIFICATIONS":"Notificaciones de escritorio","SETTINGS_DATA_SAVER":"Ahorrador de datos","SETTINGS_LANGUAGE_INTERFACE":"interfaz","SETTINGS_LANGUAGE_SUBS":"Subtítulos por defecto","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoseleccionar Pista de Audio","SETTINGS_DEFAULT_AUDIO_TRACK":"Pista de Audio por defecto","SETTINGS_ACCOUNT":"cuenta","SETTINGS_VERSION":"versión","SETTINGS_MPV_WINDOW":"Abrir reproductor en una ventana separada (avanzado)","SETTINGS_PLAY_IN_EXTERNAL":"Iniciar siempre el video en un reproductor externo","SETTINGS_STORAGE_BUTTON":"Borrar almacenamiento local","SETTINGS_STORAGE_MODAL_TITLE":"¿Está seguro?","SETTINGS_STORAGE_MODAL_MESSAGE":"Esta opción borrará el almacenamiento local y terminará su sesión.","SETTINGS_HWDEC_PICKER":"Selecciona la configuración de decodificación acelerada por hardware","SETTINGS_HW_AUTOMATIC":"Automático","SETTINGS_HW_DISABLED":"Deshabilitada","SETTINGS_HW_ACCELERATED":"Decodificación Acelerada","SETTINGS_HW_FULL":"Aceleración Completa","SETTINGS_HW_LEGACY":"Legado","SETTINGS_SECTION_SUBTITLES":"Subtítulos","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controles","SETTINGS_SECTION_AUTO_PLAY":"Auto-Reproducción","SETTINGS_SECTION_ADVANCED":"Avanzado","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Subtítulos de complementos","SUBSPICKER_BLACK_BACKGROUND":"Usar color de fondo negro","SUBSPICKER_VERTICAL_OFFSET":"Desplazamiento Vertical","SUBSPICKER_SIZE":"Tamaño","SUBSPICKER_DELAY":"Retraso","SUBSPICKER_EMBEDDED_SUBS":"Subtítulos Embebidos","MOBILE_PRIVACY_POLICY":"Política de Privacidad","MOBILE_CRASH_REPORTING":"Reporte de Errores","MOBILE_ZOOM_TO_FILL":"Zoom para Rellenar la Pantalla","MOBILE_PASSTHROUGH":"Salida de Audio Digital (passthrough)","MOBILE_RUN_LOW_BATTERY":"Ejecutar con Batería Baja","MOBILE_RUN_FOREGROUND":"Ejecutar como Servicio en Primer Plano","MOBILE_PERFORMANCE":"Rendimiento y Estabilidad","MOBILE_SERVER_ONLINE":"En Linea","MOBILE_SERVER_OFFLINE":"Desconectado","MOBILE_QR_EXPIRES":"El Código QR expira en ","MOBILE_LOG_INTO":"Inicia sesión a tu cuenta Stremio ","MOBILE_SCAN_QR":"Escanea el Código QR de arriba o visita ","MOBILE_LINK_ACCOUNT":"Asociar Cuenta","MOBILE_SPEEDPICKER_CANCEL":"Cancelar","MOBILE_SPEEDPICKER_LABEL":"Seleccionar Velocidad de Reproducción","MOBILE_EMPTY_LIBRARY":"Tu Biblioteca está vacía","MOBILE_NO_ADDON_ACTIVE":"No hay complemento de Stremio activo para este tipo.","MOBILE_ORGANIZER_WARNING":"La aplicación Stremio Organizer proporciona una funcionalidad limitada. Para obtener una lista de transmisiones reproducibles y la experiencia completa de Stremio, use Stremio en el escritorio.","MOBILE_ADDON_LOADING":"todavía está cargando","MOBILE_ADDONS_LOADING":"los complementos aún se están cargando","MOBILE_ADDON":"Complementos","MOBILE_CONFIGURE_ADDON":"Configura tu complemento","MOBILE_CONFIGURE_ADDON_LABEL":"Configurar Complemento","MOBILE_ORGANIZER_ADDONS_WARNING":"La aplicación Stremio Organizer ofrece una selección limitada de complementos. Para disfrutar de la experiencia completa de Stremio, use Stremio en el escritorio.","MOBILE_DISCONNECT":"Desconectar","MOBILE_LOOKING_FOR_DEVICES":"Buscando dispositivos...","MOBILE_CAST_TO":"Emitir a","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"Encendida","NAVIGATION_OFF":"Apagada","MARKETING_AGREE":"Acepto recibir comunicaciones de marketing de Stremio","QUIT":"Salir","CONNECTED":"Conectado","AUTHENTICATE":"Autenticar","CACHING":"Almacenamiento en caché","SETTINGS_CACHING_DRIVE":"Seleccione la unidad de almacenamiento en caché","ENABLE_LOCAL_FILES_ADDON":"Habilite el complemento de archivos locales (requiere reiniciar)","LOCAL_ADDON_NOT_ENABLED":"El complemento local no está habilitado. Haga clic aquí para ir a la configuración y habilitarlo","ENABLE_REMOTE_HTTPS_CONN":"Habilitar conexiones HTTPS remotas","TORRENT_PROFILE":"Perfil de Torrent","DATA_CACHING":"Caché almacenada","MAGNET_PARSING":"Analizando un enlace magnético","January":"Enero","February":"Febrero","March":"Marzo","April":"Abril","May":"Mayo","June":"Junio","July":"Julio","August":"Agosto","September":"Septiembre","October":"Octubre","November":"Noviembre","December":"Diciembre","Monday":"Lunes","Tuesday":"Martes","Wednesday":"Miércoles","Thursday":"Jueves","Friday":"Viernes","Saturday":"Sábado","Sunday":"Domingo","Action":"Acción","Comedy":"Comedia","War":"Guerra","Family":"Familia","Animation":"Animación","Adventure":"Aventura","Fantasy":"Fantasía","Crime":"Crimen","Mystery":"Misterio","Romance":"Romántico","Drama":"Drama","Horror":"Terror","Thriller":"Suspense","Sci-Fi":"Ciencia ficción","Music":"Música","Biography":"Biografía","Documentary":"Documental","Sport":"Deporte","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"Noticias","History":"Historial","Game-Show":"Programa de juegos","Reality-TV":"Reality shows","Talk-Show":"Programa de entrevistas","Film & Entertainment":"Cine y Entretenimiento","Gaming":"Juegos","From TV":"De la televisión","Lifestyle":"Estilo de vida","Science & Education":"Ciencia y Educación","Cooking & Health":"Cocina y Salud","Beauty & Fashion":"Belleza y Moda","Sports":"Deportes","News & Politics":"Noticias y Política","How-to & DIY":"Cómo hacer y bricolaje","Tech":"Tecnología","Automotive":"Automotores","Causes & Non-Profits":"Causas y Fines de Lucro","Movies":"Películas","Uk Live Tv":"TV británica en vivo","Fashion":"Moda","Business News Radio":"Noticias de negocios - Radio","Business Tv":"Negocios TV","Cars & Auto":"Autos","Comedy Radio":"Comedia - Radio","Lifestyle Radio":"Estilo de vida - Radio","News Tv":"Noticias TV","Food And Wine":"Comida y Vino","Latino Tv":"Latino TV","Shopping Tv":"Compras TV","Religion":"Religión","Kids":"Niños","Body & Soul":"Cuerpo y Alma","Education":"Educación","Indian Tv":"India TV","Extreme Sports":"Deportes extremos","Middle Eastern Tv":"Medio oriente TV","Celebrity Tv":"Celebridades TV","Science Tv":"Ciencia TV","Bikini babe":"Bikini babe","Outdoors":"Al aire libre","German Tv":"TV alemana","French Tv":"TV francesa","Italian Tv":"TV italiana","Gamer Tv":"TV Videojuegos","Travel":"Viajes","Asian Tv":"TV asiática","Entertainment":"Entretenimiento","News Radio":"Noticias - Radio","Music Radio":"Música - Radio","Language Learning":"Aprendizaje de idiomas","Science Radio":"Ciencia - Radio","Tech Radio":"Tecnología - Radio","Science & Technology Vod":"Ciencia y Tecnología VBD","new video":"Nuevo video","new episode":"Nuevo episodio","new movie":"Nueva película","recommended":"Recomendado","we recommend":"Nosotros recomendamos","offer of the day":"Oferta del día","news":"Nuevo","music video":"Vídeo musical","CTX_SHOW_HOTKEYS":"Mostrar teclas de acceso rápido","CTX_DISMISS_NOTIF":"Descartar notificaciones","CTX_DISMISS_ALL":"Descartar todo","CTX_SHARE":"Compartir","CTX_COPY_SHARE_LINK":"Copiar enlace","CTX_COPY_MAGNET_LINK":"Copiar enlace magnético","CTX_COPY_STREAM_LINK":"Copiar enlace de la transmisión","CTX_DOWNLOAD_VIDEO":"Descargar este vídeo","CTX_DOWNLOAD_SUBS":"Descargar subtítulos","CTX_VIEW_ON_YOUTUBE":"Ver en YouTube","CTX_SHOW":"Mostrar","CTX_PLAY":"Reproducir","CTX_PLAY_IN":"Reproducir aquí","CTX_PLAY_ON":"Reproducir en","CTX_WATCH_ON":"Ver en","CTX_WATCH":"Ver","CTX_WATCHED":"Visto","CTX_WATCH_BEGINNING":"Mirar desde el principio","CTX_WATCH_MOBILE":"Ver en un dispositivo móvil","CTX_REWIND":"Retroceder al comienzo","CTX_MARK_WATCHED":"Marcar como visto","CTX_MARK_NON_WATCHED":"Marcar como no visto","CTX_MARK_UNWATCHED":"Marcar como no visto","CTX_MARK_REST":"Marcar el resto como visto","CTX_UNMARK_REST":"Marcar el resto como no visto","CTX_RECEIVE_NEW_NOTIF":"Recibir notificaciones nuevas","CTX_REMOVE_CACHE":"Eliminar de caché","CTX_REMOVE_CACHE_EP":"Eliminar el episodio de la memoria caché","CTX_OPEN_CONTAINING":"Abrir carpeta contenedora","CTX_REMOVE":"Eliminar de la Biblioteca","CTX_AVAILABLE_OFFLINE":"Disponible sin conexión","CTX_PAUSED":"En pausa","CTX_ALWAYS_ON_TOP":"Siempre en la parte superior","CTX_FULLSCREEN":"Pantalla completa","CTX_WRONG_SUBS":"¿Subtítulos erróneos?","CTX_REPORT_ISSUES":"Informar de un problema","CTX_COPY":"Copiar","CTX_PASTE":"Pegar","CTX_CLEAR":"Limpiar","CTX_CLEAR_RECENT_SEARCHES":"Borrar búsquedas recientes","HELLO_THERE":"Hola","HOPE_YOU_ENJOY":"¡Esperamos que disfrute de Stremio y sea una de sus aplicaciones favoritas!","WHO_ARE_WE":"¿Quiénes somos? Somos el equipo detrás de ella <br>dos chicos que trabajan duro todos los días durante los últimos 3 años, con un único objetivo <br>para hacer este producto cada vez mejor.","SUPPORT_US":"Si disfrutas usando Stremio, si Stremio es valioso para ti - apóyanos!","SPREAD_THE_WORD":"Comparte con tus amigos ahora, corre la voz sobre Stremio","MORE_PEOPLE":"Cuantas más personas usen Stremio, mejor será","SEND_A_LINK":"O envía un enlace de nuestro sitio web","TIP_LOCALFILES":"Consejo: puede arrastrar y soltar archivos de vídeo locales en Stremio","ADDON_MY":"Mis complementos","ADDON_COMMUNITY":"Complementos de la comunidad","ADDON_OFFICIAL":"Complementos Oficiales","ADDON_REPOS":"Repositorios de complementos","ADDON_SEARCH":"Buscar Complementos","ADDON_INSTALL":"Instalar","ADDON_CONFIGURE":"Configurar","ADDON_UNINSTALL":"Desinstalar","ADDON_UPGRADE":"Actualizar","ADDON_INSTALLED":"Instalado","ADDON_INSTALLED_MSG":"¡Complemento instalado!","ADDON_UPGRADED_MSG":"¡Complemento actualizado!","ADDON_UNKNOWN":"Desconocido","ADDON_ERR":"¡Error instalando complemento!","ADDON_DISCONNECTED":"Desconectado","ADDON_APP_MISSING":"la aplicación para este recurso no está instalada. ¿Quieres instalarla ahora?","ADDON_APP_INSTALL":"Instalar ahora","ADDON_PAGE":"Página del complemento","ADDON_TOP_CONTENT":"Lo mejor de este complemento","ADDON_PROVIDES":"Proporciona","ADDON_WATCH":"¡Ver #{types} ahora!","ADDON_WATCH_FREE":"¡Ver #{types} de forma GRATUITA ahora!","ADDON_ADDON":"Complemento","ADDON_SUPPORTED_TYPES":"Tipos compatibles","ADDON_SUPPORTED_CATALOGS":"Catálogos compatibles","ADDON_PROVIDES_DISCOVER":"Más #{types} en Descubrir","ADDON_PROVIDES_STREAMS":"Ver #{types}","ADDON_PROVIDES_STREAMS_FREE":"Ver #{types} de forma GRATUITA","ADDON_PROVIDES_SUBTITLES":"Subtítulos #{types}","ADDON_CANTDETECT":"No hemos podido detectar un Stremio en ejecución, así que no pudimos detectar qué complementos tiene instalado.","ERR_NO_META":"No se encontró información sobre esto ","ERR_GETTING_META":"Error obteniendo información de este.","ERR_CANT_PARSE_MAGNET":"Incapaz de analizar enlace magnético","ERR_NO_MAGNET_INFOHASH":"Código hash inválido para enlace magnético","ERR_NO_FILE_PATH":"Incapaz de enviar solicitud sin una ruta de archivo","ERR_NO_TORRENT":"No se devolvió torrent","ERR_NO_SUPPORTERD_FILES":"Archivo no soportado","ERR_OPENING_FILES":"No se pudieron abrir los archivos externos","ERR_INVALID_LINK":"Enlace inválido","ERR_REGISTERED_ONLY":"Esta opción está disponible solo para usuarios registrados.","ERR_CLIPBOARD":"No se puede reproducir desde el portapapeles","ERR_CLIPBOARD_READ":"Desde esta plataforma no se puede acceder al portapapeles","ERR_CLIPBOARD_GENERIC":"No se ha encontrado ningún URL reproducible en el portapapeles. Copie un URL (por ejemplo un enlace magnético) que lleve a un vídeo.","BOARD_CONTINUE_WATCHING":"Continuar viendo","BOARD_EXPLANATION_RECOMMENDATIONS":"Películas elegidas especialmente para ti.<br />Esta película es una muestra de recomendación.","BOARD_EXPLANATION_EPISODES":"Los nuevos episodios de tus series favoritas están aquí<br />Agrega las series que sigues en tu Biblioteca.","BOARD_EXPLANATION_VIDEOS":"Los nuevos videos de tus canales favoritos están aquí.<br />Agrega los canales de YouTube que sigues a tu Biblioteca.","WEBSITE_SLOGAN_WATCH":"Disfrute al instante","WEBSITE_SLOGAN_ALL":"de todo el contenido de vídeo en un solo lugar","WEBSITE_SLOGAN_NEW":"Todo lo que puedes ver","WEBSITE_SLOGAN_NEW_NEW":"Libertad para transmitir","WEBSITE_WATCH_FROM":"Ver desde","WEBSITE_DOWNLOAD":"Descargar ahora","WEBSITE_DOWNLOAD_FOR":"Descargar para","WEBSITE_IS_DESKTOP":"Stremio es una aplicación de escritorio, abrí esta página en tu ordenador y descárgalo","WEBSITE_DESKTOP_DEMO_VID":"Demostración","WEBSITE_PAGE_HOME":"Inicio","WEBSITE_PAGE_FEATURES":"Características","WEBSITE_PAGE_ADDONS":"Complementos","WEBSITE_PAGE_TECH":"Tecnología","WEBSITE_PAGE_CREATE_ADDON":"Crear Complemento","WEBSITE_PAGE_CONTACTS":"Contactos","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Películas","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"TV en vivo","WEBSITE_TYPE_channel":"Canales de Youtube","WEBSITE_STREMIO_WHAT_IS":"Stremio es una aplicación que le ayuda a organizar y ver al instante sus canales de videos, películas, series de televisión y canales de televisión favoritos.","WEBSITE_FEATURES_WATCH":"Ver en HD al instante","WEBSITE_FEATURES_WATCH_DETAIL":"Haga clic y reproduzca sus películas favoritas, programas de televisión, videos y canales de televisión.","WEBSITE_FEATURES_SUBS":"Subtítulos automáticos","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio selecciona automáticamente los subtítulos sincronizados para su idioma.","WEBSITE_FEATURES_SUBS_LABEL":"Tu movimiento, jefe.","WEBSITE_FEATURES_CAST":"Reproduce en los dispositivos móviles y la televisión","WEBSITE_FEATURES_CAST_DETAIL":"Vea en AppleTV, Chromecast, Smart TV (DLNA/UPnP) y dispositivos móviles.","WEBSITE_LIB":"Disfrute de su biblioteca personal sincronizado en todos sus dispositivos","WEBSITE_LIB_COLLECT":"Recoger información de Stremio","WEBSITE_LIB_IMPORT":"Importar desde Facebook","WEBSITE_LIB_LOCAL":"Añadir de la unidad local","WEBSITE_BOARD":"El Panel - Su espacio para recibir Notificaciones y Recomendaciones","WEBSITE_BOARD_RECOMMEND":"Programa de televisión recomendado","WEBSITE_BOARD_TRENDING":"Tendencias en Películas","WEBSITE_BOARD_NEW":"Nuevo video","WEBSITE_BOARD_EPISODE":"Nuevo episodio","WEBSITE_BOARD_1":"¿Buscando algo interesante que ver?\\nObtén recomendaciones basadas en lo que te gusta!","WEBSITE_BOARD_2":"Sea notificado cuando un nuevo episodio de su programa favorito de televisión o canal de YouTube esté disponible!","WEBSITE_BOARD_YOUTUBE":"Nuevos videos de canales de YouTube","WEBSITE_BOARD_EPISODES":"Nuevos episodios de las series que sigues","WEBSITE_ADDONS":"Complementos","WEBSITE_TECH_DETAIL":"¡Nos encanta la tecnología, nos gusta la ciencia loca!\\nStremio utiliza las siguientes tecnologías de código abierto:","WEBSITE_TECH_WCJS":"WebChimera.js permite a Stremio reproducir cualquier formato de vídeo con un buen rendimiento.","WEBSITE_TECH_WCJS_EXTRA":"Somos contribuidores fundamentales del proyecto","WEBSITE_TECH_ELECTRON":"Electron proporciona una plataforma innovadora para construir Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Somos contribuidores del proyecto","WEBSITE_TECH_LINVODB":"Una tecnología de base de datos que asegura que sus datos se organicen y estén disponible en cualquier lugar que inicie sesión.","WEBSITE_TECH_LINVODB_EXTRA":"En la casa de la tecnología","WEBSITE_CREATE_ADDON":"Creé su complemento","WEBSITE_CREATE_ADDON_DETAIL":"¿Tiene un servicio para proporcionar contenido de vídeo?\\nVamos a ayudarle a beneficiarse de las características de Stremio creando su Complemento.","WEBSITE_CREATE_ADDON_BENEFITS":"Beneficios de crear un Complemento para Stremio","WEBSITE_P2P_BEAUTY":"La belleza de la transmisión Par a Par (P2P)","WEBSITE_P2P_1":"Vídeo o transmisión en vivo fiable y asequible en Full HD / 4K","WEBSITE_P2P_2":"La plataforma de distribución proporciona una gran experiencia de usuario","WEBSITE_P2P_3":"Vamos a crear un complemento para la satisfacción de sus necesidades exactas","WEBSITE_P2P_CONTACT":"¿Interesado? Eres bienvenido, <a href=\'mailto:office@stremio.com\'>Contáctenos</a>.","WEBSITE_P2P_CONTACT_EXTRA":"¡Estaremos encantados de ayudarle a integrar su contenido con Stremio!","WEBSITE_P2P":"De vez en cuando, llega una tecnología que cambia el nombre del juego. Hemos invertido un montón de tiempo y esfuerzo en la construcción de nuestro motor de transmisión de Par A Par (P2P) de vídeo que proporciona un gran rendimiento y versatilidad para adaptarse a cualquier caso de uso.\\nContáctenos por DRM-enabled P2P video en demanda o transmisión en vivo.","WEBSITE_THOUGHTS":"Pensamientos que compartimos:","WEBSITE_SPREAD":"Difunde Stremio en tus redes sociales:","WEBSITE_CONTACT":"Contacta con nosotros, ¡Estamos deseando escucharte!","WEBSITE_OPENSOURCE":"Para nuestros proyectos de código abierto, vaya a","WEBSITE_BITCOIN":"Donar Bitcoin:","WEBSITE_FAQ":"Preguntas frecuentes","WEBSITE_FAQ_SHORT":"Preguntas frecuentes","WEBSITE_QUESTIONS":"Preguntas","WEBSITE_TOS":"Términos de Uso","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"Acerca de","WEBSITE_PAGE_BECOME_PARTNER":"Vuélvete un socio","WEBSITE_ALL_YOU_CAN_WATCH":"Libertad para ver\\nTodo lo que quieras.","WEBSITE_FREEDOM_TO_STREAM":"Libertad para transmitir","WEBSITE_WHAT_IS_STREMIO":"¿Qué es Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio es un centro unificado para agregación de contenido de vídeo. Descubre, organiza y ver videos de todo tipo de fuente en cualquier dispositivo que poseas.","WEBSITE_WHAT_IS_STREMIO_P2":"Películas, programas de televisión, series, televisión en vivo o canales web como YouTube y Twitch.tv: puedes encontrar todo esto en Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio es un media center moderno que le ofrece una solución integral de entretenimiento por vídeo. Puede descubrir, ver y organizar su contenido de vídeo desde complementos de fácil instalación.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Películas, programas de TV, TV en directo o canales web - Stremio pone todo esto a su disposición.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Disfruta en todos tus dispositivos","WEBSITE_DEVICES_COLLECT":"Recopilar desde Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importar desde Facebook","WEBSITE_DEVICES_LOCAL":"Agregar desde el disco local","WEBSITE_JOIN_THE_PARTY_NOW":"Únete a la fiesta ahora","WEBSITE_DEVICES_ALL":"Fácil de usar en todos tus dispositivos;","WEBSITE_EXTENDABLE_CATALOG":"Catálogo de videos extensible infinitamente;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Excelentes funcionalidades para organizar tu multimedia;","WEBSITE_AS_SEEN_ON":"Como se ve en","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Acerca de nosotros","WEBSITE_LINK_TECHNOLOGY":"Tecnología","WEBSITE_LINK_APPS":"Aplicaciones","WEBSITE_LINK_DOWNLOADS":"Descargas","WEBSITE_MORE":"Más","WEBSITE_LINK_ADDONS":"Complementos","WEBSITE_LINK_ADDON_SDK":"SDK para extensiones","WEBSITE_LINK_CONTRIBUTE":"Contribuye","WEBSITE_LINK_COMMUNITY":"Comunidad","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & Más","WEBSITE_LINK_HELP":"Centro de ayuda","WEBSITE_LINK_CONTACTS":"Contáctanos","WEBSITE_LINK_TOS":"Términos y condiciones","WEBSITE_LINK_PRAVACY":"Política de privacidad","WEBSITE_SUBSCRIBE":"Suscripción","WEBSITE_NEWSLETTER":"Únete a nuestro boletín de noticias para cosas increíbles","WEBSITE_PLACEHOLDER_EMAIL":"Su correo electrónico","WEBSITE_COMMUNITY":"Comunidad","WEBSITE_LINK_PRAVACY_LEGAL":"Privacidad y legal","WEBSITE_WHY":"¿Por qué hacemos esto?","WEBSITE_WHY_P1":"En Stremio, trabajamos cada día porque queremos solucionar un problema importante en la industria de vídeo bajo demanda. Hay tanto contenido nuevo publicado cada minuto que es virtualmente imposible de encontrar el camino a él.","WEBSITE_WHY_P2":"Ayudamos a las personas a navegar aquel enorme mundo del entretenimiento en vídeo y descubrir nuevo contenido para disfrutar. Nuestras aplicaciones traen juntas películas, series, televisión en vivo, canales web y más. Estamos dedicados a hacer esto increíblemente fácil para los usuarios buscar títulos y transmisiones que amarán.","WEBSITE_WHY_P3":"Puedes usar nuestro servicio en cualquier dispositivo y en cualquier momento, haciendo Stremio el único centro de entretenimiento de vídeo que necesitaras.","WEBSITE_TEAM":"EQUIPO","WEBSITE_TEAM_P":"El equipo Stremio es pequeño pero poderoso: entre diez de nosotros, programamos en X lenguajes y compartimos habilidades en desarrollo de software, diseño UI y UX, mercadeo y publicidad, y negocios y startups.","WEBSITE_FEATURES":"Características","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Descubre nuevo contenido con facilidad","WEBSITE_FEATURES_DISCOVER_P":"Descubre fácilmente nuevas películas, programas de televisión, series y canales para ver. Busca por categoría, género, calificación, año, etc. o simplemente escribe un nombre para buscar. Stremio hace fácil encontrar nuevo contenido de vídeo.","WEBSITE_FEATURES_ALL_CONTENT":"Todo tu contenido de vídeo en una pantalla","WEBSITE_FEATURES_ALL_CONTENT_P1":"Mira que películas, series o vídeos no has terminado y continua viéndolos; obtén notificaciones de nuevos episodios y estrenos; y navega a través de recomendaciones que obtendrás basadas en tus hábitos.","WEBSITE_FEATURES_LIBRARY":"Organiza tus videos","WEBSITE_FEATURES_LIBRARY_P1":"Agrega cualquier título a tu biblioteca de Stremio con un solo clic y encuentra tu camino a través de tu contenido, perfectamente ordenado por tipo, año u orden alfabético.","WEBSITE_FEATURES_CALENDAR":"Mantiene seguimiento de todo lo que ves","WEBSITE_FEATURES_CALENDAR_P1":"Obtén un calendario de todas las películas y series que agregas a tu biblioteca. Exporta tu calendario Stremio y sincroniza este para que siempre sepas cuando hay un nuevo episodio o un estreno.","WEBSITE_FEATURES_BIG_SCREEN":"Disfruta tu contenido de video en una pantalla grande","WEBSITE_FEATURES_BIG_SCREEN_P1":"Transmite lo que sea que estés viendo a otro dispositivo - sea este un teléfono, tableta o un T.V. con un solo clic.","WEBSITE_FEATURES_SOURCES":"Ve videos de diferentes fuentes","WEBSITE_FEATURES_SOURCES_P":"Instala complementos oficiales y de la comunidad para disfrutar las fuentes de vídeo desde diferentes proveedores - todo en una aplicación elegante y fácil de usar.","WEBSITE_CREATE_AN_ADDON":"Crear un complemento","WEBSITE_FEATURES_SYNC":"Sincroniza tu biblioteca entre distintos dispositivos y continua la reproducción","WEBSITE_FEATURES_SYNC_P1":"Haz login en tu cuenta en todos los dispositivos y podrás disfrutar de tener tu biblioteca, complementos, lista de reproducción y calendario.","WEBSITE_FEATURES_EXTENDABLE":"Catálogo de videos ampliable a través de complementos","WEBSITE_FEATURES_EXTENDABLE_P1":"El complemento de catálogo de Stremio provee de una serie de complementos instalables que permiten ver contenido a través de ellos. Ésto incluye películas, series, televisión en directo, deportes, noticias, podcasts, suscripciones webs, video juego, etc.","WEBSITE_FEATURES_AUTO_SUBS":"Subtítulos automáticos","WEBSITE_FEATURES_AUTO_SUBS_P1":"Con nuestros complementos de subtítulos puedes obtener automáticamente una variedad de opciones en tu idioma.","WEBSITE_FEATURES_CHROMECAST":"Haciendo casting a Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Disfruta del video en una pantalla más grande o envía lo que estás viendo a otro dispositivo.","WEBSITE_FEATURES_KEEP_TRACK":"Haz el seguimiento de tus series o canales favoritos.","WEBSITE_FEATURES_KEEP_TRACK_P1":"Obtén un calendario con notificaciones cuando haya nuevos episodios de tu serie o canal favoritos.","WEBSITE_FEATURES_POWER_USER":"Características de usuario experto","WEBSITE_FEATURES_POWER_USER_P1":"Ver en un reproductor externo.","WEBSITE_FEATURES_POWER_USER_P2":"Reproducir desde un fichero torrent o unlace magnet","WEBSITE_FEATURES_POWER_USER_P3":"Importa en tu librería a través de los Me gusta de Facebook o desde tu disco duro local","WEBSITE_ADD_ONS":"Complementos","WEBSITE_ADD_ONS_P1":"Todo el contenido de vídeo que Stremio provee es obtenido a través de un sistema de complementos - no se ha incorporado ningún contenido o proveedor de contenido dentro de la aplicación.","WEBSITE_ADD_ONS_P2":"Hay dos grupos de complementos disponibles: oficiales y de la comunidad.","WEBSITE_ADD_ONS_P3":"Los complementos oficiales son desarrollados y alojados por Stremio, mientras que los complementos de la comunidad son creados por nuestros miembros de la comunidad, quienes también los alojan.","WEBSITE_ADDONS_OFFICIAL":"Complementos oficiales","WEBSITE_ADDONS_WATCHUB":"Reproduce tus películas, series y programas favoritos desde proveedores como iTunes, Hulu, Amazon y otros servicios de Estados Unidos y Reino Unido.","WEBSITE_ADDONS_YOUTUBE":"Mira tus canales favoritos de Youtube libres de publicidad y obtén notificaciones de nuevos vídeos de los contribuidores que sigues.","WEBSITE_ADDONS_FILMON":"Mira canales en vivo, películas y televisión pública gratis. 600 canales de televisión, 45000 películas, documentales y más gratis.","WEBSITE_ADDONS_OPENSUBTITLES":"Subtítulos de películas y televisión en múltiples lenguajes, miles de subtítulos traducidos subidos todos los días.","WEBSITE_ADDONS_COMMUNITY":"Complementos de la comunidad","WEBSITE_ADDONS_FILMON_VOD":"Mira vídeos bajo demanda desde Filmon.tv","WEBSITE_ADDONS_TWICH":"Mira programas en vivo desde Twitch.tv - una plataforma de transmisión de vídeo para la industria de deportes electrónicos.","WEBSITE_ADDONS_VODO":"Ve películas independientes completamente gratis.","WEBSITE_ADDONS_NETFLIX":"Ve películas de Netflix y series web.","WEBSITE_ADDONS_CREATE":"Crear un complemento","WEBSITE_ADDONS_CREATE_P1":"Si lo deseas, puedes desarrollar tu propio complemento. De esta manera, puedes darte a ti y a la comunidad acceso a nuevo contenido de vídeo, y alcanzar una nueva audiencia de millones de usuarios alrededor del mundo.","WEBSITE_ADDONS_START_CREATE":"Para empezar, visita la página del SDK de complementos de Stremio:","WEBSITE_DOWNLOADS":"Descargas","WEBSITE_DOWNLOADS_P1":"Para un óptimo rendimiento, recomendamos que uses la última versión disponible de las aplicaciones de Stremio. Si por alguna razón, deseas usar una versión anterior, puedes descargarla aquí.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio para Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio para macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio para Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio para Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio para Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio para Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio para Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio para iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribuye","WEBSITE_CONTRIBUTE_P1":"La plataforma Stremio es código abierto y puedes crear fácilmente un complemento para contenido que actualmente no posee fuente.","WEBSITE_CONTRIBUTE_WHY":"¿Por qué deberías crear una extensión?","WEBSITE_CONTRIBUTE_WHY_P1":"Alcanzar nueva audiencia para tu contenido de vídeo","WEBSITE_CONTRIBUTE_WHY_P2":"La base de usuarios de Stremio crece rápidamente - desde el primer año de lanzamiento, Stremio ha ganado 1 millón de usuarios alrededor del mundo, y en el segundo año de la existencia de la plataforma este número ha crecido a 2.5 millones.","WEBSITE_CONTRIBUTE_WHY_P3":"Con tu complemento fácilmente alcanzarás esta audiencia y distribuirás tu contenido de vídeo a ellos.","WEBSITE_CONTRIBUTE_ALL":"Mira tus películas, series y canales favoritos en un solo lugar.","WEBSITE_CONTRIBUTE_ALL_P1":"¿Eres aficionado de un un tipo particular de contenido no disponible aún en Stremio? Crea un complemento para este y disfruta de ver tus vídeos favoritos en uno de los centros de entretenimiento más grandes y fáciles de usar en el mercado.","WEBSITE_CONTRIBUTE_ALL_P2":"Además de eso, obtendrás la infinita gratitud de otros miembros de la comunidad de Stremio afines.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetiza tu complemento y gana dinero con su ayuda","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Una vez desarrolles un nuevo complemento para Stremio, puedes fácilmente monetizar este a través de diferentes maneras. Si estás considerando esto, siéntete libre de entrar en contacto con nosotros a ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - estaremos felices de consultarte y asesorarte sobre las opciones de monetización de tu complemento.","WEBSITE_CONTRIBUTE_TRANSLATE":"Conviértete en un traductor voluntario","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Si deseas disfrutar de las aplicaciones de Stremio en diferentes lenguajes, puedes unirte a nuestra comunidad de traductores voluntarios. Ellos nos ayudan a agregar versiones de Stremio en diferentes lenguajes.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"¿Estás ansioso por comenzar?","WEBSITE_TRANSALTE_STREMIO":"Traduce Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Comunidades oficiales","WEBSITE_COMMUNITY_OFFICIALS_P1":"Sé parte de la creciente comunidad de Stremio. Síguenos en redes sociales y no seas tímido de decir hola - ¡nos encanta escuchar a nuestros fanáticos! ","WEBSITE_COMMUNITY_UNOFFICIALS":"No oficial","STREMIO_COMMUNITY_NL":"Stremio Países Bajos","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Alemania","STREMIO_COMMUNITY_BELGIUM":"Stremio Bélgica","STREMIO_COMMUNITY_FRANCE":"Stremio Francia","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italia","STREMIO_COMMUNITY_UK":"Stremio Reino Unido","STREMIO_COMMUNITY_USA":"Stremio Estados Unidos","STREMIO_COMMUNITY_MEXICO":"Stremio México","STREMIO_COMMUNITY_ADDONS":"Complementos de Stremio","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Socios y partidarios","WEBSITE_COMMUNITY_GOODIES":"Stremio Goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Protectores de pantalla","WEBSITE_COMMUNITY_ART":"Galería de Arte de la Comunidad","WEBSITE_LINK_ART":"Galería de arte de la comunidad","WEBSITE_CONTACT_US":"Contacta con nosotros","WEBSITE_CONTACT_US_P1":"Si tienes alguna pregunta, comentario o sugerencia, siéntete libre de entrar en contacto con nosotros a través del formulario de contacto más abajo.","WEBSITE_CONTACT_US_P2":"Ten presente que nos ubicamos en Bulgaria, entonces habrá un retraso en la respuesta a su consulta debido a las diferencias de zona horaria.","WEBSITE_CONTACT_US_SUCCESS":"Tu mensaje ha sido enviado. Nos pondremos en contacto contigo lo antes posible.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"¡Por favor escribe un correo electrónico válido!","WEBSITE_CONTACT_US_Q_RELATED_TO":"¿Con qué se relaciona su pregunta?","WEBSITE_CONTACT_US_Q_OS":"¿Cuál es su sistema operativo?","WEBSITE_CONTACT_US_PH_EMAIL":"Su correo electrónico","WEBSITE_CONTACT_US_PH_MESSAGE":"Mensaje","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ENVIAR","WEBSITE_CONTACT_US_Q_1":"¿Cómo instalar?","WEBSITE_CONTACT_US_Q_2":"¿Cómo desinstalar?","WEBSITE_CONTACT_US_Q_3":"¿(HTML) Cómo hacer lasaña?","WEBSITE_CONTACT_US_Q_4":"Complementos","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Tecnología","WEBSITE_TECHNOLOGY_P1":"Amamos la tecnología y la ciencia loca. </br> Aquí está lo que potencia a Stremio (todo es código abierto).","WEBSITE_TECHNOLOGY_P_QT":"Desarrollo de software multiplataforma en su mejor momento.","WEBSITE_TECHNOLOGY_P_MPV":"Un reproductor libre, de código abierto y multiplataforma.","WEBSITE_TECHNOLOGY_P_RN":"React Native te permite desarrollar aplicaciones móviles usando solo Javascript.","WEBSITE_TECHNOLOGY_P_VLC":"Framework multimedia embebido en la aplicación para obtener multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm es una plataforma móvil y un reemplazo para SQlite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js es un entorno de Javascript multi-plataforma y de código abierto.","WEBSITE_TECHNOLOGY_P_RUST":"Rust es un lenguaje de programación de sistemas multi-paradigma que se enfoca en la seguridad, y más concretamente en ejecución concurrente de manera segura.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribuye al proyecto","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Hay dos formas en las que puedes contribuir a Stremio y ayudarnos a hacer el producto aún mejor.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Puedes donar tus habilidades en lenguaje traduciendo la plataforma...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"o","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... puedes emplear tus habilidades de programación para la creación de extensiones de la comunidad. ","WEBSITE_TRANSLATE_STREMIO":"Traduce Stremio","WEBSITE_404_OH_NO":"Ay no! La página que estás buscando no está aquí...","WEBSITE_GO_HOME":"Ir al inicio","WEBSITE_LINK_OTHER_DOWNLOADS":"Otras descargas","WEBSITE_FAQ_ABR":"Preguntas frecuentes","WEBSITE_SUPPORT":"Soporte","WEBSITE_DOWNLOAD_4_0_BETA":"Descarga ahora Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Para escritorio","WEBSITE_LINK_ADDON_COMPETITION":"Competición de complementos","WEBSITE_LINK_ART_CONTEST":"Competición artística","WEBSITE_MY_ACCOUNT":"Mi cuenta","WEBSITE_MAINPAGE_FAQ_001_H1":"¿Qué es Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio es un \'media center\' moderno que te da la libertad de ver todo lo que quieras.","WEBSITE_MAINPAGE_FAQ_002_H1":"¿Cómo funciona?","WEBSITE_MAINPAGE_FAQ_002_P1":"Una vez que Stremio esté instalado en tu dispositivo y hayas creado una cuenta, todo lo que tienes que hacer es ver el catálogo de complementos para instalar el complemento que quieras y estarás listo para comenzar a explorar contenido.","WEBSITE_MAINPAGE_FAQ_002_P2":"A continuación, puede ir a las secciones Descubrir o Panel para comenzar a explorar contenido.","WEBSITE_MAINPAGE_FAQ_003_H1":"¿Qué puedo ver?","WEBSITE_MAINPAGE_FAQ_003_P1":"Muchas cosas: Películas, series, canales web, deporte, canales de televisión, podcasts, etc. Gracias a nuestro sistema de complementos puedes acceder a una gran variedad de contenidos.","WEBSITE_MAINPAGE_FAQ_004_H1":"¿Es Stremio software libre?","WEBSITE_MAINPAGE_FAQ_004_P1":"Sí, puedes consultar los siguientes enlaces: ${1}aplicación de escritorio${2} y ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"¿Es Stremio seguro?","WEBSITE_MAINPAGE_FAQ_005_P1":"Sí: al ser software libre, el código es auditable publicamente y puedes revisarlo tú mismo.","WEBSITE_MAINPAGE_FAQ_006_H1":"¿Qué ocurre con mi privacidad?","WEBSITE_MAINPAGE_FAQ_006_P1":"Respetamos la privacidad de los usuarios y no guardamos ningún dato personal exceptuando lo mínimo necesario para poder crear y sincronizar tu cuenta.","WEBSITE_MAINPAGE_FAQ_006_P2":"Hay un ${1}modo invitado{2} al crear la cuenta, que no requiere ningún dato: en éste modo, no hay ninguna llamada a nuestros servidores. Sin embargo, ésto tiene el coste de no tener disponible algunas características útiles como sincronizar tu biblioteca entre distintos dispositivos.","WEBSITE_MAINPAGE_FAQ_007_H1":"¿Puedo enviar el contenido a mi TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Sí, damos soporte a Chromecast y puedes enviar contenido de video desde la aplicación de escritorio o aplicación móvil (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"¿Cuantos complementos tiene Stremio?","WEBSITE_MAINPAGE_FAQ_008_P1":"A finales de 2019, más de 50 - para más información, consulta nuestro catálogo de complementos.","WEBSITE_MAINPAGE_FAQ_009_H1":"¿Es posible ampliar Stremio más allá de lo que se ofrece en el catálogo de complementos?","WEBSITE_MAINPAGE_FAQ_009_P1":"Sí, deberías visitar: ${1}PimpMyStremio${2}, ${3}la comunidad en Reddit{4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"¿Qué dispositivos soporta Stremio?","WEBSITE_MAINPAGE_FAQ_010_P1":"Tenemos aplicaciones de escritorio para Windows, Mac y GNU/Linux. Para móviles o celulares, damos soporte a Android e iOS, aunque la funcionalidad en iOS es limitada (no soporta muchos complementos).","WEBSITE_MAINPAGE_FAQ_010_P2":"Hay muchos dispositivos basados en Android en los cuales puedes ejecutar Stremio, por ejemplo NVIDIA Shield y Amazon Fire Stick, aunque no damos soporte oficial.","WEBSITE_MAINPAGE_FAQ_011_H1":"¿Podeis añadir cierto contenido a Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Lo sentimos, nosotros no proveemos del contenido, sin embargo, cuantos más complementos tengas instalads, mayor será el contenido que tendrás disponible.","WEBSITE_MAINPAGE_FAQ_012_H1":"¿Puede Stremio reproducir enlaces magnet?","WEBSITE_MAINPAGE_FAQ_012_P1":"Sí, y también puede reproducir enlaces HTTP normales, así como ficheros torrent(mediante arrastrar y soltar).","WEBSITE_MAINPAGE_FAQ_013_H1":"¿Puedo descargar un video y verlo offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Tener el contenido offline es una característica en desarrollo que estará disponible más adelante, aunque si dejas que Stremio cachee el contenido en tu dispositivo (revisa el panel de administración) podrás ver el contenido posteriormente sin conexión.","WEBSITE_MAINPAGE_FAQ_014_H1":"¡No funciona nada, ayuda!","WEBSITE_MAINPAGE_FAQ_014_P1":"¿Estás seguro de que has instalado los complementos? Si la respuesta es sí, dirigete a nuestro ${1}centro de ayuda${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"¿Cómo mantiene Stremio los costes de desarrollo?","WEBSITE_MAINPAGE_FAQ_015_P1":"Ocasionalmente publicamos anuncios no intrusivos, pero estamos considerando pasar a un modelo de donación.","WEBSITE_MAINPAGE_FAQ_015_P2":"Si tienes más preguntas, visita nuestro ${1}centro de ayuda${2}.","HELP_LEARN_MORE":"Ayúdanos a saber más de ti.","LIFESTYLE":"Estilo de vida","SPORTS":"Deportes","FOOD_HEALTH":"Comida y Salud","BEAUTY_FASHION":"Belleza y Moda","NEWS":"Noticias","GAMING":"Juegos","SCIENCE_EDUCATION":"Ciencia y Educación","MUSIC":"Música","TRAVEL":"Viajes","LATE_NIGHT":"Espectáculo nocturno","REALITY":"Reality","COMEDY":"Comedia","DIY":"Hazlo tú mismo","TECH":"Tecnología","CINEMA":"Cinema","CONTINUE":"Continuar","SLOW_LOADING":"¿CARGANDO LENTO?","I_GIVE_UP":"Me rindo","LEARN_MORE":"Saber más","POOR_SOURCE":"Esta fuente posee poca disponibilidad o su conexión de internet no es suficientemente rápida","PICK_CATEGORIES_ERR":"Tienes que seleccionar al menos 3 categorías","ADJUST_TIMING":"Ajustar tiempo con ","ADJUST_SIZE":"Ajustar tamaño con ","SEARCH_ANYTHING":"Puedes buscar cualquier cosa...","ALL_CATEGORIES":"Todas","SEARCH_CATEGORIES":"Películas, Series, YouTube & TV","SEARCH_PERSONS":"Actores, Directores y Escritores","SEARCH_PROTOCOLS":"HTTP y enlaces magnéticos","SEARCH_TYPES":"Enlaces IMDB / TVDB","WATCHED":"Viendo","SHOW_LESS":"Mostrar menos","LAST_SEARCHES":"Últimas búsquedas","CLEAR_HISTORY":"Borrar historia","CHOOSE_SOME":"Escoge algunos de estos:","NO_WEB_REMOTE":"Web Remote no se pudo cargar","STREMIO_OFFLINE":"Stremio está desconectado","STREMIO_EXPENSIVE_CONNECTION":"La conexión de red es costosa","USE_DATA":"Usar datos","WARNING":"Advertencia","MORE_INFO":"Más información ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Cargando ...","STREMIO_TV_BACK_TO_LANGUAGES":"Regresar a lenguajes","STREMIO_TV_REMOTE":"Remoto","STREMIO_TV_GO_TO":"Ir a:","STREMIO_TV_OR_SCAN":"o escanear:","STREMIO_TV_ADDON_INSTRUCTIONS":"Por favor, siga las instrucciones para instalar su complemento preferido.","STREMIO_TV_LIVE_TV":"TV en directo","STREMIO_TV_RESUME_WATCHING":"Continuar viendo","STREMIO_TV_LOADING_BACKGROUND":"Cargando fondo","STREMIO_TV_CHECKING_AUTHENTICATION":"Verificando Autenticación","STREMIO_TV_LOADING_BOARD":"Cargando Panel","STREMIO_TV_LOGIN_HEADER_LINE_1":"Nosotros queremos que nuestros usuarios tengan la mejor experiencia personalizada posible con nuestro software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"Esta es la razón por la cual le pedimos cree una cuenta y/o ingrese a ella.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Gracias por su comprensión,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"El equipo Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Para usar el Control Web con su teléfono inteligente / tableta / escritorio:","STREMIO_TV_WIFI_SETUP":"Configuración wifi","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle no detecta una conexión a internet.","STREMIO_TV_WIFI_DETAILS_1":"Conectar a:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Contraseña a usar:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Abrir navegador de internet con el enlace:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Por Último Visto","STREMIO_TV_LIBRARY_SORT_NAME":"Por Nombre","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Por Veces Visto","STREMIO_TV_DETAILS_SEASON_NUMBER":"Temporada ${1}","STREMIO_TV_STREAMS_LOADING":"Cargados ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} complemento continua cargando...","STREMIO_TV_PLAYER_SETTINGS":"Configuración del Reproductor","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Retraso de Subtítulos","STREMIO_TV_PLAYER_AUDIO_DELAY":"Retraso de audio","STREMIO_TV_PLAYER_VIDEO_SCALING":"Escalado de vídeo","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Fuente no soportada","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Fallo al abrir el enlace externo","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Reproducir con ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Reproducir con libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Cambiar al reproductor libVLC debido a un error de reproducción","STREMIO_TV_ADDONS_TITLE":"Utiliza Stremio en tu dispositivo móvil o PC para instalar o configurar complementos y pulsa \\"Sincronizar Complementos\\"","STREMIO_TV_ADDONS_SUBTITLE":"Nota: asegúrate de utilizar la misma cuenta de Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sincronizar Complementos","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Complementos sincronizados exitosamente","STREMIO_TV_ADDONS_SYNC_FAILED":"Fallo al sincronizar complementos","STREMIO_TV_META_LINK_FAILED":"Fallo al abrir meta enlace","STREMIO_TV_CATALOG_LOADING":"El catálogo sigue cargando...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Idioma de la interfaz actualizado","STREMIO_TV_SETTINGS_THEME_UPDATED":"Tema actualizado","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Idioma Preferido","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Idioma Preferido Secundario","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Reproducción tunelizada","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Posibles errores de reproducción en algunos dispositivos","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Algunos formatos de video pueden no funcionar","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Sin caché","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Por Defecto","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Suave","STREMIO_TV_SETTINGS_PROFILE_FAST":"Rápido","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Rápido","STREMIO_TV_SETTINGS_SERVER_URL":"URL del servidor de streaming","STREMIO_TV_SETTINGS_SERVER_VERSION":"Versión del servidor","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Desconocido","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Versión de Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Editar URL del servidor","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Ingrese la URL del servidor de streaming","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Para leer la Política de privacidad de Stremio, visite:","STREMIO_TV_SETTINGS_TOS_TEXT":"Para leer los Términos y condiciones de Stremio, visite:","STREMIO_TV_NAV_SEARCH":"Buscar","STREMIO_TV_NAV_HOME":"Inicio","STREMIO_TV_NAV_DISCOVER":"Descubrir","STREMIO_TV_NAV_LIBRARY":"Biblioteca","STREMIO_TV_NAV_MOVIES":"Películas","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Canales","STREMIO_TV_NAV_TV":"TV en vivo","STREMIO_TV_NAV_SETTINGS":"Configuración","STREMIO_TV_NAV_ADDONS":"Complementos","STREMIO_TV_LOGIN_TITLE":"Asociar Cuenta","STREMIO_TV_LOGIN_EXPIRES_IN":"Expira en","STREMIO_TV_LOGIN_STEP_ONE":"Escanea el Código QR de arriba o visita","STREMIO_TV_LOGIN_STEP_TWO":"Inicia sesión a tu cuenta Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Solicitar un nuevo enlace","STREMIO_TV_LOGIN_LINK_REFRESHED":"Código de login actualizado","STREMIO_TV_SEARCH_PLACEHOLDER":"Escribe algo","STREMIO_TV_SEARCH_NO_ADDONS":"¡No se solicitaron complementos para los catálogos!","STREMIO_TV_SEARCH_BUTTON":"Buscal","STREMIO_TV_SEARCH_KEY_DEL":"Borrar","STREMIO_TV_SEARCH_KEY_SPACE":"Espacio","STREMIO_TV_SEARCH_KEY_CLEAR":"Limpiar","STREMIO_TV_SEARCH_HISTORY_TITLE":"Historial de Búsqueda","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Puedes buscar por Título, Actores, Canales y más...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Vaciar el Historial de Búsqueda","STREMIO_TV_FILTERS_DESCRIPTION":"Elige uno de los filtros a continuación","FILTERS":"Filtros","SETTINGS":"Configuración","ACCOUNT":"Cuenta","LOGOUT":"Cerrar Sesión","THEMES":"Temas","PLAYBACK":"Reproducción","PLAYBACK_SPEED":"Velocidad de Reproducción","AUDIO_TRACKS":"Pistas de Audio","VIDEOS":"Videos","SERVER":"Servidor","LINKS":"Enalces","ABOUT":"Acerca De","INTERFACE":"Interfaz","ANIMATIONS":"Animaciones","STATUS":"Estado","LANGUAGE":"Idioma","SIZE":"Tamaño","DELAY":"Retraso","BOLD":"Negrita","TEXT_COLOR":"Color del Texto","OUTLINE_COLOR":"Color del Contorno","BACKGROUND_COLOR":"Color de Fondo","BACKGROUND_BLUR":"Desenfoque de Fondo","SEEK_TIME_DURATION":"Duración del Tiempo de Búsqueda","AUTO_PLAY":"Reproducir el Episodio Siguiente automáticamente","PLAY_NOW":"Reproducir Ahora","MARK_AS_WATCHED":"Marcar como Visto","MARK_AS_UNWATCHED":"Marcar como No Visto","REWIND_TO_BEGINNING":"Rebobinar al Principio","CONTINUE_WATCHING":"Seguir Viendo","ALL":"Todo","SECONDS":"segundos","ON":"ENCENDIDO","OFF":"APAGADO","RELOAD":"Recargar","EDIT_URL":"Editar URL","NONE":"Ninguno","EMBEDDED":"Embebido","REMOTE_SWITCH_DEVICES":"Cambiar dispositivos","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Ajustar tiempo","REMOTE_ADJUST_SIZE":"Ajustar tamaño","REMOTE_COULD_NOT_BE_LOADED":"El Control Web podría no cargar","REMOTE_RETRY":"Volver a intentar","TORRENT_PROFILE_DEFAULT":"Por Defecto","TORRENT_PROFILE_SOFT":"Suave","TORRENT_PROFILE_FAST":"Rápido","TORRENT_PROFILE_ULTRA_FAST":"Ultra Rápido","FAQ_001_H1":"¿Qué es Stremio?","FAQ_001_P1":"Stremio es un software de centro multimedia diseñado para el entretenimiento de vídeo pensando en el fácil uso. Stremio te permite organizar y ver tu propia colección de películas, series, canales y programas en vivo.","FAQ_001_P2":"Stremio colecta el contenido que muestra desde tu disco local y nuestro sistema de complementos.","FAQ_001_P3":"Te notificará cuando nuevos episodios, películas y vídeos en los cuales estás interesado salgan y proveerá recomendaciones de películas para ti.","FAQ_02_H1":"¿Cómo se compara Stremio con Kodi y Plex?","FAQ_02_P1":"Estamos inspirados por estas dos piezas de software. Pero tenemos diferentes objetivos - Stremio es específicamente pensado en el entretenimiento de vídeo, y se esfuerza por convertirse en la solución principal para eso al ser muy fácil de usar.","FAQ_02_P2":"Stremio nunca será tan personalizable y rico en características como Kodi y Plex, pero es significativamente más fácil de usar. ${1} Obtén y mira ${2} :)","FAQ_03_H1":"¿Cómo se compara Stremio con Netflix?","FAQ_03_P1":"Nuevamente, Netflix es una de nuestras inspiraciones. Nos esforzamos por lograr la experiencia del usuario de Netflix, además de muchos extras adicionales. Pero más importante, te damos la libertad de manejar tu propia biblioteca y agregar nuevas fuentes de contenido con nuestro sistema de complementos.","FAQ_03_P2":"Esto hace a Stremio infinitamente extensible, entonces cuando usas Stremio, no estás limitado al contenido que Netflix decide licenciar. Por ejemplo, a través de Stremio puedes ver contenido desde ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} e incluso ¡${9}Netflix${10} mismo!","FAQ_04_H1":"¿Cómo se compara Stremio con Flipboard?","FAQ_04_P1":"No nos hacemos esa pregunta frecuentemente, excepto cuando hablamos con emprendedores :)","FAQ_04_P2":"Stremio es por diseño un recopilador de contenido, lo cual esencialmente lo hace un Flipboard para vídeo. Esto es muy evidente en nuestra sección de Panel, que te da un catálogo y notificaciones de nuevos episodios y vídeos que sigues, tal como Flipboard.","FAQ_05_H1":"¿Cómo se compara Stremio con Popcorn Time?","FAQ_05_P1":"Stremio y Popcorn Time son similares en la interfaz de usuario, porque no hay muchas formas de hacer catálogos de entretenimiento de vídeo correctamente :)","FAQ_05_P2":"Mientras que Popcorn Time es enfocado en transmitir torrents desde fuentes específicas, Stremio no es restrictivo y es meramente un recopilador de contenido - no se restringe a una fuente específica de contenido.","FAQ_05_P3":"Además, nosotros no proveemos ningún complemento torrent por defecto, así Stremio no cubre el caso de uso de Popcorn Time oficialmente.","FAQ_05_P4":"Otra diferencia notable es que Popcorn Time es completamente código abierto, mientras Stremio es ${1} parcialmente código abierto${2}.","FAQ_06_H1":"¿Agregarán esta película/serie?","FAQ_06_P1":"No, disculpa :(","FAQ_06_P2":"Como es mencionado en la mayoría de las otras preguntas, Stremio no provee contenido alguno por si mismo - todo es agregado a través de un sistema de complementos. En caso de quieras solicitar un contenido, puedes usar el botón “Reportar” en el reproductor, el cual enviará un correo al autor del complemento que estás usando actualmente.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"¿Crearan un complemento para X?","FAQ_08_P1":"Es completamente posible.","FAQ_08_P2":"Si tienes una idea para un complemento, escríbenos a ${1}office@stremio.com${2}, pero asegúrate de que tu idea complementaria no infrinja los derechos de autor ni los términos de uso.","FAQ_08_P3":"En el momento, la siguiente cosa en nuestro plan de trabajo son complementos para FandangoNOW, vídeo bajo demanda Filmon.tv y Crunchyroll.","FAQ_09_H1":"¿Usa Stremio BitTorrent?","FAQ_09_P1":"Si, Stremio soporta BitTorrent como un protocolo de transmisión. Puedes usar este con un complemento torrent, o por arrastrar y soltar un archivo .torrent en Stremio, o por pegar un enlace magnético en la barra de búsqueda.","FAQ_09_P2":"Por favor note que el único complemento oficial usando BitTorrent es ${1}Vodo${2}, el cual provee contenido independiente, todos permitidos para ser distribuidos con BitTorrent.","FAQ_09_P3":"No soportamos el uso de cualquier complemento de terceros que pueda infringir derechos de autor.","FAQ_10_H1":"¿Qué puedo ver en Stremio con los complementos oficiales?","FAQ_10_P1":"Por defecto, puedes ver contenido de Filmon.tv, YouTube y Vodo en Stremio mismo, con su reproductor embebido. Adicionalmente, tenemos un complemento para Twitch.tv y otros tantos.","FAQ_10_P2":"Esto combinado provee una selección de:","FAQ_10_L1":"Canales de televisión populares, proveídos por Filmon.tv - por ejemplo E4, BBC, Bollyworld TV","FAQ_10_L2":"Todo desde YouTube - por ejemplo BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Películas independientes con Vodo","FAQ_10_L4":"Transmisiones de juegos en línea con Twitch.tv","FAQ_10_P3":"Adicionalmente, hay muchas fuentes de contenido provistas con los complementos de Guidebox y Netflix, los cuales <b>no</b> reproducirán completamente dentro de Stremio, pero podría redirigirte al service dado. For example, el complemento de Guidebox puede darte una selección de películas que puedes reproducir en Estados Unidos gratuitamente, desde servicios como TubiTV y Crackle.","FAQ_11_H1":"Stremio no instala, ¿Qué puedo hacer?","FAQ_11_P1":"Si estás en Windows, intenta ${1}este instalador alternativo${2}.","FAQ_11_P2":"Si estás en Mac OS X, ten presente que no soportamos versiones anteriores a OS X Mavericks (10.9).","FAQ_11_P3":"Si estás en Linux, ten presente que solo soportamos Linux de 64 bits (x64) en el momento.","FAQ_11_P4":"Si aún no puede resolver su problema, por favor escríbanos a nuestro ${1}grupo de Facebook${2}.","FAQ_12_H1":"¿Por qué mi antivirus reclama? ¿Es Stremio seguro?","FAQ_12_P1":"Aseguramos que Stremio ${1}100% libre de virus${2}.","FAQ_12_P2":"Su antivirus está reclamando porque nosotros incluimos publicidad en nuestro instalador, la cual es reconocida por algunos antivirus como software publicitario.","FAQ_12_P3":"Si aún estás inseguro, puedes probar nuestro ${1}instalador alternativo${2}.","FAQ_13_H1":"¿Cómo puedo crear un complemento?","FAQ_13_P1":"Para principiantes, recomendamos que revises nuestro ${1}módulo de sistema de complementos${2} en GitHub.","FAQ_13_P2":"Después, puedes seguir el ${1}tutorial: Hello World${2}.","FAQ_13_P3":"Si no tienes habilidades en programación, por favor publica tu idea en ${1}la comunidad Reddit${2} y contáctanos con tu idea de complemento a ${3}office@stremio.com${4}.","FAQ_14_H1":"¿Cómo se publican complementos?","FAQ_14_P1":"Cuando creas un complemento y lo alojas, y pones un campo <b>endpoint</b> en su manifiesto, que apunta a una dirección de complemento funcional, el complemento automáticamente se publicará por si mismo en nuestro ${1}catálogo de complementos${2}.","FAQ_14_P2":"Esto sucede porque la parte del servidor del módulo stremio-addons realiza automáticamente una llamada a nuestra API para anunciar el complemento. Cuando nuestra API valida su <b>endpoint</ b> como un complemento válido, comenzará a mostrarse en el catálogo.","FAQ_15_H1":"¿Puedo ejecutar Stremio en mi navegador?","FAQ_15_P1":"No en este momento, ¡pero vendrá pronto!","FAQ_15_P2":"Si tienes curiosidad de ver un alfa, puedes verlo aquí: ${1}alpha4.strem.io${2}. Ten en mente que la transmisión es deshabilitada en este alfa. Soportamos Chrome, Firefox, Opera y Edge.","FAQ_16_H1":"Transmitir al televisor no funciona / subtítulos no funcionas","FAQ_16_P1":"La transmisión al televisor usa tecnología DLNA, que es muy inconsistente entre diferentes marcas y modelos de televisor. Por esa razón, no tenemos la capacidad de probarlo en todos los casos, por lo que está lejos de ser perfecto. A pesar de esto, estamos trabajando para mejorarlo constantemente, pero no podemos darle una estimación de cuándo la tecnología DLNA comenzará a funcionar correctamente con su televisor.","FAQ_16_P2":"Si ni siquiera ve su televisor en el menú de transmisión, intente deshabilitar su conexión de red y volver a habilitarla (en Windows, haga clic derecho en la red y use Activar/Desactivar), y reinicie su enrutador, televisor y computador.","FAQ_16_P3":"Si aún presentas problemas, puedes ayudarnos enviándonos la información de marca y modelo de tu televisor a ${1}office@stremio.com${2}.","FAQ_16_P4":"En el momento, recomendamos Chromecast, el cual soportamos bastante bien, o simplemente conecta a tu televisor con un cable HDMI.","FAQ_17_H1":"Stremio se bloquea y/o cierra, ¿qué puedo hacer?","FAQ_17_P1":"Primero que todo, si estás usando Windows 7 con el antivirus AVG: tenemos un problema con esta combinación. El problema es en el mismo AVG y no hay forma razonable para resolver el problema para nuestro fin. Desafortunadamente, excepciones o deshabilitar el antivirus no funcionará. La única solución es reemplazar AVG con otro antivirus.","FAQ_17_P2":"Si esto no soluciona el problema, pero aún estás usando Windows, por favor actualiza al último <i>service pack</i> y actualiza/reinstala tus controladores de la GPU, luego intenta de nuevo.","FAQ_17_P3":"Si su problema aún no se resuelve, o estás usando un Mac o Linux, por favor escríbenos reportando los detalles exactos del problema a ${1}nuestro grupo de Facebook${2}.","FAQ_18_H1":"¿Cómo puedo crear un complemento?","FAQ_18_P1":"Para principiantes, recomendamos que revises nuestro ${1}módulo de sistema de complementos${2} en GitHub.","FAQ_18_P2":"Después, puedes seguir el ${1}tutorial: Hello World${2}.","FAQ_18_P3":"Si no tienes habilidades en programación, por favor publica tu idea en ${1}la comunidad Reddit${2} y contáctanos con tu idea de complemento a ${3}office@stremio.com${4}.","FAQ_19_H1":"¿Por qué Stremio ocupa espacio en disco?","FAQ_19_P1":"Stremio tiene una <b>cache local</b> para almacenar temporalmente los archivos de vídeo que ves.","FAQ_19_P2":"Esto tiene dos beneficios: primero, esto permite a Stremio precargar el vídeo y así asegurar una transmisión más fluida. Segundo, este guarda los vídeos en la cache local, así puedes continuar viéndolos sin conexión.","FAQ_19_P3":"La cantidad que almacena Stremio depende de la configuración de <b>Cache<b> en el panel de Configuración. Stremio puede ser configurado para almacenar una cantidad (ej. 2GB) en su disco local, a menos que el vídeo transmitido actualmente sea mayor que eso, en cuyo caso tendrá que ubicar suficiente almacenamiento para guardarlo hasta que lo retransmitas","FAQ_20_H1":"¿Donde está la carpeta de almacenamiento?","FAQ_20_P1":"En Windows, es stremio-cache en el disco que seleccionaste en Configuración (ej. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"En MacOS, es \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"En Linux, es \\"~/.stremio/stremio-cache\\" o \\"~/stremio-cache\\"","FAQ_21_H1":"Obtengo el error \\"Streaming server is not found\\", ¿qué puedo hacer?","FAQ_21_P1":"Si ves este error, quiere decir una de las siguientes cosas::","FAQ_21_P2":"1) Estás intentando usar un complemento que depende de fuentes de Youtube/BitTorrent, a través de nuestra ${1}versión web${2}. En este caso, deberías instalar nuestra versión de escritorio desde ${3}nuestro sitio web${4}.","FAQ_21_P3":"2) Algo está mal con tu instalación de Stremio. En este caso, intenta reinstalar nuestra última versión de escritorio desde ${1}el sitio web${2}. Si esto no ayuda, intenta deshabilitar los programas de antivirus y el cortafuegos, reinicia tu computador e intenta de nuevo. Si esto tampoco funciona, escríbenos por favor a ${3}nuestro grupo de facebook${4}.","FAQ_22_H1":"No puedo ver/usar la mayoría de complementos en iOS","FAQ_22_P1":"Debido a las restricciones de los términos y condiciones de Apple App Store, tenemos restringida la aplicación iOS solo a un conjunto particular de complementos.","FAQ_22_P2":"Pero puedes estar seguro - habrán más complementos para iOS en el futuro, y podríamos también agregar una integración que te permita usar todos los complementos de Stremio gracias a la conexión de la aplicación iOS con el servidor de transmisión de Stremio."}')},3236:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filma","TYPE_series":"Telesaila","TYPE_tv":"Telebista katea","TYPE_channel":"Kanala","TYPE_other":"Beste batzuk","TYPE_movie_PL":"Filmak","TYPE_series_PL":"Telesaila","TYPE_tv_PL":"Telebista kateak","TYPE_channel_PL":"Kanalak","TYPE_other_PL":"Beste batzuk","TYPE_ALL":"All","VIDEO":"Bideoa","BACK":"Atzera","MORE":"Gehiago","DONE":"Eginda","COPY":"Kopiatu","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Ezagutu","Board":"Arbela","Library":"Liburutegia","My Library":"Nire Liburutegia","Calendar":"Egutegia","NOTIFICATION_ONLINE":"Linean zaude orain","NOTIFICATION_OFFLINE":"Une honetan lineaz kanpo zaude","INTERNET_CONNECTION":"Sareko konexioa","STORAGE_FULL_TITLE":"Abisua: biltegiratzea beteta!","STORAGE_FULL_TEXT":"Stremio-k ezin izango ditu zure ezarpenak, lehentasunak edo saio-hasierako informazioa gorde. Baloratu Stremio berriro abiaraztea edo berriro instalatzea.","SEARCH":"bilatu","SEARCH_NO_RESULTS":"Ez da emaitzarik aurkitu","SEARCH_EXPLANATION_CONTENT":"Bilatu filmak, serieak, YouTube eta telebista kateak","SEARCH_EXPLANATION_PEOPLE":"Aktore, zuzendari eta idazleak bilatu","SEARCH_PASTE_LINKS":"Itsatsi HTTP eta Magnet estekak","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Gehitu liburutegian","REMOVE_FROM_LIB":"Kendu liburutegitik","ADDED_TO_LIB":"Liburutegian gehitu da","REMOVED_FROM_LIB":"Liburutegitik kendu da","TRAILER":"Trailerra","WATCH_TRAILER":"Ikusi Trailerra","WATCH_NOW":"Ikusi orain","SHOW":"Ikuskizuna","SHOW_MOVIE":"Erakutsi filma","WATCH_RANDOM":"Ikusi ausaz","IMDB_RATING":"IMDb balorazioa","YEAR":"Urtea","DIRECTOR":"Zuzendaria","WRITER":"Idazlea","LEAD_ACTORS":"Aktore nagusiak","CAST":"Aktoreak","CREW":"Tripulazioa","SHOW_MORE_CAST":"Erakutsi gehiago »","AIRED":"Erretransmititua","SEASONS":"Denboraldiak","GENRE":"Generoa","CATALOG":"Katalogoa","SUMMARY":"Laburpena","SHOW_MORE":"Erakutsi gehiago","SIMILAR":"Antzekoak","UPCOMING":"Datozenak","ENDED":"Bukatuta","DURATION":"Iraupena","FEATURED":"Nabarmenduak","METADATA":"Metadatuak","CATEGORY":"kategoria","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"bilatu bideoak","SEARCH_PLACEHOLDER":"bilatu edo itsatsi URLa","ADDON":"gehigarria","ADDONS":"Gehigarriak","OFFICIAL":"ofiziala","ADDONS_OFFICIAL":"Stremio gehigarri ofizialak","ADDONS_POPULAR":"Zure inguruan ezaguna","ADDON_FREE":"doan","ADDON_PEERED":"begiratu","ADDON_SUBSCRIPTION":"harpidetza","ADDON_STREAM_GEORESTRICTED":"ez dago erabilgarri zure eremuan","ADDON_STREAM_OFFLINECACHE":"Lineaz kanpoko cachea","ADDON_STREAM_LOCALFILE":"Tokiko fitxategia","SHARE_ADDON":"Partekatu gehigarria","AVAILABLE_STREAMS":"Eskuragarri dauden stream-ak","NO_STREAM":"Ez da stream-ik aurkitu","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Stream gehiagorako, instalatu gehigarriak","STREAM_NOT_SUPPORTED":"Aukeratutako stream-a ez da onartzen plataforma honetan.","ADDON_CATALOGUE":"Erakutsi gehigarri guztiak »","ADDON_CATALOGUE_MORE":"Instalatu gehigarriak","REPO_ADDED":"Biltegia gehitu da","ADDON_REPO_EXIST_ERR":"Gehigarrien bilduma hau dagoeneko existitzen da","ADDON_REPO_ERR":"Errore bat gertatu da bilduma gehitzean","ADDON_ADD_ERR":"Errore bat gertatu da gehigarria gehitzean","ERR_ADDON_PROTECTED":"Ezin da gehigarria desinstalatu, babestuta dago","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Arazoren bat izan da. Baliteke autentifikazioak huts egitea","ERR_NOT_COLLECTION_URL":"Ez da bildumaren URLa","ERR_NOT_ADDON_URL":"Ez da baliozko gehigarri URLa","ERR_DETECTFROMURL":"Ezin da URL honetatik gehigarririk/bildumarik aurkitu","ADDON_DUPLICATE_WARNING":"Abisua: gehigarri bikoiztua","ADDON_COLLECTION_SET_FAILED":"Instalatutako gehigarriak zure kontuan sinkronizatzeak huts egin du","SETTINGS_DATA_EXPORT":"Esportatu erabiltzaileen datuak","ADDON_PULL_FAILED":"Instalatutako gehigarriak zure kontutik sinkronizatzeak huts egin du","REFRESH_ON_CLICK":"Egin klik berriro saiatzeko","STILL_IN_THEATER":"Filma oraindik zinema aretoetan","WATCH_IN_CINEMA":"Ikusi zure tokiko zineman","IN_THEATER":"Zineman","GET_TICKETS":"Sarrerak eskuratu","UPCOMING_EPISODE":"Hurrengo atala","UPCOMING_EPISODE_MESSAGE":"Atal hau emitituko da","MISSING_DATE_EPISODE":"Atalaren data falta da","MISSING_DATE_EPISODE_MESSAGE":"Baliteke atal hau oraindik ez emititzea","CHANNEL_NOT_SCRAPED":"Kanal hau ez dago oraindik zatituta.<br>Itzuli minutu batzuen buruan.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Gehitu liburutegian erabilgarri dagoenean jakinarazpenak jasotzeko.","GET_NOTIFIED_WHEN_AVAILABLE":"Erabilgarri dagoenean jakinaraziko zaizu.","WARNING_STREAMING_SERVER":"Abisua: ez da aurkitu streaming lokaleko zerbitzaria. Tokiko fitxategietatik, YouTube-tik eta BitTorrent-etik erreproduzitzea ez da erabilgarri egongo.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Oharra: baliteke bideo hau zure hardwareak ez onartzea. Gogoan izan, erreprodukzioa motela izan daitekela.","PLAYER_ERROR":"Erreproduktorearen akatsa","PLAYER_ERROR_LOOKSLIKE":"Badirudi","PLAYER_ORIENTATION":"Erreproduktorearen orientazioa","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Blokeatuta","PLAYER_ORIENTATION_SENSOR_SHORT":"Sentsorea","PLAYER_ORIENTATION_LANDSCAPE":"Erreproduktorearen orientazio etzana blokeatuta dago","PLAYER_ORIENTATION_SENSOR":"Erreproduktorearen orientazio automatikoa (sentsorea)","PLAYER_PLAYBACK_SPEED":"Erreprodukzio abiadura","PLAYER_PLAYBACK_ERROR":"Erreprodukzioaren errorea. Saiatu berriro","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Errore ezezaguna","PLAYER_PLAYBACK_ERROR_DEFAULT":"Barkatu, bideo hau ezin du {{productName}} erabiltzaileak erreproduzitu.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Zuzenean","PLAYER_NEXT_VIDEO_TITLE":"Bueltan dator","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Baztertu","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Ikusi orain","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streaming jatorria","CASTING_TO":"(e)ra igortzen","NETWORK_STATUS":"Sarearen egoera","STREAM_SPEED":"Stream-aren abiadura:","STREAM_BUFFERED":"Bufferrean:","PEERS_INFO":"Peer informazioa","PEERS_ACTIVE":"Aktibo:","PEERS_CONNECTED":"Konektatuta:","PEERS_WAITING":"Itxaroten:","TRANSCODING_WARNING":"Abisua: bideoa transkodetzen.","STREAM_LOADING":"kargatzen...","PLAYING_LOCAL":"fitxategi lokaletik erreproduzitzen","PLAYING_CACHE":"cachetik erreproduzitzen","WRONG_SUBS":"Azpititulu okerrak?","ERR_SUBS_LOADING_TITLE":"Errorea azpitituluak kargatzean","ERR_SUBS_LOADING":"Ezin izan dira azpitituluak kargatu: arazoa izan daiteke erabiltzen ari zaren gehigarrian edo sareko konexioan","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Azpitituluen gehigarri hauek huts egin dute","ERR_CASTING_UPDATE_TITLE":"Ezin izan da eguneratu gailuaren informazioa: streaming zerbitzaria konexiorik gabe egon liteke","CHOOSE_DEVICE":"Aukeratu ikusi nahi duzun gailua","NO_CAST_DEVICES":"Ez dago galdaketa gailurik erabilgarri.","NO_SETTINGS":"Ez dago ezarpenik erabilgarri.","PHONE_TABLET":"Telefonoa / Tableta","SUBTITLES":"Azpitituluak","SUBTITLES_CHANGE":"Aldatu azpitituluak","SUBTITLES_CHANGE_NONE":"Ez dago hizkuntza honen azpititulurik, barkatu.","SUBTITLES_CHANGE_ACIVE":"Une honetan #{{subtitlesDialog.activeIdx + 1}} azpitituluak aktibatuta daude. Egin klik \\"Jarraitu\\" #{{subtitlesDialog.pickedIdx + 1}} azpitituluak aktibatzeko.","SUBTITLES_OR":"Bestela,","SUBTITLES_ADJUST_DELAY":"Doitu azpidatzien atzerapena:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Edo erabili <span>G</span> / <span>H</span> teklak erreproduzitzerakoan doiketarako.","SUBTITLES_ADJUST_DELAY_TIP":"AHOLKUA: <span>G</span> / <span>H</span> teklak erabil ditzakezu erreproduzitzerakoan doiketarako.","SUBTITLES_DELAY":"Azpitituluen atzerapena:","SUBTITLES_LOADING":"Azpitituluak kargatzen ...","SUBTITLES_UNAVAILABLE":"Ez dago kanpoko azpititulurik erabilgarri","SUBTITLES_DISABLED":"Desgaituta","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audioa","DEFAULT_LANGUAGE":"Defektuzko hizkuntza","DEFAULT_SECONDARY_LANGUAGE":"Defektuzko Bigarren Hizkuntza","SEASON":"Denboraldia","EPISODE":"Atala","SPECIAL":"Berezia","SORT":"ordenatu","SORT_BY":"Ordenatu","FILTER":"iragazkia","SORT_TRENDING":"joera","SORT_RECENT":"berriena","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"balorazioa","SORT_WATCHED":"ikusita","SORT_YEAR":"urtea","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Zuretzako berria","New Episodes":"Atal berriak","New Videos":"Bideo berriak","Recommendations":"Gomendioak","LIBRARY_RESUME":"Jarraitu","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Xehetasunak","LIBRARY_RESUME_DISMISS":"Baztertu","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Nabarmenduak","DISCOVER_TOP":"Gora","DISCOVER_OSCAR":"Oscar saridunak","DISCOVER_WARNING_TITLE":"Glubs!","DISCOVER_EMPTY_CATALOG":"Gehigarri honek eduki hutsa itzuli du.","DISCOVER_ADULT_WARNING":"Edukia helduentzat soilik dago ikusgai. 18 urte baino gehiago al dituzu?","DISCOVER_NOADDON_WARNING":"Abisua: ez dago Stremio gehigarririk aktibo mota honetarako. Gordetako elementuak erakutsiz, hemen ez da ezer eguneratuko.","DISCOVER_LOAD_ERR":"Edukia ez da kargatu, errorea gertatu da.","DISCOVER_ADDON_UNINSTALLED":"Eduki hau jada ez dago erabilgarri, baliteke gehigarria instalatuta ez izatea.","UNINSTALL_THIS_ADDON":"Desinstalatu gehigarri hau","ERR_ADDON_NOT_INSTALLED":"Gehigarri hau ez dago instalatuta. Orain instalatu nahi duzu?","DETAIL_RECEIVE_NOTIF_SERIES":"Jaso atal berrien jakinarazpenak","DETAIL_RECEIVE_NOTIF_VIDEOS":"Jaso bideo berrien jakinarazpenak","SIDEBAR_SHOW_STREAMS":"Erakutsi stream-ak","RELAUNCH":"Berrabiarazi orain!","UPGRADE":"Bertsio berria eskuragarri dago! Bertsio berritu Stremio azken bertsiora","RELOAD_UI":"Erabiltzailearen interfazea berriro kargatu","MANUAL_UPDATE_TITLE":"Eguneratu Stremio bertsioa","MANUAL_UPDATE_LINE1":"Oso gomendagarria ez den Stremioren bertsio zaharkitu bat erabiltzen ari zara.","MANUAL_UPDATE_LINE2":"Mesedez, eguneratu lehenbailehen.","BUTTON_UPDATE_LATTER":"Orain ez","BUTTON_UPDATE_NOW":"Eguneratu","ANONYMOUS_USER":"Erabiltzaile anonimoa","DONT_HAVE_ACC":"Ez duzu konturik?","HAVE_ACC":"Baduzu kontua?","PASSWORD":"Pasahitza","PASSWORD_CONFIRM":"Pasahitza baieztatu","EMAIL":"Posta elektronikoa","FB_LOGIN":"Jarraitu Facebook-ekin","FB_NOTHINGSHARED":"Ez da ezer partekatzen zure baimenik gabe","FB_NOPOST":"Ez dugu ezer argitaratuko zure izenean","OR":"edo","I_ACCEPT":"Onartzen dut","I_ACCEPT_BY_CLICKING":"Goiko botoian klik eginda onartzen dudala deklaratzen dut","TOS":"Terminoak eta baldintzak","MUST_ACCEPT_TERMS":"Baldintzak onartu behar dituzu","PASSWORDS_NOMATCH":"Pasahitzak ez datoz bat","SIGN_UP":"Izena eman","SIGN_UP_EMAIL":"Eman izena posta elektronikoz","CLICK_TO_SIGN_UP":"Izena emateko egin klik hemen.","LOG_IN":"Saioa hasi","LOG_OUT":"Saioa amaitu","EXIT_FULLSCREEN":"Irten pantaila osoko modutik","ENTER_FULLSCREEN":"Sartu pantaila osoko moduan","PLAY_URL_MAGNET_LINK":"Erreproduzitu URL/Magnet esteka","HELP_FEEDBACK":"Laguntza eta oharrak","TERMS_OF_SERVICE":"Zerbitzu-baldintzak","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"Stremiori buruz","USER_PANEL":"Erabiltzaile panela","LOGIN_LABEL":"Login","GUEST_LOGIN":"Gonbidatuaren saioa hasi","GUEST_LOGIN_NOTICE":"Gonbidatuen saioa hastea ez da gomendagarria. Ohiko saio-hasiera erabiliz Stremio-k zure Liburutegia sinkronizatzeko eta telesail/kanal gogokoen jakinarazpenak jasotzeko aukera ematen du. Ziur zaude jarraitu nahi duzula?","GUEST_LOGIN_NOTICE_2":"Gonbidatuen saioa hastea ez da gomendagarria; ez dituzu Liburutegi eta Taularen jakinarazpenak sinkronizatuko eta ezinbesteko Stremio funtzioak dira. Ziur zaude jarraitu nahi duzula?","CLICK_HERE":"klikatu hemen","WRONG_PASSWORD":"Posta elektroniko edo pasahitz okerra. Pasahitza ahaztu baduzu,","SET_A_PASS":"ezarri pasahitza","RESET_PASSWORD":"Pasahitza berrezarri","FORGOT_PASSWORD":"Pasahitza ahaztu duzu?","EMAIL_USED_WITH_FB":"Mezu elektronikoa Facebookeko saio hasierarekin erabili da.","INVALID_EMAIL":"Mesedez, sar ezazu helbide elektroniko egokia","INVALID_PASSWORD":"Mesedez, sartu baliozko pasahitza","CONN_ERR":"Konexioaren errorea. Saiatu berriro geroago.\\n\\nHonek jarraitzen badu, desgaitu firewall/antibirusa (batez ere Bitdefender).","IMPORT_FROM_GUEST":"Inportatu liburutegia zure gonbidatu kontutik","RECEIVE_UPDATES_EMAIL":"Jaso zure posta elektronikoaren eguneratzeak Stremioren eskutik","LOGIN_FAILED":"Errorea saioa hastean.","SIGNUP_FAILED":"Ezin izan da erregistratu.","SEARCH_FAILED":"Bilaketak huts egin du","EMAIL_USED":"Mezu elektronikoa dagoeneko erabiltzen ari da.","WAITING_FB_LOGIN":"Facebook-ekin saioa hasten...","EXTERNAL_PLAYER_TITLE":"Erreproduzitu kanpoko erreproduzitzailean","EXTERNAL_REMEMBER_PLAYER":"Zure aukera gogoratu nahi al duzu?","EXTERNAL_ALWAYS_PLAY":"Bai","EXTERNAL_ONLY_ONCE":"Ez","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Konta iezaguzu zer gustatzen zaizun","INTRO_TASTE_LONG":"Kontatu zer ikusi nahiko zenukeen","INTRO_TASTE_PICK":"Aukeratu {{interestRemaining}} interesak","INTRO_TASTE_PICK_MORE":"Aukeratu {{interestRemaining}} interes gehiago","INTRO_TASTE_HELP_US":"Lagundu iezaguzu zure inguruan gehiago jakiten.","INTRO_TASTE_CHOOSE_THESE":"Aukeratu hauetako batzuk:","INTRO_TASTE_CHOOSE_MIN":"Aukeratu gutxienez 3 kategoria","INTRO_TASTE_CHOOSE_MIN_ERR":"Gutxienez 3 kategoria aukeratu behar dituzu!","INTRO_TASTE_LIFESTYLE":"Bizimodua","INTRO_TASTE_SPORTS":"Kirolak","INTRO_TASTE_FOOD_HEALTH":"Elikadura eta Osasuna","INTRO_TASTE_BEAUTY_FASHION":"Edertasuna eta Moda","INTRO_TASTE_NEWS":"Albisteak","INTRO_TASTE_GAMING":"Jokoa","INTRO_TASTE_SCIENCE_EDU":"Zientzia eta Hezkuntza","INTRO_TASTE_MUSIC":"Musika","INTRO_TASTE_TRAVEL":"Bidaia","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Errealitatea","INTRO_TASTE_COMEDY":"Komedia","INTRO_TASTE_DIY":"Nola egin zerorrek","INTRO_TASTE_TECH":"Teknologia","INTRO_TASTE_CINEMA":"Zinema","ADDON_NOT_SUPPORTED":"Aukeratutako gehigarria ez da plataforma honetan onartzen.","ADDON_DISCLAIMER":"Hirugarrenen gehigarriak erabiltzea beti egongo da zure erantzukizunaren eta kokatzen zaren jurisdikzioaren lege arauaren menpe.","ADDON_ACTIVATE":"Gehigarri hau aktibatu nahi duzu?","ADDON_REPO_ADD":"Gehigarrien bildumaren URLa","ADDON_ADD":"Gehitu","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Berriak","BUTTON_CONTINUE":"Jarraitu","BUTTON_ACTIVATE":"Aktibatu","BUTTON_ACTIVATED":"Aktibatuta","BUTTON_CANCEL":"Utzi","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Baztertu guztiak","BUTTON_VIEW_ALL":"ikusi guztiak","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Liburutegia hutsik dago. Deskubritu zeinen erabilgarria den :)","HOW_START":"Hona hemen nola hasi:","LIB_EMPTY_CAL":"Zure Egutegian liburutegiko telesailak agertzen dira.","HOW_START_CAL":"Hemen duzu telesailak nola gehitu:","LIB_EMPTY_BOARD":"Taulan jakinarazpenak agertzen dira & zure Liburutegiari lotutako gomendioak.","HOW_START_BOARD_WAIT":"Mesedez, gehitu telesail edo kanal batzuk zure liburutegian, eman iezaguzu minutu batzuk prozesatzeko :)","HOW_START_BOARD":"Hona hemen nola gehi ditzakezu telesailak & filmak:","IMPORT_FB":"Inportatu gustuko dituzun gauzak <span>Facebook</span>etik","IMPORT_TRAKT":"Inportatu mediateka <span>Trakt</span>etik","IMPORT_DISCOVER":"Bilatu <span>Ezagutu</span>-ko gauza interesgarriak","IMPORT_DISK":"Inportatu zure <span>disko lokalean</span> dituzun filmak edo saioak","PLEASE_CREATE_ACC":"Mesedez, <u>sortu kontua</u> Liburutegiaren sinkronizazioa eta & Taula aktibatzeko.","IMPORT_DISCOVER_SIGNUP":"Erregistratu eta aurkitu gauza interesgarriak <span>Ezagutu</span> atalean","IMPORT_DISK_SIGNUP":"Erregistratu eta inportatu zure <span>disko lokalean</span> dituzun filmak edo saioak","LIB_EMPTY_CLOUD":"Hodei liburutegia","LIB_EMPTY_CLOUD_DESC":"Hodei liburutegi pertsonala gailu guztietan sinkronizatuta","LIB_EMPTY_EARLY":"Txori goiztiarra","LIB_EMPTY_EARLY_DESC":"Jaso atal berrien jakinarazpenak","LIB_EMPTY_PERSONAL":"Pertsonala","LIB_EMPTY_PERSONAL_DESC":"Jaso gomendio pertsonalak","LIB_EMPTY_CALENDAR_DESC":"Antolatu zure behaketa egutegi pertsonala","LIB_EMPTY_ALL":"Izena eman hauek guztiak lortzeko:","LIB_EMPTY_BEST":"Eman izena Stremioren onena lortzeko","LIB_EMPTY_OTHER":"Eman izena Egutegia eta beste funtzio interesgarri batzuk gaitzeko","CALENDAR_ADDED":"Stremio egutegia zure mahaigaineko egutegi lehenetsian gehitu da.","CALENDAR_ADDED_MSG":"Honek funtzionatzen ez badu, gehitu URL hau zure egutegiko aplikazioan eskuz","TRAKT_EXPIRED":"Trakt autentifikazioa iraungita dago, joan Ezarpenak atalera eta berriro autentifikatu","TRAKT_REQUIRES_LOGIN":"Trakt errorea","TRAKT_REQUIRES_LOGIN_MSG":"Saioa hasi behar duzu","SETTINGS_LABEL":"Ezarpenak","SETTINGS_NAV_GENERAL":"Orokorra","SETTINGS_NAV_PLAYER":"Erreproduktorea","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Freskatu app-a","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Irten / Atzera joan","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Igo bolumena","SETTINGS_SHORTCUT_VOLUME_DOWN":"Jaitsi bolumena","SETTINGS_SHORTCUT_SEEK_NEXT":"Eskatu hurrengoa","SETTINGS_SHORTCUT_SEEK_PREV":"Eskatu aurrekoa","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Erreproduzitu hurrengoa","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Handitu azpitituluen tamaina","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Txikitu azpitituluen tamaina","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Handitu azpitituluen atzerapena","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Txikitu azpitituluen atzerapena","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Ireki/Itxi alboko barra","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Abiarazi piztean","SETTINGS_VLC_DEFAULT":"Erreproduzitu VLC-rekin","SETTINGS_UI_LANGUAGE":"UI hizkuntza","SETTINGS_FULLSCREEN_EXIT":"Esc teklarekin irten pantaila osotik","SETTINGS_GAMEPAD":"Gaitu gamepad laguntza","SETTINGS_CLOSE_WINDOW":"Itxi aplikazioa leihoa itxita dagoenean","SETTINGS_SUBTITLES_LANGUAGE":"Azpitituluen hizkuntza lehenetsia","SETTINGS_SUBTITLES_SIZE":"Azpitituluen tamaina lehenetsia","SETTINGS_SUBTITLES_BACKGROUND":"Azpitituluen atzeko planoa","SETTINGS_SUBTITLES_COLOR":"Azpitituluen kolorea","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Azpitituluen eskema kolorea","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Azpitituluen atzeko kolorea","SETTINGS_SEEK_KEY":"Geziek denbora bilatzen dute","SETTINGS_SEEK_KEY_SHIFT":"Gezien teklek Shift tekla sakatuta dagoenean denbora bilatzen dute","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Erreproduzitu automatikoki hurrengo atala","SETTINGS_NEXT_VIDEO":"Erakutsi jakinarazpena hurrengo atala hasteko","SETTINGS_NEXT_VIDEO_TRIGGER":"Erakutsi hurrengo atalaren jakinarazpena:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Aldatu automatikoki leihoa erreproduzitu aurretik","SETTINGS_OVERRIDE_SERVER":"Gainidatzi streaming zerbitzariaren URLa (aurreratua)","SETTINGS_SERVER_URL":"Streaming zerbitzariaren URLa:","SETTINGS_SERVER_AVAILABLE":"Streaming zerbitzaria eskuragarri dago.","SETTINGS_SERVER_UNAVAILABLE":"Streaming zerbitzaria ez dago erabilgarri.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS amaiera:","SETTINGS_USE_BETA":"Erabili beti azken bertsioa","SETTINGS_IMPORT_FB":"Inportatu Facebooketik","SETTINGS_IMPORT_DISK":"Inportatu disko lokaletik","SETTINGS_IMPORT_TRAKT":"Inportatu Trakt-etik","SETTINGS_PAUSE_MINIMIZED":"Pausatu erreprodukzioa minimizatutakoan","SETTINGS_HWDEC":"Hardwarea azeleratutako deskodetzea","SETTINGS_BACKGROUND":"Atzeko planoaren erreprodukzioa","SETTINGS_SUBSCRIBE_CALENDAR":"Harpidetu egutegira","SETTINGS_REQ_EXPORT":"Eskatu datuak esportatzeko","SETTINGS_ACC_DELETE":"Eskatu kontua ezabatzeko","SETTINGS_CHANGE_PASSWORD":"Aldatu pasahitza","SETTINGS_TOS":"Zerbitzu-baldintzak","SETTINGS_SUPPORT":"Jarri harremanetan laguntza zerbitzuarekin","SETTING_LANGUAGE":"Hizkuntza","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Amaitu saioa Trakt.tv-tik","SETTINGS_SCAN_FOR_REMOTE":"Eskaneatu QR kodea urrunekoa irekitzeko","SETTINGS_DESKTOP_NOTIFICATIONS":"Mahaigaineko jakinarazpenak","SETTINGS_DATA_SAVER":"Datu aurrezlea","SETTINGS_LANGUAGE_INTERFACE":"interfazea","SETTINGS_LANGUAGE_SUBS":"azpititulu lehenetsiak","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Aukeratu automatikoki Audio pista","SETTINGS_DEFAULT_AUDIO_TRACK":"Audio pista lehenetsia","SETTINGS_ACCOUNT":"kontua","SETTINGS_VERSION":"bertsioa","SETTINGS_MPV_WINDOW":"Abiarazi erreproduzitzailea beste leiho batean (aurreratua)","SETTINGS_PLAY_IN_EXTERNAL":"Hasi beti bideoa kanpoko erreproduzitzailean","SETTINGS_STORAGE_BUTTON":"Garbitu tokiko biltegiratzea","SETTINGS_STORAGE_MODAL_TITLE":"Ziur zaude ?","SETTINGS_STORAGE_MODAL_MESSAGE":"Honek tokiko biltegia garbitu eta saioa amaituko du.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Irten","CONNECTED":"Konektatuta","AUTHENTICATE":"Autentifikatu","CACHING":"Cachea","SETTINGS_CACHING_DRIVE":"Caching unitatea","ENABLE_LOCAL_FILES_ADDON":"Gaitu fitxategi lokalen gehigarria (berrabiarazi behar da)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Gaitu urruneko HTTPS konexioak","TORRENT_PROFILE":"Torrent profila","DATA_CACHING":"Datuen cache-a","MAGNET_PARSING":"Magnet parseoa","January":"Urtarrila","February":"Otsaila","March":"Martxoa","April":"Apirila","May":"Maiatza","June":"Ekaina","July":"Uztaila","August":"Abuztua","September":"Iraila","October":"Urria","November":"Azaroa","December":"Abendua","Monday":"Astelehena","Tuesday":"Asteartea","Wednesday":"Asteazkena","Thursday":"Osteguna","Friday":"Ostirala","Saturday":"Larunbata","Sunday":"Igandea","Action":"Akzioa","Comedy":"Komedia","War":"Gerra","Family":"Familia","Animation":"Animazioa","Adventure":"Abentura","Fantasy":"Fantasia","Crime":"Delitua","Mystery":"Misterioa","Romance":"Erromantikoa","Drama":"Drama","Horror":"Beldurra","Thriller":"Thrillerra","Sci-Fi":"Zientzia-fikzioa","Music":"Musika","Biography":"Biografia","Documentary":"Dokumentala","Sport":"Kirola","Musical":"Musikala","Western":"Westerna","Film-Noir":"Film-Noir","News":"Albisteak","History":"Historia","Game-Show":"Joko-Ikuskizuna","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Zinema eta aisialdia","Gaming":"Gaming","From TV":"Telebistatik","Lifestyle":"Bizimodua","Science & Education":"Zientzia eta Hezkuntza","Cooking & Health":"Sukaldaritza eta Osasuna","Beauty & Fashion":"Edertasuna eta Moda","Sports":"Kirolak","News & Politics":"Albisteak eta politika","How-to & DIY":"Nola egin eta DIY","Tech":"Teknologia","Automotive":"Automobilgintza","Causes & Non-Profits":"Kausak eta irabazi asmorik gabekoak","Movies":"Filmak","Uk Live Tv":"Uk Live Tv","Fashion":"Moda","Business News Radio":"Business News Radio","Business Tv":"Business Telebista","Cars & Auto":"Autoak","Comedy Radio":"Komedia Irratia","Lifestyle Radio":"Bizimodu Irratia","News Tv":"Albiste Telebista","Food And Wine":"Janaria eta ardoa","Latino Tv":"Latino Tv","Shopping Tv":"Erosketa Telebista","Religion":"Erlijioa","Kids":"Haurrak","Body & Soul":"Gorputza eta Arima","Education":"Hezkuntza","Indian Tv":"Indiako telebista","Extreme Sports":"Muturreko Kirolak","Middle Eastern Tv":"Ekialde Hurbileko Telebista","Celebrity Tv":"Celebrity telebista","Science Tv":"Zientzia telebista","Bikini babe":"Bikini babe","Outdoors":"Aire librean","German Tv":"Alemaniako telebista","French Tv":"Telebista frantsesa","Italian Tv":"Italiako telebista","Gamer Tv":"Gamer telebista","Travel":"Bidaia","Asian Tv":"Asiako telebista","Entertainment":"Aisialdia","News Radio":"Albiste Irratia","Music Radio":"Musika Irratia","Language Learning":"Hizkuntzen ikaskuntza","Science Radio":"Zientzia Irratia","Tech Radio":"Tech Radio","Science & Technology Vod":"Zientzia eta Teknologia Vod","new video":"bideo berria","new episode":"atal berria","new movie":"film berria","recommended":"gomendatua","we recommend":"gomendatzen dugu","offer of the day":"eguneko eskaintza","news":"berriak","music video":"bideoklipa","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Baztertu jakinarazpenak","CTX_DISMISS_ALL":"Baztertu guztiak","CTX_SHARE":"Partekatu","CTX_COPY_SHARE_LINK":"Kopiatu partekatzeko esteka","CTX_COPY_MAGNET_LINK":"Kopiatu magnet esteka","CTX_COPY_STREAM_LINK":"Kopiatu stream-aren esteka","CTX_DOWNLOAD_VIDEO":"Deskargatu bideo hau","CTX_DOWNLOAD_SUBS":"Deskargatu azpitituluak","CTX_VIEW_ON_YOUTUBE":"Ikusi Youtuben","CTX_SHOW":"Ikuskizuna","CTX_PLAY":"Erreproduzitu","CTX_PLAY_IN":"Erreproduzitu","CTX_PLAY_ON":"Erreproduzitu","CTX_WATCH_ON":"Ikusi","CTX_WATCH":"Ikusi","CTX_WATCHED":"Ikusita","CTX_WATCH_BEGINNING":"Ikusi hasieratik","CTX_WATCH_MOBILE":"Ikusi gailu mugikorrean","CTX_REWIND":"Atzera hasierara","CTX_MARK_WATCHED":"Markatu ikusitako moduan","CTX_MARK_NON_WATCHED":"Markatu ez ikusi gisa","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Markatu gainerakoa ikusi bezala","CTX_UNMARK_REST":"Markatu gainerakoak ez ikusi gisa","CTX_RECEIVE_NEW_NOTIF":"Jaso jakinarazpen berriak","CTX_REMOVE_CACHE":"Kendu cache-tik","CTX_REMOVE_CACHE_EP":"Kendu pasartea katxetik","CTX_OPEN_CONTAINING":"Ireki duen karpeta","CTX_REMOVE":"Kendu liburutegitik","CTX_AVAILABLE_OFFLINE":"Lineaz kanpo eskuragarri","CTX_PAUSED":"Pausatuta","CTX_ALWAYS_ON_TOP":"Beti gainean","CTX_FULLSCREEN":"Pantaila osoa","CTX_WRONG_SUBS":"Azpititulu okerrak?","CTX_REPORT_ISSUES":"Salatu alea","CTX_COPY":"Kopiatu","CTX_PASTE":"Itsatsi","CTX_CLEAR":"Garbi","CTX_CLEAR_RECENT_SEARCHES":"Garbitu azken bilaketak","HELLO_THERE":"Kaixo","HOPE_YOU_ENJOY":"Stremio gustatuko zaizula espero dugu eta laster zure aplikazio gogokoenetako bat izango da!","WHO_ARE_WE":"Nor gara gu? Atzean dagoen taldea gara. Azken 3 urteetan egunero gogor lan egiten duten bi mutil produktu hau gero eta hobea izan dadin.","SUPPORT_US":"Stremio erabiltzea gustatzen bazaizu, Stremio zuretzat baliotsua bada - zabaldu!","SPREAD_THE_WORD":"Partekatu orain zure lagunekin, zabaldu Stremioren berri","MORE_PEOPLE":"Zenbat eta jende gehiagok erabili Stremio, orduan eta hobeto lortuko du!","SEND_A_LINK":"Edo bidali esteka gure webgunera","TIP_LOCALFILES":"Aholkua: bideo fitxategi lokalak arrastatu eta askatu ditzakezu Stremiora","ADDON_MY":"Nire gehigarriak","ADDON_COMMUNITY":"Komunitateko gehigarriak","ADDON_OFFICIAL":"Addon ofizialak","ADDON_REPOS":"Gehigarrien bildumak","ADDON_SEARCH":"Bilatu gehigarriak","ADDON_INSTALL":"Instalatu","ADDON_CONFIGURE":"Konfiguratu","ADDON_UNINSTALL":"Desinstalatu","ADDON_UPGRADE":"Berritu","ADDON_INSTALLED":"Instalatuta","ADDON_INSTALLED_MSG":"Gehigarria instalatuta!","ADDON_UPGRADED_MSG":"Gehigarria bertsio-berritu da!","ADDON_UNKNOWN":"Ezezaguna","ADDON_ERR":"Gehigarri instalazio errorea!","ADDON_DISCONNECTED":"Deskonektatuta","ADDON_APP_MISSING":"iturri honen aplikazioa ez dago instalatuta. Orain instalatu nahi duzu?","ADDON_APP_INSTALL":"Instalatu orain","ADDON_PAGE":"Gehigarrien orria","ADDON_TOP_CONTENT":"Onena Addon honetatik","ADDON_PROVIDES":"Gehigarri honek emango dizu:","ADDON_WATCH":"Ikusi #{types} orain!","ADDON_WATCH_FREE":"Ikusi DOAKO #{types} orain!","ADDON_ADDON":"Gehitu","ADDON_SUPPORTED_TYPES":"Onartutako motak","ADDON_SUPPORTED_CATALOGS":"Onartutako katalogoak","ADDON_PROVIDES_DISCOVER":"#{types} gehiago Ezagutu-n","ADDON_PROVIDES_STREAMS":"Ikusi #{types}","ADDON_PROVIDES_STREAMS_FREE":"Ikusi DOAKO #{types}","ADDON_PROVIDES_SUBTITLES":"#{types}(r)en azpitituluak","ADDON_CANTDETECT":"Ezin izan dugu Stremio exekutatzen ari den detektatu, beraz, ezin dugu detektatu zer gehigarri instalatu dituzun.","ERR_NO_META":"Ez da honi buruzko informaziorik aurkitu","ERR_GETTING_META":"Errorea honi buruzko informazioa eskuratzean.","ERR_CANT_PARSE_MAGNET":"Ezin da magnet parseatu","ERR_NO_MAGNET_INFOHASH":"Ez da baliozko hash-a magnetentzat","ERR_NO_FILE_PATH":"Ezin da eskaera bidali artxiborako biderik gabe","ERR_NO_TORRENT":"Ez da torrentik itzuli","ERR_NO_SUPPORTERD_FILES":"Ez da onartutako fitxategirik aurkitu","ERR_OPENING_FILES":"Ezin izan dira kanpoko fitxategiak ireki","ERR_INVALID_LINK":"Esteka baliogabea","ERR_REGISTERED_ONLY":"Aukera hau erregistratutako erabiltzaileentzat bakarrik dago erabilgarri.","ERR_CLIPBOARD":"Ezin da arbeletik erreproduzitu","ERR_CLIPBOARD_READ":"Ezin da plataforma honetako arbela irakurri","ERR_CLIPBOARD_GENERIC":"Ez da arbelean erreproduzitzeko URLrik aurkitu. Kopiatu URL bat (adibidez, magnet esteka) bideo batera.","BOARD_CONTINUE_WATCHING":"Jarraitu ikusten","BOARD_EXPLANATION_RECOMMENDATIONS":"Zuretzat bereziki aukeratutako filmak. <br /> Film hau gomendio lagin bat da.","BOARD_EXPLANATION_EPISODES":"Zure telesail gogokoen atal berriak datoz hona. <br /> Gehitu jarraitzen dituzun serieak liburutegian.","BOARD_EXPLANATION_VIDEOS":"Zure kanal gogokoen atal berriak etorriko dira. <br /> Gehitu jarraitzen dituzun YouTube kanalak Liburutegian.","WEBSITE_SLOGAN_WATCH":"Ikusi berehala","WEBSITE_SLOGAN_ALL":"Leku bakarrean gozatzen duzun bideo eduki guztia","WEBSITE_SLOGAN_NEW":"Ikus dezakezun guztia","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Ikusi hemendik","WEBSITE_DOWNLOAD":"Deskargatu orain","WEBSITE_DOWNLOAD_FOR":"Deskargatu orain","WEBSITE_IS_DESKTOP":"Stremio mahaigaineko aplikazioa da, ireki orri hau zure ordenagailuan eta deskargatu","WEBSITE_DESKTOP_DEMO_VID":"Mahaigaineko demoa","WEBSITE_PAGE_HOME":"Hasiera","WEBSITE_PAGE_FEATURES":"Ezaugarriak","WEBSITE_PAGE_ADDONS":"Gehigarriak","WEBSITE_PAGE_TECH":"Teknologia","WEBSITE_PAGE_CREATE_ADDON":"Sortu gehigarria","WEBSITE_PAGE_CONTACTS":"Kontaktuak","WEBSITE_PAGE_BLOG":"Bloga","WEBSITE_TYPE_movie":"Filmak","WEBSITE_TYPE_series_PL":"Telesaila","WEBSITE_TYPE_tv":"Zuzeneko telebista","WEBSITE_TYPE_channel":"Kanalak","WEBSITE_STREMIO_WHAT_IS":"Stremio zure gogoko bideoak, filmak, telesailak eta telebista kateak antolatzen eta berehala ikusten laguntzen duen aplikazioa da.","WEBSITE_FEATURES_WATCH":"Ikusi berehala HD formatuan","WEBSITE_FEATURES_WATCH_DETAIL":"Egin klik eta erreproduzitu gogoko dituzun filmak, telesailak, bideoak eta telebista kateak.","WEBSITE_FEATURES_SUBS":"Azpititulu automatikoak","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio-k zure hizkuntzarako azpitituluak automatikoki hautatzen ditu.","WEBSITE_FEATURES_SUBS_LABEL":"Zure mugimendua, buruzagi.","WEBSITE_FEATURES_CAST":"Erreproduzitu telebistan eta gailu mugikorretan","WEBSITE_FEATURES_CAST_DETAIL":"Igorri AppleTV, Chromecast, Smart TV (DLNA/UPnP) eta gailu mugikorretara.","WEBSITE_LIB":"Gozatu zure gailu guztietan sinkronizatutako liburutegi pertsonalarekin","WEBSITE_LIB_COLLECT":"Bildu Stremiotik","WEBSITE_LIB_IMPORT":"Inportatu Facebooketik","WEBSITE_LIB_LOCAL":"Gehitu zure disko lokaletik","WEBSITE_BOARD":"Taula - Jakinarazpen eta gomendioetarako lekua","WEBSITE_BOARD_RECOMMEND":"Gomendatutako telesaila","WEBSITE_BOARD_TRENDING":"Modako filma","WEBSITE_BOARD_NEW":"Bideo berria","WEBSITE_BOARD_EPISODE":"Atal berria","WEBSITE_BOARD_1":"Ikusteko zerbait interesgarria bilatzen al duzu? Jaso gomendioak zure gustuaren arabera!","WEBSITE_BOARD_2":"Jaso jakinarazpen zure gogoko telesaio edo YouTube kanaleko atal berri bat ateratzen denean!","WEBSITE_BOARD_YOUTUBE":"YouTube kanalen bideo berriak","WEBSITE_BOARD_EPISODES":"Jarraitzen dituzun telesailen atal berriak","WEBSITE_ADDONS":"Edukien gehigarriak","WEBSITE_TECH_DETAIL":"Teknologia maite dugu, zientzia eroa maite dugu!\\nStremio kode irekiko teknologia hauek erabiltzen ari da:","WEBSITE_TECH_WCJS":"WebChimera.js-k Stremio-k edozein bideo formatu erreproduzitzeko aukera ematen du errendimendu onarekin.","WEBSITE_TECH_WCJS_EXTRA":"Proiektuaren laguntzaileak gara","WEBSITE_TECH_ELECTRON":"Electronek Stremio eraikitzeko plataforma berritzailea eskaintzen du.","WEBSITE_TECH_ELECTRON_EXTRA":"Proiektuaren laguntzaileak gara","WEBSITE_TECH_LINVODB":"Zure datuak saioa hasten zaren edozein lekutan antolatuta eta eskuragarri daudela bermatzen duen datu basearen teknologia.","WEBSITE_TECH_LINVODB_EXTRA":"Barne teknologia","WEBSITE_CREATE_ADDON":"Sortu zure gehigarria","WEBSITE_CREATE_ADDON_DETAIL":"Ba al duzu bideo edukia eskaintzen duen zerbitzurik? Stremioren ezaugarriez baliatzen lagunduko dizugu zure gehigarria sortuz.","WEBSITE_CREATE_ADDON_BENEFITS":"Stremiorako gehigarria sortzearen abantailak","WEBSITE_P2P_BEAUTY":"Peer-to-Peer Streaming-en edertasuna","WEBSITE_P2P_1":"HD/4K bideo fidagarria eta merkea, eskariaren arabera edo zuzeneko erreprodukzioarekin","WEBSITE_P2P_2":"Erabiltzaileen esperientzia bikaina eskaintzen duen banaketa plataforma","WEBSITE_P2P_3":"Zure beharretara egokitzen den gehigarri bat sortuko dugu","WEBSITE_P2P_CONTACT":"Interesatuta? <a href=\'mailto:office@stremio.com\'>Jarri gurekin harremanetan</a>.","WEBSITE_P2P_CONTACT_EXTRA":"Pozik lagunduko dizugu zure edukia Stremio-rekin integratzen!","WEBSITE_P2P":"Noizean behin, jokoaren izena aldatzen duen teknologia bat dator. Denbora eta ahalegin ugari inbertitu dugu Peer-to-Peer (P2P) bideo bidezko erreprodukzio motorra eraikitzen, edozein erabilera kasutan egokitzeko errendimendu eta aldakortasun bikaina eskaintzen duena.\\nJarri gurekin harremanetan DRM gaitutako P2P bideoa eskatuta edo zuzenean igortzeko.","WEBSITE_THOUGHTS":"Partekatzen ditugun pentsamenduak:","WEBSITE_SPREAD":"Zabaldu Stremiori buruz:","WEBSITE_CONTACT":"Jar zaitez gurekin harremanetan, pozik jasoko dugu zure berri!","WEBSITE_OPENSOURCE":"Gure kode irekiko proiektuak ikusteko, joan gure webgunera","WEBSITE_BITCOIN":"Eman bitcoinak:","WEBSITE_FAQ":"Ohiko galderak","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Galderak","WEBSITE_TOS":"Erabilera baldintzak","WEBSITE_LEGAL":"Legezkoa","WEBSITE_PAGE_ABOUT":"Buruz","WEBSITE_PAGE_BECOME_PARTNER":"Egin bazkide","WEBSITE_ALL_YOU_CAN_WATCH":"Zuk nahi duzuna\\nIkusteko askatasuna.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Zer da stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio bideoaren edukiak batzeko gune bakarra da. Ezagutu, antolatu eta ikusi bideoa zure iturri mota guztietako zure gailu guztietan.","WEBSITE_WHAT_IS_STREMIO_P2":"Filmak, telebista saioak, telesailak, zuzeneko telebistak edo YouTube eta Twitch.tv bezalako web kateak - hori guztia Stremion aurkituko duzu.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio multimedia zentro modernoa da, bideo entretenimendurako irtenbide bakarra eskaintzen duena. Bideo edukia instalatzeko erraza den gehigarrietatik deskubritu, ikusi eta antolatzen duzu.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Filmak, telesailak, zuzeneko telebista edo web kateak. Aurkitu hau guztia Stremion.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Gozatu zure multimedia gailu guztietan","WEBSITE_DEVICES_COLLECT":"Bildu Stremiotik","WEBSITE_DEVICES_IMPORT_FB":"Inportatu facebooketik","WEBSITE_DEVICES_LOCAL":"Gehitu tokiko unitatetik","WEBSITE_JOIN_THE_PARTY_NOW":"Sartu orain festara","WEBSITE_DEVICES_ALL":"Erraza zure gailu guztietan erabiltzeko;","WEBSITE_EXTENDABLE_CATALOG":"Bideo katalogo luzagarria infinituki;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Ezaugarri bikainak zure komunikabideak antolatzeko;","WEBSITE_AS_SEEN_ON":"Ikusitakoan","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Guri buruz","WEBSITE_LINK_TECHNOLOGY":"Teknologia","WEBSITE_LINK_APPS":"Aplikazioak","WEBSITE_LINK_DOWNLOADS":"Deskargak","WEBSITE_MORE":"Gehiago","WEBSITE_LINK_ADDONS":"Gehigarriak","WEBSITE_LINK_ADDON_SDK":"Gehigarriaren SDK","WEBSITE_LINK_CONTRIBUTE":"Lagundu","WEBSITE_LINK_COMMUNITY":"Komunitatea","WEBSITE_LINK_BLOG":"Bloga","WEBSITE_MORE_MORE":"... eta gehiago","WEBSITE_LINK_HELP":"Laguntza zentroa","WEBSITE_LINK_CONTACTS":"Enpresa kontsultak","WEBSITE_LINK_TOS":"Baldintzak","WEBSITE_LINK_PRAVACY":"Pribatutasun politika","WEBSITE_SUBSCRIBE":"Harpidetu","WEBSITE_NEWSLETTER":"Sartu gure buletinera gauza harrigarrietarako","WEBSITE_PLACEHOLDER_EMAIL":"Zure emaila","WEBSITE_COMMUNITY":"Komunitatea","WEBSITE_LINK_PRAVACY_LEGAL":"Pribatutasuna eta legea","WEBSITE_WHY":"Zergatik egiten dugun","WEBSITE_WHY_P1":"Stremion, egunero lan egitera gatoz, bideo-eskaeraren industriaren arazo garrantzitsu bat konpondu nahi dugulako. Hainbeste eduki berri argitaratzen dira minuturo, ia ezinezkoa baita zure bidea aurkitzea.","WEBSITE_WHY_P2":"Jendeari bideo entretenimendu mundu erraldoi horretan nabigatzen eta gozatzeko eduki berriak aurkitzen laguntzen diogu. Gure aplikazioek filmak, serieak, zuzeneko telebista, web kateak eta beste biltzen dituzte. Erabiltzaileek gustuko dituzten izenburuak eta emisorak aurkitzea oso erraz bihurtzeaz arduratzen gara.","WEBSITE_WHY_P3":"Gure zerbitzua edozein gailutan eta noiznahi erabil dezakezu, Stremio inoiz beharko duzun bideo entretenimendu zentro bakarra bihurtuz.","WEBSITE_TEAM":"TALDEA","WEBSITE_TEAM_P":"Stremio taldea txikia baina indartsua da: gutako hamar artean X hizkuntzatan kodetzen dugu eta softwarearen garapenean, UI eta UX diseinuan, marketinean eta publizitatean eta negozioetan eta startupetan espezializazioa partekatzen dugu.","WEBSITE_FEATURES":"Ezaugarriak","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Ezagutu eduki berriak erraz","WEBSITE_FEATURES_DISCOVER_P":"Ikusi erraz ikusteko film, telesail, serie eta kanal berriak. Arakatu kategoriaren, generoaren, balorazioaren, berritasunen eta abarren arabera edo idatzi izen bat aurkitzeko. Stremio-k bideo-eduki berriak aurkitzea tarta bihurtzen du.","WEBSITE_FEATURES_ALL_CONTENT":"Zure bideoaren eduki guztia pantaila batean","WEBSITE_FEATURES_ALL_CONTENT_P1":"Ikusi zer film, serie edo bideo amaitu ez zenituen eta jarraitu ikusten; atal berri eta estreinaldien berri jaso; eta arakatu ikusmen ohituretan oinarrituta jasoko dituzun gomendioak.","WEBSITE_FEATURES_LIBRARY":"Antolatu zure bideoteka","WEBSITE_FEATURES_LIBRARY_P1":"Gehitu edozein titulu zure Stremio liburutegian klik bakarrarekin eta bilatu zure edukia, motaren, berritasunaren edo alfabetoaren arabera ordenatuta.","WEBSITE_FEATURES_CALENDAR":"Jarrai ezazu ikusten duzun guztiaren jarraipena","WEBSITE_FEATURES_CALENDAR_P1":"Lortu liburutegian gehitzen dituzun film eta serie guztien egutegia bistaratzea. Esportatu Stremio egutegia eta sinkronizatu, atal berri bat edo estreinaldi bat noiz iritsi behar den jakiteko.","WEBSITE_FEATURES_BIG_SCREEN":"Gozatu zure bideo edukia pantaila handiago batean","WEBSITE_FEATURES_BIG_SCREEN_P1":"Igorri ikusten ari zena beste gailu batera, izan telefono, tableta edo telebista klik bakarrarekin.","WEBSITE_FEATURES_SOURCES":"Ikusi bideoa iturri askotatik","WEBSITE_FEATURES_SOURCES_P":"Instalatu gehigarri ofizialak eta komunitarioak hornitzaile desberdinetatik ateratako bideoaz gozatzeko - aplikazio dotore eta erraz batean.","WEBSITE_CREATE_AN_ADDON":"Sortu gehigarri bat","WEBSITE_FEATURES_SYNC":"Sinkronizatu liburutegia gailu desberdinetan eta hasi berriro erreprodukzioa","WEBSITE_FEATURES_SYNC_P1":"Hasi saioa zure kontuarekin gailu guztietan eta gozatu liburutegia, gehigarriak, erreprodukzioa eta egutegia sinkronizatuta.","WEBSITE_FEATURES_EXTENDABLE":"Gehigarrien bideo katalogo luzagarria","WEBSITE_FEATURES_EXTENDABLE_P1":"Stremio gehigarrien katalogoak hainbat gehigarri eskaintzen ditu hainbat bideo eduki instalatu eta ikusteko. Filmak, saioak, zuzeneko telebista, kirola, albisteak, podcastak, web kateak, bideojokoak eta beste biltzen ditu.","WEBSITE_FEATURES_AUTO_SUBS":"Azpititulu automatikoak","WEBSITE_FEATURES_AUTO_SUBS_P1":"Gure azpitituluen gehigarriekin automatikoki hautatutako aukerak lortuko dituzu zure gustuko hizkuntzarako.","WEBSITE_FEATURES_CHROMECAST":"Chromecast-era igortzen","WEBSITE_FEATURES_CHROMECAST_P1":"Gozatu zure bideoaren edukia pantaila handiago batean edo ikusi zer ikusten ari zaren beste gailu batera.","WEBSITE_FEATURES_KEEP_TRACK":"Jarrai itzazu zure gogoko telebista saioak eta web kateak","WEBSITE_FEATURES_KEEP_TRACK_P1":"Lortu egutegia bistaratzea eta zure serie eta kanal gogokoen atal berrien jakinarazpenak.","WEBSITE_FEATURES_POWER_USER":"Erabiltzaile indartsuen ezaugarriak","WEBSITE_FEATURES_POWER_USER_P1":"Erreproduzitu kanpoko erreproduzitzailean","WEBSITE_FEATURES_POWER_USER_P2":"Erreproduzitu torrent fitxategi edo iman esteka batetik","WEBSITE_FEATURES_POWER_USER_P3":"Inportatu liburutegira Facebook atsegin dut edo disko lokaletik","WEBSITE_ADD_ONS":"Gehigarriak","WEBSITE_ADD_ONS_P1":"Stremio-k eskaintzen duen bideo guztia gehigarri sistema baten bidez lortzen da - aplikazioan ez da eduki edo eduki hornitzailerik sartu.","WEBSITE_ADD_ONS_P2":"Gehigarrien bi talde daude eskuragarri: gehigarri ofizialak eta komunitarioak.","WEBSITE_ADD_ONS_P3":"Ofizialak Stremio-k garatu eta ostatatzen ditu, eta komunitateko gehigarriak, aldiz, gure komunitateko kideek sortzen dituzte, hauek ere ostatatzen baitituzte.","WEBSITE_ADDONS_OFFICIAL":"Gehigarri ofizialak","WEBSITE_ADDONS_WATCHUB":"Erreproduzitu zure gogoko filmak, serieak eta ikuskizunak, hala nola iTunes, Hulu, Amazon eta Erresuma Batuko / AEBetako beste zerbitzu batzuen hornitzaileek.","WEBSITE_ADDONS_YOUTUBE":"Ikusi gogoko dituzun YouTube kanalak iragarkirik gabe eta jaso jarraitzen dituzun laguntzaileen kargatze berrien berri.","WEBSITE_ADDONS_FILMON":"Ikusi zuzenean telebista, filmak eta telebista sozialak doan. 600 telebista kate, doako 45.000 film, dokumental eta gehiago.","WEBSITE_ADDONS_OPENSUBTITLES":"Filma eta telebistako azpitituluak hizkuntza anitzetan, egunero kargatutako milaka azpitituluak.","WEBSITE_ADDONS_COMMUNITY":"Komunitateko gehigarriak","WEBSITE_ADDONS_FILMON_VOD":"Ikusi bideoa Filmon.tv-k eskatuta","WEBSITE_ADDONS_TWICH":"Ikusi zuzeneko erreprodukzioak Twitch.tv - kirol bideo elektronikoaren industriarako bideoa erreproduzitzeko plataforma.","WEBSITE_ADDONS_VODO":"Ikusi indie filmak guztiz doan.","WEBSITE_ADDONS_NETFLIX":"Ikusi Netflix filmak eta web serieak.","WEBSITE_ADDONS_CREATE":"Sortu gehigarri bat","WEBSITE_ADDONS_CREATE_P1":"Nahi izanez gero, zure gehigarria garatu dezakezu. Horrela, zure buruari eta gure komunitateari bideo eduki berrietarako sarbidea eman ahal izango diezu eta mundu osoko milioika erabiltzaileri zuzendutako ikusle berri batengana heldu.","WEBSITE_ADDONS_START_CREATE":"Hasteko, bisitatu Stremio Addon SDK orria:","WEBSITE_DOWNLOADS":"Deskargak","WEBSITE_DOWNLOADS_P1":"Errendimendu optimoa lortzeko, Stremio aplikazioen eskuragarri dagoen azken bertsioa erabiltzea gomendatzen dugu. Arrazoiren batengatik, ordea, bertsio zaharragoa erabili nahi baduzu, hemen deskarga dezakezu.","WEBSITE_DOWNLOADS_FOR_WIN":"Windows-erako Stremio","WEBSITE_DOWNLOADS_FOR_MAC":"MacOS-erako Stremio","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio Linuxerako","WEBSITE_DOWNLOADS_FOR_ANDROID":"Androiderako Stremio","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"IOS Stremio (bertsio mugatua)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Lagundu","WEBSITE_CONTRIBUTE_P1":"Stremio plataforma kode irekia da eta gaur egun iturri gabeko edukirako gehigarri bat sor dezakezu.","WEBSITE_CONTRIBUTE_WHY":"Zergatik sortu behar zenuke gehigarri bat?","WEBSITE_CONTRIBUTE_WHY_P1":"Iritsi ikusle berrietara zure bideoaren edukira","WEBSITE_CONTRIBUTE_WHY_P2":"Stremioren erabiltzaile-oinarria bizkor hazten ari da - merkaturatu zen lehen urtean, Stremiok milioi bat erabiltzaile irabazi zituen mundu osoan, eta plataformaren existentziaren bigarren urtean kopuru hori 2,5 milioi izatera iritsi zen.","WEBSITE_CONTRIBUTE_WHY_P3":"Zure gehigarriarekin, ikusle honetara erraz irits zaitezke eta zure bideo edukia haiei banatu.","WEBSITE_CONTRIBUTE_ALL":"Ikusi gogoko dituzun filmak, bideoak, serieak eta kanalak leku bakarrean.","WEBSITE_CONTRIBUTE_ALL_P1":"Oraindik Stremion erabilgarri ez dagoen eduki mota jakin baten zalea zara? Sortu gehigarri bat eta disfrutatu zure bideo gogokoenak merkatuan dauden entretenimendu zentro handienetako eta erabilerrazenetako batean ikustean.","WEBSITE_CONTRIBUTE_ALL_P2":"Horretaz gain, gogo bereko beste Stremio komunitateko kideen esker on amaigabea lortuko duzu.","WEBSITE_CONTRIBUTE_MONETIZE":"Dirua irabazi zure gehigarria eta irabazi dirua bere laguntzarekin","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Stremiorako gehigarri berri bat garatu ondoren, modu desberdinetan irabazteko aukera dezakezu. Hori aztertzen ari bazara, jar zaitez gurekin harremanetan harremanetan","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":"- Gehigarriak dirua irabazteko aukerei buruz kontsultatu eta aholkuak emango dizkizugu.","WEBSITE_CONTRIBUTE_TRANSLATE":"Egin itzultzaile boluntario","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Stremio aplikazioak hizkuntza desberdinetan gozatu nahi badituzu, itzultzaile boluntarioen komunitatean sar zaitezke. Stremioren bertsioak hizkuntza desberdinetan gehitzen laguntzen digute.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Hasteko gogoz zaude?","WEBSITE_TRANSALTE_STREMIO":"Itzuli Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Komunitate ofizialak","WEBSITE_COMMUNITY_OFFICIALS_P1":"Bihur zaitez hazten ari den Stremio komunitatearen parte. Jarrai iezaguzu sare sozialetan eta ez izan lotsarik agurtzeko: maite dugu gure zaleengandik entzutea!","WEBSITE_COMMUNITY_UNOFFICIALS":"Komunitate ez ofizialak","STREMIO_COMMUNITY_NL":"Stremio Herbehereak","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Alemania","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgika","STREMIO_COMMUNITY_FRANCE":"Stremio Frantzia","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italia","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio AEB","STREMIO_COMMUNITY_MEXICO":"Stremio Mexiko","STREMIO_COMMUNITY_ADDONS":"Stremio gehigarriak","STREMIO_COMMUNITY_AWESOME":"Stremio zoragarria","WEBSITE_COMMUNITY_PARTNERS":"Bazkideak eta laguntzaileak","WEBSITE_COMMUNITY_GOODIES":"Stremio opariak","WEBSITE_COMMUNITY_WALLPAPERS":"Atzeko irudiak","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Jarri gurekin harremanetan","WEBSITE_CONTACT_US_P1":"Galderarik, iruzkinik edo iradokizunik baduzu, jar zaitez gurekin harremanetan beheko harremanetarako formularioaren bidez.","WEBSITE_CONTACT_US_P2":"Gogoan izan Bulgarian gaudela, beraz, zure kontsultari erantzuteko denbora atzeratu daiteke ordu-zona desberdintasunengatik.","WEBSITE_CONTACT_US_SUCCESS":"Zure mezua bidali da. Guregana lehenbailehen itzuliko gara.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Mesedez, sartu baliozko mezu elektronikoa!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Zein da zure galdera lotuta?","WEBSITE_CONTACT_US_Q_OS":"Zein da zure Eragiketa Sistema?","WEBSITE_CONTACT_US_PH_EMAIL":"Zure emaila","WEBSITE_CONTACT_US_PH_MESSAGE":"Mezua","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"BIDALI","WEBSITE_CONTACT_US_Q_1":"Nola instalatu?","WEBSITE_CONTACT_US_Q_2":"Nola desinstalatu?","WEBSITE_CONTACT_US_Q_3":"(HTML) Nola egin lasagna?","WEBSITE_CONTACT_US_Q_4":"Gehigarriak","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Teknologia","WEBSITE_TECHNOLOGY_P1":"Teknologia eta zientzia eroa maite ditugu. </br> Hona hemen zerk bultzatzen duen Stremio (kode irekikoa da guztia).","WEBSITE_TECHNOLOGY_P_QT":"Plataforma anitzeko softwarearen garapena onenean.","WEBSITE_TECHNOLOGY_P_MPV":"Doako, kode irekiko eta plataforma anitzeko multimedia erreproduzitzailea.","WEBSITE_TECHNOLOGY_P_RN":"React Native-k aplikazio mugikorrak JavaScript soilik erabiliz eraikitzeko aukera ematen du.","WEBSITE_TECHNOLOGY_P_VLC":"Multimedia esparrua aplikazioan txertatuta multimedia lortzeko.","WEBSITE_TECHNOLOGY_P_REALM":"Realm plataforma mugikorra da eta SQLite & Core Data-ren ordezkoa da.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js iturburu irekiko, plataforma anitzeko JavaScript exekuzio ingurunea da.","WEBSITE_TECHNOLOGY_P_RUST":"Herdoila paradigma anitzeko sistemaren programazio lengoaia da, segurtasunera bideratua, batez ere aldi bereko segurura.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Lagundu proiektuan","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Bi modu daude Stremioren ekarpenak egiteko eta produktua hobetzen lagun gaitzazun.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Zure hizkuntza trebetasun baliotsuak eman ditzakezu plataforma itzulita ...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"edo","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... zure kodeketa gaitasunak erabil ditzakezu komunitatearen gehigarriak sortzeko.","WEBSITE_TRANSLATE_STREMIO":"Itzuli Stremio","WEBSITE_404_OH_NO":"Ui ui ui! Bilatzen ari zaren orria ez dago hemen ...","WEBSITE_GO_HOME":"Hasierara","WEBSITE_LINK_OTHER_DOWNLOADS":"Beste deskarga batzuk","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Laguntza","WEBSITE_DOWNLOAD_4_0_BETA":"Deskargatu Stremio 4 beta orain","WEBSITE_GET_FOR_DESKTOP":"Lortu mahaigainerako","WEBSITE_LINK_ADDON_COMPETITION":"Addon lehiaketa","WEBSITE_LINK_ART_CONTEST":"Arte lehiaketa","WEBSITE_MY_ACCOUNT":"Nire kontua","WEBSITE_MAINPAGE_FAQ_001_H1":"Zer da Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio nahi duzun guztia ikusteko askatasuna ematen duen media zentro modernoa da.","WEBSITE_MAINPAGE_FAQ_002_H1":"Nola dabil?","WEBSITE_MAINPAGE_FAQ_002_P1":"Stremio gailuan instalatu eta kontu bat sortu ondoren, egin behar duzun guztia gehigarrien katalogoa bisitatzea eta nahi duzun gehigarria instalatzea da, eta listo!","WEBSITE_MAINPAGE_FAQ_002_P2":"Horren ondoren, Ezagutu edo Taula ataletara joan zaitezke edukia aztertzen hasteko.","WEBSITE_MAINPAGE_FAQ_003_H1":"Zer ikusi dezaket hemen?","WEBSITE_MAINPAGE_FAQ_003_P1":"Asko: filmak, telebista saioak, web kateak, kirola, telebista kateak, podcastak eta beste. Gure gehigarri sistemari esker, hainbat eduki sar dezakezu.","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio kode irekia al da?","WEBSITE_MAINPAGE_FAQ_004_P1":"Bai, lotura hauek ikus ditzakezu: ${1}mahaigaineko aplikazioa${2} eta ${3}GitHub erakundea${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio segurua al da?","WEBSITE_MAINPAGE_FAQ_005_P1":"Bai: kode irekiko softwarea denez, kodea publikoki ikuskatzen da eta zuk zeuk berrikus dezakezu.","WEBSITE_MAINPAGE_FAQ_006_H1":"Zer moduz nire pribatutasuna?","WEBSITE_MAINPAGE_FAQ_006_P1":"Erabiltzaileen pribatutasuna errespetatzen dugu eta ez dugu zure kontua sortzeko eta sinkronizatzeko ezinbesteko gutxieneko datu pertsonalik biltzen.","WEBSITE_MAINPAGE_FAQ_006_P2":"Erregistratzerakoan ${1}Gonbidatu modua${2} ere badago, inolako daturik behar ez duena: modu honetan, ez da deirik egiten gure backendera. Hala ere, funtzio erabilgarrien kaltetan dator, hala nola liburutegia gailuetan sinkronizatu ahal izatea.","WEBSITE_MAINPAGE_FAQ_007_H1":"Telebistara bota al dezaket?","WEBSITE_MAINPAGE_FAQ_007_P1":"Bai, Chromecast-a onartzen dugu eta mahaigaineko zein mugikorreko aplikazioetatik (Android) bota ditzakezu.","WEBSITE_MAINPAGE_FAQ_008_H1":"Zenbat gehigarri ditu Stremiok?","WEBSITE_MAINPAGE_FAQ_008_P1":"2019 amaieran, 50 urte baino gehiago. Informazio gehiagorako, begiratu gure gehigarrien katalogoa.","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio gehigarrien katalogoan dagoenaz haratago al daiteke?","WEBSITE_MAINPAGE_FAQ_009_P1":"Bai, hauek egiaztatu beharko zenituzke: ${1}PimpMyStremio${2}, ${3}Reddit komunitateak${4}, ${5}Stremio Downloader${6}, etab.","WEBSITE_MAINPAGE_FAQ_010_H1":"Zer gailu onartzen ditu Stremiok?","WEBSITE_MAINPAGE_FAQ_010_P1":"Windows, Mac eta Linuxerako mahaigaineko aplikazioak ditugu. Mugikorretarako, Android eta iOS onartzen ditugu, baina kontuan izan iOS funtzionalitate mugatua duela (ez ditu gehigarri gehien onartzen).","WEBSITE_MAINPAGE_FAQ_010_P2":"Android-en oinarritutako gailu ugari daude Stremio exekutatu ahal izateko, adibidez NVIDIA Shield eta Amazon Fire Stick, baina ez ditugu ofizialki onartzen.","WEBSITE_MAINPAGE_FAQ_011_H1":"Stremioren zenbait eduki gehi al ditzakezu?","WEBSITE_MAINPAGE_FAQ_011_P1":"Barkatu, guk ez dugu edukirik eskaintzen, baina zenbat eta Stremio gehigarri gehiago instalatu, orduan eta eduki gehiago aurkituko duzu.","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio-k magnet estekak erreproduzitu al ditzake?","WEBSITE_MAINPAGE_FAQ_012_P1":"Bai, eta HTTP esteka normalak eta torrent fitxategiak erreproduzi ditzake (arrastatu eta jaregin).","WEBSITE_MAINPAGE_FAQ_013_H1":"Bideo bat deskargatu eta konexiorik gabe ikusi al dezaket?","WEBSITE_MAINPAGE_FAQ_013_P1":"Lineaz kanpoko erabilgarritasuna laster datorren eginbidea da, baina Stremio gailuan gordetzeko baimena ematen baduzu (ezarpenen paneletik) bideoak geroago ikusi ahal izango dituzu konexiorik gabe.","WEBSITE_MAINPAGE_FAQ_014_H1":"Ezerk ez du funtzionatzen, lagundu iezadazu!","WEBSITE_MAINPAGE_FAQ_014_P1":"Ziur zaude gehigarriak instalatu dituzula? Bai bada, begiratu ${2} laguntza zentroarekin ${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Nola eusten dio Stremiok bere garapen eragiketei?","WEBSITE_MAINPAGE_FAQ_015_P1":"Noizean behin iragarki ez-intrusiboak jartzen ditugu, baina dohaintza eredu batera pasatzea pentsatzen ari gara.","WEBSITE_MAINPAGE_FAQ_015_P2":"Galdera gehiagorako, joan ${1}laguntza-zentrora${2}.","HELP_LEARN_MORE":"Lagundu iezaguzu zure inguruan gehiago jakiten.","LIFESTYLE":"Bizimodua","SPORTS":"Kirolak","FOOD_HEALTH":"Elikadura eta osasuna","BEAUTY_FASHION":"Edertasuna eta Moda","NEWS":"Albisteak","GAMING":"Jokoa","SCIENCE_EDUCATION":"Zientzia eta hezkuntza","MUSIC":"Musika","TRAVEL":"Bidaia","LATE_NIGHT":"Late Night","REALITY":"Realitya","COMEDY":"Komedia","DIY":"Nola egin zerorrek","TECH":"Teknologia","CINEMA":"Zinema","CONTINUE":"Jarraitu","SLOW_LOADING":"KARGA MOTELA?","I_GIVE_UP":"AMORE EMATEN DUT","LEARN_MORE":"Gehiago ikasi","POOR_SOURCE":"Iturri hau ez dago erabilgarri edo zure Interneteko konexioa ez da behar bezain azkarra","PICK_CATEGORIES_ERR":"Gutxienez 3 kategoria aukeratu behar dituzu","ADJUST_TIMING":"Egokitu denborarekin","ADJUST_SIZE":"Doitu tamaina honekin","SEARCH_ANYTHING":"Edozer gauza bila dezakezu ...","ALL_CATEGORIES":"Guztiak","SEARCH_CATEGORIES":"Filmak, Telesailak, YouTube eta Telebista","SEARCH_PERSONS":"Aktoreak, Zuzendariak eta Idazleak","SEARCH_PROTOCOLS":"HTTP eta iman estekak","SEARCH_TYPES":"IMDB/TVDB estekak","WATCHED":"Ikusita","SHOW_LESS":"Erakutsi gutxiago","LAST_SEARCHES":"Azken bilaketak","CLEAR_HISTORY":"Garbitu historia","CHOOSE_SOME":"AUKERATU HEMENDIK BATZUK:","NO_WEB_REMOTE":"Urruneko Web-a ezin izan da kargatu","STREMIO_OFFLINE":"Stremio lineaz kanpo dago","STREMIO_EXPENSIVE_CONNECTION":"Mugikorreko datu konexioa erabiltzen ari zarela antzeman dugu, jarraitu nahi al duzu?","USE_DATA":"Erabili datuak","WARNING":"Abisua","MORE_INFO":"Informazio gehiago ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Kargatzen ...","STREMIO_TV_BACK_TO_LANGUAGES":"Itzuli hizkuntzetara","STREMIO_TV_REMOTE":"Urrunekoa","STREMIO_TV_GO_TO":"Joan:","STREMIO_TV_OR_SCAN":"edo eskaneatu:","STREMIO_TV_ADDON_INSTRUCTIONS":"Mesedez, jarraitu argibideak nahiago dituzun gehigarriak instalatzeko.","STREMIO_TV_LIVE_TV":"Zuzeneko telebista","STREMIO_TV_RESUME_WATCHING":"Berrekin Ikustea","STREMIO_TV_LOADING_BACKGROUND":"Aurrekariak kargatzen","STREMIO_TV_CHECKING_AUTHENTICATION":"Autentifikazioa egiaztatzen","STREMIO_TV_LOADING_BOARD":"Kargatzeko taula","STREMIO_TV_LOGIN_HEADER_LINE_1":"Gure erabiltzaileek ahalik eta esperientzia pertsonalizatu onena izan dezaten nahi dugu gure softwarearekin.","STREMIO_TV_LOGIN_HEADER_LINE_2":"Arrazoi horregatik eskatzen dizugu zure kontua egitea edota saioa hastea.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Eskerrik asko ulertzeagatik,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Stremio Taldea","STREMIO_TV_REMOTE_INSTRUCTIONS":"Urruneko Web-a zure Smartphone/Tablet/Mahaigainarekin erabiltzeko:","STREMIO_TV_WIFI_SETUP":"Wi-Fi konfigurazioa","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle-k ez du Interneteko konexiorik antzeman.","STREMIO_TV_WIFI_DETAILS_1":"Konektatu hona:","STREMIO_TV_WIFI_DETAILS_2":"estremio-zirkulua","STREMIO_TV_WIFI_DETAILS_3":"Erabili pasahitza:","STREMIO_TV_WIFI_DETAILS_4":"estremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Ireki web arakatzailea estekarekin:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Azpitituluen atzerapena","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Bilatu","STREMIO_TV_NAV_HOME":"Hasiera","STREMIO_TV_NAV_DISCOVER":"Deskubritu","STREMIO_TV_NAV_LIBRARY":"Liburutegia","STREMIO_TV_NAV_MOVIES":"Pelikulak","STREMIO_TV_NAV_SERIES":"Serieak","STREMIO_TV_NAV_CHANNELS":"Kanalak","STREMIO_TV_NAV_TV":"Zuzeneko Telebista","STREMIO_TV_NAV_SETTINGS":"Ezarpenak","STREMIO_TV_NAV_ADDONS":"Addon-ak","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Idatzi zerbait","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Bilatu","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Espazio","STREMIO_TV_SEARCH_KEY_CLEAR":"Garbitu","STREMIO_TV_SEARCH_HISTORY_TITLE":"Bilatu historialean","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Izenburu, aktore, kanal eta gehiagoren arabera bilatu dezakezu","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Garbitu bilaketa historiala","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Iragazkiak","SETTINGS":"Ezarpenak","ACCOUNT":"Kontua","LOGOUT":"Irten","THEMES":"Theme-ak","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Pistak","VIDEOS":"Bideoak","SERVER":"Zerbitzaria","LINKS":"Estekak","ABOUT":"About","INTERFACE":"Interfazea","ANIMATIONS":"Animazioak","STATUS":"Egoera","LANGUAGE":"Hizkuntza","SIZE":"Tamaina","DELAY":"Atzerapena","BOLD":"Lodia","TEXT_COLOR":"Testuaren Kolorea","OUTLINE_COLOR":"Outline Kolorea","BACKGROUND_COLOR":"Atzealdeko Kolorea","BACKGROUND_BLUR":"Atzealde lausoa","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Erreproduzitu orain","MARK_AS_WATCHED":"Markatu ikusita","MARK_AS_UNWATCHED":"Markatu ikusi gabe","REWIND_TO_BEGINNING":"Itzuli hasierara","CONTINUE_WATCHING":"Jarraitu ikusten","ALL":"Guztia","SECONDS":"segundu","ON":"ON","OFF":"OFF","RELOAD":"Eguneratu","EDIT_URL":"Aldatu URLa","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Aldatu gailuak","REMOTE_VIDEOS":"Bideoak","REMOTE_ADJUST_TIMING":"Egokitu denbora","REMOTE_ADJUST_SIZE":"Doitu neurria","REMOTE_COULD_NOT_BE_LOADED":"Web urrunekoa ezin izan da kargatu","REMOTE_RETRY":"Saiatu berriro","TORRENT_PROFILE_DEFAULT":"Defektuzkoa","TORRENT_PROFILE_SOFT":"Leuna","TORRENT_PROFILE_FAST":"Azkarra","TORRENT_PROFILE_ULTRA_FAST":"Ultra Azkarra","FAQ_001_H1":"Zer da Stremio?","FAQ_001_P1":"Stremio bideo entretenimendurako diseinatutako multimedia zentroen softwarea da, erabiltzeko erraztasunak kontuan hartuta. Stremio-k & amp; ikusi zure film, serie, kanal eta zuzeneko telebista bilduma.","FAQ_001_P2":"Stremio-k zure disko lokaletik eta gure gehigarri sistematik erakusten duen edukia bildu.","FAQ_001_P3":"Era berean, interesatzen zaizkizun atal/bideo/film berriak ateratzen direnean jakinaraziko zaizu eta filmen gomendioak emango dizkizu.","FAQ_02_H1":"Nola alderatzen da Stremio Kodi eta Plexekin?","FAQ_02_P1":"Bi softwareak inspiratzen gaitu. Baina helburu desberdinak ditugu - Stremio entretenimendu bideoetara bideratuta dago bereziki, eta horretarako oso konponbide nagusia bilakatzen ahalegintzen da erabiltzeko oso erraza izanik.","FAQ_02_P2":"Stremio ez da inoiz Kodi eta Plex bezain pertsonalizagarria eta aberatsa izango, baina errazagoa da erabiltzea. ${1}eskuratu eta ikusi${2} :)","FAQ_03_H1":"Nola alderatzen da Stremio Netflix-ekin?","FAQ_03_P1":"Berriro ere, Netflix da gure inspirazioetako bat. Netflix-en erabiltzailearen esperientzia lortzen ahalegintzen gara, eta gehitutako opari asko. Baina garrantzitsuena, zure liburutegia kudeatzeko eta eduki gehigarri berriak gehitzeko askatasuna ematen dizugu gure addon sistemarekin.","FAQ_03_P2":"Horrek Stremio ezin du luzatu, beraz, Stremio erabiltzen duzunean ez zara inoiz Netflix-ek lizentzia ematea erabakitzen duen edukira mugatzen. Adibidez, Stremioren bidez ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} edukia ikusi dezakezu. eta baita ${9}Netflix${10} bera ere!","FAQ_04_H1":"Nola alderatzen da Stremio Flipboard-ekin?","FAQ_04_P1":"Galdera hori ez dugu hain maiz jasotzen, hasierako jendearekin hitz egitean izan ezik :)","FAQ_04_P2":"Stremio edukien agregatzailea diseinatzean datza, eta horrek bideoetarako Flipboard bihurtzen du. Hori oso agerikoa da gure Batzordearen atalean, katalogoak eta atal berrien / bideo berrien jakinarazpenak eskaintzen dizkizu, Flipboard-ek bezala.","FAQ_05_H1":"Nola alderatzen da Stremio krispeten denborarekin?","FAQ_05_P1":"Stremio eta Popcorn Time erabiltzailearen interfazean antzekoak dira, bideo entretenimendu katalogoak ondo egiteko modu asko ez dagoelako :)","FAQ_05_P2":"Popcorn Time iturri zehatzetatik torrent-ekin erreproduzitzera bideratuta dagoen arren, Stremio mugarik gabe dago eta eduki-agregatzailea besterik ez da, ez dago eduki-iturri zehatz batean blokeatuta.","FAQ_05_P3":"Gainera, ez dugu torrent gehigarririk ematen lehenespenez, beraz, Stremiok ez du krispeten denboraren erabilera-kasua funtzionalitate ofizialarekin estaltzen.","FAQ_05_P4":"Beste desberdintasun aipagarri bat Popcorn Time erabat irekia dela da, Stremio ${1}partzialki irekita${2} dela.","FAQ_06_H1":"Gehituko al duzu film/telesail hau?","FAQ_06_P1":"Ez, barkatu :(","FAQ_06_P2":"Beste galdera gehienetan aipatzen den bezala, Stremiok ez du berez edukirik eskaintzen - dena gehigarrien sistemaren bidez gehitzen da. Eduki eskaera izanez gero, erreproduzitzailean dagoen \\"Salatu\\" botoia erabil dezakezu, mezu elektroniko bat bidaliko dio unean erabiltzen ari zaren gehigarriaren egileari.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"X-rako gehigarria sortuko al duzu?","FAQ_08_P1":"Erabat posible da.","FAQ_08_P2":"Gehigarri bat egiteko ideia baduzu, idatzi ${1}office@stremio.com${2} helbidera, baina ziurtatu gehigarrien ideiak ez dituela inolako copyright edo erabilera baldintzak urratuko.","FAQ_08_P3":"Momentuz, gure bide orriko hurrengo gauzak FandangoNOW, Filmon.tv bideoaren eskaera eta Crunchyroll-en gehigarriak dira.","FAQ_09_H1":"Stremiok BitTorrent erabiltzen al du?","FAQ_09_P1":"Bai, Stremiok BitTorrent onartzen du streaming protokolo gisa. Hori erabil dezakezu torrent gehigarri batekin edo .torrent fitxategi bat Stremiora arrastatuz eta jareginez edo Bilaketa barran iman esteka itsatsita.","FAQ_09_P2":"Kontuan izan BitTorrent erabiltzen duen gehigarri ofizial bakarra ${1} Vodo ${2} dela, indie edukia eskaintzen duena, guztia BitTorrent-ekin banatzeko baimendua.","FAQ_09_P3":"Ez dugu onartzen copyright-urraketa egin dezaketen hirugarrenen gehigarririk erabiltzea.","FAQ_10_H1":"Zer ikusi dezaket Stremion gehigarri ofizialekin?","FAQ_10_P1":"Berez, Filmon.tv, YouTube eta Vodo edukiak Stremio beraren barruan ikus ditzakezu, kapsulatutako erreproduzitzailearekin. Gainera, Twitch.tv-rako gehigarria dugu eta beste batzuk.","FAQ_10_P2":"Konbinatu honek aukera hauek eskaintzen ditu:","FAQ_10_L1":"Filmon.tv-k eskainitako telebista kate ezagunak - adibidez, E4, BBC, Bollyworld TV","FAQ_10_L2":"YouTube-tik dena - adibidez BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Film indiarrak Vodorekin","FAQ_10_L4":"Lineako jokoen emisioak Twitch.tv-rekin","FAQ_10_P3":"Gainera, gida-kutxa eta Netflix gehigarriekin hornitutako eduki iturri ugari daude, <b> ez </b> Stremio barruan guztiz erreproduzitzen direnak, baina emandako zerbitzura birbideratuko lirateke. Adibidez, Guidebox gehigarriak AEBetan doan erreproduzi ditzakezun filmen aukeraketa emango dizu TubiTV eta Crackle bezalako zerbitzuetatik.","FAQ_11_H1":"Stremiok ez du instalatuko, zer egin behar dut?","FAQ_11_P1":"Windows-en bazaude, probatu ${1} ${2} instalatzaile alternatibo hau.","FAQ_11_P2":"Mac OS X erabiltzen baduzu, kontuan izan ez dugula OS X Mavericks (10.9) baino zaharragoak onartzen.","FAQ_11_P3":"Linux erabiltzen baduzu, kontuan izan momentuz 64 bit (x64) Linux soilik onartzen ditugula.","FAQ_11_P4":"Oraindik arazoa konpondu ezin baduzu, idatzi iezaguzu ${1}Facebook taldean${2}.","FAQ_12_H1":"Zergatik kexatzen da nire birusaren kontrakoa? Stremio segurua al da?","FAQ_12_P1":"Stremio ${1}%100 garbi${2} dagoela ziurtatzen dizugu.","FAQ_12_P2":"Birusen aurkako arazoa kexatzen ari da publizitatea gure instalatzailean sartzen dugulako, birusen aurkako programa batzuek iragarki gisa aitortzen baitute.","FAQ_12_P3":"Oraindik ziur ez bazaude, ${1}instalatzaile alternatiboa${2} probatu dezakezu.","FAQ_13_H1":"Nola egin dezaket gehigarri bat?","FAQ_13_P1":"Hasiberrientzat, GitHub-en gure ${1}addons sistemaren modulua${2} begiratzea gomendatzen dugu.","FAQ_13_P2":"Ondoren, ${1}Hello World tutoriala${2} jarraitu dezakezu.","FAQ_13_P3":"Programaziorako trebetasunik ez baduzu, idatzi zure ideia ${1}Reddit komunitatean${2} eta jarri gurekin harremanetan zure addon ideiarekin ${3}office@stremio.com${4} helbidean.","FAQ_14_H1":"Nola argitaratzen dira gehigarriak?","FAQ_14_P1":"Gehigarri eta ostalari bat sortzen duzunean eta zure manifestuan <b> amaiera </b> eremua jartzen duzunean, funtzionatzen duen gehigarrien helbidea seinalatzen duena, gehigarriak automatikoki argitaratuko du gure ${1} gehigarrien katalogoan ${2} .","FAQ_14_P2":"Stremio-addons moduluko zerbitzariaren zatiak automatikoki dei egiten duelako gure APIra gehigarria iragartzeko. Gure APIak zure <b> amaierako puntua </b> baliozko gehigarri gisa balioztatzen duenean, katalogoan erakusten hasiko da.","FAQ_15_H1":"Exekutatu al dezaket Stremio nire arakatzailean?","FAQ_15_P1":"Momentuz ez, baina badator hau!","FAQ_15_P2":"Alpha bat ikusteko jakinmina baduzu, hemen ikus dezakezu: ${1} alpha4.strem.io ${2}. Gogoan izan streaming hau alfa honetan desgaituta dagoela. Chrome, Firefox, Opera eta Edge onartzen ditugu.","FAQ_16_H1":"Telebistara igortzeak ez du funtzionatzen / azpitituluak ez dira funtzionatzen","FAQ_16_P1":"Telebistara igotzeak telebista marka eta modelo desberdinen artean oso bat ez datorren DLNA teknologia erabiltzen du. Hori dela eta, kasu guztietan ez dugu probatzeko gaitasunik, beraz, oso urrun dago perfektua izatetik. Hala ere, etengabe hobetzeko lanean ari gara, baina ezin dugu DLNA zure telebistarekin ondo funtzionatzen noiz hasiko den kalkulatzeko denbora.","FAQ_16_P2":"Zure telebista casting menuan ikusten ez baduzu ere, saiatu sareko konexioa desgaitzen eta berriro gaitzen (Windows-en, egin klik eskuineko botoiarekin Sarea eta erabili Gaitu / Desgaitu), baita router, telebista eta ordenagailua berrabiarazi ere. .","FAQ_16_P3":"Oraindik arazoak topatzen badituzu, lagun diezagukezu telebistaren marka eta modeloaren informazioa ${1}office@stremio.com${2} helbidera bidalita.","FAQ_16_P4":"Bitartean, oso ondo onartzen dugun Chromecast gomendatzen dugu edo, besterik gabe, zure telebista ordenagailura HDMI kable batekin konektatzea.","FAQ_17_H1":"Stremio izoztu edota huts egiten du, zer egin dezaket?","FAQ_17_P1":"Lehenik eta behin, Windows 7 AVG antibirusarekin erabiltzen ari bazara: arazo bat dugu konbinazio horrekin. Arazoa AVG-n dago, eta ez dago arrazoizko modurik gure aldetik konpontzeko. Zoritxarrez, salbuespenak edo birusen aurkako desgaitzea ez dira funtzionatuko. Irtenbide bakarra AVG beste zerbaitengatik ordezkatzea da.","FAQ_17_P2":"Hori ez bada arazoa, baina Windows erabiltzen jarraitzen baduzu, eguneratu azken zerbitzu-paketera eta eguneratu/instalatu berriro GPU kontrolatzaileak, eta saiatu berriro.","FAQ_17_P3":"Arazoa oraindik konpontzen ez bada edo Mac edo Linux erabiltzen ari bazara, idatzi iezaguzu arazoaren xehetasun zehatzen berri ${1}gure Facebook taldeko${2} helbidean.","FAQ_18_H1":"Nola egin dezaket gehigarri bat?","FAQ_18_P1":"Hasiberrientzat, GitHub-en gure ${1}addons sistemaren modulua${2} begiratzea gomendatzen dugu.","FAQ_18_P2":"Ondoren, ${1} Hello World tutoretza ${2} jarraitu dezakezu.","FAQ_18_P3":"Programaziorako trebetasunik ez baduzu, idatzi zure ideia ${1}Reddit komunitatean${2} eta jarri gurekin harremanetan zure addon ideiarekin ${3}office@stremio.com${4} helbidean.","FAQ_19_H1":"Zergatik ari da Stremio diskoan lekua hartzen?","FAQ_19_P1":"Stremio-k <b> cache lokal </b> bat du igortzen dituzun bideo fitxategiak aldi baterako mantentzeko.","FAQ_19_P2":"Horrek bi abantaila ditu: lehenik, Stremiok bideoa aurrez bufferrean uzteko aukera ematen du, streaming zuzenagoa bermatzeko. Bigarrenik, bideoak cache lokalean gordetzen ditu, lineaz kanpo ikusten jarraitu ahal izateko.","FAQ_19_P3":"Stremio-k zenbat gordetzen duen ezarpenen paneleko <b> Cache </b> ezarpenaren araberakoa da. Stremio-k zure diskoan ezarritako zenbatekoa (adibidez, 2 GB) gorde dezake, unean erreproduzitutako bideoa hori baino handiagoa ez bada, kasu horretan, gordetzeko adina biltegiratze esleitu behar du erreproduzitu arte.","FAQ_20_H1":"Non dago cache karpeta?","FAQ_20_P1":"Windows-en, Stremio-cache da Ezarpenetan aukeratu duzun unitatean (adibidez, \\"E: \\\\ stremio-cache\\")","FAQ_20_P2":"MacOS-en \\"~ /Library/Application Support/Stremio/stremio-cache\\" da","FAQ_20_P3":"Linux-en \\"~/.stremio/stremio-cache\\" edo \\"~/stremio-cache\\" da.","FAQ_21_H1":"\\"Streaming zerbitzaria ez da aurkitu\\" errorea dut. Zer egin dezaket?","FAQ_21_P1":"Akats hau jasoz gero, gauza gutxietako bat esan nahi du:","FAQ_21_P2":"1) YouTube/BitTorrent iturriak babestutako gehigarri bat erabiltzen saiatzen ari zara, gure ${1}web bertsioaren${2} bidez. Kasu honetan, gure mahaigaineko bertsioa ${3}webgunetik${4} instalatu beharko zenuke.","FAQ_21_P3":"2) Zerbait ez dago gaizki zure Stremio instalazioarekin. Kasu honetan, saiatu berriro instalatzen mahaigaineko azken bertsioa ${1} ${2} webgunetik. Honek laguntzen ez badu, saiatu birusen aurkako programak eta suebakiak desgaitzen, ordenagailua berrabiarazi eta saiatu berriro. Honek ere funtzionatzen ez badu, idatzi iezaguzu ${3}gure Facebook taldean${4}.","FAQ_22_H1":"Ezin ditut iOSeko gehigarri gehienak ikusi/erabili","FAQ_22_P1":"Apple App Store-ren baldintzak eta mugak direla eta, iOS aplikazioa gehigarri jakin batzuetara soilik mugatu dugu.","FAQ_22_P2":"Baina lasai - etorkizunean iOS-erako gehigarri gehiago egongo dira, eta Stremio gehigarri guztiak erabiltzea ahalbidetuko duen integrazioa ere gehi dezakegu iOS aplikazioa Stremio Streaming Server-era konektatzeari esker."}')},2381:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"فیلم","TYPE_series":"سریال","TYPE_tv":"برنامه تلویزیونی","TYPE_channel":"کانال","TYPE_other":"سایر","TYPE_movie_PL":"فیلم ها","TYPE_series_PL":"سریال ها","TYPE_tv_PL":"برنامه های تلویزیونی","TYPE_channel_PL":"کانال ها","TYPE_other_PL":"سایر","TYPE_ALL":"All","VIDEO":"ویدیو","BACK":"قبلی","MORE":"بیشتر","DONE":"اتمام","COPY":"کپی","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"مشاهده","Board":"بورد","Library":"کتابخانه","My Library":"کتابخانه من","Calendar":"تقویم","NOTIFICATION_ONLINE":"شما الان آنلاینید","NOTIFICATION_OFFLINE":"شما افلاینید","INTERNET_CONNECTION":"کانکشن شبکه","STORAGE_FULL_TITLE":"هشدار: فضای دیسک شما پر شده است!!!","STORAGE_FULL_TEXT":"استریمیو نمی تواند تنظیمات شما را ذخیره کند، شاید دوباره نصب کردن یا ری استارت کردن آن به حل این مشکل کمک کند.","SEARCH":"جستجو","SEARCH_NO_RESULTS":"نتیجه ای یافت نشد","SEARCH_EXPLANATION_CONTENT":"در لیست فیلم ، سریال ، یوتیوب یا کانال های تلویزیونی جستجو کنید","SEARCH_EXPLANATION_PEOPLE":"در لیست بازیگران ،‌نویسندگان یا کارگردان ها جستجو کنید","SEARCH_PASTE_LINKS":" HTTP یا Magnet links را در اینجا کپی کنید","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"افزودن به کتابخانه","REMOVE_FROM_LIB":"حذف از کتابخانه","ADDED_TO_LIB":"به کتابخانه اضافه شد","REMOVED_FROM_LIB":"از کتابخانه حذف شد","TRAILER":"تریلر","WATCH_TRAILER":"مشاهده تریلر","WATCH_NOW":"تماشا کنید","SHOW":"نمایش","SHOW_MOVIE":"نمایش فیلم","WATCH_RANDOM":"تصادفی مشاهده کنید","IMDB_RATING":"IMDb رتبه","YEAR":"سال","DIRECTOR":"کارگردان","WRITER":"نویسنده","LEAD_ACTORS":"بازیگران اصلی","CAST":"سایر بازیگران","CREW":"خدمه","SHOW_MORE_CAST":"نمایش بیشتر »","AIRED":"پخش شده","SEASONS":"فصل ها","GENRE":"ژانر","CATALOG":"کاتالوگ","SUMMARY":"خلاصه","SHOW_MORE":"نمایش بیشتر","SIMILAR":"مشابه","UPCOMING":"بزودی عرضه می شود","ENDED":"پایان یافته","DURATION":"طول","FEATURED":"ویژه شده","METADATA":"متا دیتا","CATEGORY":"دسته بندی","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"جستجوی ویدیو","SEARCH_PLACEHOLDER":"جستجو کنید یا URL را وارد کنید","ADDON":"افزونه","ADDONS":"افزونه ها","OFFICIAL":"رسمی","ADDONS_OFFICIAL":"افزونه های رسمی استریمیو","ADDONS_POPULAR":"پرطرفدارها در کشور شما","ADDON_FREE":"رایگان","ADDON_PEERED":"peer شده","ADDON_SUBSCRIPTION":"عضویت","ADDON_STREAM_GEORESTRICTED":"در کشور شما در دسترس نیست","ADDON_STREAM_OFFLINECACHE":"کش آفلاین","ADDON_STREAM_LOCALFILE":"فایل لوکال","SHARE_ADDON":"به اشتراک گذاری افزونه","AVAILABLE_STREAMS":"استریم های در دسترس","NO_STREAM":"استریمی یافت نشد.","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"برای استفاده از استریم های بیشتر ، می توانید آن ها را نصب کنید","STREAM_NOT_SUPPORTED":"این استریم انتخابی شما برای این پلتفورم قابل استفاده نیست","ADDON_CATALOGUE":"نمایش همه افزونه ها »","ADDON_CATALOGUE_MORE":"نصب افزونه ها","REPO_ADDED":"مخزن نصب شد","ADDON_REPO_EXIST_ERR":"این آلبوم از قبل موجود بود","ADDON_REPO_ERR":"در هنگام افزودن مخزن مشکلی بوجود آمد","ADDON_ADD_ERR":"در هنگام افزودن افزونه مشکلی بوجود آمد","ERR_ADDON_PROTECTED":"این افزونه محافظت شده و قابل حذف نیست","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"یوزر پسوورد اشتباه است، مشکلی بوجود امد","ERR_NOT_COLLECTION_URL":"URL آلبوم نیست","ERR_NOT_ADDON_URL":"URL افزونه اشتباه است","ERR_DETECTFROMURL":"از این URL چیزی پیدا نکردیم","ADDON_DUPLICATE_WARNING":"هشدار:افزونه تکراری است","ADDON_COLLECTION_SET_FAILED":"عملیات همگام سازی افزونه های نصب شده به پنل کاربری شما ، با شکست مواجه شد","SETTINGS_DATA_EXPORT":"اکسپورت اطلاعات یوزر","ADDON_PULL_FAILED":"عملیات همگام سازی افزونه های نصب شده شکست خورد","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"فیلم فعلا فقط قابل نمایش در سالن تئاتر است","WATCH_IN_CINEMA":"در سینمای محله ی خودتان ببینید","IN_THEATER":"در سینما","GET_TICKETS":"بلیط بگیرید","UPCOMING_EPISODE":"اپیزود های آینده","UPCOMING_EPISODE_MESSAGE":"این ایپزود منتشر می شود در","MISSING_DATE_EPISODE":"تاریخی در دسترس نیست","MISSING_DATE_EPISODE_MESSAGE":"این اپیزود هنوز منتشر نشده","CHANNEL_NOT_SCRAPED":"اطلاعات این کانال هنوز دریافت نشده<br>لطفا چند دقیقه دیگر مراجعه کنید.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"به کتابخانه شما افزوده شد وقتی در دسترس شد به شما اطلاع رسانی می شود.","GET_NOTIFIED_WHEN_AVAILABLE":"زمانی که در دسترس شد به شما اطلاع رسانی می شود","WARNING_STREAMING_SERVER":"هشدار: استریم سرور یافت نشد، استریم قابل انجام نیست","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"هشدار: سخت افزار شما این ویدیو را پشتیبانی نمی کند، حواستان باشد که ممکن است این ویدیو برای شما با سرعت پایینتری پخش شود","PLAYER_ERROR":"اوپس ، مشکلی در پخش کننده پیش آمده","PLAYER_ERROR_LOOKSLIKE":"انگار","PLAYER_ORIENTATION":"جهت نمایش","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"قفل شده","PLAYER_ORIENTATION_SENSOR_SHORT":"سنسور","PLAYER_ORIENTATION_LANDSCAPE":"نمایش بصورت عمودی قفل شده","PLAYER_ORIENTATION_SENSOR":"جهت نمایش پخش کننده بصورت اتوماتیک تنظیم می شود","PLAYER_PLAYBACK_SPEED":"سرعت پخش","PLAYER_PLAYBACK_ERROR":"پخش ویدیوبا مشکل مواجه شد ، دوباره سعی کنید","PLAYER_PLAYBACK_ERROR_UNKNOWN":"خطای نا شناخته","PLAYER_PLAYBACK_ERROR_DEFAULT":"این ویدیو نمی تواند در {{productName}} پخش شود.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"لایو","PLAYER_NEXT_VIDEO_TITLE":"می آید در","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"کنسل کردن","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"مشاهده کنید","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"استریم شده از","CASTING_TO":"کست شده از","NETWORK_STATUS":"وضعیت شبکه","STREAM_SPEED":"سرعت استریم:","STREAM_BUFFERED":"بافر شده:","PEERS_INFO":"Peers اطلاعات","PEERS_ACTIVE":"فعال:","PEERS_CONNECTED":"وصل شده:","PEERS_WAITING":"منظتر باشید:","TRANSCODING_WARNING":"هشدار: در حال ترانسکد کرد ویدیو","STREAM_LOADING":"کمی شکیبا باشید...","PLAYING_LOCAL":"در حال پخش از اوکال","PLAYING_CACHE":"در حال پخش از کش","WRONG_SUBS":"زیرنویس اشتباه است؟","ERR_SUBS_LOADING_TITLE":"خطا در دریافت زیرنویس","ERR_SUBS_LOADING":"خطایی در دریافت زیر نویس ها پیش آمده شاید بخاطر افزونه زیرنویس است یا حتی مشکل از اینترنت شماست","WARN_FOLLOWING_SUB_ADDONS_FAILED":"افزونه زیرنویس فوق مشکل دارد","ERR_CASTING_UPDATE_TITLE":"نمی توانیم اطلاعات دستگاه شما را بروزرسانی کنید ،سرور استریمینگ ممکن است مشکل داشته باشد","CHOOSE_DEVICE":"دستگاه را انتخاب کنید","NO_CAST_DEVICES":"دستگاهی پیدا نشد","NO_SETTINGS":"تنظیمات یافت نشد","PHONE_TABLET":"گوشی یا تبلت","SUBTITLES":"زیرنویس ها","SUBTITLES_CHANGE":"زیرنویس را انتخاب کنید برای","SUBTITLES_CHANGE_NONE":"هیچ زیرنویس دیگری پیدا نشد","SUBTITLES_CHANGE_ACIVE":"زیرنویس های موجود : #{{subtitlesDialog.activeIdx + 1}} . بر روی دکمه \\"Continue\\" کلیک کنید تا زیرنویس را مشاهده کنید. #{{subtitlesDialog.pickedIdx + 1}}","SUBTITLES_OR":"جایگزین,","SUBTITLES_ADJUST_DELAY":"زیرنویس delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"یا کلید <span>G</span> / <span>H</span> را در هنگام پخش استفاده کنید","SUBTITLES_ADJUST_DELAY_TIP":"توجه: شما می توانید کلید <span>G</span> / <span>H</span> را هنگام پخش استفاده کنید.","SUBTITLES_DELAY":"زیرنویس ها delay:","SUBTITLES_LOADING":"در حال دریافت زیرنویس ها","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"غیرفعال شده","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"فصل","EPISODE":"اپیزود","SPECIAL":"Special","SORT":"مرتب سازی","SORT_BY":"مرتب سازی بر","FILTER":"فیلتر","SORT_TRENDING":"ترند","SORT_RECENT":"آخرین","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"رتبه","SORT_WATCHED":"مشاهده شده","SORT_YEAR":"سال","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"جدیدترین ها برای شما","New Episodes":"اپیزودهای جدید","New Videos":"ویدیو های جدید","Recommendations":"پیشنهاد شده:","LIBRARY_RESUME":"Resume","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"اطلاعات بیشتر","LIBRARY_RESUME_DISMISS":"Dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"ویژه ها","DISCOVER_TOP":"برترین ها","DISCOVER_OSCAR":"برندگان اسکار","DISCOVER_WARNING_TITLE":"اوپس!","DISCOVER_EMPTY_CATALOG":"افزونه خالی است","DISCOVER_ADULT_WARNING":"مخصوص بزرگسالان است ، ایا سن شما بالاتر از ۱۸ است؟","DISCOVER_NOADDON_WARNING":"Warning: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"حذف این اددان(افزونه)","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Re-launch now!","UPGRADE":"New version is available! Upgrade to the latest Stremio version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"الان نه","BUTTON_UPDATE_NOW":"بروزرسانی","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"رمزعبور","PASSWORD_CONFIRM":"تایید رمزعبور","EMAIL":"ایمیل","FB_LOGIN":"Continue with Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"یا","I_ACCEPT":"I accept the","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Terms and Conditions","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Passwords don\'t match","SIGN_UP":"ثبت نام","SIGN_UP_EMAIL":"ثبت نام با ایمیل","CLICK_TO_SIGN_UP":"برای ثبت نام اینجا کلیک نمایید.","LOG_IN":"ورود","LOG_OUT":"خروج","EXIT_FULLSCREEN":"خروج از مود تمام صفحه","ENTER_FULLSCREEN":"ورود به مود تمام صفحه","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"پنل کاربر","LOGIN_LABEL":"ورود","GUEST_LOGIN":"ورود مهمان","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"اینجا را کلیک کنید","WRONG_PASSWORD":"Wrong email or password. In case you have forgotten your password, ","SET_A_PASS":"تنظیم رمزعبور","RESET_PASSWORD":"بازیابی رمزعبور","FORGOT_PASSWORD":"رمزعبور را فراموش کردید?","EMAIL_USED_WITH_FB":"This email was used with a Facebook login.","INVALID_EMAIL":"لطفا یک ایمیل معتبر وارد نمایید","INVALID_PASSWORD":"لطفا یک رمزعبور معتبر وارد نمایید","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"ورود ناموفق بود.","SIGNUP_FAILED":"عضویت ناموفق بود.","SEARCH_FAILED":"جستجو ناموفق بد","EMAIL_USED":"این ایمیل استفاده شده است.","WAITING_FB_LOGIN":"ورود توسط فیسبوک...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"بله","EXTERNAL_ONLY_ONCE":"خیر","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"ورزشی","INTRO_TASTE_FOOD_HEALTH":"تغذیه و سلامت","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"اخبار","INTRO_TASTE_GAMING":"گیمینگ","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"موزیک","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"کمدی","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"تکنولوژی","INTRO_TASTE_CINEMA":"سینما","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Activate this addon?","ADDON_REPO_ADD":"Addon collection URL","ADDON_ADD":"افزودن","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"What\'s new","BUTTON_CONTINUE":"ادامه","BUTTON_ACTIVATE":"Activate","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"انصراف","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Here is how you can start:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from <span>Facebook</span>","IMPORT_TRAKT":"Import your media library from <span>Trakt</span>","IMPORT_DISCOVER":"Find interesting stuff from <span>Discover</span>","IMPORT_DISK":"Import movies or shows you have on your <span>local disk</span>","PLEASE_CREATE_ACC":"Please <u>create an account</u> to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from <span>Discover</span>","IMPORT_DISK_SIGNUP":"Sign up and import movies or shows you have on your <span>local disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"شما باید وارد شوید.","SETTINGS_LABEL":"تنظیمات","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"تغییر رمز عبور","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"تماس با پشتیبانی","SETTING_LANGUAGE":"زبان","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"زیرنویس های پیشفرض","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"حساب کاربری","SETTINGS_VERSION":"نسخه","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"روشن","NAVIGATION_OFF":"خاموش","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Quit","CONNECTED":"متصل شده است","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"January","February":"February","March":"March","April":"April","May":"May","June":"June","July":"July","August":"August","September":"September","October":"October","November":"November","December":"December","Monday":"Monday","Tuesday":"Tuesday","Wednesday":"Wednesday","Thursday":"Thursday","Friday":"Friday","Saturday":"Saturday","Sunday":"Sunday","Action":"Action","Comedy":"Comedy","War":"War","Family":"Family","Animation":"Animation","Adventure":"Adventure","Fantasy":"Fantasy","Crime":"Crime","Mystery":"Mystery","Romance":"Romance","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Music","Biography":"Biography","Documentary":"Documentary","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"اخبار","music video":"موزیک ویدیو","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"اشتراک گزاری","CTX_COPY_SHARE_LINK":"کپی کردن لینک اشتراک گزاری","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"نمایش","CTX_PLAY":"پخش","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"حذف از کتابخانه","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"تمام صفحه","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"کپی","CTX_PASTE":"بیست","CTX_CLEAR":"پاکسازی","CTX_CLEAR_RECENT_SEARCHES":"پاکسازی جستجو های اخیر","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"افزونه های من","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon collections","ADDON_SEARCH":"جستجوی افزونه","ADDON_INSTALL":"نصب","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"حذف","ADDON_UPGRADE":"بروزرسانی","ADDON_INSTALLED":"نصب شده","ADDON_INSTALLED_MSG":"افزونه نصب شد!","ADDON_UPGRADED_MSG":"افزونه برزورسانی شد!","ADDON_UNKNOWN":"ناشناس","ADDON_ERR":"خطا در نصب افزونه!","ADDON_DISCONNECTED":"قطع شده","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"اکنون نصب کن","ADDON_PAGE":"صفحه افزونه","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"افزونه","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"لینک نامعتبر است","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"ادامه تماشا","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You Can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"خانه","WEBSITE_PAGE_FEATURES":"امکانات","WEBSITE_PAGE_ADDONS":"افزونه ها","WEBSITE_PAGE_TECH":"تکنولوژی","WEBSITE_PAGE_CREATE_ADDON":"ساخت افزونه","WEBSITE_PAGE_CONTACTS":"مخاطبین","WEBSITE_PAGE_BLOG":"بلاگ","WEBSITE_TYPE_movie":"فیلم ها","WEBSITE_TYPE_series_PL":"سریال ها","WEBSITE_TYPE_tv":"تلویزیون زنده","WEBSITE_TYPE_channel":"کانال ها","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"ویدیو جدید","WEBSITE_BOARD_EPISODE":"قسمت جدید","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"افزونه های محتوا","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"افزونتو بساز","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"حمایت با بیتکوین:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"سوالات متداول","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"مجاز","WEBSITE_PAGE_ABOUT":"درباره","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"درباره ما","WEBSITE_LINK_TECHNOLOGY":"تکنولوژی","WEBSITE_LINK_APPS":"برنامه ها","WEBSITE_LINK_DOWNLOADS":"دانلود ها","WEBSITE_MORE":"بیشتر","WEBSITE_LINK_ADDONS":"افزونه ها","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"انجمن","WEBSITE_LINK_BLOG":"بلاگ","WEBSITE_MORE_MORE":"... & بیشتر","WEBSITE_LINK_HELP":"مرکز راهنما","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"سابسکرایب","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"امکانات","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"افزونه ها","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"ی افزونه بساز","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"دانلود ها","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio برای ویندوز","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio برای لینوکس","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio برای اندروید","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio برای تلویزیون اندروید","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS (limited version)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"تماس باما","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"ایمیل شما","WEBSITE_CONTACT_US_PH_MESSAGE":"پیغام","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ارسال","WEBSITE_CONTACT_US_Q_1":"چطوری نصب کنیم?","WEBSITE_CONTACT_US_Q_2":"چطوری حذف کنیم?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"افزونه ها","WEBSITE_CONTACT_US_OS_1":"ویندوز","WEBSITE_CONTACT_US_OS_2":"مک","WEBSITE_CONTACT_US_OS_3":"لینوکس","WEBSITE_CONTACT_US_OS_4":"اندروید","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"تکنولوژی","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"برو خانه","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"سوالات متداول","WEBSITE_SUPPORT":"پشتیبانی","WEBSITE_DOWNLOAD_4_0_BETA":"Download Stremio 4 beta Now","WEBSITE_GET_FOR_DESKTOP":"دریافت برای دسکتاپ","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"اکانت من","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can access a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"اخبار","GAMING":"گیمینگ","SCIENCE_EDUCATION":"Science & education","MUSIC":"موزیک","TRAVEL":"سفر","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"کمدی","DIY":"How to DIY","TECH":"تکنولوژی","CINEMA":"سینما","CONTINUE":"ادامه","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"همه","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"مشاده شده","SHOW_LESS":"نمایش کمتر","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"هشدار","MORE_INFO":"اطلاعات بیشتر ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"درحال بارگذاری ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"استفاده از رمزعبور:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"جستجو","STREMIO_TV_NAV_HOME":"خانه","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"کتابخانه","STREMIO_TV_NAV_MOVIES":"فیلم ها","STREMIO_TV_NAV_SERIES":"سریال ها","STREMIO_TV_NAV_CHANNELS":"کانال ها","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"تنظیمات","STREMIO_TV_NAV_ADDONS":"افزونه ها","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"جستجو","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"تنظیمات","ACCOUNT":"حساب","LOGOUT":"خروج","THEMES":"تم ها","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"ویدیو ها","SERVER":"سرور","LINKS":"لینک ها","ABOUT":"درباره","INTERFACE":"Interface","ANIMATIONS":"انیمیشن ها","STATUS":"وضعیت","LANGUAGE":"زبان","SIZE":"سایز","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"روشن","OFF":"خاموش","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"تغییر دستگاه ها","REMOTE_VIDEOS":"ویدیو ها","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"تلاش مجدد","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},5829:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Série","TYPE_tv":"Chaîne TV","TYPE_channel":"Chaîne","TYPE_other":"Autre","TYPE_movie_PL":"Film","TYPE_series_PL":"Séries","TYPE_tv_PL":"Chaînes TV","TYPE_channel_PL":"Chaînes","TYPE_other_PL":"Autres","TYPE_ALL":"Tous","VIDEO":"Vidéo","BACK":"Retour","MORE":"Plus","DONE":"Terminer","COPY":"Copier","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Découverte","Board":"Tableau","Library":"Bibliothèque","My Library":"Ma Bibliothèque","Calendar":"Calendrier","NOTIFICATION_ONLINE":"Vous êtes maintenant connecté","NOTIFICATION_OFFLINE":"Vous êtes maintenant hors-ligne","INTERNET_CONNECTION":"Connexion Internet","STORAGE_FULL_TITLE":"Attention: Espace de stockage plein !","STORAGE_FULL_TEXT":"Stremio sera incapable de sauvegarder vos réglages, préférences ou informations de connexion. N\'hésitez pas à relancer ou réinstaller Stremio.","SEARCH":"recherche","SEARCH_NO_RESULTS":"Aucun résultat trouvé","SEARCH_EXPLANATION_CONTENT":"Recherchez des films, séries, chaines YouTube ou TV...","SEARCH_EXPLANATION_PEOPLE":"Recherchez des acteurs, directeurs et réalisateurs","SEARCH_PASTE_LINKS":"Collez une URL ou un lien magnet","SEARCH_OR_PASTE_LINK":"Rechercher ou coller un lien","ADD_TO_LIB":"Ajouter à la bibliothèque","REMOVE_FROM_LIB":"Retirer de la bibliothèque","ADDED_TO_LIB":"Ajouté à la bibliothèque","REMOVED_FROM_LIB":"Retiré de la bibliothèque","TRAILER":"Bande Annonce","WATCH_TRAILER":"Regarder la bande annonce","WATCH_NOW":"Regarder","SHOW":"Regarder","SHOW_MOVIE":"Afficher le film","WATCH_RANDOM":"Regarder aléatoirement","IMDB_RATING":"Note IMDb","YEAR":"Année","DIRECTOR":"Réalisateur","WRITER":"Scénariste","LEAD_ACTORS":"Acteurs Principaux","CAST":"Casting","CREW":"Équipe","SHOW_MORE_CAST":"Afficher plus","AIRED":"Sortie","SEASONS":"Saisons","GENRE":"Genre","CATALOG":"Catalogue","SUMMARY":"Résumé","SHOW_MORE":"Afficher Plus","SIMILAR":"Similaire","UPCOMING":"À venir","ENDED":"Terminé","DURATION":"Durée","FEATURED":"À l\'affiche","METADATA":"Métadonnées","CATEGORY":"catégorie","LINKS_GENRES":"Genres","LINKS_CAST":"Casting","LINKS_DIRECTORS":"Réalisateurs","SEARCH_VIDEOS":"rechercher des vidéos","SEARCH_PLACEHOLDER":"chercher ou coller un lien magnet","ADDON":"Addon","ADDONS":"Addons","OFFICIAL":"officiels","ADDONS_OFFICIAL":"Addons Stremio officiels","ADDONS_POPULAR":"Populaire près de chez vous","ADDON_FREE":"gratuit","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"abonnement","ADDON_STREAM_GEORESTRICTED":"non disponible chez vous","ADDON_STREAM_OFFLINECACHE":"Cache Hors ligne","ADDON_STREAM_LOCALFILE":"Fichier local","SHARE_ADDON":"Partager cet addon","AVAILABLE_STREAMS":"Flux disponibles","NO_STREAM":"Aucun flux n\'a été trouvé","ALL_ADDONS":"Tous","INSTALL_MORE_ADDONS":"Pour plus de flux, veuillez installer plus d\'addons","STREAM_NOT_SUPPORTED":"Le flux sélectionné n\'est pas supporté par la plateforme","ADDON_CATALOGUE":"Afficher tous les addons »","ADDON_CATALOGUE_MORE":"Installer des addons","REPO_ADDED":"Répertoire ajouté","ADDON_REPO_EXIST_ERR":"Cette collection d\'addons existe déjà","ADDON_REPO_ERR":"Une erreur s\'est produite lors de l\'ajout de la collection","ADDON_ADD_ERR":"Une erreur est survenue lors de l\'ajout du répertoire","ERR_ADDON_PROTECTED":"Extension protégé","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Quelque chose n\'a pas fonctionné - l\'authentification a peut-être échoué","ERR_NOT_COLLECTION_URL":"Ce n\'est pas une url de collection","ERR_NOT_ADDON_URL":"Ce n\'est pas une url d\'extension","ERR_DETECTFROMURL":"Impossible de trouver un addon/collection à partir de cette URL","ADDON_DUPLICATE_WARNING":"Attention: addon dupliqué","ADDON_COLLECTION_SET_FAILED":"La synchronisation des addons installés vers votre compte a échoué","SETTINGS_DATA_EXPORT":"Exporter mes données","ADDON_PULL_FAILED":"La synchronisation des addons installés depuis de votre compte a échoué","REFRESH_ON_CLICK":"Cliquez pour réessayer","STILL_IN_THEATER":"Le film est toujours en salle","WATCH_IN_CINEMA":"Regardez-le dans votre cinéma local","IN_THEATER":"Au cinéma","GET_TICKETS":"Acheter des places","UPCOMING_EPISODE":"Épisode à venir","UPCOMING_EPISODE_MESSAGE":"Cet épisode sera diffusé le","MISSING_DATE_EPISODE":"Date d\'épisode manquante","MISSING_DATE_EPISODE_MESSAGE":"Cet épisode n\'a peut-être pas encore été diffusé","CHANNEL_NOT_SCRAPED":"Cette chaîne n\'est pas disponible.<br>Revenez dans quelques minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Ajoutez le à votre bibliothèque pour être notifié une fois sorti.","GET_NOTIFIED_WHEN_AVAILABLE":"Vous serez notifié une fois disponible.","WARNING_STREAMING_SERVER":"Attention, serveur de streaming local non trouvé. Le streaming depuis Youtube et BitTorrent ne sera pas disponible.","WARNING_STREAMING_SERVER_DISMISS":"Ignorer","WARNING_STREAMING_SERVER_LATER":"Plus tard","DECODER_WARNING":"Attention : cette vidéo peut ne pas être supportée par votre matériel. Gardez à l\'esprit que la lecture peut être lente.","PLAYER_ERROR":"Oups, Erreur du lecteur","PLAYER_ERROR_LOOKSLIKE":"On dirait que","PLAYER_ORIENTATION":"Orientation du lecteur","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Verrouillé","PLAYER_ORIENTATION_SENSOR_SHORT":"Capteur","PLAYER_ORIENTATION_LANDSCAPE":"Orientation du lecteur verrouillé en paysage","PLAYER_ORIENTATION_SENSOR":"Orientation automatique du lecteur (capteur)","PLAYER_PLAYBACK_SPEED":"Vitesse de lecture","PLAYER_PLAYBACK_ERROR":"Erreur de lecture, veuillez réessayer","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Erreur inconnue","PLAYER_PLAYBACK_ERROR_DEFAULT":"Désolé, cette vidéo ne peut pas être lue par {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Langues des Sous-Titres","PLAYER_SUBTITLES_VARIANTS":"Variantes des Sous-Titres","PLAYER_SUBTITLES_SETTINGS":"Réglages des Sous-Titres","PLAYER_SUBTITLES_DISABLED":"Les sous-titres sont désactivés","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Position verticale","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Lecture","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Vidéo Suivante","PLAYER_MUTE":"Muter","PLAYER_UNMUTE":"Démuter","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"À venir dans","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Ignorer","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Regarder maintenant","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"diffusé à partir de","CASTING_TO":"Transmis à","NETWORK_STATUS":"Statut du réseau","STREAM_SPEED":"Vitesse du stream:","STREAM_BUFFERED":"Mis en cache:","PEERS_INFO":"Informations sur les pairs","PEERS_ACTIVE":"Actif:","PEERS_CONNECTED":"Connecté:","PEERS_WAITING":"En attente:","TRANSCODING_WARNING":"Attention: transcodage vidéo.","STREAM_LOADING":"chargement...","PLAYING_LOCAL":"lecture à partir d\'un fichier local","PLAYING_CACHE":"lecture à partir du cache","WRONG_SUBS":"Mauvais sous-titres ?","ERR_SUBS_LOADING_TITLE":"Erreur de chargement des sous-titres","ERR_SUBS_LOADING":"Échec du chargement des sous-titres: il peut s\'agir d\'un problème avec l\'addon que vous utilisez, ou avec votre connexion réseau.","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Les addons de sous-titres suivants ont échoués","ERR_CASTING_UPDATE_TITLE":"Impossible de mettre à jour les informations sur le périphérique de casting: le serveur de streaming est peut-être hors ligne.","CHOOSE_DEVICE":"Choisissez un appareil sur lequel regarder","NO_CAST_DEVICES":"Aucun appareil de casting n\'est disponible.","NO_SETTINGS":"Aucun réglages disponible.","PHONE_TABLET":"Téléphone / Tablette","SUBTITLES":"Sous-titres","SUBTITLES_CHANGE":"Changer les sous-titres pour ","SUBTITLES_CHANGE_NONE":"Il n\'y a pas d\'autres sous-titres pour cette langue, désolé.","SUBTITLES_CHANGE_ACIVE":"Les sous-titres #{{subtitlesDialog.activeIdx + 1}} sont actuellement activés. Cliquez sur \\"Continue\\" pour activer les sous-titres #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Sinon,","SUBTITLES_ADJUST_DELAY":"vous pouvez ajuster le décalage des sous-titres:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Utilisez les touches <span>G</span> / <span>H</span> pour les ajuster.","SUBTITLES_ADJUST_DELAY_TIP":"ASTUCE: vous pouvez utiliser les touches <span>G</span> / <span>H</span> pendant la lecture pour les régler.","SUBTITLES_DELAY":"Delai des sous-titres:","SUBTITLES_LOADING":"Chargement des sous-titres...","SUBTITLES_UNAVAILABLE":"Uncun sous-titres externes disponibles","SUBTITLES_DISABLED":"Désactivés","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Saison","EPISODE":"Épisode","SPECIAL":"Spécial","SORT":"trier","SORT_BY":"Trier par","FILTER":"filtrer","SORT_TRENDING":"tendances","SORT_RECENT":"récent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"note","SORT_WATCHED":"regardé","SORT_YEAR":"année","SELECT_TYPE":"Sélectionner le type","SELECT_SORT":"Sélectionner le filtre","SELECT_CATALOG":"Sélectionner le catalogue","SELECT_GENRE":"Sélectionner le genre","SORT_LASTWATCHED":"Par dernier regardé","SORT_NAME":"Par nom","SORT_TIMESWATCHED":"Par temps regardé","New for You":"Nouveau pour vous","New Episodes":"Nouveaux épisodes","New Videos":"Nouvelles Vidéos","Recommendations":"Recommandations","LIBRARY_RESUME":"Reprendre","LIBRARY_PLAY":"Lire","LIBRARY_DETAILS":"Détails","LIBRARY_RESUME_DISMISS":"Effacer","LIBRARY_CLEAR_PROGRESS":"Effacer l\'avancée de la lecture","LIBRARY_REMOVE":"Retirer","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Têtes d\'affiches","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Primés aux Oscars","DISCOVER_WARNING_TITLE":"Oups !","DISCOVER_EMPTY_CATALOG":"Cet addon a renvoyé un contenu vide.","DISCOVER_ADULT_WARNING":"Ce contenu n\'est visible que pour les adultes. Avez-vous plus de 18 ans ?","DISCOVER_NOADDON_WARNING":"Attention: aucune extension Stremio active pour ce type. Les fichiers sauvegardés seront montrés, rien ne sera mis à jour.","DISCOVER_LOAD_ERR":"Discover: n\'a pas réussi à charger le catalogue à partir de l\'addon","DISCOVER_ADDON_UNINSTALLED":"Ce contenu n\'est plus disponible, vous avez peut-être désinstallé l\'addon.","UNINSTALL_THIS_ADDON":"Désinstallez cet addon","ERR_ADDON_NOT_INSTALLED":"Cet addon n\'est pas installé. L\'installer maintenant ?","DETAIL_RECEIVE_NOTIF_SERIES":"Recevoir des notifications pour les nouveaux épisodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Recevoir des notifications pour les nouvelles vidéos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Redémarrez maintenant!","UPGRADE":"Nouvelle version disponible ! Mise à jour vers la dernière version de Stremio","RELOAD_UI":"Rafraîchir l\'interface utilisateur","MANUAL_UPDATE_TITLE":"Mettez à jour votre version de Stremio","MANUAL_UPDATE_LINE1":"Vous utilisez une version obsolète de Stremio, ce qui est fortement déconseillé.","MANUAL_UPDATE_LINE2":"Veuillez mettre à jour dès que possible.","BUTTON_UPDATE_LATTER":"Pas maintenant.","BUTTON_UPDATE_NOW":"Mettre à jour","ANONYMOUS_USER":"Utilisateur anonyme","DONT_HAVE_ACC":"Vous n\'avez pas de compte ?","HAVE_ACC":"Vous avez déjà un compte ?","PASSWORD":"Mot de passe","PASSWORD_CONFIRM":"Confirmer le mot de passe","EMAIL":"E-mail","FB_LOGIN":"Continuer avec Facebook","FB_NOTHINGSHARED":"Rien ne sera partagé sans votre permission","FB_NOPOST":"Nous ne posterons rien en votre nom","OR":"ou","I_ACCEPT":"J\'accepte les","I_ACCEPT_BY_CLICKING":"En cliquant sur le bouton ci-dessus, je certifie que j\'accepte les ","TOS":"Conditions d\'utilisation","MUST_ACCEPT_TERMS":"Vous devez accepter les conditions","PASSWORDS_NOMATCH":"Les mots de passe ne correspondent pas","SIGN_UP":"Inscription","SIGN_UP_EMAIL":"S\'inscrire par email","CLICK_TO_SIGN_UP":"Cliquez ici pour vous inscrire.","LOG_IN":"Connexion","LOG_OUT":"Déconnexion","EXIT_FULLSCREEN":"Quitter le mode plein écran","ENTER_FULLSCREEN":"Entrer en mode plein écran","PLAY_URL_MAGNET_LINK":"Lire un URL/lien magnet","HELP_FEEDBACK":"Aide & Commentaires","TERMS_OF_SERVICE":"Conditions d\'utilisation","PRIVACY_POLICY":"Politique de Confidentialité","ABOUT_STREMIO":"À propos de Stremio","USER_PANEL":"Panneau utilisateur","LOGIN_LABEL":"Login","GUEST_LOGIN":"Connexion invité","GUEST_LOGIN_NOTICE":"La connexion en tant qu\'invité n\'est pas recommandée. Se connecter de façon régulière permet à Stremio de synchroniser votre bibliothèque et de recevoir des notifications pour vos séries/chaines favorites. Êtes-vous sûr de vouloir continuer ?","GUEST_LOGIN_NOTICE_2":"La connexion en tant qu\'invité n\'est pas recommandée - vous n\'aurez pas de notifications synchronisées pour votre Bibliothèque ou Tableau, qui sont des fonctionnalités vitales de Stremio. Êtes-vous sûr de vouloir continuer ?","CLICK_HERE":"cliquez ici","WRONG_PASSWORD":"Mauvais mot de passe. Si vous avez oublié votre mot de passe, ","SET_A_PASS":"choisissez-en un","RESET_PASSWORD":"Réinitialiser le mot de passe","FORGOT_PASSWORD":"Mot de passe oublié ?","EMAIL_USED_WITH_FB":"Cet e-mail a été utilisé avec une connexion Facebook.","INVALID_EMAIL":"Veuillez entrer une adresse email valide","INVALID_PASSWORD":"Veuillez entrer un mot de passe valide","CONN_ERR":"Erreur de connexion - Réessayez plus tard.\\n\\nSi le problème persiste, désactivez le pare-feux/anti-virus (particulièrement Bitdefender).","IMPORT_FROM_GUEST":"Importer la bibliothèque à partir de votre compte invité","RECEIVE_UPDATES_EMAIL":"Recevoir des muses à jour par email de la part de Stremio","LOGIN_FAILED":"La connexion à échouée.","SIGNUP_FAILED":"L\'inscription a échoué.","SEARCH_FAILED":"Echec de la recherche","EMAIL_USED":"Cet email est déjà utilisé.","WAITING_FB_LOGIN":"Se connecter avec Facebook ....","EXTERNAL_PLAYER_TITLE":"Lire dans un lecteur externe","EXTERNAL_REMEMBER_PLAYER":"Voulez-vous vous souvenir de votre choix","EXTERNAL_ALWAYS_PLAY":"Oui","EXTERNAL_ONLY_ONCE":"Non","BEST_FIT":"Meilleur ajustement","FIT_SCREEN":"Ajuster à l\'écran","FILL":"Remplir","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Dites-nous ce que vous aimez","INTRO_TASTE_LONG":"Dites-nous ce que vous aimeriez regarder","INTRO_TASTE_PICK":"Choisissez {{interestsRemaining}} centres d\'intérêt","INTRO_TASTE_PICK_MORE":"Choisissez encore {{interestsRemaining}} centres d\'intérêt","INTRO_TASTE_HELP_US":"Aidez-nous à mieux vous connaître.","INTRO_TASTE_CHOOSE_THESE":"Choisis-en quelques-unes :","INTRO_TASTE_CHOOSE_MIN":"Choisissez au moins 3 catégories","INTRO_TASTE_CHOOSE_MIN_ERR":"Vous devez choisir au moins 3 catégories !","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Alimentation & Santé","INTRO_TASTE_BEAUTY_FASHION":"Beauté & Mode","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Éducation","INTRO_TASTE_MUSIC":"Musique","INTRO_TASTE_TRAVEL":"Voyages","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"TV Réalité","INTRO_TASTE_COMEDY":"Comédie","INTRO_TASTE_DIY":"DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinéma","ADDON_NOT_SUPPORTED":"L\'addon sélectionné n\'est pas supporté sur cette plate-forme.","ADDON_DISCLAIMER":"Utiliser des extensions tierces sera toujours sujet à votre responsabilité ainsi qu\'aux lois et juridictions de votre lieu de résidence.","ADDON_ACTIVATE":"Activer cette extension?","ADDON_REPO_ADD":"URL de la collection de l\'addon","ADDON_ADD":"Ajouter","ADD_ADDON":"Ajouter un Addon","ADD_ADDON_DESCRIPTION":"Vous pouvez ajouter un addon via un lien externe, qui apparaîtra dans la rubrique Addons installés.","PASTE_ADDON_URL":"Collez l\'URL de l\'addon","WHATS_NEW":"Nouveautés","BUTTON_CONTINUE":"Continuer","BUTTON_ACTIVATE":"Activer","BUTTON_ACTIVATED":"Activé","BUTTON_CANCEL":"Annuler","BUTTON_SUBMIT":"Valider","BUTTON_DISMISS_ALL":"Tout Effacer","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"Voir tous","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Votre bibliothèque est vide. Découvrez à quel point c\'est utile :) ","HOW_START":"Voilà comment démarrer:","LIB_EMPTY_CAL":"Votre calendrier affiche les séries qui sont dans votre bibliothèque.","HOW_START_CAL":"Voici comment ajouter des séries:","LIB_EMPTY_BOARD":"Le tableau montre les notifications & recommendations liées à votre Bibliothèque.","HOW_START_BOARD_WAIT":"S\'il vous plait, ajoutez quelques séries ou chaînes à votre Bibliothèque et laissez-nous quelques minutes pour procéder :)","HOW_START_BOARD":"Voici comment y ajouter des séries & des films :","IMPORT_FB":"Importez des choses que vous aimez depuis <span>Facebook</span>","IMPORT_TRAKT":"Importez votre médiathèque depuis <span>Trakt</span>.","IMPORT_DISCOVER":"Trouver des choses intéressantes dans <span>Découverte</span>","IMPORT_DISK":"Importez des séries ou films que vous avez dans votre <span>disque dur</span>","PLEASE_CREATE_ACC":"S\'il vous plait <u>créez un compte</u> pour activer la Bibliothèque sync & et le Tableau.","IMPORT_DISCOVER_SIGNUP":"Inscrivez-vous et trouvez des choses intéressantes à partir de <span>Discover</span>Découvrez","IMPORT_DISK_SIGNUP":"Inscrivez-vous et importez les films ou émissions que vous avez sur votre disque <span>Disque local</span>.","LIB_EMPTY_CLOUD":"Bibliothèque Cloud","LIB_EMPTY_CLOUD_DESC":"Bibliothèque cloud personnelle synchronisé sur tous les appareils","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Recevoir des notifications pour les nouveaux épisodes","LIB_EMPTY_PERSONAL":"Personnel","LIB_EMPTY_PERSONAL_DESC":"Obtenir des recommandations personnelles","LIB_EMPTY_CALENDAR_DESC":"Planifiez votre calendrier personnel de visionnage","LIB_EMPTY_ALL":"Inscrivez-vous pour obtenir tout cela :","LIB_EMPTY_BEST":"Inscrivez-vous pour profiter pleinement de Stremio","LIB_EMPTY_OTHER":"Inscrivez-vous pour activer l\'option Calendrier et d\'autres fonctions intéressantes","CALENDAR_ADDED":"Le calendrier Stremio a été ajouté à votre calendrier de bureau par défaut.","CALENDAR_ADDED_MSG":"Si cela ne fonctionne pas, veuillez ajouter manuellement cette URL à votre application de calendrier.","TRAKT_EXPIRED":"L\'authentification à Trakt a expiré, allez dans Paramètres et ré-authentifiez-vous.","TRAKT_REQUIRES_LOGIN":"erreur de Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Vous devez vous connecter","SETTINGS_LABEL":"Réglages","SETTINGS_NAV_GENERAL":"Général","SETTINGS_NAV_PLAYER":"Lecteur vidéo","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Raccourcis","SETTINGS_SHORTCUT_RELOAD_APP":"Rafraichir l\'application","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Ouvrir les réglages","SETTINGS_SHORTCUT_SWITCH_TABS":"Changer d\'onglet","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Parcourir les onglets en avant","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Parcourir les onglets en arrière","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Naviguer entre les menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Aller à la Recherche","SETTINGS_SHORTCUT_EXIT_BACK":"Quitter / Retour","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Afficher le menu de Vitesse de Lecture","SETTINGS_SHORTCUT_MENU_VIDEOS":"Afficher le menu Vidéos","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Basculer le menu des Sous-Titres","SETTINGS_SHORTCUT_MENU_INFO":"Basculer le menu d\'Information","SETTINGS_SHORTCUT_FULLSCREEN":"Basculer en mode plein écran","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Afficher les contrôles","SETTINGS_SHORTCUT_PLAY_PAUSE":"Lecture / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Augmenter le volume","SETTINGS_SHORTCUT_VOLUME_DOWN":"Réduire le volume","SETTINGS_SHORTCUT_SEEK_NEXT":"Avancer la lecture","SETTINGS_SHORTCUT_SEEK_PREV":"Reculer la lecture","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Reculer dans la lecture","SETTINGS_SHORTCUT_SEEK_FORWARD":"Avancer dans la lecture","SETTINGS_SHORTCUT_PLAY_NEXT":"Lancer la vidéo suivante","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Augmenter la taille des sous-titres","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Réduire la taille des sous-titres","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Augmenter le délai des sous-titres","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Réduire le délai des sous-titres","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Afficher la barre latérale","SETTINGS_SHORTCUT_OR":"ou","SETTINGS_SHORTCUT_TO":"à","SETTINGS_SHORTCUT_SPACE":"Esapce","SETTINGS_SHORTCUT_SHIFT":"Maj","SETTINGS_SHORTCUT_ESC":"Échap","SETTINGS_TRAKT_AUTHENTICATE":"Authentifier","SETTINGS_FACEBOOK_IMPORT":"Importer","SETTINGS_CALENDAR_SUBSCRIBE":"S\'abonner","SETTINGS_INTERFACE_LANGUAGE":"Langage de l\'interface","SETTINGS_LAUNCH_STARTUP":"Lancer au démarrage","SETTINGS_VLC_DEFAULT":"Lire avec VLC","SETTINGS_UI_LANGUAGE":"Langue de l\'interface","SETTINGS_FULLSCREEN_EXIT":"Touche Echap pour quitter le plein écran","SETTINGS_GAMEPAD":"Activer le support de la manette de jeu","SETTINGS_CLOSE_WINDOW":"Fermer l\'application lorsque la fenêtre est fermée","SETTINGS_SUBTITLES_LANGUAGE":"Langue des sous-titres par défaut","SETTINGS_SUBTITLES_SIZE":"Taille par défaut des sous-titres","SETTINGS_SUBTITLES_BACKGROUND":"Arrière-plan des sous-titres","SETTINGS_SUBTITLES_COLOR":"Couleur des sous-titres","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Couleur du contour des sous-titres","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Couleur de l\'arrière-plan des sous-titres","SETTINGS_SEEK_KEY":"Touches directionnelles pour naviguer dans le temps","SETTINGS_SEEK_KEY_SHIFT":"Touches directionnelles pour naviguer dans le temps lorsque Maj est maintenue","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Durée du rembobinage et de l\'avance rapide","SETTINGS_BINGE":"Lire automatiquement le prochain épisode","SETTINGS_NEXT_VIDEO":"Afficher une notification pour commencer l\'épisode suivant","SETTINGS_NEXT_VIDEO_TRIGGER":"Afficher la notification du prochain épisode pendant :","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Durée de la popup pour la vidéo suivante","SETTINGS_PLAY_IN_BACKGROUND":"Lire en arrière-plan","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Lecture dans un lecteur externe","SETTINGS_RESIZE":"Redimensionnement automatique la fenêtre avant la lecture","SETTINGS_OVERRIDE_SERVER":"Remplacer l\'URL du serveur de streaming (avancé)","SETTINGS_SERVER_URL":"URL du serveur de streaming: ","SETTINGS_SERVER_AVAILABLE":"Le serveur de streaming est disponible.","SETTINGS_SERVER_UNAVAILABLE":"Le serveur de streaming n\'est pas disponible.","SETTINGS_SERVER_STATUS_ONLINE":"En ligne","SETTINGS_SERVER_STATUS_ERROR":"Erreur","SETTINGS_SERVER_CONFIGURE_TITLE":"Configurer l\'url du serveur de streaming","SETTINGS_SERVER_CONFIGURE_INPUT":"Entrez l\'URL du serveur de streaming","SETTINGS_SERVER_CACHE_SIZE":"Taille du cache","SETTINGS_SERVER_TORRENT_PROFILE":"Profil de torrent","SETTINGS_HTTPS_ENDPOINT":"Point d\'acces au streaming HTTPS:","SETTINGS_USE_BETA":"Toujours utiliser les dernières version bêta","SETTINGS_IMPORT_FB":"Importer depuis Facebook","SETTINGS_IMPORT_DISK":"Importer depuis le disque dur","SETTINGS_IMPORT_TRAKT":"Importer depuis Trakt","SETTINGS_PAUSE_MINIMIZED":"Mettre en pause la lecture lorsque la fenêtre est réduite","SETTINGS_HWDEC":"Décodage accéléré par le matériel","SETTINGS_BACKGROUND":"Lecture en arrière-plan","SETTINGS_SUBSCRIBE_CALENDAR":"Inscrire au calendrier","SETTINGS_REQ_EXPORT":"Demande d\'exportation de données","SETTINGS_ACC_DELETE":"Demander la suppression du compte","SETTINGS_CHANGE_PASSWORD":"Changer de mot de passe","SETTINGS_TOS":"Conditions d\'utilisation","SETTINGS_SUPPORT":"Contacter le support","SETTING_LANGUAGE":"Langue","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Déconnexion de Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scanner le code QR pour ouvrir la télécommande","SETTINGS_DESKTOP_NOTIFICATIONS":"Notifications de bureau","SETTINGS_DATA_SAVER":"Économiseur de données","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"sous-titres par défaut","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Sélection automatique de la piste audio","SETTINGS_DEFAULT_AUDIO_TRACK":"Piste audio par défaut","SETTINGS_ACCOUNT":"compte","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Lancer le lecteur dans une fenêtre séparée (avancé)","SETTINGS_PLAY_IN_EXTERNAL":"Toujours lancer la vidéo dans un lecteur externe","SETTINGS_STORAGE_BUTTON":"Effacer le stockage local","SETTINGS_STORAGE_MODAL_TITLE":"Etes-vous sûr ?","SETTINGS_STORAGE_MODAL_MESSAGE":"Cela effacera le stockage local et vous déconnectera.","SETTINGS_HWDEC_PICKER":"Choisir un paramètre de décodage accéléré par le matériel","SETTINGS_HW_AUTOMATIC":"Automatique","SETTINGS_HW_DISABLED":"Désactivé","SETTINGS_HW_ACCELERATED":"Accélération du décodage","SETTINGS_HW_FULL":"Accélération complète","SETTINGS_HW_LEGACY":"Normal","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Sous-titres Addons","SUBSPICKER_BLACK_BACKGROUND":"Utiliser un fond de couleur noir","SUBSPICKER_VERTICAL_OFFSET":"Décalage vertical","SUBSPICKER_SIZE":"Taille","SUBSPICKER_DELAY":"Retard","SUBSPICKER_EMBEDDED_SUBS":"Sous-titres intégrés","MOBILE_PRIVACY_POLICY":"Politique de confidentialité","MOBILE_CRASH_REPORTING":"Rapport d\'incident","MOBILE_ZOOM_TO_FILL":"Agrandir pour remplir l\'écran","MOBILE_PASSTHROUGH":"Sortie audio numérique (passthrough)","MOBILE_RUN_LOW_BATTERY":"Fonctionne avec une batterie faible","MOBILE_RUN_FOREGROUND":"Exécuter en tant que service de premier plan","MOBILE_PERFORMANCE":"PERFORMANCES ET STABILITÉ","MOBILE_SERVER_ONLINE":"En ligne","MOBILE_SERVER_OFFLINE":"Hors ligne","MOBILE_QR_EXPIRES":"Le code QR expire dans ","MOBILE_LOG_INTO":"Connectez-vous à votre compte Stremio ","MOBILE_SCAN_QR":"Scannez le code QR ci-dessus ou rendez-vous sur ","MOBILE_LINK_ACCOUNT":"Lien du compte","MOBILE_SPEEDPICKER_CANCEL":"Annuler","MOBILE_SPEEDPICKER_LABEL":"Choisir la vitesse de lecture","MOBILE_EMPTY_LIBRARY":"Votre bibliothèque est vide","MOBILE_NO_ADDON_ACTIVE":"Aucun addon Stremio actif pour ce type.","MOBILE_ORGANIZER_WARNING":"L\'application Stremio Organizer offre des fonctionnalités limitées. Pour une liste des flux lisibles et l\'expérience complète de Stremio, utilisez Stremio sur ordinateur.","MOBILE_ADDON_LOADING":"est toujours en cours de chargement","MOBILE_ADDONS_LOADING":"les addons sont toujours en cours de chargement","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configurez votre addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configurer l\'Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"L\'application Stremio Organizer fournit une sélection limitée d\'addons. Pour profiter pleinement de l\'expérience Stremio, utilisez Stremio sur ordinateur.","MOBILE_DISCONNECT":"Déconnecter","MOBILE_LOOKING_FOR_DEVICES":"Recherche d\'appareils...","MOBILE_CAST_TO":"Diffuser sur","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"J\'accepte de recevoir des communications marketing de Stremio","QUIT":"Quitter","CONNECTED":"Connecté","AUTHENTICATE":"S\'authentifier","CACHING":"Mise en cache","SETTINGS_CACHING_DRIVE":"Emplacement du cache","ENABLE_LOCAL_FILES_ADDON":"Activer l\'addon pour les fichiers locaux (nécessite un redémarrage)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Activer les connexions HTTPS à distance","TORRENT_PROFILE":"Profil du client Torrent","DATA_CACHING":"Mise en cache des données","MAGNET_PARSING":"Analyser un lien magnet","January":"Janvier","February":"Février","March":"Mars","April":"Avril","May":"Mai","June":"Juin","July":"Juillet","August":"Août","September":"Septembre","October":"Octobre","November":"Novembre","December":"Décembre","Monday":"Lundi","Tuesday":"Mardi","Wednesday":"Mercredi","Thursday":"Jeudi","Friday":"Vendredi","Saturday":"Samedi","Sunday":"Dimanche","Action":"Action","Comedy":"Comédie","War":"Guerre","Family":"Famille","Animation":"Animation","Adventure":"Aventure","Fantasy":"Fantaisie","Crime":"Crime","Mystery":"Mystère","Romance":"Romance","Drama":"Drame","Horror":"Horreur","Thriller":"Thriller","Sci-Fi":"Science Fiction","Music":"Musique","Biography":"Biographie","Documentary":"Documentaire","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"Actualité","History":"Histoire","Game-Show":"Game-Show","Reality-TV":"Télé Réalité","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Divertissement","Gaming":"Gaming","From TV":"Depuis la TV","Lifestyle":"Lifestyle","Science & Education":"Science & Éducation","Cooking & Health":"Cuisine & Santé","Beauty & Fashion":"Beauté & Mode","Sports":"Sports","News & Politics":"Actualités & Politique","How-to & DIY":"Tutoriels","Tech":"Tech","Automotive":"Auto-Moto","Causes & Non-Profits":"Causes & Humanitaire","Movies":"Films","Uk Live Tv":"TV Live Britannique","Fashion":"Mode","Business News Radio":"Radio Actualité Business","Business Tv":"Business Tv","Cars & Auto":"Voiture & Auto","Comedy Radio":"Radio Comédie","Lifestyle Radio":"Radio Lifestyle","News Tv":"TV Actualité","Food And Wine":"Nourriture et Vin","Latino Tv":"TV Latino","Shopping Tv":"TV Shopping","Religion":"Religion","Kids":"Enfants","Body & Soul":"Corps & Ame","Education":"Éducation","Indian Tv":"TV Indienne","Extreme Sports":"Sports Extrêmes","Middle Eastern Tv":"TV Moyen Orient","Celebrity Tv":"TV Célébrité","Science Tv":"TV Science","Bikini babe":"Bikini","Outdoors":"Extérieur","German Tv":"TV Allemande","French Tv":"TV Française","Italian Tv":"TV Italienne","Gamer Tv":"TV Gamer","Travel":"Voyage","Asian Tv":"TV Asiatique","Entertainment":"Divertissement","News Radio":"Radio Actualité","Music Radio":"Radio Musique","Language Learning":"Apprentissage de Langues","Science Radio":"Radio Science","Tech Radio":"Radio Tech","Science & Technology Vod":"VOD Science & Technologie","new video":"Nouvelle vidéo","new episode":"Nouvel épisode","new movie":"Nouveau film","recommended":"recommander","we recommend":"Nous vous conseillons","offer of the day":"offre du jour","news":"news","music video":"musique vidéo","CTX_SHOW_HOTKEYS":"Afficher les raccourcis","CTX_DISMISS_NOTIF":"Ignorer les notifications","CTX_DISMISS_ALL":"Effacer tout","CTX_SHARE":"Partager","CTX_COPY_SHARE_LINK":"Copier le lien de partage","CTX_COPY_MAGNET_LINK":"Copier le lien magnet","CTX_COPY_STREAM_LINK":"Copier le lien du stream","CTX_DOWNLOAD_VIDEO":"Télécharger cette vidéo","CTX_DOWNLOAD_SUBS":"Télécharger les sous-titres","CTX_VIEW_ON_YOUTUBE":"Regarder sur YouTube","CTX_SHOW":"Regarder","CTX_PLAY":"Lire","CTX_PLAY_IN":"Lire dans","CTX_PLAY_ON":"Lire sur","CTX_WATCH_ON":"Regarder sur","CTX_WATCH":"Regarder","CTX_WATCHED":"Regardé","CTX_WATCH_BEGINNING":"Regarder depuis le début","CTX_WATCH_MOBILE":"Regarder sur un appareil mobile","CTX_REWIND":"Redémarrer","CTX_MARK_WATCHED":"Marquer comme vu","CTX_MARK_NON_WATCHED":"Marquer comme non-vu","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Recevoir les nouvelles notifications","CTX_REMOVE_CACHE":"Supprimer du cache","CTX_REMOVE_CACHE_EP":"Supprimer l\'épisode du cache","CTX_OPEN_CONTAINING":"Ouvrir le fichier cible","CTX_REMOVE":"Retirer de la bibliothèque","CTX_AVAILABLE_OFFLINE":"Disponible hors-ligne","CTX_PAUSED":"Mis en pause","CTX_ALWAYS_ON_TOP":"Toujours en haut","CTX_FULLSCREEN":"Plein écran","CTX_WRONG_SUBS":"Mauvais sous-titres ?","CTX_REPORT_ISSUES":"Rapporter un problème","CTX_COPY":"Copier","CTX_PASTE":"Coller","CTX_CLEAR":"Effacer","CTX_CLEAR_RECENT_SEARCHES":"Effacer les recherches récentes","HELLO_THERE":"Salut","HOPE_YOU_ENJOY":"Nous espérons que vous apprécierez Stremio et que c\'est déjà une de vos applications préférées !","WHO_ARE_WE":"Qui sommes-nous ? L\'équipe derrière ça, deux mecs travaillant très dur dans un seul but : rendre ce logiciel de mieux en mieux.","SUPPORT_US":"Si vous aimez Stremio - aidez-nous !","SPREAD_THE_WORD":"Parlez-en à vos amis, partagez l\'application","MORE_PEOPLE":"Plus de personnes utiliseront Stremio, mieux l\'application sera !","SEND_A_LINK":"ou envoyez un lien vers notre site !","TIP_LOCALFILES":"Astuce : vous pouvez glisser-déposer des fichiers vidéo locaux dans Stremio","ADDON_MY":"Mes Addons","ADDON_COMMUNITY":"Addons Communautaires","ADDON_OFFICIAL":"Addons Officiels","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Rechercher des addons","ADDON_INSTALL":"Installer","ADDON_CONFIGURE":"Configurer","ADDON_UNINSTALL":"Désinstaller","ADDON_UPGRADE":"Mettre à jour","ADDON_INSTALLED":"Installés","ADDON_INSTALLED_MSG":"Addon installé !","ADDON_UPGRADED_MSG":"Addon mis à jour !","ADDON_UNKNOWN":"Inconnu","ADDON_ERR":"Erreur d\'installation de l\'addon!","ADDON_DISCONNECTED":"Déconnecté","ADDON_APP_MISSING":"l\'application pour cette source n\'est pas installée. Voulez-vous l\'installer maintenant ?","ADDON_APP_INSTALL":"Installer maintenant","ADDON_PAGE":"Page des Addons","ADDON_TOP_CONTENT":"Le meilleur de cet Addon","ADDON_PROVIDES":"délivre","ADDON_WATCH":"Regardez des #{types} maintenant !","ADDON_WATCH_FREE":"Regardez des #{types} GRATUITEMENT maintenant !","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Types pris en charge","ADDON_SUPPORTED_CATALOGS":"Catalogues pris en charge","ADDON_PROVIDES_DISCOVER":"Plus de #{types} dans Découverte","ADDON_PROVIDES_STREAMS":"Regarder #{types}","ADDON_PROVIDES_STREAMS_FREE":"Regarder #{types} GRATUITEMENT","ADDON_PROVIDES_SUBTITLES":"Sous-titres pour #{types}","ADDON_CANTDETECT":"Nous n\'avons pas pu détecter une instance Stremio en cours d\'exécution, nous ne pouvions donc pas détecter quels addons vous avez installés.","ERR_NO_META":"Aucune information trouvée à ce sujet ","ERR_GETTING_META":"Erreur lors de la récupération d\'informations à ce sujet.","ERR_CANT_PARSE_MAGNET":"Impossible d\'analyser le magnet","ERR_NO_MAGNET_INFOHASH":"Pas de hachage d\'info valide pour le magnet","ERR_NO_FILE_PATH":"Impossible d\'envoyer une requête sans chemin d\'accès au fichier","ERR_NO_TORRENT":"Aucun torrent retourné","ERR_NO_SUPPORTERD_FILES":"Aucun fichier supporté trouvé","ERR_OPENING_FILES":"Impossible d\'ouvrir les fichiers externes","ERR_INVALID_LINK":"Lien invalide","ERR_REGISTERED_ONLY":"Cette option n\'est disponible que pour les utilisateurs enregistrés seulement.","ERR_CLIPBOARD":"Impossible de lire à partir du presse-papiers","ERR_CLIPBOARD_READ":"Impossible de lire le presse-papiers sur cette plateforme","ERR_CLIPBOARD_GENERIC":"Aucune URL lisible trouvée dans le presse-papiers. Veuillez copier une URL (par exemple un lien magnet) vers une vidéo.","BOARD_CONTINUE_WATCHING":"Continuer de regarder","BOARD_EXPLANATION_RECOMMENDATIONS":"Films sélectionnés spécialement pour vous.<br />Ce film est un exemple de recommandation.","BOARD_EXPLANATION_EPISODES":"Les nouveaux épisodes de vos Séries préférées arrivent ici.<br />Ajouter les séries que vous suivez à votre bibliothèque.","BOARD_EXPLANATION_VIDEOS":"Les nouveaux épisodes de vos Chaînes préférées arrivent ici.<br />Ajouter les chaînes YouTube que vous suivez dans votre bibliothèque.","WEBSITE_SLOGAN_WATCH":"Regarder instantanément","WEBSITE_SLOGAN_ALL":"Toutes les vidéos que vous aimez au même endroit","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Regarder depuis","WEBSITE_DOWNLOAD":"Télécharger maintenant","WEBSITE_DOWNLOAD_FOR":"Télécharger maintenant pour","WEBSITE_IS_DESKTOP":"Stremio est une application de bureau, ouvrez cette page sur votre PC et téléchargez la","WEBSITE_DESKTOP_DEMO_VID":"Démo","WEBSITE_PAGE_HOME":"Accueil","WEBSITE_PAGE_FEATURES":"Fonctionnalités","WEBSITE_PAGE_ADDONS":"Extensions","WEBSITE_PAGE_TECH":"Technologies","WEBSITE_PAGE_CREATE_ADDON":"Créer une extension","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Films","WEBSITE_TYPE_series_PL":"Séries","WEBSITE_TYPE_tv":"TV en live","WEBSITE_TYPE_channel":"Chaînes","WEBSITE_STREMIO_WHAT_IS":"Stremio set une application qui vous aide à organiser et à accéder instantanément à vos vidéos, films, séries TV et chaînes TV préférées","WEBSITE_FEATURES_WATCH":"Regarder immédiatement en HD","WEBSITE_FEATURES_WATCH_DETAIL":"Cliquer pour lancer vos vidéos, films, séries TV et chaînes TV préférées","WEBSITE_FEATURES_SUBS":"Sous-titres automatiques","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio choisit automatiquement les sous-titres pour votre langue.","WEBSITE_FEATURES_SUBS_LABEL":"À vous, chef","WEBSITE_FEATURES_CAST":"Lecture sur TV et appareils mobiles","WEBSITE_FEATURES_CAST_DETAIL":"Envoyer vers une AppleTV, Chromecast, Smart TV (DLNA/UPnP) ou un appareil mobile.","WEBSITE_LIB":"Profitez de votre bibliothèque personnelle, synchronisée sur tous vos appareils","WEBSITE_LIB_COLLECT":"Récupérer depuis Stremio","WEBSITE_LIB_IMPORT":"Importer depuis Facebook","WEBSITE_LIB_LOCAL":"Ajouter depuis votre disque","WEBSITE_BOARD":"Le tableau - Votre étape pour les Notifications et Recommandations","WEBSITE_BOARD_RECOMMEND":"Show TV recommandé","WEBSITE_BOARD_TRENDING":"Film tendance","WEBSITE_BOARD_NEW":"Nouvelle vidéo","WEBSITE_BOARD_EPISODE":"Nouvel Épisode","WEBSITE_BOARD_1":"Envie de regarder quelque chose d\'intéressant? Recevez des recommandations basées sur vos goûts!","WEBSITE_BOARD_2":"Soyez notifié dès qu\'un nouvel épisode de votre show TV ou chaîne youtube favorite sort!","WEBSITE_BOARD_YOUTUBE":"Nouvelles vidéos des chaînes YouTube","WEBSITE_BOARD_EPISODES":"Nouveaux épisodes des séries que vous suivez","WEBSITE_ADDONS":"Extensions de contenu","WEBSITE_TECH_DETAIL":"Nous aimons les nouvelles technologies et les expérimentations!\\nStremio utilise les technologies open source suivantes :","WEBSITE_TECH_WCJS":"WebChimera.js permet à Stremio de lire n\'importe quel format vidéo avec de bonnes performances.","WEBSITE_TECH_WCJS_EXTRA":"Nous sommes des contributeurs principaux du projet.","WEBSITE_TECH_ELECTRON":"Electron fournit une plateforme innovante sur laquelle bâtir Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Nous contribuons au projet.","WEBSITE_TECH_LINVODB":"Une technologie de base de données qui assure une bonne organisation et une mise à disposition partout.","WEBSITE_TECH_LINVODB_EXTRA":"Technologie maison","WEBSITE_CREATE_ADDON":"Créez votre extension","WEBSITE_CREATE_ADDON_DETAIL":"Vous avez un service qui fournit des vidéos? Nous vous aiderons à bénéficier des fonctionnalités de Stremio en faisant votre propre extension.","WEBSITE_CREATE_ADDON_BENEFITS":"Avantages de créer une extension pour Stremio","WEBSITE_P2P_BEAUTY":"La beauté du Streaming En peer to peer","WEBSITE_P2P_1":"Vidéos full HD /4K fiables et accessibles en VoD ou streaming","WEBSITE_P2P_2":"Plateforme de distribution avec une expérience utilisateur optimale","WEBSITE_P2P_3":"Nous vous crééerons une extension sur mesure","WEBSITE_P2P_CONTACT":"Interessé? Nous vous invitons à <a href=\'mailto:office@stremio.com\'>nous contacter</a>.","WEBSITE_P2P_CONTACT_EXTRA":"Nous serions heureux de vous aider à intégrer votre contenu à Stremio!","WEBSITE_P2P":"De temps en temps, une nouvelle technologie vient changer la donne. Nous avons investi énormément de temps et d\'efforts pour construire un moteur de streaming peer to perr (P2P) fournissant une bonne performance et polyvalence, s\'adaptant à tous les cas de figure.\\nContactez nous pour mettre en place des vidéos en P2P ou streaming avec DRM.","WEBSITE_THOUGHTS":"Des pensées à partager:","WEBSITE_SPREAD":"Passer le mot à propos de Stremio:","WEBSITE_CONTACT":"Si vous voulez nous contatez, utilisez ","WEBSITE_OPENSOURCE":"Pour nos projets open source, rendez-vous sur notre","WEBSITE_BITCOIN":"Faites nous une donation de Bitcoin:","WEBSITE_FAQ":"Questions fréquemment posées","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Conditions d\'utilisation","WEBSITE_LEGAL":"Juridique","WEBSITE_PAGE_ABOUT":"À propos","WEBSITE_PAGE_BECOME_PARTNER":"Devenez partenaire","WEBSITE_ALL_YOU_CAN_WATCH":"La Liberté de Regarder\\nTout ce que Vous Voulez.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Qu\'est-ce que Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio est un hub unique pour l\'agrégation de contenu vidéo. Découvrez, organisez et regardez des vidéos provenant de toutes sortes de sources sur n\'importe quel appareil que vous possédez.","WEBSITE_WHAT_IS_STREMIO_P2":"Films, émissions de télévision, séries, chaînes de télévision en direct ou chaînes web comme YouTube et Twitch.tv - vous trouverez tout cela sur Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio est un centre de médias moderne qui constitue une solution unique pour vos divertissements vidéo. Vous découvrez, regardez et organisez le contenu vidéo à partir d\'addons faciles à installer.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Films, émissions de télévision, télévision en direct ou chaînes web - trouvez tout cela sur Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Profitez sur tous vos appareils","WEBSITE_DEVICES_COLLECT":"Collecter depuis Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importer depuis facebook","WEBSITE_DEVICES_LOCAL":"Ajouter depuis un disque local","WEBSITE_JOIN_THE_PARTY_NOW":"Rejoignez la fête dès maintenant","WEBSITE_DEVICES_ALL":"Facile à utiliser sur tous vos appareils;","WEBSITE_EXTENDABLE_CATALOG":"Catalogue vidéo extensible à l\'infini;","WEBSITE_ORGANIZE_YOUR_MEDIA":"De superbes fonctionnalités pour organiser vos médias;","WEBSITE_AS_SEEN_ON":"As été vu sur","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"A propos de nous","WEBSITE_LINK_TECHNOLOGY":"Technologie","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Téléchargement","WEBSITE_MORE":"Plus","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribuer","WEBSITE_LINK_COMMUNITY":"Communauté","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & Plus","WEBSITE_LINK_HELP":"Centre d\'aide","WEBSITE_LINK_CONTACTS":"Contactez-nous","WEBSITE_LINK_TOS":"Conditions d\'utilisation","WEBSITE_LINK_PRAVACY":"Politique de confidentialité","WEBSITE_SUBSCRIBE":"Souscrire","WEBSITE_NEWSLETTER":"Rejoignez notre newsletter pour des nouvelles incroyables","WEBSITE_PLACEHOLDER_EMAIL":"Votre Email","WEBSITE_COMMUNITY":"Communauté","WEBSITE_LINK_PRAVACY_LEGAL":"Confidentialité et mentions légales","WEBSITE_WHY":"Pourquoi nous le faisons","WEBSITE_WHY_P1":"Chez Stremio, nous venons travailler tous les jours parce que nous voulons résoudre un problème important pour l\'industrie de la vidéo à la demande. Il y a tellement de nouveaux contenus publiés chaque minute qu\'il est pratiquement impossible de s\'y retrouver.","WEBSITE_WHY_P2":"Nous aidons les gens à naviguer dans cet immense monde de divertissement vidéo et à découvrir de nouveaux contenus pour en profiter. Nos applications regroupent des films, des séries, des émissions de TV en direct, des chaînes Web et plus encore. Nous nous engageons à faire en sorte qu\'il soit incroyablement facile pour les utilisateurs de trouver les titres et les diffuseurs qu\'ils aiment.","WEBSITE_WHY_P3":"Vous pouvez utiliser notre service sur n\'importe quel appareil et à tout moment, faisant de Stremio le seul centre de divertissement vidéo dont vous aurez jamais besoin.","WEBSITE_TEAM":"L\'ÉQUIPE","WEBSITE_TEAM_P":"L\'équipe de Stremio est petite mais puissante : à nous dix, nous codons en X langages et partageons notre expertise en développement logiciel, conception d\'interface utilisateur et d\'interface utilisateur, marketing et publicité, ainsi qu\'en business et startups.","WEBSITE_FEATURES":"Fonctionnalités","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Découvrez facilement de nouveaux contenus","WEBSITE_FEATURES_DISCOVER_P":"Découvrez facilement les nouveaux films, émissions de télévision, séries et chaînes à regarder. Parcourez par catégorie, genre, classement, récence, etc. ou tapez simplement un nom pour trouver. Stremio fait de la recherche d\'un nouveau contenu vidéo un jeu d\'enfant.","WEBSITE_FEATURES_ALL_CONTENT":"Tout votre contenu vidéo sur un seul écran","WEBSITE_FEATURES_ALL_CONTENT_P1":"Voyez quels films, séries ou vidéos vous n\'avez pas terminés et continuez à les regarder ; soyez averti des nouveaux épisodes et sorties ; et parcourez les recommandations que vous recevrez en fonction de vos habitudes de visionnage.","WEBSITE_FEATURES_LIBRARY":"Organisez votre vidéothèque","WEBSITE_FEATURES_LIBRARY_P1":"Ajoutez n\'importe quel titre à votre bibliothèque Stremio d\'un simple clic et trouvez votre chemin à travers votre contenu, classé par type, récence ou ordre alphabétique.","WEBSITE_FEATURES_CALENDAR":"Gardez une trace de tout ce que vous regardez","WEBSITE_FEATURES_CALENDAR_P1":"Obtenez une visualisation du calendrier de tous les films et séries que vous ajoutez à votre bibliothèque. Exportez votre calendrier Stremio et synchronisez-le afin de toujours savoir quand un nouvel épisode ou une première est prévu.","WEBSITE_FEATURES_BIG_SCREEN":"Profitez de votre contenu vidéo sur un écran plus grand","WEBSITE_FEATURES_BIG_SCREEN_P1":"Lancez tout ce que vous regardez sur un autre appareil, qu\'il s\'agisse d\'un téléphone, d\'une tablette ou d\'un téléviseur d\'un simple clic.","WEBSITE_FEATURES_SOURCES":"Regarder des vidéos provenant de nombreuses sources différentes","WEBSITE_FEATURES_SOURCES_P":"Installez des modules complémentaires officiels et communautaires pour profiter de vidéos provenant de nombreux fournisseurs différents - le tout dans une seule application élégante et facile à utiliser.","WEBSITE_CREATE_AN_ADDON":"Créer un addon","WEBSITE_FEATURES_SYNC":"Synchronisez votre bibliothèque sur différents appareils et reprenez votre lecture","WEBSITE_FEATURES_SYNC_P1":"Connectez-vous avec votre compte sur tous vos appareils et profitez de la synchronisation de votre bibliothèque, de vos addons, de la lecture et de votre calendrier.","WEBSITE_FEATURES_EXTENDABLE":"Catalogue vidéo extensible via l\'ajout d\'addons","WEBSITE_FEATURES_EXTENDABLE_P1":"Le catalogue d\'addons de Stremio propose un certain nombre d\'addons à installer vous permetant de regarder une variété de contenus vidéo. Cela comprend des films, émissions, télévisions en direct, du sport, des actualités, podcasts, chaînes web, jeux vidéo et bien d\'autres encore.","WEBSITE_FEATURES_AUTO_SUBS":"Sous-titres automatiques","WEBSITE_FEATURES_AUTO_SUBS_P1":"Avec nos addons de sous-titres, vous obtenez automatiquement des options pour votre langue préférée.","WEBSITE_FEATURES_CHROMECAST":"Caster vers un Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Profitez de votre contenu vidéo sur un écran plus grand ou diffusez simplement ce que vous regardez sur un autre appareil.","WEBSITE_FEATURES_KEEP_TRACK":"Gardez une trace de vos émissions TV et de vos chaînes Web préférées","WEBSITE_FEATURES_KEEP_TRACK_P1":"Bénéficiez d\'un calendrier et de notifications pour les nouveaux épisodes de vos séries et chaînes web préférées.","WEBSITE_FEATURES_POWER_USER":"Fonctionnalités pour les utilisateurs avancés","WEBSITE_FEATURES_POWER_USER_P1":"Jouer dans un lecteur externe","WEBSITE_FEATURES_POWER_USER_P2":"Lecture à partir d\'un fichier torrent ou d\'un lien magnet","WEBSITE_FEATURES_POWER_USER_P3":"Importation dans votre bibliothèque à partir de favoris Facebook ou d\'un disque local","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"Tout le contenu vidéo fourni par Stremio provient d\'un système d\'addon - aucun contenu ou fournisseur de contenu n\'a été intégré dans l\'application.","WEBSITE_ADD_ONS_P2":"Il y a deux groupes d\'addons disponibles : les addons officiels et les addons communautaires.","WEBSITE_ADD_ONS_P3":"Les officiels sont développés et hébergés par Stremio, tandis que les addons communautaires sont créés par les membres de notre communauté, qui les hébergent également.","WEBSITE_ADDONS_OFFICIAL":"Addons officiels","WEBSITE_ADDONS_WATCHUB":"Diffusez vos films, séries et émissions préférés de fournisseurs tels que iTunes, Hulu, Amazon et d\'autres services du Royaume-Uni et des États-Unis.","WEBSITE_ADDONS_YOUTUBE":"Regardez vos chaînes YouTube préférées sans publicité et recevez des notifications pour les nouveaux uploads des contributeurs que vous suivez.","WEBSITE_ADDONS_FILMON":"Regardez la télévision en direct, les films et la télévision gratuitement. 600 chaînes de télévision, 45 000 films, film gratuits, documentaires et plus encore","WEBSITE_ADDONS_OPENSUBTITLES":"Sous-titres de films et de télévision en plusieurs langues, des milliers de sous-titres traduits sont mis en ligne chaque jour.","WEBSITE_ADDONS_COMMUNITY":"Addons de la communauté","WEBSITE_ADDONS_FILMON_VOD":"Regarder la vidéo à la demande de Filmon.tv","WEBSITE_ADDONS_TWICH":"Regardez les flux en direct de Twitch.tv - une plateforme de streaming vidéo pour l\'industrie du e-sport","WEBSITE_ADDONS_VODO":"Regardez des films indépendants totalement gratuitement.","WEBSITE_ADDONS_NETFLIX":"Regardez des films et des séries Web de Netflix.","WEBSITE_ADDONS_CREATE":"Créer un addon","WEBSITE_ADDONS_CREATE_P1":"Si vous le souhaitez, vous pouvez développer votre propre addon. De cette façon, vous pouvez vous donner, ainsi qu\'à notre communauté, accès à un nouveau contenu vidéo et atteindre un nouveau public ciblé de millions d\'utilisateurs dans le monde entier.","WEBSITE_ADDONS_START_CREATE":"Pour commencer, visitez la page Stremio Addon SDK:","WEBSITE_DOWNLOADS":"Téléchargements","WEBSITE_DOWNLOADS_P1":"Pour des performances optimales, nous vous recommandons d\'utiliser la dernière version disponible des applications Stremio. Si, pour une raison quelconque, vous souhaitez utiliser une version plus ancienne, vous pouvez la télécharger ici.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio pour Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio pour macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio pour Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio pour Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio pour iOS (version limitée)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribuer","WEBSITE_CONTRIBUTE_P1":"La plateforme Stremio est open source et vous pouvez facilement créer un addon pour du contenu qui n\'est actuellement pas sourcé.","WEBSITE_CONTRIBUTE_WHY":"Pourquoi créer un addon ?","WEBSITE_CONTRIBUTE_WHY_P1":"Atteignez un nouveau public pour votre contenu vidéo","WEBSITE_CONTRIBUTE_WHY_P2":"La base d\'utilisateurs de Stremio s\'accroît rapidement - au cours de la première année du lancement, Stremio avait gagné 1 million d\'utilisateurs à travers le monde, et au cours de la deuxième année d\'existence de la plate-forme, ce nombre est passé à 2,5 millions.","WEBSITE_CONTRIBUTE_WHY_P3":"Avec votre addon, vous pouvez facilement atteindre cet audience et lui distribuer votre contenu vidéo.","WEBSITE_CONTRIBUTE_ALL":"Regardez vos films, vidéos, séries et chaînes préférés en un seul endroit.","WEBSITE_CONTRIBUTE_ALL_P1":"Vous êtes fan d\'un type particulier de contenu qui n\'est pas encore disponible sur Stremio ? Créez un addon et regardez vos vidéos préférées dans l\'un des hubs de divertissement les plus grands et les plus faciles à utiliser sur le marché.","WEBSITE_CONTRIBUTE_ALL_P2":"En plus de cela, vous obtiendrez la gratitude infinie d\'autres membres de la communauté Stremio partageant les mêmes idées.","WEBSITE_CONTRIBUTE_MONETIZE":"Monétisez votre addon et gagnez de l\'argent grâce à lui","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Une fois que vous avez développé un nouvel addon pour Stremio, vous pouvez facilement le monétiser de différentes manières. Si vous envisagez de le faire, n\'hésitez pas à nous contacter à l\'adresse suivante ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - nous nous ferons un plaisir de vous consulter et de vous conseiller sur les options de monétisation des addons.","WEBSITE_CONTRIBUTE_TRANSLATE":"Devenez traducteur bénévole","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Si vous souhaitez profiter des applications Stremio dans différentes langues, vous pouvez rejoindre notre communauté de traducteurs bénévoles. Ils nous aident à ajouter des versions de Stremio dans de nombreuses langues différentes.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Vous avez hâte de commencer ?","WEBSITE_TRANSALTE_STREMIO":"Traduire Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Communautés officielles","WEBSITE_COMMUNITY_OFFICIALS_P1":"Devenez membre de la communauté Stremio en pleine croissance. Suivez-nous sur les réseaux sociaux et n\'hésitez pas à nous dire bonjour - nous adorons avoir des nouvelles de nos fans ! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Communautés non officielles","STREMIO_COMMUNITY_NL":"Stremio Pays-Bas","STREMIO_COMMUNITY_BRASIL":"Stremio Brésil","STREMIO_COMMUNITY_GERMANY":"Stremio Allemagne","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgique","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italie","STREMIO_COMMUNITY_UK":"Stremio Royaume-Uni","STREMIO_COMMUNITY_USA":"Stremio Etats-Unis","STREMIO_COMMUNITY_MEXICO":"Stremio Mexique","STREMIO_COMMUNITY_ADDONS":"Addons Stremio","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partenaires et supporters","WEBSITE_COMMUNITY_GOODIES":"Goodies Stremio","WEBSITE_COMMUNITY_WALLPAPERS":"Fonds d\'écran","WEBSITE_COMMUNITY_ART":"Galerie d\'Art de la Communauté","WEBSITE_LINK_ART":"Galerie d\'Art de la Communauté","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"Si vous avez des questions, commentaires ou suggestions, n\'hésitez pas à nous contacter via le formulaire de contact ci-dessous.","WEBSITE_CONTACT_US_P2":"Gardez à l\'esprit que nous sommes situés en Bulgarie, il peut donc y avoir un retard dans le traitement de votre demande en raison de différences de fuseau horaire.","WEBSITE_CONTACT_US_SUCCESS":"Votre message a bien été envoyé. Nous vous répondrons dans les plus brefs délais.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Veuillez entrer un email valide !","WEBSITE_CONTACT_US_Q_RELATED_TO":"Sur quoi porte votre question ?","WEBSITE_CONTACT_US_Q_OS":"Quel est votre système d\'exploitation ?","WEBSITE_CONTACT_US_PH_EMAIL":"Votre E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ENVOYER","WEBSITE_CONTACT_US_Q_1":"Comment installer ?","WEBSITE_CONTACT_US_Q_2":"Comment désinstaller ?","WEBSITE_CONTACT_US_Q_3":"(HTML) Comment faire des lasagnes ?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technologie","WEBSITE_TECHNOLOGY_P1":"Nous aimons la technologie et la science folle. </br> Voici ce qui fait fonctionner Stremio (tout est open-source).","WEBSITE_TECHNOLOGY_P_QT":"Le développement logiciel multiplateforme à son meilleur.","WEBSITE_TECHNOLOGY_P_MPV":"Un lecteur multimédia gratuit, open source et multiplateforme.","WEBSITE_TECHNOLOGY_P_RN":"React Native vous permet de créer des applications mobiles en utilisant uniquement JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework intégré à l\'application pour obtenir du multimédia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm est une plateforme mobile qui remplace SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribuer au projet","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Il y a deux façons de contribuer à Stremio et de nous aider à rendre le produit encore mieux.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Vous pouvez faire don de vos précieuses compétences linguistiques en traduisant la plateforme ...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"ou","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... vous pouvez utiliser vos compétences en développement pour créer des addons communautaires. ","WEBSITE_TRANSLATE_STREMIO":"Traduire Stremio","WEBSITE_404_OH_NO":"Oh, oh ! La page que vous cherchez n\'est pas ici ...","WEBSITE_GO_HOME":"Retourner à l\'accueil","WEBSITE_LINK_OTHER_DOWNLOADS":"Autres téléchargements","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Télécharger Stremio 4 beta maintenant","WEBSITE_GET_FOR_DESKTOP":"Télécharger pour le bureau","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"Mon compte","WEBSITE_MAINPAGE_FAQ_001_H1":"Qu\'est-ce que Stremio ?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio est un centre de médias moderne qui vous donne la liberté de regarder tout ce que vous voulez.","WEBSITE_MAINPAGE_FAQ_002_H1":"Comment cela fonctionne ?","WEBSITE_MAINPAGE_FAQ_002_P1":"Une fois que vous avez installé Stremio sur votre appareil et que vous avez créé un compte, il vous suffit de vous rendre dans le catalogue d\'addons et d\'installer tous les addons que vous voulez, et c\'est parti !","WEBSITE_MAINPAGE_FAQ_002_P2":"Ensuite, vous pouvez vous rendre dans les sections Découvrir ou Tableau pour commencer à explorer le contenu.","WEBSITE_MAINPAGE_FAQ_003_H1":"Que puis-je regarder ici ?","WEBSITE_MAINPAGE_FAQ_003_P1":"Beaucoup : Films, émissions de télévision, chaînes Internet, sport, chaînes de télévision, écouter de podcasts et bien d\'autres choses encore. Grâce à notre système d\'addons, vous pouvez accéder à une grande variété de contenus.","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio est-il open-source ?","WEBSITE_MAINPAGE_FAQ_004_P1":"Oui, vous pouvez consulter les liens suivants: ${1}application de bureau${2} et ${3}Organisation GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio est-il sans danger ?","WEBSITE_MAINPAGE_FAQ_005_P1":"Oui: comme il s\'agit d\'un logiciel open-source, le code est publiquement contrôlable et vous pouvez l\'examiner vous-même.","WEBSITE_MAINPAGE_FAQ_006_H1":"Qu\'en est-il de ma vie privée ?","WEBSITE_MAINPAGE_FAQ_006_P1":"Nous respectons la vie privée des utilisateurs et ne recueillons aucune donnée personnelle en dehors du minimum indispensable pour créer et synchroniser votre compte.","WEBSITE_MAINPAGE_FAQ_006_P2":"Il existe également un ${1}Mode invité${2} à l\'inscription, qui ne nécessite aucune donnée particulière : dans ce mode, aucune requète n\'est effectuée vers notre serveur. Toutefois, cela se fait au détriment de fonctions importantes, telles que la possibilité de synchroniser votre bibliothèque entre les appareils.","WEBSITE_MAINPAGE_FAQ_007_H1":"Puis-je caster sur ma TV ?","WEBSITE_MAINPAGE_FAQ_007_P1":"Oui, nous supportons Chromecast et vous pouvez caster à partir des applications bureau et mobiles (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Combien d\'addons possède Stremio ?","WEBSITE_MAINPAGE_FAQ_008_P1":"Fin 2019, plus de 50 - pour plus d\'informations, consultez notre catalogue d\'addons.","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio peut-il être étendu au-delà de ce qui se trouve dans le catalogue de l\'addon ?","WEBSITE_MAINPAGE_FAQ_009_P1":"Oui, vous devriez faire un tour ici: ${1}PimpMyStremio${2}, ${3}Communautés Reddit${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"Quels sont les appareils pris en charge par Stremio ?","WEBSITE_MAINPAGE_FAQ_010_P1":"Nous avons des applications de bureau pour Windows, Mac et Linux. Pour les mobiles, nous prenons en charge Android et iOS, tout en gardant à l\'esprit que la version iOS est limitée dans ses fonctionnalités (elle ne prend pas en charge la plupart des addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"Il existe de nombreux appareils basés sur Android sur lesquels vous pouvez faire tourner Stremio, comme NVIDIA Shield et Amazon Fire Stick, mais nous ne les supportons pas officiellement.","WEBSITE_MAINPAGE_FAQ_011_H1":"Pouvez-vous ajouter certains contenus à Stremio ?","WEBSITE_MAINPAGE_FAQ_011_P1":"Désolé, nous ne fournissons pas de contenu nous-mêmes, mais plus vous avez installé d\'addons Stremio, plus vous serez en mesure de trouver du contenu.","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio peut-il jouer les liens magnet ?","WEBSITE_MAINPAGE_FAQ_012_P1":"Oui, et il peut également lire des liens HTTP normaux et des fichiers torrents (glisser-déposer).","WEBSITE_MAINPAGE_FAQ_013_H1":"Puis-je télécharger une vidéo et la regarder hors ligne ?","WEBSITE_MAINPAGE_FAQ_013_P1":"La disponibilité hors ligne est une fonctionnalité à venir, mais si vous autorisez Stremio à se mettre en cache sur votre appareil (à partir du panneau de configuration), vous pouvez regarder les vidéos plus tard sans connexion.","WEBSITE_MAINPAGE_FAQ_014_H1":"Rien ne marche, aidez-moi !","WEBSITE_MAINPAGE_FAQ_014_P1":"Êtes-vous sûr d\'avoir installé des addons ? Si oui, vérifiez auprès de notre ${1}centre d\'aide${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Comment Stremio soutient-il ses opérations de développement ?","WEBSITE_MAINPAGE_FAQ_015_P1":"Nous diffusons occasionnellement des publicités non intrusives, mais nous envisageons de passer à un modèle de don.","WEBSITE_MAINPAGE_FAQ_015_P2":"Pour plus de questions, consultez notre ${1}centre d\'aide${2}.","HELP_LEARN_MORE":"Aidez-nous à mieux vous connaître.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Alimentation & Santé","BEAUTY_FASHION":"Beauté & Mode","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & Education","MUSIC":"Musique","TRAVEL":"Voyages","LATE_NIGHT":"Late Night","REALITY":"TV Realité","COMEDY":"Comédie","DIY":"DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continuer","SLOW_LOADING":"CHARGEMENT LENT ?","I_GIVE_UP":"J\'ABANDONNE","LEARN_MORE":"En savoir plus","POOR_SOURCE":"Cette source est difficilement accessible ou votre connexion Internet n\'est pas assez rapide.","PICK_CATEGORIES_ERR":"Vous devez choisir au moins 3 catégories","ADJUST_TIMING":"Ajuster le timing avec ","ADJUST_SIZE":"Ajuster la taille avec ","SEARCH_ANYTHING":"Vous pouvez tout rechercher ...","ALL_CATEGORIES":"Tous","SEARCH_CATEGORIES":"Films, Séries, YouTube & TV","SEARCH_PERSONS":"Acteurs, Réalisateurs et Scénaristes","SEARCH_PROTOCOLS":"HTTP & Liens Magnet","SEARCH_TYPES":"Liens IMDB / TVDB","WATCHED":"Regardé","SHOW_LESS":"Afficher Moins","LAST_SEARCHES":"Dernières recherches","CLEAR_HISTORY":"Effacer l\'historique","CHOOSE_SOME":"CHOISISSEZ-EN CERTAINS:","NO_WEB_REMOTE":"La télécommande Web n\'a pas pu être chargée","STREMIO_OFFLINE":"Stremio est hors-ligne","STREMIO_EXPENSIVE_CONNECTION":"Une connexion réseau coûte cher","USE_DATA":"Utiliser les données","WARNING":"Attention","MORE_INFO":"Plus d\'infos ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Chargement ...","STREMIO_TV_BACK_TO_LANGUAGES":"Retour aux langues","STREMIO_TV_REMOTE":"Télécommande","STREMIO_TV_GO_TO":"Aller à:","STREMIO_TV_OR_SCAN":"ou scanner :","STREMIO_TV_ADDON_INSTRUCTIONS":"Veuillez suivre les instructions afin d\'installer vos addons préférés.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Reprendre le Visionnage","STREMIO_TV_LOADING_BACKGROUND":"Chargement de l\'Arrière-plan","STREMIO_TV_CHECKING_AUTHENTICATION":"Vérification de l\'Authentification","STREMIO_TV_LOADING_BOARD":"Chargement du Tableau","STREMIO_TV_LOGIN_HEADER_LINE_1":"Nous voulons que nos utilisateurs bénéficient de la meilleure expérience personnalisée possible avec notre logiciel.","STREMIO_TV_LOGIN_HEADER_LINE_2":"C\'est pour cette raison que nous vous demandons de bien vouloir créer et/ou vous connecter à votre compte.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Merci de votre compréhension,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"L\'équipe Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Pour utiliser la télécommande Web avec votre Smartphone / Tablette / Bureau:","STREMIO_TV_WIFI_SETUP":"Configuration Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle n\'a pas détecté de connexion Internet.","STREMIO_TV_WIFI_DETAILS_1":"Connectez-vous à :","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Utilisez le mot de passe :","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Ouvrez un navigateur Web avec le lien :","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Utilisez Stremio sur votre téléphone ou votre PC pour installer ou configurer les addons et appuyez sur \\"Synchroniser les Addons\\".","STREMIO_TV_ADDONS_SUBTITLE":"Note: assurez-vous que vous utilisez le même compte Stremio.","STREMIO_TV_ADDONS_SYNC_ADDONS":"Synchroniser les Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Synchronisation des Addons réussie","STREMIO_TV_ADDONS_SYNC_FAILED":"Échec de la synchronisation des Addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Editer l\'URL du serveur","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Entrez l\'URL d\'un serveur de streaming","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Recherche","STREMIO_TV_NAV_HOME":"Accueil","STREMIO_TV_NAV_DISCOVER":"Découvrir","STREMIO_TV_NAV_LIBRARY":"Bibliothèque","STREMIO_TV_NAV_MOVIES":"Films","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Chaînes","STREMIO_TV_NAV_TV":"TV en Direct","STREMIO_TV_NAV_SETTINGS":"Réglages","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Lier un Compte","STREMIO_TV_LOGIN_EXPIRES_IN":"Expire dans","STREMIO_TV_LOGIN_STEP_ONE":"Scannez le code QR ci-dessus ou rendez-vous sur","STREMIO_TV_LOGIN_STEP_TWO":"Connectez-vous à votre compte Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Demander un nouveau lien","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Entrez quelque chose","STREMIO_TV_SEARCH_NO_ADDONS":"Aucun addon n\'a été demandé pour les catalogues !","STREMIO_TV_SEARCH_BUTTON":"Rechercher","STREMIO_TV_SEARCH_KEY_DEL":"Suppr","STREMIO_TV_SEARCH_KEY_SPACE":"Espace","STREMIO_TV_SEARCH_KEY_CLEAR":"Effacer","STREMIO_TV_SEARCH_HISTORY_TITLE":"Historique de recherche","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Vous pouvez rechercher des titres, des acteurs, des chaînes et plus encore...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Effacer l\'historique de recherche","STREMIO_TV_FILTERS_DESCRIPTION":"Choisissez l\'un des filtres ci-dessous","FILTERS":"Filtres","SETTINGS":"Réglages","ACCOUNT":"Compte","LOGOUT":"Déconnexion","THEMES":"Thèmes","PLAYBACK":"Lecture","PLAYBACK_SPEED":"Vitesse de Lecture","AUDIO_TRACKS":"Pistes Audio","VIDEOS":"Videos","SERVER":"Serveur","LINKS":"Liens","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Langue","SIZE":"Taille","DELAY":"Delai","BOLD":"Bold","TEXT_COLOR":"Couleur du Texte","OUTLINE_COLOR":"Couleur de la Bordure","BACKGROUND_COLOR":"Couleur de l\'Arrière-Plan","BACKGROUND_BLUR":"Flouter l\'Arrière-Plan","SEEK_TIME_DURATION":"Durée de la navigation de la lecture","AUTO_PLAY":"Lecture automatique du prochain épisode","PLAY_NOW":"Regarder","MARK_AS_WATCHED":"Marquer comme Regardé","MARK_AS_UNWATCHED":"Marquer comme Non Regardé","REWIND_TO_BEGINNING":"Rembobiner au Début","CONTINUE_WATCHING":"Continuer de Regarder","ALL":"Tous","SECONDS":"secondes","ON":"ON","OFF":"OFF","RELOAD":"Actualiser","EDIT_URL":"Editer l\'URL","NONE":"Aucun","EMBEDDED":"Embarqué","REMOTE_SWITCH_DEVICES":"Changer d\'Appareil","REMOTE_VIDEOS":"Vidéos","REMOTE_ADJUST_TIMING":"Ajuster le chronométrage","REMOTE_ADJUST_SIZE":"Ajuster la taille","REMOTE_COULD_NOT_BE_LOADED":"La télécommande Web n\'a pas pu être chargée","REMOTE_RETRY":"Réessayer","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"Qu\'est-ce que le Stremio ?","FAQ_001_P1":"Stremio est un logiciel de centre multimédia conçu pour le divertissement vidéo avec une facilité d\'utilisation à l\'esprit. Stremio vous permet d\'organiser & regardez votre propre collection de films, séries, chaînes et TV en direct.","FAQ_001_P2":"Stremio collecte le contenu qu\'il vous montre à partir de votre disque local et de notre système d\'addons.","FAQ_001_P3":"Il vous avertira également de la sortie de nouveaux épisodes/vidéos/films qui vous intéressent et vous fournira des recommandations de films.","FAQ_02_H1":"Comment Stremio se compare-t-il à Kodi et Plex ?","FAQ_02_P1":"Nous nous inspirons de ces deux logiciels. Mais nous avons des objectifs différents - Stremio est spécifiquement destiné à la vidéo de divertissement et s\'efforce de devenir la solution grand public pour cela en étant très facile à utiliser.","FAQ_02_P2":"Stremio ne sera jamais aussi personnalisable et riche en fonctionnalités que Kodi et Plex, mais il est nettement plus facile à utiliser. Juste ${1} l\'obtenir et voir ${2} :)","FAQ_03_H1":"Comment Stremio se compare-t-il à Netflix ?","FAQ_03_P1":"Encore une fois, Netflix est l\'une de nos inspirations. Nous nous efforçons d\'obtenir l\'expérience utilisateur de Netflix, ainsi que de nombreux avantages supplémentaires. Mais plus important encore, nous vous donnons la liberté de gérer votre propre bibliothèque et d\'ajouter de nouvelles sources de contenu avec notre système d\'extensions.","FAQ_03_P2":"Cela rend Stremio extensible à l\'infini, donc lorsque vous utilisez Stremio, vous n\'êtes jamais limité au contenu que Netflix décide d\'octroyer via une licence. Par exemple, via Stremio, vous pouvez regarder le contenu de ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo$ {8} et même ${9}Netflix${10}","FAQ_04_H1":"Comment Stremio se compare-t-il à Flipboard ?","FAQ_04_P1":"Nous ne recevons pas souvent cette question, sauf lorsque nous parlons à des start-up :)","FAQ_04_P2":"Stremio est par conception un agrégateur de contenu, ce qui en fait essentiellement Flipboard pour la vidéo. Cela est très évident dans notre section Tableau, qui vous donne des catalogues et des notifications de nouveaux épisodes/nouvelles vidéos en lien avec se que vous suivez, tout comme Flipboard.","FAQ_05_H1":"Comment Stremio se compare-t-il à Popcorn Time ?","FAQ_05_P1":"Stremio et Popcorn Time sont similaires dans l\'interface utilisateur, car il n\'y a pas beaucoup de façons de faire des catalogues de divertissement vidéo correctement :)","FAQ_05_P2":"Mais alors que Popcorn Time se concentre sur la diffusion de torrents à partir de sources spécifiques, Stremio est illimité et est simplement un agrégateur de contenu - il n\'est pas verrouillé dans une source de contenu spécifique.","FAQ_05_P3":"De plus, nous ne fournissons aucun addon torrent par défaut, donc Stremio ne couvre pas le cas d\'utilisation de Popcorn Time avec des fonctionnalités officielles.","FAQ_05_P4":"Une autre différence notable est que Popcorn Time est entièrement open source, tandis que Stremio est ${1} partiellement open source${2}.","FAQ_06_H1":"Allez-vous ajouter ce film/série ?","FAQ_06_P1":"Non désolé :(","FAQ_06_P2":"Comme mentionné dans la plupart des autres questions, Stremio ne fournit aucun contenu par lui-même - tout est ajouté via le système d\'addons. Si vous avez une demande de contenu, vous pouvez utiliser le bouton “Signaler” dans le lecteur, qui enverra un e-mail à l\'auteur de l\'addon que vous utilisez actuellement.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Allez-vous créer un addon pour X ?","FAQ_08_P1":"C\'est tout à fait possible.","FAQ_08_P2":"Si vous avez une idée pour un addon, écrivez-nous à ${1}office@stremio.com${2}, mais assurez-vous que votre idée d\'addon n\'enfreindra aucun droit d\'auteur ou condition d\'utilisation.","FAQ_08_P3":"Pour le moment, les prochaines choses sur notre feuille de route sont des addons pour FandangoNOW, la vidéo à la demande Filmon.tv et Crunchyroll.","FAQ_09_H1":"Est-ce que Stremio utilise BitTorrent ?","FAQ_09_P1":"Oui, Stremio prend en charge BitTorrent comme protocole de streaming. Vous pouvez l\'utiliser soit avec un addon torrent, soit en glissant-déposant un fichier .torrent dans Stremio, soit en collant un lien magnet dans la barre de recherche.","FAQ_09_P2":"Veuillez noter que le seul addon officiel utilisant BitTorrent est ${1}Vodo${2}, qui fournit du contenu indépendant, tous autorisés à être distribués avec BitTorrent.","FAQ_09_P3":"Nous ne prenons pas en charge l\'utilisation d\'addons tierces susceptibles de permettre une violation du droit d\'auteur.","FAQ_10_H1":"Que puis-je regarder dans Stremio avec les addons officielles ?","FAQ_10_P1":"Par défaut, vous pouvez regarder du contenu Filmon.tv, YouTube et Vodo dans Stremio lui-même, avec son lecteur intégré. De plus, nous avons un addon pour Twitch.tv et quelques autres.","FAQ_10_P2":"Cette combinaison offre une sélection de :","FAQ_10_L1":"Chaînes de télévision populaires, fournies par Filmon.tv - par exemple E4, BBC, Bollyworld TV","FAQ_10_L2":"Tout sur YouTube - par exemple BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Films indépendants avec Vodo","FAQ_10_L4":"Diffusions de jeux en ligne avec Twitch.tv","FAQ_10_P3":"De plus, il existe de nombreuses sources de contenu fournies avec Guidebox et les addons Netflix, qui <b>ne sont pas</b> lues entièrement dans Stremio, mais redirigeraient vers le service donné. Par exemple, l\'addon Guidebox vous donnerait une sélection de films que vous pouvez diffuser gratuitement aux États-Unis, à partir de services tels que TubiTV et Crackle.","FAQ_11_H1":"Stremio ne s\'installe pas, que dois-je faire ?","FAQ_11_P1":"Si vous utilisez Windows, essayez ${1}cet programme d\'installation alternatif${2}.","FAQ_11_P2":"Si vous utilisez Mac OS X, sachez que nous ne prenons en charge aucune version antérieure à OS X Mavericks (10.9).","FAQ_11_P3":"Si vous êtes sous Linux, sachez que nous ne prenons en charge que Linux 64 bits (x64) pour le moment.","FAQ_11_P4":"Si vous ne parvenez toujours pas à résoudre votre problème, veuillez nous écrire sur notre ${1}groupe Facebook${2}.","FAQ_12_H1":"Pourquoi mon antivirus se plaint-il ? Est-ce que Stremio est sûr ?","FAQ_12_P1":"Nous vous assurons que Stremio est $ à {1}100% sûr${2}.","FAQ_12_P2":"Votre antivirus se plaint parce que nous incluons de la publicité dans notre programme d\'installation, que certains programmes antivirus reconnaissent comme un logiciel publicitaire.","FAQ_12_P3":"Si vous n\'êtes toujours pas sûr, vous pouvez essayer notre ${1}programme d\'installation alternatif${2}.","FAQ_13_H1":"Comment créer un addon ?","FAQ_13_P1":"Pour commencer, nous vous recommandons de consulter notre ${1}module système d\'addons${2} sur GitHub.","FAQ_13_P2":"Ensuite, vous pouvez suivre le ${1}tutoriel Hello World${2}.","FAQ_13_P3":"Si vous n\'avez aucune compétence en programmation, veuillez publier votre idée sur ${1}la communauté Reddit${2} et contactez-nous avec votre idée d\'extension sur ${3}office@stremio.com${4}.","FAQ_14_H1":"Comment les addons sont-ils publiés ?","FAQ_14_P1":"Lorsque vous créez un addon et un hôte, et que vous placez un champ <b>endpoint</b> dans votre répertoire, qui pointe vers une adresse d\'addon fonctionnelle, l\'addon se publiera automatiquement dans notre ${1}catalogue d\'addons${2} .","FAQ_14_P2":"Cela se produit parce que la partie serveur du module stremio-addons fait automatiquement un appel à notre API pour annoncer l\'addon. Lorsque notre API validera votre <b>endpoint</b> comme un addon valide, il commencera à apparaître dans le catalogue.","FAQ_15_H1":"Puis-je exécuter Stremio dans mon navigateur ?","FAQ_15_P1":"Pas pour le moment, mais ça s\'en vient !","FAQ_15_P2":"Si vous êtes curieux de voir une version Alpha, vous pouvez le voir ici : ${1}alpha4.strem.io${2}. Gardez à l\'esprit que le streaming est désactivé sur cette version alpha. Nous prenons en charge Chrome, Firefox, Opera et Edge.","FAQ_16_H1":"La diffusion sur la télévision ne fonctionne pas/les sous-titres ne fonctionnent pas","FAQ_16_P1":"La diffusion sur téléviseur utilise la technologie DLNA qui varie entre les différentes marques et modèles de téléviseurs. Pour cette raison, nous n\'avons pas la capacité de la tester dans tous les cas, il est donc loin d\'être parfait. Malgré cela, nous travaillons constamment à son amélioration, mais nous ne pouvons pas vous donner une estimation du moment où DLNA commencera à fonctionner correctement sur votre téléviseur.","FAQ_16_P2":"Si vous ne voyez même pas votre téléviseur dans le menu de diffusion, essayez de désactiver votre connexion réseau et de la réactiver (sous Windows, cliquez avec le bouton droit sur le réseau et utilisez Activer/Désactiver), ainsi que de redémarrer votre routeur, votre téléviseur et votre PC..","FAQ_16_P3":"Si vous rencontrez toujours des problèmes, vous pouvez nous aider en envoyant des informations sur la marque et le modèle de votre téléviseur à l\'adresse ${1}office@stremio.com${2}.","FAQ_16_P4":"En attendant, nous vous recommandons Chromecast, que nous supportons très bien, ou simplement brancher votre téléviseur à votre PC avec un câble HDMI.","FAQ_17_H1":"Stremio se fige et/ou plante, que puis-je faire ?","FAQ_17_P1":"Tout d\'abord, si vous utilisez Windows 7 avec l\'antivirus AVG : nous avons un problème avec cette combinaison. Le problème est dans AVG lui-même, et il n\'y a aucun moyen raisonnable de le résoudre de notre côté. Malheureusement, les exceptions ou la désactivation de l\'antivirus ne fonctionneront pas. La seule solution est de remplacer AVG par autre chose.","FAQ_17_P2":"Si ce n\'est pas le problème, mais que vous utilisez toujours Windows, veuillez mettre à jour le dernier service pack et mettre à jour/réinstaller vos pilotes GPU, puis réessayer.","FAQ_17_P3":"Si votre problème n\'est toujours pas résolu, ou si vous utilisez un Mac ou Linux, veuillez nous écrire pour nous signaler les détails exacts du problème sur ${1}notre groupe Facebook${2}.","FAQ_18_H1":"Comment créer un addon ?","FAQ_18_P1":"Pour commencer, nous vous recommandons de consulter notre ${1}système de addons${2} sur GitHub.","FAQ_18_P2":"Ensuite, vous pouvez suivre le ${1}tutoriel Hello World${2}.","FAQ_18_P3":"Si vous n\'avez aucune compétence en programmation, veuillez publier votre idée sur ${1}la communauté Reddit${2} et contactez-nous avec votre idée d\'extension sur ${3}office@stremio.com${4}.","FAQ_19_H1":"Pourquoi Stremio prend-il de l\'espace disque ?","FAQ_19_P1":"Stremio dispose d\'un <b>cache local</b> pour conserver temporairement les fichiers vidéo que vous diffusez.","FAQ_19_P2":"Cela présente deux avantages : premièrement, cela permet à Stremio de pré-charger en mémoire tampon la vidéo à l\'avance afin d\'assurer un streaming plus fluide. Deuxièmement, il conserve les vidéos dans le cache local afin que vous puissiez continuer à les regarder hors ligne.","FAQ_19_P3":"La quantité conservée par Stremio dépend du paramètre <b>Cache</b> dans le panneau Paramètres. Stremio peut conserver jusqu\'à la quantité définie (par exemple 2 Go) sur votre disque, à moins que la vidéo actuellement diffusée ne soit plus grande que cela, auquel cas il doit allouer suffisamment de stockage pour la conserver jusqu\'à ce que vous la regardiez.","FAQ_20_H1":"Où est le dossier contenant les caches ?","FAQ_20_P1":"Sous Windows, c\'est stremio-cache dans le lecteur que vous avez choisi dans les paramètres (ex. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"Sur Mac c\'est \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"Sur Linux, c\'est \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"J\'obtiens l\'erreur \\"Le serveur de streaming est introuvable\\", que puis-je faire ?","FAQ_21_P1":"Si vous obtenez cette erreur, cela signifie l\'une des rares choses suivantes :","FAQ_21_P2":"1) Vous essayez d\'utiliser un module complémentaire soutenu par la source YouTube/BitTorrent, via notre ${1}version Web${2}. Dans ce cas, vous devez installer notre version de bureau à partir de ${3}notre site Web${4}.","FAQ_21_P3":"2) Quelque chose ne va pas avec votre installation Stremio. Dans ce cas, essayez de réinstaller notre dernière version de bureau à partir du ${1}site Web${2}. Si cela ne résout pas le problème, essayez de désactiver les programmes antivirus et les pare-feu, redémarrez votre PC et réessayez. Si cela ne fonctionne pas non plus, écrivez-nous à notre ${3}notre groupe Facebook${4}.","FAQ_22_H1":"Je ne peux pas voir/utiliser la plupart des addons sur iOS","FAQ_22_P1":"En raison de restrictions dans les termes et conditions de l\'App Store d\'Apple, nous avons limité l\'application iOS uniquement à un ensemble particulier d\'addons.","FAQ_22_P2":"Mais rassurez-vous - il y aura plus d\'addons pour iOS à l\'avenir, et nous pouvons également ajouter une intégration qui vous permettra d\'utiliser tous les addons Stremio grâce à la connexion de l\'application iOS au serveur de streaming Stremio."}')},1525:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"סרט","TYPE_series":"סדרה","TYPE_tv":"ערוץ טלויזיה","TYPE_channel":"ערוץ","TYPE_other":"אחר","TYPE_movie_PL":"סרטים","TYPE_series_PL":"סדרות","TYPE_tv_PL":"ערוצי טלויזיה","TYPE_channel_PL":"ערוצים","TYPE_other_PL":"אחרים","TYPE_ALL":"All","VIDEO":"וידאו","BACK":"חזור","MORE":"עוד","DONE":"סיום","COPY":"העתקה","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"גלה","Board":"לוח","Library":"ספרייה","My Library":"הספרייה שלי","Calendar":"לוח שנה","NOTIFICATION_ONLINE":"הנך כרגע מחובר","NOTIFICATION_OFFLINE":"הנך כרגע מנותק","INTERNET_CONNECTION":"חיבור רשת","STORAGE_FULL_TITLE":"אזהרה: כונן האחסון מלא!","STORAGE_FULL_TEXT":"Stremio לא תוכל לשמור את ההגדרות שלך, אפשרויות או פרטי ההתחברות. נא לשקול הסרה והתקנה מחדש של Stremio.","SEARCH":"חיפוש","SEARCH_NO_RESULTS":"לא נמצאו תוצאות","SEARCH_EXPLANATION_CONTENT":"YouTube-חפש סרטים, סדרות ועורצי טלויזיה ו","SEARCH_EXPLANATION_PEOPLE":"חפש שחקנים, בימאים ותסריטאים","SEARCH_PASTE_LINKS":"הדבקת קישורים ישירים ומגנט","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"הוסף לספרייה","REMOVE_FROM_LIB":"הסר מהספרייה","ADDED_TO_LIB":"נוסף לספרייה","REMOVED_FROM_LIB":"הוסר מהספרייה","TRAILER":"קדימון","WATCH_TRAILER":"צפייה בקדימון","WATCH_NOW":"צפה כעת","SHOW":"הצג","SHOW_MOVIE":"הצגת סרט","WATCH_RANDOM":"צפייה אקראית","IMDB_RATING":"דירוג IMDb","YEAR":"שנה","DIRECTOR":"במאי","WRITER":"כותב","LEAD_ACTORS":"שחקנים ראשיים","CAST":"משתתפים","CREW":"צוות","SHOW_MORE_CAST":"הצג יותר","AIRED":"תאריך שידור","SEASONS":"עונות","GENRE":"סוגה","CATALOG":"קטלוג","SUMMARY":"תקציר","SHOW_MORE":"להציג יותר","SIMILAR":"דומה","UPCOMING":"בקרוב","ENDED":"הסתיים","DURATION":"אורך","FEATURED":"מומלצים","METADATA":"מידע","CATEGORY":"קטגוריה","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"חפש וידאו","SEARCH_PLACEHOLDER":"חיפוש או שימוש בקישור מגנט","ADDON":"תוסף","ADDONS":"תוספים","OFFICIAL":"רשמי","ADDONS_OFFICIAL":"תוספי סטרימיו רשמיים","ADDONS_POPULAR":"פופולרי באזור שלך","ADDON_FREE":"חינם","ADDON_PEERED":"משותף","ADDON_SUBSCRIPTION":"הרשמה","ADDON_STREAM_GEORESTRICTED":"לא זמין באזורך","ADDON_STREAM_OFFLINECACHE":"מטמון לא מקוון","ADDON_STREAM_LOCALFILE":"קובץ מקומי","SHARE_ADDON":"שתף את ההרחבות","AVAILABLE_STREAMS":"מקורות זמינים","NO_STREAM":"לא נמצאו מקורות","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"לעוד אפשרויות הזרמה, אנא התקינו תוספים נוספים","STREAM_NOT_SUPPORTED":"ההזרמה שנבחרה אינה נתמכת בפלטפורמה זו.","ADDON_CATALOGUE":"כל התוספים »","ADDON_CATALOGUE_MORE":"עוד תוספים »","REPO_ADDED":"מקור נוסף","ADDON_REPO_EXIST_ERR":"מקור תוספים זה כבר קיים","ADDON_REPO_ERR":"ארעה שגיאה בזמן הוספת מקור","ADDON_ADD_ERR":"ארעה שגיאה זמן הוספת תוסף","ERR_ADDON_PROTECTED":"תוסף מוגן","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"משהו השתבש - התחברות נכשלה","ERR_NOT_COLLECTION_URL":"לא קישור לאוסף","ERR_NOT_ADDON_URL":"לא כתובת תוסף","ERR_DETECTFROMURL":"אין אפשרות לזהות בקישור","ADDON_DUPLICATE_WARNING":"אזהרה: כפילות תוסף","ADDON_COLLECTION_SET_FAILED":"אוסף תוספים נכשל","SETTINGS_DATA_EXPORT":"ייצוא מידע","ADDON_PULL_FAILED":"משיכת התוסף נכשל","REFRESH_ON_CLICK":"נא ללחוץ כאן כדי לנסות שוב","STILL_IN_THEATER":"הסרט עדיין בקולנוע","WATCH_IN_CINEMA":"צפה בו בקולנוע","IN_THEATER":"בקולנוע","GET_TICKETS":"קבל כרטיסים","UPCOMING_EPISODE":"הפרק הבא","UPCOMING_EPISODE_MESSAGE":"פרק זה ישודר בתאריך","MISSING_DATE_EPISODE":"תאריך הפרק חסר","MISSING_DATE_EPISODE_MESSAGE":"פרק זה כנראה טרם שודר","CHANNEL_NOT_SCRAPED":"ערוץ זה עדיין לא מוכן.<br>אנא חזור בעוד כמה דקות.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"הוסף לסיפריה וקבל התרעה מתי שיהיה מוכן.","GET_NOTIFIED_WHEN_AVAILABLE":"אתה תקבל התרעה שהוא יהיה מוכן.","WARNING_STREAMING_SERVER":"אזהרה: שרת שידור מקומי לא נמצא. שידור מ-YouTube ומ-BitTorrent אינו אפשרי.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"אזהרה: וידאו זה אינו נתמך עם החומרה שיש ברשותך. שימו לב, ההפעלה עשויה להיות איטית.","PLAYER_ERROR":"אופס, שגיאת נגן","PLAYER_ERROR_LOOKSLIKE":"נראה כי","PLAYER_ORIENTATION":"כיוון הנגן","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"נעול","PLAYER_ORIENTATION_SENSOR_SHORT":"חיישן","PLAYER_ORIENTATION_LANDSCAPE":"כיוון הנגן נעול לתצוגה רחבה","PLAYER_ORIENTATION_SENSOR":"כיוון הנגן אוטומטי (חיישן)","PLAYER_PLAYBACK_SPEED":"מהירות ניגון","PLAYER_PLAYBACK_ERROR":"תקלה במהירות ניגון, נא לנסות שוב","PLAYER_PLAYBACK_ERROR_UNKNOWN":"שגיאה לא ידועה","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"חי","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"הסתרה","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"צפייה כעת","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"מזרים מ","CASTING_TO":"משדר ל","NETWORK_STATUS":"מצב הרשת","STREAM_SPEED":"מהירות זרימה:","STREAM_BUFFERED":"נאגר:","PEERS_INFO":"פרטי חיבורים","PEERS_ACTIVE":"פעילים:","PEERS_CONNECTED":"מחוברים:","PEERS_WAITING":"ממתינים:","TRANSCODING_WARNING":"אזהרה: מקודד וידאו.","STREAM_LOADING":"טוען...","PLAYING_LOCAL":"מנגן מקובץ מקומי","PLAYING_CACHE":"מנגן ממטמון","WRONG_SUBS":"כתוביות שגויות?","ERR_SUBS_LOADING_TITLE":"שגיאה בטעינת כתוביות","ERR_SUBS_LOADING":"טעינת כתוביות נכשלה: זאת יכולה להיות בעיה של תוסף, או חיבור לאינטרנט","WARN_FOLLOWING_SUB_ADDONS_FAILED":"תוספי הכתוביות הבאים כשלו","ERR_CASTING_UPDATE_TITLE":"לא ניתן לעדכן מידע של מכשיר המשודר: שרת שידור ככל הנראה כבוי","CHOOSE_DEVICE":"בחר מכשיר לצפות בו","NO_CAST_DEVICES":"אין מכירים להזרמה.","NO_SETTINGS":"אין הגדרות זמינות.","PHONE_TABLET":"סלולארי / טאבלט","SUBTITLES":"כתוביות","SUBTITLES_CHANGE":"שנה כתוביות עבור","SUBTITLES_CHANGE_NONE":"לא קיימים כתוביות אחרות לשפה זו, מתנצלים.","SUBTITLES_CHANGE_ACIVE":"כרגע כתוביות #{{subtitlesDialog.activeIdx + 1}} מופעלות. לחץ \\"המשך\\" להפעלת הכתוביות #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"לחילופין,","SUBTITLES_ADJUST_DELAY":"שנה השהיית כתוביות:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"או להשתמש במקשים <span>G</span> / <span>H</span> בזמן ניגון לשינוי.","SUBTITLES_ADJUST_DELAY_TIP":"טיפ: באפשרותך להשתמש במקשים <span>G</span> / <span>H</span> בזמן ניגון לשינוי.","SUBTITLES_DELAY":"השהיית כתוביות:","SUBTITLES_LOADING":"טוען כתוביות...","SUBTITLES_UNAVAILABLE":"אין כתוביות חיצוניות זמינות","SUBTITLES_DISABLED":"מבוטל","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"עונה","EPISODE":"פרק","SPECIAL":"Special","SORT":"מיון","SORT_BY":"מיון לפי","FILTER":"סינון","SORT_TRENDING":"פופולרי","SORT_RECENT":"חדש","SORT_ALPHABET":"א-ת","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"דירוג","SORT_WATCHED":"נצפה","SORT_YEAR":"שנה","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"חדש בשבילך","New Episodes":"פרקים חדשים","New Videos":"סרטים חדשים","Recommendations":"המלצות","LIBRARY_RESUME":"המשך","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"פרטים","LIBRARY_RESUME_DISMISS":"המשך","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"מומלץ","DISCOVER_TOP":"מומלץ","DISCOVER_OSCAR":"זוכי אוסקר","DISCOVER_WARNING_TITLE":"אבוי!","DISCOVER_EMPTY_CATALOG":"תוסף זה החזיר תוכן ריק.","DISCOVER_ADULT_WARNING":"תוכן זה מיועד למבוגרים. האם גילך הוא 18 ומעלה?","DISCOVER_NOADDON_WARNING":"אזהרה: אין תוסף סטרימיו פעיל עבור סוג זה. מציג פריטים שמורים, כלום לא ישמר כאן.","DISCOVER_LOAD_ERR":"גילוי: טעינת קטלוג נכשלה","DISCOVER_ADDON_UNINSTALLED":"תוכן זה אינו זמין יותר, ייתכן שהתוסף הוסר.","UNINSTALL_THIS_ADDON":"הסרת תוסף זה","ERR_ADDON_NOT_INSTALLED":"תוסף זה אינו מותקן. האם להתקין אותו כעת?","DETAIL_RECEIVE_NOTIF_SERIES":"קבלת התראות עבור פרקים חדשים","DETAIL_RECEIVE_NOTIF_VIDEOS":"קבלת התראות עבור סרטים חדשים","SIDEBAR_SHOW_STREAMS":"הצגת זרימות","RELAUNCH":"הפעל מחדש כעת!","UPGRADE":"עדכן לגרסה האחרונה של סטרימיו","RELOAD_UI":"טעינה מחדש של ממשק המשתמש","MANUAL_UPDATE_TITLE":"עדכון גרסת Stremio","MANUAL_UPDATE_LINE1":"גרסה זו של Stremio אינה עדכנית והשימוש בה אינו מומלץ.","MANUAL_UPDATE_LINE2":"נא לעדכן בהקדם האפשרי.","BUTTON_UPDATE_LATTER":"לא כעת","BUTTON_UPDATE_NOW":"עדכון","ANONYMOUS_USER":"משתמש אנונימי","DONT_HAVE_ACC":"אין לך חשבון?","HAVE_ACC":"כבר יש לך חשבון?","PASSWORD":"סיסמה","PASSWORD_CONFIRM":"אישור סיסמה","EMAIL":"דואר אלקטרוני","FB_LOGIN":"התחבר באמצעות פייסבוק","FB_NOTHINGSHARED":"שום דבר לא ישותף ללא רשותך","FB_NOPOST":"לא נשלח על שמך שום דבר","OR":"או","I_ACCEPT":"אני מסכים","I_ACCEPT_BY_CLICKING":"על ידי לחיצה למעלה, אני מאשר את","TOS":"תנאי המשימוש","MUST_ACCEPT_TERMS":"חובה לאשר תנאי שימוש","PASSWORDS_NOMATCH":"סיסמאות לא תואמות","SIGN_UP":"הרשמה","SIGN_UP_EMAIL":"הרשמה עם כתובת מייל","CLICK_TO_SIGN_UP":"לחץ כאן להרשמה.","LOG_IN":"התחברות","LOG_OUT":"התנתקות","EXIT_FULLSCREEN":"יציאה ממצב מסך מלא","ENTER_FULLSCREEN":"כניסה למצב מסך מלא","PLAY_URL_MAGNET_LINK":"ניגון קישור URL/Magnet","HELP_FEEDBACK":"עזרה ומשוב","TERMS_OF_SERVICE":"תנאי שימוש","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"אודות Stremio","USER_PANEL":"לוח בקרת משתמש","LOGIN_LABEL":"Login","GUEST_LOGIN":"התחברות כאורח","GUEST_LOGIN_NOTICE":"התחברות כאורח אינה מומלצת. התחברות רגילה מאפשרת לStremio לסנכרן את הספריות שלך, לקבל התראות על סדרות ווידאו האהובים עליך. האם אתה בטוח שתרצה להמשיך?","GUEST_LOGIN_NOTICE_2":"התחברות כאורח אינה מומלצת - לא יסונכרנו התראות בספריה או הלוח שלך, שאלו תכונות של Stremio. האם אתה בטוח שברצונך להמשיך?","CLICK_HERE":"לחץ כאן","WRONG_PASSWORD":"סיסמה שגויה, במקרה ששכחת את הסיסמה,","SET_A_PASS":"קבע סיסמה","RESET_PASSWORD":"איפוס סיסמה","FORGOT_PASSWORD":"שכחת סיסמה?","EMAIL_USED_WITH_FB":"כתובת דואר אלקטרוני זה שומש בחיבור בעזרת פייסבוק.","INVALID_EMAIL":"נא לכתוב כתובת מייל תקינה","INVALID_PASSWORD":"נא לכתוב סיסמה תקינה","CONN_ERR":"בעיית התחברות - אנא נסו מאוחר יותר.\\n\\nאם הבעיה ממשיכה, נטרלו את חומת האש/אנטי וירוס שלכם (במיוחד Bitdefender).","IMPORT_FROM_GUEST":"ייבוא ספריה מחשבון האורח שלך","RECEIVE_UPDATES_EMAIL":"-קבל עדכונים לדואר האלקטרוני מStremio","LOGIN_FAILED":"התחברות כשלה.","SIGNUP_FAILED":"הרשמה כשלה.","SEARCH_FAILED":"חיפוש כשל","EMAIL_USED":"כתובת מייל זו כבר בשימוש.","WAITING_FB_LOGIN":"מתחבר עם פייסבוק...","EXTERNAL_PLAYER_TITLE":"שימוש בנגן חיצוני","EXTERNAL_REMEMBER_PLAYER":"האם לזכור בחירה זו","EXTERNAL_ALWAYS_PLAY":"כן","EXTERNAL_ONLY_ONCE":"לא","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"ספרו לנו מה אתם אוהבים","INTRO_TASTE_LONG":"תספרו לנו במה תרצו לצפות","INTRO_TASTE_PICK":"בחירת {{interestsRemaining}} נושאים","INTRO_TASTE_PICK_MORE":"בחירת {{interestsRemaining}} נושאים נוספים","INTRO_TASTE_HELP_US":"עזרו לנו ללמוד עליכם עוד.","INTRO_TASTE_CHOOSE_THESE":"בחירה מהרשימה:","INTRO_TASTE_CHOOSE_MIN":"נא לבחור לפחות 3 קטגוריות","INTRO_TASTE_CHOOSE_MIN_ERR":"חובה לבחור לפחות 3 קטגוריות!","INTRO_TASTE_LIFESTYLE":"סגנון חיים","INTRO_TASTE_SPORTS":"ספורט","INTRO_TASTE_FOOD_HEALTH":"אוכל ובריאות","INTRO_TASTE_BEAUTY_FASHION":"יופי ואופנה","INTRO_TASTE_NEWS":"חדשות","INTRO_TASTE_GAMING":"משחקים","INTRO_TASTE_SCIENCE_EDU":"מדעים וחינוך","INTRO_TASTE_MUSIC":"מוסיקה","INTRO_TASTE_TRAVEL":"טיולים","INTRO_TASTE_LATE_NIGHT":"תוכנית אירוח","INTRO_TASTE_REALITY":"ריאליטי","INTRO_TASTE_COMEDY":"קומדיה","INTRO_TASTE_DIY":"עשה זאת בעצמך","INTRO_TASTE_TECH":"טכנולוגיה","INTRO_TASTE_CINEMA":"קולנוע","ADDON_NOT_SUPPORTED":"התוסף הנבחר אינו תומך בפלטפורמה זו.","ADDON_DISCLAIMER":"שימוש בתוספים צד שלישי תמיד יהיו תחת אחריותך ותחת החוק הקיים באזור מגוריך.","ADDON_ACTIVATE":"הפעלת תוסף זה?","ADDON_REPO_ADD":"כתובת מקור התוסף","ADDON_ADD":"הוספה","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"מה חדש","BUTTON_CONTINUE":"המשך","BUTTON_ACTIVATE":"הפעל","BUTTON_ACTIVATED":"מופעל","BUTTON_CANCEL":"ביטול","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"התעלם מהכל","BUTTON_VIEW_ALL":"הצגת הכל","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"הספרייה שלך נראית ריקה. גלו כמה זה שימושי :) ","HOW_START":"ככה תוכל להתחיל:","LIB_EMPTY_CAL":"לוח השנה מציג סדרות בספרייה שלך","HOW_START_CAL":"כך אתה יכול להוסיף סדרות:","LIB_EMPTY_BOARD":"הלוח מציג התראות והמלצות אשר קשורים לספרייה שלך.","HOW_START_BOARD_WAIT":"אנא הוסף סדרות וערוצים לספרייה שלך ותן לנו כמה דקות לארגן את הכל :)","HOW_START_BOARD":"ככה אתה יכול להוסיף סדרות וסרטים אליו:","IMPORT_FB":"יבא דברים שאתה אוהב מ<span>פייסבוק</span>","IMPORT_TRAKT":"ייבוא ספריה מאתר <span>Trakt</span>","IMPORT_DISCOVER":"מצא דברים מעניינים דרך טאב ה<span>גלה</span>","IMPORT_DISK":"יבא סרטים או סדרות אשר נמצאים ב<span>דיסק המקומי</span>","PLEASE_CREATE_ACC":"אנא <u>צור חשבון</u> כדי לאפשר סנכרון ספרייה ולוח.","IMPORT_DISCOVER_SIGNUP":"הירשמו ותמצאו דברים מעניינים <span>בגילוי</span>","IMPORT_DISK_SIGNUP":"הירשמו וייבאו סרטים וסדרות שיש ברשותכם <span>בכונן מקומי</span>","LIB_EMPTY_CLOUD":"ספריה בענן","LIB_EMPTY_CLOUD_DESC":"ענן אישי לסנכרון סיפריה עם כל המכשירים","LIB_EMPTY_EARLY":"לפני כולם","LIB_EMPTY_EARLY_DESC":"קבלת התראות על פרקים חדשים","LIB_EMPTY_PERSONAL":"אישי","LIB_EMPTY_PERSONAL_DESC":"קבלת המלצות אישיות","LIB_EMPTY_CALENDAR_DESC":"קביעת לוח שנה לצפיה האישית שלכם","LIB_EMPTY_ALL":"הירשמו כדי לקבל את כל זה:","LIB_EMPTY_BEST":"הירשמו בכדי לקבל את הטוב ביותר מStremio","LIB_EMPTY_OTHER":"הרשמה בכדי להפעיל לוח שנה לצפיה ועוד דברים מגניבים","CALENDAR_ADDED":"הלוח שנה של Stremio התווסף ללוח שנה של שולחן העבודה.","CALENDAR_ADDED_MSG":"אם זה לא עובד, אנא השתמש בקישור כדי להוסיף את לוח השנה בצורה ידנית","TRAKT_EXPIRED":"קישוריות עם Trakt פגה, אנא עבור להגדרות והתחבר שוב","TRAKT_REQUIRES_LOGIN":"Trakt שגיאה","TRAKT_REQUIRES_LOGIN_MSG":"חובה להתחבר","SETTINGS_LABEL":"הגדרות","SETTINGS_NAV_GENERAL":"כללי","SETTINGS_NAV_PLAYER":"נגן","SETTINGS_NAV_STREAMING":"תזרימים","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"הפעל בעת הפעלת המחשב","SETTINGS_VLC_DEFAULT":"לנגן עם vlc","SETTINGS_UI_LANGUAGE":"שפת ממשק","SETTINGS_FULLSCREEN_EXIT":"יש ללחוץ על Escape כדי לצאת ממצב מסך מלא","SETTINGS_GAMEPAD":"הפעלת תמיכה בבקר משחק","SETTINGS_CLOSE_WINDOW":"סגירת היישום עם סגירת החלון","SETTINGS_SUBTITLES_LANGUAGE":"שפת כתוביות ברירת מחדל","SETTINGS_SUBTITLES_SIZE":"גודל כתוביות ברירת מחדל","SETTINGS_SUBTITLES_BACKGROUND":"צבע רקע עבור כתוביות","SETTINGS_SUBTITLES_COLOR":"צבע כתוביות","SETTINGS_SUBTITLES_COLOR_OUTLINE":"צבע מתאר עבור כתוביות","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"צבע רקע עבור כתוביות","SETTINGS_SEEK_KEY":"מקשי החצים כדי לנוע בזמן","SETTINGS_SEEK_KEY_SHIFT":"מקשי החצים כדי לנוע בזמן כאשר המקש Shift מוחזק","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"לנגן אוטומטית את הפרק הבא","SETTINGS_NEXT_VIDEO":"הצגת הודעה לתחילת הפרק הבא","SETTINGS_NEXT_VIDEO_TRIGGER":"משך הצגת ההודעה על הפרק הבא:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"שינוי גודל אוטומטי של החלון לפני תחילת ניגון","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"כתובת שרת הזרמה: ","SETTINGS_SERVER_AVAILABLE":"שרת הזרמה זמין.","SETTINGS_SERVER_UNAVAILABLE":"שרת הזרמה אינו זמין.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"כתובת הזרמה ב־HTTPS: ","SETTINGS_USE_BETA":"תמיד להשתמש ב Beta האחרונה","SETTINGS_IMPORT_FB":"ייבא מפייסבוק","SETTINGS_IMPORT_DISK":"ייבא מדיסק מקומי","SETTINGS_IMPORT_TRAKT":"ייבא מ-Trakt","SETTINGS_PAUSE_MINIMIZED":"השהיית ניגון כאשר החלון ממוזער","SETTINGS_HWDEC":"קידוד מואץ בחומרה","SETTINGS_BACKGROUND":"רקע נגן","SETTINGS_SUBSCRIBE_CALENDAR":"הרשמה ללוח שנה","SETTINGS_REQ_EXPORT":"בקשה לייצוא מידע","SETTINGS_ACC_DELETE":"בקשה להסרת חשבון","SETTINGS_CHANGE_PASSWORD":"שנה סיסמה","SETTINGS_TOS":"תנאי שימוש","SETTINGS_SUPPORT":"צור קשר עם התמיכה","SETTING_LANGUAGE":"שפה","SETTINGS_TRAKT":"Trakt שילוב","SETTINGS_TRAKT_LOGOUT":"התנתקות מ-Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"סריקת קוד QR לשימוש מרוחק","SETTINGS_DESKTOP_NOTIFICATIONS":"התראות שולחן עבודה","SETTINGS_DATA_SAVER":"חיסכון משאבים","SETTINGS_LANGUAGE_INTERFACE":"מראה","SETTINGS_LANGUAGE_SUBS":"כתוביות ברירת מחדל","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"בחירה אוטומטית בפס הקול","SETTINGS_DEFAULT_AUDIO_TRACK":"פס קול ברירת מחדל","SETTINGS_ACCOUNT":"חשבון","SETTINGS_VERSION":"גרסה","SETTINGS_MPV_WINDOW":"הפעלת נגן בחלון חיצוני (מתקדם)","SETTINGS_PLAY_IN_EXTERNAL":"תמיד התחלת ניגון בנגן חיצוני","SETTINGS_STORAGE_BUTTON":"ניקוי מטמון מקומי","SETTINGS_STORAGE_MODAL_TITLE":"האם אתה בטוח?","SETTINGS_STORAGE_MODAL_MESSAGE":"זה ינקה את המטמון המקומי וינתק אותך.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"אוטומטי","SETTINGS_HW_DISABLED":"מבוטל","SETTINGS_HW_ACCELERATED":"האצת קידוד","SETTINGS_HW_FULL":"האצה מלאה","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"יציאה","CONNECTED":"מחובר","AUTHENTICATE":"אימות","CACHING":"מטמון","SETTINGS_CACHING_DRIVE":"בחר כונן למטמון","ENABLE_LOCAL_FILES_ADDON":"הפעלת תוסף גישה לקבצים מקומיים (נדרשת הפעלה מחדש)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"הפעלת חיבורי HTTPS מרוחקים","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"מידע זמני","MAGNET_PARSING":"מנתח קישור מגנט","January":"ינואר","February":"פברואר","March":"מרץ","April":"אפריל","May":"מאי","June":"יוני","July":"יולי","August":"אוגוסט","September":"ספטמבר","October":"אוקטובר","November":"נובמבר","December":"דצמבר","Monday":"שני","Tuesday":"שלישי","Wednesday":"רביעי","Thursday":"חמישי","Friday":"שישי","Saturday":"שבת","Sunday":"ראשון","Action":"פעולה","Comedy":"קומדיה","War":"מלחמה","Family":"משפחה","Animation":"אנימציה","Adventure":"הרפתקה","Fantasy":"פנטזיה","Crime":"פשע","Mystery":"מיסתורי","Romance":"רומנטיקה","Drama":"דרמה","Horror":"אימה","Thriller":"מותחן","Sci-Fi":"מדע בדיוני","Music":"מוזיקה","Biography":"ביוגרפיה","Documentary":"תיעודי","Sport":"ספורט","Musical":"מוזיקלי","Western":"מערבונים","Film-Noir":"סרט-נואר","News":"חדשות","History":"היסטוריה","Game-Show":"שעשועונים","Reality-TV":"ריאלטי","Talk-Show":"טוק שואו","Film & Entertainment":"סרטים ובידור","Gaming":"גיימינג","From TV":"מהטלויזיה","Lifestyle":"לייף סטייל","Science & Education":"מדע וחינוך","Cooking & Health":"בישול ובריאות","Beauty & Fashion":"יופי ואופנה","Sports":"ספורט","News & Politics":"חדשות ופוליטיקה","How-to & DIY":"עשה זאת בעצמך","Tech":"טכנולוגיה","Automotive":"רכב","Causes & Non-Profits":"ללא מטרות רווח","Movies":"סרטים","Uk Live Tv":"טלויזיה לייב בריטית","Fashion":"אופנה","Business News Radio":"רדיו חדשות עסקים","Business Tv":"טלויזיה עסקית","Cars & Auto":"רכבים","Comedy Radio":"רדיו קומדיה","Lifestyle Radio":"רדיו לייף סטייל","News Tv":"טלויזית חדשות","Food And Wine":"אוכל ויין","Latino Tv":"טלויזיה לטינית","Shopping Tv":"טלויזיית קניות","Religion":"דת","Kids":"ילדים","Body & Soul":"גוף ונפש","Education":"חינוך","Indian Tv":"טלויזיה הודית","Extreme Sports":"ספורט אקסטרים","Middle Eastern Tv":"טלויזיה מזרח תיכונית","Celebrity Tv":"טלויזיית סלבריטי","Science Tv":"טלויזיית מדע","Bikini babe":"ביקיני","Outdoors":"באוויר הפתוח","German Tv":"טלויזיה גרמנית","French Tv":"טלויזיה צרפתית","Italian Tv":"טלויזיה איטלקית","Gamer Tv":"טלויזיית גיימרים","Travel":"טלויזיית טיולים","Asian Tv":"טלויזיה אסייתית","Entertainment":"בידור","News Radio":"רדיו חדשות","Music Radio":"רדיו מוזיקה","Language Learning":"לימוד שפות","Science Radio":"רדיו מדע","Tech Radio":"רדיו טכנולוגיה","Science & Technology Vod":"מדע וטכנולוגיה VOD","new video":"וידאו חדש","new episode":"פרק חדש","new movie":"סרט חדש","recommended":"מומלצים","we recommend":"אנו ממליצים","offer of the day":"הצעת היום","news":"חדשות","music video":"קליפ מוסיקה","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"התעלמות מהתראות","CTX_DISMISS_ALL":"התעלמות מהכל","CTX_SHARE":"שתף","CTX_COPY_SHARE_LINK":"העתקה ושיתוף קישור","CTX_COPY_MAGNET_LINK":"העתקת קישור magnet","CTX_COPY_STREAM_LINK":"העתקת קישור הזרמה stream","CTX_DOWNLOAD_VIDEO":"הורדת וידאו זה","CTX_DOWNLOAD_SUBS":"הורדת כתוביות","CTX_VIEW_ON_YOUTUBE":"צפיה בYouTube","CTX_SHOW":"הצג","CTX_PLAY":"הפעלה","CTX_PLAY_IN":"הפעלה בתוך","CTX_PLAY_ON":"הפעלה על","CTX_WATCH_ON":"צפה ב","CTX_WATCH":"צפה","CTX_WATCHED":"נצפה","CTX_WATCH_BEGINNING":"צפה מההתחלה","CTX_WATCH_MOBILE":"צפה במכשיר נייד","CTX_REWIND":"אחורה להתחלה","CTX_MARK_WATCHED":"סמן כנצפה","CTX_MARK_NON_WATCHED":"סמן כלא נצפה","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"סימון כל הבאים כנצפו","CTX_UNMARK_REST":"סימון כל הבאים שלא נצפו","CTX_RECEIVE_NEW_NOTIF":"קבל התראות חדשות","CTX_REMOVE_CACHE":"הסר ממטמון","CTX_REMOVE_CACHE_EP":"הסר פרק ממטמון","CTX_OPEN_CONTAINING":"פתח תיקייה מכילה","CTX_REMOVE":"הסר מהספריה","CTX_AVAILABLE_OFFLINE":"זמין במצב לא מקוון","CTX_PAUSED":"השהה","CTX_ALWAYS_ON_TOP":"תמיד למעלה","CTX_FULLSCREEN":"מסך מלא","CTX_WRONG_SUBS":"כתוביות שגויות?","CTX_REPORT_ISSUES":"דווח על בעיה","CTX_COPY":"העתק","CTX_PASTE":"הדבק","CTX_CLEAR":"נקה","CTX_CLEAR_RECENT_SEARCHES":"נקה חיפושים אחרונים","HELLO_THERE":"היי שם","HOPE_YOU_ENJOY":"אנו מקווים שאתם נהנים מהתוכנה Stremio ושהיא אחת המועדפות שלכם!","WHO_ARE_WE":"מי אנחנו? אנחנו צוות מאחורי זה - שני בחורים שעובדים קשה מאוד כבר 3 שנים, עם מטרה אחת - לשפר את המוצר עוד ועוד.","SUPPORT_US":"אם אתם נהנים מStremio, ו-Stremio בעל ערך עבורכם - תתמכו בנו!","SPREAD_THE_WORD":"תשתפו עם חברים שלכם, הפיצו את המילה על Stremio","MORE_PEOPLE":"אמרו לעוד אנשים להשתמש ב-Stremio, וכך נשתפר!","SEND_A_LINK":"או שליחת קישור אל האתר שלנו","TIP_LOCALFILES":"טיפ: אפשר לגרור ולשחרר מדיה מתיקיה אל תוך Stremio","ADDON_MY":"תוספים שלי","ADDON_COMMUNITY":"תוספים של הקהילה","ADDON_OFFICIAL":"תוספים רשמיים","ADDON_REPOS":"מקורות תוספים","ADDON_SEARCH":"חיפוש תוספים","ADDON_INSTALL":"התקן","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"הסר התקנה","ADDON_UPGRADE":"שדרוג","ADDON_INSTALLED":"מותקן","ADDON_INSTALLED_MSG":"התוסף מותקן!","ADDON_UPGRADED_MSG":"התוסף משודרג!","ADDON_UNKNOWN":"לא ידוע","ADDON_ERR":"שגיאה בהתקנת תוסף!","ADDON_DISCONNECTED":"מנותק","ADDON_APP_MISSING":"אפליקציה למקור זה אינה מותקנת. להתקין אותה?","ADDON_APP_INSTALL":"התקן כעת","ADDON_PAGE":"עמוד תוסף","ADDON_TOP_CONTENT":"תוכן הכי טוב מתוסף זה","ADDON_PROVIDES":"ספקים","ADDON_WATCH":"צפיה ב-#{types} כעט!","ADDON_WATCH_FREE":"צפה עכשיו ב-#{types} בחינם כעט!","ADDON_ADDON":"תוסף","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"עוד #{types} בגילוי","ADDON_PROVIDES_STREAMS":"צפיה ב-#{types}","ADDON_PROVIDES_STREAMS_FREE":"צפיה ב-#{types} בחינם","ADDON_PROVIDES_SUBTITLES":"כתוביות עבור #{types}","ADDON_CANTDETECT":"Stremio לא נמצא עובד, אז לא הצלחנו למצוא את התוספים המותקים.","ERR_NO_META":"לא נמצא מידע על זה ","ERR_GETTING_META":"שגיאה בהבאת מידע עבור זה.","ERR_CANT_PARSE_MAGNET":"לא ניתן לנתח קישור מגנט","ERR_NO_MAGNET_INFOHASH":"אין מידע hash עבור מגנט","ERR_NO_FILE_PATH":"אין אפשרות לשלוח את הבקשה ללא קישור אל הקובץ","ERR_NO_TORRENT":"אין טורנט חוזר","ERR_NO_SUPPORTERD_FILES":"קבצים לא נתמכים נמצאו","ERR_OPENING_FILES":"אין אפשרות לפתוח קבצים חיצוניים","ERR_INVALID_LINK":"קישור לא תקין","ERR_REGISTERED_ONLY":"אפשרות זו פעילה רק לרשומים בלבד.","ERR_CLIPBOARD":"לא ניתן לנגן מלוח הגזירים","ERR_CLIPBOARD_READ":"לא ניתן לקרוא את לוח הגזירים בפלטפורמה זו","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"המשך לצפות","BOARD_EXPLANATION_RECOMMENDATIONS":"סרטים נבחרים במיוחד בשבילך.<br />הסרט הזה הוא דוגמא להמלצה.","BOARD_EXPLANATION_EPISODES":"פרקים חדשים של הסדרות האהובות עליך יופיעו כאן.<br />הוסף סדרות שאתה עוקב אחריהן לספריה שלך.","BOARD_EXPLANATION_VIDEOS":"פרקים חדשים של הערוצים האהובים עליך יופיעו כאן.<br />הוסף ערוצי YouTube שאתה עוקב אחריהן לספריה שלך.","WEBSITE_SLOGAN_WATCH":"צפיה מיידית","WEBSITE_SLOGAN_ALL":"כל תוכן הוידאו במקום אחד להנאה מלאה","WEBSITE_SLOGAN_NEW":"כל מה שאתה יכול לצפות","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"צפה מ","WEBSITE_DOWNLOAD":"הורד עכשיו","WEBSITE_DOWNLOAD_FOR":"כעט מוריד עבור","WEBSITE_IS_DESKTOP":"Stremio היא תוכנת שולחן עבודה, פתח עמוד זה להורדה אל המחשב האישי","WEBSITE_DESKTOP_DEMO_VID":"הדגמת שולחן עבודה","WEBSITE_PAGE_HOME":"בית","WEBSITE_PAGE_FEATURES":"תכונות","WEBSITE_PAGE_ADDONS":"הרחבות","WEBSITE_PAGE_TECH":"טכנולוגיה","WEBSITE_PAGE_CREATE_ADDON":"צור הרחבה","WEBSITE_PAGE_CONTACTS":"צור קשר","WEBSITE_PAGE_BLOG":"בלוג","WEBSITE_TYPE_movie":"סרטים","WEBSITE_TYPE_series_PL":"סדרות","WEBSITE_TYPE_tv":"שידורים חיים","WEBSITE_TYPE_channel":"ערוצים","WEBSITE_STREMIO_WHAT_IS":"Stremio היא אפליקציה שעוזרת לך לארגן ולצפות מייד בסרטונים, סרטים, סדרות טלוויזיה וערוצי טלוויזיה האהובים עליך.","WEBSITE_FEATURES_WATCH":"צפיה מיידית באיכות HD","WEBSITE_FEATURES_WATCH_DETAIL":"לחץ ונגן את הסרטונים, סרטים, סדרות טלוויזיה וערוצי טלוויזיה האהובים עליך.","WEBSITE_FEATURES_SUBS":"כתוביות אוטומטיות","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio בוחרת לבד את הכתוביות על בסיס שפה שנבחרה.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"נגינה בטלויזיה & מכשירים ניידים","WEBSITE_FEATURES_CAST_DETAIL":"שידור בAppleTV, Chromecast, טלויזיה חכמה (DLNA/UPnP) ומכשירים ניידים.","WEBSITE_LIB":"תהנה מהספריה הפרטית שלך מסונכרת לכל מכשירך.","WEBSITE_LIB_COLLECT":"איסוף מStremio","WEBSITE_LIB_IMPORT":"ייבוא מFacebook","WEBSITE_LIB_LOCAL":"הוספה מכונן מקומי","WEBSITE_BOARD":"הלוח - נקודת העצירה להודעות וההמלצות שלך","WEBSITE_BOARD_RECOMMEND":"סדרות מומלצות","WEBSITE_BOARD_TRENDING":"סרט חם","WEBSITE_BOARD_NEW":"וידאו חדש","WEBSITE_BOARD_EPISODE":"פרק חדש","WEBSITE_BOARD_1":"מחפש משהו מעניין לצפות? קבל המלצות על בסיס טמעך האישי!","WEBSITE_BOARD_2":"קבל הודעה כאשר פרק חדש של הסדרה או ערוץ YouTube יוצא!","WEBSITE_BOARD_YOUTUBE":"סרטונים חדשים של ערוצי YouTube","WEBSITE_BOARD_EPISODES":"פרקים חדשים של הסדרות שהינך עוקב אחריהן","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"עלינו","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"עוד","WEBSITE_LINK_ADDONS":"תוספים","WEBSITE_LINK_ADDON_SDK":"SDK תוספים","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"קהילה","WEBSITE_LINK_BLOG":"בלוג","WEBSITE_MORE_MORE":"... & ועוד","WEBSITE_LINK_HELP":"מרכז עזרה","WEBSITE_LINK_CONTACTS":"יצירת קשר","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"יצירת תוסף","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"תוספים","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"תוספים רשמיים","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"תוספי קהילה","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"יצירת תוסף","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"הורדות","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio עבור Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio עבור macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio עבור Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio עבור Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio עבור iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"תרגום Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"קהילות רשמיות","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"צור קשר","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"כתובת דואר האלקטרוני שלך","WEBSITE_CONTACT_US_PH_MESSAGE":"הודעה","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"שליחה","WEBSITE_CONTACT_US_Q_1":"איך להתקין?","WEBSITE_CONTACT_US_Q_2":"איך להסיר?","WEBSITE_CONTACT_US_Q_3":"(HTML) איך לעשות lasagna?","WEBSITE_CONTACT_US_Q_4":"תוספים","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"תרגום Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"מעבר לבית","WEBSITE_LINK_OTHER_DOWNLOADS":"הורדות אחרות","WEBSITE_FAQ_ABR":"שאלות ותשובות","WEBSITE_SUPPORT":"תמיכה","WEBSITE_DOWNLOAD_4_0_BETA":"הורדת Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"הורדה לשולחן העבודה","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"חשבון שלי","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"עזרו לנו ללמוד עליכם יותר.","LIFESTYLE":"סגנון חיים","SPORTS":"ספורט","FOOD_HEALTH":"אוכל ובריאות","BEAUTY_FASHION":"יופי ואופנה","NEWS":"חדשות","GAMING":"גיימינג","SCIENCE_EDUCATION":"מדע וחינוך","MUSIC":"מוזיקה","TRAVEL":"טיולים","LATE_NIGHT":"תוכניות אירוח","REALITY":"ריאלטי","COMEDY":"קומדיה","DIY":"עשה זאת בעצמך","TECH":"טכנולוגיה","CINEMA":"קולנוע","CONTINUE":"המשך","SLOW_LOADING":"טעינה איטית?","I_GIVE_UP":"לוותר","LEARN_MORE":"מידע נוסף","POOR_SOURCE":"מקור זה בקושי זמין או שחיבור האינטרנט שלך איטי מאוד","PICK_CATEGORIES_ERR":"נא לבחור 3 קטגוריות מינימום","ADJUST_TIMING":"שינוי תזמון בעזרת ","ADJUST_SIZE":"שינוי גודל בעזרת","SEARCH_ANYTHING":"אפשר לחפש הכל...","ALL_CATEGORIES":"הכל","SEARCH_CATEGORIES":"סרטים, סדרות, יוטיוב & טלויזיה","SEARCH_PERSONS":"שחקנים, מפיקים & כותבים","SEARCH_PROTOCOLS":"קישורים ישירים או מגנט","SEARCH_TYPES":"IMDB / TVDB קישורים","WATCHED":"נצפה","SHOW_LESS":"הצג פחות","LAST_SEARCHES":"חיפושים אחרונים","CLEAR_HISTORY":"נקה היסטוריה","CHOOSE_SOME":"בחירה של משהו מכאן:","NO_WEB_REMOTE":"שימוש מרוחק לא ניתן לטעינה","STREMIO_OFFLINE":"Stremio מנותק","STREMIO_EXPENSIVE_CONNECTION":"חיבור לאינטרנט הוא יקר","USE_DATA":"השתמש בנתונים ניידים","WARNING":"אזהרה","MORE_INFO":"מידע נוסף ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"טוען ...","STREMIO_TV_BACK_TO_LANGUAGES":"חזרה לשפות","STREMIO_TV_REMOTE":"שלט","STREMIO_TV_GO_TO":"מעבר אל:","STREMIO_TV_OR_SCAN":"או סריקה:","STREMIO_TV_ADDON_INSTRUCTIONS":"נא לעקוב אחר ההוראות בכדי להתקין את התוספים המועדפים עליכם.","STREMIO_TV_LIVE_TV":"טלויזיה חיה","STREMIO_TV_RESUME_WATCHING":"המשך צפיה","STREMIO_TV_LOADING_BACKGROUND":"טוען ברקע","STREMIO_TV_CHECKING_AUTHENTICATION":"בודק פרטי התחברות","STREMIO_TV_LOADING_BOARD":"טוען לוח","STREMIO_TV_LOGIN_HEADER_LINE_1":"אנו רוצים שהמשתמשים שלנו יזכו לחוויה המותאמת אישית הטובה ביותר עם התוכנה שלנו.","STREMIO_TV_LOGIN_HEADER_LINE_2":"מסיבה זו אנו מבקשים מכם לבקש ו / או להתחבר לחשבונכם.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"תודה על ההבנה,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"צוות Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"על מנת להשתמש מרחוק באמצעות טלפון חכם / טאבלט / מחשב:","STREMIO_TV_WIFI_SETUP":"התקנת Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle לא הצליח לזהות חיבור אינטרנט.","STREMIO_TV_WIFI_DETAILS_1":"חיבור אל:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"שימוש בסיסמה:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"פתיחת דפדפן עם קישור:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"ברירת המחדל","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"לפי נצפה לאחרונה","STREMIO_TV_LIBRARY_SORT_NAME":"לפי שם","STREMIO_TV_LIBRARY_TIMES_WATCHED":"לפי כמות הצפיות","STREMIO_TV_DETAILS_SEASON_NUMBER":"${1} עונה","STREMIO_TV_STREAMS_LOADING":"נטענו {1}$ / {2}$ תוספים...","STREMIO_TV_STREAMS_STILL_LOADING":"תוסף {1}$ עדיין נטען","STREMIO_TV_PLAYER_SETTINGS":"הגדרות נגן","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"השהיית כתוביות","STREMIO_TV_PLAYER_AUDIO_DELAY":"השהיית אודיו","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"מקור השידור אינו נתמך","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"שגיאה בפתיחת קישור חיצוני","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"נגן עם ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"נגן עם libVLC","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"מחליף לנגן libVLAC עקב שגיאה בשידור","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"סינכרון תוספים\\"","STREMIO_TV_ADDONS_SUBTITLE":"הערה: ודא כי אתה משתמש באותו משתמש Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"סינכרון תוספים","STREMIO_TV_ADDONS_SYNC_SUCCESS":"תוספים סונכרונו בהצחלה","STREMIO_TV_ADDONS_SYNC_FAILED":"שגיאה סינכרון התוספים","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"שפת הממשק עודכנה","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"נגן ברירת המחדל","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"נגן חיצוני","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"שפה מועדפת","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"שפה מועדפת משנית","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"ברירת מחדל","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"קישור לשרת צפייה","STREMIO_TV_SETTINGS_SERVER_VERSION":"גרסת שרת","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"לא ידוע","STREMIO_TV_SETTINGS_STREMIO_VERSION":"גרסת Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"עריכת קישור שרת","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"לקריאת תנאי הפרטיות של Stremio, בקרו ב:","STREMIO_TV_SETTINGS_TOS_TEXT":"לקריאת תנאי השימוש של Stremio, בקרו ב:","STREMIO_TV_NAV_SEARCH":"חיפוש","STREMIO_TV_NAV_HOME":"דף הבית","STREMIO_TV_NAV_DISCOVER":"גלה","STREMIO_TV_NAV_LIBRARY":"ספרייה","STREMIO_TV_NAV_MOVIES":"סרטים","STREMIO_TV_NAV_SERIES":"סדרות","STREMIO_TV_NAV_CHANNELS":"ערוצים","STREMIO_TV_NAV_TV":"שידורים חיים","STREMIO_TV_NAV_SETTINGS":"הגדרות","STREMIO_TV_NAV_ADDONS":"תוספים","STREMIO_TV_LOGIN_TITLE":"חבר משתמש","STREMIO_TV_LOGIN_EXPIRES_IN":"פג תוקף ב-","STREMIO_TV_LOGIN_STEP_ONE":"סרקו את קוד ה-QR או גשו ל:","STREMIO_TV_LOGIN_STEP_TWO":"התחברות למשתמש Stremio","STREMIO_TV_LOGIN_NEW_LINK":"בקש קישור חדש","STREMIO_TV_LOGIN_LINK_REFRESHED":"קישור ההתחברות חודש","STREMIO_TV_SEARCH_PLACEHOLDER":"הקלד משהו","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"חיפוש","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"רווח","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"היסטוריית החיפושים","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"נקה את היסטוריית החיפושים","STREMIO_TV_FILTERS_DESCRIPTION":"בחרו אחד מהפילטרים מטה","FILTERS":"פילטרים","SETTINGS":"הגדרות","ACCOUNT":"משתמש","LOGOUT":"התנתק","THEMES":"ערכות נושא","PLAYBACK":"ניגון","PLAYBACK_SPEED":"מהירות ניגון","AUDIO_TRACKS":"רצועות שמע","VIDEOS":"סרטונים","SERVER":"שרת","LINKS":"קישורים","ABOUT":"אודות","INTERFACE":"ממשק","ANIMATIONS":"אנימציות","STATUS":"סטטוס","LANGUAGE":"שפה","SIZE":"גודל","DELAY":"השהייה","BOLD":"Bold","TEXT_COLOR":"צבע טקסט","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"צבע רקע","BACKGROUND_BLUR":"טשטוש רקע","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"נגן אוטומטית את הפרק הבא","PLAY_NOW":"נגן עכשיו","MARK_AS_WATCHED":"סמן כנצפה","MARK_AS_UNWATCHED":"סמן כלא נצפה","REWIND_TO_BEGINNING":"חזור להתחלה","CONTINUE_WATCHING":"המשך צפייה","ALL":"הכל","SECONDS":"שניות","ON":"דלוק","OFF":"כבוי","RELOAD":"טעינה מחדש","EDIT_URL":"ערוך קישור","NONE":"כלום","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"שינוי מכשירים","REMOTE_VIDEOS":"וידאו","REMOTE_ADJUST_TIMING":"שינוי תזמון","REMOTE_ADJUST_SIZE":"שינוי גודל","REMOTE_COULD_NOT_BE_LOADED":"שליטה מרחוק לא אפשרית","REMOTE_RETRY":"לנסות שוב","TORRENT_PROFILE_DEFAULT":"ברירת המחדל","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"?Stremio מה זה","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},4018:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"फ़िल्म","TYPE_series":"धारावाहिक","TYPE_tv":"टीवी चैनल","TYPE_channel":"चैनल","TYPE_other":"अन्य","TYPE_movie_PL":"फ़िल्म","TYPE_series_PL":"धारावाहिक","TYPE_tv_PL":"टी वी चैनल","TYPE_channel_PL":"चैनल","TYPE_other_PL":"अन्य","TYPE_ALL":"All","VIDEO":"वीडियो","BACK":"पीछे","MORE":"अधिक","DONE":"किया हुआ","COPY":"प्रतिलिपि","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"डिस्कवर","Board":"तख़्ता","Library":"पुस्तकालय","My Library":"मेरा पुस्तकालय","Calendar":"पंचांग","NOTIFICATION_ONLINE":"अब आप ऑनलाइन हैं","NOTIFICATION_OFFLINE":"आप वर्तमान में ऑफ़लाइन हैं","INTERNET_CONNECTION":"नेटवर्क कनेक्शन","STORAGE_FULL_TITLE":"चेतावनी: भंडारण पूर्ण!","STORAGE_FULL_TEXT":"Stremio आपकी सेटिंग्स वरीयताओं या लॉगिन जानकारी को सहेजने में सक्षम नहीं होगा। फिर से शुरू करने या फिर से स्थापित करने पर विचार करें।","SEARCH":"तलाशी","SEARCH_NO_RESULTS":"कोई परिणाम नहीं मिले थे","SEARCH_EXPLANATION_CONTENT":"फिल्में श्रृंखला यूट्यूब और टीवी चैनल खोजें","SEARCH_EXPLANATION_PEOPLE":"अभिनेता निदेशकों और लेखकों के लिए खोजें","SEARCH_PASTE_LINKS":"HTTP और चुंबक लिंक पेस्ट करें","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"पुस्तकालय में जोड़ें","REMOVE_FROM_LIB":"पुस्तकालय से निकालें","ADDED_TO_LIB":"पुस्तकालय में जोड़ा गया","REMOVED_FROM_LIB":"पुस्तकालय से हटा दिया गया","TRAILER":"ट्रेलर","WATCH_TRAILER":"ट्रेलर देखें","WATCH_NOW":"अब देखिए","SHOW":"प्रदर्शन","SHOW_MOVIE":"फिल्म दिखाओ","WATCH_RANDOM":"यादृच्छिक","IMDB_RATING":"आईएमडीबी रेटिंग","YEAR":"वर्ष","DIRECTOR":"निर्देशक","WRITER":"लेखक","LEAD_ACTORS":"मुख्य अभिनेता","CAST":"ढालना","CREW":"कर्मी दल","SHOW_MORE_CAST":"और दिखाओ","AIRED":"प्रसारित","SEASONS":"मौसम के","GENRE":"शैली","CATALOG":"सूची","SUMMARY":"सारांश","SHOW_MORE":"और दिखाओ","SIMILAR":"एक जैसा","UPCOMING":"आगामी","ENDED":"समाप्त","DURATION":"अवधि","FEATURED":"विशेष रुप से प्रदर्शित","METADATA":"मेटाडाटा","CATEGORY":"वर्ग","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"वीडियो खोजें","SEARCH_PLACEHOLDER":"यूआरएल खोजें या पेस्ट करें","ADDON":"ऐड ऑन","ADDONS":"ऐड-ऑन","OFFICIAL":"अधिकारी","ADDONS_OFFICIAL":"आधिकारिक स्ट्रीमियो एडॉन्स","ADDONS_POPULAR":"आपके क्षेत्र में लोकप्रिय","ADDON_FREE":"नि: शुल्क","ADDON_PEERED":"झाँका","ADDON_SUBSCRIPTION":"अंशदान","ADDON_STREAM_GEORESTRICTED":"आपके क्षेत्र में उपलब्ध नहीं है","ADDON_STREAM_OFFLINECACHE":"ऑफ़लाइन कैश","ADDON_STREAM_LOCALFILE":"स्थानीय संचिका","SHARE_ADDON":"शेयर एडन","AVAILABLE_STREAMS":"उपलब्ध धाराएं","NO_STREAM":"कोई धारा नहीं मिली","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"अधिक धाराओं के लिए कृपया अधिक addons स्थापित करें","STREAM_NOT_SUPPORTED":"चयनित स्ट्रीम इस मंच पर समर्थित नहीं है।","ADDON_CATALOGUE":"सभी एडॉन्स दिखाएं »","ADDON_CATALOGUE_MORE":"Addons स्थापित करें","REPO_ADDED":"रिपोजिटरी ने कहा","ADDON_REPO_EXIST_ERR":"यह एडॉन्स संग्रह पहले से मौजूद है","ADDON_REPO_ERR":"संग्रह जोड़ने के दौरान त्रुटि हुई","ADDON_ADD_ERR":"Addon जोड़ने के दौरान त्रुटि हुई","ERR_ADDON_PROTECTED":"Addon को अनइंस्टॉल नहीं कर सकता यह संरक्षित है","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"कुछ गलत हो गया - प्रमाणीकरण विफल हो सकता है","ERR_NOT_COLLECTION_URL":"एक संग्रह यूआरएल नहीं","ERR_NOT_ADDON_URL":"एक वैध एडन यूआरएल नहीं","ERR_DETECTFROMURL":"इस यूआरएल से एडन / संग्रह नहीं मिल रहा है","ADDON_DUPLICATE_WARNING":"चेतावनी: डुप्लिकेट एडन","ADDON_COLLECTION_SET_FAILED":"अपने खाते में स्थापित एडॉन्स को सिंक करना विफल रहा","SETTINGS_DATA_EXPORT":"निर्यात उपयोगकर्ता डेटा","ADDON_PULL_FAILED":"अपने खाते से स्थापित एडॉन्स को सिंक करना विफल रहा","REFRESH_ON_CLICK":"पुनः प्रयास करने के लिए क्लिक करें","STILL_IN_THEATER":"फिल्म अभी भी सिनेमाघरों में","WATCH_IN_CINEMA":"इसे अपने स्थानीय सिनेमा में देखें","IN_THEATER":"सिनेमा में","GET_TICKETS":"टिकिट पाएं","UPCOMING_EPISODE":"आगामी एपिसोड","UPCOMING_EPISODE_MESSAGE":"इस प्रकरण पर प्रसारित किया जाएगा","MISSING_DATE_EPISODE":"गायब एपिसोड तिथि","MISSING_DATE_EPISODE_MESSAGE":"यह एपिसोड अभी तक प्रसारित नहीं हो सकता है","CHANNEL_NOT_SCRAPED":"यह चैनल अभी तक स्क्रैप नहीं है। <br> कृपया कुछ मिनटों में वापस आएं।","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"इसे उपलब्ध होने के बाद अधिसूचित होने के लिए इसे अपनी लाइब्रेरी में जोड़ें।","GET_NOTIFIED_WHEN_AVAILABLE":"एक बार उपलब्ध होने के बाद आपको सूचित किया जाएगा।","WARNING_STREAMING_SERVER":"चेतावनी: स्थानीय स्ट्रीमिंग सर्वर नहीं मिला। स्थानीय फाइलों से स्ट्रीमिंग यूट्यूब और बिटटोरेंट उपलब्ध नहीं होंगे।","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"चेतावनी: इस वीडियो को आपके हार्डवेयर द्वारा समर्थित नहीं किया जा सकता है। ध्यान रखें प्लेबैक धीमा हो सकता है।","PLAYER_ERROR":"ओह खिलाड़ी त्रुटि","PLAYER_ERROR_LOOKSLIKE":"ऐसा लग रहा है","PLAYER_ORIENTATION":"खिलाड़ी अभिविन्यास","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"बंद","PLAYER_ORIENTATION_SENSOR_SHORT":"सेंसर","PLAYER_ORIENTATION_LANDSCAPE":"प्लेयर ओरिएंटेशन लैंडस्केप पर लॉक किया गया","PLAYER_ORIENTATION_SENSOR":"प्लेयर अभिविन्यास स्वचालित (सेंसर)","PLAYER_PLAYBACK_SPEED":"प्लेबैक गति","PLAYER_PLAYBACK_ERROR":"प्लेबैक त्रुटि कृपया पुनः प्रयास करें","PLAYER_PLAYBACK_ERROR_UNKNOWN":"अज्ञात त्रुटि","PLAYER_PLAYBACK_ERROR_DEFAULT":"क्षमा करें इस वीडियो को {{PRODUCTNAME}} द्वारा नहीं खेला जा सकता है।","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"रहना","PLAYER_NEXT_VIDEO_TITLE":"आगे आ रहा है","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"खारिज","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"अब देखिए","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"से स्ट्रीमिंग","CASTING_TO":"कास्टिंग करना","NETWORK_STATUS":"नेटवर्क की स्थिति","STREAM_SPEED":"धारा गति:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"सहकर्मी सूचना","PEERS_ACTIVE":"सक्रिय:","PEERS_CONNECTED":"जुड़े हुए:","PEERS_WAITING":"इंतज़ार कर रही:","TRANSCODING_WARNING":"चेतावनी: ट्रांसकोडिंग वीडियो।","STREAM_LOADING":"लोड हो रहा है...","PLAYING_LOCAL":"स्थानीय फ़ाइल से बजाना","PLAYING_CACHE":"कैश से बजाना","WRONG_SUBS":"गलत उपशीर्षक?","ERR_SUBS_LOADING_TITLE":"उपशीर्षक लोड करने में त्रुटि","ERR_SUBS_LOADING":"असफल उपशीर्षक लोड हो रहा है: यह आपके द्वारा उपयोग किए जा रहे एडन के साथ या आपके नेटवर्क कनेक्शन के साथ एक समस्या हो सकती है","WARN_FOLLOWING_SUB_ADDONS_FAILED":"निम्नलिखित उपशीर्षक Addons विफल","ERR_CASTING_UPDATE_TITLE":"कास्टिंग डिवाइस जानकारी अपडेट नहीं कर सका: स्ट्रीमिंग सर्वर ऑफ़लाइन हो सकता है","CHOOSE_DEVICE":"देखने के लिए एक उपकरण चुनें","NO_CAST_DEVICES":"कोई कास्टिंग डिवाइस उपलब्ध नहीं है।","NO_SETTINGS":"कोई सेटिंग उपलब्ध नहीं है।","PHONE_TABLET":"फोन / टैबलेट","SUBTITLES":"उपशीर्षक","SUBTITLES_CHANGE":"के लिए उपशीर्षक बदलें","SUBTITLES_CHANGE_NONE":"इस भाषा के लिए कोई अन्य उपशीर्षक खेद नहीं है।","SUBTITLES_CHANGE_ACIVE":"वर्तमान में उपशीर्षक & # 35; {{subtitlesdialog.ActiveDX + 1}} सक्रिय हैं। उपशीर्षक सक्रिय करने के लिए जारी रखें & # 35; {{subtitlesdialog.pickedIDX + 1}}।","SUBTITLES_OR":"वैकल्पिक","SUBTITLES_ADJUST_DELAY":"उपशीर्षक देरी समायोजित करें:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"या समायोजित करने के लिए खेलते समय <span> g </ span> / <span> h </ span> कुंजी का उपयोग करें।","SUBTITLES_ADJUST_DELAY_TIP":"युक्ति: आप समायोजित करने के दौरान <span> g </ span> / <span> h </ span> कुंजी का उपयोग कर सकते हैं।","SUBTITLES_DELAY":"उपशीर्षक देरी:","SUBTITLES_LOADING":"उपशीर्षक लोड हो रहा है ...","SUBTITLES_UNAVAILABLE":"कोई बाहरी उपशीर्षक उपलब्ध नहीं है","SUBTITLES_DISABLED":"विकलांग","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"मौसम","EPISODE":"प्रकरण","SPECIAL":"Special","SORT":"तरह","SORT_BY":"इसके अनुसार क्रमबद्ध करें","FILTER":"फिल्टर","SORT_TRENDING":"ट्रेंडिंग","SORT_RECENT":"हालिया","SORT_ALPHABET":"ए-जेड","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"रेटिंग","SORT_WATCHED":"देखा","SORT_YEAR":"वर्ष","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"आपके लिए नया","New Episodes":"नए एपिसोड","New Videos":"नए वीडियो","Recommendations":"सिफारिशों","LIBRARY_RESUME":"फिर शुरू करना","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"विवरण","LIBRARY_RESUME_DISMISS":"खारिज","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"विशेष रुप से प्रदर्शित","DISCOVER_TOP":"शीर्ष","DISCOVER_OSCAR":"ऑस्कर विजेता","DISCOVER_WARNING_TITLE":"उफ़!","DISCOVER_EMPTY_CATALOG":"यह एडन खाली सामग्री लौटा दी।","DISCOVER_ADULT_WARNING":"सामग्री केवल वयस्कों के लिए दिखाई दे रही है। क्या आप 18+ हैं?","DISCOVER_NOADDON_WARNING":"चेतावनी: इस प्रकार के लिए कोई स्ट्रैमियो एडन सक्रिय नहीं है। सहेजी गई वस्तुओं को यहां कुछ भी अपडेट नहीं किया जाएगा।","DISCOVER_LOAD_ERR":"सामग्री ने त्रुटि लोड नहीं की।","DISCOVER_ADDON_UNINSTALLED":"यह सामग्री अब उपलब्ध नहीं है कि आपने एडन को अन-इंस्टॉल किया हो सकता है।","UNINSTALL_THIS_ADDON":"इस एडन को अनइंस्टॉल करें","ERR_ADDON_NOT_INSTALLED":"यह एडन स्थापित नहीं है। अब स्थापित करें?","DETAIL_RECEIVE_NOTIF_SERIES":"नए एपिसोड के लिए सूचनाएं प्राप्त करें","DETAIL_RECEIVE_NOTIF_VIDEOS":"नए वीडियो के लिए सूचनाएं प्राप्त करें","SIDEBAR_SHOW_STREAMS":"स्ट्रीम दिखाएं","RELAUNCH":"अब पुनः प्रक्षेपण!","UPGRADE":"नया संस्करण उपलब्ध है! नवीनतम STREMIO संस्करण में अपग्रेड करें","RELOAD_UI":"उपयोगकर्ता इंटरफ़ेस को पुनः लोड करें","MANUAL_UPDATE_TITLE":"अपने STREMIO संस्करण को अपडेट करें","MANUAL_UPDATE_LINE1":"आप स्ट्रैमियो का पुराना संस्करण चला रहे हैं जो अत्यधिक अपरिचित है।","MANUAL_UPDATE_LINE2":"कृपया जल्द से जल्द अपडेट करें।","BUTTON_UPDATE_LATTER":"अभी नहीं","BUTTON_UPDATE_NOW":"अद्यतन","ANONYMOUS_USER":"अनाम उपयोगकर्ता","DONT_HAVE_ACC":"खाता नहीं है?","HAVE_ACC":"क्या आपके पास पहले से एक खाता मौजूद है?","PASSWORD":"कुंजिका","PASSWORD_CONFIRM":"पासवर्ड की पुष्टि कीजिये","EMAIL":"ईमेल","FB_LOGIN":"फेसबुक के साथ जारी रखें","FB_NOTHINGSHARED":"आपकी अनुमति के बिना कुछ भी साझा नहीं किया जाता है","FB_NOPOST":"हम आपकी ओर से कुछ भी पोस्ट नहीं करेंगे","OR":"या","I_ACCEPT":"मैं स्वीकारता हूँ","I_ACCEPT_BY_CLICKING":"उपरोक्त बटन पर क्लिक करके मैं प्रमाणित करता हूं कि मैं स्वीकार करता हूं","TOS":"नियम और शर्तें","MUST_ACCEPT_TERMS":"आपको शर्तों को स्वीकार करना होगा","PASSWORDS_NOMATCH":"पासवर्ड मेल नहीं खाते","SIGN_UP":"साइन अप करें","SIGN_UP_EMAIL":"ईमेल के लिए साइन इन करें","CLICK_TO_SIGN_UP":"साइन अप करने के लिए यहां क्लिक करें।","LOG_IN":"लॉग इन करें","LOG_OUT":"लॉग आउट","EXIT_FULLSCREEN":"पूर्णस्क्रीन मोड से बाहर निकलें","ENTER_FULLSCREEN":"पूर्णस्क्रीन मोड दर्ज करें","PLAY_URL_MAGNET_LINK":"यूआरएल / चुंबक लिंक खेलें","HELP_FEEDBACK":"सहायता और प्रतिक्रिया","TERMS_OF_SERVICE":"सेवा की शर्तें","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"STREMIO के बारे में","USER_PANEL":"उपयोगकर्ता पैनल","LOGIN_LABEL":"Login","GUEST_LOGIN":"मेहमान लॉगइन करें","GUEST_LOGIN_NOTICE":"अतिथि लॉगिन की अनुशंसा नहीं की जाती है। एक नियमित लॉगिन का उपयोग करने से आपकी लाइब्रेरी को सिंक करने के लिए STREMIO को पसंदीदा श्रृंखला / चैनलों के लिए अधिसूचनाएं प्राप्त होती हैं। क्या आप सुनिश्चित रूप से आगे बढ़ना चाहते हैं?","GUEST_LOGIN_NOTICE_2":"अतिथि लॉगिन की अनुशंसा नहीं की जाती है - आपके पास समन्वयित पुस्तकालय और बोर्ड अधिसूचनाएं नहीं होंगी जो महत्वपूर्ण स्ट्रमियो विशेषताएं हैं। क्या आप सुनिश्चित रूप से आगे बढ़ना चाहते हैं?","CLICK_HERE":"यहां क्लिक करें","WRONG_PASSWORD":"गलत ईमेल या पासवर्ड। मामले में आप अपना पासवर्ड भूल गए हैं","SET_A_PASS":"एक पासवर्ड सेट करें","RESET_PASSWORD":"पासवर्ड रीसेट","FORGOT_PASSWORD":"पासवर्ड भूल गए?","EMAIL_USED_WITH_FB":"इस ईमेल का उपयोग फेसबुक लॉगिन के साथ किया गया था।","INVALID_EMAIL":"कृपया एक वैध ई - मेल एड्रेस डालें","INVALID_PASSWORD":"कृपया एक वैध पासवर्ड दर्ज करें","CONN_ERR":"कनेक्शन त्रुटि - कृपया बाद में पुनः प्रयास करें। N NIf यह फायरवॉल / एंटी-वायरस सॉफ़्टवेयर (विशेष रूप से बिट डिडीफेंडर) को अक्षम करता है।","IMPORT_FROM_GUEST":"अपने अतिथि खाते से लाइब्रेरी आयात करें","RECEIVE_UPDATES_EMAIL":"STREMIO से अपने ईमेल पर अपडेट प्राप्त करें","LOGIN_FAILED":"लॉगिन विफल।","SIGNUP_FAILED":"साइन अप करने में विफल रहा।","SEARCH_FAILED":"खोज विफल","EMAIL_USED":"यह ईमेल पहले से प्रयोग में है।","WAITING_FB_LOGIN":"फेसबुक के साथ लॉग इन करना ...","EXTERNAL_PLAYER_TITLE":"बाहरी खिलाड़ी में खेलें","EXTERNAL_REMEMBER_PLAYER":"क्या आप अपनी पसंद को याद रखना चाहते हैं","EXTERNAL_ALWAYS_PLAY":"हां","EXTERNAL_ONLY_ONCE":"नहीं","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"हमें बताएं कि आपको क्या पसंद है","INTRO_TASTE_LONG":"हमें बताएं कि आप क्या देखना चाहते हैं","INTRO_TASTE_PICK":"{{HUSTERSREMAINAININININING}} हितों को चुनें","INTRO_TASTE_PICK_MORE":"{{REITAINSREMAINAINAING}} अधिक हितों को चुनें","INTRO_TASTE_HELP_US":"हमारे बारे में अधिक जानने में हमारी सहायता करें।","INTRO_TASTE_CHOOSE_THESE":"इनमें से कुछ चुनें:","INTRO_TASTE_CHOOSE_MIN":"कम से कम 3 श्रेणियां चुनें","INTRO_TASTE_CHOOSE_MIN_ERR":"आपको कम से कम 3 श्रेणियां चुननी होंगी!","INTRO_TASTE_LIFESTYLE":"बॉलीवुड","INTRO_TASTE_SPORTS":"खेल","INTRO_TASTE_FOOD_HEALTH":"भोजन और स्वास्थ्य","INTRO_TASTE_BEAUTY_FASHION":"सौंदर्य और फैशन","INTRO_TASTE_NEWS":"समाचार","INTRO_TASTE_GAMING":"जुआ","INTRO_TASTE_SCIENCE_EDU":"विज्ञान की शिक्षा","INTRO_TASTE_MUSIC":"संगीत","INTRO_TASTE_TRAVEL":"यात्रा","INTRO_TASTE_LATE_NIGHT":"देर रात शो","INTRO_TASTE_REALITY":"वास्तविकता","INTRO_TASTE_COMEDY":"कॉमेडी","INTRO_TASTE_DIY":"DIY कैसे करें","INTRO_TASTE_TECH":"तकनीक","INTRO_TASTE_CINEMA":"सिनेमा","ADDON_NOT_SUPPORTED":"चयनित एडन इस मंच पर समर्थित नहीं है।","ADDON_DISCLAIMER":"तीसरे पक्ष के एडॉन्स का उपयोग हमेशा आपकी जिम्मेदारी और आपके द्वारा स्थित क्षेत्राधिकार के शासकीय कानून के अधीन होंगे।","ADDON_ACTIVATE":"इस एडन को सक्रिय करें?","ADDON_REPO_ADD":"एडन संग्रह यूआरएल","ADDON_ADD":"जोड़ें","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"नया क्या है","BUTTON_CONTINUE":"जारी रखें","BUTTON_ACTIVATE":"सक्रिय","BUTTON_ACTIVATED":"सक्रिय","BUTTON_CANCEL":"रद्द करें","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"सभी खारिज","BUTTON_VIEW_ALL":"सभी देखें","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"आपकी पुस्तकालय खाली दिखता है। पता लगाएं कि यह कितना उपयोगी है :)","HOW_START":"यहां बताया गया है कि आप कैसे शुरू कर सकते हैं:","LIB_EMPTY_CAL":"आपका कैलेंडर आपकी लाइब्रेरी में श्रृंखला दिखाता है।","HOW_START_CAL":"यहां बताया गया है कि आप श्रृंखला कैसे जोड़ सकते हैं:","LIB_EMPTY_BOARD":"बोर्ड नोटिफिकेशन दिखाता है & amp; आपकी पुस्तकालय से संबंधित सिफारिशें।","HOW_START_BOARD_WAIT":"कृपया अपनी लाइब्रेरी में कुछ श्रृंखला या चैनल जोड़ें संसाधित करने के लिए हमें कुछ मिनट दें :)","HOW_START_BOARD":"यहां बताया गया है कि आप श्रृंखला कैसे जोड़ सकते हैं & amp; इसके लिए फिल्में:","IMPORT_FB":"उन आयातित चीजें जिन्हें आप <span> फेसबुक </ span> से पसंद करते हैं","IMPORT_TRAKT":"<Span> trakt </ span> से अपनी मीडिया लाइब्रेरी आयात करें","IMPORT_DISCOVER":"<Span> डिस्कवर </ span> से दिलचस्प सामग्री खोजें","IMPORT_DISK":"अपने <span> स्थानीय डिस्क </ span> पर आपके पास फिल्में या शो आयात करें","PLEASE_CREATE_ACC":"लाइब्रेरी सिंक और एएमपी सक्षम करने के लिए कृपया <u> खाता बनाएं </ u>; तख़्ता।","IMPORT_DISCOVER_SIGNUP":"साइन अप करें और <span> डिस्कवर </ span> से दिलचस्प सामग्री खोजें","IMPORT_DISK_SIGNUP":"साइन अप करें और फिल्में आयात करें या आपके <Span> स्थानीय डिस्क </ span> पर दिखाएं","LIB_EMPTY_CLOUD":"बादल पुस्तकालय","LIB_EMPTY_CLOUD_DESC":"व्यक्तिगत क्लाउड लाइब्रेरी सभी उपकरणों पर समन्वयित","LIB_EMPTY_EARLY":"जल्दी उठ कर काम शुरू करने वाला व्यक्ति","LIB_EMPTY_EARLY_DESC":"नए एपिसोड के लिए सूचनाएं प्राप्त करें","LIB_EMPTY_PERSONAL":"निजी","LIB_EMPTY_PERSONAL_DESC":"व्यक्तिगत सिफारिशें प्राप्त करें","LIB_EMPTY_CALENDAR_DESC":"अपने व्यक्तिगत देखने के कैलेंडर को शेड्यूल करें","LIB_EMPTY_ALL":"इन सभी को पाने के लिए साइन अप करें:","LIB_EMPTY_BEST":"STREMIO का सर्वश्रेष्ठ पाने के लिए साइन अप करें","LIB_EMPTY_OTHER":"कैलेंडर और अन्य शानदार सुविधाओं को सक्षम करने के लिए साइन अप करें","CALENDAR_ADDED":"Stremio कैलेंडर को आपके डिफ़ॉल्ट डेस्कटॉप कैलेंडर में जोड़ा गया है।","CALENDAR_ADDED_MSG":"यदि यह काम नहीं करता है तो कृपया अपने कैलेंडर एप्लिकेशन को मैन्युअल रूप से इस यूआरएल को जोड़ें","TRAKT_EXPIRED":"ट्रैक्ट प्रमाणीकरण समाप्त हो गया कृपया सेटिंग्स पर जाएं और पुन: प्रमाणित करें","TRAKT_REQUIRES_LOGIN":"ट्रैक्ट त्रुटि","TRAKT_REQUIRES_LOGIN_MSG":"आपको लॉगिन करने की आवश्यकता है","SETTINGS_LABEL":"समायोजन","SETTINGS_NAV_GENERAL":"आम","SETTINGS_NAV_PLAYER":"खिलाड़ी","SETTINGS_NAV_STREAMING":"स्ट्रीमिंग","SETTINGS_NAV_SHORTCUTS":"शॉर्टकट","SETTINGS_SHORTCUT_RELOAD_APP":"रीलोड ऐप","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"बाहर निकलें / वापस जाएं","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"पूर्णस्क्रीन चालू करें","SETTINGS_SHORTCUT_SHOW_CONTROLS":"नियंत्रण दिखाएं","SETTINGS_SHORTCUT_PLAY_PAUSE":"चालू करे / रोके","SETTINGS_SHORTCUT_VOLUME_UP":"आवाज बढ़ाएं","SETTINGS_SHORTCUT_VOLUME_DOWN":"आवाज कम करे","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"उपशीर्षक आकार बढ़ाएँ","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"उपशीर्षक आकार कम करे","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"उपशीर्षक विलंब बढ़ाएँ","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"उपशीर्षक विलंब कम करे","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"स्टार्टअप शुरू","SETTINGS_VLC_DEFAULT":"वीएलसी के साथ खेलें","SETTINGS_UI_LANGUAGE":"यूआई भाषा","SETTINGS_FULLSCREEN_EXIT":"कुंजी से बाहर निकलें पूर्ण स्क्रीन से बाहर निकलें","SETTINGS_GAMEPAD":"गेमपैड समर्थन सक्षम करें","SETTINGS_CLOSE_WINDOW":"विंडो बंद होने पर ऐप बंद करें","SETTINGS_SUBTITLES_LANGUAGE":"डिफ़ॉल्ट उपशीर्षक भाषा","SETTINGS_SUBTITLES_SIZE":"डिफ़ॉल्ट उपशीर्षक आकार","SETTINGS_SUBTITLES_BACKGROUND":"उपशीर्षक पृष्ठभूमि","SETTINGS_SUBTITLES_COLOR":"उपशीर्षक रंग","SETTINGS_SUBTITLES_COLOR_OUTLINE":"उपशीर्षक रूपरेखा रंग","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"उपशीर्षक पृष्ठभूमि रंग","SETTINGS_SEEK_KEY":"तीर कुंजियाँ समय तलाशें","SETTINGS_SEEK_KEY_SHIFT":"तीर कुंजी समय की तलाश करते हैं जब Shift कुंजी आयोजित की जाती है","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"ऑटो-प्ले अगला एपिसोड","SETTINGS_NEXT_VIDEO":"अगले एपिसोड शुरू करने के लिए अधिसूचना दिखाएं","SETTINGS_NEXT_VIDEO_TRIGGER":"इसके लिए अगला एपिसोड अधिसूचना दिखाएं:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"खेलने से पहले स्वत: आकार बदलें","SETTINGS_OVERRIDE_SERVER":"स्ट्रीमिंग सर्वर URL (उन्नत) को ओवरराइड करें","SETTINGS_SERVER_URL":"स्ट्रीमिंग सर्वर यूआरएल:","SETTINGS_SERVER_AVAILABLE":"स्ट्रीमिंग सर्वर उपलब्ध है।","SETTINGS_SERVER_UNAVAILABLE":"स्ट्रीमिंग सर्वर उपलब्ध नहीं है।","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"स्ट्रीमिंग HTTPS एंडपॉइंट:","SETTINGS_USE_BETA":"हमेशा नवीनतम बीटा का उपयोग करें","SETTINGS_IMPORT_FB":"फेसबुक से आयात करें","SETTINGS_IMPORT_DISK":"स्थानीय डिस्क से आयात करें","SETTINGS_IMPORT_TRAKT":"ट्रैक्ट से आयात","SETTINGS_PAUSE_MINIMIZED":"कम से कम प्लेबैक रोकें","SETTINGS_HWDEC":"हार्डवेयर-त्वरित डिकोडिंग","SETTINGS_BACKGROUND":"पृष्ठभूमि प्लेबैक","SETTINGS_SUBSCRIBE_CALENDAR":"कैलेंडर की सदस्यता लें","SETTINGS_REQ_EXPORT":"डेटा निर्यात का अनुरोध करें","SETTINGS_ACC_DELETE":"खाता हटाने का अनुरोध करें","SETTINGS_CHANGE_PASSWORD":"पासवर्ड बदलें","SETTINGS_TOS":"सेवा की शर्तें","SETTINGS_SUPPORT":"सहयोग टीम से संपर्क करें","SETTING_LANGUAGE":"भाषा","SETTINGS_TRAKT":"ट्रैक्ट स्क्रोबिंग","SETTINGS_TRAKT_LOGOUT":"Trakt.tv से लॉग आउट करें","SETTINGS_SCAN_FOR_REMOTE":"रिमोट खोलने के लिए क्यूआर कोड स्कैन करें","SETTINGS_DESKTOP_NOTIFICATIONS":"डेस्कटॉप अधिसूचनाएं","SETTINGS_DATA_SAVER":"आंकड़ा बचतकर्ता","SETTINGS_LANGUAGE_INTERFACE":"इंटरफेस","SETTINGS_LANGUAGE_SUBS":"डिफ़ॉल्ट उपशीर्षक","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"ऑटोसेल ऑडियो ट्रैक","SETTINGS_DEFAULT_AUDIO_TRACK":"डिफ़ॉल्ट ऑडियो ट्रैक","SETTINGS_ACCOUNT":"कारण","SETTINGS_VERSION":"संस्करण","SETTINGS_MPV_WINDOW":"एक अलग विंडो में प्लेयर लॉन्च (उन्नत)","SETTINGS_PLAY_IN_EXTERNAL":"हमेशा बाहरी खिलाड़ी में वीडियो शुरू करें","SETTINGS_STORAGE_BUTTON":"स्थानीय भंडारण साफ़ करें","SETTINGS_STORAGE_MODAL_TITLE":"क्या आपको यकीन है ?","SETTINGS_STORAGE_MODAL_MESSAGE":"यह स्थानीय भंडारण को साफ़ करेगा और आपको लॉग आउट करेगा।","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"स्वचालित","SETTINGS_HW_DISABLED":"बंद","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"ऑडियो","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"ब्लैक बैकग्राउंड कलर का इस्तेमाल करें","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"आकार","SUBSPICKER_DELAY":"विलंब","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"गोपनीयता नीति","MOBILE_CRASH_REPORTING":"क्रैश रिपोर्टिंग","MOBILE_ZOOM_TO_FILL":"स्क्रीन भरने के लिए ज़ूम करें","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"कम बैटरी पर चलाएं","MOBILE_RUN_FOREGROUND":"अग्रभूमि सेवा के रूप में चलाएँ","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"ऑनलाइन","MOBILE_SERVER_OFFLINE":"ऑफलाइन","MOBILE_QR_EXPIRES":"क्यूआर कोड की समय सीमा समाप्त होगि ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"ऊपर क्यूआर कोड स्कैन करें या यहां जाएं ","MOBILE_LINK_ACCOUNT":"खाते लिंक करें","MOBILE_SPEEDPICKER_CANCEL":"रद्द करना","MOBILE_SPEEDPICKER_LABEL":"प्लेबैक स्पीड का चयन करें","MOBILE_EMPTY_LIBRARY":"आपकी लाइब्रेरी खाली है","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"मैं स्ट्रेमियो से मार्केटिंग संचार प्राप्त करने के लिए सहमत हूं","QUIT":"छोड़ना","CONNECTED":"जुड़े हुए","AUTHENTICATE":"प्रमाणित","CACHING":"कैशिंग","SETTINGS_CACHING_DRIVE":"कैशिंग ड्राइव","ENABLE_LOCAL_FILES_ADDON":"स्थानीय फ़ाइलें Addon सक्षम करें (पुनरारंभ की आवश्यकता है)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"रिमोट एचटीटीपीएस कनेक्शन सक्षम करें","TORRENT_PROFILE":"टोरेंट प्रोफाइल","DATA_CACHING":"डेटा कैशिंग","MAGNET_PARSING":"एक चुंबक लिंक पार्सिंग","January":"जनवरी","February":"फ़रवरी","March":"जुलूस","April":"अप्रैल","May":"मई","June":"जून","July":"जुलाई","August":"अगस्त","September":"सितंबर","October":"अक्टूबर","November":"नवंबर","December":"दिसंबर","Monday":"सोमवार","Tuesday":"मंगलवार","Wednesday":"बुधवार","Thursday":"गुरूवार","Friday":"शुक्रवार","Saturday":"शनिवार","Sunday":"रविवार","Action":"कार्य","Comedy":"कॉमेडी","War":"युद्ध","Family":"परिवार","Animation":"एनीमेशन","Adventure":"साहसिक","Fantasy":"कल्पना","Crime":"अपराध","Mystery":"रहस्य","Romance":"रोमांस","Drama":"नाटक","Horror":"डरावनी","Thriller":"थ्रिलर","Sci-Fi":"विज्ञान-कथा","Music":"संगीत","Biography":"जीवनी","Documentary":"दस्तावेज़ी","Sport":"खेल","Musical":"संगीत","Western":"वेस्टर्न","Film-Noir":"फिल्म नोयर","News":"समाचार","History":"इतिहास","Game-Show":"गेम शो","Reality-TV":"रियलिटी टीवी","Talk-Show":"टॉक शो","Film & Entertainment":"फिल्म और मनोरंजन","Gaming":"जुआ","From TV":"टीवी से","Lifestyle":"बॉलीवुड","Science & Education":"विज्ञान की शिक्षा","Cooking & Health":"खाना पकाने और स्वास्थ्य","Beauty & Fashion":"सौंदर्य और फैशन","Sports":"खेल","News & Politics":"समाचार और राजनीति","How-to & DIY":"कैसे और DIY","Tech":"तकनीक","Automotive":"मोटर वाहन","Causes & Non-Profits":"कारण और गैर लाभ","Movies":"चलचित्र","Uk Live Tv":"यूके लाइव टीवी","Fashion":"पहनावा","Business News Radio":"बिजनेस न्यूज रेडियो","Business Tv":"बिजनेस टीवी","Cars & Auto":"कारें और ऑटो","Comedy Radio":"कॉमेडी रेडियो","Lifestyle Radio":"लाइफस्टाइल रेडियो","News Tv":"समाचार टीवी","Food And Wine":"भोजन और शराब","Latino Tv":"लैटिनो टीवी","Shopping Tv":"शॉपिंग टीवी","Religion":"धर्म","Kids":"बच्चे","Body & Soul":"शरीर आत्मा","Education":"शिक्षा","Indian Tv":"भारतीय टीवी","Extreme Sports":"खतरनाक खेल","Middle Eastern Tv":"मध्य पूर्वी टीवी","Celebrity Tv":"सेलिब्रिटी टीवी","Science Tv":"विज्ञान टीवी","Bikini babe":"बिकिनी बेब","Outdoors":"सड़क पर","German Tv":"जर्मन टीवी","French Tv":"फ्रेंच टीवी","Italian Tv":"इतालवी टीवी","Gamer Tv":"गेमर टीवी","Travel":"यात्रा","Asian Tv":"एशियाई टीवी","Entertainment":"मनोरंजन","News Radio":"समाचार रेडियो","Music Radio":"संगीत रेडियो","Language Learning":"भाषा सीखना","Science Radio":"विज्ञान रेडियो","Tech Radio":"टेक रेडियो","Science & Technology Vod":"विज्ञान और प्रौद्योगिकी वोड","new video":"नया वीडियो","new episode":"नई कड़ी","new movie":"नई फिल्म","recommended":"अनुशंसित","we recommend":"हम अनुशंसा करते हैं","offer of the day":"दिन की पेशकश","news":"समाचार","music video":"वीडियो संगीत","CTX_SHOW_HOTKEYS":"हॉटकी दिखाएं","CTX_DISMISS_NOTIF":"सूचनाओं को खारिज करना","CTX_DISMISS_ALL":"सभी खारिज","CTX_SHARE":"साझा करना","CTX_COPY_SHARE_LINK":"शेयर लिंक कॉपी करें","CTX_COPY_MAGNET_LINK":"चुंबक लिंक कॉपी करें","CTX_COPY_STREAM_LINK":"स्ट्रीम लिंक कॉपी करें","CTX_DOWNLOAD_VIDEO":"इस वीडियो को डाउनलोड करें","CTX_DOWNLOAD_SUBS":"उपशीर्षक डाउनलोड करें","CTX_VIEW_ON_YOUTUBE":"यूट्यूब पर देखें","CTX_SHOW":"प्रदर्शन","CTX_PLAY":"खेल","CTX_PLAY_IN":"खेलना","CTX_PLAY_ON":"खेलो","CTX_WATCH_ON":"यहां देखें","CTX_WATCH":"घड़ी","CTX_WATCHED":"देखे","CTX_WATCH_BEGINNING":"शुरुआत से देखो","CTX_WATCH_MOBILE":"एक मोबाइल डिवाइस पर देखें","CTX_REWIND":"शुरुआत करने के लिए रिवाइंड","CTX_MARK_WATCHED":"देखा के रूप में चिह्नित","CTX_MARK_NON_WATCHED":"गैर-देखा के रूप में चिह्नित करें","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"जैसा कि देखा गया है","CTX_UNMARK_REST":"गैर-देखे गए के रूप में बाकी को चिह्नित करें","CTX_RECEIVE_NEW_NOTIF":"नई सूचनाएं प्राप्त करें","CTX_REMOVE_CACHE":"कैश से निकालें","CTX_REMOVE_CACHE_EP":"कैश से एपिसोड निकालें","CTX_OPEN_CONTAINING":"धारक फोल्डर खोलें","CTX_REMOVE":"पुस्तकालय से निकालें","CTX_AVAILABLE_OFFLINE":"उपलब्ध ऑफ़लाइन","CTX_PAUSED":"रोके गए","CTX_ALWAYS_ON_TOP":"हमेशा ऊपर","CTX_FULLSCREEN":"पूर्ण स्क्रीन","CTX_WRONG_SUBS":"गलत उपशीर्षक?","CTX_REPORT_ISSUES":"रिपोर्ट मुद्दा","CTX_COPY":"प्रतिलिपि","CTX_PASTE":"पेस्ट करें","CTX_CLEAR":"स्पष्ट","CTX_CLEAR_RECENT_SEARCHES":"हाल की खोजों को साफ़ करें","HELLO_THERE":"नमस्ते","HOPE_YOU_ENJOY":"हमें आशा है कि आप STREMIO का आनंद लेंगे और यह पहले से ही आपके पसंदीदा ऐप्स में से एक है!","WHO_ARE_WE":"हम कौन हैं? हम इसके पीछे टीम हैं - दो लोग जो इस उत्पाद को बेहतर और बेहतर बनाने के लिए पिछले 3 वर्षों से हर दिन कड़ी मेहनत करते हैं।","SUPPORT_US":"यदि आप STREMIO का उपयोग करने में आनंद लेते हैं यदि STREMIO आपके लिए मूल्यवान है - शब्द फैलाएं!","SPREAD_THE_WORD":"अपने दोस्तों के साथ साझा करें अब स्ट्रैमियो के बारे में शब्द फैलाएं","MORE_PEOPLE":"जितना अधिक लोग STREMIO का उपयोग करेंगे उतना ही बेहतर होगा!","SEND_A_LINK":"या हमारी वेबसाइट पर एक लिंक भेजें","TIP_LOCALFILES":"युक्ति: आप स्थानीय वीडियो फ़ाइलों को स्ट्रैमियो में खींच और छोड़ सकते हैं","ADDON_MY":"मेरे एडॉन्स","ADDON_COMMUNITY":"सामुदायिक एडॉन्स","ADDON_OFFICIAL":"सरकारी Addons","ADDON_REPOS":"एडन संग्रह","ADDON_SEARCH":"खोज एडॉन्स","ADDON_INSTALL":"इंस्टॉल","ADDON_CONFIGURE":"कॉन्फ़िगर","ADDON_UNINSTALL":"स्थापना रद्द करें","ADDON_UPGRADE":"अपग्रेड","ADDON_INSTALLED":"स्थापित","ADDON_INSTALLED_MSG":"Addon स्थापित!","ADDON_UPGRADED_MSG":"एडन अपग्रेड किया गया!","ADDON_UNKNOWN":"अनजान","ADDON_ERR":"Addon इंस्टॉल त्रुटि!","ADDON_DISCONNECTED":"डिस्कनेक्ट किया गया","ADDON_APP_MISSING":"इस स्रोत के लिए ऐप स्थापित नहीं है। क्या आप इसे अभी इंस्टॉल करना चाहते हैं?","ADDON_APP_INSTALL":"अब स्थापित करें","ADDON_PAGE":"एडन पेज","ADDON_TOP_CONTENT":"इस एडन से सर्वश्रेष्ठ","ADDON_PROVIDES":"यह एडन आपको देगा:","ADDON_WATCH":"देखो # {प्रकार} अब!","ADDON_WATCH_FREE":"अभी मुफ्त में # {प्रकार} देखें!","ADDON_ADDON":"ऐड ऑन","ADDON_SUPPORTED_TYPES":"समर्थित प्रकार","ADDON_SUPPORTED_CATALOGS":"समर्थित कैटलॉग","ADDON_PROVIDES_DISCOVER":"अधिक # {प्रकार} डिस्कवर में","ADDON_PROVIDES_STREAMS":"# {प्रकार} देखें","ADDON_PROVIDES_STREAMS_FREE":"मुफ्त में # {प्रकार} देखें","ADDON_PROVIDES_SUBTITLES":"# {प्रकार के लिए उपशीर्षक","ADDON_CANTDETECT":"हम एक रनिंग स्ट्रैमियो का पता नहीं लगा सके ताकि हम यह पता लगा सकें कि आपने कौन से एडॉन्स इंस्टॉल किए हैं।","ERR_NO_META":"इस बारे में कोई जानकारी नहीं मिली","ERR_GETTING_META":"इसके बारे में जानकारी पुनर्प्राप्त करने में त्रुटि।","ERR_CANT_PARSE_MAGNET":"चुंबक पार्स करने में असमर्थ","ERR_NO_MAGNET_INFOHASH":"चुंबक के लिए कोई वैध जानकारी हैश","ERR_NO_FILE_PATH":"फ़ाइल के लिए एक पथ के बिना अनुरोध भेजने में असमर्थ","ERR_NO_TORRENT":"कोई धार नहीं लौटा","ERR_NO_SUPPORTERD_FILES":"कोई समर्थित फाइल नहीं मिली","ERR_OPENING_FILES":"बाहरी फाइलें नहीं खोल सका","ERR_INVALID_LINK":"अमान्य लिंक","ERR_REGISTERED_ONLY":"यह विकल्प केवल पंजीकृत उपयोगकर्ताओं के लिए उपलब्ध है।","ERR_CLIPBOARD":"क्लिपबोर्ड से नहीं खेल सकते हैं","ERR_CLIPBOARD_READ":"इस मंच पर क्लिपबोर्ड नहीं पढ़ सकते हैं","ERR_CLIPBOARD_GENERIC":"क्लिपबोर्ड में पाया जाने वाला कोई भी यूआरएल नहीं मिला। कृपया एक वीडियो को एक यूआरएल (उदा। एक चुंबक लिंक) कॉपी करें।","BOARD_CONTINUE_WATCHING":"देखना जारी रखें","BOARD_EXPLANATION_RECOMMENDATIONS":"फिल्में आपके लिए विशेष रूप से चुने गए। <br /> यह फिल्म नमूना सिफारिश है।","BOARD_EXPLANATION_EPISODES":"आपकी पसंदीदा श्रृंखला के नए एपिसोड यहां आते हैं। <br /> श्रृंखला जोड़ें आप अपनी लाइब्रेरी में अनुसरण करते हैं।","BOARD_EXPLANATION_VIDEOS":"आपके पसंदीदा चैनलों के नए एपिसोड यहां आते हैं। <br /> YouTube चैनल जोड़ें जो आप अपनी लाइब्रेरी में अनुसरण करते हैं।","WEBSITE_SLOGAN_WATCH":"तुरंत देखें","WEBSITE_SLOGAN_ALL":"एक ही स्थान पर आप सभी वीडियो सामग्री का आनंद लेते हैं","WEBSITE_SLOGAN_NEW":"आप सभी देख सकते हैं","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"से देखना","WEBSITE_DOWNLOAD":"अब डाउनलोड करो","WEBSITE_DOWNLOAD_FOR":"अभी डाउनलोड करें","WEBSITE_IS_DESKTOP":"Stremio एक डेस्कटॉप एप्लिकेशन है इस पृष्ठ को अपने पीसी पर खोलें और इसे डाउनलोड करें","WEBSITE_DESKTOP_DEMO_VID":"डेस्कटॉप डेमो","WEBSITE_PAGE_HOME":"घर","WEBSITE_PAGE_FEATURES":"विशेषताएं","WEBSITE_PAGE_ADDONS":"ऐड-ऑन","WEBSITE_PAGE_TECH":"प्रौद्योगिकी","WEBSITE_PAGE_CREATE_ADDON":"Addon बनाएँ","WEBSITE_PAGE_CONTACTS":"संपर्क","WEBSITE_PAGE_BLOG":"ब्लॉग","WEBSITE_TYPE_movie":"चलचित्र","WEBSITE_TYPE_series_PL":"श्रृंखला","WEBSITE_TYPE_tv":"लाइव टीवी","WEBSITE_TYPE_channel":"चैनल","WEBSITE_STREMIO_WHAT_IS":"Stremio एक ऐप है जो आपको व्यवस्थित करने और तुरंत अपने पसंदीदा वीडियो फिल्में टीवी श्रृंखला और टीवी चैनल देखने में मदद करता है।","WEBSITE_FEATURES_WATCH":"तुरंत एचडी में देखें","WEBSITE_FEATURES_WATCH_DETAIL":"क्लिक करें और अपने पसंदीदा मूवीज़ टीवी शो वीडियो और टीवी चैनल दिखाता है।","WEBSITE_FEATURES_SUBS":"स्वचालित उपशीर्षक","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio स्वचालित रूप से आपकी भाषा के लिए समन्वयित उपशीर्षक चुनता है।","WEBSITE_FEATURES_SUBS_LABEL":"आपका कदम प्रमुख।","WEBSITE_FEATURES_CAST":"टीवी और मोबाइल उपकरणों पर खेलते हैं","WEBSITE_FEATURES_CAST_DETAIL":"Appletv Chromecast स्मार्ट टीवी (डीएलएनए / यूपीएनपी) और मोबाइल उपकरणों के लिए कास्ट करें।","WEBSITE_LIB":"अपने सभी उपकरणों पर सिंक की गई अपनी व्यक्तिगत पुस्तकालय का आनंद लें","WEBSITE_LIB_COLLECT":"STREMIO से लीजिए","WEBSITE_LIB_IMPORT":"फेसबुक से आयात करें","WEBSITE_LIB_LOCAL":"अपने स्थानीय ड्राइव से जोड़ें","WEBSITE_BOARD":"बोर्ड - अधिसूचनाओं और सिफारिशों के लिए आपका एक-स्टॉप प्लेस","WEBSITE_BOARD_RECOMMEND":"अनुशंसित टीवी शो","WEBSITE_BOARD_TRENDING":"ट्रेंडिंग फिल्म","WEBSITE_BOARD_NEW":"नया वीडियो","WEBSITE_BOARD_EPISODE":"नई कड़ी","WEBSITE_BOARD_1":"देखने के लिए कुछ दिलचस्प खोज रहे हैं? अपने स्वाद के आधार पर सिफारिशें प्राप्त करें!","WEBSITE_BOARD_2":"अधिसूचित हो जाएं जब आपके पसंदीदा टीवी शो या यूट्यूब चैनल का एक नया एपिसोड बाहर है!","WEBSITE_BOARD_YOUTUBE":"YouTube चैनलों के नए वीडियो","WEBSITE_BOARD_EPISODES":"श्रृंखला के नए एपिसोड आप अनुसरण करते हैं","WEBSITE_ADDONS":"सामग्री एडॉन्स","WEBSITE_TECH_DETAIL":"हम लव टेक्नोलॉजी हम पागल विज्ञान से प्यार करते हैं! NStremio निम्नलिखित ओपन सोर्स टेक्नोलॉजीज का उपयोग कर रहा है:","WEBSITE_TECH_WCJS":"WebChimera.js STREMIO को अच्छे प्रदर्शन के साथ किसी भी वीडियो प्रारूप को चलाने की अनुमति देता है।","WEBSITE_TECH_WCJS_EXTRA":"हम कोर प्रोजेक्ट योगदानकर्ता हैं","WEBSITE_TECH_ELECTRON":"इलेक्ट्रॉन के साथ स्ट्रैमियो बनाने के लिए एक अभिनव मंच प्रदान करता है।","WEBSITE_TECH_ELECTRON_EXTRA":"हम परियोजना योगदानकर्ता हैं","WEBSITE_TECH_LINVODB":"एक डेटाबेस तकनीक जो सुनिश्चित करती है कि आपका डेटा व्यवस्थित हो और कहीं भी आपके पास उपलब्ध हो।","WEBSITE_TECH_LINVODB_EXTRA":"इन-हाउस टेक्नोलॉजी","WEBSITE_CREATE_ADDON":"अपना Addon बनाएँ","WEBSITE_CREATE_ADDON_DETAIL":"क्या आपके पास वीडियो सामग्री प्रदान करने वाली सेवा है? हम आपको अपने एडन बनाकर STREMIO की सुविधाओं से लाभान्वित होने में मदद करेंगे।","WEBSITE_CREATE_ADDON_BENEFITS":"स्ट्रैमियो के लिए एक एडन बनाने के लाभ","WEBSITE_P2P_BEAUTY":"पीयर-टू-पीयर स्ट्रीमिंग की सुंदरता","WEBSITE_P2P_1":"मांग या लाइव स्ट्रीमिंग पर विश्वसनीय और किफायती पूर्ण एचडी / 4 के वीडियो","WEBSITE_P2P_2":"वितरण मंच महान उपयोगकर्ता अनुभव प्रदान करते हैं","WEBSITE_P2P_3":"हम आपकी सटीक जरूरतों को पूरा करने वाले एडन को बनाएंगे","WEBSITE_P2P_CONTACT":"इच्छुक? आपका स्वागत है <a href=\'mailto:office@stremio.com\'> हमसे संपर्क करें </a>।","WEBSITE_P2P_CONTACT_EXTRA":"हमें आपकी सामग्री को स्ट्रैमियो के साथ एकीकृत करने में मदद करने में प्रसन्नता होगी!","WEBSITE_P2P":"एक बार थोड़ी देर में ऐसी तकनीक आती है जो गेम का नाम बदलता है। हमने अपने पीयर-टू-पीयर (पी 2 पी) वीडियो स्ट्रीमिंग इंजन के निर्माण में बहुत समय और प्रयास का निवेश किया जो किसी भी उपयोग केस के साथ अनुकूलित करने के लिए महान प्रदर्शन और बहुमुखी प्रतिभा प्रदान करता है। N Drm-सक्षम पी 2 पी वीडियो के लिए मांग या लाइव स्ट्रीमिंग के लिए हमसे संपर्क करें।","WEBSITE_THOUGHTS":"विचार हम साझा करते हैं:","WEBSITE_SPREAD":"स्ट्रैमियो के बारे में शब्द फैलाएं:","WEBSITE_CONTACT":"हमसे संपर्क करें हम आपसे सुनकर खुश होंगे!","WEBSITE_OPENSOURCE":"हमारे ओपन सोर्स प्रोजेक्ट्स के लिए हमारे पास जाते हैं","WEBSITE_BITCOIN":"बिटकॉइन दान करें:","WEBSITE_FAQ":"अक्सर पूछे जाने वाले प्रश्नों","WEBSITE_FAQ_SHORT":"सामान्य प्रश्न","WEBSITE_QUESTIONS":"प्रशन","WEBSITE_TOS":"उपयोग की शर्तें","WEBSITE_LEGAL":"कानूनी","WEBSITE_PAGE_ABOUT":"के बारे में","WEBSITE_PAGE_BECOME_PARTNER":"भागीदार बनें","WEBSITE_ALL_YOU_CAN_WATCH":"आप चाहते हैं Neverything देखने की स्वतंत्रता।","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"स्ट्रैमियो क्या है?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio वीडियो सामग्री एकत्रीकरण के लिए एक-स्टॉप हब है। अपने आप को किसी भी डिवाइस पर सभी प्रकार के स्रोतों से वीडियो व्यवस्थित करें और देखें।","WEBSITE_WHAT_IS_STREMIO_P2":"मूवीज़ टीवी श्रृंखला लाइव टेलीविजन या वेब चैनल जैसे यूट्यूब और ट्विच.टीवी दिखाता है - आप इसे स्ट्रैमियो पर पा सकते हैं।","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio एक आधुनिक मीडिया केंद्र है जो आपके वीडियो मनोरंजन के लिए एक-स्टॉप समाधान है। आप एडॉन्स स्थापित करने के लिए आसान से वीडियो सामग्री को देखते हैं और व्यवस्थित करते हैं।","WEBSITE_WHAT_IS_STREMIO_P2_V2":"मूवीज़ टीवी लाइव टीवी या वेब चैनल दिखाता है - यह सब स्ट्रैमियो पर खोजें।","WEBSITE_ENJOI_ON_ALL_DEVICES":"अपने सभी मीडिया उपकरणों पर आनंद लें","WEBSITE_DEVICES_COLLECT":"STREMIO से लीजिए","WEBSITE_DEVICES_IMPORT_FB":"फेसबुक से आयात करें","WEBSITE_DEVICES_LOCAL":"स्थानीय ड्राइव से जोड़ें","WEBSITE_JOIN_THE_PARTY_NOW":"अब पार्टी में शामिल हों","WEBSITE_DEVICES_ALL":"अपने सभी उपकरणों पर उपयोग करने में आसान;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly विस्तारणीय वीडियो कैटलॉग;","WEBSITE_ORGANIZE_YOUR_MEDIA":"अपने मीडिया को व्यवस्थित करने के लिए महान सुविधाएं;","WEBSITE_AS_SEEN_ON":"जैसा देखा गया","WEBSITE_STREMIO":"स्ट्रमियो","WEBSITE_LINK_ABOUT_US":"हमारे बारे में","WEBSITE_LINK_TECHNOLOGY":"प्रौद्योगिकी","WEBSITE_LINK_APPS":"ऐप्स","WEBSITE_LINK_DOWNLOADS":"डाउनलोड","WEBSITE_MORE":"अधिक","WEBSITE_LINK_ADDONS":"ऐड-ऑन","WEBSITE_LINK_ADDON_SDK":"एडन एसडीके","WEBSITE_LINK_CONTRIBUTE":"योगदान","WEBSITE_LINK_COMMUNITY":"समुदाय","WEBSITE_LINK_BLOG":"ब्लॉग","WEBSITE_MORE_MORE":"... & अधिक","WEBSITE_LINK_HELP":"सहायता केंद्र","WEBSITE_LINK_CONTACTS":"व्यापार पूछताछ","WEBSITE_LINK_TOS":"नियम एवं शर्तें","WEBSITE_LINK_PRAVACY":"गोपनीयता नीति","WEBSITE_SUBSCRIBE":"सदस्यता लेने के","WEBSITE_NEWSLETTER":"अद्भुत सामान के लिए हमारे न्यूजलेटर में शामिल हों","WEBSITE_PLACEHOLDER_EMAIL":"आपका ईमेल","WEBSITE_COMMUNITY":"समुदाय","WEBSITE_LINK_PRAVACY_LEGAL":"गोपनीयता और कानूनी","WEBSITE_WHY":"हम क्यों करते हैं","WEBSITE_WHY_P1":"Stremio में हम हर दिन काम करने के लिए आते हैं क्योंकि हम वीडियो-ऑन-डिमांड उद्योग के लिए एक महत्वपूर्ण समस्या हल करना चाहते हैं। हर मिनट प्रकाशित इतनी नई सामग्री है कि इसके चारों ओर अपना रास्ता ढूंढना लगभग असंभव है।","WEBSITE_WHY_P2":"हम लोगों को वीडियो मनोरंजन की विशाल दुनिया को नेविगेट करने में मदद करते हैं और आनंद लेने के लिए नई सामग्री की खोज करते हैं। हमारे ऐप्स एक साथ फिल्म श्रृंखला लाइव टीवी वेब चैनल और अधिक लाते हैं। हम उपयोगकर्ताओं के लिए शीर्षक और ब्रॉडकास्टरों को ढूंढने के लिए इसे अविश्वसनीय रूप से आसान बनाने के लिए समर्पित हैं।","WEBSITE_WHY_P3":"आप किसी भी डिवाइस पर हमारी सेवा का उपयोग कर सकते हैं और किसी भी समय STREMIO बनाने के लिए एकमात्र वीडियो मनोरंजन हब बनाने के लिए आपको कभी भी आवश्यकता होगी।","WEBSITE_TEAM":"टीम","WEBSITE_TEAM_P":"Stremio टीम छोटा है लेकिन शक्तिशाली है: हम में से दस के बीच हम एक्स भाषाओं में कोड और सॉफ्टवेयर विकास यूआई और यूएक्स डिजाइन विपणन और विज्ञापन और व्यापार और स्टार्टअप में विशेषज्ञता साझा करते हैं।","WEBSITE_FEATURES":"विशेषताएं","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"आसानी से नई सामग्री की खोज करें","WEBSITE_FEATURES_DISCOVER_P":"आसानी से नई फिल्में टीवी शो श्रृंखला और चैनलों को देखने के लिए खोजें। श्रेणी शैली रेटिंग रिकेंसी आदि द्वारा ब्राउज़ करें या बस खोजने के लिए एक नाम टाइप करें। Stremio नई वीडियो सामग्री केक का एक टुकड़ा खोजने बनाता है।","WEBSITE_FEATURES_ALL_CONTENT":"एक स्क्रीन पर आपकी सभी वीडियो सामग्री","WEBSITE_FEATURES_ALL_CONTENT_P1":"देखें कि आप किन फिल्मों या वीडियो को समाप्त नहीं करते हैं और उन्हें देखना जारी रखते हैं; नए एपिसोड और रिलीज के लिए अधिसूचित हो जाएं; और उन सिफारिशों के माध्यम से ब्राउज़ करें जिन्हें आप अपनी देखने की आदतों के आधार पर प्राप्त करेंगे।","WEBSITE_FEATURES_LIBRARY":"अपनी वीडियो लाइब्रेरी व्यवस्थित करें","WEBSITE_FEATURES_LIBRARY_P1":"अपने STREMIO लाइब्रेरी में किसी भी क्लिक के साथ किसी भी शीर्षक को जोड़ें और अपनी सामग्री के चारों ओर अपनी सामग्री को अच्छी तरह से व्यवस्थित रूप से व्यवस्थित तरीके से व्यवस्थित करें।","WEBSITE_FEATURES_CALENDAR":"आप जो कुछ भी देखते हैं उसका ट्रैक रखें","WEBSITE_FEATURES_CALENDAR_P1":"अपनी लाइब्रेरी में आपके द्वारा जोड़े गए सभी फिल्मों और श्रृंखला का कैलेंडर विज़ुअलाइजेशन प्राप्त करें। अपने STREMIO कैलेंडर निर्यात करें और इसे सिंक करें ताकि आप हमेशा जान सकें कि एक नया एपिसोड या प्रीमियर कब देय है।","WEBSITE_FEATURES_BIG_SCREEN":"एक बड़ी स्क्रीन पर अपनी वीडियो सामग्री का आनंद लें","WEBSITE_FEATURES_BIG_SCREEN_P1":"जो भी आप किसी अन्य डिवाइस पर देख रहे हैं उसे कास्ट करें - चाहे वह एक फोन टैबलेट हो या एक क्लिक के साथ एक टीवी हो।","WEBSITE_FEATURES_SOURCES":"कई अलग-अलग स्रोतों से वीडियो देखें","WEBSITE_FEATURES_SOURCES_P":"कई अलग-अलग प्रदाताओं से प्राप्त वीडियो का आनंद लेने के लिए आधिकारिक और सामुदायिक एडॉन्स स्थापित करें - सभी एक चिकना उपयोग करने में आसान ऐप में।","WEBSITE_CREATE_AN_ADDON":"एक एडन बनाएँ","WEBSITE_FEATURES_SYNC":"अपनी लाइब्रेरी को विभिन्न उपकरणों में सिंक करें और अपने प्लेबैक को फिर से शुरू करें","WEBSITE_FEATURES_SYNC_P1":"अपने सभी डिवाइसों में अपने खाते से लॉगिन करें और अपने लाइब्रेरी एडॉन्स प्लेबैक और कैलेंडर सिंक्रनाइज़ का आनंद लें।","WEBSITE_FEATURES_EXTENDABLE":"एडॉन्स द्वारा विस्तारणीय वीडियो कैटलॉग","WEBSITE_FEATURES_EXTENDABLE_P1":"Stremio Addon कैटलॉग विभिन्न प्रकार की वीडियो सामग्री को स्थापित करने और देखने के लिए कई एडॉन्स प्रदान करता है। इसमें फिल्में लाइव टीवी स्पोर्ट न्यूज़ पॉडकास्ट वेब चैनल वीडियो गेम और अधिक दिखाती हैं।","WEBSITE_FEATURES_AUTO_SUBS":"स्वचालित उपशीर्षक","WEBSITE_FEATURES_AUTO_SUBS_P1":"हमारे उपशीर्षक एडॉन्स के साथ आप अपनी पसंदीदा भाषा के लिए स्वचालित रूप से चयनित विकल्प प्राप्त करते हैं।","WEBSITE_FEATURES_CHROMECAST":"क्रोमकास्ट के लिए कास्टिंग","WEBSITE_FEATURES_CHROMECAST_P1":"एक बड़ी स्क्रीन पर अपनी वीडियो सामग्री का आनंद लें या जो भी आप किसी अन्य डिवाइस पर देख रहे हैं उसे डालें।","WEBSITE_FEATURES_KEEP_TRACK":"अपने पसंदीदा टीवी शो और वेब चैनलों का ट्रैक रखें","WEBSITE_FEATURES_KEEP_TRACK_P1":"अपनी पसंदीदा श्रृंखला और वेब चैनलों के नए एपिसोड के लिए कैलेंडर विज़ुअलाइजेशन और नोटिफिकेशन प्राप्त करें।","WEBSITE_FEATURES_POWER_USER":"पावर उपयोगकर्ता सुविधाएँ","WEBSITE_FEATURES_POWER_USER_P1":"बाहरी खिलाड़ी में खेलें","WEBSITE_FEATURES_POWER_USER_P2":"एक टोरेंट फ़ाइल या चुंबक लिंक से खेलें","WEBSITE_FEATURES_POWER_USER_P3":"फेसबुक पसंद या स्थानीय डिस्क से अपनी लाइब्रेरी में आयात करें","WEBSITE_ADD_ONS":"ऐड-ऑन","WEBSITE_ADD_ONS_P1":"सभी वीडियो सामग्री Stremio एक एडन सिस्टम के माध्यम से सोर्स प्रदान की जाती है - ऐप में कोई सामग्री या सामग्री प्रदाता नहीं बनाया गया है।","WEBSITE_ADD_ONS_P2":"एडॉन्स के दो समूह उपलब्ध हैं: आधिकारिक और सामुदायिक एडॉन्स।","WEBSITE_ADD_ONS_P3":"आधिकारिक लोगों को Stremio द्वारा विकसित और होस्ट किया गया है जबकि सामुदायिक एडॉन्स हमारे समुदाय के सदस्यों द्वारा बनाए जाते हैं जो उन्हें भी होस्ट करते हैं।","WEBSITE_ADDONS_OFFICIAL":"सरकारी Addons","WEBSITE_ADDONS_WATCHUB":"अपनी पसंदीदा फिल्में श्रृंखला को स्ट्रीम करें और आईट्यून्स हूलू अमेज़ॅन और अन्य यूके / यूएस सेवाओं जैसे प्रदाताओं से दिखाएं।","WEBSITE_ADDONS_YOUTUBE":"अपने पसंदीदा यूट्यूब चैनलों को विज्ञापन मुक्त देखें और आपके द्वारा अनुसरण किए गए योगदानकर्ताओं से नए अपलोड के लिए अधिसूचनाएं प्राप्त करें।","WEBSITE_ADDONS_FILMON":"मुफ्त में लाइव टीवी फिल्में और सामाजिक टेलीविजन देखें। 600 टीवी चैनल 45000 मुफ्त फिल्में वृत्तचित्र और अधिक।","WEBSITE_ADDONS_OPENSUBTITLES":"मूवी और टीवी उपशीर्षक कई भाषाओं में हजारों अनुवादित उपशीर्षक हर दिन अपलोड किए गए।","WEBSITE_ADDONS_COMMUNITY":"सामुदायिक एडॉन्स","WEBSITE_ADDONS_FILMON_VOD":"फिल्मऑन.टीवी से मांग पर वीडियो देखें","WEBSITE_ADDONS_TWICH":"Twitch.tv से लाइव स्ट्रीम देखें - ई-स्पोर्ट्स उद्योग के लिए एक वीडियो स्ट्रीमिंग प्लेटफ़ॉर्म।","WEBSITE_ADDONS_VODO":"इंडी फिल्में पूरी तरह से नि: शुल्क देखें।","WEBSITE_ADDONS_NETFLIX":"नेटफ्लिक्स फिल्में और वेब श्रृंखला देखें।","WEBSITE_ADDONS_CREATE":"एक एडन बनाएँ","WEBSITE_ADDONS_CREATE_P1":"यदि आप चाहें तो आप अपना खुद का एडन विकसित कर सकते हैं। इस तरह आप अपने आप को और हमारी सामुदायिक पहुंच को नई वीडियो सामग्री तक पहुंचा सकते हैं और दुनिया भर के लाखों उपयोगकर्ताओं के एक नए लक्षित दर्शकों तक पहुंच सकते हैं।","WEBSITE_ADDONS_START_CREATE":"शुरू करने के लिए Stremio Addon SDK पृष्ठ पर जाएं:","WEBSITE_DOWNLOADS":"डाउनलोड","WEBSITE_DOWNLOADS_P1":"इष्टतम प्रदर्शन के लिए हम अनुशंसा करते हैं कि आप STREMIO ऐप्स के नवीनतम उपलब्ध संस्करण का उपयोग करें। यदि किसी कारण से आप पुराने संस्करण का उपयोग करना चाहते हैं तो आप इसे यहां डाउनलोड कर सकते हैं।","WEBSITE_DOWNLOADS_FOR_WIN":"खिड़कियों के लिए STREMIO","WEBSITE_DOWNLOADS_FOR_MAC":"मैकोज़ के लिए स्ट्रेमियो","WEBSITE_DOWNLOADS_FOR_LINUX":"लिनक्स के लिए STREMIO","WEBSITE_DOWNLOADS_FOR_ANDROID":"एंड्रॉइड के लिए स्ट्रेमियो","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"आईओएस के लिए स्ट्रेमियो (सीमित संस्करण)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"योगदान","WEBSITE_CONTRIBUTE_P1":"Stremio प्लेटफ़ॉर्म ओपन सोर्स है और आप आसानी से उस सामग्री के लिए एक एडन बना सकते हैं जो वर्तमान में सोर्स नहीं है।","WEBSITE_CONTRIBUTE_WHY":"आपको एडन क्यों बनाना चाहिए?","WEBSITE_CONTRIBUTE_WHY_P1":"अपनी वीडियो सामग्री के लिए नए दर्शकों तक पहुंचें","WEBSITE_CONTRIBUTE_WHY_P2":"स्ट्रैमियो का उपयोगकर्ता आधार तेजी से बढ़ रहा है - लॉन्च स्ट्रैमियो के पहले वर्ष के भीतर दुनिया भर में 1 मिलियन उपयोगकर्ता प्राप्त हुए थे और प्लेटफॉर्म के अस्तित्व के दूसरे वर्ष में यह संख्या 2.5 मिलियन हो गई थी।","WEBSITE_CONTRIBUTE_WHY_P3":"अपने एडन के साथ आप आसानी से इस दर्शकों तक पहुंच सकते हैं और अपनी वीडियो सामग्री को वितरित कर सकते हैं।","WEBSITE_CONTRIBUTE_ALL":"एक ही स्थान पर अपनी पसंदीदा फिल्में वीडियो श्रृंखला और चैनल देखें।","WEBSITE_CONTRIBUTE_ALL_P1":"आप एक विशेष प्रकार की सामग्री के प्रशंसक हैं जो अभी तक स्ट्रैमियो पर उपलब्ध नहीं हैं? इसके लिए एक एडन बनाएं और अपने पसंदीदा वीडियो को बाजार पर मनोरंजन केंद्रों का उपयोग करने के लिए सबसे बड़े और आसान में से एक में देखने का आनंद लें।","WEBSITE_CONTRIBUTE_ALL_P2":"इसके शीर्ष पर आपको अन्य समान विचारधारा वाले स्ट्रैमियो समुदाय के सदस्यों का अंतहीन आभार मिलेगा।","WEBSITE_CONTRIBUTE_MONETIZE":"अपने एडन का मुद्रीकरण करें और अपनी मदद से पैसे कमाएं","WEBSITE_CONTRIBUTE_MONETIZE_P1":"एक बार जब आप STREMIO के लिए एक नया एडन विकसित कर लेंगे तो आप आसानी से इसे कई अलग-अलग तरीकों से मुद्रीकृत कर सकते हैं। यदि आप इस पर विचार कर रहे हैं कि इस पर संपर्क करने के लिए स्वतंत्र महसूस करें","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - हम एडन मुद्रीकरण विकल्पों के बारे में परामर्श करने और सलाह देने में प्रसन्न होंगे।","WEBSITE_CONTRIBUTE_TRANSLATE":"एक स्वयंसेवक अनुवादक बनें","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"यदि आप विभिन्न भाषाओं में स्ट्रैमियो ऐप्स का आनंद लेना चाहते हैं तो आप स्वयंसेवी अनुवादकों के हमारे समुदाय में शामिल हो सकते हैं। वे हमें कई अलग-अलग भाषाओं में stremio के संस्करण जोड़ने में मदद करते हैं।","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"क्या आप शुरू करने के लिए उत्सुक हैं?","WEBSITE_TRANSALTE_STREMIO":"STREMIO का अनुवाद करें","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"सरकारी समुदाय","WEBSITE_COMMUNITY_OFFICIALS_P1":"बढ़ते स्ट्रैमियो समुदाय का हिस्सा बनें। सोशल मीडिया पर हमें का पालन करें और नमस्ते कहने के लिए शर्मिंदा न हों - हम अपने प्रशंसकों से सुनवाई पसंद करते हैं!","WEBSITE_COMMUNITY_UNOFFICIALS":"अनौपचारिक समुदाय","STREMIO_COMMUNITY_NL":"स्ट्रीमियो नीदरलैंड्स","STREMIO_COMMUNITY_BRASIL":"स्ट्रीमियो ब्रासिल","STREMIO_COMMUNITY_GERMANY":"Stremio जर्मनी","STREMIO_COMMUNITY_BELGIUM":"स्ट्रमियो बेल्जियम","STREMIO_COMMUNITY_FRANCE":"स्ट्रमियो फ्रांस","STREMIO_COMMUNITY_PORTUGAL":"स्ट्रमियो पुर्तगाल","STREMIO_COMMUNITY_ITALY":"स्ट्रीमियो इटली","STREMIO_COMMUNITY_UK":"स्ट्रमियो ब्रिटेन","STREMIO_COMMUNITY_USA":"स्ट्रमियो यूएसए","STREMIO_COMMUNITY_MEXICO":"Stremio मेक्सिको","STREMIO_COMMUNITY_ADDONS":"स्ट्रमियो एडॉन्स","STREMIO_COMMUNITY_AWESOME":"भयानक STREMIO","WEBSITE_COMMUNITY_PARTNERS":"भागीदारों और समर्थक","WEBSITE_COMMUNITY_GOODIES":"Stremio उपहार","WEBSITE_COMMUNITY_WALLPAPERS":"वॉलपेपर","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"संपर्क करें","WEBSITE_CONTACT_US_P1":"यदि आपके कोई प्रश्न हैं तो टिप्पणियां या सुझाव नीचे दिए गए संपर्क फ़ॉर्म के माध्यम से हमारे संपर्क में आने के लिए स्वतंत्र महसूस करते हैं।","WEBSITE_CONTACT_US_P2":"ध्यान रखें कि हम बुल्गारिया में स्थित हैं इसलिए समय क्षेत्र के अंतर के कारण आपकी क्वेरी को संबोधित करने में देरी हो सकती है।","WEBSITE_CONTACT_US_SUCCESS":"आपका संदेश भेज दिया गया है। हम आपकी सबसे पुरानी सुविधा पर आपके पास वापस आ जाएंगे।","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"कृपया एक मान्य ईमेल पता प्रवेश करें!","WEBSITE_CONTACT_US_Q_RELATED_TO":"आपका प्रश्न किससे संबंधित है?","WEBSITE_CONTACT_US_Q_OS":"आपका ऑपरेशन सिस्टम क्या है?","WEBSITE_CONTACT_US_PH_EMAIL":"आपका ईमेल","WEBSITE_CONTACT_US_PH_MESSAGE":"संदेश","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"भेजना","WEBSITE_CONTACT_US_Q_1":"स्थापित करने के लिए कैसे?","WEBSITE_CONTACT_US_Q_2":"अनइंस्टॉल कैसे करें?","WEBSITE_CONTACT_US_Q_3":"(HTML) Lasagna कैसे बनाया जाए?","WEBSITE_CONTACT_US_Q_4":"ऐड-ऑन","WEBSITE_CONTACT_US_OS_1":"खिड़कियाँ","WEBSITE_CONTACT_US_OS_2":"मैक ओ एस","WEBSITE_CONTACT_US_OS_3":"लिनक्स","WEBSITE_CONTACT_US_OS_4":"एंड्रॉयड","WEBSITE_CONTACT_US_OS_5":"आईओएस","WEBSITE_TECHNOLOGY":"प्रौद्योगिकी","WEBSITE_TECHNOLOGY_P1":"हम प्रौद्योगिकी और पागल विज्ञान से प्यार करते हैं। </br> यहां शक्तियां क्या हैं (यह सब ओपन-सोर्स है)।","WEBSITE_TECHNOLOGY_P_QT":"क्रॉस-प्लेटफार्म सॉफ्टवेयर विकास सबसे अच्छा है।","WEBSITE_TECHNOLOGY_P_MPV":"एक मुक्त ओपन सोर्स और क्रॉस-प्लेटफार्म मीडिया प्लेयर।","WEBSITE_TECHNOLOGY_P_RN":"प्रतिक्रिया देशी आपको केवल जावास्क्रिप्ट का उपयोग करके मोबाइल ऐप्स बनाने देता है।","WEBSITE_TECHNOLOGY_P_VLC":"मल्टीमीडिया प्राप्त करने के लिए आवेदन में एम्बेडेड मीडिया फ्रेमवर्क।","WEBSITE_TECHNOLOGY_P_REALM":"दायरे एक मोबाइल मंच और SQLite और कोर डेटा के लिए एक प्रतिस्थापन है।","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js एक ओपन-सोर्स क्रॉस-प्लेटफार्म जावास्क्रिप्ट रनटाइम पर्यावरण है।","WEBSITE_TECHNOLOGY_P_RUST":"जंग एक बहु-प्रतिमान प्रणाली प्रोग्रामिंग भाषा है जो सुरक्षा पर विशेष रूप से सुरक्षित सहमति पर केंद्रित है।","WEBSITE_TECHNOLOGY_CONTRIBUTE":"परियोजना में योगदान","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"STREMIO में दो तरीके हैं और उत्पाद को बेहतर बनाने में हमारी सहायता करें।","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"आप मंच का अनुवाद करके अपने मूल्यवान भाषा कौशल दान कर सकते हैं ...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"या","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... आप समुदाय के एडॉन्स बनाने के लिए अपने कोडिंग कौशल को नियोजित कर सकते हैं।","WEBSITE_TRANSLATE_STREMIO":"STREMIO का अनुवाद करें","WEBSITE_404_OH_NO":"उह ओह! जिस पृष्ठ को आप ढूंढ रहे हैं वह यहां नहीं है ...","WEBSITE_GO_HOME":"घर जाओ","WEBSITE_LINK_OTHER_DOWNLOADS":"अन्य डाउनलोड","WEBSITE_FAQ_ABR":"सामान्य प्रश्न","WEBSITE_SUPPORT":"सहायता","WEBSITE_DOWNLOAD_4_0_BETA":"अब Stremio 4 बीटा डाउनलोड करें","WEBSITE_GET_FOR_DESKTOP":"डेस्कटॉप के लिए जाओ","WEBSITE_LINK_ADDON_COMPETITION":"एडन प्रतियोगिता","WEBSITE_LINK_ART_CONTEST":"कला प्रतियोगिता","WEBSITE_MY_ACCOUNT":"मेरा खाता","WEBSITE_MAINPAGE_FAQ_001_H1":"स्ट्रैमियो क्या है?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio एक आधुनिक मीडिया केंद्र है जो आपको जो कुछ भी आप चाहते हैं उसे देखने की स्वतंत्रता देता है।","WEBSITE_MAINPAGE_FAQ_002_H1":"यह कैसे काम करता है?","WEBSITE_MAINPAGE_FAQ_002_P1":"एक बार जब आप अपने डिवाइस पर STREMIO स्थापित कर लेंगे और एक खाता बनाएं जो आपको करना है, वह एडन कैटलॉग पर जाना है और इच्छित किसी भी एडन को स्थापित करना है और आप जाने के लिए अच्छे हैं!","WEBSITE_MAINPAGE_FAQ_002_P2":"इसके बाद आप सामग्री की खोज शुरू करने के लिए खोज या बोर्ड अनुभागों में जा सकते हैं।","WEBSITE_MAINPAGE_FAQ_003_H1":"मैं यहाँ क्या देख सकता हूँ?","WEBSITE_MAINPAGE_FAQ_003_P1":"ए लॉट: मूवीज़ टीवी शो वेब चैनल स्पोर्ट टीवी चैनल पॉडकास्ट और अधिक सुनते हैं। हमारे एडन सिस्टम के लिए धन्यवाद, आप विभिन्न प्रकार की सामग्री तक पहुंच सकते हैं।","WEBSITE_MAINPAGE_FAQ_004_H1":"क्या स्टेमियो ओपन-सोर्स है?","WEBSITE_MAINPAGE_FAQ_004_P1":"हां आप निम्न लिंक देख सकते हैं: $ {1} डेस्कटॉप ऐप $ {2} और $ {3} github संगठन $ {4}।","WEBSITE_MAINPAGE_FAQ_005_H1":"क्या स्ट्रैमियो सुरक्षित है?","WEBSITE_MAINPAGE_FAQ_005_P1":"हां: क्योंकि यह ओपन-सोर्स सॉफ़्टवेयर है कोड पब्लिक रूप से ऑडिटेबल है और आप इसे स्वयं की समीक्षा कर सकते हैं।","WEBSITE_MAINPAGE_FAQ_006_H1":"मेरी गोपनीयता के बारे में कैसे?","WEBSITE_MAINPAGE_FAQ_006_P1":"हम उपयोगकर्ताओं की गोपनीयता का सम्मान करते हैं और आपके खाते को बनाने और सिंक करने के लिए आवश्यक न्यूनतम के अलावा कोई व्यक्तिगत डेटा एकत्र नहीं करते हैं।","WEBSITE_MAINPAGE_FAQ_006_P2":"साइनअप पर $ {1} अतिथि मोड $ {2} भी है जिसके लिए कोई डेटा नहीं चाहिए: इस मोड में हमारे बैकएंड में कोई कॉल नहीं की जाती है। हालांकि यह उपयोगी सुविधाओं की कीमत पर आता है जैसे कि डिवाइस पर अपनी लाइब्रेरी को सिंक करने में सक्षम होना।","WEBSITE_MAINPAGE_FAQ_007_H1":"क्या मैं अपने टीवी को डाला जा सकता हूं?","WEBSITE_MAINPAGE_FAQ_007_P1":"हां हम क्रोमकास्ट का समर्थन करते हैं और आप डेस्कटॉप और मोबाइल ऐप्स (एंड्रॉइड) दोनों से डाले जा सकते हैं।","WEBSITE_MAINPAGE_FAQ_008_H1":"स्ट्रैमियो में कितने एडॉन्स हैं?","WEBSITE_MAINPAGE_FAQ_008_P1":"2019 से अधिक के अंत तक - अधिक जानकारी के लिए हमारे एडन कैटलॉग की जांच करें।","WEBSITE_MAINPAGE_FAQ_009_H1":"Addon कैटलॉग में क्या है परे stremio विस्तारित किया जा सकता है?","WEBSITE_MAINPAGE_FAQ_009_P1":"हां आपको उन लोगों की जांच करनी चाहिए: $ {1} pimpmystremio $ {2} $ {3} Reddit समुदाय $ {4} $ {5} STREMIO डाउनलोडर $ {6} आदि","WEBSITE_MAINPAGE_FAQ_010_H1":"Stremio किस डिवाइस का समर्थन करता है?","WEBSITE_MAINPAGE_FAQ_010_P1":"हमारे पास विंडोज मैक और लिनक्स के लिए डेस्कटॉप ऐप्स हैं। मोबाइल के लिए हम एंड्रॉइड और आईओएस का समर्थन करते हैं हालांकि ध्यान रखें कि आईओएस कार्यक्षमता में सीमित है (अधिकांश एडॉन्स का समर्थन नहीं करता है)।","WEBSITE_MAINPAGE_FAQ_010_P2":"ऐसे कई एंड्रॉइड-आधारित डिवाइस हैं जिन्हें आप एनवीआईडीआईए शील्ड और अमेज़ॅन फायर स्टिक की तरह स्ट्रैमियो चला सकते हैं लेकिन हम आधिकारिक तौर पर उनका समर्थन नहीं करते हैं।","WEBSITE_MAINPAGE_FAQ_011_H1":"क्या आप STREMIO में कुछ सामग्री जोड़ सकते हैं?","WEBSITE_MAINPAGE_FAQ_011_P1":"क्षमा करें, हम खुद को कोई सामग्री प्रदान नहीं करते हैं लेकिन अधिक स्ट्रैमियो एडॉन्स आपने अधिक सामग्री स्थापित की है जिसे आप ढूंढ पाएंगे।","WEBSITE_MAINPAGE_FAQ_012_H1":"क्या स्ट्रैमियो चुंबक लिंक चला सकते हैं?","WEBSITE_MAINPAGE_FAQ_012_P1":"हां और यह सामान्य HTTP लिंक और टोरेंट फ़ाइलों (ड्रैग और ड्रॉप) भी चला सकता है।","WEBSITE_MAINPAGE_FAQ_013_H1":"क्या मैं एक वीडियो डाउनलोड कर सकता हूं और ऑफ़लाइन देख सकता हूं?","WEBSITE_MAINPAGE_FAQ_013_P1":"उपलब्ध ऑफ़लाइन एक आगामी सुविधा है लेकिन यदि आप अपने डिवाइस (सेटिंग्स पैनल से) को कैश करने की अनुमति देते हैं तो आप बिना किसी कनेक्शन के वीडियो देख सकते हैं।","WEBSITE_MAINPAGE_FAQ_014_H1":"कुछ भी नहीं काम करता है मेरी मदद करो!","WEBSITE_MAINPAGE_FAQ_014_P1":"क्या आप वाकई स्थापित किए गए हैं? यदि हां हमारे $ {1} सहायता केंद्र $ {2} से जांचें।","WEBSITE_MAINPAGE_FAQ_015_H1":"Stremio यह विकास संचालन को कैसे बनाए रखता है?","WEBSITE_MAINPAGE_FAQ_015_P1":"हम कभी-कभी गैर-दखल देने वाले विज्ञापन चलाते हैं, लेकिन हम दान मॉडल पर जाने पर विचार कर रहे हैं।","WEBSITE_MAINPAGE_FAQ_015_P2":"अधिक प्रश्नों के लिए हमारे $ {1} सहायता केंद्र $ {2} पर जाएं।","HELP_LEARN_MORE":"हमारे बारे में अधिक जानने में हमारी सहायता करें।","LIFESTYLE":"बॉलीवुड","SPORTS":"खेल","FOOD_HEALTH":"भोजन और स्वास्थ्य","BEAUTY_FASHION":"सौंदर्य और फैशन","NEWS":"समाचार","GAMING":"जुआ","SCIENCE_EDUCATION":"विज्ञान की पढ़ाई","MUSIC":"संगीत","TRAVEL":"यात्रा","LATE_NIGHT":"देर रात","REALITY":"वास्तविकता","COMEDY":"कॉमेडी","DIY":"DIY कैसे करें","TECH":"तकनीक","CINEMA":"सिनेमा","CONTINUE":"जारी रखें","SLOW_LOADING":"धीमी लोडिंग?","I_GIVE_UP":"मैं हार मानता हूं","LEARN_MORE":"और अधिक जानें","POOR_SOURCE":"यह स्रोत खराब उपलब्ध है या आपका इंटरनेट कनेक्शन पर्याप्त तेज़ नहीं है","PICK_CATEGORIES_ERR":"आपको कम से कम 3 श्रेणियां चुननी होंगी","ADJUST_TIMING":"के साथ समय समायोजित करें","ADJUST_SIZE":"के साथ आकार समायोजित करें","SEARCH_ANYTHING":"आप कुछ भी खोज सकते हैं ...","ALL_CATEGORIES":"सभी","SEARCH_CATEGORIES":"सिनेमा श्रृंखला यूट्यूब और टीवी","SEARCH_PERSONS":"अभिनेता निदेशकों और लेखकों","SEARCH_PROTOCOLS":"HTTP और चुंबक लिंक","SEARCH_TYPES":"आईएमडीबी / टीवीडीबी लिंक","WATCHED":"देखे","SHOW_LESS":"कम दिखाएं","LAST_SEARCHES":"अंतिम खोज","CLEAR_HISTORY":"इतिहास मिटा दें","CHOOSE_SOME":"इनमें से कुछ चुनें:","NO_WEB_REMOTE":"वेब रिमोट लोड नहीं किया जा सका","STREMIO_OFFLINE":"Stremio ऑफ़लाइन है","STREMIO_EXPENSIVE_CONNECTION":"हमने पाया है कि आप मोबाइल डेटा कनेक्शन का उपयोग कर रहे हैं क्या आप जारी रखना चाहते हैं?","USE_DATA":"डेटा का उपयोग करें","WARNING":"चेतावनी","MORE_INFO":"और जानकारी ...","STREMIO_TV_STREMIO":"स्ट्रमियो","STREMIO_TV_LOADING":"लोड हो रहा है ...","STREMIO_TV_BACK_TO_LANGUAGES":"वापस भाषाओं में","STREMIO_TV_REMOTE":"दूरस्थ","STREMIO_TV_GO_TO":"के लिए जाओ:","STREMIO_TV_OR_SCAN":"या स्कैन:","STREMIO_TV_ADDON_INSTRUCTIONS":"कृपया अपने पसंदीदा एडॉन्स को स्थापित करने के लिए निर्देशों का पालन करें।","STREMIO_TV_LIVE_TV":"लाइव टीवी","STREMIO_TV_RESUME_WATCHING":"फिर से देखना","STREMIO_TV_LOADING_BACKGROUND":"लोड हो रहा है पृष्ठभूमि","STREMIO_TV_CHECKING_AUTHENTICATION":"प्रमाणीकरण की जाँच","STREMIO_TV_LOADING_BOARD":"लोड हो रहा हुकुम","STREMIO_TV_LOGIN_HEADER_LINE_1":"हम चाहते हैं कि हमारे उपयोगकर्ताओं को हमारे सॉफ़्टवेयर के साथ सर्वोत्तम संभव व्यक्तिगत अनुभव हो।","STREMIO_TV_LOGIN_HEADER_LINE_2":"यही कारण है कि हम आपको अपने खाते में बनाने और / या लॉगिन करने के लिए कहेंगे।","STREMIO_TV_LOGIN_FOOTER_LINE_1":"समझने के लिए धन्यवाद","STREMIO_TV_LOGIN_FOOTER_LINE_2":"STREMIO टीम","STREMIO_TV_REMOTE_INSTRUCTIONS":"अपने स्मार्टफोन / टैबलेट / डेस्कटॉप के साथ वेब रिमोट का उपयोग करने के लिए:","STREMIO_TV_WIFI_SETUP":"वाई-फाई सेटअप","STREMIO_TV_WIFI_HEADER_LINE_1":"स्ट्रमियो सर्कल ने इंटरनेट कनेक्शन का पता नहीं लगाया।","STREMIO_TV_WIFI_DETAILS_1":"जुड़े:","STREMIO_TV_WIFI_DETAILS_2":"स्ट्रमियो-सर्कल","STREMIO_TV_WIFI_DETAILS_3":"पासवर्ड का प्रयोग करें:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"लिंक के साथ एक वेब ब्राउज़र खोलें:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"खोज","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"चैनल","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"समायोजन","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"खाते लिंक करें","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"खोज","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"साफ़","STREMIO_TV_SEARCH_HISTORY_TITLE":"खोज इतिहास","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"खोज इतिहास साफ़ करे","STREMIO_TV_FILTERS_DESCRIPTION":"नीचे दिए गए किसी एक फ़िल्टर में से चुनें","FILTERS":"फिल्टर","SETTINGS":"समायोजन","ACCOUNT":"खाता","LOGOUT":"लॉग आउट","THEMES":"Themes","PLAYBACK":"प्लेबैक","PLAYBACK_SPEED":"प्लेबैक स्पीड","AUDIO_TRACKS":"ऑडियो ट्रैक","VIDEOS":"वीडियो","SERVER":"सर्वर","LINKS":"Links","ABOUT":"के बारे में","INTERFACE":"इंटरफेस","ANIMATIONS":"एनिमेशन","STATUS":"Status","LANGUAGE":"भाषा","SIZE":"आकार","DELAY":"देरी","BOLD":"बोल्ड","TEXT_COLOR":"लिखावट का रंग","OUTLINE_COLOR":"रूपरेखा रंग","BACKGROUND_COLOR":"पीछे का रंग","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"समय अवधी देखे","AUTO_PLAY":"अगला एपिसोड अपने आप चालू करे","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"देखे गए के रूप में चिह्नित करें","MARK_AS_UNWATCHED":"अनदेखे के रूप में चिह्नित करें","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"देखणा चालू रखे","ALL":"सारे","SECONDS":"सेकंद्स","ON":"चालू","OFF":"बंद","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"स्विच डिवाइस","REMOTE_VIDEOS":"वीडियो","REMOTE_ADJUST_TIMING":"समय समायोजित करें","REMOTE_ADJUST_SIZE":"आकार समायोजित करें","REMOTE_COULD_NOT_BE_LOADED":"वेब रिमोट लोड नहीं किया जा सका","REMOTE_RETRY":"पुन: प्रयास करें","TORRENT_PROFILE_DEFAULT":"डिफ़ॉल्ट","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"स्ट्रैमियो क्या है?","FAQ_001_P1":"Stremio एक मीडिया सेंटर सॉफ्टवेयर है जो वीडियो मनोरंजन के लिए दिमाग में उपयोग के साथ डिज़ाइन किया गया है। STREMIO आपको व्यवस्थित करने की अनुमति देता है & amp; फिल्म श्रृंखला चैनल और लाइव टीवी का अपना संग्रह देखें।","FAQ_001_P2":"Stremio सामग्री को एकत्रित करें जो आपको अपनी स्थानीय डिस्क और हमारे एडॉन्स सिस्टम से दिखाता है।","FAQ_001_P3":"यह आपको यह भी सूचित करेगा कि नए एपिसोड / वीडियो / फिल्में जो आप में रुचि रखते हैं और आपके लिए मूवी सिफारिशें प्रदान करते हैं।","FAQ_02_H1":"STREMIO KODI और PLEX की तुलना कैसे करता है?","FAQ_02_P1":"हम सॉफ्टवेयर के उन दो टुकड़ों से प्रेरित हैं। लेकिन हमारे पास अलग-अलग लक्ष्य हैं - स्ट्रैमियो विशेष रूप से मनोरंजन वीडियो की ओर लक्षित है और इसका उपयोग करने में आसान होने के लिए मुख्यधारा के समाधान बनने का प्रयास करता है।","FAQ_02_P2":"स्ट्रैमियो कभी भी अनुकूलन योग्य और कोडी और प्लेक्स के रूप में समृद्ध नहीं होगा, लेकिन इसका उपयोग करना काफी आसान है। बस $ {1} इसे प्राप्त करें और $ {2} देखें :)","FAQ_03_H1":"Stremio नेटफ्लिक्स की तुलना कैसे करता है?","FAQ_03_P1":"फिर से नेटफ्लिक्स हमारी प्रेरणाओं में से एक है। हम नेटफ्लिक्स के उपयोगकर्ता अनुभव को बहुत से अतिरिक्त उपहारों को प्राप्त करने का प्रयास करते हैं। लेकिन सबसे महत्वपूर्ण बात यह है कि हम आपको अपनी लाइब्रेरी प्रबंधित करने और हमारे एडन सिस्टम के साथ नए सामग्री स्रोत जोड़ने की स्वतंत्रता दे रहे हैं।","FAQ_03_P2":"इससे स्ट्रैमियो असीमित रूप से विस्तार योग्य बनाता है, इसलिए जब आप स्ट्रैमियो का उपयोग करते हैं तो आप कभी भी सामग्री से सीमित नहीं होते हैं नेटफ्लिक्स लाइसेंस का फैसला करता है। उदाहरण के लिए स्ट्रैमियो के माध्यम से आप $ {1} filmon.tv $ {2} $ {3} twitch.tv $ {4} $ {5} youtube $ {6} $ {7} वोडो $ {8} और से सामग्री देख सकते हैं यहां तक ​​कि $ {9} netflix $ {10} ही!","FAQ_04_H1":"स्ट्रैमियो फ्लिपबोर्ड की तुलना कैसे करता है?","FAQ_04_P1":"हमें वह सवाल नहीं मिलता है जो अक्सर लोगों को स्टार्ट-अप करने के लिए छोड़कर को छोड़कर :)","FAQ_04_P2":"Stremio एक सामग्री एग्रीगेटर डिजाइन द्वारा है जो अनिवार्य रूप से इसे वीडियो के लिए फ्लिपबोर्ड बनाता है। यह हमारे बोर्ड सेक्शन में बहुत स्पष्ट है जो आपको फ्लिपबोर्ड की तरह अनुसरण करने के लिए कैटलॉग और नया एपिसोड / नई वीडियो अधिसूचना देता है।","FAQ_05_H1":"Stremio पॉपकॉर्न समय की तुलना कैसे करता है?","FAQ_05_P1":"Stremio और पॉपकॉर्न समय उपयोगकर्ता इंटरफ़ेस में समान हैं क्योंकि वीडियो मनोरंजन कैटलॉग सही करने के कई तरीके नहीं हैं :)","FAQ_05_P2":"लेकिन पॉपकॉर्न टाइम विशिष्ट स्रोतों से टॉरेंट स्ट्रीमिंग पर केंद्रित है Stremio अप्रतिबंधित है और केवल एक सामग्री एग्रीगेटर है - यह एक विशिष्ट सामग्री स्रोत में बंद नहीं है।","FAQ_05_P3":"इसके अलावा हम डिफ़ॉल्ट रूप से किसी भी टोरेंट एडॉन्स प्रदान नहीं करते हैं, इसलिए स्ट्रैमियो को आधिकारिक कार्यक्षमता के साथ पॉपकॉर्न टाइम उपयोग-केस को कवर नहीं किया जाता है।","FAQ_05_P4":"एक और उल्लेखनीय अंतर यह है कि पॉपकॉर्न टाइम पूरी तरह से खुला स्रोत है जबकि Stremio $ {1} आंशिक रूप से ओपन सोर्स $ {2} है।","FAQ_06_H1":"क्या आप इस फिल्म / श्रृंखला को जोड़ देंगे?","FAQ_06_P1":"कोई खेद नहीं :(","FAQ_06_P2":"जैसा कि अन्य प्रश्नों में उल्लेख किया गया है Stremio स्वयं से कोई सामग्री प्रदान नहीं करता है - सब कुछ एडॉन्स सिस्टम के माध्यम से जोड़ा जाता है। यदि आपके पास कोई सामग्री अनुरोध है तो आप उस खिलाड़ी में रिपोर्ट बटन का उपयोग कर सकते हैं जो वर्तमान में आपके द्वारा उपयोग किए जा रहे एडन के लेखक को एक ईमेल भेज देगा।","FAQ_07_H1":" ","FAQ_07_P1":" ","FAQ_07_P2":" ","FAQ_08_H1":"क्या आप एक्स के लिए एडन बनाएंगे?","FAQ_08_P1":"यह पूरी तरह से संभव है।","FAQ_08_P2":"यदि आपके पास Addon के लिए एक विचार है तो हमें $ {1} office@stremio.com पर एक लाइन छोड़ें, लेकिन कृपया सुनिश्चित करें कि आपका एडन विचार किसी भी कॉपीराइट या उपयोग की शर्तों का उल्लंघन नहीं करेगा।","FAQ_08_P3":"फिलहाल हमारे रोडमैप पर अगली चीजें मांग और क्रंचरोल पर fandangonow filmon.tv वीडियो के लिए Addons हैं।","FAQ_09_H1":"क्या Stremio बिटटोरेंट का उपयोग करता है?","FAQ_09_P1":"हां स्ट्रैमियो एक स्ट्रीमिंग प्रोटोकॉल के रूप में बिटटोरेंट का समर्थन करता है। आप या तो एक टोरेंट एडन के साथ या ड्रैग-एंड-ड्रॉप करके एक .torrent फ़ाइल को स्ट्रैमियो में या एक चुंबक लिंक को खोज बार में चिपकाने के साथ कर सकते हैं।","FAQ_09_P2":"कृपया ध्यान दें कि बिटटोरेंट का उपयोग कर एकमात्र आधिकारिक एडन $ {1} वोडो $ {2} है जो इंडी सामग्री प्रदान करता है सभी को बिटटोरेंट के साथ वितरित करने की अनुमति है।","FAQ_09_P3":"हम किसी तीसरे पक्ष के एडॉन्स के उपयोग का समर्थन नहीं करते हैं जो कॉपीराइट उल्लंघन को सक्षम कर सकता है।","FAQ_10_H1":"आधिकारिक एडॉन्स के साथ स्ट्रैमियो में मैं क्या देख सकता हूं?","FAQ_10_P1":"डिफ़ॉल्ट रूप से आप अपने एम्बेडेड प्लेयर के साथ स्ट्रैमियो के भीतर फिल्मऑन.टीवी यूट्यूब और वोडो सामग्री देख सकते हैं। इसके अतिरिक्त हमारे पास twitch.tv और कुछ अन्य लोगों के लिए एक एडन है।","FAQ_10_P2":"यह संयुक्त का चयन प्रदान करता है:","FAQ_10_L1":"Filmon.tv द्वारा प्रदान किए गए लोकप्रिय टीवी चैनल - उदाहरण के लिए ई 4 बीबीसी बॉलीवर्ल्ड टीवी","FAQ_10_L2":"यूट्यूब से सब कुछ - उदाहरण के लिए बीबीसी समाचार शीर्ष गियर vevo pewdiepie","FAQ_10_L3":"वोडो के साथ इंडी फिल्में","FAQ_10_L4":"Twitch.tv के साथ ऑनलाइन गेमिंग प्रसारण","FAQ_10_P3":"इसके अतिरिक्त गाइडबॉक्स और नेटफ्लिक्स एडॉन्स के साथ प्रदान किए गए कई सामग्री स्रोत हैं जो <b> नहीं करते हैं </ b> पूरी तरह से स्ट्रैमियो के अंदर खेलते हैं लेकिन दी गई सेवा में रीडायरेक्ट करेंगे। उदाहरण के लिए गाइडबॉक्स एडन आपको उन फिल्मों का चयन करेगा जो आप अमेरिका में Tubitv और क्रैकल जैसी सेवाओं से मुक्त करने के लिए स्ट्रीम कर सकते हैं।","FAQ_11_H1":"Stremio स्थापित नहीं होगा कि मुझे क्या करना चाहिए?","FAQ_11_P1":"यदि आप विंडोज़ पर $ {1} इस वैकल्पिक इंस्टॉलर $ {2} का प्रयास करें।","FAQ_11_P2":"यदि आप मैक ओएस एक्स पर हैं तो कृपया ध्यान रखें कि हम ओएस एक्स मैवरिक्स (10.9) से पुराने कुछ भी समर्थन नहीं करते हैं।","FAQ_11_P3":"यदि आप लिनक्स पर हैं तो ध्यान रखें कि हम इस समय केवल 64 बिट (x64) लिनक्स का समर्थन करते हैं।","FAQ_11_P4":"यदि आप अभी भी अपनी समस्या का समाधान नहीं कर सकते हैं तो कृपया हमें $ {1} फेसबुक ग्रुप $ {2} पर लिखें।","FAQ_12_H1":"मेरा एंटी-वायरस क्यों शिकायत करता है? क्या स्ट्रैमियो सुरक्षित है?","FAQ_12_P1":"हम आपको आश्वस्त करते हैं कि STREMIO $ {1} 100% क्लीन $ {2} है।","FAQ_12_P2":"आपका एंटीवायरस शिकायत कर रहा है क्योंकि हम अपने इंस्टॉलर में विज्ञापन शामिल करते हैं जो कुछ एंटी-वायरस प्रोग्राम विज्ञापन-बर्तन के रूप में पहचानते हैं।","FAQ_12_P3":"यदि आप अभी भी अनिश्चित हैं तो आप हमारे $ {1} वैकल्पिक इंस्टॉलर $ {2} को आजमा सकते हैं।","FAQ_13_H1":"मैं एडन कैसे बना सकता हूं?","FAQ_13_P1":"शुरुआत करने वालों के लिए हम आपको गिटहब पर $ {1} एडॉन्स सिस्टम मॉड्यूल $ {2} की जांच करते हैं।","FAQ_13_P2":"बाद में आप $ {1} हैलो वर्ल्ड ट्यूटोरियल $ {2} का अनुसरण कर सकते हैं।","FAQ_13_P3":"यदि आपके पास कोई प्रोग्रामिंग कौशल नहीं है तो कृपया $ {1} reddit समुदाय $ {2} पर अपना विचार पोस्ट करें और $ {3}office@stremio.com $ {4} पर अपने एडन आइडिया के साथ हमसे संपर्क करें।","FAQ_14_H1":"एडॉन्स कैसे प्रकाशित होते हैं?","FAQ_14_P1":"जब आप एक एडन और होस्ट बनाते हैं और अपने मैनिफेस्ट में <b> एंडपॉइंट </ b> फ़ील्ड बनाते हैं जो एक काम करने वाले एडन पते को इंगित करता है, एडन स्वचालित रूप से खुद को $ {1} एडन कैटलॉग $ {2} में प्रकाशित करेगा।","FAQ_14_P2":"ऐसा इसलिए होता है क्योंकि स्ट्रैमियो-एडॉन्स मॉड्यूल का सर्वर हिस्सा स्वचालित रूप से एडन की घोषणा करने के लिए हमारे एपीआई को कॉल करता है। जब हमारा एपीआई आपके <b> एंडपॉइंट </ b> को मान्य एडन के रूप में मान्य करता है तो यह कैटलॉग में दिखाना शुरू कर देगा।","FAQ_15_H1":"क्या मैं अपने ब्राउज़र में STREMIO चला सकता हूं?","FAQ_15_P1":"फिलहाल नहीं, लेकिन यह आ रहा है!","FAQ_15_P2":"यदि आप एक अल्फा देखने के लिए उत्सुक हैं तो आप इसे यहां देख सकते हैं: $ {1} alpha4.strem.io $ {2}। ध्यान रखें कि इस अल्फा पर स्ट्रीमिंग अक्षम है। हम क्रोम फ़ायरफ़ॉक्स ओपेरा और एज का समर्थन करते हैं।","FAQ_16_H1":"टीवी के लिए कास्टिंग काम / उपशीर्षक काम नहीं करता है","FAQ_16_P1":"टीवी में कास्टिंग डीएलएनए तकनीक का उपयोग करता है जो विभिन्न टीवी ब्रांडों और मॉडलों के बीच बहुत असंगत है। इसी कारण से हमारे पास हर मामले में इसका परीक्षण करने की क्षमता नहीं है, इसलिए यह सही से दूर है। इसके बावजूद हम इसे लगातार सुधारने पर काम कर रहे हैं लेकिन हम आपको एक समय का अनुमान नहीं दे सकते हैं जब डीएलएनए आपके टीवी के साथ ठीक से काम करना शुरू कर देगा।","FAQ_16_P2":"यदि आप कास्टिंग मेनू में अपना टीवी भी नहीं देखते हैं तो कृपया अपने नेटवर्क कनेक्शन को अक्षम करने और इसे फिर से सक्षम करने का प्रयास करें (विंडोज़ राइट पर नेटवर्क पर क्लिक करें और सक्षम / अक्षम करें) के साथ ही अपने राउटर टीवी और पीसी को पुनरारंभ करें।","FAQ_16_P3":"यदि आप अभी भी मुद्दों का सामना कर रहे हैं तो आप अपने टीवी ब्रांड और मॉडल जानकारी को ${1}office@stremio.com $ {2} पर भेजकर हमारी सहायता कर सकते हैं।","FAQ_16_P4":"इस बीच हम क्रोमकास्ट की सलाह देते हैं कि हम एक अच्छी तरह से समर्थन करते हैं या बस अपने टीवी में अपने पीसी में एक एचडीएमआई केबल के साथ प्लगिंग करते हैं।","FAQ_17_H1":"Stremio फ्रीज और / या दुर्घटनाओं मैं क्या कर सकता हूँ?","FAQ_17_P1":"सबसे पहले यदि आप एवीजी एंटी-वायरस के साथ विंडोज 7 का उपयोग कर रहे हैं: हमें उस संयोजन के साथ एक समस्या है। समस्या एवीजी में ही है और हमारे अंत में इसे हल करने का कोई उचित तरीका नहीं है। दुर्भाग्य से एंटी-वायरस को अपवाद या अक्षम करना काम नहीं करेगा। एकमात्र समाधान एवीजी को किसी और चीज के साथ बदलने के लिए है।","FAQ_17_P2":"यदि यह समस्या नहीं है लेकिन आप अभी भी विंडोज़ का उपयोग कर रहे हैं तो कृपया नवीनतम सर्विस पैक में अपडेट करें और अपने जीपीयू ड्राइवरों को अपडेट / इंस्टॉल करें फिर पुन: प्रयास करें।","FAQ_17_P3":"यदि आप समस्या को हल नहीं कर रहे हैं या आप मैक या लिनक्स का उपयोग कर रहे हैं तो कृपया हमें $ {1} हमारे फेसबुक ग्रुप $ {2} पर समस्या के सटीक विवरण की रिपोर्टिंग करें।","FAQ_18_H1":"मैं एडन कैसे बना सकता हूं?","FAQ_18_P1":"शुरुआत करने वालों के लिए हम आपको गिटहब पर $ {1} एडॉन्स सिस्टम मॉड्यूल $ {2} की जांच करते हैं।","FAQ_18_P2":"बाद में आप $ {1} हैलो वर्ल्ड ट्यूटोरियल $ {2} का अनुसरण कर सकते हैं।","FAQ_18_P3":"यदि आपके पास कोई प्रोग्रामिंग कौशल नहीं है तो कृपया $ {1} reddit समुदाय $ {2} पर अपना विचार पोस्ट करें और $ {3}office@stremio.com $ {4} पर अपने एडन आइडिया के साथ हमसे संपर्क करें।","FAQ_19_H1":"STREMIO डिस्क स्थान क्यों ले रहा है?","FAQ_19_P1":"स्ट्रीमियो में अस्थायी रूप से स्ट्रीम करने वाली वीडियो फ़ाइलों को रखने के लिए <b> स्थानीय कैश </ b> है।","FAQ_19_P2":"इसमें दो लाभ हैं: सबसे पहले यह STREMIO को आगे के वीडियो को पूर्व-बफर करने की अनुमति देता है ताकि चिकनी स्ट्रीमिंग सुनिश्चित हो सके। दूसरा यह वीडियो को स्थानीय कैश में रखता है ताकि आप उन्हें ऑफ़लाइन देखना जारी रख सकें।","FAQ_19_P3":"सेटिंग पैनल में <b> कैश </ b> सेटिंग पर कितना स्ट्रैमियो निर्भर करता है। स्ट्रैमियो आपकी डिस्क पर सेट राशि (उदा। 2 जीबी) तक रख सकता है जब तक कि वर्तमान में स्ट्रीम किए गए वीडियो उस मामले से बड़े न हों, जिस स्थिति में इसे तब तक रखने के लिए पर्याप्त भंडारण आवंटित करना होगा जब तक कि आप इसे स्ट्रीम कर रहे हों।","FAQ_20_H1":"कैश फ़ोल्डर कहां है?","FAQ_20_P1":"विंडोज़ पर यह सेटिंग्स में चुने गए ड्राइव में स्ट्रैमियो-कैश है (उदा। E: stremio-cache)","FAQ_20_P2":"मैकोज़ पर यह ~ / पुस्तकालय / आवेदन समर्थन / stremio / stremio-cache","FAQ_20_P3":"लिनक्स पर यह ~ / .stremio / stremio-cache या ~ / stremio-cache","FAQ_21_H1":"मुझे मिलता है स्ट्रीमिंग सर्वर त्रुटि नहीं मिली है मैं क्या कर सकता हूं?","FAQ_21_P1":"यदि आपको यह त्रुटि मिलती है तो इसका मतलब कुछ चीजों में से एक है:","FAQ_21_P2":"1) आप हमारे $ {1} वेब संस्करण $ {2} के माध्यम से यूट्यूब / बिटटोरेंट स्रोत द्वारा समर्थित एडन का उपयोग करने की कोशिश कर रहे हैं। इस मामले में आपको हमारे डेस्कटॉप संस्करण को $ {3} हमारी वेबसाइट $ {4} से इंस्टॉल करना चाहिए।","FAQ_21_P3":"2) आपके STREMIO स्थापना के साथ कुछ गलत है। इस मामले में $ {1} वेबसाइट $ {2} से हमारे नवीनतम डेस्कटॉप संस्करण को पुनः स्थापित करने का प्रयास करें। यदि यह आपके पीसी को पुनरारंभ करने और फिर से कोशिश करने वाले एंटी-वायरस प्रोग्राम और फ़ायरवॉल को अक्षम करने का प्रयास करने में मदद नहीं करता है। यदि यह काम नहीं करता है तो कृपया हमें हमारे $ {3} हमारे फेसबुक समूह $ {4} पर लिखें।","FAQ_22_H1":"मैं आईओएस पर अधिकांश एडॉन्स को नहीं देख सकता / उपयोग नहीं कर सकता","FAQ_22_P1":"ऐप्पल ऐप स्टोर के नियमों और शर्तों में प्रतिबंधों के कारण हमने केवल आईओएस आवेदन को केवल एडॉन्स के एक विशेष सेट पर प्रतिबंधित कर दिया है।","FAQ_22_P2":"लेकिन बाकी आश्वासन दिया गया है - भविष्य में आईओएस के लिए और अधिक एडॉन्स होंगे और हम एक एकीकरण भी जोड़ सकते हैं जो आपको आईओएस ऐप को स्ट्रैमियो स्ट्रीमिंग सर्वर से जोड़ने के लिए सभी स्ट्रैमियो एडॉन्स का उपयोग करने की अनुमति देगा।"}')},487:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filmovi","TYPE_series":"Serije","TYPE_tv":"TV","TYPE_channel":"Kanal","TYPE_other":"Ostalo","TYPE_movie_PL":"Filmovi","TYPE_series_PL":"Serije","TYPE_tv_PL":"TV","TYPE_channel_PL":"Kanal","TYPE_other_PL":"Ostalo","TYPE_ALL":"All","VIDEO":"Video","BACK":"Povratak","MORE":"Više","DONE":"Završeno","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Otkrij","Board":"Početna","Library":"Videoteka","My Library":"Moja videoteka","Calendar":"Kalendar","NOTIFICATION_ONLINE":"Sada ste povezani","NOTIFICATION_OFFLINE":"Niste povezani","INTERNET_CONNECTION":"Greška povezivanja","STORAGE_FULL_TITLE":"Upozorenje: memorija je popunjena!","STORAGE_FULL_TEXT":"Vaše postavke, preferencije ili podaci za prijavu neće biti spremljeni. Ponovno pokrenite ili ponovno instalirajte Stremio.","SEARCH":"Tražilica...","SEARCH_NO_RESULTS":"Nema pronađenih rezltata","SEARCH_EXPLANATION_CONTENT":"Pretraži filmove, serije, YouTube i TV kanale","SEARCH_EXPLANATION_PEOPLE":"Pretraži glumce, redatelje i producente","SEARCH_PASTE_LINKS":"Kopiraj poveznice","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Dodaj u videoteku","REMOVE_FROM_LIB":"Ukloni iz videoteke","ADDED_TO_LIB":"Dodano u videoteku","REMOVED_FROM_LIB":"Uklonjeno iz videoteke","TRAILER":"Najava","WATCH_TRAILER":"Pogledaj najavu","WATCH_NOW":"Pokreni gledanje","SHOW":"Prikaži","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Gledaj nasumično","IMDB_RATING":"IMDb Ocjena","YEAR":"Godina","DIRECTOR":"Redatelj","WRITER":"Producent","LEAD_ACTORS":"Glavni glumci","CAST":"Uloge","CREW":"Ekipa","SHOW_MORE_CAST":"Prikaži više »","AIRED":"Emitirano","SEASONS":"Sezone","GENRE":"Žanr","CATALOG":"Katalog","SUMMARY":"Sažetak","SHOW_MORE":"Prikaži još","SIMILAR":"Slično","UPCOMING":"Nadolazeće","ENDED":"Završeno","DURATION":"Trajanje","FEATURED":"Istaknuto","METADATA":"Metadata","CATEGORY":"kategorija","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"pretraži videe","SEARCH_PLACEHOLDER":"traži sadržaj ili upiši magnet linkove","ADDON":"dodatak","ADDONS":"Dodaci","OFFICIAL":"službeni","ADDONS_OFFICIAL":"Službeni Stremio Dodaci","ADDONS_POPULAR":"Popularno na vašem području","ADDON_FREE":"besplatni dodaci","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"pretplata","ADDON_STREAM_GEORESTRICTED":"nije dostupno na vašem području","ADDON_STREAM_OFFLINECACHE":"Cache nije povezan","ADDON_STREAM_LOCALFILE":"Lokalni dokument","SHARE_ADDON":"Dijeli Dodatak","AVAILABLE_STREAMS":"Dostupni prijenosi","NO_STREAM":"Nema dostupnih prijenosa","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Za više prijenosa instalirajte još Dodataka","STREAM_NOT_SUPPORTED":"Odabrani prijenos nije podržan.","ADDON_CATALOGUE":"Prikaži sve dodatke »","ADDON_CATALOGUE_MORE":"Više dodataka »","REPO_ADDED":"Repozitorij je dodan","ADDON_REPO_EXIST_ERR":"Ovaj dodatak je već dodan","ADDON_REPO_ERR":"Greška prilikom dodavanja repozitorija","ADDON_ADD_ERR":"Greška prilikom dodavanja dodatka","ERR_ADDON_PROTECTED":"Dodatak je zaštićen","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Nešto je pošlo po krivu - autentifikacija možda nije uspjela","ERR_NOT_COLLECTION_URL":"Nije url kolekcije","ERR_NOT_ADDON_URL":"Nije url dodatka","ERR_DETECTFROMURL":"Nemoguće otkriti podatke iz url-a","ADDON_DUPLICATE_WARNING":"Upozorenje: duplicirani dodatak","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Dodavanje dodatka nije uspjelo","REFRESH_ON_CLICK":"Pritisni za ponovno učitavanje","STILL_IN_THEATER":"Film je i dalje u kinu","WATCH_IN_CINEMA":"Pogledaj ga u kinu","IN_THEATER":"U kinu","GET_TICKETS":"Nabavi karte","UPCOMING_EPISODE":"Nadolazeća epizoda","UPCOMING_EPISODE_MESSAGE":"Ova epizoda emitirati će se:","MISSING_DATE_EPISODE":"Nedostaje nadnevak epizode","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Ovaj kanal još nije spremljen.<br>Molimo vas pokušajte za nekoliko minuta.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Dodajte u svoju videoteku da budete obešteni kada bude dostupno.","GET_NOTIFIED_WHEN_AVAILABLE":"Biti ćete obavješteni kada bude dostupno.","WARNING_STREAMING_SERVER":"Upozorenje: lokalni server za prijenos nije pronađen. Prijenos sa YouTube-a i BitTorrent-a neće biti dostupan.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Upozorenje: ovaj video možda ne podržava vaš hardver. Imajte na umu da reprodukcija može biti spora.","PLAYER_ERROR":"Ups, greška playera","PLAYER_ERROR_LOOKSLIKE":"Izgleda kao","PLAYER_ORIENTATION":"Orijentacija playera","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Fiksno","PLAYER_ORIENTATION_SENSOR_SHORT":"Senzor","PLAYER_ORIENTATION_LANDSCAPE":"Orijentacija playera fiksirana je vodoravno","PLAYER_ORIENTATION_SENSOR":"Orijentacija playera je automatska (senzor)","PLAYER_PLAYBACK_SPEED":"Brzina prikazivanja","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Uživo","PLAYER_NEXT_VIDEO_TITLE":"U sljedećem nastavku","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Odbaci","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Gledaj odmah","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"pokretanje iz","CASTING_TO":"Prikazivanje na","NETWORK_STATUS":"Mrežni status","STREAM_SPEED":"Brzina prikazivanja:","STREAM_BUFFERED":"Učitano:","PEERS_INFO":"Peer Informacije","PEERS_ACTIVE":"Aktivno:","PEERS_CONNECTED":"Spojeno:","PEERS_WAITING":"Na čekanju:","TRANSCODING_WARNING":"Upozorenje: pretvaranje videa.","STREAM_LOADING":"učitavanje...","PLAYING_LOCAL":"pokretanje iz lokalne datoteke","PLAYING_CACHE":"pokretanje iz privremenog skladišta","WRONG_SUBS":"Pogrešan prijevod?","ERR_SUBS_LOADING_TITLE":"Greška pri učitavanju podnapisa","ERR_SUBS_LOADING":"Greška pri učitavanju podnapisa: može biti do dodatka kojeg koristite, ili do internet povezanosti","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Sljedeći dodaci za podnapise ne rade","ERR_CASTING_UPDATE_TITLE":"Nemoguće ažurirati info o djeljenje ekrana: server možda nije spojen","CHOOSE_DEVICE":"Izaberi uređaj za gledanje","NO_CAST_DEVICES":"Nema dostupnih uređaja za odašiljanje.","NO_SETTINGS":"Nema dostupnih postavki.","PHONE_TABLET":"Mobitel / Tablet","SUBTITLES":"Podnapisi","SUBTITLES_CHANGE":"Promjeni podnapis za ","SUBTITLES_CHANGE_NONE":"Nažalost, nema drugih podnapisa za odabrani jezik","SUBTITLES_CHANGE_ACIVE":"Trenutno titl #{{subtitlesDialog.activeIdx + 1}} je aktivan. Klikni \\"Nastavi\\" da aktiviraš podnapis #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alterantivno,","SUBTITLES_ADJUST_DELAY":"Podešavanje kašnjenja podnapisa:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Ili koristi <span>G</span> / <span>H</span> gumb dok gledate da postavite podnapise.","SUBTITLES_ADJUST_DELAY_TIP":"Savjet: možete koristiti tipke <span>G</span> / <span>H</span> tijekom gledanja kako biste podesili kašnjenje podnapisa.","SUBTITLES_DELAY":"Kašnjenje podnapisa:","SUBTITLES_LOADING":"Učitavanje podnapisa...","SUBTITLES_UNAVAILABLE":"Nema dostupnih vanjskih podnapisa","SUBTITLES_DISABLED":"Isključeno","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sezona","EPISODE":"Epizoda","SPECIAL":"Special","SORT":"poredaj","SORT_BY":"Poredaj po","FILTER":"filtriraj","SORT_TRENDING":"popularno","SORT_RECENT":"nedavno","SORT_ALPHABET":"A-Ž","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"ocjena","SORT_WATCHED":"gledano","SORT_YEAR":"godina","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Novo za vas","New Episodes":"Nove epizode","New Videos":"Novi Videi","Recommendations":"Preporuke","LIBRARY_RESUME":"nastavi","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Pojedinosti","LIBRARY_RESUME_DISMISS":"odbaci","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Istaktnut","DISCOVER_TOP":"Najbolji","DISCOVER_OSCAR":"Dobitnici Oskara","DISCOVER_WARNING_TITLE":"Ups!","DISCOVER_EMPTY_CATALOG":"Dodatak je vratio prazan sadržaj.","DISCOVER_ADULT_WARNING":"Ovaj sadržaj dostupan je samo odraslima. Imaš li 18+ godina?","DISCOVER_NOADDON_WARNING":"Upozorenje: nema aktivinog Stremio dodatka za ovaj tip. Prikazujemo spremljene stvari, ništa se neće promijeniti.","DISCOVER_LOAD_ERR":"Sadržaj nije pokrenut, greška.","DISCOVER_ADDON_UNINSTALLED":"Sadržaj više nije dostupan. Moguće da ste izbriali dodatak.","UNINSTALL_THIS_ADDON":"Ukloni dodatak","ERR_ADDON_NOT_INSTALLED":"Ovaj dodatak nije instaliran. Instalirati sada?","DETAIL_RECEIVE_NOTIF_SERIES":"Primaj obavijesti o novim epizodama","DETAIL_RECEIVE_NOTIF_VIDEOS":"Primaj obavijesti o novim videima","SIDEBAR_SHOW_STREAMS":"Prikaži prijenose","RELAUNCH":"Ponovo pokreni sada!","UPGRADE":"Nova verzija je dostupna! Nadogradi se na najnoviju inačicu Stremija","RELOAD_UI":"Ponovno učitaj korisničko sučelje","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"Koristite zastarjelu verziju Stremija što nije preporučljivo.","MANUAL_UPDATE_LINE2":"Molimo, ažurirajte čim prije.","BUTTON_UPDATE_LATTER":"Ne sada","BUTTON_UPDATE_NOW":"Ažuriraj","ANONYMOUS_USER":"Anonimni korisnik","DONT_HAVE_ACC":"Nemate račun?","HAVE_ACC":"Već imate račun?","PASSWORD":"Lozinka","PASSWORD_CONFIRM":"Potvrdite lozinku","EMAIL":"E-mail","FB_LOGIN":"Prijavi se preko Facebook-a","FB_NOTHINGSHARED":"Ništa se ne dijeli bez vaše dozvole","FB_NOPOST":"Nećemo objavljivati ništa u vaše ime","OR":"ili","I_ACCEPT":"Prihvaćam","I_ACCEPT_BY_CLICKING":"Klikom na gornji gumb prihvaćam uvjete","TOS":"Uvjete i Odredbe","MUST_ACCEPT_TERMS":"Morate prihvatiti uvjete","PASSWORDS_NOMATCH":"Lozinke se ne podudaraju","SIGN_UP":"Registracija","SIGN_UP_EMAIL":"Prijavite se putem e-pošte","CLICK_TO_SIGN_UP":"Ovdje pritisnite za registraciju.","LOG_IN":"Prijavi se","LOG_OUT":"Odjavi se","EXIT_FULLSCREEN":"Izađi iz punog prikaza","ENTER_FULLSCREEN":"Uđi u puni prikaz","PLAY_URL_MAGNET_LINK":"Pokreni URL/Magnet poveznicu","HELP_FEEDBACK":"Podrška i povratna informacija","TERMS_OF_SERVICE":"Uvjeti korištenja usluge","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"O Stremiju","USER_PANEL":"Korisniča traka","LOGIN_LABEL":"Login","GUEST_LOGIN":"Prijavi se kao gost","GUEST_LOGIN_NOTICE":"Gostujuća prijava nije preporučljiva. Koristeći redovnu prijavu, Stremio omogućava sinkronizaciju svoje videoteke, primanje obavještenja o omiljenim serijama / kanalima. Jeste li sigurni da želite nastaviti?","GUEST_LOGIN_NOTICE_2":"Gostujuća prijava nije preporučljiva - nećete imati sinkronizaciju obavijesti Videoteke i Ploče, koje su od važnosti za Stremio. Jeste li sigurni da želite nastaviti?","CLICK_HERE":"klikni ovdje","WRONG_PASSWORD":"Pogrešna lozinka. U slučaju da ste zaboravili lozinku, ","SET_A_PASS":"postavite lozinku","RESET_PASSWORD":"Ponovno postavi lozinku","FORGOT_PASSWORD":"Zaboravili ste lozinku?","EMAIL_USED_WITH_FB":"Ovaj email je korišten sa Facebook prijavom.","INVALID_EMAIL":"Unesite ispravnu e-mail adresu","INVALID_PASSWORD":"Molimo Vas da unesete ispravnu lozinku","CONN_ERR":"Greška pri povezivanju - molimo Vas pokušate kasnije.\\n\\nAko se ovo nastavi, onemogućite vatrozid/antivirus (posebice Bitdefender).","IMPORT_FROM_GUEST":"Uvezi videoteku iz gostujućeg računa","RECEIVE_UPDATES_EMAIL":"Primajte novosti od kompanije Stremio na vaš e-mail","LOGIN_FAILED":"Neuspjela Prijava.","SIGNUP_FAILED":"Prijava nije uspjela.","SEARCH_FAILED":"Pretraga nije uspjela","EMAIL_USED":"Ovaj email već je u upotrebi.","WAITING_FB_LOGIN":"Prijavljivanje preko Facebook-a...","EXTERNAL_PLAYER_TITLE":"Pokreni u vanjskom pregledniku","EXTERNAL_REMEMBER_PLAYER":"Zapamti moj izbor","EXTERNAL_ALWAYS_PLAY":"Da","EXTERNAL_ONLY_ONCE":"Ne","BEST_FIT":"Najprikladniji prikaz","FIT_SCREEN":"Uklopi u prikaz","FILL":"Ispuni prikaz","16:9":"16:9","4:3":"4:3","Original":"Izvorni prikaz","INTRO_TASTE":"Recite nam što volite","INTRO_TASTE_LONG":"Recite nam što biste željeli gledati","INTRO_TASTE_PICK":"Izaberite {{interestsRemaining}} zanimljivo","INTRO_TASTE_PICK_MORE":"Izaberite još {{interestsRemaining}} zanimljivog","INTRO_TASTE_HELP_US":"Pomozite nam da naučimo o vama.","INTRO_TASTE_CHOOSE_THESE":"Izaberite neke od ovih:","INTRO_TASTE_CHOOSE_MIN":"Izaberite bar tri kategorije","INTRO_TASTE_CHOOSE_MIN_ERR":"Morate izabrati bar tri kategorije!","INTRO_TASTE_LIFESTYLE":"Životni stil","INTRO_TASTE_SPORTS":"Sportovi","INTRO_TASTE_FOOD_HEALTH":"Hrana i zdravlje","INTRO_TASTE_BEAUTY_FASHION":"Ljepota i moda","INTRO_TASTE_NEWS":"Vijesti","INTRO_TASTE_GAMING":"Igrice","INTRO_TASTE_SCIENCE_EDU":"Znanost i obrazovanje","INTRO_TASTE_MUSIC":"Glazba","INTRO_TASTE_TRAVEL":"Putovanje","INTRO_TASTE_LATE_NIGHT":"Noćni talk-show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Komedija","INTRO_TASTE_DIY":"Uradi sam","INTRO_TASTE_TECH":"Tehnika","INTRO_TASTE_CINEMA":"Kinematografija","ADDON_NOT_SUPPORTED":"Izabrani dodatak nije podržan na ovoj platformi.","ADDON_DISCLAIMER":"Korištenje trećih dodataka uvijek će biti predmet osobne odgovornosti i zakonom zemlje u kojoj se nalazite.","ADDON_ACTIVATE":"Aktivirati ovaj dodatak?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Dodaj","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Što je novo","BUTTON_CONTINUE":"Nastavi","BUTTON_ACTIVATE":"Aktiviraj","BUTTON_ACTIVATED":"Aktivirano","BUTTON_CANCEL":"Prekini","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Poništni sve","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Vaša Videoteka izgleda prazno. Saznajte koliko je zapravo korisna :) ","HOW_START":"Ovako možete početi:","LIB_EMPTY_CAL":"Tvoj Kalendar prikazuje serije iz tvoje Videoteke.","HOW_START_CAL":"Ovako možeš dodati serije:","LIB_EMPTY_BOARD":"Tabla prikazuje notifikacije & preporuke slične tvojoj biblioteci.","HOW_START_BOARD_WAIT":"Molimo, dodajte par serija ili kanala u vašu videoteku i dozvolite nam par minuta da procesuiramo :)","HOW_START_BOARD":"Evo kako možete da dodate serije & flmove na nju:","IMPORT_FB":"Uvoz stvari koje vam se sviđaju na <span>Facebook</span>","IMPORT_TRAKT":"Uvezi videoteku sa: <span>Trakt</span>","IMPORT_DISCOVER":"Nađi zanimljive stvari u <span>Otkrij</span>","IMPORT_DISK":"Uvoz filmova ili serija koje imate na vašem <span>lokalnom disku</span>","PLEASE_CREATE_ACC":"Molimo Vas <u>napravite račun</u> da omogućite sinkronizaciju Videoteke & Table.","IMPORT_DISCOVER_SIGNUP":"Registrirajte se i otkrijte zanimljive stvari u <span>Otkrij</span>","IMPORT_DISK_SIGNUP":"Registrirajjte se i uvezite filmove i serije sa vašeg <span>lokalnog diska</span>","LIB_EMPTY_CLOUD":"Videoteka na oblaku","LIB_EMPTY_CLOUD_DESC":"Osobna videoteka ažuirana na svim uređajima","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Primaj obavijesti o novim epizodama","LIB_EMPTY_PERSONAL":"Osobno","LIB_EMPTY_PERSONAL_DESC":"Primaj personalizirane preporuke","LIB_EMPTY_CALENDAR_DESC":"Pripremi raspored za gledanje tvoje videoteke","LIB_EMPTY_ALL":"Prijavi se na neke od ovih:","LIB_EMPTY_BEST":"Prijavi se da dobiješ najbolje od Stremio-a","LIB_EMPTY_OTHER":"Prijavi se da dobiješ Kalendar & druge cool dodatke","CALENDAR_ADDED":"Stremio kalendar je dodan tvome kalendaru.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt autientifikacija nije valjana, molim vas u Postavkama autentificirajte","TRAKT_REQUIRES_LOGIN":"Trakt greška","TRAKT_REQUIRES_LOGIN_MSG":"Morate biti ulogirani","SETTINGS_LABEL":"Postavke","SETTINGS_NAV_GENERAL":"Općenito","SETTINGS_NAV_PLAYER":"Reproduktor","SETTINGS_NAV_STREAMING":"Prijenos","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Pokreni prilikom paljenja","SETTINGS_VLC_DEFAULT":"Pokreni preko VLC-a","SETTINGS_UI_LANGUAGE":"Jezik sučelja","SETTINGS_FULLSCREEN_EXIT":"Izlazak iz punog prikaza tipkom Esc","SETTINGS_GAMEPAD":"Omogući korištenje kontrolera","SETTINGS_CLOSE_WINDOW":"Zatvori program prilikom zatvaranja prozora","SETTINGS_SUBTITLES_LANGUAGE":"Zadani jezik podnapisa","SETTINGS_SUBTITLES_SIZE":"Zadana veličina podnapisa","SETTINGS_SUBTITLES_BACKGROUND":"Pozadina podnapisa","SETTINGS_SUBTITLES_COLOR":"Boja podnapisa","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Boja obruba podnapisa","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Boja pozadine podnapisa","SETTINGS_SEEK_KEY":"Premotavanje sadržaja strelicama","SETTINGS_SEEK_KEY_SHIFT":"Premotavanja sadržaja streliacam dok je tipka Shift pritisnuta","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Automatski pokreni sljedeću epizodu","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Automatski promjeni veličinu prozora prije puštanja","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Uvek koristi najnoviju BETA","SETTINGS_IMPORT_FB":"Uvezi sa Facebooka","SETTINGS_IMPORT_DISK":"Uvezi sa lokalnog diska","SETTINGS_IMPORT_TRAKT":"Uvezi sa Trakt-a","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Pozadinsko pokretanje","SETTINGS_SUBSCRIBE_CALENDAR":"Pretplati se na Kalendar","SETTINGS_REQ_EXPORT":"Zatraži izvoz podataka","SETTINGS_ACC_DELETE":"Zatraži brisanje naloga","SETTINGS_CHANGE_PASSWORD":"Promjeni lozinku","SETTINGS_TOS":"Uslovi korištenja","SETTINGS_SUPPORT":"Kontaktiraj podršku","SETTING_LANGUAGE":"Jezik","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Odjavi se sa Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"podrazumevani titlovi","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Pokreni u zasebnom prozoru (napredno)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Izađi","CONNECTED":"Povezan","AUTHENTICATE":"Prijavi se","CACHING":"Keširanje","SETTINGS_CACHING_DRIVE":"Izaberi disk za keširanje","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Siječanj","February":"Veljača","March":"Ožujak","April":"Travanj","May":"Svibanj","June":"Lipanj","July":"Srpanj","August":"Kolovoz","September":"Rujan","October":"Listopad","November":"Studeni","December":"Prosinac","Monday":"Ponedeljak","Tuesday":"Utorak","Wednesday":"Srijeda","Thursday":"Četvrtak","Friday":"Petak","Saturday":"Subota","Sunday":"Nedjelja","Action":"Akcija","Comedy":"Komedija","War":"Ratni","Family":"Obiteljski","Animation":"Animacija","Adventure":"Avanturistički","Fantasy":"Fantazija","Crime":"Kriminalistički","Mystery":"Misterija","Romance":"Ljubavni","Drama":"Drama","Horror":"Horor","Thriller":"Triler","Sci-Fi":"Znanstvena Fantastika","Music":"Glazba","Biography":"Biografija","Documentary":"Dokumentarni","Sport":"Sport","Musical":"Mujuzikl","Western":"Western","Film-Noir":"Film-Noir","News":"Novosti","History":"Povijesni","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Zabava","Gaming":"Gaming","From TV":"Iz TV-a","Lifestyle":"Lifestyle","Science & Education":"Znanost & Edukacija","Cooking & Health":"Kuhanje & Zdravlje","Beauty & Fashion":"Ljepota & Moda","Sports":"Sport","News & Politics":"Vijesti & Politika","How-to & DIY":"DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Dobra dijela & Neprofitno","Movies":"Filmovi","Uk Live Tv":"UK Uživo Tv","Fashion":"Moda","Business News Radio":"Poslovni radio","Business Tv":"Poslovni tv","Cars & Auto":"Auto","Comedy Radio":"Komedija","Lifestyle Radio":"Lifestyle","News Tv":"Vijesti Tv","Food And Wine":"Hrana i vino","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religija","Kids":"Djeca","Body & Soul":"Tijelo i duša","Education":"Edukacija","Indian Tv":"Indian Tv","Extreme Sports":"Extremni sportovi","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Znanstvena Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Putovanja","Asian Tv":"Asian Tv","Entertainment":"Zabava","News Radio":"Vijesti Radio","Music Radio":"Glazbeni Radio","Language Learning":"Učenje jezika","Science Radio":"Znanstveni Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"novi video","new episode":"nova epizoda","new movie":"novi film","recommended":"preporučeno","we recommend":"preporučujemo","offer of the day":"ponuda dana","news":"vijesti","music video":"spot","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Odbaci obavijesti","CTX_DISMISS_ALL":"Odustani","CTX_SHARE":"Podijeli","CTX_COPY_SHARE_LINK":"Kopiraj link za dijeljenje","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Prikaži","CTX_PLAY":"Pokreni","CTX_PLAY_IN":"Pokreni u","CTX_PLAY_ON":"Pokreni na","CTX_WATCH_ON":"Gledaj na","CTX_WATCH":"Gledaj","CTX_WATCHED":"Pogledano","CTX_WATCH_BEGINNING":"Gledaj od početka","CTX_WATCH_MOBILE":"Gledaj na mobilnom uređaju","CTX_REWIND":"Premotaj na početak","CTX_MARK_WATCHED":"Označi kao pogledano","CTX_MARK_NON_WATCHED":"Označi kao nepogledano","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Označi ostalo kao pogledano","CTX_UNMARK_REST":"Označi ostalo kao nepogledano","CTX_RECEIVE_NEW_NOTIF":"Primaj nove obavijesti","CTX_REMOVE_CACHE":"Obriši iz keša","CTX_REMOVE_CACHE_EP":"Ukloni epizodu iz keša","CTX_OPEN_CONTAINING":"Otvori mapu sadržaja","CTX_REMOVE":"Ukloni iz Videoteke","CTX_AVAILABLE_OFFLINE":"Dostupno izvanmrežno","CTX_PAUSED":"Pauzirano","CTX_ALWAYS_ON_TOP":"Uvijek na vrhu","CTX_FULLSCREEN":"Cijeli zaslon","CTX_WRONG_SUBS":"Pogrešan prijevod?","CTX_REPORT_ISSUES":"Prijavi problem","CTX_COPY":"Kopiraj","CTX_PASTE":"Naljepi","CTX_CLEAR":"Očisti","CTX_CLEAR_RECENT_SEARCHES":"Obriši skorašnje pretrage","HELLO_THERE":"Hej zdravo","HOPE_YOU_ENJOY":"Nadamo se da uživate uz Stremio i da je već jedna od vaših omiljenih aplikacija !","WHO_ARE_WE":"Tko smo mi? Mi smo tim iza njega - dva momka koja rade teško svaki dan već skoro 3 godine da bih napravili ovaj proizvod sve boljim i boljim.","SUPPORT_US":"Ako uživate koristeći Stremio, ako je Stremio vrijedan za vas - širite riječ !","SPREAD_THE_WORD":"Podijelite sa svojim prijateljima sada, širite riječi u vezi Stremio","MORE_PEOPLE":"Što više ljudi koristi Stremio, to će biti bolji !","SEND_A_LINK":"Ili pošaljite link ka našoj stranici","TIP_LOCALFILES":"Savjet: možeš prevući i ubaciti lokalne video datoteke u Stremio","ADDON_MY":"Moji Dodaci","ADDON_COMMUNITY":"Dodaci zajednice","ADDON_OFFICIAL":"Službeni dodaci","ADDON_REPOS":"Dodaci repozitoriji","ADDON_SEARCH":"Pretraži dodatke","ADDON_INSTALL":"Instaliraj","ADDON_CONFIGURE":"Promijeni","ADDON_UNINSTALL":"Deinstaliraj","ADDON_UPGRADE":"Nadogradi","ADDON_INSTALLED":"Instalirano","ADDON_INSTALLED_MSG":"Dodatak instaliran!","ADDON_UPGRADED_MSG":"Dodatak ažuriran!","ADDON_UNKNOWN":"Nepoznato","ADDON_ERR":"Greška pri instaliranju dodatka!","ADDON_DISCONNECTED":"Veza prekinuta","ADDON_APP_MISSING":"aplikacija za ovaj izvor nije instalirana. Želiš li sada instalirati?","ADDON_APP_INSTALL":"Instaliraj sada","ADDON_PAGE":"Stranica dodataka","ADDON_TOP_CONTENT":"Najbolje do ovog dodatka","ADDON_PROVIDES":"Ovaj dodatak će vam dati:","ADDON_WATCH":"Pogledaj #{types} sada!","ADDON_WATCH_FREE":"Pogledaj #{types} BESPLATNO sada !","ADDON_ADDON":"Dodatak","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"Više #{types} u Otkrivanju","ADDON_PROVIDES_STREAMS":"Gledaj #{types}","ADDON_PROVIDES_STREAMS_FREE":"Gledaj #{types} BESPLATNO","ADDON_PROVIDES_SUBTITLES":"Prijevodi za #{types}","ADDON_CANTDETECT":"Nismo uspjeli pronaći i pokrenuti Stremio, tako da nismo uspjeli otkriti koje dodatke imate instaliarne.","ERR_NO_META":"Nisu pronađene informacije o ovome ","ERR_GETTING_META":"Greška pri preuzimanju podataka.","ERR_CANT_PARSE_MAGNET":"Nemoguće spojiti magnet","ERR_NO_MAGNET_INFOHASH":"Bez valjanog hash-a za magnet","ERR_NO_FILE_PATH":"Nije moguće poslati zahtjev bez lokacije datoteke","ERR_NO_TORRENT":"Nema torrent-a","ERR_NO_SUPPORTERD_FILES":"Nisu nađene podržane datoteke","ERR_OPENING_FILES":"Nije moguće otvoriti vanjske datoteke","ERR_INVALID_LINK":"Link nije valjan","ERR_REGISTERED_ONLY":"Ova mogućnost je dostupna samo registriranim korisnicima.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Nastavi gledanje","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmovi izabrani isključivo za vas.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Gledaj Odmah","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Skini sada","WEBSITE_DOWNLOAD_FOR":"Skini sada za","WEBSITE_IS_DESKTOP":"Stremio je desktop aplikacija, otvori ovu stranicu na svom PC i skini ga","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Glavna","WEBSITE_PAGE_FEATURES":"Karakteristike","WEBSITE_PAGE_ADDONS":"Dodaci","WEBSITE_PAGE_TECH":"Tehnologija","WEBSITE_PAGE_CREATE_ADDON":"Kreiraj dodatak","WEBSITE_PAGE_CONTACTS":"Kontakti","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filmovi","WEBSITE_TYPE_series_PL":"Serije","WEBSITE_TYPE_tv":"Uživo TV","WEBSITE_TYPE_channel":"Kanali","WEBSITE_STREMIO_WHAT_IS":"Stremio je aplikacija koja vam pomaže da organizujete i odmah gledate vaše omiljene video, filmove, TV serije i TV kanale.","WEBSITE_FEATURES_WATCH":"Gledaj odmah u HD","WEBSITE_FEATURES_WATCH_DETAIL":"Kliknite i pokrenite svoje omiljene filmove, TV Emisije, video i TV kanale.","WEBSITE_FEATURES_SUBS":"Automatski Prevodi","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatski odabire sinkronizirane prijevode za vaš jezik.","WEBSITE_FEATURES_SUBS_LABEL":"Stremio automatski odabire sinkronizirane prijevode za vaš jezik.","WEBSITE_FEATURES_CAST":"Pokreni na TV & mobilnim uređajima","WEBSITE_FEATURES_CAST_DETAIL":"Emitiranje na AppleTV, Chromecast, Smart TV (DLNA/UPnP) i mobilne uređaje.","WEBSITE_LIB":"Uživajte u Svojoj osobnoj Videoteci sinkoniziranoj na Sve Vaše Uređaje","WEBSITE_LIB_COLLECT":"Prikupite sa Stremio","WEBSITE_LIB_IMPORT":"Uvezite sa Facebook-a","WEBSITE_LIB_LOCAL":"Dodajte sa vašeg lokalnog diska","WEBSITE_BOARD":"Ploča - Vaše one-stop mjesto za obavještenja i preporuke","WEBSITE_BOARD_RECOMMEND":"Preporučena TV Emisija","WEBSITE_BOARD_TRENDING":"Traženi Film","WEBSITE_BOARD_NEW":"Novi Video","WEBSITE_BOARD_EPISODE":"Nova Epizoda","WEBSITE_BOARD_1":"Tražite nešto interesantno da gledate? Dobijajte preporuke na osnovu vašeg ukusa!","WEBSITE_BOARD_2":"Primite obavještenja kada nova epizoda vaš omiljene TV emisije ili YouTube kanala izadje!","WEBSITE_BOARD_YOUTUBE":"Novi Videi na Youtube kanalima","WEBSITE_BOARD_EPISODES":"Nove epizode serije koje pratite","WEBSITE_ADDONS":"Dodaci za sadržaj","WEBSITE_TECH_DETAIL":"Volimo tehnologiju, volimo znanost!\\nStremio koristi sljedeći softver otvorenog koda:","WEBSITE_TECH_WCJS":"WebChimera.js omogućava gledanje u bilo kojem formatu sa dobrim performansama","WEBSITE_TECH_WCJS_EXTRA":"Mi smo glavni suradnici ","WEBSITE_TECH_ELECTRON":"Electron pruža inovativu platformu za Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Mi smo suradnici projekta","WEBSITE_TECH_LINVODB":"Baza podataka koja omogućava da su podaci organizirani i svugdje spremni.","WEBSITE_TECH_LINVODB_EXTRA":"Kućna tehnologija","WEBSITE_CREATE_ADDON":"Kreiraj svoj dodatak","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Zainteresirani? Dobrodošli ste da nas <a href=\'mailto:office@stremio.com\'>kontaktirate</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Mišljenja koja dijelimo:","WEBSITE_SPREAD":"Nek se čuje za Stremio:","WEBSITE_CONTACT":"Ako nas mislite kontaktirati, slobodno","WEBSITE_OPENSOURCE":"Za naš otvoreni kod idi na","WEBSITE_BITCOIN":"Doniraj bitcoin:","WEBSITE_FAQ":"Često postavljena pitanja","WEBSITE_FAQ_SHORT":"ČPP","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Uslovi korištenja","WEBSITE_LEGAL":"Zakoni","WEBSITE_PAGE_ABOUT":"O nama","WEBSITE_PAGE_BECOME_PARTNER":"Postani partner","WEBSITE_ALL_YOU_CAN_WATCH":"Sloboda gledanja\\nsvega što želiš.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Što je Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio dodaci","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partneri i pomagači","WEBSITE_COMMUNITY_GOODIES":"Stremio dobri","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpaperi","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sport","FOOD_HEALTH":"Hrana i zdravlje","BEAUTY_FASHION":"Ljepota i moda","NEWS":"Vijesti","GAMING":"Gaming","SCIENCE_EDUCATION":"Znanost i edukacija","MUSIC":"Glazba","TRAVEL":"Putovanje","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Komedija","DIY":"DIY","TECH":"Tech","CINEMA":"Kinomatografija","CONTINUE":"Nastavi","SLOW_LOADING":"Loše učitavanje?","I_GIVE_UP":"PREDAJEm SE","LEARN_MORE":"Saznaj više","POOR_SOURCE":"Ovaj izvor je slabo dostupan ili je Vaša internet konekcija prespora","PICK_CATEGORIES_ERR":"Moraš odabrati najmanje 3 kategorije","ADJUST_TIMING":"Promijeni vrijeme sa ","ADJUST_SIZE":"Promijeni veličinu sa ","SEARCH_ANYTHING":"Pretražuj sve...","ALL_CATEGORIES":"Sve","SEARCH_CATEGORIES":"Filmove, Serije, YouTube & TV","SEARCH_PERSONS":"Glumce, Režisere i Scenografe","SEARCH_PROTOCOLS":"HTTP i Magnet Linkove","SEARCH_TYPES":"IMDB / TVDB linkove","WATCHED":"Pregledano","SHOW_LESS":"Prikaži manje","LAST_SEARCHES":"Posljednje pretrage","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"ODABERI NEŠTO OD OVOGA:","NO_WEB_REMOTE":"Daljinski upravljač nije moguče učitati","STREMIO_OFFLINE":"Stremio nije povezan","STREMIO_EXPENSIVE_CONNECTION":"Prijenos podataka je skup","USE_DATA":"Korištenje podataka","WARNING":"Upozorenje","MORE_INFO":"Više Informacija ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Učitavanje ...","STREMIO_TV_BACK_TO_LANGUAGES":"Nazad na jezike","STREMIO_TV_REMOTE":"Daljinski upravljač","STREMIO_TV_GO_TO":"Idi na:","STREMIO_TV_OR_SCAN":"ili skeniraj:","STREMIO_TV_ADDON_INSTRUCTIONS":"Molim slijedite upute za instaliranje dodataka.","STREMIO_TV_LIVE_TV":"TV uživo","STREMIO_TV_RESUME_WATCHING":"Nastavi Gledanje","STREMIO_TV_LOADING_BACKGROUND":"Pozadina učitavanja","STREMIO_TV_CHECKING_AUTHENTICATION":"Provjera autentifikacije","STREMIO_TV_LOADING_BOARD":"Ploča učitavanja","STREMIO_TV_LOGIN_HEADER_LINE_1":"Želimo da naši korisnici imaju najbolje moguće personalizirano iskustvo sa našim softverom.","STREMIO_TV_LOGIN_HEADER_LINE_2":"To je razlog zašto vas ljubazno molimo da se prijavite u svoj račun.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Hvala na razumjevanju,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Stremio Tim","STREMIO_TV_REMOTE_INSTRUCTIONS":"Da bi koristili Web daljinski upravljač sa Mobilnim uređajem / Tabletom / PC:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Postavke","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio krug nije detektirao internet vezu.","STREMIO_TV_WIFI_DETAILS_1":"Povezi se sa:","STREMIO_TV_WIFI_DETAILS_2":"stremio-krug","STREMIO_TV_WIFI_DETAILS_3":"Koristi lozinku:","STREMIO_TV_WIFI_DETAILS_4":"stremiokrug","STREMIO_TV_WIFI_DETAILS_5":"Otvori internet preglednik sa:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Promijeni uređaj","REMOTE_VIDEOS":"Videi","REMOTE_ADJUST_TIMING":"Namjesti vrijeme","REMOTE_ADJUST_SIZE":"Namjesti veličinu","REMOTE_COULD_NOT_BE_LOADED":"Web daljinski upravljač nije moguće učitati","REMOTE_RETRY":"Pokušaj ponovo","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},5657:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Sorozat","TYPE_tv":"TV csatorna","TYPE_channel":"Csatorna","TYPE_other":"Egyéb","TYPE_movie_PL":"Filmek","TYPE_series_PL":"Sorozatok","TYPE_tv_PL":"TV csatornák","TYPE_channel_PL":"Csatornák","TYPE_other_PL":"Egyebek","TYPE_ALL":"All","VIDEO":"Video","BACK":"Vissza","MORE":"Több","DONE":"Kész","COPY":"Másolás","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Felfedezés","Board":"Ajánlatok","Library":"Könyvtár","My Library":"Könyvtáram","Calendar":"Naptár","NOTIFICATION_ONLINE":"Jelenleg online vagy","NOTIFICATION_OFFLINE":"Jelenleg offline vagy","INTERNET_CONNECTION":"Hálózat csatlakoztatva","STORAGE_FULL_TITLE":"Figyelem: a tárhelye megtelt!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"Keresés","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Másoljon be HTTP vagy Mágnes linket","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Hozzáadás a könyvtárhoz","REMOVE_FROM_LIB":"Eltávolítás a könyvtárból","ADDED_TO_LIB":"Hozzáadva a könyvtárból","REMOVED_FROM_LIB":"Eltávolítva a könyvtárból","TRAILER":"Előzetes","WATCH_TRAILER":"Előzetes megtekintése","WATCH_NOW":"Indítás","SHOW":"Tovább","SHOW_MOVIE":"Film megtekintése","WATCH_RANDOM":"Véletlen megtekintése","IMDB_RATING":"IMDb értékelés","YEAR":"Év","DIRECTOR":"Rendező","WRITER":"Író","LEAD_ACTORS":"Főszereplők","CAST":"Szereposztás","CREW":"Crew","SHOW_MORE_CAST":"Mutass többet »","AIRED":"Vetítve","SEASONS":"Évad","GENRE":"Műfaj","CATALOG":"Katalógus","SUMMARY":"Tartalom","SHOW_MORE":"Mutass többet","SIMILAR":"Hasonló","UPCOMING":"Nemsokára","ENDED":"Vége","DURATION":"Időtartam","FEATURED":"Featured","METADATA":"Metaadat","CATEGORY":"Kategória","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Videó keresése","SEARCH_PLACEHOLDER":"Keress vagy másolj be mágnes linket","ADDON":"bővítmény","ADDONS":"Bővítmények","OFFICIAL":"hivatalos","ADDONS_OFFICIAL":"Hivatalos Streamio bővítmények","ADDONS_POPULAR":"Népszerű a környezetedben","ADDON_FREE":"ingyenes","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"előfizetés","ADDON_STREAM_GEORESTRICTED":"Nem erélhető a régiódban","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Elérhető streamek","NO_STREAM":"Nincs elérhető stream","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Show all addons »","ADDON_CATALOGUE_MORE":"More addons »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Protected addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"A filmet még moziban játsszák","WATCH_IN_CINEMA":"Elérhető a közeli moziban","IN_THEATER":"In cinema","GET_TICKETS":"Get tickets","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Ez a csatorna még nincs tárolva.<br>Kérjük, térj vissza pár perc múlva.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Add hozzá a könyvtáradhoz és értesítünk, amikor elérhetővé válik.","GET_NOTIFIED_WHEN_AVAILABLE":"Értesítünk, amikor elérhetővé válik.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Lejátszási sebesség","PLAYER_PLAYBACK_ERROR":"Lejátszási hiba, próbáld újra","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"lejtászás innen","CASTING_TO":"Továbbítva","NETWORK_STATUS":"Kapcsolat állapota","STREAM_SPEED":"Letöltés sebessége:","STREAM_BUFFERED":"Betöltve:","PEERS_INFO":"Kapcsolatok","PEERS_ACTIVE":"Aktív:","PEERS_CONNECTED":"Kapcsolódva:","PEERS_WAITING":"Várakoznak:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"betöltés...","PLAYING_LOCAL":"lejátszás helyi fájlból","PLAYING_CACHE":"lejátszás gyorsítótárból","WRONG_SUBS":"Hibás felirat?","ERR_SUBS_LOADING_TITLE":"Hiba a feliratok betöltése közben","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Válassz egy készüléket a továbbításhoz","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Telefon / Táblagép","SUBTITLES":"Feliratok","SUBTITLES_CHANGE":"Másik felirat választása a következő nyelvhez: ","SUBTITLES_CHANGE_NONE":"Sajnáljuk, nem érhető el másik felirat ehhez a nyelvhez.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alteratively,","SUBTITLES_ADJUST_DELAY":"Felirat késleltetésének beállítása:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_DELAY":"Feliratok késleltetése:","SUBTITLES_LOADING":"Feliratok betöltése...","SUBTITLES_UNAVAILABLE":"Nem érhető el felirat","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Évad","EPISODE":"Epizód","SPECIAL":"Special","SORT":"rendez","SORT_BY":"rendezés","FILTER":"filter","SORT_TRENDING":"Nézettség","SORT_RECENT":"legújabbak","SORT_ALPHABET":"A-tól Z-ig","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"értékelés","SORT_WATCHED":"megtekintve","SORT_YEAR":"év","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Újdonságok Neked","New Episodes":"Új Epizódok","New Videos":"Új Videók","Recommendations":"Ajánlások","LIBRARY_RESUME":"folytatás","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Részletek","LIBRARY_RESUME_DISMISS":"dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Ajánlott","DISCOVER_TOP":"Népszerűek","DISCOVER_OSCAR":"Oscar nyertesek","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Figyelmeztetés: nincs bekapcsolt Stremio bővítmény ehhez a típushoz. Elmentett elemek mutatása, melyek nem fognak frissülni.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Újraindítás most!","UPGRADE":"Frissítés a legújabb Streamio verzióra","RELOAD_UI":"Felhasználói felület újratöltése","MANUAL_UPDATE_TITLE":"Frissítsd a Stremio verzióját","MANUAL_UPDATE_LINE1":"Egy már nem támogatott verzióját futtatod a Stremionak, mely erősen nem ajánlott.","MANUAL_UPDATE_LINE2":"Frissíts, amilyen gyorsan lehetséges.","BUTTON_UPDATE_LATTER":"Ne most","BUTTON_UPDATE_NOW":"Frissítés","ANONYMOUS_USER":"Anonymous felhasználó","DONT_HAVE_ACC":"Nincs fiókod?","HAVE_ACC":"Van már fiókod?","PASSWORD":"Jelszó","PASSWORD_CONFIRM":"Jelszó megerősítése","EMAIL":"E-mail","FB_LOGIN":"Bejelentkezés Facebookkal","FB_NOTHINGSHARED":"Semmit nem osztunk meg a beleegyezésed nélkül","FB_NOPOST":"Semmit nem posztolunk a részedről","OR":"vagy","I_ACCEPT":"Elfogadom a","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"felhasználói feltételeket","MUST_ACCEPT_TERMS":"El kell fogadnod a feltételeket","PASSWORDS_NOMATCH":"Jelszó nem egyezik","SIGN_UP":"Regisztráció","SIGN_UP_EMAIL":"Regisztráció email-lel","CLICK_TO_SIGN_UP":"Kattints ide a regisztrációhoz.","LOG_IN":"Bejelentkezés","LOG_OUT":"Kijelentkezés","EXIT_FULLSCREEN":"Kilépés teljes képernyőből","ENTER_FULLSCREEN":"Teljes képernyős mód","PLAY_URL_MAGNET_LINK":"URL/Mágnes link lejátszása","HELP_FEEDBACK":"Segítség & visszajelzés","TERMS_OF_SERVICE":"Szolgáltatás feltételei","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"A Stremioról","USER_PANEL":"Felhasználói panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Vendég belépés","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"kattins ide","WRONG_PASSWORD":"Rossz jelszó. Ha elfelejtetted a jelszavad, ","SET_A_PASS":"jelszó beállítása","RESET_PASSWORD":"Jelszó visszaállítása","FORGOT_PASSWORD":"Elfelejtett jelszó?","EMAIL_USED_WITH_FB":"Ez az email már hozzá van rendelve egy Facebookos regisztrációhoz.","INVALID_EMAIL":"Kérjük adjon meg egy érvényes email címet","INVALID_PASSWORD":"Kérjük adjon meg egy érvényes jelszót","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Harmadik féltől származó bővítmények használata mindig a felhasználó felelőssége, a felhasználó tartózkodási területén életben lévő törvényeket tiszteletben tartva.","ADDON_ACTIVATE":"Bekapcsolod ezt a bővítményt?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Újdonságok","BUTTON_CONTINUE":"Folytatás","BUTTON_ACTIVATE":"Bekapcsolás","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Mégse","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"A könyvtárad üres. Fedezd fel, milyen hasznos ez a funkció :) ","HOW_START":"Használatához ennyit kell tenned:","LIB_EMPTY_CAL":"A naptárad a könyvtáradban található sorozatokat mutatja.","HOW_START_CAL":"Sorozatok hozzáadásához a következőket kell tenned:","LIB_EMPTY_BOARD":"Az ajánlatok fül értesítéseket & javaslatokat mutat a könyvtárad alapján.","HOW_START_BOARD_WAIT":"Kérjük, addj pár sorozatot és csatornát a könyvtáradhoz, és mi pár perc alatt feldolgozzuk :)","HOW_START_BOARD":"Így adhatsz hozzá sorozatokat & filmeket:","IMPORT_FB":"Importálj általad kedvelt tartalmakat a <span>Facebookról</span>","IMPORT_TRAKT":"Importáld médiakönyvtárad a <span>Traktról</span>","IMPORT_DISCOVER":"Keress érdekes tartalmakat a <span>Felfedezés</span> fülről","IMPORT_DISK":"Importálj filmeket és sorozatokat a <span>helyi lemezedről</span>","PLEASE_CREATE_ACC":"Please <u>create an account</u> to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from <span>Discover</span>","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your <span>local disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Alkalmazás indítása Windows indításakora","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Importálás Facebookról","SETTINGS_IMPORT_DISK":"Importálás helyi lemezről","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Feliratkozás naptárra","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Jelszó megváltoztatása","SETTINGS_TOS":"Felhasználói feltételek","SETTINGS_SUPPORT":"Kapcsolat felvétele","SETTING_LANGUAGE":"Nyelv","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Kilépés","CONNECTED":"Connected","AUTHENTICATE":"Bejelentkezés","CACHING":"Tárolás","SETTINGS_CACHING_DRIVE":"Válaszd ki a tárolás helyét","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Január","February":"Február","March":"Március","April":"Április","May":"Május","June":"Június","July":"Július","August":"Augusztus","September":"Szeptember","October":"Október","November":"November","December":"December","Monday":"Hétfő","Tuesday":"Kedd","Wednesday":"Szerda","Thursday":"Csütörtök","Friday":"Péntek","Saturday":"Szombat","Sunday":"Vasárnap","Action":"Akció","Comedy":"Vígjáték","War":"Háborús","Family":"Családi","Animation":"Animációs","Adventure":"Kaland","Fantasy":"Fantasztikus","Crime":"Bűntény","Mystery":"Misztikus","Romance":"Romantikus","Drama":"Dráma","Horror":"Horror","Thriller":"Krimi","Sci-Fi":"Sci-Fi","Music":"Zenei","Biography":"Életrajzi","Documentary":"Dokumentum","Sport":"Sport","Musical":"Musical","Western":"Vadnyugati","Film-Noir":"Noir","News":"Hírek","History":"Történelem","Game-Show":"Játék show","Reality-TV":"Reality","Talk-Show":"Beszélgetős műsor","Film & Entertainment":"Film & Szórakoztatás","Gaming":"Játék","From TV":"TV-ből","Lifestyle":"Életstílus","Science & Education":"Tudomány és oktatás","Cooking & Health":"Főzés és egészség","Beauty & Fashion":"Szépségápolás és divat","Sports":"Sport","News & Politics":"Hírek és politika","How-to & DIY":"Útmutatók és barkácsolás","Tech":"Technológia","Automotive":"Autó","Causes & Non-Profits":"Ügyek és non-profit","Movies":"Filmek","Uk Live Tv":"Egyesült Királyság beli élő TV","Fashion":"Divat","Business News Radio":"Rádiós üzleti hírek","Business Tv":"Üzleti TV","Cars & Auto":"Autók","Comedy Radio":"Rádiós komédia","Lifestyle Radio":"Életstílus rádió","News Tv":"TV-s hírek","Food And Wine":"Étel és ital","Latino Tv":"Latin TV","Shopping Tv":"TV-s vásárlás","Religion":"Vallás","Kids":"Gyerekek","Body & Soul":"Test és lélek","Education":"Oktatás","Indian Tv":"Indiai TV","Extreme Sports":"Extrém Sportok","Middle Eastern Tv":"Közel-Keleti TV","Celebrity Tv":"Hírességek TV","Science Tv":"Tudományos TV","Bikini babe":"Bikinis csajok","Outdoors":"Környezet","German Tv":"Német TV","French Tv":"Francia TV","Italian Tv":"Olasz TV","Gamer Tv":"Játékos TV","Travel":"Utazás","Asian Tv":"Ázsiai TV","Entertainment":"Szórakoztatás","News Radio":"Rádiós hírek","Music Radio":"Zenei rádió","Language Learning":"Nyelvtanulás","Science Radio":"Tudományos rádió","Tech Radio":"Technológiai rádió","Science & Technology Vod":"Tudomány és technológia","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years, with a single goal - to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - support us!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"provides","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Nézd tovább","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Folytatás","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"Midenre Rá Tudsz Keresni...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Filmek, Sorozatok, YouTube & TV","SEARCH_PERSONS":"Színészek, Rendezők & Írók","SEARCH_PROTOCOLS":"HTTP & Mágnes Linkek","SEARCH_TYPES":"IMDB / TVDB Linkek","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Keresési előzmények","CLEAR_HISTORY":"Előzmények törlése","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"A Stremio nem érhető el","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},1472:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serial","TYPE_tv":"Saluran TV","TYPE_channel":"Saluran","TYPE_other":"Lainnya","TYPE_movie_PL":"Film - film","TYPE_series_PL":"Serial - serial","TYPE_tv_PL":"Saluran - saluran TV","TYPE_channel_PL":"Saluran - saluran","TYPE_other_PL":"Lainnya","TYPE_ALL":"All","VIDEO":"Vidio","BACK":"Kembali","MORE":"Lebih Banyak","DONE":"Selesai","COPY":"Salin","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Temukan","Board":"Papan","Library":"Perpustakaan","My Library":"Perpustakaan Saya","Calendar":"Kalender","NOTIFICATION_ONLINE":"Anda sedang online","NOTIFICATION_OFFLINE":"Anda saat ini sedang offline","INTERNET_CONNECTION":"Koneksi Jaringan","STORAGE_FULL_TITLE":"Peringatan: Penyimpanan penuh!","STORAGE_FULL_TEXT":"Stremio tidak akan dapat menyimpan pengaturan, preferensi, atau informasi login Anda. Pertimbangkan untuk memulai ulang atau menginstal ulang Stremio.","SEARCH":"cari","SEARCH_NO_RESULTS":"Tidak ada hasil yang ditemukan","SEARCH_EXPLANATION_CONTENT":"Pencarian untuk film, serial, YouTube dan saluran TV","SEARCH_EXPLANATION_PEOPLE":"Pencarian untuk aktor, direktur dan penulis","SEARCH_PASTE_LINKS":"Tempelkan HTTP dan Link Magnet","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Tambahkan ke perpustakaan","REMOVE_FROM_LIB":"Hapus dari perpustakaan","ADDED_TO_LIB":"Ditambahkan ke Perpustakaan","REMOVED_FROM_LIB":"Dihapus dari Perpustakaan","TRAILER":"Cuplikan","WATCH_TRAILER":"Lihat cuplikan","WATCH_NOW":"Lihat sekarang","SHOW":"Tampilkan","SHOW_MOVIE":"Tampilkan film","WATCH_RANDOM":"Lihat secara acak","IMDB_RATING":"Peringkat IMDb","YEAR":"Tahun","DIRECTOR":"Direktur","WRITER":"Penulis","LEAD_ACTORS":"Aktor utama","CAST":"Pemeran","CREW":"Kru","SHOW_MORE_CAST":"Tampilkan lebih banyak »","AIRED":"Ditayangkan","SEASONS":"Musim","GENRE":"Aliran","CATALOG":"Katalog","SUMMARY":"Ringkasan","SHOW_MORE":"Tampilkan lebih banyak","SIMILAR":"Serupa","UPCOMING":"Mendatang","ENDED":"Berakhir","DURATION":"Durasi","FEATURED":"Unggulan","METADATA":"Metadata","CATEGORY":"Kategori","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"pencarian vidio","SEARCH_PLACEHOLDER":"cari atau tempelkan URL","ADDON":"tambahan","ADDONS":"Tambahan","OFFICIAL":"Resmi","ADDONS_OFFICIAL":"Tambahan Resmi Stremio","ADDONS_POPULAR":"Populer Di Area Anda","ADDON_FREE":"Gratis","ADDON_PEERED":"Mengintip","ADDON_SUBSCRIPTION":"Berlangganan","ADDON_STREAM_GEORESTRICTED":"Tidak Tersedia Di Area Kamu","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"File lokal","SHARE_ADDON":"Berbagi Tambahan","AVAILABLE_STREAMS":"Aliran Yang Tersedia","NO_STREAM":"Tidak Tersedia Siaran","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Untuk lebih banyak streaming, silakan instal lebih banyak add-on","STREAM_NOT_SUPPORTED":"Aliran yang dipilih tidak didukung di platform ini.","ADDON_CATALOGUE":"Tampilkan semua addon »","ADDON_CATALOGUE_MORE":"Instal addon","REPO_ADDED":"Repository Ditambahkan","ADDON_REPO_EXIST_ERR":"Koleksi addon ini sudah ada","ADDON_REPO_ERR":"Terjadi kesalahan saat menambahkan koleksi","ADDON_ADD_ERR":"Terjadi kesalahan saat menambahkan addon","ERR_ADDON_PROTECTED":"Tidak dapat menghapus instalan addon, itu dilindungi","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Ada yang tidak beres - autentikasi mungkin gagal","ERR_NOT_COLLECTION_URL":"Bukan URL koleksi","ERR_NOT_ADDON_URL":"Bukan URL addon yang valid","ERR_DETECTFROMURL":"Tidak dapat menemukan addon/koleksi dari URL ini","ADDON_DUPLICATE_WARNING":"Peringatan: addon duplikat","ADDON_COLLECTION_SET_FAILED":"Sinkronisasi add-on yang diinstal ke akun Anda gagal","SETTINGS_DATA_EXPORT":"Ekspor data pengguna","ADDON_PULL_FAILED":"Sinkronisasi add-on yang diinstal dari akun Anda gagal","REFRESH_ON_CLICK":"Klik untuk mencoba lagi","STILL_IN_THEATER":"Masih Di Bioskop","WATCH_IN_CINEMA":"Menonton Di Bioskop","IN_THEATER":"Di Bioskop","GET_TICKETS":"Mendapatkan tiket","UPCOMING_EPISODE":"Episode Mendatang","UPCOMING_EPISODE_MESSAGE":"Pesan Episode Selanjutnya","MISSING_DATE_EPISODE":"Tanggal Episode Tidak Ditemukan","MISSING_DATE_EPISODE_MESSAGE":"Episode Belum Tayang Sekarang","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.<br>Please come back in a few minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Tambahkan ke pustaka anda untuk mendapat notifikasi jika sudah tersedia.","GET_NOTIFIED_WHEN_AVAILABLE":"Mendapatkan Notifikasi Ketika Tersedia.","WARNING_STREAMING_SERVER":"Peringatan: server siaran lokal tidak ditemukan. Siaran dari lokal file, Youtube dan BitTorent tidak akan tersedia.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Peringatan: vidio ini mungkin tidak didukung perangkat anda. Pemutaran vidio mungkin akan lambat","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Terkunci","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Error tidak diketahui","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Langsung","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Hiraukan","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Tonton sekarang","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Siaran dari","CASTING_TO":"Casting to","NETWORK_STATUS":"Status jaringan","STREAM_SPEED":"Stream speed:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Aktif:","PEERS_CONNECTED":"Terhubung:","PEERS_WAITING":"Menunggu:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"memuat...","PLAYING_LOCAL":"memutar dari lokal file","PLAYING_CACHE":"playing from cache","WRONG_SUBS":"Subtitle bermasalah?","ERR_SUBS_LOADING_TITLE":"Error memuat subtitle","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Choose a device to watch on","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Phone / Tablet","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Change subtitles for ","SUBTITLES_CHANGE_NONE":"There are no other subtitles for this language, sorry.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternatively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Season","EPISODE":"Episode","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"recent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rating","SORT_WATCHED":"watched","SORT_YEAR":"year","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"Resume","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"Dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oscar Winners","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Warning: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Re-launch now!","UPGRADE":"New version is available! Upgrade to the latest Stremio version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Continue with Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"or","I_ACCEPT":"I accept the","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Terms and Conditions","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Passwords don\'t match","SIGN_UP":"Sign up","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Log in","LOG_OUT":"Log out","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Guest login","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"click here","WRONG_PASSWORD":"Wrong email or password. In case you have forgotten your password, ","SET_A_PASS":"set a password","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"This email was used with a Facebook login.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Activate this addon?","ADDON_REPO_ADD":"Addon collection URL","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"What\'s new","BUTTON_CONTINUE":"Continue","BUTTON_ACTIVATE":"Activate","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Cancel","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Here is how you can start:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from <span>Facebook</span>","IMPORT_TRAKT":"Import your media library from <span>Trakt</span>","IMPORT_DISCOVER":"Find interesting stuff from <span>Discover</span>","IMPORT_DISK":"Import movies or shows you have on your <span>local disk</span>","PLEASE_CREATE_ACC":"Please <u>create an account</u> to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from <span>Discover</span>","IMPORT_DISK_SIGNUP":"Sign up and import movies or shows you have on your <span>local disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Change password","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Contact support","SETTING_LANGUAGE":"Language","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Quit","CONNECTED":"Connected","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"January","February":"February","March":"March","April":"April","May":"May","June":"June","July":"July","August":"August","September":"September","October":"October","November":"November","December":"December","Monday":"Monday","Tuesday":"Tuesday","Wednesday":"Wednesday","Thursday":"Thursday","Friday":"Friday","Saturday":"Saturday","Sunday":"Sunday","Action":"Action","Comedy":"Comedy","War":"War","Family":"Family","Animation":"Animation","Adventure":"Adventure","Fantasy":"Fantasy","Crime":"Crime","Mystery":"Mystery","Romance":"Romance","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Music","Biography":"Biography","Documentary":"Documentary","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon collections","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Tonton Langsung","WEBSITE_SLOGAN_ALL":"Semua Konten Vidio yang Kamu Nikmati dalam Satu Tempat","WEBSITE_SLOGAN_NEW":"Semua Yang Kamu Tonton","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Tonton dari","WEBSITE_DOWNLOAD":"Unduh Sekarang","WEBSITE_DOWNLOAD_FOR":"Unduh Sekarang untuk","WEBSITE_IS_DESKTOP":"Stremio adalah aplikasi desktop, buka halaman ini dengan komputer kamu dan download","WEBSITE_DESKTOP_DEMO_VID":"Desmo Desktop","WEBSITE_PAGE_HOME":"Beranda","WEBSITE_PAGE_FEATURES":"Fitur","WEBSITE_PAGE_ADDONS":"Tambahan","WEBSITE_PAGE_TECH":"Teknologi","WEBSITE_PAGE_CREATE_ADDON":"Buat Tambahan","WEBSITE_PAGE_CONTACTS":"Kontak","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Film","WEBSITE_TYPE_series_PL":"Serial","WEBSITE_TYPE_tv":"TV Langsung","WEBSITE_TYPE_channel":"Saluran","WEBSITE_STREMIO_WHAT_IS":"Stremio adalah sebuah aplikasi yang membantu kamu mengatur and menonton vidio favorit, film, serial televisi dan saluran televisi kamu secara langsung","WEBSITE_FEATURES_WATCH":"Tonton HD secara langsung","WEBSITE_FEATURES_WATCH_DETAIL":"Klik dan mainkan film kesukaan, acara televisi, vidio dan saluran televisi kamu.","WEBSITE_FEATURES_SUBS":"Subjudul Otomatsi","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio secara otomatis memilih subjudul yang disinkronkan untuk bahasa kamu.","WEBSITE_FEATURES_SUBS_LABEL":"Langkahmu, Ketua.","WEBSITE_FEATURES_CAST":"Putar di Televisi & perangkat seluler","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Nikmati pustaka pribadi kamu yang tersinkronisasi pada seluruh perangkat kamu","WEBSITE_LIB_COLLECT":"Kumpulkan dari Stremio","WEBSITE_LIB_IMPORT":"Impor dari Facebook","WEBSITE_LIB_LOCAL":"Tambahkan dari perangkat lokal kamu","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Rekomendasi siaran televisi","WEBSITE_BOARD_TRENDING":"Film yang sedang tren","WEBSITE_BOARD_NEW":"Vidio baru","WEBSITE_BOARD_EPISODE":"Episode baru","WEBSITE_BOARD_1":"Sedang mencari sesuatu yang menarik untuk ditonton? Dapatkan rekomendasi berdasarkan selera kamu!","WEBSITE_BOARD_2":"Dapatkan pemberitahuan ketika episode baru dari siaran favorit televisi kamu atau siaran Youtube telah keluar!","WEBSITE_BOARD_YOUTUBE":"Vidio baru dari siaran Youtube","WEBSITE_BOARD_EPISODES":"Episode baru dari serial yang kamu ikuti","WEBSITE_ADDONS":"Konten Tambahan","WEBSITE_TECH_DETAIL":"Kita cinta teknologi, kita cinta sekali dengan ilmu pengetahuan!\\nStremio menggunakan teknologi open source berikut :","WEBSITE_TECH_WCJS":"WebChimera.js mengizinkan Stremio untuk memutar format vidio apapun dengan performa yang baik.","WEBSITE_TECH_WCJS_EXTRA":"Kita adalah penyumbang proyek inti","WEBSITE_TECH_ELECTRON":"Electron menyediakan sebuah platform inovatif untuk membangung Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Kita adalah penyumbang proyek","WEBSITE_TECH_LINVODB":"Sebuah teknologi basis data yang memastikan data kamu terorganisir dan tersedia dimanapun kamu masuk.","WEBSITE_TECH_LINVODB_EXTRA":"Teknolog Internal","WEBSITE_CREATE_ADDON":"Buat Addon kamu","WEBSITE_CREATE_ADDON_DETAIL":"Apakah kamu menyediakan sebuah jasa konten vidio? Kita akan membantu mendapatkan manfaat dari fitur dengan membuatkan Addon kamu.","WEBSITE_CREATE_ADDON_BENEFITS":"Manfaat dari membuat sebuah Addon untuk Stremio","WEBSITE_P2P_BEAUTY":"Keindahan straming Peer-To-Peer","WEBSITE_P2P_1":"Video full HD / 4K yang andal dan terjangkau sesuai permintaan atau streaming langsung","WEBSITE_P2P_2":"Platform distribusi memberikan pengalaman pengguna yang luar biasa","WEBSITE_P2P_3":"Kami akan membuat addon yang memenuhi kebutuhan Anda","WEBSITE_P2P_CONTACT":"Tertarik? Kamu dipersilahkan untuk <a href=\'mailto:office@stremio.com\'>menghubungi kami</a>.","WEBSITE_P2P_CONTACT_EXTRA":"Kami akan dengan senang hati membantu Anda mengintegrasikan konten Anda dengan Stremio!","WEBSITE_P2P":"Sesekali, muncullah teknologi yang mengubah nama game tersebut. Kami menginvestasikan banyak waktu dan upaya dalam membangun mesin streaming video Peer-to-Peer (P2P) kami yang memberikan kinerja hebat dan keserbagunaan untuk beradaptasi dengan kasus penggunaan apa pun.\\nHubungi kami untuk video P2P berkemampuan DRM sesuai permintaan atau streaming langsung.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Subscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS (limited version)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Oh, tidak! Halaman yang kamu cari tidak ada disini...","WEBSITE_GO_HOME":"Ke Beranda","WEBSITE_LINK_OTHER_DOWNLOADS":"Unduh lainnya","WEBSITE_FAQ_ABR":"Pertanyaan yang sering diajukan","WEBSITE_SUPPORT":"Bantuan","WEBSITE_DOWNLOAD_4_0_BETA":"Unduh Stremio 4 beta Sekarang","WEBSITE_GET_FOR_DESKTOP":"Dapatkan untuk Desktop","WEBSITE_LINK_ADDON_COMPETITION":"Kompetisi Addon","WEBSITE_LINK_ART_CONTEST":"Kontes Seni","WEBSITE_MY_ACCOUNT":"Akun Saya","WEBSITE_MAINPAGE_FAQ_001_H1":"Apa itu Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio adalah pusat media modern yang memberikan kamu kegemaran untuk menonton apapun yang kamu mau.","WEBSITE_MAINPAGE_FAQ_002_H1":"Bagaimana itu bekerja?","WEBSITE_MAINPAGE_FAQ_002_P1":"Setelah Anda menginstal Stremio di perangkat Anda dan membuat akun, yang harus Anda lakukan adalah mengunjungi katalog addon dan menginstal addon apa pun yang Anda inginkan, dan Anda siap melakukannya!","WEBSITE_MAINPAGE_FAQ_002_P2":"Setelah itu, Anda dapat pergi ke bagian Discover atau Board untuk mulai menjelajahi konten.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can access a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},2948:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serie","TYPE_tv":"Canali TV","TYPE_channel":"Canali","TYPE_other":"Altri","TYPE_movie_PL":"Film","TYPE_series_PL":"Serie","TYPE_tv_PL":"Canali TV","TYPE_channel_PL":"Canali","TYPE_other_PL":"Altri","TYPE_ALL":"Tutto","VIDEO":"Video","BACK":"Indietro","MORE":"Di più","DONE":"Fatto","COPY":"Copia","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Modalità Casting","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Nessun transcoding","Discover":"Scopri","Board":"Bacheca","Library":"Libreria","My Library":"La mia Libreria","Calendar":"Calendario","NOTIFICATION_ONLINE":"Ora sei online","NOTIFICATION_OFFLINE":"Attualmente sei offline","INTERNET_CONNECTION":"Connessione di rete","STORAGE_FULL_TITLE":"Avviso: Memoria piena!","STORAGE_FULL_TEXT":"Stremio non sarà in grado di salvare le tue impostazioni, i preferiti e le informazioni di login. Prova a riavviare o reinstallare Stremio.","SEARCH":"Cerca","SEARCH_NO_RESULTS":"Nessun risultato trovato","SEARCH_EXPLANATION_CONTENT":"Cerca film, serie, YouTube e canali TV","SEARCH_EXPLANATION_PEOPLE":"Cerca attori, registi e autori","SEARCH_PASTE_LINKS":"Incolla HTTP e Magnet link","SEARCH_OR_PASTE_LINK":"Cerca o incolla link","ADD_TO_LIB":"Aggiungi alla Libreria","REMOVE_FROM_LIB":"Rimuovi dalla Libreria","ADDED_TO_LIB":"Aggiunto alla Libreria","REMOVED_FROM_LIB":"Rimosso dalla Libreria","TRAILER":"Trailer","WATCH_TRAILER":"Guarda Trailer","WATCH_NOW":"Guarda ora","SHOW":"Show","SHOW_MOVIE":"Mostra film","WATCH_RANDOM":"Guarda casuale","IMDB_RATING":"Voto IMDb","YEAR":"Anno","DIRECTOR":"Regista","WRITER":"Autore","LEAD_ACTORS":"Attori principali","CAST":"Cast","CREW":"Troupe","SHOW_MORE_CAST":"Mostra di più »","AIRED":"Trasmesso","SEASONS":"Stagioni","GENRE":"Genere","CATALOG":"Catalogo","SUMMARY":"Trama","SHOW_MORE":"Mostra di più","SIMILAR":"Simile","UPCOMING":"Prossimamente","ENDED":"Terminato","DURATION":"Durata","FEATURED":"In primo piano","METADATA":"Metadata","CATEGORY":"Categoria","LINKS_GENRES":"Genere","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Registi","SEARCH_VIDEOS":"cerca video","SEARCH_PLACEHOLDER":"cerca o incolla URL","ADDON":"addon","ADDONS":"Addons","OFFICIAL":"ufficiale","ADDONS_OFFICIAL":"Addon ufficiali di Stremio","ADDONS_POPULAR":"Popolari nella tua zona","ADDON_FREE":"gratuito","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"ad abbonamento","ADDON_STREAM_GEORESTRICTED":"non disponibile nella tua zona","ADDON_STREAM_OFFLINECACHE":"Cache Offline","ADDON_STREAM_LOCALFILE":"File locale","SHARE_ADDON":"Condividi addon","AVAILABLE_STREAMS":"Stream disponibili","NO_STREAM":"Nessuno stream disponibile","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Per vedere più stream, puoi installare altri addon","STREAM_NOT_SUPPORTED":"Lo stream selezionato non è supportato su questa piattaforma.","ADDON_CATALOGUE":"Mostra tutti gli addon »","ADDON_CATALOGUE_MORE":"Installa addon","REPO_ADDED":"Repository aggiunta","ADDON_REPO_EXIST_ERR":"Queste collezioni di addons esistono già","ADDON_REPO_ERR":"Si è verificato un errore durante l\'aggiunta della repository","ADDON_ADD_ERR":"Si è verificato un errore durante l\'aggiunta dell\'addon","ERR_ADDON_PROTECTED":"Impossibile disinstallare l\'addon, è protetto","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Qualcosa è andato storto - l’autenticazione potrebbe essere fallita","ERR_NOT_COLLECTION_URL":"Non è un URL di una collezione","ERR_NOT_ADDON_URL":"Non è un URL di un addon","ERR_DETECTFROMURL":"Impossibile trovare addon/collezioni da questo URL","ADDON_DUPLICATE_WARNING":"Avviso: addon duplicato","ADDON_COLLECTION_SET_FAILED":"Sincronizzazione degli addon installati verso il tuo account fallita","SETTINGS_DATA_EXPORT":"Esporta dati utente","ADDON_PULL_FAILED":"Sincronizzazione degli addon installati dal tuo account fallita","REFRESH_ON_CLICK":"Clicca per riprovare","STILL_IN_THEATER":"Film ancora al cinema","WATCH_IN_CINEMA":"Guardalo in un cinema vicino a te","IN_THEATER":"Al cinema","GET_TICKETS":"Compra biglietti","UPCOMING_EPISODE":"Episodio in arrivo","UPCOMING_EPISODE_MESSAGE":"Questo episodio sarà trasmesso il","MISSING_DATE_EPISODE":"Data episodio mancante","MISSING_DATE_EPISODE_MESSAGE":"Questo episodio potrebbe non essere ancora stato trasmesso","CHANNEL_NOT_SCRAPED":"Questo canale non è ancora disponibile.<br>Torna tra qualche minuto.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Aggiungilo alla tua libreria per ricevere una notifica quando sarà disponibile.","GET_NOTIFIED_WHEN_AVAILABLE":"Riceverai una notifica quando sarà disponibile.","WARNING_STREAMING_SERVER":"Attenzione: server di streaming locale non trovato. Lo streaming da file locali, YouTube e BitTorrent non sarà disponibile.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Attenzione: questo video potrebbe non essere supportato dal tuo hardware. Ricorda, la riproduzione potrebbe essere lenta.","PLAYER_ERROR":"Oops, Errore del Player","PLAYER_ERROR_LOOKSLIKE":"Sembra che","PLAYER_ORIENTATION":"Orientazione del player","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Bloccato","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensore","PLAYER_ORIENTATION_LANDSCAPE":"Orientazione del player bloccata in orizzontale","PLAYER_ORIENTATION_SENSOR":"Orientazione del player automatica (sensore)","PLAYER_PLAYBACK_SPEED":"Velocità di riproduzione","PLAYER_PLAYBACK_ERROR":"Errore di riproduzione, prova di nuovo","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Errore sconosciuto","PLAYER_PLAYBACK_ERROR_DEFAULT":"Ci dispiace, questo video non può essere riprodotto da {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Lingue sottotitoli","PLAYER_SUBTITLES_VARIANTS":"Versioni sottotitoli","PLAYER_SUBTITLES_SETTINGS":"Impostazioni sottotitoli","PLAYER_SUBTITLES_DISABLED":"Sottotitoli disattivati","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Posizione verticale","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pausa","PLAYER_NEXT_VIDEO":"Prossimo video","PLAYER_MUTE":"Muto","PLAYER_UNMUTE":"Non muto","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Dal vivo","PLAYER_NEXT_VIDEO_TITLE":"Prossimo su","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Nascondi","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Guarda ora","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"In streaming da","CASTING_TO":"Trasmesso su","NETWORK_STATUS":"Stato della rete","STREAM_SPEED":"Velocità dello stream:","STREAM_BUFFERED":"In buffer:","PEERS_INFO":"Informazioni sui peer","PEERS_ACTIVE":"Attivi:","PEERS_CONNECTED":"Connessi:","PEERS_WAITING":"In attesa:","TRANSCODING_WARNING":"Avvertimento: transcodifica video.","STREAM_LOADING":"in caricamento…","PLAYING_LOCAL":"riproduzione da file locale","PLAYING_CACHE":"riproduzione dalla cache","WRONG_SUBS":"Sottotitolo sbagliato?","ERR_SUBS_LOADING_TITLE":"Errore caricamento sottotitoli","ERR_SUBS_LOADING":"Caricamento sottotitoli fallito: potrebbe essere un problema dell\'addon che stai usando, oppure della connessione di rete","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Il seguente addon per sottotitoli non si è caricato","ERR_CASTING_UPDATE_TITLE":"Non è stato possibile aggiornare le info del dispositivo di riproduzione: il server di streaming potrebbe essere offline","CHOOSE_DEVICE":"Scegli un dispositivo su cui guardarlo","NO_CAST_DEVICES":"Nessun dispositivo per casting disponibile.","NO_SETTINGS":"Nessuna impostazione disponibile.","PHONE_TABLET":"Telefono / Tablet","SUBTITLES":"Sottotitoli","SUBTITLES_CHANGE":"Cambia i sottotitoli per ","SUBTITLES_CHANGE_NONE":"Non ci sono altri sottotitoli per questa lingua, ci dispiace","SUBTITLES_CHANGE_ACIVE":"In questo momento è attivo il sottotitolo #{{subtitlesDialog.activeIdx + 1}}. Clicca \\"Continua\\" per attivare il sottotitolo #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"In alternativa,","SUBTITLES_ADJUST_DELAY":"Aggiusta ritardo sottotitoli:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Oppure usa i tasti <span>G</span> / <span>H</span> durante la riproduzione per regolare.","SUBTITLES_ADJUST_DELAY_TIP":"SUGGERIMENTO: puoi usare <span>G</span> / <span>H</span> durante la riproduzione per regolare.","SUBTITLES_DELAY":"Ritardo sottotitoli:","SUBTITLES_LOADING":"Caricamento sottotitoli...","SUBTITLES_UNAVAILABLE":"Nessun sottotitolo esterno disponibile","SUBTITLES_DISABLED":"Disabilitati","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Lingua Predefinita","DEFAULT_SECONDARY_LANGUAGE":"Lingua Secondaria Predefinita","SEASON":"Stagione","EPISODE":"Episodio","SPECIAL":"Speciale","SORT":"ordina","SORT_BY":"Ordina per","FILTER":"filtro","SORT_TRENDING":"popolari","SORT_RECENT":"recenti","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"voto","SORT_WATCHED":"visto","SORT_YEAR":"anno","SELECT_TYPE":"Seleziona tipo","SELECT_SORT":"Seleziona ordinamento","SELECT_CATALOG":"Seleziona catalogo ","SELECT_GENRE":"Seleziona genere","SORT_LASTWATCHED":"Dall\'ultimo visto","SORT_NAME":"Per nome","SORT_TIMESWATCHED":"Per tempo visto","New for You":"Nuovi per te","New Episodes":"Nuovi Episodi","New Videos":"Nuovi Video","Recommendations":"Consigliati","LIBRARY_RESUME":"Riprendi","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Dettagli","LIBRARY_RESUME_DISMISS":"Scarta","LIBRARY_CLEAR_PROGRESS":"Azzera progresso","LIBRARY_REMOVE":"Rimuovi","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oscar Winners","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"Questo addon ha restituito un contenuto vuoto.","DISCOVER_ADULT_WARNING":"Questo contenuto è visibile solo agli adulti. Hai più di 18 anni?","DISCOVER_NOADDON_WARNING":"Attenzione: nessun addon di Stremio attivo per questo tipo. Questi sono gli elementi salvati, nulla verà aggiornato.","DISCOVER_LOAD_ERR":"Il contenuto non è stato caricato, riscontrato un errore.","DISCOVER_ADDON_UNINSTALLED":"Questo contenuto non è più disponibile, potresti aver disinstallato l\'addon.","UNINSTALL_THIS_ADDON":"Disinstalla questo addon","ERR_ADDON_NOT_INSTALLED":"Questo addon non è installato. Installarlo ora?","DETAIL_RECEIVE_NOTIF_SERIES":"Ricevi notifiche per i nuovi episodi","DETAIL_RECEIVE_NOTIF_VIDEOS":"Ricevi notifiche per i nuovi video","SIDEBAR_SHOW_STREAMS":"Mostra gli Stream","RELAUNCH":"Riavvia ora!","UPGRADE":"Nuova versione disponibile! Aggiorna all\'ultima versione di Stremio","RELOAD_UI":"Ricarica l’interfaccia utente","MANUAL_UPDATE_TITLE":"Aggiorna la tua versione di Stremio","MANUAL_UPDATE_LINE1":"Stai utilizzando una versione obsoleta di Stremio ed è altamente sconsigliato","MANUAL_UPDATE_LINE2":"Per piacere aggiorna Stremio il prima possibile.","BUTTON_UPDATE_LATTER":"Non ora","BUTTON_UPDATE_NOW":"Aggiorna","ANONYMOUS_USER":"Utente anonimo","DONT_HAVE_ACC":"Non hai un Account?","HAVE_ACC":"Hai già un Account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Conferma password","EMAIL":"E-mail","FB_LOGIN":"Continua con Facebook","FB_NOTHINGSHARED":"Nulla è condiviso senza il tuo permesso","FB_NOPOST":"Non scriveremo nulla a tuo nome","OR":"o","I_ACCEPT":"Accetto ","I_ACCEPT_BY_CLICKING":"Premendo il pulsante sopra confermo di accettare","TOS":"Termini e condizioni","MUST_ACCEPT_TERMS":"Devi accettare le condizioni","PASSWORDS_NOMATCH":"La password non corrisponde","SIGN_UP":"Registrati","SIGN_UP_EMAIL":"Registrati con l’email","CLICK_TO_SIGN_UP":"Clicca qui per registrarti.","LOG_IN":"Entra","LOG_OUT":"Esci","EXIT_FULLSCREEN":"Esci dalla modalità fullscreen","ENTER_FULLSCREEN":"Entra in modalità fullscreen","PLAY_URL_MAGNET_LINK":"Riproduci URL/Magnet link","HELP_FEEDBACK":"Aiuto & Feedback","TERMS_OF_SERVICE":"Termini di Servizio","PRIVACY_POLICY":"Politica sulla riservatezza","ABOUT_STREMIO":"Info su Stremio","USER_PANEL":"Pannello utente","LOGIN_LABEL":"Accesso","GUEST_LOGIN":"Entra come ospite","GUEST_LOGIN_NOTICE":"Entrare come ospite non è consigliato. Entrando con un account regolare permetti a Stremio di sincronizzare la tua libreria, ricevere notifiche per le tue serie/canali preferiti. Sei sicuro di voler procedere?","GUEST_LOGIN_NOTICE_2":"Entrare come ospite non è consigliato - non avrai le notifiche di sincronizzazione dela Libreria e dela Bacheca, che sono funzioni vitali di Stremio. Sei sicuro di voler procedere?","CLICK_HERE":"clicca qui","WRONG_PASSWORD":"Email o password errata. Nel caso tu abbia dimenticato la password, ","SET_A_PASS":"imposta una password","RESET_PASSWORD":"Resetta password","FORGOT_PASSWORD":"Password dimenticata?","EMAIL_USED_WITH_FB":"Questa email è stata utilizzata con l\'accesso Facebook.","INVALID_EMAIL":"Per favore usa un indirizzo email valido","INVALID_PASSWORD":"Per favore inserisci una password valida","CONN_ERR":"Errore di connessione - riprova più darti per favore.\\n\\nSe persiste, disabilita il firewall/software anti-virus (sopratutto Bitdefender).","IMPORT_FROM_GUEST":"Importa la Libreria dal tuo account ospite","RECEIVE_UPDATES_EMAIL":"Ricevi novità di Stremio sulla tua email","LOGIN_FAILED":"Autenticazione fallita.","SIGNUP_FAILED":"Registrazione fallita.","SEARCH_FAILED":"Ricerca fallita","EMAIL_USED":"Questa email è già in uso.","WAITING_FB_LOGIN":"Accesso con Facebook…","EXTERNAL_PLAYER_TITLE":"Riproduci in un player esterno","EXTERNAL_REMEMBER_PLAYER":"Vuoi ricordare la tua scelta?","EXTERNAL_ALWAYS_PLAY":"Sì","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Miglior adattamento","FIT_SCREEN":"Adatta allo schermo","FILL":"Riempi","16:9":"16:9","4:3":"4:3","Original":"Originale","INTRO_TASTE":"Facci sapere cosa ti piace","INTRO_TASTE_LONG":"Facci sapere cosa ti piace vedere","INTRO_TASTE_PICK":"Seleziona {{interestsRemaining}} interessi","INTRO_TASTE_PICK_MORE":"Seleziona {{interestsRemaining}} più interessi","INTRO_TASTE_HELP_US":"Aiutaci a conoscerti.","INTRO_TASTE_CHOOSE_THESE":"Scegli alcuni di questi:","INTRO_TASTE_CHOOSE_MIN":"Scegli almeno 3 categorie","INTRO_TASTE_CHOOSE_MIN_ERR":"Devi scegliere almeno 3 categorie!","INTRO_TASTE_LIFESTYLE":"Stile di vita","INTRO_TASTE_SPORTS":"Sport","INTRO_TASTE_FOOD_HEALTH":"Cibo & Salute","INTRO_TASTE_BEAUTY_FASHION":"Bellezza & Moda","INTRO_TASTE_NEWS":"Notizie","INTRO_TASTE_GAMING":"Videogiochi","INTRO_TASTE_SCIENCE_EDU":"Scienze & Educazione","INTRO_TASTE_MUSIC":"Musica","INTRO_TASTE_TRAVEL":"Viaggi","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Commedia","INTRO_TASTE_DIY":"Fai-da-te","INTRO_TASTE_TECH":"Tecnologia","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"L’addon selezionato non è supportato su questa piattaforma.","ADDON_DISCLAIMER":"Usare addon di terze parti sarà sempre soggetto alla tua responsabilità e alle leggi vigenti nella giurisdizione in cui ti trovi.","ADDON_ACTIVATE":"Attivare questo addon?","ADDON_REPO_ADD":"URL della collezione dell’addon","ADDON_ADD":"Aggiungi","ADD_ADDON":"Aggiungi addon","ADD_ADDON_DESCRIPTION":"Puoi aggiungere un addon da link esterni, così che apparirà sotto Addon installati.","PASTE_ADDON_URL":"Incolla l\'URL dell\'addon","WHATS_NEW":"Cosa c’è di nuovo","BUTTON_CONTINUE":"Continua","BUTTON_ACTIVATE":"Attiva","BUTTON_ACTIVATED":"Attivato","BUTTON_CANCEL":"Annulla","BUTTON_SUBMIT":"Invia","BUTTON_DISMISS_ALL":"Rimuovi tutto","BUTTON_VIEW_ALL":"vedi tutti","BUTTON_SEE_ALL":"Vedi tutto","BUTTON_COLOR_TRANSPARENT":"Trasparente","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"La tua libreria sembra vuota. Scopri quanto è utile :) ","HOW_START":"Puoi cominciare così:","LIB_EMPTY_CAL":"Il tuo calendario mostra le serie nella tua Libreria.","HOW_START_CAL":"Puoi aggiungere delle serie così:","LIB_EMPTY_BOARD":"Bacheca mostra le notifiche e i consigli in merito alla tua Libreria.","HOW_START_BOARD_WAIT":"Per favore, aggiungi alcune serie o canali alla tua Libreria e dacci qualche minuto per elaborare il tutto :)","HOW_START_BOARD":"Puoi aggiungere serie e film così:","IMPORT_FB":"Importa quello che ti piace da <span>Facebook</span>","IMPORT_TRAKT":"Importa la tua libreria dei media da <span>Trakt</span>","IMPORT_DISCOVER":"Trova roba interessante su <span>Scopri</span>","IMPORT_DISK":"Importa film o spettacoli che hai sul tuo <span>disco locale</span>","PLEASE_CREATE_ACC":"Per favore <u>crea un account</u> per abilitare la sincronizzazione della Libreria & Bacheca.","IMPORT_DISCOVER_SIGNUP":"Registrati e scopri cose interessanti da <span>Scopri</span>","IMPORT_DISK_SIGNUP":"Registrati e importa film o spettacoli che hai sul tuo <span>disco locale</span>","LIB_EMPTY_CLOUD":"Libreria cloud","LIB_EMPTY_CLOUD_DESC":"Libreria cloud personale sincronizzata su tutti i dispositivi","LIB_EMPTY_EARLY":"Primi arrivati","LIB_EMPTY_EARLY_DESC":"Ricevi notifiche per i nuovi episodi","LIB_EMPTY_PERSONAL":"Personale","LIB_EMPTY_PERSONAL_DESC":"Ottieni suggerimenti personalizzati","LIB_EMPTY_CALENDAR_DESC":"Organizza il tuo calendario personale","LIB_EMPTY_ALL":"Registrati per ottenere tutto questo:","LIB_EMPTY_BEST":"Registrati per ottenere il meglio di Stremio","LIB_EMPTY_OTHER":"Registrati per abilitare il Calendario & le altre fantastiche funzionalità","CALENDAR_ADDED":"Il calendario di Stremio è stato aggiunto al tuo calendario desktop di default.","CALENDAR_ADDED_MSG":"Se non funziona, per favore aggiungi manualmente questo URL alla tua applicazione calendario","TRAKT_EXPIRED":"Autenticazione a Trakt scaduta, per favore vai su Impostazioni per autenticarti di nuovo","TRAKT_REQUIRES_LOGIN":"Errore di Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Devi fare login","SETTINGS_LABEL":"Impostazioni","SETTINGS_NAV_GENERAL":"Generale","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Scorciatoie","SETTINGS_SHORTCUT_RELOAD_APP":"Ricarica App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Apri le Impostazioni","SETTINGS_SHORTCUT_SWITCH_TABS":"Mostra le schede","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Scorri le schede in avanti","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Scorri le schede all\'indietro","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Naviga tra i menu","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Vai a Cerca","SETTINGS_SHORTCUT_EXIT_BACK":"Esci / Torna indietro","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Attiva/disattiva il menu della velocità di riproduzione","SETTINGS_SHORTCUT_MENU_VIDEOS":"Attiva/disattiva il menu dei video","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Attiva/disattiva il menu dei sottotitoli","SETTINGS_SHORTCUT_MENU_INFO":"Attiva/disattiva il menu delle informazioni","SETTINGS_SHORTCUT_FULLSCREEN":"Attiva/disattiva Schermo Intero","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Mostra Controlli","SETTINGS_SHORTCUT_PLAY_PAUSE":"Riproduci / Pausa","SETTINGS_SHORTCUT_VOLUME_UP":"Alza Volume","SETTINGS_SHORTCUT_VOLUME_DOWN":"Abbassa Volume","SETTINGS_SHORTCUT_SEEK_NEXT":"Vai a Prossimo","SETTINGS_SHORTCUT_SEEK_PREV":"Vai a Precedente","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Scorri Indietro","SETTINGS_SHORTCUT_SEEK_FORWARD":"Scorri Avanti","SETTINGS_SHORTCUT_PLAY_NEXT":"Riproduci Prossimo","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Aumenta Dimensione Sottotitoli","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Riduci Dimensione Sottotitoli","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Aumenta Ritardo Sottotitoli","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Riduci Ritardo Sottotitoli","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Attiva/disattiva barra laterale","SETTINGS_SHORTCUT_OR":"o","SETTINGS_SHORTCUT_TO":"a","SETTINGS_SHORTCUT_SPACE":"Spazio","SETTINGS_SHORTCUT_SHIFT":"Maiusc","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Autenticati","SETTINGS_FACEBOOK_IMPORT":"Importa","SETTINGS_CALENDAR_SUBSCRIBE":"Iscriviti","SETTINGS_INTERFACE_LANGUAGE":"Lingua interfaccia","SETTINGS_LAUNCH_STARTUP":"Lancia all\'avvio","SETTINGS_VLC_DEFAULT":"Riproduci con VLC","SETTINGS_UI_LANGUAGE":"Lingua Interfaccia","SETTINGS_FULLSCREEN_EXIT":"Tasto Esc esce da schermo intero","SETTINGS_GAMEPAD":"Abilita supporto controller","SETTINGS_CLOSE_WINDOW":"Chiudi app quando la finestra è chiusa","SETTINGS_SUBTITLES_LANGUAGE":"Lingua Sottotitoli Predefinita ","SETTINGS_SUBTITLES_SIZE":"Dimensione Sottotitoli Predefinita ","SETTINGS_SUBTITLES_BACKGROUND":"Sfondo sottotitoli","SETTINGS_SUBTITLES_COLOR":"Colore sottotitoli","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Colore contorno sottotitoli","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Colore sfondo sottotitoli","SETTINGS_SEEK_KEY":"I tasti freccia scorrono il tempo","SETTINGS_SEEK_KEY_SHIFT":"I tasti freccia scorrono il tempo quando il tasto Maiusc è premuto","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Durata del riavvolgimento e dell\'avanzamento rapido","SETTINGS_BINGE":"Riproduci automaticamente il prossimo episodio","SETTINGS_NEXT_VIDEO":"Mostra notifica per far partire il prossimo episodio","SETTINGS_NEXT_VIDEO_TRIGGER":"Mostra notifica prossimo episodio per:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Durata del popup Prossimo video","SETTINGS_PLAY_IN_BACKGROUND":"Riproduci in sottofondo","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Riproduci su un player esterno","SETTINGS_RESIZE":"Ridimensiona automaticamente la finestra prima di riprodurre","SETTINGS_OVERRIDE_SERVER":"Sovrascrivi l\'URL del server di streaming (avvanzato)","SETTINGS_SERVER_URL":"URL server di streaming: ","SETTINGS_SERVER_AVAILABLE":"Server di streaming disponibile.","SETTINGS_SERVER_UNAVAILABLE":"Server di streaming non disponibile.","SETTINGS_SERVER_STATUS_ONLINE":"In linea","SETTINGS_SERVER_STATUS_ERROR":"Errore","SETTINGS_SERVER_CONFIGURE_TITLE":"Configura l\'url del server di riproduzione","SETTINGS_SERVER_CONFIGURE_INPUT":"Inserisci l\'url del server di riproduzione","SETTINGS_SERVER_CACHE_SIZE":"Dimensione Cache","SETTINGS_SERVER_TORRENT_PROFILE":"Profilo Torrent","SETTINGS_HTTPS_ENDPOINT":"Endpoint HTTPS di riproduzione: ","SETTINGS_USE_BETA":"Usa sempre l\'ultima Beta","SETTINGS_IMPORT_FB":"Importa da Facebook","SETTINGS_IMPORT_DISK":"Importa dal disco locale","SETTINGS_IMPORT_TRAKT":"Importa da Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Decodifica con accelerazione hardware","SETTINGS_BACKGROUND":"Riproduzione in sottofondo","SETTINGS_SUBSCRIBE_CALENDAR":"Iscriviti nel calendario","SETTINGS_REQ_EXPORT":"Richiedi estrazione dei dati","SETTINGS_ACC_DELETE":"Richiedi cancellazione account","SETTINGS_CHANGE_PASSWORD":"Cambia password","SETTINGS_TOS":"Termini di servizio","SETTINGS_SUPPORT":"Contatta il supporto","SETTING_LANGUAGE":"Lingua","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Esci da Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scannerizza il codice QR per aprire in remoto","SETTINGS_DESKTOP_NOTIFICATIONS":"Notifiche desktop","SETTINGS_DATA_SAVER":"Risparmio dati","SETTINGS_LANGUAGE_INTERFACE":"interfaccia","SETTINGS_LANGUAGE_SUBS":"sottotitoli predefiniti","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoseleziona Traccia Audio","SETTINGS_DEFAULT_AUDIO_TRACK":"Traccia Audio Predefinita","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"versione","SETTINGS_MPV_WINDOW":"Avvia il player in una finestra separata (avvanzato)","SETTINGS_PLAY_IN_EXTERNAL":"Apri sempre il video nel player esterno","SETTINGS_STORAGE_BUTTON":"Pulisci Memoria Locale","SETTINGS_STORAGE_MODAL_TITLE":"Sei sicuro ?","SETTINGS_STORAGE_MODAL_MESSAGE":"Questo pulirà la memoria locale e ti farà uscire dall\'account.","SETTINGS_HWDEC_PICKER":"Scegli impostazioni di decodifica con accelerazione hardware","SETTINGS_HW_AUTOMATIC":"Automatica","SETTINGS_HW_DISABLED":"Disabilitata","SETTINGS_HW_ACCELERATED":"Accelerazione di decodifica","SETTINGS_HW_FULL":"Accelerazione totale","SETTINGS_HW_LEGACY":"Eredità","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addon Sottotitoli","SUBSPICKER_BLACK_BACKGROUND":"Usa colore di sfondo nero","SUBSPICKER_VERTICAL_OFFSET":"Offset Verticale","SUBSPICKER_SIZE":"Dimensione","SUBSPICKER_DELAY":"Ritardo","SUBSPICKER_EMBEDDED_SUBS":"Sottotitoli Integrati","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Segnalazione arresti","MOBILE_ZOOM_TO_FILL":"Fai Zoom per Riempire lo Schermo","MOBILE_PASSTHROUGH":"Uscita audio digitale (passante)","MOBILE_RUN_LOW_BATTERY":"Esegui a batteria scarica","MOBILE_RUN_FOREGROUND":"Esegui come servizio in primo piano","MOBILE_PERFORMANCE":"PRESTAZIONI & STABILITÀ","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"Il codice QR scade tra ","MOBILE_LOG_INTO":"Accedi al tuo account Stremio ","MOBILE_SCAN_QR":"Scansiona il codice QR sopra o vai a ","MOBILE_LINK_ACCOUNT":"Collega Account","MOBILE_SPEEDPICKER_CANCEL":"Cancella","MOBILE_SPEEDPICKER_LABEL":"Seleziona Velocità di Riproduzione","MOBILE_EMPTY_LIBRARY":"La tua Libreria è vuota","MOBILE_NO_ADDON_ACTIVE":"Nessun addon Stremio attivo per questo tipo.","MOBILE_ORGANIZER_WARNING":"L\'app Stremio Organizer offre funzionalità limitate. Per un elenco di stream disponibili e per un\'esperienza Stremio completa, utilizza Stremio sul desktop.","MOBILE_ADDON_LOADING":"sta ancora caricando","MOBILE_ADDONS_LOADING":"gli addons stanno ancora caricando","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configura il tuo addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configura Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"L\'app Stremio Organizer fornisce una selezione limitata di addon. Per un\'esperienza Stremio completa, usa Stremio sul desktop.","MOBILE_DISCONNECT":"Disconnetti","MOBILE_LOOKING_FOR_DEVICES":"Ricerca dispositivi...","MOBILE_CAST_TO":"Trasmetti a","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"Acceso","NAVIGATION_OFF":"Spento","MARKETING_AGREE":"Accetto di ricevere comunicazioni di marketing da Stremio","QUIT":"Chiudi","CONNECTED":"Connesso","AUTHENTICATE":"Autentica","CACHING":"Salvataggio cache","SETTINGS_CACHING_DRIVE":"Disco di cache","ENABLE_LOCAL_FILES_ADDON":"Abilita l\'addon dei file locali (richiede il riavvio)","LOCAL_ADDON_NOT_ENABLED":"L\'addon locale non è abilitato. Clicca qui per andare alle impostazioni e abilitarlo","ENABLE_REMOTE_HTTPS_CONN":"Abilita connessioni HTTPS remote","TORRENT_PROFILE":"Profilo Torrent","DATA_CACHING":"Salvataggio Dati Cache","MAGNET_PARSING":"Analisi del magnet link","January":"Gennaio","February":"Febbraio","March":"Marzo","April":"Aprile","May":"Maggio","June":"Giugno","July":"Luglio","August":"Agosto","September":"Settembre","October":"Ottobre","November":"Novembre","December":"Dicembre","Monday":"Lunedì","Tuesday":"Martedì","Wednesday":"Mercoledì","Thursday":"Giovedì","Friday":"Venerdì","Saturday":"Sabato","Sunday":"Domenica","Action":"Azione","Comedy":"Commedia","War":"Guerra","Family":"Famiglia","Animation":"Animazione","Adventure":"Avventura","Fantasy":"Fantasia","Crime":"Crimine","Mystery":"Mistero","Romance":"Romantico","Drama":"Dramma","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Fantascienza","Music":"Musica","Biography":"Biografia","Documentary":"Documentario","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"Notizie","History":"Storia","Game-Show":"Gioco a Premi","Reality-TV":"Reality-TV","Talk-Show":"Talk Show","Film & Entertainment":"Film & Spettacolo","Gaming":"Giochi","From TV":"Dalla TV","Lifestyle":"Stile di vita","Science & Education":"Scienza & Educazione","Cooking & Health":"Cucina & Salute","Beauty & Fashion":"Bellezza & Moda","Sports":"Sport","News & Politics":"Notizie & Politica","How-to & DIY":"Fai-da-te","Tech":"Tecnologia","Automotive":"Automobilismo","Causes & Non-Profits":"Cause Umanitarie & Non-Profit","Movies":"Film","Uk Live Tv":"UK Live Tv","Fashion":"Moda","Business News Radio":"Radio Notizie Business","Business Tv":"Business Tv","Cars & Auto":"Auto & Motori","Comedy Radio":"Comicità Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"Notizie Tv","Food And Wine":"Cibo & Vino","Latino Tv":"Tv Latina","Shopping Tv":"Shopping Tv","Religion":"Religione","Kids":"Bambini","Body & Soul":"Corpo & Anima","Education":"Educativo","Indian Tv":"Tv Indiana","Extreme Sports":"Sport Estremi","Middle Eastern Tv":"Medio Oriente Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Scienza Tv","Bikini babe":"Bikini babe","Outdoors":"Aria Aperta","German Tv":"Tv Tedesca","French Tv":"Tv Francese","Italian Tv":"Tv Italiana","Gamer Tv":"Gamer Tv","Travel":"Viaggi","Asian Tv":"Tv Asiatica","Entertainment":"Spettacolo","News Radio":"Notizie Radio","Music Radio":"Musica Radio","Language Learning":"Imparare le Lingue","Science Radio":"Scienza Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Scienza & Tecnologia Vod","new video":"nuovo video","new episode":"nuovo episodio","new movie":"nuovo film","recommended":"consigliato","we recommend":"noi raccomandiamo","offer of the day":"offerta del giorno","news":"novità","music video":"video musicale","CTX_SHOW_HOTKEYS":"Mostra tasti di scelta rapida","CTX_DISMISS_NOTIF":"Chiudi notifica","CTX_DISMISS_ALL":"Chiudi tutto","CTX_SHARE":"Condividi","CTX_COPY_SHARE_LINK":"Copia link di condivisione","CTX_COPY_MAGNET_LINK":"Copia il magnet link","CTX_COPY_STREAM_LINK":"Copia il link dello stream","CTX_DOWNLOAD_VIDEO":"Scaricare questo video","CTX_DOWNLOAD_SUBS":"Scarica i sottotitoli","CTX_VIEW_ON_YOUTUBE":"Visualizza su YouTube","CTX_SHOW":"Mostra","CTX_PLAY":"Riproduci","CTX_PLAY_IN":"Riproduci in","CTX_PLAY_ON":"Riproduci su","CTX_WATCH_ON":"Guarda su","CTX_WATCH":"Guarda","CTX_WATCHED":"Visto","CTX_WATCH_BEGINNING":"Guarda dall\'inizio","CTX_WATCH_MOBILE":"Guarda su un dispositivo mobile","CTX_REWIND":"Riprendi dall\'inizio","CTX_MARK_WATCHED":"Segna come già visto","CTX_MARK_NON_WATCHED":"Segna come non visto","CTX_MARK_UNWATCHED":"Contrassegna come non guardato","CTX_MARK_REST":"Contrassegna i restanti come guardati","CTX_UNMARK_REST":"Contrassegna i restanti come non guardati","CTX_RECEIVE_NEW_NOTIF":"Ricevi nuove notifiche","CTX_REMOVE_CACHE":"Rimuovi dalla cache","CTX_REMOVE_CACHE_EP":"Rimuovi episodio dalla cache","CTX_OPEN_CONTAINING":"Apri cartella","CTX_REMOVE":"Rimuovi dalla libreria","CTX_AVAILABLE_OFFLINE":"Disponibile Offline","CTX_PAUSED":"In Pausa","CTX_ALWAYS_ON_TOP":"Sempre in cima","CTX_FULLSCREEN":"Schermo intero","CTX_WRONG_SUBS":"Sottotitolo sbagliato?","CTX_REPORT_ISSUES":"Segnala problema","CTX_COPY":"Copia","CTX_PASTE":"Incolla","CTX_CLEAR":"Cancella","CTX_CLEAR_RECENT_SEARCHES":"Cancella ricerche recenti","HELLO_THERE":"Hey ciao","HOPE_YOU_ENJOY":"Speriamo ti piaccia Stremio e che sia già una delle tue app preferite!","WHO_ARE_WE":"Chi siamo noi? Siamo il team che sta dietro - due ragazzi che hanno lavorato duramente ogni giorno negli ultimi 3 anni, con un unico obiettivo - rendere questo prodotto migliore sempre di più.","SUPPORT_US":"Se ti piace usare Stremio e pensi possa valere qualcosa - supportaci!","SPREAD_THE_WORD":"Condividi ora con i tuoi amici, spargi la voce su Stremio","MORE_PEOPLE":"Più persone usano Stremio, più migliorerà!","SEND_A_LINK":"Oppure invia un link al nostro sito web","TIP_LOCALFILES":"Suggerimento: puoi fare drag & drop dei video file locali in Stremio","ADDON_MY":"Miei Addon","ADDON_COMMUNITY":"Comunità Addon","ADDON_OFFICIAL":"Addon Ufficiali","ADDON_REPOS":"Collezioni Addon","ADDON_SEARCH":"Cerca addon","ADDON_INSTALL":"Installa","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Disinstalla","ADDON_UPGRADE":"Aggiorna","ADDON_INSTALLED":"Installato","ADDON_INSTALLED_MSG":"Addon installato!","ADDON_UPGRADED_MSG":"Addon aggiornato!","ADDON_UNKNOWN":"Sconosciuto","ADDON_ERR":"Errore installazione Addon!","ADDON_DISCONNECTED":"Disconnesso","ADDON_APP_MISSING":"l\'app per questa fonte non è installata. Vuoi installarla ora?","ADDON_APP_INSTALL":"Installa Ora","ADDON_PAGE":"Pagina Addon","ADDON_TOP_CONTENT":"Il meglio di questo Addon","ADDON_PROVIDES":"Questo addon ti fornisce:","ADDON_WATCH":"Guarda #{types} ora!","ADDON_WATCH_FREE":"Guarda #{types} GRATIS ora!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Tipi supportati","ADDON_SUPPORTED_CATALOGS":"Cataloghi supportati","ADDON_PROVIDES_DISCOVER":"Di più #{types} in Scopri","ADDON_PROVIDES_STREAMS":"Guarda #{types}","ADDON_PROVIDES_STREAMS_FREE":"Guarda #{types} GRATIS","ADDON_PROVIDES_SUBTITLES":"Sottotitoli per #{types}","ADDON_CANTDETECT":"Non siamo riusciti ad individuare alcun Stremio in esecuzione, perciò non siamo stati in grado di scoprire quali addon sono installati.","ERR_NO_META":"Nessun informazione trovata riguardo a questo","ERR_GETTING_META":"Errore nel recupero informazioni riguardo a questo.","ERR_CANT_PARSE_MAGNET":"Impossibile analizzare magnet","ERR_NO_MAGNET_INFOHASH":"Informazioni hash non valide per il magnet","ERR_NO_FILE_PATH":"Impossibile inviare richiesta senza percorso al file","ERR_NO_TORRENT":"Nessun torrent ritornato","ERR_NO_SUPPORTERD_FILES":"Nessun file supportato trovato","ERR_OPENING_FILES":"Impossibile aprire file esterni","ERR_INVALID_LINK":"Link non valido","ERR_REGISTERED_ONLY":"Questa funzione è disponibile solo per utenti registrati.","ERR_CLIPBOARD":"Impossibile riprodurre dagli appunti","ERR_CLIPBOARD_READ":"Impossibile leggere gli appunti su questa piattaforma","ERR_CLIPBOARD_GENERIC":"Nessun URL riproducibile trovato negli appunti. Copia un URL (es. un magnet link) in un video.","BOARD_CONTINUE_WATCHING":"Continua a guardare","BOARD_EXPLANATION_RECOMMENDATIONS":"Film scelti solo per te.<br />Questo film è un esempio di suggerimento.","BOARD_EXPLANATION_EPISODES":"I nuovi episodi delle tue serie tv preferite arrivano qui.<br />Aggiungi serie tv che segui alla tua Libreria.","BOARD_EXPLANATION_VIDEOS":"I nuovi episodi dei tuo canali YouTube arrivano qui.<br />Aggiungi canali che segui alla tua Libreria.","WEBSITE_SLOGAN_WATCH":"Guarda Subito","WEBSITE_SLOGAN_ALL":"Tutti i Contenuti Video Che Ami in un Unico Posto","WEBSITE_SLOGAN_NEW":"Tutto Quello Che Puoi Vedere","WEBSITE_SLOGAN_NEW_NEW":"Libertà di Streaming","WEBSITE_WATCH_FROM":"Guarda Da","WEBSITE_DOWNLOAD":"Scarica Ora","WEBSITE_DOWNLOAD_FOR":"Scarica Ora per","WEBSITE_IS_DESKTOP":"Stremio è un\'applicazione desktop, apri questa pagina sul tuo PC e scaricala","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Caratteristiche","WEBSITE_PAGE_ADDONS":"Addon","WEBSITE_PAGE_TECH":"Tecnologia","WEBSITE_PAGE_CREATE_ADDON":"Crea Addon","WEBSITE_PAGE_CONTACTS":"Contatti","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Film","WEBSITE_TYPE_series_PL":"Serie","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Canali","WEBSITE_STREMIO_WHAT_IS":"Stremio è un\'applicazione che ti aiuta ad organizzare e instantaneamente ti permette di guardare i tuoi video, film, serie TV e canali TV preferiti.","WEBSITE_FEATURES_WATCH":"Guarda subito in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Clicca e guarda i tuoi film, serie TV, video e canali TV preferiti.","WEBSITE_FEATURES_SUBS":"Sottotitoli Automatici","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio sceglie automaticamente i sottotitoli sincronizzati per la tua lingua.","WEBSITE_FEATURES_SUBS_LABEL":"Spetta a te la mossa, capitano.","WEBSITE_FEATURES_CAST":"Riproduci sulla TV & dispositivi mobili","WEBSITE_FEATURES_CAST_DETAIL":"Trasmetti su AppleTV, Chromecast, Smart TV (DLNA/UPnP) e dispositivi mobili.","WEBSITE_LIB":"Goditi La Tua Libreria Personale Sincronizzata Su Tutti I Tuoi Dispositivi","WEBSITE_LIB_COLLECT":"Raccogli da Stremio","WEBSITE_LIB_IMPORT":"Importa da Facebook","WEBSITE_LIB_LOCAL":"Aggiungi dal tuo disco locale","WEBSITE_BOARD":"La Bacheca - Il Tuo Unico Posto per le Notifiche e i Suggerimenti","WEBSITE_BOARD_RECOMMEND":"Serie TV Suggerite","WEBSITE_BOARD_TRENDING":"Film del Momento","WEBSITE_BOARD_NEW":"Nuovi Video","WEBSITE_BOARD_EPISODE":"Nuovi Episodi","WEBSITE_BOARD_1":"Cerchi qualcosa di interessante da guardare? Ricevi suggerimenti basati sulle tue preferenze!","WEBSITE_BOARD_2":"Ricevi una notifica quando c\'è un nuovo episodio della tua serie TV preferita o canale YouTube!","WEBSITE_BOARD_YOUTUBE":"Nuovi video dai canali YouTube","WEBSITE_BOARD_EPISODES":"Nuovi episodi dalle serie che stai seguendo","WEBSITE_ADDONS":"Contenuti Addon","WEBSITE_TECH_DETAIL":"Amiamo la tecnologia, amiamo la scienza pazza!\\nStremio usa le seguenti tecnologie open source:","WEBSITE_TECH_WCJS":"WebChimera.js permette a Stremio di riprodurre ogni formato video con ottime prestazioni.","WEBSITE_TECH_WCJS_EXTRA":"Siamo i contributori del progetto principale","WEBSITE_TECH_ELECTRON":"Electron fornisce una piattaforma innovativa con la quale sviluppare Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Siamo contributori del progetto","WEBSITE_TECH_LINVODB":"Un database che assicura che i tuoi dati siano organizzati e disponibili da ovunque accedi.","WEBSITE_TECH_LINVODB_EXTRA":"Tecnologia sviluppata in casa","WEBSITE_CREATE_ADDON":"Crea il tuo Addon","WEBSITE_CREATE_ADDON_DETAIL":"Hai un servizio che fornisce contenuti video? Ti aiuteremo a sfruttare le caratteristiche di Stremio creando il tuo Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Vantaggi nello sviluppare un Addon per Stremio","WEBSITE_P2P_BEAUTY":"La Bellezza dello Streming Peer-to-Peer","WEBSITE_P2P_1":"Video full HD / 4K on demand o dirette streaming Affidabili e Sostenibili","WEBSITE_P2P_2":"Piattaforma di distribuzione che offre una fantastica esperienza utente","WEBSITE_P2P_3":"Svilupperemo il tuo addon che va in contro alle tue esatte necessità","WEBSITE_P2P_CONTACT":"Interessato? Sei il benvenuto <a href=\'mailto:office@stremio.com\'>contattaci</a>.","WEBSITE_P2P_CONTACT_EXTRA":"Saremo felici di aiutarti ad integrare i tuoi contenuti con Stremio!","WEBSITE_P2P":"Una volta ogni tanto, arriva una tecnologia che cambia le regole del gioco. Abbiamo investito moltissimo tempo e impegno per costruire il nostro motore di streaming video Peer-to-Peer (P2P) che offre ottime prestazioni e versatilità nel addattarsi ad ogni caso d\'uso.\\nContattaci per i video con supporto DRM P2P on demand o dirette streaming.","WEBSITE_THOUGHTS":"I pensieri che condividiamo:","WEBSITE_SPREAD":"Passa parola riguardo a Stremio:","WEBSITE_CONTACT":"Contattaci, saremo felici di ascoltarti!","WEBSITE_OPENSOURCE":"Per i nostri progetti open source , vai al nostro","WEBSITE_BITCOIN":"Dona bitcoin:","WEBSITE_FAQ":"Domande Frequenti","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Domande","WEBSITE_TOS":"Condizioni d\'uso","WEBSITE_LEGAL":"Legale","WEBSITE_PAGE_ABOUT":"Riguardo","WEBSITE_PAGE_BECOME_PARTNER":"Diventa un partner","WEBSITE_ALL_YOU_CAN_WATCH":"Libertà di Guardare\\nTutto Quello che Vuoi.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Cos\'è Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio è un unico centro di raccolta per i contenuti video. Scopri, organizza e guarda video da qualsiasi fonte su ogni tuo dispositivo.","WEBSITE_WHAT_IS_STREMIO_P2":"Film, programmi TV, serie, dirette TV o canali web come YouTube e Twitch.tv: puoi trovare tutto questo su Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio è un media center moderno che rappresenta una soluzione completa per il tuo intrattenimento video. Scopri, guarda e organizza contenuti video con addon facili da installare.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Film, programmi TV, dirette TV o canali web - trovi tutto su Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Divertiti su tutti i tuoi dispositivi multimediali","WEBSITE_DEVICES_COLLECT":"Prendi da Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importa da facebook","WEBSITE_DEVICES_LOCAL":"Aggiungi dal disco locale","WEBSITE_JOIN_THE_PARTY_NOW":"Unisciti alla festa ora","WEBSITE_DEVICES_ALL":"Facile da utilizzare su tutti i tuoi dispositivi;","WEBSITE_EXTENDABLE_CATALOG":"Catalogo video infinitamente espandibile;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Ottime funzionalità per organizzare i tuoi video;","WEBSITE_AS_SEEN_ON":"Come visto su","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Su di Noi","WEBSITE_LINK_TECHNOLOGY":"Tecnologia","WEBSITE_LINK_APPS":"App","WEBSITE_LINK_DOWNLOADS":"Download","WEBSITE_MORE":"Di più","WEBSITE_LINK_ADDONS":"Addon","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribuisci","WEBSITE_LINK_COMMUNITY":"Comunità","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & di più","WEBSITE_LINK_HELP":"Centro assistenza","WEBSITE_LINK_CONTACTS":"Contattaci","WEBSITE_LINK_TOS":"Termini & condizioni","WEBSITE_LINK_PRAVACY":"Politica sulla riservatezza","WEBSITE_SUBSCRIBE":"Iscriviti","WEBSITE_NEWSLETTER":"Unisciti alla nostra newsletter per cose fantastiche","WEBSITE_PLACEHOLDER_EMAIL":"La Tua Email","WEBSITE_COMMUNITY":"Comunità","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legale","WEBSITE_WHY":"Perché lo facciamo","WEBSITE_WHY_P1":"Noi di Stremio, torniamo al lavoro ogni giorno perché vogliamo risolvere un importante problema dell\'industria dei video on-demand. Ci sono così tanti nuovi contenuti pubblicati ogni minuto che è praticamente impossibile orientarsi.","WEBSITE_WHY_P2":"Aiutiamo le persone a navigare nell\'enorme mondo dell\'intrattenimento video e scoprire nuovi contenuti con i quali divertirsi. Le nostre app riuniscono film, serie, dirette TV, canali web e altro ancora. Ci impegniamo a rendere molto facile per gli utenti trovare titoli ed emittenti che amano.","WEBSITE_WHY_P3":"Puoi usare il nostro servizio su qualsiasi dispositivo quando vuoi, rendendo Stremio il tuo unico centro di intrattenimento video di cui avrai mai bisogno.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"Il team di Stremio è piccolo, ma potente: tra i dieci di noi, programmiamo in X linguaggi e condividiamo competenze nello sviluppo di software, progettiamo UI e UX, marketing e pubblicità e business e startup.","WEBSITE_FEATURES":"Caratteristiche","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Scopri nuovi contenuti con facilità","WEBSITE_FEATURES_DISCOVER_P":"Scopri facilmente nuovi film, programmi TV, serie e canali da guardare. Sfoglia per categoria, genere, valutazione, attualità, ecc. oppure digita semplicemente un nome da trovare. Stremio rende la ricerca di nuovi contenuti video un gioco da ragazzi.","WEBSITE_FEATURES_ALL_CONTENT":"Tutti i tuoi contenuti video su un unico schermo","WEBSITE_FEATURES_ALL_CONTENT_P1":"Guarda quali film, serie o video non hai finito e continua a guardarli; ricevi notifiche per nuovi episodi e uscite; e sfoglia i consigli che otterrai in base alle tue abitudini di visualizzazione.","WEBSITE_FEATURES_LIBRARY":"Organizza la tua libreria video","WEBSITE_FEATURES_LIBRARY_P1":"Aggiungi qualsiasi titolo alla tua libreria Stremio con un solo clic e trova la tua strada tra i contenuti, ordinati per tipo, attualità o ordine alfabetico.","WEBSITE_FEATURES_CALENDAR":"Tieni traccia di tutto ciò che guardi","WEBSITE_FEATURES_CALENDAR_P1":"Ottieni una visualizzazione del calendario di tutti i film e le serie che aggiungi alla tua libreria. Esporta il tuo calendario Stremio e sincronizzalo in modo da sapere sempre quando è previsto un nuovo episodio o una prima visione.","WEBSITE_FEATURES_BIG_SCREEN":"Goditi i tuoi contenuti video su uno schermo più grande","WEBSITE_FEATURES_BIG_SCREEN_P1":"Trasmetti tutto ciò che stai guardando su un altro dispositivo, che si tratti di un telefono, tablet o TV con un solo clic.","WEBSITE_FEATURES_SOURCES":"Guarda video da fonti diverse","WEBSITE_FEATURES_SOURCES_P":"Installa addon ufficiali e della community per goderti video provenienti da provider diversi, il tutto in un\'unica app elegante e facile da usare.","WEBSITE_CREATE_AN_ADDON":"Crea un addon","WEBSITE_FEATURES_SYNC":"Sincronizza la tua libreria su diversi dispositivi e riprendi la tua riproduzione","WEBSITE_FEATURES_SYNC_P1":"Accedi con il tuo account su tutti i tuoi dispositivi e goditi la tua libreria, addon, riproduzioni e calendario sincronizzati.","WEBSITE_FEATURES_EXTENDABLE":"Estendi il catalogo video con gli addon","WEBSITE_FEATURES_EXTENDABLE_P1":"Il catalogo di addon di Stremio offre diversi addon da installare permettendoti di guardare una varietà di nuovi video. Include film, spettacoli, dirette TV, sport, notiziari, podcasts, canali web, videogiochi e molto altro.","WEBSITE_FEATURES_AUTO_SUBS":"Sottotitoli automatici","WEBSITE_FEATURES_AUTO_SUBS_P1":"Con i nostri addon dei sottotitoli hai automaticamente l\'opzione selezionata per la tua lingua preferita.","WEBSITE_FEATURES_CHROMECAST":"Trasmettendo verso Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Goditi i tuoi contenuti video su uno schermo più grande o semplicemente trasmetti quello che guardi su un dispositivo diverso.","WEBSITE_FEATURES_KEEP_TRACK":"Tieni traccia dei tuoi spettacoli TV e Canali Web preferiti","WEBSITE_FEATURES_KEEP_TRACK_P1":"Ottieni una visualizzazione a calendario e notifiche per i nuovi episodi delle tue serie e canali web preferiti.","WEBSITE_FEATURES_POWER_USER":"Funzionalità per utenti avanzati","WEBSITE_FEATURES_POWER_USER_P1":"Riproduci in un player esterno","WEBSITE_FEATURES_POWER_USER_P2":"Riproduci da un file torrent o link magnet","WEBSITE_FEATURES_POWER_USER_P3":"Importa nella tua libreria dagli interessi Facebook o dal disco locale","WEBSITE_ADD_ONS":"Addon","WEBSITE_ADD_ONS_P1":"Tutti i contenuti video di Stremio sono recuperati ad un sistema di addon - nessun contenuto o fornitore di contenuti è stato integrato nell\'app.","WEBSITE_ADD_ONS_P2":"Ci sono due gruppi di addon disponibili: quelli ufficiali o della comunità.","WEBSITE_ADD_ONS_P3":"Quelli ufficiali sono sviluppati e offerti da Stremio, mentre quelli della comunità sono creati dai membri della nostra community, che li offrono anche.","WEBSITE_ADDONS_OFFICIAL":"Addon ufficiali","WEBSITE_ADDONS_WATCHUB":"Guarda i tuoi film, serie e spettacoli preferiti da fornitori come iTunes, Hulu, Amazon e altri servizi.","WEBSITE_ADDONS_YOUTUBE":"Guarda i tuoi canali YouTube preferiti senza pubblicità e ricevi notifiche per le novità dei creators che segui.","WEBSITE_ADDONS_FILMON":"Guarda dirette TV, film e TV gratuitamente. 600 canali TV, 45,000 film gratis, documentari e tanto altro.","WEBSITE_ADDONS_OPENSUBTITLES":"Sottotitoli di film e TV in più lingue, migliaia di sottotitoli tradotti caricati ogni giorno.","WEBSITE_ADDONS_COMMUNITY":"Addon della comunità","WEBSITE_ADDONS_FILMON_VOD":"Guarda film quando vuoi da Filmon.tv","WEBSITE_ADDONS_TWICH":"Guarda dirette da Twitch.tv - una piattaforma di video streaming platform per il settore degli e-sports.","WEBSITE_ADDONS_VODO":"Guarda film indie senza pagare.","WEBSITE_ADDONS_NETFLIX":"Guarda film e serie Netflix.","WEBSITE_ADDONS_CREATE":"Crea un addon","WEBSITE_ADDONS_CREATE_P1":"Se lo desideri, puoi sviluppare il tuo addon. In questo modo, puoi dare a te e alla nostra comunità accesso a nuovi contenuti video, e raggiungere un nuovo pubblico mirato di milioni di utenti in giro per il mondo.","WEBSITE_ADDONS_START_CREATE":"Per iniziare, visita la pagina Stremio Addon SDK:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"Per ottimizzare le performance, ti suggeriamo di usare l\'ultima versione disponibile dell\'applicazione Stremio. Se per qualche motivo, tuttavia, ti dovesse piacere usare una versione più vecchia, puoi scaricarla da qui.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio per Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio per macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio per Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio per Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio per Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio per Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio per Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio per iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribuisci","WEBSITE_CONTRIBUTE_P1":"La piattaforma Stremio è open source e puoi facilmente creare un addon per contenuti al momento non offerti.","WEBSITE_CONTRIBUTE_WHY":"Perchè dovresti creare un addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Raggiungere un nuovo pubblico per i tuoi contenuti video","WEBSITE_CONTRIBUTE_WHY_P2":"La base utenti di Stremio sta crescendo rapidamente - durante il primo anno di lancio, Stremio ha raggiunto 1 milione di utenti in giro per il mondo, e nel secondo anno questo numero è cresciuto a 2.5 milioni.","WEBSITE_CONTRIBUTE_WHY_P3":"Con il tuo addon, puoi facilmente raggiungere questo pubblico e distribuire i tuoi contenuti video a loro.","WEBSITE_CONTRIBUTE_ALL":"Guarda i tuoi film, video, serie e canali preferiti in un unico posto.","WEBSITE_CONTRIBUTE_ALL_P1":"Sei appassionato di un particolare tipo di contenuto non ancora disponibile su Stremio? Creagli un addon e goditi i tuoi video preferiti in uno dei più grandi e facili centro di intrattenimento sul mercato.","WEBSITE_CONTRIBUTE_ALL_P2":"Sopratutto, riceverai l\'infinita gratitudine di altri membri della comunità di Stremio che la pensano allo stesso modo.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetizza il tuo addon e guadagna soldi","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Una volta sviluppato un nuovo addon di Stremio, puoi facilmente monitizzarlo in diversi modi. Se lo stai considerando, sentiti libero di contattarci a ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - saremmo lieti di consultarti e consigliarti sulle opzioni di monetizzazione degli addon.","WEBSITE_CONTRIBUTE_TRANSLATE":"Diventa un traduttore volontario","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Se vuoi goderti Stremio in diverse lingue, puoi unirti alla nostra comunità di traduttori volontari. Ci aiutano ad aggiungere versioni di Stremio in molte lingue diverse.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Sei impaziente di iniziare?","WEBSITE_TRANSALTE_STREMIO":"Traduci Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Comunità ufficiale","WEBSITE_COMMUNITY_OFFICIALS_P1":"Diventa parte della crescita della comunità di Stremio. Seguici sui social media e non vergognarti di salutarci - amiamo ascoltare i nostri fan! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Comunità non-ufficiale","STREMIO_COMMUNITY_NL":"Stremio Olanda","STREMIO_COMMUNITY_BRASIL":"Stremio Brasile","STREMIO_COMMUNITY_GERMANY":"Stremio Germania","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgio","STREMIO_COMMUNITY_FRANCE":"Stremio Francia","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portogallo","STREMIO_COMMUNITY_ITALY":"Stremio Italia","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Messico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Stremio stupendo","WEBSITE_COMMUNITY_PARTNERS":"Partner e sostenitori","WEBSITE_COMMUNITY_GOODIES":"Stremio chicche","WEBSITE_COMMUNITY_WALLPAPERS":"Sfondi","WEBSITE_COMMUNITY_ART":"Comunità Galleria d\'arte","WEBSITE_LINK_ART":"comunità galleria d\'arte","WEBSITE_CONTACT_US":"Contattaci","WEBSITE_CONTACT_US_P1":"Se hai qualsiasi domanda, commento o suggerimento, sentiti libero di metterti in contatto con noi attraverso il modulo di contatto qui sotto.","WEBSITE_CONTACT_US_P2":"Tieni in mente che sia locati in Bulgaria quindi potrebbero esserci ritardi alle tue domande a causa del fuso orario.","WEBSITE_CONTACT_US_SUCCESS":"Il tuo messaggio è stato inviato. Ti risponderemo al più presto.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Per piacere inserisci una email valida!","WEBSITE_CONTACT_US_Q_RELATED_TO":"A cosa è collegata la tua domanda?","WEBSITE_CONTACT_US_Q_OS":"Qual\'è il tuo Sistema Operativo?","WEBSITE_CONTACT_US_PH_EMAIL":"La tua E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Messaggio","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"INVIATO","WEBSITE_CONTACT_US_Q_1":"Come si installa?","WEBSITE_CONTACT_US_Q_2":"Come si disinstalla?","WEBSITE_CONTACT_US_Q_3":"(HTML) Come si fanno le lasagne?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Tecnologia","WEBSITE_TECHNOLOGY_P1":"Amiamo la tecnologia e la scienza folle. </br> Ecco ciò che fa girare Stremio (è tutto open-source).","WEBSITE_TECHNOLOGY_P_QT":"Sviluppo di software multi piattaforma al suo massimo splendore.","WEBSITE_TECHNOLOGY_P_MPV":"Un riproduttore multimediale gratuito, open source, e multi piattaforma.","WEBSITE_TECHNOLOGY_P_RN":"React Native ti permette di costruire applicazioni usando solo JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework è integrato nell\'applicazione per ottenere contenuti multimediali.","WEBSITE_TECHNOLOGY_P_REALM":"Realm è una piattaforma mobile e un sostituto di SQLite e Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js è un ambiente runtime per JavaScript, open-source e multi piattaforma.","WEBSITE_TECHNOLOGY_P_RUST":"Rust è un linguaggio di programmazione multi paradigma incentrato sulla sicurezza, specialmente sulla concorrenza sicura.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribuisci al progetto","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Ci sono due modi in cui puoi contribuire a Stremio e aiutarci a renderlo migliore.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Puoi donare le tue preziose competenze linguistiche traducendo la piattaforma...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"oppure","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... puoi sfruttare le tue capacità di scrittura del codice per creare addon per la comunità. ","WEBSITE_TRANSLATE_STREMIO":"Traduci Stremio","WEBSITE_404_OH_NO":"Uh-oh! La pagina che stavi cercando non si trova qui...","WEBSITE_GO_HOME":"Torna sulla home","WEBSITE_LINK_OTHER_DOWNLOADS":"Altri download","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Supporto","WEBSITE_DOWNLOAD_4_0_BETA":"Scarica Ora Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Ottieni per desktop","WEBSITE_LINK_ADDON_COMPETITION":"Competizione addon","WEBSITE_LINK_ART_CONTEST":"Concorso artistico","WEBSITE_MY_ACCOUNT":"Il mio account","WEBSITE_MAINPAGE_FAQ_001_H1":"Che cos\'è Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio è un moderno centro multimediale che ti offre la libertà di guardare quello che vuoi.","WEBSITE_MAINPAGE_FAQ_002_H1":"Come funziona?","WEBSITE_MAINPAGE_FAQ_002_P1":"Una volta installato Stremio sul tuo dispositivo e creato l\'account, tutto quello che devi fare è visitare il catalogo degli addon e installare quello che vuoi, e hai fatto!","WEBSITE_MAINPAGE_FAQ_002_P2":"Dopo, puoi visitare le sezioni Scopri e Bacheca per iniziare ad esplorare i contenuti.","WEBSITE_MAINPAGE_FAQ_003_H1":"Cosa posso vedere qui?","WEBSITE_MAINPAGE_FAQ_003_P1":"Tantissime cose: Film, spettacoli TV, Canali web, Sport, Canali TV, ascoltare Podcast e altro. Grazie al nostro sistema di addon, hai accesso a una varietà di contenuti.","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio è open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Si, puoi controllare i seguenti link: ${1}applicazione desktop${2} e ${3}organizzazione GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio è sicuro?","WEBSITE_MAINPAGE_FAQ_005_P1":"Si: perchè è un software open-source, il codice sorgente è di pubblica visione e puoi controllarlo personalmente.","WEBSITE_MAINPAGE_FAQ_006_H1":"Per quanto riguarda la mia privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"Rispettiamo la privacy degli utenti e non conserviamo nessun dato personale ad eccezione del minimo indispensabile per creare e sincronizzare il tuo account.","WEBSITE_MAINPAGE_FAQ_006_P2":"C\'è anche un accesso in ${1}Modalità ospite${2}, che non richiedere nessun dato: così, nessuna chiamata sarà fatta alla nostra infrastruttura. Tuttavia, sacrifica alcune funzionalità utili, come la sincronizzazione della tua libreria tra i diversi dispositivi.","WEBSITE_MAINPAGE_FAQ_007_H1":"Posso trasmettere sulla mia TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Si, supportiamo Chromecast e puoi trasmettere sia l\'applicazione desktop sia mobile (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Quanti addon ha Stremio?","WEBSITE_MAINPAGE_FAQ_008_P1":"Alla fine del 2019, più di 50 - per maggiori informazioni, controlla il nostro catalogo degli addon.","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio può essere esteso oltre ciò che è nel catalogo degli addon?","WEBSITE_MAINPAGE_FAQ_009_P1":"Si, potresti controllare questi: ${1}PimpMyStremio${2}, ${3}comunità Reddit${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"Che dispositivi supportano Stremio?","WEBSITE_MAINPAGE_FAQ_010_P1":"Abbiamo un\'applicazione desktop per Windows, Mac e Linux. Per mobile, supportiamo Android e iOS, tuttavia iOS ha funzionalità limitate (non supporta la maggior parte degli addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"Ci sono diversi dispositivi basati su Android che supportano Stremio, come NVIDIA Shield e Amazon Fire Stick, ma non li supportiamo ufficialmente.","WEBSITE_MAINPAGE_FAQ_011_H1":"Potete aggiungere dei contenuti su Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Scusaci, non offriamo noi stessi i contenuti, ma più addon Stremio installi, più contenuti potrai trovare.","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio può riprodurre link magnet?","WEBSITE_MAINPAGE_FAQ_012_P1":"Si, e può riprodurre normali link HTTP e file torrent (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Posso scaricare un video e vederlo offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"La funzionalità offline è una notività in arrivo, ma se permetti a Stremio di salvare sulla cache del tuo dispositivo (dalle impostazioni) puoi guardare i video più tardi senza bisogno di connessione.","WEBSITE_MAINPAGE_FAQ_014_H1":"Non funziona niente, aiutatemi!","WEBSITE_MAINPAGE_FAQ_014_P1":"Sei sicuro di aver installato gli addon? Se si, confrontati con il nostro ${1}centro assistenza${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"In che modo Stremio sostiene le sue operazioni di sviluppo?","WEBSITE_MAINPAGE_FAQ_015_P1":"Pubblichiamo occasionalmente annunci non intrusivi, ma stiamo valutando la possibilità di passare a un modello di donazione.","WEBSITE_MAINPAGE_FAQ_015_P2":"Per altre domande, vai al nostro ${1}centro assistenza${2}.","HELP_LEARN_MORE":"Aiutaci a conoscerti meglio.","LIFESTYLE":"Stile di vita","SPORTS":"Sport","FOOD_HEALTH":"Cibo & salute","BEAUTY_FASHION":"Moda & bellezza","NEWS":"Notizie","GAMING":"Giochi","SCIENCE_EDUCATION":"Scienze & istruzione","MUSIC":"Musica","TRAVEL":"Viaggi","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Commedie","DIY":"Fai-da-te","TECH":"Tecnologia","CINEMA":"Cinema","CONTINUE":"Continua","SLOW_LOADING":"CARICAMENTO LENTO?","I_GIVE_UP":"RINUNCIO","LEARN_MORE":"Per saperne di più","POOR_SOURCE":"Questa fonte è scarsamente disponibile o la tua connessione Internet non è abbastanza veloce","PICK_CATEGORIES_ERR":"Devi scegliere almeno 3 categorie","ADJUST_TIMING":"Regola il tempo con ","ADJUST_SIZE":"Regola le dimensioni con ","SEARCH_ANYTHING":"Puoi cercare qualsiasi cosa...","ALL_CATEGORIES":"Tutte","SEARCH_CATEGORIES":"Film, Serie, YouTube & TV","SEARCH_PERSONS":"Attori, Registi & Scrittori","SEARCH_PROTOCOLS":"Link HTTP & Magnet","SEARCH_TYPES":"Link IMDB / TVDB","WATCHED":"Guardati","SHOW_LESS":"Mostra meno","LAST_SEARCHES":"Ultime ricerche","CLEAR_HISTORY":"Pulisci cronologia","CHOOSE_SOME":"SCEGLI TRA QUESTI:","NO_WEB_REMOTE":"Impossibile caricare Telecomando Web","STREMIO_OFFLINE":"Stremio è offline","STREMIO_EXPENSIVE_CONNECTION":"Abbiamo notato che stai usando i dati mobile per connetterti, vuoi continuare?","USE_DATA":"Usa dati","WARNING":"Attenzione","MORE_INFO":"Più informazioni ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Caricamento ...","STREMIO_TV_BACK_TO_LANGUAGES":"Torna alle lingue","STREMIO_TV_REMOTE":"Telecomando","STREMIO_TV_GO_TO":"Vai a:","STREMIO_TV_OR_SCAN":"o scansiona:","STREMIO_TV_ADDON_INSTRUCTIONS":"Per favore segui le istruzioni per installare i tuoi addon preferiti.","STREMIO_TV_LIVE_TV":"Diretta TV","STREMIO_TV_RESUME_WATCHING":"Riprendi a Guardare","STREMIO_TV_LOADING_BACKGROUND":"Caricamento Sfondo","STREMIO_TV_CHECKING_AUTHENTICATION":"Controllo Autenticazione","STREMIO_TV_LOADING_BOARD":"Caricamente Bacheca","STREMIO_TV_LOGIN_HEADER_LINE_1":"Vogliamo che i nostri utenti abbiano la migliore esperienza personalizzata possibile con il nostro software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"È per questo motivo che ti chiediamo gentilmente di creare e/o accedere al tuo account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Grazie per la comprensione,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Il Team Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Per utilizzare il Telecomando Web con il tuo Smartphone / Tablet / Computer:","STREMIO_TV_WIFI_SETUP":"Configurazione Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle non ha rilevato una connessione Internet.","STREMIO_TV_WIFI_DETAILS_1":"Connetti a:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Usa password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Apri un browser web con il link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Per ultimo visto","STREMIO_TV_LIBRARY_SORT_NAME":"Per nome","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Per minuti visti","STREMIO_TV_DETAILS_SEASON_NUMBER":"Stagione ${1}","STREMIO_TV_STREAMS_LOADING":"Caricati gli addon ${1} / ${2}...","STREMIO_TV_STREAMS_STILL_LOADING":"L\'addon ${1} è in caricamente...","STREMIO_TV_PLAYER_SETTINGS":"Impostazione del player","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Ritardo sottotitoli","STREMIO_TV_PLAYER_AUDIO_DELAY":"Ritardo audio","STREMIO_TV_PLAYER_VIDEO_SCALING":"Adattamento video","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Sorgente flusso non supportata","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Apertura link esterno fallita","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Riproduci con ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Riproduci con libVLC","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Passaggio a libVLC a causa di un errore di riproduzione","STREMIO_TV_ADDONS_TITLE":"Usa Stremio sul tuo Telefono o PC per installare o configurare addon e premi \\"Sincronizza Addon\\"","STREMIO_TV_ADDONS_SUBTITLE":"Nota: sii sicuro di utilizzare lo stesso profilo Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sincronizza Addon","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addon sincronizzati con successo","STREMIO_TV_ADDONS_SYNC_FAILED":"Sincronizzazione addon fallita","STREMIO_TV_META_LINK_FAILED":"Apertura meta link fallita","STREMIO_TV_CATALOG_LOADING":"Catalogo in caricamento...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interfaccia lingua aggiornata","STREMIO_TV_SETTINGS_THEME_UPDATED":"Tema aggiornato","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Player di Default","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"Player Esterno","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Lingua predefinita","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Lingua secondaria predefinita","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Riproduzione con tunnel","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possibili problemi di riproduzione su alcuni dispositivi","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Alcuni formati video possono non funzionare","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Url streaming del server","STREMIO_TV_SETTINGS_SERVER_VERSION":"versione Server","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Sconosciuto","STREMIO_TV_SETTINGS_STREMIO_VERSION":"versione Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Modifica url del server","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Inserisci un url streaming del server","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Per leggere le Privacy Policy di Stremio, visita:","STREMIO_TV_SETTINGS_TOS_TEXT":"Per leggere i Termini e Condizioni di Stremio, visita:","STREMIO_TV_NAV_SEARCH":"Cerca","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Scopri","STREMIO_TV_NAV_LIBRARY":"Libreria","STREMIO_TV_NAV_MOVIES":"Film","STREMIO_TV_NAV_SERIES":"Serie","STREMIO_TV_NAV_CHANNELS":"Canali","STREMIO_TV_NAV_TV":"Dirette TV","STREMIO_TV_NAV_SETTINGS":"Impostazioni","STREMIO_TV_NAV_ADDONS":"Addon","STREMIO_TV_LOGIN_TITLE":"Collega Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Scade tra","STREMIO_TV_LOGIN_STEP_ONE":"Scansione il QR Code sotto oppure va a","STREMIO_TV_LOGIN_STEP_TWO":"Accedi al tuo account Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Richiedi un nuovo collegamento","STREMIO_TV_LOGIN_LINK_REFRESHED":"Codice di accesso aggiornato","STREMIO_TV_SEARCH_PLACEHOLDER":"Scrivi qualcosa","STREMIO_TV_SEARCH_NO_ADDONS":"Non sono stati richiesti addon per i cataloghi!","STREMIO_TV_SEARCH_BUTTON":"Cerca","STREMIO_TV_SEARCH_KEY_DEL":"Canc","STREMIO_TV_SEARCH_KEY_SPACE":"Spazio","STREMIO_TV_SEARCH_KEY_CLEAR":"Pulisci","STREMIO_TV_SEARCH_HISTORY_TITLE":"Cerca nella Cronologia","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Puoi cercare per Titolo, Attori, Canali e altro...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Pulisci la Cronologia Cerca","STREMIO_TV_FILTERS_DESCRIPTION":"Scegli uno dei filtri qui sotto","FILTERS":"Filtri","SETTINGS":"Impostazioni","ACCOUNT":"Profilo","LOGOUT":"Disconnetti","THEMES":"Temi","PLAYBACK":"Riproduzione","PLAYBACK_SPEED":"Velocità riproduzione","AUDIO_TRACKS":"Tracce audio","VIDEOS":"Video","SERVER":"Server","LINKS":"Collegamenti","ABOUT":"Riguardo","INTERFACE":"Interfaccia","ANIMATIONS":"Animazioni","STATUS":"Stato","LANGUAGE":"Lingua","SIZE":"Grandezza","DELAY":"Ritardo","BOLD":"Grassetto","TEXT_COLOR":"Colore Testo","OUTLINE_COLOR":"Colore Bordi","BACKGROUND_COLOR":"Colore Sfondo","BACKGROUND_BLUR":"Sfocatura Sfondo","SEEK_TIME_DURATION":"Durata Termpo Ricerca","AUTO_PLAY":"Auto-Play Prossimo Episodio","PLAY_NOW":"Riproduci Ora","MARK_AS_WATCHED":"Segna come Visto","MARK_AS_UNWATCHED":"Marca come Non-Visto","REWIND_TO_BEGINNING":"Ricomincia dall\'Inizio","CONTINUE_WATCHING":"Continua a Guardare","ALL":"Tutto","SECONDS":"secondi","ON":"ACCCESO","OFF":"SPENTO","RELOAD":"Ricarica","EDIT_URL":"Modifica URL","NONE":"Niente","EMBEDDED":"Integrato","REMOTE_SWITCH_DEVICES":"Cambia dispositivo","REMOTE_VIDEOS":"Video","REMOTE_ADJUST_TIMING":"Regola tempi","REMOTE_ADJUST_SIZE":"Regola dimensioni","REMOTE_COULD_NOT_BE_LOADED":"Non è stato possibile caricare Telecomando Web","REMOTE_RETRY":"Riprova","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"Cos\'è Stremio?","FAQ_001_P1":"Stremio è un software per media center progettato per l\'intrattenimento video pensando alla facilità d\'uso. Stremio ti consente di organizzare & guardare la tua raccolta di film, serie, canali e dirette TV.","FAQ_001_P2":"Stremio raccoglie i contenuti che ti mostra dal tuo disco locale e dal nostro sistema di addon.","FAQ_001_P3":"Ti notifica anche quando un nuovo episodio/video/film/ che ti interessa è uscito, e ti suggerisce i film raccomandati per te.","FAQ_02_H1":"Come si confronta Stremio rispetto a Kodi e Plex?","FAQ_02_P1":"Noi abbiamo preso ispirazione da questi due software. Ma abbiamo obiettivi diversi - Stremio è specificamente mirato ai video di intrattenimento, e si impegna a diventare la soluzione principale essendo molto facile da usare.","FAQ_02_P2":"Stremio non sarà mai così personalizzabile e ricco di funzionalità come Kodi e Plex, ma è molto più facile da usare. Solo ${1} prendi e vedi ${2} :)","FAQ_03_H1":"Come si confronta Stremio rispetto a Netflix?","FAQ_03_P1":"Come prima, Netflix è una delle nostre ispirazioni. Ci sforziamo di ottenere l\'esperienza utente di Netflix, oltre a molte chicche aggiuntive. Ma soprattutto, ti stiamo dando la libertà di gestire la tua libreria e aggiungere nuove fonti di contenuto con il nostro sistema di addon.","FAQ_03_P2":"Ciò rende Stremio infinitamente estendibile, quindi quando usi Stremio, non sarai mai limitato come il contenuto che Netflix decide di concedere in licenza. Per esempio, da Stremio puoi vedere contenuti da ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} e anche ${9}Netflix${10} stesso!","FAQ_04_H1":"Come si confronta Stremio rispetto a Flipboard?","FAQ_04_P1":"Non riceviamo questa domanda così spesso, tranne quando parliamo con le persone di start-up :)","FAQ_04_P2":"Stremio è progettato come aggregatore di contenuti, che lo rende effettivamente un Flipboard per i video. Questo è molto evidente nella nostra sezione Bacheca, che ti mostra cataloghi e le notifiche di nuovi video/nuovi episodi per quello che segui, proprio come Flipboard.","FAQ_05_H1":"Come si confronta Stremio rispetto a Popcorn Time?","FAQ_05_P1":"Stremio e Popcorn Time hanno un\'interfaccia simile, perché non ci sono molti modi per fare bene i cataloghi di intrattenimento video :)","FAQ_05_P2":"Ma mentre Popcorn Time è incentrato sulla riproduzione torrent da specifiche sorgenti, Stremio non ha restrizioni ed è semplicemente un aggregatore di contenuti - non è bloccato in una specifica sorgente.","FAQ_05_P3":"Inoltre, non offriamo nessun addon di tipo torrent ufficiale, quindi Stremio non copre l\'esperienza d\'uso di Popcorn Time con funzionalità ufficiali.","FAQ_05_P4":"Un\'altra differenza è che Popcorn Time è completamente open source, mentre Stremio è ${1} parzialmente open source${2}.","FAQ_06_H1":"Aggiungerete questo film/serie TV?","FAQ_06_P1":"No, ci dispiace :(","FAQ_06_P2":"Come riportato nelle altre domande, Stremio non offre perfonalmente contenuti - tutto è aggiunto grazie al sistema di addon. Nel caso dovessi avere una richiesta per un contenuto, puoi usare il tasto “Report” nel Riproduttore, che manderà una email all\'autore dell\'addon che stai attualmente utilizzando.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Creerete addon per X?","FAQ_08_P1":"È assolutamente possibile.","FAQ_08_P2":"Se hai un\'idea per un addon, scrivi una riga a ${1}office@stremio.com${2}, ma assicurati che la tua idea per l\'addon non infranga nessun copyrights o condizione d\'uso.","FAQ_08_P3":"Al momento, le prossime integrazioni sulla nostra tabella di marcia sono addon per FandangoNOW, Filmon.tv video on demand e Crunchyroll.","FAQ_09_H1":"Stremio usa BitTorrent?","FAQ_09_P1":"Sì, Stremio supporta BitTorrent come protocollo di riproduzione. Puoi usarlo sia con un addon per torrent, oppure trascinando un file .torrent su Stremio, oppure incollando un magnet link nella barra di ricerca.","FAQ_09_P2":"Attenzione, da notare che l\'unico addon che usa BitTorrent è ${1}Vodo${2}, il quale fornisce contenuti indie, tutti autorizzati per essere distibuiti su BitTorrent.","FAQ_09_P3":"Noi non supportiamo l\'uso di un qualsiasi addon di terze parti che permetta l\'infrangimento del copyright.","FAQ_10_H1":"Cosa posso guardare su Stremio con gli addon ufficiali?","FAQ_10_P1":"Di default, puoi guardare contenuti di Filmon.tv, YouTube e Vodo. In aggiunta, abbiamo addon per Twitch.tv e pochi altri.","FAQ_10_P2":"Questa combinazione fornisce una selezione di:","FAQ_10_L1":"Canali TV popolari, offerti da Filmon.tv - per esempio E4, BBC, Bollyworld TV","FAQ_10_L2":"Qualsiasi cosa da YouTube - per esempio BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Film indie con Vodo","FAQ_10_L4":"Trasmissioni di Gaming Online con Twitch.tv","FAQ_10_P3":"In più, ci sono molte fonti di contenuto fornite con gli addon di Guidebox e Netflix, che <b>non</b> riproducono internamente a Stremio, ma potrebbero rimandarvi a un dato servizio. Per esempio, l\'addon di Guidebox potrebbe darvi una selezione di film che si possono guardare gratis negli USA, da servizi come TubiTV e Crackle.","FAQ_11_H1":"Stremio non si installa, cosa devo fare?","FAQ_11_P1":"Se usi Windows, prova ${1}queste alternative${2}.","FAQ_11_P2":"Se usi Mac OS X, sii consapevole che non supportiamo nessuna versione precedente a OS X Mavericks (10.9).","FAQ_11_P3":"Se usi Linux, sii consapevole che supportiamo solo Linux 64 bit (x64) per il momento.","FAQ_11_P4":"Se non riesci a risolvere il tuo problema, scrivici al nostro ${1} gruppo Facebook${2}.","FAQ_12_H1":"Perché scatta il mio antivirus? Stremio è sicuro?","FAQ_12_P1":"Assicuriamo che Stremio è ${1}sicuro al 100%${2}.","FAQ_12_P2":"Il tuo antivirus scatta perchè nel nostro programma è integrata la pubblicità, che viene riconosciuta da alcuni antivirus come pericolo.","FAQ_12_P3":"Se non sei ancora sicuro, puoi provare ad installare una ${1}di queste alternative${2}.","FAQ_13_H1":"Come posso creare il mio addon?","FAQ_13_P1":"Per i principianti, suggeriamo di controllare su GitHub il nostro ${1}modulo di sistemi di addon${2}.","FAQ_13_P2":"Dopo, potete seguire la guida ${1}Hello World${2}.","FAQ_13_P3":"Se non hai idea di come programmare, condividi la tua idea sulla ${1}comunità Reddit${2} e contattaci a ${3}office@stremio.com${4} con la tua idea di addon.","FAQ_14_H1":"Come sono pubblicati gli addon?","FAQ_14_P1":"Quando crei un addon e lo offri, ed inserisci un campo <b>endpoint</b> nel tuo manifesto, che punta ad un indirizzo di un addon funzionante, l\'addon sarà automaticamente pubblicato sul nostro ${1}Catalogo Addon${2}.","FAQ_14_P2":"Questo succede perchè la parte server del modulo stremio-addons chiama automaticamente la nostra API per notificare l\'addon. Quando la nostra API valida il tuo <b>endpoint</b> come addon valido, inizierà ad essere mostrato nel catalogo.","FAQ_15_H1":"Posso lanciare Stremio nel mio browser?","FAQ_15_P1":"Non ancora per il momento, ma arriverà!","FAQ_15_P2":"Se sei curioso di vedere una versione Alpha, puoi vederla qui: ${1}alpha4.strem.io${2}. Ricordati che lo streaming è disabilitato su questa versione. Suportiamo Chrome, Firefox, Opera e Edge.","FAQ_16_H1":"La trasmissione su TV non funziona / i sottotitoli non funzionano","FAQ_16_P1":"La trasmissione su TV usa la tecnologia DLNA che è molto inconsistente tra i diversi marchi e modelli di TV. Per questo motivo, non possiamo testare ogni caso, quindi è lontana dalla perfezione. Nonostante ciò, stiamo lavorando per migliorarla costantemente ma non possiamo darti una stima di quando DLNA inizierà a funzionare correttamente con la tua TV.","FAQ_16_P2":"Se non vedi nemmeno la tua TV nel menu della Trasmissione, prova a disattivare la connessione di rete e riattivarla (su Windows, click destro su Rete e usa Abilita/Disabilita), oltre a riavviare il router, la TV e il PC.","FAQ_16_P3":"Se stai riscontrando ancora problemi, puoi aiutarci inviandoci le informazioni sulla marca e sul modello del televisore all\'indirizzo ${1}office@stremio.com${2}.","FAQ_16_P4":"Nel frattempo, ti consigliamo Chromecast, che supportiamo molto bene, o semplicemente collegando la TV al PC con un cavo HDMI.","FAQ_17_H1":"Stremio si blocca e/o crasha, cosa posso fare?","FAQ_17_P1":"Prima di tutto, se utilizzi Windows 7 con l\'antivirus AVG: abbiamo un problema con quella combinazione. Il problema è in AVG stesso e non esiste un modo ragionevole per risolverlo da parte nostra. Sfortunatamente, le eccezioni o la disattivazione dell\'antivirus non funzioneranno. L\'unica soluzione è sostituire AVG con qualcos\'altro.","FAQ_17_P2":"Se non è questo il problema, ma stai ancora utilizzando Windows, esegui l\'aggiornamento all\'ultimo service pack e aggiorna/reinstalla i driver della GPU, quindi riprova.","FAQ_17_P3":"Se il tuo problema non è ancora risolto, o stai usando un Mac o Linux, scrivici segnalando i dettagli esatti del problema sul ${1}nostro gruppo Facebook${2}.","FAQ_18_H1":"Come posso creare il mio addon?","FAQ_18_P1":"Per i principianti, suggeriamo di controllare su GitHub il nostro ${1}modulo di sistemi di addon${2}.","FAQ_18_P2":"Dopo, potete seguire la guida ${1}Hello World${2}.","FAQ_18_P3":"Se non hai idea di come programmare, condividi la tua idea sulla ${1}comunità Reddit${2} e contattaci a ${3}office@stremio.com${4} con la tua idea di addon.","FAQ_19_H1":"Perchè Stremio occupa spazio sul disco?","FAQ_19_P1":"Stremio ha una <b>cache locale</b> per conservare temporaneamente i file video della tua riproduzione.","FAQ_19_P2":"Questo ha due benefici: primo, permette a Stremio di anticipare il caricamento del video in modo da garantire una riproduzione più fluida. Secondo, mantiene i video nella cache locale in modo da poter continuare a guardarli offline.","FAQ_19_P3":"Quanta memoria prende Stremio dipende dalle impostazioni di <b>Cache</b> impostate nel pannello Impostazioni. Stremio può mantenere la quantità impostata (ad es. 2 GB) sul tuo disco, a meno che il video attualmente in streaming non sia più grande, in qual caso deve allocare spazio di archiviazione sufficiente per conservarlo fino a quando non lo riproduci in streaming.","FAQ_20_H1":"Dov\'è la cartella di cache?","FAQ_20_P1":"Su Windows, è stremio-cache nell\'unità che hai scelto in Impostazioni (es. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"Su MacOS, è \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"Su Linux, è \\"~/.stremio/stremio-cache\\" oppure \\"~/stremio-cache\\"","FAQ_21_H1":"Ricevo l\'errore \\"Server di riproduzione non trovato\\", cosa posso fare?","FAQ_21_P1":"Se ricevi questo errore, significa una delle poche cose:","FAQ_21_P2":"1) Stai tentando di utilizzare un addon supportato dalla sorgente YouTube/BitTorrent, dalla nostra ${1}versione web${2}. In questo caso, devi installare la nostra versione desktop dal ${3}nostro sito web${4}.","FAQ_21_P3":"2) C\'è qualcosa che non va con l\'installazione di Stremio. In questo caso, prova a reinstallare la nostra ultima versione desktop dal ${1}sito web${2}. Se non aiuta, prova a disabilitare l\'antivirus e firewall, riavviando il tuo PC e provando di nuovo. Se anche questo non aiuta, scrivici sul ${3}nostro gruppo Facebook${4}.","FAQ_22_H1":"Non posso vedere/usare parecchi addon su iOS","FAQ_22_P1":"A causa delle restrizioni nei termini e condizioni dell\'Apple App Store, abbiamo delle restrizioni sull\'applicazione per iOS solo per un particolare gruppo di addon.","FAQ_22_P2":"Ma stai tranquillo - ci saranno molti altri addon per iOS in futuro, e potremmo anche aggiungere un\'integrazione che ti consentirà di utilizzare tutti gli addon di Stremio grazie alla connessione dell\'app iOS allo Stremio Streaming Server."}')},9163:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Филм","TYPE_series":"Серија","TYPE_tv":"TV канал","TYPE_channel":"YouTube канал","TYPE_other":"Other","TYPE_movie_PL":"Филмови","TYPE_series_PL":"Серии","TYPE_tv_PL":"TV канали","TYPE_channel_PL":"YouTube канали","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Назад","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Најди","Board":"Известија","Library":"Библиотека","My Library":"My Library","Calendar":"Календар","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"бараj","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Додај","REMOVE_FROM_LIB":"Отстрани","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Треjлер","WATCH_TRAILER":"Треjлер","WATCH_NOW":"Гледај","SHOW":"Покажи","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb рејтинг","YEAR":"Година","DIRECTOR":"Режија","WRITER":"Автор","LEAD_ACTORS":"Во Главните улоги","CAST":"Глумат","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"емитувано","SEASONS":"Сезони","GENRE":"Жанр","CATALOG":"Catalog","SUMMARY":"Опис","SHOW_MORE":"Show More","SIMILAR":"Слични","UPCOMING":"Скоро","ENDED":"Прекинат","DURATION":"Времетраење","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"search videos","SEARCH_PLACEHOLDER":"search or paste magnet link","ADDON":"addon","ADDONS":"Addons","OFFICIAL":"официјални","ADDONS_OFFICIAL":"Официјални addon-и","ADDONS_POPULAR":"Популарни во регионот","ADDON_FREE":"бесплатно","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"subscription","ADDON_STREAM_GEORESTRICTED":"not available in your area","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Достапни извори","NO_STREAM":"Нема достапни извори","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Show all addons »","ADDON_CATALOGUE_MORE":"More addons »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Protected addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Филмот е сеуште во кината","WATCH_IN_CINEMA":"Watch it in your local cinema","IN_THEATER":"In cinema","GET_TICKETS":"Get tickets","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Сеуште немаме информации за овој канал. <br > Вратете се по неколку минути.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Додадете го во библиотеката за да примите известување.","GET_NOTIFIED_WHEN_AVAILABLE":"Ќе примите известување кога ќе излезе.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Стриминг од","CASTING_TO":"Репродукција на","NETWORK_STATUS":"Мрежа","STREAM_SPEED":"Брзина:","STREAM_BUFFERED":"Буфер:","PEERS_INFO":"Корисници","PEERS_ACTIVE":"Активни:","PEERS_CONNECTED":"Поврзани:","PEERS_WAITING":"Чекаат:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"Се вчитува...","PLAYING_LOCAL":"репродукција од локална датотека","PLAYING_CACHE":"репродукција од кеш","WRONG_SUBS":"Грешни преводи?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Изберете уред","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Телефон / таблет","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Смени превод на","SUBTITLES_CHANGE_NONE":"Нема други преводи за тој јазик.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alteratively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Сезона","EPISODE":"Епизода","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"популарни","SORT_RECENT":"последни","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"рејтинг","SORT_WATCHED":"видени","SORT_YEAR":"година","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"resume","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Топ","DISCOVER_OSCAR":"Добитници на Оскар","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Внимание: нема активен Stremio addon за овој тип содржина. Овде гледате зачувана информациjа, таа нема да се обновува.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Лансирање новата верзија!","UPGRADE":"Достапна е нова верзија","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Влегување со Фејсбук","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"или","I_ACCEPT":"Ги прочитав и ги прифаќам","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Општите услови","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Лозинките се разминуваат","SIGN_UP":"Регистрирај се","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Влез","LOG_OUT":"Излез","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Влегување како гостин","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"кликнете овде","WRONG_PASSWORD":"погрешна лозинка. Во случај дека сте ја заборавиле","SET_A_PASS":"ставете ваша лозинка","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"Овој email е употребен со Фејсбук најава.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Употребата на addon-и од трети лица е на ваша одговорност.","ADDON_ACTIVATE":"Активирај овој addon?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Што е ново?","BUTTON_CONTINUE":"Продолжи","BUTTON_ACTIVATE":"Активирај","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Откажи","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Библиотеката ви е празна. Откријте колку е корисна :)","HOW_START":"Започнете така:","LIB_EMPTY_CAL":"Календарот покажува епизоди од сериите во вашата Библиотека.","HOW_START_CAL":"Еве како да додадете серии:","LIB_EMPTY_BOARD":"Тука ќе видите известувања и препораки свързани со вашата Библиотеката.","HOW_START_BOARD_WAIT":"Ве молиме додадете неколку канали / серии и ни даjте неколку минути да собереме известувања :)","HOW_START_BOARD":"Еве како да додадете филмови и серии во библиотеката:","IMPORT_FB":"Додавање од <span> Facebook </ span>","IMPORT_TRAKT":"Import your media library from <span>Trakt</span>","IMPORT_DISCOVER":"Најди интересни работи во <span> Discover </ span>","IMPORT_DISK":"Скенирајте за филмови и серии од вашиот <span> локален диск </ span>","PLEASE_CREATE_ACC":"Please <u>create an account</u> to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from <span>Discover</span>","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your <span>local disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Промена на лозинка","SETTINGS_TOS":"Услови на употреба","SETTINGS_SUPPORT":"Поддршка","SETTING_LANGUAGE":"Јазик","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Стоп","CONNECTED":"Connected","AUTHENTICATE":"овластување","CACHING":"Кешира","SETTINGS_CACHING_DRIVE":"Изберете диск за кеш","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Jануари","February":"Февруари","March":"Март","April":"Април","May":"Мај","June":"Јуни","July":"Јули","August":"Август","September":"Септември","October":"Октомври","November":"Ноември","December":"Декември","Monday":"Понеделник","Tuesday":"Вторник","Wednesday":"Среда","Thursday":"Четврток","Friday":"Петок","Saturday":"Сабота","Sunday":"Недела","Action":"Акција","Comedy":"Комедија","War":"Воени","Family":"Семејни","Animation":"Анимација","Adventure":"Авантура","Fantasy":"Fantasy","Crime":"Crime","Mystery":"Mystery","Romance":"Romance","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Music","Biography":"Biography","Documentary":"Documentary","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years, with a single goal - to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - support us!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"provides","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},6735:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Wayang","TYPE_series":"Siri","TYPE_tv":"Saluran TV","TYPE_channel":"Saluran","TYPE_other":"Other","TYPE_movie_PL":"Wayang","TYPE_series_PL":"Siri","TYPE_tv_PL":"Saluran TV","TYPE_channel_PL":"Saluran","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Kembali","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Teroka","Board":"Papan","Library":"Pustaka","My Library":"My Library","Calendar":"Takwim","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"cari","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Tambah dalam Pustaka","REMOVE_FROM_LIB":"Keluarkan dari Pustaka","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Trailer","WATCH_TRAILER":"Watch Trailer","WATCH_NOW":"Tonton Sekarang","SHOW":"Tayang","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb","YEAR":"Tahun","DIRECTOR":"Pengarah","WRITER":"Penulis","LEAD_ACTORS":"Teraju Utama","CAST":"Pelakon","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Ke Udara","SEASONS":"Musim","GENRE":"Genre","CATALOG":"Catalog","SUMMARY":"Ringkasan","SHOW_MORE":"Show More","SIMILAR":"Yang Serupa","UPCOMING":"Akan Datang","ENDED":"Tamat","DURATION":"Tempoh","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"cari video","SEARCH_PLACEHOLDER":"search or paste magnet link","ADDON":"addon","ADDONS":"Addons","OFFICIAL":"rasmi","ADDONS_OFFICIAL":"Addons Stremio Rasmi","ADDONS_POPULAR":"Mahsyur di kawasan anda","ADDON_FREE":"Percuma","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"langganan","ADDON_STREAM_GEORESTRICTED":"tiada dalam kawasan anda","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Streams yang sedia ada","NO_STREAM":"Tiada streams buat masa ini","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Tunjukkan semua addons »","ADDON_CATALOGUE_MORE":"More addons »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Protected addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Tayangan masih dalam teater","WATCH_IN_CINEMA":"Tonton di wayang berdekatan anda","IN_THEATER":"Dalam tayangan","GET_TICKETS":"Dapatkan Tiket","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.<br>Please come back in a few minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Add it to your library to get notified once it is available.","GET_NOTIFIED_WHEN_AVAILABLE":"You will get notified once it is available.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Alamak, ralat pemain","PLAYER_ERROR_LOOKSLIKE":"Nampaknya seperti","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streaming dari","CASTING_TO":"Tayangkan ke","NETWORK_STATUS":"Status capaian","STREAM_SPEED":"Kelajuan stream:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"Maklumat peers","PEERS_ACTIVE":"Aktif:","PEERS_CONNECTED":"Sambungan:","PEERS_WAITING":"Menunggu:","TRANSCODING_WARNING":"Amaran: video transkoding.","STREAM_LOADING":"Memuatkan...","PLAYING_LOCAL":"main dari fail tempatan","PLAYING_CACHE":"playing from cache","WRONG_SUBS":"Wrong subtitles?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Pilih peranti untuk tayang","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Bimbit / Tablet","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Tukar sari kata untuk ","SUBTITLES_CHANGE_NONE":"There are no other subtitles for this language, sorry.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternatively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_DELAY":"Sari kata lewat:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Musim","EPISODE":"Episod","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"baru","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rating","SORT_WATCHED":"ditonton","SORT_YEAR":"year","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"sambung","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Mahsyur","DISCOVER_OSCAR":"Pemenang Oscar","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Warning: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Re-launch now!","UPGRADE":"New version is available! Upgrade to the latest Stremio version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Masuk guna Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"atau","I_ACCEPT":"Saya akur","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Terma dan Syarat","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Kata laluan tak sama","SIGN_UP":"Daftar","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Masuk","LOG_OUT":"Keluar","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Guest login","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"click here","WRONG_PASSWORD":"Katalaluan salah. Sekiranya terlupa, ","SET_A_PASS":"tetapkan satu kata laluan","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"Emel ini telah diguna This email was used with a Facebook login.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Aktifkan tambahan ini?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Apa yang terbaru","BUTTON_CONTINUE":"Teruskan","BUTTON_ACTIVATE":"Aktifkan","BUTTON_ACTIVATED":"Aktif","BUTTON_CANCEL":"Batal","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Cara bagaimana untuk mula:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from <span>Facebook</span>","IMPORT_TRAKT":"Import your media library from <span>Trakt</span>","IMPORT_DISCOVER":"Find interesting stuff from <span>Discover</span>","IMPORT_DISK":"Import movies or shows you have on your <span>local disk</span>","PLEASE_CREATE_ACC":"Please <u>create an account</u> to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from <span>Discover</span>","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your <span>local disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Lancarkan bila mula","SETTINGS_VLC_DEFAULT":"Main guna VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Terus main episod seterusnya","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import dari Facebook","SETTINGS_IMPORT_DISK":"Import dari local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Masukkan ke kalendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Tukar katalaluan","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Contact support","SETTING_LANGUAGE":"Bahasa","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Keluar","CONNECTED":"Connected","AUTHENTICATE":"Pengesahan","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Select caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januari","February":"Februari","March":"Mac","April":"April","May":"Mei","June":"Jun","July":"Julai","August":"Ogos","September":"September","October":"Oktober","November":"November","December":"Disember","Monday":"Isnin","Tuesday":"Selasa","Wednesday":"Rabu","Thursday":"Khamis","Friday":"Jumaat","Saturday":"Sabtu","Sunday":"Ahad","Action":"Aksi","Comedy":"Komedi","War":"Perang","Family":"Kekeluargaan","Animation":"Animasi","Adventure":"Pengembaraan","Fantasy":"Khayalan","Crime":"Jenayah","Mystery":"Misteri","Romance":"Percintaan","Drama":"Drama","Horror":"Seram","Thriller":"Seram Sejuk","Sci-Fi":"Sains","Music":"Musik","Biography":"Biografi","Documentary":"Dokumentari","Sport":"Sukan","Musical":"Muzikal","Western":"Barat","Film-Noir":"Film-Noir","News":"Berita","History":"Sejarah","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Permainan","From TV":"Dari TV","Lifestyle":"Gaya Hidup","Science & Education":"Sains & Pendidikan","Cooking & Health":"Masakan & Kesihatan","Beauty & Fashion":"Kecantikan & Fesyen","Sports":"Olah raga","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Radio Akhbar Perniagaan","Business Tv":"Tv Niaga","Cars & Auto":"Kereta & Kenderaan","Comedy Radio":"Radio Jenaka","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Jasmani & Jiwa","Education":"Pendidikan","Indian Tv":"Tv India","Extreme Sports":"Sukan Lasak","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Tv Selebriti","Science Tv":"Tv Sains","Bikini babe":"Awek Bikini","Outdoors":"Outdoors","German Tv":"TV German","French Tv":"TV Perancis","Italian Tv":"Tv Itali","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"Radio Akhbar","Music Radio":"Radio Muzik","Language Learning":"Belajar Bahasa","Science Radio":"Radio Sains","Tech Radio":"Radio Tek","Science & Technology Vod":"Vod Sains & Teknologi","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"berita","music video":"video muzik","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Tayang","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Skrin Penuh","CTX_WRONG_SUBS":"Sari kata salah?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Salin","CTX_PASTE":"Paste","CTX_CLEAR":"Padam","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Damai Sana","HOPE_YOU_ENJOY":"Kami harap anda terhibur dengan Stremio dan menjadi salah satu apps kegemaran anda","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Muat Turun Sekarang","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Teknologi","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Saluran","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Rancangan TV yang disarankan","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"Video Baharu","WEBSITE_BOARD_EPISODE":"Episod Baharu","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},3778:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serie","TYPE_tv":"TV kanal","TYPE_channel":"Kanal","TYPE_other":"Other","TYPE_movie_PL":"Filmer","TYPE_series_PL":"Serier","TYPE_tv_PL":"TV kanaler","TYPE_channel_PL":"Kanaler","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Tilbake","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Oppdag","Board":"Board","Library":"Bibliotek","My Library":"My Library","Calendar":"Kalender","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"Søk blant","SEARCH_NO_RESULTS":"Ingen resultater","SEARCH_EXPLANATION_CONTENT":"Søk etter filmer, serier, YouTubevideoer and TV-kanaler","SEARCH_EXPLANATION_PEOPLE":"Søk etter skuespillere, regissører and manusforfattere","SEARCH_PASTE_LINKS":"Lim inn HTTP og magnetlinker","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Legg til i bibliotek","REMOVE_FROM_LIB":"Fjern fra bibliotek","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Trailer","WATCH_TRAILER":"Se Trailer","WATCH_NOW":"Se Nå","SHOW":"Vis","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Se tilfeldig","IMDB_RATING":"IMDb Rangering","YEAR":"År","DIRECTOR":"Regissør","WRITER":"Forfatter","LEAD_ACTORS":"Hovedskuespillere","CAST":"Skuespillere","CREW":"Crew","SHOW_MORE_CAST":"Vis mer »","AIRED":"Utgitt","SEASONS":"Sesonger","GENRE":"Sjanger","CATALOG":"Catalog","SUMMARY":"Sammendrag","SHOW_MORE":"Show More","SIMILAR":"Lignende","UPCOMING":"Kommer","ENDED":"Endte","DURATION":"Lengde","FEATURED":"Utvalgt","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"søk i videoer","SEARCH_PLACEHOLDER":"search or paste magnet link","ADDON":"Utvidelse","ADDONS":"Utvidelser","OFFICIAL":"Offisielle","ADDONS_OFFICIAL":"Offisielle Stremio Utvidelser","ADDONS_POPULAR":"Populært i ditt område","ADDON_FREE":"Gratis","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Abonnering","ADDON_STREAM_GEORESTRICTED":"ikke tilgjengelig i ditt område","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Lokal fil","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Tilgjengelige Strømmninger","NO_STREAM":"Ingen strømmninger tilgjengelige","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Vis alle utvidelser »","ADDON_CATALOGUE_MORE":"Fler utvidelser »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Protected addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Filmen er fortsatt på kino","WATCH_IN_CINEMA":"se den på din lokale kino","IN_THEATER":"På Kino","GET_TICKETS":"Få Biletter","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Denne kanalen er ikke ferdig enda.<br>Vennligst kom tilbake om noen få minutter.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Legg den til i ditt bibliotek for å bli varslet når den blir tilgjengelig.","GET_NOTIFIED_WHEN_AVAILABLE":"Du vil bli varslet med en gang den er tilgjengelig.","WARNING_STREAMING_SERVER":"Advarsel: lokal strømmeserver ble ikke funnet. Det vil ikke være tilgjengelig å strømme fra YouTube og BitTorrent.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, spiller feil","PLAYER_ERROR_LOOKSLIKE":"Det ser ut som","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Strømmer fra","CASTING_TO":"Caster til","NETWORK_STATUS":"Nettverksstatus","STREAM_SPEED":"Fart på strømmen:","STREAM_BUFFERED":"Buffret:","PEERS_INFO":"Informasjon om peers","PEERS_ACTIVE":"Aktive:","PEERS_CONNECTED":"Tilkoblede:","PEERS_WAITING":"Venter:","TRANSCODING_WARNING":"Advarsel: transkoder videoen.","STREAM_LOADING":"Laster...","PLAYING_LOCAL":"Spiller fra lokal fil","PLAYING_CACHE":"Spiller fra cache","WRONG_SUBS":"Feil undertekster?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Velg en enhet å strømme fra","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Telefon / Nettbrett","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Endre undertekster for ","SUBTITLES_CHANGE_NONE":"Det er ingen andre undertekster for dette språket, beklager.","SUBTITLES_CHANGE_ACIVE":"Undertekst #{{subtitlesDialog.activeIdx + 1}} er aktivert. Klikk \\"Fortsett\\" for å aktivere undertekster #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativt,","SUBTITLES_ADJUST_DELAY":"Still inn undertekstsforsinkelse:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Eller bruk <span>G</span> / <span>H</span> tastene når du ser for å justere.","SUBTITLES_ADJUST_DELAY_TIP":"TIPS: du kan bruke <span>G</span> / <span>H</span> tastene når du ser for å justere.","SUBTITLES_DELAY":"Undertekstsforsinkelse:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sesong","EPISODE":"Episode","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trender","SORT_RECENT":"nylig","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rangering","SORT_WATCHED":"sett","SORT_YEAR":"år","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"gjenoppta","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"avvis","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Utvalgt","DISCOVER_TOP":"Topp","DISCOVER_OSCAR":"Oscar vinnere","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Advarsel: ingen Stremio utvidelse aktiv for denne typen. Viser lagrede elementer, ingenting vil oppdatere.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Start på nytt nå!","UPGRADE":"Oppdater til den nyeste Stremio versjonen","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Har du ikke en bruker?","HAVE_ACC":"Already have an account?","PASSWORD":"Passord","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-post","FB_LOGIN":"Logg inn med Facebook","FB_NOTHINGSHARED":"Ingenting vil bli delt uten din tillatelse :)","FB_NOPOST":"We won’t post anything on your behalf","OR":"eller","I_ACCEPT":"Jeg godtar ","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Vilkårene og betingelsene","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Passordene er ikke like","SIGN_UP":"Registrer","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Logg inn","LOG_OUT":"Logg ut","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Logg inn som gjest","GUEST_LOGIN_NOTICE":"Gjesteinnlogging er ikke anbefalt. Å bruke en vanlig inlogging gjør det lettere for Stremio å synkronisere biblioteket ditt og å motta varsler for dine favoritt serier/kanaler. Er su sikker på at du vil fortsette?","GUEST_LOGIN_NOTICE_2":"Gjesteinnlogging er ikke anbefalt - du vil ikke ha tilgang til et synkronisert bibliotek eller board, som er which are viktige Stremio funksjoner. ER du sikker på at du vil fortsette?","CLICK_HERE":"Klikk her","WRONG_PASSWORD":"Feil passord. I tilfelle du har glemt passordet, ","SET_A_PASS":"lag et passord","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Glemt passord?","EMAIL_USED_WITH_FB":"Denne eposten er i bruk av en Facebook innlogging.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Tilkoblingsfeil - venligst prøv igjen senere.\\n\\nHvis feilen fortsetter, deaktiver brannmuren/anti-virus program (spesielt Bitdefender).","IMPORT_FROM_GUEST":"Importer bibliotek fra en gjestebruker","RECEIVE_UPDATES_EMAIL":"Motta oppdateringer fra Stremio på epost","LOGIN_FAILED":"Innlogging feilet.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Bruk av tredjeparts-utvidelser vil alltid være ditt ansvar med hennsyn til den gjeldene loven der du befinner deg.","ADDON_ACTIVATE":"Aktivere denne utvidelsen?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Hva er nytt?","BUTTON_CONTINUE":"Fortsett","BUTTON_ACTIVATE":"Aktiver","BUTTON_ACTIVATED":"Aktivert","BUTTON_CANCEL":"Avbryt","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Biblioteket ditt ser tomt ut. Finn ut hvor nyttig det er :) ","HOW_START":"Kom i gang:","LIB_EMPTY_CAL":"Kalenderen din viser serier i biblioteket ditt.","HOW_START_CAL":"Her er hvordan du kan legge til serier:","LIB_EMPTY_BOARD":"Board viser varsler & anbefalinger relatert til biblioteket ditt.","HOW_START_BOARD_WAIT":"Legg til noen serier eller kanaler i biblioteket ditt og gi oss noen minutter til å behandle de :)","HOW_START_BOARD":"Her er hvordan du kan legge til serier & filmer til det:","IMPORT_FB":"Importer ting du liker fra <span>Facebook</span>","IMPORT_TRAKT":"Importer mediebiblioteket ditt fra <span>Trakt</span>","IMPORT_DISCOVER":"Finn interessante ting fra <span>Oppdag</span>","IMPORT_DISK":"Importer filmer eller serier fra din <span>lokale Harddisk</span>","PLEASE_CREATE_ACC":"Venligst <u>opprett en bruker</u> for å aktivere biblioteksynkronisering & Board.","IMPORT_DISCOVER_SIGNUP":"Registrer deg og finn interessante ting i <span>Discover</span>","IMPORT_DISK_SIGNUP":"Registrer deg for å importere filmer eller serier du har på din <span>lokale disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Kjør ved oppstart","SETTINGS_VLC_DEFAULT":"Spill med VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Spill av neste episode automatisk","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Endre vindusstørrelse automatisk før avspilling","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Bruk alltid den nyeste betaversjonen","SETTINGS_IMPORT_FB":"Importer fra Facebook","SETTINGS_IMPORT_DISK":"Importer fra lokal disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Abonner på en kalender","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Endre passord","SETTINGS_TOS":"Vilkår for tjenesten","SETTINGS_SUPPORT":"Kontakt support","SETTING_LANGUAGE":"Språk","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Logg ut av Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR koden for å åpne eksternt","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Avslutt","CONNECTED":"Connected","AUTHENTICATE":"Verifiser","CACHING":"Bufrer","SETTINGS_CACHING_DRIVE":"Velg bufrings enhet","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januar","February":"Februar","March":"Mars","April":"April","May":"Mai","June":"Juni","July":"Juli","August":"August","September":"September","October":"Oktober","November":"November","December":"Desember","Monday":"Mandag","Tuesday":"Tirsdag","Wednesday":"Onsdag","Thursday":"Torsdag","Friday":"Fredag","Saturday":"Lørdag","Sunday":"Søndag","Action":"Action","Comedy":"Komedie","War":"Krig","Family":"Familie","Animation":"Animasjon","Adventure":"Eventyr","Fantasy":"Fantasy","Crime":"Krim","Mystery":"Mysterier","Romance":"Romantikk","Drama":"Drama","Horror":"Grøsser","Thriller":"Spenning","Sci-Fi":"Sci-Fi","Music":"Musikk","Biography":"Biografi","Documentary":"Dokumentar","Sport":"Sport","Musical":"Musikal","Western":"Western","Film-Noir":"Film-Noir","News":"Nyheter","History":"Historie","Game-Show":"Gameshow","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Underholdning","Gaming":"Gaming","From TV":"Fra TV","Lifestyle":"Livsstil","Science & Education":"Vitenskap & Utdanning","Cooking & Health":"Matlaging & Helse","Beauty & Fashion":"Skjønnhet & Mote","Sports":"Sport","News & Politics":"Nyheter & Politikk","How-to & DIY":"Gjør det selv","Tech":"Teknologi","Automotive":"Bilbransjen","Causes & Non-Profits":"Saker & ideelle organisasjoner","Movies":"Filmer","Uk Live Tv":"UK Direkte TV","Fashion":"Mote","Business News Radio":"Business Nyhetsradio","Business Tv":"Business TV","Cars & Auto":"Biler og Auto","Comedy Radio":"Komedieradio","Lifestyle Radio":"Livsstilsradio","News Tv":"Nyhets TV","Food And Wine":"Mat og Vin","Latino Tv":"Latino TV","Shopping Tv":"Shopping TV","Religion":"Religion","Kids":"Barn","Body & Soul":"Kropp og Sjel","Education":"Utdanning","Indian Tv":"Indisk TV","Extreme Sports":"Ekstremsport","Middle Eastern Tv":"TV fra Midtøsten","Celebrity Tv":"Kjendis TV","Science Tv":"Vitenskaps TV","Bikini babe":"Bikini babe","Outdoors":"Utendørs","German Tv":"Tysk TV","French Tv":"Fransk TV","Italian Tv":"Italiensk TV","Gamer Tv":"Spill TV","Travel":"ReiseTV","Asian Tv":"Asiatisk TV","Entertainment":"Underholdning","News Radio":"Nyhetsradio","Music Radio":"Musikkradio","Language Learning":"Språklæring","Science Radio":"Vitenskapsradio","Tech Radio":"Teknologiradio","Science & Technology Vod":"Vitenskap -og Teknologi VOD","new video":"ny video","new episode":"ny episode","new movie":"ny film","recommended":"anbefalt","we recommend":"vi anbefaler","offer of the day":"dagstilbud","news":"nyheter","music video":"musikkvideo","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Forkast varsler","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Del","CTX_COPY_SHARE_LINK":"Kopier link for deling","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Vis","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Se på","CTX_WATCH":"Se","CTX_WATCHED":"Sett","CTX_WATCH_BEGINNING":"Se fra starten","CTX_WATCH_MOBILE":"Se på en mobil enhet","CTX_REWIND":"Spol til start","CTX_MARK_WATCHED":"Merk som sett","CTX_MARK_NON_WATCHED":"Merk som ikke sett","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Få nye varsler","CTX_REMOVE_CACHE":"Fjern fra bruffren","CTX_REMOVE_CACHE_EP":"Fjern episode fra buffren","CTX_OPEN_CONTAINING":"Åpne mappen som inneholder filen","CTX_REMOVE":"Fjern fra bilbiotek","CTX_AVAILABLE_OFFLINE":"Tilgjengelig Offline","CTX_PAUSED":"Pauset","CTX_ALWAYS_ON_TOP":"Alltid på toppen","CTX_FULLSCREEN":"Fullskjem","CTX_WRONG_SUBS":"Feil undertekster?","CTX_REPORT_ISSUES":"Rapporter en feil","CTX_COPY":"Kopier","CTX_PASTE":"Lim inn","CTX_CLEAR":"Tøm","CTX_CLEAR_RECENT_SEARCHES":"Tøm nylige søk","HELLO_THERE":"Hei!","HOPE_YOU_ENJOY":"Vi håper du liker Stremio og at det er en av dine favoritt apper allerede!","WHO_ARE_WE":"Hvem er vi? Vi er teamet bak appen - to gutter som har jobbet hardt med appen hver dag i de siste 3 årene, med kun ett mål - å gjøre dette produkte bedre og bedre.","SUPPORT_US":"Hvis du liker Stremio, hvis Stremio er verdifull for deg - støtt oss!","SPREAD_THE_WORD":"Del med vennene dine og spred ordet om Stremio","MORE_PEOPLE":"Jo fler som bruker Stremio, jo bedre blir det!","SEND_A_LINK":"Eller send en link til websiden vår","TIP_LOCALFILES":"Tips: du kan dra og slippe lokale videoer inn i Stremio","ADDON_MY":"Mine utvidelser","ADDON_COMMUNITY":"Samfunnets utvidelser","ADDON_OFFICIAL":"Offisielle utvidelser","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Søk etter utvidelser","ADDON_INSTALL":"Installer","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Avinstaller","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installert","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Side for utvidelser","ADDON_TOP_CONTENT":"Det beste fra denne utvidelsen","ADDON_PROVIDES":"git","ADDON_WATCH":"Se #{types} nå!","ADDON_WATCH_FREE":"Se #{types} GRATIS nå!","ADDON_ADDON":"Utvidelse","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"Mer #{types} i oppdag","ADDON_PROVIDES_STREAMS":"Se #{types}","ADDON_PROVIDES_STREAMS_FREE":"Se #{types} GRATIS","ADDON_PROVIDES_SUBTITLES":"Undertekster for #{types}","ADDON_CANTDETECT":"Vi kunne ikke oppdage en kjørende Stremio, så vi kunne ikke oppdage hvilke utvidelser du har installert.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Fortsett å se","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmer valgt spesielt for degg. <br />Denne filmen er en eksempel rekommandasjon","BOARD_EXPLANATION_EPISODES":"Nye episoder av favorittseriene dine kommer her.<br />Legg til serier du følger med på i biblioteket ditt.","BOARD_EXPLANATION_VIDEOS":"Nye episoder av dine favorittkanaler kommer her.<br />Legg til YouTubekanaler du følger med på i biblioteket ditt.","WEBSITE_SLOGAN_WATCH":"Se med en gang","WEBSITE_SLOGAN_ALL":"Alt videoinnholdet du liker på ett sted","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Last ned nå","WEBSITE_DOWNLOAD_FOR":"Last Ned For","WEBSITE_IS_DESKTOP":"Stremio er et skrivebordsprogram, åpne denne siden på PCen din og last ned nå!","WEBSITE_DESKTOP_DEMO_VID":"Skriveborddemo","WEBSITE_PAGE_HOME":"Hjem","WEBSITE_PAGE_FEATURES":"Funkjsoner","WEBSITE_PAGE_ADDONS":"Utvidelser","WEBSITE_PAGE_TECH":"Teknologi","WEBSITE_PAGE_CREATE_ADDON":"Lag utvidelse","WEBSITE_PAGE_CONTACTS":"Kontakter","WEBSITE_PAGE_BLOG":"Blogg","WEBSITE_TYPE_movie":"Filmer","WEBSITE_TYPE_series_PL":"Serier","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Kanaler","WEBSITE_STREMIO_WHAT_IS":"Stremio er en app som hjelper deg å organisere og umiddelbart se dine favoritt videoer, filmer, TV-serier og TV-kanaler.","WEBSITE_FEATURES_WATCH":"Se øyeblikkelig i HD","WEBSITE_FEATURES_WATCH_DETAIL":"Klikk og spill dine favoritt filmer, TV-programmer, videoer og TV-kanaler.","WEBSITE_FEATURES_SUBS":"Automatiske undertekster","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio velger automatisk synkroniserte undertekster for språket ditt.","WEBSITE_FEATURES_SUBS_LABEL":"Din tur, sjef.","WEBSITE_FEATURES_CAST":"Spill på TV og mobile enheter","WEBSITE_FEATURES_CAST_DETAIL":"Cast til AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile enheter.","WEBSITE_LIB":"Nyt ditt personlige bibliotek synkronisert på alle enhetene dine","WEBSITE_LIB_COLLECT":"Samle fra Stremio","WEBSITE_LIB_IMPORT":"Importer fra Facebook","WEBSITE_LIB_LOCAL":"Legg til fra din lokale harddisk","WEBSITE_BOARD":"Board - Ditt one-stop sted for varsler og anbefalinger","WEBSITE_BOARD_RECOMMEND":"Anbefalt TV Show","WEBSITE_BOARD_TRENDING":"Populær film","WEBSITE_BOARD_NEW":"Ny video","WEBSITE_BOARD_EPISODE":"Ny episode","WEBSITE_BOARD_1":"Leter du etter noe interessant å se på? Få anbefalinger basert på din smak!","WEBSITE_BOARD_2":"Bli varslet når en ny episode av ditt favoritt TV-program eller YouTube-kanal er ute!","WEBSITE_BOARD_YOUTUBE":"Nye episoder av YouTubekanaler","WEBSITE_BOARD_EPISODES":"Nye episoder av serier di følger.","WEBSITE_ADDONS":"Innholdsudvidelser","WEBSITE_TECH_DETAIL":"Vi elsker teknologi, vi elsker gal vitenskap!\\nStremio bruker følgende åpen kildekode-teknologier:","WEBSITE_TECH_WCJS":"WebChimera.js tillater Stremio å spille alle videoformater med god ytelse.","WEBSITE_TECH_WCJS_EXTRA":"Vi er kjerneprodukt bidragsytere","WEBSITE_TECH_ELECTRON":"Electron gir en innovativ plattform å bygge Stremio med.","WEBSITE_TECH_ELECTRON_EXTRA":"Vi er prosjekt bidragsytere","WEBSITE_TECH_LINVODB":"En databaseteknologi som sikrer dataene er organisert og tilgjengelig hvor som helst du har logger inn.","WEBSITE_TECH_LINVODB_EXTRA":"In-house teknologi","WEBSITE_CREATE_ADDON":"Lag din utvidelse","WEBSITE_CREATE_ADDON_DETAIL":"Har du en tjeneste som gir videoinnhold? Vi hjelper deg å dra nytte av Stremio funksjoner ved å lage utbidelsen din","WEBSITE_CREATE_ADDON_BENEFITS":"Fordeler med å lage en utvidelse for Stremio","WEBSITE_P2P_BEAUTY":"Skjønnheten av Peer-To-Peer strømming","WEBSITE_P2P_1":"Pålitelig og rimelig full HD / 4K video on demand eller direktestrømming","WEBSITE_P2P_2":"Distribusjonsplattform som gir god brukeropplevelse","WEBSITE_P2P_3":"Vi vil lage en utvidelse tilfredstiller dine behov","WEBSITE_P2P_CONTACT":"Interessert? Du er velkommen til å <a href=\'mailto:office@stremio.com\'>kontakte oss</a>.","WEBSITE_P2P_CONTACT_EXTRA":"Vi vil gjerne hjelpe deg med å integrere innholdet ditt med Stremio!","WEBSITE_P2P":"En gang i blant, kommer det en teknologi som endrer spillereglene. Vi har investert tonnevis med tid og krefter på å bygge vår Peer-to-Peer (P2P) video streaming motor som gir god ytelse og allsidighet til å tilpasse enhver bruk.\\nKontakt oss for DRM-aktivert P2P video on demand eller live streaming.","WEBSITE_THOUGHTS":"Tanker vi deler:","WEBSITE_SPREAD":"Spre ordet om Stremio:","WEBSITE_CONTACT":"Hvis du ønsker å kontakte oss, kjør på","WEBSITE_OPENSOURCE":"For våre åpene kildekode-prosjekter, gå til vår","WEBSITE_BITCOIN":"Doner med bitcoin:","WEBSITE_FAQ":"Ofte stilte spørsmål","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Vilkår for bruk","WEBSITE_LEGAL":"Juridisk","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},8472:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Series","TYPE_tv":"TV-kanalen","TYPE_channel":"Kanaal","TYPE_other":"Other","TYPE_movie_PL":"Films","TYPE_series_PL":"Series","TYPE_tv_PL":"TV-kanalen","TYPE_channel_PL":"YouTube","TYPE_other_PL":"Andere","TYPE_ALL":"All","VIDEO":"Video","BACK":"Terug","MORE":"Meer","DONE":"Klaar","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Ontdekken","Board":"Dashboard","Library":"Bibliotheek","My Library":"Mijn Bibliotheek","Calendar":"Agenda","NOTIFICATION_ONLINE":"Je bent nu online","NOTIFICATION_OFFLINE":"Je bent nu offline","INTERNET_CONNECTION":"Netwerkverbinding","STORAGE_FULL_TITLE":"Waarschuwing: geheugen is vol!","STORAGE_FULL_TEXT":"Stremio kan uw instellingen, voorkeuren of inloggegevens niet opslaan. Probeer Stremio te herstarten of opnieuw te installeren.","SEARCH":"Zoek","SEARCH_NO_RESULTS":"Er zijn geen resultaten gevonden","SEARCH_EXPLANATION_CONTENT":"Zoek naar films, series, Youtube and TV series","SEARCH_EXPLANATION_PEOPLE":"Zoek naar acteurs, filmregisseurs en schrijvers","SEARCH_PASTE_LINKS":"Plak hier HTTP en Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Toevoegen aan bibliotheek","REMOVE_FROM_LIB":"Verwijderen uit bibliotheek","ADDED_TO_LIB":"Toegevoegd aan bibliotheek","REMOVED_FROM_LIB":"Verwijderd van uw bibliotheek","TRAILER":"Trailer","WATCH_TRAILER":"Trailer bekijken","WATCH_NOW":"Nu kijken","SHOW":"Toon","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Kijk willekeurig","IMDB_RATING":"IMDb beoordeling","YEAR":"Jaar","DIRECTOR":"Regisseur","WRITER":"Schrijver","LEAD_ACTORS":"Hoofdrolspelers","CAST":"Rolverdeling","CREW":"Crew","SHOW_MORE_CAST":"Laat meer zien »","AIRED":"Uitgezonden","SEASONS":"Seizoenen","GENRE":"Genre","CATALOG":"Catalogus","SUMMARY":"Samenvatting","SHOW_MORE":"Show More","SIMILAR":"Vergelijkbaar","UPCOMING":"Opkomend","ENDED":"Afgelopen","DURATION":"Tijdsduur","FEATURED":"Uitgelicht","METADATA":"Metadata","CATEGORY":"categorie","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Zoek video\'s","SEARCH_PLACEHOLDER":"zoek of plak magnet link","ADDON":"Addon","ADDONS":"Addons","OFFICIAL":"Officieel","ADDONS_OFFICIAL":"Officiële Stremio addon","ADDONS_POPULAR":"Populair in uw regio","ADDON_FREE":"Gratis","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Abonnement","ADDON_STREAM_GEORESTRICTED":"Niet beschikbaar in uw regio","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Lokaal Bestand","SHARE_ADDON":"Deel addon","AVAILABLE_STREAMS":"Beschikbare streams","NO_STREAM":"Geen streams beschikbaar","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Voor meer streams, installeer meer addons","STREAM_NOT_SUPPORTED":"Geselecteerde stream is niet ondersteund op dit platform.","ADDON_CATALOGUE":"Toon alle addons »","ADDON_CATALOGUE_MORE":"Meer addons »","REPO_ADDED":"Repository toegevoegd","ADDON_REPO_EXIST_ERR":"Deze addons repository bestaat al","ADDON_REPO_ERR":"Foutmelding opgetreden tijdens het toevoegen van de repository","ADDON_ADD_ERR":"Foutmelding opgetreden tijdens het toevoegen van de addon","ERR_ADDON_PROTECTED":"Beschermde addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Er ging iets fout - authenticatie is mislukt","ERR_NOT_COLLECTION_URL":"Geen collectie URL","ERR_NOT_ADDON_URL":"Geen addon URL","ERR_DETECTFROMURL":"Niets beschikbaar in de URL","ADDON_DUPLICATE_WARNING":"Waarschuwing: gedupliceerde addon","ADDON_COLLECTION_SET_FAILED":"Addon collectieset mislukt","SETTINGS_DATA_EXPORT":"Exporteer data","ADDON_PULL_FAILED":"Addon ophalen mislukt","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Film nog in de bioscoop","WATCH_IN_CINEMA":"Bekijk de film in een bioscoop in uw buurt","IN_THEATER":"In de bioscoop","GET_TICKETS":"Tickets bemachtigen","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Dit kanaal is nog niet geschraapt.<br>Gelieve terug te komen in een paar minuten.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Voeg deze toe aan uw bibliotheek om een melding te krijgen zodra deze beschikbaar is.","GET_NOTIFIED_WHEN_AVAILABLE":"U krijgt een melding zodra deze beschikbaar is.","WARNING_STREAMING_SERVER":"Waarschuwing: lokale streaming server niet gevonden. Streamen van Youtube en BitTorrent is niet mogelijk","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Waarschuwing: de video is mogelijk niet ondersteund door uw hardware. De video zal mogelijks niet correct worden afspeeld.","PLAYER_ERROR":"Woeps, Videospeler fout","PLAYER_ERROR_LOOKSLIKE":"Het lijkt erop","PLAYER_ORIENTATION":"Videospeler orientatie","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Vergrendeld","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Videospeler vergrendeld op horizontale weergave","PLAYER_ORIENTATION_SENSOR":"Automatische orientatieweergave videospeler (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Streamen van","CASTING_TO":"Casten naar","NETWORK_STATUS":"Netwerkstatus","STREAM_SPEED":"Snelheid:","STREAM_BUFFERED":"Gebufferd:","PEERS_INFO":"Peers informatie","PEERS_ACTIVE":"Actief:","PEERS_CONNECTED":"Verbonden:","PEERS_WAITING":"Wachten:","TRANSCODING_WARNING":"Waarschuwing: transcoderen van video.","STREAM_LOADING":"Laden...","PLAYING_LOCAL":"spelen van een lokaal bestand","PLAYING_CACHE":"spelen uit cache","WRONG_SUBS":"Verkeerde ondertiteling?","ERR_SUBS_LOADING_TITLE":"Fout tijdens laden ondertiteling","ERR_SUBS_LOADING":"Ondertiteling laden mislukt: Dit kan liggen aan de gebruikte addon, of uw internetverbinding","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Kon streamingsapparaat info niet vernieuwen: streamingserver is mogelijks offline","CHOOSE_DEVICE":"Kies een apparaat om op te kijken","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Mobiel/Tablet","SUBTITLES":"Ondertiteling","SUBTITLES_CHANGE":"Verander ondertiteling voor","SUBTITLES_CHANGE_NONE":"Voor deze taal zijn geen andere vertalingen beschikbaar, sorry.","SUBTITLES_CHANGE_ACIVE":"Momenteel is ondertiteling #{{subtitlesDialog.activeIdx + 1}} actief. Klik op \\"Verder\\" om ondertiteling #{{subtitlesDialog.pickedIdx + 1}} te gebruiken.","SUBTITLES_OR":"Als alternatief,","SUBTITLES_ADJUST_DELAY":"Ondertitelingsvertraging aanpassen:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Of gebruik de <span>G</span> / <span>H</span> toetsen om de ondertitels tijdens het afspelen aan te passen.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: je kan de toetsen <span>G</span> / <span>H</span> gebruiken tijdens het afspelen om aan te passen.","SUBTITLES_DELAY":"Ondertitelvertraging:","SUBTITLES_LOADING":"Ondertiteling laden...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Seizoen","EPISODE":"Aflevering","SPECIAL":"Special","SORT":"sorteer op","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"recent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"beoordeling","SORT_WATCHED":"gezien","SORT_YEAR":"jaar","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Nieuw voor jou","New Episodes":"Nieuwe afleveringen","New Videos":"Nieuwe video\'s","Recommendations":"Aanbevelingen","LIBRARY_RESUME":"hervat","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"negeer","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Uitgelicht","DISCOVER_TOP":"Populair","DISCOVER_OSCAR":"Oscars","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"Deze addon stuurde niks terug.","DISCOVER_ADULT_WARNING":"Deze inhoud is enkel toegankelijk voor volwassenen. Ben je 18+?","DISCOVER_NOADDON_WARNING":"Waarschuwing: geen Stremio addon actief voor dit type. Opgeslagen items worden weergegeven, hier komen geen updates.","DISCOVER_LOAD_ERR":"De inhoud werd niet geladen, er deed zich een fout voor.","DISCOVER_ADDON_UNINSTALLED":"Deze inhoud is niet meer beschikbaar, Het is mogelijk dat de addon is gedeinstalleerd.","UNINSTALL_THIS_ADDON":"Deinstalleer deze addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Ontvang notificaties bij nieuwe afleveringen","DETAIL_RECEIVE_NOTIF_VIDEOS":"Ontvang notificaties bij nieuwe video\'s","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Herstart Stremio","UPGRADE":"Updaten naar de laatste Stremio versie","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonieme gebruiker","DONT_HAVE_ACC":"Heeft u nog geen account?","HAVE_ACC":"Heeft u al een account?","PASSWORD":"Wachtwoord","PASSWORD_CONFIRM":"Bevestig wachtwoord","EMAIL":"E-mail","FB_LOGIN":"Inloggen met Facebook","FB_NOTHINGSHARED":"Niks wordt gedeeld zonder uw toestemming","FB_NOPOST":"Niks wordt gepost zonder uw toestemming","OR":"of","I_ACCEPT":"Ik accepteer de","I_ACCEPT_BY_CLICKING":"Door te klikken op de bovenstaande knop ga ik akkoord met de","TOS":"Algemene Voorwaarden","MUST_ACCEPT_TERMS":"U moet akkoord gaan met de voorwaarden","PASSWORDS_NOMATCH":"Wachtwoorden komen niet overeen","SIGN_UP":"Inschrijven","SIGN_UP_EMAIL":"Aanmelden met e-mail","CLICK_TO_SIGN_UP":"Klikt hier om aan te melden.","LOG_IN":"Inloggen","LOG_OUT":"Uitloggen","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Gast-login","GUEST_LOGIN_NOTICE":"Gast-login is niet aangewezen. Een vaste login gebruiken zorgt ervoor dat Stremio je bibliotheek kan synchroniseren en je notificaties krijgt over je favoriete series/kanalen. Ben je zeker dat je wilt doorgaan?","GUEST_LOGIN_NOTICE_2":"Gast-login is niet aangewezen - je zal geen gesynchroniseerd bibliotheek hebben of dashboard notificaties krijgen, beiden belangrijke Stremio functies. Ben je zeker dat je wilt doorgaan?","CLICK_HERE":"Klik hier","WRONG_PASSWORD":"Verkeerd wachtwoord. In het geval dat u uw wachtwoord vergeten, ","SET_A_PASS":"Stel een wachtwoord in","RESET_PASSWORD":"Veranderd wachtwoord","FORGOT_PASSWORD":"Wachtwoord vergeten?","EMAIL_USED_WITH_FB":"Deze e-mail is al gebruikt met een Facebook login.","INVALID_EMAIL":"Voer een geldig e-mailadres in","INVALID_PASSWORD":"Voer een geldig wachtwoord in","CONN_ERR":"Connectiefout - probeer het later opnieuw.\\n\\nAls dit probleem zich aanhoudt, schakel dan uw firewall en/of anti-virus software uit (vooral Bitdefender).","IMPORT_FROM_GUEST":"Importeer bibliotheek van uw gast acccount","RECEIVE_UPDATES_EMAIL":"Ontvang updates via e-mail van Stremio","LOGIN_FAILED":"Login mislukt.","SIGNUP_FAILED":"Aanmelden mislukt.","SEARCH_FAILED":"Zoekopdracht mislukt","EMAIL_USED":"Dit e-mail is al in gebruik.","WAITING_FB_LOGIN":"Inloggen met Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Geef uw voorkeuren aan","INTRO_TASTE_LONG":"Vertel ons wat je wilt bekijken","INTRO_TASTE_PICK":"Kies {{interestsRemaining}} interesses","INTRO_TASTE_PICK_MORE":"Kies {{interestsRemaining}} meer interesses","INTRO_TASTE_HELP_US":"Help ons je beter te leren kennen.","INTRO_TASTE_CHOOSE_THESE":"Kies enkel van deze:","INTRO_TASTE_CHOOSE_MIN":"Kies minimum 3 categorieën","INTRO_TASTE_CHOOSE_MIN_ERR":"Je moet minimum 3 categorieën kiezen!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sport","INTRO_TASTE_FOOD_HEALTH":"Eten & Gezondheid","INTRO_TASTE_BEAUTY_FASHION":"Schoonheid & Mode","INTRO_TASTE_NEWS":"Nieuws","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Wetenschap & Onderwijs","INTRO_TASTE_MUSIC":"Muziek","INTRO_TASTE_TRAVEL":"Reizen","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Komedie","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"De geselecteerde addon is niet ondersteund op dit platform.","ADDON_DISCLAIMER":"Het gebruiken van addons van derden is altijd onderworpen aan uw eigen verantwoordelijkheid en het recht van de regio waar u zich bevindt.","ADDON_ACTIVATE":"Deze addon activeren?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Toevoegen","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Wat is er nieuw?","BUTTON_CONTINUE":"Doorgaan","BUTTON_ACTIVATE":"Activeer","BUTTON_ACTIVATED":"Geactiveerd","BUTTON_CANCEL":"Annuleer","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Negeer alles","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Uw bibliotheek ziet er leeg uit. Ontdek hoe nuttig het is :) ","HOW_START":"Hier is hoe je kunt beginnen:","LIB_EMPTY_CAL":"De agenda toont series in je bibliotheek.","HOW_START_CAL":"Hier is hoe je series kan toevoegen:","LIB_EMPTY_BOARD":"Het dashboard toont notificaties & aanbevelingen gebaseerd op uw bibliotheek.","HOW_START_BOARD_WAIT":"Voeg een paar series of kanalen toe aan uw bibliotheek en geef ons een paar minuten verwerktijd :)","HOW_START_BOARD":"Zo voeg je series & films toe:","IMPORT_FB":"Importeer dingen die je leuk vind van <span>Facebook</span>","IMPORT_TRAKT":"Importeer je media bibliotheek van <span>Trakt</span>","IMPORT_DISCOVER":"<span>Ontdek</span> interessante dingen","IMPORT_DISK":"Importeer films of series vanaf je <span>lokale schijf</span>","PLEASE_CREATE_ACC":"<u>Registreer een account</u> om van de bibliotheek & het dashboard gebruik te maken.","IMPORT_DISCOVER_SIGNUP":"Registreer en vind interessante dingen van <span>Ontdekken</span>","IMPORT_DISK_SIGNUP":"Registreer en importeer films en series van je <span>lokale schijf</span>","LIB_EMPTY_CLOUD":"Cloud bibliotheek","LIB_EMPTY_CLOUD_DESC":"Persoonlijke cloud bibliotheek gesynchroniseerd op alle toestellen","LIB_EMPTY_EARLY":"Vroege vogel","LIB_EMPTY_EARLY_DESC":"Ontvang notificaties bij nieuwe afleveringen","LIB_EMPTY_PERSONAL":"Persoonlijk","LIB_EMPTY_PERSONAL_DESC":"Ontvang persoonlijke aanbevelingen","LIB_EMPTY_CALENDAR_DESC":"Plan uw persoonlijke kijkkalender","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Registreer om deze allemaal te ontvangen","LIB_EMPTY_OTHER":"Registreer om Agenda en andere coole functies in te schakelen","CALENDAR_ADDED":"De Stremio-kalender is toegevoegd aan uw standaard desktopkalender.","CALENDAR_ADDED_MSG":"Indien dit niet werkt, voeg deze URL dan handmatig toe aan uw agendatoepassing","TRAKT_EXPIRED":"Trakt-authenticatie is verlopen, ga naar Instellingen en verifieer opnieuw","TRAKT_REQUIRES_LOGIN":"Trakt foutmelding","TRAKT_REQUIRES_LOGIN_MSG":"U moet inloggen","SETTINGS_LABEL":"Instellingen","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Openen bij opstarten","SETTINGS_VLC_DEFAULT":"Afspelen met VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Automatisch de volgende aflevering afspelen","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Het vensterformaat automatisch aanpassen voor afspelen","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Gebruik altijd de laatste Beta","SETTINGS_IMPORT_FB":"Importeren van Facebook","SETTINGS_IMPORT_DISK":"Importeren van lokale schijf","SETTINGS_IMPORT_TRAKT":"Importeren van Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Door hardware versnelde decodering","SETTINGS_BACKGROUND":"Achtergrondweergave","SETTINGS_SUBSCRIBE_CALENDAR":"Abonneer op agenda","SETTINGS_REQ_EXPORT":"Vraag gegevens export aan","SETTINGS_ACC_DELETE":"Verzoek om accountverwijdering","SETTINGS_CHANGE_PASSWORD":"Wachtwoord veranderen","SETTINGS_TOS":"Algemene voorwaarden","SETTINGS_SUPPORT":"Contact opnemen met ondersteuning","SETTING_LANGUAGE":"Taal","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Uitloggen van Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"QR code scanne om afstandsbediening te openen","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notificaties","SETTINGS_DATA_SAVER":"Gegevensbesparing","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"standaard ondertiteling","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"versie","SETTINGS_MPV_WINDOW":"Start videospeler in apart scherm (geadvanceerd)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Afsluiten","CONNECTED":"Verbonden","AUTHENTICATE":"Authenticeren","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Selecteer schijf voor caching","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Magnet link verwerken","January":"januari","February":"februari","March":"maart","April":"april","May":"mei","June":"juni","July":"juli","August":"augustus","September":"september","October":"oktober","November":"november","December":"december","Monday":"maandag","Tuesday":"dinsdag","Wednesday":"woensdag","Thursday":"donderdag","Friday":"vrijdag","Saturday":"zaterdag","Sunday":"zondag","Action":"Actie","Comedy":"Komedie","War":"Oorlog","Family":"Familie","Animation":"Animatie","Adventure":"Avontuur","Fantasy":"Fantasie","Crime":"Misdaad","Mystery":"Mysterie","Romance":"Romantiek","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Muziek","Biography":"Biografie","Documentary":"Documentaire","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-noir","News":"Nieuws","History":"Geschiedenis","Game-Show":"Spelprogramma","Reality-TV":"Reality-TV","Talk-Show":"Talkshow","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"Van TV","Lifestyle":"Lifestyle","Science & Education":"Wetenschap & Onderwijs","Cooking & Health":"Koken & Gezondheid","Beauty & Fashion":"Schoonheid & Mode","Sports":"Sport","News & Politics":"Nieuws & Politiek","How-to & DIY":"How-to & Klussen","Tech":"Technologie","Automotive":"Automotive","Causes & Non-Profits":"Goede doelen & Non-Profits","Movies":"Films","Uk Live Tv":"UK Live TV","Fashion":"Mode","Business News Radio":"Business News Radio","Business Tv":"Business","Cars & Auto":"Auto\'s","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"Nieuws","Food And Wine":"Eten & Wijn","Latino Tv":"Latino TV","Shopping Tv":"Shopping","Religion":"Godsdienst","Kids":"Kinderen","Body & Soul":"Lichaam & ziel","Education":"Onderwijs","Indian Tv":"Indische TV","Extreme Sports":"Extreme sporten","Middle Eastern Tv":"Midden-Oosten","Celebrity Tv":"Celebrity","Science Tv":"Wetenschap","Bikini babe":"Bikini babe","Outdoors":"Buitenleven","German Tv":"Duitse TV","French Tv":"Franse TV","Italian Tv":"Italiaanse TV","Gamer Tv":"Game","Travel":"Reizen","Asian Tv":"Aziatische TV","Entertainment":"Entertainment","News Radio":"Nieuws Radio","Music Radio":"Muziek Radio","Language Learning":"Taal leren","Science Radio":"Wetenschap Radio","Tech Radio":"Technologie Radio","Science & Technology Vod":"Wetenschap & Technologie Vod","new video":"nieuwe video","new episode":"nieuwe aflevering","new movie":"nieuwe film","recommended":"aanbevolen","we recommend":"onze aanbeveling","offer of the day":"aanbieding van de dag","news":"nieuws","music video":"muziekvideo","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Notificaties wissen","CTX_DISMISS_ALL":"Verwijder alles","CTX_SHARE":"Delen","CTX_COPY_SHARE_LINK":"Kopieer deelbare link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Kijken","CTX_PLAY":"Speel","CTX_PLAY_IN":"Speel in","CTX_PLAY_ON":"Speel op","CTX_WATCH_ON":"Kijk op","CTX_WATCH":"Kijken","CTX_WATCHED":"Gezien","CTX_WATCH_BEGINNING":"Vanaf het begin kijken","CTX_WATCH_MOBILE":"Op een mobiel apparaat kijken","CTX_REWIND":"Spoel terug naar begin","CTX_MARK_WATCHED":"Markeren als gezien","CTX_MARK_NON_WATCHED":"Markeren als niet gezien","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Markeer de rest als gezien","CTX_UNMARK_REST":"Markeer de rest als niet gezien","CTX_RECEIVE_NEW_NOTIF":"Nieuwe notificaties ontvangen","CTX_REMOVE_CACHE":"Van cache verwijderen","CTX_REMOVE_CACHE_EP":"Aflevering uit cache verwijderen","CTX_OPEN_CONTAINING":"Bijhorende map openen","CTX_REMOVE":"Verwijderen van bibliotheek","CTX_AVAILABLE_OFFLINE":"Offline beschikbaar","CTX_PAUSED":"Gepauzeerd","CTX_ALWAYS_ON_TOP":"Altijd op voorgrond","CTX_FULLSCREEN":"Volledig scherm","CTX_WRONG_SUBS":"Verkeerde ondertiteling?","CTX_REPORT_ISSUES":"Fout rapporteren","CTX_COPY":"Kopieren","CTX_PASTE":"Plakken","CTX_CLEAR":"Legen","CTX_CLEAR_RECENT_SEARCHES":"Recente zoekopdrachten verwijderen","HELLO_THERE":"Hallo daar","HOPE_YOU_ENJOY":"Wij hopen dat je Stremio leuk vindt en het al één van je favoriete programma\'s is!","WHO_ARE_WE":"Wie zijn wij? Wij zijn het team achter Stremio - twee jongens die de laatste 3 jaar erg hard hebben gewerkt, met één doel voor ogen - dit product beter en beter maken.","SUPPORT_US":"Als je Stremio met plezier gebruikt en/of het waardevol voor je is - steun ons!","SPREAD_THE_WORD":"Vertel je vrienden en de wereld over Stremio","MORE_PEOPLE":"Hoe meer mensen Stremio gebruiken, hoe beter het wordt!","SEND_A_LINK":"Of stuur een link naar onze website","TIP_LOCALFILES":"Tip: je kan lokale videobestanden in Stremio slepen om af te spelen","ADDON_MY":"Mijn Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Officiële Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Zoek addons","ADDON_INSTALL":"Installeer","ADDON_CONFIGURE":"Configureer","ADDON_UNINSTALL":"Deinstalleren","ADDON_UPGRADE":"Upgraden","ADDON_INSTALLED":"Geïnstalleerd","ADDON_INSTALLED_MSG":"Addon geinstalleerd!","ADDON_UPGRADED_MSG":"Addon ge-upgrade!","ADDON_UNKNOWN":"Onbekend","ADDON_ERR":"Addon installatie fout!","ADDON_DISCONNECTED":"Verbinding verbroken","ADDON_APP_MISSING":"De app voor deze bron is niet geinstalleerd. Wil je deze nu installeren?","ADDON_APP_INSTALL":"Installeer Nu","ADDON_PAGE":"Addon Pagina","ADDON_TOP_CONTENT":"Beste van deze Addon","ADDON_PROVIDES":"bied aan","ADDON_WATCH":"Kijk #{types} nu!","ADDON_WATCH_FREE":"Kijk #{types} nu GRATIS!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"Meer #{types} in Ontdekken","ADDON_PROVIDES_STREAMS":"Kijk #{types}","ADDON_PROVIDES_STREAMS_FREE":"Kijk #{types} GRATIS","ADDON_PROVIDES_SUBTITLES":"Ondertiteling voor #{types}","ADDON_CANTDETECT":"We konden geen lopende instantie van Stremio detecteren, hierdoor konden we niet detecteren welke addons er zijn geinstalleerd.","ERR_NO_META":"Geen informatie over dit ","ERR_GETTING_META":"Fout tijdens het verkrijgen van informatie.","ERR_CANT_PARSE_MAGNET":"Kan magnet link niet verwerken","ERR_NO_MAGNET_INFOHASH":"Geen geldige infohash voor deze magnet link","ERR_NO_FILE_PATH":"Niet mogelijk een verzoek te versturen zonder Unable to send request zonder pad naar bestand","ERR_NO_TORRENT":"Geen torrent gevonden","ERR_NO_SUPPORTERD_FILES":"Geen ondersteunde bestanden gevonden","ERR_OPENING_FILES":"Kon externe bestanden niet openen","ERR_INVALID_LINK":"Ongeldige link","ERR_REGISTERED_ONLY":"Deze optie is alleen beschikbaar voor geregisteerde gebruikers.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Doorgaan met kijken","BOARD_EXPLANATION_RECOMMENDATIONS":"Films speciaal voor jou gekozen.<br />Deze film is een voorbeeld aanbeveling.","BOARD_EXPLANATION_EPISODES":"Nieuwe afleveringen van uw favoriete series komen hier.<br />Voeg series die je volgt toe aan je bibliotheek.","BOARD_EXPLANATION_VIDEOS":"Nieuwe afleveringen van uw favoriete kanalen komen hier.<br />Voeg Youtube Kanalen die je volgt toe aan je bibliotheek","WEBSITE_SLOGAN_WATCH":"Kijk direct","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Kijk van","WEBSITE_DOWNLOAD":"Download nu","WEBSITE_DOWNLOAD_FOR":"Download nu voor","WEBSITE_IS_DESKTOP":"Stremio is een desktop applicatie, open deze pagina op uw PC om Stremio te downloaden","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Functies","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technologie","WEBSITE_PAGE_CREATE_ADDON":"Maak een Addon","WEBSITE_PAGE_CONTACTS":"Contacten","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Films","WEBSITE_TYPE_series_PL":"Serie\'s","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Kanalen","WEBSITE_STREMIO_WHAT_IS":"Stremio is een app dat je helpt met het organizeren en onmiddellijk bekijken van je favoriete videos, filmss, TV series en TV-kanalen.","WEBSITE_FEATURES_WATCH":"Kijk direct in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Klik en bekijk je favoriete films, TV Shows, videos en TV-kanalen.","WEBSITE_FEATURES_SUBS":"Automatische Ondertiteling","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio kiest automatisch gesynchroniseerde ondertiteling voor jouw taal.","WEBSITE_FEATURES_SUBS_LABEL":"Jouw zet, baas.","WEBSITE_FEATURES_CAST":"Speel op TV en mobiele apparaten","WEBSITE_FEATURES_CAST_DETAIL":"Cast naar AppleTV, Chromecast, Smart TV (DLNA/UPnP) en mobiele apparaten.","WEBSITE_LIB":"Geniet van je persoonlijke bibliotheek gesynchroniseerd naar al je apparaten","WEBSITE_LIB_COLLECT":"Collecteer van Stremio","WEBSITE_LIB_IMPORT":"Importeer van Facebook","WEBSITE_LIB_LOCAL":"Voeg toe van je lokale schijf","WEBSITE_BOARD":"Het dashboard- Je one-stop plaats voor Notificaties en Aanbevelingen","WEBSITE_BOARD_RECOMMEND":"Aanbevolen TV Show","WEBSITE_BOARD_TRENDING":"Trending Film","WEBSITE_BOARD_NEW":"Nieuwe Video","WEBSITE_BOARD_EPISODE":"Nieuwe Aflevering","WEBSITE_BOARD_1":"Zoek je iets interessants? Krijg aanbevelingen gebaseerd op jouw smaak!","WEBSITE_BOARD_2":"krijg een notificatie wanneer een nieuwe aflevering van je favoriete TV show of Youtube kanaal uit is!","WEBSITE_BOARD_YOUTUBE":"Nieuwe video\'s van YouTube kanalen","WEBSITE_BOARD_EPISODES":"Nieuwe afleveringen van series die je volgd","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We houden van technologie, we houden van wetenschap!\\nStremio gebruikt de volgende open-source technologieën:","WEBSITE_TECH_WCJS":"WebChimera.js laat Stremio toe om alle videoformaten af te spelen.","WEBSITE_TECH_WCJS_EXTRA":"We dragen bij aan het kernproject","WEBSITE_TECH_ELECTRON":"Electron zorgt voor de innovatieve basis waarop Stremio gebouwd is.","WEBSITE_TECH_ELECTRON_EXTRA":"We dragen bij aan het project","WEBSITE_TECH_LINVODB":"Een database technologie dat je data organiseert en beschikbaar maakt waar en wanneer je ook inlogt.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technologie","WEBSITE_CREATE_ADDON":"Maak je eigen addon","WEBSITE_CREATE_ADDON_DETAIL":"Heb jij een videoservice? We helpen je graag voordeel te halen uit Stremio door een Addon voor je te maken.","WEBSITE_CREATE_ADDON_BENEFITS":"Voordelen aan het maken van een Addon voor Stremio","WEBSITE_P2P_BEAUTY":"De schoonheid van Peer-to-Peer streaming","WEBSITE_P2P_1":"Betrouwbare en betaalbare full HD / 4K-video op aanvraag of live streaming","WEBSITE_P2P_2":"Distributieplatform met een geweldige gebruikerservaring","WEBSITE_P2P_3":"We maken een addon naar jouw noden en wensen","WEBSITE_P2P_CONTACT":"Geïnteresseerd? <a href=\'mailto:office@stremio.com\'>Contacteer ons</a> zeker.","WEBSITE_P2P_CONTACT_EXTRA":"We helpen je graag om je content te integreren in Stremio!","WEBSITE_P2P":"Af en toe komt er een technologie die de naam van het spel verandert. We hebben veel tijd en moeite geïnvesteerd in het bouwen van onze Peer-to-Peer (P2P) videostreamingmotor die geweldige prestaties en veelzijdigheid biedt voor elke toepassing. \\nNeem contact met ons op voor DRM-compatibele P2P-video op aanvraag of live streaming.","WEBSITE_THOUGHTS":"Gedachten die we willen delen:","WEBSITE_SPREAD":"Vertel iedereen over Stremio:","WEBSITE_CONTACT":"Wil je ons contacteren, doe gerust via","WEBSITE_OPENSOURCE":"Ga voor onze open source-projecten naar onze","WEBSITE_BITCOIN":"Doneer bitcoin:","WEBSITE_FAQ":"Veel Gestelde vragen","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Vragen","WEBSITE_TOS":"Gebruiksvoorwaarden","WEBSITE_LEGAL":"Wettelijk","WEBSITE_PAGE_ABOUT":"Over","WEBSITE_PAGE_BECOME_PARTNER":"Word een partner","WEBSITE_ALL_YOU_CAN_WATCH":"Vrijheid om te kijken \\nNaar alles wat je wilt.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Wat is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is een one-stop-hub voor het verzamelen van video-inhoud. Ontdek, organiseer en bekijk video van allerlei soorten bronnen op elk apparaat dat u bezit.","WEBSITE_WHAT_IS_STREMIO_P2":"Films, TV Shows, series, live TV of webkanalen zoals YouTube en Twitch.tv - je kunt dit allemaal vinden op Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is een modern mediacentrum dat een alles-in-een-oplossing is voor uw video-entertainment. U ontdekt, bekijkt en organiseert videocontent via eenvoudig te installeren addons..","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Films, TV Shows, live TV of webkanalen - je vindt het allemaal op Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Geniet op al uw media-apparaten","WEBSITE_DEVICES_COLLECT":"Verzamel van Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importeer van Facebook","WEBSITE_DEVICES_LOCAL":"Toevoegen van lokale schijf","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"Zoals gezien op","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Over ons","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Download\'s","WEBSITE_MORE":"Meer","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your E-mail","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid e-mail!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Doorgaan","SLOW_LOADING":"TRAAG AAN HET LADEN?","I_GIVE_UP":"IK GEEF OP","LEARN_MORE":"Meer info","POOR_SOURCE":"Deze bron is slecht beschikbaar of je internetverbinding is niet snel genoeg","PICK_CATEGORIES_ERR":"Je moet minimaal 3 categorieën kiezen","ADJUST_TIMING":"Pas de timing aan met ","ADJUST_SIZE":"Pas de grootte aan met ","SEARCH_ANYTHING":"Je kan dit alles zoeken...","ALL_CATEGORIES":"Alles","SEARCH_CATEGORIES":"Films, Series, YouTube & TV","SEARCH_PERSONS":"Acteurs, Regisseurs & Schrijvers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDb / TVDB links","WATCHED":"Gezien","SHOW_LESS":"Toon minder","LAST_SEARCHES":"Laatste zoekopdrachten","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Afstandsbediening kon niet worden geladen","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Gebruik data","WARNING":"Waarschuwing","MORE_INFO":"Meer Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Laden ...","STREMIO_TV_BACK_TO_LANGUAGES":"Terug naar talen","STREMIO_TV_REMOTE":"Afstandsbediening","STREMIO_TV_GO_TO":"Ga naar:","STREMIO_TV_OR_SCAN":"of scannen:","STREMIO_TV_ADDON_INSTRUCTIONS":"Volg de instructies om je addon keuze te installeren.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Verder kijken","STREMIO_TV_LOADING_BACKGROUND":"Achtergrond laden","STREMIO_TV_CHECKING_AUTHENTICATION":"Authenticeren","STREMIO_TV_LOADING_BOARD":"Dashboard laden","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio team","STREMIO_TV_REMOTE_INSTRUCTIONS":"om de Web Afstandsbediening met je smartphone / tablet / desktop te gebruiken:","STREMIO_TV_WIFI_SETUP":"Wifi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio-circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connecteer met:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremio-circle","STREMIO_TV_WIFI_DETAILS_5":"Open een webbrowser met de link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Verander apparaat","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Timing aanpassen","REMOTE_ADJUST_SIZE":"Grootte aanpassen","REMOTE_COULD_NOT_BE_LOADED":"Web Afstandsbediening kon niet worden geladen","REMOTE_RETRY":"Opnieuw proberen","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"Wat is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an e-mail to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Ga je een addon maken voor X?","FAQ_08_P1":"Dat is mogelijk.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Gebruikt Stremio het BitTorrent protocol?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie films met Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"Hoe kan ik een addon maken?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},8159:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serie","TYPE_tv":"TV kanal","TYPE_channel":"Kanal","TYPE_other":"Other","TYPE_movie_PL":"Filmar","TYPE_series_PL":"Seriar","TYPE_tv_PL":"TV kanalar","TYPE_channel_PL":"Kanalar","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Tilbake","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Oppdag","Board":"Board","Library":"Bibliotek","My Library":"My Library","Calendar":"Kalender","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"Søk mellom","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Legg til i bibliotek","REMOVE_FROM_LIB":"Fjern frå bibliotek","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Trailer","WATCH_TRAILER":"Sjå Trailer","WATCH_NOW":"Sjå No","SHOW":"Vis","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb Rangering","YEAR":"År","DIRECTOR":"Regissør","WRITER":"Forfattar","LEAD_ACTORS":"Hovudskodespelarar","CAST":"Skodespelarar","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Utgjeven","SEASONS":"Sesongar","GENRE":"Sjanger","CATALOG":"Catalog","SUMMARY":"Samandrag","SHOW_MORE":"Show More","SIMILAR":"Liknade","UPCOMING":"Kjem","ENDED":"Enda","DURATION":"Lengd","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"search videos","SEARCH_PLACEHOLDER":"search or paste magnet link","ADDON":"Utviding","ADDONS":"Utvidinger","OFFICIAL":"Offisielle","ADDONS_OFFICIAL":"Offisielle Stremio Utvidinger","ADDONS_POPULAR":"Populært i området ditt","ADDON_FREE":"Gratis","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Abonnering","ADDON_STREAM_GEORESTRICTED":"not available in your area","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Tilgjengelege Streams","NO_STREAM":"Ingen streams tilgjengelege","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Show all addons »","ADDON_CATALOGUE_MORE":"More addons »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Protected addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Filmen er framleis på kino","WATCH_IN_CINEMA":"sjå han på din lokale kino","IN_THEATER":"In cinema","GET_TICKETS":"Get tickets","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Denne kanalen er ikkje ferdig enda.<br>Ver vennleg og kom tilbake om nokon få minutt.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Legg han til i ditt bibliotek for å bli varsla når han blir tilgjengeleg.","GET_NOTIFIED_WHEN_AVAILABLE":"Du vil bli varsla med ein gong han er tilgjengeleg.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Streamer frå","CASTING_TO":"Caster til","NETWORK_STATUS":"Nettverks status","STREAM_SPEED":"Fart på streamen:","STREAM_BUFFERED":"Buffret:","PEERS_INFO":"Informasjon om peers","PEERS_ACTIVE":"Aktive:","PEERS_CONNECTED":"Tilkoblet:","PEERS_WAITING":"Ventar:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"Lastar...","PLAYING_LOCAL":"Spelar frå lokal fil","PLAYING_CACHE":"Spelar frå cache","WRONG_SUBS":"Feil undertekstar?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Vel ein eining å streame frå","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Telefon / Nettbrett","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Endre undertekstar for ","SUBTITLES_CHANGE_NONE":"Det fins ingen andre undertekstar for dette språket, beklagar.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alteratively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sesong","EPISODE":"Episode","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"nyleg","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rangering","SORT_WATCHED":"sett","SORT_YEAR":"år","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"resume","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Utvald","DISCOVER_TOP":"Topp","DISCOVER_OSCAR":"Oscar vinnarar","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Åtvaring: ingen Stremio utviding aktiv for denne typen. Visar lagra element, ingenting vil oppdatere.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Start på nytt no!","UPGRADE":"Oppdater til den nyaste Stremio versjonen","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Logg på med Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"eller","I_ACCEPT":"Eg godtek ","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Vilkåra og føresetnadene","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Passorda er ikkje like","SIGN_UP":"Registrer","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Logg på","LOG_OUT":"Logg ut","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Gjestepålogging","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"Klikk her","WRONG_PASSWORD":"Feil passord. I tilfelle du har gløymd passordet, ","SET_A_PASS":"lag eit passord","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"Denne eposten er i bruk av ein Facebook pålogging.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Bruk av tredjeparts-utvidinger vil alltid vere ditt eige ansvar med omsyn til den gjeldane lova der du oppheld deg.","ADDON_ACTIVATE":"Aktivere denne utvidingen?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Kva er nytt?","BUTTON_CONTINUE":"Hald fram","BUTTON_ACTIVATE":"Aktiver","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Avbryt","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Biblioteket ditt ser tomt ut. Finn ut kvar nyttig det er :) ","HOW_START":"Kom i gang:","LIB_EMPTY_CAL":"Kalenderen din visar seriar i biblioteket ditt.","HOW_START_CAL":"Her er korleis du kan leggje til seriar:","LIB_EMPTY_BOARD":"Board viser varslar & anbefalingar relatert til biblioteket ditt.","HOW_START_BOARD_WAIT":"Legg til nokon seriar eller kanalar i biblioteket ditt og gi oss nokon minutt til å behandle dei :)","HOW_START_BOARD":"Her er korleis du kan leggje til seriar & filmar til det:","IMPORT_FB":"Importer ting du likar frå <span>Facebook</span>","IMPORT_TRAKT":"Import your media library from <span>Trakt</span>","IMPORT_DISCOVER":"Finn interessante ting frå <span>Oppdag</span>","IMPORT_DISK":"Importer filmar eller seriar frå din <span>lokale Harddisk</span>","PLEASE_CREATE_ACC":"Please <u>create an account</u> to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from <span>Discover</span>","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your <span>local disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Køyr ved oppstart","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Importer frå Facebook","SETTINGS_IMPORT_DISK":"Importer frå lokal disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Abonner på ein kalender","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Endre passord","SETTINGS_TOS":"Vilkåra for tjenesta","SETTINGS_SUPPORT":"Kontakt support","SETTING_LANGUAGE":"Språk","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Avslutt","CONNECTED":"Connected","AUTHENTICATE":"Verifiser","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Velj caching eining","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januar","February":"Februar","March":"Mars","April":"April","May":"Mai","June":"Juni","July":"Juli","August":"August","September":"September","October":"Oktober","November":"November","December":"Desember","Monday":"Måndag","Tuesday":"Tysdag","Wednesday":"Onsdag","Thursday":"Torsdag","Friday":"Fredag","Saturday":"Laurdag","Sunday":"Søndag","Action":"Action","Comedy":"Komedie","War":"Krig","Family":"Familie","Animation":"Animasjon","Adventure":"Eventyr","Fantasy":"Fantasy","Crime":"Krim","Mystery":"Mysterium","Romance":"Romantikk","Drama":"Drama","Horror":"Grysjar","Thriller":"Spenning","Sci-Fi":"Sci-Fi","Music":"Musikk","Biography":"Biografi","Documentary":"Dokumentar","Sport":"Sport","Musical":"Musikal","Western":"Western","Film-Noir":"Film-Noir","News":"Nyheiter","History":"Historie","Game-Show":"Gameshow","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Underhalding","Gaming":"Gaming","From TV":"Frå TV","Lifestyle":"Livsstil","Science & Education":"Vitskap & Utdanning","Cooking & Health":"Matlaging & Helse","Beauty & Fashion":"Venleik & Mote","Sports":"Sport","News & Politics":"Nyheiter & Politikk","How-to & DIY":"Gjør det sjølv","Tech":"Teknologi","Automotive":"Bilbransjen","Causes & Non-Profits":"Saker & ideelle organisasjonar","Movies":"Filmar","Uk Live Tv":"UK Direkte TV","Fashion":"Mote","Business News Radio":"Business Nyheitsradio","Business Tv":"BusinessTV","Cars & Auto":"Bilar og Auto","Comedy Radio":"Komedieradio","Lifestyle Radio":"Livsstilsradio","News Tv":"NyheitsTV","Food And Wine":"Mat og Vin","Latino Tv":"Latino TV","Shopping Tv":"ShoppingTV","Religion":"Religion","Kids":"Barn","Body & Soul":"Kropp og Sjel","Education":"Utdanning","Indian Tv":"Indisk TV","Extreme Sports":"Ekstremsport","Middle Eastern Tv":"TV frå Midtøsten","Celebrity Tv":"KjendisTV","Science Tv":"VitskapsTV","Bikini babe":"Bikini babe","Outdoors":"Utandørs","German Tv":"Tysk TV","French Tv":"Fransk TV","Italian Tv":"Italiensk TV","Gamer Tv":"SpelTV","Travel":"ReiseTV","Asian Tv":"Asiatisk TV","Entertainment":"Underhalding","News Radio":"Nyheitsradio","Music Radio":"Musikkradio","Language Learning":"Språklæring","Science Radio":"Vitskapsradio","Tech Radio":"Teknologiradio","Science & Technology Vod":"Vitskap -og Teknologi VOD","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years, with a single goal - to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - support us!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"provides","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},5517:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serial","TYPE_tv":"Program telewizyjny","TYPE_channel":"Kanał","TYPE_other":"Inne","TYPE_movie_PL":"Filmy","TYPE_series_PL":"Seriale","TYPE_tv_PL":"Programy telewizyjne","TYPE_channel_PL":"Kanały","TYPE_other_PL":"Inne","TYPE_ALL":"All","VIDEO":"Wideo","BACK":"Wstecz","MORE":"Więcej","DONE":"Gotowe","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Tryb rzutowania","CASTING_MODE_HLSV2":"Domyślny","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Bez transkodowania","Discover":"Odkrywaj","Board":"Tablica","Library":"Biblioteka","My Library":"Moja biblioteka","Calendar":"Kalendarz","NOTIFICATION_ONLINE":"Jesteś teraz online","NOTIFICATION_OFFLINE":"Jesteś obecnie offline","INTERNET_CONNECTION":"Połączenie internetowe","STORAGE_FULL_TITLE":"Ostrzeżenie: pamięć pełna!","STORAGE_FULL_TEXT":"Stremio nie jest w stanie zapisać twoich ustawień lub danych logowania. Spróbuj ponownie uruchomić, lub ponownie zainstalować Stremio.","SEARCH":"szukaj","SEARCH_NO_RESULTS":"Nie znaleziono żadnych wyników","SEARCH_EXPLANATION_CONTENT":"Szukaj filmów, seriali, YouTube i kanałów telewizyjnych","SEARCH_EXPLANATION_PEOPLE":"Szukaj aktorów, reżyserów i scenarzystów","SEARCH_PASTE_LINKS":"Wklej adresy HTTP i Magnet","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Dodaj do biblioteki","REMOVE_FROM_LIB":"Usuń z biblioteki","ADDED_TO_LIB":"Dodano do biblioteki","REMOVED_FROM_LIB":"Usunięto z biblioteki","TRAILER":"Zwiastun","WATCH_TRAILER":"Zobacz zwiastun","WATCH_NOW":"Oglądaj","SHOW":"Pokaż","SHOW_MOVIE":"Pokaż film","WATCH_RANDOM":"Obejrzyj losowy","IMDB_RATING":"Ocena IMDb","YEAR":"Rok","DIRECTOR":"Reżyser","WRITER":"Scenarzysta","LEAD_ACTORS":"Główni aktorzy","CAST":"Obsada","CREW":"Ekipa","SHOW_MORE_CAST":"Pokaż więcej »","AIRED":"Wyemitowany","SEASONS":"Sezony","GENRE":"Gatunek","CATALOG":"Katalog","SUMMARY":"Podsumowanie","SHOW_MORE":"Pokaż więcej","SIMILAR":"Podobne","UPCOMING":"Nadchodzące","ENDED":"Zakończony","DURATION":"Czas trwania","FEATURED":"Wyróżnione","METADATA":"Metadane","CATEGORY":"kategoria","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"szukaj filmy","SEARCH_PLACEHOLDER":"szukaj lub wklej URL","ADDON":"dodatek","ADDONS":"Dodatki","OFFICIAL":"oficjalny","ADDONS_OFFICIAL":"Oficjalne dodatki Stremio","ADDONS_POPULAR":"Popularne w twojej okolicy","ADDON_FREE":"darmowe","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"subskrypcja","ADDON_STREAM_GEORESTRICTED":"niedostępne w twoim regionie","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Lokalny plik","SHARE_ADDON":"Udostępnij dodatek","AVAILABLE_STREAMS":"Dostępne źródła","NO_STREAM":"Nie ma dostępnych źródeł","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Dla większej ilości źródeł zainstaluj więcej dodatków","STREAM_NOT_SUPPORTED":"Wybrane źródło nie jest dostępne na tej platformie","ADDON_CATALOGUE":"Pokaż wszystkie dodatki »","ADDON_CATALOGUE_MORE":"Więcej dodatków »","REPO_ADDED":"Repozytorium dodane","ADDON_REPO_EXIST_ERR":"Repozytorium już istnieje","ADDON_REPO_ERR":"Wystąpił błąd podczas dodawania kolekcji","ADDON_ADD_ERR":"Wystąpił błąd podczas dodawania dodatku","ERR_ADDON_PROTECTED":"Nie można odinstalować dodatku, ponieważ jest chroniony","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Coś poszło nie tak - uwierzytelnianie mogło się nie powieść","ERR_NOT_COLLECTION_URL":"To nie jest URL kolekcji","ERR_NOT_ADDON_URL":"Nieprawidłowy URL dodatku","ERR_DETECTFROMURL":"Nie odnaleziono dodatku/kolekcji pod tym URL","ADDON_DUPLICATE_WARNING":"Ostrzeżenie: powielony dodatek","ADDON_COLLECTION_SET_FAILED":"Synchronizacja zainstalowanych dodatków do twojego konta nie powiodła się","SETTINGS_DATA_EXPORT":"Wyeksportuj dane użytkownika","ADDON_PULL_FAILED":"Synchronizacja zainstalowanych dodatków z twojego konta nie powiodła się","REFRESH_ON_CLICK":"Kliknij, aby ponowić","STILL_IN_THEATER":"Film obecnie w kinach","WATCH_IN_CINEMA":"Obejrzyj film w kinie","IN_THEATER":"W kinie","GET_TICKETS":"Kup bilety","UPCOMING_EPISODE":"Nadchodzący odcinek","UPCOMING_EPISODE_MESSAGE":"Ten odcinek zostanie nadany","MISSING_DATE_EPISODE":"Brak daty odcinka","MISSING_DATE_EPISODE_MESSAGE":"Ten odcinek mógł nie zostać jeszcze wyemitowany","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.<br>Zajrzyj z powrotem za kilka minut.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Dodaj do swojej biblioteki, aby zostać powiadomionym kiedy będzie dostępny.","GET_NOTIFIED_WHEN_AVAILABLE":"Zostaniesz powiadomiony kiedy będzie dostępny.","WARNING_STREAMING_SERVER":"Ostrzeżenie: lokalny serwer streamowania nie został znaleziony. Streamowanie lokalnych plików, YouTube i BitTorrent nie będzie dostępne.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Ostrzeżenie: ten film może nie być wspierany przez twój sprzęt. Miej na uwadze, że odtwarzanie może być wolne.","PLAYER_ERROR":"Ups, błąd odtwarzacza","PLAYER_ERROR_LOOKSLIKE":"Wygląda na to, że","PLAYER_ORIENTATION":"Orientacja odtwarzacza","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Zablokowana","PLAYER_ORIENTATION_SENSOR_SHORT":"Czujnik","PLAYER_ORIENTATION_LANDSCAPE":"Orientacja odtwarzacza zablokowana poziomo","PLAYER_ORIENTATION_SENSOR":"Orientacja odtwarzacza automatyczna (czujnik)","PLAYER_PLAYBACK_SPEED":"Prędkość odtwarzania","PLAYER_PLAYBACK_ERROR":"Błąd odtwarzania, spróbuj ponownie","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Nieznany błąd","PLAYER_PLAYBACK_ERROR_DEFAULT":"Przepraszamy, ten film nie może być odtworzony przez {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Na żywo","PLAYER_NEXT_VIDEO_TITLE":"Następnie w","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Odrzuć","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Oglądaj teraz","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streamuje z","CASTING_TO":"Rzutowanie do","NETWORK_STATUS":"Status połączenia","STREAM_SPEED":"Prędkość streama:","STREAM_BUFFERED":"Zbuforowane:","PEERS_INFO":"Informacje o peerach","PEERS_ACTIVE":"Aktywnych:","PEERS_CONNECTED":"Połączonych:","PEERS_WAITING":"Oczekujących:","TRANSCODING_WARNING":"Ostrzeżenie: transkodowanie filmu.","STREAM_LOADING":"ładowanie...","PLAYING_LOCAL":"odtwarzanie lokalnego pliku","PLAYING_CACHE":"odtwarzanie z pamięci podręcznej","WRONG_SUBS":"Złe napisy?","ERR_SUBS_LOADING_TITLE":"Błąd podczas ładowania napisów","ERR_SUBS_LOADING":"Nie udało się załadować napisów: to może być problem z dodatkiem, którego używasz, lub z twoim połączeniem sieciowym","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Te dodatki z napisami poległy","ERR_CASTING_UPDATE_TITLE":"Nie udało się zaktualizować info o urządzeniu zdalnym: serwer streamingowy może być niedostępny","CHOOSE_DEVICE":"Wybierz urządzenie, na którym chcesz oglądać","NO_CAST_DEVICES":"Brak zdalnych urządzeń.","NO_SETTINGS":"Brak dostępnych ustawień.","PHONE_TABLET":"Telefon / Tablet","SUBTITLES":"Napisy","SUBTITLES_CHANGE":"Zmień napisy na ","SUBTITLES_CHANGE_NONE":"Nie ma innych napisów dla tego języka, przepraszamy","SUBTITLES_CHANGE_ACIVE":"Obecnie napisy #{{subtitlesDialog.activeIdx + 1}} są aktywne. Kliknij \\"Kontynuuj\\", aby aktywować napisy #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternatywnie,","SUBTITLES_ADJUST_DELAY":"Dopasuj opóźnienie napisów:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"lub użyj przycisków <span>G</span> / <span>H</span> podczas odtwarzania, aby dopasować.","SUBTITLES_ADJUST_DELAY_TIP":"PORADA: możesz używać przycisków <span>G</span> / <span>H</span> podczas odtwarzania, aby dopasować.","SUBTITLES_DELAY":"Opóźnienie napisów:","SUBTITLES_LOADING":"Ładowanie napisów...","SUBTITLES_UNAVAILABLE":"Brak dostępnych zewnętrznych napisów","SUBTITLES_DISABLED":"Wyłączone","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Dźwięk","DEFAULT_LANGUAGE":"Domyślny język","DEFAULT_SECONDARY_LANGUAGE":"Domyślny drugorzędny język","SEASON":"Sezon","EPISODE":"Odcinek","SPECIAL":"Bonus","SORT":"sortuj","SORT_BY":"Sortuj po","FILTER":"filtruj","SORT_TRENDING":"na czasie","SORT_RECENT":"ostatnie","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"oceny","SORT_WATCHED":"obejrzane","SORT_YEAR":"rok","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Nowe dla ciebie","New Episodes":"Nowe odcinki","New Videos":"Nowe filmy","Recommendations":"Polecane","LIBRARY_RESUME":"Wznów","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Szczegóły","LIBRARY_RESUME_DISMISS":"Odrzuć","LIBRARY_CLEAR_PROGRESS":"Wyczyść postęp","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Wyróżnione","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Zwycięzcy Oscara","DISCOVER_WARNING_TITLE":"Ups!","DISCOVER_EMPTY_CATALOG":"Ten dodatek nie zwrócił zawartości.","DISCOVER_ADULT_WARNING":"Ta treść jest widoczna tylko dla dorosłych. Czy jesteś 18+?","DISCOVER_NOADDON_WARNING":"Ostrzeżenie: żaden dodatek Stremio nie jest aktywny dla tego typu. Pokazywanie zapisanych rzeczy, nic nie zostanie zaktualizowane","DISCOVER_LOAD_ERR":"Zawartość nie została załadowana, wystąpił błąd","DISCOVER_ADDON_UNINSTALLED":"Ta zawartość nie jest już dostępna, być może odinstalowano ten dodatek.","UNINSTALL_THIS_ADDON":"Odinstaluj ten dodatek","ERR_ADDON_NOT_INSTALLED":"Ten dodatek nie jest zainstalowany. Zainstalować teraz?","DETAIL_RECEIVE_NOTIF_SERIES":"Otrzymuj powiadomienia o nowych odcinkach","DETAIL_RECEIVE_NOTIF_VIDEOS":"Otrzymuj powiadomienia o nowych filmach","SIDEBAR_SHOW_STREAMS":"Pokaż źródła","RELAUNCH":"Uruchom ponownie teraz!","UPGRADE":"Nowa wersja jest dostępna! Zaktualizuj do najnowszej wersji Stremio","RELOAD_UI":"Przeładuj interface użytkownika","MANUAL_UPDATE_TITLE":"Zaktualizuj twoją wersję Stremio","MANUAL_UPDATE_LINE1":"Używasz przestarzałej wersji Stremio, co jest mocno niezalecane.","MANUAL_UPDATE_LINE2":"Proszę zaktualizować tak szybko, jak to możliwe.","BUTTON_UPDATE_LATTER":"Nie teraz","BUTTON_UPDATE_NOW":"Aktualizuj","ANONYMOUS_USER":"Anonimowy użytkownik","DONT_HAVE_ACC":"Nie masz konta?","HAVE_ACC":"Masz już konto?","PASSWORD":"Hasło","PASSWORD_CONFIRM":"Potwierdź hasło","EMAIL":"E-mail","FB_LOGIN":"Zaloguj z Facebook","FB_NOTHINGSHARED":"Nic nie jest udostępniane bez twojego zezwolenia","FB_NOPOST":"Nic nie napiszemy w twoim imieniu","OR":"lub","I_ACCEPT":"Akceptuję","I_ACCEPT_BY_CLICKING":"Poprzez kliknięcie powyższego przycisku świadczę, że akceptuję ","TOS":"Warunki Umowy","MUST_ACCEPT_TERMS":"Musisz zaakceptować regulamin","PASSWORDS_NOMATCH":"Hasła nie są takie same","SIGN_UP":"Zarejestruj się","SIGN_UP_EMAIL":"Zarejestruj się za pomocą email","CLICK_TO_SIGN_UP":"Kliknij tutaj, aby się zarejestrować.","LOG_IN":"Zaloguj się","LOG_OUT":"Wyloguj się","EXIT_FULLSCREEN":"Wyjdź z trybu pełnoekranowego","ENTER_FULLSCREEN":"Wejdź w tryb pełnoekranowy","PLAY_URL_MAGNET_LINK":"Odtwórz URL/Magnet link","HELP_FEEDBACK":"Pomoc i Feedback","TERMS_OF_SERVICE":"Warunki świadczenia usług","PRIVACY_POLICY":"Polityka prywatności","ABOUT_STREMIO":"O Stremio","USER_PANEL":"Panel użytkownika","LOGIN_LABEL":"Login","GUEST_LOGIN":"Zaloguj się jako gość","GUEST_LOGIN_NOTICE":"Logowanie się jako gość nie jest polecane. Używanie typowego logowania pozwala Stremio synchronizować twoją Bibliotekę, otrzymywać powiadomienia dla twoich ulubionych serialach/kanałach. Na pewno chcesz kontynuować?","GUEST_LOGIN_NOTICE_2":"Logowanie się jako gość nie jest polecane - nie będziesz miał możliwości synchronizacji Biblioteki i powiadomień na Tablicy, a to ważne funkcje Stremio. Na pewno chcesz kontynuować?","CLICK_HERE":"kliknij tutaj","WRONG_PASSWORD":"Zły email lub hasło. Jeżeli zapomniałeś swojego hasła, ","SET_A_PASS":"ustaw hasło","RESET_PASSWORD":"Zresetuj hasło","FORGOT_PASSWORD":"Zapomniałeś hasła?","EMAIL_USED_WITH_FB":"Ten email jest używany do logowania poprzez Facebook.","INVALID_EMAIL":"Wprowadź poprawny adres email","INVALID_PASSWORD":"Wprowadź poprawne hasło","CONN_ERR":"Błąd połączenia - proszę spróbować ponownie później.\\n\\nJeśli problem wciąż występuje, wyłącz zapory sieciowe/oprogramowanie antywirusowe (szczególnie Bitdefender).","IMPORT_FROM_GUEST":"Importuj Bibliotekę z twojego konta gościa","RECEIVE_UPDATES_EMAIL":"Otrzymuj aktualizacje na swój email od Stremio","LOGIN_FAILED":"Logowanie nieudane.","SIGNUP_FAILED":"Rejestracja nieudana.","SEARCH_FAILED":"Wyszukiwanie nieudane","EMAIL_USED":"Ten email jest już w użyciu.","WAITING_FB_LOGIN":"Logowanie za pomocą Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Powiedz nam co lubisz","INTRO_TASTE_LONG":"Powiedz nam co chcialbyś obejrzeć","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Pomóż nam dowiedzieć się więcej o Tobie.","INTRO_TASTE_CHOOSE_THESE":"Wybierz kilka z tych:","INTRO_TASTE_CHOOSE_MIN":"Wybierz przynajmniej 3 kategorie","INTRO_TASTE_CHOOSE_MIN_ERR":"Musisz wybrać przynajmniej 3 kategorie!","INTRO_TASTE_LIFESTYLE":"Styl życia","INTRO_TASTE_SPORTS":"Sport","INTRO_TASTE_FOOD_HEALTH":"Jedzenie i zdrowie","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Nauka i edukacja","INTRO_TASTE_MUSIC":"Muzyka","INTRO_TASTE_TRAVEL":"Podróże","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Wybrany addon nie jest wspierany na tej platformie.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Aktywować ten addon?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Dodaj","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Co nowego?","BUTTON_CONTINUE":"Kontynuuj","BUTTON_ACTIVATE":"Aktywuj","BUTTON_ACTIVATED":"Aktywowany","BUTTON_CANCEL":"Anuluj","BUTTON_SUBMIT":"Wyślij","BUTTON_DISMISS_ALL":"Odwołaj wszystko","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Twoja biblioteka wygląda na pustą. Dowiedz się jak bardzo ona jest przydatna :) ","HOW_START":"Oto jak zacząć:","LIB_EMPTY_CAL":"Twój Kalendarz pokazuje seriale w twojej bibliotece.","HOW_START_CAL":"Tak możesz dodawać seriale:","LIB_EMPTY_BOARD":"Board pokazuje powiadomienia & Polecane na podstawie twojej Biblioteki.","HOW_START_BOARD_WAIT":"Dodaj kilka seriali lub filmów to swojej Biblioteki i daj nam troche czasu na przetworzenie :)","HOW_START_BOARD":"Tak możesz dodawać seriale & filmy:","IMPORT_FB":"Importuj rzeczy z <span>Facebook</span>","IMPORT_TRAKT":"Importuj dane z <span>Trakt</span>","IMPORT_DISCOVER":"Znajdź interesujące rzeczy w <span>Odkrywaj</span>","IMPORT_DISK":"Importuj filmy lub seriale, które posiadasz na swoim <span>lokalnym dysku</span>","PLEASE_CREATE_ACC":"<u>Załóż konto</u>, aby aktywować synchronizacje Biblioteki & Board.","IMPORT_DISCOVER_SIGNUP":"Załóż konto i znajdź interesujące rzeczy w <span>Odkrywaj</span>","IMPORT_DISK_SIGNUP":"Załóż konto i importuj filmy lub seriale, które posiadasz na swoim <span>lokalnym dysku</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Otrzymuj powiadomienia o nowych odcinkach","LIB_EMPTY_PERSONAL":"Osobiste","LIB_EMPTY_PERSONAL_DESC":"Otrzymuj osobiste rekomendacje","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"Kalendarz Stremio został dodany do twojego domyślnego systemowego kalendarza.","CALENDAR_ADDED_MSG":"Jeżeli to nie działa, dodaj ten URL do twojego kalendarza manualnie","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"Musisz się zalogować","SETTINGS_LABEL":"Ustawienia","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Odtwarzacz","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Przeładuj aplikację","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Otwórz ustawienia","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Wyjdź / Cofnij","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Zwiększ rozmiar napisów","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Zmniejsz rozmiar napisów","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Zwiększ opóźnienie napisów","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Zmniejsz opóźnienie napisów","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Odtwarzaj z VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Domyślny język napisów","SETTINGS_SUBTITLES_SIZE":"Domyślny rozmiar napisów","SETTINGS_SUBTITLES_BACKGROUND":"Tło napisów","SETTINGS_SUBTITLES_COLOR":"Kolor napisów","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Kolor tła napisów","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play następny odcinek","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Zawsze używaj najnowszej Bety","SETTINGS_IMPORT_FB":"Importuj z Facebook","SETTINGS_IMPORT_DISK":"Importuj z lokalnego dysku","SETTINGS_IMPORT_TRAKT":"Importuj z Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Odtwarzaj w tle","SETTINGS_SUBSCRIBE_CALENDAR":"Subskrybuj kalendarz","SETTINGS_REQ_EXPORT":"Zażądaj exportu danych","SETTINGS_ACC_DELETE":"Zażądaj usunięcia konta","SETTINGS_CHANGE_PASSWORD":"Zmień hasło","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Skontaktuj się ze wsparciem","SETTING_LANGUAGE":"Język","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Wyloguj z Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Oszczędzanie energii","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"domyślne napisy","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"konto","SETTINGS_VERSION":"wersja","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Rozmiar","SUBSPICKER_DELAY":"Opóźnienie","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Zamknij","CONNECTED":"Połączony","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Styczeń","February":"Luty","March":"Marzec","April":"Kwiecień","May":"Maj","June":"Czerwiec","July":"Lipiec","August":"Sierpień","September":"Wrzesień","October":"Październik","November":"Listopad","December":"Grudzień","Monday":"Poniedziałek","Tuesday":"Wtorek","Wednesday":"Środa","Thursday":"Czwartek","Friday":"Piątek","Saturday":"Sobota","Sunday":"Niedziela","Action":"Action","Comedy":"Komedia","War":"Wojna","Family":"Family","Animation":"Animation","Adventure":"Adventure","Fantasy":"Fantasy","Crime":"Crime","Mystery":"Mystery","Romance":"Romans","Drama":"Dramat","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Music","Biography":"Biography","Documentary":"Documentary","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Filmy","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"nowy film","new episode":"nowy odcinek","new movie":"nowy film","recommended":"polecane","we recommend":"polecamy","offer of the day":"offer of the day","news":"aktualności","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Odrzuć powiadominie","CTX_DISMISS_ALL":"Odrzuć wszystkie","CTX_SHARE":"Udostępnij","CTX_COPY_SHARE_LINK":"Kopiuj link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Pokaż","CTX_PLAY":"Odtwórz","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Oglądaj","CTX_WATCHED":"Obejrzane","CTX_WATCH_BEGINNING":"Obejrzyj od początku","CTX_WATCH_MOBILE":"Obejrzyj na urządzeniu mobilnym","CTX_REWIND":"Przewiń do początku","CTX_MARK_WATCHED":"Oznacz jako obejrzane","CTX_MARK_NON_WATCHED":"Oznacz jako nieobejrzane","CTX_MARK_UNWATCHED":"Oznacz jako nieoglądane","CTX_MARK_REST":"Oznacz resztę jako obejrzane","CTX_UNMARK_REST":"Oznacz resztę jako nieobejrzane","CTX_RECEIVE_NEW_NOTIF":"Otrzymuj nowe powiadomienia","CTX_REMOVE_CACHE":"Usuń z pamięci podręcznej","CTX_REMOVE_CACHE_EP":"Usuń odcinek z pamięci podręcznej","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Usuń z Biblioteki","CTX_AVAILABLE_OFFLINE":"Dostępne offline","CTX_PAUSED":"Zatrzymane","CTX_ALWAYS_ON_TOP":"Zawsze na wierzchu","CTX_FULLSCREEN":"Tryb pełnoekranowy","CTX_WRONG_SUBS":"Złe napisy?","CTX_REPORT_ISSUES":"Wyślij raport o błędzie","CTX_COPY":"Kopiuj","CTX_PASTE":"Wklej","CTX_CLEAR":"Wyczyść","CTX_CLEAR_RECENT_SEARCHES":"Wyczyść ostatnie wyszukania","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"Moje dodatki","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Wyszukaj dodatki","ADDON_INSTALL":"Zainstaluj","ADDON_CONFIGURE":"Konfiguruj","ADDON_UNINSTALL":"Odinstaluj","ADDON_UPGRADE":"Zaktualizuj","ADDON_INSTALLED":"Zainstalowany","ADDON_INSTALLED_MSG":"Dodatek zainstalowany!","ADDON_UPGRADED_MSG":"Dodatek zaktualizowany!","ADDON_UNKNOWN":"Nieznany","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Instaluj teraz","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You Can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Dodatki","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filmy","WEBSITE_TYPE_series_PL":"Seriale","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Kanały","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Często zadawane pytania","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Pytania","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"O","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"O Nas","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"Więcej","WEBSITE_LINK_ADDONS":"Dodatki","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Społeczność","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Polityka prywatności","WEBSITE_SUBSCRIBE":"Subscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Twój email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"Zespół","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Funkcjonalność","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Dodatki","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Stwórz dodatek","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Dodatki Stremio","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Tapety","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Kontakt","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Twój e-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Wiadomość","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"Wyślij","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Dodatki","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Styl życia","SPORTS":"Sporty","FOOD_HEALTH":"Jedzenie i zdrowie","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Muzyka","TRAVEL":"Podróż","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Komedia","DIY":"How to DIY","TECH":"Tech","CINEMA":"Kino","CONTINUE":"Kontynuuj","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Dowiedz się więcej","POOR_SOURCE":"To źródło jest słabo dostępne, albo twoje połączenie z internetem nie jest wystarczająco szybkie","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"Możesz wyszukać cokolwiek...","ALL_CATEGORIES":"Wszystkie","SEARCH_CATEGORIES":"Filmy, seriale, YouTube i TV","SEARCH_PERSONS":"Aktorzy, reżyserzy i scenarzyści","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Obejrzane","SHOW_LESS":"Pokaż mniej","LAST_SEARCHES":"Ostatnie wyszukiwania","CLEAR_HISTORY":"Wyczyść historię","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio jest offline","STREMIO_EXPENSIVE_CONNECTION":"Wykryliśmy, że korzystasz z połączenia mobilnego,czy chcesz kontynuować?","USE_DATA":"Use data","WARNING":"Ostrzeżenie","MORE_INFO":"Więcej informacji...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Ładowanie...","STREMIO_TV_BACK_TO_LANGUAGES":"Wróć do języków","STREMIO_TV_REMOTE":"Zdalny","STREMIO_TV_GO_TO":"Przejdź do:","STREMIO_TV_OR_SCAN":"lub zeskanuj:","STREMIO_TV_ADDON_INSTRUCTIONS":"Podążaj za instrukcjami w celu instalacji twoich preferowanych dodatków.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Wznów oglądanie","STREMIO_TV_LOADING_BACKGROUND":"Ładowanie tła","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Zespół Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Połącz z:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Domyślny","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Po ostatnio oglądanym","STREMIO_TV_LIBRARY_SORT_NAME":"Po nazwie","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Po ilości obejrzeń","STREMIO_TV_DETAILS_SEASON_NUMBER":"Sezon ${1}","STREMIO_TV_STREAMS_LOADING":"Załadowano ${1} z ${2} dodatków...","STREMIO_TV_STREAMS_STILL_LOADING":"Dodatek ${1} jeszcze się ładuje...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Notka: upewnij się, że używasz tego samego konta Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Zsynchronizuj dodatki","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Pomyślnie zsynchronizowano dodatki","STREMIO_TV_ADDONS_SYNC_FAILED":"Niepowodzenie synchronizacji dodatków","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Uaktualniono motyw","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Domyślny odtwarzacz","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"Zewnętrzny odtwarzacz","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferowany język","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Drugorzędny preferowany język","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Bez pamięci podręcznej","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Domyślny","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Miękki","STREMIO_TV_SETTINGS_PROFILE_FAST":"Szybki","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra szybki","STREMIO_TV_SETTINGS_SERVER_URL":"URL serwera streamingowego","STREMIO_TV_SETTINGS_SERVER_VERSION":"Wersja Serwera","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Nieznany","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Wersja Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edytuj URL serwera","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Wyszukaj","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Biblioteka","STREMIO_TV_NAV_MOVIES":"Filmy","STREMIO_TV_NAV_SERIES":"Seriale","STREMIO_TV_NAV_CHANNELS":"Kanały","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Ustawienia","STREMIO_TV_NAV_ADDONS":"Dodatki","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Wygasa za","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Kod logowania odświerzony","STREMIO_TV_SEARCH_PLACEHOLDER":"Wpisz coś","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Szukaj","STREMIO_TV_SEARCH_KEY_DEL":"Usuń","STREMIO_TV_SEARCH_KEY_SPACE":"Spacja","STREMIO_TV_SEARCH_KEY_CLEAR":"Wyczyść","STREMIO_TV_SEARCH_HISTORY_TITLE":"Historia wyszukiwania","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Możesz wyszukać tytuł, aktora, kanał i więcej...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Wyczyść historię wyszukiwania","STREMIO_TV_FILTERS_DESCRIPTION":"Wybierz jeden z poniższych filtrów","FILTERS":"Filtry","SETTINGS":"Ustawienia","ACCOUNT":"Konto","LOGOUT":"Wyloguj","THEMES":"Motywy","PLAYBACK":"Odtwarzanie","PLAYBACK_SPEED":"Prędkość odtwarzania","AUDIO_TRACKS":"Ścieżki dźwiękowe","VIDEOS":"Filmy","SERVER":"Serwer","LINKS":"Linki","ABOUT":"O","INTERFACE":"Interface","ANIMATIONS":"Animacje","STATUS":"Status","LANGUAGE":"Język","SIZE":"Rozmiar","DELAY":"Opóźnienie","BOLD":"Pogrubienie","TEXT_COLOR":"Kolor tekstu","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Kolor tła","BACKGROUND_BLUR":"Rozmycie tła","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Automatycznie uruchom następny odcinek","PLAY_NOW":"Odtwórz teraz","MARK_AS_WATCHED":"Oznacz jako obejrzane","MARK_AS_UNWATCHED":"Oznacz jako nieobejrzane","REWIND_TO_BEGINNING":"Od początku","CONTINUE_WATCHING":"Kontynuuj oglądanie","ALL":"Wszystko","SECONDS":"sekundy","ON":"Wł.","OFF":"Wył.","RELOAD":"Przeładuj","EDIT_URL":"Edytuj URL","NONE":"Brak","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Filmy","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Dopasuj rozmiar","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Ponów","TORRENT_PROFILE_DEFAULT":"Domyślny","TORRENT_PROFILE_SOFT":"Miękki","TORRENT_PROFILE_FAST":"Szybki","TORRENT_PROFILE_ULTRA_FAST":"Ultra szybki","FAQ_001_H1":"Czym jest Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},2012:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filme","TYPE_series":"Série","TYPE_tv":"Canal de TV","TYPE_channel":"Canal","TYPE_other":"Outros","TYPE_movie_PL":"Filmes","TYPE_series_PL":"Séries","TYPE_tv_PL":"Canais de TV","TYPE_channel_PL":"Canais","TYPE_other_PL":"Outros","TYPE_ALL":"All","VIDEO":"Vídeo","BACK":"Voltar","MORE":"Mais","DONE":"Concluído","COPY":"Copiar","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Descubra","Board":"Painel","Library":"Biblioteca","My Library":"Minha Biblioteca","Calendar":"Calendário","NOTIFICATION_ONLINE":"Você está online","NOTIFICATION_OFFLINE":"Você está offline","INTERNET_CONNECTION":"Conexão de rede","STORAGE_FULL_TITLE":"Aviso: Disco cheio!","STORAGE_FULL_TEXT":"Stremio não será capaz de salvar suas configurações, preferências ou informações de login. Considere reiniciar ou reinstalar o Stremio.","SEARCH":"Buscar","SEARCH_NO_RESULTS":"Nenhum resultado encontrado","SEARCH_EXPLANATION_CONTENT":"Procure por filmes, séries, canais do YouTube e da TV","SEARCH_EXPLANATION_PEOPLE":"Procure por atores, diretores e escritores","SEARCH_PASTE_LINKS":"Cole links HTTP ou Magnéticos","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Adicionar à Biblioteca","REMOVE_FROM_LIB":"Remover da Biblioteca","ADDED_TO_LIB":"Adicionado à Biblioteca","REMOVED_FROM_LIB":"Removido da Biblioteca","TRAILER":"Trailer","WATCH_TRAILER":"Assistir ao Trailer","WATCH_NOW":"Assistir Agora","SHOW":"Mostrar","SHOW_MOVIE":"Exibir filme","WATCH_RANDOM":"Assistir Aleatoriamente","IMDB_RATING":"Avaliação IMDB","YEAR":"Ano","DIRECTOR":"Diretor","WRITER":"Escritor","LEAD_ACTORS":"Atores Principais","CAST":"Elenco","CREW":"Equipe técnica","SHOW_MORE_CAST":"Mostrar mais »","AIRED":"Foi ao ar em","SEASONS":"Temporadas","GENRE":"Gêneros","CATALOG":"Catálogo","SUMMARY":"Resumo","SHOW_MORE":"Mostrar mais","SIMILAR":"Parecidos","UPCOMING":"Próximos","ENDED":"Finalizados","DURATION":"Duração","FEATURED":"Destaque","METADATA":"Dados de Descrição","CATEGORY":"Categoria","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Pesquisar vídeos","SEARCH_PLACEHOLDER":"Buscar ou colar links","ADDON":"Addon","ADDONS":"Addons","OFFICIAL":"Oficial","ADDONS_OFFICIAL":"Addons Oficiais do Stremio","ADDONS_POPULAR":"Populares na sua região","ADDON_FREE":"Gratuito","ADDON_PEERED":"pareado","ADDON_SUBSCRIPTION":"assinatura","ADDON_STREAM_GEORESTRICTED":"indisponível na sua área","ADDON_STREAM_OFFLINECACHE":"Cache Offline","ADDON_STREAM_LOCALFILE":"Arquivo Local","SHARE_ADDON":"Compartilhar Addon","AVAILABLE_STREAMS":"Transmissões Disponíveis","NO_STREAM":"Nenhuma transmissão encontrada","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Para mais transmissões, por favor instale mais Addons","STREAM_NOT_SUPPORTED":"A transmissão selecionada não é suportada nesta plataforma.","ADDON_CATALOGUE":"Mostrar todas os Addons »","ADDON_CATALOGUE_MORE":"Instalar Addons","REPO_ADDED":"Repositório adicionado","ADDON_REPO_EXIST_ERR":"Este repositório de Addons já existe","ADDON_REPO_ERR":"Ocorreu um erro ao adicionar o repositório","ADDON_ADD_ERR":"Ocorreu um erro ao adicionar o Addon","ERR_ADDON_PROTECTED":"Não é possível desinstalar o Addon, ele está protegido","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Algo deu errado - a autenticação pode ter falhado","ERR_NOT_COLLECTION_URL":"Não é uma URL de coleção","ERR_NOT_ADDON_URL":"Não é uma URL de Addon válida","ERR_DETECTFROMURL":"Não foi possível encontrar um Addon/coleção para essa URL","ADDON_DUPLICATE_WARNING":"Aviso: Addon duplicado","ADDON_COLLECTION_SET_FAILED":"Falha ao sincronizar seus Addons instalados com sua conta","SETTINGS_DATA_EXPORT":"Exportar dados","ADDON_PULL_FAILED":"Falha ao sincronizar Addons instalados de sua conta","REFRESH_ON_CLICK":"Clique para tentar novamente","STILL_IN_THEATER":"Filme ainda em exibição","WATCH_IN_CINEMA":"Assista no cinema mais próximo","IN_THEATER":"No cinema","GET_TICKETS":"Obter ingressos","UPCOMING_EPISODE":"Próximo episódio","UPCOMING_EPISODE_MESSAGE":"Esse episódio irá ao ar em","MISSING_DATE_EPISODE":"Sem data do episódio","MISSING_DATE_EPISODE_MESSAGE":"Esse episódio pode não ter ido ao ar ainda","CHANNEL_NOT_SCRAPED":"Este canal ainda não foi extraído.<br>Por favor, retorne em alguns minutos.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Adicione à sua biblioteca para receber notificações quando estiver disponível.","GET_NOTIFIED_WHEN_AVAILABLE":"Você será notificado quando estiver disponível.","WARNING_STREAMING_SERVER":"Atenção: servidor local de transmissão não encontrado. Transmissões de arquivos locais, YouTube e BitTorrent não estarão disponíveis.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Aviso: este vídeo pode não ser suportado pelo seu hardware. Tenha em mente que a reprodução pode ser lenta.","PLAYER_ERROR":"Oops, ocorreu um erro no reprodutor de mídia","PLAYER_ERROR_LOOKSLIKE":"Parece que","PLAYER_ORIENTATION":"Orientação do reprodutor de mídia","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Travado","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Reprodutor de mídia travado para o modo paisagem","PLAYER_ORIENTATION_SENSOR":"Reprodutor de mídia automático (sensor)","PLAYER_PLAYBACK_SPEED":"Velocidade de reprodução","PLAYER_PLAYBACK_ERROR":"Erro de reprodução, tente novamente","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Erro desconhecido","PLAYER_PLAYBACK_ERROR_DEFAULT":"Desculpe, esse vídeo não poder ser reproduzido por {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Ao vivo","PLAYER_NEXT_VIDEO_TITLE":"A seguir","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dispensar","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Assistir agora","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Transmitindo de","CASTING_TO":"Transmitindo para","NETWORK_STATUS":"Estado da rede","STREAM_SPEED":"Velocidade da transmissão:","STREAM_BUFFERED":"Carregado:","PEERS_INFO":"Informações dos Pares","PEERS_ACTIVE":"Ativo:","PEERS_CONNECTED":"Conectado:","PEERS_WAITING":"Aguardando:","TRANSCODING_WARNING":"Atenção: transcodificando vídeo.","STREAM_LOADING":"Carregando...","PLAYING_LOCAL":"Reproduzir de um arquivo local","PLAYING_CACHE":"Reproduzir a partir do cache","WRONG_SUBS":"Legendas erradas?","ERR_SUBS_LOADING_TITLE":"Erro ao carregar a legenda","ERR_SUBS_LOADING":"Falha ao carregar as legendas: Isso pode ser um problema com seu Addon ou sua conexão de rede","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Os seguintes Addons de legenda falharam","ERR_CASTING_UPDATE_TITLE":"Não foi possível atualizar as informações do dispositivo de transmissão: o servidor de transmissão pode estar offline","CHOOSE_DEVICE":"Escolha um dispositivo para assistir","NO_CAST_DEVICES":"Sem dispositivos de transmissão disponíveis.","NO_SETTINGS":"Configurações não disponíveis.","PHONE_TABLET":"Smartphone / Tablet","SUBTITLES":"Legendas","SUBTITLES_CHANGE":"Modificar legendas para ","SUBTITLES_CHANGE_NONE":"Não há outra legenda para este idioma, desculpe.","SUBTITLES_CHANGE_ACIVE":"A legenda #{{subtitlesDialog.activeIdx + 1}} está ativada. Clique \\"Continuar\\" para ativar a legenda #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativamente,","SUBTITLES_ADJUST_DELAY":"Ajustar atraso da legenda:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Ou use as teclas <span>G</span> / <span>H</span> durante a reprodução para ajustar.","SUBTITLES_ADJUST_DELAY_TIP":"DICA: Você pode usar as teclas <span>G</span> / <span>H</span> durante a reprodução para ajustar.","SUBTITLES_DELAY":"Atraso das legendas:","SUBTITLES_LOADING":"Carregando legendas...","SUBTITLES_UNAVAILABLE":"Legendas externas não disponíveis","SUBTITLES_DISABLED":"Desativado","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Áudio","DEFAULT_LANGUAGE":"Idioma Padrão","DEFAULT_SECONDARY_LANGUAGE":"Idioma Padrão Secundário","SEASON":"Temporada","EPISODE":"Episódio","SPECIAL":"Especial","SORT":"ordenar","SORT_BY":"Ordenar por","FILTER":"Filtrar","SORT_TRENDING":"Em alta","SORT_RECENT":"Recente","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"Classificação","SORT_WATCHED":"Assistido","SORT_YEAR":"Ano","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Novo para Você","New Episodes":"Novos Episódios","New Videos":"Novos Vídeos","Recommendations":"Recomendações","LIBRARY_RESUME":"Retomar","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Detalhes","LIBRARY_RESUME_DISMISS":"Dispensar","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Destaque","DISCOVER_TOP":"Topo","DISCOVER_OSCAR":"Vencedores do Oscar","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"Este Addon não possui conteúdo.","DISCOVER_ADULT_WARNING":"Este conteúdo está disponível apenas para maiores de idade. Você tem mais de 18 anos?","DISCOVER_NOADDON_WARNING":"Atenção: nenhum Addon do Stremio ativa para este tipo. Mostrando itens salvos, nada aqui será atualizado.","DISCOVER_LOAD_ERR":"O conteúdo não foi carregado, ocorreu um erro.","DISCOVER_ADDON_UNINSTALLED":"Este conteúdo não está mais disponível, você deve ter desinstalado o Addon.","UNINSTALL_THIS_ADDON":"Remover este Addon","ERR_ADDON_NOT_INSTALLED":"Este Addon não está instalado. Instalar agora?","DETAIL_RECEIVE_NOTIF_SERIES":"Receber notificações de novos episódios","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receber notificações de novos vídeos","SIDEBAR_SHOW_STREAMS":"Exibir Streams","RELAUNCH":"Reinicie agora!","UPGRADE":"Nova versão disponível! Atualize para a versão mais recente do Stremio","RELOAD_UI":"Recarregar a interface do usuário","MANUAL_UPDATE_TITLE":"Atualize sua versão do Stremio","MANUAL_UPDATE_LINE1":"Você está executando uma versão desatualizada do Stremio, o que é altamente não recomendado.","MANUAL_UPDATE_LINE2":"Por favor, atualize o mais rápido possível.","BUTTON_UPDATE_LATTER":"Agora não","BUTTON_UPDATE_NOW":"Atualizar","ANONYMOUS_USER":"Usuário anônimo","DONT_HAVE_ACC":"Não possui uma conta?","HAVE_ACC":"Já possui uma conta?","PASSWORD":"Senha","PASSWORD_CONFIRM":"Confirmar senha","EMAIL":"E-mail","FB_LOGIN":"Conectar-se via Facebook","FB_NOTHINGSHARED":"Nada é compartilhado sem sua permissão","FB_NOPOST":"Não iremos postar nada em seu nome","OR":"ou","I_ACCEPT":"Eu aceito os","I_ACCEPT_BY_CLICKING":"Ao clicar no botão acima, comprovo que aceito o ","TOS":"Termos e Condições","MUST_ACCEPT_TERMS":"Você deve aceitar os termos","PASSWORDS_NOMATCH":"As senhas não coincidem","SIGN_UP":"Cadastrar","SIGN_UP_EMAIL":"Registre-se com email","CLICK_TO_SIGN_UP":"Clique aqui para se registrar","LOG_IN":"Conectar","LOG_OUT":"Desconectar","EXIT_FULLSCREEN":"Sair do modo de tela cheia","ENTER_FULLSCREEN":"Entrar em modo de tela cheia","PLAY_URL_MAGNET_LINK":"Reproduzir URL/Link Magnético","HELP_FEEDBACK":"Ajuda & Feedback","TERMS_OF_SERVICE":"Termos de serviço","PRIVACY_POLICY":"Política de Privacidade","ABOUT_STREMIO":"Sobre o Stremio","USER_PANEL":"Painel de Usuário","LOGIN_LABEL":"Login","GUEST_LOGIN":"Entrar como convidado","GUEST_LOGIN_NOTICE":"Entrar como convidado não é recomendado. Usar um conta padrão permite que o Stremio sincronize sua Biblioteca, receba notificações de séries/canais favoritos. Você tem certeza que deseja prosseguir?","GUEST_LOGIN_NOTICE_2":"Entrar como convidado não é recomendado - você não terá uma Biblioteca sincronizada e um Painel de notificações, que são características vitais do Stremio. Você tem certeza que deseja prosseguir?","CLICK_HERE":"clique aqui","WRONG_PASSWORD":"E-mail ou senha errada. Caso tenha esquecido sua senha, ","SET_A_PASS":"Defina uma senha","RESET_PASSWORD":"Redefinir a senha","FORGOT_PASSWORD":"Esqueceu a senha?","EMAIL_USED_WITH_FB":"Este e-mail foi utilizado com uma conta do Facebook.","INVALID_EMAIL":"Por favor, informe um e-mail válido","INVALID_PASSWORD":"Por favor, informe a senha correta","CONN_ERR":"Erro de conexão - por favor, tente novamente mais tarde.\\n\\nSe isso persistir, desabilite firewalls/antivírus (principalmente o Bitdefender).","IMPORT_FROM_GUEST":"Importar biblioteca da sua conta de convidado","RECEIVE_UPDATES_EMAIL":"Receber atualizações do Stremio no seu e-mail","LOGIN_FAILED":"Login falhou.","SIGNUP_FAILED":"Cadastro falhou.","SEARCH_FAILED":"Busca falhou","EMAIL_USED":"Este e-mail já está em uso.","WAITING_FB_LOGIN":"Entrando com a conta do Facebook...","EXTERNAL_PLAYER_TITLE":"Abrir com um reprodutor de vídeo externo","EXTERNAL_REMEMBER_PLAYER":"Você quer lembrar da sua escolha?","EXTERNAL_ALWAYS_PLAY":"Sim","EXTERNAL_ONLY_ONCE":"Não","BEST_FIT":"Melhor ajuste","FIT_SCREEN":"Tela de ajuste","FILL":"Preencher","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Conte-nos do que gosta","INTRO_TASTE_LONG":"Conte-nos o que gostaria de assistir","INTRO_TASTE_PICK":"Escolha {{interestsRemaining}} interesses","INTRO_TASTE_PICK_MORE":"Escolha {{interestsRemaining}} mais interesses","INTRO_TASTE_HELP_US":"Ajude-nos a saber mais sobre você.","INTRO_TASTE_CHOOSE_THESE":"Escolha alguns destes:","INTRO_TASTE_CHOOSE_MIN":"Escolha ao menos 3 categorias","INTRO_TASTE_CHOOSE_MIN_ERR":"Você precisa escolher ao menos 3 categorias!","INTRO_TASTE_LIFESTYLE":"Estilo de vida","INTRO_TASTE_SPORTS":"Esporte","INTRO_TASTE_FOOD_HEALTH":"Gastronomia e Saúde","INTRO_TASTE_BEAUTY_FASHION":"Moda e Beleza","INTRO_TASTE_NEWS":"Notícias","INTRO_TASTE_GAMING":"Jogos","INTRO_TASTE_SCIENCE_EDU":"Ciência e Educação","INTRO_TASTE_MUSIC":"Música","INTRO_TASTE_TRAVEL":"Viagens","INTRO_TASTE_LATE_NIGHT":"Programas noturnos","INTRO_TASTE_REALITY":"Realidade","INTRO_TASTE_COMEDY":"Comédia","INTRO_TASTE_DIY":"Faça você mesmo","INTRO_TASTE_TECH":"Tecnologia","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"O Addon selecionado não é suportada nesta plataforma.","ADDON_DISCLAIMER":"Usando um Addon de terceiros você estará se auto responsabilizando de acordo com as leis do governo de sua região.","ADDON_ACTIVATE":"Deseja ativar este Addon?","ADDON_REPO_ADD":"Endereço do repositório do Addon","ADDON_ADD":"Adicionar","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"O que há de novo","BUTTON_CONTINUE":"Continuar","BUTTON_ACTIVATE":"Ativar","BUTTON_ACTIVATED":"Ativado","BUTTON_CANCEL":"Cancelar","BUTTON_SUBMIT":"Enviar","BUTTON_DISMISS_ALL":"Dispensar tudo","BUTTON_VIEW_ALL":"ver tudo","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Sua biblioteca parece vazia. Descubra como ela é útil :) ","HOW_START":"Aqui está como você pode começar:","LIB_EMPTY_CAL":"Seu calendário mostra as séries na sua Biblioteca.","HOW_START_CAL":"Aqui está como você pode adicionar séries:","LIB_EMPTY_BOARD":"O Painel mostra notificações & recomendações relacionadas à sua Biblioteca.","HOW_START_BOARD_WAIT":"Por favor, adicione algumas séries ou canais à sua Biblioteca e nos dê um momento para processá-las :)","HOW_START_BOARD":"Aqui está como você pode adicionar séries & filmes nele:","IMPORT_FB":"Importe coisas que você gosta do <span>Facebook</span>","IMPORT_TRAKT":"Importe sua biblioteca de mídia do <span>Trakt</span>","IMPORT_DISCOVER":"Encontre coisas interessantes no <span>Descubra</span>","IMPORT_DISK":"Importe filmes ou shows que você tem no seu <span>disco local</span>","PLEASE_CREATE_ACC":"Por favor, <u>crie uma conta</u> para ativar a sincronização de Biblioteca & Painel.","IMPORT_DISCOVER_SIGNUP":"Registre-se e encontre coisas interessantes no <span>Descubra</span>","IMPORT_DISK_SIGNUP":"Cadastre-se e importe filmes ou shows que você tem em seu <span>disco local</span>","LIB_EMPTY_CLOUD":"Biblioteca na nuvem","LIB_EMPTY_CLOUD_DESC":"Biblioteca pessoal na nuvem sincronizada em todos os dispositivos","LIB_EMPTY_EARLY":"Madrugador","LIB_EMPTY_EARLY_DESC":"Receber notificações de novos episódios","LIB_EMPTY_PERSONAL":"Pessoal","LIB_EMPTY_PERSONAL_DESC":"Receber recomendações pessoais","LIB_EMPTY_CALENDAR_DESC":"Agende no seu calendário pessoal para assistir","LIB_EMPTY_ALL":"Registre-se para obter tudo isto:","LIB_EMPTY_BEST":"Cadastre-se para ter o melhor do Stremio","LIB_EMPTY_OTHER":"Registre-se para habilitar o calendário e outras funções fantásticas","CALENDAR_ADDED":"O calendário Stremio foi adicionado ao seu calendário padrão.","CALENDAR_ADDED_MSG":"Se isso não funcionar, por favor, adicione este endereço no seu calendário manualmente","TRAKT_EXPIRED":"A autenticação do Trakt expirou, vá até as Configurações e autentique novamente.","TRAKT_REQUIRES_LOGIN":"Erro no serviço Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Você precisa fazer login","SETTINGS_LABEL":"Configurações","SETTINGS_NAV_GENERAL":"Geral","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Atalhos","SETTINGS_SHORTCUT_RELOAD_APP":"Recarregar Aplicativo","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Abrir Configurações","SETTINGS_SHORTCUT_SWITCH_TABS":"Alternar Guias","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Percorrer as guias para a frente","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Percorrer abas para trás","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Sair / Voltar","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Alternar para o modo tela cheia","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Mostrar controles","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Aumentar o volume","SETTINGS_SHORTCUT_VOLUME_DOWN":"Abaixar o volume","SETTINGS_SHORTCUT_SEEK_NEXT":"Procurar próximo","SETTINGS_SHORTCUT_SEEK_PREV":"Procurar anterior","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Reproduzir próximo","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Aumentar o tamanho das legendas","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Diminuir o tamanho das legendas","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Aumentar o atraso das legendas","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Diminuir o atraso das legendas","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Alternar barra lateral","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Iniciar com o sistema","SETTINGS_VLC_DEFAULT":"Reproduzir no VLC","SETTINGS_UI_LANGUAGE":"Idioma da interface","SETTINGS_FULLSCREEN_EXIT":"Aperte ESC para sair da tela cheia","SETTINGS_GAMEPAD":"Ativar suporte a gamepad","SETTINGS_CLOSE_WINDOW":"Fechar aplicativo quando a janela for fechada","SETTINGS_SUBTITLES_LANGUAGE":"Idioma padrão de legendas","SETTINGS_SUBTITLES_SIZE":"Tamanho padrão de legendas","SETTINGS_SUBTITLES_BACKGROUND":"Fundo das legendas","SETTINGS_SUBTITLES_COLOR":"Cor das legendas","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Cor de contorno das legendas","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Cor de fundo das legendas","SETTINGS_SEEK_KEY":"As teclas de seta procuram o tempo","SETTINGS_SEEK_KEY_SHIFT":"As teclas de seta procuram o tempo quando a tecla Shift é pressionada","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Reproduzir automaticamente o próximo episódio","SETTINGS_NEXT_VIDEO":"Mostrar notificação para iniciar o próximo episódio.","SETTINGS_NEXT_VIDEO_TRIGGER":"Mostrar uma notificação ao iniciar o próximo episódio para:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Redimensionar automaticamente a janela antes de reproduzir","SETTINGS_OVERRIDE_SERVER":"Substituir a URL do servidor de streaming (avançado)","SETTINGS_SERVER_URL":"URL do servidor de Streaming: ","SETTINGS_SERVER_AVAILABLE":"O servidor de Streaming está disponível.","SETTINGS_SERVER_UNAVAILABLE":"O servidor de Streaming não está disponível.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Sempre usar a versão Beta mais recente","SETTINGS_IMPORT_FB":"Importar do Facebook","SETTINGS_IMPORT_DISK":"Importar do disco local","SETTINGS_IMPORT_TRAKT":"Importar do Trakt","SETTINGS_PAUSE_MINIMIZED":"Pausar reprodução quando minimizado","SETTINGS_HWDEC":"Decodificação acelerada por Hardware","SETTINGS_BACKGROUND":"Reprodução em segundo plano","SETTINGS_SUBSCRIBE_CALENDAR":"Inscrever-se no calendário","SETTINGS_REQ_EXPORT":"Exportar dados","SETTINGS_ACC_DELETE":"Solicitar exclusão de conta","SETTINGS_CHANGE_PASSWORD":"Alterar a senha","SETTINGS_TOS":"Termos de serviço","SETTINGS_SUPPORT":"Contate o suporte","SETTING_LANGUAGE":"Idioma","SETTINGS_TRAKT":"Recomendações do Trakt","SETTINGS_TRAKT_LOGOUT":"Sair do Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Escaneie o código QR para abrir remotamente","SETTINGS_DESKTOP_NOTIFICATIONS":"Notificações da área de trabalho","SETTINGS_DATA_SAVER":"Economizador de Dados","SETTINGS_LANGUAGE_INTERFACE":"Interface","SETTINGS_LANGUAGE_SUBS":"Legenda padrão","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Seleção automática de trilha de áudio","SETTINGS_DEFAULT_AUDIO_TRACK":"Trilha de áudio padrão","SETTINGS_ACCOUNT":"Conta","SETTINGS_VERSION":"Versão","SETTINGS_MPV_WINDOW":"Executar em uma janela separada (avançado)","SETTINGS_PLAY_IN_EXTERNAL":"Sempre iniciar vídeo em player externo","SETTINGS_STORAGE_BUTTON":"Limpar armazenamento local","SETTINGS_STORAGE_MODAL_TITLE":"Você tem certeza?","SETTINGS_STORAGE_MODAL_MESSAGE":"Isso limpará o armazenamento local e terminar a sua sessão.","SETTINGS_HWDEC_PICKER":"Escolha a configuração de decodificação acelerada por hardware","SETTINGS_HW_AUTOMATIC":"Automático","SETTINGS_HW_DISABLED":"Desativado","SETTINGS_HW_ACCELERATED":"Aceleração de decodificação","SETTINGS_HW_FULL":"Aceleração total","SETTINGS_HW_LEGACY":"Legado","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Áudio","SUBSPICKER_SUBTITLES":"Addons de Legendas","SUBSPICKER_BLACK_BACKGROUND":"Usar cor de fundo preta","SUBSPICKER_VERTICAL_OFFSET":"Deslocamento Vertical","SUBSPICKER_SIZE":"Tamanho","SUBSPICKER_DELAY":"Atraso","SUBSPICKER_EMBEDDED_SUBS":"Legendas Embutidas","MOBILE_PRIVACY_POLICY":"Política de Privacidade","MOBILE_CRASH_REPORTING":"Relatório de falhas","MOBILE_ZOOM_TO_FILL":"Zoom para preencher a tela","MOBILE_PASSTHROUGH":"Saída de áudio digital (passthrough)","MOBILE_RUN_LOW_BATTERY":"Executar com bateria fraca","MOBILE_RUN_FOREGROUND":"Executar como serviço em primeiro plano","MOBILE_PERFORMANCE":"DESEMPENHO E ESTABILIDADE","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expira em ","MOBILE_LOG_INTO":"Faça login na sua conta Stremio ","MOBILE_SCAN_QR":"Escaneie o código QR acima ou acesse ","MOBILE_LINK_ACCOUNT":"Vincular conta","MOBILE_SPEEDPICKER_CANCEL":"Cancelar","MOBILE_SPEEDPICKER_LABEL":"Selecione a velocidade de reprodução","MOBILE_EMPTY_LIBRARY":"Sua biblioteca está vazia","MOBILE_NO_ADDON_ACTIVE":"Nenhum Addon Stremio ativo para este tipo.","MOBILE_ORGANIZER_WARNING":"O aplicativo Stremio Organizer oferece funcionalidade limitada. Para obter uma lista de streams reproduzíveis e a experiência completa do Stremio, use o Stremio no desktop.","MOBILE_ADDON_LOADING":"ainda está carregando","MOBILE_ADDONS_LOADING":"os Addons ainda estão carregando","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure seu Addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configurar Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"O aplicativo Stremio Organizer oferece funcionalidade limitada. Para obter uma lista de streams reproduzíveis e a experiência completa do Stremio, use o Stremio no desktop.","MOBILE_DISCONNECT":"Desconectar","MOBILE_LOOKING_FOR_DEVICES":"Procurando dispositivos...","MOBILE_CAST_TO":"Transmitir para","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"Concordo em receber comunicações de marketing do Stremio","QUIT":"Sair","CONNECTED":"Conectado","AUTHENTICATE":"Autenticar","CACHING":"Em Cache","SETTINGS_CACHING_DRIVE":"Selecione o drive para cache","ENABLE_LOCAL_FILES_ADDON":"Habilite o Addon de arquivos locais (requer reinicialização)","LOCAL_ADDON_NOT_ENABLED":"O Addon local não está ativado. Clique aqui para ir para as configurações e habilitá-lo","ENABLE_REMOTE_HTTPS_CONN":"Habilitar conexões HTTPS remotas","TORRENT_PROFILE":"Perfil de Torrent","DATA_CACHING":"Dados em cache","MAGNET_PARSING":"Analisando o link magnético","January":"Janeiro","February":"Fevereiro","March":"Março","April":"Abril","May":"Maio","June":"Junho","July":"Julho","August":"Agosto","September":"Setembro","October":"Outubro","November":"Novembro","December":"Dezembro","Monday":"Segunda","Tuesday":"Terça","Wednesday":"Quarta","Thursday":"Quinta","Friday":"Sexta","Saturday":"Sábado","Sunday":"Domingo","Action":"Ação","Comedy":"Comédia","War":"Guerra","Family":"Família","Animation":"Animação","Adventure":"Aventura","Fantasy":"Fantasia","Crime":"Policial","Mystery":"Mistério","Romance":"Romance","Drama":"Drama","Horror":"Terror","Thriller":"Suspense","Sci-Fi":"Ficção Científica","Music":"Música","Biography":"Biografia","Documentary":"Documentário","Sport":"Esporte","Musical":"Musical","Western":"Faroeste","Film-Noir":"Film-Noir","News":"Notícias","History":"História","Game-Show":"Show de Jogos","Reality-TV":"Show Real","Talk-Show":"Programa de Entrevista","Film & Entertainment":"Filmes e Entretenimento","Gaming":"Jogos","From TV":"Da TV","Lifestyle":"Estilo de Vida","Science & Education":"Ciência e Educação","Cooking & Health":"Culinária e Saúde","Beauty & Fashion":"Beleza e Moda","Sports":"Esportes","News & Politics":"Notícias e Política","How-to & DIY":"Faça Você Mesmo","Tech":"Tecnologia","Automotive":"Automotivo","Causes & Non-Profits":"Causas Humanitárias","Movies":"Filmes","Uk Live Tv":"TV Inglesa","Fashion":"Moda","Business News Radio":"Rádio de Negócios","Business Tv":"Negócios","Cars & Auto":"Carros","Comedy Radio":"Rádio de Comédia","Lifestyle Radio":"Rádio de Estilo de Vida","News Tv":"Noticiário","Food And Wine":"Comes e Bebes","Latino Tv":"TV Latina","Shopping Tv":"Compras","Religion":"Religião","Kids":"Infantil","Body & Soul":"Corpo e Alma","Education":"Educação","Indian Tv":"TV Indiana","Extreme Sports":"Esportes Extremos","Middle Eastern Tv":"TV do Oriente Médio","Celebrity Tv":"Celebridades","Science Tv":"Ciência","Bikini babe":"Biquíni","Outdoors":"Externas","German Tv":"TV Alemã","French Tv":"TV Francesa","Italian Tv":"TV Italiana","Gamer Tv":"TV Gamer","Travel":"Viagens","Asian Tv":"TV Asiática","Entertainment":"Entretenimento","News Radio":"Rádio de Notícias","Music Radio":"Rádio de Música","Language Learning":"Aprendendo Idiomas","Science Radio":"Rádio de Ciência","Tech Radio":"Rádio de Tecnologia","Science & Technology Vod":"Ciência e Tecnologia Video Sob Demanda","new video":"Novo video","new episode":"Novo episódio","new movie":"Filme novo","recommended":"Recomendado","we recommend":"Nós recomendamos","offer of the day":"Oferta do dia","news":"Notícias","music video":"video de música","CTX_SHOW_HOTKEYS":"Mostrar teclas de atalho","CTX_DISMISS_NOTIF":"Dispensar notificações","CTX_DISMISS_ALL":"Dispensar tudo","CTX_SHARE":"Compartilhar","CTX_COPY_SHARE_LINK":"Copiar link compartilhado","CTX_COPY_MAGNET_LINK":"Copiar link magnético","CTX_COPY_STREAM_LINK":"Copiar link da stream","CTX_DOWNLOAD_VIDEO":"Baixar esse vídeo","CTX_DOWNLOAD_SUBS":"Baixar Legendas","CTX_VIEW_ON_YOUTUBE":"Visualizar no YouTube","CTX_SHOW":"Mostrar","CTX_PLAY":"Reproduzir","CTX_PLAY_IN":"Reproduzir em","CTX_PLAY_ON":"Reproduzir em","CTX_WATCH_ON":"Assistir em","CTX_WATCH":"Assistir","CTX_WATCHED":"Assistido","CTX_WATCH_BEGINNING":"Assistir do inicio","CTX_WATCH_MOBILE":"Assistir em um aparelho móvel","CTX_REWIND":"Voltar para o início","CTX_MARK_WATCHED":"Marcar como assistido","CTX_MARK_NON_WATCHED":"Marcar como não assistido","CTX_MARK_UNWATCHED":"Marcar como não assistido","CTX_MARK_REST":"Marcar o resto como assistido","CTX_UNMARK_REST":"Marcar o resto como não assistido","CTX_RECEIVE_NEW_NOTIF":"Receber novas notificações","CTX_REMOVE_CACHE":"Remover do cache","CTX_REMOVE_CACHE_EP":"Remover episodio do cache","CTX_OPEN_CONTAINING":"Abrir pasta do arquivo","CTX_REMOVE":"Remover da biblioteca","CTX_AVAILABLE_OFFLINE":"Disponível Offline","CTX_PAUSED":"Pausado","CTX_ALWAYS_ON_TOP":"Manter em cima","CTX_FULLSCREEN":"Tela cheia","CTX_WRONG_SUBS":"Legendas incorretas?","CTX_REPORT_ISSUES":"Reportar um problema","CTX_COPY":"Copiar","CTX_PASTE":"Colar","CTX_CLEAR":"Limpar","CTX_CLEAR_RECENT_SEARCHES":"Limpar buscas recentes","HELLO_THERE":"Olá","HOPE_YOU_ENJOY":"Esperamos que aprecie o Stremio, que já é um dos seus aplicativos favoritos!","WHO_ARE_WE":"Quem somos? Somos a equipe por trás disso tudo. Dois caras que trabalham duro todos os dias nos últimos 3 anos, com o único objetivo de deixar este produto cada vez melhor","SUPPORT_US":"Se você gosta de usar o Stremio, se ele está sendo útil pra você, divulgue!","SPREAD_THE_WORD":"Compartilhe com seus amigos agora, divulgue o Stremio","MORE_PEOPLE":"Quanto mais pessoas usarem o Stremio, melhor ele vai ficar!","SEND_A_LINK":"Ou envie um link para nosso site","TIP_LOCALFILES":"Dica: você pode arrastar e soltar arquivos de vídeo diretamente no Stremio","ADDON_MY":"Meus Addons","ADDON_COMMUNITY":"Addons da comunidade","ADDON_OFFICIAL":"Addons oficiais","ADDON_REPOS":"Repositórios de Addons","ADDON_SEARCH":"Buscar Addons","ADDON_INSTALL":"Instalar","ADDON_CONFIGURE":"Configurar","ADDON_UNINSTALL":"Desinstalar","ADDON_UPGRADE":"Atualizar","ADDON_INSTALLED":"Instalado","ADDON_INSTALLED_MSG":"Addon instalado!","ADDON_UPGRADED_MSG":"Addon atualizado!","ADDON_UNKNOWN":"Desconhecido","ADDON_ERR":"Erro ao instalar o Addon!","ADDON_DISCONNECTED":"Desconectado","ADDON_APP_MISSING":"o aplicativo que suporta esta fonte não está instalado. Deseja instalar agora?","ADDON_APP_INSTALL":"Instalar agora","ADDON_PAGE":"Página de Addons","ADDON_TOP_CONTENT":"Melhor conteúdo deste Addon","ADDON_PROVIDES":"Este Addon lhe dará:","ADDON_WATCH":"Assista a #{types} agora!","ADDON_WATCH_FREE":"Assista a #{types} de GRAÇA agora!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Tipos suportados","ADDON_SUPPORTED_CATALOGS":"Catálogos suportados","ADDON_PROVIDES_DISCOVER":"Mais #{types} em Descubra","ADDON_PROVIDES_STREAMS":"Assista a #{types}","ADDON_PROVIDES_STREAMS_FREE":"Assista a #{types} de GRAÇA","ADDON_PROVIDES_SUBTITLES":"Legendas para #{types}","ADDON_CANTDETECT":"Nós não pudemos detectar se o Stremio está sendo executado, então não pudemos detectar quais Addons você tem instalado.","ERR_NO_META":"Nenhuma informação encontrada sobre isso ","ERR_GETTING_META":"Erro ao obter informação sobre isto.","ERR_CANT_PARSE_MAGNET":"Não foi possível analisar o link magnético","ERR_NO_MAGNET_INFOHASH":"Informação inválida no hash do link magnético","ERR_NO_FILE_PATH":"Impossível enviar uma requisição sem um caminho para o arquivo","ERR_NO_TORRENT":"Nenhum torrent retornado","ERR_NO_SUPPORTERD_FILES":"Nenhum arquivo suportado encontrado","ERR_OPENING_FILES":"Não foi possível abrir arquivos externos","ERR_INVALID_LINK":"Link inválido","ERR_REGISTERED_ONLY":"Esta opção está disponível apenas para usuários registrados.","ERR_CLIPBOARD":"Não é possível reproduzir da área de transferência","ERR_CLIPBOARD_READ":"Não é possível ler a área de transferência nesta plataforma","ERR_CLIPBOARD_GENERIC":"Nenhuma URL reproduzível encontrada na Área de Transferência. Por favor, copie uma URL (ex.: link magnético) para um vídeo.","BOARD_CONTINUE_WATCHING":"Continue assistindo","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmes escolhidos especialmente para você.<br />Este filme é uma recomendação de amostra.","BOARD_EXPLANATION_EPISODES":"Novos episódios de suas séries favoritas.<br />Adicione séries que você segue na sua Biblioteca.","BOARD_EXPLANATION_VIDEOS":"Novos episódios dos seus canais favoritos.<br />Adicione canais do YouTube que você segue na sua Biblioteca.","WEBSITE_SLOGAN_WATCH":"Assista instantaneamente","WEBSITE_SLOGAN_ALL":"Todo conteúdo em video que você adora em um único lugar","WEBSITE_SLOGAN_NEW":"Tudo o que você pode assistir","WEBSITE_SLOGAN_NEW_NEW":"Liberdade para o Stream","WEBSITE_WATCH_FROM":"Ver a partir","WEBSITE_DOWNLOAD":"Baixe agora","WEBSITE_DOWNLOAD_FOR":"Baixe agora para","WEBSITE_IS_DESKTOP":"Stremio é uma aplicação para desktop, abra esta página em seu computador e baixe","WEBSITE_DESKTOP_DEMO_VID":"Demonstração","WEBSITE_PAGE_HOME":"Inicio","WEBSITE_PAGE_FEATURES":"Funcionalidades","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Tecnologia","WEBSITE_PAGE_CREATE_ADDON":"Criar Addon","WEBSITE_PAGE_CONTACTS":"Contato","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filmes","WEBSITE_TYPE_series_PL":"Séries","WEBSITE_TYPE_tv":"TV Ao vivo","WEBSITE_TYPE_channel":"Canais","WEBSITE_STREMIO_WHAT_IS":"Stremio é um aplicativo que lhe ajuda a organizar e assistir instantaneamente seus vídeos, filmes, séries de TV e canais de TV favoritos.","WEBSITE_FEATURES_WATCH":"Assista instantaneamente em HD","WEBSITE_FEATURES_WATCH_DETAIL":"Clique e assista seus filmes favoritos, Séries, vídeos e canais de TV.","WEBSITE_FEATURES_SUBS":"Legendas automáticas","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automaticamente seleciona legendas sincronizadas para o seu idioma.","WEBSITE_FEATURES_SUBS_LABEL":"Chefe, é a sua vez.","WEBSITE_FEATURES_CAST":"Exiba na TV & Celulares","WEBSITE_FEATURES_CAST_DETAIL":"Transmita para AppleTV, Chromecast, Smart TV (DLNA/UPnP) e dispositivos móveis.","WEBSITE_LIB":"Aprecie Sua Biblioteca Pessoal Sincronizada em Todos Seus Dispositivos","WEBSITE_LIB_COLLECT":"Recuperar da Stremio","WEBSITE_LIB_IMPORT":"Importe do Facebook","WEBSITE_LIB_LOCAL":"Adicione do seu dispositivo local","WEBSITE_BOARD":"Painel - Um lugar para Notificações e Recomendações","WEBSITE_BOARD_RECOMMEND":"Shows de TV Recomendados","WEBSITE_BOARD_TRENDING":"Filme em Alta","WEBSITE_BOARD_NEW":"Novo Vídeo","WEBSITE_BOARD_EPISODE":"Novo Episódio","WEBSITE_BOARD_1":"Procurando alguma coisa interessante para assistir? Obtenha recomendações baseadas no seu perfil!","WEBSITE_BOARD_2":"Seja avisado quando um novo episódio da sua série favorita ou canal do youtube sair!","WEBSITE_BOARD_YOUTUBE":"Novos videos de canais do YouTube","WEBSITE_BOARD_EPISODES":"Novos episódios de séries que você segue","WEBSITE_ADDONS":"Addons de Conteúdo","WEBSITE_TECH_DETAIL":"Nós amamos tecnologias, nós amamos ciência desruptiva!\\nA Stremio usa as seguintes tecnologias Open Source:","WEBSITE_TECH_WCJS":"WebChimera.js permite que o Stremio reproduza qualquer formato de vídeo com uma ótima qualidade.","WEBSITE_TECH_WCJS_EXTRA":"Nós somos os mantenedores do projeto","WEBSITE_TECH_ELECTRON":"Electron provê uma plataforma inovadora no qual o Stremio é construído.","WEBSITE_TECH_ELECTRON_EXTRA":"Nós somos os contribuidores do projeto","WEBSITE_TECH_LINVODB":"Uma tecnologia de Banco de Dados que garante que seus dados estarão organizados e disponíveis em qualquer lugar que você se conectar.","WEBSITE_TECH_LINVODB_EXTRA":"Tecnologia interna","WEBSITE_CREATE_ADDON":"Crie seu Addon","WEBSITE_CREATE_ADDON_DETAIL":"Você possui um serviço fornecendo conteúdo em vídeo? Nós vamos ajudar você a se beneficiar dos recursos do Stremio criando seu Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefícios de criar um Addon para o Stremio","WEBSITE_P2P_BEAUTY":"A Beleza do streaming ponto-a-ponto","WEBSITE_P2P_1":"Vídeos em Full HD / 4K sob demanda ou transmissões ao vivo confiáveis e acessíveis","WEBSITE_P2P_2":"Plataforma de distribuição providenciando uma ótima experiência ao usuário","WEBSITE_P2P_3":"Nós criaremos um Addon reunindo exatamente o que você precisa","WEBSITE_P2P_CONTACT":"Interessado? Sinta-se a vontade para <a href=\'mailto:office@stremio.com\'>entrar em contato conosco</a>.","WEBSITE_P2P_CONTACT_EXTRA":"Será um prazer ajudar você a integrar seu conteúdo ao Stremio!","WEBSITE_P2P":"De vez em quando, aparece uma tecnologia que muda o jogo. Nós investimos muito tempo e esforço na construção do nosso mecanismo de transmissão de vídeo Peer-To-Peer (P2P) que fornece uma ótima performance e versatilidade para se adaptar a qualquer tipo de uso.\\nEntre em contato conosco para vídeos P2P sob demanda com gerenciamento de direitos autorais (DRM) habilitado ou transmissão ao vivo.","WEBSITE_THOUGHTS":"Pensamentos que compartilhamos:","WEBSITE_SPREAD":"Espalhe a palavra sobre o Stremio:","WEBSITE_CONTACT":"Contate-nos, teremos prazer em ouví-lo.","WEBSITE_OPENSOURCE":"Veja nossos projetos Open Souce em nosso ","WEBSITE_BITCOIN":"Doe Bitcoin:","WEBSITE_FAQ":"Perguntas frequentes","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Perguntas","WEBSITE_TOS":"Termos de uso","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"Sobre","WEBSITE_PAGE_BECOME_PARTNER":"Seja um parceiro","WEBSITE_ALL_YOU_CAN_WATCH":"Liberdade Para Assistir\\nTudo Que Você Deseja.","WEBSITE_FREEDOM_TO_STREAM":"Liberdade para o Stream","WEBSITE_WHAT_IS_STREMIO":"O que é Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"O Stremio é uma plataforma para agregação de conteúdo de vídeo. Descubra, organize e assista vídeos de todos os tipos de fontes em qualquer dispositivo que você possui.","WEBSITE_WHAT_IS_STREMIO_P2":"Filmes, séries, programas de TV, TV ao vivo ou canais da web como YouTube e Twitch.tv - você pode encontrar tudo isso no Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio é uma central de mídia moderna, uma solução integrada para todo seu entretenimento em vídeo. Você descobre, assiste e organiza conteúdo de vídeo a partir de Addons fáceis de instalar.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Filmes, shows de TV, TV ao vivo ou canais da web - encontre tudo isso no Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Desfrute em todos os seus dispositivos de mídia ","WEBSITE_DEVICES_COLLECT":"Recupere a partir do Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importe a partir do Facebook","WEBSITE_DEVICES_LOCAL":"Adicione a partir de unidade local","WEBSITE_JOIN_THE_PARTY_NOW":"Junte-se à festa agora","WEBSITE_DEVICES_ALL":"Fácil de usar em todos os seus dispositivos;","WEBSITE_EXTENDABLE_CATALOG":"Catálogo de vídeo infinitamente extensível;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Ótimas funcionalidades para organizar sua mídia;","WEBSITE_AS_SEEN_ON":"Como visto em","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Sobre nós","WEBSITE_LINK_TECHNOLOGY":"Tecnologia","WEBSITE_LINK_APPS":"Aplicativos","WEBSITE_LINK_DOWNLOADS":"Baixe","WEBSITE_MORE":"Mais","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Kit de Desenvolvimento","WEBSITE_LINK_CONTRIBUTE":"Contribuir","WEBSITE_LINK_COMMUNITY":"Comunidade","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & Mais","WEBSITE_LINK_HELP":"Central de Ajuda","WEBSITE_LINK_CONTACTS":"Inquérito de Negócios","WEBSITE_LINK_TOS":"Termos e Condições","WEBSITE_LINK_PRAVACY":"Politica de Privacidade","WEBSITE_SUBSCRIBE":"Inscreva-se","WEBSITE_NEWSLETTER":"Se increva no nosso newsletter para receber as novidades","WEBSITE_PLACEHOLDER_EMAIL":"Seu email","WEBSITE_COMMUNITY":"Comunidade","WEBSITE_LINK_PRAVACY_LEGAL":"Privacidade e Legal","WEBSITE_WHY":"Por que nós fazemos isso","WEBSITE_WHY_P1":"No Stremio, nós chegamos a trabalhar todos os dias porque queremos resolver um problema importante para o setor de vídeo sob demanda. Há tanto conteúdo novo publicado a cada minuto que é virtualmente impossível encontrar o caminho menos árduo.","WEBSITE_WHY_P2":"Ajudamos as pessoas a navegar neste mundo imenso de entretenimento de vídeo e a descobrir novos conteúdos para apreciar. Nossos aplicativos trazem consigo filmes, séries, TV ao vivo, canais da web e muito mais. Estamos focados em facilitar que nossos usuários possam encontrar facilmente títulos e canais que eles adoram. ","WEBSITE_WHY_P3":"Você pode usar nosso serviço em qualquer dispositivo e a qualquer hora, tornando o Stremio a única plataforma agregadora de entretenimento de vídeo que você precisará.","WEBSITE_TEAM":"Equipe","WEBSITE_TEAM_P":"A equipe do Stremio é pequena, mas poderosa: entre nós dez, codificamos em várias linguagens e compartilhamos experiência em desenvolvimento de software, design UI e UX, marketing e publicidade, e negócios e startups.","WEBSITE_FEATURES":"Recursos","WEBSITE_FEATURES_P1":"-","WEBSITE_FEATURES_DISCOVER":"Descubra novos conteúdos com facilidade","WEBSITE_FEATURES_DISCOVER_P":"Descubra facilmente novos filmes, séries, programas de TV e canais para assistir. Navegue por categoria, gênero, classificação, novidade, etc. ou simplesmente digite um nome para encontrar. Stremio faz achar conteúdo de vídeos ser uma moleza.","WEBSITE_FEATURES_ALL_CONTENT":"Todo seu conteúdo de vídeo em uma tela","WEBSITE_FEATURES_ALL_CONTENT_P1":"Veja quais filmes, séries ou vídeos você não terminou e continue assistindo. Seja notificado sobre novos episódios e lançamentos e navegue pelas recomendações que você obterá com base em seus hábitos de visualização","WEBSITE_FEATURES_LIBRARY":"Organize sua biblioteca de vídeos","WEBSITE_FEATURES_LIBRARY_P1":"Adicione qualquer título à sua biblioteca do Stremio com um único clique e encontre seu conteúdo, organizado por tipo, novidade ou ordem alfabética","WEBSITE_FEATURES_CALENDAR":"Acompanhe tudo o que você assiste","WEBSITE_FEATURES_CALENDAR_P1":"Visualize o calendário de todos os filmes e séries que você adiciona à sua biblioteca, e também saiba quando haverá um novo episódio ou uma estreia.","WEBSITE_FEATURES_BIG_SCREEN":"Aproveite o seu conteúdo de vídeo em uma tela maior ","WEBSITE_FEATURES_BIG_SCREEN_P1":"Projete o que você estiver assistindo para outro dispositivo - use o smartphone, tablet ou TV com um único clique","WEBSITE_FEATURES_SOURCES":"Assista o vídeo de várias fontes diferentes.","WEBSITE_FEATURES_SOURCES_P":"Instale os Addons oficiais e comunitárias para aproveitar o vídeo fornecido por vários fornecedores diferentes - tudo em um aplicativo elegante e fácil de usar.","WEBSITE_CREATE_AN_ADDON":"Crie um Addon.","WEBSITE_FEATURES_SYNC":"Sincronize sua biblioteca entre diferentes dispositivos e continue a reprodução","WEBSITE_FEATURES_SYNC_P1":"Entre com sua conta em todos os seus dispositivos e aproveite sua biblioteca, Addons, reprodução e calendário sincronizados.","WEBSITE_FEATURES_EXTENDABLE":"Catálogo de vídeo extensível por Addons","WEBSITE_FEATURES_EXTENDABLE_P1":"O catálogo de Addons do Stremio fornece vários Addons para instalar e assistir a uma variedade de conteúdos de vídeo. Isso inclui filmes, programas, TV ao vivo, esportes, notícias, podcasts, canais da web, videogames e muito mais.","WEBSITE_FEATURES_AUTO_SUBS":"Legendas automáticas","WEBSITE_FEATURES_AUTO_SUBS_P1":"Com nossos Addons para legenda, você obtém automaticamente as opções selecionadas para o seu idioma preferido.","WEBSITE_FEATURES_CHROMECAST":"Transmitir para Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Desfrute do conteúdo do vídeo em uma tela maior ou apenas transmita o que estiver assistindo para outro dispositivo.","WEBSITE_FEATURES_KEEP_TRACK":"Acompanhe seus programas de TV e canais da Web favoritos ","WEBSITE_FEATURES_KEEP_TRACK_P1":"Obtenha uma visualização do calendário e notificações para novos episódios de suas séries e canais da web favoritos.","WEBSITE_FEATURES_POWER_USER":"Recursos avançados para usuários","WEBSITE_FEATURES_POWER_USER_P1":"Reproduzir em um reprodutor externo","WEBSITE_FEATURES_POWER_USER_P2":"Reproduzir de um arquivo torrent ou link magnético","WEBSITE_FEATURES_POWER_USER_P3":"Importe para sua biblioteca do Facebook likes ou disco local","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"Todo o conteúdo de vídeo que o Stremio proporciona é proveniente de um sistema de Addons - nenhum fornecedor de conteúdo ou conteúdo foi incorporado no aplicativo.","WEBSITE_ADD_ONS_P2":"Existem dois grupos de Addons disponíveis: oficial e comunitária.","WEBSITE_ADD_ONS_P3":"As oficiais são desenvolvidas e hospedadas pela Stremio, enquanto os Addons comunitárias são criadas pelos membros de nossa comunidade, que também os hospedam.","WEBSITE_ADDONS_OFFICIAL":"Addons oficiais","WEBSITE_ADDONS_WATCHUB":"Transmite seus filmes, séries e shows favoritos de provedores como iTunes, Hulu, Amazon e outros serviços do Reino Unido / EUA.","WEBSITE_ADDONS_YOUTUBE":"Assista seus canais favoritos do YouTube livre de anúncios e receba notificações de novos vídeos dos canais que você segue.","WEBSITE_ADDONS_FILMON":"Assista TV ao vivo, filmes e canais interativos gratuitamente. 600 canais de TV, 45.000 filmes gratuitos, documentários e muito mais.","WEBSITE_ADDONS_OPENSUBTITLES":"Legendas de filmes e TV em vários idiomas. Milhares de legendas traduzidas e carregadas todos os dias.","WEBSITE_ADDONS_COMMUNITY":"Addons da comunidade","WEBSITE_ADDONS_FILMON_VOD":"Assista a vídeos sob demanda do Filmon.tv","WEBSITE_ADDONS_TWICH":"Assista transmissões ao vivo do Twitch.tv - a plataforma de streaming de vídeo para a indústria de e-sports.","WEBSITE_ADDONS_VODO":"Assista filmes independentes totalmente grátis.","WEBSITE_ADDONS_NETFLIX":"Assista filmes e séries da Netflix.","WEBSITE_ADDONS_CREATE":"Crie um Addon.","WEBSITE_ADDONS_CREATE_P1":"Se desejar, você pode desenvolver sua próprio Addon. Desta forma, você pode proporcianar a você e a nossa comunidade acesso a novos conteúdos de vídeo, e alcançar um novo público-alvo de milhões de usuários em todo o mundo.","WEBSITE_ADDONS_START_CREATE":"Para iniciar, visite a página do Kit de Desenvolvimento de Addons da Stremio:","WEBSITE_DOWNLOADS":"Baixar","WEBSITE_DOWNLOADS_P1":"Para um desempenho ideal, recomendamos que você use a versão mais recente disponível das aplicações Stremio. Se por algum motivo, no entanto, você prefira usar uma versão mais antiga, você pode baixá-la aqui.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio para Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio para MacOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio para Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio para Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio para Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio para Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio para Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio para iOS (versão limitada)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Colabore","WEBSITE_CONTRIBUTE_P1":"A plataforma Stremio é de código aberto e você pode criar facilmente um Addon para o conteúdo que atualmente não é fornecido.","WEBSITE_CONTRIBUTE_WHY":"Por que você deve criar um Addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Alcance novo público para o conteúdo do seu vídeo","WEBSITE_CONTRIBUTE_WHY_P2":"A base de usuários do Stremio está crescendo rapidamente - no primeiro ano de lançamento, o Stremio ganhou 1 milhão de usuários em todo o mundo e, no segundo ano de existência da plataforma, esse número cresceu para 2,5 milhões.","WEBSITE_CONTRIBUTE_WHY_P3":"Com a seu Addon, você pode alcançar facilmente esta audiência e distribuir o seu conteúdo em vídeo para eles.","WEBSITE_CONTRIBUTE_ALL":"Assista seus filmes, séries, vídeos e canais favoritos em um único lugar.","WEBSITE_CONTRIBUTE_ALL_P1":"Você é fã de um tipo de conteúdo que ainda não está disponível no Stremio? Crie um Addon para isso, e aprecie assistir seus vídeos favoritos em um dos maiores e mais fáceis de se usar hub de entretenimento do mercado.","WEBSITE_CONTRIBUTE_ALL_P2":"Além disso, você obterá a infinita gratidão de outros membros da comunidade Stremio com ideias semelhantes","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize seu Addon e ganhe dinheiro com a ajuda dela","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Uma vez que você desenvolve um novo Addon para o Stremio, você pode facilmente monetizá-lo através de várias maneiras diferentes. Se você está considerando isso, sinta-se à vontade para entrar em contato conosco no ","WEBSITE_CONTRIBUTE_MONETIZE_E":"Addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - nós ficaríamos felizes em lhe instruir e aconselhá-lo sobre as opções de monetização de seu Addon.","WEBSITE_CONTRIBUTE_TRANSLATE":"Torne-se um tradutor voluntário","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Se você deseja aproveitar as aplicações do Stremio em diferentes idiomas, você pode se juntar à nossa comunidade de tradutores voluntários. Eles nos ajudam a adicionar versões do Stremio em vários idiomas diferentes.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Você está ansioso para começar?","WEBSITE_TRANSALTE_STREMIO":"Traduza o Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Comunidades oficiais","WEBSITE_COMMUNITY_OFFICIALS_P1":"Torne-se parte da crescente comunidade Stremio. Siga-nos nas redes sociais e não se sinta intimidado em nos dizer um \\"Olá\\" - amamos saber de nossos fãs!","WEBSITE_COMMUNITY_UNOFFICIALS":"Comunidades Não Officiais","STREMIO_COMMUNITY_NL":"Stremio Nova Zelândia","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Alemanha","STREMIO_COMMUNITY_BELGIUM":"Stremio Bélgica","STREMIO_COMMUNITY_FRANCE":"Stremio França","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Itália","STREMIO_COMMUNITY_UK":"Stremio Reino Unido","STREMIO_COMMUNITY_USA":"Stremio EUA","STREMIO_COMMUNITY_MEXICO":"Stremio México","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Apoiadores e parceiros","WEBSITE_COMMUNITY_GOODIES":"Brindes Stremio","WEBSITE_COMMUNITY_WALLPAPERS":"Papéis de Parede","WEBSITE_COMMUNITY_ART":"Galeria de Arte Comunitária","WEBSITE_LINK_ART":"Galeria de arte comunitária","WEBSITE_CONTACT_US":"Fale conosco","WEBSITE_CONTACT_US_P1":"Caso tenha dúvidas, comentários ou sugestões, sinta-se à vontade para entrar em contato conosco através do formulário abaixo.","WEBSITE_CONTACT_US_P2":"Lembre-se de que estamos localizados na Bulgária, por isso, pode haver uma demora no atendimento da sua consulta devido às diferenças de fuso horário.","WEBSITE_CONTACT_US_SUCCESS":"Sua mensagem foi enviada. Nós entraremos em contato com você o mais breve possível.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Por favor, digite um e-mail válido!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Com o que sua pergunta está relacionada?","WEBSITE_CONTACT_US_Q_OS":"Qual o seu sistema operacional?","WEBSITE_CONTACT_US_PH_EMAIL":"Seu email","WEBSITE_CONTACT_US_PH_MESSAGE":"Mensagem","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ENVIAR","WEBSITE_CONTACT_US_Q_1":"Como instalar?","WEBSITE_CONTACT_US_Q_2":"Como desinstalar?","WEBSITE_CONTACT_US_Q_3":"(HTML) Como fazer lasanha?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"MacOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Tecnologia","WEBSITE_TECHNOLOGY_P1":"Nós amamos tecnologia e ciência maluca. </ br> Aqui estão os poderes do Stremio (tudo em código aberto).","WEBSITE_TECHNOLOGY_P_QT":"Desenvolvimento de software multiplataforma em seu melhor.","WEBSITE_TECHNOLOGY_P_MPV":"Um reprodutor de mídia gratuito, de código aberto e multiplataforma.","WEBSITE_TECHNOLOGY_P_RN":"O React Native permite que você crie aplicativos mobile usando apenas JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Framework de mídia embutido no aplicativo para recursos multimídia","WEBSITE_TECHNOLOGY_P_REALM":"Realm é uma plataforma mobile e um substituto para SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js é um ambiente em tempo de execução multiplataforma e de código aberto para JavaScript.","WEBSITE_TECHNOLOGY_P_RUST":"Rust é uma linguagem de programação multi-paradigma focada em segurança, especialmente concorrência segura.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribua com o projeto","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Há duas maneiras que você pode contribuir com o Stremio e nos ajudar a tornar o produto ainda melhor.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Você pode doar suas valiosas habilidades linguísticas para traduzir a plataforma...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"ou","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"...você pode usar suas habilidades de codificação para criar Addons comunitárias.","WEBSITE_TRANSLATE_STREMIO":"Traduza o Stremio","WEBSITE_404_OH_NO":"Oops! A página que você está procurando não está aqui...","WEBSITE_GO_HOME":"Principal","WEBSITE_LINK_OTHER_DOWNLOADS":"Outros downloads","WEBSITE_FAQ_ABR":"Dúvidas Frequentes","WEBSITE_SUPPORT":"Ajuda","WEBSITE_DOWNLOAD_4_0_BETA":"Baixe agora o Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Baixe para seu PC","WEBSITE_LINK_ADDON_COMPETITION":"Competição de Addon","WEBSITE_LINK_ART_CONTEST":"Concurso de arte","WEBSITE_MY_ACCOUNT":"Minha conta","WEBSITE_MAINPAGE_FAQ_001_H1":"O que é Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"O Stremio é um moderno centro de mídia que oferece a liberdade de assistir tudo o que você deseja.","WEBSITE_MAINPAGE_FAQ_002_H1":"Como funciona?","WEBSITE_MAINPAGE_FAQ_002_P1":"Depois de instalar o Stremio no seu dispositivo e criar uma conta, tudo o que você precisa fazer é visitar o catálogo de Addons e instalar qualquer Addon que desejar, e pronto!","WEBSITE_MAINPAGE_FAQ_002_P2":"Depois disso, você pode ir para as seções Descubra ou Painel para começar a explorar o conteúdo.","WEBSITE_MAINPAGE_FAQ_003_H1":"O que posso assistir aqui?","WEBSITE_MAINPAGE_FAQ_003_P1":"Diversos filmes, programas de TV, canais da Web, esportes, canais de TV, ouvir podcasts e muito mais. Graças ao nosso sistema de Addons, você pode acessar uma variedade de conteúdos.","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio é de código aberto?","WEBSITE_MAINPAGE_FAQ_004_P1":"Sim, você pode verificar os seguintes links: ${1}aplicativo de desktop${2} e ${3}organização GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio é seguro?","WEBSITE_MAINPAGE_FAQ_005_P1":"Sim. Por ser um software de código aberto, o código é auditável publicamente e você pode revisá-lo.","WEBSITE_MAINPAGE_FAQ_006_H1":"E a minha privacidade?","WEBSITE_MAINPAGE_FAQ_006_P1":"Respeitamos a privacidade dos usuários e não coletamos dados pessoais além do mínimo essencial para criar e sincronizar sua conta.","WEBSITE_MAINPAGE_FAQ_006_P2":"Há também um ${1}modo visitante ${2}na inscrição, que não requer dados: neste modo, nenhuma chamada é feita para o nossos servidores. No entanto, isso ocorre à custa de recursos úteis, como sincronizar sua biblioteca entre dispositivos.","WEBSITE_MAINPAGE_FAQ_007_H1":"Posso transmitir para minha TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Sim, suportamos o Chromecast e você pode transmitir a partir de aplicativos para computador e dispositivos móveis (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Quantos Addons o Stremio possui?","WEBSITE_MAINPAGE_FAQ_008_P1":"No final de 2019, acima de 50 - para obter mais informações, consulte nosso catálogo de Addons.","WEBSITE_MAINPAGE_FAQ_009_H1":"O Stremio pode ser estendido além do que está no catálogo de Addons?","WEBSITE_MAINPAGE_FAQ_009_P1":"Sim, você deve checar estes: ${1}PimpMyStremio${2}, ${3}Comunidades Reddit${4}, ${5}Downloader Stremio${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"Quais dispositivos o Stremio suporta?","WEBSITE_MAINPAGE_FAQ_010_P1":"Temos aplicativos de desktop para Windows, Mac e Linux. Para dispositivos móveis, suportamos Android e iOS, embora tenha em mente que a funcionalidade do iOS é limitada (não é compatível com a maioria das Addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"Existem muitos dispositivos baseados no Android nos quais você pode executar o Stremio, como NVIDIA Shield e Amazon Fire Stick, mas não os suportamos oficialmente.","WEBSITE_MAINPAGE_FAQ_011_H1":"Você pode adicionar determinado conteúdo ao Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Desculpe, mas nós não fornecemos conteúdo, porém quanto mais Addons do Stremio você instalar, mais conteúdo você poderá encontrar.","WEBSITE_MAINPAGE_FAQ_012_H1":"O Stremio pode reproduzir links magnéticos?","WEBSITE_MAINPAGE_FAQ_012_P1":"Sim, e também pode reproduzir links HTTP normais e arquivos torrent (arrastar e soltar).","WEBSITE_MAINPAGE_FAQ_013_H1":"Posso baixar um vídeo e assistir offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"O modo offline estará disponível futuramente, porém se você permitir que o Stremio faça cache no dispositivo (no painel de configurações), poderá assistir aos vídeos mais tarde, sem conexão.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nada funciona, me ajude!","WEBSITE_MAINPAGE_FAQ_014_P1":"Tem certeza de que instalou Addons? Se sim, verifique nossa ${1}central de ajuda${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Como o Stremio sustenta suas operações de desenvolvimento?","WEBSITE_MAINPAGE_FAQ_015_P1":"Ocasionalmente, exibimos anúncios não intrusivos, mas estamos pensando em mudar para um modelo de doação.","WEBSITE_MAINPAGE_FAQ_015_P2":"Para mais dúvidas, visite nossa ${1}central de ajuda${2}.","HELP_LEARN_MORE":"Ajude-nos a aprender mais sobre você.","LIFESTYLE":"Estilo de vida","SPORTS":"Esportes","FOOD_HEALTH":"Gastronomia e Saúde","BEAUTY_FASHION":"Moda e Beleza","NEWS":"Notícias","GAMING":"Jogos","SCIENCE_EDUCATION":"Ciência e Educação","MUSIC":"Música","TRAVEL":"Viagens","LATE_NIGHT":"Tarde da Noite","REALITY":"Realidade","COMEDY":"Comédia","DIY":"Faça você mesmo","TECH":"Tecnologia","CINEMA":"Cinema","CONTINUE":"Continuar","SLOW_LOADING":"CARREGAMENTO LENTO?","I_GIVE_UP":"EU DESISTO","LEARN_MORE":"Saiba mais","POOR_SOURCE":"Esta fonte possui baixa disponibilidade ou a sua conexão à internet não é suficientemente rápida","PICK_CATEGORIES_ERR":"Você precisa escolher ao menos 3 categorias","ADJUST_TIMING":"Ajustar tempo com ","ADJUST_SIZE":"Ajustar tamanho com ","SEARCH_ANYTHING":"Você Pode Pesquisar Qualquer Coisa...","ALL_CATEGORIES":"Todas","SEARCH_CATEGORIES":"Filmes, Séries, YouTube & TV","SEARCH_PERSONS":"Atores, Diretores & Escritores","SEARCH_PROTOCOLS":"HTTP & Links Magnéticos","SEARCH_TYPES":"links IMDB / TVDB","WATCHED":"Visto","SHOW_LESS":"Mostrar menos","LAST_SEARCHES":"Últimas pesquisas","CLEAR_HISTORY":"Limpar histórico","CHOOSE_SOME":"ESCOLHA ALGUNS DESTES:","NO_WEB_REMOTE":"O Web Remote não pôde ser carregado","STREMIO_OFFLINE":"Stremio está offline","STREMIO_EXPENSIVE_CONNECTION":"A conexão de rede é custosa","USE_DATA":"Dados Móveis","WARNING":"Aviso","MORE_INFO":"Mais Informações ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Carregando ...","STREMIO_TV_BACK_TO_LANGUAGES":"Voltar para idiomas","STREMIO_TV_REMOTE":"Remoto","STREMIO_TV_GO_TO":"Ir Para:","STREMIO_TV_OR_SCAN":"ou buscar:","STREMIO_TV_ADDON_INSTRUCTIONS":"Por favor, siga as instruções a fim de instalar suas Addons favoritas.","STREMIO_TV_LIVE_TV":"TV Ao vivo","STREMIO_TV_RESUME_WATCHING":"Continuar assistindo","STREMIO_TV_LOADING_BACKGROUND":"Carregando Plano de Fundo","STREMIO_TV_CHECKING_AUTHENTICATION":"Checando Autenticação","STREMIO_TV_LOADING_BOARD":"Carregando Painel","STREMIO_TV_LOGIN_HEADER_LINE_1":"Queremos que nossos usuários tenham a melhor experiência personalizada possível com nosso programa.","STREMIO_TV_LOGIN_HEADER_LINE_2":"É por esta razão que nos gentilmente pedimos que faça e/ou logue em sua conta.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Obrigado por entender,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Equipe Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"A fim de usar o Web Remote com seu Smartphone / Tablet / PC:","STREMIO_TV_WIFI_SETUP":"Configurar Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle não detectou conexão com a internet.","STREMIO_TV_WIFI_DETAILS_1":"Conectar com:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Usar senha:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Abra o navegador com o link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Padrão","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Por Último Assistido","STREMIO_TV_LIBRARY_SORT_NAME":"Por Nome","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Por Vezes Assistido","STREMIO_TV_DETAILS_SEASON_NUMBER":"Temporada ${1}","STREMIO_TV_STREAMS_LOADING":"Carregando ${1} / ${2} Addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} o Addon ainda esta carregando...","STREMIO_TV_PLAYER_SETTINGS":"Configurações do player","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Atraso das legendas","STREMIO_TV_PLAYER_AUDIO_DELAY":"Atraso de áudio","STREMIO_TV_PLAYER_VIDEO_SCALING":"Dimensionamento de vídeo","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Fonte de stream não compatível","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Falha ao abrir link externo","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Tocar com ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Tocar com player libVLC","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Mudando para o player libVLC devido a um erro de reprodução","STREMIO_TV_ADDONS_TITLE":"Use o Stremio em seu telefone ou PC para instalar ou configurar Addons e pressione \\"Sincronizar Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Nota: verifique se você está usando a mesma conta Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sincronizar Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons sincronizados com sucesso","STREMIO_TV_ADDONS_SYNC_FAILED":"Falha ao sincronizar Addons","STREMIO_TV_META_LINK_FAILED":"Falha ao abrir o meta link","STREMIO_TV_CATALOG_LOADING":"Catálogo ainda carregando...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Idioma da interface atualizado","STREMIO_TV_SETTINGS_THEME_UPDATED":"Tema atualizado","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Idioma Preferido","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Idioma Secundário Preferido","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Reprodução em túnel","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possíveis problemas de reprodução em alguns dispositivos","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Alguns formatos de vídeo podem não funcionar","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Sem cache","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Padrão","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Suave","STREMIO_TV_SETTINGS_PROFILE_FAST":"Rápido","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Rápido","STREMIO_TV_SETTINGS_SERVER_URL":"URL do servidor de streaming","STREMIO_TV_SETTINGS_SERVER_VERSION":"Versão do servidor","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Desconhecido","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Versão do Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Editar URL do servidor","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Insira um URL de servidor de streaming","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Para ler a Política de Privacidade do Stremio, visite:","STREMIO_TV_SETTINGS_TOS_TEXT":"Para ler os Termos e Condições do Stremio, visite:","STREMIO_TV_NAV_SEARCH":"Procurar","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Descobrir","STREMIO_TV_NAV_LIBRARY":"Biblioteca","STREMIO_TV_NAV_MOVIES":"Filmes","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Canais","STREMIO_TV_NAV_TV":"TV ao vivo","STREMIO_TV_NAV_SETTINGS":"Configurações","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Vincular Contas","STREMIO_TV_LOGIN_EXPIRES_IN":"Expira em","STREMIO_TV_LOGIN_STEP_ONE":"Escaneie o QR Code acima ou acesse","STREMIO_TV_LOGIN_STEP_TWO":"Faça login na sua conta Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Solicitar um novo link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Código de login atualizado","STREMIO_TV_SEARCH_PLACEHOLDER":"Digite algo","STREMIO_TV_SEARCH_NO_ADDONS":"Nenhum Addon foi solicitado para catálogos!","STREMIO_TV_SEARCH_BUTTON":"Procurar","STREMIO_TV_SEARCH_KEY_DEL":"Deletar","STREMIO_TV_SEARCH_KEY_SPACE":"Espaço","STREMIO_TV_SEARCH_KEY_CLEAR":"Limpar","STREMIO_TV_SEARCH_HISTORY_TITLE":"Histórico de pesquisa","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Você pode pesquisar por Títulos, Atores, Canais e muito mais...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Limpar histórico de pesquisa","STREMIO_TV_FILTERS_DESCRIPTION":"Escolha um dos filtros abaixo","FILTERS":"Filtros","SETTINGS":"Configurações","ACCOUNT":"Conta","LOGOUT":"Sair","THEMES":"Temas","PLAYBACK":"Reprodução","PLAYBACK_SPEED":"Velocidade de reprodução","AUDIO_TRACKS":"Faixas de áudio","VIDEOS":"Vídeos","SERVER":"Servidor","LINKS":"Links","ABOUT":"Sobre","INTERFACE":"Interface","ANIMATIONS":"Animações","STATUS":"Status","LANGUAGE":"Idioma","SIZE":"Tamanho","DELAY":"Atraso","BOLD":"Negrito","TEXT_COLOR":"Cor do texto","OUTLINE_COLOR":"Cor do contorno","BACKGROUND_COLOR":"Cor de fundo","BACKGROUND_BLUR":"Desfoque de fundo","SEEK_TIME_DURATION":"Duração do tempo de busca","AUTO_PLAY":"Reproduzir automaticamente o próximo episódio","PLAY_NOW":"Reproduzir agora","MARK_AS_WATCHED":"Marcar como assistido","MARK_AS_UNWATCHED":"Marcar como não assistido","REWIND_TO_BEGINNING":"Retornar ao início","CONTINUE_WATCHING":"Continuar assistindo","ALL":"Tudo","SECONDS":"segundos","ON":"ON","OFF":"OFF","RELOAD":"Recarregar","EDIT_URL":"Editar URL","NONE":"Nenhum","EMBEDDED":"Embutido","REMOTE_SWITCH_DEVICES":"Trocar aparelhos","REMOTE_VIDEOS":"Vídeos","REMOTE_ADJUST_TIMING":"Ajustar o tempo","REMOTE_ADJUST_SIZE":"Ajustar o tamanho","REMOTE_COULD_NOT_BE_LOADED":"Web Remote não pôde ser carregado","REMOTE_RETRY":"Tentar novamente","TORRENT_PROFILE_DEFAULT":"Padrão","TORRENT_PROFILE_SOFT":"Suave","TORRENT_PROFILE_FAST":"Rápido","TORRENT_PROFILE_ULTRA_FAST":"Ultra Rápido","FAQ_001_H1":"O que é Stremio?","FAQ_001_P1":"Stremio é um programa de midia centralizada desenhada para video entretenimento com facilidade de uso em mente. Stremio permite a você organizar & assistir sua própria coleção de vídeos, séries, canais e Tvs ao Vivo.","FAQ_001_P2":"Stremio cataloga o conteúdo e apresenta pra você de seu disco local e de nosso sistema de Addons.","FAQ_001_P3":"Também irá notificá-lo quando novos episódios/videos/filmes que você estiver interessado sair, e mostrará recomendações de filmes para você.","FAQ_02_H1":"Como Stremio se compara ao Kodi e Plex?","FAQ_02_P1":"Nós nos inspiramos nos dois programas, mas temos diferentes objetivos - Stremio é especificamente voltado para vídeo entretenimento. Batalhamos para sermos a solução padrão para isso, tendo em foco a facilidade de uso.","FAQ_02_P2":"Stremio nunca será tão customizável e com ricos recursos como Kodi e Plex, mas sendo significativamente mais fácil de usar. Simplesmente ${1} pegue isso e veja ${2} :)","FAQ_03_H1":"Como Stremio se compara ao Netflix?","FAQ_03_P1":"Novamente, Netflix é uma de nossas inspirações. Trabalharemos arduamente para atingir a experiência de uso proporcionada pelo Netflix, e mais um porção de melhorias. No entanto, o mais importante, nós estamos dando a você a liberdade de gerenciar sua própria biblioteca e adicionar novas fontes de conteúdos com o nosso sistema de Addons.","FAQ_03_P2":"Isso faz do Stremio infinitamente extensível, e então quando você usá-lo, você nunca ficará limitado ao conteúdo que o Netflix decida licenciar. Por exemplo, através do Stremio você pode assistir conteúdo de ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} e mesmo ${9}Netflix${10}!","FAQ_04_H1":"Como Stremio se compara ao Flipboard?","FAQ_04_P1":"Raramente recebemos esta questão, exceto quando falamos com pessoas iniciantes :)","FAQ_04_P2":"Stremio é desenhado como um agregador de conteúdo, ao qual essencialmente Flipboard o faz para vídeo. Isso é muito parecido em nosso painel, ao qual da a você catálogos e notificações de novos episódios/novos vídeos que você segue, tal qual Flipboard.","FAQ_05_H1":"Como Stremio se compara ao Popcorn Time?","FAQ_05_P1":"Stremio e Popcorn Time são similares em interface de uso, porque não há muitas maneiras de fazer catálogo de vídeo entretenimento, certo? :)","FAQ_05_P2":"Mas enquanto o Popcorn Time tem o foco em entrega de torrents de fontes específicas, Stremio não possui restrição e é meramente um agregador de conteúdo - não é travado em uma fonte de conteúdo específica.","FAQ_05_P3":"Além disso, nós não provemos nenhum Addon para torrent por padrão, então Stremio não cobre o caso de uso do Popcorn Time na sua funcionalidade oficial.","FAQ_05_P4":"Uma outra diferença notável é que o Popcorn Time é completamente de código aberto, enquanto Stremio é ${1} parcialmente de código aberto ${2}.","FAQ_06_H1":"Vocês que adicionam estes filmes/séries?","FAQ_06_P1":"Não, desculpe :(","FAQ_06_P2":"Como já mencionamos em muitas outras questões, Stremio não provê nenhum conteúdo por si próprio - tudo é adicionado diretamente pelo sistema de Addons. Caso queira solicitar algum conteúdo, você pode usar o botão “Reporte” no reprodutor, ao qual irá enviar um email para o autor do Addon ao qual está usando.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Vocês criarão Addons para X?","FAQ_08_P1":"Isso é inteiramente possível.","FAQ_08_P2":"Se você tem uma idéia para um Addon, escreva para ${1}office@stremio.com${2}, mas por favor, tenha certeza de que a idéia desse Addon não irá infringir nenhum direito de propriedade intelectual ou termos de uso.","FAQ_08_P3":"No momento, os próximos movimentos em nosso projeto são Addons para FandangoNOW, vídeo sob demanda no Filmon.tv e Crunchyroll.","FAQ_09_H1":"Stremio usa BitTorrent?","FAQ_09_P1":"Sim. Stremio suporta BitTorrent como um protocolo streaming. Você pode usá-lo com a Addon torrent ou por arrastar e soltar um arquivo .torrent dentro do Stremio, ou mesmo colando um link magnético dentro do campo de busca.","FAQ_09_P2":"Por favor, note que único Addon oficial que usa BitTorrent é ${1}Vodo${2}, ao qual provê produção independente, todos permitidos para serem distribuídos com BitTorrent.","FAQ_09_P3":"Nós não suportamos o uso de qualquer Addon de terceiro ao qual pode viabilizar o infringimento de leis de direitos.","FAQ_10_H1":"O que posso assistir no Stremio com as Addons oficiais?","FAQ_10_P1":"Por padrão, você pode assistir conteúdo do Filmon.tv, YouTube e Vodo dentro do Stremio com o reprodutor interno. Adicionalmente nós temos um Addon para Twitch.tv e alguns outros.","FAQ_10_P2":"Este combinado provê uma seleção de:","FAQ_10_L1":"Canais de TV populares, provido por Filmon.tv - por exemplo E4, BBC, Bollyworld TV","FAQ_10_L2":"Tudo do YouTube - por exemplo BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Filmes indepententes com Vodo","FAQ_10_L4":"Transmissão de jogos online com Twitch.tv","FAQ_10_P3":"Adicionalmente, há muitas fontes de conteúdo providas com Guidebox e Addons Netflix, ao qual <b>não</b> reproduzem inteiramente dentro do Stremio, mas pode redirecionar para o dado serviço. Por exemplo, o Addon Guidebox lhe dá uma seleção de filmes que você pode obter conteúdo streaming dentro dos Estados Unidos de graça de serviços como TubiTV e Crackle.","FAQ_11_H1":"Stremio não instala, o que devo fazer?","FAQ_11_P1":"Se você usa Windows, tente ${1}este instalador alternativo${2}.","FAQ_11_P2":"Pra quem usa Mac OS X, por favor esteja ciente que nós não suportamos versões inferiores a OS X Mavericks (10.9).","FAQ_11_P3":"Caso esteja usando Linux, fique avisado que nós damos suporte apenas para a versão 64 bits (x64) no momento.","FAQ_11_P4":"Se não ainda não conseguiu resolver seu problema, por favor nos mande uma mensagem no ${1}Grupo do Facebook${2}.","FAQ_12_H1":"Por que meu antivirus reclama? O Stremio é seguro?","FAQ_12_P1":"Nós lhe asseguramos que o Stremio é ${1}100% limpo${2}.","FAQ_12_P2":"Seu antivirus está reclamando porque nós incluimos propaganda em nosso instalador, e isso faz com que o Stremio seja classificado como um ad-ware.","FAQ_12_P3":"Se você não está seguro, você pode usar nosso ${1}instalador alternativo${2}.","FAQ_13_H1":"Como posso fazer um Addon?","FAQ_13_P1":"Para iniciantes, recomendados que leiam nosso ${1}módulo de sistema de Addon${2} no GitHub.","FAQ_13_P2":"Todavia, você pode seguir o ${1}Tutorial Olá Mundo${2}.","FAQ_13_P3":"Se você não tem nenhum conhecumento em programação, por favor poste sua idéia na ${1}comunidade Reddit${2} e nos contate com sua idéia de Addon no ${3}office@stremio.com${4}.","FAQ_14_H1":"Como as Addons são publicadas?","FAQ_14_P1":"Quando você cria um Addon e hospeda e coloca um campo <b>endpoint</b> no seu manifest, ao qual aponta para endereço de Addon ativo, o Addon irá automaticamente se auto-publicar em nosso ${1}Catálogo de Addons${2}.","FAQ_14_P2":"Isso acontece porque parte do servidor do módulo de Addon do Stremio automaticamente faz uma chamada para nossa API para publicar o Addon. Quando nossa API valida seu <b>endpoint</b> como um Addon válida, isso irá constar no catálogo.","FAQ_15_H1":"Eu posso executar o Stremio no navegador?","FAQ_15_P1":"No momento não, mas em breve !","FAQ_15_P2":"Se você está curioso para ver uma versão Alpha, você pode acessar aqui: ${1}alpha4.strem.io${2}. Tenha em mente que o streaming está disabilitado. Damos suporte para Chrome, Firefox, Opera e Edge.","FAQ_16_H1":"Transmissão para a TV não funciona / legendas não funcionam","FAQ_16_P1":"Transmissão para a TV usa a tecnologia DLNA que é muito inconsistente entre modelos de fabricantes diferentes. Por esta razão, nós não temos a habilidade de testar em cada caso, então estamos longe da perfeição. Estamos trabalhando em melhorar constantemente, mas nós não podemos lhe dar uma estimativa de tempo de quando a tecnologia DLNA funcionará corretamente em sua TV.","FAQ_16_P2":"Se você ainda não vê sua TV no menu de transmissão, por favor tente desabilitar sua conexão de rede e habilite novamente (no Windows, click com botão direito em Rede e click em Habilitar/Desabilitar), também reinicie seu roteador, TV e PC.","FAQ_16_P3":"Se você ainda está encontrando problemas, você pode nos ajudar enviando as informação de seu modelo de TV e fabricante para ${1}office@stremio.com${2}.","FAQ_16_P4":"Em quanto isso nós recomendamos o Chromecast, ao qual suportamos muito bem, ou simplesmente plugando sua TV no seu PC com um cabo HDMI.","FAQ_17_H1":"Stremio congela ou trava, o que posso fazer?","FAQ_17_P1":"Primeiro de tudo, se você está usando Windows 7 com o antivirus AVG: nós temos problema com essa combinação. O problema é o próprio AVG, e não há uma solução definitiva para corrigirmos isso. Infelizmente, exceções ou desabilitar o antivirus não funciona. A única maneira é trocar seu antivirus.","FAQ_17_P2":"Se isso não é o problema, mas você ainda usa Windows, por favor atualize seu o sistema incluindo os drivers da GPU, e tente novamente.","FAQ_17_P3":"Se o seu problema continua sem solução, ou utiliza Mac ou Linux, por favor nos escreva reportando em detalhes o problema em ${1}nosso grupo no Facebook${2}.","FAQ_18_H1":"Como posso fazer um Addon?","FAQ_18_P1":"Para iniciantes nós recomendamos que veja nosso ${1}módulo de sistema de Addon${2} no GitHub.","FAQ_18_P2":"No entanto, você pode seguir pelo nosso ${1}tutorial Olá Mundo!${2}.","FAQ_18_P3":"Se você não tem nenhuma habilidade em programação, por favor, poste sua idéia na ${1}comunidade do Reddit${2} e nos contate com sua idéia de Addon em ${3}office@stremio.com${4}.","FAQ_19_H1":"Por que o Stremio está ocupando espaço em disco?","FAQ_19_P1":"Stremio tem um <b>cache local</b> para temporariamente deixar os arquivos de vídeo descarregados.","FAQ_19_P2":"Isso tem dois benefícios: primeiro, permite ao Stremio pré carregar o vídeo para garantir uma transmissão suave. Segundo, isso deixa os vídeos no cache local para que você possa continuar assistindo off-line.","FAQ_19_P3":"Quanto o Stremio depende da configuração do <b>Cache</b> no painel de Configurações. Stremio pode manter uma quantidade (exemplo 2GB) no seu disco, a menos que o video descarregado seja maior que isso, no qual de have espaço suficiente para mantê-lo enquanto o descarrega.","FAQ_20_H1":"Onde está a pasta do cache?","FAQ_20_P1":"No Windows, o cache do Stremio fica no drive ao qual você selecionou nas configurações (exemplo \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"No MacOS, fica localizado em \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"No Linux, fica localizado em \\"~/.stremio/stremio-cache\\" ou \\"~/stremio-cache\\"","FAQ_21_H1":"Eu recebi a mensagem de erro \\"Servidor de streming não encontrado\\", o que posso fazer?","FAQ_21_P1":"Se você recebeu esta mensagem, isso implica em uma das possibilidades:","FAQ_21_P2":"1) Você está tentando usar um Addon suportada pelo código do YouTube/BitTorrent, através de nossa ${1}versão web${2}. Nesse caso, você deve instalar nossa versão para desktop de ${3}nosso website${4}.","FAQ_21_P3":"2) Há algo de errado com a instalação do Stremio. Neste caso, tente reinstalar nossa versão mais recente ${1}do website${2}. Se isso nao ajudar, tente desabilitar os programas de antivirus e firewal, reinicie seu PC e tente novamente. Se isso não funcionar, por favor nos contate pelo ${3}nosso grupo do Facebook${4}.","FAQ_22_H1":"Eu não posso ver/usar a maioria das Addons no iOS","FAQ_22_P1":"Devido a restrições nos termos e condições da loja da Apple, nós temos restringido somente aplicativos iOS de um grupo particular de Addons.","FAQ_22_P2":"Mas esteja avisado - haverão mais Addons para iOS no futuro, e nós poderemos também adicionar uma integração que permitirá o uso de todas Addons do Stremio graças a conexão do aplicativo iOS com o servidor de Streaming do Stremio."}')},5857:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filme","TYPE_series":"Série","TYPE_tv":"Canal de TV","TYPE_channel":"Canal","TYPE_other":"Outro","TYPE_movie_PL":"Filmes","TYPE_series_PL":"Séries","TYPE_tv_PL":"TV","TYPE_channel_PL":"YouTube","TYPE_other_PL":"Outros","TYPE_ALL":"Todos","VIDEO":"Vídeos","BACK":"Voltar","MORE":"Mais","DONE":"Concluído","COPY":"Copiar","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Modo de casting","CASTING_MODE_HLSV2":"Predefinido","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Sem transcodificação","Discover":"Explorar","Board":"Painel","Library":"Biblioteca","My Library":"A minha biblioteca","Calendar":"Calendário","NOTIFICATION_ONLINE":"Estás online","NOTIFICATION_OFFLINE":"Estás offline","INTERNET_CONNECTION":"Ligação à Internet","STORAGE_FULL_TITLE":"Aviso: Armazenamento cheio!","STORAGE_FULL_TEXT":"Não será possível guardar as definições ou informações de conta. Considera fechar o Stremio e voltar a abrir, caso este erro persista, poderás ter de reinstalar o Stremio.","SEARCH":"Pesquisar","SEARCH_NO_RESULTS":"Não foram encontrados resultados","SEARCH_EXPLANATION_CONTENT":"Pesquisa por filmes, séries, canais YouTube e de TV","SEARCH_EXPLANATION_PEOPLE":"Pesquisa por atores, realizadores e argumentistas","SEARCH_PASTE_LINKS":"Colar links HTTP e Magnet","SEARCH_OR_PASTE_LINK":"Pesquisa ou cola o link","ADD_TO_LIB":"Adicionar à biblioteca","REMOVE_FROM_LIB":"Remover da biblioteca","ADDED_TO_LIB":"Adicionado à biblioteca","REMOVED_FROM_LIB":"Removido da biblioteca","TRAILER":"Trailer","WATCH_TRAILER":"Ver trailer","WATCH_NOW":"Ver agora","SHOW":"Mostrar","SHOW_MOVIE":"Mostrar filme","WATCH_RANDOM":"Ver aleatório","IMDB_RATING":"Classificação IMDb","YEAR":"Ano","DIRECTOR":"Realizador","WRITER":"Argumentista","LEAD_ACTORS":"Elenco Principal","CAST":"Elenco","CREW":"Equipa técnica","SHOW_MORE_CAST":"Mostrar mais »","AIRED":"Transmissão original","SEASONS":"Temporadas","GENRE":"Género","CATALOG":"Catálogo","SUMMARY":"Sinopse","SHOW_MORE":"Mostrar mais","SIMILAR":"Semelhante","UPCOMING":"Próximos","ENDED":"Finalizados","DURATION":"Duração","FEATURED":"Destaque","METADATA":"Metadados","CATEGORY":"categoria","LINKS_GENRES":"Géneros","LINKS_CAST":"Elenco","LINKS_DIRECTORS":"Realizadores","SEARCH_VIDEOS":"pesquisar vídeos","SEARCH_PLACEHOLDER":"pesquisar ou colar link","ADDON":"Addon","ADDONS":"Addons","OFFICIAL":"oficial","ADDONS_OFFICIAL":"Addons oficiais do Stremio","ADDONS_POPULAR":"Popular na tua área","ADDON_FREE":"gratuito","ADDON_PEERED":"partilhado","ADDON_SUBSCRIPTION":"subscrição","ADDON_STREAM_GEORESTRICTED":"indisponível no teu país","ADDON_STREAM_OFFLINECACHE":"Cache offline","ADDON_STREAM_LOCALFILE":"Ficheiro local","SHARE_ADDON":"Partilhar addon","AVAILABLE_STREAMS":"Streams disponíveis","NO_STREAM":"Nenhuma stream disponível","ALL_ADDONS":"Todos","INSTALL_MORE_ADDONS":"Para mais streams, por favor, instala mais addons","STREAM_NOT_SUPPORTED":"A stream escolhida não é suportada nesta plataforma.","ADDON_CATALOGUE":"Mostrar todos os addons »","ADDON_CATALOGUE_MORE":"Instalar addons »","REPO_ADDED":"Repositório adicionado","ADDON_REPO_EXIST_ERR":"Esta coleção de addons já existe","ADDON_REPO_ERR":"Ocorreu um erro ao adicionar a coleção","ADDON_ADD_ERR":"Ocorreu um erro ao adicionar o addon","ERR_ADDON_PROTECTED":"Não é possível desinstalar o addon, é protegido","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Ocorreu um erro - a autenticação falhou.","ERR_NOT_COLLECTION_URL":"Não é um link de coleção","ERR_NOT_ADDON_URL":"Não é um link de addon válido","ERR_DETECTFROMURL":"Não foi possível detetar a extensão pelo link","ADDON_DUPLICATE_WARNING":"Aviso: extensão duplicada","ADDON_COLLECTION_SET_FAILED":"A sincronização dos addons instalados para a tua conta falhou","SETTINGS_DATA_EXPORT":"Exportar dados","ADDON_PULL_FAILED":"A sincronização dos addons instalados a partir da tua conta falhou","REFRESH_ON_CLICK":"Clica para tentar novamente","STILL_IN_THEATER":"Filme ainda nos cinemas","WATCH_IN_CINEMA":"Vê-o no cinema mais perto de ti","IN_THEATER":"Nos cinemas","GET_TICKETS":"Obter bilhetes","UPCOMING_EPISODE":"Próximo episódio","UPCOMING_EPISODE_MESSAGE":"Este episódio estará disponível brevemente","MISSING_DATE_EPISODE":"Data do episódio em falta","MISSING_DATE_EPISODE_MESSAGE":"Este episódio ainda não foi transmitido","CHANNEL_NOT_SCRAPED":"Este canal não está disponível.<br>Volta a tentar dentro de minutos.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Adiciona à biblioteca para receberes notificações quando estiver disponível.","GET_NOTIFIED_WHEN_AVAILABLE":"Serás notificado quando estiver disponível.","WARNING_STREAMING_SERVER":"Atenção: o servidor de transmissão local não foi encontrado. A transmissão através do YouTube e BitTorrent não estará disponível.","WARNING_STREAMING_SERVER_DISMISS":"Dispensar","WARNING_STREAMING_SERVER_LATER":"Mais tarde","DECODER_WARNING":"Atenção: provavelmente este vídeo não é compatível com o teu hardware. Tem em conta de que a reprodução poderá ser lenta.","PLAYER_ERROR":"Ups, ocorreu um erro na reprodução","PLAYER_ERROR_LOOKSLIKE":"Isto parece ser","PLAYER_ORIENTATION":"Orientação da reprodução","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Bloqueado","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Reprodução bloqueada no modo paisagem","PLAYER_ORIENTATION_SENSOR":"Reprodução automática (sensor)","PLAYER_PLAYBACK_SPEED":"Velocidade de reprodução","PLAYER_PLAYBACK_ERROR":"Erro de reprodução, tente novamente","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Erro desconhecido","PLAYER_PLAYBACK_ERROR_DEFAULT":"Pedimos desculpa, este vídeo não pode ser transmitido por {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Idioma das legendas","PLAYER_SUBTITLES_VARIANTS":"Variantes das legendas","PLAYER_SUBTITLES_SETTINGS":"Definições das legendas","PLAYER_SUBTITLES_DISABLED":"As legendas estão desativadas","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Posição vertical","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Reproduzir","PLAYER_PAUSE":"Colocar em pausa","PLAYER_NEXT_VIDEO":"Próximo vídeo","PLAYER_MUTE":"Silenciar","PLAYER_UNMUTE":"Ativar som","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Direto","PLAYER_NEXT_VIDEO_TITLE":"A seguir","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Fechar","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Ver agora","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"A transmitir de","CASTING_TO":"A transmitir para","NETWORK_STATUS":"Estado da rede","STREAM_SPEED":"Velocidade de receção:","STREAM_BUFFERED":"Carregado:","PEERS_INFO":"Informação dos pares","PEERS_ACTIVE":"Ativo:","PEERS_CONNECTED":"Ligado:","PEERS_WAITING":"À espera:","TRANSCODING_WARNING":"Atenção: a transcodificar vídeo.","STREAM_LOADING":"a carregar...","PLAYING_LOCAL":"a reproduzir a partir de um ficheiro local","PLAYING_CACHE":"a reproduzir a partir da cache","WRONG_SUBS":"Legendas incorretas","ERR_SUBS_LOADING_TITLE":"Erro ao carregar as legendas","ERR_SUBS_LOADING":"Não foi possível carregar as legendas, poderá haver um erro no addon que estás a utilizar ou com a tua ligação à Internet","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Não foi possível carregar as seguintes legendas","ERR_CASTING_UPDATE_TITLE":"Não foi possível atualizar as informações do dispositivo de transmissão: o servidor de transmissão pode estar offline","CHOOSE_DEVICE":"Escolhe um dispositivo para transmitir","NO_CAST_DEVICES":"Sem dispositivos de transmissão disponíveis.","NO_SETTINGS":"Não há definições disponíveis.","PHONE_TABLET":"Telemóvel / Tablet","SUBTITLES":"Legendas","SUBTITLES_CHANGE":"Alterar legendas para ","SUBTITLES_CHANGE_NONE":"Desculpa, mas não existe mais legendas para este idioma","SUBTITLES_CHANGE_ACIVE":"As legendas #{{subtitlesDialog.activeIdx + 1}} estão ativas. Clica em \\"Continuar\\" para ativar as legendas #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativamente,","SUBTITLES_ADJUST_DELAY":"Ajusta o atraso das legendas:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Ou utiliza as teclas <span>G</span> / <span>H</span> para ajustar os tempos.","SUBTITLES_ADJUST_DELAY_TIP":"Dica: Podes utilizar as teclas <span>G</span> / <span>H</span> durante a reprodução para ajustar.","SUBTITLES_DELAY":"Atraso de legendas:","SUBTITLES_LOADING":"A carregar as legendas...","SUBTITLES_UNAVAILABLE":"Não há legendas externas disponíveis","SUBTITLES_DISABLED":"Desativado","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Áudio","DEFAULT_LANGUAGE":"Idioma predefinido","DEFAULT_SECONDARY_LANGUAGE":"Idioma secundário predefinido","SEASON":"Temporada","EPISODE":"Episódio","SPECIAL":"Especiais","SORT":"Ordenar","SORT_BY":"Ordenar por","FILTER":"Filtro","SORT_TRENDING":"Tendências","SORT_RECENT":"Recentes","SORT_ALPHABET":"A-Z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"Classificação","SORT_WATCHED":"Vistos","SORT_YEAR":"Ano","SELECT_TYPE":"Selecionar tipo","SELECT_SORT":"Selecionar ordem","SELECT_CATALOG":"Selecionar catálogo","SELECT_GENRE":"Selecionar género","SORT_LASTWATCHED":"Por últimos vistos","SORT_NAME":"Por nome","SORT_TIMESWATCHED":"Por vezes vistas","New for You":"Novo para ti","New Episodes":"Novos episódios","New Videos":"Novos vídeos","Recommendations":"Recomendações","LIBRARY_RESUME":"Retomar","LIBRARY_PLAY":"Reproduzir","LIBRARY_DETAILS":"Detalhes","LIBRARY_RESUME_DISMISS":"Fechar","LIBRARY_CLEAR_PROGRESS":"Limpar progresso","LIBRARY_REMOVE":"Remover","LIBRARY_NOT_LOGGED_IN":"A biblioteca apenas está disponível para utilizadores com a sessão iniciada","CALENDAR_NOT_LOGGED_IN":"O calendário apenas está disponível para utilizadores com a sessão iniciada","NOT_LOGGED_IN_CLOUD":"Acede aos teus filmes e séries favoritas a qualquer altura, em qualquer lugar","NOT_LOGGED_IN_RECOMMENDATIONS":"Recomendações adaptadas ao teu histórico de visualizações","NOT_LOGGED_IN_NOTIFICATIONS":"Nunca percas um episódio outra vez","NOT_LOGGED_IN_CALENDAR":"Programa o teu calendário de visualizações pessoal","DISCOVER_FEATURED":"Em destaque","DISCOVER_TOP":"Popular","DISCOVER_OSCAR":"Vencedores de Óscares","DISCOVER_WARNING_TITLE":"Ups!","DISCOVER_EMPTY_CATALOG":"Este addon não possui conteúdo.","DISCOVER_ADULT_WARNING":"Este conteúdo é apenas para adultos. Tens mais de 18 anos?","DISCOVER_NOADDON_WARNING":"Atenção: nenhum addon do Stremio ativo para este tipo. Ao exibir ficheiros guardados, nada será atualizado.","DISCOVER_LOAD_ERR":"Ocorreu um erro e não foi possível carregar o conteúdo.","DISCOVER_ADDON_UNINSTALLED":"Este conteúdo já não está disponível, poderás ter de reinstalar o addon.","UNINSTALL_THIS_ADDON":"Desinstalar este addon","ERR_ADDON_NOT_INSTALLED":"Este addon não está instalado. Instalar agora?","DETAIL_RECEIVE_NOTIF_SERIES":"Receber notificações para novos episódios.","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receber notificações para novos vídeos.","SIDEBAR_SHOW_STREAMS":"Mostrar streams","RELAUNCH":"Reiniciar agora!","UPGRADE":"Está disponível uma nova versão! Atualiza para a versão mais recente do Stremio","RELOAD_UI":"Recarregar interface","MANUAL_UPDATE_TITLE":"Atualiza para uma versão do Stremio mais recente.","MANUAL_UPDATE_LINE1":"Estás a utilizar uma versão do Stremio que se encontra desatualizada, é recomendável que atualizes para a versão mais recente.","MANUAL_UPDATE_LINE2":"Atualiza assim que for possível.","BUTTON_UPDATE_LATTER":"Agora não","BUTTON_UPDATE_NOW":"Atualizar","ANONYMOUS_USER":"Utilizador anónimo","DONT_HAVE_ACC":"Não tens uma conta?","HAVE_ACC":"Já tens conta?","PASSWORD":"Palavra-passe","PASSWORD_CONFIRM":"Confirmar palavra-passe","EMAIL":"E-mail","FB_LOGIN":"Iniciar sessão com o Facebook","FB_NOTHINGSHARED":"Nada é partilhado sem a tua permissão","FB_NOPOST":"Não publicaremos nada na tua cronologia","OR":"ou","I_ACCEPT":"Aceito os","I_ACCEPT_BY_CLICKING":"Ao clicar no botão acima certifico-me de que aceito os ","TOS":"Termos e Condições","MUST_ACCEPT_TERMS":"Deves aceitar os termos e condições","PASSWORDS_NOMATCH":"As palavras-passe não coincidem","SIGN_UP":"Registar","SIGN_UP_EMAIL":"Regista-te com um e-mail","CLICK_TO_SIGN_UP":"Clica aqui para registares uma nova conta.","LOG_IN":"Iniciar sessão","LOG_OUT":"Terminar sessão","EXIT_FULLSCREEN":"Sair do modo de ecrã inteiro","ENTER_FULLSCREEN":"Abrir em modo de ecrã inteiro","PLAY_URL_MAGNET_LINK":"Abrir URL/Magnet link","HELP_FEEDBACK":"Ajuda e opinião","TERMS_OF_SERVICE":"Termos de utilização","PRIVACY_POLICY":"Política de privacidade","ABOUT_STREMIO":"Sobre o Stremio","USER_PANEL":"Painel do utilizador","LOGIN_LABEL":"Iniciar sessão","GUEST_LOGIN":"Iniciar sessão como convidado","GUEST_LOGIN_NOTICE":"Não é recomendado que inicies sessão como convidado. Autentica-te para que o Stremio sincronize a tua biblioteca e te mostre notificações das tuas séries/canais. Tens a certeza de que queres continuar?","GUEST_LOGIN_NOTICE_2":"Não é recomendado que inicies sessão como convidado - não vais ter acesso à tua biblioteca e às notificações do painel, sendo estas funções vitais do Stremio. Tens a certeza de que queres continuar?","CLICK_HERE":"Clica aqui","WRONG_PASSWORD":"Palavra-passe incorreta. Caso te tenhas esquecido da tua palavra-passe, ","SET_A_PASS":"Introduz uma nova palavra-passe","RESET_PASSWORD":"Redefinir palavra-passe","FORGOT_PASSWORD":"Esqueceste-te da tua palavra-passe?","EMAIL_USED_WITH_FB":"Este e-mail foi utilizado com uma sessão do Facebook.","INVALID_EMAIL":"Introduzir um e-mail válido","INVALID_PASSWORD":"Introduzir uma palavra-passe válida","CONN_ERR":"Erro de ligação - Por favor, tenta novamente mais tarde.\\n\\nSe o problema persistir, desativa ou configura a tua firewall e/ou o teu anti-vírus (principalmente o Bitdefender).","IMPORT_FROM_GUEST":"Importar biblioteca a partir da conta de convidado","RECEIVE_UPDATES_EMAIL":"Receber notificações por e-mail do Stremio","LOGIN_FAILED":"A autenticação falhou.","SIGNUP_FAILED":"Ocorreu um erro ao criar a tua conta.","SEARCH_FAILED":"A pesquisa falhou","EMAIL_USED":"Este e-mail já está a ser utilizado.","WAITING_FB_LOGIN":"Iniciar sessão com o Facebook...","EXTERNAL_PLAYER_TITLE":"Abrir com um reprodutor de vídeo externo","EXTERNAL_REMEMBER_PLAYER":"Relembrar a tua escolha?","EXTERNAL_ALWAYS_PLAY":"Sim","EXTERNAL_ONLY_ONCE":"Não","BEST_FIT":"Melhor ajuste","FIT_SCREEN":"Ajustar ao ecrã","FILL":"Ajustar","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Diz-nos do que gostas","INTRO_TASTE_LONG":"Conta-nos sobre o que gostas de ver","INTRO_TASTE_PICK":"Seleciona {{interestsRemaining}} dos teus interesses","INTRO_TASTE_PICK_MORE":"Seleciona mais {{interestsRemaining}} dos teus interesses","INTRO_TASTE_HELP_US":"Ajuda-nos a saber mais sobre ti.","INTRO_TASTE_CHOOSE_THESE":"Escolhe alguns destes:","INTRO_TASTE_CHOOSE_MIN":"Escolhe pelo menos 3 categorias","INTRO_TASTE_CHOOSE_MIN_ERR":"Tens de escolher pelo menos 3 categorias!","INTRO_TASTE_LIFESTYLE":"Estilo de vida","INTRO_TASTE_SPORTS":"Desporto","INTRO_TASTE_FOOD_HEALTH":"Gastronomia e saúde","INTRO_TASTE_BEAUTY_FASHION":"Moda e beleza","INTRO_TASTE_NEWS":"Notícias","INTRO_TASTE_GAMING":"Videojogos","INTRO_TASTE_SCIENCE_EDU":"Ciência e educação","INTRO_TASTE_MUSIC":"Música","INTRO_TASTE_TRAVEL":"Viagens","INTRO_TASTE_LATE_NIGHT":"Late night show","INTRO_TASTE_REALITY":"Reality show","INTRO_TASTE_COMEDY":"Comédia","INTRO_TASTE_DIY":"Faz tu mesmo","INTRO_TASTE_TECH":"Tecnologia","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"O addon selecionado não é suportado nesta plataforma.","ADDON_DISCLAIMER":"Ao utilizar um addon de terceiros estarás sujeito à sua responsabilidade e às leis do governo onde está localizado.","ADDON_ACTIVATE":"Ativar este addon?","ADDON_REPO_ADD":"URL do repositório do addon","ADDON_ADD":"Adicionar","ADD_ADDON":"Adicionar addon","ADD_ADDON_DESCRIPTION":"Podes adicionar um addon através de um link externo, que aparecerá nos Addons instalados.","PASTE_ADDON_URL":"Cola o URL do addon","WHATS_NEW":"O que há de novo","BUTTON_CONTINUE":"Continuar","BUTTON_ACTIVATE":"Ativar","BUTTON_ACTIVATED":"Ativo","BUTTON_CANCEL":"Cancelar","BUTTON_SUBMIT":"Submeter","BUTTON_DISMISS_ALL":"Fechar tudo","BUTTON_VIEW_ALL":"Ver tudo","BUTTON_SEE_ALL":"Ver tudo","BUTTON_COLOR_TRANSPARENT":"Transparente","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"A tua biblioteca está vazia. Descobre o quão útil pode ser :) ","HOW_START":"Aqui está como podes começar:","LIB_EMPTY_CAL":"O teu calendário mostra as séries da biblioteca.","HOW_START_CAL":"Aqui está como podes adicionar uma série:","LIB_EMPTY_BOARD":"O painel mostra notificações e recomendações relacionadas com a tua biblioteca.","HOW_START_BOARD_WAIT":"Por favor, adiciona algumas séries ou canais à tua biblioteca e dá-nos uns instantes para as processar :)","HOW_START_BOARD":"Aqui está como podes adicionar séries e filmes:","IMPORT_FB":"Importar coisas de que gostas do <span>Facebook</span>","IMPORT_TRAKT":"Importar a tua biblioteca do <span>Trakt</span>","IMPORT_DISCOVER":"Encontra coisas interessantes em <span>Explorar</span>","IMPORT_DISK":"Importar filmes ou séries que tenhas no <span>disco local</span>","PLEASE_CREATE_ACC":"Por favor, <u>cria uma conta</u> para ativar a sincronização da biblioteca e do painel.","IMPORT_DISCOVER_SIGNUP":"Regista-te e encontra coisas interessantes em <span>Explorar</span>","IMPORT_DISK_SIGNUP":"Regista-te e importa filmes ou programas que tenhas no <span>disco local</span>","LIB_EMPTY_CLOUD":"Biblioteca na nuvem","LIB_EMPTY_CLOUD_DESC":"A biblioteca pessoal na nuvem sincroniza todos os teus dispositivos","LIB_EMPTY_EARLY":"Chegaste demasiado cedo","LIB_EMPTY_EARLY_DESC":"Receber notificações quando existirem episódios disponíveis","LIB_EMPTY_PERSONAL":"Privado","LIB_EMPTY_PERSONAL_DESC":"Receber recomendações pessoais","LIB_EMPTY_CALENDAR_DESC":"Agenda no teu calendário pessoal de visualização","LIB_EMPTY_ALL":"Inicia sessão para obteres tudo isto:","LIB_EMPTY_BEST":"Inicia sessão para obteres o melhor do Stremio","LIB_EMPTY_OTHER":"Inicia sessão para ativares o calendário e outras funcionalidades incríveis","CALENDAR_ADDED":"O calendário do Stremio foi adicionado ao calendário do teu computador.","CALENDAR_ADDED_MSG":"Se isto não funcionar, adiciona manualmente este link ao calendário","TRAKT_EXPIRED":"A autenticação do Trakt falhou, vai às definições e tenta novamente.","TRAKT_REQUIRES_LOGIN":"Erro ao iniciar sessão.","TRAKT_REQUIRES_LOGIN_MSG":"Precisas de iniciar sessão para avançar.","SETTINGS_LABEL":"Definições","SETTINGS_NAV_GENERAL":"Geral","SETTINGS_NAV_PLAYER":"Reprodutor","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Atalhos","SETTINGS_SHORTCUT_RELOAD_APP":"Recarregar app","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Abrir definições","SETTINGS_SHORTCUT_SWITCH_TABS":"Alternar separadores","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Avançar no ciclo de separadores","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Voltar atrás no ciclo de separadores","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navega entre menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Ir para a pesquisa","SETTINGS_SHORTCUT_EXIT_BACK":"Sair / Voltar atrás","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Alternar menu de velocidade de reprodução","SETTINGS_SHORTCUT_MENU_VIDEOS":"Alternar menu de vídeos","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Alternar menu das legendas","SETTINGS_SHORTCUT_MENU_INFO":"Alternar menu das informações","SETTINGS_SHORTCUT_FULLSCREEN":"Entrar / Sair do modo de ecrã inteiro","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Mostrar controlos","SETTINGS_SHORTCUT_PLAY_PAUSE":"Reproduzir / Colocar em pausa","SETTINGS_SHORTCUT_VOLUME_UP":"Aumentar o volume","SETTINGS_SHORTCUT_VOLUME_DOWN":"Diminuir o volume","SETTINGS_SHORTCUT_SEEK_NEXT":"Avançar na reprodução","SETTINGS_SHORTCUT_SEEK_PREV":"Recuar na reprodução","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Retroceder","SETTINGS_SHORTCUT_SEEK_FORWARD":"Avançar","SETTINGS_SHORTCUT_PLAY_NEXT":"Reproduzir próximo","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Aumentar o tamanho das legendas","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Diminuir o tamanho das legendas","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Aumentar o atraso das legendas","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Diminuir o atraso das legendas","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Mostrar / Ocultar barra lateral","SETTINGS_SHORTCUT_OR":"ou","SETTINGS_SHORTCUT_TO":"para","SETTINGS_SHORTCUT_SPACE":"Espaço","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Autenticar","SETTINGS_FACEBOOK_IMPORT":"Importar","SETTINGS_CALENDAR_SUBSCRIBE":"Subscrever","SETTINGS_INTERFACE_LANGUAGE":"Idioma da interface","SETTINGS_LAUNCH_STARTUP":"Iniciar com o sistema","SETTINGS_VLC_DEFAULT":"Reproduzir com o VLC","SETTINGS_UI_LANGUAGE":"Idioma","SETTINGS_FULLSCREEN_EXIT":"Clica em ESC para sair do ecrã inteiro","SETTINGS_GAMEPAD":"Ativar o suporte do comando de jogos (Gamepad)","SETTINGS_CLOSE_WINDOW":"Fechar o Stremio quando fechar a janela","SETTINGS_SUBTITLES_LANGUAGE":"Idioma predefinido das legendas","SETTINGS_SUBTITLES_SIZE":"Tamanho predefinido das legendas","SETTINGS_SUBTITLES_BACKGROUND":"Fundo das legendas","SETTINGS_SUBTITLES_COLOR":"Cor das legendas","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Cor de contorno das legendas","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Cor de fundo das legendas","SETTINGS_SEEK_KEY":"As teclas de seta avançam / retrocedem no tempo","SETTINGS_SEEK_KEY_SHIFT":"As teclas de seta avançam / retrocedem no tempo quando a tecla Shift é pressionada","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Duração do retrocesso e do avanço rápido","SETTINGS_BINGE":"Reproduzir o próximo episódio automaticamente","SETTINGS_NEXT_VIDEO":"Mostrar uma notificação ao iniciar o próximo episódio.","SETTINGS_NEXT_VIDEO_TRIGGER":"Mostrar uma notificação ao iniciar o próximo episódio para:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Duração do pop-up do próximo vídeo","SETTINGS_PLAY_IN_BACKGROUND":"Reproduzir em plano de fundo","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Reproduzir num leitor externo","SETTINGS_RESIZE":"Redimensionar automaticamente a janela antes de reproduzir","SETTINGS_OVERRIDE_SERVER":"Substituir o URL do servidor de streaming (avançado)","SETTINGS_SERVER_URL":"URL do servidor de Streaming: ","SETTINGS_SERVER_AVAILABLE":"O servidor de streaming está disponível.","SETTINGS_SERVER_UNAVAILABLE":"O servidor de Streaming não está disponível.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Erro","SETTINGS_SERVER_CONFIGURE_TITLE":"Configurar o URL do servidor de streaming","SETTINGS_SERVER_CONFIGURE_INPUT":"Introduz um URL de servidor de streaming","SETTINGS_SERVER_CACHE_SIZE":"Tamanho da cache","SETTINGS_SERVER_TORRENT_PROFILE":"Perfil do torrent","SETTINGS_HTTPS_ENDPOINT":"Endpoint de streaming HTTPS: ","SETTINGS_USE_BETA":"Utilizar sempre a última versão Beta","SETTINGS_IMPORT_FB":"Importar do Facebook","SETTINGS_IMPORT_DISK":"Importar do disco local","SETTINGS_IMPORT_TRAKT":"Importar do Trakt","SETTINGS_PAUSE_MINIMIZED":"Colocar a reprodução em pausa quando minimizado","SETTINGS_HWDEC":"Transcodificação acelerada por hardware","SETTINGS_BACKGROUND":"Reprodução em segundo plano","SETTINGS_SUBSCRIBE_CALENDAR":"Subscrever calendário","SETTINGS_REQ_EXPORT":"Exportar dados","SETTINGS_ACC_DELETE":"Pedir para eliminar conta","SETTINGS_CHANGE_PASSWORD":"Alterar palavra-passe","SETTINGS_TOS":"Termos do serviço","SETTINGS_SUPPORT":"Contactar o suporte","SETTING_LANGUAGE":"Idioma","SETTINGS_TRAKT":"Recomendações do Trakt","SETTINGS_TRAKT_LOGOUT":"Terminar sessão do Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Lê o código QR para abrir remotamente","SETTINGS_DESKTOP_NOTIFICATIONS":"Notificações no computador","SETTINGS_DATA_SAVER":"Economizador de Dados","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"Legendas predefinidas","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Selecionar automaticamente o ficheiro de áudio","SETTINGS_DEFAULT_AUDIO_TRACK":"Ficheiro de áudio predefinido","SETTINGS_ACCOUNT":"Conta","SETTINGS_VERSION":"versão","SETTINGS_MPV_WINDOW":"Abrir reprodutor numa janela em separado (avançado)","SETTINGS_PLAY_IN_EXTERNAL":"Abrir sempre num reprodutor externo","SETTINGS_STORAGE_BUTTON":"Limpar armanezamento local","SETTINGS_STORAGE_MODAL_TITLE":"Tens a certeza?","SETTINGS_STORAGE_MODAL_MESSAGE":"Esta ação fará com que o armazenamento seja limpo e termine a tua sessão.","SETTINGS_HWDEC_PICKER":"Escolhe a configuração de decodificação acelerada por hardware","SETTINGS_HW_AUTOMATIC":"Automático","SETTINGS_HW_DISABLED":"Desativado","SETTINGS_HW_ACCELERATED":"Aceleração de decodificação","SETTINGS_HW_FULL":"Aceleração total","SETTINGS_HW_LEGACY":"Legado","SETTINGS_SECTION_SUBTITLES":"Legendas","SETTINGS_SECTION_AUDIO":"Áudio","SETTINGS_SECTION_CONTROLS":"Controlos","SETTINGS_SECTION_AUTO_PLAY":"Reprodução automática","SETTINGS_SECTION_ADVANCED":"Avançadas","SUBSPICKER_AUDIO":"Áudio","SUBSPICKER_SUBTITLES":"Legendas de addons","SUBSPICKER_BLACK_BACKGROUND":"Utilizar cor de fundo preta","SUBSPICKER_VERTICAL_OFFSET":"Compensação vertical","SUBSPICKER_SIZE":"Tamanho","SUBSPICKER_DELAY":"Atraso","SUBSPICKER_EMBEDDED_SUBS":"Legendas embutidas","MOBILE_PRIVACY_POLICY":"Política de Privacidade","MOBILE_CRASH_REPORTING":"Relatório de avarias","MOBILE_ZOOM_TO_FILL":"Zoom para preencher o ecrã","MOBILE_PASSTHROUGH":"Saída de áudio digital (passthrough)","MOBILE_RUN_LOW_BATTERY":"Executar com a bateria fraca","MOBILE_RUN_FOREGROUND":"Executar como serviço de primeiro plano","MOBILE_PERFORMANCE":"DESEMPENHO E ESTABILIDADE","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"O código QR expira em ","MOBILE_LOG_INTO":"Inicia sessão na tua conta Stremio ","MOBILE_SCAN_QR":"Lê o código QR acima ou vai para ","MOBILE_LINK_ACCOUNT":"Ligar conta","MOBILE_SPEEDPICKER_CANCEL":"Cancelar","MOBILE_SPEEDPICKER_LABEL":"Selecionar velocidade de reprodução","MOBILE_EMPTY_LIBRARY":"A tua biblioteca está vazia","MOBILE_NO_ADDON_ACTIVE":"Nenhum addon do Stremio ativo para este tipo.","MOBILE_ORGANIZER_WARNING":"A app Stremio Organizer dá-te apenas acesso a funcionalidades limitadas. Para uma lista de streams reproduzíveis e para teres a experiência Stremio completa, utiliza o Stremio no desktop.","MOBILE_ADDON_LOADING":"ainda está a carregar","MOBILE_ADDONS_LOADING":"os addons ainda estão a carregar","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configura o teu addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configurar addon","MOBILE_ORGANIZER_ADDONS_WARNING":"A app Stremio Organizer dá-te apenas acesso a uma seleção limitada de addons. Para teres a experiência Stremio completa, utiliza o Stremio no desktop.","MOBILE_DISCONNECT":"Desconectar","MOBILE_LOOKING_FOR_DEVICES":"À procura de dispositivos...","MOBILE_CAST_TO":"Transmitir para","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Eliminar conta","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"A eliminação da conta não é imediata devido a obrigações legais. Depois de pedires a eliminação da tua conta, terás de utilizar um endereço de e-mail/perfil do Facebook diferente para criares uma nova conta do Stremio no futuro.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirmar a eliminação da conta","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"A tua conta foi criada através do Facebook. Para eliminares a tua conta, utiliza o nosso portal do utilizador em www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Por favor, introduz a tua palavra-passe para confirmar a eliminação da conta.","MOBILE_DELETE_ACCOUNT_BUTTON":"Eliminar conta","NAVIGATION_ON":"Ligado","NAVIGATION_OFF":"Desligado","MARKETING_AGREE":"Concordo em receber comunicações de marketing do Stremio","QUIT":"Sair","CONNECTED":"Ligado","AUTHENTICATE":"Autenticado","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Seleciona a unidade para cache","ENABLE_LOCAL_FILES_ADDON":"Ativa o addon de ficheiros locais (requer reinicialização)","LOCAL_ADDON_NOT_ENABLED":"O addon local não está ativado. Clica aqui para o ir ativar às definições","ENABLE_REMOTE_HTTPS_CONN":"Ativar conexões HTTPS remotas","TORRENT_PROFILE":"Perfis de torrents","DATA_CACHING":"Caching de dados","MAGNET_PARSING":"A analisar o magnet link","January":"janeiro","February":"fevereiro","March":"março","April":"abril","May":"maio","June":"junho","July":"julho","August":"agosto","September":"setembro","October":"outubro","November":"novembro","December":"dezembro","Monday":"segunda-feira","Tuesday":"terça-feira","Wednesday":"quarta-feira","Thursday":"quinta-feira","Friday":"sexta-feira","Saturday":"sábado","Sunday":"domingo","Action":"Ação","Comedy":"Comédia","War":"Guerra","Family":"Família","Animation":"Animação","Adventure":"Aventura","Fantasy":"Fantasia","Crime":"Crime","Mystery":"Mistério","Romance":"Romance","Drama":"Drama","Horror":"Terror","Thriller":"Thriller","Sci-Fi":"Ficção científica","Music":"Música","Biography":"Biografia","Documentary":"Documentário","Sport":"Desporto","Musical":"Musical","Western":"Western","Film-Noir":"Film-noir","News":"Notícias","History":"História","Game-Show":"Concursos","Reality-TV":"Reality show","Talk-Show":"Talk-show","Film & Entertainment":"Filmes e entretenimento","Gaming":"Videojogos","From TV":"Da TV","Lifestyle":"Estilo de vida","Science & Education":"Ciência e Educação","Cooking & Health":"Culinária e Saúde","Beauty & Fashion":"Beleza e Moda","Sports":"Desporto","News & Politics":"Notícias e política","How-to & DIY":"Faz por ti mesmo","Tech":"Tecnologia","Automotive":"Automobilismo","Causes & Non-Profits":"Causas e ações sem fins lucrativos","Movies":"Filmes","Uk Live Tv":"Reino Unido","Fashion":"Moda","Business News Radio":"Negócios (Rádio)","Business Tv":"Negócios","Cars & Auto":"Automobilismo","Comedy Radio":"Comédia (Rádio)","Lifestyle Radio":"Estilo de vida (Rádio)","News Tv":"Notícias","Food And Wine":"Gastronomia e vinicultura","Latino Tv":"Latino","Shopping Tv":"Compras","Religion":"Religião","Kids":"Infantil","Body & Soul":"Corpo e alma","Education":"Educação","Indian Tv":"Índia","Extreme Sports":"Desportos radicais","Middle Eastern Tv":"Médio Oriente","Celebrity Tv":"Celebridades","Science Tv":"Ciência","Bikini babe":"Biquíni","Outdoors":"Ar livre","German Tv":"Alemanha","French Tv":"França","Italian Tv":"Itália","Gamer Tv":"Videojogos","Travel":"Viagens","Asian Tv":"Ásia","Entertainment":"Entretenimento","News Radio":"Notícias (Rádio)","Music Radio":"Música (Rádio)","Language Learning":"Aprender idiomas","Science Radio":"Ciência (Rádio)","Tech Radio":"Tecnologia (Rádio)","Science & Technology Vod":"Ciências e Tecnologias (VOD)","new video":"novo vídeo","new episode":"novo episódio","new movie":"novo filme","recommended":"recomendado","we recommend":"recomendamos","offer of the day":"oferta do dia","news":"notícias","music video":"Videoclipe","CTX_SHOW_HOTKEYS":"Mostrar teclas de acesso rápido","CTX_DISMISS_NOTIF":"Descartar notificação","CTX_DISMISS_ALL":"Descartar todas","CTX_SHARE":"Partilhar","CTX_COPY_SHARE_LINK":"Copiar link de partilha","CTX_COPY_MAGNET_LINK":"Copiar o magnet link","CTX_COPY_STREAM_LINK":"Copiar link de transmissão","CTX_DOWNLOAD_VIDEO":"Transferir este vídeo","CTX_DOWNLOAD_SUBS":"Transferir as legendas","CTX_VIEW_ON_YOUTUBE":"Ver no YouTube","CTX_SHOW":"Mostrar","CTX_PLAY":"Reproduzir","CTX_PLAY_IN":"Reproduzir em","CTX_PLAY_ON":"Reproduzir no","CTX_WATCH_ON":"Ver em","CTX_WATCH":"Ver","CTX_WATCHED":"Visto","CTX_WATCH_BEGINNING":"Ver do início","CTX_WATCH_MOBILE":"Ver num dispositivo móvel","CTX_REWIND":"Retroceder para o início","CTX_MARK_WATCHED":"Marcar como visto","CTX_MARK_NON_WATCHED":"Marcar como não visto","CTX_MARK_UNWATCHED":"Marcar como não visto","CTX_MARK_REST":"Marcar o resto como visto.","CTX_UNMARK_REST":"Marcar o resto como não visto.","CTX_RECEIVE_NEW_NOTIF":"Receber novas notificações","CTX_REMOVE_CACHE":"Remover da cache","CTX_REMOVE_CACHE_EP":"Remover episódio da cache","CTX_OPEN_CONTAINING":"Abrir pasta com o conteúdo","CTX_REMOVE":"Remover da biblioteca","CTX_AVAILABLE_OFFLINE":"Disponível offline","CTX_PAUSED":"Em pausa","CTX_ALWAYS_ON_TOP":"Sempre visível","CTX_FULLSCREEN":"Ecrã inteiro","CTX_WRONG_SUBS":"Legendas incorretas?","CTX_REPORT_ISSUES":"Reportar problema","CTX_COPY":"Copiar","CTX_PASTE":"Colar","CTX_CLEAR":"Limpar","CTX_CLEAR_RECENT_SEARCHES":"Limpar pesquisas recentes","HELLO_THERE":"Olá!","HOPE_YOU_ENJOY":"Esperamos que gostes do Stremio e que seja uma das tuas aplicações favoritas!","WHO_ARE_WE":"Quem somos? Somos a equipa por detrás do projeto - dois rapazes que trabalham arduamente todos os dias durante os últimos 3 anos para melhorar cada vez mais este produto.","SUPPORT_US":"Se gostas de utilizar o Stremio e se o mesmo é importante para ti - divulga-o!","SPREAD_THE_WORD":"Partilha com os teus amigos, divulga-o","MORE_PEOPLE":"Quanto mais pessoas utilizarem o Stremio, melhor se tornará!","SEND_A_LINK":"Ou envia um link para o nosso site","TIP_LOCALFILES":"Dica: podes arrastar e largar os teus vídeos no Stremio","ADDON_MY":"Os meus addons","ADDON_COMMUNITY":"Addons da comunidade","ADDON_OFFICIAL":"Addons oficiais","ADDON_REPOS":"Repositórios de addons","ADDON_SEARCH":"Pesquisar addons","ADDON_INSTALL":"Instalar","ADDON_CONFIGURE":"Configurar","ADDON_UNINSTALL":"Desinstalar","ADDON_UPGRADE":"Atualizar","ADDON_INSTALLED":"Instalado","ADDON_INSTALLED_MSG":"Addon instalado!","ADDON_UPGRADED_MSG":"Addon atualizado!","ADDON_UNKNOWN":"Desconhecido","ADDON_ERR":"Erro ao instalar o addon!","ADDON_DISCONNECTED":"Desconectado","ADDON_APP_MISSING":"a aplicação que suporta este tipo de letra não está instalada. Desejas instalá-la agora?","ADDON_APP_INSTALL":"Instalar agora","ADDON_PAGE":"Página do addon","ADDON_TOP_CONTENT":"O melhor deste addon","ADDON_PROVIDES":"Este addon dar-te-á:","ADDON_WATCH":"Ver #{types} agora!","ADDON_WATCH_FREE":"Ver #{types} GRATUITAMENTE agora!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Tipos suportados","ADDON_SUPPORTED_CATALOGS":"Catálogos suportados","ADDON_PROVIDES_DISCOVER":"Mais #{types} em Explorar","ADDON_PROVIDES_STREAMS":"Ver #{types}","ADDON_PROVIDES_STREAMS_FREE":"Ver #{types} GRATUITAMENTE","ADDON_PROVIDES_SUBTITLES":"Legendas para #{types}","ADDON_CANTDETECT":"Não foi possível encontrar o Stremio em execução, assim sendo, não é possível determinar os addons que tens instalados.","ERR_NO_META":"Não encontrámos nenhuma informação sobre isto.","ERR_GETTING_META":"Erro ao obter informação sobre isto.","ERR_CANT_PARSE_MAGNET":"Impossível analisar o magnet link","ERR_NO_MAGNET_INFOHASH":"Sem informação válida para este magnet link","ERR_NO_FILE_PATH":"Impossível enviar o pedido sem um caminho para o ficheiro","ERR_NO_TORRENT":"Nenhum torrent recebido","ERR_NO_SUPPORTERD_FILES":"Nenhum ficheiro suportado encontrado","ERR_OPENING_FILES":"Não foi possível abrir ficheiros externos.","ERR_INVALID_LINK":"Link inválido","ERR_REGISTERED_ONLY":"Esta opção está apenas disponível para utilizadores com sessão iniciada.","ERR_CLIPBOARD":"Não é possível reproduzir da área de transferência","ERR_CLIPBOARD_READ":"Não é possível ler a área de transferência nesta plataforma","ERR_CLIPBOARD_GENERIC":"Nenhum URL reproduzível encontrado na área de transferência. Por favor, copia um URL (ex.: magnet link) para um vídeo.","BOARD_CONTINUE_WATCHING":"Continuar a ver","BOARD_EXPLANATION_RECOMMENDATIONS":"Os filmes escolhidos especialmente para ti.<br />Este filme é uma amostra de recomendação.","BOARD_EXPLANATION_EPISODES":"Os novos episódios das tuas séries favoritas aparecem aqui.<br />Adiciona as séries que segues à tua biblioteca.","BOARD_EXPLANATION_VIDEOS":"Os novos episódios dos teus canais favoritos aparecem aqui.<br />Adiciona os canais do YouTube que segues à tua biblioteca.","WEBSITE_SLOGAN_WATCH":"Vê instantaneamente","WEBSITE_SLOGAN_ALL":"Todo o conteúdo que adoras num único lugar","WEBSITE_SLOGAN_NEW":"Tudo o que podes ver","WEBSITE_SLOGAN_NEW_NEW":"Liberdade para fazeres streaming","WEBSITE_WATCH_FROM":"Ver a partir de","WEBSITE_DOWNLOAD":"Transferir","WEBSITE_DOWNLOAD_FOR":"Transferir para","WEBSITE_IS_DESKTOP":"O Stremio é uma aplicação desktop, abre esta página no teu computador e transfere-a","WEBSITE_DESKTOP_DEMO_VID":"Demonstração de ambiente de trabalho","WEBSITE_PAGE_HOME":"Início","WEBSITE_PAGE_FEATURES":"Funcionalidades","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Tecnologia","WEBSITE_PAGE_CREATE_ADDON":"Criar addon","WEBSITE_PAGE_CONTACTS":"Contactos","WEBSITE_PAGE_BLOG":"Blogue","WEBSITE_TYPE_movie":"Filmes","WEBSITE_TYPE_series_PL":"Séries","WEBSITE_TYPE_tv":"TV em Direto","WEBSITE_TYPE_channel":"Canais","WEBSITE_STREMIO_WHAT_IS":"O Stremio é uma aplicação que te ajuda a organizar e ver instantaneamente os teus vídeos, filmes, séries e canais favoritos.","WEBSITE_FEATURES_WATCH":"Vê instantaneamente em HD","WEBSITE_FEATURES_WATCH_DETAIL":"Clica e reproduz o teu conteúdo preferido, filmes, séries, vídeos e canais.","WEBSITE_FEATURES_SUBS":"Legendas automáticas","WEBSITE_FEATURES_SUBS_DETAIL":"O Stremio seleciona automaticamente as legendas sincronizadas para o teu idioma.","WEBSITE_FEATURES_SUBS_LABEL":"Agora é contigo, chefe.","WEBSITE_FEATURES_CAST":"Reproduz na TV e dispositivos móveis","WEBSITE_FEATURES_CAST_DETAIL":"Liga à Apple TV, Chromecast, Smart TV (DLNA/UPnP) e dispositivos móveis.","WEBSITE_LIB":"Desfruta da tua biblioteca pessoal sincronizada em todos os teus dispositivos","WEBSITE_LIB_COLLECT":"Recolher através do Stremio","WEBSITE_LIB_IMPORT":"Importar do Facebook","WEBSITE_LIB_LOCAL":"Adicionar a partir do teu disco local","WEBSITE_BOARD":"O painel - O teu sítio para notificações e recomendações","WEBSITE_BOARD_RECOMMEND":"Série recomendada","WEBSITE_BOARD_TRENDING":"Filme em destaque","WEBSITE_BOARD_NEW":"Novo vídeo","WEBSITE_BOARD_EPISODE":"Novo episódio","WEBSITE_BOARD_1":"Procuras algo interessante para ver? Recebe recomendações baseadas nos teus gostos!","WEBSITE_BOARD_2":"Recebe uma notificação quando um novo episódio da tua série preferida ou de um canal do YouTube é lançado!","WEBSITE_BOARD_YOUTUBE":"Novos vídeos de canais do YouTube","WEBSITE_BOARD_EPISODES":"Novos episódios das séries que segues","WEBSITE_ADDONS":"Conteúdo do addon","WEBSITE_TECH_DETAIL":"Adoramos tecnologia e ciência maluca!\\nO Stremio utiliza as seguintes tecnologias de código aberto:","WEBSITE_TECH_WCJS":"O WebChimera.js permite que o Stremio reproduza qualquer formato de vídeo com boa performance.","WEBSITE_TECH_WCJS_EXTRA":"Somos os colaboradores principais do projeto","WEBSITE_TECH_ELECTRON":"O Electron oferece uma plataforma inovadora para construir o Stremio.","WEBSITE_TECH_ELECTRON_EXTRA":"Somos colaboradores do projeto","WEBSITE_TECH_LINVODB":"Uma tecnologia de base de dados que garante que os teus dados estão organizados e disponíveis em qualquer lugar.","WEBSITE_TECH_LINVODB_EXTRA":"Tecnologia interna","WEBSITE_CREATE_ADDON":"Cria o teu Addon","WEBSITE_CREATE_ADDON_DETAIL":"Tens um serviço que fornece conteúdo de vídeo? Vamos ajudar-te a beneficiar das funcionalidades do Stremio ao criar o teu addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefícios da criação de um addon para o Stremio","WEBSITE_P2P_BEAUTY":"A beleza do Streaming Ponto-a-Ponto","WEBSITE_P2P_1":"Vídeo full HD / 4K on demand ou streaming fiável e acessível","WEBSITE_P2P_2":"Plataforma de distribuição que proporciona uma grande experiência ao utilizador","WEBSITE_P2P_3":"Criaremos uma Extensão que corresponde exatamente às tuas necessidades","WEBSITE_P2P_CONTACT":"Interessado? Convidamos-te a <a href=\'mailto:office@stremio.com\'>nos contactares</a>.","WEBSITE_P2P_CONTACT_EXTRA":"Ficaríamos felizes por te ajudar a integrar o teu contéudo com o Stremio!","WEBSITE_P2P":"De um momento para o outro, surge uma tecnologia que muda o sistema. Investimos muito tempo e esforço para construir o nosso motor de streaming de vídeo ponto-a-ponto que fornece grande performance e versatilidade para se adaptar a qualquer caso de utilização.\\nContacta-nos para gestão de direitos digitais de vídeo P2P on demand ou streaming.","WEBSITE_THOUGHTS":"Pensamentos que partilhamos:","WEBSITE_SPREAD":"Divulga o Stremio:","WEBSITE_CONTACT":"Contacta-nos, adoraríamos saber o que tens a dizer!","WEBSITE_OPENSOURCE":"Para os nosso projetos de código aberto, visita o nosso","WEBSITE_BITCOIN":"Doar Bitcoin:","WEBSITE_FAQ":"Perguntas frequentes","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Perguntas","WEBSITE_TOS":"Termos de utilização","WEBSITE_LEGAL":"Jurídico","WEBSITE_PAGE_ABOUT":"Acerca de","WEBSITE_PAGE_BECOME_PARTNER":"Torna-te num parceiro","WEBSITE_ALL_YOU_CAN_WATCH":"Liberdade para veres\\nTudo o que precisas.","WEBSITE_FREEDOM_TO_STREAM":"Liberdade para fazeres streaming","WEBSITE_WHAT_IS_STREMIO":"O que é o Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"O Stremio é uma plataforma única para agregação de conteúdo de vídeo. Descobre, organiza e vê vídeos de todos os tipos de fontes em qualquer dispositivo que tenhas.","WEBSITE_WHAT_IS_STREMIO_P2":"Filmes, séries, programas de TV, TV em Direto ou canais da web como YouTube e Twitch.tv - podes encontrar tudo isto no Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"O Stremio é uma central de multimédia moderna, uma solução integrada para todo o teu entretenimento em vídeo. Descobre, vê e organiza todo o conteúdo de vídeo a partir de addons fáceis de instalar.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Filmes, programas de TV, TV em direto ou canais da web - encontra tudo isto no Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Desfruta em todos os teus dispositivos multimédia","WEBSITE_DEVICES_COLLECT":"Recolhe através do Stremio","WEBSITE_DEVICES_IMPORT_FB":"Importar do facebook","WEBSITE_DEVICES_LOCAL":"Adicionar a partir do teu disco local","WEBSITE_JOIN_THE_PARTY_NOW":"Junta-te à festa agora","WEBSITE_DEVICES_ALL":"Fácil de utilizar em qualquer dispositivo;","WEBSITE_EXTENDABLE_CATALOG":"Catálogo de vídeo infinitamente extensível;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Ótimas funcionalidades para organizares o teu conteúdo multimédia;","WEBSITE_AS_SEEN_ON":"Visto(a) em","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Quem somos","WEBSITE_LINK_TECHNOLOGY":"Tecnologia","WEBSITE_LINK_APPS":"Aplicações","WEBSITE_LINK_DOWNLOADS":"Transferências","WEBSITE_MORE":"Mais","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribuir","WEBSITE_LINK_COMMUNITY":"Comunidade","WEBSITE_LINK_BLOG":"Blogue","WEBSITE_MORE_MORE":"... e mais","WEBSITE_LINK_HELP":"Centro de Ajuda","WEBSITE_LINK_CONTACTS":"Contacta-nos","WEBSITE_LINK_TOS":"Termos e Condições","WEBSITE_LINK_PRAVACY":"Política de Privacidade","WEBSITE_SUBSCRIBE":"Subscrever","WEBSITE_NEWSLETTER":"Subreve a nossa newsletter para receberes as novidades","WEBSITE_PLACEHOLDER_EMAIL":"O teu e-mail","WEBSITE_COMMUNITY":"Comunidade","WEBSITE_LINK_PRAVACY_LEGAL":"Privacidade e jurídico","WEBSITE_WHY":"Porque o fazemos","WEBSITE_WHY_P1":"No Stremio, chegamos a trabalhar todos os dias quando queremos resolver um problema importante para o setor de vídeo on demand. Há tanto conteúdo novo publicado a cada minuto, que é virtualmente impossível encontrar o caminho menos árduo.","WEBSITE_WHY_P2":"Ajudamos as pessoas a navegar neste mundo imenso de entretenimento de vídeo e a descobrir novos conteúdos para apreciar. As nossas aplicações trazem consigo filmes, séries, TV em direto, canais da web e muito mais. Estamos focados em facilitar para que os nossos utilizadores possam encontrar facilmente os títulos e os canais que adoram.","WEBSITE_WHY_P3":"Podes utilizar o nosso serviço em qualquer dispositivo e a qualquer hora tornando o Stremio a única plataforma agregadora de entretenimento de vídeo de que precisarás.","WEBSITE_TEAM":"Equipa","WEBSITE_TEAM_P":"A equipa do Stremio é pequena, mas poderosa: entre nós dez, programamos em várias linguagens e partilhamos experiência em desenvolvimento de software, design da IU e UX, marketing e publicidade, negócios e startups.","WEBSITE_FEATURES":"Funcionalidades","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Descobre facilmente novos conteúdos","WEBSITE_FEATURES_DISCOVER_P":"Descobre facilmente novos filmes, séries, programas de TV e canais para ver. Navega por categoria, género, classificação, novidade, etc. ou escreve simplesmente um nome para encontrar. O Stremio encontrará facilmente todo o conteúdo de vídeo.","WEBSITE_FEATURES_ALL_CONTENT":"Todo o teu conteúdo de vídeo num ecrâ","WEBSITE_FEATURES_ALL_CONTENT_P1":"Vê que filmes, séries ou vídeos não terminaste e continua a vê-los(as). Sê notificado sobre novos episódios e lançamentos e navega pelas recomendações que obterás com base nos teus hábitos de visualização","WEBSITE_FEATURES_LIBRARY":"Organiza a tua biblioteca de vídeos","WEBSITE_FEATURES_LIBRARY_P1":"Adiciona qualquer título à tua biblioteca do Stremio com um único clique e encontra o teu conteúdo organizado por tipo, recência ou ordem alfabética","WEBSITE_FEATURES_CALENDAR":"Acompanha tudo o que viste","WEBSITE_FEATURES_CALENDAR_P1":"Vê o calendário de todos os filmes e séries que adicionaste à tua biblioteca e sabe também quando haverá um novo episódio ou estreia.","WEBSITE_FEATURES_BIG_SCREEN":"Aproveita o teu conteúdo de vídeo num ecrã maior ","WEBSITE_FEATURES_BIG_SCREEN_P1":"Reproduz o que estiveres a ver noutro dispositivo - utiliza o smartphone, tablet ou TV com um único clique","WEBSITE_FEATURES_SOURCES":"Vê o vídeo de várias fontes diferentes.","WEBSITE_FEATURES_SOURCES_P":"Instala os addons oficiais e da comunidade para aproveitares o vídeo fornecido por vários fornecedores diferentes - tudo numa aplicação elegante e fácil de utilizar.","WEBSITE_CREATE_AN_ADDON":"Cria um addon.","WEBSITE_FEATURES_SYNC":"Sincroniza a tua biblioteca entre diferentes dispositivos e continua a reprodução","WEBSITE_FEATURES_SYNC_P1":"Entra com a tua conta em todos os teus dispositivos e aproveita a tua biblioteca, addons, reprodução e calendário sincronizados.","WEBSITE_FEATURES_EXTENDABLE":"Catálogo de vídeo extensível por addons","WEBSITE_FEATURES_EXTENDABLE_P1":"O catálogo de addons do Stremio fornece vários complementos para instalares e veres uma variedade imensa de conteúdos de vídeo. Isto inclui filmes, programas, TV em direto, desportos, notícias, podcasts, canais da web, jogos e muito mais.","WEBSITE_FEATURES_AUTO_SUBS":"Legendas automáticas","WEBSITE_FEATURES_AUTO_SUBS_P1":"Com os nossos addons de legendas obtens automaticamente as opções selecionadas para o teu idioma preferido.","WEBSITE_FEATURES_CHROMECAST":"Transmitir para Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Desfruta do conteúdo de vídeo num ecrã maior ou transmite apenas o que estiveres a ver para outro dispositivo.","WEBSITE_FEATURES_KEEP_TRACK":"Acompanha os teus programas de TV e canais da Web favoritos ","WEBSITE_FEATURES_KEEP_TRACK_P1":"Obtém uma visualização do calendário e notificações para novos episódios das tuas séries e canais da web favoritos.","WEBSITE_FEATURES_POWER_USER":"Funcionalidades avançadas para os utilizadores","WEBSITE_FEATURES_POWER_USER_P1":"Reproduz num reprodutor externo","WEBSITE_FEATURES_POWER_USER_P2":"Reproduz a partir de um ficheiro torrent ou magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Importa para a tua biblioteca a partir dos gostos do Facebook ou disco local","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"Todo o conteúdo de vídeo que o Stremio proporciona é proveniente de um sistema de addons - nenhum fornecedor de conteúdo ou conteúdo foi incorporado na aplicação.","WEBSITE_ADD_ONS_P2":"Existem dois grupos de addons disponíveis: oficiais e da comunidade.","WEBSITE_ADD_ONS_P3":"Os oficiais são desenvolvidas e hospedadas pelo Stremio enquanto que os addons da comunidade são criados por membros da nossa comunidade que também os hospedam.","WEBSITE_ADDONS_OFFICIAL":"Addons oficiais","WEBSITE_ADDONS_WATCHUB":"Transmite os teus filmes, séries e programas favoritos de serviços como iTunes, Hulu, Amazon e outros serviços do Reino Unido / EUA.","WEBSITE_ADDONS_YOUTUBE":"Vê os teus canais favoritos do YouTube livre de anúncios e recebe notificações de novos vídeos dos canais que segues.","WEBSITE_ADDONS_FILMON":"Vê TV em direto, filmes e canais interativos gratuitamente. 600 canais de TV, 45.000 filmes gratuitos, documentários e muito mais.","WEBSITE_ADDONS_OPENSUBTITLES":"Legendas de filmes e TV em vários idiomas. Milhares de legendas traduzidas e carregadas todos os dias.","WEBSITE_ADDONS_COMMUNITY":"Addons da comunidade","WEBSITE_ADDONS_FILMON_VOD":"Vê vídeos on demand do Filmon.tv","WEBSITE_ADDONS_TWICH":"Vê transmissões em direto da Twitch.tv - a plataforma de streaming de vídeo para a indústria de eSports.","WEBSITE_ADDONS_VODO":"Vê filmes independentes de forma totalmente gratuita.","WEBSITE_ADDONS_NETFLIX":"Vê filmes e séries da Netflix.","WEBSITE_ADDONS_CREATE":"Cria um addon.","WEBSITE_ADDONS_CREATE_P1":"Se desejares, podes desenvolver o teu próprio addon. Desta forma, podes proporcionar a ti mesmo e à nossa comunidade o acesso a novos conteúdos de vídeo e alcançar um novo público-alvo de milhões de utilizadores em todo o mundo.","WEBSITE_ADDONS_START_CREATE":"Para começares, visita a página do Kit de Desenvolvimento de Addons do Stremio:","WEBSITE_DOWNLOADS":"Transferências","WEBSITE_DOWNLOADS_P1":"Para um melhor desempenho recomendamos que utilizes a versão mais recente disponível das aplicações Stremio. No entanto, se por algum motivo preferires utilizar uma versão mais antiga, podes descarregá-la aqui.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio para Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio para macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio para Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio para Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio para Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio para telemóveis Android","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio para Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio para iOS (versão limitada)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Colaborar","WEBSITE_CONTRIBUTE_P1":"A plataforma Stremio é de código aberto e podes criar facilmente um addon para o conteúdo que não é atualmente fornecido.","WEBSITE_CONTRIBUTE_WHY":"Porque deves criar um?","WEBSITE_CONTRIBUTE_WHY_P1":"Alcança um novo público para o conteúdo do teu vídeo","WEBSITE_CONTRIBUTE_WHY_P2":"A base de utilizadores do Stremio está a crescer rapidamente - no primeiro ano de lançamento o Stremio ganhou 1 milhão de utilizadores em todo o mundo e no segundo ano de existência da plataforma, este número cresceu para 2,5 milhões.","WEBSITE_CONTRIBUTE_WHY_P3":"Com o teu addon podes facilmente alcançar esta audiência e distribuir o teu conteúdo de vídeo para todos os utilizadores.","WEBSITE_CONTRIBUTE_ALL":"Vê os teus filmes, séries, vídeos e canais favoritos num único lugar.","WEBSITE_CONTRIBUTE_ALL_P1":"És fã de um tipo de conteúdo que ainda não está disponível no Stremio? Cria um addon para isso e desfruta ao ver os teus vídeos favoritos numa das maiores e mais fáceis plataformas de entretenimento e de se utilizar do mercado.","WEBSITE_CONTRIBUTE_ALL_P2":"Além disso, obterás a infinita gratidão de outros membros da comunidade Stremio com ideias semelhantes","WEBSITE_CONTRIBUTE_MONETIZE":"Monetiza o teu addon e ganha dinheiro com ele","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Uma vez que desenvolvas um novo addon para o Stremio, podes facilmente monetizá-lo de várias maneiras diferentes. Se estás a considerá-lo, sente-te à vontade para entrar em contacto connosco através do ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - ficaríamos felizes por te orientar e aconselhar neste processo sobre as opções de monetização do teu addon.","WEBSITE_CONTRIBUTE_TRANSLATE":"Torna-te num tradutor voluntário","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Se desejas aproveitar as aplicações do Stremio em diferentes idiomas, podes juntar-te à nossa comunidade de tradutores voluntários. Eles ajudam-nos a adicionar versões do Stremio nos diferentes idiomas.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Estás ansioso para começar?","WEBSITE_TRANSALTE_STREMIO":"Traduzir o Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Comunidades oficiais","WEBSITE_COMMUNITY_OFFICIALS_P1":"Faz parte da crescente comunidade do Stremio. Segue-nos nas redes sociais e não te sintas intimidado por nos dizeres um \\"Olá\\" - gostamos de conhecer os nossos fãs!","WEBSITE_COMMUNITY_UNOFFICIALS":"Comunidades não-oficiais","STREMIO_COMMUNITY_NL":"Stremio Países Baixos","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Alemanha","STREMIO_COMMUNITY_BELGIUM":"Stremio Bélgica","STREMIO_COMMUNITY_FRANCE":"Stremio França","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Itália","STREMIO_COMMUNITY_UK":"Stremio Reino Unido","STREMIO_COMMUNITY_USA":"Stremio EUA","STREMIO_COMMUNITY_MEXICO":"Stremio México","STREMIO_COMMUNITY_ADDONS":"Extensões Stremio","STREMIO_COMMUNITY_AWESOME":"O melhor do Stremio","WEBSITE_COMMUNITY_PARTNERS":"Parceiros e apoiantes","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Papéis de parede","WEBSITE_COMMUNITY_ART":"Galeria de Artes da Comunidade","WEBSITE_LINK_ART":"Galeria de Artes da Comunidade","WEBSITE_CONTACT_US":"Contacta-nos","WEBSITE_CONTACT_US_P1":"Caso tenhas dúvidas, comentários ou sugestões, sente-te à vontade para entrares em contacto connosco através do formulário em baixo.","WEBSITE_CONTACT_US_P2":"Lembra-te de que estamos localizados na Bulgária, por isso, pode haver alguma demora no atendimento do teu contacto devido às diferenças de fuso horário.","WEBSITE_CONTACT_US_SUCCESS":"A tua mensagem foi enviada. Entraremos em contacto contigo o mais breve possível.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Por favor, escreve um e-mail válido!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Com que assunto está relacionada a tua pergunta?","WEBSITE_CONTACT_US_Q_OS":"Qual é o teu sistema operativo?","WEBSITE_CONTACT_US_PH_EMAIL":"O teu e-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Mensagem","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"ENVIAR","WEBSITE_CONTACT_US_Q_1":"Como instalar?","WEBSITE_CONTACT_US_Q_2":"Como desinstalar?","WEBSITE_CONTACT_US_Q_3":"(HTML) Como fazer lasanha?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"MacOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Tecnologia","WEBSITE_TECHNOLOGY_P1":"Adoramos tecnologia e ciência maluca. </ br> Aqui estão os poderes do Stremio (tudo em código aberto).","WEBSITE_TECHNOLOGY_P_QT":"Desenvolvimento de software multiplataforma no seu melhor.","WEBSITE_TECHNOLOGY_P_MPV":"Um reprodutor de multimédia gratuito, de código aberto e multiplataforma.","WEBSITE_TECHNOLOGY_P_RN":"O React Native permite que cries aplicações móveis utilizando apenas JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Framework de multimédia embutido na apicação para funcionalidades multimédia","WEBSITE_TECHNOLOGY_P_REALM":"A Realm é uma plataforma móvel e um substituto para o SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"O Node.js é um ambiente em tempo de execução multiplataforma e de código aberto para JavaScript.","WEBSITE_TECHNOLOGY_P_RUST":"O Rust é uma linguagem de programação multi-paradigma focada em segurança, especialmente em concorrência segura.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribuir para o projeto.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Há duas maneiras para poderes contribuir com o Stremio e ajudar-nos a tornar o produto ainda melhor.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Podes doar as tuas valiosas habilidades linguísticas para ajudar a traduzir a plataforma...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"ou","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"...podes utilizar as tuas habilidades de programação para criar addons da comunidade.","WEBSITE_TRANSLATE_STREMIO":"Traduzir o Stremio","WEBSITE_404_OH_NO":"Ups! A página que procuras não está aqui...","WEBSITE_GO_HOME":"Voltar ao início","WEBSITE_LINK_OTHER_DOWNLOADS":"Outras transferências","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Suporte","WEBSITE_DOWNLOAD_4_0_BETA":"Transferir o Stremio 4 beta agora","WEBSITE_GET_FOR_DESKTOP":"Transferir para o computador","WEBSITE_LINK_ADDON_COMPETITION":"Competições de addons","WEBSITE_LINK_ART_CONTEST":"Concurso de artes","WEBSITE_MY_ACCOUNT":"A minha conta","WEBSITE_MAINPAGE_FAQ_001_H1":"O que é o Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"O Stremio é um moderno centro de multimédia, que oferece a liberdade para veres tudo o que desejas.","WEBSITE_MAINPAGE_FAQ_002_H1":"Como funciona?","WEBSITE_MAINPAGE_FAQ_002_P1":"Depois de instalares o Stremio no teu dispositivo e criar uma conta tudo o que precisas de fazer é visitar o catálogo de addons e instalar qualquer complemento que desejares, e pronto!","WEBSITE_MAINPAGE_FAQ_002_P2":"Depois disso, podes ir às secções Explorar ou Painel para começar a explorar o conteúdo.","WEBSITE_MAINPAGE_FAQ_003_H1":"O que posso ver aqui?","WEBSITE_MAINPAGE_FAQ_003_P1":"Diversos filmes, programas de TV, canais da Web, desportos, canais de TV, ouvir podcasts e muito mais. Graças ao nosso sistema de addons podes aceder a uma variedade de conteúdos.","WEBSITE_MAINPAGE_FAQ_004_H1":"O Stremio é de código aberto?","WEBSITE_MAINPAGE_FAQ_004_P1":"Sim, podes verificar os seguintes links: ${1}aplicação desktop${2} e ${3}organização GitHub${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"O Stremio é seguro?","WEBSITE_MAINPAGE_FAQ_005_P1":"Sim. Por ser um software de código aberto o código é auditável publicamente e, podes revê-lo.","WEBSITE_MAINPAGE_FAQ_006_H1":"E a minha privacidade?","WEBSITE_MAINPAGE_FAQ_006_P1":"Respeitamos a privacidade dos utilizadores e não coletamos dados pessoais além do mínimo essencial para criar e sincronizar a tua conta.","WEBSITE_MAINPAGE_FAQ_006_P2":"Há também um ${1}modo convidado ${2}no registo que não requer dados: deste modo, nenhuma chamada é feita aos nossos servidores. No entanto, isto ocorre à custa de funcionalidades úteis, como sincronizar a tua biblioteca entre dispositivos.","WEBSITE_MAINPAGE_FAQ_007_H1":"Posso transmitir para a minha TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Sim, suportamos o Chromecast e podes transmitir através de aplicações para o computador e dispositivos móveis (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"Quantas extensões possui o Stremio?","WEBSITE_MAINPAGE_FAQ_008_P1":"No final de 2019, acima de 50 - para obter mais informações, consulte o nosso catálogo de extensões.","WEBSITE_MAINPAGE_FAQ_009_H1":"O Stremio pode ser expandido além do que se encontra no catálogo de extensões?","WEBSITE_MAINPAGE_FAQ_009_P1":"Sim, deves verificar estes: ${1}PimpMyStremio${2}, ${3}Comunidades Reddit${4}, ${5}Downloader Stremio${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"Que dispositivos o Stremio suporta?","WEBSITE_MAINPAGE_FAQ_010_P1":"Temos aplicações desktop para Windows, Mac e Linux. Para dispositivos móveis, suportamos Android e iOS, embora tem em conta que as funcionalidades do iOS são limitadas (não é compatível com a maioria dos addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"Existem muitos dispositivos com base no Android aos quais podes executar o Stremio, como NVIDIA Shield e Amazon Fire Stick, mas não os suportamos oficialmente.","WEBSITE_MAINPAGE_FAQ_011_H1":"Podem adicionar determinados conteúdos ao Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Desculpa, mas não fornecemos conteúdo. Porém, quanto mais addons do Stremio instalares mais conteúdo poderás encontrar.","WEBSITE_MAINPAGE_FAQ_012_H1":"O Stremio pode reproduzir magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Sim, e também pode reproduzir links HTTP normais e de ficheiros torrent (arrastar e soltar).","WEBSITE_MAINPAGE_FAQ_013_H1":"Posso descarregar um vídeo e vê-lo offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"O modo offline estará disponível futuramente, porém, se permitires que o Stremio faça cache no dispositivo (no painel de definições), poderás ver os teus vídeos mais tarde, mesmo sem ligação à Internet.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nada funciona, ajudem-me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Tens a certeza de que instalaste addons? Se sim, verifica a nossa ${1}central de ajuda${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"Como o Stremio sustenta as suas operações de desenvolvimento?","WEBSITE_MAINPAGE_FAQ_015_P1":"Ocasionalmente, exibimos anúncios não intrusivos, mas estamos a pensar em mudar para um modelo de doação.","WEBSITE_MAINPAGE_FAQ_015_P2":"Para mais dúvidas, visita a nossa ${1}central de ajuda${2}.","HELP_LEARN_MORE":"Ajuda-nos a aprender algo mais sobre ti.","LIFESTYLE":"Estilo de vida","SPORTS":"Desporto","FOOD_HEALTH":"Comida e bem-estar","BEAUTY_FASHION":"Beleza e moda","NEWS":"Notícias","GAMING":"Jogos","SCIENCE_EDUCATION":"Ciência e educação","MUSIC":"Música","TRAVEL":"Viagens","LATE_NIGHT":"Late night show","REALITY":"Reality show","COMEDY":"Comédia","DIY":"Faz tu mesmo","TECH":"Tecnologia","CINEMA":"Cinema","CONTINUE":"Continuar","SLOW_LOADING":"LENTO A CARREGAR?","I_GIVE_UP":"DESISTO","LEARN_MORE":"Aprender mais","POOR_SOURCE":"Esta fonte possui fraca disponibilidade ou a tua ligação à Internet não é suficientemente rápida","PICK_CATEGORIES_ERR":"Tens de escolher pelo menos 3 categorias","ADJUST_TIMING":"Ajustar tempos com ","ADJUST_SIZE":"Ajustar tamanho com ","SEARCH_ANYTHING":"Podes pesquisar qualquer coisa...","ALL_CATEGORIES":"Tudo","SEARCH_CATEGORIES":"Filmes, Séries, YouTube e TV","SEARCH_PERSONS":"Atores, Realizadores e Argumentistas","SEARCH_PROTOCOLS":"Links HTTP e Magnet","SEARCH_TYPES":"Links IMDb / TheTVDB","WATCHED":"Visto","SHOW_LESS":"Mostrar menos","LAST_SEARCHES":"Pesquisas recentes","CLEAR_HISTORY":"Limpar histórico","CHOOSE_SOME":"ESCOLHE ALGUNS DESTES:","NO_WEB_REMOTE":"O controlo remoto via web não pôde ser carregado","STREMIO_OFFLINE":"O Stremio está offline","STREMIO_EXPENSIVE_CONNECTION":"Detetámos que estás a utilizar uma ligação por dados móveis. Desejas continuar?","USE_DATA":"Dados de Utilização","WARNING":"Aviso","MORE_INFO":"Mais informações ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"A carregar ...","STREMIO_TV_BACK_TO_LANGUAGES":"Voltar para os idiomas","STREMIO_TV_REMOTE":"Remoto","STREMIO_TV_GO_TO":"Ir para:","STREMIO_TV_OR_SCAN":"ou pesquisar:","STREMIO_TV_ADDON_INSTRUCTIONS":"Por favor, segue as instruções com o intuito de instalares os teus addons favoritos.","STREMIO_TV_LIVE_TV":"TV em direto","STREMIO_TV_RESUME_WATCHING":"Continuar a ver","STREMIO_TV_LOADING_BACKGROUND":"A carregar o plano de fundo","STREMIO_TV_CHECKING_AUTHENTICATION":"A verificar autenticação","STREMIO_TV_LOADING_BOARD":"A carregar o painel","STREMIO_TV_LOGIN_HEADER_LINE_1":"Queremos que os nossos utilizadores tenham a melhor experiência personalizada possível com o nosso programa.","STREMIO_TV_LOGIN_HEADER_LINE_2":"É por esta razão que pedimos gentilmente que inicies sessão na tua conta.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Obrigado por entenderes,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Equipa Stremio","STREMIO_TV_REMOTE_INSTRUCTIONS":"Com o intuito de utilizares o trabalho Remoto com o teu Smartphone / Tablet / PC:","STREMIO_TV_WIFI_SETUP":"Configurar Wi-Fi","STREMIO_TV_WIFI_HEADER_LINE_1":"O Stremio Circle não detetou ligação à Internet.","STREMIO_TV_WIFI_DETAILS_1":"Ligar a:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Utilizar palavra-passe:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Abrir o navegador com o link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Predefinido","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Pela última vista","STREMIO_TV_LIBRARY_SORT_NAME":"Por nome","STREMIO_TV_LIBRARY_TIMES_WATCHED":"Por vezes vistas","STREMIO_TV_DETAILS_SEASON_NUMBER":"Temporada ${1}","STREMIO_TV_STREAMS_LOADING":"${1} / ${2} addons carregados...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} o addon está ainda a carregar...","STREMIO_TV_PLAYER_SETTINGS":"Definições de reprodução","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Atraso das legendas","STREMIO_TV_PLAYER_AUDIO_DELAY":"Atraso do áudio","STREMIO_TV_PLAYER_VIDEO_SCALING":"Escala do vídeo","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Fonte de streams não suportada","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Falha ao abrir o link externo","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Reproduzir com o ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Reproduzir com o libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"A mudar para o libVLC player devido a um erro de reprodução","STREMIO_TV_ADDONS_TITLE":"Utiliza o Stremio no teu telemóvel ou PC para instalares ou configurares addons e pressiona em \\"Sincronizar addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Nota: certifica-te de que estás a utilizar a mesma conta do Stremio","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sincronizar addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons sincronizados com sucesso","STREMIO_TV_ADDONS_SYNC_FAILED":"Falha ao sincronizar addons","STREMIO_TV_META_LINK_FAILED":"Falha ao abrir o link meta","STREMIO_TV_CATALOG_LOADING":"O catálogo ainda está a carregar...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Idioma da interface atualizado","STREMIO_TV_SETTINGS_THEME_UPDATED":"Tema atualizado","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Leitor predefinido","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"Leitor externo","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Idioma preferido","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Idioma secundário preferido","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Reprodução no modo tunnelled","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possíveis problemas de reprodução nalguns dispositivos","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Alguns formatos de vídeo podem não funcionar","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Sem caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Predefinido","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Suave","STREMIO_TV_SETTINGS_PROFILE_FAST":"Rápido","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra rápido","STREMIO_TV_SETTINGS_SERVER_URL":"URL do servidor de streaming","STREMIO_TV_SETTINGS_SERVER_VERSION":"Versão do servidor","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Desconhecido","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Versão do Stremio","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Editar URL do servidor","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Introduz um URL do servidor de streaming","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Para leres a Política de privacidade do Stremio, vai a:","STREMIO_TV_SETTINGS_TOS_TEXT":"Para leres os Termos e condições do Stremio, vai a:","STREMIO_TV_NAV_SEARCH":"Pesquisar","STREMIO_TV_NAV_HOME":"Início","STREMIO_TV_NAV_DISCOVER":"Explorar","STREMIO_TV_NAV_LIBRARY":"Biblioteca","STREMIO_TV_NAV_MOVIES":"Filmes","STREMIO_TV_NAV_SERIES":"Séries","STREMIO_TV_NAV_CHANNELS":"Canais","STREMIO_TV_NAV_TV":"TV em direto","STREMIO_TV_NAV_SETTINGS":"Definições","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Ligar conta","STREMIO_TV_LOGIN_EXPIRES_IN":"Expira em","STREMIO_TV_LOGIN_STEP_ONE":"Lê o código QR acima ou vai para","STREMIO_TV_LOGIN_STEP_TWO":"Inicia sessão na tua conta do Stremio","STREMIO_TV_LOGIN_NEW_LINK":"Pedir um novo link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Código de início de sessão atualizado","STREMIO_TV_SEARCH_PLACEHOLDER":"Escreve alguma coisa","STREMIO_TV_SEARCH_NO_ADDONS":"Não foram pedidos addons para catálogos!","STREMIO_TV_SEARCH_BUTTON":"Pesquisar","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Histórico de pesquisas","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Podes pesquisar por títulos, atores, canais e mais...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Limpar histórico de pesquisas","STREMIO_TV_FILTERS_DESCRIPTION":"Escolhe um dos filtros abaixo","FILTERS":"Filtros","SETTINGS":"Definições","ACCOUNT":"Conta","LOGOUT":"Terminar sessão","THEMES":"Temas","PLAYBACK":"Reprodução","PLAYBACK_SPEED":"Velocidade de reprodução","AUDIO_TRACKS":"Faixas áudio","VIDEOS":"Vídeos","SERVER":"Servidor","LINKS":"Links","ABOUT":"Acerca de","INTERFACE":"Interface","ANIMATIONS":"Animações","STATUS":"Estado","LANGUAGE":"Idioma","SIZE":"Tamanho","DELAY":"Atraso","BOLD":"Em negrito","TEXT_COLOR":"Cor do texto","OUTLINE_COLOR":"Cor do contorno","BACKGROUND_COLOR":"Cor do fundo","BACKGROUND_BLUR":"Desfocagem do fundo","SEEK_TIME_DURATION":"Duração do tempo para avançar / recuar","AUTO_PLAY":"Reproduzir o próximo episódio automaticamente","PLAY_NOW":"Reproduzir agora","MARK_AS_WATCHED":"Marcar como visto","MARK_AS_UNWATCHED":"Marcar como não visto","REWIND_TO_BEGINNING":"Ver do início","CONTINUE_WATCHING":"Continuar a ver","ALL":"Tudo","SECONDS":"segundos","ON":"LIGADO","OFF":"DESLIGADO","RELOAD":"Recarregar","EDIT_URL":"Editar URL","NONE":"Nenhum","EMBEDDED":"Embutido","REMOTE_SWITCH_DEVICES":"Trocar dispositivos","REMOTE_VIDEOS":"Vídeos","REMOTE_ADJUST_TIMING":"Ajustar o tempo","REMOTE_ADJUST_SIZE":"Ajustar o tamanho","REMOTE_COULD_NOT_BE_LOADED":"O Web Remote não pôde ser carregado","REMOTE_RETRY":"Tentar novamente","TORRENT_PROFILE_DEFAULT":"Predefinido","TORRENT_PROFILE_SOFT":"Suave","TORRENT_PROFILE_FAST":"Rápido","TORRENT_PROFILE_ULTRA_FAST":"Ultra rápido","FAQ_001_H1":"O que é o stremio?","FAQ_001_P1":"O Stremio é um programa de multimédia centralizado desenhado para video entretenimento com a facilidade de utilização em mente. O Stremio permite-te organizares e veres a tua própria coleção de vídeos, séries, canais e TV em Direto.","FAQ_001_P2":"O Stremio cataloga o teu conteúdo, seja através do teu disco local seja através do nosso sistema de addons.","FAQ_001_P3":"Também te notificaremos quando novos episódios/vídeos/filmes em que tenhas interesse sairem para o ar e mostrar-te-á recomendações de filmes.","FAQ_02_H1":"Como o Stremio se compara ao Kodi e Plex?","FAQ_02_P1":"Inspirámo-nos nos dois programas mas temos diferentes objetivos - o Stremio é especificamente voltado para o entretenimento de vídeo. Batalhámos para sermos a solução predefinida nesse sentido, tendo em foco a facilidade de utilização.","FAQ_02_P2":"Stremio nunca será tão customizável e nunca terá tantos recursos como Kodi e Plex. Mas será significativamente mais fácil de utilizar. Simplesmente ${1} obtém-no e comprova ${2} :)","FAQ_03_H1":"Como o Stremio se compara à Netflix?","FAQ_03_P1":"Novamente, a Netflix é uma das nossas inspirações. Trabalharemos arduamente para atingir a experiência de utilização proporcionada pela Netflix e mais uma quantidade de melhorias. No entanto, o mais importante é dar-vos a liberdade de organizarem a vossa própria biblioteca e adicionar novas fontes de conteúdos com o nosso sistema de addons.","FAQ_03_P2":"Isso faz do Stremio infinitamente extensível e assim que o utilizares nunca ficarás limitado ao conteúdo que a Netflix decida licenciar. Por exemplo, através do Stremio podes ver o conteúdo de ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} e mesmo da ${9}Netflix${10}!","FAQ_04_H1":"Como o Stremio se compara ao Flipboard?","FAQ_04_P1":"Raramente recebemos esta questão, excepto quando falamos com pessoas iniciantes :)","FAQ_04_P2":"O Stremio é desenhado como um agregador de conteúdo tal e qual o Flipboard o faz para vídeo. Isto é muito parecido no nosso painel, painel este que te mostrará catálogos e notificações de novos episódios/novos vídeos que sigas, tal e qual o Flipboard.","FAQ_05_H1":"Como o Stremio se compara ao Popcorn Time?","FAQ_05_P1":"O Stremio e o Popcorn Time são semelhantes na interface de utilização porque não há muitas formas de fazer catálogo de vídeo entretenimento, certo? :)","FAQ_05_P2":"Mas enquanto o Popcorn Time tem o foco numa entrega de torrents que provêm de fontes específicas, o Stremio não possui restrições e é meramente um agregador de conteúdo - não está bloqueado a uma fonte de conteúdo específica.","FAQ_05_P3":"Além disso, não fornecemos nenhuma extensão para torrent por padrão então o Stremio não cobre o caso de utilização do Popcorn Time na sua funcionalidade oficial.","FAQ_05_P4":"Uma outra diferença notável é que o Popcorn Time é completamente de código aberto enquanto o Stremio é ${1} parcialmente de código aberto ${2}.","FAQ_06_H1":"Vocês é que adicionam estes filmes/séries?","FAQ_06_P1":"Não, desculpa :(","FAQ_06_P2":"Como já mencionámos noutras questões, o Stremio não partilha nenhum conteúdo por si próprio - tudo é adicionado diretamente pelo sistema de addons. Caso queiras pedir algum conteúdo, pode utilizar o botão “Reportar” no reprodutor e assim enviar um e-mail para o autor do addons com que te encontras a utilizar.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Criarão addons para X?","FAQ_08_P1":"É inteiramente possível.","FAQ_08_P2":"Se tens alguma ideia para um addon, escreve para ${1}office@stremio.com${2}, mas por favor, tem a certeza de que a ideia desse addon não infringirá nenhum direito de propriedade intelectual ou termos de utilização.","FAQ_08_P3":"De momento, os próximos movimentos no nosso projeto são addons para FandangoNOW, vídeo on demand no Filmon.tv e no Crunchyroll.","FAQ_09_H1":"O Stremio utiliza o BitTorrent?","FAQ_09_P1":"Sim. O Stremio suporta o BitTorrent como um protocolo streaming. Podes utilizá-lo com a extensão torrent ou por arrastar e soltar um ficheiro .torrent dentro do Stremio ou até mesmo colando um magnet link dentro do campo de pesquisa.","FAQ_09_P2":"Por favor, nota que o único addon oficial que utiliza o BitTorrent é o ${1}Vodo${2}, ao qual fornece produção independente, todos com permissão para serem distribuídos com o BitTorrent.","FAQ_09_P3":"Não suportamos a utilização de qualquer addon de terceiros que possa viabilizar o infringimento de leis de direitos.","FAQ_10_H1":"O que posso ver no Stremio com os addons oficiais?","FAQ_10_P1":"Predefinidamente, podes ver conteúdo do Filmon.tv, YouTube e Vodo dentro do Stremio com o reprodutor interno. Temos adicionalmente um addon para a Twitch.tv e outros.","FAQ_10_P2":"Esta combinação fornece uma seleção de:","FAQ_10_L1":"Canais de TV populares, fornecido por Filmon.tv - por exemplo E4, BBC, Bollyworld TV","FAQ_10_L2":"Tudo do YouTube - por exemplo BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Filmes indepententes com Vodo","FAQ_10_L4":"Transmissões de jogos online com a Twitch.tv","FAQ_10_P3":"Adicionalmente, há muitas fontes de conteúdo fornecidas com Guidebox e addons Netflix, ao qual <b>não</b> reproduzem inteiramente dentro do Stremio, mas pode redirecionar para o dado serviço. Por exemplo, o addon Guidebox dá-te uma seleção de filmes que podes fazer stream gratuitamente dentro dos Estados Unidos através de serviços como o TubiTV e o Crackle.","FAQ_11_H1":"O Stremio não instala, o que devo fazer?","FAQ_11_P1":"Se utilizas Windows, tenta ${1}este instalador alternativo${2}.","FAQ_11_P2":"Se utilizas Mac OS X, por favor, tem em conta que não suportamos versões inferiores ao OS X Mavericks (10.9).","FAQ_11_P3":"Caso estejas a utilizar Linux, tem em conta que neste momento apenas damos suporte para a versão de 64 bits (x64).","FAQ_11_P4":"Se não ainda não conseguiste resolver o teu problema, por favor, envia-nos uma mensagem no ${1}Grupo do Facebook${2}.","FAQ_12_H1":"Porque é que o meu antivírus está a notificar-me? O Stremio é seguro?","FAQ_12_P1":"Asseguramos-te de que o Stremio é ${1}100% limpo${2}.","FAQ_12_P2":"O teu antivirus está a notificar-te, porque incluimos publicidade no nosso instalador e isso faz com que o Stremio seja classificado como um adware.","FAQ_12_P3":"Se não estás seguro, podes utilizar o nosso ${1}instalador alternativo${2}.","FAQ_13_H1":"Como posso fazer um addon?","FAQ_13_P1":"Para iniciantes, recomendados que leiam o nosso ${1}módulo de sistema de extensão${2} no GitHub.","FAQ_13_P2":"Todavia, podes seguir o ${1}Tutorial do Olá Mundo${2}.","FAQ_13_P3":"Se não tens nenhum conhecimento em programação, por favor, publica a tua ideia na ${1}comunidade Reddit${2} e partilha-a com ${3}office@stremio.com${4}.","FAQ_14_H1":"Como os addons são publicados?","FAQ_14_P1":"Quando crias um addon e hospedor, colocas um campo <b>endpoint</b> no teu manifest, ao qual aponta para um endereço de addon ativo. O addon ficará automaticamente publicado no nosso ${1}Catálogo de Addons{2}.","FAQ_14_P2":"Esta situação acontece porque parte do servidor do módulo de addons do Stremio, que faz automaticamente uma chamada para a nossa API para publicar o addon. Quando a nossa API o valida <b>endpoint</b> como um addon válido, ficará disponível no nosso catálogo.","FAQ_15_H1":"Posso executar o Stremio no navegador?","FAQ_15_P1":"De momento não, mas em breve!","FAQ_15_P2":"Se estás curioso para ver uma versão Alpha, podes aceder aqui: ${1}alpha4.strem.io${2}. Tem em conta que o streaming está inativo. Damos suporte para Chrome, Firefox, Opera e Edge.","FAQ_16_H1":"A transmissão para a TV não funciona / legendas não funcionam","FAQ_16_P1":"A transmissão para a TV utiliza a tecnologia DLNA que é muito inconsistente entre modelos de fabricantes diferentes. Por esta razão, nós não temos a habilidade de testar cada caso então estamos longe da perfeição. Continuamos a trabalhar no sentido de melhorar cada vez mais a aplicação mas não podemos dar uma estimativa de tempo de quando a tecnologia DLNA funcionará corretamente na tua TV.","FAQ_16_P2":"Se ainda não vês a tua TV no menu de transmissão, por favor, tenta desativar a tua conexão de rede e ativa-a novamente (no Windows, clica com o botão direito em Rede e clica em Ativar/Desativar), reinicia também o teu rooter, TV e PC.","FAQ_16_P3":"Se estás ainda a encontrar problemas, podes ajudar-nos ao enviares a informação do teu modelo de TV e fabricante para ${1}office@stremio.com${2}.","FAQ_16_P4":"Entretanto, recomendamos o Chromecast, ao qual suportamos muito bem ou até simplesmente conectando a tua TV ao teu PC com um cabo HDMI.","FAQ_17_H1":"O Stremio bloqueia/falha, o que posso fazer?","FAQ_17_P1":"Primeiro de tudo, se estás a utilizar o Windows 7 com o antivirus AVG: temos problemas com essa combinação. O problema é o próprio AVG e não há uma solução definitiva para corrigirmos isso. Infelizmente, exceções ou desativar o antivirus não funciona. A única forma é trocares o teu antivirus.","FAQ_17_P2":"Se isso não é o problema, mas usa Windows, por favor atualize seu o sistema, incluíndo os drivers da GPU e tente novamente.","FAQ_17_P3":"Se o teu problema continua sem solução ou utilizas Mac ou Linux, por favor escreve-nos reportando em detalhe o problema no ${1}nosso grupo do Facebook${2}.","FAQ_18_H1":"Como posso fazer uma extensão?","FAQ_18_P1":"Para iniciantes recomendamos que vejas o nosso ${1}módulo de sistema de addons{2} no GitHub.","FAQ_18_P2":"No entanto, podes guiar-te pelo nosso ${1}tutorial do Olá Mundo!${2}.","FAQ_18_P3":"Se não tens nenhuma habilidade em programação, por favor, publica a tua ideia na ${1}comunidade do Reddit${2} e contacta-nos com a tua ideia de addon para ${3}office@stremio.com${4}.","FAQ_19_H1":"Porque é que o Stremio está a ocupar espaço em disco?","FAQ_19_P1":"O Stremio tem um <b>cache local</b> para temporariamente deixar os ficheiros de vídeo descarregados.","FAQ_19_P2":"Esta situação tem dois benefícios: primeiro, permite ao Stremio pré-carregar o vídeo para garantir uma transmissão suave. Segundo, isto deixa os vídeos na cache local para que possas continuar a ver offline.","FAQ_19_P3":"Quanto depende o Stremio da configuração do <b>Cache</b> no painel das Definições. O Stremio pode manter uma quantidade (exemplo 2GB) no teu disco, a menos que o video descarregado seja maior que isso e nesse caso pode necessitar de mais espaço para mantê-lo enquanto o descarrega.","FAQ_20_H1":"Onde está a pasta da cache?","FAQ_20_P1":"No Windows, a cache do Stremio fica no caminho que selecionaste nas definições (exemplo \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"No MacOS, fica em \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"No Linux, fica em \\"~/.stremio/stremio-cache\\" ou \\"~/stremio-cache\\"","FAQ_21_H1":"Recebi a mensagem de erro \\"Servidor de streming não encontrado\\", o que posso fazer?","FAQ_21_P1":"Se recebeste esta mensagem implica uma das possibilidades:","FAQ_21_P2":"1) Estás a tentar utilizar um addon suportado pelo código do YouTube/BitTorrent através da nossa ${1}versão web${2}. Nesse caso, deves instalar a nossa versão para desktop através do ${3}nosso site${4}.","FAQ_21_P3":"2) Há algo de errado com a instalação do Stremio. Neste caso, tenta reinstalar a nossa versão mais recente através ${1}do site${2}. Se isto não ajudar, tenta desativar os programas de antivírus e firewal, reinicia o teu PC e tenta novamente. Se isto não funcionar, por favor, entra em contacto pelo ${3}nosso grupo do Facebook${4}.","FAQ_22_H1":"Eu não posso ver/utilizar a maioria dos addons no iOS","FAQ_22_P1":"Devido a restrições nos termos e condições da loja da Apple, temos restringido apenas a aplicação iOS de um grupo particular de addons.","FAQ_22_P2":"Mas fica atento - existirão mais addons para iOS no futuro e poderemos também adicionar uma integração que permitirá a utilização de todos os addons do Stremio graças à conexão da aplicação iOS com o servidor de Streaming do Stremio."}')},6687:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Кино","TYPE_series":"Сериал","TYPE_tv":"ТВ-канал","TYPE_channel":"Канал","TYPE_other":"Прочее","TYPE_movie_PL":"Кино","TYPE_series_PL":"Сериалы","TYPE_tv_PL":"ТВ-каналы","TYPE_channel_PL":"Каналы","TYPE_other_PL":"Прочее","TYPE_ALL":"Все","VIDEO":"Видео","BACK":"Назад","MORE":"Ещё","DONE":"Готово","COPY":"Копировать","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"По умолчанию","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Открытия","Board":"Доска","Library":"Библиотека","My Library":"Моя библиотека","Calendar":"Календарь","NOTIFICATION_ONLINE":"Вы в сети","NOTIFICATION_OFFLINE":"Вы вне сети","INTERNET_CONNECTION":"Сетевое подключение","STORAGE_FULL_TITLE":"Внимание: хранилище заполнено!","STORAGE_FULL_TEXT":"Stremio не может сохранить ваши настройки, предпочтения или данные для входа. Попробуйте перезапустить или переустановить Stremio.","SEARCH":"поиск","SEARCH_NO_RESULTS":"Ничего не найдено","SEARCH_EXPLANATION_CONTENT":"Поиск фильмов, сериалов, YouTube и ТВ-каналов","SEARCH_EXPLANATION_PEOPLE":"Поиск актёров, режиссёров и авторов","SEARCH_PASTE_LINKS":"Вставьте HTTP и Magnet-ссылки","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Добавить в библиотеку","REMOVE_FROM_LIB":"Удалить из библиотеки","ADDED_TO_LIB":"Добавлено в библиотеку","REMOVED_FROM_LIB":"Удалено из библиотеки","TRAILER":"Трейлер","WATCH_TRAILER":"Смотреть трейлер","WATCH_NOW":"Смотреть","SHOW":"Показать","SHOW_MOVIE":"Показать фильм","WATCH_RANDOM":"Смотреть в случайном порядке","IMDB_RATING":"Рейтинг IMDb","YEAR":"Год","DIRECTOR":"Режиссёр","WRITER":"Писатель","LEAD_ACTORS":"Основные актёры","CAST":"Актёры","CREW":"Команда","SHOW_MORE_CAST":"Показать больше »","AIRED":"Выпуск","SEASONS":"Сезоны","GENRE":"Жанр","CATALOG":"Каталог","SUMMARY":"Описание","SHOW_MORE":"Показать больше","SIMILAR":"Похожее","UPCOMING":"Скоро","ENDED":"Закончилось","DURATION":"Продолжительность","FEATURED":"Представлено","METADATA":"Метаданные","CATEGORY":"категория","LINKS_GENRES":"Жанры","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"поиск видео","SEARCH_PLACEHOLDER":"поиск или вставка магнитной ссылки","ADDON":"Дополнение","ADDONS":"Дополнения","OFFICIAL":"Официальный","ADDONS_OFFICIAL":"Официальные дополнения Stremio","ADDONS_POPULAR":"Популярно в вашем районе","ADDON_FREE":"Бесплатно","ADDON_PEERED":"Попробовать","ADDON_SUBSCRIPTION":"Подписка","ADDON_STREAM_GEORESTRICTED":"недоступно в вашем регионе","ADDON_STREAM_OFFLINECACHE":"Офлайн-кэш","ADDON_STREAM_LOCALFILE":"Локальный файл","SHARE_ADDON":"Поделиться дополнением","AVAILABLE_STREAMS":"Доступные стримы","NO_STREAM":"Нет стримов","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Для большего количества стримов установите больше дополнений","STREAM_NOT_SUPPORTED":"Выбранные стримы не поддерживаются на этой платформе.","ADDON_CATALOGUE":"Показать все дополнения »","ADDON_CATALOGUE_MORE":"Больше дополнений »","REPO_ADDED":"Репозиторий добавлен","ADDON_REPO_EXIST_ERR":"Этот репозиторий дополнений уже существует","ADDON_REPO_ERR":"Ошибка при добавлении репозитория","ADDON_ADD_ERR":"Ошибка при добавлении дополнения","ERR_ADDON_PROTECTED":"Защищенное дополнение","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Что-то пошло не так — возможно, аутентификация не удалась","ERR_NOT_COLLECTION_URL":"Не URL-адрес коллекции","ERR_NOT_ADDON_URL":"Не URL-адрес дополнения","ERR_DETECTFROMURL":"Не удается обнаружить по URL-адресу","ADDON_DUPLICATE_WARNING":"Внимание: дублирующееся дополнение","ADDON_COLLECTION_SET_FAILED":"Не удалось установить коллекцию дополнений","SETTINGS_DATA_EXPORT":"Экпорт данных","ADDON_PULL_FAILED":"Синхронизация установленных дополнений из вашей учетной записи не удалась","REFRESH_ON_CLICK":"Нажмите, чтобы повторить","STILL_IN_THEATER":"Фильм все еще показывают в кинотеатрах","WATCH_IN_CINEMA":"Смотрите его в местном кинотеатре","IN_THEATER":"В кино","GET_TICKETS":"Купить билеты","UPCOMING_EPISODE":"Предстоящий эпизод","UPCOMING_EPISODE_MESSAGE":"Этот эпизод выйдет в эфир","MISSING_DATE_EPISODE":"Дата отсутсвует","MISSING_DATE_EPISODE_MESSAGE":"Возможно, этот эпизод еще не выпущен","CHANNEL_NOT_SCRAPED":"Этот канал ещё не просканирован.<br>Пожалуйста, вернитесь через несколько минут.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Добавьте в библиотеку, чтобы получить уведомление, как только станет доступно.","GET_NOTIFIED_WHEN_AVAILABLE":"Вы получите уведомление, как только станет доступно.","WARNING_STREAMING_SERVER":"Внимание: локальный стриминговый сервер не найден. Стриминг из локальных файлов, YouTube и BitTorrent будет недоступен.","WARNING_STREAMING_SERVER_DISMISS":"Отклонить","WARNING_STREAMING_SERVER_LATER":"Позже","DECODER_WARNING":"Внимание: это видео может не поддерживаться вашим оборудованием. Имейте в виду, что воспроизведение может быть замедленным.","PLAYER_ERROR":"Упс, ошибка воспроизведения","PLAYER_ERROR_LOOKSLIKE":"Выглядит как","PLAYER_ORIENTATION":"Ориентация плеера","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Заблокировано","PLAYER_ORIENTATION_SENSOR_SHORT":"По датчику наклона","PLAYER_ORIENTATION_LANDSCAPE":"Ориентация плеера заблокирована в альбомной ориентации","PLAYER_ORIENTATION_SENSOR":"Автоматическая ориентация плеера (датчик)","PLAYER_PLAYBACK_SPEED":"Скорость воспроизведения","PLAYER_PLAYBACK_ERROR":"Ошибка воспроизведения, пожалуйста, попробуйте снова","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Неизвестная ошибка","PLAYER_PLAYBACK_ERROR_DEFAULT":"Извините, это видео не может быть воспроизведено {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Языки субтитров","PLAYER_SUBTITLES_VARIANTS":"Варианты субтитров","PLAYER_SUBTITLES_SETTINGS":"Настройки субтитров","PLAYER_SUBTITLES_DISABLED":"Субтитры отключены","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Вертикальное положения","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Следующее видео","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Смотрите далее","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Отклонить","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Смотреть","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Стрим от","CASTING_TO":"Стим для","NETWORK_STATUS":"Состояние сети","STREAM_SPEED":"Скорость:","STREAM_BUFFERED":"Загружено:","PEERS_INFO":"Информация о пирах","PEERS_ACTIVE":"Активны:","PEERS_CONNECTED":"Подключены:","PEERS_WAITING":"Ждут:","TRANSCODING_WARNING":"Внимание: перекодирование видео.","STREAM_LOADING":"Загрузка...","PLAYING_LOCAL":"Из локального файла","PLAYING_CACHE":"Из кэша","WRONG_SUBS":"Некорректные субтитры?","ERR_SUBS_LOADING_TITLE":"Ошибка загрузки субтитров","ERR_SUBS_LOADING":"Не удалось загрузить субтитры: это может быть связано с используемым вами дополнением или с сетевым подключением","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Не удалось выполнить следующие дополнения субтитров","ERR_CASTING_UPDATE_TITLE":"Не удалось обновить информацию об устройстве трансляции: стриминг-сервер, возможно, отключен","CHOOSE_DEVICE":"Выберите устройство для просмотра","NO_CAST_DEVICES":"Нет доступных устройств.","NO_SETTINGS":"Настройки недоступны.","PHONE_TABLET":"Телефон/планшет","SUBTITLES":"Субтитры","SUBTITLES_CHANGE":"Изменить субтитры для ","SUBTITLES_CHANGE_NONE":"К сожалению, нет других субтитров для этого языка","SUBTITLES_CHANGE_ACIVE":"Сейчас выбраны субтитры #{{subtitlesDialog.activeIdx + 1}}. Нажмите \\"Продолжить\\", чтобы выбрать субтитры #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Как вариант,","SUBTITLES_ADJUST_DELAY":"Настроить задержку субтитров:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Или использовать клавиши <span>G</span>/<span>H</span> во время вопроизведения для настройки.","SUBTITLES_ADJUST_DELAY_TIP":"Совет: вы можете использовать клавиши <span>G</span>/<span>H</span> во время вопроизведения для настройки.","SUBTITLES_DELAY":"Задержка субтитров:","SUBTITLES_LOADING":"Загрузка субтитров...","SUBTITLES_UNAVAILABLE":"Нет доступных внешних субтитров","SUBTITLES_DISABLED":"Отключено","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Аудио","DEFAULT_LANGUAGE":"Язык по умолчанию","DEFAULT_SECONDARY_LANGUAGE":"Дополнительный язык по умолчанию","SEASON":"Сезон","EPISODE":"Эпизод","SPECIAL":"Особый","SORT":"Сортировать","SORT_BY":"Сортировать по","FILTER":"Фильтровать","SORT_TRENDING":"Лидеры","SORT_RECENT":"Недавние","SORT_ALPHABET":"А-я","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"Рейтинг","SORT_WATCHED":"Просмотрено","SORT_YEAR":"Год","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"По последнему просмотру","SORT_NAME":"По названию","SORT_TIMESWATCHED":"По количеству просмотров","New for You":"Новые для вас","New Episodes":"Новые эпизоды","New Videos":"Новые видео","Recommendations":"Рекомендации","LIBRARY_RESUME":"Продолжить","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Подробности","LIBRARY_RESUME_DISMISS":"Сбросить","LIBRARY_CLEAR_PROGRESS":"Очистить прогресс","LIBRARY_REMOVE":"Удалить","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Рекомендуемые","DISCOVER_TOP":"Топ","DISCOVER_OSCAR":"Победители Оскара","DISCOVER_WARNING_TITLE":"Ой!","DISCOVER_EMPTY_CATALOG":"Это дополнение вернуло пустой контент.","DISCOVER_ADULT_WARNING":"Контент доступен только взрослым. Вам 18+?","DISCOVER_NOADDON_WARNING":"Внимание: не было найдено активного дополнения для этого типа. Показаны только сохранённые элементы, обновления не могут быть выполнены.","DISCOVER_LOAD_ERR":"Контент не загрузился, произошла ошибка.","DISCOVER_ADDON_UNINSTALLED":"Этот контент больше не доступен, возможно, вы удалили дополнение.","UNINSTALL_THIS_ADDON":"Удалить дополнение","ERR_ADDON_NOT_INSTALLED":"Это дополнение не установлено. Установить?","DETAIL_RECEIVE_NOTIF_SERIES":"Получать уведомления о новых эпизодах","DETAIL_RECEIVE_NOTIF_VIDEOS":"Получать уведомления о новых видео","SIDEBAR_SHOW_STREAMS":"Показать стримы","RELAUNCH":"Перезапустить!","UPGRADE":"Доступная новая версия! Обновите Stremio до последней версии","RELOAD_UI":"Перезагрузить пользовательский интерфейс","MANUAL_UPDATE_TITLE":"Обновите версию Stremio","MANUAL_UPDATE_LINE1":"Вы используете устаревшую версию Stremio, которая крайне не рекомендуется.","MANUAL_UPDATE_LINE2":"Пожалуйста, обновите как только получится.","BUTTON_UPDATE_LATTER":"Не сейчас","BUTTON_UPDATE_NOW":"Обновить","ANONYMOUS_USER":"Анонимный пользователь","DONT_HAVE_ACC":"Нет аккаунта?","HAVE_ACC":"Уже есть аккаунт?","PASSWORD":"Пароль","PASSWORD_CONFIRM":"Подтвердить пароль","EMAIL":"Эл. почта","FB_LOGIN":"Войти с Facebook","FB_NOTHINGSHARED":"Мы не будем ничем делиться без вашего согласия","FB_NOPOST":"Мы не будем ничего публиковать без вашего согласия","OR":"или","I_ACCEPT":"Я принимаю","I_ACCEPT_BY_CLICKING":"Нажимая кнопку выше, я подтверждаю, что принимаю ","TOS":"Условия и положения","MUST_ACCEPT_TERMS":"Вы должны принять условия","PASSWORDS_NOMATCH":"Пароли не совпадают","SIGN_UP":"Регистрация","SIGN_UP_EMAIL":"Зарегистроваться с эл. почтой","CLICK_TO_SIGN_UP":"Нажмите здесь, чтобы зарегистрироваться.","LOG_IN":"Войти","LOG_OUT":"Выйти","EXIT_FULLSCREEN":"Выйти из полноэкранного режима","ENTER_FULLSCREEN":"Войти в полноэкранный режим","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Помощь и обратная связь","TERMS_OF_SERVICE":"Условия обслуживания","PRIVACY_POLICY":"Политика конфиденциальности","ABOUT_STREMIO":"О Stremio","USER_PANEL":"Панель пользователя","LOGIN_LABEL":"Войти","GUEST_LOGIN":"Войти как гость","GUEST_LOGIN_NOTICE":"Гостевой вход не рекомендуется. Использование обычного входа позволяет Stremio синхронизировать вашу библиотеку, получать уведомления о любимых сериалах/каналах. Вы уверены, что хотите продолжить?","GUEST_LOGIN_NOTICE_2":"Гостевой вход не рекомендуется. У вас не будет синхронизированной библиотеки и доски уведомлений, которые являются очень важными функциями Stremio. Вы уверены, что хотите продолжить?","CLICK_HERE":"нажмите здесь","WRONG_PASSWORD":"Неправильный пароль. Если вы забыли свой пароль, ","SET_A_PASS":"установить пароль","RESET_PASSWORD":"Сброс пароля","FORGOT_PASSWORD":"Забыли пароль?","EMAIL_USED_WITH_FB":"Эта эл. почта была использована с логином Facebook.","INVALID_EMAIL":"Пожалуйста, введите действительный адрес эл. почты","INVALID_PASSWORD":"Пожалуйста, введите действительный пароль","CONN_ERR":"Ошибка подключения. Повторите попытку позже.\\n\\nЕсли проблема не устранится, отключите брандмауэры/антивирусное ПО (особенно Bitdefender).","IMPORT_FROM_GUEST":"Импорт библиотеки из гостевой учетной записи","RECEIVE_UPDATES_EMAIL":"Получайте обновления от Stremio на свою эл. почту","LOGIN_FAILED":"Ошибка входа.","SIGNUP_FAILED":"Регистрация не удалась.","SEARCH_FAILED":"Поиск не удался","EMAIL_USED":"Эта эл. почта уже используется.","WAITING_FB_LOGIN":"Вход через Facebook...","EXTERNAL_PLAYER_TITLE":"Воспроизвести во внешнем плеере","EXTERNAL_REMEMBER_PLAYER":"Хотите запомнить свой выбор","EXTERNAL_ALWAYS_PLAY":"Да","EXTERNAL_ONLY_ONCE":"Нет","BEST_FIT":"Наиболее подходящее","FIT_SCREEN":"По размеру экрана","FILL":"Заполнить","16:9":"16:9","4:3":"4:3","Original":"Оригинал","INTRO_TASTE":"Расскажите, что вам нравится","INTRO_TASTE_LONG":"Расскажите нам о том, что вы хотели бы посмотреть","INTRO_TASTE_PICK":"Выберите {{interestsRemaining}} интересов","INTRO_TASTE_PICK_MORE":"Выберите больше интересов {{interestsRemaining}}","INTRO_TASTE_HELP_US":"Помогите нам лучше узнать вас.","INTRO_TASTE_CHOOSE_THESE":"Выберите некоторые из них:","INTRO_TASTE_CHOOSE_MIN":"Выберите не менее 3 категорий","INTRO_TASTE_CHOOSE_MIN_ERR":"Вы должны выбрать минимум 3 категории!","INTRO_TASTE_LIFESTYLE":"Образ жизни","INTRO_TASTE_SPORTS":"Спорт","INTRO_TASTE_FOOD_HEALTH":"Еда и здоровье","INTRO_TASTE_BEAUTY_FASHION":"Красота и мода","INTRO_TASTE_NEWS":"Новости","INTRO_TASTE_GAMING":"Игры","INTRO_TASTE_SCIENCE_EDU":"Наука и образование","INTRO_TASTE_MUSIC":"Музыка","INTRO_TASTE_TRAVEL":"Путешествия","INTRO_TASTE_LATE_NIGHT":"Ночное шоу","INTRO_TASTE_REALITY":"Реалити","INTRO_TASTE_COMEDY":"Комедия","INTRO_TASTE_DIY":"Сделать своими руками","INTRO_TASTE_TECH":"Технологии","INTRO_TASTE_CINEMA":"Кино","ADDON_NOT_SUPPORTED":"Выбранное дополнение не поддерживается на этой платформе.","ADDON_DISCLAIMER":"Использование посторонних дополнений всегда будет предметом вашей личной ответственности и попадает под регулирующее законодательство той юрисдикции в которой вы находитесь.","ADDON_ACTIVATE":"активировать это дополнение?","ADDON_REPO_ADD":"URL-адрес репозитория дополнения","ADDON_ADD":"Добавить","ADD_ADDON":"Добавить дополнение","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Вставьте URL-адрес дополнения","WHATS_NEW":"Что нового","BUTTON_CONTINUE":"Продолжить","BUTTON_ACTIVATE":"Активировать","BUTTON_ACTIVATED":"Активировано","BUTTON_CANCEL":"Отмена","BUTTON_SUBMIT":"Отправить","BUTTON_DISMISS_ALL":"Отклонить все","BUTTON_VIEW_ALL":"Посмотреть все","BUTTON_SEE_ALL":"Смотреть все","BUTTON_COLOR_TRANSPARENT":"Прозрачн.","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Ваша библиотека пуста. Узнайте, насколько она полезна :)","HOW_START":"Как начать:","LIB_EMPTY_CAL":"Ваш календарь показывает сериалы в библиотеке.","HOW_START_CAL":"Как вы можете добавить сериал:","LIB_EMPTY_BOARD":"Таблица показывает уведомления и рекомендации, относящиеся к вашей библиотеке.","HOW_START_BOARD_WAIT":"Пожалуйста, добавьте несколько серий или каналов к вашей библиотеке и дайте нам несколько минут для обработки :)","HOW_START_BOARD":"Вот как вы можете добавить сериалы и фильмы:","IMPORT_FB":"Импорт понравившегося материала из <span>Facebook</span>","IMPORT_TRAKT":"Импорт медиатеки из <span>Trakt</span>","IMPORT_DISCOVER":"Найти интересный материал в <span>Открытиях</span>","IMPORT_DISK":"Импорт видео из <span>локального диска</span>","PLEASE_CREATE_ACC":"Пожалуйста, <u>создайте аккаунт</u>, чтобы включить синхронизацию библиотеки и доски.","IMPORT_DISCOVER_SIGNUP":"Зарегистрируйтесь и находите интересные материалы в <span>Открытиях</span>","IMPORT_DISK_SIGNUP":"Зарегистрируйтесь и импортируйте фильмы или шоу из вашего <span>локального диска</span>","LIB_EMPTY_CLOUD":"Облачная бибилиотека","LIB_EMPTY_CLOUD_DESC":"Личная облачная библиотека синхронизируется на всех устройствах","LIB_EMPTY_EARLY":"Ранняя птичка","LIB_EMPTY_EARLY_DESC":"Получайте уведомления о новых эпизодах","LIB_EMPTY_PERSONAL":"Личное","LIB_EMPTY_PERSONAL_DESC":"Получите личные рекомендации","LIB_EMPTY_CALENDAR_DESC":"Запланируйте свой личный календарь просмотра","LIB_EMPTY_ALL":"Зарегистрируйтесь, чтобы получить всё это:","LIB_EMPTY_BEST":"Зарегистрируйтесь, чтобы получить всё лучшее от Stremio","LIB_EMPTY_OTHER":"Зарегистрируйтесь, чтобы включить календарь и другие крутые функции","CALENDAR_ADDED":"Календарь Stremio был добавлен в ваш настольный календарь по умолчанию.","CALENDAR_ADDED_MSG":"Если не сработало, добавьте этот URL-адрес в приложение календаря вручную","TRAKT_EXPIRED":"Срок действия аутентификации Trakt истек, перейдите в настройки и повторите аутентификацию.","TRAKT_REQUIRES_LOGIN":"Ошибка Trakt","TRAKT_REQUIRES_LOGIN_MSG":"Необходимо войти","SETTINGS_LABEL":"Настройки","SETTINGS_NAV_GENERAL":"Общее","SETTINGS_NAV_PLAYER":"Плеер","SETTINGS_NAV_STREAMING":"Стриминг","SETTINGS_NAV_SHORTCUTS":"Ярлыки","SETTINGS_SHORTCUT_RELOAD_APP":"Перезагрузить приложение","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Открыть настройки","SETTINGS_SHORTCUT_SWITCH_TABS":"Переключить вкладки","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Перелистывать вкладки вперёд","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Перелистывать вкладки назад","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Выйти/Вернуться","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Переключить полноэкранный режим","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Показать элементы управления","SETTINGS_SHORTCUT_PLAY_PAUSE":"Воспроизведение/Пауза","SETTINGS_SHORTCUT_VOLUME_UP":"Громче","SETTINGS_SHORTCUT_VOLUME_DOWN":"Тише","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Увеличить размер субтитров","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Уменьшить размер субтитров","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"величить задержку субтитров","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Уменьшить задержку субтитров","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Переключить боковую панель","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Запуск при старте","SETTINGS_VLC_DEFAULT":"Воспроизвести в VLC","SETTINGS_UI_LANGUAGE":"Язык интерфейса","SETTINGS_FULLSCREEN_EXIT":"Выход из полноэкранного режима клавишей Escape","SETTINGS_GAMEPAD":"Включить поддержку геймпада","SETTINGS_CLOSE_WINDOW":"Закрывать приложение, когда окно закрыто","SETTINGS_SUBTITLES_LANGUAGE":"Язык субтитров по умолчанию","SETTINGS_SUBTITLES_SIZE":"Размер субтитров по умолчанию","SETTINGS_SUBTITLES_BACKGROUND":"Фон субтитров","SETTINGS_SUBTITLES_COLOR":"Цвет субтитров","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Цвет контура субтитров","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Цвет фона субтитров","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Автовоспроизведение следующего эпизода","SETTINGS_NEXT_VIDEO":"Показывать уведомление перед началом следующего эпизода","SETTINGS_NEXT_VIDEO_TRIGGER":"Показывать уведомление о следующем эпизоде для:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Автоизменение размера окна перед вопроизведением","SETTINGS_OVERRIDE_SERVER":"Переопределить URL-адрес сервера стриминга (дополнительно)","SETTINGS_SERVER_URL":"URL-адрес стримингового сервера: ","SETTINGS_SERVER_AVAILABLE":"Стриминговый сервер доступен.","SETTINGS_SERVER_UNAVAILABLE":"Стриминговый сервер недоступен.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Конечная точка HTTPS-стриминга: ","SETTINGS_USE_BETA":"Всегда использовать последнюю бета-версию","SETTINGS_IMPORT_FB":"Импорт из Facebook","SETTINGS_IMPORT_DISK":"Импорт из локального диска","SETTINGS_IMPORT_TRAKT":"Импорт из Trakt","SETTINGS_PAUSE_MINIMIZED":"Приостановить воспроизведение при сворачивании","SETTINGS_HWDEC":"Декодирование с аппаратным ускорением","SETTINGS_BACKGROUND":"Фоновое воспроизведение","SETTINGS_SUBSCRIBE_CALENDAR":"Подписаться на календарь","SETTINGS_REQ_EXPORT":"Запросить экспорт данных","SETTINGS_ACC_DELETE":"Запросить удаление аккаунта","SETTINGS_CHANGE_PASSWORD":"Изменить пароль","SETTINGS_TOS":"Условия использования","SETTINGS_SUPPORT":"Связаться с поддержкой","SETTING_LANGUAGE":"Язык","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Выйти из Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Отсканируйте QR-код, чтобы открыть удалённо","SETTINGS_DESKTOP_NOTIFICATIONS":"Уведомления на рабочем столе","SETTINGS_DATA_SAVER":"Экономия трафика","SETTINGS_LANGUAGE_INTERFACE":"интерфейс","SETTINGS_LANGUAGE_SUBS":"субтитры по умолчанию","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Автовыбор аудиодорожки","SETTINGS_DEFAULT_AUDIO_TRACK":"Аудиодорожка по умолчанию","SETTINGS_ACCOUNT":"аккаунт","SETTINGS_VERSION":"версия","SETTINGS_MPV_WINDOW":"Запускать плеер в отдельном окне (дополнительно)","SETTINGS_PLAY_IN_EXTERNAL":"Всегда запускать видео во внешнем плеере","SETTINGS_STORAGE_BUTTON":"Очистить локальное хранилище","SETTINGS_STORAGE_MODAL_TITLE":"Вы уверены?","SETTINGS_STORAGE_MODAL_MESSAGE":"Это очистит локальное хранилище и вы выйдете из приложения.","SETTINGS_HWDEC_PICKER":"Выберите настройку декодирования с аппаратным ускорением","SETTINGS_HW_AUTOMATIC":"Автоматически","SETTINGS_HW_DISABLED":"Отключено","SETTINGS_HW_ACCELERATED":"Ускорение декодирования","SETTINGS_HW_FULL":"Полное ускорение","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Аудио","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Использовать чёрный цвет фона","SUBSPICKER_VERTICAL_OFFSET":"Вертикальное смещение","SUBSPICKER_SIZE":"Размер","SUBSPICKER_DELAY":"Задержка","SUBSPICKER_EMBEDDED_SUBS":"Встроенные субтитры","MOBILE_PRIVACY_POLICY":"Политика конфиденциальности","MOBILE_CRASH_REPORTING":"Сообщение о сбоях","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"ПРОИЗВОДИТЕЛЬНОСТЬ И СТАБИЛЬНОСТЬ","MOBILE_SERVER_ONLINE":"Онлайн","MOBILE_SERVER_OFFLINE":"Офлайн","MOBILE_QR_EXPIRES":"Действие QR-кода истекает через ","MOBILE_LOG_INTO":"Войдите в ваш аккаунт Stremio ","MOBILE_SCAN_QR":"Отсканируйте QR-код выше или перейдите на ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Отмена","MOBILE_SPEEDPICKER_LABEL":"Выберите скорость воспроизведения","MOBILE_EMPTY_LIBRARY":"Ваша библиотека пуста","MOBILE_NO_ADDON_ACTIVE":"Дополнение Stremio не активно для этого типа.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"ещё загружается","MOBILE_ADDONS_LOADING":"дополнения ещё загружаются","MOBILE_ADDON":"Дополнение","MOBILE_CONFIGURE_ADDON":"Настройте ваше дополнение","MOBILE_CONFIGURE_ADDON_LABEL":"Настроить дополнение","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Отключить","MOBILE_LOOKING_FOR_DEVICES":"Поиск устройства...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"Вкл.","NAVIGATION_OFF":"Выкл.","MARKETING_AGREE":"Я согласен получать маркетинговые сообщения от Stremio","QUIT":"Выход!","CONNECTED":"Подключено","AUTHENTICATE":"Проверять подлинность","CACHING":"Кэширование","SETTINGS_CACHING_DRIVE":"Выберите диск кэширования","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Включить удалённые HTTPS-соединения","TORRENT_PROFILE":"Торрент-профиль","DATA_CACHING":"Кэширование данных","MAGNET_PARSING":"Парсинг магнет-ссылки","January":"Января","February":"Февраль","March":"Март","April":"Апрель","May":"Май","June":"Июнь","July":"Июль","August":"Август","September":"Сентябрь","October":"Октября","November":"Ноября","December":"Декабрь","Monday":"Понедельник","Tuesday":"Вторник","Wednesday":"Среда","Thursday":"Четверг","Friday":"Пятница","Saturday":"Суббота","Sunday":"Воскресенье","Action":"Боевик","Comedy":"Комедия","War":"Война","Family":"Семья","Animation":"Анимация","Adventure":"Приключения","Fantasy":"Фантазия","Crime":"Криминал","Mystery":"Таинственность","Romance":"Романтика","Drama":"Драма","Horror":"Ужасы","Thriller":"Триллеры","Sci-Fi":"Научная фантастика","Music":"Музыка","Biography":"Биография","Documentary":"Документальный","Sport":"Спорт","Musical":"Музыкальный","Western":"Вестерн","Film-Noir":"Нуар","News":"Новости","History":"История","Game-Show":"Игровое шоу","Reality-TV":"Реалити шоу","Talk-Show":"Ток-шоу","Film & Entertainment":"Кино и развлечения","Gaming":"Игры","From TV":"Из ТВ","Lifestyle":"Стиль жизни","Science & Education":"Наука и образование","Cooking & Health":"Готовка и здоровье","Beauty & Fashion":"Красота и мода","Sports":"Спорт","News & Politics":"Новости и политика","How-to & DIY":"Сделай сам","Tech":"Технологии","Automotive":"Автомобильный","Causes & Non-Profits":"Коммерческое и некоммерческое","Movies":"Кино","Uk Live Tv":"Прямой эфир в Великобритании","Fashion":"Мода","Business News Radio":"Радио о бизнес-новостях","Business Tv":"Бизнес ТВ","Cars & Auto":"Автомобили и авто","Comedy Radio":"Комедийное радио","Lifestyle Radio":"Радио об образе жизни","News Tv":"Новости ТВ","Food And Wine":"Еда и вино","Latino Tv":"Латинское ТВ","Shopping Tv":"Покупки ТВ","Religion":"Религия","Kids":"Дети","Body & Soul":"Тело и душа","Education":"Образование","Indian Tv":"Индийское ТВ","Extreme Sports":"Экстремальный спорт","Middle Eastern Tv":"Ближневосточное ТВ","Celebrity Tv":"Знаменитость ТВ","Science Tv":"Наука ТВ","Bikini babe":"Попки в бикини","Outdoors":"На открытом воздухе","German Tv":"Немецкое ТВ","French Tv":"Французское ТВ","Italian Tv":"Итальянское ТВ","Gamer Tv":"Геймерское ТВ","Travel":"Путешествия","Asian Tv":"Азиатское ТВ","Entertainment":"Развлечения","News Radio":"Новостное радио","Music Radio":"Музыкальное радио","Language Learning":"Изучение языков","Science Radio":"Научное радио","Tech Radio":"Техническое радио","Science & Technology Vod":"Наука и технологии VoD","new video":"новое видео","new episode":"новый эпизод","new movie":"новый фильм","recommended":"рекомендуемое","we recommend":"мы рекомендуем","offer of the day":"предложение дня","news":"новости","music video":"мызкальное видео","CTX_SHOW_HOTKEYS":"Показать горячие клавиши","CTX_DISMISS_NOTIF":"Игнорировать уведомления","CTX_DISMISS_ALL":"Отклонить все","CTX_SHARE":"Поделиться","CTX_COPY_SHARE_LINK":"Скопировать ссылку","CTX_COPY_MAGNET_LINK":"Скопировать магнитную ссылку","CTX_COPY_STREAM_LINK":"Скопировать ссылку на стрим","CTX_DOWNLOAD_VIDEO":"Скачать видео","CTX_DOWNLOAD_SUBS":"Скачать субтитры","CTX_VIEW_ON_YOUTUBE":"Смотреть на YouTube","CTX_SHOW":"Показать","CTX_PLAY":"Вопроизвести","CTX_PLAY_IN":"Воспроизвести в","CTX_PLAY_ON":"Воспроизвести на","CTX_WATCH_ON":"Смотреть на","CTX_WATCH":"Смотреть","CTX_WATCHED":"Просмотрено","CTX_WATCH_BEGINNING":"Смотреть с начала","CTX_WATCH_MOBILE":"Смотреть на мобильном устройсте","CTX_REWIND":"Перемотать на начало","CTX_MARK_WATCHED":"Отметить как просмотренное","CTX_MARK_NON_WATCHED":"Отметить как непросмотренное","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Получать новые уведомления","CTX_REMOVE_CACHE":"Удалить из кэша","CTX_REMOVE_CACHE_EP":"Удалить эпизод из кэша","CTX_OPEN_CONTAINING":"Открыть папку с файлом","CTX_REMOVE":"Удалить из библиотеки","CTX_AVAILABLE_OFFLINE":"Доступно без интернета","CTX_PAUSED":"Остановлено","CTX_ALWAYS_ON_TOP":"Закреплено","CTX_FULLSCREEN":"Полный экран","CTX_WRONG_SUBS":"Некорректные субтитры","CTX_REPORT_ISSUES":"Сообщить о проблеме","CTX_COPY":"Копировать","CTX_PASTE":"Вставить","CTX_CLEAR":"Очистить","CTX_CLEAR_RECENT_SEARCHES":"Очистить историю поисковых запросов","HELLO_THERE":"Привет","HOPE_YOU_ENJOY":"Надеемся, что вам нравится Stremio и это одно из ваших любимых приложений!","WHO_ARE_WE":"Кто мы? Мы — команда, стоящая за этим, — два парня, которые усердно работают каждый день в течение последних 3 лет с одной целью — делать этот продукт всё лучше и лучше.","SUPPORT_US":"Если вам нравится Stremio, если Stremio ценен для вас — расскажите об этом!","SPREAD_THE_WORD":"Поделитесь с друзьями прямо сейчас, расскажите о Streamio","MORE_PEOPLE":"Чем больше людей пользуются Streamio, тем лучше он становится","SEND_A_LINK":"Или отправьте ссылку на наш сайт","TIP_LOCALFILES":"Совет: вы можете перетаскивать локальные видеофайлы в Stremio.","ADDON_MY":"Мои дополнения","ADDON_COMMUNITY":"Дополнения от сообщества","ADDON_OFFICIAL":"Официальные дополнения","ADDON_REPOS":"Репозитории дополнений","ADDON_SEARCH":"Искать плагины","ADDON_INSTALL":"Установить","ADDON_CONFIGURE":"Настроить","ADDON_UNINSTALL":"Удалить","ADDON_UPGRADE":"Обновить","ADDON_INSTALLED":"Установлено","ADDON_INSTALLED_MSG":"Дополнение установлено!","ADDON_UPGRADED_MSG":"Дополнение обновлено!","ADDON_UNKNOWN":"Неизвестно","ADDON_ERR":"Ошибка установки дополнения!","ADDON_DISCONNECTED":"Отключено","ADDON_APP_MISSING":"приложение для этого источника не установлено. Вы хотите установить его сейчас?","ADDON_APP_INSTALL":"Установить","ADDON_PAGE":"Страница дополнения","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"provides","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Дополнение","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Скачать сейчас","WEBSITE_DOWNLOAD_FOR":"Скачать сейчас для","WEBSITE_IS_DESKTOP":"Stremio — это настольное приложение, откройте эту страницу на своем ПК и скачайте его","WEBSITE_DESKTOP_DEMO_VID":"Демо","WEBSITE_PAGE_HOME":"Главная","WEBSITE_PAGE_FEATURES":"Возможности","WEBSITE_PAGE_ADDONS":"Дополнения","WEBSITE_PAGE_TECH":"Технологии","WEBSITE_PAGE_CREATE_ADDON":"Создать дополнение","WEBSITE_PAGE_CONTACTS":"Контакты","WEBSITE_PAGE_BLOG":"Блог","WEBSITE_TYPE_movie":"Фильмы","WEBSITE_TYPE_series_PL":"Сериалы","WEBSITE_TYPE_tv":"В эфире","WEBSITE_TYPE_channel":"Каналы","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Нажмите и смотрите свои любимые фильмы, ТВ-шоу, видео и телеканалы.","WEBSITE_FEATURES_SUBS":"Автоматические субтитры","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio автоматически выбирает синхронизированные субтитры для вашего языка.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Импорт из Facebook","WEBSITE_LIB_LOCAL":"Добавить с локального диска","WEBSITE_BOARD":"Доска — ваше универсальное место для уведомлений и рекомендаций","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Популярный фильм","WEBSITE_BOARD_NEW":"Новое видео","WEBSITE_BOARD_EPISODE":"Новый эпизод","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"Новые видео из каналов YouTube","WEBSITE_BOARD_EPISODES":"Новые серии из сериалов, за которыми вы следите","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"Мы основные участники проекта","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"Мы участники проекта","WEBSITE_TECH_LINVODB":"Технология базы данных, гарантирующая что ваши данные организованы и доступны везде, где вы входите в приложение.","WEBSITE_TECH_LINVODB_EXTRA":"Собственная технология","WEBSITE_CREATE_ADDON":"Создайте свое дополнение","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Расскажите о Stremio:","WEBSITE_CONTACT":"Если вы хотите связаться с нами, перейдите по адресу","WEBSITE_OPENSOURCE":"Чтобы посмотреть наши проекты с открытым кодом, перейдите на","WEBSITE_BITCOIN":"Пожертвовать Bitcoin:","WEBSITE_FAQ":"Часто задаваемые вопросы","WEBSITE_FAQ_SHORT":"ЧЗВ","WEBSITE_QUESTIONS":"Вопросы","WEBSITE_TOS":"Условия использования","WEBSITE_LEGAL":"Юридическое","WEBSITE_PAGE_ABOUT":"О проекте","WEBSITE_PAGE_BECOME_PARTNER":"Стать партнером","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"Что такое Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio — это универсальный центр видеоконтента. Находите, упорядочивайте и просматривайте видео из любых источников на любом устройстве, которое у вас есть.","WEBSITE_WHAT_IS_STREMIO_P2":"Фильмы, ТВ-шоу, сериалы, прямое телевидение или веб-каналы, такие как YouTube и Twitch.tv — все это вы можете найти на Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Фильмы, ТВ-передачи, прямые телепередачи или веб-каналы — все это можно найти на Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Наслаждайтесь этим на любых мультимедийных устройствах","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Импорт из Facebook","WEBSITE_DEVICES_LOCAL":"Добавить с локального диска","WEBSITE_JOIN_THE_PARTY_NOW":"Присоединяйтесь к тусовке","WEBSITE_DEVICES_ALL":"Легко использовать на всех ваших устройствах;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"О нас","WEBSITE_LINK_TECHNOLOGY":"Технологии","WEBSITE_LINK_APPS":"Приложения","WEBSITE_LINK_DOWNLOADS":"Скачать","WEBSITE_MORE":"Больше","WEBSITE_LINK_ADDONS":"Дополнения","WEBSITE_LINK_ADDON_SDK":"SDK дополнения","WEBSITE_LINK_CONTRIBUTE":"Участвовать","WEBSITE_LINK_COMMUNITY":"Сообщество","WEBSITE_LINK_BLOG":"Блог","WEBSITE_MORE_MORE":"...и ещё","WEBSITE_LINK_HELP":"Центр помощи","WEBSITE_LINK_CONTACTS":"Контакты","WEBSITE_LINK_TOS":"Условия и положения","WEBSITE_LINK_PRAVACY":"Политика конфиденциальности","WEBSITE_SUBSCRIBE":"Подписаться","WEBSITE_NEWSLETTER":"Подпишитесь на нашу рассылку и получайте удивительные вещи","WEBSITE_PLACEHOLDER_EMAIL":"Ваша эл. почта","WEBSITE_COMMUNITY":"Сообщество","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Зачем нам это","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},6650:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filmi","TYPE_series":"Serije","TYPE_tv":"TV kanali","TYPE_channel":"Kanali","TYPE_other":"Ostalo","TYPE_movie_PL":"Filmi","TYPE_series_PL":"Serije","TYPE_tv_PL":"TV kanali","TYPE_channel_PL":"Kanali","TYPE_other_PL":"Ostalo","TYPE_ALL":"All","VIDEO":"Video","BACK":"Nazaj","MORE":"Več","DONE":"Done","COPY":"Kopiraj","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Razišči","Board":"Plošča","Library":"Knjižnica","My Library":"Moja Knjižnica","Calendar":"Koledar","NOTIFICATION_ONLINE":"Sedaj si povezan","NOTIFICATION_OFFLINE":"Si trenutno nepovezan","INTERNET_CONNECTION":"Mrežna povezava","STORAGE_FULL_TITLE":"Opozorilo: Prostor je poln!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"iskanje","SEARCH_NO_RESULTS":"Ni rezultatov iskanja","SEARCH_EXPLANATION_CONTENT":"Išči filme, serije, YouTube in TV kanale","SEARCH_EXPLANATION_PEOPLE":"Išči igralce, režiserje in avtorje","SEARCH_PASTE_LINKS":"Kopiraj HTTP in Magnet linke","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Dodaj v knjižnico","REMOVE_FROM_LIB":"Odstrani iz knjižnice","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Napovednik","WATCH_TRAILER":"Predvajaj Napovednik","WATCH_NOW":"Glej sedaj","SHOW":"Show","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb Rating","YEAR":"Leto","DIRECTOR":"Režiser","WRITER":"Avtor","LEAD_ACTORS":"Glavni igralci","CAST":"Postava","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Objavljeno","SEASONS":"Sezone","GENRE":"Žanr","CATALOG":"Catalog","SUMMARY":"Povzetek","SHOW_MORE":"Show More","SIMILAR":"Podobno","UPCOMING":"Prihajajoče","ENDED":"Končano","DURATION":"Trajanje","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"išči video","SEARCH_PLACEHOLDER":"search or paste URL","ADDON":"dodatek","ADDONS":"Dodatki","OFFICIAL":"Glavni","ADDONS_OFFICIAL":"Glavni Stremio Dodatki","ADDONS_POPULAR":"Popularno v vašem področju","ADDON_FREE":"prosto","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"naročnina","ADDON_STREAM_GEORESTRICTED":"ni dostopno v vašem področju","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Dostopni Stream-i","NO_STREAM":"Ni dostopnih stream-ov","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Prikaži vse dodatke »","ADDON_CATALOGUE_MORE":"Več dodatkov »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons collection already exist","ADDON_REPO_ERR":"Error occurred while adding collection","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Cannot uninstall addon, it is protected","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection URL","ERR_NOT_ADDON_URL":"Not a valid addon URL","ERR_DETECTFROMURL":"Cannot find addon/collection from this URL","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Syncing installed addons to your account failed","SETTINGS_DATA_EXPORT":"Export user data","ADDON_PULL_FAILED":"Syncing installed addons from your account failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Movie still in theaters","WATCH_IN_CINEMA":"Watch it in your local cinema","IN_THEATER":"In cinema","GET_TICKETS":"Get tickets","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.<br>Please come back in a few minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Add it to your library to get notified once it is available.","GET_NOTIFIED_WHEN_AVAILABLE":"You will get notified once it is available.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from local files, YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streaming from","CASTING_TO":"Casting to","NETWORK_STATUS":"Network status","STREAM_SPEED":"Stream speed:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Active:","PEERS_CONNECTED":"Connected:","PEERS_WAITING":"Waiting:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"loading...","PLAYING_LOCAL":"playing from local file","PLAYING_CACHE":"playing from cache","WRONG_SUBS":"Wrong subtitles?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Choose a device to watch on","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Telefon / Tablica","SUBTITLES":"Podnapisi","SUBTITLES_CHANGE":"Change subtitles for ","SUBTITLES_CHANGE_NONE":"There are no other subtitles for this language, sorry.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternatively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Onemogočeno","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sezone","EPISODE":"Nanizanke","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"recent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rating","SORT_WATCHED":"watched","SORT_YEAR":"year","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Novo Za Vas","New Episodes":"Nove Nanizanke","New Videos":"New Videos","Recommendations":"Priporočila","LIBRARY_RESUME":"Nadaljuj","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Podrobnosti","LIBRARY_RESUME_DISMISS":"Opusti","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oscar Winners","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Warning: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Re-launch now!","UPGRADE":"New version is available! Upgrade to the latest Stremio version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonimni uporabnik","DONT_HAVE_ACC":"Nimate še računa?","HAVE_ACC":"Že imate račun?","PASSWORD":"Geslo","PASSWORD_CONFIRM":"Potrdi geslo","EMAIL":"E-mail","FB_LOGIN":"Nadaljuj z Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"or","I_ACCEPT":"Se strinjam z","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Terms and Conditions","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Geslo se ne ujema","SIGN_UP":"Registracija","SIGN_UP_EMAIL":"Registracija z email naslovom","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Prijava","LOG_OUT":"Odjava","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"O Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Guest login","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"click here","WRONG_PASSWORD":"Wrong email or password. In case you have forgotten your password, ","SET_A_PASS":"set a password","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"This email was used with a Facebook login.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Activate this addon?","ADDON_REPO_ADD":"Addon collection URL","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Kaj je novega","BUTTON_CONTINUE":"Nadaljuj","BUTTON_ACTIVATE":"Aktiviraj","BUTTON_ACTIVATED":"Aktivirano","BUTTON_CANCEL":"Prekliči","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Opusti vse","BUTTON_VIEW_ALL":"pregled vseh","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Here is how you can start:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from <span>Facebook</span>","IMPORT_TRAKT":"Import your media library from <span>Trakt</span>","IMPORT_DISCOVER":"Find interesting stuff from <span>Discover</span>","IMPORT_DISK":"Import movies or shows you have on your <span>local disk</span>","PLEASE_CREATE_ACC":"Please <u>create an account</u> to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from <span>Discover</span>","IMPORT_DISK_SIGNUP":"Sign up and import movies or shows you have on your <span>local disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Nastavitve","SETTINGS_NAV_GENERAL":"Osnovno","SETTINGS_NAV_PLAYER":"Predvajalnik","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Zaženi ob zagon","SETTINGS_VLC_DEFAULT":"Predvajaj z VLC","SETTINGS_UI_LANGUAGE":"UI Jezik","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Change password","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Contact support","SETTING_LANGUAGE":"Jezik","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Quit","CONNECTED":"Connected","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januar","February":"Februar","March":"Marec","April":"April","May":"Maj","June":"Junij","July":"Julij","August":"Avgust","September":"September","October":"Oktober","November":"November","December":"December","Monday":"Ponedeljek","Tuesday":"Torek","Wednesday":"Sreda","Thursday":"Četrtek","Friday":"Petek","Saturday":"Sobota","Sunday":"Nedelja","Action":"Akcije","Comedy":"Komedije","War":"Vojni","Family":"Družinski","Animation":"Animirani","Adventure":"Pustolovski","Fantasy":"Fantazijski","Crime":"Kriminalni","Mystery":"Mistični","Romance":"Romantični","Drama":"Drame","Horror":"Grozljivke","Thriller":"Trilerji","Sci-Fi":"Sci-Fi","Music":"Glazbeni","Biography":"Biografski","Documentary":"Dokumentarni","Sport":"Športni","Musical":"Mjuzikli","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Add-ons","ADDON_COMMUNITY":"Community Add-ons","ADDON_OFFICIAL":"Official Add-ons","ADDON_REPOS":"Addon collections","ADDON_SEARCH":"Search add-ons","ADDON_INSTALL":"Naloži","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Odstrani","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Naloženo","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You Can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Subscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS (limited version)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Stremio 4 beta Now","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can access a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},2963:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Filmovi","TYPE_series":"Serije","TYPE_tv":"TV kanal","TYPE_channel":"Kanal","TYPE_other":"Drugo","TYPE_movie_PL":"Filmovi","TYPE_series_PL":"Serije","TYPE_tv_PL":"TV kanali","TYPE_channel_PL":"Kanali","TYPE_other_PL":"Drugo","TYPE_ALL":"All","VIDEO":"Video","BACK":"Nazad","MORE":"Više","DONE":"Gotovo","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Otkrij","Board":"Tabla","Library":"Biblioteka","My Library":"Moja Biblioteka","Calendar":"Kalendar","NOTIFICATION_ONLINE":"Sada ste povezani","NOTIFICATION_OFFLINE":"Trenutno ste bez konekcije","INTERNET_CONNECTION":"Mrežna greška","STORAGE_FULL_TITLE":"Upozorenje: nemate slobodnog prostora!","STORAGE_FULL_TEXT":"Stremio neće moći da sačuva podešavanja, prednosti ili informacije za login. Razmislite o restartovanja ili reinstalacije Stremio-a.","SEARCH":"Pretraži...","SEARCH_NO_RESULTS":"Nema pronađenih rezultata","SEARCH_EXPLANATION_CONTENT":"Pretražite filmove, serije, YouTube i TV kanale","SEARCH_EXPLANATION_PEOPLE":"Pretražite glumce, režisere i scenografe","SEARCH_PASTE_LINKS":"Nalepi HTTP i Magnet linkove","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Dodaj u Biblioteku","REMOVE_FROM_LIB":"Ukloni iz Biblioteke","ADDED_TO_LIB":"Dodato u Biblioteku","REMOVED_FROM_LIB":"Uklonjeno iz Biblioteke","TRAILER":"Najava","WATCH_TRAILER":"Pogledajte najavu","WATCH_NOW":"Gledaj sada","SHOW":"Prikaži","SHOW_MOVIE":"Prikaži film","WATCH_RANDOM":"Pusti nasumično","IMDB_RATING":"IMDb Ocena","YEAR":"Godina","DIRECTOR":"Režiser","WRITER":"Scenograf","LEAD_ACTORS":"Glavne Uloge","CAST":"Uloge","CREW":"Ekipa","SHOW_MORE_CAST":"Prikaži više »","AIRED":"Emitovano","SEASONS":"Sezona","GENRE":"Žanr","CATALOG":"Catalog","SUMMARY":"Opis","SHOW_MORE":"Pokaži više","SIMILAR":"Slično","UPCOMING":"Nadolazeće","ENDED":"Završeno","DURATION":"Trajanje","FEATURED":"Istaknuto","METADATA":"Metadata","CATEGORY":"Kategorija","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Pretraži video","SEARCH_PLACEHOLDER":"Pretraži ili nalepi magnet linkove","ADDON":"Dodatak","ADDONS":"Dodaci","OFFICIAL":"Zvanični","ADDONS_OFFICIAL":"Zvanični Stremio dodaci","ADDONS_POPULAR":"Popularno u vašem području","ADDON_FREE":"besplatno","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"pretplata","ADDON_STREAM_GEORESTRICTED":"nije dostupno u vašem području","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Lokalni fajl","SHARE_ADDON":"Podeli dodatak","AVAILABLE_STREAMS":"Dostpuni strimovi","NO_STREAM":"Nema dostupnih strimova","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"Za više strimova molimo vas da instalirate više dodataka","STREAM_NOT_SUPPORTED":"Odabrani prenos nije podržan na ovoj platformi.","ADDON_CATALOGUE":"Prikaži sve dodatke »","ADDON_CATALOGUE_MORE":"Više dodataka »","REPO_ADDED":"Dodat je repository","ADDON_REPO_EXIST_ERR":"Repository ovog dodatka već postoji","ADDON_REPO_ERR":"Greška uz dodavanje repository-a","ADDON_ADD_ERR":"Greška uz dodavanje dodatka","ERR_ADDON_PROTECTED":"Zaštićeni dodatak","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Greška - Autentifikacija može da je neuspešna","ERR_NOT_COLLECTION_URL":"Nije url kolekcije","ERR_NOT_ADDON_URL":"Nije url dodatka","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Upozorenje: dupli dodatak","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Film je i dalje u bioskopu","WATCH_IN_CINEMA":"Pogledajte ga u lokalnom bioskopu","IN_THEATER":"U Bioskopu","GET_TICKETS":"Nabaviti karte","UPCOMING_EPISODE":"Sledeća epizoda","UPCOMING_EPISODE_MESSAGE":"Ova epizoda će biti emitovana","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"Ova epizoda možda još nije emitovana","CHANNEL_NOT_SCRAPED":"Ovaj kanal još nije sačuvan.<br>Molimo vas pokušajte za par minuta.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Dodajte u svoju biblioteku da budete obavešteni kada bude dostupno.","GET_NOTIFIED_WHEN_AVAILABLE":"Bićete obavešteni kada bude dostupno.","WARNING_STREAMING_SERVER":"Upozorenje: lokalni server za strimovanje nije pronađen. Streaming sa YouTube-a i BitTorrent-a neće biti dostupan.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Upozorenje: ovaj video možda ne podržava vaš hardver. Imajte na umu da reprodukcija može biti spora.","PLAYER_ERROR":"Ups, greška plejera","PLAYER_ERROR_LOOKSLIKE":"Izgleda kao","PLAYER_ORIENTATION":"Orijentacija plejera","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Fiksno","PLAYER_ORIENTATION_SENSOR_SHORT":"Senzor","PLAYER_ORIENTATION_LANDSCAPE":"Orijentacija plejera je fiksirana na vodoravno","PLAYER_ORIENTATION_SENSOR":"Orijentacija plejera je automatska (senzor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Izvinite, ovaj video ne može biti prikazan sa {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Uživo","PLAYER_NEXT_VIDEO_TITLE":"Sledeći na","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Gledati sada","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Puštanje iz","CASTING_TO":"Prikazivanje na","NETWORK_STATUS":"Mrežni status","STREAM_SPEED":"Brzina strimovanja:","STREAM_BUFFERED":"Preuzeto:","PEERS_INFO":"Peer Informacije","PEERS_ACTIVE":"Aktivno:","PEERS_CONNECTED":"Konektovano:","PEERS_WAITING":"Čekanje:","TRANSCODING_WARNING":"Upozorenje: konvertovanje videa.","STREAM_LOADING":"učitavanje...","PLAYING_LOCAL":"puštanje iz lokale datoteke","PLAYING_CACHE":"puštanje iz privremenog skladišta","WRONG_SUBS":"Pogrešan prevod?","ERR_SUBS_LOADING_TITLE":"Greška pri učitavanju titlova","ERR_SUBS_LOADING":"Greška pri učitavanju titlova: može biti do dodatka kog koristite, ili do internet konekcije","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Izaberi uređaj za gledanje","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"Podešavanja nisu dostupna.","PHONE_TABLET":"Telefon / Tablet","SUBTITLES":"Titlovi","SUBTITLES_CHANGE":"Promeni titl za ","SUBTITLES_CHANGE_NONE":"Nažalost nema drugih titlova za odabrani jezik","SUBTITLES_CHANGE_ACIVE":"Trenutno titl #{{subtitlesDialog.activeIdx + 1}} je aktivan. Klikni \\"Nastavi\\" da aktiviraš titl #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternativno,","SUBTITLES_ADJUST_DELAY":"Podešavanje odlaganja titla:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Ili koristite <span>G</span> / <span>H</span> dugmad dok puštate da podesite titlove.","SUBTITLES_ADJUST_DELAY_TIP":"Savet: možete koristiti <span>G</span> / <span>H</span> dugmad dok puštate da podesite titlove.","SUBTITLES_DELAY":"Odlaganje titlova:","SUBTITLES_LOADING":"Učitavanje titlova...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Isključeno","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Sezona","EPISODE":"Epizoda","SPECIAL":"Special","SORT":"sortiraj","SORT_BY":"Sortiraj po","FILTER":"filter","SORT_TRENDING":"popularno","SORT_RECENT":"nedavno","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"ocena","SORT_WATCHED":"gledano","SORT_YEAR":"godina","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"Novo za vas","New Episodes":"Nove Epizode","New Videos":"Novi Video","Recommendations":"Preporuke","LIBRARY_RESUME":"nastavi","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"odbaci","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Istaktnut","DISCOVER_TOP":"Najbolji","DISCOVER_OSCAR":"Dobitnici Oskara","DISCOVER_WARNING_TITLE":"Ups!","DISCOVER_EMPTY_CATALOG":"Ovaj dodatak je uzvratio prazan sadržaj.","DISCOVER_ADULT_WARNING":"Ovaj sadržaj je dostupan samo odraslima. Imaš li 18+?","DISCOVER_NOADDON_WARNING":"Upozorenje: nema aktivnog Stremio dodatka za ovaj tip. Prikazujemo sačuvane stvari, ništa se neće nadograditi.","DISCOVER_LOAD_ERR":"Greška, sadržaj nije mogao biti učitan.","DISCOVER_ADDON_UNINSTALLED":"Ovaj sadržaj nije više dostupan, možda ste deinstalirali dodatak.","UNINSTALL_THIS_ADDON":"Deinstaliraj dodatak","ERR_ADDON_NOT_INSTALLED":"Ovaj dodatak nije instaliran. Sada instalirati?","DETAIL_RECEIVE_NOTIF_SERIES":"Dobijajte obaveštenja o novim epizodama","DETAIL_RECEIVE_NOTIF_VIDEOS":"Dobijajte obaveštenja o novim videima","SIDEBAR_SHOW_STREAMS":"Pokaži strimove","RELAUNCH":"Ponovo pokreni sada!","UPGRADE":"Nova verzija je dostupna! Ažurirajte se na poslednju Stremio verziju","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Ažurirajte vašu verziju Stremio-a","MANUAL_UPDATE_LINE1":"Trenunto koristite zastarelu verziju Stremio-a, što nije preporučeno.","MANUAL_UPDATE_LINE2":"Molimo vas da ažurirate verziju što pre.","BUTTON_UPDATE_LATTER":"Ne sada","BUTTON_UPDATE_NOW":"Ažurirati","ANONYMOUS_USER":"Anonimni korisnik","DONT_HAVE_ACC":"Nemate nalog?","HAVE_ACC":"Već imate nalog?","PASSWORD":"Lozinka","PASSWORD_CONFIRM":"Potvrdite lozinku","EMAIL":"E-mail","FB_LOGIN":"Prijavite se preko Facebook-a","FB_NOTHINGSHARED":"Ništa se ne deli bez vaše dozvole","FB_NOPOST":"Nećemo objavljivati ništa u Vaše ime","OR":"ili","I_ACCEPT":"Prihvatam","I_ACCEPT_BY_CLICKING":"Klikom na gornje dugme svedočim da prihvatam","TOS":"Uslove i Odredbe","MUST_ACCEPT_TERMS":"Morate prihvatiti uslove","PASSWORDS_NOMATCH":"Lozinke se ne podudaraju","SIGN_UP":"Registracija","SIGN_UP_EMAIL":"Prijavite se putem e-pošte","CLICK_TO_SIGN_UP":"Pritisnite ovde za registraciju.","LOG_IN":"Prijavite se","LOG_OUT":"Odjavite se","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Pomoć & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"O Stremio-u","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Prijavite se kao gost","GUEST_LOGIN_NOTICE":"Prijava kao gost nije preporučena. Koristeći redovnu prijavu Stremio omogućava sinhronizaciju svojih biblioteke i primanje obaveštenja o omiljenim serijama / kanalima. Jeste li sigurni da želite nastaviti?","GUEST_LOGIN_NOTICE_2":"Prijava kao gosti nije preporučena - nećete imati sinhronizaciju i obaveštenja Biblioteke i Table, koje su od vitalne važnosti za Stremio. Jeste li sigurni da želite nastaviti?","CLICK_HERE":"klikni ovde","WRONG_PASSWORD":"Pogrešna lozinka. U slučaju da ste zaboravili lozinku, ","SET_A_PASS":"postavite lozinku","RESET_PASSWORD":"Resetuj lozinku","FORGOT_PASSWORD":"Zaboravili ste lozinku?","EMAIL_USED_WITH_FB":"Ovaj email je korišten sa Facebook prijavom.","INVALID_EMAIL":"Unesite ispravnu e-mail adresu","INVALID_PASSWORD":"Molimo Vas da unesete ispravnu lozinku","CONN_ERR":"Greška pri povezivanju - molimo Vas pokušajte kasnije.\\n\\nAko se ovo nastavi, onemogućite zaštitni zid/antivirus (naročito Bitdefender).","IMPORT_FROM_GUEST":"Uvezite Biblioteku iz Vašeg gost naloga","RECEIVE_UPDATES_EMAIL":"Primite vesti od Stremio-a na Vaš e-mail","LOGIN_FAILED":"Neuspešna prijava.","SIGNUP_FAILED":"Prijava nije uspela.","SEARCH_FAILED":"Neuspešna istraga","EMAIL_USED":"Ovaj email je već u upotrebi.","WAITING_FB_LOGIN":"Prijavljivanje preko Facebook-a...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Hoćete li da zapamtite Vaš izbor?","EXTERNAL_ALWAYS_PLAY":"Da","EXTERNAL_ONLY_ONCE":"Ne","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Recite nam šta volite","INTRO_TASTE_LONG":"Recite nam šta biste hteli da gledate","INTRO_TASTE_PICK":"Izaberite {{interestsRemaining}} interesovanja","INTRO_TASTE_PICK_MORE":"Izaberite još {{interestsRemaining}} interesovanja","INTRO_TASTE_HELP_US":"Pomozite nam da naučimo o Vama.","INTRO_TASTE_CHOOSE_THESE":"Izaberite neke od ovih:","INTRO_TASTE_CHOOSE_MIN":"Izaberite makar tri kategorije","INTRO_TASTE_CHOOSE_MIN_ERR":"Morate izabrati makar tri kategorije!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Izabrani dodatak nije podržan na ovoj platformi.","ADDON_DISCLAIMER":"Korištenje trećih dodataka uvek će biti predmet lične odgovornosti i zakonom zemlje u kojoj se nalazite.","ADDON_ACTIVATE":"Aktiviraj ovaj dodatak?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Dodaj","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Šta je novo","BUTTON_CONTINUE":"Nastavi","BUTTON_ACTIVATE":"Aktiviraj","BUTTON_ACTIVATED":"Aktivirano","BUTTON_CANCEL":"Prekini","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Poništi sve","BUTTON_VIEW_ALL":"Vidi sve","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Vaša Biblioteka izlgeda prazna. Saznajte koliko je zapravo korisna :) ","HOW_START":"Ovako možete početi:","LIB_EMPTY_CAL":"Vaš Kalendar prikazuje serije iz Vaše Biblioteke.","HOW_START_CAL":"Ovako možete dodati serije:","LIB_EMPTY_BOARD":"Tabla prikazuje notifikacije & preporuke slične tvojoj biblioteci.","HOW_START_BOARD_WAIT":"Molimo Vas da dodate par serija ili kanala u Vašu Biblioteku i dozvolite nam par minuta da procesuiramo :)","HOW_START_BOARD":"Evo kako možete da dodate serije & flmove na nju:","IMPORT_FB":"Uvoz stvari koje Vam se sviđaju na <span>Facebook</span>","IMPORT_TRAKT":"Import your media library from <span>Trakt</span>","IMPORT_DISCOVER":"Nađite zanimljive stvari u <span>Otkrij</span>","IMPORT_DISK":"Uvoz filmova ili serija koje imate na Vašem <span>lokalnom disku</span>","PLEASE_CREATE_ACC":"Molimo Vas <u>napravite nalog</u> da omogućite sinhronizaciju Biblioteke & Table.","IMPORT_DISCOVER_SIGNUP":"Registrujte se i otkrijte zanimljive stvari u <span>Otkrij</span>","IMPORT_DISK_SIGNUP":"Registrujte se i importujte filmove i serije sa vašeg <span>lokalnog diska</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Primaj obaveštenja o novim epizodama","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Prijavite se da dobijete sve ovo:","LIB_EMPTY_BEST":"Prijavite se da dobijete najbolje of Stremio-a","LIB_EMPTY_OTHER":"Prijavite se da biste mogli da aktivirate kalendar i druge dobre funkcije","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt greška","TRAKT_REQUIRES_LOGIN_MSG":"Morate biti ulogovani","SETTINGS_LABEL":"Podešavanja","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Pokreni na pokretanju","SETTINGS_VLC_DEFAULT":"Pusti sa VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Zatvoriti aplikaciju kada je zatvoren prozor","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Automatski pusti sledeću epizodu","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Automatski promeni veličinu prozora pre puštanja","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Uvek koristi najnoviju BETA","SETTINGS_IMPORT_FB":"Uvezi sa Facebooka","SETTINGS_IMPORT_DISK":"Uvezi sa lokalnog diska","SETTINGS_IMPORT_TRAKT":"Uvezi sa Trakt-a","SETTINGS_PAUSE_MINIMIZED":"Pauziraj plejback kada je minimiran","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Pozadinsko puštanje","SETTINGS_SUBSCRIBE_CALENDAR":"Pretplati se na Kalendar","SETTINGS_REQ_EXPORT":"Zatraži izvoz podataka","SETTINGS_ACC_DELETE":"Zatraži brisanje naloga","SETTINGS_CHANGE_PASSWORD":"Promeni lozinku","SETTINGS_TOS":"Uslovi korišćenja","SETTINGS_SUPPORT":"Kontaktiraj podršku","SETTING_LANGUAGE":"Jezik","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Odjavi se sa Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"podrazumevani titlovi","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Pokreni u zasebnom prozoru (napredno)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Izađi","CONNECTED":"Povezan","AUTHENTICATE":"Prijavi se","CACHING":"Keširanje","SETTINGS_CACHING_DRIVE":"Izaberi disk za keširanje","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januar","February":"Februar","March":"Mart","April":"April","May":"Maj","June":"Jun","July":"Jul","August":"Avgust","September":"Septembar","October":"Oktobar","November":"Novembar","December":"Decembar","Monday":"Ponedeljak","Tuesday":"Utorak","Wednesday":"Sreda","Thursday":"Četvrtak","Friday":"Petak","Saturday":"Subota","Sunday":"Nedelja","Action":"Akcija","Comedy":"Komedija","War":"Ratni","Family":"Porodični","Animation":"Animacija","Adventure":"Avanturistički","Fantasy":"Fantazija","Crime":"Krimi","Mystery":"Misterija","Romance":"Ljubavni","Drama":"Drama","Horror":"Horor","Thriller":"Triler","Sci-Fi":"Naučna Fantastika","Music":"Mjuzikl","Biography":"Biografija","Documentary":"Dokumentarni","Sport":"Sport","Musical":"Mujuzikl","Western":"Western","Film-Noir":"Film-Noir","News":"Novosti","History":"Istorijski","Game-Show":"Game-Show","Reality-TV":"Rijaliti","Talk-Show":"Tok Šou","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Filmovi","Uk Live Tv":"UK Uživo Tv","Fashion":"Moda","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"novi video","new episode":"nova epizoda","new movie":"novi film","recommended":"preporučeno","we recommend":"preporučujemo","offer of the day":"ponuda dana","news":"vesti","music video":"spot","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Odbaci obaveštenja","CTX_DISMISS_ALL":"Odustani","CTX_SHARE":"Podeli","CTX_COPY_SHARE_LINK":"Kopiraj link za deljenje","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Prikaži","CTX_PLAY":"Pusti","CTX_PLAY_IN":"Pusti u","CTX_PLAY_ON":"Pusti na","CTX_WATCH_ON":"Gledajte na","CTX_WATCH":"Gledajte","CTX_WATCHED":"Odlgedano","CTX_WATCH_BEGINNING":"Gledajte od početka","CTX_WATCH_MOBILE":"Gledajte na mobilnom uređaju","CTX_REWIND":"Premotaj na početak","CTX_MARK_WATCHED":"Označi kao odgledano","CTX_MARK_NON_WATCHED":"Označi kao neodgledano","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Označi ostatak kao odgledano","CTX_UNMARK_REST":"Označi ostatak kao neodgledano","CTX_RECEIVE_NEW_NOTIF":"Primajte nova obaveštenja","CTX_REMOVE_CACHE":"Obriši iz keša","CTX_REMOVE_CACHE_EP":"Ukloni epizodu iz keša","CTX_OPEN_CONTAINING":"Otvori folder sadržaja","CTX_REMOVE":"Ukloni iz Biblioteke","CTX_AVAILABLE_OFFLINE":"Dostupno Offline","CTX_PAUSED":"Pauzirano","CTX_ALWAYS_ON_TOP":"Uvek na vrhu","CTX_FULLSCREEN":"Ceo ekran","CTX_WRONG_SUBS":"Pogrešan prevod?","CTX_REPORT_ISSUES":"Prijavi problem","CTX_COPY":"Kopiraj","CTX_PASTE":"Nalepi","CTX_CLEAR":"Očisti","CTX_CLEAR_RECENT_SEARCHES":"Obriši skorašnje pretrage","HELLO_THERE":"Hej zdravo","HOPE_YOU_ENJOY":"Nadamo se da uživate uz Stremio i da je već jedna od vaših omiljenih aplikacija!","WHO_ARE_WE":"Ko smo mi? Mi smo tim iza njega - dva momka koja rade teško svaki dan već skoro 3 godine da bismo napravili ovaj proizvod sve boljim i boljim.","SUPPORT_US":"Ako uživate koristeći Stremio, ako je Stremio vredan za vas - širite reč!","SPREAD_THE_WORD":"Podelite sada sa svojim prijateljima, širite reči o Stremio","MORE_PEOPLE":"Što više ljudi koriste Stremio, to će biti bolji!","SEND_A_LINK":"Ili podelite link ka našem sajtu","TIP_LOCALFILES":"Savet: možete prevući i ubaciti lokalne video datoteke u Stremio","ADDON_MY":"Moji Dodaci","ADDON_COMMUNITY":"Dodaci zajednice","ADDON_OFFICIAL":"Zvanični dodaci","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Pretraži dodatke","ADDON_INSTALL":"Instaliraj","ADDON_CONFIGURE":"Podesi","ADDON_UNINSTALL":"Deinstaliraj","ADDON_UPGRADE":"Nadogradi","ADDON_INSTALLED":"Instalirano","ADDON_INSTALLED_MSG":"Dodatak instaliran!","ADDON_UPGRADED_MSG":"Dodatak nadograđen!","ADDON_UNKNOWN":"Nepoznato","ADDON_ERR":"Greška pri instaliranju dodatka!","ADDON_DISCONNECTED":"Diskonektovan","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Instaliraj Sada","ADDON_PAGE":"Stranica dodataka","ADDON_TOP_CONTENT":"Najbolje do ovog dodatka","ADDON_PROVIDES":"Ovaj dodatak će vam dati:","ADDON_WATCH":"Pogledaj #{types} sada!","ADDON_WATCH_FREE":"Pogledaj #{types} BESPLATNO sada !","ADDON_ADDON":"Dodatak","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"Više #{types} u Otkrivanju","ADDON_PROVIDES_STREAMS":"Gledaj #{types}","ADDON_PROVIDES_STREAMS_FREE":"Gledaj #{types} BESPLATNO","ADDON_PROVIDES_SUBTITLES":"Prevodi za #{types}","ADDON_CANTDETECT":"Nismo uspeli pronaći pokrenuti Stremio, tako da nismo uspeli detektovati koje dodatke imate instaliarne.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Neuspešno otvaranje fajla","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"Ova mogućnost je dostupna samo registrovanim korisnicima.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Nastavi gledanje","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmovi izabrani isključivo za vas.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Gledaj Odmah","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Gledati od","WEBSITE_DOWNLOAD":"Skinite sada","WEBSITE_DOWNLOAD_FOR":"Skinite sada za","WEBSITE_IS_DESKTOP":"Stremio je desktop aplikacija, otvori ovu stranicu na svom PC i skini ga","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Glavna","WEBSITE_PAGE_FEATURES":"Karakteristike","WEBSITE_PAGE_ADDONS":"Dodaci","WEBSITE_PAGE_TECH":"Tehnologija","WEBSITE_PAGE_CREATE_ADDON":"Kreiraj dodatak","WEBSITE_PAGE_CONTACTS":"Kontakti","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filmovi","WEBSITE_TYPE_series_PL":"Serije","WEBSITE_TYPE_tv":"Uživo TV","WEBSITE_TYPE_channel":"Kanali","WEBSITE_STREMIO_WHAT_IS":"Stremio je aplikacija koja Vam pomaže da organizujete i odmah gledate vaše omiljene video, filmove, TV serije i TV kanale.","WEBSITE_FEATURES_WATCH":"Gledajte odmah u HD","WEBSITE_FEATURES_WATCH_DETAIL":"Kliknite i pustite svoje omiljene filmove, TV Emisije, video i TV kanale.","WEBSITE_FEATURES_SUBS":"Automatski Prevodi","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatski odabire sinhronizovane prevode za vaš jezik.","WEBSITE_FEATURES_SUBS_LABEL":"Vaš potez, šefe.","WEBSITE_FEATURES_CAST":"Pustite na TV & mobilnim uređajima","WEBSITE_FEATURES_CAST_DETAIL":"Emitovanje na AppleTV, Chromecast, Smart TV (DLNA/UPnP) i mobilne uređaje.","WEBSITE_LIB":"Uživajte u Svojoj ličnoj Biblioteci sinhronizovanoj na sve Vaše uređaje","WEBSITE_LIB_COLLECT":"Prikupite sa Stremio","WEBSITE_LIB_IMPORT":"Uvezite sa Facebook-a","WEBSITE_LIB_LOCAL":"Dodajte sa vašeg lokalnog diska","WEBSITE_BOARD":"Tabla - Vaše one-stop mesto za obaveštenja i preporuke","WEBSITE_BOARD_RECOMMEND":"Preporučena TV Emisija","WEBSITE_BOARD_TRENDING":"Traženi Film","WEBSITE_BOARD_NEW":"Novi Video","WEBSITE_BOARD_EPISODE":"Nova Epizoda","WEBSITE_BOARD_1":"Tražite nešto interesantno da gledate? Dobijajte preporuke na osnovu vašeg ukusa!","WEBSITE_BOARD_2":"Primite obaveštenja kada nova epizoda vaš omiljene TV emisije ili YouTube kanala izadje!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Dodaci za sadržaj","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Kreiraj svoj dodatak","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Zainteresovani? Dobrodošli ste da nas <a href=\'mailto:office@stremio.com\'>kontaktirate</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Misljenja koja delimo:","WEBSITE_SPREAD":"Delite reč o Stremio-u:","WEBSITE_CONTACT":"Ako hoćete da nas kontaktirate, to možete ovde uraditi","WEBSITE_OPENSOURCE":"Za naše open-source projekate, idite na naš","WEBSITE_BITCOIN":"Donirajte bitcoin:","WEBSITE_FAQ":"Često postavljena pitanja","WEBSITE_FAQ_SHORT":"ČPP","WEBSITE_QUESTIONS":"Pitanja","WEBSITE_TOS":"Uslovi korišćenja","WEBSITE_LEGAL":"Zakoni","WEBSITE_PAGE_ABOUT":"O","WEBSITE_PAGE_BECOME_PARTNER":"Postanite partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! Stranica koju tražite nije ovde...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"Ovaj izvor je slabo dostupan ili je Vaša internet konekcija prespora","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Podesi vreme sa ","ADJUST_SIZE":"Podesi veličinu sa ","SEARCH_ANYTHING":"Moćeš Pretraživati Bilo Šta...","ALL_CATEGORIES":"Sve","SEARCH_CATEGORIES":"Filmove, Serije, YouTube & TV","SEARCH_PERSONS":"Glumce, Režisere i Scenografe","SEARCH_PROTOCOLS":"HTTP i Magnet Linkove","SEARCH_TYPES":"IMDB / TVDB linkove","WATCHED":"Odgledano","SHOW_LESS":"Prikaži manje","LAST_SEARCHES":"Poslednje pretrage","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"Prenos podataka je skup","USE_DATA":"Use data","WARNING":"Upozorenje","MORE_INFO":"Više Informacija ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Učitavanje ...","STREMIO_TV_BACK_TO_LANGUAGES":"Nazad na jezike","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Idi na:","STREMIO_TV_OR_SCAN":"ili skeniraj:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Nastavi Gledanje","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Namesti vreme","REMOTE_ADJUST_SIZE":"Namesti veličinu","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Pokušaj ponovo","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},4662:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Serie","TYPE_tv":"TV-kanal","TYPE_channel":"Kanal","TYPE_other":"Other","TYPE_movie_PL":"Filmer","TYPE_series_PL":"Serier","TYPE_tv_PL":"TV-kanaler","TYPE_channel_PL":"Kanaler","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Tillbaka","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Upptäck","Board":"Vägg","Library":"Bibliotek","My Library":"My Library","Calendar":"Kalender","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"Sök","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Lägg till i biblioteket","REMOVE_FROM_LIB":"Ta bort från biblioteket","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Trailer","WATCH_TRAILER":"Titta på trailer","WATCH_NOW":"Titta nu","SHOW":"Visa","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"Betyg på IMDB","YEAR":"År","DIRECTOR":"Regissör","WRITER":"Manusförfattare","LEAD_ACTORS":"Huvudskådespelare","CAST":"Rollista","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Utgiven","SEASONS":"Säsonger","GENRE":"Genre","CATALOG":"Catalog","SUMMARY":"Sammanfattning","SHOW_MORE":"Show More","SIMILAR":"Liknande","UPCOMING":"Kommande","ENDED":"Avslutad","DURATION":"Speltid","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"Sök efter video","SEARCH_PLACEHOLDER":"search or paste magnet link","ADDON":"Tillägg","ADDONS":"Tilläggen","OFFICIAL":"Officiella","ADDONS_OFFICIAL":"Officiella Stremio-tillägg","ADDONS_POPULAR":"Populärt i ditt område","ADDON_FREE":"Gratis tillägg","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"Prenumeration på tillägg","ADDON_STREAM_GEORESTRICTED":"not available in your area","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Tillgängliga strömmar","NO_STREAM":"Ingen ström","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Katalog för tillägg","ADDON_CATALOGUE_MORE":"More addons »","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons repository already exist","ADDON_REPO_ERR":"Error occurred while adding repository","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Protected addon","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection url","ERR_NOT_ADDON_URL":"Not an addon url","ERR_DETECTFROMURL":"Cannot detect from url","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Addon collection set failed","SETTINGS_DATA_EXPORT":"Export data","ADDON_PULL_FAILED":"Addon pulling failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Visas fortfarande på bio","WATCH_IN_CINEMA":"Se den på din lokala bio","IN_THEATER":"På bio","GET_TICKETS":"Skaffa biljetter","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"Den här kanalen är inte skrapad än.<br>Kom tillbaka om några minuter.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Lägg till den till ditt bibliotek för att bli meddelad när den blir tillgänglig.","GET_NOTIFIED_WHEN_AVAILABLE":"Du kommer att bli meddelad när den blir tillgänglig.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Hoppsan, fel på spelaren","PLAYER_ERROR_LOOKSLIKE":"Det tycks vara ett fel på spelaren","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"Strömmar från","CASTING_TO":"Castar till","NETWORK_STATUS":"Nätverksstatus","STREAM_SPEED":"Nedladdningshastighet:","STREAM_BUFFERED":"Buffrat:","PEERS_INFO":"Information om peers","PEERS_ACTIVE":"Aktiv:","PEERS_CONNECTED":"Ansluten:","PEERS_WAITING":"Väntar:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"Laddar strömmen...","PLAYING_LOCAL":"Spelar upp en lokal fil","PLAYING_CACHE":"Spelar upp från cache","WRONG_SUBS":"Felaktiga undertexter","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Välj en enhet att titta på","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Telefon / Platta","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Ändra undertexter för ","SUBTITLES_CHANGE_NONE":"Det finns inga andra undertexter för detta språk, beklagar.","SUBTITLES_CHANGE_ACIVE":"För närvarande är undertexter #{{subtitlesDialog.activeIdx + 1}} aktiverade. Klicka på \\"Fortsätt\\" för att aktiverar undertexter #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Undertexter eller","SUBTITLES_ADJUST_DELAY":"Justera fördröjning av undertexter:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Eller använd tangenterna <span>G</span> / <span>H</span> när du tittar.","SUBTITLES_ADJUST_DELAY_TIP":"TIPS: du kan använda tangenterna <span>G</span> / <span>H</span> när du tittar för att justera.","SUBTITLES_DELAY":"Fördröjning av undertexter:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Säsong","EPISODE":"Avsnitt","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"Sortera trender","SORT_RECENT":"Sortera efter senaste","SORT_ALPHABET":"Sortera efter alfabetet","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"betyg","SORT_WATCHED":"sett","SORT_YEAR":"År","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"Återuppta","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Detaljer","LIBRARY_RESUME_DISMISS":"dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Utvalda","DISCOVER_TOP":"Topp","DISCOVER_OSCAR":"Oscarsvinnare","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Varning: inget Stremio-tillägg aktivt för denna typ. Visar sparade objekt, ingenting kommer att uppdateras.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Starta om nu!","UPGRADE":"Uppgradera till den senaste versionen av Stremio","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Logga in med Facebook","FB_NOTHINGSHARED":"Ingenting delas utan din tillåtelse ","FB_NOPOST":"We won’t post anything on your behalf","OR":"eller","I_ACCEPT":"Jag accepterar","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Användarvillkoren","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Lösenorden matchar inte","SIGN_UP":"Registrera","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Logga in","LOG_OUT":"Logga ut","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Gästinloggning","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"klicka här","WRONG_PASSWORD":"Fel lösenord. Om du har glömt ditt lösenord, ","SET_A_PASS":"ange ett lösenord","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"Denna e-postadress användes med en Facebook-inloggning.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Anslutningsfel - var vänlig och försök igen senare.\\n\\nOm problemet kvarstår, inaktivera brandväggar/antivirusprogram (speciellt Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Användandet av tredjeparts-tillägg kommer alltid att vara ditt eget ansvar och faller under lagstiftningen i det område du befinner dig i.","ADDON_ACTIVATE":"Aktivera detta tillägg?","ADDON_REPO_ADD":"Addon repository url","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"Nyheter","BUTTON_CONTINUE":"Fortsätt","BUTTON_ACTIVATE":"Aktivera","BUTTON_ACTIVATED":"Aktiverad","BUTTON_CANCEL":"Avbryt","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Ditt bibliotek ser tomt ut. Ta reda på hur användbart det kan vara :)","HOW_START":"Så här kan du börja:","LIB_EMPTY_CAL":"Din Kalender visar serier från ditt bibliotek.","HOW_START_CAL":"Så här kan du lägga till en serie:","LIB_EMPTY_BOARD":"Väggen visar notifikationer & rekommendationer med anknytning till ditt bibliotek.","HOW_START_BOARD_WAIT":"Lägg gärna till några serier eller kanaler till Bibliotek och ge oss några minuter att behandla dem :)","HOW_START_BOARD":"Så här kan du lägga till serier & filmer till den:","IMPORT_FB":"Importera saker du tycker om från <span>Facebook</span>","IMPORT_TRAKT":"Import your media library from <span>Trakt</span>","IMPORT_DISCOVER":"Hitta intressanta saker från <span>Upptäck</span>","IMPORT_DISK":"Importera filmer eller serier som du har på din <span>lokala hårddisk</span>","PLEASE_CREATE_ACC":"Vänligen <u> skapa ett konto </u> för att aktivera synkronisering av Biblioteket & Vägg.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from <span>Discover</span>","IMPORT_DISK_SIGNUP":"Sigm up and import movies or shows you have on your <span>local disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"Du behöver logga in","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Starta vid uppstart","SETTINGS_VLC_DEFAULT":"Spela upp med VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Spela automatiskt upp nästa avsnitt","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Importera från Facebook","SETTINGS_IMPORT_DISK":"Importera från lokal hårddisk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Prenumerera på kalender","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Ändra lösenord","SETTINGS_TOS":"Användarvillkor","SETTINGS_SUPPORT":"Kontakta supporten","SETTING_LANGUAGE":"Språk","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Logga ut från Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Avsluta","CONNECTED":"Connected","AUTHENTICATE":"Autentisera","CACHING":"Cachear","SETTINGS_CACHING_DRIVE":"Inställningar för cacheenhet","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"Januari","February":"Februari","March":"Mars","April":"April","May":"Maj","June":"Juni","July":"Juli","August":"Augusti","September":"September","October":"Oktober","November":"November","December":"December","Monday":"Måndag","Tuesday":"Tisdag","Wednesday":"Onsdag","Thursday":"Torsdag","Friday":"Fredag","Saturday":"Lördag","Sunday":"Söndag","Action":"Action","Comedy":"Komedi","War":"Krig","Family":"Familj","Animation":"Animerat","Adventure":"Äventyr","Fantasy":"Fantasy","Crime":"Deckare","Mystery":"Mysterium","Romance":"Romantik","Drama":"Drama","Horror":"Skräck","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Musik","Biography":"Biografi","Documentary":"Dokumentär","Sport":"Sport","Musical":"Musikal","Western":"Western","Film-Noir":"Film-Noir","News":"Nyheter","History":"Historia","Game-Show":"Spel-program","Reality-TV":"Reality-TV","Talk-Show":"Pratprogram","Film & Entertainment":"Film & Underhållning","Gaming":"Gaming","From TV":"Från TV","Lifestyle":"Livsstil","Science & Education":"Vetenskap & Utbildning","Cooking & Health":"Matlagning & Hälsa","Beauty & Fashion":"Skönhet & Mode","Sports":"Sport","News & Politics":"Nyheter & Politik","How-to & DIY":"Gör det själv","Tech":"Teknik","Automotive":"Fordon","Causes & Non-Profits":"Bra saker & Ideella organisationer","Movies":"Filmer","Uk Live Tv":"UK Direkt Tv","Fashion":"Mode","Business News Radio":"Nyhetsradio för företag","Business Tv":"Företags-TV","Cars & Auto":"Bilar & Fordon","Comedy Radio":"Komediradio","Lifestyle Radio":"Livsstilsradio","News Tv":"Nyheter Tv","Food And Wine":"Mat Och Vin","Latino Tv":"Latinsk Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Barn","Body & Soul":"Kropp & Själ","Education":"Utbildning","Indian Tv":"Indisk Tv","Extreme Sports":"Extremsport","Middle Eastern Tv":"Mellanöstern Tv","Celebrity Tv":"Kändis Tv","Science Tv":"Vetenskap Tv","Bikini babe":"Bikini brud","Outdoors":"Utomhus","German Tv":"Tysk Tv","French Tv":"Fransk Tv","Italian Tv":"Italiensk Tv","Gamer Tv":"Gamer Tv","Travel":"Resor","Asian Tv":"Asiatisk Tv","Entertainment":"Underhållning","News Radio":"Nyheter Radio","Music Radio":"Musik Radio","Language Learning":"Språkinlärning","Science Radio":"Vetenskaplig Radio","Tech Radio":"Teknik Radio","Science & Technology Vod":"Vetenskap & Teknik Vod","new video":"nytt videoklipp","new episode":"nytt avsnitt","new movie":"ny film","recommended":"rekommenderad","we recommend":"vi rekommenderar","offer of the day":"dagens erbjudande","news":"nyheter","music video":"musikvideo","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Avisa notifikationer","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Dela","CTX_COPY_SHARE_LINK":"Kopiera delningslänk","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Visa","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Titta på","CTX_WATCH":"Titta","CTX_WATCHED":"Sedd","CTX_WATCH_BEGINNING":"Se från början","CTX_WATCH_MOBILE":"Se på mobilen","CTX_REWIND":"Spola tillbaka till början","CTX_MARK_WATCHED":"Markera som sedd","CTX_MARK_NON_WATCHED":"Markera som osedd","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Ta emot nya notifikationer","CTX_REMOVE_CACHE":"Ta bort från cache","CTX_REMOVE_CACHE_EP":"Ta bort avsnitt från cache","CTX_OPEN_CONTAINING":"Öppna innehållande mapp","CTX_REMOVE":"Ta bort från bibliotek","CTX_AVAILABLE_OFFLINE":"Tillgänglig Offline","CTX_PAUSED":"Pausad","CTX_ALWAYS_ON_TOP":"Alltid överst","CTX_FULLSCREEN":"Fullskärm","CTX_WRONG_SUBS":"Fel undertexter?","CTX_REPORT_ISSUES":"Rapportera problem","CTX_COPY":"Kopiera","CTX_PASTE":"Klistra in","CTX_CLEAR":"Rensa","CTX_CLEAR_RECENT_SEARCHES":"Rensa senaste sökningar","HELLO_THERE":"Hejsan","HOPE_YOU_ENJOY":"Vi hoppas att ni uppskattar Stremio och det redan är ett av dina favoritprogram!","WHO_ARE_WE":"Vilka är vi? Vi är teamet bakom det - två killar som arbetat hårt varje dag under de senaste 3 åren, med ett enda mål - att göra produkten bättre och bättre.","SUPPORT_US":"Om du tycker om att använda Stremio, om Stremio är värdefullt för dig - stöd oss!","SPREAD_THE_WORD":"Dela med dina vänner nu, sprid ordet om Stremio.","MORE_PEOPLE":"Ju fler människor som använder Stremio, desto bättre kommer det att bli!","SEND_A_LINK":"Eller skicka en länk till vår hemsida","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"Mina tillägg","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Officiella tillägg","ADDON_REPOS":"Addon repositories","ADDON_SEARCH":"Sök efter tillägg","ADDON_INSTALL":"Installera","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Avinstallera","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installerad","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"provides","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Tillägg","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Fortsätt titta","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Ladda ner nu","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Skrivbordsdemo","WEBSITE_PAGE_HOME":"Hem","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Tillägg","WEBSITE_PAGE_TECH":"Teknologi","WEBSITE_PAGE_CREATE_ADDON":"Skapa ett tillägg","WEBSITE_PAGE_CONTACTS":"Kontakter","WEBSITE_PAGE_BLOG":"Blogg","WEBSITE_TYPE_movie":"Filmer","WEBSITE_TYPE_series_PL":"Serier","WEBSITE_TYPE_tv":"Live-TV","WEBSITE_TYPE_channel":"Kanaler","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatiska undertexter","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio väljer automatiskt synkade undertexter för ditt språk.","WEBSITE_FEATURES_SUBS_LABEL":"Ditt drag, chefen.","WEBSITE_FEATURES_CAST":"Spela upp på TV:n & mobila enheter","WEBSITE_FEATURES_CAST_DETAIL":"Castea till AppleTV, Chromecast, Smart TV (DLNA/UPnP) och mobila enheter.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Samla från Stremio","WEBSITE_LIB_IMPORT":"Importera från Facebook","WEBSITE_LIB_LOCAL":"Lägg till från din lokala hårddisk","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Rekommenderat TV-program","WEBSITE_BOARD_TRENDING":"Filmtrend","WEBSITE_BOARD_NEW":"Ny video","WEBSITE_BOARD_EPISODE":"Nytt avsnitt","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"Vi älskar teknologi, vi älskar galen forskning!\\nStremio använder följande öppen källkodsteknologier:","WEBSITE_TECH_WCJS":"WebChimera.js tillåter Stremio att spela upp alla videoformat med bra prestanda.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Skapa ditt tillägg","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Fördelar med att skapa ett tillägg till Stremio","WEBSITE_P2P_BEAUTY":"Det sköna med strömmande via Peer-to-Peer","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"Vi kommer att skapa ett tillägg som möter dina specifika behov","WEBSITE_P2P_CONTACT":"Intresserad? Du är välkommen att <a href=\'mailto:office@stremio.com\'>kontakta oss</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Nu och då kommer det en teknologi som förändrar situationen. Vi investerade massor av tid och ansträngning för att bygga vår Peer-to-Peer (P2P) strömningsmotor för video som erbjuder bra prestanda and mångsidighet att anpassa sig med alla användningsområden.\\nKontakta oss för DRM-aktiverad P2P-video on demand eller live-sändning.","WEBSITE_THOUGHTS":"Tankar som vi delar:","WEBSITE_SPREAD":"Sprid ordet om Stremio:","WEBSITE_CONTACT":"If you are looking to contact us, go ahead at","WEBSITE_OPENSOURCE":"För våra projekt med öppen källod, går till vår","WEBSITE_BITCOIN":"Donera bitcoin:","WEBSITE_FAQ":"Frekvent ställda frågor","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Användningsvillkor","WEBSITE_LEGAL":"Lagligt","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Contacts us","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Sibscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Now Stremio 4 beta","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can accss a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},9892:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"సినిమా","TYPE_series":"సిరీస్","TYPE_tv":"టీవీ ఛానల్","TYPE_channel":"ఛానల్","TYPE_other":"మరిన్ని","TYPE_movie_PL":"Movies","TYPE_series_PL":"Series","TYPE_tv_PL":"TV channels","TYPE_channel_PL":"Channels","TYPE_other_PL":"Others","TYPE_ALL":"All","VIDEO":"Video","BACK":"Back","MORE":"More","DONE":"Done","COPY":"Copy","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"Discover","Board":"Board","Library":"Library","My Library":"My Library","Calendar":"Calendar","NOTIFICATION_ONLINE":"You are now online","NOTIFICATION_OFFLINE":"You are currently offline","INTERNET_CONNECTION":"Network connection","STORAGE_FULL_TITLE":"Warning: Storage full!","STORAGE_FULL_TEXT":"Stremio will not be able to save your settings, preferences or login information. Consider re-starting or re-installing Stremio.","SEARCH":"search","SEARCH_NO_RESULTS":"No results were found","SEARCH_EXPLANATION_CONTENT":"Search for movies, series, YouTube and TV channels","SEARCH_EXPLANATION_PEOPLE":"Search for actors, directors and writers","SEARCH_PASTE_LINKS":"Paste HTTP and Magnet links","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"Add to Library","REMOVE_FROM_LIB":"Remove from Library","ADDED_TO_LIB":"Added to Library","REMOVED_FROM_LIB":"Removed from Library","TRAILER":"Trailer","WATCH_TRAILER":"Watch Trailer","WATCH_NOW":"Watch Now","SHOW":"Show","SHOW_MOVIE":"Show Movie","WATCH_RANDOM":"Watch Random","IMDB_RATING":"IMDb Rating","YEAR":"Year","DIRECTOR":"Director","WRITER":"Writer","LEAD_ACTORS":"Lead Actors","CAST":"Cast","CREW":"Crew","SHOW_MORE_CAST":"Show more »","AIRED":"Aired","SEASONS":"Seasons","GENRE":"Genre","CATALOG":"Catalog","SUMMARY":"Summary","SHOW_MORE":"Show More","SIMILAR":"Similar","UPCOMING":"Upcoming","ENDED":"Ended","DURATION":"Duration","FEATURED":"Featured","METADATA":"Metadata","CATEGORY":"category","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"search videos","SEARCH_PLACEHOLDER":"search or paste URL","ADDON":"addon","ADDONS":"Addons","OFFICIAL":"official","ADDONS_OFFICIAL":"Official Stremio Addons","ADDONS_POPULAR":"Popular in your area","ADDON_FREE":"free","ADDON_PEERED":"peered","ADDON_SUBSCRIPTION":"subscription","ADDON_STREAM_GEORESTRICTED":"not available in your area","ADDON_STREAM_OFFLINECACHE":"Offline Cache","ADDON_STREAM_LOCALFILE":"Local File","SHARE_ADDON":"Share addon","AVAILABLE_STREAMS":"Available Streams","NO_STREAM":"No streams were found","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"For more streams, please install more addons","STREAM_NOT_SUPPORTED":"Selected stream is not supported on this platform.","ADDON_CATALOGUE":"Show all addons »","ADDON_CATALOGUE_MORE":"Install addons","REPO_ADDED":"Repository added","ADDON_REPO_EXIST_ERR":"This addons collection already exist","ADDON_REPO_ERR":"Error occurred while adding collection","ADDON_ADD_ERR":"Error occurred while adding addon","ERR_ADDON_PROTECTED":"Cannot uninstall addon, it is protected","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Something went wrong - authentication may have failed","ERR_NOT_COLLECTION_URL":"Not a collection URL","ERR_NOT_ADDON_URL":"Not a valid addon URL","ERR_DETECTFROMURL":"Cannot find addon/collection from this URL","ADDON_DUPLICATE_WARNING":"Warning: duplicated addon","ADDON_COLLECTION_SET_FAILED":"Syncing installed addons to your account failed","SETTINGS_DATA_EXPORT":"Export user data","ADDON_PULL_FAILED":"Syncing installed addons from your account failed","REFRESH_ON_CLICK":"Click to retry","STILL_IN_THEATER":"Movie still in theaters","WATCH_IN_CINEMA":"Watch it in your local cinema","IN_THEATER":"In cinema","GET_TICKETS":"Get tickets","UPCOMING_EPISODE":"Upcoming episode","UPCOMING_EPISODE_MESSAGE":"This episode will be aired on","MISSING_DATE_EPISODE":"Missing episode date","MISSING_DATE_EPISODE_MESSAGE":"This episode might not have aired yet","CHANNEL_NOT_SCRAPED":"This channel is not scraped yet.<br>Please come back in a few minutes.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Add it to your library to get notified once it is available.","GET_NOTIFIED_WHEN_AVAILABLE":"You will get notified once it is available.","WARNING_STREAMING_SERVER":"Warning: local streaming server not found. Streaming from local files, YouTube and BitTorrent will not be available.","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"Warning: this video may not be supported by your hardware. Keep in mind, playback may be slow.","PLAYER_ERROR":"Oops, Player Error","PLAYER_ERROR_LOOKSLIKE":"It looks like","PLAYER_ORIENTATION":"Player orientation","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Locked","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensor","PLAYER_ORIENTATION_LANDSCAPE":"Player orientation locked at landscape","PLAYER_ORIENTATION_SENSOR":"Player orientation automatic (sensor)","PLAYER_PLAYBACK_SPEED":"Playback Speed","PLAYER_PLAYBACK_ERROR":"Playback error, please try again","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Unknown error","PLAYER_PLAYBACK_ERROR_DEFAULT":"Sorry, this video cannot be played by {{productName}}.","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"Live","PLAYER_NEXT_VIDEO_TITLE":"Coming up next on","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Dismiss","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Watch now","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"streaming from","CASTING_TO":"Casting to","NETWORK_STATUS":"Network status","STREAM_SPEED":"Stream speed:","STREAM_BUFFERED":"Buffered:","PEERS_INFO":"Peers Information","PEERS_ACTIVE":"Active:","PEERS_CONNECTED":"Connected:","PEERS_WAITING":"Waiting:","TRANSCODING_WARNING":"Warning: transcoding video.","STREAM_LOADING":"loading...","PLAYING_LOCAL":"playing from local file","PLAYING_CACHE":"playing from cache","WRONG_SUBS":"Wrong subtitles?","ERR_SUBS_LOADING_TITLE":"Error loading subtitles","ERR_SUBS_LOADING":"Failed loading subtitles: this could be an issue with the addon you are using, or with your network connection","WARN_FOLLOWING_SUB_ADDONS_FAILED":"The following subtitle addons failed","ERR_CASTING_UPDATE_TITLE":"Could not update casting device info: streaming server might be offline","CHOOSE_DEVICE":"Choose a device to watch on","NO_CAST_DEVICES":"No casting devices available.","NO_SETTINGS":"No settings available.","PHONE_TABLET":"Phone / Tablet","SUBTITLES":"Subtitles","SUBTITLES_CHANGE":"Change subtitles for ","SUBTITLES_CHANGE_NONE":"There are no other subtitles for this language, sorry.","SUBTITLES_CHANGE_ACIVE":"Currently subtitles #{{subtitlesDialog.activeIdx + 1}} are activated. Click \\"Continue\\" to activate subtitles #{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"Alternatively,","SUBTITLES_ADJUST_DELAY":"Adjust subtitle delay:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Or use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_ADJUST_DELAY_TIP":"TIP: you can use <span>G</span> / <span>H</span> keys while playing to adjust.","SUBTITLES_DELAY":"Subtitles delay:","SUBTITLES_LOADING":"Loading subtitles...","SUBTITLES_UNAVAILABLE":"No external subtitles available","SUBTITLES_DISABLED":"Disabled","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"Season","EPISODE":"Episode","SPECIAL":"Special","SORT":"sort","SORT_BY":"Sort by","FILTER":"filter","SORT_TRENDING":"trending","SORT_RECENT":"recent","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"rating","SORT_WATCHED":"watched","SORT_YEAR":"year","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"New for You","New Episodes":"New Episodes","New Videos":"New Videos","Recommendations":"Recommendations","LIBRARY_RESUME":"Resume","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"Details","LIBRARY_RESUME_DISMISS":"Dismiss","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"Featured","DISCOVER_TOP":"Top","DISCOVER_OSCAR":"Oscar Winners","DISCOVER_WARNING_TITLE":"Oops!","DISCOVER_EMPTY_CATALOG":"This addon returned empty content.","DISCOVER_ADULT_WARNING":"The content is visible only for adults. Are you 18+?","DISCOVER_NOADDON_WARNING":"Warning: no Stremio addon active for this type. Showing saved items, nothing here will update.","DISCOVER_LOAD_ERR":"The content did not load, error occured.","DISCOVER_ADDON_UNINSTALLED":"This content is no longer available, you may have un-installed the addon.","UNINSTALL_THIS_ADDON":"Uninstall this addon","ERR_ADDON_NOT_INSTALLED":"This addon is not installed. Install now?","DETAIL_RECEIVE_NOTIF_SERIES":"Receive notifications for new episodes","DETAIL_RECEIVE_NOTIF_VIDEOS":"Receive notifications for new videos","SIDEBAR_SHOW_STREAMS":"Show Streams","RELAUNCH":"Re-launch now!","UPGRADE":"New version is available! Upgrade to the latest Stremio version","RELOAD_UI":"Reload the user interface","MANUAL_UPDATE_TITLE":"Update your Stremio version","MANUAL_UPDATE_LINE1":"You are running an outdated version of Stremio which is highly unrecommended.","MANUAL_UPDATE_LINE2":"Please update as soon as possible.","BUTTON_UPDATE_LATTER":"Not now","BUTTON_UPDATE_NOW":"Update","ANONYMOUS_USER":"Anonymous user","DONT_HAVE_ACC":"Don\'t have an account?","HAVE_ACC":"Already have an account?","PASSWORD":"Password","PASSWORD_CONFIRM":"Confirm password","EMAIL":"E-mail","FB_LOGIN":"Continue with Facebook","FB_NOTHINGSHARED":"Nothing is shared without your permission","FB_NOPOST":"We won’t post anything on your behalf","OR":"or","I_ACCEPT":"I accept the","I_ACCEPT_BY_CLICKING":"By clicking the above button I testify that I accept the ","TOS":"Terms and Conditions","MUST_ACCEPT_TERMS":"You must accept terms","PASSWORDS_NOMATCH":"Passwords don\'t match","SIGN_UP":"Sign up","SIGN_UP_EMAIL":"Sign up with email","CLICK_TO_SIGN_UP":"Click here to sign up.","LOG_IN":"Log in","LOG_OUT":"Log out","EXIT_FULLSCREEN":"Exit fullscreen mode","ENTER_FULLSCREEN":"Enter fullscreen mode","PLAY_URL_MAGNET_LINK":"Play URL/Magnet link","HELP_FEEDBACK":"Help & Feedback","TERMS_OF_SERVICE":"Terms of Service","PRIVACY_POLICY":"Privacy Policy","ABOUT_STREMIO":"About Stremio","USER_PANEL":"User Panel","LOGIN_LABEL":"Login","GUEST_LOGIN":"Guest login","GUEST_LOGIN_NOTICE":"Guest Login is not recommended. Using a regular login allows Stremio to sync your Library, receive notifications for favourite series/channels. Are you sure you want to proceed?","GUEST_LOGIN_NOTICE_2":"Guest Login is not recommended - you won\'t have synced Library and Board notifications, which are vital Stremio features. Are you sure you want to proceed?","CLICK_HERE":"click here","WRONG_PASSWORD":"Wrong email or password. In case you have forgotten your password, ","SET_A_PASS":"set a password","RESET_PASSWORD":"Reset password","FORGOT_PASSWORD":"Forgot password?","EMAIL_USED_WITH_FB":"This email was used with a Facebook login.","INVALID_EMAIL":"Please enter a valid email address","INVALID_PASSWORD":"Please enter a valid password","CONN_ERR":"Connection error - please try again later.\\n\\nIf this persists, disable firewalls/anti-virus software (especially Bitdefender).","IMPORT_FROM_GUEST":"Import Library from your guest account","RECEIVE_UPDATES_EMAIL":"Receive updates to your email from Stremio","LOGIN_FAILED":"Login failed.","SIGNUP_FAILED":"Signup failed.","SEARCH_FAILED":"Search failed","EMAIL_USED":"This email is already in use.","WAITING_FB_LOGIN":"Logging in with Facebook...","EXTERNAL_PLAYER_TITLE":"Play in external player","EXTERNAL_REMEMBER_PLAYER":"Do you want to remember your choice","EXTERNAL_ALWAYS_PLAY":"Yes","EXTERNAL_ONLY_ONCE":"No","BEST_FIT":"Best Fit","FIT_SCREEN":"Fit Screen","FILL":"Fill","16:9":"16:9","4:3":"4:3","Original":"Original","INTRO_TASTE":"Tell us about what you like","INTRO_TASTE_LONG":"Tell us about what you\'d like to watch","INTRO_TASTE_PICK":"Pick {{interestsRemaining}} interests","INTRO_TASTE_PICK_MORE":"Pick {{interestsRemaining}} more interests","INTRO_TASTE_HELP_US":"Help us learn more about you.","INTRO_TASTE_CHOOSE_THESE":"Choose some of these:","INTRO_TASTE_CHOOSE_MIN":"Choose at least 3 categories","INTRO_TASTE_CHOOSE_MIN_ERR":"You have to pick at least 3 categories!","INTRO_TASTE_LIFESTYLE":"Lifestyle","INTRO_TASTE_SPORTS":"Sports","INTRO_TASTE_FOOD_HEALTH":"Food & Health","INTRO_TASTE_BEAUTY_FASHION":"Beauty & Fashion","INTRO_TASTE_NEWS":"News","INTRO_TASTE_GAMING":"Gaming","INTRO_TASTE_SCIENCE_EDU":"Science & Education","INTRO_TASTE_MUSIC":"Music","INTRO_TASTE_TRAVEL":"Travel","INTRO_TASTE_LATE_NIGHT":"Late Night Show","INTRO_TASTE_REALITY":"Reality","INTRO_TASTE_COMEDY":"Comedy","INTRO_TASTE_DIY":"How to DIY","INTRO_TASTE_TECH":"Tech","INTRO_TASTE_CINEMA":"Cinema","ADDON_NOT_SUPPORTED":"Selected addon is not supported on this platform.","ADDON_DISCLAIMER":"Using third-party addons will always be subject to your responsibility and the governing law of the jurisdiction you are located.","ADDON_ACTIVATE":"Activate this addon?","ADDON_REPO_ADD":"Addon collection URL","ADDON_ADD":"Add","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"What\'s new","BUTTON_CONTINUE":"Continue","BUTTON_ACTIVATE":"Activate","BUTTON_ACTIVATED":"Activated","BUTTON_CANCEL":"Cancel","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"Dismiss All","BUTTON_VIEW_ALL":"view all","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"Your library looks empty. Find out how useful it is :) ","HOW_START":"Here is how you can start:","LIB_EMPTY_CAL":"Your Calendar shows series in your Library.","HOW_START_CAL":"Here is how you can add series:","LIB_EMPTY_BOARD":"Board shows notifications & recommendations related to your Library.","HOW_START_BOARD_WAIT":"Please, add a few series or channels to your Library give us a few minutes to process :)","HOW_START_BOARD":"Here is how you can add series & movies to it:","IMPORT_FB":"Import things you like from <span>Facebook</span>","IMPORT_TRAKT":"Import your media library from <span>Trakt</span>","IMPORT_DISCOVER":"Find interesting stuff from <span>Discover</span>","IMPORT_DISK":"Import movies or shows you have on your <span>local disk</span>","PLEASE_CREATE_ACC":"Please <u>create an account</u> to enable Library sync & Board.","IMPORT_DISCOVER_SIGNUP":"Sign up and find interesting stuff from <span>Discover</span>","IMPORT_DISK_SIGNUP":"Sign up and import movies or shows you have on your <span>local disk</span>","LIB_EMPTY_CLOUD":"Cloud library","LIB_EMPTY_CLOUD_DESC":"Personal cloud library synced on all devices","LIB_EMPTY_EARLY":"Early bird","LIB_EMPTY_EARLY_DESC":"Receive notifications for new episodes","LIB_EMPTY_PERSONAL":"Personal","LIB_EMPTY_PERSONAL_DESC":"Get personal recommendations","LIB_EMPTY_CALENDAR_DESC":"Schedule your personal watching calendar","LIB_EMPTY_ALL":"Sign up to get all of these:","LIB_EMPTY_BEST":"Sign up to get best of Stremio","LIB_EMPTY_OTHER":"Sign up to enable Calendar & other cool features","CALENDAR_ADDED":"The Stremio calendar has been added to your default desktop calendar.","CALENDAR_ADDED_MSG":"If this does not work, please add this URL to your calendar application manually","TRAKT_EXPIRED":"Trakt authentication expired, please go to Settings and re-authenticate","TRAKT_REQUIRES_LOGIN":"Trakt error","TRAKT_REQUIRES_LOGIN_MSG":"You need to login","SETTINGS_LABEL":"Settings","SETTINGS_NAV_GENERAL":"General","SETTINGS_NAV_PLAYER":"Player","SETTINGS_NAV_STREAMING":"Streaming","SETTINGS_NAV_SHORTCUTS":"Shortcuts","SETTINGS_SHORTCUT_RELOAD_APP":"Reload App","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Open Settings","SETTINGS_SHORTCUT_SWITCH_TABS":"Switch Tabs","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Cycle Through Tabs Forward","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Cycle Through Tabs Backward","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"Exit / Go Back","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"Toggle Fullscreen","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Show Controls","SETTINGS_SHORTCUT_PLAY_PAUSE":"Play / Pause","SETTINGS_SHORTCUT_VOLUME_UP":"Volume Up","SETTINGS_SHORTCUT_VOLUME_DOWN":"Volume Down","SETTINGS_SHORTCUT_SEEK_NEXT":"Seek Next","SETTINGS_SHORTCUT_SEEK_PREV":"Seek Prev","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"Play Next","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Increase Subtitles Size","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Decrease Subtitles Size","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Increase Subtitles Delay","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Decrease Subtitles Delay","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Toggle Sidebar","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"Launch on start-up","SETTINGS_VLC_DEFAULT":"Play with VLC","SETTINGS_UI_LANGUAGE":"UI Language","SETTINGS_FULLSCREEN_EXIT":"Escape key exit full screen","SETTINGS_GAMEPAD":"Enable gamepad support","SETTINGS_CLOSE_WINDOW":"Close app when window is closed","SETTINGS_SUBTITLES_LANGUAGE":"Default Subtitles Language","SETTINGS_SUBTITLES_SIZE":"Default Subtitles Size","SETTINGS_SUBTITLES_BACKGROUND":"Subtitles background","SETTINGS_SUBTITLES_COLOR":"Subtitles color","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Subtitles outline color","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Subtitles background color","SETTINGS_SEEK_KEY":"Arrow keys seek time","SETTINGS_SEEK_KEY_SHIFT":"Arrow keys seek time when Shift key is held","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"Auto-play next episode","SETTINGS_NEXT_VIDEO":"Show notification to start next episode","SETTINGS_NEXT_VIDEO_TRIGGER":"Show next episode notification for:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"Auto-resize window before playing","SETTINGS_OVERRIDE_SERVER":"Override the streaming server URL (advanced)","SETTINGS_SERVER_URL":"Streaming server URL: ","SETTINGS_SERVER_AVAILABLE":"Streaming server is available.","SETTINGS_SERVER_UNAVAILABLE":"Streaming server is not available.","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"Streaming HTTPS endpoint: ","SETTINGS_USE_BETA":"Always use latest Beta","SETTINGS_IMPORT_FB":"Import from Facebook","SETTINGS_IMPORT_DISK":"Import from local disk","SETTINGS_IMPORT_TRAKT":"Import from Trakt","SETTINGS_PAUSE_MINIMIZED":"Pause playback when minimized","SETTINGS_HWDEC":"Hardware-accelerated decoding","SETTINGS_BACKGROUND":"Background playback","SETTINGS_SUBSCRIBE_CALENDAR":"Subscribe to calendar","SETTINGS_REQ_EXPORT":"Request data export","SETTINGS_ACC_DELETE":"Request account deletion","SETTINGS_CHANGE_PASSWORD":"Change password","SETTINGS_TOS":"Terms of service","SETTINGS_SUPPORT":"Contact support","SETTING_LANGUAGE":"Language","SETTINGS_TRAKT":"Trakt Scrobbling","SETTINGS_TRAKT_LOGOUT":"Log out of Trakt.tv","SETTINGS_SCAN_FOR_REMOTE":"Scan QR code to open remote","SETTINGS_DESKTOP_NOTIFICATIONS":"Desktop notifications","SETTINGS_DATA_SAVER":"Data saver","SETTINGS_LANGUAGE_INTERFACE":"interface","SETTINGS_LANGUAGE_SUBS":"default subtitles","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Autoselect Audio Track","SETTINGS_DEFAULT_AUDIO_TRACK":"Default Audio Track","SETTINGS_ACCOUNT":"account","SETTINGS_VERSION":"version","SETTINGS_MPV_WINDOW":"Launch player in a separate window (advanced)","SETTINGS_PLAY_IN_EXTERNAL":"Always start video in external player","SETTINGS_STORAGE_BUTTON":"Clear Local Storage","SETTINGS_STORAGE_MODAL_TITLE":"Are you sure ?","SETTINGS_STORAGE_MODAL_MESSAGE":"This will clear the local storage and log you out.","SETTINGS_HWDEC_PICKER":"Pick hardware-accelerated decoding setting","SETTINGS_HW_AUTOMATIC":"Automatic","SETTINGS_HW_DISABLED":"Disabled","SETTINGS_HW_ACCELERATED":"Decoding acceleration","SETTINGS_HW_FULL":"Full acceleration","SETTINGS_HW_LEGACY":"Legacy","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"Audio","SUBSPICKER_SUBTITLES":"Addons Subtitles","SUBSPICKER_BLACK_BACKGROUND":"Use black background color","SUBSPICKER_VERTICAL_OFFSET":"Vertical Offset","SUBSPICKER_SIZE":"Size","SUBSPICKER_DELAY":"Delay","SUBSPICKER_EMBEDDED_SUBS":"Embedded Subtitles","MOBILE_PRIVACY_POLICY":"Privacy Policy","MOBILE_CRASH_REPORTING":"Crash Reporting","MOBILE_ZOOM_TO_FILL":"Zoom To Fill Screen","MOBILE_PASSTHROUGH":"Digital audio output (passthrough)","MOBILE_RUN_LOW_BATTERY":"Run on low battery","MOBILE_RUN_FOREGROUND":"Run as Foreground Service","MOBILE_PERFORMANCE":"PERFORMANCE & STABILITY","MOBILE_SERVER_ONLINE":"Online","MOBILE_SERVER_OFFLINE":"Offline","MOBILE_QR_EXPIRES":"QR Code expires in ","MOBILE_LOG_INTO":"Log in to your Stremio account ","MOBILE_SCAN_QR":"Scan QR code above or go to ","MOBILE_LINK_ACCOUNT":"Link Account","MOBILE_SPEEDPICKER_CANCEL":"Cancel","MOBILE_SPEEDPICKER_LABEL":"Select Playback Speed","MOBILE_EMPTY_LIBRARY":"Your library is empty","MOBILE_NO_ADDON_ACTIVE":"No Stremio addon active for this type.","MOBILE_ORGANIZER_WARNING":"The Stremio Organizer app provides limited functionality. For a list of playable streams and the full Stremio experience, use Stremio on desktop.","MOBILE_ADDON_LOADING":"is still loading","MOBILE_ADDONS_LOADING":"addons are still loading","MOBILE_ADDON":"Addon","MOBILE_CONFIGURE_ADDON":"Configure your addon","MOBILE_CONFIGURE_ADDON_LABEL":"Configure Addon","MOBILE_ORGANIZER_ADDONS_WARNING":"The Stremio Organizer app provides a limited selection of addons. For the full Stremio experience, use Stremio on desktop.","MOBILE_DISCONNECT":"Disconnect","MOBILE_LOOKING_FOR_DEVICES":"Looking for devices...","MOBILE_CAST_TO":"Cast to","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"On","NAVIGATION_OFF":"Off","MARKETING_AGREE":"I agree to receive marketing communications from Stremio","QUIT":"Quit","CONNECTED":"Connected","AUTHENTICATE":"Authenticate","CACHING":"Caching","SETTINGS_CACHING_DRIVE":"Caching drive","ENABLE_LOCAL_FILES_ADDON":"Enable the local files addon (requires restart)","LOCAL_ADDON_NOT_ENABLED":"Local addon is not enabled. Click here to go to the settings and enable it","ENABLE_REMOTE_HTTPS_CONN":"Enable remote HTTPS connections","TORRENT_PROFILE":"Torrent Profile","DATA_CACHING":"Data Caching","MAGNET_PARSING":"Parsing a magnet link","January":"January","February":"February","March":"March","April":"April","May":"May","June":"June","July":"July","August":"August","September":"September","October":"October","November":"November","December":"December","Monday":"Monday","Tuesday":"Tuesday","Wednesday":"Wednesday","Thursday":"Thursday","Friday":"Friday","Saturday":"Saturday","Sunday":"Sunday","Action":"Action","Comedy":"Comedy","War":"War","Family":"Family","Animation":"Animation","Adventure":"Adventure","Fantasy":"Fantasy","Crime":"Crime","Mystery":"Mystery","Romance":"Romance","Drama":"Drama","Horror":"Horror","Thriller":"Thriller","Sci-Fi":"Sci-Fi","Music":"Music","Biography":"Biography","Documentary":"Documentary","Sport":"Sport","Musical":"Musical","Western":"Western","Film-Noir":"Film-Noir","News":"News","History":"History","Game-Show":"Game-Show","Reality-TV":"Reality-TV","Talk-Show":"Talk-Show","Film & Entertainment":"Film & Entertainment","Gaming":"Gaming","From TV":"From TV","Lifestyle":"Lifestyle","Science & Education":"Science & Education","Cooking & Health":"Cooking & Health","Beauty & Fashion":"Beauty & Fashion","Sports":"Sports","News & Politics":"News & Politics","How-to & DIY":"How-to & DIY","Tech":"Tech","Automotive":"Automotive","Causes & Non-Profits":"Causes & Non-Profits","Movies":"Movies","Uk Live Tv":"Uk Live Tv","Fashion":"Fashion","Business News Radio":"Business News Radio","Business Tv":"Business Tv","Cars & Auto":"Cars & Auto","Comedy Radio":"Comedy Radio","Lifestyle Radio":"Lifestyle Radio","News Tv":"News Tv","Food And Wine":"Food And Wine","Latino Tv":"Latino Tv","Shopping Tv":"Shopping Tv","Religion":"Religion","Kids":"Kids","Body & Soul":"Body & Soul","Education":"Education","Indian Tv":"Indian Tv","Extreme Sports":"Extreme Sports","Middle Eastern Tv":"Middle Eastern Tv","Celebrity Tv":"Celebrity Tv","Science Tv":"Science Tv","Bikini babe":"Bikini babe","Outdoors":"Outdoors","German Tv":"German Tv","French Tv":"French Tv","Italian Tv":"Italian Tv","Gamer Tv":"Gamer Tv","Travel":"Travel","Asian Tv":"Asian Tv","Entertainment":"Entertainment","News Radio":"News Radio","Music Radio":"Music Radio","Language Learning":"Language Learning","Science Radio":"Science Radio","Tech Radio":"Tech Radio","Science & Technology Vod":"Science & Technology Vod","new video":"new video","new episode":"new episode","new movie":"new movie","recommended":"recommended","we recommend":"we recommend","offer of the day":"offer of the day","news":"news","music video":"music video","CTX_SHOW_HOTKEYS":"Show hotkeys","CTX_DISMISS_NOTIF":"Dismiss notifications","CTX_DISMISS_ALL":"Dismiss all","CTX_SHARE":"Share","CTX_COPY_SHARE_LINK":"Copy share link","CTX_COPY_MAGNET_LINK":"Copy magnet link","CTX_COPY_STREAM_LINK":"Copy stream link","CTX_DOWNLOAD_VIDEO":"Download this video","CTX_DOWNLOAD_SUBS":"Download subtitles","CTX_VIEW_ON_YOUTUBE":"View on YouTube","CTX_SHOW":"Show","CTX_PLAY":"Play","CTX_PLAY_IN":"Play in","CTX_PLAY_ON":"Play on","CTX_WATCH_ON":"Watch on","CTX_WATCH":"Watch","CTX_WATCHED":"Watched","CTX_WATCH_BEGINNING":"Watch from the beginning","CTX_WATCH_MOBILE":"Watch on a mobile device","CTX_REWIND":"Rewind to beginning","CTX_MARK_WATCHED":"Mark as watched","CTX_MARK_NON_WATCHED":"Mark as non-watched","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"Mark rest as watched","CTX_UNMARK_REST":"Mark rest as non-watched","CTX_RECEIVE_NEW_NOTIF":"Receive new notifications","CTX_REMOVE_CACHE":"Remove from cache","CTX_REMOVE_CACHE_EP":"Remove episode from cache","CTX_OPEN_CONTAINING":"Open containing folder","CTX_REMOVE":"Remove from library","CTX_AVAILABLE_OFFLINE":"Available Offline","CTX_PAUSED":"Paused","CTX_ALWAYS_ON_TOP":"Always on top","CTX_FULLSCREEN":"Fullscreen","CTX_WRONG_SUBS":"Wrong subtitles?","CTX_REPORT_ISSUES":"Report issue","CTX_COPY":"Copy","CTX_PASTE":"Paste","CTX_CLEAR":"Clear","CTX_CLEAR_RECENT_SEARCHES":"Clear recent searches","HELLO_THERE":"Hello There","HOPE_YOU_ENJOY":"We hope you enjoy Stremio and it\'s one of your favourite apps already!","WHO_ARE_WE":"Who are we? We are the team behind it - two guys who work hard every day for the last 3 years to make this product better and better.","SUPPORT_US":"If you enjoy using Stremio, if Stremio is valuable for you - spread the word!","SPREAD_THE_WORD":"Share with your friends now, spread the word about Stremio","MORE_PEOPLE":"The more people use Stremio, the better it will get!","SEND_A_LINK":"Or send a link to our website","TIP_LOCALFILES":"Tip: you can drag & drop local video files into Stremio","ADDON_MY":"My Addons","ADDON_COMMUNITY":"Community Addons","ADDON_OFFICIAL":"Official Addons","ADDON_REPOS":"Addon collections","ADDON_SEARCH":"Search addons","ADDON_INSTALL":"Install","ADDON_CONFIGURE":"Configure","ADDON_UNINSTALL":"Uninstall","ADDON_UPGRADE":"Upgrade","ADDON_INSTALLED":"Installed","ADDON_INSTALLED_MSG":"Addon installed!","ADDON_UPGRADED_MSG":"Addon upgraded!","ADDON_UNKNOWN":"Unknown","ADDON_ERR":"Addon install error!","ADDON_DISCONNECTED":"Disconnected","ADDON_APP_MISSING":"the app for this source is not installed. Do you want to install it now?","ADDON_APP_INSTALL":"Install Now","ADDON_PAGE":"Addon Page","ADDON_TOP_CONTENT":"Best from this Addon","ADDON_PROVIDES":"This addon will give you:","ADDON_WATCH":"Watch #{types} now!","ADDON_WATCH_FREE":"Watch #{types} for FREE now!","ADDON_ADDON":"Addon","ADDON_SUPPORTED_TYPES":"Supported types","ADDON_SUPPORTED_CATALOGS":"Supported catalogs","ADDON_PROVIDES_DISCOVER":"More #{types} in Discover","ADDON_PROVIDES_STREAMS":"Watch #{types}","ADDON_PROVIDES_STREAMS_FREE":"Watch #{types} for FREE","ADDON_PROVIDES_SUBTITLES":"Subtitles for #{types}","ADDON_CANTDETECT":"We couldn\'t detect a running Stremio, so we couldn\'t detect what addons you have installed.","ERR_NO_META":"No information found about this ","ERR_GETTING_META":"Error retrieving information about this.","ERR_CANT_PARSE_MAGNET":"Unable to parse magnet","ERR_NO_MAGNET_INFOHASH":"No valid info hash for magnet","ERR_NO_FILE_PATH":"Unable to send request without a path to file","ERR_NO_TORRENT":"No torrent returned","ERR_NO_SUPPORTERD_FILES":"No supported files found","ERR_OPENING_FILES":"Could not open external files","ERR_INVALID_LINK":"Invalid link","ERR_REGISTERED_ONLY":"This option is available for registred users only.","ERR_CLIPBOARD":"Can not play from clipboard","ERR_CLIPBOARD_READ":"Can not read the clipboard on this platform","ERR_CLIPBOARD_GENERIC":"No playable URL found in the clipboard. Please copy a URL (e.g. a magnet link) to a video.","BOARD_CONTINUE_WATCHING":"Continue watching","BOARD_EXPLANATION_RECOMMENDATIONS":"Movies picked specially for you.<br />This movie is a sample recommendation.","BOARD_EXPLANATION_EPISODES":"New episodes of your favorite Series come here.<br />Add series you follow to your Library.","BOARD_EXPLANATION_VIDEOS":"New episodes of your favorite Channels come here.<br />Add YouTube channels you follow to your Library.","WEBSITE_SLOGAN_WATCH":"Watch Instantly","WEBSITE_SLOGAN_ALL":"All the Video Content You Enjoy in One Place","WEBSITE_SLOGAN_NEW":"All You Can Watch","WEBSITE_SLOGAN_NEW_NEW":"Freedom to Stream","WEBSITE_WATCH_FROM":"Watch from","WEBSITE_DOWNLOAD":"Download Now","WEBSITE_DOWNLOAD_FOR":"Download Now For","WEBSITE_IS_DESKTOP":"Stremio is a desktop application, open this page on your PC and download it","WEBSITE_DESKTOP_DEMO_VID":"Desktop demo","WEBSITE_PAGE_HOME":"Home","WEBSITE_PAGE_FEATURES":"Features","WEBSITE_PAGE_ADDONS":"Addons","WEBSITE_PAGE_TECH":"Technology","WEBSITE_PAGE_CREATE_ADDON":"Create Addon","WEBSITE_PAGE_CONTACTS":"Contacts","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Movies","WEBSITE_TYPE_series_PL":"Series","WEBSITE_TYPE_tv":"Live TV","WEBSITE_TYPE_channel":"Channels","WEBSITE_STREMIO_WHAT_IS":"Stremio is an app that helps you organize and instantly watch your favorite videos, movies, TV series and TV channels.","WEBSITE_FEATURES_WATCH":"Watch Instantly in HD","WEBSITE_FEATURES_WATCH_DETAIL":"Click and play your favourite movies, TV Shows, videos and TV channels.","WEBSITE_FEATURES_SUBS":"Automatic Subtitles","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio automatically picks synced subtitles for your language.","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"Play on TV & mobile devices","WEBSITE_FEATURES_CAST_DETAIL":"Cast to AppleTV, Chromecast, Smart TV (DLNA/UPnP) and mobile devices.","WEBSITE_LIB":"Enjoy Your Personal Library Synced on All Your Devices","WEBSITE_LIB_COLLECT":"Collect from Stremio","WEBSITE_LIB_IMPORT":"Import from Facebook","WEBSITE_LIB_LOCAL":"Add from your local drive","WEBSITE_BOARD":"The Board - Your one-stop place for Notifications and Recommendations","WEBSITE_BOARD_RECOMMEND":"Recommended TV Show","WEBSITE_BOARD_TRENDING":"Trending Movie","WEBSITE_BOARD_NEW":"New Video","WEBSITE_BOARD_EPISODE":"New Episode","WEBSITE_BOARD_1":"Looking for something interesting to watch? Get recommendations based on your taste!","WEBSITE_BOARD_2":"Get notified when a new episode of your favourite TV show or YouTube channel is out!","WEBSITE_BOARD_YOUTUBE":"New videos of YouTube channels","WEBSITE_BOARD_EPISODES":"New episodes of series you follow","WEBSITE_ADDONS":"Content Addons","WEBSITE_TECH_DETAIL":"We love technology, we love mad science!\\nStremio is using the following open source technologies:","WEBSITE_TECH_WCJS":"WebChimera.js allows Stremio to play any video format with good performance.","WEBSITE_TECH_WCJS_EXTRA":"We are core project contributors","WEBSITE_TECH_ELECTRON":"Electron provides an innovative platform to build Stremio with.","WEBSITE_TECH_ELECTRON_EXTRA":"We are project contributors","WEBSITE_TECH_LINVODB":"A database technology that ensures your data is organized and available anywhere you login.","WEBSITE_TECH_LINVODB_EXTRA":"In-house technology","WEBSITE_CREATE_ADDON":"Create your addon","WEBSITE_CREATE_ADDON_DETAIL":"Do you have a service providing video content? We\'ll help you benefit from Stremio\'s features by creating your Addon.","WEBSITE_CREATE_ADDON_BENEFITS":"Benefits of Creating an Addon for Stremio","WEBSITE_P2P_BEAUTY":"The Beauty of Peer-to-Peer Streaming","WEBSITE_P2P_1":"Reliable and affordable full HD / 4K video on demand or live streaming","WEBSITE_P2P_2":"Distribution platform providing great user experience","WEBSITE_P2P_3":"We will create an addon meeting your exact needs","WEBSITE_P2P_CONTACT":"Interested? You are welcome to <a href=\'mailto:office@stremio.com\'>contact us</a>.","WEBSITE_P2P_CONTACT_EXTRA":"We will be happy to help you integrate your content with Stremio!","WEBSITE_P2P":"Once in a while, there comes a technology that changes the name of the game. We invested tons of time and effort in building our Peer-to-Peer (P2P) video streaming engine that provides great performance and versatility to adapt with any use case.\\nContact us for DRM-enabled P2P video on demand or live streaming.","WEBSITE_THOUGHTS":"Thoughts we share:","WEBSITE_SPREAD":"Spread the word about Stremio:","WEBSITE_CONTACT":"Contact us, we\'ll be happy to hear from you!","WEBSITE_OPENSOURCE":"For our open source projects, go to our","WEBSITE_BITCOIN":"Donate bitcoin:","WEBSITE_FAQ":"Frequently asked questions","WEBSITE_FAQ_SHORT":"FAQ","WEBSITE_QUESTIONS":"Questions","WEBSITE_TOS":"Terms of use","WEBSITE_LEGAL":"Legal","WEBSITE_PAGE_ABOUT":"About","WEBSITE_PAGE_BECOME_PARTNER":"Become a partner","WEBSITE_ALL_YOU_CAN_WATCH":"Freedom To Watch\\nEverything You Want.","WEBSITE_FREEDOM_TO_STREAM":"Freedom to Stream","WEBSITE_WHAT_IS_STREMIO":"What is stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio is a one-stop hub for video content aggregation. Discover, organize and watch video from all kind of sources on any device that you own.","WEBSITE_WHAT_IS_STREMIO_P2":"Movies, TV shows, series, live television or web channels like YouTube and Twitch.tv - you can find all this on Stremio.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio is a modern media center that\'s a one-stop solution for your video entertainment. You discover, watch and organize video content from easy to install addons.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Movies, TV shows, live TV or web channels - find all this on Stremio.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Enjoy on all your Media devices","WEBSITE_DEVICES_COLLECT":"Collect from Stremio","WEBSITE_DEVICES_IMPORT_FB":"Import from facebook","WEBSITE_DEVICES_LOCAL":"Add from local drive","WEBSITE_JOIN_THE_PARTY_NOW":"Join the party now","WEBSITE_DEVICES_ALL":"Easy to use on all your devices;","WEBSITE_EXTENDABLE_CATALOG":"Infinitelly extendable video catalog;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Great features to organize your media;","WEBSITE_AS_SEEN_ON":"As seen on","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"About us","WEBSITE_LINK_TECHNOLOGY":"Technology","WEBSITE_LINK_APPS":"Apps","WEBSITE_LINK_DOWNLOADS":"Downloads","WEBSITE_MORE":"More","WEBSITE_LINK_ADDONS":"Addons","WEBSITE_LINK_ADDON_SDK":"Addon SDK","WEBSITE_LINK_CONTRIBUTE":"Contribute","WEBSITE_LINK_COMMUNITY":"Community","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... & More","WEBSITE_LINK_HELP":"Help center","WEBSITE_LINK_CONTACTS":"Business inquiries","WEBSITE_LINK_TOS":"Terms & conditions","WEBSITE_LINK_PRAVACY":"Privacy policy","WEBSITE_SUBSCRIBE":"Subscribe","WEBSITE_NEWSLETTER":"Join Our Newsletter for amazing stuff","WEBSITE_PLACEHOLDER_EMAIL":"Your Email","WEBSITE_COMMUNITY":"Community","WEBSITE_LINK_PRAVACY_LEGAL":"Privacy & legal","WEBSITE_WHY":"Why we do it","WEBSITE_WHY_P1":"At Stremio, we come to work every day because we want to solve an important problem for the video-on-demand industry. There’s so much new content published every minute that it’s virtually impossible to find your way around it.","WEBSITE_WHY_P2":"We help people navigate that huge world of video entertainment and discover new content to enjoy. Our apps bring together movies, series, live TV, web channels, and more. We are dedicated to making it incredibly easy for users to find titles and broadcasters that they love.","WEBSITE_WHY_P3":"You can use our service on any device and at any time, making Stremio the only video entertainment hub you’ll ever need.","WEBSITE_TEAM":"TEAM","WEBSITE_TEAM_P":"The Stremio team is small but powerful: between the ten of us, we code in X languages, and share expertise in software development, UI and UX design, marketing and advertising, and business and startups.","WEBSITE_FEATURES":"Features","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Discover new content with ease","WEBSITE_FEATURES_DISCOVER_P":"Easily discover new movies, TV shows, series and channels to watch. Browse by category, genre, rating, recency, etc. or simply type a name to find. Stremio makes finding new video content a piece of cake.","WEBSITE_FEATURES_ALL_CONTENT":"All of your video content on one screen","WEBSITE_FEATURES_ALL_CONTENT_P1":"See what movies, series or videos you didn’t finish and continue watching them; get notified for new episodes and releases; and browse through the recommendations you will get based on your viewing habits.","WEBSITE_FEATURES_LIBRARY":"Organize your video library","WEBSITE_FEATURES_LIBRARY_P1":"Add any title to your Stremio library with a single click and find your way around your content, neatly arranged by type, recency, or alphabetical order.","WEBSITE_FEATURES_CALENDAR":"Keep track of everything you watch","WEBSITE_FEATURES_CALENDAR_P1":"Get a calendar visualization of all the movies and series you add to your library. Export your Stremio calendar and sync it so you always know when a new episode or a premier is due.","WEBSITE_FEATURES_BIG_SCREEN":"Enjoy your video content on a bigger screen","WEBSITE_FEATURES_BIG_SCREEN_P1":"Cast whatever you are watching to another device - be it a phone, tablet or a TV with a single click.","WEBSITE_FEATURES_SOURCES":"Watch video from many different sources","WEBSITE_FEATURES_SOURCES_P":"Install official and community addons to enjoy video sourced from many different providers - all in one sleek, easy to use app.","WEBSITE_CREATE_AN_ADDON":"Create an addon","WEBSITE_FEATURES_SYNC":"Sync your library across different devices and resume your playback","WEBSITE_FEATURES_SYNC_P1":"Login with your account across all your devices and enjoy your library, addons, playback and calendar synchronized.","WEBSITE_FEATURES_EXTENDABLE":"Extendable video catalog by addons","WEBSITE_FEATURES_EXTENDABLE_P1":"The Stremio addon catalog provides a number of addons to install and watch a variety of video content from. This includes movies, shows, live TV, sport, news, podcasts, web channels, video games and more.","WEBSITE_FEATURES_AUTO_SUBS":"Automatic subtitles","WEBSITE_FEATURES_AUTO_SUBS_P1":"With our subtitle addons you get automatically selected options for your preferred language.","WEBSITE_FEATURES_CHROMECAST":"Casting to Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"Enjoy your video content on a bigger screen or just cast whatever you are watching to another device.","WEBSITE_FEATURES_KEEP_TRACK":"Keep track of your favorite TV shows and Web channels","WEBSITE_FEATURES_KEEP_TRACK_P1":"Get a calendar visualization and notifications for new episodes of your favorite series and web channels.","WEBSITE_FEATURES_POWER_USER":"Power user features","WEBSITE_FEATURES_POWER_USER_P1":"Play in external player","WEBSITE_FEATURES_POWER_USER_P2":"Play from a torrent file or magnet link","WEBSITE_FEATURES_POWER_USER_P3":"Import to your library from Facebook likes or local disk","WEBSITE_ADD_ONS":"Addons","WEBSITE_ADD_ONS_P1":"All of the video content Stremio provides get sourced through an addon system - no content or content provider has been built into the app.","WEBSITE_ADD_ONS_P2":"There are two groups of addons available: official and community addons.","WEBSITE_ADD_ONS_P3":"The official ones are developed and hosted by Stremio, whereas community addons are created by our community members, who also host them.","WEBSITE_ADDONS_OFFICIAL":"Official addons","WEBSITE_ADDONS_WATCHUB":"Stream your favourite movies, series and shows from providers like iTunes, Hulu, Amazon and other UK/US services.","WEBSITE_ADDONS_YOUTUBE":"Watch your favourite YouTube channels ad-free and get notifications for new uploads from the contributors you follow.","WEBSITE_ADDONS_FILMON":"Watch live TV, movies and social television for free. 600 TV channels, 45,000 free movies, documentaries and more.","WEBSITE_ADDONS_OPENSUBTITLES":"Movie and TV subtitles in multiple languages, thousands of translated subtitles uploaded every day.","WEBSITE_ADDONS_COMMUNITY":"Community addons","WEBSITE_ADDONS_FILMON_VOD":"Watch video on demand from Filmon.tv","WEBSITE_ADDONS_TWICH":"Watch live streams from Twitch.tv - a video streaming platform for the e-sports industry.","WEBSITE_ADDONS_VODO":"Watch indie movies absolutely free of charge.","WEBSITE_ADDONS_NETFLIX":"Watch Netflix movies and web series.","WEBSITE_ADDONS_CREATE":"Create an addon","WEBSITE_ADDONS_CREATE_P1":"If you wish, you can develop your own addon. This way, you can give yourself and our community access to new video content, and reach a new, targeted audience of millions of users around the world.","WEBSITE_ADDONS_START_CREATE":"To get started, visit the Stremio Addon SDK page:","WEBSITE_DOWNLOADS":"Downloads","WEBSITE_DOWNLOADS_P1":"For optimal performance, we recommend that you use the latest available version of the Stremio apps. If for some reason, however, you would like to use an older version, you can download it here.","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS (limited version)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Contribute","WEBSITE_CONTRIBUTE_P1":"The Stremio platform is open source and you can easily create an addon for content that is currently not sourced.","WEBSITE_CONTRIBUTE_WHY":"Why should you create an addon?","WEBSITE_CONTRIBUTE_WHY_P1":"Reach new audience for your video content","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio’s user base is growing rapidly - within the first year of the launch, Stremio had gained 1 million users around the world, and in the second year of the platform’s existence this number grew to 2.5 million.","WEBSITE_CONTRIBUTE_WHY_P3":"With your addon, you can easily reach this audience and distribute your video content to them.","WEBSITE_CONTRIBUTE_ALL":"Watch your favourite movies, videos, series and channels in one single place.","WEBSITE_CONTRIBUTE_ALL_P1":"You’re a fan of a particular type of content not available on Stremio yet? Create an addon for it and enjoy watching your favourite videos in one of the largest and easiest to use entertainment hubs on the market.","WEBSITE_CONTRIBUTE_ALL_P2":"On top of that, you’ll get the endless gratitude of other like-minded Stremio community members.","WEBSITE_CONTRIBUTE_MONETIZE":"Monetize your addon and earn money with its help","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Once you develop a new addon for Stremio, you can easily monetize it through a number of different ways. If you are considering this, feel free to get in touch with us at ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" - we would be happy to consult and advise you about addon monetization options.","WEBSITE_CONTRIBUTE_TRANSLATE":"Become a volunteer translator","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"If you want to enjoy the Stremio apps in different languages, you can join our community of volunteer translators. They help us add versions of the Stremio in many different languages.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Are you eager to get started?","WEBSITE_TRANSALTE_STREMIO":"Translate Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Official communities","WEBSITE_COMMUNITY_OFFICIALS_P1":"Become a part of the growing Stremio community. Follow us on social media and don’t be shy to say hello - we love hearing from our fans! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Unofficial communities","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Partners and supporters","WEBSITE_COMMUNITY_GOODIES":"Stremio goodies","WEBSITE_COMMUNITY_WALLPAPERS":"Wallpapers","WEBSITE_COMMUNITY_ART":"Community Art Gallery","WEBSITE_LINK_ART":"Community art gallery","WEBSITE_CONTACT_US":"Contact us","WEBSITE_CONTACT_US_P1":"If you have any questions, comments or suggestions, feel free to get in touch with us through the contact form below.","WEBSITE_CONTACT_US_P2":"Keep in mind that we are located in Bulgaria so there may be a delay in addressing your query due to time zone differences.","WEBSITE_CONTACT_US_SUCCESS":"Your message has been sent. We will get back to you at our earliest convenience.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Please enter a valid email!","WEBSITE_CONTACT_US_Q_RELATED_TO":"What is your question related to?","WEBSITE_CONTACT_US_Q_OS":"What is your Operation System?","WEBSITE_CONTACT_US_PH_EMAIL":"Your E-mail","WEBSITE_CONTACT_US_PH_MESSAGE":"Message","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"SEND","WEBSITE_CONTACT_US_Q_1":"How to install?","WEBSITE_CONTACT_US_Q_2":"How to uninstall?","WEBSITE_CONTACT_US_Q_3":"(HTML) How to make lasagna?","WEBSITE_CONTACT_US_Q_4":"Addons","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Technology","WEBSITE_TECHNOLOGY_P1":"We love technology and mad science. </br> Here is what powers Stremio (it’s all open-source).","WEBSITE_TECHNOLOGY_P_QT":"Cross-platform software development at its best.","WEBSITE_TECHNOLOGY_P_MPV":"A free, open source, and cross-platform media player.","WEBSITE_TECHNOLOGY_P_RN":"React Native lets you build mobile apps using only JavaScript.","WEBSITE_TECHNOLOGY_P_VLC":"Media framework embedded into application to get multimedia.","WEBSITE_TECHNOLOGY_P_REALM":"Realm is a mobile platform and a replacement for SQLite & Core Data.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js is an open-source, cross-platform, JavaScript runtime environment.","WEBSITE_TECHNOLOGY_P_RUST":"Rust is a multi-paradigm system programming language focused on safety, especially safe concurrency.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Contribute to the project","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"There are two ways you can contribute to Stremio and help us make the product even better.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"You can donate your valuable language skills by translating the platform...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"or","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... you can employ your coding skills for creating community addons. ","WEBSITE_TRANSLATE_STREMIO":"Translate Stremio","WEBSITE_404_OH_NO":"Uh-oh! The page you’re looking for is not here...","WEBSITE_GO_HOME":"Go home","WEBSITE_LINK_OTHER_DOWNLOADS":"Other downloads","WEBSITE_FAQ_ABR":"FAQ","WEBSITE_SUPPORT":"Support","WEBSITE_DOWNLOAD_4_0_BETA":"Download Stremio 4 beta Now","WEBSITE_GET_FOR_DESKTOP":"Get for desktop","WEBSITE_LINK_ADDON_COMPETITION":"Addon competition","WEBSITE_LINK_ART_CONTEST":"Art contest","WEBSITE_MY_ACCOUNT":"My account","WEBSITE_MAINPAGE_FAQ_001_H1":"What is Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio is a modern media center that gives you the freedom to watch everything you want.","WEBSITE_MAINPAGE_FAQ_002_H1":"How does it work?","WEBSITE_MAINPAGE_FAQ_002_P1":"Once you install Stremio on your device and create an account, all you have to do is to visit the addon catalog and install any addon you want, and you\'re good to go!","WEBSITE_MAINPAGE_FAQ_002_P2":"After that, you can go to the Discover or Board sections to start exploring content.","WEBSITE_MAINPAGE_FAQ_003_H1":"What can I watch here?","WEBSITE_MAINPAGE_FAQ_003_P1":"A lot: Movies, TV shows, Web channels, Sport, TV channels, listen to Podcasts and more. Thanks to our addon system, you can access a variety of content.","WEBSITE_MAINPAGE_FAQ_004_H1":"Is Stremio open-source?","WEBSITE_MAINPAGE_FAQ_004_P1":"Yes, you can check the following links: ${1}desktop app${2} and ${3}GitHub organization${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Is Stremio safe?","WEBSITE_MAINPAGE_FAQ_005_P1":"Yes: because it is open-source software, the code is publically auditable and you can review it yourself.","WEBSITE_MAINPAGE_FAQ_006_H1":"How about my privacy?","WEBSITE_MAINPAGE_FAQ_006_P1":"We respect users\' privacy and do not collect any personal data besides the essential minimum to create and sync your account.","WEBSITE_MAINPAGE_FAQ_006_P2":"There is also a ${1}Guest mode${2} at signup, which requires no data whatsoever: in this mode, no calls are made to our backend. However, it comes at the expense of useful features, such as being able to sync your library across devices.","WEBSITE_MAINPAGE_FAQ_007_H1":"Can I cast to my TV?","WEBSITE_MAINPAGE_FAQ_007_P1":"Yes, we support Chromecast and you can cast both from desktop and mobile apps (Android).","WEBSITE_MAINPAGE_FAQ_008_H1":"How many addons does Stremio have?","WEBSITE_MAINPAGE_FAQ_008_P1":"As of late 2019, over 50 - for more information, check our addon catalog.","WEBSITE_MAINPAGE_FAQ_009_H1":"Can Stremio be extended beyond what\'s in the addon catalog?","WEBSITE_MAINPAGE_FAQ_009_P1":"Yes, you should check those: ${1}PimpMyStremio${2}, ${3}Reddit communities${4}, ${5}Stremio Downloader${6}, etc.","WEBSITE_MAINPAGE_FAQ_010_H1":"What devices does Stremio support?","WEBSITE_MAINPAGE_FAQ_010_P1":"We have desktop apps for Windows, Mac and Linux. For mobile, we support Android and iOS, although keep in mind that the iOS is limited in functionality (does not support most addons).","WEBSITE_MAINPAGE_FAQ_010_P2":"There are many Android-based devices which you can run Stremio on, like NVIDIA Shield and Amazon Fire Stick, but we do not support them officially.","WEBSITE_MAINPAGE_FAQ_011_H1":"Can you add certain content to Stremio?","WEBSITE_MAINPAGE_FAQ_011_P1":"Sorry, we provide no content ourselves, but the more Stremio addons you have installed, the more content you will be able to find.","WEBSITE_MAINPAGE_FAQ_012_H1":"Can Stremio play magnet links?","WEBSITE_MAINPAGE_FAQ_012_P1":"Yes, and it can also play normal HTTP links and torrent files (drag and drop).","WEBSITE_MAINPAGE_FAQ_013_H1":"Can I download a video and watch offline?","WEBSITE_MAINPAGE_FAQ_013_P1":"Available offline is an upcoming feature, but if you allow Stremio to cache on your device (from the settings panel) you can watch the videos later without a connection.","WEBSITE_MAINPAGE_FAQ_014_H1":"Nothing works, help me!","WEBSITE_MAINPAGE_FAQ_014_P1":"Are you sure you have installed addons? If yes, check with our ${1}help center${2}.","WEBSITE_MAINPAGE_FAQ_015_H1":"How does Stremio sustain it\'s development operations?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"For more questions, go to our ${1}help center${2}.","HELP_LEARN_MORE":"Help us learn more about you.","LIFESTYLE":"Lifestyle","SPORTS":"Sports","FOOD_HEALTH":"Food & health","BEAUTY_FASHION":"Beauty & Fashion","NEWS":"News","GAMING":"Gaming","SCIENCE_EDUCATION":"Science & education","MUSIC":"Music","TRAVEL":"Travel","LATE_NIGHT":"Late Night","REALITY":"Reality","COMEDY":"Comedy","DIY":"How to DIY","TECH":"Tech","CINEMA":"Cinema","CONTINUE":"Continue","SLOW_LOADING":"SLOW LOADING?","I_GIVE_UP":"I GIVE UP","LEARN_MORE":"Learn more","POOR_SOURCE":"This source is poorly available or your internet connection is not fast enough","PICK_CATEGORIES_ERR":"You have to pick at least 3 categories","ADJUST_TIMING":"Adjust timing with ","ADJUST_SIZE":"Adjust size with ","SEARCH_ANYTHING":"You Can Search Anything...","ALL_CATEGORIES":"All","SEARCH_CATEGORIES":"Movies, Series, YouTube & TV","SEARCH_PERSONS":"Actors, Directors & Writers","SEARCH_PROTOCOLS":"HTTP & Magnet Links","SEARCH_TYPES":"IMDB / TVDB links","WATCHED":"Watched","SHOW_LESS":"Show less","LAST_SEARCHES":"Last searches","CLEAR_HISTORY":"Clear history","CHOOSE_SOME":"CHOOSE SOME OF THIS:","NO_WEB_REMOTE":"Web Remote could not be loaded","STREMIO_OFFLINE":"Stremio is offline","STREMIO_EXPENSIVE_CONNECTION":"We\'ve detected that you are using a mobile data connection, do you want to continue?","USE_DATA":"Use data","WARNING":"Warning","MORE_INFO":"More Info ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Loading ...","STREMIO_TV_BACK_TO_LANGUAGES":"Back to languages","STREMIO_TV_REMOTE":"Remote","STREMIO_TV_GO_TO":"Go to:","STREMIO_TV_OR_SCAN":"or scan:","STREMIO_TV_ADDON_INSTRUCTIONS":"Please follow the instructions in order to install your preferred addons.","STREMIO_TV_LIVE_TV":"Live TV","STREMIO_TV_RESUME_WATCHING":"Resume Watching","STREMIO_TV_LOADING_BACKGROUND":"Loading Background","STREMIO_TV_CHECKING_AUTHENTICATION":"Checking Authentication","STREMIO_TV_LOADING_BOARD":"Loading Board","STREMIO_TV_LOGIN_HEADER_LINE_1":"We want our users to have the best possible personalized experience with our software.","STREMIO_TV_LOGIN_HEADER_LINE_2":"It is for this reason that we kindly ask you to make and/or login to your account.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Thank you for understanding,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"The Stremio Team","STREMIO_TV_REMOTE_INSTRUCTIONS":"In order to use the Web Remote with your Smartphone / Tablet / Desktop:","STREMIO_TV_WIFI_SETUP":"Wi-Fi Setup","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle did not detect a internet connection.","STREMIO_TV_WIFI_DETAILS_1":"Connect to:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Use password:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Open a web browser with the link:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Default","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"By Last Watched","STREMIO_TV_LIBRARY_SORT_NAME":"By Name","STREMIO_TV_LIBRARY_TIMES_WATCHED":"By Times Watched","STREMIO_TV_DETAILS_SEASON_NUMBER":"Season ${1}","STREMIO_TV_STREAMS_LOADING":"Loaded ${1} / ${2} addons...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} addon is still loading...","STREMIO_TV_PLAYER_SETTINGS":"Player settings","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Subtitles delay","STREMIO_TV_PLAYER_AUDIO_DELAY":"Audio delay","STREMIO_TV_PLAYER_VIDEO_SCALING":"Video scaling","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Unsupported stream source","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Failed opening external link","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"Play with ExoPlayer","STREMIO_TV_PLAYER_PLAY_IN_VLC":"Play with libVLC player","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Switching to libVLC player due to a playback error","STREMIO_TV_ADDONS_TITLE":"Use Stremio on your Phone or PC to install or configure addons and press \\"Sync Addons\\"","STREMIO_TV_ADDONS_SUBTITLE":"Note: make sure you are using the same Stremio account","STREMIO_TV_ADDONS_SYNC_ADDONS":"Sync Addons","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Addons successfully synchronized","STREMIO_TV_ADDONS_SYNC_FAILED":"Failed to synchronize addons","STREMIO_TV_META_LINK_FAILED":"Failed opening meta link","STREMIO_TV_CATALOG_LOADING":"Catalog still loading...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Interface language updated","STREMIO_TV_SETTINGS_THEME_UPDATED":"Theme updated","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Preferred Language","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"Secondary Preferred Language","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tunnelled Playback","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Possible playback issues on some devices","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Some video formats might not work","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"No caching","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Default","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Soft","STREMIO_TV_SETTINGS_PROFILE_FAST":"Fast","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Ultra Fast","STREMIO_TV_SETTINGS_SERVER_URL":"Streaming server url","STREMIO_TV_SETTINGS_SERVER_VERSION":"Server version","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Unknown","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio version","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Edit server url","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Enter a streaming server url","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"To read Stremio\'s Privacy Policy, visit:","STREMIO_TV_SETTINGS_TOS_TEXT":"To read Stremio\'s Terms and Conditions, visit:","STREMIO_TV_NAV_SEARCH":"Search","STREMIO_TV_NAV_HOME":"Home","STREMIO_TV_NAV_DISCOVER":"Discover","STREMIO_TV_NAV_LIBRARY":"Library","STREMIO_TV_NAV_MOVIES":"Movies","STREMIO_TV_NAV_SERIES":"Series","STREMIO_TV_NAV_CHANNELS":"Channels","STREMIO_TV_NAV_TV":"Live TV","STREMIO_TV_NAV_SETTINGS":"Settings","STREMIO_TV_NAV_ADDONS":"Addons","STREMIO_TV_LOGIN_TITLE":"Link Account","STREMIO_TV_LOGIN_EXPIRES_IN":"Expires in","STREMIO_TV_LOGIN_STEP_ONE":"Scan QR Code above or go to","STREMIO_TV_LOGIN_STEP_TWO":"Log in to your Stremio account","STREMIO_TV_LOGIN_NEW_LINK":"Request a new link","STREMIO_TV_LOGIN_LINK_REFRESHED":"Login code refreshed","STREMIO_TV_SEARCH_PLACEHOLDER":"Type something","STREMIO_TV_SEARCH_NO_ADDONS":"No addons were requested for catalogs!","STREMIO_TV_SEARCH_BUTTON":"Search","STREMIO_TV_SEARCH_KEY_DEL":"Del","STREMIO_TV_SEARCH_KEY_SPACE":"Space","STREMIO_TV_SEARCH_KEY_CLEAR":"Clear","STREMIO_TV_SEARCH_HISTORY_TITLE":"Search History","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"You can search for Titles, Actors, Channels and more...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Clear Search History","STREMIO_TV_FILTERS_DESCRIPTION":"Choose from one of the filters below","FILTERS":"Filters","SETTINGS":"Settings","ACCOUNT":"Account","LOGOUT":"Logout","THEMES":"Themes","PLAYBACK":"Playback","PLAYBACK_SPEED":"Playback Speed","AUDIO_TRACKS":"Audio Tracks","VIDEOS":"Videos","SERVER":"Server","LINKS":"Links","ABOUT":"About","INTERFACE":"Interface","ANIMATIONS":"Animations","STATUS":"Status","LANGUAGE":"Language","SIZE":"Size","DELAY":"Delay","BOLD":"Bold","TEXT_COLOR":"Text Color","OUTLINE_COLOR":"Outline Color","BACKGROUND_COLOR":"Background Color","BACKGROUND_BLUR":"Background Blur","SEEK_TIME_DURATION":"Seek Time Duration","AUTO_PLAY":"Auto-Play Next Episode","PLAY_NOW":"Play Now","MARK_AS_WATCHED":"Mark as Watched","MARK_AS_UNWATCHED":"Mark as Unwatched","REWIND_TO_BEGINNING":"Rewind to Beginning","CONTINUE_WATCHING":"Continue Watching","ALL":"All","SECONDS":"seconds","ON":"ON","OFF":"OFF","RELOAD":"Reload","EDIT_URL":"Edit URL","NONE":"None","EMBEDDED":"Embedded","REMOTE_SWITCH_DEVICES":"Switch Devices","REMOTE_VIDEOS":"Videos","REMOTE_ADJUST_TIMING":"Adjust timing","REMOTE_ADJUST_SIZE":"Adjust size","REMOTE_COULD_NOT_BE_LOADED":"Web Remote could not be loaded","REMOTE_RETRY":"Retry","TORRENT_PROFILE_DEFAULT":"Default","TORRENT_PROFILE_SOFT":"Soft","TORRENT_PROFILE_FAST":"Fast","TORRENT_PROFILE_ULTRA_FAST":"Ultra Fast","FAQ_001_H1":"What is Stremio?","FAQ_001_P1":"Stremio is a media center software designed for video entertainment with ease of use in mind. Stremio allows you to organize & watch your own collection of movies, series, channels and live TV.","FAQ_001_P2":"Stremio collect the content it shows you from your local disk and our addons system.","FAQ_001_P3":"It will also notify you when new episodes/videos/movies you\'re interested in come out, and provide movie recommendations for you.","FAQ_02_H1":"How does Stremio compare to Kodi and Plex?","FAQ_02_P1":"We are inspired by those two pieces of software. But we have different goals - Stremio is specifically targeted towards entertainment video, and strives to become the mainstream solution for that by being very easy to use.","FAQ_02_P2":"Stremio will never be as customizable and feature-rich as Kodi and Plex, but it is significantly easier to use. Just ${1} get it and see ${2} :)","FAQ_03_H1":"How does Stremio compare to Netflix?","FAQ_03_P1":"Again, Netflix is one of our inspirations. We strive to achieve the user experience of Netflix, plus a lot of added goodies. But most importantly, we\'re giving you the freedom to manage your own library and add new content sources with our addon system.","FAQ_03_P2":"That makes Stremio infinitely extendable, so when you use Stremio, you\'re never limited to the content Netflix decides to license. For example, through Stremio you can watch content from ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} and even ${9}Netflix${10} itself!","FAQ_04_H1":"How does Stremio compare to Flipboard?","FAQ_04_P1":"We don’t get that question that often, except when talking to start-up people :)","FAQ_04_P2":"Stremio is by design a content aggregator, which essentially makes it Flipboard for video. This is very apparent in our Board section, which gives you catalogues and new episode/new video notifications for what you follow, just like Flipboard.","FAQ_05_H1":"How does Stremio compare to Popcorn Time?","FAQ_05_P1":"Stremio and Popcorn Time are similar in user interface, because there aren’t many ways to do video entertainment catalogues right :)","FAQ_05_P2":"But while Popcorn Time is focused on streaming torrents from specific sources, Stremio is unrestricted and is merely a content aggregator - it’s not locked into a specific content source.","FAQ_05_P3":"Furthermore, we do not provide any torrent addons by default, so Stremio does not cover the Popcorn Time use-case with official functionality.","FAQ_05_P4":"Another notable difference is that Popcorn Time is completely open source, while Stremio is ${1} partially open source${2}.","FAQ_06_H1":"Will you add this movie/series?","FAQ_06_P1":"No, sorry :(","FAQ_06_P2":"As is mentioned in most of the other questions, Stremio does not provide any content by itself - everything is added through the addons system. In case you have a content request, you can use the “Report” button in the Player, which will send an email to the author of the addon you’re currently using.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"Will you create addon for X?","FAQ_08_P1":"It\'s entirely possible.","FAQ_08_P2":"If you have an idea for an addon, drop us a line at ${1}office@stremio.com${2}, but please make sure your addon idea will not infringe on any copyrights or terms of use.","FAQ_08_P3":"At the moment, the next things on our roadmap are addons for FandangoNOW, Filmon.tv video on demand and Crunchyroll.","FAQ_09_H1":"Does Stremio use BitTorrent?","FAQ_09_P1":"Yes, Stremio supports BitTorrent as a streaming protocol. You can use that either with a torrent addon, or by drag-and-dropping a .torrent file into Stremio, or by pasting a magnet link into the Search Bar.","FAQ_09_P2":"Please note that the only official addon using BitTorrent is ${1}Vodo${2}, which provides indie content, all permitted to be distributed with BitTorrent.","FAQ_09_P3":"We do not support use of any third-party addons which may enable copyright infringement.","FAQ_10_H1":"What can I watch in Stremio with the official addons?","FAQ_10_P1":"By default, you can watch Filmon.tv, YouTube and Vodo content within Stremio itself, with it’s embedded player. Additionally, we have an addon for Twitch.tv and a few others.","FAQ_10_P2":"This combined provides a selection of:","FAQ_10_L1":"Popular TV channels, provided by Filmon.tv - for example E4, BBC, Bollyworld TV","FAQ_10_L2":"Everything from YouTube - for example BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Indie movies with Vodo","FAQ_10_L4":"Online gaming broadcasts with Twitch.tv","FAQ_10_P3":"Additionally, there are many content sources provided with Guidebox and the Netflix addons, which <b>do not</b> play entirely inside Stremio, but would redirect to the given service. For example, the Guidebox addon would give you a selection of movies you can stream in the US for free, from services like TubiTV and Crackle.","FAQ_11_H1":"Stremio won\'t install, what should I do?","FAQ_11_P1":"If you\'re on Windows, try ${1}this alternative installer${2}.","FAQ_11_P2":"If you\'re on Mac OS X, please be aware that we don\'t support anything older than OS X Mavericks (10.9).","FAQ_11_P3":"If you\'re on Linux, be aware that we only support 64 bit (x64) Linux at the moment.","FAQ_11_P4":"If you still can\'t resolve your problem, please write us at our ${1}Facebook group${2}.","FAQ_12_H1":"Why does my anti-virus complain? Is Stremio safe?","FAQ_12_P1":"We assure you Stremio is ${1}100% clean${2}.","FAQ_12_P2":"Your antivirus is complaining because we include advertising in our installer, which some anti-virus programs recognize as ad-ware.","FAQ_12_P3":"If you\'re still unsure, you can try our ${1}alternative installer${2}.","FAQ_13_H1":"How can I make an addon?","FAQ_13_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_13_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_13_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_14_H1":"How are addons published?","FAQ_14_P1":"When you create an addon and host, and put a <b>endpoint</b> field in your manifest, which points to a working addon address, the addon will automatically publish itself to our ${1}Addon catalogue${2}.","FAQ_14_P2":"This happens because the server part of the stremio-addons module automatically makes a call to our API to announce the addon. When our API validates your <b>endpoint</b> as a valid addon, it will start showing in the catalogue.","FAQ_15_H1":"Can I run Stremio in my browser?","FAQ_15_P1":"Not at the moment, but this is coming!","FAQ_15_P2":"If you\'re curious to see an Alpha, you can see it here: ${1}alpha4.strem.io${2}. Keep in mind streaming is disabled on this alpha. We support Chrome, Firefox, Opera and Edge.","FAQ_16_H1":"Casting to TV doesn\'t work / subtitles don\'t work","FAQ_16_P1":"Casting to TV uses the DLNA technology which is very inconsistent between different TV brands and models. For that reason, we do not have the ability to test it in every case, so it\'s far from perfect. Despite this, we\'re working on improving it constantly but we cannot give you a time estimate on when DLNA will start working properly with your TV.","FAQ_16_P2":"If you don\'t even see your TV in the casting menu, please try disabling your network connection and re-enabling it (on Windows, right click the Network and use Enable/Disable), as well as restarting your router, TV and PC.","FAQ_16_P3":"If you are still encountering issues, you can help us by sending your TV brand and model information at ${1}office@stremio.com${2}.","FAQ_16_P4":"In the meantime, we recommend Chromecast, which we support very well, or simply plugging in your TV to your PC with an HDMI cable.","FAQ_17_H1":"Stremio freezes and/or crashes, what can I do?","FAQ_17_P1":"First of all, if you\'re using Windows 7 with AVG anti-virus: we have a problem with that combination. The problem is in AVG itself, and there\'s no reasonable way to resolve it on our end. Unfortunately, exceptions or disabling the anti-virus won\'t work. The only solution is to replace AVG with something else.","FAQ_17_P2":"If that\'s not the issue, but you\'re still using Windows, please update to the latest service pack and update/re-install your GPU drivers, then try again.","FAQ_17_P3":"If you\'re problem is still not resolved, or you\'re using a Mac or Linux, please write us reporting the exact details of the problem at ${1}our Facebook group${2}.","FAQ_18_H1":"How can I make an addon?","FAQ_18_P1":"For starters, we recommend you check our ${1}addons system module${2} on GitHub.","FAQ_18_P2":"Afterwards, you can follow the ${1}Hello World tutorial${2}.","FAQ_18_P3":"If you don\'t have any programming skills, please post your idea on ${1}the Reddit community${2} and contact us with your addon idea on ${3}office@stremio.com${4}.","FAQ_19_H1":"Why is Stremio taking disk space?","FAQ_19_P1":"Stremio has a <b>local cache</b> to temporarily keep the video files you stream.","FAQ_19_P2":"This has two benefits: first, it allows Stremio to pre-buffer the video ahead so as to ensure smoother streaming. Second, it keeps the videos in the local cache so you can continue watching them offline.","FAQ_19_P3":"How much Stremio keeps depends on the <b>Cache</b> setting in the Settings panel. Stremio may keep up to the set amount (e.g. 2GB) on your disk, unless the currently streamed video is larger than that, in which case it has to allocate enough storage to keep it until you\'re streaming it.","FAQ_20_H1":"Where is the cache folder?","FAQ_20_P1":"On Windows, it\'s stremio-cache in the drive you picked in Settings (e.g. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"On MacOS, it\'s \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"On Linux, it\'s \\"~/.stremio/stremio-cache\\" or \\"~/stremio-cache\\"","FAQ_21_H1":"I get \\"Streaming server is not found\\" error, what can I do?","FAQ_21_P1":"If you get this error, it means one of few things:","FAQ_21_P2":"1) You are trying to use an addon backed by YouTube/BitTorrent source, through our ${1}web version${2}. In this case, you should install our desktop version from ${3}our website${4}.","FAQ_21_P3":"2) Something is wrong with your Stremio installation. In this case, try re-installing our latest desktop version from ${1}the website${2}. If this does not help, try disabling anti-virus programs and firewalls, restarting your PC and trying again. If this does not work too, please write us at our ${3}our Facebook group${4}.","FAQ_22_H1":"I cannot see/use most addons on iOS","FAQ_22_P1":"Because of restrictions in the Apple App Store terms and conditions, we have restricted the iOS application only to a particular set of addons.","FAQ_22_P2":"But rest assured - there will be more addons for iOS in the future, and we may also add an integration that will allow you to use all Stremio addons thanks to connecting the iOS app to the Stremio Streaming Server."}')},3191:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"Film","TYPE_series":"Dizi","TYPE_tv":"TV kanalı","TYPE_channel":"Kanal","TYPE_other":"Diğer","TYPE_movie_PL":"Filmler","TYPE_series_PL":"Diziler","TYPE_tv_PL":"TV kanalları","TYPE_channel_PL":"Kanallar","TYPE_other_PL":"Diğer","TYPE_ALL":"Tümü","VIDEO":"Görüntü","BACK":"Geri","MORE":"Daha fazla","DONE":"Bitti","COPY":"Kopyala","SUCCESS":"Başarılı","ERROR":"Hata","SETTINGS_CASTING_MODE_PICKER":"Yayın modu","CASTING_MODE_HLSV2":"Varsayılan","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"Kod dönüştürme yok","Discover":"Keşfet","Board":"Pano","Library":"Kitaplık","My Library":"Kitaplığım","Calendar":"Takvim","NOTIFICATION_ONLINE":"Şu an çevrimiçisiniz","NOTIFICATION_OFFLINE":"Şu anda çevrimdışısınız","INTERNET_CONNECTION":"Ağ bağlantısı","STORAGE_FULL_TITLE":"Dikkat: Depolama dolu!","STORAGE_FULL_TEXT":"Stremio, ayarlarınızı, tercihlerinizi veya oturum açma bilgilerinizi kaydedemeyecektir. Stremio\'yu yeniden başlatmayı veya yeniden yüklemeyi düşünün.","SEARCH":"ara","SEARCH_NO_RESULTS":"Sonuçlar bulunamadı","SEARCH_EXPLANATION_CONTENT":"Filmler, diziler, YouTube ve TV kanallarını arayın","SEARCH_EXPLANATION_PEOPLE":"Aktörler, yönetmenler, yazarları arayın","SEARCH_PASTE_LINKS":"HTTP ve Magnet bağlantılarını yapıştırın","SEARCH_OR_PASTE_LINK":"Arayın ya da bağlantıyı yapıştırın","ADD_TO_LIB":"Kitaplığa Ekle","REMOVE_FROM_LIB":"Kitaplıktan Kaldır","ADDED_TO_LIB":"Kitaplığa Eklendi","REMOVED_FROM_LIB":"Kitaplıktan Kaldırıldı","TRAILER":"Fragman","WATCH_TRAILER":"Fragmanı İzle","WATCH_NOW":"Şimdi İzle","SHOW":"Göster","SHOW_MOVIE":"Filmi Göster","WATCH_RANDOM":"Rastgele İzle","IMDB_RATING":"IMDB Puanı","YEAR":"Yıl","DIRECTOR":"Yönetmen","WRITER":"Yazar","LEAD_ACTORS":"Başroller","CAST":"Oyuncular","CREW":"Ekip","SHOW_MORE_CAST":"Daha fazlasını göster »","AIRED":"Yayın tarihi","SEASONS":"Sezonlar","GENRE":"Tarz","CATALOG":"Katalog","SUMMARY":"Özet","SHOW_MORE":"Daha Fazla Göster","SIMILAR":"Benzer","UPCOMING":"Yaklaşan","ENDED":"Biten","DURATION":"Süre","FEATURED":"Öne çıkanlar","METADATA":"Üstveri","CATEGORY":"kategori","LINKS_GENRES":"Tarzlar","LINKS_CAST":"Oyuncular","LINKS_DIRECTORS":"Yönetmenler","SEARCH_VIDEOS":"görüntüleri arayın","SEARCH_PLACEHOLDER":"arayın veya URL yapıştırın","ADDON":"eklenti","ADDONS":"Eklentiler","OFFICIAL":"resmi","ADDONS_OFFICIAL":"Resmi Stremio Eklentileri","ADDONS_POPULAR":"Bölgenizde beğenilen","ADDON_FREE":"ücretsiz","ADDON_PEERED":"denk gelen","ADDON_SUBSCRIPTION":"abonelik","ADDON_STREAM_GEORESTRICTED":"bölgenizde mevcut değil","ADDON_STREAM_OFFLINECACHE":"Çevrimdışı Önbellek","ADDON_STREAM_LOCALFILE":"Yerel Dosya","SHARE_ADDON":"Eklentiyi paylaş","AVAILABLE_STREAMS":"Mevcut Akışlar","NO_STREAM":"Akışlar bulunamadı","ALL_ADDONS":"Tümü","INSTALL_MORE_ADDONS":"Daha fazla akış için lütfen daha fazla eklenti yükleyin","STREAM_NOT_SUPPORTED":"Seçilen akış bu platformda desteklenmiyor.","ADDON_CATALOGUE":"Tüm eklentileri göster »","ADDON_CATALOGUE_MORE":"Eklentileri yükle","REPO_ADDED":"Depo eklendi","ADDON_REPO_EXIST_ERR":"Bu eklenti koleksiyonu zaten var","ADDON_REPO_ERR":"Koleksiyon eklenirken hata meydana geldi","ADDON_ADD_ERR":"Eklenti eklenirken hata meydana geldi","ERR_ADDON_PROTECTED":"Eklenti kaldırılamıyor, korumalı","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"Bir şeyler ters gitti - kimlik doğrulaması başarısız olabilir","ERR_NOT_COLLECTION_URL":"Bir koleksiyon URL\'si değil","ERR_NOT_ADDON_URL":"Bir eklenti URL\'si değil","ERR_DETECTFROMURL":"Bu URL\'den eklenti/koleksiyon bulunamıyor","ADDON_DUPLICATE_WARNING":"Uyarı: yinelenen eklenti","ADDON_COLLECTION_SET_FAILED":"Yüklü eklentilerin hesabınıza eşitlenmesi başarısız oldu","SETTINGS_DATA_EXPORT":"Kullanıcı verilerini dışa aktar","ADDON_PULL_FAILED":"Yüklü eklentilerin hesabınızdan eşitlenmesi başarısız oldu","REFRESH_ON_CLICK":"Yeniden denemek için tıklayın","STILL_IN_THEATER":"Film hala gösterimde","WATCH_IN_CINEMA":"Yerel sinemanızda izleyin","IN_THEATER":"Sinemada","GET_TICKETS":"Bilet al","UPCOMING_EPISODE":"Yaklaşan bölüm","UPCOMING_EPISODE_MESSAGE":"Bu bölümün yayınlanacağı tarih","MISSING_DATE_EPISODE":"Eksik bölüm tarihi","MISSING_DATE_EPISODE_MESSAGE":"Bu bölüm henüz yayınlanmamış olabilir","CHANNEL_NOT_SCRAPED":"Bu kanal henüz uygun değil.<br>Lütfen birkaç dakika içinde yine geri gelin.","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"Mevcut olduğunda bildirim almak için kitaplığınıza ekleyin.","GET_NOTIFIED_WHEN_AVAILABLE":"Mevcut olduğunda bilgilendirileceksiniz.","WARNING_STREAMING_SERVER":"Uyarı: yerel akış sunucusu bulunamadı. Yerel dosyalardan, YouTube ve BitTorrent\'den akış kullanılamayacaktır.","WARNING_STREAMING_SERVER_DISMISS":"Vazgeç","WARNING_STREAMING_SERVER_LATER":"Sonra","DECODER_WARNING":"Uyarı: bu görüntü, donanımınız tarafından desteklenmiyor olabilir. Oynatma yavaş olabilir, unutmayın.","PLAYER_ERROR":"Eyvah, Oynatıcı Hatası","PLAYER_ERROR_LOOKSLIKE":"Benzediği durum","PLAYER_ORIENTATION":"Oynatıcı yönü","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"Kilitli","PLAYER_ORIENTATION_SENSOR_SHORT":"Sensör","PLAYER_ORIENTATION_LANDSCAPE":"Oynatıcı yönü yatay olarak kilitli","PLAYER_ORIENTATION_SENSOR":"Oynatıcı yönü otomatik (sensör)","PLAYER_PLAYBACK_SPEED":"Oynatma Hızı","PLAYER_PLAYBACK_ERROR":"Oynatma hatası, lütfen tekrar deneyin","PLAYER_PLAYBACK_ERROR_UNKNOWN":"Bilinmeyen hata","PLAYER_PLAYBACK_ERROR_DEFAULT":"Üzgünüz, bu görüntü {{productName}} tarafından oynatılamaz.","PLAYER_SUBTITLES_LANGUAGES":"Altyazı Dilleri","PLAYER_SUBTITLES_VARIANTS":"Altyazı Çeşitleri","PLAYER_SUBTITLES_SETTINGS":"Altyazı Ayarları","PLAYER_SUBTITLES_DISABLED":"Altyazılar etkisizleştirildi","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Dikey Konum","PLAYER_SUBTITLES_LOADED":"Altyazılar yüklendi","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Gömülü altyazılar yüklendi","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Özel altyazılar yüklendi","PLAYER_SUBTITLES_LOADED_ORIGIN":"Altyazılar, {{origin}} kaynağından yüklendi","PLAYER_PLAY":"Oynat","PLAYER_PAUSE":"Duraklat","PLAYER_NEXT_VIDEO":"Sonraki Görüntü","PLAYER_MUTE":"Sesi Kapat","PLAYER_UNMUTE":"Sesi Aç","PLAYER_OPEN_IN_EXTERNAL":"Harici oynatıcıda aç","PLAYER_PLAY_IN":"{{device}} içinde oynat","PLAYER_LIVE":"Canlı","PLAYER_NEXT_VIDEO_TITLE":"Sıradaki gelen","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"Vazgeç","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"Şimdi izle","PLAYER_COPY_STREAM_SUCCESS":"Akış bağlantısı panonuza kopyalandı","PLAYER_COPY_STREAM_ERROR":"Akış bağlantısını kopyalama başarısız","STREAMING_FROM":"yayının geldiği yer","CASTING_TO":"Yayınlandığı yer","NETWORK_STATUS":"Ağ durumu","STREAM_SPEED":"Yayın hızı:","STREAM_BUFFERED":"Arabelleğe alınan:","PEERS_INFO":"Kişi Bilgileri","PEERS_ACTIVE":"Etkin:","PEERS_CONNECTED":"Bağlandı:","PEERS_WAITING":"Bekleniyor:","TRANSCODING_WARNING":"Uyarı: görüntü kodu dönüştürülüyor.","STREAM_LOADING":"yükleniyor...","PLAYING_LOCAL":"yerel dosyadan oynatılıyor","PLAYING_CACHE":"önbellekten oynatılıyor","WRONG_SUBS":"Altyazı yanlış mı?","ERR_SUBS_LOADING_TITLE":"Altyazı yüklenirken hata oldu","ERR_SUBS_LOADING":"Altyazıları yükleme başarısız: bu kullandığınız eklenti ya da ağ bağlantınız ile ilgili bir sorun olabilir","WARN_FOLLOWING_SUB_ADDONS_FAILED":"Aşağıdaki altyazı eklentileri başarısız oldu","ERR_CASTING_UPDATE_TITLE":"Yayınlama cihazı bilgisi güncellenemedi: akış sunucusu çevrimdışı olabilir","CHOOSE_DEVICE":"İzleyeceğiniz bir cihaz seçin","NO_CAST_DEVICES":"Kullanılabilir yayınlama cihazları yok.","NO_SETTINGS":"Kullanılabilir ayarlar yok.","PHONE_TABLET":"Telefon / Tablet","SUBTITLES":"Altyazılar","SUBTITLES_CHANGE":"Altyazıyı şunun için değiştir: ","SUBTITLES_CHANGE_NONE":"Bu dil için başka altyazı yok, üzgünüz.","SUBTITLES_CHANGE_ACIVE":"Şu anda #{{subtitlesDialog.activeIdx + 1}} altyazısı etkinleştirildi. #{{subtitlesDialog.pickedIdx + 1}} altyazısını etkinleştirmek için \\"Devam\\" düğmesine tıklayın.","SUBTITLES_OR":"Alternatif olarak,","SUBTITLES_ADJUST_DELAY":"Altyazı gecikmesini ayarlayın:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"Veya oynatırken ayarlamak için <span>G</span> / <span>H</span> tuşlarını kullanın.","SUBTITLES_ADJUST_DELAY_TIP":"İPUCU: oynatırken ayarlamak için <span>G</span> / <span>H</span> tuşlarını kullanabilirsiniz.","SUBTITLES_DELAY":"Altyazı gecikmesi:","SUBTITLES_LOADING":"Altyazılar yükleniyor...","SUBTITLES_UNAVAILABLE":"Kullanılabilir harici altyazı yok","SUBTITLES_DISABLED":"Etkisizleştirildi","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Ses","DEFAULT_LANGUAGE":"Varsayılan Dil","DEFAULT_SECONDARY_LANGUAGE":"Varsayılan İkincil Dil","SEASON":"Sezon","EPISODE":"Bölüm","SPECIAL":"Özel","SORT":"sırala","SORT_BY":"Sıralama şekli","FILTER":"süz","SORT_TRENDING":"çok izlenen","SORT_RECENT":"en yeni","SORT_ALPHABET":"a-z","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"puan","SORT_WATCHED":"izlendi","SORT_YEAR":"yıl","SELECT_TYPE":"Tür seçin","SELECT_SORT":"Sıralamayı seçin","SELECT_CATALOG":"Katalog seçin","SELECT_GENRE":"Tarz seçin","SORT_LASTWATCHED":"Son izlenmeye göre","SORT_NAME":"Ada göre","SORT_TIMESWATCHED":"İzlenme sayısına göre","New for You":"Sizin için Yeni","New Episodes":"Yeni Bölümler","New Videos":"Yeni Görüntüler","Recommendations":"Önerilenler","LIBRARY_RESUME":"Devam","LIBRARY_PLAY":"Oynat","LIBRARY_DETAILS":"Ayrıntılar","LIBRARY_RESUME_DISMISS":"Vazgeç","LIBRARY_CLEAR_PROGRESS":"İlerlemeyi Temizle","LIBRARY_REMOVE":"Kaldır","LIBRARY_NOT_LOGGED_IN":"Kitaplık yalnızca oturum açmış kullanıcılar tarafından kullanılabilir","CALENDAR_NOT_LOGGED_IN":"Takvim yalnızca oturum açmış kullanıcılar tarafından kullanılabilir","NOT_LOGGED_IN_CLOUD":"En sevdiğiniz filmlere ve TV programlarına istediğiniz zaman, istediğiniz yerden erişin","NOT_LOGGED_IN_RECOMMENDATIONS":"Görüntüleme geçmişinize göre uyarlanmış öneriler","NOT_LOGGED_IN_NOTIFICATIONS":"Bir daha asla bir bölümü kaçırmayın","NOT_LOGGED_IN_CALENDAR":"Kişisel izleme takviminizi planlayın","DISCOVER_FEATURED":"Öne Çıkanlar","DISCOVER_TOP":"En İyiler","DISCOVER_OSCAR":"Oscar Kazananlar","DISCOVER_WARNING_TITLE":"Eyvah!","DISCOVER_EMPTY_CATALOG":"Bu eklenti boş içerik döndürdü.","DISCOVER_ADULT_WARNING":"Bu içerik yalnızca yetişkinler için görünürdür. 18 yaşından büyük müsünüz?","DISCOVER_NOADDON_WARNING":"Uyarı: bu türde etkin Stremio eklentisi yok. Kaydedilen öğeler gösteriliyor, burada hiç birşey güncellenmeyecek.","DISCOVER_LOAD_ERR":"İçerik yüklenmedi, hata meydana geldi.","DISCOVER_ADDON_UNINSTALLED":"Bu içerik artık mevcut değil, eklentiyi kaldırmış olabilirsiniz.","UNINSTALL_THIS_ADDON":"Bu eklentiyi kaldır","ERR_ADDON_NOT_INSTALLED":"Bu eklenti yüklü değil. Şimdi yüklensin mi?","DETAIL_RECEIVE_NOTIF_SERIES":"Yeni bölümler için bildirim alın","DETAIL_RECEIVE_NOTIF_VIDEOS":"Yeni görüntüler için bildirim alın","SIDEBAR_SHOW_STREAMS":"Akışları Göster","RELAUNCH":"Şimdi yeniden başlat!","UPGRADE":"Yeni sürüm mevcut! En son Stremio sürümüne yükseltin","RELOAD_UI":"Kullanıcı arayüzünü yeniden yükleyin","MANUAL_UPDATE_TITLE":"Stremio sürümünüzü güncelleyin","MANUAL_UPDATE_LINE1":"Son derece önerilmeyen eski bir Stremio sürümü kullanıyorsunuz.","MANUAL_UPDATE_LINE2":"Lütfen en kısa sürede güncelleyin.","BUTTON_UPDATE_LATTER":"Şimdi değil","BUTTON_UPDATE_NOW":"Güncelle","ANONYMOUS_USER":"İsimsiz kullanıcı","DONT_HAVE_ACC":"Bir hesabınız yok mu?","HAVE_ACC":"Zaten bir hesabınız var mı?","PASSWORD":"Parola","PASSWORD_CONFIRM":"Parolayı doğrula","EMAIL":"E-posta","FB_LOGIN":"Facebook ile devam et","FB_NOTHINGSHARED":"İzniniz olmadan hiçbir şey paylaşılmaz.","FB_NOPOST":"Sizin adınıza herhangi bir şey göndermeyeceğiz","OR":"ya da","I_ACCEPT":"Kabul ediyorum: ","I_ACCEPT_BY_CLICKING":"Yukarıdaki düğmeyi tıklayarak, kabul ettiğimi doğruladığım ","TOS":"Şartlar ve Koşullar","MUST_ACCEPT_TERMS":"Şartları kabul etmek zorundasınız","PASSWORDS_NOMATCH":"Parolalar eşleşmiyor","SIGN_UP":"Kaydol","SIGN_UP_EMAIL":"E-posta ile kaydol","CLICK_TO_SIGN_UP":"Kaydolmak için buraya tıklayın.","LOG_IN":"Oturum aç","LOG_OUT":"Oturumu kapat","EXIT_FULLSCREEN":"Tam ekran modundan çık","ENTER_FULLSCREEN":"Tam ekran moduna geç","PLAY_URL_MAGNET_LINK":"URL/Magnet bağlantısını oynat","HELP_FEEDBACK":"Yardım ve Geri Bildirim","TERMS_OF_SERVICE":"Kullanım Şartları","PRIVACY_POLICY":"Gizlilik İlkesi","ABOUT_STREMIO":"Stremio Hakkında","USER_PANEL":"Kullanıcı Paneli","LOGIN_LABEL":"Oturum aç","GUEST_LOGIN":"Misafir oturumu aç","GUEST_LOGIN_NOTICE":"Misafir Oturumu Açma önerilmez. Normal oturum açmayı kullanmak, Stremio\'nun kitaplığınızı eşitlemesini, en sevdiğiniz diziler/kanallar için bildirimler almasını sağlar. Devam etmek istediğinize emin misiniz?","GUEST_LOGIN_NOTICE_2":"Misafir Oturumu Açma önerilmez - önemli Stremio özellikleri olan Kitaplık ve Pano bildirimlerini eşitlemeyeceksiniz. Devam etmek istediğinize emin misiniz?","CLICK_HERE":"buraya tıklayın","WRONG_PASSWORD":"Yanlış e-posta veya parola. Parolanızı unuttuğunuz durumda, ","SET_A_PASS":"bir parola belirleyin","RESET_PASSWORD":"Parolayı sıfırla","FORGOT_PASSWORD":"Parolanızı mı unuttunuz?","EMAIL_USED_WITH_FB":"Bu e-posta bir Facebook oturumu açılması ile kullanılmış.","INVALID_EMAIL":"Lütfen geçerli bir e-posta adresi girin","INVALID_PASSWORD":"Lütfen geçerli bir parola girin","CONN_ERR":"Bağlantı hatası - lütfen daha sonra tekrar deneyin.\\n\\nEğer bu devam ederse, güvenlik duvarını/antivirüs yazılımını etkisizleştirin (özellikle Bitdefender\'ı).","IMPORT_FROM_GUEST":"Misafir hesabınızdan Kitaplığa aktarın","RECEIVE_UPDATES_EMAIL":"Stremio\'dan e-postanıza güncellemeleri alın","LOGIN_FAILED":"Oturumu açma başarısız oldu.","SIGNUP_FAILED":"Kaydolma başarısız oldu.","SEARCH_FAILED":"Arama başarısız oldu","EMAIL_USED":"Bu e-posta zaten kullanımda.","WAITING_FB_LOGIN":"Facebook ile oturum açılıyor...","EXTERNAL_PLAYER_TITLE":"Harici oynatıcıda oynat","EXTERNAL_REMEMBER_PLAYER":"Seçiminizi hatırlamak ister misiniz","EXTERNAL_ALWAYS_PLAY":"Evet","EXTERNAL_ONLY_ONCE":"Hayır","BEST_FIT":"En Uygun","FIT_SCREEN":"Ekrana Sığdır","FILL":"Doldur","16:9":"16:9","4:3":"4:3","Original":"Orijinal","INTRO_TASTE":"Bize nelerden hoşlandığınızı söyleyin","INTRO_TASTE_LONG":"Bize ne izlemek istediğinizi söyleyin","INTRO_TASTE_PICK":"{{interestsRemaining}} ilgi alanı seçin","INTRO_TASTE_PICK_MORE":"{{interestsRemaining}} ilgi alanı daha seçin","INTRO_TASTE_HELP_US":"Hakkınızda daha fazla bilgi edinmemize yardımcı olun.","INTRO_TASTE_CHOOSE_THESE":"Bunlardan bazılarını seçin:","INTRO_TASTE_CHOOSE_MIN":"En az 3 kategori seçin","INTRO_TASTE_CHOOSE_MIN_ERR":"En az 3 kategori seçmek zorundasınız!","INTRO_TASTE_LIFESTYLE":"Yaşam stili","INTRO_TASTE_SPORTS":"Spor","INTRO_TASTE_FOOD_HEALTH":"Yemek ve Sağlık","INTRO_TASTE_BEAUTY_FASHION":"Güzellik ve Moda","INTRO_TASTE_NEWS":"Haber","INTRO_TASTE_GAMING":"Oyun","INTRO_TASTE_SCIENCE_EDU":"Bilim ve Eğitim","INTRO_TASTE_MUSIC":"Müzik","INTRO_TASTE_TRAVEL":"Seyahat","INTRO_TASTE_LATE_NIGHT":"Gece Gösterisi","INTRO_TASTE_REALITY":"Gerçeklik","INTRO_TASTE_COMEDY":"Komedi","INTRO_TASTE_DIY":"Nasıl Kendin Yaparsın","INTRO_TASTE_TECH":"Teknoloji","INTRO_TASTE_CINEMA":"Sinema","ADDON_NOT_SUPPORTED":"Seçilen eklenti bu platformda desteklenmiyor.","ADDON_DISCLAIMER":"Üçüncü taraf eklentileri kullanmak her zaman sizin sorumluluğunuza ve bulunduğunuz yargı bölgesinin geçerli yasasına tabi olacaktır.","ADDON_ACTIVATE":"Bu eklenti etkinleştirilsin mi?","ADDON_REPO_ADD":"Eklenti koleksiyon URL\'si","ADDON_ADD":"Ekle","ADD_ADDON":"Eklenti ekle","ADD_ADDON_DESCRIPTION":"Yüklü eklentiler altında görünecek harici bir bağlantı aracılığıyla bir eklenti ekleyebilirsiniz.","PASTE_ADDON_URL":"Eklenti URL\'sini yapıştır","WHATS_NEW":"Yeni neler var","BUTTON_CONTINUE":"Devam","BUTTON_ACTIVATE":"Etkinleştir","BUTTON_ACTIVATED":"Etkinleştirildi","BUTTON_CANCEL":"İptal","BUTTON_SUBMIT":"Gönder","BUTTON_DISMISS_ALL":"Tümünden Vazgeç","BUTTON_VIEW_ALL":"tümünü görüntüle","BUTTON_SEE_ALL":"Tümünü Gör","BUTTON_COLOR_TRANSPARENT":"Şeffaf","OPEN_IN_BROWSER":"Tarayıcıda aç","LIB_EMPTY":"Kitaplığınız boş görünüyor. Ne kadar kullanışlı olduğunu öğrenin :) ","HOW_START":"İşte nasıl başlayabileceğiniz:","LIB_EMPTY_CAL":"Takviminiz, Kitaplığınızdaki dizileri gösterir.","HOW_START_CAL":"İşte nasıl dizi ekleyebileceğiniz:","LIB_EMPTY_BOARD":"Pano, Kitaplığınızla ilgili bildirimleri ve önerileri gösterir.","HOW_START_BOARD_WAIT":"Lütfen Kitaplığınıza birkaç dizi veya kanal ekleyin, işlememiz için bize birkaç dakika verin :)","HOW_START_BOARD":"İşte nasıl dizi ve filmleri ekleyebileceğiniz:","IMPORT_FB":"<span>Facebook</span>\'tan beğendiğiniz şeyleri içe aktarın","IMPORT_TRAKT":"<span>Trakt</span>\'tan ortam kitaplığınızı içe aktarın","IMPORT_DISCOVER":"<span>Keşfet</span>\'ten ilginç şeyler bulun","IMPORT_DISK":"<span>Yerel diskinizde</span> bulunan filmleri veya dizileri içe aktarın","PLEASE_CREATE_ACC":"Kitaplık eşitlemeyi ve Panoyu etkinleştirmek için lütfen <u>bir hesap oluşturun</u>.","IMPORT_DISCOVER_SIGNUP":"Kaydolun ve <span>Keşfet</span>\'ten ilginç şeyler bulun","IMPORT_DISK_SIGNUP":"Kaydolun ve <span>yerel diskinizde</span> bulunan filmleri veya dizileri içe aktarın","LIB_EMPTY_CLOUD":"Bulut kitaplığı","LIB_EMPTY_CLOUD_DESC":"Kişisel bulut kitaplığı tüm cihazlarla eşitlensin","LIB_EMPTY_EARLY":"Erkenci","LIB_EMPTY_EARLY_DESC":"Yeni bölümler için bildirim alın","LIB_EMPTY_PERSONAL":"Kişisel","LIB_EMPTY_PERSONAL_DESC":"Kişisel öneriler alın","LIB_EMPTY_CALENDAR_DESC":"Kişisel izleme takviminizi planlayın","LIB_EMPTY_ALL":"Tüm bunları almak için kaydolun:","LIB_EMPTY_BEST":"Stremio\'dan en iyi şekilde yararlanmak için kaydolun","LIB_EMPTY_OTHER":"Takvim ve diğer harika özellikleri etkinleştirmek için kaydolun","CALENDAR_ADDED":"Stremio takvimi, varsayılan masaüstü takviminize eklendi.","CALENDAR_ADDED_MSG":"Eğer bu işe yaramazsa, lütfen bu URL\'yi takvim uygulamanıza el ile ekleyin","TRAKT_EXPIRED":"Trakt kimlik doğrulamasının süresi doldu, lütfen Ayarlar\'a gidin ve yeniden kimlik doğrulaması yapın","TRAKT_REQUIRES_LOGIN":"Trakt hatası","TRAKT_REQUIRES_LOGIN_MSG":"Oturum açmanız gerekli","SETTINGS_LABEL":"Ayarlar","SETTINGS_NAV_GENERAL":"Genel","SETTINGS_NAV_PLAYER":"Oynatıcı","SETTINGS_NAV_STREAMING":"Yayın Akışı","SETTINGS_NAV_SHORTCUTS":"Kısayollar","SETTINGS_SHORTCUT_RELOAD_APP":"Uygulamayı Yeniden Yükle","SETTINGS_SHORTCUT_OPEN_SETTINGS":"Ayarları Aç","SETTINGS_SHORTCUT_SWITCH_TABS":"Sekmeleri Değiştir","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"Sekmeler Arasında İleri Yönde Dön","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"Sekmeler Arasında Geri Yönde Dön","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Menüler Arasında Gezin","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Aramaya Git","SETTINGS_SHORTCUT_EXIT_BACK":"Çık / Geri Dön","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Oynatma Hızı Menüsünü Aç/Kapat","SETTINGS_SHORTCUT_MENU_VIDEOS":"Görüntü Menüsünü Aç/Kapat","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Altyazı Menüsünü Aç/Kapat","SETTINGS_SHORTCUT_MENU_INFO":"Bilgi Menüsünü Aç/Kapat","SETTINGS_SHORTCUT_FULLSCREEN":"Tam Ekranı Aç/Kapat","SETTINGS_SHORTCUT_SHOW_CONTROLS":"Denetimleri Göster","SETTINGS_SHORTCUT_PLAY_PAUSE":"Oynat / Duraklat","SETTINGS_SHORTCUT_VOLUME_UP":"Sesi Artır","SETTINGS_SHORTCUT_VOLUME_DOWN":"Sesi Azalt","SETTINGS_SHORTCUT_SEEK_NEXT":"Sonrakine Atlat","SETTINGS_SHORTCUT_SEEK_PREV":"Öncekine Atlat","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Geriye Doğru Atlat","SETTINGS_SHORTCUT_SEEK_FORWARD":"İleriye Doğru Atlat","SETTINGS_SHORTCUT_PLAY_NEXT":"Sonrakini Oynat","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"Altyazı Boyutunu Artır","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"Altyazı Boyutunu Azalt","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"Altyazı Gecikmesini Artır","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"Altyazı Gecikmesini Azalt","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"Kenar Çubuğunu Aç/Kapat","SETTINGS_SHORTCUT_OR":"veya","SETTINGS_SHORTCUT_TO":">","SETTINGS_SHORTCUT_SPACE":"Boşluk","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Kimlik Doğrula","SETTINGS_FACEBOOK_IMPORT":"İçe Aktar","SETTINGS_CALENDAR_SUBSCRIBE":"Abone Ol","SETTINGS_INTERFACE_LANGUAGE":"Arayüz Dili","SETTINGS_LAUNCH_STARTUP":"Başlangıçta çalıştır","SETTINGS_VLC_DEFAULT":"VLC ile oynat","SETTINGS_UI_LANGUAGE":"Kullanıcı Arayüzü Dili","SETTINGS_FULLSCREEN_EXIT":"Esc tuşuyla tam ekrandan çık","SETTINGS_GAMEPAD":"Gamepad desteğini etkinleştir","SETTINGS_CLOSE_WINDOW":"Pencere kapatıldığında uygulamayı kapat","SETTINGS_SUBTITLES_LANGUAGE":"Varsayılan altyazı dili","SETTINGS_SUBTITLES_SIZE":"Varsayılan altyazı boyutu","SETTINGS_SUBTITLES_BACKGROUND":"Altyazı arka planı","SETTINGS_SUBTITLES_COLOR":"Altyazı rengi","SETTINGS_SUBTITLES_COLOR_OUTLINE":"Altyazı anahat rengi","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"Altyazı arka plan rengi","SETTINGS_SEEK_KEY":"Ok tuşlarıyla zaman atlatma","SETTINGS_SEEK_KEY_SHIFT":"Shift tuşu basılı tutulduğunda Ok tuşlarıyla zaman atlatma","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Geri sarma ve İleri sarma süresi","SETTINGS_BINGE":"Sonraki bölümü otomatik oynat","SETTINGS_NEXT_VIDEO":"Sonraki bölümü başlatmak için bildirim göster","SETTINGS_NEXT_VIDEO_TRIGGER":"Bir sonraki bölüm bildirimini göster:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Sonraki görüntü açılır pencere süresi","SETTINGS_PLAY_IN_BACKGROUND":"Arka planda oynat","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Harici oynatıcıda oynat","SETTINGS_RESIZE":"Oynatmadan önce pencereyi otomatik yeniden boyutlandır","SETTINGS_OVERRIDE_SERVER":"Yayın akış sunucusu URL\'sini geçersiz kıl (gelişmiş)","SETTINGS_SERVER_URL":"Yayın akış sunucusu URL\'si: ","SETTINGS_SERVER_AVAILABLE":"Yayın akış sunucusu kullanılabilir.","SETTINGS_SERVER_UNAVAILABLE":"Yayın akış sunucusu kullanılabilir değil.","SETTINGS_SERVER_STATUS_ONLINE":"Çevrimiçi","SETTINGS_SERVER_STATUS_ERROR":"Hata","SETTINGS_SERVER_CONFIGURE_TITLE":"Yayın akış sunucusu URL\'sini yapılandırın","SETTINGS_SERVER_CONFIGURE_INPUT":"Bir yayın akış sunucusu URL\'si girin","SETTINGS_SERVER_CACHE_SIZE":"Önbellek boyutu","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profili","SETTINGS_HTTPS_ENDPOINT":"Yayın akışı HTTPS uç noktası: ","SETTINGS_USE_BETA":"Her zaman en son Beta\'yı kullan","SETTINGS_IMPORT_FB":"Facebook\'tan içe aktar","SETTINGS_IMPORT_DISK":"Yerel diskten içe aktar","SETTINGS_IMPORT_TRAKT":"Trakt\'tan içe aktar","SETTINGS_PAUSE_MINIMIZED":"Simge durumunda oynatmayı duraklat","SETTINGS_HWDEC":"Donanım hızlandırmalı kod çözme","SETTINGS_BACKGROUND":"Arka planda oynatma","SETTINGS_SUBSCRIBE_CALENDAR":"Takvime abone ol","SETTINGS_REQ_EXPORT":"Veriyi dışa aktarmayı iste","SETTINGS_ACC_DELETE":"Hesap silme iste","SETTINGS_CHANGE_PASSWORD":"Parolayı değiştir","SETTINGS_TOS":"Kullanım şartları","SETTINGS_SUPPORT":"Desteğe ulaşın","SETTING_LANGUAGE":"Dil","SETTINGS_TRAKT":"Trakt Skroblama","SETTINGS_TRAKT_LOGOUT":"Trakt.tv oturumunu kapat","SETTINGS_SCAN_FOR_REMOTE":"Uzaktan açmak için QR kodu tara","SETTINGS_DESKTOP_NOTIFICATIONS":"Masaüstü bildirimleri","SETTINGS_DATA_SAVER":"Veri tasarrufu","SETTINGS_LANGUAGE_INTERFACE":"arayüz","SETTINGS_LANGUAGE_SUBS":"varsayılan altyazılar","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"Ses İzini Otomatik Seç","SETTINGS_DEFAULT_AUDIO_TRACK":"Varsayılan Ses İzi","SETTINGS_ACCOUNT":"hesap","SETTINGS_VERSION":"sürüm","SETTINGS_MPV_WINDOW":"Oynatıcıyı ayrı bir pencerede başlat (gelişmiş)","SETTINGS_PLAY_IN_EXTERNAL":"Görüntüyü her zaman harici oynatıcıda başlat","SETTINGS_STORAGE_BUTTON":"Yerel Depolamayı Temizle","SETTINGS_STORAGE_MODAL_TITLE":"Emin misiniz?","SETTINGS_STORAGE_MODAL_MESSAGE":"Bu, yerel depolamayı temizleyecek ve oturumunuzu kapatacak.","SETTINGS_HWDEC_PICKER":"Donanım hızlandırmalı kod çözme ayarını seçin","SETTINGS_HW_AUTOMATIC":"Otomatik","SETTINGS_HW_DISABLED":"Etkisizleştirildi","SETTINGS_HW_ACCELERATED":"Kod çözme hızlandırması","SETTINGS_HW_FULL":"Tam hızlandırma","SETTINGS_HW_LEGACY":"Eski","SETTINGS_SECTION_SUBTITLES":"Altyazılar","SETTINGS_SECTION_AUDIO":"Ses","SETTINGS_SECTION_CONTROLS":"Denetimler","SETTINGS_SECTION_AUTO_PLAY":"Otomatik Oynat","SETTINGS_SECTION_ADVANCED":"Gelişmiş","SUBSPICKER_AUDIO":"Ses","SUBSPICKER_SUBTITLES":"Eklenti Altyazıları","SUBSPICKER_BLACK_BACKGROUND":"Siyah arka plan rengi kullan","SUBSPICKER_VERTICAL_OFFSET":"Dikey Uzaklık","SUBSPICKER_SIZE":"Boyut","SUBSPICKER_DELAY":"Gecikme","SUBSPICKER_EMBEDDED_SUBS":"Gömülü Altyazılar","MOBILE_PRIVACY_POLICY":"Gizlilik İlkesi","MOBILE_CRASH_REPORTING":"Çökme Bildirimi","MOBILE_ZOOM_TO_FILL":"Ekranı Doldurmak için Yakınlaştır","MOBILE_PASSTHROUGH":"Dijital ses çıkışı (içinden geçiş)","MOBILE_RUN_LOW_BATTERY":"Düşük pilde çalıştır","MOBILE_RUN_FOREGROUND":"Ön Plan Hizmeti olarak çalıştır","MOBILE_PERFORMANCE":"PERFORMANS VE KARARLILIK","MOBILE_SERVER_ONLINE":"Çevrimiçi","MOBILE_SERVER_OFFLINE":"Çevrimdışı","MOBILE_QR_EXPIRES":"QR Kod süresi sona erme zamanı ","MOBILE_LOG_INTO":"Stremio hesabınıza oturum açın ","MOBILE_SCAN_QR":"Yukarıdaki QR kodu tarayın veya ","MOBILE_LINK_ACCOUNT":"Hesabı Bağla","MOBILE_SPEEDPICKER_CANCEL":"İptal","MOBILE_SPEEDPICKER_LABEL":"Oynatma Hızını Seçin","MOBILE_EMPTY_LIBRARY":"Kitaplığınız boş","MOBILE_NO_ADDON_ACTIVE":"Bu tür için etkin Stremio eklentisi yok.","MOBILE_ORGANIZER_WARNING":"Stremio Organizer uygulaması sınırlı işlevsellik sağlar. Oynatılabilir akışların listesi ve tam Stremio deneyimi için Stremio\'yu masaüstünde kullanın.","MOBILE_ADDON_LOADING":"hala yükleniyor","MOBILE_ADDONS_LOADING":"eklentiler hala yükleniyor","MOBILE_ADDON":"Eklenti","MOBILE_CONFIGURE_ADDON":"Eklentinizi yapılandırın","MOBILE_CONFIGURE_ADDON_LABEL":"Eklentiyi Yapılandır","MOBILE_ORGANIZER_ADDONS_WARNING":"Stremio Organizer uygulaması sınırlı eklenti seçimi sağlar. Tam Stremio deneyimi için Stremio\'yu masaüstünde kullanın.","MOBILE_DISCONNECT":"Bağlantıyı kes","MOBILE_LOOKING_FOR_DEVICES":"Cihazlar aranıyor...","MOBILE_CAST_TO":"Yayın yeri","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Hesabı Silin","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Yasal yükümlülüklerden dolayı hesap silme işlemi anında gerçekleşmez. Hesabınızın silinmesini talep ettikten sonra, gelecekte yeni bir Stremio hesabı oluşturmak için farklı bir e-posta adresi/facebook profili kullanmak zorunda kalacaksınız.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Hesap Silmeyi Onaylayın","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Hesabınız Facebook kullanılarak oluşturuldu. Hesabınızı silmek için lütfen www.stremio.com/login adresindeki kullanıcı portalımızı kullanın.","MOBILE_DELETE_ACCOUNT_MESSAGE":"Hesap silme işlemini onaylamak için lütfen parolanızı girin.","MOBILE_DELETE_ACCOUNT_BUTTON":"Hesabı Sil","NAVIGATION_ON":"Açık","NAVIGATION_OFF":"Kapalı","MARKETING_AGREE":"Stremio\'dan pazarlama haberleri almayı kabul ediyorum","QUIT":"Çıkış","CONNECTED":"Bağlandı","AUTHENTICATE":"Kimlik Doğrula","CACHING":"Önbellekleme","SETTINGS_CACHING_DRIVE":"Önbellekleme sürücüsü","ENABLE_LOCAL_FILES_ADDON":"Yerel dosyalar eklentisini etkinleştir (yeniden başlatma gerektirir)","LOCAL_ADDON_NOT_ENABLED":"Yerel eklenti etkinleştirilmemiş. Ayarlara gitmek ve etkinleştirmek için buraya tıklayın","ENABLE_REMOTE_HTTPS_CONN":"Uzak HTTPS bağlantılarını etkinleştir","TORRENT_PROFILE":"Torrent Profili","DATA_CACHING":"Veri Önbellekleme","MAGNET_PARSING":"Magnet bağlantısı ayrıştırılıyor","January":"Ocak","February":"Şubat","March":"Mart","April":"Nisan","May":"Mayıs","June":"Haziran","July":"Temmuz","August":"Ağustos","September":"Eylül","October":"Ekim","November":"Kasım","December":"Aralık","Monday":"Pazartesi","Tuesday":"Salı","Wednesday":"Çarşamba","Thursday":"Perşembe","Friday":"Cuma","Saturday":"Cumartesi","Sunday":"Pazar","Action":"Aksiyon","Comedy":"Komedi","War":"Savaş","Family":"Aile","Animation":"Animasyon","Adventure":"Macera","Fantasy":"Fantastik","Crime":"Suç","Mystery":"Gizem","Romance":"Romantik","Drama":"Dram","Horror":"Korku","Thriller":"Gerilim","Sci-Fi":"Bilim Kurgu","Music":"Müzik","Biography":"Biyografi","Documentary":"Belgesel","Sport":"Spor","Musical":"Müzikal","Western":"Batılı","Film-Noir":"Kara Film","News":"Haber","History":"Tarih","Game-Show":"Oyun-Gösteri","Reality-TV":"Gerçeklik-TV","Talk-Show":"Sohbet Programı","Film & Entertainment":"Film ve Eğlence","Gaming":"Kumar","From TV":"Televizyondan","Lifestyle":"Yaşam","Science & Education":"Bilim ve Eğitim","Cooking & Health":"Yemek Pişirme ve Sağlık","Beauty & Fashion":"Güzellik ve Moda","Sports":"Spor","News & Politics":"Haber ve Politika","How-to & DIY":"Nasıl Yapılır ve Kendin Yaparsın","Tech":"Teknoloji","Automotive":"Otomotiv","Causes & Non-Profits":"Nedenler ve Kâr Amacı Gütmeyenler","Movies":"Filmler","Uk Live Tv":"İngiliz Canlı TV","Fashion":"Moda","Business News Radio":"İş Haberleri Radyosu","Business Tv":"İş Televizyonu","Cars & Auto":"Otomobil ve Otomotiv","Comedy Radio":"Komedi Radyosu","Lifestyle Radio":"Yaşam Stili Radyosu","News Tv":"Haber TV","Food And Wine":"Yemek ve Şarap","Latino Tv":"Latin TV","Shopping Tv":"Alışveriş Televizyonu","Religion":"Din","Kids":"Çocuklar","Body & Soul":"Vücut ve Ruh","Education":"Eğitim","Indian Tv":"Hindistan TV","Extreme Sports":"Ekstrem Sporlar","Middle Eastern Tv":"Ortadoğu TV","Celebrity Tv":"Magazin TV","Science Tv":"Bilim TV","Bikini babe":"Bikini güzelleri","Outdoors":"Açık Hava","German Tv":"Alman TV","French Tv":"Fransız TV","Italian Tv":"İtalyan TV","Gamer Tv":"Oyuncu TV","Travel":"Gezi","Asian Tv":"Asya TV","Entertainment":"Eğlence","News Radio":"Haber Radyosu","Music Radio":"Müzik Radyosu","Language Learning":"Dil Öğrenme","Science Radio":"Bilim Radyosu","Tech Radio":"Teknoloji Radyosu","Science & Technology Vod":"Bilim ve Teknoloji Seç-İzle","new video":"yeni görüntü","new episode":"yeni bölüm","new movie":"yeni film","recommended":"önerilen","we recommend":"önerdiklerimiz","offer of the day":"günün teklifi","news":"haberler","music video":"klip","CTX_SHOW_HOTKEYS":"Kısayol tuşlarını göster","CTX_DISMISS_NOTIF":"Bildirimleri yoksay","CTX_DISMISS_ALL":"Tümünü yoksay","CTX_SHARE":"Paylaş","CTX_COPY_SHARE_LINK":"Paylaşma bağlantısını kopyala","CTX_COPY_MAGNET_LINK":"Magnet bağlantısını kopyala","CTX_COPY_STREAM_LINK":"Akış bağlantısını kopyala","CTX_DOWNLOAD_VIDEO":"Bu görüntüyü indir","CTX_DOWNLOAD_SUBS":"Altyazıları indir","CTX_VIEW_ON_YOUTUBE":"YouTube\'da görüntüle","CTX_SHOW":"Göster","CTX_PLAY":"Oynat","CTX_PLAY_IN":"Oynat","CTX_PLAY_ON":"Oynat","CTX_WATCH_ON":"İzle","CTX_WATCH":"İzle","CTX_WATCHED":"İzlendi","CTX_WATCH_BEGINNING":"Baştan izle","CTX_WATCH_MOBILE":"Mobil bir cihazda izle","CTX_REWIND":"En başa al","CTX_MARK_WATCHED":"İzlendi olarak işaretle","CTX_MARK_NON_WATCHED":"İzlenmedi olarak işaretle","CTX_MARK_UNWATCHED":"izlenmedi olarak işaretle","CTX_MARK_REST":"Geri kalanını izlendi olarak işaretle","CTX_UNMARK_REST":"Geri kalanını izlenmedi olarak işaretle","CTX_RECEIVE_NEW_NOTIF":"Yeni bildirimleri al","CTX_REMOVE_CACHE":"Önbellekten kaldır","CTX_REMOVE_CACHE_EP":"Bölümü önbellekten kaldır","CTX_OPEN_CONTAINING":"İçerdiği klasörü aç","CTX_REMOVE":"Kitaplıktan kaldır","CTX_AVAILABLE_OFFLINE":"Çevrimdışı Kullanılabilir","CTX_PAUSED":"Duraklatıldı","CTX_ALWAYS_ON_TOP":"Her zaman üstte","CTX_FULLSCREEN":"Tam ekran","CTX_WRONG_SUBS":"Altyazı yanlış mı?","CTX_REPORT_ISSUES":"Sorun bildir","CTX_COPY":"Kopyala","CTX_PASTE":"Yapıştır","CTX_CLEAR":"Temizle","CTX_CLEAR_RECENT_SEARCHES":"Son arananları temizle","HELLO_THERE":"Merhaba","HOPE_YOU_ENJOY":"Stremio\'dan keyif aldığınızı ve şimdiden en sevdiğiniz uygulamalardan biri olduğunu umuyoruz!","WHO_ARE_WE":"Biz kimiz? Biz bunun arkasındaki takımız - bu ürünü daha iyi ve daha iyi hale getirmek için son 3 yıldır her gün çok çalışan iki adamız.","SUPPORT_US":"Eğer Stremio\'yu kullanmaktan keyif alıyorsanız, Stremio sizin için değerliyse - duyurun!","SPREAD_THE_WORD":"Hemen arkadaşlarınızla paylaşın, Stremio\'yu herkese duyurun","MORE_PEOPLE":"Stremio\'yu ne kadar çok kişi kullanırsa, o kadar iyi olacaktır!","SEND_A_LINK":"Veya web sitemize bir bağlantı gönderin","TIP_LOCALFILES":"İpucu: yerel görüntü dosyalarınızı Stremio\'ya sürükleyip bırakabilirsiniz","ADDON_MY":"Eklentilerim","ADDON_COMMUNITY":"Topluluk Eklentileri","ADDON_OFFICIAL":"Resmi Eklentiler","ADDON_REPOS":"Eklenti koleksiyonları","ADDON_SEARCH":"Eklentileri ara","ADDON_INSTALL":"Yükle","ADDON_CONFIGURE":"Yapılandır","ADDON_UNINSTALL":"Kaldır","ADDON_UPGRADE":"Yükselt","ADDON_INSTALLED":"Yüklendi","ADDON_INSTALLED_MSG":"Eklenti yüklendi!","ADDON_UPGRADED_MSG":"Eklenti yükseltildi!","ADDON_UNKNOWN":"Bilinmiyor","ADDON_ERR":"Eklenti yükleme hatası!","ADDON_DISCONNECTED":"Bağlantı kesildi","ADDON_APP_MISSING":"bu kaynak için uygulama yüklü değil. Şimdi yüklemek istiyor musunuz?","ADDON_APP_INSTALL":"Şimdi Yükle","ADDON_PAGE":"Eklenti Sayfası","ADDON_TOP_CONTENT":"Bu Eklentiden en iyisi","ADDON_PROVIDES":"Bu eklentinin size vereceği:","ADDON_WATCH":"Şimdi #{types} izleyin!","ADDON_WATCH_FREE":"Şimdi ÜCRETSİZ #{types} izleyin!","ADDON_ADDON":"Eklenti","ADDON_SUPPORTED_TYPES":"Desteklenen türler","ADDON_SUPPORTED_CATALOGS":"Desteklenen kataloglar","ADDON_PROVIDES_DISCOVER":"Keşfet\'te daha fazla #{types}","ADDON_PROVIDES_STREAMS":"#{types} izleyin","ADDON_PROVIDES_STREAMS_FREE":"ÜCRETSİZ #{types} izleyin","ADDON_PROVIDES_SUBTITLES":"#{types} için altyazılar","ADDON_CANTDETECT":"Çalışan bir Stremio algılayamadık, bu yüzden hangi eklentileri yüklediğinizi tespit edemedik.","ERR_NO_META":"Hiçbir bilgi bulunamayan konu ","ERR_GETTING_META":"Bu konuda bilgi alınırken hata oldu.","ERR_CANT_PARSE_MAGNET":"Magnet ayrıştırılamıyor","ERR_NO_MAGNET_INFOHASH":"Magnet için geçerli bir adresleme bilgisi yok","ERR_NO_FILE_PATH":"Dosya yolu olmayan istek gönderilemiyor","ERR_NO_TORRENT":"Dönen torrent yok","ERR_NO_SUPPORTERD_FILES":"Desteklenen dosyalar bulunamadı","ERR_OPENING_FILES":"Harici dosyalar açılamadı","ERR_INVALID_LINK":"Geçersiz bağlantı","ERR_REGISTERED_ONLY":"Bu seçenek yalnızca kayıtlı kullanıcılar için mevcuttur.","ERR_CLIPBOARD":"Panodan oynatılamıyor","ERR_CLIPBOARD_READ":"Bu platformda pano okunamıyor","ERR_CLIPBOARD_GENERIC":"Panoda oynatılabilir URL bulunamadı. Lütfen bir görüntü için URL\'yi (örn. bir magnet bağlantısı) kopyalayın.","BOARD_CONTINUE_WATCHING":"İzlemeye devam edin","BOARD_EXPLANATION_RECOMMENDATIONS":"Filmler sizin için özel olarak seçildi.<br />Bu film örnek bir öneridir.","BOARD_EXPLANATION_EPISODES":"En sevdiğiniz Dizilerin yeni bölümleri buraya gelir.<br />Takip ettiğiniz dizileri Kitaplığınıza ekleyin.","BOARD_EXPLANATION_VIDEOS":"En sevdiğiniz Kanalların yeni bölümleri buraya gelir.<br />Takip ettiğiniz YouTube kanallarını Kitaplığınıza ekleyin.","WEBSITE_SLOGAN_WATCH":"Anında İzleyin","WEBSITE_SLOGAN_ALL":"Keyif Aldığınız Tüm Görüntü İçeriği Tek Bir Yerde","WEBSITE_SLOGAN_NEW":"Tüm İzleyebileceğiniz","WEBSITE_SLOGAN_NEW_NEW":"Akış Özgürlüğü","WEBSITE_WATCH_FROM":"İzleyeceğiniz yer","WEBSITE_DOWNLOAD":"Şimdi İndir","WEBSITE_DOWNLOAD_FOR":"Şimdi İndireceğiniz","WEBSITE_IS_DESKTOP":"Stremio bir masaüstü uygulamasıdır, bu sayfayı PC\'nizde açın ve indirin","WEBSITE_DESKTOP_DEMO_VID":"Masaüstü tanıtımı","WEBSITE_PAGE_HOME":"Giriş","WEBSITE_PAGE_FEATURES":"Özellikler","WEBSITE_PAGE_ADDONS":"Eklentiler","WEBSITE_PAGE_TECH":"Teknoloji","WEBSITE_PAGE_CREATE_ADDON":"Eklenti Oluşur","WEBSITE_PAGE_CONTACTS":"İletişim","WEBSITE_PAGE_BLOG":"Blog","WEBSITE_TYPE_movie":"Filmler","WEBSITE_TYPE_series_PL":"Diziler","WEBSITE_TYPE_tv":"Canlı TV","WEBSITE_TYPE_channel":"Kanallar","WEBSITE_STREMIO_WHAT_IS":"Stremio, en sevdiğiniz görüntüleri, filmleri, dizileri ve TV kanallarını düzenlemenize ve anında izlemenize yardımcı olan bir uygulamadır.","WEBSITE_FEATURES_WATCH":"HD olarak Anında İzleyin","WEBSITE_FEATURES_WATCH_DETAIL":"En sevdiğiniz filmlere, TV Programlarına, görüntülere ve TV kanallarına tıklayın ve oynatın.","WEBSITE_FEATURES_SUBS":"Otomatik Altyazılar","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio diliniz için eşitlenmiş altyazıları otomatik olarak seçer.","WEBSITE_FEATURES_SUBS_LABEL":"Sıra sende, şef.","WEBSITE_FEATURES_CAST":"TV ve mobil cihazlarda oynat","WEBSITE_FEATURES_CAST_DETAIL":"Apple TV, Chromecast, Akıllı TV (DLNA/UPnP) ve mobil cihazlarda yayınlayın.","WEBSITE_LIB":"Tüm Cihazlarınızda Eşitlenen Kişisel Kitaplığınızın Keyfini Çıkarın","WEBSITE_LIB_COLLECT":"Stremio\'dan toplayın","WEBSITE_LIB_IMPORT":"Facebook\'tan içe aktarın","WEBSITE_LIB_LOCAL":"Yerel sürücünüzden ekleyin","WEBSITE_BOARD":"Pano - Bildirimler ve Öneriler için tek durak yeri","WEBSITE_BOARD_RECOMMEND":"Önerilen TV Programı","WEBSITE_BOARD_TRENDING":"Çok İzlenen Film","WEBSITE_BOARD_NEW":"Yeni Görüntü","WEBSITE_BOARD_EPISODE":"Yeni Bölüm","WEBSITE_BOARD_1":"İzlemek için ilginç bir şeyler mi arıyorsun? Zevkinize göre öneriler al!","WEBSITE_BOARD_2":"En sevdiğin TV programında veya YouTube kanalında yeni bir bölüm çıktıkça haberdar ol!","WEBSITE_BOARD_YOUTUBE":"YouTube kanallarının yeni videoları","WEBSITE_BOARD_EPISODES":"Takip ettiğiniz dizilerin yeni bölümleri","WEBSITE_ADDONS":"İçerik Eklentileri","WEBSITE_TECH_DETAIL":"Teknolojiyi seviyoruz, deli bilimi seviyoruz!\\nStremio aşağıdaki açık kaynak teknolojilerini kullanıyor:","WEBSITE_TECH_WCJS":"WebChimera.js, Stremio\'nun iyi bir performans ile herhangi bir video formatını oynatmasına izin verir.","WEBSITE_TECH_WCJS_EXTRA":"Biz temel projeye katılımcılarıyız","WEBSITE_TECH_ELECTRON":"Electron, Stremio\'yu inşa etmek için yenilikçi bir platform sağlar.","WEBSITE_TECH_ELECTRON_EXTRA":"Proje katılımcılarıyız","WEBSITE_TECH_LINVODB":"Verilerinizi sağlayan bir veritabanı teknolojisi düzenlenmiştir ve oturum açtığınız her yerde kullanılabilir.","WEBSITE_TECH_LINVODB_EXTRA":"Şirket içi teknoloji","WEBSITE_CREATE_ADDON":"Kendi eklentinizi oluşturun","WEBSITE_CREATE_ADDON_DETAIL":"Video içeriği sunan bir hizmetin var mı? Sizin eklenti oluşturarak Stremio\'nun özelliklerinden yararlanmanıza yardımcı olacağız.","WEBSITE_CREATE_ADDON_BENEFITS":"Stremio Eklentisi Yaratmanın Faydaları","WEBSITE_P2P_BEAUTY":"Uçtan uca akışının güzelliği","WEBSITE_P2P_1":"İsteğe bağlı veya canlı akışla güvenilir ve satın alınabilir Full HD/4K video","WEBSITE_P2P_2":"Mükemmel bir kullanıcı deneyimi sağlayan dağıtım platformu","WEBSITE_P2P_3":"Tam ihtiyaçlarınızı karşılayan bir eklenti oluşturacağız","WEBSITE_P2P_CONTACT":"İlgilendin mi? <a href=\'mailto:office@stremio.com\'>Bize ulaş</a>manı bekliyoruz.","WEBSITE_P2P_CONTACT_EXTRA":"İçeriğinizi Stremio ile entegre etmenize yardımcı olmaktan mutluluk duyacağız!","WEBSITE_P2P":"Bir süre sonra, oyunun adını değiştiren bir teknoloji gelir. Herhangi bir kullanım durumuna uyum sağlamak için mükemmel performans ve çok yönlülük sağlayan P2P video akışı motoru kurmaya zaman ve çaba harcadık.\\nDRM özellikli P2P video, talep üzerine veya canlı akış için bize ulaşın.","WEBSITE_THOUGHTS":"Paylaştığımız düşünceler:","WEBSITE_SPREAD":"Stremio kelimesini herkese duyurun:","WEBSITE_CONTACT":"Eğer bizimle iletişime geçmek istiyorsanız, devam edin","WEBSITE_OPENSOURCE":"Açık kaynak projelerimiz için, bize git","WEBSITE_BITCOIN":"Bitcoin bağışla:","WEBSITE_FAQ":"Sıkça sorulan sorular","WEBSITE_FAQ_SHORT":"SSS","WEBSITE_QUESTIONS":"Sorular","WEBSITE_TOS":"Kullanım şartları","WEBSITE_LEGAL":"Yasal","WEBSITE_PAGE_ABOUT":"Hakkında","WEBSITE_PAGE_BECOME_PARTNER":"Ortak ol","WEBSITE_ALL_YOU_CAN_WATCH":"Tamamını İzleyebilirsin","WEBSITE_FREEDOM_TO_STREAM":"İzleme Özgürlüğü","WEBSITE_WHAT_IS_STREMIO":"Stremio nedir?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio, video içerik toplama için tek duraklı bir merkezdir. Sahip olduğunuz herhangi bir cihaz üzerinden her türlü kaynaktan video keşfedin, düzenleyin ve izleyin.","WEBSITE_WHAT_IS_STREMIO_P2":"Filmler, TV programları, diziler, canlı televizyonlar ya da YouTube ve Twitch.tv gibi web kanalları. Bunların hepsini Stremio\'da bulabilirsiniz.","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio, video eğlence için tek noktadan çözüm sunan modern bir medya merkezidir. Kurulumu kolay eklentilerden video içeriğini keşfeder, izler ve düzenlersiniz.","WEBSITE_WHAT_IS_STREMIO_P2_V2":"Filmler, TV programları, canlı TV veya web kanalları. Tüm bunları Stremio\'da bulabilirsiniz.","WEBSITE_ENJOI_ON_ALL_DEVICES":"Tüm Medya cihazlarınızda keyfini çıkarın","WEBSITE_DEVICES_COLLECT":"Stremio\'dan toplayın","WEBSITE_DEVICES_IMPORT_FB":"Facebook\'tan içe aktarın","WEBSITE_DEVICES_LOCAL":"Yerel sürücünüzden ekleyin","WEBSITE_JOIN_THE_PARTY_NOW":"Şimdi partiye katılın","WEBSITE_DEVICES_ALL":"Tüm cihazlarınızda kullanımı kolay;","WEBSITE_EXTENDABLE_CATALOG":"Sonsuz genişletilebilir video kataloğu;","WEBSITE_ORGANIZE_YOUR_MEDIA":"Medyanızı düzenlemek için harika özellikler;","WEBSITE_AS_SEEN_ON":"Görüldüğü gibi","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"Hakkımızda","WEBSITE_LINK_TECHNOLOGY":"Teknoloji","WEBSITE_LINK_APPS":"Uygulamalar","WEBSITE_LINK_DOWNLOADS":"İndirmeler","WEBSITE_MORE":"Daha fazlası","WEBSITE_LINK_ADDONS":"Eklentiler","WEBSITE_LINK_ADDON_SDK":"Eklenti SDK","WEBSITE_LINK_CONTRIBUTE":"Katkıda bulun","WEBSITE_LINK_COMMUNITY":"Topluluk","WEBSITE_LINK_BLOG":"Blog","WEBSITE_MORE_MORE":"... ve Daha fazlası","WEBSITE_LINK_HELP":"Yardım merkezi","WEBSITE_LINK_CONTACTS":"İş görüşmeleri","WEBSITE_LINK_TOS":"Şartlar ve koşullar","WEBSITE_LINK_PRAVACY":"Gizlilik ilkesi","WEBSITE_SUBSCRIBE":"Abone ol","WEBSITE_NEWSLETTER":"Şaşırtıcı şeyler için haber bültenimize kaydolun","WEBSITE_PLACEHOLDER_EMAIL":"E-posta adresin","WEBSITE_COMMUNITY":"Topluluk","WEBSITE_LINK_PRAVACY_LEGAL":"Gizlilik ve yasal","WEBSITE_WHY":"Neden yapıyoruz?","WEBSITE_WHY_P1":"Stremio\'da her gün çalışmaya başlıyoruz, çünkü talep üzerine video endüstrisi için önemli bir sorunu çözmek istiyoruz. Her dakika yayınlanan yeni birçok içerik var ve bununlar içinde yol bulmanız neredeyse imkânsız.","WEBSITE_WHY_P2":"İnsanlara bu muazzam video eğlence dünyasında gezinmelerine ve keyif alacakları yeni içerikler keşfetmelerine yardımcı oluyoruz. Uygulamalarımız filmleri, dizileri, canlı televizyonlarını, web kanallarını ve daha fazlasını bir araya getirir. Kullanıcıların sevdikleri başlıkları ve yayıncıları bulmalarını inanılmaz derecede kolaylaştırmayı amaçlıyoruz.","WEBSITE_WHY_P3":"Hizmetimizi herhangi bir cihazda, istediğiniz zaman kullanabilir ve Stremio\'yu ihtiyacınız olan tek video eğlence merkezi haline getirebilirsiniz.","WEBSITE_TEAM":"TAKIM","WEBSITE_TEAM_P":"Stremio ekibi küçük ama güçlü: arkadaki 10 kişi ile, X dilinde kod yazıyoruz ve yazılım geliştirme, UI ve UX tasarım, pazarlama ve reklamcılık dahil iş dünyası ve girişimler konularında uzmanlıklar paylaşıyoruz.","WEBSITE_FEATURES":"Özellikler","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"Yeni içeriği kolayca keşfedin","WEBSITE_FEATURES_DISCOVER_P":"İzlenecek yeni filmleri, TV programlarını, dizileri ve kanalları kolayca keşfedin. Kategoriye, türe, derecelendirmeye, yeniliğe vb. göre göz atın veya bulmak için sadece bir isim yazın. Stremio yeni video içeriği bulmayı çok kolay hale getiriyor.","WEBSITE_FEATURES_ALL_CONTENT":"Tüm video içeriğiniz tek bir ekranda","WEBSITE_FEATURES_ALL_CONTENT_P1":"Hangi filmleri, dizileri veya videoları tamamlamadığınızı görün ve izlemeye devam edin. Yeni bölümler ve sürümler için bildirim alın. Görüntüleme alışkanlıklarınıza göre alacağınız önerilere göz atın.","WEBSITE_FEATURES_LIBRARY":"Video kitaplığınızı düzenleyin","WEBSITE_FEATURES_LIBRARY_P1":"Tek bir tıklama ile Stremio kitaplığınıza herhangi bir başlık ekleyin ve içeriklerinizi türe, yeniliğe ya da alfabetik olarak düzenlenmiş bir şekilde bulun.","WEBSITE_FEATURES_CALENDAR":"İzlediğiniz her şeyi takip edin","WEBSITE_FEATURES_CALENDAR_P1":"Kitaplığınıza eklediğiniz tüm filmlerin ve dizilerin takvim görselleştirmesini alın. Stremio takviminizi dışa aktarın ve senkronize edin. Böylece yeni bir bölümün veya bir ilk gösterimin ne zaman sona ereceğini bilirsiniz.","WEBSITE_FEATURES_BIG_SCREEN":"Video içeriğinizin keyfini daha büyük bir ekranda çıkarın","WEBSITE_FEATURES_BIG_SCREEN_P1":"İzlediğiniz her şeyi tek bir tıklama ile ister telefon, ister tablet, isterseniz TV\'den başka bir cihaza aktarın.","WEBSITE_FEATURES_SOURCES":"Birçok farklı kaynaktan video izleyin","WEBSITE_FEATURES_SOURCES_P":"Tek bir şık, kullanımı kolay uygulama ile birçok farklı sağlayıcıdan elde edilen videonun keyfini çıkarmak için resmi ve topluluk eklentilerini yükleyin.","WEBSITE_CREATE_AN_ADDON":"Bir eklenti oluşturun","WEBSITE_FEATURES_SYNC":"Kitaplığınızı farklı cihazlar arasında eşitleyin ve oynatmaya devam edin","WEBSITE_FEATURES_SYNC_P1":"Tüm cihazlarınıza hesabınızla giriş yapın ve kitaplığınızın, eklentilerinizin, oynatma ve takviminizin senkronize edilmesinin keyfini çıkarın.","WEBSITE_FEATURES_EXTENDABLE":"Eklentilerle genişletilebilir video kataloğu","WEBSITE_FEATURES_EXTENDABLE_P1":"Stremio eklenti kataloğu, çeşitli video içeriğini yüklemek ve izlemek için bir dizi eklenti sağlar. Bu eklenti kataloğu; filmler, şovlar, canlı TV, spor, haberler, podcast\'ler, web kanalları, video oyunları ve daha fazlasını içerir.","WEBSITE_FEATURES_AUTO_SUBS":"Otomatik altyazılar","WEBSITE_FEATURES_AUTO_SUBS_P1":"Altyazı eklentilerimizle, tercih ettiğiniz dil için otomatik olarak seçilen seçenekleri elde edersiniz.","WEBSITE_FEATURES_CHROMECAST":"Chromecast ile yayınlayın","WEBSITE_FEATURES_CHROMECAST_P1":"Video içeriğinizin keyfini daha büyük bir ekranda çıkarın veya izlediğiniz her şeyi başka bir cihaza yayınlayın.","WEBSITE_FEATURES_KEEP_TRACK":"En sevdiğiniz TV programlarını ve web kanallarını takip edin","WEBSITE_FEATURES_KEEP_TRACK_P1":"Favori dizilerinizin ve web kanallarınızın yeni bölümleri için bir takvim görselleştirmesi ve bildirimler alın.","WEBSITE_FEATURES_POWER_USER":"Güçlü kullanıcı özellikleri","WEBSITE_FEATURES_POWER_USER_P1":"Harici oynatıcıda oynatın","WEBSITE_FEATURES_POWER_USER_P2":"Torrent dosyasından veya magnet bağlantısından oynatın","WEBSITE_FEATURES_POWER_USER_P3":"Facebook beğenilerinden veya yerel diskten kitaplığınıza aktarın","WEBSITE_ADD_ONS":"Eklentiler","WEBSITE_ADD_ONS_P1":"Stremio\'nun sağladığı tüm video içeriği, bir eklenti sistemi aracılığıyla sağlanır - hiçbir içerik veya içerik sağlayıcısı uygulamaya yerleştirilmemiştir.","WEBSITE_ADD_ONS_P2":"İki eklenti grubu mevcut: resmi eklentiler ve topluluk eklentileri","WEBSITE_ADD_ONS_P3":"Resmi olanlar Stremio tarafından geliştirilir ve barındırılır. Buna karşın topluluk eklentileri, onları barındıran topluluk üyelerimiz tarafından oluşturulur.","WEBSITE_ADDONS_OFFICIAL":"Resmi eklentiler","WEBSITE_ADDONS_WATCHUB":"En sevdiğiniz filmleri, dizileri ve şovları iTunes, Hulu, Amazon ve diğer İngiltere/ABD hizmetleri gibi sağlayıcılardan izleyin.","WEBSITE_ADDONS_YOUTUBE":"En sevdiğiniz YouTube kanallarını reklamsız izleyin ve yeni yüklemeler için bildirimler alın.","WEBSITE_ADDONS_FILMON":"Canlı TV, film ve sosyal televizyonu ücretsiz izleyin. 600 TV kanalı, 45.000 ücretsiz film, belgesel ve daha fazlası.","WEBSITE_ADDONS_OPENSUBTITLES":"Film ve diziler için, birçok dilde her gün güncellenen binlerce altyazı çevirisi.","WEBSITE_ADDONS_COMMUNITY":"Topluluk eklentileri","WEBSITE_ADDONS_FILMON_VOD":"Filmon.tv\'den talep üzerine video izleyin.","WEBSITE_ADDONS_TWICH":"Twitch.tv\'den canlı akış izleyin - e-spor endüstrisi için bir video akış platformu.","WEBSITE_ADDONS_VODO":"Bağımsız filmleri kesinlikle ücretsiz izleyin.","WEBSITE_ADDONS_NETFLIX":"Netflix filmlerini ve web dizilerini izleyin.","WEBSITE_ADDONS_CREATE":"Eklenti oluşturun","WEBSITE_ADDONS_CREATE_P1":"İsterseniz kendi eklentinizi geliştirebilirsiniz. Bu şekilde, kendiniz ve topluluğumu içim yeni video içeriklerine erişim verebilir ve dünya çapında milyonlarca kullanıcıdan oluşan yeni bir hedef kitleye ulaşabilirsiniz.","WEBSITE_ADDONS_START_CREATE":"Başlarken, Stremio eklenti SDK sayfasını ziyaret edin:","WEBSITE_DOWNLOADS":"İndirmeler","WEBSITE_DOWNLOADS_P1":"En iyi performans için, Stremio uygulamalarının en güncel sürümünü kullanmanızı öneririz. Bununla birlikte, herhangi bir nedenle daha eski bir sürüm kullanmak istiyorsanız, buradan indirebilirsiniz.","WEBSITE_DOWNLOADS_FOR_WIN":"Windows için Stremio","WEBSITE_DOWNLOADS_FOR_MAC":"macOS için Stremio","WEBSITE_DOWNLOADS_FOR_LINUX":"Linux için Stremio","WEBSITE_DOWNLOADS_FOR_ANDROID":"Android için Stremio","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Android TV için Stremio","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Android Mobil için Stremio","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Steam Deck için Stremio","WEBSITE_DOWNLOADS_FOR_IOS":"iOS için Stremio (sınırlı sürüm)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"Katkıda Bulunun","WEBSITE_CONTRIBUTE_P1":"Stremio platformu, açık kaynak kodludur ve şu anda kaynağı olmayan içerik için kolayca bir eklenti oluşturabilirsiniz.","WEBSITE_CONTRIBUTE_WHY":"Neden bir eklenti oluşturmalısınız?","WEBSITE_CONTRIBUTE_WHY_P1":"Video içeriğiniz için yeni kitleye ulaşın","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio\'nun kullanıcı tabanı hızla büyüyor. Lansmanının ilk yılında Stremio, dünyada 1 milyon kullanıcı kazandı ve platformun ikinci yılında bu sayı 2,5 milyona yükseldi.","WEBSITE_CONTRIBUTE_WHY_P3":"Eklentiniz ile bu kitleye kolayca ulaşabilir ve video içeriğinizi onlara dağıtabilirsiniz.","WEBSITE_CONTRIBUTE_ALL":"En sevdiğiniz filmleri, videoları, dizileri ve kanalları tek bir yerden izleyin","WEBSITE_CONTRIBUTE_ALL_P1":"Stremio\'da henüz bulunmayan belirli bir türdeki içeriğin hayranı mısınız? Bunun için bir eklenti oluşturun ve piyasadaki en büyük ve en kolay kullanımlı eğlence merkezlerinden birinde favori videolarınızı izlemenin keyfini çıkarın.","WEBSITE_CONTRIBUTE_ALL_P2":"Üstüne üstlük, sizinle benzer şekilde düşünen diğer Stremio topluluğu üyelerinin sonsuz şükranlarını alırsınız.","WEBSITE_CONTRIBUTE_MONETIZE":"Eklentinizi para kazanılabilir hale getirin ve onun yardımıyla para kazanın","WEBSITE_CONTRIBUTE_MONETIZE_P1":"Stremio için yeni bir eklenti geliştirdikten sonra, birkaç farklı yolla kolaylıkla para kazanabilirsiniz. Bunu düşünüyorsanız, ","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":" adresinden bizimle iletişime geçmekten çekinmeyin. Eklentiden para kazanma seçenekleri konusunda danışmanlık sunmaktan ve size tavsiyelerde bulunmaktan memnuniyet duyarız.","WEBSITE_CONTRIBUTE_TRANSLATE":"Gönüllü çevirmen olun","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"Farklı dillerde Stremio uygulamalarının keyfini çıkarmak istiyorsanız, gönüllü çevirmenler topluluğumuza katılabilirsiniz. Onlar, Stremio\'nun sürümlerini birçok farklı dilde eklememize yardımcı oluyorlar.","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"Başlamak için sabırsızlanıyor musunuz?","WEBSITE_TRANSALTE_STREMIO":"Stremio\'yu Çevirin","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"Resmi topluluklar","WEBSITE_COMMUNITY_OFFICIALS_P1":"Büyüyen Stremio topluluğunun bir parçası olun. Bizi sosyal medyada takip edin ve \'Merhaba\' demekten çekinmeyin; hayranlarımızı dinlemeyi çok seviyoruz! ","WEBSITE_COMMUNITY_UNOFFICIALS":"Resmi olmayan topluluklar","STREMIO_COMMUNITY_NL":"Stremio Hollanda","STREMIO_COMMUNITY_BRASIL":"Stremio Brezilya","STREMIO_COMMUNITY_GERMANY":"Stremio Almanya","STREMIO_COMMUNITY_BELGIUM":"Stremio Belçika","STREMIO_COMMUNITY_FRANCE":"Stremio Fransa","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portekiz","STREMIO_COMMUNITY_ITALY":"Stremio İtalya","STREMIO_COMMUNITY_UK":"Stremio İngiltere","STREMIO_COMMUNITY_USA":"Stremio ABD","STREMIO_COMMUNITY_MEXICO":"Stremio Meksika","STREMIO_COMMUNITY_ADDONS":"Stremio Eklentileri","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"Ortaklar ve destekçiler","WEBSITE_COMMUNITY_GOODIES":"Stremio şekerlemeleri","WEBSITE_COMMUNITY_WALLPAPERS":"Duvar kağıtları","WEBSITE_COMMUNITY_ART":"Topluluk Sanat Galerisi","WEBSITE_LINK_ART":"Topluluk sanat galerisi","WEBSITE_CONTACT_US":"Bize ulaşın","WEBSITE_CONTACT_US_P1":"Herhangi bir sorunuz, yorum veya önerileriniz varsa, aşağıdaki iletişim formu aracılığıyla bizimle irtibata geçmekten çekinmeyin.","WEBSITE_CONTACT_US_P2":"Bulgaristan\'da bulunduğumuzu unutmayın; bu nedenle, saat dilimi farklılıklarına bağlı olarak yanıt için bir gecikme olabilir.","WEBSITE_CONTACT_US_SUCCESS":"Mesajınız gönderildi. Size en kısa sürede geri döneceğiz.","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"Lütfen geçerli bir e-posta adresi giriniz!","WEBSITE_CONTACT_US_Q_RELATED_TO":"Sorunuzla ne ile alakalı?","WEBSITE_CONTACT_US_Q_OS":"İşletim sisteminiz nedir?","WEBSITE_CONTACT_US_PH_EMAIL":"E-posta adresiniz","WEBSITE_CONTACT_US_PH_MESSAGE":"İletiniz","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"GÖNDER","WEBSITE_CONTACT_US_Q_1":"Nasıl yüklenir?","WEBSITE_CONTACT_US_Q_2":"Nasıl kaldırılır?","WEBSITE_CONTACT_US_Q_3":"(HTML) Lazanya nasıl yapılır?","WEBSITE_CONTACT_US_Q_4":"Eklentiler","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"Teknoloji","WEBSITE_TECHNOLOGY_P1":"Teknolojiyi ve çılgın bilimi seviyoruz. </br> İşte Stremio\'ya güç veren şeyler (hepsi açık kaynaklı).","WEBSITE_TECHNOLOGY_P_QT":"Geliştirilen en iyi çapraz platformlu yazılım.","WEBSITE_TECHNOLOGY_P_MPV":"Ücretsiz, açık kaynaklı ve çapraz platformlu bir medya oynatıcı","WEBSITE_TECHNOLOGY_P_RN":"React Native, yalnızca JavaScript kullanarak mobil uygulamalar oluşturmanızı sağlar.","WEBSITE_TECHNOLOGY_P_VLC":"Multimedya almak için uygulamaya gömülü medya çerçevesi.","WEBSITE_TECHNOLOGY_P_REALM":"Realm bir mobil platform ve SQLite & Core Data\'nın yerini alıyor.","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js açık kaynaklı, platformlar arası bir JavaScript çalışma zamanı ortamıdır.","WEBSITE_TECHNOLOGY_P_RUST":"Rust, özellikle güvenli eşzamanlılık olmak üzere güvenliğe odaklanan çok paradigmalı bir sistem programlama dilidir.","WEBSITE_TECHNOLOGY_CONTRIBUTE":"Projeye katkıda bulunun","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"Stremio\'ya katkıda bulunmanın ve ürünün daha da iyi olmasına yardımcı olmanın iki yolu vardır.","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"Platformu tercüme ederek değerli dil becerilerini bağışlayabilirsiniz...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"ya da","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... topluluk eklentileri oluşturmak için kodlama becerilerinizi kullanabilirsiniz. ","WEBSITE_TRANSLATE_STREMIO":"Stremio\'yu Çevirin","WEBSITE_404_OH_NO":"Olamaz! Aradığınız sayfa burada değil...","WEBSITE_GO_HOME":"Girişe git","WEBSITE_LINK_OTHER_DOWNLOADS":"Diğer indirmeler","WEBSITE_FAQ_ABR":"SSS","WEBSITE_SUPPORT":"Destek","WEBSITE_DOWNLOAD_4_0_BETA":"Stremio 4 beta\'yı Hemen indirin","WEBSITE_GET_FOR_DESKTOP":"Masaüstü için alın","WEBSITE_LINK_ADDON_COMPETITION":"Eklenti yarışması","WEBSITE_LINK_ART_CONTEST":"Sanat yarışması","WEBSITE_MY_ACCOUNT":"Hesabım","WEBSITE_MAINPAGE_FAQ_001_H1":"Stremio nedir?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio, istediğiniz her şeyi izleme özgürlüğü sunan modern bir medya merkezidir.","WEBSITE_MAINPAGE_FAQ_002_H1":"Nasıl çalışır?","WEBSITE_MAINPAGE_FAQ_002_P1":"Stremio\'yu cihazınıza yükleyip bir hesap oluşturduktan sonra, yapmanız gereken tek şey eklenti kataloğunu ziyaret etmek ve istediğiniz eklentiyi yüklemektir!","WEBSITE_MAINPAGE_FAQ_002_P2":"Bundan sonra, içeriği keşfetmeye başlamak için Keşfet veya Pano bölümlerine gidebilirsiniz.","WEBSITE_MAINPAGE_FAQ_003_H1":"Burada ne izleyebilirim?","WEBSITE_MAINPAGE_FAQ_003_P1":"Çok şey var: Filmler, TV programları, Web kanalları, Spor, TV kanallarını izleyin ya da podcast\'leri ve daha fazlasını dinleyin. Eklenti sistemimiz sayesinde çeşitli içeriklere erişebilirsiniz.","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio açık kaynaklı mı?","WEBSITE_MAINPAGE_FAQ_004_P1":"Evet, şu bağlantıları kontrol edebilirsiniz: ${1}masaüstü uygulaması${2} ve ${3}GitHub kuruluşu${4}.","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio güvenli mi?","WEBSITE_MAINPAGE_FAQ_005_P1":"Evet, Stremio açık kaynak kodlu bir yazılım olduğundan, kod herkes tarafından denetlenebilir ve kendiniz de kodunu inceleyebilirsiniz.","WEBSITE_MAINPAGE_FAQ_006_H1":"Mahremiyetime ne dersin?","WEBSITE_MAINPAGE_FAQ_006_P1":"Kullanıcıların gizliliğine saygı duyuyoruz. Hesabınızı oluşturmak ve senkronize etmek için gerekli minimum temel veri dışında herhangi bir kişisel veri toplamıyoruz.","WEBSITE_MAINPAGE_FAQ_006_P2":"Ayrıca kayıt sırasında ${1}Misafir modu${2} vardır ve hiçbir veri gerektirmez: Bu modda, arka tarafa çağrı yapılmaz. Ancak, kitaplığınızı cihazlar arasında senkronize edebilmek gibi yararlı özelliklerin ödün vermeniz gerekir.","WEBSITE_MAINPAGE_FAQ_007_H1":"Televizyonuma yayınlayabilir miyim?","WEBSITE_MAINPAGE_FAQ_007_P1":"Evet, Chromecast\'i destekliyoruz ve hem masaüstü hem de mobil uygulamalardan (Android) yayınlayabilirsiniz.","WEBSITE_MAINPAGE_FAQ_008_H1":"Stremio\'nun kaç eklentisi var?","WEBSITE_MAINPAGE_FAQ_008_P1":"2019 sonu itibariyla, 50\'nin üzerinde. Daha fazla bilgi için eklenti kataloğumuza bakın.","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio eklenti kataloğundakinin ötesine genişletilebilir mi?","WEBSITE_MAINPAGE_FAQ_009_P1":"Evet, şunları kontrol etmelisiniz: ${1}PimpMyStremio${2}, ${3}Reddit toplulukları${4}, ${5}Stremio İndirici${6} vb.","WEBSITE_MAINPAGE_FAQ_010_H1":"Stremio hangi cihazları destekliyor?","WEBSITE_MAINPAGE_FAQ_010_P1":"Windows, Mac ve Linux için masaüstü uygulamalarımız mevcut. Mobil cihazlar için, Android ve iOS\'u destekliyoruz. Ancak iOS\'un işlevsellik açısından sınırlı olduğunu unutmayın (çoğu eklentiyi desteklemez).","WEBSITE_MAINPAGE_FAQ_010_P2":"NVIDIA Shield ve Amazon Fire Stick gibi Stremio\'yu çalıştırabileceğiniz birçok Android tabanlı cihaz var. Ancak bunları resmi olarak desteklemiyoruz.","WEBSITE_MAINPAGE_FAQ_011_H1":"Stremio\'ya bazı içerikler ekleyebilir misiniz?","WEBSITE_MAINPAGE_FAQ_011_P1":"Üzgünüz, kendimizi hiçbir içeriği sağlamıoruz. Ancak ne kadar çok Stremio eklentisi yüklerseniz, o kadar çok içerik bulabilirsiniz.","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio magnet bağlantılarını oynatabilir mi?","WEBSITE_MAINPAGE_FAQ_012_P1":"Evet. Ayrıca normal HTTP bağlantılarını ve torrent dosyalarını da oynatabilir (sürükleyin ve bırakın).","WEBSITE_MAINPAGE_FAQ_013_H1":"Bir video indirip çevrimdışı izleyebilir miyim?","WEBSITE_MAINPAGE_FAQ_013_P1":"Çevrimdışı kullanım gelecek bir özelliktir. Ancak Stremio\'nun cihazınızda önbelleklemesine izin verirseniz (ayarlar panelinden) videoyu daha sonra bağlantı olmadan izleyebilirsiniz.","WEBSITE_MAINPAGE_FAQ_014_H1":"Hiçbir şey çalışmıyor, yardım edin!","WEBSITE_MAINPAGE_FAQ_014_P1":"Eklentileri yüklediğinizden emin misiniz? Cevabınız evetse, ${1}yardım merkezimize${2} danışın.","WEBSITE_MAINPAGE_FAQ_015_H1":"Stremio geliştirme faaliyetlerini nasıl sürdürüyor?","WEBSITE_MAINPAGE_FAQ_015_P1":"Nadiren rahatsız edici olmayan reklamlar yayınlıyoruz, ancak bir bağış modeline geçmeyi düşünüyoruz.","WEBSITE_MAINPAGE_FAQ_015_P2":"Daha fazla soru için ${1}yardım merkezimize${2} gidin.","HELP_LEARN_MORE":"Hakkınızda daha fazla bilgi edinmemize yardımcı olun.","LIFESTYLE":"Yaşam stili","SPORTS":"Spor","FOOD_HEALTH":"Yemek ve Sağlık","BEAUTY_FASHION":"Güzellik ve Moda","NEWS":"Haber","GAMING":"Oyun","SCIENCE_EDUCATION":"Bilim ve Eğitim","MUSIC":"Müzik","TRAVEL":"Seyahat","LATE_NIGHT":"Gece Gösterisi","REALITY":"Gerçeklik","COMEDY":"Komedi","DIY":"Nasıl Kendin Yaparsın","TECH":"Teknoloji","CINEMA":"Sinema","CONTINUE":"Devam","SLOW_LOADING":"YAVAŞ MI YÜKLENİYOR?","I_GIVE_UP":"VAZGEÇTİM","LEARN_MORE":"Daha fazla bilgi edinin","POOR_SOURCE":"Bu kaynak yetersiz veya internet bağlantınız yeterince hızlı değil","PICK_CATEGORIES_ERR":"En az 3 kategori seçmek zorundasınız","ADJUST_TIMING":"Ayarlanacak zaman ","ADJUST_SIZE":"Ayarlanacak boyut ","SEARCH_ANYTHING":"Her Şeyi Arayabilirsiniz...","ALL_CATEGORIES":"Tümü","SEARCH_CATEGORIES":"Filmler, Diziler, YouTube ve TV","SEARCH_PERSONS":"Aktörler, Yönetmenler ve Yazarlar","SEARCH_PROTOCOLS":"HTTP ve Magnet Bağlantıları","SEARCH_TYPES":"IMDB / TVDB Bağlantıları","WATCHED":"İzlendi","SHOW_LESS":"Daha az göster","LAST_SEARCHES":"Son aramalar","CLEAR_HISTORY":"Geçmişi temizle","CHOOSE_SOME":"BUNLARDAN BAZILARINI SEÇİN:","NO_WEB_REMOTE":"Web Uzaktan Kontrolü yüklenemedi","STREMIO_OFFLINE":"Stremio çevrimdışı","STREMIO_EXPENSIVE_CONNECTION":"Mobil veri bağlantısı kullandığınızı algıladık, devam etmek istiyor musunuz?","USE_DATA":"Veriyi kullan","WARNING":"Uyarı","MORE_INFO":"Daha Fazla Bilgi ...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"Yükleniyor ...","STREMIO_TV_BACK_TO_LANGUAGES":"Dillere geri dön","STREMIO_TV_REMOTE":"Uzaktan Kontrol","STREMIO_TV_GO_TO":"Git:","STREMIO_TV_OR_SCAN":"ve tara:","STREMIO_TV_ADDON_INSTRUCTIONS":"Tercih ettiğiniz eklentileri yüklemek için lütfen talimatları takip edin.","STREMIO_TV_LIVE_TV":"Canlı TV","STREMIO_TV_RESUME_WATCHING":"İzlemeye Devam Et","STREMIO_TV_LOADING_BACKGROUND":"Arka planda yükleniyor","STREMIO_TV_CHECKING_AUTHENTICATION":"Kimlik doğrulama denetleniyor","STREMIO_TV_LOADING_BOARD":"Pano yükleniyor","STREMIO_TV_LOGIN_HEADER_LINE_1":"Kullanıcılarımızın yazılımımızla mümkün olan en iyi kişiselleştirilmiş deneyime sahip olmalarını istiyoruz.","STREMIO_TV_LOGIN_HEADER_LINE_2":"Bu nedenle, hesabınızı oluşturmanızı ve/veya hesabınıza oturum açmanızı rica ederiz.","STREMIO_TV_LOGIN_FOOTER_LINE_1":"Anlayışınız için teşekkür ederiz,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Stremio Ekibi","STREMIO_TV_REMOTE_INSTRUCTIONS":"Web Uzaktan Konrolünü Akıllı Telefon / Tablet / Masaüstünüzle kullanmak için:","STREMIO_TV_WIFI_SETUP":"Kablosuz Kurulumu","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle bir internet bağlantısı algılayamadı.","STREMIO_TV_WIFI_DETAILS_1":"Şuna bağlan:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"Parola kullan:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"Bağlantıyı bir web tarayıcısı ile aç:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"Varsayılan","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"Son İzlenene Göre","STREMIO_TV_LIBRARY_SORT_NAME":"Ada Göre","STREMIO_TV_LIBRARY_TIMES_WATCHED":"İzlenme Sayısına Göre","STREMIO_TV_DETAILS_SEASON_NUMBER":"Sezon ${1}","STREMIO_TV_STREAMS_LOADING":"${1} / ${2} eklenti yüklendi...","STREMIO_TV_STREAMS_STILL_LOADING":"${1} eklentisi hala yükleniyor...","STREMIO_TV_PLAYER_SETTINGS":"Oynatıcı ayarları","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"Altyazı gecikmesi","STREMIO_TV_PLAYER_AUDIO_DELAY":"Ses gecikmesi","STREMIO_TV_PLAYER_VIDEO_SCALING":"Görüntü ölçeği","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"Desteklenmeyen akış kaynağı","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"Harici bağlantıyı açma başarısız","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"ExoPlayer ile oynat","STREMIO_TV_PLAYER_PLAY_IN_VLC":"libVLC player ile oynat","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"Oynatma hatasından dolayı libVLC player\'a geçiliyor","STREMIO_TV_ADDONS_TITLE":"Eklentileri yüklemek veya yapılandırmak için Telefonunuzda veya PC\'nizde Stremio\'yu kullanın ve \\"Eklentileri Eşitle\\"ye basın","STREMIO_TV_ADDONS_SUBTITLE":"Not: Aynı Stremio hesabını kullandığınızdan emin olun.","STREMIO_TV_ADDONS_SYNC_ADDONS":"Eklentileri Eşitle","STREMIO_TV_ADDONS_SYNC_SUCCESS":"Eklentiler başarılı olarak eşitlendi","STREMIO_TV_ADDONS_SYNC_FAILED":"Eklentileri eşitleme başarısız oldu","STREMIO_TV_META_LINK_FAILED":"Üst bağlantıyı açma başarısız oldu","STREMIO_TV_CATALOG_LOADING":"Katalog hala yükleniyor...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"Arayüz dili güncellendi","STREMIO_TV_SETTINGS_THEME_UPDATED":"Tema güncellendi","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Varsayılan Oynatıcı","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"Harici Oynatıcı","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"Tercih Edilen Dil","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"İkincil Tercih Edilen Dil","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"Tünelli Oynatma","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"Bazı cihazlarda olası oynatma sorunları","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"Bazı görüntü biçimleri çalışmayabilir","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"Önbellekleme yok","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"Varsayılan","STREMIO_TV_SETTINGS_PROFILE_SOFT":"Yavaş","STREMIO_TV_SETTINGS_PROFILE_FAST":"Hızlı","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"Çok Hızlı","STREMIO_TV_SETTINGS_SERVER_URL":"Yayın akışı sunucusu URL\'si","STREMIO_TV_SETTINGS_SERVER_VERSION":"Sunucu sürümü","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"Bilinmiyor","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio sürümü","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"Sunucu URL\'sini düzenle","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"Bir yayın akışı sunucusu URL\'si girin","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"Stremio\'nun Gizlilik İlkesini okumak için şu adresi ziyaret edin:","STREMIO_TV_SETTINGS_TOS_TEXT":"Stremio\'nun Şartlar ve Koşullarını okumak için şu adresi ziyaret edin:","STREMIO_TV_NAV_SEARCH":"Ara","STREMIO_TV_NAV_HOME":"Giriş","STREMIO_TV_NAV_DISCOVER":"Keşfet","STREMIO_TV_NAV_LIBRARY":"Kitaplık","STREMIO_TV_NAV_MOVIES":"Filmler","STREMIO_TV_NAV_SERIES":"Diziler","STREMIO_TV_NAV_CHANNELS":"Kanallar","STREMIO_TV_NAV_TV":"Canlı TV","STREMIO_TV_NAV_SETTINGS":"Ayarlar","STREMIO_TV_NAV_ADDONS":"Eklentiler","STREMIO_TV_LOGIN_TITLE":"Hesabı Bağla","STREMIO_TV_LOGIN_EXPIRES_IN":"Sona erme tarihi","STREMIO_TV_LOGIN_STEP_ONE":"Yukarıdaki QR Kodu tarayın veya","STREMIO_TV_LOGIN_STEP_TWO":"Stremio hesabınıza oturum açın","STREMIO_TV_LOGIN_NEW_LINK":"Yeni bir bağlantı isteyin","STREMIO_TV_LOGIN_LINK_REFRESHED":"Oturum açma kodu yenilendi","STREMIO_TV_SEARCH_PLACEHOLDER":"Bir şeyler yazın","STREMIO_TV_SEARCH_NO_ADDONS":"Kataloglar için herhangi bir eklenti istenmedi!","STREMIO_TV_SEARCH_BUTTON":"Ara","STREMIO_TV_SEARCH_KEY_DEL":"Sil","STREMIO_TV_SEARCH_KEY_SPACE":"Boşluk","STREMIO_TV_SEARCH_KEY_CLEAR":"Temizle","STREMIO_TV_SEARCH_HISTORY_TITLE":"Geçmişi Temizle","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"Başlıklar, Aktörler, Kanallar ve daha fazlasını arayabilirsiniz...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"Arama Geçmişini Temizle","STREMIO_TV_FILTERS_DESCRIPTION":"Aşağıdaki süzgeçlerden birini seçin","FILTERS":"Süzgeçler","SETTINGS":"Ayarlar","ACCOUNT":"Hesap","LOGOUT":"Oturumu Kapat","THEMES":"Temalar","PLAYBACK":"Oynatma","PLAYBACK_SPEED":"Oynatma Hızı","AUDIO_TRACKS":"Ses İzleri","VIDEOS":"Görüntüler","SERVER":"Sunucu","LINKS":"Bağlantılar","ABOUT":"Hakkında","INTERFACE":"Arayüz","ANIMATIONS":"Animasyonlar","STATUS":"Durum","LANGUAGE":"Dil","SIZE":"Boyut","DELAY":"Gecikme","BOLD":"Kalın","TEXT_COLOR":"Metin Rengi","OUTLINE_COLOR":"Anahat Rengi","BACKGROUND_COLOR":"Arka Plan Rengi","BACKGROUND_BLUR":"Arka Plan Bulanıklığı","SEEK_TIME_DURATION":"Atlama Süresi","AUTO_PLAY":"Sonraki Bölümü Otomatik Oynat","PLAY_NOW":"Şimdi Oynat","MARK_AS_WATCHED":"İzlendi olarak İşaretle","MARK_AS_UNWATCHED":"İzlenmedi olarak İşaretle","REWIND_TO_BEGINNING":"En Başa Al","CONTINUE_WATCHING":"İzlemeye Devam Et","ALL":"Tümü","SECONDS":"saniye","ON":"AÇIK","OFF":"KAPALI","RELOAD":"Yeniden Yükle","EDIT_URL":"URL\'yi Düzenle","NONE":"Hiçbiri","EMBEDDED":"Gömülü","REMOTE_SWITCH_DEVICES":"Cihazları Değiştir","REMOTE_VIDEOS":"Görüntüler","REMOTE_ADJUST_TIMING":"Zamanlamayı ayarla","REMOTE_ADJUST_SIZE":"Boyutu ayarla","REMOTE_COULD_NOT_BE_LOADED":"Web Uzaktan Kontrolü yüklenemedi","REMOTE_RETRY":"Yeniden Dene","TORRENT_PROFILE_DEFAULT":"Varsayılan","TORRENT_PROFILE_SOFT":"Yavaş","TORRENT_PROFILE_FAST":"Hızlı","TORRENT_PROFILE_ULTRA_FAST":"Çok Hızlı","FAQ_001_H1":"Stremio nedir?","FAQ_001_P1":"Stremio, video eğlencesi için kullanım kolaylığı düşüncesiyle tasarlanmış bir medya merkezi yazılımıdır. Stremio organize etmenize izin verir & kendi film, dizi, kanal ve canlı TV koleksiyonunuzu izleyin.","FAQ_001_P2":"Stremio, size gösterilen içeriği yerel diskinizden ve eklentiler sisteminden toplar.","FAQ_001_P3":"İlgilerinize göre yeni bölümler/videolar/filmler çıktığında da sizi uyarır ve size özel film önerileri sunar.","FAQ_02_H1":"Stremio\'nun Kodi ve Plex\'ten ne farkı var?","FAQ_02_P1":"Bu iki yazılımdan ilham aldık. Ancak farklı hedeflerimiz var - Stremio özellikle eğlence videolarını hedef alıyor ve kullanımının çok kolay olması nedeniyle ana çözüm olma yolunu arıyor.","FAQ_02_P2":"Stremio, Kodi ve Plex kadar özelleştirilebilir ve zengin özellikli olmayacak, ancak kullanımı çok daha kolay. Sadece ${1} al ve ${2} gör :)","FAQ_03_H1":"Stremio\'nun Netflix\'ten farkı nedir?","FAQ_03_P1":"Yine, Netflix ilham kaynağımızdan biridir. Netflix\'in kullanıcı deneyimine ek olarak bir çok eklenti elde etmeye çalışıyoruz. Ama en önemlisi, kendi kütüphanenizi yönetme ve eklenti sistemimizle yeni içerik kaynaklarını ekleme özgürlüğünü sunuyoruz.","FAQ_03_P2":"Stremio\'yu sınırsız olarak genişletebilirsiniz. Bu nedenle Stremio\'yu kullandığınızda, Netflix\'in lisansını alabildiği içerikle asla sınırlı kalmazsınız. Örneğin, Stremio aracılığıyla ${1} Filmon.tv ${2}, ${3} Twitch.tv${4}, ${5}YouTube${6}, ${7}Vodo${8} ve hatta ${9}Netflix${10}\'in kendisinden içerik izleyebilirsiniz!","FAQ_04_H1":"Stremio\'nun Flipboard\'dan farkı nedir?","FAQ_04_P1":"Bu soruyu sıkça görmüyoruz, yeni başlayanlarla konuşurken hariç :)","FAQ_04_P2":"Stremio, tasarım gereği videonun Flipboard olmasını sağlayan bir içerik toplayıcısıdır. Bu, Pano bölümünde çok açık bir şekilde görülmektedir; Flipboard gibi takip ettikleriniz için size kataloglar ve yeni bölüm/yeni video bildirimleri sunar.","FAQ_05_H1":"Stremio\'nun Popcorn Time\'dan farkı nedir?","FAQ_05_P1":"Stremio ve Popcorn Time, kullanıcı arabirimi olarak benzer, çünkü video eğlence kataloglarını doğru yapmanın başka bir yolu yok :)","FAQ_05_P2":"Ancak, Popcorn Time, belirli kaynaklardaki torrentleri akış yapmaya odaklanırken, Stremio sınırsızdır ve yalnızca bir içerik toplayıcısıdır - belirli bir içerik kaynağına kilitlenmez.","FAQ_05_P3":"Ayrıca, varsayılan olarak herhangi bir torrent eklentisi sağlamıyoruz. Bu nedenle Stremio, resmi işlevselliği olan Popcorn Time kullanım durumunu kapsamamaktadır.","FAQ_05_P4":"Bir diğer önemli fark ise, Popcorn Zamanı tamamen açık kaynaklı, Stremio ise ${1} kısmen açık kaynaklıdır${2}.","FAQ_06_H1":"Bu filmi/diziyi ekler misiniz?","FAQ_06_P1":"Hayır, üzgünüz :(","FAQ_06_P2":"Diğer sorularda birçok kez belirtildiği gibi, Stremio kendisi tarafından herhangi bir içerik sağlamaz; her şey eklentiler sistemi aracılığıyla eklenir. Bir içerik isteğiniz var ise Oynatıcı içindeki “Sorun bildir” düğmesini kullanabilirsiniz: Bu kullanmakta olduğunuz eklentinin oluşturucusuna bir e-posta gönderecektir.","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"X için eklenti oluşturur musunuz?","FAQ_08_P1":"Bu tamamen mümkündür.","FAQ_08_P2":"Bir eklenti ile ilgili bir fikriniz varsa, bize ${1}office@stremio.com${2} adresinden birkaç satır yazın, ancak lütfen eklenti fikrinizin herhangi bir telif hakkı veya kullanım şartlarını ihlal etmediğinden emin olun.","FAQ_08_P3":"Şu anda, yol haritamızda bulunan sonraki şeyler; FandangoNOW, Filmon.tv, talep üzerine video, Crunchyroll için eklenti.","FAQ_09_H1":"Stremio, BitTorrent kullanıyor mu?","FAQ_09_P1":"Evet, Stremio bir akış protokolü olarak BitTorrent\'i destekliyor. Bunu bir torrent eklentisiyle veya bir .torrent dosyasını Stremio\'ya sürükleyip bırakarak ya da Arama Çubuğuna bir magnet bağlantısı yapıştırarak kullanabilirsiniz.","FAQ_09_P2":"BitTorrent\'i kullanan tek resmi eklentinin, indie içerik sağlayan ve tamamının BitTorrent ile dağıtılmasına izin veren ${1}Vodo${2} olduğunu lütfen unutmayın.","FAQ_09_P3":"Telif hakkı ihlaline neden olabilecek üçüncü taraf eklentilerinin kullanılmasını desteklemiyoruz.","FAQ_10_H1":"Stremio\'da resmi eklentilerle neleri izleyebilirim?","FAQ_10_P1":"Varsayılan olarak, Filmon.tv, YouTube ve Vodo içeriğini gömülü oynatıcı ile Stremio\'nun içinde izleyebilirsiniz. Ayrıca, Twitch.tv ve diğerleri için bir eklentimiz var.","FAQ_10_P2":"Bu birleştirilmiş bir seçim sağlar:","FAQ_10_L1":"Popüler TV kanalları, Filmon.tv tarafından sağlanmıştır - örneğin E4, BBC, Bollyworld TV","FAQ_10_L2":"YouTube\'dan her şey - örneğin BBC News, Top Gear, Vevo, PewDiePie","FAQ_10_L3":"Vodo ile Indie filmleri","FAQ_10_L4":"Twitch.tv ile çevrimiçi oyun yayınları","FAQ_10_P3":"Buna ek olarak, Guidebox ve Netflix eklentileri ile sağlanan, tamamen, Stremio\'da <b>oynatılmayan</b>, ancak verilen hizmete yönlendiren birçok içerik kaynağı vardır. Örneğin, Guidebox eklentisi, TubiTV ve Crackle gibi hizmetlerden ABD\'de ücretsiz olarak yayın yapabileceğiniz bir film seçimi yapacaktır.","FAQ_11_H1":"Stremio yüklenmiyor, ne yapabilirim?","FAQ_11_P1":"Windows kullanıyorsanız,bu ${1}alternatif yükleyiciyi${2} deneyin","FAQ_11_P2":"Mac OS X kullanıyorsanız, lütfen OS X Mavericks(10.9)\'den daha eski hiçbir şeyi desteklemediğimizi unutmayın.","FAQ_11_P3":"Linux kullanıyorsanız, şu anda yalnızca 64 bit (x64) Linux\'u desteklediğimizin farkında olun.","FAQ_11_P4":"Sorununuzu yine de çözemezseniz, lütfen ${1}Facebook grubumuza${2} yazın.","FAQ_12_H1":"Antivirüs programım neden uyarı veriyor? Stremio güvenli mi?","FAQ_12_P1":"Stremio\'nun ${1}100% temiz${2} olduğundan emin olun.","FAQ_12_P2":"Virüsten koruma yazılımınız şikayetçi. Çünkü bazı antivirüs programlarının reklam yazılımı olarak tanıdığı reklamcıyı yükleyicimize dahil ediyoruz.","FAQ_12_P3":"Hala emin değilseniz, bizim ${1}alternatif yükleyicimizi${2} deneyebilirsiniz.","FAQ_13_H1":"Nasıl eklenti oluşturabilirim?","FAQ_13_P1":"Yeni başlayanlar için, GitHub\'daki ${1}eklentiler sistemi modülüne${2} göz atmanızı öneririz.","FAQ_13_P2":"Ardından, ${1}Merhaba dünya dersini${2} takip edebilirsiniz.","FAQ_13_P3":"Herhangi bir programlama becerisine sahip değilseniz, lütfen fikrinizi bize ${1}Reddit topluluğundan${2} ya da ${3}office@stremio.com${4} adresinden bildirebilirsiniz.","FAQ_14_H1":"Eklentiler nasıl yayınlanır?","FAQ_14_P1":"Bir eklenti ve sunucu oluştururken ve bildiriminize çalışan bir eklenti adresini işaret eden bir <b>bitiş noktası</ b> alanı koyduğunuzda, eklenti kendisini ${1}Eklenti kataloğumuzda${2} otomatik olarak yayınlayacaktır.","FAQ_14_P2":"Bu durum, stremio-addons modülünün sunucu parçası, eklentiyi duyurmak için API\'yı otomatik olarak çağırır. API\'mız, <b>bitiş noktası</ b> değerini geçerli bir eklenti olarak doğruladığında, katalogda gösterilmeye başlayacaktır.","FAQ_15_H1":"Tarayıcımda Stremio\'yu çalıştırabilir miyim?","FAQ_15_P1":"Şu an değil, ama bu geliyor!","FAQ_15_P2":"Bir Alfa görmekten hoşlanıyorsanız, burada görebilirsiniz: ${1}alpha4.strem.io${2}. Bu alfa üzerinde akışın devre dışı olduğunu unutmayın. Chrome, Firefox, Opera ve Edge\'i destekliyoruz.","FAQ_16_H1":"TV\'ye yayın yapma çalışmıyor/altyazı çalışmıyor","FAQ_16_P1":"TV\'ye yayın yapmak, farklı TV markaları ve modelleri arasında tutarsız olan DLNA teknolojisini kullanıyor. Bu nedenle, her durumda test etme yeteneğine sahip değiliz, bu yüzden mükemmel olmaktan çok uzak. Buna rağmen, sürekli olarak geliştirmeye çalışıyoruz ancak DLNA\'nın TV\'nizle ne zaman düzgün bir şekilde çalışmaya başlayacağına dair size bir zaman tahmini veremiyoruz.","FAQ_16_P2":"Yayın yapma menüsünde TV\'nizi göremiyorsanız, lütfen yönlendiricinizi, TV\'yi ve PC\'nizi yeniden başlatmanın yanı sıra ağ bağlantınızı devre dışı bırakmayı ve yeniden etkinleştirmeyi deneyin (Windows\'ta, Ağ\'a sağ tıklayın ve Etkinleştir/Devre Dışı Bırak\'ı kullanın).","FAQ_16_P3":"Hala bir sorunla karşılaşıyorsanız, TV markanızı ve model bilgilerinizi ${1}office@stremio.com${2} adresine göndererek bize yardımcı olabilirsiniz.","FAQ_16_P4":"Bu arada, çok iyi desteklediğimiz Chromecast\'i öneriyoruz ya da TV\'nizi bir HDMI kablosu ile bilgisayarınıza takmanız yeterlidir.","FAQ_17_H1":"Stremio donuyor ya da çöküyor, ne yapabilirim?","FAQ_17_P1":"Her şeyden önce, Windows 7\'yi AVG anti-virüs ile kullanıyorsanız: bu kombinasyonda bir sorunumuz var. Sorun AVG\'nin kendi içindedir ve bizim tarafımızdan çözülmesinin makul bir yolu yoktur. Ne yazık ki, istisnalar veya anti-virüs devre dışı bırakmak işe yaramaz. Tek çözüm, AVG\'yi başka bir şeyle değiştirmektir.","FAQ_17_P2":"Sorun bu değilse de, ancak hala Windows kullanıyorsanız, lütfen en son hizmet paketine güncelleyin ve GPU sürücülerinizi güncelleyin/yeniden yükleyin, sonra tekrar deneyin.","FAQ_17_P3":"Sorun hala devam ediyorsa veya Mac veya Linux kullanıyorsanız, lütfen sorunun ayrıntılarını bize ${1}Facebook grubumuzdan${2} yazabilirsiniz.","FAQ_18_H1":"Bir eklentiyi nasıl yapabilirim?","FAQ_18_P1":"Yeni başlayanlar için, GitHub\'daki ${1}eklentiler sistemi modülüne${2} göz atmanızı öneririz.","FAQ_18_P2":"Ardından, ${1}Merhaba dünya dersini${2} takip edebilirsiniz.","FAQ_18_P3":"Herhangi bir programlama becerisine sahip değilseniz, lütfen fikrinizi bize ${1}Reddit topluluğundan${2} ya da ${3}office@stremio.com${4} adresinden bildirebilirsiniz.","FAQ_19_H1":"Stremio neden disk alanı kaplıyor?","FAQ_19_P1":"Stremio\'da aktarılan video dosyalarını geçici olarak saklamak için <b>yerel önbellek</b> vardır.","FAQ_19_P2":"Bu iki avantaja sahiptir: Birincisi, Stremio\'nun akışını daha pürüzsüzleştirmek için videoyu ön yüklemeye olanak tanır. İkincisi, videoları yerel önbellekte tutar, böylece onları çevrimdışı izlemeye devam edebilirsiniz.","FAQ_19_P3":"Stremio\'nun ne kadar yer tuttuğu Ayarlar panelindeki <b>Önbellek</b> ayarına bağlıdır. Şu anda akışlı video bundan daha büyük olmadığı sürece, Stremio diskinizde belirlenen miktara (ör. 2GB) kadar tutabilir, bu durumda onu korumak için yeterli miktarda saklama alanı ayırmanız gerekir.","FAQ_20_H1":"Önbellek klasörü nerede?","FAQ_20_P1":"Windows\'ta, Ayarlar\'da seçtiğiniz sürücüdeki stremio-cache (ör. \\"E:\\\\stremio-cache\\")","FAQ_20_P2":"MacOS\'ta, burada \\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"Linux\'ta, burada \\"~/.stremio/stremio-cache\\" ya da \\"~/stremio-cache\\"","FAQ_21_H1":"\\"Akış sunucusu bulunamadı\\" hatası alıyorum, ne yapabilirim?","FAQ_21_P1":"Bu hatayı alırsanız, bu birkaç şeyden biri anlamına gelir:","FAQ_21_P2":"1) ${1}Web sürümümüz${2} aracılığıyla YouTube / BitTorrent kaynağı tarafından desteklenen bir eklenti kullanmaya çalışıyorsunuz. Bu durumda, ${3}web sitemizden${4} masaüstü sürümümüzü yüklemelisiniz.","FAQ_21_P3":"2) Stremio kurulumunuzda bir sorun var. Bu durumda, ${1}web sitesinden${2} en yeni masaüstü sürümünü yeniden yüklemeyi deneyin. Bu işe yaramazsa, anti-virüs programları ve güvenlik duvarları devre dışı bırakarak PC\'nizi yeniden başlatın ve tekrar deneyin. Bu da işe yaramazsa, lütfen ${3}Facebook grubumuzdan${4} bize yazın.","FAQ_22_H1":"iOS\'ta çoğu eklentiyi göremiyorum/kullanamıyorum","FAQ_22_P1":"Çünkü, Apple\'ın App Store şartlar ve koşullarındaki kısıtlamalar nedeniyle iOS uygulamasını yalnızca belirli bir eklenti grubuyla sınırladık.","FAQ_22_P2":"Ancak gelecekte iOS için daha fazla eklenti olacak ve ayrıca iOS uygulamasını Stremio akış sunucusuna bağlayarak tüm Stremio eklentilerini kullanmanızı sağlayacak bir entegrasyon da ekleyebiliriz."}')},8714:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"电影","TYPE_series":"剧集","TYPE_tv":"电视频道","TYPE_channel":"频道","TYPE_other":"其他","TYPE_movie_PL":"电影","TYPE_series_PL":"剧集","TYPE_tv_PL":"电视频道","TYPE_channel_PL":"频道","TYPE_other_PL":"其他","TYPE_ALL":"All","VIDEO":"视频","BACK":"返回","MORE":"更多","DONE":"完成","COPY":"复制","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"发现","Board":"首页","Library":"库","My Library":"我的库","Calendar":"日历","NOTIFICATION_ONLINE":"您当前处于在线状态","NOTIFICATION_OFFLINE":"您当前处于离线状态","INTERNET_CONNECTION":"网络连接","STORAGE_FULL_TITLE":"警告:储存空间已满!","STORAGE_FULL_TEXT":"Stremio将无法保存您的设置、首选项或登录信息,考虑重新启动或重新安装Stremio。","SEARCH":"搜索","SEARCH_NO_RESULTS":"未找到结果","SEARCH_EXPLANATION_CONTENT":"搜索电影、剧集、YouTube和电视频道","SEARCH_EXPLANATION_PEOPLE":"搜索演员、导演和编剧","SEARCH_PASTE_LINKS":"粘贴HTTP和Magnet链接","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"添加到库中","REMOVE_FROM_LIB":"从库中删除","ADDED_TO_LIB":"添加到库中","REMOVED_FROM_LIB":"从库中删除","TRAILER":"预告片","WATCH_TRAILER":"观看预告片","WATCH_NOW":"立即观看","SHOW":"查看","SHOW_MOVIE":"查看电影","WATCH_RANDOM":"随机观看","IMDB_RATING":"IMDb评分","YEAR":"年份","DIRECTOR":"导演","WRITER":"编剧","LEAD_ACTORS":"主演","CAST":"全部演员","CREW":"全部工作人员","SHOW_MORE_CAST":"显示更多 »","AIRED":"播出时间","SEASONS":"季","GENRE":"类型","CATALOG":"目录","SUMMARY":"简介","SHOW_MORE":"显示更多","SIMILAR":"相似","UPCOMING":"即将上映","ENDED":"已完结","DURATION":"时长","FEATURED":"功能","METADATA":"元数据","CATEGORY":"类别","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"搜索视频","SEARCH_PLACEHOLDER":"搜索或粘贴URL","ADDON":"插件","ADDONS":"插件","OFFICIAL":"官方","ADDONS_OFFICIAL":"官方Stremio插件","ADDONS_POPULAR":"在您所在的地区很受欢迎","ADDON_FREE":"免费","ADDON_PEERED":"连接","ADDON_SUBSCRIPTION":"订阅","ADDON_STREAM_GEORESTRICTED":"在您所在的地区不提供","ADDON_STREAM_OFFLINECACHE":"离线缓存","ADDON_STREAM_LOCALFILE":"本地文件","SHARE_ADDON":"分享插件","AVAILABLE_STREAMS":"可用流媒体","NO_STREAM":"未找到流媒体","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"要获取更多流媒体,请安装更多插件","STREAM_NOT_SUPPORTED":"此平台不支持所选流媒体。","ADDON_CATALOGUE":"显示所有插件 »","ADDON_CATALOGUE_MORE":"安装插件","REPO_ADDED":"已添加存储库","ADDON_REPO_EXIST_ERR":"此插件集合已存在","ADDON_REPO_ERR":"添加集合时出错","ADDON_ADD_ERR":"添加插件时出错","ERR_ADDON_PROTECTED":"无法卸载插件,它受到保护","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"出了一些问题——身份验证可能失败","ERR_NOT_COLLECTION_URL":"不是集合URL","ERR_NOT_ADDON_URL":"不是有效的插件URL","ERR_DETECTFROMURL":"再此URL中找不到插件/集合","ADDON_DUPLICATE_WARNING":"警告:重复的插件","ADDON_COLLECTION_SET_FAILED":"将已安装的插件同步到您的账户失败","SETTINGS_DATA_EXPORT":"导出用户数据","ADDON_PULL_FAILED":"从您的帐户同步已安装的插件失败","REFRESH_ON_CLICK":"点击重试","STILL_IN_THEATER":"电影还在影院上映","WATCH_IN_CINEMA":"请到您本地的影院观看","IN_THEATER":"在影院上映","GET_TICKETS":"购票","UPCOMING_EPISODE":"下一集","UPCOMING_EPISODE_MESSAGE":"这一集即将播出","MISSING_DATE_EPISODE":"缺失的一集日期","MISSING_DATE_EPISODE_MESSAGE":"这一集可能还没有播出","CHANNEL_NOT_SCRAPED":"这个频道还没有被削刮,请过几分钟再来。","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"将其添加到库中,以便在可用时收到通知。","GET_NOTIFIED_WHEN_AVAILABLE":"一旦可用,您将会收到通知。","WARNING_STREAMING_SERVER":"警告:找不到本地流媒体服务器,来自本地文件、YouTube、和BitTorrent的流媒体将不可用。","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"警告:您的硬件可能不支持此视频,请记住,播放可能会很慢。","PLAYER_ERROR":"糟糕,播放器错误","PLAYER_ERROR_LOOKSLIKE":"看起来似乎","PLAYER_ORIENTATION":"播放器方向","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"锁定","PLAYER_ORIENTATION_SENSOR_SHORT":"传感器","PLAYER_ORIENTATION_LANDSCAPE":"播放器方向锁定横向","PLAYER_ORIENTATION_SENSOR":"播放器方向自动(传感器)","PLAYER_PLAYBACK_SPEED":"播放速度","PLAYER_PLAYBACK_ERROR":"播放错误,请重试","PLAYER_PLAYBACK_ERROR_UNKNOWN":"未知错误","PLAYER_PLAYBACK_ERROR_DEFAULT":"抱歉,{{productName}}无法播放此视频。","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"直播","PLAYER_NEXT_VIDEO_TITLE":"下个视频","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"关闭","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"现在观看","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"流媒体","CASTING_TO":"投屏到","NETWORK_STATUS":"网络状态","STREAM_SPEED":"串流速度:","STREAM_BUFFERED":"已缓冲:","PEERS_INFO":"节点信息","PEERS_ACTIVE":"活跃:","PEERS_CONNECTED":"已连接:","PEERS_WAITING":"等待:","TRANSCODING_WARNING":"警告:转码视频。","STREAM_LOADING":"加载...","PLAYING_LOCAL":"从本地文件播放","PLAYING_CACHE":"从缓存播放","WRONG_SUBS":"字幕错误?","ERR_SUBS_LOADING_TITLE":"加载字幕时出错","ERR_SUBS_LOADING":"字幕加载失败:这可能是您正在使用的插件或网络连接的问题","WARN_FOLLOWING_SUB_ADDONS_FAILED":"以下字幕插件失败","ERR_CASTING_UPDATE_TITLE":"无法更新投屏设备信息:流媒体服务器可能离线","CHOOSE_DEVICE":"选择在哪个设备上播放","NO_CAST_DEVICES":"无可用投屏设备。","NO_SETTINGS":"无可用设置。","PHONE_TABLET":"手机/平板电脑","SUBTITLES":"字幕","SUBTITLES_CHANGE":"调整字幕","SUBTITLES_CHANGE_NONE":"抱歉,这种语言没有其他字幕。","SUBTITLES_CHANGE_ACIVE":"当前字幕#{{subtitlesDialog.activeIdx + 1}}被激活,点击\\"继续\\"激活字幕#{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"或者,","SUBTITLES_ADJUST_DELAY":"调整字幕延迟:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"或在播放时使用<span>G</span> / <span>H</span>键进行调整。","SUBTITLES_ADJUST_DELAY_TIP":"提示:您可以在播放时使用<span>G</span> / <span>H</span>键进行调整。","SUBTITLES_DELAY":"字幕延迟:","SUBTITLES_LOADING":"加载字幕...","SUBTITLES_UNAVAILABLE":"没有可用的外部字幕","SUBTITLES_DISABLED":"关闭","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"季","EPISODE":"集","SPECIAL":"Special","SORT":"排序","SORT_BY":"排序按照","FILTER":"筛选","SORT_TRENDING":"热门","SORT_RECENT":"最近","SORT_ALPHABET":"首字母","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"评分","SORT_WATCHED":"已观看","SORT_YEAR":"年份","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"新的","New Episodes":"新剧集","New Videos":"新视频","Recommendations":"推荐","LIBRARY_RESUME":"简介","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"详情","LIBRARY_RESUME_DISMISS":"清除","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"功能","DISCOVER_TOP":"热门","DISCOVER_OSCAR":"奥斯卡获奖作品","DISCOVER_WARNING_TITLE":"糟糕!","DISCOVER_EMPTY_CATALOG":"此插件返回空内容。","DISCOVER_ADULT_WARNING":"此内容仅对成人可见,您是否已满18周岁?","DISCOVER_NOADDON_WARNING":"警告:此类型没有可用的Stremio插件,显示已保存的项目,此处不会更新任何内容。","DISCOVER_LOAD_ERR":"内容未加载,发生错误。","DISCOVER_ADDON_UNINSTALLED":"此内容不再可用,您可能已卸载插件。","UNINSTALL_THIS_ADDON":"卸载此插件","ERR_ADDON_NOT_INSTALLED":"未安装此插件,立即安装?","DETAIL_RECEIVE_NOTIF_SERIES":"接受新剧集的通知","DETAIL_RECEIVE_NOTIF_VIDEOS":"接受新视频的通知","SIDEBAR_SHOW_STREAMS":"显示流媒体","RELAUNCH":"立即重新启动!","UPGRADE":"新版本可用!升级至Stremio的最新版本","RELOAD_UI":"重新加载用户界面","MANUAL_UPDATE_TITLE":"更新您的Stremio版本","MANUAL_UPDATE_LINE1":"您运行的是一个过时的Stremio版本,这是非常不推荐的。","MANUAL_UPDATE_LINE2":"请尽快更新。","BUTTON_UPDATE_LATTER":"不是现在","BUTTON_UPDATE_NOW":"更新","ANONYMOUS_USER":"匿名用户","DONT_HAVE_ACC":"还没有账户?","HAVE_ACC":"已经有账户了?","PASSWORD":"密码","PASSWORD_CONFIRM":"确认密码","EMAIL":"电子邮箱","FB_LOGIN":"使用Facebook登录","FB_NOTHINGSHARED":"未经您的允许,任何内容都不会被共享","FB_NOPOST":"我们不会替您发送任何东西","OR":"或","I_ACCEPT":"我接受","I_ACCEPT_BY_CLICKING":"通过点击上面的按钮,我声明我接受","TOS":"条款和条件","MUST_ACCEPT_TERMS":"您必须接受条款","PASSWORDS_NOMATCH":"密码不匹配","SIGN_UP":"注册","SIGN_UP_EMAIL":"使用电子邮箱注册","CLICK_TO_SIGN_UP":"点击此处注册。","LOG_IN":"登录","LOG_OUT":"注销","EXIT_FULLSCREEN":"退出全屏模式","ENTER_FULLSCREEN":"进入全屏模式","PLAY_URL_MAGNET_LINK":"播放URL/Magnet链接","HELP_FEEDBACK":"帮助和反馈","TERMS_OF_SERVICE":"服务条款","PRIVACY_POLICY":"隐私政策","ABOUT_STREMIO":"关于Stremio","USER_PANEL":"用户面板","LOGIN_LABEL":"Login","GUEST_LOGIN":"访客登录","GUEST_LOGIN_NOTICE":"不建议访客登录,使用常规登录允许Stremio同步您的库,接受喜爱的剧集/频道的通知。您确定要继续吗?","GUEST_LOGIN_NOTICE_2":"不建议访客登录,您将没有同步的库和首页通知,这是Stremio的重要功能。您确定要继续吗?","CLICK_HERE":"点击此处","WRONG_PASSWORD":"错误的电子邮箱或密码,如果您忘了密码,","SET_A_PASS":"设置密码","RESET_PASSWORD":"重置密码","FORGOT_PASSWORD":"忘记密码?","EMAIL_USED_WITH_FB":"此电子邮箱与Facebook登陆一起使用。","INVALID_EMAIL":"请输入有效的电子邮箱地址","INVALID_PASSWORD":"请输入有效的密码","CONN_ERR":"连接错误,请稍后再试。\\n\\n如果问题仍然存在,请禁用防火墙/杀毒软件(特别是Bitdefender)。","IMPORT_FROM_GUEST":"从访客账户导入库","RECEIVE_UPDATES_EMAIL":"从Stremio接受电子邮件更新","LOGIN_FAILED":"登陆失败。","SIGNUP_FAILED":"注册失败。","SEARCH_FAILED":"搜索失败","EMAIL_USED":"此电子邮箱已被使用。","WAITING_FB_LOGIN":"使用Facebook登录...","EXTERNAL_PLAYER_TITLE":"在外部播放器中播放","EXTERNAL_REMEMBER_PLAYER":"您想记住您的选择吗","EXTERNAL_ALWAYS_PLAY":"是","EXTERNAL_ONLY_ONCE":"不是","BEST_FIT":"最佳","FIT_SCREEN":"适合屏幕","FILL":"填充","16:9":"16:9","4:3":"4:3","Original":"原始","INTRO_TASTE":"告诉我们您喜欢什么","INTRO_TASTE_LONG":"告诉我们您想看什么","INTRO_TASTE_PICK":"选择{{interestsRemaining}}兴趣","INTRO_TASTE_PICK_MORE":"选择{{interestsRemaining}}更多兴趣","INTRO_TASTE_HELP_US":"帮助我们了解更多有关您的信息。","INTRO_TASTE_CHOOSE_THESE":"选择其中一些:","INTRO_TASTE_CHOOSE_MIN":"至少选3个类别","INTRO_TASTE_CHOOSE_MIN_ERR":"您必须至少选择3个类别!","INTRO_TASTE_LIFESTYLE":"生活方式","INTRO_TASTE_SPORTS":"体育","INTRO_TASTE_FOOD_HEALTH":"饮食与健康","INTRO_TASTE_BEAUTY_FASHION":"美丽与时尚","INTRO_TASTE_NEWS":"新闻","INTRO_TASTE_GAMING":"游戏","INTRO_TASTE_SCIENCE_EDU":"科学与教育","INTRO_TASTE_MUSIC":"音乐","INTRO_TASTE_TRAVEL":"旅行","INTRO_TASTE_LATE_NIGHT":"深夜秀","INTRO_TASTE_REALITY":"真人","INTRO_TASTE_COMEDY":"喜剧","INTRO_TASTE_DIY":"DIY","INTRO_TASTE_TECH":"技术","INTRO_TASTE_CINEMA":"影院","ADDON_NOT_SUPPORTED":"此平台不支持选定的插件。","ADDON_DISCLAIMER":"使用第三方插件将始终受到您的责任和您所在的司法管辖区的法律的约束。","ADDON_ACTIVATE":"激活此插件?","ADDON_REPO_ADD":"插件集合URL","ADDON_ADD":"添加","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"最新消息","BUTTON_CONTINUE":"继续","BUTTON_ACTIVATE":"激活","BUTTON_ACTIVATED":"已激活","BUTTON_CANCEL":"取消","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"清除全部","BUTTON_VIEW_ALL":"查看全部","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"您的库看起来是空的,看看它有多有用:)","HOW_START":"您可以从这里开始:","LIB_EMPTY_CAL":"您的日历显示您库中的剧集。","HOW_START_CAL":"下面是如何添加剧集:","LIB_EMPTY_BOARD":"主页显示与您的库相关的通知&推荐。","HOW_START_BOARD_WAIT":"请在您的库中添加一些剧集或频道给我们几分钟来处理:)","HOW_START_BOARD":"下面是如何向其中添加剧集&电影:","IMPORT_FB":"从<span>Facebook</span>导入您喜欢的东西","IMPORT_TRAKT":"从<span>Trakt</span>导入媒体库","IMPORT_DISCOVER":"从<span>发现</span>中找到有趣的东西","IMPORT_DISK":"导入<span>本地磁盘</span>上的电影或节目","PLEASE_CREATE_ACC":"请<u>创建一个账户</u>以启用库同步&主页。","IMPORT_DISCOVER_SIGNUP":"注册并从<span>发现</span>中找到有趣的东西","IMPORT_DISK_SIGNUP":"注册并导入<span>本地磁盘</span>上的电影或节目","LIB_EMPTY_CLOUD":"云端库","LIB_EMPTY_CLOUD_DESC":"在所有设备上同步个人云端库","LIB_EMPTY_EARLY":"第一时间","LIB_EMPTY_EARLY_DESC":"接收新剧集的通知","LIB_EMPTY_PERSONAL":"个性化","LIB_EMPTY_PERSONAL_DESC":"获取个性化推荐","LIB_EMPTY_CALENDAR_DESC":"安排您的个性化观看日历","LIB_EMPTY_ALL":"注册以获取所有这些:","LIB_EMPTY_BEST":"注册以获得最佳的Stremio","LIB_EMPTY_OTHER":"注册以启用日历和其他炫酷功能","CALENDAR_ADDED":"Stremio日历已添加到默认桌面日历中。","CALENDAR_ADDED_MSG":"如果这不起作用,请手动将此URL添加到日历应用程序中","TRAKT_EXPIRED":"Trakt验证已过期,请转到设置并重新验证","TRAKT_REQUIRES_LOGIN":"Trakt错误","TRAKT_REQUIRES_LOGIN_MSG":"您需要登录","SETTINGS_LABEL":"设置","SETTINGS_NAV_GENERAL":"常规","SETTINGS_NAV_PLAYER":"播放器","SETTINGS_NAV_STREAMING":"流媒体","SETTINGS_NAV_SHORTCUTS":"快捷键","SETTINGS_SHORTCUT_RELOAD_APP":"重新加载应用程序","SETTINGS_SHORTCUT_OPEN_SETTINGS":"打开设置","SETTINGS_SHORTCUT_SWITCH_TABS":"切换标签","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"向前循环标签","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"向后循环标签","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"退出/返回","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"切换全屏","SETTINGS_SHORTCUT_SHOW_CONTROLS":"显示控件","SETTINGS_SHORTCUT_PLAY_PAUSE":"播放/暂停","SETTINGS_SHORTCUT_VOLUME_UP":"增大音量","SETTINGS_SHORTCUT_VOLUME_DOWN":"降低音量","SETTINGS_SHORTCUT_SEEK_NEXT":"寻找下一个","SETTINGS_SHORTCUT_SEEK_PREV":"寻找上一个","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"播放下一个","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"增加字幕大小","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"减小字幕大小","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"增加字幕延迟","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"减少字幕延迟","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"切换侧边栏","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"开机时启动","SETTINGS_VLC_DEFAULT":"使用VLC播放","SETTINGS_UI_LANGUAGE":"用户界面语言","SETTINGS_FULLSCREEN_EXIT":"Esc键退出全屏","SETTINGS_GAMEPAD":"启用游戏手柄支持","SETTINGS_CLOSE_WINDOW":"关闭窗口时结束应用程序","SETTINGS_SUBTITLES_LANGUAGE":"默认字幕语言","SETTINGS_SUBTITLES_SIZE":"默认字幕大小","SETTINGS_SUBTITLES_BACKGROUND":"字幕背景","SETTINGS_SUBTITLES_COLOR":"字幕颜色","SETTINGS_SUBTITLES_COLOR_OUTLINE":"字幕轮廓颜色","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"字幕背景颜色","SETTINGS_SEEK_KEY":"方向键控制进度","SETTINGS_SEEK_KEY_SHIFT":"按住Shift键时方向键控制进度","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"自动播放下一集","SETTINGS_NEXT_VIDEO":"显示播放下一集的通知","SETTINGS_NEXT_VIDEO_TRIGGER":"显示下一集的通知:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"播放前自动调整窗口大小","SETTINGS_OVERRIDE_SERVER":"覆盖流媒体服务器URL(高级)","SETTINGS_SERVER_URL":"流媒体服务器URL:","SETTINGS_SERVER_AVAILABLE":"流媒体服务器可用。","SETTINGS_SERVER_UNAVAILABLE":"流媒体服务器不可用。","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"流媒体HTTPS结点:","SETTINGS_USE_BETA":"始终使用最新的测试版","SETTINGS_IMPORT_FB":"从Facebook导入","SETTINGS_IMPORT_DISK":"从本地磁盘导入","SETTINGS_IMPORT_TRAKT":"从Trakt导入","SETTINGS_PAUSE_MINIMIZED":"最小化时暂停播放","SETTINGS_HWDEC":"硬件解码加速","SETTINGS_BACKGROUND":"后台播放","SETTINGS_SUBSCRIBE_CALENDAR":"订阅到日历","SETTINGS_REQ_EXPORT":"请求导出数据","SETTINGS_ACC_DELETE":"请求删除账户","SETTINGS_CHANGE_PASSWORD":"更改密码","SETTINGS_TOS":"服务条款","SETTINGS_SUPPORT":"联系支持人员","SETTING_LANGUAGE":"语言","SETTINGS_TRAKT":"Trakt自动跟踪","SETTINGS_TRAKT_LOGOUT":"从Trakt.tv注销","SETTINGS_SCAN_FOR_REMOTE":"扫描二维码打开遥控器","SETTINGS_DESKTOP_NOTIFICATIONS":"桌面通知","SETTINGS_DATA_SAVER":"移动数据警告","SETTINGS_LANGUAGE_INTERFACE":"界面","SETTINGS_LANGUAGE_SUBS":"默认字幕","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"自动选择音轨","SETTINGS_DEFAULT_AUDIO_TRACK":"默认音轨","SETTINGS_ACCOUNT":"账户","SETTINGS_VERSION":"版本","SETTINGS_MPV_WINDOW":"在单独窗口中启动播放器(高级)","SETTINGS_PLAY_IN_EXTERNAL":"总是在外部播放器中打开视频","SETTINGS_STORAGE_BUTTON":"清除本地存储","SETTINGS_STORAGE_MODAL_TITLE":"您确定吗?","SETTINGS_STORAGE_MODAL_MESSAGE":"这将清除本地存储并使您注销","SETTINGS_HWDEC_PICKER":"选择硬件加速解码设置","SETTINGS_HW_AUTOMATIC":"自动","SETTINGS_HW_DISABLED":"关闭","SETTINGS_HW_ACCELERATED":"解码加速","SETTINGS_HW_FULL":"全加速","SETTINGS_HW_LEGACY":"旧版","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"音频","SUBSPICKER_SUBTITLES":"插件字幕","SUBSPICKER_BLACK_BACKGROUND":"使用黑色背景色","SUBSPICKER_VERTICAL_OFFSET":"垂直偏移量","SUBSPICKER_SIZE":"大小","SUBSPICKER_DELAY":"延迟","SUBSPICKER_EMBEDDED_SUBS":"内嵌字幕","MOBILE_PRIVACY_POLICY":"隐私政策","MOBILE_CRASH_REPORTING":"崩溃报告","MOBILE_ZOOM_TO_FILL":"缩放填充屏幕","MOBILE_PASSTHROUGH":"数字音频输出(直通)","MOBILE_RUN_LOW_BATTERY":"电池电量低时运行","MOBILE_RUN_FOREGROUND":"作为前台服务运行","MOBILE_PERFORMANCE":"性能&稳定性","MOBILE_SERVER_ONLINE":"在线","MOBILE_SERVER_OFFLINE":"离线","MOBILE_QR_EXPIRES":"二维码到期时间","MOBILE_LOG_INTO":"登陆到您的Stremio账户","MOBILE_SCAN_QR":"扫描上面的二维码或转到","MOBILE_LINK_ACCOUNT":"链接账户","MOBILE_SPEEDPICKER_CANCEL":"取消","MOBILE_SPEEDPICKER_LABEL":"选择播放速度","MOBILE_EMPTY_LIBRARY":"您的库为空","MOBILE_NO_ADDON_ACTIVE":"没有活动的此类型Stremio插件。","MOBILE_ORGANIZER_WARNING":"Stremio Organizer应用程序提供的功能有限,要获得可播放流的列表和完整的Stremio体验,请使用Stremio桌面客户端。","MOBILE_ADDON_LOADING":"仍在加载","MOBILE_ADDONS_LOADING":"插件仍在加载","MOBILE_ADDON":"插件","MOBILE_CONFIGURE_ADDON":"配置插件","MOBILE_CONFIGURE_ADDON_LABEL":"配置插件","MOBILE_ORGANIZER_ADDONS_WARNING":"Stremio Organizer应用程序仅提供有限的插件,要获得完整的Stremio体验,请使用Stremio桌面客户端。","MOBILE_DISCONNECT":"断开连接","MOBILE_LOOKING_FOR_DEVICES":"正在查找设备...","MOBILE_CAST_TO":"投屏到","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"开启","NAVIGATION_OFF":"关闭","MARKETING_AGREE":"我同意接收Stremio的营销通知","QUIT":"退出","CONNECTED":"已连接","AUTHENTICATE":"验证","CACHING":"缓存","SETTINGS_CACHING_DRIVE":"缓存磁盘","ENABLE_LOCAL_FILES_ADDON":"启用本地文件插件(需要重新启动)","LOCAL_ADDON_NOT_ENABLED":"未启用本地插件,单击此处转到设置并启用它","ENABLE_REMOTE_HTTPS_CONN":"启用远程HTTPS连接","TORRENT_PROFILE":"Torrent配置","DATA_CACHING":"数据缓存","MAGNET_PARSING":"分析Magnet链接","January":"一月","February":"二月","March":"三月","April":"四月","May":"五月","June":"六月","July":"七月","August":"八月","September":"九月","October":"十月","November":"十一月","December":"十二月","Monday":"星期一","Tuesday":"星期二","Wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期天","Action":"动作","Comedy":"喜剧","War":"战争","Family":"家庭","Animation":"动画","Adventure":"冒险","Fantasy":"幻想","Crime":"犯罪","Mystery":"神秘","Romance":"浪漫","Drama":"剧情","Horror":"恐怖","Thriller":"惊悚","Sci-Fi":"科幻","Music":"音乐","Biography":"传记","Documentary":"纪录","Sport":"运动","Musical":"音乐剧","Western":"西部","Film-Noir":"黑色电影","News":"新闻","History":"历史","Game-Show":"游戏节目","Reality-TV":"真人秀","Talk-Show":"脱口秀","Film & Entertainment":"电影与娱乐","Gaming":"游戏","From TV":"电视","Lifestyle":"生活方式","Science & Education":"科学与教育","Cooking & Health":"烹饪与健康","Beauty & Fashion":"美丽与时尚","Sports":"体育","News & Politics":"新闻与政治","How-to & DIY":"DIY","Tech":"技术","Automotive":"汽车","Causes & Non-Profits":"事业与公益","Movies":"影视","Uk Live Tv":"英国直播电视台","Fashion":"流行","Business News Radio":"商业新闻电台","Business Tv":"商业电视","Cars & Auto":"汽车与自动化","Comedy Radio":"喜剧电台","Lifestyle Radio":"生活方式电台","News Tv":"新闻电视","Food And Wine":"食物与酒","Latino Tv":"拉丁语电视台","Shopping Tv":"购物电视台","Religion":"宗教","Kids":"儿童","Body & Soul":"身体与灵魂","Education":"教育","Indian Tv":"印度电视台","Extreme Sports":"极限运动","Middle Eastern Tv":"中东电视台","Celebrity Tv":"名人电视台","Science Tv":"科学电视台","Bikini babe":"比基尼宝贝","Outdoors":"户外","German Tv":"德国电视台","French Tv":"法国电视台","Italian Tv":"意大利电视台","Gamer Tv":"伽马电视台","Travel":"旅行","Asian Tv":"亚洲电视台","Entertainment":"游戏娱乐","News Radio":"新闻电台","Music Radio":"音乐电台","Language Learning":"语言学习","Science Radio":"科学电台","Tech Radio":"科技电台","Science & Technology Vod":"科技视频点播","new video":"新视频","new episode":"新一集","new movie":"新电影","recommended":"推荐","we recommend":"我们建议","offer of the day":"当日优惠","news":"新闻","music video":"音乐视频","CTX_SHOW_HOTKEYS":"显示快捷键","CTX_DISMISS_NOTIF":"清除通知","CTX_DISMISS_ALL":"全部清除","CTX_SHARE":"分享","CTX_COPY_SHARE_LINK":"复制分享链接","CTX_COPY_MAGNET_LINK":"复制Magnet链接","CTX_COPY_STREAM_LINK":"复制流媒体链接","CTX_DOWNLOAD_VIDEO":"下载此视频","CTX_DOWNLOAD_SUBS":"下载字幕","CTX_VIEW_ON_YOUTUBE":"在YouTube上观看","CTX_SHOW":"显示","CTX_PLAY":"播放","CTX_PLAY_IN":"播放","CTX_PLAY_ON":"正在播放","CTX_WATCH_ON":"正在观看","CTX_WATCH":"观看","CTX_WATCHED":"已观看","CTX_WATCH_BEGINNING":"从头开始观看","CTX_WATCH_MOBILE":"在移动设备上观看","CTX_REWIND":"回到开头","CTX_MARK_WATCHED":"标记为已观看","CTX_MARK_NON_WATCHED":"标记为未观看","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"将其余部分标记为已观看","CTX_UNMARK_REST":"将其余部分标记为未观看","CTX_RECEIVE_NEW_NOTIF":"接受新通知","CTX_REMOVE_CACHE":"从缓存中删除","CTX_REMOVE_CACHE_EP":"从缓存中删除集","CTX_OPEN_CONTAINING":"打开所在文件夹","CTX_REMOVE":"从库中删除","CTX_AVAILABLE_OFFLINE":"离线可用","CTX_PAUSED":"暂停","CTX_ALWAYS_ON_TOP":"置顶","CTX_FULLSCREEN":"全屏","CTX_WRONG_SUBS":"错误的字幕?","CTX_REPORT_ISSUES":"报告问题","CTX_COPY":"复制","CTX_PASTE":"粘贴","CTX_CLEAR":"清除","CTX_CLEAR_RECENT_SEARCHES":"清除最近搜索记录","HELLO_THERE":"您好","HOPE_YOU_ENJOY":"我们希望您喜欢Stremio,也许它已经是您最喜欢的应用之一了!","WHO_ARE_WE":"我们是谁?我们是它背后的团队。在过去三年里的每天,我们两个努力工作使这个产品越来越好。","SUPPORT_US":"如果您喜欢Stremio,如果Stremio对您来说很有价值,请传播它!","SPREAD_THE_WORD":"现在与您的朋友分享传播关于Stremio的信息","MORE_PEOPLE":"使用Stremio的人越多,效果就越好!","SEND_A_LINK":"或发送一个链接到我们的网站","TIP_LOCALFILES":"提示:您可以将本地视频文件拖放到Stremio中","ADDON_MY":"我的插件","ADDON_COMMUNITY":"社区插件","ADDON_OFFICIAL":"官方插件","ADDON_REPOS":"插件集合","ADDON_SEARCH":"搜索插件","ADDON_INSTALL":"安装","ADDON_CONFIGURE":"配置","ADDON_UNINSTALL":"卸载","ADDON_UPGRADE":"更新","ADDON_INSTALLED":"已安装","ADDON_INSTALLED_MSG":"插件已安装!","ADDON_UPGRADED_MSG":"插件已更新!","ADDON_UNKNOWN":"未知","ADDON_ERR":"插件安装错误!","ADDON_DISCONNECTED":"已断开连接","ADDON_APP_MISSING":"未安装此源的应用程序,您想现在安装吗?","ADDON_APP_INSTALL":"立即安装","ADDON_PAGE":"插件页","ADDON_TOP_CONTENT":"最好从这个插件","ADDON_PROVIDES":"这个插件会给您:","ADDON_WATCH":"立即观看#{types}!","ADDON_WATCH_FREE":"立即免费观看#{types}!","ADDON_ADDON":"插件","ADDON_SUPPORTED_TYPES":"支持的类型","ADDON_SUPPORTED_CATALOGS":"支持的目录","ADDON_PROVIDES_DISCOVER":"发现中的更多#{types}","ADDON_PROVIDES_STREAMS":"观看#{types}","ADDON_PROVIDES_STREAMS_FREE":"免费观看#{types}","ADDON_PROVIDES_SUBTITLES":"#{types}的字幕","ADDON_CANTDETECT":"我们无法检测到正在运行的Stremio,因此我们无法检测您安装了哪些插件。","ERR_NO_META":"找不到有关于此的信息","ERR_GETTING_META":"检索有关于此的信息时出错","ERR_CANT_PARSE_MAGNET":"无法分析Magnet","ERR_NO_MAGNET_INFOHASH":"Magnet缺少有效的Hash","ERR_NO_FILE_PATH":"没有文件路径无法发送请求","ERR_NO_TORRENT":"没有Torrent返回","ERR_NO_SUPPORTERD_FILES":"找不到支持的文件","ERR_OPENING_FILES":"无法打开外部文件","ERR_INVALID_LINK":"无效链接","ERR_REGISTERED_ONLY":"此选项仅适用于已注册用户。","ERR_CLIPBOARD":"无法从剪切板播放","ERR_CLIPBOARD_READ":"无法读取此平台上的剪切板","ERR_CLIPBOARD_GENERIC":"在剪切板中找不到可播放的URL. 请将URL(例如Magnet链接)复制到视频。","BOARD_CONTINUE_WATCHING":"继续观看","BOARD_EXPLANATION_RECOMMENDATIONS":"专门为您挑选的电影。<br />这部电影是一个推荐样例。","BOARD_EXPLANATION_EPISODES":"这里是您最喜爱的剧集的新一集。<br />将您关注的剧集添加到库中。","BOARD_EXPLANATION_VIDEOS":"这里是您最喜爱的频道的新一集。<br />将您关注的YouTube频道添加到库中。","WEBSITE_SLOGAN_WATCH":"立即观看","WEBSITE_SLOGAN_ALL":"一站式视频娱乐解决方案","WEBSITE_SLOGAN_NEW":"您能观看一切","WEBSITE_SLOGAN_NEW_NEW":"自由串流","WEBSITE_WATCH_FROM":"观看","WEBSITE_DOWNLOAD":"立即下载","WEBSITE_DOWNLOAD_FOR":"立即下载","WEBSITE_IS_DESKTOP":"Stremio是一个桌面应用程序,请在PC上打开此页并下载","WEBSITE_DESKTOP_DEMO_VID":"桌面演示","WEBSITE_PAGE_HOME":"首页","WEBSITE_PAGE_FEATURES":"功能","WEBSITE_PAGE_ADDONS":"插件","WEBSITE_PAGE_TECH":"技术","WEBSITE_PAGE_CREATE_ADDON":"创建插件","WEBSITE_PAGE_CONTACTS":"联络","WEBSITE_PAGE_BLOG":"博客","WEBSITE_TYPE_movie":"电影","WEBSITE_TYPE_series_PL":"剧集","WEBSITE_TYPE_tv":"直播电视","WEBSITE_TYPE_channel":"频道","WEBSITE_STREMIO_WHAT_IS":"Stremio是一款帮助您管理和随时观看您喜爱的视频、电影、剧集和电视频道的应用程序","WEBSITE_FEATURES_WATCH":"立即观看高清视频","WEBSITE_FEATURES_WATCH_DETAIL":"点击并播放您喜爱的电影、剧集、视频和电视频道。","WEBSITE_FEATURES_SUBS":"自动加载字幕","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio会自动为您的语言选择同步字幕。","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"在电视和移动设备上播放","WEBSITE_FEATURES_CAST_DETAIL":"适用于AppleTV、Chromecast、智能电视(DLNA/UPnP)和移动设备。","WEBSITE_LIB":"享受在所有设备上同步的个人库","WEBSITE_LIB_COLLECT":"从Stremio收集","WEBSITE_LIB_IMPORT":"从Facebook导入","WEBSITE_LIB_LOCAL":"从本地磁盘添加","WEBSITE_BOARD":"首页 - 通知和推荐的一站式场所","WEBSITE_BOARD_RECOMMEND":"推荐电视节目","WEBSITE_BOARD_TRENDING":"流行电影","WEBSITE_BOARD_NEW":"新视频","WEBSITE_BOARD_EPISODE":"新一集","WEBSITE_BOARD_1":"想看些有趣的东西吗?根据您的喜好得到推荐!","WEBSITE_BOARD_2":"当您最喜爱的电视节目或YouTube频道的新一集播出时获得通知!","WEBSITE_BOARD_YOUTUBE":"YouTube频道的新视频","WEBSITE_BOARD_EPISODES":"您关注的剧集的新一集","WEBSITE_ADDONS":"内容插件","WEBSITE_TECH_DETAIL":"我们热爱科技,我们热爱疯狂的科学!\\nStremio使用了以下开源技术:","WEBSITE_TECH_WCJS":"WebChimera.js允许Stremio以良好的性能播放任何视频格式。","WEBSITE_TECH_WCJS_EXTRA":"我们是项目的核心贡献者","WEBSITE_TECH_ELECTRON":"Electron为Stremio提供了一个创新平台。","WEBSITE_TECH_ELECTRON_EXTRA":"我们是项目贡献者","WEBSITE_TECH_LINVODB":"一种数据库技术,确保您的数据在任何地方登录都受管理和可用。","WEBSITE_TECH_LINVODB_EXTRA":"内部技术","WEBSITE_CREATE_ADDON":"创建您的插件","WEBSITE_CREATE_ADDON_DETAIL":"您有提供视频内容的服务吗?我们将通过创建插件来帮助您从Stremio的功能中获益。","WEBSITE_CREATE_ADDON_BENEFITS":"为Stremio创建插件的好处","WEBSITE_P2P_BEAUTY":"点对点流媒体之美","WEBSITE_P2P_1":"可靠且价格合理的全高清/4K视频点播或流媒体直播","WEBSITE_P2P_2":"提供良好用户体验的分销平台","WEBSITE_P2P_3":"我们将创建一个插件来满足您的确切需要","WEBSITE_P2P_CONTACT":"有兴趣吗?欢迎您通过<a href=\'mailto:office@stremio.com\'>联系我们</a>.","WEBSITE_P2P_CONTACT_EXTRA":"我们很乐意帮助您将您的内容集成到Stremio!","WEBSITE_P2P":"偶然间出现了一种改变游戏名称的技术。 我们投入了大量的时间和精力来构建我们的点对点(P2P)视频流媒体引擎,该引擎可提供出色的性能和多功能性,以适应任何用例。\\n请联系我们以获取支持DRM的P2P视频点播或实时流媒体。","WEBSITE_THOUGHTS":"我们分享的想法:","WEBSITE_SPREAD":"传播关于Stremio的信息:","WEBSITE_CONTACT":"联系我们,我们很高兴收到您的来信!","WEBSITE_OPENSOURCE":"有关我们的开源项目,请转到:","WEBSITE_BITCOIN":"捐赠比特币:","WEBSITE_FAQ":"常见问题","WEBSITE_FAQ_SHORT":"常见问题","WEBSITE_QUESTIONS":"问题","WEBSITE_TOS":"使用条款","WEBSITE_LEGAL":"法律","WEBSITE_PAGE_ABOUT":"关于","WEBSITE_PAGE_BECOME_PARTNER":"成为合作伙伴","WEBSITE_ALL_YOU_CAN_WATCH":"自由观看\\n您想看的一切。","WEBSITE_FREEDOM_TO_STREAM":"自由串流","WEBSITE_WHAT_IS_STREMIO":"什么是Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio是一个一站式视频内容聚合中心。在您拥有的任何设备上发现,管理和观看来自各种来源的视频。","WEBSITE_WHAT_IS_STREMIO_P2":"电影、电视节目、剧集、电视直播或网络频道例如YouTube或Twitch.tv等,您可以在Stremio上找到所有这些内容。","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio是一个现代化的媒体中心,为您的视频娱乐提供一站式解决方案。您可以通过易于安装的插件发现,观看和整理视频内容。","WEBSITE_WHAT_IS_STREMIO_P2_V2":"电影、电视节目、直播电视或网络频道——在Stremio上找到所有这些。","WEBSITE_ENJOI_ON_ALL_DEVICES":"在所有媒体设备上享受","WEBSITE_DEVICES_COLLECT":"从Stremio收集","WEBSITE_DEVICES_IMPORT_FB":"从Facebook导入","WEBSITE_DEVICES_LOCAL":"从本地磁盘添加","WEBSITE_JOIN_THE_PARTY_NOW":"立即加入聚会","WEBSITE_DEVICES_ALL":"易于在所有设备上使用;","WEBSITE_EXTENDABLE_CATALOG":"可无限扩展的视频目录;","WEBSITE_ORGANIZE_YOUR_MEDIA":"强大的媒体管理功能;","WEBSITE_AS_SEEN_ON":"如图所示","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"关于我们","WEBSITE_LINK_TECHNOLOGY":"技术","WEBSITE_LINK_APPS":"应用程序","WEBSITE_LINK_DOWNLOADS":"下载","WEBSITE_MORE":"更多","WEBSITE_LINK_ADDONS":"插件","WEBSITE_LINK_ADDON_SDK":"插件SDK","WEBSITE_LINK_CONTRIBUTE":"贡献","WEBSITE_LINK_COMMUNITY":"社区","WEBSITE_LINK_BLOG":"博客","WEBSITE_MORE_MORE":"... & 更多","WEBSITE_LINK_HELP":"帮助中心","WEBSITE_LINK_CONTACTS":"业务查询","WEBSITE_LINK_TOS":"条款和条件","WEBSITE_LINK_PRAVACY":"隐私政策","WEBSITE_SUBSCRIBE":"订阅","WEBSITE_NEWSLETTER":"加入我们的实时通讯,了解精彩的内容","WEBSITE_PLACEHOLDER_EMAIL":"您的电子邮箱","WEBSITE_COMMUNITY":"社区","WEBSITE_LINK_PRAVACY_LEGAL":"隐私与法律","WEBSITE_WHY":"我们为什么这样做","WEBSITE_WHY_P1":"在Stremio,我们每天都工作,因为我们想解决视频点播行业的一个重要问题。每分钟都有这么多的新内容发布,几乎不可能找到解决的方法。","WEBSITE_WHY_P2":"我们帮助人们浏览这个巨大的视频娱乐世界,发现新的内容来享受。我们的应用程序汇集了电影、剧集、电视直播、网络频道等。我们致力于让用户非常容易地找到他们喜欢的标题和广播。","WEBSITE_WHY_P3":"您可以随时在任何设备上使用我们的服务,使Stremio成为您唯一需要的视频娱乐中心。","WEBSITE_TEAM":"团队","WEBSITE_TEAM_P":"Stremio团队虽小但很强大:我们10个人用X语言编写代码,分享软件开发、UI和UX设计、营销和广告、商业和初创企业方面的专业知识。","WEBSITE_FEATURES":"功能","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"轻松发现新内容","WEBSITE_FEATURES_DISCOVER_P":"轻松发现要观看的新电影、电视节目、剧集和频道。按类别、流派、评分、时间等浏览,或者只需键入一个名称即可找到。Stremio让寻找新的视频内容变得轻而易举。","WEBSITE_FEATURES_ALL_CONTENT":"一块屏幕显示所有视频内容","WEBSITE_FEATURES_ALL_CONTENT_P1":"查看您未看完的电影、剧集或视频,并继续观看;获得新剧集和版本的通知;浏览根据您的观看习惯获得的推荐。","WEBSITE_FEATURES_LIBRARY":"管理您的视频库","WEBSITE_FEATURES_LIBRARY_P1":"只需点击一下,即可将任何标题添加到您的Stremio库中,并按类型、时间或字母顺序整齐地排列内容。","WEBSITE_FEATURES_CALENDAR":"记录您所观看的一切","WEBSITE_FEATURES_CALENDAR_P1":"获取添加到库中的所有电影和系列的日历可视化。导出您的Stremio日历并同步它,这样您就可以随时知道新的一集或首映何时到来。","WEBSITE_FEATURES_BIG_SCREEN":"在大屏幕上欣赏您的视频内容","WEBSITE_FEATURES_BIG_SCREEN_P1":"将您正在观看的任何内容都投屏到另一台设备上,无论是手机、平板电脑还是电视,只需点击一下即可。","WEBSITE_FEATURES_SOURCES":"观看不同来源的视频","WEBSITE_FEATURES_SOURCES_P":"安装官方和社区插件,欣赏来自多个不同供应商的视频。","WEBSITE_CREATE_AN_ADDON":"创建插件","WEBSITE_FEATURES_SYNC":"跨设备同步库并恢复播放","WEBSITE_FEATURES_SYNC_P1":"使用您的帐户在所有设备上登录,享受同步的库、插件、播放和日历。","WEBSITE_FEATURES_EXTENDABLE":"通过插件扩展视频目录","WEBSITE_FEATURES_EXTENDABLE_P1":"Stremio插件目录提供了许多插件,可以从中安装和观看各种视频内容。这包括电影、节目、电视直播、体育、新闻、播客、网络频道、视频游戏等。","WEBSITE_FEATURES_AUTO_SUBS":"自动加载字幕","WEBSITE_FEATURES_AUTO_SUBS_P1":"通过我们的字幕插件,您可以自动选择您喜欢的语言。","WEBSITE_FEATURES_CHROMECAST":"投屏到Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"在更大的屏幕上欣赏您的视频内容,或者将您正在观看的内容投屏到其他设备上。","WEBSITE_FEATURES_KEEP_TRACK":"跟踪您最喜爱的电视节目和网络频道","WEBSITE_FEATURES_KEEP_TRACK_P1":"获取您最喜爱的剧集和网络频道的新一集的日历可视化和通知。","WEBSITE_FEATURES_POWER_USER":"超级用户功能","WEBSITE_FEATURES_POWER_USER_P1":"在外部播放器中播放","WEBSITE_FEATURES_POWER_USER_P2":"从Torrent文件或Magnet链接播放","WEBSITE_FEATURES_POWER_USER_P3":"从Facebook喜爱或本地磁盘导入您的库","WEBSITE_ADD_ONS":"插件","WEBSITE_ADD_ONS_P1":"Stremio提供的所有视频内容都是通过插件系统获取的,应用程序中没有内置任何内容或内容提供商。","WEBSITE_ADD_ONS_P2":"有两组插件可用:官方和社区插件。","WEBSITE_ADD_ONS_P3":"官方插件由Stremio开发和托管,而社区插件由我们的社区成员创建和托管。","WEBSITE_ADDONS_OFFICIAL":"官方插件","WEBSITE_ADDONS_WATCHUB":"从iTunes、Hulu、Amazon和其他英国/美国服务提供商处流式播放您喜爱的电影、剧集和节目。","WEBSITE_ADDONS_YOUTUBE":"观看您喜爱的YouTube频道,获得您关注的贡献者的新上传通知。","WEBSITE_ADDONS_FILMON":"免费观看直播电视、电影和社交电视。600个电视频道,45000部免费电影,纪录片以及更多","WEBSITE_ADDONS_OPENSUBTITLES":"多语种影视字幕,每天上传上千个翻译字幕。","WEBSITE_ADDONS_COMMUNITY":"社区插件","WEBSITE_ADDONS_FILMON_VOD":"观看来自Filmon.tv的点播视频。","WEBSITE_ADDONS_TWICH":"观看来自Twitch.tv(电子竞技行业的视频流媒体平台)的直播。","WEBSITE_ADDONS_VODO":"观看完全免费的独立电影。","WEBSITE_ADDONS_NETFLIX":"观看Netflix的电影和网剧。","WEBSITE_ADDONS_CREATE":"创建插件","WEBSITE_ADDONS_CREATE_P1":"如果您愿意,您可以开发自己的插件。通过这种方式,您可以让自己和我们的社区访问新的视频内容,并接触到全球数百万用户的新目标受众。","WEBSITE_ADDONS_START_CREATE":"要开始,请访问Stremio插件SDK页面:","WEBSITE_DOWNLOADS":"下载","WEBSITE_DOWNLOADS_P1":"为了获得最佳性能,我们建议您使用最新版本的Stremio应用程序。但是,如果出于某种原因,您想使用旧版本,可以在此处下载。","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS(限制版本)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"贡献","WEBSITE_CONTRIBUTE_P1":"Stremio平台是开源的,您可以轻松地为当前没有来源的内容创建一个插件。","WEBSITE_CONTRIBUTE_WHY":"为什么要创建插件?","WEBSITE_CONTRIBUTE_WHY_P1":"为您的视频内容吸引新观众","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio的用户群体正在快速增长,在推出的第一年,Stremio在全球获得了100万用户,在该平台存在的第二年,这个数字增长到250万。","WEBSITE_CONTRIBUTE_WHY_P3":"用插件,您可以轻松接触这些观众并向他们分发您的视频内容。","WEBSITE_CONTRIBUTE_ALL":"在一处观看您喜爱的电影、视频、剧集和频道。","WEBSITE_CONTRIBUTE_ALL_P1":"您是Stremio上尚未提供的特定类型内容的粉丝?为它创建一个插件,在市场上最大、最易使用的娱乐中心之一欣赏您喜爱的视频。","WEBSITE_CONTRIBUTE_ALL_P2":"除此之外,您还会得到其他志同道合的Stremio社区成员的无尽感激。","WEBSITE_CONTRIBUTE_MONETIZE":"通过插件营利,并在其帮助下赚钱","WEBSITE_CONTRIBUTE_MONETIZE_P1":"一旦您为Stremio开发了一个新的插件,您就可以通过多种不同的方式轻松地靠其营利。如果您正在考虑此问题,请随时与我们联系","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":",我们很乐意就插件营利选项向您提供咨询和建议。","WEBSITE_CONTRIBUTE_TRANSLATE":"成为一名志愿翻译者","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"如果您想享受不同语言的Stremio应用程序,您可以加入我们的志愿翻译者社区。他们帮助我们添加多种不同语言的Stremio版本。","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"您想开始吗?","WEBSITE_TRANSALTE_STREMIO":"翻译Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"官方社区","WEBSITE_COMMUNITY_OFFICIALS_P1":"成为不断增长的Stremio社区的一部分。在社交媒体上关注我们,不要害羞地打招呼,我们喜欢听到粉丝的声音!","WEBSITE_COMMUNITY_UNOFFICIALS":"非官方社区","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"合作伙伴和支持者","WEBSITE_COMMUNITY_GOODIES":"Stremio特典","WEBSITE_COMMUNITY_WALLPAPERS":"壁纸","WEBSITE_COMMUNITY_ART":"社区艺术画廊","WEBSITE_LINK_ART":"社区艺术画廊","WEBSITE_CONTACT_US":"联系我们","WEBSITE_CONTACT_US_P1":"如果您有任何问题、意见或建议,请随时通过下面的联系方式与我们联系。","WEBSITE_CONTACT_US_P2":"请记住,我们位于保加利亚,因此可能会由于时区差异而延迟处理您的问题。","WEBSITE_CONTACT_US_SUCCESS":"您的信息已发送。我们会在方便的时候尽快给您回复。","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"请输入有效的电子邮箱!","WEBSITE_CONTACT_US_Q_RELATED_TO":"您的问题与什么有关?","WEBSITE_CONTACT_US_Q_OS":"您的操作系统是什么?","WEBSITE_CONTACT_US_PH_EMAIL":"您的电子邮箱","WEBSITE_CONTACT_US_PH_MESSAGE":"短信","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"发送","WEBSITE_CONTACT_US_Q_1":"如何安装?","WEBSITE_CONTACT_US_Q_2":"如何卸载?","WEBSITE_CONTACT_US_Q_3":"(HTML)如何制作千层面?","WEBSITE_CONTACT_US_Q_4":"插件","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"技术","WEBSITE_TECHNOLOGY_P1":"我们热爱科技,热爱科学。</br>这是Stremio的动力(它都是开源的)。","WEBSITE_TECHNOLOGY_P_QT":"最佳跨平台软件开发工具。","WEBSITE_TECHNOLOGY_P_MPV":"一款免费、开源、跨平台的媒体播放器。","WEBSITE_TECHNOLOGY_P_RN":"React Native允许您仅使用JavaScript构建移动应用程序。","WEBSITE_TECHNOLOGY_P_VLC":"嵌入到应用程序中获取多媒体的媒体框架。","WEBSITE_TECHNOLOGY_P_REALM":"Realm是一个移动平台,是SQLite和Core Data的替代品。","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js是一个开源、跨平台的JavaScript运行环境。","WEBSITE_TECHNOLOGY_P_RUST":"Rust是一种多范式系统编程语言,关注安全性,尤其是安全并发性。","WEBSITE_TECHNOLOGY_CONTRIBUTE":"为项目贡献力量","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"您可以通过两种方式为Stremio做贡献,帮助我们将产品做得更好。","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"您可以通过翻译平台来贡献您宝贵的语言技能...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"或","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... 您可以利用您的编程技巧来创建社区插件。","WEBSITE_TRANSLATE_STREMIO":"翻译Stremio","WEBSITE_404_OH_NO":"糟糕!您要找的页面不在这里...","WEBSITE_GO_HOME":"回到主页","WEBSITE_LINK_OTHER_DOWNLOADS":"其他下载","WEBSITE_FAQ_ABR":"常见问题","WEBSITE_SUPPORT":"支持","WEBSITE_DOWNLOAD_4_0_BETA":"立即下载Stremio 4测试版","WEBSITE_GET_FOR_DESKTOP":"获取桌面","WEBSITE_LINK_ADDON_COMPETITION":"插件比赛","WEBSITE_LINK_ART_CONTEST":"艺术比赛","WEBSITE_MY_ACCOUNT":"我的账户","WEBSITE_MAINPAGE_FAQ_001_H1":"什么是Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio是一个现代化的媒体中心,让您可以自由观看任何您想要的东西。","WEBSITE_MAINPAGE_FAQ_002_H1":"它是如何工作的?","WEBSITE_MAINPAGE_FAQ_002_P1":"一旦您在设备上安装了Stremio并创建了一个帐户,您所要做的就是访问插件目录并安装任何您想要的插件,就可以开始了!","WEBSITE_MAINPAGE_FAQ_002_P2":"之后,您可以进入“发现”或“板”部分,开始探索内容。","WEBSITE_MAINPAGE_FAQ_003_H1":"我可以在这里看什么?","WEBSITE_MAINPAGE_FAQ_003_P1":"很多:电影、电视节目、网络频道、体育、电视频道、收听播客等等。感谢我们的插件系统,您可以访问各种内容。","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio是开源的吗?","WEBSITE_MAINPAGE_FAQ_004_P1":"是的,您可以查看以下链接:${1}桌面应用${2}和${3}GitHub组织${4}。","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio安全吗?","WEBSITE_MAINPAGE_FAQ_005_P1":"是:因为它是开源软件,所以代码可以公开审核,您可以自己查看。","WEBSITE_MAINPAGE_FAQ_006_H1":"我的隐私如何?","WEBSITE_MAINPAGE_FAQ_006_P1":"我们尊重用户隐私,除了创建和同步您的帐户所必需的最低限度外,不收集任何个人数据。","WEBSITE_MAINPAGE_FAQ_006_P2":"注册时还有一个${1}访客模式${2},它不需要任何数据:在这种模式下,不会调用我们的后端。然而,这是以牺牲有用的功能为代价的,比如能够跨设备同步您的库。","WEBSITE_MAINPAGE_FAQ_007_H1":"我可以投屏到电视吗?","WEBSITE_MAINPAGE_FAQ_007_P1":"是的,我们支持Chromecast,您可以从桌面和移动应用程序(Android)进行强制转换。","WEBSITE_MAINPAGE_FAQ_008_H1":"Stremio有多少插件?","WEBSITE_MAINPAGE_FAQ_008_P1":"截至2019年末,超过50个。有关更多信息,请查看我们的插件目录。","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio是否可以扩展到插件目录之外?","WEBSITE_MAINPAGE_FAQ_009_P1":"是的,您应该查看这些:${1}PimpMyStremio${2},${3}Reddit communities${4},${5}Stremio Downloader${6},等等。","WEBSITE_MAINPAGE_FAQ_010_H1":"Stremio支持哪些设备?","WEBSITE_MAINPAGE_FAQ_010_P1":"我们有适用于Windows、Mac和Linux的桌面应用程序。对于移动设备,我们支持Android和iOS,但请记住iOS的功能有限(不支持大多数插件)。","WEBSITE_MAINPAGE_FAQ_010_P2":"有很多基于Android的设备可以在上面运行Stremio,比如NVIDIA Shield和Amazon Fire Stick,但我们并不正式支持它们。","WEBSITE_MAINPAGE_FAQ_011_H1":"您们能为Stremio添加某些内容吗?","WEBSITE_MAINPAGE_FAQ_011_P1":"抱歉,我们本身不提供任何内容,但是您安装的Stremio插件越多,您可以找到的内容就越多。","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio可以播放Magnet链接吗?","WEBSITE_MAINPAGE_FAQ_012_P1":"是的,它还可以播放正常的HTTP链接和Torrent文件(拖放)。","WEBSITE_MAINPAGE_FAQ_013_H1":"我可以下载视频并离线观看吗?","WEBSITE_MAINPAGE_FAQ_013_P1":"离线可用是一项即将推出的功能,但如果您允许Stremio在设备上缓存(从“设置”面板),您可以稍后在没有连接的情况下观看视频。","WEBSITE_MAINPAGE_FAQ_014_H1":"什么都不能用,帮帮我!","WEBSITE_MAINPAGE_FAQ_014_P1":"您确定已安装插件吗?如果是,请与我们的${1}帮助中心${2}联系","WEBSITE_MAINPAGE_FAQ_015_H1":"Stremio如何维持其开发运营?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"有关更多问题,请访问我们的${1}帮助中心${2}。","HELP_LEARN_MORE":"帮助我们了解更多有关您的信息。","LIFESTYLE":"生活方式","SPORTS":"体育","FOOD_HEALTH":"饮食与健康","BEAUTY_FASHION":"美丽与时尚","NEWS":"新闻","GAMING":"游戏","SCIENCE_EDUCATION":"科学与教育","MUSIC":"音乐","TRAVEL":"旅行","LATE_NIGHT":"深夜","REALITY":"真人","COMEDY":"喜剧","DIY":"DIY","TECH":"技术","CINEMA":"影院","CONTINUE":"继续","SLOW_LOADING":"加载缓慢?","I_GIVE_UP":"我放弃了","LEARN_MORE":"了解更多","POOR_SOURCE":"此源不可用或您的网络连接不够快","PICK_CATEGORIES_ERR":"您必须至少选择3个类别","ADJUST_TIMING":"调整时间","ADJUST_SIZE":"调整大小","SEARCH_ANYTHING":"您可以搜索一切...","ALL_CATEGORIES":"全部","SEARCH_CATEGORIES":"电影、剧集、YouTube和电视","SEARCH_PERSONS":"演员、导演和编剧","SEARCH_PROTOCOLS":"HTTP或Magnet链接","SEARCH_TYPES":"IMDB/TVDB链接","WATCHED":"已观看","SHOW_LESS":"显示较少","LAST_SEARCHES":"上次搜索","CLEAR_HISTORY":"清除历史记录","CHOOSE_SOME":"选择其中一些:","NO_WEB_REMOTE":"无法加载Web Remote","STREMIO_OFFLINE":"Stremio离线","STREMIO_EXPENSIVE_CONNECTION":"我们检测到您正在使用移动数据连接,是否继续?","USE_DATA":"使用移动数据","WARNING":"警告","MORE_INFO":"更多信息...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"加载...","STREMIO_TV_BACK_TO_LANGUAGES":"返回语言","STREMIO_TV_REMOTE":"远程","STREMIO_TV_GO_TO":"去往:","STREMIO_TV_OR_SCAN":"或扫描:","STREMIO_TV_ADDON_INSTRUCTIONS":"请按照说明安装您喜欢的插件。","STREMIO_TV_LIVE_TV":"直播电视","STREMIO_TV_RESUME_WATCHING":"继续观看","STREMIO_TV_LOADING_BACKGROUND":"加载背景","STREMIO_TV_CHECKING_AUTHENTICATION":"正在检测身份验证","STREMIO_TV_LOADING_BOARD":"加载主页","STREMIO_TV_LOGIN_HEADER_LINE_1":"我们希望用户在使用我们的软件时有最好的个性化体验,","STREMIO_TV_LOGIN_HEADER_LINE_2":"正是出于这个原因,我们恳请您建立和/或登录您的账户,","STREMIO_TV_LOGIN_FOOTER_LINE_1":"感谢您的理解,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Stremio团队","STREMIO_TV_REMOTE_INSTRUCTIONS":"为了在您的智能手机/平板电脑/桌面使用Web Remote:","STREMIO_TV_WIFI_SETUP":"Wi-Fi设置","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle未检测到互联网连接。","STREMIO_TV_WIFI_DETAILS_1":"连接到:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"使用密码:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"在浏览器中打开链接:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"默认","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"按最近观看","STREMIO_TV_LIBRARY_SORT_NAME":"按名字","STREMIO_TV_LIBRARY_TIMES_WATCHED":"按观看次数","STREMIO_TV_DETAILS_SEASON_NUMBER":"季${1}","STREMIO_TV_STREAMS_LOADING":"已加载${1}/${2}插件...","STREMIO_TV_STREAMS_STILL_LOADING":"${1}插件仍在加载...","STREMIO_TV_PLAYER_SETTINGS":"播放器设置","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"字幕延迟","STREMIO_TV_PLAYER_AUDIO_DELAY":"音频延迟","STREMIO_TV_PLAYER_VIDEO_SCALING":"视频缩放","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"不支持的流媒体源","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"打开外部链接失败","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"使用ExoPlayer播放","STREMIO_TV_PLAYER_PLAY_IN_VLC":"使用libVLC player播放","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"由于播放错误而切换到libVLC player","STREMIO_TV_ADDONS_TITLE":"在手机或PC上使用Stremio安装或配置插件,然后按\\"同步插件\\"","STREMIO_TV_ADDONS_SUBTITLE":"注意:确保您使用的是相同的Stremio帐户","STREMIO_TV_ADDONS_SYNC_ADDONS":"同步插件","STREMIO_TV_ADDONS_SYNC_SUCCESS":"插件成功同步","STREMIO_TV_ADDONS_SYNC_FAILED":"插件同步失败","STREMIO_TV_META_LINK_FAILED":"打开元链接失败","STREMIO_TV_CATALOG_LOADING":"目录仍在加载...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"界面语言已更新","STREMIO_TV_SETTINGS_THEME_UPDATED":"主题已更新","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"首选语言","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"次要首选语言","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"隧道播放","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"某些设备上可能存在播放问题","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"某些视频格式可能无法播放","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"无缓存","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"默认","STREMIO_TV_SETTINGS_PROFILE_SOFT":"慢","STREMIO_TV_SETTINGS_PROFILE_FAST":"快","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"超快","STREMIO_TV_SETTINGS_SERVER_URL":"流媒体服务器URL","STREMIO_TV_SETTINGS_SERVER_VERSION":"服务器版本","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"未知","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio版本","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"编辑服务器URL","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"输入流媒体服务器URL","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"要阅读Stremio的隐私政策,请访问:","STREMIO_TV_SETTINGS_TOS_TEXT":"要阅读Stremio的条款和条件,请访问:","STREMIO_TV_NAV_SEARCH":"搜索","STREMIO_TV_NAV_HOME":"主页","STREMIO_TV_NAV_DISCOVER":"发现","STREMIO_TV_NAV_LIBRARY":"库","STREMIO_TV_NAV_MOVIES":"电影","STREMIO_TV_NAV_SERIES":"剧集","STREMIO_TV_NAV_CHANNELS":"频道","STREMIO_TV_NAV_TV":"电视直播","STREMIO_TV_NAV_SETTINGS":"设置","STREMIO_TV_NAV_ADDONS":"插件","STREMIO_TV_LOGIN_TITLE":"链接账户","STREMIO_TV_LOGIN_EXPIRES_IN":"过期日期到","STREMIO_TV_LOGIN_STEP_ONE":"扫描上方的二维码或转到","STREMIO_TV_LOGIN_STEP_TWO":"登录您的Stremio帐户","STREMIO_TV_LOGIN_NEW_LINK":"请求新链接","STREMIO_TV_LOGIN_LINK_REFRESHED":"登录代码已刷新","STREMIO_TV_SEARCH_PLACEHOLDER":"输入一些东西","STREMIO_TV_SEARCH_NO_ADDONS":"没有为目录请求插件!","STREMIO_TV_SEARCH_BUTTON":"搜索","STREMIO_TV_SEARCH_KEY_DEL":"删除","STREMIO_TV_SEARCH_KEY_SPACE":"空格","STREMIO_TV_SEARCH_KEY_CLEAR":"清除","STREMIO_TV_SEARCH_HISTORY_TITLE":"搜索历史","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"您可以搜索标题、演员、频道...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"清除搜索历史","STREMIO_TV_FILTERS_DESCRIPTION":"从以下过滤器中选择一个","FILTERS":"过滤器","SETTINGS":"设置","ACCOUNT":"账户","LOGOUT":"注销","THEMES":"主题","PLAYBACK":"播放","PLAYBACK_SPEED":"播放速度","AUDIO_TRACKS":"音轨","VIDEOS":"视频","SERVER":"服务器","LINKS":"链接","ABOUT":"关于","INTERFACE":"界面","ANIMATIONS":"动画","STATUS":"状态","LANGUAGE":"语言","SIZE":"大小","DELAY":"延迟","BOLD":"粗体","TEXT_COLOR":"文本颜色","OUTLINE_COLOR":"轮廓颜色","BACKGROUND_COLOR":"背景颜色","BACKGROUND_BLUR":"背景模糊","SEEK_TIME_DURATION":"寻找持续时间","AUTO_PLAY":"自动播放下一集","PLAY_NOW":"现在播放","MARK_AS_WATCHED":"标记为已观看","MARK_AS_UNWATCHED":"标记为未观看","REWIND_TO_BEGINNING":"倒回开始","CONTINUE_WATCHING":"继续观看","ALL":"全部","SECONDS":"秒","ON":"开","OFF":"关","RELOAD":"重新加载","EDIT_URL":"编辑URL","NONE":"无","EMBEDDED":"内嵌","REMOTE_SWITCH_DEVICES":"开关设备","REMOTE_VIDEOS":"视频","REMOTE_ADJUST_TIMING":"调整时间","REMOTE_ADJUST_SIZE":"调整大小","REMOTE_COULD_NOT_BE_LOADED":"无法加载Web Remote","REMOTE_RETRY":"重试","TORRENT_PROFILE_DEFAULT":"默认","TORRENT_PROFILE_SOFT":"慢","TORRENT_PROFILE_FAST":"快","TORRENT_PROFILE_ULTRA_FAST":"超快","FAQ_001_H1":"什么是Stremio?","FAQ_001_P1":"Stremio是专为视频娱乐而设计的多媒体中心软件,易于使用。Stremio允许您管理和观看自己的电影,剧集,频道和实况电视收藏。","FAQ_001_P2":"Stremio从本地磁盘和插件系统中收集显示给您的内容。","FAQ_001_P3":"它还会在您感兴趣的新剧集/视频/电影播出时通知您,并为您提供电影推荐。","FAQ_02_H1":"Stremio与Kodi和Plex相比如何?","FAQ_02_P1":"我们受到这两种软件的启发。但是我们有不同的目标——Stremio专门针对娱乐视频,并通过易于使用成为其主流解决方案。","FAQ_02_P2":"Stremio将永远不会像Kodi和Plex那样具有可定制性和丰富的功能,但它更易于使用。只需${1}就可以获取它,并查看${2}:)","FAQ_03_H1":"Stremio与Netflix相比如何?","FAQ_03_P1":"同样,Netflix是我们的灵感之一。我们努力实现Netflix的用户体验,再加上许多附加的好处。但最重要的是,我们让您可以自由管理自己的库,并使用我们的插件系统添加新的内容源。","FAQ_03_P2":"这使得Stremio可以无限扩展,因此当您使用Stremio时,您永远不会局限于Netflix决定许可的内容。例如,您可以通过Stremio观看${1}中的内容电影电视${2}, ${3} Twitch.tv${4},${5}YouTube${6},${7}Vodo${8}甚至${9}Netflix${10}本身!","FAQ_04_H1":"Stremio与Flipboard相比如何?","FAQ_04_P1":"我们不常听到这个问题,除非与初创企业的人交谈:)","FAQ_04_P2":"Stremio是通过设计一个内容聚合器来实现的,它本质上就是视频的Flipboard。这一点在我们的首页部分非常明显,它为您提供目录和新的插曲/新的视频通知,让您了解您所关注的内容,就像Flipboard一样。","FAQ_05_H1":"Stremio与Popcorn Time相比如何?","FAQ_05_P1":"Stremio和Popcorn Time在用户界面上很相似,因为没有很多方法可以正确制作视频娱乐目录:)","FAQ_05_P2":"Popcorn Time主要集中在特定来源的流媒体上,但Stremio是不受限制的,只是一个内容聚合器,它没有锁定到特定的内容源。","FAQ_05_P3":"此外,我们默认不提供任何Torrent插件,因此Stremio不提供官方功能的Popcorn Time用例。","FAQ_05_P4":"另一个显著的区别是Popcorn Time是完全开源的,而Stremio是${1}部分开源的${2}。","FAQ_06_H1":"是否要添加此电影/系列?","FAQ_06_P1":"不,对不起 :(","FAQ_06_P2":"正如大多数其他问题中提到的,Stremio本身不提供任何内容,所有内容都是通过插件系统添加的。如果您有内容请求,您可以使用播放器中的“报告”按钮,它将向您当前使用的插件的作者发送电子邮件。","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"能否为X创建插件?","FAQ_08_P1":"完全有可能。","FAQ_08_P2":"如果您有一个插件的想法,请在${1}office@stremio.com${2}给我们留言,但请确保您的插件想法不会侵犯任何版权或使用条款。","FAQ_08_P3":"目前,我们路线图上的下一件事是FandangoNOW,Filmon.tv video on demand和Crunchyroll的插件。","FAQ_09_H1":"Stremio是否使用BitTorrent?","FAQ_09_P1":"是的,Stremio支持BitTorrent作为流媒体协议。您可以将其与Torrent插件一起使用,也可以将.Torrent文件拖放到Stremio中,或者将磁铁链接粘贴到搜索栏中。","FAQ_09_P2":"请注意,使用BitTorrent的唯一官方插件是${1}Vodo${2},它提供独立内容,所有内容都允许与BitTorrent一起分发。","FAQ_09_P3":"我们不支持使用任何可能导致版权侵权的第三方插件。","FAQ_10_H1":"我可以在Stremio中通过官方插件观看什么节目?","FAQ_10_P1":"默认情况下,您可以在Stremio与它的嵌入式播放器观看Filmon.tv,YouTube和Vodo的内容。另外,我们还有一个Twitch.tv插件,以及其他一些插件。","FAQ_10_P2":"此组合提供以下选项:","FAQ_10_L1":"Filmon.tv上的热门电视频道,例如E4、BBC、Bollyworld TV","FAQ_10_L2":"YouTube上的所有内容,例如BBC News、Top Gear、Vevo、PewDiePie","FAQ_10_L3":"Vodo上的独立电影","FAQ_10_L4":"Twitch.tv上的在线游戏广播","FAQ_10_P3":"此外,Guidebox和Netflix插件提供了许多内容源,它们不完全在Stremio中播放,而是重定向到给定的服务。例如,Guidebox插件将为您提供可在美国免费播放的精选电影,这些电影来自TubiTV和Crackle等服务。","FAQ_11_H1":"Stremio无法安装,我该怎么办?","FAQ_11_P1":"如果您在Windows上,请尝试${1}此替代安装程序${2}。","FAQ_11_P2":"如果您使用的是Mac OS X,请注意,我们不支持任何比OS X Mavericks(10.9)更旧的版本。","FAQ_11_P3":"如果您使用的是Linux,请注意,我们目前只支持64位(x64)Linux。","FAQ_11_P4":"如果您仍然无法解决您的问题,请写信给我们的${1}Facebook群组${2}。","FAQ_12_H1":"为什么我的杀毒软件会报毒?Stremio安全吗?","FAQ_12_P1":"我们向您保证Stremio是${1}100%安全的${2}。","FAQ_12_P2":"您的杀毒软件报毒是因为我们的安装程序中包含广告,一些杀毒软件将其识别为广告软件。","FAQ_12_P3":"如果您仍然不确定,可以尝试我们的${1}替代安装程序${2}。","FAQ_13_H1":"如何制作插件?","FAQ_13_P1":"对于初学者,我们建议您查看GitHub上的${1}插件系统模块${2}。","FAQ_13_P2":"之后,您可以按照${1}Hello World教程${2}进行操作。","FAQ_13_P3":"如果您没有任何编程技能,请在${1}Reddit社区${2}上发布您的想法,并在${3}office@stremio.com${4}上与我们联系您的插件想法。","FAQ_14_H1":"插件是如何发布的?","FAQ_14_P1":"当您创建一个插件和主机,并在清单中放置一个指向工作插件地址的<b>终端节点</b>字段时,该插件将自动发布到我们的${1}插件目录${2}。","FAQ_14_P2":"发生这种情况是因为Stremio插件模块的服务器部分会自动调用我们的API来声明插件。当我们的API验证您的<b>终端节点</b>为有效的插件时,它将开始显示在目录中。","FAQ_15_H1":"我可以在浏览器中运行Stremio吗?","FAQ_15_P1":"目前还没有,但即将到来!","FAQ_15_P2":"如果您想看到Alpha版本,可以在这里看到:${1}alpha4.strem.io${2}. 请记住,此Alpha版本上已禁用流式处理。我们支持Chrome、Firefox、Opera和Edge","FAQ_16_H1":"电视投屏不起作用/字幕不起作用","FAQ_16_P1":"电视投屏使用DLNA技术,这在不同的电视品牌和型号之间非常不一致。由于这个原因,我们没有能力在每种情况下都测试它,所以它还远远不够完美。尽管如此,我们仍在不断改进,但我们无法为您提供DLNA能够在您的电视上开始正常工作的预计时间。","FAQ_16_P2":"如果您在“投屏”菜单中看不到您的电视,请尝试禁用网络连接并重新启用它(在Windows上,右键单击网络并使用“启用/禁用”),以及重新启动路由器、电视和PC。","FAQ_16_P3":"如果您仍然遇到问题,您可以通过将您的电视品牌和型号信息发送到${1}来帮助我们”office@stremio.com${2}。","FAQ_16_P4":"同时,我们推荐Chromecast,我们非常支持Chromecast,或者直接用HDMI线将电视与PC连接。","FAQ_17_H1":"Stremio卡死和/或崩溃,我能做什么?","FAQ_17_P1":"首先,如果您使用的是带有AVG杀毒软件的Windows 7,这种组合会产生问题。问题出在AVG本身,我们这边没有合理的办法解决。不幸的是,去除或禁用杀毒软件将不起作用。唯一的解决办法是用别的东西代替AVG","FAQ_17_P2":"如果不是这个问题,但您仍在使用Windows,请更新到最新的service pack并更新/重新安装您的GPU驱动程序,然后重试。","FAQ_17_P3":"如果您的问题仍未解决,或者您使用的是Mac或Linux,请写信给我们,在${1}我们的Facebook群组${2}报告问题的确切细节。","FAQ_18_H1":"如何制作插件?","FAQ_18_P1":"对于初学者,我们建议您查看GitHub上的${1}插件系统模块${2}。","FAQ_18_P2":"之后,您可以按照${1}Hello World教程${2}进行操作。","FAQ_18_P3":"如果您没有任何编程技能,请在${1}Reddit社区${2}上发布您的想法,并在${3}上与我们联系您的插件想法。”office@stremio.com${4}。","FAQ_19_H1":"为什么Stremio占用磁盘空间?","FAQ_19_P1":"Stremio有一个<b>本地缓存</b>来临时保存您流式传输的视频文件。","FAQ_19_P2":"这有两个好处:第一,它允许Stremio预先缓冲视频,以确保流媒体更流畅。其次,它将视频保存在本地缓存中,以便您可以继续离线观看。","FAQ_19_P3":"Stremio保留了多少取决于“设置”面板中的<b>缓存设置。Stremio可能会在您的磁盘上保留到设置的数量(例如2GB),除非当前流式传输的视频大于该数量,在这种情况下,必须分配足够的存储来保留它,直到您结束流式传输。","FAQ_20_H1":"缓存文件夹在哪里?","FAQ_20_P1":"在Windows上,Stremio缓存位于您在设置中选择的驱动器中(例如\\"E:\\\\stremio-cache\\")","FAQ_20_P2":"在MacOS上,它位于\\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"在Linux上,它位于\\"~/.stremio/stremio-cache\\"或\\"~/stremio-cache\\"","FAQ_21_H1":"我得到\\"流媒体服务器未找到\\"错误,我能做什么?","FAQ_21_P1":"如果出现此错误,则表示以下几点之一:","FAQ_21_P2":"1)您正试图通过我们的${1}web版本${2}使用一个由YouTube/BitTorrent源代码支持的插件。在这种情况下,您应该从${3}我们的网站${4}安装我们的桌面版本","FAQ_21_P3":"2)Stremio安装有问题。在这种情况下,请尝试从${1}网站${2}重新安装我们的最新桌面版本。如果这没有帮助,请尝试禁用杀毒软件和防火墙,重新启动电脑,然后重试。如果这依然不起作用,请写信给我们的${3}Facebook群组${4}","FAQ_22_H1":"我无法在iOS上看到/使用大多数插件","FAQ_22_P1":"由于Apple App Store条款和条件中的限制,我们限制iOS应用程序只能使用一组特定的插件。","FAQ_22_P2":"不过,请放心,将来会有更多的iOS插件,我们还可能添加一个集成,通过将iOS应用程序连接到Stremio流媒体服务器,您将可以使用所有Stremio插件。"}')},9542:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"電影","TYPE_series":"劇集","TYPE_tv":"電視頻道","TYPE_channel":"頻道","TYPE_other":"其他","TYPE_movie_PL":"電影","TYPE_series_PL":"劇集","TYPE_tv_PL":"電視頻道","TYPE_channel_PL":"頻道","TYPE_other_PL":"其他","TYPE_ALL":"All","VIDEO":"視頻","BACK":"返回","MORE":"更多","DONE":"完成","COPY":"複製","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"發現","Board":"首頁","Library":"庫","My Library":"我的庫","Calendar":"日曆","NOTIFICATION_ONLINE":"您當前處於在線狀態","NOTIFICATION_OFFLINE":"您當前處於離線狀態","INTERNET_CONNECTION":"網絡連接","STORAGE_FULL_TITLE":"警吿:儲存空間已滿!","STORAGE_FULL_TEXT":"Stremio將無法保存您的設置、首選項或登錄信息,考慮重新啟動或重新安裝Stremio。","SEARCH":"搜索","SEARCH_NO_RESULTS":"未找到結果","SEARCH_EXPLANATION_CONTENT":"搜索電影、劇集、YouTube和電視頻道","SEARCH_EXPLANATION_PEOPLE":"搜索演員、導演和編劇","SEARCH_PASTE_LINKS":"粘貼HTTP和Magnet鏈接","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"添加到庫中","REMOVE_FROM_LIB":"從庫中刪除","ADDED_TO_LIB":"添加到庫中","REMOVED_FROM_LIB":"從庫中刪除","TRAILER":"預吿片","WATCH_TRAILER":"觀看預吿片","WATCH_NOW":"立即觀看","SHOW":"查看","SHOW_MOVIE":"查看電影","WATCH_RANDOM":"隨機觀看","IMDB_RATING":"IMDb評分","YEAR":"年份","DIRECTOR":"導演","WRITER":"編劇","LEAD_ACTORS":"主演","CAST":"全部演員","CREW":"全部工作人員","SHOW_MORE_CAST":"顯示更多 »","AIRED":"播出時間","SEASONS":"季","GENRE":"類型","CATALOG":"目錄","SUMMARY":"簡介","SHOW_MORE":"顯示更多","SIMILAR":"相似","UPCOMING":"即將上映","ENDED":"已完結","DURATION":"時長","FEATURED":"功能","METADATA":"元數據","CATEGORY":"類別","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"搜索視頻","SEARCH_PLACEHOLDER":"搜索或粘貼URL","ADDON":"插件","ADDONS":"插件","OFFICIAL":"官方","ADDONS_OFFICIAL":"官方Stremio插件","ADDONS_POPULAR":"在您所在的地區很受歡迎","ADDON_FREE":"免費","ADDON_PEERED":"連接","ADDON_SUBSCRIPTION":"訂閲","ADDON_STREAM_GEORESTRICTED":"在您所在的地區不提供","ADDON_STREAM_OFFLINECACHE":"離線緩存","ADDON_STREAM_LOCALFILE":"本地文件","SHARE_ADDON":"分享插件","AVAILABLE_STREAMS":"可用流媒體","NO_STREAM":"未找到流媒體","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"要獲取更多流媒體,請安裝更多插件","STREAM_NOT_SUPPORTED":"此平台不支持所選流媒體。","ADDON_CATALOGUE":"顯示所有插件 »","ADDON_CATALOGUE_MORE":"安裝插件","REPO_ADDED":"已添加存儲庫","ADDON_REPO_EXIST_ERR":"此插件集合已存在","ADDON_REPO_ERR":"添加集合時出錯","ADDON_ADD_ERR":"添加插件時出錯","ERR_ADDON_PROTECTED":"無法卸載插件,它受到保護","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"出了一些問題——身份驗證可能失敗","ERR_NOT_COLLECTION_URL":"不是集合URL","ERR_NOT_ADDON_URL":"不是有效的插件URL","ERR_DETECTFROMURL":"再此URL中找不到插件/集合","ADDON_DUPLICATE_WARNING":"警吿:重複的插件","ADDON_COLLECTION_SET_FAILED":"將已安裝的插件同步到您的賬户失敗","SETTINGS_DATA_EXPORT":"導出用户數據","ADDON_PULL_FAILED":"從您的帳户同步已安裝的插件失敗","REFRESH_ON_CLICK":"點擊重試","STILL_IN_THEATER":"電影還在影院上映","WATCH_IN_CINEMA":"請到您本地的影院觀看","IN_THEATER":"在影院上映","GET_TICKETS":"購票","UPCOMING_EPISODE":"下一集","UPCOMING_EPISODE_MESSAGE":"這一集即將播出","MISSING_DATE_EPISODE":"缺失的一集日期","MISSING_DATE_EPISODE_MESSAGE":"這一集可能還沒有播出","CHANNEL_NOT_SCRAPED":"這個頻道還沒有被削刮,請過幾分鐘再來。","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"將其添加到庫中,以便在可用時收到通知。","GET_NOTIFIED_WHEN_AVAILABLE":"一旦可用,您將會收到通知。","WARNING_STREAMING_SERVER":"警吿:找不到本地流媒體服務器,來自本地文件、YouTube、和BitTorrent的流媒體將不可用。","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"警吿:您的硬件可能不支持此視頻,請記住,播放可能會很慢。","PLAYER_ERROR":"糟糕,播放器錯誤","PLAYER_ERROR_LOOKSLIKE":"看起來似乎","PLAYER_ORIENTATION":"播放器方向","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"鎖定","PLAYER_ORIENTATION_SENSOR_SHORT":"傳感器","PLAYER_ORIENTATION_LANDSCAPE":"播放器方向鎖定橫向","PLAYER_ORIENTATION_SENSOR":"播放器方向自動(傳感器)","PLAYER_PLAYBACK_SPEED":"播放速度","PLAYER_PLAYBACK_ERROR":"播放錯誤,請重試","PLAYER_PLAYBACK_ERROR_UNKNOWN":"未知錯誤","PLAYER_PLAYBACK_ERROR_DEFAULT":"抱歉,{{productName}}無法播放此視頻。","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"直播","PLAYER_NEXT_VIDEO_TITLE":"下個視頻","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"關閉","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"現在觀看","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"流媒體","CASTING_TO":"投屏到","NETWORK_STATUS":"網絡狀態","STREAM_SPEED":"串流速度:","STREAM_BUFFERED":"已緩衝:","PEERS_INFO":"節點信息","PEERS_ACTIVE":"活躍:","PEERS_CONNECTED":"已連接:","PEERS_WAITING":"等待:","TRANSCODING_WARNING":"警吿:轉碼視頻。","STREAM_LOADING":"加載...","PLAYING_LOCAL":"從本地文件播放","PLAYING_CACHE":"從緩存播放","WRONG_SUBS":"字幕錯誤?","ERR_SUBS_LOADING_TITLE":"加載字幕時出錯","ERR_SUBS_LOADING":"字幕加載失敗:這可能是您正在使用的插件或網絡連接的問題","WARN_FOLLOWING_SUB_ADDONS_FAILED":"以下字幕插件失敗","ERR_CASTING_UPDATE_TITLE":"無法更新投屏設備信息:流媒體服務器可能離線","CHOOSE_DEVICE":"選擇在哪個設備上播放","NO_CAST_DEVICES":"無可用投屏設備。","NO_SETTINGS":"無可用設置。","PHONE_TABLET":"手機/平板電腦","SUBTITLES":"字幕","SUBTITLES_CHANGE":"調整字幕","SUBTITLES_CHANGE_NONE":"抱歉,這種語言沒有其他字幕。","SUBTITLES_CHANGE_ACIVE":"當前字幕#{{subtitlesDialog.activeIdx + 1}}被激活,點擊\\"繼續\\"激活字幕#{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"或者,","SUBTITLES_ADJUST_DELAY":"調整字幕延遲:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"或在播放時使用<span>G</span> / <span>H</span>鍵進行調整。","SUBTITLES_ADJUST_DELAY_TIP":"提示:您可以在播放時使用<span>G</span> / <span>H</span>鍵進行調整。","SUBTITLES_DELAY":"字幕延遲:","SUBTITLES_LOADING":"加載字幕...","SUBTITLES_UNAVAILABLE":"沒有可用的外部字幕","SUBTITLES_DISABLED":"關閉","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"季","EPISODE":"集","SPECIAL":"Special","SORT":"排序","SORT_BY":"排序按照","FILTER":"篩選","SORT_TRENDING":"熱門","SORT_RECENT":"最近","SORT_ALPHABET":"首字母","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"評分","SORT_WATCHED":"已觀看","SORT_YEAR":"年份","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"新的","New Episodes":"新劇集","New Videos":"新視頻","Recommendations":"推薦","LIBRARY_RESUME":"簡介","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"詳情","LIBRARY_RESUME_DISMISS":"清除","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"功能","DISCOVER_TOP":"熱門","DISCOVER_OSCAR":"奧斯卡獲獎作品","DISCOVER_WARNING_TITLE":"糟糕!","DISCOVER_EMPTY_CATALOG":"此插件返回空內容。","DISCOVER_ADULT_WARNING":"此內容僅對成人可見,您是否已滿18週歲?","DISCOVER_NOADDON_WARNING":"警吿:此類型沒有可用的Stremio插件,顯示已保存的項目,此處不會更新任何內容。","DISCOVER_LOAD_ERR":"內容未加載,發生錯誤。","DISCOVER_ADDON_UNINSTALLED":"此內容不再可用,您可能已卸載插件。","UNINSTALL_THIS_ADDON":"卸載此插件","ERR_ADDON_NOT_INSTALLED":"未安裝此插件,立即安裝?","DETAIL_RECEIVE_NOTIF_SERIES":"接受新劇集的通知","DETAIL_RECEIVE_NOTIF_VIDEOS":"接受新視頻的通知","SIDEBAR_SHOW_STREAMS":"顯示流媒體","RELAUNCH":"立即重新啟動!","UPGRADE":"新版本可用!升級至Stremio的最新版本","RELOAD_UI":"重新加載用户界面","MANUAL_UPDATE_TITLE":"更新您的Stremio版本","MANUAL_UPDATE_LINE1":"您運行的是一個過時的Stremio版本,這是非常不推薦的。","MANUAL_UPDATE_LINE2":"請儘快更新。","BUTTON_UPDATE_LATTER":"不是現在","BUTTON_UPDATE_NOW":"更新","ANONYMOUS_USER":"匿名用户","DONT_HAVE_ACC":"還沒有賬户?","HAVE_ACC":"已經有賬户了?","PASSWORD":"密碼","PASSWORD_CONFIRM":"確認密碼","EMAIL":"電子郵箱","FB_LOGIN":"使用Facebook登錄","FB_NOTHINGSHARED":"未經您的允許,任何內容都不會被共享","FB_NOPOST":"我們不會替您發送任何東西","OR":"或","I_ACCEPT":"我接受","I_ACCEPT_BY_CLICKING":"通過點擊上面的按鈕,我聲明我接受","TOS":"條款和條件","MUST_ACCEPT_TERMS":"您必須接受條款","PASSWORDS_NOMATCH":"密碼不匹配","SIGN_UP":"註冊","SIGN_UP_EMAIL":"使用電子郵箱註冊","CLICK_TO_SIGN_UP":"點擊此處註冊。","LOG_IN":"登錄","LOG_OUT":"註銷","EXIT_FULLSCREEN":"退出全屏模式","ENTER_FULLSCREEN":"進入全屏模式","PLAY_URL_MAGNET_LINK":"播放URL/Magnet鏈接","HELP_FEEDBACK":"幫助和反饋","TERMS_OF_SERVICE":"服務條款","PRIVACY_POLICY":"隱私政策","ABOUT_STREMIO":"關於Stremio","USER_PANEL":"用户面板","LOGIN_LABEL":"Login","GUEST_LOGIN":"訪客登錄","GUEST_LOGIN_NOTICE":"不建議訪客登錄,使用常規登錄允許Stremio同步您的庫,接受喜愛的劇集/頻道的通知。您確定要繼續嗎?","GUEST_LOGIN_NOTICE_2":"不建議訪客登錄,您將沒有同步的庫和首頁通知,這是Stremio的重要功能。您確定要繼續嗎?","CLICK_HERE":"點擊此處","WRONG_PASSWORD":"錯誤的電子郵箱或密碼,如果您忘了密碼,","SET_A_PASS":"設置密碼","RESET_PASSWORD":"重置密碼","FORGOT_PASSWORD":"忘記密碼?","EMAIL_USED_WITH_FB":"此電子郵箱與Facebook登陸一起使用。","INVALID_EMAIL":"請輸入有效的電子郵箱地址","INVALID_PASSWORD":"請輸入有效的密碼","CONN_ERR":"連接錯誤,請稍後再試。\\n\\n如果問題仍然存在,請禁用防火牆/殺毒軟件(特別是Bitdefender)。","IMPORT_FROM_GUEST":"從訪客賬户導入庫","RECEIVE_UPDATES_EMAIL":"從Stremio接受電子郵件更新","LOGIN_FAILED":"登陸失敗。","SIGNUP_FAILED":"註冊失敗。","SEARCH_FAILED":"搜索失敗","EMAIL_USED":"此電子郵箱已被使用。","WAITING_FB_LOGIN":"使用Facebook登錄...","EXTERNAL_PLAYER_TITLE":"在外部播放器中播放","EXTERNAL_REMEMBER_PLAYER":"您想記住您的選擇嗎","EXTERNAL_ALWAYS_PLAY":"是","EXTERNAL_ONLY_ONCE":"不是","BEST_FIT":"最佳","FIT_SCREEN":"適合屏幕","FILL":"填充","16:9":"16:9","4:3":"4:3","Original":"原始","INTRO_TASTE":"吿訴我們您喜歡什麼","INTRO_TASTE_LONG":"吿訴我們您想看什麼","INTRO_TASTE_PICK":"選擇{{interestsRemaining}}興趣","INTRO_TASTE_PICK_MORE":"選擇{{interestsRemaining}}更多興趣","INTRO_TASTE_HELP_US":"幫助我們瞭解更多有關您的信息。","INTRO_TASTE_CHOOSE_THESE":"選擇其中一些:","INTRO_TASTE_CHOOSE_MIN":"至少選3個類別","INTRO_TASTE_CHOOSE_MIN_ERR":"您必須至少選擇3個類別!","INTRO_TASTE_LIFESTYLE":"生活方式","INTRO_TASTE_SPORTS":"體育","INTRO_TASTE_FOOD_HEALTH":"飲食與健康","INTRO_TASTE_BEAUTY_FASHION":"美麗與時尚","INTRO_TASTE_NEWS":"新聞","INTRO_TASTE_GAMING":"遊戲","INTRO_TASTE_SCIENCE_EDU":"科學與教育","INTRO_TASTE_MUSIC":"音樂","INTRO_TASTE_TRAVEL":"旅行","INTRO_TASTE_LATE_NIGHT":"深夜秀","INTRO_TASTE_REALITY":"真人","INTRO_TASTE_COMEDY":"喜劇","INTRO_TASTE_DIY":"DIY","INTRO_TASTE_TECH":"技術","INTRO_TASTE_CINEMA":"影院","ADDON_NOT_SUPPORTED":"此平台不支持選定的插件。","ADDON_DISCLAIMER":"使用第三方插件將始終受到您的責任和您所在的司法管轄區的法律的約束。","ADDON_ACTIVATE":"激活此插件?","ADDON_REPO_ADD":"插件集合URL","ADDON_ADD":"添加","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"最新消息","BUTTON_CONTINUE":"繼續","BUTTON_ACTIVATE":"激活","BUTTON_ACTIVATED":"已激活","BUTTON_CANCEL":"取消","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"清除全部","BUTTON_VIEW_ALL":"查看全部","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"您的庫看起來是空的,看看它有多有用:)","HOW_START":"您可以從這裏開始:","LIB_EMPTY_CAL":"您的日曆顯示您庫中的劇集。","HOW_START_CAL":"下面是如何添加劇集:","LIB_EMPTY_BOARD":"主頁顯示與您的庫相關的通知&推薦。","HOW_START_BOARD_WAIT":"請在您的庫中添加一些劇集或頻道給我們幾分鐘來處理:)","HOW_START_BOARD":"下面是如何向其中添加劇集&電影:","IMPORT_FB":"從<span>Facebook</span>導入您喜歡的東西","IMPORT_TRAKT":"從<span>Trakt</span>導入媒體庫","IMPORT_DISCOVER":"從<span>發現</span>中找到有趣的東西","IMPORT_DISK":"導入<span>本地磁盤</span>上的電影或節目","PLEASE_CREATE_ACC":"請<u>創建一個賬户</u>以啟用庫同步&主頁。","IMPORT_DISCOVER_SIGNUP":"註冊並從<span>發現</span>中找到有趣的東西","IMPORT_DISK_SIGNUP":"註冊並導入<span>本地磁盤</span>上的電影或節目","LIB_EMPTY_CLOUD":"雲端庫","LIB_EMPTY_CLOUD_DESC":"在所有設備上同步個人雲端庫","LIB_EMPTY_EARLY":"第一時間","LIB_EMPTY_EARLY_DESC":"接收新劇集的通知","LIB_EMPTY_PERSONAL":"個性化","LIB_EMPTY_PERSONAL_DESC":"獲取個性化推薦","LIB_EMPTY_CALENDAR_DESC":"安排您的個性化觀看日曆","LIB_EMPTY_ALL":"註冊以獲取所有這些:","LIB_EMPTY_BEST":"註冊以獲得最佳的Stremio","LIB_EMPTY_OTHER":"註冊以啟用日曆和其他炫酷功能","CALENDAR_ADDED":"Stremio日曆已添加到默認桌面日曆中。","CALENDAR_ADDED_MSG":"如果這不起作用,請手動將此URL添加到日曆應用程序中","TRAKT_EXPIRED":"Trakt驗證已過期,請轉到設置並重新驗證","TRAKT_REQUIRES_LOGIN":"Trakt錯誤","TRAKT_REQUIRES_LOGIN_MSG":"您需要登錄","SETTINGS_LABEL":"設置","SETTINGS_NAV_GENERAL":"常規","SETTINGS_NAV_PLAYER":"播放器","SETTINGS_NAV_STREAMING":"流媒體","SETTINGS_NAV_SHORTCUTS":"快捷鍵","SETTINGS_SHORTCUT_RELOAD_APP":"重新加載應用程序","SETTINGS_SHORTCUT_OPEN_SETTINGS":"打開設置","SETTINGS_SHORTCUT_SWITCH_TABS":"切換標籤","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"向前循環標籤","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"向後循環標籤","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"退出/返回","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"切換全屏","SETTINGS_SHORTCUT_SHOW_CONTROLS":"顯示控件","SETTINGS_SHORTCUT_PLAY_PAUSE":"播放/暫停","SETTINGS_SHORTCUT_VOLUME_UP":"增大音量","SETTINGS_SHORTCUT_VOLUME_DOWN":"降低音量","SETTINGS_SHORTCUT_SEEK_NEXT":"尋找下一個","SETTINGS_SHORTCUT_SEEK_PREV":"尋找上一個","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"播放下一個","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"增加字幕大小","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"減小字幕大小","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"增加字幕延遲","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"減少字幕延遲","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"切換側邊欄","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"開機時啟動","SETTINGS_VLC_DEFAULT":"使用VLC播放","SETTINGS_UI_LANGUAGE":"用户界面語言","SETTINGS_FULLSCREEN_EXIT":"Esc鍵退出全屏","SETTINGS_GAMEPAD":"啟用遊戲手柄支持","SETTINGS_CLOSE_WINDOW":"關閉窗口時結束應用程序","SETTINGS_SUBTITLES_LANGUAGE":"默認字幕語言","SETTINGS_SUBTITLES_SIZE":"默認字幕大小","SETTINGS_SUBTITLES_BACKGROUND":"字幕背景","SETTINGS_SUBTITLES_COLOR":"字幕顏色","SETTINGS_SUBTITLES_COLOR_OUTLINE":"字幕輪廓顏色","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"字幕背景顏色","SETTINGS_SEEK_KEY":"方向鍵控制進度","SETTINGS_SEEK_KEY_SHIFT":"按住Shift鍵時方向鍵控制進度","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"自動播放下一集","SETTINGS_NEXT_VIDEO":"顯示播放下一集的通知","SETTINGS_NEXT_VIDEO_TRIGGER":"顯示下一集的通知:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"播放前自動調整窗口大小","SETTINGS_OVERRIDE_SERVER":"覆蓋流媒體服務器URL(高級)","SETTINGS_SERVER_URL":"流媒體服務器URL:","SETTINGS_SERVER_AVAILABLE":"流媒體服務器可用。","SETTINGS_SERVER_UNAVAILABLE":"流媒體服務器不可用。","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"流媒體HTTPS結點:","SETTINGS_USE_BETA":"始終使用最新的測試版","SETTINGS_IMPORT_FB":"從Facebook導入","SETTINGS_IMPORT_DISK":"從本地磁盤導入","SETTINGS_IMPORT_TRAKT":"從Trakt導入","SETTINGS_PAUSE_MINIMIZED":"最小化時暫停播放","SETTINGS_HWDEC":"硬件解碼加速","SETTINGS_BACKGROUND":"後台播放","SETTINGS_SUBSCRIBE_CALENDAR":"訂閲到日曆","SETTINGS_REQ_EXPORT":"請求導出數據","SETTINGS_ACC_DELETE":"請求刪除賬户","SETTINGS_CHANGE_PASSWORD":"更改密碼","SETTINGS_TOS":"服務條款","SETTINGS_SUPPORT":"聯繫支持人員","SETTING_LANGUAGE":"語言","SETTINGS_TRAKT":"Trakt自動跟蹤","SETTINGS_TRAKT_LOGOUT":"從Trakt.tv註銷","SETTINGS_SCAN_FOR_REMOTE":"掃描二維碼打開遙控器","SETTINGS_DESKTOP_NOTIFICATIONS":"桌面通知","SETTINGS_DATA_SAVER":"移動數據警吿","SETTINGS_LANGUAGE_INTERFACE":"界面","SETTINGS_LANGUAGE_SUBS":"默認字幕","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"自動選擇音軌","SETTINGS_DEFAULT_AUDIO_TRACK":"默認音軌","SETTINGS_ACCOUNT":"賬户","SETTINGS_VERSION":"版本","SETTINGS_MPV_WINDOW":"在單獨窗口中啟動播放器(高級)","SETTINGS_PLAY_IN_EXTERNAL":"總是在外部播放器中打開視頻","SETTINGS_STORAGE_BUTTON":"清除本地存儲","SETTINGS_STORAGE_MODAL_TITLE":"您確定嗎?","SETTINGS_STORAGE_MODAL_MESSAGE":"這將清除本地存儲並使您註銷","SETTINGS_HWDEC_PICKER":"選擇硬件加速解碼設置","SETTINGS_HW_AUTOMATIC":"自動","SETTINGS_HW_DISABLED":"關閉","SETTINGS_HW_ACCELERATED":"解碼加速","SETTINGS_HW_FULL":"全加速","SETTINGS_HW_LEGACY":"舊版","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"音頻","SUBSPICKER_SUBTITLES":"插件字幕","SUBSPICKER_BLACK_BACKGROUND":"使用黑色背景色","SUBSPICKER_VERTICAL_OFFSET":"垂直偏移量","SUBSPICKER_SIZE":"大小","SUBSPICKER_DELAY":"延遲","SUBSPICKER_EMBEDDED_SUBS":"內嵌字幕","MOBILE_PRIVACY_POLICY":"隱私政策","MOBILE_CRASH_REPORTING":"崩潰報吿","MOBILE_ZOOM_TO_FILL":"縮放填充屏幕","MOBILE_PASSTHROUGH":"數字音頻輸出(直通)","MOBILE_RUN_LOW_BATTERY":"電池電量低時運行","MOBILE_RUN_FOREGROUND":"作為前台服務運行","MOBILE_PERFORMANCE":"性能&穩定性","MOBILE_SERVER_ONLINE":"在線","MOBILE_SERVER_OFFLINE":"離線","MOBILE_QR_EXPIRES":"二維碼到期時間","MOBILE_LOG_INTO":"登陸到您的Stremio賬户","MOBILE_SCAN_QR":"掃描上面的二維碼或轉到","MOBILE_LINK_ACCOUNT":"鏈接賬户","MOBILE_SPEEDPICKER_CANCEL":"取消","MOBILE_SPEEDPICKER_LABEL":"選擇播放速度","MOBILE_EMPTY_LIBRARY":"您的庫為空","MOBILE_NO_ADDON_ACTIVE":"沒有活動的此類型Stremio插件。","MOBILE_ORGANIZER_WARNING":"Stremio Organizer應用程序提供的功能有限,要獲得可播放流的列表和完整的Stremio體驗,請使用Stremio桌面客户端。","MOBILE_ADDON_LOADING":"仍在加載","MOBILE_ADDONS_LOADING":"插件仍在加載","MOBILE_ADDON":"插件","MOBILE_CONFIGURE_ADDON":"配置插件","MOBILE_CONFIGURE_ADDON_LABEL":"配置插件","MOBILE_ORGANIZER_ADDONS_WARNING":"Stremio Organizer應用程序僅提供有限的插件,要獲得完整的Stremio體驗,請使用Stremio桌面客户端。","MOBILE_DISCONNECT":"斷開連接","MOBILE_LOOKING_FOR_DEVICES":"正在查找設備...","MOBILE_CAST_TO":"投屏到","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"開啟","NAVIGATION_OFF":"關閉","MARKETING_AGREE":"我同意接收Stremio的營銷通知","QUIT":"退出","CONNECTED":"已連接","AUTHENTICATE":"驗證","CACHING":"緩存","SETTINGS_CACHING_DRIVE":"緩存磁盤","ENABLE_LOCAL_FILES_ADDON":"啟用本地文件插件(需要重新啟動)","LOCAL_ADDON_NOT_ENABLED":"未啟用本地插件,單擊此處轉到設置並啟用它","ENABLE_REMOTE_HTTPS_CONN":"啟用遠程HTTPS連接","TORRENT_PROFILE":"Torrent配置","DATA_CACHING":"數據緩存","MAGNET_PARSING":"分析Magnet鏈接","January":"一月","February":"二月","March":"三月","April":"四月","May":"五月","June":"六月","July":"七月","August":"八月","September":"九月","October":"十月","November":"十一月","December":"十二月","Monday":"星期一","Tuesday":"星期二","Wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期天","Action":"動作","Comedy":"喜劇","War":"戰爭","Family":"家庭","Animation":"動畫","Adventure":"冒險","Fantasy":"幻想","Crime":"犯罪","Mystery":"神祕","Romance":"浪漫","Drama":"劇情","Horror":"恐怖","Thriller":"驚悚","Sci-Fi":"科幻","Music":"音樂","Biography":"傳記","Documentary":"紀錄","Sport":"運動","Musical":"音樂劇","Western":"西部","Film-Noir":"黑色電影","News":"新聞","History":"歷史","Game-Show":"遊戲節目","Reality-TV":"真人秀","Talk-Show":"脱口秀","Film & Entertainment":"電影與娛樂","Gaming":"遊戲","From TV":"電視","Lifestyle":"生活方式","Science & Education":"科學與教育","Cooking & Health":"烹飪與健康","Beauty & Fashion":"美麗與時尚","Sports":"體育","News & Politics":"新聞與政治","How-to & DIY":"DIY","Tech":"技術","Automotive":"汽車","Causes & Non-Profits":"事業與公益","Movies":"影視","Uk Live Tv":"英國直播電視台","Fashion":"流行","Business News Radio":"商業新聞電台","Business Tv":"商業電視","Cars & Auto":"汽車與自動化","Comedy Radio":"喜劇電台","Lifestyle Radio":"生活方式電台","News Tv":"新聞電視","Food And Wine":"食物與酒","Latino Tv":"拉丁語電視台","Shopping Tv":"購物電視台","Religion":"宗教","Kids":"兒童","Body & Soul":"身體與靈魂","Education":"教育","Indian Tv":"印度電視台","Extreme Sports":"極限運動","Middle Eastern Tv":"中東電視台","Celebrity Tv":"名人電視台","Science Tv":"科學電視台","Bikini babe":"比基尼寶貝","Outdoors":"户外","German Tv":"德國電視台","French Tv":"法國電視台","Italian Tv":"意大利電視台","Gamer Tv":"伽馬電視台","Travel":"旅行","Asian Tv":"亞洲電視台","Entertainment":"遊戲娛樂","News Radio":"新聞電台","Music Radio":"音樂電台","Language Learning":"語言學習","Science Radio":"科學電台","Tech Radio":"科技電台","Science & Technology Vod":"科技視頻點播","new video":"新視頻","new episode":"新一集","new movie":"新電影","recommended":"推薦","we recommend":"我們建議","offer of the day":"當日優惠","news":"新聞","music video":"音樂視頻","CTX_SHOW_HOTKEYS":"顯示快捷鍵","CTX_DISMISS_NOTIF":"清除通知","CTX_DISMISS_ALL":"全部清除","CTX_SHARE":"分享","CTX_COPY_SHARE_LINK":"複製分享鏈接","CTX_COPY_MAGNET_LINK":"複製Magnet鏈接","CTX_COPY_STREAM_LINK":"複製流媒體鏈接","CTX_DOWNLOAD_VIDEO":"下載此視頻","CTX_DOWNLOAD_SUBS":"下載字幕","CTX_VIEW_ON_YOUTUBE":"在YouTube上觀看","CTX_SHOW":"顯示","CTX_PLAY":"播放","CTX_PLAY_IN":"播放","CTX_PLAY_ON":"正在播放","CTX_WATCH_ON":"正在觀看","CTX_WATCH":"觀看","CTX_WATCHED":"已觀看","CTX_WATCH_BEGINNING":"從頭開始觀看","CTX_WATCH_MOBILE":"在移動設備上觀看","CTX_REWIND":"回到開頭","CTX_MARK_WATCHED":"標記為已觀看","CTX_MARK_NON_WATCHED":"標記為未觀看","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"將其餘部分標記為已觀看","CTX_UNMARK_REST":"將其餘部分標記為未觀看","CTX_RECEIVE_NEW_NOTIF":"接受新通知","CTX_REMOVE_CACHE":"從緩存中刪除","CTX_REMOVE_CACHE_EP":"從緩存中刪除集","CTX_OPEN_CONTAINING":"打開所在文件夾","CTX_REMOVE":"從庫中刪除","CTX_AVAILABLE_OFFLINE":"離線可用","CTX_PAUSED":"暫停","CTX_ALWAYS_ON_TOP":"置頂","CTX_FULLSCREEN":"全屏","CTX_WRONG_SUBS":"錯誤的字幕?","CTX_REPORT_ISSUES":"報吿問題","CTX_COPY":"複製","CTX_PASTE":"粘貼","CTX_CLEAR":"清除","CTX_CLEAR_RECENT_SEARCHES":"清除最近搜索記錄","HELLO_THERE":"您好","HOPE_YOU_ENJOY":"我們希望您喜歡Stremio,也許它已經是您最喜歡的應用之一了!","WHO_ARE_WE":"我們是誰?我們是它背後的團隊。在過去三年裏的每天,我們兩個努力工作使這個產品越來越好。","SUPPORT_US":"如果您喜歡Stremio,如果Stremio對您來説很有價值,請傳播它!","SPREAD_THE_WORD":"現在與您的朋友分享傳播關於Stremio的信息","MORE_PEOPLE":"使用Stremio的人越多,效果就越好!","SEND_A_LINK":"或發送一個鏈接到我們的網站","TIP_LOCALFILES":"提示:您可以將本地視頻文件拖放到Stremio中","ADDON_MY":"我的插件","ADDON_COMMUNITY":"社區插件","ADDON_OFFICIAL":"官方插件","ADDON_REPOS":"插件集合","ADDON_SEARCH":"搜索插件","ADDON_INSTALL":"安裝","ADDON_CONFIGURE":"配置","ADDON_UNINSTALL":"卸載","ADDON_UPGRADE":"更新","ADDON_INSTALLED":"已安裝","ADDON_INSTALLED_MSG":"插件已安裝!","ADDON_UPGRADED_MSG":"插件已更新!","ADDON_UNKNOWN":"未知","ADDON_ERR":"插件安裝錯誤!","ADDON_DISCONNECTED":"已斷開連接","ADDON_APP_MISSING":"未安裝此源的應用程序,您想現在安裝嗎?","ADDON_APP_INSTALL":"立即安裝","ADDON_PAGE":"插件頁","ADDON_TOP_CONTENT":"最好從這個插件","ADDON_PROVIDES":"這個插件會給您:","ADDON_WATCH":"立即觀看#{types}!","ADDON_WATCH_FREE":"立即免費觀看#{types}!","ADDON_ADDON":"插件","ADDON_SUPPORTED_TYPES":"支持的類型","ADDON_SUPPORTED_CATALOGS":"支持的目錄","ADDON_PROVIDES_DISCOVER":"發現中的更多#{types}","ADDON_PROVIDES_STREAMS":"觀看#{types}","ADDON_PROVIDES_STREAMS_FREE":"免費觀看#{types}","ADDON_PROVIDES_SUBTITLES":"#{types}的字幕","ADDON_CANTDETECT":"我們無法檢測到正在運行的Stremio,因此我們無法檢測您安裝了哪些插件。","ERR_NO_META":"找不到有關於此的信息","ERR_GETTING_META":"檢索有關於此的信息時出錯","ERR_CANT_PARSE_MAGNET":"無法分析Magnet","ERR_NO_MAGNET_INFOHASH":"Magnet缺少有效的Hash","ERR_NO_FILE_PATH":"沒有文件路徑無法發送請求","ERR_NO_TORRENT":"沒有Torrent返回","ERR_NO_SUPPORTERD_FILES":"找不到支持的文件","ERR_OPENING_FILES":"無法打開外部文件","ERR_INVALID_LINK":"無效鏈接","ERR_REGISTERED_ONLY":"此選項僅適用於已註冊用户。","ERR_CLIPBOARD":"無法從剪切板播放","ERR_CLIPBOARD_READ":"無法讀取此平台上的剪切板","ERR_CLIPBOARD_GENERIC":"在剪切板中找不到可播放的URL. 請將URL(例如Magnet鏈接)複製到視頻。","BOARD_CONTINUE_WATCHING":"繼續觀看","BOARD_EXPLANATION_RECOMMENDATIONS":"專門為您挑選的電影。<br />這部電影是一個推薦樣例。","BOARD_EXPLANATION_EPISODES":"這裏是您最喜愛的劇集的新一集。<br />將您關注的劇集添加到庫中。","BOARD_EXPLANATION_VIDEOS":"這裏是您最喜愛的頻道的新一集。<br />將您關注的YouTube頻道添加到庫中。","WEBSITE_SLOGAN_WATCH":"立即觀看","WEBSITE_SLOGAN_ALL":"一站式視頻娛樂解決方案","WEBSITE_SLOGAN_NEW":"您能觀看一切","WEBSITE_SLOGAN_NEW_NEW":"自由串流","WEBSITE_WATCH_FROM":"觀看","WEBSITE_DOWNLOAD":"立即下載","WEBSITE_DOWNLOAD_FOR":"立即下載","WEBSITE_IS_DESKTOP":"Stremio是一個桌面應用程序,請在PC上打開此頁並下載","WEBSITE_DESKTOP_DEMO_VID":"桌面演示","WEBSITE_PAGE_HOME":"首頁","WEBSITE_PAGE_FEATURES":"功能","WEBSITE_PAGE_ADDONS":"插件","WEBSITE_PAGE_TECH":"技術","WEBSITE_PAGE_CREATE_ADDON":"創建插件","WEBSITE_PAGE_CONTACTS":"聯絡","WEBSITE_PAGE_BLOG":"博客","WEBSITE_TYPE_movie":"電影","WEBSITE_TYPE_series_PL":"劇集","WEBSITE_TYPE_tv":"直播電視","WEBSITE_TYPE_channel":"頻道","WEBSITE_STREMIO_WHAT_IS":"Stremio是一款幫助您管理和隨時觀看您喜愛的視頻、電影、劇集和電視頻道的應用程序","WEBSITE_FEATURES_WATCH":"立即觀看高清視頻","WEBSITE_FEATURES_WATCH_DETAIL":"點擊並播放您喜愛的電影、劇集、視頻和電視頻道。","WEBSITE_FEATURES_SUBS":"自動加載字幕","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio會自動為您的語言選擇同步字幕。","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"在電視和移動設備上播放","WEBSITE_FEATURES_CAST_DETAIL":"適用於AppleTV、Chromecast、智能電視(DLNA/UPnP)和移動設備。","WEBSITE_LIB":"享受在所有設備上同步的個人庫","WEBSITE_LIB_COLLECT":"從Stremio收集","WEBSITE_LIB_IMPORT":"從Facebook導入","WEBSITE_LIB_LOCAL":"從本地磁盤添加","WEBSITE_BOARD":"首頁 - 通知和推薦的一站式場所","WEBSITE_BOARD_RECOMMEND":"推薦電視節目","WEBSITE_BOARD_TRENDING":"流行電影","WEBSITE_BOARD_NEW":"新視頻","WEBSITE_BOARD_EPISODE":"新一集","WEBSITE_BOARD_1":"想看些有趣的東西嗎?根據您的喜好得到推薦!","WEBSITE_BOARD_2":"當您最喜愛的電視節目或YouTube頻道的新一集播出時獲得通知!","WEBSITE_BOARD_YOUTUBE":"YouTube頻道的新視頻","WEBSITE_BOARD_EPISODES":"您關注的劇集的新一集","WEBSITE_ADDONS":"內容插件","WEBSITE_TECH_DETAIL":"我們熱愛科技,我們熱愛瘋狂的科學!\\nStremio使用了以下開源技術:","WEBSITE_TECH_WCJS":"WebChimera.js允許Stremio以良好的性能播放任何視頻格式。","WEBSITE_TECH_WCJS_EXTRA":"我們是項目的核心貢獻者","WEBSITE_TECH_ELECTRON":"Electron為Stremio提供了一個創新平台。","WEBSITE_TECH_ELECTRON_EXTRA":"我們是項目貢獻者","WEBSITE_TECH_LINVODB":"一種數據庫技術,確保您的數據在任何地方登錄都受管理和可用。","WEBSITE_TECH_LINVODB_EXTRA":"內部技術","WEBSITE_CREATE_ADDON":"創建您的插件","WEBSITE_CREATE_ADDON_DETAIL":"您有提供視頻內容的服務嗎?我們將通過創建插件來幫助您從Stremio的功能中獲益。","WEBSITE_CREATE_ADDON_BENEFITS":"為Stremio創建插件的好處","WEBSITE_P2P_BEAUTY":"點對點流媒體之美","WEBSITE_P2P_1":"可靠且價格合理的全高清/4K視頻點播或流媒體直播","WEBSITE_P2P_2":"提供良好用户體驗的分銷平台","WEBSITE_P2P_3":"我們將創建一個插件來滿足您的確切需要","WEBSITE_P2P_CONTACT":"有興趣嗎?歡迎您通過<a href=\'mailto:office@stremio.com\'>聯繫我們</a>.","WEBSITE_P2P_CONTACT_EXTRA":"我們很樂意幫助您將您的內容集成到Stremio!","WEBSITE_P2P":"偶然間出現了一種改變遊戲名稱的技術。 我們投入了大量的時間和精力來構建我們的點對點(P2P)視頻流媒體引擎,該引擎可提供出色的性能和多功能性,以適應任何用例。\\n請聯繫我們以獲取支持DRM的P2P視頻點播或實時流媒體。","WEBSITE_THOUGHTS":"我們分享的想法:","WEBSITE_SPREAD":"傳播關於Stremio的信息:","WEBSITE_CONTACT":"聯繫我們,我們很高興收到您的來信!","WEBSITE_OPENSOURCE":"有關我們的開源項目,請轉到:","WEBSITE_BITCOIN":"捐贈比特幣:","WEBSITE_FAQ":"常見問題","WEBSITE_FAQ_SHORT":"常見問題","WEBSITE_QUESTIONS":"問題","WEBSITE_TOS":"使用條款","WEBSITE_LEGAL":"法律","WEBSITE_PAGE_ABOUT":"關於","WEBSITE_PAGE_BECOME_PARTNER":"成為合作伙伴","WEBSITE_ALL_YOU_CAN_WATCH":"自由觀看\\n您想看的一切。","WEBSITE_FREEDOM_TO_STREAM":"自由串流","WEBSITE_WHAT_IS_STREMIO":"什麼是Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio是一個一站式視頻內容聚合中心。在您擁有的任何設備上發現,管理和觀看來自各種來源的視頻。","WEBSITE_WHAT_IS_STREMIO_P2":"電影、電視節目、劇集、電視直播或網絡頻道例如YouTube或Twitch.tv等,您可以在Stremio上找到所有這些內容。","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio是一個現代化的媒體中心,為您的視頻娛樂提供一站式解決方案。您可以通過易於安裝的插件發現,觀看和整理視頻內容。","WEBSITE_WHAT_IS_STREMIO_P2_V2":"電影、電視節目、直播電視或網絡頻道——在Stremio上找到所有這些。","WEBSITE_ENJOI_ON_ALL_DEVICES":"在所有媒體設備上享受","WEBSITE_DEVICES_COLLECT":"從Stremio收集","WEBSITE_DEVICES_IMPORT_FB":"從Facebook導入","WEBSITE_DEVICES_LOCAL":"從本地磁盤添加","WEBSITE_JOIN_THE_PARTY_NOW":"立即加入聚會","WEBSITE_DEVICES_ALL":"易於在所有設備上使用;","WEBSITE_EXTENDABLE_CATALOG":"可無限擴展的視頻目錄;","WEBSITE_ORGANIZE_YOUR_MEDIA":"強大的媒體管理功能;","WEBSITE_AS_SEEN_ON":"如圖所示","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"關於我們","WEBSITE_LINK_TECHNOLOGY":"技術","WEBSITE_LINK_APPS":"應用程序","WEBSITE_LINK_DOWNLOADS":"下載","WEBSITE_MORE":"更多","WEBSITE_LINK_ADDONS":"插件","WEBSITE_LINK_ADDON_SDK":"插件SDK","WEBSITE_LINK_CONTRIBUTE":"貢獻","WEBSITE_LINK_COMMUNITY":"社區","WEBSITE_LINK_BLOG":"博客","WEBSITE_MORE_MORE":"... & 更多","WEBSITE_LINK_HELP":"幫助中心","WEBSITE_LINK_CONTACTS":"業務查詢","WEBSITE_LINK_TOS":"條款和條件","WEBSITE_LINK_PRAVACY":"隱私政策","WEBSITE_SUBSCRIBE":"訂閲","WEBSITE_NEWSLETTER":"加入我們的實時通訊,瞭解精彩的內容","WEBSITE_PLACEHOLDER_EMAIL":"您的電子郵箱","WEBSITE_COMMUNITY":"社區","WEBSITE_LINK_PRAVACY_LEGAL":"隱私與法律","WEBSITE_WHY":"我們為什麼這樣做","WEBSITE_WHY_P1":"在Stremio,我們每天都工作,因為我們想解決視頻點播行業的一個重要問題。每分鐘都有這麼多的新內容發佈,幾乎不可能找到解決的方法。","WEBSITE_WHY_P2":"我們幫助人們瀏覽這個巨大的視頻娛樂世界,發現新的內容來享受。我們的應用程序彙集了電影、劇集、電視直播、網絡頻道等。我們致力於讓用户非常容易地找到他們喜歡的標題和廣播。","WEBSITE_WHY_P3":"您可以隨時在任何設備上使用我們的服務,使Stremio成為您唯一需要的視頻娛樂中心。","WEBSITE_TEAM":"團隊","WEBSITE_TEAM_P":"Stremio團隊雖小但很強大:我們10個人用X語言編寫代碼,分享軟件開發、UI和UX設計、營銷和廣吿、商業和初創企業方面的專業知識。","WEBSITE_FEATURES":"功能","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"輕鬆發現新內容","WEBSITE_FEATURES_DISCOVER_P":"輕鬆發現要觀看的新電影、電視節目、劇集和頻道。按類別、流派、評分、時間等瀏覽,或者只需鍵入一個名稱即可找到。Stremio讓尋找新的視頻內容變得輕而易舉。","WEBSITE_FEATURES_ALL_CONTENT":"一塊屏幕顯示所有視頻內容","WEBSITE_FEATURES_ALL_CONTENT_P1":"查看您未看完的電影、劇集或視頻,並繼續觀看;獲得新劇集和版本的通知;瀏覽根據您的觀看習慣獲得的推薦。","WEBSITE_FEATURES_LIBRARY":"管理您的視頻庫","WEBSITE_FEATURES_LIBRARY_P1":"只需點擊一下,即可將任何標題添加到您的Stremio庫中,並按類型、時間或字母順序整齊地排列內容。","WEBSITE_FEATURES_CALENDAR":"記錄您所觀看的一切","WEBSITE_FEATURES_CALENDAR_P1":"獲取添加到庫中的所有電影和系列的日曆可視化。導出您的Stremio日曆並同步它,這樣您就可以隨時知道新的一集或首映何時到來。","WEBSITE_FEATURES_BIG_SCREEN":"在大屏幕上欣賞您的視頻內容","WEBSITE_FEATURES_BIG_SCREEN_P1":"將您正在觀看的任何內容都投屏到另一台設備上,無論是手機、平板電腦還是電視,只需點擊一下即可。","WEBSITE_FEATURES_SOURCES":"觀看不同來源的視頻","WEBSITE_FEATURES_SOURCES_P":"安裝官方和社區插件,欣賞來自多個不同供應商的視頻。","WEBSITE_CREATE_AN_ADDON":"創建插件","WEBSITE_FEATURES_SYNC":"跨設備同步庫並恢復播放","WEBSITE_FEATURES_SYNC_P1":"使用您的帳户在所有設備上登錄,享受同步的庫、插件、播放和日曆。","WEBSITE_FEATURES_EXTENDABLE":"通過插件擴展視頻目錄","WEBSITE_FEATURES_EXTENDABLE_P1":"Stremio插件目錄提供了許多插件,可以從中安裝和觀看各種視頻內容。這包括電影、節目、電視直播、體育、新聞、播客、網絡頻道、視頻遊戲等。","WEBSITE_FEATURES_AUTO_SUBS":"自動加載字幕","WEBSITE_FEATURES_AUTO_SUBS_P1":"通過我們的字幕插件,您可以自動選擇您喜歡的語言。","WEBSITE_FEATURES_CHROMECAST":"投屏到Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"在更大的屏幕上欣賞您的視頻內容,或者將您正在觀看的內容投屏到其他設備上。","WEBSITE_FEATURES_KEEP_TRACK":"跟蹤您最喜愛的電視節目和網絡頻道","WEBSITE_FEATURES_KEEP_TRACK_P1":"獲取您最喜愛的劇集和網絡頻道的新一集的日曆可視化和通知。","WEBSITE_FEATURES_POWER_USER":"超級用户功能","WEBSITE_FEATURES_POWER_USER_P1":"在外部播放器中播放","WEBSITE_FEATURES_POWER_USER_P2":"從Torrent文件或Magnet鏈接播放","WEBSITE_FEATURES_POWER_USER_P3":"從Facebook喜愛或本地磁盤導入您的庫","WEBSITE_ADD_ONS":"插件","WEBSITE_ADD_ONS_P1":"Stremio提供的所有視頻內容都是通過插件系統獲取的,應用程序中沒有內置任何內容或內容提供商。","WEBSITE_ADD_ONS_P2":"有兩組插件可用:官方和社區插件。","WEBSITE_ADD_ONS_P3":"官方插件由Stremio開發和託管,而社區插件由我們的社區成員創建和託管。","WEBSITE_ADDONS_OFFICIAL":"官方插件","WEBSITE_ADDONS_WATCHUB":"從iTunes、Hulu、Amazon和其他英國/美國服務提供商處流式播放您喜愛的電影、劇集和節目。","WEBSITE_ADDONS_YOUTUBE":"觀看您喜愛的YouTube頻道,獲得您關注的貢獻者的新上傳通知。","WEBSITE_ADDONS_FILMON":"免費觀看直播電視、電影和社交電視。600個電視頻道,45000部免費電影,紀錄片以及更多","WEBSITE_ADDONS_OPENSUBTITLES":"多語種影視字幕,每天上傳上千個翻譯字幕。","WEBSITE_ADDONS_COMMUNITY":"社區插件","WEBSITE_ADDONS_FILMON_VOD":"觀看來自Filmon.tv的點播視頻。","WEBSITE_ADDONS_TWICH":"觀看來自Twitch.tv(電子競技行業的視頻流媒體平台)的直播。","WEBSITE_ADDONS_VODO":"觀看完全免費的獨立電影。","WEBSITE_ADDONS_NETFLIX":"觀看Netflix的電影和網劇。","WEBSITE_ADDONS_CREATE":"創建插件","WEBSITE_ADDONS_CREATE_P1":"如果您願意,您可以開發自己的插件。通過這種方式,您可以讓自己和我們的社區訪問新的視頻內容,並接觸到全球數百萬用户的新目標受眾。","WEBSITE_ADDONS_START_CREATE":"要開始,請訪問Stremio插件SDK頁面:","WEBSITE_DOWNLOADS":"下載","WEBSITE_DOWNLOADS_P1":"為了獲得最佳性能,我們建議您使用最新版本的Stremio應用程序。但是,如果出於某種原因,您想使用舊版本,可以在此處下載。","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS(限制版本)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"貢獻","WEBSITE_CONTRIBUTE_P1":"Stremio平台是開源的,您可以輕鬆地為當前沒有來源的內容創建一個插件。","WEBSITE_CONTRIBUTE_WHY":"為什麼要創建插件?","WEBSITE_CONTRIBUTE_WHY_P1":"為您的視頻內容吸引新觀眾","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio的用户羣體正在快速增長,在推出的第一年,Stremio在全球獲得了100萬用户,在該平台存在的第二年,這個數字增長到250萬。","WEBSITE_CONTRIBUTE_WHY_P3":"用插件,您可以輕鬆接觸這些觀眾並向他們分發您的視頻內容。","WEBSITE_CONTRIBUTE_ALL":"在一處觀看您喜愛的電影、視頻、劇集和頻道。","WEBSITE_CONTRIBUTE_ALL_P1":"您是Stremio上尚未提供的特定類型內容的粉絲?為它創建一個插件,在市場上最大、最易使用的娛樂中心之一欣賞您喜愛的視頻。","WEBSITE_CONTRIBUTE_ALL_P2":"除此之外,您還會得到其他志同道合的Stremio社區成員的無盡感激。","WEBSITE_CONTRIBUTE_MONETIZE":"通過插件營利,並在其幫助下賺錢","WEBSITE_CONTRIBUTE_MONETIZE_P1":"一旦您為Stremio開發了一個新的插件,您就可以通過多種不同的方式輕鬆地靠其營利。如果您正在考慮此問題,請隨時與我們聯繫","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":",我們很樂意就插件營利選項向您提供諮詢和建議。","WEBSITE_CONTRIBUTE_TRANSLATE":"成為一名志願翻譯者","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"如果您想享受不同語言的Stremio應用程序,您可以加入我們的志願翻譯者社區。他們幫助我們添加多種不同語言的Stremio版本。","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"您想開始嗎?","WEBSITE_TRANSALTE_STREMIO":"翻譯Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"官方社區","WEBSITE_COMMUNITY_OFFICIALS_P1":"成為不斷增長的Stremio社區的一部分。在社交媒體上關注我們,不要害羞地打招呼,我們喜歡聽到粉絲的聲音!","WEBSITE_COMMUNITY_UNOFFICIALS":"非官方社區","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"合作伙伴和支持者","WEBSITE_COMMUNITY_GOODIES":"Stremio特典","WEBSITE_COMMUNITY_WALLPAPERS":"壁紙","WEBSITE_COMMUNITY_ART":"社區藝術畫廊","WEBSITE_LINK_ART":"社區藝術畫廊","WEBSITE_CONTACT_US":"聯繫我們","WEBSITE_CONTACT_US_P1":"如果您有任何問題、意見或建議,請隨時通過下面的聯繫方式與我們聯繫。","WEBSITE_CONTACT_US_P2":"請記住,我們位於保加利亞,因此可能會由於時區差異而延遲處理您的問題。","WEBSITE_CONTACT_US_SUCCESS":"您的信息已發送。我們會在方便的時候儘快給您回覆。","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"請輸入有效的電子郵箱!","WEBSITE_CONTACT_US_Q_RELATED_TO":"您的問題與什麼有關?","WEBSITE_CONTACT_US_Q_OS":"您的操作系統是什麼?","WEBSITE_CONTACT_US_PH_EMAIL":"您的電子郵箱","WEBSITE_CONTACT_US_PH_MESSAGE":"短信","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"發送","WEBSITE_CONTACT_US_Q_1":"如何安裝?","WEBSITE_CONTACT_US_Q_2":"如何卸載?","WEBSITE_CONTACT_US_Q_3":"(HTML)如何製作千層麪?","WEBSITE_CONTACT_US_Q_4":"插件","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"技術","WEBSITE_TECHNOLOGY_P1":"我們熱愛科技,熱愛科學。</br>這是Stremio的動力(它都是開源的)。","WEBSITE_TECHNOLOGY_P_QT":"最佳跨平台軟件開發工具。","WEBSITE_TECHNOLOGY_P_MPV":"一款免費、開源、跨平台的媒體播放器。","WEBSITE_TECHNOLOGY_P_RN":"React Native允許您僅使用JavaScript構建移動應用程序。","WEBSITE_TECHNOLOGY_P_VLC":"嵌入到應用程序中獲取多媒體的媒體框架。","WEBSITE_TECHNOLOGY_P_REALM":"Realm是一個移動平台,是SQLite和Core Data的替代品。","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js是一個開源、跨平台的JavaScript運行環境。","WEBSITE_TECHNOLOGY_P_RUST":"Rust是一種多範式系統編程語言,關注安全性,尤其是安全併發性。","WEBSITE_TECHNOLOGY_CONTRIBUTE":"為項目貢獻力量","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"您可以通過兩種方式為Stremio做貢獻,幫助我們將產品做得更好。","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"您可以通過翻譯平台來貢獻您寶貴的語言技能...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"或","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... 您可以利用您的編程技巧來創建社區插件。","WEBSITE_TRANSLATE_STREMIO":"翻譯Stremio","WEBSITE_404_OH_NO":"糟糕!您要找的頁面不在這裏...","WEBSITE_GO_HOME":"回到主頁","WEBSITE_LINK_OTHER_DOWNLOADS":"其他下載","WEBSITE_FAQ_ABR":"常見問題","WEBSITE_SUPPORT":"支持","WEBSITE_DOWNLOAD_4_0_BETA":"立即下載Stremio 4測試版","WEBSITE_GET_FOR_DESKTOP":"獲取桌面","WEBSITE_LINK_ADDON_COMPETITION":"插件比賽","WEBSITE_LINK_ART_CONTEST":"藝術比賽","WEBSITE_MY_ACCOUNT":"我的賬户","WEBSITE_MAINPAGE_FAQ_001_H1":"什麼是Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio是一個現代化的媒體中心,讓您可以自由觀看任何您想要的東西。","WEBSITE_MAINPAGE_FAQ_002_H1":"它是如何工作的?","WEBSITE_MAINPAGE_FAQ_002_P1":"一旦您在設備上安裝了Stremio並創建了一個帳户,您所要做的就是訪問插件目錄並安裝任何您想要的插件,就可以開始了!","WEBSITE_MAINPAGE_FAQ_002_P2":"之後,您可以進入“發現”或“板”部分,開始探索內容。","WEBSITE_MAINPAGE_FAQ_003_H1":"我可以在這裏看什麼?","WEBSITE_MAINPAGE_FAQ_003_P1":"很多:電影、電視節目、網絡頻道、體育、電視頻道、收聽播客等等。感謝我們的插件系統,您可以訪問各種內容。","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio是開源的嗎?","WEBSITE_MAINPAGE_FAQ_004_P1":"是的,您可以查看以下鏈接:${1}桌面應用${2}和${3}GitHub組織${4}。","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio安全嗎?","WEBSITE_MAINPAGE_FAQ_005_P1":"是:因為它是開源軟件,所以代碼可以公開審核,您可以自己查看。","WEBSITE_MAINPAGE_FAQ_006_H1":"我的隱私如何?","WEBSITE_MAINPAGE_FAQ_006_P1":"我們尊重用户隱私,除了創建和同步您的帳户所必需的最低限度外,不收集任何個人數據。","WEBSITE_MAINPAGE_FAQ_006_P2":"註冊時還有一個${1}訪客模式${2},它不需要任何數據:在這種模式下,不會調用我們的後端。然而,這是以犧牲有用的功能為代價的,比如能夠跨設備同步您的庫。","WEBSITE_MAINPAGE_FAQ_007_H1":"我可以投屏到電視嗎?","WEBSITE_MAINPAGE_FAQ_007_P1":"是的,我們支持Chromecast,您可以從桌面和移動應用程序(Android)進行強制轉換。","WEBSITE_MAINPAGE_FAQ_008_H1":"Stremio有多少插件?","WEBSITE_MAINPAGE_FAQ_008_P1":"截至2019年末,超過50個。有關更多信息,請查看我們的插件目錄。","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio是否可以擴展到插件目錄之外?","WEBSITE_MAINPAGE_FAQ_009_P1":"是的,您應該查看這些:${1}PimpMyStremio${2},${3}Reddit communities${4},${5}Stremio Downloader${6},等等。","WEBSITE_MAINPAGE_FAQ_010_H1":"Stremio支持哪些設備?","WEBSITE_MAINPAGE_FAQ_010_P1":"我們有適用於Windows、Mac和Linux的桌面應用程序。對於移動設備,我們支持Android和iOS,但請記住iOS的功能有限(不支持大多數插件)。","WEBSITE_MAINPAGE_FAQ_010_P2":"有很多基於Android的設備可以在上面運行Stremio,比如NVIDIA Shield和Amazon Fire Stick,但我們並不正式支持它們。","WEBSITE_MAINPAGE_FAQ_011_H1":"您們能為Stremio添加某些內容嗎?","WEBSITE_MAINPAGE_FAQ_011_P1":"抱歉,我們本身不提供任何內容,但是您安裝的Stremio插件越多,您可以找到的內容就越多。","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio可以播放Magnet鏈接嗎?","WEBSITE_MAINPAGE_FAQ_012_P1":"是的,它還可以播放正常的HTTP鏈接和Torrent文件(拖放)。","WEBSITE_MAINPAGE_FAQ_013_H1":"我可以下載視頻並離線觀看嗎?","WEBSITE_MAINPAGE_FAQ_013_P1":"離線可用是一項即將推出的功能,但如果您允許Stremio在設備上緩存(從“設置”面板),您可以稍後在沒有連接的情況下觀看視頻。","WEBSITE_MAINPAGE_FAQ_014_H1":"什麼都不能用,幫幫我!","WEBSITE_MAINPAGE_FAQ_014_P1":"您確定已安裝插件嗎?如果是,請與我們的${1}幫助中心${2}聯繫","WEBSITE_MAINPAGE_FAQ_015_H1":"Stremio如何維持其開發運營?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"有關更多問題,請訪問我們的${1}幫助中心${2}。","HELP_LEARN_MORE":"幫助我們瞭解更多有關您的信息。","LIFESTYLE":"生活方式","SPORTS":"體育","FOOD_HEALTH":"飲食與健康","BEAUTY_FASHION":"美麗與時尚","NEWS":"新聞","GAMING":"遊戲","SCIENCE_EDUCATION":"科學與教育","MUSIC":"音樂","TRAVEL":"旅行","LATE_NIGHT":"深夜","REALITY":"真人","COMEDY":"喜劇","DIY":"DIY","TECH":"技術","CINEMA":"影院","CONTINUE":"繼續","SLOW_LOADING":"加載緩慢?","I_GIVE_UP":"我放棄了","LEARN_MORE":"瞭解更多","POOR_SOURCE":"此源不可用或您的網絡連接不夠快","PICK_CATEGORIES_ERR":"您必須至少選擇3個類別","ADJUST_TIMING":"調整時間","ADJUST_SIZE":"調整大小","SEARCH_ANYTHING":"您可以搜索一切...","ALL_CATEGORIES":"全部","SEARCH_CATEGORIES":"電影、劇集、YouTube和電視","SEARCH_PERSONS":"演員、導演和編劇","SEARCH_PROTOCOLS":"HTTP或Magnet鏈接","SEARCH_TYPES":"IMDB/TVDB鏈接","WATCHED":"已觀看","SHOW_LESS":"顯示較少","LAST_SEARCHES":"上次搜索","CLEAR_HISTORY":"清除歷史記錄","CHOOSE_SOME":"選擇其中一些:","NO_WEB_REMOTE":"無法加載Web Remote","STREMIO_OFFLINE":"Stremio離線","STREMIO_EXPENSIVE_CONNECTION":"我們檢測到您正在使用移動數據連接,是否繼續?","USE_DATA":"使用移動數據","WARNING":"警吿","MORE_INFO":"更多信息...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"加載...","STREMIO_TV_BACK_TO_LANGUAGES":"返回語言","STREMIO_TV_REMOTE":"遠程","STREMIO_TV_GO_TO":"去往:","STREMIO_TV_OR_SCAN":"或掃描:","STREMIO_TV_ADDON_INSTRUCTIONS":"請按照説明安裝您喜歡的插件。","STREMIO_TV_LIVE_TV":"直播電視","STREMIO_TV_RESUME_WATCHING":"繼續觀看","STREMIO_TV_LOADING_BACKGROUND":"加載背景","STREMIO_TV_CHECKING_AUTHENTICATION":"正在檢測身份驗證","STREMIO_TV_LOADING_BOARD":"加載主頁","STREMIO_TV_LOGIN_HEADER_LINE_1":"我們希望用户在使用我們的軟件時有最好的個性化體驗,","STREMIO_TV_LOGIN_HEADER_LINE_2":"正是出於這個原因,我們懇請您建立和/或登錄您的賬户,","STREMIO_TV_LOGIN_FOOTER_LINE_1":"感謝您的理解,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Stremio團隊","STREMIO_TV_REMOTE_INSTRUCTIONS":"為了在您的智能手機/平板電腦/桌面使用Web Remote:","STREMIO_TV_WIFI_SETUP":"Wi-Fi設置","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle未檢測到互聯網連接。","STREMIO_TV_WIFI_DETAILS_1":"連接到:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"使用密碼:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"在瀏覽器中打開鏈接:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"默認","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"按最近觀看","STREMIO_TV_LIBRARY_SORT_NAME":"按名字","STREMIO_TV_LIBRARY_TIMES_WATCHED":"按觀看次數","STREMIO_TV_DETAILS_SEASON_NUMBER":"季${1}","STREMIO_TV_STREAMS_LOADING":"已加載${1}/${2}插件...","STREMIO_TV_STREAMS_STILL_LOADING":"${1}插件仍在加載...","STREMIO_TV_PLAYER_SETTINGS":"播放器設置","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"字幕延遲","STREMIO_TV_PLAYER_AUDIO_DELAY":"音頻延遲","STREMIO_TV_PLAYER_VIDEO_SCALING":"視頻縮放","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"不支持的流媒體源","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"打開外部鏈接失敗","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"使用ExoPlayer播放","STREMIO_TV_PLAYER_PLAY_IN_VLC":"使用libVLC player播放","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"由於播放錯誤而切換到libVLC player","STREMIO_TV_ADDONS_TITLE":"在手機或PC上使用Stremio安裝或配置插件,然後按\\"同步插件\\"","STREMIO_TV_ADDONS_SUBTITLE":"注意:確保您使用的是相同的Stremio帳户","STREMIO_TV_ADDONS_SYNC_ADDONS":"同步插件","STREMIO_TV_ADDONS_SYNC_SUCCESS":"插件成功同步","STREMIO_TV_ADDONS_SYNC_FAILED":"插件同步失敗","STREMIO_TV_META_LINK_FAILED":"打開元鏈接失敗","STREMIO_TV_CATALOG_LOADING":"目錄仍在加載...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"界面語言已更新","STREMIO_TV_SETTINGS_THEME_UPDATED":"主題已更新","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"首選語言","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"次要首選語言","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"隧道播放","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"某些設備上可能存在播放問題","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"某些視頻格式可能無法播放","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"無緩存","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"默認","STREMIO_TV_SETTINGS_PROFILE_SOFT":"慢","STREMIO_TV_SETTINGS_PROFILE_FAST":"快","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"超快","STREMIO_TV_SETTINGS_SERVER_URL":"流媒體服務器URL","STREMIO_TV_SETTINGS_SERVER_VERSION":"服務器版本","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"未知","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio版本","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"編輯服務器URL","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"輸入流媒體服務器URL","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"要閲讀Stremio的隱私政策,請訪問:","STREMIO_TV_SETTINGS_TOS_TEXT":"要閲讀Stremio的條款和條件,請訪問:","STREMIO_TV_NAV_SEARCH":"搜索","STREMIO_TV_NAV_HOME":"主頁","STREMIO_TV_NAV_DISCOVER":"發現","STREMIO_TV_NAV_LIBRARY":"庫","STREMIO_TV_NAV_MOVIES":"電影","STREMIO_TV_NAV_SERIES":"劇集","STREMIO_TV_NAV_CHANNELS":"頻道","STREMIO_TV_NAV_TV":"電視直播","STREMIO_TV_NAV_SETTINGS":"設置","STREMIO_TV_NAV_ADDONS":"插件","STREMIO_TV_LOGIN_TITLE":"鏈接賬户","STREMIO_TV_LOGIN_EXPIRES_IN":"過期日期到","STREMIO_TV_LOGIN_STEP_ONE":"掃描上方的二維碼或轉到","STREMIO_TV_LOGIN_STEP_TWO":"登錄您的Stremio帳户","STREMIO_TV_LOGIN_NEW_LINK":"請求新鏈接","STREMIO_TV_LOGIN_LINK_REFRESHED":"登錄代碼已刷新","STREMIO_TV_SEARCH_PLACEHOLDER":"輸入一些東西","STREMIO_TV_SEARCH_NO_ADDONS":"沒有為目錄請求插件!","STREMIO_TV_SEARCH_BUTTON":"搜索","STREMIO_TV_SEARCH_KEY_DEL":"刪除","STREMIO_TV_SEARCH_KEY_SPACE":"空格","STREMIO_TV_SEARCH_KEY_CLEAR":"清除","STREMIO_TV_SEARCH_HISTORY_TITLE":"搜索歷史","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"您可以搜索標題、演員、頻道...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"清除搜索歷史","STREMIO_TV_FILTERS_DESCRIPTION":"從以下過濾器中選擇一個","FILTERS":"過濾器","SETTINGS":"設置","ACCOUNT":"賬户","LOGOUT":"註銷","THEMES":"主題","PLAYBACK":"播放","PLAYBACK_SPEED":"播放速度","AUDIO_TRACKS":"音軌","VIDEOS":"視頻","SERVER":"服務器","LINKS":"鏈接","ABOUT":"關於","INTERFACE":"界面","ANIMATIONS":"動畫","STATUS":"狀態","LANGUAGE":"語言","SIZE":"大小","DELAY":"延遲","BOLD":"粗體","TEXT_COLOR":"文本顏色","OUTLINE_COLOR":"輪廓顏色","BACKGROUND_COLOR":"背景顏色","BACKGROUND_BLUR":"背景模糊","SEEK_TIME_DURATION":"尋找持續時間","AUTO_PLAY":"自動播放下一集","PLAY_NOW":"現在播放","MARK_AS_WATCHED":"標記為已觀看","MARK_AS_UNWATCHED":"標記為未觀看","REWIND_TO_BEGINNING":"倒回開始","CONTINUE_WATCHING":"繼續觀看","ALL":"全部","SECONDS":"秒","ON":"開","OFF":"關","RELOAD":"重新加載","EDIT_URL":"編輯URL","NONE":"無","EMBEDDED":"內嵌","REMOTE_SWITCH_DEVICES":"開關設備","REMOTE_VIDEOS":"視頻","REMOTE_ADJUST_TIMING":"調整時間","REMOTE_ADJUST_SIZE":"調整大小","REMOTE_COULD_NOT_BE_LOADED":"無法加載Web Remote","REMOTE_RETRY":"重試","TORRENT_PROFILE_DEFAULT":"默認","TORRENT_PROFILE_SOFT":"慢","TORRENT_PROFILE_FAST":"快","TORRENT_PROFILE_ULTRA_FAST":"超快","FAQ_001_H1":"什麼是Stremio?","FAQ_001_P1":"Stremio是專為視頻娛樂而設計的多媒體中心軟件,易於使用。Stremio允許您管理和觀看自己的電影,劇集,頻道和實況電視收藏。","FAQ_001_P2":"Stremio從本地磁盤和插件系統中收集顯示給您的內容。","FAQ_001_P3":"它還會在您感興趣的新劇集/視頻/電影播出時通知您,併為您提供電影推薦。","FAQ_02_H1":"Stremio與Kodi和Plex相比如何?","FAQ_02_P1":"我們受到這兩種軟件的啟發。但是我們有不同的目標——Stremio專門針對娛樂視頻,並通過易於使用成為其主流解決方案。","FAQ_02_P2":"Stremio將永遠不會像Kodi和Plex那樣具有可定製性和豐富的功能,但它更易於使用。只需${1}就可以獲取它,並查看${2}:)","FAQ_03_H1":"Stremio與Netflix相比如何?","FAQ_03_P1":"同樣,Netflix是我們的靈感之一。我們努力實現Netflix的用户體驗,再加上許多附加的好處。但最重要的是,我們讓您可以自由管理自己的庫,並使用我們的插件系統添加新的內容源。","FAQ_03_P2":"這使得Stremio可以無限擴展,因此當您使用Stremio時,您永遠不會侷限於Netflix決定許可的內容。例如,您可以通過Stremio觀看${1}中的內容電影電視${2}, ${3} Twitch.tv${4},${5}YouTube${6},${7}Vodo${8}甚至${9}Netflix${10}本身!","FAQ_04_H1":"Stremio與Flipboard相比如何?","FAQ_04_P1":"我們不常聽到這個問題,除非與初創企業的人交談:)","FAQ_04_P2":"Stremio是通過設計一個內容聚合器來實現的,它本質上就是視頻的Flipboard。這一點在我們的首頁部分非常明顯,它為您提供目錄和新的插曲/新的視頻通知,讓您瞭解您所關注的內容,就像Flipboard一樣。","FAQ_05_H1":"Stremio與Popcorn Time相比如何?","FAQ_05_P1":"Stremio和Popcorn Time在用户界面上很相似,因為沒有很多方法可以正確製作視頻娛樂目錄:)","FAQ_05_P2":"Popcorn Time主要集中在特定來源的流媒體上,但Stremio是不受限制的,只是一個內容聚合器,它沒有鎖定到特定的內容源。","FAQ_05_P3":"此外,我們默認不提供任何Torrent插件,因此Stremio不提供官方功能的Popcorn Time用例。","FAQ_05_P4":"另一個顯著的區別是Popcorn Time是完全開源的,而Stremio是${1}部分開源的${2}。","FAQ_06_H1":"是否要添加此電影/系列?","FAQ_06_P1":"不,對不起 :(","FAQ_06_P2":"正如大多數其他問題中提到的,Stremio本身不提供任何內容,所有內容都是通過插件系統添加的。如果您有內容請求,您可以使用播放器中的“報吿”按鈕,它將向您當前使用的插件的作者發送電子郵件。","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"能否為X創建插件?","FAQ_08_P1":"完全有可能。","FAQ_08_P2":"如果您有一個插件的想法,請在${1}office@stremio.com${2}給我們留言,但請確保您的插件想法不會侵犯任何版權或使用條款。","FAQ_08_P3":"目前,我們路線圖上的下一件事是FandangoNOW,Filmon.tv video on demand和Crunchyroll的插件。","FAQ_09_H1":"Stremio是否使用BitTorrent?","FAQ_09_P1":"是的,Stremio支持BitTorrent作為流媒體協議。您可以將其與Torrent插件一起使用,也可以將.Torrent文件拖放到Stremio中,或者將磁鐵鏈接粘貼到搜索欄中。","FAQ_09_P2":"請注意,使用BitTorrent的唯一官方插件是${1}Vodo${2},它提供獨立內容,所有內容都允許與BitTorrent一起分發。","FAQ_09_P3":"我們不支持使用任何可能導致版權侵權的第三方插件。","FAQ_10_H1":"我可以在Stremio中通過官方插件觀看什麼節目?","FAQ_10_P1":"默認情況下,您可以在Stremio與它的嵌入式播放器觀看Filmon.tv,YouTube和Vodo的內容。另外,我們還有一個Twitch.tv插件,以及其他一些插件。","FAQ_10_P2":"此組合提供以下選項:","FAQ_10_L1":"Filmon.tv上的熱門電視頻道,例如E4、BBC、Bollyworld TV","FAQ_10_L2":"YouTube上的所有內容,例如BBC News、Top Gear、Vevo、PewDiePie","FAQ_10_L3":"Vodo上的獨立電影","FAQ_10_L4":"Twitch.tv上的在線遊戲廣播","FAQ_10_P3":"此外,Guidebox和Netflix插件提供了許多內容源,它們不完全在Stremio中播放,而是重定向到給定的服務。例如,Guidebox插件將為您提供可在美國免費播放的精選電影,這些電影來自TubiTV和Crackle等服務。","FAQ_11_H1":"Stremio無法安裝,我該怎麼辦?","FAQ_11_P1":"如果您在Windows上,請嘗試${1}此替代安裝程序${2}。","FAQ_11_P2":"如果您使用的是Mac OS X,請注意,我們不支持任何比OS X Mavericks(10.9)更舊的版本。","FAQ_11_P3":"如果您使用的是Linux,請注意,我們目前只支持64位(x64)Linux。","FAQ_11_P4":"如果您仍然無法解決您的問題,請寫信給我們的${1}Facebook羣組${2}。","FAQ_12_H1":"為什麼我的殺毒軟件會報毒?Stremio安全嗎?","FAQ_12_P1":"我們向您保證Stremio是${1}100%安全的${2}。","FAQ_12_P2":"您的殺毒軟件報毒是因為我們的安裝程序中包含廣吿,一些殺毒軟件將其識別為廣吿軟件。","FAQ_12_P3":"如果您仍然不確定,可以嘗試我們的${1}替代安裝程序${2}。","FAQ_13_H1":"如何製作插件?","FAQ_13_P1":"對於初學者,我們建議您查看GitHub上的${1}插件系統模塊${2}。","FAQ_13_P2":"之後,您可以按照${1}Hello World教程${2}進行操作。","FAQ_13_P3":"如果您沒有任何編程技能,請在${1}Reddit社區${2}上發佈您的想法,並在${3}office@stremio.com${4}上與我們聯繫您的插件想法。","FAQ_14_H1":"插件是如何發佈的?","FAQ_14_P1":"當您創建一個插件和主機,並在清單中放置一個指向工作插件地址的<b>終端節點</b>字段時,該插件將自動發佈到我們的${1}插件目錄${2}。","FAQ_14_P2":"發生這種情況是因為Stremio插件模塊的服務器部分會自動調用我們的API來聲明插件。當我們的API驗證您的<b>終端節點</b>為有效的插件時,它將開始顯示在目錄中。","FAQ_15_H1":"我可以在瀏覽器中運行Stremio嗎?","FAQ_15_P1":"目前還沒有,但即將到來!","FAQ_15_P2":"如果您想看到Alpha版本,可以在這裏看到:${1}alpha4.strem.io${2}. 請記住,此Alpha版本上已禁用流式處理。我們支持Chrome、Firefox、Opera和Edge","FAQ_16_H1":"電視投屏不起作用/字幕不起作用","FAQ_16_P1":"電視投屏使用DLNA技術,這在不同的電視品牌和型號之間非常不一致。由於這個原因,我們沒有能力在每種情況下都測試它,所以它還遠遠不夠完美。儘管如此,我們仍在不斷改進,但我們無法為您提供DLNA能夠在您的電視上開始正常工作的預計時間。","FAQ_16_P2":"如果您在“投屏”菜單中看不到您的電視,請嘗試禁用網絡連接並重新啟用它(在Windows上,右鍵單擊網絡並使用“啟用/禁用”),以及重新啟動路由器、電視和PC。","FAQ_16_P3":"如果您仍然遇到問題,您可以通過將您的電視品牌和型號信息發送到${1}來幫助我們”office@stremio.com${2}。","FAQ_16_P4":"同時,我們推薦Chromecast,我們非常支持Chromecast,或者直接用HDMI線將電視與PC連接。","FAQ_17_H1":"Stremio卡死和/或崩潰,我能做什麼?","FAQ_17_P1":"首先,如果您使用的是帶有AVG殺毒軟件的Windows 7,這種組合會產生問題。問題出在AVG本身,我們這邊沒有合理的辦法解決。不幸的是,去除或禁用殺毒軟件將不起作用。唯一的解決辦法是用別的東西代替AVG","FAQ_17_P2":"如果不是這個問題,但您仍在使用Windows,請更新到最新的service pack並更新/重新安裝您的GPU驅動程序,然後重試。","FAQ_17_P3":"如果您的問題仍未解決,或者您使用的是Mac或Linux,請寫信給我們,在${1}我們的Facebook羣組${2}報吿問題的確切細節。","FAQ_18_H1":"如何製作插件?","FAQ_18_P1":"對於初學者,我們建議您查看GitHub上的${1}插件系統模塊${2}。","FAQ_18_P2":"之後,您可以按照${1}Hello World教程${2}進行操作。","FAQ_18_P3":"如果您沒有任何編程技能,請在${1}Reddit社區${2}上發佈您的想法,並在${3}上與我們聯繫您的插件想法。”office@stremio.com${4}。","FAQ_19_H1":"為什麼Stremio佔用磁盤空間?","FAQ_19_P1":"Stremio有一個<b>本地緩存</b>來臨時保存您流式傳輸的視頻文件。","FAQ_19_P2":"這有兩個好處:第一,它允許Stremio預先緩衝視頻,以確保流媒體更流暢。其次,它將視頻保存在本地緩存中,以便您可以繼續離線觀看。","FAQ_19_P3":"Stremio保留了多少取決於“設置”面板中的<b>緩存設置。Stremio可能會在您的磁盤上保留到設置的數量(例如2GB),除非當前流式傳輸的視頻大於該數量,在這種情況下,必須分配足夠的存儲來保留它,直到您結束流式傳輸。","FAQ_20_H1":"緩存文件夾在哪裏?","FAQ_20_P1":"在Windows上,Stremio緩存位於您在設置中選擇的驅動器中(例如\\"E:\\\\stremio-cache\\")","FAQ_20_P2":"在MacOS上,它位於\\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"在Linux上,它位於\\"~/.stremio/stremio-cache\\"或\\"~/stremio-cache\\"","FAQ_21_H1":"我得到\\"流媒體服務器未找到\\"錯誤,我能做什麼?","FAQ_21_P1":"如果出現此錯誤,則表示以下幾點之一:","FAQ_21_P2":"1)您正試圖通過我們的${1}web版本${2}使用一個由YouTube/BitTorrent源代碼支持的插件。在這種情況下,您應該從${3}我們的網站${4}安裝我們的桌面版本","FAQ_21_P3":"2)Stremio安裝有問題。在這種情況下,請嘗試從${1}網站${2}重新安裝我們的最新桌面版本。如果這沒有幫助,請嘗試禁用殺毒軟件和防火牆,重新啟動電腦,然後重試。如果這依然不起作用,請寫信給我們的${3}Facebook羣組${4}","FAQ_22_H1":"我無法在iOS上看到/使用大多數插件","FAQ_22_P1":"由於Apple App Store條款和條件中的限制,我們限制iOS應用程序只能使用一組特定的插件。","FAQ_22_P2":"不過,請放心,將來會有更多的iOS插件,我們還可能添加一個集成,通過將iOS應用程序連接到Stremio流媒體服務器,您將可以使用所有Stremio插件。"}')},8097:e=>{"use strict";e.exports=JSON.parse('{"TYPE_movie":"電影","TYPE_series":"劇集","TYPE_tv":"電影片道","TYPE_channel":"頻道","TYPE_other":"其他","TYPE_movie_PL":"電影","TYPE_series_PL":"劇集","TYPE_tv_PL":"電影片道","TYPE_channel_PL":"頻道","TYPE_other_PL":"其他","TYPE_ALL":"All","VIDEO":"影片","BACK":"返回","MORE":"更多","DONE":"完成","COPY":"複製","SUCCESS":"Success","ERROR":"Error","SETTINGS_CASTING_MODE_PICKER":"Casting mode","CASTING_MODE_HLSV2":"Default","CASTING_MODE_VLC":"libVLC","CASTING_MODE_NO_TRANSCODING":"No transcoding","Discover":"發現","Board":"首頁","Library":"庫","My Library":"我的庫","Calendar":"日曆","NOTIFICATION_ONLINE":"您當前處於線上狀態","NOTIFICATION_OFFLINE":"您當前處於離線狀態","INTERNET_CONNECTION":"網路連線","STORAGE_FULL_TITLE":"警告:儲存空間已滿!","STORAGE_FULL_TEXT":"Stremio將無法儲存您的設定、首選項或登入資訊,考慮重新啟動或重新安裝Stremio。","SEARCH":"搜尋","SEARCH_NO_RESULTS":"未找到結果","SEARCH_EXPLANATION_CONTENT":"搜尋電影、劇集、YouTube和電影片道","SEARCH_EXPLANATION_PEOPLE":"搜尋演員、導演和編劇","SEARCH_PASTE_LINKS":"貼上HTTP和Magnet連結","SEARCH_OR_PASTE_LINK":"Search or paste link","ADD_TO_LIB":"新增到庫中","REMOVE_FROM_LIB":"從庫中刪除","ADDED_TO_LIB":"新增到庫中","REMOVED_FROM_LIB":"從庫中刪除","TRAILER":"預告片","WATCH_TRAILER":"觀看預告片","WATCH_NOW":"立即觀看","SHOW":"檢視","SHOW_MOVIE":"檢視電影","WATCH_RANDOM":"隨機觀看","IMDB_RATING":"IMDb評分","YEAR":"年份","DIRECTOR":"導演","WRITER":"編劇","LEAD_ACTORS":"主演","CAST":"全部演員","CREW":"全部工作人員","SHOW_MORE_CAST":"顯示更多 »","AIRED":"播出時間","SEASONS":"季","GENRE":"型別","CATALOG":"目錄","SUMMARY":"簡介","SHOW_MORE":"顯示更多","SIMILAR":"相似","UPCOMING":"即將上映","ENDED":"已完結","DURATION":"時長","FEATURED":"功能","METADATA":"元資料","CATEGORY":"類別","LINKS_GENRES":"Genres","LINKS_CAST":"Cast","LINKS_DIRECTORS":"Directors","SEARCH_VIDEOS":"搜尋影片","SEARCH_PLACEHOLDER":"搜尋或貼上URL","ADDON":"外掛","ADDONS":"外掛","OFFICIAL":"官方","ADDONS_OFFICIAL":"官方Stremio外掛","ADDONS_POPULAR":"在您所在的地區很受歡迎","ADDON_FREE":"免費","ADDON_PEERED":"連線","ADDON_SUBSCRIPTION":"訂閱","ADDON_STREAM_GEORESTRICTED":"在您所在的地區不提供","ADDON_STREAM_OFFLINECACHE":"離線快取","ADDON_STREAM_LOCALFILE":"本地檔案","SHARE_ADDON":"分享外掛","AVAILABLE_STREAMS":"可用流媒體","NO_STREAM":"未找到流媒體","ALL_ADDONS":"All","INSTALL_MORE_ADDONS":"要獲取更多流媒體,請安裝更多外掛","STREAM_NOT_SUPPORTED":"此平臺不支援所選流媒體。","ADDON_CATALOGUE":"顯示所有外掛 »","ADDON_CATALOGUE_MORE":"安裝外掛","REPO_ADDED":"已新增儲存庫","ADDON_REPO_EXIST_ERR":"此外掛集合已存在","ADDON_REPO_ERR":"新增集合時出錯","ADDON_ADD_ERR":"新增外掛時出錯","ERR_ADDON_PROTECTED":"無法解除安裝外掛,它受到保護","ERR_ADDON_INTERNAL_SOMETHING_WRONG":"出了一些問題——身份驗證可能失敗","ERR_NOT_COLLECTION_URL":"不是集合URL","ERR_NOT_ADDON_URL":"不是有效的外掛URL","ERR_DETECTFROMURL":"再此URL中找不到外掛/集合","ADDON_DUPLICATE_WARNING":"警告:重複的外掛","ADDON_COLLECTION_SET_FAILED":"將已安裝的外掛同步到您的賬戶失敗","SETTINGS_DATA_EXPORT":"匯出使用者資料","ADDON_PULL_FAILED":"從您的帳戶同步已安裝的外掛失敗","REFRESH_ON_CLICK":"點選重試","STILL_IN_THEATER":"電影還在影院上映","WATCH_IN_CINEMA":"請到您本地的影院觀看","IN_THEATER":"在影院上映","GET_TICKETS":"購票","UPCOMING_EPISODE":"下一集","UPCOMING_EPISODE_MESSAGE":"這一集即將播出","MISSING_DATE_EPISODE":"缺失的一集日期","MISSING_DATE_EPISODE_MESSAGE":"這一集可能還沒有播出","CHANNEL_NOT_SCRAPED":"這個頻道還沒有被削刮,請過幾分鐘再來。","ADD_TO_LIBRARY_TO_GET_NOTIFIED":"將其新增到庫中,以便在可用時收到通知。","GET_NOTIFIED_WHEN_AVAILABLE":"一旦可用,您將會收到通知。","WARNING_STREAMING_SERVER":"警告:找不到本地流媒體伺服器,來自本地檔案、YouTube、和BitTorrent的流媒體將不可用。","WARNING_STREAMING_SERVER_DISMISS":"Dismiss","WARNING_STREAMING_SERVER_LATER":"Later","DECODER_WARNING":"警告:您的硬體可能不支援此影片,請記住,播放可能會很慢。","PLAYER_ERROR":"糟糕,播放器錯誤","PLAYER_ERROR_LOOKSLIKE":"看起來似乎","PLAYER_ORIENTATION":"播放器方向","PLAYER_ORIENTATION_LANDSCAPE_SHORT":"鎖定","PLAYER_ORIENTATION_SENSOR_SHORT":"感測器","PLAYER_ORIENTATION_LANDSCAPE":"播放器方向鎖定橫向","PLAYER_ORIENTATION_SENSOR":"播放器方向自動(感測器)","PLAYER_PLAYBACK_SPEED":"播放速度","PLAYER_PLAYBACK_ERROR":"播放錯誤,請重試","PLAYER_PLAYBACK_ERROR_UNKNOWN":"未知錯誤","PLAYER_PLAYBACK_ERROR_DEFAULT":"抱歉,{{productName}}無法播放此影片。","PLAYER_SUBTITLES_LANGUAGES":"Subtitles Languages","PLAYER_SUBTITLES_VARIANTS":"Subtitles Variants","PLAYER_SUBTITLES_SETTINGS":"Subtitles Settings","PLAYER_SUBTITLES_DISABLED":"Subtitles are disabled","PLAYER_SUBTITLES_VERTICAL_POSIITON":"Vertical Position","PLAYER_SUBTITLES_LOADED":"Subtitles loaded","PLAYER_SUBTITLES_LOADED_EMBEDDED":"Embedded subtitles loaded","PLAYER_SUBTITLES_LOADED_EXCLUSIVE":"Exclusive subtitles loaded","PLAYER_SUBTITLES_LOADED_ORIGIN":"Subtitles from {{origin}} loaded","PLAYER_PLAY":"Play","PLAYER_PAUSE":"Pause","PLAYER_NEXT_VIDEO":"Next Video","PLAYER_MUTE":"Mute","PLAYER_UNMUTE":"Unmute","PLAYER_OPEN_IN_EXTERNAL":"Open in external player","PLAYER_PLAY_IN":"Play in {{device}}","PLAYER_LIVE":"直播","PLAYER_NEXT_VIDEO_TITLE":"下個影片","PLAYER_NEXT_VIDEO_BUTTON_DISMISS":"關閉","PLAYER_NEXT_VIDEO_BUTTON_WATCH":"現在觀看","PLAYER_COPY_STREAM_SUCCESS":"Stream link was copied to your clipboard","PLAYER_COPY_STREAM_ERROR":"Failed to copy stream link","STREAMING_FROM":"流媒體","CASTING_TO":"投屏到","NETWORK_STATUS":"網路狀態","STREAM_SPEED":"串流速度:","STREAM_BUFFERED":"已緩衝:","PEERS_INFO":"節點資訊","PEERS_ACTIVE":"活躍:","PEERS_CONNECTED":"已連線:","PEERS_WAITING":"等待:","TRANSCODING_WARNING":"警告:轉碼影片。","STREAM_LOADING":"載入...","PLAYING_LOCAL":"從本地檔案播放","PLAYING_CACHE":"從快取播放","WRONG_SUBS":"字幕錯誤?","ERR_SUBS_LOADING_TITLE":"載入字幕時出錯","ERR_SUBS_LOADING":"字幕載入失敗:這可能是您正在使用的外掛或網路連線的問題","WARN_FOLLOWING_SUB_ADDONS_FAILED":"以下字幕外掛失敗","ERR_CASTING_UPDATE_TITLE":"無法更新投屏裝置資訊:流媒體伺服器可能離線","CHOOSE_DEVICE":"選擇在哪個裝置上播放","NO_CAST_DEVICES":"無可用投屏裝置。","NO_SETTINGS":"無可用設定。","PHONE_TABLET":"手機/平板電腦","SUBTITLES":"字幕","SUBTITLES_CHANGE":"調整字幕","SUBTITLES_CHANGE_NONE":"抱歉,這種語言沒有其他字幕。","SUBTITLES_CHANGE_ACIVE":"當前字幕#{{subtitlesDialog.activeIdx + 1}}被啟用,點選\\"繼續\\"啟用字幕#{{subtitlesDialog.pickedIdx + 1}}.","SUBTITLES_OR":"或者,","SUBTITLES_ADJUST_DELAY":"調整字幕延遲:","SUBTITLES_ADJUST_DELAY_SHORTCUT":"或在播放時使用<span>G</span> / <span>H</span>鍵進行調整。","SUBTITLES_ADJUST_DELAY_TIP":"提示:您可以在播放時使用<span>G</span> / <span>H</span>鍵進行調整。","SUBTITLES_DELAY":"字幕延遲:","SUBTITLES_LOADING":"載入字幕...","SUBTITLES_UNAVAILABLE":"沒有可用的外部字幕","SUBTITLES_DISABLED":"關閉","EXTERNAL_PLAYER_DISABLED":"Disabled","EXTERNAL_PLAYER_ALLOW_CHOOSING":"Allow Choosing","EXTERNAL_PLAYER_HINT":"Hint: There is a setting to allow always opening with external player","DONT_SHOW_AGAIN":"Don\'t show again","SERVICE_INSTALL":"Install","AUDIO":"Audio","DEFAULT_LANGUAGE":"Default Language","DEFAULT_SECONDARY_LANGUAGE":"Default Secondary Language","SEASON":"季","EPISODE":"集","SPECIAL":"Special","SORT":"排序","SORT_BY":"排序按照","FILTER":"篩選","SORT_TRENDING":"熱門","SORT_RECENT":"最近","SORT_ALPHABET":"首字母","SORT_ALPHABET_REVERSE":"z-a","SORT_RATING":"評分","SORT_WATCHED":"已觀看","SORT_YEAR":"年份","SELECT_TYPE":"Select type","SELECT_SORT":"Select sort","SELECT_CATALOG":"Select catalog","SELECT_GENRE":"Select genre","SORT_LASTWATCHED":"By last watched","SORT_NAME":"By name","SORT_TIMESWATCHED":"By times watched","New for You":"新的","New Episodes":"新劇集","New Videos":"新影片","Recommendations":"推薦","LIBRARY_RESUME":"簡介","LIBRARY_PLAY":"Play","LIBRARY_DETAILS":"詳情","LIBRARY_RESUME_DISMISS":"清除","LIBRARY_CLEAR_PROGRESS":"Clear Progress","LIBRARY_REMOVE":"Remove","LIBRARY_NOT_LOGGED_IN":"Library is only available for logged in users","CALENDAR_NOT_LOGGED_IN":"Calendar is only available for logged in users","NOT_LOGGED_IN_CLOUD":"Access your favorite movies and TV shows anytime, anywhere","NOT_LOGGED_IN_RECOMMENDATIONS":"Recommendations tailored to your viewing history","NOT_LOGGED_IN_NOTIFICATIONS":"Never miss an episode again","NOT_LOGGED_IN_CALENDAR":"Schedule your personal watching calendar","DISCOVER_FEATURED":"功能","DISCOVER_TOP":"熱門","DISCOVER_OSCAR":"奧斯卡獲獎作品","DISCOVER_WARNING_TITLE":"糟糕!","DISCOVER_EMPTY_CATALOG":"此外掛返回空內容。","DISCOVER_ADULT_WARNING":"此內容僅對成人可見,您是否已滿18週歲?","DISCOVER_NOADDON_WARNING":"警告:此型別沒有可用的Stremio外掛,顯示已儲存的專案,此處不會更新任何內容。","DISCOVER_LOAD_ERR":"內容未載入,發生錯誤。","DISCOVER_ADDON_UNINSTALLED":"此內容不再可用,您可能已解除安裝外掛。","UNINSTALL_THIS_ADDON":"解除安裝此外掛","ERR_ADDON_NOT_INSTALLED":"未安裝此外掛,立即安裝?","DETAIL_RECEIVE_NOTIF_SERIES":"接受新劇集的通知","DETAIL_RECEIVE_NOTIF_VIDEOS":"接受新影片的通知","SIDEBAR_SHOW_STREAMS":"顯示流媒體","RELAUNCH":"立即重新啟動!","UPGRADE":"新版本可用!升級至Stremio的最新版本","RELOAD_UI":"重新載入使用者介面","MANUAL_UPDATE_TITLE":"更新您的Stremio版本","MANUAL_UPDATE_LINE1":"您執行的是一個過時的Stremio版本,這是非常不推薦的。","MANUAL_UPDATE_LINE2":"請儘快更新。","BUTTON_UPDATE_LATTER":"不是現在","BUTTON_UPDATE_NOW":"更新","ANONYMOUS_USER":"匿名使用者","DONT_HAVE_ACC":"還沒有賬戶?","HAVE_ACC":"已經有賬戶了?","PASSWORD":"密碼","PASSWORD_CONFIRM":"確認密碼","EMAIL":"電子郵箱","FB_LOGIN":"使用Facebook登入","FB_NOTHINGSHARED":"未經您的允許,任何內容都不會被共享","FB_NOPOST":"我們不會替您傳送任何東西","OR":"或","I_ACCEPT":"我接受","I_ACCEPT_BY_CLICKING":"透過點選上面的按鈕,我宣告我接受","TOS":"條款和條件","MUST_ACCEPT_TERMS":"您必須接受條款","PASSWORDS_NOMATCH":"密碼不匹配","SIGN_UP":"註冊","SIGN_UP_EMAIL":"使用電子郵箱註冊","CLICK_TO_SIGN_UP":"點選此處註冊。","LOG_IN":"登入","LOG_OUT":"登出","EXIT_FULLSCREEN":"退出全屏模式","ENTER_FULLSCREEN":"進入全屏模式","PLAY_URL_MAGNET_LINK":"播放URL/Magnet連結","HELP_FEEDBACK":"幫助和反饋","TERMS_OF_SERVICE":"服務條款","PRIVACY_POLICY":"隱私政策","ABOUT_STREMIO":"關於Stremio","USER_PANEL":"使用者面板","LOGIN_LABEL":"Login","GUEST_LOGIN":"訪客登入","GUEST_LOGIN_NOTICE":"不建議訪客登入,使用常規登入允許Stremio同步您的庫,接受喜愛的劇集/頻道的通知。您確定要繼續嗎?","GUEST_LOGIN_NOTICE_2":"不建議訪客登入,您將沒有同步的庫和首頁通知,這是Stremio的重要功能。您確定要繼續嗎?","CLICK_HERE":"點選此處","WRONG_PASSWORD":"錯誤的電子郵箱或密碼,如果您忘了密碼,","SET_A_PASS":"設定密碼","RESET_PASSWORD":"重置密碼","FORGOT_PASSWORD":"忘記密碼?","EMAIL_USED_WITH_FB":"此電子郵箱與Facebook登陸一起使用。","INVALID_EMAIL":"請輸入有效的電子郵箱地址","INVALID_PASSWORD":"請輸入有效的密碼","CONN_ERR":"連線錯誤,請稍後再試。\\n\\n如果問題仍然存在,請禁用防火牆/防毒軟體(特別是Bitdefender)。","IMPORT_FROM_GUEST":"從訪客賬戶匯入庫","RECEIVE_UPDATES_EMAIL":"從Stremio接受電子郵件更新","LOGIN_FAILED":"登陸失敗。","SIGNUP_FAILED":"註冊失敗。","SEARCH_FAILED":"搜尋失敗","EMAIL_USED":"此電子郵箱已被使用。","WAITING_FB_LOGIN":"使用Facebook登入...","EXTERNAL_PLAYER_TITLE":"在外部播放器中播放","EXTERNAL_REMEMBER_PLAYER":"您想記住您的選擇嗎","EXTERNAL_ALWAYS_PLAY":"是","EXTERNAL_ONLY_ONCE":"不是","BEST_FIT":"最佳","FIT_SCREEN":"適合螢幕","FILL":"填充","16:9":"16:9","4:3":"4:3","Original":"原始","INTRO_TASTE":"告訴我們您喜歡什麼","INTRO_TASTE_LONG":"告訴我們您想看什麼","INTRO_TASTE_PICK":"選擇{{interestsRemaining}}興趣","INTRO_TASTE_PICK_MORE":"選擇{{interestsRemaining}}更多興趣","INTRO_TASTE_HELP_US":"幫助我們瞭解更多有關您的資訊。","INTRO_TASTE_CHOOSE_THESE":"選擇其中一些:","INTRO_TASTE_CHOOSE_MIN":"至少選3個類別","INTRO_TASTE_CHOOSE_MIN_ERR":"您必須至少選擇3個類別!","INTRO_TASTE_LIFESTYLE":"生活方式","INTRO_TASTE_SPORTS":"體育","INTRO_TASTE_FOOD_HEALTH":"飲食與健康","INTRO_TASTE_BEAUTY_FASHION":"美麗與時尚","INTRO_TASTE_NEWS":"新聞","INTRO_TASTE_GAMING":"遊戲","INTRO_TASTE_SCIENCE_EDU":"科學與教育","INTRO_TASTE_MUSIC":"音樂","INTRO_TASTE_TRAVEL":"旅行","INTRO_TASTE_LATE_NIGHT":"深夜秀","INTRO_TASTE_REALITY":"真人","INTRO_TASTE_COMEDY":"喜劇","INTRO_TASTE_DIY":"DIY","INTRO_TASTE_TECH":"技術","INTRO_TASTE_CINEMA":"影院","ADDON_NOT_SUPPORTED":"此平臺不支援選定的外掛。","ADDON_DISCLAIMER":"使用第三方外掛將始終受到您的責任和您所在的司法管轄區的法律的約束。","ADDON_ACTIVATE":"啟用此外掛?","ADDON_REPO_ADD":"外掛集合URL","ADDON_ADD":"新增","ADD_ADDON":"Add addon","ADD_ADDON_DESCRIPTION":"You can add an addon via an external link, which will appear under Installed addons.","PASTE_ADDON_URL":"Paste addon URL","WHATS_NEW":"最新訊息","BUTTON_CONTINUE":"繼續","BUTTON_ACTIVATE":"啟用","BUTTON_ACTIVATED":"已啟用","BUTTON_CANCEL":"取消","BUTTON_SUBMIT":"Submit","BUTTON_DISMISS_ALL":"清除全部","BUTTON_VIEW_ALL":"檢視全部","BUTTON_SEE_ALL":"See All","BUTTON_COLOR_TRANSPARENT":"Transparent","OPEN_IN_BROWSER":"Open in browser","LIB_EMPTY":"您的庫看起來是空的,看看它有多有用:)","HOW_START":"您可以從這裡開始:","LIB_EMPTY_CAL":"您的日曆顯示您庫中的劇集。","HOW_START_CAL":"下面是如何新增劇集:","LIB_EMPTY_BOARD":"主頁顯示與您的庫相關的通知&推薦。","HOW_START_BOARD_WAIT":"請在您的庫中新增一些劇集或頻道給我們幾分鐘來處理:)","HOW_START_BOARD":"下面是如何向其中新增劇集&電影:","IMPORT_FB":"從<span>Facebook</span>匯入您喜歡的東西","IMPORT_TRAKT":"從<span>Trakt</span>匯入媒體庫","IMPORT_DISCOVER":"從<span>發現</span>中找到有趣的東西","IMPORT_DISK":"匯入<span>本地磁碟</span>上的電影或節目","PLEASE_CREATE_ACC":"請<u>建立一個賬戶</u>以啟用庫同步&主頁。","IMPORT_DISCOVER_SIGNUP":"註冊並從<span>發現</span>中找到有趣的東西","IMPORT_DISK_SIGNUP":"註冊並匯入<span>本地磁碟</span>上的電影或節目","LIB_EMPTY_CLOUD":"雲端庫","LIB_EMPTY_CLOUD_DESC":"在所有裝置上同步個人雲端庫","LIB_EMPTY_EARLY":"第一時間","LIB_EMPTY_EARLY_DESC":"接收新劇集的通知","LIB_EMPTY_PERSONAL":"個性化","LIB_EMPTY_PERSONAL_DESC":"獲取個性化推薦","LIB_EMPTY_CALENDAR_DESC":"安排您的個性化觀看日曆","LIB_EMPTY_ALL":"註冊以獲取所有這些:","LIB_EMPTY_BEST":"註冊以獲得最佳的Stremio","LIB_EMPTY_OTHER":"註冊以啟用日曆和其他炫酷功能","CALENDAR_ADDED":"Stremio日曆已新增到預設桌面日曆中。","CALENDAR_ADDED_MSG":"如果這不起作用,請手動將此URL新增到日曆應用程式中","TRAKT_EXPIRED":"Trakt驗證已過期,請轉到設定並重新驗證","TRAKT_REQUIRES_LOGIN":"Trakt錯誤","TRAKT_REQUIRES_LOGIN_MSG":"您需要登入","SETTINGS_LABEL":"設定","SETTINGS_NAV_GENERAL":"常規","SETTINGS_NAV_PLAYER":"播放器","SETTINGS_NAV_STREAMING":"流媒體","SETTINGS_NAV_SHORTCUTS":"快捷鍵","SETTINGS_SHORTCUT_RELOAD_APP":"重新載入應用程式","SETTINGS_SHORTCUT_OPEN_SETTINGS":"開啟設定","SETTINGS_SHORTCUT_SWITCH_TABS":"切換標籤","SETTINGS_SHORTCUT_CYCLE_TABS_FORWARD":"向前迴圈標籤","SETTINGS_SHORTCUT_CYCLE_TABS_BACKWARD":"向後迴圈標籤","SETTINGS_SHORTCUT_NAVIGATE_MENUS":"Navigate Between Menus","SETTINGS_SHORTCUT_GO_TO_SEARCH":"Go to Search","SETTINGS_SHORTCUT_EXIT_BACK":"退出/返回","SETTINGS_SHORTCUT_MENU_PLAYBACK_SPEED":"Toggle Playback Speed Menu","SETTINGS_SHORTCUT_MENU_VIDEOS":"Toggle Videos Menu","SETTINGS_SHORTCUT_MENU_SUBTITLES":"Toggle Subtitles Menu","SETTINGS_SHORTCUT_MENU_INFO":"Toggle Info Menu","SETTINGS_SHORTCUT_FULLSCREEN":"切換全屏","SETTINGS_SHORTCUT_SHOW_CONTROLS":"顯示控制元件","SETTINGS_SHORTCUT_PLAY_PAUSE":"播放/暫停","SETTINGS_SHORTCUT_VOLUME_UP":"增大音量","SETTINGS_SHORTCUT_VOLUME_DOWN":"降低音量","SETTINGS_SHORTCUT_SEEK_NEXT":"尋找下一個","SETTINGS_SHORTCUT_SEEK_PREV":"尋找上一個","SETTINGS_SHORTCUT_SEEK_BACKWARD":"Seek Backward","SETTINGS_SHORTCUT_SEEK_FORWARD":"Seek Forward","SETTINGS_SHORTCUT_PLAY_NEXT":"播放下一個","SETTINGS_SHORTCUT_INCREASE_SUB_SIZE":"增加字幕大小","SETTINGS_SHORTCUT_DECREASE_SUB_SIZE":"減小字幕大小","SETTINGS_SHORTCUT_INCREASE_SUB_DELAY":"增加字幕延遲","SETTINGS_SHORTCUT_DECREASE_SUB_DELAY":"減少字幕延遲","SETTINGS_SHORTCUT_TOGGLE_SIDEBAR":"切換側邊欄","SETTINGS_SHORTCUT_OR":"or","SETTINGS_SHORTCUT_TO":"to","SETTINGS_SHORTCUT_SPACE":"Space","SETTINGS_SHORTCUT_SHIFT":"Shift","SETTINGS_SHORTCUT_ESC":"Esc","SETTINGS_TRAKT_AUTHENTICATE":"Authenticate","SETTINGS_FACEBOOK_IMPORT":"Import","SETTINGS_CALENDAR_SUBSCRIBE":"Subscribe","SETTINGS_INTERFACE_LANGUAGE":"Interface Language","SETTINGS_LAUNCH_STARTUP":"開機時啟動","SETTINGS_VLC_DEFAULT":"使用VLC播放","SETTINGS_UI_LANGUAGE":"使用者介面語言","SETTINGS_FULLSCREEN_EXIT":"Esc鍵退出全屏","SETTINGS_GAMEPAD":"啟用遊戲手柄支援","SETTINGS_CLOSE_WINDOW":"關閉視窗時結束應用程式","SETTINGS_SUBTITLES_LANGUAGE":"預設字幕語言","SETTINGS_SUBTITLES_SIZE":"預設字幕大小","SETTINGS_SUBTITLES_BACKGROUND":"字幕背景","SETTINGS_SUBTITLES_COLOR":"字幕顏色","SETTINGS_SUBTITLES_COLOR_OUTLINE":"字幕輪廓顏色","SETTINGS_SUBTITLES_COLOR_BACKGROUND":"字幕背景顏色","SETTINGS_SEEK_KEY":"方向鍵控制進度","SETTINGS_SEEK_KEY_SHIFT":"按住Shift鍵時方向鍵控制進度","SETTINGS_REWIND_FAST_FORWARD_DURATION":"Rewind & Fast-forward duration","SETTINGS_BINGE":"自動播放下一集","SETTINGS_NEXT_VIDEO":"顯示播放下一集的通知","SETTINGS_NEXT_VIDEO_TRIGGER":"顯示下一集的通知:","SETTINGS_NEXT_VIDEO_POPUP_DURATION":"Next video popup duration","SETTINGS_PLAY_IN_BACKGROUND":"Play in background","SETTINGS_PLAY_IN_EXTERNAL_PLAYER":"Play in external player","SETTINGS_RESIZE":"播放前自動調整視窗大小","SETTINGS_OVERRIDE_SERVER":"覆蓋流媒體伺服器URL(高階)","SETTINGS_SERVER_URL":"流媒體伺服器URL:","SETTINGS_SERVER_AVAILABLE":"流媒體伺服器可用。","SETTINGS_SERVER_UNAVAILABLE":"流媒體伺服器不可用。","SETTINGS_SERVER_STATUS_ONLINE":"Online","SETTINGS_SERVER_STATUS_ERROR":"Error","SETTINGS_SERVER_CONFIGURE_TITLE":"Configure streaming server url","SETTINGS_SERVER_CONFIGURE_INPUT":"Enter a streaming server url","SETTINGS_SERVER_CACHE_SIZE":"Cache size","SETTINGS_SERVER_TORRENT_PROFILE":"Torrent profile","SETTINGS_HTTPS_ENDPOINT":"流媒體HTTPS結點:","SETTINGS_USE_BETA":"始終使用最新的測試版","SETTINGS_IMPORT_FB":"從Facebook匯入","SETTINGS_IMPORT_DISK":"從本地磁碟匯入","SETTINGS_IMPORT_TRAKT":"從Trakt匯入","SETTINGS_PAUSE_MINIMIZED":"最小化時暫停播放","SETTINGS_HWDEC":"硬體解碼加速","SETTINGS_BACKGROUND":"後臺播放","SETTINGS_SUBSCRIBE_CALENDAR":"訂閱到日曆","SETTINGS_REQ_EXPORT":"請求匯出資料","SETTINGS_ACC_DELETE":"請求刪除賬戶","SETTINGS_CHANGE_PASSWORD":"更改密碼","SETTINGS_TOS":"服務條款","SETTINGS_SUPPORT":"聯絡支援人員","SETTING_LANGUAGE":"語言","SETTINGS_TRAKT":"Trakt自動跟蹤","SETTINGS_TRAKT_LOGOUT":"從Trakt.tv登出","SETTINGS_SCAN_FOR_REMOTE":"掃描二維碼開啟遙控器","SETTINGS_DESKTOP_NOTIFICATIONS":"桌面通知","SETTINGS_DATA_SAVER":"移動資料警告","SETTINGS_LANGUAGE_INTERFACE":"介面","SETTINGS_LANGUAGE_SUBS":"預設字幕","SETTINGS_ENABLE_DEFAULT_AUDIO_TRACK":"自動選擇音軌","SETTINGS_DEFAULT_AUDIO_TRACK":"預設音軌","SETTINGS_ACCOUNT":"賬戶","SETTINGS_VERSION":"版本","SETTINGS_MPV_WINDOW":"在單獨視窗中啟動播放器(高階)","SETTINGS_PLAY_IN_EXTERNAL":"總是在外部播放器中開啟影片","SETTINGS_STORAGE_BUTTON":"清除本地儲存","SETTINGS_STORAGE_MODAL_TITLE":"您確定嗎?","SETTINGS_STORAGE_MODAL_MESSAGE":"這將清除本地儲存並使您登出","SETTINGS_HWDEC_PICKER":"選擇硬體加速解碼設定","SETTINGS_HW_AUTOMATIC":"自動","SETTINGS_HW_DISABLED":"關閉","SETTINGS_HW_ACCELERATED":"解碼加速","SETTINGS_HW_FULL":"全加速","SETTINGS_HW_LEGACY":"舊版","SETTINGS_SECTION_SUBTITLES":"Subtitles","SETTINGS_SECTION_AUDIO":"Audio","SETTINGS_SECTION_CONTROLS":"Controls","SETTINGS_SECTION_AUTO_PLAY":"Auto-Play","SETTINGS_SECTION_ADVANCED":"Advanced","SUBSPICKER_AUDIO":"音訊","SUBSPICKER_SUBTITLES":"外掛字幕","SUBSPICKER_BLACK_BACKGROUND":"使用黑色背景色","SUBSPICKER_VERTICAL_OFFSET":"垂直偏移量","SUBSPICKER_SIZE":"大小","SUBSPICKER_DELAY":"延遲","SUBSPICKER_EMBEDDED_SUBS":"內嵌字幕","MOBILE_PRIVACY_POLICY":"隱私政策","MOBILE_CRASH_REPORTING":"崩潰報告","MOBILE_ZOOM_TO_FILL":"縮放填充螢幕","MOBILE_PASSTHROUGH":"數字音訊輸出(直通)","MOBILE_RUN_LOW_BATTERY":"電池電量低時執行","MOBILE_RUN_FOREGROUND":"作為前臺服務執行","MOBILE_PERFORMANCE":"效能&穩定性","MOBILE_SERVER_ONLINE":"線上","MOBILE_SERVER_OFFLINE":"離線","MOBILE_QR_EXPIRES":"二維碼到期時間","MOBILE_LOG_INTO":"登陸到您的Stremio賬戶","MOBILE_SCAN_QR":"掃描上面的二維碼或轉到","MOBILE_LINK_ACCOUNT":"連結賬戶","MOBILE_SPEEDPICKER_CANCEL":"取消","MOBILE_SPEEDPICKER_LABEL":"選擇播放速度","MOBILE_EMPTY_LIBRARY":"您的庫為空","MOBILE_NO_ADDON_ACTIVE":"沒有活動的此型別Stremio外掛。","MOBILE_ORGANIZER_WARNING":"Stremio Organizer應用程式提供的功能有限,要獲得可播放流的列表和完整的Stremio體驗,請使用Stremio桌面客戶端。","MOBILE_ADDON_LOADING":"仍在載入","MOBILE_ADDONS_LOADING":"外掛仍在載入","MOBILE_ADDON":"外掛","MOBILE_CONFIGURE_ADDON":"配置外掛","MOBILE_CONFIGURE_ADDON_LABEL":"配置外掛","MOBILE_ORGANIZER_ADDONS_WARNING":"Stremio Organizer應用程式僅提供有限的外掛,要獲得完整的Stremio體驗,請使用Stremio桌面客戶端。","MOBILE_DISCONNECT":"斷開連線","MOBILE_LOOKING_FOR_DEVICES":"正在查詢裝置...","MOBILE_CAST_TO":"投屏到","MOBILE_DELETE_ACCOUNT_ALERT_TITLE":"Delete Account","MOBILE_DELETE_ACCOUNT_ALERT_MESSAGE":"Account deletion is not instant due to legal obligations. After requesting deletion of your account you will have to use different email address/facebook profile to create a new Stremio account in the future.","MOBILE_DELETE_ACCOUNT_DIALOG_TITLE":"Confirm Account Deletion","MOBILE_DELETE_FB_ACCOUNT_MESSAGE":"Your account has been created using Facebook. To delete your account, please use our user portal at www.stremio.com/login","MOBILE_DELETE_ACCOUNT_MESSAGE":"Please provide your password to confirm account deletion.","MOBILE_DELETE_ACCOUNT_BUTTON":"Delete Account","NAVIGATION_ON":"開啟","NAVIGATION_OFF":"關閉","MARKETING_AGREE":"我同意接收Stremio的營銷通知","QUIT":"退出","CONNECTED":"已連線","AUTHENTICATE":"驗證","CACHING":"快取","SETTINGS_CACHING_DRIVE":"快取磁碟","ENABLE_LOCAL_FILES_ADDON":"啟用本地檔案外掛(需要重新啟動)","LOCAL_ADDON_NOT_ENABLED":"未啟用本地外掛,單擊此處轉到設定並啟用它","ENABLE_REMOTE_HTTPS_CONN":"啟用遠端HTTPS連線","TORRENT_PROFILE":"Torrent配置","DATA_CACHING":"資料快取","MAGNET_PARSING":"分析Magnet連結","January":"一月","February":"二月","March":"三月","April":"四月","May":"五月","June":"六月","July":"七月","August":"八月","September":"九月","October":"十月","November":"十一月","December":"十二月","Monday":"星期一","Tuesday":"星期二","Wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期天","Action":"動作","Comedy":"喜劇","War":"戰爭","Family":"家庭","Animation":"動畫","Adventure":"冒險","Fantasy":"幻想","Crime":"犯罪","Mystery":"神祕","Romance":"浪漫","Drama":"劇情","Horror":"恐怖","Thriller":"驚悚","Sci-Fi":"科幻","Music":"音樂","Biography":"傳記","Documentary":"紀錄","Sport":"運動","Musical":"音樂劇","Western":"西部","Film-Noir":"黑色電影","News":"新聞","History":"歷史","Game-Show":"遊戲節目","Reality-TV":"真人秀","Talk-Show":"脫口秀","Film & Entertainment":"電影與娛樂","Gaming":"遊戲","From TV":"電視","Lifestyle":"生活方式","Science & Education":"科學與教育","Cooking & Health":"烹飪與健康","Beauty & Fashion":"美麗與時尚","Sports":"體育","News & Politics":"新聞與政治","How-to & DIY":"DIY","Tech":"技術","Automotive":"汽車","Causes & Non-Profits":"事業與公益","Movies":"影視","Uk Live Tv":"英國直播電視臺","Fashion":"流行","Business News Radio":"商業新聞電臺","Business Tv":"商業電視","Cars & Auto":"汽車與自動化","Comedy Radio":"喜劇電臺","Lifestyle Radio":"生活方式電臺","News Tv":"新聞電視","Food And Wine":"食物與酒","Latino Tv":"拉丁語電視臺","Shopping Tv":"購物電視臺","Religion":"宗教","Kids":"兒童","Body & Soul":"身體與靈魂","Education":"教育","Indian Tv":"印度電視臺","Extreme Sports":"極限運動","Middle Eastern Tv":"中東電視臺","Celebrity Tv":"名人電視臺","Science Tv":"科學電視臺","Bikini babe":"比基尼寶貝","Outdoors":"戶外","German Tv":"德國電視臺","French Tv":"法國電視臺","Italian Tv":"義大利電視臺","Gamer Tv":"伽馬電視臺","Travel":"旅行","Asian Tv":"亞洲電視臺","Entertainment":"遊戲娛樂","News Radio":"新聞電臺","Music Radio":"音樂電臺","Language Learning":"語言學習","Science Radio":"科學電臺","Tech Radio":"科技電臺","Science & Technology Vod":"科技影片點播","new video":"新影片","new episode":"新一集","new movie":"新電影","recommended":"推薦","we recommend":"我們建議","offer of the day":"當日優惠","news":"新聞","music video":"音樂影片","CTX_SHOW_HOTKEYS":"顯示快捷鍵","CTX_DISMISS_NOTIF":"清除通知","CTX_DISMISS_ALL":"全部清除","CTX_SHARE":"分享","CTX_COPY_SHARE_LINK":"複製分享連結","CTX_COPY_MAGNET_LINK":"複製Magnet連結","CTX_COPY_STREAM_LINK":"複製流媒體連結","CTX_DOWNLOAD_VIDEO":"下載此影片","CTX_DOWNLOAD_SUBS":"下載字幕","CTX_VIEW_ON_YOUTUBE":"在YouTube上觀看","CTX_SHOW":"顯示","CTX_PLAY":"播放","CTX_PLAY_IN":"播放","CTX_PLAY_ON":"正在播放","CTX_WATCH_ON":"正在觀看","CTX_WATCH":"觀看","CTX_WATCHED":"已觀看","CTX_WATCH_BEGINNING":"從頭開始觀看","CTX_WATCH_MOBILE":"在移動裝置上觀看","CTX_REWIND":"回到開頭","CTX_MARK_WATCHED":"標記為已觀看","CTX_MARK_NON_WATCHED":"標記為未觀看","CTX_MARK_UNWATCHED":"Mark as unwatched","CTX_MARK_REST":"將其餘部分標記為已觀看","CTX_UNMARK_REST":"將其餘部分標記為未觀看","CTX_RECEIVE_NEW_NOTIF":"接受新通知","CTX_REMOVE_CACHE":"從快取中刪除","CTX_REMOVE_CACHE_EP":"從快取中刪除集","CTX_OPEN_CONTAINING":"開啟所在資料夾","CTX_REMOVE":"從庫中刪除","CTX_AVAILABLE_OFFLINE":"離線可用","CTX_PAUSED":"暫停","CTX_ALWAYS_ON_TOP":"置頂","CTX_FULLSCREEN":"全屏","CTX_WRONG_SUBS":"錯誤的字幕?","CTX_REPORT_ISSUES":"報告問題","CTX_COPY":"複製","CTX_PASTE":"貼上","CTX_CLEAR":"清除","CTX_CLEAR_RECENT_SEARCHES":"清除最近搜尋記錄","HELLO_THERE":"您好","HOPE_YOU_ENJOY":"我們希望您喜歡Stremio,也許它已經是您最喜歡的應用之一了!","WHO_ARE_WE":"我們是誰?我們是它背後的團隊。在過去三年裡的每天,我們兩個努力工作使這個產品越來越好。","SUPPORT_US":"如果您喜歡Stremio,如果Stremio對您來說很有價值,請傳播它!","SPREAD_THE_WORD":"現在與您的朋友分享傳播關於Stremio的資訊","MORE_PEOPLE":"使用Stremio的人越多,效果就越好!","SEND_A_LINK":"或傳送一個連結到我們的網站","TIP_LOCALFILES":"提示:您可以將本地影片檔案拖放到Stremio中","ADDON_MY":"我的外掛","ADDON_COMMUNITY":"社群外掛","ADDON_OFFICIAL":"官方外掛","ADDON_REPOS":"外掛集合","ADDON_SEARCH":"搜尋外掛","ADDON_INSTALL":"安裝","ADDON_CONFIGURE":"配置","ADDON_UNINSTALL":"解除安裝","ADDON_UPGRADE":"更新","ADDON_INSTALLED":"已安裝","ADDON_INSTALLED_MSG":"外掛已安裝!","ADDON_UPGRADED_MSG":"外掛已更新!","ADDON_UNKNOWN":"未知","ADDON_ERR":"外掛安裝錯誤!","ADDON_DISCONNECTED":"已斷開連線","ADDON_APP_MISSING":"未安裝此源的應用程式,您想現在安裝嗎?","ADDON_APP_INSTALL":"立即安裝","ADDON_PAGE":"外掛頁","ADDON_TOP_CONTENT":"最好從這個外掛","ADDON_PROVIDES":"這個外掛會給您:","ADDON_WATCH":"立即觀看#{types}!","ADDON_WATCH_FREE":"立即免費觀看#{types}!","ADDON_ADDON":"外掛","ADDON_SUPPORTED_TYPES":"支援的型別","ADDON_SUPPORTED_CATALOGS":"支援的目錄","ADDON_PROVIDES_DISCOVER":"發現中的更多#{types}","ADDON_PROVIDES_STREAMS":"觀看#{types}","ADDON_PROVIDES_STREAMS_FREE":"免費觀看#{types}","ADDON_PROVIDES_SUBTITLES":"#{types}的字幕","ADDON_CANTDETECT":"我們無法檢測到正在執行的Stremio,因此我們無法檢測您安裝了哪些外掛。","ERR_NO_META":"找不到有關於此的資訊","ERR_GETTING_META":"檢索有關於此的資訊時出錯","ERR_CANT_PARSE_MAGNET":"無法分析Magnet","ERR_NO_MAGNET_INFOHASH":"Magnet缺少有效的Hash","ERR_NO_FILE_PATH":"沒有檔案路徑無法傳送請求","ERR_NO_TORRENT":"沒有Torrent返回","ERR_NO_SUPPORTERD_FILES":"找不到支援的檔案","ERR_OPENING_FILES":"無法開啟外部檔案","ERR_INVALID_LINK":"無效連結","ERR_REGISTERED_ONLY":"此選項僅適用於已註冊使用者。","ERR_CLIPBOARD":"無法從剪下板播放","ERR_CLIPBOARD_READ":"無法讀取此平臺上的剪下板","ERR_CLIPBOARD_GENERIC":"在剪下板中找不到可播放的URL. 請將URL(例如Magnet連結)複製到影片。","BOARD_CONTINUE_WATCHING":"繼續觀看","BOARD_EXPLANATION_RECOMMENDATIONS":"專門為您挑選的電影。<br />這部電影是一個推薦樣例。","BOARD_EXPLANATION_EPISODES":"這裡是您最喜愛的劇集的新一集。<br />將您關注的劇集新增到庫中。","BOARD_EXPLANATION_VIDEOS":"這裡是您最喜愛的頻道的新一集。<br />將您關注的YouTube頻道新增到庫中。","WEBSITE_SLOGAN_WATCH":"立即觀看","WEBSITE_SLOGAN_ALL":"一站式影片娛樂解決方案","WEBSITE_SLOGAN_NEW":"您能觀看一切","WEBSITE_SLOGAN_NEW_NEW":"自由串流","WEBSITE_WATCH_FROM":"觀看","WEBSITE_DOWNLOAD":"立即下載","WEBSITE_DOWNLOAD_FOR":"立即下載","WEBSITE_IS_DESKTOP":"Stremio是一個桌面應用程式,請在PC上開啟此頁並下載","WEBSITE_DESKTOP_DEMO_VID":"桌面演示","WEBSITE_PAGE_HOME":"首頁","WEBSITE_PAGE_FEATURES":"功能","WEBSITE_PAGE_ADDONS":"外掛","WEBSITE_PAGE_TECH":"技術","WEBSITE_PAGE_CREATE_ADDON":"建立外掛","WEBSITE_PAGE_CONTACTS":"聯絡","WEBSITE_PAGE_BLOG":"部落格","WEBSITE_TYPE_movie":"電影","WEBSITE_TYPE_series_PL":"劇集","WEBSITE_TYPE_tv":"直播電視","WEBSITE_TYPE_channel":"頻道","WEBSITE_STREMIO_WHAT_IS":"Stremio是一款幫助您管理和隨時觀看您喜愛的影片、電影、劇集和電影片道的應用程式","WEBSITE_FEATURES_WATCH":"立即觀看高畫質影片","WEBSITE_FEATURES_WATCH_DETAIL":"點選並播放您喜愛的電影、劇集、影片和電影片道。","WEBSITE_FEATURES_SUBS":"自動載入字幕","WEBSITE_FEATURES_SUBS_DETAIL":"Stremio會自動為您的語言選擇同步字幕。","WEBSITE_FEATURES_SUBS_LABEL":"Your move, chief.","WEBSITE_FEATURES_CAST":"在電視和移動裝置上播放","WEBSITE_FEATURES_CAST_DETAIL":"適用於AppleTV、Chromecast、智慧電視(DLNA/UPnP)和移動裝置。","WEBSITE_LIB":"享受在所有裝置上同步的個人庫","WEBSITE_LIB_COLLECT":"從Stremio收集","WEBSITE_LIB_IMPORT":"從Facebook匯入","WEBSITE_LIB_LOCAL":"從本地磁碟新增","WEBSITE_BOARD":"首頁 - 通知和推薦的一站式場所","WEBSITE_BOARD_RECOMMEND":"推薦電視節目","WEBSITE_BOARD_TRENDING":"流行電影","WEBSITE_BOARD_NEW":"新影片","WEBSITE_BOARD_EPISODE":"新一集","WEBSITE_BOARD_1":"想看些有趣的東西嗎?根據您的喜好得到推薦!","WEBSITE_BOARD_2":"當您最喜愛的電視節目或YouTube頻道的新一集播出時獲得通知!","WEBSITE_BOARD_YOUTUBE":"YouTube頻道的新影片","WEBSITE_BOARD_EPISODES":"您關注的劇集的新一集","WEBSITE_ADDONS":"內容外掛","WEBSITE_TECH_DETAIL":"我們熱愛科技,我們熱愛瘋狂的科學!\\nStremio使用了以下開源技術:","WEBSITE_TECH_WCJS":"WebChimera.js允許Stremio以良好的效能播放任何影片格式。","WEBSITE_TECH_WCJS_EXTRA":"我們是專案的核心貢獻者","WEBSITE_TECH_ELECTRON":"Electron為Stremio提供了一個創新平臺。","WEBSITE_TECH_ELECTRON_EXTRA":"我們是專案貢獻者","WEBSITE_TECH_LINVODB":"一種資料庫技術,確保您的資料在任何地方登入都受管理和可用。","WEBSITE_TECH_LINVODB_EXTRA":"內部技術","WEBSITE_CREATE_ADDON":"建立您的外掛","WEBSITE_CREATE_ADDON_DETAIL":"您有提供影片內容的服務嗎?我們將透過建立外掛來幫助您從Stremio的功能中獲益。","WEBSITE_CREATE_ADDON_BENEFITS":"為Stremio建立外掛的好處","WEBSITE_P2P_BEAUTY":"點對點流媒體之美","WEBSITE_P2P_1":"可靠且價格合理的全高畫質/4K影片點播或流媒體直播","WEBSITE_P2P_2":"提供良好使用者體驗的分銷平臺","WEBSITE_P2P_3":"我們將建立一個外掛來滿足您的確切需要","WEBSITE_P2P_CONTACT":"有興趣嗎?歡迎您透過<a href=\'mailto:office@stremio.com\'>聯絡我們</a>.","WEBSITE_P2P_CONTACT_EXTRA":"我們很樂意幫助您將您的內容整合到Stremio!","WEBSITE_P2P":"偶然間出現了一種改變遊戲名稱的技術。 我們投入了大量的時間和精力來構建我們的點對點(P2P)影片流媒體引擎,該引擎可提供出色的效能和多功能性,以適應任何用例。\\n請聯絡我們以獲取支援DRM的P2P影片點播或實時流媒體。","WEBSITE_THOUGHTS":"我們分享的想法:","WEBSITE_SPREAD":"傳播關於Stremio的資訊:","WEBSITE_CONTACT":"聯絡我們,我們很高興收到您的來信!","WEBSITE_OPENSOURCE":"有關我們的開源專案,請轉到:","WEBSITE_BITCOIN":"捐贈比特幣:","WEBSITE_FAQ":"常見問題","WEBSITE_FAQ_SHORT":"常見問題","WEBSITE_QUESTIONS":"問題","WEBSITE_TOS":"使用條款","WEBSITE_LEGAL":"法律","WEBSITE_PAGE_ABOUT":"關於","WEBSITE_PAGE_BECOME_PARTNER":"成為合作伙伴","WEBSITE_ALL_YOU_CAN_WATCH":"自由觀看\\n您想看的一切。","WEBSITE_FREEDOM_TO_STREAM":"自由串流","WEBSITE_WHAT_IS_STREMIO":"什麼是Stremio?","WEBSITE_WHAT_IS_STREMIO_P1":"Stremio是一個一站式影片內容聚合中心。在您擁有的任何裝置上發現,管理和觀看來自各種來源的影片。","WEBSITE_WHAT_IS_STREMIO_P2":"電影、電視節目、劇集、電視直播或網路頻道例如YouTube或Twitch.tv等,您可以在Stremio上找到所有這些內容。","WEBSITE_WHAT_IS_STREMIO_P1_V2":"Stremio是一個現代化的媒體中心,為您的影片娛樂提供一站式解決方案。您可以透過易於安裝的外掛發現,觀看和整理影片內容。","WEBSITE_WHAT_IS_STREMIO_P2_V2":"電影、電視節目、直播電視或網路頻道——在Stremio上找到所有這些。","WEBSITE_ENJOI_ON_ALL_DEVICES":"在所有媒體裝置上享受","WEBSITE_DEVICES_COLLECT":"從Stremio收集","WEBSITE_DEVICES_IMPORT_FB":"從Facebook匯入","WEBSITE_DEVICES_LOCAL":"從本地磁碟新增","WEBSITE_JOIN_THE_PARTY_NOW":"立即加入聚會","WEBSITE_DEVICES_ALL":"易於在所有裝置上使用;","WEBSITE_EXTENDABLE_CATALOG":"可無限擴充套件的影片目錄;","WEBSITE_ORGANIZE_YOUR_MEDIA":"強大的媒體管理功能;","WEBSITE_AS_SEEN_ON":"如圖所示","WEBSITE_STREMIO":"Stremio","WEBSITE_LINK_ABOUT_US":"關於我們","WEBSITE_LINK_TECHNOLOGY":"技術","WEBSITE_LINK_APPS":"應用程式","WEBSITE_LINK_DOWNLOADS":"下載","WEBSITE_MORE":"更多","WEBSITE_LINK_ADDONS":"外掛","WEBSITE_LINK_ADDON_SDK":"外掛SDK","WEBSITE_LINK_CONTRIBUTE":"貢獻","WEBSITE_LINK_COMMUNITY":"社群","WEBSITE_LINK_BLOG":"部落格","WEBSITE_MORE_MORE":"... & 更多","WEBSITE_LINK_HELP":"幫助中心","WEBSITE_LINK_CONTACTS":"業務查詢","WEBSITE_LINK_TOS":"條款和條件","WEBSITE_LINK_PRAVACY":"隱私政策","WEBSITE_SUBSCRIBE":"訂閱","WEBSITE_NEWSLETTER":"加入我們的實時通訊,瞭解精彩的內容","WEBSITE_PLACEHOLDER_EMAIL":"您的電子郵箱","WEBSITE_COMMUNITY":"社群","WEBSITE_LINK_PRAVACY_LEGAL":"隱私與法律","WEBSITE_WHY":"我們為什麼這樣做","WEBSITE_WHY_P1":"在Stremio,我們每天都工作,因為我們想解決影片點播行業的一個重要問題。每分鐘都有這麼多的新內容釋出,幾乎不可能找到解決的方法。","WEBSITE_WHY_P2":"我們幫助人們瀏覽這個巨大的影片娛樂世界,發現新的內容來享受。我們的應用程式彙集了電影、劇集、電視直播、網路頻道等。我們致力於讓使用者非常容易地找到他們喜歡的標題和廣播。","WEBSITE_WHY_P3":"您可以隨時在任何裝置上使用我們的服務,使Stremio成為您唯一需要的影片娛樂中心。","WEBSITE_TEAM":"團隊","WEBSITE_TEAM_P":"Stremio團隊雖小但很強大:我們10個人用X語言編寫程式碼,分享軟體開發、UI和UX設計、營銷和廣告、商業和初創企業方面的專業知識。","WEBSITE_FEATURES":"功能","WEBSITE_FEATURES_P1":"","WEBSITE_FEATURES_DISCOVER":"輕鬆發現新內容","WEBSITE_FEATURES_DISCOVER_P":"輕鬆發現要觀看的新電影、電視節目、劇集和頻道。按類別、流派、評分、時間等瀏覽,或者只需鍵入一個名稱即可找到。Stremio讓尋找新的影片內容變得輕而易舉。","WEBSITE_FEATURES_ALL_CONTENT":"一塊螢幕顯示所有影片內容","WEBSITE_FEATURES_ALL_CONTENT_P1":"檢視您未看完的電影、劇集或影片,並繼續觀看;獲得新劇集和版本的通知;瀏覽根據您的觀看習慣獲得的推薦。","WEBSITE_FEATURES_LIBRARY":"管理您的影片庫","WEBSITE_FEATURES_LIBRARY_P1":"只需點選一下,即可將任何標題新增到您的Stremio庫中,並按型別、時間或字母順序整齊地排列內容。","WEBSITE_FEATURES_CALENDAR":"記錄您所觀看的一切","WEBSITE_FEATURES_CALENDAR_P1":"獲取新增到庫中的所有電影和系列的日曆視覺化。匯出您的Stremio日曆並同步它,這樣您就可以隨時知道新的一集或首映何時到來。","WEBSITE_FEATURES_BIG_SCREEN":"在大螢幕上欣賞您的影片內容","WEBSITE_FEATURES_BIG_SCREEN_P1":"將您正在觀看的任何內容都投屏到另一臺裝置上,無論是手機、平板電腦還是電視,只需點選一下即可。","WEBSITE_FEATURES_SOURCES":"觀看不同來源的影片","WEBSITE_FEATURES_SOURCES_P":"安裝官方和社群外掛,欣賞來自多個不同供應商的影片。","WEBSITE_CREATE_AN_ADDON":"建立外掛","WEBSITE_FEATURES_SYNC":"跨裝置同步庫並恢復播放","WEBSITE_FEATURES_SYNC_P1":"使用您的帳戶在所有裝置上登入,享受同步的庫、外掛、播放和日曆。","WEBSITE_FEATURES_EXTENDABLE":"透過外掛擴充套件影片目錄","WEBSITE_FEATURES_EXTENDABLE_P1":"Stremio外掛目錄提供了許多外掛,可以從中安裝和觀看各種影片內容。這包括電影、節目、電視直播、體育、新聞、播客、網路頻道、影片遊戲等。","WEBSITE_FEATURES_AUTO_SUBS":"自動載入字幕","WEBSITE_FEATURES_AUTO_SUBS_P1":"透過我們的字幕外掛,您可以自動選擇您喜歡的語言。","WEBSITE_FEATURES_CHROMECAST":"投屏到Chromecast","WEBSITE_FEATURES_CHROMECAST_P1":"在更大的螢幕上欣賞您的影片內容,或者將您正在觀看的內容投屏到其他裝置上。","WEBSITE_FEATURES_KEEP_TRACK":"跟蹤您最喜愛的電視節目和網路頻道","WEBSITE_FEATURES_KEEP_TRACK_P1":"獲取您最喜愛的劇集和網路頻道的新一集的日曆視覺化和通知。","WEBSITE_FEATURES_POWER_USER":"超級使用者功能","WEBSITE_FEATURES_POWER_USER_P1":"在外部播放器中播放","WEBSITE_FEATURES_POWER_USER_P2":"從Torrent檔案或Magnet連結播放","WEBSITE_FEATURES_POWER_USER_P3":"從Facebook喜愛或本地磁碟匯入您的庫","WEBSITE_ADD_ONS":"外掛","WEBSITE_ADD_ONS_P1":"Stremio提供的所有影片內容都是透過外掛系統獲取的,應用程式中沒有內建任何內容或內容提供商。","WEBSITE_ADD_ONS_P2":"有兩組外掛可用:官方和社群外掛。","WEBSITE_ADD_ONS_P3":"官方外掛由Stremio開發和託管,而社群外掛由我們的社群成員建立和託管。","WEBSITE_ADDONS_OFFICIAL":"官方外掛","WEBSITE_ADDONS_WATCHUB":"從iTunes、Hulu、Amazon和其他英國/美國服務提供商處流式播放您喜愛的電影、劇集和節目。","WEBSITE_ADDONS_YOUTUBE":"觀看您喜愛的YouTube頻道,獲得您關注的貢獻者的新上傳通知。","WEBSITE_ADDONS_FILMON":"免費觀看直播電視、電影和社交電視。600個電影片道,45000部免費電影,紀錄片以及更多","WEBSITE_ADDONS_OPENSUBTITLES":"多語種影視字幕,每天上傳上千個翻譯字幕。","WEBSITE_ADDONS_COMMUNITY":"社群外掛","WEBSITE_ADDONS_FILMON_VOD":"觀看來自Filmon.tv的點播影片。","WEBSITE_ADDONS_TWICH":"觀看來自Twitch.tv(電子競技行業的影片流媒體平臺)的直播。","WEBSITE_ADDONS_VODO":"觀看完全免費的獨立電影。","WEBSITE_ADDONS_NETFLIX":"觀看Netflix的電影和網劇。","WEBSITE_ADDONS_CREATE":"建立外掛","WEBSITE_ADDONS_CREATE_P1":"如果您願意,您可以開發自己的外掛。透過這種方式,您可以讓自己和我們的社群訪問新的影片內容,並接觸到全球數百萬使用者的新目標受眾。","WEBSITE_ADDONS_START_CREATE":"要開始,請訪問Stremio外掛SDK頁面:","WEBSITE_DOWNLOADS":"下載","WEBSITE_DOWNLOADS_P1":"為了獲得最佳效能,我們建議您使用最新版本的Stremio應用程式。但是,如果出於某種原因,您想使用舊版本,可以在此處下載。","WEBSITE_DOWNLOADS_FOR_WIN":"Stremio for Windows","WEBSITE_DOWNLOADS_FOR_MAC":"Stremio for macOS","WEBSITE_DOWNLOADS_FOR_LINUX":"Stremio for Linux","WEBSITE_DOWNLOADS_FOR_ANDROID":"Stremio for Android","WEBSITE_DOWNLOADS_FOR_ANDROID_TV":"Stremio for Android TV","WEBSITE_DOWNLOADS_FOR_ANDROID_MOBILE":"Stremio for Android Mobile","WEBSITE_DOWNLOADS_FOR_STEAM_DECK":"Stremio for Steam Deck","WEBSITE_DOWNLOADS_FOR_IOS":"Stremio for iOS(限制版本)","WEBSITE_DOWNLOAD_SERVICE":"Download Stremio Service","WEBSITE_DOWNLOAD_SERVICE_P1":"Stremio Service is a companion app for Stremio Web. We recommend using the latest available version of Stremio Service.","WEBSITE_DOWNLOAD_SERVICE_FOR_WIN":"Stremio Service for Windows","WEBSITE_DOWNLOAD_SERVICE_FOR_MAC":"Stremio Service For macOS","WEBSITE_DOWNLOAD_SERVICE_FOR_LINUX":"Stremio Service for Linux","WEBSITE_DOWNLOAD_SERVICE_FOR_DOCKER":"Stremio Service for Docker","WEBSITE_DOWNLOAD_MORE_DOWNLOAD_OPTIONS":"More Download Options","WEBSITE_DOWNLOAD_NEW":"New!","WEBSITE_DOWNLOAD_WE_RELEASED_STREMIO_WEB":"We released Stremio Web","WEBSITE_CONTRIBUTE":"貢獻","WEBSITE_CONTRIBUTE_P1":"Stremio平臺是開源的,您可以輕鬆地為當前沒有來源的內容建立一個外掛。","WEBSITE_CONTRIBUTE_WHY":"為什麼要建立外掛?","WEBSITE_CONTRIBUTE_WHY_P1":"為您的影片內容吸引新觀眾","WEBSITE_CONTRIBUTE_WHY_P2":"Stremio的使用者群體正在快速增長,在推出的第一年,Stremio在全球獲得了100萬用戶,在該平臺存在的第二年,這個數字增長到250萬。","WEBSITE_CONTRIBUTE_WHY_P3":"用外掛,您可以輕鬆接觸這些觀眾並向他們分發您的影片內容。","WEBSITE_CONTRIBUTE_ALL":"在一處觀看您喜愛的電影、影片、劇集和頻道。","WEBSITE_CONTRIBUTE_ALL_P1":"您是Stremio上尚未提供的特定型別內容的粉絲?為它建立一個外掛,在市場上最大、最易使用的娛樂中心之一欣賞您喜愛的影片。","WEBSITE_CONTRIBUTE_ALL_P2":"除此之外,您還會得到其他志同道合的Stremio社群成員的無盡感激。","WEBSITE_CONTRIBUTE_MONETIZE":"透過外掛營利,並在其幫助下賺錢","WEBSITE_CONTRIBUTE_MONETIZE_P1":"一旦您為Stremio開發了一個新的外掛,您就可以透過多種不同的方式輕鬆地靠其營利。如果您正在考慮此問題,請隨時與我們聯絡","WEBSITE_CONTRIBUTE_MONETIZE_E":"addons@stremio.com","WEBSITE_CONTRIBUTE_MONETIZE_P2":",我們很樂意就外掛營利選項向您提供諮詢和建議。","WEBSITE_CONTRIBUTE_TRANSLATE":"成為一名志願翻譯者","WEBSITE_CONTRIBUTE_TRANSLATE_P1":"如果您想享受不同語言的Stremio應用程式,您可以加入我們的志願翻譯者社群。他們幫助我們新增多種不同語言的Stremio版本。","WEBSITE_CONTRIBUTE_TRANSLATE_P2":"您想開始嗎?","WEBSITE_TRANSALTE_STREMIO":"翻譯Stremio","WEBSITE_COMMUNITY_P1":"","WEBSITE_COMMUNITY_OFFICIALS":"官方社群","WEBSITE_COMMUNITY_OFFICIALS_P1":"成為不斷增長的Stremio社群的一部分。在社交媒體上關注我們,不要害羞地打招呼,我們喜歡聽到粉絲的聲音!","WEBSITE_COMMUNITY_UNOFFICIALS":"非官方社群","STREMIO_COMMUNITY_NL":"Stremio Netherlands","STREMIO_COMMUNITY_BRASIL":"Stremio Brasil","STREMIO_COMMUNITY_GERMANY":"Stremio Germany","STREMIO_COMMUNITY_BELGIUM":"Stremio Belgium","STREMIO_COMMUNITY_FRANCE":"Stremio France","STREMIO_COMMUNITY_PORTUGAL":"Stremio Portugal","STREMIO_COMMUNITY_ITALY":"Stremio Italy","STREMIO_COMMUNITY_UK":"Stremio UK","STREMIO_COMMUNITY_USA":"Stremio USA","STREMIO_COMMUNITY_MEXICO":"Stremio Mexico","STREMIO_COMMUNITY_ADDONS":"Stremio Addons","STREMIO_COMMUNITY_AWESOME":"Awesome Stremio","WEBSITE_COMMUNITY_PARTNERS":"合作伙伴和支持者","WEBSITE_COMMUNITY_GOODIES":"Stremio特典","WEBSITE_COMMUNITY_WALLPAPERS":"桌布","WEBSITE_COMMUNITY_ART":"社群藝術畫廊","WEBSITE_LINK_ART":"社群藝術畫廊","WEBSITE_CONTACT_US":"聯絡我們","WEBSITE_CONTACT_US_P1":"如果您有任何問題、意見或建議,請隨時透過下面的聯絡方式與我們聯絡。","WEBSITE_CONTACT_US_P2":"請記住,我們位於保加利亞,因此可能會由於時區差異而延遲處理您的問題。","WEBSITE_CONTACT_US_SUCCESS":"您的資訊已傳送。我們會在方便的時候儘快給您回覆。","WEBSITE_CONTACT_US_ERR_INV_EMAIL":"請輸入有效的電子郵箱!","WEBSITE_CONTACT_US_Q_RELATED_TO":"您的問題與什麼有關?","WEBSITE_CONTACT_US_Q_OS":"您的作業系統是什麼?","WEBSITE_CONTACT_US_PH_EMAIL":"您的電子郵箱","WEBSITE_CONTACT_US_PH_MESSAGE":"簡訊","WEBSITE_CONTACT_US_PH_MESSAGE_BTN":"傳送","WEBSITE_CONTACT_US_Q_1":"如何安裝?","WEBSITE_CONTACT_US_Q_2":"如何解除安裝?","WEBSITE_CONTACT_US_Q_3":"(HTML)如何製作千層麵?","WEBSITE_CONTACT_US_Q_4":"外掛","WEBSITE_CONTACT_US_OS_1":"Windows","WEBSITE_CONTACT_US_OS_2":"macOS","WEBSITE_CONTACT_US_OS_3":"Linux","WEBSITE_CONTACT_US_OS_4":"Android","WEBSITE_CONTACT_US_OS_5":"iOS","WEBSITE_TECHNOLOGY":"技術","WEBSITE_TECHNOLOGY_P1":"我們熱愛科技,熱愛科學。</br>這是Stremio的動力(它都是開源的)。","WEBSITE_TECHNOLOGY_P_QT":"最佳跨平臺軟體開發工具。","WEBSITE_TECHNOLOGY_P_MPV":"一款免費、開源、跨平臺的媒體播放器。","WEBSITE_TECHNOLOGY_P_RN":"React Native允許您僅使用JavaScript構建移動應用程式。","WEBSITE_TECHNOLOGY_P_VLC":"嵌入到應用程式中獲取多媒體的媒體框架。","WEBSITE_TECHNOLOGY_P_REALM":"Realm是一個移動平臺,是SQLite和Core Data的替代品。","WEBSITE_TECHNOLOGY_P_NODEJS":"Node.js是一個開源、跨平臺的JavaScript執行環境。","WEBSITE_TECHNOLOGY_P_RUST":"Rust是一種多正規化系統程式語言,關注安全性,尤其是安全併發性。","WEBSITE_TECHNOLOGY_CONTRIBUTE":"為專案貢獻力量","WEBSITE_TECHNOLOGY_CONTRIBUTE_P1":"您可以透過兩種方式為Stremio做貢獻,幫助我們將產品做得更好。","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_TRANSALTE":"您可以透過翻譯平臺來貢獻您寶貴的語言技能...","WEBSITE_TECHNOLOGY_CONTRIBUTE_OR":"或","WEBSITE_TECHNOLOGY_CONTRIBUTE_P_CREATE":"... 您可以利用您的程式設計技巧來建立社群外掛。","WEBSITE_TRANSLATE_STREMIO":"翻譯Stremio","WEBSITE_404_OH_NO":"糟糕!您要找的頁面不在這裡...","WEBSITE_GO_HOME":"回到主頁","WEBSITE_LINK_OTHER_DOWNLOADS":"其他下載","WEBSITE_FAQ_ABR":"常見問題","WEBSITE_SUPPORT":"支援","WEBSITE_DOWNLOAD_4_0_BETA":"立即下載Stremio 4測試版","WEBSITE_GET_FOR_DESKTOP":"獲取桌面","WEBSITE_LINK_ADDON_COMPETITION":"外掛比賽","WEBSITE_LINK_ART_CONTEST":"藝術比賽","WEBSITE_MY_ACCOUNT":"我的賬戶","WEBSITE_MAINPAGE_FAQ_001_H1":"什麼是Stremio?","WEBSITE_MAINPAGE_FAQ_001_P1":"Stremio是一個現代化的媒體中心,讓您可以自由觀看任何您想要的東西。","WEBSITE_MAINPAGE_FAQ_002_H1":"它是如何工作的?","WEBSITE_MAINPAGE_FAQ_002_P1":"一旦您在裝置上安裝了Stremio並建立了一個帳戶,您所要做的就是訪問外掛目錄並安裝任何您想要的外掛,就可以開始了!","WEBSITE_MAINPAGE_FAQ_002_P2":"之後,您可以進入“發現”或“板”部分,開始探索內容。","WEBSITE_MAINPAGE_FAQ_003_H1":"我可以在這裡看什麼?","WEBSITE_MAINPAGE_FAQ_003_P1":"很多:電影、電視節目、網路頻道、體育、電影片道、收聽播客等等。感謝我們的外掛系統,您可以訪問各種內容。","WEBSITE_MAINPAGE_FAQ_004_H1":"Stremio是開源的嗎?","WEBSITE_MAINPAGE_FAQ_004_P1":"是的,您可以檢視以下連結:${1}桌面應用${2}和${3}GitHub組織${4}。","WEBSITE_MAINPAGE_FAQ_005_H1":"Stremio安全嗎?","WEBSITE_MAINPAGE_FAQ_005_P1":"是:因為它是開源軟體,所以程式碼可以公開稽核,您可以自己檢視。","WEBSITE_MAINPAGE_FAQ_006_H1":"我的隱私如何?","WEBSITE_MAINPAGE_FAQ_006_P1":"我們尊重使用者隱私,除了建立和同步您的帳戶所必需的最低限度外,不收集任何個人資料。","WEBSITE_MAINPAGE_FAQ_006_P2":"註冊時還有一個${1}訪客模式${2},它不需要任何資料:在這種模式下,不會呼叫我們的後端。然而,這是以犧牲有用的功能為代價的,比如能夠跨裝置同步您的庫。","WEBSITE_MAINPAGE_FAQ_007_H1":"我可以投屏到電視嗎?","WEBSITE_MAINPAGE_FAQ_007_P1":"是的,我們支援Chromecast,您可以從桌面和移動應用程式(Android)進行強制轉換。","WEBSITE_MAINPAGE_FAQ_008_H1":"Stremio有多少外掛?","WEBSITE_MAINPAGE_FAQ_008_P1":"截至2019年末,超過50個。有關更多資訊,請檢視我們的外掛目錄。","WEBSITE_MAINPAGE_FAQ_009_H1":"Stremio是否可以擴充套件到外掛目錄之外?","WEBSITE_MAINPAGE_FAQ_009_P1":"是的,您應該檢視這些:${1}PimpMyStremio${2},${3}Reddit communities${4},${5}Stremio Downloader${6},等等。","WEBSITE_MAINPAGE_FAQ_010_H1":"Stremio支援哪些裝置?","WEBSITE_MAINPAGE_FAQ_010_P1":"我們有適用於Windows、Mac和Linux的桌面應用程式。對於移動裝置,我們支援Android和iOS,但請記住iOS的功能有限(不支援大多數外掛)。","WEBSITE_MAINPAGE_FAQ_010_P2":"有很多基於Android的裝置可以在上面執行Stremio,比如NVIDIA Shield和Amazon Fire Stick,但我們並不正式支援它們。","WEBSITE_MAINPAGE_FAQ_011_H1":"您們能為Stremio新增某些內容嗎?","WEBSITE_MAINPAGE_FAQ_011_P1":"抱歉,我們本身不提供任何內容,但是您安裝的Stremio外掛越多,您可以找到的內容就越多。","WEBSITE_MAINPAGE_FAQ_012_H1":"Stremio可以播放Magnet連結嗎?","WEBSITE_MAINPAGE_FAQ_012_P1":"是的,它還可以播放正常的HTTP連結和Torrent檔案(拖放)。","WEBSITE_MAINPAGE_FAQ_013_H1":"我可以下載影片並離線觀看嗎?","WEBSITE_MAINPAGE_FAQ_013_P1":"離線可用是一項即將推出的功能,但如果您允許Stremio在裝置上快取(從“設定”面板),您可以稍後在沒有連線的情況下觀看影片。","WEBSITE_MAINPAGE_FAQ_014_H1":"什麼都不能用,幫幫我!","WEBSITE_MAINPAGE_FAQ_014_P1":"您確定已安裝外掛嗎?如果是,請與我們的${1}幫助中心${2}聯絡","WEBSITE_MAINPAGE_FAQ_015_H1":"Stremio如何維持其開發運營?","WEBSITE_MAINPAGE_FAQ_015_P1":"We run non-intrusive ads occassionally, but we\'re considering moving to a donation model.","WEBSITE_MAINPAGE_FAQ_015_P2":"有關更多問題,請訪問我們的${1}幫助中心${2}。","HELP_LEARN_MORE":"幫助我們瞭解更多有關您的資訊。","LIFESTYLE":"生活方式","SPORTS":"體育","FOOD_HEALTH":"飲食與健康","BEAUTY_FASHION":"美麗與時尚","NEWS":"新聞","GAMING":"遊戲","SCIENCE_EDUCATION":"科學與教育","MUSIC":"音樂","TRAVEL":"旅行","LATE_NIGHT":"深夜","REALITY":"真人","COMEDY":"喜劇","DIY":"DIY","TECH":"技術","CINEMA":"影院","CONTINUE":"繼續","SLOW_LOADING":"載入緩慢?","I_GIVE_UP":"我放棄了","LEARN_MORE":"瞭解更多","POOR_SOURCE":"此源不可用或您的網路連線不夠快","PICK_CATEGORIES_ERR":"您必須至少選擇3個類別","ADJUST_TIMING":"調整時間","ADJUST_SIZE":"調整大小","SEARCH_ANYTHING":"您可以搜尋一切...","ALL_CATEGORIES":"全部","SEARCH_CATEGORIES":"電影、劇集、YouTube和電視","SEARCH_PERSONS":"演員、導演和編劇","SEARCH_PROTOCOLS":"HTTP或Magnet連結","SEARCH_TYPES":"IMDB/TVDB連結","WATCHED":"已觀看","SHOW_LESS":"顯示較少","LAST_SEARCHES":"上次搜尋","CLEAR_HISTORY":"清除歷史記錄","CHOOSE_SOME":"選擇其中一些:","NO_WEB_REMOTE":"無法載入Web Remote","STREMIO_OFFLINE":"Stremio離線","STREMIO_EXPENSIVE_CONNECTION":"我們檢測到您正在使用移動資料連線,是否繼續?","USE_DATA":"使用移動資料","WARNING":"警告","MORE_INFO":"更多資訊...","STREMIO_TV_STREMIO":"Stremio","STREMIO_TV_LOADING":"載入...","STREMIO_TV_BACK_TO_LANGUAGES":"返回語言","STREMIO_TV_REMOTE":"遠端","STREMIO_TV_GO_TO":"去往:","STREMIO_TV_OR_SCAN":"或掃描:","STREMIO_TV_ADDON_INSTRUCTIONS":"請按照說明安裝您喜歡的外掛。","STREMIO_TV_LIVE_TV":"直播電視","STREMIO_TV_RESUME_WATCHING":"繼續觀看","STREMIO_TV_LOADING_BACKGROUND":"載入背景","STREMIO_TV_CHECKING_AUTHENTICATION":"正在檢測身份驗證","STREMIO_TV_LOADING_BOARD":"載入主頁","STREMIO_TV_LOGIN_HEADER_LINE_1":"我們希望使用者在使用我們的軟體時有最好的個性化體驗,","STREMIO_TV_LOGIN_HEADER_LINE_2":"正是出於這個原因,我們懇請您建立和/或登入您的賬戶,","STREMIO_TV_LOGIN_FOOTER_LINE_1":"感謝您的理解,","STREMIO_TV_LOGIN_FOOTER_LINE_2":"Stremio團隊","STREMIO_TV_REMOTE_INSTRUCTIONS":"為了在您的智慧手機/平板電腦/桌面使用Web Remote:","STREMIO_TV_WIFI_SETUP":"Wi-Fi設定","STREMIO_TV_WIFI_HEADER_LINE_1":"Stremio Circle未檢測到網際網路連線。","STREMIO_TV_WIFI_DETAILS_1":"連線到:","STREMIO_TV_WIFI_DETAILS_2":"stremio-circle","STREMIO_TV_WIFI_DETAILS_3":"使用密碼:","STREMIO_TV_WIFI_DETAILS_4":"stremiocircle","STREMIO_TV_WIFI_DETAILS_5":"在瀏覽器中開啟連結:","STREMIO_TV_DISCOVER_GENRE_DEFAULT":"預設","STREMIO_TV_LIBRARY_SORT_LAST_WATCHED":"按最近觀看","STREMIO_TV_LIBRARY_SORT_NAME":"按名字","STREMIO_TV_LIBRARY_TIMES_WATCHED":"按觀看次數","STREMIO_TV_DETAILS_SEASON_NUMBER":"季${1}","STREMIO_TV_STREAMS_LOADING":"已載入${1}/${2}外掛...","STREMIO_TV_STREAMS_STILL_LOADING":"${1}外掛仍在載入...","STREMIO_TV_PLAYER_SETTINGS":"播放器設定","STREMIO_TV_PLAYER_SUBTITLES_DELAY":"字幕延遲","STREMIO_TV_PLAYER_AUDIO_DELAY":"音訊延遲","STREMIO_TV_PLAYER_VIDEO_SCALING":"影片縮放","STREMIO_TV_PLAYER_CHAPTERS":"Chapters","STREMIO_TV_PLAYER_BUTTON_SKIP_CHAPTER":"Skip ${1}","STREMIO_TV_PLAYER_UNSUPPORTED_STREAM":"不支援的流媒體源","STREMIO_TV_PLAYER_FAILED_EXTERNAL_LINK":"開啟外部連結失敗","STREMIO_TV_PLAYER_SPEED_NOT_ADJUSTABLE":"Not adjustable in audio passthrough mode","STREMIO_TV_PLAYER_PLAY_IN_EXO":"使用ExoPlayer播放","STREMIO_TV_PLAYER_PLAY_IN_VLC":"使用libVLC player播放","STREMIO_TV_PLAYER_SWITCH_TO_VLC_DUE_ERROR":"由於播放錯誤而切換到libVLC player","STREMIO_TV_ADDONS_TITLE":"在手機或PC上使用Stremio安裝或配置外掛,然後按\\"同步外掛\\"","STREMIO_TV_ADDONS_SUBTITLE":"注意:確保您使用的是相同的Stremio帳戶","STREMIO_TV_ADDONS_SYNC_ADDONS":"同步外掛","STREMIO_TV_ADDONS_SYNC_SUCCESS":"外掛成功同步","STREMIO_TV_ADDONS_SYNC_FAILED":"外掛同步失敗","STREMIO_TV_META_LINK_FAILED":"開啟元連結失敗","STREMIO_TV_CATALOG_LOADING":"目錄仍在載入...","STREMIO_TV_SETTINGS_LANGUAGE_UPDATED":"介面語言已更新","STREMIO_TV_SETTINGS_THEME_UPDATED":"主題已更新","STREMIO_TV_SETTINGS_DEFAULT_PLAYER":"Default Player","STREMIO_TV_SETTINGS_EXTERNAL_PLAYER":"External Player","STREMIO_TV_SETTINGS_PREFERRED_LANGUAGE":"首選語言","STREMIO_TV_SETTINGS_SECONDARY_PREFERRED_LANGUAGE":"次要首選語言","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK":"隧道播放","STREMIO_TV_SETTINGS_TUNNELLED_PLAYBACK_HINT":"某些裝置上可能存在播放問題","STREMIO_TV_SETTINGS_HW_DECODING_HINT":"某些影片格式可能無法播放","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_STRATEGY":"Frame rate matching","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_DISABLED":"Disabled","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_ONLY":"Frame Rate only","STREMIO_TV_SETTINGS_FRAME_RATE_MATCHING_FRAME_RATE_AND_RESOLUTION":"Frame Rate and Resolution","STREMIO_TV_SETTINGS_NO_CACHING":"無快取","STREMIO_TV_SETTINGS_PROFILE_DEFAULT":"預設","STREMIO_TV_SETTINGS_PROFILE_SOFT":"慢","STREMIO_TV_SETTINGS_PROFILE_FAST":"快","STREMIO_TV_SETTINGS_PROFILE_ULTRA_FAST":"超快","STREMIO_TV_SETTINGS_SERVER_URL":"流媒體伺服器URL","STREMIO_TV_SETTINGS_SERVER_VERSION":"伺服器版本","STREMIO_TV_SETTINGS_SERVER_UNKNOWN":"未知","STREMIO_TV_SETTINGS_STREMIO_VERSION":"Stremio版本","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_TITLE":"編輯伺服器URL","STREMIO_TV_SETTINGS_SERVER_MODAL_EDIT_DESCRIPTION":"輸入流媒體伺服器URL","STREMIO_TV_SETTINGS_SERVER_LOADING_STATISTICS":"Show statistics while loading","STREMIO_TV_SETTINGS_PRIVACY_POLICY_TEXT":"要閱讀Stremio的隱私政策,請訪問:","STREMIO_TV_SETTINGS_TOS_TEXT":"要閱讀Stremio的條款和條件,請訪問:","STREMIO_TV_NAV_SEARCH":"搜尋","STREMIO_TV_NAV_HOME":"主頁","STREMIO_TV_NAV_DISCOVER":"發現","STREMIO_TV_NAV_LIBRARY":"庫","STREMIO_TV_NAV_MOVIES":"電影","STREMIO_TV_NAV_SERIES":"劇集","STREMIO_TV_NAV_CHANNELS":"頻道","STREMIO_TV_NAV_TV":"電視直播","STREMIO_TV_NAV_SETTINGS":"設定","STREMIO_TV_NAV_ADDONS":"外掛","STREMIO_TV_LOGIN_TITLE":"連結賬戶","STREMIO_TV_LOGIN_EXPIRES_IN":"過期日期到","STREMIO_TV_LOGIN_STEP_ONE":"掃描上方的二維碼或轉到","STREMIO_TV_LOGIN_STEP_TWO":"登入您的Stremio帳戶","STREMIO_TV_LOGIN_NEW_LINK":"請求新連結","STREMIO_TV_LOGIN_LINK_REFRESHED":"登入程式碼已重新整理","STREMIO_TV_SEARCH_PLACEHOLDER":"輸入一些東西","STREMIO_TV_SEARCH_NO_ADDONS":"沒有為目錄請求外掛!","STREMIO_TV_SEARCH_BUTTON":"搜尋","STREMIO_TV_SEARCH_KEY_DEL":"刪除","STREMIO_TV_SEARCH_KEY_SPACE":"空格","STREMIO_TV_SEARCH_KEY_CLEAR":"清除","STREMIO_TV_SEARCH_HISTORY_TITLE":"搜尋歷史","STREMIO_TV_SEARCH_HISTORY_DESCRIPTION":"您可以搜尋標題、演員、頻道...","STREMIO_TV_SEARCH_HISTORY_CLEAR":"清除搜尋歷史","STREMIO_TV_FILTERS_DESCRIPTION":"從以下過濾器中選擇一個","FILTERS":"過濾器","SETTINGS":"設定","ACCOUNT":"賬戶","LOGOUT":"登出","THEMES":"主題","PLAYBACK":"播放","PLAYBACK_SPEED":"播放速度","AUDIO_TRACKS":"音軌","VIDEOS":"影片","SERVER":"伺服器","LINKS":"連結","ABOUT":"關於","INTERFACE":"介面","ANIMATIONS":"動畫","STATUS":"狀態","LANGUAGE":"語言","SIZE":"大小","DELAY":"延遲","BOLD":"粗體","TEXT_COLOR":"文字顏色","OUTLINE_COLOR":"輪廓顏色","BACKGROUND_COLOR":"背景顏色","BACKGROUND_BLUR":"背景模糊","SEEK_TIME_DURATION":"尋找持續時間","AUTO_PLAY":"自動播放下一集","PLAY_NOW":"現在播放","MARK_AS_WATCHED":"標記為已觀看","MARK_AS_UNWATCHED":"標記為未觀看","REWIND_TO_BEGINNING":"倒回開始","CONTINUE_WATCHING":"繼續觀看","ALL":"全部","SECONDS":"秒","ON":"開","OFF":"關","RELOAD":"重新載入","EDIT_URL":"編輯URL","NONE":"無","EMBEDDED":"內嵌","REMOTE_SWITCH_DEVICES":"開關裝置","REMOTE_VIDEOS":"影片","REMOTE_ADJUST_TIMING":"調整時間","REMOTE_ADJUST_SIZE":"調整大小","REMOTE_COULD_NOT_BE_LOADED":"無法載入Web Remote","REMOTE_RETRY":"重試","TORRENT_PROFILE_DEFAULT":"預設","TORRENT_PROFILE_SOFT":"慢","TORRENT_PROFILE_FAST":"快","TORRENT_PROFILE_ULTRA_FAST":"超快","FAQ_001_H1":"什麼是Stremio?","FAQ_001_P1":"Stremio是專為影片娛樂而設計的多媒體中心軟體,易於使用。Stremio允許您管理和觀看自己的電影,劇集,頻道和實況電視收藏。","FAQ_001_P2":"Stremio從本地磁碟和外掛系統中收集顯示給您的內容。","FAQ_001_P3":"它還會在您感興趣的新劇集/影片/電影播出時通知您,併為您提供電影推薦。","FAQ_02_H1":"Stremio與Kodi和Plex相比如何?","FAQ_02_P1":"我們受到這兩種軟體的啟發。但是我們有不同的目標——Stremio專門針對娛樂影片,並透過易於使用成為其主流解決方案。","FAQ_02_P2":"Stremio將永遠不會像Kodi和Plex那樣具有可定製性和豐富的功能,但它更易於使用。只需${1}就可以獲取它,並檢視${2}:)","FAQ_03_H1":"Stremio與Netflix相比如何?","FAQ_03_P1":"同樣,Netflix是我們的靈感之一。我們努力實現Netflix的使用者體驗,再加上許多附加的好處。但最重要的是,我們讓您可以自由管理自己的庫,並使用我們的外掛系統新增新的內容源。","FAQ_03_P2":"這使得Stremio可以無限擴充套件,因此當您使用Stremio時,您永遠不會侷限於Netflix決定許可的內容。例如,您可以透過Stremio觀看${1}中的內容電影電視${2}, ${3} Twitch.tv${4},${5}YouTube${6},${7}Vodo${8}甚至${9}Netflix${10}本身!","FAQ_04_H1":"Stremio與Flipboard相比如何?","FAQ_04_P1":"我們不常聽到這個問題,除非與初創企業的人交談:)","FAQ_04_P2":"Stremio是透過設計一個內容聚合器來實現的,它本質上就是影片的Flipboard。這一點在我們的首頁部分非常明顯,它為您提供目錄和新的插曲/新的影片通知,讓您瞭解您所關注的內容,就像Flipboard一樣。","FAQ_05_H1":"Stremio與Popcorn Time相比如何?","FAQ_05_P1":"Stremio和Popcorn Time在使用者介面上很相似,因為沒有很多方法可以正確製作影片娛樂目錄:)","FAQ_05_P2":"Popcorn Time主要集中在特定來源的流媒體上,但Stremio是不受限制的,只是一個內容聚合器,它沒有鎖定到特定的內容源。","FAQ_05_P3":"此外,我們預設不提供任何Torrent外掛,因此Stremio不提供官方功能的Popcorn Time用例。","FAQ_05_P4":"另一個顯著的區別是Popcorn Time是完全開源的,而Stremio是${1}部分開源的${2}。","FAQ_06_H1":"是否要新增此電影/系列?","FAQ_06_P1":"不,對不起 :(","FAQ_06_P2":"正如大多數其他問題中提到的,Stremio本身不提供任何內容,所有內容都是透過外掛系統新增的。如果您有內容請求,您可以使用播放器中的“報告”按鈕,它將向您當前使用的外掛的作者傳送電子郵件。","FAQ_07_H1":"","FAQ_07_P1":"","FAQ_07_P2":"","FAQ_08_H1":"能否為X建立外掛?","FAQ_08_P1":"完全有可能。","FAQ_08_P2":"如果您有一個外掛的想法,請在${1}office@stremio.com${2}給我們留言,但請確保您的外掛想法不會侵犯任何版權或使用條款。","FAQ_08_P3":"目前,我們路線圖上的下一件事是FandangoNOW,Filmon.tv video on demand和Crunchyroll的外掛。","FAQ_09_H1":"Stremio是否使用BitTorrent?","FAQ_09_P1":"是的,Stremio支援BitTorrent作為流媒體協議。您可以將其與Torrent外掛一起使用,也可以將.Torrent檔案拖放到Stremio中,或者將磁鐵鏈接貼上到搜尋欄中。","FAQ_09_P2":"請注意,使用BitTorrent的唯一官方外掛是${1}Vodo${2},它提供獨立內容,所有內容都允許與BitTorrent一起分發。","FAQ_09_P3":"我們不支援使用任何可能導致版權侵權的第三方外掛。","FAQ_10_H1":"我可以在Stremio中透過官方外掛觀看什麼節目?","FAQ_10_P1":"預設情況下,您可以在Stremio與它的嵌入式播放器觀看Filmon.tv,YouTube和Vodo的內容。另外,我們還有一個Twitch.tv外掛,以及其他一些外掛。","FAQ_10_P2":"此組合提供以下選項:","FAQ_10_L1":"Filmon.tv上的熱門電影片道,例如E4、BBC、Bollyworld TV","FAQ_10_L2":"YouTube上的所有內容,例如BBC News、Top Gear、Vevo、PewDiePie","FAQ_10_L3":"Vodo上的獨立電影","FAQ_10_L4":"Twitch.tv上的線上遊戲廣播","FAQ_10_P3":"此外,Guidebox和Netflix外掛提供了許多內容源,它們不完全在Stremio中播放,而是重定向到給定的服務。例如,Guidebox外掛將為您提供可在美國免費播放的精選電影,這些電影來自TubiTV和Crackle等服務。","FAQ_11_H1":"Stremio無法安裝,我該怎麼辦?","FAQ_11_P1":"如果您在Windows上,請嘗試${1}此替代安裝程式${2}。","FAQ_11_P2":"如果您使用的是Mac OS X,請注意,我們不支援任何比OS X Mavericks(10.9)更舊的版本。","FAQ_11_P3":"如果您使用的是Linux,請注意,我們目前只支援64位(x64)Linux。","FAQ_11_P4":"如果您仍然無法解決您的問題,請寫信給我們的${1}Facebook群組${2}。","FAQ_12_H1":"為什麼我的防毒軟體會報毒?Stremio安全嗎?","FAQ_12_P1":"我們向您保證Stremio是${1}100%安全的${2}。","FAQ_12_P2":"您的防毒軟體報毒是因為我們的安裝程式中包含廣告,一些防毒軟體將其識別為廣告軟體。","FAQ_12_P3":"如果您仍然不確定,可以嘗試我們的${1}替代安裝程式${2}。","FAQ_13_H1":"如何製作外掛?","FAQ_13_P1":"對於初學者,我們建議您檢視GitHub上的${1}外掛系統模組${2}。","FAQ_13_P2":"之後,您可以按照${1}Hello World教程${2}進行操作。","FAQ_13_P3":"如果您沒有任何程式設計技能,請在${1}Reddit社群${2}上釋出您的想法,並在${3}office@stremio.com${4}上與我們聯絡您的外掛想法。","FAQ_14_H1":"外掛是如何釋出的?","FAQ_14_P1":"當您建立一個外掛和主機,並在清單中放置一個指向工作外掛地址的<b>終端節點</b>欄位時,該外掛將自動釋出到我們的${1}外掛目錄${2}。","FAQ_14_P2":"發生這種情況是因為Stremio外掛模組的伺服器部分會自動呼叫我們的API來宣告外掛。當我們的API驗證您的<b>終端節點</b>為有效的外掛時,它將開始顯示在目錄中。","FAQ_15_H1":"我可以在瀏覽器中執行Stremio嗎?","FAQ_15_P1":"目前還沒有,但即將到來!","FAQ_15_P2":"如果您想看到Alpha版本,可以在這裡看到:${1}alpha4.strem.io${2}. 請記住,此Alpha版本上已禁用流式處理。我們支援Chrome、Firefox、Opera和Edge","FAQ_16_H1":"電視投屏不起作用/字幕不起作用","FAQ_16_P1":"電視投屏使用DLNA技術,這在不同的電視品牌和型號之間非常不一致。由於這個原因,我們沒有能力在每種情況下都測試它,所以它還遠遠不夠完美。儘管如此,我們仍在不斷改進,但我們無法為您提供DLNA能夠在您的電視上開始正常工作的預計時間。","FAQ_16_P2":"如果您在“投屏”選單中看不到您的電視,請嘗試禁用網路連線並重新啟用它(在Windows上,右鍵單擊網路並使用“啟用/禁用”),以及重新啟動路由器、電視和PC。","FAQ_16_P3":"如果您仍然遇到問題,您可以透過將您的電視品牌和型號資訊傳送到${1}來幫助我們”office@stremio.com${2}。","FAQ_16_P4":"同時,我們推薦Chromecast,我們非常支援Chromecast,或者直接用HDMI線將電視與PC連線。","FAQ_17_H1":"Stremio卡死和/或崩潰,我能做什麼?","FAQ_17_P1":"首先,如果您使用的是帶有AVG防毒軟體的Windows 7,這種組合會產生問題。問題出在AVG本身,我們這邊沒有合理的辦法解決。不幸的是,去除或禁用防毒軟體將不起作用。唯一的解決辦法是用別的東西代替AVG","FAQ_17_P2":"如果不是這個問題,但您仍在使用Windows,請更新到最新的service pack並更新/重新安裝您的GPU驅動程式,然後重試。","FAQ_17_P3":"如果您的問題仍未解決,或者您使用的是Mac或Linux,請寫信給我們,在${1}我們的Facebook群組${2}報告問題的確切細節。","FAQ_18_H1":"如何製作外掛?","FAQ_18_P1":"對於初學者,我們建議您檢視GitHub上的${1}外掛系統模組${2}。","FAQ_18_P2":"之後,您可以按照${1}Hello World教程${2}進行操作。","FAQ_18_P3":"如果您沒有任何程式設計技能,請在${1}Reddit社群${2}上釋出您的想法,並在${3}上與我們聯絡您的外掛想法。”office@stremio.com${4}。","FAQ_19_H1":"為什麼Stremio佔用磁碟空間?","FAQ_19_P1":"Stremio有一個<b>本地快取</b>來臨時儲存您流式傳輸的影片檔案。","FAQ_19_P2":"這有兩個好處:第一,它允許Stremio預先緩衝影片,以確保流媒體更流暢。其次,它將影片儲存在本地快取中,以便您可以繼續離線觀看。","FAQ_19_P3":"Stremio保留了多少取決於“設定”面板中的<b>快取設定。Stremio可能會在您的磁碟上保留到設定的數量(例如2GB),除非當前流式傳輸的影片大於該數量,在這種情況下,必須分配足夠的儲存來保留它,直到您結束流式傳輸。","FAQ_20_H1":"快取資料夾在哪裡?","FAQ_20_P1":"在Windows上,Stremio快取位於您在設定中選擇的驅動器中(例如\\"E:\\\\stremio-cache\\")","FAQ_20_P2":"在MacOS上,它位於\\"~/Library/Application Support/Stremio/stremio-cache\\"","FAQ_20_P3":"在Linux上,它位於\\"~/.stremio/stremio-cache\\"或\\"~/stremio-cache\\"","FAQ_21_H1":"我得到\\"流媒體伺服器未找到\\"錯誤,我能做什麼?","FAQ_21_P1":"如果出現此錯誤,則表示以下幾點之一:","FAQ_21_P2":"1)您正試圖透過我們的${1}web版本${2}使用一個由YouTube/BitTorrent原始碼支援的外掛。在這種情況下,您應該從${3}我們的網站${4}安裝我們的桌面版本","FAQ_21_P3":"2)Stremio安裝有問題。在這種情況下,請嘗試從${1}網站${2}重新安裝我們的最新桌面版本。如果這沒有幫助,請嘗試禁用防毒軟體和防火牆,重新啟動電腦,然後重試。如果這依然不起作用,請寫信給我們的${3}Facebook群組${4}","FAQ_22_H1":"我無法在iOS上看到/使用大多數外掛","FAQ_22_P1":"由於Apple App Store條款和條件中的限制,我們限制iOS應用程式只能使用一組特定的外掛。","FAQ_22_P2":"不過,請放心,將來會有更多的iOS外掛,我們還可能新增一個整合,透過將iOS應用程式連線到Stremio流媒體伺服器,您將可以使用所有Stremio外掛。"}')},5232:e=>{"use strict";e.exports=JSON.parse('[{"name":"العربية","codes":["ar-AR","ara"]},{"name":"български език","codes":["bg-BG","bul"]},{"name":"català","codes":["ca-CA","cat"]},{"name":"čeština","codes":["cs-CZ","ces"]},{"name":"dansk","codes":["da-DK","dan"]},{"name":"Deutsch","codes":["de-DE","deu"]},{"name":"ελληνικά","codes":["el-GR","ell"]},{"name":"English","codes":["en-US","eng"]},{"name":"Esperanto","codes":["eo-EO","epo"]},{"name":"español","codes":["es-ES","spa"]},{"name":"euskara","codes":["eu-ES","eus"]},{"name":"فارسی","codes":["fa-IR","fas"]},{"name":"Français","codes":["fr-FR","fre"]},{"name":"עברית","codes":["he-IL","heb"]},{"name":"हिन्दी","codes":["hi-IN","hin"]},{"name":"hrvatski jezik","codes":["hr-HR","hrv"]},{"name":"magyar","codes":["hu-HU","hun"]},{"name":"Bahasa Indonesia","codes":["id-ID","ind"]},{"name":"italiano","codes":["it-IT","ita"]},{"name":"македонски јазик","codes":["mk-MK","mkd"]},{"name":"ဗမာစာ","codes":["my-BM","mya"]},{"name":"Norsk bokmål","codes":["nb-NO","nob"]},{"name":"Nederlands","codes":["nl-NL","nld"]},{"name":"Norsk nynorsk","codes":["nn-NO","nno"]},{"name":"język polski","codes":["pl-PL","pol"]},{"name":"português Brazil","codes":["pt-BR","por"]},{"name":"português","codes":["pt-PT","por"]},{"name":"русский язык","codes":["ru-RU","rus"]},{"name":"Svenska","codes":["sv-SE","swe"]},{"name":"slovenski jezik","codes":["sl-SL","slv"]},{"name":"српски језик","codes":["sr-RS","srp"]},{"name":"తెలుగు","codes":["te-IN","tel"]},{"name":"Türkçe","codes":["tr-TR","tur"]},{"name":"українська мова","codes":["uk-UA","ukr"]},{"name":"中文(中华人民共和国)","codes":["zh-CN","zho"]},{"name":"中文(香港特别行政區)","codes":["zh-HK","zho"]},{"name":"中文(台灣)","codes":["zh-TW","zho"]}]')},8832:e=>{"use strict";e.exports=JSON.parse('{"abk":"аҧсуа бызшәа","aar":"Afaraf","afr":"Afrikaans","aka":"Akan","sqi":"gjuha shqipe","amh":"አማርኛ","ara":"العربية","arg":"aragonés","hye":"Հայերեն","asm":"অসমীয়া","ava":"авар мацӀ","ave":"avesta","aym":"aymar aru","aze":"azərbaycan dili","bam":"bamanankan","bak":"башҡорт теле","eus":"euskara","bel":"беларуская мова","ben":"বাংলা","bih":"भोजपुरी","bis":"Bislama","bos":"bosanski jezik","bre":"brezhoneg","bul":"български език","mya":"ဗမာစာ","cat":"català","cha":"Chamoru","che":"нохчийн мотт","nya":"chiCheŵa","zho":"中文 (Zhōngwén)","chv":"чӑваш чӗлхи","cor":"Kernewek","cos":"corsu","cre":"ᓀᐦᐃᔭᐍᐏᐣ","hrv":"hrvatski jezik","ces":"čeština","dan":"dansk","div":"ދިވެހި","nld":"Nederlands","dzo":"རྫོང་ཁ","eng":"English","epo":"Esperanto","est":"eesti","ewe":"Eʋegbe","fao":"føroyskt","fij":"vosa Vakaviti","fin":"suomi","fre":"français","ful":"Fulfulde","glg":"galego","kat":"ქართული","ger":"Deutsch","ell":"ελληνικά","grn":"Avañe\'ẽ","guj":"ગુજરાતી","hat":"Kreyòl ayisyen","hau":"Hausa","heb":"עברית","her":"Otjiherero","hin":"हिन्दी","hmo":"Hiri Motu","hun":"magyar","ina":"Interlingua","ind":"Bahasa Indonesia","ile":"Interlingue","gle":"Gaeilge","ibo":"Asụsụ Igbo","ipk":"Iñupiaq","ido":"Ido","isl":"Íslenska","ita":"italiano","iku":"ᐃᓄᒃᑎᑐᑦ","jpn":"日本語 (にほんご)","jav":"basa Jawa","kal":"kalaallisut","kan":"ಕನ್ನಡ","kau":"Kanuri","kas":"कश्मीरी","kaz":"қазақ тілі","khm":"ខ្មែរ","kik":"Gĩkũyũ","kin":"Ikinyarwanda","kir":"Кыргызча","kom":"коми кыв","kon":"KiKongo","kor":"한국어 (韓國語)","kur":"Kurdî","kua":"Kuanyama","lat":"latine","ltz":"Lëtzebuergesch","lug":"Luganda","lim":"Limburgs","lin":"Lingála","lao":"ພາສາລາວ","lit":"lietuvių kalba","lub":"Tshiluba","lav":"latviešu valoda","glv":"Gaelg","mkd":"македонски јазик","mlg":"fiteny malagasy","msa":"bahasa Melayu","mal":"മലയാളം","mlt":"Malti","mri":"te reo Māori","mar":"मराठी","mah":"Kajin M̧ajeļ","mon":"монгол","nau":"Ekakairũ Naoero","nav":"Diné bizaad","nob":"Norsk bokmål","nde":"isiNdebele","nep":"नेपाली","ndo":"Owambo","nno":"Norsk nynorsk","nor":"Norsk","iii":"ꆈꌠ꒿ Nuosuhxop","nbl":"isiNdebele","oci":"occitan","oji":"ᐊᓂᔑᓈᐯᒧᐎᓐ","chu":"ѩзыкъ словѣньскъ","orm":"Afaan Oromoo","ori":"ଓଡ଼ିଆ","oss":"ирон æвзаг","pan":"ਪੰਜਾਬੀ","pli":"पाऴि","fas":"فارسی","pol":"język polski","pus":"پښتو","por":"português","pob":"português Brazil","que":"Runa Simi","roh":"rumantsch grischun","run":"Ikirundi","ron":"limba română","rus":"русский язык","san":"संस्कृतम्","srd":"sardu","snd":"सिन्धी","sme":"Davvisámegiella","smo":"gagana fa\'a Samoa","sag":"yângâ tî sängö","srp":"српски језик","gla":"Gàidhlig","sna":"chiShona","sin":"සිංහල","slk":"slovenčina","slv":"slovenski jezik","som":"Soomaaliga","sot":"Sesotho","spa":"español","sun":"Basa Sunda","swa":"Kiswahili","ssw":"SiSwati","swe":"Svenska","tam":"தமிழ்","tel":"తెలుగు","tgk":"тоҷикӣ","tha":"ไทย","tir":"ትግርኛ","bod":"བོད་ཡིག","tuk":"Türkmen","tgl":"Wikang Tagalog","tsn":"Setswana","ton":"faka Tonga","tur":"Türkçe","tso":"Xitsonga","tat":"татар теле","twi":"Twi","tah":"Reo Tahiti","uig":"Uyƣurqə","ukr":"українська мова","urd":"اردو","uzb":"O\'zbek","ven":"Tshivenḓa","vie":"Tiếng Việt","vol":"Volapük","wln":"walon","cym":"Cymraeg","wol":"Wollof","fry":"Frysk","xho":"isiXhosa","yid":"ייִדיש","yor":"Yorùbá","zha":"Saɯ cueŋƅ","zul":"isiZulu"}')}},t={};function o(a){var n=t[a];if(void 0!==n)return n.exports;var i=t[a]={id:a,loaded:!1,exports:{}};return e[a].call(i.exports,i,i.exports,o),i.loaded=!0,i.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var a in t)o.o(t,a)&&!o.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o.g=(function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}})(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var a=t.getElementsByTagName("script");a.length&&(e=a[a.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e+"../../"})(),(()=>{var e,t;function a(e,t){return(function(e){if(Array.isArray(e))return e})(e)||(function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var a,n,i=[],r=!0,s=!1;try{for(o=o.call(e);!(r=(a=o.next()).done)&&(i.push(a.value),!t||i.length!==t);r=!0);}catch(e){s=!0,n=e}finally{try{r||null==o.return||o.return()}finally{if(s)throw n}}return i})(e,t)||(function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return n(e,t)})(e,t)||(function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,a=new Array(t);o<t;o++)a[o]=e[o];return a}var i,r=o(1206).parse((null===(e=window.navigator)||void 0===e?void 0:e.userAgent)||"");"desktop"===(null==r||null===(t=r.platform)||void 0===t?void 0:t.type)&&(null===(i=document.querySelector('meta[name="viewport"]'))||void 0===i||i.setAttribute("content",""));var s=o(7294),E=o(745),_=o(6073),T=o(1468).initReactI18next,l=o(6567),S=o(4008),u=Object.fromEntries(Object.entries(l()).map((function(e){var t=a(e,2);return[t[0],{translation:t[1]}]})));_.use(T).init({resources:u,lng:"en-US",fallbackLng:"en-US",interpolation:{escapeValue:!1}}),E.createRoot(document.getElementById("app")).render(s.createElement(S,null)),"serviceWorker"in navigator&&window.addEventListener("load",(function(){navigator.serviceWorker.register("service-worker.js").catch((function(e){console.error("SW registration failed: ",e)}))}))})()})(); -//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/main.js.map b/development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/main.js.map deleted file mode 100644 index 0dc91d54c..000000000 --- a/development/f4f59074954b11898de7b384b6320863c5aa1fba/scripts/main.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"f4f59074954b11898de7b384b6320863c5aa1fba/scripts/main.js","mappings":"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","sources":["webpack://stremio/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://stremio/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://stremio/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://stremio/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://stremio/./node_modules/@babel/runtime/helpers/createClass.js","webpack://stremio/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://stremio/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://stremio/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://stremio/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://stremio/./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://stremio/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://stremio/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://stremio/./node_modules/@babel/runtime/helpers/typeof.js","webpack://stremio/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://stremio/./node_modules/@babel/runtime/regenerator/index.js","webpack://stremio/./node_modules/@stremio/stremio-core-web/bridge.js","webpack://stremio/./node_modules/@stremio/stremio-icons/dom/Icon.js","webpack://stremio/./node_modules/@stremio/stremio-icons/dom/index.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/ChromecastSenderVideo/ChromecastSenderVideo.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/ChromecastSenderVideo/index.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/HTMLVideo/HTMLVideo.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/HTMLVideo/getContentType.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/HTMLVideo/hlsConfig.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/HTMLVideo/index.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/IFrameVideo/IFrameVideo.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/IFrameVideo/index.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/ShellVideo/ShellVideo.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/ShellVideo/index.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/StremioVideo/StremioVideo.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/StremioVideo/index.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/StremioVideo/selectVideoImplementation.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/TizenVideo/TizenVideo.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/TizenVideo/index.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/WebOsVideo/WebOsVideo.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/WebOsVideo/index.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/YouTubeVideo/YouTubeVideo.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/YouTubeVideo/index.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/error.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/index.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/mediaCapabilities.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/withHTMLSubtitles/binarySearchUpperBound.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/withHTMLSubtitles/index.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/withHTMLSubtitles/subtitlesConverter.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/withHTMLSubtitles/subtitlesParser.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/withHTMLSubtitles/subtitlesRenderer.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/withHTMLSubtitles/withHTMLSubtitles.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/withStreamingServer/convertStream.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/withStreamingServer/createTorrent.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/withStreamingServer/index.js","webpack://stremio/./node_modules/@stremio/stremio-video/src/withStreamingServer/withStreamingServer.js","webpack://stremio/./node_modules/a-color-picker/dist/acolorpicker.js","webpack://stremio/./src/App/App.js","webpack://stremio/./src/App/DeepLinkHandler.js","webpack://stremio/./src/App/ErrorDialog/ErrorDialog.js","webpack://stremio/./src/App/ErrorDialog/index.js","webpack://stremio/./src/App/ServicesToaster.js","webpack://stremio/./src/App/index.js","webpack://stremio/./src/App/routerViewsConfig.js","webpack://stremio/./src/App/withProtectedRoutes.js","webpack://stremio/./src/common/AddonDetailsModal/AddonDetails/AddonDetails.js","webpack://stremio/./src/common/AddonDetailsModal/AddonDetails/index.js","webpack://stremio/./src/common/AddonDetailsModal/AddonDetailsModal.js","webpack://stremio/./src/common/AddonDetailsModal/index.js","webpack://stremio/./src/common/AddonDetailsModal/useAddonDetails.js","webpack://stremio/./src/common/Button/Button.js","webpack://stremio/./src/common/Button/index.js","webpack://stremio/./src/common/CONSTANTS.js","webpack://stremio/./src/common/Checkbox/Checkbox.js","webpack://stremio/./src/common/Checkbox/index.js","webpack://stremio/./src/common/ColorInput/ColorInput.js","webpack://stremio/./src/common/ColorInput/ColorPicker/ColorPicker.js","webpack://stremio/./src/common/ColorInput/ColorPicker/index.js","webpack://stremio/./src/common/ColorInput/index.js","webpack://stremio/./src/common/CoreSuspender.js","webpack://stremio/./src/common/DelayedRenderer/DelayedRenderer.js","webpack://stremio/./src/common/DelayedRenderer/index.js","webpack://stremio/./src/common/Image/Image.js","webpack://stremio/./src/common/Image/index.js","webpack://stremio/./src/common/LibItem/LibItem.js","webpack://stremio/./src/common/LibItem/index.js","webpack://stremio/./src/common/MainNavBars/MainNavBars.js","webpack://stremio/./src/common/MainNavBars/index.js","webpack://stremio/./src/common/MetaItem/MetaItem.js","webpack://stremio/./src/common/MetaItem/index.js","webpack://stremio/./src/common/MetaPreview/ActionButton/ActionButton.js","webpack://stremio/./src/common/MetaPreview/ActionButton/index.js","webpack://stremio/./src/common/MetaPreview/MetaLinks/MetaLinks.js","webpack://stremio/./src/common/MetaPreview/MetaLinks/index.js","webpack://stremio/./src/common/MetaPreview/MetaPreview.js","webpack://stremio/./src/common/MetaPreview/MetaPreviewPlaceholder/MetaPreviewPlaceholder.js","webpack://stremio/./src/common/MetaPreview/MetaPreviewPlaceholder/index.js","webpack://stremio/./src/common/MetaPreview/index.js","webpack://stremio/./src/common/MetaRow/MetaRow.js","webpack://stremio/./src/common/MetaRow/MetaRowPlaceholder/MetaRowPlaceholder.js","webpack://stremio/./src/common/MetaRow/MetaRowPlaceholder/index.js","webpack://stremio/./src/common/MetaRow/index.js","webpack://stremio/./src/common/ModalDialog/ModalDialog.js","webpack://stremio/./src/common/ModalDialog/index.js","webpack://stremio/./src/common/Multiselect/Multiselect.js","webpack://stremio/./src/common/Multiselect/index.js","webpack://stremio/./src/common/NavBar/HorizontalNavBar/HorizontalNavBar.js","webpack://stremio/./src/common/NavBar/HorizontalNavBar/NavMenu/NavMenu.js","webpack://stremio/./src/common/NavBar/HorizontalNavBar/NavMenu/NavMenuContent.js","webpack://stremio/./src/common/NavBar/HorizontalNavBar/NavMenu/index.js","webpack://stremio/./src/common/NavBar/HorizontalNavBar/SearchBar/SearchBar.js","webpack://stremio/./src/common/NavBar/HorizontalNavBar/SearchBar/index.js","webpack://stremio/./src/common/NavBar/HorizontalNavBar/index.js","webpack://stremio/./src/common/NavBar/VerticalNavBar/NavTabButton/NavTabButton.js","webpack://stremio/./src/common/NavBar/VerticalNavBar/NavTabButton/index.js","webpack://stremio/./src/common/NavBar/VerticalNavBar/VerticalNavBar.js","webpack://stremio/./src/common/NavBar/VerticalNavBar/index.js","webpack://stremio/./src/common/NavBar/index.js","webpack://stremio/./src/common/PaginationInput/PaginationInput.js","webpack://stremio/./src/common/PaginationInput/index.js","webpack://stremio/./src/common/PlayIconCircleCentered/PlayIconCircleCentered.js","webpack://stremio/./src/common/PlayIconCircleCentered/index.js","webpack://stremio/./src/common/Popup/Popup.js","webpack://stremio/./src/common/Popup/index.js","webpack://stremio/./src/common/SearchBar/SearchBar.js","webpack://stremio/./src/common/SearchBar/SearchBarPlaceholder/SearchBarPlaceholder.js","webpack://stremio/./src/common/SearchBar/SearchBarPlaceholder/index.js","webpack://stremio/./src/common/SearchBar/index.js","webpack://stremio/./src/common/SharePrompt/SharePrompt.js","webpack://stremio/./src/common/SharePrompt/index.js","webpack://stremio/./src/common/Slider/Slider.js","webpack://stremio/./src/common/Slider/index.js","webpack://stremio/./src/common/StreamingServerWarning/StreamingServerWarning.js","webpack://stremio/./src/common/StreamingServerWarning/index.js","webpack://stremio/./src/common/TextInput/TextInput.js","webpack://stremio/./src/common/TextInput/index.js","webpack://stremio/./src/common/Toast/ToastContext.js","webpack://stremio/./src/common/Toast/ToastItem/ToastItem.js","webpack://stremio/./src/common/Toast/ToastItem/index.js","webpack://stremio/./src/common/Toast/ToastProvider.js","webpack://stremio/./src/common/Toast/index.js","webpack://stremio/./src/common/Toast/useToast.js","webpack://stremio/./src/common/comparatorWithPriorities.js","webpack://stremio/./src/common/externalPlayerOptions.js","webpack://stremio/./src/common/getVisibleChildrenRange.js","webpack://stremio/./src/common/index.js","webpack://stremio/./src/common/platform.js","webpack://stremio/./src/common/routesRegexp.js","webpack://stremio/./src/common/translateOption.js","webpack://stremio/./src/common/useAnimationFrame.js","webpack://stremio/./src/common/useBinaryState.js","webpack://stremio/./src/common/useFullscreen.js","webpack://stremio/./src/common/useLiveRef.js","webpack://stremio/./src/common/useModelState.js","webpack://stremio/./src/common/useOnScrollToBottom.js","webpack://stremio/./src/common/useProfile.js","webpack://stremio/./src/common/useStreamingServer.js","webpack://stremio/./src/common/useTorrent.js","webpack://stremio/./src/router/Modal/Modal.js","webpack://stremio/./src/router/Modal/index.js","webpack://stremio/./src/router/ModalsContainerContext/ModalsContainerContext.js","webpack://stremio/./src/router/ModalsContainerContext/ModalsContainerProvider.js","webpack://stremio/./src/router/ModalsContainerContext/index.js","webpack://stremio/./src/router/ModalsContainerContext/useModalsContainer.js","webpack://stremio/./src/router/Route/Route.js","webpack://stremio/./src/router/Route/index.js","webpack://stremio/./src/router/RouteFocusedContext/RouteFocusedContext.js","webpack://stremio/./src/router/RouteFocusedContext/index.js","webpack://stremio/./src/router/RouteFocusedContext/useRouteFocused.js","webpack://stremio/./src/router/Router/Router.js","webpack://stremio/./src/router/Router/index.js","webpack://stremio/./src/router/Router/routeConfigForPath.js","webpack://stremio/./src/router/Router/urlParamsForPath.js","webpack://stremio/./src/router/index.js","webpack://stremio/./src/routes/Addons/Addon/Addon.js","webpack://stremio/./src/routes/Addons/Addon/index.js","webpack://stremio/./src/routes/Addons/Addons.js","webpack://stremio/./src/routes/Addons/index.js","webpack://stremio/./src/routes/Addons/useAddonDetailsTransportUrl.js","webpack://stremio/./src/routes/Addons/useInstalledAddons.js","webpack://stremio/./src/routes/Addons/useRemoteAddons.js","webpack://stremio/./src/routes/Addons/useSelectableInputs.js","webpack://stremio/./src/routes/Board/Board.js","webpack://stremio/./src/routes/Board/index.js","webpack://stremio/./src/routes/Board/useBoard.js","webpack://stremio/./src/routes/Board/useContinueWatchingPreview.js","webpack://stremio/./src/routes/Discover/Discover.js","webpack://stremio/./src/routes/Discover/index.js","webpack://stremio/./src/routes/Discover/useDiscover.js","webpack://stremio/./src/routes/Discover/useSelectableInputs.js","webpack://stremio/./src/routes/Intro/ConsentCheckbox/ConsentCheckbox.js","webpack://stremio/./src/routes/Intro/ConsentCheckbox/index.js","webpack://stremio/./src/routes/Intro/CredentialsTextInput/CredentialsTextInput.js","webpack://stremio/./src/routes/Intro/CredentialsTextInput/index.js","webpack://stremio/./src/routes/Intro/Intro.js","webpack://stremio/./src/routes/Intro/PasswordResetModal/PasswordResetModal.js","webpack://stremio/./src/routes/Intro/PasswordResetModal/index.js","webpack://stremio/./src/routes/Intro/index.js","webpack://stremio/./src/routes/Intro/useFacebookToken.js","webpack://stremio/./src/routes/Library/Library.js","webpack://stremio/./src/routes/Library/index.js","webpack://stremio/./src/routes/Library/useLibrary.js","webpack://stremio/./src/routes/Library/useSelectableInputs.js","webpack://stremio/./src/routes/MetaDetails/MetaDetails.js","webpack://stremio/./src/routes/MetaDetails/StreamsList/Stream/Stream.js","webpack://stremio/./src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/StreamPlaceholder.js","webpack://stremio/./src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/index.js","webpack://stremio/./src/routes/MetaDetails/StreamsList/Stream/index.js","webpack://stremio/./src/routes/MetaDetails/StreamsList/StreamsList.js","webpack://stremio/./src/routes/MetaDetails/StreamsList/index.js","webpack://stremio/./src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBar.js","webpack://stremio/./src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/SeasonsBarPlaceholder.js","webpack://stremio/./src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/index.js","webpack://stremio/./src/routes/MetaDetails/VideosList/SeasonsBar/index.js","webpack://stremio/./src/routes/MetaDetails/VideosList/Video/Video.js","webpack://stremio/./src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/VideoPlaceholder.js","webpack://stremio/./src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/index.js","webpack://stremio/./src/routes/MetaDetails/VideosList/Video/index.js","webpack://stremio/./src/routes/MetaDetails/VideosList/VideosList.js","webpack://stremio/./src/routes/MetaDetails/VideosList/index.js","webpack://stremio/./src/routes/MetaDetails/index.js","webpack://stremio/./src/routes/MetaDetails/useMetaDetails.js","webpack://stremio/./src/routes/MetaDetails/useMetaExtensionTabs.js","webpack://stremio/./src/routes/MetaDetails/useSeason.js","webpack://stremio/./src/routes/NotFound/NotFound.js","webpack://stremio/./src/routes/NotFound/index.js","webpack://stremio/./src/routes/Player/BufferingLoader/BufferingLoader.js","webpack://stremio/./src/routes/Player/BufferingLoader/index.js","webpack://stremio/./src/routes/Player/ControlBar/ControlBar.js","webpack://stremio/./src/routes/Player/ControlBar/SeekBar/SeekBar.js","webpack://stremio/./src/routes/Player/ControlBar/SeekBar/formatTime.js","webpack://stremio/./src/routes/Player/ControlBar/SeekBar/index.js","webpack://stremio/./src/routes/Player/ControlBar/VolumeSlider/VolumeSlider.js","webpack://stremio/./src/routes/Player/ControlBar/VolumeSlider/index.js","webpack://stremio/./src/routes/Player/ControlBar/index.js","webpack://stremio/./src/routes/Player/InfoMenu/InfoMenu.js","webpack://stremio/./src/routes/Player/InfoMenu/index.js","webpack://stremio/./src/routes/Player/NextVideoPopup/NextVideoPopup.js","webpack://stremio/./src/routes/Player/NextVideoPopup/index.js","webpack://stremio/./src/routes/Player/OptionsMenu/Option/Option.js","webpack://stremio/./src/routes/Player/OptionsMenu/Option/index.js","webpack://stremio/./src/routes/Player/OptionsMenu/OptionsMenu.js","webpack://stremio/./src/routes/Player/OptionsMenu/index.js","webpack://stremio/./src/routes/Player/Player.js","webpack://stremio/./src/routes/Player/SpeedMenu/Option/Option.js","webpack://stremio/./src/routes/Player/SpeedMenu/Option/index.js","webpack://stremio/./src/routes/Player/SpeedMenu/SpeedMenu.js","webpack://stremio/./src/routes/Player/SpeedMenu/index.js","webpack://stremio/./src/routes/Player/StatisticsMenu/StatisticsMenu.js","webpack://stremio/./src/routes/Player/StatisticsMenu/index.js","webpack://stremio/./src/routes/Player/SubtitlesMenu/DiscreteSelectInput/DiscreteSelectInput.js","webpack://stremio/./src/routes/Player/SubtitlesMenu/DiscreteSelectInput/index.js","webpack://stremio/./src/routes/Player/SubtitlesMenu/SubtitlesMenu.js","webpack://stremio/./src/routes/Player/SubtitlesMenu/index.js","webpack://stremio/./src/routes/Player/Video/Video.js","webpack://stremio/./src/routes/Player/Video/index.js","webpack://stremio/./src/routes/Player/VideosMenu/VideosMenu.js","webpack://stremio/./src/routes/Player/VideosMenu/index.js","webpack://stremio/./src/routes/Player/index.js","webpack://stremio/./src/routes/Player/usePlayer.js","webpack://stremio/./src/routes/Player/useSettings.js","webpack://stremio/./src/routes/Search/Search.js","webpack://stremio/./src/routes/Search/index.js","webpack://stremio/./src/routes/Search/useSearch.js","webpack://stremio/./src/routes/Settings/Settings.js","webpack://stremio/./src/routes/Settings/index.js","webpack://stremio/./src/routes/Settings/useDataExport.js","webpack://stremio/./src/routes/Settings/useProfileSettingsInputs.js","webpack://stremio/./src/routes/Settings/useStreamingServerSettingsInputs.js","webpack://stremio/./src/routes/index.js","webpack://stremio/./src/services/Chromecast/Chromecast.js","webpack://stremio/./src/services/Chromecast/ChromecastTransport.js","webpack://stremio/./src/services/Chromecast/index.js","webpack://stremio/./src/services/Core/Core.js","webpack://stremio/./src/services/Core/CoreTransport.js","webpack://stremio/./src/services/Core/index.js","webpack://stremio/./src/services/DragAndDrop/DragAndDrop.js","webpack://stremio/./src/services/DragAndDrop/index.js","webpack://stremio/./src/services/KeyboardShortcuts/KeyboardShortcuts.js","webpack://stremio/./src/services/KeyboardShortcuts/index.js","webpack://stremio/./src/services/ServicesContext/ServicesContext.js","webpack://stremio/./src/services/ServicesContext/ServicesProvider.js","webpack://stremio/./src/services/ServicesContext/index.js","webpack://stremio/./src/services/ServicesContext/useServices.js","webpack://stremio/./src/services/Shell/Shell.js","webpack://stremio/./src/services/Shell/ShellTransport.js","webpack://stremio/./src/services/Shell/index.js","webpack://stremio/./src/services/index.js","webpack://stremio/./node_modules/base64-js/index.js","webpack://stremio/./node_modules/bep53-range/index.js","webpack://stremio/./node_modules/bowser/es5.js","webpack://stremio/./node_modules/buffer/index.js","webpack://stremio/./node_modules/classnames/index.js","webpack://stremio/./node_modules/color-name/index.js","webpack://stremio/./node_modules/color-string/index.js","webpack://stremio/./node_modules/color/index.js","webpack://stremio/./node_modules/color/node_modules/color-convert/conversions.js","webpack://stremio/./node_modules/color/node_modules/color-convert/index.js","webpack://stremio/./node_modules/color/node_modules/color-convert/route.js","webpack://stremio/./node_modules/color/node_modules/color-name/index.js","webpack://stremio/./node_modules/deep-freeze/index.js","webpack://stremio/./node_modules/eventemitter3/index.js","webpack://stremio/./node_modules/filter-invalid-dom-props/dist/index.js","webpack://stremio/./node_modules/hat/index.js","webpack://stremio/./node_modules/hls.js/dist/hls.js","webpack://stremio/./node_modules/html-attributes/lib/html-attributes.js","webpack://stremio/./node_modules/html-parse-stringify/dist/html-parse-stringify.module.js","webpack://stremio/./node_modules/i18next/dist/cjs/i18next.js","webpack://stremio/./node_modules/ieee754/index.js","webpack://stremio/./node_modules/langs/data.js","webpack://stremio/./node_modules/langs/index.js","webpack://stremio/./node_modules/lodash.clonedeep/index.js","webpack://stremio/./node_modules/lodash.debounce/index.js","webpack://stremio/./node_modules/lodash.intersection/index.js","webpack://stremio/./node_modules/lodash.isequal/index.js","webpack://stremio/./node_modules/lodash.throttle/index.js","webpack://stremio/./node_modules/magnet-uri/index.js","webpack://stremio/./src/App/ErrorDialog/styles.less?25dd","webpack://stremio/./src/App/styles.less?9ce8","webpack://stremio/./src/common/AddonDetailsModal/AddonDetails/styles.less?f79e","webpack://stremio/./src/common/AddonDetailsModal/styles.less?f22d","webpack://stremio/./src/common/Button/styles.less?2a90","webpack://stremio/./src/common/Checkbox/styles.less?49c3","webpack://stremio/./src/common/ColorInput/ColorPicker/styles.less?ef1d","webpack://stremio/./src/common/ColorInput/styles.less?69f4","webpack://stremio/./src/common/MainNavBars/styles.less?e516","webpack://stremio/./src/common/MetaItem/styles.less?8d6a","webpack://stremio/./src/common/MetaPreview/ActionButton/styles.less?d76d","webpack://stremio/./src/common/MetaPreview/MetaLinks/styles.less?29ed","webpack://stremio/./src/common/MetaPreview/MetaPreviewPlaceholder/styles.less?7a89","webpack://stremio/./src/common/MetaPreview/styles.less?b7a3","webpack://stremio/./src/common/MetaRow/MetaRowPlaceholder/styles.less?310a","webpack://stremio/./src/common/MetaRow/styles.less?656f","webpack://stremio/./src/common/ModalDialog/styles.less?eb5e","webpack://stremio/./src/common/Multiselect/styles.less?3966","webpack://stremio/./src/common/NavBar/HorizontalNavBar/NavMenu/styles.less?90d3","webpack://stremio/./src/common/NavBar/HorizontalNavBar/SearchBar/styles.less?3311","webpack://stremio/./src/common/NavBar/HorizontalNavBar/styles.less?9705","webpack://stremio/./src/common/NavBar/VerticalNavBar/NavTabButton/styles.less?fffe","webpack://stremio/./src/common/NavBar/VerticalNavBar/styles.less?caf7","webpack://stremio/./src/common/PaginationInput/styles.less?79d8","webpack://stremio/./src/common/PlayIconCircleCentered/styles.less?0775","webpack://stremio/./src/common/Popup/styles.less?e05d","webpack://stremio/./src/common/SearchBar/SearchBarPlaceholder/styles.less?319c","webpack://stremio/./src/common/SearchBar/styles.less?9119","webpack://stremio/./src/common/SharePrompt/styles.less?33e5","webpack://stremio/./src/common/Slider/styles.less?2b7e","webpack://stremio/./src/common/StreamingServerWarning/styles.less?c3dd","webpack://stremio/./src/common/TextInput/styles.less?76a5","webpack://stremio/./src/common/Toast/ToastItem/styles.less?a3fa","webpack://stremio/./src/routes/Addons/Addon/styles.less?580a","webpack://stremio/./src/routes/Addons/styles.less?fde0","webpack://stremio/./src/routes/Board/styles.less?4e44","webpack://stremio/./src/routes/Discover/styles.less?2bf5","webpack://stremio/./src/routes/Intro/ConsentCheckbox/styles.less?2228","webpack://stremio/./src/routes/Intro/PasswordResetModal/styles.less?416c","webpack://stremio/./src/routes/Intro/styles.less?122a","webpack://stremio/./src/routes/Library/styles.less?bfb1","webpack://stremio/./src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/styles.less?3a55","webpack://stremio/./src/routes/MetaDetails/StreamsList/Stream/styles.less?5d2a","webpack://stremio/./src/routes/MetaDetails/StreamsList/styles.less?3ed8","webpack://stremio/./src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/styles.less?531b","webpack://stremio/./src/routes/MetaDetails/VideosList/SeasonsBar/styles.less?cf13","webpack://stremio/./src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less?61e4","webpack://stremio/./src/routes/MetaDetails/VideosList/Video/styles.less?3f8d","webpack://stremio/./src/routes/MetaDetails/VideosList/styles.less?09e7","webpack://stremio/./src/routes/MetaDetails/styles.less?c020","webpack://stremio/./src/routes/NotFound/styles.less?3bba","webpack://stremio/./src/routes/Player/BufferingLoader/styles.less?a67d","webpack://stremio/./src/routes/Player/ControlBar/SeekBar/styles.less?d365","webpack://stremio/./src/routes/Player/ControlBar/VolumeSlider/styles.less?7c94","webpack://stremio/./src/routes/Player/ControlBar/styles.less?bcc2","webpack://stremio/./src/routes/Player/InfoMenu/styles.less?633e","webpack://stremio/./src/routes/Player/NextVideoPopup/styles.less?f520","webpack://stremio/./src/routes/Player/OptionsMenu/Option/styles.less?6112","webpack://stremio/./src/routes/Player/OptionsMenu/styles.less?7ed3","webpack://stremio/./src/routes/Player/SpeedMenu/Option/styles.less?cb17","webpack://stremio/./src/routes/Player/SpeedMenu/styles.less?acb6","webpack://stremio/./src/routes/Player/StatisticsMenu/styles.less?63ce","webpack://stremio/./src/routes/Player/SubtitlesMenu/DiscreteSelectInput/styles.less?50db","webpack://stremio/./src/routes/Player/SubtitlesMenu/styles.less?33d8","webpack://stremio/./src/routes/Player/Video/styles.less?27de","webpack://stremio/./src/routes/Player/VideosMenu/styles.less?eee4","webpack://stremio/./src/routes/Player/styles.less?bc66","webpack://stremio/./src/routes/Search/styles.less?134f","webpack://stremio/./src/routes/Settings/styles.less?fe51","webpack://stremio/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://stremio/./node_modules/prop-types/index.js","webpack://stremio/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://stremio/./node_modules/punycode/punycode.js","webpack://stremio/./node_modules/querystring/decode.js","webpack://stremio/./node_modules/querystring/encode.js","webpack://stremio/./node_modules/querystring/index.js","webpack://stremio/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://stremio/./node_modules/react-dom/client.js","webpack://stremio/./node_modules/react-dom/index.js","webpack://stremio/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/constants.js","webpack://stremio/./node_modules/use-callback-ref/dist/es2015/useMergeRef.js","webpack://stremio/./node_modules/use-callback-ref/dist/es2015/useRef.js","webpack://stremio/./node_modules/use-callback-ref/dist/es2015/assignRef.js","webpack://stremio/./node_modules/react-focus-lock/dist/es2015/FocusGuard.js","webpack://stremio/./node_modules/use-sidecar/node_modules/tslib/tslib.es6.js","webpack://stremio/./node_modules/use-sidecar/dist/es2015/medium.js","webpack://stremio/./node_modules/react-focus-lock/dist/es2015/medium.js","webpack://stremio/./node_modules/react-focus-lock/dist/es2015/Lock.js","webpack://stremio/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://stremio/./node_modules/react-clientside-effect/lib/index.es.js","webpack://stremio/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://stremio/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/utils/is.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/utils/correctFocus.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/utils/firstFocus.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/solver.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/utils/array.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/utils/tabOrder.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/utils/tabUtils.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/utils/tabbables.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/utils/DOMutils.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/utils/all-affected.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/utils/getActiveElement.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/utils/parenting.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/focusMerge.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/setFocus.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/index.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/focusIsHidden.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/focusInside.js","webpack://stremio/./node_modules/focus-lock/dist/es2015/focusables.js","webpack://stremio/./node_modules/react-focus-lock/dist/es2015/util.js","webpack://stremio/./node_modules/react-focus-lock/dist/es2015/Trap.js","webpack://stremio/./node_modules/react-focus-lock/dist/es2015/Combination.js","webpack://stremio/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://stremio/./node_modules/react-focus-lock/dist/es2015/index.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/I18nextProvider.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/Trans.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/TransWithoutContext.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/Translation.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/context.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/defaults.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/i18nInstance.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/index.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/initReactI18next.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/unescape.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/useSSR.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/useTranslation.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/utils.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/withSSR.js","webpack://stremio/./node_modules/react-i18next/dist/commonjs/withTranslation.js","webpack://stremio/./node_modules/react-is/cjs/react-is.production.min.js","webpack://stremio/./node_modules/react-is/index.js","webpack://stremio/./node_modules/react/cjs/react.production.min.js","webpack://stremio/./node_modules/react/index.js","webpack://stremio/./node_modules/regenerator-runtime/runtime.js","webpack://stremio/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://stremio/./node_modules/scheduler/index.js","webpack://stremio/./node_modules/simple-swizzle/index.js","webpack://stremio/./node_modules/simple-swizzle/node_modules/is-arrayish/index.js","webpack://stremio/./node_modules/spatial-navigation-polyfill/polyfill/spatial-navigation-polyfill.js","webpack://stremio/./node_modules/stremio-translations/index.js","webpack://stremio/./node_modules/thirty-two/lib/thirty-two/index.js","webpack://stremio/./node_modules/thirty-two/lib/thirty-two/thirty-two.js","webpack://stremio/./node_modules/url/url.js","webpack://stremio/./node_modules/url/util.js","webpack://stremio/./node_modules/use-long-press/index.js","webpack://stremio/./node_modules/void-elements/index.js","webpack://stremio/./node_modules/vtt.js/lib/index.js","webpack://stremio/./node_modules/vtt.js/lib/vtt.js","webpack://stremio/./node_modules/vtt.js/lib/vttcue-extended.js","webpack://stremio/./node_modules/vtt.js/lib/vttcue.js","webpack://stremio/./node_modules/vtt.js/lib/vttregion-extended.js","webpack://stremio/./node_modules/vtt.js/lib/vttregion.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/createClass.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/defineProperty.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/inherits.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/toArray.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/typeof.js","webpack://stremio/./node_modules/i18next/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://stremio/webpack/bootstrap","webpack://stremio/webpack/runtime/compat get default export","webpack://stremio/webpack/runtime/define property getters","webpack://stremio/webpack/runtime/global","webpack://stremio/webpack/runtime/hasOwnProperty shorthand","webpack://stremio/webpack/runtime/make namespace object","webpack://stremio/webpack/runtime/node module decorator","webpack://stremio/webpack/runtime/publicPath","webpack://stremio/./src/index.js"],"sourcesContent":["function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nfunction getId() {\n return Math.random().toString(32).slice(2);\n}\n\nfunction Bridge(scope, handler) {\n handler.addEventListener('message', /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(_ref) {\n var request, id, path, args, value, data, thisArg;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n request = _ref.data.request;\n\n if (request) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 3:\n id = request.id, path = request.path, args = request.args;\n _context.prev = 4;\n value = path.reduce(function (value, prop) {\n return value[prop];\n }, scope);\n\n if (!(typeof value === 'function')) {\n _context.next = 13;\n break;\n }\n\n thisArg = path.slice(0, path.length - 1).reduce(function (value, prop) {\n return value[prop];\n }, scope);\n _context.next = 10;\n return value.apply(thisArg, args);\n\n case 10:\n data = _context.sent;\n _context.next = 16;\n break;\n\n case 13:\n _context.next = 15;\n return value;\n\n case 15:\n data = _context.sent;\n\n case 16:\n handler.postMessage({\n response: {\n id: id,\n result: {\n data: data\n }\n }\n });\n _context.next = 22;\n break;\n\n case 19:\n _context.prev = 19;\n _context.t0 = _context[\"catch\"](4);\n handler.postMessage({\n response: {\n id: id,\n result: {\n error: _context.t0\n }\n }\n });\n\n case 22:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[4, 19]]);\n }));\n\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }());\n\n this.call = /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(path, args) {\n var id;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n id = getId();\n return _context2.abrupt(\"return\", new Promise(function (resolve, reject) {\n var onMessage = function onMessage(_ref4) {\n var response = _ref4.data.response;\n if (!response || response.id !== id) return;\n handler.removeEventListener('message', onMessage);\n\n if ('error' in response.result) {\n reject(response.result.error);\n } else {\n resolve(response.result.data);\n }\n };\n\n handler.addEventListener('message', onMessage);\n handler.postMessage({\n request: {\n id: id,\n path: path,\n args: args\n }\n });\n }));\n\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n}\n\nmodule.exports = Bridge;\n","var React = require('react');\nvar PropTypes = require('prop-types');\nvar icons = require('./icons.json');\n\nvar Icon = React.forwardRef(function(props, ref) {\n var icon = icons[props.icon];\n if (!icon) {\n return null;\n }\n\n return React.createElement('svg', Object.assign({ viewBox: icon.viewBox }, props, { ref: ref }),\n icon.paths.map(function(path, index) {\n return React.createElement('path', { key: index, d: path });\n })\n );\n});\n\nIcon.displayName = 'Icon';\nIcon.propTypes = {\n icon: PropTypes.oneOf(Object.keys(icons))\n};\n\nmodule.exports = Icon;\n","var Icon = require('./Icon');\n\nmodule.exports = Icon;\n","var EventEmitter = require('eventemitter3');\nvar ERROR = require('../error');\n\nfunction ChromecastSenderVideo(options) {\n options = options || {};\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var chromecastTransport = options.chromecastTransport;\n if (!chromecastTransport) {\n throw new Error('Chromecast transport required');\n }\n\n var device = chromecastTransport.getCastDevice();\n if (device === null) {\n throw new Error('Chromecast session must be started');\n }\n\n var deviceNameContainerElement = document.createElement('div');\n deviceNameContainerElement.style.display = 'flex';\n deviceNameContainerElement.style.flexDirection = 'row';\n deviceNameContainerElement.style.alignItems = 'center';\n deviceNameContainerElement.style.justifyContent = 'center';\n deviceNameContainerElement.style.width = '100%';\n deviceNameContainerElement.style.height = '100%';\n deviceNameContainerElement.style.backgroundColor = 'black';\n var deviceNameLabelElement = document.createElement('div');\n deviceNameLabelElement.style.flex = 'none';\n deviceNameLabelElement.style.maxWidth = '80%';\n deviceNameLabelElement.style.fontSize = '5vmin';\n deviceNameLabelElement.style.lineHeight = '1.2em';\n deviceNameLabelElement.style.maxHeight = '3.6em';\n deviceNameLabelElement.style.textAlign = 'center';\n deviceNameLabelElement.style.color = '#FFFFFF90';\n deviceNameLabelElement.innerText = 'Casting to ' + device.friendlyName;\n deviceNameContainerElement.appendChild(deviceNameLabelElement);\n containerElement.appendChild(deviceNameContainerElement);\n chromecastTransport.on('message', onMessage);\n chromecastTransport.on('message-error', onMessageReceivedError);\n\n var events = new EventEmitter();\n var destroyed = false;\n var observedProps = {\n stream: false,\n loaded: false,\n paused: false,\n time: false,\n duration: false,\n buffering: false,\n buffered: false,\n audioTracks: false,\n selectedAudioTrackId: false,\n subtitlesTracks: false,\n selectedSubtitlesTrackId: false,\n subtitlesOffset: false,\n subtitlesSize: false,\n subtitlesTextColor: false,\n subtitlesBackgroundColor: false,\n subtitlesOutlineColor: false,\n volume: false,\n muted: false,\n playbackSpeed: false,\n extraSubtitlesTracks: false,\n selectedExtraSubtitlesTrackId: false,\n extraSubtitlesDelay: false,\n extraSubtitlesSize: false,\n extraSubtitlesOffset: false,\n extraSubtitlesTextColor: false,\n extraSubtitlesBackgroundColor: false,\n extraSubtitlesOutlineColor: false\n };\n\n function onMessageSendError(error, action) {\n events.emit('error', Object.assign({}, ERROR.CHROMECAST_SENDER_VIDEO.MESSAGE_SEND_FAILED, {\n error: error,\n action: action\n }));\n }\n function onMessageReceivedError(error) {\n events.emit('error', Object.assign({}, ERROR.CHROMECAST_SENDER_VIDEO.INVALID_MESSAGE_RECEIVED, {\n error: error\n }));\n }\n function onMessage(message) {\n if (!message || typeof message.event !== 'string') {\n onMessageReceivedError(new Error('Invalid message: ' + message));\n return;\n }\n\n var args = Array.isArray(message.args) ? message.args : [];\n events.emit.apply(events, [message.event].concat(args));\n }\n function onPropChanged(propName, propValue) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, propValue);\n }\n }\n function observeProp(propName) {\n if (observedProps.hasOwnProperty(propName)) {\n observedProps[propName] = true;\n }\n }\n function command(commandName) {\n switch (commandName) {\n case 'destroy': {\n destroyed = true;\n onPropChanged('stream', null);\n onPropChanged('loaded', null);\n onPropChanged('paused', null);\n onPropChanged('time', null);\n onPropChanged('duration', null);\n onPropChanged('buffering', null);\n onPropChanged('buffered', null);\n onPropChanged('audioTracks', []);\n onPropChanged('selectedAudioTrackId', []);\n onPropChanged('subtitlesTracks', []);\n onPropChanged('selectedSubtitlesTrackId', null);\n onPropChanged('subtitlesOffset', null);\n onPropChanged('subtitlesSize', null);\n onPropChanged('subtitlesTextColor', null);\n onPropChanged('subtitlesBackgroundColor', null);\n onPropChanged('subtitlesOutlineColor', null);\n onPropChanged('volume', null);\n onPropChanged('muted', null);\n onPropChanged('playbackSpeed', null);\n onPropChanged('extraSubtitlesTracks', []);\n onPropChanged('selectedExtraSubtitlesTrackId', null);\n onPropChanged('extraSubtitlesDelay', null);\n onPropChanged('extraSubtitlesSize', null);\n onPropChanged('extraSubtitlesOffset', null);\n onPropChanged('extraSubtitlesTextColor', null);\n onPropChanged('extraSubtitlesBackgroundColor', null);\n onPropChanged('extraSubtitlesOutlineColor', null);\n events.removeAllListeners();\n chromecastTransport.off('message', onMessage);\n containerElement.removeChild(deviceNameContainerElement);\n break;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n chromecastTransport.sendMessage(action).catch(function(error) {\n onMessageSendError(error, action);\n });\n return;\n }\n case 'setProp': {\n chromecastTransport.sendMessage(action).catch(function(error) {\n onMessageSendError(error, action);\n });\n return;\n }\n case 'command': {\n command(action.commandName, action.commandArgs);\n chromecastTransport.sendMessage(action).catch(function(error) {\n onMessageSendError(error, action);\n });\n return;\n }\n }\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n}\n\nChromecastSenderVideo.canPlayStream = function() {\n return Promise.resolve(true);\n};\n\nChromecastSenderVideo.manifest = {\n name: 'ChromecastSenderVideo',\n external: true,\n props: ['stream', 'loaded', 'paused', 'time', 'duration', 'buffering', 'buffered', 'audioTracks', 'selectedAudioTrackId', 'subtitlesTracks', 'selectedSubtitlesTrackId', 'subtitlesOffset', 'subtitlesSize', 'subtitlesTextColor', 'subtitlesBackgroundColor', 'subtitlesOutlineColor', 'volume', 'muted', 'playbackSpeed', 'extraSubtitlesTracks', 'selectedExtraSubtitlesTrackId', 'extraSubtitlesDelay', 'extraSubtitlesSize', 'extraSubtitlesOffset', 'extraSubtitlesTextColor', 'extraSubtitlesBackgroundColor', 'extraSubtitlesOutlineColor'],\n commands: ['load', 'unload', 'destroy', 'addExtraSubtitlesTracks'],\n events: ['propValue', 'propChanged', 'ended', 'error', 'subtitlesTrackLoaded', 'audioTrackLoaded', 'extraSubtitlesTrackLoaded', 'implementationChanged']\n};\n\nmodule.exports = ChromecastSenderVideo;\n","var ChromecastSenderVideo = require('./ChromecastSenderVideo');\n\nmodule.exports = ChromecastSenderVideo;\n","var EventEmitter = require('eventemitter3');\nvar Hls = require('hls.js');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar Color = require('color');\nvar ERROR = require('../error');\nvar getContentType = require('./getContentType');\nvar HLS_CONFIG = require('./hlsConfig');\n\nfunction HTMLVideo(options) {\n options = options || {};\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var styleElement = document.createElement('style');\n containerElement.appendChild(styleElement);\n styleElement.sheet.insertRule('video::cue { font-size: 4vmin; color: rgb(255, 255, 255); background-color: rgba(0, 0, 0, 0); text-shadow: rgb(34, 34, 34) 1px 1px 0.1em; }');\n var videoElement = document.createElement('video');\n videoElement.style.width = '100%';\n videoElement.style.height = '100%';\n videoElement.style.backgroundColor = 'black';\n videoElement.controls = false;\n videoElement.onerror = function() {\n onVideoError();\n };\n videoElement.onended = function() {\n onEnded();\n };\n videoElement.onpause = function() {\n onPropChanged('paused');\n };\n videoElement.onplay = function() {\n onPropChanged('paused');\n };\n videoElement.ontimeupdate = function() {\n onPropChanged('time');\n onPropChanged('buffered');\n };\n videoElement.ondurationchange = function() {\n onPropChanged('duration');\n };\n videoElement.onwaiting = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onseeking = function() {\n onPropChanged('time');\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onseeked = function() {\n onPropChanged('time');\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onstalled = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onplaying = function() {\n onPropChanged('time');\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.oncanplay = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.canplaythrough = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onloadedmetadata = function() {\n onPropChanged('loaded');\n };\n videoElement.onloadeddata = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onvolumechange = function() {\n onPropChanged('volume');\n onPropChanged('muted');\n };\n videoElement.onratechange = function() {\n onPropChanged('playbackSpeed');\n };\n videoElement.textTracks.onchange = function() {\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onCueChange();\n Array.from(videoElement.textTracks).forEach(function(track) {\n track.oncuechange = onCueChange;\n });\n };\n containerElement.appendChild(videoElement);\n\n var hls = null;\n var events = new EventEmitter();\n var destroyed = false;\n var stream = null;\n var subtitlesOffset = 0;\n var observedProps = {\n stream: false,\n loaded: false,\n paused: false,\n time: false,\n duration: false,\n buffering: false,\n buffered: false,\n subtitlesTracks: false,\n selectedSubtitlesTrackId: false,\n subtitlesOffset: false,\n subtitlesSize: false,\n subtitlesTextColor: false,\n subtitlesBackgroundColor: false,\n subtitlesOutlineColor: false,\n audioTracks: false,\n selectedAudioTrackId: false,\n volume: false,\n muted: false,\n playbackSpeed: false\n };\n\n function getProp(propName) {\n switch (propName) {\n case 'stream': {\n return stream;\n }\n case 'loaded': {\n if (stream === null) {\n return null;\n }\n\n return videoElement.readyState >= videoElement.HAVE_METADATA;\n }\n case 'paused': {\n if (stream === null) {\n return null;\n }\n\n return !!videoElement.paused;\n }\n case 'time': {\n if (stream === null || videoElement.currentTime === null || !isFinite(videoElement.currentTime)) {\n return null;\n }\n\n return Math.floor(videoElement.currentTime * 1000);\n }\n case 'duration': {\n if (stream === null || videoElement.duration === null || !isFinite(videoElement.duration)) {\n return null;\n }\n\n return Math.floor(videoElement.duration * 1000);\n }\n case 'buffering': {\n if (stream === null) {\n return null;\n }\n\n return videoElement.readyState < videoElement.HAVE_FUTURE_DATA;\n }\n case 'buffered': {\n if (stream === null) {\n return null;\n }\n\n var time = videoElement.currentTime !== null && isFinite(videoElement.currentTime) ? videoElement.currentTime : 0;\n for (var i = 0; i < videoElement.buffered.length; i++) {\n if (videoElement.buffered.start(i) <= time && time <= videoElement.buffered.end(i)) {\n return Math.floor(videoElement.buffered.end(i) * 1000);\n }\n }\n\n return Math.floor(time * 1000);\n }\n case 'subtitlesTracks': {\n if (stream === null) {\n return [];\n }\n\n return Array.from(videoElement.textTracks)\n .map(function(track, index) {\n return Object.freeze({\n id: 'EMBEDDED_' + String(index),\n lang: track.language,\n label: track.label,\n origin: 'EMBEDDED',\n embedded: true\n });\n });\n }\n case 'selectedSubtitlesTrackId': {\n if (stream === null) {\n return null;\n }\n\n return Array.from(videoElement.textTracks)\n .reduce(function(result, track, index) {\n if (result === null && track.mode === 'showing') {\n return 'EMBEDDED_' + String(index);\n }\n\n return result;\n }, null);\n }\n case 'subtitlesOffset': {\n if (destroyed) {\n return null;\n }\n\n return subtitlesOffset;\n }\n case 'subtitlesSize': {\n if (destroyed) {\n return null;\n }\n\n return parseInt(styleElement.sheet.cssRules[0].style.fontSize, 10) * 25;\n }\n case 'subtitlesTextColor': {\n if (destroyed) {\n return null;\n }\n\n return styleElement.sheet.cssRules[0].style.color;\n }\n case 'subtitlesBackgroundColor': {\n if (destroyed) {\n return null;\n }\n\n return styleElement.sheet.cssRules[0].style.backgroundColor;\n }\n case 'subtitlesOutlineColor': {\n if (destroyed) {\n return null;\n }\n\n return styleElement.sheet.cssRules[0].style.textShadow.slice(0, styleElement.sheet.cssRules[0].style.textShadow.indexOf(')') + 1);\n }\n case 'audioTracks': {\n if (hls === null || !Array.isArray(hls.audioTracks)) {\n return [];\n }\n\n return hls.audioTracks\n .map(function(track) {\n return Object.freeze({\n id: 'EMBEDDED_' + String(track.id),\n lang: typeof track.lang === 'string' && track.lang.length > 0 ?\n track.lang\n :\n typeof track.name === 'string' && track.name.length > 0 ?\n track.name\n :\n String(track.id),\n label: typeof track.name === 'string' && track.name.length > 0 ?\n track.name\n :\n typeof track.lang === 'string' && track.lang.length > 0 ?\n track.lang\n :\n String(track.id),\n origin: 'EMBEDDED',\n embedded: true\n });\n });\n }\n case 'selectedAudioTrackId': {\n if (hls === null || hls.audioTrack === null || !isFinite(hls.audioTrack) || hls.audioTrack === -1) {\n return null;\n }\n\n return 'EMBEDDED_' + String(hls.audioTrack);\n }\n case 'volume': {\n if (destroyed || videoElement.volume === null || !isFinite(videoElement.volume)) {\n return null;\n }\n\n return Math.floor(videoElement.volume * 100);\n }\n case 'muted': {\n if (destroyed) {\n return null;\n }\n\n return !!videoElement.muted;\n }\n case 'playbackSpeed': {\n if (destroyed || videoElement.playbackRate === null || !isFinite(videoElement.playbackRate)) {\n return null;\n }\n\n return videoElement.playbackRate;\n }\n default: {\n return null;\n }\n }\n }\n function onCueChange() {\n Array.from(videoElement.textTracks).forEach(function(track) {\n Array.from(track.cues || []).forEach(function(cue) {\n cue.snapToLines = false;\n cue.line = 100 - subtitlesOffset;\n });\n });\n }\n function onVideoError() {\n if (destroyed) {\n return;\n }\n\n var error;\n switch (videoElement.error.code) {\n case 1: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_ABORTED;\n break;\n }\n case 2: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_NETWORK;\n break;\n }\n case 3: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_DECODE;\n break;\n }\n case 4: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_SRC_NOT_SUPPORTED;\n break;\n }\n default: {\n error = ERROR.UNKNOWN_ERROR;\n }\n }\n onError(Object.assign({}, error, {\n critical: true,\n error: videoElement.error\n }));\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onEnded() {\n events.emit('ended');\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName));\n }\n }\n function observeProp(propName) {\n if (observedProps.hasOwnProperty(propName)) {\n events.emit('propValue', propName, getProp(propName));\n observedProps[propName] = true;\n }\n }\n function setProp(propName, propValue) {\n switch (propName) {\n case 'paused': {\n if (stream !== null) {\n propValue ? videoElement.pause() : videoElement.play();\n onPropChanged('paused');\n }\n\n break;\n }\n case 'time': {\n if (stream !== null && propValue !== null && isFinite(propValue)) {\n videoElement.currentTime = parseInt(propValue, 10) / 1000;\n onPropChanged('time');\n }\n\n break;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream !== null) {\n Array.from(videoElement.textTracks)\n .forEach(function(track, index) {\n track.mode = 'EMBEDDED_' + String(index) === propValue ? 'showing' : 'disabled';\n });\n var selecterdSubtitlesTrack = getProp('subtitlesTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n if (selecterdSubtitlesTrack) {\n onPropChanged('selectedSubtitlesTrackId');\n events.emit('subtitlesTrackLoaded', selecterdSubtitlesTrack);\n }\n }\n\n break;\n }\n case 'subtitlesOffset': {\n if (propValue !== null && isFinite(propValue)) {\n subtitlesOffset = Math.max(0, Math.min(100, parseInt(propValue, 10)));\n onCueChange();\n onPropChanged('subtitlesOffset');\n }\n\n break;\n }\n case 'subtitlesSize': {\n if (propValue !== null && isFinite(propValue)) {\n styleElement.sheet.cssRules[0].style.fontSize = Math.floor(Math.max(0, parseInt(propValue, 10)) / 25) + 'vmin';\n onPropChanged('subtitlesSize');\n }\n\n break;\n }\n case 'subtitlesTextColor': {\n if (typeof propValue === 'string') {\n try {\n styleElement.sheet.cssRules[0].style.color = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('HTMLVideo', error);\n }\n\n onPropChanged('subtitlesTextColor');\n }\n\n break;\n }\n case 'subtitlesBackgroundColor': {\n if (typeof propValue === 'string') {\n try {\n styleElement.sheet.cssRules[0].style.backgroundColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('HTMLVideo', error);\n }\n\n onPropChanged('subtitlesBackgroundColor');\n }\n\n break;\n }\n case 'subtitlesOutlineColor': {\n if (typeof propValue === 'string') {\n try {\n styleElement.sheet.cssRules[0].style.textShadow = Color(propValue).rgb().string() + ' 1px 1px 0.1em';\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('HTMLVideo', error);\n }\n\n onPropChanged('subtitlesOutlineColor');\n }\n\n break;\n }\n case 'selectedAudioTrackId': {\n if (hls !== null) {\n var selecterdAudioTrack = getProp('audioTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n hls.audioTrack = selecterdAudioTrack ? parseInt(selecterdAudioTrack.id.split('_').pop(), 10) : -1;\n if (selecterdAudioTrack) {\n onPropChanged('selectedAudioTrackId');\n events.emit('audioTrackLoaded', selecterdAudioTrack);\n }\n }\n\n break;\n }\n case 'volume': {\n if (propValue !== null && isFinite(propValue)) {\n videoElement.muted = false;\n videoElement.volume = Math.max(0, Math.min(100, parseInt(propValue, 10))) / 100;\n onPropChanged('muted');\n onPropChanged('volume');\n }\n\n break;\n }\n case 'muted': {\n videoElement.muted = !!propValue;\n onPropChanged('muted');\n break;\n }\n case 'playbackSpeed': {\n if (propValue !== null && isFinite(propValue)) {\n videoElement.playbackRate = parseFloat(propValue);\n onPropChanged('playbackSpeed');\n }\n\n break;\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n command('unload');\n if (commandArgs && commandArgs.stream && typeof commandArgs.stream.url === 'string') {\n stream = commandArgs.stream;\n onPropChanged('stream');\n onPropChanged('loaded');\n videoElement.autoplay = typeof commandArgs.autoplay === 'boolean' ? commandArgs.autoplay : true;\n videoElement.currentTime = commandArgs.time !== null && isFinite(commandArgs.time) ? parseInt(commandArgs.time, 10) / 1000 : 0;\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('buffered');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n getContentType(stream)\n .then(function(contentType) {\n if (stream !== commandArgs.stream) {\n return;\n }\n\n if (contentType === 'application/vnd.apple.mpegurl' && Hls.isSupported()) {\n hls = new Hls(HLS_CONFIG);\n hls.on(Hls.Events.AUDIO_TRACKS_UPDATED, function() {\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n });\n hls.on(Hls.Events.AUDIO_TRACK_SWITCHED, function() {\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n });\n hls.loadSource(stream.url);\n hls.attachMedia(videoElement);\n } else {\n videoElement.src = stream.url;\n }\n })\n .catch(function() {\n if (stream !== commandArgs.stream) {\n return;\n }\n\n videoElement.src = stream.url;\n });\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null\n }));\n }\n break;\n }\n case 'unload': {\n stream = null;\n Array.from(videoElement.textTracks).forEach(function(track) {\n track.oncuechange = null;\n });\n if (hls !== null) {\n hls.removeAllListeners();\n hls.detachMedia(videoElement);\n hls.destroy();\n hls = null;\n }\n videoElement.removeAttribute('src');\n videoElement.load();\n videoElement.currentTime = 0;\n onPropChanged('stream');\n onPropChanged('loaded');\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('buffered');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n break;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n onPropChanged('subtitlesOffset');\n onPropChanged('subtitlesSize');\n onPropChanged('subtitlesTextColor');\n onPropChanged('subtitlesBackgroundColor');\n onPropChanged('subtitlesOutlineColor');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('playbackSpeed');\n events.removeAllListeners();\n videoElement.onerror = null;\n videoElement.onended = null;\n videoElement.onpause = null;\n videoElement.onplay = null;\n videoElement.ontimeupdate = null;\n videoElement.ondurationchange = null;\n videoElement.onwaiting = null;\n videoElement.onseeking = null;\n videoElement.onseeked = null;\n videoElement.onstalled = null;\n videoElement.onplaying = null;\n videoElement.oncanplay = null;\n videoElement.canplaythrough = null;\n videoElement.onloadeddata = null;\n videoElement.onvolumechange = null;\n videoElement.onratechange = null;\n videoElement.textTracks.onchange = null;\n containerElement.removeChild(videoElement);\n containerElement.removeChild(styleElement);\n break;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n return;\n }\n case 'setProp': {\n setProp(action.propName, action.propValue);\n return;\n }\n case 'command': {\n command(action.commandName, action.commandArgs);\n return;\n }\n }\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n}\n\nHTMLVideo.canPlayStream = function(stream) {\n if (!stream || (stream.behaviorHints && stream.behaviorHints.notWebReady)) {\n return Promise.resolve(false);\n }\n\n return getContentType(stream)\n .then(function(contentType) {\n var video = document.createElement('video');\n return !!video.canPlayType(contentType) || (contentType === 'application/vnd.apple.mpegurl' && Hls.isSupported());\n })\n .catch(function() {\n return false;\n });\n};\n\nHTMLVideo.manifest = {\n name: 'HTMLVideo',\n external: false,\n props: ['stream', 'loaded', 'paused', 'time', 'duration', 'buffering', 'buffered', 'audioTracks', 'selectedAudioTrackId', 'subtitlesTracks', 'selectedSubtitlesTrackId', 'subtitlesOffset', 'subtitlesSize', 'subtitlesTextColor', 'subtitlesBackgroundColor', 'subtitlesOutlineColor', 'volume', 'muted', 'playbackSpeed'],\n commands: ['load', 'unload', 'destroy'],\n events: ['propValue', 'propChanged', 'ended', 'error', 'subtitlesTrackLoaded', 'audioTrackLoaded']\n};\n\nmodule.exports = HTMLVideo;\n","function getContentType(stream) {\n if (!stream || typeof stream.url !== 'string') {\n return Promise.reject(new Error('Invalid stream parameter!'));\n }\n\n if (stream.behaviorHints && stream.behaviorHints.proxyHeaders && stream.behaviorHints.proxyHeaders.response && typeof stream.behaviorHints.proxyHeaders.response['content-type'] === 'string') {\n return Promise.resolve(stream.behaviorHints.proxyHeaders.response['content-type']);\n }\n\n return fetch(stream.url, { method: 'HEAD' })\n .then(function(resp) {\n if (resp.ok) {\n return resp.headers.get('content-type');\n }\n\n throw new Error(resp.status + ' (' + resp.statusText + ')');\n });\n}\n\nmodule.exports = getContentType;\n","module.exports = {\n debug: false,\n enableWorker: true,\n lowLatencyMode: false,\n backBufferLength: 30,\n maxBufferLength: 50,\n maxMaxBufferLength: 80,\n maxFragLookUpTolerance: 0,\n maxBufferHole: 0,\n appendErrorMaxRetry: 20,\n nudgeMaxRetry: 20,\n manifestLoadingTimeOut: 30000,\n manifestLoadingMaxRetry: 10,\n // liveDurationInfinity: false\n};\n","var HTMLVideo = require('./HTMLVideo');\n\nmodule.exports = HTMLVideo;\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar ERROR = require('../error');\n\nfunction IFrameVideo(options) {\n options = options || {};\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var iframeElement = document.createElement('iframe');\n iframeElement.style.width = '100%';\n iframeElement.style.height = '100%';\n iframeElement.style.border = 0;\n iframeElement.style.backgroundColor = 'black';\n iframeElement.allowFullscreen = false;\n iframeElement.allow = 'autoplay';\n containerElement.appendChild(iframeElement);\n\n var events = new EventEmitter();\n var destroyed = false;\n var observedProps = {\n stream: false,\n loaded: false,\n paused: false,\n time: false,\n duration: false,\n buffering: false,\n buffered: false,\n volume: false,\n muted: false,\n playbackSpeed: false\n };\n\n function onMessage(event) {\n if (event.source !== iframeElement.contentWindow) {\n return;\n }\n\n var data = event.data || event.message;\n if (!data || typeof data.event !== 'string') {\n return;\n }\n\n var eventName = data.event;\n var args = Array.isArray(data.args) ? data.args : [];\n events.emit.apply(events, [eventName].concat(args));\n }\n function sendMessage(action) {\n iframeElement.contentWindow.postMessage(action, '*');\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onPropChanged(propName, propValue) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, propValue);\n }\n }\n function observeProp(propName) {\n if (observedProps.hasOwnProperty(propName)) {\n observedProps[propName] = true;\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n command('unload');\n if (commandArgs && commandArgs.stream && typeof commandArgs.stream.playerFrameUrl === 'string') {\n window.addEventListener('message', onMessage, false);\n iframeElement.onload = function() {\n sendMessage({\n type: 'command',\n commandName: commandName,\n commandArgs: commandArgs\n });\n };\n iframeElement.src = commandArgs.stream.playerFrameUrl;\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null\n }));\n }\n\n return true;\n }\n case 'unload': {\n window.removeEventListener('message', onMessage);\n iframeElement.onload = null;\n iframeElement.removeAttribute('src');\n onPropChanged('stream', null);\n onPropChanged('loaded', null);\n onPropChanged('paused', null);\n onPropChanged('time', null);\n onPropChanged('duration', null);\n onPropChanged('buffering', null);\n onPropChanged('buffered', null);\n onPropChanged('volume', null);\n onPropChanged('muted', null);\n onPropChanged('playbackSpeed', null);\n return true;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n events.removeAllListeners();\n containerElement.removeChild(iframeElement);\n return true;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n sendMessage(action);\n return;\n }\n case 'setProp': {\n sendMessage(action);\n return;\n }\n case 'command': {\n if (!command(action.commandName, action.commandArgs)) {\n sendMessage(action);\n }\n\n return;\n }\n }\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n}\n\nIFrameVideo.canPlayStream = function(stream) {\n return Promise.resolve(stream && typeof stream.playerFrameUrl === 'string');\n};\n\nIFrameVideo.manifest = {\n name: 'IFrameVideo',\n external: true,\n props: ['stream', 'loaded', 'paused', 'time', 'duration', 'buffering', 'buffered', 'audioTracks', 'selectedAudioTrackId', 'subtitlesTracks', 'selectedSubtitlesTrackId', 'subtitlesOffset', 'subtitlesSize', 'subtitlesTextColor', 'subtitlesBackgroundColor', 'subtitlesOutlineColor', 'volume', 'muted', 'playbackSpeed', 'extraSubtitlesTracks', 'selectedExtraSubtitlesTrackId', 'extraSubtitlesDelay', 'extraSubtitlesSize', 'extraSubtitlesOffset', 'extraSubtitlesTextColor', 'extraSubtitlesBackgroundColor', 'extraSubtitlesOutlineColor'],\n commands: ['load', 'unload', 'destroy', 'addExtraSubtitlesTracks'],\n events: ['propValue', 'propChanged', 'ended', 'error', 'subtitlesTrackLoaded', 'audioTrackLoaded', 'extraSubtitlesTrackLoaded', 'implementationChanged']\n};\n\nmodule.exports = IFrameVideo;\n","var IFrameVideo = require('./IFrameVideo');\n\nmodule.exports = IFrameVideo;\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar ERROR = require('../error');\n\nvar SUBS_SCALE_FACTOR = 0.0066;\n\nvar stremioToMPVProps = {\n 'stream': null,\n 'paused': 'pause',\n 'time': 'time-pos',\n 'duration': 'duration',\n 'buffering': 'buffering',\n 'volume': 'volume',\n 'muted': 'mute',\n 'playbackSpeed': 'speed',\n 'audioTracks': 'audioTracks',\n 'selectedAudioTrackId': 'aid',\n 'subtitlesTracks': 'subtitlesTracks',\n 'selectedSubtitlesTrackId': 'sid',\n 'subtitlesSize': 'sub-scale',\n 'subtitlesTextColor': 'sub-color',\n 'subtitlesBackgroundColor': 'sub-back-color',\n 'subtitlesOutlineColor': 'sub-border-color',\n};\n\nfunction ShellVideo(options) {\n options = options || {};\n\n var ipc = options.shellTransport;\n\n var stremioProps = {};\n Object.keys(stremioToMPVProps).forEach(function(key) {\n if(stremioToMPVProps[key]) {\n stremioProps[stremioToMPVProps[key]] = key;\n }\n });\n\n ipc.send('mpv-command', ['stop']);\n ipc.send('mpv-observe-prop', 'path');\n\n ipc.send('mpv-observe-prop', 'time-pos');\n ipc.send('mpv-observe-prop', 'volume');\n ipc.send('mpv-observe-prop', 'pause');\n ipc.send('mpv-observe-prop', 'seeking');\n ipc.send('mpv-observe-prop', 'eof-reached');\n\n ipc.send('mpv-observe-prop', 'duration');\n ipc.send('mpv-observe-prop', 'metadata');\n ipc.send('mpv-observe-prop', 'video-params'); // video width/height\n ipc.send('mpv-observe-prop', 'track-list');\n\n ipc.send('mpv-observe-prop', 'paused-for-cache');\n ipc.send('mpv-observe-prop', 'cache-buffering-state');\n\n ipc.send('mpv-observe-prop', 'aid');\n ipc.send('mpv-observe-prop', 'vid');\n ipc.send('mpv-observe-prop', 'sid');\n ipc.send('mpv-observe-prop', 'sub-scale');\n ipc.send('mpv-observe-prop', 'sub-pos');\n ipc.send('mpv-observe-prop', 'speed');\n\n ipc.send('mpv-observe-prop', 'mpv-version');\n ipc.send('mpv-observe-prop', 'ffmpeg-version');\n\n var events = new EventEmitter();\n var destroyed = false;\n var stream = null;\n // var selectedSubtitlesTrackId = null;\n var observedProps = {};\n var continueFrom = 0;\n\n var avgDuration = 0;\n var minClipDuration = 30;\n var props = { };\n\n function setBackground(visible) {\n // This is a bit of a hack but there is no better way so far\n var bg = visible ? '' : 'transparent';\n for(var container = options.containerElement; container; container = container.parentElement) {\n container.style.background = bg;\n }\n }\n function logProp(args) {\n // eslint-disable-next-line no-console\n console.log(args.name+': '+args.data);\n }\n function embeddedProp(args) {\n return args.data ? 'EMBEDDED_' + args.data.toString() : null;\n }\n\n var last_time = 0;\n ipc.on('mpv-prop-change', function(args) {\n switch (args.name) {\n case 'mpv-version':\n case 'ffmpeg-version': {\n props[args.name] = logProp(args);\n break;\n }\n case 'duration': {\n var intDuration = args.data | 0;\n // Accumulate average duration over time. if it is greater than minClipDuration\n // and equal to the currently reported duration, it is returned as video length.\n // If the reported duration changes over time the average duration is always\n // smaller than the currently reported one so we set the video length to 0 as\n // this is a live stream.\n props[args.name] = args.data >= minClipDuration && (!avgDuration || intDuration === avgDuration) ? Math.round(args.data * 1000) : null;\n // The average duration is calculated using right bit shifting by one of the sum of\n // the previous average and the currently reported value. This method is not very precise\n // as we get integer value but we avoid floating point errors. JS uses 32 bit values\n // for bitwise maths so the maximum supported video duration is 1073741823 (2 ^ 30 - 1)\n // which is around 34 years of playback time.\n avgDuration = avgDuration ? (avgDuration + intDuration) >> 1 : intDuration;\n break;\n }\n case 'time-pos': {\n props[args.name] = Math.round(args.data*1000);\n if(continueFrom) {\n ipc.send('mpv-set-prop', ['time-pos', continueFrom]);\n props[args.name] = Math.round(continueFrom);\n continueFrom = 0;\n }\n break;\n }\n case 'sub-scale': {\n props[args.name] = Math.round(args.data / SUBS_SCALE_FACTOR);\n break;\n }\n case 'paused-for-cache':\n case 'seeking':\n {\n if(props.buffering !== args.data) {\n props.buffering = args.data;\n onPropChanged('buffering');\n }\n break;\n }\n case 'aid':\n case 'sid':\n case 'vid': {\n props[args.name] = embeddedProp(args);\n break;\n }\n // In that case onPropChanged() is manually invoked as track-list contains all\n // the tracks but we have different event for each track type\n case 'track-list': {\n props.audioTracks = args.data.filter(function(x) { return x.type === 'audio'; })\n .map(function(x, index) {\n return {\n id: 'EMBEDDED_' + x.id,\n lang: x.lang === undefined ? 'Track' + (index + 1) : x.lang,\n label: x.title === undefined || x.lang === undefined ? '' : x.title || x.lang,\n origin: 'EMBEDDED',\n embedded: true,\n mode: x.id === props.aid ? 'showing' : 'disabled',\n };\n });\n onPropChanged('audioTracks');\n\n props.subtitlesTracks = args.data\n .filter(function(x) { return x.type === 'sub'; })\n .map(function(x, index) {\n return {\n id: 'EMBEDDED_' + x.id,\n lang: x.lang === undefined ? 'Track ' + (index + 1) : x.lang,\n label: x.title === undefined || x.lang === undefined ? '' : x.title || x.lang,\n origin: 'EMBEDDED',\n embedded: true,\n mode: x.id === props.sid ? 'showing' : 'disabled',\n };\n });\n onPropChanged('subtitlesTracks');\n break;\n }\n default: {\n props[args.name] = args.data;\n break;\n }\n }\n\n // Cap time update to update only when a second passes\n var current_time = args.name === 'time-pos' ? Math.floor(props['time-pos'] / 1000) : null;\n if((!current_time || last_time !== current_time)&& stremioProps[args.name]) {\n if(current_time) {\n last_time = current_time;\n }\n onPropChanged(stremioProps[args.name]);\n }\n });\n ipc.on('mpv-event-ended', function(args) {\n if (args.error) onError(args.error);\n else onEnded();\n });\n\n function getProp(propName) {\n if(stremioToMPVProps[propName]) return props[stremioToMPVProps[propName]];\n // eslint-disable-next-line no-console\n console.log('Unsupported prop requested', propName);\n return null;\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onEnded() {\n events.emit('ended');\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName));\n }\n }\n function observeProp(propName) {\n events.emit('propValue', propName, getProp(propName));\n observedProps[propName] = true;\n }\n function setProp(propName, propValue) {\n switch (propName) {\n case 'paused': {\n if (stream !== null) {\n ipc.send('mpv-set-prop', ['pause', propValue]);\n }\n\n break;\n }\n case 'time': {\n if (stream !== null && propValue !== null && isFinite(propValue)) {\n ipc.send('mpv-set-prop', ['time-pos', propValue/1000]);\n }\n\n break;\n }\n case 'playbackSpeed': {\n if (stream !== null && propValue !== null && isFinite(propValue)) {\n ipc.send('mpv-set-prop', ['speed', propValue]);\n }\n break;\n }\n case 'volume': {\n if (stream !== null && propValue !== null && isFinite(propValue)) {\n props.mute = false;\n ipc.send('mpv-set-prop', ['mute', 'no']);\n ipc.send('mpv-set-prop', ['volume', propValue]);\n onPropChanged('muted');\n onPropChanged('volume');\n }\n break;\n }\n case 'muted': {\n if (stream !== null) {\n ipc.send('mpv-set-prop', ['mute', propValue ? 'yes' : 'no']);\n props.mute = propValue;\n onPropChanged('muted');\n }\n break;\n }\n case 'selectedAudioTrackId': {\n if (stream !== null) {\n var actualId = propValue.slice('EMBEDDED_'.length);\n ipc.send('mpv-set-prop', ['aid', actualId]);\n }\n break;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream !== null) {\n if(propValue) {\n var actualId = propValue.slice('EMBEDDED_'.length);\n ipc.send('mpv-set-prop', ['sid', actualId]);\n events.emit('subtitlesTrackLoaded', propValue);\n } else {\n // turn off subs\n ipc.send('mpv-set-prop', ['sid', 'no']);\n props.sid = null;\n }\n }\n onPropChanged('selectedSubtitlesTrackId');\n break;\n }\n case 'subtitlesSize': {\n ipc.send('mpv-set-prop', [stremioToMPVProps[propName], propValue * SUBS_SCALE_FACTOR]);\n break;\n }\n case 'subtitlesOffset': {\n ipc.send('mpv-set-prop', [stremioToMPVProps[propName], propValue]);\n break;\n }\n case 'subtitlesTextColor':\n case 'subtitlesBackgroundColor':\n case 'subtitlesOutlineColor':\n {\n // MPV accepts color in #AARRGGBB\n var argb = propValue.replace(/^#(\\w{6})(\\w{2})$/, '#$2$1');\n ipc.send('mpv-set-prop', [stremioToMPVProps[propName], argb]);\n break;\n }\n default: {\n // eslint-disable-next-line no-console\n console.log('Unhandled setProp for', propName);\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n command('unload');\n if (commandArgs && commandArgs.stream && typeof commandArgs.stream.url === 'string') {\n stream = commandArgs.stream;\n onPropChanged('stream');\n continueFrom = commandArgs.time !== null && isFinite(commandArgs.time) ? parseInt(commandArgs.time, 10) / 1000 : 0;\n\n setBackground(false);\n\n ipc.send('mpv-set-prop', ['no-sub-ass']);\n\n // opengl-cb is an alias for the new name \"libmpv\", as shown in mpv's video/out/vo.c aliases\n // opengl is an alias for the new name \"gpu\"\n // When on Windows we use d3d for the rendering in separate window\n var windowRenderer = navigator.platform === 'Win32' ? 'direct3d' : 'opengl';\n var videoOutput = options.mpvSeparateWindow ? windowRenderer : 'opengl-cb';\n var separateWindow = options.mpvSeparateWindow ? 'yes' : 'no';\n ipc.send('mpv-set-prop', ['vo', videoOutput]);\n ipc.send('mpv-set-prop', ['osc', separateWindow]);\n ipc.send('mpv-set-prop', ['input-defalt-bindings', separateWindow]);\n ipc.send('mpv-set-prop', ['input-vo-keyboard', separateWindow]);\n\n ipc.send('mpv-command', ['loadfile', stream.url]);\n ipc.send('mpv-set-prop', ['pause', false]);\n ipc.send('mpv-set-prop', ['speed', props.speed]);\n ipc.send('mpv-set-prop', ['aid', props.aid]);\n ipc.send('mpv-set-prop', ['mute', 'no']);\n\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null\n }));\n }\n\n break;\n }\n case 'unload': {\n props = {\n mute: false,\n speed: 1,\n subtitlesTracks: [],\n buffering: true,\n aid: null,\n sid: null,\n };\n continueFrom = 0;\n avgDuration = 0;\n ipc.send('mpv-command', ['stop']);\n onPropChanged('stream');\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n setBackground(true);\n break;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n events.removeAllListeners();\n break;\n }\n }\n }\n\n this.on = function (eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function (action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n break;\n }\n case 'setProp': {\n setProp(action.propName, action.propValue);\n return;\n }\n case 'command': {\n command(\n action.commandName,\n action.commandArgs\n );\n return;\n }\n }\n }\n };\n}\nShellVideo.canPlayStream = function() {\n return Promise.resolve(true);\n};\n\nShellVideo.manifest = {\n name: 'ShellVideo',\n external: false,\n props: Object.keys(stremioToMPVProps),\n commands: ['load', 'unload', 'destroy'],\n events: [\n 'propValue',\n 'propChanged',\n 'ended',\n 'error',\n 'subtitlesTrackLoaded',\n ],\n};\n\nmodule.exports = ShellVideo;\n","var ShellVideo = require('./ShellVideo');\n\nmodule.exports = ShellVideo;\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar selectVideoImplementation = require('./selectVideoImplementation');\nvar ERROR = require('../error');\n\nfunction StremioVideo() {\n var video = null;\n var events = new EventEmitter();\n var destroyed = false;\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action, options) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n options = options || {};\n if (action.type === 'command' && action.commandName === 'load' && action.commandArgs) {\n var Video = selectVideoImplementation(action.commandArgs, options);\n if (video !== null && video.constructor !== Video) {\n video.dispatch({ type: 'command', commandName: 'destroy' });\n video = null;\n }\n if (video === null) {\n if (Video === null) {\n events.emit('error', Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n error: new Error('No video implementation was selected'),\n critical: true,\n stream: action.commandArgs.stream\n }));\n return;\n }\n\n video = new Video(options);\n video.on('ended', function() {\n events.emit('ended');\n });\n video.on('error', function(args) {\n events.emit('error', args);\n });\n video.on('propValue', function(propName, propValue) {\n events.emit('propValue', propName, propValue);\n });\n video.on('propChanged', function(propName, propValue) {\n events.emit('propChanged', propName, propValue);\n });\n video.on('subtitlesTrackLoaded', function(track) {\n events.emit('subtitlesTrackLoaded', track);\n });\n video.on('audioTrackLoaded', function(track) {\n events.emit('audioTrackLoaded', track);\n });\n video.on('extraSubtitlesTrackLoaded', function(track) {\n events.emit('extraSubtitlesTrackLoaded', track);\n });\n if (Video.manifest.external) {\n video.on('implementationChanged', function(manifest) {\n events.emit('implementationChanged', manifest);\n });\n } else {\n events.emit('implementationChanged', Video.manifest);\n }\n }\n }\n\n if (video !== null) {\n try {\n video.dispatch(action);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(video.constructor.manifest.name, error);\n }\n }\n\n if (action.type === 'command' && action.commandName === 'destroy') {\n video = null;\n }\n\n return;\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n this.destroy = function() {\n destroyed = true;\n if (video !== null) {\n video.dispatch({ type: 'command', commandName: 'destroy' });\n video = null;\n }\n\n events.removeAllListeners();\n };\n}\n\nStremioVideo.ERROR = ERROR;\n\nmodule.exports = StremioVideo;\n","var StremioVideo = require('./StremioVideo');\n\nmodule.exports = StremioVideo;\n","var ChromecastSenderVideo = require('../ChromecastSenderVideo');\nvar ShellVideo = require('../ShellVideo');\nvar HTMLVideo = require('../HTMLVideo');\nvar TizenVideo = require('../TizenVideo');\nvar WebOsVideo = require('../WebOsVideo');\nvar IFrameVideo = require('../IFrameVideo');\nvar YouTubeVideo = require('../YouTubeVideo');\nvar withStreamingServer = require('../withStreamingServer');\nvar withHTMLSubtitles = require('../withHTMLSubtitles');\n\nfunction selectVideoImplementation(commandArgs, options) {\n if (!commandArgs.stream || typeof commandArgs.stream.externalUrl === 'string') {\n return null;\n }\n\n if (options.chromecastTransport && options.chromecastTransport.getCastState() === cast.framework.CastState.CONNECTED) {\n return ChromecastSenderVideo;\n }\n\n if (typeof commandArgs.stream.ytId === 'string') {\n return withHTMLSubtitles(YouTubeVideo);\n }\n\n if (typeof commandArgs.stream.playerFrameUrl === 'string') {\n return IFrameVideo;\n }\n\n if (options.shellTransport) {\n return withStreamingServer(withHTMLSubtitles(ShellVideo));\n }\n\n if (typeof commandArgs.streamingServerURL === 'string') {\n if (typeof global.tizen !== 'undefined') {\n return withStreamingServer(withHTMLSubtitles(TizenVideo));\n }\n if (typeof global.webOS !== 'undefined') {\n return withStreamingServer(withHTMLSubtitles(WebOsVideo));\n }\n return withStreamingServer(withHTMLSubtitles(HTMLVideo));\n }\n\n if (typeof commandArgs.stream.url === 'string') {\n if (typeof global.webOS !== 'undefined') {\n return withHTMLSubtitles(WebOsVideo);\n }\n if (typeof global.tizen !== 'undefined') {\n return withHTMLSubtitles(TizenVideo);\n }\n return withHTMLSubtitles(HTMLVideo);\n }\n\n return null;\n}\n\nmodule.exports = selectVideoImplementation;\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar Color = require('color');\nvar ERROR = require('../error');\n\nfunction TizenVideo(options) {\n options = options || {};\n\n var isBuffering = true;\n var videoSpeed = 1;\n var currentSubTrack = null;\n var currentAudioTrack = null;\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var promiseAudioTrackChange = false;\n\n var size = 100;\n var offset = 0;\n var textColor = 'rgb(255, 255, 255)';\n var backgroundColor = 'rgba(0, 0, 0, 0)';\n var outlineColor = 'rgb(34, 34, 34)';\n\n var objElement = document.createElement('object');\n objElement.type = 'application/avplayer';\n objElement.style.width = '100%';\n objElement.style.height = '100%';\n objElement.style.backgroundColor = 'black';\n\n var lastSub;\n var disabledSubs = false;\n\n function refreshSubtitle() {\n if (lastSub) {\n var lastSubDurationDiff = lastSub.duration - (getProp('time') - lastSub.now);\n if (lastSubDurationDiff > 0) renderSubtitle(lastSubDurationDiff, lastSub.text);\n }\n }\n\n function renderSubtitle(duration, text) {\n if (disabledSubs) return;\n // we ignore custom delay here, it's not needed for embedded subs\n lastSub = {\n duration: duration,\n text: text,\n now: getProp('time'),\n };\n if (subtitleTimeout) {\n clearTimeout(subtitleTimeout);\n subtitleTimeout = false;\n }\n\n while (subtitlesElement.hasChildNodes()) {\n subtitlesElement.removeChild(subtitlesElement.lastChild);\n }\n\n subtitlesElement.style.bottom = offset + '%';\n var cueNode = document.createElement('span');\n cueNode.innerHTML = text;\n cueNode.style.display = 'inline-block';\n cueNode.style.padding = '0.2em';\n cueNode.style.fontSize = Math.floor(size / 25) + 'vmin';\n cueNode.style.color = textColor;\n cueNode.style.backgroundColor = backgroundColor;\n cueNode.style.textShadow = '1px 1px 0.1em ' + outlineColor;\n\n subtitlesElement.appendChild(cueNode);\n subtitlesElement.appendChild(document.createElement('br'));\n\n if (duration) {\n subtitleTimeout = setTimeout(function() {\n while (subtitlesElement.hasChildNodes()) {\n subtitlesElement.removeChild(subtitlesElement.lastChild);\n }\n }, parseInt(duration * videoSpeed));\n }\n }\n\n var subtitleTimeout = false;\n var Listener = {\n onbufferingstart: function() {\n isBuffering = true;\n onPropChanged('buffering');\n },\n onbufferingprogress: function() {\n isBuffering = true;\n onPropChanged('buffering');\n },\n onbufferingcomplete: function() {\n isBuffering = false;\n onPropChanged('buffering');\n },\n oncurrentplaytime: function() {\n onPropChanged('time');\n },\n onerror: function() {\n onVideoError();\n },\n onsubtitlechange: function(duration, text) {\n renderSubtitle(duration, text);\n },\n onstreamcompleted: function() {\n onEnded();\n }\n };\n window.webapis.avplay.setListener(Listener);\n\n containerElement.appendChild(objElement);\n\n var subtitlesElement = document.createElement('div');\n subtitlesElement.style.position = 'absolute';\n subtitlesElement.style.right = '0';\n subtitlesElement.style.bottom = '0';\n subtitlesElement.style.left = '0';\n subtitlesElement.style.zIndex = '1';\n subtitlesElement.style.textAlign = 'center';\n containerElement.style.position = 'relative';\n containerElement.style.zIndex = '0';\n containerElement.appendChild(subtitlesElement);\n\n var events = new EventEmitter();\n var destroyed = false;\n var stream = null;\n var observedProps = {\n stream: false,\n paused: false,\n time: false,\n duration: false,\n buffering: false,\n subtitlesTracks: false,\n selectedSubtitlesTrackId: false,\n subtitlesOffset: false,\n subtitlesSize: false,\n subtitlesTextColor: false,\n subtitlesBackgroundColor: false,\n subtitlesOutlineColor: false,\n audioTracks: false,\n selectedAudioTrackId: false,\n playbackSpeed: false\n };\n\n function getProp(propName) {\n switch (propName) {\n case 'stream': {\n return stream;\n }\n case 'paused': {\n if (stream === null) {\n return null;\n }\n\n var isPaused = !!(window.webapis.avplay.getState() === 'PAUSED');\n\n if (!isPaused && promiseAudioTrackChange) {\n window.webapis.avplay.setSelectTrack('AUDIO', parseInt(promiseAudioTrackChange.replace('EMBEDDED_', '')));\n promiseAudioTrackChange = false;\n }\n\n return isPaused;\n }\n case 'time': {\n var currentTime = window.webapis.avplay.getCurrentTime();\n if (stream === null || currentTime === null || !isFinite(currentTime)) {\n return null;\n }\n\n return Math.floor(currentTime);\n }\n case 'duration': {\n var duration = window.webapis.avplay.getDuration();\n if (stream === null || duration === null || !isFinite(duration)) {\n return null;\n }\n\n return Math.floor(duration);\n }\n case 'buffering': {\n if (stream === null) {\n return null;\n }\n\n return isBuffering;\n }\n case 'subtitlesTracks': {\n if (stream === null) {\n return [];\n }\n\n var totalTrackInfo = window.webapis.avplay.getTotalTrackInfo();\n var textTracks = [];\n\n for (var i = 0; i < totalTrackInfo.length; i++) {\n if (totalTrackInfo[i].type === 'TEXT') {\n var textTrack = totalTrackInfo[i];\n var textTrackId = 'EMBEDDED_' + String(textTrack.index);\n if (!currentSubTrack && !textTracks.length) {\n currentSubTrack = textTrackId;\n }\n var extra = {};\n try {\n extra = JSON.parse(textTrack.extra_info);\n } catch(e) {}\n var textTrackLang = (extra.track_lang || '').trim();\n textTracks.push({\n id: textTrackId,\n lang: textTrackLang,\n label: textTrackLang,\n origin: 'EMBEDDED',\n embedded: true,\n mode: !disabledSubs && textTrackId === currentSubTrack ? 'showing' : 'disabled',\n });\n }\n }\n\n return textTracks;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream === null || disabledSubs) {\n return null;\n }\n\n var currentTracks = window.webapis.avplay.getCurrentStreamInfo();\n var currentIndex;\n\n for (var i = 0; i < currentTracks.length; i++) {\n if (currentTracks[i].type === 'TEXT') {\n currentIndex = currentTracks[i].index;\n\n break;\n }\n }\n\n return currentIndex ? 'EMBEDDED_' + String(currentIndex) : null;\n\n }\n case 'subtitlesOffset': {\n if (destroyed) {\n return null;\n }\n\n return offset;\n }\n case 'subtitlesSize': {\n if (destroyed) {\n return null;\n }\n\n return size;\n }\n case 'subtitlesTextColor': {\n if (destroyed) {\n return null;\n }\n\n return textColor;\n }\n case 'subtitlesBackgroundColor': {\n if (destroyed) {\n return null;\n }\n\n return backgroundColor;\n }\n case 'subtitlesOutlineColor': {\n if (destroyed) {\n return null;\n }\n\n return outlineColor;\n }\n case 'audioTracks': {\n if (stream === null) {\n return [];\n }\n\n var totalTrackInfo = window.webapis.avplay.getTotalTrackInfo();\n var audioTracks = [];\n\n for (var i = 0; i < totalTrackInfo.length; i++) {\n if (totalTrackInfo[i].type === 'AUDIO') {\n var audioTrack = totalTrackInfo[i];\n var audioTrackId = 'EMBEDDED_' + String(audioTrack.index);\n if (!currentAudioTrack && !audioTracks.length) {\n currentAudioTrack = audioTrackId;\n }\n var extra = {};\n try {\n extra = JSON.parse(audioTrack.extra_info);\n } catch(e) {}\n var audioTrackLang = extra.language || '';\n audioTracks.push({\n id: audioTrackId,\n lang: audioTrackLang,\n label: audioTrackLang,\n origin: 'EMBEDDED',\n embedded: true,\n mode: audioTrackId === currentAudioTrack ? 'showing' : 'disabled',\n });\n }\n }\n\n return audioTracks;\n }\n case 'selectedAudioTrackId': {\n if (stream === null) {\n return null;\n }\n\n if (promiseAudioTrackChange) {\n return promiseAudioTrackChange;\n }\n\n var currentTracks = window.webapis.avplay.getCurrentStreamInfo();\n var currentIndex = false;\n\n for (var i = 0; i < currentTracks.length; i++) {\n if (currentTracks[i].type === 'AUDIO') {\n currentIndex = currentTracks[i].index;\n\n break;\n }\n }\n\n return currentIndex !== false ? 'EMBEDDED_' + String(currentIndex) : null;\n }\n case 'playbackSpeed': {\n if (destroyed || videoSpeed === null || !isFinite(videoSpeed)) {\n return null;\n }\n\n return videoSpeed;\n }\n default: {\n return null;\n }\n }\n }\n function onVideoError() {\n if (destroyed) {\n return;\n }\n\n var error;\n error = ERROR.UNKNOWN_ERROR;\n onError(Object.assign({}, error, {\n critical: true,\n error: error\n }));\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onEnded() {\n events.emit('ended');\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName));\n }\n }\n function observeProp(propName) {\n if (observedProps.hasOwnProperty(propName)) {\n events.emit('propValue', propName, getProp(propName));\n observedProps[propName] = true;\n }\n }\n function setProp(propName, propValue) {\n switch (propName) {\n case 'paused': {\n if (stream !== null) {\n var willPause = !!propValue;\n willPause ? window.webapis.avplay.pause() : window.webapis.avplay.play();\n if (willPause) {\n if (subtitleTimeout) {\n clearTimeout(subtitleTimeout);\n }\n } else {\n refreshSubtitle();\n }\n }\n\n onPropChanged('paused');\n\n // the paused state is usually correct, but i have seen it not change on tizen 3\n // which causes all kinds of issues in the UI: (only happens with some videos)\n var lastKnownProp = getProp('paused');\n\n setTimeout(function() {\n if (getProp('paused') !== lastKnownProp) {\n onPropChanged('paused');\n }\n }, 1000);\n\n break;\n }\n case 'time': {\n if (stream !== null && propValue !== null && isFinite(propValue)) {\n window.webapis.avplay.seekTo(parseInt(propValue, 10));\n renderSubtitle(1, '');\n }\n\n break;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream !== null) {\n if ((currentSubTrack || '').indexOf('EMBEDDED_') === 0) {\n if ((propValue || '').indexOf('EMBEDDED_') === -1) {\n renderSubtitle(1, '');\n disabledSubs = true;\n onPropChanged('selectedSubtitlesTrackId');\n return;\n }\n disabledSubs = false;\n\n currentSubTrack = propValue;\n\n var selectedSubtitlesTrack = getProp('subtitlesTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n\n window.webapis.avplay.setSelectTrack('TEXT', parseInt(currentSubTrack.replace('EMBEDDED_', '')));\n\n if (selectedSubtitlesTrack) {\n events.emit('subtitlesTrackLoaded', selectedSubtitlesTrack);\n onPropChanged('selectedSubtitlesTrackId');\n }\n } else if (!propValue) {\n renderSubtitle(1, '');\n disabledSubs = true;\n onPropChanged('selectedSubtitlesTrackId');\n }\n }\n\n break;\n }\n case 'subtitlesOffset': {\n if (propValue !== null && isFinite(propValue)) {\n offset = Math.max(0, Math.min(100, parseInt(propValue, 10)));\n refreshSubtitle();\n onPropChanged('subtitlesOffset');\n }\n\n break;\n }\n case 'subtitlesSize': {\n if (propValue !== null && isFinite(propValue)) {\n size = Math.max(0, parseInt(propValue, 10));\n refreshSubtitle();\n onPropChanged('subtitlesSize');\n }\n\n break;\n }\n case 'subtitlesTextColor': {\n if (typeof propValue === 'string') {\n try {\n textColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Tizen player with HTML Subtitles', error);\n }\n\n refreshSubtitle();\n onPropChanged('subtitlesTextColor');\n }\n\n break;\n }\n case 'subtitlesBackgroundColor': {\n if (typeof propValue === 'string') {\n try {\n backgroundColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Tizen player with HTML Subtitles', error);\n }\n\n refreshSubtitle();\n\n onPropChanged('subtitlesBackgroundColor');\n }\n\n break;\n }\n case 'subtitlesOutlineColor': {\n if (typeof propValue === 'string') {\n try {\n outlineColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Tizen player with HTML Subtitles', error);\n }\n\n refreshSubtitle();\n\n onPropChanged('subtitlesOutlineColor');\n }\n\n break;\n }\n case 'selectedAudioTrackId': {\n if (stream !== null) {\n\n currentAudioTrack = propValue;\n\n var selectedAudioTrack = getProp('audioTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n\n if (getProp('paused')) {\n // issues before this logic:\n // tizen 3 does not allow changing audio track when paused\n // tizen 5 does, but it will only change getProp('selectedAudioTrackId') after playback starts\n\n // will be changed on next play event, until then we will overwrite the result of getProp('selectedAudioTrackId')\n promiseAudioTrackChange = propValue;\n onPropChanged('selectedAudioTrackId');\n } else {\n window.webapis.avplay.setSelectTrack('AUDIO', parseInt(currentAudioTrack.replace('EMBEDDED_', '')));\n }\n if (selectedAudioTrack) {\n events.emit('audioTrackLoaded', selectedAudioTrack);\n onPropChanged('selectedAudioTrackId');\n }\n }\n\n break;\n }\n case 'playbackSpeed': {\n if (propValue !== null && isFinite(propValue)) {\n videoSpeed = parseFloat(propValue);\n\n try {\n window.webapis.avplay.setSpeed(videoSpeed);\n } catch (e) {}\n\n onPropChanged('playbackSpeed');\n }\n\n break;\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n if (commandArgs && commandArgs.stream && typeof commandArgs.stream.url === 'string') {\n stream = commandArgs.stream;\n\n if (stream !== commandArgs.stream) {\n return;\n }\n onPropChanged('buffering');\n\n window.webapis.avplay.open(stream.url);\n window.webapis.avplay.setDisplayRect(0, 0, window.innerWidth, window.innerHeight);\n window.webapis.avplay.setDisplayMethod('PLAYER_DISPLAY_MODE_LETTER_BOX');\n window.webapis.avplay.seekTo(commandArgs.time !== null && isFinite(commandArgs.time) ? parseInt(commandArgs.time, 10) : 0);\n window.webapis.avplay.prepare();\n onPropChanged('duration');\n window.webapis.avplay.play();\n\n onPropChanged('stream');\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null\n }));\n }\n break;\n }\n case 'unload': {\n stream = null;\n window.webapis.avplay.stop();\n onPropChanged('stream');\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n break;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n onPropChanged('subtitlesOffset');\n onPropChanged('subtitlesSize');\n onPropChanged('subtitlesTextColor');\n onPropChanged('subtitlesBackgroundColor');\n onPropChanged('subtitlesOutlineColor');\n onPropChanged('playbackSpeed');\n events.removeAllListeners();\n containerElement.removeChild(objElement);\n break;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n return;\n }\n case 'setProp': {\n setProp(action.propName, action.propValue);\n return;\n }\n case 'command': {\n command(action.commandName, action.commandArgs);\n return;\n }\n }\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n}\n\nTizenVideo.canPlayStream = function() {\n return Promise.resolve(true);\n};\n\nTizenVideo.manifest = {\n name: 'TizenVideo',\n external: false,\n props: ['stream', 'paused', 'time', 'duration', 'buffering', 'audioTracks', 'selectedAudioTrackId', 'subtitlesTracks', 'selectedSubtitlesTrackId', 'subtitlesOffset', 'subtitlesSize', 'subtitlesTextColor', 'subtitlesBackgroundColor', 'subtitlesOutlineColor', 'playbackSpeed'],\n commands: ['load', 'unload', 'destroy'],\n events: ['propValue', 'propChanged', 'ended', 'error', 'subtitlesTrackLoaded', 'audioTrackLoaded']\n};\n\nmodule.exports = TizenVideo;\n","var TizenVideo = require('./TizenVideo');\n\nmodule.exports = TizenVideo;\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar ERROR = require('../error');\n\nfunction luna(params, call, fail, method) {\n if (call) params.onSuccess = call || function() {};\n\n params.onFailure = function () { // function(result)\n // console.log('WebOS',(params.method || method) + ' [fail][' + result.errorCode + '] ' + result.errorText );\n\n if (fail) fail();\n };\n\n window.webOS.service.request(method || 'luna://com.webos.media', params);\n}\n\nfunction runWebOS(params, failed) {\n // console.log('run web os', params);\n window.webOS.service.request('luna://com.webos.applicationManager', {\n method: 'launch',\n parameters: {\n 'id': params.need,\n 'params': {\n 'payload':[\n {\n 'fullPath': params.url,\n 'artist':'',\n 'subtitle':'',\n 'dlnaInfo':{\n 'flagVal':4096,\n 'cleartextSize':'-1',\n 'contentLength':'-1',\n 'opVal':1,\n 'protocolInfo':'http-get:*:video/x-matroska:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000',\n 'duration':0\n },\n 'mediaType':'VIDEO',\n 'thumbnail':'',\n 'deviceType':'DMR',\n 'album':'',\n 'fileName': params.name,\n 'lastPlayPosition': params.position\n }\n ]\n }\n },\n onSuccess: function () {\n // console.log('The app is launched');\n },\n onFailure: function () { // function(inError)\n // console.log('Player', 'Failed to launch the app ('+params.need+'): ', '[' + inError.errorCode + ']: ' + inError.errorText);\n\n if (params.need === 'com.webos.app.photovideo') {\n params.need = 'com.webos.app.smartshare';\n runWebOS(params);\n } else if(params.need === 'com.webos.app.smartshare') {\n params.need = 'com.webos.app.mediadiscovery';\n runWebOS(params);\n } else if (params.need === 'com.webos.app.mediadiscovery') {\n failed();\n }\n }\n });\n}\n\nvar webOsColors = ['black', 'white', 'yellow', 'red', 'green', 'blue'];\nvar stremioColors = {\n // rgba\n 'rgba(0, 0, 0, 255)': 'black',\n 'rgba(255, 255, 255, 255)': 'white',\n 'rgba(255, 255, 0, 255)': 'yellow',\n 'rgba(255, 0, 0, 255)': 'red',\n 'rgba(0, 255, 0, 255)': 'green',\n 'rgba(0, 0, 255, 255)': 'blue',\n // rgba case 2\n 'rgba(0, 0, 0, 1)': 'black',\n 'rgba(255, 255, 255, 1)': 'white',\n 'rgba(255, 255, 0, 1)': 'yellow',\n 'rgba(255, 0, 0, 1)': 'red',\n 'rgba(0, 255, 0, 1)': 'green',\n 'rgba(0, 0, 255, 1)': 'blue',\n // rgb\n 'rgba(0, 0, 0)': 'black',\n 'rgba(255, 255, 255)': 'white',\n 'rgba(255, 255, 0)': 'yellow',\n 'rgba(255, 0, 0)': 'red',\n 'rgba(0, 255, 0)': 'green',\n 'rgba(0, 0, 255)': 'blue',\n // 8-digit hex\n '#000000FF': 'black',\n '#FFFFFFFF': 'white',\n '#FFFF00FF': 'yellow',\n '#FF0000FF': 'red',\n '#00FF00FF': 'green',\n '#0000FFFF': 'blue',\n // 6-digit hex\n '#000000': 'black',\n '#FFFFFF': 'white',\n '#FFFF00': 'yellow',\n '#FF0000': 'red',\n '#00FF00': 'green',\n '#0000FF': 'blue'\n};\n\nfunction stremioSubOffsets(offset) {\n if (offset === 0) {\n return -3;\n } else if (offset <= 2) {\n return -2;\n } else if (offset <= 3) {\n return -1;\n } else if (offset <= 5) {\n return 0;\n } else if (offset <= 10) {\n return 1;\n } else if (offset <= 25) {\n return 2;\n } else if (offset <= 50) {\n return 3;\n } else if (offset <= 100) {\n return 4;\n }\n return false;\n}\n\nfunction stremioSubSizes(size) {\n // there is also: 0 (tiny)\n // adding zero will break the logic\n if (size <= 75) {\n return 1;\n } else if (size <= 100) {\n return 2;\n } else if (size <= 150) {\n return 3;\n } else if (size <= 250) {\n return 4;\n }\n return false;\n}\n\nfunction WebOsVideo(options) {\n\n options = options || {};\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var knownMediaId = false;\n\n var subSize = 75;\n\n var disabledSubs = true;\n\n var subscribed = false;\n\n var currentSubTrack = false;\n\n var currentAudioTrack = false;\n\n var textTracks = [];\n\n var audioTracks = [];\n\n var count_message = 0;\n\n var subtitleOffset = 5;\n\n var setSubs = function (info) {\n textTracks = [];\n // console.log('sub tracks 1, nr of sub tracks: ', info.numSubtitleTracks);\n if (info.numSubtitleTracks) {\n\n // console.log('sub tracks 2');\n\n // try {\n // console.log('got sub info', JSON.stringify(info.subtitleTrackInfo));\n // } catch(e) {};\n for (var i = 0; i < info.subtitleTrackInfo.length; i++) {\n var textTrack = info.subtitleTrackInfo[i];\n textTrack.index = i;\n var textTrackLang = textTrack.language === '(null)' ? '' : textTrack.language;\n\n var textTrackId = 'EMBEDDED_' + textTrack.index;\n\n if (!currentSubTrack && !textTracks.length) {\n currentSubTrack = textTrackId;\n }\n\n textTracks.push({\n id: textTrackId,\n lang: textTrackLang,\n label: textTrackLang,\n origin: 'EMBEDDED',\n embedded: true,\n mode: textTrackId === currentSubTrack ? 'showing' : 'disabled',\n });\n\n }\n\n // console.log('sub tracks all', textTracks);\n\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n\n }\n };\n\n var setTracks = function (info) {\n audioTracks = [];\n // console.log('audio tracks 1, nr of audio tracks: ', info.numAudioTracks);\n if (info.numAudioTracks) {\n\n //console.log('audio tracks 2');\n\n // try {\n // console.log('got audio info', JSON.stringify(info.audioTrackInfo));\n // } catch(e) {};\n for (var i = 0; i < info.audioTrackInfo.length; i++) {\n var audioTrack = info.audioTrackInfo[i];\n audioTrack.index = i;\n var audioTrackId = 'EMBEDDED_' + audioTrack.index;\n if (!currentAudioTrack && !audioTracks.length) {\n currentAudioTrack = audioTrackId;\n }\n var audioTrackLang = audioTrack.language === '(null)' ? '' : audioTrack.language;\n audioTracks.push({\n id: audioTrackId,\n lang: audioTrackLang,\n label: audioTrackLang,\n origin: 'EMBEDDED',\n embedded: true,\n mode: audioTrackId === currentAudioTrack ? 'showing' : 'disabled',\n });\n }\n // console.log('audio tracks all', audioTracks);\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n\n }\n };\n\n var subscribe = function (cb) {\n if (subscribed) return;\n subscribed = true;\n var answered = false;\n // console.log('subscribing');\n luna({\n method: 'subscribe',\n parameters: {\n 'mediaId': knownMediaId,\n 'subscribe': true\n }\n }, function (result) {\n if (result.sourceInfo && !answered) {\n answered = true;\n // try {\n // console.log('got source info', JSON.stringify(result.sourceInfo.programInfo[0]));\n // } catch(e) {};\n var info = result.sourceInfo.programInfo[0];\n\n setSubs(info);\n\n setTracks(info);\n\n unsubscribe(cb);\n }\n\n if ((result.error || {}).errorCode) {\n answered = true;\n // console.error('luna playback error', result.error);\n unsubscribe(cb);\n // unsubscribe();\n // onVideoError();\n return;\n }\n\n if ((result.unloadCompleted || {}).mediaId === knownMediaId && (result.unloadCompleted || {}).state) {\n // strange case where it just.. ends? without ever getting result.sourceInfo\n // onEnded();\n // console.log('strange case of end');\n // unsubscribe(cb);\n return;\n }\n\n // console.log('WebOS', 'subscribe', JSON.stringify(result));\n count_message++;\n\n if (count_message === 30 && !answered) {\n // cb();\n unsubscribe(cb);\n }\n }, function() { // function(err)\n // console.log('luna error log 2');\n // console.error(err);\n });\n };\n\n var unsubscribe = function (cb) {\n if (!subscribed) return;\n subscribed = false;\n luna({\n method: 'unsubscribe',\n parameters: {\n 'mediaId': knownMediaId\n }\n }, function () { // function(result)\n // console.log('unsubscribe result', JSON.stringify(result));\n cb();\n }, function () { // function(err)\n // console.log('unsubscribe error', JSON.stringify(err));\n cb();\n });\n cb();\n };\n\n // var unload = function (cb) {\n // luna({\n // method: 'unload',\n // parameters: {\n // 'mediaId': knownMediaId\n // }\n // }, cb, cb);\n // };\n\n var toggleSubtitles = function (status) {\n if (!knownMediaId) return;\n\n disabledSubs = !status;\n\n // console.log('enable subs: ' + status);\n\n luna({\n method: 'setSubtitleEnable',\n parameters: {\n 'mediaId': knownMediaId,\n 'enable': status\n }\n });\n };\n\n var styleElement = document.createElement('style');\n containerElement.appendChild(styleElement);\n styleElement.sheet.insertRule('video::cue { font-size: 4vmin; color: rgb(255, 255, 255); background-color: rgba(0, 0, 0, 0); text-shadow: rgb(34, 34, 34) 1px 1px 0.1em; }');\n var videoElement = document.createElement('video');\n videoElement.style.width = '100%';\n videoElement.style.height = '100%';\n videoElement.style.backgroundColor = 'black';\n // videoElement.crossOrigin = 'anonymous';\n videoElement.controls = false;\n videoElement.onerror = function() {\n onVideoError();\n };\n videoElement.onended = function() {\n onEnded();\n };\n videoElement.onpause = function() {\n onPropChanged('paused');\n };\n videoElement.onplay = function() {\n onPropChanged('paused');\n };\n videoElement.ontimeupdate = function() {\n onPropChanged('time');\n onPropChanged('buffered');\n };\n videoElement.ondurationchange = function() {\n onPropChanged('duration');\n };\n videoElement.onwaiting = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onseeking = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onseeked = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onstalled = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onplaying = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.oncanplay = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.canplaythrough = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onloadeddata = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n };\n videoElement.onloadedmetadata = function() {\n onPropChanged('buffering');\n onPropChanged('buffered');\n setProp('time', startTime);\n };\n videoElement.onvolumechange = function() {\n onPropChanged('volume');\n onPropChanged('muted');\n };\n videoElement.onratechange = function() {\n onPropChanged('playbackSpeed');\n };\n videoElement.textTracks.onchange = function() {\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onCueChange();\n Array.from(videoElement.textTracks).forEach(function(track) {\n track.oncuechange = onCueChange;\n });\n };\n containerElement.appendChild(videoElement);\n\n var lastSubColor = null;\n var lastSubBgColor = null;\n var lastSubBgOpacity = 0;\n var lastPlaybackSpeed = 1;\n\n var events = new EventEmitter();\n var destroyed = false;\n var stream = null;\n var startTime = null;\n var subtitlesOffset = 0;\n var observedProps = {\n stream: false,\n paused: false,\n time: false,\n duration: false,\n buffering: false,\n buffered: false,\n subtitlesTracks: false,\n selectedSubtitlesTrackId: false,\n subtitlesOffset: false,\n subtitlesSize: false,\n subtitlesTextColor: false,\n subtitlesBackgroundColor: false,\n audioTracks: false,\n selectedAudioTrackId: false,\n volume: false,\n muted: false,\n playbackSpeed: false\n };\n\n function getProp(propName) {\n switch (propName) {\n case 'stream': {\n return stream;\n }\n case 'paused': {\n if (stream === null) {\n return null;\n }\n\n return !!videoElement.paused;\n }\n case 'time': {\n if (stream === null || videoElement.currentTime === null || !isFinite(videoElement.currentTime)) {\n return null;\n }\n\n return Math.floor(videoElement.currentTime * 1000);\n }\n case 'duration': {\n if (stream === null || videoElement.duration === null || !isFinite(videoElement.duration)) {\n return null;\n }\n\n return Math.floor(videoElement.duration * 1000);\n }\n case 'buffering': {\n if (stream === null) {\n return null;\n }\n\n return videoElement.readyState < videoElement.HAVE_FUTURE_DATA;\n }\n case 'buffered': {\n if (stream === null) {\n return null;\n }\n\n var time = videoElement.currentTime !== null && isFinite(videoElement.currentTime) ? videoElement.currentTime : 0;\n for (var i = 0; i < videoElement.buffered.length; i++) {\n if (videoElement.buffered.start(i) <= time && time <= videoElement.buffered.end(i)) {\n return Math.floor(videoElement.buffered.end(i) * 1000);\n }\n }\n\n return Math.floor(time * 1000);\n }\n case 'subtitlesTracks': {\n if (stream === null) {\n return [];\n }\n\n return textTracks;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream === null || disabledSubs) {\n return null;\n }\n\n return currentSubTrack;\n }\n case 'subtitlesOffset': {\n if (destroyed) {\n return null;\n }\n\n return subtitlesOffset;\n }\n case 'subtitlesSize': {\n if (destroyed) {\n return null;\n }\n\n return subSize;\n }\n case 'subtitlesTextColor': {\n if (destroyed) {\n return null;\n }\n\n return lastSubColor || 'rgba(255, 255, 255, 255)';\n }\n case 'subtitlesBackgroundColor': {\n if (destroyed) {\n return null;\n }\n\n return lastSubBgColor || 'rgba(255, 255, 255, 0)';\n }\n case 'audioTracks': {\n return audioTracks;\n }\n case 'selectedAudioTrackId': {\n return currentAudioTrack;\n }\n case 'volume': {\n if (destroyed || videoElement.volume === null || !isFinite(videoElement.volume)) {\n return null;\n }\n\n return Math.floor(videoElement.volume * 100);\n }\n case 'muted': {\n if (destroyed) {\n return null;\n }\n\n return !!videoElement.muted;\n }\n case 'playbackSpeed': {\n if (destroyed || lastPlaybackSpeed === null || !isFinite(lastPlaybackSpeed)) {\n return null;\n }\n\n return lastPlaybackSpeed;\n }\n default: {\n return null;\n }\n }\n }\n function onCueChange() {\n Array.from(videoElement.textTracks).forEach(function(track) {\n Array.from(track.cues || []).forEach(function(cue) {\n cue.snapToLines = false;\n cue.line = 100 - subtitlesOffset;\n });\n });\n }\n function onVideoError() {\n if (destroyed) {\n return;\n }\n\n var error;\n switch ((videoElement.error || {}).code) {\n case 1: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_ABORTED;\n break;\n }\n case 2: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_NETWORK;\n break;\n }\n case 3: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_DECODE;\n runWebOS({\n need: 'com.webos.app.photovideo',\n url: stream.url,\n name: 'Stremio',\n position: -1,\n });\n break;\n }\n case 4: {\n error = ERROR.HTML_VIDEO.MEDIA_ERR_SRC_NOT_SUPPORTED;\n runWebOS({\n need: 'com.webos.app.photovideo',\n url: stream.url,\n name: 'Stremio',\n position: -1,\n });\n break;\n }\n default: {\n error = ERROR.UNKNOWN_ERROR;\n }\n }\n onError(Object.assign({}, error, {\n critical: true,\n error: videoElement.error\n }));\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onEnded() {\n events.emit('ended');\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName));\n }\n }\n function observeProp(propName) {\n if (observedProps.hasOwnProperty(propName)) {\n events.emit('propValue', propName, getProp(propName));\n observedProps[propName] = true;\n }\n }\n function setProp(propName, propValue) {\n switch (propName) {\n case 'paused': {\n if (stream !== null) {\n propValue ? videoElement.pause() : videoElement.play();\n }\n\n break;\n }\n case 'time': {\n if (stream !== null && videoElement.readyState >= videoElement.HAVE_METADATA && propValue !== null && isFinite(propValue)) {\n try {\n videoElement.currentTime = parseInt(propValue, 10) / 1000;\n } catch(e) {\n // console.log('webos video change time error');\n // console.error(e);\n }\n }\n\n break;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream !== null) {\n if ((propValue || '').indexOf('EMBEDDED_') === 0) {\n if (disabledSubs) {\n toggleSubtitles(true);\n }\n\n // console.log('WebOS', 'change subtitles for id: ', knownMediaId, ' index:', propValue);\n\n currentSubTrack = propValue;\n var trackIndex = parseInt(propValue.replace('EMBEDDED_', ''));\n // console.log('set subs to track idx: ' + trackIndex);\n luna({\n method: 'selectTrack',\n parameters: {\n 'type': 'text',\n 'mediaId': knownMediaId,\n 'index': trackIndex\n }\n }, function() {\n // console.log('changed subs track successfully');\n var selectedSubtitlesTrack = getProp('subtitlesTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n textTracks = textTracks.map(function(track) {\n track.mode = track.id === currentSubTrack ? 'showing' : 'disabled';\n return track;\n });\n if (selectedSubtitlesTrack) {\n events.emit('subtitlesTrackLoaded', selectedSubtitlesTrack);\n onPropChanged('selectedSubtitlesTrackId');\n }\n });\n } else if (!propValue) {\n toggleSubtitles(false);\n }\n }\n\n break;\n }\n case 'subtitlesOffset': {\n if (propValue !== null && isFinite(propValue)) {\n subtitlesOffset = Math.max(0, Math.min(100, parseInt(propValue, 10)));\n var nextOffset = stremioSubOffsets(subtitleOffset);\n if (nextOffset === false) { // use default\n nextOffset = 0;\n }\n luna({\n method: 'setSubtitlePosition',\n parameters: {\n 'mediaId': knownMediaId,\n 'position': nextOffset,\n }\n }, function() {\n // console.log('successfully changed sub offset to: ' + nextOffset);\n });\n\n onPropChanged('subtitlesOffset');\n }\n\n break;\n }\n case 'subtitlesSize': {\n if (propValue !== null && isFinite(propValue)) {\n subSize = Math.max(0, parseInt(propValue, 10));\n var nextSubSize = stremioSubSizes(subSize);\n if (nextSubSize === false) { // use default\n nextSubSize = 2;\n }\n luna({\n method: 'setSubtitleFontSize',\n parameters: {\n 'mediaId': knownMediaId,\n 'fontSize': nextSubSize,\n }\n }, function() {\n // console.log('successfully changed sub size to: ' + nextSubSize);\n });\n\n onPropChanged('subtitlesSize');\n }\n\n break;\n }\n case 'subtitlesTextColor': {\n if (typeof propValue === 'string') {\n // we use setSubtitleCharacterColor instead of setSubtitleColor\n // because it has the same color options as the sub background\n var nextColor = 'white';\n if (stremioColors[propValue] && webOsColors.indexOf(stremioColors[propValue]) > -1) {\n nextColor = stremioColors[propValue];\n }\n luna({\n method: 'setSubtitleCharacterColor',\n parameters: {\n 'mediaId': knownMediaId,\n 'charColor': nextColor,\n }\n }, function() {\n // console.log('changed subtitle color successfully to: ' + nextColor);\n });\n lastSubColor = propValue;\n onPropChanged('subtitlesTextColor');\n }\n\n break;\n }\n case 'subtitlesBackgroundColor': {\n if (typeof propValue === 'string') {\n if (stremioColors[propValue] && webOsColors.indexOf(stremioColors[propValue]) > -1) {\n luna({\n method: 'setSubtitleBackgroundColor',\n parameters: {\n 'mediaId': knownMediaId,\n 'color': stremioColors[propValue],\n }\n }, function() {\n // console.log('changed subtitle background color successfully to: ' + stremioColors[propValue]);\n if (!lastSubBgOpacity) {\n luna({\n method: 'setSubtitleBackgroundOpacity',\n parameters: {\n 'mediaId': knownMediaId,\n 'bgOpacity': 255,\n }\n }, function() {\n // console.log('changed subtitle background opacity successfully to: ' + 255);\n lastSubBgOpacity = 255;\n });\n }\n });\n } else {\n // we don't know this color, set sub background opacity to 0\n luna({\n method: 'setSubtitleBackgroundOpacity',\n parameters: {\n 'mediaId': knownMediaId,\n 'bgOpacity': 0,\n }\n }, function() {\n // console.log('changed subtitle background opacity successfully to: ' + 0);\n lastSubBgOpacity = 0;\n });\n }\n lastSubBgColor = propValue;\n onPropChanged('subtitlesBackgroundColor');\n }\n\n break;\n }\n case 'selectedAudioTrackId': {\n // console.log('WebOS', 'change audio track for id: ', knownMediaId, ' index:', propValue);\n\n if ((propValue || '').indexOf('EMBEDDED_') === 0) {\n currentAudioTrack = propValue;\n var trackIndex = parseInt(propValue.replace('EMBEDDED_', ''));\n luna({\n method: 'selectTrack',\n parameters: {\n 'type': 'audio',\n 'mediaId': knownMediaId,\n 'index': trackIndex\n }\n }, function() {\n // console.log('changed audio track successfully');\n var selectedAudioTrack = getProp('audioTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n\n audioTracks = audioTracks.map(function(track) {\n track.mode = track.id === currentAudioTrack ? 'showing' : 'disabled';\n return track;\n });\n\n if (selectedAudioTrack) {\n events.emit('audioTrackLoaded', selectedAudioTrack);\n onPropChanged('selectedAudioTrackId');\n }\n });\n if (videoElement.audioTracks) {\n for (var i = 0; i < videoElement.audioTracks.length; i++) {\n videoElement.audioTracks[i].enabled = false;\n }\n\n if(videoElement.audioTracks[trackIndex]) {\n videoElement.audioTracks[trackIndex].enabled = true;\n\n // console.log('WebOS', 'change audio two method:', trackIndex);\n }\n }\n\n }\n\n break;\n }\n case 'volume': {\n if (propValue !== null && isFinite(propValue)) {\n videoElement.muted = false;\n videoElement.volume = Math.max(0, Math.min(100, parseInt(propValue, 10))) / 100;\n }\n\n break;\n }\n case 'muted': {\n videoElement.muted = !!propValue;\n break;\n }\n case 'playbackSpeed': {\n // console.log('start change play rate to: ' + propValue);\n // console.log(typeof propValue);\n if (propValue !== null && isFinite(propValue)) {\n lastPlaybackSpeed = parseFloat(propValue);\n luna({\n method: 'setPlayRate',\n parameters: {\n 'mediaId': knownMediaId,\n 'playRate': lastPlaybackSpeed,\n 'audioOutput': true,\n }\n }, function() {\n // console.log('set playback rate success: ', lastPlaybackSpeed);\n }, function() {\n // console.log('failed setting playback rate success: ', lastPlaybackSpeed);\n });\n onPropChanged('playbackSpeed');\n }\n\n break;\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n // not sure about this\n // command('unload');\n if (commandArgs && commandArgs.stream && typeof commandArgs.stream.url === 'string') {\n stream = commandArgs.stream;\n startTime = commandArgs.time;\n\n onPropChanged('stream');\n videoElement.autoplay = typeof commandArgs.autoplay === 'boolean' ? commandArgs.autoplay : true;\n\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('buffered');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n\n var count = 0;\n\n var initMediaId = function (cb) {\n function retrieveMediaId() {\n if (videoElement.mediaId) {\n knownMediaId = videoElement.mediaId;\n // console.log('got media id: ', videoElement.mediaId);\n clearInterval(timer);\n subscribe(cb);\n return;\n }\n count++;\n if (count > 4) {\n // console.log('failed to get media id');\n clearInterval(timer);\n cb();\n }\n }\n var timer = setInterval(retrieveMediaId, 300);\n };\n\n var startVideo = function () {\n // console.log('startVideo');\n // not needed?\n // videoElement.src = stream.url;\n\n try {\n videoElement.load();\n } catch(e) {\n // console.log('can\\'t load video');\n // console.error(e);\n }\n\n try {\n // console.log('try play');\n videoElement.play();\n } catch(e) {\n // console.log('can\\'t start video');\n // console.error(e);\n }\n };\n\n videoElement.src = stream.url;\n\n initMediaId(startVideo);\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null\n }));\n }\n break;\n }\n case 'unload': {\n stream = null;\n startTime = null;\n Array.from(videoElement.textTracks).forEach(function(track) {\n track.oncuechange = null;\n });\n videoElement.removeAttribute('src');\n videoElement.load();\n // not sure about this:\n // try {\n // videoElement.currentTime = 0;\n // } catch(e) {\n // console.log('webos video unload error');\n // console.error(e);\n // }\n onPropChanged('stream');\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('buffered');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n onPropChanged('audioTracks');\n onPropChanged('selectedAudioTrackId');\n // not sure about this:\n // unload(function() {});\n break;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n onPropChanged('subtitlesOffset');\n onPropChanged('subtitlesSize');\n onPropChanged('subtitlesTextColor');\n onPropChanged('subtitlesBackgroundColor');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('playbackSpeed');\n events.removeAllListeners();\n videoElement.onerror = null;\n videoElement.onended = null;\n videoElement.onpause = null;\n videoElement.onplay = null;\n videoElement.ontimeupdate = null;\n videoElement.ondurationchange = null;\n videoElement.onwaiting = null;\n videoElement.onseeking = null;\n videoElement.onseeked = null;\n videoElement.onstalled = null;\n videoElement.onplaying = null;\n videoElement.oncanplay = null;\n videoElement.canplaythrough = null;\n videoElement.onloadeddata = null;\n videoElement.onloadedmetadata = null;\n videoElement.onvolumechange = null;\n videoElement.onratechange = null;\n videoElement.textTracks.onchange = null;\n containerElement.removeChild(videoElement);\n containerElement.removeChild(styleElement);\n break;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n return;\n }\n case 'setProp': {\n setProp(action.propName, action.propValue);\n return;\n }\n case 'command': {\n command(action.commandName, action.commandArgs);\n return;\n }\n }\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n}\n\nWebOsVideo.canPlayStream = function() { // function(stream)\n return Promise.resolve(true);\n};\n\nWebOsVideo.manifest = {\n name: 'WebOsVideo',\n external: false,\n props: ['stream', 'paused', 'time', 'duration', 'buffering', 'buffered', 'audioTracks', 'selectedAudioTrackId', 'subtitlesTracks', 'selectedSubtitlesTrackId', 'subtitlesOffset', 'subtitlesSize', 'subtitlesTextColor', 'subtitlesBackgroundColor', 'volume', 'muted', 'playbackSpeed'],\n commands: ['load', 'unload', 'destroy'],\n events: ['propValue', 'propChanged', 'ended', 'error', 'subtitlesTrackLoaded', 'audioTrackLoaded']\n};\n\nmodule.exports = WebOsVideo;\n","var WebOsVideo = require('./WebOsVideo');\n\nmodule.exports = WebOsVideo;\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar ERROR = require('../error');\n\nfunction YouTubeVideo(options) {\n options = options || {};\n\n var timeChangedTimeout = options.timeChangedTimeout !== null && isFinite(options.timeChangedTimeout) ? parseInt(options.timeChangedTimeout, 10) : 100;\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var apiScriptElement = document.createElement('script');\n apiScriptElement.type = 'text/javascript';\n apiScriptElement.src = 'https://www.youtube.com/iframe_api';\n apiScriptElement.onload = onAPILoaded;\n apiScriptElement.onerror = onAPIError;\n containerElement.appendChild(apiScriptElement);\n var videoContainerElement = document.createElement('div');\n videoContainerElement.style.width = '100%';\n videoContainerElement.style.height = '100%';\n videoContainerElement.style.backgroundColor = 'black';\n containerElement.appendChild(videoContainerElement);\n var timeChangedIntervalId = window.setInterval(function() {\n onPropChanged('time');\n onPropChanged('volume');\n onPropChanged('muted');\n }, timeChangedTimeout);\n\n var video = null;\n var ready = false;\n var pendingLoadArgs = null;\n var events = new EventEmitter();\n var destroyed = false;\n var stream = null;\n var selectedSubtitlesTrackId = null;\n var observedProps = {\n stream: false,\n loaded: false,\n paused: false,\n time: false,\n duration: false,\n buffering: false,\n volume: false,\n muted: false,\n subtitlesTracks: false,\n selectedSubtitlesTrackId: false\n };\n\n function onAPIError() {\n if (destroyed) {\n return;\n }\n\n onError(Object.assign({}, ERROR.YOUTUBE_VIDEO.API_LOAD_FAILED, {\n critical: true\n }));\n }\n function onAPILoaded() {\n if (destroyed) {\n return;\n }\n\n if (!YT || typeof YT.ready !== 'function') {\n onAPIError();\n return;\n }\n\n YT.ready(function() {\n if (destroyed) {\n return;\n }\n\n if (!YT || !YT.PlayerState || typeof YT.Player !== 'function') {\n onAPIError();\n return;\n }\n\n video = new YT.Player(videoContainerElement, {\n width: '100%',\n height: '100%',\n playerVars: {\n autoplay: 1,\n cc_load_policy: 3,\n controls: 0,\n disablekb: 1,\n enablejsapi: 1,\n fs: 0,\n iv_load_policy: 3,\n loop: 0,\n modestbranding: 1,\n playsinline: 1,\n rel: 0\n },\n events: {\n onError: onVideoError,\n onReady: onVideoReady,\n onApiChange: onVideoAPIChange,\n onStateChange: onVideoStateChange\n }\n });\n });\n }\n function onVideoError(videoError) {\n if (destroyed) {\n return;\n }\n\n var error;\n switch (videoError.data) {\n case 2: {\n error = ERROR.YOUTUBE_VIDEO.INVALID_PARAMETER;\n break;\n }\n case 5: {\n error = ERROR.YOUTUBE_VIDEO.HTML5_VIDEO;\n break;\n }\n case 100: {\n error = ERROR.YOUTUBE_VIDEO.VIDEO_NOT_FOUND;\n break;\n }\n case 101:\n case 150: {\n error = ERROR.YOUTUBE_VIDEO.VIDEO_NOT_EMBEDDABLE;\n break;\n }\n default: {\n error = ERROR.UNKNOWN_ERROR;\n }\n }\n onError(Object.assign({}, error, {\n critical: true,\n error: videoError\n }));\n }\n function onVideoReady() {\n if (destroyed) {\n return;\n }\n\n ready = true;\n if (pendingLoadArgs !== null) {\n command('load', pendingLoadArgs);\n pendingLoadArgs = null;\n }\n }\n function onVideoAPIChange() {\n if (destroyed) {\n return;\n }\n\n if (typeof video.loadModule === 'function') {\n video.loadModule('captions');\n }\n if (typeof video.setOption === 'function') {\n video.setOption('captions', 'track', {});\n }\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n }\n function onVideoStateChange(state) {\n onPropChanged('buffering');\n switch (state.data) {\n case YT.PlayerState.ENDED: {\n onEnded();\n break;\n }\n case YT.PlayerState.CUED:\n case YT.PlayerState.UNSTARTED:\n case YT.PlayerState.PAUSED:\n case YT.PlayerState.PLAYING: {\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n break;\n }\n }\n }\n function getProp(propName) {\n switch (propName) {\n case 'stream': {\n return stream;\n }\n case 'loaded': {\n if (stream === null) {\n return null;\n }\n\n return true;\n }\n case 'paused': {\n if (stream === null || typeof video.getPlayerState !== 'function') {\n return null;\n }\n\n return video.getPlayerState() !== YT.PlayerState.PLAYING;\n }\n case 'time': {\n if (stream === null || typeof video.getCurrentTime !== 'function' || video.getCurrentTime() === null || !isFinite(video.getCurrentTime())) {\n return null;\n }\n\n return Math.floor(video.getCurrentTime() * 1000);\n }\n case 'duration': {\n if (stream === null || typeof video.getDuration !== 'function' || video.getDuration() === null || !isFinite(video.getDuration())) {\n return null;\n }\n\n return Math.floor(video.getDuration() * 1000);\n }\n case 'buffering': {\n if (stream === null || typeof video.getPlayerState !== 'function') {\n return null;\n }\n\n return video.getPlayerState() === YT.PlayerState.BUFFERING;\n }\n case 'volume': {\n if (stream === null || typeof video.getVolume !== 'function' || video.getVolume() === null || !isFinite(video.getVolume())) {\n return null;\n }\n\n return video.getVolume();\n }\n case 'muted': {\n if (stream === null || typeof video.isMuted !== 'function') {\n return null;\n }\n\n return video.isMuted();\n }\n case 'subtitlesTracks': {\n if (stream === null || typeof video.getOption !== 'function') {\n return [];\n }\n\n return (video.getOption('captions', 'tracklist') || [])\n .filter(function(track) {\n return track && typeof track.languageCode === 'string';\n })\n .map(function(track, index) {\n return Object.freeze({\n id: 'EMBEDDED_' + String(index),\n lang: track.languageCode,\n label: typeof track.displayName === 'string' ? track.displayName : track.languageCode,\n origin: 'EMBEDDED',\n embedded: true\n });\n });\n }\n case 'selectedSubtitlesTrackId': {\n if (stream === null) {\n return null;\n }\n\n return selectedSubtitlesTrackId;\n }\n default: {\n return null;\n }\n }\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onEnded() {\n events.emit('ended');\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName));\n }\n }\n function observeProp(propName) {\n if (observedProps.hasOwnProperty(propName)) {\n events.emit('propValue', propName, getProp(propName));\n observedProps[propName] = true;\n }\n }\n function setProp(propName, propValue) {\n switch (propName) {\n case 'paused': {\n if (stream !== null) {\n propValue ?\n typeof video.pauseVideo === 'function' && video.pauseVideo()\n :\n typeof video.playVideo === 'function' && video.playVideo();\n }\n\n break;\n }\n case 'time': {\n if (stream !== null && typeof video.seekTo === 'function' && propValue !== null && isFinite(propValue)) {\n video.seekTo(parseInt(propValue, 10) / 1000);\n }\n\n break;\n }\n case 'volume': {\n if (stream !== null && propValue !== null && isFinite(propValue)) {\n if (typeof video.unMute === 'function') {\n video.unMute();\n }\n if (typeof video.setVolume === 'function') {\n video.setVolume(Math.max(0, Math.min(100, parseInt(propValue, 10))));\n }\n onPropChanged('muted');\n onPropChanged('volume');\n }\n\n break;\n }\n case 'muted': {\n if (stream !== null) {\n propValue ?\n typeof video.mute === 'function' && video.mute()\n :\n typeof video.unMute === 'function' && video.unMute();\n onPropChanged('muted');\n }\n\n break;\n }\n case 'selectedSubtitlesTrackId': {\n if (stream !== null) {\n selectedSubtitlesTrackId = null;\n var selecterdTrack = getProp('subtitlesTracks')\n .find(function(track) {\n return track.id === propValue;\n });\n if (typeof video.setOption === 'function') {\n if (selecterdTrack) {\n selectedSubtitlesTrackId = selecterdTrack.id;\n video.setOption('captions', 'track', {\n languageCode: selecterdTrack.lang\n });\n events.emit('subtitlesTrackLoaded', selecterdTrack);\n } else {\n video.setOption('captions', 'track', {});\n }\n }\n onPropChanged('selectedSubtitlesTrackId');\n }\n\n break;\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n command('unload');\n if (commandArgs && commandArgs.stream && typeof commandArgs.stream.ytId === 'string') {\n if (ready) {\n stream = commandArgs.stream;\n onPropChanged('stream');\n onPropChanged('loaded');\n var autoplay = typeof commandArgs.autoplay === 'boolean' ? commandArgs.autoplay : true;\n var time = commandArgs.time !== null && isFinite(commandArgs.time) ? parseInt(commandArgs.time, 10) / 1000 : 0;\n if (autoplay && typeof video.loadVideoById === 'function') {\n video.loadVideoById({\n videoId: commandArgs.stream.ytId,\n startSeconds: time\n });\n } else if (typeof video.cueVideoById === 'function') {\n video.cueVideoById({\n videoId: commandArgs.stream.ytId,\n startSeconds: time\n });\n }\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n } else {\n pendingLoadArgs = commandArgs;\n }\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null\n }));\n }\n\n break;\n }\n case 'unload': {\n pendingLoadArgs = null;\n stream = null;\n onPropChanged('stream');\n onPropChanged('loaded');\n selectedSubtitlesTrackId = null;\n if (ready && typeof video.stopVideo === 'function') {\n video.stopVideo();\n }\n onPropChanged('paused');\n onPropChanged('time');\n onPropChanged('duration');\n onPropChanged('buffering');\n onPropChanged('volume');\n onPropChanged('muted');\n onPropChanged('subtitlesTracks');\n onPropChanged('selectedSubtitlesTrackId');\n break;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n events.removeAllListeners();\n clearInterval(timeChangedIntervalId);\n if (ready && typeof video.destroy === 'function') {\n video.destroy();\n }\n containerElement.removeChild(apiScriptElement);\n containerElement.removeChild(videoContainerElement);\n break;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n observeProp(action.propName);\n return;\n }\n case 'setProp': {\n setProp(action.propName, action.propValue);\n return;\n }\n case 'command': {\n command(action.commandName, action.commandArgs);\n return;\n }\n }\n }\n\n throw new Error('Invalid action dispatched: ' + JSON.stringify(action));\n };\n}\n\nYouTubeVideo.canPlayStream = function(stream) {\n return Promise.resolve(stream && typeof stream.ytId === 'string');\n};\n\nYouTubeVideo.manifest = {\n name: 'YouTubeVideo',\n external: false,\n props: ['stream', 'loaded', 'paused', 'time', 'duration', 'buffering', 'volume', 'muted', 'subtitlesTracks', 'selectedSubtitlesTrackId'],\n commands: ['load', 'unload', 'destroy'],\n events: ['propValue', 'propChanged', 'ended', 'error', 'subtitlesTrackLoaded']\n};\n\nmodule.exports = YouTubeVideo;\n","var YouTubeVideo = require('./YouTubeVideo');\n\nmodule.exports = YouTubeVideo;\n","var ERROR = {\n CHROMECAST_SENDER_VIDEO: {\n INVALID_MESSAGE_RECEIVED: {\n code: 100,\n message: 'Invalid message received'\n },\n MESSAGE_SEND_FAILED: {\n code: 101,\n message: 'Failed to send message'\n }\n },\n YOUTUBE_VIDEO: {\n API_LOAD_FAILED: {\n code: 90,\n message: 'YouTube player iframe API failed to load',\n },\n INVALID_PARAMETER: {\n code: 91,\n message: 'The request contains an invalid parameter value'\n },\n HTML5_VIDEO: {\n code: 92,\n message: 'The requested content cannot be played in an HTML5 player'\n },\n VIDEO_NOT_FOUND: {\n code: 93,\n message: 'The video requested was not found'\n },\n VIDEO_NOT_EMBEDDABLE: {\n code: 94,\n message: 'The owner of the requested video does not allow it to be played in embedded players'\n }\n },\n HTML_VIDEO: {\n MEDIA_ERR_ABORTED: {\n code: 80,\n message: 'Fetching process aborted'\n },\n MEDIA_ERR_NETWORK: {\n code: 81,\n message: 'Error occurred when downloading'\n },\n MEDIA_ERR_DECODE: {\n code: 82,\n message: 'Error occurred when decoding'\n },\n MEDIA_ERR_SRC_NOT_SUPPORTED: {\n code: 83,\n message: 'Video is not supported'\n }\n },\n WITH_HTML_SUBTITLES: {\n LOAD_FAILED: {\n code: 70,\n message: 'Failed to load external subtitles'\n }\n },\n WITH_STREAMING_SERVER: {\n CONVERT_FAILED: {\n code: 60,\n message: 'Streaming server failed to convert torrent stream'\n }\n },\n UNKNOWN_ERROR: {\n code: 1,\n message: 'Unknown error'\n },\n UNSUPPORTED_STREAM: {\n code: 2,\n message: 'Stream is not supported'\n }\n};\n\nmodule.exports = ERROR;\n","var StremioVideo = require('./StremioVideo');\n\nmodule.exports = StremioVideo;\n","var VIDEO_CODEC_CONFIGS = [\n {\n codec: 'h264',\n mime: 'video/mp4; codecs=\"avc1.42E01E\"',\n },\n {\n codec: 'h265',\n mime: 'video/mp4; codecs=\"hev1.1.6.L150.B0\"',\n aliases: ['hevc']\n },\n {\n codec: 'vp8',\n mime: 'video/mp4; codecs=\"vp8\"'\n },\n {\n codec: 'vp9',\n mime: 'video/mp4; codecs=\"vp9\"'\n }\n];\n\nvar AUDIO_CODEC_CONFIGS = [\n {\n codec: 'aac',\n mime: 'audio/mp4; codecs=\"mp4a.40.2\"'\n },\n {\n codec: 'mp3',\n mime: 'audio/mp4; codecs=\"mp3\"'\n },\n {\n codec: 'ac3',\n mime: 'audio/mp4; codecs=\"ac-3\"'\n },\n {\n codec: 'eac3',\n mime: 'audio/mp4; codecs=\"ec-3\"'\n },\n {\n codec: 'vorbis',\n mime: 'audio/mp4; codecs=\"vorbis\"'\n },\n {\n codec: 'opus',\n mime: 'audio/mp4; codecs=\"opus\"'\n }\n];\n\nfunction canPlay(config, options) {\n return options.mediaElement.canPlayType(config.mime) ?\n [config.codec].concat(config.aliases || [])\n :\n [];\n}\n\nfunction getMaxAudioChannels() {\n if (/firefox/i.test(window.navigator.userAgent)) {\n return 6;\n }\n\n if (!window.AudioContext) {\n return 2;\n }\n\n var maxChannelCount = new AudioContext().destination.maxChannelCount;\n return maxChannelCount > 0 ? maxChannelCount : 2;\n}\n\nfunction getMediaCapabilities() {\n var mediaElement = document.createElement('video');\n var formats = ['mp4'];\n var videoCodecs = VIDEO_CODEC_CONFIGS\n .map(function(config) {\n return canPlay(config, { mediaElement: mediaElement });\n })\n .reduce(function(result, value) {\n return result.concat(value);\n }, []);\n var audioCodecs = AUDIO_CODEC_CONFIGS\n .map(function(config) {\n return canPlay(config, { mediaElement: mediaElement });\n })\n .reduce(function(result, value) {\n return result.concat(value);\n }, []);\n var maxAudioChannels = getMaxAudioChannels();\n return {\n formats: formats,\n videoCodecs: videoCodecs,\n audioCodecs: audioCodecs,\n maxAudioChannels: maxAudioChannels\n };\n}\n\nmodule.exports = getMediaCapabilities();\n","function binarySearchUpperBound(array, value) {\n if (value < array[0] || array[array.length - 1] < value) {\n return -1;\n }\n\n var left = 0;\n var right = array.length - 1;\n var index = -1;\n while (left <= right) {\n var middle = Math.floor((left + right) / 2);\n if (array[middle] > value) {\n right = middle - 1;\n } else if (array[middle] < value) {\n left = middle + 1;\n } else {\n index = middle;\n left = middle + 1;\n }\n }\n\n return index !== -1 ? index : right;\n}\n\nmodule.exports = binarySearchUpperBound;\n","var withHTMLSubtitles = require('./withHTMLSubtitles');\n\nmodule.exports = withHTMLSubtitles;\n","// from: https://github.com/silviapfeiffer/silviapfeiffer.github.io/blob/master/index.html#L150-L216\n\nfunction srt2webvtt(data) {\n // remove dos newlines\n var srt = data.replace(/\\r+/g, '');\n // trim white space start and end\n srt = srt.replace(/^\\s+|\\s+$/g, '');\n // get cues\n var cuelist = srt.split('\\n\\n');\n var result = '';\n if (cuelist.length > 0) {\n result += 'WEBVTT\\n\\n';\n for (var i = 0; i < cuelist.length; i = i + 1) {\n result += convertSrtCue(cuelist[i]);\n }\n }\n return result;\n}\n\nfunction convertSrtCue(caption) {\n // remove all html tags for security reasons\n caption = caption.replace(/<[a-zA-Z/][^>]*>/g, '');\n\n var cue = '';\n var s = caption.split(/\\n/);\n // concatenate muilt-line string separated in array into one\n while (s.length > 3) {\n for (var i = 3; i < s.length; i++) {\n s[2] += '\\n' + s[i];\n }\n s.splice(3, s.length - 3);\n }\n var line = 0;\n // detect identifier\n if (!s[0].match(/\\d+:\\d+:\\d+/) && s[1].match(/\\d+:\\d+:\\d+/)) {\n cue += s[0].match(/\\w+/) + '\\n';\n line += 1;\n }\n // get time strings\n if (s[line].match(/\\d+:\\d+:\\d+/)) {\n // convert time string\n var m = s[1].match(/(\\d+):(\\d+):(\\d+)(?:,(\\d+))?\\s*--?>\\s*(\\d+):(\\d+):(\\d+)(?:,(\\d+))?/);\n if (m) {\n cue += m[1] + ':' + m[2] + ':' + m[3] + '.' + m[4] + ' --> '\n + m[5] + ':' + m[6] + ':' + m[7] + '.' + m[8] + '\\n';\n line += 1;\n } else {\n // Unrecognized timestring\n return '';\n }\n } else {\n // file format error or comment lines\n return '';\n }\n // get cue text\n if (s[line]) {\n cue += s[line] + '\\n\\n';\n }\n return cue;\n}\n\nmodule.exports = {\n convert: function(text) {\n // presume all to be SRT if not WEBVTT\n if (text.includes('WEBVTT')) {\n return text;\n }\n\n try {\n return srt2webvtt(text);\n } catch (error) {\n throw new Error('Failed to convert srt to webvtt: ' + error.message);\n }\n }\n};\n","var VTTJS = require('vtt.js');\nvar binarySearchUpperBound = require('./binarySearchUpperBound');\n\nvar CRITICAL_ERROR_CODE = 0;\n\nfunction parse(text) {\n return new Promise(function(resolve, reject) {\n var parser = new VTTJS.WebVTT.Parser(window, VTTJS.WebVTT.StringDecoder());\n var errors = [];\n var cues = [];\n var cuesByTime = {};\n\n parser.oncue = function(c) {\n var cue = {\n startTime: (c.startTime * 1000) | 0,\n endTime: (c.endTime * 1000) | 0,\n text: c.text\n };\n cues.push(cue);\n cuesByTime[cue.startTime] = cuesByTime[cue.startTime] || [];\n cuesByTime[cue.endTime] = cuesByTime[cue.endTime] || [];\n };\n\n parser.onparsingerror = function(error) {\n if (error.code === CRITICAL_ERROR_CODE) {\n parser.oncue = null;\n parser.onparsingerror = null;\n parser.onflush = null;\n reject(error);\n } else {\n console.warn('Subtitles parsing error', error);\n errors.push(error);\n }\n };\n\n parser.onflush = function() {\n cuesByTime.times = Object.keys(cuesByTime)\n .map(function(time) {\n return parseInt(time, 10);\n })\n .sort(function(t1, t2) {\n return t1 - t2;\n });\n for (var i = 0; i < cues.length; i++) {\n cuesByTime[cues[i].startTime].push(cues[i]);\n var startTimeIndex = binarySearchUpperBound(cuesByTime.times, cues[i].startTime);\n for (var j = startTimeIndex + 1; j < cuesByTime.times.length; j++) {\n if (cues[i].endTime <= cuesByTime.times[j]) {\n break;\n }\n\n cuesByTime[cuesByTime.times[j]].push(cues[i]);\n }\n }\n\n for (var k = 0; k < cuesByTime.times.length; k++) {\n cuesByTime[cuesByTime.times[k]].sort(function(c1, c2) {\n return c1.startTime - c2.startTime ||\n c1.endTime - c2.endTime;\n });\n }\n\n parser.oncue = null;\n parser.onparsingerror = null;\n parser.onflush = null;\n // we may have multiple parsing errors here, but will only respond with the first\n // if subtitle cues are available, we will not reject the promise\n if (cues.length === 0 && errors.length) {\n reject(errors[0]);\n } else if (cuesByTime.times.length === 0) {\n reject(new Error('Missing subtitle track cues'));\n } else {\n resolve(cuesByTime);\n }\n };\n\n parser.parse(text);\n });\n}\n\nmodule.exports = {\n parse: parse\n};\n","var VTTJS = require('vtt.js');\nvar binarySearchUpperBound = require('./binarySearchUpperBound');\n\nfunction render(cuesByTime, time) {\n var nodes = [];\n var timeIndex = binarySearchUpperBound(cuesByTime.times, time);\n if (timeIndex !== -1) {\n var cuesForTime = cuesByTime[cuesByTime.times[timeIndex]];\n for (var i = 0; i < cuesForTime.length; i++) {\n var node = VTTJS.WebVTT.convertCueToDOMTree(window, cuesForTime[i].text);\n nodes.push(node);\n }\n }\n\n return nodes;\n}\n\nmodule.exports = {\n render: render\n};\n","var EventEmitter = require('eventemitter3');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar Color = require('color');\nvar ERROR = require('../error');\nvar subtitlesParser = require('./subtitlesParser');\nvar subtitlesRenderer = require('./subtitlesRenderer');\nvar subtitlesConverter = require('./subtitlesConverter');\n\nfunction withHTMLSubtitles(Video) {\n function VideoWithHTMLSubtitles(options) {\n options = options || {};\n\n var video = new Video(options);\n video.on('error', onVideoError);\n video.on('propValue', onVideoPropEvent.bind(null, 'propValue'));\n video.on('propChanged', onVideoPropEvent.bind(null, 'propChanged'));\n Video.manifest.events\n .filter(function(eventName) {\n return !['error', 'propValue', 'propChanged'].includes(eventName);\n })\n .forEach(function(eventName) {\n video.on(eventName, onOtherVideoEvent(eventName));\n });\n\n var containerElement = options.containerElement;\n if (!(containerElement instanceof HTMLElement)) {\n throw new Error('Container element required to be instance of HTMLElement');\n }\n\n var subtitlesElement = document.createElement('div');\n subtitlesElement.style.position = 'absolute';\n subtitlesElement.style.right = '0';\n subtitlesElement.style.bottom = '0';\n subtitlesElement.style.left = '0';\n subtitlesElement.style.zIndex = '1';\n subtitlesElement.style.textAlign = 'center';\n containerElement.style.position = 'relative';\n containerElement.style.zIndex = '0';\n containerElement.appendChild(subtitlesElement);\n\n var videoState = {\n time: null\n };\n var cuesByTime = null;\n var events = new EventEmitter();\n var destroyed = false;\n var tracks = [];\n var selectedTrackId = null;\n var delay = null;\n var size = 100;\n var offset = 0;\n var textColor = 'rgb(255, 255, 255)';\n var backgroundColor = 'rgba(0, 0, 0, 0)';\n var outlineColor = 'rgb(34, 34, 34)';\n var observedProps = {\n extraSubtitlesTracks: false,\n selectedExtraSubtitlesTrackId: false,\n extraSubtitlesDelay: false,\n extraSubtitlesSize: false,\n extraSubtitlesOffset: false,\n extraSubtitlesTextColor: false,\n extraSubtitlesBackgroundColor: false,\n extraSubtitlesOutlineColor: false\n };\n\n function renderSubtitles() {\n while (subtitlesElement.hasChildNodes()) {\n subtitlesElement.removeChild(subtitlesElement.lastChild);\n }\n\n if (cuesByTime === null || videoState.time === null || !isFinite(videoState.time)) {\n return;\n }\n\n subtitlesElement.style.bottom = offset + '%';\n subtitlesRenderer.render(cuesByTime, videoState.time + delay).forEach(function(cueNode) {\n cueNode.style.display = 'inline-block';\n cueNode.style.padding = '0.2em';\n cueNode.style.fontSize = Math.floor(size / 25) + 'vmin';\n cueNode.style.color = textColor;\n cueNode.style.backgroundColor = backgroundColor;\n cueNode.style.textShadow = '1px 1px 0.1em ' + outlineColor;\n subtitlesElement.appendChild(cueNode);\n subtitlesElement.appendChild(document.createElement('br'));\n });\n }\n function onVideoError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onVideoPropEvent(eventName, propName, propValue) {\n switch (propName) {\n case 'time': {\n videoState.time = propValue;\n renderSubtitles();\n break;\n }\n }\n\n events.emit(eventName, propName, getProp(propName, propValue));\n }\n function onOtherVideoEvent(eventName) {\n return function() {\n events.emit.apply(events, [eventName].concat(Array.from(arguments)));\n };\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName, null));\n }\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n video.dispatch({ type: 'command', commandName: 'unload' });\n }\n }\n function getProp(propName, videoPropValue) {\n switch (propName) {\n case 'extraSubtitlesTracks': {\n if (destroyed) {\n return [];\n }\n\n return tracks.slice();\n }\n case 'selectedExtraSubtitlesTrackId': {\n if (destroyed) {\n return null;\n }\n\n return selectedTrackId;\n }\n case 'extraSubtitlesDelay': {\n if (destroyed) {\n return null;\n }\n\n return delay;\n }\n case 'extraSubtitlesSize': {\n if (destroyed) {\n return null;\n }\n\n return size;\n }\n case 'extraSubtitlesOffset': {\n if (destroyed) {\n return null;\n }\n\n return offset;\n }\n case 'extraSubtitlesTextColor': {\n if (destroyed) {\n return null;\n }\n\n return textColor;\n }\n case 'extraSubtitlesBackgroundColor': {\n if (destroyed) {\n return null;\n }\n\n return backgroundColor;\n }\n case 'extraSubtitlesOutlineColor': {\n if (destroyed) {\n return null;\n }\n\n return outlineColor;\n }\n default: {\n return videoPropValue;\n }\n }\n }\n function observeProp(propName) {\n switch (propName) {\n case 'extraSubtitlesTracks':\n case 'selectedExtraSubtitlesTrackId':\n case 'extraSubtitlesDelay':\n case 'extraSubtitlesSize':\n case 'extraSubtitlesOffset':\n case 'extraSubtitlesTextColor':\n case 'extraSubtitlesBackgroundColor':\n case 'extraSubtitlesOutlineColor': {\n events.emit('propValue', propName, getProp(propName, null));\n observedProps[propName] = true;\n return true;\n }\n default: {\n return false;\n }\n }\n }\n function setProp(propName, propValue) {\n switch (propName) {\n case 'selectedExtraSubtitlesTrackId': {\n cuesByTime = null;\n selectedTrackId = null;\n delay = null;\n var selectedTrack = tracks.find(function(track) {\n return track.id === propValue;\n });\n if (selectedTrack) {\n selectedTrackId = selectedTrack.id;\n delay = 0;\n fetch(selectedTrack.url)\n .then(function(resp) {\n if (resp.ok) {\n return resp.text();\n }\n\n throw new Error(resp.status + ' (' + resp.statusText + ')');\n })\n .then(function(text) {\n return subtitlesConverter.convert(text);\n })\n .then(function(text) {\n return subtitlesParser.parse(text);\n })\n .then(function(result) {\n if (selectedTrackId !== selectedTrack.id) {\n return;\n }\n\n cuesByTime = result;\n renderSubtitles();\n events.emit('extraSubtitlesTrackLoaded', selectedTrack);\n })\n .catch(function(error) {\n if (selectedTrackId !== selectedTrack.id) {\n return;\n }\n\n onError(Object.assign({}, ERROR.WITH_HTML_SUBTITLES.LOAD_FAILED, {\n error: error,\n track: selectedTrack,\n critical: false\n }));\n });\n }\n renderSubtitles();\n onPropChanged('selectedExtraSubtitlesTrackId');\n onPropChanged('extraSubtitlesDelay');\n return true;\n }\n case 'extraSubtitlesDelay': {\n if (selectedTrackId !== null && propValue !== null && isFinite(propValue)) {\n delay = parseInt(propValue, 10);\n renderSubtitles();\n onPropChanged('extraSubtitlesDelay');\n }\n\n return true;\n }\n case 'extraSubtitlesSize': {\n if (propValue !== null && isFinite(propValue)) {\n size = Math.max(0, parseInt(propValue, 10));\n renderSubtitles();\n onPropChanged('extraSubtitlesSize');\n }\n\n return true;\n }\n case 'extraSubtitlesOffset': {\n if (propValue !== null && isFinite(propValue)) {\n offset = Math.max(0, Math.min(100, parseInt(propValue, 10)));\n renderSubtitles();\n onPropChanged('extraSubtitlesOffset');\n }\n\n return true;\n }\n case 'extraSubtitlesTextColor': {\n if (typeof propValue === 'string') {\n try {\n textColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('withHTMLSubtitles', error);\n }\n\n renderSubtitles();\n onPropChanged('extraSubtitlesTextColor');\n }\n\n return true;\n }\n case 'extraSubtitlesBackgroundColor': {\n if (typeof propValue === 'string') {\n try {\n backgroundColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('withHTMLSubtitles', error);\n }\n\n renderSubtitles();\n onPropChanged('extraSubtitlesBackgroundColor');\n }\n\n return true;\n }\n case 'extraSubtitlesOutlineColor': {\n if (typeof propValue === 'string') {\n try {\n outlineColor = Color(propValue).rgb().string();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('withHTMLSubtitles', error);\n }\n\n renderSubtitles();\n onPropChanged('extraSubtitlesOutlineColor');\n }\n\n return true;\n }\n default: {\n return false;\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'addExtraSubtitlesTracks': {\n if (commandArgs && Array.isArray(commandArgs.tracks)) {\n tracks = tracks\n .concat(commandArgs.tracks)\n .filter(function(track, index, tracks) {\n return track &&\n typeof track.id === 'string' &&\n typeof track.url === 'string' &&\n typeof track.lang === 'string' &&\n typeof track.label === 'string' &&\n typeof track.origin === 'string' &&\n !track.embedded &&\n index === tracks.findIndex(function(t) { return t.id === track.id; });\n });\n onPropChanged('extraSubtitlesTracks');\n }\n\n return true;\n }\n case 'load': {\n command('unload');\n if (commandArgs.stream && Array.isArray(commandArgs.stream.subtitles)) {\n command('addExtraSubtitlesTracks', {\n tracks: commandArgs.stream.subtitles.map(function(track) {\n return Object.assign({}, track, {\n origin: 'EXCLUSIVE',\n exclusive: true,\n embedded: false\n });\n })\n });\n }\n\n return false;\n }\n case 'unload': {\n cuesByTime = null;\n tracks = [];\n selectedTrackId = null;\n delay = null;\n renderSubtitles();\n onPropChanged('extraSubtitlesTracks');\n onPropChanged('selectedExtraSubtitlesTrackId');\n onPropChanged('extraSubtitlesDelay');\n return false;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n onPropChanged('extraSubtitlesSize');\n onPropChanged('extraSubtitlesOffset');\n onPropChanged('extraSubtitlesTextColor');\n onPropChanged('extraSubtitlesBackgroundColor');\n onPropChanged('extraSubtitlesOutlineColor');\n video.dispatch({ type: 'command', commandName: 'destroy' });\n events.removeAllListeners();\n containerElement.removeChild(subtitlesElement);\n return true;\n }\n default: {\n return false;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n if (observeProp(action.propName)) {\n return;\n }\n\n break;\n }\n case 'setProp': {\n if (setProp(action.propName, action.propValue)) {\n return;\n }\n\n break;\n }\n case 'command': {\n if (command(action.commandName, action.commandArgs)) {\n return;\n }\n\n break;\n }\n }\n }\n\n video.dispatch(action);\n };\n }\n\n VideoWithHTMLSubtitles.canPlayStream = function(stream) {\n return Video.canPlayStream(stream);\n };\n\n VideoWithHTMLSubtitles.manifest = {\n name: Video.manifest.name + 'WithHTMLSubtitles',\n external: Video.manifest.external,\n props: Video.manifest.props.concat(['extraSubtitlesTracks', 'selectedExtraSubtitlesTrackId', 'extraSubtitlesDelay', 'extraSubtitlesSize', 'extraSubtitlesOffset', 'extraSubtitlesTextColor', 'extraSubtitlesBackgroundColor', 'extraSubtitlesOutlineColor'])\n .filter(function(value, index, array) { return array.indexOf(value) === index; }),\n commands: Video.manifest.commands.concat(['load', 'unload', 'destroy', 'addExtraSubtitlesTracks'])\n .filter(function(value, index, array) { return array.indexOf(value) === index; }),\n events: Video.manifest.events.concat(['propValue', 'propChanged', 'error', 'extraSubtitlesTrackLoaded'])\n .filter(function(value, index, array) { return array.indexOf(value) === index; })\n };\n\n return VideoWithHTMLSubtitles;\n}\n\nmodule.exports = withHTMLSubtitles;\n","var magnet = require('magnet-uri');\nvar createTorrent = require('./createTorrent');\n\nfunction convertStream(streamingServerURL, stream, seriesInfo) {\n return new Promise(function(resolve, reject) {\n if (typeof stream.url === 'string') {\n if (stream.url.indexOf('magnet:') === 0) {\n var parsedMagnetURI;\n try {\n parsedMagnetURI = magnet.decode(stream.url);\n if (!parsedMagnetURI || typeof parsedMagnetURI.infoHash !== 'string') {\n throw new Error('Failed to decode magnet url');\n }\n } catch (error) {\n reject(error);\n return;\n }\n\n var sources = Array.isArray(parsedMagnetURI.announce) ?\n parsedMagnetURI.announce.map(function(source) {\n return 'tracker:' + source;\n })\n :\n [];\n createTorrent(streamingServerURL, parsedMagnetURI.infoHash, null, sources, seriesInfo)\n .then(function(url) {\n resolve(url);\n })\n .catch(function(error) {\n reject(error);\n });\n } else {\n resolve(stream.url);\n }\n\n return;\n }\n\n if (typeof stream.infoHash === 'string') {\n createTorrent(streamingServerURL, stream.infoHash, stream.fileIdx, stream.announce, seriesInfo)\n .then(function(url) {\n resolve(url);\n })\n .catch(function(error) {\n reject(error);\n });\n\n return;\n }\n\n reject(new Error('Stream cannot be converted'));\n });\n}\n\nmodule.exports = convertStream;\n","var url = require('url');\n\nfunction buildTorrentUrl(streamingServerURL, infoHash, fileIdx, sources) {\n var query = Array.isArray(sources) && sources.length > 0 ?\n '?' + new URLSearchParams(sources.map(function(source) {\n return ['tr', source];\n }))\n :\n '';\n return url.resolve(streamingServerURL, '/' + encodeURIComponent(infoHash) + '/' + encodeURIComponent(fileIdx)) + query;\n}\n\nfunction createTorrent(streamingServerURL, infoHash, fileIdx, sources, seriesInfo) {\n if ((!Array.isArray(sources) || sources.length === 0) && (fileIdx !== null && isFinite(fileIdx))) {\n return Promise.resolve(buildTorrentUrl(streamingServerURL, infoHash, fileIdx, sources));\n }\n\n var body = {\n torrent: {\n infoHash: infoHash,\n }\n };\n\n if (Array.isArray(sources) && sources.length > 0) {\n body.peerSearch = {\n sources: ['dht:' + infoHash].concat(sources).filter(function(source, index, sources) {\n return sources.indexOf(source) === index;\n }),\n min: 40,\n max: 200\n };\n }\n\n if (fileIdx === null || !isFinite(fileIdx)) {\n body.guessFileIdx = {};\n if (seriesInfo) {\n if (seriesInfo.season !== null && isFinite(seriesInfo.season)) {\n body.guessFileIdx.season = seriesInfo.season;\n }\n if (seriesInfo.episode !== null && isFinite(seriesInfo.episode)) {\n body.guessFileIdx.episode = seriesInfo.episode;\n }\n }\n } else {\n body.guessFileIdx = false;\n }\n\n return fetch(url.resolve(streamingServerURL, '/' + encodeURIComponent(infoHash) + '/create'), {\n method: 'POST',\n headers: {\n 'content-type': 'application/json'\n },\n body: JSON.stringify(body)\n }).then(function(resp) {\n if (resp.ok) {\n return resp.json();\n }\n\n throw new Error(resp.status + ' (' + resp.statusText + ')');\n }).then(function(resp) {\n return buildTorrentUrl(streamingServerURL, infoHash, body.guessFileIdx ? resp.guessedFileIdx : fileIdx, body.peerSearch ? body.peerSearch.sources : []);\n });\n}\n\nmodule.exports = createTorrent;\n","var withStreamingServer = require('./withStreamingServer');\n\nmodule.exports = withStreamingServer;\n","var EventEmitter = require('eventemitter3');\nvar url = require('url');\nvar hat = require('hat');\nvar cloneDeep = require('lodash.clonedeep');\nvar deepFreeze = require('deep-freeze');\nvar mediaCapabilities = require('../mediaCapabilities');\nvar convertStream = require('./convertStream');\nvar ERROR = require('../error');\n\nfunction withStreamingServer(Video) {\n function VideoWithStreamingServer(options) {\n options = options || {};\n\n var video = new Video(options);\n video.on('error', onVideoError);\n video.on('propValue', onVideoPropEvent.bind(null, 'propValue'));\n video.on('propChanged', onVideoPropEvent.bind(null, 'propChanged'));\n Video.manifest.events\n .filter(function(eventName) {\n return !['error', 'propValue', 'propChanged'].includes(eventName);\n })\n .forEach(function(eventName) {\n video.on(eventName, onOtherVideoEvent(eventName));\n });\n\n var self = this;\n var loadArgs = null;\n var loaded = false;\n var actionsQueue = [];\n var events = new EventEmitter();\n var destroyed = false;\n var observedProps = {\n stream: false\n };\n\n function flushActionsQueue() {\n while (actionsQueue.length > 0) {\n var action = actionsQueue.shift();\n self.dispatch.call(self, action);\n }\n }\n function onVideoError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n }\n }\n function onVideoPropEvent(eventName, propName, propValue) {\n events.emit(eventName, propName, getProp(propName, propValue));\n }\n function onOtherVideoEvent(eventName) {\n return function() {\n events.emit.apply(events, [eventName].concat(Array.from(arguments)));\n };\n }\n function onPropChanged(propName) {\n if (observedProps[propName]) {\n events.emit('propChanged', propName, getProp(propName, null));\n }\n }\n function onError(error) {\n events.emit('error', error);\n if (error.critical) {\n command('unload');\n video.dispatch({ type: 'command', commandName: 'unload' });\n }\n }\n function getProp(propName, videoPropValue) {\n switch (propName) {\n case 'stream': {\n return loadArgs !== null ? loadArgs.stream : null;\n }\n default: {\n return videoPropValue;\n }\n }\n }\n function observeProp(propName) {\n switch (propName) {\n case 'stream': {\n events.emit('propValue', propName, getProp(propName, null));\n observedProps[propName] = true;\n return true;\n }\n default: {\n return false;\n }\n }\n }\n function command(commandName, commandArgs) {\n switch (commandName) {\n case 'load': {\n if (commandArgs && commandArgs.stream && typeof commandArgs.streamingServerURL === 'string') {\n command('unload');\n video.dispatch({ type: 'command', commandName: 'unload' });\n loadArgs = commandArgs;\n onPropChanged('stream');\n convertStream(commandArgs.streamingServerURL, commandArgs.stream, commandArgs.seriesInfo)\n .then(function(mediaURL) {\n var formats = Array.isArray(commandArgs.formats) ?\n commandArgs.formats\n :\n mediaCapabilities.formats;\n var videoCodecs = Array.isArray(commandArgs.videoCodecs) ?\n commandArgs.videoCodecs\n :\n mediaCapabilities.videoCodecs;\n var audioCodecs = Array.isArray(commandArgs.audioCodecs) ?\n commandArgs.audioCodecs\n :\n mediaCapabilities.audioCodecs;\n var maxAudioChannels = commandArgs.maxAudioChannels !== null && isFinite(commandArgs.maxAudioChannels) ?\n commandArgs.maxAudioChannels\n :\n mediaCapabilities.maxAudioChannels;\n var canPlayStreamOptions = Object.assign({}, commandArgs, {\n formats: formats,\n videoCodecs: videoCodecs,\n audioCodecs: audioCodecs,\n maxAudioChannels: maxAudioChannels\n });\n return (commandArgs.forceTranscoding ? Promise.resolve(false) : VideoWithStreamingServer.canPlayStream({ url: mediaURL }, canPlayStreamOptions))\n .catch(function(error) {\n console.warn('Media probe error', error);\n return false;\n })\n .then(function(canPlay) {\n if (canPlay) {\n return {\n url: mediaURL\n };\n }\n\n var id = hat();\n var queryParams = new URLSearchParams([['mediaURL', mediaURL]]);\n if (commandArgs.forceTranscoding) {\n queryParams.set('forceTranscoding', '1');\n }\n\n videoCodecs.forEach(function(videoCodec) {\n queryParams.append('videoCodecs', videoCodec);\n });\n\n audioCodecs.forEach(function(audioCodec) {\n queryParams.append('audioCodecs', audioCodec);\n });\n\n queryParams.set('maxAudioChannels', maxAudioChannels);\n\n return {\n url: url.resolve(commandArgs.streamingServerURL, '/hlsv2/' + id + '/master.m3u8?' + queryParams.toString()),\n subtitles: Array.isArray(commandArgs.stream.subtitles) ?\n commandArgs.stream.subtitles.map(function(track) {\n return Object.assign({}, track, {\n url: typeof track.url === 'string' ?\n url.resolve(commandArgs.streamingServerURL, '/subtitles.vtt?' + new URLSearchParams([['from', track.url]]).toString())\n :\n track.url\n });\n })\n :\n [],\n behaviorHints: {\n headers: {\n 'content-type': 'application/vnd.apple.mpegurl'\n }\n }\n };\n });\n })\n .then(function(stream) {\n if (commandArgs !== loadArgs) {\n return;\n }\n\n video.dispatch({\n type: 'command',\n commandName: 'load',\n commandArgs: Object.assign({}, commandArgs, {\n stream: stream\n })\n });\n loaded = true;\n flushActionsQueue();\n })\n .catch(function(error) {\n if (commandArgs !== loadArgs) {\n return;\n }\n\n onError(Object.assign({}, ERROR.WITH_STREAMING_SERVER.CONVERT_FAILED, {\n error: error,\n critical: true,\n stream: commandArgs.stream,\n streamingServerURL: commandArgs.streamingServerURL\n }));\n });\n } else {\n onError(Object.assign({}, ERROR.UNSUPPORTED_STREAM, {\n critical: true,\n stream: commandArgs ? commandArgs.stream : null,\n streamingServerURL: commandArgs && typeof commandArgs.streamingServerURL === 'string' ? commandArgs.streamingServerURL : null\n }));\n }\n\n return true;\n }\n case 'addExtraSubtitlesTracks': {\n if (loadArgs && commandArgs && Array.isArray(commandArgs.tracks)) {\n if (loaded) {\n video.dispatch({\n type: 'command',\n commandName: 'addExtraSubtitlesTracks',\n commandArgs: Object.assign({}, commandArgs, {\n tracks: commandArgs.tracks.map(function(track) {\n return Object.assign({}, track, {\n url: typeof track.url === 'string' ?\n url.resolve(loadArgs.streamingServerURL, '/subtitles.vtt?' + new URLSearchParams([['from', track.url]]).toString())\n :\n track.url\n });\n })\n })\n });\n } else {\n actionsQueue.push({\n type: 'command',\n commandName: 'addExtraSubtitlesTracks',\n commandArgs: commandArgs\n });\n }\n }\n\n return true;\n }\n case 'unload': {\n loadArgs = null;\n loaded = false;\n actionsQueue = [];\n onPropChanged('stream');\n return false;\n }\n case 'destroy': {\n command('unload');\n destroyed = true;\n video.dispatch({ type: 'command', commandName: 'destroy' });\n events.removeAllListeners();\n return true;\n }\n default: {\n if (!loaded) {\n actionsQueue.push({\n type: 'command',\n commandName: commandName,\n commandArgs: commandArgs\n });\n\n return true;\n }\n\n return false;\n }\n }\n }\n\n this.on = function(eventName, listener) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n events.on(eventName, listener);\n };\n this.dispatch = function(action) {\n if (destroyed) {\n throw new Error('Video is destroyed');\n }\n\n if (action) {\n action = deepFreeze(cloneDeep(action));\n switch (action.type) {\n case 'observeProp': {\n if (observeProp(action.propName)) {\n return;\n }\n\n break;\n }\n case 'command': {\n if (command(action.commandName, action.commandArgs)) {\n return;\n }\n\n break;\n }\n }\n }\n\n video.dispatch(action);\n };\n }\n\n VideoWithStreamingServer.canPlayStream = function(stream, options) {\n return Video.canPlayStream(stream)\n .then(function(canPlay) {\n if (!canPlay) {\n throw new Error('Fallback using /hlsv2/probe');\n }\n\n return canPlay;\n })\n .catch(function() {\n var queryParams = new URLSearchParams([['mediaURL', stream.url]]);\n return fetch(url.resolve(options.streamingServerURL, '/hlsv2/probe?' + queryParams.toString()))\n .then(function(resp) {\n return resp.json();\n })\n .then(function(probe) {\n var isFormatSupported = options.formats.some(function(format) {\n return probe.format.name.indexOf(format) !== -1;\n });\n var areStreamsSupported = probe.streams.every(function(stream) {\n if (stream.track === 'audio') {\n return stream.channels <= options.maxAudioChannels &&\n options.audioCodecs.indexOf(stream.codec) !== -1;\n } else if (stream.track === 'video') {\n return options.videoCodecs.indexOf(stream.codec) !== -1;\n }\n\n return true;\n });\n return isFormatSupported && areStreamsSupported;\n });\n });\n };\n\n VideoWithStreamingServer.manifest = {\n name: Video.manifest.name + 'WithStreamingServer',\n external: Video.manifest.external,\n props: Video.manifest.props.concat(['stream'])\n .filter(function(value, index, array) { return array.indexOf(value) === index; }),\n commands: Video.manifest.commands.concat(['load', 'unload', 'destroy', 'addExtraSubtitlesTracks'])\n .filter(function(value, index, array) { return array.indexOf(value) === index; }),\n events: Video.manifest.events.concat(['propValue', 'propChanged', 'error'])\n .filter(function(value, index, array) { return array.indexOf(value) === index; })\n };\n\n return VideoWithStreamingServer;\n}\n\nmodule.exports = withStreamingServer;\n","/*!\n * a-color-picker (https://github.com/narsenico/a-color-picker)\n * \n * Copyright (c) 2017-2018, Gianfranco Caldi.\n * Released under the MIT License.\n */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"AColorPicker\",[],t):\"object\"==typeof exports?exports.AColorPicker=t():e.AColorPicker=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){var t={};function r(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(i,o,function(t){return e[t]}.bind(null,o));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=1)}([function(e,t,r){\"use strict\";\n/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */var i=r(3);function o(e){return!0===i(e)&&\"[object Object]\"===Object.prototype.toString.call(e)}e.exports=function(e){var t,r;return!1!==o(e)&&\"function\"==typeof(t=e.constructor)&&!1!==o(r=t.prototype)&&!1!==r.hasOwnProperty(\"isPrototypeOf\")}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.VERSION=t.PALETTE_MATERIAL_CHROME=t.PALETTE_MATERIAL_500=t.COLOR_NAMES=t.getLuminance=t.intToRgb=t.rgbToInt=t.rgbToHsv=t.rgbToHsl=t.hslToRgb=t.rgbToHex=t.parseColor=t.parseColorToHsla=t.parseColorToHsl=t.parseColorToRgba=t.parseColorToRgb=t.from=t.createPicker=void 0;var i=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),o=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var r=[],i=!0,o=!1,n=void 0;try{for(var s,a=e[Symbol.iterator]();!(i=(s=a.next()).done)&&(r.push(s.value),!t||r.length!==t);i=!0);}catch(e){o=!0,n=e}finally{try{!i&&a.return&&a.return()}finally{if(o)throw n}}return r}(e,t);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")},n=r(2),s=l(r(0)),a=l(r(4));function l(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function u(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)}\n/*!\n * a-color-picker\n * https://github.com/narsenico/a-color-picker\n *\n * Copyright (c) 2017-2019, Gianfranco Caldi.\n * Released under the MIT License.\n */var h=\"undefined\"!=typeof window&&window.navigator.userAgent.indexOf(\"Edge\")>-1,p=\"undefined\"!=typeof window&&window.navigator.userAgent.indexOf(\"rv:\")>-1,d={id:null,attachTo:\"body\",showHSL:!0,showRGB:!0,showHEX:!0,showAlpha:!1,color:\"#ff0000\",palette:null,paletteEditable:!1,useAlphaInPalette:\"auto\",slBarSize:[232,150],hueBarSize:[150,11],alphaBarSize:[150,11]},f=\"COLOR\",g=\"RGBA_USER\",b=\"HSLA_USER\";function v(e,t,r){return e?e instanceof HTMLElement?e:e instanceof NodeList?e[0]:\"string\"==typeof e?document.querySelector(e):e.jquery?e.get(0):r?t:null:t}function m(e){var t=e.getContext(\"2d\"),r=+e.width,i=+e.height,s=t.createLinearGradient(1,1,1,i-1);return s.addColorStop(0,\"white\"),s.addColorStop(1,\"black\"),{setHue:function(e){var o=t.createLinearGradient(1,0,r-1,0);o.addColorStop(0,\"hsla(\"+e+\", 100%, 50%, 0)\"),o.addColorStop(1,\"hsla(\"+e+\", 100%, 50%, 1)\"),t.fillStyle=s,t.fillRect(0,0,r,i),t.fillStyle=o,t.globalCompositeOperation=\"multiply\",t.fillRect(0,0,r,i),t.globalCompositeOperation=\"source-over\"},grabColor:function(e,r){return t.getImageData(e,r,1,1).data},findColor:function(e,t,s){var a=(0,n.rgbToHsv)(e,t,s),l=o(a,3),c=l[1],u=l[2];return[c*r,i-u*i]}}}function A(e,t,r){return null===e?t:/^\\s*$/.test(e)?r:!!/true|yes|1/i.test(e)||!/false|no|0/i.test(e)&&t}function y(e,t,r){if(null===e)return t;if(/^\\s*$/.test(e))return r;var i=e.split(\",\").map(Number);return 2===i.length&&i[0]&&i[1]?i:t}var k=function(){function e(t,r){if(c(this,e),r?(t=v(t),this.options=Object.assign({},d,r)):t&&(0,s.default)(t)?(this.options=Object.assign({},d,t),t=v(this.options.attachTo)):(this.options=Object.assign({},d),t=v((0,n.nvl)(t,this.options.attachTo))),!t)throw new Error(\"Container not found: \"+this.options.attachTo);!function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"acp-\";if(t.hasAttribute(r+\"show-hsl\")&&(e.showHSL=A(t.getAttribute(r+\"show-hsl\"),d.showHSL,!0)),t.hasAttribute(r+\"show-rgb\")&&(e.showRGB=A(t.getAttribute(r+\"show-rgb\"),d.showRGB,!0)),t.hasAttribute(r+\"show-hex\")&&(e.showHEX=A(t.getAttribute(r+\"show-hex\"),d.showHEX,!0)),t.hasAttribute(r+\"show-alpha\")&&(e.showAlpha=A(t.getAttribute(r+\"show-alpha\"),d.showAlpha,!0)),t.hasAttribute(r+\"palette-editable\")&&(e.paletteEditable=A(t.getAttribute(r+\"palette-editable\"),d.paletteEditable,!0)),t.hasAttribute(r+\"sl-bar-size\")&&(e.slBarSize=y(t.getAttribute(r+\"sl-bar-size\"),d.slBarSize,[232,150])),t.hasAttribute(r+\"hue-bar-size\")&&(e.hueBarSize=y(t.getAttribute(r+\"hue-bar-size\"),d.hueBarSize,[150,11]),e.alphaBarSize=e.hueBarSize),t.hasAttribute(r+\"palette\")){var i=t.getAttribute(r+\"palette\");switch(i){case\"PALETTE_MATERIAL_500\":e.palette=n.PALETTE_MATERIAL_500;break;case\"PALETTE_MATERIAL_CHROME\":case\"\":e.palette=n.PALETTE_MATERIAL_CHROME;break;default:e.palette=i.split(/[;|]/)}}t.hasAttribute(r+\"color\")&&(e.color=t.getAttribute(r+\"color\"))}(this.options,t),this.H=0,this.S=0,this.L=0,this.R=0,this.G=0,this.B=0,this.A=1,this.palette={},this.element=document.createElement(\"div\"),this.options.id&&(this.element.id=this.options.id),this.element.className=\"a-color-picker\",this.element.innerHTML=a.default,t.appendChild(this.element);var i=this.element.querySelector(\".a-color-picker-h\");this.setupHueCanvas(i),this.hueBarHelper=m(i),this.huePointer=this.element.querySelector(\".a-color-picker-h+.a-color-picker-dot\");var o=this.element.querySelector(\".a-color-picker-sl\");this.setupSlCanvas(o),this.slBarHelper=m(o),this.slPointer=this.element.querySelector(\".a-color-picker-sl+.a-color-picker-dot\"),this.preview=this.element.querySelector(\".a-color-picker-preview\"),this.setupClipboard(this.preview.querySelector(\".a-color-picker-clipbaord\")),this.options.showHSL?(this.setupInput(this.inputH=this.element.querySelector(\".a-color-picker-hsl>input[nameref=H]\")),this.setupInput(this.inputS=this.element.querySelector(\".a-color-picker-hsl>input[nameref=S]\")),this.setupInput(this.inputL=this.element.querySelector(\".a-color-picker-hsl>input[nameref=L]\"))):this.element.querySelector(\".a-color-picker-hsl\").remove(),this.options.showRGB?(this.setupInput(this.inputR=this.element.querySelector(\".a-color-picker-rgb>input[nameref=R]\")),this.setupInput(this.inputG=this.element.querySelector(\".a-color-picker-rgb>input[nameref=G]\")),this.setupInput(this.inputB=this.element.querySelector(\".a-color-picker-rgb>input[nameref=B]\"))):this.element.querySelector(\".a-color-picker-rgb\").remove(),this.options.showHEX?this.setupInput(this.inputRGBHEX=this.element.querySelector(\"input[nameref=RGBHEX]\")):this.element.querySelector(\".a-color-picker-rgbhex\").remove(),this.options.paletteEditable||this.options.palette&&this.options.palette.length>0?this.setPalette(this.paletteRow=this.element.querySelector(\".a-color-picker-palette\")):(this.paletteRow=this.element.querySelector(\".a-color-picker-palette\"),this.paletteRow.remove()),this.options.showAlpha?(this.setupAlphaCanvas(this.element.querySelector(\".a-color-picker-a\")),this.alphaPointer=this.element.querySelector(\".a-color-picker-a+.a-color-picker-dot\")):this.element.querySelector(\".a-color-picker-alpha\").remove(),this.element.style.width=this.options.slBarSize[0]+\"px\",this.onValueChanged(f,this.options.color)}return i(e,[{key:\"setupHueCanvas\",value:function(e){var t=this;e.width=this.options.hueBarSize[0],e.height=this.options.hueBarSize[1];for(var r=e.getContext(\"2d\"),i=r.createLinearGradient(0,0,this.options.hueBarSize[0],0),o=0;o<=1;o+=1/360)i.addColorStop(o,\"hsl(\"+360*o+\", 100%, 50%)\");r.fillStyle=i,r.fillRect(0,0,this.options.hueBarSize[0],this.options.hueBarSize[1]);var s=function(r){var i=(0,n.limit)(r.clientX-e.getBoundingClientRect().left,0,t.options.hueBarSize[0]),o=Math.round(360*i/t.options.hueBarSize[0]);t.huePointer.style.left=i-7+\"px\",t.onValueChanged(\"H\",o)},a=function e(){document.removeEventListener(\"mousemove\",s),document.removeEventListener(\"mouseup\",e)};e.addEventListener(\"mousedown\",function(e){s(e),document.addEventListener(\"mousemove\",s),document.addEventListener(\"mouseup\",a)})}},{key:\"setupSlCanvas\",value:function(e){var t=this;e.width=this.options.slBarSize[0],e.height=this.options.slBarSize[1];var r=function(r){var i=(0,n.limit)(r.clientX-e.getBoundingClientRect().left,0,t.options.slBarSize[0]-1),o=(0,n.limit)(r.clientY-e.getBoundingClientRect().top,0,t.options.slBarSize[1]-1),s=t.slBarHelper.grabColor(i,o);t.slPointer.style.left=i-7+\"px\",t.slPointer.style.top=o-7+\"px\",t.onValueChanged(\"RGB\",s)},i=function e(){document.removeEventListener(\"mousemove\",r),document.removeEventListener(\"mouseup\",e)};e.addEventListener(\"mousedown\",function(e){r(e),document.addEventListener(\"mousemove\",r),document.addEventListener(\"mouseup\",i)})}},{key:\"setupAlphaCanvas\",value:function(e){var t=this;e.width=this.options.alphaBarSize[0],e.height=this.options.alphaBarSize[1];var r=e.getContext(\"2d\"),i=r.createLinearGradient(0,0,e.width-1,0);i.addColorStop(0,\"hsla(0, 0%, 50%, 0)\"),i.addColorStop(1,\"hsla(0, 0%, 50%, 1)\"),r.fillStyle=i,r.fillRect(0,0,this.options.alphaBarSize[0],this.options.alphaBarSize[1]);var o=function(r){var i=(0,n.limit)(r.clientX-e.getBoundingClientRect().left,0,t.options.alphaBarSize[0]),o=+(i/t.options.alphaBarSize[0]).toFixed(2);t.alphaPointer.style.left=i-7+\"px\",t.onValueChanged(\"ALPHA\",o)},s=function e(){document.removeEventListener(\"mousemove\",o),document.removeEventListener(\"mouseup\",e)};e.addEventListener(\"mousedown\",function(e){o(e),document.addEventListener(\"mousemove\",o),document.addEventListener(\"mouseup\",s)})}},{key:\"setupInput\",value:function(e){var t=this,r=+e.min,i=+e.max,o=e.getAttribute(\"nameref\");e.hasAttribute(\"select-on-focus\")&&e.addEventListener(\"focus\",function(){e.select()}),\"text\"===e.type?e.addEventListener(\"change\",function(){t.onValueChanged(o,e.value)}):((h||p)&&e.addEventListener(\"keydown\",function(s){\"Up\"===s.key?(e.value=(0,n.limit)(+e.value+1,r,i),t.onValueChanged(o,e.value),s.returnValue=!1):\"Down\"===s.key&&(e.value=(0,n.limit)(+e.value-1,r,i),t.onValueChanged(o,e.value),s.returnValue=!1)}),e.addEventListener(\"change\",function(){var s=+e.value;t.onValueChanged(o,(0,n.limit)(s,r,i))}))}},{key:\"setupClipboard\",value:function(e){var t=this;e.title=\"click to copy\",e.addEventListener(\"click\",function(){e.value=(0,n.parseColor)([t.R,t.G,t.B,t.A],\"hexcss4\"),e.select(),document.execCommand(\"copy\")})}},{key:\"setPalette\",value:function(e){var t=this,r=\"auto\"===this.options.useAlphaInPalette?this.options.showAlpha:this.options.useAlphaInPalette,i=null;switch(this.options.palette){case\"PALETTE_MATERIAL_500\":i=n.PALETTE_MATERIAL_500;break;case\"PALETTE_MATERIAL_CHROME\":i=n.PALETTE_MATERIAL_CHROME;break;default:i=(0,n.ensureArray)(this.options.palette)}if(this.options.paletteEditable||i.length>0){var o=function(r,i,o){var n=e.querySelector('.a-color-picker-palette-color[data-color=\"'+r+'\"]')||document.createElement(\"div\");n.className=\"a-color-picker-palette-color\",n.style.backgroundColor=r,n.setAttribute(\"data-color\",r),n.title=r,e.insertBefore(n,i),t.palette[r]=!0,o&&t.onPaletteColorAdd(r)},s=function(r,i){r?(e.removeChild(r),t.palette[r.getAttribute(\"data-color\")]=!1,i&&t.onPaletteColorRemove(r.getAttribute(\"data-color\"))):(e.querySelectorAll(\".a-color-picker-palette-color[data-color]\").forEach(function(t){e.removeChild(t)}),Object.keys(t.palette).forEach(function(e){t.palette[e]=!1}),i&&t.onPaletteColorRemove())};if(i.map(function(e){return(0,n.parseColor)(e,r?\"rgbcss4\":\"hex\")}).filter(function(e){return!!e}).forEach(function(e){return o(e)}),this.options.paletteEditable){var a=document.createElement(\"div\");a.className=\"a-color-picker-palette-color a-color-picker-palette-add\",a.innerHTML=\"+\",e.appendChild(a),e.addEventListener(\"click\",function(e){/a-color-picker-palette-add/.test(e.target.className)?e.shiftKey?s(null,!0):o(r?(0,n.parseColor)([t.R,t.G,t.B,t.A],\"rgbcss4\"):(0,n.rgbToHex)(t.R,t.G,t.B),e.target,!0):/a-color-picker-palette-color/.test(e.target.className)&&(e.shiftKey?s(e.target,!0):t.onValueChanged(f,e.target.getAttribute(\"data-color\")))})}else e.addEventListener(\"click\",function(e){/a-color-picker-palette-color/.test(e.target.className)&&t.onValueChanged(f,e.target.getAttribute(\"data-color\"))})}else e.style.display=\"none\"}},{key:\"updatePalette\",value:function(e){this.paletteRow.innerHTML=\"\",this.palette={},this.paletteRow.parentElement||this.element.appendChild(this.paletteRow),this.options.palette=e,this.setPalette(this.paletteRow)}},{key:\"onValueChanged\",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{silent:!1};switch(e){case\"H\":this.H=t;var i=(0,n.hslToRgb)(this.H,this.S,this.L),s=o(i,3);this.R=s[0],this.G=s[1],this.B=s[2],this.slBarHelper.setHue(t),this.updatePointerH(this.H),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case\"S\":this.S=t;var a=(0,n.hslToRgb)(this.H,this.S,this.L),l=o(a,3);this.R=l[0],this.G=l[1],this.B=l[2],this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case\"L\":this.L=t;var c=(0,n.hslToRgb)(this.H,this.S,this.L),u=o(c,3);this.R=u[0],this.G=u[1],this.B=u[2],this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case\"R\":this.R=t;var h=(0,n.rgbToHsl)(this.R,this.G,this.B),p=o(h,3);this.H=p[0],this.S=p[1],this.L=p[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGBHEX(this.R,this.G,this.B);break;case\"G\":this.G=t;var d=(0,n.rgbToHsl)(this.R,this.G,this.B),v=o(d,3);this.H=v[0],this.S=v[1],this.L=v[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGBHEX(this.R,this.G,this.B);break;case\"B\":this.B=t;var m=(0,n.rgbToHsl)(this.R,this.G,this.B),A=o(m,3);this.H=A[0],this.S=A[1],this.L=A[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGBHEX(this.R,this.G,this.B);break;case\"RGB\":var y=o(t,3);this.R=y[0],this.G=y[1],this.B=y[2];var k=(0,n.rgbToHsl)(this.R,this.G,this.B),F=o(k,3);this.H=F[0],this.S=F[1],this.L=F[2],this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B);break;case g:var E=o(t,4);this.R=E[0],this.G=E[1],this.B=E[2],this.A=E[3];var H=(0,n.rgbToHsl)(this.R,this.G,this.B),B=o(H,3);this.H=B[0],this.S=B[1],this.L=B[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B),this.updatePointerA(this.A);break;case b:var R=o(t,4);this.H=R[0],this.S=R[1],this.L=R[2],this.A=R[3];var C=(0,n.hslToRgb)(this.H,this.S,this.L),S=o(C,3);this.R=S[0],this.G=S[1],this.B=S[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B),this.updatePointerA(this.A);break;case\"RGBHEX\":var L=(0,n.cssColorToRgb)(t)||[this.R,this.G,this.B],w=o(L,3);this.R=w[0],this.G=w[1],this.B=w[2];var T=(0,n.rgbToHsl)(this.R,this.G,this.B),x=o(T,3);this.H=x[0],this.S=x[1],this.L=x[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B);break;case f:var G=(0,n.parseColor)(t,\"rgba\")||[0,0,0,1],I=o(G,4);this.R=I[0],this.G=I[1],this.B=I[2],this.A=I[3];var P=(0,n.rgbToHsl)(this.R,this.G,this.B),D=o(P,3);this.H=D[0],this.S=D[1],this.L=D[2],this.slBarHelper.setHue(this.H),this.updatePointerH(this.H),this.updatePointerSL(this.H,this.S,this.L),this.updateInputHSL(this.H,this.S,this.L),this.updateInputRGB(this.R,this.G,this.B),this.updateInputRGBHEX(this.R,this.G,this.B),this.updatePointerA(this.A);break;case\"ALPHA\":this.A=t}1===this.A?this.preview.style.backgroundColor=\"rgb(\"+this.R+\",\"+this.G+\",\"+this.B+\")\":this.preview.style.backgroundColor=\"rgba(\"+this.R+\",\"+this.G+\",\"+this.B+\",\"+this.A+\")\",r&&r.silent||this.onchange&&this.onchange(this.preview.style.backgroundColor)}},{key:\"onPaletteColorAdd\",value:function(e){this.oncoloradd&&this.oncoloradd(e)}},{key:\"onPaletteColorRemove\",value:function(e){this.oncolorremove&&this.oncolorremove(e)}},{key:\"updateInputHSL\",value:function(e,t,r){this.options.showHSL&&(this.inputH.value=e,this.inputS.value=t,this.inputL.value=r)}},{key:\"updateInputRGB\",value:function(e,t,r){this.options.showRGB&&(this.inputR.value=e,this.inputG.value=t,this.inputB.value=r)}},{key:\"updateInputRGBHEX\",value:function(e,t,r){this.options.showHEX&&(this.inputRGBHEX.value=(0,n.rgbToHex)(e,t,r))}},{key:\"updatePointerH\",value:function(e){var t=this.options.hueBarSize[0]*e/360;this.huePointer.style.left=t-7+\"px\"}},{key:\"updatePointerSL\",value:function(e,t,r){var i=(0,n.hslToRgb)(e,t,r),s=o(i,3),a=s[0],l=s[1],c=s[2],u=this.slBarHelper.findColor(a,l,c),h=o(u,2),p=h[0],d=h[1];p>=0&&(this.slPointer.style.left=p-7+\"px\",this.slPointer.style.top=d-7+\"px\")}},{key:\"updatePointerA\",value:function(e){if(this.options.showAlpha){var t=this.options.alphaBarSize[0]*e;this.alphaPointer.style.left=t-7+\"px\"}}}]),e}(),F=function(){function e(t){c(this,e),this.name=t,this.listeners=[]}return i(e,[{key:\"on\",value:function(e){e&&this.listeners.push(e)}},{key:\"off\",value:function(e){this.listeners=e?this.listeners.filter(function(t){return t!==e}):[]}},{key:\"emit\",value:function(e,t){for(var r=this.listeners.slice(0),i=0;i<r.length;i++)r[i].apply(t,e)}}]),e}();function E(e,t){var r=new k(e,t),i={change:new F(\"change\"),coloradd:new F(\"coloradd\"),colorremove:new F(\"colorremove\")},s=!0,a={},l={get element(){return r.element},get rgb(){return[r.R,r.G,r.B]},set rgb(e){var t=o(e,3),i=t[0],s=t[1],a=t[2],l=[(0,n.limit)(i,0,255),(0,n.limit)(s,0,255),(0,n.limit)(a,0,255)];i=l[0],s=l[1],a=l[2],r.onValueChanged(g,[i,s,a,1])},get hsl(){return[r.H,r.S,r.L]},set hsl(e){var t=o(e,3),i=t[0],s=t[1],a=t[2],l=[(0,n.limit)(i,0,360),(0,n.limit)(s,0,100),(0,n.limit)(a,0,100)];i=l[0],s=l[1],a=l[2],r.onValueChanged(b,[i,s,a,1])},get rgbhex(){return this.all.hex},get rgba(){return[r.R,r.G,r.B,r.A]},set rgba(e){var t=o(e,4),i=t[0],s=t[1],a=t[2],l=t[3],c=[(0,n.limit)(i,0,255),(0,n.limit)(s,0,255),(0,n.limit)(a,0,255),(0,n.limit)(l,0,1)];i=c[0],s=c[1],a=c[2],l=c[3],r.onValueChanged(g,[i,s,a,l])},get hsla(){return[r.H,r.S,r.L,r.A]},set hsla(e){var t=o(e,4),i=t[0],s=t[1],a=t[2],l=t[3],c=[(0,n.limit)(i,0,360),(0,n.limit)(s,0,100),(0,n.limit)(a,0,100),(0,n.limit)(l,0,1)];i=c[0],s=c[1],a=c[2],l=c[3],r.onValueChanged(b,[i,s,a,l])},get color(){return this.all.toString()},set color(e){r.onValueChanged(f,e)},setColor:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];r.onValueChanged(f,e,{silent:t})},get all(){if(s){var e=[r.R,r.G,r.B,r.A],t=r.A<1?\"rgba(\"+r.R+\",\"+r.G+\",\"+r.B+\",\"+r.A+\")\":n.rgbToHex.apply(void 0,e);(a=(0,n.parseColor)(e,a)).toString=function(){return t},s=!1}return Object.assign({},a)},get onchange(){return i.change&&i.change.listeners[0]},set onchange(e){this.off(\"change\").on(\"change\",e)},get oncoloradd(){return i.coloradd&&i.coloradd.listeners[0]},set oncoloradd(e){this.off(\"coloradd\").on(\"coloradd\",e)},get oncolorremove(){return i.colorremove&&i.colorremove.listeners[0]},set oncolorremove(e){this.off(\"colorremove\").on(\"colorremove\",e)},get palette(){return Object.keys(r.palette).filter(function(e){return r.palette[e]})},set palette(e){r.updatePalette(e)},show:function(){r.element.classList.remove(\"hidden\")},hide:function(){r.element.classList.add(\"hidden\")},toggle:function(){r.element.classList.toggle(\"hidden\")},on:function(e,t){return e&&i[e]&&i[e].on(t),this},off:function(e,t){return e&&i[e]&&i[e].off(t),this},destroy:function(){i.change.off(),i.coloradd.off(),i.colorremove.off(),r.element.remove(),i=null,r=null}};return r.onchange=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];s=!0,i.change.emit([l].concat(t),l)},r.oncoloradd=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];i.coloradd.emit([l].concat(t),l)},r.oncolorremove=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];i.colorremove.emit([l].concat(t),l)},r.element.ctrl=l,l}if(\"undefined\"!=typeof window&&!document.querySelector('head>style[data-source=\"a-color-picker\"]')){var H=r(5).toString(),B=document.createElement(\"style\");B.setAttribute(\"type\",\"text/css\"),B.setAttribute(\"data-source\",\"a-color-picker\"),B.innerHTML=H,document.querySelector(\"head\").appendChild(B)}t.createPicker=E,t.from=function(e,t){var r=function(e){return e?Array.isArray(e)?e:e instanceof HTMLElement?[e]:e instanceof NodeList?[].concat(u(e)):\"string\"==typeof e?[].concat(u(document.querySelectorAll(e))):e.jquery?e.get():[]:[]}(e).map(function(e,r){var i=E(e,t);return i.index=r,i});return r.on=function(e,t){return r.forEach(function(r){return r.on(e,t)}),this},r.off=function(e){return r.forEach(function(t){return t.off(e)}),this},r},t.parseColorToRgb=n.parseColorToRgb,t.parseColorToRgba=n.parseColorToRgba,t.parseColorToHsl=n.parseColorToHsl,t.parseColorToHsla=n.parseColorToHsla,t.parseColor=n.parseColor,t.rgbToHex=n.rgbToHex,t.hslToRgb=n.hslToRgb,t.rgbToHsl=n.rgbToHsl,t.rgbToHsv=n.rgbToHsv,t.rgbToInt=n.rgbToInt,t.intToRgb=n.intToRgb,t.getLuminance=n.getLuminance,t.COLOR_NAMES=n.COLOR_NAMES,t.PALETTE_MATERIAL_500=n.PALETTE_MATERIAL_500,t.PALETTE_MATERIAL_CHROME=n.PALETTE_MATERIAL_CHROME,t.VERSION=\"1.2.1\"},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.nvl=t.ensureArray=t.limit=t.getLuminance=t.parseColor=t.parseColorToHsla=t.parseColorToHsl=t.cssHslaToHsla=t.cssHslToHsl=t.parseColorToRgba=t.parseColorToRgb=t.cssRgbaToRgba=t.cssRgbToRgb=t.cssColorToRgba=t.cssColorToRgb=t.intToRgb=t.rgbToInt=t.rgbToHsv=t.rgbToHsl=t.hslToRgb=t.rgbToHex=t.PALETTE_MATERIAL_CHROME=t.PALETTE_MATERIAL_500=t.COLOR_NAMES=void 0;var i=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var r=[],i=!0,o=!1,n=void 0;try{for(var s,a=e[Symbol.iterator]();!(i=(s=a.next()).done)&&(r.push(s.value),!t||r.length!==t);i=!0);}catch(e){o=!0,n=e}finally{try{!i&&a.return&&a.return()}finally{if(o)throw n}}return r}(e,t);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")},o=function(e){return e&&e.__esModule?e:{default:e}}(r(0));function n(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)}var s={aliceblue:\"#F0F8FF\",antiquewhite:\"#FAEBD7\",aqua:\"#00FFFF\",aquamarine:\"#7FFFD4\",azure:\"#F0FFFF\",beige:\"#F5F5DC\",bisque:\"#FFE4C4\",black:\"#000000\",blanchedalmond:\"#FFEBCD\",blue:\"#0000FF\",blueviolet:\"#8A2BE2\",brown:\"#A52A2A\",burlywood:\"#DEB887\",cadetblue:\"#5F9EA0\",chartreuse:\"#7FFF00\",chocolate:\"#D2691E\",coral:\"#FF7F50\",cornflowerblue:\"#6495ED\",cornsilk:\"#FFF8DC\",crimson:\"#DC143C\",cyan:\"#00FFFF\",darkblue:\"#00008B\",darkcyan:\"#008B8B\",darkgoldenrod:\"#B8860B\",darkgray:\"#A9A9A9\",darkgrey:\"#A9A9A9\",darkgreen:\"#006400\",darkkhaki:\"#BDB76B\",darkmagenta:\"#8B008B\",darkolivegreen:\"#556B2F\",darkorange:\"#FF8C00\",darkorchid:\"#9932CC\",darkred:\"#8B0000\",darksalmon:\"#E9967A\",darkseagreen:\"#8FBC8F\",darkslateblue:\"#483D8B\",darkslategray:\"#2F4F4F\",darkslategrey:\"#2F4F4F\",darkturquoise:\"#00CED1\",darkviolet:\"#9400D3\",deeppink:\"#FF1493\",deepskyblue:\"#00BFFF\",dimgray:\"#696969\",dimgrey:\"#696969\",dodgerblue:\"#1E90FF\",firebrick:\"#B22222\",floralwhite:\"#FFFAF0\",forestgreen:\"#228B22\",fuchsia:\"#FF00FF\",gainsboro:\"#DCDCDC\",ghostwhite:\"#F8F8FF\",gold:\"#FFD700\",goldenrod:\"#DAA520\",gray:\"#808080\",grey:\"#808080\",green:\"#008000\",greenyellow:\"#ADFF2F\",honeydew:\"#F0FFF0\",hotpink:\"#FF69B4\",\"indianred \":\"#CD5C5C\",\"indigo \":\"#4B0082\",ivory:\"#FFFFF0\",khaki:\"#F0E68C\",lavender:\"#E6E6FA\",lavenderblush:\"#FFF0F5\",lawngreen:\"#7CFC00\",lemonchiffon:\"#FFFACD\",lightblue:\"#ADD8E6\",lightcoral:\"#F08080\",lightcyan:\"#E0FFFF\",lightgoldenrodyellow:\"#FAFAD2\",lightgray:\"#D3D3D3\",lightgrey:\"#D3D3D3\",lightgreen:\"#90EE90\",lightpink:\"#FFB6C1\",lightsalmon:\"#FFA07A\",lightseagreen:\"#20B2AA\",lightskyblue:\"#87CEFA\",lightslategray:\"#778899\",lightslategrey:\"#778899\",lightsteelblue:\"#B0C4DE\",lightyellow:\"#FFFFE0\",lime:\"#00FF00\",limegreen:\"#32CD32\",linen:\"#FAF0E6\",magenta:\"#FF00FF\",maroon:\"#800000\",mediumaquamarine:\"#66CDAA\",mediumblue:\"#0000CD\",mediumorchid:\"#BA55D3\",mediumpurple:\"#9370DB\",mediumseagreen:\"#3CB371\",mediumslateblue:\"#7B68EE\",mediumspringgreen:\"#00FA9A\",mediumturquoise:\"#48D1CC\",mediumvioletred:\"#C71585\",midnightblue:\"#191970\",mintcream:\"#F5FFFA\",mistyrose:\"#FFE4E1\",moccasin:\"#FFE4B5\",navajowhite:\"#FFDEAD\",navy:\"#000080\",oldlace:\"#FDF5E6\",olive:\"#808000\",olivedrab:\"#6B8E23\",orange:\"#FFA500\",orangered:\"#FF4500\",orchid:\"#DA70D6\",palegoldenrod:\"#EEE8AA\",palegreen:\"#98FB98\",paleturquoise:\"#AFEEEE\",palevioletred:\"#DB7093\",papayawhip:\"#FFEFD5\",peachpuff:\"#FFDAB9\",peru:\"#CD853F\",pink:\"#FFC0CB\",plum:\"#DDA0DD\",powderblue:\"#B0E0E6\",purple:\"#800080\",rebeccapurple:\"#663399\",red:\"#FF0000\",rosybrown:\"#BC8F8F\",royalblue:\"#4169E1\",saddlebrown:\"#8B4513\",salmon:\"#FA8072\",sandybrown:\"#F4A460\",seagreen:\"#2E8B57\",seashell:\"#FFF5EE\",sienna:\"#A0522D\",silver:\"#C0C0C0\",skyblue:\"#87CEEB\",slateblue:\"#6A5ACD\",slategray:\"#708090\",slategrey:\"#708090\",snow:\"#FFFAFA\",springgreen:\"#00FF7F\",steelblue:\"#4682B4\",tan:\"#D2B48C\",teal:\"#008080\",thistle:\"#D8BFD8\",tomato:\"#FF6347\",turquoise:\"#40E0D0\",violet:\"#EE82EE\",wheat:\"#F5DEB3\",white:\"#FFFFFF\",whitesmoke:\"#F5F5F5\",yellow:\"#FFFF00\",yellowgreen:\"#9ACD32\"};function a(e,t,r){return e=+e,isNaN(e)?t:e<t?t:e>r?r:e}function l(e,t){return null==e?t:e}function c(e,t,r){var i=[a(e,0,255),a(t,0,255),a(r,0,255)];return\"#\"+(\"000000\"+((e=i[0])<<16|(t=i[1])<<8|(r=i[2])).toString(16)).slice(-6)}function u(e,t,r){var i=void 0,o=void 0,n=void 0,s=[a(e,0,360)/360,a(t,0,100)/100,a(r,0,100)/100];if(e=s[0],r=s[2],0==(t=s[1]))i=o=n=r;else{var l=function(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e},c=r<.5?r*(1+t):r+t-r*t,u=2*r-c;i=l(u,c,e+1/3),o=l(u,c,e),n=l(u,c,e-1/3)}return[255*i,255*o,255*n].map(Math.round)}function h(e,t,r){var i=[a(e,0,255)/255,a(t,0,255)/255,a(r,0,255)/255];e=i[0],t=i[1],r=i[2];var o=Math.max(e,t,r),n=Math.min(e,t,r),s=void 0,l=void 0,c=(o+n)/2;if(o==n)s=l=0;else{var u=o-n;switch(l=c>.5?u/(2-o-n):u/(o+n),o){case e:s=(t-r)/u+(t<r?6:0);break;case t:s=(r-e)/u+2;break;case r:s=(e-t)/u+4}s/=6}return[360*s,100*l,100*c].map(Math.round)}function p(e,t,r){return e<<16|t<<8|r}function d(e){if(e){var t=s[e.toString().toLowerCase()],r=/^\\s*#?((([0-9A-F])([0-9A-F])([0-9A-F]))|(([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})))\\s*$/i.exec(t||e)||[],o=i(r,10),n=o[3],a=o[4],l=o[5],c=o[7],u=o[8],h=o[9];if(void 0!==n)return[parseInt(n+n,16),parseInt(a+a,16),parseInt(l+l,16)];if(void 0!==c)return[parseInt(c,16),parseInt(u,16),parseInt(h,16)]}}function f(e){if(e){var t=s[e.toString().toLowerCase()],r=/^\\s*#?((([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])?)|(([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})?))\\s*$/i.exec(t||e)||[],o=i(r,12),n=o[3],a=o[4],l=o[5],c=o[6],u=o[8],h=o[9],p=o[10],d=o[11];if(void 0!==n)return[parseInt(n+n,16),parseInt(a+a,16),parseInt(l+l,16),c?+(parseInt(c+c,16)/255).toFixed(2):1];if(void 0!==u)return[parseInt(u,16),parseInt(h,16),parseInt(p,16),d?+(parseInt(d,16)/255).toFixed(2):1]}}function g(e){if(e){var t=/^rgb\\((\\d+)[\\s,](\\d+)[\\s,](\\d+)\\)/i.exec(e)||[],r=i(t,4),o=r[0],n=r[1],s=r[2],l=r[3];return o?[a(n,0,255),a(s,0,255),a(l,0,255)]:void 0}}function b(e){if(e){var t=/^rgba?\\((\\d+)\\s*[\\s,]\\s*(\\d+)\\s*[\\s,]\\s*(\\d+)(\\s*[\\s,]\\s*(\\d*(.\\d+)?))?\\)/i.exec(e)||[],r=i(t,6),o=r[0],n=r[1],s=r[2],c=r[3],u=r[5];return o?[a(n,0,255),a(s,0,255),a(c,0,255),a(l(u,1),0,1)]:void 0}}function v(e){if(Array.isArray(e))return[a(e[0],0,255),a(e[1],0,255),a(e[2],0,255),a(l(e[3],1),0,1)];var t=f(e)||b(e);return t&&3===t.length&&t.push(1),t}function m(e){if(e){var t=/^hsl\\((\\d+)[\\s,](\\d+)[\\s,](\\d+)\\)/i.exec(e)||[],r=i(t,4),o=r[0],n=r[1],s=r[2],l=r[3];return o?[a(n,0,360),a(s,0,100),a(l,0,100)]:void 0}}function A(e){if(e){var t=/^hsla?\\((\\d+)\\s*[\\s,]\\s*(\\d+)\\s*[\\s,]\\s*(\\d+)(\\s*[\\s,]\\s*(\\d*(.\\d+)?))?\\)/i.exec(e)||[],r=i(t,6),o=r[0],n=r[1],s=r[2],c=r[3],u=r[5];return o?[a(n,0,255),a(s,0,255),a(c,0,255),a(l(u,1),0,1)]:void 0}}function y(e){if(Array.isArray(e))return[a(e[0],0,360),a(e[1],0,100),a(e[2],0,100),a(l(e[3],1),0,1)];var t=A(e);return t&&3===t.length&&t.push(1),t}function k(e,t){switch(t){case\"rgb\":default:return e.slice(0,3);case\"rgbcss\":return\"rgb(\"+e[0]+\", \"+e[1]+\", \"+e[2]+\")\";case\"rgbcss4\":return\"rgb(\"+e[0]+\", \"+e[1]+\", \"+e[2]+\", \"+e[3]+\")\";case\"rgba\":return e;case\"rgbacss\":return\"rgba(\"+e[0]+\", \"+e[1]+\", \"+e[2]+\", \"+e[3]+\")\";case\"hsl\":return h.apply(void 0,n(e));case\"hslcss\":return\"hsl(\"+(e=h.apply(void 0,n(e)))[0]+\", \"+e[1]+\", \"+e[2]+\")\";case\"hslcss4\":var r=h.apply(void 0,n(e));return\"hsl(\"+r[0]+\", \"+r[1]+\", \"+r[2]+\", \"+e[3]+\")\";case\"hsla\":return[].concat(n(h.apply(void 0,n(e))),[e[3]]);case\"hslacss\":var i=h.apply(void 0,n(e));return\"hsla(\"+i[0]+\", \"+i[1]+\", \"+i[2]+\", \"+e[3]+\")\";case\"hex\":return c.apply(void 0,n(e));case\"hexcss4\":return c.apply(void 0,n(e))+(\"00\"+parseInt(255*e[3]).toString(16)).slice(-2);case\"int\":return p.apply(void 0,n(e))}}t.COLOR_NAMES=s,t.PALETTE_MATERIAL_500=[\"#F44336\",\"#E91E63\",\"#E91E63\",\"#9C27B0\",\"#9C27B0\",\"#673AB7\",\"#673AB7\",\"#3F51B5\",\"#3F51B5\",\"#2196F3\",\"#2196F3\",\"#03A9F4\",\"#03A9F4\",\"#00BCD4\",\"#00BCD4\",\"#009688\",\"#009688\",\"#4CAF50\",\"#4CAF50\",\"#8BC34A\",\"#8BC34A\",\"#CDDC39\",\"#CDDC39\",\"#FFEB3B\",\"#FFEB3B\",\"#FFC107\",\"#FFC107\",\"#FF9800\",\"#FF9800\",\"#FF5722\",\"#FF5722\",\"#795548\",\"#795548\",\"#9E9E9E\",\"#9E9E9E\",\"#607D8B\",\"#607D8B\"],t.PALETTE_MATERIAL_CHROME=[\"#f44336\",\"#e91e63\",\"#9c27b0\",\"#673ab7\",\"#3f51b5\",\"#2196f3\",\"#03a9f4\",\"#00bcd4\",\"#009688\",\"#4caf50\",\"#8bc34a\",\"#cddc39\",\"#ffeb3b\",\"#ffc107\",\"#ff9800\",\"#ff5722\",\"#795548\",\"#9e9e9e\",\"#607d8b\"],t.rgbToHex=c,t.hslToRgb=u,t.rgbToHsl=h,t.rgbToHsv=function(e,t,r){var i=[a(e,0,255)/255,a(t,0,255)/255,a(r,0,255)/255];e=i[0],t=i[1],r=i[2];var o,n=Math.max(e,t,r),s=Math.min(e,t,r),l=void 0,c=n,u=n-s;if(o=0===n?0:u/n,n==s)l=0;else{switch(n){case e:l=(t-r)/u+(t<r?6:0);break;case t:l=(r-e)/u+2;break;case r:l=(e-t)/u+4}l/=6}return[l,o,c]},t.rgbToInt=p,t.intToRgb=function(e){return[e>>16&255,e>>8&255,255&e]},t.cssColorToRgb=d,t.cssColorToRgba=f,t.cssRgbToRgb=g,t.cssRgbaToRgba=b,t.parseColorToRgb=function(e){return Array.isArray(e)?e=[a(e[0],0,255),a(e[1],0,255),a(e[2],0,255)]:d(e)||g(e)},t.parseColorToRgba=v,t.cssHslToHsl=m,t.cssHslaToHsla=A,t.parseColorToHsl=function(e){return Array.isArray(e)?e=[a(e[0],0,360),a(e[1],0,100),a(e[2],0,100)]:m(e)},t.parseColorToHsla=y,t.parseColor=function(e,t){if(t=t||\"rgb\",null!=e){var r=void 0;if((r=v(e))||(r=y(e))&&(r=[].concat(n(u.apply(void 0,n(r))),[r[3]])))return(0,o.default)(t)?[\"rgb\",\"rgbcss\",\"rgbcss4\",\"rgba\",\"rgbacss\",\"hsl\",\"hslcss\",\"hslcss4\",\"hsla\",\"hslacss\",\"hex\",\"hexcss4\",\"int\"].reduce(function(e,t){return e[t]=k(r,t),e},t||{}):k(r,t.toString().toLowerCase())}},t.getLuminance=function(e,t,r){return.2126*(e=(e/=255)<.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.7152*(t=(t/=255)<.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.0722*((r/=255)<.03928?r/12.92:Math.pow((r+.055)/1.055,2.4))},t.limit=a,t.ensureArray=function(e){return e?Array.from(e):[]},t.nvl=l},function(e,t,r){\"use strict\";\n/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */e.exports=function(e){return null!=e&&\"object\"==typeof e&&!1===Array.isArray(e)}},function(e,t){e.exports='<div class=\"a-color-picker-row a-color-picker-stack a-color-picker-row-top\"> <canvas class=\"a-color-picker-sl a-color-picker-transparent\"></canvas> <div class=a-color-picker-dot></div> </div> <div class=a-color-picker-row> <div class=\"a-color-picker-stack a-color-picker-transparent a-color-picker-circle\"> <div class=a-color-picker-preview> <input class=a-color-picker-clipbaord type=text> </div> </div> <div class=a-color-picker-column> <div class=\"a-color-picker-cell a-color-picker-stack\"> <canvas class=a-color-picker-h></canvas> <div class=a-color-picker-dot></div> </div> <div class=\"a-color-picker-cell a-color-picker-alpha a-color-picker-stack\" show-on-alpha> <canvas class=\"a-color-picker-a a-color-picker-transparent\"></canvas> <div class=a-color-picker-dot></div> </div> </div> </div> <div class=\"a-color-picker-row a-color-picker-hsl\" show-on-hsl> <label>H</label> <input nameref=H type=number maxlength=3 min=0 max=360 value=0> <label>S</label> <input nameref=S type=number maxlength=3 min=0 max=100 value=0> <label>L</label> <input nameref=L type=number maxlength=3 min=0 max=100 value=0> </div> <div class=\"a-color-picker-row a-color-picker-rgb\" show-on-rgb> <label>R</label> <input nameref=R type=number maxlength=3 min=0 max=255 value=0> <label>G</label> <input nameref=G type=number maxlength=3 min=0 max=255 value=0> <label>B</label> <input nameref=B type=number maxlength=3 min=0 max=255 value=0> </div> <div class=\"a-color-picker-row a-color-picker-rgbhex a-color-picker-single-input\" show-on-single-input> <label>HEX</label> <input nameref=RGBHEX type=text select-on-focus> </div> <div class=\"a-color-picker-row a-color-picker-palette\"></div>'},function(e,t,r){var i=r(6);e.exports=\"string\"==typeof i?i:i.toString()},function(e,t,r){(e.exports=r(7)(!1)).push([e.i,\"/*!\\n * a-color-picker\\n * https://github.com/narsenico/a-color-picker\\n *\\n * Copyright (c) 2017-2018, Gianfranco Caldi.\\n * Released under the MIT License.\\n */.a-color-picker{background-color:#fff;padding:0;display:inline-flex;flex-direction:column;user-select:none;width:232px;font:400 10px Helvetica,Arial,sans-serif;border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,.05),0 2px 4px rgba(0,0,0,.25)}.a-color-picker,.a-color-picker-row,.a-color-picker input{box-sizing:border-box}.a-color-picker-row{padding:15px;display:flex;flex-direction:row;align-items:center;justify-content:space-between;user-select:none}.a-color-picker-row-top{padding:0}.a-color-picker-row:not(:first-child){border-top:1px solid #f5f5f5}.a-color-picker-column{display:flex;flex-direction:column}.a-color-picker-cell{flex:1 1 auto;margin-bottom:4px}.a-color-picker-cell:last-child{margin-bottom:0}.a-color-picker-stack{position:relative}.a-color-picker-dot{position:absolute;width:14px;height:14px;top:0;left:0;background:#fff;pointer-events:none;border-radius:50px;z-index:1000;box-shadow:0 1px 2px rgba(0,0,0,.75)}.a-color-picker-a,.a-color-picker-h,.a-color-picker-sl{cursor:cell}.a-color-picker-a+.a-color-picker-dot,.a-color-picker-h+.a-color-picker-dot{top:-2px}.a-color-picker-a,.a-color-picker-h{border-radius:2px}.a-color-picker-preview{box-sizing:border-box;width:30px;height:30px;user-select:none;border-radius:15px}.a-color-picker-circle{border-radius:50px;border:1px solid #eee}.a-color-picker-hsl,.a-color-picker-rgb,.a-color-picker-single-input{justify-content:space-evenly}.a-color-picker-hsl>label,.a-color-picker-rgb>label,.a-color-picker-single-input>label{padding:0 8px;flex:0 0 auto;color:#969696}.a-color-picker-hsl>input,.a-color-picker-rgb>input,.a-color-picker-single-input>input{text-align:center;padding:2px 0;width:0;flex:1 1 auto;border:1px solid #e0e0e0;line-height:20px}.a-color-picker-hsl>input::-webkit-inner-spin-button,.a-color-picker-rgb>input::-webkit-inner-spin-button,.a-color-picker-single-input>input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.a-color-picker-hsl>input:focus,.a-color-picker-rgb>input:focus,.a-color-picker-single-input>input:focus{border-color:#04a9f4;outline:none}.a-color-picker-transparent{background-image:linear-gradient(-45deg,#cdcdcd 25%,transparent 0),linear-gradient(45deg,#cdcdcd 25%,transparent 0),linear-gradient(-45deg,transparent 75%,#cdcdcd 0),linear-gradient(45deg,transparent 75%,#cdcdcd 0);background-size:11px 11px;background-position:0 0,0 -5.5px,-5.5px 5.5px,5.5px 0}.a-color-picker-sl{border-radius:3px 3px 0 0}.a-color-picker.hide-alpha [show-on-alpha],.a-color-picker.hide-hsl [show-on-hsl],.a-color-picker.hide-rgb [show-on-rgb],.a-color-picker.hide-single-input [show-on-single-input]{display:none}.a-color-picker-clipbaord{width:100%;height:100%;opacity:0;cursor:pointer}.a-color-picker-palette{flex-flow:wrap;flex-direction:row;justify-content:flex-start;padding:10px}.a-color-picker-palette-color{width:15px;height:15px;flex:0 1 15px;margin:3px;box-sizing:border-box;cursor:pointer;border-radius:3px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1)}.a-color-picker-palette-add{text-align:center;line-height:13px;color:#607d8b}.a-color-picker.hidden{display:none}\",\"\"])},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=function(e,t){var r=e[1]||\"\",i=e[3];if(!i)return r;if(t&&\"function\"==typeof btoa){var o=function(e){return\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+\" */\"}(i),n=i.sources.map(function(e){return\"/*# sourceURL=\"+i.sourceRoot+e+\" */\"});return[r].concat(n).concat([o]).join(\"\\n\")}return[r].join(\"\\n\")}(t,e);return t[2]?\"@media \"+t[2]+\"{\"+r+\"}\":r}).join(\"\")},t.i=function(e,r){\"string\"==typeof e&&(e=[[null,e,\"\"]]);for(var i={},o=0;o<this.length;o++){var n=this[o][0];\"number\"==typeof n&&(i[n]=!0)}for(o=0;o<e.length;o++){var s=e[o];\"number\"==typeof s[0]&&i[s[0]]||(r&&!s[2]?s[2]=r:r&&(s[2]=\"(\"+s[2]+\") and (\"+r+\")\"),t.push(s))}},t}}])});","// Copyright (C) 2017-2023 Smart code 203358507\n\nrequire('spatial-navigation-polyfill');\nconst React = require('react');\nconst { useTranslation } = require('react-i18next');\nconst { Router } = require('stremio-router');\nconst { Core, Shell, Chromecast, DragAndDrop, KeyboardShortcuts, ServicesProvider } = require('stremio/services');\nconst { NotFound } = require('stremio/routes');\nconst { ToastProvider, CONSTANTS, withCoreSuspender } = require('stremio/common');\nconst ServicesToaster = require('./ServicesToaster');\nconst DeepLinkHandler = require('./DeepLinkHandler');\nconst ErrorDialog = require('./ErrorDialog');\nconst withProtectedRoutes = require('./withProtectedRoutes');\nconst routerViewsConfig = require('./routerViewsConfig');\nconst styles = require('./styles');\n\nconst RouterWithProtectedRoutes = withCoreSuspender(withProtectedRoutes(Router));\n\nconst App = () => {\n const { i18n } = useTranslation();\n const onPathNotMatch = React.useCallback(() => {\n return NotFound;\n }, []);\n const services = React.useMemo(() => {\n const core = new Core({\n appVersion: process.env.VERSION,\n shellVersion: null\n });\n return {\n core,\n shell: new Shell(),\n chromecast: new Chromecast(),\n keyboardShortcuts: new KeyboardShortcuts(),\n dragAndDrop: new DragAndDrop({ core })\n };\n }, []);\n const [initialized, setInitialized] = React.useState(false);\n React.useEffect(() => {\n let prevPath = window.location.hash.slice(1);\n const onLocationHashChange = () => {\n if (services.core.active) {\n services.core.transport.analytics({\n event: 'LocationPathChanged',\n args: { prevPath }\n });\n }\n prevPath = window.location.hash.slice(1);\n };\n window.addEventListener('hashchange', onLocationHashChange);\n return () => {\n window.removeEventListener('hashchange', onLocationHashChange);\n };\n }, []);\n React.useEffect(() => {\n const onCoreStateChanged = () => {\n setInitialized(\n (services.core.active || services.core.error instanceof Error) &&\n (services.shell.active || services.shell.error instanceof Error)\n );\n };\n const onShellStateChanged = () => {\n setInitialized(\n (services.core.active || services.core.error instanceof Error) &&\n (services.shell.active || services.shell.error instanceof Error)\n );\n };\n const onChromecastStateChange = () => {\n if (services.chromecast.active) {\n services.chromecast.transport.setOptions({\n receiverApplicationId: CONSTANTS.CHROMECAST_RECEIVER_APP_ID,\n autoJoinPolicy: chrome.cast.AutoJoinPolicy.PAGE_SCOPED,\n resumeSavedSession: false,\n language: null\n });\n }\n };\n services.core.on('stateChanged', onCoreStateChanged);\n services.shell.on('stateChanged', onShellStateChanged);\n services.chromecast.on('stateChanged', onChromecastStateChange);\n services.core.start();\n services.shell.start();\n services.chromecast.start();\n services.keyboardShortcuts.start();\n services.dragAndDrop.start();\n window.services = services;\n return () => {\n services.core.stop();\n services.shell.stop();\n services.chromecast.stop();\n services.keyboardShortcuts.stop();\n services.dragAndDrop.stop();\n services.core.off('stateChanged', onCoreStateChanged);\n services.shell.off('stateChanged', onShellStateChanged);\n services.chromecast.off('stateChanged', onChromecastStateChange);\n };\n }, []);\n React.useEffect(() => {\n const onCoreEvent = ({ event, args }) => {\n switch (event) {\n case 'SettingsUpdated': {\n if (args && args.settings && typeof args.settings.interfaceLanguage === 'string') {\n i18n.changeLanguage(args.settings.interfaceLanguage);\n }\n break;\n }\n }\n };\n const onCtxState = (state) => {\n if (state && state.profile && state.profile.settings && typeof state.profile.settings.interfaceLanguage === 'string') {\n i18n.changeLanguage(state.profile.settings.interfaceLanguage);\n }\n };\n const onWindowFocus = () => {\n services.core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'PullAddonsFromAPI'\n }\n });\n services.core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'PullUserFromAPI'\n }\n });\n services.core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'SyncLibraryWithAPI'\n }\n });\n };\n if (services.core.active) {\n onWindowFocus();\n window.addEventListener('focus', onWindowFocus);\n services.core.transport.on('CoreEvent', onCoreEvent);\n services.core.transport\n .getState('ctx')\n .then(onCtxState)\n .catch((e) => console.error(e));\n }\n return () => {\n window.removeEventListener('focus', onWindowFocus);\n services.core.transport.off('CoreEvent', onCoreEvent);\n };\n }, [initialized]);\n return (\n <React.StrictMode>\n <ServicesProvider services={services}>\n {\n initialized ?\n services.core.error instanceof Error ?\n <ErrorDialog className={styles['error-container']} />\n :\n <ToastProvider className={styles['toasts-container']}>\n <ServicesToaster />\n <DeepLinkHandler />\n <RouterWithProtectedRoutes\n className={styles['router']}\n viewsConfig={routerViewsConfig}\n onPathNotMatch={onPathNotMatch}\n />\n </ToastProvider>\n :\n <div className={styles['loader-container']} />\n }\n </ServicesProvider>\n </React.StrictMode>\n );\n};\n\nmodule.exports = App;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { withCoreSuspender, useStreamingServer } = require('stremio/common');\n\nconst DeepLinkHandler = () => {\n const streamingServer = useStreamingServer();\n React.useEffect(() => {\n if (streamingServer.torrent !== null) {\n const [, { type, content }] = streamingServer.torrent;\n if (type === 'Ready') {\n const [, deepLinks] = content;\n if (typeof deepLinks.metaDetailsVideos === 'string') {\n window.location = deepLinks.metaDetailsVideos;\n }\n }\n }\n }, [streamingServer.torrent]);\n return null;\n};\n\nmodule.exports = withCoreSuspender(DeepLinkHandler);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { Button, Image } = require('stremio/common');\nconst styles = require('./styles');\n\nconst ErrorDialog = ({ className }) => {\n const [dataCleared, setDataCleared] = React.useState(false);\n const reload = React.useCallback(() => {\n window.location.reload();\n }, []);\n const clearData = React.useCallback(() => {\n window.localStorage.clear();\n setDataCleared(true);\n }, []);\n return (\n <div className={classnames(className, styles['error-container'])}>\n <Image\n className={styles['error-image']}\n src={require('/images/empty.png')}\n alt={' '}\n />\n <div className={styles['error-message']}>Something went wrong!</div>\n <div className={styles['buttons-container']}>\n <Button className={styles['button-container']} title={'Try again'} onClick={reload}>\n <div className={styles['label']}>Try again</div>\n </Button>\n <Button className={styles['button-container']} disabled={dataCleared} title={'Clear data'} onClick={clearData}>\n <div className={styles['label']}>Clear data</div>\n </Button>\n </div>\n </div>\n );\n};\n\nErrorDialog.displayName = 'ErrorDialog';\n\nErrorDialog.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = ErrorDialog;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ErrorDialog = require('./ErrorDialog');\n\nmodule.exports = ErrorDialog;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst { useToast } = require('stremio/common');\n\nconst ServicesToaster = () => {\n const { core, dragAndDrop } = useServices();\n const toast = useToast();\n React.useEffect(() => {\n const onCoreEvent = ({ event, args }) => {\n switch (event) {\n case 'Error': {\n if (args.source.event === 'UserPulledFromAPI' && args.source.args.uid === null) {\n break;\n }\n\n if (args.source.event === 'LibrarySyncWithAPIPlanned' && args.source.args.uid === null) {\n break;\n }\n\n if (args.error.type === 'Other' && args.error.code === 3 && args.source.event === 'AddonInstalled' && args.source.args.transport_url.startsWith('https://www.strem.io/trakt/addon')) {\n break;\n }\n\n toast.show({\n type: 'error',\n title: args.source.event,\n message: args.error.message,\n timeout: 4000,\n dataset: {\n type: 'CoreEvent'\n }\n });\n break;\n }\n case 'TorrentParsed': {\n toast.show({\n type: 'success',\n title: 'Torrent file parsed',\n timeout: 4000\n });\n break;\n }\n case 'MagnetParsed': {\n toast.show({\n type: 'success',\n title: 'Magnet link parsed',\n timeout: 4000\n });\n break;\n }\n case 'PlayingOnDevice': {\n toast.show({\n type: 'success',\n title: `Stream opened in ${args.device}`,\n timeout: 4000\n });\n break;\n }\n }\n };\n const onDragAndDropError = (error) => {\n toast.show({\n type: 'error',\n title: error.message,\n message: error.file?.name,\n timeout: 4000\n });\n };\n core.transport.on('CoreEvent', onCoreEvent);\n dragAndDrop.on('error', onDragAndDropError);\n return () => {\n core.transport.off('CoreEvent', onCoreEvent);\n dragAndDrop.off('error', onDragAndDropError);\n };\n }, []);\n return null;\n};\n\nmodule.exports = ServicesToaster;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst App = require('./App');\n\nmodule.exports = App;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst routes = require('stremio/routes');\nconst { routesRegexp } = require('stremio/common');\n\nconst routerViewsConfig = [\n [\n {\n ...routesRegexp.board,\n component: routes.Board\n }\n ],\n [\n {\n ...routesRegexp.intro,\n component: routes.Intro\n },\n {\n ...routesRegexp.discover,\n component: routes.Discover\n },\n {\n ...routesRegexp.library,\n component: routes.Library\n },\n {\n ...routesRegexp.continuewatching,\n component: routes.Library\n },\n {\n ...routesRegexp.search,\n component: routes.Search\n }\n ],\n [\n {\n ...routesRegexp.metadetails,\n component: routes.MetaDetails\n }\n ],\n [\n {\n ...routesRegexp.addons,\n component: routes.Addons\n },\n {\n ...routesRegexp.settings,\n component: routes.Settings\n }\n ],\n [\n {\n ...routesRegexp.player,\n component: routes.Player\n }\n ]\n];\n\nmodule.exports = routerViewsConfig;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { Intro } = require('stremio/routes');\nconst { useProfile } = require('stremio/common');\n\nconst withProtectedRoutes = (Component) => {\n return function withProtectedRoutes(props) {\n const profile = useProfile();\n const previousAuthRef = React.useRef(profile.auth);\n React.useEffect(() => {\n if (previousAuthRef.current !== null && profile.auth === null) {\n window.location = '#/intro';\n }\n previousAuthRef.current = profile.auth;\n }, [profile]);\n const onRouteChange = React.useCallback((routeConfig) => {\n if (profile.auth !== null && routeConfig.component === Intro) {\n window.location.replace('#/');\n return true;\n }\n }, [profile]);\n return (\n <Component {...props} onRouteChange={onRouteChange} />\n );\n };\n};\n\nmodule.exports = withProtectedRoutes;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Image = require('stremio/common/Image');\nconst styles = require('./styles');\n\nconst AddonDetails = ({ className, id, name, version, logo, description, types, transportUrl, official }) => {\n const renderLogoFallback = React.useCallback(() => (\n <Icon className={styles['icon']} icon={'ic_addons'} />\n ), []);\n return (\n <div className={classnames(className, styles['addon-details-container'])}>\n <div className={styles['title-container']}>\n <Image\n className={styles['logo']}\n src={logo}\n alt={' '}\n renderFallback={renderLogoFallback}\n />\n <div className={styles['name-container']}>\n <span className={styles['name']}>{typeof name === 'string' && name.length > 0 ? name : id}</span>\n {\n typeof version === 'string' && version.length > 0 ?\n <span className={styles['version']}>v. {version}</span>\n :\n null\n }\n </div>\n </div>\n {\n typeof description === 'string' && description.length > 0 ?\n <div className={styles['section-container']}>\n <span className={styles['section-label']}>{description}</span>\n </div>\n :\n null\n }\n {\n typeof transportUrl === 'string' && transportUrl.length > 0 ?\n <div className={styles['section-container']}>\n <span className={styles['section-header']}>URL: </span>\n <span className={classnames(styles['section-label'], styles['transport-url-label'])}>{transportUrl}</span>\n </div>\n :\n null\n }\n {\n Array.isArray(types) && types.length > 0 ?\n <div className={styles['section-container']}>\n <span className={styles['section-header']}>Supported types: </span>\n <span className={styles['section-label']}>\n {\n types.length === 1 ?\n types[0]\n :\n types.slice(0, -1).join(', ') + ' & ' + types[types.length - 1]\n }\n </span>\n </div>\n :\n null\n }\n {\n !official ?\n <div className={styles['section-container']}>\n <div className={classnames(styles['section-label'], styles['disclaimer-label'])}>Using third-party add-ons will always be subject to your responsibility and the governing law of the jurisdiction you are located.</div>\n </div>\n :\n null\n }\n </div>\n );\n};\n\nAddonDetails.propTypes = {\n className: PropTypes.string,\n id: PropTypes.string,\n name: PropTypes.string,\n version: PropTypes.string,\n logo: PropTypes.string,\n description: PropTypes.string,\n types: PropTypes.arrayOf(PropTypes.string),\n transportUrl: PropTypes.string,\n official: PropTypes.bool,\n};\n\nmodule.exports = AddonDetails;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst AddonDetails = require('./AddonDetails');\n\nmodule.exports = AddonDetails;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst ModalDialog = require('stremio/common/ModalDialog');\nconst { withCoreSuspender } = require('stremio/common/CoreSuspender');\nconst { useServices } = require('stremio/services');\nconst AddonDetailsWithRemoteAndLocalAddon = withRemoteAndLocalAddon(require('./AddonDetails'));\nconst useAddonDetails = require('./useAddonDetails');\nconst styles = require('./styles');\n\nfunction withRemoteAndLocalAddon(AddonDetails) {\n const withRemoteAndLocalAddon = ({ remoteAddon, localAddon, ...props }) => {\n const addon = remoteAddon !== null && remoteAddon.content.type === 'Ready' ?\n remoteAddon.content.content\n :\n localAddon !== null ?\n localAddon\n :\n null;\n if (addon === null) {\n return null;\n }\n\n return (\n <AddonDetails\n {...props}\n id={addon.manifest.id}\n name={addon.manifest.name}\n version={addon.manifest.version}\n logo={addon.manifest.logo}\n description={addon.manifest.description}\n types={addon.manifest.types}\n transportUrl={addon.transportUrl}\n official={addon.flags.official}\n />\n );\n };\n withRemoteAndLocalAddon.displayName = 'withRemoteAndLocalAddon';\n return withRemoteAndLocalAddon;\n}\n\nconst AddonDetailsModal = ({ transportUrl, onCloseRequest }) => {\n const { core } = useServices();\n const addonDetails = useAddonDetails(transportUrl);\n const modalButtons = React.useMemo(() => {\n const cancelButton = {\n className: styles['cancel-button'],\n label: 'Cancel',\n props: {\n onClick: (event) => {\n if (typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'cancel',\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n }\n };\n const configureButton = addonDetails.remoteAddon !== null &&\n addonDetails.remoteAddon.content.type === 'Ready' &&\n addonDetails.remoteAddon.content.content.manifest.behaviorHints.configurable ?\n {\n className: styles['configure-button'],\n label: 'Configure',\n props: {\n onClick: (event) => {\n window.open(transportUrl.replace('manifest.json', 'configure'));\n if (typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'configure',\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n }\n }\n :\n null;\n const toggleButton = addonDetails.localAddon !== null ?\n {\n className: styles['uninstall-button'],\n label: 'Uninstall',\n props: {\n onClick: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UninstallAddon',\n args: addonDetails.localAddon\n }\n });\n if (typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'uninstall',\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n }\n }\n :\n addonDetails.remoteAddon !== null && addonDetails.remoteAddon.content.type === 'Ready' ?\n {\n\n className: styles['install-button'],\n label: 'Install',\n props: {\n onClick: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'InstallAddon',\n args: addonDetails.remoteAddon.content.content\n }\n });\n if (typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'install',\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n }\n }\n :\n null;\n return toggleButton !== null ? configureButton ? [cancelButton, configureButton, toggleButton] : [cancelButton, toggleButton] : [cancelButton];\n }, [addonDetails, onCloseRequest]);\n return (\n <ModalDialog className={styles['addon-details-modal-container']} title={'Stremio addon'} buttons={modalButtons} onCloseRequest={onCloseRequest}>\n {\n addonDetails.selected === null ?\n <div className={styles['addon-details-message-container']}>\n Loading addon manifest\n </div>\n :\n addonDetails.remoteAddon === null || addonDetails.remoteAddon.content.type === 'Loading' ?\n <div className={styles['addon-details-message-container']}>\n Loading addon manifest from {addonDetails.selected.transportUrl}\n </div>\n :\n addonDetails.remoteAddon.content.type === 'Err' && addonDetails.localAddon === null ?\n <div className={styles['addon-details-message-container']}>\n Failed to get addon manifest from {addonDetails.selected.transportUrl}\n <div>{addonDetails.remoteAddon.content.content.message}</div>\n </div>\n :\n <AddonDetailsWithRemoteAndLocalAddon\n className={styles['addon-details-container']}\n remoteAddon={addonDetails.remoteAddon}\n localAddon={addonDetails.localAddon}\n />\n }\n </ModalDialog>\n );\n};\n\nAddonDetailsModal.propTypes = {\n transportUrl: PropTypes.string,\n onCloseRequest: PropTypes.func\n};\n\nconst AddonDetailsModalFallback = ({ onCloseRequest }) => (\n <ModalDialog\n className={styles['addon-details-modal-container']}\n title={'Stremio addon'}\n onCloseRequest={onCloseRequest}\n >\n <div className={styles['addon-details-message-container']}>\n Loading addon manifest\n </div>\n </ModalDialog>\n);\n\nAddonDetailsModalFallback.propTypes = AddonDetailsModal.propTypes;\n\nmodule.exports = withCoreSuspender(AddonDetailsModal, AddonDetailsModalFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst AddonDetailsModal = require('./AddonDetailsModal');\n\nmodule.exports = AddonDetailsModal;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst useModelState = require('stremio/common/useModelState');\n\nconst useAddonDetails = (transportUrl) => {\n const action = React.useMemo(() => {\n if (typeof transportUrl === 'string') {\n return {\n action: 'Load',\n args: {\n model: 'AddonDetails',\n args: {\n transportUrl\n }\n }\n };\n } else {\n return {\n action: 'Unload'\n };\n }\n }, [transportUrl]);\n return useModelState({ model: 'addon_details', action });\n};\n\nmodule.exports = useAddonDetails;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst styles = require('./styles');\nconst { useLongPress } = require('use-long-press');\n\nconst Button = React.forwardRef(({ className, href, disabled, children, onLongPress, ...props }, ref) => {\n const longPress = useLongPress(onLongPress, { detect: 'pointer' });\n const onKeyDown = React.useCallback((event) => {\n if (typeof props.onKeyDown === 'function') {\n props.onKeyDown(event);\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n if (!event.nativeEvent.buttonClickPrevented) {\n event.currentTarget.click();\n }\n }\n }, [props.onKeyDown]);\n const onMouseDown = React.useCallback((event) => {\n if (typeof props.onMouseDown === 'function') {\n props.onMouseDown(event);\n }\n\n if (!event.nativeEvent.buttonBlurPrevented) {\n event.preventDefault();\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement.blur();\n }\n }\n }, [props.onMouseDown]);\n return React.createElement(\n typeof href === 'string' && href.length > 0 ? 'a' : 'div',\n {\n tabIndex: 0,\n ...props,\n ref,\n className: classnames(className, styles['button-container'], { 'disabled': disabled }),\n href,\n onKeyDown,\n onMouseDown,\n ...longPress()\n },\n children\n );\n});\n\nButton.displayName = 'Button';\n\nButton.propTypes = {\n className: PropTypes.string,\n href: PropTypes.string,\n disabled: PropTypes.bool,\n children: PropTypes.node,\n onKeyDown: PropTypes.func,\n onMouseDown: PropTypes.func,\n onLongPress: PropTypes.func,\n};\n\nmodule.exports = Button;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Button = require('./Button');\n\nmodule.exports = Button;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst CHROMECAST_RECEIVER_APP_ID = '1634F54B';\nconst SUBTITLES_SIZES = [75, 100, 125, 150, 175, 200, 250];\nconst SUBTITLES_FONTS = ['Roboto', 'Arial', 'Halvetica', 'Times New Roman', 'Verdana', 'Courier', 'Lucida Console', 'sans-serif', 'serif', 'monospace'];\nconst SEEK_TIME_DURATIONS = [5000, 10000, 15000, 20000, 25000, 30000];\nconst NEXT_VIDEO_POPUP_DURATIONS = [0, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000];\nconst CATALOG_PREVIEW_SIZE = 10;\nconst CATALOG_PAGE_SIZE = 100;\nconst NONE_EXTRA_VALUE = 'None';\nconst SKIP_EXTRA_NAME = 'skip';\nconst META_LINK_CATEGORY = 'meta';\nconst IMDB_LINK_CATEGORY = 'imdb';\nconst SHARE_LINK_CATEGORY = 'share';\nconst WRITERS_LINK_CATEGORY = 'Writers';\nconst TYPE_PRIORITIES = {\n movie: 10,\n series: 9,\n channel: 8,\n tv: 7,\n music: 6,\n radio: 5,\n podcast: 4,\n game: 3,\n book: 2,\n adult: 1,\n other: -Infinity\n};\nconst ICON_FOR_TYPE = new Map([\n ['movie', 'ic_movies'],\n ['series', 'ic_series'],\n ['channel', 'ic_channels'],\n ['tv', 'ic_tv'],\n ['book', 'ic_book'],\n ['game', 'ic_games'],\n ['music', 'ic_music'],\n ['adult', 'ic_adult'],\n ['radio', 'ic_radio'],\n ['podcast', 'ic_podcast'],\n ['other', 'ic_movies'],\n]);\n\nmodule.exports = {\n CHROMECAST_RECEIVER_APP_ID,\n SUBTITLES_SIZES,\n SUBTITLES_FONTS,\n SEEK_TIME_DURATIONS,\n NEXT_VIDEO_POPUP_DURATIONS,\n CATALOG_PREVIEW_SIZE,\n CATALOG_PAGE_SIZE,\n NONE_EXTRA_VALUE,\n SKIP_EXTRA_NAME,\n META_LINK_CATEGORY,\n IMDB_LINK_CATEGORY,\n SHARE_LINK_CATEGORY,\n WRITERS_LINK_CATEGORY,\n TYPE_PRIORITIES,\n ICON_FOR_TYPE\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst styles = require('./styles');\n\nconst Checkbox = React.forwardRef(({ className, checked, children, ...props }, ref) => {\n return (\n <Button {...props} ref={ref} className={classnames(className, styles['checkbox-container'], { 'checked': checked })}>\n {\n checked ?\n <svg className={styles['icon']} viewBox={'0 0 100 100'}>\n <Icon x={'10'} y={'10'} width={'80'} height={'80'} icon={'ic_check'} />\n </svg>\n :\n <Icon className={styles['icon']} icon={'ic_box_empty'} />\n }\n {children}\n </Button>\n );\n});\n\nCheckbox.displayName = 'Checkbox';\n\nCheckbox.propTypes = {\n className: PropTypes.string,\n checked: PropTypes.bool,\n children: PropTypes.node\n};\n\nmodule.exports = Checkbox;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Checkbox = require('./Checkbox');\n\nmodule.exports = Checkbox;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst AColorPicker = require('a-color-picker');\nconst { useTranslation } = require('react-i18next');\nconst Button = require('stremio/common/Button');\nconst ModalDialog = require('stremio/common/ModalDialog');\nconst useBinaryState = require('stremio/common/useBinaryState');\nconst ColorPicker = require('./ColorPicker');\nconst styles = require('./styles');\n\nconst parseColor = (value) => {\n const color = AColorPicker.parseColor(value, 'hexcss4');\n return typeof color === 'string' ? color : '#ffffffff';\n};\n\nconst ColorInput = ({ className, value, dataset, onChange, ...props }) => {\n const { t } = useTranslation();\n const [modalOpen, openModal, closeModal] = useBinaryState(false);\n const [tempValue, setTempValue] = React.useState(() => {\n return parseColor(value);\n });\n const labelButtonStyle = React.useMemo(() => ({\n backgroundColor: value\n }), [value]);\n const isTransparent = React.useMemo(() => {\n return parseColor(value).endsWith('00');\n }, [value]);\n const labelButtonOnClick = React.useCallback((event) => {\n if (typeof props.onClick === 'function') {\n props.onClick(event);\n }\n\n if (!event.nativeEvent.openModalPrevented) {\n openModal();\n }\n }, [props.onClick]);\n const modalDialogOnClick = React.useCallback((event) => {\n event.nativeEvent.openModalPrevented = true;\n }, []);\n const modalButtons = React.useMemo(() => {\n const selectButtonOnClick = (event) => {\n if (typeof onChange === 'function') {\n onChange({\n type: 'change',\n value: tempValue,\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n\n closeModal();\n };\n return [\n {\n label: 'Select',\n props: {\n 'data-autofocus': true,\n onClick: selectButtonOnClick\n }\n }\n ];\n }, [tempValue, dataset, onChange]);\n const colorPickerOnInput = React.useCallback((event) => {\n setTempValue(parseColor(event.value));\n }, []);\n React.useLayoutEffect(() => {\n setTempValue(parseColor(value));\n }, [value, modalOpen]);\n return (\n <Button title={isTransparent ? t('BUTTON_COLOR_TRANSPARENT') : value} {...props} style={labelButtonStyle} className={classnames(className, styles['color-input-container'])} onClick={labelButtonOnClick}>\n {\n isTransparent ?\n <div className={styles['transparent-label-container']}>\n <div className={styles['transparent-label']}>{ t('BUTTON_COLOR_TRANSPARENT') }</div>\n </div>\n :\n null\n }\n {\n modalOpen ?\n <ModalDialog title={'Choose a color:'} buttons={modalButtons} onCloseRequest={closeModal} onClick={modalDialogOnClick}>\n <ColorPicker className={styles['color-picker-container']} value={tempValue} onInput={colorPickerOnInput} />\n </ModalDialog>\n :\n null\n }\n </Button>\n );\n};\n\nColorInput.propTypes = {\n className: PropTypes.string,\n value: PropTypes.string,\n dataset: PropTypes.object,\n onChange: PropTypes.func,\n onClick: PropTypes.func\n};\n\nmodule.exports = ColorInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst AColorPicker = require('a-color-picker');\nconst styles = require('./styles');\n\nconst parseColor = (value) => {\n return AColorPicker.parseColor(value, 'hexcss4');\n};\n\nconst ColorPicker = ({ className, value, onInput }) => {\n const pickerRef = React.useRef(null);\n const pickerElementRef = React.useRef(null);\n React.useLayoutEffect(() => {\n pickerRef.current = AColorPicker.createPicker(pickerElementRef.current, {\n color: parseColor(value),\n showHSL: false,\n showHEX: false,\n showRGB: false,\n showAlpha: true\n });\n const pickerClipboard = pickerElementRef.current.querySelector('.a-color-picker-clipbaord');\n if (pickerClipboard instanceof HTMLElement) {\n pickerClipboard.tabIndex = -1;\n }\n }, []);\n React.useLayoutEffect(() => {\n if (typeof onInput === 'function') {\n pickerRef.current.on('change', (picker, value) => {\n onInput({\n type: 'input',\n value: parseColor(value)\n });\n });\n }\n return () => {\n pickerRef.current.off('change');\n };\n }, [onInput]);\n React.useLayoutEffect(() => {\n const nextValue = parseColor(value);\n if (nextValue !== parseColor(pickerRef.current.color)) {\n pickerRef.current.color = nextValue;\n }\n }, [value]);\n return (\n <div ref={pickerElementRef} className={classnames(className, styles['color-picker-container'])} />\n );\n};\n\nColorPicker.propTypes = {\n className: PropTypes.string,\n value: PropTypes.string,\n onInput: PropTypes.func\n};\n\nmodule.exports = ColorPicker;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ColorPicker = require('./ColorPicker');\n\nmodule.exports = ColorPicker;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ColorInput = require('./ColorInput');\n\nmodule.exports = ColorInput;\n\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\n\nconst CoreSuspenderContext = React.createContext(null);\n\nCoreSuspenderContext.displayName = 'CoreSuspenderContext';\n\nfunction wrapPromise(promise) {\n let status = 'pending';\n let result;\n const suspender = promise.then(\n (resp) => {\n status = 'success';\n result = resp;\n },\n (error) => {\n status = 'error';\n result = error;\n }\n );\n return {\n read() {\n if (status === 'pending') {\n throw suspender;\n } else if (status === 'error') {\n throw result;\n } else if (status === 'success') {\n return result;\n }\n }\n };\n}\n\nconst useCoreSuspender = () => {\n return React.useContext(CoreSuspenderContext);\n};\n\nconst withCoreSuspender = (Component, Fallback = () => { }) => {\n return function withCoreSuspender(props) {\n const { core } = useServices();\n const parentSuspender = useCoreSuspender();\n const [render, setRender] = React.useState(parentSuspender === null);\n const statesRef = React.useRef({});\n const streamsRef = React.useRef({});\n const getState = React.useCallback((model) => {\n if (!statesRef.current[model]) {\n statesRef.current[model] = wrapPromise(core.transport.getState(model));\n }\n\n return statesRef.current[model].read();\n }, []);\n const decodeStream = React.useCallback((stream) => {\n if (!streamsRef.current[stream]) {\n streamsRef.current[stream] = wrapPromise(core.transport.decodeStream(stream));\n }\n\n return streamsRef.current[stream].read();\n }, []);\n const suspender = React.useMemo(() => ({ getState, decodeStream }), []);\n React.useLayoutEffect(() => {\n if (!render) {\n setRender(true);\n }\n }, []);\n return render ?\n <React.Suspense fallback={<Fallback {...props} />}>\n <CoreSuspenderContext.Provider value={suspender}>\n <Component {...props} />\n </CoreSuspenderContext.Provider>\n </React.Suspense>\n :\n null;\n };\n};\n\nmodule.exports = { withCoreSuspender, useCoreSuspender };\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\n\nconst DelayedRenderer = ({ children, delay }) => {\n const [render, setRender] = React.useState(false);\n React.useEffect(() => {\n const timeout = setTimeout(() => {\n setRender(true);\n }, delay);\n return () => {\n clearTimeout(timeout);\n };\n }, []);\n return render ? children : null;\n};\n\nDelayedRenderer.propTypes = {\n children: PropTypes.node\n};\n\nmodule.exports = DelayedRenderer;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst DelayedRenderer = require('./DelayedRenderer');\n\nmodule.exports = DelayedRenderer;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\n\nconst Image = ({ className, src, alt, fallbackSrc, renderFallback, ...props }) => {\n const [broken, setBroken] = React.useState(false);\n const onError = React.useCallback((event) => {\n if (typeof props.onError === 'function') {\n props.onError(event);\n }\n\n setBroken(true);\n }, [props.onError]);\n React.useLayoutEffect(() => {\n setBroken(false);\n }, [src]);\n return (broken || typeof src !== 'string' || src.length === 0) && (typeof renderFallback === 'function' || typeof fallbackSrc === 'string') ?\n typeof renderFallback === 'function' ?\n renderFallback()\n :\n <img {...props} className={className} src={fallbackSrc} alt={alt} />\n :\n <img {...props} className={className} src={src} alt={alt} onError={onError} />;\n};\n\nImage.propTypes = {\n className: PropTypes.string,\n src: PropTypes.string,\n alt: PropTypes.string,\n fallbackSrc: PropTypes.string,\n renderFallback: PropTypes.func,\n onError: PropTypes.func\n};\n\nmodule.exports = Image;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Image = require('./Image');\n\nmodule.exports = Image;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst PropTypes = require('prop-types');\nconst MetaItem = require('stremio/common/MetaItem');\nconst { t } = require('i18next');\n\nconst OPTIONS = [\n { label: 'LIBRARY_PLAY', value: 'play' },\n { label: 'LIBRARY_DETAILS', value: 'details' },\n { label: 'LIBRARY_RESUME_DISMISS', value: 'dismiss' },\n { label: 'LIBRARY_REMOVE', value: 'remove' },\n];\n\nconst LibItem = ({ _id, removable, ...props }) => {\n const { core } = useServices();\n const options = React.useMemo(() => {\n return OPTIONS\n .filter(({ value }) => {\n switch (value) {\n case 'play':\n return props.deepLinks && typeof props.deepLinks.player === 'string';\n case 'details':\n return props.deepLinks && (typeof props.deepLinks.metaDetailsVideos === 'string' || typeof props.deepLinks.metaDetailsStreams === 'string');\n case 'dismiss':\n return typeof _id === 'string' && props.progress !== null && !isNaN(props.progress);\n case 'remove':\n return typeof _id === 'string' && removable;\n }\n })\n .map((option) => ({\n ...option,\n label: t(option.label)\n }));\n }, [_id, removable, props.progress, props.deepLinks]);\n const optionOnSelect = React.useCallback((event) => {\n if (typeof props.optionOnSelect === 'function') {\n props.optionOnSelect(event);\n }\n\n if (!event.nativeEvent.optionSelectPrevented) {\n switch (event.value) {\n case 'play': {\n if (props.deepLinks && typeof props.deepLinks.player === 'string') {\n window.location = props.deepLinks.player;\n }\n\n break;\n }\n case 'details': {\n if (props.deepLinks) {\n if (typeof props.deepLinks.metaDetailsVideos === 'string') {\n window.location = props.deepLinks.metaDetailsVideos;\n } else if (typeof props.deepLinks.metaDetailsStreams === 'string') {\n window.location = props.deepLinks.metaDetailsStreams;\n }\n }\n\n break;\n }\n case 'dismiss': {\n if (typeof _id === 'string') {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'RewindLibraryItem',\n args: _id\n }\n });\n }\n\n break;\n }\n case 'remove': {\n if (typeof _id === 'string') {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'RemoveFromLibrary',\n args: _id\n }\n });\n }\n\n break;\n }\n }\n }\n }, [_id, props.deepLinks, props.optionOnSelect]);\n return (\n <MetaItem\n {...props}\n options={options}\n optionOnSelect={optionOnSelect}\n />\n );\n};\n\nLibItem.propTypes = {\n _id: PropTypes.string,\n removable: PropTypes.bool,\n progress: PropTypes.number,\n deepLinks: PropTypes.shape({\n metaDetailsVideos: PropTypes.string,\n metaDetailsStreams: PropTypes.string,\n player: PropTypes.string\n }),\n optionOnSelect: PropTypes.func\n};\n\nmodule.exports = LibItem;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst LibItem = require('./LibItem');\n\nmodule.exports = LibItem;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { VerticalNavBar, HorizontalNavBar } = require('stremio/common/NavBar');\nconst styles = require('./styles');\n\nconst TABS = [\n { id: 'board', label: 'Board', icon: 'ic_board', href: '#/' },\n { id: 'discover', label: 'Discover', icon: 'ic_discover', href: '#/discover' },\n { id: 'library', label: 'Library', icon: 'ic_library', href: '#/library' },\n { id: 'settings', label: 'SETTINGS', icon: 'ic_settings', href: '#/settings' },\n { id: 'addons', label: 'ADDONS', icon: 'ic_addons', href: '#/addons' }\n];\n\nconst MainNavBars = React.memo(({ className, route, query, children }) => {\n return (\n <div className={classnames(className, styles['main-nav-bars-container'])}>\n <HorizontalNavBar\n className={styles['horizontal-nav-bar']}\n route={route}\n query={query}\n backButton={false}\n searchBar={true}\n addonsButton={true}\n fullscreenButton={true}\n navMenu={true}\n />\n <VerticalNavBar\n className={styles['vertical-nav-bar']}\n selected={route}\n tabs={TABS}\n />\n <div className={styles['nav-content-container']}>{children}</div>\n </div>\n );\n});\n\nMainNavBars.displayName = 'MainNavBars';\n\nMainNavBars.propTypes = {\n className: PropTypes.string,\n route: PropTypes.string,\n query: PropTypes.string,\n children: PropTypes.node\n};\n\nmodule.exports = MainNavBars;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MainNavBars = require('./MainNavBars');\n\nmodule.exports = MainNavBars;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst filterInvalidDOMProps = require('filter-invalid-dom-props').default;\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst Image = require('stremio/common/Image');\nconst Multiselect = require('stremio/common/Multiselect');\nconst PlayIconCircleCentered = require('stremio/common/PlayIconCircleCentered');\nconst useBinaryState = require('stremio/common/useBinaryState');\nconst { ICON_FOR_TYPE } = require('stremio/common/CONSTANTS');\nconst styles = require('./styles');\n\nconst MetaItem = React.memo(({ className, type, name, poster, posterShape, playIcon, progress, options, deepLinks, dataset, optionOnSelect, ...props }) => {\n const [menuOpen, onMenuOpen, onMenuClose] = useBinaryState(false);\n const href = React.useMemo(() => {\n return deepLinks ?\n typeof deepLinks.player === 'string' ?\n deepLinks.player\n :\n typeof deepLinks.metaDetailsStreams === 'string' ?\n deepLinks.metaDetailsStreams\n :\n typeof deepLinks.metaDetailsVideos === 'string' ?\n deepLinks.metaDetailsVideos\n :\n null\n :\n null;\n }, [deepLinks]);\n const metaItemOnClick = React.useCallback((event) => {\n if (typeof props.onClick === 'function') {\n props.onClick(event);\n }\n\n if (event.nativeEvent.selectPrevented) {\n event.preventDefault();\n }\n }, [props.onClick]);\n const menuOnClick = React.useCallback((event) => {\n event.nativeEvent.selectPrevented = true;\n }, []);\n const menuOnSelect = React.useCallback((event) => {\n if (typeof optionOnSelect === 'function') {\n optionOnSelect({\n type: 'select-option',\n value: event.value,\n dataset: dataset,\n reactEvent: event.reactEvent,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, optionOnSelect]);\n const renderPosterFallback = React.useCallback(() => (\n <Icon\n className={styles['placeholder-icon']}\n icon={ICON_FOR_TYPE.has(type) ? ICON_FOR_TYPE.get(type) : ICON_FOR_TYPE.get('other')}\n />\n ), [type]);\n const renderMenuLabelContent = React.useCallback(() => (\n <Icon className={styles['icon']} icon={'ic_more'} />\n ), []);\n return (\n <Button title={name} href={href} {...filterInvalidDOMProps(props)} className={classnames(className, styles['meta-item-container'], styles['poster-shape-poster'], styles[`poster-shape-${posterShape}`], { 'active': menuOpen })} onClick={metaItemOnClick}>\n <div className={styles['poster-container']}>\n <div className={styles['poster-image-layer']}>\n <Image\n className={styles['poster-image']}\n src={poster}\n alt={' '}\n renderFallback={renderPosterFallback}\n />\n </div>\n {\n playIcon ?\n <div className={styles['play-icon-layer']}>\n <PlayIconCircleCentered className={styles['play-icon']} />\n </div>\n :\n null\n }\n {\n progress > 0 ?\n <div className={styles['progress-bar-layer']}>\n <div className={styles['progress-bar']} style={{ width: `${Math.max(0, Math.min(1, progress)) * 100}%` }} />\n </div>\n :\n null\n }\n </div>\n {\n (typeof name === 'string' && name.length > 0) || (Array.isArray(options) && options.length > 0) ?\n <div className={styles['title-bar-container']}>\n <div className={styles['title-label']}>\n {typeof name === 'string' && name.length > 0 ? name : ''}\n </div>\n {\n Array.isArray(options) && options.length > 0 ?\n <Multiselect\n className={styles['menu-label-container']}\n renderLabelContent={renderMenuLabelContent}\n options={options}\n onOpen={onMenuOpen}\n onClose={onMenuClose}\n onSelect={menuOnSelect}\n tabIndex={-1}\n onClick={menuOnClick}\n />\n :\n null\n }\n </div>\n :\n null\n }\n </Button>\n );\n});\n\nMetaItem.displayName = 'MetaItem';\n\nMetaItem.propTypes = {\n className: PropTypes.string,\n type: PropTypes.string,\n name: PropTypes.string,\n poster: PropTypes.string,\n posterShape: PropTypes.oneOf(['poster', 'landscape', 'square']),\n playIcon: PropTypes.bool,\n progress: PropTypes.number,\n options: PropTypes.array,\n deepLinks: PropTypes.shape({\n metaDetailsVideos: PropTypes.string,\n metaDetailsStreams: PropTypes.string,\n player: PropTypes.string\n }),\n dataset: PropTypes.object,\n optionOnSelect: PropTypes.func,\n onClick: PropTypes.func\n};\n\nmodule.exports = MetaItem;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaItem = require('./MetaItem');\n\nmodule.exports = MetaItem;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst styles = require('./styles');\n\nconst ActionButton = ({ className, icon, label, ...props }) => {\n return (\n <Button title={label} {...props} className={classnames(className, styles['action-button-container'])}>\n {\n typeof icon === 'string' && icon.length > 0 ?\n <div className={styles['icon-container']}>\n <Icon className={styles['icon']} icon={icon} />\n </div>\n :\n null\n }\n {\n typeof label === 'string' && label.length > 0 ?\n <div className={styles['label-container']}>\n <div className={styles['label']}>{label}</div>\n </div>\n :\n null\n }\n </Button>\n );\n};\n\nActionButton.propTypes = {\n className: PropTypes.string,\n icon: PropTypes.string,\n label: PropTypes.string\n};\n\nmodule.exports = ActionButton;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ActionButton = require('./ActionButton');\n\nmodule.exports = ActionButton;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Button = require('stremio/common/Button');\nconst styles = require('./styles');\n\nconst MetaLinks = ({ className, label, links }) => {\n const { t } = useTranslation();\n return (\n <div className={classnames(className, styles['meta-links-container'])}>\n {\n typeof label === 'string' && label.length > 0 ?\n <div className={styles['label-container']}>\n {t(`LINKS_${label.toUpperCase()}`)}\n </div>\n :\n null\n }\n {\n Array.isArray(links) && links.length > 0 ?\n <div className={styles['links-container']}>\n {links.map(({ label, href }, index) => (\n <Button key={index} className={styles['link-container']} title={label} href={href}>\n { t(label) }\n </Button>\n ))}\n </div>\n :\n null\n }\n </div>\n );\n};\n\nMetaLinks.propTypes = {\n className: PropTypes.string,\n label: PropTypes.string,\n links: PropTypes.arrayOf(PropTypes.shape({\n label: PropTypes.string,\n href: PropTypes.string\n }))\n};\n\nmodule.exports = MetaLinks;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaLinks = require('./MetaLinks');\n\nmodule.exports = MetaLinks;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst UrlUtils = require('url');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst Image = require('stremio/common/Image');\nconst ModalDialog = require('stremio/common/ModalDialog');\nconst SharePrompt = require('stremio/common/SharePrompt');\nconst CONSTANTS = require('stremio/common/CONSTANTS');\nconst routesRegexp = require('stremio/common/routesRegexp');\nconst useBinaryState = require('stremio/common/useBinaryState');\nconst ActionButton = require('./ActionButton');\nconst MetaLinks = require('./MetaLinks');\nconst MetaPreviewPlaceholder = require('./MetaPreviewPlaceholder');\nconst styles = require('./styles');\n\nconst ALLOWED_LINK_REDIRECTS = [\n routesRegexp.search.regexp,\n routesRegexp.discover.regexp,\n routesRegexp.metadetails.regexp\n];\n\nconst MetaPreview = ({ className, compact, name, logo, background, runtime, releaseInfo, released, description, deepLinks, links, trailerStreams, inLibrary, toggleInLibrary }) => {\n const { t } = useTranslation();\n const [shareModalOpen, openShareModal, closeShareModal] = useBinaryState(false);\n const linksGroups = React.useMemo(() => {\n return Array.isArray(links) ?\n links\n .filter((link) => link && typeof link.category === 'string' && typeof link.url === 'string')\n .reduce((linksGroups, { category, name, url }) => {\n const { protocol, path, pathname, hostname } = UrlUtils.parse(url);\n if (category === CONSTANTS.IMDB_LINK_CATEGORY) {\n if (hostname === 'imdb.com') {\n linksGroups.set(category, {\n label: name,\n href: `https://www.stremio.com/warning#${encodeURIComponent(url)}`\n });\n }\n } else if (category === CONSTANTS.SHARE_LINK_CATEGORY) {\n linksGroups.set(category, {\n label: name,\n href: url\n });\n } else {\n if (protocol === 'stremio:') {\n if (pathname !== null && ALLOWED_LINK_REDIRECTS.some((regexp) => pathname.match(regexp))) {\n if (!linksGroups.has(category)) {\n linksGroups.set(category, []);\n }\n linksGroups.get(category).push({\n label: name,\n href: `#${path}`\n });\n }\n } else if (typeof hostname === 'string' && hostname.length > 0) {\n if (!linksGroups.has(category)) {\n linksGroups.set(category, []);\n }\n linksGroups.get(category).push({\n label: name,\n href: `https://www.stremio.com/warning#${encodeURIComponent(url)}`\n });\n }\n }\n\n return linksGroups;\n }, new Map())\n :\n new Map();\n }, [links]);\n const showHref = React.useMemo(() => {\n return deepLinks ?\n typeof deepLinks.player === 'string' ?\n deepLinks.player\n :\n typeof deepLinks.metaDetailsStreams === 'string' ?\n deepLinks.metaDetailsStreams\n :\n typeof deepLinks.metaDetailsVideos === 'string' ?\n deepLinks.metaDetailsVideos\n :\n null\n :\n null;\n }, [deepLinks]);\n const trailerHref = React.useMemo(() => {\n if (!Array.isArray(trailerStreams) || trailerStreams.length === 0) {\n return null;\n }\n\n return trailerStreams[0].deepLinks.player;\n }, [trailerStreams]);\n const renderLogoFallback = React.useCallback(() => (\n <div className={styles['logo-placeholder']}>{!compact ? name : null}</div>\n ), [compact, name]);\n return (\n <div className={classnames(className, styles['meta-preview-container'], { [styles['compact']]: compact })}>\n {\n typeof background === 'string' && background.length > 0 ?\n <div className={styles['background-image-layer']}>\n <Image className={styles['background-image']} src={background} alt={' '} />\n </div>\n :\n null\n }\n <div className={styles['meta-info-container']}>\n {\n typeof logo === 'string' && logo.length > 0 ?\n <Image\n className={styles['logo']}\n src={logo}\n alt={' '}\n title={name}\n renderFallback={renderLogoFallback}\n />\n :\n renderLogoFallback()\n }\n {\n (typeof releaseInfo === 'string' && releaseInfo.length > 0) || (released instanceof Date && !isNaN(released.getTime())) || (typeof runtime === 'string' && runtime.length > 0) || linksGroups.has(CONSTANTS.IMDB_LINK_CATEGORY) ?\n <div className={styles['runtime-release-info-container']}>\n {\n typeof runtime === 'string' && runtime.length > 0 ?\n <div className={styles['runtime-label']}>{runtime}</div>\n :\n null\n }\n {\n typeof releaseInfo === 'string' && releaseInfo.length > 0 ?\n <div className={styles['release-info-label']}>{releaseInfo}</div>\n :\n released instanceof Date && !isNaN(released.getTime()) ?\n <div className={styles['release-info-label']}>{released.getFullYear()}</div>\n :\n null\n }\n {\n linksGroups.has(CONSTANTS.IMDB_LINK_CATEGORY) ?\n <Button\n className={styles['imdb-button-container']}\n title={linksGroups.get(CONSTANTS.IMDB_LINK_CATEGORY).label}\n href={linksGroups.get(CONSTANTS.IMDB_LINK_CATEGORY).href}\n target={'_blank'}\n {...(compact ? { tabIndex: -1 } : null)}\n >\n <Icon className={styles['icon']} icon={'ic_imdbnoframe'} />\n <div className={styles['label']}>{linksGroups.get(CONSTANTS.IMDB_LINK_CATEGORY).label}</div>\n </Button>\n :\n null\n }\n </div>\n :\n null\n }\n {\n compact && typeof name === 'string' && name.length > 0 ?\n <div className={styles['name-container']}>\n {name}\n </div>\n :\n null\n }\n {\n compact && typeof description === 'string' && description.length > 0 ?\n <div className={styles['description-container']}>{description}</div>\n :\n null\n }\n {\n Array.from(linksGroups.keys())\n .filter((category) => {\n return category !== CONSTANTS.IMDB_LINK_CATEGORY &&\n category !== CONSTANTS.SHARE_LINK_CATEGORY &&\n category !== CONSTANTS.WRITERS_LINK_CATEGORY;\n })\n .map((category, index) => (\n <MetaLinks\n key={index}\n className={styles['meta-links']}\n label={category}\n links={linksGroups.get(category)}\n />\n ))\n }\n </div>\n <div className={styles['action-buttons-container']}>\n {\n typeof toggleInLibrary === 'function' ?\n <ActionButton\n className={styles['action-button']}\n icon={inLibrary ? 'ic_removelib' : 'ic_addlib'}\n label={inLibrary ? t('REMOVE_FROM_LIB') : t('ADD_TO_LIB')}\n tabIndex={compact ? -1 : 0}\n onClick={toggleInLibrary}\n />\n :\n null\n }\n {\n typeof trailerHref === 'string' ?\n <ActionButton\n className={styles['action-button']}\n icon={'ic_movies'}\n label={t('TRAILER')}\n tabIndex={compact ? -1 : 0}\n href={trailerHref}\n />\n :\n null\n }\n {\n typeof showHref === 'string' && compact ?\n <ActionButton\n className={styles['action-button']}\n icon={'ic_play'}\n label={t('SHOW')}\n tabIndex={compact ? -1 : 0}\n href={showHref}\n />\n :\n null\n }\n {\n linksGroups.has(CONSTANTS.SHARE_LINK_CATEGORY) && !compact ?\n <React.Fragment>\n <ActionButton\n className={styles['action-button']}\n icon={'ic_share'}\n label={t('CTX_SHARE')}\n tabIndex={compact ? -1 : 0}\n onClick={openShareModal}\n />\n {\n shareModalOpen ?\n <ModalDialog title={t('CTX_SHARE')} onCloseRequest={closeShareModal}>\n <SharePrompt\n className={styles['share-prompt']}\n url={linksGroups.get(CONSTANTS.SHARE_LINK_CATEGORY).href}\n />\n </ModalDialog>\n :\n null\n }\n </React.Fragment>\n :\n null\n }\n </div>\n </div>\n );\n};\n\nMetaPreview.Placeholder = MetaPreviewPlaceholder;\n\nMetaPreview.propTypes = {\n className: PropTypes.string,\n compact: PropTypes.bool,\n name: PropTypes.string,\n logo: PropTypes.string,\n background: PropTypes.string,\n runtime: PropTypes.string,\n releaseInfo: PropTypes.string,\n released: PropTypes.instanceOf(Date),\n description: PropTypes.string,\n deepLinks: PropTypes.shape({\n metaDetailsVideos: PropTypes.string,\n metaDetailsStreams: PropTypes.string,\n player: PropTypes.string\n }),\n links: PropTypes.arrayOf(PropTypes.shape({\n category: PropTypes.string,\n name: PropTypes.string,\n url: PropTypes.string\n })),\n trailerStreams: PropTypes.array,\n inLibrary: PropTypes.bool,\n toggleInLibrary: PropTypes.func\n};\n\nmodule.exports = MetaPreview;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst styles = require('./styles');\n\nconst MetaPreviewPlaceholder = ({ className }) => {\n return (\n <div className={classnames(className, styles['meta-preview-placeholder-container'])}>\n <div className={styles['meta-info-container']}>\n <div className={styles['logo-container']} />\n <div className={styles['duration-release-info-container']}>\n <div className={styles['duration-container']} />\n <div className={styles['release-info-container']} />\n </div>\n <div className={styles['description-container']}>\n <div className={styles['description-label-container']} />\n <div className={styles['description-label-container']} />\n </div>\n <div className={styles['genres-container']}>\n <div className={styles['genres-header-container']} />\n <div className={styles['genre-label-container']} />\n </div>\n <div className={styles['genres-container']}>\n <div className={styles['genres-header-container']} />\n <div className={styles['genre-label-container']} />\n </div>\n </div>\n <div className={styles['action-buttons-container']}>\n <div className={styles['action-button-container']}>\n <div className={styles['action-button-icon']} />\n <div className={styles['action-button-label']} />\n </div>\n <div className={styles['action-button-container']}>\n <div className={styles['action-button-icon']} />\n <div className={styles['action-button-label']} />\n </div>\n <div className={styles['action-button-container']}>\n <div className={styles['action-button-icon']} />\n <div className={styles['action-button-label']} />\n </div>\n </div>\n </div>\n );\n};\n\nMetaPreviewPlaceholder.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = MetaPreviewPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaPreviewPlaceholder = require('./MetaPreviewPlaceholder');\n\nmodule.exports = MetaPreviewPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaPreview = require('./MetaPreview');\n\nmodule.exports = MetaPreview;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst ReactIs = require('react-is');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst CONSTANTS = require('stremio/common/CONSTANTS');\nconst MetaRowPlaceholder = require('./MetaRowPlaceholder');\nconst styles = require('./styles');\n\nconst MetaRow = ({ className, title, message, items, itemComponent, deepLinks }) => {\n const { t } = useTranslation();\n return (\n <div className={classnames(className, styles['meta-row-container'])}>\n {\n (typeof title === 'string' && title.length > 0) || (deepLinks && (typeof deepLinks.discover === 'string' || typeof deepLinks.library === 'string')) ?\n <div className={styles['header-container']}>\n {\n typeof title === 'string' && title.length > 0 ?\n <div className={styles['title-container']} title={title}>{title}</div>\n :\n null\n }\n {\n deepLinks && (typeof deepLinks.discover === 'string' || typeof deepLinks.library === 'string') ?\n <Button className={styles['see-all-container']} title={t('BUTTON_SEE_ALL')} href={deepLinks.discover || deepLinks.library} tabIndex={-1}>\n <div className={styles['label']}>{ t('BUTTON_SEE_ALL') }</div>\n <Icon className={styles['icon']} icon={'ic_arrow_thin_right'} />\n </Button>\n :\n null\n }\n </div>\n :\n null\n }\n {\n typeof message === 'string' && message.length > 0 ?\n <div className={styles['message-container']} title={message}>{message}</div>\n :\n <div className={styles['meta-items-container']}>\n {\n ReactIs.isValidElementType(itemComponent) ?\n items.slice(0, CONSTANTS.CATALOG_PREVIEW_SIZE).map((item, index) => {\n return React.createElement(itemComponent, {\n ...item,\n key: index,\n className: classnames(styles['meta-item'], styles['poster-shape-poster'], styles[`poster-shape-${item.posterShape}`])\n });\n })\n :\n null\n }\n {Array(Math.max(0, CONSTANTS.CATALOG_PREVIEW_SIZE - items.length)).fill(null).map((_, index) => (\n <div key={index} className={classnames(styles['meta-item'], styles['poster-shape-poster'])} />\n ))}\n </div>\n }\n </div>\n );\n};\n\nMetaRow.Placeholder = MetaRowPlaceholder;\n\nMetaRow.propTypes = {\n className: PropTypes.string,\n title: PropTypes.string,\n message: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({\n posterShape: PropTypes.string\n })),\n itemComponent: PropTypes.elementType,\n deepLinks: PropTypes.shape({\n discover: PropTypes.string,\n library: PropTypes.string\n })\n};\n\nmodule.exports = MetaRow;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst CONSTANTS = require('stremio/common/CONSTANTS');\nconst styles = require('./styles');\n\nconst MetaRowPlaceholder = ({ className, title, deepLinks }) => {\n const { t } = useTranslation();\n return (\n <div className={classnames(className, styles['meta-row-placeholder-container'])}>\n <div className={styles['header-container']}>\n <div className={styles['title-container']} title={typeof title === 'string' && title.length > 0 ? title : null}>\n {typeof title === 'string' && title.length > 0 ? title : null}\n </div>\n {\n deepLinks && typeof deepLinks.discover === 'string' ?\n <Button className={styles['see-all-container']} title={t('BUTTON_SEE_ALL')} href={deepLinks.discover} tabIndex={-1}>\n <div className={styles['label']}>{ t('BUTTON_SEE_ALL') }</div>\n <Icon className={styles['icon']} icon={'ic_arrow_thin_right'} />\n </Button>\n :\n null\n }\n </div>\n <div className={styles['meta-items-container']}>\n {Array(CONSTANTS.CATALOG_PREVIEW_SIZE).fill(null).map((_, index) => (\n <div key={index} className={styles['meta-item']}>\n <div className={styles['poster-container']} />\n <div className={styles['title-bar-container']}>\n <div className={styles['title-label']} />\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nMetaRowPlaceholder.propTypes = {\n className: PropTypes.string,\n title: PropTypes.string,\n deepLinks: PropTypes.shape({\n discover: PropTypes.string\n })\n};\n\nmodule.exports = MetaRowPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaRowPlaceholder = require('./MetaRowPlaceholder');\n\nmodule.exports = MetaRowPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaRow = require('./MetaRow');\n\nmodule.exports = MetaRow;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useRouteFocused, useModalsContainer } = require('stremio-router');\nconst Button = require('stremio/common/Button');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Modal } = require('stremio-router');\nconst styles = require('./styles');\n\nconst ModalDialog = ({ className, title, buttons, children, dataset, onCloseRequest, ...props }) => {\n const routeFocused = useRouteFocused();\n const modalsContainer = useModalsContainer();\n const modalContainerRef = React.useRef(null);\n const closeButtonOnClick = React.useCallback((event) => {\n if (typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'close',\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, onCloseRequest]);\n const onModalContainerMouseDown = React.useCallback((event) => {\n if (!event.nativeEvent.closeModalDialogPrevented && typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'close',\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, onCloseRequest]);\n const onModalDialogContainerMouseDown = React.useCallback((event) => {\n event.nativeEvent.closeModalDialogPrevented = true;\n }, []);\n React.useEffect(() => {\n const onKeyDown = (event) => {\n // its `-2` because focus lock render locking divs around its content\n if (event.code === 'Escape' && modalsContainer.childNodes[modalsContainer.childElementCount - 2] === modalContainerRef.current) {\n if (typeof onCloseRequest === 'function') {\n onCloseRequest({\n type: 'close',\n dataset: dataset,\n nativeEvent: event\n });\n }\n }\n };\n if (routeFocused) {\n window.addEventListener('keydown', onKeyDown);\n }\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [routeFocused, dataset, onCloseRequest]);\n return (\n <Modal ref={modalContainerRef} {...props} className={classnames(className, styles['modal-container'])} onMouseDown={onModalContainerMouseDown}>\n <div className={styles['modal-dialog-container']} onMouseDown={onModalDialogContainerMouseDown}>\n <Button className={styles['close-button-container']} title={'Close'} onClick={closeButtonOnClick}>\n <Icon className={styles['icon']} icon={'ic_x'} />\n </Button>\n {\n typeof title === 'string' && title.length > 0 ?\n <div className={styles['title-container']} title={title}>{title}</div>\n :\n null\n }\n <div className={styles['modal-dialog-content']}>\n {children}\n </div>\n {\n Array.isArray(buttons) && buttons.length > 0 ?\n <div className={styles['buttons-container']}>\n {buttons.map(({ className, label, icon, props }, index) => (\n <Button title={label} {...props} key={index} className={classnames(className, styles['action-button'])}>\n {\n typeof icon === 'string' && icon.length > 0 ?\n <Icon className={styles['icon']} icon={icon} />\n :\n null\n }\n {\n typeof label === 'string' && label.length > 0 ?\n <div className={styles['label']}>{label}</div>\n :\n null\n }\n </Button>\n ))}\n </div>\n :\n null\n }\n </div>\n </Modal>\n );\n};\n\nModalDialog.propTypes = {\n className: PropTypes.string,\n title: PropTypes.string,\n buttons: PropTypes.arrayOf(PropTypes.shape({\n className: PropTypes.string,\n label: PropTypes.string,\n icon: PropTypes.string,\n props: PropTypes.object\n })),\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n dataset: PropTypes.object,\n onCloseRequest: PropTypes.func\n};\n\nmodule.exports = ModalDialog;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ModalDialog = require('./ModalDialog');\n\nmodule.exports = ModalDialog;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst Popup = require('stremio/common/Popup');\nconst ModalDialog = require('stremio/common/ModalDialog');\nconst useBinaryState = require('stremio/common/useBinaryState');\nconst styles = require('./styles');\n\nconst Multiselect = ({ className, mode, direction, title, disabled, dataset, renderLabelContent, renderLabelText, onOpen, onClose, onSelect, ...props }) => {\n const [menuOpen, , closeMenu, toggleMenu] = useBinaryState(false);\n const options = React.useMemo(() => {\n return Array.isArray(props.options) ?\n props.options.filter((option) => {\n return option && typeof option.value === 'string';\n })\n :\n [];\n }, [props.options]);\n const selected = React.useMemo(() => {\n return Array.isArray(props.selected) ?\n props.selected.filter((value) => {\n return typeof value === 'string';\n })\n :\n [];\n }, [props.selected]);\n const labelOnClick = React.useCallback((event) => {\n if (typeof props.onClick === 'function') {\n props.onClick(event);\n }\n\n if (!event.nativeEvent.toggleMenuPrevented) {\n toggleMenu();\n }\n }, [props.onClick, toggleMenu]);\n const menuOnClick = React.useCallback((event) => {\n event.nativeEvent.toggleMenuPrevented = true;\n }, []);\n const menuOnKeyDown = React.useCallback((event) => {\n event.nativeEvent.buttonClickPrevented = true;\n }, []);\n const optionOnClick = React.useCallback((event) => {\n if (typeof onSelect === 'function') {\n onSelect({\n type: 'select',\n value: event.currentTarget.dataset.value,\n reactEvent: event,\n nativeEvent: event.nativeEvent,\n dataset: dataset\n });\n }\n\n if (!event.nativeEvent.closeMenuPrevented) {\n closeMenu();\n }\n }, [dataset, onSelect]);\n const mountedRef = React.useRef(false);\n React.useLayoutEffect(() => {\n if (mountedRef.current) {\n if (menuOpen) {\n if (typeof onOpen === 'function') {\n onOpen({\n type: 'open',\n dataset: dataset\n });\n }\n } else {\n if (typeof onClose === 'function') {\n onClose({\n type: 'close',\n dataset: dataset\n });\n }\n }\n }\n\n mountedRef.current = true;\n }, [menuOpen]);\n const renderLabel = React.useCallback(({ children, className, ...props }) => (\n <Button {...props} className={classnames(className, styles['label-container'], { 'active': menuOpen })} title={title} disabled={disabled} onClick={labelOnClick}>\n {\n typeof renderLabelContent === 'function' ?\n renderLabelContent()\n :\n <React.Fragment>\n <div className={styles['label']}>\n {\n typeof renderLabelText === 'function' ?\n renderLabelText()\n :\n selected.length > 0 ?\n selected.map((value) => {\n const option = options.find((option) => option.value === value);\n return option && typeof option.label === 'string' ?\n option.label\n :\n value;\n }).join(', ')\n :\n title\n }\n </div>\n <Icon className={styles['icon']} icon={'ic_arrow_thin_down'} />\n </React.Fragment>\n }\n {children}\n </Button>\n ), [menuOpen, title, disabled, options, selected, labelOnClick, renderLabelContent, renderLabelText]);\n const renderMenu = React.useCallback(() => (\n <div className={styles['menu-container']} onKeyDown={menuOnKeyDown} onClick={menuOnClick}>\n {\n options.length > 0 ?\n options.map(({ label, title, value }) => (\n <Button key={value} className={classnames(styles['option-container'], { 'selected': selected.includes(value) })} title={typeof title === 'string' ? title : typeof label === 'string' ? label : value} data-value={value} onClick={optionOnClick}>\n <div className={styles['label']}>{typeof label === 'string' ? label : value}</div>\n <div className={styles['icon']} />\n </Button>\n ))\n :\n <div className={styles['no-options-container']}>\n <div className={styles['label']}>No options available</div>\n </div>\n }\n </div>\n ), [options, selected, menuOnKeyDown, menuOnClick, optionOnClick]);\n const renderPopupLabel = React.useMemo(() => (labelProps) => {\n return renderLabel({\n ...labelProps,\n ...props,\n className: classnames(className, labelProps.className)\n });\n }, [props, className, renderLabel]);\n return mode === 'modal' ?\n renderLabel({\n ...props,\n className,\n children: menuOpen ?\n <ModalDialog className={styles['modal-container']} title={title} onCloseRequest={closeMenu} onKeyDown={menuOnKeyDown} onClick={menuOnClick}>\n {renderMenu()}\n </ModalDialog>\n :\n null\n })\n :\n <Popup\n open={menuOpen}\n direction={direction}\n onCloseRequest={closeMenu}\n renderLabel={renderPopupLabel}\n renderMenu={renderMenu}\n />;\n};\n\nMultiselect.propTypes = {\n className: PropTypes.string,\n mode: PropTypes.oneOf(['popup', 'modal']),\n direction: PropTypes.any,\n title: PropTypes.string,\n options: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.string.isRequired,\n title: PropTypes.string,\n label: PropTypes.string\n })),\n selected: PropTypes.arrayOf(PropTypes.string),\n disabled: PropTypes.bool,\n dataset: PropTypes.object,\n renderLabelContent: PropTypes.func,\n renderLabelText: PropTypes.func,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n onSelect: PropTypes.func,\n onClick: PropTypes.func\n};\n\nmodule.exports = Multiselect;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Multiselect = require('./Multiselect');\n\nmodule.exports = Multiselect;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst Image = require('stremio/common/Image');\nconst useFullscreen = require('stremio/common/useFullscreen');\nconst SearchBar = require('./SearchBar');\nconst NavMenu = require('./NavMenu');\nconst styles = require('./styles');\nconst { t } = require('i18next');\n\nconst HorizontalNavBar = React.memo(({ className, route, query, title, backButton, searchBar, addonsButton, fullscreenButton, navMenu, ...props }) => {\n const backButtonOnClick = React.useCallback(() => {\n window.history.back();\n }, []);\n const [fullscreen, requestFullscreen, exitFullscreen] = useFullscreen();\n const renderNavMenuLabel = React.useCallback(({ ref, className, onClick, children, }) => (\n <Button ref={ref} className={classnames(className, styles['button-container'], styles['menu-button-container'])} tabIndex={-1} onClick={onClick}>\n <Icon className={styles['icon']} icon={'ic_more'} />\n {children}\n </Button>\n ), []);\n return (\n <nav {...props} className={classnames(className, styles['horizontal-nav-bar-container'])}>\n {\n backButton ?\n <Button className={classnames(styles['button-container'], styles['back-button-container'])} tabIndex={-1} onClick={backButtonOnClick}>\n <Icon className={styles['icon']} icon={'ic_back_ios'} />\n </Button>\n :\n <div className={styles['logo-container']}>\n <Image\n className={styles['logo']}\n src={require('/images/stremio_symbol.png')}\n alt={' '}\n />\n </div>\n }\n {\n typeof title === 'string' && title.length > 0 ?\n <h2 className={styles['title']}>{title}</h2>\n :\n null\n }\n <div className={styles['spacing']} />\n {\n searchBar ?\n <SearchBar className={styles['search-bar']} query={query} active={route === 'search'} />\n :\n null\n }\n <div className={styles['spacing']} />\n {\n addonsButton ?\n <Button className={styles['button-container']} href={'#/addons'} title={t('ADDONS')} tabIndex={-1}>\n <Icon className={styles['icon']} icon={'ic_addons'} />\n </Button>\n :\n null\n }\n {\n fullscreenButton ?\n <Button className={styles['button-container']} title={fullscreen ? t('EXIT_FULLSCREEN') : t('ENTER_FULLSCREEN')} tabIndex={-1} onClick={fullscreen ? exitFullscreen : requestFullscreen}>\n <Icon className={styles['icon']} icon={fullscreen ? 'ic_exit_fullscreen' : 'ic_fullscreen'} />\n </Button>\n :\n null\n }\n {\n navMenu ?\n <NavMenu renderLabel={renderNavMenuLabel} />\n :\n null\n }\n </nav>\n );\n});\n\nHorizontalNavBar.displayName = 'HorizontalNavBar';\n\nHorizontalNavBar.propTypes = {\n className: PropTypes.string,\n route: PropTypes.string,\n query: PropTypes.string,\n title: PropTypes.string,\n backButton: PropTypes.bool,\n searchBar: PropTypes.bool,\n addonsButton: PropTypes.bool,\n fullscreenButton: PropTypes.bool,\n navMenu: PropTypes.bool\n};\n\nmodule.exports = HorizontalNavBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useRouteFocused } = require('stremio-router');\nconst Popup = require('stremio/common/Popup');\nconst useBinaryState = require('stremio/common/useBinaryState');\nconst NavMenuContent = require('./NavMenuContent');\n\nconst NavMenu = (props) => {\n const routeFocused = useRouteFocused();\n const [menuOpen, , closeMenu, toggleMenu] = useBinaryState(false);\n const popupLabelOnClick = React.useCallback((event) => {\n if (!event.nativeEvent.togglePopupPrevented) {\n toggleMenu();\n }\n }, [toggleMenu]);\n const popupMenuOnClick = React.useCallback((event) => {\n event.nativeEvent.togglePopupPrevented = true;\n }, []);\n const renderLabel = React.useMemo(() => ({ ref, className, children }) => (\n props.renderLabel({\n ref,\n className: classnames(className, { 'active': menuOpen }),\n onClick: popupLabelOnClick,\n children,\n })\n ), [menuOpen, popupLabelOnClick, props.renderLabel]);\n const renderMenu = React.useCallback(() => (\n <NavMenuContent onClick={popupMenuOnClick} />\n ), []);\n React.useEffect(() => {\n if (!routeFocused) {\n closeMenu();\n }\n }, [routeFocused]);\n return (\n <Popup\n open={menuOpen}\n direction={'bottom-left'}\n onCloseRequest={closeMenu}\n renderLabel={renderLabel}\n renderMenu={renderMenu}\n />\n );\n};\n\nNavMenu.propTypes = {\n renderLabel: PropTypes.func\n};\n\nmodule.exports = NavMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { useServices } = require('stremio/services');\nconst Button = require('stremio/common/Button');\nconst useFullscreen = require('stremio/common/useFullscreen');\nconst useProfile = require('stremio/common/useProfile');\nconst useTorrent = require('stremio/common/useTorrent');\nconst { withCoreSuspender } = require('stremio/common/CoreSuspender');\nconst styles = require('./styles');\n\nconst NavMenuContent = ({ onClick }) => {\n const { t } = useTranslation();\n const { core } = useServices();\n const profile = useProfile();\n const { createTorrentFromMagnet } = useTorrent();\n const [fullscreen, requestFullscreen, exitFullscreen] = useFullscreen();\n const logoutButtonOnClick = React.useCallback(() => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'Logout'\n }\n });\n }, []);\n const onPlayMagnetLinkClick = React.useCallback(async () => {\n try {\n const clipboardText = await navigator.clipboard.readText();\n createTorrentFromMagnet(clipboardText);\n } catch(e) {\n console.error(e);\n }\n }, []);\n return (\n <div className={classnames(styles['nav-menu-container'], 'animation-fade-in')} onClick={onClick}>\n <div className={styles['user-info-container']}>\n <div\n className={styles['avatar-container']}\n style={{\n backgroundImage: profile.auth === null ?\n `url('${require('/images/anonymous.png')}')`\n :\n profile.auth.user.avatar ?\n `url('${profile.auth.user.avatar}')`\n :\n `url('${require('/images/default_avatar.png')}')`\n }}\n />\n <div className={styles['email-container']}>\n <div className={styles['email-label']}>{profile.auth === null ? t('ANONYMOUS_USER') : profile.auth.user.email}</div>\n </div>\n <Button className={styles['logout-button-container']} title={profile.auth === null ? `${t('LOG_IN')} / ${t('SIGN_UP')}` : t('LOG_OUT')} href={profile.auth === null ? '#/intro' : null} onClick={profile.auth !== null ? logoutButtonOnClick : null}>\n <div className={styles['logout-label']}>{profile.auth === null ? `${t('LOG_IN')} / ${t('SIGN_UP')}` : t('LOG_OUT')}</div>\n </Button>\n </div>\n <div className={styles['nav-menu-section']}>\n <Button className={styles['nav-menu-option-container']} title={fullscreen ? t('EXIT_FULLSCREEN') : t('ENTER_FULLSCREEN')} onClick={fullscreen ? exitFullscreen : requestFullscreen}>\n <Icon className={styles['icon']} icon={fullscreen ? 'ic_exit_fullscreen' : 'ic_fullscreen'} />\n <div className={styles['nav-menu-option-label']}>{fullscreen ? t('EXIT_FULLSCREEN') : t('ENTER_FULLSCREEN')}</div>\n </Button>\n </div>\n <div className={styles['nav-menu-section']}>\n <Button className={styles['nav-menu-option-container']} title={ t('SETTINGS') } href={'#/settings'}>\n <Icon className={styles['icon']} icon={'ic_settings'} />\n <div className={styles['nav-menu-option-label']}>{ t('SETTINGS') }</div>\n </Button>\n <Button className={styles['nav-menu-option-container']} title={ t('ADDONS') } href={'#/addons'}>\n <Icon className={styles['icon']} icon={'ic_addons'} />\n <div className={styles['nav-menu-option-label']}>{ t('ADDONS') }</div>\n </Button>\n <Button className={styles['nav-menu-option-container']} title={ t('PLAY_URL_MAGNET_LINK') } onClick={onPlayMagnetLinkClick}>\n <Icon className={styles['icon']} icon={'ic_magnet'} />\n <div className={styles['nav-menu-option-label']}>{ t('PLAY_URL_MAGNET_LINK') }</div>\n </Button>\n <Button className={styles['nav-menu-option-container']} title={ t('HELP_FEEDBACK') } href={'https://stremio.zendesk.com/'} target={'_blank'}>\n <Icon className={styles['icon']} icon={'ic_help'} />\n <div className={styles['nav-menu-option-label']}>{ t('HELP_FEEDBACK') }</div>\n </Button>\n </div>\n <div className={styles['nav-menu-section']}>\n <Button className={styles['nav-menu-option-container']} title={ t('TERMS_OF_SERVICE') } href={'https://www.stremio.com/tos'} target={'_blank'}>\n <div className={styles['nav-menu-option-label']}>{ t('TERMS_OF_SERVICE') }</div>\n </Button>\n <Button className={styles['nav-menu-option-container']} title={ t('PRIVACY_POLICY') } href={'https://www.stremio.com/privacy'} target={'_blank'}>\n <div className={styles['nav-menu-option-label']}>{ t('PRIVACY_POLICY') }</div>\n </Button>\n <Button className={styles['nav-menu-option-container']} title={ t('ABOUT_STREMIO') } href={'https://www.stremio.com/'} target={'_blank'}>\n <div className={styles['nav-menu-option-label']}>{ t('ABOUT_STREMIO') }</div>\n </Button>\n </div>\n </div>\n );\n};\n\nNavMenuContent.propTypes = {\n onClick: PropTypes.func\n};\n\nconst NavMenuContentFallback = () => (\n <div className={styles['nav-menu-container']} />\n);\n\nmodule.exports = withCoreSuspender(NavMenuContent, NavMenuContentFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst NavMenu = require('./NavMenu');\n\nmodule.exports = NavMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { useRouteFocused } = require('stremio-router');\nconst Button = require('stremio/common/Button');\nconst TextInput = require('stremio/common/TextInput');\nconst useTorrent = require('stremio/common/useTorrent');\nconst { withCoreSuspender } = require('stremio/common/CoreSuspender');\nconst styles = require('./styles');\n\nconst SearchBar = ({ className, query, active }) => {\n const { t } = useTranslation();\n const routeFocused = useRouteFocused();\n const { createTorrentFromMagnet } = useTorrent();\n const searchInputRef = React.useRef(null);\n const searchBarOnClick = React.useCallback(() => {\n if (!active) {\n window.location = '#/search';\n }\n }, [active]);\n const queryInputOnChange = React.useCallback(() => {\n try {\n createTorrentFromMagnet(searchInputRef.current.value);\n // eslint-disable-next-line no-empty\n } catch { }\n }, []);\n const queryInputOnSubmit = React.useCallback(() => {\n if (searchInputRef.current !== null) {\n const queryParams = new URLSearchParams([['search', searchInputRef.current.value]]);\n window.location = `#/search?${queryParams.toString()}`;\n }\n }, []);\n React.useEffect(() => {\n if (routeFocused && active) {\n searchInputRef.current.focus();\n }\n }, [routeFocused, active, query]);\n return (\n <label className={classnames(className, styles['search-bar-container'], { 'active': active })} onClick={searchBarOnClick}>\n {\n active ?\n <TextInput\n key={query}\n ref={searchInputRef}\n className={styles['search-input']}\n type={'text'}\n placeholder={t('SEARCH_OR_PASTE_LINK')}\n defaultValue={query}\n tabIndex={-1}\n onChange={queryInputOnChange}\n onSubmit={queryInputOnSubmit}\n />\n :\n <div className={styles['search-input']}>\n <div className={styles['placeholder-label']}>{ t('SEARCH_OR_PASTE_LINK') }</div>\n </div>\n }\n <Button className={styles['submit-button-container']} tabIndex={-1} onClick={queryInputOnSubmit}>\n <Icon className={styles['icon']} icon={'ic_search_link'} />\n </Button>\n </label>\n );\n};\n\nSearchBar.propTypes = {\n className: PropTypes.string,\n query: PropTypes.string,\n active: PropTypes.bool\n};\n\nconst SearchBarFallback = ({ className }) => {\n const { t } = useTranslation();\n return (\n <label className={classnames(className, styles['search-bar-container'])}>\n <div className={styles['search-input']}>\n <div className={styles['placeholder-label']}>{ t('SEARCH_OR_PASTE_LINK') }</div>\n </div>\n <Button className={styles['submit-button-container']} tabIndex={-1}>\n <Icon className={styles['icon']} icon={'ic_search_link'} />\n </Button>\n </label>\n );\n};\n\nSearchBarFallback.propTypes = SearchBar.propTypes;\n\nmodule.exports = withCoreSuspender(SearchBar, SearchBarFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SearchBar = require('./SearchBar');\n\nmodule.exports = SearchBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst HorizontalNavBar = require('./HorizontalNavBar');\n\nmodule.exports = HorizontalNavBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst Image = require('stremio/common/Image');\nconst styles = require('./styles');\n\nconst NavTabButton = ({ className, logo, icon, label, href, selected, onClick }) => {\n const renderLogoFallback = React.useCallback(() => (\n typeof icon === 'string' && icon.length > 0 ?\n <Icon className={styles['icon']} icon={icon} />\n :\n null\n ), [icon]);\n return (\n <Button className={classnames(className, styles['nav-tab-button-container'], { 'selected': selected })} title={label} tabIndex={-1} href={href} onClick={onClick}>\n {\n typeof logo === 'string' && logo.length > 0 ?\n <Image\n className={styles['logo']}\n src={logo}\n alt={' '}\n renderFallback={renderLogoFallback}\n />\n :\n typeof icon === 'string' && icon.length > 0 ?\n <Icon className={styles['icon']} icon={icon} />\n :\n null\n }\n {\n typeof label === 'string' && label.length > 0 ?\n <div className={styles['label']}>{label}</div>\n :\n null\n }\n </Button>\n );\n};\n\nNavTabButton.propTypes = {\n className: PropTypes.string,\n logo: PropTypes.string,\n icon: PropTypes.string,\n label: PropTypes.string,\n href: PropTypes.string,\n selected: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nmodule.exports = NavTabButton;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst NavTabButton = require('./NavTabButton');\n\nmodule.exports = NavTabButton;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst NavTabButton = require('./NavTabButton');\nconst styles = require('./styles');\n\nconst VerticalNavBar = React.memo(({ className, selected, tabs }) => {\n const { t } = useTranslation();\n return (\n <nav className={classnames(className, styles['vertical-nav-bar-container'])}>\n {\n Array.isArray(tabs) ?\n tabs.map((tab, index) => (\n <NavTabButton\n key={index}\n className={styles['nav-tab-button']}\n selected={tab.id === selected}\n href={tab.href}\n logo={tab.logo}\n icon={tab.icon}\n label={t(tab.label)}\n onClick={tab.onClick}\n />\n ))\n :\n null\n }\n </nav>\n );\n});\n\nVerticalNavBar.displayName = 'VerticalNavBar';\n\nVerticalNavBar.propTypes = {\n className: PropTypes.string,\n selected: PropTypes.string,\n tabs: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.string,\n logo: PropTypes.string,\n icon: PropTypes.string,\n href: PropTypes.string,\n onClick: PropTypes.func\n }))\n};\n\nmodule.exports = VerticalNavBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst VerticalNavBar = require('./VerticalNavBar');\n\nmodule.exports = VerticalNavBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst HorizontalNavBar = require('./HorizontalNavBar');\nconst VerticalNavBar = require('./VerticalNavBar');\n\nmodule.exports = {\n HorizontalNavBar,\n VerticalNavBar\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst styles = require('./styles');\n\nconst PaginationInput = ({ className, label, dataset, onSelect, ...props }) => {\n const prevNextButtonOnClick = React.useCallback((event) => {\n if (typeof onSelect === 'function') {\n onSelect({\n type: 'change-page',\n value: event.currentTarget.dataset.value,\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, onSelect]);\n return (\n <div {...props} className={classnames(className, styles['pagination-input-container'])} >\n <Button className={styles['prev-button-container']} title={'Previous page'} data-value={'prev'} onClick={prevNextButtonOnClick}>\n <Icon className={styles['icon']} icon={'ic_arrow_left'} />\n </Button>\n <div className={styles['label-container']} title={label}>\n <div className={styles['label']}>{label}</div>\n </div>\n <Button className={styles['next-button-container']} title={'Next page'} data-value={'next'} onClick={prevNextButtonOnClick}>\n <Icon className={styles['icon']} icon={'ic_arrow_right'} />\n </Button>\n </div>\n );\n};\n\nPaginationInput.propTypes = {\n className: PropTypes.string,\n label: PropTypes.string,\n dataset: PropTypes.object,\n onSelect: PropTypes.func\n};\n\nmodule.exports = PaginationInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst PaginationInput = require('./PaginationInput');\n\nmodule.exports = PaginationInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst styles = require('./styles');\n\nconst PlayIconCircleCentered = ({ className }) => {\n return (\n <svg className={className} viewBox={'0 0 100 100'}>\n <circle className={styles['background']} cx={'50'} cy={'50'} r={'50'} />\n <svg className={styles['icon']} x={'0'} y={'25'} width={'100'} height={'50'} viewBox={'0 0 37.14 32'}>\n <path d={'M 9.14,0 37.14,16 9.14,32 Z'} />\n </svg>\n </svg>\n );\n};\n\nPlayIconCircleCentered.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = PlayIconCircleCentered;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst PlayIconCircleCentered = require('./PlayIconCircleCentered');\n\nmodule.exports = PlayIconCircleCentered;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst FocusLock = require('react-focus-lock').default;\nconst { useRouteFocused } = require('stremio-router');\nconst styles = require('./styles');\n\nconst getAnchorElement = (element) => {\n if (element === document.documentElement) {\n return element;\n }\n\n const style = window.getComputedStyle(element);\n if (style.overflowY.indexOf('auto') !== -1 || style.overflowY.indexOf('scroll') !== -1) {\n return element;\n }\n\n return getAnchorElement(element.parentElement);\n};\n\nconst Popup = ({ open, direction, renderLabel, renderMenu, dataset, onCloseRequest, ...props }) => {\n const routeFocused = useRouteFocused();\n const labelRef = React.useRef(null);\n const menuRef = React.useRef(null);\n const [autoDirection, setAutoDirection] = React.useState(null);\n const menuOnMouseDown = React.useCallback((event) => {\n event.nativeEvent.closePopupPrevented = true;\n }, []);\n React.useEffect(() => {\n const onCloseEvent = (event) => {\n if (!event.closePopupPrevented && typeof onCloseRequest === 'function') {\n const closeEvent = {\n type: 'close',\n nativeEvent: event,\n dataset: dataset\n };\n switch (event.type) {\n case 'keydown':\n if (event.code === 'Escape') {\n onCloseRequest(closeEvent);\n }\n break;\n case 'mousedown':\n if (event.target !== document.documentElement && !labelRef.current.contains(event.target)) {\n onCloseRequest(closeEvent);\n }\n break;\n case 'pointerdown':\n if (event.target !== document.documentElement && !labelRef.current.contains(event.target)) {\n onCloseRequest(closeEvent);\n }\n break;\n }\n }\n };\n if (routeFocused && open) {\n window.addEventListener('keydown', onCloseEvent);\n window.addEventListener('mousedown', onCloseEvent);\n window.addEventListener('pointerdown', onCloseEvent);\n }\n return () => {\n window.removeEventListener('keydown', onCloseEvent);\n window.removeEventListener('mousedown', onCloseEvent);\n window.removeEventListener('pointerdown', onCloseEvent);\n };\n }, [routeFocused, open, onCloseRequest, dataset]);\n React.useLayoutEffect(() => {\n if (open) {\n const autoDirection = [];\n const anchor = getAnchorElement(labelRef.current);\n const anchorRect = anchor.getBoundingClientRect();\n\n const labelRect = labelRef.current.getBoundingClientRect();\n const menuRect = menuRef.current.getBoundingClientRect();\n const labelPosition = {\n left: labelRect.left - anchorRect.left,\n top: labelRect.top - anchorRect.top,\n right: (anchorRect.width + anchorRect.left) - (labelRect.left + labelRect.width),\n bottom: (anchorRect.height + anchorRect.top) - (labelRect.top + labelRect.height)\n };\n\n if (menuRect.height <= labelPosition.bottom) {\n autoDirection.push('bottom');\n } else if (menuRect.height <= labelPosition.top) {\n autoDirection.push('top');\n } else if (labelPosition.bottom >= labelPosition.top) {\n autoDirection.push('bottom');\n } else {\n autoDirection.push('top');\n }\n\n if (menuRect.width <= (labelPosition.right + labelRect.width)) {\n autoDirection.push('right');\n } else if (menuRect.width <= (labelPosition.left + labelRect.width)) {\n autoDirection.push('left');\n } else if (labelPosition.right > labelPosition.left) {\n autoDirection.push('right');\n } else {\n autoDirection.push('left');\n }\n\n setAutoDirection(autoDirection.join('-'));\n } else {\n setAutoDirection(null);\n }\n }, [open]);\n return renderLabel({\n ...props,\n ref: labelRef,\n className: classnames(styles['label-container'], props.className, { 'active': open }),\n children: open ?\n <FocusLock ref={menuRef} className={classnames(styles['menu-container'], { [styles[`menu-direction-${autoDirection}`]]: !direction }, { [styles[`menu-direction-${direction}`]]: direction })} autoFocus={false} lockProps={{ onMouseDown: menuOnMouseDown }}>\n {renderMenu()}\n </FocusLock>\n :\n null\n });\n};\n\nPopup.propTypes = {\n open: PropTypes.bool,\n direction: PropTypes.oneOf(['top-left', 'bottom-left', 'top-right', 'bottom-right']),\n renderLabel: PropTypes.func.isRequired,\n renderMenu: PropTypes.func.isRequired,\n dataset: PropTypes.object,\n onCloseRequest: PropTypes.func\n};\n\nmodule.exports = Popup;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Popup = require('./Popup');\n\nmodule.exports = Popup;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst TextInput = require('stremio/common/TextInput');\nconst SearchBarPlaceholder = require('./SearchBarPlaceholder');\nconst styles = require('./styles');\n\nconst SearchBar = ({ className, title, value, onChange }) => {\n return (\n <label title={title} className={classnames(className, styles['search-bar-container'])}>\n <TextInput\n className={styles['search-input']}\n type={'text'}\n placeholder={title}\n value={value}\n onChange={onChange}\n />\n <Icon className={styles['icon']} icon={'ic_search'} />\n </label>\n );\n};\n\nSearchBar.Placeholder = SearchBarPlaceholder;\n\nSearchBar.propTypes = {\n className: PropTypes.string,\n title: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func\n};\n\nmodule.exports = SearchBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst styles = require('./styles');\n\nconst SearchBarPlaceholder = ({ className, title }) => {\n return (\n <div className={classnames(className, styles['search-bar-container'])}>\n <div className={styles['search-input']}>{title}</div>\n <Icon className={styles['icon']} icon={'ic_search'} />\n </div>\n );\n};\n\nSearchBarPlaceholder.propTypes = {\n className: PropTypes.string,\n title: PropTypes.string\n};\n\nmodule.exports = SearchBarPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SearchBarPlaceholder = require('./SearchBarPlaceholder');\n\nmodule.exports = SearchBarPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SearchBar = require('./SearchBar');\n\nmodule.exports = SearchBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { useRouteFocused } = require('stremio-router');\nconst { useServices } = require('stremio/services');\nconst Button = require('stremio/common/Button');\nconst TextInput = require('stremio/common/TextInput');\nconst styles = require('./styles');\n\nconst SharePrompt = ({ className, url }) => {\n const { t } = useTranslation();\n const { core } = useServices();\n const inputRef = React.useRef(null);\n const routeFocused = useRouteFocused();\n const selectInputContent = React.useCallback(() => {\n if (inputRef.current !== null) {\n inputRef.current.select();\n }\n }, []);\n const copyToClipboard = React.useCallback(() => {\n if (inputRef.current !== null) {\n inputRef.current.select();\n document.execCommand('copy');\n }\n }, []);\n React.useEffect(() => {\n if (routeFocused && inputRef.current !== null) {\n inputRef.current.select();\n }\n }, [routeFocused]);\n React.useEffect(() => {\n core.transport.analytics({\n event: 'Share',\n args: {\n url: url\n }\n });\n }, [url]);\n return (\n <div className={classnames(className, styles['share-prompt-container'])}>\n <div className={styles['buttons-container']}>\n <Button className={classnames(styles['button-container'], styles['facebook-button'])} title={'Facebook'} href={`https://www.facebook.com/sharer/sharer.php?u=${url}`} target={'_blank'}>\n <Icon className={styles['icon']} icon={'ic_facebook'} />\n <div className={styles['label']}>Facebook</div>\n </Button>\n <Button className={classnames(styles['button-container'], styles['twitter-button'])} title={'Twitter'} href={`https://twitter.com/home?status=${url}`} target={'_blank'}>\n <Icon className={styles['icon']} icon={'ic_twitter'} />\n <div className={styles['label']}>Twitter</div>\n </Button>\n </div>\n <div className={styles['url-container']}>\n <TextInput\n ref={inputRef}\n className={styles['url-text-input']}\n type={'text'}\n readOnly={true}\n defaultValue={url}\n onClick={selectInputContent}\n tabIndex={-1}\n />\n <Button className={styles['copy-button']} title={'Copy to clipboard'} onClick={copyToClipboard}>\n <Icon className={styles['icon']} icon={'ic_link'} />\n <div className={styles['label']}>{ t('COPY') }</div>\n </Button>\n </div>\n </div>\n );\n};\n\nSharePrompt.propTypes = {\n className: PropTypes.string,\n url: PropTypes.string\n};\n\nmodule.exports = SharePrompt;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SharePrompt = require('./SharePrompt');\n\nmodule.exports = SharePrompt;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useRouteFocused } = require('stremio-router');\nconst useAnimationFrame = require('stremio/common/useAnimationFrame');\nconst useLiveRef = require('stremio/common/useLiveRef');\nconst styles = require('./styles');\n\nconst Slider = ({ className, value, buffered, minimumValue, maximumValue, disabled, onSlide, onComplete }) => {\n const minimumValueRef = useLiveRef(minimumValue !== null && !isNaN(minimumValue) ? minimumValue : 0);\n const maximumValueRef = useLiveRef(maximumValue !== null && !isNaN(maximumValue) ? maximumValue : 100);\n const valueRef = useLiveRef(value !== null && !isNaN(value) ? Math.min(maximumValueRef.current, Math.max(minimumValueRef.current, value)) : 0);\n const bufferedRef = useLiveRef(buffered !== null && !isNaN(buffered) ? Math.min(maximumValueRef.current, Math.max(minimumValueRef.current, buffered)) : 0);\n const onSlideRef = useLiveRef(onSlide);\n const onCompleteRef = useLiveRef(onComplete);\n const sliderContainerRef = React.useRef(null);\n const routeFocused = useRouteFocused();\n const [requestThumbAnimation, cancelThumbAnimation] = useAnimationFrame();\n const calculateValueForMouseX = React.useCallback((mouseX) => {\n if (sliderContainerRef.current === null) {\n return 0;\n }\n\n const { x: sliderX, width: sliderWidth } = sliderContainerRef.current.getBoundingClientRect();\n const thumbStart = Math.min(Math.max(mouseX - sliderX, 0), sliderWidth);\n const value = (thumbStart / sliderWidth) * (maximumValueRef.current - minimumValueRef.current) + minimumValueRef.current;\n return value;\n }, []);\n const retainThumb = React.useCallback(() => {\n window.addEventListener('blur', onBlur);\n window.addEventListener('mouseup', onMouseUp);\n window.addEventListener('mousemove', onMouseMove);\n document.documentElement.className = classnames(document.documentElement.className, styles['active-slider-within']);\n }, []);\n const releaseThumb = React.useCallback(() => {\n cancelThumbAnimation();\n window.removeEventListener('blur', onBlur);\n window.removeEventListener('mouseup', onMouseUp);\n window.removeEventListener('mousemove', onMouseMove);\n const classList = document.documentElement.className.split(' ');\n const classIndex = classList.indexOf(styles['active-slider-within']);\n if (classIndex !== -1) {\n classList.splice(classIndex, 1);\n document.documentElement.className = classnames(classList);\n }\n }, []);\n const onBlur = React.useCallback(() => {\n if (typeof onSlideRef.current === 'function') {\n onSlideRef.current(valueRef.current);\n }\n\n if (typeof onCompleteRef.current === 'function') {\n onCompleteRef.current(valueRef.current);\n }\n\n releaseThumb();\n }, []);\n const onMouseUp = React.useCallback((event) => {\n const value = calculateValueForMouseX(event.clientX);\n if (typeof onCompleteRef.current === 'function') {\n onCompleteRef.current(value);\n }\n\n releaseThumb();\n }, []);\n const onMouseMove = React.useCallback((event) => {\n requestThumbAnimation(() => {\n const value = calculateValueForMouseX(event.clientX);\n if (typeof onSlideRef.current === 'function') {\n onSlideRef.current(value);\n }\n });\n }, []);\n const onMouseDown = React.useCallback((event) => {\n if (event.button !== 0) {\n return;\n }\n\n const value = calculateValueForMouseX(event.clientX);\n if (typeof onSlideRef.current === 'function') {\n onSlideRef.current(value);\n }\n\n retainThumb();\n }, []);\n React.useLayoutEffect(() => {\n if (!routeFocused || disabled) {\n releaseThumb();\n }\n }, [routeFocused, disabled]);\n React.useLayoutEffect(() => {\n return () => {\n releaseThumb();\n };\n }, []);\n const thumbPosition = Math.max(0, Math.min(1, (valueRef.current - minimumValueRef.current) / (maximumValueRef.current - minimumValueRef.current)));\n const bufferedPosition = Math.max(0, Math.min(1, (bufferedRef.current - minimumValueRef.current) / (maximumValueRef.current - minimumValueRef.current)));\n return (\n <div ref={sliderContainerRef} className={classnames(className, styles['slider-container'], { 'disabled': disabled })} onMouseDown={onMouseDown}>\n <div className={styles['layer']}>\n <div className={styles['track']} />\n </div>\n <div className={styles['layer']}>\n <div className={styles['track-before']} style={{ width: `calc(100% * ${bufferedPosition})` }} />\n </div>\n <div className={styles['layer']}>\n <div className={styles['track-after']} style={{ width: `calc(100% * ${thumbPosition})` }} />\n </div>\n <div className={styles['layer']}>\n <svg className={styles['thumb']} style={{ marginLeft: `calc(100% * ${thumbPosition})` }} viewBox={'0 0 10 10'}>\n <circle cx={'5'} cy={'5'} r={'5'} />\n </svg>\n </div>\n </div>\n );\n};\n\nSlider.propTypes = {\n className: PropTypes.string,\n value: PropTypes.number,\n buffered: PropTypes.number,\n minimumValue: PropTypes.number,\n maximumValue: PropTypes.number,\n disabled: PropTypes.bool,\n onSlide: PropTypes.func,\n onComplete: PropTypes.func\n};\n\nmodule.exports = Slider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Slider = require('./Slider');\n\nmodule.exports = Slider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Button = require('stremio/common/Button');\nconst useProfile = require('stremio/common/useProfile');\nconst { withCoreSuspender } = require('stremio/common/CoreSuspender');\nconst styles = require('./styles');\n\nconst StreamingServerWarning = ({ className }) => {\n const { t } = useTranslation();\n const { core } = useServices();\n const profile = useProfile();\n const onLaterClick = React.useCallback(() => {\n const streamingServerWarningDismissed = new Date();\n streamingServerWarningDismissed.setMonth(streamingServerWarningDismissed.getMonth() + 1);\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n streamingServerWarningDismissed\n }\n }\n });\n }, [profile.settings]);\n const onDismissClick = React.useCallback(() => {\n const streamingServerWarningDismissed = new Date();\n streamingServerWarningDismissed.setFullYear(streamingServerWarningDismissed.getFullYear() + 50);\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n streamingServerWarningDismissed\n }\n }\n });\n }, [profile.settings]);\n\n if (!isNaN(profile.settings.streamingServerWarningDismissed.getTime()) &&\n profile.settings.streamingServerWarningDismissed.getTime() > Date.now()) {\n return null;\n }\n\n return (\n <div className={classnames(className, styles['warning-container'])}>\n <div className={styles['warning-statement']}>{ t('SETTINGS_SERVER_UNAVAILABLE') }</div>\n <a href=\"https://www.stremio.com/download-service\" target=\"_blank\" rel=\"noreferrer\">\n <Button className={styles['warning-button']} title={t('SERVICE_INSTALL')} tabIndex={-1}>\n <div className={styles['warning-label']}>{ t('SERVICE_INSTALL') }</div>\n </Button>\n </a>\n <Button className={styles['warning-button']} title={t('WARNING_STREAMING_SERVER_LATER')} onClick={onLaterClick} tabIndex={-1}>\n <div className={styles['warning-label']}>{ t('WARNING_STREAMING_SERVER_LATER') }</div>\n </Button>\n <Button className={styles['warning-button']} title={t('DONT_SHOW_AGAIN')} onClick={onDismissClick} tabIndex={-1}>\n <div className={styles['warning-label']}>{ t('DONT_SHOW_AGAIN') }</div>\n </Button>\n </div>\n );\n};\n\nStreamingServerWarning.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = withCoreSuspender(StreamingServerWarning);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst StreamingServerWarning = require('./StreamingServerWarning');\n\nmodule.exports = StreamingServerWarning;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst styles = require('./styles');\n\nconst TextInput = React.forwardRef((props, ref) => {\n const onKeyDown = React.useCallback((event) => {\n if (typeof props.onKeyDown === 'function') {\n props.onKeyDown(event);\n }\n\n if (event.key === 'Enter' && !event.nativeEvent.submitPrevented && typeof props.onSubmit === 'function') {\n props.onSubmit(event);\n }\n }, [props.onKeyDown, props.onSubmit]);\n return (\n <input\n size={1}\n autoCorrect={'off'}\n autoCapitalize={'off'}\n autoComplete={'off'}\n spellCheck={false}\n tabIndex={0}\n {...props}\n ref={ref}\n className={classnames(props.className, styles['text-input'], { 'disabled': props.disabled })}\n onKeyDown={onKeyDown}\n />\n );\n});\n\nTextInput.displayName = 'TextInput';\n\nTextInput.propTypes = {\n className: PropTypes.string,\n disabled: PropTypes.bool,\n onKeyDown: PropTypes.func,\n onSubmit: PropTypes.func\n};\n\nmodule.exports = TextInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst TextInput = require('./TextInput');\n\nmodule.exports = TextInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst ToastContext = React.createContext({\n show: () => { },\n clear: () => { }\n});\n\nToastContext.displayName = 'ToastContext';\n\nmodule.exports = ToastContext;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst Button = require('stremio/common/Button');\nconst styles = require('./styles');\n\nconst ToastItem = ({ title, message, dataset, onSelect, onClose, ...props }) => {\n const type = React.useMemo(() => {\n return ['success', 'alert', 'error'].includes(props.type) ?\n props.type\n :\n 'success';\n }, [props.type]);\n const icon = React.useMemo(() => {\n return typeof props.icon === 'string' ? props.icon :\n type === 'success' ? 'ic_check' :\n type === 'error' ? 'ic_warning' :\n null;\n }, [type, props.icon]);\n const toastOnClick = React.useCallback((event) => {\n if (!event.nativeEvent.selectToastPrevented && typeof onSelect === 'function') {\n onSelect({\n type: 'select',\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n if (!event.nativeEvent.closeToastPrevented && typeof onClose === 'function') {\n onClose({\n type: 'close',\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, onSelect, onClose]);\n const closeButtonOnClick = React.useCallback((event) => {\n event.nativeEvent.selectToastPrevented = true;\n if (typeof onClose === 'function') {\n onClose({\n type: 'close',\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, onClose]);\n return (\n <Button className={classnames(styles['toast-item-container'], styles[type])} tabIndex={-1} onClick={toastOnClick}>\n {\n typeof icon === 'string' && icon.length > 0 ?\n <div className={styles['icon-container']}>\n <Icon className={styles['icon']} icon={icon} />\n </div>\n :\n null\n }\n <div className={styles['info-container']}>\n {\n typeof title === 'string' && title.length > 0 ?\n <div className={styles['title-container']}>{title}</div>\n :\n null\n }\n {\n typeof message === 'string' && message.length > 0 ?\n <div className={styles['message-container']}>{message}</div>\n :\n null\n }\n </div>\n <Button className={styles['close-button-container']} title={'Close'} tabIndex={-1} onClick={closeButtonOnClick}>\n <Icon className={styles['icon']} icon={'ic_x'} />\n </Button>\n </Button>\n );\n};\n\nToastItem.propTypes = {\n type: PropTypes.oneOf(['success', 'alert', 'error']),\n title: PropTypes.string,\n message: PropTypes.string,\n icon: PropTypes.string,\n dataset: PropTypes.object,\n onSelect: PropTypes.func,\n onClose: PropTypes.func\n};\n\nmodule.exports = ToastItem;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ToastItem = require('./ToastItem');\n\nmodule.exports = ToastItem;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst ToastItem = require('./ToastItem');\nconst ToastContext = require('./ToastContext');\n\nconst DEFAULT_TIMEOUT = 3000;\n\nconst ToastProvider = ({ className, children }) => {\n const [container, setContainer] = React.useState(null);\n const [items, dispatch] = React.useReducer(\n (items, action) => {\n switch (action.type) {\n case 'add':\n return items.concat(action.item);\n case 'remove':\n return items.filter((item) => item.id !== action.id);\n case 'clear':\n return [];\n default:\n return items;\n }\n },\n []\n );\n const itemOnClose = React.useCallback((event) => {\n clearTimeout(event.dataset.id);\n dispatch({ type: 'remove', id: event.dataset.id });\n }, []);\n const toast = React.useMemo(() => {\n const filters = [];\n return {\n addFilter: (filter) => {\n filters.push(filter);\n },\n removeFilter: (filter) => {\n const index = filters.indexOf(filter);\n if (index > -1) {\n filters.splice(index, 1);\n }\n },\n show: (item) => {\n if (filters.some((filter) => filter(item))) {\n return;\n }\n\n const timeout = typeof item.timeout === 'number' && !isNaN(item.timeout) ?\n item.timeout\n :\n DEFAULT_TIMEOUT;\n const id = setTimeout(() => {\n dispatch({ type: 'remove', id });\n }, timeout);\n dispatch({\n type: 'add',\n item: {\n ...item,\n id,\n dataset: {\n ...item.dataset,\n id\n },\n onClose: itemOnClose\n }\n });\n },\n clear: () => {\n dispatch({ type: 'clear' });\n }\n };\n }, []);\n return (\n <ToastContext.Provider value={toast}>\n {container instanceof HTMLElement ? children : null}\n <div ref={setContainer} className={className}>\n {items.map((item, index) => (\n <ToastItem key={index} {...item} />\n ))}\n </div>\n </ToastContext.Provider>\n );\n};\n\nToastProvider.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node\n};\n\nmodule.exports = ToastProvider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ToastProvider = require('./ToastProvider');\nconst useToast = require('./useToast');\n\nmodule.exports = {\n ToastProvider,\n useToast\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst ToastContext = require('./ToastContext');\n\nconst useToast = () => {\n return React.useContext(ToastContext);\n};\n\nmodule.exports = useToast;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst comparatorWithPriorities = (priorities) => {\n return (a, b) => {\n if (isNaN(priorities[a]) && isNaN(priorities[b])) {\n return a.localeCompare(b);\n } else if (isNaN(priorities[a])) {\n if (priorities[b] === Number.NEGATIVE_INFINITY) {\n return -1;\n } else {\n return 1;\n }\n } else if (isNaN(priorities[b])) {\n if (priorities[a] === Number.NEGATIVE_INFINITY) {\n return 1;\n } else {\n return -1;\n }\n } else {\n return priorities[b] - priorities[a];\n }\n };\n};\n\nmodule.exports = comparatorWithPriorities;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst platform = require('./platform');\n\nlet options = [{ label: 'EXTERNAL_PLAYER_DISABLED', value: 'internal' }];\n\nif (platform.name === 'ios') {\n options = options.concat([\n { label: 'VLC', value: 'vlc' },\n { label: 'Outplayer', value: 'outplayer' }\n ]);\n} else if (platform.name === 'android') {\n options = options.concat([\n { label: 'EXTERNAL_PLAYER_ALLOW_CHOOSING', value: 'choose' },\n { label: 'VLC', value: 'vlc' },\n { label: 'Just Player', value: 'justplayer' },\n { label: 'MX Player', value: 'mxplayer' }\n ]);\n} else if (['windows', 'macos', 'linux'].includes(platform.name)) {\n options = options.concat([\n { label: 'VLC', value: 'vlc' }\n ]);\n} else {\n options = options.concat([\n { label: 'M3U Playlist', value: 'm3u' }\n ]);\n}\n\nmodule.exports = options;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst isChildVisible = (container, element) => {\n const elementTop = element.offsetTop;\n const elementBottom = element.offsetTop + element.clientHeight;\n const containerTop = container.scrollTop;\n const containerBottom = container.scrollTop + container.clientHeight;\n return (elementTop >= containerTop && elementBottom <= containerBottom) ||\n (elementTop < containerTop && containerTop < elementBottom) ||\n (elementTop < containerBottom && containerBottom < elementBottom);\n};\n\nconst getVisibleChildrenRange = (container) => {\n return Array.from(container.children).reduce((result, child, index) => {\n if (isChildVisible(container, child)) {\n if (result === null) {\n result = {\n start: index,\n end: index\n };\n } else {\n result.end = index;\n }\n }\n\n return result;\n }, null);\n};\n\nmodule.exports = getVisibleChildrenRange;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst AddonDetailsModal = require('./AddonDetailsModal');\nconst Button = require('./Button');\nconst Checkbox = require('./Checkbox');\nconst ColorInput = require('./ColorInput');\nconst DelayedRenderer = require('./DelayedRenderer');\nconst Image = require('./Image');\nconst LibItem = require('./LibItem');\nconst MainNavBars = require('./MainNavBars');\nconst MetaItem = require('./MetaItem');\nconst MetaPreview = require('./MetaPreview');\nconst MetaRow = require('./MetaRow');\nconst ModalDialog = require('./ModalDialog');\nconst Multiselect = require('./Multiselect');\nconst { HorizontalNavBar, VerticalNavBar } = require('./NavBar');\nconst PaginationInput = require('./PaginationInput');\nconst PlayIconCircleCentered = require('./PlayIconCircleCentered');\nconst Popup = require('./Popup');\nconst SearchBar = require('./SearchBar');\nconst StreamingServerWarning = require('./StreamingServerWarning');\nconst SharePrompt = require('./SharePrompt');\nconst Slider = require('./Slider');\nconst TextInput = require('./TextInput');\nconst { ToastProvider, useToast } = require('./Toast');\nconst comparatorWithPriorities = require('./comparatorWithPriorities');\nconst CONSTANTS = require('./CONSTANTS');\nconst { withCoreSuspender, useCoreSuspender } = require('./CoreSuspender');\nconst getVisibleChildrenRange = require('./getVisibleChildrenRange');\nconst interfaceLanguages = require('./interfaceLanguages.json');\nconst languageNames = require('./languageNames.json');\nconst routesRegexp = require('./routesRegexp');\nconst translateOption = require('./translateOption');\nconst useAnimationFrame = require('./useAnimationFrame');\nconst useBinaryState = require('./useBinaryState');\nconst useFullscreen = require('./useFullscreen');\nconst useLiveRef = require('./useLiveRef');\nconst useModelState = require('./useModelState');\nconst useOnScrollToBottom = require('./useOnScrollToBottom');\nconst useProfile = require('./useProfile');\nconst useStreamingServer = require('./useStreamingServer');\nconst useTorrent = require('./useTorrent');\nconst platform = require('./platform');\nconst externalPlayerOptions = require('./externalPlayerOptions');\n\nmodule.exports = {\n AddonDetailsModal,\n Button,\n Checkbox,\n ColorInput,\n DelayedRenderer,\n Image,\n LibItem,\n MainNavBars,\n MetaItem,\n MetaPreview,\n MetaRow,\n ModalDialog,\n Multiselect,\n HorizontalNavBar,\n VerticalNavBar,\n PaginationInput,\n PlayIconCircleCentered,\n Popup,\n SearchBar,\n StreamingServerWarning,\n SharePrompt,\n Slider,\n TextInput,\n ToastProvider,\n useToast,\n comparatorWithPriorities,\n CONSTANTS,\n withCoreSuspender,\n useCoreSuspender,\n getVisibleChildrenRange,\n interfaceLanguages,\n languageNames,\n routesRegexp,\n translateOption,\n useAnimationFrame,\n useBinaryState,\n useFullscreen,\n useLiveRef,\n useModelState,\n useOnScrollToBottom,\n useProfile,\n useStreamingServer,\n useTorrent,\n platform,\n externalPlayerOptions,\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\n// this detects ipad properly in safari\n// while bowser does not\nfunction iOS() {\n return [\n 'iPad Simulator',\n 'iPhone Simulator',\n 'iPod Simulator',\n 'iPad',\n 'iPhone',\n 'iPod'\n ].includes(navigator.platform)\n || (navigator.userAgent.includes('Mac') && 'ontouchend' in document);\n}\n\nconst Bowser = require('bowser');\n\nconst browser = Bowser.parse(window.navigator?.userAgent || '');\n\nconst name = iOS() ? 'ios' : (browser?.os?.name || 'unknown').toLowerCase();\n\nmodule.exports = {\n name,\n isMobile: () => {\n return name === 'ios' || name === 'android';\n }\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst routesRegexp = {\n intro: {\n regexp: /^\\/intro$/,\n urlParamsNames: []\n },\n board: {\n regexp: /^\\/?$/,\n urlParamsNames: []\n },\n discover: {\n regexp: /^\\/discover(?:\\/([^/]*)\\/([^/]*)\\/([^/]*))?$/,\n urlParamsNames: ['transportUrl', 'type', 'catalogId']\n },\n library: {\n regexp: /^\\/library(?:\\/([^/]*))?$/,\n urlParamsNames: ['type']\n },\n continuewatching: {\n regexp: /^\\/continuewatching(?:\\/([^/]*))?$/,\n urlParamsNames: ['type']\n },\n search: {\n regexp: /^\\/search$/,\n urlParamsNames: []\n },\n metadetails: {\n regexp: /^\\/(?:metadetails|detail)\\/([^/]*)\\/([^/]*)(?:\\/([^/]*))?$/,\n urlParamsNames: ['type', 'id', 'videoId']\n },\n addons: {\n regexp: /^\\/addons(?:\\/([^/]*)(?:\\/([^/]*)\\/([^/]*))?)?$/,\n urlParamsNames: ['type', 'transportUrl', 'catalogId']\n },\n settings: {\n regexp: /^\\/settings$/,\n urlParamsNames: []\n },\n player: {\n regexp: /^\\/player\\/([^/]*)(?:\\/([^/]*)\\/([^/]*)\\/([^/]*)\\/([^/]*)\\/([^/]*))?$/,\n urlParamsNames: ['stream', 'streamTransportUrl', 'metaTransportUrl', 'type', 'id', 'videoId']\n }\n};\n\nmodule.exports = routesRegexp;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst { t } = require('i18next');\n\nconst translateOption = (option, translateKeyPrefix = '') => {\n const translateKey = `${translateKeyPrefix}${option}`;\n const translateValue = t(translateKey, {\n defaultValue: t(translateKey.toUpperCase(), {\n defaultValue: null\n })\n });\n return translateValue ?? option.charAt(0).toUpperCase() + option.slice(1);\n};\n\nmodule.exports = translateOption;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useAnimationFrame = () => {\n const animationFrameId = React.useRef(null);\n const cancel = React.useCallback(() => {\n cancelAnimationFrame(animationFrameId.current);\n animationFrameId.current = null;\n }, []);\n const request = React.useCallback((cb) => {\n cancel();\n animationFrameId.current = requestAnimationFrame(() => {\n cb();\n animationFrameId.current = null;\n });\n }, []);\n return [request, cancel];\n};\n\nmodule.exports = useAnimationFrame;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useBinaryState = (initialValue) => {\n const [value, setValue] = React.useState(!!initialValue);\n const on = React.useCallback(() => {\n setValue(true);\n }, []);\n const off = React.useCallback(() => {\n setValue(false);\n }, []);\n const toggle = React.useCallback(() => {\n setValue(!value);\n }, [value]);\n return [value, on, off, toggle];\n};\n\nmodule.exports = useBinaryState;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useFullscreen = () => {\n const [fullscreen, setFullscreen] = React.useState(document.fullscreenElement === document.documentElement);\n const requestFullscreen = React.useCallback(() => {\n document.documentElement.requestFullscreen();\n }, []);\n const exitFullscreen = React.useCallback(() => {\n document.exitFullscreen();\n }, []);\n const toggleFullscreen = React.useCallback(() => {\n if (fullscreen) {\n exitFullscreen();\n } else {\n requestFullscreen();\n }\n }, [fullscreen]);\n React.useEffect(() => {\n const onFullscreenChange = () => {\n setFullscreen(document.fullscreenElement === document.documentElement);\n };\n document.addEventListener('fullscreenchange', onFullscreenChange);\n return () => {\n document.removeEventListener('fullscreenchange', onFullscreenChange);\n };\n }, []);\n return [fullscreen, requestFullscreen, exitFullscreen, toggleFullscreen];\n};\n\nmodule.exports = useFullscreen;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useLiveRef = (value) => {\n const ref = React.useRef();\n ref.current = value;\n return ref;\n};\n\nmodule.exports = useLiveRef;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst throttle = require('lodash.throttle');\nconst isEqual = require('lodash.isequal');\nconst intersection = require('lodash.intersection');\nconst { useCoreSuspender } = require('stremio/common/CoreSuspender');\nconst { useRouteFocused } = require('stremio-router');\nconst { useServices } = require('stremio/services');\n\nconst useModelState = ({ action, ...args }) => {\n const { core } = useServices();\n const routeFocused = useRouteFocused();\n const mountedRef = React.useRef(false);\n const [model, timeout, map, deps] = React.useMemo(() => {\n return [args.model, args.timeout, args.map, args.deps];\n }, []);\n const { getState } = useCoreSuspender();\n const [state, setState] = React.useReducer(\n (prevState, nextState) => {\n return Object.keys(prevState).reduce((result, key) => {\n result[key] = isEqual(prevState[key], nextState[key]) ? prevState[key] : nextState[key];\n return result;\n }, {});\n },\n undefined,\n () => {\n if (typeof map === 'function') {\n return map(getState(model));\n } else {\n return getState(model);\n }\n }\n );\n React.useInsertionEffect(() => {\n if (action) {\n core.transport.dispatch(action, model);\n }\n }, [action]);\n React.useInsertionEffect(() => {\n return () => {\n core.transport.dispatch({ action: 'Unload' }, model);\n };\n }, []);\n React.useInsertionEffect(() => {\n const onNewState = async (models) => {\n if (models.indexOf(model) === -1 && (!Array.isArray(deps) || intersection(deps, models).length === 0)) {\n return;\n }\n\n const state = await core.transport.getState(model);\n if (typeof map === 'function') {\n setState(map(state));\n } else {\n setState(state);\n }\n };\n const onNewStateThrottled = throttle(onNewState, timeout);\n if (routeFocused) {\n core.transport.on('NewState', onNewStateThrottled);\n if (mountedRef.current) {\n onNewState([model]);\n }\n }\n return () => {\n onNewStateThrottled.cancel();\n core.transport.off('NewState', onNewStateThrottled);\n };\n }, [routeFocused]);\n React.useInsertionEffect(() => {\n mountedRef.current = true;\n }, []);\n return state;\n};\n\nmodule.exports = useModelState;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useOnScrollToBottom = (cb, threshold = 0) => {\n const triggeredRef = React.useRef(false);\n const onScroll = React.useCallback((event) => {\n if (event.target.scrollTop + event.target.clientHeight >= event.target.scrollHeight - threshold) {\n if (!triggeredRef.current) {\n triggeredRef.current = true;\n if (typeof cb === 'function') {\n cb(event);\n }\n }\n } else {\n triggeredRef.current = false;\n }\n }, [cb]);\n return onScroll;\n};\n\nmodule.exports = useOnScrollToBottom;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst useModelState = require('stremio/common/useModelState');\n\nconst map = (ctx) => ({\n ...ctx.profile,\n settings: {\n ...ctx.profile.settings,\n streamingServerWarningDismissed: new Date(\n typeof ctx.profile.settings.streamingServerWarningDismissed === 'string' ?\n ctx.profile.settings.streamingServerWarningDismissed\n :\n NaN\n )\n }\n});\n\nconst useProfile = () => {\n return useModelState({ model: 'ctx', map });\n};\n\nmodule.exports = useProfile;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst useModelState = require('stremio/common/useModelState');\n\nconst useStreamingServer = () => {\n return useModelState({ model: 'streaming_server' });\n};\n\nmodule.exports = useStreamingServer;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst magnet = require('magnet-uri');\nconst { useServices } = require('stremio/services');\nconst useToast = require('stremio/common/Toast/useToast');\nconst useStreamingServer = require('stremio/common/useStreamingServer');\n\nconst useTorrent = () => {\n const { core } = useServices();\n const streamingServer = useStreamingServer();\n const toast = useToast();\n const createTorrentTimeout = React.useRef(null);\n const createTorrentFromMagnet = React.useCallback((text) => {\n const parsed = magnet.decode(text);\n if (parsed && typeof parsed.infoHash === 'string') {\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'CreateTorrent',\n args: text\n }\n });\n clearTimeout(createTorrentTimeout.current);\n createTorrentTimeout.current = setTimeout(() => {\n toast.show({\n type: 'error',\n title: 'It\\'s taking a long time to get metadata from the torrent.',\n timeout: 10000\n });\n }, 10000);\n }\n }, []);\n React.useEffect(() => {\n if (streamingServer.torrent !== null) {\n const [, { type }] = streamingServer.torrent;\n if (type === 'Ready') {\n clearTimeout(createTorrentTimeout.current);\n }\n }\n }, [streamingServer.torrent]);\n React.useEffect(() => {\n return () => clearTimeout(createTorrentTimeout.current);\n }, []);\n return {\n createTorrentFromMagnet\n };\n};\n\nmodule.exports = useTorrent;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst ReactDOM = require('react-dom');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst FocusLock = require('react-focus-lock').default;\nconst { useModalsContainer } = require('../ModalsContainerContext');\n\nconst Modal = React.forwardRef(({ className, autoFocus, disabled, children, ...props }, ref) => {\n const modalsContainer = useModalsContainer();\n return ReactDOM.createPortal(\n <FocusLock ref={ref} className={classnames(className, 'modal-container')} autoFocus={!!autoFocus} disabled={!!disabled} lockProps={props}>\n {children}\n </FocusLock>,\n modalsContainer\n );\n});\n\nModal.displayName = 'Modal';\n\nModal.propTypes = {\n className: PropTypes.string,\n autoFocus: PropTypes.bool,\n disabled: PropTypes.bool,\n children: PropTypes.node\n};\n\nmodule.exports = Modal;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Modal = require('./Modal');\n\nmodule.exports = Modal;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst ModalsContainerContext = React.createContext(null);\n\nModalsContainerContext.displayName = 'ModalsContainerContext';\n\nmodule.exports = ModalsContainerContext;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst ModalsContainerContext = require('./ModalsContainerContext');\n\nconst ModalsContainerProvider = ({ children }) => {\n const [container, setContainer] = React.useState(null);\n return (\n <ModalsContainerContext.Provider value={container}>\n {container instanceof HTMLElement ? children : null}\n <div ref={setContainer} className={'modals-container'} />\n </ModalsContainerContext.Provider>\n );\n};\n\nModalsContainerProvider.propTypes = {\n children: PropTypes.node\n};\n\nmodule.exports = ModalsContainerProvider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ModalsContainerProvider = require('./ModalsContainerProvider');\nconst useModalsContainer = require('./useModalsContainer');\n\nmodule.exports = {\n ModalsContainerProvider,\n useModalsContainer\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst ModalsContainerContext = require('./ModalsContainerContext');\n\nconst useModalsContainer = () => {\n return React.useContext(ModalsContainerContext);\n};\n\nmodule.exports = useModalsContainer;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst { ModalsContainerProvider } = require('../ModalsContainerContext');\n\nconst Route = ({ children }) => {\n return (\n <div className={'route-container'}>\n <ModalsContainerProvider>\n <div className={'route-content'}>\n {children}\n </div>\n </ModalsContainerProvider>\n </div>\n );\n};\n\nRoute.propTypes = {\n children: PropTypes.node\n};\n\nmodule.exports = Route;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Route = require('./Route');\n\nmodule.exports = Route;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst RouteFocusedContext = React.createContext(true);\n\nRouteFocusedContext.displayName = 'RouteFocusedContext';\n\nmodule.exports = RouteFocusedContext;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst RouteFocusedContext = require('./RouteFocusedContext');\nconst useRouteFocused = require('./useRouteFocused');\n\nmodule.exports = {\n RouteFocusedProvider: RouteFocusedContext.Provider,\n useRouteFocused\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst RouteFocusedContext = require('./RouteFocusedContext');\n\nconst useRouteFocused = () => {\n return React.useContext(RouteFocusedContext);\n};\n\nmodule.exports = useRouteFocused;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst ReactIs = require('react-is');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst UrlUtils = require('url');\nconst isEqual = require('lodash.isequal');\nconst { RouteFocusedProvider } = require('../RouteFocusedContext');\nconst Route = require('../Route');\nconst routeConfigForPath = require('./routeConfigForPath');\nconst urlParamsForPath = require('./urlParamsForPath');\n\nconst Router = ({ className, onPathNotMatch, onRouteChange, ...props }) => {\n const viewsConfig = React.useMemo(() => props.viewsConfig, []);\n const [views, setViews] = React.useState(() => {\n return Array(viewsConfig.length).fill(null);\n });\n React.useLayoutEffect(() => {\n const onLocationHashChange = () => {\n const { pathname, query } = UrlUtils.parse(window.location.hash.slice(1));\n const queryParams = new URLSearchParams(typeof query === 'string' ? query : '');\n const routeConfig = routeConfigForPath(viewsConfig, typeof pathname === 'string' ? pathname : '');\n if (routeConfig === null) {\n if (typeof onPathNotMatch === 'function') {\n const component = onPathNotMatch();\n if (ReactIs.isValidElementType(component)) {\n setViews((views) => {\n return views\n .slice(0, viewsConfig.length)\n .concat({\n key: '-1',\n component\n });\n });\n }\n }\n\n return;\n }\n\n const urlParams = urlParamsForPath(routeConfig, typeof pathname === 'string' ? pathname : '');\n const routeViewIndex = viewsConfig.findIndex((vc) => vc.includes(routeConfig));\n const routeIndex = viewsConfig[routeViewIndex].findIndex((rc) => rc === routeConfig);\n const handled = typeof onRouteChange === 'function' && onRouteChange(routeConfig, urlParams, queryParams);\n if (!handled) {\n setViews((views) => {\n return views\n .slice(0, viewsConfig.length)\n .map((view, index) => {\n if (index < routeViewIndex) {\n return view;\n } else if (index === routeViewIndex) {\n return {\n key: `${routeViewIndex}${routeIndex}`,\n component: routeConfig.component,\n urlParams: view !== null && isEqual(view.urlParams, urlParams) ?\n view.urlParams\n :\n urlParams,\n queryParams: view !== null && isEqual(Array.from(view.queryParams.entries()), Array.from(queryParams.entries())) ?\n view.queryParams\n :\n queryParams\n };\n } else {\n return null;\n }\n });\n });\n }\n };\n window.addEventListener('hashchange', onLocationHashChange);\n onLocationHashChange();\n return () => {\n window.removeEventListener('hashchange', onLocationHashChange);\n };\n }, [onPathNotMatch, onRouteChange]);\n return (\n <div className={classnames(className, 'routes-container')}>\n {\n views\n .filter((view) => view !== null)\n .map(({ key, component, urlParams, queryParams }, index, views) => (\n <RouteFocusedProvider key={key} value={index === views.length - 1}>\n <Route>\n {React.createElement(component, { urlParams, queryParams })}\n </Route>\n </RouteFocusedProvider>\n ))\n }\n </div>\n );\n};\n\nRouter.propTypes = {\n className: PropTypes.string,\n onPathNotMatch: PropTypes.func,\n onRouteChange: PropTypes.func,\n viewsConfig: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.exact({\n regexp: PropTypes.instanceOf(RegExp).isRequired,\n urlParamsNames: PropTypes.arrayOf(PropTypes.string).isRequired,\n component: PropTypes.elementType.isRequired\n }))).isRequired\n};\n\nmodule.exports = Router;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Router = require('./Router');\n\nmodule.exports = Router;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst routeConfigForPath = (viewsConfig, path) => {\n for (const viewConfig of viewsConfig) {\n for (const routeConfig of viewConfig) {\n if (path.match(routeConfig.regexp)) {\n return routeConfig;\n }\n }\n }\n\n return null;\n};\n\nmodule.exports = routeConfigForPath;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst urlParamsForPath = (routeConfig, path) => {\n const matches = path.match(routeConfig.regexp);\n return routeConfig.urlParamsNames.reduce((urlParams, name, index) => {\n if (Array.isArray(matches) && typeof matches[index + 1] === 'string') {\n urlParams[name] = decodeURIComponent(matches[index + 1]);\n } else {\n urlParams[name] = null;\n }\n\n return urlParams;\n }, { path });\n};\n\nmodule.exports = urlParamsForPath;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst { useRouteFocused } = require('./RouteFocusedContext');\nconst { useModalsContainer } = require('./ModalsContainerContext');\nconst Modal = require('./Modal');\nconst Router = require('./Router');\n\nmodule.exports = {\n useRouteFocused,\n useModalsContainer,\n Modal,\n Router\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button, Image } = require('stremio/common');\nconst styles = require('./styles');\n\nconst Addon = ({ className, id, name, version, logo, description, types, behaviorHints, installed, onToggle, onConfigure, onShare, dataset }) => {\n const { t } = useTranslation();\n const toggleButtonOnClick = React.useCallback((event) => {\n if (typeof onToggle === 'function') {\n onToggle({\n type: 'toggle',\n nativeEvent: event.nativeEvent,\n reactEvent: event,\n dataset: dataset\n });\n }\n }, [onToggle, dataset]);\n const configureButtonOnClick = React.useCallback((event) => {\n if (typeof onConfigure === 'function') {\n onConfigure({\n type: 'configure',\n nativeEvent: event.nativeEvent,\n reactEvent: event,\n dataset: dataset\n });\n }\n }, [onConfigure, dataset]);\n const shareButtonOnClick = React.useCallback((event) => {\n if (typeof onShare === 'function') {\n onShare({\n type: 'share',\n nativeEvent: event.nativeEvent,\n reactEvent: event,\n dataset: dataset\n });\n }\n }, [onShare, dataset]);\n const onKeyDown = React.useCallback((event) => {\n if (event.key === 'Enter' && typeof onToggle === 'function') {\n onToggle({\n type: 'toggle',\n nativeEvent: event.nativeEvent,\n reactEvent: event,\n dataset: dataset\n });\n }\n }, [onToggle, dataset]);\n const renderLogoFallback = React.useCallback(() => (\n <Icon className={styles['icon']} icon={'ic_addons'} />\n ), []);\n return (\n <Button className={classnames(className, styles['addon-container'])} onKeyDown={onKeyDown}>\n <div className={styles['logo-container']}>\n <Image\n className={styles['logo']}\n src={logo}\n alt={' '}\n renderFallback={renderLogoFallback}\n />\n </div>\n <div className={styles['info-container']}>\n <div className={styles['name-container']} title={typeof name === 'string' && name.length > 0 ? name : id}>\n {typeof name === 'string' && name.length > 0 ? name : id}\n </div>\n {\n typeof version === 'string' && version.length > 0 ?\n <div className={styles['version-container']} title={`v.${version}`}>v.{version}</div>\n :\n null\n }\n {\n Array.isArray(types) && types.length > 0 ?\n <div className={styles['types-container']}>\n {\n types.length === 1 ?\n types.join('')\n :\n types.slice(0, -1).join(', ') + ' & ' + types[types.length - 1]\n }\n </div>\n :\n null\n }\n {\n typeof description === 'string' && description.length > 0 ?\n <div className={styles['description-container']} title={description}>{description}</div>\n :\n null\n }\n </div>\n <div className={styles['buttons-container']}>\n <div className={styles['action-buttons-container']}>\n {\n !behaviorHints.configurationRequired && behaviorHints.configurable ?\n <Button className={styles['configure-button-container']} title={t('ADDON_CONFIGURE')} tabIndex={-1} onClick={configureButtonOnClick}>\n <Icon className={styles['icon']} icon={'ic_settings'} />\n </Button>\n :\n null\n }\n <Button\n className={installed ? styles['uninstall-button-container'] : styles['install-button-container']}\n title={installed ? t('ADDON_UNINSTALL') : behaviorHints.configurationRequired ? t('ADDON_CONFIGURE') : t('ADDON_INSTALL')}\n tabIndex={-1}\n onClick={!installed && behaviorHints.configurationRequired ? configureButtonOnClick : toggleButtonOnClick}\n >\n <div className={styles['label']}>{installed ? t('ADDON_UNINSTALL') : behaviorHints.configurationRequired ? t('ADDON_CONFIGURE') : t('ADDON_INSTALL')}</div>\n </Button>\n </div>\n <Button className={styles['share-button-container']} title={t('SHARE_ADDON')} tabIndex={-1} onClick={shareButtonOnClick}>\n <Icon className={styles['icon']} icon={'ic_share'} />\n <div className={styles['label']}>{ t('SHARE_ADDON') }</div>\n </Button>\n </div>\n </Button>\n );\n};\n\nAddon.propTypes = {\n className: PropTypes.string,\n id: PropTypes.string,\n name: PropTypes.string,\n version: PropTypes.string,\n logo: PropTypes.string,\n description: PropTypes.string,\n types: PropTypes.arrayOf(PropTypes.string),\n behaviorHints: PropTypes.shape({\n adult: PropTypes.bool,\n configurable: PropTypes.bool,\n configurationRequired: PropTypes.bool,\n p2p: PropTypes.bool,\n }),\n installed: PropTypes.bool,\n onToggle: PropTypes.func,\n onConfigure: PropTypes.func,\n onShare: PropTypes.func,\n dataset: PropTypes.object\n};\n\nmodule.exports = Addon;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Addon = require('./Addon');\n\nmodule.exports = Addon;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { AddonDetailsModal, Button, Image, Multiselect, MainNavBars, TextInput, SearchBar, SharePrompt, ModalDialog, useBinaryState, withCoreSuspender } = require('stremio/common');\nconst Addon = require('./Addon');\nconst useInstalledAddons = require('./useInstalledAddons');\nconst useRemoteAddons = require('./useRemoteAddons');\nconst useAddonDetailsTransportUrl = require('./useAddonDetailsTransportUrl');\nconst useSelectableInputs = require('./useSelectableInputs');\nconst styles = require('./styles');\n\nconst Addons = ({ urlParams, queryParams }) => {\n const { t } = useTranslation();\n const installedAddons = useInstalledAddons(urlParams);\n const remoteAddons = useRemoteAddons(urlParams);\n const [addonDetailsTransportUrl, setAddonDetailsTransportUrl] = useAddonDetailsTransportUrl(urlParams, queryParams);\n const selectInputs = useSelectableInputs(installedAddons, remoteAddons);\n const [filtersModalOpen, openFiltersModal, closeFiltersModal] = useBinaryState(false);\n const [addAddonModalOpen, openAddAddonModal, closeAddAddonModal] = useBinaryState(false);\n const addAddonUrlInputRef = React.useRef(null);\n const addAddonOnSubmit = React.useCallback(() => {\n if (addAddonUrlInputRef.current !== null) {\n setAddonDetailsTransportUrl(addAddonUrlInputRef.current.value);\n }\n }, [setAddonDetailsTransportUrl]);\n const addAddonModalButtons = React.useMemo(() => {\n return [\n {\n className: styles['cancel-button'],\n label: t('BUTTON_CANCEL'),\n props: {\n onClick: closeAddAddonModal\n }\n },\n {\n label: t('ADDON_ADD'),\n props: {\n onClick: addAddonOnSubmit\n }\n }\n ];\n }, [addAddonOnSubmit]);\n const [search, setSearch] = React.useState('');\n const searchInputOnChange = React.useCallback((event) => {\n setSearch(event.currentTarget.value);\n }, []);\n const [sharedAddon, setSharedAddon] = React.useState(null);\n const clearSharedAddon = React.useCallback(() => {\n setSharedAddon(null);\n }, []);\n const onAddonShare = React.useCallback((event) => {\n setSharedAddon(event.dataset.addon);\n }, []);\n const onAddonToggle = React.useCallback((event) => {\n setAddonDetailsTransportUrl(event.dataset.addon.transportUrl);\n }, [setAddonDetailsTransportUrl]);\n const onAddonConfigure = React.useCallback((event) => {\n window.open(event.dataset.addon.transportUrl.replace('manifest.json', 'configure'));\n }, []);\n const closeAddonDetails = React.useCallback(() => {\n setAddonDetailsTransportUrl(null);\n }, [setAddonDetailsTransportUrl]);\n const searchFilterPredicate = React.useCallback((addon) => {\n return search.length === 0 ||\n (\n (typeof addon.manifest.name === 'string' && addon.manifest.name.toLowerCase().includes(search.toLowerCase())) ||\n (typeof addon.manifest.description === 'string' && addon.manifest.description.toLowerCase().includes(search.toLowerCase()))\n );\n }, [search]);\n const renderLogoFallback = React.useCallback(() => (\n <Icon className={styles['icon']} icon={'ic_addons'} />\n ), []);\n React.useLayoutEffect(() => {\n closeAddAddonModal();\n setSearch('');\n clearSharedAddon();\n }, [urlParams, queryParams]);\n return (\n <MainNavBars className={styles['addons-container']} route={'addons'}>\n <div className={styles['addons-content']}>\n <div className={styles['selectable-inputs-container']}>\n <Button className={styles['add-button-container']} title={t('ADD_ADDON')} onClick={openAddAddonModal}>\n <Icon className={styles['icon']} icon={'ic_plus'} />\n <div className={styles['add-button-label']}>{ t('ADD_ADDON') }</div>\n </Button>\n {selectInputs.map((selectInput, index) => (\n <Multiselect\n {...selectInput}\n key={index}\n className={styles['select-input-container']}\n />\n ))}\n <div className={styles['spacing']} />\n <SearchBar\n className={styles['search-bar']}\n title={t('ADDON_SEARCH')}\n value={search}\n onChange={searchInputOnChange}\n />\n <Button className={styles['filter-button']} title={'All filters'} onClick={openFiltersModal}>\n <Icon className={styles['filter-icon']} icon={'ic_filter'} />\n </Button>\n </div>\n {\n installedAddons.selected !== null ?\n installedAddons.selectable.types.length === 0 ?\n <div className={styles['message-container']}>\n No addons ware installed!\n </div>\n :\n installedAddons.catalog.length === 0 ?\n <div className={styles['message-container']}>\n No addons ware installed for that type!\n </div>\n :\n <div className={styles['addons-list-container']}>\n {\n installedAddons.catalog\n .filter(searchFilterPredicate)\n .map((addon, index) => (\n <Addon\n key={index}\n className={classnames(styles['addon'], 'animation-fade-in')}\n id={addon.manifest.id}\n name={addon.manifest.name}\n version={addon.manifest.version}\n logo={addon.manifest.logo}\n description={addon.manifest.description}\n types={addon.manifest.types}\n behaviorHints={addon.manifest.behaviorHints}\n installed={addon.installed}\n onToggle={onAddonToggle}\n onConfigure={onAddonConfigure}\n onShare={onAddonShare}\n dataset={{ addon }}\n />\n ))\n }\n </div>\n :\n remoteAddons.selected !== null ?\n remoteAddons.catalog.content.type === 'Err' ?\n <div className={styles['message-container']}>\n {remoteAddons.catalog.content.content}\n </div>\n :\n remoteAddons.catalog.content.type === 'Loading' ?\n <div className={styles['message-container']}>\n Loading!\n </div>\n :\n <div className={styles['addons-list-container']}>\n {\n remoteAddons.catalog.content.content\n .filter(searchFilterPredicate)\n .map((addon, index) => (\n <Addon\n key={index}\n className={classnames(styles['addon'], 'animation-fade-in')}\n id={addon.manifest.id}\n name={addon.manifest.name}\n version={addon.manifest.version}\n logo={addon.manifest.logo}\n description={addon.manifest.description}\n types={addon.manifest.types}\n behaviorHints={addon.manifest.behaviorHints}\n installed={addon.installed}\n onToggle={onAddonToggle}\n onConfigure={onAddonConfigure}\n onShare={onAddonShare}\n dataset={{ addon }}\n />\n ))\n }\n </div>\n :\n <div className={styles['message-container']}>\n No select\n </div>\n }\n </div>\n {\n filtersModalOpen ?\n <ModalDialog title={'Addons filters'} className={styles['filters-modal']} onCloseRequest={closeFiltersModal}>\n {selectInputs.map((selectInput, index) => (\n <Multiselect\n {...selectInput}\n key={index}\n className={styles['select-input-container']}\n />\n ))}\n </ModalDialog>\n :\n null\n }\n {\n addAddonModalOpen ?\n <ModalDialog\n className={styles['add-addon-modal-container']}\n title={t('ADD_ADDON')}\n buttons={addAddonModalButtons}\n onCloseRequest={closeAddAddonModal}>\n <div className={styles['notice']}>{ t('ADD_ADDON_DESCRIPTION') }</div>\n <TextInput\n ref={addAddonUrlInputRef}\n className={styles['addon-url-input']}\n type={'text'}\n placeholder={t('PASTE_ADDON_URL')}\n autoFocus={true}\n onSubmit={addAddonOnSubmit}\n />\n </ModalDialog>\n :\n null\n }\n {\n sharedAddon !== null ?\n <ModalDialog\n className={styles['share-modal-container']}\n title={t('SHARE_ADDON')}\n onCloseRequest={clearSharedAddon}>\n <div className={styles['title-container']}>\n <Image\n className={styles['logo']}\n src={sharedAddon.manifest.logo}\n alt={' '}\n renderFallback={renderLogoFallback}\n />\n <div className={styles['name-container']}>\n <span className={styles['name']}>{typeof sharedAddon.manifest.name === 'string' && sharedAddon.manifest.name.length > 0 ? sharedAddon.manifest.name : sharedAddon.manifest.id}</span>\n {\n typeof sharedAddon.manifest.version === 'string' && sharedAddon.manifest.version.length > 0 ?\n <span className={styles['version']}>v. {sharedAddon.manifest.version}</span>\n :\n null\n }\n </div>\n </div>\n <SharePrompt\n className={styles['share-prompt-container']}\n url={sharedAddon.transportUrl}\n />\n </ModalDialog>\n :\n null\n }\n {\n typeof addonDetailsTransportUrl === 'string' ?\n <AddonDetailsModal\n transportUrl={addonDetailsTransportUrl}\n onCloseRequest={closeAddonDetails}\n />\n :\n null\n }\n </MainNavBars>\n );\n};\n\nAddons.propTypes = {\n urlParams: PropTypes.shape({\n path: PropTypes.string,\n transportUrl: PropTypes.string,\n catalogId: PropTypes.string,\n type: PropTypes.string\n }),\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nconst AddonsFallback = () => (\n <MainNavBars className={styles['addons-container']} route={'addons'} />\n);\n\nmodule.exports = withCoreSuspender(Addons, AddonsFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Addons = require('./Addons');\n\nmodule.exports = Addons;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useAddonDetailsTransportUrl = (urlParams, queryParams) => {\n const transportUrl = React.useMemo(() => {\n return queryParams.get('addon');\n }, [queryParams]);\n const setTransportUrl = React.useCallback((transportUrl) => {\n const nextQueryParams = new URLSearchParams(queryParams);\n if (typeof transportUrl === 'string') {\n nextQueryParams.set('addon', transportUrl);\n } else {\n nextQueryParams.delete('addon');\n }\n\n window.location.replace(`#${urlParams.path}?${nextQueryParams}`);\n }, [urlParams, queryParams]);\n return [transportUrl, setTransportUrl];\n};\n\nmodule.exports = useAddonDetailsTransportUrl;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useModelState } = require('stremio/common');\n\nconst useInstalledAddons = (urlParams) => {\n const action = React.useMemo(() => {\n if (typeof urlParams.transportUrl !== 'string' && typeof urlParams.catalogId !== 'string') {\n return {\n action: 'Load',\n args: {\n model: 'InstalledAddonsWithFilters',\n args: {\n request: {\n type: typeof urlParams.type === 'string' ? urlParams.type : null\n }\n }\n }\n };\n } else {\n return {\n action: 'Unload'\n };\n }\n }, [urlParams]);\n return useModelState({ model: 'installed_addons', action });\n};\n\nmodule.exports = useInstalledAddons;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useModelState } = require('stremio/common');\n\nconst useRemoteAddons = (urlParams) => {\n const action = React.useMemo(() => {\n if (typeof urlParams.type === 'string' && typeof urlParams.transportUrl === 'string' && typeof urlParams.catalogId === 'string') {\n return {\n action: 'Load',\n args: {\n model: 'CatalogWithFilters',\n args: {\n request: {\n base: urlParams.transportUrl,\n path: {\n resource: 'addon_catalog',\n type: urlParams.type,\n id: urlParams.catalogId,\n extra: []\n }\n }\n }\n }\n };\n } else {\n return {\n action: 'Unload'\n };\n }\n }, [urlParams]);\n return useModelState({ model: 'remote_addons', action, deps: ['ctx'] });\n};\n\nmodule.exports = useRemoteAddons;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { t } = require('i18next');\nconst { translateOption } = require('stremio/common');\n\nconst mapSelectableInputs = (installedAddons, remoteAddons) => {\n const catalogSelect = {\n title: t('SELECT_CATALOG'),\n options: remoteAddons.selectable.catalogs\n .concat(installedAddons.selectable.catalogs)\n .map(({ name, deepLinks }) => ({\n value: deepLinks.addons,\n label: translateOption(name, 'ADDON_'),\n title: translateOption(name, 'ADDON_'),\n })),\n selected: remoteAddons.selectable.catalogs\n .concat(installedAddons.selectable.catalogs)\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.addons),\n renderLabelText: remoteAddons.selected !== null ?\n () => {\n const selectableCatalog = remoteAddons.selectable.catalogs\n .find(({ id }) => id === remoteAddons.selected.request.path.id);\n return selectableCatalog ? translateOption(selectableCatalog.name, 'ADDON_') : remoteAddons.selected.request.path.id;\n }\n :\n null,\n onSelect: (event) => {\n window.location = event.value;\n }\n };\n const typeSelect = {\n title: t('SELECT_TYPE'),\n options: installedAddons.selected !== null ?\n installedAddons.selectable.types.map(({ type, deepLinks }) => ({\n value: deepLinks.addons,\n label: type !== null ? translateOption(type, 'TYPE_') : t('TYPE_ALL')\n }))\n :\n remoteAddons.selectable.types.map(({ type, deepLinks }) => ({\n value: deepLinks.addons,\n label: translateOption(type, 'TYPE_')\n })),\n selected: installedAddons.selected !== null ?\n installedAddons.selectable.types\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.addons)\n :\n remoteAddons.selectable.types\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.addons),\n renderLabelText: () => {\n return installedAddons.selected !== null ?\n installedAddons.selected.request.type === null ?\n t('TYPE_ALL')\n :\n translateOption(installedAddons.selected.request.type, 'TYPE_')\n :\n remoteAddons.selected !== null ?\n translateOption(remoteAddons.selected.request.path.type, 'TYPE_')\n :\n typeSelect.title;\n },\n onSelect: (event) => {\n window.location = event.value;\n }\n };\n return [catalogSelect, typeSelect];\n};\n\nconst useSelectableInputs = (installedAddons, remoteAddons) => {\n const selectableInputs = React.useMemo(() => {\n return mapSelectableInputs(installedAddons, remoteAddons);\n }, [installedAddons, remoteAddons]);\n return selectableInputs;\n};\n\nmodule.exports = useSelectableInputs;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst classnames = require('classnames');\nconst debounce = require('lodash.debounce');\nconst { useTranslation } = require('react-i18next');\nconst { MainNavBars, MetaRow, LibItem, MetaItem, StreamingServerWarning, useStreamingServer, withCoreSuspender, getVisibleChildrenRange } = require('stremio/common');\nconst useBoard = require('./useBoard');\nconst useContinueWatchingPreview = require('./useContinueWatchingPreview');\nconst styles = require('./styles');\n\nconst THRESHOLD = 5;\n\nconst Board = () => {\n const { t } = useTranslation();\n const streamingServer = useStreamingServer();\n const continueWatchingPreview = useContinueWatchingPreview();\n const [board, loadBoardRows] = useBoard();\n const boardCatalogsOffset = continueWatchingPreview.libraryItems.length > 0 ? 1 : 0;\n const scrollContainerRef = React.useRef();\n const onVisibleRangeChange = React.useCallback(() => {\n const range = getVisibleChildrenRange(scrollContainerRef.current);\n if (range === null) {\n return;\n }\n\n const start = Math.max(0, range.start - boardCatalogsOffset - THRESHOLD);\n const end = range.end - boardCatalogsOffset + THRESHOLD;\n if (end < start) {\n return;\n }\n\n loadBoardRows({ start, end });\n }, [boardCatalogsOffset]);\n const onScroll = React.useCallback(debounce(onVisibleRangeChange, 250), [onVisibleRangeChange]);\n React.useLayoutEffect(() => {\n onVisibleRangeChange();\n }, [board.catalogs, onVisibleRangeChange]);\n return (\n <div className={styles['board-container']}>\n <MainNavBars className={styles['board-content-container']} route={'board'}>\n <div ref={scrollContainerRef} className={styles['board-content']} onScroll={onScroll}>\n {\n continueWatchingPreview.libraryItems.length > 0 ?\n <MetaRow\n className={classnames(styles['board-row'], styles['continue-watching-row'], 'animation-fade-in')}\n title={t('BOARD_CONTINUE_WATCHING')}\n items={continueWatchingPreview.libraryItems}\n itemComponent={LibItem}\n deepLinks={continueWatchingPreview.deepLinks}\n />\n :\n null\n }\n {board.catalogs.map((catalog, index) => {\n switch (catalog.content?.type) {\n case 'Ready': {\n return (\n <MetaRow\n key={index}\n className={classnames(styles['board-row'], styles[`board-row-${catalog.content.content[0].posterShape}`], 'animation-fade-in')}\n title={catalog.title}\n items={catalog.content.content}\n itemComponent={MetaItem}\n deepLinks={catalog.deepLinks}\n />\n );\n }\n case 'Err': {\n return (\n <MetaRow\n key={index}\n className={classnames(styles['board-row'], 'animation-fade-in')}\n title={catalog.title}\n message={catalog.content.content}\n deepLinks={catalog.deepLinks}\n />\n );\n }\n default: {\n return (\n <MetaRow.Placeholder\n key={index}\n className={classnames(styles['board-row'], styles['board-row-poster'], 'animation-fade-in')}\n title={catalog.title}\n deepLinks={catalog.deepLinks}\n />\n );\n }\n }\n })}\n </div>\n </MainNavBars>\n {\n streamingServer.settings !== null && streamingServer.settings.type === 'Err' ?\n <StreamingServerWarning className={styles['board-warning-container']} />\n :\n null\n }\n </div>\n );\n};\n\nconst BoardFallback = () => (\n <div className={styles['board-container']}>\n <MainNavBars className={styles['board-content-container']} route={'board'} />\n </div>\n);\n\nmodule.exports = withCoreSuspender(Board, BoardFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Board = require('./Board');\n\nmodule.exports = Board;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst { useModelState } = require('stremio/common');\n\nconst useBoard = () => {\n const { core } = useServices();\n const action = React.useMemo(() => ({\n action: 'Load',\n args: {\n model: 'CatalogsWithExtra',\n args: { extra: [] }\n }\n }), []);\n const loadRange = React.useCallback((range) => {\n core.transport.dispatch({\n action: 'CatalogsWithExtra',\n args: {\n action: 'LoadRange',\n args: range\n }\n }, 'board');\n }, []);\n const board = useModelState({ model: 'board', timeout: 1500, action });\n return [board, loadRange];\n};\n\nmodule.exports = useBoard;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst { useModelState } = require('stremio/common');\n\nconst useContinueWatchingPreview = () => {\n return useModelState({ model: 'continue_watching_preview' });\n};\n\nmodule.exports = useContinueWatchingPreview;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { useServices } = require('stremio/services');\nconst { AddonDetailsModal, DelayedRenderer, Button, MainNavBars, MetaItem, Image, MetaPreview, Multiselect, ModalDialog, CONSTANTS, useBinaryState, useOnScrollToBottom, withCoreSuspender } = require('stremio/common');\nconst useDiscover = require('./useDiscover');\nconst useSelectableInputs = require('./useSelectableInputs');\nconst styles = require('./styles');\n\nconst SCROLL_TO_BOTTOM_TRESHOLD = 400;\n\nconst Discover = ({ urlParams, queryParams }) => {\n const { core } = useServices();\n const [discover, loadNextPage] = useDiscover(urlParams, queryParams);\n const [selectInputs, hasNextPage] = useSelectableInputs(discover);\n const [inputsModalOpen, openInputsModal, closeInputsModal] = useBinaryState(false);\n const [addonModalOpen, openAddonModal, closeAddonModal] = useBinaryState(false);\n const [selectedMetaItemIndex, setSelectedMetaItemIndex] = React.useState(0);\n const metasContainerRef = React.useRef();\n React.useEffect(() => {\n if (discover.catalog?.content.type === 'Loading') {\n metasContainerRef.current.scrollTop = 0;\n }\n }, [discover.catalog]);\n const selectedMetaItem = React.useMemo(() => {\n return discover.catalog !== null &&\n discover.catalog.content.type === 'Ready' &&\n discover.catalog.content.content[selectedMetaItemIndex] ?\n discover.catalog.content.content[selectedMetaItemIndex]\n :\n null;\n }, [discover.catalog, selectedMetaItemIndex]);\n const addToLibrary = React.useCallback(() => {\n if (selectedMetaItem === null) {\n return;\n }\n\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'AddToLibrary',\n args: selectedMetaItem\n }\n });\n }, [selectedMetaItem]);\n const removeFromLibrary = React.useCallback(() => {\n if (selectedMetaItem === null) {\n return;\n }\n\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'RemoveFromLibrary',\n args: selectedMetaItem.id\n }\n });\n }, [selectedMetaItem]);\n const metaItemsOnFocusCapture = React.useCallback((event) => {\n if (event.target.dataset.index !== null && !isNaN(event.target.dataset.index)) {\n setSelectedMetaItemIndex(parseInt(event.target.dataset.index, 10));\n }\n }, []);\n const metaItemOnClick = React.useCallback((event) => {\n if (event.currentTarget.dataset.index !== selectedMetaItemIndex.toString()) {\n event.preventDefault();\n event.currentTarget.focus();\n }\n }, [selectedMetaItemIndex]);\n const onScrollToBottom = React.useCallback(() => {\n if (hasNextPage) {\n loadNextPage();\n }\n }, [hasNextPage, loadNextPage]);\n const onScroll = useOnScrollToBottom(onScrollToBottom, SCROLL_TO_BOTTOM_TRESHOLD);\n React.useEffect(() => {\n closeInputsModal();\n closeAddonModal();\n setSelectedMetaItemIndex(0);\n }, [discover.selected]);\n return (\n <MainNavBars className={styles['discover-container']} route={'discover'}>\n <div className={styles['discover-content']}>\n <div className={styles['catalog-container']}>\n <div className={styles['selectable-inputs-container']}>\n {selectInputs.map(({ title, options, selected, renderLabelText, onSelect }, index) => (\n <Multiselect\n key={index}\n className={styles['select-input']}\n title={title}\n options={options}\n selected={selected}\n renderLabelText={renderLabelText}\n onSelect={onSelect}\n />\n ))}\n <Button className={styles['filter-container']} title={'All filters'} onClick={openInputsModal}>\n <Icon className={styles['filter-icon']} icon={'ic_filter'} />\n </Button>\n </div>\n {\n discover.catalog !== null && !discover.catalog.installed ?\n <div className={styles['missing-addon-warning-container']}>\n <div className={styles['warning-label']}>Addon is not installed. Install now?</div>\n <Button className={styles['install-button']} title={'Install addon'} onClick={openAddonModal}>\n <div className={styles['label']}>Install</div>\n </Button>\n </div>\n :\n null\n }\n {\n discover.catalog === null ?\n <DelayedRenderer delay={500}>\n <div className={styles['message-container']}>\n <Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />\n <div className={styles['message-label']}>No catalog selected!</div>\n </div>\n </DelayedRenderer>\n :\n discover.catalog.content.type === 'Err' ?\n <div className={styles['message-container']}>\n <Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />\n <div className={styles['message-label']}>{discover.catalog.content.content}</div>\n </div>\n :\n discover.catalog.content.type === 'Loading' ?\n <div ref={metasContainerRef} className={classnames(styles['meta-items-container'], 'animation-fade-in')}>\n {Array(CONSTANTS.CATALOG_PAGE_SIZE).fill(null).map((_, index) => (\n <div key={index} className={styles['meta-item-placeholder']}>\n <div className={styles['poster-container']} />\n <div className={styles['title-bar-container']}>\n <div className={styles['title-label']} />\n </div>\n </div>\n ))}\n </div>\n :\n <div ref={metasContainerRef} className={classnames(styles['meta-items-container'], 'animation-fade-in')} onScroll={onScroll} onFocusCapture={metaItemsOnFocusCapture}>\n {discover.catalog.content.content.map((metaItem, index) => (\n <MetaItem\n key={index}\n className={classnames({ 'selected': selectedMetaItemIndex === index })}\n type={metaItem.type}\n name={metaItem.name}\n poster={metaItem.poster}\n posterShape={metaItem.posterShape}\n playIcon={selectedMetaItemIndex === index}\n deepLinks={metaItem.deepLinks}\n data-index={index}\n onClick={metaItemOnClick}\n />\n ))}\n </div>\n }\n </div>\n {\n selectedMetaItem !== null ?\n <MetaPreview\n className={styles['meta-preview-container']}\n compact={true}\n name={selectedMetaItem.name}\n logo={selectedMetaItem.logo}\n background={selectedMetaItem.poster}\n runtime={selectedMetaItem.runtime}\n releaseInfo={selectedMetaItem.releaseInfo}\n released={selectedMetaItem.released}\n description={selectedMetaItem.description}\n deepLinks={selectedMetaItem.deepLinks}\n links={selectedMetaItem.links}\n trailerStreams={selectedMetaItem.trailerStreams}\n inLibrary={selectedMetaItem.inLibrary}\n toggleInLibrary={selectedMetaItem.inLibrary ? removeFromLibrary : addToLibrary}\n />\n :\n discover.catalog !== null && discover.catalog.content.type === 'Loading' ?\n <div className={styles['meta-preview-container']} />\n :\n null\n }\n </div>\n {\n inputsModalOpen ?\n <ModalDialog title={'Catalog filters'} className={styles['selectable-inputs-modal']} onCloseRequest={closeInputsModal}>\n {selectInputs.map(({ title, options, selected, renderLabelText, onSelect }, index) => (\n <Multiselect\n key={index}\n className={styles['select-input']}\n title={title}\n options={options}\n selected={selected}\n renderLabelText={renderLabelText}\n onSelect={onSelect}\n />\n ))}\n </ModalDialog>\n :\n null\n }\n {\n addonModalOpen && discover.selected !== null ?\n <AddonDetailsModal transportUrl={discover.selected.request.base} onCloseRequest={closeAddonModal} />\n :\n null\n }\n </MainNavBars>\n );\n};\n\nDiscover.propTypes = {\n urlParams: PropTypes.shape({\n transportUrl: PropTypes.string,\n type: PropTypes.string,\n catalogId: PropTypes.string\n }),\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nconst DiscoverFallback = () => (\n <MainNavBars className={styles['discover-container']} route={'discover'} />\n);\n\nmodule.exports = withCoreSuspender(Discover, DiscoverFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Discover = require('./Discover');\n\nmodule.exports = Discover;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst UrlUtils = require('url');\nconst { useServices } = require('stremio/services');\nconst { useModelState } = require('stremio/common');\n\nconst map = (discover) => ({\n ...discover,\n catalog: discover.catalog !== null && discover.catalog.content.type === 'Ready' ?\n {\n ...discover.catalog,\n content: {\n ...discover.catalog.content,\n content: discover.catalog.content.content.map((metaItem) => ({\n ...metaItem,\n released: new Date(typeof metaItem.released === 'string' ? metaItem.released : NaN),\n }))\n }\n }\n :\n discover.catalog\n});\n\nconst useDiscover = (urlParams, queryParams) => {\n const { core } = useServices();\n const loadNextPage = React.useCallback(() => {\n core.transport.dispatch({\n action: 'CatalogWithFilters',\n args: {\n action: 'LoadNextPage'\n }\n }, 'discover');\n }, []);\n const action = React.useMemo(() => {\n if (typeof urlParams.transportUrl === 'string' && typeof urlParams.type === 'string' && typeof urlParams.catalogId === 'string') {\n const { hostname } = UrlUtils.parse(urlParams.transportUrl);\n if (typeof hostname === 'string' && hostname.length > 0) {\n return {\n action: 'Load',\n args: {\n model: 'CatalogWithFilters',\n args: {\n request: {\n base: urlParams.transportUrl,\n path: {\n resource: 'catalog',\n type: urlParams.type,\n id: urlParams.catalogId,\n extra: Array.from(queryParams.entries())\n }\n }\n }\n }\n };\n }\n } else {\n return {\n action: 'Load',\n args: {\n model: 'CatalogWithFilters',\n args: null\n }\n };\n }\n\n return {\n action: 'Unload'\n };\n }, [urlParams, queryParams]);\n const discover = useModelState({ model: 'discover', action, map, deps: ['ctx'] });\n return [discover, loadNextPage];\n};\n\nmodule.exports = useDiscover;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useTranslation } = require('react-i18next');\nconst { translateOption } = require('stremio/common');\n\nconst mapSelectableInputs = (discover, t) => {\n const typeSelect = {\n title: t('SELECT_TYPE'),\n options: discover.selectable.types\n .map(({ type, deepLinks }) => ({\n value: deepLinks.discover,\n label: translateOption(type, 'TYPE_')\n })),\n selected: discover.selectable.types\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.discover),\n renderLabelText: discover.selected !== null ?\n () => translateOption(discover.selected.request.path.type, 'TYPE_')\n :\n null,\n onSelect: (event) => {\n window.location = event.value;\n }\n };\n const catalogSelect = {\n title: t('SELECT_CATALOG'),\n options: discover.selectable.catalogs\n .map(({ name, addon, deepLinks }) => ({\n value: deepLinks.discover,\n label: name,\n title: `${name} (${addon.manifest.name})`\n })),\n selected: discover.selectable.catalogs\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.discover),\n renderLabelText: discover.selected !== null ?\n () => {\n const selectableCatalog = discover.selectable.catalogs\n .find(({ id }) => id === discover.selected.request.path.id);\n return selectableCatalog ? selectableCatalog.name : discover.selected.request.path.id;\n }\n :\n null,\n onSelect: (event) => {\n window.location = event.value;\n }\n };\n const extraSelects = discover.selectable.extra.map(({ name, isRequired, options }) => ({\n title: translateOption(name, 'SELECT_'),\n isRequired: isRequired,\n options: options.map(({ value, deepLinks }) => ({\n label: typeof value === 'string' ? translateOption(value) : t('NONE'),\n value: JSON.stringify({\n href: deepLinks.discover,\n value\n })\n })),\n selected: options\n .filter(({ selected }) => selected)\n .map(({ value, deepLinks }) => JSON.stringify({\n href: deepLinks.discover,\n value\n })),\n renderLabelText: options.some(({ selected, value }) => selected && value === null) ?\n () => translateOption(name, 'SELECT_')\n :\n null,\n onSelect: (event) => {\n const { href } = JSON.parse(event.value);\n window.location = href;\n }\n }));\n return [[typeSelect, catalogSelect, ...extraSelects], discover.selectable.nextPage];\n};\n\nconst useSelectableInputs = (discover) => {\n const { t } = useTranslation();\n const selectableInputs = React.useMemo(() => {\n return mapSelectableInputs(discover, t);\n }, [discover.selected, discover.selectable]);\n return selectableInputs;\n};\n\nmodule.exports = useSelectableInputs;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { Button, Checkbox } = require('stremio/common');\nconst styles = require('./styles');\n\nconst ConsentCheckbox = React.forwardRef(({ className, label, link, href, onToggle, ...props }, ref) => {\n const checkboxOnClick = React.useCallback((event) => {\n if (typeof props.onClick === 'function') {\n props.onClick(event);\n }\n\n if (!event.nativeEvent.togglePrevented && typeof onToggle === 'function') {\n onToggle({\n type: 'toggle',\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [onToggle, props.onClick]);\n const linkOnClick = React.useCallback((event) => {\n event.nativeEvent.togglePrevented = true;\n }, []);\n return (\n <Checkbox {...props} ref={ref} className={classnames(className, styles['consent-checkbox-container'])} onClick={checkboxOnClick}>\n <div className={styles['label']}>\n {label}\n {' '}\n {\n typeof link === 'string' && link.length > 0 && typeof href === 'string' && href.length > 0 ?\n <Button className={styles['link']} href={href} target={'_blank'} tabIndex={-1} onClick={linkOnClick}>\n {link}\n </Button>\n :\n null\n }\n </div>\n </Checkbox>\n );\n});\n\nConsentCheckbox.displayName = 'ConsentCheckbox';\n\nConsentCheckbox.propTypes = {\n className: PropTypes.string,\n checked: PropTypes.bool,\n label: PropTypes.string,\n link: PropTypes.string,\n href: PropTypes.string,\n onToggle: PropTypes.func,\n onClick: PropTypes.func\n};\n\nmodule.exports = ConsentCheckbox;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ConsentCheckbox = require('./ConsentCheckbox');\n\nmodule.exports = ConsentCheckbox;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst { TextInput } = require('stremio/common');\n\nconst CredentialsTextInput = React.forwardRef((props, ref) => {\n const onKeyDown = React.useCallback((event) => {\n if (typeof props.onKeyDown === 'function') {\n props.onKeyDown(event);\n }\n\n if (!event.nativeEvent.navigationPrevented) {\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n event.nativeEvent.spatialNavigationPrevented = true;\n }\n\n if (!event.shiftKey) {\n if (event.key === 'ArrowDown') {\n window.navigate('down');\n } else if (event.key === 'ArrowUp') {\n window.navigate('up');\n }\n }\n }\n }, [props.onKeyDown]);\n return (\n <TextInput {...props} ref={ref} onKeyDown={onKeyDown} />\n );\n});\n\nCredentialsTextInput.displayName = 'CredentialsTextInput';\n\nCredentialsTextInput.propTypes = {\n onKeyDown: PropTypes.func\n};\n\nmodule.exports = CredentialsTextInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst CredentialsTextInput = require('./CredentialsTextInput');\n\nmodule.exports = CredentialsTextInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Modal, useRouteFocused } = require('stremio-router');\nconst { useServices } = require('stremio/services');\nconst { Button, Image, useBinaryState } = require('stremio/common');\nconst CredentialsTextInput = require('./CredentialsTextInput');\nconst ConsentCheckbox = require('./ConsentCheckbox');\nconst PasswordResetModal = require('./PasswordResetModal');\nconst useFacebookToken = require('./useFacebookToken');\nconst styles = require('./styles');\n\nconst SIGNUP_FORM = 'signup';\nconst LOGIN_FORM = 'login';\n\nconst Intro = ({ queryParams }) => {\n const { core } = useServices();\n const routeFocused = useRouteFocused();\n const getFacebookToken = useFacebookToken();\n const emailRef = React.useRef(null);\n const passwordRef = React.useRef(null);\n const confirmPasswordRef = React.useRef(null);\n const termsRef = React.useRef(null);\n const privacyPolicyRef = React.useRef(null);\n const marketingRef = React.useRef(null);\n const errorRef = React.useRef(null);\n const [passwordRestModalOpen, openPasswordRestModal, closePasswordResetModal] = useBinaryState(false);\n const [loaderModalOpen, openLoaderModal, closeLoaderModal] = useBinaryState(false);\n const [state, dispatch] = React.useReducer(\n (state, action) => {\n switch (action.type) {\n case 'set-form':\n if (state.form !== action.form) {\n return {\n form: action.form,\n email: '',\n password: '',\n confirmPassword: '',\n termsAccepted: false,\n privacyPolicyAccepted: false,\n marketingAccepted: false,\n error: ''\n };\n }\n return state;\n case 'change-credentials':\n return {\n ...state,\n error: '',\n [action.name]: action.value\n };\n case 'toggle-checkbox':\n return {\n ...state,\n error: '',\n [action.name]: !state[action.name]\n };\n case 'error':\n return {\n ...state,\n error: action.error\n };\n default:\n return state;\n }\n },\n {\n form: [LOGIN_FORM, SIGNUP_FORM].includes(queryParams.get('form')) ? queryParams.get('form') : SIGNUP_FORM,\n email: '',\n password: '',\n confirmPassword: '',\n termsAccepted: false,\n privacyPolicyAccepted: false,\n marketingAccepted: false,\n error: ''\n }\n );\n const loginWithFacebook = React.useCallback(() => {\n openLoaderModal();\n getFacebookToken()\n .then((accessToken) => {\n return fetch('https://www.strem.io/fb-login-with-token/' + encodeURIComponent(accessToken))\n .then((resp) => resp.json())\n .catch(() => {\n throw new Error('Login failed at getting token from Stremio');\n })\n .then(({ user } = {}) => {\n if (!user || typeof user.email !== 'string' || typeof user.fbLoginToken !== 'string') {\n throw new Error('Login failed at getting token from Stremio');\n }\n\n return {\n email: user.email,\n password: user.fbLoginToken\n };\n });\n })\n .then(({ email, password }) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'Authenticate',\n args: {\n type: 'Login',\n email,\n password,\n facebook: true\n }\n }\n });\n })\n .catch((error) => {\n closeLoaderModal();\n dispatch({ type: 'error', error: error.message });\n });\n }, []);\n const loginWithEmail = React.useCallback(() => {\n if (typeof state.email !== 'string' || state.email.length === 0 || !emailRef.current.validity.valid) {\n dispatch({ type: 'error', error: 'Invalid email' });\n return;\n }\n if (typeof state.password !== 'string' || state.password.length === 0) {\n dispatch({ type: 'error', error: 'Invalid password' });\n return;\n }\n openLoaderModal();\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'Authenticate',\n args: {\n type: 'Login',\n email: state.email,\n password: state.password\n }\n }\n });\n }, [state.email, state.password]);\n const loginAsGuest = React.useCallback(() => {\n if (!state.termsAccepted) {\n dispatch({ type: 'error', error: 'You must accept the Terms of Service' });\n return;\n }\n window.location = '#/';\n }, [state.termsAccepted]);\n const signup = React.useCallback(() => {\n if (typeof state.email !== 'string' || state.email.length === 0 || !emailRef.current.validity.valid) {\n dispatch({ type: 'error', error: 'Invalid email' });\n return;\n }\n if (typeof state.password !== 'string' || state.password.length === 0) {\n dispatch({ type: 'error', error: 'Invalid password' });\n return;\n }\n if (state.password !== state.confirmPassword) {\n dispatch({ type: 'error', error: 'Passwords do not match' });\n return;\n }\n if (!state.termsAccepted) {\n dispatch({ type: 'error', error: 'You must accept the Terms of Service' });\n return;\n }\n if (!state.privacyPolicyAccepted) {\n dispatch({ type: 'error', error: 'You must accept the Privacy Policy' });\n return;\n }\n openLoaderModal();\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'Authenticate',\n args: {\n type: 'Register',\n email: state.email,\n password: state.password,\n gdpr_consent: {\n tos: state.termsAccepted,\n privacy: state.privacyPolicyAccepted,\n marketing: state.marketingAccepted,\n from: 'web'\n }\n }\n }\n });\n }, [state.email, state.password, state.confirmPassword, state.termsAccepted, state.privacyPolicyAccepted, state.marketingAccepted]);\n const emailOnChange = React.useCallback((event) => {\n dispatch({\n type: 'change-credentials',\n name: 'email',\n value: event.currentTarget.value\n });\n }, []);\n const emailOnSubmit = React.useCallback(() => {\n passwordRef.current.focus();\n }, []);\n const passwordOnChange = React.useCallback((event) => {\n dispatch({\n type: 'change-credentials',\n name: 'password',\n value: event.currentTarget.value\n });\n }, []);\n const passwordOnSubmit = React.useCallback(() => {\n if (state.form === SIGNUP_FORM) {\n confirmPasswordRef.current.focus();\n } else {\n loginWithEmail();\n }\n }, [state.form, loginWithEmail]);\n const confirmPasswordOnChange = React.useCallback((event) => {\n dispatch({\n type: 'change-credentials',\n name: 'confirmPassword',\n value: event.currentTarget.value\n });\n }, []);\n const confirmPasswordOnSubmit = React.useCallback(() => {\n termsRef.current.focus();\n }, []);\n const toggleTermsAccepted = React.useCallback(() => {\n dispatch({ type: 'toggle-checkbox', name: 'termsAccepted' });\n }, []);\n const togglePrivacyPolicyAccepted = React.useCallback(() => {\n dispatch({ type: 'toggle-checkbox', name: 'privacyPolicyAccepted' });\n }, []);\n const toggleMarketingAccepted = React.useCallback(() => {\n dispatch({ type: 'toggle-checkbox', name: 'marketingAccepted' });\n }, []);\n const switchFormOnClick = React.useCallback(() => {\n const queryParams = new URLSearchParams([['form', state.form === SIGNUP_FORM ? LOGIN_FORM : SIGNUP_FORM]]);\n window.location = `#/intro?${queryParams.toString()}`;\n }, [state.form]);\n React.useEffect(() => {\n if ([LOGIN_FORM, SIGNUP_FORM].includes(queryParams.get('form'))) {\n dispatch({ type: 'set-form', form: queryParams.get('form') });\n }\n }, [queryParams]);\n React.useEffect(() => {\n if (routeFocused && typeof state.error === 'string' && state.error.length > 0) {\n errorRef.current.scrollIntoView();\n }\n }, [state.error]);\n React.useEffect(() => {\n if (routeFocused) {\n emailRef.current.focus();\n }\n }, [state.form, routeFocused]);\n React.useEffect(() => {\n const onCoreEvent = ({ event, args }) => {\n switch (event) {\n case 'UserAuthenticated': {\n closeLoaderModal();\n if (routeFocused) {\n window.location = '#/';\n }\n break;\n }\n case 'Error': {\n if (args.source.event === 'UserAuthenticated') {\n closeLoaderModal();\n }\n\n break;\n }\n }\n };\n core.transport.on('CoreEvent', onCoreEvent);\n return () => {\n core.transport.off('CoreEvent', onCoreEvent);\n };\n }, [routeFocused]);\n return (\n <div className={styles['intro-container']}>\n <div className={styles['form-container']}>\n <div className={styles['logo-container']}>\n <Image className={styles['logo']} src={require('/images/stremio_symbol.png')} alt={' '} />\n <Icon className={styles['name']} icon={'ic_stremio'} />\n </div>\n <Button className={classnames(styles['form-button'], styles['facebook-button'])} onClick={loginWithFacebook}>\n <Icon className={styles['icon']} icon={'ic_facebook'} />\n <div className={styles['label']}>Continue with Facebook</div>\n </Button>\n {\n state.form === SIGNUP_FORM ?\n <Button className={classnames(styles['form-button'], styles['login-form-button'])} onClick={switchFormOnClick}>\n Already have an account?\n {' '}\n <span className={styles['login-label']}>LOG IN</span>\n </Button>\n :\n null\n }\n <CredentialsTextInput\n ref={emailRef}\n className={styles['credentials-text-input']}\n type={'email'}\n placeholder={'Email'}\n value={state.email}\n onChange={emailOnChange}\n onSubmit={emailOnSubmit}\n />\n <CredentialsTextInput\n ref={passwordRef}\n className={styles['credentials-text-input']}\n type={'password'}\n placeholder={'Password'}\n value={state.password}\n onChange={passwordOnChange}\n onSubmit={passwordOnSubmit}\n />\n {\n state.form === SIGNUP_FORM ?\n <React.Fragment>\n <CredentialsTextInput\n ref={confirmPasswordRef}\n className={styles['credentials-text-input']}\n type={'password'}\n placeholder={'Confirm Password'}\n value={state.confirmPassword}\n onChange={confirmPasswordOnChange}\n onSubmit={confirmPasswordOnSubmit}\n />\n <ConsentCheckbox\n ref={termsRef}\n className={styles['consent-checkbox']}\n label={'I have read and agree with the Stremio'}\n link={'Terms and conditions'}\n href={'https://www.stremio.com/tos'}\n checked={state.termsAccepted}\n onToggle={toggleTermsAccepted}\n />\n <ConsentCheckbox\n ref={privacyPolicyRef}\n className={styles['consent-checkbox']}\n label={'I have read and agree with the Stremio'}\n link={'Privacy Policy'}\n href={'https://www.stremio.com/privacy'}\n checked={state.privacyPolicyAccepted}\n onToggle={togglePrivacyPolicyAccepted}\n />\n <ConsentCheckbox\n ref={marketingRef}\n className={styles['consent-checkbox']}\n label={'I agree to receive marketing communications from Stremio'}\n checked={state.marketingAccepted}\n onToggle={toggleMarketingAccepted}\n />\n </React.Fragment>\n :\n <div className={styles['forgot-password-link-container']}>\n <Button className={styles['forgot-password-link']} onClick={openPasswordRestModal}>Forgot password?</Button>\n </div>\n }\n {\n state.error.length > 0 ?\n <div ref={errorRef} className={styles['error-message']}>{state.error}</div>\n :\n null\n }\n <Button className={classnames(styles['form-button'], styles['submit-button'])} onClick={state.form === SIGNUP_FORM ? signup : loginWithEmail}>\n <div className={styles['label']}>{state.form === SIGNUP_FORM ? 'Sign up' : 'Log in'}</div>\n </Button>\n {\n state.form === SIGNUP_FORM ?\n <Button className={classnames(styles['form-button'], styles['guest-login-button'])} onClick={loginAsGuest}>\n <div className={styles['label']}>GUEST LOGIN</div>\n </Button>\n :\n null\n }\n {\n state.form === LOGIN_FORM ?\n <Button className={classnames(styles['form-button'], styles['signup-form-button'])} onClick={switchFormOnClick}>\n <div className={styles['label']}>SIGN UP WITH EMAIL</div>\n </Button>\n :\n null\n }\n </div>\n {\n passwordRestModalOpen ?\n <PasswordResetModal email={state.email} onCloseRequest={closePasswordResetModal} />\n :\n null\n }\n {\n loaderModalOpen ?\n <Modal className={styles['loading-modal-container']}>\n <div className={styles['loader-container']}>\n <Icon className={styles['icon']} icon={'ic_user'} />\n <div className={styles['label']}>Authenticating...</div>\n </div>\n </Modal>\n :\n null\n }\n </div>\n );\n};\n\nIntro.propTypes = {\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nmodule.exports = Intro;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst { useRouteFocused } = require('stremio-router');\nconst { ModalDialog } = require('stremio/common');\nconst CredentialsTextInput = require('../CredentialsTextInput');\nconst styles = require('./styles');\n\nconst PasswordResetModal = ({ email, onCloseRequest }) => {\n const routeFocused = useRouteFocused();\n const [error, setError] = React.useState('');\n const emailRef = React.useRef(null);\n const goToPasswordReset = React.useCallback(() => {\n emailRef.current.value.length > 0 && emailRef.current.validity.valid ?\n window.open('https://www.strem.io/reset-password/' + emailRef.current.value, '_blank')\n :\n setError('Invalid email');\n }, []);\n const passwordResetModalButtons = React.useMemo(() => {\n return [\n {\n className: styles['cancel-button'],\n label: 'Cancel',\n props: {\n onClick: onCloseRequest\n }\n },\n {\n label: 'Send',\n props: {\n onClick: goToPasswordReset\n }\n }\n ];\n }, [onCloseRequest]);\n const emailOnChange = React.useCallback(() => {\n setError('');\n }, []);\n React.useEffect(() => {\n if (routeFocused) {\n emailRef.current.focus();\n }\n }, [routeFocused]);\n return (\n <ModalDialog className={styles['password-reset-modal-container']} title={'Password reset'} buttons={passwordResetModalButtons} onCloseRequest={onCloseRequest}>\n <CredentialsTextInput\n ref={emailRef}\n className={styles['credentials-text-input']}\n type={'email'}\n placeholder={'Email'}\n defaultValue={typeof email === 'string' ? email : ''}\n onChange={emailOnChange}\n onSubmit={goToPasswordReset}\n />\n {\n error.length > 0 ?\n <div className={styles['error-message']}>{error}</div>\n :\n null\n }\n </ModalDialog>\n );\n};\n\nPasswordResetModal.propTypes = {\n email: PropTypes.string,\n onCloseRequest: PropTypes.func\n};\n\nmodule.exports = PasswordResetModal;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst PasswordResetModal = require('./PasswordResetModal');\n\nmodule.exports = PasswordResetModal;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Intro = require('./Intro');\n\nmodule.exports = Intro;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useFacebookToken = () => {\n const getToken = React.useCallback(() => {\n return new Promise((resolve, reject) => {\n if (typeof FB === 'undefined') {\n reject(new Error('Failed to connect to Facebook'));\n return;\n }\n\n FB.getLoginStatus((resp) => {\n if (resp && resp.authResponse && typeof resp.authResponse.accessToken === 'string') {\n resolve(resp.authResponse.accessToken);\n return;\n }\n\n FB.login((resp) => {\n if (!resp || !resp.authResponse || typeof resp.authResponse.accessToken !== 'string') {\n reject(new Error('Failed to get token from Facebook'));\n return;\n }\n\n resolve(resp.authResponse.accessToken);\n });\n });\n });\n }, []);\n React.useEffect(() => {\n window.fbAsyncInit = function() {\n FB.init({\n appId: '1537119779906825',\n status: true,\n xfbml: false,\n version: 'v2.7'\n });\n };\n const sdkScriptElement = document.createElement('script');\n sdkScriptElement.src = 'https://connect.facebook.net/en_US/sdk.js';\n sdkScriptElement.async = true;\n sdkScriptElement.defer = true;\n document.body.appendChild(sdkScriptElement);\n return () => {\n document.body.removeChild(sdkScriptElement);\n };\n }, []);\n return getToken;\n};\n\nmodule.exports = useFacebookToken;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst NotFound = require('stremio/routes/NotFound');\nconst { Button, DelayedRenderer, Multiselect, MainNavBars, LibItem, Image, ModalDialog, PaginationInput, useProfile, routesRegexp, useBinaryState, withCoreSuspender } = require('stremio/common');\nconst useLibrary = require('./useLibrary');\nconst useSelectableInputs = require('./useSelectableInputs');\nconst styles = require('./styles');\n\nfunction withModel(Library) {\n const withModel = ({ urlParams, queryParams }) => {\n const model = React.useMemo(() => {\n return typeof urlParams.path === 'string' ?\n urlParams.path.match(routesRegexp.library.regexp) ?\n 'library'\n :\n urlParams.path.match(routesRegexp.continuewatching.regexp) ?\n 'continue_watching'\n :\n null\n :\n null;\n }, [urlParams.path]);\n if (model === null) {\n return (\n <NotFound />\n );\n }\n\n return (\n <Library\n key={model}\n model={model}\n urlParams={urlParams}\n queryParams={queryParams}\n />\n );\n };\n withModel.displayName = 'withModel';\n return withModel;\n}\n\nconst Library = ({ model, urlParams, queryParams }) => {\n const profile = useProfile();\n const library = useLibrary(model, urlParams, queryParams);\n const [typeSelect, sortSelect, paginationInput] = useSelectableInputs(library);\n const [inputsModalOpen, openInputsModal, closeInputsModal] = useBinaryState(false);\n return (\n <MainNavBars className={styles['library-container']} route={model}>\n <div className={styles['library-content']}>\n {\n model === 'continue_watching' || profile.auth !== null ?\n <div className={styles['selectable-inputs-container']}>\n <Multiselect {...typeSelect} className={styles['select-input-container']} />\n <Multiselect {...sortSelect} className={styles['select-input-container']} />\n <div className={styles['spacing']} />\n {\n paginationInput !== null ?\n <PaginationInput {...paginationInput} className={styles['pagination-input']} />\n :\n <PaginationInput label={'1'} className={classnames(styles['pagination-input'], styles['pagination-input-placeholder'])} />\n }\n <Button className={styles['filter-container']} title={'All filters'} onClick={openInputsModal}>\n <Icon className={styles['filter-icon']} icon={'ic_filter'} />\n </Button>\n </div>\n :\n null\n }\n {\n model === 'library' && profile.auth === null ?\n <div className={classnames(styles['message-container'], styles['no-user-message-container'])}>\n <Image\n className={styles['image']}\n src={require('/images/anonymous.png')}\n alt={' '}\n />\n <Button className={styles['login-button-container']} href={'#/intro'}>\n <div className={styles['label']}>LOG IN</div>\n </Button>\n <div className={styles['message-label']}>Library is only available for logged in users!</div>\n </div>\n :\n library.selected === null ?\n <DelayedRenderer delay={500}>\n <div className={styles['message-container']}>\n <Image\n className={styles['image']}\n src={require('/images/empty.png')}\n alt={' '}\n />\n <div className={styles['message-label']}>{model === 'library' ? 'Library' : 'Continue Watching'} not loaded!</div>\n </div>\n </DelayedRenderer>\n :\n library.catalog.length === 0 ?\n <div className={styles['message-container']}>\n <Image\n className={styles['image']}\n src={require('/images/empty.png')}\n alt={' '}\n />\n <div className={styles['message-label']}>Empty {model === 'library' ? 'Library' : 'Continue Watching'}</div>\n </div>\n :\n <div className={classnames(styles['meta-items-container'], 'animation-fade-in')}>\n {library.catalog.map((libItem, index) => (\n <LibItem {...libItem} removable={model === 'library'} key={index} />\n ))}\n </div>\n }\n </div>\n {\n inputsModalOpen ?\n <ModalDialog title={'Library filters'} className={styles['selectable-inputs-modal']} onCloseRequest={closeInputsModal}>\n <Multiselect {...typeSelect} className={styles['select-input-container']} />\n <Multiselect {...sortSelect} className={styles['select-input-container']} />\n </ModalDialog>\n :\n null\n }\n </MainNavBars>\n );\n};\n\nLibrary.propTypes = {\n model: PropTypes.oneOf(['library', 'continue_watching']),\n urlParams: PropTypes.shape({\n type: PropTypes.string\n }),\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nconst LibraryFallback = ({ model }) => (\n <MainNavBars className={styles['library-container']} route={model} />\n);\n\nLibraryFallback.propTypes = Library.propTypes;\n\nmodule.exports = withModel(withCoreSuspender(Library, LibraryFallback));\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Library = require('./Library');\n\nmodule.exports = Library;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useModelState } = require('stremio/common');\n\nconst useLibrary = (model, urlParams, queryParams) => {\n const action = React.useMemo(() => ({\n action: 'Load',\n args: {\n model: 'LibraryWithFilters',\n args: {\n request: {\n type: typeof urlParams.type === 'string' ? urlParams.type : null,\n sort: queryParams.has('sort') ? queryParams.get('sort') : undefined,\n page: queryParams.has('page') ? parseInt(queryParams.get('page'), 10) : undefined\n }\n }\n }\n }), [urlParams, queryParams]);\n return useModelState({ model, action });\n};\n\nmodule.exports = useLibrary;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useTranslation } = require('react-i18next');\nconst { translateOption } = require('stremio/common');\n\nconst mapSelectableInputs = (library, t) => {\n const typeSelect = {\n title: t('SELECT_TYPE'),\n options: library.selectable.types\n .map(({ type, deepLinks }) => ({\n value: deepLinks.library,\n label: type === null ? t('TYPE_ALL') : translateOption(type, 'TYPE_')\n })),\n selected: library.selectable.types\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.library),\n onSelect: (event) => {\n window.location = event.value;\n }\n };\n const sortSelect = {\n title: t('SELECT_SORT'),\n options: library.selectable.sorts\n .map(({ sort, deepLinks }) => ({\n value: deepLinks.library,\n label: translateOption(sort, 'SORT_')\n })),\n selected: library.selectable.sorts\n .filter(({ selected }) => selected)\n .map(({ deepLinks }) => deepLinks.library),\n onSelect: (event) => {\n window.location = event.value;\n }\n };\n const paginationInput = library.selectable.prevPage || library.selectable.nextPage ?\n {\n label: library.selected.request.page.toString(),\n onSelect: (event) => {\n if (event.value === 'prev' && library.selectable.prevPage) {\n window.location = library.selectable.prevPage.deepLinks.library;\n }\n if (event.value === 'next' && library.selectable.nextPage) {\n window.location = library.selectable.nextPage.deepLinks.library;\n }\n }\n }\n :\n null;\n return [typeSelect, sortSelect, paginationInput];\n};\n\nconst useSelectableInputs = (library) => {\n const { t } = useTranslation();\n const selectableInputs = React.useMemo(() => {\n return mapSelectableInputs(library, t);\n }, [library]);\n return selectableInputs;\n};\n\nmodule.exports = useSelectableInputs;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useServices } = require('stremio/services');\nconst { VerticalNavBar, HorizontalNavBar, MetaPreview, ModalDialog, Image, DelayedRenderer, withCoreSuspender } = require('stremio/common');\nconst StreamsList = require('./StreamsList');\nconst VideosList = require('./VideosList');\nconst useMetaDetails = require('./useMetaDetails');\nconst useSeason = require('./useSeason');\nconst useMetaExtensionTabs = require('./useMetaExtensionTabs');\nconst styles = require('./styles');\n\nconst MetaDetails = ({ urlParams, queryParams }) => {\n const { core } = useServices();\n const metaDetails = useMetaDetails(urlParams);\n const [season, setSeason] = useSeason(urlParams, queryParams);\n const [tabs, metaExtension, clearMetaExtension] = useMetaExtensionTabs(metaDetails.metaExtensions);\n const [metaPath, streamPath] = React.useMemo(() => {\n return metaDetails.selected !== null ?\n [metaDetails.selected.metaPath, metaDetails.selected.streamPath]\n :\n [null, null];\n }, [metaDetails.selected]);\n const video = React.useMemo(() => {\n return streamPath !== null && metaDetails.metaItem !== null && metaDetails.metaItem.content.type === 'Ready' ?\n metaDetails.metaItem.content.content.videos.reduce((result, video) => {\n if (video.id === streamPath.id) {\n return video;\n }\n\n return result;\n }, null)\n :\n null;\n }, [metaDetails.metaItem, streamPath]);\n const addToLibrary = React.useCallback(() => {\n if (metaDetails.metaItem === null || metaDetails.metaItem.content.type !== 'Ready') {\n return;\n }\n\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'AddToLibrary',\n args: metaDetails.metaItem.content.content\n }\n });\n }, [metaDetails]);\n const removeFromLibrary = React.useCallback(() => {\n if (metaDetails.metaItem === null || metaDetails.metaItem.content.type !== 'Ready') {\n return;\n }\n\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'RemoveFromLibrary',\n args: metaDetails.metaItem.content.content.id\n }\n });\n }, [metaDetails]);\n const seasonOnSelect = React.useCallback((event) => {\n setSeason(event.value);\n }, [setSeason]);\n const renderBackgroundImageFallback = React.useCallback(() => null, []);\n return (\n <div className={styles['metadetails-container']}>\n <HorizontalNavBar\n className={styles['nav-bar']}\n backButton={true}\n addonsButton={true}\n fullscreenButton={true}\n navMenu={true}\n />\n <div className={styles['metadetails-content']}>\n {\n tabs.length > 0 ?\n <VerticalNavBar\n className={styles['vertical-nav-bar']}\n tabs={tabs}\n selected={metaExtension !== null ? metaExtension.url : null}\n />\n :\n null\n }\n {\n metaPath === null ?\n <DelayedRenderer delay={500}>\n <div className={styles['meta-message-container']}>\n <Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />\n <div className={styles['message-label']}>No meta was selected!</div>\n </div>\n </DelayedRenderer>\n :\n metaDetails.metaItem === null ?\n <div className={styles['meta-message-container']}>\n <Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />\n <div className={styles['message-label']}>No addons ware requested for this meta!</div>\n </div>\n :\n metaDetails.metaItem.content.type === 'Err' ?\n <div className={styles['meta-message-container']}>\n <Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />\n <div className={styles['message-label']}>No metadata was found!</div>\n </div>\n :\n metaDetails.metaItem.content.type === 'Loading' ?\n <MetaPreview.Placeholder className={styles['meta-preview']} />\n :\n <React.Fragment>\n {\n typeof metaDetails.metaItem.content.content.background === 'string' &&\n metaDetails.metaItem.content.content.background.length > 0 ?\n <div className={styles['background-image-layer']}>\n <Image\n className={styles['background-image']}\n src={metaDetails.metaItem.content.content.background}\n renderFallback={renderBackgroundImageFallback}\n alt={' '}\n />\n </div>\n :\n null\n }\n <MetaPreview\n className={classnames(styles['meta-preview'], 'animation-fade-in')}\n name={metaDetails.metaItem.content.content.name}\n logo={metaDetails.metaItem.content.content.logo}\n runtime={metaDetails.metaItem.content.content.runtime}\n releaseInfo={metaDetails.metaItem.content.content.releaseInfo}\n released={metaDetails.metaItem.content.content.released}\n description={\n video !== null && typeof video.overview === 'string' && video.overview.length > 0 ?\n video.overview\n :\n metaDetails.metaItem.content.content.description\n }\n links={metaDetails.metaItem.content.content.links}\n trailerStreams={metaDetails.metaItem.content.content.trailerStreams}\n inLibrary={metaDetails.metaItem.content.content.inLibrary}\n toggleInLibrary={metaDetails.metaItem.content.content.inLibrary ? removeFromLibrary : addToLibrary}\n />\n </React.Fragment>\n }\n <div className={styles['spacing']} />\n {\n streamPath !== null ?\n <StreamsList\n className={styles['streams-list']}\n streams={metaDetails.streams}\n />\n :\n metaPath !== null ?\n <VideosList\n className={styles['videos-list']}\n metaItem={metaDetails.metaItem}\n season={season}\n seasonOnSelect={seasonOnSelect}\n />\n :\n null\n }\n </div>\n {\n metaExtension !== null ?\n <ModalDialog\n className={styles['meta-extension-modal-container']}\n title={metaExtension.name}\n onCloseRequest={clearMetaExtension}>\n <iframe\n className={styles['meta-extension-modal-iframe']}\n sandbox={'allow-forms allow-scripts allow-same-origin'}\n src={metaExtension.url}\n />\n </ModalDialog>\n :\n null\n }\n </div>\n );\n};\n\nMetaDetails.propTypes = {\n urlParams: PropTypes.shape({\n type: PropTypes.string,\n id: PropTypes.string,\n videoId: PropTypes.string\n }),\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nconst MetaDetailsFallback = () => (\n <div className={styles['metadetails-container']}>\n <HorizontalNavBar\n className={styles['nav-bar']}\n backButton={true}\n addonsButton={true}\n fullscreenButton={true}\n navMenu={true}\n />\n </div>\n);\n\nmodule.exports = withCoreSuspender(MetaDetails, MetaDetailsFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button, Image, PlayIconCircleCentered, useProfile, platform, useStreamingServer, useToast } = require('stremio/common');\nconst { useServices } = require('stremio/services');\nconst StreamPlaceholder = require('./StreamPlaceholder');\nconst styles = require('./styles');\n\nconst Stream = ({ className, addonName, name, description, thumbnail, progress, deepLinks, ...props }) => {\n const profile = useProfile();\n const streamingServer = useStreamingServer();\n const { core } = useServices();\n const toast = useToast();\n const href = React.useMemo(() => {\n const haveStreamingServer = streamingServer.settings !== null && streamingServer.settings.type === 'Ready';\n return deepLinks ?\n profile.settings.playerType && profile.settings.playerType !== 'internal' ?\n platform.isMobile() || !haveStreamingServer ?\n (deepLinks.externalPlayer.openPlayer || {})[platform.name] || deepLinks.externalPlayer.href\n : null\n :\n typeof deepLinks.player === 'string' ?\n deepLinks.player\n :\n null\n :\n null;\n }, [deepLinks, profile, streamingServer]);\n const onClick = React.useCallback((e) => {\n if (href === null) {\n // link does not lead to the player, it is expected to\n // open with local video player through the streaming server\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'PlayOnDevice',\n args: {\n device: 'vlc',\n source: deepLinks.externalPlayer.streaming\n }\n }\n });\n } else if (profile.settings.playerType === 'external') {\n toast.show({\n type: 'success',\n title: 'Stream opened in external player',\n timeout: 4000\n });\n }\n props.onClick(e);\n }, [href, deepLinks, props.onClick, profile, toast]);\n const forceDownload = React.useMemo(() => {\n // we only do this in one case to force the download\n // of a M3U playlist generated in the browser\n return href === deepLinks.externalPlayer.href ? deepLinks.externalPlayer.fileName : false;\n }, [href]);\n const renderThumbnailFallback = React.useCallback(() => (\n <Icon className={styles['placeholder-icon']} icon={'ic_broken_link'} />\n ), []);\n return (\n <Button href={href} download={forceDownload} {...props} onClick={onClick} className={classnames(className, styles['stream-container'])} title={addonName}>\n {\n typeof thumbnail === 'string' && thumbnail.length > 0 ?\n <div className={styles['thumbnail-container']} title={name || addonName}>\n <Image\n className={styles['thumbnail']}\n src={thumbnail}\n alt={' '}\n renderFallback={renderThumbnailFallback}\n />\n </div>\n :\n <div className={styles['addon-name-container']} title={name || addonName}>\n <div className={styles['addon-name']}>{name || addonName}</div>\n </div>\n }\n <div className={styles['info-container']} title={description}>{description}</div>\n <PlayIconCircleCentered className={styles['play-icon']} />\n {\n progress !== null && !isNaN(progress) && progress > 0 ?\n <div className={styles['progress-bar-container']}>\n <div className={styles['progress-bar']} style={{ width: `${Math.min(progress, 1) * 100}%` }} />\n </div>\n :\n null\n }\n </Button>\n );\n};\n\nStream.Placeholder = StreamPlaceholder;\n\nStream.propTypes = {\n className: PropTypes.string,\n addonName: PropTypes.string,\n name: PropTypes.string,\n description: PropTypes.string,\n thumbnail: PropTypes.string,\n progress: PropTypes.number,\n deepLinks: PropTypes.shape({\n player: PropTypes.string,\n externalPlayer: PropTypes.shape({\n href: PropTypes.string,\n fileName: PropTypes.string,\n streaming: PropTypes.string,\n openPlayer: PropTypes.shape({\n choose: {\n ios: PropTypes.string,\n android: PropTypes.string,\n windows: PropTypes.string,\n macos: PropTypes.string,\n linux: PropTypes.string\n },\n vlc: {\n ios: PropTypes.string,\n android: PropTypes.string,\n windows: PropTypes.string,\n macos: PropTypes.string,\n linux: PropTypes.string\n },\n outplayer: {\n ios: PropTypes.string,\n android: PropTypes.string,\n windows: PropTypes.string,\n macos: PropTypes.string,\n linux: PropTypes.string\n },\n infuse: {\n ios: PropTypes.string,\n android: PropTypes.string,\n windows: PropTypes.string,\n macos: PropTypes.string,\n linux: PropTypes.string\n },\n justplayer: {\n ios: PropTypes.string,\n android: PropTypes.string,\n windows: PropTypes.string,\n macos: PropTypes.string,\n linux: PropTypes.string\n },\n mxplayer: {\n ios: PropTypes.string,\n android: PropTypes.string,\n windows: PropTypes.string,\n macos: PropTypes.string,\n linux: PropTypes.string\n },\n })\n })\n }),\n onClick: PropTypes.func\n};\n\nmodule.exports = Stream;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst PlayIconCircleCentered = require('stremio/common/PlayIconCircleCentered');\nconst styles = require('./styles');\n\nconst StreamPlaceholder = ({ className }) => {\n return (\n <div className={classnames(className, styles['stream-placeholder-container'])}>\n <div className={styles['addon-container']}>\n <div className={styles['addon-name']} />\n </div>\n <div className={styles['info-container']}>\n <div className={styles['description-container']} />\n <div className={styles['description-container']} />\n </div>\n <PlayIconCircleCentered className={styles['play-icon']} />\n </div>\n );\n};\n\nStreamPlaceholder.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = StreamPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst StreamPlaceholder = require('./StreamPlaceholder');\n\nmodule.exports = StreamPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Stream = require('./Stream');\n\nmodule.exports = Stream;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button, Image, Multiselect } = require('stremio/common');\nconst { useServices } = require('stremio/services');\nconst Stream = require('./Stream');\nconst styles = require('./styles');\n\nconst ALL_ADDONS_KEY = 'ALL';\n\nconst StreamsList = ({ className, ...props }) => {\n const { t } = useTranslation();\n const { core } = useServices();\n const [selectedAddon, setSelectedAddon] = React.useState(ALL_ADDONS_KEY);\n const onAddonSelected = React.useCallback((event) => {\n setSelectedAddon(event.value);\n }, []);\n const streamsByAddon = React.useMemo(() => {\n return props.streams\n .filter((streams) => streams.content.type === 'Ready')\n .reduce((streamsByAddon, streams) => {\n streamsByAddon[streams.addon.transportUrl] = {\n addon: streams.addon,\n streams: streams.content.content.map((stream) => ({\n ...stream,\n onClick: () => {\n core.transport.analytics({\n event: 'StreamClicked',\n args: {\n stream\n }\n });\n },\n addonName: streams.addon.manifest.name\n }))\n };\n\n return streamsByAddon;\n }, {});\n }, [props.streams]);\n const filteredStreams = React.useMemo(() => {\n return selectedAddon === ALL_ADDONS_KEY ?\n Object.values(streamsByAddon).map(({ streams }) => streams).flat(1)\n :\n streamsByAddon[selectedAddon] ?\n streamsByAddon[selectedAddon].streams\n :\n [];\n }, [streamsByAddon, selectedAddon]);\n const selectableOptions = React.useMemo(() => {\n return {\n title: 'Select Addon',\n options: [\n {\n value: ALL_ADDONS_KEY,\n label: t('ALL_ADDONS'),\n title: t('ALL_ADDONS')\n },\n ...Object.keys(streamsByAddon).map((transportUrl) => ({\n value: transportUrl,\n label: streamsByAddon[transportUrl].addon.manifest.name,\n title: streamsByAddon[transportUrl].addon.manifest.name,\n }))\n ],\n selected: [selectedAddon],\n onSelect: onAddonSelected\n };\n }, [streamsByAddon, selectedAddon]);\n return (\n <div className={classnames(className, styles['streams-list-container'])}>\n {\n props.streams.length === 0 ?\n <div className={styles['message-container']}>\n <Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />\n <div className={styles['label']}>No addons were requested for streams!</div>\n </div>\n :\n props.streams.every((streams) => streams.content.type === 'Err') ?\n <div className={styles['message-container']}>\n <Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />\n <div className={styles['label']}>{t('NO_STREAM')}</div>\n </div>\n :\n filteredStreams.length === 0 ?\n <div className={styles['streams-container']}>\n <Stream.Placeholder />\n <Stream.Placeholder />\n </div>\n :\n <React.Fragment>\n {\n Object.keys(streamsByAddon).length > 1 ?\n <Multiselect\n {...selectableOptions}\n className={styles['select-input-container']}\n />\n :\n null\n }\n <div className={styles['streams-container']}>\n {filteredStreams.map((stream, index) => (\n <Stream\n key={index}\n addonName={stream.addonName}\n name={stream.name}\n description={stream.description}\n thumbnail={stream.thumbnail}\n progress={stream.progress}\n deepLinks={stream.deepLinks}\n onClick={stream.onClick}\n />\n ))}\n </div>\n </React.Fragment>\n }\n <Button className={styles['install-button-container']} title={t('ADDON_CATALOGUE_MORE')} href={'#/addons'}>\n <Icon className={styles['icon']} icon={'ic_addons'} />\n <div className={styles['label']}>{ t('ADDON_CATALOGUE_MORE') }</div>\n </Button>\n </div>\n );\n};\n\nStreamsList.propTypes = {\n className: PropTypes.string,\n streams: PropTypes.arrayOf(PropTypes.object).isRequired\n};\n\nmodule.exports = StreamsList;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst StreamsList = require('./StreamsList');\n\nmodule.exports = StreamsList;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { t } = require('i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button, Multiselect } = require('stremio/common');\nconst SeasonsBarPlaceholder = require('./SeasonsBarPlaceholder');\nconst styles = require('./styles');\n\nconst SeasonsBar = ({ className, seasons, season, onSelect }) => {\n const options = React.useMemo(() => {\n return seasons.map((season) => ({\n value: String(season),\n label: season > 0 ? `${t('SEASON')} ${season}` : t('SPECIAL')\n }));\n }, [seasons]);\n const selected = React.useMemo(() => {\n return [String(season)];\n }, [season]);\n const prevNextButtonOnClick = React.useCallback((event) => {\n if (typeof onSelect === 'function') {\n const seasonIndex = seasons.indexOf(season);\n const valueIndex = event.currentTarget.dataset.action === 'next' ?\n seasonIndex + 1 < seasons.length ? seasonIndex + 1 : seasons.length - 1\n :\n seasonIndex - 1 >= 0 ? seasonIndex - 1 : 0;\n const value = seasons[valueIndex];\n onSelect({\n type: 'select',\n value: value,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [season, seasons, onSelect]);\n const seasonOnSelect = React.useCallback((event) => {\n const value = parseFloat(event.value);\n if (typeof onSelect === 'function') {\n onSelect({\n type: 'select',\n value: value,\n reactEvent: event.reactEvent,\n nativeEvent: event.nativeEvent\n });\n }\n }, [onSelect]);\n return (\n <div className={classnames(className, styles['seasons-bar-container'])}>\n <Button className={styles['prev-season-button']} title={'Previous season'} data-action={'prev'} onClick={prevNextButtonOnClick}>\n <Icon className={styles['icon']} icon={'ic_arrow_thin_left'} />\n <div className={styles['label']}>Prev</div>\n </Button>\n <Multiselect\n className={styles['seasons-popup-label-container']}\n title={season > 0 ? `${t('SEASON')} ${season}` : t('SPECIAL')}\n direction={'bottom-left'}\n options={options}\n selected={selected}\n onSelect={seasonOnSelect}\n />\n <Button className={styles['next-season-button']} title={'Next season'} data-action={'next'} onClick={prevNextButtonOnClick}>\n <div className={styles['label']}>Next</div>\n <Icon className={styles['icon']} icon={'ic_arrow_thin_right'} />\n </Button>\n </div>\n );\n};\n\nSeasonsBar.Placeholder = SeasonsBarPlaceholder;\n\nSeasonsBar.propTypes = {\n className: PropTypes.string,\n seasons: PropTypes.arrayOf(PropTypes.number).isRequired,\n season: PropTypes.number.isRequired,\n onSelect: PropTypes.func\n};\n\nmodule.exports = SeasonsBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst styles = require('./styles');\n\nconst SeasonsBarPlaceholder = ({ className }) => {\n return (\n <div className={classnames(className, styles['seasons-bar-placeholder-container'])}>\n <div className={styles['prev-season-button']}>\n <Icon className={styles['icon']} icon={'ic_arrow_thin_left'} />\n <div className={styles['label']}>Prev</div>\n </div>\n <div className={styles['seasons-popup-label-container']}>\n <div className={styles['seasons-popup-label']}>Season 1</div>\n <Icon className={styles['seasons-popup-icon']} icon={'ic_arrow_thin_down'} />\n </div>\n <div className={styles['next-season-button']}>\n <div className={styles['label']}>Next</div>\n <Icon className={styles['icon']} icon={'ic_arrow_thin_right'} />\n </div>\n </div>\n );\n};\n\nSeasonsBarPlaceholder.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = SeasonsBarPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SeasonsBarPlaceholder = require('./SeasonsBarPlaceholder');\n\nmodule.exports = SeasonsBarPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SeasonsBar = require('./SeasonsBar');\n\nmodule.exports = SeasonsBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { t } = require('i18next');\nconst { useServices } = require('stremio/services');\nconst { useRouteFocused } = require('stremio-router');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button, Image, Popup, useBinaryState } = require('stremio/common');\nconst VideoPlaceholder = require('./VideoPlaceholder');\nconst styles = require('./styles');\n\nconst Video = ({ className, id, title, thumbnail, episode, released, upcoming, watched, progress, scheduled, deepLinks, ...props }) => {\n const { core } = useServices();\n const routeFocused = useRouteFocused();\n const [menuOpen, , closeMenu, toggleMenu] = useBinaryState(false);\n const popupLabelOnMouseUp = React.useCallback((event) => {\n if (!event.nativeEvent.togglePopupPrevented) {\n if (event.nativeEvent.ctrlKey || event.nativeEvent.button === 2) {\n event.preventDefault();\n toggleMenu();\n }\n }\n }, []);\n const popupLabelOnContextMenu = React.useCallback((event) => {\n if (!event.nativeEvent.togglePopupPrevented && !event.nativeEvent.ctrlKey) {\n event.preventDefault();\n }\n }, [toggleMenu]);\n const popupLabelOnLongPress = React.useCallback((event) => {\n if (event.nativeEvent.pointerType !== 'mouse' && !event.nativeEvent.togglePopupPrevented) {\n toggleMenu();\n }\n }, [toggleMenu]);\n const popupMenuOnPointerDown = React.useCallback((event) => {\n event.nativeEvent.togglePopupPrevented = true;\n }, []);\n const popupMenuOnContextMenu = React.useCallback((event) => {\n event.nativeEvent.togglePopupPrevented = true;\n }, []);\n const popupMenuOnClick = React.useCallback((event) => {\n event.nativeEvent.togglePopupPrevented = true;\n }, []);\n const popupMenuOnKeyDown = React.useCallback((event) => {\n event.nativeEvent.buttonClickPrevented = true;\n }, []);\n const toggleWatchedOnClick = React.useCallback((event) => {\n event.preventDefault();\n closeMenu();\n core.transport.dispatch({\n action: 'MetaDetails',\n args: {\n action: 'MarkVideoAsWatched',\n args: [id, !watched]\n }\n });\n }, [id, watched]);\n const href = React.useMemo(() => {\n return deepLinks ?\n typeof deepLinks.player === 'string' ?\n deepLinks.player\n :\n typeof deepLinks.metaDetailsStreams === 'string' ?\n deepLinks.metaDetailsStreams\n :\n null\n :\n null;\n }, [deepLinks]);\n const renderLabel = React.useMemo(() => function renderLabel({ className, id, title, thumbnail, episode, released, upcoming, watched, progress, scheduled, children, ...props }) {\n return (\n <Button {...props} className={classnames(className, styles['video-container'])} title={title}>\n {\n typeof thumbnail === 'string' && thumbnail.length > 0 ?\n <div className={styles['thumbnail-container']}>\n <Image\n className={styles['thumbnail']}\n src={thumbnail}\n alt={' '}\n renderFallback={() => (\n <Icon\n className={styles['placeholder-icon']}\n icon={'ic_stremio_tray'}\n />\n )}\n />\n </div>\n :\n null\n }\n <div className={styles['info-container']}>\n <div className={styles['title-container']}>\n {episode !== null && !isNaN(episode) ? `${episode}. ` : null}\n {typeof title === 'string' && title.length > 0 ? title : id}\n </div>\n <div className={styles['flex-row-container']}>\n {\n released instanceof Date && !isNaN(released.getTime()) ?\n <div className={styles['released-container']}>\n {released.toLocaleString(undefined, { year: 'numeric', month: 'short', day: 'numeric' })}\n </div>\n :\n scheduled ?\n <div className={styles['released-container']} title={'To be announced'}>\n TBA\n </div>\n :\n null\n }\n <div className={styles['upcoming-watched-container']}>\n {\n upcoming ?\n <div className={styles['upcoming-container']}>\n <div className={styles['flag-label']}>Upcoming</div>\n </div>\n :\n null\n }\n {\n watched ?\n <div className={styles['watched-container']}>\n <div className={styles['flag-label']}>Watched</div>\n </div>\n :\n null\n }\n </div>\n </div>\n </div>\n {\n progress !== null && !isNaN(progress) && progress > 0 ?\n <div className={styles['progress-bar-container']}>\n <div className={styles['progress-bar']} style={{ width: `${Math.min(progress, 1) * 100}%` }} />\n </div>\n :\n null\n }\n {children}\n </Button>\n );\n }, []);\n const renderMenu = React.useMemo(() => function renderMenu() {\n return (\n <div className={styles['context-menu-content']} onPointerDown={popupMenuOnPointerDown} onContextMenu={popupMenuOnContextMenu} onClick={popupMenuOnClick} onKeyDown={popupMenuOnKeyDown}>\n <Button className={styles['context-menu-option-container']} title={'Watch'}>\n <div className={styles['context-menu-option-label']}>{t('CTX_WATCH')}</div>\n </Button>\n <Button className={styles['context-menu-option-container']} title={watched ? 'Mark as non-watched' : 'Mark as watched'} onClick={toggleWatchedOnClick}>\n <div className={styles['context-menu-option-label']}>{watched ? t('CTX_MARK_NON_WATCHED') : t('CTX_MARK_WATCHED')}</div>\n </Button>\n </div>\n );\n }, [watched, toggleWatchedOnClick]);\n React.useEffect(() => {\n if (!routeFocused) {\n closeMenu();\n }\n }, [routeFocused]);\n return (\n <Popup\n className={className}\n id={id}\n title={title}\n thumbnail={thumbnail}\n episode={episode}\n released={released}\n upcoming={upcoming}\n watched={watched}\n progress={progress}\n scheduled={scheduled}\n href={href}\n {...props}\n onMouseUp={popupLabelOnMouseUp}\n onLongPress={popupLabelOnLongPress}\n onContextMenu={popupLabelOnContextMenu}\n open={menuOpen}\n onCloseRequest={closeMenu}\n renderLabel={renderLabel}\n renderMenu={renderMenu}\n />\n );\n};\n\nVideo.Placeholder = VideoPlaceholder;\n\nVideo.propTypes = {\n className: PropTypes.string,\n id: PropTypes.string,\n title: PropTypes.string,\n thumbnail: PropTypes.string,\n episode: PropTypes.number,\n released: PropTypes.instanceOf(Date),\n upcoming: PropTypes.bool,\n watched: PropTypes.bool,\n progress: PropTypes.number,\n scheduled: PropTypes.bool,\n deepLinks: PropTypes.shape({\n metaDetailsStreams: PropTypes.string,\n player: PropTypes.string\n })\n};\n\nmodule.exports = Video;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst styles = require('./styles');\n\nconst VideoPlaceholder = ({ className }) => {\n return (\n <div className={classnames(className, styles['video-placeholder-container'])}>\n <div className={styles['info-container']}>\n <div className={styles['name-container']} />\n <div className={styles['released-container']} />\n </div>\n </div>\n );\n};\n\nVideoPlaceholder.propTypes = {\n className: PropTypes.string\n};\n\nmodule.exports = VideoPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst VideoPlaceholder = require('./VideoPlaceholder');\n\nmodule.exports = VideoPlaceholder;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Video = require('./Video');\n\nmodule.exports = Video;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { t } = require('i18next');\nconst Image = require('stremio/common/Image');\nconst SearchBar = require('stremio/common/SearchBar');\nconst SeasonsBar = require('./SeasonsBar');\nconst Video = require('./Video');\nconst styles = require('./styles');\n\nconst VideosList = ({ className, metaItem, season, seasonOnSelect }) => {\n const videos = React.useMemo(() => {\n return metaItem && metaItem.content.type === 'Ready' ?\n metaItem.content.content.videos\n :\n [];\n }, [metaItem]);\n const seasons = React.useMemo(() => {\n return videos\n .map(({ season }) => season)\n .filter((season, index, seasons) => {\n return season !== null &&\n !isNaN(season) &&\n typeof season === 'number' &&\n seasons.indexOf(season) === index;\n })\n .sort((a, b) => (a || Number.MAX_SAFE_INTEGER) - (b || Number.MAX_SAFE_INTEGER));\n }, [videos]);\n const selectedSeason = React.useMemo(() => {\n if (seasons.includes(season)) {\n return season;\n }\n\n const nonSpecialSeasons = seasons.filter((season) => season !== 0);\n if (nonSpecialSeasons.length > 0) {\n return nonSpecialSeasons[nonSpecialSeasons.length - 1];\n }\n\n if (seasons.length > 0) {\n return seasons[seasons.length - 1];\n }\n\n return null;\n }, [seasons, season]);\n const videosForSeason = React.useMemo(() => {\n return videos\n .filter((video) => {\n return selectedSeason === null || video.season === selectedSeason;\n })\n .sort((a, b) => {\n return a.episode - b.episode;\n });\n }, [videos, selectedSeason]);\n const [search, setSearch] = React.useState('');\n const searchInputOnChange = React.useCallback((event) => {\n setSearch(event.currentTarget.value);\n }, []);\n return (\n <div className={classnames(className, styles['videos-list-container'])}>\n {\n !metaItem || metaItem.content.type === 'Loading' ?\n <React.Fragment>\n <SeasonsBar.Placeholder className={styles['seasons-bar']} />\n <SearchBar.Placeholder className={styles['search-bar']} title={t('SEARCH_VIDEOS')} />\n <div className={styles['videos-scroll-container']}>\n <Video.Placeholder />\n <Video.Placeholder />\n <Video.Placeholder />\n <Video.Placeholder />\n <Video.Placeholder />\n </div>\n </React.Fragment>\n :\n metaItem.content.type === 'Err' || videosForSeason.length === 0 ?\n <div className={styles['message-container']}>\n <Image className={styles['image']} src={require('/images/empty.png')} alt={' '} />\n <div className={styles['label']}>No videos found for this meta!</div>\n </div>\n :\n <React.Fragment>\n {\n seasons.length > 0 ?\n <SeasonsBar\n className={styles['seasons-bar']}\n season={selectedSeason}\n seasons={seasons}\n onSelect={seasonOnSelect}\n />\n :\n null\n }\n <SearchBar\n className={styles['search-bar']}\n title={t('SEARCH_VIDEOS')}\n value={search}\n onChange={searchInputOnChange}\n />\n <div className={styles['videos-container']}>\n {\n videosForSeason\n .filter((video) => {\n return search.length === 0 ||\n (\n (typeof video.title === 'string' && video.title.toLowerCase().includes(search.toLowerCase())) ||\n (!isNaN(video.released.getTime()) && video.released.toLocaleString(undefined, { year: '2-digit', month: 'short', day: 'numeric' }).toLowerCase().includes(search.toLowerCase()))\n );\n })\n .map((video, index) => (\n <Video\n key={index}\n id={video.id}\n title={video.title}\n thumbnail={video.thumbnail}\n episode={video.episode}\n released={video.released}\n upcoming={video.upcoming}\n watched={video.watched}\n progress={video.progress}\n deepLinks={video.deepLinks}\n scheduled={video.scheduled}\n />\n ))\n }\n </div>\n </React.Fragment>\n }\n </div>\n );\n};\n\nVideosList.propTypes = {\n className: PropTypes.string,\n metaItem: PropTypes.object,\n season: PropTypes.number,\n seasonOnSelect: PropTypes.func\n};\n\nmodule.exports = VideosList;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst VideosList = require('./VideosList');\n\nmodule.exports = VideosList;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst MetaDetails = require('./MetaDetails');\n\nmodule.exports = MetaDetails;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useModelState } = require('stremio/common');\n\nconst map = (metaDetails) => ({\n ...metaDetails,\n metaItem: metaDetails.metaItem !== null && metaDetails.metaItem.content.type === 'Ready' ?\n {\n ...metaDetails.metaItem,\n content: {\n ...metaDetails.metaItem.content,\n content: {\n ...metaDetails.metaItem.content.content,\n released: new Date(\n typeof metaDetails.metaItem.content.content.released === 'string' ?\n metaDetails.metaItem.content.content.released\n :\n NaN\n ),\n videos: metaDetails.metaItem.content.content.videos.map((video) => ({\n ...video,\n released: new Date(\n typeof video.released === 'string' ?\n video.released\n :\n NaN\n ),\n }))\n }\n }\n }\n :\n metaDetails.metaItem\n});\n\nconst useMetaDetails = (urlParams) => {\n const action = React.useMemo(() => {\n if (typeof urlParams.type === 'string' && typeof urlParams.id === 'string') {\n return {\n action: 'Load',\n args: {\n model: 'MetaDetails',\n args: {\n metaPath: {\n resource: 'meta',\n type: urlParams.type,\n id: urlParams.id,\n extra: []\n },\n streamPath: typeof urlParams.videoId === 'string' ?\n {\n resource: 'stream',\n type: urlParams.type,\n id: urlParams.videoId,\n extra: []\n }\n :\n null\n }\n }\n };\n } else {\n return {\n action: 'Unload'\n };\n }\n }, [urlParams]);\n return useModelState({ model: 'meta_details', action, map });\n};\n\nmodule.exports = useMetaDetails;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useMetaExtensionTabs = (metaExtensions) => {\n const tabs = React.useMemo(() => {\n return metaExtensions\n .map((extension) => ({\n id: extension.url,\n label: extension.addon.manifest.name,\n logo: extension.addon.manifest.logo,\n icon: 'ic_addons',\n onClick: () => setSelected(extension)\n }));\n }, [metaExtensions]);\n const [selected, setSelected] = React.useState(null);\n const clear = React.useCallback(() => {\n setSelected(null);\n }, []);\n return [tabs, selected, clear];\n};\n\nmodule.exports = useMetaExtensionTabs;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst useSeason = (urlParams, queryParams) => {\n const season = React.useMemo(() => {\n return queryParams.has('season') && !isNaN(queryParams.get('season')) ?\n parseInt(queryParams.get('season'), 10)\n :\n null;\n }, [queryParams]);\n const setSeason = React.useCallback((season) => {\n const nextQueryParams = new URLSearchParams(queryParams);\n nextQueryParams.set('season', season);\n window.location.replace(`#${urlParams.path}?${nextQueryParams}`);\n }, [urlParams, queryParams]);\n return [season, setSeason];\n};\n\nmodule.exports = useSeason;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { Image, HorizontalNavBar } = require('stremio/common');\nconst styles = require('./styles');\n\nconst NotFound = () => {\n return (\n <div className={styles['not-found-container']}>\n <HorizontalNavBar\n className={styles['nav-bar']}\n title={'Page not found'}\n backButton={true}\n fullscreenButton={true}\n navMenu={true}\n />\n <div className={styles['not-found-content']}>\n <Image\n className={styles['not-found-image']}\n src={require('/images/empty.png')}\n alt={' '}\n />\n <div className={styles['not-found-label']}>Page not found!</div>\n </div>\n </div>\n );\n};\n\nmodule.exports = NotFound;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst NotFound = require('./NotFound');\n\nmodule.exports = NotFound;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { Image } = require('stremio/common');\nconst styles = require('./styles');\n\nconst BufferingLoader = ({ className, logo }) => {\n return (\n <div className={classnames(className, styles['buffering-loader-container'])}>\n <Image\n className={styles['buffering-loader']}\n src={logo}\n alt={' '}\n fallbackSrc={require('/images/stremio_symbol.png')}\n />\n </div>\n );\n};\n\nBufferingLoader.propTypes = {\n className: PropTypes.string,\n logo: PropTypes.string\n};\n\nmodule.exports = BufferingLoader;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst BufferingLoader = require('./BufferingLoader');\n\nmodule.exports = BufferingLoader;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button } = require('stremio/common');\nconst { useServices } = require('stremio/services');\nconst SeekBar = require('./SeekBar');\nconst VolumeSlider = require('./VolumeSlider');\nconst styles = require('./styles');\nconst { useBinaryState } = require('stremio/common');\nconst { t } = require('i18next');\n\nconst ControlBar = ({\n className,\n paused,\n time,\n duration,\n buffered,\n volume,\n muted,\n playbackSpeed,\n subtitlesTracks,\n audioTracks,\n metaItem,\n nextVideo,\n stream,\n statistics,\n onPlayRequested,\n onPauseRequested,\n onMuteRequested,\n onUnmuteRequested,\n onVolumeChangeRequested,\n onSeekRequested,\n onToggleSubtitlesMenu,\n onToggleInfoMenu,\n onToggleSpeedMenu,\n onToggleVideosMenu,\n onToggleOptionsMenu,\n onToggleStatisticsMenu,\n ...props\n}) => {\n const { chromecast } = useServices();\n const [chromecastServiceActive, setChromecastServiceActive] = React.useState(() => chromecast.active);\n const [buttonsMenuOpen, , , toogleButtonsMenu] = useBinaryState(false);\n const onSubtitlesButtonMouseDown = React.useCallback((event) => {\n event.nativeEvent.subtitlesMenuClosePrevented = true;\n }, []);\n const onInfoButtonMouseDown = React.useCallback((event) => {\n event.nativeEvent.infoMenuClosePrevented = true;\n }, []);\n const onSpeedButtonMouseDown = React.useCallback((event) => {\n event.nativeEvent.speedMenuClosePrevented = true;\n }, []);\n const onVideosButtonMouseDown = React.useCallback((event) => {\n event.nativeEvent.videosMenuClosePrevented = true;\n }, []);\n const onOptionsButtonMouseDown = React.useCallback((event) => {\n event.nativeEvent.optionsMenuClosePrevented = true;\n }, []);\n const onStatisticsButtonMouseDown = React.useCallback((event) => {\n event.nativeEvent.statisticsMenuClosePrevented = true;\n }, []);\n const onPlayPauseButtonClick = React.useCallback(() => {\n if (paused) {\n if (typeof onPlayRequested === 'function') {\n onPlayRequested();\n }\n } else {\n if (typeof onPauseRequested === 'function') {\n onPauseRequested();\n }\n }\n }, [paused, onPlayRequested, onPauseRequested]);\n const onNextVideoButtonClick = React.useCallback(() => {\n if (nextVideo !== null && typeof nextVideo.deepLinks === 'object') {\n if (nextVideo.deepLinks.player !== null) {\n window.location.replace(nextVideo.deepLinks.player);\n } else if (nextVideo.deepLinks.metaDetailsStreams !== null) {\n window.location.replace(nextVideo.deepLinks.metaDetailsStreams);\n }\n }\n }, [nextVideo]);\n const onMuteButtonClick = React.useCallback(() => {\n if (muted) {\n if (typeof onUnmuteRequested === 'function') {\n onUnmuteRequested();\n }\n } else {\n if (typeof onMuteRequested === 'function') {\n onMuteRequested();\n }\n }\n }, [muted, onMuteRequested, onUnmuteRequested]);\n const onSubtitlesButtonClick = React.useCallback(() => {\n if (typeof onToggleSubtitlesMenu === 'function') {\n onToggleSubtitlesMenu();\n }\n }, [onToggleSubtitlesMenu]);\n const onInfoButtonClick = React.useCallback(() => {\n if (typeof onToggleInfoMenu === 'function') {\n onToggleInfoMenu();\n }\n }, [onToggleInfoMenu]);\n const onSpeedButtonClick = React.useCallback(() => {\n if (typeof onToggleSpeedMenu === 'function') {\n onToggleSpeedMenu();\n }\n }, [onToggleSpeedMenu]);\n const onVideosButtonClick = React.useCallback(() => {\n if (typeof onToggleVideosMenu === 'function') {\n onToggleVideosMenu();\n }\n }, [onToggleVideosMenu]);\n const onOptionsButtonClick = React.useCallback(() => {\n if (typeof onToggleOptionsMenu === 'function') {\n onToggleOptionsMenu();\n }\n }, [onToggleOptionsMenu]);\n const onStatisticsButtonClick = React.useCallback(() => {\n if (typeof onToggleStatisticsMenu === 'function') {\n onToggleStatisticsMenu();\n }\n }, [onToggleStatisticsMenu]);\n const onChromecastButtonClick = React.useCallback(() => {\n chromecast.transport.requestSession();\n }, []);\n React.useEffect(() => {\n const onStateChanged = () => {\n setChromecastServiceActive(chromecast.active);\n };\n chromecast.on('stateChanged', onStateChanged);\n return () => {\n chromecast.off('stateChanged', onStateChanged);\n };\n }, []);\n return (\n <div {...props} className={classnames(className, styles['control-bar-container'])}>\n <SeekBar\n className={styles['seek-bar']}\n time={time}\n duration={duration}\n buffered={buffered}\n onSeekRequested={onSeekRequested}\n />\n <div className={styles['control-bar-buttons-container']}>\n <Button className={classnames(styles['control-bar-button'], { 'disabled': typeof paused !== 'boolean' })} title={paused ? t('PLAYER_PLAY') : t('PLAYER_PAUSE')} tabIndex={-1} onClick={onPlayPauseButtonClick}>\n <Icon className={styles['icon']} icon={typeof paused !== 'boolean' || paused ? 'ic_play' : 'ic_pause'} />\n </Button>\n {\n nextVideo !== null ?\n <Button className={classnames(styles['control-bar-button'])} title={t('PLAYER_NEXT_VIDEO')} tabIndex={-1} onClick={onNextVideoButtonClick}>\n <Icon className={styles['icon']} icon={'ic_play_next'} />\n </Button>\n :\n null\n }\n <Button className={classnames(styles['control-bar-button'], { 'disabled': typeof muted !== 'boolean' })} title={muted ? t('PLAYER_UNMUTE') : t('PLAYER_MUTE')} tabIndex={-1} onClick={onMuteButtonClick}>\n <Icon\n className={styles['icon']}\n icon={\n (typeof muted === 'boolean' && muted) ? 'ic_volume0' :\n (volume === null || isNaN(volume)) ? 'ic_volume3' :\n volume < 30 ? 'ic_volume1' :\n volume < 70 ? 'ic_volume2' :\n 'ic_volume3'\n }\n />\n </Button>\n <VolumeSlider\n className={styles['volume-slider']}\n volume={volume}\n onVolumeChangeRequested={onVolumeChangeRequested}\n />\n <div className={styles['spacing']} />\n <Button className={styles['control-bar-buttons-menu-button']} onClick={toogleButtonsMenu}>\n <Icon className={styles['icon']} icon={'ic_more'} />\n </Button>\n <div className={classnames(styles['control-bar-buttons-menu-container'], { 'open': buttonsMenuOpen })}>\n <Button className={classnames(styles['control-bar-button'], { 'disabled': statistics === null || statistics.type === 'Err' || stream === null || typeof stream.infoHash !== 'string' || typeof stream.fileIdx !== 'number' })} tabIndex={-1} onMouseDown={onStatisticsButtonMouseDown} onClick={onStatisticsButtonClick}>\n <Icon className={styles['icon']} icon={'ic_network'} />\n </Button>\n <Button className={classnames(styles['control-bar-button'], { 'disabled': playbackSpeed === null })} tabIndex={-1} onMouseDown={onSpeedButtonMouseDown} onClick={onSpeedButtonClick}>\n <Icon className={styles['icon']} icon={'ic_speedometer'} />\n </Button>\n <Button className={classnames(styles['control-bar-button'], { 'disabled': metaItem === null || metaItem.type !== 'Ready' })} tabIndex={-1} onMouseDown={onInfoButtonMouseDown} onClick={onInfoButtonClick}>\n <Icon className={styles['icon']} icon={'ic_info'} />\n </Button>\n <Button className={classnames(styles['control-bar-button'], { 'disabled': !chromecastServiceActive })} tabIndex={-1} onClick={onChromecastButtonClick}>\n <Icon className={styles['icon']} icon={'ic_cast'} />\n </Button>\n <Button className={classnames(styles['control-bar-button'], { 'disabled': (!Array.isArray(subtitlesTracks) || subtitlesTracks.length === 0) && (!Array.isArray(audioTracks) || audioTracks.length === 0) })} tabIndex={-1} onMouseDown={onSubtitlesButtonMouseDown} onClick={onSubtitlesButtonClick}>\n <Icon className={styles['icon']} icon={'ic_sub'} />\n </Button>\n {\n metaItem?.content?.videos?.length > 0 ?\n <Button className={styles['control-bar-button']} tabIndex={-1} onMouseDown={onVideosButtonMouseDown} onClick={onVideosButtonClick}>\n <Icon className={styles['icon']} icon={'ic_videos'} />\n </Button>\n :\n null\n }\n <Button className={styles['control-bar-button']} tabIndex={-1} onMouseDown={onOptionsButtonMouseDown} onClick={onOptionsButtonClick}>\n <Icon className={styles['icon']} icon={'ic_more'} />\n </Button>\n </div>\n </div>\n </div>\n );\n};\n\nControlBar.propTypes = {\n className: PropTypes.string,\n paused: PropTypes.bool,\n time: PropTypes.number,\n duration: PropTypes.number,\n buffered: PropTypes.number,\n volume: PropTypes.number,\n muted: PropTypes.bool,\n playbackSpeed: PropTypes.number,\n subtitlesTracks: PropTypes.array,\n audioTracks: PropTypes.array,\n metaItem: PropTypes.object,\n nextVideo: PropTypes.object,\n stream: PropTypes.object,\n statistics: PropTypes.object,\n onPlayRequested: PropTypes.func,\n onPauseRequested: PropTypes.func,\n onMuteRequested: PropTypes.func,\n onUnmuteRequested: PropTypes.func,\n onVolumeChangeRequested: PropTypes.func,\n onSeekRequested: PropTypes.func,\n onToggleSubtitlesMenu: PropTypes.func,\n onToggleInfoMenu: PropTypes.func,\n onToggleSpeedMenu: PropTypes.func,\n onToggleVideosMenu: PropTypes.func,\n onToggleOptionsMenu: PropTypes.func,\n onToggleStatisticsMenu: PropTypes.func,\n};\n\nmodule.exports = ControlBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst debounce = require('lodash.debounce');\nconst { useRouteFocused } = require('stremio-router');\nconst { Slider } = require('stremio/common');\nconst formatTime = require('./formatTime');\nconst styles = require('./styles');\n\nconst SeekBar = ({ className, time, duration, buffered, onSeekRequested }) => {\n const disabled = time === null || isNaN(time) || duration === null || isNaN(duration);\n const routeFocused = useRouteFocused();\n const [seekTime, setSeekTime] = React.useState(null);\n const resetTimeDebounced = React.useCallback(debounce(() => {\n setSeekTime(null);\n }, 1500), []);\n const onSlide = React.useCallback((time) => {\n resetTimeDebounced.cancel();\n setSeekTime(time);\n }, []);\n const onComplete = React.useCallback((time) => {\n resetTimeDebounced();\n setSeekTime(time);\n if (typeof onSeekRequested === 'function') {\n onSeekRequested(time);\n }\n }, [onSeekRequested]);\n React.useLayoutEffect(() => {\n if (!routeFocused || disabled) {\n resetTimeDebounced.cancel();\n setSeekTime(null);\n }\n }, [routeFocused, disabled]);\n React.useEffect(() => {\n return () => {\n resetTimeDebounced.cancel();\n };\n }, []);\n return (\n <div className={classnames(className, styles['seek-bar-container'], { 'active': seekTime !== null })}>\n <div className={styles['label']}>{formatTime(seekTime !== null ? seekTime : time)}</div>\n <Slider\n className={classnames(styles['slider'], { 'active': seekTime !== null })}\n value={\n !disabled ?\n seekTime !== null ? seekTime : time\n :\n 0\n }\n buffered={buffered}\n minimumValue={0}\n maximumValue={duration}\n disabled={disabled}\n onSlide={onSlide}\n onComplete={onComplete}\n />\n <div className={styles['label']}>{formatTime(duration)}</div>\n </div>\n );\n};\n\nSeekBar.propTypes = {\n className: PropTypes.string,\n time: PropTypes.number,\n duration: PropTypes.number,\n buffered: PropTypes.number,\n onSeekRequested: PropTypes.func\n};\n\nmodule.exports = SeekBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst formatUnit = (value) => {\n return ('0' + value).slice(-1 * Math.max(value.toString().length, 2));\n};\n\nconst formatTime = (time) => {\n if (time === null || isNaN(time)) {\n return '--:--:--';\n }\n\n const hours = Math.floor(time / (1000 * 60 * 60));\n const minutes = Math.floor((time / (1000 * 60)) % 60);\n const seconds = Math.floor((time / 1000) % 60);\n return `${formatUnit(hours)}:${formatUnit(minutes)}:${formatUnit(seconds)}`;\n};\n\nmodule.exports = formatTime;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SeekBar = require('./SeekBar');\n\nmodule.exports = SeekBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst debounce = require('lodash.debounce');\nconst { useRouteFocused } = require('stremio-router');\nconst { Slider } = require('stremio/common');\nconst styles = require('./styles');\n\nconst VolumeSlider = ({ className, volume, onVolumeChangeRequested }) => {\n const disabled = volume === null || isNaN(volume);\n const routeFocused = useRouteFocused();\n const [slidingVolume, setSlidingVolume] = React.useState(null);\n const resetVolumeDebounced = React.useCallback(debounce(() => {\n setSlidingVolume(null);\n }, 100), []);\n const onSlide = React.useCallback((volume) => {\n resetVolumeDebounced.cancel();\n setSlidingVolume(volume);\n if (typeof onVolumeChangeRequested === 'function') {\n onVolumeChangeRequested(volume);\n }\n }, [onVolumeChangeRequested]);\n const onComplete = React.useCallback((volume) => {\n resetVolumeDebounced();\n setSlidingVolume(volume);\n if (typeof onVolumeChangeRequested === 'function') {\n onVolumeChangeRequested(volume);\n }\n }, [onVolumeChangeRequested]);\n React.useLayoutEffect(() => {\n if (!routeFocused || disabled) {\n resetVolumeDebounced.cancel();\n setSlidingVolume(null);\n }\n }, [routeFocused, disabled]);\n React.useEffect(() => {\n return () => {\n resetVolumeDebounced.cancel();\n };\n }, []);\n return (\n <Slider\n className={classnames(className, styles['volume-slider'], { 'active': slidingVolume !== null })}\n value={\n !disabled ?\n slidingVolume !== null ? slidingVolume : volume\n :\n 100\n }\n minimumValue={0}\n maximumValue={100}\n disabled={disabled}\n onSlide={onSlide}\n onComplete={onComplete}\n />\n );\n};\n\nVolumeSlider.propTypes = {\n className: PropTypes.string,\n volume: PropTypes.number,\n onVolumeChangeRequested: PropTypes.func\n};\n\nmodule.exports = VolumeSlider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst VolumeSlider = require('./VolumeSlider');\n\nmodule.exports = VolumeSlider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ControlBar = require('./ControlBar');\n\nmodule.exports = ControlBar;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\n// const Stream = require('stremio/routes/MetaDetails/StreamsList/Stream');\n// const AddonDetails = require('stremio/common/AddonDetailsModal/AddonDetails');\nconst { MetaPreview, CONSTANTS } = require('stremio/common');\nconst styles = require('./styles');\n\nconst InfoMenu = ({ className, ...props }) => {\n const metaItem = React.useMemo(() => {\n return props.metaItem !== null ?\n {\n ...props.metaItem,\n links: props.metaItem.links.filter(({ category }) => category === CONSTANTS.SHARE_LINK_CATEGORY)\n }\n :\n null;\n }, [props.metaItem]);\n const onMouseDown = React.useCallback((event) => {\n event.nativeEvent.infoMenuClosePrevented = true;\n }, []);\n return (\n <div className={classnames(className, styles['info-menu-container'])} onMouseDown={onMouseDown}>\n {\n metaItem !== null ?\n <MetaPreview\n className={styles['meta-preview']}\n compact={true}\n name={metaItem.name}\n logo={metaItem.logo}\n runtime={metaItem.runtime}\n releaseInfo={metaItem.releaseInfo}\n released={metaItem.released}\n description={metaItem.description}\n links={metaItem.links}\n />\n :\n null\n }\n {/* {\n props.stream !== null ?\n <Stream\n {...props.stream}\n className={classnames(styles['stream'], 'active')}\n addonName={props.addon !== null ? props.addon.manifest.name : ''}\n />\n :\n null\n } */}\n {/* {\n props.addon !== null ?\n <AddonDetails\n id={props.addon.manifest.id}\n name={props.addon.manifest.name}\n version={props.addon.manifest.version}\n logo={props.addon.manifest.logo}\n description={props.addon.manifest.description}\n types={props.addon.manifest.types}\n transportUrl={props.addon.transportUrl}\n />\n :\n null\n } */}\n </div>\n );\n};\n\nInfoMenu.propTypes = {\n className: PropTypes.string,\n metaItem: PropTypes.object,\n addon: PropTypes.object,\n stream: PropTypes.object\n};\n\nmodule.exports = InfoMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst InfoMenu = require('./InfoMenu');\n\nmodule.exports = InfoMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Image, Button, CONSTANTS } = require('stremio/common');\nconst styles = require('./styles');\n\nconst NextVideoPopup = ({ className, metaItem, nextVideo, onDismiss, onPlayNextVideoRequested }) => {\n const watchNowButtonRef = React.useRef(null);\n const [animationEnded, setAnimationEnded] = React.useState(false);\n const videoName = React.useMemo(() => {\n const title = nextVideo && nextVideo.title || metaItem && metaItem.title;\n return nextVideo !== null &&\n typeof nextVideo.season === 'number' &&\n typeof nextVideo.episode === 'number' ?\n `${title} (S${nextVideo.season}E${nextVideo.episode})`\n :\n title;\n }, [metaItem, nextVideo]);\n const onAnimationEnd = React.useCallback(() => {\n setAnimationEnded(true);\n }, []);\n const renderPosterFallback = React.useCallback(() => {\n return metaItem !== null && typeof metaItem.type === 'string' ?\n <Icon\n className={styles['placeholder-icon']}\n icon={CONSTANTS.ICON_FOR_TYPE.has(metaItem.type) ? CONSTANTS.ICON_FOR_TYPE.get(metaItem.type) : CONSTANTS.ICON_FOR_TYPE.get('other')}\n />\n :\n null;\n }, [metaItem]);\n const onDismissButtonClick = React.useCallback(() => {\n if (typeof onDismiss === 'function') {\n onDismiss();\n }\n }, [onDismiss]);\n const onWatchNowButtonClick = React.useCallback(() => {\n if (typeof onPlayNextVideoRequested === 'function') {\n onPlayNextVideoRequested();\n }\n }, [onPlayNextVideoRequested]);\n React.useLayoutEffect(() => {\n if (animationEnded === true && watchNowButtonRef.current !== null) {\n watchNowButtonRef.current.focus();\n }\n }, [animationEnded]);\n return (\n <div className={classnames(className, styles['next-video-popup-container'])} onAnimationEnd={onAnimationEnd}>\n <div className={styles['poster-container']}>\n <Image\n className={styles['poster-image']}\n src={nextVideo?.thumbnail}\n alt={' '}\n fallbackSrc={metaItem?.poster}\n renderFallback={renderPosterFallback}\n />\n </div>\n <div className={styles['info-container']}>\n <div className={styles['details-container']}>\n {\n typeof videoName === 'string' ?\n <div className={styles['name']}>\n { videoName }\n </div>\n :\n null\n }\n {\n nextVideo !== null && typeof nextVideo.overview === 'string' ?\n <div className={styles['description']}>\n { nextVideo.overview }\n </div>\n :\n null\n }\n </div>\n <div className={styles['buttons-container']}>\n <Button className={styles['button-container']} onClick={onDismissButtonClick}>\n <Icon className={styles['icon']} icon={'ic_x'} />\n <div className={styles['label']}>Dismiss</div>\n </Button>\n <Button ref={watchNowButtonRef} className={classnames(styles['button-container'], styles['play-button'])} onClick={onWatchNowButtonClick}>\n <Icon className={styles['icon']} icon={'ic_play'} />\n <div className={styles['label']}>Watch Now</div>\n </Button>\n </div>\n </div>\n </div>\n );\n};\n\nNextVideoPopup.propTypes = {\n className: PropTypes.string,\n metaItem: PropTypes.object,\n nextVideo: PropTypes.object,\n onDismiss: PropTypes.func,\n onPlayNextVideoRequested: PropTypes.func\n};\n\nmodule.exports = NextVideoPopup;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst NextVideoPopup = require('./NextVideoPopup');\n\nmodule.exports = NextVideoPopup;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button } = require('stremio/common');\nconst styles = require('./styles');\n\nconst Option = ({ icon, label, deviceId, disabled, onClick }) => {\n const onButtonClick = React.useCallback(() => {\n if (typeof onClick === 'function') {\n onClick(deviceId);\n }\n }, [onClick, deviceId]);\n return (\n <Button className={classnames(styles['option-container'], { 'disabled': disabled })} disabled={disabled} onClick={onButtonClick}>\n <Icon className={styles['icon']} icon={icon} />\n <div className={styles['label']}>{ label }</div>\n </Button>\n );\n};\n\nOption.propTypes = {\n icon: PropTypes.string,\n label: PropTypes.string,\n deviceId: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n};\n\nmodule.exports = Option;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Option = require('./Option');\n\nmodule.exports = Option;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst { useToast } = require('stremio/common');\nconst { useServices } = require('stremio/services');\nconst Option = require('./Option');\nconst styles = require('./styles');\n\nconst OptionsMenu = ({ className, stream, playbackDevices }) => {\n const { t } = useTranslation();\n const { core } = useServices();\n const toast = useToast();\n const [streamingUrl, downloadUrl] = React.useMemo(() => {\n return stream !== null ?\n stream.deepLinks &&\n stream.deepLinks.externalPlayer &&\n [stream.deepLinks.externalPlayer.streaming, stream.deepLinks.externalPlayer.download]\n :\n [null, null];\n }, [stream]);\n const externalDevices = React.useMemo(() => {\n return playbackDevices.filter(({ type }) => type === 'external');\n }, [playbackDevices]);\n const onCopyStreamButtonClick = React.useCallback(() => {\n if (streamingUrl || downloadUrl) {\n navigator.clipboard.writeText(streamingUrl || downloadUrl)\n .then(() => {\n toast.show({\n type: 'success',\n title: 'Copied',\n message: t('PLAYER_COPY_STREAM_SUCCESS'),\n timeout: 3000\n });\n })\n .catch((e) => {\n console.error(e);\n toast.show({\n type: 'error',\n title: t('Error'),\n message: `${t('PLAYER_COPY_STREAM_ERROR')}: ${streamingUrl || downloadUrl}`,\n timeout: 3000\n });\n });\n }\n }, [streamingUrl, downloadUrl]);\n const onDownloadVideoButtonClick = React.useCallback(() => {\n if (streamingUrl || downloadUrl) {\n window.open(streamingUrl || downloadUrl);\n }\n }, [streamingUrl, downloadUrl]);\n const onExternalDeviceRequested = React.useCallback((deviceId) => {\n if (streamingUrl) {\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'PlayOnDevice',\n args: {\n device: deviceId,\n source: streamingUrl,\n }\n }\n });\n }\n }, [streamingUrl]);\n const onMouseDown = React.useCallback((event) => {\n event.nativeEvent.optionsMenuClosePrevented = true;\n }, []);\n return (\n <div className={classnames(className, styles['options-menu-container'])} onMouseDown={onMouseDown}>\n {\n streamingUrl || downloadUrl ?\n <Option\n icon={'ic_link'}\n label={t('CTX_COPY_STREAM_LINK')}\n disabled={stream === null}\n onClick={onCopyStreamButtonClick}\n />\n :\n null\n }\n {\n streamingUrl || downloadUrl ?\n <Option\n icon={'ic_downloads'}\n label={t('CTX_DOWNLOAD_VIDEO')}\n disabled={stream === null}\n onClick={onDownloadVideoButtonClick}\n />\n :\n null\n }\n {\n streamingUrl && externalDevices.map(({ id, name }) => (\n <Option\n key={id}\n icon={'ic_vlc'}\n label={t('PLAYER_PLAY_IN', { device: name })}\n deviceId={id}\n disabled={stream === null}\n onClick={onExternalDeviceRequested}\n />\n ))\n }\n </div>\n );\n};\n\nOptionsMenu.propTypes = {\n className: PropTypes.string,\n stream: PropTypes.object,\n playbackDevices: PropTypes.array\n};\n\nmodule.exports = OptionsMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst OptionsMenu = require('./OptionsMenu');\n\nmodule.exports = OptionsMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst debounce = require('lodash.debounce');\nconst langs = require('langs');\nconst { useTranslation } = require('react-i18next');\nconst { useRouteFocused } = require('stremio-router');\nconst { useServices } = require('stremio/services');\nconst { HorizontalNavBar, Button, useFullscreen, useBinaryState, useToast, useStreamingServer, withCoreSuspender } = require('stremio/common');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst BufferingLoader = require('./BufferingLoader');\nconst ControlBar = require('./ControlBar');\nconst NextVideoPopup = require('./NextVideoPopup');\nconst StatisticsMenu = require('./StatisticsMenu');\nconst InfoMenu = require('./InfoMenu');\nconst OptionsMenu = require('./OptionsMenu');\nconst VideosMenu = require('./VideosMenu');\nconst SubtitlesMenu = require('./SubtitlesMenu');\nconst SpeedMenu = require('./SpeedMenu');\nconst Video = require('./Video');\nconst usePlayer = require('./usePlayer');\nconst useSettings = require('./useSettings');\nconst styles = require('./styles');\n\nconst Player = ({ urlParams, queryParams }) => {\n const { t } = useTranslation();\n const { chromecast, shell, core } = useServices();\n const [forceTranscoding, maxAudioChannels] = React.useMemo(() => {\n return [\n queryParams.has('forceTranscoding'),\n queryParams.has('maxAudioChannels') ? parseInt(queryParams.get('maxAudioChannels'), 10) : null\n ];\n }, [queryParams]);\n const [videoState, setVideoState] = React.useReducer(\n (videoState, nextVideoState) => ({ ...videoState, ...nextVideoState }),\n {\n manifest: null,\n stream: null,\n paused: null,\n time: null,\n duration: null,\n buffering: null,\n buffered: null,\n volume: null,\n muted: null,\n playbackSpeed: null,\n videoParams: null,\n audioTracks: [],\n selectedAudioTrackId: null,\n subtitlesTracks: [],\n selectedSubtitlesTrackId: null,\n subtitlesOffset: null,\n subtitlesSize: null,\n subtitlesTextColor: null,\n subtitlesBackgroundColor: null,\n subtitlesOutlineColor: null,\n extraSubtitlesTracks: [],\n selectedExtraSubtitlesTrackId: null,\n extraSubtitlesSize: null,\n extraSubtitlesDelay: null,\n extraSubtitlesOffset: null,\n extraSubtitlesTextColor: null,\n extraSubtitlesBackgroundColor: null,\n extraSubtitlesOutlineColor: null\n }\n );\n const [player, timeChanged, pausedChanged, ended] = usePlayer(urlParams, videoState.videoParams);\n const [settings, updateSettings] = useSettings();\n const streamingServer = useStreamingServer();\n const routeFocused = useRouteFocused();\n const toast = useToast();\n const [, , , toggleFullscreen] = useFullscreen();\n const [casting, setCasting] = React.useState(() => {\n return chromecast.active && chromecast.transport.getCastState() === cast.framework.CastState.CONNECTED;\n });\n const [immersed, setImmersed] = React.useState(true);\n const setImmersedDebounced = React.useCallback(debounce(setImmersed, 3000), []);\n const [optionsMenuOpen, , closeOptionsMenu, toggleOptionsMenu] = useBinaryState(false);\n const [subtitlesMenuOpen, , closeSubtitlesMenu, toggleSubtitlesMenu] = useBinaryState(false);\n const [infoMenuOpen, , closeInfoMenu, toggleInfoMenu] = useBinaryState(false);\n const [speedMenuOpen, , closeSpeedMenu, toggleSpeedMenu] = useBinaryState(false);\n const [videosMenuOpen, , closeVideosMenu, toggleVideosMenu] = useBinaryState(false);\n const [nextVideoPopupOpen, openNextVideoPopup, closeNextVideoPopup] = useBinaryState(false);\n const [statisticsMenuOpen, , closeStatisticsMenu, toggleStatisticsMenu] = useBinaryState(false);\n const nextVideoPopupDismissed = React.useRef(false);\n const defaultSubtitlesSelected = React.useRef(false);\n const defaultAudioTrackSelected = React.useRef(false);\n const [error, setError] = React.useState(null);\n const videoRef = React.useRef(null);\n const dispatch = React.useCallback((action, options) => {\n if (videoRef.current !== null) {\n videoRef.current.dispatch(action, options);\n }\n }, []);\n const onImplementationChanged = React.useCallback((manifest) => {\n setVideoState({ manifest });\n manifest.props.forEach((propName) => {\n dispatch({ type: 'observeProp', propName });\n });\n dispatch({ type: 'setProp', propName: 'subtitlesSize', propValue: settings.subtitlesSize });\n dispatch({ type: 'setProp', propName: 'subtitlesOffset', propValue: settings.subtitlesOffset });\n dispatch({ type: 'setProp', propName: 'subtitlesTextColor', propValue: settings.subtitlesTextColor });\n dispatch({ type: 'setProp', propName: 'subtitlesBackgroundColor', propValue: settings.subtitlesBackgroundColor });\n dispatch({ type: 'setProp', propName: 'subtitlesOutlineColor', propValue: settings.subtitlesOutlineColor });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesSize', propValue: settings.subtitlesSize });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesOffset', propValue: settings.subtitlesOffset });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesTextColor', propValue: settings.subtitlesTextColor });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesBackgroundColor', propValue: settings.subtitlesBackgroundColor });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesOutlineColor', propValue: settings.subtitlesOutlineColor });\n }, [settings.subtitlesSize, settings.subtitlesOffset, settings.subtitlesTextColor, settings.subtitlesBackgroundColor, settings.subtitlesOutlineColor]);\n const onPropChanged = React.useCallback((propName, propValue) => {\n setVideoState({ [propName]: propValue });\n }, []);\n const onEnded = React.useCallback(() => {\n ended();\n if (player.nextVideo !== null) {\n onPlayNextVideoRequested();\n } else {\n window.history.back();\n }\n }, [player.nextVideo, onPlayNextVideoRequested]);\n const onError = React.useCallback((error) => {\n console.error('Player', error);\n if (error.critical) {\n setError(error);\n } else {\n toast.show({\n type: 'error',\n title: t('ERROR'),\n message: error.message,\n timeout: 3000\n });\n }\n }, []);\n const onSubtitlesTrackLoaded = React.useCallback(() => {\n toast.show({\n type: 'success',\n title: t('PLAYER_SUBTITLES_LOADED'),\n message: t('PLAYER_SUBTITLES_LOADED_EMBEDDED'),\n timeout: 3000\n });\n }, []);\n const onExtraSubtitlesTrackLoaded = React.useCallback((track) => {\n toast.show({\n type: 'success',\n title: t('PLAYER_SUBTITLES_LOADED'),\n message: track.exclusive ? t('PLAYER_SUBTITLES_LOADED_EXCLUSIVE') : t('PLAYER_SUBTITLES_LOADED_ORIGIN', { origin: track.origin }),\n timeout: 3000\n });\n }, []);\n const onPlayRequested = React.useCallback(() => {\n dispatch({ type: 'setProp', propName: 'paused', propValue: false });\n }, []);\n const onPlayRequestedDebounced = React.useCallback(debounce(onPlayRequested, 200), []);\n const onPauseRequested = React.useCallback(() => {\n dispatch({ type: 'setProp', propName: 'paused', propValue: true });\n }, []);\n const onPauseRequestedDebounced = React.useCallback(debounce(onPauseRequested, 200), []);\n const onMuteRequested = React.useCallback(() => {\n dispatch({ type: 'setProp', propName: 'muted', propValue: true });\n }, []);\n const onUnmuteRequested = React.useCallback(() => {\n dispatch({ type: 'setProp', propName: 'muted', propValue: false });\n }, []);\n const onVolumeChangeRequested = React.useCallback((volume) => {\n dispatch({ type: 'setProp', propName: 'volume', propValue: volume });\n }, []);\n const onSeekRequested = React.useCallback((time) => {\n dispatch({ type: 'setProp', propName: 'time', propValue: time });\n }, []);\n const onPlaybackSpeedChanged = React.useCallback((rate) => {\n dispatch({ type: 'setProp', propName: 'playbackSpeed', propValue: rate });\n }, []);\n const onSubtitlesTrackSelected = React.useCallback((id) => {\n dispatch({ type: 'setProp', propName: 'selectedSubtitlesTrackId', propValue: id });\n dispatch({ type: 'setProp', propName: 'selectedExtraSubtitlesTrackId', propValue: null });\n }, []);\n const onExtraSubtitlesTrackSelected = React.useCallback((id) => {\n dispatch({ type: 'setProp', propName: 'selectedSubtitlesTrackId', propValue: null });\n dispatch({ type: 'setProp', propName: 'selectedExtraSubtitlesTrackId', propValue: id });\n }, []);\n const onAudioTrackSelected = React.useCallback((id) => {\n dispatch({ type: 'setProp', propName: 'selectedAudioTrackId', propValue: id });\n }, []);\n const onExtraSubtitlesDelayChanged = React.useCallback((delay) => {\n dispatch({ type: 'setProp', propName: 'extraSubtitlesDelay', propValue: delay });\n }, []);\n const onSubtitlesSizeChanged = React.useCallback((size) => {\n updateSettings({ subtitlesSize: size });\n }, [updateSettings]);\n const onSubtitlesOffsetChanged = React.useCallback((offset) => {\n updateSettings({ subtitlesOffset: offset });\n }, [updateSettings]);\n const onDismissNextVideoPopup = React.useCallback(() => {\n closeNextVideoPopup();\n nextVideoPopupDismissed.current = true;\n }, []);\n const onPlayNextVideoRequested = React.useCallback(() => {\n if (player.nextVideo !== null) {\n window.location.replace(\n typeof player.nextVideo.deepLinks.player === 'string' ?\n player.nextVideo.deepLinks.player\n :\n player.nextVideo.deepLinks.metaDetailsStreams\n );\n }\n }, [player.nextVideo]);\n const onVideoClick = React.useCallback(() => {\n if (videoState.paused !== null) {\n if (videoState.paused) {\n onPlayRequestedDebounced();\n } else {\n onPauseRequestedDebounced();\n }\n }\n }, [videoState.paused]);\n const onVideoDoubleClick = React.useCallback(() => {\n onPlayRequestedDebounced.cancel();\n onPauseRequestedDebounced.cancel();\n toggleFullscreen();\n }, [toggleFullscreen]);\n const onContainerMouseDown = React.useCallback((event) => {\n if (!event.nativeEvent.optionsMenuClosePrevented) {\n closeOptionsMenu();\n }\n if (!event.nativeEvent.subtitlesMenuClosePrevented) {\n closeSubtitlesMenu();\n }\n if (!event.nativeEvent.infoMenuClosePrevented) {\n closeInfoMenu();\n }\n if (!event.nativeEvent.speedMenuClosePrevented) {\n closeSpeedMenu();\n }\n if (!event.nativeEvent.videosMenuClosePrevented) {\n closeVideosMenu();\n }\n if (!event.nativeEvent.statisticsMenuClosePrevented) {\n closeStatisticsMenu();\n }\n }, []);\n const onContainerMouseMove = React.useCallback((event) => {\n setImmersed(false);\n if (!event.nativeEvent.immersePrevented) {\n setImmersedDebounced(true);\n } else {\n setImmersedDebounced.cancel();\n }\n }, []);\n const onContainerMouseLeave = React.useCallback(() => {\n setImmersedDebounced.cancel();\n setImmersed(true);\n }, []);\n const onBarMouseMove = React.useCallback((event) => {\n event.nativeEvent.immersePrevented = true;\n }, []);\n React.useEffect(() => {\n setError(null);\n if (player.selected === null) {\n dispatch({ type: 'command', commandName: 'unload' });\n } else if (streamingServer.baseUrl !== null && streamingServer.baseUrl.type !== 'Loading' &&\n (player.selected.metaRequest === null || (player.metaItem !== null && player.metaItem.type !== 'Loading'))) {\n dispatch({\n type: 'command',\n commandName: 'load',\n commandArgs: {\n stream: {\n ...player.selected.stream,\n subtitles: Array.isArray(player.selected.stream.subtitles) ?\n player.selected.stream.subtitles.map((subtitles) => ({\n ...subtitles,\n label: subtitles.url\n }))\n :\n []\n },\n autoplay: true,\n time: player.libraryItem !== null &&\n player.selected.streamRequest !== null &&\n player.selected.streamRequest.path !== null &&\n player.libraryItem.state.video_id === player.selected.streamRequest.path.id ?\n player.libraryItem.state.timeOffset\n :\n 0,\n forceTranscoding: forceTranscoding || casting,\n maxAudioChannels: typeof maxAudioChannels === 'number' ?\n maxAudioChannels\n :\n window.chrome ?\n 2\n :\n null,\n streamingServerURL: streamingServer.baseUrl.type === 'Ready' ?\n casting ?\n streamingServer.baseUrl.content\n :\n streamingServer.selected.transportUrl\n :\n null,\n seriesInfo: player.seriesInfo\n }\n }, {\n chromecastTransport: chromecast.active ? chromecast.transport : null,\n shellTransport: shell.active ? shell.transport : null,\n });\n }\n }, [streamingServer.baseUrl, player.selected, player.metaItem, forceTranscoding, maxAudioChannels, casting]);\n React.useEffect(() => {\n if (videoState.stream !== null) {\n dispatch({\n type: 'command',\n commandName: 'addExtraSubtitlesTracks',\n commandArgs: {\n tracks: player.subtitles.map((subtitles) => ({\n ...subtitles,\n label: subtitles.url\n }))\n }\n });\n }\n }, [player.subtitles, videoState.stream]);\n React.useEffect(() => {\n dispatch({ type: 'setProp', propName: 'subtitlesSize', propValue: settings.subtitlesSize });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesSize', propValue: settings.subtitlesSize });\n }, [settings.subtitlesSize]);\n React.useEffect(() => {\n dispatch({ type: 'setProp', propName: 'subtitlesOffset', propValue: settings.subtitlesOffset });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesOffset', propValue: settings.subtitlesOffset });\n }, [settings.subtitlesOffset]);\n React.useEffect(() => {\n dispatch({ type: 'setProp', propName: 'subtitlesTextColor', propValue: settings.subtitlesTextColor });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesTextColor', propValue: settings.subtitlesTextColor });\n }, [settings.subtitlesTextColor]);\n React.useEffect(() => {\n dispatch({ type: 'setProp', propName: 'subtitlesBackgroundColor', propValue: settings.subtitlesBackgroundColor });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesBackgroundColor', propValue: settings.subtitlesBackgroundColor });\n }, [settings.subtitlesBackgroundColor]);\n React.useEffect(() => {\n dispatch({ type: 'setProp', propName: 'subtitlesOutlineColor', propValue: settings.subtitlesOutlineColor });\n dispatch({ type: 'setProp', propName: 'extraSubtitlesOutlineColor', propValue: settings.subtitlesOutlineColor });\n }, [settings.subtitlesOutlineColor]);\n React.useEffect(() => {\n if (videoState.time !== null && !isNaN(videoState.time) &&\n videoState.duration !== null && !isNaN(videoState.duration) &&\n videoState.manifest !== null && typeof videoState.manifest.name === 'string') {\n timeChanged(videoState.time, videoState.duration, videoState.manifest.name);\n }\n }, [videoState.time, videoState.duration, videoState.manifest]);\n React.useEffect(() => {\n if (videoState.paused !== null) {\n pausedChanged(videoState.paused);\n }\n }, [videoState.paused]);\n React.useEffect(() => {\n if (!!settings.bingeWatching && player.nextVideo !== null && !nextVideoPopupDismissed.current) {\n if (videoState.time !== null && videoState.duration !== null && videoState.time < videoState.duration && (videoState.duration - videoState.time) <= settings.nextVideoNotificationDuration) {\n openNextVideoPopup();\n } else {\n closeNextVideoPopup();\n }\n }\n }, [player.nextVideo, videoState.time, videoState.duration]);\n React.useEffect(() => {\n if (player.selected && player.selected.stream && typeof player.selected.stream.infoHash === 'string' && typeof player.selected.stream.fileIdx === 'number') {\n const { infoHash, fileIdx } = player.selected.stream;\n const getStatistics = () => {\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'GetStatistics',\n args: {\n infoHash,\n fileIdx,\n }\n }\n });\n };\n getStatistics();\n const statisticsInterval = setInterval(getStatistics, 5000);\n return () => clearInterval(statisticsInterval);\n }\n }, [player.selected]);\n React.useEffect(() => {\n if (!defaultSubtitlesSelected.current) {\n const findTrackByLang = (tracks, lang) => tracks.find((track) => track.lang === lang || langs.where('1', track.lang)?.[2] === lang);\n\n const subtitlesTrack = findTrackByLang(videoState.subtitlesTracks, settings.subtitlesLanguage);\n const extraSubtitlesTrack = findTrackByLang(videoState.extraSubtitlesTracks, settings.subtitlesLanguage);\n\n if (subtitlesTrack && subtitlesTrack.id) {\n onSubtitlesTrackSelected(subtitlesTrack.id);\n defaultSubtitlesSelected.current = true;\n } else if (extraSubtitlesTrack && extraSubtitlesTrack.id) {\n onExtraSubtitlesTrackSelected(extraSubtitlesTrack.id);\n defaultSubtitlesSelected.current = true;\n }\n }\n }, [videoState.subtitlesTracks, videoState.extraSubtitlesTracks]);\n React.useEffect(() => {\n if (!defaultAudioTrackSelected.current) {\n const findTrackByLang = (tracks, lang) => tracks.find((track) => track.lang === lang || langs.where('1', track.lang)?.[2] === lang);\n const audioTrack = findTrackByLang(videoState.audioTracks, settings.audioLanguage);\n\n if (audioTrack && audioTrack.id) {\n onAudioTrackSelected(audioTrack.id);\n defaultAudioTrackSelected.current = true;\n }\n }\n }, [videoState.audioTracks]);\n React.useEffect(() => {\n defaultSubtitlesSelected.current = false;\n defaultAudioTrackSelected.current = false;\n nextVideoPopupDismissed.current = false;\n }, [videoState.stream]);\n React.useEffect(() => {\n if ((!Array.isArray(videoState.subtitlesTracks) || videoState.subtitlesTracks.length === 0) &&\n (!Array.isArray(videoState.extraSubtitlesTracks) || videoState.extraSubtitlesTracks.length === 0) &&\n (!Array.isArray(videoState.audioTracks) || videoState.audioTracks.length === 0)) {\n closeSubtitlesMenu();\n }\n }, [videoState.audioTracks, videoState.subtitlesTracks, videoState.extraSubtitlesTracks]);\n React.useEffect(() => {\n if (player.metaItem === null || player.metaItem.type !== 'Ready') {\n closeInfoMenu();\n closeVideosMenu();\n }\n }, [player.metaItem]);\n React.useEffect(() => {\n if (videoState.playbackSpeed === null) {\n closeSpeedMenu();\n }\n }, [videoState.playbackSpeed]);\n React.useEffect(() => {\n const toastFilter = (item) => item?.dataset?.type === 'CoreEvent';\n toast.addFilter(toastFilter);\n const onCastStateChange = () => {\n setCasting(chromecast.active && chromecast.transport.getCastState() === cast.framework.CastState.CONNECTED);\n };\n const onChromecastServiceStateChange = () => {\n onCastStateChange();\n if (chromecast.active) {\n chromecast.transport.on(\n cast.framework.CastContextEventType.CAST_STATE_CHANGED,\n onCastStateChange\n );\n }\n };\n const onCoreEvent = ({ event }) => {\n if (event === 'PlayingOnDevice') {\n onPauseRequested();\n }\n };\n chromecast.on('stateChanged', onChromecastServiceStateChange);\n core.transport.on('CoreEvent', onCoreEvent);\n onChromecastServiceStateChange();\n return () => {\n toast.removeFilter(toastFilter);\n chromecast.off('stateChanged', onChromecastServiceStateChange);\n core.transport.off('CoreEvent', onCoreEvent);\n if (chromecast.active) {\n chromecast.transport.off(\n cast.framework.CastContextEventType.CAST_STATE_CHANGED,\n onCastStateChange\n );\n }\n };\n }, []);\n React.useLayoutEffect(() => {\n const onKeyDown = (event) => {\n switch (event.code) {\n case 'Space': {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.paused !== null) {\n if (videoState.paused) {\n onPlayRequested();\n } else {\n onPauseRequested();\n }\n }\n\n break;\n }\n case 'ArrowRight': {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.time !== null) {\n const seekTimeMultiplier = event.shiftKey ? 3 : 1;\n onSeekRequested(videoState.time + (settings.seekTimeDuration * seekTimeMultiplier));\n }\n\n break;\n }\n case 'ArrowLeft': {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.time !== null) {\n const seekTimeMultiplier = event.shiftKey ? 3 : 1;\n onSeekRequested(videoState.time - (settings.seekTimeDuration * seekTimeMultiplier));\n }\n\n break;\n }\n case 'ArrowUp': {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.volume !== null) {\n onVolumeChangeRequested(videoState.volume + 5);\n }\n\n break;\n }\n case 'ArrowDown': {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.volume !== null) {\n onVolumeChangeRequested(videoState.volume - 5);\n }\n\n break;\n }\n case 'KeyS': {\n closeOptionsMenu();\n closeInfoMenu();\n closeSpeedMenu();\n closeVideosMenu();\n closeStatisticsMenu();\n if ((Array.isArray(videoState.subtitlesTracks) && videoState.subtitlesTracks.length > 0) ||\n (Array.isArray(videoState.extraSubtitlesTracks) && videoState.extraSubtitlesTracks.length > 0) ||\n (Array.isArray(videoState.audioTracks) && videoState.audioTracks.length > 0)) {\n toggleSubtitlesMenu();\n }\n\n break;\n }\n case 'KeyI': {\n closeOptionsMenu();\n closeSubtitlesMenu();\n closeSpeedMenu();\n closeVideosMenu();\n closeStatisticsMenu();\n if (player.metaItem !== null && player.metaItem.type === 'Ready') {\n toggleInfoMenu();\n }\n\n break;\n }\n case 'KeyR': {\n closeOptionsMenu();\n closeInfoMenu();\n closeSubtitlesMenu();\n closeVideosMenu();\n closeStatisticsMenu();\n if (videoState.playbackSpeed !== null) {\n toggleSpeedMenu();\n }\n\n break;\n }\n case 'KeyV': {\n closeOptionsMenu();\n closeInfoMenu();\n closeSubtitlesMenu();\n closeSpeedMenu();\n closeStatisticsMenu();\n if (player.metaItem !== null && player.metaItem.type === 'Ready') {\n toggleVideosMenu();\n }\n\n break;\n }\n case 'KeyD': {\n closeOptionsMenu();\n closeInfoMenu();\n closeSubtitlesMenu();\n closeSpeedMenu();\n closeVideosMenu();\n if (streamingServer.statistics !== null && streamingServer.statistics.type !== 'Err' && player.selected && typeof player.selected.stream.infoHash === 'string' && typeof player.selected.stream.fileIdx === 'number') {\n toggleStatisticsMenu();\n }\n\n break;\n }\n case 'Escape': {\n closeOptionsMenu();\n closeSubtitlesMenu();\n closeInfoMenu();\n closeSpeedMenu();\n closeVideosMenu();\n closeStatisticsMenu();\n onDismissNextVideoPopup();\n break;\n }\n }\n };\n const onWheel = ({ deltaY }) => {\n if (deltaY > 0) {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.volume !== null) {\n onVolumeChangeRequested(videoState.volume - 5);\n }\n } else {\n if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.volume !== null) {\n onVolumeChangeRequested(videoState.volume + 5);\n }\n }\n };\n if (routeFocused) {\n window.addEventListener('keydown', onKeyDown);\n window.addEventListener('wheel', onWheel);\n }\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n window.removeEventListener('wheel', onWheel);\n };\n }, [player.metaItem, player.selected, streamingServer.statistics, settings.seekTimeDuration, routeFocused, subtitlesMenuOpen, infoMenuOpen, videosMenuOpen, speedMenuOpen, optionsMenuOpen, statisticsMenuOpen, videoState.paused, videoState.time, videoState.volume, videoState.audioTracks, videoState.subtitlesTracks, videoState.extraSubtitlesTracks, videoState.playbackSpeed, toggleSubtitlesMenu, toggleInfoMenu, toggleVideosMenu, toggleStatisticsMenu]);\n React.useLayoutEffect(() => {\n return () => {\n setImmersedDebounced.cancel();\n onPlayRequestedDebounced.cancel();\n onPauseRequestedDebounced.cancel();\n };\n }, []);\n return (\n <div className={classnames(styles['player-container'], { [styles['immersed']]: immersed && !casting && videoState.paused !== null && !videoState.paused && !subtitlesMenuOpen && !infoMenuOpen && !speedMenuOpen && !videosMenuOpen && !nextVideoPopupOpen && !optionsMenuOpen && !statisticsMenuOpen })}\n onMouseDown={onContainerMouseDown}\n onMouseMove={onContainerMouseMove}\n onMouseOver={onContainerMouseMove}\n onMouseLeave={onContainerMouseLeave}>\n <Video\n ref={videoRef}\n className={styles['layer']}\n onEnded={onEnded}\n onError={onError}\n onPropValue={onPropChanged}\n onPropChanged={onPropChanged}\n onSubtitlesTrackLoaded={onSubtitlesTrackLoaded}\n onExtraSubtitlesTrackLoaded={onExtraSubtitlesTrackLoaded}\n onImplementationChanged={onImplementationChanged}\n />\n {\n videoState.buffering ?\n <BufferingLoader className={styles['layer']} />\n :\n null\n }\n <div\n className={styles['layer']}\n onClick={onVideoClick}\n onDoubleClick={onVideoDoubleClick}\n />\n {\n error !== null ?\n <div className={classnames(styles['layer'], styles['error-layer'])}>\n <div className={styles['error-label']} title={error.message}>{error.message}</div>\n {\n error.code === 2 ?\n <div className={styles['error-sub']} title={t('EXTERNAL_PLAYER_HINT')}>{t('EXTERNAL_PLAYER_HINT')}</div>\n :\n null\n }\n {\n player.selected !== null ?\n <Button className={styles['playlist-button']} title={t('PLAYER_OPEN_IN_EXTERNAL')} href={player.selected.stream.deepLinks.externalPlayer.href} download={player.selected.stream.deepLinks.externalPlayer.fileName} target={'_blank'}>\n <Icon className={styles['icon']} icon={'ic_downloads'} />\n <div className={styles['label']}>{t('PLAYER_OPEN_IN_EXTERNAL')}</div>\n </Button>\n :\n null\n }\n </div>\n :\n null\n }\n {\n subtitlesMenuOpen || infoMenuOpen || videosMenuOpen || speedMenuOpen || optionsMenuOpen || statisticsMenuOpen ?\n <div className={styles['layer']} />\n :\n null\n }\n <HorizontalNavBar\n className={classnames(styles['layer'], styles['nav-bar-layer'])}\n title={player.title !== null ? player.title : ''}\n backButton={true}\n fullscreenButton={true}\n onMouseMove={onBarMouseMove}\n onMouseOver={onBarMouseMove}\n />\n <ControlBar\n className={classnames(styles['layer'], styles['control-bar-layer'])}\n paused={videoState.paused}\n time={videoState.time}\n duration={videoState.duration}\n buffered={videoState.buffered}\n volume={videoState.volume}\n muted={videoState.muted}\n playbackSpeed={videoState.playbackSpeed}\n subtitlesTracks={videoState.subtitlesTracks.concat(videoState.extraSubtitlesTracks)}\n audioTracks={videoState.audioTracks}\n metaItem={player.metaItem}\n nextVideo={player.nextVideo}\n stream={player.selected !== null ? player.selected.stream : null}\n statistics={streamingServer.statistics}\n onPlayRequested={onPlayRequested}\n onPauseRequested={onPauseRequested}\n onMuteRequested={onMuteRequested}\n onUnmuteRequested={onUnmuteRequested}\n onVolumeChangeRequested={onVolumeChangeRequested}\n onSeekRequested={onSeekRequested}\n onToggleOptionsMenu={toggleOptionsMenu}\n onToggleSubtitlesMenu={toggleSubtitlesMenu}\n onToggleInfoMenu={toggleInfoMenu}\n onToggleSpeedMenu={toggleSpeedMenu}\n onToggleVideosMenu={toggleVideosMenu}\n onToggleStatisticsMenu={toggleStatisticsMenu}\n onMouseMove={onBarMouseMove}\n onMouseOver={onBarMouseMove}\n />\n {\n nextVideoPopupOpen ?\n <NextVideoPopup\n className={classnames(styles['layer'], styles['menu-layer'])}\n metaItem={player.metaItem !== null && player.metaItem.type === 'Ready' ? player.metaItem.content : null}\n nextVideo={player.nextVideo}\n onDismiss={onDismissNextVideoPopup}\n onPlayNextVideoRequested={onPlayNextVideoRequested}\n />\n :\n null\n }\n {\n statisticsMenuOpen ?\n <StatisticsMenu\n className={classnames(styles['layer'], styles['menu-layer'])}\n stream={player.selected !== null ? player.selected.stream : null}\n statistics={streamingServer.statistics}\n />\n :\n null\n }\n {\n subtitlesMenuOpen ?\n <SubtitlesMenu\n className={classnames(styles['layer'], styles['menu-layer'])}\n audioTracks={videoState.audioTracks}\n selectedAudioTrackId={videoState.selectedAudioTrackId}\n subtitlesTracks={videoState.subtitlesTracks}\n selectedSubtitlesTrackId={videoState.selectedSubtitlesTrackId}\n subtitlesOffset={videoState.subtitlesOffset}\n subtitlesSize={videoState.subtitlesSize}\n extraSubtitlesTracks={videoState.extraSubtitlesTracks}\n selectedExtraSubtitlesTrackId={videoState.selectedExtraSubtitlesTrackId}\n extraSubtitlesOffset={videoState.extraSubtitlesOffset}\n extraSubtitlesDelay={videoState.extraSubtitlesDelay}\n extraSubtitlesSize={videoState.extraSubtitlesSize}\n onSubtitlesTrackSelected={onSubtitlesTrackSelected}\n onExtraSubtitlesTrackSelected={onExtraSubtitlesTrackSelected}\n onAudioTrackSelected={onAudioTrackSelected}\n onSubtitlesOffsetChanged={onSubtitlesOffsetChanged}\n onSubtitlesSizeChanged={onSubtitlesSizeChanged}\n onExtraSubtitlesOffsetChanged={onSubtitlesOffsetChanged}\n onExtraSubtitlesDelayChanged={onExtraSubtitlesDelayChanged}\n onExtraSubtitlesSizeChanged={onSubtitlesSizeChanged}\n />\n :\n null\n }\n {\n infoMenuOpen ?\n <InfoMenu\n className={classnames(styles['layer'], styles['menu-layer'])}\n stream={player.selected !== null ? player.selected.stream : null}\n addon={player.addon}\n metaItem={player.metaItem !== null && player.metaItem.type === 'Ready' ? player.metaItem.content : null}\n />\n :\n null\n }\n {\n speedMenuOpen ?\n <SpeedMenu\n className={classnames(styles['layer'], styles['menu-layer'])}\n playbackSpeed={videoState.playbackSpeed}\n onPlaybackSpeedChanged={onPlaybackSpeedChanged}\n />\n :\n null\n }\n {\n videosMenuOpen ?\n <VideosMenu\n className={classnames(styles['layer'], styles['menu-layer'])}\n metaItem={player.metaItem !== null && player.metaItem.type === 'Ready' ? player.metaItem.content : null}\n seriesInfo={player.seriesInfo}\n />\n :\n null\n }\n {\n optionsMenuOpen ?\n <OptionsMenu\n className={classnames(styles['layer'], styles['menu-layer'])}\n stream={player.selected.stream}\n playbackDevices={streamingServer.playbackDevices !== null && streamingServer.playbackDevices.type === 'Ready' ? streamingServer.playbackDevices.content : []}\n />\n :\n null\n }\n </div>\n );\n};\n\nPlayer.propTypes = {\n urlParams: PropTypes.shape({\n stream: PropTypes.string,\n streamTransportUrl: PropTypes.string,\n metaTransportUrl: PropTypes.string,\n type: PropTypes.string,\n id: PropTypes.string,\n videoId: PropTypes.string\n }),\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nconst PlayerFallback = () => (\n <div className={classnames(styles['player-container'])} />\n);\n\nmodule.exports = withCoreSuspender(Player, PlayerFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { Button } = require('stremio/common');\nconst styles = require('./styles');\n\nconst OptionButton = ({ className, value, selected, onSelect }) => {\n const onClick = React.useCallback(() => {\n if (typeof onSelect === 'function') {\n onSelect(value);\n }\n }, [onSelect, value]);\n return (\n <Button\n className={classnames(className, styles['option'], { 'selected': selected })}\n onClick={onClick}\n >\n <div className={styles['label']}>{ value }x</div>\n <div className={styles['icon']} />\n </Button>\n );\n};\n\nOptionButton.propTypes = {\n className: PropTypes.string,\n value: PropTypes.number,\n selected: PropTypes.bool,\n onSelect: PropTypes.func,\n};\n\nmodule.exports = OptionButton;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Option = require('./Option');\n\nmodule.exports = Option;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { useTranslation } = require('react-i18next');\nconst Option = require('./Option');\nconst styles = require('./styles');\n\nconst RATES = Array.from(Array(8).keys(), (n) => n * 0.25 + 0.25).reverse();\n\nconst SpeedMenu = ({ className, playbackSpeed, onPlaybackSpeedChanged }) => {\n const { t } = useTranslation();\n const onMouseDown = React.useCallback((event) => {\n event.nativeEvent.speedMenuClosePrevented = true;\n }, []);\n const onOptionSelect = React.useCallback((value) => {\n if (typeof onPlaybackSpeedChanged === 'function') {\n onPlaybackSpeedChanged(value);\n }\n }, [onPlaybackSpeedChanged]);\n return (\n <div className={classnames(className, styles['speed-menu-container'])} onMouseDown={onMouseDown}>\n <div className={styles['title']}>\n { t('PLAYBACK_SPEED') }\n </div>\n <div className={styles['options-container']}>\n {\n RATES.map((rate) => (\n <Option\n className={styles['option']}\n key={rate}\n value={rate}\n selected={rate === playbackSpeed}\n onSelect={onOptionSelect}\n />\n ))\n }\n </div>\n </div>\n );\n};\n\nSpeedMenu.propTypes = {\n className: PropTypes.string,\n playbackSpeed: PropTypes.number,\n onPlaybackSpeedChanged: PropTypes.func,\n};\n\nmodule.exports = SpeedMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SpeedMenu = require('./SpeedMenu');\n\nmodule.exports = SpeedMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst classNames = require('classnames');\nconst PropTypes = require('prop-types');\nconst styles = require('./styles.less');\n\nconst StatisticsMenu = ({ className, stream, statistics }) => {\n const peers = React.useMemo(() => {\n return statistics.type === 'Ready' && statistics.content?.peers ?\n statistics.content.peers\n :\n 0;\n }, [statistics]);\n\n const speed = React.useMemo(() => {\n return statistics.type === 'Ready' && statistics.content?.downloadSpeed ?\n (statistics.content.downloadSpeed / 1000 / 1000).toFixed(2)\n :\n 0;\n }, [statistics]);\n\n const completed = React.useMemo(() => {\n return statistics.type === 'Ready' && statistics.content?.streamProgress ?\n (statistics.content.streamProgress * 100).toFixed(2)\n :\n 0;\n }, [statistics]);\n\n return (\n <div className={classNames(className, styles['statistics-menu-container'])}>\n <div className={styles['title']}>\n Statistics\n </div>\n <div className={styles['stats']}>\n <div className={styles['stat']}>\n <div className={styles['label']}>\n Peers\n </div>\n <div className={styles['value']}>\n { peers }\n </div>\n </div>\n <div className={styles['stat']}>\n <div className={styles['label']}>\n Speed\n </div>\n <div className={styles['value']}>\n { speed } MB/s\n </div>\n </div>\n <div className={styles['stat']}>\n <div className={styles['label']}>\n Completed\n </div>\n <div className={styles['value']}>\n { completed } %\n </div>\n </div>\n </div>\n <div className={styles['info-hash']}>\n <div className={styles['label']}>\n Info Hash\n </div>\n <div className={styles['value']}>\n { stream.infoHash }\n </div>\n </div>\n </div>\n );\n};\n\nStatisticsMenu.propTypes = {\n className: PropTypes.string,\n stream: PropTypes.object,\n statistics: PropTypes.object,\n};\n\nmodule.exports = StatisticsMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst StatisticsMenu = require('./StatisticsMenu');\nmodule.exports = StatisticsMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Button } = require('stremio/common');\nconst styles = require('./styles');\n\nconst DiscreteSelectInput = ({ className, value, label, disabled, dataset, onChange }) => {\n const buttonOnClick = React.useCallback((event) => {\n if (typeof onChange === 'function') {\n onChange({\n type: 'change',\n value: event.currentTarget.dataset.type,\n dataset: dataset,\n reactEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }, [dataset, onChange]);\n return (\n <div className={classnames(className, styles['discrete-input-container'], { 'disabled': disabled })}>\n <div className={styles['header']}>{label}</div>\n <div className={styles['input-container']} title={disabled ? `${label} is not configurable` : null}>\n <Button className={classnames(styles['button-container'], { 'disabled': disabled })} data-type={'decrement'} onClick={buttonOnClick}>\n <Icon className={styles['icon']} icon={'ic_minus'} />\n </Button>\n <div className={styles['option-label']} title={value}>{value}</div>\n <Button className={classnames(styles['button-container'], { 'disabled': disabled })} data-type={'increment'} onClick={buttonOnClick}>\n <Icon className={styles['icon']} icon={'ic_plus'} />\n </Button>\n </div>\n </div>\n );\n};\n\nDiscreteSelectInput.propTypes = {\n className: PropTypes.string,\n value: PropTypes.string,\n label: PropTypes.string,\n disabled: PropTypes.bool,\n dataset: PropTypes.object,\n onChange: PropTypes.func\n};\n\nmodule.exports = DiscreteSelectInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst DiscreteSelectInput = require('./DiscreteSelectInput');\n\nmodule.exports = DiscreteSelectInput;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst { Button, CONSTANTS, comparatorWithPriorities, languageNames } = require('stremio/common');\nconst DiscreteSelectInput = require('./DiscreteSelectInput');\nconst styles = require('./styles');\nconst { t } = require('i18next');\n\nconst ORIGIN_PRIORITIES = {\n 'EMBEDDED': 2,\n 'EXCLUSIVE': 1\n};\nconst LANGUAGE_PRIORITIES = {\n 'eng': 1\n};\n\nconst SubtitlesMenu = React.memo((props) => {\n const subtitlesLanguages = React.useMemo(() => {\n return (Array.isArray(props.subtitlesTracks) ? props.subtitlesTracks : [])\n .concat(Array.isArray(props.extraSubtitlesTracks) ? props.extraSubtitlesTracks : [])\n .reduce((subtitlesLanguages, { lang }) => {\n if (!subtitlesLanguages.includes(lang)) {\n subtitlesLanguages.push(lang);\n }\n\n return subtitlesLanguages;\n }, [])\n .sort(comparatorWithPriorities(LANGUAGE_PRIORITIES));\n }, [props.subtitlesTracks, props.extraSubtitlesTracks]);\n const selectedSubtitlesLanguage = React.useMemo(() => {\n return typeof props.selectedSubtitlesTrackId === 'string' ?\n (Array.isArray(props.subtitlesTracks) ? props.subtitlesTracks : [])\n .reduce((selectedSubtitlesLanguage, { id, lang }) => {\n if (id === props.selectedSubtitlesTrackId) {\n return lang;\n }\n\n return selectedSubtitlesLanguage;\n }, null)\n :\n typeof props.selectedExtraSubtitlesTrackId === 'string' ?\n (Array.isArray(props.extraSubtitlesTracks) ? props.extraSubtitlesTracks : [])\n .reduce((selectedSubtitlesLanguage, { id, lang }) => {\n if (id === props.selectedExtraSubtitlesTrackId) {\n return lang;\n }\n\n return selectedSubtitlesLanguage;\n }, null)\n :\n null;\n }, [props.subtitlesTracks, props.extraSubtitlesTracks, props.selectedSubtitlesTrackId, props.selectedExtraSubtitlesTrackId]);\n const subtitlesTracksForLanguage = React.useMemo(() => {\n return (Array.isArray(props.subtitlesTracks) ? props.subtitlesTracks : [])\n .concat(Array.isArray(props.extraSubtitlesTracks) ? props.extraSubtitlesTracks : [])\n .filter(({ lang }) => lang === selectedSubtitlesLanguage)\n .sort((t1, t2) => comparatorWithPriorities(ORIGIN_PRIORITIES)(t1.origin, t2.origin));\n }, [props.subtitlesTracks, props.extraSubtitlesTracks, selectedSubtitlesLanguage]);\n const onMouseDown = React.useCallback((event) => {\n event.nativeEvent.subtitlesMenuClosePrevented = true;\n }, []);\n const subtitlesLanguageOnClick = React.useCallback((event) => {\n const track = (Array.isArray(props.subtitlesTracks) ? props.subtitlesTracks : [])\n .concat(Array.isArray(props.extraSubtitlesTracks) ? props.extraSubtitlesTracks : [])\n .filter(({ lang }) => lang === event.currentTarget.dataset.lang)\n .sort((t1, t2) => comparatorWithPriorities(ORIGIN_PRIORITIES)(t1.origin, t2.origin))\n .shift();\n if (!track) {\n if (typeof props.onSubtitlesTrackSelected === 'function') {\n props.onSubtitlesTrackSelected(null);\n }\n if (typeof props.onExtraSubtitlesTrackSelected === 'function') {\n props.onExtraSubtitlesTrackSelected(null);\n }\n } else if (track.embedded) {\n if (typeof props.onSubtitlesTrackSelected === 'function') {\n props.onSubtitlesTrackSelected(track.id);\n }\n } else {\n if (typeof props.onExtraSubtitlesTrackSelected === 'function') {\n props.onExtraSubtitlesTrackSelected(track.id);\n }\n }\n }, [props.subtitlesTracks, props.extraSubtitlesTracks, props.onSubtitlesTrackSelected, props.onExtraSubtitlesTrackSelected]);\n const subtitlesTrackOnClick = React.useCallback((event) => {\n if (event.currentTarget.dataset.embedded === 'true') {\n if (typeof props.onSubtitlesTrackSelected === 'function') {\n props.onSubtitlesTrackSelected(event.currentTarget.dataset.id);\n }\n } else {\n if (typeof props.onExtraSubtitlesTrackSelected === 'function') {\n props.onExtraSubtitlesTrackSelected(event.currentTarget.dataset.id);\n }\n }\n }, [props.onSubtitlesTrackSelected, props.onExtraSubtitlesTrackSelected]);\n const onSubtitlesDelayChanged = React.useCallback((event) => {\n const delta = event.value === 'increment' ? 250 : -250;\n if (typeof props.selectedExtraSubtitlesTrackId === 'string') {\n if (props.extraSubtitlesDelay !== null && !isNaN(props.extraSubtitlesDelay)) {\n const extraDelay = props.extraSubtitlesDelay + delta;\n if (typeof props.onExtraSubtitlesDelayChanged === 'function') {\n props.onExtraSubtitlesDelayChanged(extraDelay);\n }\n }\n }\n }, [props.selectedExtraSubtitlesTrackId, props.extraSubtitlesDelay, props.onExtraSubtitlesDelayChanged]);\n const onSubtitlesSizeChanged = React.useCallback((event) => {\n const delta = event.value === 'increment' ? 1 : -1;\n if (typeof props.selectedSubtitlesTrackId === 'string') {\n if (props.subtitlesSize !== null && !isNaN(props.subtitlesSize)) {\n const sizeIndex = CONSTANTS.SUBTITLES_SIZES.indexOf(props.subtitlesSize);\n const size = CONSTANTS.SUBTITLES_SIZES[Math.max(0, Math.min(CONSTANTS.SUBTITLES_SIZES.length - 1, sizeIndex + delta))];\n if (typeof props.onSubtitlesSizeChanged === 'function') {\n props.onSubtitlesSizeChanged(size);\n }\n }\n } else if (typeof props.selectedExtraSubtitlesTrackId === 'string') {\n if (props.extraSubtitlesSize !== null && !isNaN(props.extraSubtitlesSize)) {\n const extraSizeIndex = CONSTANTS.SUBTITLES_SIZES.indexOf(props.extraSubtitlesSize);\n const extraSize = CONSTANTS.SUBTITLES_SIZES[Math.max(0, Math.min(CONSTANTS.SUBTITLES_SIZES.length - 1, extraSizeIndex + delta))];\n if (typeof props.onExtraSubtitlesSizeChanged === 'function') {\n props.onExtraSubtitlesSizeChanged(extraSize);\n }\n }\n }\n }, [props.selectedSubtitlesTrackId, props.selectedExtraSubtitlesTrackId, props.subtitlesSize, props.extraSubtitlesSize, props.onSubtitlesSizeChanged, props.onExtraSubtitlesSizeChanged]);\n const onSubtitlesOffsetChanged = React.useCallback((event) => {\n const delta = event.value === 'increment' ? 1 : -1;\n if (typeof props.selectedSubtitlesTrackId === 'string') {\n if (props.extraSubtitlesOffset !== null && !isNaN(props.extraSubtitlesOffset)) {\n const offset = Math.max(0, Math.min(100, Math.floor(props.extraSubtitlesOffset + delta)));\n if (typeof props.onExtraSubtitlesOffsetChanged === 'function') {\n props.onExtraSubtitlesOffsetChanged(offset);\n }\n }\n } else if (typeof props.selectedExtraSubtitlesTrackId === 'string') {\n if (props.subtitlesOffset !== null && !isNaN(props.subtitlesOffset)) {\n const offset = Math.max(0, Math.min(100, Math.floor(props.subtitlesOffset + delta)));\n if (typeof props.onSubtitlesOffsetChanged === 'function') {\n props.onSubtitlesOffsetChanged(offset);\n }\n }\n }\n }, [props.selectedSubtitlesTrackId, props.selectedExtraSubtitlesTrackId, props.subtitlesOffset, props.extraSubtitlesOffset, props.onSubtitlesOffsetChanged, props.onExtraSubtitlesOffsetChanged]);\n const audioTrackOnClick = React.useCallback((event) => {\n if (typeof props.onAudioTrackSelected === 'function') {\n props.onAudioTrackSelected(event.currentTarget.dataset.id);\n }\n }, [props.onAudioTrackSelected]);\n return (\n <div className={classnames(props.className, styles['subtitles-menu-container'])} onMouseDown={onMouseDown}>\n {\n Array.isArray(props.audioTracks) && props.audioTracks.length > 1 ?\n <div className={styles['languages-container']}>\n <div className={styles['languages-header']}>Audio Languages</div>\n <div className={styles['languages-list']}>\n {props.audioTracks.map(({ id, label, lang }, index) => (\n <Button key={index} title={label} className={classnames(styles['language-option'], { 'selected': props.selectedAudioTrackId === id })} data-id={id} onClick={audioTrackOnClick}>\n <div className={styles['language-label']}>{typeof languageNames[lang] === 'string' ? languageNames[lang] : lang}</div>\n {\n props.selectedAudioTrackId === id ?\n <div className={styles['icon']} />\n :\n null\n }\n </Button>\n ))}\n </div>\n </div>\n :\n null\n }\n <div className={styles['languages-container']}>\n <div className={styles['languages-header']}>{ t('PLAYER_SUBTITLES_LANGUAGES') }</div>\n <div className={styles['languages-list']}>\n <Button title={t('OFF')} className={classnames(styles['language-option'], { 'selected': selectedSubtitlesLanguage === null })} onClick={subtitlesLanguageOnClick}>\n <div className={styles['language-label']}>{ t('OFF') }</div>\n {\n selectedSubtitlesLanguage === null ?\n <div className={styles['icon']} />\n :\n null\n }\n </Button>\n {subtitlesLanguages.map((lang, index) => (\n <Button key={index} title={typeof languageNames[lang] === 'string' ? languageNames[lang] : lang} className={classnames(styles['language-option'], { 'selected': selectedSubtitlesLanguage === lang })} data-lang={lang} onClick={subtitlesLanguageOnClick}>\n <div className={styles['language-label']}>{typeof languageNames[lang] === 'string' ? languageNames[lang] : lang}</div>\n {\n selectedSubtitlesLanguage === lang ?\n <div className={styles['icon']} />\n :\n null\n }\n </Button>\n ))}\n </div>\n </div>\n <div className={styles['variants-container']}>\n <div className={styles['variants-header']}>{ t('PLAYER_SUBTITLES_VARIANTS') }</div>\n {\n subtitlesTracksForLanguage.length > 0 ?\n <div className={styles['variants-list']}>\n {subtitlesTracksForLanguage.map((track, index) => (\n <Button key={index} title={track.label} className={classnames(styles['variant-option'], { 'selected': props.selectedSubtitlesTrackId === track.id || props.selectedExtraSubtitlesTrackId === track.id })} data-id={track.id} data-origin={track.origin} data-embedded={track.embedded} onClick={subtitlesTrackOnClick}>\n <div className={styles['variant-label']}>{track.origin}</div>\n {\n props.selectedSubtitlesTrackId === track.id || props.selectedExtraSubtitlesTrackId === track.id ?\n <div className={styles['icon']} />\n :\n null\n }\n </Button>\n ))}\n </div>\n :\n <div className={styles['no-variants-container']}>\n <div className={styles['no-variants-label']}>\n { t('PLAYER_SUBTITLES_DISABLED') }\n </div>\n </div>\n }\n </div>\n <div className={styles['subtitles-settings-container']}>\n <div className={styles['settings-header']}>Subtitles Settings</div>\n <DiscreteSelectInput\n className={styles['discrete-input']}\n label={t('DELAY')}\n value={typeof props.selectedExtraSubtitlesTrackId === 'string' && props.extraSubtitlesDelay !== null && !isNaN(props.extraSubtitlesDelay) ? `${(props.extraSubtitlesDelay / 1000).toFixed(2)}s` : '--'}\n disabled={typeof props.selectedExtraSubtitlesTrackId !== 'string' || props.extraSubtitlesDelay === null || isNaN(props.extraSubtitlesDelay)}\n onChange={onSubtitlesDelayChanged}\n />\n <DiscreteSelectInput\n className={styles['discrete-input']}\n label={t('SIZE')}\n value={\n typeof props.selectedSubtitlesTrackId === 'string' ?\n props.subtitlesSize !== null && !isNaN(props.subtitlesSize) ? `${props.subtitlesSize}%` : '--'\n :\n typeof props.selectedExtraSubtitlesTrackId === 'string' ?\n props.extraSubtitlesSize !== null && !isNaN(props.extraSubtitlesSize) ? `${props.extraSubtitlesSize}%` : '--'\n :\n '--'\n }\n disabled={\n typeof props.selectedSubtitlesTrackId === 'string' ?\n props.subtitlesSize === null || isNaN(props.subtitlesSize)\n :\n typeof props.selectedExtraSubtitlesTrackId === 'string' ?\n props.extraSubtitlesSize === null || isNaN(props.extraSubtitlesSize)\n :\n true\n }\n onChange={onSubtitlesSizeChanged}\n />\n <DiscreteSelectInput\n className={styles['discrete-input']}\n label={t('PLAYER_SUBTITLES_VERTICAL_POSIITON')}\n value={\n typeof props.selectedSubtitlesTrackId === 'string' ?\n props.subtitlesOffset !== null && !isNaN(props.subtitlesOffset) ? `${props.subtitlesOffset}%` : '--'\n :\n typeof props.selectedExtraSubtitlesTrackId === 'string' ?\n props.extraSubtitlesOffset !== null && !isNaN(props.extraSubtitlesOffset) ? `${props.extraSubtitlesOffset}%` : '--'\n :\n '--'\n }\n disabled={\n typeof props.selectedSubtitlesTrackId === 'string' ?\n props.subtitlesOffset === null || isNaN(props.subtitlesOffset)\n :\n typeof props.selectedExtraSubtitlesTrackId === 'string' ?\n props.extraSubtitlesOffset === null || isNaN(props.extraSubtitlesOffset)\n :\n true\n }\n onChange={onSubtitlesOffsetChanged}\n />\n <div className={styles['spacing']} />\n <Button className={classnames(styles['advanced-button'], 'disabled')} title={'Advanced'}>Advanced</Button>\n </div>\n </div>\n );\n});\n\nSubtitlesMenu.displayName = 'MainNavBars';\n\nSubtitlesMenu.propTypes = {\n className: PropTypes.string,\n subtitlesTracks: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string.isRequired,\n lang: PropTypes.string.isRequired,\n origin: PropTypes.string.isRequired\n })),\n selectedSubtitlesTrackId: PropTypes.string,\n subtitlesOffset: PropTypes.number,\n subtitlesSize: PropTypes.number,\n extraSubtitlesTracks: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string.isRequired,\n lang: PropTypes.string.isRequired,\n origin: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n })),\n selectedExtraSubtitlesTrackId: PropTypes.string,\n extraSubtitlesOffset: PropTypes.number,\n extraSubtitlesDelay: PropTypes.number,\n extraSubtitlesSize: PropTypes.number,\n audioTracks: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string.isRequired,\n lang: PropTypes.string.isRequired,\n origin: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n })),\n selectedAudioTrackId: PropTypes.string,\n onSubtitlesTrackSelected: PropTypes.func,\n onExtraSubtitlesTrackSelected: PropTypes.func,\n onAudioTrackSelected: PropTypes.func,\n onSubtitlesOffsetChanged: PropTypes.func,\n onSubtitlesSizeChanged: PropTypes.func,\n onExtraSubtitlesOffsetChanged: PropTypes.func,\n onExtraSubtitlesDelayChanged: PropTypes.func,\n onExtraSubtitlesSizeChanged: PropTypes.func\n};\n\nmodule.exports = SubtitlesMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst SubtitlesMenu = require('./SubtitlesMenu');\n\nmodule.exports = SubtitlesMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst StremioVideo = require('@stremio/stremio-video');\nconst { useLiveRef } = require('stremio/common');\nconst styles = require('./styles');\n\nconst Video = React.forwardRef(({ className, ...props }, ref) => {\n const onEndedRef = useLiveRef(props.onEnded);\n const onErrorRef = useLiveRef(props.onError);\n const onPropValueRef = useLiveRef(props.onPropValue);\n const onPropChangedRef = useLiveRef(props.onPropChanged);\n const onSubtitlesTrackLoadedRef = useLiveRef(props.onSubtitlesTrackLoaded);\n const onExtraSubtitlesTrackLoadedRef = useLiveRef(props.onExtraSubtitlesTrackLoaded);\n const onImplementationChangedRef = useLiveRef(props.onImplementationChanged);\n const videoElementRef = React.useRef(null);\n const videoRef = React.useRef(null);\n const dispatch = React.useCallback((action, options = {}) => {\n if (videoRef.current !== null) {\n try {\n videoRef.current.dispatch(action, {\n ...options,\n containerElement: videoElementRef.current\n });\n } catch (error) {\n console.error('Video', error);\n }\n }\n }, []);\n React.useImperativeHandle(ref, () => ({ dispatch }), []);\n React.useEffect(() => {\n if (videoElementRef.current !== null) {\n videoRef.current = new StremioVideo();\n videoRef.current.on('ended', () => {\n if (typeof onEndedRef.current === 'function') {\n onEndedRef.current();\n }\n });\n videoRef.current.on('error', (args) => {\n if (typeof onErrorRef.current === 'function') {\n onErrorRef.current(args);\n }\n });\n videoRef.current.on('propValue', (propName, propValue) => {\n if (typeof onPropValueRef.current === 'function') {\n onPropValueRef.current(propName, propValue);\n }\n });\n videoRef.current.on('propChanged', (propName, propValue) => {\n if (typeof onPropChangedRef.current === 'function') {\n onPropChangedRef.current(propName, propValue);\n }\n });\n videoRef.current.on('subtitlesTrackLoaded', (track) => {\n if (typeof onSubtitlesTrackLoadedRef.current === 'function') {\n onSubtitlesTrackLoadedRef.current(track);\n }\n });\n videoRef.current.on('extraSubtitlesTrackLoaded', (track) => {\n if (typeof onExtraSubtitlesTrackLoadedRef.current === 'function') {\n onExtraSubtitlesTrackLoadedRef.current(track);\n }\n });\n videoRef.current.on('implementationChanged', (manifest) => {\n if (typeof onImplementationChangedRef.current === 'function') {\n onImplementationChangedRef.current(manifest);\n }\n });\n }\n return () => {\n videoRef.current.destroy();\n };\n }, []);\n return (\n <div className={classnames(className, styles['video-container'])}>\n <div ref={videoElementRef} className={styles['video']} />\n </div>\n );\n});\n\nVideo.displayName = 'Video';\n\nVideo.propTypes = {\n className: PropTypes.string,\n onEnded: PropTypes.func,\n onError: PropTypes.func,\n onPropValue: PropTypes.func,\n onPropChanged: PropTypes.func,\n onSubtitlesTrackLoaded: PropTypes.func,\n onExtraSubtitlesTrackLoaded: PropTypes.func,\n onImplementationChanged: PropTypes.func\n};\n\nmodule.exports = Video;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Video = require('./Video');\n\nmodule.exports = Video;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst Video = require('../../MetaDetails/VideosList/Video');\nconst styles = require('./styles');\n\nconst VideosMenu = ({ className, metaItem, seriesInfo }) => {\n const onMouseDown = React.useCallback((event) => {\n event.nativeEvent.videosMenuClosePrevented = true;\n }, []);\n const videos = React.useMemo(() => {\n return seriesInfo && typeof seriesInfo.season === 'number' && Array.isArray(metaItem.videos) ?\n metaItem.videos.filter(({ season }) => season === seriesInfo.season)\n :\n metaItem.videos;\n }, [metaItem, seriesInfo]);\n return (\n <div className={classnames(className, styles['videos-menu-container'])} onMouseDown={onMouseDown}>\n {\n videos.map((video, index) => (\n <Video\n key={index}\n id={video.id}\n title={video.title}\n thumbnail={video.thumbnail}\n episode={video.episode}\n released={video.released}\n upcoming={video.upcoming}\n watched={video.watched}\n progress={video.progress}\n deepLinks={video.deepLinks}\n scheduled={video.scheduled}\n />\n ))\n }\n </div>\n );\n};\n\nVideosMenu.propTypes = {\n className: PropTypes.string,\n metaItem: PropTypes.object,\n seriesInfo: PropTypes.shape({\n season: PropTypes.number,\n episode: PropTypes.number,\n }),\n};\n\nmodule.exports = VideosMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst VideosMenu = require('./VideosMenu');\n\nmodule.exports = VideosMenu;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Player = require('./Player');\n\nmodule.exports = Player;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst { useModelState, useCoreSuspender } = require('stremio/common');\n\nconst map = (player) => ({\n ...player,\n metaItem: player.metaItem !== null && player.metaItem.type === 'Ready' ?\n {\n ...player.metaItem,\n content: {\n ...player.metaItem.content,\n released: new Date(\n typeof player.metaItem.content.released === 'string' ?\n player.metaItem.content.released\n :\n NaN\n ),\n videos: player.metaItem.content.videos.map((video) => ({\n ...video,\n released: new Date(\n typeof video.released === 'string' ?\n video.released\n :\n NaN\n ),\n }))\n }\n }\n :\n player.metaItem,\n});\n\nconst usePlayer = (urlParams, videoParams) => {\n const { core } = useServices();\n const { decodeStream } = useCoreSuspender();\n const stream = decodeStream(urlParams.stream);\n const action = React.useMemo(() => {\n if (stream !== null) {\n return {\n action: 'Load',\n args: {\n model: 'Player',\n args: {\n stream,\n videoParams,\n streamRequest: typeof urlParams.streamTransportUrl === 'string' && typeof urlParams.type === 'string' && typeof urlParams.videoId === 'string' ?\n {\n base: urlParams.streamTransportUrl,\n path: {\n resource: 'stream',\n type: urlParams.type,\n id: urlParams.videoId,\n extra: []\n }\n }\n :\n null,\n metaRequest: typeof urlParams.metaTransportUrl === 'string' && typeof urlParams.type === 'string' && typeof urlParams.id === 'string' ?\n {\n base: urlParams.metaTransportUrl,\n path: {\n resource: 'meta',\n type: urlParams.type,\n id: urlParams.id,\n extra: []\n }\n }\n :\n null,\n subtitlesPath: typeof urlParams.type === 'string' && typeof urlParams.videoId === 'string' ?\n {\n resource: 'subtitles',\n type: urlParams.type,\n id: urlParams.videoId,\n extra: []\n }\n :\n null\n }\n }\n };\n } else {\n return {\n action: 'Unload'\n };\n }\n }, [urlParams, videoParams]);\n const timeChanged = React.useCallback((time, duration, device) => {\n core.transport.dispatch({\n action: 'Player',\n args: {\n action: 'TimeChanged',\n args: { time, duration, device }\n }\n }, 'player');\n }, []);\n const ended = React.useCallback(() => {\n core.transport.dispatch({\n action: 'Player',\n args: {\n action: 'Ended'\n }\n }, 'player');\n }, []);\n const pausedChanged = React.useCallback((paused) => {\n core.transport.dispatch({\n action: 'Player',\n args: {\n action: 'PausedChanged',\n args: { paused }\n }\n }, 'player');\n }, []);\n const player = useModelState({ model: 'player', action, map });\n return [player, timeChanged, pausedChanged, ended];\n};\n\nmodule.exports = usePlayer;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst { useProfile } = require('stremio/common');\n\nconst useSettings = () => {\n const { core } = useServices();\n const profile = useProfile();\n const updateSettings = React.useCallback((settings) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n ...settings\n }\n }\n });\n }, [profile]);\n return [profile.settings, updateSettings];\n};\n\nmodule.exports = useSettings;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst classnames = require('classnames');\nconst debounce = require('lodash.debounce');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { Image, MainNavBars, MetaRow, MetaItem, withCoreSuspender, getVisibleChildrenRange } = require('stremio/common');\nconst useSearch = require('./useSearch');\nconst styles = require('./styles');\n\nconst THRESHOLD = 100;\n\nconst Search = ({ queryParams }) => {\n const { t } = useTranslation();\n const [search, loadSearchRows] = useSearch(queryParams);\n const query = React.useMemo(() => {\n return search.selected !== null ?\n search.selected.extra.reduceRight((query, [name, value]) => {\n if (name === 'search') {\n return value;\n }\n\n return query;\n }, null)\n :\n null;\n }, [search.selected]);\n const scrollContainerRef = React.useRef();\n const onVisibleRangeChange = React.useCallback(() => {\n if (search.catalogs.length === 0) {\n return;\n }\n\n const range = getVisibleChildrenRange(scrollContainerRef.current, THRESHOLD);\n if (range === null) {\n return;\n }\n\n loadSearchRows(range);\n }, [search.catalogs]);\n const onScroll = React.useCallback(debounce(onVisibleRangeChange, 250), [onVisibleRangeChange]);\n React.useLayoutEffect(() => {\n onVisibleRangeChange();\n }, [search.catalogs, onVisibleRangeChange]);\n return (\n <MainNavBars className={styles['search-container']} route={'search'} query={query}>\n <div ref={scrollContainerRef} className={styles['search-content']} onScroll={onScroll}>\n {\n query === null ?\n <div className={classnames(styles['search-hints-container'], 'animation-fade-in')}>\n <div className={styles['search-hint-container']}>\n <Icon className={styles['icon']} icon={'ic_movies'} />\n <div className={styles['label']}>{ t('SEARCH_EXPLANATION_CONTENT') }</div>\n </div>\n <div className={styles['search-hint-container']}>\n <Icon className={styles['icon']} icon={'ic_actor'} />\n <div className={styles['label']}>{ t('SEARCH_EXPLANATION_PEOPLE') }</div>\n </div>\n </div>\n :\n search.catalogs.length === 0 ?\n <div className={styles['message-container']}>\n <Image\n className={styles['image']}\n src={require('/images/empty.png')}\n alt={' '}\n />\n <div className={styles['message-label']}>{ t('STREMIO_TV_SEARCH_NO_ADDONS') }</div>\n </div>\n :\n search.catalogs.map((catalog, index) => {\n switch (catalog.content?.type) {\n case 'Ready': {\n return (\n <MetaRow\n key={index}\n className={classnames(styles['search-row'], styles[`search-row-${catalog.content.content[0].posterShape}`], 'animation-fade-in')}\n title={catalog.title}\n items={catalog.content.content}\n itemComponent={MetaItem}\n deepLinks={catalog.deepLinks}\n />\n );\n }\n case 'Err': {\n return (\n <MetaRow\n key={index}\n className={classnames(styles['search-row'], 'animation-fade-in')}\n title={catalog.title}\n message={catalog.content.content}\n deepLinks={catalog.deepLinks}\n />\n );\n }\n default: {\n return (\n <MetaRow.Placeholder\n key={index}\n className={classnames(styles['search-row'], styles['search-row-poster'], 'animation-fade-in')}\n title={catalog.title}\n deepLinks={catalog.deepLinks}\n />\n );\n }\n }\n })\n }\n </div>\n </MainNavBars>\n );\n};\n\nSearch.propTypes = {\n queryParams: PropTypes.instanceOf(URLSearchParams)\n};\n\nconst SearchFallback = ({ queryParams }) => (\n <MainNavBars className={styles['search-container']} route={'search'} query={queryParams.get('search')} />\n);\n\nSearchFallback.propTypes = Search.propTypes;\n\nmodule.exports = withCoreSuspender(Search, SearchFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Search = require('./Search');\n\nmodule.exports = Search;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useModelState } = require('stremio/common');\nconst { useServices } = require('stremio/services');\n\nconst useSearch = (queryParams) => {\n const { core } = useServices();\n // TODO: refactor this to be in stremio-core-web\n // React.useEffect(() => {\n // let timerId = setTimeout(emitSearchEvent, 500);\n // function emitSearchEvent() {\n // timerId = null;\n // const state = core.transport.getState('search');\n // if (state.selected !== null) {\n // const [, query] = state.selected.extra.find(([name]) => name === 'search');\n // const responses = state.catalogs.filter((catalog) => catalog.content?.type === 'Ready');\n // core.transport.analytics({\n // event: 'Search',\n // args: {\n // query,\n // responsesCount: responses.length\n // }\n // });\n // }\n // }\n // return () => {\n // if (timerId !== null) {\n // clearTimeout(timerId);\n // emitSearchEvent();\n // }\n // };\n // }, [queryParams.get('search')]);\n const action = React.useMemo(() => {\n if (queryParams.has('search') && queryParams.get('search').length > 0) {\n return {\n action: 'Load',\n args: {\n model: 'CatalogsWithExtra',\n args: {\n extra: [\n ['search', queryParams.get('search')]\n ]\n }\n }\n };\n } else {\n return {\n action: 'Unload'\n };\n }\n }, [queryParams]);\n const loadRange = React.useCallback((range) => {\n core.transport.dispatch({\n action: 'CatalogsWithExtra',\n args: {\n action: 'LoadRange',\n args: range\n }\n }, 'search');\n }, []);\n const search = useModelState({ model: 'search', action });\n return [search, loadRange];\n};\n\nmodule.exports = useSearch;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst classnames = require('classnames');\nconst throttle = require('lodash.throttle');\nconst { useTranslation } = require('react-i18next');\nconst Icon = require('@stremio/stremio-icons/dom');\nconst { useRouteFocused } = require('stremio-router');\nconst { useServices } = require('stremio/services');\nconst { Button, Checkbox, MainNavBars, Multiselect, ColorInput, TextInput, ModalDialog, useProfile, useStreamingServer, useBinaryState, withCoreSuspender, useToast } = require('stremio/common');\nconst useProfileSettingsInputs = require('./useProfileSettingsInputs');\nconst useStreamingServerSettingsInputs = require('./useStreamingServerSettingsInputs');\nconst useDataExport = require('./useDataExport');\nconst styles = require('./styles');\n\nconst GENERAL_SECTION = 'general';\nconst PLAYER_SECTION = 'player';\nconst STREAMING_SECTION = 'streaming';\nconst SHORTCUTS_SECTION = 'shortcuts';\n\nconst Settings = () => {\n const { t } = useTranslation();\n const { core } = useServices();\n const { routeFocused } = useRouteFocused();\n const profile = useProfile();\n const [dataExport, loadDataExport] = useDataExport();\n const streamingServer = useStreamingServer();\n const toast = useToast();\n const {\n interfaceLanguageSelect,\n subtitlesLanguageSelect,\n subtitlesSizeSelect,\n subtitlesTextColorInput,\n subtitlesBackgroundColorInput,\n subtitlesOutlineColorInput,\n audioLanguageSelect,\n seekTimeDurationSelect,\n playInExternalPlayerSelect,\n nextVideoPopupDurationSelect,\n bingeWatchingCheckbox,\n playInBackgroundCheckbox,\n hardwareDecodingCheckbox,\n streamingServerUrlInput\n } = useProfileSettingsInputs(profile);\n const {\n cacheSizeSelect,\n torrentProfileSelect\n } = useStreamingServerSettingsInputs(streamingServer);\n const [configureServerUrlModalOpen, openConfigureServerUrlModal, closeConfigureServerUrlModal] = useBinaryState(false);\n const configureServerUrlInputRef = React.useRef(null);\n const configureServerUrlOnSubmit = React.useCallback(() => {\n streamingServerUrlInput.onChange(configureServerUrlInputRef.current.value);\n closeConfigureServerUrlModal();\n }, [streamingServerUrlInput]);\n const [traktAuthStarted, setTraktAuthStarted] = React.useState(false);\n const isTraktAuthenticated = React.useMemo(() => {\n return profile.auth !== null && profile.auth.user !== null && profile.auth.user.trakt !== null &&\n (Date.now() / 1000) < (profile.auth.user.trakt.created_at + profile.auth.user.trakt.expires_in);\n }, [profile.auth]);\n const configureServerUrlModalButtons = React.useMemo(() => {\n return [\n {\n className: styles['cancel-button'],\n label: 'Cancel',\n props: {\n onClick: closeConfigureServerUrlModal\n }\n },\n {\n label: 'Submit',\n props: {\n onClick: configureServerUrlOnSubmit,\n }\n }\n ];\n }, [configureServerUrlOnSubmit]);\n const logoutButtonOnClick = React.useCallback(() => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'Logout'\n }\n });\n }, []);\n const toggleTraktOnClick = React.useCallback(() => {\n if (!isTraktAuthenticated && profile.auth !== null && profile.auth.user !== null && typeof profile.auth.user._id === 'string') {\n window.open(`https://www.strem.io/trakt/auth/${profile.auth.user._id}`);\n setTraktAuthStarted(true);\n } else {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'LogoutTrakt'\n }\n });\n }\n }, [isTraktAuthenticated, profile.auth]);\n const subscribeCalendarOnClick = React.useCallback(() => {\n const url = `webcal://www.strem.io/calendar/${profile.auth.user._id}.ics`;\n window.open(url);\n toast.show({\n type: 'success',\n title: 'Calendar has been added to your default caldendar app',\n timeout: 25000\n });\n //Stremio 4 emits not documented event subscribeCalendar\n }, []);\n const exportDataOnClick = React.useCallback(() => {\n loadDataExport();\n }, []);\n const reloadStreamingServer = React.useCallback(() => {\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'Reload'\n }\n });\n }, []);\n const sectionsContainerRef = React.useRef(null);\n const generalSectionRef = React.useRef(null);\n const playerSectionRef = React.useRef(null);\n const streamingServerSectionRef = React.useRef(null);\n const shortcutsSectionRef = React.useRef(null);\n const sections = React.useMemo(() => ([\n { ref: generalSectionRef, id: GENERAL_SECTION },\n { ref: playerSectionRef, id: PLAYER_SECTION },\n { ref: streamingServerSectionRef, id: STREAMING_SECTION },\n { ref: shortcutsSectionRef, id: SHORTCUTS_SECTION },\n ]), []);\n const [selectedSectionId, setSelectedSectionId] = React.useState(GENERAL_SECTION);\n const updateSelectedSectionId = React.useCallback(() => {\n if (sectionsContainerRef.current.scrollTop + sectionsContainerRef.current.clientHeight >= sectionsContainerRef.current.scrollHeight - 50) {\n setSelectedSectionId(sections[sections.length - 1].id);\n } else {\n for (let i = sections.length - 1; i >= 0; i--) {\n if (sections[i].ref.current.offsetTop - sectionsContainerRef.current.offsetTop <= sectionsContainerRef.current.scrollTop) {\n setSelectedSectionId(sections[i].id);\n break;\n }\n }\n }\n }, []);\n const sideMenuButtonOnClick = React.useCallback((event) => {\n const section = sections.find((section) => {\n return section.id === event.currentTarget.dataset.section;\n });\n sectionsContainerRef.current.scrollTo({\n top: section.ref.current.offsetTop - sectionsContainerRef.current.offsetTop,\n behavior: 'smooth'\n });\n }, []);\n const sectionsContainerOnScorll = React.useCallback(throttle(() => {\n updateSelectedSectionId();\n }, 50), []);\n React.useEffect(() => {\n if (isTraktAuthenticated && traktAuthStarted) {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'InstallTraktAddon'\n }\n });\n setTraktAuthStarted(false);\n }\n }, [isTraktAuthenticated, traktAuthStarted]);\n React.useEffect(() => {\n if (dataExport.exportUrl !== null && typeof dataExport.exportUrl === 'string') {\n window.open(dataExport.exportUrl);\n }\n }, [dataExport.exportUrl]);\n React.useLayoutEffect(() => {\n if (routeFocused) {\n updateSelectedSectionId();\n }\n closeConfigureServerUrlModal();\n }, [routeFocused]);\n return (\n <MainNavBars className={styles['settings-container']} route={'settings'}>\n <div className={classnames(styles['settings-content'], 'animation-fade-in')}>\n <div className={styles['side-menu-container']}>\n <Button className={classnames(styles['side-menu-button'], { [styles['selected']]: selectedSectionId === GENERAL_SECTION })} title={ t('SETTINGS_NAV_GENERAL') } data-section={GENERAL_SECTION} onClick={sideMenuButtonOnClick}>\n { t('SETTINGS_NAV_GENERAL') }\n </Button>\n <Button className={classnames(styles['side-menu-button'], { [styles['selected']]: selectedSectionId === PLAYER_SECTION })} title={ t('SETTINGS_NAV_PLAYER') }data-section={PLAYER_SECTION} onClick={sideMenuButtonOnClick}>\n { t('SETTINGS_NAV_PLAYER') }\n </Button>\n <Button className={classnames(styles['side-menu-button'], { [styles['selected']]: selectedSectionId === STREAMING_SECTION })} title={ t('SETTINGS_NAV_STREAMING') } data-section={STREAMING_SECTION} onClick={sideMenuButtonOnClick}>\n { t('SETTINGS_NAV_STREAMING') }\n </Button>\n <Button className={classnames(styles['side-menu-button'], { [styles['selected']]: selectedSectionId === SHORTCUTS_SECTION })} title={ t('SETTINGS_NAV_SHORTCUTS') } data-section={SHORTCUTS_SECTION} onClick={sideMenuButtonOnClick}>\n { t('SETTINGS_NAV_SHORTCUTS') }\n </Button>\n <div className={styles['spacing']} />\n <div className={styles['version-info-label']} title={process.env.VERSION}>App Version: {process.env.VERSION}</div>\n {\n streamingServer.settings !== null && streamingServer.settings.type === 'Ready' ?\n <div className={styles['version-info-label']} title={streamingServer.settings.content.serverVersion}>Server Version: {streamingServer.settings.content.serverVersion}</div>\n :\n null\n }\n </div>\n <div ref={sectionsContainerRef} className={styles['sections-container']} onScroll={sectionsContainerOnScorll}>\n <div ref={generalSectionRef} className={styles['section-container']}>\n <div className={styles['section-title']}>{ t('SETTINGS_NAV_GENERAL') }</div>\n <div className={classnames(styles['option-container'], styles['user-info-option-container'])}>\n <div\n className={styles['avatar-container']}\n style={{\n backgroundImage: profile.auth === null ?\n `url('${require('/images/anonymous.png')}')`\n :\n profile.auth.user.avatar ?\n `url('${profile.auth.user.avatar}')`\n :\n `url('${require('/images/default_avatar.png')}')`\n }}\n />\n <div className={styles['email-logout-container']}>\n <div className={styles['email-label-container']} title={profile.auth === null ? 'Anonymous user' : profile.auth.user.email}>\n <div className={styles['email-label']}>\n {profile.auth === null ? 'Anonymous user' : profile.auth.user.email}\n </div>\n </div>\n {\n profile.auth !== null ?\n <Button className={styles['logout-button-container']} title={ t('LOG_OUT') } onClick={logoutButtonOnClick}>\n <div className={styles['logout-label']}>{ t('LOG_OUT') }</div>\n </Button>\n :\n null\n }\n </div>\n <Button className={styles['user-panel-container']} title={'User panel'} target={'_blank'} href={'https://www.stremio.com/acc-settings'}>\n <div className={styles['user-panel-label']}>{ t('USER_PANEL') }</div>\n </Button>\n </div>\n {\n profile.auth === null ?\n <div className={styles['option-container']}>\n <Button className={classnames(styles['option-input-container'], styles['button-container'])} title={`${t('LOG_IN')} / ${t('SIGN_UP')}`} href={'#/intro'}>\n <div className={styles['label']}>{ t('LOG_IN') } / { t('SIGN_UP') }</div>\n </Button>\n </div>\n :\n null\n }\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_INTERFACE_LANGUAGE') }</div>\n </div>\n <Multiselect\n className={classnames(styles['option-input-container'], styles['multiselect-container'])}\n tabIndex={-1}\n {...interfaceLanguageSelect}\n />\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>Trakt Scrobbling</div>\n </div>\n <Button className={classnames(styles['option-input-container'], styles['button-container'])} title={'Authenticate'} disabled={profile.auth === null} tabIndex={-1} onClick={toggleTraktOnClick}>\n <Icon className={styles['icon']} icon={'ic_trakt'} />\n <div className={styles['label']}>\n { profile.auth !== null && profile.auth.user !== null && profile.auth.user.trakt !== null ? t('LOG_OUT') : t('SETTINGS_TRAKT_AUTHENTICATE') }\n </div>\n </Button>\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('Calendar') }</div>\n </div>\n <Button className={classnames(styles['option-input-container'], styles['button-container'])} title={'Subscribe'} disabled={!(profile.auth && profile.auth.user && profile.auth.user._id)} tabIndex={-1} onClick={subscribeCalendarOnClick}>\n <Icon className={styles['icon']} icon={'ic_calendar'} />\n <div className={styles['label']}>{ t('SETTINGS_CALENDAR_SUBSCRIBE') }</div>\n </Button>\n </div>\n <div className={styles['option-container']}>\n <Button className={classnames(styles['option-input-container'], styles['link-container'])} title={t('SETTINGS_DATA_EXPORT')} tabIndex={-1} onClick={exportDataOnClick}>\n <div className={styles['label']}>{ t('SETTINGS_DATA_EXPORT') }</div>\n </Button>\n </div>\n <div className={styles['option-container']}>\n <Button className={classnames(styles['option-input-container'], styles['link-container'])} title={t('SETTINGS_SUPPORT')} target={'_blank'} href={'https://stremio.zendesk.com/hc/en-us'}>\n <div className={styles['label']}>{ t('SETTINGS_SUPPORT') }</div>\n </Button>\n </div>\n <div className={styles['option-container']}>\n <Button className={classnames(styles['option-input-container'], styles['link-container'])} title={'Source code'} target={'_blank'} href={`https://github.com/stremio/stremio-web/tree/${process.env.COMMIT_HASH}`}>\n <div className={styles['label']}>Source code</div>\n </Button>\n </div>\n <div className={styles['option-container']}>\n <Button className={classnames(styles['option-input-container'], styles['link-container'])} title={t('TERMS_OF_SERVICE')} target={'_blank'} href={'https://www.stremio.com/tos'}>\n <div className={styles['label']}>{ t('TERMS_OF_SERVICE') }</div>\n </Button>\n </div>\n <div className={styles['option-container']}>\n <Button className={classnames(styles['option-input-container'], styles['link-container'])} title={t('PRIVACY_POLICY')} target={'_blank'} href={'https://www.stremio.com/privacy'}>\n <div className={styles['label']}>{ t('PRIVACY_POLICY') }</div>\n </Button>\n </div>\n </div>\n <div ref={playerSectionRef} className={styles['section-container']}>\n <div className={styles['section-title']}>{ t('SETTINGS_NAV_PLAYER') }</div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SUBTITLES_LANGUAGE') }</div>\n </div>\n <Multiselect\n className={classnames(styles['option-input-container'], styles['multiselect-container'])}\n {...subtitlesLanguageSelect}\n />\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SUBTITLES_SIZE') }</div>\n </div>\n <Multiselect\n className={classnames(styles['option-input-container'], styles['multiselect-container'])}\n {...subtitlesSizeSelect}\n />\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SUBTITLES_COLOR') }</div>\n </div>\n <ColorInput\n className={classnames(styles['option-input-container'], styles['color-input-container'])}\n {...subtitlesTextColorInput}\n />\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SUBTITLES_COLOR_BACKGROUND') }</div>\n </div>\n <ColorInput\n className={classnames(styles['option-input-container'], styles['color-input-container'])}\n {...subtitlesBackgroundColorInput}\n />\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SUBTITLES_COLOR_OUTLINE') }</div>\n </div>\n <ColorInput\n className={classnames(styles['option-input-container'], styles['color-input-container'])}\n {...subtitlesOutlineColorInput}\n />\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_DEFAULT_AUDIO_TRACK') }</div>\n </div>\n <Multiselect\n className={classnames(styles['option-input-container'], styles['multiselect-container'])}\n {...audioLanguageSelect}\n />\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_REWIND_FAST_FORWARD_DURATION') }</div>\n </div>\n <Multiselect\n className={classnames(styles['option-input-container'], styles['multiselect-container'])}\n {...seekTimeDurationSelect}\n />\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('AUTO_PLAY') }</div>\n </div>\n <Checkbox\n className={classnames(styles['option-input-container'], styles['checkbox-container'])}\n {...bingeWatchingCheckbox}\n />\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_NEXT_VIDEO_POPUP_DURATION') }</div>\n </div>\n <Multiselect\n className={classnames(styles['option-input-container'], styles['multiselect-container'])}\n disabled={!profile.settings.bingeWatching}\n {...nextVideoPopupDurationSelect}\n />\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_PLAY_IN_BACKGROUND') }</div>\n </div>\n <Checkbox\n className={classnames(styles['option-input-container'], styles['checkbox-container'])}\n disabled={true}\n tabIndex={-1}\n {...playInBackgroundCheckbox}\n />\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_PLAY_IN_EXTERNAL_PLAYER') }</div>\n </div>\n <Multiselect\n className={classnames(styles['option-input-container'], styles['multiselect-container'])}\n {...playInExternalPlayerSelect}\n />\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_HWDEC') }</div>\n </div>\n <Checkbox\n className={classnames(styles['option-input-container'], styles['checkbox-container'])}\n disabled={true}\n tabIndex={-1}\n {...hardwareDecodingCheckbox}\n />\n </div>\n </div>\n <div ref={streamingServerSectionRef} className={styles['section-container']}>\n <div className={styles['section-title']}>{ t('SETTINGS_NAV_STREAMING') }</div>\n <div className={styles['option-container']}>\n <Button className={classnames(styles['option-input-container'], styles['button-container'])} title={'Reload'} onClick={reloadStreamingServer}>\n <div className={styles['label']}>{ t('RELOAD') }</div>\n </Button>\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('STATUS') }</div>\n </div>\n <div className={classnames(styles['option-input-container'], styles['info-container'])}>\n <div className={styles['label']}>\n {\n streamingServer.settings === null ?\n 'NotLoaded'\n :\n streamingServer.settings.type === 'Ready' ?\n t('SETTINGS_SERVER_STATUS_ONLINE')\n :\n streamingServer.settings.type === 'Error' ?\n `${t('SETTINGS_SERVER_STATUS_ERROR')}: (${streamingServer.settings.content})`\n :\n streamingServer.settings.type\n }\n </div>\n </div>\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>Url</div>\n </div>\n <div className={classnames(styles['option-input-container'], styles['configure-input-container'])}>\n <div className={styles['label']} title={streamingServerUrlInput.value}>{streamingServerUrlInput.value}</div>\n <Button className={styles['configure-button-container']} title={'Configure server url'} onClick={openConfigureServerUrlModal}>\n <Icon className={styles['icon']} icon={'ic_settings'} />\n </Button>\n </div>\n </div>\n {\n cacheSizeSelect !== null ?\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SERVER_CACHE_SIZE') }</div>\n </div>\n <Multiselect\n className={classnames(styles['option-input-container'], styles['multiselect-container'])}\n {...cacheSizeSelect}\n />\n </div>\n :\n null\n }\n {\n torrentProfileSelect !== null ?\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SERVER_TORRENT_PROFILE') }</div>\n </div>\n <Multiselect\n className={classnames(styles['option-input-container'], styles['multiselect-container'])}\n {...torrentProfileSelect}\n />\n </div>\n :\n null\n }\n </div>\n <div ref={shortcutsSectionRef} className={styles['section-container']}>\n <div className={styles['section-title']}>{ t('SETTINGS_NAV_SHORTCUTS') }</div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_PLAY_PAUSE') }</div>\n </div>\n <div className={classnames(styles['option-input-container'], styles['shortcut-container'])}>\n <kbd>{ t('SETTINGS_SHORTCUT_SPACE') }</kbd>\n </div>\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_SEEK_FORWARD') }</div>\n </div>\n <div className={classnames(styles['option-input-container'], styles['shortcut-container'])}>\n <kbd>→</kbd>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_OR') }</div>\n <kbd>⇧ { t('SETTINGS_SHORTCUT_SHIFT') }</kbd>\n <div className={styles['label']}>+</div>\n <kbd>→</kbd>\n </div>\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_SEEK_BACKWARD') }</div>\n </div>\n <div className={classnames(styles['option-input-container'], styles['shortcut-container'])}>\n <kbd>←</kbd>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_OR') }</div>\n <kbd>⇧ { t('SETTINGS_SHORTCUT_SHIFT') }</kbd>\n <div className={styles['label']}>+</div>\n <kbd>←</kbd>\n </div>\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_VOLUME_UP') }</div>\n </div>\n <div className={classnames(styles['option-input-container'], styles['shortcut-container'])}>\n <kbd>↑</kbd>\n </div>\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_VOLUME_DOWN') }</div>\n </div>\n <div className={classnames(styles['option-input-container'], styles['shortcut-container'])}>\n <kbd>↓</kbd>\n </div>\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_MENU_SUBTITLES') }</div>\n </div>\n <div className={classnames(styles['option-input-container'], styles['shortcut-container'])}>\n <kbd>S</kbd>\n </div>\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_MENU_INFO') }</div>\n </div>\n <div className={classnames(styles['option-input-container'], styles['shortcut-container'])}>\n <kbd>I</kbd>\n </div>\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_FULLSCREEN') }</div>\n </div>\n <div className={classnames(styles['option-input-container'], styles['shortcut-container'])}>\n <kbd>F</kbd>\n </div>\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_NAVIGATE_MENUS') }</div>\n </div>\n <div className={classnames(styles['option-input-container'], styles['shortcut-container'])}>\n <kbd>1</kbd>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_TO') }</div>\n <kbd>5</kbd>\n </div>\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_GO_TO_SEARCH') }</div>\n </div>\n <div className={classnames(styles['option-input-container'], styles['shortcut-container'])}>\n <kbd>0</kbd>\n </div>\n </div>\n <div className={styles['option-container']}>\n <div className={styles['option-name-container']}>\n <div className={styles['label']}>{ t('SETTINGS_SHORTCUT_EXIT_BACK') }</div>\n </div>\n <div className={classnames(styles['option-input-container'], styles['shortcut-container'])}>\n <kbd>{ t('SETTINGS_SHORTCUT_ESC') }</kbd>\n </div>\n </div>\n </div>\n </div>\n </div>\n {\n configureServerUrlModalOpen ?\n <ModalDialog\n className={styles['configure-server-url-modal-container']}\n title={t('SETTINGS_SERVER_CONFIGURE_TITLE')}\n buttons={configureServerUrlModalButtons}\n onCloseRequest={closeConfigureServerUrlModal}>\n <TextInput\n ref={configureServerUrlInputRef}\n autoFocus={true}\n className={styles['server-url-input']}\n type={'text'}\n defaultValue={streamingServerUrlInput.value}\n placeholder={t('SETTINGS_SERVER_CONFIGURE_INPUT')}\n onSubmit={configureServerUrlOnSubmit}\n />\n </ModalDialog>\n :\n null\n }\n </MainNavBars>\n );\n};\n\nconst SettingsFallback = () => (\n <MainNavBars className={styles['settings-container']} route={'settings'} />\n);\n\nmodule.exports = withCoreSuspender(Settings, SettingsFallback);\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Settings = require('./Settings');\n\nmodule.exports = Settings;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useServices } = require('stremio/services');\nconst { useModelState } = require('stremio/common');\n\nconst map = (dataExport) => ({\n ...dataExport,\n exportUrl: dataExport !== null && dataExport.exportUrl !== null && dataExport.exportUrl.type === 'Ready' ?\n dataExport.exportUrl.content\n :\n null\n});\n\nconst useDataExport = () => {\n const { core } = useServices();\n const loadDataExport = React.useCallback(() => {\n core.transport.dispatch({\n action: 'Load',\n args: {\n model: 'DataExport',\n }\n }, 'data_export');\n }, []);\n const dataExport = useModelState({ model: 'data_export', map });\n return [\n dataExport,\n loadDataExport\n ];\n};\n\nmodule.exports = useDataExport;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst { useTranslation } = require('react-i18next');\nconst { useServices } = require('stremio/services');\nconst { CONSTANTS, interfaceLanguages, languageNames, externalPlayerOptions } = require('stremio/common');\n\nconst useProfileSettingsInputs = (profile) => {\n const { t } = useTranslation();\n const { core } = useServices();\n // TODO combine those useMemo in one\n const interfaceLanguageSelect = React.useMemo(() => ({\n options: interfaceLanguages.map(({ name, codes }) => ({\n value: codes[0],\n label: name,\n })),\n selected: [\n interfaceLanguages.find(({ codes }) => codes[1] === profile.settings.interfaceLanguage)?.codes?.[0] || profile.settings.interfaceLanguage\n ],\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n interfaceLanguage: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const subtitlesLanguageSelect = React.useMemo(() => ({\n options: Object.keys(languageNames).map((code) => ({\n value: code,\n label: languageNames[code]\n })),\n selected: [profile.settings.subtitlesLanguage],\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n subtitlesLanguage: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const subtitlesSizeSelect = React.useMemo(() => ({\n options: CONSTANTS.SUBTITLES_SIZES.map((size) => ({\n value: `${size}`,\n label: `${size}%`\n })),\n selected: [`${profile.settings.subtitlesSize}`],\n renderLabelText: () => {\n return `${profile.settings.subtitlesSize}%`;\n },\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n subtitlesSize: parseInt(event.value, 10)\n }\n }\n });\n }\n }), [profile.settings]);\n const subtitlesTextColorInput = React.useMemo(() => ({\n value: profile.settings.subtitlesTextColor,\n onChange: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n subtitlesTextColor: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const subtitlesBackgroundColorInput = React.useMemo(() => ({\n value: profile.settings.subtitlesBackgroundColor,\n onChange: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n subtitlesBackgroundColor: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const subtitlesOutlineColorInput = React.useMemo(() => ({\n value: profile.settings.subtitlesOutlineColor,\n onChange: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n subtitlesOutlineColor: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const audioLanguageSelect = React.useMemo(() => ({\n options: Object.keys(languageNames).map((code) => ({\n value: code,\n label: languageNames[code]\n })),\n selected: [profile.settings.audioLanguage],\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n audioLanguage: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const seekTimeDurationSelect = React.useMemo(() => ({\n options: CONSTANTS.SEEK_TIME_DURATIONS.map((size) => ({\n value: `${size}`,\n label: `${size / 1000} ${t('SECONDS')}`\n })),\n selected: [`${profile.settings.seekTimeDuration}`],\n renderLabelText: () => {\n return `${profile.settings.seekTimeDuration / 1000} ${t('SECONDS')}`;\n },\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n seekTimeDuration: parseInt(event.value, 10)\n }\n }\n });\n }\n }), [profile.settings]);\n const playInExternalPlayerSelect = React.useMemo(() => ({\n options: externalPlayerOptions.map((opt) => {\n opt.label = t(opt.label);\n return opt;\n }),\n selected: [`${profile.settings.playerType || 'internal'}`],\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n playerType: event.value\n }\n }\n });\n }\n }), [profile.settings]);\n const nextVideoPopupDurationSelect = React.useMemo(() => ({\n options: CONSTANTS.NEXT_VIDEO_POPUP_DURATIONS.map((duration) => ({\n value: `${duration}`,\n label: duration === 0 ? 'Disabled' : `${duration / 1000} ${t('SECONDS')}`\n })),\n selected: [`${profile.settings.nextVideoNotificationDuration}`],\n renderLabelText: () => {\n return profile.settings.nextVideoNotificationDuration === 0 ?\n 'Disabled'\n :\n `${profile.settings.nextVideoNotificationDuration / 1000} ${t('SECONDS')}`;\n },\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n nextVideoNotificationDuration: parseInt(event.value, 10)\n }\n }\n });\n }\n }), [profile.settings]);\n const bingeWatchingCheckbox = React.useMemo(() => ({\n checked: profile.settings.bingeWatching,\n onClick: () => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n bingeWatching: !profile.settings.bingeWatching\n }\n }\n });\n }\n }), [profile.settings]);\n const playInBackgroundCheckbox = React.useMemo(() => ({\n checked: profile.settings.playInBackground,\n onClick: () => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n playInBackground: !profile.settings.playInBackground\n }\n }\n });\n }\n }), [profile.settings]);\n const hardwareDecodingCheckbox = React.useMemo(() => ({\n checked: profile.settings.hardwareDecoding,\n onClick: () => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n hardwareDecoding: !profile.settings.hardwareDecoding\n }\n }\n });\n }\n }), [profile.settings]);\n const streamingServerUrlInput = React.useMemo(() => ({\n value: profile.settings.streamingServerUrl,\n onChange: (value) => {\n core.transport.dispatch({\n action: 'Ctx',\n args: {\n action: 'UpdateSettings',\n args: {\n ...profile.settings,\n streamingServerUrl: value\n }\n }\n });\n }\n }), [profile.settings]);\n return {\n interfaceLanguageSelect,\n subtitlesLanguageSelect,\n subtitlesSizeSelect,\n subtitlesTextColorInput,\n subtitlesBackgroundColorInput,\n subtitlesOutlineColorInput,\n audioLanguageSelect,\n seekTimeDurationSelect,\n playInExternalPlayerSelect,\n nextVideoPopupDurationSelect,\n bingeWatchingCheckbox,\n playInBackgroundCheckbox,\n hardwareDecodingCheckbox,\n streamingServerUrlInput\n };\n};\n\nmodule.exports = useProfileSettingsInputs;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst isEqual = require('lodash.isequal');\nconst { useServices } = require('stremio/services');\n\nconst CACHE_SIZES = [0, 2147483648, 5368709120, 10737418240, null];\n\nconst cacheSizeToString = (size) => {\n return size === null ?\n 'Infinite'\n :\n size === 0 ?\n 'No caching'\n :\n `${Math.ceil(((size / 1024 / 1024 / 1024) + Number.EPSILON) * 100) / 100}GiB`;\n};\n\nconst TORRENT_PROFILES = {\n default: {\n btDownloadSpeedHardLimit: 3670016,\n btDownloadSpeedSoftLimit: 2621440,\n btHandshakeTimeout: 20000,\n btMaxConnections: 55,\n btMinPeersForStable: 5,\n btRequestTimeout: 4000\n },\n soft: {\n btDownloadSpeedHardLimit: 1677721.6,\n btDownloadSpeedSoftLimit: 1677721.6,\n btHandshakeTimeout: 20000,\n btMaxConnections: 35,\n btMinPeersForStable: 5,\n btRequestTimeout: 4000\n },\n fast: {\n btDownloadSpeedHardLimit: 39321600,\n btDownloadSpeedSoftLimit: 4194304,\n btHandshakeTimeout: 20000,\n btMaxConnections: 200,\n btMinPeersForStable: 10,\n btRequestTimeout: 4000\n },\n 'ultra fast': {\n btDownloadSpeedHardLimit: 78643200,\n btDownloadSpeedSoftLimit: 8388608,\n btHandshakeTimeout: 25000,\n btMaxConnections: 400,\n btMinPeersForStable: 10,\n btRequestTimeout: 6000\n }\n};\n\nconst useStreamingServerSettingsInputs = (streamingServer) => {\n const { core } = useServices();\n // TODO combine those useMemo in one\n const cacheSizeSelect = React.useMemo(() => {\n if (streamingServer.settings === null || streamingServer.settings.type !== 'Ready') {\n return null;\n }\n\n return {\n options: CACHE_SIZES.map((size) => ({\n label: cacheSizeToString(size),\n value: JSON.stringify(size)\n })),\n selected: [JSON.stringify(streamingServer.settings.content.cacheSize)],\n renderLabelText: () => {\n return cacheSizeToString(streamingServer.settings.content.cacheSize);\n },\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'UpdateSettings',\n args: {\n ...streamingServer.settings.content,\n cacheSize: JSON.parse(event.value)\n }\n }\n });\n }\n };\n }, [streamingServer.settings]);\n const torrentProfileSelect = React.useMemo(() => {\n if (streamingServer.settings === null || streamingServer.settings.type !== 'Ready') {\n return null;\n }\n\n const selectedTorrentProfile = {\n btDownloadSpeedHardLimit: streamingServer.settings.content.btDownloadSpeedHardLimit,\n btDownloadSpeedSoftLimit: streamingServer.settings.content.btDownloadSpeedSoftLimit,\n btHandshakeTimeout: streamingServer.settings.content.btHandshakeTimeout,\n btMaxConnections: streamingServer.settings.content.btMaxConnections,\n btMinPeersForStable: streamingServer.settings.content.btMinPeersForStable,\n btRequestTimeout: streamingServer.settings.content.btRequestTimeout\n };\n const isCustomTorrentProfileSelected = Object.values(TORRENT_PROFILES).every((torrentProfile) => {\n return !isEqual(torrentProfile, selectedTorrentProfile);\n });\n return {\n options: Object.keys(TORRENT_PROFILES)\n .map((profileName) => ({\n label: profileName,\n value: JSON.stringify(TORRENT_PROFILES[profileName])\n }))\n .concat(\n isCustomTorrentProfileSelected ?\n [{\n label: 'custom',\n value: JSON.stringify(selectedTorrentProfile)\n }]\n :\n []\n ),\n selected: [JSON.stringify(selectedTorrentProfile)],\n onSelect: (event) => {\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'UpdateSettings',\n args: {\n ...streamingServer.settings.content,\n ...JSON.parse(event.value)\n }\n }\n });\n }\n };\n }, [streamingServer.settings]);\n return { cacheSizeSelect, torrentProfileSelect };\n};\n\nmodule.exports = useStreamingServerSettingsInputs;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Addons = require('./Addons');\nconst Board = require('./Board');\nconst Discover = require('./Discover');\nconst Library = require('./Library');\nconst MetaDetails = require('./MetaDetails');\nconst NotFound = require('./NotFound');\nconst Search = require('./Search');\nconst Settings = require('./Settings');\nconst Player = require('./Player');\nconst Intro = require('./Intro');\n\nmodule.exports = {\n Addons,\n Board,\n Discover,\n Library,\n MetaDetails,\n NotFound,\n Search,\n Settings,\n Player,\n Intro\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\nconst ChromecastTransport = require('./ChromecastTransport');\n\nfunction Chromecast() {\n let active = false;\n let error = null;\n let starting = false;\n let transport = null;\n\n const events = new EventEmitter();\n\n function onTransportInit() {\n active = true;\n error = null;\n starting = false;\n onStateChanged();\n }\n function onTransportInitError(args) {\n console.error(args);\n active = false;\n error = new Error('Google Cast API not available', { cause: args });\n starting = false;\n onStateChanged();\n transport = null;\n }\n function onStateChanged() {\n events.emit('stateChanged');\n }\n\n Object.defineProperties(this, {\n active: {\n configurable: false,\n enumerable: true,\n get: function() {\n return active;\n }\n },\n error: {\n configurable: false,\n enumerable: true,\n get: function() {\n return error;\n }\n },\n starting: {\n configurable: false,\n enumerable: true,\n get: function() {\n return starting;\n }\n },\n transport: {\n configurable: false,\n enumerable: true,\n get: function() {\n return transport;\n }\n }\n });\n\n this.start = function() {\n if (active || error instanceof Error || starting) {\n return;\n }\n\n starting = true;\n transport = new ChromecastTransport();\n transport.on('init', onTransportInit);\n transport.on('init-error', onTransportInitError);\n onStateChanged();\n };\n this.stop = function() {\n active = false;\n error = null;\n starting = false;\n onStateChanged();\n if (transport !== null) {\n transport.removeAllListeners();\n transport = null;\n }\n };\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n}\n\nmodule.exports = Chromecast;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\nconst hat = require('hat');\n\nconst MESSAGE_NAMESPACE = 'urn:x-cast:com.stremio';\nconst CHUNK_SIZE = 20000;\n\nlet castAPIAvailable = null;\nconst castAPIEvents = new EventEmitter();\nwindow['__onGCastApiAvailable'] = function(available) {\n delete window['__onGCastApiAvailable'];\n castAPIAvailable = !!available;\n castAPIEvents.emit('availabilityChanged');\n};\n\nconst initialize = () => {\n return new Promise((resolve, reject) => {\n function onCastAPIAvailabilityChanged() {\n castAPIEvents.off('availabilityChanged', onCastAPIAvailabilityChanged);\n if (castAPIAvailable) {\n resolve();\n } else {\n reject(new Error('window.cast api not available'));\n }\n }\n if (castAPIAvailable !== null) {\n onCastAPIAvailabilityChanged();\n } else {\n castAPIEvents.on('availabilityChanged', onCastAPIAvailabilityChanged);\n }\n });\n};\n\nfunction ChromecastTransport() {\n const events = new EventEmitter();\n const messages = {};\n\n initialize()\n .then(() => {\n cast.framework.CastContext.getInstance().addEventListener(\n cast.framework.CastContextEventType.CAST_STATE_CHANGED,\n onCastStateChanged\n );\n cast.framework.CastContext.getInstance().addEventListener(\n cast.framework.CastContextEventType.SESSION_STATE_CHANGED,\n onSesstionStateChanged\n );\n })\n .then(() => {\n try {\n events.emit('init');\n } catch (error) {\n console.error('ChromecastTransport', error);\n }\n })\n .catch((error) => {\n events.emit('init-error', error);\n });\n\n function onMessage(_, message) {\n try {\n const { id, chunk, index, length } = JSON.parse(message);\n messages[id] = messages[id] || [];\n messages[id][index] = chunk;\n if (Object.keys(messages[id]).length === length) {\n const parsedMessage = JSON.parse(messages[id].join(''));\n delete messages[id];\n events.emit('message', parsedMessage);\n }\n } catch (error) {\n events.emit('message-error', error);\n }\n }\n function onApplicationStatusChanged(event) {\n events.emit(cast.framework.CastSession.APPLICATION_STATUS_CHANGED, event);\n }\n function onApplicationMetadataChanged(event) {\n events.emit(cast.framework.CastSession.APPLICATION_METADATA_CHANGED, event);\n }\n function onActiveInputStateChanged(event) {\n events.emit(cast.framework.CastSession.ACTIVE_INPUT_STATE_CHANGED, event);\n }\n function onVolumeChanged(event) {\n events.emit(cast.framework.CastSession.VOLUME_CHANGED, event);\n }\n function onMediaSessionChanged(event) {\n events.emit(cast.framework.CastSession.MEDIA_SESSION, event);\n }\n function onCastStateChanged(event) {\n events.emit(cast.framework.CastContextEventType.CAST_STATE_CHANGED, event);\n }\n function onSesstionStateChanged(event) {\n events.emit(cast.framework.CastContextEventType.SESSION_STATE_CHANGED, event);\n switch (event.sessionState) {\n case cast.framework.SessionState.SESSION_STARTED: {\n event.session.addMessageListener(MESSAGE_NAMESPACE, onMessage);\n event.session.addEventListener(cast.framework.CastSession.APPLICATION_STATUS_CHANGED, onApplicationStatusChanged);\n event.session.addEventListener(cast.framework.CastSession.APPLICATION_METADATA_CHANGED, onApplicationMetadataChanged);\n event.session.addEventListener(cast.framework.CastSession.ACTIVE_INPUT_STATE_CHANGED, onActiveInputStateChanged);\n event.session.addEventListener(cast.framework.CastSession.VOLUME_CHANGED, onVolumeChanged);\n event.session.addEventListener(cast.framework.CastSession.MEDIA_SESSION, onMediaSessionChanged);\n break;\n }\n case cast.framework.SessionState.SESSION_ENDED: {\n event.session.removeMessageListener(MESSAGE_NAMESPACE, onMessage);\n event.session.removeEventListener(cast.framework.CastSession.APPLICATION_STATUS_CHANGED, onApplicationStatusChanged);\n event.session.removeEventListener(cast.framework.CastSession.APPLICATION_METADATA_CHANGED, onApplicationMetadataChanged);\n event.session.removeEventListener(cast.framework.CastSession.ACTIVE_INPUT_STATE_CHANGED, onActiveInputStateChanged);\n event.session.removeEventListener(cast.framework.CastSession.VOLUME_CHANGED, onVolumeChanged);\n event.session.removeEventListener(cast.framework.CastSession.MEDIA_SESSION, onMediaSessionChanged);\n break;\n }\n }\n }\n\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n this.removeAllListeners = function() {\n events.removeAllListeners();\n };\n this.getCastState = function() {\n return cast.framework.CastContext.getInstance().getCastState();\n };\n this.getSessionState = function() {\n return cast.framework.CastContext.getInstance().getSessionState();\n };\n this.getCastDevice = function() {\n const session = cast.framework.CastContext.getInstance().getCurrentSession();\n if (session !== null) {\n return session.getCastDevice();\n }\n\n return null;\n };\n this.setOptions = function(options) {\n cast.framework.CastContext.getInstance().setOptions(options);\n };\n this.requestSession = function() {\n return cast.framework.CastContext.getInstance().requestSession();\n };\n this.endCurrentSession = function(stopCasting) {\n cast.framework.CastContext.getInstance().endCurrentSession(stopCasting);\n };\n this.sendMessage = function(message) {\n const castSession = cast.framework.CastContext.getInstance().getCurrentSession();\n if (castSession !== null) {\n const serializedMessage = JSON.stringify(message);\n const chunksCount = Math.ceil(serializedMessage.length / CHUNK_SIZE);\n const chunks = [];\n for (let i = 0; i < chunksCount; i++) {\n const start = i * CHUNK_SIZE;\n const chunk = serializedMessage.slice(start, start + CHUNK_SIZE);\n chunks.push(chunk);\n }\n const id = hat();\n return Promise.all(chunks.map((chunk, index) => {\n return castSession.sendMessage(MESSAGE_NAMESPACE, {\n id,\n chunk,\n index,\n length: chunks.length\n });\n }));\n } else {\n return Promise.reject(new Error('Session not started'));\n }\n };\n}\n\nmodule.exports = ChromecastTransport;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Chromecast = require('./Chromecast');\n\nmodule.exports = Chromecast;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\nconst CoreTransport = require('./CoreTransport');\n\nfunction Core(args) {\n let active = false;\n let error = null;\n let starting = false;\n let transport = null;\n\n const events = new EventEmitter();\n\n function onTransportInit() {\n active = true;\n error = null;\n starting = false;\n onStateChanged();\n }\n function onTransportError(args) {\n console.error(args);\n active = false;\n error = new Error('Stremio Core Transport initialization failed', { cause: args });\n starting = false;\n onStateChanged();\n transport = null;\n }\n function onStateChanged() {\n events.emit('stateChanged');\n }\n\n Object.defineProperties(this, {\n active: {\n configurable: false,\n enumerable: true,\n get: function() {\n return active;\n }\n },\n error: {\n configurable: false,\n enumerable: true,\n get: function() {\n return error;\n }\n },\n starting: {\n configurable: false,\n enumerable: true,\n get: function() {\n return starting;\n }\n },\n transport: {\n configurable: false,\n enumerable: true,\n get: function() {\n return transport;\n }\n }\n });\n\n this.start = function() {\n if (active || error instanceof Error || starting) {\n return;\n }\n\n starting = true;\n transport = new CoreTransport(args);\n transport.on('init', onTransportInit);\n transport.on('error', onTransportError);\n onStateChanged();\n };\n this.stop = function() {\n active = false;\n error = null;\n starting = false;\n onStateChanged();\n if (transport !== null) {\n transport.removeAllListeners();\n transport = null;\n }\n };\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n}\n\nmodule.exports = Core;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\nconst Bridge = require('@stremio/stremio-core-web/bridge');\n\nfunction CoreTransport(args) {\n const events = new EventEmitter();\n const worker = new Worker(`${process.env.COMMIT_HASH}/scripts/worker.js`);\n const bridge = new Bridge(window, worker);\n\n window.onCoreEvent = ({ name, args }) => {\n try {\n events.emit(name, args);\n } catch (error) {\n console.error('CoreTransport', error);\n }\n };\n\n bridge.call(['init'], [args])\n .then(() => {\n try {\n events.emit('init');\n } catch (error) {\n console.error('CoreTransport', error);\n }\n })\n .catch((error) => {\n events.emit('error', error);\n });\n\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n this.removeAllListeners = function() {\n events.removeAllListeners();\n };\n this.getState = async function(field) {\n return bridge.call(['getState'], [field]);\n };\n this.getDebugState = async function() {\n return bridge.call(['getDebugState'], []);\n };\n this.dispatch = async function(action, field) {\n return bridge.call(['dispatch'], [action, field, location.hash]);\n };\n this.analytics = async function(event) {\n return bridge.call(['analytics'], [event, location.hash]);\n };\n this.decodeStream = async function(stream) {\n return bridge.call(['decodeStream'], [stream]);\n };\n}\n\nmodule.exports = CoreTransport;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Core = require('./Core');\n\nmodule.exports = Core;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\n\nfunction DragAndDrop({ core }) {\n let active = false;\n\n const events = new EventEmitter();\n\n function onDragOver(event) {\n event.preventDefault();\n }\n async function onDrop(event) {\n event.preventDefault();\n if (event.dataTransfer.files instanceof FileList && event.dataTransfer.files.length > 0) {\n const file = event.dataTransfer.files[0];\n switch (file.type) {\n case 'application/x-bittorrent': {\n try {\n const torrent = await file.arrayBuffer();\n core.transport.dispatch({\n action: 'StreamingServer',\n args: {\n action: 'CreateTorrent',\n args: Array.from(new Uint8Array(torrent))\n }\n });\n } catch (error) {\n events.emit('error', {\n message: 'Failed to process file',\n file: {\n name: file.name,\n type: file.type\n }\n });\n }\n break;\n }\n default: {\n events.emit('error', {\n message: 'Unsupported file',\n file: {\n name: file.name,\n type: file.type\n }\n });\n }\n }\n }\n }\n function onStateChanged() {\n events.emit('stateChanged');\n }\n\n Object.defineProperties(this, {\n active: {\n configurable: false,\n enumerable: true,\n get: function() {\n return active;\n }\n }\n });\n\n this.start = function() {\n if (active) {\n return;\n }\n\n window.addEventListener('dragover', onDragOver);\n window.addEventListener('drop', onDrop);\n active = true;\n onStateChanged();\n };\n this.stop = function() {\n window.removeEventListener('dragover', onDragOver);\n window.removeEventListener('drop', onDrop);\n active = false;\n onStateChanged();\n };\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n}\n\nmodule.exports = DragAndDrop;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst DragAndDrop = require('./DragAndDrop');\n\nmodule.exports = DragAndDrop;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\n\nfunction KeyboardShortcuts() {\n let active = false;\n\n const events = new EventEmitter();\n\n function onKeyDown(event) {\n if (event.keyboardShortcutPrevented || event.target.tagName === 'INPUT' || event.ctrlKey || event.altKey || event.shiftKey || event.metaKey) {\n return;\n }\n\n switch (event.code) {\n case 'Digit0': {\n event.preventDefault();\n window.location = '#/search';\n break;\n }\n case 'Digit1': {\n event.preventDefault();\n window.location = '#/';\n break;\n }\n case 'Digit2': {\n event.preventDefault();\n window.location = '#/discover';\n break;\n }\n case 'Digit3': {\n event.preventDefault();\n window.location = '#/library';\n break;\n }\n case 'Digit4': {\n event.preventDefault();\n window.location = '#/settings';\n break;\n }\n case 'Digit5': {\n event.preventDefault();\n window.location = '#/addons';\n break;\n }\n case 'Backspace': {\n event.preventDefault();\n if (event.ctrlKey) {\n window.history.forward();\n } else {\n window.history.back();\n }\n\n break;\n }\n case 'KeyF': {\n event.preventDefault();\n if (document.fullscreenElement === document.documentElement) {\n document.exitFullscreen();\n } else {\n document.documentElement.requestFullscreen();\n }\n\n break;\n }\n }\n }\n function onStateChanged() {\n events.emit('stateChanged');\n }\n\n Object.defineProperties(this, {\n active: {\n configurable: false,\n enumerable: true,\n get: function() {\n return active;\n }\n }\n });\n\n this.start = function() {\n if (active) {\n return;\n }\n\n window.addEventListener('keydown', onKeyDown);\n active = true;\n onStateChanged();\n };\n this.stop = function() {\n window.removeEventListener('keydown', onKeyDown);\n active = false;\n onStateChanged();\n };\n}\n\nmodule.exports = KeyboardShortcuts;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst KeyboardShortcuts = require('./KeyboardShortcuts');\n\nmodule.exports = KeyboardShortcuts;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\n\nconst ServicesContext = React.createContext({});\n\nServicesContext.displayName = 'ServicesContext';\n\nmodule.exports = ServicesContext;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst PropTypes = require('prop-types');\nconst ServicesContext = require('./ServicesContext');\n\nconst ServicesProvider = ({ services = {}, children }) => {\n return (\n <ServicesContext.Provider value={services}>\n {children}\n </ServicesContext.Provider>\n );\n};\n\nServicesProvider.propTypes = {\n services: PropTypes.object,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ])\n};\n\nmodule.exports = ServicesProvider;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst ServicesProvider = require('./ServicesProvider');\nconst useServices = require('./useServices');\n\nmodule.exports = {\n ServicesProvider,\n useServices\n};\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst React = require('react');\nconst ServicesContext = require('./ServicesContext');\n\nconst useServices = () => {\n return React.useContext(ServicesContext);\n};\n\nmodule.exports = useServices;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\nconst ShellTransport = require('./ShellTransport');\n\nfunction Shell() {\n let active = false;\n let error = null;\n let starting = false;\n let transport = null;\n\n const events = new EventEmitter();\n\n function onTransportInit() {\n active = true;\n error = null;\n starting = false;\n onStateChanged();\n }\n function onTransportInitError(err) {\n console.error(err);\n active = false;\n error = new Error(err);\n starting = false;\n onStateChanged();\n transport = null;\n }\n\n function onStateChanged() {\n events.emit('stateChanged');\n }\n\n Object.defineProperties(this, {\n active: {\n configurable: false,\n enumerable: true,\n get: function() {\n return active;\n }\n },\n error: {\n configurable: false,\n enumerable: true,\n get: function() {\n return error;\n }\n },\n starting: {\n configurable: false,\n enumerable: true,\n get: function() {\n return starting;\n }\n },\n transport: {\n configurable: false,\n enumerable: true,\n get: function() {\n return transport;\n }\n }\n });\n\n this.start = function() {\n if (active || error instanceof Error || starting) {\n return;\n }\n\n active = false;\n starting = true;\n transport = new ShellTransport();\n transport.on('init', onTransportInit);\n transport.on('init-error', onTransportInitError);\n onStateChanged();\n };\n this.stop = function() {\n active = false;\n error = null;\n starting = false;\n onStateChanged();\n };\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n}\n\nmodule.exports = Shell;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst EventEmitter = require('eventemitter3');\n\nlet shellAvailable = false;\nconst shellEvents = new EventEmitter();\n\nconst QtMsgTypes = {\n signal: 1,\n propertyUpdate: 2,\n init: 3,\n idle: 4,\n debug: 5,\n invokeMethod: 6,\n connectToSignal: 7,\n disconnectFromSignal: 8,\n setProperty: 9,\n response: 10,\n};\nconst QtObjId = 'transport'; // the ID of our transport object\n\nwindow.initShellComm = function () {\n delete window.initShellComm;\n shellEvents.emit('availabilityChanged');\n};\n\nconst initialize = () => {\n if(!window.qt) return Promise.reject('Qt API not found');\n return new Promise((resolve) => {\n function onShellAvailabilityChanged() {\n shellEvents.off('availabilityChanged', onShellAvailabilityChanged);\n shellAvailable = true;\n resolve();\n }\n if (shellAvailable) {\n onShellAvailabilityChanged();\n } else {\n shellEvents.on('availabilityChanged', onShellAvailabilityChanged);\n }\n });\n};\n\nfunction ShellTransport() {\n const events = new EventEmitter();\n\n this.props = {};\n\n const shell = this;\n initialize()\n .then(() => {\n const transport = window.qt && window.qt.webChannelTransport;\n if (!transport) throw 'no viable transport found (qt.webChannelTransport)';\n\n let id = 0;\n function send(msg) {\n msg.id = id++;\n transport.send(JSON.stringify(msg));\n }\n\n transport.onmessage = function (message) {\n const msg = JSON.parse(message.data);\n if (msg.id === 0) {\n const obj = msg.data[QtObjId];\n\n obj.properties.slice(1).forEach(function (prop) {\n shell.props[prop[1]] = prop[3];\n });\n if (typeof shell.props.shellVersion === 'string') {\n shell.shellVersionArr = (\n shell.props.shellVersion.match(/(\\d+)\\.(\\d+)\\.(\\d+)/) || []\n )\n .slice(1, 4)\n .map(Number);\n }\n events.emit('received-props', shell.props);\n\n obj.signals.forEach(function (sig) {\n send({\n type: QtMsgTypes.connectToSignal,\n object: QtObjId,\n signal: sig[1],\n });\n });\n\n const onEvent = obj.methods.filter(function (x) {\n return x[0] === 'onEvent';\n })[0];\n\n shell.send = function (ev, args) {\n send({\n type: QtMsgTypes.invokeMethod,\n object: QtObjId,\n method: onEvent[1],\n args: [ev, args || {}],\n });\n };\n\n shell.send('app-ready', {}); // signal that we're ready to take events\n }\n\n if (msg.object === QtObjId && msg.type === QtMsgTypes.signal)\n events.emit(msg.args[0], msg.args[1]);\n events.emit('init');\n };\n send({ type: QtMsgTypes.init });\n }) .catch((error) => {\n events.emit('init-error', error);\n });\n\n this.on = function(name, listener) {\n events.on(name, listener);\n };\n this.off = function(name, listener) {\n events.off(name, listener);\n };\n this.removeAllListeners = function() {\n events.removeAllListeners();\n };\n}\n\nmodule.exports = ShellTransport;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Shell = require('./Shell');\n\nmodule.exports = Shell;\n","// Copyright (C) 2017-2023 Smart code 203358507\n\nconst Chromecast = require('./Chromecast');\nconst Core = require('./Core');\nconst DragAndDrop = require('./DragAndDrop');\nconst KeyboardShortcuts = require('./KeyboardShortcuts');\nconst { ServicesProvider, useServices } = require('./ServicesContext');\nconst Shell = require('./Shell');\n\nmodule.exports = {\n Chromecast,\n Core,\n DragAndDrop,\n KeyboardShortcuts,\n ServicesProvider,\n useServices,\n Shell\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","module.exports = parseRange\nmodule.exports.parse = parseRange\nmodule.exports.compose = composeRange\n\nfunction composeRange (range) {\n return range\n .reduce((acc, cur, idx, arr) => {\n if (idx === 0 || cur !== arr[idx - 1] + 1) acc.push([])\n acc[acc.length - 1].push(cur)\n return acc\n }, [])\n .map((cur) => {\n return cur.length > 1 ? `${cur[0]}-${cur[cur.length - 1]}` : `${cur[0]}`\n })\n}\n\nfunction parseRange (range) {\n const generateRange = (start, end = start) => Array.from({ length: end - start + 1 }, (cur, idx) => idx + start)\n\n return range\n .reduce((acc, cur, idx, arr) => {\n const r = cur.split('-').map(cur => parseInt(cur))\n return acc.concat(generateRange(...r))\n }, [])\n}\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.bowser=t():e.bowser=t()}(this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=90)}({17:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||\"\"},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||\"\"},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return}},e.getMacOSVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return\"Leopard\";case 6:return\"Snow Leopard\";case 7:return\"Lion\";case 8:return\"Mountain Lion\";case 9:return\"Mavericks\";case 10:return\"Yosemite\";case 11:return\"El Capitan\";case 12:return\"Sierra\";case 13:return\"High Sierra\";case 14:return\"Mojave\";case 15:return\"Catalina\";default:return}},e.getAndroidVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?\"Cupcake\":1===t[0]&&t[1]>=6?\"Donut\":2===t[0]&&t[1]<2?\"Eclair\":2===t[0]&&2===t[1]?\"Froyo\":2===t[0]&&t[1]>2?\"Gingerbread\":3===t[0]?\"Honeycomb\":4===t[0]&&t[1]<1?\"Ice Cream Sandwich\":4===t[0]&&t[1]<4?\"Jelly Bean\":4===t[0]&&t[1]>=4?\"KitKat\":5===t[0]?\"Lollipop\":6===t[0]?\"Marshmallow\":7===t[0]?\"Nougat\":8===t[0]?\"Oreo\":9===t[0]?\"Pie\":void 0},e.getVersionPrecision=function(e){return e.split(\".\").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(i,s),o=0,u=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),n=t+new Array(r+1).join(\".0\");return e.map(n.split(\".\"),(function(e){return new Array(20-e.length).join(\"0\")+e})).reverse()}));for(n&&(o=a-Math.min(i,s)),a-=1;a>=o;){if(u[0][a]>u[1][a])return 1;if(u[0][a]===u[1][a]){if(a===o)return 0;a-=1}else if(u[0][a]<u[1][a])return-1}},e.map=function(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n},e.find=function(e,t){var r,n;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,n=e.length;r<n;r+=1){var i=e[r];if(t(i,r))return i}},e.assign=function(e){for(var t,r,n=e,i=arguments.length,s=new Array(i>1?i-1:0),a=1;a<i;a++)s[a-1]=arguments[a];if(Object.assign)return Object.assign.apply(Object,[e].concat(s));var o=function(){var e=s[t];\"object\"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){n[t]=e[t]}))};for(t=0,r=s.length;t<r;t+=1)o();return e},e.getBrowserAlias=function(e){return n.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return n.BROWSER_MAP[e]||\"\"},e}();t.default=i,e.exports=t.default},18:function(e,t,r){\"use strict\";t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0;t.BROWSER_ALIASES_MAP={\"Amazon Silk\":\"amazon_silk\",\"Android Browser\":\"android\",Bada:\"bada\",BlackBerry:\"blackberry\",Chrome:\"chrome\",Chromium:\"chromium\",Electron:\"electron\",Epiphany:\"epiphany\",Firefox:\"firefox\",Focus:\"focus\",Generic:\"generic\",\"Google Search\":\"google_search\",Googlebot:\"googlebot\",\"Internet Explorer\":\"ie\",\"K-Meleon\":\"k_meleon\",Maxthon:\"maxthon\",\"Microsoft Edge\":\"edge\",\"MZ Browser\":\"mz\",\"NAVER Whale Browser\":\"naver\",Opera:\"opera\",\"Opera Coast\":\"opera_coast\",PhantomJS:\"phantomjs\",Puffin:\"puffin\",QupZilla:\"qupzilla\",QQ:\"qq\",QQLite:\"qqlite\",Safari:\"safari\",Sailfish:\"sailfish\",\"Samsung Internet for Android\":\"samsung_internet\",SeaMonkey:\"seamonkey\",Sleipnir:\"sleipnir\",Swing:\"swing\",Tizen:\"tizen\",\"UC Browser\":\"uc\",Vivaldi:\"vivaldi\",\"WebOS Browser\":\"webos\",WeChat:\"wechat\",\"Yandex Browser\":\"yandex\",Roku:\"roku\"};t.BROWSER_MAP={amazon_silk:\"Amazon Silk\",android:\"Android Browser\",bada:\"Bada\",blackberry:\"BlackBerry\",chrome:\"Chrome\",chromium:\"Chromium\",electron:\"Electron\",epiphany:\"Epiphany\",firefox:\"Firefox\",focus:\"Focus\",generic:\"Generic\",googlebot:\"Googlebot\",google_search:\"Google Search\",ie:\"Internet Explorer\",k_meleon:\"K-Meleon\",maxthon:\"Maxthon\",edge:\"Microsoft Edge\",mz:\"MZ Browser\",naver:\"NAVER Whale Browser\",opera:\"Opera\",opera_coast:\"Opera Coast\",phantomjs:\"PhantomJS\",puffin:\"Puffin\",qupzilla:\"QupZilla\",qq:\"QQ Browser\",qqlite:\"QQ Browser Lite\",safari:\"Safari\",sailfish:\"Sailfish\",samsung_internet:\"Samsung Internet for Android\",seamonkey:\"SeaMonkey\",sleipnir:\"Sleipnir\",swing:\"Swing\",tizen:\"Tizen\",uc:\"UC Browser\",vivaldi:\"Vivaldi\",webos:\"WebOS Browser\",wechat:\"WeChat\",yandex:\"Yandex Browser\"};t.PLATFORMS_MAP={tablet:\"tablet\",mobile:\"mobile\",desktop:\"desktop\",tv:\"tv\"};t.OS_MAP={WindowsPhone:\"Windows Phone\",Windows:\"Windows\",MacOS:\"macOS\",iOS:\"iOS\",Android:\"Android\",WebOS:\"WebOS\",BlackBerry:\"BlackBerry\",Bada:\"Bada\",Tizen:\"Tizen\",Linux:\"Linux\",ChromeOS:\"Chrome OS\",PlayStation4:\"PlayStation 4\",Roku:\"Roku\"};t.ENGINE_MAP={EdgeHTML:\"EdgeHTML\",Blink:\"Blink\",Trident:\"Trident\",Presto:\"Presto\",Gecko:\"Gecko\",WebKit:\"WebKit\"}},90:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(91))&&n.__esModule?n:{default:n},s=r(18);function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var o=function(){function e(){}var t,r,n;return e.getParser=function(e,t){if(void 0===t&&(t=!1),\"string\"!=typeof e)throw new Error(\"UserAgent should be a string\");return new i.default(e,t)},e.parse=function(e){return new i.default(e).getResult()},t=e,n=[{key:\"BROWSER_MAP\",get:function(){return s.BROWSER_MAP}},{key:\"ENGINE_MAP\",get:function(){return s.ENGINE_MAP}},{key:\"OS_MAP\",get:function(){return s.OS_MAP}},{key:\"PLATFORMS_MAP\",get:function(){return s.PLATFORMS_MAP}}],(r=null)&&a(t.prototype,r),n&&a(t,n),e}();t.default=o,e.exports=t.default},91:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n=u(r(92)),i=u(r(93)),s=u(r(94)),a=u(r(95)),o=u(r(17));function u(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||\"\"===e)throw new Error(\"UserAgent parameter can't be empty\");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(n.default,(function(t){if(\"function\"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error(\"Browser's test function is not valid\")}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||\"\":this.getBrowser().name||\"\"},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(i.default,(function(t){if(\"function\"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error(\"Browser's test function is not valid\")}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||\"\":t||\"\"},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||\"\":t||\"\"},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(s.default,(function(t){if(\"function\"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error(\"Browser's test function is not valid\")}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||\"\":this.getEngine().name||\"\"},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(a.default,(function(t){if(\"function\"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error(\"Browser's test function is not valid\")}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return o.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},n=0,i={},s=0;if(Object.keys(e).forEach((function(t){var a=e[t];\"string\"==typeof a?(i[t]=a,s+=1):\"object\"==typeof a&&(r[t]=a,n+=1)})),n>0){var a=Object.keys(r),u=o.default.find(a,(function(e){return t.isOS(e)}));if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var c=o.default.find(a,(function(e){return t.isPlatform(e)}));if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f}}if(s>0){var l=Object.keys(i),h=o.default.find(l,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if(\"string\"==typeof i)return\">\"===e[0]||\"<\"===e[0]?(r=e.substr(1),\"=\"===e[1]?(n=!0,r=e.substr(2)):t=[],\">\"===e[0]?t.push(1):t.push(-1)):\"=\"===e[0]?r=e.substr(1):\"~\"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n};var s=/version\\/(\\d+(\\.?_?\\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:\"Googlebot\"},r=i.default.getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:\"Opera\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:opera)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\\/|opios/i],describe:function(e){var t={name:\"Opera\"},r=i.default.getFirstMatch(/(?:opr|opios)[\\s/](\\S+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:\"Samsung Internet for Android\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:\"NAVER Whale Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:whale)[\\s/](\\d+(?:\\.\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:\"MZ Browser\"},r=i.default.getFirstMatch(/(?:MZBrowser)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:\"Focus\"},r=i.default.getFirstMatch(/(?:focus)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:\"Swing\"},r=i.default.getFirstMatch(/(?:swing)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:\"Opera Coast\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:coast)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\\/\\d+(?:.?_?\\d+)+/i],describe:function(e){var t={name:\"Opera Touch\"},r=i.default.getFirstMatch(/(?:opt)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:\"Yandex Browser\"},r=i.default.getFirstMatch(/(?:yabrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:\"UC Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:ucbrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:\"Maxthon\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:\"Epiphany\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:epiphany)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:\"Puffin\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:puffin)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:\"Sleipnir\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:sleipnir)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:\"K-Meleon\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:k-meleon)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:\"WeChat\"},r=i.default.getFirstMatch(/(?:micromessenger)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?\"QQ Browser Lite\":\"QQ Browser\"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:\"Internet Explorer\"},r=i.default.getFirstMatch(/(?:msie |rv:)(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\\sedg\\//i],describe:function(e){var t={name:\"Microsoft Edge\"},r=i.default.getFirstMatch(/\\sedg\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:\"Microsoft Edge\"},r=i.default.getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:\"Vivaldi\"},r=i.default.getFirstMatch(/vivaldi\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:\"SeaMonkey\"},r=i.default.getFirstMatch(/seamonkey\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:\"Sailfish\"},r=i.default.getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:\"Amazon Silk\"},r=i.default.getFirstMatch(/silk\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:\"PhantomJS\"},r=i.default.getFirstMatch(/phantomjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:\"SlimerJS\"},r=i.default.getFirstMatch(/slimerjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t={name:\"BlackBerry\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:\"WebOS Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:\"Bada\"},r=i.default.getFirstMatch(/dolfin\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:\"Tizen\"},r=i.default.getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:\"QupZilla\"},r=i.default.getFirstMatch(/(?:qupzilla)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:\"Firefox\"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:\"Electron\"},r=i.default.getFirstMatch(/(?:electron)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:\"Miui\"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:\"Chromium\"},r=i.default.getFirstMatch(/(?:chromium)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:\"Chrome\"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:\"Google Search\"},r=i.default.getFirstMatch(/(?:GSA)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:\"Android Browser\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:\"PlayStation 4\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:\"Safari\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search(\"\\\\(\")?/^(.*)\\/(.*)[ \\t]\\((.*)/:/^(.*)\\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default},93:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/Roku\\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\\/DVP-(\\d+\\.\\d+)/i,e);return{name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\\/)(\\d[\\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\\d+(\\.?_?\\d+)+)/i,e).replace(/[_\\s]/g,\".\"),r=i.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i,e).replace(/[_\\s]/g,\".\");return{name:s.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\\s/-](\\d+(\\.\\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\\/(\\d+(\\.\\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\\d+\\/(\\d+([_\\s]\\d+)*)/i,e)||i.default.getFirstMatch(/\\bbb(\\d+)/i,e);return{name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default},94:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/googlebot/i],describe:function(){return{type:\"bot\",vendor:\"Google\"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&\"Nova\",r={type:s.PLATFORMS_MAP.mobile,vendor:\"Huawei\"};return t&&(r.model=t),r}},{test:[/nexus\\s*(?:7|8|9|10).*/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Nexus\"}}},{test:[/ipad/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/kftt build/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Amazon\",model:\"Kindle Fire HD 7\"}}},{test:[/silk/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Amazon\"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:s.PLATFORMS_MAP.mobile,vendor:\"Apple\",model:t}}},{test:[/nexus\\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"Nexus\"}}},{test:[/[^-]mobi/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"blackberry\"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"BlackBerry\"}}},{test:function(e){return\"bada\"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"windows phone\"===e.getBrowserName()},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"Microsoft\"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(\".\")[0]);return\"android\"===e.getOSName(!0)&&t>=3},describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){return\"android\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"macos\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop,vendor:\"Apple\"}}},{test:function(e){return\"windows\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return\"linux\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return\"playstation 4\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}},{test:function(e){return\"roku\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:function(e){return\"microsoft edge\"===e.getBrowserName(!0)},describe:function(e){if(/\\sedg\\//i.test(e))return{name:s.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\\/(\\d+(\\.?_?\\d+)+)/i,e);return{name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:s.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:s.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\\/537\\.36/i],describe:function(){return{name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default}})}));","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","const colorString = require('color-string');\nconst convert = require('color-convert');\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...args) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (args.length > 0) {\n\t\t\treturn new Color(args, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...args) {\n\t\tlet color = args[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(args, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nmodule.exports = Color;\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","module.exports = function deepFreeze (o) {\n Object.freeze(o);\n\n Object.getOwnPropertyNames(o).forEach(function (prop) {\n if (o.hasOwnProperty(prop)\n && o[prop] !== null\n && (typeof o[prop] === \"object\" || typeof o[prop] === \"function\")\n && !Object.isFrozen(o[prop])) {\n deepFreeze(o[prop]);\n }\n });\n \n return o;\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = filterInvalidDOMProps;\n\nvar _htmlAttributes = require(\"html-attributes\");\n\nvar _htmlAttributes2 = _interopRequireDefault(_htmlAttributes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar eventProps = {\n\tonCopy: true,\n\tonCut: true,\n\tonPaste: true,\n\tonLoad: true,\n\tonError: true,\n\tonWheel: true,\n\tonScroll: true,\n\tonCompositionEnd: true,\n\tonCompositionStart: true,\n\tonCompositionUpdate: true,\n\tonKeyDown: true,\n\tonKeyPress: true,\n\tonKeyUp: true,\n\tonFocus: true,\n\tonBlur: true,\n\tonChange: true,\n\tonInput: true,\n\tonSubmit: true,\n\tonClick: true,\n\tonContextMenu: true,\n\tonDoubleClick: true,\n\tonDrag: true,\n\tonDragEnd: true,\n\tonDragEnter: true,\n\tonDragExit: true,\n\tonDragLeave: true,\n\tonDragOver: true,\n\tonDragStart: true,\n\tonDrop: true,\n\tonMouseDown: true,\n\tonMouseEnter: true,\n\tonMouseLeave: true,\n\tonMouseMove: true,\n\tonMouseOut: true,\n\tonMouseOver: true,\n\tonMouseUp: true,\n\tonSelect: true,\n\tonTouchCancel: true,\n\tonTouchEnd: true,\n\tonTouchMove: true,\n\tonTouchStart: true,\n\tonAnimationStart: true,\n\tonAnimationEnd: true,\n\tonAnimationIteration: true,\n\tonTransitionEnd: true\n};\n\nfunction isValidDOMProp(prop) {\n\treturn eventProps[prop] || _htmlAttributes2.default[prop] || /^(data|aria)-/.test(prop);\n}\n\nfunction filterInvalidDOMProps(props) {\n\tvar domProps = {};\n\tfor (var prop in props) {\n\t\tif (props.hasOwnProperty(prop) && isValidDOMProp(prop)) {\n\t\t\tdomProps[prop] = props[prop];\n\t\t}\n\t}\n\treturn domProps;\n}","var hat = module.exports = function (bits, base) {\n if (!base) base = 16;\n if (bits === undefined) bits = 128;\n if (bits <= 0) return '0';\n \n var digits = Math.log(Math.pow(2, bits)) / Math.log(base);\n for (var i = 2; digits === Infinity; i *= 2) {\n digits = Math.log(Math.pow(2, bits / i)) / Math.log(base) * i;\n }\n \n var rem = digits - Math.floor(digits);\n \n var res = '';\n \n for (var i = 0; i < Math.floor(digits); i++) {\n var x = Math.floor(Math.random() * base).toString(base);\n res = x + res;\n }\n \n if (rem) {\n var b = Math.pow(base, rem);\n var x = Math.floor(Math.random() * b).toString(base);\n res = x + res;\n }\n \n var parsed = parseInt(res, base);\n if (parsed !== Infinity && parsed >= Math.pow(2, bits)) {\n return hat(bits, base)\n }\n else return res;\n};\n\nhat.rack = function (bits, base, expandBy) {\n var fn = function (data) {\n var iters = 0;\n do {\n if (iters ++ > 10) {\n if (expandBy) bits += expandBy;\n else throw new Error('too many ID collisions, use more bits')\n }\n \n var id = hat(bits, base);\n } while (Object.hasOwnProperty.call(hats, id));\n \n hats[id] = data;\n return id;\n };\n var hats = fn.hats = {};\n \n fn.get = function (id) {\n return fn.hats[id];\n };\n \n fn.set = function (id, value) {\n fn.hats[id] = value;\n return fn;\n };\n \n fn.bits = bits || 128;\n fn.base = base || 16;\n return fn;\n};\n","typeof window !== \"undefined\" &&\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Hls\"] = factory();\n\telse\n\t\troot[\"Hls\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./src/hls.ts\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./node_modules/eventemitter3/index.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/eventemitter3/index.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif (true) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n\n/***/ \"./node_modules/url-toolkit/src/url-toolkit.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/url-toolkit/src/url-toolkit.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// see https://tools.ietf.org/html/rfc1808\n\n(function (root) {\n var URL_REGEX =\n /^(?=((?:[a-zA-Z0-9+\\-.]+:)?))\\1(?=((?:\\/\\/[^\\/?#]*)?))\\2(?=((?:(?:[^?#\\/]*\\/)*[^;?#\\/]*)?))\\3((?:;[^?#]*)?)(\\?[^#]*)?(#[^]*)?$/;\n var FIRST_SEGMENT_REGEX = /^(?=([^\\/?#]*))\\1([^]*)$/;\n var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/)[^\\/]*(?=\\/)/g;\n\n var URLToolkit = {\n // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n // E.g\n // With opts.alwaysNormalize = false (default, spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n // With opts.alwaysNormalize = true (not spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n buildAbsoluteURL: function (baseURL, relativeURL, opts) {\n opts = opts || {};\n // remove any remaining space and CRLF\n baseURL = baseURL.trim();\n relativeURL = relativeURL.trim();\n if (!relativeURL) {\n // 2a) If the embedded URL is entirely empty, it inherits the\n // entire base URL (i.e., is set equal to the base URL)\n // and we are done.\n if (!opts.alwaysNormalize) {\n return baseURL;\n }\n var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n if (!basePartsForNormalise) {\n throw new Error('Error trying to parse base URL.');\n }\n basePartsForNormalise.path = URLToolkit.normalizePath(\n basePartsForNormalise.path\n );\n return URLToolkit.buildURLFromParts(basePartsForNormalise);\n }\n var relativeParts = URLToolkit.parseURL(relativeURL);\n if (!relativeParts) {\n throw new Error('Error trying to parse relative URL.');\n }\n if (relativeParts.scheme) {\n // 2b) If the embedded URL starts with a scheme name, it is\n // interpreted as an absolute URL and we are done.\n if (!opts.alwaysNormalize) {\n return relativeURL;\n }\n relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n return URLToolkit.buildURLFromParts(relativeParts);\n }\n var baseParts = URLToolkit.parseURL(baseURL);\n if (!baseParts) {\n throw new Error('Error trying to parse base URL.');\n }\n if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\n // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\n // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\n var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n baseParts.netLoc = pathParts[1];\n baseParts.path = pathParts[2];\n }\n if (baseParts.netLoc && !baseParts.path) {\n baseParts.path = '/';\n }\n var builtParts = {\n // 2c) Otherwise, the embedded URL inherits the scheme of\n // the base URL.\n scheme: baseParts.scheme,\n netLoc: relativeParts.netLoc,\n path: null,\n params: relativeParts.params,\n query: relativeParts.query,\n fragment: relativeParts.fragment,\n };\n if (!relativeParts.netLoc) {\n // 3) If the embedded URL's <net_loc> is non-empty, we skip to\n // Step 7. Otherwise, the embedded URL inherits the <net_loc>\n // (if any) of the base URL.\n builtParts.netLoc = baseParts.netLoc;\n // 4) If the embedded URL path is preceded by a slash \"/\", the\n // path is not relative and we skip to Step 7.\n if (relativeParts.path[0] !== '/') {\n if (!relativeParts.path) {\n // 5) If the embedded URL path is empty (and not preceded by a\n // slash), then the embedded URL inherits the base URL path\n builtParts.path = baseParts.path;\n // 5a) if the embedded URL's <params> is non-empty, we skip to\n // step 7; otherwise, it inherits the <params> of the base\n // URL (if any) and\n if (!relativeParts.params) {\n builtParts.params = baseParts.params;\n // 5b) if the embedded URL's <query> is non-empty, we skip to\n // step 7; otherwise, it inherits the <query> of the base\n // URL (if any) and we skip to step 7.\n if (!relativeParts.query) {\n builtParts.query = baseParts.query;\n }\n }\n } else {\n // 6) The last segment of the base URL's path (anything\n // following the rightmost slash \"/\", or the entire path if no\n // slash is present) is removed and the embedded URL's path is\n // appended in its place.\n var baseURLPath = baseParts.path;\n var newPath =\n baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) +\n relativeParts.path;\n builtParts.path = URLToolkit.normalizePath(newPath);\n }\n }\n }\n if (builtParts.path === null) {\n builtParts.path = opts.alwaysNormalize\n ? URLToolkit.normalizePath(relativeParts.path)\n : relativeParts.path;\n }\n return URLToolkit.buildURLFromParts(builtParts);\n },\n parseURL: function (url) {\n var parts = URL_REGEX.exec(url);\n if (!parts) {\n return null;\n }\n return {\n scheme: parts[1] || '',\n netLoc: parts[2] || '',\n path: parts[3] || '',\n params: parts[4] || '',\n query: parts[5] || '',\n fragment: parts[6] || '',\n };\n },\n normalizePath: function (path) {\n // The following operations are\n // then applied, in order, to the new path:\n // 6a) All occurrences of \"./\", where \".\" is a complete path\n // segment, are removed.\n // 6b) If the path ends with \".\" as a complete path segment,\n // that \".\" is removed.\n path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');\n // 6c) All occurrences of \"<segment>/../\", where <segment> is a\n // complete path segment not equal to \"..\", are removed.\n // Removal of these path segments is performed iteratively,\n // removing the leftmost matching pattern on each iteration,\n // until no matching pattern remains.\n // 6d) If the path ends with \"<segment>/..\", where <segment> is a\n // complete path segment not equal to \"..\", that\n // \"<segment>/..\" is removed.\n while (\n path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length\n ) {}\n return path.split('').reverse().join('');\n },\n buildURLFromParts: function (parts) {\n return (\n parts.scheme +\n parts.netLoc +\n parts.path +\n parts.params +\n parts.query +\n parts.fragment\n );\n },\n };\n\n if (true)\n module.exports = URLToolkit;\n else {}\n})(this);\n\n\n/***/ }),\n\n/***/ \"./node_modules/webworkify-webpack/index.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/webworkify-webpack/index.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction webpackBootstrapFunc (modules) {\n/******/ // The module cache\n/******/ var installedModules = {};\n\n/******/ // The require function\n/******/ function __webpack_require__(moduleId) {\n\n/******/ // Check if module is in cache\n/******/ if(installedModules[moduleId])\n/******/ return installedModules[moduleId].exports;\n\n/******/ // Create a new module (and put it into the cache)\n/******/ var module = installedModules[moduleId] = {\n/******/ i: moduleId,\n/******/ l: false,\n/******/ exports: {}\n/******/ };\n\n/******/ // Execute the module function\n/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ // Flag the module as loaded\n/******/ module.l = true;\n\n/******/ // Return the exports of the module\n/******/ return module.exports;\n/******/ }\n\n/******/ // expose the modules object (__webpack_modules__)\n/******/ __webpack_require__.m = modules;\n\n/******/ // expose the module cache\n/******/ __webpack_require__.c = installedModules;\n\n/******/ // identity function for calling harmony imports with the correct context\n/******/ __webpack_require__.i = function(value) { return value; };\n\n/******/ // define getter function for harmony exports\n/******/ __webpack_require__.d = function(exports, name, getter) {\n/******/ if(!__webpack_require__.o(exports, name)) {\n/******/ Object.defineProperty(exports, name, {\n/******/ configurable: false,\n/******/ enumerable: true,\n/******/ get: getter\n/******/ });\n/******/ }\n/******/ };\n\n/******/ // define __esModule on exports\n/******/ __webpack_require__.r = function(exports) {\n/******/ Object.defineProperty(exports, '__esModule', { value: true });\n/******/ };\n\n/******/ // getDefaultExport function for compatibility with non-harmony modules\n/******/ __webpack_require__.n = function(module) {\n/******/ var getter = module && module.__esModule ?\n/******/ function getDefault() { return module['default']; } :\n/******/ function getModuleExports() { return module; };\n/******/ __webpack_require__.d(getter, 'a', getter);\n/******/ return getter;\n/******/ };\n\n/******/ // Object.prototype.hasOwnProperty.call\n/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n/******/ // __webpack_public_path__\n/******/ __webpack_require__.p = \"/\";\n\n/******/ // on error function for async loading\n/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n var f = __webpack_require__(__webpack_require__.s = ENTRY_MODULE)\n return f.default || f // try to call default if defined to also support babel esmodule exports\n}\n\nvar moduleNameReqExp = '[\\\\.|\\\\-|\\\\+|\\\\w|\\/|@]+'\nvar dependencyRegExp = '\\\\(\\\\s*(\\/\\\\*.*?\\\\*\\/)?\\\\s*.*?(' + moduleNameReqExp + ').*?\\\\)' // additional chars when output.pathinfo is true\n\n// http://stackoverflow.com/a/2593661/130442\nfunction quoteRegExp (str) {\n return (str + '').replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&')\n}\n\nfunction isNumeric(n) {\n return !isNaN(1 * n); // 1 * n converts integers, integers as string (\"123\"), 1e3 and \"1e3\" to integers and strings to NaN\n}\n\nfunction getModuleDependencies (sources, module, queueName) {\n var retval = {}\n retval[queueName] = []\n\n var fnString = module.toString()\n var wrapperSignature = fnString.match(/^function\\s?\\w*\\(\\w+,\\s*\\w+,\\s*(\\w+)\\)/)\n if (!wrapperSignature) return retval\n var webpackRequireName = wrapperSignature[1]\n\n // main bundle deps\n var re = new RegExp('(\\\\\\\\n|\\\\W)' + quoteRegExp(webpackRequireName) + dependencyRegExp, 'g')\n var match\n while ((match = re.exec(fnString))) {\n if (match[3] === 'dll-reference') continue\n retval[queueName].push(match[3])\n }\n\n // dll deps\n re = new RegExp('\\\\(' + quoteRegExp(webpackRequireName) + '\\\\(\"(dll-reference\\\\s(' + moduleNameReqExp + '))\"\\\\)\\\\)' + dependencyRegExp, 'g')\n while ((match = re.exec(fnString))) {\n if (!sources[match[2]]) {\n retval[queueName].push(match[1])\n sources[match[2]] = __webpack_require__(match[1]).m\n }\n retval[match[2]] = retval[match[2]] || []\n retval[match[2]].push(match[4])\n }\n\n // convert 1e3 back to 1000 - this can be important after uglify-js converted 1000 to 1e3\n var keys = Object.keys(retval);\n for (var i = 0; i < keys.length; i++) {\n for (var j = 0; j < retval[keys[i]].length; j++) {\n if (isNumeric(retval[keys[i]][j])) {\n retval[keys[i]][j] = 1 * retval[keys[i]][j];\n }\n }\n }\n\n return retval\n}\n\nfunction hasValuesInQueues (queues) {\n var keys = Object.keys(queues)\n return keys.reduce(function (hasValues, key) {\n return hasValues || queues[key].length > 0\n }, false)\n}\n\nfunction getRequiredModules (sources, moduleId) {\n var modulesQueue = {\n main: [moduleId]\n }\n var requiredModules = {\n main: []\n }\n var seenModules = {\n main: {}\n }\n\n while (hasValuesInQueues(modulesQueue)) {\n var queues = Object.keys(modulesQueue)\n for (var i = 0; i < queues.length; i++) {\n var queueName = queues[i]\n var queue = modulesQueue[queueName]\n var moduleToCheck = queue.pop()\n seenModules[queueName] = seenModules[queueName] || {}\n if (seenModules[queueName][moduleToCheck] || !sources[queueName][moduleToCheck]) continue\n seenModules[queueName][moduleToCheck] = true\n requiredModules[queueName] = requiredModules[queueName] || []\n requiredModules[queueName].push(moduleToCheck)\n var newModules = getModuleDependencies(sources, sources[queueName][moduleToCheck], queueName)\n var newModulesKeys = Object.keys(newModules)\n for (var j = 0; j < newModulesKeys.length; j++) {\n modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]] || []\n modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]].concat(newModules[newModulesKeys[j]])\n }\n }\n }\n\n return requiredModules\n}\n\nmodule.exports = function (moduleId, options) {\n options = options || {}\n var sources = {\n main: __webpack_require__.m\n }\n\n var requiredModules = options.all ? { main: Object.keys(sources.main) } : getRequiredModules(sources, moduleId)\n\n var src = ''\n\n Object.keys(requiredModules).filter(function (m) { return m !== 'main' }).forEach(function (module) {\n var entryModule = 0\n while (requiredModules[module][entryModule]) {\n entryModule++\n }\n requiredModules[module].push(entryModule)\n sources[module][entryModule] = '(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })'\n src = src + 'var ' + module + ' = (' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(entryModule)) + ')({' + requiredModules[module].map(function (id) { return '' + JSON.stringify(id) + ': ' + sources[module][id].toString() }).join(',') + '});\\n'\n })\n\n src = src + 'new ((' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(moduleId)) + ')({' + requiredModules.main.map(function (id) { return '' + JSON.stringify(id) + ': ' + sources.main[id].toString() }).join(',') + '}))(self);'\n\n var blob = new window.Blob([src], { type: 'text/javascript' })\n if (options.bare) { return blob }\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL\n\n var workerUrl = URL.createObjectURL(blob)\n var worker = new window.Worker(workerUrl)\n worker.objectURL = workerUrl\n\n return worker\n}\n\n\n/***/ }),\n\n/***/ \"./src/config.ts\":\n/*!***********************!*\\\n !*** ./src/config.ts ***!\n \\***********************/\n/*! exports provided: hlsDefaultConfig, mergeConfig, enableStreamingMode */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hlsDefaultConfig\", function() { return hlsDefaultConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeConfig\", function() { return mergeConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enableStreamingMode\", function() { return enableStreamingMode; });\n/* harmony import */ var _controller_abr_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./controller/abr-controller */ \"./src/controller/abr-controller.ts\");\n/* harmony import */ var _controller_audio_stream_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./controller/audio-stream-controller */ \"./src/controller/audio-stream-controller.ts\");\n/* harmony import */ var _controller_audio_track_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./controller/audio-track-controller */ \"./src/controller/audio-track-controller.ts\");\n/* harmony import */ var _controller_subtitle_stream_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./controller/subtitle-stream-controller */ \"./src/controller/subtitle-stream-controller.ts\");\n/* harmony import */ var _controller_subtitle_track_controller__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./controller/subtitle-track-controller */ \"./src/controller/subtitle-track-controller.ts\");\n/* harmony import */ var _controller_buffer_controller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./controller/buffer-controller */ \"./src/controller/buffer-controller.ts\");\n/* harmony import */ var _controller_timeline_controller__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./controller/timeline-controller */ \"./src/controller/timeline-controller.ts\");\n/* harmony import */ var _controller_cap_level_controller__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./controller/cap-level-controller */ \"./src/controller/cap-level-controller.ts\");\n/* harmony import */ var _controller_fps_controller__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./controller/fps-controller */ \"./src/controller/fps-controller.ts\");\n/* harmony import */ var _controller_eme_controller__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./controller/eme-controller */ \"./src/controller/eme-controller.ts\");\n/* harmony import */ var _controller_cmcd_controller__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./controller/cmcd-controller */ \"./src/controller/cmcd-controller.ts\");\n/* harmony import */ var _utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utils/xhr-loader */ \"./src/utils/xhr-loader.ts\");\n/* harmony import */ var _utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/fetch-loader */ \"./src/utils/fetch-loader.ts\");\n/* harmony import */ var _utils_cues__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/cues */ \"./src/utils/cues.ts\");\n/* harmony import */ var _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils/mediakeys-helper */ \"./src/utils/mediakeys-helper.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utils/logger */ \"./src/utils/logger.ts\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// If possible, keep hlsDefaultConfig shallow\n// It is cloned whenever a new Hls instance is created, by keeping the config\n// shallow the properties are cloned, and we don't end up manipulating the default\nvar hlsDefaultConfig = _objectSpread(_objectSpread({\n autoStartLoad: true,\n // used by stream-controller\n startPosition: -1,\n // used by stream-controller\n defaultAudioCodec: undefined,\n // used by stream-controller\n debug: false,\n // used by logger\n capLevelOnFPSDrop: false,\n // used by fps-controller\n capLevelToPlayerSize: false,\n // used by cap-level-controller\n ignoreDevicePixelRatio: false,\n // used by cap-level-controller\n initialLiveManifestSize: 1,\n // used by stream-controller\n maxBufferLength: 30,\n // used by stream-controller\n backBufferLength: Infinity,\n // used by buffer-controller\n maxBufferSize: 60 * 1000 * 1000,\n // used by stream-controller\n maxBufferHole: 0.1,\n // used by stream-controller\n highBufferWatchdogPeriod: 2,\n // used by stream-controller\n nudgeOffset: 0.1,\n // used by stream-controller\n nudgeMaxRetry: 3,\n // used by stream-controller\n maxFragLookUpTolerance: 0.25,\n // used by stream-controller\n liveSyncDurationCount: 3,\n // used by latency-controller\n liveMaxLatencyDurationCount: Infinity,\n // used by latency-controller\n liveSyncDuration: undefined,\n // used by latency-controller\n liveMaxLatencyDuration: undefined,\n // used by latency-controller\n maxLiveSyncPlaybackRate: 1,\n // used by latency-controller\n liveDurationInfinity: false,\n // used by buffer-controller\n liveBackBufferLength: null,\n // used by buffer-controller\n maxMaxBufferLength: 600,\n // used by stream-controller\n enableWorker: true,\n // used by demuxer\n enableSoftwareAES: true,\n // used by decrypter\n manifestLoadingTimeOut: 10000,\n // used by playlist-loader\n manifestLoadingMaxRetry: 1,\n // used by playlist-loader\n manifestLoadingRetryDelay: 1000,\n // used by playlist-loader\n manifestLoadingMaxRetryTimeout: 64000,\n // used by playlist-loader\n startLevel: undefined,\n // used by level-controller\n levelLoadingTimeOut: 10000,\n // used by playlist-loader\n levelLoadingMaxRetry: 4,\n // used by playlist-loader\n levelLoadingRetryDelay: 1000,\n // used by playlist-loader\n levelLoadingMaxRetryTimeout: 64000,\n // used by playlist-loader\n fragLoadingTimeOut: 20000,\n // used by fragment-loader\n fragLoadingMaxRetry: 6,\n // used by fragment-loader\n fragLoadingRetryDelay: 1000,\n // used by fragment-loader\n fragLoadingMaxRetryTimeout: 64000,\n // used by fragment-loader\n startFragPrefetch: false,\n // used by stream-controller\n fpsDroppedMonitoringPeriod: 5000,\n // used by fps-controller\n fpsDroppedMonitoringThreshold: 0.2,\n // used by fps-controller\n appendErrorMaxRetry: 3,\n // used by buffer-controller\n loader: _utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n // loader: FetchLoader,\n fLoader: undefined,\n // used by fragment-loader\n pLoader: undefined,\n // used by playlist-loader\n xhrSetup: undefined,\n // used by xhr-loader\n licenseXhrSetup: undefined,\n // used by eme-controller\n licenseResponseCallback: undefined,\n // used by eme-controller\n abrController: _controller_abr_controller__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n bufferController: _controller_buffer_controller__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n capLevelController: _controller_cap_level_controller__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n fpsController: _controller_fps_controller__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n stretchShortVideoTrack: false,\n // used by mp4-remuxer\n maxAudioFramesDrift: 1,\n // used by mp4-remuxer\n forceKeyFrameOnDiscontinuity: true,\n // used by ts-demuxer\n abrEwmaFastLive: 3,\n // used by abr-controller\n abrEwmaSlowLive: 9,\n // used by abr-controller\n abrEwmaFastVoD: 3,\n // used by abr-controller\n abrEwmaSlowVoD: 9,\n // used by abr-controller\n abrEwmaDefaultEstimate: 5e5,\n // 500 kbps // used by abr-controller\n abrBandWidthFactor: 0.95,\n // used by abr-controller\n abrBandWidthUpFactor: 0.7,\n // used by abr-controller\n abrMaxWithRealBitrate: false,\n // used by abr-controller\n maxStarvationDelay: 4,\n // used by abr-controller\n maxLoadingDelay: 4,\n // used by abr-controller\n minAutoBitrate: 0,\n // used by hls\n emeEnabled: false,\n // used by eme-controller\n widevineLicenseUrl: undefined,\n // used by eme-controller\n drmSystemOptions: {},\n // used by eme-controller\n requestMediaKeySystemAccessFunc: _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_14__[\"requestMediaKeySystemAccess\"],\n // used by eme-controller\n testBandwidth: true,\n progressive: false,\n lowLatencyMode: true,\n cmcd: undefined,\n enableDateRangeMetadataCues: true,\n enableEmsgMetadataCues: true,\n enableID3MetadataCues: true\n}, timelineConfig()), {}, {\n subtitleStreamController: true ? _controller_subtitle_stream_controller__WEBPACK_IMPORTED_MODULE_3__[\"SubtitleStreamController\"] : undefined,\n subtitleTrackController: true ? _controller_subtitle_track_controller__WEBPACK_IMPORTED_MODULE_4__[\"default\"] : undefined,\n timelineController: true ? _controller_timeline_controller__WEBPACK_IMPORTED_MODULE_6__[\"TimelineController\"] : undefined,\n audioStreamController: true ? _controller_audio_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : undefined,\n audioTrackController: true ? _controller_audio_track_controller__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : undefined,\n emeController: true ? _controller_eme_controller__WEBPACK_IMPORTED_MODULE_9__[\"default\"] : undefined,\n cmcdController: true ? _controller_cmcd_controller__WEBPACK_IMPORTED_MODULE_10__[\"default\"] : undefined\n});\n\nfunction timelineConfig() {\n return {\n cueHandler: _utils_cues__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n // used by timeline-controller\n enableWebVTT: true,\n // used by timeline-controller\n enableIMSC1: true,\n // used by timeline-controller\n enableCEA708Captions: true,\n // used by timeline-controller\n captionsTextTrack1Label: 'English',\n // used by timeline-controller\n captionsTextTrack1LanguageCode: 'en',\n // used by timeline-controller\n captionsTextTrack2Label: 'Spanish',\n // used by timeline-controller\n captionsTextTrack2LanguageCode: 'es',\n // used by timeline-controller\n captionsTextTrack3Label: 'Unknown CC',\n // used by timeline-controller\n captionsTextTrack3LanguageCode: '',\n // used by timeline-controller\n captionsTextTrack4Label: 'Unknown CC',\n // used by timeline-controller\n captionsTextTrack4LanguageCode: '',\n // used by timeline-controller\n renderTextTracksNatively: true\n };\n}\n\nfunction mergeConfig(defaultConfig, userConfig) {\n if ((userConfig.liveSyncDurationCount || userConfig.liveMaxLatencyDurationCount) && (userConfig.liveSyncDuration || userConfig.liveMaxLatencyDuration)) {\n throw new Error(\"Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration\");\n }\n\n if (userConfig.liveMaxLatencyDurationCount !== undefined && (userConfig.liveSyncDurationCount === undefined || userConfig.liveMaxLatencyDurationCount <= userConfig.liveSyncDurationCount)) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDurationCount\" must be greater than \"liveSyncDurationCount\"');\n }\n\n if (userConfig.liveMaxLatencyDuration !== undefined && (userConfig.liveSyncDuration === undefined || userConfig.liveMaxLatencyDuration <= userConfig.liveSyncDuration)) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDuration\" must be greater than \"liveSyncDuration\"');\n }\n\n return _extends({}, defaultConfig, userConfig);\n}\nfunction enableStreamingMode(config) {\n var currentLoader = config.loader;\n\n if (currentLoader !== _utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__[\"default\"] && currentLoader !== _utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__[\"default\"]) {\n // If a developer has configured their own loader, respect that choice\n _utils_logger__WEBPACK_IMPORTED_MODULE_15__[\"logger\"].log('[config]: Custom loader detected, cannot enable progressive streaming');\n config.progressive = false;\n } else {\n var canStreamProgressively = Object(_utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__[\"fetchSupported\"])();\n\n if (canStreamProgressively) {\n config.loader = _utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__[\"default\"];\n config.progressive = true;\n config.enableSoftwareAES = true;\n _utils_logger__WEBPACK_IMPORTED_MODULE_15__[\"logger\"].log('[config]: Progressive streaming enabled, using FetchLoader');\n }\n }\n}\n\n/***/ }),\n\n/***/ \"./src/controller/abr-controller.ts\":\n/*!******************************************!*\\\n !*** ./src/controller/abr-controller.ts ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _utils_ewma_bandwidth_estimator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/ewma-bandwidth-estimator */ \"./src/utils/ewma-bandwidth-estimator.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n\n\n\n\nvar AbrController = /*#__PURE__*/function () {\n function AbrController(hls) {\n this.hls = void 0;\n this.lastLoadedFragLevel = 0;\n this._nextAutoLevel = -1;\n this.timer = void 0;\n this.onCheck = this._abandonRulesCheck.bind(this);\n this.fragCurrent = null;\n this.partCurrent = null;\n this.bitrateTestDelay = 0;\n this.bwEstimator = void 0;\n this.hls = hls;\n var config = hls.config;\n this.bwEstimator = new _utils_ewma_bandwidth_estimator__WEBPACK_IMPORTED_MODULE_1__[\"default\"](config.abrEwmaSlowVoD, config.abrEwmaFastVoD, config.abrEwmaDefaultEstimate);\n this.registerListeners();\n }\n\n var _proto = AbrController.prototype;\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOADING, this.onFragLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOADING, this.onFragLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.clearTimer(); // @ts-ignore\n\n this.hls = this.onCheck = null;\n this.fragCurrent = this.partCurrent = null;\n };\n\n _proto.onFragLoading = function onFragLoading(event, data) {\n var frag = data.frag;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_5__[\"PlaylistLevelType\"].MAIN) {\n if (!this.timer) {\n var _data$part;\n\n this.fragCurrent = frag;\n this.partCurrent = (_data$part = data.part) != null ? _data$part : null;\n this.timer = self.setInterval(this.onCheck, 100);\n }\n }\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n var config = this.hls.config;\n\n if (data.details.live) {\n this.bwEstimator.update(config.abrEwmaSlowLive, config.abrEwmaFastLive);\n } else {\n this.bwEstimator.update(config.abrEwmaSlowVoD, config.abrEwmaFastVoD);\n }\n }\n /*\n This method monitors the download rate of the current fragment, and will downswitch if that fragment will not load\n quickly enough to prevent underbuffering\n */\n ;\n\n _proto._abandonRulesCheck = function _abandonRulesCheck() {\n var frag = this.fragCurrent,\n part = this.partCurrent,\n hls = this.hls;\n var autoLevelEnabled = hls.autoLevelEnabled,\n config = hls.config,\n media = hls.media;\n\n if (!frag || !media) {\n return;\n }\n\n var stats = part ? part.stats : frag.stats;\n var duration = part ? part.duration : frag.duration; // If loading has been aborted and not in lowLatencyMode, stop timer and return\n\n if (stats.aborted) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn('frag loader destroy or aborted, disarm abandonRules');\n this.clearTimer(); // reset forced auto level value so that next level will be selected\n\n this._nextAutoLevel = -1;\n return;\n } // This check only runs if we're in ABR mode and actually playing\n\n\n if (!autoLevelEnabled || media.paused || !media.playbackRate || !media.readyState) {\n return;\n }\n\n var requestDelay = performance.now() - stats.loading.start;\n var playbackRate = Math.abs(media.playbackRate); // In order to work with a stable bandwidth, only begin monitoring bandwidth after half of the fragment has been loaded\n\n if (requestDelay <= 500 * duration / playbackRate) {\n return;\n }\n\n var levels = hls.levels,\n minAutoLevel = hls.minAutoLevel;\n var level = levels[frag.level];\n var expectedLen = stats.total || Math.max(stats.loaded, Math.round(duration * level.maxBitrate / 8));\n var loadRate = Math.max(1, stats.bwEstimate ? stats.bwEstimate / 8 : stats.loaded * 1000 / requestDelay); // fragLoadDelay is an estimate of the time (in seconds) it will take to buffer the entire fragment\n\n var fragLoadedDelay = (expectedLen - stats.loaded) / loadRate;\n var pos = media.currentTime; // bufferStarvationDelay is an estimate of the amount time (in seconds) it will take to exhaust the buffer\n\n var bufferStarvationDelay = (_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(media, pos, config.maxBufferHole).end - pos) / playbackRate; // Attempt an emergency downswitch only if less than 2 fragment lengths are buffered, and the time to finish loading\n // the current fragment is greater than the amount of buffer we have left\n\n if (bufferStarvationDelay >= 2 * duration / playbackRate || fragLoadedDelay <= bufferStarvationDelay) {\n return;\n }\n\n var fragLevelNextLoadedDelay = Number.POSITIVE_INFINITY;\n var nextLoadLevel; // Iterate through lower level and try to find the largest one that avoids rebuffering\n\n for (nextLoadLevel = frag.level - 1; nextLoadLevel > minAutoLevel; nextLoadLevel--) {\n // compute time to load next fragment at lower level\n // 0.8 : consider only 80% of current bw to be conservative\n // 8 = bits per byte (bps/Bps)\n var levelNextBitrate = levels[nextLoadLevel].maxBitrate;\n fragLevelNextLoadedDelay = duration * levelNextBitrate / (8 * 0.8 * loadRate);\n\n if (fragLevelNextLoadedDelay < bufferStarvationDelay) {\n break;\n }\n } // Only emergency switch down if it takes less time to load a new fragment at lowest level instead of continuing\n // to load the current one\n\n\n if (fragLevelNextLoadedDelay >= fragLoadedDelay) {\n return;\n }\n\n var bwEstimate = this.bwEstimator.getEstimate();\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn(\"Fragment \" + frag.sn + (part ? ' part ' + part.index : '') + \" of level \" + frag.level + \" is loading too slowly and will cause an underbuffer; aborting and switching to level \" + nextLoadLevel + \"\\n Current BW estimate: \" + (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(bwEstimate) ? (bwEstimate / 1024).toFixed(3) : 'Unknown') + \" Kb/s\\n Estimated load time for current fragment: \" + fragLoadedDelay.toFixed(3) + \" s\\n Estimated load time for the next fragment: \" + fragLevelNextLoadedDelay.toFixed(3) + \" s\\n Time to underbuffer: \" + bufferStarvationDelay.toFixed(3) + \" s\");\n hls.nextLoadLevel = nextLoadLevel;\n this.bwEstimator.sample(requestDelay, stats.loaded);\n this.clearTimer();\n\n if (frag.loader) {\n this.fragCurrent = this.partCurrent = null;\n frag.loader.abort();\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_LOAD_EMERGENCY_ABORTED, {\n frag: frag,\n part: part,\n stats: stats\n });\n };\n\n _proto.onFragLoaded = function onFragLoaded(event, _ref) {\n var frag = _ref.frag,\n part = _ref.part;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_5__[\"PlaylistLevelType\"].MAIN && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.sn)) {\n var stats = part ? part.stats : frag.stats;\n var duration = part ? part.duration : frag.duration; // stop monitoring bw once frag loaded\n\n this.clearTimer(); // store level id after successful fragment load\n\n this.lastLoadedFragLevel = frag.level; // reset forced auto level value so that next level will be selected\n\n this._nextAutoLevel = -1; // compute level average bitrate\n\n if (this.hls.config.abrMaxWithRealBitrate) {\n var level = this.hls.levels[frag.level];\n var loadedBytes = (level.loaded ? level.loaded.bytes : 0) + stats.loaded;\n var loadedDuration = (level.loaded ? level.loaded.duration : 0) + duration;\n level.loaded = {\n bytes: loadedBytes,\n duration: loadedDuration\n };\n level.realBitrate = Math.round(8 * loadedBytes / loadedDuration);\n }\n\n if (frag.bitrateTest) {\n var fragBufferedData = {\n stats: stats,\n frag: frag,\n part: part,\n id: frag.type\n };\n this.onFragBuffered(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, fragBufferedData);\n }\n }\n };\n\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n var frag = data.frag,\n part = data.part;\n var stats = part ? part.stats : frag.stats;\n\n if (stats.aborted) {\n return;\n } // Only count non-alt-audio frags which were actually buffered in our BW calculations\n\n\n if (frag.type !== _types_loader__WEBPACK_IMPORTED_MODULE_5__[\"PlaylistLevelType\"].MAIN || frag.sn === 'initSegment') {\n return;\n } // Use the difference between parsing and request instead of buffering and request to compute fragLoadingProcessing;\n // rationale is that buffer appending only happens once media is attached. This can happen when config.startFragPrefetch\n // is used. If we used buffering in that case, our BW estimate sample will be very large.\n\n\n var processingMs = stats.parsing.end - stats.loading.start;\n this.bwEstimator.sample(processingMs, stats.loaded);\n stats.bwEstimate = this.bwEstimator.getEstimate();\n\n if (frag.bitrateTest) {\n this.bitrateTestDelay = processingMs / 1000;\n } else {\n this.bitrateTestDelay = 0;\n }\n };\n\n _proto.onError = function onError(event, data) {\n // stop timer in case of frag loading error\n switch (data.details) {\n case _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].FRAG_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT:\n this.clearTimer();\n break;\n\n default:\n break;\n }\n };\n\n _proto.clearTimer = function clearTimer() {\n self.clearInterval(this.timer);\n this.timer = undefined;\n } // return next auto level\n ;\n\n _proto.getNextABRAutoLevel = function getNextABRAutoLevel() {\n var fragCurrent = this.fragCurrent,\n partCurrent = this.partCurrent,\n hls = this.hls;\n var maxAutoLevel = hls.maxAutoLevel,\n config = hls.config,\n minAutoLevel = hls.minAutoLevel,\n media = hls.media;\n var currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n var pos = media ? media.currentTime : 0; // playbackRate is the absolute value of the playback rate; if media.playbackRate is 0, we use 1 to load as\n // if we're playing back at the normal rate.\n\n var playbackRate = media && media.playbackRate !== 0 ? Math.abs(media.playbackRate) : 1.0;\n var avgbw = this.bwEstimator ? this.bwEstimator.getEstimate() : config.abrEwmaDefaultEstimate; // bufferStarvationDelay is the wall-clock time left until the playback buffer is exhausted.\n\n var bufferStarvationDelay = (_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(media, pos, config.maxBufferHole).end - pos) / playbackRate; // First, look to see if we can find a level matching with our avg bandwidth AND that could also guarantee no rebuffering at all\n\n var bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, config.abrBandWidthFactor, config.abrBandWidthUpFactor);\n\n if (bestLevel >= 0) {\n return bestLevel;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].trace((bufferStarvationDelay ? 'rebuffering expected' : 'buffer is empty') + \", finding optimal quality level\"); // not possible to get rid of rebuffering ... let's try to find level that will guarantee less than maxStarvationDelay of rebuffering\n // if no matching level found, logic will return 0\n\n var maxStarvationDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxStarvationDelay) : config.maxStarvationDelay;\n var bwFactor = config.abrBandWidthFactor;\n var bwUpFactor = config.abrBandWidthUpFactor;\n\n if (!bufferStarvationDelay) {\n // in case buffer is empty, let's check if previous fragment was loaded to perform a bitrate test\n var bitrateTestDelay = this.bitrateTestDelay;\n\n if (bitrateTestDelay) {\n // if it is the case, then we need to adjust our max starvation delay using maxLoadingDelay config value\n // max video loading delay used in automatic start level selection :\n // in that mode ABR controller will ensure that video loading time (ie the time to fetch the first fragment at lowest quality level +\n // the time to fetch the fragment at the appropriate quality level is less than ```maxLoadingDelay``` )\n // cap maxLoadingDelay and ensure it is not bigger 'than bitrate test' frag duration\n var maxLoadingDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxLoadingDelay) : config.maxLoadingDelay;\n maxStarvationDelay = maxLoadingDelay - bitrateTestDelay;\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].trace(\"bitrate test took \" + Math.round(1000 * bitrateTestDelay) + \"ms, set first fragment max fetchDuration to \" + Math.round(1000 * maxStarvationDelay) + \" ms\"); // don't use conservative factor on bitrate test\n\n bwFactor = bwUpFactor = 1;\n }\n }\n\n bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay + maxStarvationDelay, bwFactor, bwUpFactor);\n return Math.max(bestLevel, 0);\n };\n\n _proto.findBestLevel = function findBestLevel(currentBw, minAutoLevel, maxAutoLevel, maxFetchDuration, bwFactor, bwUpFactor) {\n var _level$details;\n\n var fragCurrent = this.fragCurrent,\n partCurrent = this.partCurrent,\n currentLevel = this.lastLoadedFragLevel;\n var levels = this.hls.levels;\n var level = levels[currentLevel];\n var live = !!(level !== null && level !== void 0 && (_level$details = level.details) !== null && _level$details !== void 0 && _level$details.live);\n var currentCodecSet = level === null || level === void 0 ? void 0 : level.codecSet;\n var currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n\n for (var i = maxAutoLevel; i >= minAutoLevel; i--) {\n var levelInfo = levels[i];\n\n if (!levelInfo || currentCodecSet && levelInfo.codecSet !== currentCodecSet) {\n continue;\n }\n\n var levelDetails = levelInfo.details;\n var avgDuration = (partCurrent ? levelDetails === null || levelDetails === void 0 ? void 0 : levelDetails.partTarget : levelDetails === null || levelDetails === void 0 ? void 0 : levelDetails.averagetargetduration) || currentFragDuration;\n var adjustedbw = void 0; // follow algorithm captured from stagefright :\n // https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/httplive/LiveSession.cpp\n // Pick the highest bandwidth stream below or equal to estimated bandwidth.\n // consider only 80% of the available bandwidth, but if we are switching up,\n // be even more conservative (70%) to avoid overestimating and immediately\n // switching back.\n\n if (i <= currentLevel) {\n adjustedbw = bwFactor * currentBw;\n } else {\n adjustedbw = bwUpFactor * currentBw;\n }\n\n var bitrate = levels[i].maxBitrate;\n var fetchDuration = bitrate * avgDuration / adjustedbw;\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].trace(\"level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: \" + i + \"/\" + Math.round(adjustedbw) + \"/\" + bitrate + \"/\" + avgDuration + \"/\" + maxFetchDuration + \"/\" + fetchDuration); // if adjusted bw is greater than level bitrate AND\n\n if (adjustedbw > bitrate && ( // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches\n // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ...\n // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that findBestLevel will return -1\n !fetchDuration || live && !this.bitrateTestDelay || fetchDuration < maxFetchDuration)) {\n // as we are looping from highest to lowest, this will return the best achievable quality level\n return i;\n }\n } // not enough time budget even with quality level 0 ... rebuffering might happen\n\n\n return -1;\n };\n\n _createClass(AbrController, [{\n key: \"nextAutoLevel\",\n get: function get() {\n var forcedAutoLevel = this._nextAutoLevel;\n var bwEstimator = this.bwEstimator; // in case next auto level has been forced, and bw not available or not reliable, return forced value\n\n if (forcedAutoLevel !== -1 && !bwEstimator.canEstimate()) {\n return forcedAutoLevel;\n } // compute next level using ABR logic\n\n\n var nextABRAutoLevel = this.getNextABRAutoLevel(); // use forced auto level when ABR selected level has errored\n\n if (forcedAutoLevel !== -1 && this.hls.levels[nextABRAutoLevel].loadError) {\n return forcedAutoLevel;\n } // if forced auto level has been defined, use it to cap ABR computed quality level\n\n\n if (forcedAutoLevel !== -1) {\n nextABRAutoLevel = Math.min(forcedAutoLevel, nextABRAutoLevel);\n }\n\n return nextABRAutoLevel;\n },\n set: function set(nextLevel) {\n this._nextAutoLevel = nextLevel;\n }\n }]);\n\n return AbrController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbrController);\n\n/***/ }),\n\n/***/ \"./src/controller/audio-stream-controller.ts\":\n/*!***************************************************!*\\\n !*** ./src/controller/audio-stream-controller.ts ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base-stream-controller */ \"./src/controller/base-stream-controller.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _fragment_tracker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fragment-tracker */ \"./src/controller/fragment-tracker.ts\");\n/* harmony import */ var _types_level__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../types/level */ \"./src/types/level.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _loader_fragment__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../loader/fragment */ \"./src/loader/fragment.ts\");\n/* harmony import */ var _demux_chunk_cache__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../demux/chunk-cache */ \"./src/demux/chunk-cache.ts\");\n/* harmony import */ var _demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../demux/transmuxer-interface */ \"./src/demux/transmuxer-interface.ts\");\n/* harmony import */ var _types_transmuxer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../types/transmuxer */ \"./src/types/transmuxer.ts\");\n/* harmony import */ var _fragment_finders__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./fragment-finders */ \"./src/controller/fragment-finders.ts\");\n/* harmony import */ var _utils_discontinuities__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/discontinuities */ \"./src/utils/discontinuities.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TICK_INTERVAL = 100; // how often to tick in ms\n\nvar AudioStreamController = /*#__PURE__*/function (_BaseStreamController) {\n _inheritsLoose(AudioStreamController, _BaseStreamController);\n\n function AudioStreamController(hls, fragmentTracker) {\n var _this;\n\n _this = _BaseStreamController.call(this, hls, fragmentTracker, '[audio-stream-controller]') || this;\n _this.videoBuffer = null;\n _this.videoTrackCC = -1;\n _this.waitingVideoCC = -1;\n _this.audioSwitch = false;\n _this.trackId = -1;\n _this.waitingData = null;\n _this.mainDetails = null;\n _this.bufferFlushed = false;\n _this.cachedTrackLoadedData = null;\n\n _this._registerListeners();\n\n return _this;\n }\n\n var _proto = AudioStreamController.prototype;\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this._unregisterListeners();\n\n this.mainDetails = null;\n };\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, this.onError, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_RESET, this.onBufferReset, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, this.onError, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_RESET, this.onBufferReset, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n } // INIT_PTS_FOUND is triggered when the video track parsed in the stream-controller has a new PTS value\n ;\n\n _proto.onInitPtsFound = function onInitPtsFound(event, _ref) {\n var frag = _ref.frag,\n id = _ref.id,\n initPTS = _ref.initPTS;\n\n // Always update the new INIT PTS\n // Can change due level switch\n if (id === 'main') {\n var cc = frag.cc;\n this.initPTS[frag.cc] = initPTS;\n this.log(\"InitPTS for cc: \" + cc + \" found from main: \" + initPTS);\n this.videoTrackCC = cc; // If we are waiting, tick immediately to unblock audio fragment transmuxing\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS) {\n this.tick();\n }\n }\n };\n\n _proto.startLoad = function startLoad(startPosition) {\n if (!this.levels) {\n this.startPosition = startPosition;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].STOPPED;\n return;\n }\n\n var lastCurrentTime = this.lastCurrentTime;\n this.stopLoad();\n this.setInterval(TICK_INTERVAL);\n this.fragLoadError = 0;\n\n if (lastCurrentTime > 0 && startPosition === -1) {\n this.log(\"Override startPosition with lastCurrentTime @\" + lastCurrentTime.toFixed(3));\n startPosition = lastCurrentTime;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n } else {\n this.loadedmetadata = false;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_TRACK;\n }\n\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n this.tick();\n };\n\n _proto.doTick = function doTick() {\n switch (this.state) {\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE:\n this.doTickIdle();\n break;\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_TRACK:\n {\n var _levels$trackId;\n\n var levels = this.levels,\n trackId = this.trackId;\n var details = levels === null || levels === void 0 ? void 0 : (_levels$trackId = levels[trackId]) === null || _levels$trackId === void 0 ? void 0 : _levels$trackId.details;\n\n if (details) {\n if (this.waitForCdnTuneIn(details)) {\n break;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS;\n }\n\n break;\n }\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING_WAITING_RETRY:\n {\n var _this$media;\n\n var now = performance.now();\n var retryDate = this.retryDate; // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n\n if (!retryDate || now >= retryDate || (_this$media = this.media) !== null && _this$media !== void 0 && _this$media.seeking) {\n this.log('RetryDate reached, switch back to IDLE state');\n this.resetStartWhenNotLoaded(this.trackId);\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n\n break;\n }\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS:\n {\n // Ensure we don't get stuck in the WAITING_INIT_PTS state if the waiting frag CC doesn't match any initPTS\n var waitingData = this.waitingData;\n\n if (waitingData) {\n var frag = waitingData.frag,\n part = waitingData.part,\n cache = waitingData.cache,\n complete = waitingData.complete;\n\n if (this.initPTS[frag.cc] !== undefined) {\n this.waitingData = null;\n this.waitingVideoCC = -1;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING;\n var payload = cache.flush();\n var data = {\n frag: frag,\n part: part,\n payload: payload,\n networkDetails: null\n };\n\n this._handleFragmentLoadProgress(data);\n\n if (complete) {\n _BaseStreamController.prototype._handleFragmentLoadComplete.call(this, data);\n }\n } else if (this.videoTrackCC !== this.waitingVideoCC) {\n // Drop waiting fragment if videoTrackCC has changed since waitingFragment was set and initPTS was not found\n this.log(\"Waiting fragment cc (\" + frag.cc + \") cancelled because video is at cc \" + this.videoTrackCC);\n this.clearWaitingFragment();\n } else {\n // Drop waiting fragment if an earlier fragment is needed\n var pos = this.getLoadPosition();\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(this.mediaBuffer, pos, this.config.maxBufferHole);\n var waitingFragmentAtPosition = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_11__[\"fragmentWithinToleranceTest\"])(bufferInfo.end, this.config.maxFragLookUpTolerance, frag);\n\n if (waitingFragmentAtPosition < 0) {\n this.log(\"Waiting fragment cc (\" + frag.cc + \") @ \" + frag.start + \" cancelled because another fragment at \" + bufferInfo.end + \" is needed\");\n this.clearWaitingFragment();\n }\n }\n } else {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n }\n }\n\n this.onTickEnd();\n };\n\n _proto.clearWaitingFragment = function clearWaitingFragment() {\n var waitingData = this.waitingData;\n\n if (waitingData) {\n this.fragmentTracker.removeFragment(waitingData.frag);\n this.waitingData = null;\n this.waitingVideoCC = -1;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n };\n\n _proto.resetLoadingState = function resetLoadingState() {\n this.clearWaitingFragment();\n\n _BaseStreamController.prototype.resetLoadingState.call(this);\n };\n\n _proto.onTickEnd = function onTickEnd() {\n var media = this.media;\n\n if (!media || !media.readyState) {\n // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0)\n return;\n }\n\n var mediaBuffer = this.mediaBuffer ? this.mediaBuffer : media;\n var buffered = mediaBuffer.buffered;\n\n if (!this.loadedmetadata && buffered.length) {\n this.loadedmetadata = true;\n }\n\n this.lastCurrentTime = media.currentTime;\n };\n\n _proto.doTickIdle = function doTickIdle() {\n var _frag$decryptdata, _frag$decryptdata2;\n\n var hls = this.hls,\n levels = this.levels,\n media = this.media,\n trackId = this.trackId;\n var config = hls.config;\n\n if (!levels || !levels[trackId]) {\n return;\n } // if video not attached AND\n // start fragment already requested OR start frag prefetch not enabled\n // exit loop\n // => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop\n\n\n if (!media && (this.startFragRequested || !config.startFragPrefetch)) {\n return;\n }\n\n var levelInfo = levels[trackId];\n var trackDetails = levelInfo.details;\n\n if (!trackDetails || trackDetails.live && this.levelLastLoaded !== trackId || this.waitForCdnTuneIn(trackDetails)) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_TRACK;\n return;\n }\n\n var bufferable = this.mediaBuffer ? this.mediaBuffer : this.media;\n\n if (this.bufferFlushed && bufferable) {\n this.bufferFlushed = false;\n this.afterBufferFlushed(bufferable, _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO);\n }\n\n var bufferInfo = this.getFwdBufferInfo(bufferable, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO);\n\n if (bufferInfo === null) {\n return;\n }\n\n var mainBufferInfo = this.getFwdBufferInfo(this.videoBuffer ? this.videoBuffer : this.media, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n var bufferLen = bufferInfo.len;\n var maxBufLen = this.getMaxBufferLength(mainBufferInfo === null || mainBufferInfo === void 0 ? void 0 : mainBufferInfo.len);\n var audioSwitch = this.audioSwitch; // if buffer length is less than maxBufLen try to load a new fragment\n\n if (bufferLen >= maxBufLen && !audioSwitch) {\n return;\n }\n\n if (!audioSwitch && this._streamEnded(bufferInfo, trackDetails)) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_EOS, {\n type: 'audio'\n });\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ENDED;\n return;\n }\n\n var fragments = trackDetails.fragments;\n var start = fragments[0].start;\n var targetBufferTime = bufferInfo.end;\n\n if (audioSwitch && media) {\n var pos = this.getLoadPosition();\n targetBufferTime = pos; // if currentTime (pos) is less than alt audio playlist start time, it means that alt audio is ahead of currentTime\n\n if (trackDetails.PTSKnown && pos < start) {\n // if everything is buffered from pos to start or if audio buffer upfront, let's seek to start\n if (bufferInfo.end > start || bufferInfo.nextStart) {\n this.log('Alt audio track ahead of main track, seek to start of alt audio track');\n media.currentTime = start + 0.05;\n }\n }\n } // buffer audio up to one target duration ahead of main buffer\n\n\n if (mainBufferInfo && targetBufferTime > mainBufferInfo.end + trackDetails.targetduration) {\n return;\n } // wait for main buffer after buffing some audio\n\n\n if ((!mainBufferInfo || !mainBufferInfo.len) && bufferInfo.len) {\n return;\n }\n\n var frag = this.getNextFragment(targetBufferTime, trackDetails);\n\n if (!frag) {\n this.bufferFlushed = true;\n return;\n }\n\n if (((_frag$decryptdata = frag.decryptdata) === null || _frag$decryptdata === void 0 ? void 0 : _frag$decryptdata.keyFormat) === 'identity' && !((_frag$decryptdata2 = frag.decryptdata) !== null && _frag$decryptdata2 !== void 0 && _frag$decryptdata2.key)) {\n this.loadKey(frag, trackDetails);\n } else {\n this.loadFragment(frag, trackDetails, targetBufferTime);\n }\n };\n\n _proto.getMaxBufferLength = function getMaxBufferLength(mainBufferLength) {\n var maxConfigBuffer = _BaseStreamController.prototype.getMaxBufferLength.call(this);\n\n if (!mainBufferLength) {\n return maxConfigBuffer;\n }\n\n return Math.max(maxConfigBuffer, mainBufferLength);\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n this.videoBuffer = null;\n\n _BaseStreamController.prototype.onMediaDetaching.call(this);\n };\n\n _proto.onAudioTracksUpdated = function onAudioTracksUpdated(event, _ref2) {\n var audioTracks = _ref2.audioTracks;\n this.resetTransmuxer();\n this.levels = audioTracks.map(function (mediaPlaylist) {\n return new _types_level__WEBPACK_IMPORTED_MODULE_5__[\"Level\"](mediaPlaylist);\n });\n };\n\n _proto.onAudioTrackSwitching = function onAudioTrackSwitching(event, data) {\n // if any URL found on new audio track, it is an alternate audio track\n var altAudio = !!data.url;\n this.trackId = data.id;\n var fragCurrent = this.fragCurrent;\n\n if (fragCurrent !== null && fragCurrent !== void 0 && fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n\n this.fragCurrent = null;\n this.clearWaitingFragment(); // destroy useless transmuxer when switching audio to main\n\n if (!altAudio) {\n this.resetTransmuxer();\n } else {\n // switching to audio track, start timer if not already started\n this.setInterval(TICK_INTERVAL);\n } // should we switch tracks ?\n\n\n if (altAudio) {\n this.audioSwitch = true; // main audio track are handled by stream-controller, just do something if switching to alt audio track\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n } else {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].STOPPED;\n }\n\n this.tick();\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.mainDetails = null;\n this.fragmentTracker.removeAllFragments();\n this.startPosition = this.lastCurrentTime = 0;\n this.bufferFlushed = false;\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n this.mainDetails = data.details;\n\n if (this.cachedTrackLoadedData !== null) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_LOADED, this.cachedTrackLoadedData);\n this.cachedTrackLoadedData = null;\n }\n };\n\n _proto.onAudioTrackLoaded = function onAudioTrackLoaded(event, data) {\n var _track$details;\n\n if (this.mainDetails == null) {\n this.cachedTrackLoadedData = data;\n return;\n }\n\n var levels = this.levels;\n var newDetails = data.details,\n trackId = data.id;\n\n if (!levels) {\n this.warn(\"Audio tracks were reset while loading level \" + trackId);\n return;\n }\n\n this.log(\"Track \" + trackId + \" loaded [\" + newDetails.startSN + \",\" + newDetails.endSN + \"],duration:\" + newDetails.totalduration);\n var track = levels[trackId];\n var sliding = 0;\n\n if (newDetails.live || (_track$details = track.details) !== null && _track$details !== void 0 && _track$details.live) {\n var mainDetails = this.mainDetails;\n\n if (!newDetails.fragments[0]) {\n newDetails.deltaUpdateFailed = true;\n }\n\n if (newDetails.deltaUpdateFailed || !mainDetails) {\n return;\n }\n\n if (!track.details && newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n // Make sure our audio rendition is aligned with the \"main\" rendition, using\n // pdt as our reference times.\n Object(_utils_discontinuities__WEBPACK_IMPORTED_MODULE_12__[\"alignMediaPlaylistByPDT\"])(newDetails, mainDetails);\n sliding = newDetails.fragments[0].start;\n } else {\n sliding = this.alignPlaylists(newDetails, track.details);\n }\n }\n\n track.details = newDetails;\n this.levelLastLoaded = trackId; // compute start position if we are aligned with the main playlist\n\n if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {\n this.setStartPosition(track.details, sliding);\n } // only switch back to IDLE state if we were waiting for track to start downloading a new fragment\n\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_TRACK && !this.waitForCdnTuneIn(newDetails)) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n } // trigger handler right now\n\n\n this.tick();\n };\n\n _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(data) {\n var _frag$initSegment;\n\n var frag = data.frag,\n part = data.part,\n payload = data.payload;\n var config = this.config,\n trackId = this.trackId,\n levels = this.levels;\n\n if (!levels) {\n this.warn(\"Audio tracks were reset while fragment load was in progress. Fragment \" + frag.sn + \" of level \" + frag.level + \" will not be buffered\");\n return;\n }\n\n var track = levels[trackId];\n console.assert(track, 'Audio track is defined on fragment load progress');\n var details = track.details;\n console.assert(details, 'Audio track details are defined on fragment load progress');\n var audioCodec = config.defaultAudioCodec || track.audioCodec || 'mp4a.40.2';\n var transmuxer = this.transmuxer;\n\n if (!transmuxer) {\n transmuxer = this.transmuxer = new _demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this.hls, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n } // Check if we have video initPTS\n // If not we need to wait for it\n\n\n var initPTS = this.initPTS[frag.cc];\n var initSegmentData = (_frag$initSegment = frag.initSegment) === null || _frag$initSegment === void 0 ? void 0 : _frag$initSegment.data;\n\n if (initPTS !== undefined) {\n // this.log(`Transmuxing ${sn} of [${details.startSN} ,${details.endSN}],track ${trackId}`);\n // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)\n var accurateTimeOffset = false; // details.PTSKnown || !details.live;\n\n var partIndex = part ? part.index : -1;\n var partial = partIndex !== -1;\n var chunkMeta = new _types_transmuxer__WEBPACK_IMPORTED_MODULE_10__[\"ChunkMetadata\"](frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n transmuxer.push(payload, initSegmentData, audioCodec, '', frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n } else {\n this.log(\"Unknown video PTS for cc \" + frag.cc + \", waiting for video PTS before demuxing audio frag \" + frag.sn + \" of [\" + details.startSN + \" ,\" + details.endSN + \"],track \" + trackId);\n\n var _this$waitingData = this.waitingData = this.waitingData || {\n frag: frag,\n part: part,\n cache: new _demux_chunk_cache__WEBPACK_IMPORTED_MODULE_8__[\"default\"](),\n complete: false\n },\n cache = _this$waitingData.cache;\n\n cache.push(new Uint8Array(payload));\n this.waitingVideoCC = this.videoTrackCC;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS;\n }\n };\n\n _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedData) {\n if (this.waitingData) {\n this.waitingData.complete = true;\n return;\n }\n\n _BaseStreamController.prototype._handleFragmentLoadComplete.call(this, fragLoadedData);\n };\n\n _proto.onBufferReset = function\n /* event: Events.BUFFER_RESET */\n onBufferReset() {\n // reset reference to sourcebuffers\n this.mediaBuffer = this.videoBuffer = null;\n this.loadedmetadata = false;\n };\n\n _proto.onBufferCreated = function onBufferCreated(event, data) {\n var audioTrack = data.tracks.audio;\n\n if (audioTrack) {\n this.mediaBuffer = audioTrack.buffer || null;\n }\n\n if (data.tracks.video) {\n this.videoBuffer = data.tracks.video.buffer || null;\n }\n };\n\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n var frag = data.frag,\n part = data.part;\n\n if (frag.type !== _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO) {\n return;\n }\n\n if (this.fragContextChanged(frag)) {\n // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion\n // Avoid setting state back to IDLE or concluding the audio switch; otherwise, the switched-to track will not buffer\n this.warn(\"Fragment \" + frag.sn + (part ? ' p: ' + part.index : '') + \" of level \" + frag.level + \" finished buffering, but was aborted. state: \" + this.state + \", audioSwitch: \" + this.audioSwitch);\n return;\n }\n\n if (frag.sn !== 'initSegment') {\n this.fragPrevious = frag;\n\n if (this.audioSwitch) {\n this.audioSwitch = false;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_SWITCHED, {\n id: this.trackId\n });\n }\n }\n\n this.fragBufferedComplete(frag, part);\n };\n\n _proto.onError = function onError(event, data) {\n switch (data.details) {\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].FRAG_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT:\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].KEY_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].KEY_LOAD_TIMEOUT:\n // TODO: Skip fragments that do not belong to this.fragCurrent audio-group id\n this.onFragmentOrKeyLoadError(_types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO, data);\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_TIMEOUT:\n // when in ERROR state, don't switch back to IDLE state in case a non-fatal error is received\n if (this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ERROR && this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].STOPPED) {\n // if fatal error, stop processing, otherwise move to IDLE to retry loading\n this.state = data.fatal ? _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ERROR : _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n this.warn(data.details + \" while loading frag, switching to \" + this.state + \" state\");\n }\n\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].BUFFER_FULL_ERROR:\n // if in appending state\n if (data.parent === 'audio' && (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING || this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSED)) {\n var flushBuffer = true;\n var bufferedInfo = this.getFwdBufferInfo(this.mediaBuffer, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO); // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end\n // reduce max buf len if current position is buffered\n\n if (bufferedInfo && bufferedInfo.len > 0.5) {\n flushBuffer = !this.reduceMaxBufferLength(bufferedInfo.len);\n }\n\n if (flushBuffer) {\n // current position is not buffered, but browser is still complaining about buffer full error\n // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708\n // in that case flush the whole audio buffer to recover\n this.warn('Buffer full error also media.currentTime is not buffered, flush audio buffer');\n this.fragCurrent = null;\n\n _BaseStreamController.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio');\n }\n\n this.resetLoadingState();\n }\n\n break;\n\n default:\n break;\n }\n };\n\n _proto.onBufferFlushed = function onBufferFlushed(event, _ref3) {\n var type = _ref3.type;\n\n if (type === _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO) {\n this.bufferFlushed = true;\n }\n };\n\n _proto._handleTransmuxComplete = function _handleTransmuxComplete(transmuxResult) {\n var _id3$samples;\n\n var id = 'audio';\n var hls = this.hls;\n var remuxResult = transmuxResult.remuxResult,\n chunkMeta = transmuxResult.chunkMeta;\n var context = this.getCurrentContext(chunkMeta);\n\n if (!context) {\n this.warn(\"The loading context changed while buffering fragment \" + chunkMeta.sn + \" of level \" + chunkMeta.level + \". This chunk will not be buffered.\");\n this.resetStartWhenNotLoaded(chunkMeta.level);\n return;\n }\n\n var frag = context.frag,\n part = context.part,\n details = context.level.details;\n var audio = remuxResult.audio,\n text = remuxResult.text,\n id3 = remuxResult.id3,\n initSegment = remuxResult.initSegment; // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level.\n // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed.\n\n if (this.fragContextChanged(frag) || !details) {\n return;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING;\n\n if (this.audioSwitch && audio) {\n this.completeAudioSwitch();\n }\n\n if (initSegment !== null && initSegment !== void 0 && initSegment.tracks) {\n this._bufferInitSegment(initSegment.tracks, frag, chunkMeta);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_PARSING_INIT_SEGMENT, {\n frag: frag,\n id: id,\n tracks: initSegment.tracks\n }); // Only flush audio from old audio tracks when PTS is known on new audio track\n }\n\n if (audio) {\n var startPTS = audio.startPTS,\n endPTS = audio.endPTS,\n startDTS = audio.startDTS,\n endDTS = audio.endDTS;\n\n if (part) {\n part.elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO] = {\n startPTS: startPTS,\n endPTS: endPTS,\n startDTS: startDTS,\n endDTS: endDTS\n };\n }\n\n frag.setElementaryStreamInfo(_loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO, startPTS, endPTS, startDTS, endDTS);\n this.bufferFragmentData(audio, frag, part, chunkMeta);\n }\n\n if (id3 !== null && id3 !== void 0 && (_id3$samples = id3.samples) !== null && _id3$samples !== void 0 && _id3$samples.length) {\n var emittedID3 = _extends({\n id: id,\n frag: frag,\n details: details\n }, id3);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_PARSING_METADATA, emittedID3);\n }\n\n if (text) {\n var emittedText = _extends({\n id: id,\n frag: frag,\n details: details\n }, text);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].FRAG_PARSING_USERDATA, emittedText);\n }\n };\n\n _proto._bufferInitSegment = function _bufferInitSegment(tracks, frag, chunkMeta) {\n if (this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING) {\n return;\n } // delete any video track found on audio transmuxer\n\n\n if (tracks.video) {\n delete tracks.video;\n } // include levelCodec in audio and video tracks\n\n\n var track = tracks.audio;\n\n if (!track) {\n return;\n }\n\n track.levelCodec = track.codec;\n track.id = 'audio';\n this.log(\"Init audio buffer, container:\" + track.container + \", codecs[parsed]=[\" + track.codec + \"]\");\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_CODECS, tracks);\n var initSegment = track.initSegment;\n\n if (initSegment !== null && initSegment !== void 0 && initSegment.byteLength) {\n var segment = {\n type: 'audio',\n frag: frag,\n part: null,\n chunkMeta: chunkMeta,\n parent: frag.type,\n data: initSegment\n };\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].BUFFER_APPENDING, segment);\n } // trigger handler right now\n\n\n this.tick();\n };\n\n _proto.loadFragment = function loadFragment(frag, trackDetails, targetBufferTime) {\n // only load if fragment is not loaded or if in audio switch\n var fragState = this.fragmentTracker.getState(frag);\n this.fragCurrent = frag; // we force a frag loading in audio switch as fragment tracker might not have evicted previous frags in case of quick audio switch\n\n if (this.audioSwitch || fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_4__[\"FragmentState\"].NOT_LOADED || fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_4__[\"FragmentState\"].PARTIAL) {\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag);\n } else if (trackDetails.live && !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.initPTS[frag.cc])) {\n this.log(\"Waiting for video PTS in continuity counter \" + frag.cc + \" of live stream before loading audio fragment \" + frag.sn + \" of level \" + this.trackId);\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_INIT_PTS;\n } else {\n this.startFragRequested = true;\n\n _BaseStreamController.prototype.loadFragment.call(this, frag, trackDetails, targetBufferTime);\n }\n }\n };\n\n _proto.completeAudioSwitch = function completeAudioSwitch() {\n var hls = this.hls,\n media = this.media,\n trackId = this.trackId;\n\n if (media) {\n this.log('Switching audio track : flushing all audio');\n\n _BaseStreamController.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio');\n }\n\n this.audioSwitch = false;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].AUDIO_TRACK_SWITCHED, {\n id: trackId\n });\n };\n\n return AudioStreamController;\n}(_base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AudioStreamController);\n\n/***/ }),\n\n/***/ \"./src/controller/audio-track-controller.ts\":\n/*!**************************************************!*\\\n !*** ./src/controller/audio-track-controller.ts ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base-playlist-controller */ \"./src/controller/base-playlist-controller.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar AudioTrackController = /*#__PURE__*/function (_BasePlaylistControll) {\n _inheritsLoose(AudioTrackController, _BasePlaylistControll);\n\n function AudioTrackController(hls) {\n var _this;\n\n _this = _BasePlaylistControll.call(this, hls, '[audio-track-controller]') || this;\n _this.tracks = [];\n _this.groupId = null;\n _this.tracksInGroup = [];\n _this.trackId = -1;\n _this.trackName = '';\n _this.selectDefaultTrack = true;\n\n _this.registerListeners();\n\n return _this;\n }\n\n var _proto = AudioTrackController.prototype;\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.tracks.length = 0;\n this.tracksInGroup.length = 0;\n\n _BasePlaylistControll.prototype.destroy.call(this);\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.tracks = [];\n this.groupId = null;\n this.tracksInGroup = [];\n this.trackId = -1;\n this.trackName = '';\n this.selectDefaultTrack = true;\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n this.tracks = data.audioTracks || [];\n };\n\n _proto.onAudioTrackLoaded = function onAudioTrackLoaded(event, data) {\n var id = data.id,\n details = data.details;\n var currentTrack = this.tracksInGroup[id];\n\n if (!currentTrack) {\n this.warn(\"Invalid audio track id \" + id);\n return;\n }\n\n var curDetails = currentTrack.details;\n currentTrack.details = data.details;\n this.log(\"audioTrack \" + id + \" loaded [\" + details.startSN + \"-\" + details.endSN + \"]\");\n\n if (id === this.trackId) {\n this.retryCount = 0;\n this.playlistLoaded(id, data, curDetails);\n }\n };\n\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n this.switchLevel(data.level);\n };\n\n _proto.onLevelSwitching = function onLevelSwitching(event, data) {\n this.switchLevel(data.level);\n };\n\n _proto.switchLevel = function switchLevel(levelIndex) {\n var levelInfo = this.hls.levels[levelIndex];\n\n if (!(levelInfo !== null && levelInfo !== void 0 && levelInfo.audioGroupIds)) {\n return;\n }\n\n var audioGroupId = levelInfo.audioGroupIds[levelInfo.urlId];\n\n if (this.groupId !== audioGroupId) {\n this.groupId = audioGroupId;\n var audioTracks = this.tracks.filter(function (track) {\n return !audioGroupId || track.groupId === audioGroupId;\n }); // Disable selectDefaultTrack if there are no default tracks\n\n if (this.selectDefaultTrack && !audioTracks.some(function (track) {\n return track.default;\n })) {\n this.selectDefaultTrack = false;\n }\n\n this.tracksInGroup = audioTracks;\n var audioTracksUpdated = {\n audioTracks: audioTracks\n };\n this.log(\"Updating audio tracks, \" + audioTracks.length + \" track(s) found in \\\"\" + audioGroupId + \"\\\" group-id\");\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACKS_UPDATED, audioTracksUpdated);\n this.selectInitialTrack();\n }\n };\n\n _proto.onError = function onError(event, data) {\n _BasePlaylistControll.prototype.onError.call(this, event, data);\n\n if (data.fatal || !data.context) {\n return;\n }\n\n if (data.context.type === _types_loader__WEBPACK_IMPORTED_MODULE_3__[\"PlaylistContextType\"].AUDIO_TRACK && data.context.id === this.trackId && data.context.groupId === this.groupId) {\n this.retryLoadingOrFail(data);\n }\n };\n\n _proto.setAudioTrack = function setAudioTrack(newId) {\n var tracks = this.tracksInGroup; // check if level idx is valid\n\n if (newId < 0 || newId >= tracks.length) {\n this.warn('Invalid id passed to audio-track controller');\n return;\n } // stopping live reloading timer if any\n\n\n this.clearTimer();\n var lastTrack = tracks[this.trackId];\n this.log(\"Now switching to audio-track index \" + newId);\n var track = tracks[newId];\n var id = track.id,\n _track$groupId = track.groupId,\n groupId = _track$groupId === void 0 ? '' : _track$groupId,\n name = track.name,\n type = track.type,\n url = track.url;\n this.trackId = newId;\n this.trackName = name;\n this.selectDefaultTrack = false;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACK_SWITCHING, {\n id: id,\n groupId: groupId,\n name: name,\n type: type,\n url: url\n }); // Do not reload track unless live\n\n if (track.details && !track.details.live) {\n return;\n }\n\n var hlsUrlParameters = this.switchParams(track.url, lastTrack === null || lastTrack === void 0 ? void 0 : lastTrack.details);\n this.loadPlaylist(hlsUrlParameters);\n };\n\n _proto.selectInitialTrack = function selectInitialTrack() {\n var audioTracks = this.tracksInGroup;\n console.assert(audioTracks.length, 'Initial audio track should be selected when tracks are known');\n var currentAudioTrackName = this.trackName;\n var trackId = this.findTrackId(currentAudioTrackName) || this.findTrackId();\n\n if (trackId !== -1) {\n this.setAudioTrack(trackId);\n } else {\n this.warn(\"No track found for running audio group-ID: \" + this.groupId);\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_ERROR,\n fatal: true\n });\n }\n };\n\n _proto.findTrackId = function findTrackId(name) {\n var audioTracks = this.tracksInGroup;\n\n for (var i = 0; i < audioTracks.length; i++) {\n var track = audioTracks[i];\n\n if (!this.selectDefaultTrack || track.default) {\n if (!name || name === track.name) {\n return track.id;\n }\n }\n }\n\n return -1;\n };\n\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {\n var audioTrack = this.tracksInGroup[this.trackId];\n\n if (this.shouldLoadTrack(audioTrack)) {\n var id = audioTrack.id;\n var groupId = audioTrack.groupId;\n var url = audioTrack.url;\n\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(\"Could not construct new URL with HLS Delivery Directives: \" + error);\n }\n } // track not retrieved yet, or live playlist we need to (re)load it\n\n\n this.log(\"loading audio-track playlist for id: \" + id);\n this.clearTimer();\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].AUDIO_TRACK_LOADING, {\n url: url,\n id: id,\n groupId: groupId,\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n };\n\n _createClass(AudioTrackController, [{\n key: \"audioTracks\",\n get: function get() {\n return this.tracksInGroup;\n }\n }, {\n key: \"audioTrack\",\n get: function get() {\n return this.trackId;\n },\n set: function set(newId) {\n // If audio track is selected from API then don't choose from the manifest default track\n this.selectDefaultTrack = false;\n this.setAudioTrack(newId);\n }\n }]);\n\n return AudioTrackController;\n}(_base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AudioTrackController);\n\n/***/ }),\n\n/***/ \"./src/controller/base-playlist-controller.ts\":\n/*!****************************************************!*\\\n !*** ./src/controller/base-playlist-controller.ts ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BasePlaylistController; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _types_level__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../types/level */ \"./src/types/level.ts\");\n/* harmony import */ var _level_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./level-helper */ \"./src/controller/level-helper.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n\n\n\n\n\n\n\nvar BasePlaylistController = /*#__PURE__*/function () {\n function BasePlaylistController(hls, logPrefix) {\n this.hls = void 0;\n this.timer = -1;\n this.canLoad = false;\n this.retryCount = 0;\n this.log = void 0;\n this.warn = void 0;\n this.log = _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log.bind(_utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"], logPrefix + \":\");\n this.warn = _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn.bind(_utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"], logPrefix + \":\");\n this.hls = hls;\n }\n\n var _proto = BasePlaylistController.prototype;\n\n _proto.destroy = function destroy() {\n this.clearTimer(); // @ts-ignore\n\n this.hls = this.log = this.warn = null;\n };\n\n _proto.onError = function onError(event, data) {\n if (data.fatal && data.type === _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorTypes\"].NETWORK_ERROR) {\n this.clearTimer();\n }\n };\n\n _proto.clearTimer = function clearTimer() {\n clearTimeout(this.timer);\n this.timer = -1;\n };\n\n _proto.startLoad = function startLoad() {\n this.canLoad = true;\n this.retryCount = 0;\n this.loadPlaylist();\n };\n\n _proto.stopLoad = function stopLoad() {\n this.canLoad = false;\n this.clearTimer();\n };\n\n _proto.switchParams = function switchParams(playlistUri, previous) {\n var renditionReports = previous === null || previous === void 0 ? void 0 : previous.renditionReports;\n\n if (renditionReports) {\n for (var i = 0; i < renditionReports.length; i++) {\n var attr = renditionReports[i];\n var uri = '' + attr.URI;\n\n if (uri === playlistUri.slice(-uri.length)) {\n var msn = parseInt(attr['LAST-MSN']);\n var part = parseInt(attr['LAST-PART']);\n\n if (previous && this.hls.config.lowLatencyMode) {\n var currentGoal = Math.min(previous.age - previous.partTarget, previous.targetduration);\n\n if (part !== undefined && currentGoal > previous.partTarget) {\n part += 1;\n }\n }\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(msn)) {\n return new _types_level__WEBPACK_IMPORTED_MODULE_1__[\"HlsUrlParameters\"](msn, Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(part) ? part : undefined, _types_level__WEBPACK_IMPORTED_MODULE_1__[\"HlsSkip\"].No);\n }\n }\n }\n }\n };\n\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {};\n\n _proto.shouldLoadTrack = function shouldLoadTrack(track) {\n return this.canLoad && track && !!track.url && (!track.details || track.details.live);\n };\n\n _proto.playlistLoaded = function playlistLoaded(index, data, previousDetails) {\n var _this = this;\n\n var details = data.details,\n stats = data.stats; // Set last updated date-time\n\n var elapsed = stats.loading.end ? Math.max(0, self.performance.now() - stats.loading.end) : 0;\n details.advancedDateTime = Date.now() - elapsed; // if current playlist is a live playlist, arm a timer to reload it\n\n if (details.live || previousDetails !== null && previousDetails !== void 0 && previousDetails.live) {\n details.reloaded(previousDetails);\n\n if (previousDetails) {\n this.log(\"live playlist \" + index + \" \" + (details.advanced ? 'REFRESHED ' + details.lastPartSn + '-' + details.lastPartIndex : 'MISSED'));\n } // Merge live playlists to adjust fragment starts and fill in delta playlist skipped segments\n\n\n if (previousDetails && details.fragments.length > 0) {\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_2__[\"mergeDetails\"])(previousDetails, details);\n }\n\n if (!this.canLoad || !details.live) {\n return;\n }\n\n var deliveryDirectives;\n var msn = undefined;\n var part = undefined;\n\n if (details.canBlockReload && details.endSN && details.advanced) {\n // Load level with LL-HLS delivery directives\n var lowLatencyMode = this.hls.config.lowLatencyMode;\n var lastPartSn = details.lastPartSn;\n var endSn = details.endSN;\n var lastPartIndex = details.lastPartIndex;\n var hasParts = lastPartIndex !== -1;\n var lastPart = lastPartSn === endSn; // When low latency mode is disabled, we'll skip part requests once the last part index is found\n\n var nextSnStartIndex = lowLatencyMode ? 0 : lastPartIndex;\n\n if (hasParts) {\n msn = lastPart ? endSn + 1 : lastPartSn;\n part = lastPart ? nextSnStartIndex : lastPartIndex + 1;\n } else {\n msn = endSn + 1;\n } // Low-Latency CDN Tune-in: \"age\" header and time since load indicates we're behind by more than one part\n // Update directives to obtain the Playlist that has the estimated additional duration of media\n\n\n var lastAdvanced = details.age;\n var cdnAge = lastAdvanced + details.ageHeader;\n var currentGoal = Math.min(cdnAge - details.partTarget, details.targetduration * 1.5);\n\n if (currentGoal > 0) {\n if (previousDetails && currentGoal > previousDetails.tuneInGoal) {\n // If we attempted to get the next or latest playlist update, but currentGoal increased,\n // then we either can't catchup, or the \"age\" header cannot be trusted.\n this.warn(\"CDN Tune-in goal increased from: \" + previousDetails.tuneInGoal + \" to: \" + currentGoal + \" with playlist age: \" + details.age);\n currentGoal = 0;\n } else {\n var segments = Math.floor(currentGoal / details.targetduration);\n msn += segments;\n\n if (part !== undefined) {\n var parts = Math.round(currentGoal % details.targetduration / details.partTarget);\n part += parts;\n }\n\n this.log(\"CDN Tune-in age: \" + details.ageHeader + \"s last advanced \" + lastAdvanced.toFixed(2) + \"s goal: \" + currentGoal + \" skip sn \" + segments + \" to part \" + part);\n }\n\n details.tuneInGoal = currentGoal;\n }\n\n deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n\n if (lowLatencyMode || !lastPart) {\n this.loadPlaylist(deliveryDirectives);\n return;\n }\n } else {\n deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n }\n\n var reloadInterval = Object(_level_helper__WEBPACK_IMPORTED_MODULE_2__[\"computeReloadInterval\"])(details, stats);\n\n if (msn !== undefined && details.canBlockReload) {\n reloadInterval -= details.partTarget || 1;\n }\n\n this.log(\"reload live playlist \" + index + \" in \" + Math.round(reloadInterval) + \" ms\");\n this.timer = self.setTimeout(function () {\n return _this.loadPlaylist(deliveryDirectives);\n }, reloadInterval);\n } else {\n this.clearTimer();\n }\n };\n\n _proto.getDeliveryDirectives = function getDeliveryDirectives(details, previousDeliveryDirectives, msn, part) {\n var skip = Object(_types_level__WEBPACK_IMPORTED_MODULE_1__[\"getSkipValue\"])(details, msn);\n\n if (previousDeliveryDirectives !== null && previousDeliveryDirectives !== void 0 && previousDeliveryDirectives.skip && details.deltaUpdateFailed) {\n msn = previousDeliveryDirectives.msn;\n part = previousDeliveryDirectives.part;\n skip = _types_level__WEBPACK_IMPORTED_MODULE_1__[\"HlsSkip\"].No;\n }\n\n return new _types_level__WEBPACK_IMPORTED_MODULE_1__[\"HlsUrlParameters\"](msn, part, skip);\n };\n\n _proto.retryLoadingOrFail = function retryLoadingOrFail(errorEvent) {\n var _this2 = this;\n\n var config = this.hls.config;\n var retry = this.retryCount < config.levelLoadingMaxRetry;\n\n if (retry) {\n var _errorEvent$context;\n\n this.retryCount++;\n\n if (errorEvent.details.indexOf('LoadTimeOut') > -1 && (_errorEvent$context = errorEvent.context) !== null && _errorEvent$context !== void 0 && _errorEvent$context.deliveryDirectives) {\n // The LL-HLS request already timed out so retry immediately\n this.warn(\"retry playlist loading #\" + this.retryCount + \" after \\\"\" + errorEvent.details + \"\\\"\");\n this.loadPlaylist();\n } else {\n // exponential backoff capped to max retry timeout\n var delay = Math.min(Math.pow(2, this.retryCount) * config.levelLoadingRetryDelay, config.levelLoadingMaxRetryTimeout); // Schedule level/track reload\n\n this.timer = self.setTimeout(function () {\n return _this2.loadPlaylist();\n }, delay);\n this.warn(\"retry playlist loading #\" + this.retryCount + \" in \" + delay + \" ms after \\\"\" + errorEvent.details + \"\\\"\");\n }\n } else {\n this.warn(\"cannot recover from error \\\"\" + errorEvent.details + \"\\\"\"); // stopping live reloading timer if any\n\n this.clearTimer(); // switch error to fatal\n\n errorEvent.fatal = true;\n }\n\n return retry;\n };\n\n return BasePlaylistController;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/base-stream-controller.ts\":\n/*!**************************************************!*\\\n !*** ./src/controller/base-stream-controller.ts ***!\n \\**************************************************/\n/*! exports provided: State, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"State\", function() { return State; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BaseStreamController; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _task_loop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../task-loop */ \"./src/task-loop.ts\");\n/* harmony import */ var _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fragment-tracker */ \"./src/controller/fragment-tracker.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _types_transmuxer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../types/transmuxer */ \"./src/types/transmuxer.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _utils_discontinuities__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/discontinuities */ \"./src/utils/discontinuities.ts\");\n/* harmony import */ var _fragment_finders__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./fragment-finders */ \"./src/controller/fragment-finders.ts\");\n/* harmony import */ var _level_helper__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./level-helper */ \"./src/controller/level-helper.ts\");\n/* harmony import */ var _loader_fragment_loader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../loader/fragment-loader */ \"./src/loader/fragment-loader.ts\");\n/* harmony import */ var _crypt_decrypter__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../crypt/decrypter */ \"./src/crypt/decrypter.ts\");\n/* harmony import */ var _utils_time_ranges__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/time-ranges */ \"./src/utils/time-ranges.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n\n\n\n\n\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar State = {\n STOPPED: 'STOPPED',\n IDLE: 'IDLE',\n KEY_LOADING: 'KEY_LOADING',\n FRAG_LOADING: 'FRAG_LOADING',\n FRAG_LOADING_WAITING_RETRY: 'FRAG_LOADING_WAITING_RETRY',\n WAITING_TRACK: 'WAITING_TRACK',\n PARSING: 'PARSING',\n PARSED: 'PARSED',\n ENDED: 'ENDED',\n ERROR: 'ERROR',\n WAITING_INIT_PTS: 'WAITING_INIT_PTS',\n WAITING_LEVEL: 'WAITING_LEVEL'\n};\n\nvar BaseStreamController = /*#__PURE__*/function (_TaskLoop) {\n _inheritsLoose(BaseStreamController, _TaskLoop);\n\n function BaseStreamController(hls, fragmentTracker, logPrefix) {\n var _this;\n\n _this = _TaskLoop.call(this) || this;\n _this.hls = void 0;\n _this.fragPrevious = null;\n _this.fragCurrent = null;\n _this.fragmentTracker = void 0;\n _this.transmuxer = null;\n _this._state = State.STOPPED;\n _this.media = null;\n _this.mediaBuffer = null;\n _this.config = void 0;\n _this.bitrateTest = false;\n _this.lastCurrentTime = 0;\n _this.nextLoadPosition = 0;\n _this.startPosition = 0;\n _this.loadedmetadata = false;\n _this.fragLoadError = 0;\n _this.retryDate = 0;\n _this.levels = null;\n _this.fragmentLoader = void 0;\n _this.levelLastLoaded = null;\n _this.startFragRequested = false;\n _this.decrypter = void 0;\n _this.initPTS = [];\n _this.onvseeking = null;\n _this.onvended = null;\n _this.logPrefix = '';\n _this.log = void 0;\n _this.warn = void 0;\n _this.logPrefix = logPrefix;\n _this.log = _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].log.bind(_utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"], logPrefix + \":\");\n _this.warn = _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].warn.bind(_utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"], logPrefix + \":\");\n _this.hls = hls;\n _this.fragmentLoader = new _loader_fragment_loader__WEBPACK_IMPORTED_MODULE_12__[\"default\"](hls.config);\n _this.fragmentTracker = fragmentTracker;\n _this.config = hls.config;\n _this.decrypter = new _crypt_decrypter__WEBPACK_IMPORTED_MODULE_13__[\"default\"](hls, hls.config);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].KEY_LOADED, _this.onKeyLoaded, _assertThisInitialized(_this));\n hls.on(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].LEVEL_SWITCHING, _this.onLevelSwitching, _assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = BaseStreamController.prototype;\n\n _proto.doTick = function doTick() {\n this.onTickEnd();\n };\n\n _proto.onTickEnd = function onTickEnd() {} // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ;\n\n _proto.startLoad = function startLoad(startPosition) {};\n\n _proto.stopLoad = function stopLoad() {\n this.fragmentLoader.abort();\n var frag = this.fragCurrent;\n\n if (frag) {\n this.fragmentTracker.removeFragment(frag);\n }\n\n this.resetTransmuxer();\n this.fragCurrent = null;\n this.fragPrevious = null;\n this.clearInterval();\n this.clearNextTick();\n this.state = State.STOPPED;\n };\n\n _proto._streamEnded = function _streamEnded(bufferInfo, levelDetails) {\n var fragCurrent = this.fragCurrent,\n fragmentTracker = this.fragmentTracker; // we just got done loading the final fragment and there is no other buffered range after ...\n // rationale is that in case there are any buffered ranges after, it means that there are unbuffered portion in between\n // so we should not switch to ENDED in that case, to be able to buffer them\n\n if (!levelDetails.live && fragCurrent && this.media && // NOTE: Because of the way parts are currently parsed/represented in the playlist, we can end up\n // in situations where the current fragment is actually greater than levelDetails.endSN. While\n // this feels like the \"wrong place\" to account for that, this is a narrower/safer change than\n // updating e.g. M3U8Parser::parseLevelPlaylist().\n fragCurrent.sn >= levelDetails.endSN && !bufferInfo.nextStart) {\n var partList = levelDetails.partList; // Since the last part isn't guaranteed to correspond to fragCurrent for ll-hls, check instead if the last part is buffered.\n\n if (partList !== null && partList !== void 0 && partList.length) {\n var lastPart = partList[partList.length - 1]; // Checking the midpoint of the part for potential margin of error and related issues.\n // NOTE: Technically I believe parts could yield content that is < the computed duration (including potential a duration of 0)\n // and still be spec-compliant, so there may still be edge cases here. Likewise, there could be issues in end of stream\n // part mismatches for independent audio and video playlists/segments.\n\n var lastPartBuffered = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].isBuffered(this.media, lastPart.start + lastPart.duration / 2);\n return lastPartBuffered;\n }\n\n var fragState = fragmentTracker.getState(fragCurrent);\n return fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__[\"FragmentState\"].PARTIAL || fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__[\"FragmentState\"].OK;\n }\n\n return false;\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n var media = this.media = this.mediaBuffer = data.media;\n this.onvseeking = this.onMediaSeeking.bind(this);\n this.onvended = this.onMediaEnded.bind(this);\n media.addEventListener('seeking', this.onvseeking);\n media.addEventListener('ended', this.onvended);\n var config = this.config;\n\n if (this.levels && config.autoStartLoad && this.state === State.STOPPED) {\n this.startLoad(config.startPosition);\n }\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n var media = this.media;\n\n if (media !== null && media !== void 0 && media.ended) {\n this.log('MSE detaching and video ended, reset startPosition');\n this.startPosition = this.lastCurrentTime = 0;\n } // remove video listeners\n\n\n if (media && this.onvseeking && this.onvended) {\n media.removeEventListener('seeking', this.onvseeking);\n media.removeEventListener('ended', this.onvended);\n this.onvseeking = this.onvended = null;\n }\n\n this.media = this.mediaBuffer = null;\n this.loadedmetadata = false;\n this.fragmentTracker.removeAllFragments();\n this.stopLoad();\n };\n\n _proto.onMediaSeeking = function onMediaSeeking() {\n var config = this.config,\n fragCurrent = this.fragCurrent,\n media = this.media,\n mediaBuffer = this.mediaBuffer,\n state = this.state;\n var currentTime = media ? media.currentTime : 0;\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(mediaBuffer ? mediaBuffer : media, currentTime, config.maxBufferHole);\n this.log(\"media seeking to \" + (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(currentTime) ? currentTime.toFixed(3) : currentTime) + \", state: \" + state);\n\n if (state === State.ENDED) {\n this.resetLoadingState();\n } else if (fragCurrent && !bufferInfo.len) {\n // check if we are seeking to a unbuffered area AND if frag loading is in progress\n var tolerance = config.maxFragLookUpTolerance;\n var fragStartOffset = fragCurrent.start - tolerance;\n var fragEndOffset = fragCurrent.start + fragCurrent.duration + tolerance;\n var pastFragment = currentTime > fragEndOffset; // check if the seek position is past current fragment, and if so abort loading\n\n if (currentTime < fragStartOffset || pastFragment) {\n if (pastFragment && fragCurrent.loader) {\n this.log('seeking outside of buffer while fragment load in progress, cancel fragment load');\n fragCurrent.loader.abort();\n }\n\n this.resetLoadingState();\n }\n }\n\n if (media) {\n this.lastCurrentTime = currentTime;\n } // in case seeking occurs although no media buffered, adjust startPosition and nextLoadPosition to seek target\n\n\n if (!this.loadedmetadata && !bufferInfo.len) {\n this.nextLoadPosition = this.startPosition = currentTime;\n } // Async tick to speed up processing\n\n\n this.tickImmediate();\n };\n\n _proto.onMediaEnded = function onMediaEnded() {\n // reset startPosition and lastCurrentTime to restart playback @ stream beginning\n this.startPosition = this.lastCurrentTime = 0;\n };\n\n _proto.onKeyLoaded = function onKeyLoaded(event, data) {\n if (this.state !== State.KEY_LOADING || data.frag !== this.fragCurrent || !this.levels) {\n return;\n }\n\n this.state = State.IDLE;\n var levelDetails = this.levels[data.frag.level].details;\n\n if (levelDetails) {\n this.loadFragment(data.frag, levelDetails, data.frag.start);\n }\n };\n\n _proto.onLevelSwitching = function onLevelSwitching(event, data) {\n this.fragLoadError = 0;\n };\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this.stopLoad();\n\n _TaskLoop.prototype.onHandlerDestroying.call(this);\n };\n\n _proto.onHandlerDestroyed = function onHandlerDestroyed() {\n this.state = State.STOPPED;\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].KEY_LOADED, this.onKeyLoaded, this);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n\n if (this.fragmentLoader) {\n this.fragmentLoader.destroy();\n }\n\n if (this.decrypter) {\n this.decrypter.destroy();\n }\n\n this.hls = this.log = this.warn = this.decrypter = this.fragmentLoader = this.fragmentTracker = null;\n\n _TaskLoop.prototype.onHandlerDestroyed.call(this);\n };\n\n _proto.loadKey = function loadKey(frag, details) {\n this.log(\"Loading key for \" + frag.sn + \" of [\" + details.startSN + \"-\" + details.endSN + \"], \" + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \" \" + frag.level);\n this.state = State.KEY_LOADING;\n this.fragCurrent = frag;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].KEY_LOADING, {\n frag: frag\n });\n };\n\n _proto.loadFragment = function loadFragment(frag, levelDetails, targetBufferTime) {\n this._loadFragForPlayback(frag, levelDetails, targetBufferTime);\n };\n\n _proto._loadFragForPlayback = function _loadFragForPlayback(frag, levelDetails, targetBufferTime) {\n var _this2 = this;\n\n var progressCallback = function progressCallback(data) {\n if (_this2.fragContextChanged(frag)) {\n _this2.warn(\"Fragment \" + frag.sn + (data.part ? ' p: ' + data.part.index : '') + \" of level \" + frag.level + \" was dropped during download.\");\n\n _this2.fragmentTracker.removeFragment(frag);\n\n return;\n }\n\n frag.stats.chunkCount++;\n\n _this2._handleFragmentLoadProgress(data);\n };\n\n this._doFragLoad(frag, levelDetails, targetBufferTime, progressCallback).then(function (data) {\n if (!data) {\n // if we're here we probably needed to backtrack or are waiting for more parts\n return;\n }\n\n _this2.fragLoadError = 0;\n var state = _this2.state;\n\n if (_this2.fragContextChanged(frag)) {\n if (state === State.FRAG_LOADING || !_this2.fragCurrent && state === State.PARSING) {\n _this2.fragmentTracker.removeFragment(frag);\n\n _this2.state = State.IDLE;\n }\n\n return;\n }\n\n if ('payload' in data) {\n _this2.log(\"Loaded fragment \" + frag.sn + \" of level \" + frag.level);\n\n _this2.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_LOADED, data);\n } // Pass through the whole payload; controllers not implementing progressive loading receive data from this callback\n\n\n _this2._handleFragmentLoadComplete(data);\n }).catch(function (reason) {\n if (_this2.state === State.STOPPED || _this2.state === State.ERROR) {\n return;\n }\n\n _this2.warn(reason);\n\n _this2.resetFragmentLoading(frag);\n });\n };\n\n _proto.flushMainBuffer = function flushMainBuffer(startOffset, endOffset, type) {\n if (type === void 0) {\n type = null;\n }\n\n if (!(startOffset - endOffset)) {\n return;\n } // When alternate audio is playing, the audio-stream-controller is responsible for the audio buffer. Otherwise,\n // passing a null type flushes both buffers\n\n\n var flushScope = {\n startOffset: startOffset,\n endOffset: endOffset,\n type: type\n }; // Reset load errors on flush\n\n this.fragLoadError = 0;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].BUFFER_FLUSHING, flushScope);\n };\n\n _proto._loadInitSegment = function _loadInitSegment(frag) {\n var _this3 = this;\n\n this._doFragLoad(frag).then(function (data) {\n if (!data || _this3.fragContextChanged(frag) || !_this3.levels) {\n throw new Error('init load aborted');\n }\n\n return data;\n }).then(function (data) {\n var hls = _this3.hls;\n var payload = data.payload;\n var decryptData = frag.decryptdata; // check to see if the payload needs to be decrypted\n\n if (payload && payload.byteLength > 0 && decryptData && decryptData.key && decryptData.iv && decryptData.method === 'AES-128') {\n var startTime = self.performance.now(); // decrypt the subtitles\n\n return _this3.decrypter.webCryptoDecrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).then(function (decryptedData) {\n var endTime = self.performance.now();\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_DECRYPTED, {\n frag: frag,\n payload: decryptedData,\n stats: {\n tstart: startTime,\n tdecrypt: endTime\n }\n });\n data.payload = decryptedData;\n return data;\n });\n }\n\n return data;\n }).then(function (data) {\n var fragCurrent = _this3.fragCurrent,\n hls = _this3.hls,\n levels = _this3.levels;\n\n if (!levels) {\n throw new Error('init load aborted, missing levels');\n }\n\n var details = levels[frag.level].details;\n console.assert(details, 'Level details are defined when init segment is loaded');\n var stats = frag.stats;\n _this3.state = State.IDLE;\n _this3.fragLoadError = 0;\n frag.data = new Uint8Array(data.payload);\n stats.parsing.start = stats.buffering.start = self.performance.now();\n stats.parsing.end = stats.buffering.end = self.performance.now(); // Silence FRAG_BUFFERED event if fragCurrent is null\n\n if (data.frag === fragCurrent) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_BUFFERED, {\n stats: stats,\n frag: fragCurrent,\n part: null,\n id: frag.type\n });\n }\n\n _this3.tick();\n }).catch(function (reason) {\n if (_this3.state === State.STOPPED || _this3.state === State.ERROR) {\n return;\n }\n\n _this3.warn(reason);\n\n _this3.resetFragmentLoading(frag);\n });\n };\n\n _proto.fragContextChanged = function fragContextChanged(frag) {\n var fragCurrent = this.fragCurrent;\n return !frag || !fragCurrent || frag.level !== fragCurrent.level || frag.sn !== fragCurrent.sn || frag.urlId !== fragCurrent.urlId;\n };\n\n _proto.fragBufferedComplete = function fragBufferedComplete(frag, part) {\n var media = this.mediaBuffer ? this.mediaBuffer : this.media;\n this.log(\"Buffered \" + frag.type + \" sn: \" + frag.sn + (part ? ' part: ' + part.index : '') + \" of \" + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \" \" + frag.level + \" \" + (media ? _utils_time_ranges__WEBPACK_IMPORTED_MODULE_14__[\"default\"].toString(_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].getBuffered(media)) : '(detached)'));\n this.state = State.IDLE;\n\n if (!media) {\n return;\n }\n\n if (!this.loadedmetadata && media.buffered.length && this.fragCurrent === this.fragPrevious) {\n this.loadedmetadata = true;\n this.seekToStartPos();\n }\n\n this.tick();\n };\n\n _proto.seekToStartPos = function seekToStartPos() {};\n\n _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedEndData) {\n var transmuxer = this.transmuxer;\n\n if (!transmuxer) {\n return;\n }\n\n var frag = fragLoadedEndData.frag,\n part = fragLoadedEndData.part,\n partsLoaded = fragLoadedEndData.partsLoaded; // If we did not load parts, or loaded all parts, we have complete (not partial) fragment data\n\n var complete = !partsLoaded || partsLoaded.length === 0 || partsLoaded.some(function (fragLoaded) {\n return !fragLoaded;\n });\n var chunkMeta = new _types_transmuxer__WEBPACK_IMPORTED_MODULE_7__[\"ChunkMetadata\"](frag.level, frag.sn, frag.stats.chunkCount + 1, 0, part ? part.index : -1, !complete);\n transmuxer.flush(chunkMeta);\n } // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ;\n\n _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(frag) {};\n\n _proto._doFragLoad = function _doFragLoad(frag, details, targetBufferTime, progressCallback) {\n var _this4 = this;\n\n if (targetBufferTime === void 0) {\n targetBufferTime = null;\n }\n\n if (!this.levels) {\n throw new Error('frag load aborted, missing levels');\n }\n\n targetBufferTime = Math.max(frag.start, targetBufferTime || 0);\n\n if (this.config.lowLatencyMode && details) {\n var partList = details.partList;\n\n if (partList && progressCallback) {\n if (targetBufferTime > frag.end && details.fragmentHint) {\n frag = details.fragmentHint;\n }\n\n var partIndex = this.getNextPart(partList, frag, targetBufferTime);\n\n if (partIndex > -1) {\n var part = partList[partIndex];\n this.log(\"Loading part sn: \" + frag.sn + \" p: \" + part.index + \" cc: \" + frag.cc + \" of playlist [\" + details.startSN + \"-\" + details.endSN + \"] parts [0-\" + partIndex + \"-\" + (partList.length - 1) + \"] \" + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \": \" + frag.level + \", target: \" + parseFloat(targetBufferTime.toFixed(3)));\n this.nextLoadPosition = part.start + part.duration;\n this.state = State.FRAG_LOADING;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_LOADING, {\n frag: frag,\n part: partList[partIndex],\n targetBufferTime: targetBufferTime\n });\n return this.doFragPartsLoad(frag, partList, partIndex, progressCallback).catch(function (error) {\n return _this4.handleFragLoadError(error);\n });\n } else if (!frag.url || this.loadedEndOfParts(partList, targetBufferTime)) {\n // Fragment hint has no parts\n return Promise.resolve(null);\n }\n }\n }\n\n this.log(\"Loading fragment \" + frag.sn + \" cc: \" + frag.cc + \" \" + (details ? 'of [' + details.startSN + '-' + details.endSN + '] ' : '') + (this.logPrefix === '[stream-controller]' ? 'level' : 'track') + \": \" + frag.level + \", target: \" + parseFloat(targetBufferTime.toFixed(3))); // Don't update nextLoadPosition for fragments which are not buffered\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.sn) && !this.bitrateTest) {\n this.nextLoadPosition = frag.start + frag.duration;\n }\n\n this.state = State.FRAG_LOADING;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_LOADING, {\n frag: frag,\n targetBufferTime: targetBufferTime\n });\n return this.fragmentLoader.load(frag, progressCallback).catch(function (error) {\n return _this4.handleFragLoadError(error);\n });\n };\n\n _proto.doFragPartsLoad = function doFragPartsLoad(frag, partList, partIndex, progressCallback) {\n var _this5 = this;\n\n return new Promise(function (resolve, reject) {\n var partsLoaded = [];\n\n var loadPartIndex = function loadPartIndex(index) {\n var part = partList[index];\n\n _this5.fragmentLoader.loadPart(frag, part, progressCallback).then(function (partLoadedData) {\n partsLoaded[part.index] = partLoadedData;\n var loadedPart = partLoadedData.part;\n\n _this5.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_LOADED, partLoadedData);\n\n var nextPart = partList[index + 1];\n\n if (nextPart && nextPart.fragment === frag) {\n loadPartIndex(index + 1);\n } else {\n return resolve({\n frag: frag,\n part: loadedPart,\n partsLoaded: partsLoaded\n });\n }\n }).catch(reject);\n };\n\n loadPartIndex(partIndex);\n });\n };\n\n _proto.handleFragLoadError = function handleFragLoadError(_ref) {\n var data = _ref.data;\n\n if (data && data.details === _errors__WEBPACK_IMPORTED_MODULE_6__[\"ErrorDetails\"].INTERNAL_ABORTED) {\n this.handleFragLoadAborted(data.frag, data.part);\n } else {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].ERROR, data);\n }\n\n return null;\n };\n\n _proto._handleTransmuxerFlush = function _handleTransmuxerFlush(chunkMeta) {\n var context = this.getCurrentContext(chunkMeta);\n\n if (!context || this.state !== State.PARSING) {\n if (!this.fragCurrent) {\n this.state = State.IDLE;\n }\n\n return;\n }\n\n var frag = context.frag,\n part = context.part,\n level = context.level;\n var now = self.performance.now();\n frag.stats.parsing.end = now;\n\n if (part) {\n part.stats.parsing.end = now;\n }\n\n this.updateLevelTiming(frag, part, level, chunkMeta.partial);\n };\n\n _proto.getCurrentContext = function getCurrentContext(chunkMeta) {\n var levels = this.levels;\n var levelIndex = chunkMeta.level,\n sn = chunkMeta.sn,\n partIndex = chunkMeta.part;\n\n if (!levels || !levels[levelIndex]) {\n this.warn(\"Levels object was unset while buffering fragment \" + sn + \" of level \" + levelIndex + \". The current chunk will not be buffered.\");\n return null;\n }\n\n var level = levels[levelIndex];\n var part = partIndex > -1 ? Object(_level_helper__WEBPACK_IMPORTED_MODULE_11__[\"getPartWith\"])(level, sn, partIndex) : null;\n var frag = part ? part.fragment : Object(_level_helper__WEBPACK_IMPORTED_MODULE_11__[\"getFragmentWithSN\"])(level, sn, this.fragCurrent);\n\n if (!frag) {\n return null;\n }\n\n return {\n frag: frag,\n part: part,\n level: level\n };\n };\n\n _proto.bufferFragmentData = function bufferFragmentData(data, frag, part, chunkMeta) {\n if (!data || this.state !== State.PARSING) {\n return;\n }\n\n var data1 = data.data1,\n data2 = data.data2;\n var buffer = data1;\n\n if (data1 && data2) {\n // Combine the moof + mdat so that we buffer with a single append\n buffer = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_8__[\"appendUint8Array\"])(data1, data2);\n }\n\n if (!buffer || !buffer.length) {\n return;\n }\n\n var segment = {\n type: data.type,\n frag: frag,\n part: part,\n chunkMeta: chunkMeta,\n parent: frag.type,\n data: buffer\n };\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].BUFFER_APPENDING, segment);\n\n if (data.dropped && data.independent && !part) {\n // Clear buffer so that we reload previous segments sequentially if required\n this.flushBufferGap(frag);\n }\n };\n\n _proto.flushBufferGap = function flushBufferGap(frag) {\n var media = this.media;\n\n if (!media) {\n return;\n } // If currentTime is not buffered, clear the back buffer so that we can backtrack as much as needed\n\n\n if (!_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].isBuffered(media, media.currentTime)) {\n this.flushMainBuffer(0, frag.start);\n return;\n } // Remove back-buffer without interrupting playback to allow back tracking\n\n\n var currentTime = media.currentTime;\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(media, currentTime, 0);\n var fragDuration = frag.duration;\n var segmentFraction = Math.min(this.config.maxFragLookUpTolerance * 2, fragDuration * 0.25);\n var start = Math.max(Math.min(frag.start - segmentFraction, bufferInfo.end - segmentFraction), currentTime + segmentFraction);\n\n if (frag.start - start > segmentFraction) {\n this.flushMainBuffer(start, frag.start);\n }\n };\n\n _proto.getFwdBufferInfo = function getFwdBufferInfo(bufferable, type) {\n var config = this.config;\n var pos = this.getLoadPosition();\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(pos)) {\n return null;\n }\n\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(bufferable, pos, config.maxBufferHole); // Workaround flaw in getting forward buffer when maxBufferHole is smaller than gap at current pos\n\n if (bufferInfo.len === 0 && bufferInfo.nextStart !== undefined) {\n var bufferedFragAtPos = this.fragmentTracker.getBufferedFrag(pos, type);\n\n if (bufferedFragAtPos && bufferInfo.nextStart < bufferedFragAtPos.end) {\n return _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].bufferInfo(bufferable, pos, Math.max(bufferInfo.nextStart, config.maxBufferHole));\n }\n }\n\n return bufferInfo;\n };\n\n _proto.getMaxBufferLength = function getMaxBufferLength(levelBitrate) {\n var config = this.config;\n var maxBufLen;\n\n if (levelBitrate) {\n maxBufLen = Math.max(8 * config.maxBufferSize / levelBitrate, config.maxBufferLength);\n } else {\n maxBufLen = config.maxBufferLength;\n }\n\n return Math.min(maxBufLen, config.maxMaxBufferLength);\n };\n\n _proto.reduceMaxBufferLength = function reduceMaxBufferLength(threshold) {\n var config = this.config;\n var minLength = threshold || config.maxBufferLength;\n\n if (config.maxMaxBufferLength >= minLength) {\n // reduce max buffer length as it might be too high. we do this to avoid loop flushing ...\n config.maxMaxBufferLength /= 2;\n this.warn(\"Reduce max buffer length to \" + config.maxMaxBufferLength + \"s\");\n return true;\n }\n\n return false;\n };\n\n _proto.getNextFragment = function getNextFragment(pos, levelDetails) {\n var fragments = levelDetails.fragments;\n var fragLen = fragments.length;\n\n if (!fragLen) {\n return null;\n } // find fragment index, contiguous with end of buffer position\n\n\n var config = this.config;\n var start = fragments[0].start;\n var frag;\n\n if (levelDetails.live) {\n var initialLiveManifestSize = config.initialLiveManifestSize;\n\n if (fragLen < initialLiveManifestSize) {\n this.warn(\"Not enough fragments to start playback (have: \" + fragLen + \", need: \" + initialLiveManifestSize + \")\");\n return null;\n } // The real fragment start times for a live stream are only known after the PTS range for that level is known.\n // In order to discover the range, we load the best matching fragment for that level and demux it.\n // Do not load using live logic if the starting frag is requested - we want to use getFragmentAtPosition() so that\n // we get the fragment matching that start time\n\n\n if (!levelDetails.PTSKnown && !this.startFragRequested && this.startPosition === -1) {\n frag = this.getInitialLiveFragment(levelDetails, fragments);\n this.startPosition = frag ? this.hls.liveSyncPosition || frag.start : pos;\n }\n } else if (pos <= start) {\n // VoD playlist: if loadPosition before start of playlist, load first fragment\n frag = fragments[0];\n } // If we haven't run into any special cases already, just load the fragment most closely matching the requested position\n\n\n if (!frag) {\n var end = config.lowLatencyMode ? levelDetails.partEnd : levelDetails.fragmentEnd;\n frag = this.getFragmentAtPosition(pos, end, levelDetails);\n }\n\n return this.mapToInitFragWhenRequired(frag);\n };\n\n _proto.mapToInitFragWhenRequired = function mapToInitFragWhenRequired(frag) {\n // If an initSegment is present, it must be buffered first\n if (frag !== null && frag !== void 0 && frag.initSegment && !(frag !== null && frag !== void 0 && frag.initSegment.data) && !this.bitrateTest) {\n return frag.initSegment;\n }\n\n return frag;\n };\n\n _proto.getNextPart = function getNextPart(partList, frag, targetBufferTime) {\n var nextPart = -1;\n var contiguous = false;\n var independentAttrOmitted = true;\n\n for (var i = 0, len = partList.length; i < len; i++) {\n var part = partList[i];\n independentAttrOmitted = independentAttrOmitted && !part.independent;\n\n if (nextPart > -1 && targetBufferTime < part.start) {\n break;\n }\n\n var loaded = part.loaded;\n\n if (!loaded && (contiguous || part.independent || independentAttrOmitted) && part.fragment === frag) {\n nextPart = i;\n }\n\n contiguous = loaded;\n }\n\n return nextPart;\n };\n\n _proto.loadedEndOfParts = function loadedEndOfParts(partList, targetBufferTime) {\n var lastPart = partList[partList.length - 1];\n return lastPart && targetBufferTime > lastPart.start && lastPart.loaded;\n }\n /*\n This method is used find the best matching first fragment for a live playlist. This fragment is used to calculate the\n \"sliding\" of the playlist, which is its offset from the start of playback. After sliding we can compute the real\n start and end times for each fragment in the playlist (after which this method will not need to be called).\n */\n ;\n\n _proto.getInitialLiveFragment = function getInitialLiveFragment(levelDetails, fragments) {\n var fragPrevious = this.fragPrevious;\n var frag = null;\n\n if (fragPrevious) {\n if (levelDetails.hasProgramDateTime) {\n // Prefer using PDT, because it can be accurate enough to choose the correct fragment without knowing the level sliding\n this.log(\"Live playlist, switching playlist, load frag with same PDT: \" + fragPrevious.programDateTime);\n frag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_10__[\"findFragmentByPDT\"])(fragments, fragPrevious.endProgramDateTime, this.config.maxFragLookUpTolerance);\n }\n\n if (!frag) {\n // SN does not need to be accurate between renditions, but depending on the packaging it may be so.\n var targetSN = fragPrevious.sn + 1;\n\n if (targetSN >= levelDetails.startSN && targetSN <= levelDetails.endSN) {\n var fragNext = fragments[targetSN - levelDetails.startSN]; // Ensure that we're staying within the continuity range, since PTS resets upon a new range\n\n if (fragPrevious.cc === fragNext.cc) {\n frag = fragNext;\n this.log(\"Live playlist, switching playlist, load frag with next SN: \" + frag.sn);\n }\n } // It's important to stay within the continuity range if available; otherwise the fragments in the playlist\n // will have the wrong start times\n\n\n if (!frag) {\n frag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_10__[\"findFragWithCC\"])(fragments, fragPrevious.cc);\n\n if (frag) {\n this.log(\"Live playlist, switching playlist, load frag with same CC: \" + frag.sn);\n }\n }\n }\n } else {\n // Find a new start fragment when fragPrevious is null\n var liveStart = this.hls.liveSyncPosition;\n\n if (liveStart !== null) {\n frag = this.getFragmentAtPosition(liveStart, this.bitrateTest ? levelDetails.fragmentEnd : levelDetails.edge, levelDetails);\n }\n }\n\n return frag;\n }\n /*\n This method finds the best matching fragment given the provided position.\n */\n ;\n\n _proto.getFragmentAtPosition = function getFragmentAtPosition(bufferEnd, end, levelDetails) {\n var config = this.config,\n fragPrevious = this.fragPrevious;\n var fragments = levelDetails.fragments,\n endSN = levelDetails.endSN;\n var fragmentHint = levelDetails.fragmentHint;\n var tolerance = config.maxFragLookUpTolerance;\n var loadingParts = !!(config.lowLatencyMode && levelDetails.partList && fragmentHint);\n\n if (loadingParts && fragmentHint && !this.bitrateTest) {\n // Include incomplete fragment with parts at end\n fragments = fragments.concat(fragmentHint);\n endSN = fragmentHint.sn;\n }\n\n var frag;\n\n if (bufferEnd < end) {\n var lookupTolerance = bufferEnd > end - tolerance ? 0 : tolerance; // Remove the tolerance if it would put the bufferEnd past the actual end of stream\n // Uses buffer and sequence number to calculate switch segment (required if using EXT-X-DISCONTINUITY-SEQUENCE)\n\n frag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_10__[\"findFragmentByPTS\"])(fragPrevious, fragments, bufferEnd, lookupTolerance);\n } else {\n // reach end of playlist\n frag = fragments[fragments.length - 1];\n }\n\n if (frag) {\n var curSNIdx = frag.sn - levelDetails.startSN;\n\n if (fragPrevious && frag.sn === fragPrevious.sn && !loadingParts) {\n // Force the next fragment to load if the previous one was already selected. This can occasionally happen with\n // non-uniform fragment durations\n var sameLevel = fragPrevious && frag.level === fragPrevious.level;\n\n if (sameLevel) {\n var nextFrag = fragments[curSNIdx + 1];\n\n if (frag.sn < endSN && this.fragmentTracker.getState(nextFrag) !== _fragment_tracker__WEBPACK_IMPORTED_MODULE_2__[\"FragmentState\"].OK) {\n this.log(\"SN \" + frag.sn + \" just loaded, load next one: \" + nextFrag.sn);\n frag = nextFrag;\n } else {\n frag = null;\n }\n }\n }\n }\n\n return frag;\n };\n\n _proto.synchronizeToLiveEdge = function synchronizeToLiveEdge(levelDetails) {\n var config = this.config,\n media = this.media;\n\n if (!media) {\n return;\n }\n\n var liveSyncPosition = this.hls.liveSyncPosition;\n var currentTime = media.currentTime;\n var start = levelDetails.fragments[0].start;\n var end = levelDetails.edge;\n var withinSlidingWindow = currentTime >= start - config.maxFragLookUpTolerance && currentTime <= end; // Continue if we can seek forward to sync position or if current time is outside of sliding window\n\n if (liveSyncPosition !== null && media.duration > liveSyncPosition && (currentTime < liveSyncPosition || !withinSlidingWindow)) {\n // Continue if buffer is starving or if current time is behind max latency\n var maxLatency = config.liveMaxLatencyDuration !== undefined ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount * levelDetails.targetduration;\n\n if (!withinSlidingWindow && media.readyState < 4 || currentTime < end - maxLatency) {\n if (!this.loadedmetadata) {\n this.nextLoadPosition = liveSyncPosition;\n } // Only seek if ready and there is not a significant forward buffer available for playback\n\n\n if (media.readyState) {\n this.warn(\"Playback: \" + currentTime.toFixed(3) + \" is located too far from the end of live sliding playlist: \" + end + \", reset currentTime to : \" + liveSyncPosition.toFixed(3));\n media.currentTime = liveSyncPosition;\n }\n }\n }\n };\n\n _proto.alignPlaylists = function alignPlaylists(details, previousDetails) {\n var levels = this.levels,\n levelLastLoaded = this.levelLastLoaded,\n fragPrevious = this.fragPrevious;\n var lastLevel = levelLastLoaded !== null ? levels[levelLastLoaded] : null; // FIXME: If not for `shouldAlignOnDiscontinuities` requiring fragPrevious.cc,\n // this could all go in level-helper mergeDetails()\n\n var length = details.fragments.length;\n\n if (!length) {\n this.warn(\"No fragments in live playlist\");\n return 0;\n }\n\n var slidingStart = details.fragments[0].start;\n var firstLevelLoad = !previousDetails;\n\n var aligned = details.alignedSliding && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(slidingStart);\n\n if (firstLevelLoad || !aligned && !slidingStart) {\n Object(_utils_discontinuities__WEBPACK_IMPORTED_MODULE_9__[\"alignStream\"])(fragPrevious, lastLevel, details);\n var alignedSlidingStart = details.fragments[0].start;\n this.log(\"Live playlist sliding: \" + alignedSlidingStart.toFixed(2) + \" start-sn: \" + (previousDetails ? previousDetails.startSN : 'na') + \"->\" + details.startSN + \" prev-sn: \" + (fragPrevious ? fragPrevious.sn : 'na') + \" fragments: \" + length);\n return alignedSlidingStart;\n }\n\n return slidingStart;\n };\n\n _proto.waitForCdnTuneIn = function waitForCdnTuneIn(details) {\n // Wait for Low-Latency CDN Tune-in to get an updated playlist\n var advancePartLimit = 3;\n return details.live && details.canBlockReload && details.partTarget && details.tuneInGoal > Math.max(details.partHoldBack, details.partTarget * advancePartLimit);\n };\n\n _proto.setStartPosition = function setStartPosition(details, sliding) {\n // compute start position if set to -1. use it straight away if value is defined\n var startPosition = this.startPosition;\n\n if (startPosition < sliding) {\n startPosition = -1;\n }\n\n if (startPosition === -1 || this.lastCurrentTime === -1) {\n // first, check if start time offset has been set in playlist, if yes, use this value\n var startTimeOffset = details.startTimeOffset;\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(startTimeOffset)) {\n startPosition = sliding + startTimeOffset;\n\n if (startTimeOffset < 0) {\n startPosition += details.totalduration;\n }\n\n startPosition = Math.min(Math.max(sliding, startPosition), sliding + details.totalduration);\n this.log(\"Start time offset \" + startTimeOffset + \" found in playlist, adjust startPosition to \" + startPosition);\n this.startPosition = startPosition;\n } else if (details.live) {\n // Leave this.startPosition at -1, so that we can use `getInitialLiveFragment` logic when startPosition has\n // not been specified via the config or an as an argument to startLoad (#3736).\n startPosition = this.hls.liveSyncPosition || sliding;\n } else {\n this.startPosition = startPosition = 0;\n }\n\n this.lastCurrentTime = startPosition;\n }\n\n this.nextLoadPosition = startPosition;\n };\n\n _proto.getLoadPosition = function getLoadPosition() {\n var media = this.media; // if we have not yet loaded any fragment, start loading from start position\n\n var pos = 0;\n\n if (this.loadedmetadata && media) {\n pos = media.currentTime;\n } else if (this.nextLoadPosition) {\n pos = this.nextLoadPosition;\n }\n\n return pos;\n };\n\n _proto.handleFragLoadAborted = function handleFragLoadAborted(frag, part) {\n if (this.transmuxer && frag.sn !== 'initSegment' && frag.stats.aborted) {\n this.warn(\"Fragment \" + frag.sn + (part ? ' part' + part.index : '') + \" of level \" + frag.level + \" was aborted\");\n this.resetFragmentLoading(frag);\n }\n };\n\n _proto.resetFragmentLoading = function resetFragmentLoading(frag) {\n if (!this.fragCurrent || !this.fragContextChanged(frag) && this.state !== State.FRAG_LOADING_WAITING_RETRY) {\n this.state = State.IDLE;\n }\n };\n\n _proto.onFragmentOrKeyLoadError = function onFragmentOrKeyLoadError(filterType, data) {\n if (data.fatal) {\n return;\n }\n\n var frag = data.frag; // Handle frag error related to caller's filterType\n\n if (!frag || frag.type !== filterType) {\n return;\n }\n\n var fragCurrent = this.fragCurrent;\n console.assert(fragCurrent && frag.sn === fragCurrent.sn && frag.level === fragCurrent.level && frag.urlId === fragCurrent.urlId, 'Frag load error must match current frag to retry');\n var config = this.config; // keep retrying until the limit will be reached\n\n if (this.fragLoadError + 1 <= config.fragLoadingMaxRetry) {\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n this.nextLoadPosition = this.startPosition;\n } // exponential backoff capped to config.fragLoadingMaxRetryTimeout\n\n\n var delay = Math.min(Math.pow(2, this.fragLoadError) * config.fragLoadingRetryDelay, config.fragLoadingMaxRetryTimeout);\n this.warn(\"Fragment \" + frag.sn + \" of \" + filterType + \" \" + frag.level + \" failed to load, retrying in \" + delay + \"ms\");\n this.retryDate = self.performance.now() + delay;\n this.fragLoadError++;\n this.state = State.FRAG_LOADING_WAITING_RETRY;\n } else if (data.levelRetry) {\n if (filterType === _types_loader__WEBPACK_IMPORTED_MODULE_15__[\"PlaylistLevelType\"].AUDIO) {\n // Reset current fragment since audio track audio is essential and may not have a fail-over track\n this.fragCurrent = null;\n } // Fragment errors that result in a level switch or redundant fail-over\n // should reset the stream controller state to idle\n\n\n this.fragLoadError = 0;\n this.state = State.IDLE;\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].error(data.details + \" reaches max retry, redispatch as fatal ...\"); // switch error to fatal\n\n data.fatal = true;\n this.hls.stopLoad();\n this.state = State.ERROR;\n }\n };\n\n _proto.afterBufferFlushed = function afterBufferFlushed(media, bufferType, playlistType) {\n if (!media) {\n return;\n } // After successful buffer flushing, filter flushed fragments from bufferedFrags use mediaBuffered instead of media\n // (so that we will check against video.buffered ranges in case of alt audio track)\n\n\n var bufferedTimeRanges = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__[\"BufferHelper\"].getBuffered(media);\n this.fragmentTracker.detectEvictedFragments(bufferType, bufferedTimeRanges, playlistType);\n\n if (this.state === State.ENDED) {\n this.resetLoadingState();\n }\n };\n\n _proto.resetLoadingState = function resetLoadingState() {\n this.fragCurrent = null;\n this.fragPrevious = null;\n this.state = State.IDLE;\n };\n\n _proto.resetStartWhenNotLoaded = function resetStartWhenNotLoaded(level) {\n // if loadedmetadata is not set, it means that first frag request failed\n // in that case, reset startFragRequested flag\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n var details = this.levels ? this.levels[level].details : null;\n\n if (details !== null && details !== void 0 && details.live) {\n // Update the start position and return to IDLE to recover live start\n this.startPosition = -1;\n this.setStartPosition(details, 0);\n this.resetLoadingState();\n } else {\n this.nextLoadPosition = this.startPosition;\n }\n }\n };\n\n _proto.updateLevelTiming = function updateLevelTiming(frag, part, level, partial) {\n var _this6 = this;\n\n var details = level.details;\n console.assert(!!details, 'level.details must be defined');\n var parsed = Object.keys(frag.elementaryStreams).reduce(function (result, type) {\n var info = frag.elementaryStreams[type];\n\n if (info) {\n var parsedDuration = info.endPTS - info.startPTS;\n\n if (parsedDuration <= 0) {\n // Destroy the transmuxer after it's next time offset failed to advance because duration was <= 0.\n // The new transmuxer will be configured with a time offset matching the next fragment start,\n // preventing the timeline from shifting.\n _this6.warn(\"Could not parse fragment \" + frag.sn + \" \" + type + \" duration reliably (\" + parsedDuration + \")\");\n\n return result || false;\n }\n\n var drift = partial ? 0 : Object(_level_helper__WEBPACK_IMPORTED_MODULE_11__[\"updateFragPTSDTS\"])(details, frag, info.startPTS, info.endPTS, info.startDTS, info.endDTS);\n\n _this6.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].LEVEL_PTS_UPDATED, {\n details: details,\n level: level,\n drift: drift,\n type: type,\n frag: frag,\n start: info.startPTS,\n end: info.endPTS\n });\n\n return true;\n }\n\n return result;\n }, false);\n\n if (!parsed) {\n this.warn(\"Found no media in fragment \" + frag.sn + \" of level \" + level.id + \" resetting transmuxer to fallback to playlist timing\");\n this.resetTransmuxer();\n }\n\n this.state = State.PARSED;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_5__[\"Events\"].FRAG_PARSED, {\n frag: frag,\n part: part\n });\n };\n\n _proto.resetTransmuxer = function resetTransmuxer() {\n if (this.transmuxer) {\n this.transmuxer.destroy();\n this.transmuxer = null;\n }\n };\n\n _createClass(BaseStreamController, [{\n key: \"state\",\n get: function get() {\n return this._state;\n },\n set: function set(nextState) {\n var previousState = this._state;\n\n if (previousState !== nextState) {\n this._state = nextState;\n this.log(previousState + \"->\" + nextState);\n }\n }\n }]);\n\n return BaseStreamController;\n}(_task_loop__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/buffer-controller.ts\":\n/*!*********************************************!*\\\n !*** ./src/controller/buffer-controller.ts ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BufferController; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/mediasource-helper */ \"./src/utils/mediasource-helper.ts\");\n/* harmony import */ var _loader_fragment__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../loader/fragment */ \"./src/loader/fragment.ts\");\n/* harmony import */ var _buffer_operation_queue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./buffer-operation-queue */ \"./src/controller/buffer-operation-queue.ts\");\n\n\n\n\n\n\n\n\n\n\n\n\nvar MediaSource = Object(_utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__[\"getMediaSource\"])();\nvar VIDEO_CODEC_PROFILE_REPACE = /([ha]vc.)(?:\\.[^.,]+)+/;\n\nvar BufferController = /*#__PURE__*/function () {\n // The level details used to determine duration, target-duration and live\n // cache the self generated object url to detect hijack of video tag\n // A queue of buffer operations which require the SourceBuffer to not be updating upon execution\n // References to event listeners for each SourceBuffer, so that they can be referenced for event removal\n // The number of BUFFER_CODEC events received before any sourceBuffers are created\n // The total number of BUFFER_CODEC events received\n // A reference to the attached media element\n // A reference to the active media source\n // counters\n function BufferController(_hls) {\n var _this = this;\n\n this.details = null;\n this._objectUrl = null;\n this.operationQueue = void 0;\n this.listeners = void 0;\n this.hls = void 0;\n this.bufferCodecEventsExpected = 0;\n this._bufferCodecEventsTotal = 0;\n this.media = null;\n this.mediaSource = null;\n this.appendError = 0;\n this.tracks = {};\n this.pendingTracks = {};\n this.sourceBuffer = void 0;\n\n this._onMediaSourceOpen = function () {\n var hls = _this.hls,\n media = _this.media,\n mediaSource = _this.mediaSource;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Media source opened');\n\n if (media) {\n _this.updateMediaElementDuration();\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHED, {\n media: media\n });\n }\n\n if (mediaSource) {\n // once received, don't listen anymore to sourceopen event\n mediaSource.removeEventListener('sourceopen', _this._onMediaSourceOpen);\n }\n\n _this.checkPendingTracks();\n };\n\n this._onMediaSourceClose = function () {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Media source closed');\n };\n\n this._onMediaSourceEnded = function () {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Media source ended');\n };\n\n this.hls = _hls;\n\n this._initSourceBuffer();\n\n this.registerListeners();\n }\n\n var _proto = BufferController.prototype;\n\n _proto.hasSourceTypes = function hasSourceTypes() {\n return this.getSourceBufferTypes().length > 0 || Object.keys(this.pendingTracks).length > 0;\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.details = null;\n };\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_RESET, this.onBufferReset, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_APPENDING, this.onBufferAppending, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_CODECS, this.onBufferCodecs, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_EOS, this.onBufferEos, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSED, this.onFragParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_CHANGED, this.onFragChanged, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_RESET, this.onBufferReset, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_APPENDING, this.onBufferAppending, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_CODECS, this.onBufferCodecs, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_EOS, this.onBufferEos, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSED, this.onFragParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_CHANGED, this.onFragChanged, this);\n };\n\n _proto._initSourceBuffer = function _initSourceBuffer() {\n this.sourceBuffer = {};\n this.operationQueue = new _buffer_operation_queue__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.sourceBuffer);\n this.listeners = {\n audio: [],\n video: [],\n audiovideo: []\n };\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n // in case of alt audio 2 BUFFER_CODECS events will be triggered, one per stream controller\n // sourcebuffers will be created all at once when the expected nb of tracks will be reached\n // in case alt audio is not used, only one BUFFER_CODEC event will be fired from main stream controller\n // it will contain the expected nb of source buffers, no need to compute it\n var codecEvents = 2;\n\n if (data.audio && !data.video || !data.altAudio) {\n codecEvents = 1;\n }\n\n this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = codecEvents;\n this.details = null;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(this.bufferCodecEventsExpected + \" bufferCodec event(s) expected\");\n };\n\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n var media = this.media = data.media;\n\n if (media && MediaSource) {\n var ms = this.mediaSource = new MediaSource(); // MediaSource listeners are arrow functions with a lexical scope, and do not need to be bound\n\n ms.addEventListener('sourceopen', this._onMediaSourceOpen);\n ms.addEventListener('sourceended', this._onMediaSourceEnded);\n ms.addEventListener('sourceclose', this._onMediaSourceClose); // link video and media Source\n\n media.src = self.URL.createObjectURL(ms); // cache the locally generated object url\n\n this._objectUrl = media.src;\n }\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n var media = this.media,\n mediaSource = this.mediaSource,\n _objectUrl = this._objectUrl;\n\n if (mediaSource) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: media source detaching');\n\n if (mediaSource.readyState === 'open') {\n try {\n // endOfStream could trigger exception if any sourcebuffer is in updating state\n // we don't really care about checking sourcebuffer state here,\n // as we are anyway detaching the MediaSource\n // let's just avoid this exception to propagate\n mediaSource.endOfStream();\n } catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: onMediaDetaching: \" + err.message + \" while calling endOfStream\");\n }\n } // Clean up the SourceBuffers by invoking onBufferReset\n\n\n this.onBufferReset();\n mediaSource.removeEventListener('sourceopen', this._onMediaSourceOpen);\n mediaSource.removeEventListener('sourceended', this._onMediaSourceEnded);\n mediaSource.removeEventListener('sourceclose', this._onMediaSourceClose); // Detach properly the MediaSource from the HTMLMediaElement as\n // suggested in https://github.com/w3c/media-source/issues/53.\n\n if (media) {\n if (_objectUrl) {\n self.URL.revokeObjectURL(_objectUrl);\n } // clean up video tag src only if it's our own url. some external libraries might\n // hijack the video tag and change its 'src' without destroying the Hls instance first\n\n\n if (media.src === _objectUrl) {\n media.removeAttribute('src');\n media.load();\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('[buffer-controller]: media.src was changed by a third party - skip cleanup');\n }\n }\n\n this.mediaSource = null;\n this.media = null;\n this._objectUrl = null;\n this.bufferCodecEventsExpected = this._bufferCodecEventsTotal;\n this.pendingTracks = {};\n this.tracks = {};\n }\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHED, undefined);\n };\n\n _proto.onBufferReset = function onBufferReset() {\n var _this2 = this;\n\n this.getSourceBufferTypes().forEach(function (type) {\n var sb = _this2.sourceBuffer[type];\n\n try {\n if (sb) {\n _this2.removeBufferListeners(type);\n\n if (_this2.mediaSource) {\n _this2.mediaSource.removeSourceBuffer(sb);\n } // Synchronously remove the SB from the map before the next call in order to prevent an async function from\n // accessing it\n\n\n _this2.sourceBuffer[type] = undefined;\n }\n } catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Failed to reset the \" + type + \" buffer\", err);\n }\n });\n\n this._initSourceBuffer();\n };\n\n _proto.onBufferCodecs = function onBufferCodecs(event, data) {\n var _this3 = this;\n\n var sourceBufferCount = this.getSourceBufferTypes().length;\n Object.keys(data).forEach(function (trackName) {\n if (sourceBufferCount) {\n // check if SourceBuffer codec needs to change\n var track = _this3.tracks[trackName];\n\n if (track && typeof track.buffer.changeType === 'function') {\n var _data$trackName = data[trackName],\n id = _data$trackName.id,\n codec = _data$trackName.codec,\n levelCodec = _data$trackName.levelCodec,\n container = _data$trackName.container,\n metadata = _data$trackName.metadata;\n var currentCodec = (track.levelCodec || track.codec).replace(VIDEO_CODEC_PROFILE_REPACE, '$1');\n var nextCodec = (levelCodec || codec).replace(VIDEO_CODEC_PROFILE_REPACE, '$1');\n\n if (currentCodec !== nextCodec) {\n var mimeType = container + \";codecs=\" + (levelCodec || codec);\n\n _this3.appendChangeType(trackName, mimeType);\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: switching codec \" + currentCodec + \" to \" + nextCodec);\n _this3.tracks[trackName] = {\n buffer: track.buffer,\n codec: codec,\n container: container,\n levelCodec: levelCodec,\n metadata: metadata,\n id: id\n };\n }\n }\n } else {\n // if source buffer(s) not created yet, appended buffer tracks in this.pendingTracks\n _this3.pendingTracks[trackName] = data[trackName];\n }\n }); // if sourcebuffers already created, do nothing ...\n\n if (sourceBufferCount) {\n return;\n }\n\n this.bufferCodecEventsExpected = Math.max(this.bufferCodecEventsExpected - 1, 0);\n\n if (this.mediaSource && this.mediaSource.readyState === 'open') {\n this.checkPendingTracks();\n }\n };\n\n _proto.appendChangeType = function appendChangeType(type, mimeType) {\n var _this4 = this;\n\n var operationQueue = this.operationQueue;\n var operation = {\n execute: function execute() {\n var sb = _this4.sourceBuffer[type];\n\n if (sb) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: changing \" + type + \" sourceBuffer type to \" + mimeType);\n sb.changeType(mimeType);\n }\n\n operationQueue.shiftAndExecuteNext(type);\n },\n onStart: function onStart() {},\n onComplete: function onComplete() {},\n onError: function onError(e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Failed to change \" + type + \" SourceBuffer type\", e);\n }\n };\n operationQueue.append(operation, type);\n };\n\n _proto.onBufferAppending = function onBufferAppending(event, eventData) {\n var _this5 = this;\n\n var hls = this.hls,\n operationQueue = this.operationQueue,\n tracks = this.tracks;\n var data = eventData.data,\n type = eventData.type,\n frag = eventData.frag,\n part = eventData.part,\n chunkMeta = eventData.chunkMeta;\n var chunkStats = chunkMeta.buffering[type];\n var bufferAppendingStart = self.performance.now();\n chunkStats.start = bufferAppendingStart;\n var fragBuffering = frag.stats.buffering;\n var partBuffering = part ? part.stats.buffering : null;\n\n if (fragBuffering.start === 0) {\n fragBuffering.start = bufferAppendingStart;\n }\n\n if (partBuffering && partBuffering.start === 0) {\n partBuffering.start = bufferAppendingStart;\n } // TODO: Only update timestampOffset when audio/mpeg fragment or part is not contiguous with previously appended\n // Adjusting `SourceBuffer.timestampOffset` (desired point in the timeline where the next frames should be appended)\n // in Chrome browser when we detect MPEG audio container and time delta between level PTS and `SourceBuffer.timestampOffset`\n // is greater than 100ms (this is enough to handle seek for VOD or level change for LIVE videos).\n // More info here: https://github.com/video-dev/hls.js/issues/332#issuecomment-257986486\n\n\n var audioTrack = tracks.audio;\n var checkTimestampOffset = type === 'audio' && chunkMeta.id === 1 && (audioTrack === null || audioTrack === void 0 ? void 0 : audioTrack.container) === 'audio/mpeg';\n var operation = {\n execute: function execute() {\n chunkStats.executeStart = self.performance.now();\n\n if (checkTimestampOffset) {\n var sb = _this5.sourceBuffer[type];\n\n if (sb) {\n var delta = frag.start - sb.timestampOffset;\n\n if (Math.abs(delta) >= 0.1) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: Updating audio SourceBuffer timestampOffset to \" + frag.start + \" (delta: \" + delta + \") sn: \" + frag.sn + \")\");\n sb.timestampOffset = frag.start;\n }\n }\n }\n\n _this5.appendExecutor(data, type);\n },\n onStart: function onStart() {// logger.debug(`[buffer-controller]: ${type} SourceBuffer updatestart`);\n },\n onComplete: function onComplete() {\n // logger.debug(`[buffer-controller]: ${type} SourceBuffer updateend`);\n var end = self.performance.now();\n chunkStats.executeEnd = chunkStats.end = end;\n\n if (fragBuffering.first === 0) {\n fragBuffering.first = end;\n }\n\n if (partBuffering && partBuffering.first === 0) {\n partBuffering.first = end;\n }\n\n var sourceBuffer = _this5.sourceBuffer;\n var timeRanges = {};\n\n for (var _type in sourceBuffer) {\n timeRanges[_type] = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].getBuffered(sourceBuffer[_type]);\n }\n\n _this5.appendError = 0;\n\n _this5.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_APPENDED, {\n type: type,\n frag: frag,\n part: part,\n chunkMeta: chunkMeta,\n parent: frag.type,\n timeRanges: timeRanges\n });\n },\n onError: function onError(err) {\n // in case any error occured while appending, put back segment in segments table\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"[buffer-controller]: Error encountered while trying to append to the \" + type + \" SourceBuffer\", err);\n var event = {\n type: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorTypes\"].MEDIA_ERROR,\n parent: frag.type,\n details: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_APPEND_ERROR,\n err: err,\n fatal: false\n };\n\n if (err.code === DOMException.QUOTA_EXCEEDED_ERR) {\n // QuotaExceededError: http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror\n // let's stop appending any segments, and report BUFFER_FULL_ERROR error\n event.details = _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_FULL_ERROR;\n } else {\n _this5.appendError++;\n event.details = _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_APPEND_ERROR;\n /* with UHD content, we could get loop of quota exceeded error until\n browser is able to evict some data from sourcebuffer. Retrying can help recover.\n */\n\n if (_this5.appendError > hls.config.appendErrorMaxRetry) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"[buffer-controller]: Failed \" + hls.config.appendErrorMaxRetry + \" times to append segment in sourceBuffer\");\n event.fatal = true;\n hls.stopLoad();\n }\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, event);\n }\n };\n operationQueue.append(operation, type);\n };\n\n _proto.onBufferFlushing = function onBufferFlushing(event, data) {\n var _this6 = this;\n\n var operationQueue = this.operationQueue;\n\n var flushOperation = function flushOperation(type) {\n return {\n execute: _this6.removeExecutor.bind(_this6, type, data.startOffset, data.endOffset),\n onStart: function onStart() {// logger.debug(`[buffer-controller]: Started flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);\n },\n onComplete: function onComplete() {\n // logger.debug(`[buffer-controller]: Finished flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);\n _this6.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHED, {\n type: type\n });\n },\n onError: function onError(e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Failed to remove from \" + type + \" SourceBuffer\", e);\n }\n };\n };\n\n if (data.type) {\n operationQueue.append(flushOperation(data.type), data.type);\n } else {\n this.getSourceBufferTypes().forEach(function (type) {\n operationQueue.append(flushOperation(type), type);\n });\n }\n };\n\n _proto.onFragParsed = function onFragParsed(event, data) {\n var _this7 = this;\n\n var frag = data.frag,\n part = data.part;\n var buffersAppendedTo = [];\n var elementaryStreams = part ? part.elementaryStreams : frag.elementaryStreams;\n\n if (elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_6__[\"ElementaryStreamTypes\"].AUDIOVIDEO]) {\n buffersAppendedTo.push('audiovideo');\n } else {\n if (elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_6__[\"ElementaryStreamTypes\"].AUDIO]) {\n buffersAppendedTo.push('audio');\n }\n\n if (elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_6__[\"ElementaryStreamTypes\"].VIDEO]) {\n buffersAppendedTo.push('video');\n }\n }\n\n var onUnblocked = function onUnblocked() {\n var now = self.performance.now();\n frag.stats.buffering.end = now;\n\n if (part) {\n part.stats.buffering.end = now;\n }\n\n var stats = part ? part.stats : frag.stats;\n\n _this7.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_BUFFERED, {\n frag: frag,\n part: part,\n stats: stats,\n id: frag.type\n });\n };\n\n if (buffersAppendedTo.length === 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"Fragments must have at least one ElementaryStreamType set. type: \" + frag.type + \" level: \" + frag.level + \" sn: \" + frag.sn);\n }\n\n this.blockBuffers(onUnblocked, buffersAppendedTo);\n };\n\n _proto.onFragChanged = function onFragChanged(event, data) {\n this.flushBackBuffer();\n } // on BUFFER_EOS mark matching sourcebuffer(s) as ended and trigger checkEos()\n // an undefined data.type will mark all buffers as EOS.\n ;\n\n _proto.onBufferEos = function onBufferEos(event, data) {\n var _this8 = this;\n\n var ended = this.getSourceBufferTypes().reduce(function (acc, type) {\n var sb = _this8.sourceBuffer[type];\n\n if (!data.type || data.type === type) {\n if (sb && !sb.ended) {\n sb.ended = true;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: \" + type + \" sourceBuffer now EOS\");\n }\n }\n\n return acc && !!(!sb || sb.ended);\n }, true);\n\n if (ended) {\n this.blockBuffers(function () {\n var mediaSource = _this8.mediaSource;\n\n if (!mediaSource || mediaSource.readyState !== 'open') {\n return;\n } // Allow this to throw and be caught by the enqueueing function\n\n\n mediaSource.endOfStream();\n });\n }\n };\n\n _proto.onLevelUpdated = function onLevelUpdated(event, _ref) {\n var details = _ref.details;\n\n if (!details.fragments.length) {\n return;\n }\n\n this.details = details;\n\n if (this.getSourceBufferTypes().length) {\n this.blockBuffers(this.updateMediaElementDuration.bind(this));\n } else {\n this.updateMediaElementDuration();\n }\n };\n\n _proto.flushBackBuffer = function flushBackBuffer() {\n var hls = this.hls,\n details = this.details,\n media = this.media,\n sourceBuffer = this.sourceBuffer;\n\n if (!media || details === null) {\n return;\n }\n\n var sourceBufferTypes = this.getSourceBufferTypes();\n\n if (!sourceBufferTypes.length) {\n return;\n } // Support for deprecated liveBackBufferLength\n\n\n var backBufferLength = details.live && hls.config.liveBackBufferLength !== null ? hls.config.liveBackBufferLength : hls.config.backBufferLength;\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(backBufferLength) || backBufferLength < 0) {\n return;\n }\n\n var currentTime = media.currentTime;\n var targetDuration = details.levelTargetDuration;\n var maxBackBufferLength = Math.max(backBufferLength, targetDuration);\n var targetBackBufferPosition = Math.floor(currentTime / targetDuration) * targetDuration - maxBackBufferLength;\n sourceBufferTypes.forEach(function (type) {\n var sb = sourceBuffer[type];\n\n if (sb) {\n var buffered = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].getBuffered(sb); // when target buffer start exceeds actual buffer start\n\n if (buffered.length > 0 && targetBackBufferPosition > buffered.start(0)) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BACK_BUFFER_REACHED, {\n bufferEnd: targetBackBufferPosition\n }); // Support for deprecated event:\n\n if (details.live) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LIVE_BACK_BUFFER_REACHED, {\n bufferEnd: targetBackBufferPosition\n });\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, {\n startOffset: 0,\n endOffset: targetBackBufferPosition,\n type: type\n });\n }\n }\n });\n }\n /**\n * Update Media Source duration to current level duration or override to Infinity if configuration parameter\n * 'liveDurationInfinity` is set to `true`\n * More details: https://github.com/video-dev/hls.js/issues/355\n */\n ;\n\n _proto.updateMediaElementDuration = function updateMediaElementDuration() {\n if (!this.details || !this.media || !this.mediaSource || this.mediaSource.readyState !== 'open') {\n return;\n }\n\n var details = this.details,\n hls = this.hls,\n media = this.media,\n mediaSource = this.mediaSource;\n var levelDuration = details.fragments[0].start + details.totalduration;\n var mediaDuration = media.duration;\n var msDuration = Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(mediaSource.duration) ? mediaSource.duration : 0;\n\n if (details.live && hls.config.liveDurationInfinity) {\n // Override duration to Infinity\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Media Source duration is set to Infinity');\n mediaSource.duration = Infinity;\n this.updateSeekableRange(details);\n } else if (levelDuration > msDuration && levelDuration > mediaDuration || !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(mediaDuration)) {\n // levelDuration was the last value we set.\n // not using mediaSource.duration as the browser may tweak this value\n // only update Media Source duration if its value increase, this is to avoid\n // flushing already buffered portion when switching between quality level\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: Updating Media Source duration to \" + levelDuration.toFixed(3));\n mediaSource.duration = levelDuration;\n }\n };\n\n _proto.updateSeekableRange = function updateSeekableRange(levelDetails) {\n var mediaSource = this.mediaSource;\n var fragments = levelDetails.fragments;\n var len = fragments.length;\n\n if (len && levelDetails.live && mediaSource !== null && mediaSource !== void 0 && mediaSource.setLiveSeekableRange) {\n var start = Math.max(0, fragments[0].start);\n var end = Math.max(start, start + levelDetails.totalduration);\n mediaSource.setLiveSeekableRange(start, end);\n }\n };\n\n _proto.checkPendingTracks = function checkPendingTracks() {\n var bufferCodecEventsExpected = this.bufferCodecEventsExpected,\n operationQueue = this.operationQueue,\n pendingTracks = this.pendingTracks; // Check if we've received all of the expected bufferCodec events. When none remain, create all the sourceBuffers at once.\n // This is important because the MSE spec allows implementations to throw QuotaExceededErrors if creating new sourceBuffers after\n // data has been appended to existing ones.\n // 2 tracks is the max (one for audio, one for video). If we've reach this max go ahead and create the buffers.\n\n var pendingTracksCount = Object.keys(pendingTracks).length;\n\n if (pendingTracksCount && !bufferCodecEventsExpected || pendingTracksCount === 2) {\n // ok, let's create them now !\n this.createSourceBuffers(pendingTracks);\n this.pendingTracks = {}; // append any pending segments now !\n\n var buffers = this.getSourceBufferTypes();\n\n if (buffers.length === 0) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_INCOMPATIBLE_CODECS_ERROR,\n fatal: true,\n reason: 'could not create source buffer for media codec(s)'\n });\n return;\n }\n\n buffers.forEach(function (type) {\n operationQueue.executeNext(type);\n });\n }\n };\n\n _proto.createSourceBuffers = function createSourceBuffers(tracks) {\n var sourceBuffer = this.sourceBuffer,\n mediaSource = this.mediaSource;\n\n if (!mediaSource) {\n throw Error('createSourceBuffers called when mediaSource was null');\n }\n\n var tracksCreated = 0;\n\n for (var trackName in tracks) {\n if (!sourceBuffer[trackName]) {\n var track = tracks[trackName];\n\n if (!track) {\n throw Error(\"source buffer exists for track \" + trackName + \", however track does not\");\n } // use levelCodec as first priority\n\n\n var codec = track.levelCodec || track.codec;\n var mimeType = track.container + \";codecs=\" + codec;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: creating sourceBuffer(\" + mimeType + \")\");\n\n try {\n var sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType);\n var sbName = trackName;\n this.addBufferListener(sbName, 'updatestart', this._onSBUpdateStart);\n this.addBufferListener(sbName, 'updateend', this._onSBUpdateEnd);\n this.addBufferListener(sbName, 'error', this._onSBUpdateError);\n this.tracks[trackName] = {\n buffer: sb,\n codec: codec,\n container: track.container,\n levelCodec: track.levelCodec,\n metadata: track.metadata,\n id: track.id\n };\n tracksCreated++;\n } catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"[buffer-controller]: error while trying to add sourceBuffer: \" + err.message);\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_ADD_CODEC_ERROR,\n fatal: false,\n error: err,\n mimeType: mimeType\n });\n }\n }\n }\n\n if (tracksCreated) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_CREATED, {\n tracks: this.tracks\n });\n }\n } // Keep as arrow functions so that we can directly reference these functions directly as event listeners\n ;\n\n _proto._onSBUpdateStart = function _onSBUpdateStart(type) {\n var operationQueue = this.operationQueue;\n var operation = operationQueue.current(type);\n operation.onStart();\n };\n\n _proto._onSBUpdateEnd = function _onSBUpdateEnd(type) {\n var operationQueue = this.operationQueue;\n var operation = operationQueue.current(type);\n operation.onComplete();\n operationQueue.shiftAndExecuteNext(type);\n };\n\n _proto._onSBUpdateError = function _onSBUpdateError(type, event) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"[buffer-controller]: \" + type + \" SourceBuffer error\", event); // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n // SourceBuffer errors are not necessarily fatal; if so, the HTMLMediaElement will fire an error event\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_3__[\"ErrorDetails\"].BUFFER_APPENDING_ERROR,\n fatal: false\n }); // updateend is always fired after error, so we'll allow that to shift the current operation off of the queue\n\n var operation = this.operationQueue.current(type);\n\n if (operation) {\n operation.onError(event);\n }\n } // This method must result in an updateend event; if remove is not called, _onSBUpdateEnd must be called manually\n ;\n\n _proto.removeExecutor = function removeExecutor(type, startOffset, endOffset) {\n var media = this.media,\n mediaSource = this.mediaSource,\n operationQueue = this.operationQueue,\n sourceBuffer = this.sourceBuffer;\n var sb = sourceBuffer[type];\n\n if (!media || !mediaSource || !sb) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Attempting to remove from the \" + type + \" SourceBuffer, but it does not exist\");\n operationQueue.shiftAndExecuteNext(type);\n return;\n }\n\n var mediaDuration = Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(media.duration) ? media.duration : Infinity;\n var msDuration = Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(mediaSource.duration) ? mediaSource.duration : Infinity;\n var removeStart = Math.max(0, startOffset);\n var removeEnd = Math.min(endOffset, mediaDuration, msDuration);\n\n if (removeEnd > removeStart) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"[buffer-controller]: Removing [\" + removeStart + \",\" + removeEnd + \"] from the \" + type + \" SourceBuffer\");\n console.assert(!sb.updating, type + \" sourceBuffer must not be updating\");\n sb.remove(removeStart, removeEnd);\n } else {\n // Cycle the queue\n operationQueue.shiftAndExecuteNext(type);\n }\n } // This method must result in an updateend event; if append is not called, _onSBUpdateEnd must be called manually\n ;\n\n _proto.appendExecutor = function appendExecutor(data, type) {\n var operationQueue = this.operationQueue,\n sourceBuffer = this.sourceBuffer;\n var sb = sourceBuffer[type];\n\n if (!sb) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"[buffer-controller]: Attempting to append to the \" + type + \" SourceBuffer, but it does not exist\");\n operationQueue.shiftAndExecuteNext(type);\n return;\n }\n\n sb.ended = false;\n console.assert(!sb.updating, type + \" sourceBuffer must not be updating\");\n sb.appendBuffer(data);\n } // Enqueues an operation to each SourceBuffer queue which, upon execution, resolves a promise. When all promises\n // resolve, the onUnblocked function is executed. Functions calling this method do not need to unblock the queue\n // upon completion, since we already do it here\n ;\n\n _proto.blockBuffers = function blockBuffers(onUnblocked, buffers) {\n var _this9 = this;\n\n if (buffers === void 0) {\n buffers = this.getSourceBufferTypes();\n }\n\n if (!buffers.length) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('[buffer-controller]: Blocking operation requested, but no SourceBuffers exist');\n Promise.resolve().then(onUnblocked);\n return;\n }\n\n var operationQueue = this.operationQueue; // logger.debug(`[buffer-controller]: Blocking ${buffers} SourceBuffer`);\n\n var blockingOperations = buffers.map(function (type) {\n return operationQueue.appendBlocker(type);\n });\n Promise.all(blockingOperations).then(function () {\n // logger.debug(`[buffer-controller]: Blocking operation resolved; unblocking ${buffers} SourceBuffer`);\n onUnblocked();\n buffers.forEach(function (type) {\n var sb = _this9.sourceBuffer[type]; // Only cycle the queue if the SB is not updating. There's a bug in Chrome which sets the SB updating flag to\n // true when changing the MediaSource duration (https://bugs.chromium.org/p/chromium/issues/detail?id=959359&can=2&q=mediasource%20duration)\n // While this is a workaround, it's probably useful to have around\n\n if (!sb || !sb.updating) {\n operationQueue.shiftAndExecuteNext(type);\n }\n });\n });\n };\n\n _proto.getSourceBufferTypes = function getSourceBufferTypes() {\n return Object.keys(this.sourceBuffer);\n };\n\n _proto.addBufferListener = function addBufferListener(type, event, fn) {\n var buffer = this.sourceBuffer[type];\n\n if (!buffer) {\n return;\n }\n\n var listener = fn.bind(this, type);\n this.listeners[type].push({\n event: event,\n listener: listener\n });\n buffer.addEventListener(event, listener);\n };\n\n _proto.removeBufferListeners = function removeBufferListeners(type) {\n var buffer = this.sourceBuffer[type];\n\n if (!buffer) {\n return;\n }\n\n this.listeners[type].forEach(function (l) {\n buffer.removeEventListener(l.event, l.listener);\n });\n };\n\n return BufferController;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/buffer-operation-queue.ts\":\n/*!**************************************************!*\\\n !*** ./src/controller/buffer-operation-queue.ts ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BufferOperationQueue; });\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\nvar BufferOperationQueue = /*#__PURE__*/function () {\n function BufferOperationQueue(sourceBufferReference) {\n this.buffers = void 0;\n this.queues = {\n video: [],\n audio: [],\n audiovideo: []\n };\n this.buffers = sourceBufferReference;\n }\n\n var _proto = BufferOperationQueue.prototype;\n\n _proto.append = function append(operation, type) {\n var queue = this.queues[type];\n queue.push(operation);\n\n if (queue.length === 1 && this.buffers[type]) {\n this.executeNext(type);\n }\n };\n\n _proto.insertAbort = function insertAbort(operation, type) {\n var queue = this.queues[type];\n queue.unshift(operation);\n this.executeNext(type);\n };\n\n _proto.appendBlocker = function appendBlocker(type) {\n var execute;\n var promise = new Promise(function (resolve) {\n execute = resolve;\n });\n var operation = {\n execute: execute,\n onStart: function onStart() {},\n onComplete: function onComplete() {},\n onError: function onError() {}\n };\n this.append(operation, type);\n return promise;\n };\n\n _proto.executeNext = function executeNext(type) {\n var buffers = this.buffers,\n queues = this.queues;\n var sb = buffers[type];\n var queue = queues[type];\n\n if (queue.length) {\n var operation = queue[0];\n\n try {\n // Operations are expected to result in an 'updateend' event being fired. If not, the queue will lock. Operations\n // which do not end with this event must call _onSBUpdateEnd manually\n operation.execute();\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].warn('[buffer-operation-queue]: Unhandled exception executing the current operation');\n operation.onError(e); // Only shift the current operation off, otherwise the updateend handler will do this for us\n\n if (!sb || !sb.updating) {\n queue.shift();\n this.executeNext(type);\n }\n }\n }\n };\n\n _proto.shiftAndExecuteNext = function shiftAndExecuteNext(type) {\n this.queues[type].shift();\n this.executeNext(type);\n };\n\n _proto.current = function current(type) {\n return this.queues[type][0];\n };\n\n return BufferOperationQueue;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/cap-level-controller.ts\":\n/*!************************************************!*\\\n !*** ./src/controller/cap-level-controller.ts ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\n * cap stream level to media size dimension controller\n */\n\n\nvar CapLevelController = /*#__PURE__*/function () {\n function CapLevelController(hls) {\n this.autoLevelCapping = void 0;\n this.firstLevel = void 0;\n this.media = void 0;\n this.restrictedLevels = void 0;\n this.timer = void 0;\n this.hls = void 0;\n this.streamController = void 0;\n this.clientRect = void 0;\n this.hls = hls;\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n this.firstLevel = -1;\n this.media = null;\n this.restrictedLevels = [];\n this.timer = undefined;\n this.clientRect = null;\n this.registerListeners();\n }\n\n var _proto = CapLevelController.prototype;\n\n _proto.setStreamController = function setStreamController(streamController) {\n this.streamController = streamController;\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListener();\n\n if (this.hls.config.capLevelToPlayerSize) {\n this.stopCapping();\n }\n\n this.media = null;\n this.clientRect = null; // @ts-ignore\n\n this.hls = this.streamController = null;\n };\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_CODECS, this.onBufferCodecs, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n };\n\n _proto.unregisterListener = function unregisterListener() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_CODECS, this.onBufferCodecs, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n };\n\n _proto.onFpsDropLevelCapping = function onFpsDropLevelCapping(event, data) {\n // Don't add a restricted level more than once\n if (CapLevelController.isLevelAllowed(data.droppedLevel, this.restrictedLevels)) {\n this.restrictedLevels.push(data.droppedLevel);\n }\n };\n\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n this.media = data.media instanceof HTMLVideoElement ? data.media : null;\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n var hls = this.hls;\n this.restrictedLevels = [];\n this.firstLevel = data.firstLevel;\n\n if (hls.config.capLevelToPlayerSize && data.video) {\n // Start capping immediately if the manifest has signaled video codecs\n this.startCapping();\n }\n } // Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted\n // to the first level\n ;\n\n _proto.onBufferCodecs = function onBufferCodecs(event, data) {\n var hls = this.hls;\n\n if (hls.config.capLevelToPlayerSize && data.video) {\n // If the manifest did not signal a video codec capping has been deferred until we're certain video is present\n this.startCapping();\n }\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n this.stopCapping();\n };\n\n _proto.detectPlayerSize = function detectPlayerSize() {\n if (this.media && this.mediaHeight > 0 && this.mediaWidth > 0) {\n var levels = this.hls.levels;\n\n if (levels.length) {\n var hls = this.hls;\n hls.autoLevelCapping = this.getMaxLevel(levels.length - 1);\n\n if (hls.autoLevelCapping > this.autoLevelCapping && this.streamController) {\n // if auto level capping has a higher value for the previous one, flush the buffer using nextLevelSwitch\n // usually happen when the user go to the fullscreen mode.\n this.streamController.nextLevelSwitch();\n }\n\n this.autoLevelCapping = hls.autoLevelCapping;\n }\n }\n }\n /*\n * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled)\n */\n ;\n\n _proto.getMaxLevel = function getMaxLevel(capLevelIndex) {\n var _this = this;\n\n var levels = this.hls.levels;\n\n if (!levels.length) {\n return -1;\n }\n\n var validLevels = levels.filter(function (level, index) {\n return CapLevelController.isLevelAllowed(index, _this.restrictedLevels) && index <= capLevelIndex;\n });\n this.clientRect = null;\n return CapLevelController.getMaxLevelByMediaSize(validLevels, this.mediaWidth, this.mediaHeight);\n };\n\n _proto.startCapping = function startCapping() {\n if (this.timer) {\n // Don't reset capping if started twice; this can happen if the manifest signals a video codec\n return;\n }\n\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n this.hls.firstLevel = this.getMaxLevel(this.firstLevel);\n self.clearInterval(this.timer);\n this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1000);\n this.detectPlayerSize();\n };\n\n _proto.stopCapping = function stopCapping() {\n this.restrictedLevels = [];\n this.firstLevel = -1;\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n\n if (this.timer) {\n self.clearInterval(this.timer);\n this.timer = undefined;\n }\n };\n\n _proto.getDimensions = function getDimensions() {\n if (this.clientRect) {\n return this.clientRect;\n }\n\n var media = this.media;\n var boundsRect = {\n width: 0,\n height: 0\n };\n\n if (media) {\n var clientRect = media.getBoundingClientRect();\n boundsRect.width = clientRect.width;\n boundsRect.height = clientRect.height;\n\n if (!boundsRect.width && !boundsRect.height) {\n // When the media element has no width or height (equivalent to not being in the DOM),\n // then use its width and height attributes (media.width, media.height)\n boundsRect.width = clientRect.right - clientRect.left || media.width || 0;\n boundsRect.height = clientRect.bottom - clientRect.top || media.height || 0;\n }\n }\n\n this.clientRect = boundsRect;\n return boundsRect;\n };\n\n CapLevelController.isLevelAllowed = function isLevelAllowed(level, restrictedLevels) {\n if (restrictedLevels === void 0) {\n restrictedLevels = [];\n }\n\n return restrictedLevels.indexOf(level) === -1;\n };\n\n CapLevelController.getMaxLevelByMediaSize = function getMaxLevelByMediaSize(levels, width, height) {\n if (!levels || !levels.length) {\n return -1;\n } // Levels can have the same dimensions but differing bandwidths - since levels are ordered, we can look to the next\n // to determine whether we've chosen the greatest bandwidth for the media's dimensions\n\n\n var atGreatestBandwidth = function atGreatestBandwidth(curLevel, nextLevel) {\n if (!nextLevel) {\n return true;\n }\n\n return curLevel.width !== nextLevel.width || curLevel.height !== nextLevel.height;\n }; // If we run through the loop without breaking, the media's dimensions are greater than every level, so default to\n // the max level\n\n\n var maxLevelIndex = levels.length - 1;\n\n for (var i = 0; i < levels.length; i += 1) {\n var level = levels[i];\n\n if ((level.width >= width || level.height >= height) && atGreatestBandwidth(level, levels[i + 1])) {\n maxLevelIndex = i;\n break;\n }\n }\n\n return maxLevelIndex;\n };\n\n _createClass(CapLevelController, [{\n key: \"mediaWidth\",\n get: function get() {\n return this.getDimensions().width * this.contentScaleFactor;\n }\n }, {\n key: \"mediaHeight\",\n get: function get() {\n return this.getDimensions().height * this.contentScaleFactor;\n }\n }, {\n key: \"contentScaleFactor\",\n get: function get() {\n var pixelRatio = 1;\n\n if (!this.hls.config.ignoreDevicePixelRatio) {\n try {\n pixelRatio = self.devicePixelRatio;\n } catch (e) {\n /* no-op */\n }\n }\n\n return pixelRatio;\n }\n }]);\n\n return CapLevelController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (CapLevelController);\n\n/***/ }),\n\n/***/ \"./src/controller/cmcd-controller.ts\":\n/*!*******************************************!*\\\n !*** ./src/controller/cmcd-controller.ts ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CMCDController; });\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _types_cmcd__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../types/cmcd */ \"./src/types/cmcd.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\n/**\n * Controller to deal with Common Media Client Data (CMCD)\n * @see https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf\n */\n\nvar CMCDController = /*#__PURE__*/function () {\n // eslint-disable-line no-restricted-globals\n // eslint-disable-line no-restricted-globals\n function CMCDController(hls) {\n var _this = this;\n\n this.hls = void 0;\n this.config = void 0;\n this.media = void 0;\n this.sid = void 0;\n this.cid = void 0;\n this.useHeaders = false;\n this.initialized = false;\n this.starved = false;\n this.buffering = true;\n this.audioBuffer = void 0;\n this.videoBuffer = void 0;\n\n this.onWaiting = function () {\n if (_this.initialized) {\n _this.starved = true;\n }\n\n _this.buffering = true;\n };\n\n this.onPlaying = function () {\n if (!_this.initialized) {\n _this.initialized = true;\n }\n\n _this.buffering = false;\n };\n\n this.applyPlaylistData = function (context) {\n try {\n _this.apply(context, {\n ot: _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].MANIFEST,\n su: !_this.initialized\n });\n } catch (error) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('Could not generate manifest CMCD data.', error);\n }\n };\n\n this.applyFragmentData = function (context) {\n try {\n var fragment = context.frag;\n var level = _this.hls.levels[fragment.level];\n\n var ot = _this.getObjectType(fragment);\n\n var data = {\n d: fragment.duration * 1000,\n ot: ot\n };\n\n if (ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].VIDEO || ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].AUDIO || ot == _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].MUXED) {\n data.br = level.bitrate / 1000;\n data.tb = _this.getTopBandwidth(ot) / 1000;\n data.bl = _this.getBufferLength(ot);\n }\n\n _this.apply(context, data);\n } catch (error) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('Could not generate segment CMCD data.', error);\n }\n };\n\n this.hls = hls;\n var config = this.config = hls.config;\n var cmcd = config.cmcd;\n\n if (cmcd != null) {\n config.pLoader = this.createPlaylistLoader();\n config.fLoader = this.createFragmentLoader();\n this.sid = cmcd.sessionId || CMCDController.uuid();\n this.cid = cmcd.contentId;\n this.useHeaders = cmcd.useHeaders === true;\n this.registerListeners();\n }\n }\n\n var _proto = CMCDController.prototype;\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHED, this.onMediaDetached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHED, this.onMediaDetached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n this.onMediaDetached();\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners(); // @ts-ignore\n\n this.hls = this.config = this.audioBuffer = this.videoBuffer = null;\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n this.media.addEventListener('waiting', this.onWaiting);\n this.media.addEventListener('playing', this.onPlaying);\n };\n\n _proto.onMediaDetached = function onMediaDetached() {\n if (!this.media) {\n return;\n }\n\n this.media.removeEventListener('waiting', this.onWaiting);\n this.media.removeEventListener('playing', this.onPlaying); // @ts-ignore\n\n this.media = null;\n };\n\n _proto.onBufferCreated = function onBufferCreated(event, data) {\n var _data$tracks$audio, _data$tracks$video;\n\n this.audioBuffer = (_data$tracks$audio = data.tracks.audio) === null || _data$tracks$audio === void 0 ? void 0 : _data$tracks$audio.buffer;\n this.videoBuffer = (_data$tracks$video = data.tracks.video) === null || _data$tracks$video === void 0 ? void 0 : _data$tracks$video.buffer;\n };\n\n /**\n * Create baseline CMCD data\n */\n _proto.createData = function createData() {\n var _this$media;\n\n return {\n v: _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDVersion\"],\n sf: _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDStreamingFormat\"].HLS,\n sid: this.sid,\n cid: this.cid,\n pr: (_this$media = this.media) === null || _this$media === void 0 ? void 0 : _this$media.playbackRate,\n mtp: this.hls.bandwidthEstimate / 1000\n };\n }\n /**\n * Apply CMCD data to a request.\n */\n ;\n\n _proto.apply = function apply(context, data) {\n if (data === void 0) {\n data = {};\n }\n\n // apply baseline data\n _extends(data, this.createData());\n\n var isVideo = data.ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].INIT || data.ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].VIDEO || data.ot === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].MUXED;\n\n if (this.starved && isVideo) {\n data.bs = true;\n data.su = true;\n this.starved = false;\n }\n\n if (data.su == null) {\n data.su = this.buffering;\n } // TODO: Implement rtp, nrr, nor, dl\n\n\n if (this.useHeaders) {\n var headers = CMCDController.toHeaders(data);\n\n if (!Object.keys(headers).length) {\n return;\n }\n\n if (!context.headers) {\n context.headers = {};\n }\n\n _extends(context.headers, headers);\n } else {\n var query = CMCDController.toQuery(data);\n\n if (!query) {\n return;\n }\n\n context.url = CMCDController.appendQueryToUri(context.url, query);\n }\n }\n /**\n * Apply CMCD data to a manifest request.\n */\n ;\n\n /**\n * The CMCD object type.\n */\n _proto.getObjectType = function getObjectType(fragment) {\n var type = fragment.type;\n\n if (type === 'subtitle') {\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].TIMED_TEXT;\n }\n\n if (fragment.sn === 'initSegment') {\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].INIT;\n }\n\n if (type === 'audio') {\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].AUDIO;\n }\n\n if (type === 'main') {\n if (!this.hls.audioTracks.length) {\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].MUXED;\n }\n\n return _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].VIDEO;\n }\n\n return undefined;\n }\n /**\n * Get the highest bitrate.\n */\n ;\n\n _proto.getTopBandwidth = function getTopBandwidth(type) {\n var bitrate = 0;\n var levels;\n var hls = this.hls;\n\n if (type === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].AUDIO) {\n levels = hls.audioTracks;\n } else {\n var max = hls.maxAutoLevel;\n var len = max > -1 ? max + 1 : hls.levels.length;\n levels = hls.levels.slice(0, len);\n }\n\n for (var _iterator = _createForOfIteratorHelperLoose(levels), _step; !(_step = _iterator()).done;) {\n var level = _step.value;\n\n if (level.bitrate > bitrate) {\n bitrate = level.bitrate;\n }\n }\n\n return bitrate > 0 ? bitrate : NaN;\n }\n /**\n * Get the buffer length for a media type in milliseconds\n */\n ;\n\n _proto.getBufferLength = function getBufferLength(type) {\n var media = this.hls.media;\n var buffer = type === _types_cmcd__WEBPACK_IMPORTED_MODULE_1__[\"CMCDObjectType\"].AUDIO ? this.audioBuffer : this.videoBuffer;\n\n if (!buffer || !media) {\n return NaN;\n }\n\n var info = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_2__[\"BufferHelper\"].bufferInfo(buffer, media.currentTime, this.config.maxBufferHole);\n return info.len * 1000;\n }\n /**\n * Create a playlist loader\n */\n ;\n\n _proto.createPlaylistLoader = function createPlaylistLoader() {\n var pLoader = this.config.pLoader;\n var apply = this.applyPlaylistData;\n var Ctor = pLoader || this.config.loader;\n return /*#__PURE__*/function () {\n function CmcdPlaylistLoader(config) {\n this.loader = void 0;\n this.loader = new Ctor(config);\n }\n\n var _proto2 = CmcdPlaylistLoader.prototype;\n\n _proto2.destroy = function destroy() {\n this.loader.destroy();\n };\n\n _proto2.abort = function abort() {\n this.loader.abort();\n };\n\n _proto2.load = function load(context, config, callbacks) {\n apply(context);\n this.loader.load(context, config, callbacks);\n };\n\n _createClass(CmcdPlaylistLoader, [{\n key: \"stats\",\n get: function get() {\n return this.loader.stats;\n }\n }, {\n key: \"context\",\n get: function get() {\n return this.loader.context;\n }\n }]);\n\n return CmcdPlaylistLoader;\n }();\n }\n /**\n * Create a playlist loader\n */\n ;\n\n _proto.createFragmentLoader = function createFragmentLoader() {\n var fLoader = this.config.fLoader;\n var apply = this.applyFragmentData;\n var Ctor = fLoader || this.config.loader;\n return /*#__PURE__*/function () {\n function CmcdFragmentLoader(config) {\n this.loader = void 0;\n this.loader = new Ctor(config);\n }\n\n var _proto3 = CmcdFragmentLoader.prototype;\n\n _proto3.destroy = function destroy() {\n this.loader.destroy();\n };\n\n _proto3.abort = function abort() {\n this.loader.abort();\n };\n\n _proto3.load = function load(context, config, callbacks) {\n apply(context);\n this.loader.load(context, config, callbacks);\n };\n\n _createClass(CmcdFragmentLoader, [{\n key: \"stats\",\n get: function get() {\n return this.loader.stats;\n }\n }, {\n key: \"context\",\n get: function get() {\n return this.loader.context;\n }\n }]);\n\n return CmcdFragmentLoader;\n }();\n }\n /**\n * Generate a random v4 UUI\n *\n * @returns {string}\n */\n ;\n\n CMCDController.uuid = function uuid() {\n var url = URL.createObjectURL(new Blob());\n var uuid = url.toString();\n URL.revokeObjectURL(url);\n return uuid.slice(uuid.lastIndexOf('/') + 1);\n }\n /**\n * Serialize a CMCD data object according to the rules defined in the\n * section 3.2 of\n * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).\n */\n ;\n\n CMCDController.serialize = function serialize(data) {\n var results = [];\n\n var isValid = function isValid(value) {\n return !Number.isNaN(value) && value != null && value !== '' && value !== false;\n };\n\n var toRounded = function toRounded(value) {\n return Math.round(value);\n };\n\n var toHundred = function toHundred(value) {\n return toRounded(value / 100) * 100;\n };\n\n var toUrlSafe = function toUrlSafe(value) {\n return encodeURIComponent(value);\n };\n\n var formatters = {\n br: toRounded,\n d: toRounded,\n bl: toHundred,\n dl: toHundred,\n mtp: toHundred,\n nor: toUrlSafe,\n rtp: toHundred,\n tb: toRounded\n };\n var keys = Object.keys(data || {}).sort();\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(keys), _step2; !(_step2 = _iterator2()).done;) {\n var key = _step2.value;\n var value = data[key]; // ignore invalid values\n\n if (!isValid(value)) {\n continue;\n } // Version should only be reported if not equal to 1.\n\n\n if (key === 'v' && value === 1) {\n continue;\n } // Playback rate should only be sent if not equal to 1.\n\n\n if (key == 'pr' && value === 1) {\n continue;\n } // Certain values require special formatting\n\n\n var formatter = formatters[key];\n\n if (formatter) {\n value = formatter(value);\n } // Serialize the key/value pair\n\n\n var type = typeof value;\n var result = void 0;\n\n if (key === 'ot' || key === 'sf' || key === 'st') {\n result = key + \"=\" + value;\n } else if (type === 'boolean') {\n result = key;\n } else if (type === 'number') {\n result = key + \"=\" + value;\n } else {\n result = key + \"=\" + JSON.stringify(value);\n }\n\n results.push(result);\n }\n\n return results.join(',');\n }\n /**\n * Convert a CMCD data object to request headers according to the rules\n * defined in the section 2.1 and 3.2 of\n * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).\n */\n ;\n\n CMCDController.toHeaders = function toHeaders(data) {\n var keys = Object.keys(data);\n var headers = {};\n var headerNames = ['Object', 'Request', 'Session', 'Status'];\n var headerGroups = [{}, {}, {}, {}];\n var headerMap = {\n br: 0,\n d: 0,\n ot: 0,\n tb: 0,\n bl: 1,\n dl: 1,\n mtp: 1,\n nor: 1,\n nrr: 1,\n su: 1,\n cid: 2,\n pr: 2,\n sf: 2,\n sid: 2,\n st: 2,\n v: 2,\n bs: 3,\n rtp: 3\n };\n\n for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {\n var key = _keys[_i];\n // Unmapped fields are mapped to the Request header\n var index = headerMap[key] != null ? headerMap[key] : 1;\n headerGroups[index][key] = data[key];\n }\n\n for (var i = 0; i < headerGroups.length; i++) {\n var value = CMCDController.serialize(headerGroups[i]);\n\n if (value) {\n headers[\"CMCD-\" + headerNames[i]] = value;\n }\n }\n\n return headers;\n }\n /**\n * Convert a CMCD data object to query args according to the rules\n * defined in the section 2.2 and 3.2 of\n * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).\n */\n ;\n\n CMCDController.toQuery = function toQuery(data) {\n return \"CMCD=\" + encodeURIComponent(CMCDController.serialize(data));\n }\n /**\n * Append query args to a uri.\n */\n ;\n\n CMCDController.appendQueryToUri = function appendQueryToUri(uri, query) {\n if (!query) {\n return uri;\n }\n\n var separator = uri.includes('?') ? '&' : '?';\n return \"\" + uri + separator + query;\n };\n\n return CMCDController;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/eme-controller.ts\":\n/*!******************************************!*\\\n !*** ./src/controller/eme-controller.ts ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/mediakeys-helper */ \"./src/utils/mediakeys-helper.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/**\n * @author Stephan Hesse <disparat@gmail.com> | <tchakabam@gmail.com>\n *\n * DRM support for Hls.js\n */\n\n\n\n\nvar MAX_LICENSE_REQUEST_FAILURES = 3;\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemConfiguration\n * @param {Array<string>} audioCodecs List of required audio codecs to support\n * @param {Array<string>} videoCodecs List of required video codecs to support\n * @param {object} drmSystemOptions Optional parameters/requirements for the key-system\n * @returns {Array<MediaSystemConfiguration>} An array of supported configurations\n */\n\nvar createWidevineMediaKeySystemConfigurations = function createWidevineMediaKeySystemConfigurations(audioCodecs, videoCodecs, drmSystemOptions) {\n /* jshint ignore:line */\n var baseConfig = {\n // initDataTypes: ['keyids', 'mp4'],\n // label: \"\",\n // persistentState: \"not-allowed\", // or \"required\" ?\n // distinctiveIdentifier: \"not-allowed\", // or \"required\" ?\n // sessionTypes: ['temporary'],\n audioCapabilities: [],\n // { contentType: 'audio/mp4; codecs=\"mp4a.40.2\"' }\n videoCapabilities: [] // { contentType: 'video/mp4; codecs=\"avc1.42E01E\"' }\n\n };\n audioCodecs.forEach(function (codec) {\n baseConfig.audioCapabilities.push({\n contentType: \"audio/mp4; codecs=\\\"\" + codec + \"\\\"\",\n robustness: drmSystemOptions.audioRobustness || ''\n });\n });\n videoCodecs.forEach(function (codec) {\n baseConfig.videoCapabilities.push({\n contentType: \"video/mp4; codecs=\\\"\" + codec + \"\\\"\",\n robustness: drmSystemOptions.videoRobustness || ''\n });\n });\n return [baseConfig];\n};\n/**\n * The idea here is to handle key-system (and their respective platforms) specific configuration differences\n * in order to work with the local requestMediaKeySystemAccess method.\n *\n * We can also rule-out platform-related key-system support at this point by throwing an error.\n *\n * @param {string} keySystem Identifier for the key-system, see `KeySystems` enum\n * @param {Array<string>} audioCodecs List of required audio codecs to support\n * @param {Array<string>} videoCodecs List of required video codecs to support\n * @throws will throw an error if a unknown key system is passed\n * @returns {Array<MediaSystemConfiguration>} A non-empty Array of MediaKeySystemConfiguration objects\n */\n\n\nvar getSupportedMediaKeySystemConfigurations = function getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, drmSystemOptions) {\n switch (keySystem) {\n case _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__[\"KeySystems\"].WIDEVINE:\n return createWidevineMediaKeySystemConfigurations(audioCodecs, videoCodecs, drmSystemOptions);\n\n default:\n throw new Error(\"Unknown key-system: \" + keySystem);\n }\n};\n\n/**\n * Controller to deal with encrypted media extensions (EME)\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API\n *\n * @class\n * @constructor\n */\nvar EMEController = /*#__PURE__*/function () {\n /**\n * @constructs\n * @param {Hls} hls Our Hls.js instance\n */\n function EMEController(hls) {\n this.hls = void 0;\n this._widevineLicenseUrl = void 0;\n this._licenseXhrSetup = void 0;\n this._licenseResponseCallback = void 0;\n this._emeEnabled = void 0;\n this._requestMediaKeySystemAccess = void 0;\n this._drmSystemOptions = void 0;\n this._config = void 0;\n this._mediaKeysList = [];\n this._media = null;\n this._hasSetMediaKeys = false;\n this._requestLicenseFailureCount = 0;\n this.mediaKeysPromise = null;\n this._onMediaEncrypted = this.onMediaEncrypted.bind(this);\n this.hls = hls;\n this._config = hls.config;\n this._widevineLicenseUrl = this._config.widevineLicenseUrl;\n this._licenseXhrSetup = this._config.licenseXhrSetup;\n this._licenseResponseCallback = this._config.licenseResponseCallback;\n this._emeEnabled = this._config.emeEnabled;\n this._requestMediaKeySystemAccess = this._config.requestMediaKeySystemAccessFunc;\n this._drmSystemOptions = this._config.drmSystemOptions;\n\n this._registerListeners();\n }\n\n var _proto = EMEController.prototype;\n\n _proto.destroy = function destroy() {\n this._unregisterListeners(); // @ts-ignore\n\n\n this.hls = this._onMediaEncrypted = null;\n this._requestMediaKeySystemAccess = null;\n };\n\n _proto._registerListeners = function _registerListeners() {\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHED, this.onMediaDetached, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHED, this.onMediaDetached, this);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n }\n /**\n * @param {string} keySystem Identifier for the key-system, see `KeySystems` enum\n * @returns {string} License server URL for key-system (if any configured, otherwise causes error)\n * @throws if a unsupported keysystem is passed\n */\n ;\n\n _proto.getLicenseServerUrl = function getLicenseServerUrl(keySystem) {\n switch (keySystem) {\n case _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__[\"KeySystems\"].WIDEVINE:\n if (!this._widevineLicenseUrl) {\n break;\n }\n\n return this._widevineLicenseUrl;\n }\n\n throw new Error(\"no license server URL configured for key-system \\\"\" + keySystem + \"\\\"\");\n }\n /**\n * Requests access object and adds it to our list upon success\n * @private\n * @param {string} keySystem System ID (see `KeySystems`)\n * @param {Array<string>} audioCodecs List of required audio codecs to support\n * @param {Array<string>} videoCodecs List of required video codecs to support\n * @throws When a unsupported KeySystem is passed\n */\n ;\n\n _proto._attemptKeySystemAccess = function _attemptKeySystemAccess(keySystem, audioCodecs, videoCodecs) {\n var _this = this;\n\n // This can throw, but is caught in event handler callpath\n var mediaKeySystemConfigs = getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, this._drmSystemOptions);\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('Requesting encrypted media key-system access'); // expecting interface like window.navigator.requestMediaKeySystemAccess\n\n var keySystemAccessPromise = this.requestMediaKeySystemAccess(keySystem, mediaKeySystemConfigs);\n this.mediaKeysPromise = keySystemAccessPromise.then(function (mediaKeySystemAccess) {\n return _this._onMediaKeySystemAccessObtained(keySystem, mediaKeySystemAccess);\n });\n keySystemAccessPromise.catch(function (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"Failed to obtain key-system \\\"\" + keySystem + \"\\\" access:\", err);\n });\n };\n\n /**\n * Handles obtaining access to a key-system\n * @private\n * @param {string} keySystem\n * @param {MediaKeySystemAccess} mediaKeySystemAccess https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess\n */\n _proto._onMediaKeySystemAccessObtained = function _onMediaKeySystemAccessObtained(keySystem, mediaKeySystemAccess) {\n var _this2 = this;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Access for key-system \\\"\" + keySystem + \"\\\" obtained\");\n var mediaKeysListItem = {\n mediaKeysSessionInitialized: false,\n mediaKeySystemAccess: mediaKeySystemAccess,\n mediaKeySystemDomain: keySystem\n };\n\n this._mediaKeysList.push(mediaKeysListItem);\n\n var mediaKeysPromise = Promise.resolve().then(function () {\n return mediaKeySystemAccess.createMediaKeys();\n }).then(function (mediaKeys) {\n mediaKeysListItem.mediaKeys = mediaKeys;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Media-keys created for key-system \\\"\" + keySystem + \"\\\"\");\n\n _this2._onMediaKeysCreated();\n\n return mediaKeys;\n });\n mediaKeysPromise.catch(function (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Failed to create media-keys:', err);\n });\n return mediaKeysPromise;\n }\n /**\n * Handles key-creation (represents access to CDM). We are going to create key-sessions upon this\n * for all existing keys where no session exists yet.\n *\n * @private\n */\n ;\n\n _proto._onMediaKeysCreated = function _onMediaKeysCreated() {\n var _this3 = this;\n\n // check for all key-list items if a session exists, otherwise, create one\n this._mediaKeysList.forEach(function (mediaKeysListItem) {\n if (!mediaKeysListItem.mediaKeysSession) {\n // mediaKeys is definitely initialized here\n mediaKeysListItem.mediaKeysSession = mediaKeysListItem.mediaKeys.createSession();\n\n _this3._onNewMediaKeySession(mediaKeysListItem.mediaKeysSession);\n }\n });\n }\n /**\n * @private\n * @param {*} keySession\n */\n ;\n\n _proto._onNewMediaKeySession = function _onNewMediaKeySession(keySession) {\n var _this4 = this;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"New key-system session \" + keySession.sessionId);\n keySession.addEventListener('message', function (event) {\n _this4._onKeySessionMessage(keySession, event.message);\n }, false);\n }\n /**\n * @private\n * @param {MediaKeySession} keySession\n * @param {ArrayBuffer} message\n */\n ;\n\n _proto._onKeySessionMessage = function _onKeySessionMessage(keySession, message) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('Got EME message event, creating license request');\n\n this._requestLicense(message, function (data) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Received license data (length: \" + (data ? data.byteLength : data) + \"), updating key-session\");\n keySession.update(data).catch(function (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"Updating key-session failed: \" + err);\n });\n });\n }\n /**\n * @private\n * @param e {MediaEncryptedEvent}\n */\n ;\n\n _proto.onMediaEncrypted = function onMediaEncrypted(e) {\n var _this5 = this;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Media is encrypted using \\\"\" + e.initDataType + \"\\\" init data type\");\n\n if (!this.mediaKeysPromise) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal: Media is encrypted but no CDM access or no keys have been requested');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_KEYS,\n fatal: true\n });\n return;\n }\n\n var finallySetKeyAndStartSession = function finallySetKeyAndStartSession(mediaKeys) {\n if (!_this5._media) {\n return;\n }\n\n _this5._attemptSetMediaKeys(mediaKeys);\n\n _this5._generateRequestWithPreferredKeySession(e.initDataType, e.initData);\n }; // Could use `Promise.finally` but some Promise polyfills are missing it\n\n\n this.mediaKeysPromise.then(finallySetKeyAndStartSession).catch(finallySetKeyAndStartSession);\n }\n /**\n * @private\n */\n ;\n\n _proto._attemptSetMediaKeys = function _attemptSetMediaKeys(mediaKeys) {\n if (!this._media) {\n throw new Error('Attempted to set mediaKeys without first attaching a media element');\n }\n\n if (!this._hasSetMediaKeys) {\n // FIXME: see if we can/want/need-to really to deal with several potential key-sessions?\n var keysListItem = this._mediaKeysList[0];\n\n if (!keysListItem || !keysListItem.mediaKeys) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal: Media is encrypted but no CDM access or no keys have been obtained yet');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_KEYS,\n fatal: true\n });\n return;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('Setting keys for encrypted media');\n\n this._media.setMediaKeys(keysListItem.mediaKeys);\n\n this._hasSetMediaKeys = true;\n }\n }\n /**\n * @private\n */\n ;\n\n _proto._generateRequestWithPreferredKeySession = function _generateRequestWithPreferredKeySession(initDataType, initData) {\n var _this6 = this;\n\n // FIXME: see if we can/want/need-to really to deal with several potential key-sessions?\n var keysListItem = this._mediaKeysList[0];\n\n if (!keysListItem) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal: Media is encrypted but not any key-system access has been obtained yet');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_ACCESS,\n fatal: true\n });\n return;\n }\n\n if (keysListItem.mediaKeysSessionInitialized) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('Key-Session already initialized but requested again');\n return;\n }\n\n var keySession = keysListItem.mediaKeysSession;\n\n if (!keySession) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal: Media is encrypted but no key-session existing');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_SESSION,\n fatal: true\n });\n return;\n } // initData is null if the media is not CORS-same-origin\n\n\n if (!initData) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('Fatal: initData required for generating a key session is null');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_INIT_DATA,\n fatal: true\n });\n return;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Generating key-session request for \\\"\" + initDataType + \"\\\" init data type\");\n keysListItem.mediaKeysSessionInitialized = true;\n keySession.generateRequest(initDataType, initData).then(function () {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].debug('Key-session generation succeeded');\n }).catch(function (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Error generating key-session request:', err);\n\n _this6.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_SESSION,\n fatal: false\n });\n });\n }\n /**\n * @private\n * @param {string} url License server URL\n * @param {ArrayBuffer} keyMessage Message data issued by key-system\n * @param {function} callback Called when XHR has succeeded\n * @returns {XMLHttpRequest} Unsent (but opened state) XHR object\n * @throws if XMLHttpRequest construction failed\n */\n ;\n\n _proto._createLicenseXhr = function _createLicenseXhr(url, keyMessage, callback) {\n var xhr = new XMLHttpRequest();\n xhr.responseType = 'arraybuffer';\n xhr.onreadystatechange = this._onLicenseRequestReadyStageChange.bind(this, xhr, url, keyMessage, callback);\n var licenseXhrSetup = this._licenseXhrSetup;\n\n if (licenseXhrSetup) {\n try {\n licenseXhrSetup.call(this.hls, xhr, url);\n licenseXhrSetup = undefined;\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(e);\n }\n }\n\n try {\n // if licenseXhrSetup did not yet call open, let's do it now\n if (!xhr.readyState) {\n xhr.open('POST', url, true);\n }\n\n if (licenseXhrSetup) {\n licenseXhrSetup.call(this.hls, xhr, url);\n }\n } catch (e) {\n // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS\n throw new Error(\"issue setting up KeySystem license XHR \" + e);\n }\n\n return xhr;\n }\n /**\n * @private\n * @param {XMLHttpRequest} xhr\n * @param {string} url License server URL\n * @param {ArrayBuffer} keyMessage Message data issued by key-system\n * @param {function} callback Called when XHR has succeeded\n */\n ;\n\n _proto._onLicenseRequestReadyStageChange = function _onLicenseRequestReadyStageChange(xhr, url, keyMessage, callback) {\n switch (xhr.readyState) {\n case 4:\n if (xhr.status === 200) {\n this._requestLicenseFailureCount = 0;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('License request succeeded');\n var _data = xhr.response;\n var licenseResponseCallback = this._licenseResponseCallback;\n\n if (licenseResponseCallback) {\n try {\n _data = licenseResponseCallback.call(this.hls, xhr, url);\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(e);\n }\n }\n\n callback(_data);\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"License Request XHR failed (\" + url + \"). Status: \" + xhr.status + \" (\" + xhr.statusText + \")\");\n this._requestLicenseFailureCount++;\n\n if (this._requestLicenseFailureCount > MAX_LICENSE_REQUEST_FAILURES) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n fatal: true\n });\n return;\n }\n\n var attemptsLeft = MAX_LICENSE_REQUEST_FAILURES - this._requestLicenseFailureCount + 1;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"Retrying license request, \" + attemptsLeft + \" attempts left\");\n\n this._requestLicense(keyMessage, callback);\n }\n\n break;\n }\n }\n /**\n * @private\n * @param {MediaKeysListItem} keysListItem\n * @param {ArrayBuffer} keyMessage\n * @returns {ArrayBuffer} Challenge data posted to license server\n * @throws if KeySystem is unsupported\n */\n ;\n\n _proto._generateLicenseRequestChallenge = function _generateLicenseRequestChallenge(keysListItem, keyMessage) {\n switch (keysListItem.mediaKeySystemDomain) {\n // case KeySystems.PLAYREADY:\n // from https://github.com/MicrosoftEdge/Demos/blob/master/eme/scripts/demo.js\n\n /*\n if (this.licenseType !== this.LICENSE_TYPE_WIDEVINE) {\n // For PlayReady CDMs, we need to dig the Challenge out of the XML.\n var keyMessageXml = new DOMParser().parseFromString(String.fromCharCode.apply(null, new Uint16Array(keyMessage)), 'application/xml');\n if (keyMessageXml.getElementsByTagName('Challenge')[0]) {\n challenge = atob(keyMessageXml.getElementsByTagName('Challenge')[0].childNodes[0].nodeValue);\n } else {\n throw 'Cannot find <Challenge> in key message';\n }\n var headerNames = keyMessageXml.getElementsByTagName('name');\n var headerValues = keyMessageXml.getElementsByTagName('value');\n if (headerNames.length !== headerValues.length) {\n throw 'Mismatched header <name>/<value> pair in key message';\n }\n for (var i = 0; i < headerNames.length; i++) {\n xhr.setRequestHeader(headerNames[i].childNodes[0].nodeValue, headerValues[i].childNodes[0].nodeValue);\n }\n }\n break;\n */\n case _utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__[\"KeySystems\"].WIDEVINE:\n // For Widevine CDMs, the challenge is the keyMessage.\n return keyMessage;\n }\n\n throw new Error(\"unsupported key-system: \" + keysListItem.mediaKeySystemDomain);\n }\n /**\n * @private\n * @param keyMessage\n * @param callback\n */\n ;\n\n _proto._requestLicense = function _requestLicense(keyMessage, callback) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('Requesting content license for key-system');\n var keysListItem = this._mediaKeysList[0];\n\n if (!keysListItem) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('Fatal error: Media is encrypted but no key-system access has been obtained yet');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_NO_ACCESS,\n fatal: true\n });\n return;\n }\n\n try {\n var _url = this.getLicenseServerUrl(keysListItem.mediaKeySystemDomain);\n\n var _xhr = this._createLicenseXhr(_url, keyMessage, callback);\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log(\"Sending license request to URL: \" + _url);\n\n var challenge = this._generateLicenseRequestChallenge(keysListItem, keyMessage);\n\n _xhr.send(challenge);\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error(\"Failure requesting DRM license: \" + e);\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].KEY_SYSTEM_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n fatal: true\n });\n }\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n if (!this._emeEnabled) {\n return;\n }\n\n var media = data.media; // keep reference of media\n\n this._media = media;\n media.addEventListener('encrypted', this._onMediaEncrypted);\n };\n\n _proto.onMediaDetached = function onMediaDetached() {\n var media = this._media;\n var mediaKeysList = this._mediaKeysList;\n\n if (!media) {\n return;\n }\n\n media.removeEventListener('encrypted', this._onMediaEncrypted);\n this._media = null;\n this._mediaKeysList = []; // Close all sessions and remove media keys from the video element.\n\n Promise.all(mediaKeysList.map(function (mediaKeysListItem) {\n if (mediaKeysListItem.mediaKeysSession) {\n return mediaKeysListItem.mediaKeysSession.close().catch(function () {// Ignore errors when closing the sessions. Closing a session that\n // generated no key requests will throw an error.\n });\n }\n })).then(function () {\n return media.setMediaKeys(null);\n }).catch(function () {// Ignore any failures while removing media keys from the video element.\n });\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n if (!this._emeEnabled) {\n return;\n }\n\n var audioCodecs = data.levels.map(function (level) {\n return level.audioCodec;\n }).filter(function (audioCodec) {\n return !!audioCodec;\n });\n var videoCodecs = data.levels.map(function (level) {\n return level.videoCodec;\n }).filter(function (videoCodec) {\n return !!videoCodec;\n });\n\n this._attemptKeySystemAccess(_utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__[\"KeySystems\"].WIDEVINE, audioCodecs, videoCodecs);\n };\n\n _createClass(EMEController, [{\n key: \"requestMediaKeySystemAccess\",\n get: function get() {\n if (!this._requestMediaKeySystemAccess) {\n throw new Error('No requestMediaKeySystemAccess function configured');\n }\n\n return this._requestMediaKeySystemAccess;\n }\n }]);\n\n return EMEController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EMEController);\n\n/***/ }),\n\n/***/ \"./src/controller/fps-controller.ts\":\n/*!******************************************!*\\\n !*** ./src/controller/fps-controller.ts ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\nvar FPSController = /*#__PURE__*/function () {\n // stream controller must be provided as a dependency!\n function FPSController(hls) {\n this.hls = void 0;\n this.isVideoPlaybackQualityAvailable = false;\n this.timer = void 0;\n this.media = null;\n this.lastTime = void 0;\n this.lastDroppedFrames = 0;\n this.lastDecodedFrames = 0;\n this.streamController = void 0;\n this.hls = hls;\n this.registerListeners();\n }\n\n var _proto = FPSController.prototype;\n\n _proto.setStreamController = function setStreamController(streamController) {\n this.streamController = streamController;\n };\n\n _proto.registerListeners = function registerListeners() {\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching);\n };\n\n _proto.destroy = function destroy() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n\n this.unregisterListeners();\n this.isVideoPlaybackQualityAvailable = false;\n this.media = null;\n };\n\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n var config = this.hls.config;\n\n if (config.capLevelOnFPSDrop) {\n var media = data.media instanceof self.HTMLVideoElement ? data.media : null;\n this.media = media;\n\n if (media && typeof media.getVideoPlaybackQuality === 'function') {\n this.isVideoPlaybackQualityAvailable = true;\n }\n\n self.clearInterval(this.timer);\n this.timer = self.setInterval(this.checkFPSInterval.bind(this), config.fpsDroppedMonitoringPeriod);\n }\n };\n\n _proto.checkFPS = function checkFPS(video, decodedFrames, droppedFrames) {\n var currentTime = performance.now();\n\n if (decodedFrames) {\n if (this.lastTime) {\n var currentPeriod = currentTime - this.lastTime;\n var currentDropped = droppedFrames - this.lastDroppedFrames;\n var currentDecoded = decodedFrames - this.lastDecodedFrames;\n var droppedFPS = 1000 * currentDropped / currentPeriod;\n var hls = this.hls;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FPS_DROP, {\n currentDropped: currentDropped,\n currentDecoded: currentDecoded,\n totalDroppedFrames: droppedFrames\n });\n\n if (droppedFPS > 0) {\n // logger.log('checkFPS : droppedFPS/decodedFPS:' + droppedFPS/(1000 * currentDecoded / currentPeriod));\n if (currentDropped > hls.config.fpsDroppedMonitoringThreshold * currentDecoded) {\n var currentLevel = hls.currentLevel;\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn('drop FPS ratio greater than max allowed value for currentLevel: ' + currentLevel);\n\n if (currentLevel > 0 && (hls.autoLevelCapping === -1 || hls.autoLevelCapping >= currentLevel)) {\n currentLevel = currentLevel - 1;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FPS_DROP_LEVEL_CAPPING, {\n level: currentLevel,\n droppedLevel: hls.currentLevel\n });\n hls.autoLevelCapping = currentLevel;\n this.streamController.nextLevelSwitch();\n }\n }\n }\n }\n\n this.lastTime = currentTime;\n this.lastDroppedFrames = droppedFrames;\n this.lastDecodedFrames = decodedFrames;\n }\n };\n\n _proto.checkFPSInterval = function checkFPSInterval() {\n var video = this.media;\n\n if (video) {\n if (this.isVideoPlaybackQualityAvailable) {\n var videoPlaybackQuality = video.getVideoPlaybackQuality();\n this.checkFPS(video, videoPlaybackQuality.totalVideoFrames, videoPlaybackQuality.droppedVideoFrames);\n } else {\n // HTMLVideoElement doesn't include the webkit types\n this.checkFPS(video, video.webkitDecodedFrameCount, video.webkitDroppedFrameCount);\n }\n }\n };\n\n return FPSController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FPSController);\n\n/***/ }),\n\n/***/ \"./src/controller/fragment-finders.ts\":\n/*!********************************************!*\\\n !*** ./src/controller/fragment-finders.ts ***!\n \\********************************************/\n/*! exports provided: findFragmentByPDT, findFragmentByPTS, fragmentWithinToleranceTest, pdtWithinToleranceTest, findFragWithCC */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findFragmentByPDT\", function() { return findFragmentByPDT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findFragmentByPTS\", function() { return findFragmentByPTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fragmentWithinToleranceTest\", function() { return fragmentWithinToleranceTest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pdtWithinToleranceTest\", function() { return pdtWithinToleranceTest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findFragWithCC\", function() { return findFragWithCC; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _utils_binary_search__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/binary-search */ \"./src/utils/binary-search.ts\");\n\n\n\n/**\n * Returns first fragment whose endPdt value exceeds the given PDT.\n * @param {Array<Fragment>} fragments - The array of candidate fragments\n * @param {number|null} [PDTValue = null] - The PDT value which must be exceeded\n * @param {number} [maxFragLookUpTolerance = 0] - The amount of time that a fragment's start/end can be within in order to be considered contiguous\n * @returns {*|null} fragment - The best matching fragment\n */\nfunction findFragmentByPDT(fragments, PDTValue, maxFragLookUpTolerance) {\n if (PDTValue === null || !Array.isArray(fragments) || !fragments.length || !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(PDTValue)) {\n return null;\n } // if less than start\n\n\n var startPDT = fragments[0].programDateTime;\n\n if (PDTValue < (startPDT || 0)) {\n return null;\n }\n\n var endPDT = fragments[fragments.length - 1].endProgramDateTime;\n\n if (PDTValue >= (endPDT || 0)) {\n return null;\n }\n\n maxFragLookUpTolerance = maxFragLookUpTolerance || 0;\n\n for (var seg = 0; seg < fragments.length; ++seg) {\n var frag = fragments[seg];\n\n if (pdtWithinToleranceTest(PDTValue, maxFragLookUpTolerance, frag)) {\n return frag;\n }\n }\n\n return null;\n}\n/**\n * Finds a fragment based on the SN of the previous fragment; or based on the needs of the current buffer.\n * This method compensates for small buffer gaps by applying a tolerance to the start of any candidate fragment, thus\n * breaking any traps which would cause the same fragment to be continuously selected within a small range.\n * @param {*} fragPrevious - The last frag successfully appended\n * @param {Array} fragments - The array of candidate fragments\n * @param {number} [bufferEnd = 0] - The end of the contiguous buffered range the playhead is currently within\n * @param {number} maxFragLookUpTolerance - The amount of time that a fragment's start/end can be within in order to be considered contiguous\n * @returns {*} foundFrag - The best matching fragment\n */\n\nfunction findFragmentByPTS(fragPrevious, fragments, bufferEnd, maxFragLookUpTolerance) {\n if (bufferEnd === void 0) {\n bufferEnd = 0;\n }\n\n if (maxFragLookUpTolerance === void 0) {\n maxFragLookUpTolerance = 0;\n }\n\n var fragNext = null;\n\n if (fragPrevious) {\n fragNext = fragments[fragPrevious.sn - fragments[0].sn + 1] || null;\n } else if (bufferEnd === 0 && fragments[0].start === 0) {\n fragNext = fragments[0];\n } // Prefer the next fragment if it's within tolerance\n\n\n if (fragNext && fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, fragNext) === 0) {\n return fragNext;\n } // We might be seeking past the tolerance so find the best match\n\n\n var foundFragment = _utils_binary_search__WEBPACK_IMPORTED_MODULE_1__[\"default\"].search(fragments, fragmentWithinToleranceTest.bind(null, bufferEnd, maxFragLookUpTolerance));\n\n if (foundFragment) {\n return foundFragment;\n } // If no match was found return the next fragment after fragPrevious, or null\n\n\n return fragNext;\n}\n/**\n * The test function used by the findFragmentBySn's BinarySearch to look for the best match to the current buffer conditions.\n * @param {*} candidate - The fragment to test\n * @param {number} [bufferEnd = 0] - The end of the current buffered range the playhead is currently within\n * @param {number} [maxFragLookUpTolerance = 0] - The amount of time that a fragment's start can be within in order to be considered contiguous\n * @returns {number} - 0 if it matches, 1 if too low, -1 if too high\n */\n\nfunction fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, candidate) {\n if (bufferEnd === void 0) {\n bufferEnd = 0;\n }\n\n if (maxFragLookUpTolerance === void 0) {\n maxFragLookUpTolerance = 0;\n }\n\n // offset should be within fragment boundary - config.maxFragLookUpTolerance\n // this is to cope with situations like\n // bufferEnd = 9.991\n // frag[Ø] : [0,10]\n // frag[1] : [10,20]\n // bufferEnd is within frag[0] range ... although what we are expecting is to return frag[1] here\n // frag start frag start+duration\n // |-----------------------------|\n // <---> <--->\n // ...--------><-----------------------------><---------....\n // previous frag matching fragment next frag\n // return -1 return 0 return 1\n // logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`);\n // Set the lookup tolerance to be small enough to detect the current segment - ensures we don't skip over very small segments\n var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0));\n\n if (candidate.start + candidate.duration - candidateLookupTolerance <= bufferEnd) {\n return 1;\n } else if (candidate.start - candidateLookupTolerance > bufferEnd && candidate.start) {\n // if maxFragLookUpTolerance will have negative value then don't return -1 for first element\n return -1;\n }\n\n return 0;\n}\n/**\n * The test function used by the findFragmentByPdt's BinarySearch to look for the best match to the current buffer conditions.\n * This function tests the candidate's program date time values, as represented in Unix time\n * @param {*} candidate - The fragment to test\n * @param {number} [pdtBufferEnd = 0] - The Unix time representing the end of the current buffered range\n * @param {number} [maxFragLookUpTolerance = 0] - The amount of time that a fragment's start can be within in order to be considered contiguous\n * @returns {boolean} True if contiguous, false otherwise\n */\n\nfunction pdtWithinToleranceTest(pdtBufferEnd, maxFragLookUpTolerance, candidate) {\n var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0)) * 1000; // endProgramDateTime can be null, default to zero\n\n var endProgramDateTime = candidate.endProgramDateTime || 0;\n return endProgramDateTime - candidateLookupTolerance > pdtBufferEnd;\n}\nfunction findFragWithCC(fragments, cc) {\n return _utils_binary_search__WEBPACK_IMPORTED_MODULE_1__[\"default\"].search(fragments, function (candidate) {\n if (candidate.cc < cc) {\n return 1;\n } else if (candidate.cc > cc) {\n return -1;\n } else {\n return 0;\n }\n });\n}\n\n/***/ }),\n\n/***/ \"./src/controller/fragment-tracker.ts\":\n/*!********************************************!*\\\n !*** ./src/controller/fragment-tracker.ts ***!\n \\********************************************/\n/*! exports provided: FragmentState, FragmentTracker */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FragmentState\", function() { return FragmentState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FragmentTracker\", function() { return FragmentTracker; });\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n\n\nvar FragmentState;\n\n(function (FragmentState) {\n FragmentState[\"NOT_LOADED\"] = \"NOT_LOADED\";\n FragmentState[\"APPENDING\"] = \"APPENDING\";\n FragmentState[\"PARTIAL\"] = \"PARTIAL\";\n FragmentState[\"OK\"] = \"OK\";\n})(FragmentState || (FragmentState = {}));\n\nvar FragmentTracker = /*#__PURE__*/function () {\n function FragmentTracker(hls) {\n this.activeFragment = null;\n this.activeParts = null;\n this.fragments = Object.create(null);\n this.timeRanges = Object.create(null);\n this.bufferPadding = 0.2;\n this.hls = void 0;\n this.hls = hls;\n\n this._registerListeners();\n }\n\n var _proto = FragmentTracker.prototype;\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_APPENDED, this.onBufferAppended, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_APPENDED, this.onBufferAppended, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n };\n\n _proto.destroy = function destroy() {\n this._unregisterListeners(); // @ts-ignore\n\n\n this.fragments = this.timeRanges = null;\n }\n /**\n * Return a Fragment with an appended range that matches the position and levelType.\n * If not found any Fragment, return null\n */\n ;\n\n _proto.getAppendedFrag = function getAppendedFrag(position, levelType) {\n if (levelType === _types_loader__WEBPACK_IMPORTED_MODULE_1__[\"PlaylistLevelType\"].MAIN) {\n var activeFragment = this.activeFragment,\n activeParts = this.activeParts;\n\n if (!activeFragment) {\n return null;\n }\n\n if (activeParts) {\n for (var i = activeParts.length; i--;) {\n var activePart = activeParts[i];\n var appendedPTS = activePart ? activePart.end : activeFragment.appendedPTS;\n\n if (activePart.start <= position && appendedPTS !== undefined && position <= appendedPTS) {\n // 9 is a magic number. remove parts from lookup after a match but keep some short seeks back.\n if (i > 9) {\n this.activeParts = activeParts.slice(i - 9);\n }\n\n return activePart;\n }\n }\n } else if (activeFragment.start <= position && activeFragment.appendedPTS !== undefined && position <= activeFragment.appendedPTS) {\n return activeFragment;\n }\n }\n\n return this.getBufferedFrag(position, levelType);\n }\n /**\n * Return a buffered Fragment that matches the position and levelType.\n * A buffered Fragment is one whose loading, parsing and appending is done (completed or \"partial\" meaning aborted).\n * If not found any Fragment, return null\n */\n ;\n\n _proto.getBufferedFrag = function getBufferedFrag(position, levelType) {\n var fragments = this.fragments;\n var keys = Object.keys(fragments);\n\n for (var i = keys.length; i--;) {\n var fragmentEntity = fragments[keys[i]];\n\n if ((fragmentEntity === null || fragmentEntity === void 0 ? void 0 : fragmentEntity.body.type) === levelType && fragmentEntity.buffered) {\n var frag = fragmentEntity.body;\n\n if (frag.start <= position && position <= frag.end) {\n return frag;\n }\n }\n }\n\n return null;\n }\n /**\n * Partial fragments effected by coded frame eviction will be removed\n * The browser will unload parts of the buffer to free up memory for new buffer data\n * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable)\n */\n ;\n\n _proto.detectEvictedFragments = function detectEvictedFragments(elementaryStream, timeRange, playlistType) {\n var _this = this;\n\n // Check if any flagged fragments have been unloaded\n Object.keys(this.fragments).forEach(function (key) {\n var fragmentEntity = _this.fragments[key];\n\n if (!fragmentEntity) {\n return;\n }\n\n if (!fragmentEntity.buffered) {\n if (fragmentEntity.body.type === playlistType) {\n _this.removeFragment(fragmentEntity.body);\n }\n\n return;\n }\n\n var esData = fragmentEntity.range[elementaryStream];\n\n if (!esData) {\n return;\n }\n\n esData.time.some(function (time) {\n var isNotBuffered = !_this.isTimeBuffered(time.startPTS, time.endPTS, timeRange);\n\n if (isNotBuffered) {\n // Unregister partial fragment as it needs to load again to be reused\n _this.removeFragment(fragmentEntity.body);\n }\n\n return isNotBuffered;\n });\n });\n }\n /**\n * Checks if the fragment passed in is loaded in the buffer properly\n * Partially loaded fragments will be registered as a partial fragment\n */\n ;\n\n _proto.detectPartialFragments = function detectPartialFragments(data) {\n var _this2 = this;\n\n var timeRanges = this.timeRanges;\n var frag = data.frag,\n part = data.part;\n\n if (!timeRanges || frag.sn === 'initSegment') {\n return;\n }\n\n var fragKey = getFragmentKey(frag);\n var fragmentEntity = this.fragments[fragKey];\n\n if (!fragmentEntity) {\n return;\n }\n\n Object.keys(timeRanges).forEach(function (elementaryStream) {\n var streamInfo = frag.elementaryStreams[elementaryStream];\n\n if (!streamInfo) {\n return;\n }\n\n var timeRange = timeRanges[elementaryStream];\n var partial = part !== null || streamInfo.partial === true;\n fragmentEntity.range[elementaryStream] = _this2.getBufferedTimes(frag, part, partial, timeRange);\n });\n fragmentEntity.loaded = null;\n\n if (Object.keys(fragmentEntity.range).length) {\n fragmentEntity.buffered = true;\n } else {\n // remove fragment if nothing was appended\n this.removeFragment(fragmentEntity.body);\n }\n };\n\n _proto.fragBuffered = function fragBuffered(frag) {\n var fragKey = getFragmentKey(frag);\n var fragmentEntity = this.fragments[fragKey];\n\n if (fragmentEntity) {\n fragmentEntity.loaded = null;\n fragmentEntity.buffered = true;\n }\n };\n\n _proto.getBufferedTimes = function getBufferedTimes(fragment, part, partial, timeRange) {\n var buffered = {\n time: [],\n partial: partial\n };\n var startPTS = part ? part.start : fragment.start;\n var endPTS = part ? part.end : fragment.end;\n var minEndPTS = fragment.minEndPTS || endPTS;\n var maxStartPTS = fragment.maxStartPTS || startPTS;\n\n for (var i = 0; i < timeRange.length; i++) {\n var startTime = timeRange.start(i) - this.bufferPadding;\n var endTime = timeRange.end(i) + this.bufferPadding;\n\n if (maxStartPTS >= startTime && minEndPTS <= endTime) {\n // Fragment is entirely contained in buffer\n // No need to check the other timeRange times since it's completely playable\n buffered.time.push({\n startPTS: Math.max(startPTS, timeRange.start(i)),\n endPTS: Math.min(endPTS, timeRange.end(i))\n });\n break;\n } else if (startPTS < endTime && endPTS > startTime) {\n buffered.partial = true; // Check for intersection with buffer\n // Get playable sections of the fragment\n\n buffered.time.push({\n startPTS: Math.max(startPTS, timeRange.start(i)),\n endPTS: Math.min(endPTS, timeRange.end(i))\n });\n } else if (endPTS <= startTime) {\n // No need to check the rest of the timeRange as it is in order\n break;\n }\n }\n\n return buffered;\n }\n /**\n * Gets the partial fragment for a certain time\n */\n ;\n\n _proto.getPartialFragment = function getPartialFragment(time) {\n var bestFragment = null;\n var timePadding;\n var startTime;\n var endTime;\n var bestOverlap = 0;\n var bufferPadding = this.bufferPadding,\n fragments = this.fragments;\n Object.keys(fragments).forEach(function (key) {\n var fragmentEntity = fragments[key];\n\n if (!fragmentEntity) {\n return;\n }\n\n if (isPartial(fragmentEntity)) {\n startTime = fragmentEntity.body.start - bufferPadding;\n endTime = fragmentEntity.body.end + bufferPadding;\n\n if (time >= startTime && time <= endTime) {\n // Use the fragment that has the most padding from start and end time\n timePadding = Math.min(time - startTime, endTime - time);\n\n if (bestOverlap <= timePadding) {\n bestFragment = fragmentEntity.body;\n bestOverlap = timePadding;\n }\n }\n }\n });\n return bestFragment;\n };\n\n _proto.getState = function getState(fragment) {\n var fragKey = getFragmentKey(fragment);\n var fragmentEntity = this.fragments[fragKey];\n\n if (fragmentEntity) {\n if (!fragmentEntity.buffered) {\n return FragmentState.APPENDING;\n } else if (isPartial(fragmentEntity)) {\n return FragmentState.PARTIAL;\n } else {\n return FragmentState.OK;\n }\n }\n\n return FragmentState.NOT_LOADED;\n };\n\n _proto.isTimeBuffered = function isTimeBuffered(startPTS, endPTS, timeRange) {\n var startTime;\n var endTime;\n\n for (var i = 0; i < timeRange.length; i++) {\n startTime = timeRange.start(i) - this.bufferPadding;\n endTime = timeRange.end(i) + this.bufferPadding;\n\n if (startPTS >= startTime && endPTS <= endTime) {\n return true;\n }\n\n if (endPTS <= startTime) {\n // No need to check the rest of the timeRange as it is in order\n return false;\n }\n }\n\n return false;\n };\n\n _proto.onFragLoaded = function onFragLoaded(event, data) {\n var frag = data.frag,\n part = data.part; // don't track initsegment (for which sn is not a number)\n // don't track frags used for bitrateTest, they're irrelevant.\n // don't track parts for memory efficiency\n\n if (frag.sn === 'initSegment' || frag.bitrateTest || part) {\n return;\n }\n\n var fragKey = getFragmentKey(frag);\n this.fragments[fragKey] = {\n body: frag,\n loaded: data,\n buffered: false,\n range: Object.create(null)\n };\n };\n\n _proto.onBufferAppended = function onBufferAppended(event, data) {\n var _this3 = this;\n\n var frag = data.frag,\n part = data.part,\n timeRanges = data.timeRanges;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_1__[\"PlaylistLevelType\"].MAIN) {\n this.activeFragment = frag;\n\n if (part) {\n var activeParts = this.activeParts;\n\n if (!activeParts) {\n this.activeParts = activeParts = [];\n }\n\n activeParts.push(part);\n } else {\n this.activeParts = null;\n }\n } // Store the latest timeRanges loaded in the buffer\n\n\n this.timeRanges = timeRanges;\n Object.keys(timeRanges).forEach(function (elementaryStream) {\n var timeRange = timeRanges[elementaryStream];\n\n _this3.detectEvictedFragments(elementaryStream, timeRange);\n\n if (!part) {\n for (var i = 0; i < timeRange.length; i++) {\n frag.appendedPTS = Math.max(timeRange.end(i), frag.appendedPTS || 0);\n }\n }\n });\n };\n\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n this.detectPartialFragments(data);\n };\n\n _proto.hasFragment = function hasFragment(fragment) {\n var fragKey = getFragmentKey(fragment);\n return !!this.fragments[fragKey];\n };\n\n _proto.removeFragmentsInRange = function removeFragmentsInRange(start, end, playlistType) {\n var _this4 = this;\n\n Object.keys(this.fragments).forEach(function (key) {\n var fragmentEntity = _this4.fragments[key];\n\n if (!fragmentEntity) {\n return;\n }\n\n if (fragmentEntity.buffered) {\n var frag = fragmentEntity.body;\n\n if (frag.type === playlistType && frag.start < end && frag.end > start) {\n _this4.removeFragment(frag);\n }\n }\n });\n };\n\n _proto.removeFragment = function removeFragment(fragment) {\n var fragKey = getFragmentKey(fragment);\n fragment.stats.loaded = 0;\n fragment.clearElementaryStreamInfo();\n delete this.fragments[fragKey];\n };\n\n _proto.removeAllFragments = function removeAllFragments() {\n this.fragments = Object.create(null);\n this.activeFragment = null;\n this.activeParts = null;\n };\n\n return FragmentTracker;\n}();\n\nfunction isPartial(fragmentEntity) {\n var _fragmentEntity$range, _fragmentEntity$range2;\n\n return fragmentEntity.buffered && (((_fragmentEntity$range = fragmentEntity.range.video) === null || _fragmentEntity$range === void 0 ? void 0 : _fragmentEntity$range.partial) || ((_fragmentEntity$range2 = fragmentEntity.range.audio) === null || _fragmentEntity$range2 === void 0 ? void 0 : _fragmentEntity$range2.partial));\n}\n\nfunction getFragmentKey(fragment) {\n return fragment.type + \"_\" + fragment.level + \"_\" + fragment.urlId + \"_\" + fragment.sn;\n}\n\n/***/ }),\n\n/***/ \"./src/controller/gap-controller.ts\":\n/*!******************************************!*\\\n !*** ./src/controller/gap-controller.ts ***!\n \\******************************************/\n/*! exports provided: STALL_MINIMUM_DURATION_MS, MAX_START_GAP_JUMP, SKIP_BUFFER_HOLE_STEP_SECONDS, SKIP_BUFFER_RANGE_START, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STALL_MINIMUM_DURATION_MS\", function() { return STALL_MINIMUM_DURATION_MS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MAX_START_GAP_JUMP\", function() { return MAX_START_GAP_JUMP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SKIP_BUFFER_HOLE_STEP_SECONDS\", function() { return SKIP_BUFFER_HOLE_STEP_SECONDS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SKIP_BUFFER_RANGE_START\", function() { return SKIP_BUFFER_RANGE_START; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return GapController; });\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\n\nvar STALL_MINIMUM_DURATION_MS = 250;\nvar MAX_START_GAP_JUMP = 2.0;\nvar SKIP_BUFFER_HOLE_STEP_SECONDS = 0.1;\nvar SKIP_BUFFER_RANGE_START = 0.05;\n\nvar GapController = /*#__PURE__*/function () {\n function GapController(config, media, fragmentTracker, hls) {\n this.config = void 0;\n this.media = null;\n this.fragmentTracker = void 0;\n this.hls = void 0;\n this.nudgeRetry = 0;\n this.stallReported = false;\n this.stalled = null;\n this.moved = false;\n this.seeking = false;\n this.config = config;\n this.media = media;\n this.fragmentTracker = fragmentTracker;\n this.hls = hls;\n }\n\n var _proto = GapController.prototype;\n\n _proto.destroy = function destroy() {\n this.media = null; // @ts-ignore\n\n this.hls = this.fragmentTracker = null;\n }\n /**\n * Checks if the playhead is stuck within a gap, and if so, attempts to free it.\n * A gap is an unbuffered range between two buffered ranges (or the start and the first buffered range).\n *\n * @param {number} lastCurrentTime Previously read playhead position\n */\n ;\n\n _proto.poll = function poll(lastCurrentTime, activeFrag) {\n var config = this.config,\n media = this.media,\n stalled = this.stalled;\n\n if (media === null) {\n return;\n }\n\n var currentTime = media.currentTime,\n seeking = media.seeking;\n var seeked = this.seeking && !seeking;\n var beginSeek = !this.seeking && seeking;\n this.seeking = seeking; // The playhead is moving, no-op\n\n if (currentTime !== lastCurrentTime) {\n this.moved = true;\n\n if (stalled !== null) {\n // The playhead is now moving, but was previously stalled\n if (this.stallReported) {\n var _stalledDuration = self.performance.now() - stalled;\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"playback not stuck anymore @\" + currentTime + \", after \" + Math.round(_stalledDuration) + \"ms\");\n this.stallReported = false;\n }\n\n this.stalled = null;\n this.nudgeRetry = 0;\n }\n\n return;\n } // Clear stalled state when beginning or finishing seeking so that we don't report stalls coming out of a seek\n\n\n if (beginSeek || seeked) {\n this.stalled = null;\n } // The playhead should not be moving\n\n\n if (media.paused && !seeking || media.ended || media.playbackRate === 0 || !_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__[\"BufferHelper\"].getBuffered(media).length) {\n return;\n }\n\n var bufferInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__[\"BufferHelper\"].bufferInfo(media, currentTime, 0);\n var isBuffered = bufferInfo.len > 0;\n var nextStart = bufferInfo.nextStart || 0; // There is no playable buffer (seeked, waiting for buffer)\n\n if (!isBuffered && !nextStart) {\n return;\n }\n\n if (seeking) {\n // Waiting for seeking in a buffered range to complete\n var hasEnoughBuffer = bufferInfo.len > MAX_START_GAP_JUMP; // Next buffered range is too far ahead to jump to while still seeking\n\n var noBufferGap = !nextStart || activeFrag && activeFrag.start <= currentTime || nextStart - currentTime > MAX_START_GAP_JUMP && !this.fragmentTracker.getPartialFragment(currentTime);\n\n if (hasEnoughBuffer || noBufferGap) {\n return;\n } // Reset moved state when seeking to a point in or before a gap\n\n\n this.moved = false;\n } // Skip start gaps if we haven't played, but the last poll detected the start of a stall\n // The addition poll gives the browser a chance to jump the gap for us\n\n\n if (!this.moved && this.stalled !== null) {\n var _level$details;\n\n // Jump start gaps within jump threshold\n var startJump = Math.max(nextStart, bufferInfo.start || 0) - currentTime; // When joining a live stream with audio tracks, account for live playlist window sliding by allowing\n // a larger jump over start gaps caused by the audio-stream-controller buffering a start fragment\n // that begins over 1 target duration after the video start position.\n\n var level = this.hls.levels ? this.hls.levels[this.hls.currentLevel] : null;\n var isLive = level === null || level === void 0 ? void 0 : (_level$details = level.details) === null || _level$details === void 0 ? void 0 : _level$details.live;\n var maxStartGapJump = isLive ? level.details.targetduration * 2 : MAX_START_GAP_JUMP;\n\n if (startJump > 0 && startJump <= maxStartGapJump) {\n this._trySkipBufferHole(null);\n\n return;\n }\n } // Start tracking stall time\n\n\n var tnow = self.performance.now();\n\n if (stalled === null) {\n this.stalled = tnow;\n return;\n }\n\n var stalledDuration = tnow - stalled;\n\n if (!seeking && stalledDuration >= STALL_MINIMUM_DURATION_MS) {\n // Report stalling after trying to fix\n this._reportStall(bufferInfo);\n\n if (!this.media) {\n return;\n }\n }\n\n var bufferedWithHoles = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__[\"BufferHelper\"].bufferInfo(media, currentTime, config.maxBufferHole);\n\n this._tryFixBufferStall(bufferedWithHoles, stalledDuration);\n }\n /**\n * Detects and attempts to fix known buffer stalling issues.\n * @param bufferInfo - The properties of the current buffer.\n * @param stalledDurationMs - The amount of time Hls.js has been stalling for.\n * @private\n */\n ;\n\n _proto._tryFixBufferStall = function _tryFixBufferStall(bufferInfo, stalledDurationMs) {\n var config = this.config,\n fragmentTracker = this.fragmentTracker,\n media = this.media;\n\n if (media === null) {\n return;\n }\n\n var currentTime = media.currentTime;\n var partial = fragmentTracker.getPartialFragment(currentTime);\n\n if (partial) {\n // Try to skip over the buffer hole caused by a partial fragment\n // This method isn't limited by the size of the gap between buffered ranges\n var targetTime = this._trySkipBufferHole(partial); // we return here in this case, meaning\n // the branch below only executes when we don't handle a partial fragment\n\n\n if (targetTime || !this.media) {\n return;\n }\n } // if we haven't had to skip over a buffer hole of a partial fragment\n // we may just have to \"nudge\" the playlist as the browser decoding/rendering engine\n // needs to cross some sort of threshold covering all source-buffers content\n // to start playing properly.\n\n\n if (bufferInfo.len > config.maxBufferHole && stalledDurationMs > config.highBufferWatchdogPeriod * 1000) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('Trying to nudge playhead over buffer-hole'); // Try to nudge currentTime over a buffer hole if we've been stalling for the configured amount of seconds\n // We only try to jump the hole if it's under the configured size\n // Reset stalled so to rearm watchdog timer\n\n this.stalled = null;\n\n this._tryNudgeBuffer();\n }\n }\n /**\n * Triggers a BUFFER_STALLED_ERROR event, but only once per stall period.\n * @param bufferLen - The playhead distance from the end of the current buffer segment.\n * @private\n */\n ;\n\n _proto._reportStall = function _reportStall(bufferInfo) {\n var hls = this.hls,\n media = this.media,\n stallReported = this.stallReported;\n\n if (!stallReported && media) {\n // Report stalled error once\n this.stallReported = true;\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"Playback stalling at @\" + media.currentTime + \" due to low buffer (\" + JSON.stringify(bufferInfo) + \")\");\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].BUFFER_STALLED_ERROR,\n fatal: false,\n buffer: bufferInfo.len\n });\n }\n }\n /**\n * Attempts to fix buffer stalls by jumping over known gaps caused by partial fragments\n * @param partial - The partial fragment found at the current time (where playback is stalling).\n * @private\n */\n ;\n\n _proto._trySkipBufferHole = function _trySkipBufferHole(partial) {\n var config = this.config,\n hls = this.hls,\n media = this.media;\n\n if (media === null) {\n return 0;\n }\n\n var currentTime = media.currentTime;\n var lastEndTime = 0; // Check if currentTime is between unbuffered regions of partial fragments\n\n var buffered = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__[\"BufferHelper\"].getBuffered(media);\n\n for (var i = 0; i < buffered.length; i++) {\n var startTime = buffered.start(i);\n\n if (currentTime + config.maxBufferHole >= lastEndTime && currentTime < startTime) {\n var targetTime = Math.max(startTime + SKIP_BUFFER_RANGE_START, media.currentTime + SKIP_BUFFER_HOLE_STEP_SECONDS);\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"skipping hole, adjusting currentTime from \" + currentTime + \" to \" + targetTime);\n this.moved = true;\n this.stalled = null;\n media.currentTime = targetTime;\n\n if (partial) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].BUFFER_SEEK_OVER_HOLE,\n fatal: false,\n reason: \"fragment loaded with buffer holes, seeking from \" + currentTime + \" to \" + targetTime,\n frag: partial\n });\n }\n\n return targetTime;\n }\n\n lastEndTime = buffered.end(i);\n }\n\n return 0;\n }\n /**\n * Attempts to fix buffer stalls by advancing the mediaElement's current time by a small amount.\n * @private\n */\n ;\n\n _proto._tryNudgeBuffer = function _tryNudgeBuffer() {\n var config = this.config,\n hls = this.hls,\n media = this.media,\n nudgeRetry = this.nudgeRetry;\n\n if (media === null) {\n return;\n }\n\n var currentTime = media.currentTime;\n this.nudgeRetry++;\n\n if (nudgeRetry < config.nudgeMaxRetry) {\n var targetTime = currentTime + (nudgeRetry + 1) * config.nudgeOffset; // playback stalled in buffered area ... let's nudge currentTime to try to overcome this\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"Nudging 'currentTime' from \" + currentTime + \" to \" + targetTime);\n media.currentTime = targetTime;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].BUFFER_NUDGE_ON_STALL,\n fatal: false\n });\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].error(\"Playhead still not moving while enough data buffered @\" + currentTime + \" after \" + config.nudgeMaxRetry + \" nudges\");\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].BUFFER_STALLED_ERROR,\n fatal: true\n });\n }\n };\n\n return GapController;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/id3-track-controller.ts\":\n/*!************************************************!*\\\n !*** ./src/controller/id3-track-controller.ts ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/texttrack-utils */ \"./src/utils/texttrack-utils.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\n/* harmony import */ var _loader_date_range__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../loader/date-range */ \"./src/loader/date-range.ts\");\n/* harmony import */ var _types_demuxer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../types/demuxer */ \"./src/types/demuxer.ts\");\n\n\n\n\n\n\nvar MIN_CUE_DURATION = 0.25;\n\nfunction getCueClass() {\n // Attempt to recreate Safari functionality by creating\n // WebKitDataCue objects when available and store the decoded\n // ID3 data in the value property of the cue\n return self.WebKitDataCue || self.VTTCue || self.TextTrackCue;\n}\n\nfunction dateRangeDateToTimelineSeconds(date, offset) {\n return date.getTime() / 1000 - offset;\n}\n\nfunction hexToArrayBuffer(str) {\n return Uint8Array.from(str.replace(/^0x/, '').replace(/([\\da-fA-F]{2}) ?/g, '0x$1 ').replace(/ +$/, '').split(' ')).buffer;\n}\n\nvar ID3TrackController = /*#__PURE__*/function () {\n function ID3TrackController(hls) {\n this.hls = void 0;\n this.id3Track = null;\n this.media = null;\n this.dateRangeCuesAppended = {};\n this.hls = hls;\n\n this._registerListeners();\n }\n\n var _proto = ID3TrackController.prototype;\n\n _proto.destroy = function destroy() {\n this._unregisterListeners();\n\n this.id3Track = null;\n this.media = null;\n this.dateRangeCuesAppended = {}; // @ts-ignore\n\n this.hls = null;\n };\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated, this);\n } // Add ID3 metatadata text track.\n ;\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n if (!this.id3Track) {\n return;\n }\n\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__[\"clearCurrentCues\"])(this.id3Track);\n this.id3Track = null;\n this.media = null;\n this.dateRangeCuesAppended = {};\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.dateRangeCuesAppended = {};\n };\n\n _proto.createTrack = function createTrack(media) {\n var track = this.getID3Track(media.textTracks);\n track.mode = 'hidden';\n return track;\n };\n\n _proto.getID3Track = function getID3Track(textTracks) {\n if (!this.media) {\n return;\n }\n\n for (var i = 0; i < textTracks.length; i++) {\n var textTrack = textTracks[i];\n\n if (textTrack.kind === 'metadata' && textTrack.label === 'id3') {\n // send 'addtrack' when reusing the textTrack for metadata,\n // same as what we do for captions\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__[\"sendAddTrackEvent\"])(textTrack, this.media);\n return textTrack;\n }\n }\n\n return this.media.addTextTrack('metadata', 'id3');\n };\n\n _proto.onFragParsingMetadata = function onFragParsingMetadata(event, data) {\n if (!this.media) {\n return;\n }\n\n var _this$hls$config = this.hls.config,\n enableEmsgMetadataCues = _this$hls$config.enableEmsgMetadataCues,\n enableID3MetadataCues = _this$hls$config.enableID3MetadataCues;\n\n if (!enableEmsgMetadataCues && !enableID3MetadataCues) {\n return;\n }\n\n var fragment = data.frag,\n samples = data.samples,\n details = data.details; // create track dynamically\n\n if (!this.id3Track) {\n this.id3Track = this.createTrack(this.media);\n } // VTTCue end time must be finite, so use playlist edge or fragment end until next fragment with same frame type is found\n\n\n var maxCueTime = details.edge || fragment.end;\n var Cue = getCueClass();\n var updateCueRanges = false;\n var frameTypesAdded = {};\n\n for (var i = 0; i < samples.length; i++) {\n var type = samples[i].type;\n\n if (type === _types_demuxer__WEBPACK_IMPORTED_MODULE_5__[\"MetadataSchema\"].emsg && !enableEmsgMetadataCues || !enableID3MetadataCues) {\n continue;\n }\n\n var frames = _demux_id3__WEBPACK_IMPORTED_MODULE_3__[\"getID3Frames\"](samples[i].data);\n\n if (frames) {\n var startTime = samples[i].pts;\n var endTime = maxCueTime;\n var timeDiff = endTime - startTime;\n\n if (timeDiff <= 0) {\n endTime = startTime + MIN_CUE_DURATION;\n }\n\n for (var j = 0; j < frames.length; j++) {\n var frame = frames[j]; // Safari doesn't put the timestamp frame in the TextTrack\n\n if (!_demux_id3__WEBPACK_IMPORTED_MODULE_3__[\"isTimeStampFrame\"](frame)) {\n var cue = new Cue(startTime, endTime, '');\n cue.value = frame;\n\n if (type) {\n cue.type = type;\n }\n\n this.id3Track.addCue(cue);\n frameTypesAdded[frame.key] = null;\n updateCueRanges = true;\n }\n }\n }\n }\n\n if (updateCueRanges) {\n this.updateId3CueEnds(frameTypesAdded);\n }\n };\n\n _proto.updateId3CueEnds = function updateId3CueEnds(frameTypesAdded) {\n var _this$id3Track;\n\n // Update endTime of previous cue with same IDR frame.type (Ex: TXXX cue spans to next TXXX)\n var cues = (_this$id3Track = this.id3Track) === null || _this$id3Track === void 0 ? void 0 : _this$id3Track.cues;\n\n if (cues) {\n for (var i = cues.length; i--;) {\n var _cue$value;\n\n var cue = cues[i];\n var frameType = (_cue$value = cue.value) === null || _cue$value === void 0 ? void 0 : _cue$value.key;\n\n if (frameType && frameType in frameTypesAdded) {\n var startTime = frameTypesAdded[frameType];\n\n if (startTime && cue.endTime !== startTime) {\n cue.endTime = startTime;\n }\n\n frameTypesAdded[frameType] = cue.startTime;\n }\n }\n }\n };\n\n _proto.onBufferFlushing = function onBufferFlushing(event, _ref) {\n var startOffset = _ref.startOffset,\n endOffset = _ref.endOffset,\n type = _ref.type;\n var id3Track = this.id3Track,\n hls = this.hls;\n\n if (!hls) {\n return;\n }\n\n var _hls$config = hls.config,\n enableEmsgMetadataCues = _hls$config.enableEmsgMetadataCues,\n enableID3MetadataCues = _hls$config.enableID3MetadataCues;\n\n if (id3Track && (enableEmsgMetadataCues || enableID3MetadataCues)) {\n var predicate;\n\n if (type === 'audio') {\n predicate = function predicate(cue) {\n return cue.type === _types_demuxer__WEBPACK_IMPORTED_MODULE_5__[\"MetadataSchema\"].audioId3 && enableID3MetadataCues;\n };\n } else if (type === 'video') {\n predicate = function predicate(cue) {\n return cue.type === _types_demuxer__WEBPACK_IMPORTED_MODULE_5__[\"MetadataSchema\"].emsg && enableEmsgMetadataCues;\n };\n } else {\n predicate = function predicate(cue) {\n return cue.type === _types_demuxer__WEBPACK_IMPORTED_MODULE_5__[\"MetadataSchema\"].audioId3 && enableID3MetadataCues || cue.type === _types_demuxer__WEBPACK_IMPORTED_MODULE_5__[\"MetadataSchema\"].emsg && enableEmsgMetadataCues;\n };\n }\n\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__[\"removeCuesInRange\"])(id3Track, startOffset, endOffset, predicate);\n }\n };\n\n _proto.onLevelUpdated = function onLevelUpdated(event, _ref2) {\n var _this = this;\n\n var details = _ref2.details;\n\n if (!this.media || !details.hasProgramDateTime || !this.hls.config.enableDateRangeMetadataCues) {\n return;\n }\n\n var dateRangeCuesAppended = this.dateRangeCuesAppended,\n id3Track = this.id3Track;\n var dateRanges = details.dateRanges;\n var ids = Object.keys(dateRanges); // Remove cues from track not found in details.dateRanges\n\n if (id3Track) {\n var idsToRemove = Object.keys(dateRangeCuesAppended).filter(function (id) {\n return !ids.includes(id);\n });\n\n var _loop = function _loop(i) {\n var id = idsToRemove[i];\n Object.keys(dateRangeCuesAppended[id].cues).forEach(function (key) {\n id3Track.removeCue(dateRangeCuesAppended[id].cues[key]);\n });\n delete dateRangeCuesAppended[id];\n };\n\n for (var i = idsToRemove.length; i--;) {\n _loop(i);\n }\n } // Exit if the playlist does not have Date Ranges or does not have Program Date Time\n\n\n var lastFragment = details.fragments[details.fragments.length - 1];\n\n if (ids.length === 0 || !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(lastFragment === null || lastFragment === void 0 ? void 0 : lastFragment.programDateTime)) {\n return;\n }\n\n if (!this.id3Track) {\n this.id3Track = this.createTrack(this.media);\n }\n\n var dateTimeOffset = lastFragment.programDateTime / 1000 - lastFragment.start;\n var maxCueTime = details.edge || lastFragment.end;\n var Cue = getCueClass();\n\n var _loop2 = function _loop2(_i) {\n var id = ids[_i];\n var dateRange = dateRanges[id];\n var appendedDateRangeCues = dateRangeCuesAppended[id];\n var cues = (appendedDateRangeCues === null || appendedDateRangeCues === void 0 ? void 0 : appendedDateRangeCues.cues) || {};\n var durationKnown = (appendedDateRangeCues === null || appendedDateRangeCues === void 0 ? void 0 : appendedDateRangeCues.durationKnown) || false;\n var startTime = dateRangeDateToTimelineSeconds(dateRange.startDate, dateTimeOffset);\n var endTime = maxCueTime;\n var endDate = dateRange.endDate;\n\n if (endDate) {\n endTime = dateRangeDateToTimelineSeconds(endDate, dateTimeOffset);\n durationKnown = true;\n } else if (dateRange.endOnNext && !durationKnown) {\n var nextDateRangeWithSameClass = ids.reduce(function (filterMapArray, id) {\n var candidate = dateRanges[id];\n\n if (candidate.class === dateRange.class && candidate.id !== id && candidate.startDate > dateRange.startDate) {\n filterMapArray.push(candidate);\n }\n\n return filterMapArray;\n }, []).sort(function (a, b) {\n return a.startDate.getTime() - b.startDate.getTime();\n })[0];\n\n if (nextDateRangeWithSameClass) {\n endTime = dateRangeDateToTimelineSeconds(nextDateRangeWithSameClass.startDate, dateTimeOffset);\n durationKnown = true;\n }\n }\n\n var attributes = Object.keys(dateRange.attr);\n\n for (var j = 0; j < attributes.length; j++) {\n var key = attributes[j];\n\n if (key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].ID || key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].CLASS || key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].START_DATE || key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].DURATION || key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].END_DATE || key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].END_ON_NEXT) {\n continue;\n }\n\n var cue = cues[key];\n\n if (cue) {\n if (durationKnown && !appendedDateRangeCues.durationKnown) {\n cue.endTime = endTime;\n }\n } else {\n var data = dateRange.attr[key];\n cue = new Cue(startTime, endTime, '');\n\n if (key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].SCTE35_OUT || key === _loader_date_range__WEBPACK_IMPORTED_MODULE_4__[\"DateRangeAttribute\"].SCTE35_IN) {\n data = hexToArrayBuffer(data);\n }\n\n cue.value = {\n key: key,\n data: data\n };\n cue.type = _types_demuxer__WEBPACK_IMPORTED_MODULE_5__[\"MetadataSchema\"].dateRange;\n\n _this.id3Track.addCue(cue);\n\n cues[key] = cue;\n }\n }\n\n dateRangeCuesAppended[id] = {\n cues: cues,\n dateRange: dateRange,\n durationKnown: durationKnown\n };\n };\n\n for (var _i = 0; _i < ids.length; _i++) {\n _loop2(_i);\n }\n };\n\n return ID3TrackController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ID3TrackController);\n\n/***/ }),\n\n/***/ \"./src/controller/latency-controller.ts\":\n/*!**********************************************!*\\\n !*** ./src/controller/latency-controller.ts ***!\n \\**********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return LatencyController; });\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n\nvar LatencyController = /*#__PURE__*/function () {\n function LatencyController(hls) {\n var _this = this;\n\n this.hls = void 0;\n this.config = void 0;\n this.media = null;\n this.levelDetails = null;\n this.currentTime = 0;\n this.stallCount = 0;\n this._latency = null;\n\n this.timeupdateHandler = function () {\n return _this.timeupdate();\n };\n\n this.hls = hls;\n this.config = hls.config;\n this.registerListeners();\n }\n\n var _proto = LatencyController.prototype;\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.onMediaDetaching();\n this.levelDetails = null; // @ts-ignore\n\n this.hls = this.timeupdateHandler = null;\n };\n\n _proto.registerListeners = function registerListeners() {\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated, this);\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_UPDATED, this.onLevelUpdated);\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, this.onError);\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n this.media.addEventListener('timeupdate', this.timeupdateHandler);\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n if (this.media) {\n this.media.removeEventListener('timeupdate', this.timeupdateHandler);\n this.media = null;\n }\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.levelDetails = null;\n this._latency = null;\n this.stallCount = 0;\n };\n\n _proto.onLevelUpdated = function onLevelUpdated(event, _ref) {\n var details = _ref.details;\n this.levelDetails = details;\n\n if (details.advanced) {\n this.timeupdate();\n }\n\n if (!details.live && this.media) {\n this.media.removeEventListener('timeupdate', this.timeupdateHandler);\n }\n };\n\n _proto.onError = function onError(event, data) {\n if (data.details !== _errors__WEBPACK_IMPORTED_MODULE_0__[\"ErrorDetails\"].BUFFER_STALLED_ERROR) {\n return;\n }\n\n this.stallCount++;\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('[playback-rate-controller]: Stall detected, adjusting target latency');\n };\n\n _proto.timeupdate = function timeupdate() {\n var media = this.media,\n levelDetails = this.levelDetails;\n\n if (!media || !levelDetails) {\n return;\n }\n\n this.currentTime = media.currentTime;\n var latency = this.computeLatency();\n\n if (latency === null) {\n return;\n }\n\n this._latency = latency; // Adapt playbackRate to meet target latency in low-latency mode\n\n var _this$config = this.config,\n lowLatencyMode = _this$config.lowLatencyMode,\n maxLiveSyncPlaybackRate = _this$config.maxLiveSyncPlaybackRate;\n\n if (!lowLatencyMode || maxLiveSyncPlaybackRate === 1) {\n return;\n }\n\n var targetLatency = this.targetLatency;\n\n if (targetLatency === null) {\n return;\n }\n\n var distanceFromTarget = latency - targetLatency; // Only adjust playbackRate when within one target duration of targetLatency\n // and more than one second from under-buffering.\n // Playback further than one target duration from target can be considered DVR playback.\n\n var liveMinLatencyDuration = Math.min(this.maxLatency, targetLatency + levelDetails.targetduration);\n var inLiveRange = distanceFromTarget < liveMinLatencyDuration;\n\n if (levelDetails.live && inLiveRange && distanceFromTarget > 0.05 && this.forwardBufferLength > 1) {\n var max = Math.min(2, Math.max(1.0, maxLiveSyncPlaybackRate));\n var rate = Math.round(2 / (1 + Math.exp(-0.75 * distanceFromTarget - this.edgeStalled)) * 20) / 20;\n media.playbackRate = Math.min(max, Math.max(1, rate));\n } else if (media.playbackRate !== 1 && media.playbackRate !== 0) {\n media.playbackRate = 1;\n }\n };\n\n _proto.estimateLiveEdge = function estimateLiveEdge() {\n var levelDetails = this.levelDetails;\n\n if (levelDetails === null) {\n return null;\n }\n\n return levelDetails.edge + levelDetails.age;\n };\n\n _proto.computeLatency = function computeLatency() {\n var liveEdge = this.estimateLiveEdge();\n\n if (liveEdge === null) {\n return null;\n }\n\n return liveEdge - this.currentTime;\n };\n\n _createClass(LatencyController, [{\n key: \"latency\",\n get: function get() {\n return this._latency || 0;\n }\n }, {\n key: \"maxLatency\",\n get: function get() {\n var config = this.config,\n levelDetails = this.levelDetails;\n\n if (config.liveMaxLatencyDuration !== undefined) {\n return config.liveMaxLatencyDuration;\n }\n\n return levelDetails ? config.liveMaxLatencyDurationCount * levelDetails.targetduration : 0;\n }\n }, {\n key: \"targetLatency\",\n get: function get() {\n var levelDetails = this.levelDetails;\n\n if (levelDetails === null) {\n return null;\n }\n\n var holdBack = levelDetails.holdBack,\n partHoldBack = levelDetails.partHoldBack,\n targetduration = levelDetails.targetduration;\n var _this$config2 = this.config,\n liveSyncDuration = _this$config2.liveSyncDuration,\n liveSyncDurationCount = _this$config2.liveSyncDurationCount,\n lowLatencyMode = _this$config2.lowLatencyMode;\n var userConfig = this.hls.userConfig;\n var targetLatency = lowLatencyMode ? partHoldBack || holdBack : holdBack;\n\n if (userConfig.liveSyncDuration || userConfig.liveSyncDurationCount || targetLatency === 0) {\n targetLatency = liveSyncDuration !== undefined ? liveSyncDuration : liveSyncDurationCount * targetduration;\n }\n\n var maxLiveSyncOnStallIncrease = targetduration;\n var liveSyncOnStallIncrease = 1.0;\n return targetLatency + Math.min(this.stallCount * liveSyncOnStallIncrease, maxLiveSyncOnStallIncrease);\n }\n }, {\n key: \"liveSyncPosition\",\n get: function get() {\n var liveEdge = this.estimateLiveEdge();\n var targetLatency = this.targetLatency;\n var levelDetails = this.levelDetails;\n\n if (liveEdge === null || targetLatency === null || levelDetails === null) {\n return null;\n }\n\n var edge = levelDetails.edge;\n var syncPosition = liveEdge - targetLatency - this.edgeStalled;\n var min = edge - levelDetails.totalduration;\n var max = edge - (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration);\n return Math.min(Math.max(min, syncPosition), max);\n }\n }, {\n key: \"drift\",\n get: function get() {\n var levelDetails = this.levelDetails;\n\n if (levelDetails === null) {\n return 1;\n }\n\n return levelDetails.drift;\n }\n }, {\n key: \"edgeStalled\",\n get: function get() {\n var levelDetails = this.levelDetails;\n\n if (levelDetails === null) {\n return 0;\n }\n\n var maxLevelUpdateAge = (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration) * 3;\n return Math.max(levelDetails.age - maxLevelUpdateAge, 0);\n }\n }, {\n key: \"forwardBufferLength\",\n get: function get() {\n var media = this.media,\n levelDetails = this.levelDetails;\n\n if (!media || !levelDetails) {\n return 0;\n }\n\n var bufferedRanges = media.buffered.length;\n return (bufferedRanges ? media.buffered.end(bufferedRanges - 1) : levelDetails.edge) - this.currentTime;\n }\n }]);\n\n return LatencyController;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/level-controller.ts\":\n/*!********************************************!*\\\n !*** ./src/controller/level-controller.ts ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return LevelController; });\n/* harmony import */ var _types_level__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types/level */ \"./src/types/level.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_codecs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/codecs */ \"./src/utils/codecs.ts\");\n/* harmony import */ var _level_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./level-helper */ \"./src/controller/level-helper.ts\");\n/* harmony import */ var _base_playlist_controller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./base-playlist-controller */ \"./src/controller/base-playlist-controller.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/*\n * Level Controller\n */\n\n\n\n\n\n\n\nvar chromeOrFirefox = /chrome|firefox/.test(navigator.userAgent.toLowerCase());\n\nvar LevelController = /*#__PURE__*/function (_BasePlaylistControll) {\n _inheritsLoose(LevelController, _BasePlaylistControll);\n\n function LevelController(hls) {\n var _this;\n\n _this = _BasePlaylistControll.call(this, hls, '[level-controller]') || this;\n _this._levels = [];\n _this._firstLevel = -1;\n _this._startLevel = void 0;\n _this.currentLevelIndex = -1;\n _this.manualLevelIndex = -1;\n _this.onParsedComplete = void 0;\n\n _this._registerListeners();\n\n return _this;\n }\n\n var _proto = LevelController.prototype;\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.destroy = function destroy() {\n this._unregisterListeners();\n\n this.manualLevelIndex = -1;\n this._levels.length = 0;\n\n _BasePlaylistControll.prototype.destroy.call(this);\n };\n\n _proto.startLoad = function startLoad() {\n var levels = this._levels; // clean up live level details to force reload them, and reset load errors\n\n levels.forEach(function (level) {\n level.loadError = 0;\n });\n\n _BasePlaylistControll.prototype.startLoad.call(this);\n };\n\n _proto.onManifestLoaded = function onManifestLoaded(event, data) {\n var levels = [];\n var audioTracks = [];\n var subtitleTracks = [];\n var bitrateStart;\n var levelSet = {};\n var levelFromSet;\n var resolutionFound = false;\n var videoCodecFound = false;\n var audioCodecFound = false; // regroup redundant levels together\n\n data.levels.forEach(function (levelParsed) {\n var attributes = levelParsed.attrs;\n resolutionFound = resolutionFound || !!(levelParsed.width && levelParsed.height);\n videoCodecFound = videoCodecFound || !!levelParsed.videoCodec;\n audioCodecFound = audioCodecFound || !!levelParsed.audioCodec; // erase audio codec info if browser does not support mp4a.40.34.\n // demuxer will autodetect codec and fallback to mpeg/audio\n\n if (chromeOrFirefox && levelParsed.audioCodec && levelParsed.audioCodec.indexOf('mp4a.40.34') !== -1) {\n levelParsed.audioCodec = undefined;\n }\n\n var levelKey = levelParsed.bitrate + \"-\" + levelParsed.attrs.RESOLUTION + \"-\" + levelParsed.attrs.CODECS;\n levelFromSet = levelSet[levelKey];\n\n if (!levelFromSet) {\n levelFromSet = new _types_level__WEBPACK_IMPORTED_MODULE_0__[\"Level\"](levelParsed);\n levelSet[levelKey] = levelFromSet;\n levels.push(levelFromSet);\n } else {\n levelFromSet.url.push(levelParsed.url);\n }\n\n if (attributes) {\n if (attributes.AUDIO) {\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"addGroupId\"])(levelFromSet, 'audio', attributes.AUDIO);\n }\n\n if (attributes.SUBTITLES) {\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"addGroupId\"])(levelFromSet, 'text', attributes.SUBTITLES);\n }\n }\n }); // remove audio-only level if we also have levels with video codecs or RESOLUTION signalled\n\n if ((resolutionFound || videoCodecFound) && audioCodecFound) {\n levels = levels.filter(function (_ref) {\n var videoCodec = _ref.videoCodec,\n width = _ref.width,\n height = _ref.height;\n return !!videoCodec || !!(width && height);\n });\n } // only keep levels with supported audio/video codecs\n\n\n levels = levels.filter(function (_ref2) {\n var audioCodec = _ref2.audioCodec,\n videoCodec = _ref2.videoCodec;\n return (!audioCodec || Object(_utils_codecs__WEBPACK_IMPORTED_MODULE_3__[\"isCodecSupportedInMp4\"])(audioCodec, 'audio')) && (!videoCodec || Object(_utils_codecs__WEBPACK_IMPORTED_MODULE_3__[\"isCodecSupportedInMp4\"])(videoCodec, 'video'));\n });\n\n if (data.audioTracks) {\n audioTracks = data.audioTracks.filter(function (track) {\n return !track.audioCodec || Object(_utils_codecs__WEBPACK_IMPORTED_MODULE_3__[\"isCodecSupportedInMp4\"])(track.audioCodec, 'audio');\n }); // Assign ids after filtering as array indices by group-id\n\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"assignTrackIdsByGroup\"])(audioTracks);\n }\n\n if (data.subtitles) {\n subtitleTracks = data.subtitles;\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"assignTrackIdsByGroup\"])(subtitleTracks);\n }\n\n if (levels.length > 0) {\n // start bitrate is the first bitrate of the manifest\n bitrateStart = levels[0].bitrate; // sort level on bitrate\n\n levels.sort(function (a, b) {\n return a.bitrate - b.bitrate;\n });\n this._levels = levels; // find index of first level in sorted levels\n\n for (var i = 0; i < levels.length; i++) {\n if (levels[i].bitrate === bitrateStart) {\n this._firstLevel = i;\n this.log(\"manifest loaded, \" + levels.length + \" level(s) found, first bitrate: \" + bitrateStart);\n break;\n }\n } // Audio is only alternate if manifest include a URI along with the audio group tag,\n // and this is not an audio-only stream where levels contain audio-only\n\n\n var audioOnly = audioCodecFound && !videoCodecFound;\n var edata = {\n levels: levels,\n audioTracks: audioTracks,\n subtitleTracks: subtitleTracks,\n firstLevel: this._firstLevel,\n stats: data.stats,\n audio: audioCodecFound,\n video: videoCodecFound,\n altAudio: !audioOnly && audioTracks.some(function (t) {\n return !!t.url;\n })\n };\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_PARSED, edata); // Initiate loading after all controllers have received MANIFEST_PARSED\n\n if (this.hls.config.autoStartLoad || this.hls.forceStartLoad) {\n this.hls.startLoad(this.hls.config.startPosition);\n }\n } else {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].MANIFEST_INCOMPATIBLE_CODECS_ERROR,\n fatal: true,\n url: data.url,\n reason: 'no level with compatible codecs found in manifest'\n });\n }\n };\n\n _proto.onError = function onError(event, data) {\n var _data$level;\n\n _BasePlaylistControll.prototype.onError.call(this, event, data);\n\n if (data.fatal) {\n return;\n } // Switch to redundant level when track fails to load\n\n\n var context = data.context;\n var level = this._levels[this.currentLevelIndex];\n\n if (context && (context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK && level.audioGroupIds && context.groupId === level.audioGroupIds[level.urlId] || context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK && level.textGroupIds && context.groupId === level.textGroupIds[level.urlId])) {\n this.redundantFailover(this.currentLevelIndex);\n return;\n }\n\n var levelError = false;\n var levelSwitch = true;\n var levelIndex; // try to recover not fatal errors\n\n switch (data.details) {\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].FRAG_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT:\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].KEY_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].KEY_LOAD_TIMEOUT:\n if (data.frag) {\n // Share fragment error count accross media options (main, audio, subs)\n // This allows for level based rendition switching when media option assets fail\n var variantLevelIndex = data.frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN ? data.frag.level : this.currentLevelIndex;\n var _level = this._levels[variantLevelIndex]; // Set levelIndex when we're out of fragment retries\n\n if (_level) {\n _level.fragmentError++;\n\n if (_level.fragmentError > this.hls.config.fragLoadingMaxRetry) {\n levelIndex = variantLevelIndex;\n }\n } else {\n levelIndex = variantLevelIndex;\n }\n }\n\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_LOAD_TIMEOUT:\n // Do not perform level switch if an error occurred using delivery directives\n // Attempt to reload level without directives first\n if (context) {\n if (context.deliveryDirectives) {\n levelSwitch = false;\n }\n\n levelIndex = context.level;\n }\n\n levelError = true;\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].REMUX_ALLOC_ERROR:\n levelIndex = (_data$level = data.level) != null ? _data$level : this.currentLevelIndex;\n levelError = true;\n break;\n }\n\n if (levelIndex !== undefined) {\n this.recoverLevel(data, levelIndex, levelError, levelSwitch);\n }\n }\n /**\n * Switch to a redundant stream if any available.\n * If redundant stream is not available, emergency switch down if ABR mode is enabled.\n */\n ;\n\n _proto.recoverLevel = function recoverLevel(errorEvent, levelIndex, levelError, levelSwitch) {\n var errorDetails = errorEvent.details;\n var level = this._levels[levelIndex];\n level.loadError++;\n\n if (levelError) {\n var retrying = this.retryLoadingOrFail(errorEvent);\n\n if (retrying) {\n // boolean used to inform stream controller not to switch back to IDLE on non fatal error\n errorEvent.levelRetry = true;\n } else {\n this.currentLevelIndex = -1;\n return;\n }\n }\n\n if (levelSwitch) {\n var redundantLevels = level.url.length; // Try redundant fail-over until level.loadError reaches redundantLevels\n\n if (redundantLevels > 1 && level.loadError < redundantLevels) {\n errorEvent.levelRetry = true;\n this.redundantFailover(levelIndex);\n } else if (this.manualLevelIndex === -1) {\n // Search for next level to retry\n var nextLevel = -1;\n var levels = this._levels;\n\n for (var i = levels.length; i--;) {\n var candidate = (i + this.currentLevelIndex) % levels.length;\n\n if (candidate !== this.currentLevelIndex && levels[candidate].loadError === 0) {\n nextLevel = candidate;\n break;\n }\n }\n\n if (nextLevel > -1 && this.currentLevelIndex !== nextLevel) {\n this.warn(errorDetails + \": switch to \" + nextLevel);\n errorEvent.levelRetry = true;\n this.hls.nextAutoLevel = nextLevel;\n }\n }\n }\n };\n\n _proto.redundantFailover = function redundantFailover(levelIndex) {\n var level = this._levels[levelIndex];\n var redundantLevels = level.url.length;\n\n if (redundantLevels > 1) {\n // Update the url id of all levels so that we stay on the same set of variants when level switching\n var newUrlId = (level.urlId + 1) % redundantLevels;\n this.warn(\"Switching to redundant URL-id \" + newUrlId);\n\n this._levels.forEach(function (level) {\n level.urlId = newUrlId;\n });\n\n this.level = levelIndex;\n }\n } // reset errors on the successful load of a fragment\n ;\n\n _proto.onFragLoaded = function onFragLoaded(event, _ref3) {\n var frag = _ref3.frag;\n\n if (frag !== undefined && frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN) {\n var level = this._levels[frag.level];\n\n if (level !== undefined) {\n level.fragmentError = 0;\n level.loadError = 0;\n }\n }\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n var _data$deliveryDirecti2;\n\n var level = data.level,\n details = data.details;\n var curLevel = this._levels[level];\n\n if (!curLevel) {\n var _data$deliveryDirecti;\n\n this.warn(\"Invalid level index \" + level);\n\n if ((_data$deliveryDirecti = data.deliveryDirectives) !== null && _data$deliveryDirecti !== void 0 && _data$deliveryDirecti.skip) {\n details.deltaUpdateFailed = true;\n }\n\n return;\n } // only process level loaded events matching with expected level\n\n\n if (level === this.currentLevelIndex) {\n // reset level load error counter on successful level loaded only if there is no issues with fragments\n if (curLevel.fragmentError === 0) {\n curLevel.loadError = 0;\n this.retryCount = 0;\n }\n\n this.playlistLoaded(level, data, curLevel.details);\n } else if ((_data$deliveryDirecti2 = data.deliveryDirectives) !== null && _data$deliveryDirecti2 !== void 0 && _data$deliveryDirecti2.skip) {\n // received a delta playlist update that cannot be merged\n details.deltaUpdateFailed = true;\n }\n };\n\n _proto.onAudioTrackSwitched = function onAudioTrackSwitched(event, data) {\n var currentLevel = this.hls.levels[this.currentLevelIndex];\n\n if (!currentLevel) {\n return;\n }\n\n if (currentLevel.audioGroupIds) {\n var urlId = -1;\n var audioGroupId = this.hls.audioTracks[data.id].groupId;\n\n for (var i = 0; i < currentLevel.audioGroupIds.length; i++) {\n if (currentLevel.audioGroupIds[i] === audioGroupId) {\n urlId = i;\n break;\n }\n }\n\n if (urlId !== currentLevel.urlId) {\n currentLevel.urlId = urlId;\n this.startLoad();\n }\n }\n };\n\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {\n var level = this.currentLevelIndex;\n var currentLevel = this._levels[level];\n\n if (this.canLoad && currentLevel && currentLevel.url.length > 0) {\n var id = currentLevel.urlId;\n var url = currentLevel.url[id];\n\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(\"Could not construct new URL with HLS Delivery Directives: \" + error);\n }\n }\n\n this.log(\"Attempt loading level index \" + level + (hlsUrlParameters ? ' at sn ' + hlsUrlParameters.msn + ' part ' + hlsUrlParameters.part : '') + \" with URL-id \" + id + \" \" + url); // console.log('Current audio track group ID:', this.hls.audioTracks[this.hls.audioTrack].groupId);\n // console.log('New video quality level audio group id:', levelObject.attrs.AUDIO, level);\n\n this.clearTimer();\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADING, {\n url: url,\n level: level,\n id: id,\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n };\n\n _proto.removeLevel = function removeLevel(levelIndex, urlId) {\n var filterLevelAndGroupByIdIndex = function filterLevelAndGroupByIdIndex(url, id) {\n return id !== urlId;\n };\n\n var levels = this._levels.filter(function (level, index) {\n if (index !== levelIndex) {\n return true;\n }\n\n if (level.url.length > 1 && urlId !== undefined) {\n level.url = level.url.filter(filterLevelAndGroupByIdIndex);\n\n if (level.audioGroupIds) {\n level.audioGroupIds = level.audioGroupIds.filter(filterLevelAndGroupByIdIndex);\n }\n\n if (level.textGroupIds) {\n level.textGroupIds = level.textGroupIds.filter(filterLevelAndGroupByIdIndex);\n }\n\n level.urlId = 0;\n return true;\n }\n\n return false;\n }).map(function (level, index) {\n var details = level.details;\n\n if (details !== null && details !== void 0 && details.fragments) {\n details.fragments.forEach(function (fragment) {\n fragment.level = index;\n });\n }\n\n return level;\n });\n\n this._levels = levels;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVELS_UPDATED, {\n levels: levels\n });\n };\n\n _createClass(LevelController, [{\n key: \"levels\",\n get: function get() {\n if (this._levels.length === 0) {\n return null;\n }\n\n return this._levels;\n }\n }, {\n key: \"level\",\n get: function get() {\n return this.currentLevelIndex;\n },\n set: function set(newLevel) {\n var _levels$newLevel;\n\n var levels = this._levels;\n\n if (levels.length === 0) {\n return;\n }\n\n if (this.currentLevelIndex === newLevel && (_levels$newLevel = levels[newLevel]) !== null && _levels$newLevel !== void 0 && _levels$newLevel.details) {\n return;\n } // check if level idx is valid\n\n\n if (newLevel < 0 || newLevel >= levels.length) {\n // invalid level id given, trigger error\n var fatal = newLevel < 0;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].OTHER_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_SWITCH_ERROR,\n level: newLevel,\n fatal: fatal,\n reason: 'invalid level idx'\n });\n\n if (fatal) {\n return;\n }\n\n newLevel = Math.min(newLevel, levels.length - 1);\n } // stopping live reloading timer if any\n\n\n this.clearTimer();\n var lastLevelIndex = this.currentLevelIndex;\n var lastLevel = levels[lastLevelIndex];\n var level = levels[newLevel];\n this.log(\"switching to level \" + newLevel + \" from \" + lastLevelIndex);\n this.currentLevelIndex = newLevel;\n\n var levelSwitchingData = _extends({}, level, {\n level: newLevel,\n maxBitrate: level.maxBitrate,\n uri: level.uri,\n urlId: level.urlId\n }); // @ts-ignore\n\n\n delete levelSwitchingData._urlId;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_SWITCHING, levelSwitchingData); // check if we need to load playlist for this level\n\n var levelDetails = level.details;\n\n if (!levelDetails || levelDetails.live) {\n // level not retrieved yet, or live playlist we need to (re)load it\n var hlsUrlParameters = this.switchParams(level.uri, lastLevel === null || lastLevel === void 0 ? void 0 : lastLevel.details);\n this.loadPlaylist(hlsUrlParameters);\n }\n }\n }, {\n key: \"manualLevel\",\n get: function get() {\n return this.manualLevelIndex;\n },\n set: function set(newLevel) {\n this.manualLevelIndex = newLevel;\n\n if (this._startLevel === undefined) {\n this._startLevel = newLevel;\n }\n\n if (newLevel !== -1) {\n this.level = newLevel;\n }\n }\n }, {\n key: \"firstLevel\",\n get: function get() {\n return this._firstLevel;\n },\n set: function set(newLevel) {\n this._firstLevel = newLevel;\n }\n }, {\n key: \"startLevel\",\n get: function get() {\n // hls.startLevel takes precedence over config.startLevel\n // if none of these values are defined, fallback on this._firstLevel (first quality level appearing in variant manifest)\n if (this._startLevel === undefined) {\n var configStartLevel = this.hls.config.startLevel;\n\n if (configStartLevel !== undefined) {\n return configStartLevel;\n } else {\n return this._firstLevel;\n }\n } else {\n return this._startLevel;\n }\n },\n set: function set(newLevel) {\n this._startLevel = newLevel;\n }\n }, {\n key: \"nextLoadLevel\",\n get: function get() {\n if (this.manualLevelIndex !== -1) {\n return this.manualLevelIndex;\n } else {\n return this.hls.nextAutoLevel;\n }\n },\n set: function set(nextLevel) {\n this.level = nextLevel;\n\n if (this.manualLevelIndex === -1) {\n this.hls.nextAutoLevel = nextLevel;\n }\n }\n }]);\n\n return LevelController;\n}(_base_playlist_controller__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/level-helper.ts\":\n/*!****************************************!*\\\n !*** ./src/controller/level-helper.ts ***!\n \\****************************************/\n/*! exports provided: addGroupId, assignTrackIdsByGroup, updatePTS, updateFragPTSDTS, mergeDetails, mapPartIntersection, mapFragmentIntersection, adjustSliding, addSliding, computeReloadInterval, getFragmentWithSN, getPartWith */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addGroupId\", function() { return addGroupId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assignTrackIdsByGroup\", function() { return assignTrackIdsByGroup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updatePTS\", function() { return updatePTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateFragPTSDTS\", function() { return updateFragPTSDTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeDetails\", function() { return mergeDetails; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapPartIntersection\", function() { return mapPartIntersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapFragmentIntersection\", function() { return mapFragmentIntersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"adjustSliding\", function() { return adjustSliding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addSliding\", function() { return addSliding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"computeReloadInterval\", function() { return computeReloadInterval; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFragmentWithSN\", function() { return getFragmentWithSN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPartWith\", function() { return getPartWith; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _loader_date_range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../loader/date-range */ \"./src/loader/date-range.ts\");\n\n\n\n\n\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\n * @module LevelHelper\n * Providing methods dealing with playlist sliding and drift\n * */\n\n\nfunction addGroupId(level, type, id) {\n switch (type) {\n case 'audio':\n if (!level.audioGroupIds) {\n level.audioGroupIds = [];\n }\n\n level.audioGroupIds.push(id);\n break;\n\n case 'text':\n if (!level.textGroupIds) {\n level.textGroupIds = [];\n }\n\n level.textGroupIds.push(id);\n break;\n }\n}\nfunction assignTrackIdsByGroup(tracks) {\n var groups = {};\n tracks.forEach(function (track) {\n var groupId = track.groupId || '';\n track.id = groups[groupId] = groups[groupId] || 0;\n groups[groupId]++;\n });\n}\nfunction updatePTS(fragments, fromIdx, toIdx) {\n var fragFrom = fragments[fromIdx];\n var fragTo = fragments[toIdx];\n updateFromToPTS(fragFrom, fragTo);\n}\n\nfunction updateFromToPTS(fragFrom, fragTo) {\n var fragToPTS = fragTo.startPTS; // if we know startPTS[toIdx]\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(fragToPTS)) {\n // update fragment duration.\n // it helps to fix drifts between playlist reported duration and fragment real duration\n var duration = 0;\n var frag;\n\n if (fragTo.sn > fragFrom.sn) {\n duration = fragToPTS - fragFrom.start;\n frag = fragFrom;\n } else {\n duration = fragFrom.start - fragToPTS;\n frag = fragTo;\n } // TODO? Drift can go either way, or the playlist could be completely accurate\n // console.assert(duration > 0,\n // `duration of ${duration} computed for frag ${frag.sn}, level ${frag.level}, there should be some duration drift between playlist and fragment!`);\n\n\n if (frag.duration !== duration) {\n frag.duration = duration;\n } // we dont know startPTS[toIdx]\n\n } else if (fragTo.sn > fragFrom.sn) {\n var contiguous = fragFrom.cc === fragTo.cc; // TODO: With part-loading end/durations we need to confirm the whole fragment is loaded before using (or setting) minEndPTS\n\n if (contiguous && fragFrom.minEndPTS) {\n fragTo.start = fragFrom.start + (fragFrom.minEndPTS - fragFrom.start);\n } else {\n fragTo.start = fragFrom.start + fragFrom.duration;\n }\n } else {\n fragTo.start = Math.max(fragFrom.start - fragTo.duration, 0);\n }\n}\n\nfunction updateFragPTSDTS(details, frag, startPTS, endPTS, startDTS, endDTS) {\n var parsedMediaDuration = endPTS - startPTS;\n\n if (parsedMediaDuration <= 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn('Fragment should have a positive duration', frag);\n endPTS = startPTS + frag.duration;\n endDTS = startDTS + frag.duration;\n }\n\n var maxStartPTS = startPTS;\n var minEndPTS = endPTS;\n var fragStartPts = frag.startPTS;\n var fragEndPts = frag.endPTS;\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(fragStartPts)) {\n // delta PTS between audio and video\n var deltaPTS = Math.abs(fragStartPts - startPTS);\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.deltaPTS)) {\n frag.deltaPTS = deltaPTS;\n } else {\n frag.deltaPTS = Math.max(deltaPTS, frag.deltaPTS);\n }\n\n maxStartPTS = Math.max(startPTS, fragStartPts);\n startPTS = Math.min(startPTS, fragStartPts);\n startDTS = Math.min(startDTS, frag.startDTS);\n minEndPTS = Math.min(endPTS, fragEndPts);\n endPTS = Math.max(endPTS, fragEndPts);\n endDTS = Math.max(endDTS, frag.endDTS);\n }\n\n frag.duration = endPTS - startPTS;\n var drift = startPTS - frag.start;\n frag.appendedPTS = endPTS;\n frag.start = frag.startPTS = startPTS;\n frag.maxStartPTS = maxStartPTS;\n frag.startDTS = startDTS;\n frag.endPTS = endPTS;\n frag.minEndPTS = minEndPTS;\n frag.endDTS = endDTS;\n var sn = frag.sn; // 'initSegment'\n // exit if sn out of range\n\n if (!details || sn < details.startSN || sn > details.endSN) {\n return 0;\n }\n\n var i;\n var fragIdx = sn - details.startSN;\n var fragments = details.fragments; // update frag reference in fragments array\n // rationale is that fragments array might not contain this frag object.\n // this will happen if playlist has been refreshed between frag loading and call to updateFragPTSDTS()\n // if we don't update frag, we won't be able to propagate PTS info on the playlist\n // resulting in invalid sliding computation\n\n fragments[fragIdx] = frag; // adjust fragment PTS/duration from seqnum-1 to frag 0\n\n for (i = fragIdx; i > 0; i--) {\n updateFromToPTS(fragments[i], fragments[i - 1]);\n } // adjust fragment PTS/duration from seqnum to last frag\n\n\n for (i = fragIdx; i < fragments.length - 1; i++) {\n updateFromToPTS(fragments[i], fragments[i + 1]);\n }\n\n if (details.fragmentHint) {\n updateFromToPTS(fragments[fragments.length - 1], details.fragmentHint);\n }\n\n details.PTSKnown = details.alignedSliding = true;\n return drift;\n}\nfunction mergeDetails(oldDetails, newDetails) {\n // Track the last initSegment processed. Initialize it to the last one on the timeline.\n var currentInitSegment = null;\n var oldFragments = oldDetails.fragments;\n\n for (var i = oldFragments.length - 1; i >= 0; i--) {\n var oldInit = oldFragments[i].initSegment;\n\n if (oldInit) {\n currentInitSegment = oldInit;\n break;\n }\n }\n\n if (oldDetails.fragmentHint) {\n // prevent PTS and duration from being adjusted on the next hint\n delete oldDetails.fragmentHint.endPTS;\n } // check if old/new playlists have fragments in common\n // loop through overlapping SN and update startPTS , cc, and duration if any found\n\n\n var ccOffset = 0;\n var PTSFrag;\n mapFragmentIntersection(oldDetails, newDetails, function (oldFrag, newFrag) {\n if (oldFrag.relurl) {\n // Do not compare CC if the old fragment has no url. This is a level.fragmentHint used by LL-HLS parts.\n // It maybe be off by 1 if it was created before any parts or discontinuity tags were appended to the end\n // of the playlist.\n ccOffset = oldFrag.cc - newFrag.cc;\n }\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(oldFrag.startPTS) && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(oldFrag.endPTS)) {\n newFrag.start = newFrag.startPTS = oldFrag.startPTS;\n newFrag.startDTS = oldFrag.startDTS;\n newFrag.appendedPTS = oldFrag.appendedPTS;\n newFrag.maxStartPTS = oldFrag.maxStartPTS;\n newFrag.endPTS = oldFrag.endPTS;\n newFrag.endDTS = oldFrag.endDTS;\n newFrag.minEndPTS = oldFrag.minEndPTS;\n newFrag.duration = oldFrag.endPTS - oldFrag.startPTS;\n\n if (newFrag.duration) {\n PTSFrag = newFrag;\n } // PTS is known when any segment has startPTS and endPTS\n\n\n newDetails.PTSKnown = newDetails.alignedSliding = true;\n }\n\n newFrag.elementaryStreams = oldFrag.elementaryStreams;\n newFrag.loader = oldFrag.loader;\n newFrag.stats = oldFrag.stats;\n newFrag.urlId = oldFrag.urlId;\n\n if (oldFrag.initSegment) {\n newFrag.initSegment = oldFrag.initSegment;\n currentInitSegment = oldFrag.initSegment;\n }\n });\n\n if (currentInitSegment) {\n var fragmentsToCheck = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments;\n fragmentsToCheck.forEach(function (frag) {\n var _currentInitSegment;\n\n if (!frag.initSegment || frag.initSegment.relurl === ((_currentInitSegment = currentInitSegment) === null || _currentInitSegment === void 0 ? void 0 : _currentInitSegment.relurl)) {\n frag.initSegment = currentInitSegment;\n }\n });\n }\n\n if (newDetails.skippedSegments) {\n newDetails.deltaUpdateFailed = newDetails.fragments.some(function (frag) {\n return !frag;\n });\n\n if (newDetails.deltaUpdateFailed) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn('[level-helper] Previous playlist missing segments skipped in delta playlist');\n\n for (var _i = newDetails.skippedSegments; _i--;) {\n newDetails.fragments.shift();\n }\n\n newDetails.startSN = newDetails.fragments[0].sn;\n newDetails.startCC = newDetails.fragments[0].cc;\n } else if (newDetails.canSkipDateRanges) {\n newDetails.dateRanges = mergeDateRanges(oldDetails.dateRanges, newDetails.dateRanges, newDetails.recentlyRemovedDateranges);\n }\n }\n\n var newFragments = newDetails.fragments;\n\n if (ccOffset) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn('discontinuity sliding from playlist, take drift into account');\n\n for (var _i2 = 0; _i2 < newFragments.length; _i2++) {\n newFragments[_i2].cc += ccOffset;\n }\n }\n\n if (newDetails.skippedSegments) {\n newDetails.startCC = newDetails.fragments[0].cc;\n } // Merge parts\n\n\n mapPartIntersection(oldDetails.partList, newDetails.partList, function (oldPart, newPart) {\n newPart.elementaryStreams = oldPart.elementaryStreams;\n newPart.stats = oldPart.stats;\n }); // if at least one fragment contains PTS info, recompute PTS information for all fragments\n\n if (PTSFrag) {\n updateFragPTSDTS(newDetails, PTSFrag, PTSFrag.startPTS, PTSFrag.endPTS, PTSFrag.startDTS, PTSFrag.endDTS);\n } else {\n // ensure that delta is within oldFragments range\n // also adjust sliding in case delta is 0 (we could have old=[50-60] and new=old=[50-61])\n // in that case we also need to adjust start offset of all fragments\n adjustSliding(oldDetails, newDetails);\n }\n\n if (newFragments.length) {\n newDetails.totalduration = newDetails.edge - newFragments[0].start;\n }\n\n newDetails.driftStartTime = oldDetails.driftStartTime;\n newDetails.driftStart = oldDetails.driftStart;\n var advancedDateTime = newDetails.advancedDateTime;\n\n if (newDetails.advanced && advancedDateTime) {\n var edge = newDetails.edge;\n\n if (!newDetails.driftStart) {\n newDetails.driftStartTime = advancedDateTime;\n newDetails.driftStart = edge;\n }\n\n newDetails.driftEndTime = advancedDateTime;\n newDetails.driftEnd = edge;\n } else {\n newDetails.driftEndTime = oldDetails.driftEndTime;\n newDetails.driftEnd = oldDetails.driftEnd;\n newDetails.advancedDateTime = oldDetails.advancedDateTime;\n }\n}\n\nfunction mergeDateRanges(oldDateRanges, deltaDateRanges, recentlyRemovedDateranges) {\n var dateRanges = _extends({}, oldDateRanges);\n\n if (recentlyRemovedDateranges) {\n recentlyRemovedDateranges.forEach(function (id) {\n delete dateRanges[id];\n });\n }\n\n Object.keys(deltaDateRanges).forEach(function (id) {\n var dateRange = new _loader_date_range__WEBPACK_IMPORTED_MODULE_2__[\"DateRange\"](deltaDateRanges[id].attr, dateRanges[id]);\n\n if (dateRange.isValid) {\n dateRanges[id] = dateRange;\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].warn(\"Ignoring invalid Playlist Delta Update DATERANGE tag: \\\"\" + JSON.stringify(deltaDateRanges[id].attr) + \"\\\"\");\n }\n });\n return dateRanges;\n}\n\nfunction mapPartIntersection(oldParts, newParts, intersectionFn) {\n if (oldParts && newParts) {\n var delta = 0;\n\n for (var i = 0, len = oldParts.length; i <= len; i++) {\n var _oldPart = oldParts[i];\n var _newPart = newParts[i + delta];\n\n if (_oldPart && _newPart && _oldPart.index === _newPart.index && _oldPart.fragment.sn === _newPart.fragment.sn) {\n intersectionFn(_oldPart, _newPart);\n } else {\n delta--;\n }\n }\n }\n}\nfunction mapFragmentIntersection(oldDetails, newDetails, intersectionFn) {\n var skippedSegments = newDetails.skippedSegments;\n var start = Math.max(oldDetails.startSN, newDetails.startSN) - newDetails.startSN;\n var end = (oldDetails.fragmentHint ? 1 : 0) + (skippedSegments ? newDetails.endSN : Math.min(oldDetails.endSN, newDetails.endSN)) - newDetails.startSN;\n var delta = newDetails.startSN - oldDetails.startSN;\n var newFrags = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments;\n var oldFrags = oldDetails.fragmentHint ? oldDetails.fragments.concat(oldDetails.fragmentHint) : oldDetails.fragments;\n\n for (var i = start; i <= end; i++) {\n var _oldFrag = oldFrags[delta + i];\n var _newFrag = newFrags[i];\n\n if (skippedSegments && !_newFrag && i < skippedSegments) {\n // Fill in skipped segments in delta playlist\n _newFrag = newDetails.fragments[i] = _oldFrag;\n }\n\n if (_oldFrag && _newFrag) {\n intersectionFn(_oldFrag, _newFrag);\n }\n }\n}\nfunction adjustSliding(oldDetails, newDetails) {\n var delta = newDetails.startSN + newDetails.skippedSegments - oldDetails.startSN;\n var oldFragments = oldDetails.fragments;\n\n if (delta < 0 || delta >= oldFragments.length) {\n return;\n }\n\n addSliding(newDetails, oldFragments[delta].start);\n}\nfunction addSliding(details, start) {\n if (start) {\n var fragments = details.fragments;\n\n for (var i = details.skippedSegments; i < fragments.length; i++) {\n fragments[i].start += start;\n }\n\n if (details.fragmentHint) {\n details.fragmentHint.start += start;\n }\n }\n}\nfunction computeReloadInterval(newDetails, stats) {\n var reloadInterval = 1000 * newDetails.levelTargetDuration;\n var reloadIntervalAfterMiss = reloadInterval / 2;\n var timeSinceLastModified = newDetails.age;\n var useLastModified = timeSinceLastModified > 0 && timeSinceLastModified < reloadInterval * 3;\n var roundTrip = stats.loading.end - stats.loading.start;\n var estimatedTimeUntilUpdate;\n var availabilityDelay = newDetails.availabilityDelay; // let estimate = 'average';\n\n if (newDetails.updated === false) {\n if (useLastModified) {\n // estimate = 'miss round trip';\n // We should have had a hit so try again in the time it takes to get a response,\n // but no less than 1/3 second.\n var minRetry = 333 * newDetails.misses;\n estimatedTimeUntilUpdate = Math.max(Math.min(reloadIntervalAfterMiss, roundTrip * 2), minRetry);\n newDetails.availabilityDelay = (newDetails.availabilityDelay || 0) + estimatedTimeUntilUpdate;\n } else {\n // estimate = 'miss half average';\n // follow HLS Spec, If the client reloads a Playlist file and finds that it has not\n // changed then it MUST wait for a period of one-half the target\n // duration before retrying.\n estimatedTimeUntilUpdate = reloadIntervalAfterMiss;\n }\n } else if (useLastModified) {\n // estimate = 'next modified date';\n // Get the closest we've been to timeSinceLastModified on update\n availabilityDelay = Math.min(availabilityDelay || reloadInterval / 2, timeSinceLastModified);\n newDetails.availabilityDelay = availabilityDelay;\n estimatedTimeUntilUpdate = availabilityDelay + reloadInterval - timeSinceLastModified;\n } else {\n estimatedTimeUntilUpdate = reloadInterval - roundTrip;\n } // console.log(`[computeReloadInterval] live reload ${newDetails.updated ? 'REFRESHED' : 'MISSED'}`,\n // '\\n method', estimate,\n // '\\n estimated time until update =>', estimatedTimeUntilUpdate,\n // '\\n average target duration', reloadInterval,\n // '\\n time since modified', timeSinceLastModified,\n // '\\n time round trip', roundTrip,\n // '\\n availability delay', availabilityDelay);\n\n\n return Math.round(estimatedTimeUntilUpdate);\n}\nfunction getFragmentWithSN(level, sn, fragCurrent) {\n if (!level || !level.details) {\n return null;\n }\n\n var levelDetails = level.details;\n var fragment = levelDetails.fragments[sn - levelDetails.startSN];\n\n if (fragment) {\n return fragment;\n }\n\n fragment = levelDetails.fragmentHint;\n\n if (fragment && fragment.sn === sn) {\n return fragment;\n }\n\n if (sn < levelDetails.startSN && fragCurrent && fragCurrent.sn === sn) {\n return fragCurrent;\n }\n\n return null;\n}\nfunction getPartWith(level, sn, partIndex) {\n if (!level || !level.details) {\n return null;\n }\n\n var partList = level.details.partList;\n\n if (partList) {\n for (var i = partList.length; i--;) {\n var part = partList[i];\n\n if (part.index === partIndex && part.fragment.sn === sn) {\n return part;\n }\n }\n }\n\n return null;\n}\n\n/***/ }),\n\n/***/ \"./src/controller/stream-controller.ts\":\n/*!*********************************************!*\\\n !*** ./src/controller/stream-controller.ts ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return StreamController; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base-stream-controller */ \"./src/controller/base-stream-controller.ts\");\n/* harmony import */ var _is_supported__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../is-supported */ \"./src/is-supported.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./fragment-tracker */ \"./src/controller/fragment-tracker.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _loader_fragment__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../loader/fragment */ \"./src/loader/fragment.ts\");\n/* harmony import */ var _demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../demux/transmuxer-interface */ \"./src/demux/transmuxer-interface.ts\");\n/* harmony import */ var _types_transmuxer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../types/transmuxer */ \"./src/types/transmuxer.ts\");\n/* harmony import */ var _gap_controller__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./gap-controller */ \"./src/controller/gap-controller.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n\n\n\n\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\nvar TICK_INTERVAL = 100; // how often to tick in ms\n\nvar StreamController = /*#__PURE__*/function (_BaseStreamController) {\n _inheritsLoose(StreamController, _BaseStreamController);\n\n function StreamController(hls, fragmentTracker) {\n var _this;\n\n _this = _BaseStreamController.call(this, hls, fragmentTracker, '[stream-controller]') || this;\n _this.audioCodecSwap = false;\n _this.gapController = null;\n _this.level = -1;\n _this._forceStartLoad = false;\n _this.altAudio = false;\n _this.audioOnly = false;\n _this.fragPlaying = null;\n _this.onvplaying = null;\n _this.onvseeked = null;\n _this.fragLastKbps = 0;\n _this.couldBacktrack = false;\n _this.backtrackFragment = null;\n _this.audioCodecSwitch = false;\n _this.videoBuffer = null;\n\n _this._registerListeners();\n\n return _this;\n }\n\n var _proto = StreamController.prototype;\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, this.onError, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, this.onError, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_CREATED, this.onBufferCreated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_BUFFERED, this.onFragBuffered, this);\n };\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this._unregisterListeners();\n\n this.onMediaDetaching();\n };\n\n _proto.startLoad = function startLoad(startPosition) {\n if (this.levels) {\n var lastCurrentTime = this.lastCurrentTime,\n hls = this.hls;\n this.stopLoad();\n this.setInterval(TICK_INTERVAL);\n this.level = -1;\n this.fragLoadError = 0;\n\n if (!this.startFragRequested) {\n // determine load level\n var startLevel = hls.startLevel;\n\n if (startLevel === -1) {\n if (hls.config.testBandwidth && this.levels.length > 1) {\n // -1 : guess start Level by doing a bitrate test by loading first fragment of lowest quality level\n startLevel = 0;\n this.bitrateTest = true;\n } else {\n startLevel = hls.nextAutoLevel;\n }\n } // set new level to playlist loader : this will trigger start level load\n // hls.nextLoadLevel remains until it is set to a new value or until a new frag is successfully loaded\n\n\n this.level = hls.nextLoadLevel = startLevel;\n this.loadedmetadata = false;\n } // if startPosition undefined but lastCurrentTime set, set startPosition to last currentTime\n\n\n if (lastCurrentTime > 0 && startPosition === -1) {\n this.log(\"Override startPosition with lastCurrentTime @\" + lastCurrentTime.toFixed(3));\n startPosition = lastCurrentTime;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n this.tick();\n } else {\n this._forceStartLoad = true;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].STOPPED;\n }\n };\n\n _proto.stopLoad = function stopLoad() {\n this._forceStartLoad = false;\n\n _BaseStreamController.prototype.stopLoad.call(this);\n };\n\n _proto.doTick = function doTick() {\n switch (this.state) {\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE:\n this.doTickIdle();\n break;\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL:\n {\n var _levels$level;\n\n var levels = this.levels,\n level = this.level;\n var details = levels === null || levels === void 0 ? void 0 : (_levels$level = levels[level]) === null || _levels$level === void 0 ? void 0 : _levels$level.details;\n\n if (details && (!details.live || this.levelLastLoaded === this.level)) {\n if (this.waitForCdnTuneIn(details)) {\n break;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n break;\n }\n\n break;\n }\n\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING_WAITING_RETRY:\n {\n var _this$media;\n\n var now = self.performance.now();\n var retryDate = this.retryDate; // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n\n if (!retryDate || now >= retryDate || (_this$media = this.media) !== null && _this$media !== void 0 && _this$media.seeking) {\n this.log('retryDate reached, switch back to IDLE state');\n this.resetStartWhenNotLoaded(this.level);\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n }\n break;\n\n default:\n break;\n } // check buffer\n // check/update current fragment\n\n\n this.onTickEnd();\n };\n\n _proto.onTickEnd = function onTickEnd() {\n _BaseStreamController.prototype.onTickEnd.call(this);\n\n this.checkBuffer();\n this.checkFragmentChanged();\n };\n\n _proto.doTickIdle = function doTickIdle() {\n var _frag$decryptdata, _frag$decryptdata2;\n\n var hls = this.hls,\n levelLastLoaded = this.levelLastLoaded,\n levels = this.levels,\n media = this.media;\n var config = hls.config,\n level = hls.nextLoadLevel; // if start level not parsed yet OR\n // if video not attached AND start fragment already requested OR start frag prefetch not enabled\n // exit loop, as we either need more info (level not parsed) or we need media to be attached to load new fragment\n\n if (levelLastLoaded === null || !media && (this.startFragRequested || !config.startFragPrefetch)) {\n return;\n } // If the \"main\" level is audio-only but we are loading an alternate track in the same group, do not load anything\n\n\n if (this.altAudio && this.audioOnly) {\n return;\n }\n\n if (!levels || !levels[level]) {\n return;\n }\n\n var levelInfo = levels[level]; // if buffer length is less than maxBufLen try to load a new fragment\n // set next load level : this will trigger a playlist load if needed\n\n this.level = hls.nextLoadLevel = level;\n var levelDetails = levelInfo.details; // if level info not retrieved yet, switch state and wait for level retrieval\n // if live playlist, ensure that new playlist has been refreshed to avoid loading/try to load\n // a useless and outdated fragment (that might even introduce load error if it is already out of the live playlist)\n\n if (!levelDetails || this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL || levelDetails.live && this.levelLastLoaded !== level) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL;\n return;\n }\n\n var bufferInfo = this.getMainFwdBufferInfo();\n\n if (bufferInfo === null) {\n return;\n }\n\n var bufferLen = bufferInfo.len; // compute max Buffer Length that we could get from this load level, based on level bitrate. don't buffer more than 60 MB and more than 30s\n\n var maxBufLen = this.getMaxBufferLength(levelInfo.maxBitrate); // Stay idle if we are still with buffer margins\n\n if (bufferLen >= maxBufLen) {\n return;\n }\n\n if (this._streamEnded(bufferInfo, levelDetails)) {\n var data = {};\n\n if (this.altAudio) {\n data.type = 'video';\n }\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_EOS, data);\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ENDED;\n return;\n }\n\n if (this.backtrackFragment && this.backtrackFragment.start > bufferInfo.end) {\n this.backtrackFragment = null;\n }\n\n var targetBufferTime = this.backtrackFragment ? this.backtrackFragment.start : bufferInfo.end;\n var frag = this.getNextFragment(targetBufferTime, levelDetails); // Avoid backtracking by loading an earlier segment in streams with segments that do not start with a key frame (flagged by `couldBacktrack`)\n\n if (this.couldBacktrack && !this.fragPrevious && frag && frag.sn !== 'initSegment' && this.fragmentTracker.getState(frag) !== _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].OK) {\n var _this$backtrackFragme;\n\n var backtrackSn = ((_this$backtrackFragme = this.backtrackFragment) != null ? _this$backtrackFragme : frag).sn;\n var fragIdx = backtrackSn - levelDetails.startSN;\n var backtrackFrag = levelDetails.fragments[fragIdx - 1];\n\n if (backtrackFrag && frag.cc === backtrackFrag.cc) {\n frag = backtrackFrag;\n this.fragmentTracker.removeFragment(backtrackFrag);\n }\n } else if (this.backtrackFragment && bufferInfo.len) {\n this.backtrackFragment = null;\n } // Avoid loop loading by using nextLoadPosition set for backtracking\n\n\n if (frag && this.fragmentTracker.getState(frag) === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].OK && this.nextLoadPosition > targetBufferTime) {\n // Cleanup the fragment tracker before trying to find the next unbuffered fragment\n var type = this.audioOnly && !this.altAudio ? _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO : _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].VIDEO;\n\n if (media) {\n this.afterBufferFlushed(media, type, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n }\n\n frag = this.getNextFragment(this.nextLoadPosition, levelDetails);\n }\n\n if (!frag) {\n return;\n }\n\n if (frag.initSegment && !frag.initSegment.data && !this.bitrateTest) {\n frag = frag.initSegment;\n } // We want to load the key if we're dealing with an identity key, because we will decrypt\n // this content using the key we fetch. Other keys will be handled by the DRM CDM via EME.\n\n\n if (((_frag$decryptdata = frag.decryptdata) === null || _frag$decryptdata === void 0 ? void 0 : _frag$decryptdata.keyFormat) === 'identity' && !((_frag$decryptdata2 = frag.decryptdata) !== null && _frag$decryptdata2 !== void 0 && _frag$decryptdata2.key)) {\n this.loadKey(frag, levelDetails);\n } else {\n this.loadFragment(frag, levelDetails, targetBufferTime);\n }\n };\n\n _proto.loadFragment = function loadFragment(frag, levelDetails, targetBufferTime) {\n var _this$media2;\n\n // Check if fragment is not loaded\n var fragState = this.fragmentTracker.getState(frag);\n this.fragCurrent = frag;\n\n if (fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].NOT_LOADED) {\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag);\n } else if (this.bitrateTest) {\n this.log(\"Fragment \" + frag.sn + \" of level \" + frag.level + \" is being downloaded to test bitrate and will not be buffered\");\n\n this._loadBitrateTestFrag(frag);\n } else {\n this.startFragRequested = true;\n\n _BaseStreamController.prototype.loadFragment.call(this, frag, levelDetails, targetBufferTime);\n }\n } else if (fragState === _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].APPENDING) {\n // Lower the buffer size and try again\n if (this.reduceMaxBufferLength(frag.duration)) {\n this.fragmentTracker.removeFragment(frag);\n }\n } else if (((_this$media2 = this.media) === null || _this$media2 === void 0 ? void 0 : _this$media2.buffered.length) === 0) {\n // Stop gap for bad tracker / buffer flush behavior\n this.fragmentTracker.removeAllFragments();\n }\n };\n\n _proto.getAppendedFrag = function getAppendedFrag(position) {\n var fragOrPart = this.fragmentTracker.getAppendedFrag(position, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n\n if (fragOrPart && 'fragment' in fragOrPart) {\n return fragOrPart.fragment;\n }\n\n return fragOrPart;\n };\n\n _proto.getBufferedFrag = function getBufferedFrag(position) {\n return this.fragmentTracker.getBufferedFrag(position, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n };\n\n _proto.followingBufferedFrag = function followingBufferedFrag(frag) {\n if (frag) {\n // try to get range of next fragment (500ms after this range)\n return this.getBufferedFrag(frag.end + 0.5);\n }\n\n return null;\n }\n /*\n on immediate level switch :\n - pause playback if playing\n - cancel any pending load request\n - and trigger a buffer flush\n */\n ;\n\n _proto.immediateLevelSwitch = function immediateLevelSwitch() {\n this.abortCurrentFrag();\n this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n }\n /**\n * try to switch ASAP without breaking video playback:\n * in order to ensure smooth but quick level switching,\n * we need to find the next flushable buffer range\n * we should take into account new segment fetch time\n */\n ;\n\n _proto.nextLevelSwitch = function nextLevelSwitch() {\n var levels = this.levels,\n media = this.media; // ensure that media is defined and that metadata are available (to retrieve currentTime)\n\n if (media !== null && media !== void 0 && media.readyState) {\n var fetchdelay;\n var fragPlayingCurrent = this.getAppendedFrag(media.currentTime);\n\n if (fragPlayingCurrent && fragPlayingCurrent.start > 1) {\n // flush buffer preceding current fragment (flush until current fragment start offset)\n // minus 1s to avoid video freezing, that could happen if we flush keyframe of current video ...\n this.flushMainBuffer(0, fragPlayingCurrent.start - 1);\n }\n\n if (!media.paused && levels) {\n // add a safety delay of 1s\n var nextLevelId = this.hls.nextLoadLevel;\n var nextLevel = levels[nextLevelId];\n var fragLastKbps = this.fragLastKbps;\n\n if (fragLastKbps && this.fragCurrent) {\n fetchdelay = this.fragCurrent.duration * nextLevel.maxBitrate / (1000 * fragLastKbps) + 1;\n } else {\n fetchdelay = 0;\n }\n } else {\n fetchdelay = 0;\n } // this.log('fetchdelay:'+fetchdelay);\n // find buffer range that will be reached once new fragment will be fetched\n\n\n var bufferedFrag = this.getBufferedFrag(media.currentTime + fetchdelay);\n\n if (bufferedFrag) {\n // we can flush buffer range following this one without stalling playback\n var nextBufferedFrag = this.followingBufferedFrag(bufferedFrag);\n\n if (nextBufferedFrag) {\n // if we are here, we can also cancel any loading/demuxing in progress, as they are useless\n this.abortCurrentFrag(); // start flush position is in next buffered frag. Leave some padding for non-independent segments and smoother playback.\n\n var maxStart = nextBufferedFrag.maxStartPTS ? nextBufferedFrag.maxStartPTS : nextBufferedFrag.start;\n var fragDuration = nextBufferedFrag.duration;\n var startPts = Math.max(bufferedFrag.end, maxStart + Math.min(Math.max(fragDuration - this.config.maxFragLookUpTolerance, fragDuration * 0.5), fragDuration * 0.75));\n this.flushMainBuffer(startPts, Number.POSITIVE_INFINITY);\n }\n }\n }\n };\n\n _proto.abortCurrentFrag = function abortCurrentFrag() {\n var fragCurrent = this.fragCurrent;\n this.fragCurrent = null;\n this.backtrackFragment = null;\n\n if (fragCurrent !== null && fragCurrent !== void 0 && fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n\n switch (this.state) {\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].KEY_LOADING:\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING:\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING_WAITING_RETRY:\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING:\n case _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSED:\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n break;\n }\n\n this.nextLoadPosition = this.getLoadPosition();\n };\n\n _proto.flushMainBuffer = function flushMainBuffer(startOffset, endOffset) {\n _BaseStreamController.prototype.flushMainBuffer.call(this, startOffset, endOffset, this.altAudio ? 'video' : null);\n };\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n _BaseStreamController.prototype.onMediaAttached.call(this, event, data);\n\n var media = data.media;\n this.onvplaying = this.onMediaPlaying.bind(this);\n this.onvseeked = this.onMediaSeeked.bind(this);\n media.addEventListener('playing', this.onvplaying);\n media.addEventListener('seeked', this.onvseeked);\n this.gapController = new _gap_controller__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this.config, media, this.fragmentTracker, this.hls);\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n var media = this.media;\n\n if (media && this.onvplaying && this.onvseeked) {\n media.removeEventListener('playing', this.onvplaying);\n media.removeEventListener('seeked', this.onvseeked);\n this.onvplaying = this.onvseeked = null;\n this.videoBuffer = null;\n }\n\n this.fragPlaying = null;\n\n if (this.gapController) {\n this.gapController.destroy();\n this.gapController = null;\n }\n\n _BaseStreamController.prototype.onMediaDetaching.call(this);\n };\n\n _proto.onMediaPlaying = function onMediaPlaying() {\n // tick to speed up FRAG_CHANGED triggering\n this.tick();\n };\n\n _proto.onMediaSeeked = function onMediaSeeked() {\n var media = this.media;\n var currentTime = media ? media.currentTime : null;\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(currentTime)) {\n this.log(\"Media seeked to \" + currentTime.toFixed(3));\n } // tick to speed up FRAG_CHANGED triggering\n\n\n this.tick();\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n // reset buffer on manifest loading\n this.log('Trigger BUFFER_RESET');\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_RESET, undefined);\n this.fragmentTracker.removeAllFragments();\n this.couldBacktrack = false;\n this.startPosition = this.lastCurrentTime = 0;\n this.fragPlaying = null;\n this.backtrackFragment = null;\n };\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n var aac = false;\n var heaac = false;\n var codec;\n data.levels.forEach(function (level) {\n // detect if we have different kind of audio codecs used amongst playlists\n codec = level.audioCodec;\n\n if (codec) {\n if (codec.indexOf('mp4a.40.2') !== -1) {\n aac = true;\n }\n\n if (codec.indexOf('mp4a.40.5') !== -1) {\n heaac = true;\n }\n }\n });\n this.audioCodecSwitch = aac && heaac && !Object(_is_supported__WEBPACK_IMPORTED_MODULE_2__[\"changeTypeSupported\"])();\n\n if (this.audioCodecSwitch) {\n this.log('Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC');\n }\n\n this.levels = data.levels;\n this.startFragRequested = false;\n };\n\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n var levels = this.levels;\n\n if (!levels || this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE) {\n return;\n }\n\n var level = levels[data.level];\n\n if (!level.details || level.details.live && this.levelLastLoaded !== data.level || this.waitForCdnTuneIn(level.details)) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL;\n }\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n var _curLevel$details;\n\n var levels = this.levels;\n var newLevelId = data.level;\n var newDetails = data.details;\n var duration = newDetails.totalduration;\n\n if (!levels) {\n this.warn(\"Levels were reset while loading level \" + newLevelId);\n return;\n }\n\n this.log(\"Level \" + newLevelId + \" loaded [\" + newDetails.startSN + \",\" + newDetails.endSN + \"], cc [\" + newDetails.startCC + \", \" + newDetails.endCC + \"] duration:\" + duration);\n var fragCurrent = this.fragCurrent;\n\n if (fragCurrent && (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING || this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].FRAG_LOADING_WAITING_RETRY)) {\n if (fragCurrent.level !== data.level && fragCurrent.loader) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n this.backtrackFragment = null;\n fragCurrent.loader.abort();\n }\n }\n\n var curLevel = levels[newLevelId];\n var sliding = 0;\n\n if (newDetails.live || (_curLevel$details = curLevel.details) !== null && _curLevel$details !== void 0 && _curLevel$details.live) {\n if (!newDetails.fragments[0]) {\n newDetails.deltaUpdateFailed = true;\n }\n\n if (newDetails.deltaUpdateFailed) {\n return;\n }\n\n sliding = this.alignPlaylists(newDetails, curLevel.details);\n } // override level info\n\n\n curLevel.details = newDetails;\n this.levelLastLoaded = newLevelId;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_UPDATED, {\n details: newDetails,\n level: newLevelId\n }); // only switch back to IDLE state if we were waiting for level to start downloading a new fragment\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL) {\n if (this.waitForCdnTuneIn(newDetails)) {\n // Wait for Low-Latency CDN Tune-in\n return;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n\n if (!this.startFragRequested) {\n this.setStartPosition(newDetails, sliding);\n } else if (newDetails.live) {\n this.synchronizeToLiveEdge(newDetails);\n } // trigger handler right now\n\n\n this.tick();\n };\n\n _proto._handleFragmentLoadProgress = function _handleFragmentLoadProgress(data) {\n var _frag$initSegment;\n\n var frag = data.frag,\n part = data.part,\n payload = data.payload;\n var levels = this.levels;\n\n if (!levels) {\n this.warn(\"Levels were reset while fragment load was in progress. Fragment \" + frag.sn + \" of level \" + frag.level + \" will not be buffered\");\n return;\n }\n\n var currentLevel = levels[frag.level];\n var details = currentLevel.details;\n\n if (!details) {\n this.warn(\"Dropping fragment \" + frag.sn + \" of level \" + frag.level + \" after level details were reset\");\n return;\n }\n\n var videoCodec = currentLevel.videoCodec; // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)\n\n var accurateTimeOffset = details.PTSKnown || !details.live;\n var initSegmentData = (_frag$initSegment = frag.initSegment) === null || _frag$initSegment === void 0 ? void 0 : _frag$initSegment.data;\n\n var audioCodec = this._getAudioCodec(currentLevel); // transmux the MPEG-TS data to ISO-BMFF segments\n // this.log(`Transmuxing ${frag.sn} of [${details.startSN} ,${details.endSN}],level ${frag.level}, cc ${frag.cc}`);\n\n\n var transmuxer = this.transmuxer = this.transmuxer || new _demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.hls, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n var partIndex = part ? part.index : -1;\n var partial = partIndex !== -1;\n var chunkMeta = new _types_transmuxer__WEBPACK_IMPORTED_MODULE_9__[\"ChunkMetadata\"](frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n var initPTS = this.initPTS[frag.cc];\n transmuxer.push(payload, initSegmentData, audioCodec, videoCodec, frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n };\n\n _proto.onAudioTrackSwitching = function onAudioTrackSwitching(event, data) {\n // if any URL found on new audio track, it is an alternate audio track\n var fromAltAudio = this.altAudio;\n var altAudio = !!data.url;\n var trackId = data.id; // if we switch on main audio, ensure that main fragment scheduling is synced with media.buffered\n // don't do anything if we switch to alt audio: audio stream controller is handling it.\n // we will just have to change buffer scheduling on audioTrackSwitched\n\n if (!altAudio) {\n if (this.mediaBuffer !== this.media) {\n this.log('Switching on main audio, use media.buffered to schedule main fragment loading');\n this.mediaBuffer = this.media;\n var fragCurrent = this.fragCurrent; // we need to refill audio buffer from main: cancel any frag loading to speed up audio switch\n\n if (fragCurrent !== null && fragCurrent !== void 0 && fragCurrent.loader) {\n this.log('Switching to main audio track, cancel main fragment load');\n fragCurrent.loader.abort();\n } // destroy transmuxer to force init segment generation (following audio switch)\n\n\n this.resetTransmuxer(); // switch to IDLE state to load new fragment\n\n this.resetLoadingState();\n } else if (this.audioOnly) {\n // Reset audio transmuxer so when switching back to main audio we're not still appending where we left off\n this.resetTransmuxer();\n }\n\n var hls = this.hls; // If switching from alt to main audio, flush all audio and trigger track switched\n\n if (fromAltAudio) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_FLUSHING, {\n startOffset: 0,\n endOffset: Number.POSITIVE_INFINITY,\n type: 'audio'\n });\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].AUDIO_TRACK_SWITCHED, {\n id: trackId\n });\n }\n };\n\n _proto.onAudioTrackSwitched = function onAudioTrackSwitched(event, data) {\n var trackId = data.id;\n var altAudio = !!this.hls.audioTracks[trackId].url;\n\n if (altAudio) {\n var videoBuffer = this.videoBuffer; // if we switched on alternate audio, ensure that main fragment scheduling is synced with video sourcebuffer buffered\n\n if (videoBuffer && this.mediaBuffer !== videoBuffer) {\n this.log('Switching on alternate audio, use video.buffered to schedule main fragment loading');\n this.mediaBuffer = videoBuffer;\n }\n }\n\n this.altAudio = altAudio;\n this.tick();\n };\n\n _proto.onBufferCreated = function onBufferCreated(event, data) {\n var tracks = data.tracks;\n var mediaTrack;\n var name;\n var alternate = false;\n\n for (var type in tracks) {\n var track = tracks[type];\n\n if (track.id === 'main') {\n name = type;\n mediaTrack = track; // keep video source buffer reference\n\n if (type === 'video') {\n var videoTrack = tracks[type];\n\n if (videoTrack) {\n this.videoBuffer = videoTrack.buffer;\n }\n }\n } else {\n alternate = true;\n }\n }\n\n if (alternate && mediaTrack) {\n this.log(\"Alternate track found, use \" + name + \".buffered to schedule main fragment loading\");\n this.mediaBuffer = mediaTrack.buffer;\n } else {\n this.mediaBuffer = this.media;\n }\n };\n\n _proto.onFragBuffered = function onFragBuffered(event, data) {\n var frag = data.frag,\n part = data.part;\n\n if (frag && frag.type !== _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN) {\n return;\n }\n\n if (this.fragContextChanged(frag)) {\n // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion\n // Avoid setting state back to IDLE, since that will interfere with a level switch\n this.warn(\"Fragment \" + frag.sn + (part ? ' p: ' + part.index : '') + \" of level \" + frag.level + \" finished buffering, but was aborted. state: \" + this.state);\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSED) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n\n return;\n }\n\n var stats = part ? part.stats : frag.stats;\n this.fragLastKbps = Math.round(8 * stats.total / (stats.buffering.end - stats.loading.first));\n\n if (frag.sn !== 'initSegment') {\n this.fragPrevious = frag;\n }\n\n this.fragBufferedComplete(frag, part);\n };\n\n _proto.onError = function onError(event, data) {\n switch (data.details) {\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].FRAG_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT:\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].KEY_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].KEY_LOAD_TIMEOUT:\n this.onFragmentOrKeyLoadError(_types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN, data);\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].LEVEL_LOAD_ERROR:\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].LEVEL_LOAD_TIMEOUT:\n if (this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ERROR) {\n if (data.fatal) {\n // if fatal error, stop processing\n this.warn(\"\" + data.details);\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].ERROR;\n } else {\n // in case of non fatal error while loading level, if level controller is not retrying to load level , switch back to IDLE\n if (!data.levelRetry && this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].WAITING_LEVEL) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n }\n }\n }\n\n break;\n\n case _errors__WEBPACK_IMPORTED_MODULE_11__[\"ErrorDetails\"].BUFFER_FULL_ERROR:\n // if in appending state\n if (data.parent === 'main' && (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING || this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSED)) {\n var flushBuffer = true;\n var bufferedInfo = this.getFwdBufferInfo(this.media, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN); // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end\n // reduce max buf len if current position is buffered\n\n if (bufferedInfo && bufferedInfo.len > 0.5) {\n flushBuffer = !this.reduceMaxBufferLength(bufferedInfo.len);\n }\n\n if (flushBuffer) {\n // current position is not buffered, but browser is still complaining about buffer full error\n // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708\n // in that case flush the whole buffer to recover\n this.warn('buffer full error also media.currentTime is not buffered, flush main'); // flush main buffer\n\n this.immediateLevelSwitch();\n } else {\n var fragCurrent = this.fragCurrent;\n this.abortCurrentFrag();\n\n if (fragCurrent) {\n this.flushMainBuffer(fragCurrent.start, Number.POSITIVE_INFINITY);\n this.nextLoadPosition = fragCurrent.start;\n }\n }\n\n this.resetTransmuxer();\n this.resetLoadingState();\n }\n\n break;\n\n default:\n break;\n }\n } // Checks the health of the buffer and attempts to resolve playback stalls.\n ;\n\n _proto.checkBuffer = function checkBuffer() {\n var media = this.media,\n gapController = this.gapController;\n\n if (!media || !gapController || !media.readyState) {\n // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0)\n return;\n }\n\n if (this.loadedmetadata || !_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].getBuffered(media).length) {\n // Resolve gaps using the main buffer, whose ranges are the intersections of the A/V sourcebuffers\n var activeFrag = this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE ? this.fragCurrent : null;\n gapController.poll(this.lastCurrentTime, activeFrag);\n }\n\n this.lastCurrentTime = media.currentTime;\n };\n\n _proto.onFragLoadEmergencyAborted = function onFragLoadEmergencyAborted() {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE; // if loadedmetadata is not set, it means that we are emergency switch down on first frag\n // in that case, reset startFragRequested flag\n\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n this.nextLoadPosition = this.startPosition;\n }\n\n this.tickImmediate();\n };\n\n _proto.onBufferFlushed = function onBufferFlushed(event, _ref) {\n var type = _ref.type;\n\n if (type !== _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO || this.audioOnly && !this.altAudio) {\n var media = (type === _loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media;\n this.afterBufferFlushed(media, type, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n }\n };\n\n _proto.onLevelsUpdated = function onLevelsUpdated(event, data) {\n this.levels = data.levels;\n };\n\n _proto.swapAudioCodec = function swapAudioCodec() {\n this.audioCodecSwap = !this.audioCodecSwap;\n }\n /**\n * Seeks to the set startPosition if not equal to the mediaElement's current time.\n */\n ;\n\n _proto.seekToStartPos = function seekToStartPos() {\n var media = this.media;\n\n if (!media) {\n return;\n }\n\n var currentTime = media.currentTime;\n var startPosition = this.startPosition; // only adjust currentTime if different from startPosition or if startPosition not buffered\n // at that stage, there should be only one buffered range, as we reach that code after first fragment has been buffered\n\n if (startPosition >= 0 && currentTime < startPosition) {\n if (media.seeking) {\n this.log(\"could not seek to \" + startPosition + \", already seeking at \" + currentTime);\n return;\n }\n\n var buffered = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].getBuffered(media);\n var bufferStart = buffered.length ? buffered.start(0) : 0;\n var delta = bufferStart - startPosition;\n\n if (delta > 0 && (delta < this.config.maxBufferHole || delta < this.config.maxFragLookUpTolerance)) {\n this.log(\"adjusting start position by \" + delta + \" to match buffer start\");\n startPosition += delta;\n this.startPosition = startPosition;\n }\n\n this.log(\"seek to target start position \" + startPosition + \" from current time \" + currentTime);\n media.currentTime = startPosition;\n }\n };\n\n _proto._getAudioCodec = function _getAudioCodec(currentLevel) {\n var audioCodec = this.config.defaultAudioCodec || currentLevel.audioCodec;\n\n if (this.audioCodecSwap && audioCodec) {\n this.log('Swapping audio codec');\n\n if (audioCodec.indexOf('mp4a.40.5') !== -1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n }\n\n return audioCodec;\n };\n\n _proto._loadBitrateTestFrag = function _loadBitrateTestFrag(frag) {\n var _this2 = this;\n\n frag.bitrateTest = true;\n\n this._doFragLoad(frag).then(function (data) {\n var hls = _this2.hls;\n\n if (!data || hls.nextLoadLevel || _this2.fragContextChanged(frag)) {\n return;\n }\n\n _this2.fragLoadError = 0;\n _this2.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n _this2.startFragRequested = false;\n _this2.bitrateTest = false;\n var stats = frag.stats; // Bitrate tests fragments are neither parsed nor buffered\n\n stats.parsing.start = stats.parsing.end = stats.buffering.start = stats.buffering.end = self.performance.now();\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_LOADED, data);\n frag.bitrateTest = false;\n });\n };\n\n _proto._handleTransmuxComplete = function _handleTransmuxComplete(transmuxResult) {\n var _id3$samples;\n\n var id = 'main';\n var hls = this.hls;\n var remuxResult = transmuxResult.remuxResult,\n chunkMeta = transmuxResult.chunkMeta;\n var context = this.getCurrentContext(chunkMeta);\n\n if (!context) {\n this.warn(\"The loading context changed while buffering fragment \" + chunkMeta.sn + \" of level \" + chunkMeta.level + \". This chunk will not be buffered.\");\n this.resetStartWhenNotLoaded(chunkMeta.level);\n return;\n }\n\n var frag = context.frag,\n part = context.part,\n level = context.level;\n var video = remuxResult.video,\n text = remuxResult.text,\n id3 = remuxResult.id3,\n initSegment = remuxResult.initSegment;\n var details = level.details; // The audio-stream-controller handles audio buffering if Hls.js is playing an alternate audio track\n\n var audio = this.altAudio ? undefined : remuxResult.audio; // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level.\n // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed.\n\n if (this.fragContextChanged(frag)) {\n return;\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING;\n\n if (initSegment) {\n if (initSegment.tracks) {\n this._bufferInitSegment(level, initSegment.tracks, frag, chunkMeta);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_PARSING_INIT_SEGMENT, {\n frag: frag,\n id: id,\n tracks: initSegment.tracks\n });\n } // This would be nice if Number.isFinite acted as a typeguard, but it doesn't. See: https://github.com/Microsoft/TypeScript/issues/10038\n\n\n var initPTS = initSegment.initPTS;\n var timescale = initSegment.timescale;\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(initPTS)) {\n this.initPTS[frag.cc] = initPTS;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].INIT_PTS_FOUND, {\n frag: frag,\n id: id,\n initPTS: initPTS,\n timescale: timescale\n });\n }\n } // Avoid buffering if backtracking this fragment\n\n\n if (video && remuxResult.independent !== false) {\n if (details) {\n var startPTS = video.startPTS,\n endPTS = video.endPTS,\n startDTS = video.startDTS,\n endDTS = video.endDTS;\n\n if (part) {\n part.elementaryStreams[video.type] = {\n startPTS: startPTS,\n endPTS: endPTS,\n startDTS: startDTS,\n endDTS: endDTS\n };\n } else {\n if (video.firstKeyFrame && video.independent) {\n this.couldBacktrack = true;\n }\n\n if (video.dropped && video.independent) {\n // Backtrack if dropped frames create a gap after currentTime\n var bufferInfo = this.getMainFwdBufferInfo();\n var targetBufferTime = (bufferInfo ? bufferInfo.end : this.getLoadPosition()) + this.config.maxBufferHole;\n var startTime = video.firstKeyFramePTS ? video.firstKeyFramePTS : startPTS;\n\n if (targetBufferTime < startTime - this.config.maxBufferHole) {\n this.backtrack(frag);\n return;\n } // Set video stream start to fragment start so that truncated samples do not distort the timeline, and mark it partial\n\n\n frag.setElementaryStreamInfo(video.type, frag.start, endPTS, frag.start, endDTS, true);\n }\n }\n\n frag.setElementaryStreamInfo(video.type, startPTS, endPTS, startDTS, endDTS);\n\n if (this.backtrackFragment) {\n this.backtrackFragment = frag;\n }\n\n this.bufferFragmentData(video, frag, part, chunkMeta);\n }\n } else if (remuxResult.independent === false) {\n this.backtrack(frag);\n return;\n }\n\n if (audio) {\n var _startPTS = audio.startPTS,\n _endPTS = audio.endPTS,\n _startDTS = audio.startDTS,\n _endDTS = audio.endDTS;\n\n if (part) {\n part.elementaryStreams[_loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO] = {\n startPTS: _startPTS,\n endPTS: _endPTS,\n startDTS: _startDTS,\n endDTS: _endDTS\n };\n }\n\n frag.setElementaryStreamInfo(_loader_fragment__WEBPACK_IMPORTED_MODULE_7__[\"ElementaryStreamTypes\"].AUDIO, _startPTS, _endPTS, _startDTS, _endDTS);\n this.bufferFragmentData(audio, frag, part, chunkMeta);\n }\n\n if (details && id3 !== null && id3 !== void 0 && (_id3$samples = id3.samples) !== null && _id3$samples !== void 0 && _id3$samples.length) {\n var emittedID3 = {\n id: id,\n frag: frag,\n details: details,\n samples: id3.samples\n };\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_PARSING_METADATA, emittedID3);\n }\n\n if (details && text) {\n var emittedText = {\n id: id,\n frag: frag,\n details: details,\n samples: text.samples\n };\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_PARSING_USERDATA, emittedText);\n }\n };\n\n _proto._bufferInitSegment = function _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) {\n var _this3 = this;\n\n if (this.state !== _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].PARSING) {\n return;\n }\n\n this.audioOnly = !!tracks.audio && !tracks.video; // if audio track is expected to come from audio stream controller, discard any coming from main\n\n if (this.altAudio && !this.audioOnly) {\n delete tracks.audio;\n } // include levelCodec in audio and video tracks\n\n\n var audio = tracks.audio,\n video = tracks.video,\n audiovideo = tracks.audiovideo;\n\n if (audio) {\n var audioCodec = currentLevel.audioCodec;\n var ua = navigator.userAgent.toLowerCase();\n\n if (this.audioCodecSwitch) {\n if (audioCodec) {\n if (audioCodec.indexOf('mp4a.40.5') !== -1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n } // In the case that AAC and HE-AAC audio codecs are signalled in manifest,\n // force HE-AAC, as it seems that most browsers prefers it.\n // don't force HE-AAC if mono stream, or in Firefox\n\n\n if (audio.metadata.channelCount !== 1 && ua.indexOf('firefox') === -1) {\n audioCodec = 'mp4a.40.5';\n }\n } // HE-AAC is broken on Android, always signal audio codec as AAC even if variant manifest states otherwise\n\n\n if (ua.indexOf('android') !== -1 && audio.container !== 'audio/mpeg') {\n // Exclude mpeg audio\n audioCodec = 'mp4a.40.2';\n this.log(\"Android: force audio codec to \" + audioCodec);\n }\n\n if (currentLevel.audioCodec && currentLevel.audioCodec !== audioCodec) {\n this.log(\"Swapping manifest audio codec \\\"\" + currentLevel.audioCodec + \"\\\" for \\\"\" + audioCodec + \"\\\"\");\n }\n\n audio.levelCodec = audioCodec;\n audio.id = 'main';\n this.log(\"Init audio buffer, container:\" + audio.container + \", codecs[selected/level/parsed]=[\" + (audioCodec || '') + \"/\" + (currentLevel.audioCodec || '') + \"/\" + audio.codec + \"]\");\n }\n\n if (video) {\n video.levelCodec = currentLevel.videoCodec;\n video.id = 'main';\n this.log(\"Init video buffer, container:\" + video.container + \", codecs[level/parsed]=[\" + (currentLevel.videoCodec || '') + \"/\" + video.codec + \"]\");\n }\n\n if (audiovideo) {\n this.log(\"Init audiovideo buffer, container:\" + audiovideo.container + \", codecs[level/parsed]=[\" + (currentLevel.attrs.CODECS || '') + \"/\" + audiovideo.codec + \"]\");\n }\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_CODECS, tracks); // loop through tracks that are going to be provided to bufferController\n\n Object.keys(tracks).forEach(function (trackName) {\n var track = tracks[trackName];\n var initSegment = track.initSegment;\n\n if (initSegment !== null && initSegment !== void 0 && initSegment.byteLength) {\n _this3.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].BUFFER_APPENDING, {\n type: trackName,\n data: initSegment,\n frag: frag,\n part: null,\n chunkMeta: chunkMeta,\n parent: frag.type\n });\n }\n }); // trigger handler right now\n\n this.tick();\n };\n\n _proto.getMainFwdBufferInfo = function getMainFwdBufferInfo() {\n return this.getFwdBufferInfo(this.mediaBuffer ? this.mediaBuffer : this.media, _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN);\n };\n\n _proto.backtrack = function backtrack(frag) {\n this.couldBacktrack = true; // Causes findFragments to backtrack through fragments to find the keyframe\n\n this.backtrackFragment = frag;\n this.resetTransmuxer();\n this.flushBufferGap(frag);\n this.fragmentTracker.removeFragment(frag);\n this.fragPrevious = null;\n this.nextLoadPosition = frag.start;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"State\"].IDLE;\n };\n\n _proto.checkFragmentChanged = function checkFragmentChanged() {\n var video = this.media;\n var fragPlayingCurrent = null;\n\n if (video && video.readyState > 1 && video.seeking === false) {\n var currentTime = video.currentTime;\n /* if video element is in seeked state, currentTime can only increase.\n (assuming that playback rate is positive ...)\n As sometimes currentTime jumps back to zero after a\n media decode error, check this, to avoid seeking back to\n wrong position after a media decode error\n */\n\n if (_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].isBuffered(video, currentTime)) {\n fragPlayingCurrent = this.getAppendedFrag(currentTime);\n } else if (_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__[\"BufferHelper\"].isBuffered(video, currentTime + 0.1)) {\n /* ensure that FRAG_CHANGED event is triggered at startup,\n when first video frame is displayed and playback is paused.\n add a tolerance of 100ms, in case current position is not buffered,\n check if current pos+100ms is buffered and use that buffer range\n for FRAG_CHANGED event reporting */\n fragPlayingCurrent = this.getAppendedFrag(currentTime + 0.1);\n }\n\n if (fragPlayingCurrent) {\n this.backtrackFragment = null;\n var fragPlaying = this.fragPlaying;\n var fragCurrentLevel = fragPlayingCurrent.level;\n\n if (!fragPlaying || fragPlayingCurrent.sn !== fragPlaying.sn || fragPlaying.level !== fragCurrentLevel || fragPlayingCurrent.urlId !== fragPlaying.urlId) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].FRAG_CHANGED, {\n frag: fragPlayingCurrent\n });\n\n if (!fragPlaying || fragPlaying.level !== fragCurrentLevel) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].LEVEL_SWITCHED, {\n level: fragCurrentLevel\n });\n }\n\n this.fragPlaying = fragPlayingCurrent;\n }\n }\n }\n };\n\n _createClass(StreamController, [{\n key: \"nextLevel\",\n get: function get() {\n var frag = this.nextBufferedFrag;\n\n if (frag) {\n return frag.level;\n }\n\n return -1;\n }\n }, {\n key: \"currentFrag\",\n get: function get() {\n var media = this.media;\n\n if (media) {\n return this.fragPlaying || this.getAppendedFrag(media.currentTime);\n }\n\n return null;\n }\n }, {\n key: \"currentProgramDateTime\",\n get: function get() {\n var media = this.media;\n\n if (media) {\n var currentTime = media.currentTime;\n var frag = this.currentFrag;\n\n if (frag && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(currentTime) && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.programDateTime)) {\n var epocMs = frag.programDateTime + (currentTime - frag.start) * 1000;\n return new Date(epocMs);\n }\n }\n\n return null;\n }\n }, {\n key: \"currentLevel\",\n get: function get() {\n var frag = this.currentFrag;\n\n if (frag) {\n return frag.level;\n }\n\n return -1;\n }\n }, {\n key: \"nextBufferedFrag\",\n get: function get() {\n var frag = this.currentFrag;\n\n if (frag) {\n return this.followingBufferedFrag(frag);\n }\n\n return null;\n }\n }, {\n key: \"forceStartLoad\",\n get: function get() {\n return this._forceStartLoad;\n }\n }]);\n\n return StreamController;\n}(_base_stream_controller__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n\n\n/***/ }),\n\n/***/ \"./src/controller/subtitle-stream-controller.ts\":\n/*!******************************************************!*\\\n !*** ./src/controller/subtitle-stream-controller.ts ***!\n \\******************************************************/\n/*! exports provided: SubtitleStreamController */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SubtitleStreamController\", function() { return SubtitleStreamController; });\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/buffer-helper */ \"./src/utils/buffer-helper.ts\");\n/* harmony import */ var _fragment_finders__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fragment-finders */ \"./src/controller/fragment-finders.ts\");\n/* harmony import */ var _utils_discontinuities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/discontinuities */ \"./src/utils/discontinuities.ts\");\n/* harmony import */ var _level_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./level-helper */ \"./src/controller/level-helper.ts\");\n/* harmony import */ var _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./fragment-tracker */ \"./src/controller/fragment-tracker.ts\");\n/* harmony import */ var _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./base-stream-controller */ \"./src/controller/base-stream-controller.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _types_level__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../types/level */ \"./src/types/level.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\nvar TICK_INTERVAL = 500; // how often to tick in ms\n\nvar SubtitleStreamController = /*#__PURE__*/function (_BaseStreamController) {\n _inheritsLoose(SubtitleStreamController, _BaseStreamController);\n\n function SubtitleStreamController(hls, fragmentTracker) {\n var _this;\n\n _this = _BaseStreamController.call(this, hls, fragmentTracker, '[subtitle-stream-controller]') || this;\n _this.levels = [];\n _this.currentTrackId = -1;\n _this.tracksBuffered = [];\n _this.mainDetails = null;\n\n _this._registerListeners();\n\n return _this;\n }\n\n var _proto = SubtitleStreamController.prototype;\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n this._unregisterListeners();\n\n this.mainDetails = null;\n };\n\n _proto._registerListeners = function _registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n };\n\n _proto._unregisterListeners = function _unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n };\n\n _proto.startLoad = function startLoad() {\n this.stopLoad();\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE;\n this.setInterval(TICK_INTERVAL);\n this.tick();\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.mainDetails = null;\n this.fragmentTracker.removeAllFragments();\n };\n\n _proto.onLevelLoaded = function onLevelLoaded(event, data) {\n this.mainDetails = data.details;\n };\n\n _proto.onSubtitleFragProcessed = function onSubtitleFragProcessed(event, data) {\n var frag = data.frag,\n success = data.success;\n this.fragPrevious = frag;\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE;\n\n if (!success) {\n return;\n }\n\n var buffered = this.tracksBuffered[this.currentTrackId];\n\n if (!buffered) {\n return;\n } // Create/update a buffered array matching the interface used by BufferHelper.bufferedInfo\n // so we can re-use the logic used to detect how much has been buffered\n\n\n var timeRange;\n var fragStart = frag.start;\n\n for (var i = 0; i < buffered.length; i++) {\n if (fragStart >= buffered[i].start && fragStart <= buffered[i].end) {\n timeRange = buffered[i];\n break;\n }\n }\n\n var fragEnd = frag.start + frag.duration;\n\n if (timeRange) {\n timeRange.end = fragEnd;\n } else {\n timeRange = {\n start: fragStart,\n end: fragEnd\n };\n buffered.push(timeRange);\n }\n\n this.fragmentTracker.fragBuffered(frag);\n };\n\n _proto.onBufferFlushing = function onBufferFlushing(event, data) {\n var startOffset = data.startOffset,\n endOffset = data.endOffset;\n\n if (startOffset === 0 && endOffset !== Number.POSITIVE_INFINITY) {\n var currentTrackId = this.currentTrackId,\n levels = this.levels;\n\n if (!levels.length || !levels[currentTrackId] || !levels[currentTrackId].details) {\n return;\n }\n\n var trackDetails = levels[currentTrackId].details;\n var targetDuration = trackDetails.targetduration;\n var endOffsetSubtitles = endOffset - targetDuration;\n\n if (endOffsetSubtitles <= 0) {\n return;\n }\n\n data.endOffsetSubtitles = Math.max(0, endOffsetSubtitles);\n this.tracksBuffered.forEach(function (buffered) {\n for (var i = 0; i < buffered.length;) {\n if (buffered[i].end <= endOffsetSubtitles) {\n buffered.shift();\n continue;\n } else if (buffered[i].start < endOffsetSubtitles) {\n buffered[i].start = endOffsetSubtitles;\n } else {\n break;\n }\n\n i++;\n }\n });\n this.fragmentTracker.removeFragmentsInRange(startOffset, endOffsetSubtitles, _types_loader__WEBPACK_IMPORTED_MODULE_7__[\"PlaylistLevelType\"].SUBTITLE);\n }\n } // If something goes wrong, proceed to next frag, if we were processing one.\n ;\n\n _proto.onError = function onError(event, data) {\n var _this$fragCurrent;\n\n var frag = data.frag; // don't handle error not related to subtitle fragment\n\n if (!frag || frag.type !== _types_loader__WEBPACK_IMPORTED_MODULE_7__[\"PlaylistLevelType\"].SUBTITLE) {\n return;\n }\n\n if ((_this$fragCurrent = this.fragCurrent) !== null && _this$fragCurrent !== void 0 && _this$fragCurrent.loader) {\n this.fragCurrent.loader.abort();\n }\n\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE;\n } // Got all new subtitle levels.\n ;\n\n _proto.onSubtitleTracksUpdated = function onSubtitleTracksUpdated(event, _ref) {\n var _this2 = this;\n\n var subtitleTracks = _ref.subtitleTracks;\n this.tracksBuffered = [];\n this.levels = subtitleTracks.map(function (mediaPlaylist) {\n return new _types_level__WEBPACK_IMPORTED_MODULE_8__[\"Level\"](mediaPlaylist);\n });\n this.fragmentTracker.removeAllFragments();\n this.fragPrevious = null;\n this.levels.forEach(function (level) {\n _this2.tracksBuffered[level.id] = [];\n });\n this.mediaBuffer = null;\n };\n\n _proto.onSubtitleTrackSwitch = function onSubtitleTrackSwitch(event, data) {\n this.currentTrackId = data.id;\n\n if (!this.levels.length || this.currentTrackId === -1) {\n this.clearInterval();\n return;\n } // Check if track has the necessary details to load fragments\n\n\n var currentTrack = this.levels[this.currentTrackId];\n\n if (currentTrack !== null && currentTrack !== void 0 && currentTrack.details) {\n this.mediaBuffer = this.mediaBufferTimeRanges;\n } else {\n this.mediaBuffer = null;\n }\n\n if (currentTrack) {\n this.setInterval(TICK_INTERVAL);\n }\n } // Got a new set of subtitle fragments.\n ;\n\n _proto.onSubtitleTrackLoaded = function onSubtitleTrackLoaded(event, data) {\n var _track$details;\n\n var newDetails = data.details,\n trackId = data.id;\n var currentTrackId = this.currentTrackId,\n levels = this.levels;\n\n if (!levels.length) {\n return;\n }\n\n var track = levels[currentTrackId];\n\n if (trackId >= levels.length || trackId !== currentTrackId || !track) {\n return;\n }\n\n this.mediaBuffer = this.mediaBufferTimeRanges;\n\n if (newDetails.live || (_track$details = track.details) !== null && _track$details !== void 0 && _track$details.live) {\n var mainDetails = this.mainDetails;\n\n if (newDetails.deltaUpdateFailed || !mainDetails) {\n return;\n }\n\n var mainSlidingStartFragment = mainDetails.fragments[0];\n\n if (!track.details) {\n if (newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n Object(_utils_discontinuities__WEBPACK_IMPORTED_MODULE_3__[\"alignMediaPlaylistByPDT\"])(newDetails, mainDetails);\n } else if (mainSlidingStartFragment) {\n // line up live playlist with main so that fragments in range are loaded\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"addSliding\"])(newDetails, mainSlidingStartFragment.start);\n }\n } else {\n var sliding = this.alignPlaylists(newDetails, track.details);\n\n if (sliding === 0 && mainSlidingStartFragment) {\n // realign with main when there is no overlap with last refresh\n Object(_level_helper__WEBPACK_IMPORTED_MODULE_4__[\"addSliding\"])(newDetails, mainSlidingStartFragment.start);\n }\n }\n }\n\n track.details = newDetails;\n this.levelLastLoaded = trackId; // trigger handler right now\n\n this.tick(); // If playlist is misaligned because of bad PDT or drift, delete details to resync with main on reload\n\n if (newDetails.live && !this.fragCurrent && this.media && this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE) {\n var foundFrag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_2__[\"findFragmentByPTS\"])(null, newDetails.fragments, this.media.currentTime, 0);\n\n if (!foundFrag) {\n this.warn('Subtitle playlist not aligned with playback');\n track.details = undefined;\n }\n }\n };\n\n _proto._handleFragmentLoadComplete = function _handleFragmentLoadComplete(fragLoadedData) {\n var frag = fragLoadedData.frag,\n payload = fragLoadedData.payload;\n var decryptData = frag.decryptdata;\n var hls = this.hls;\n\n if (this.fragContextChanged(frag)) {\n return;\n } // check to see if the payload needs to be decrypted\n\n\n if (payload && payload.byteLength > 0 && decryptData && decryptData.key && decryptData.iv && decryptData.method === 'AES-128') {\n var startTime = performance.now(); // decrypt the subtitles\n\n this.decrypter.webCryptoDecrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).then(function (decryptedData) {\n var endTime = performance.now();\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].FRAG_DECRYPTED, {\n frag: frag,\n payload: decryptedData,\n stats: {\n tstart: startTime,\n tdecrypt: endTime\n }\n });\n });\n }\n };\n\n _proto.doTick = function doTick() {\n if (!this.media) {\n this.state = _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE;\n return;\n }\n\n if (this.state === _base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"State\"].IDLE) {\n var currentTrackId = this.currentTrackId,\n levels = this.levels;\n\n if (!levels.length || !levels[currentTrackId] || !levels[currentTrackId].details) {\n return;\n } // Expand range of subs loaded by one target-duration in either direction to make up for misaligned playlists\n\n\n var trackDetails = levels[currentTrackId].details;\n var targetDuration = trackDetails.targetduration;\n var config = this.config,\n media = this.media;\n var bufferedInfo = _utils_buffer_helper__WEBPACK_IMPORTED_MODULE_1__[\"BufferHelper\"].bufferedInfo(this.tracksBuffered[this.currentTrackId] || [], media.currentTime - targetDuration, config.maxBufferHole);\n var targetBufferTime = bufferedInfo.end,\n bufferLen = bufferedInfo.len;\n var maxBufLen = this.getMaxBufferLength() + targetDuration;\n\n if (bufferLen > maxBufLen) {\n return;\n }\n\n console.assert(trackDetails, 'Subtitle track details are defined on idle subtitle stream controller tick');\n var fragments = trackDetails.fragments;\n var fragLen = fragments.length;\n var end = trackDetails.edge;\n var foundFrag;\n var fragPrevious = this.fragPrevious;\n\n if (targetBufferTime < end) {\n var maxFragLookUpTolerance = config.maxFragLookUpTolerance;\n foundFrag = Object(_fragment_finders__WEBPACK_IMPORTED_MODULE_2__[\"findFragmentByPTS\"])(fragPrevious, fragments, Math.max(fragments[0].start, targetBufferTime), maxFragLookUpTolerance);\n\n if (!foundFrag && fragPrevious && fragPrevious.start < fragments[0].start) {\n foundFrag = fragments[0];\n }\n } else {\n foundFrag = fragments[fragLen - 1];\n }\n\n foundFrag = this.mapToInitFragWhenRequired(foundFrag);\n\n if (!foundFrag) {\n return;\n } // only load if fragment is not loaded\n\n\n if (this.fragmentTracker.getState(foundFrag) !== _fragment_tracker__WEBPACK_IMPORTED_MODULE_5__[\"FragmentState\"].NOT_LOADED) {\n return;\n }\n\n if (foundFrag.encrypted) {\n this.loadKey(foundFrag, trackDetails);\n } else {\n this.loadFragment(foundFrag, trackDetails, targetBufferTime);\n }\n }\n };\n\n _proto.loadFragment = function loadFragment(frag, levelDetails, targetBufferTime) {\n this.fragCurrent = frag;\n\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag);\n } else {\n _BaseStreamController.prototype.loadFragment.call(this, frag, levelDetails, targetBufferTime);\n }\n };\n\n _createClass(SubtitleStreamController, [{\n key: \"mediaBufferTimeRanges\",\n get: function get() {\n return new BufferableInstance(this.tracksBuffered[this.currentTrackId] || []);\n }\n }]);\n\n return SubtitleStreamController;\n}(_base_stream_controller__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n\nvar BufferableInstance = function BufferableInstance(timeranges) {\n this.buffered = void 0;\n\n var getRange = function getRange(name, index, length) {\n index = index >>> 0;\n\n if (index > length - 1) {\n throw new DOMException(\"Failed to execute '\" + name + \"' on 'TimeRanges': The index provided (\" + index + \") is greater than the maximum bound (\" + length + \")\");\n }\n\n return timeranges[index][name];\n };\n\n this.buffered = {\n get length() {\n return timeranges.length;\n },\n\n end: function end(index) {\n return getRange('end', index, timeranges.length);\n },\n start: function start(index) {\n return getRange('start', index, timeranges.length);\n }\n };\n};\n\n/***/ }),\n\n/***/ \"./src/controller/subtitle-track-controller.ts\":\n/*!*****************************************************!*\\\n !*** ./src/controller/subtitle-track-controller.ts ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/texttrack-utils */ \"./src/utils/texttrack-utils.ts\");\n/* harmony import */ var _base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base-playlist-controller */ \"./src/controller/base-playlist-controller.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar SubtitleTrackController = /*#__PURE__*/function (_BasePlaylistControll) {\n _inheritsLoose(SubtitleTrackController, _BasePlaylistControll);\n\n function SubtitleTrackController(hls) {\n var _this;\n\n _this = _BasePlaylistControll.call(this, hls, '[subtitle-track-controller]') || this;\n _this.media = null;\n _this.tracks = [];\n _this.groupId = null;\n _this.tracksInGroup = [];\n _this.trackId = -1;\n _this.selectDefaultTrack = true;\n _this.queuedDefaultTrack = -1;\n\n _this.trackChangeListener = function () {\n return _this.onTextTracksChanged();\n };\n\n _this.asyncPollTrackChange = function () {\n return _this.pollTrackChange(0);\n };\n\n _this.useTextTrackPolling = false;\n _this.subtitlePollingInterval = -1;\n _this._subtitleDisplay = true;\n\n _this.registerListeners();\n\n return _this;\n }\n\n var _proto = SubtitleTrackController.prototype;\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.tracks.length = 0;\n this.tracksInGroup.length = 0;\n this.trackChangeListener = this.asyncPollTrackChange = null;\n\n _BasePlaylistControll.prototype.destroy.call(this);\n };\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, this.onError, this);\n } // Listen for subtitle track change, then extract the current track ID.\n ;\n\n _proto.onMediaAttached = function onMediaAttached(event, data) {\n this.media = data.media;\n\n if (!this.media) {\n return;\n }\n\n if (this.queuedDefaultTrack > -1) {\n this.subtitleTrack = this.queuedDefaultTrack;\n this.queuedDefaultTrack = -1;\n }\n\n this.useTextTrackPolling = !(this.media.textTracks && 'onchange' in this.media.textTracks);\n\n if (this.useTextTrackPolling) {\n this.pollTrackChange(500);\n } else {\n this.media.textTracks.addEventListener('change', this.asyncPollTrackChange);\n }\n };\n\n _proto.pollTrackChange = function pollTrackChange(timeout) {\n self.clearInterval(this.subtitlePollingInterval);\n this.subtitlePollingInterval = self.setInterval(this.trackChangeListener, timeout);\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n if (!this.media) {\n return;\n }\n\n self.clearInterval(this.subtitlePollingInterval);\n\n if (!this.useTextTrackPolling) {\n this.media.textTracks.removeEventListener('change', this.asyncPollTrackChange);\n }\n\n if (this.trackId > -1) {\n this.queuedDefaultTrack = this.trackId;\n }\n\n var textTracks = filterSubtitleTracks(this.media.textTracks); // Clear loaded cues on media detachment from tracks\n\n textTracks.forEach(function (track) {\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_1__[\"clearCurrentCues\"])(track);\n }); // Disable all subtitle tracks before detachment so when reattached only tracks in that content are enabled.\n\n this.subtitleTrack = -1;\n this.media = null;\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.tracks = [];\n this.groupId = null;\n this.tracksInGroup = [];\n this.trackId = -1;\n this.selectDefaultTrack = true;\n } // Fired whenever a new manifest is loaded.\n ;\n\n _proto.onManifestParsed = function onManifestParsed(event, data) {\n this.tracks = data.subtitleTracks;\n };\n\n _proto.onSubtitleTrackLoaded = function onSubtitleTrackLoaded(event, data) {\n var id = data.id,\n details = data.details;\n var trackId = this.trackId;\n var currentTrack = this.tracksInGroup[trackId];\n\n if (!currentTrack) {\n this.warn(\"Invalid subtitle track id \" + id);\n return;\n }\n\n var curDetails = currentTrack.details;\n currentTrack.details = data.details;\n this.log(\"subtitle track \" + id + \" loaded [\" + details.startSN + \"-\" + details.endSN + \"]\");\n\n if (id === this.trackId) {\n this.retryCount = 0;\n this.playlistLoaded(id, data, curDetails);\n }\n };\n\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n this.switchLevel(data.level);\n };\n\n _proto.onLevelSwitching = function onLevelSwitching(event, data) {\n this.switchLevel(data.level);\n };\n\n _proto.switchLevel = function switchLevel(levelIndex) {\n var levelInfo = this.hls.levels[levelIndex];\n\n if (!(levelInfo !== null && levelInfo !== void 0 && levelInfo.textGroupIds)) {\n return;\n }\n\n var textGroupId = levelInfo.textGroupIds[levelInfo.urlId];\n\n if (this.groupId !== textGroupId) {\n var lastTrack = this.tracksInGroup ? this.tracksInGroup[this.trackId] : undefined;\n var subtitleTracks = this.tracks.filter(function (track) {\n return !textGroupId || track.groupId === textGroupId;\n });\n this.tracksInGroup = subtitleTracks;\n var initialTrackId = this.findTrackId(lastTrack === null || lastTrack === void 0 ? void 0 : lastTrack.name) || this.findTrackId();\n this.groupId = textGroupId;\n var subtitleTracksUpdated = {\n subtitleTracks: subtitleTracks\n };\n this.log(\"Updating subtitle tracks, \" + subtitleTracks.length + \" track(s) found in \\\"\" + textGroupId + \"\\\" group-id\");\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACKS_UPDATED, subtitleTracksUpdated);\n\n if (initialTrackId !== -1) {\n this.setSubtitleTrack(initialTrackId, lastTrack);\n }\n }\n };\n\n _proto.findTrackId = function findTrackId(name) {\n var textTracks = this.tracksInGroup;\n\n for (var i = 0; i < textTracks.length; i++) {\n var track = textTracks[i];\n\n if (!this.selectDefaultTrack || track.default) {\n if (!name || name === track.name) {\n return track.id;\n }\n }\n }\n\n return -1;\n };\n\n _proto.onError = function onError(event, data) {\n _BasePlaylistControll.prototype.onError.call(this, event, data);\n\n if (data.fatal || !data.context) {\n return;\n }\n\n if (data.context.type === _types_loader__WEBPACK_IMPORTED_MODULE_3__[\"PlaylistContextType\"].SUBTITLE_TRACK && data.context.id === this.trackId && data.context.groupId === this.groupId) {\n this.retryLoadingOrFail(data);\n }\n }\n /** get alternate subtitle tracks list from playlist **/\n ;\n\n _proto.loadPlaylist = function loadPlaylist(hlsUrlParameters) {\n var currentTrack = this.tracksInGroup[this.trackId];\n\n if (this.shouldLoadTrack(currentTrack)) {\n var id = currentTrack.id;\n var groupId = currentTrack.groupId;\n var url = currentTrack.url;\n\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(\"Could not construct new URL with HLS Delivery Directives: \" + error);\n }\n }\n\n this.log(\"Loading subtitle playlist for id \" + id);\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_LOADING, {\n url: url,\n id: id,\n groupId: groupId,\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n }\n /**\n * Disables the old subtitleTrack and sets current mode on the next subtitleTrack.\n * This operates on the DOM textTracks.\n * A value of -1 will disable all subtitle tracks.\n */\n ;\n\n _proto.toggleTrackModes = function toggleTrackModes(newId) {\n var _this2 = this;\n\n var media = this.media,\n trackId = this.trackId;\n\n if (!media) {\n return;\n }\n\n var textTracks = filterSubtitleTracks(media.textTracks);\n var groupTracks = textTracks.filter(function (track) {\n return track.groupId === _this2.groupId;\n });\n\n if (newId === -1) {\n [].slice.call(textTracks).forEach(function (track) {\n track.mode = 'disabled';\n });\n } else {\n var oldTrack = groupTracks[trackId];\n\n if (oldTrack) {\n oldTrack.mode = 'disabled';\n }\n }\n\n var nextTrack = groupTracks[newId];\n\n if (nextTrack) {\n nextTrack.mode = this.subtitleDisplay ? 'showing' : 'hidden';\n }\n }\n /**\n * This method is responsible for validating the subtitle index and periodically reloading if live.\n * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track.\n */\n ;\n\n _proto.setSubtitleTrack = function setSubtitleTrack(newId, lastTrack) {\n var _tracks$newId;\n\n var tracks = this.tracksInGroup; // setting this.subtitleTrack will trigger internal logic\n // if media has not been attached yet, it will fail\n // we keep a reference to the default track id\n // and we'll set subtitleTrack when onMediaAttached is triggered\n\n if (!this.media) {\n this.queuedDefaultTrack = newId;\n return;\n }\n\n if (this.trackId !== newId) {\n this.toggleTrackModes(newId);\n } // exit if track id as already set or invalid\n\n\n if (this.trackId === newId && (newId === -1 || (_tracks$newId = tracks[newId]) !== null && _tracks$newId !== void 0 && _tracks$newId.details) || newId < -1 || newId >= tracks.length) {\n return;\n } // stopping live reloading timer if any\n\n\n this.clearTimer();\n var track = tracks[newId];\n this.log(\"Switching to subtitle track \" + newId);\n this.trackId = newId;\n\n if (track) {\n var id = track.id,\n _track$groupId = track.groupId,\n groupId = _track$groupId === void 0 ? '' : _track$groupId,\n name = track.name,\n type = track.type,\n url = track.url;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_SWITCH, {\n id: id,\n groupId: groupId,\n name: name,\n type: type,\n url: url\n });\n var hlsUrlParameters = this.switchParams(track.url, lastTrack === null || lastTrack === void 0 ? void 0 : lastTrack.details);\n this.loadPlaylist(hlsUrlParameters);\n } else {\n // switch to -1\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].SUBTITLE_TRACK_SWITCH, {\n id: newId\n });\n }\n };\n\n _proto.onTextTracksChanged = function onTextTracksChanged() {\n if (!this.useTextTrackPolling) {\n self.clearInterval(this.subtitlePollingInterval);\n } // Media is undefined when switching streams via loadSource()\n\n\n if (!this.media || !this.hls.config.renderTextTracksNatively) {\n return;\n }\n\n var trackId = -1;\n var tracks = filterSubtitleTracks(this.media.textTracks);\n\n for (var id = 0; id < tracks.length; id++) {\n if (tracks[id].mode === 'hidden') {\n // Do not break in case there is a following track with showing.\n trackId = id;\n } else if (tracks[id].mode === 'showing') {\n trackId = id;\n break;\n }\n } // Setting current subtitleTrack will invoke code.\n\n\n if (this.subtitleTrack !== trackId) {\n this.subtitleTrack = trackId;\n }\n };\n\n _createClass(SubtitleTrackController, [{\n key: \"subtitleDisplay\",\n get: function get() {\n return this._subtitleDisplay;\n },\n set: function set(value) {\n this._subtitleDisplay = value;\n\n if (this.trackId > -1) {\n this.toggleTrackModes(this.trackId);\n }\n }\n }, {\n key: \"subtitleTracks\",\n get: function get() {\n return this.tracksInGroup;\n }\n /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/\n\n }, {\n key: \"subtitleTrack\",\n get: function get() {\n return this.trackId;\n },\n set: function set(newId) {\n this.selectDefaultTrack = false;\n var lastTrack = this.tracksInGroup ? this.tracksInGroup[this.trackId] : undefined;\n this.setSubtitleTrack(newId, lastTrack);\n }\n }]);\n\n return SubtitleTrackController;\n}(_base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\nfunction filterSubtitleTracks(textTrackList) {\n var tracks = [];\n\n for (var i = 0; i < textTrackList.length; i++) {\n var track = textTrackList[i]; // Edge adds a track without a label; we don't want to use it\n\n if (track.kind === 'subtitles' && track.label) {\n tracks.push(textTrackList[i]);\n }\n }\n\n return tracks;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SubtitleTrackController);\n\n/***/ }),\n\n/***/ \"./src/controller/timeline-controller.ts\":\n/*!***********************************************!*\\\n !*** ./src/controller/timeline-controller.ts ***!\n \\***********************************************/\n/*! exports provided: TimelineController */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TimelineController\", function() { return TimelineController; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_cea_608_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/cea-608-parser */ \"./src/utils/cea-608-parser.ts\");\n/* harmony import */ var _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/output-filter */ \"./src/utils/output-filter.ts\");\n/* harmony import */ var _utils_webvtt_parser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/webvtt-parser */ \"./src/utils/webvtt-parser.ts\");\n/* harmony import */ var _utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/texttrack-utils */ \"./src/utils/texttrack-utils.ts\");\n/* harmony import */ var _utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/imsc1-ttml-parser */ \"./src/utils/imsc1-ttml-parser.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\n\n\n\n\n\n\n\n\nvar TimelineController = /*#__PURE__*/function () {\n function TimelineController(hls) {\n this.hls = void 0;\n this.media = null;\n this.config = void 0;\n this.enabled = true;\n this.Cues = void 0;\n this.textTracks = [];\n this.tracks = [];\n this.initPTS = [];\n this.timescale = [];\n this.unparsedVttFrags = [];\n this.captionsTracks = {};\n this.nonNativeCaptionsTracks = {};\n this.cea608Parser1 = void 0;\n this.cea608Parser2 = void 0;\n this.lastSn = -1;\n this.lastPartIndex = -1;\n this.prevCC = -1;\n this.vttCCs = newVTTCCs();\n this.captionsProperties = void 0;\n this.hls = hls;\n this.config = hls.config;\n this.Cues = hls.config.cueHandler;\n this.captionsProperties = {\n textTrack1: {\n label: this.config.captionsTextTrack1Label,\n languageCode: this.config.captionsTextTrack1LanguageCode\n },\n textTrack2: {\n label: this.config.captionsTextTrack2Label,\n languageCode: this.config.captionsTextTrack2LanguageCode\n },\n textTrack3: {\n label: this.config.captionsTextTrack3Label,\n languageCode: this.config.captionsTextTrack3LanguageCode\n },\n textTrack4: {\n label: this.config.captionsTextTrack4Label,\n languageCode: this.config.captionsTextTrack4LanguageCode\n }\n };\n\n if (this.config.enableCEA708Captions) {\n var channel1 = new _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this, 'textTrack1');\n var channel2 = new _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this, 'textTrack2');\n var channel3 = new _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this, 'textTrack3');\n var channel4 = new _utils_output_filter__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this, 'textTrack4');\n this.cea608Parser1 = new _utils_cea_608_parser__WEBPACK_IMPORTED_MODULE_2__[\"default\"](1, channel1, channel2);\n this.cea608Parser2 = new _utils_cea_608_parser__WEBPACK_IMPORTED_MODULE_2__[\"default\"](3, channel3, channel4);\n }\n\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADING, this.onFragLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_DECRYPTED, this.onFragDecrypted, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this);\n }\n\n var _proto = TimelineController.prototype;\n\n _proto.destroy = function destroy() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADING, this.onFragLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, this.onFragLoaded, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_DECRYPTED, this.onFragDecrypted, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].BUFFER_FLUSHING, this.onBufferFlushing, this); // @ts-ignore\n\n this.hls = this.config = this.cea608Parser1 = this.cea608Parser2 = null;\n };\n\n _proto.addCues = function addCues(trackName, startTime, endTime, screen, cueRanges) {\n // skip cues which overlap more than 50% with previously parsed time ranges\n var merged = false;\n\n for (var i = cueRanges.length; i--;) {\n var cueRange = cueRanges[i];\n var overlap = intersection(cueRange[0], cueRange[1], startTime, endTime);\n\n if (overlap >= 0) {\n cueRange[0] = Math.min(cueRange[0], startTime);\n cueRange[1] = Math.max(cueRange[1], endTime);\n merged = true;\n\n if (overlap / (endTime - startTime) > 0.5) {\n return;\n }\n }\n }\n\n if (!merged) {\n cueRanges.push([startTime, endTime]);\n }\n\n if (this.config.renderTextTracksNatively) {\n var track = this.captionsTracks[trackName];\n this.Cues.newCue(track, startTime, endTime, screen);\n } else {\n var cues = this.Cues.newCue(null, startTime, endTime, screen);\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].CUES_PARSED, {\n type: 'captions',\n cues: cues,\n track: trackName\n });\n }\n } // Triggered when an initial PTS is found; used for synchronisation of WebVTT.\n ;\n\n _proto.onInitPtsFound = function onInitPtsFound(event, _ref) {\n var _this = this;\n\n var frag = _ref.frag,\n id = _ref.id,\n initPTS = _ref.initPTS,\n timescale = _ref.timescale;\n var unparsedVttFrags = this.unparsedVttFrags;\n\n if (id === 'main') {\n this.initPTS[frag.cc] = initPTS;\n this.timescale[frag.cc] = timescale;\n } // Due to asynchronous processing, initial PTS may arrive later than the first VTT fragments are loaded.\n // Parse any unparsed fragments upon receiving the initial PTS.\n\n\n if (unparsedVttFrags.length) {\n this.unparsedVttFrags = [];\n unparsedVttFrags.forEach(function (frag) {\n _this.onFragLoaded(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, frag);\n });\n }\n };\n\n _proto.getExistingTrack = function getExistingTrack(trackName) {\n var media = this.media;\n\n if (media) {\n for (var i = 0; i < media.textTracks.length; i++) {\n var textTrack = media.textTracks[i];\n\n if (textTrack[trackName]) {\n return textTrack;\n }\n }\n }\n\n return null;\n };\n\n _proto.createCaptionsTrack = function createCaptionsTrack(trackName) {\n if (this.config.renderTextTracksNatively) {\n this.createNativeTrack(trackName);\n } else {\n this.createNonNativeTrack(trackName);\n }\n };\n\n _proto.createNativeTrack = function createNativeTrack(trackName) {\n if (this.captionsTracks[trackName]) {\n return;\n }\n\n var captionsProperties = this.captionsProperties,\n captionsTracks = this.captionsTracks,\n media = this.media;\n var _captionsProperties$t = captionsProperties[trackName],\n label = _captionsProperties$t.label,\n languageCode = _captionsProperties$t.languageCode; // Enable reuse of existing text track.\n\n var existingTrack = this.getExistingTrack(trackName);\n\n if (!existingTrack) {\n var textTrack = this.createTextTrack('captions', label, languageCode);\n\n if (textTrack) {\n // Set a special property on the track so we know it's managed by Hls.js\n textTrack[trackName] = true;\n captionsTracks[trackName] = textTrack;\n }\n } else {\n captionsTracks[trackName] = existingTrack;\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"clearCurrentCues\"])(captionsTracks[trackName]);\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"sendAddTrackEvent\"])(captionsTracks[trackName], media);\n }\n };\n\n _proto.createNonNativeTrack = function createNonNativeTrack(trackName) {\n if (this.nonNativeCaptionsTracks[trackName]) {\n return;\n } // Create a list of a single track for the provider to consume\n\n\n var trackProperties = this.captionsProperties[trackName];\n\n if (!trackProperties) {\n return;\n }\n\n var label = trackProperties.label;\n var track = {\n _id: trackName,\n label: label,\n kind: 'captions',\n default: trackProperties.media ? !!trackProperties.media.default : false,\n closedCaptions: trackProperties.media\n };\n this.nonNativeCaptionsTracks[trackName] = track;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].NON_NATIVE_TEXT_TRACKS_FOUND, {\n tracks: [track]\n });\n };\n\n _proto.createTextTrack = function createTextTrack(kind, label, lang) {\n var media = this.media;\n\n if (!media) {\n return;\n }\n\n return media.addTextTrack(kind, label, lang);\n };\n\n _proto.onMediaAttaching = function onMediaAttaching(event, data) {\n this.media = data.media;\n\n this._cleanTracks();\n };\n\n _proto.onMediaDetaching = function onMediaDetaching() {\n var captionsTracks = this.captionsTracks;\n Object.keys(captionsTracks).forEach(function (trackName) {\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"clearCurrentCues\"])(captionsTracks[trackName]);\n delete captionsTracks[trackName];\n });\n this.nonNativeCaptionsTracks = {};\n };\n\n _proto.onManifestLoading = function onManifestLoading() {\n this.lastSn = -1; // Detect discontinuity in fragment parsing\n\n this.lastPartIndex = -1;\n this.prevCC = -1;\n this.vttCCs = newVTTCCs(); // Detect discontinuity in subtitle manifests\n\n this._cleanTracks();\n\n this.tracks = [];\n this.captionsTracks = {};\n this.nonNativeCaptionsTracks = {};\n this.textTracks = [];\n this.unparsedVttFrags = this.unparsedVttFrags || [];\n this.initPTS = [];\n this.timescale = [];\n\n if (this.cea608Parser1 && this.cea608Parser2) {\n this.cea608Parser1.reset();\n this.cea608Parser2.reset();\n }\n };\n\n _proto._cleanTracks = function _cleanTracks() {\n // clear outdated subtitles\n var media = this.media;\n\n if (!media) {\n return;\n }\n\n var textTracks = media.textTracks;\n\n if (textTracks) {\n for (var i = 0; i < textTracks.length; i++) {\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"clearCurrentCues\"])(textTracks[i]);\n }\n }\n };\n\n _proto.onSubtitleTracksUpdated = function onSubtitleTracksUpdated(event, data) {\n var _this2 = this;\n\n this.textTracks = [];\n var tracks = data.subtitleTracks || [];\n var hasIMSC1 = tracks.some(function (track) {\n return track.textCodec === _utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"IMSC1_CODEC\"];\n });\n\n if (this.config.enableWebVTT || hasIMSC1 && this.config.enableIMSC1) {\n var sameTracks = this.tracks && tracks && this.tracks.length === tracks.length;\n this.tracks = tracks || [];\n\n if (this.config.renderTextTracksNatively) {\n var inUseTracks = this.media ? this.media.textTracks : [];\n this.tracks.forEach(function (track, index) {\n var textTrack;\n\n if (index < inUseTracks.length) {\n var inUseTrack = null;\n\n for (var i = 0; i < inUseTracks.length; i++) {\n if (canReuseVttTextTrack(inUseTracks[i], track)) {\n inUseTrack = inUseTracks[i];\n break;\n }\n } // Reuse tracks with the same label, but do not reuse 608/708 tracks\n\n\n if (inUseTrack) {\n textTrack = inUseTrack;\n }\n }\n\n if (textTrack) {\n Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"clearCurrentCues\"])(textTrack);\n } else {\n var textTrackKind = _this2._captionsOrSubtitlesFromCharacteristics(track);\n\n textTrack = _this2.createTextTrack(textTrackKind, track.name, track.lang);\n\n if (textTrack) {\n textTrack.mode = 'disabled';\n }\n }\n\n if (textTrack) {\n textTrack.groupId = track.groupId;\n\n _this2.textTracks.push(textTrack);\n }\n });\n } else if (!sameTracks && this.tracks && this.tracks.length) {\n // Create a list of tracks for the provider to consume\n var tracksList = this.tracks.map(function (track) {\n return {\n label: track.name,\n kind: track.type.toLowerCase(),\n default: track.default,\n subtitleTrack: track\n };\n });\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].NON_NATIVE_TEXT_TRACKS_FOUND, {\n tracks: tracksList\n });\n }\n }\n };\n\n _proto._captionsOrSubtitlesFromCharacteristics = function _captionsOrSubtitlesFromCharacteristics(track) {\n var _track$attrs;\n\n if ((_track$attrs = track.attrs) !== null && _track$attrs !== void 0 && _track$attrs.CHARACTERISTICS) {\n var transcribesSpokenDialog = /transcribes-spoken-dialog/gi.test(track.attrs.CHARACTERISTICS);\n var describesMusicAndSound = /describes-music-and-sound/gi.test(track.attrs.CHARACTERISTICS);\n\n if (transcribesSpokenDialog && describesMusicAndSound) {\n return 'captions';\n }\n }\n\n return 'subtitles';\n };\n\n _proto.onManifestLoaded = function onManifestLoaded(event, data) {\n var _this3 = this;\n\n if (this.config.enableCEA708Captions && data.captions) {\n data.captions.forEach(function (captionsTrack) {\n var instreamIdMatch = /(?:CC|SERVICE)([1-4])/.exec(captionsTrack.instreamId);\n\n if (!instreamIdMatch) {\n return;\n }\n\n var trackName = \"textTrack\" + instreamIdMatch[1];\n var trackProperties = _this3.captionsProperties[trackName];\n\n if (!trackProperties) {\n return;\n }\n\n trackProperties.label = captionsTrack.name;\n\n if (captionsTrack.lang) {\n // optional attribute\n trackProperties.languageCode = captionsTrack.lang;\n }\n\n trackProperties.media = captionsTrack;\n });\n }\n };\n\n _proto.onFragLoading = function onFragLoading(event, data) {\n var cea608Parser1 = this.cea608Parser1,\n cea608Parser2 = this.cea608Parser2,\n lastSn = this.lastSn,\n lastPartIndex = this.lastPartIndex;\n\n if (!this.enabled || !(cea608Parser1 && cea608Parser2)) {\n return;\n } // if this frag isn't contiguous, clear the parser so cues with bad start/end times aren't added to the textTrack\n\n\n if (data.frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_8__[\"PlaylistLevelType\"].MAIN) {\n var _data$part$index, _data$part;\n\n var sn = data.frag.sn;\n var partIndex = (_data$part$index = data === null || data === void 0 ? void 0 : (_data$part = data.part) === null || _data$part === void 0 ? void 0 : _data$part.index) != null ? _data$part$index : -1;\n\n if (!(sn === lastSn + 1 || sn === lastSn && partIndex === lastPartIndex + 1)) {\n cea608Parser1.reset();\n cea608Parser2.reset();\n }\n\n this.lastSn = sn;\n this.lastPartIndex = partIndex;\n }\n };\n\n _proto.onFragLoaded = function onFragLoaded(event, data) {\n var frag = data.frag,\n payload = data.payload;\n var initPTS = this.initPTS,\n unparsedVttFrags = this.unparsedVttFrags;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_8__[\"PlaylistLevelType\"].SUBTITLE) {\n // If fragment is subtitle type, parse as WebVTT.\n if (payload.byteLength) {\n // We need an initial synchronisation PTS. Store fragments as long as none has arrived.\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(initPTS[frag.cc])) {\n unparsedVttFrags.push(data);\n\n if (initPTS.length) {\n // finish unsuccessfully, otherwise the subtitle-stream-controller could be blocked from loading new frags.\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: new Error('Missing initial subtitle PTS')\n });\n }\n\n return;\n }\n\n var decryptData = frag.decryptdata; // fragment after decryption has a stats object\n\n var decrypted = ('stats' in data); // If the subtitles are not encrypted, parse VTTs now. Otherwise, we need to wait.\n\n if (decryptData == null || decryptData.key == null || decryptData.method !== 'AES-128' || decrypted) {\n var trackPlaylistMedia = this.tracks[frag.level];\n var vttCCs = this.vttCCs;\n\n if (!vttCCs[frag.cc]) {\n vttCCs[frag.cc] = {\n start: frag.start,\n prevCC: this.prevCC,\n new: true\n };\n this.prevCC = frag.cc;\n }\n\n if (trackPlaylistMedia && trackPlaylistMedia.textCodec === _utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"IMSC1_CODEC\"]) {\n this._parseIMSC1(frag, payload);\n } else {\n this._parseVTTs(frag, payload, vttCCs);\n }\n }\n } else {\n // In case there is no payload, finish unsuccessfully.\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: new Error('Empty subtitle payload')\n });\n }\n }\n };\n\n _proto._parseIMSC1 = function _parseIMSC1(frag, payload) {\n var _this4 = this;\n\n var hls = this.hls;\n Object(_utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"parseIMSC1\"])(payload, this.initPTS[frag.cc], this.timescale[frag.cc], function (cues) {\n _this4._appendCues(cues, frag.level);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: true,\n frag: frag\n });\n }, function (error) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"Failed to parse IMSC1: \" + error);\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: error\n });\n });\n };\n\n _proto._parseVTTs = function _parseVTTs(frag, payload, vttCCs) {\n var _frag$initSegment,\n _this5 = this;\n\n var hls = this.hls; // Parse the WebVTT file contents.\n\n var payloadWebVTT = (_frag$initSegment = frag.initSegment) !== null && _frag$initSegment !== void 0 && _frag$initSegment.data ? Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_7__[\"appendUint8Array\"])(frag.initSegment.data, new Uint8Array(payload)) : payload;\n Object(_utils_webvtt_parser__WEBPACK_IMPORTED_MODULE_4__[\"parseWebVTT\"])(payloadWebVTT, this.initPTS[frag.cc], this.timescale[frag.cc], vttCCs, frag.cc, frag.start, function (cues) {\n _this5._appendCues(cues, frag.level);\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: true,\n frag: frag\n });\n }, function (error) {\n _this5._fallbackToIMSC1(frag, payload); // Something went wrong while parsing. Trigger event with success false.\n\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"Failed to parse VTT cue: \" + error);\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error: error\n });\n });\n };\n\n _proto._fallbackToIMSC1 = function _fallbackToIMSC1(frag, payload) {\n var _this6 = this;\n\n // If textCodec is unknown, try parsing as IMSC1. Set textCodec based on the result\n var trackPlaylistMedia = this.tracks[frag.level];\n\n if (!trackPlaylistMedia.textCodec) {\n Object(_utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"parseIMSC1\"])(payload, this.initPTS[frag.cc], this.timescale[frag.cc], function () {\n trackPlaylistMedia.textCodec = _utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__[\"IMSC1_CODEC\"];\n\n _this6._parseIMSC1(frag, payload);\n }, function () {\n trackPlaylistMedia.textCodec = 'wvtt';\n });\n }\n };\n\n _proto._appendCues = function _appendCues(cues, fragLevel) {\n var hls = this.hls;\n\n if (this.config.renderTextTracksNatively) {\n var textTrack = this.textTracks[fragLevel]; // WebVTTParser.parse is an async method and if the currently selected text track mode is set to \"disabled\"\n // before parsing is done then don't try to access currentTrack.cues.getCueById as cues will be null\n // and trying to access getCueById method of cues will throw an exception\n // Because we check if the mode is disabled, we can force check `cues` below. They can't be null.\n\n if (!textTrack || textTrack.mode === 'disabled') {\n return;\n }\n\n cues.forEach(function (cue) {\n return Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"addCueToTrack\"])(textTrack, cue);\n });\n } else {\n var currentTrack = this.tracks[fragLevel];\n\n if (!currentTrack) {\n return;\n }\n\n var track = currentTrack.default ? 'default' : 'subtitles' + fragLevel;\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].CUES_PARSED, {\n type: 'subtitles',\n cues: cues,\n track: track\n });\n }\n };\n\n _proto.onFragDecrypted = function onFragDecrypted(event, data) {\n var frag = data.frag;\n\n if (frag.type === _types_loader__WEBPACK_IMPORTED_MODULE_8__[\"PlaylistLevelType\"].SUBTITLE) {\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.initPTS[frag.cc])) {\n this.unparsedVttFrags.push(data);\n return;\n }\n\n this.onFragLoaded(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_LOADED, data);\n }\n };\n\n _proto.onSubtitleTracksCleared = function onSubtitleTracksCleared() {\n this.tracks = [];\n this.captionsTracks = {};\n };\n\n _proto.onFragParsingUserdata = function onFragParsingUserdata(event, data) {\n var cea608Parser1 = this.cea608Parser1,\n cea608Parser2 = this.cea608Parser2;\n\n if (!this.enabled || !(cea608Parser1 && cea608Parser2)) {\n return;\n } // If the event contains captions (found in the bytes property), push all bytes into the parser immediately\n // It will create the proper timestamps based on the PTS value\n\n\n for (var i = 0; i < data.samples.length; i++) {\n var ccBytes = data.samples[i].bytes;\n\n if (ccBytes) {\n var ccdatas = this.extractCea608Data(ccBytes);\n cea608Parser1.addData(data.samples[i].pts, ccdatas[0]);\n cea608Parser2.addData(data.samples[i].pts, ccdatas[1]);\n }\n }\n };\n\n _proto.onBufferFlushing = function onBufferFlushing(event, _ref2) {\n var startOffset = _ref2.startOffset,\n endOffset = _ref2.endOffset,\n endOffsetSubtitles = _ref2.endOffsetSubtitles,\n type = _ref2.type;\n var media = this.media;\n\n if (!media || media.currentTime < endOffset) {\n return;\n } // Clear 608 caption cues from the captions TextTracks when the video back buffer is flushed\n // Forward cues are never removed because we can loose streamed 608 content from recent fragments\n\n\n if (!type || type === 'video') {\n var captionsTracks = this.captionsTracks;\n Object.keys(captionsTracks).forEach(function (trackName) {\n return Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"removeCuesInRange\"])(captionsTracks[trackName], startOffset, endOffset);\n });\n }\n\n if (this.config.renderTextTracksNatively) {\n // Clear VTT/IMSC1 subtitle cues from the subtitle TextTracks when the back buffer is flushed\n if (startOffset === 0 && endOffsetSubtitles !== undefined) {\n var textTracks = this.textTracks;\n Object.keys(textTracks).forEach(function (trackName) {\n return Object(_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__[\"removeCuesInRange\"])(textTracks[trackName], startOffset, endOffsetSubtitles);\n });\n }\n }\n };\n\n _proto.extractCea608Data = function extractCea608Data(byteArray) {\n var actualCCBytes = [[], []];\n var count = byteArray[0] & 0x1f;\n var position = 2;\n\n for (var j = 0; j < count; j++) {\n var tmpByte = byteArray[position++];\n var ccbyte1 = 0x7f & byteArray[position++];\n var ccbyte2 = 0x7f & byteArray[position++];\n\n if (ccbyte1 === 0 && ccbyte2 === 0) {\n continue;\n }\n\n var ccValid = (0x04 & tmpByte) !== 0; // Support all four channels\n\n if (ccValid) {\n var ccType = 0x03 & tmpByte;\n\n if (0x00\n /* CEA608 field1*/\n === ccType || 0x01\n /* CEA608 field2*/\n === ccType) {\n // Exclude CEA708 CC data.\n actualCCBytes[ccType].push(ccbyte1);\n actualCCBytes[ccType].push(ccbyte2);\n }\n }\n }\n\n return actualCCBytes;\n };\n\n return TimelineController;\n}();\n\nfunction canReuseVttTextTrack(inUseTrack, manifestTrack) {\n return inUseTrack && inUseTrack.label === manifestTrack.name && !(inUseTrack.textTrack1 || inUseTrack.textTrack2);\n}\n\nfunction intersection(x1, x2, y1, y2) {\n return Math.min(x2, y2) - Math.max(x1, y1);\n}\n\nfunction newVTTCCs() {\n return {\n ccOffset: 0,\n presentationOffset: 0,\n 0: {\n start: 0,\n prevCC: -1,\n new: true\n }\n };\n}\n\n/***/ }),\n\n/***/ \"./src/crypt/aes-crypto.ts\":\n/*!*********************************!*\\\n !*** ./src/crypt/aes-crypto.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AESCrypto; });\nvar AESCrypto = /*#__PURE__*/function () {\n function AESCrypto(subtle, iv) {\n this.subtle = void 0;\n this.aesIV = void 0;\n this.subtle = subtle;\n this.aesIV = iv;\n }\n\n var _proto = AESCrypto.prototype;\n\n _proto.decrypt = function decrypt(data, key) {\n return this.subtle.decrypt({\n name: 'AES-CBC',\n iv: this.aesIV\n }, key, data);\n };\n\n return AESCrypto;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/crypt/aes-decryptor.ts\":\n/*!************************************!*\\\n !*** ./src/crypt/aes-decryptor.ts ***!\n \\************************************/\n/*! exports provided: removePadding, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removePadding\", function() { return removePadding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AESDecryptor; });\n/* harmony import */ var _utils_typed_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/typed-array */ \"./src/utils/typed-array.ts\");\n // PKCS7\n\nfunction removePadding(array) {\n var outputBytes = array.byteLength;\n var paddingBytes = outputBytes && new DataView(array.buffer).getUint8(outputBytes - 1);\n\n if (paddingBytes) {\n return Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_0__[\"sliceUint8\"])(array, 0, outputBytes - paddingBytes);\n }\n\n return array;\n}\n\nvar AESDecryptor = /*#__PURE__*/function () {\n function AESDecryptor() {\n this.rcon = [0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n this.sBox = new Uint32Array(256);\n this.invSBox = new Uint32Array(256);\n this.key = new Uint32Array(0);\n this.ksRows = 0;\n this.keySize = 0;\n this.keySchedule = void 0;\n this.invKeySchedule = void 0;\n this.initTable();\n } // Using view.getUint32() also swaps the byte order.\n\n\n var _proto = AESDecryptor.prototype;\n\n _proto.uint8ArrayToUint32Array_ = function uint8ArrayToUint32Array_(arrayBuffer) {\n var view = new DataView(arrayBuffer);\n var newArray = new Uint32Array(4);\n\n for (var i = 0; i < 4; i++) {\n newArray[i] = view.getUint32(i * 4);\n }\n\n return newArray;\n };\n\n _proto.initTable = function initTable() {\n var sBox = this.sBox;\n var invSBox = this.invSBox;\n var subMix = this.subMix;\n var subMix0 = subMix[0];\n var subMix1 = subMix[1];\n var subMix2 = subMix[2];\n var subMix3 = subMix[3];\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n var d = new Uint32Array(256);\n var x = 0;\n var xi = 0;\n var i = 0;\n\n for (i = 0; i < 256; i++) {\n if (i < 128) {\n d[i] = i << 1;\n } else {\n d[i] = i << 1 ^ 0x11b;\n }\n }\n\n for (i = 0; i < 256; i++) {\n var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n sBox[x] = sx;\n invSBox[sx] = x; // Compute multiplication\n\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4]; // Compute sub/invSub bytes, mix columns tables\n\n var t = d[sx] * 0x101 ^ sx * 0x1010100;\n subMix0[x] = t << 24 | t >>> 8;\n subMix1[x] = t << 16 | t >>> 16;\n subMix2[x] = t << 8 | t >>> 24;\n subMix3[x] = t; // Compute inv sub bytes, inv mix columns tables\n\n t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n invSubMix0[sx] = t << 24 | t >>> 8;\n invSubMix1[sx] = t << 16 | t >>> 16;\n invSubMix2[sx] = t << 8 | t >>> 24;\n invSubMix3[sx] = t; // Compute next counter\n\n if (!x) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n };\n\n _proto.expandKey = function expandKey(keyBuffer) {\n // convert keyBuffer to Uint32Array\n var key = this.uint8ArrayToUint32Array_(keyBuffer);\n var sameKey = true;\n var offset = 0;\n\n while (offset < key.length && sameKey) {\n sameKey = key[offset] === this.key[offset];\n offset++;\n }\n\n if (sameKey) {\n return;\n }\n\n this.key = key;\n var keySize = this.keySize = key.length;\n\n if (keySize !== 4 && keySize !== 6 && keySize !== 8) {\n throw new Error('Invalid aes key size=' + keySize);\n }\n\n var ksRows = this.ksRows = (keySize + 6 + 1) * 4;\n var ksRow;\n var invKsRow;\n var keySchedule = this.keySchedule = new Uint32Array(ksRows);\n var invKeySchedule = this.invKeySchedule = new Uint32Array(ksRows);\n var sbox = this.sBox;\n var rcon = this.rcon;\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n var prev;\n var t;\n\n for (ksRow = 0; ksRow < ksRows; ksRow++) {\n if (ksRow < keySize) {\n prev = keySchedule[ksRow] = key[ksRow];\n continue;\n }\n\n t = prev;\n\n if (ksRow % keySize === 0) {\n // Rot word\n t = t << 8 | t >>> 24; // Sub word\n\n t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff]; // Mix Rcon\n\n t ^= rcon[ksRow / keySize | 0] << 24;\n } else if (keySize > 6 && ksRow % keySize === 4) {\n // Sub word\n t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff];\n }\n\n keySchedule[ksRow] = prev = (keySchedule[ksRow - keySize] ^ t) >>> 0;\n }\n\n for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n ksRow = ksRows - invKsRow;\n\n if (invKsRow & 3) {\n t = keySchedule[ksRow];\n } else {\n t = keySchedule[ksRow - 4];\n }\n\n if (invKsRow < 4 || ksRow <= 4) {\n invKeySchedule[invKsRow] = t;\n } else {\n invKeySchedule[invKsRow] = invSubMix0[sbox[t >>> 24]] ^ invSubMix1[sbox[t >>> 16 & 0xff]] ^ invSubMix2[sbox[t >>> 8 & 0xff]] ^ invSubMix3[sbox[t & 0xff]];\n }\n\n invKeySchedule[invKsRow] = invKeySchedule[invKsRow] >>> 0;\n }\n } // Adding this as a method greatly improves performance.\n ;\n\n _proto.networkToHostOrderSwap = function networkToHostOrderSwap(word) {\n return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24;\n };\n\n _proto.decrypt = function decrypt(inputArrayBuffer, offset, aesIV) {\n var nRounds = this.keySize + 6;\n var invKeySchedule = this.invKeySchedule;\n var invSBOX = this.invSBox;\n var invSubMix = this.invSubMix;\n var invSubMix0 = invSubMix[0];\n var invSubMix1 = invSubMix[1];\n var invSubMix2 = invSubMix[2];\n var invSubMix3 = invSubMix[3];\n var initVector = this.uint8ArrayToUint32Array_(aesIV);\n var initVector0 = initVector[0];\n var initVector1 = initVector[1];\n var initVector2 = initVector[2];\n var initVector3 = initVector[3];\n var inputInt32 = new Int32Array(inputArrayBuffer);\n var outputInt32 = new Int32Array(inputInt32.length);\n var t0, t1, t2, t3;\n var s0, s1, s2, s3;\n var inputWords0, inputWords1, inputWords2, inputWords3;\n var ksRow, i;\n var swapWord = this.networkToHostOrderSwap;\n\n while (offset < inputInt32.length) {\n inputWords0 = swapWord(inputInt32[offset]);\n inputWords1 = swapWord(inputInt32[offset + 1]);\n inputWords2 = swapWord(inputInt32[offset + 2]);\n inputWords3 = swapWord(inputInt32[offset + 3]);\n s0 = inputWords0 ^ invKeySchedule[0];\n s1 = inputWords3 ^ invKeySchedule[1];\n s2 = inputWords2 ^ invKeySchedule[2];\n s3 = inputWords1 ^ invKeySchedule[3];\n ksRow = 4; // Iterate through the rounds of decryption\n\n for (i = 1; i < nRounds; i++) {\n t0 = invSubMix0[s0 >>> 24] ^ invSubMix1[s1 >> 16 & 0xff] ^ invSubMix2[s2 >> 8 & 0xff] ^ invSubMix3[s3 & 0xff] ^ invKeySchedule[ksRow];\n t1 = invSubMix0[s1 >>> 24] ^ invSubMix1[s2 >> 16 & 0xff] ^ invSubMix2[s3 >> 8 & 0xff] ^ invSubMix3[s0 & 0xff] ^ invKeySchedule[ksRow + 1];\n t2 = invSubMix0[s2 >>> 24] ^ invSubMix1[s3 >> 16 & 0xff] ^ invSubMix2[s0 >> 8 & 0xff] ^ invSubMix3[s1 & 0xff] ^ invKeySchedule[ksRow + 2];\n t3 = invSubMix0[s3 >>> 24] ^ invSubMix1[s0 >> 16 & 0xff] ^ invSubMix2[s1 >> 8 & 0xff] ^ invSubMix3[s2 & 0xff] ^ invKeySchedule[ksRow + 3]; // Update state\n\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n ksRow = ksRow + 4;\n } // Shift rows, sub bytes, add round key\n\n\n t0 = invSBOX[s0 >>> 24] << 24 ^ invSBOX[s1 >> 16 & 0xff] << 16 ^ invSBOX[s2 >> 8 & 0xff] << 8 ^ invSBOX[s3 & 0xff] ^ invKeySchedule[ksRow];\n t1 = invSBOX[s1 >>> 24] << 24 ^ invSBOX[s2 >> 16 & 0xff] << 16 ^ invSBOX[s3 >> 8 & 0xff] << 8 ^ invSBOX[s0 & 0xff] ^ invKeySchedule[ksRow + 1];\n t2 = invSBOX[s2 >>> 24] << 24 ^ invSBOX[s3 >> 16 & 0xff] << 16 ^ invSBOX[s0 >> 8 & 0xff] << 8 ^ invSBOX[s1 & 0xff] ^ invKeySchedule[ksRow + 2];\n t3 = invSBOX[s3 >>> 24] << 24 ^ invSBOX[s0 >> 16 & 0xff] << 16 ^ invSBOX[s1 >> 8 & 0xff] << 8 ^ invSBOX[s2 & 0xff] ^ invKeySchedule[ksRow + 3]; // Write\n\n outputInt32[offset] = swapWord(t0 ^ initVector0);\n outputInt32[offset + 1] = swapWord(t3 ^ initVector1);\n outputInt32[offset + 2] = swapWord(t2 ^ initVector2);\n outputInt32[offset + 3] = swapWord(t1 ^ initVector3); // reset initVector to last 4 unsigned int\n\n initVector0 = inputWords0;\n initVector1 = inputWords1;\n initVector2 = inputWords2;\n initVector3 = inputWords3;\n offset = offset + 4;\n }\n\n return outputInt32.buffer;\n };\n\n return AESDecryptor;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/crypt/decrypter.ts\":\n/*!********************************!*\\\n !*** ./src/crypt/decrypter.ts ***!\n \\********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Decrypter; });\n/* harmony import */ var _aes_crypto__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./aes-crypto */ \"./src/crypt/aes-crypto.ts\");\n/* harmony import */ var _fast_aes_key__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fast-aes-key */ \"./src/crypt/fast-aes-key.ts\");\n/* harmony import */ var _aes_decryptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./aes-decryptor */ \"./src/crypt/aes-decryptor.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _utils_typed_array__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/typed-array */ \"./src/utils/typed-array.ts\");\n\n\n\n\n\n\nvar CHUNK_SIZE = 16; // 16 bytes, 128 bits\n\nvar Decrypter = /*#__PURE__*/function () {\n function Decrypter(observer, config, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$removePKCS7Paddi = _ref.removePKCS7Padding,\n removePKCS7Padding = _ref$removePKCS7Paddi === void 0 ? true : _ref$removePKCS7Paddi;\n\n this.logEnabled = true;\n this.observer = void 0;\n this.config = void 0;\n this.removePKCS7Padding = void 0;\n this.subtle = null;\n this.softwareDecrypter = null;\n this.key = null;\n this.fastAesKey = null;\n this.remainderData = null;\n this.currentIV = null;\n this.currentResult = null;\n this.observer = observer;\n this.config = config;\n this.removePKCS7Padding = removePKCS7Padding; // built in decryptor expects PKCS7 padding\n\n if (removePKCS7Padding) {\n try {\n var browserCrypto = self.crypto;\n\n if (browserCrypto) {\n this.subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\n }\n } catch (e) {\n /* no-op */\n }\n }\n\n if (this.subtle === null) {\n this.config.enableSoftwareAES = true;\n }\n }\n\n var _proto = Decrypter.prototype;\n\n _proto.destroy = function destroy() {\n // @ts-ignore\n this.observer = null;\n };\n\n _proto.isSync = function isSync() {\n return this.config.enableSoftwareAES;\n };\n\n _proto.flush = function flush() {\n var currentResult = this.currentResult;\n\n if (!currentResult) {\n this.reset();\n return;\n }\n\n var data = new Uint8Array(currentResult);\n this.reset();\n\n if (this.removePKCS7Padding) {\n return Object(_aes_decryptor__WEBPACK_IMPORTED_MODULE_2__[\"removePadding\"])(data);\n }\n\n return data;\n };\n\n _proto.reset = function reset() {\n this.currentResult = null;\n this.currentIV = null;\n this.remainderData = null;\n\n if (this.softwareDecrypter) {\n this.softwareDecrypter = null;\n }\n };\n\n _proto.decrypt = function decrypt(data, key, iv, callback) {\n if (this.config.enableSoftwareAES) {\n this.softwareDecrypt(new Uint8Array(data), key, iv);\n var decryptResult = this.flush();\n\n if (decryptResult) {\n callback(decryptResult.buffer);\n }\n } else {\n this.webCryptoDecrypt(new Uint8Array(data), key, iv).then(callback);\n }\n };\n\n _proto.softwareDecrypt = function softwareDecrypt(data, key, iv) {\n var currentIV = this.currentIV,\n currentResult = this.currentResult,\n remainderData = this.remainderData;\n this.logOnce('JS AES decrypt'); // The output is staggered during progressive parsing - the current result is cached, and emitted on the next call\n // This is done in order to strip PKCS7 padding, which is found at the end of each segment. We only know we've reached\n // the end on flush(), but by that time we have already received all bytes for the segment.\n // Progressive decryption does not work with WebCrypto\n\n if (remainderData) {\n data = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"appendUint8Array\"])(remainderData, data);\n this.remainderData = null;\n } // Byte length must be a multiple of 16 (AES-128 = 128 bit blocks = 16 bytes)\n\n\n var currentChunk = this.getValidChunk(data);\n\n if (!currentChunk.length) {\n return null;\n }\n\n if (currentIV) {\n iv = currentIV;\n }\n\n var softwareDecrypter = this.softwareDecrypter;\n\n if (!softwareDecrypter) {\n softwareDecrypter = this.softwareDecrypter = new _aes_decryptor__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n }\n\n softwareDecrypter.expandKey(key);\n var result = currentResult;\n this.currentResult = softwareDecrypter.decrypt(currentChunk.buffer, 0, iv);\n this.currentIV = Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_5__[\"sliceUint8\"])(currentChunk, -16).buffer;\n\n if (!result) {\n return null;\n }\n\n return result;\n };\n\n _proto.webCryptoDecrypt = function webCryptoDecrypt(data, key, iv) {\n var _this = this;\n\n var subtle = this.subtle;\n\n if (this.key !== key || !this.fastAesKey) {\n this.key = key;\n this.fastAesKey = new _fast_aes_key__WEBPACK_IMPORTED_MODULE_1__[\"default\"](subtle, key);\n }\n\n return this.fastAesKey.expandKey().then(function (aesKey) {\n // decrypt using web crypto\n if (!subtle) {\n return Promise.reject(new Error('web crypto not initialized'));\n }\n\n var crypto = new _aes_crypto__WEBPACK_IMPORTED_MODULE_0__[\"default\"](subtle, iv);\n return crypto.decrypt(data.buffer, aesKey);\n }).catch(function (err) {\n return _this.onWebCryptoError(err, data, key, iv);\n });\n };\n\n _proto.onWebCryptoError = function onWebCryptoError(err, data, key, iv) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('[decrypter.ts]: WebCrypto Error, disable WebCrypto API:', err);\n this.config.enableSoftwareAES = true;\n this.logEnabled = true;\n return this.softwareDecrypt(data, key, iv);\n };\n\n _proto.getValidChunk = function getValidChunk(data) {\n var currentChunk = data;\n var splitPoint = data.length - data.length % CHUNK_SIZE;\n\n if (splitPoint !== data.length) {\n currentChunk = Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_5__[\"sliceUint8\"])(data, 0, splitPoint);\n this.remainderData = Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_5__[\"sliceUint8\"])(data, splitPoint);\n }\n\n return currentChunk;\n };\n\n _proto.logOnce = function logOnce(msg) {\n if (!this.logEnabled) {\n return;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log(\"[decrypter.ts]: \" + msg);\n this.logEnabled = false;\n };\n\n return Decrypter;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/crypt/fast-aes-key.ts\":\n/*!***********************************!*\\\n !*** ./src/crypt/fast-aes-key.ts ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FastAESKey; });\nvar FastAESKey = /*#__PURE__*/function () {\n function FastAESKey(subtle, key) {\n this.subtle = void 0;\n this.key = void 0;\n this.subtle = subtle;\n this.key = key;\n }\n\n var _proto = FastAESKey.prototype;\n\n _proto.expandKey = function expandKey() {\n return this.subtle.importKey('raw', this.key, {\n name: 'AES-CBC'\n }, false, ['encrypt', 'decrypt']);\n };\n\n return FastAESKey;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/demux/aacdemuxer.ts\":\n/*!*********************************!*\\\n !*** ./src/demux/aacdemuxer.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base-audio-demuxer */ \"./src/demux/base-audio-demuxer.ts\");\n/* harmony import */ var _adts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adts */ \"./src/demux/adts.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * AAC demuxer\n */\n\n\n\n\n\nvar AACDemuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {\n _inheritsLoose(AACDemuxer, _BaseAudioDemuxer);\n\n function AACDemuxer(observer, config) {\n var _this;\n\n _this = _BaseAudioDemuxer.call(this) || this;\n _this.observer = void 0;\n _this.config = void 0;\n _this.observer = observer;\n _this.config = config;\n return _this;\n }\n\n var _proto = AACDemuxer.prototype;\n\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n _BaseAudioDemuxer.prototype.resetInitSegment.call(this, initSegment, audioCodec, videoCodec, trackDuration);\n\n this._audioTrack = {\n container: 'audio/adts',\n type: 'audio',\n id: 2,\n pid: -1,\n sequenceNumber: 0,\n segmentCodec: 'aac',\n samples: [],\n manifestCodec: audioCodec,\n duration: trackDuration,\n inputTimeScale: 90000,\n dropped: 0\n };\n } // Source for probe info - https://wiki.multimedia.cx/index.php?title=ADTS\n ;\n\n AACDemuxer.probe = function probe(data) {\n if (!data) {\n return false;\n } // Check for the ADTS sync word\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n\n\n var id3Data = _demux_id3__WEBPACK_IMPORTED_MODULE_3__[\"getID3Data\"](data, 0) || [];\n var offset = id3Data.length;\n\n for (var length = data.length; offset < length; offset++) {\n if (_adts__WEBPACK_IMPORTED_MODULE_1__[\"probe\"](data, offset)) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('ADTS sync word found !');\n return true;\n }\n }\n\n return false;\n };\n\n _proto.canParse = function canParse(data, offset) {\n return _adts__WEBPACK_IMPORTED_MODULE_1__[\"canParse\"](data, offset);\n };\n\n _proto.appendFrame = function appendFrame(track, data, offset) {\n _adts__WEBPACK_IMPORTED_MODULE_1__[\"initTrackConfig\"](track, this.observer, data, offset, track.manifestCodec);\n var frame = _adts__WEBPACK_IMPORTED_MODULE_1__[\"appendFrame\"](track, data, offset, this.basePTS, this.frameIndex);\n\n if (frame && frame.missing === 0) {\n return frame;\n }\n };\n\n return AACDemuxer;\n}(_base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AACDemuxer);\n\n/***/ }),\n\n/***/ \"./src/demux/adts.ts\":\n/*!***************************!*\\\n !*** ./src/demux/adts.ts ***!\n \\***************************/\n/*! exports provided: getAudioConfig, isHeaderPattern, getHeaderLength, getFullFrameLength, canGetFrameLength, isHeader, canParse, probe, initTrackConfig, getFrameDuration, parseFrameHeader, appendFrame */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAudioConfig\", function() { return getAudioConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeaderPattern\", function() { return isHeaderPattern; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getHeaderLength\", function() { return getHeaderLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFullFrameLength\", function() { return getFullFrameLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"canGetFrameLength\", function() { return canGetFrameLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeader\", function() { return isHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"canParse\", function() { return canParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"probe\", function() { return probe; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initTrackConfig\", function() { return initTrackConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFrameDuration\", function() { return getFrameDuration; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseFrameHeader\", function() { return parseFrameHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"appendFrame\", function() { return appendFrame; });\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/**\n * ADTS parser helper\n * @link https://wiki.multimedia.cx/index.php?title=ADTS\n */\n\n\n\nfunction getAudioConfig(observer, data, offset, audioCodec) {\n var adtsObjectType;\n var adtsExtensionSamplingIndex;\n var adtsChanelConfig;\n var config;\n var userAgent = navigator.userAgent.toLowerCase();\n var manifestCodec = audioCodec;\n var adtsSampleingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350]; // byte 2\n\n adtsObjectType = ((data[offset + 2] & 0xc0) >>> 6) + 1;\n var adtsSamplingIndex = (data[offset + 2] & 0x3c) >>> 2;\n\n if (adtsSamplingIndex > adtsSampleingRates.length - 1) {\n observer.trigger(_events__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_PARSING_ERROR,\n fatal: true,\n reason: \"invalid ADTS sampling index:\" + adtsSamplingIndex\n });\n return;\n }\n\n adtsChanelConfig = (data[offset + 2] & 0x01) << 2; // byte 3\n\n adtsChanelConfig |= (data[offset + 3] & 0xc0) >>> 6;\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].log(\"manifest codec:\" + audioCodec + \", ADTS type:\" + adtsObjectType + \", samplingIndex:\" + adtsSamplingIndex); // firefox: freq less than 24kHz = AAC SBR (HE-AAC)\n\n if (/firefox/i.test(userAgent)) {\n if (adtsSamplingIndex >= 6) {\n adtsObjectType = 5;\n config = new Array(4); // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n\n adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n } else {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n } // Android : always use AAC\n\n } else if (userAgent.indexOf('android') !== -1) {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n } else {\n /* for other browsers (Chrome/Vivaldi/Opera ...)\n always force audio type to be HE-AAC SBR, as some browsers do not support audio codec switch properly (like Chrome ...)\n */\n adtsObjectType = 5;\n config = new Array(4); // if (manifest codec is HE-AAC or HE-AACv2) OR (manifest codec not specified AND frequency less than 24kHz)\n\n if (audioCodec && (audioCodec.indexOf('mp4a.40.29') !== -1 || audioCodec.indexOf('mp4a.40.5') !== -1) || !audioCodec && adtsSamplingIndex >= 6) {\n // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n } else {\n // if (manifest codec is AAC) AND (frequency less than 24kHz AND nb channel is 1) OR (manifest codec not specified and mono audio)\n // Chrome fails to play back with low frequency AAC LC mono when initialized with HE-AAC. This is not a problem with stereo.\n if (audioCodec && audioCodec.indexOf('mp4a.40.2') !== -1 && (adtsSamplingIndex >= 6 && adtsChanelConfig === 1 || /vivaldi/i.test(userAgent)) || !audioCodec && adtsChanelConfig === 1) {\n adtsObjectType = 2;\n config = new Array(2);\n }\n\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n }\n }\n /* refer to http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config\n ISO 14496-3 (AAC).pdf - Table 1.13 — Syntax of AudioSpecificConfig()\n Audio Profile / Audio Object Type\n 0: Null\n 1: AAC Main\n 2: AAC LC (Low Complexity)\n 3: AAC SSR (Scalable Sample Rate)\n 4: AAC LTP (Long Term Prediction)\n 5: SBR (Spectral Band Replication)\n 6: AAC Scalable\n sampling freq\n 0: 96000 Hz\n 1: 88200 Hz\n 2: 64000 Hz\n 3: 48000 Hz\n 4: 44100 Hz\n 5: 32000 Hz\n 6: 24000 Hz\n 7: 22050 Hz\n 8: 16000 Hz\n 9: 12000 Hz\n 10: 11025 Hz\n 11: 8000 Hz\n 12: 7350 Hz\n 13: Reserved\n 14: Reserved\n 15: frequency is written explictly\n Channel Configurations\n These are the channel configurations:\n 0: Defined in AOT Specifc Config\n 1: 1 channel: front-center\n 2: 2 channels: front-left, front-right\n */\n // audioObjectType = profile => profile, the MPEG-4 Audio Object Type minus 1\n\n\n config[0] = adtsObjectType << 3; // samplingFrequencyIndex\n\n config[0] |= (adtsSamplingIndex & 0x0e) >> 1;\n config[1] |= (adtsSamplingIndex & 0x01) << 7; // channelConfiguration\n\n config[1] |= adtsChanelConfig << 3;\n\n if (adtsObjectType === 5) {\n // adtsExtensionSampleingIndex\n config[1] |= (adtsExtensionSamplingIndex & 0x0e) >> 1;\n config[2] = (adtsExtensionSamplingIndex & 0x01) << 7; // adtsObjectType (force to 2, chrome is checking that object type is less than 5 ???\n // https://chromium.googlesource.com/chromium/src.git/+/master/media/formats/mp4/aac.cc\n\n config[2] |= 2 << 2;\n config[3] = 0;\n }\n\n return {\n config: config,\n samplerate: adtsSampleingRates[adtsSamplingIndex],\n channelCount: adtsChanelConfig,\n codec: 'mp4a.40.' + adtsObjectType,\n manifestCodec: manifestCodec\n };\n}\nfunction isHeaderPattern(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0;\n}\nfunction getHeaderLength(data, offset) {\n return data[offset + 1] & 0x01 ? 7 : 9;\n}\nfunction getFullFrameLength(data, offset) {\n return (data[offset + 3] & 0x03) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 0xe0) >>> 5;\n}\nfunction canGetFrameLength(data, offset) {\n return offset + 5 < data.length;\n}\nfunction isHeader(data, offset) {\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n return offset + 1 < data.length && isHeaderPattern(data, offset);\n}\nfunction canParse(data, offset) {\n return canGetFrameLength(data, offset) && isHeaderPattern(data, offset) && getFullFrameLength(data, offset) <= data.length - offset;\n}\nfunction probe(data, offset) {\n // same as isHeader but we also check that ADTS frame follows last ADTS frame\n // or end of data is reached\n if (isHeader(data, offset)) {\n // ADTS header Length\n var headerLength = getHeaderLength(data, offset);\n\n if (offset + headerLength >= data.length) {\n return false;\n } // ADTS frame Length\n\n\n var frameLength = getFullFrameLength(data, offset);\n\n if (frameLength <= headerLength) {\n return false;\n }\n\n var newOffset = offset + frameLength;\n return newOffset === data.length || isHeader(data, newOffset);\n }\n\n return false;\n}\nfunction initTrackConfig(track, observer, data, offset, audioCodec) {\n if (!track.samplerate) {\n var config = getAudioConfig(observer, data, offset, audioCodec);\n\n if (!config) {\n return;\n }\n\n track.config = config.config;\n track.samplerate = config.samplerate;\n track.channelCount = config.channelCount;\n track.codec = config.codec;\n track.manifestCodec = config.manifestCodec;\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].log(\"parsed codec:\" + track.codec + \", rate:\" + config.samplerate + \", channels:\" + config.channelCount);\n }\n}\nfunction getFrameDuration(samplerate) {\n return 1024 * 90000 / samplerate;\n}\nfunction parseFrameHeader(data, offset) {\n // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header\n var headerLength = getHeaderLength(data, offset);\n\n if (offset + headerLength <= data.length) {\n // retrieve frame size\n var frameLength = getFullFrameLength(data, offset) - headerLength;\n\n if (frameLength > 0) {\n // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}`);\n return {\n headerLength: headerLength,\n frameLength: frameLength\n };\n }\n }\n}\nfunction appendFrame(track, data, offset, pts, frameIndex) {\n var frameDuration = getFrameDuration(track.samplerate);\n var stamp = pts + frameIndex * frameDuration;\n var header = parseFrameHeader(data, offset);\n var unit;\n\n if (header) {\n var frameLength = header.frameLength,\n headerLength = header.headerLength;\n\n var _length = headerLength + frameLength;\n\n var missing = Math.max(0, offset + _length - data.length); // logger.log(`AAC frame ${frameIndex}, pts:${stamp} length@offset/total: ${frameLength}@${offset+headerLength}/${data.byteLength} missing: ${missing}`);\n\n if (missing) {\n unit = new Uint8Array(_length - headerLength);\n unit.set(data.subarray(offset + headerLength, data.length), 0);\n } else {\n unit = data.subarray(offset + headerLength, offset + _length);\n }\n\n var _sample = {\n unit: unit,\n pts: stamp\n };\n\n if (!missing) {\n track.samples.push(_sample);\n }\n\n return {\n sample: _sample,\n length: _length,\n missing: missing\n };\n } // overflow incomplete header\n\n\n var length = data.length - offset;\n unit = new Uint8Array(length);\n unit.set(data.subarray(offset, data.length), 0);\n var sample = {\n unit: unit,\n pts: stamp\n };\n return {\n sample: sample,\n length: length,\n missing: -1\n };\n}\n\n/***/ }),\n\n/***/ \"./src/demux/base-audio-demuxer.ts\":\n/*!*****************************************!*\\\n !*** ./src/demux/base-audio-demuxer.ts ***!\n \\*****************************************/\n/*! exports provided: initPTSFn, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initPTSFn\", function() { return initPTSFn; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\n/* harmony import */ var _types_demuxer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../types/demuxer */ \"./src/types/demuxer.ts\");\n/* harmony import */ var _dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dummy-demuxed-track */ \"./src/demux/dummy-demuxed-track.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _utils_typed_array__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/typed-array */ \"./src/utils/typed-array.ts\");\n\n\n\n\n\n\n\n\nvar BaseAudioDemuxer = /*#__PURE__*/function () {\n function BaseAudioDemuxer() {\n this._audioTrack = void 0;\n this._id3Track = void 0;\n this.frameIndex = 0;\n this.cachedData = null;\n this.basePTS = null;\n this.initPTS = null;\n }\n\n var _proto = BaseAudioDemuxer.prototype;\n\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n this._id3Track = {\n type: 'id3',\n id: 3,\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: 0,\n samples: [],\n dropped: 0\n };\n };\n\n _proto.resetTimeStamp = function resetTimeStamp(deaultTimestamp) {\n this.initPTS = deaultTimestamp;\n this.resetContiguity();\n };\n\n _proto.resetContiguity = function resetContiguity() {\n this.basePTS = null;\n this.frameIndex = 0;\n };\n\n _proto.canParse = function canParse(data, offset) {\n return false;\n };\n\n _proto.appendFrame = function appendFrame(track, data, offset) {} // feed incoming data to the front of the parsing pipeline\n ;\n\n _proto.demux = function demux(data, timeOffset) {\n if (this.cachedData) {\n data = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"appendUint8Array\"])(this.cachedData, data);\n this.cachedData = null;\n }\n\n var id3Data = _demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"getID3Data\"](data, 0);\n var offset = id3Data ? id3Data.length : 0;\n var lastDataIndex;\n var pts;\n var track = this._audioTrack;\n var id3Track = this._id3Track;\n var timestamp = id3Data ? _demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"getTimeStamp\"](id3Data) : undefined;\n var length = data.length;\n\n if (this.basePTS === null || this.frameIndex === 0 && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(timestamp)) {\n this.basePTS = initPTSFn(timestamp, timeOffset, this.initPTS);\n } // more expressive than alternative: id3Data?.length\n\n\n if (id3Data && id3Data.length > 0) {\n id3Track.samples.push({\n pts: this.basePTS,\n dts: this.basePTS,\n data: id3Data,\n type: _types_demuxer__WEBPACK_IMPORTED_MODULE_2__[\"MetadataSchema\"].audioId3\n });\n }\n\n pts = this.basePTS;\n\n while (offset < length) {\n if (this.canParse(data, offset)) {\n var frame = this.appendFrame(track, data, offset);\n\n if (frame) {\n this.frameIndex++;\n pts = frame.sample.pts;\n offset += frame.length;\n lastDataIndex = offset;\n } else {\n offset = length;\n }\n } else if (_demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"canParse\"](data, offset)) {\n // after a ID3.canParse, a call to ID3.getID3Data *should* always returns some data\n id3Data = _demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"getID3Data\"](data, offset);\n id3Track.samples.push({\n pts: pts,\n dts: pts,\n data: id3Data,\n type: _types_demuxer__WEBPACK_IMPORTED_MODULE_2__[\"MetadataSchema\"].audioId3\n });\n offset += id3Data.length;\n lastDataIndex = offset;\n } else {\n offset++;\n }\n\n if (offset === length && lastDataIndex !== length) {\n var partialData = Object(_utils_typed_array__WEBPACK_IMPORTED_MODULE_5__[\"sliceUint8\"])(data, lastDataIndex);\n\n if (this.cachedData) {\n this.cachedData = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"appendUint8Array\"])(this.cachedData, partialData);\n } else {\n this.cachedData = partialData;\n }\n }\n }\n\n return {\n audioTrack: track,\n videoTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])(),\n id3Track: id3Track,\n textTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])()\n };\n };\n\n _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) {\n return Promise.reject(new Error(\"[\" + this + \"] This demuxer does not support Sample-AES decryption\"));\n };\n\n _proto.flush = function flush(timeOffset) {\n // Parse cache in case of remaining frames.\n var cachedData = this.cachedData;\n\n if (cachedData) {\n this.cachedData = null;\n this.demux(cachedData, 0);\n }\n\n return {\n audioTrack: this._audioTrack,\n videoTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])(),\n id3Track: this._id3Track,\n textTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])()\n };\n };\n\n _proto.destroy = function destroy() {};\n\n return BaseAudioDemuxer;\n}();\n/**\n * Initialize PTS\n * <p>\n * use timestamp unless it is undefined, NaN or Infinity\n * </p>\n */\n\n\nvar initPTSFn = function initPTSFn(timestamp, timeOffset, initPTS) {\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(timestamp)) {\n return timestamp * 90;\n }\n\n return timeOffset * 90000 + (initPTS || 0);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (BaseAudioDemuxer);\n\n/***/ }),\n\n/***/ \"./src/demux/chunk-cache.ts\":\n/*!**********************************!*\\\n !*** ./src/demux/chunk-cache.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ChunkCache; });\nvar ChunkCache = /*#__PURE__*/function () {\n function ChunkCache() {\n this.chunks = [];\n this.dataLength = 0;\n }\n\n var _proto = ChunkCache.prototype;\n\n _proto.push = function push(chunk) {\n this.chunks.push(chunk);\n this.dataLength += chunk.length;\n };\n\n _proto.flush = function flush() {\n var chunks = this.chunks,\n dataLength = this.dataLength;\n var result;\n\n if (!chunks.length) {\n return new Uint8Array(0);\n } else if (chunks.length === 1) {\n result = chunks[0];\n } else {\n result = concatUint8Arrays(chunks, dataLength);\n }\n\n this.reset();\n return result;\n };\n\n _proto.reset = function reset() {\n this.chunks.length = 0;\n this.dataLength = 0;\n };\n\n return ChunkCache;\n}();\n\n\n\nfunction concatUint8Arrays(chunks, dataLength) {\n var result = new Uint8Array(dataLength);\n var offset = 0;\n\n for (var i = 0; i < chunks.length; i++) {\n var chunk = chunks[i];\n result.set(chunk, offset);\n offset += chunk.length;\n }\n\n return result;\n}\n\n/***/ }),\n\n/***/ \"./src/demux/dummy-demuxed-track.ts\":\n/*!******************************************!*\\\n !*** ./src/demux/dummy-demuxed-track.ts ***!\n \\******************************************/\n/*! exports provided: dummyTrack */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dummyTrack\", function() { return dummyTrack; });\nfunction dummyTrack(type, inputTimeScale) {\n if (type === void 0) {\n type = '';\n }\n\n if (inputTimeScale === void 0) {\n inputTimeScale = 90000;\n }\n\n return {\n type: type,\n id: -1,\n pid: -1,\n inputTimeScale: inputTimeScale,\n sequenceNumber: -1,\n samples: [],\n dropped: 0\n };\n}\n\n/***/ }),\n\n/***/ \"./src/demux/exp-golomb.ts\":\n/*!*********************************!*\\\n !*** ./src/demux/exp-golomb.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/**\n * Parser for exponential Golomb codes, a variable-bitwidth number encoding scheme used by h264.\n */\n\n\nvar ExpGolomb = /*#__PURE__*/function () {\n function ExpGolomb(data) {\n this.data = void 0;\n this.bytesAvailable = void 0;\n this.word = void 0;\n this.bitsAvailable = void 0;\n this.data = data; // the number of bytes left to examine in this.data\n\n this.bytesAvailable = data.byteLength; // the current word being examined\n\n this.word = 0; // :uint\n // the number of bits left to examine in the current word\n\n this.bitsAvailable = 0; // :uint\n } // ():void\n\n\n var _proto = ExpGolomb.prototype;\n\n _proto.loadWord = function loadWord() {\n var data = this.data;\n var bytesAvailable = this.bytesAvailable;\n var position = data.byteLength - bytesAvailable;\n var workingBytes = new Uint8Array(4);\n var availableBytes = Math.min(4, bytesAvailable);\n\n if (availableBytes === 0) {\n throw new Error('no bytes available');\n }\n\n workingBytes.set(data.subarray(position, position + availableBytes));\n this.word = new DataView(workingBytes.buffer).getUint32(0); // track the amount of this.data that has been processed\n\n this.bitsAvailable = availableBytes * 8;\n this.bytesAvailable -= availableBytes;\n } // (count:int):void\n ;\n\n _proto.skipBits = function skipBits(count) {\n var skipBytes; // :int\n\n if (this.bitsAvailable > count) {\n this.word <<= count;\n this.bitsAvailable -= count;\n } else {\n count -= this.bitsAvailable;\n skipBytes = count >> 3;\n count -= skipBytes >> 3;\n this.bytesAvailable -= skipBytes;\n this.loadWord();\n this.word <<= count;\n this.bitsAvailable -= count;\n }\n } // (size:int):uint\n ;\n\n _proto.readBits = function readBits(size) {\n var bits = Math.min(this.bitsAvailable, size); // :uint\n\n var valu = this.word >>> 32 - bits; // :uint\n\n if (size > 32) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].error('Cannot read more than 32 bits at a time');\n }\n\n this.bitsAvailable -= bits;\n\n if (this.bitsAvailable > 0) {\n this.word <<= bits;\n } else if (this.bytesAvailable > 0) {\n this.loadWord();\n }\n\n bits = size - bits;\n\n if (bits > 0 && this.bitsAvailable) {\n return valu << bits | this.readBits(bits);\n } else {\n return valu;\n }\n } // ():uint\n ;\n\n _proto.skipLZ = function skipLZ() {\n var leadingZeroCount; // :uint\n\n for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) {\n if ((this.word & 0x80000000 >>> leadingZeroCount) !== 0) {\n // the first bit of working word is 1\n this.word <<= leadingZeroCount;\n this.bitsAvailable -= leadingZeroCount;\n return leadingZeroCount;\n }\n } // we exhausted word and still have not found a 1\n\n\n this.loadWord();\n return leadingZeroCount + this.skipLZ();\n } // ():void\n ;\n\n _proto.skipUEG = function skipUEG() {\n this.skipBits(1 + this.skipLZ());\n } // ():void\n ;\n\n _proto.skipEG = function skipEG() {\n this.skipBits(1 + this.skipLZ());\n } // ():uint\n ;\n\n _proto.readUEG = function readUEG() {\n var clz = this.skipLZ(); // :uint\n\n return this.readBits(clz + 1) - 1;\n } // ():int\n ;\n\n _proto.readEG = function readEG() {\n var valu = this.readUEG(); // :int\n\n if (0x01 & valu) {\n // the number is odd if the low order bit is set\n return 1 + valu >>> 1; // add 1 to make it even, and divide by 2\n } else {\n return -1 * (valu >>> 1); // divide by two then make it negative\n }\n } // Some convenience functions\n // :Boolean\n ;\n\n _proto.readBoolean = function readBoolean() {\n return this.readBits(1) === 1;\n } // ():int\n ;\n\n _proto.readUByte = function readUByte() {\n return this.readBits(8);\n } // ():int\n ;\n\n _proto.readUShort = function readUShort() {\n return this.readBits(16);\n } // ():int\n ;\n\n _proto.readUInt = function readUInt() {\n return this.readBits(32);\n }\n /**\n * Advance the ExpGolomb decoder past a scaling list. The scaling\n * list is optionally transmitted as part of a sequence parameter\n * set and is not relevant to transmuxing.\n * @param count the number of entries in this scaling list\n * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1\n */\n ;\n\n _proto.skipScalingList = function skipScalingList(count) {\n var lastScale = 8;\n var nextScale = 8;\n var deltaScale;\n\n for (var j = 0; j < count; j++) {\n if (nextScale !== 0) {\n deltaScale = this.readEG();\n nextScale = (lastScale + deltaScale + 256) % 256;\n }\n\n lastScale = nextScale === 0 ? lastScale : nextScale;\n }\n }\n /**\n * Read a sequence parameter set and return some interesting video\n * properties. A sequence parameter set is the H264 metadata that\n * describes the properties of upcoming video frames.\n * @param data {Uint8Array} the bytes of a sequence parameter set\n * @return {object} an object with configuration parsed from the\n * sequence parameter set, including the dimensions of the\n * associated video frames.\n */\n ;\n\n _proto.readSPS = function readSPS() {\n var frameCropLeftOffset = 0;\n var frameCropRightOffset = 0;\n var frameCropTopOffset = 0;\n var frameCropBottomOffset = 0;\n var numRefFramesInPicOrderCntCycle;\n var scalingListCount;\n var i;\n var readUByte = this.readUByte.bind(this);\n var readBits = this.readBits.bind(this);\n var readUEG = this.readUEG.bind(this);\n var readBoolean = this.readBoolean.bind(this);\n var skipBits = this.skipBits.bind(this);\n var skipEG = this.skipEG.bind(this);\n var skipUEG = this.skipUEG.bind(this);\n var skipScalingList = this.skipScalingList.bind(this);\n readUByte();\n var profileIdc = readUByte(); // profile_idc\n\n readBits(5); // profileCompat constraint_set[0-4]_flag, u(5)\n\n skipBits(3); // reserved_zero_3bits u(3),\n\n readUByte(); // level_idc u(8)\n\n skipUEG(); // seq_parameter_set_id\n // some profiles have more optional data we don't need\n\n if (profileIdc === 100 || profileIdc === 110 || profileIdc === 122 || profileIdc === 244 || profileIdc === 44 || profileIdc === 83 || profileIdc === 86 || profileIdc === 118 || profileIdc === 128) {\n var chromaFormatIdc = readUEG();\n\n if (chromaFormatIdc === 3) {\n skipBits(1);\n } // separate_colour_plane_flag\n\n\n skipUEG(); // bit_depth_luma_minus8\n\n skipUEG(); // bit_depth_chroma_minus8\n\n skipBits(1); // qpprime_y_zero_transform_bypass_flag\n\n if (readBoolean()) {\n // seq_scaling_matrix_present_flag\n scalingListCount = chromaFormatIdc !== 3 ? 8 : 12;\n\n for (i = 0; i < scalingListCount; i++) {\n if (readBoolean()) {\n // seq_scaling_list_present_flag[ i ]\n if (i < 6) {\n skipScalingList(16);\n } else {\n skipScalingList(64);\n }\n }\n }\n }\n }\n\n skipUEG(); // log2_max_frame_num_minus4\n\n var picOrderCntType = readUEG();\n\n if (picOrderCntType === 0) {\n readUEG(); // log2_max_pic_order_cnt_lsb_minus4\n } else if (picOrderCntType === 1) {\n skipBits(1); // delta_pic_order_always_zero_flag\n\n skipEG(); // offset_for_non_ref_pic\n\n skipEG(); // offset_for_top_to_bottom_field\n\n numRefFramesInPicOrderCntCycle = readUEG();\n\n for (i = 0; i < numRefFramesInPicOrderCntCycle; i++) {\n skipEG();\n } // offset_for_ref_frame[ i ]\n\n }\n\n skipUEG(); // max_num_ref_frames\n\n skipBits(1); // gaps_in_frame_num_value_allowed_flag\n\n var picWidthInMbsMinus1 = readUEG();\n var picHeightInMapUnitsMinus1 = readUEG();\n var frameMbsOnlyFlag = readBits(1);\n\n if (frameMbsOnlyFlag === 0) {\n skipBits(1);\n } // mb_adaptive_frame_field_flag\n\n\n skipBits(1); // direct_8x8_inference_flag\n\n if (readBoolean()) {\n // frame_cropping_flag\n frameCropLeftOffset = readUEG();\n frameCropRightOffset = readUEG();\n frameCropTopOffset = readUEG();\n frameCropBottomOffset = readUEG();\n }\n\n var pixelRatio = [1, 1];\n\n if (readBoolean()) {\n // vui_parameters_present_flag\n if (readBoolean()) {\n // aspect_ratio_info_present_flag\n var aspectRatioIdc = readUByte();\n\n switch (aspectRatioIdc) {\n case 1:\n pixelRatio = [1, 1];\n break;\n\n case 2:\n pixelRatio = [12, 11];\n break;\n\n case 3:\n pixelRatio = [10, 11];\n break;\n\n case 4:\n pixelRatio = [16, 11];\n break;\n\n case 5:\n pixelRatio = [40, 33];\n break;\n\n case 6:\n pixelRatio = [24, 11];\n break;\n\n case 7:\n pixelRatio = [20, 11];\n break;\n\n case 8:\n pixelRatio = [32, 11];\n break;\n\n case 9:\n pixelRatio = [80, 33];\n break;\n\n case 10:\n pixelRatio = [18, 11];\n break;\n\n case 11:\n pixelRatio = [15, 11];\n break;\n\n case 12:\n pixelRatio = [64, 33];\n break;\n\n case 13:\n pixelRatio = [160, 99];\n break;\n\n case 14:\n pixelRatio = [4, 3];\n break;\n\n case 15:\n pixelRatio = [3, 2];\n break;\n\n case 16:\n pixelRatio = [2, 1];\n break;\n\n case 255:\n {\n pixelRatio = [readUByte() << 8 | readUByte(), readUByte() << 8 | readUByte()];\n break;\n }\n }\n }\n }\n\n return {\n width: Math.ceil((picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2),\n height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - (frameMbsOnlyFlag ? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset),\n pixelRatio: pixelRatio\n };\n };\n\n _proto.readSliceType = function readSliceType() {\n // skip NALu type\n this.readUByte(); // discard first_mb_in_slice\n\n this.readUEG(); // return slice_type\n\n return this.readUEG();\n };\n\n return ExpGolomb;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ExpGolomb);\n\n/***/ }),\n\n/***/ \"./src/demux/id3.ts\":\n/*!**************************!*\\\n !*** ./src/demux/id3.ts ***!\n \\**************************/\n/*! exports provided: isHeader, isFooter, getID3Data, canParse, getTimeStamp, isTimeStampFrame, getID3Frames, decodeFrame, utf8ArrayToStr, testables */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeader\", function() { return isHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFooter\", function() { return isFooter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getID3Data\", function() { return getID3Data; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"canParse\", function() { return canParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTimeStamp\", function() { return getTimeStamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTimeStampFrame\", function() { return isTimeStampFrame; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getID3Frames\", function() { return getID3Frames; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"decodeFrame\", function() { return decodeFrame; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"utf8ArrayToStr\", function() { return utf8ArrayToStr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"testables\", function() { return testables; });\n// breaking up those two types in order to clarify what is happening in the decoding path.\n\n/**\n * Returns true if an ID3 header can be found at offset in data\n * @param {Uint8Array} data - The data to search in\n * @param {number} offset - The offset at which to start searching\n * @return {boolean} - True if an ID3 header is found\n */\nvar isHeader = function isHeader(data, offset) {\n /*\n * http://id3.org/id3v2.3.0\n * [0] = 'I'\n * [1] = 'D'\n * [2] = '3'\n * [3,4] = {Version}\n * [5] = {Flags}\n * [6-9] = {ID3 Size}\n *\n * An ID3v2 tag can be detected with the following pattern:\n * $49 44 33 yy yy xx zz zz zz zz\n * Where yy is less than $FF, xx is the 'flags' byte and zz is less than $80\n */\n if (offset + 10 <= data.length) {\n // look for 'ID3' identifier\n if (data[offset] === 0x49 && data[offset + 1] === 0x44 && data[offset + 2] === 0x33) {\n // check version is within range\n if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n // check size is within range\n if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) {\n return true;\n }\n }\n }\n }\n\n return false;\n};\n/**\n * Returns true if an ID3 footer can be found at offset in data\n * @param {Uint8Array} data - The data to search in\n * @param {number} offset - The offset at which to start searching\n * @return {boolean} - True if an ID3 footer is found\n */\n\nvar isFooter = function isFooter(data, offset) {\n /*\n * The footer is a copy of the header, but with a different identifier\n */\n if (offset + 10 <= data.length) {\n // look for '3DI' identifier\n if (data[offset] === 0x33 && data[offset + 1] === 0x44 && data[offset + 2] === 0x49) {\n // check version is within range\n if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n // check size is within range\n if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) {\n return true;\n }\n }\n }\n }\n\n return false;\n};\n/**\n * Returns any adjacent ID3 tags found in data starting at offset, as one block of data\n * @param {Uint8Array} data - The data to search in\n * @param {number} offset - The offset at which to start searching\n * @return {Uint8Array | undefined} - The block of data containing any ID3 tags found\n * or *undefined* if no header is found at the starting offset\n */\n\nvar getID3Data = function getID3Data(data, offset) {\n var front = offset;\n var length = 0;\n\n while (isHeader(data, offset)) {\n // ID3 header is 10 bytes\n length += 10;\n var size = readSize(data, offset + 6);\n length += size;\n\n if (isFooter(data, offset + 10)) {\n // ID3 footer is 10 bytes\n length += 10;\n }\n\n offset += length;\n }\n\n if (length > 0) {\n return data.subarray(front, front + length);\n }\n\n return undefined;\n};\n\nvar readSize = function readSize(data, offset) {\n var size = 0;\n size = (data[offset] & 0x7f) << 21;\n size |= (data[offset + 1] & 0x7f) << 14;\n size |= (data[offset + 2] & 0x7f) << 7;\n size |= data[offset + 3] & 0x7f;\n return size;\n};\n\nvar canParse = function canParse(data, offset) {\n return isHeader(data, offset) && readSize(data, offset + 6) + 10 <= data.length - offset;\n};\n/**\n * Searches for the Elementary Stream timestamp found in the ID3 data chunk\n * @param {Uint8Array} data - Block of data containing one or more ID3 tags\n * @return {number | undefined} - The timestamp\n */\n\nvar getTimeStamp = function getTimeStamp(data) {\n var frames = getID3Frames(data);\n\n for (var i = 0; i < frames.length; i++) {\n var frame = frames[i];\n\n if (isTimeStampFrame(frame)) {\n return readTimeStamp(frame);\n }\n }\n\n return undefined;\n};\n/**\n * Returns true if the ID3 frame is an Elementary Stream timestamp frame\n * @param {ID3 frame} frame\n */\n\nvar isTimeStampFrame = function isTimeStampFrame(frame) {\n return frame && frame.key === 'PRIV' && frame.info === 'com.apple.streaming.transportStreamTimestamp';\n};\n\nvar getFrameData = function getFrameData(data) {\n /*\n Frame ID $xx xx xx xx (four characters)\n Size $xx xx xx xx\n Flags $xx xx\n */\n var type = String.fromCharCode(data[0], data[1], data[2], data[3]);\n var size = readSize(data, 4); // skip frame id, size, and flags\n\n var offset = 10;\n return {\n type: type,\n size: size,\n data: data.subarray(offset, offset + size)\n };\n};\n/**\n * Returns an array of ID3 frames found in all the ID3 tags in the id3Data\n * @param {Uint8Array} id3Data - The ID3 data containing one or more ID3 tags\n * @return {ID3.Frame[]} - Array of ID3 frame objects\n */\n\n\nvar getID3Frames = function getID3Frames(id3Data) {\n var offset = 0;\n var frames = [];\n\n while (isHeader(id3Data, offset)) {\n var size = readSize(id3Data, offset + 6); // skip past ID3 header\n\n offset += 10;\n var end = offset + size; // loop through frames in the ID3 tag\n\n while (offset + 8 < end) {\n var frameData = getFrameData(id3Data.subarray(offset));\n var frame = decodeFrame(frameData);\n\n if (frame) {\n frames.push(frame);\n } // skip frame header and frame data\n\n\n offset += frameData.size + 10;\n }\n\n if (isFooter(id3Data, offset)) {\n offset += 10;\n }\n }\n\n return frames;\n};\nvar decodeFrame = function decodeFrame(frame) {\n if (frame.type === 'PRIV') {\n return decodePrivFrame(frame);\n } else if (frame.type[0] === 'W') {\n return decodeURLFrame(frame);\n }\n\n return decodeTextFrame(frame);\n};\n\nvar decodePrivFrame = function decodePrivFrame(frame) {\n /*\n Format: <text string>\\0<binary data>\n */\n if (frame.size < 2) {\n return undefined;\n }\n\n var owner = utf8ArrayToStr(frame.data, true);\n var privateData = new Uint8Array(frame.data.subarray(owner.length + 1));\n return {\n key: frame.type,\n info: owner,\n data: privateData.buffer\n };\n};\n\nvar decodeTextFrame = function decodeTextFrame(frame) {\n if (frame.size < 2) {\n return undefined;\n }\n\n if (frame.type === 'TXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{Value}\n */\n var index = 1;\n var description = utf8ArrayToStr(frame.data.subarray(index), true);\n index += description.length + 1;\n var value = utf8ArrayToStr(frame.data.subarray(index));\n return {\n key: frame.type,\n info: description,\n data: value\n };\n }\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Value}\n */\n\n\n var text = utf8ArrayToStr(frame.data.subarray(1));\n return {\n key: frame.type,\n data: text\n };\n};\n\nvar decodeURLFrame = function decodeURLFrame(frame) {\n if (frame.type === 'WXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{URL}\n */\n if (frame.size < 2) {\n return undefined;\n }\n\n var index = 1;\n var description = utf8ArrayToStr(frame.data.subarray(index), true);\n index += description.length + 1;\n var value = utf8ArrayToStr(frame.data.subarray(index));\n return {\n key: frame.type,\n info: description,\n data: value\n };\n }\n /*\n Format:\n [0-?] = {URL}\n */\n\n\n var url = utf8ArrayToStr(frame.data);\n return {\n key: frame.type,\n data: url\n };\n};\n\nvar readTimeStamp = function readTimeStamp(timeStampFrame) {\n if (timeStampFrame.data.byteLength === 8) {\n var data = new Uint8Array(timeStampFrame.data); // timestamp is 33 bit expressed as a big-endian eight-octet number,\n // with the upper 31 bits set to zero.\n\n var pts33Bit = data[3] & 0x1;\n var timestamp = (data[4] << 23) + (data[5] << 15) + (data[6] << 7) + data[7];\n timestamp /= 45;\n\n if (pts33Bit) {\n timestamp += 47721858.84;\n } // 2^32 / 90\n\n\n return Math.round(timestamp);\n }\n\n return undefined;\n}; // http://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript/22373197\n// http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt\n\n/* utf.js - UTF-8 <=> UTF-16 convertion\n *\n * Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp>\n * Version: 1.0\n * LastModified: Dec 25 1999\n * This library is free. You can redistribute it and/or modify it.\n */\n\n\nvar utf8ArrayToStr = function utf8ArrayToStr(array, exitOnNull) {\n if (exitOnNull === void 0) {\n exitOnNull = false;\n }\n\n var decoder = getTextDecoder();\n\n if (decoder) {\n var decoded = decoder.decode(array);\n\n if (exitOnNull) {\n // grab up to the first null\n var idx = decoded.indexOf('\\0');\n return idx !== -1 ? decoded.substring(0, idx) : decoded;\n } // remove any null characters\n\n\n return decoded.replace(/\\0/g, '');\n }\n\n var len = array.length;\n var c;\n var char2;\n var char3;\n var out = '';\n var i = 0;\n\n while (i < len) {\n c = array[i++];\n\n if (c === 0x00 && exitOnNull) {\n return out;\n } else if (c === 0x00 || c === 0x03) {\n // If the character is 3 (END_OF_TEXT) or 0 (NULL) then skip it\n continue;\n }\n\n switch (c >> 4) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n // 0xxxxxxx\n out += String.fromCharCode(c);\n break;\n\n case 12:\n case 13:\n // 110x xxxx 10xx xxxx\n char2 = array[i++];\n out += String.fromCharCode((c & 0x1f) << 6 | char2 & 0x3f);\n break;\n\n case 14:\n // 1110 xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++];\n char3 = array[i++];\n out += String.fromCharCode((c & 0x0f) << 12 | (char2 & 0x3f) << 6 | (char3 & 0x3f) << 0);\n break;\n\n default:\n }\n }\n\n return out;\n};\nvar testables = {\n decodeTextFrame: decodeTextFrame\n};\nvar decoder;\n\nfunction getTextDecoder() {\n if (!decoder && typeof self.TextDecoder !== 'undefined') {\n decoder = new self.TextDecoder('utf-8');\n }\n\n return decoder;\n}\n\n/***/ }),\n\n/***/ \"./src/demux/mp3demuxer.ts\":\n/*!*********************************!*\\\n !*** ./src/demux/mp3demuxer.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base-audio-demuxer */ \"./src/demux/base-audio-demuxer.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _mpegaudio__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mpegaudio */ \"./src/demux/mpegaudio.ts\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * MP3 demuxer\n */\n\n\n\n\n\nvar MP3Demuxer = /*#__PURE__*/function (_BaseAudioDemuxer) {\n _inheritsLoose(MP3Demuxer, _BaseAudioDemuxer);\n\n function MP3Demuxer() {\n return _BaseAudioDemuxer.apply(this, arguments) || this;\n }\n\n var _proto = MP3Demuxer.prototype;\n\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n _BaseAudioDemuxer.prototype.resetInitSegment.call(this, initSegment, audioCodec, videoCodec, trackDuration);\n\n this._audioTrack = {\n container: 'audio/mpeg',\n type: 'audio',\n id: 2,\n pid: -1,\n sequenceNumber: 0,\n segmentCodec: 'mp3',\n samples: [],\n manifestCodec: audioCodec,\n duration: trackDuration,\n inputTimeScale: 90000,\n dropped: 0\n };\n };\n\n MP3Demuxer.probe = function probe(data) {\n if (!data) {\n return false;\n } // check if data contains ID3 timestamp and MPEG sync word\n // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n // More info http://www.mp3-tech.org/programmer/frame_header.html\n\n\n var id3Data = _demux_id3__WEBPACK_IMPORTED_MODULE_1__[\"getID3Data\"](data, 0) || [];\n var offset = id3Data.length;\n\n for (var length = data.length; offset < length; offset++) {\n if (_mpegaudio__WEBPACK_IMPORTED_MODULE_3__[\"probe\"](data, offset)) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].log('MPEG Audio sync word found !');\n return true;\n }\n }\n\n return false;\n };\n\n _proto.canParse = function canParse(data, offset) {\n return _mpegaudio__WEBPACK_IMPORTED_MODULE_3__[\"canParse\"](data, offset);\n };\n\n _proto.appendFrame = function appendFrame(track, data, offset) {\n if (this.basePTS === null) {\n return;\n }\n\n return _mpegaudio__WEBPACK_IMPORTED_MODULE_3__[\"appendFrame\"](track, data, offset, this.basePTS, this.frameIndex);\n };\n\n return MP3Demuxer;\n}(_base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MP3Demuxer);\n\n/***/ }),\n\n/***/ \"./src/demux/mp4demuxer.ts\":\n/*!*********************************!*\\\n !*** ./src/demux/mp4demuxer.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _types_demuxer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../types/demuxer */ \"./src/types/demuxer.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dummy-demuxed-track */ \"./src/demux/dummy-demuxed-track.ts\");\n\n\n/**\n * MP4 demuxer\n */\n\n\n\nvar emsgSchemePattern = /\\/emsg[-/]ID3/i;\n\nvar MP4Demuxer = /*#__PURE__*/function () {\n function MP4Demuxer(observer, config) {\n this.remainderData = null;\n this.timeOffset = 0;\n this.config = void 0;\n this.videoTrack = void 0;\n this.audioTrack = void 0;\n this.id3Track = void 0;\n this.txtTrack = void 0;\n this.config = config;\n }\n\n var _proto = MP4Demuxer.prototype;\n\n _proto.resetTimeStamp = function resetTimeStamp() {};\n\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n var initData = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"parseInitSegment\"])(initSegment);\n var videoTrack = this.videoTrack = Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])('video', 1);\n var audioTrack = this.audioTrack = Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])('audio', 1);\n var captionTrack = this.txtTrack = Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])('text', 1);\n this.id3Track = Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])('id3', 1);\n this.timeOffset = 0;\n\n if (initData.video) {\n var _initData$video = initData.video,\n id = _initData$video.id,\n timescale = _initData$video.timescale,\n codec = _initData$video.codec;\n videoTrack.id = id;\n videoTrack.timescale = captionTrack.timescale = timescale;\n videoTrack.codec = codec;\n }\n\n if (initData.audio) {\n var _initData$audio = initData.audio,\n _id = _initData$audio.id,\n _timescale = _initData$audio.timescale,\n _codec = _initData$audio.codec;\n audioTrack.id = _id;\n audioTrack.timescale = _timescale;\n audioTrack.codec = _codec;\n }\n\n captionTrack.id = _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"RemuxerTrackIdConfig\"].text;\n videoTrack.sampleDuration = 0;\n videoTrack.duration = audioTrack.duration = trackDuration;\n };\n\n _proto.resetContiguity = function resetContiguity() {};\n\n MP4Demuxer.probe = function probe(data) {\n // ensure we find a moof box in the first 16 kB\n data = data.length > 16384 ? data.subarray(0, 16384) : data;\n return Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"findBox\"])(data, ['moof']).length > 0;\n };\n\n _proto.demux = function demux(data, timeOffset) {\n this.timeOffset = timeOffset; // Load all data into the avc track. The CMAF remuxer will look for the data in the samples object; the rest of the fields do not matter\n\n var videoSamples = data;\n var videoTrack = this.videoTrack;\n var textTrack = this.txtTrack;\n\n if (this.config.progressive) {\n // Split the bytestream into two ranges: one encompassing all data up until the start of the last moof, and everything else.\n // This is done to guarantee that we're sending valid data to MSE - when demuxing progressively, we have no guarantee\n // that the fetch loader gives us flush moof+mdat pairs. If we push jagged data to MSE, it will throw an exception.\n if (this.remainderData) {\n videoSamples = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"appendUint8Array\"])(this.remainderData, data);\n }\n\n var segmentedData = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"segmentValidRange\"])(videoSamples);\n this.remainderData = segmentedData.remainder;\n videoTrack.samples = segmentedData.valid || new Uint8Array();\n } else {\n videoTrack.samples = videoSamples;\n }\n\n var id3Track = this.extractID3Track(videoTrack, timeOffset);\n textTrack.samples = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"parseSamples\"])(timeOffset, videoTrack);\n return {\n videoTrack: videoTrack,\n audioTrack: this.audioTrack,\n id3Track: id3Track,\n textTrack: this.txtTrack\n };\n };\n\n _proto.flush = function flush() {\n var timeOffset = this.timeOffset;\n var videoTrack = this.videoTrack;\n var textTrack = this.txtTrack;\n videoTrack.samples = this.remainderData || new Uint8Array();\n this.remainderData = null;\n var id3Track = this.extractID3Track(videoTrack, this.timeOffset);\n textTrack.samples = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"parseSamples\"])(timeOffset, videoTrack);\n return {\n videoTrack: videoTrack,\n audioTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])(),\n id3Track: id3Track,\n textTrack: Object(_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__[\"dummyTrack\"])()\n };\n };\n\n _proto.extractID3Track = function extractID3Track(videoTrack, timeOffset) {\n var id3Track = this.id3Track;\n\n if (videoTrack.samples.length) {\n var emsgs = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"findBox\"])(videoTrack.samples, ['emsg']);\n\n if (emsgs) {\n emsgs.forEach(function (data) {\n var emsgInfo = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"parseEmsg\"])(data);\n\n if (emsgSchemePattern.test(emsgInfo.schemeIdUri)) {\n var pts = Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(emsgInfo.presentationTime) ? emsgInfo.presentationTime / emsgInfo.timeScale : timeOffset + emsgInfo.presentationTimeDelta / emsgInfo.timeScale;\n var payload = emsgInfo.payload;\n id3Track.samples.push({\n data: payload,\n len: payload.byteLength,\n dts: pts,\n pts: pts,\n type: _types_demuxer__WEBPACK_IMPORTED_MODULE_1__[\"MetadataSchema\"].emsg\n });\n }\n });\n }\n }\n\n return id3Track;\n };\n\n _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) {\n return Promise.reject(new Error('The MP4 demuxer does not support SAMPLE-AES decryption'));\n };\n\n _proto.destroy = function destroy() {};\n\n return MP4Demuxer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MP4Demuxer);\n\n/***/ }),\n\n/***/ \"./src/demux/mpegaudio.ts\":\n/*!********************************!*\\\n !*** ./src/demux/mpegaudio.ts ***!\n \\********************************/\n/*! exports provided: appendFrame, parseHeader, isHeaderPattern, isHeader, canParse, probe */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"appendFrame\", function() { return appendFrame; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseHeader\", function() { return parseHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeaderPattern\", function() { return isHeaderPattern; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHeader\", function() { return isHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"canParse\", function() { return canParse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"probe\", function() { return probe; });\n/**\n * MPEG parser helper\n */\nvar chromeVersion = null;\nvar BitratesMap = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160];\nvar SamplingRateMap = [44100, 48000, 32000, 22050, 24000, 16000, 11025, 12000, 8000];\nvar SamplesCoefficients = [// MPEG 2.5\n[0, // Reserved\n72, // Layer3\n144, // Layer2\n12 // Layer1\n], // Reserved\n[0, // Reserved\n0, // Layer3\n0, // Layer2\n0 // Layer1\n], // MPEG 2\n[0, // Reserved\n72, // Layer3\n144, // Layer2\n12 // Layer1\n], // MPEG 1\n[0, // Reserved\n144, // Layer3\n144, // Layer2\n12 // Layer1\n]];\nvar BytesInSlot = [0, // Reserved\n1, // Layer3\n1, // Layer2\n4 // Layer1\n];\nfunction appendFrame(track, data, offset, pts, frameIndex) {\n // Using http://www.datavoyage.com/mpgscript/mpeghdr.htm as a reference\n if (offset + 24 > data.length) {\n return;\n }\n\n var header = parseHeader(data, offset);\n\n if (header && offset + header.frameLength <= data.length) {\n var frameDuration = header.samplesPerFrame * 90000 / header.sampleRate;\n var stamp = pts + frameIndex * frameDuration;\n var sample = {\n unit: data.subarray(offset, offset + header.frameLength),\n pts: stamp,\n dts: stamp\n };\n track.config = [];\n track.channelCount = header.channelCount;\n track.samplerate = header.sampleRate;\n track.samples.push(sample);\n return {\n sample: sample,\n length: header.frameLength,\n missing: 0\n };\n }\n}\nfunction parseHeader(data, offset) {\n var mpegVersion = data[offset + 1] >> 3 & 3;\n var mpegLayer = data[offset + 1] >> 1 & 3;\n var bitRateIndex = data[offset + 2] >> 4 & 15;\n var sampleRateIndex = data[offset + 2] >> 2 & 3;\n\n if (mpegVersion !== 1 && bitRateIndex !== 0 && bitRateIndex !== 15 && sampleRateIndex !== 3) {\n var paddingBit = data[offset + 2] >> 1 & 1;\n var channelMode = data[offset + 3] >> 6;\n var columnInBitrates = mpegVersion === 3 ? 3 - mpegLayer : mpegLayer === 3 ? 3 : 4;\n var bitRate = BitratesMap[columnInBitrates * 14 + bitRateIndex - 1] * 1000;\n var columnInSampleRates = mpegVersion === 3 ? 0 : mpegVersion === 2 ? 1 : 2;\n var sampleRate = SamplingRateMap[columnInSampleRates * 3 + sampleRateIndex];\n var channelCount = channelMode === 3 ? 1 : 2; // If bits of channel mode are `11` then it is a single channel (Mono)\n\n var sampleCoefficient = SamplesCoefficients[mpegVersion][mpegLayer];\n var bytesInSlot = BytesInSlot[mpegLayer];\n var samplesPerFrame = sampleCoefficient * 8 * bytesInSlot;\n var frameLength = Math.floor(sampleCoefficient * bitRate / sampleRate + paddingBit) * bytesInSlot;\n\n if (chromeVersion === null) {\n var userAgent = navigator.userAgent || '';\n var result = userAgent.match(/Chrome\\/(\\d+)/i);\n chromeVersion = result ? parseInt(result[1]) : 0;\n }\n\n var needChromeFix = !!chromeVersion && chromeVersion <= 87;\n\n if (needChromeFix && mpegLayer === 2 && bitRate >= 224000 && channelMode === 0) {\n // Work around bug in Chromium by setting channelMode to dual-channel (01) instead of stereo (00)\n data[offset + 3] = data[offset + 3] | 0x80;\n }\n\n return {\n sampleRate: sampleRate,\n channelCount: channelCount,\n frameLength: frameLength,\n samplesPerFrame: samplesPerFrame\n };\n }\n}\nfunction isHeaderPattern(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xe0) === 0xe0 && (data[offset + 1] & 0x06) !== 0x00;\n}\nfunction isHeader(data, offset) {\n // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n // More info http://www.mp3-tech.org/programmer/frame_header.html\n return offset + 1 < data.length && isHeaderPattern(data, offset);\n}\nfunction canParse(data, offset) {\n var headerSize = 4;\n return isHeaderPattern(data, offset) && headerSize <= data.length - offset;\n}\nfunction probe(data, offset) {\n // same as isHeader but we also check that MPEG frame follows last MPEG frame\n // or end of data is reached\n if (offset + 1 < data.length && isHeaderPattern(data, offset)) {\n // MPEG header Length\n var headerLength = 4; // MPEG frame Length\n\n var header = parseHeader(data, offset);\n var frameLength = headerLength;\n\n if (header !== null && header !== void 0 && header.frameLength) {\n frameLength = header.frameLength;\n }\n\n var newOffset = offset + frameLength;\n return newOffset === data.length || isHeader(data, newOffset);\n }\n\n return false;\n}\n\n/***/ }),\n\n/***/ \"./src/demux/sample-aes.ts\":\n/*!*********************************!*\\\n !*** ./src/demux/sample-aes.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _crypt_decrypter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../crypt/decrypter */ \"./src/crypt/decrypter.ts\");\n/* harmony import */ var _tsdemuxer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tsdemuxer */ \"./src/demux/tsdemuxer.ts\");\n/**\n * SAMPLE-AES decrypter\n */\n\n\n\nvar SampleAesDecrypter = /*#__PURE__*/function () {\n function SampleAesDecrypter(observer, config, keyData) {\n this.keyData = void 0;\n this.decrypter = void 0;\n this.keyData = keyData;\n this.decrypter = new _crypt_decrypter__WEBPACK_IMPORTED_MODULE_0__[\"default\"](observer, config, {\n removePKCS7Padding: false\n });\n }\n\n var _proto = SampleAesDecrypter.prototype;\n\n _proto.decryptBuffer = function decryptBuffer(encryptedData, callback) {\n this.decrypter.decrypt(encryptedData, this.keyData.key.buffer, this.keyData.iv.buffer, callback);\n } // AAC - encrypt all full 16 bytes blocks starting from offset 16\n ;\n\n _proto.decryptAacSample = function decryptAacSample(samples, sampleIndex, callback, sync) {\n var curUnit = samples[sampleIndex].unit;\n\n if (curUnit.length <= 16) {\n // No encrypted portion in this sample (first 16 bytes is not\n // encrypted, see https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/HLS_Sample_Encryption/Encryption/Encryption.html),\n return;\n }\n\n var encryptedData = curUnit.subarray(16, curUnit.length - curUnit.length % 16);\n var encryptedBuffer = encryptedData.buffer.slice(encryptedData.byteOffset, encryptedData.byteOffset + encryptedData.length);\n var localthis = this;\n this.decryptBuffer(encryptedBuffer, function (decryptedBuffer) {\n var decryptedData = new Uint8Array(decryptedBuffer);\n curUnit.set(decryptedData, 16);\n\n if (!sync) {\n localthis.decryptAacSamples(samples, sampleIndex + 1, callback);\n }\n });\n };\n\n _proto.decryptAacSamples = function decryptAacSamples(samples, sampleIndex, callback) {\n for (;; sampleIndex++) {\n if (sampleIndex >= samples.length) {\n callback();\n return;\n }\n\n if (samples[sampleIndex].unit.length < 32) {\n continue;\n }\n\n var sync = this.decrypter.isSync();\n this.decryptAacSample(samples, sampleIndex, callback, sync);\n\n if (!sync) {\n return;\n }\n }\n } // AVC - encrypt one 16 bytes block out of ten, starting from offset 32\n ;\n\n _proto.getAvcEncryptedData = function getAvcEncryptedData(decodedData) {\n var encryptedDataLen = Math.floor((decodedData.length - 48) / 160) * 16 + 16;\n var encryptedData = new Int8Array(encryptedDataLen);\n var outputPos = 0;\n\n for (var inputPos = 32; inputPos < decodedData.length - 16; inputPos += 160, outputPos += 16) {\n encryptedData.set(decodedData.subarray(inputPos, inputPos + 16), outputPos);\n }\n\n return encryptedData;\n };\n\n _proto.getAvcDecryptedUnit = function getAvcDecryptedUnit(decodedData, decryptedData) {\n var uint8DecryptedData = new Uint8Array(decryptedData);\n var inputPos = 0;\n\n for (var outputPos = 32; outputPos < decodedData.length - 16; outputPos += 160, inputPos += 16) {\n decodedData.set(uint8DecryptedData.subarray(inputPos, inputPos + 16), outputPos);\n }\n\n return decodedData;\n };\n\n _proto.decryptAvcSample = function decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit, sync) {\n var decodedData = Object(_tsdemuxer__WEBPACK_IMPORTED_MODULE_1__[\"discardEPB\"])(curUnit.data);\n var encryptedData = this.getAvcEncryptedData(decodedData);\n var localthis = this;\n this.decryptBuffer(encryptedData.buffer, function (decryptedBuffer) {\n curUnit.data = localthis.getAvcDecryptedUnit(decodedData, decryptedBuffer);\n\n if (!sync) {\n localthis.decryptAvcSamples(samples, sampleIndex, unitIndex + 1, callback);\n }\n });\n };\n\n _proto.decryptAvcSamples = function decryptAvcSamples(samples, sampleIndex, unitIndex, callback) {\n if (samples instanceof Uint8Array) {\n throw new Error('Cannot decrypt samples of type Uint8Array');\n }\n\n for (;; sampleIndex++, unitIndex = 0) {\n if (sampleIndex >= samples.length) {\n callback();\n return;\n }\n\n var curUnits = samples[sampleIndex].units;\n\n for (;; unitIndex++) {\n if (unitIndex >= curUnits.length) {\n break;\n }\n\n var curUnit = curUnits[unitIndex];\n\n if (curUnit.data.length <= 48 || curUnit.type !== 1 && curUnit.type !== 5) {\n continue;\n }\n\n var sync = this.decrypter.isSync();\n this.decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit, sync);\n\n if (!sync) {\n return;\n }\n }\n }\n };\n\n return SampleAesDecrypter;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SampleAesDecrypter);\n\n/***/ }),\n\n/***/ \"./src/demux/transmuxer-interface.ts\":\n/*!*******************************************!*\\\n !*** ./src/demux/transmuxer-interface.ts ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return TransmuxerInterface; });\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! webworkify-webpack */ \"./node_modules/webworkify-webpack/index.js\");\n/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(webworkify_webpack__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../demux/transmuxer */ \"./src/demux/transmuxer.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/mediasource-helper */ \"./src/utils/mediasource-helper.ts\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! eventemitter3 */ \"./node_modules/eventemitter3/index.js\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n\nvar MediaSource = Object(_utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__[\"getMediaSource\"])() || {\n isTypeSupported: function isTypeSupported() {\n return false;\n }\n};\n\nvar TransmuxerInterface = /*#__PURE__*/function () {\n function TransmuxerInterface(hls, id, onTransmuxComplete, onFlush) {\n var _this = this;\n\n this.hls = void 0;\n this.id = void 0;\n this.observer = void 0;\n this.frag = null;\n this.part = null;\n this.worker = void 0;\n this.onwmsg = void 0;\n this.transmuxer = null;\n this.onTransmuxComplete = void 0;\n this.onFlush = void 0;\n this.hls = hls;\n this.id = id;\n this.onTransmuxComplete = onTransmuxComplete;\n this.onFlush = onFlush;\n var config = hls.config;\n\n var forwardMessage = function forwardMessage(ev, data) {\n data = data || {};\n data.frag = _this.frag;\n data.id = _this.id;\n hls.trigger(ev, data);\n }; // forward events to main thread\n\n\n this.observer = new eventemitter3__WEBPACK_IMPORTED_MODULE_6__[\"EventEmitter\"]();\n this.observer.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_DECRYPTED, forwardMessage);\n this.observer.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, forwardMessage);\n var typeSupported = {\n mp4: MediaSource.isTypeSupported('video/mp4'),\n mpeg: MediaSource.isTypeSupported('audio/mpeg'),\n mp3: MediaSource.isTypeSupported('audio/mp4; codecs=\"mp3\"')\n }; // navigator.vendor is not always available in Web Worker\n // refer to https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope/navigator\n\n var vendor = navigator.vendor;\n\n if (config.enableWorker && typeof Worker !== 'undefined') {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log('demuxing in webworker');\n var worker;\n\n try {\n worker = this.worker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_0__(/*require.resolve*/(/*! ../demux/transmuxer-worker.ts */ \"./src/demux/transmuxer-worker.ts\"));\n this.onwmsg = this.onWorkerMessage.bind(this);\n worker.addEventListener('message', this.onwmsg);\n\n worker.onerror = function (event) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorTypes\"].OTHER_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].INTERNAL_EXCEPTION,\n fatal: true,\n event: 'demuxerWorker',\n error: new Error(event.message + \" (\" + event.filename + \":\" + event.lineno + \")\")\n });\n };\n\n worker.postMessage({\n cmd: 'init',\n typeSupported: typeSupported,\n vendor: vendor,\n id: id,\n config: JSON.stringify(config)\n });\n } catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn('Error in worker:', err);\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].error('Error while initializing DemuxerWorker, fallback to inline');\n\n if (worker) {\n // revoke the Object URL that was used to create transmuxer worker, so as not to leak it\n self.URL.revokeObjectURL(worker.objectURL);\n }\n\n this.transmuxer = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.observer, typeSupported, config, vendor, id);\n this.worker = null;\n }\n } else {\n this.transmuxer = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.observer, typeSupported, config, vendor, id);\n }\n }\n\n var _proto = TransmuxerInterface.prototype;\n\n _proto.destroy = function destroy() {\n var w = this.worker;\n\n if (w) {\n w.removeEventListener('message', this.onwmsg);\n w.terminate();\n this.worker = null;\n this.onwmsg = undefined;\n } else {\n var transmuxer = this.transmuxer;\n\n if (transmuxer) {\n transmuxer.destroy();\n this.transmuxer = null;\n }\n }\n\n var observer = this.observer;\n\n if (observer) {\n observer.removeAllListeners();\n }\n\n this.frag = null; // @ts-ignore\n\n this.observer = null; // @ts-ignore\n\n this.hls = null;\n };\n\n _proto.push = function push(data, initSegmentData, audioCodec, videoCodec, frag, part, duration, accurateTimeOffset, chunkMeta, defaultInitPTS) {\n var _frag$initSegment,\n _lastFrag$initSegment,\n _this2 = this;\n\n chunkMeta.transmuxing.start = self.performance.now();\n var transmuxer = this.transmuxer,\n worker = this.worker;\n var timeOffset = part ? part.start : frag.start;\n var decryptdata = frag.decryptdata;\n var lastFrag = this.frag;\n var discontinuity = !(lastFrag && frag.cc === lastFrag.cc);\n var trackSwitch = !(lastFrag && chunkMeta.level === lastFrag.level);\n var snDiff = lastFrag ? chunkMeta.sn - lastFrag.sn : -1;\n var partDiff = this.part ? chunkMeta.part - this.part.index : -1;\n var progressive = snDiff === 0 && chunkMeta.id > 1 && chunkMeta.id === (lastFrag === null || lastFrag === void 0 ? void 0 : lastFrag.stats.chunkCount);\n var contiguous = !trackSwitch && (snDiff === 1 || snDiff === 0 && (partDiff === 1 || progressive && partDiff <= 0));\n var now = self.performance.now();\n\n if (trackSwitch || snDiff || frag.stats.parsing.start === 0) {\n frag.stats.parsing.start = now;\n }\n\n if (part && (partDiff || !contiguous)) {\n part.stats.parsing.start = now;\n }\n\n var initSegmentChange = !(lastFrag && ((_frag$initSegment = frag.initSegment) === null || _frag$initSegment === void 0 ? void 0 : _frag$initSegment.url) === ((_lastFrag$initSegment = lastFrag.initSegment) === null || _lastFrag$initSegment === void 0 ? void 0 : _lastFrag$initSegment.url));\n var state = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"TransmuxState\"](discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange);\n\n if (!contiguous || discontinuity || initSegmentChange) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log(\"[transmuxer-interface, \" + frag.type + \"]: Starting new transmux session for sn: \" + chunkMeta.sn + \" p: \" + chunkMeta.part + \" level: \" + chunkMeta.level + \" id: \" + chunkMeta.id + \"\\n discontinuity: \" + discontinuity + \"\\n trackSwitch: \" + trackSwitch + \"\\n contiguous: \" + contiguous + \"\\n accurateTimeOffset: \" + accurateTimeOffset + \"\\n timeOffset: \" + timeOffset + \"\\n initSegmentChange: \" + initSegmentChange);\n var config = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"TransmuxConfig\"](audioCodec, videoCodec, initSegmentData, duration, defaultInitPTS);\n this.configureTransmuxer(config);\n }\n\n this.frag = frag;\n this.part = part; // Frags with sn of 'initSegment' are not transmuxed\n\n if (worker) {\n // post fragment payload as transferable objects for ArrayBuffer (no copy)\n worker.postMessage({\n cmd: 'demux',\n data: data,\n decryptdata: decryptdata,\n chunkMeta: chunkMeta,\n state: state\n }, data instanceof ArrayBuffer ? [data] : []);\n } else if (transmuxer) {\n var _transmuxResult = transmuxer.push(data, decryptdata, chunkMeta, state);\n\n if (Object(_demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"isPromise\"])(_transmuxResult)) {\n _transmuxResult.then(function (data) {\n _this2.handleTransmuxComplete(data);\n });\n } else {\n this.handleTransmuxComplete(_transmuxResult);\n }\n }\n };\n\n _proto.flush = function flush(chunkMeta) {\n var _this3 = this;\n\n chunkMeta.transmuxing.start = self.performance.now();\n var transmuxer = this.transmuxer,\n worker = this.worker;\n\n if (worker) {\n worker.postMessage({\n cmd: 'flush',\n chunkMeta: chunkMeta\n });\n } else if (transmuxer) {\n var _transmuxResult2 = transmuxer.flush(chunkMeta);\n\n if (Object(_demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__[\"isPromise\"])(_transmuxResult2)) {\n _transmuxResult2.then(function (data) {\n _this3.handleFlushResult(data, chunkMeta);\n });\n } else {\n this.handleFlushResult(_transmuxResult2, chunkMeta);\n }\n }\n };\n\n _proto.handleFlushResult = function handleFlushResult(results, chunkMeta) {\n var _this4 = this;\n\n results.forEach(function (result) {\n _this4.handleTransmuxComplete(result);\n });\n this.onFlush(chunkMeta);\n };\n\n _proto.onWorkerMessage = function onWorkerMessage(ev) {\n var data = ev.data;\n var hls = this.hls;\n\n switch (data.event) {\n case 'init':\n {\n // revoke the Object URL that was used to create transmuxer worker, so as not to leak it\n self.URL.revokeObjectURL(this.worker.objectURL);\n break;\n }\n\n case 'transmuxComplete':\n {\n this.handleTransmuxComplete(data.data);\n break;\n }\n\n case 'flush':\n {\n this.onFlush(data.data);\n break;\n }\n // pass logs from the worker thread to the main logger\n\n case 'workerLog':\n if (_utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"][data.data.logType]) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"][data.data.logType](data.data.message);\n }\n\n break;\n\n /* falls through */\n\n default:\n {\n data.data = data.data || {};\n data.data.frag = this.frag;\n data.data.id = this.id;\n hls.trigger(data.event, data.data);\n break;\n }\n }\n };\n\n _proto.configureTransmuxer = function configureTransmuxer(config) {\n var worker = this.worker,\n transmuxer = this.transmuxer;\n\n if (worker) {\n worker.postMessage({\n cmd: 'configure',\n config: config\n });\n } else if (transmuxer) {\n transmuxer.configure(config);\n }\n };\n\n _proto.handleTransmuxComplete = function handleTransmuxComplete(result) {\n result.chunkMeta.transmuxing.end = self.performance.now();\n this.onTransmuxComplete(result);\n };\n\n return TransmuxerInterface;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/demux/transmuxer-worker.ts\":\n/*!****************************************!*\\\n !*** ./src/demux/transmuxer-worker.ts ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return TransmuxerWorker; });\n/* harmony import */ var _demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../demux/transmuxer */ \"./src/demux/transmuxer.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! eventemitter3 */ \"./node_modules/eventemitter3/index.js\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nfunction TransmuxerWorker(self) {\n var observer = new eventemitter3__WEBPACK_IMPORTED_MODULE_3__[\"EventEmitter\"]();\n\n var forwardMessage = function forwardMessage(ev, data) {\n self.postMessage({\n event: ev,\n data: data\n });\n }; // forward events to main thread\n\n\n observer.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].FRAG_DECRYPTED, forwardMessage);\n observer.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, forwardMessage); // forward logger events to main thread\n\n var forwardWorkerLogs = function forwardWorkerLogs() {\n var _loop = function _loop(logFn) {\n var func = function func(message) {\n forwardMessage('workerLog', {\n logType: logFn,\n message: message\n });\n };\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"][logFn] = func;\n };\n\n for (var logFn in _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"]) {\n _loop(logFn);\n }\n };\n\n self.addEventListener('message', function (ev) {\n var data = ev.data;\n\n switch (data.cmd) {\n case 'init':\n {\n var config = JSON.parse(data.config);\n self.transmuxer = new _demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__[\"default\"](observer, data.typeSupported, config, data.vendor, data.id);\n Object(_utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"enableLogs\"])(config.debug);\n forwardWorkerLogs();\n forwardMessage('init', null);\n break;\n }\n\n case 'configure':\n {\n self.transmuxer.configure(data.config);\n break;\n }\n\n case 'demux':\n {\n var transmuxResult = self.transmuxer.push(data.data, data.decryptdata, data.chunkMeta, data.state);\n\n if (Object(_demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__[\"isPromise\"])(transmuxResult)) {\n transmuxResult.then(function (data) {\n emitTransmuxComplete(self, data);\n });\n } else {\n emitTransmuxComplete(self, transmuxResult);\n }\n\n break;\n }\n\n case 'flush':\n {\n var id = data.chunkMeta;\n\n var _transmuxResult = self.transmuxer.flush(id);\n\n if (Object(_demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__[\"isPromise\"])(_transmuxResult)) {\n _transmuxResult.then(function (results) {\n handleFlushResult(self, results, id);\n });\n } else {\n handleFlushResult(self, _transmuxResult, id);\n }\n\n break;\n }\n\n default:\n break;\n }\n });\n}\n\nfunction emitTransmuxComplete(self, transmuxResult) {\n if (isEmptyResult(transmuxResult.remuxResult)) {\n return false;\n }\n\n var transferable = [];\n var _transmuxResult$remux = transmuxResult.remuxResult,\n audio = _transmuxResult$remux.audio,\n video = _transmuxResult$remux.video;\n\n if (audio) {\n addToTransferable(transferable, audio);\n }\n\n if (video) {\n addToTransferable(transferable, video);\n }\n\n self.postMessage({\n event: 'transmuxComplete',\n data: transmuxResult\n }, transferable);\n return true;\n} // Converts data to a transferable object https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast)\n// in order to minimize message passing overhead\n\n\nfunction addToTransferable(transferable, track) {\n if (track.data1) {\n transferable.push(track.data1.buffer);\n }\n\n if (track.data2) {\n transferable.push(track.data2.buffer);\n }\n}\n\nfunction handleFlushResult(self, results, chunkMeta) {\n var parsed = results.reduce(function (parsed, result) {\n return emitTransmuxComplete(self, result) || parsed;\n }, false);\n\n if (!parsed) {\n // Emit at least one \"transmuxComplete\" message even if media is not found to update stream-controller state to PARSING\n self.postMessage({\n event: 'transmuxComplete',\n data: results[0]\n });\n }\n\n self.postMessage({\n event: 'flush',\n data: chunkMeta\n });\n}\n\nfunction isEmptyResult(remuxResult) {\n return !remuxResult.audio && !remuxResult.video && !remuxResult.text && !remuxResult.id3 && !remuxResult.initSegment;\n}\n\n/***/ }),\n\n/***/ \"./src/demux/transmuxer.ts\":\n/*!*********************************!*\\\n !*** ./src/demux/transmuxer.ts ***!\n \\*********************************/\n/*! exports provided: default, isPromise, TransmuxConfig, TransmuxState */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Transmuxer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPromise\", function() { return isPromise; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TransmuxConfig\", function() { return TransmuxConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TransmuxState\", function() { return TransmuxState; });\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _crypt_decrypter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../crypt/decrypter */ \"./src/crypt/decrypter.ts\");\n/* harmony import */ var _demux_aacdemuxer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../demux/aacdemuxer */ \"./src/demux/aacdemuxer.ts\");\n/* harmony import */ var _demux_mp4demuxer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../demux/mp4demuxer */ \"./src/demux/mp4demuxer.ts\");\n/* harmony import */ var _demux_tsdemuxer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../demux/tsdemuxer */ \"./src/demux/tsdemuxer.ts\");\n/* harmony import */ var _demux_mp3demuxer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../demux/mp3demuxer */ \"./src/demux/mp3demuxer.ts\");\n/* harmony import */ var _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../remux/mp4-remuxer */ \"./src/remux/mp4-remuxer.ts\");\n/* harmony import */ var _remux_passthrough_remuxer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../remux/passthrough-remuxer */ \"./src/remux/passthrough-remuxer.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\n\n\n\n\n\n\n\nvar now; // performance.now() not available on WebWorker, at least on Safari Desktop\n\ntry {\n now = self.performance.now.bind(self.performance);\n} catch (err) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].debug('Unable to use Performance API on this environment');\n now = self.Date.now;\n}\n\nvar muxConfig = [{\n demux: _demux_tsdemuxer__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n remux: _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n}, {\n demux: _demux_mp4demuxer__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n remux: _remux_passthrough_remuxer__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n}, {\n demux: _demux_aacdemuxer__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n remux: _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n}, {\n demux: _demux_mp3demuxer__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n remux: _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n}];\n\nvar Transmuxer = /*#__PURE__*/function () {\n function Transmuxer(observer, typeSupported, config, vendor, id) {\n this.observer = void 0;\n this.typeSupported = void 0;\n this.config = void 0;\n this.vendor = void 0;\n this.id = void 0;\n this.demuxer = void 0;\n this.remuxer = void 0;\n this.decrypter = void 0;\n this.probe = void 0;\n this.decryptionPromise = null;\n this.transmuxConfig = void 0;\n this.currentTransmuxState = void 0;\n this.observer = observer;\n this.typeSupported = typeSupported;\n this.config = config;\n this.vendor = vendor;\n this.id = id;\n }\n\n var _proto = Transmuxer.prototype;\n\n _proto.configure = function configure(transmuxConfig) {\n this.transmuxConfig = transmuxConfig;\n\n if (this.decrypter) {\n this.decrypter.reset();\n }\n };\n\n _proto.push = function push(data, decryptdata, chunkMeta, state) {\n var _this = this;\n\n var stats = chunkMeta.transmuxing;\n stats.executeStart = now();\n var uintData = new Uint8Array(data);\n var config = this.config,\n currentTransmuxState = this.currentTransmuxState,\n transmuxConfig = this.transmuxConfig;\n\n if (state) {\n this.currentTransmuxState = state;\n }\n\n var _ref = state || currentTransmuxState,\n contiguous = _ref.contiguous,\n discontinuity = _ref.discontinuity,\n trackSwitch = _ref.trackSwitch,\n accurateTimeOffset = _ref.accurateTimeOffset,\n timeOffset = _ref.timeOffset,\n initSegmentChange = _ref.initSegmentChange;\n\n var audioCodec = transmuxConfig.audioCodec,\n videoCodec = transmuxConfig.videoCodec,\n defaultInitPts = transmuxConfig.defaultInitPts,\n duration = transmuxConfig.duration,\n initSegmentData = transmuxConfig.initSegmentData; // Reset muxers before probing to ensure that their state is clean, even if flushing occurs before a successful probe\n\n if (discontinuity || trackSwitch || initSegmentChange) {\n this.resetInitSegment(initSegmentData, audioCodec, videoCodec, duration);\n }\n\n if (discontinuity || initSegmentChange) {\n this.resetInitialTimestamp(defaultInitPts);\n }\n\n if (!contiguous) {\n this.resetContiguity();\n }\n\n var keyData = getEncryptionType(uintData, decryptdata);\n\n if (keyData && keyData.method === 'AES-128') {\n var decrypter = this.getDecrypter(); // Software decryption is synchronous; webCrypto is not\n\n if (config.enableSoftwareAES) {\n // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached\n // data is handled in the flush() call\n var decryptedData = decrypter.softwareDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer);\n\n if (!decryptedData) {\n stats.executeEnd = now();\n return emptyResult(chunkMeta);\n }\n\n uintData = new Uint8Array(decryptedData);\n } else {\n this.decryptionPromise = decrypter.webCryptoDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer).then(function (decryptedData) {\n // Calling push here is important; if flush() is called while this is still resolving, this ensures that\n // the decrypted data has been transmuxed\n var result = _this.push(decryptedData, null, chunkMeta);\n\n _this.decryptionPromise = null;\n return result;\n });\n return this.decryptionPromise;\n }\n }\n\n if (this.needsProbing(uintData, discontinuity, trackSwitch)) {\n this.configureTransmuxer(uintData, transmuxConfig);\n }\n\n var result = this.transmux(uintData, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n var currentState = this.currentTransmuxState;\n currentState.contiguous = true;\n currentState.discontinuity = false;\n currentState.trackSwitch = false;\n stats.executeEnd = now();\n return result;\n } // Due to data caching, flush calls can produce more than one TransmuxerResult (hence the Array type)\n ;\n\n _proto.flush = function flush(chunkMeta) {\n var _this2 = this;\n\n var stats = chunkMeta.transmuxing;\n stats.executeStart = now();\n var decrypter = this.decrypter,\n currentTransmuxState = this.currentTransmuxState,\n decryptionPromise = this.decryptionPromise;\n\n if (decryptionPromise) {\n // Upon resolution, the decryption promise calls push() and returns its TransmuxerResult up the stack. Therefore\n // only flushing is required for async decryption\n return decryptionPromise.then(function () {\n return _this2.flush(chunkMeta);\n });\n }\n\n var transmuxResults = [];\n var timeOffset = currentTransmuxState.timeOffset;\n\n if (decrypter) {\n // The decrypter may have data cached, which needs to be demuxed. In this case we'll have two TransmuxResults\n // This happens in the case that we receive only 1 push call for a segment (either for non-progressive downloads,\n // or for progressive downloads with small segments)\n var decryptedData = decrypter.flush();\n\n if (decryptedData) {\n // Push always returns a TransmuxerResult if decryptdata is null\n transmuxResults.push(this.push(decryptedData, null, chunkMeta));\n }\n }\n\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n\n if (!demuxer || !remuxer) {\n // If probing failed, then Hls.js has been given content its not able to handle\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_PARSING_ERROR,\n fatal: true,\n reason: 'no demux matching with content found'\n });\n stats.executeEnd = now();\n return [emptyResult(chunkMeta)];\n }\n\n var demuxResultOrPromise = demuxer.flush(timeOffset);\n\n if (isPromise(demuxResultOrPromise)) {\n // Decrypt final SAMPLE-AES samples\n return demuxResultOrPromise.then(function (demuxResult) {\n _this2.flushRemux(transmuxResults, demuxResult, chunkMeta);\n\n return transmuxResults;\n });\n }\n\n this.flushRemux(transmuxResults, demuxResultOrPromise, chunkMeta);\n return transmuxResults;\n };\n\n _proto.flushRemux = function flushRemux(transmuxResults, demuxResult, chunkMeta) {\n var audioTrack = demuxResult.audioTrack,\n videoTrack = demuxResult.videoTrack,\n id3Track = demuxResult.id3Track,\n textTrack = demuxResult.textTrack;\n var _this$currentTransmux = this.currentTransmuxState,\n accurateTimeOffset = _this$currentTransmux.accurateTimeOffset,\n timeOffset = _this$currentTransmux.timeOffset;\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"[transmuxer.ts]: Flushed fragment \" + chunkMeta.sn + (chunkMeta.part > -1 ? ' p: ' + chunkMeta.part : '') + \" of level \" + chunkMeta.level);\n var remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, true, this.id);\n transmuxResults.push({\n remuxResult: remuxResult,\n chunkMeta: chunkMeta\n });\n chunkMeta.transmuxing.executeEnd = now();\n };\n\n _proto.resetInitialTimestamp = function resetInitialTimestamp(defaultInitPts) {\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n\n if (!demuxer || !remuxer) {\n return;\n }\n\n demuxer.resetTimeStamp(defaultInitPts);\n remuxer.resetTimeStamp(defaultInitPts);\n };\n\n _proto.resetContiguity = function resetContiguity() {\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n\n if (!demuxer || !remuxer) {\n return;\n }\n\n demuxer.resetContiguity();\n remuxer.resetNextTimestamp();\n };\n\n _proto.resetInitSegment = function resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration) {\n var demuxer = this.demuxer,\n remuxer = this.remuxer;\n\n if (!demuxer || !remuxer) {\n return;\n }\n\n demuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration);\n remuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec);\n };\n\n _proto.destroy = function destroy() {\n if (this.demuxer) {\n this.demuxer.destroy();\n this.demuxer = undefined;\n }\n\n if (this.remuxer) {\n this.remuxer.destroy();\n this.remuxer = undefined;\n }\n };\n\n _proto.transmux = function transmux(data, keyData, timeOffset, accurateTimeOffset, chunkMeta) {\n var result;\n\n if (keyData && keyData.method === 'SAMPLE-AES') {\n result = this.transmuxSampleAes(data, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n } else {\n result = this.transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta);\n }\n\n return result;\n };\n\n _proto.transmuxUnencrypted = function transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta) {\n var _demux = this.demuxer.demux(data, timeOffset, false, !this.config.progressive),\n audioTrack = _demux.audioTrack,\n videoTrack = _demux.videoTrack,\n id3Track = _demux.id3Track,\n textTrack = _demux.textTrack;\n\n var remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, false, this.id);\n return {\n remuxResult: remuxResult,\n chunkMeta: chunkMeta\n };\n };\n\n _proto.transmuxSampleAes = function transmuxSampleAes(data, decryptData, timeOffset, accurateTimeOffset, chunkMeta) {\n var _this3 = this;\n\n return this.demuxer.demuxSampleAes(data, decryptData, timeOffset).then(function (demuxResult) {\n var remuxResult = _this3.remuxer.remux(demuxResult.audioTrack, demuxResult.videoTrack, demuxResult.id3Track, demuxResult.textTrack, timeOffset, accurateTimeOffset, false, _this3.id);\n\n return {\n remuxResult: remuxResult,\n chunkMeta: chunkMeta\n };\n });\n };\n\n _proto.configureTransmuxer = function configureTransmuxer(data, transmuxConfig) {\n var config = this.config,\n observer = this.observer,\n typeSupported = this.typeSupported,\n vendor = this.vendor;\n var audioCodec = transmuxConfig.audioCodec,\n defaultInitPts = transmuxConfig.defaultInitPts,\n duration = transmuxConfig.duration,\n initSegmentData = transmuxConfig.initSegmentData,\n videoCodec = transmuxConfig.videoCodec; // probe for content type\n\n var mux;\n\n for (var i = 0, len = muxConfig.length; i < len; i++) {\n if (muxConfig[i].demux.probe(data)) {\n mux = muxConfig[i];\n break;\n }\n }\n\n if (!mux) {\n // If probing previous configs fail, use mp4 passthrough\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].warn('Failed to find demuxer by probing frag, treating as mp4 passthrough');\n mux = {\n demux: _demux_mp4demuxer__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n remux: _remux_passthrough_remuxer__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n };\n } // so let's check that current remuxer and demuxer are still valid\n\n\n var demuxer = this.demuxer;\n var remuxer = this.remuxer;\n var Remuxer = mux.remux;\n var Demuxer = mux.demux;\n\n if (!remuxer || !(remuxer instanceof Remuxer)) {\n this.remuxer = new Remuxer(observer, config, typeSupported, vendor);\n }\n\n if (!demuxer || !(demuxer instanceof Demuxer)) {\n this.demuxer = new Demuxer(observer, config, typeSupported);\n this.probe = Demuxer.probe;\n } // Ensure that muxers are always initialized with an initSegment\n\n\n this.resetInitSegment(initSegmentData, audioCodec, videoCodec, duration);\n this.resetInitialTimestamp(defaultInitPts);\n };\n\n _proto.needsProbing = function needsProbing(data, discontinuity, trackSwitch) {\n // in case of continuity change, or track switch\n // we might switch from content type (AAC container to TS container, or TS to fmp4 for example)\n return !this.demuxer || !this.remuxer || discontinuity || trackSwitch;\n };\n\n _proto.getDecrypter = function getDecrypter() {\n var decrypter = this.decrypter;\n\n if (!decrypter) {\n decrypter = this.decrypter = new _crypt_decrypter__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.observer, this.config);\n }\n\n return decrypter;\n };\n\n return Transmuxer;\n}();\n\n\n\nfunction getEncryptionType(data, decryptData) {\n var encryptionType = null;\n\n if (data.byteLength > 0 && decryptData != null && decryptData.key != null && decryptData.iv !== null && decryptData.method != null) {\n encryptionType = decryptData;\n }\n\n return encryptionType;\n}\n\nvar emptyResult = function emptyResult(chunkMeta) {\n return {\n remuxResult: {},\n chunkMeta: chunkMeta\n };\n};\n\nfunction isPromise(p) {\n return 'then' in p && p.then instanceof Function;\n}\nvar TransmuxConfig = function TransmuxConfig(audioCodec, videoCodec, initSegmentData, duration, defaultInitPts) {\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this.initSegmentData = void 0;\n this.duration = void 0;\n this.defaultInitPts = void 0;\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this.initSegmentData = initSegmentData;\n this.duration = duration;\n this.defaultInitPts = defaultInitPts;\n};\nvar TransmuxState = function TransmuxState(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange) {\n this.discontinuity = void 0;\n this.contiguous = void 0;\n this.accurateTimeOffset = void 0;\n this.trackSwitch = void 0;\n this.timeOffset = void 0;\n this.initSegmentChange = void 0;\n this.discontinuity = discontinuity;\n this.contiguous = contiguous;\n this.accurateTimeOffset = accurateTimeOffset;\n this.trackSwitch = trackSwitch;\n this.timeOffset = timeOffset;\n this.initSegmentChange = initSegmentChange;\n};\n\n/***/ }),\n\n/***/ \"./src/demux/tsdemuxer.ts\":\n/*!********************************!*\\\n !*** ./src/demux/tsdemuxer.ts ***!\n \\********************************/\n/*! exports provided: discardEPB, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"discardEPB\", function() { return discardEPB; });\n/* harmony import */ var _adts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adts */ \"./src/demux/adts.ts\");\n/* harmony import */ var _mpegaudio__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mpegaudio */ \"./src/demux/mpegaudio.ts\");\n/* harmony import */ var _exp_golomb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./exp-golomb */ \"./src/demux/exp-golomb.ts\");\n/* harmony import */ var _sample_aes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sample-aes */ \"./src/demux/sample-aes.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _types_demuxer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../types/demuxer */ \"./src/types/demuxer.ts\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\n * highly optimized TS demuxer:\n * parse PAT, PMT\n * extract PES packet from audio and video PIDs\n * extract AVC/H264 NAL units and AAC/ADTS samples from PES packet\n * trigger the remuxer upon parsing completion\n * it also tries to workaround as best as it can audio codec switch (HE-AAC to AAC and vice versa), without having to restart the MediaSource.\n * it also controls the remuxing process :\n * upon discontinuity or level switch detection, it will also notifies the remuxer so that it can reset its state.\n */\n\n\n\n\n\n\n\n\n\n\nvar TSDemuxer = /*#__PURE__*/function () {\n function TSDemuxer(observer, config, typeSupported) {\n this.observer = void 0;\n this.config = void 0;\n this.typeSupported = void 0;\n this.sampleAes = null;\n this.pmtParsed = false;\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this._duration = 0;\n this._pmtId = -1;\n this._avcTrack = void 0;\n this._audioTrack = void 0;\n this._id3Track = void 0;\n this._txtTrack = void 0;\n this.aacOverFlow = null;\n this.avcSample = null;\n this.remainderData = null;\n this.observer = observer;\n this.config = config;\n this.typeSupported = typeSupported;\n }\n\n TSDemuxer.probe = function probe(data) {\n // a TS init segment should contain at least 2 TS packets: PAT and PMT, each starting with 0x47\n return data[0] === 0x47 && data[188] === 0x47;\n }\n /**\n * Creates a track model internal to demuxer used to drive remuxing input\n *\n * @param type 'audio' | 'video' | 'id3' | 'text'\n * @param duration\n * @return TSDemuxer's internal track model\n */\n ;\n\n TSDemuxer.createTrack = function createTrack(type, duration) {\n return {\n container: type === 'video' || type === 'audio' ? 'video/mp2t' : undefined,\n type: type,\n id: _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_5__[\"RemuxerTrackIdConfig\"][type],\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: 0,\n samples: [],\n dropped: 0,\n duration: type === 'audio' ? duration : undefined\n };\n }\n /**\n * Initializes a new init segment on the demuxer/remuxer interface. Needed for discontinuities/track-switches (or at stream start)\n * Resets all internal track instances of the demuxer.\n */\n ;\n\n var _proto = TSDemuxer.prototype;\n\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n this.pmtParsed = false;\n this._pmtId = -1;\n this._avcTrack = TSDemuxer.createTrack('video');\n this._audioTrack = TSDemuxer.createTrack('audio', trackDuration);\n this._id3Track = TSDemuxer.createTrack('id3');\n this._txtTrack = TSDemuxer.createTrack('text');\n this._audioTrack.segmentCodec = 'aac'; // flush any partial content\n\n this.aacOverFlow = null;\n this.avcSample = null;\n this.remainderData = null;\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this._duration = trackDuration;\n };\n\n _proto.resetTimeStamp = function resetTimeStamp() {};\n\n _proto.resetContiguity = function resetContiguity() {\n var _audioTrack = this._audioTrack,\n _avcTrack = this._avcTrack,\n _id3Track = this._id3Track;\n\n if (_audioTrack) {\n _audioTrack.pesData = null;\n }\n\n if (_avcTrack) {\n _avcTrack.pesData = null;\n }\n\n if (_id3Track) {\n _id3Track.pesData = null;\n }\n\n this.aacOverFlow = null;\n };\n\n _proto.demux = function demux(data, timeOffset, isSampleAes, flush) {\n if (isSampleAes === void 0) {\n isSampleAes = false;\n }\n\n if (flush === void 0) {\n flush = false;\n }\n\n if (!isSampleAes) {\n this.sampleAes = null;\n }\n\n var pes;\n var videoTrack = this._avcTrack;\n var audioTrack = this._audioTrack;\n var id3Track = this._id3Track;\n var textTrack = this._txtTrack;\n var avcId = videoTrack.pid;\n var avcData = videoTrack.pesData;\n var audioId = audioTrack.pid;\n var id3Id = id3Track.pid;\n var audioData = audioTrack.pesData;\n var id3Data = id3Track.pesData;\n var unknownPID = null;\n var pmtParsed = this.pmtParsed;\n var pmtId = this._pmtId;\n var len = data.length;\n\n if (this.remainderData) {\n data = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_5__[\"appendUint8Array\"])(this.remainderData, data);\n len = data.length;\n this.remainderData = null;\n }\n\n if (len < 188 && !flush) {\n this.remainderData = data;\n return {\n audioTrack: audioTrack,\n videoTrack: videoTrack,\n id3Track: id3Track,\n textTrack: textTrack\n };\n }\n\n len -= len % 188;\n\n if (len < data.byteLength && !flush) {\n this.remainderData = new Uint8Array(data.buffer, len, data.buffer.byteLength - len);\n } // loop through TS packets\n\n\n var tsPacketErrors = 0;\n\n for (var start = 0; start < len; start += 188) {\n if (data[start] === 0x47) {\n var stt = !!(data[start + 1] & 0x40); // pid is a 13-bit field starting at the last bit of TS[1]\n\n var pid = ((data[start + 1] & 0x1f) << 8) + data[start + 2];\n var atf = (data[start + 3] & 0x30) >> 4; // if an adaption field is present, its length is specified by the fifth byte of the TS packet header.\n\n var offset = void 0;\n\n if (atf > 1) {\n offset = start + 5 + data[start + 4]; // continue if there is only adaptation field\n\n if (offset === start + 188) {\n continue;\n }\n } else {\n offset = start + 4;\n }\n\n switch (pid) {\n case avcId:\n if (stt) {\n if (avcData && (pes = parsePES(avcData))) {\n this.parseAVCPES(videoTrack, textTrack, pes, false);\n }\n\n avcData = {\n data: [],\n size: 0\n };\n }\n\n if (avcData) {\n avcData.data.push(data.subarray(offset, start + 188));\n avcData.size += start + 188 - offset;\n }\n\n break;\n\n case audioId:\n if (stt) {\n if (audioData && (pes = parsePES(audioData))) {\n switch (audioTrack.segmentCodec) {\n case 'aac':\n this.parseAACPES(audioTrack, pes);\n break;\n\n case 'mp3':\n this.parseMPEGPES(audioTrack, pes);\n break;\n }\n }\n\n audioData = {\n data: [],\n size: 0\n };\n }\n\n if (audioData) {\n audioData.data.push(data.subarray(offset, start + 188));\n audioData.size += start + 188 - offset;\n }\n\n break;\n\n case id3Id:\n if (stt) {\n if (id3Data && (pes = parsePES(id3Data))) {\n this.parseID3PES(id3Track, pes);\n }\n\n id3Data = {\n data: [],\n size: 0\n };\n }\n\n if (id3Data) {\n id3Data.data.push(data.subarray(offset, start + 188));\n id3Data.size += start + 188 - offset;\n }\n\n break;\n\n case 0:\n if (stt) {\n offset += data[offset] + 1;\n }\n\n pmtId = this._pmtId = parsePAT(data, offset);\n break;\n\n case pmtId:\n {\n if (stt) {\n offset += data[offset] + 1;\n }\n\n var parsedPIDs = parsePMT(data, offset, this.typeSupported, isSampleAes); // only update track id if track PID found while parsing PMT\n // this is to avoid resetting the PID to -1 in case\n // track PID transiently disappears from the stream\n // this could happen in case of transient missing audio samples for example\n // NOTE this is only the PID of the track as found in TS,\n // but we are not using this for MP4 track IDs.\n\n avcId = parsedPIDs.avc;\n\n if (avcId > 0) {\n videoTrack.pid = avcId;\n }\n\n audioId = parsedPIDs.audio;\n\n if (audioId > 0) {\n audioTrack.pid = audioId;\n audioTrack.segmentCodec = parsedPIDs.segmentCodec;\n }\n\n id3Id = parsedPIDs.id3;\n\n if (id3Id > 0) {\n id3Track.pid = id3Id;\n }\n\n if (unknownPID !== null && !pmtParsed) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].log(\"unknown PID '\" + unknownPID + \"' in TS found\");\n unknownPID = null;\n }\n\n pmtParsed = this.pmtParsed = true;\n break;\n }\n\n case 17:\n case 0x1fff:\n break;\n\n default:\n unknownPID = pid;\n break;\n }\n } else {\n tsPacketErrors++;\n }\n }\n\n if (tsPacketErrors > 0) {\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_4__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_4__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_7__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_7__[\"ErrorDetails\"].FRAG_PARSING_ERROR,\n fatal: false,\n reason: \"Found \" + tsPacketErrors + \" TS packet/s that do not start with 0x47\"\n });\n }\n\n videoTrack.pesData = avcData;\n audioTrack.pesData = audioData;\n id3Track.pesData = id3Data;\n var demuxResult = {\n audioTrack: audioTrack,\n videoTrack: videoTrack,\n id3Track: id3Track,\n textTrack: textTrack\n };\n\n if (flush) {\n this.extractRemainingSamples(demuxResult);\n }\n\n return demuxResult;\n };\n\n _proto.flush = function flush() {\n var remainderData = this.remainderData;\n this.remainderData = null;\n var result;\n\n if (remainderData) {\n result = this.demux(remainderData, -1, false, true);\n } else {\n result = {\n videoTrack: this._avcTrack,\n audioTrack: this._audioTrack,\n id3Track: this._id3Track,\n textTrack: this._txtTrack\n };\n }\n\n this.extractRemainingSamples(result);\n\n if (this.sampleAes) {\n return this.decrypt(result, this.sampleAes);\n }\n\n return result;\n };\n\n _proto.extractRemainingSamples = function extractRemainingSamples(demuxResult) {\n var audioTrack = demuxResult.audioTrack,\n videoTrack = demuxResult.videoTrack,\n id3Track = demuxResult.id3Track,\n textTrack = demuxResult.textTrack;\n var avcData = videoTrack.pesData;\n var audioData = audioTrack.pesData;\n var id3Data = id3Track.pesData; // try to parse last PES packets\n\n var pes;\n\n if (avcData && (pes = parsePES(avcData))) {\n this.parseAVCPES(videoTrack, textTrack, pes, true);\n videoTrack.pesData = null;\n } else {\n // either avcData null or PES truncated, keep it for next frag parsing\n videoTrack.pesData = avcData;\n }\n\n if (audioData && (pes = parsePES(audioData))) {\n switch (audioTrack.segmentCodec) {\n case 'aac':\n this.parseAACPES(audioTrack, pes);\n break;\n\n case 'mp3':\n this.parseMPEGPES(audioTrack, pes);\n break;\n }\n\n audioTrack.pesData = null;\n } else {\n if (audioData !== null && audioData !== void 0 && audioData.size) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].log('last AAC PES packet truncated,might overlap between fragments');\n } // either audioData null or PES truncated, keep it for next frag parsing\n\n\n audioTrack.pesData = audioData;\n }\n\n if (id3Data && (pes = parsePES(id3Data))) {\n this.parseID3PES(id3Track, pes);\n id3Track.pesData = null;\n } else {\n // either id3Data null or PES truncated, keep it for next frag parsing\n id3Track.pesData = id3Data;\n }\n };\n\n _proto.demuxSampleAes = function demuxSampleAes(data, keyData, timeOffset) {\n var demuxResult = this.demux(data, timeOffset, true, !this.config.progressive);\n var sampleAes = this.sampleAes = new _sample_aes__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this.observer, this.config, keyData);\n return this.decrypt(demuxResult, sampleAes);\n };\n\n _proto.decrypt = function decrypt(demuxResult, sampleAes) {\n return new Promise(function (resolve) {\n var audioTrack = demuxResult.audioTrack,\n videoTrack = demuxResult.videoTrack;\n\n if (audioTrack.samples && audioTrack.segmentCodec === 'aac') {\n sampleAes.decryptAacSamples(audioTrack.samples, 0, function () {\n if (videoTrack.samples) {\n sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, function () {\n resolve(demuxResult);\n });\n } else {\n resolve(demuxResult);\n }\n });\n } else if (videoTrack.samples) {\n sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, function () {\n resolve(demuxResult);\n });\n }\n });\n };\n\n _proto.destroy = function destroy() {\n this._duration = 0;\n };\n\n _proto.parseAVCPES = function parseAVCPES(track, textTrack, pes, last) {\n var _this = this;\n\n var units = this.parseAVCNALu(track, pes.data);\n var debug = false;\n var avcSample = this.avcSample;\n var push;\n var spsfound = false; // free pes.data to save up some memory\n\n pes.data = null; // if new NAL units found and last sample still there, let's push ...\n // this helps parsing streams with missing AUD (only do this if AUD never found)\n\n if (avcSample && units.length && !track.audFound) {\n pushAccessUnit(avcSample, track);\n avcSample = this.avcSample = createAVCSample(false, pes.pts, pes.dts, '');\n }\n\n units.forEach(function (unit) {\n switch (unit.type) {\n // NDR\n case 1:\n {\n push = true;\n\n if (!avcSample) {\n avcSample = _this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');\n }\n\n if (debug) {\n avcSample.debug += 'NDR ';\n }\n\n avcSample.frame = true;\n var data = unit.data; // only check slice type to detect KF in case SPS found in same packet (any keyframe is preceded by SPS ...)\n\n if (spsfound && data.length > 4) {\n // retrieve slice type by parsing beginning of NAL unit (follow H264 spec, slice_header definition) to detect keyframe embedded in NDR\n var sliceType = new _exp_golomb__WEBPACK_IMPORTED_MODULE_2__[\"default\"](data).readSliceType(); // 2 : I slice, 4 : SI slice, 7 : I slice, 9: SI slice\n // SI slice : A slice that is coded using intra prediction only and using quantisation of the prediction samples.\n // An SI slice can be coded such that its decoded samples can be constructed identically to an SP slice.\n // I slice: A slice that is not an SI slice that is decoded using intra prediction only.\n // if (sliceType === 2 || sliceType === 7) {\n\n if (sliceType === 2 || sliceType === 4 || sliceType === 7 || sliceType === 9) {\n avcSample.key = true;\n }\n }\n\n break; // IDR\n }\n\n case 5:\n push = true; // handle PES not starting with AUD\n\n if (!avcSample) {\n avcSample = _this.avcSample = createAVCSample(true, pes.pts, pes.dts, '');\n }\n\n if (debug) {\n avcSample.debug += 'IDR ';\n }\n\n avcSample.key = true;\n avcSample.frame = true;\n break;\n // SEI\n\n case 6:\n {\n push = true;\n\n if (debug && avcSample) {\n avcSample.debug += 'SEI ';\n }\n\n Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_5__[\"parseSEIMessageFromNALu\"])(discardEPB(unit.data), pes.pts, textTrack.samples);\n break; // SPS\n }\n\n case 7:\n push = true;\n spsfound = true;\n\n if (debug && avcSample) {\n avcSample.debug += 'SPS ';\n }\n\n if (!track.sps) {\n var expGolombDecoder = new _exp_golomb__WEBPACK_IMPORTED_MODULE_2__[\"default\"](unit.data);\n var config = expGolombDecoder.readSPS();\n track.width = config.width;\n track.height = config.height;\n track.pixelRatio = config.pixelRatio; // TODO: `track.sps` is defined as a `number[]`, but we're setting it to a `Uint8Array[]`.\n\n track.sps = [unit.data];\n track.duration = _this._duration;\n var codecarray = unit.data.subarray(1, 4);\n var codecstring = 'avc1.';\n\n for (var i = 0; i < 3; i++) {\n var h = codecarray[i].toString(16);\n\n if (h.length < 2) {\n h = '0' + h;\n }\n\n codecstring += h;\n }\n\n track.codec = codecstring;\n }\n\n break;\n // PPS\n\n case 8:\n push = true;\n\n if (debug && avcSample) {\n avcSample.debug += 'PPS ';\n }\n\n if (!track.pps) {\n // TODO: `track.pss` is defined as a `number[]`, but we're setting it to a `Uint8Array[]`.\n track.pps = [unit.data];\n }\n\n break;\n // AUD\n\n case 9:\n push = false;\n track.audFound = true;\n\n if (avcSample) {\n pushAccessUnit(avcSample, track);\n }\n\n avcSample = _this.avcSample = createAVCSample(false, pes.pts, pes.dts, debug ? 'AUD ' : '');\n break;\n // Filler Data\n\n case 12:\n push = true;\n break;\n\n default:\n push = false;\n\n if (avcSample) {\n avcSample.debug += 'unknown NAL ' + unit.type + ' ';\n }\n\n break;\n }\n\n if (avcSample && push) {\n var _units = avcSample.units;\n\n _units.push(unit);\n }\n }); // if last PES packet, push samples\n\n if (last && avcSample) {\n pushAccessUnit(avcSample, track);\n this.avcSample = null;\n }\n };\n\n _proto.getLastNalUnit = function getLastNalUnit(samples) {\n var _avcSample;\n\n var avcSample = this.avcSample;\n var lastUnit; // try to fallback to previous sample if current one is empty\n\n if (!avcSample || avcSample.units.length === 0) {\n avcSample = samples[samples.length - 1];\n }\n\n if ((_avcSample = avcSample) !== null && _avcSample !== void 0 && _avcSample.units) {\n var units = avcSample.units;\n lastUnit = units[units.length - 1];\n }\n\n return lastUnit;\n };\n\n _proto.parseAVCNALu = function parseAVCNALu(track, array) {\n var len = array.byteLength;\n var state = track.naluState || 0;\n var lastState = state;\n var units = [];\n var i = 0;\n var value;\n var overflow;\n var unitType;\n var lastUnitStart = -1;\n var lastUnitType = 0; // logger.log('PES:' + Hex.hexDump(array));\n\n if (state === -1) {\n // special use case where we found 3 or 4-byte start codes exactly at the end of previous PES packet\n lastUnitStart = 0; // NALu type is value read from offset 0\n\n lastUnitType = array[0] & 0x1f;\n state = 0;\n i = 1;\n }\n\n while (i < len) {\n value = array[i++]; // optimization. state 0 and 1 are the predominant case. let's handle them outside of the switch/case\n\n if (!state) {\n state = value ? 0 : 1;\n continue;\n }\n\n if (state === 1) {\n state = value ? 0 : 2;\n continue;\n } // here we have state either equal to 2 or 3\n\n\n if (!value) {\n state = 3;\n } else if (value === 1) {\n if (lastUnitStart >= 0) {\n var unit = {\n data: array.subarray(lastUnitStart, i - state - 1),\n type: lastUnitType\n }; // logger.log('pushing NALU, type/size:' + unit.type + '/' + unit.data.byteLength);\n\n units.push(unit);\n } else {\n // lastUnitStart is undefined => this is the first start code found in this PES packet\n // first check if start code delimiter is overlapping between 2 PES packets,\n // ie it started in last packet (lastState not zero)\n // and ended at the beginning of this PES packet (i <= 4 - lastState)\n var lastUnit = this.getLastNalUnit(track.samples);\n\n if (lastUnit) {\n if (lastState && i <= 4 - lastState) {\n // start delimiter overlapping between PES packets\n // strip start delimiter bytes from the end of last NAL unit\n // check if lastUnit had a state different from zero\n if (lastUnit.state) {\n // strip last bytes\n lastUnit.data = lastUnit.data.subarray(0, lastUnit.data.byteLength - lastState);\n }\n } // If NAL units are not starting right at the beginning of the PES packet, push preceding data into previous NAL unit.\n\n\n overflow = i - state - 1;\n\n if (overflow > 0) {\n // logger.log('first NALU found with overflow:' + overflow);\n var tmp = new Uint8Array(lastUnit.data.byteLength + overflow);\n tmp.set(lastUnit.data, 0);\n tmp.set(array.subarray(0, overflow), lastUnit.data.byteLength);\n lastUnit.data = tmp;\n lastUnit.state = 0;\n }\n }\n } // check if we can read unit type\n\n\n if (i < len) {\n unitType = array[i] & 0x1f; // logger.log('find NALU @ offset:' + i + ',type:' + unitType);\n\n lastUnitStart = i;\n lastUnitType = unitType;\n state = 0;\n } else {\n // not enough byte to read unit type. let's read it on next PES parsing\n state = -1;\n }\n } else {\n state = 0;\n }\n }\n\n if (lastUnitStart >= 0 && state >= 0) {\n var _unit = {\n data: array.subarray(lastUnitStart, len),\n type: lastUnitType,\n state: state\n };\n units.push(_unit); // logger.log('pushing NALU, type/size/state:' + unit.type + '/' + unit.data.byteLength + '/' + state);\n } // no NALu found\n\n\n if (units.length === 0) {\n // append pes.data to previous NAL unit\n var _lastUnit = this.getLastNalUnit(track.samples);\n\n if (_lastUnit) {\n var _tmp = new Uint8Array(_lastUnit.data.byteLength + array.byteLength);\n\n _tmp.set(_lastUnit.data, 0);\n\n _tmp.set(array, _lastUnit.data.byteLength);\n\n _lastUnit.data = _tmp;\n }\n }\n\n track.naluState = state;\n return units;\n };\n\n _proto.parseAACPES = function parseAACPES(track, pes) {\n var startOffset = 0;\n var aacOverFlow = this.aacOverFlow;\n var data = pes.data;\n\n if (aacOverFlow) {\n this.aacOverFlow = null;\n var frameMissingBytes = aacOverFlow.missing;\n var sampleLength = aacOverFlow.sample.unit.byteLength; // logger.log(`AAC: append overflowing ${sampleLength} bytes to beginning of new PES`);\n\n if (frameMissingBytes === -1) {\n var tmp = new Uint8Array(sampleLength + data.byteLength);\n tmp.set(aacOverFlow.sample.unit, 0);\n tmp.set(data, sampleLength);\n data = tmp;\n } else {\n var frameOverflowBytes = sampleLength - frameMissingBytes;\n aacOverFlow.sample.unit.set(data.subarray(0, frameMissingBytes), frameOverflowBytes);\n track.samples.push(aacOverFlow.sample);\n startOffset = aacOverFlow.missing;\n }\n } // look for ADTS header (0xFFFx)\n\n\n var offset;\n var len;\n\n for (offset = startOffset, len = data.length; offset < len - 1; offset++) {\n if (_adts__WEBPACK_IMPORTED_MODULE_0__[\"isHeader\"](data, offset)) {\n break;\n }\n } // if ADTS header does not start straight from the beginning of the PES payload, raise an error\n\n\n if (offset !== startOffset) {\n var reason;\n var fatal;\n\n if (offset < len - 1) {\n reason = \"AAC PES did not start with ADTS header,offset:\" + offset;\n fatal = false;\n } else {\n reason = 'no ADTS header found in AAC PES';\n fatal = true;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn(\"parsing error:\" + reason);\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_4__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_4__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_7__[\"ErrorTypes\"].MEDIA_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_7__[\"ErrorDetails\"].FRAG_PARSING_ERROR,\n fatal: fatal,\n reason: reason\n });\n\n if (fatal) {\n return;\n }\n }\n\n _adts__WEBPACK_IMPORTED_MODULE_0__[\"initTrackConfig\"](track, this.observer, data, offset, this.audioCodec);\n var pts;\n\n if (pes.pts !== undefined) {\n pts = pes.pts;\n } else if (aacOverFlow) {\n // if last AAC frame is overflowing, we should ensure timestamps are contiguous:\n // first sample PTS should be equal to last sample PTS + frameDuration\n var frameDuration = _adts__WEBPACK_IMPORTED_MODULE_0__[\"getFrameDuration\"](track.samplerate);\n pts = aacOverFlow.sample.pts + frameDuration;\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn('[tsdemuxer]: AAC PES unknown PTS');\n return;\n } // scan for aac samples\n\n\n var frameIndex = 0;\n var frame;\n\n while (offset < len) {\n frame = _adts__WEBPACK_IMPORTED_MODULE_0__[\"appendFrame\"](track, data, offset, pts, frameIndex);\n offset += frame.length;\n\n if (!frame.missing) {\n frameIndex++;\n\n for (; offset < len - 1; offset++) {\n if (_adts__WEBPACK_IMPORTED_MODULE_0__[\"isHeader\"](data, offset)) {\n break;\n }\n }\n } else {\n this.aacOverFlow = frame;\n break;\n }\n }\n };\n\n _proto.parseMPEGPES = function parseMPEGPES(track, pes) {\n var data = pes.data;\n var length = data.length;\n var frameIndex = 0;\n var offset = 0;\n var pts = pes.pts;\n\n if (pts === undefined) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn('[tsdemuxer]: MPEG PES unknown PTS');\n return;\n }\n\n while (offset < length) {\n if (_mpegaudio__WEBPACK_IMPORTED_MODULE_1__[\"isHeader\"](data, offset)) {\n var frame = _mpegaudio__WEBPACK_IMPORTED_MODULE_1__[\"appendFrame\"](track, data, offset, pts, frameIndex);\n\n if (frame) {\n offset += frame.length;\n frameIndex++;\n } else {\n // logger.log('Unable to parse Mpeg audio frame');\n break;\n }\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n };\n\n _proto.parseID3PES = function parseID3PES(id3Track, pes) {\n if (pes.pts === undefined) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn('[tsdemuxer]: ID3 PES unknown PTS');\n return;\n }\n\n var id3Sample = _extends({}, pes, {\n type: this._avcTrack ? _types_demuxer__WEBPACK_IMPORTED_MODULE_8__[\"MetadataSchema\"].emsg : _types_demuxer__WEBPACK_IMPORTED_MODULE_8__[\"MetadataSchema\"].audioId3\n });\n\n id3Track.samples.push(id3Sample);\n };\n\n return TSDemuxer;\n}();\n\nfunction createAVCSample(key, pts, dts, debug) {\n return {\n key: key,\n frame: false,\n pts: pts,\n dts: dts,\n units: [],\n debug: debug,\n length: 0\n };\n}\n\nfunction parsePAT(data, offset) {\n // skip the PSI header and parse the first PMT entry\n return (data[offset + 10] & 0x1f) << 8 | data[offset + 11]; // logger.log('PMT PID:' + this._pmtId);\n}\n\nfunction parsePMT(data, offset, typeSupported, isSampleAes) {\n var result = {\n audio: -1,\n avc: -1,\n id3: -1,\n segmentCodec: 'aac'\n };\n var sectionLength = (data[offset + 1] & 0x0f) << 8 | data[offset + 2];\n var tableEnd = offset + 3 + sectionLength - 4; // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n\n var programInfoLength = (data[offset + 10] & 0x0f) << 8 | data[offset + 11]; // advance the offset to the first entry in the mapping table\n\n offset += 12 + programInfoLength;\n\n while (offset < tableEnd) {\n var pid = (data[offset + 1] & 0x1f) << 8 | data[offset + 2];\n\n switch (data[offset]) {\n case 0xcf:\n // SAMPLE-AES AAC\n if (!isSampleAes) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].log('ADTS AAC with AES-128-CBC frame encryption found in unencrypted stream');\n break;\n }\n\n /* falls through */\n\n case 0x0f:\n // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio)\n // logger.log('AAC PID:' + pid);\n if (result.audio === -1) {\n result.audio = pid;\n }\n\n break;\n // Packetized metadata (ID3)\n\n case 0x15:\n // logger.log('ID3 PID:' + pid);\n if (result.id3 === -1) {\n result.id3 = pid;\n }\n\n break;\n\n case 0xdb:\n // SAMPLE-AES AVC\n if (!isSampleAes) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].log('H.264 with AES-128-CBC slice encryption found in unencrypted stream');\n break;\n }\n\n /* falls through */\n\n case 0x1b:\n // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video)\n // logger.log('AVC PID:' + pid);\n if (result.avc === -1) {\n result.avc = pid;\n }\n\n break;\n // ISO/IEC 11172-3 (MPEG-1 audio)\n // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio)\n\n case 0x03:\n case 0x04:\n // logger.log('MPEG PID:' + pid);\n if (typeSupported.mpeg !== true && typeSupported.mp3 !== true) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].log('MPEG audio found, not supported in this browser');\n } else if (result.audio === -1) {\n result.audio = pid;\n result.segmentCodec = 'mp3';\n }\n\n break;\n\n case 0x24:\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn('Unsupported HEVC stream type found');\n break;\n\n default:\n // logger.log('unknown stream type:' + data[offset]);\n break;\n } // move to the next table entry\n // skip past the elementary stream descriptors, if present\n\n\n offset += ((data[offset + 3] & 0x0f) << 8 | data[offset + 4]) + 5;\n }\n\n return result;\n}\n\nfunction parsePES(stream) {\n var i = 0;\n var frag;\n var pesLen;\n var pesHdrLen;\n var pesPts;\n var pesDts;\n var data = stream.data; // safety check\n\n if (!stream || stream.size === 0) {\n return null;\n } // we might need up to 19 bytes to read PES header\n // if first chunk of data is less than 19 bytes, let's merge it with following ones until we get 19 bytes\n // usually only one merge is needed (and this is rare ...)\n\n\n while (data[0].length < 19 && data.length > 1) {\n var newData = new Uint8Array(data[0].length + data[1].length);\n newData.set(data[0]);\n newData.set(data[1], data[0].length);\n data[0] = newData;\n data.splice(1, 1);\n } // retrieve PTS/DTS from first fragment\n\n\n frag = data[0];\n var pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];\n\n if (pesPrefix === 1) {\n pesLen = (frag[4] << 8) + frag[5]; // if PES parsed length is not zero and greater than total received length, stop parsing. PES might be truncated\n // minus 6 : PES header size\n\n if (pesLen && pesLen > stream.size - 6) {\n return null;\n }\n\n var pesFlags = frag[7];\n\n if (pesFlags & 0xc0) {\n /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n as PTS / DTS is 33 bit we cannot use bitwise operator in JS,\n as Bitwise operators treat their operands as a sequence of 32 bits */\n pesPts = (frag[9] & 0x0e) * 536870912 + // 1 << 29\n (frag[10] & 0xff) * 4194304 + // 1 << 22\n (frag[11] & 0xfe) * 16384 + // 1 << 14\n (frag[12] & 0xff) * 128 + // 1 << 7\n (frag[13] & 0xfe) / 2;\n\n if (pesFlags & 0x40) {\n pesDts = (frag[14] & 0x0e) * 536870912 + // 1 << 29\n (frag[15] & 0xff) * 4194304 + // 1 << 22\n (frag[16] & 0xfe) * 16384 + // 1 << 14\n (frag[17] & 0xff) * 128 + // 1 << 7\n (frag[18] & 0xfe) / 2;\n\n if (pesPts - pesDts > 60 * 90000) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].warn(Math.round((pesPts - pesDts) / 90000) + \"s delta between PTS and DTS, align them\");\n pesPts = pesDts;\n }\n } else {\n pesDts = pesPts;\n }\n }\n\n pesHdrLen = frag[8]; // 9 bytes : 6 bytes for PES header + 3 bytes for PES extension\n\n var payloadStartOffset = pesHdrLen + 9;\n\n if (stream.size <= payloadStartOffset) {\n return null;\n }\n\n stream.size -= payloadStartOffset; // reassemble PES packet\n\n var pesData = new Uint8Array(stream.size);\n\n for (var j = 0, dataLen = data.length; j < dataLen; j++) {\n frag = data[j];\n var len = frag.byteLength;\n\n if (payloadStartOffset) {\n if (payloadStartOffset > len) {\n // trim full frag if PES header bigger than frag\n payloadStartOffset -= len;\n continue;\n } else {\n // trim partial frag if PES header smaller than frag\n frag = frag.subarray(payloadStartOffset);\n len -= payloadStartOffset;\n payloadStartOffset = 0;\n }\n }\n\n pesData.set(frag, i);\n i += len;\n }\n\n if (pesLen) {\n // payload size : remove PES header + PES extension\n pesLen -= pesHdrLen + 3;\n }\n\n return {\n data: pesData,\n pts: pesPts,\n dts: pesDts,\n len: pesLen\n };\n }\n\n return null;\n}\n\nfunction pushAccessUnit(avcSample, avcTrack) {\n if (avcSample.units.length && avcSample.frame) {\n // if sample does not have PTS/DTS, patch with last sample PTS/DTS\n if (avcSample.pts === undefined) {\n var samples = avcTrack.samples;\n var nbSamples = samples.length;\n\n if (nbSamples) {\n var lastSample = samples[nbSamples - 1];\n avcSample.pts = lastSample.pts;\n avcSample.dts = lastSample.dts;\n } else {\n // dropping samples, no timestamp found\n avcTrack.dropped++;\n return;\n }\n }\n\n avcTrack.samples.push(avcSample);\n }\n\n if (avcSample.debug.length) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_6__[\"logger\"].log(avcSample.pts + '/' + avcSample.dts + ':' + avcSample.debug);\n }\n}\n/**\n * remove Emulation Prevention bytes from a RBSP\n */\n\n\nfunction discardEPB(data) {\n var length = data.byteLength;\n var EPBPositions = [];\n var i = 1; // Find all `Emulation Prevention Bytes`\n\n while (i < length - 2) {\n if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n EPBPositions.push(i + 2);\n i += 2;\n } else {\n i++;\n }\n } // If no Emulation Prevention Bytes were found just return the original\n // array\n\n\n if (EPBPositions.length === 0) {\n return data;\n } // Create a new array to hold the NAL unit data\n\n\n var newLength = length - EPBPositions.length;\n var newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === EPBPositions[0]) {\n // Skip this byte\n sourceIndex++; // Remove this position index\n\n EPBPositions.shift();\n }\n\n newData[i] = data[sourceIndex];\n }\n\n return newData;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (TSDemuxer);\n\n/***/ }),\n\n/***/ \"./src/errors.ts\":\n/*!***********************!*\\\n !*** ./src/errors.ts ***!\n \\***********************/\n/*! exports provided: ErrorTypes, ErrorDetails */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ErrorTypes\", function() { return ErrorTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ErrorDetails\", function() { return ErrorDetails; });\nvar ErrorTypes;\n/**\n * @enum {ErrorDetails}\n * @typedef {string} ErrorDetail\n */\n\n(function (ErrorTypes) {\n ErrorTypes[\"NETWORK_ERROR\"] = \"networkError\";\n ErrorTypes[\"MEDIA_ERROR\"] = \"mediaError\";\n ErrorTypes[\"KEY_SYSTEM_ERROR\"] = \"keySystemError\";\n ErrorTypes[\"MUX_ERROR\"] = \"muxError\";\n ErrorTypes[\"OTHER_ERROR\"] = \"otherError\";\n})(ErrorTypes || (ErrorTypes = {}));\n\nvar ErrorDetails;\n\n(function (ErrorDetails) {\n ErrorDetails[\"KEY_SYSTEM_NO_KEYS\"] = \"keySystemNoKeys\";\n ErrorDetails[\"KEY_SYSTEM_NO_ACCESS\"] = \"keySystemNoAccess\";\n ErrorDetails[\"KEY_SYSTEM_NO_SESSION\"] = \"keySystemNoSession\";\n ErrorDetails[\"KEY_SYSTEM_LICENSE_REQUEST_FAILED\"] = \"keySystemLicenseRequestFailed\";\n ErrorDetails[\"KEY_SYSTEM_NO_INIT_DATA\"] = \"keySystemNoInitData\";\n ErrorDetails[\"MANIFEST_LOAD_ERROR\"] = \"manifestLoadError\";\n ErrorDetails[\"MANIFEST_LOAD_TIMEOUT\"] = \"manifestLoadTimeOut\";\n ErrorDetails[\"MANIFEST_PARSING_ERROR\"] = \"manifestParsingError\";\n ErrorDetails[\"MANIFEST_INCOMPATIBLE_CODECS_ERROR\"] = \"manifestIncompatibleCodecsError\";\n ErrorDetails[\"LEVEL_EMPTY_ERROR\"] = \"levelEmptyError\";\n ErrorDetails[\"LEVEL_LOAD_ERROR\"] = \"levelLoadError\";\n ErrorDetails[\"LEVEL_LOAD_TIMEOUT\"] = \"levelLoadTimeOut\";\n ErrorDetails[\"LEVEL_SWITCH_ERROR\"] = \"levelSwitchError\";\n ErrorDetails[\"AUDIO_TRACK_LOAD_ERROR\"] = \"audioTrackLoadError\";\n ErrorDetails[\"AUDIO_TRACK_LOAD_TIMEOUT\"] = \"audioTrackLoadTimeOut\";\n ErrorDetails[\"SUBTITLE_LOAD_ERROR\"] = \"subtitleTrackLoadError\";\n ErrorDetails[\"SUBTITLE_TRACK_LOAD_TIMEOUT\"] = \"subtitleTrackLoadTimeOut\";\n ErrorDetails[\"FRAG_LOAD_ERROR\"] = \"fragLoadError\";\n ErrorDetails[\"FRAG_LOAD_TIMEOUT\"] = \"fragLoadTimeOut\";\n ErrorDetails[\"FRAG_DECRYPT_ERROR\"] = \"fragDecryptError\";\n ErrorDetails[\"FRAG_PARSING_ERROR\"] = \"fragParsingError\";\n ErrorDetails[\"REMUX_ALLOC_ERROR\"] = \"remuxAllocError\";\n ErrorDetails[\"KEY_LOAD_ERROR\"] = \"keyLoadError\";\n ErrorDetails[\"KEY_LOAD_TIMEOUT\"] = \"keyLoadTimeOut\";\n ErrorDetails[\"BUFFER_ADD_CODEC_ERROR\"] = \"bufferAddCodecError\";\n ErrorDetails[\"BUFFER_INCOMPATIBLE_CODECS_ERROR\"] = \"bufferIncompatibleCodecsError\";\n ErrorDetails[\"BUFFER_APPEND_ERROR\"] = \"bufferAppendError\";\n ErrorDetails[\"BUFFER_APPENDING_ERROR\"] = \"bufferAppendingError\";\n ErrorDetails[\"BUFFER_STALLED_ERROR\"] = \"bufferStalledError\";\n ErrorDetails[\"BUFFER_FULL_ERROR\"] = \"bufferFullError\";\n ErrorDetails[\"BUFFER_SEEK_OVER_HOLE\"] = \"bufferSeekOverHole\";\n ErrorDetails[\"BUFFER_NUDGE_ON_STALL\"] = \"bufferNudgeOnStall\";\n ErrorDetails[\"INTERNAL_EXCEPTION\"] = \"internalException\";\n ErrorDetails[\"INTERNAL_ABORTED\"] = \"aborted\";\n ErrorDetails[\"UNKNOWN\"] = \"unknown\";\n})(ErrorDetails || (ErrorDetails = {}));\n\n/***/ }),\n\n/***/ \"./src/events.ts\":\n/*!***********************!*\\\n !*** ./src/events.ts ***!\n \\***********************/\n/*! exports provided: Events */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Events\", function() { return Events; });\n/**\n * @readonly\n * @enum {string}\n */\nvar Events;\n\n(function (Events) {\n Events[\"MEDIA_ATTACHING\"] = \"hlsMediaAttaching\";\n Events[\"MEDIA_ATTACHED\"] = \"hlsMediaAttached\";\n Events[\"MEDIA_DETACHING\"] = \"hlsMediaDetaching\";\n Events[\"MEDIA_DETACHED\"] = \"hlsMediaDetached\";\n Events[\"BUFFER_RESET\"] = \"hlsBufferReset\";\n Events[\"BUFFER_CODECS\"] = \"hlsBufferCodecs\";\n Events[\"BUFFER_CREATED\"] = \"hlsBufferCreated\";\n Events[\"BUFFER_APPENDING\"] = \"hlsBufferAppending\";\n Events[\"BUFFER_APPENDED\"] = \"hlsBufferAppended\";\n Events[\"BUFFER_EOS\"] = \"hlsBufferEos\";\n Events[\"BUFFER_FLUSHING\"] = \"hlsBufferFlushing\";\n Events[\"BUFFER_FLUSHED\"] = \"hlsBufferFlushed\";\n Events[\"MANIFEST_LOADING\"] = \"hlsManifestLoading\";\n Events[\"MANIFEST_LOADED\"] = \"hlsManifestLoaded\";\n Events[\"MANIFEST_PARSED\"] = \"hlsManifestParsed\";\n Events[\"LEVEL_SWITCHING\"] = \"hlsLevelSwitching\";\n Events[\"LEVEL_SWITCHED\"] = \"hlsLevelSwitched\";\n Events[\"LEVEL_LOADING\"] = \"hlsLevelLoading\";\n Events[\"LEVEL_LOADED\"] = \"hlsLevelLoaded\";\n Events[\"LEVEL_UPDATED\"] = \"hlsLevelUpdated\";\n Events[\"LEVEL_PTS_UPDATED\"] = \"hlsLevelPtsUpdated\";\n Events[\"LEVELS_UPDATED\"] = \"hlsLevelsUpdated\";\n Events[\"AUDIO_TRACKS_UPDATED\"] = \"hlsAudioTracksUpdated\";\n Events[\"AUDIO_TRACK_SWITCHING\"] = \"hlsAudioTrackSwitching\";\n Events[\"AUDIO_TRACK_SWITCHED\"] = \"hlsAudioTrackSwitched\";\n Events[\"AUDIO_TRACK_LOADING\"] = \"hlsAudioTrackLoading\";\n Events[\"AUDIO_TRACK_LOADED\"] = \"hlsAudioTrackLoaded\";\n Events[\"SUBTITLE_TRACKS_UPDATED\"] = \"hlsSubtitleTracksUpdated\";\n Events[\"SUBTITLE_TRACKS_CLEARED\"] = \"hlsSubtitleTracksCleared\";\n Events[\"SUBTITLE_TRACK_SWITCH\"] = \"hlsSubtitleTrackSwitch\";\n Events[\"SUBTITLE_TRACK_LOADING\"] = \"hlsSubtitleTrackLoading\";\n Events[\"SUBTITLE_TRACK_LOADED\"] = \"hlsSubtitleTrackLoaded\";\n Events[\"SUBTITLE_FRAG_PROCESSED\"] = \"hlsSubtitleFragProcessed\";\n Events[\"CUES_PARSED\"] = \"hlsCuesParsed\";\n Events[\"NON_NATIVE_TEXT_TRACKS_FOUND\"] = \"hlsNonNativeTextTracksFound\";\n Events[\"INIT_PTS_FOUND\"] = \"hlsInitPtsFound\";\n Events[\"FRAG_LOADING\"] = \"hlsFragLoading\";\n Events[\"FRAG_LOAD_EMERGENCY_ABORTED\"] = \"hlsFragLoadEmergencyAborted\";\n Events[\"FRAG_LOADED\"] = \"hlsFragLoaded\";\n Events[\"FRAG_DECRYPTED\"] = \"hlsFragDecrypted\";\n Events[\"FRAG_PARSING_INIT_SEGMENT\"] = \"hlsFragParsingInitSegment\";\n Events[\"FRAG_PARSING_USERDATA\"] = \"hlsFragParsingUserdata\";\n Events[\"FRAG_PARSING_METADATA\"] = \"hlsFragParsingMetadata\";\n Events[\"FRAG_PARSED\"] = \"hlsFragParsed\";\n Events[\"FRAG_BUFFERED\"] = \"hlsFragBuffered\";\n Events[\"FRAG_CHANGED\"] = \"hlsFragChanged\";\n Events[\"FPS_DROP\"] = \"hlsFpsDrop\";\n Events[\"FPS_DROP_LEVEL_CAPPING\"] = \"hlsFpsDropLevelCapping\";\n Events[\"ERROR\"] = \"hlsError\";\n Events[\"DESTROYING\"] = \"hlsDestroying\";\n Events[\"KEY_LOADING\"] = \"hlsKeyLoading\";\n Events[\"KEY_LOADED\"] = \"hlsKeyLoaded\";\n Events[\"LIVE_BACK_BUFFER_REACHED\"] = \"hlsLiveBackBufferReached\";\n Events[\"BACK_BUFFER_REACHED\"] = \"hlsBackBufferReached\";\n})(Events || (Events = {}));\n\n/***/ }),\n\n/***/ \"./src/hls.ts\":\n/*!********************!*\\\n !*** ./src/hls.ts ***!\n \\********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Hls; });\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! url-toolkit */ \"./node_modules/url-toolkit/src/url-toolkit.js\");\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _loader_playlist_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loader/playlist-loader */ \"./src/loader/playlist-loader.ts\");\n/* harmony import */ var _loader_key_loader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loader/key-loader */ \"./src/loader/key-loader.ts\");\n/* harmony import */ var _controller_id3_track_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./controller/id3-track-controller */ \"./src/controller/id3-track-controller.ts\");\n/* harmony import */ var _controller_latency_controller__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./controller/latency-controller */ \"./src/controller/latency-controller.ts\");\n/* harmony import */ var _controller_level_controller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./controller/level-controller */ \"./src/controller/level-controller.ts\");\n/* harmony import */ var _controller_fragment_tracker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./controller/fragment-tracker */ \"./src/controller/fragment-tracker.ts\");\n/* harmony import */ var _controller_stream_controller__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./controller/stream-controller */ \"./src/controller/stream-controller.ts\");\n/* harmony import */ var _is_supported__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./is-supported */ \"./src/is-supported.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config */ \"./src/config.ts\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! eventemitter3 */ \"./node_modules/eventemitter3/index.js\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./errors */ \"./src/errors.ts\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * @module Hls\n * @class\n * @constructor\n */\nvar Hls = /*#__PURE__*/function () {\n Hls.isSupported = function isSupported() {\n return Object(_is_supported__WEBPACK_IMPORTED_MODULE_8__[\"isSupported\"])();\n };\n\n /**\n * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.\n *\n * @constructs Hls\n * @param {HlsConfig} config\n */\n function Hls(userConfig) {\n if (userConfig === void 0) {\n userConfig = {};\n }\n\n this.config = void 0;\n this.userConfig = void 0;\n this.coreComponents = void 0;\n this.networkControllers = void 0;\n this._emitter = new eventemitter3__WEBPACK_IMPORTED_MODULE_11__[\"EventEmitter\"]();\n this._autoLevelCapping = void 0;\n this.abrController = void 0;\n this.bufferController = void 0;\n this.capLevelController = void 0;\n this.latencyController = void 0;\n this.levelController = void 0;\n this.streamController = void 0;\n this.audioTrackController = void 0;\n this.subtitleTrackController = void 0;\n this.emeController = void 0;\n this.cmcdController = void 0;\n this._media = null;\n this.url = null;\n var config = this.config = Object(_config__WEBPACK_IMPORTED_MODULE_10__[\"mergeConfig\"])(Hls.DefaultConfig, userConfig);\n this.userConfig = userConfig;\n Object(_utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"enableLogs\"])(config.debug);\n this._autoLevelCapping = -1;\n\n if (config.progressive) {\n Object(_config__WEBPACK_IMPORTED_MODULE_10__[\"enableStreamingMode\"])(config);\n } // core controllers and network loaders\n\n\n var ConfigAbrController = config.abrController,\n ConfigBufferController = config.bufferController,\n ConfigCapLevelController = config.capLevelController,\n ConfigFpsController = config.fpsController;\n var abrController = this.abrController = new ConfigAbrController(this);\n var bufferController = this.bufferController = new ConfigBufferController(this);\n var capLevelController = this.capLevelController = new ConfigCapLevelController(this);\n var fpsController = new ConfigFpsController(this);\n var playListLoader = new _loader_playlist_loader__WEBPACK_IMPORTED_MODULE_1__[\"default\"](this);\n var keyLoader = new _loader_key_loader__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this);\n var id3TrackController = new _controller_id3_track_controller__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this); // network controllers\n\n var levelController = this.levelController = new _controller_level_controller__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this); // FragmentTracker must be defined before StreamController because the order of event handling is important\n\n var fragmentTracker = new _controller_fragment_tracker__WEBPACK_IMPORTED_MODULE_6__[\"FragmentTracker\"](this);\n var streamController = this.streamController = new _controller_stream_controller__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this, fragmentTracker); // Cap level controller uses streamController to flush the buffer\n\n capLevelController.setStreamController(streamController); // fpsController uses streamController to switch when frames are being dropped\n\n fpsController.setStreamController(streamController);\n var networkControllers = [playListLoader, keyLoader, levelController, streamController];\n this.networkControllers = networkControllers;\n var coreComponents = [abrController, bufferController, capLevelController, fpsController, id3TrackController, fragmentTracker];\n this.audioTrackController = this.createController(config.audioTrackController, null, networkControllers);\n this.createController(config.audioStreamController, fragmentTracker, networkControllers); // subtitleTrackController must be defined before because the order of event handling is important\n\n this.subtitleTrackController = this.createController(config.subtitleTrackController, null, networkControllers);\n this.createController(config.subtitleStreamController, fragmentTracker, networkControllers);\n this.createController(config.timelineController, null, coreComponents);\n this.emeController = this.createController(config.emeController, null, coreComponents);\n this.cmcdController = this.createController(config.cmcdController, null, coreComponents);\n this.latencyController = this.createController(_controller_latency_controller__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, coreComponents);\n this.coreComponents = coreComponents;\n }\n\n var _proto = Hls.prototype;\n\n _proto.createController = function createController(ControllerClass, fragmentTracker, components) {\n if (ControllerClass) {\n var controllerInstance = fragmentTracker ? new ControllerClass(this, fragmentTracker) : new ControllerClass(this);\n\n if (components) {\n components.push(controllerInstance);\n }\n\n return controllerInstance;\n }\n\n return null;\n } // Delegate the EventEmitter through the public API of Hls.js\n ;\n\n _proto.on = function on(event, listener, context) {\n if (context === void 0) {\n context = this;\n }\n\n this._emitter.on(event, listener, context);\n };\n\n _proto.once = function once(event, listener, context) {\n if (context === void 0) {\n context = this;\n }\n\n this._emitter.once(event, listener, context);\n };\n\n _proto.removeAllListeners = function removeAllListeners(event) {\n this._emitter.removeAllListeners(event);\n };\n\n _proto.off = function off(event, listener, context, once) {\n if (context === void 0) {\n context = this;\n }\n\n this._emitter.off(event, listener, context, once);\n };\n\n _proto.listeners = function listeners(event) {\n return this._emitter.listeners(event);\n };\n\n _proto.emit = function emit(event, name, eventObject) {\n return this._emitter.emit(event, name, eventObject);\n };\n\n _proto.trigger = function trigger(event, eventObject) {\n if (this.config.debug) {\n return this.emit(event, event, eventObject);\n } else {\n try {\n return this.emit(event, event, eventObject);\n } catch (e) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].error('An internal error happened while handling event ' + event + '. Error message: \"' + e.message + '\". Here is a stacktrace:', e);\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorTypes\"].OTHER_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"].INTERNAL_EXCEPTION,\n fatal: false,\n event: event,\n error: e\n });\n }\n }\n\n return false;\n };\n\n _proto.listenerCount = function listenerCount(event) {\n return this._emitter.listenerCount(event);\n }\n /**\n * Dispose of the instance\n */\n ;\n\n _proto.destroy = function destroy() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('destroy');\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].DESTROYING, undefined);\n this.detachMedia();\n this.removeAllListeners();\n this._autoLevelCapping = -1;\n this.url = null;\n this.networkControllers.forEach(function (component) {\n return component.destroy();\n });\n this.networkControllers.length = 0;\n this.coreComponents.forEach(function (component) {\n return component.destroy();\n });\n this.coreComponents.length = 0;\n }\n /**\n * Attaches Hls.js to a media element\n * @param {HTMLMediaElement} media\n */\n ;\n\n _proto.attachMedia = function attachMedia(media) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('attachMedia');\n this._media = media;\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].MEDIA_ATTACHING, {\n media: media\n });\n }\n /**\n * Detach Hls.js from the media\n */\n ;\n\n _proto.detachMedia = function detachMedia() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('detachMedia');\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].MEDIA_DETACHING, undefined);\n this._media = null;\n }\n /**\n * Set the source URL. Can be relative or absolute.\n * @param {string} url\n */\n ;\n\n _proto.loadSource = function loadSource(url) {\n this.stopLoad();\n var media = this.media;\n var loadedSource = this.url;\n var loadingSource = this.url = url_toolkit__WEBPACK_IMPORTED_MODULE_0__[\"buildAbsoluteURL\"](self.location.href, url, {\n alwaysNormalize: true\n });\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"loadSource:\" + loadingSource);\n\n if (media && loadedSource && loadedSource !== loadingSource && this.bufferController.hasSourceTypes()) {\n this.detachMedia();\n this.attachMedia(media);\n } // when attaching to a source URL, trigger a playlist load\n\n\n this.trigger(_events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"].MANIFEST_LOADING, {\n url: url\n });\n }\n /**\n * Start loading data from the stream source.\n * Depending on default config, client starts loading automatically when a source is set.\n *\n * @param {number} startPosition Set the start position to stream from\n * @default -1 None (from earliest point)\n */\n ;\n\n _proto.startLoad = function startLoad(startPosition) {\n if (startPosition === void 0) {\n startPosition = -1;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"startLoad(\" + startPosition + \")\");\n this.networkControllers.forEach(function (controller) {\n controller.startLoad(startPosition);\n });\n }\n /**\n * Stop loading of any stream data.\n */\n ;\n\n _proto.stopLoad = function stopLoad() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('stopLoad');\n this.networkControllers.forEach(function (controller) {\n controller.stopLoad();\n });\n }\n /**\n * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1)\n */\n ;\n\n _proto.swapAudioCodec = function swapAudioCodec() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('swapAudioCodec');\n this.streamController.swapAudioCodec();\n }\n /**\n * When the media-element fails, this allows to detach and then re-attach it\n * as one call (convenience method).\n *\n * Automatic recovery of media-errors by this process is configurable.\n */\n ;\n\n _proto.recoverMediaError = function recoverMediaError() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log('recoverMediaError');\n var media = this._media;\n this.detachMedia();\n\n if (media) {\n this.attachMedia(media);\n }\n };\n\n _proto.removeLevel = function removeLevel(levelIndex, urlId) {\n if (urlId === void 0) {\n urlId = 0;\n }\n\n this.levelController.removeLevel(levelIndex, urlId);\n }\n /**\n * @type {Level[]}\n */\n ;\n\n _createClass(Hls, [{\n key: \"levels\",\n get: function get() {\n var levels = this.levelController.levels;\n return levels ? levels : [];\n }\n /**\n * Index of quality level currently played\n * @type {number}\n */\n\n }, {\n key: \"currentLevel\",\n get: function get() {\n return this.streamController.currentLevel;\n }\n /**\n * Set quality level index immediately .\n * This will flush the current buffer to replace the quality asap.\n * That means playback will interrupt at least shortly to re-buffer and re-sync eventually.\n * @type {number} -1 for automatic level selection\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set currentLevel:\" + newLevel);\n this.loadLevel = newLevel;\n this.abrController.clearTimer();\n this.streamController.immediateLevelSwitch();\n }\n /**\n * Index of next quality level loaded as scheduled by stream controller.\n * @type {number}\n */\n\n }, {\n key: \"nextLevel\",\n get: function get() {\n return this.streamController.nextLevel;\n }\n /**\n * Set quality level index for next loaded data.\n * This will switch the video quality asap, without interrupting playback.\n * May abort current loading of data, and flush parts of buffer (outside currently played fragment region).\n * @type {number} -1 for automatic level selection\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set nextLevel:\" + newLevel);\n this.levelController.manualLevel = newLevel;\n this.streamController.nextLevelSwitch();\n }\n /**\n * Return the quality level of the currently or last (of none is loaded currently) segment\n * @type {number}\n */\n\n }, {\n key: \"loadLevel\",\n get: function get() {\n return this.levelController.level;\n }\n /**\n * Set quality level index for next loaded data in a conservative way.\n * This will switch the quality without flushing, but interrupt current loading.\n * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer.\n * @type {number} newLevel -1 for automatic level selection\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set loadLevel:\" + newLevel);\n this.levelController.manualLevel = newLevel;\n }\n /**\n * get next quality level loaded\n * @type {number}\n */\n\n }, {\n key: \"nextLoadLevel\",\n get: function get() {\n return this.levelController.nextLoadLevel;\n }\n /**\n * Set quality level of next loaded segment in a fully \"non-destructive\" way.\n * Same as `loadLevel` but will wait for next switch (until current loading is done).\n * @type {number} level\n */\n ,\n set: function set(level) {\n this.levelController.nextLoadLevel = level;\n }\n /**\n * Return \"first level\": like a default level, if not set,\n * falls back to index of first level referenced in manifest\n * @type {number}\n */\n\n }, {\n key: \"firstLevel\",\n get: function get() {\n return Math.max(this.levelController.firstLevel, this.minAutoLevel);\n }\n /**\n * Sets \"first-level\", see getter.\n * @type {number}\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set firstLevel:\" + newLevel);\n this.levelController.firstLevel = newLevel;\n }\n /**\n * Return start level (level of first fragment that will be played back)\n * if not overrided by user, first level appearing in manifest will be used as start level\n * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n * (determined from download of first segment)\n * @type {number}\n */\n\n }, {\n key: \"startLevel\",\n get: function get() {\n return this.levelController.startLevel;\n }\n /**\n * set start level (level of first fragment that will be played back)\n * if not overrided by user, first level appearing in manifest will be used as start level\n * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n * (determined from download of first segment)\n * @type {number} newLevel\n */\n ,\n set: function set(newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set startLevel:\" + newLevel); // if not in automatic start level detection, ensure startLevel is greater than minAutoLevel\n\n if (newLevel !== -1) {\n newLevel = Math.max(newLevel, this.minAutoLevel);\n }\n\n this.levelController.startLevel = newLevel;\n }\n /**\n * Get the current setting for capLevelToPlayerSize\n *\n * @type {boolean}\n */\n\n }, {\n key: \"capLevelToPlayerSize\",\n get: function get() {\n return this.config.capLevelToPlayerSize;\n }\n /**\n * set dynamically set capLevelToPlayerSize against (`CapLevelController`)\n *\n * @type {boolean}\n */\n ,\n set: function set(shouldStartCapping) {\n var newCapLevelToPlayerSize = !!shouldStartCapping;\n\n if (newCapLevelToPlayerSize !== this.config.capLevelToPlayerSize) {\n if (newCapLevelToPlayerSize) {\n this.capLevelController.startCapping(); // If capping occurs, nextLevelSwitch will happen based on size.\n } else {\n this.capLevelController.stopCapping();\n this.autoLevelCapping = -1;\n this.streamController.nextLevelSwitch(); // Now we're uncapped, get the next level asap.\n }\n\n this.config.capLevelToPlayerSize = newCapLevelToPlayerSize;\n }\n }\n /**\n * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n * @type {number}\n */\n\n }, {\n key: \"autoLevelCapping\",\n get: function get() {\n return this._autoLevelCapping;\n }\n /**\n * get bandwidth estimate\n * @type {number}\n */\n ,\n set:\n /**\n * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n * @type {number}\n */\n function set(newLevel) {\n if (this._autoLevelCapping !== newLevel) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_9__[\"logger\"].log(\"set autoLevelCapping:\" + newLevel);\n this._autoLevelCapping = newLevel;\n }\n }\n /**\n * True when automatic level selection enabled\n * @type {boolean}\n */\n\n }, {\n key: \"bandwidthEstimate\",\n get: function get() {\n var bwEstimator = this.abrController.bwEstimator;\n\n if (!bwEstimator) {\n return NaN;\n }\n\n return bwEstimator.getEstimate();\n }\n }, {\n key: \"autoLevelEnabled\",\n get: function get() {\n return this.levelController.manualLevel === -1;\n }\n /**\n * Level set manually (if any)\n * @type {number}\n */\n\n }, {\n key: \"manualLevel\",\n get: function get() {\n return this.levelController.manualLevel;\n }\n /**\n * min level selectable in auto mode according to config.minAutoBitrate\n * @type {number}\n */\n\n }, {\n key: \"minAutoLevel\",\n get: function get() {\n var levels = this.levels,\n minAutoBitrate = this.config.minAutoBitrate;\n if (!levels) return 0;\n var len = levels.length;\n\n for (var i = 0; i < len; i++) {\n if (levels[i].maxBitrate >= minAutoBitrate) {\n return i;\n }\n }\n\n return 0;\n }\n /**\n * max level selectable in auto mode according to autoLevelCapping\n * @type {number}\n */\n\n }, {\n key: \"maxAutoLevel\",\n get: function get() {\n var levels = this.levels,\n autoLevelCapping = this.autoLevelCapping;\n var maxAutoLevel;\n\n if (autoLevelCapping === -1 && levels && levels.length) {\n maxAutoLevel = levels.length - 1;\n } else {\n maxAutoLevel = autoLevelCapping;\n }\n\n return maxAutoLevel;\n }\n /**\n * next automatically selected quality level\n * @type {number}\n */\n\n }, {\n key: \"nextAutoLevel\",\n get: function get() {\n // ensure next auto level is between min and max auto level\n return Math.min(Math.max(this.abrController.nextAutoLevel, this.minAutoLevel), this.maxAutoLevel);\n }\n /**\n * this setter is used to force next auto level.\n * this is useful to force a switch down in auto mode:\n * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example)\n * forced value is valid for one fragment. upon successful frag loading at forced level,\n * this value will be resetted to -1 by ABR controller.\n * @type {number}\n */\n ,\n set: function set(nextLevel) {\n this.abrController.nextAutoLevel = Math.max(this.minAutoLevel, nextLevel);\n }\n /**\n * get the datetime value relative to media.currentTime for the active level Program Date Time if present\n * @type {Date}\n */\n\n }, {\n key: \"playingDate\",\n get: function get() {\n return this.streamController.currentProgramDateTime;\n }\n /**\n * @type {AudioTrack[]}\n */\n\n }, {\n key: \"audioTracks\",\n get: function get() {\n var audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.audioTracks : [];\n }\n /**\n * index of the selected audio track (index in audio track lists)\n * @type {number}\n */\n\n }, {\n key: \"audioTrack\",\n get: function get() {\n var audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.audioTrack : -1;\n }\n /**\n * selects an audio track, based on its index in audio track lists\n * @type {number}\n */\n ,\n set: function set(audioTrackId) {\n var audioTrackController = this.audioTrackController;\n\n if (audioTrackController) {\n audioTrackController.audioTrack = audioTrackId;\n }\n }\n /**\n * get alternate subtitle tracks list from playlist\n * @type {MediaPlaylist[]}\n */\n\n }, {\n key: \"subtitleTracks\",\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleTracks : [];\n }\n /**\n * index of the selected subtitle track (index in subtitle track lists)\n * @type {number}\n */\n\n }, {\n key: \"subtitleTrack\",\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleTrack : -1;\n },\n set:\n /**\n * select an subtitle track, based on its index in subtitle track lists\n * @type {number}\n */\n function set(subtitleTrackId) {\n var subtitleTrackController = this.subtitleTrackController;\n\n if (subtitleTrackController) {\n subtitleTrackController.subtitleTrack = subtitleTrackId;\n }\n }\n /**\n * @type {boolean}\n */\n\n }, {\n key: \"media\",\n get: function get() {\n return this._media;\n }\n }, {\n key: \"subtitleDisplay\",\n get: function get() {\n var subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleDisplay : false;\n }\n /**\n * Enable/disable subtitle display rendering\n * @type {boolean}\n */\n ,\n set: function set(value) {\n var subtitleTrackController = this.subtitleTrackController;\n\n if (subtitleTrackController) {\n subtitleTrackController.subtitleDisplay = value;\n }\n }\n /**\n * get mode for Low-Latency HLS loading\n * @type {boolean}\n */\n\n }, {\n key: \"lowLatencyMode\",\n get: function get() {\n return this.config.lowLatencyMode;\n }\n /**\n * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK.\n * @type {boolean}\n */\n ,\n set: function set(mode) {\n this.config.lowLatencyMode = mode;\n }\n /**\n * position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```)\n * @type {number}\n */\n\n }, {\n key: \"liveSyncPosition\",\n get: function get() {\n return this.latencyController.liveSyncPosition;\n }\n /**\n * estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced)\n * returns 0 before first playlist is loaded\n * @type {number}\n */\n\n }, {\n key: \"latency\",\n get: function get() {\n return this.latencyController.latency;\n }\n /**\n * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition```\n * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration```\n * returns 0 before first playlist is loaded\n * @type {number}\n */\n\n }, {\n key: \"maxLatency\",\n get: function get() {\n return this.latencyController.maxLatency;\n }\n /**\n * target distance from the edge as calculated by the latency controller\n * @type {number}\n */\n\n }, {\n key: \"targetLatency\",\n get: function get() {\n return this.latencyController.targetLatency;\n }\n /**\n * the rate at which the edge of the current live playlist is advancing or 1 if there is none\n * @type {number}\n */\n\n }, {\n key: \"drift\",\n get: function get() {\n return this.latencyController.drift;\n }\n /**\n * set to true when startLoad is called before MANIFEST_PARSED event\n * @type {boolean}\n */\n\n }, {\n key: \"forceStartLoad\",\n get: function get() {\n return this.streamController.forceStartLoad;\n }\n }], [{\n key: \"version\",\n get: function get() {\n return undefined;\n }\n }, {\n key: \"Events\",\n get: function get() {\n return _events__WEBPACK_IMPORTED_MODULE_12__[\"Events\"];\n }\n }, {\n key: \"ErrorTypes\",\n get: function get() {\n return _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorTypes\"];\n }\n }, {\n key: \"ErrorDetails\",\n get: function get() {\n return _errors__WEBPACK_IMPORTED_MODULE_13__[\"ErrorDetails\"];\n }\n }, {\n key: \"DefaultConfig\",\n get: function get() {\n if (!Hls.defaultConfig) {\n return _config__WEBPACK_IMPORTED_MODULE_10__[\"hlsDefaultConfig\"];\n }\n\n return Hls.defaultConfig;\n }\n /**\n * @type {HlsConfig}\n */\n ,\n set: function set(defaultConfig) {\n Hls.defaultConfig = defaultConfig;\n }\n }]);\n\n return Hls;\n}();\n\nHls.defaultConfig = void 0;\n\n\n/***/ }),\n\n/***/ \"./src/is-supported.ts\":\n/*!*****************************!*\\\n !*** ./src/is-supported.ts ***!\n \\*****************************/\n/*! exports provided: isSupported, changeTypeSupported */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSupported\", function() { return isSupported; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeTypeSupported\", function() { return changeTypeSupported; });\n/* harmony import */ var _utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/mediasource-helper */ \"./src/utils/mediasource-helper.ts\");\n\n\nfunction getSourceBuffer() {\n return self.SourceBuffer || self.WebKitSourceBuffer;\n}\n\nfunction isSupported() {\n var mediaSource = Object(_utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_0__[\"getMediaSource\"])();\n\n if (!mediaSource) {\n return false;\n }\n\n var sourceBuffer = getSourceBuffer();\n var isTypeSupported = mediaSource && typeof mediaSource.isTypeSupported === 'function' && mediaSource.isTypeSupported('video/mp4; codecs=\"avc1.42E01E,mp4a.40.2\"'); // if SourceBuffer is exposed ensure its API is valid\n // safari and old version of Chrome doe not expose SourceBuffer globally so checking SourceBuffer.prototype is impossible\n\n var sourceBufferValidAPI = !sourceBuffer || sourceBuffer.prototype && typeof sourceBuffer.prototype.appendBuffer === 'function' && typeof sourceBuffer.prototype.remove === 'function';\n return !!isTypeSupported && !!sourceBufferValidAPI;\n}\nfunction changeTypeSupported() {\n var _sourceBuffer$prototy;\n\n var sourceBuffer = getSourceBuffer();\n return typeof (sourceBuffer === null || sourceBuffer === void 0 ? void 0 : (_sourceBuffer$prototy = sourceBuffer.prototype) === null || _sourceBuffer$prototy === void 0 ? void 0 : _sourceBuffer$prototy.changeType) === 'function';\n}\n\n/***/ }),\n\n/***/ \"./src/loader/date-range.ts\":\n/*!**********************************!*\\\n !*** ./src/loader/date-range.ts ***!\n \\**********************************/\n/*! exports provided: DateRangeAttribute, DateRange */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DateRangeAttribute\", function() { return DateRangeAttribute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DateRange\", function() { return DateRange; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _utils_attr_list__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/attr-list */ \"./src/utils/attr-list.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\nvar DateRangeAttribute;\n\n(function (DateRangeAttribute) {\n DateRangeAttribute[\"ID\"] = \"ID\";\n DateRangeAttribute[\"CLASS\"] = \"CLASS\";\n DateRangeAttribute[\"START_DATE\"] = \"START-DATE\";\n DateRangeAttribute[\"DURATION\"] = \"DURATION\";\n DateRangeAttribute[\"END_DATE\"] = \"END-DATE\";\n DateRangeAttribute[\"END_ON_NEXT\"] = \"END-ON-NEXT\";\n DateRangeAttribute[\"PLANNED_DURATION\"] = \"PLANNED-DURATION\";\n DateRangeAttribute[\"SCTE35_OUT\"] = \"SCTE35-OUT\";\n DateRangeAttribute[\"SCTE35_IN\"] = \"SCTE35-IN\";\n})(DateRangeAttribute || (DateRangeAttribute = {}));\n\nvar DateRange = /*#__PURE__*/function () {\n function DateRange(dateRangeAttr, dateRangeWithSameId) {\n this.attr = void 0;\n this._startDate = void 0;\n this._endDate = void 0;\n this._badValueForSameId = void 0;\n\n if (dateRangeWithSameId) {\n var previousAttr = dateRangeWithSameId.attr;\n\n for (var key in previousAttr) {\n if (Object.prototype.hasOwnProperty.call(dateRangeAttr, key) && dateRangeAttr[key] !== previousAttr[key]) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"DATERANGE tag attribute: \\\"\" + key + \"\\\" does not match for tags with ID: \\\"\" + dateRangeAttr.ID + \"\\\"\");\n this._badValueForSameId = key;\n break;\n }\n } // Merge DateRange tags with the same ID\n\n\n dateRangeAttr = _extends(new _utils_attr_list__WEBPACK_IMPORTED_MODULE_1__[\"AttrList\"]({}), previousAttr, dateRangeAttr);\n }\n\n this.attr = dateRangeAttr;\n this._startDate = new Date(dateRangeAttr[DateRangeAttribute.START_DATE]);\n\n if (DateRangeAttribute.END_DATE in this.attr) {\n var endDate = new Date(this.attr[DateRangeAttribute.END_DATE]);\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(endDate.getTime())) {\n this._endDate = endDate;\n }\n }\n }\n\n _createClass(DateRange, [{\n key: \"id\",\n get: function get() {\n return this.attr.ID;\n }\n }, {\n key: \"class\",\n get: function get() {\n return this.attr.CLASS;\n }\n }, {\n key: \"startDate\",\n get: function get() {\n return this._startDate;\n }\n }, {\n key: \"endDate\",\n get: function get() {\n if (this._endDate) {\n return this._endDate;\n }\n\n var duration = this.duration;\n\n if (duration !== null) {\n return new Date(this._startDate.getTime() + duration * 1000);\n }\n\n return null;\n }\n }, {\n key: \"duration\",\n get: function get() {\n if (DateRangeAttribute.DURATION in this.attr) {\n var duration = this.attr.decimalFloatingPoint(DateRangeAttribute.DURATION);\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(duration)) {\n return duration;\n }\n } else if (this._endDate) {\n return (this._endDate.getTime() - this._startDate.getTime()) / 1000;\n }\n\n return null;\n }\n }, {\n key: \"plannedDuration\",\n get: function get() {\n if (DateRangeAttribute.PLANNED_DURATION in this.attr) {\n return this.attr.decimalFloatingPoint(DateRangeAttribute.PLANNED_DURATION);\n }\n\n return null;\n }\n }, {\n key: \"endOnNext\",\n get: function get() {\n return this.attr.bool(DateRangeAttribute.END_ON_NEXT);\n }\n }, {\n key: \"isValid\",\n get: function get() {\n return !!this.id && !this._badValueForSameId && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.startDate.getTime()) && (this.duration === null || this.duration >= 0) && (!this.endOnNext || !!this.class);\n }\n }]);\n\n return DateRange;\n}();\n\n/***/ }),\n\n/***/ \"./src/loader/fragment-loader.ts\":\n/*!***************************************!*\\\n !*** ./src/loader/fragment-loader.ts ***!\n \\***************************************/\n/*! exports provided: default, LoadError */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FragmentLoader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoadError\", function() { return LoadError; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n\n\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\nvar MIN_CHUNK_SIZE = Math.pow(2, 17); // 128kb\n\nvar FragmentLoader = /*#__PURE__*/function () {\n function FragmentLoader(config) {\n this.config = void 0;\n this.loader = null;\n this.partLoadTimeout = -1;\n this.config = config;\n }\n\n var _proto = FragmentLoader.prototype;\n\n _proto.destroy = function destroy() {\n if (this.loader) {\n this.loader.destroy();\n this.loader = null;\n }\n };\n\n _proto.abort = function abort() {\n if (this.loader) {\n // Abort the loader for current fragment. Only one may load at any given time\n this.loader.abort();\n }\n };\n\n _proto.load = function load(frag, _onProgress) {\n var _this = this;\n\n var url = frag.url;\n\n if (!url) {\n return Promise.reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_ERROR,\n fatal: false,\n frag: frag,\n networkDetails: null\n }, \"Fragment does not have a \" + (url ? 'part list' : 'url')));\n }\n\n this.abort();\n var config = this.config;\n var FragmentILoader = config.fLoader;\n var DefaultILoader = config.loader;\n return new Promise(function (resolve, reject) {\n if (_this.loader) {\n _this.loader.destroy();\n }\n\n var loader = _this.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n var loaderContext = createLoaderContext(frag);\n var loaderConfig = {\n timeout: config.fragLoadingTimeOut,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: config.fragLoadingMaxRetryTimeout,\n highWaterMark: frag.sn === 'initSegment' ? Infinity : MIN_CHUNK_SIZE\n }; // Assign frag stats to the loader's stats reference\n\n frag.stats = loader.stats;\n loader.load(loaderContext, loaderConfig, {\n onSuccess: function onSuccess(response, stats, context, networkDetails) {\n _this.resetLoader(frag, loader);\n\n resolve({\n frag: frag,\n part: null,\n payload: response.data,\n networkDetails: networkDetails\n });\n },\n onError: function onError(response, context, networkDetails) {\n _this.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_ERROR,\n fatal: false,\n frag: frag,\n response: response,\n networkDetails: networkDetails\n }));\n },\n onAbort: function onAbort(stats, context, networkDetails) {\n _this.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].INTERNAL_ABORTED,\n fatal: false,\n frag: frag,\n networkDetails: networkDetails\n }));\n },\n onTimeout: function onTimeout(response, context, networkDetails) {\n _this.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT,\n fatal: false,\n frag: frag,\n networkDetails: networkDetails\n }));\n },\n onProgress: function onProgress(stats, context, data, networkDetails) {\n if (_onProgress) {\n _onProgress({\n frag: frag,\n part: null,\n payload: data,\n networkDetails: networkDetails\n });\n }\n }\n });\n });\n };\n\n _proto.loadPart = function loadPart(frag, part, onProgress) {\n var _this2 = this;\n\n this.abort();\n var config = this.config;\n var FragmentILoader = config.fLoader;\n var DefaultILoader = config.loader;\n return new Promise(function (resolve, reject) {\n if (_this2.loader) {\n _this2.loader.destroy();\n }\n\n var loader = _this2.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n var loaderContext = createLoaderContext(frag, part);\n var loaderConfig = {\n timeout: config.fragLoadingTimeOut,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: config.fragLoadingMaxRetryTimeout,\n highWaterMark: MIN_CHUNK_SIZE\n }; // Assign part stats to the loader's stats reference\n\n part.stats = loader.stats;\n loader.load(loaderContext, loaderConfig, {\n onSuccess: function onSuccess(response, stats, context, networkDetails) {\n _this2.resetLoader(frag, loader);\n\n _this2.updateStatsFromPart(frag, part);\n\n var partLoadedData = {\n frag: frag,\n part: part,\n payload: response.data,\n networkDetails: networkDetails\n };\n onProgress(partLoadedData);\n resolve(partLoadedData);\n },\n onError: function onError(response, context, networkDetails) {\n _this2.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_ERROR,\n fatal: false,\n frag: frag,\n part: part,\n response: response,\n networkDetails: networkDetails\n }));\n },\n onAbort: function onAbort(stats, context, networkDetails) {\n frag.stats.aborted = part.stats.aborted;\n\n _this2.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].INTERNAL_ABORTED,\n fatal: false,\n frag: frag,\n part: part,\n networkDetails: networkDetails\n }));\n },\n onTimeout: function onTimeout(response, context, networkDetails) {\n _this2.resetLoader(frag, loader);\n\n reject(new LoadError({\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].FRAG_LOAD_TIMEOUT,\n fatal: false,\n frag: frag,\n part: part,\n networkDetails: networkDetails\n }));\n }\n });\n });\n };\n\n _proto.updateStatsFromPart = function updateStatsFromPart(frag, part) {\n var fragStats = frag.stats;\n var partStats = part.stats;\n var partTotal = partStats.total;\n fragStats.loaded += partStats.loaded;\n\n if (partTotal) {\n var estTotalParts = Math.round(frag.duration / part.duration);\n var estLoadedParts = Math.min(Math.round(fragStats.loaded / partTotal), estTotalParts);\n var estRemainingParts = estTotalParts - estLoadedParts;\n var estRemainingBytes = estRemainingParts * Math.round(fragStats.loaded / estLoadedParts);\n fragStats.total = fragStats.loaded + estRemainingBytes;\n } else {\n fragStats.total = Math.max(fragStats.loaded, fragStats.total);\n }\n\n var fragLoading = fragStats.loading;\n var partLoading = partStats.loading;\n\n if (fragLoading.start) {\n // add to fragment loader latency\n fragLoading.first += partLoading.first - partLoading.start;\n } else {\n fragLoading.start = partLoading.start;\n fragLoading.first = partLoading.first;\n }\n\n fragLoading.end = partLoading.end;\n };\n\n _proto.resetLoader = function resetLoader(frag, loader) {\n frag.loader = null;\n\n if (this.loader === loader) {\n self.clearTimeout(this.partLoadTimeout);\n this.loader = null;\n }\n\n loader.destroy();\n };\n\n return FragmentLoader;\n}();\n\n\n\nfunction createLoaderContext(frag, part) {\n if (part === void 0) {\n part = null;\n }\n\n var segment = part || frag;\n var loaderContext = {\n frag: frag,\n part: part,\n responseType: 'arraybuffer',\n url: segment.url,\n headers: {},\n rangeStart: 0,\n rangeEnd: 0\n };\n var start = segment.byteRangeStartOffset;\n var end = segment.byteRangeEndOffset;\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(start) && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(end)) {\n loaderContext.rangeStart = start;\n loaderContext.rangeEnd = end;\n }\n\n return loaderContext;\n}\n\nvar LoadError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(LoadError, _Error);\n\n function LoadError(data) {\n var _this3;\n\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n\n _this3 = _Error.call.apply(_Error, [this].concat(params)) || this;\n _this3.data = void 0;\n _this3.data = data;\n return _this3;\n }\n\n return LoadError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\n/***/ }),\n\n/***/ \"./src/loader/fragment.ts\":\n/*!********************************!*\\\n !*** ./src/loader/fragment.ts ***!\n \\********************************/\n/*! exports provided: ElementaryStreamTypes, BaseSegment, Fragment, Part */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ElementaryStreamTypes\", function() { return ElementaryStreamTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseSegment\", function() { return BaseSegment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Fragment\", function() { return Fragment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Part\", function() { return Part; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! url-toolkit */ \"./node_modules/url-toolkit/src/url-toolkit.js\");\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _level_key__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./level-key */ \"./src/loader/level-key.ts\");\n/* harmony import */ var _load_stats__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./load-stats */ \"./src/loader/load-stats.ts\");\n\n\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n\nvar ElementaryStreamTypes;\n\n(function (ElementaryStreamTypes) {\n ElementaryStreamTypes[\"AUDIO\"] = \"audio\";\n ElementaryStreamTypes[\"VIDEO\"] = \"video\";\n ElementaryStreamTypes[\"AUDIOVIDEO\"] = \"audiovideo\";\n})(ElementaryStreamTypes || (ElementaryStreamTypes = {}));\n\nvar BaseSegment = /*#__PURE__*/function () {\n // baseurl is the URL to the playlist\n // relurl is the portion of the URL that comes from inside the playlist.\n // Holds the types of data this fragment supports\n function BaseSegment(baseurl) {\n var _this$elementaryStrea;\n\n this._byteRange = null;\n this._url = null;\n this.baseurl = void 0;\n this.relurl = void 0;\n this.elementaryStreams = (_this$elementaryStrea = {}, _this$elementaryStrea[ElementaryStreamTypes.AUDIO] = null, _this$elementaryStrea[ElementaryStreamTypes.VIDEO] = null, _this$elementaryStrea[ElementaryStreamTypes.AUDIOVIDEO] = null, _this$elementaryStrea);\n this.baseurl = baseurl;\n } // setByteRange converts a EXT-X-BYTERANGE attribute into a two element array\n\n\n var _proto = BaseSegment.prototype;\n\n _proto.setByteRange = function setByteRange(value, previous) {\n var params = value.split('@', 2);\n var byteRange = [];\n\n if (params.length === 1) {\n byteRange[0] = previous ? previous.byteRangeEndOffset : 0;\n } else {\n byteRange[0] = parseInt(params[1]);\n }\n\n byteRange[1] = parseInt(params[0]) + byteRange[0];\n this._byteRange = byteRange;\n };\n\n _createClass(BaseSegment, [{\n key: \"byteRange\",\n get: function get() {\n if (!this._byteRange) {\n return [];\n }\n\n return this._byteRange;\n }\n }, {\n key: \"byteRangeStartOffset\",\n get: function get() {\n return this.byteRange[0];\n }\n }, {\n key: \"byteRangeEndOffset\",\n get: function get() {\n return this.byteRange[1];\n }\n }, {\n key: \"url\",\n get: function get() {\n if (!this._url && this.baseurl && this.relurl) {\n this._url = Object(url_toolkit__WEBPACK_IMPORTED_MODULE_1__[\"buildAbsoluteURL\"])(this.baseurl, this.relurl, {\n alwaysNormalize: true\n });\n }\n\n return this._url || '';\n },\n set: function set(value) {\n this._url = value;\n }\n }]);\n\n return BaseSegment;\n}();\nvar Fragment = /*#__PURE__*/function (_BaseSegment) {\n _inheritsLoose(Fragment, _BaseSegment);\n\n // EXTINF has to be present for a m3u8 to be considered valid\n // sn notates the sequence number for a segment, and if set to a string can be 'initSegment'\n // levelkey is the EXT-X-KEY that applies to this segment for decryption\n // core difference from the private field _decryptdata is the lack of the initialized IV\n // _decryptdata will set the IV for this segment based on the segment number in the fragment\n // A string representing the fragment type\n // A reference to the loader. Set while the fragment is loading, and removed afterwards. Used to abort fragment loading\n // The level/track index to which the fragment belongs\n // The continuity counter of the fragment\n // The starting Presentation Time Stamp (PTS) of the fragment. Set after transmux complete.\n // The ending Presentation Time Stamp (PTS) of the fragment. Set after transmux complete.\n // The latest Presentation Time Stamp (PTS) appended to the buffer.\n // The starting Decode Time Stamp (DTS) of the fragment. Set after transmux complete.\n // The ending Decode Time Stamp (DTS) of the fragment. Set after transmux complete.\n // The start time of the fragment, as listed in the manifest. Updated after transmux complete.\n // Set by `updateFragPTSDTS` in level-helper\n // The maximum starting Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete.\n // The minimum ending Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete.\n // Load/parse timing information\n // A flag indicating whether the segment was downloaded in order to test bitrate, and was not buffered\n // #EXTINF segment title\n // The Media Initialization Section for this segment\n function Fragment(type, baseurl) {\n var _this;\n\n _this = _BaseSegment.call(this, baseurl) || this;\n _this._decryptdata = null;\n _this.rawProgramDateTime = null;\n _this.programDateTime = null;\n _this.tagList = [];\n _this.duration = 0;\n _this.sn = 0;\n _this.levelkey = void 0;\n _this.type = void 0;\n _this.loader = null;\n _this.level = -1;\n _this.cc = 0;\n _this.startPTS = void 0;\n _this.endPTS = void 0;\n _this.appendedPTS = void 0;\n _this.startDTS = void 0;\n _this.endDTS = void 0;\n _this.start = 0;\n _this.deltaPTS = void 0;\n _this.maxStartPTS = void 0;\n _this.minEndPTS = void 0;\n _this.stats = new _load_stats__WEBPACK_IMPORTED_MODULE_4__[\"LoadStats\"]();\n _this.urlId = 0;\n _this.data = void 0;\n _this.bitrateTest = false;\n _this.title = null;\n _this.initSegment = null;\n _this.type = type;\n return _this;\n }\n\n var _proto2 = Fragment.prototype;\n\n /**\n * Utility method for parseLevelPlaylist to create an initialization vector for a given segment\n * @param {number} segmentNumber - segment number to generate IV with\n * @returns {Uint8Array}\n */\n _proto2.createInitializationVector = function createInitializationVector(segmentNumber) {\n var uint8View = new Uint8Array(16);\n\n for (var i = 12; i < 16; i++) {\n uint8View[i] = segmentNumber >> 8 * (15 - i) & 0xff;\n }\n\n return uint8View;\n }\n /**\n * Utility method for parseLevelPlaylist to get a fragment's decryption data from the currently parsed encryption key data\n * @param levelkey - a playlist's encryption info\n * @param segmentNumber - the fragment's segment number\n * @returns {LevelKey} - an object to be applied as a fragment's decryptdata\n */\n ;\n\n _proto2.setDecryptDataFromLevelKey = function setDecryptDataFromLevelKey(levelkey, segmentNumber) {\n var decryptdata = levelkey;\n\n if ((levelkey === null || levelkey === void 0 ? void 0 : levelkey.method) === 'AES-128' && levelkey.uri && !levelkey.iv) {\n decryptdata = _level_key__WEBPACK_IMPORTED_MODULE_3__[\"LevelKey\"].fromURI(levelkey.uri);\n decryptdata.method = levelkey.method;\n decryptdata.iv = this.createInitializationVector(segmentNumber);\n decryptdata.keyFormat = 'identity';\n }\n\n return decryptdata;\n };\n\n _proto2.setElementaryStreamInfo = function setElementaryStreamInfo(type, startPTS, endPTS, startDTS, endDTS, partial) {\n if (partial === void 0) {\n partial = false;\n }\n\n var elementaryStreams = this.elementaryStreams;\n var info = elementaryStreams[type];\n\n if (!info) {\n elementaryStreams[type] = {\n startPTS: startPTS,\n endPTS: endPTS,\n startDTS: startDTS,\n endDTS: endDTS,\n partial: partial\n };\n return;\n }\n\n info.startPTS = Math.min(info.startPTS, startPTS);\n info.endPTS = Math.max(info.endPTS, endPTS);\n info.startDTS = Math.min(info.startDTS, startDTS);\n info.endDTS = Math.max(info.endDTS, endDTS);\n };\n\n _proto2.clearElementaryStreamInfo = function clearElementaryStreamInfo() {\n var elementaryStreams = this.elementaryStreams;\n elementaryStreams[ElementaryStreamTypes.AUDIO] = null;\n elementaryStreams[ElementaryStreamTypes.VIDEO] = null;\n elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO] = null;\n };\n\n _createClass(Fragment, [{\n key: \"decryptdata\",\n get: function get() {\n if (!this.levelkey && !this._decryptdata) {\n return null;\n }\n\n if (!this._decryptdata && this.levelkey) {\n var sn = this.sn;\n\n if (typeof sn !== 'number') {\n // We are fetching decryption data for a initialization segment\n // If the segment was encrypted with AES-128\n // It must have an IV defined. We cannot substitute the Segment Number in.\n if (this.levelkey && this.levelkey.method === 'AES-128' && !this.levelkey.iv) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"missing IV for initialization segment with method=\\\"\" + this.levelkey.method + \"\\\" - compliance issue\");\n }\n /*\n Be converted to a Number.\n 'initSegment' will become NaN.\n NaN, which when converted through ToInt32() -> +0.\n ---\n Explicitly set sn to resulting value from implicit conversions 'initSegment' values for IV generation.\n */\n\n\n sn = 0;\n }\n\n this._decryptdata = this.setDecryptDataFromLevelKey(this.levelkey, sn);\n }\n\n return this._decryptdata;\n }\n }, {\n key: \"end\",\n get: function get() {\n return this.start + this.duration;\n }\n }, {\n key: \"endProgramDateTime\",\n get: function get() {\n if (this.programDateTime === null) {\n return null;\n }\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.programDateTime)) {\n return null;\n }\n\n var duration = !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.duration) ? 0 : this.duration;\n return this.programDateTime + duration * 1000;\n }\n }, {\n key: \"encrypted\",\n get: function get() {\n var _this$decryptdata;\n\n // At the m3u8-parser level we need to add support for manifest signalled keyformats\n // when we want the fragment to start reporting that it is encrypted.\n // Currently, keyFormat will only be set for identity keys\n if ((_this$decryptdata = this.decryptdata) !== null && _this$decryptdata !== void 0 && _this$decryptdata.keyFormat && this.decryptdata.uri) {\n return true;\n }\n\n return false;\n }\n }]);\n\n return Fragment;\n}(BaseSegment);\nvar Part = /*#__PURE__*/function (_BaseSegment2) {\n _inheritsLoose(Part, _BaseSegment2);\n\n function Part(partAttrs, frag, baseurl, index, previous) {\n var _this2;\n\n _this2 = _BaseSegment2.call(this, baseurl) || this;\n _this2.fragOffset = 0;\n _this2.duration = 0;\n _this2.gap = false;\n _this2.independent = false;\n _this2.relurl = void 0;\n _this2.fragment = void 0;\n _this2.index = void 0;\n _this2.stats = new _load_stats__WEBPACK_IMPORTED_MODULE_4__[\"LoadStats\"]();\n _this2.duration = partAttrs.decimalFloatingPoint('DURATION');\n _this2.gap = partAttrs.bool('GAP');\n _this2.independent = partAttrs.bool('INDEPENDENT');\n _this2.relurl = partAttrs.enumeratedString('URI');\n _this2.fragment = frag;\n _this2.index = index;\n var byteRange = partAttrs.enumeratedString('BYTERANGE');\n\n if (byteRange) {\n _this2.setByteRange(byteRange, previous);\n }\n\n if (previous) {\n _this2.fragOffset = previous.fragOffset + previous.duration;\n }\n\n return _this2;\n }\n\n _createClass(Part, [{\n key: \"start\",\n get: function get() {\n return this.fragment.start + this.fragOffset;\n }\n }, {\n key: \"end\",\n get: function get() {\n return this.start + this.duration;\n }\n }, {\n key: \"loaded\",\n get: function get() {\n var elementaryStreams = this.elementaryStreams;\n return !!(elementaryStreams.audio || elementaryStreams.video || elementaryStreams.audiovideo);\n }\n }]);\n\n return Part;\n}(BaseSegment);\n\n/***/ }),\n\n/***/ \"./src/loader/key-loader.ts\":\n/*!**********************************!*\\\n !*** ./src/loader/key-loader.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return KeyLoader; });\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/*\n * Decrypt key Loader\n */\n\n\n\n\nvar KeyLoader = /*#__PURE__*/function () {\n function KeyLoader(hls) {\n this.hls = void 0;\n this.loaders = {};\n this.decryptkey = null;\n this.decrypturl = null;\n this.hls = hls;\n this.registerListeners();\n }\n\n var _proto = KeyLoader.prototype;\n\n _proto.startLoad = function startLoad(startPosition) {};\n\n _proto.stopLoad = function stopLoad() {\n this.destroyInternalLoaders();\n };\n\n _proto.registerListeners = function registerListeners() {\n this.hls.on(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].KEY_LOADING, this.onKeyLoading, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n this.hls.off(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].KEY_LOADING, this.onKeyLoading);\n };\n\n _proto.destroyInternalLoaders = function destroyInternalLoaders() {\n for (var loaderName in this.loaders) {\n var loader = this.loaders[loaderName];\n\n if (loader) {\n loader.destroy();\n }\n }\n\n this.loaders = {};\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.destroyInternalLoaders();\n };\n\n _proto.onKeyLoading = function onKeyLoading(event, data) {\n var frag = data.frag;\n var type = frag.type;\n var loader = this.loaders[type];\n\n if (!frag.decryptdata) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('Missing decryption data on fragment in onKeyLoading');\n return;\n } // Load the key if the uri is different from previous one, or if the decrypt key has not yet been retrieved\n\n\n var uri = frag.decryptdata.uri;\n\n if (uri !== this.decrypturl || this.decryptkey === null) {\n var config = this.hls.config;\n\n if (loader) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn(\"abort previous key loader for type:\" + type);\n loader.abort();\n }\n\n if (!uri) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].warn('key uri is falsy');\n return;\n }\n\n var Loader = config.loader;\n var fragLoader = frag.loader = this.loaders[type] = new Loader(config);\n this.decrypturl = uri;\n this.decryptkey = null;\n var loaderContext = {\n url: uri,\n frag: frag,\n responseType: 'arraybuffer'\n }; // maxRetry is 0 so that instead of retrying the same key on the same variant multiple times,\n // key-loader will trigger an error and rely on stream-controller to handle retry logic.\n // this will also align retry logic with fragment-loader\n\n var loaderConfig = {\n timeout: config.fragLoadingTimeOut,\n maxRetry: 0,\n retryDelay: config.fragLoadingRetryDelay,\n maxRetryDelay: config.fragLoadingMaxRetryTimeout,\n highWaterMark: 0\n };\n var loaderCallbacks = {\n onSuccess: this.loadsuccess.bind(this),\n onError: this.loaderror.bind(this),\n onTimeout: this.loadtimeout.bind(this)\n };\n fragLoader.load(loaderContext, loaderConfig, loaderCallbacks);\n } else if (this.decryptkey) {\n // Return the key if it's already been loaded\n frag.decryptdata.key = this.decryptkey;\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].KEY_LOADED, {\n frag: frag\n });\n }\n };\n\n _proto.loadsuccess = function loadsuccess(response, stats, context) {\n var frag = context.frag;\n\n if (!frag.decryptdata) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_2__[\"logger\"].error('after key load, decryptdata unset');\n return;\n }\n\n this.decryptkey = frag.decryptdata.key = new Uint8Array(response.data); // detach fragment loader on load success\n\n frag.loader = null;\n delete this.loaders[frag.type];\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].KEY_LOADED, {\n frag: frag\n });\n };\n\n _proto.loaderror = function loaderror(response, context) {\n var frag = context.frag;\n var loader = frag.loader;\n\n if (loader) {\n loader.abort();\n }\n\n delete this.loaders[frag.type];\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_LOAD_ERROR,\n fatal: false,\n frag: frag,\n response: response\n });\n };\n\n _proto.loadtimeout = function loadtimeout(stats, context) {\n var frag = context.frag;\n var loader = frag.loader;\n\n if (loader) {\n loader.abort();\n }\n\n delete this.loaders[frag.type];\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_1__[\"ErrorDetails\"].KEY_LOAD_TIMEOUT,\n fatal: false,\n frag: frag\n });\n };\n\n return KeyLoader;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/loader/level-details.ts\":\n/*!*************************************!*\\\n !*** ./src/loader/level-details.ts ***!\n \\*************************************/\n/*! exports provided: LevelDetails */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LevelDetails\", function() { return LevelDetails; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar DEFAULT_TARGET_DURATION = 10;\nvar LevelDetails = /*#__PURE__*/function () {\n // Manifest reload synchronization\n function LevelDetails(baseUrl) {\n this.PTSKnown = false;\n this.alignedSliding = false;\n this.averagetargetduration = void 0;\n this.endCC = 0;\n this.endSN = 0;\n this.fragments = void 0;\n this.fragmentHint = void 0;\n this.partList = null;\n this.dateRanges = void 0;\n this.live = true;\n this.ageHeader = 0;\n this.advancedDateTime = void 0;\n this.updated = true;\n this.advanced = true;\n this.availabilityDelay = void 0;\n this.misses = 0;\n this.needSidxRanges = false;\n this.startCC = 0;\n this.startSN = 0;\n this.startTimeOffset = null;\n this.targetduration = 0;\n this.totalduration = 0;\n this.type = null;\n this.url = void 0;\n this.m3u8 = '';\n this.version = null;\n this.canBlockReload = false;\n this.canSkipUntil = 0;\n this.canSkipDateRanges = false;\n this.skippedSegments = 0;\n this.recentlyRemovedDateranges = void 0;\n this.partHoldBack = 0;\n this.holdBack = 0;\n this.partTarget = 0;\n this.preloadHint = void 0;\n this.renditionReports = void 0;\n this.tuneInGoal = 0;\n this.deltaUpdateFailed = void 0;\n this.driftStartTime = 0;\n this.driftEndTime = 0;\n this.driftStart = 0;\n this.driftEnd = 0;\n this.fragments = [];\n this.dateRanges = {};\n this.url = baseUrl;\n }\n\n var _proto = LevelDetails.prototype;\n\n _proto.reloaded = function reloaded(previous) {\n if (!previous) {\n this.advanced = true;\n this.updated = true;\n return;\n }\n\n var partSnDiff = this.lastPartSn - previous.lastPartSn;\n var partIndexDiff = this.lastPartIndex - previous.lastPartIndex;\n this.updated = this.endSN !== previous.endSN || !!partIndexDiff || !!partSnDiff;\n this.advanced = this.endSN > previous.endSN || partSnDiff > 0 || partSnDiff === 0 && partIndexDiff > 0;\n\n if (this.updated || this.advanced) {\n this.misses = Math.floor(previous.misses * 0.6);\n } else {\n this.misses = previous.misses + 1;\n }\n\n this.availabilityDelay = previous.availabilityDelay;\n };\n\n _createClass(LevelDetails, [{\n key: \"hasProgramDateTime\",\n get: function get() {\n if (this.fragments.length) {\n return Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this.fragments[this.fragments.length - 1].programDateTime);\n }\n\n return false;\n }\n }, {\n key: \"levelTargetDuration\",\n get: function get() {\n return this.averagetargetduration || this.targetduration || DEFAULT_TARGET_DURATION;\n }\n }, {\n key: \"drift\",\n get: function get() {\n var runTime = this.driftEndTime - this.driftStartTime;\n\n if (runTime > 0) {\n var runDuration = this.driftEnd - this.driftStart;\n return runDuration * 1000 / runTime;\n }\n\n return 1;\n }\n }, {\n key: \"edge\",\n get: function get() {\n return this.partEnd || this.fragmentEnd;\n }\n }, {\n key: \"partEnd\",\n get: function get() {\n var _this$partList;\n\n if ((_this$partList = this.partList) !== null && _this$partList !== void 0 && _this$partList.length) {\n return this.partList[this.partList.length - 1].end;\n }\n\n return this.fragmentEnd;\n }\n }, {\n key: \"fragmentEnd\",\n get: function get() {\n var _this$fragments;\n\n if ((_this$fragments = this.fragments) !== null && _this$fragments !== void 0 && _this$fragments.length) {\n return this.fragments[this.fragments.length - 1].end;\n }\n\n return 0;\n }\n }, {\n key: \"age\",\n get: function get() {\n if (this.advancedDateTime) {\n return Math.max(Date.now() - this.advancedDateTime, 0) / 1000;\n }\n\n return 0;\n }\n }, {\n key: \"lastPartIndex\",\n get: function get() {\n var _this$partList2;\n\n if ((_this$partList2 = this.partList) !== null && _this$partList2 !== void 0 && _this$partList2.length) {\n return this.partList[this.partList.length - 1].index;\n }\n\n return -1;\n }\n }, {\n key: \"lastPartSn\",\n get: function get() {\n var _this$partList3;\n\n if ((_this$partList3 = this.partList) !== null && _this$partList3 !== void 0 && _this$partList3.length) {\n return this.partList[this.partList.length - 1].fragment.sn;\n }\n\n return this.endSN;\n }\n }]);\n\n return LevelDetails;\n}();\n\n/***/ }),\n\n/***/ \"./src/loader/level-key.ts\":\n/*!*********************************!*\\\n !*** ./src/loader/level-key.ts ***!\n \\*********************************/\n/*! exports provided: LevelKey */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LevelKey\", function() { return LevelKey; });\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! url-toolkit */ \"./node_modules/url-toolkit/src/url-toolkit.js\");\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_0__);\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\nvar LevelKey = /*#__PURE__*/function () {\n LevelKey.fromURL = function fromURL(baseUrl, relativeUrl) {\n return new LevelKey(baseUrl, relativeUrl);\n };\n\n LevelKey.fromURI = function fromURI(uri) {\n return new LevelKey(uri);\n };\n\n function LevelKey(absoluteOrBaseURI, relativeURL) {\n this._uri = null;\n this.method = null;\n this.keyFormat = null;\n this.keyFormatVersions = null;\n this.keyID = null;\n this.key = null;\n this.iv = null;\n\n if (relativeURL) {\n this._uri = Object(url_toolkit__WEBPACK_IMPORTED_MODULE_0__[\"buildAbsoluteURL\"])(absoluteOrBaseURI, relativeURL, {\n alwaysNormalize: true\n });\n } else {\n this._uri = absoluteOrBaseURI;\n }\n }\n\n _createClass(LevelKey, [{\n key: \"uri\",\n get: function get() {\n return this._uri;\n }\n }]);\n\n return LevelKey;\n}();\n\n/***/ }),\n\n/***/ \"./src/loader/load-stats.ts\":\n/*!**********************************!*\\\n !*** ./src/loader/load-stats.ts ***!\n \\**********************************/\n/*! exports provided: LoadStats */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoadStats\", function() { return LoadStats; });\nvar LoadStats = function LoadStats() {\n this.aborted = false;\n this.loaded = 0;\n this.retry = 0;\n this.total = 0;\n this.chunkCount = 0;\n this.bwEstimate = 0;\n this.loading = {\n start: 0,\n first: 0,\n end: 0\n };\n this.parsing = {\n start: 0,\n end: 0\n };\n this.buffering = {\n start: 0,\n first: 0,\n end: 0\n };\n};\n\n/***/ }),\n\n/***/ \"./src/loader/m3u8-parser.ts\":\n/*!***********************************!*\\\n !*** ./src/loader/m3u8-parser.ts ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return M3U8Parser; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! url-toolkit */ \"./node_modules/url-toolkit/src/url-toolkit.js\");\n/* harmony import */ var url_toolkit__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(url_toolkit__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _date_range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./date-range */ \"./src/loader/date-range.ts\");\n/* harmony import */ var _fragment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fragment */ \"./src/loader/fragment.ts\");\n/* harmony import */ var _level_details__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./level-details */ \"./src/loader/level-details.ts\");\n/* harmony import */ var _level_key__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./level-key */ \"./src/loader/level-key.ts\");\n/* harmony import */ var _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/attr-list */ \"./src/utils/attr-list.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _utils_codecs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/codecs */ \"./src/utils/codecs.ts\");\n\n\n\n\n\n\n\n\n\n\n\n\n// https://regex101.com is your friend\nvar MASTER_PLAYLIST_REGEX = /#EXT-X-STREAM-INF:([^\\r\\n]*)(?:[\\r\\n](?:#[^\\r\\n]*)?)*([^\\r\\n]+)|#EXT-X-SESSION-DATA:([^\\r\\n]*)[\\r\\n]+/g;\nvar MASTER_PLAYLIST_MEDIA_REGEX = /#EXT-X-MEDIA:(.*)/g;\nvar LEVEL_PLAYLIST_REGEX_FAST = new RegExp([/#EXTINF:\\s*(\\d*(?:\\.\\d+)?)(?:,(.*)\\s+)?/.source, // duration (#EXTINF:<duration>,<title>), group 1 => duration, group 2 => title\n/(?!#) *(\\S[\\S ]*)/.source, // segment URI, group 3 => the URI (note newline is not eaten)\n/#EXT-X-BYTERANGE:*(.+)/.source, // next segment's byterange, group 4 => range spec (x@y)\n/#EXT-X-PROGRAM-DATE-TIME:(.+)/.source, // next segment's program date/time group 5 => the datetime spec\n/#.*/.source // All other non-segment oriented tags will match with all groups empty\n].join('|'), 'g');\nvar LEVEL_PLAYLIST_REGEX_SLOW = new RegExp([/#(EXTM3U)/.source, /#EXT-X-(DATERANGE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source, /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\\d+)/.source, /#EXT-X-(DISCONTINUITY|ENDLIST|GAP)/.source, /(#)([^:]*):(.*)/.source, /(#)(.*)(?:.*)\\r?\\n?/.source].join('|'));\nvar MP4_REGEX_SUFFIX = /\\.(mp4|m4s|m4v|m4a)$/i;\n\nfunction isMP4Url(url) {\n var _URLToolkit$parseURL$, _URLToolkit$parseURL;\n\n return MP4_REGEX_SUFFIX.test((_URLToolkit$parseURL$ = (_URLToolkit$parseURL = url_toolkit__WEBPACK_IMPORTED_MODULE_1__[\"parseURL\"](url)) === null || _URLToolkit$parseURL === void 0 ? void 0 : _URLToolkit$parseURL.path) != null ? _URLToolkit$parseURL$ : '');\n}\n\nvar M3U8Parser = /*#__PURE__*/function () {\n function M3U8Parser() {}\n\n M3U8Parser.findGroup = function findGroup(groups, mediaGroupId) {\n for (var i = 0; i < groups.length; i++) {\n var group = groups[i];\n\n if (group.id === mediaGroupId) {\n return group;\n }\n }\n };\n\n M3U8Parser.convertAVC1ToAVCOTI = function convertAVC1ToAVCOTI(codec) {\n // Convert avc1 codec string from RFC-4281 to RFC-6381 for MediaSource.isTypeSupported\n var avcdata = codec.split('.');\n\n if (avcdata.length > 2) {\n var result = avcdata.shift() + '.';\n result += parseInt(avcdata.shift()).toString(16);\n result += ('000' + parseInt(avcdata.shift()).toString(16)).slice(-4);\n return result;\n }\n\n return codec;\n };\n\n M3U8Parser.resolve = function resolve(url, baseUrl) {\n return url_toolkit__WEBPACK_IMPORTED_MODULE_1__[\"buildAbsoluteURL\"](baseUrl, url, {\n alwaysNormalize: true\n });\n };\n\n M3U8Parser.parseMasterPlaylist = function parseMasterPlaylist(string, baseurl) {\n var levels = [];\n var sessionData = {};\n var hasSessionData = false;\n MASTER_PLAYLIST_REGEX.lastIndex = 0;\n var result;\n\n while ((result = MASTER_PLAYLIST_REGEX.exec(string)) != null) {\n if (result[1]) {\n // '#EXT-X-STREAM-INF' is found, parse level tag in group 1\n var attrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](result[1]);\n var level = {\n attrs: attrs,\n bitrate: attrs.decimalInteger('AVERAGE-BANDWIDTH') || attrs.decimalInteger('BANDWIDTH'),\n name: attrs.NAME,\n url: M3U8Parser.resolve(result[2], baseurl)\n };\n var resolution = attrs.decimalResolution('RESOLUTION');\n\n if (resolution) {\n level.width = resolution.width;\n level.height = resolution.height;\n }\n\n setCodecs((attrs.CODECS || '').split(/[ ,]+/).filter(function (c) {\n return c;\n }), level);\n\n if (level.videoCodec && level.videoCodec.indexOf('avc1') !== -1) {\n level.videoCodec = M3U8Parser.convertAVC1ToAVCOTI(level.videoCodec);\n }\n\n levels.push(level);\n } else if (result[3]) {\n // '#EXT-X-SESSION-DATA' is found, parse session data in group 3\n var sessionAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](result[3]);\n\n if (sessionAttrs['DATA-ID']) {\n hasSessionData = true;\n sessionData[sessionAttrs['DATA-ID']] = sessionAttrs;\n }\n }\n }\n\n return {\n levels: levels,\n sessionData: hasSessionData ? sessionData : null\n };\n };\n\n M3U8Parser.parseMasterPlaylistMedia = function parseMasterPlaylistMedia(string, baseurl, type, groups) {\n if (groups === void 0) {\n groups = [];\n }\n\n var result;\n var medias = [];\n var id = 0;\n MASTER_PLAYLIST_MEDIA_REGEX.lastIndex = 0;\n\n while ((result = MASTER_PLAYLIST_MEDIA_REGEX.exec(string)) !== null) {\n var attrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](result[1]);\n\n if (attrs.TYPE === type) {\n var media = {\n attrs: attrs,\n bitrate: 0,\n id: id++,\n groupId: attrs['GROUP-ID'],\n instreamId: attrs['INSTREAM-ID'],\n name: attrs.NAME || attrs.LANGUAGE || '',\n type: type,\n default: attrs.bool('DEFAULT'),\n autoselect: attrs.bool('AUTOSELECT'),\n forced: attrs.bool('FORCED'),\n lang: attrs.LANGUAGE,\n url: attrs.URI ? M3U8Parser.resolve(attrs.URI, baseurl) : ''\n };\n\n if (groups.length) {\n // If there are audio or text groups signalled in the manifest, let's look for a matching codec string for this track\n // If we don't find the track signalled, lets use the first audio groups codec we have\n // Acting as a best guess\n var groupCodec = M3U8Parser.findGroup(groups, media.groupId) || groups[0];\n assignCodec(media, groupCodec, 'audioCodec');\n assignCodec(media, groupCodec, 'textCodec');\n }\n\n medias.push(media);\n }\n }\n\n return medias;\n };\n\n M3U8Parser.parseLevelPlaylist = function parseLevelPlaylist(string, baseurl, id, type, levelUrlId) {\n var level = new _level_details__WEBPACK_IMPORTED_MODULE_4__[\"LevelDetails\"](baseurl);\n var fragments = level.fragments; // The most recent init segment seen (applies to all subsequent segments)\n\n var currentInitSegment = null;\n var currentSN = 0;\n var currentPart = 0;\n var totalduration = 0;\n var discontinuityCounter = 0;\n var prevFrag = null;\n var frag = new _fragment__WEBPACK_IMPORTED_MODULE_3__[\"Fragment\"](type, baseurl);\n var result;\n var i;\n var levelkey;\n var firstPdtIndex = -1;\n var createNextFrag = false;\n LEVEL_PLAYLIST_REGEX_FAST.lastIndex = 0;\n level.m3u8 = string;\n\n while ((result = LEVEL_PLAYLIST_REGEX_FAST.exec(string)) !== null) {\n if (createNextFrag) {\n createNextFrag = false;\n frag = new _fragment__WEBPACK_IMPORTED_MODULE_3__[\"Fragment\"](type, baseurl); // setup the next fragment for part loading\n\n frag.start = totalduration;\n frag.sn = currentSN;\n frag.cc = discontinuityCounter;\n frag.level = id;\n\n if (currentInitSegment) {\n frag.initSegment = currentInitSegment;\n frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n currentInitSegment.rawProgramDateTime = null;\n }\n }\n\n var duration = result[1];\n\n if (duration) {\n // INF\n frag.duration = parseFloat(duration); // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n\n var title = (' ' + result[2]).slice(1);\n frag.title = title || null;\n frag.tagList.push(title ? ['INF', duration, title] : ['INF', duration]);\n } else if (result[3]) {\n // url\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.duration)) {\n frag.start = totalduration;\n\n if (levelkey) {\n frag.levelkey = levelkey;\n }\n\n frag.sn = currentSN;\n frag.level = id;\n frag.cc = discontinuityCounter;\n frag.urlId = levelUrlId;\n fragments.push(frag); // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n\n frag.relurl = (' ' + result[3]).slice(1);\n assignProgramDateTime(frag, prevFrag);\n prevFrag = frag;\n totalduration += frag.duration;\n currentSN++;\n currentPart = 0;\n createNextFrag = true;\n }\n } else if (result[4]) {\n // X-BYTERANGE\n var data = (' ' + result[4]).slice(1);\n\n if (prevFrag) {\n frag.setByteRange(data, prevFrag);\n } else {\n frag.setByteRange(data);\n }\n } else if (result[5]) {\n // PROGRAM-DATE-TIME\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n frag.rawProgramDateTime = (' ' + result[5]).slice(1);\n frag.tagList.push(['PROGRAM-DATE-TIME', frag.rawProgramDateTime]);\n\n if (firstPdtIndex === -1) {\n firstPdtIndex = fragments.length;\n }\n } else {\n result = result[0].match(LEVEL_PLAYLIST_REGEX_SLOW);\n\n if (!result) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn('No matches on slow regex match for level playlist!');\n continue;\n }\n\n for (i = 1; i < result.length; i++) {\n if (typeof result[i] !== 'undefined') {\n break;\n }\n } // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n\n\n var tag = (' ' + result[i]).slice(1);\n var value1 = (' ' + result[i + 1]).slice(1);\n var value2 = result[i + 2] ? (' ' + result[i + 2]).slice(1) : '';\n\n switch (tag) {\n case 'PLAYLIST-TYPE':\n level.type = value1.toUpperCase();\n break;\n\n case 'MEDIA-SEQUENCE':\n currentSN = level.startSN = parseInt(value1);\n break;\n\n case 'SKIP':\n {\n var skipAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n var skippedSegments = skipAttrs.decimalInteger('SKIPPED-SEGMENTS');\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(skippedSegments)) {\n level.skippedSegments = skippedSegments; // This will result in fragments[] containing undefined values, which we will fill in with `mergeDetails`\n\n for (var _i = skippedSegments; _i--;) {\n fragments.unshift(null);\n }\n\n currentSN += skippedSegments;\n }\n\n var recentlyRemovedDateranges = skipAttrs.enumeratedString('RECENTLY-REMOVED-DATERANGES');\n\n if (recentlyRemovedDateranges) {\n level.recentlyRemovedDateranges = recentlyRemovedDateranges.split('\\t');\n }\n\n break;\n }\n\n case 'TARGETDURATION':\n level.targetduration = parseFloat(value1);\n break;\n\n case 'VERSION':\n level.version = parseInt(value1);\n break;\n\n case 'EXTM3U':\n break;\n\n case 'ENDLIST':\n level.live = false;\n break;\n\n case '#':\n if (value1 || value2) {\n frag.tagList.push(value2 ? [value1, value2] : [value1]);\n }\n\n break;\n\n case 'DISCONTINUITY':\n discontinuityCounter++;\n frag.tagList.push(['DIS']);\n break;\n\n case 'GAP':\n frag.tagList.push([tag]);\n break;\n\n case 'BITRATE':\n frag.tagList.push([tag, value1]);\n break;\n\n case 'DATERANGE':\n {\n var dateRangeAttr = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n var dateRange = new _date_range__WEBPACK_IMPORTED_MODULE_2__[\"DateRange\"](dateRangeAttr, level.dateRanges[dateRangeAttr.ID]);\n\n if (dateRange.isValid || level.skippedSegments) {\n level.dateRanges[dateRange.id] = dateRange;\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn(\"Ignoring invalid DATERANGE tag: \\\"\" + value1 + \"\\\"\");\n } // Add to fragment tag list for backwards compatibility (< v1.2.0)\n\n\n frag.tagList.push(['EXT-X-DATERANGE', value1]);\n break;\n }\n\n case 'DISCONTINUITY-SEQUENCE':\n discontinuityCounter = parseInt(value1);\n break;\n\n case 'KEY':\n {\n var _keyAttrs$enumeratedS;\n\n // https://tools.ietf.org/html/rfc8216#section-4.3.2.4\n var keyAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n var decryptmethod = keyAttrs.enumeratedString('METHOD');\n var decrypturi = keyAttrs.URI;\n var decryptiv = keyAttrs.hexadecimalInteger('IV');\n var decryptkeyformatversions = keyAttrs.enumeratedString('KEYFORMATVERSIONS');\n var decryptkeyid = keyAttrs.enumeratedString('KEYID'); // From RFC: This attribute is OPTIONAL; its absence indicates an implicit value of \"identity\".\n\n var decryptkeyformat = (_keyAttrs$enumeratedS = keyAttrs.enumeratedString('KEYFORMAT')) != null ? _keyAttrs$enumeratedS : 'identity';\n var unsupportedKnownKeyformatsInManifest = ['com.apple.streamingkeydelivery', 'com.microsoft.playready', 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed', // widevine (v2)\n 'com.widevine' // earlier widevine (v1)\n ];\n\n if (unsupportedKnownKeyformatsInManifest.indexOf(decryptkeyformat) > -1) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn(\"Keyformat \" + decryptkeyformat + \" is not supported from the manifest\");\n continue;\n } else if (decryptkeyformat !== 'identity') {\n // We are supposed to skip keys we don't understand.\n // As we currently only officially support identity keys\n // from the manifest we shouldn't save any other key.\n continue;\n } // TODO: multiple keys can be defined on a fragment, and we need to support this\n // for clients that support both playready and widevine\n\n\n if (decryptmethod) {\n // TODO: need to determine if the level key is actually a relative URL\n // if it isn't, then we should instead construct the LevelKey using fromURI.\n levelkey = _level_key__WEBPACK_IMPORTED_MODULE_5__[\"LevelKey\"].fromURL(baseurl, decrypturi);\n\n if (decrypturi && ['AES-128', 'SAMPLE-AES', 'SAMPLE-AES-CENC'].indexOf(decryptmethod) >= 0) {\n levelkey.method = decryptmethod;\n levelkey.keyFormat = decryptkeyformat;\n\n if (decryptkeyid) {\n levelkey.keyID = decryptkeyid;\n }\n\n if (decryptkeyformatversions) {\n levelkey.keyFormatVersions = decryptkeyformatversions;\n } // Initialization Vector (IV)\n\n\n levelkey.iv = decryptiv;\n }\n }\n\n break;\n }\n\n case 'START':\n {\n var startAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n var startTimeOffset = startAttrs.decimalFloatingPoint('TIME-OFFSET'); // TIME-OFFSET can be 0\n\n if (Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(startTimeOffset)) {\n level.startTimeOffset = startTimeOffset;\n }\n\n break;\n }\n\n case 'MAP':\n {\n var mapAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n\n if (frag.duration) {\n // Initial segment tag is after segment duration tag.\n // #EXTINF: 6.0\n // #EXT-X-MAP:URI=\"init.mp4\n var init = new _fragment__WEBPACK_IMPORTED_MODULE_3__[\"Fragment\"](type, baseurl);\n setInitSegment(init, mapAttrs, id, levelkey);\n currentInitSegment = init;\n frag.initSegment = currentInitSegment;\n\n if (currentInitSegment.rawProgramDateTime && !frag.rawProgramDateTime) {\n frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n }\n } else {\n // Initial segment tag is before segment duration tag\n setInitSegment(frag, mapAttrs, id, levelkey);\n currentInitSegment = frag;\n createNextFrag = true;\n }\n\n break;\n }\n\n case 'SERVER-CONTROL':\n {\n var serverControlAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n level.canBlockReload = serverControlAttrs.bool('CAN-BLOCK-RELOAD');\n level.canSkipUntil = serverControlAttrs.optionalFloat('CAN-SKIP-UNTIL', 0);\n level.canSkipDateRanges = level.canSkipUntil > 0 && serverControlAttrs.bool('CAN-SKIP-DATERANGES');\n level.partHoldBack = serverControlAttrs.optionalFloat('PART-HOLD-BACK', 0);\n level.holdBack = serverControlAttrs.optionalFloat('HOLD-BACK', 0);\n break;\n }\n\n case 'PART-INF':\n {\n var partInfAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n level.partTarget = partInfAttrs.decimalFloatingPoint('PART-TARGET');\n break;\n }\n\n case 'PART':\n {\n var partList = level.partList;\n\n if (!partList) {\n partList = level.partList = [];\n }\n\n var previousFragmentPart = currentPart > 0 ? partList[partList.length - 1] : undefined;\n var index = currentPart++;\n var part = new _fragment__WEBPACK_IMPORTED_MODULE_3__[\"Part\"](new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1), frag, baseurl, index, previousFragmentPart);\n partList.push(part);\n frag.duration += part.duration;\n break;\n }\n\n case 'PRELOAD-HINT':\n {\n var preloadHintAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n level.preloadHint = preloadHintAttrs;\n break;\n }\n\n case 'RENDITION-REPORT':\n {\n var renditionReportAttrs = new _utils_attr_list__WEBPACK_IMPORTED_MODULE_6__[\"AttrList\"](value1);\n level.renditionReports = level.renditionReports || [];\n level.renditionReports.push(renditionReportAttrs);\n break;\n }\n\n default:\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn(\"line parsed but not handled: \" + result);\n break;\n }\n }\n }\n\n if (prevFrag && !prevFrag.relurl) {\n fragments.pop();\n totalduration -= prevFrag.duration;\n\n if (level.partList) {\n level.fragmentHint = prevFrag;\n }\n } else if (level.partList) {\n assignProgramDateTime(frag, prevFrag);\n frag.cc = discontinuityCounter;\n level.fragmentHint = frag;\n }\n\n var fragmentLength = fragments.length;\n var firstFragment = fragments[0];\n var lastFragment = fragments[fragmentLength - 1];\n totalduration += level.skippedSegments * level.targetduration;\n\n if (totalduration > 0 && fragmentLength && lastFragment) {\n level.averagetargetduration = totalduration / fragmentLength;\n var lastSn = lastFragment.sn;\n level.endSN = lastSn !== 'initSegment' ? lastSn : 0;\n\n if (firstFragment) {\n level.startCC = firstFragment.cc;\n\n if (!firstFragment.initSegment) {\n // this is a bit lurky but HLS really has no other way to tell us\n // if the fragments are TS or MP4, except if we download them :/\n // but this is to be able to handle SIDX.\n if (level.fragments.every(function (frag) {\n return frag.relurl && isMP4Url(frag.relurl);\n })) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_7__[\"logger\"].warn('MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX');\n frag = new _fragment__WEBPACK_IMPORTED_MODULE_3__[\"Fragment\"](type, baseurl);\n frag.relurl = lastFragment.relurl;\n frag.level = id;\n frag.sn = 'initSegment';\n firstFragment.initSegment = frag;\n level.needSidxRanges = true;\n }\n }\n }\n } else {\n level.endSN = 0;\n level.startCC = 0;\n }\n\n if (level.fragmentHint) {\n totalduration += level.fragmentHint.duration;\n }\n\n level.totalduration = totalduration;\n level.endCC = discontinuityCounter;\n /**\n * Backfill any missing PDT values\n * \"If the first EXT-X-PROGRAM-DATE-TIME tag in a Playlist appears after\n * one or more Media Segment URIs, the client SHOULD extrapolate\n * backward from that tag (using EXTINF durations and/or media\n * timestamps) to associate dates with those segments.\"\n * We have already extrapolated forward, but all fragments up to the first instance of PDT do not have their PDTs\n * computed.\n */\n\n if (firstPdtIndex > 0) {\n backfillProgramDateTimes(fragments, firstPdtIndex);\n }\n\n return level;\n };\n\n return M3U8Parser;\n}();\n\n\n\nfunction setCodecs(codecs, level) {\n ['video', 'audio', 'text'].forEach(function (type) {\n var filtered = codecs.filter(function (codec) {\n return Object(_utils_codecs__WEBPACK_IMPORTED_MODULE_8__[\"isCodecType\"])(codec, type);\n });\n\n if (filtered.length) {\n var preferred = filtered.filter(function (codec) {\n return codec.lastIndexOf('avc1', 0) === 0 || codec.lastIndexOf('mp4a', 0) === 0;\n });\n level[type + \"Codec\"] = preferred.length > 0 ? preferred[0] : filtered[0]; // remove from list\n\n codecs = codecs.filter(function (codec) {\n return filtered.indexOf(codec) === -1;\n });\n }\n });\n level.unknownCodecs = codecs;\n}\n\nfunction assignCodec(media, groupItem, codecProperty) {\n var codecValue = groupItem[codecProperty];\n\n if (codecValue) {\n media[codecProperty] = codecValue;\n }\n}\n\nfunction backfillProgramDateTimes(fragments, firstPdtIndex) {\n var fragPrev = fragments[firstPdtIndex];\n\n for (var i = firstPdtIndex; i--;) {\n var frag = fragments[i]; // Exit on delta-playlist skipped segments\n\n if (!frag) {\n return;\n }\n\n frag.programDateTime = fragPrev.programDateTime - frag.duration * 1000;\n fragPrev = frag;\n }\n}\n\nfunction assignProgramDateTime(frag, prevFrag) {\n if (frag.rawProgramDateTime) {\n frag.programDateTime = Date.parse(frag.rawProgramDateTime);\n } else if (prevFrag !== null && prevFrag !== void 0 && prevFrag.programDateTime) {\n frag.programDateTime = prevFrag.endProgramDateTime;\n }\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(frag.programDateTime)) {\n frag.programDateTime = null;\n frag.rawProgramDateTime = null;\n }\n}\n\nfunction setInitSegment(frag, mapAttrs, id, levelkey) {\n frag.relurl = mapAttrs.URI;\n\n if (mapAttrs.BYTERANGE) {\n frag.setByteRange(mapAttrs.BYTERANGE);\n }\n\n frag.level = id;\n frag.sn = 'initSegment';\n\n if (levelkey) {\n frag.levelkey = levelkey;\n }\n\n frag.initSegment = null;\n}\n\n/***/ }),\n\n/***/ \"./src/loader/playlist-loader.ts\":\n/*!***************************************!*\\\n !*** ./src/loader/playlist-loader.ts ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./m3u8-parser */ \"./src/loader/m3u8-parser.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _utils_attr_list__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/attr-list */ \"./src/utils/attr-list.ts\");\n\n\n\n/**\n * PlaylistLoader - delegate for media manifest/playlist loading tasks. Takes care of parsing media to internal data-models.\n *\n * Once loaded, dispatches events with parsed data-models of manifest/levels/audio/subtitle tracks.\n *\n * Uses loader(s) set in config to do actual internal loading of resource tasks.\n *\n * @module\n *\n */\n\n\n\n\n\n\n\n\nfunction mapContextToLevelType(context) {\n var type = context.type;\n\n switch (type) {\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK:\n return _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK:\n return _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].SUBTITLE;\n\n default:\n return _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].MAIN;\n }\n}\n\nfunction getResponseUrl(response, context) {\n var url = response.url; // responseURL not supported on some browsers (it is used to detect URL redirection)\n // data-uri mode also not supported (but no need to detect redirection)\n\n if (url === undefined || url.indexOf('data:') === 0) {\n // fallback to initial URL\n url = context.url;\n }\n\n return url;\n}\n\nvar PlaylistLoader = /*#__PURE__*/function () {\n function PlaylistLoader(hls) {\n this.hls = void 0;\n this.loaders = Object.create(null);\n this.hls = hls;\n this.registerListeners();\n }\n\n var _proto = PlaylistLoader.prototype;\n\n _proto.startLoad = function startLoad(startPosition) {};\n\n _proto.stopLoad = function stopLoad() {\n this.destroyInternalLoaders();\n };\n\n _proto.registerListeners = function registerListeners() {\n var hls = this.hls;\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n hls.on(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n };\n\n _proto.unregisterListeners = function unregisterListeners() {\n var hls = this.hls;\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n hls.off(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n }\n /**\n * Returns defaults or configured loader-type overloads (pLoader and loader config params)\n */\n ;\n\n _proto.createInternalLoader = function createInternalLoader(context) {\n var config = this.hls.config;\n var PLoader = config.pLoader;\n var Loader = config.loader;\n var InternalLoader = PLoader || Loader;\n var loader = new InternalLoader(config);\n context.loader = loader;\n this.loaders[context.type] = loader;\n return loader;\n };\n\n _proto.getInternalLoader = function getInternalLoader(context) {\n return this.loaders[context.type];\n };\n\n _proto.resetInternalLoader = function resetInternalLoader(contextType) {\n if (this.loaders[contextType]) {\n delete this.loaders[contextType];\n }\n }\n /**\n * Call `destroy` on all internal loader instances mapped (one per context type)\n */\n ;\n\n _proto.destroyInternalLoaders = function destroyInternalLoaders() {\n for (var contextType in this.loaders) {\n var loader = this.loaders[contextType];\n\n if (loader) {\n loader.destroy();\n }\n\n this.resetInternalLoader(contextType);\n }\n };\n\n _proto.destroy = function destroy() {\n this.unregisterListeners();\n this.destroyInternalLoaders();\n };\n\n _proto.onManifestLoading = function onManifestLoading(event, data) {\n var url = data.url;\n this.load({\n id: null,\n groupId: null,\n level: 0,\n responseType: 'text',\n type: _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST,\n url: url,\n deliveryDirectives: null\n });\n };\n\n _proto.onLevelLoading = function onLevelLoading(event, data) {\n var id = data.id,\n level = data.level,\n url = data.url,\n deliveryDirectives = data.deliveryDirectives;\n this.load({\n id: id,\n groupId: null,\n level: level,\n responseType: 'text',\n type: _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL,\n url: url,\n deliveryDirectives: deliveryDirectives\n });\n };\n\n _proto.onAudioTrackLoading = function onAudioTrackLoading(event, data) {\n var id = data.id,\n groupId = data.groupId,\n url = data.url,\n deliveryDirectives = data.deliveryDirectives;\n this.load({\n id: id,\n groupId: groupId,\n level: null,\n responseType: 'text',\n type: _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK,\n url: url,\n deliveryDirectives: deliveryDirectives\n });\n };\n\n _proto.onSubtitleTrackLoading = function onSubtitleTrackLoading(event, data) {\n var id = data.id,\n groupId = data.groupId,\n url = data.url,\n deliveryDirectives = data.deliveryDirectives;\n this.load({\n id: id,\n groupId: groupId,\n level: null,\n responseType: 'text',\n type: _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK,\n url: url,\n deliveryDirectives: deliveryDirectives\n });\n };\n\n _proto.load = function load(context) {\n var _context$deliveryDire;\n\n var config = this.hls.config; // logger.debug(`[playlist-loader]: Loading playlist of type ${context.type}, level: ${context.level}, id: ${context.id}`);\n // Check if a loader for this context already exists\n\n var loader = this.getInternalLoader(context);\n\n if (loader) {\n var loaderContext = loader.context;\n\n if (loaderContext && loaderContext.url === context.url) {\n // same URL can't overlap\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].trace('[playlist-loader]: playlist request ongoing');\n return;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log(\"[playlist-loader]: aborting previous loader for type: \" + context.type);\n loader.abort();\n }\n\n var maxRetry;\n var timeout;\n var retryDelay;\n var maxRetryDelay; // apply different configs for retries depending on\n // context (manifest, level, audio/subs playlist)\n\n switch (context.type) {\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST:\n maxRetry = config.manifestLoadingMaxRetry;\n timeout = config.manifestLoadingTimeOut;\n retryDelay = config.manifestLoadingRetryDelay;\n maxRetryDelay = config.manifestLoadingMaxRetryTimeout;\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL:\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK:\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK:\n // Manage retries in Level/Track Controller\n maxRetry = 0;\n timeout = config.levelLoadingTimeOut;\n break;\n\n default:\n maxRetry = config.levelLoadingMaxRetry;\n timeout = config.levelLoadingTimeOut;\n retryDelay = config.levelLoadingRetryDelay;\n maxRetryDelay = config.levelLoadingMaxRetryTimeout;\n break;\n }\n\n loader = this.createInternalLoader(context); // Override level/track timeout for LL-HLS requests\n // (the default of 10000ms is counter productive to blocking playlist reload requests)\n\n if ((_context$deliveryDire = context.deliveryDirectives) !== null && _context$deliveryDire !== void 0 && _context$deliveryDire.part) {\n var levelDetails;\n\n if (context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL && context.level !== null) {\n levelDetails = this.hls.levels[context.level].details;\n } else if (context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK && context.id !== null) {\n levelDetails = this.hls.audioTracks[context.id].details;\n } else if (context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK && context.id !== null) {\n levelDetails = this.hls.subtitleTracks[context.id].details;\n }\n\n if (levelDetails) {\n var partTarget = levelDetails.partTarget;\n var targetDuration = levelDetails.targetduration;\n\n if (partTarget && targetDuration) {\n timeout = Math.min(Math.max(partTarget * 3, targetDuration * 0.8) * 1000, timeout);\n }\n }\n }\n\n var loaderConfig = {\n timeout: timeout,\n maxRetry: maxRetry,\n retryDelay: retryDelay,\n maxRetryDelay: maxRetryDelay,\n highWaterMark: 0\n };\n var loaderCallbacks = {\n onSuccess: this.loadsuccess.bind(this),\n onError: this.loaderror.bind(this),\n onTimeout: this.loadtimeout.bind(this)\n }; // logger.debug(`[playlist-loader]: Calling internal loader delegate for URL: ${context.url}`);\n\n loader.load(context, loaderConfig, loaderCallbacks);\n };\n\n _proto.loadsuccess = function loadsuccess(response, stats, context, networkDetails) {\n if (networkDetails === void 0) {\n networkDetails = null;\n }\n\n if (context.isSidxRequest) {\n this.handleSidxRequest(response, context);\n this.handlePlaylistLoaded(response, stats, context, networkDetails);\n return;\n }\n\n this.resetInternalLoader(context.type);\n var string = response.data; // Validate if it is an M3U8 at all\n\n if (string.indexOf('#EXTM3U') !== 0) {\n this.handleManifestParsingError(response, context, 'no EXTM3U delimiter', networkDetails);\n return;\n }\n\n stats.parsing.start = performance.now(); // Check if chunk-list or master. handle empty chunk list case (first EXTINF not signaled, but TARGETDURATION present)\n\n if (string.indexOf('#EXTINF:') > 0 || string.indexOf('#EXT-X-TARGETDURATION:') > 0) {\n this.handleTrackOrLevelPlaylist(response, stats, context, networkDetails);\n } else {\n this.handleMasterPlaylist(response, stats, context, networkDetails);\n }\n };\n\n _proto.loaderror = function loaderror(response, context, networkDetails) {\n if (networkDetails === void 0) {\n networkDetails = null;\n }\n\n this.handleNetworkError(context, networkDetails, false, response);\n };\n\n _proto.loadtimeout = function loadtimeout(stats, context, networkDetails) {\n if (networkDetails === void 0) {\n networkDetails = null;\n }\n\n this.handleNetworkError(context, networkDetails, true);\n };\n\n _proto.handleMasterPlaylist = function handleMasterPlaylist(response, stats, context, networkDetails) {\n var hls = this.hls;\n var string = response.data;\n var url = getResponseUrl(response, context);\n\n var _M3U8Parser$parseMast = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseMasterPlaylist(string, url),\n levels = _M3U8Parser$parseMast.levels,\n sessionData = _M3U8Parser$parseMast.sessionData;\n\n if (!levels.length) {\n this.handleManifestParsingError(response, context, 'no level found in manifest', networkDetails);\n return;\n } // multi level playlist, parse level info\n\n\n var audioGroups = levels.map(function (level) {\n return {\n id: level.attrs.AUDIO,\n audioCodec: level.audioCodec\n };\n });\n var subtitleGroups = levels.map(function (level) {\n return {\n id: level.attrs.SUBTITLES,\n textCodec: level.textCodec\n };\n });\n var audioTracks = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseMasterPlaylistMedia(string, url, 'AUDIO', audioGroups);\n var subtitles = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseMasterPlaylistMedia(string, url, 'SUBTITLES', subtitleGroups);\n var captions = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseMasterPlaylistMedia(string, url, 'CLOSED-CAPTIONS');\n\n if (audioTracks.length) {\n // check if we have found an audio track embedded in main playlist (audio track without URI attribute)\n var embeddedAudioFound = audioTracks.some(function (audioTrack) {\n return !audioTrack.url;\n }); // if no embedded audio track defined, but audio codec signaled in quality level,\n // we need to signal this main audio track this could happen with playlists with\n // alt audio rendition in which quality levels (main)\n // contains both audio+video. but with mixed audio track not signaled\n\n if (!embeddedAudioFound && levels[0].audioCodec && !levels[0].attrs.AUDIO) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].log('[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one');\n audioTracks.unshift({\n type: 'main',\n name: 'main',\n default: false,\n autoselect: false,\n forced: false,\n id: -1,\n attrs: new _utils_attr_list__WEBPACK_IMPORTED_MODULE_7__[\"AttrList\"]({}),\n bitrate: 0,\n url: ''\n });\n }\n }\n\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, {\n levels: levels,\n audioTracks: audioTracks,\n subtitles: subtitles,\n captions: captions,\n url: url,\n stats: stats,\n networkDetails: networkDetails,\n sessionData: sessionData\n });\n };\n\n _proto.handleTrackOrLevelPlaylist = function handleTrackOrLevelPlaylist(response, stats, context, networkDetails) {\n var hls = this.hls;\n var id = context.id,\n level = context.level,\n type = context.type;\n var url = getResponseUrl(response, context);\n var levelUrlId = Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(id) ? id : 0;\n var levelId = Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(level) ? level : levelUrlId;\n var levelType = mapContextToLevelType(context);\n var levelDetails = _m3u8_parser__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseLevelPlaylist(response.data, url, levelId, levelType, levelUrlId);\n\n if (!levelDetails.fragments.length) {\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_EMPTY_ERROR,\n fatal: false,\n url: url,\n reason: 'no fragments found in level',\n level: typeof context.level === 'number' ? context.level : undefined\n });\n return;\n } // We have done our first request (Manifest-type) and receive\n // not a master playlist but a chunk-list (track/level)\n // We fire the manifest-loaded event anyway with the parsed level-details\n // by creating a single-level structure for it.\n\n\n if (type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST) {\n var singleLevel = {\n attrs: new _utils_attr_list__WEBPACK_IMPORTED_MODULE_7__[\"AttrList\"]({}),\n bitrate: 0,\n details: levelDetails,\n name: '',\n url: url\n };\n hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].MANIFEST_LOADED, {\n levels: [singleLevel],\n audioTracks: [],\n url: url,\n stats: stats,\n networkDetails: networkDetails,\n sessionData: null\n });\n } // save parsing time\n\n\n stats.parsing.end = performance.now(); // in case we need SIDX ranges\n // return early after calling load for\n // the SIDX box.\n\n if (levelDetails.needSidxRanges) {\n var _levelDetails$fragmen;\n\n var sidxUrl = (_levelDetails$fragmen = levelDetails.fragments[0].initSegment) === null || _levelDetails$fragmen === void 0 ? void 0 : _levelDetails$fragmen.url;\n this.load({\n url: sidxUrl,\n isSidxRequest: true,\n type: type,\n level: level,\n levelDetails: levelDetails,\n id: id,\n groupId: null,\n rangeStart: 0,\n rangeEnd: 2048,\n responseType: 'arraybuffer',\n deliveryDirectives: null\n });\n return;\n } // extend the context with the new levelDetails property\n\n\n context.levelDetails = levelDetails;\n this.handlePlaylistLoaded(response, stats, context, networkDetails);\n };\n\n _proto.handleSidxRequest = function handleSidxRequest(response, context) {\n var data = new Uint8Array(response.data);\n var sidxBox = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"findBox\"])(data, ['sidx'])[0]; // if provided fragment does not contain sidx, early return\n\n if (!sidxBox) {\n return;\n }\n\n var sidxInfo = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"parseSegmentIndex\"])(sidxBox);\n\n if (!sidxInfo) {\n return;\n }\n\n var sidxReferences = sidxInfo.references;\n var levelDetails = context.levelDetails;\n sidxReferences.forEach(function (segmentRef, index) {\n var segRefInfo = segmentRef.info;\n var frag = levelDetails.fragments[index];\n\n if (frag.byteRange.length === 0) {\n frag.setByteRange(String(1 + segRefInfo.end - segRefInfo.start) + '@' + String(segRefInfo.start));\n }\n\n if (frag.initSegment) {\n var moovBox = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__[\"findBox\"])(data, ['moov'])[0];\n var moovEndOffset = moovBox ? moovBox.length : null;\n frag.initSegment.setByteRange(String(moovEndOffset) + '@0');\n }\n });\n };\n\n _proto.handleManifestParsingError = function handleManifestParsingError(response, context, reason, networkDetails) {\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].NETWORK_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].MANIFEST_PARSING_ERROR,\n fatal: context.type === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST,\n url: response.url,\n reason: reason,\n response: response,\n context: context,\n networkDetails: networkDetails\n });\n };\n\n _proto.handleNetworkError = function handleNetworkError(context, networkDetails, timeout, response) {\n if (timeout === void 0) {\n timeout = false;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_3__[\"logger\"].warn(\"[playlist-loader]: A network \" + (timeout ? 'timeout' : 'error') + \" occurred while loading \" + context.type + \" level: \" + context.level + \" id: \" + context.id + \" group-id: \\\"\" + context.groupId + \"\\\"\");\n var details = _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].UNKNOWN;\n var fatal = false;\n var loader = this.getInternalLoader(context);\n\n switch (context.type) {\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST:\n details = timeout ? _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].MANIFEST_LOAD_TIMEOUT : _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].MANIFEST_LOAD_ERROR;\n fatal = true;\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL:\n details = timeout ? _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_LOAD_TIMEOUT : _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].LEVEL_LOAD_ERROR;\n fatal = false;\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK:\n details = timeout ? _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_TIMEOUT : _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].AUDIO_TRACK_LOAD_ERROR;\n fatal = false;\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK:\n details = timeout ? _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].SUBTITLE_TRACK_LOAD_TIMEOUT : _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorDetails\"].SUBTITLE_LOAD_ERROR;\n fatal = false;\n break;\n }\n\n if (loader) {\n this.resetInternalLoader(context.type);\n }\n\n var errorData = {\n type: _errors__WEBPACK_IMPORTED_MODULE_2__[\"ErrorTypes\"].NETWORK_ERROR,\n details: details,\n fatal: fatal,\n url: context.url,\n loader: loader,\n context: context,\n networkDetails: networkDetails\n };\n\n if (response) {\n errorData.response = response;\n }\n\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].ERROR, errorData);\n };\n\n _proto.handlePlaylistLoaded = function handlePlaylistLoaded(response, stats, context, networkDetails) {\n var type = context.type,\n level = context.level,\n id = context.id,\n groupId = context.groupId,\n loader = context.loader,\n levelDetails = context.levelDetails,\n deliveryDirectives = context.deliveryDirectives;\n\n if (!(levelDetails !== null && levelDetails !== void 0 && levelDetails.targetduration)) {\n this.handleManifestParsingError(response, context, 'invalid target duration', networkDetails);\n return;\n }\n\n if (!loader) {\n return;\n }\n\n if (levelDetails.live) {\n if (loader.getCacheAge) {\n levelDetails.ageHeader = loader.getCacheAge() || 0;\n }\n\n if (!loader.getCacheAge || isNaN(levelDetails.ageHeader)) {\n levelDetails.ageHeader = 0;\n }\n }\n\n switch (type) {\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].MANIFEST:\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].LEVEL:\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].LEVEL_LOADED, {\n details: levelDetails,\n level: level || 0,\n id: id || 0,\n stats: stats,\n networkDetails: networkDetails,\n deliveryDirectives: deliveryDirectives\n });\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].AUDIO_TRACK:\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].AUDIO_TRACK_LOADED, {\n details: levelDetails,\n id: id || 0,\n groupId: groupId || '',\n stats: stats,\n networkDetails: networkDetails,\n deliveryDirectives: deliveryDirectives\n });\n break;\n\n case _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistContextType\"].SUBTITLE_TRACK:\n this.hls.trigger(_events__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].SUBTITLE_TRACK_LOADED, {\n details: levelDetails,\n id: id || 0,\n groupId: groupId || '',\n stats: stats,\n networkDetails: networkDetails,\n deliveryDirectives: deliveryDirectives\n });\n break;\n }\n };\n\n return PlaylistLoader;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (PlaylistLoader);\n\n/***/ }),\n\n/***/ \"./src/polyfills/number.ts\":\n/*!*********************************!*\\\n !*** ./src/polyfills/number.ts ***!\n \\*********************************/\n/*! exports provided: isFiniteNumber, MAX_SAFE_INTEGER */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFiniteNumber\", function() { return isFiniteNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MAX_SAFE_INTEGER\", function() { return MAX_SAFE_INTEGER; });\nvar isFiniteNumber = Number.isFinite || function (value) {\n return typeof value === 'number' && isFinite(value);\n};\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\n/***/ }),\n\n/***/ \"./src/remux/aac-helper.ts\":\n/*!*********************************!*\\\n !*** ./src/remux/aac-helper.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * AAC helper\n */\nvar AAC = /*#__PURE__*/function () {\n function AAC() {}\n\n AAC.getSilentFrame = function getSilentFrame(codec, channelCount) {\n switch (codec) {\n case 'mp4a.40.2':\n if (channelCount === 1) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);\n } else if (channelCount === 2) {\n return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);\n } else if (channelCount === 3) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]);\n } else if (channelCount === 4) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]);\n } else if (channelCount === 5) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]);\n } else if (channelCount === 6) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]);\n }\n\n break;\n // handle HE-AAC below (mp4a.40.5 / mp4a.40.29)\n\n default:\n if (channelCount === 1) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0:d=0.05\" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 2) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 3) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n }\n\n break;\n }\n\n return undefined;\n };\n\n return AAC;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AAC);\n\n/***/ }),\n\n/***/ \"./src/remux/mp4-generator.ts\":\n/*!************************************!*\\\n !*** ./src/remux/mp4-generator.ts ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Generate MP4 Box\n */\nvar UINT32_MAX = Math.pow(2, 32) - 1;\n\nvar MP4 = /*#__PURE__*/function () {\n function MP4() {}\n\n MP4.init = function init() {\n MP4.types = {\n avc1: [],\n // codingname\n avcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n '.mp3': [],\n mvex: [],\n mvhd: [],\n pasp: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n var i;\n\n for (i in MP4.types) {\n if (MP4.types.hasOwnProperty(i)) {\n MP4.types[i] = [i.charCodeAt(0), i.charCodeAt(1), i.charCodeAt(2), i.charCodeAt(3)];\n }\n }\n\n var videoHdlr = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x56, 0x69, 0x64, 0x65, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler'\n ]);\n var audioHdlr = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6f, 0x75, 0x6e, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler'\n ]);\n MP4.HDLR_TYPES = {\n video: videoHdlr,\n audio: audioHdlr\n };\n var dref = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0c, // entry_size\n 0x75, 0x72, 0x6c, 0x20, // 'url' type\n 0x00, // version 0\n 0x00, 0x00, 0x01 // entry_flags\n ]);\n var stco = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n MP4.STTS = MP4.STSC = MP4.STCO = stco;\n MP4.STSZ = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n MP4.VMHD = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x01, // flags\n 0x00, 0x00, // graphicsmode\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // opcolor\n ]);\n MP4.SMHD = new Uint8Array([0x00, // version\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, // balance\n 0x00, 0x00 // reserved\n ]);\n MP4.STSD = new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x01]); // entry_count\n\n var majorBrand = new Uint8Array([105, 115, 111, 109]); // isom\n\n var avc1Brand = new Uint8Array([97, 118, 99, 49]); // avc1\n\n var minorVersion = new Uint8Array([0, 0, 0, 1]);\n MP4.FTYP = MP4.box(MP4.types.ftyp, majorBrand, minorVersion, majorBrand, avc1Brand);\n MP4.DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, dref));\n };\n\n MP4.box = function box(type) {\n var size = 8;\n\n for (var _len = arguments.length, payload = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n payload[_key - 1] = arguments[_key];\n }\n\n var i = payload.length;\n var len = i; // calculate the total size we need to allocate\n\n while (i--) {\n size += payload[i].byteLength;\n }\n\n var result = new Uint8Array(size);\n result[0] = size >> 24 & 0xff;\n result[1] = size >> 16 & 0xff;\n result[2] = size >> 8 & 0xff;\n result[3] = size & 0xff;\n result.set(type, 4); // copy the payload into the result\n\n for (i = 0, size = 8; i < len; i++) {\n // copy payload[i] array @ offset size\n result.set(payload[i], size);\n size += payload[i].byteLength;\n }\n\n return result;\n };\n\n MP4.hdlr = function hdlr(type) {\n return MP4.box(MP4.types.hdlr, MP4.HDLR_TYPES[type]);\n };\n\n MP4.mdat = function mdat(data) {\n return MP4.box(MP4.types.mdat, data);\n };\n\n MP4.mdhd = function mdhd(timescale, duration) {\n duration *= timescale;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n return MP4.box(MP4.types.mdhd, new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n timescale >> 24 & 0xff, timescale >> 16 & 0xff, timescale >> 8 & 0xff, timescale & 0xff, // timescale\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x55, 0xc4, // 'und' language (undetermined)\n 0x00, 0x00]));\n };\n\n MP4.mdia = function mdia(track) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(track.timescale, track.duration), MP4.hdlr(track.type), MP4.minf(track));\n };\n\n MP4.mfhd = function mfhd(sequenceNumber) {\n return MP4.box(MP4.types.mfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // flags\n sequenceNumber >> 24, sequenceNumber >> 16 & 0xff, sequenceNumber >> 8 & 0xff, sequenceNumber & 0xff // sequence_number\n ]));\n };\n\n MP4.minf = function minf(track) {\n if (track.type === 'audio') {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.smhd, MP4.SMHD), MP4.DINF, MP4.stbl(track));\n } else {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.vmhd, MP4.VMHD), MP4.DINF, MP4.stbl(track));\n }\n };\n\n MP4.moof = function moof(sn, baseMediaDecodeTime, track) {\n return MP4.box(MP4.types.moof, MP4.mfhd(sn), MP4.traf(track, baseMediaDecodeTime));\n }\n /**\n * @param tracks... (optional) {array} the tracks associated with this movie\n */\n ;\n\n MP4.moov = function moov(tracks) {\n var i = tracks.length;\n var boxes = [];\n\n while (i--) {\n boxes[i] = MP4.trak(tracks[i]);\n }\n\n return MP4.box.apply(null, [MP4.types.moov, MP4.mvhd(tracks[0].timescale, tracks[0].duration)].concat(boxes).concat(MP4.mvex(tracks)));\n };\n\n MP4.mvex = function mvex(tracks) {\n var i = tracks.length;\n var boxes = [];\n\n while (i--) {\n boxes[i] = MP4.trex(tracks[i]);\n }\n\n return MP4.box.apply(null, [MP4.types.mvex].concat(boxes));\n };\n\n MP4.mvhd = function mvhd(timescale, duration) {\n duration *= timescale;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n var bytes = new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n timescale >> 24 & 0xff, timescale >> 16 & 0xff, timescale >> 8 & 0xff, timescale & 0xff, // timescale\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x00, 0x01, 0x00, 0x00, // 1.0 rate\n 0x01, 0x00, // 1.0 volume\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0xff, 0xff, 0xff, 0xff // next_track_ID\n ]);\n return MP4.box(MP4.types.mvhd, bytes);\n };\n\n MP4.sdtp = function sdtp(track) {\n var samples = track.samples || [];\n var bytes = new Uint8Array(4 + samples.length);\n var i;\n var flags; // leave the full box header (4 bytes) all zero\n // write the sample table\n\n for (i = 0; i < samples.length; i++) {\n flags = samples[i].flags;\n bytes[i + 4] = flags.dependsOn << 4 | flags.isDependedOn << 2 | flags.hasRedundancy;\n }\n\n return MP4.box(MP4.types.sdtp, bytes);\n };\n\n MP4.stbl = function stbl(track) {\n return MP4.box(MP4.types.stbl, MP4.stsd(track), MP4.box(MP4.types.stts, MP4.STTS), MP4.box(MP4.types.stsc, MP4.STSC), MP4.box(MP4.types.stsz, MP4.STSZ), MP4.box(MP4.types.stco, MP4.STCO));\n };\n\n MP4.avc1 = function avc1(track) {\n var sps = [];\n var pps = [];\n var i;\n var data;\n var len; // assemble the SPSs\n\n for (i = 0; i < track.sps.length; i++) {\n data = track.sps[i];\n len = data.byteLength;\n sps.push(len >>> 8 & 0xff);\n sps.push(len & 0xff); // SPS\n\n sps = sps.concat(Array.prototype.slice.call(data));\n } // assemble the PPSs\n\n\n for (i = 0; i < track.pps.length; i++) {\n data = track.pps[i];\n len = data.byteLength;\n pps.push(len >>> 8 & 0xff);\n pps.push(len & 0xff);\n pps = pps.concat(Array.prototype.slice.call(data));\n }\n\n var avcc = MP4.box(MP4.types.avcC, new Uint8Array([0x01, // version\n sps[3], // profile\n sps[4], // profile compat\n sps[5], // level\n 0xfc | 3, // lengthSizeMinusOne, hard-coded to 4 bytes\n 0xe0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets\n ].concat(sps).concat([track.pps.length // numOfPictureParameterSets\n ]).concat(pps))); // \"PPS\"\n\n var width = track.width;\n var height = track.height;\n var hSpacing = track.pixelRatio[0];\n var vSpacing = track.pixelRatio[1];\n return MP4.box(MP4.types.avc1, new Uint8Array([0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, // pre_defined\n 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined\n width >> 8 & 0xff, width & 0xff, // width\n height >> 8 & 0xff, height & 0xff, // height\n 0x00, 0x48, 0x00, 0x00, // horizresolution\n 0x00, 0x48, 0x00, 0x00, // vertresolution\n 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // frame_count\n 0x12, 0x64, 0x61, 0x69, 0x6c, // dailymotion/hls.js\n 0x79, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x6c, 0x73, 0x2e, 0x6a, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // compressorname\n 0x00, 0x18, // depth = 24\n 0x11, 0x11]), // pre_defined = -1\n avcc, MP4.box(MP4.types.btrt, new Uint8Array([0x00, 0x1c, 0x9c, 0x80, // bufferSizeDB\n 0x00, 0x2d, 0xc6, 0xc0, // maxBitrate\n 0x00, 0x2d, 0xc6, 0xc0])), // avgBitrate\n MP4.box(MP4.types.pasp, new Uint8Array([hSpacing >> 24, // hSpacing\n hSpacing >> 16 & 0xff, hSpacing >> 8 & 0xff, hSpacing & 0xff, vSpacing >> 24, // vSpacing\n vSpacing >> 16 & 0xff, vSpacing >> 8 & 0xff, vSpacing & 0xff])));\n };\n\n MP4.esds = function esds(track) {\n var configlen = track.config.length;\n return new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n 0x03, // descriptor_type\n 0x17 + configlen, // length\n 0x00, 0x01, // es_id\n 0x00, // stream_priority\n 0x04, // descriptor_type\n 0x0f + configlen, // length\n 0x40, // codec : mpeg4_audio\n 0x15, // stream_type\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n 0x05 // descriptor_type\n ].concat([configlen]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor\n };\n\n MP4.mp4a = function mp4a(track) {\n var samplerate = track.samplerate;\n return MP4.box(MP4.types.mp4a, new Uint8Array([0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, track.channelCount, // channelcount\n 0x00, 0x10, // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00, // reserved2\n samplerate >> 8 & 0xff, samplerate & 0xff, //\n 0x00, 0x00]), MP4.box(MP4.types.esds, MP4.esds(track)));\n };\n\n MP4.mp3 = function mp3(track) {\n var samplerate = track.samplerate;\n return MP4.box(MP4.types['.mp3'], new Uint8Array([0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, 0x00, // reserved\n 0x00, 0x01, // data_reference_index\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, track.channelCount, // channelcount\n 0x00, 0x10, // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00, // reserved2\n samplerate >> 8 & 0xff, samplerate & 0xff, //\n 0x00, 0x00]));\n };\n\n MP4.stsd = function stsd(track) {\n if (track.type === 'audio') {\n if (track.segmentCodec === 'mp3' && track.codec === 'mp3') {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp3(track));\n }\n\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp4a(track));\n } else {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.avc1(track));\n }\n };\n\n MP4.tkhd = function tkhd(track) {\n var id = track.id;\n var duration = track.duration * track.timescale;\n var width = track.width;\n var height = track.height;\n var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n return MP4.box(MP4.types.tkhd, new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x07, // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time\n id >> 24 & 0xff, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff, // track_ID\n 0x00, 0x00, 0x00, 0x00, // reserved\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved\n 0x00, 0x00, // layer\n 0x00, 0x00, // alternate_group\n 0x00, 0x00, // non-audio track volume\n 0x00, 0x00, // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix\n width >> 8 & 0xff, width & 0xff, 0x00, 0x00, // width\n height >> 8 & 0xff, height & 0xff, 0x00, 0x00 // height\n ]));\n };\n\n MP4.traf = function traf(track, baseMediaDecodeTime) {\n var sampleDependencyTable = MP4.sdtp(track);\n var id = track.id;\n var upperWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));\n var lowerWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));\n return MP4.box(MP4.types.traf, MP4.box(MP4.types.tfhd, new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n id >> 24, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff // track_ID\n ])), MP4.box(MP4.types.tfdt, new Uint8Array([0x01, // version 1\n 0x00, 0x00, 0x00, // flags\n upperWordBaseMediaDecodeTime >> 24, upperWordBaseMediaDecodeTime >> 16 & 0xff, upperWordBaseMediaDecodeTime >> 8 & 0xff, upperWordBaseMediaDecodeTime & 0xff, lowerWordBaseMediaDecodeTime >> 24, lowerWordBaseMediaDecodeTime >> 16 & 0xff, lowerWordBaseMediaDecodeTime >> 8 & 0xff, lowerWordBaseMediaDecodeTime & 0xff])), MP4.trun(track, sampleDependencyTable.length + 16 + // tfhd\n 20 + // tfdt\n 8 + // traf header\n 16 + // mfhd\n 8 + // moof header\n 8), // mdat header\n sampleDependencyTable);\n }\n /**\n * Generate a track box.\n * @param track {object} a track definition\n * @return {Uint8Array} the track box\n */\n ;\n\n MP4.trak = function trak(track) {\n track.duration = track.duration || 0xffffffff;\n return MP4.box(MP4.types.trak, MP4.tkhd(track), MP4.mdia(track));\n };\n\n MP4.trex = function trex(track) {\n var id = track.id;\n return MP4.box(MP4.types.trex, new Uint8Array([0x00, // version 0\n 0x00, 0x00, 0x00, // flags\n id >> 24, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff, // track_ID\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]));\n };\n\n MP4.trun = function trun(track, offset) {\n var samples = track.samples || [];\n var len = samples.length;\n var arraylen = 12 + 16 * len;\n var array = new Uint8Array(arraylen);\n var i;\n var sample;\n var duration;\n var size;\n var flags;\n var cts;\n offset += 8 + arraylen;\n array.set([track.type === 'video' ? 0x01 : 0x00, // version 1 for video with signed-int sample_composition_time_offset\n 0x00, 0x0f, 0x01, // flags\n len >>> 24 & 0xff, len >>> 16 & 0xff, len >>> 8 & 0xff, len & 0xff, // sample_count\n offset >>> 24 & 0xff, offset >>> 16 & 0xff, offset >>> 8 & 0xff, offset & 0xff // data_offset\n ], 0);\n\n for (i = 0; i < len; i++) {\n sample = samples[i];\n duration = sample.duration;\n size = sample.size;\n flags = sample.flags;\n cts = sample.cts;\n array.set([duration >>> 24 & 0xff, duration >>> 16 & 0xff, duration >>> 8 & 0xff, duration & 0xff, // sample_duration\n size >>> 24 & 0xff, size >>> 16 & 0xff, size >>> 8 & 0xff, size & 0xff, // sample_size\n flags.isLeading << 2 | flags.dependsOn, flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.paddingValue << 1 | flags.isNonSync, flags.degradPrio & 0xf0 << 8, flags.degradPrio & 0x0f, // sample_flags\n cts >>> 24 & 0xff, cts >>> 16 & 0xff, cts >>> 8 & 0xff, cts & 0xff // sample_composition_time_offset\n ], 12 + 16 * i);\n }\n\n return MP4.box(MP4.types.trun, array);\n };\n\n MP4.initSegment = function initSegment(tracks) {\n if (!MP4.types) {\n MP4.init();\n }\n\n var movie = MP4.moov(tracks);\n var result = new Uint8Array(MP4.FTYP.byteLength + movie.byteLength);\n result.set(MP4.FTYP);\n result.set(movie, MP4.FTYP.byteLength);\n return result;\n };\n\n return MP4;\n}();\n\nMP4.types = void 0;\nMP4.HDLR_TYPES = void 0;\nMP4.STTS = void 0;\nMP4.STSC = void 0;\nMP4.STCO = void 0;\nMP4.STSZ = void 0;\nMP4.VMHD = void 0;\nMP4.SMHD = void 0;\nMP4.STSD = void 0;\nMP4.FTYP = void 0;\nMP4.DINF = void 0;\n/* harmony default export */ __webpack_exports__[\"default\"] = (MP4);\n\n/***/ }),\n\n/***/ \"./src/remux/mp4-remuxer.ts\":\n/*!**********************************!*\\\n !*** ./src/remux/mp4-remuxer.ts ***!\n \\**********************************/\n/*! exports provided: default, normalizePts, flushTextTrackMetadataCueSamples, flushTextTrackUserdataCueSamples */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MP4Remuxer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizePts\", function() { return normalizePts; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flushTextTrackMetadataCueSamples\", function() { return flushTextTrackMetadataCueSamples; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flushTextTrackUserdataCueSamples\", function() { return flushTextTrackUserdataCueSamples; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _aac_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./aac-helper */ \"./src/remux/aac-helper.ts\");\n/* harmony import */ var _mp4_generator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mp4-generator */ \"./src/remux/mp4-generator.ts\");\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../events */ \"./src/events.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../errors */ \"./src/errors.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _types_loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../types/loader */ \"./src/types/loader.ts\");\n/* harmony import */ var _utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/timescale-conversion */ \"./src/utils/timescale-conversion.ts\");\n\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\n\n\n\nvar MAX_SILENT_FRAME_DURATION = 10 * 1000; // 10 seconds\n\nvar AAC_SAMPLES_PER_FRAME = 1024;\nvar MPEG_AUDIO_SAMPLE_PER_FRAME = 1152;\nvar chromeVersion = null;\nvar safariWebkitVersion = null;\n\nvar MP4Remuxer = /*#__PURE__*/function () {\n function MP4Remuxer(observer, config, typeSupported, vendor) {\n if (vendor === void 0) {\n vendor = '';\n }\n\n this.observer = void 0;\n this.config = void 0;\n this.typeSupported = void 0;\n this.ISGenerated = false;\n this._initPTS = void 0;\n this._initDTS = void 0;\n this.nextAvcDts = null;\n this.nextAudioPts = null;\n this.videoSampleDuration = null;\n this.isAudioContiguous = false;\n this.isVideoContiguous = false;\n this.observer = observer;\n this.config = config;\n this.typeSupported = typeSupported;\n this.ISGenerated = false;\n\n if (chromeVersion === null) {\n var userAgent = navigator.userAgent || '';\n var result = userAgent.match(/Chrome\\/(\\d+)/i);\n chromeVersion = result ? parseInt(result[1]) : 0;\n }\n\n if (safariWebkitVersion === null) {\n var _result = navigator.userAgent.match(/Safari\\/(\\d+)/i);\n\n safariWebkitVersion = _result ? parseInt(_result[1]) : 0;\n }\n }\n\n var _proto = MP4Remuxer.prototype;\n\n _proto.destroy = function destroy() {};\n\n _proto.resetTimeStamp = function resetTimeStamp(defaultTimeStamp) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log('[mp4-remuxer]: initPTS & initDTS reset');\n this._initPTS = this._initDTS = defaultTimeStamp;\n };\n\n _proto.resetNextTimestamp = function resetNextTimestamp() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log('[mp4-remuxer]: reset next timestamp');\n this.isVideoContiguous = false;\n this.isAudioContiguous = false;\n };\n\n _proto.resetInitSegment = function resetInitSegment() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log('[mp4-remuxer]: ISGenerated flag reset');\n this.ISGenerated = false;\n };\n\n _proto.getVideoStartPts = function getVideoStartPts(videoSamples) {\n var rolloverDetected = false;\n var startPTS = videoSamples.reduce(function (minPTS, sample) {\n var delta = sample.pts - minPTS;\n\n if (delta < -4294967296) {\n // 2^32, see PTSNormalize for reasoning, but we're hitting a rollover here, and we don't want that to impact the timeOffset calculation\n rolloverDetected = true;\n return normalizePts(minPTS, sample.pts);\n } else if (delta > 0) {\n return minPTS;\n } else {\n return sample.pts;\n }\n }, videoSamples[0].pts);\n\n if (rolloverDetected) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].debug('PTS rollover detected');\n }\n\n return startPTS;\n };\n\n _proto.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, flush, playlistType) {\n var video;\n var audio;\n var initSegment;\n var text;\n var id3;\n var independent;\n var audioTimeOffset = timeOffset;\n var videoTimeOffset = timeOffset; // If we're remuxing audio and video progressively, wait until we've received enough samples for each track before proceeding.\n // This is done to synchronize the audio and video streams. We know if the current segment will have samples if the \"pid\"\n // parameter is greater than -1. The pid is set when the PMT is parsed, which contains the tracks list.\n // However, if the initSegment has already been generated, or we've reached the end of a segment (flush),\n // then we can remux one track without waiting for the other.\n\n var hasAudio = audioTrack.pid > -1;\n var hasVideo = videoTrack.pid > -1;\n var length = videoTrack.samples.length;\n var enoughAudioSamples = audioTrack.samples.length > 0;\n var enoughVideoSamples = flush && length > 0 || length > 1;\n var canRemuxAvc = (!hasAudio || enoughAudioSamples) && (!hasVideo || enoughVideoSamples) || this.ISGenerated || flush;\n\n if (canRemuxAvc) {\n if (!this.ISGenerated) {\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset);\n }\n\n var isVideoContiguous = this.isVideoContiguous;\n var firstKeyFrameIndex = -1;\n var firstKeyFramePTS;\n\n if (enoughVideoSamples) {\n firstKeyFrameIndex = findKeyframeIndex(videoTrack.samples);\n\n if (!isVideoContiguous && this.config.forceKeyFrameOnDiscontinuity) {\n independent = true;\n\n if (firstKeyFrameIndex > 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"[mp4-remuxer]: Dropped \" + firstKeyFrameIndex + \" out of \" + length + \" video samples due to a missing keyframe\");\n var startPTS = this.getVideoStartPts(videoTrack.samples);\n videoTrack.samples = videoTrack.samples.slice(firstKeyFrameIndex);\n videoTrack.dropped += firstKeyFrameIndex;\n videoTimeOffset += (videoTrack.samples[0].pts - startPTS) / videoTrack.inputTimeScale;\n firstKeyFramePTS = videoTimeOffset;\n } else if (firstKeyFrameIndex === -1) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"[mp4-remuxer]: No keyframe found out of \" + length + \" video samples\");\n independent = false;\n }\n }\n }\n\n if (this.ISGenerated) {\n if (enoughAudioSamples && enoughVideoSamples) {\n // timeOffset is expected to be the offset of the first timestamp of this fragment (first DTS)\n // if first audio DTS is not aligned with first video DTS then we need to take that into account\n // when providing timeOffset to remuxAudio / remuxVideo. if we don't do that, there might be a permanent / small\n // drift between audio and video streams\n var _startPTS = this.getVideoStartPts(videoTrack.samples);\n\n var tsDelta = normalizePts(audioTrack.samples[0].pts, _startPTS) - _startPTS;\n\n var audiovideoTimestampDelta = tsDelta / videoTrack.inputTimeScale;\n audioTimeOffset += Math.max(0, audiovideoTimestampDelta);\n videoTimeOffset += Math.max(0, -audiovideoTimestampDelta);\n } // Purposefully remuxing audio before video, so that remuxVideo can use nextAudioPts, which is calculated in remuxAudio.\n\n\n if (enoughAudioSamples) {\n // if initSegment was generated without audio samples, regenerate it again\n if (!audioTrack.samplerate) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn('[mp4-remuxer]: regenerate InitSegment as audio detected');\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset);\n }\n\n audio = this.remuxAudio(audioTrack, audioTimeOffset, this.isAudioContiguous, accurateTimeOffset, hasVideo || enoughVideoSamples || playlistType === _types_loader__WEBPACK_IMPORTED_MODULE_6__[\"PlaylistLevelType\"].AUDIO ? videoTimeOffset : undefined);\n\n if (enoughVideoSamples) {\n var audioTrackLength = audio ? audio.endPTS - audio.startPTS : 0; // if initSegment was generated without video samples, regenerate it again\n\n if (!videoTrack.inputTimeScale) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn('[mp4-remuxer]: regenerate InitSegment as video detected');\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset);\n }\n\n video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, audioTrackLength);\n }\n } else if (enoughVideoSamples) {\n video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, 0);\n }\n\n if (video) {\n video.firstKeyFrame = firstKeyFrameIndex;\n video.independent = firstKeyFrameIndex !== -1;\n video.firstKeyFramePTS = firstKeyFramePTS;\n }\n }\n } // Allow ID3 and text to remux, even if more audio/video samples are required\n\n\n if (this.ISGenerated) {\n if (id3Track.samples.length) {\n id3 = flushTextTrackMetadataCueSamples(id3Track, timeOffset, this._initPTS, this._initDTS);\n }\n\n if (textTrack.samples.length) {\n text = flushTextTrackUserdataCueSamples(textTrack, timeOffset, this._initPTS);\n }\n }\n\n return {\n audio: audio,\n video: video,\n initSegment: initSegment,\n independent: independent,\n text: text,\n id3: id3\n };\n };\n\n _proto.generateIS = function generateIS(audioTrack, videoTrack, timeOffset) {\n var audioSamples = audioTrack.samples;\n var videoSamples = videoTrack.samples;\n var typeSupported = this.typeSupported;\n var tracks = {};\n var computePTSDTS = !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(this._initPTS);\n var container = 'audio/mp4';\n var initPTS;\n var initDTS;\n var timescale;\n\n if (computePTSDTS) {\n initPTS = initDTS = Infinity;\n }\n\n if (audioTrack.config && audioSamples.length) {\n // let's use audio sampling rate as MP4 time scale.\n // rationale is that there is a integer nb of audio frames per audio sample (1024 for AAC)\n // using audio sampling rate here helps having an integer MP4 frame duration\n // this avoids potential rounding issue and AV sync issue\n audioTrack.timescale = audioTrack.samplerate;\n\n switch (audioTrack.segmentCodec) {\n case 'mp3':\n if (typeSupported.mpeg) {\n // Chrome and Safari\n container = 'audio/mpeg';\n audioTrack.codec = '';\n } else if (typeSupported.mp3) {\n // Firefox\n audioTrack.codec = 'mp3';\n }\n\n break;\n }\n\n tracks.audio = {\n id: 'audio',\n container: container,\n codec: audioTrack.codec,\n initSegment: audioTrack.segmentCodec === 'mp3' && typeSupported.mpeg ? new Uint8Array(0) : _mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].initSegment([audioTrack]),\n metadata: {\n channelCount: audioTrack.channelCount\n }\n };\n\n if (computePTSDTS) {\n timescale = audioTrack.inputTimeScale; // remember first PTS of this demuxing context. for audio, PTS = DTS\n\n initPTS = initDTS = audioSamples[0].pts - Math.round(timescale * timeOffset);\n }\n }\n\n if (videoTrack.sps && videoTrack.pps && videoSamples.length) {\n // let's use input time scale as MP4 video timescale\n // we use input time scale straight away to avoid rounding issues on frame duration / cts computation\n videoTrack.timescale = videoTrack.inputTimeScale;\n tracks.video = {\n id: 'main',\n container: 'video/mp4',\n codec: videoTrack.codec,\n initSegment: _mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].initSegment([videoTrack]),\n metadata: {\n width: videoTrack.width,\n height: videoTrack.height\n }\n };\n\n if (computePTSDTS) {\n timescale = videoTrack.inputTimeScale;\n var startPTS = this.getVideoStartPts(videoSamples);\n var startOffset = Math.round(timescale * timeOffset);\n initDTS = Math.min(initDTS, normalizePts(videoSamples[0].dts, startPTS) - startOffset);\n initPTS = Math.min(initPTS, startPTS - startOffset);\n }\n }\n\n if (Object.keys(tracks).length) {\n this.ISGenerated = true;\n\n if (computePTSDTS) {\n this._initPTS = initPTS;\n this._initDTS = initDTS;\n }\n\n return {\n tracks: tracks,\n initPTS: initPTS,\n timescale: timescale\n };\n }\n };\n\n _proto.remuxVideo = function remuxVideo(track, timeOffset, contiguous, audioTrackLength) {\n var timeScale = track.inputTimeScale;\n var inputSamples = track.samples;\n var outputSamples = [];\n var nbSamples = inputSamples.length;\n var initPTS = this._initPTS;\n var nextAvcDts = this.nextAvcDts;\n var offset = 8;\n var mp4SampleDuration = this.videoSampleDuration;\n var firstDTS;\n var lastDTS;\n var minPTS = Number.POSITIVE_INFINITY;\n var maxPTS = Number.NEGATIVE_INFINITY;\n var sortSamples = false; // if parsed fragment is contiguous with last one, let's use last DTS value as reference\n\n if (!contiguous || nextAvcDts === null) {\n var pts = timeOffset * timeScale;\n var cts = inputSamples[0].pts - normalizePts(inputSamples[0].dts, inputSamples[0].pts); // if not contiguous, let's use target timeOffset\n\n nextAvcDts = pts - cts;\n } // PTS is coded on 33bits, and can loop from -2^32 to 2^32\n // PTSNormalize will make PTS/DTS value monotonic, we use last known DTS value as reference value\n\n\n for (var i = 0; i < nbSamples; i++) {\n var sample = inputSamples[i];\n sample.pts = normalizePts(sample.pts - initPTS, nextAvcDts);\n sample.dts = normalizePts(sample.dts - initPTS, nextAvcDts);\n\n if (sample.dts < inputSamples[i > 0 ? i - 1 : i].dts) {\n sortSamples = true;\n }\n } // sort video samples by DTS then PTS then demux id order\n\n\n if (sortSamples) {\n inputSamples.sort(function (a, b) {\n var deltadts = a.dts - b.dts;\n var deltapts = a.pts - b.pts;\n return deltadts || deltapts;\n });\n } // Get first/last DTS\n\n\n firstDTS = inputSamples[0].dts;\n lastDTS = inputSamples[inputSamples.length - 1].dts; // Sample duration (as expected by trun MP4 boxes), should be the delta between sample DTS\n // set this constant duration as being the avg delta between consecutive DTS.\n\n var inputDuration = lastDTS - firstDTS;\n var averageSampleDuration = inputDuration ? Math.round(inputDuration / (nbSamples - 1)) : mp4SampleDuration || track.inputTimeScale / 30; // if fragment are contiguous, detect hole/overlapping between fragments\n\n if (contiguous) {\n // check timestamp continuity across consecutive fragments (this is to remove inter-fragment gap/hole)\n var delta = firstDTS - nextAvcDts;\n var foundHole = delta > averageSampleDuration;\n var foundOverlap = delta < -1;\n\n if (foundHole || foundOverlap) {\n if (foundHole) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"AVC: \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(delta, true) + \" ms (\" + delta + \"dts) hole between fragments detected, filling it\");\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"AVC: \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(-delta, true) + \" ms (\" + delta + \"dts) overlapping between fragments detected\");\n }\n\n firstDTS = nextAvcDts;\n var firstPTS = inputSamples[0].pts - delta;\n inputSamples[0].dts = firstDTS;\n inputSamples[0].pts = firstPTS;\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log(\"Video: First PTS/DTS adjusted: \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(firstPTS, true) + \"/\" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(firstDTS, true) + \", delta: \" + Object(_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__[\"toMsFromMpegTsClock\"])(delta, true) + \" ms\");\n }\n }\n\n firstDTS = Math.max(0, firstDTS);\n var nbNalu = 0;\n var naluLen = 0;\n\n for (var _i = 0; _i < nbSamples; _i++) {\n // compute total/avc sample length and nb of NAL units\n var _sample = inputSamples[_i];\n var units = _sample.units;\n var nbUnits = units.length;\n var sampleLen = 0;\n\n for (var j = 0; j < nbUnits; j++) {\n sampleLen += units[j].data.length;\n }\n\n naluLen += sampleLen;\n nbNalu += nbUnits;\n _sample.length = sampleLen; // ensure sample monotonic DTS\n\n _sample.dts = Math.max(_sample.dts, firstDTS);\n minPTS = Math.min(_sample.pts, minPTS);\n maxPTS = Math.max(_sample.pts, maxPTS);\n }\n\n lastDTS = inputSamples[nbSamples - 1].dts;\n /* concatenate the video data and construct the mdat in place\n (need 8 more bytes to fill length and mpdat type) */\n\n var mdatSize = naluLen + 4 * nbNalu + 8;\n var mdat;\n\n try {\n mdat = new Uint8Array(mdatSize);\n } catch (err) {\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorTypes\"].MUX_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].REMUX_ALLOC_ERROR,\n fatal: false,\n bytes: mdatSize,\n reason: \"fail allocating video mdat \" + mdatSize\n });\n return;\n }\n\n var view = new DataView(mdat.buffer);\n view.setUint32(0, mdatSize);\n mdat.set(_mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].types.mdat, 4);\n var stretchedLastFrame = false;\n var minDtsDelta = Number.POSITIVE_INFINITY;\n var minPtsDelta = Number.POSITIVE_INFINITY;\n var maxDtsDelta = Number.NEGATIVE_INFINITY;\n var maxPtsDelta = Number.NEGATIVE_INFINITY;\n\n for (var _i2 = 0; _i2 < nbSamples; _i2++) {\n var avcSample = inputSamples[_i2];\n var avcSampleUnits = avcSample.units;\n var mp4SampleLength = 0; // convert NALU bitstream to MP4 format (prepend NALU with size field)\n\n for (var _j = 0, _nbUnits = avcSampleUnits.length; _j < _nbUnits; _j++) {\n var unit = avcSampleUnits[_j];\n var unitData = unit.data;\n var unitDataLen = unit.data.byteLength;\n view.setUint32(offset, unitDataLen);\n offset += 4;\n mdat.set(unitData, offset);\n offset += unitDataLen;\n mp4SampleLength += 4 + unitDataLen;\n } // expected sample duration is the Decoding Timestamp diff of consecutive samples\n\n\n var ptsDelta = void 0;\n\n if (_i2 < nbSamples - 1) {\n mp4SampleDuration = inputSamples[_i2 + 1].dts - avcSample.dts;\n ptsDelta = inputSamples[_i2 + 1].pts - avcSample.pts;\n } else {\n var config = this.config;\n var lastFrameDuration = _i2 > 0 ? avcSample.dts - inputSamples[_i2 - 1].dts : averageSampleDuration;\n ptsDelta = _i2 > 0 ? avcSample.pts - inputSamples[_i2 - 1].pts : averageSampleDuration;\n\n if (config.stretchShortVideoTrack && this.nextAudioPts !== null) {\n // In some cases, a segment's audio track duration may exceed the video track duration.\n // Since we've already remuxed audio, and we know how long the audio track is, we look to\n // see if the delta to the next segment is longer than maxBufferHole.\n // If so, playback would potentially get stuck, so we artificially inflate\n // the duration of the last frame to minimize any potential gap between segments.\n var gapTolerance = Math.floor(config.maxBufferHole * timeScale);\n var deltaToFrameEnd = (audioTrackLength ? minPTS + audioTrackLength * timeScale : this.nextAudioPts) - avcSample.pts;\n\n if (deltaToFrameEnd > gapTolerance) {\n // We subtract lastFrameDuration from deltaToFrameEnd to try to prevent any video\n // frame overlap. maxBufferHole should be >> lastFrameDuration anyway.\n mp4SampleDuration = deltaToFrameEnd - lastFrameDuration;\n\n if (mp4SampleDuration < 0) {\n mp4SampleDuration = lastFrameDuration;\n } else {\n stretchedLastFrame = true;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log(\"[mp4-remuxer]: It is approximately \" + deltaToFrameEnd / 90 + \" ms to the next segment; using duration \" + mp4SampleDuration / 90 + \" ms for the last video frame.\");\n } else {\n mp4SampleDuration = lastFrameDuration;\n }\n } else {\n mp4SampleDuration = lastFrameDuration;\n }\n }\n\n var compositionTimeOffset = Math.round(avcSample.pts - avcSample.dts);\n minDtsDelta = Math.min(minDtsDelta, mp4SampleDuration);\n maxDtsDelta = Math.max(maxDtsDelta, mp4SampleDuration);\n minPtsDelta = Math.min(minPtsDelta, ptsDelta);\n maxPtsDelta = Math.max(maxPtsDelta, ptsDelta);\n outputSamples.push(new Mp4Sample(avcSample.key, mp4SampleDuration, mp4SampleLength, compositionTimeOffset));\n }\n\n if (outputSamples.length) {\n if (chromeVersion) {\n if (chromeVersion < 70) {\n // Chrome workaround, mark first sample as being a Random Access Point (keyframe) to avoid sourcebuffer append issue\n // https://code.google.com/p/chromium/issues/detail?id=229412\n var flags = outputSamples[0].flags;\n flags.dependsOn = 2;\n flags.isNonSync = 0;\n }\n } else if (safariWebkitVersion) {\n // Fix for \"CNN special report, with CC\" in test-streams (Safari browser only)\n // Ignore DTS when frame durations are irregular. Safari MSE does not handle this leading to gaps.\n if (maxPtsDelta - minPtsDelta < maxDtsDelta - minDtsDelta && averageSampleDuration / maxDtsDelta < 0.025 && outputSamples[0].cts === 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn('Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.');\n var dts = firstDTS;\n\n for (var _i3 = 0, len = outputSamples.length; _i3 < len; _i3++) {\n var nextDts = dts + outputSamples[_i3].duration;\n\n var _pts = dts + outputSamples[_i3].cts;\n\n if (_i3 < len - 1) {\n var nextPts = nextDts + outputSamples[_i3 + 1].cts;\n outputSamples[_i3].duration = nextPts - _pts;\n } else {\n outputSamples[_i3].duration = _i3 ? outputSamples[_i3 - 1].duration : averageSampleDuration;\n }\n\n outputSamples[_i3].cts = 0;\n dts = nextDts;\n }\n }\n }\n }\n\n console.assert(mp4SampleDuration !== null, 'mp4SampleDuration must be computed'); // next AVC sample DTS should be equal to last sample DTS + last sample duration (in PES timescale)\n\n mp4SampleDuration = stretchedLastFrame || !mp4SampleDuration ? averageSampleDuration : mp4SampleDuration;\n this.nextAvcDts = nextAvcDts = lastDTS + mp4SampleDuration;\n this.videoSampleDuration = mp4SampleDuration;\n this.isVideoContiguous = true;\n var moof = _mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].moof(track.sequenceNumber++, firstDTS, _extends({}, track, {\n samples: outputSamples\n }));\n var type = 'video';\n var data = {\n data1: moof,\n data2: mdat,\n startPTS: minPTS / timeScale,\n endPTS: (maxPTS + mp4SampleDuration) / timeScale,\n startDTS: firstDTS / timeScale,\n endDTS: nextAvcDts / timeScale,\n type: type,\n hasAudio: false,\n hasVideo: true,\n nb: outputSamples.length,\n dropped: track.dropped\n };\n track.samples = [];\n track.dropped = 0;\n console.assert(mdat.length, 'MDAT length must not be zero');\n return data;\n };\n\n _proto.remuxAudio = function remuxAudio(track, timeOffset, contiguous, accurateTimeOffset, videoTimeOffset) {\n var inputTimeScale = track.inputTimeScale;\n var mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n var scaleFactor = inputTimeScale / mp4timeScale;\n var mp4SampleDuration = track.segmentCodec === 'aac' ? AAC_SAMPLES_PER_FRAME : MPEG_AUDIO_SAMPLE_PER_FRAME;\n var inputSampleDuration = mp4SampleDuration * scaleFactor;\n var initPTS = this._initPTS;\n var rawMPEG = track.segmentCodec === 'mp3' && this.typeSupported.mpeg;\n var outputSamples = [];\n var alignedWithVideo = videoTimeOffset !== undefined;\n var inputSamples = track.samples;\n var offset = rawMPEG ? 0 : 8;\n var nextAudioPts = this.nextAudioPts || -1; // window.audioSamples ? window.audioSamples.push(inputSamples.map(s => s.pts)) : (window.audioSamples = [inputSamples.map(s => s.pts)]);\n // for audio samples, also consider consecutive fragments as being contiguous (even if a level switch occurs),\n // for sake of clarity:\n // consecutive fragments are frags with\n // - less than 100ms gaps between new time offset (if accurate) and next expected PTS OR\n // - less than 20 audio frames distance\n // contiguous fragments are consecutive fragments from same quality level (same level, new SN = old SN + 1)\n // this helps ensuring audio continuity\n // and this also avoids audio glitches/cut when switching quality, or reporting wrong duration on first audio frame\n\n var timeOffsetMpegTS = timeOffset * inputTimeScale;\n this.isAudioContiguous = contiguous = contiguous || inputSamples.length && nextAudioPts > 0 && (accurateTimeOffset && Math.abs(timeOffsetMpegTS - nextAudioPts) < 9000 || Math.abs(normalizePts(inputSamples[0].pts - initPTS, timeOffsetMpegTS) - nextAudioPts) < 20 * inputSampleDuration); // compute normalized PTS\n\n inputSamples.forEach(function (sample) {\n sample.pts = normalizePts(sample.pts - initPTS, timeOffsetMpegTS);\n });\n\n if (!contiguous || nextAudioPts < 0) {\n // filter out sample with negative PTS that are not playable anyway\n // if we don't remove these negative samples, they will shift all audio samples forward.\n // leading to audio overlap between current / next fragment\n inputSamples = inputSamples.filter(function (sample) {\n return sample.pts >= 0;\n }); // in case all samples have negative PTS, and have been filtered out, return now\n\n if (!inputSamples.length) {\n return;\n }\n\n if (videoTimeOffset === 0) {\n // Set the start to 0 to match video so that start gaps larger than inputSampleDuration are filled with silence\n nextAudioPts = 0;\n } else if (accurateTimeOffset && !alignedWithVideo) {\n // When not seeking, not live, and LevelDetails.PTSKnown, use fragment start as predicted next audio PTS\n nextAudioPts = Math.max(0, timeOffsetMpegTS);\n } else {\n // if frags are not contiguous and if we cant trust time offset, let's use first sample PTS as next audio PTS\n nextAudioPts = inputSamples[0].pts;\n }\n } // If the audio track is missing samples, the frames seem to get \"left-shifted\" within the\n // resulting mp4 segment, causing sync issues and leaving gaps at the end of the audio segment.\n // In an effort to prevent this from happening, we inject frames here where there are gaps.\n // When possible, we inject a silent frame; when that's not possible, we duplicate the last\n // frame.\n\n\n if (track.segmentCodec === 'aac') {\n var maxAudioFramesDrift = this.config.maxAudioFramesDrift;\n\n for (var i = 0, nextPts = nextAudioPts; i < inputSamples.length; i++) {\n // First, let's see how far off this frame is from where we expect it to be\n var sample = inputSamples[i];\n var pts = sample.pts;\n var delta = pts - nextPts;\n var duration = Math.abs(1000 * delta / inputTimeScale); // When remuxing with video, if we're overlapping by more than a duration, drop this sample to stay in sync\n\n if (delta <= -maxAudioFramesDrift * inputSampleDuration && alignedWithVideo) {\n if (i === 0) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"Audio frame @ \" + (pts / inputTimeScale).toFixed(3) + \"s overlaps nextAudioPts by \" + Math.round(1000 * delta / inputTimeScale) + \" ms.\");\n this.nextAudioPts = nextAudioPts = nextPts = pts;\n }\n } // eslint-disable-line brace-style\n // Insert missing frames if:\n // 1: We're more than maxAudioFramesDrift frame away\n // 2: Not more than MAX_SILENT_FRAME_DURATION away\n // 3: currentTime (aka nextPtsNorm) is not 0\n // 4: remuxing with video (videoTimeOffset !== undefined)\n else if (delta >= maxAudioFramesDrift * inputSampleDuration && duration < MAX_SILENT_FRAME_DURATION && alignedWithVideo) {\n var missing = Math.round(delta / inputSampleDuration); // Adjust nextPts so that silent samples are aligned with media pts. This will prevent media samples from\n // later being shifted if nextPts is based on timeOffset and delta is not a multiple of inputSampleDuration.\n\n nextPts = pts - missing * inputSampleDuration;\n\n if (nextPts < 0) {\n missing--;\n nextPts += inputSampleDuration;\n }\n\n if (i === 0) {\n this.nextAudioPts = nextAudioPts = nextPts;\n }\n\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn(\"[mp4-remuxer]: Injecting \" + missing + \" audio frame @ \" + (nextPts / inputTimeScale).toFixed(3) + \"s due to \" + Math.round(1000 * delta / inputTimeScale) + \" ms gap.\");\n\n for (var j = 0; j < missing; j++) {\n var newStamp = Math.max(nextPts, 0);\n var fillFrame = _aac_helper__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n\n if (!fillFrame) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].log('[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead.');\n fillFrame = sample.unit.subarray();\n }\n\n inputSamples.splice(i, 0, {\n unit: fillFrame,\n pts: newStamp\n });\n nextPts += inputSampleDuration;\n i++;\n }\n }\n\n sample.pts = nextPts;\n nextPts += inputSampleDuration;\n }\n }\n\n var firstPTS = null;\n var lastPTS = null;\n var mdat;\n var mdatSize = 0;\n var sampleLength = inputSamples.length;\n\n while (sampleLength--) {\n mdatSize += inputSamples[sampleLength].unit.byteLength;\n }\n\n for (var _j2 = 0, _nbSamples = inputSamples.length; _j2 < _nbSamples; _j2++) {\n var audioSample = inputSamples[_j2];\n var unit = audioSample.unit;\n var _pts2 = audioSample.pts;\n\n if (lastPTS !== null) {\n // If we have more than one sample, set the duration of the sample to the \"real\" duration; the PTS diff with\n // the previous sample\n var prevSample = outputSamples[_j2 - 1];\n prevSample.duration = Math.round((_pts2 - lastPTS) / scaleFactor);\n } else {\n if (contiguous && track.segmentCodec === 'aac') {\n // set PTS/DTS to expected PTS/DTS\n _pts2 = nextAudioPts;\n } // remember first PTS of our audioSamples\n\n\n firstPTS = _pts2;\n\n if (mdatSize > 0) {\n /* concatenate the audio data and construct the mdat in place\n (need 8 more bytes to fill length and mdat type) */\n mdatSize += offset;\n\n try {\n mdat = new Uint8Array(mdatSize);\n } catch (err) {\n this.observer.emit(_events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, _events__WEBPACK_IMPORTED_MODULE_3__[\"Events\"].ERROR, {\n type: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorTypes\"].MUX_ERROR,\n details: _errors__WEBPACK_IMPORTED_MODULE_4__[\"ErrorDetails\"].REMUX_ALLOC_ERROR,\n fatal: false,\n bytes: mdatSize,\n reason: \"fail allocating audio mdat \" + mdatSize\n });\n return;\n }\n\n if (!rawMPEG) {\n var view = new DataView(mdat.buffer);\n view.setUint32(0, mdatSize);\n mdat.set(_mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].types.mdat, 4);\n }\n } else {\n // no audio samples\n return;\n }\n }\n\n mdat.set(unit, offset);\n var unitLen = unit.byteLength;\n offset += unitLen; // Default the sample's duration to the computed mp4SampleDuration, which will either be 1024 for AAC or 1152 for MPEG\n // In the case that we have 1 sample, this will be the duration. If we have more than one sample, the duration\n // becomes the PTS diff with the previous sample\n\n outputSamples.push(new Mp4Sample(true, mp4SampleDuration, unitLen, 0));\n lastPTS = _pts2;\n } // We could end up with no audio samples if all input samples were overlapping with the previously remuxed ones\n\n\n var nbSamples = outputSamples.length;\n\n if (!nbSamples) {\n return;\n } // The next audio sample PTS should be equal to last sample PTS + duration\n\n\n var lastSample = outputSamples[outputSamples.length - 1];\n this.nextAudioPts = nextAudioPts = lastPTS + scaleFactor * lastSample.duration; // Set the track samples from inputSamples to outputSamples before remuxing\n\n var moof = rawMPEG ? new Uint8Array(0) : _mp4_generator__WEBPACK_IMPORTED_MODULE_2__[\"default\"].moof(track.sequenceNumber++, firstPTS / scaleFactor, _extends({}, track, {\n samples: outputSamples\n })); // Clear the track samples. This also clears the samples array in the demuxer, since the reference is shared\n\n track.samples = [];\n var start = firstPTS / inputTimeScale;\n var end = nextAudioPts / inputTimeScale;\n var type = 'audio';\n var audioData = {\n data1: moof,\n data2: mdat,\n startPTS: start,\n endPTS: end,\n startDTS: start,\n endDTS: end,\n type: type,\n hasAudio: true,\n hasVideo: false,\n nb: nbSamples\n };\n this.isAudioContiguous = true;\n console.assert(mdat.length, 'MDAT length must not be zero');\n return audioData;\n };\n\n _proto.remuxEmptyAudio = function remuxEmptyAudio(track, timeOffset, contiguous, videoData) {\n var inputTimeScale = track.inputTimeScale;\n var mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n var scaleFactor = inputTimeScale / mp4timeScale;\n var nextAudioPts = this.nextAudioPts; // sync with video's timestamp\n\n var startDTS = (nextAudioPts !== null ? nextAudioPts : videoData.startDTS * inputTimeScale) + this._initDTS;\n var endDTS = videoData.endDTS * inputTimeScale + this._initDTS; // one sample's duration value\n\n var frameDuration = scaleFactor * AAC_SAMPLES_PER_FRAME; // samples count of this segment's duration\n\n var nbSamples = Math.ceil((endDTS - startDTS) / frameDuration); // silent frame\n\n var silentFrame = _aac_helper__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].warn('[mp4-remuxer]: remux empty Audio'); // Can't remux if we can't generate a silent frame...\n\n if (!silentFrame) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_5__[\"logger\"].trace('[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec');\n return;\n }\n\n var samples = [];\n\n for (var i = 0; i < nbSamples; i++) {\n var stamp = startDTS + i * frameDuration;\n samples.push({\n unit: silentFrame,\n pts: stamp,\n dts: stamp\n });\n }\n\n track.samples = samples;\n return this.remuxAudio(track, timeOffset, contiguous, false);\n };\n\n return MP4Remuxer;\n}();\n\n\nfunction normalizePts(value, reference) {\n var offset;\n\n if (reference === null) {\n return value;\n }\n\n if (reference < value) {\n // - 2^33\n offset = -8589934592;\n } else {\n // + 2^33\n offset = 8589934592;\n }\n /* PTS is 33bit (from 0 to 2^33 -1)\n if diff between value and reference is bigger than half of the amplitude (2^32) then it means that\n PTS looping occured. fill the gap */\n\n\n while (Math.abs(value - reference) > 4294967296) {\n value += offset;\n }\n\n return value;\n}\n\nfunction findKeyframeIndex(samples) {\n for (var i = 0; i < samples.length; i++) {\n if (samples[i].key) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction flushTextTrackMetadataCueSamples(track, timeOffset, initPTS, initDTS) {\n var length = track.samples.length;\n\n if (!length) {\n return;\n }\n\n var inputTimeScale = track.inputTimeScale;\n\n for (var index = 0; index < length; index++) {\n var sample = track.samples[index]; // setting id3 pts, dts to relative time\n // using this._initPTS and this._initDTS to calculate relative time\n\n sample.pts = normalizePts(sample.pts - initPTS, timeOffset * inputTimeScale) / inputTimeScale;\n sample.dts = normalizePts(sample.dts - initDTS, timeOffset * inputTimeScale) / inputTimeScale;\n }\n\n var samples = track.samples;\n track.samples = [];\n return {\n samples: samples\n };\n}\nfunction flushTextTrackUserdataCueSamples(track, timeOffset, initPTS) {\n var length = track.samples.length;\n\n if (!length) {\n return;\n }\n\n var inputTimeScale = track.inputTimeScale;\n\n for (var index = 0; index < length; index++) {\n var sample = track.samples[index]; // setting text pts, dts to relative time\n // using this._initPTS and this._initDTS to calculate relative time\n\n sample.pts = normalizePts(sample.pts - initPTS, timeOffset * inputTimeScale) / inputTimeScale;\n }\n\n track.samples.sort(function (a, b) {\n return a.pts - b.pts;\n });\n var samples = track.samples;\n track.samples = [];\n return {\n samples: samples\n };\n}\n\nvar Mp4Sample = function Mp4Sample(isKeyframe, duration, size, cts) {\n this.size = void 0;\n this.duration = void 0;\n this.cts = void 0;\n this.flags = void 0;\n this.duration = duration;\n this.size = size;\n this.cts = cts;\n this.flags = new Mp4SampleFlags(isKeyframe);\n};\n\nvar Mp4SampleFlags = function Mp4SampleFlags(isKeyframe) {\n this.isLeading = 0;\n this.isDependedOn = 0;\n this.hasRedundancy = 0;\n this.degradPrio = 0;\n this.dependsOn = 1;\n this.isNonSync = 1;\n this.dependsOn = isKeyframe ? 2 : 1;\n this.isNonSync = isKeyframe ? 0 : 1;\n};\n\n/***/ }),\n\n/***/ \"./src/remux/passthrough-remuxer.ts\":\n/*!******************************************!*\\\n !*** ./src/remux/passthrough-remuxer.ts ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _mp4_remuxer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mp4-remuxer */ \"./src/remux/mp4-remuxer.ts\");\n/* harmony import */ var _utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _loader_fragment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../loader/fragment */ \"./src/loader/fragment.ts\");\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n\n\n\n\n\n\nvar PassThroughRemuxer = /*#__PURE__*/function () {\n function PassThroughRemuxer() {\n this.emitInitSegment = false;\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this.initData = void 0;\n this.initPTS = void 0;\n this.initTracks = void 0;\n this.lastEndTime = null;\n }\n\n var _proto = PassThroughRemuxer.prototype;\n\n _proto.destroy = function destroy() {};\n\n _proto.resetTimeStamp = function resetTimeStamp(defaultInitPTS) {\n this.initPTS = defaultInitPTS;\n this.lastEndTime = null;\n };\n\n _proto.resetNextTimestamp = function resetNextTimestamp() {\n this.lastEndTime = null;\n };\n\n _proto.resetInitSegment = function resetInitSegment(initSegment, audioCodec, videoCodec) {\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this.generateInitSegment(initSegment);\n this.emitInitSegment = true;\n };\n\n _proto.generateInitSegment = function generateInitSegment(initSegment) {\n var audioCodec = this.audioCodec,\n videoCodec = this.videoCodec;\n\n if (!initSegment || !initSegment.byteLength) {\n this.initTracks = undefined;\n this.initData = undefined;\n return;\n }\n\n var initData = this.initData = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"parseInitSegment\"])(initSegment); // Get codec from initSegment or fallback to default\n\n if (!audioCodec) {\n audioCodec = getParsedTrackCodec(initData.audio, _loader_fragment__WEBPACK_IMPORTED_MODULE_3__[\"ElementaryStreamTypes\"].AUDIO);\n }\n\n if (!videoCodec) {\n videoCodec = getParsedTrackCodec(initData.video, _loader_fragment__WEBPACK_IMPORTED_MODULE_3__[\"ElementaryStreamTypes\"].VIDEO);\n }\n\n var tracks = {};\n\n if (initData.audio && initData.video) {\n tracks.audiovideo = {\n container: 'video/mp4',\n codec: audioCodec + ',' + videoCodec,\n initSegment: initSegment,\n id: 'main'\n };\n } else if (initData.audio) {\n tracks.audio = {\n container: 'audio/mp4',\n codec: audioCodec,\n initSegment: initSegment,\n id: 'audio'\n };\n } else if (initData.video) {\n tracks.video = {\n container: 'video/mp4',\n codec: videoCodec,\n initSegment: initSegment,\n id: 'main'\n };\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].warn('[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes.');\n }\n\n this.initTracks = tracks;\n };\n\n _proto.remux = function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset) {\n var _this$initPTS;\n\n var initPTS = this.initPTS,\n lastEndTime = this.lastEndTime;\n var result = {\n audio: undefined,\n video: undefined,\n text: textTrack,\n id3: id3Track,\n initSegment: undefined\n }; // If we haven't yet set a lastEndDTS, or it was reset, set it to the provided timeOffset. We want to use the\n // lastEndDTS over timeOffset whenever possible; during progressive playback, the media source will not update\n // the media duration (which is what timeOffset is provided as) before we need to process the next chunk.\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(lastEndTime)) {\n lastEndTime = this.lastEndTime = timeOffset || 0;\n } // The binary segment data is added to the videoTrack in the mp4demuxer. We don't check to see if the data is only\n // audio or video (or both); adding it to video was an arbitrary choice.\n\n\n var data = videoTrack.samples;\n\n if (!data || !data.length) {\n return result;\n }\n\n var initSegment = {\n initPTS: undefined,\n timescale: 1\n };\n var initData = this.initData;\n\n if (!initData || !initData.length) {\n this.generateInitSegment(data);\n initData = this.initData;\n }\n\n if (!initData || !initData.length) {\n // We can't remux if the initSegment could not be generated\n _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].warn('[passthrough-remuxer.ts]: Failed to generate initSegment.');\n return result;\n }\n\n if (this.emitInitSegment) {\n initSegment.tracks = this.initTracks;\n this.emitInitSegment = false;\n }\n\n var startDTS = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"getStartDTS\"])(initData, data);\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(initPTS)) {\n this.initPTS = initSegment.initPTS = initPTS = startDTS - timeOffset;\n }\n\n var duration = Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"getDuration\"])(data, initData);\n var startTime = audioTrack ? startDTS - initPTS : lastEndTime;\n var endTime = startTime + duration;\n Object(_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__[\"offsetStartDTS\"])(initData, data, initPTS);\n\n if (duration > 0) {\n this.lastEndTime = endTime;\n } else {\n _utils_logger__WEBPACK_IMPORTED_MODULE_4__[\"logger\"].warn('Duration parsed from mp4 should be greater than zero');\n this.resetNextTimestamp();\n }\n\n var hasAudio = !!initData.audio;\n var hasVideo = !!initData.video;\n var type = '';\n\n if (hasAudio) {\n type += 'audio';\n }\n\n if (hasVideo) {\n type += 'video';\n }\n\n var track = {\n data1: data,\n startPTS: startTime,\n startDTS: startTime,\n endPTS: endTime,\n endDTS: endTime,\n type: type,\n hasAudio: hasAudio,\n hasVideo: hasVideo,\n nb: 1,\n dropped: 0\n };\n result.audio = track.type === 'audio' ? track : undefined;\n result.video = track.type !== 'audio' ? track : undefined;\n result.initSegment = initSegment;\n var initPtsNum = (_this$initPTS = this.initPTS) != null ? _this$initPTS : 0;\n result.id3 = Object(_mp4_remuxer__WEBPACK_IMPORTED_MODULE_1__[\"flushTextTrackMetadataCueSamples\"])(id3Track, timeOffset, initPtsNum, initPtsNum);\n\n if (textTrack.samples.length) {\n result.text = Object(_mp4_remuxer__WEBPACK_IMPORTED_MODULE_1__[\"flushTextTrackUserdataCueSamples\"])(textTrack, timeOffset, initPtsNum);\n }\n\n return result;\n };\n\n return PassThroughRemuxer;\n}();\n\nfunction getParsedTrackCodec(track, type) {\n var parsedCodec = track === null || track === void 0 ? void 0 : track.codec;\n\n if (parsedCodec && parsedCodec.length > 4) {\n return parsedCodec;\n } // Since mp4-tools cannot parse full codec string (see 'TODO: Parse codec details'... in mp4-tools)\n // Provide defaults based on codec type\n // This allows for some playback of some fmp4 playlists without CODECS defined in manifest\n\n\n if (parsedCodec === 'hvc1' || parsedCodec === 'hev1') {\n return 'hvc1.1.c.L120.90';\n }\n\n if (parsedCodec === 'av01') {\n return 'av01.0.04M.08';\n }\n\n if (parsedCodec === 'avc1' || type === _loader_fragment__WEBPACK_IMPORTED_MODULE_3__[\"ElementaryStreamTypes\"].VIDEO) {\n return 'avc1.42e01e';\n }\n\n return 'mp4a.40.5';\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (PassThroughRemuxer);\n\n/***/ }),\n\n/***/ \"./src/task-loop.ts\":\n/*!**************************!*\\\n !*** ./src/task-loop.ts ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return TaskLoop; });\n/**\n * Sub-class specialization of EventHandler base class.\n *\n * TaskLoop allows to schedule a task function being called (optionnaly repeatedly) on the main loop,\n * scheduled asynchroneously, avoiding recursive calls in the same tick.\n *\n * The task itself is implemented in `doTick`. It can be requested and called for single execution\n * using the `tick` method.\n *\n * It will be assured that the task execution method (`tick`) only gets called once per main loop \"tick\",\n * no matter how often it gets requested for execution. Execution in further ticks will be scheduled accordingly.\n *\n * If further execution requests have already been scheduled on the next tick, it can be checked with `hasNextTick`,\n * and cancelled with `clearNextTick`.\n *\n * The task can be scheduled as an interval repeatedly with a period as parameter (see `setInterval`, `clearInterval`).\n *\n * Sub-classes need to implement the `doTick` method which will effectively have the task execution routine.\n *\n * Further explanations:\n *\n * The baseclass has a `tick` method that will schedule the doTick call. It may be called synchroneously\n * only for a stack-depth of one. On re-entrant calls, sub-sequent calls are scheduled for next main loop ticks.\n *\n * When the task execution (`tick` method) is called in re-entrant way this is detected and\n * we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further\n * task processing on the next main loop iteration (also known as \"next tick\" in the Node/JS runtime lingo).\n */\nvar TaskLoop = /*#__PURE__*/function () {\n function TaskLoop() {\n this._boundTick = void 0;\n this._tickTimer = null;\n this._tickInterval = null;\n this._tickCallCount = 0;\n this._boundTick = this.tick.bind(this);\n }\n\n var _proto = TaskLoop.prototype;\n\n _proto.destroy = function destroy() {\n this.onHandlerDestroying();\n this.onHandlerDestroyed();\n };\n\n _proto.onHandlerDestroying = function onHandlerDestroying() {\n // clear all timers before unregistering from event bus\n this.clearNextTick();\n this.clearInterval();\n };\n\n _proto.onHandlerDestroyed = function onHandlerDestroyed() {}\n /**\n * @returns {boolean}\n */\n ;\n\n _proto.hasInterval = function hasInterval() {\n return !!this._tickInterval;\n }\n /**\n * @returns {boolean}\n */\n ;\n\n _proto.hasNextTick = function hasNextTick() {\n return !!this._tickTimer;\n }\n /**\n * @param {number} millis Interval time (ms)\n * @returns {boolean} True when interval has been scheduled, false when already scheduled (no effect)\n */\n ;\n\n _proto.setInterval = function setInterval(millis) {\n if (!this._tickInterval) {\n this._tickInterval = self.setInterval(this._boundTick, millis);\n return true;\n }\n\n return false;\n }\n /**\n * @returns {boolean} True when interval was cleared, false when none was set (no effect)\n */\n ;\n\n _proto.clearInterval = function clearInterval() {\n if (this._tickInterval) {\n self.clearInterval(this._tickInterval);\n this._tickInterval = null;\n return true;\n }\n\n return false;\n }\n /**\n * @returns {boolean} True when timeout was cleared, false when none was set (no effect)\n */\n ;\n\n _proto.clearNextTick = function clearNextTick() {\n if (this._tickTimer) {\n self.clearTimeout(this._tickTimer);\n this._tickTimer = null;\n return true;\n }\n\n return false;\n }\n /**\n * Will call the subclass doTick implementation in this main loop tick\n * or in the next one (via setTimeout(,0)) in case it has already been called\n * in this tick (in case this is a re-entrant call).\n */\n ;\n\n _proto.tick = function tick() {\n this._tickCallCount++;\n\n if (this._tickCallCount === 1) {\n this.doTick(); // re-entrant call to tick from previous doTick call stack\n // -> schedule a call on the next main loop iteration to process this task processing request\n\n if (this._tickCallCount > 1) {\n // make sure only one timer exists at any time at max\n this.tickImmediate();\n }\n\n this._tickCallCount = 0;\n }\n };\n\n _proto.tickImmediate = function tickImmediate() {\n this.clearNextTick();\n this._tickTimer = self.setTimeout(this._boundTick, 0);\n }\n /**\n * For subclass to implement task logic\n * @abstract\n */\n ;\n\n _proto.doTick = function doTick() {};\n\n return TaskLoop;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/types/cmcd.ts\":\n/*!***************************!*\\\n !*** ./src/types/cmcd.ts ***!\n \\***************************/\n/*! exports provided: CMCDVersion, CMCDObjectType, CMCDStreamingFormat, CMCDStreamType */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CMCDVersion\", function() { return CMCDVersion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CMCDObjectType\", function() { return CMCDObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CMCDStreamingFormat\", function() { return CMCDStreamingFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CMCDStreamType\", function() { return CMCDStreamType; });\n/**\n * CMCD spec version\n */\nvar CMCDVersion = 1;\n/**\n * CMCD Object Type\n */\n\nvar CMCDObjectType;\n/**\n * CMCD Streaming Format\n */\n\n(function (CMCDObjectType) {\n CMCDObjectType[\"MANIFEST\"] = \"m\";\n CMCDObjectType[\"AUDIO\"] = \"a\";\n CMCDObjectType[\"VIDEO\"] = \"v\";\n CMCDObjectType[\"MUXED\"] = \"av\";\n CMCDObjectType[\"INIT\"] = \"i\";\n CMCDObjectType[\"CAPTION\"] = \"c\";\n CMCDObjectType[\"TIMED_TEXT\"] = \"tt\";\n CMCDObjectType[\"KEY\"] = \"k\";\n CMCDObjectType[\"OTHER\"] = \"o\";\n})(CMCDObjectType || (CMCDObjectType = {}));\n\nvar CMCDStreamingFormat;\n/**\n * CMCD Streaming Type\n */\n\n(function (CMCDStreamingFormat) {\n CMCDStreamingFormat[\"DASH\"] = \"d\";\n CMCDStreamingFormat[\"HLS\"] = \"h\";\n CMCDStreamingFormat[\"SMOOTH\"] = \"s\";\n CMCDStreamingFormat[\"OTHER\"] = \"o\";\n})(CMCDStreamingFormat || (CMCDStreamingFormat = {}));\n\nvar CMCDStreamType;\n/**\n * CMCD Headers\n */\n\n(function (CMCDStreamType) {\n CMCDStreamType[\"VOD\"] = \"v\";\n CMCDStreamType[\"LIVE\"] = \"l\";\n})(CMCDStreamType || (CMCDStreamType = {}));\n\n/***/ }),\n\n/***/ \"./src/types/demuxer.ts\":\n/*!******************************!*\\\n !*** ./src/types/demuxer.ts ***!\n \\******************************/\n/*! exports provided: MetadataSchema */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MetadataSchema\", function() { return MetadataSchema; });\nvar MetadataSchema;\n\n(function (MetadataSchema) {\n MetadataSchema[\"audioId3\"] = \"org.id3\";\n MetadataSchema[\"dateRange\"] = \"com.apple.quicktime.HLS\";\n MetadataSchema[\"emsg\"] = \"https://aomedia.org/emsg/ID3\";\n})(MetadataSchema || (MetadataSchema = {}));\n\n/***/ }),\n\n/***/ \"./src/types/level.ts\":\n/*!****************************!*\\\n !*** ./src/types/level.ts ***!\n \\****************************/\n/*! exports provided: HlsSkip, getSkipValue, HlsUrlParameters, Level */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HlsSkip\", function() { return HlsSkip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSkipValue\", function() { return getSkipValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HlsUrlParameters\", function() { return HlsUrlParameters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Level\", function() { return Level; });\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar HlsSkip;\n\n(function (HlsSkip) {\n HlsSkip[\"No\"] = \"\";\n HlsSkip[\"Yes\"] = \"YES\";\n HlsSkip[\"v2\"] = \"v2\";\n})(HlsSkip || (HlsSkip = {}));\n\nfunction getSkipValue(details, msn) {\n var canSkipUntil = details.canSkipUntil,\n canSkipDateRanges = details.canSkipDateRanges,\n endSN = details.endSN;\n var snChangeGoal = msn !== undefined ? msn - endSN : 0;\n\n if (canSkipUntil && snChangeGoal < canSkipUntil) {\n if (canSkipDateRanges) {\n return HlsSkip.v2;\n }\n\n return HlsSkip.Yes;\n }\n\n return HlsSkip.No;\n}\nvar HlsUrlParameters = /*#__PURE__*/function () {\n function HlsUrlParameters(msn, part, skip) {\n this.msn = void 0;\n this.part = void 0;\n this.skip = void 0;\n this.msn = msn;\n this.part = part;\n this.skip = skip;\n }\n\n var _proto = HlsUrlParameters.prototype;\n\n _proto.addDirectives = function addDirectives(uri) {\n var url = new self.URL(uri);\n\n if (this.msn !== undefined) {\n url.searchParams.set('_HLS_msn', this.msn.toString());\n }\n\n if (this.part !== undefined) {\n url.searchParams.set('_HLS_part', this.part.toString());\n }\n\n if (this.skip) {\n url.searchParams.set('_HLS_skip', this.skip);\n }\n\n return url.toString();\n };\n\n return HlsUrlParameters;\n}();\nvar Level = /*#__PURE__*/function () {\n function Level(data) {\n this.attrs = void 0;\n this.audioCodec = void 0;\n this.bitrate = void 0;\n this.codecSet = void 0;\n this.height = void 0;\n this.id = void 0;\n this.name = void 0;\n this.videoCodec = void 0;\n this.width = void 0;\n this.unknownCodecs = void 0;\n this.audioGroupIds = void 0;\n this.details = void 0;\n this.fragmentError = 0;\n this.loadError = 0;\n this.loaded = void 0;\n this.realBitrate = 0;\n this.textGroupIds = void 0;\n this.url = void 0;\n this._urlId = 0;\n this.url = [data.url];\n this.attrs = data.attrs;\n this.bitrate = data.bitrate;\n\n if (data.details) {\n this.details = data.details;\n }\n\n this.id = data.id || 0;\n this.name = data.name;\n this.width = data.width || 0;\n this.height = data.height || 0;\n this.audioCodec = data.audioCodec;\n this.videoCodec = data.videoCodec;\n this.unknownCodecs = data.unknownCodecs;\n this.codecSet = [data.videoCodec, data.audioCodec].filter(function (c) {\n return c;\n }).join(',').replace(/\\.[^.,]+/g, '');\n }\n\n _createClass(Level, [{\n key: \"maxBitrate\",\n get: function get() {\n return Math.max(this.realBitrate, this.bitrate);\n }\n }, {\n key: \"uri\",\n get: function get() {\n return this.url[this._urlId] || '';\n }\n }, {\n key: \"urlId\",\n get: function get() {\n return this._urlId;\n },\n set: function set(value) {\n var newValue = value % this.url.length;\n\n if (this._urlId !== newValue) {\n this.details = undefined;\n this._urlId = newValue;\n }\n }\n }]);\n\n return Level;\n}();\n\n/***/ }),\n\n/***/ \"./src/types/loader.ts\":\n/*!*****************************!*\\\n !*** ./src/types/loader.ts ***!\n \\*****************************/\n/*! exports provided: PlaylistContextType, PlaylistLevelType */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PlaylistContextType\", function() { return PlaylistContextType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PlaylistLevelType\", function() { return PlaylistLevelType; });\nvar PlaylistContextType;\n\n(function (PlaylistContextType) {\n PlaylistContextType[\"MANIFEST\"] = \"manifest\";\n PlaylistContextType[\"LEVEL\"] = \"level\";\n PlaylistContextType[\"AUDIO_TRACK\"] = \"audioTrack\";\n PlaylistContextType[\"SUBTITLE_TRACK\"] = \"subtitleTrack\";\n})(PlaylistContextType || (PlaylistContextType = {}));\n\nvar PlaylistLevelType;\n\n(function (PlaylistLevelType) {\n PlaylistLevelType[\"MAIN\"] = \"main\";\n PlaylistLevelType[\"AUDIO\"] = \"audio\";\n PlaylistLevelType[\"SUBTITLE\"] = \"subtitle\";\n})(PlaylistLevelType || (PlaylistLevelType = {}));\n\n/***/ }),\n\n/***/ \"./src/types/transmuxer.ts\":\n/*!*********************************!*\\\n !*** ./src/types/transmuxer.ts ***!\n \\*********************************/\n/*! exports provided: ChunkMetadata */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ChunkMetadata\", function() { return ChunkMetadata; });\nvar ChunkMetadata = function ChunkMetadata(level, sn, id, size, part, partial) {\n if (size === void 0) {\n size = 0;\n }\n\n if (part === void 0) {\n part = -1;\n }\n\n if (partial === void 0) {\n partial = false;\n }\n\n this.level = void 0;\n this.sn = void 0;\n this.part = void 0;\n this.id = void 0;\n this.size = void 0;\n this.partial = void 0;\n this.transmuxing = getNewPerformanceTiming();\n this.buffering = {\n audio: getNewPerformanceTiming(),\n video: getNewPerformanceTiming(),\n audiovideo: getNewPerformanceTiming()\n };\n this.level = level;\n this.sn = sn;\n this.id = id;\n this.size = size;\n this.part = part;\n this.partial = partial;\n};\n\nfunction getNewPerformanceTiming() {\n return {\n start: 0,\n executeStart: 0,\n executeEnd: 0,\n end: 0\n };\n}\n\n/***/ }),\n\n/***/ \"./src/utils/attr-list.ts\":\n/*!********************************!*\\\n !*** ./src/utils/attr-list.ts ***!\n \\********************************/\n/*! exports provided: AttrList */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AttrList\", function() { return AttrList; });\nvar DECIMAL_RESOLUTION_REGEX = /^(\\d+)x(\\d+)$/; // eslint-disable-line no-useless-escape\n\nvar ATTR_LIST_REGEX = /\\s*(.+?)\\s*=((?:\\\".*?\\\")|.*?)(?:,|$)/g; // eslint-disable-line no-useless-escape\n// adapted from https://github.com/kanongil/node-m3u8parse/blob/master/attrlist.js\n\nvar AttrList = /*#__PURE__*/function () {\n function AttrList(attrs) {\n if (typeof attrs === 'string') {\n attrs = AttrList.parseAttrList(attrs);\n }\n\n for (var attr in attrs) {\n if (attrs.hasOwnProperty(attr)) {\n this[attr] = attrs[attr];\n }\n }\n }\n\n var _proto = AttrList.prototype;\n\n _proto.decimalInteger = function decimalInteger(attrName) {\n var intValue = parseInt(this[attrName], 10);\n\n if (intValue > Number.MAX_SAFE_INTEGER) {\n return Infinity;\n }\n\n return intValue;\n };\n\n _proto.hexadecimalInteger = function hexadecimalInteger(attrName) {\n if (this[attrName]) {\n var stringValue = (this[attrName] || '0x').slice(2);\n stringValue = (stringValue.length & 1 ? '0' : '') + stringValue;\n var value = new Uint8Array(stringValue.length / 2);\n\n for (var i = 0; i < stringValue.length / 2; i++) {\n value[i] = parseInt(stringValue.slice(i * 2, i * 2 + 2), 16);\n }\n\n return value;\n } else {\n return null;\n }\n };\n\n _proto.hexadecimalIntegerAsNumber = function hexadecimalIntegerAsNumber(attrName) {\n var intValue = parseInt(this[attrName], 16);\n\n if (intValue > Number.MAX_SAFE_INTEGER) {\n return Infinity;\n }\n\n return intValue;\n };\n\n _proto.decimalFloatingPoint = function decimalFloatingPoint(attrName) {\n return parseFloat(this[attrName]);\n };\n\n _proto.optionalFloat = function optionalFloat(attrName, defaultValue) {\n var value = this[attrName];\n return value ? parseFloat(value) : defaultValue;\n };\n\n _proto.enumeratedString = function enumeratedString(attrName) {\n return this[attrName];\n };\n\n _proto.bool = function bool(attrName) {\n return this[attrName] === 'YES';\n };\n\n _proto.decimalResolution = function decimalResolution(attrName) {\n var res = DECIMAL_RESOLUTION_REGEX.exec(this[attrName]);\n\n if (res === null) {\n return undefined;\n }\n\n return {\n width: parseInt(res[1], 10),\n height: parseInt(res[2], 10)\n };\n };\n\n AttrList.parseAttrList = function parseAttrList(input) {\n var match;\n var attrs = {};\n var quote = '\"';\n ATTR_LIST_REGEX.lastIndex = 0;\n\n while ((match = ATTR_LIST_REGEX.exec(input)) !== null) {\n var value = match[2];\n\n if (value.indexOf(quote) === 0 && value.lastIndexOf(quote) === value.length - 1) {\n value = value.slice(1, -1);\n }\n\n attrs[match[1]] = value;\n }\n\n return attrs;\n };\n\n return AttrList;\n}();\n\n/***/ }),\n\n/***/ \"./src/utils/binary-search.ts\":\n/*!************************************!*\\\n !*** ./src/utils/binary-search.ts ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar BinarySearch = {\n /**\n * Searches for an item in an array which matches a certain condition.\n * This requires the condition to only match one item in the array,\n * and for the array to be ordered.\n *\n * @param {Array<T>} list The array to search.\n * @param {BinarySearchComparison<T>} comparisonFn\n * Called and provided a candidate item as the first argument.\n * Should return:\n * > -1 if the item should be located at a lower index than the provided item.\n * > 1 if the item should be located at a higher index than the provided item.\n * > 0 if the item is the item you're looking for.\n *\n * @return {T | null} The object if it is found or null otherwise.\n */\n search: function search(list, comparisonFn) {\n var minIndex = 0;\n var maxIndex = list.length - 1;\n var currentIndex = null;\n var currentElement = null;\n\n while (minIndex <= maxIndex) {\n currentIndex = (minIndex + maxIndex) / 2 | 0;\n currentElement = list[currentIndex];\n var comparisonResult = comparisonFn(currentElement);\n\n if (comparisonResult > 0) {\n minIndex = currentIndex + 1;\n } else if (comparisonResult < 0) {\n maxIndex = currentIndex - 1;\n } else {\n return currentElement;\n }\n }\n\n return null;\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (BinarySearch);\n\n/***/ }),\n\n/***/ \"./src/utils/buffer-helper.ts\":\n/*!************************************!*\\\n !*** ./src/utils/buffer-helper.ts ***!\n \\************************************/\n/*! exports provided: BufferHelper */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BufferHelper\", function() { return BufferHelper; });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logger */ \"./src/utils/logger.ts\");\n/**\n * @module BufferHelper\n *\n * Providing methods dealing with buffer length retrieval for example.\n *\n * In general, a helper around HTML5 MediaElement TimeRanges gathered from `buffered` property.\n *\n * Also @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/buffered\n */\n\nvar noopBuffered = {\n length: 0,\n start: function start() {\n return 0;\n },\n end: function end() {\n return 0;\n }\n};\nvar BufferHelper = /*#__PURE__*/function () {\n function BufferHelper() {}\n\n /**\n * Return true if `media`'s buffered include `position`\n * @param {Bufferable} media\n * @param {number} position\n * @returns {boolean}\n */\n BufferHelper.isBuffered = function isBuffered(media, position) {\n try {\n if (media) {\n var buffered = BufferHelper.getBuffered(media);\n\n for (var i = 0; i < buffered.length; i++) {\n if (position >= buffered.start(i) && position <= buffered.end(i)) {\n return true;\n }\n }\n }\n } catch (error) {// this is to catch\n // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n // This SourceBuffer has been removed from the parent media source\n }\n\n return false;\n };\n\n BufferHelper.bufferInfo = function bufferInfo(media, pos, maxHoleDuration) {\n try {\n if (media) {\n var vbuffered = BufferHelper.getBuffered(media);\n var buffered = [];\n var i;\n\n for (i = 0; i < vbuffered.length; i++) {\n buffered.push({\n start: vbuffered.start(i),\n end: vbuffered.end(i)\n });\n }\n\n return this.bufferedInfo(buffered, pos, maxHoleDuration);\n }\n } catch (error) {// this is to catch\n // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n // This SourceBuffer has been removed from the parent media source\n }\n\n return {\n len: 0,\n start: pos,\n end: pos,\n nextStart: undefined\n };\n };\n\n BufferHelper.bufferedInfo = function bufferedInfo(buffered, pos, maxHoleDuration) {\n pos = Math.max(0, pos); // sort on buffer.start/smaller end (IE does not always return sorted buffered range)\n\n buffered.sort(function (a, b) {\n var diff = a.start - b.start;\n\n if (diff) {\n return diff;\n } else {\n return b.end - a.end;\n }\n });\n var buffered2 = [];\n\n if (maxHoleDuration) {\n // there might be some small holes between buffer time range\n // consider that holes smaller than maxHoleDuration are irrelevant and build another\n // buffer time range representations that discards those holes\n for (var i = 0; i < buffered.length; i++) {\n var buf2len = buffered2.length;\n\n if (buf2len) {\n var buf2end = buffered2[buf2len - 1].end; // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative)\n\n if (buffered[i].start - buf2end < maxHoleDuration) {\n // merge overlapping time ranges\n // update lastRange.end only if smaller than item.end\n // e.g. [ 1, 15] with [ 2,8] => [ 1,15] (no need to modify lastRange.end)\n // whereas [ 1, 8] with [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15])\n if (buffered[i].end > buf2end) {\n buffered2[buf2len - 1].end = buffered[i].end;\n }\n } else {\n // big hole\n buffered2.push(buffered[i]);\n }\n } else {\n // first value\n buffered2.push(buffered[i]);\n }\n }\n } else {\n buffered2 = buffered;\n }\n\n var bufferLen = 0; // bufferStartNext can possibly be undefined based on the conditional logic below\n\n var bufferStartNext; // bufferStart and bufferEnd are buffer boundaries around current video position\n\n var bufferStart = pos;\n var bufferEnd = pos;\n\n for (var _i = 0; _i < buffered2.length; _i++) {\n var start = buffered2[_i].start;\n var end = buffered2[_i].end; // logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i));\n\n if (pos + maxHoleDuration >= start && pos < end) {\n // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length\n bufferStart = start;\n bufferEnd = end;\n bufferLen = bufferEnd - pos;\n } else if (pos + maxHoleDuration < start) {\n bufferStartNext = start;\n break;\n }\n }\n\n return {\n len: bufferLen,\n start: bufferStart || 0,\n end: bufferEnd || 0,\n nextStart: bufferStartNext\n };\n }\n /**\n * Safe method to get buffered property.\n * SourceBuffer.buffered may throw if SourceBuffer is removed from it's MediaSource\n */\n ;\n\n BufferHelper.getBuffered = function getBuffered(media) {\n try {\n return media.buffered;\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].log('failed to get media.buffered', e);\n return noopBuffered;\n }\n };\n\n return BufferHelper;\n}();\n\n/***/ }),\n\n/***/ \"./src/utils/cea-608-parser.ts\":\n/*!*************************************!*\\\n !*** ./src/utils/cea-608-parser.ts ***!\n \\*************************************/\n/*! exports provided: Row, CaptionScreen, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Row\", function() { return Row; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CaptionScreen\", function() { return CaptionScreen; });\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n\n/**\n *\n * This code was ported from the dash.js project at:\n * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Exceptions from regular ASCII. CodePoints are mapped to UTF-16 codes\n */\n\nvar specialCea608CharsCodes = {\n 0x2a: 0xe1,\n // lowercase a, acute accent\n 0x5c: 0xe9,\n // lowercase e, acute accent\n 0x5e: 0xed,\n // lowercase i, acute accent\n 0x5f: 0xf3,\n // lowercase o, acute accent\n 0x60: 0xfa,\n // lowercase u, acute accent\n 0x7b: 0xe7,\n // lowercase c with cedilla\n 0x7c: 0xf7,\n // division symbol\n 0x7d: 0xd1,\n // uppercase N tilde\n 0x7e: 0xf1,\n // lowercase n tilde\n 0x7f: 0x2588,\n // Full block\n // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F\n // THIS MEANS THAT \\x50 MUST BE ADDED TO THE VALUES\n 0x80: 0xae,\n // Registered symbol (R)\n 0x81: 0xb0,\n // degree sign\n 0x82: 0xbd,\n // 1/2 symbol\n 0x83: 0xbf,\n // Inverted (open) question mark\n 0x84: 0x2122,\n // Trademark symbol (TM)\n 0x85: 0xa2,\n // Cents symbol\n 0x86: 0xa3,\n // Pounds sterling\n 0x87: 0x266a,\n // Music 8'th note\n 0x88: 0xe0,\n // lowercase a, grave accent\n 0x89: 0x20,\n // transparent space (regular)\n 0x8a: 0xe8,\n // lowercase e, grave accent\n 0x8b: 0xe2,\n // lowercase a, circumflex accent\n 0x8c: 0xea,\n // lowercase e, circumflex accent\n 0x8d: 0xee,\n // lowercase i, circumflex accent\n 0x8e: 0xf4,\n // lowercase o, circumflex accent\n 0x8f: 0xfb,\n // lowercase u, circumflex accent\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F\n 0x90: 0xc1,\n // capital letter A with acute\n 0x91: 0xc9,\n // capital letter E with acute\n 0x92: 0xd3,\n // capital letter O with acute\n 0x93: 0xda,\n // capital letter U with acute\n 0x94: 0xdc,\n // capital letter U with diaresis\n 0x95: 0xfc,\n // lowercase letter U with diaeresis\n 0x96: 0x2018,\n // opening single quote\n 0x97: 0xa1,\n // inverted exclamation mark\n 0x98: 0x2a,\n // asterisk\n 0x99: 0x2019,\n // closing single quote\n 0x9a: 0x2501,\n // box drawings heavy horizontal\n 0x9b: 0xa9,\n // copyright sign\n 0x9c: 0x2120,\n // Service mark\n 0x9d: 0x2022,\n // (round) bullet\n 0x9e: 0x201c,\n // Left double quotation mark\n 0x9f: 0x201d,\n // Right double quotation mark\n 0xa0: 0xc0,\n // uppercase A, grave accent\n 0xa1: 0xc2,\n // uppercase A, circumflex\n 0xa2: 0xc7,\n // uppercase C with cedilla\n 0xa3: 0xc8,\n // uppercase E, grave accent\n 0xa4: 0xca,\n // uppercase E, circumflex\n 0xa5: 0xcb,\n // capital letter E with diaresis\n 0xa6: 0xeb,\n // lowercase letter e with diaresis\n 0xa7: 0xce,\n // uppercase I, circumflex\n 0xa8: 0xcf,\n // uppercase I, with diaresis\n 0xa9: 0xef,\n // lowercase i, with diaresis\n 0xaa: 0xd4,\n // uppercase O, circumflex\n 0xab: 0xd9,\n // uppercase U, grave accent\n 0xac: 0xf9,\n // lowercase u, grave accent\n 0xad: 0xdb,\n // uppercase U, circumflex\n 0xae: 0xab,\n // left-pointing double angle quotation mark\n 0xaf: 0xbb,\n // right-pointing double angle quotation mark\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F\n 0xb0: 0xc3,\n // Uppercase A, tilde\n 0xb1: 0xe3,\n // Lowercase a, tilde\n 0xb2: 0xcd,\n // Uppercase I, acute accent\n 0xb3: 0xcc,\n // Uppercase I, grave accent\n 0xb4: 0xec,\n // Lowercase i, grave accent\n 0xb5: 0xd2,\n // Uppercase O, grave accent\n 0xb6: 0xf2,\n // Lowercase o, grave accent\n 0xb7: 0xd5,\n // Uppercase O, tilde\n 0xb8: 0xf5,\n // Lowercase o, tilde\n 0xb9: 0x7b,\n // Open curly brace\n 0xba: 0x7d,\n // Closing curly brace\n 0xbb: 0x5c,\n // Backslash\n 0xbc: 0x5e,\n // Caret\n 0xbd: 0x5f,\n // Underscore\n 0xbe: 0x7c,\n // Pipe (vertical line)\n 0xbf: 0x223c,\n // Tilde operator\n 0xc0: 0xc4,\n // Uppercase A, umlaut\n 0xc1: 0xe4,\n // Lowercase A, umlaut\n 0xc2: 0xd6,\n // Uppercase O, umlaut\n 0xc3: 0xf6,\n // Lowercase o, umlaut\n 0xc4: 0xdf,\n // Esszett (sharp S)\n 0xc5: 0xa5,\n // Yen symbol\n 0xc6: 0xa4,\n // Generic currency sign\n 0xc7: 0x2503,\n // Box drawings heavy vertical\n 0xc8: 0xc5,\n // Uppercase A, ring\n 0xc9: 0xe5,\n // Lowercase A, ring\n 0xca: 0xd8,\n // Uppercase O, stroke\n 0xcb: 0xf8,\n // Lowercase o, strok\n 0xcc: 0x250f,\n // Box drawings heavy down and right\n 0xcd: 0x2513,\n // Box drawings heavy down and left\n 0xce: 0x2517,\n // Box drawings heavy up and right\n 0xcf: 0x251b // Box drawings heavy up and left\n\n};\n/**\n * Utils\n */\n\nvar getCharForByte = function getCharForByte(_byte) {\n var charCode = _byte;\n\n if (specialCea608CharsCodes.hasOwnProperty(_byte)) {\n charCode = specialCea608CharsCodes[_byte];\n }\n\n return String.fromCharCode(charCode);\n};\n\nvar NR_ROWS = 15;\nvar NR_COLS = 100; // Tables to look up row from PAC data\n\nvar rowsLowCh1 = {\n 0x11: 1,\n 0x12: 3,\n 0x15: 5,\n 0x16: 7,\n 0x17: 9,\n 0x10: 11,\n 0x13: 12,\n 0x14: 14\n};\nvar rowsHighCh1 = {\n 0x11: 2,\n 0x12: 4,\n 0x15: 6,\n 0x16: 8,\n 0x17: 10,\n 0x13: 13,\n 0x14: 15\n};\nvar rowsLowCh2 = {\n 0x19: 1,\n 0x1a: 3,\n 0x1d: 5,\n 0x1e: 7,\n 0x1f: 9,\n 0x18: 11,\n 0x1b: 12,\n 0x1c: 14\n};\nvar rowsHighCh2 = {\n 0x19: 2,\n 0x1a: 4,\n 0x1d: 6,\n 0x1e: 8,\n 0x1f: 10,\n 0x1b: 13,\n 0x1c: 15\n};\nvar backgroundColors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'black', 'transparent'];\nvar VerboseLevel;\n\n(function (VerboseLevel) {\n VerboseLevel[VerboseLevel[\"ERROR\"] = 0] = \"ERROR\";\n VerboseLevel[VerboseLevel[\"TEXT\"] = 1] = \"TEXT\";\n VerboseLevel[VerboseLevel[\"WARNING\"] = 2] = \"WARNING\";\n VerboseLevel[VerboseLevel[\"INFO\"] = 2] = \"INFO\";\n VerboseLevel[VerboseLevel[\"DEBUG\"] = 3] = \"DEBUG\";\n VerboseLevel[VerboseLevel[\"DATA\"] = 3] = \"DATA\";\n})(VerboseLevel || (VerboseLevel = {}));\n\nvar CaptionsLogger = /*#__PURE__*/function () {\n function CaptionsLogger() {\n this.time = null;\n this.verboseLevel = VerboseLevel.ERROR;\n }\n\n var _proto = CaptionsLogger.prototype;\n\n _proto.log = function log(severity, msg) {\n if (this.verboseLevel >= severity) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].log(this.time + \" [\" + severity + \"] \" + msg);\n }\n };\n\n return CaptionsLogger;\n}();\n\nvar numArrayToHexArray = function numArrayToHexArray(numArray) {\n var hexArray = [];\n\n for (var j = 0; j < numArray.length; j++) {\n hexArray.push(numArray[j].toString(16));\n }\n\n return hexArray;\n};\n\nvar PenState = /*#__PURE__*/function () {\n function PenState(foreground, underline, italics, background, flash) {\n this.foreground = void 0;\n this.underline = void 0;\n this.italics = void 0;\n this.background = void 0;\n this.flash = void 0;\n this.foreground = foreground || 'white';\n this.underline = underline || false;\n this.italics = italics || false;\n this.background = background || 'black';\n this.flash = flash || false;\n }\n\n var _proto2 = PenState.prototype;\n\n _proto2.reset = function reset() {\n this.foreground = 'white';\n this.underline = false;\n this.italics = false;\n this.background = 'black';\n this.flash = false;\n };\n\n _proto2.setStyles = function setStyles(styles) {\n var attribs = ['foreground', 'underline', 'italics', 'background', 'flash'];\n\n for (var i = 0; i < attribs.length; i++) {\n var style = attribs[i];\n\n if (styles.hasOwnProperty(style)) {\n this[style] = styles[style];\n }\n }\n };\n\n _proto2.isDefault = function isDefault() {\n return this.foreground === 'white' && !this.underline && !this.italics && this.background === 'black' && !this.flash;\n };\n\n _proto2.equals = function equals(other) {\n return this.foreground === other.foreground && this.underline === other.underline && this.italics === other.italics && this.background === other.background && this.flash === other.flash;\n };\n\n _proto2.copy = function copy(newPenState) {\n this.foreground = newPenState.foreground;\n this.underline = newPenState.underline;\n this.italics = newPenState.italics;\n this.background = newPenState.background;\n this.flash = newPenState.flash;\n };\n\n _proto2.toString = function toString() {\n return 'color=' + this.foreground + ', underline=' + this.underline + ', italics=' + this.italics + ', background=' + this.background + ', flash=' + this.flash;\n };\n\n return PenState;\n}();\n/**\n * Unicode character with styling and background.\n * @constructor\n */\n\n\nvar StyledUnicodeChar = /*#__PURE__*/function () {\n function StyledUnicodeChar(uchar, foreground, underline, italics, background, flash) {\n this.uchar = void 0;\n this.penState = void 0;\n this.uchar = uchar || ' '; // unicode character\n\n this.penState = new PenState(foreground, underline, italics, background, flash);\n }\n\n var _proto3 = StyledUnicodeChar.prototype;\n\n _proto3.reset = function reset() {\n this.uchar = ' ';\n this.penState.reset();\n };\n\n _proto3.setChar = function setChar(uchar, newPenState) {\n this.uchar = uchar;\n this.penState.copy(newPenState);\n };\n\n _proto3.setPenState = function setPenState(newPenState) {\n this.penState.copy(newPenState);\n };\n\n _proto3.equals = function equals(other) {\n return this.uchar === other.uchar && this.penState.equals(other.penState);\n };\n\n _proto3.copy = function copy(newChar) {\n this.uchar = newChar.uchar;\n this.penState.copy(newChar.penState);\n };\n\n _proto3.isEmpty = function isEmpty() {\n return this.uchar === ' ' && this.penState.isDefault();\n };\n\n return StyledUnicodeChar;\n}();\n/**\n * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar.\n * @constructor\n */\n\n\nvar Row = /*#__PURE__*/function () {\n function Row(logger) {\n this.chars = void 0;\n this.pos = void 0;\n this.currPenState = void 0;\n this.cueStartTime = void 0;\n this.logger = void 0;\n this.chars = [];\n\n for (var i = 0; i < NR_COLS; i++) {\n this.chars.push(new StyledUnicodeChar());\n }\n\n this.logger = logger;\n this.pos = 0;\n this.currPenState = new PenState();\n }\n\n var _proto4 = Row.prototype;\n\n _proto4.equals = function equals(other) {\n var equal = true;\n\n for (var i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].equals(other.chars[i])) {\n equal = false;\n break;\n }\n }\n\n return equal;\n };\n\n _proto4.copy = function copy(other) {\n for (var i = 0; i < NR_COLS; i++) {\n this.chars[i].copy(other.chars[i]);\n }\n };\n\n _proto4.isEmpty = function isEmpty() {\n var empty = true;\n\n for (var i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n\n return empty;\n }\n /**\n * Set the cursor to a valid column.\n */\n ;\n\n _proto4.setCursor = function setCursor(absPos) {\n if (this.pos !== absPos) {\n this.pos = absPos;\n }\n\n if (this.pos < 0) {\n this.logger.log(VerboseLevel.DEBUG, 'Negative cursor position ' + this.pos);\n this.pos = 0;\n } else if (this.pos > NR_COLS) {\n this.logger.log(VerboseLevel.DEBUG, 'Too large cursor position ' + this.pos);\n this.pos = NR_COLS;\n }\n }\n /**\n * Move the cursor relative to current position.\n */\n ;\n\n _proto4.moveCursor = function moveCursor(relPos) {\n var newPos = this.pos + relPos;\n\n if (relPos > 1) {\n for (var i = this.pos + 1; i < newPos + 1; i++) {\n this.chars[i].setPenState(this.currPenState);\n }\n }\n\n this.setCursor(newPos);\n }\n /**\n * Backspace, move one step back and clear character.\n */\n ;\n\n _proto4.backSpace = function backSpace() {\n this.moveCursor(-1);\n this.chars[this.pos].setChar(' ', this.currPenState);\n };\n\n _proto4.insertChar = function insertChar(_byte2) {\n if (_byte2 >= 0x90) {\n // Extended char\n this.backSpace();\n }\n\n var _char = getCharForByte(_byte2);\n\n if (this.pos >= NR_COLS) {\n this.logger.log(VerboseLevel.ERROR, 'Cannot insert ' + _byte2.toString(16) + ' (' + _char + ') at position ' + this.pos + '. Skipping it!');\n return;\n }\n\n this.chars[this.pos].setChar(_char, this.currPenState);\n this.moveCursor(1);\n };\n\n _proto4.clearFromPos = function clearFromPos(startPos) {\n var i;\n\n for (i = startPos; i < NR_COLS; i++) {\n this.chars[i].reset();\n }\n };\n\n _proto4.clear = function clear() {\n this.clearFromPos(0);\n this.pos = 0;\n this.currPenState.reset();\n };\n\n _proto4.clearToEndOfRow = function clearToEndOfRow() {\n this.clearFromPos(this.pos);\n };\n\n _proto4.getTextString = function getTextString() {\n var chars = [];\n var empty = true;\n\n for (var i = 0; i < NR_COLS; i++) {\n var _char2 = this.chars[i].uchar;\n\n if (_char2 !== ' ') {\n empty = false;\n }\n\n chars.push(_char2);\n }\n\n if (empty) {\n return '';\n } else {\n return chars.join('');\n }\n };\n\n _proto4.setPenStyles = function setPenStyles(styles) {\n this.currPenState.setStyles(styles);\n var currChar = this.chars[this.pos];\n currChar.setPenState(this.currPenState);\n };\n\n return Row;\n}();\n/**\n * Keep a CEA-608 screen of 32x15 styled characters\n * @constructor\n */\n\nvar CaptionScreen = /*#__PURE__*/function () {\n function CaptionScreen(logger) {\n this.rows = void 0;\n this.currRow = void 0;\n this.nrRollUpRows = void 0;\n this.lastOutputScreen = void 0;\n this.logger = void 0;\n this.rows = [];\n\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows.push(new Row(logger));\n } // Note that we use zero-based numbering (0-14)\n\n\n this.logger = logger;\n this.currRow = NR_ROWS - 1;\n this.nrRollUpRows = null;\n this.lastOutputScreen = null;\n this.reset();\n }\n\n var _proto5 = CaptionScreen.prototype;\n\n _proto5.reset = function reset() {\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n }\n\n this.currRow = NR_ROWS - 1;\n };\n\n _proto5.equals = function equals(other) {\n var equal = true;\n\n for (var i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].equals(other.rows[i])) {\n equal = false;\n break;\n }\n }\n\n return equal;\n };\n\n _proto5.copy = function copy(other) {\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].copy(other.rows[i]);\n }\n };\n\n _proto5.isEmpty = function isEmpty() {\n var empty = true;\n\n for (var i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n\n return empty;\n };\n\n _proto5.backSpace = function backSpace() {\n var row = this.rows[this.currRow];\n row.backSpace();\n };\n\n _proto5.clearToEndOfRow = function clearToEndOfRow() {\n var row = this.rows[this.currRow];\n row.clearToEndOfRow();\n }\n /**\n * Insert a character (without styling) in the current row.\n */\n ;\n\n _proto5.insertChar = function insertChar(_char3) {\n var row = this.rows[this.currRow];\n row.insertChar(_char3);\n };\n\n _proto5.setPen = function setPen(styles) {\n var row = this.rows[this.currRow];\n row.setPenStyles(styles);\n };\n\n _proto5.moveCursor = function moveCursor(relPos) {\n var row = this.rows[this.currRow];\n row.moveCursor(relPos);\n };\n\n _proto5.setCursor = function setCursor(absPos) {\n this.logger.log(VerboseLevel.INFO, 'setCursor: ' + absPos);\n var row = this.rows[this.currRow];\n row.setCursor(absPos);\n };\n\n _proto5.setPAC = function setPAC(pacData) {\n this.logger.log(VerboseLevel.INFO, 'pacData = ' + JSON.stringify(pacData));\n var newRow = pacData.row - 1;\n\n if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) {\n newRow = this.nrRollUpRows - 1;\n } // Make sure this only affects Roll-up Captions by checking this.nrRollUpRows\n\n\n if (this.nrRollUpRows && this.currRow !== newRow) {\n // clear all rows first\n for (var i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n } // Copy this.nrRollUpRows rows from lastOutputScreen and place it in the newRow location\n // topRowIndex - the start of rows to copy (inclusive index)\n\n\n var topRowIndex = this.currRow + 1 - this.nrRollUpRows; // We only copy if the last position was already shown.\n // We use the cueStartTime value to check this.\n\n var lastOutputScreen = this.lastOutputScreen;\n\n if (lastOutputScreen) {\n var prevLineTime = lastOutputScreen.rows[topRowIndex].cueStartTime;\n var time = this.logger.time;\n\n if (prevLineTime && time !== null && prevLineTime < time) {\n for (var _i = 0; _i < this.nrRollUpRows; _i++) {\n this.rows[newRow - this.nrRollUpRows + _i + 1].copy(lastOutputScreen.rows[topRowIndex + _i]);\n }\n }\n }\n }\n\n this.currRow = newRow;\n var row = this.rows[this.currRow];\n\n if (pacData.indent !== null) {\n var indent = pacData.indent;\n var prevPos = Math.max(indent - 1, 0);\n row.setCursor(pacData.indent);\n pacData.color = row.chars[prevPos].penState.foreground;\n }\n\n var styles = {\n foreground: pacData.color,\n underline: pacData.underline,\n italics: pacData.italics,\n background: 'black',\n flash: false\n };\n this.setPen(styles);\n }\n /**\n * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).\n */\n ;\n\n _proto5.setBkgData = function setBkgData(bkgData) {\n this.logger.log(VerboseLevel.INFO, 'bkgData = ' + JSON.stringify(bkgData));\n this.backSpace();\n this.setPen(bkgData);\n this.insertChar(0x20); // Space\n };\n\n _proto5.setRollUpRows = function setRollUpRows(nrRows) {\n this.nrRollUpRows = nrRows;\n };\n\n _proto5.rollUp = function rollUp() {\n if (this.nrRollUpRows === null) {\n this.logger.log(VerboseLevel.DEBUG, 'roll_up but nrRollUpRows not set yet');\n return; // Not properly setup\n }\n\n this.logger.log(VerboseLevel.TEXT, this.getDisplayText());\n var topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n var topRow = this.rows.splice(topRowIndex, 1)[0];\n topRow.clear();\n this.rows.splice(this.currRow, 0, topRow);\n this.logger.log(VerboseLevel.INFO, 'Rolling up'); // this.logger.log(VerboseLevel.TEXT, this.get_display_text())\n }\n /**\n * Get all non-empty rows with as unicode text.\n */\n ;\n\n _proto5.getDisplayText = function getDisplayText(asOneRow) {\n asOneRow = asOneRow || false;\n var displayText = [];\n var text = '';\n var rowNr = -1;\n\n for (var i = 0; i < NR_ROWS; i++) {\n var rowText = this.rows[i].getTextString();\n\n if (rowText) {\n rowNr = i + 1;\n\n if (asOneRow) {\n displayText.push('Row ' + rowNr + \": '\" + rowText + \"'\");\n } else {\n displayText.push(rowText.trim());\n }\n }\n }\n\n if (displayText.length > 0) {\n if (asOneRow) {\n text = '[' + displayText.join(' | ') + ']';\n } else {\n text = displayText.join('\\n');\n }\n }\n\n return text;\n };\n\n _proto5.getTextAndFormat = function getTextAndFormat() {\n return this.rows;\n };\n\n return CaptionScreen;\n}(); // var modes = ['MODE_ROLL-UP', 'MODE_POP-ON', 'MODE_PAINT-ON', 'MODE_TEXT'];\n\nvar Cea608Channel = /*#__PURE__*/function () {\n function Cea608Channel(channelNumber, outputFilter, logger) {\n this.chNr = void 0;\n this.outputFilter = void 0;\n this.mode = void 0;\n this.verbose = void 0;\n this.displayedMemory = void 0;\n this.nonDisplayedMemory = void 0;\n this.lastOutputScreen = void 0;\n this.currRollUpRow = void 0;\n this.writeScreen = void 0;\n this.cueStartTime = void 0;\n this.logger = void 0;\n this.chNr = channelNumber;\n this.outputFilter = outputFilter;\n this.mode = null;\n this.verbose = 0;\n this.displayedMemory = new CaptionScreen(logger);\n this.nonDisplayedMemory = new CaptionScreen(logger);\n this.lastOutputScreen = new CaptionScreen(logger);\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null; // Keeps track of where a cue started.\n\n this.logger = logger;\n }\n\n var _proto6 = Cea608Channel.prototype;\n\n _proto6.reset = function reset() {\n this.mode = null;\n this.displayedMemory.reset();\n this.nonDisplayedMemory.reset();\n this.lastOutputScreen.reset();\n this.outputFilter.reset();\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null;\n };\n\n _proto6.getHandler = function getHandler() {\n return this.outputFilter;\n };\n\n _proto6.setHandler = function setHandler(newHandler) {\n this.outputFilter = newHandler;\n };\n\n _proto6.setPAC = function setPAC(pacData) {\n this.writeScreen.setPAC(pacData);\n };\n\n _proto6.setBkgData = function setBkgData(bkgData) {\n this.writeScreen.setBkgData(bkgData);\n };\n\n _proto6.setMode = function setMode(newMode) {\n if (newMode === this.mode) {\n return;\n }\n\n this.mode = newMode;\n this.logger.log(VerboseLevel.INFO, 'MODE=' + newMode);\n\n if (this.mode === 'MODE_POP-ON') {\n this.writeScreen = this.nonDisplayedMemory;\n } else {\n this.writeScreen = this.displayedMemory;\n this.writeScreen.reset();\n }\n\n if (this.mode !== 'MODE_ROLL-UP') {\n this.displayedMemory.nrRollUpRows = null;\n this.nonDisplayedMemory.nrRollUpRows = null;\n }\n\n this.mode = newMode;\n };\n\n _proto6.insertChars = function insertChars(chars) {\n for (var i = 0; i < chars.length; i++) {\n this.writeScreen.insertChar(chars[i]);\n }\n\n var screen = this.writeScreen === this.displayedMemory ? 'DISP' : 'NON_DISP';\n this.logger.log(VerboseLevel.INFO, screen + ': ' + this.writeScreen.getDisplayText(true));\n\n if (this.mode === 'MODE_PAINT-ON' || this.mode === 'MODE_ROLL-UP') {\n this.logger.log(VerboseLevel.TEXT, 'DISPLAYED: ' + this.displayedMemory.getDisplayText(true));\n this.outputDataUpdate();\n }\n };\n\n _proto6.ccRCL = function ccRCL() {\n // Resume Caption Loading (switch mode to Pop On)\n this.logger.log(VerboseLevel.INFO, 'RCL - Resume Caption Loading');\n this.setMode('MODE_POP-ON');\n };\n\n _proto6.ccBS = function ccBS() {\n // BackSpace\n this.logger.log(VerboseLevel.INFO, 'BS - BackSpace');\n\n if (this.mode === 'MODE_TEXT') {\n return;\n }\n\n this.writeScreen.backSpace();\n\n if (this.writeScreen === this.displayedMemory) {\n this.outputDataUpdate();\n }\n };\n\n _proto6.ccAOF = function ccAOF() {// Reserved (formerly Alarm Off)\n };\n\n _proto6.ccAON = function ccAON() {// Reserved (formerly Alarm On)\n };\n\n _proto6.ccDER = function ccDER() {\n // Delete to End of Row\n this.logger.log(VerboseLevel.INFO, 'DER- Delete to End of Row');\n this.writeScreen.clearToEndOfRow();\n this.outputDataUpdate();\n };\n\n _proto6.ccRU = function ccRU(nrRows) {\n // Roll-Up Captions-2,3,or 4 Rows\n this.logger.log(VerboseLevel.INFO, 'RU(' + nrRows + ') - Roll Up');\n this.writeScreen = this.displayedMemory;\n this.setMode('MODE_ROLL-UP');\n this.writeScreen.setRollUpRows(nrRows);\n };\n\n _proto6.ccFON = function ccFON() {\n // Flash On\n this.logger.log(VerboseLevel.INFO, 'FON - Flash On');\n this.writeScreen.setPen({\n flash: true\n });\n };\n\n _proto6.ccRDC = function ccRDC() {\n // Resume Direct Captioning (switch mode to PaintOn)\n this.logger.log(VerboseLevel.INFO, 'RDC - Resume Direct Captioning');\n this.setMode('MODE_PAINT-ON');\n };\n\n _proto6.ccTR = function ccTR() {\n // Text Restart in text mode (not supported, however)\n this.logger.log(VerboseLevel.INFO, 'TR');\n this.setMode('MODE_TEXT');\n };\n\n _proto6.ccRTD = function ccRTD() {\n // Resume Text Display in Text mode (not supported, however)\n this.logger.log(VerboseLevel.INFO, 'RTD');\n this.setMode('MODE_TEXT');\n };\n\n _proto6.ccEDM = function ccEDM() {\n // Erase Displayed Memory\n this.logger.log(VerboseLevel.INFO, 'EDM - Erase Displayed Memory');\n this.displayedMemory.reset();\n this.outputDataUpdate(true);\n };\n\n _proto6.ccCR = function ccCR() {\n // Carriage Return\n this.logger.log(VerboseLevel.INFO, 'CR - Carriage Return');\n this.writeScreen.rollUp();\n this.outputDataUpdate(true);\n };\n\n _proto6.ccENM = function ccENM() {\n // Erase Non-Displayed Memory\n this.logger.log(VerboseLevel.INFO, 'ENM - Erase Non-displayed Memory');\n this.nonDisplayedMemory.reset();\n };\n\n _proto6.ccEOC = function ccEOC() {\n // End of Caption (Flip Memories)\n this.logger.log(VerboseLevel.INFO, 'EOC - End Of Caption');\n\n if (this.mode === 'MODE_POP-ON') {\n var tmp = this.displayedMemory;\n this.displayedMemory = this.nonDisplayedMemory;\n this.nonDisplayedMemory = tmp;\n this.writeScreen = this.nonDisplayedMemory;\n this.logger.log(VerboseLevel.TEXT, 'DISP: ' + this.displayedMemory.getDisplayText());\n }\n\n this.outputDataUpdate(true);\n };\n\n _proto6.ccTO = function ccTO(nrCols) {\n // Tab Offset 1,2, or 3 columns\n this.logger.log(VerboseLevel.INFO, 'TO(' + nrCols + ') - Tab Offset');\n this.writeScreen.moveCursor(nrCols);\n };\n\n _proto6.ccMIDROW = function ccMIDROW(secondByte) {\n // Parse MIDROW command\n var styles = {\n flash: false\n };\n styles.underline = secondByte % 2 === 1;\n styles.italics = secondByte >= 0x2e;\n\n if (!styles.italics) {\n var colorIndex = Math.floor(secondByte / 2) - 0x10;\n var colors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta'];\n styles.foreground = colors[colorIndex];\n } else {\n styles.foreground = 'white';\n }\n\n this.logger.log(VerboseLevel.INFO, 'MIDROW: ' + JSON.stringify(styles));\n this.writeScreen.setPen(styles);\n };\n\n _proto6.outputDataUpdate = function outputDataUpdate(dispatch) {\n if (dispatch === void 0) {\n dispatch = false;\n }\n\n var time = this.logger.time;\n\n if (time === null) {\n return;\n }\n\n if (this.outputFilter) {\n if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) {\n // Start of a new cue\n this.cueStartTime = time;\n } else {\n if (!this.displayedMemory.equals(this.lastOutputScreen)) {\n this.outputFilter.newCue(this.cueStartTime, time, this.lastOutputScreen);\n\n if (dispatch && this.outputFilter.dispatchCue) {\n this.outputFilter.dispatchCue();\n }\n\n this.cueStartTime = this.displayedMemory.isEmpty() ? null : time;\n }\n }\n\n this.lastOutputScreen.copy(this.displayedMemory);\n }\n };\n\n _proto6.cueSplitAtTime = function cueSplitAtTime(t) {\n if (this.outputFilter) {\n if (!this.displayedMemory.isEmpty()) {\n if (this.outputFilter.newCue) {\n this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory);\n }\n\n this.cueStartTime = t;\n }\n }\n };\n\n return Cea608Channel;\n}();\n\nvar Cea608Parser = /*#__PURE__*/function () {\n function Cea608Parser(field, out1, out2) {\n this.channels = void 0;\n this.currentChannel = 0;\n this.cmdHistory = void 0;\n this.logger = void 0;\n var logger = new CaptionsLogger();\n this.channels = [null, new Cea608Channel(field, out1, logger), new Cea608Channel(field + 1, out2, logger)];\n this.cmdHistory = createCmdHistory();\n this.logger = logger;\n }\n\n var _proto7 = Cea608Parser.prototype;\n\n _proto7.getHandler = function getHandler(channel) {\n return this.channels[channel].getHandler();\n };\n\n _proto7.setHandler = function setHandler(channel, newHandler) {\n this.channels[channel].setHandler(newHandler);\n }\n /**\n * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\n */\n ;\n\n _proto7.addData = function addData(time, byteList) {\n var cmdFound;\n var a;\n var b;\n var charsFound = false;\n this.logger.time = time;\n\n for (var i = 0; i < byteList.length; i += 2) {\n a = byteList[i] & 0x7f;\n b = byteList[i + 1] & 0x7f;\n\n if (a === 0 && b === 0) {\n continue;\n } else {\n this.logger.log(VerboseLevel.DATA, '[' + numArrayToHexArray([byteList[i], byteList[i + 1]]) + '] -> (' + numArrayToHexArray([a, b]) + ')');\n }\n\n cmdFound = this.parseCmd(a, b);\n\n if (!cmdFound) {\n cmdFound = this.parseMidrow(a, b);\n }\n\n if (!cmdFound) {\n cmdFound = this.parsePAC(a, b);\n }\n\n if (!cmdFound) {\n cmdFound = this.parseBackgroundAttributes(a, b);\n }\n\n if (!cmdFound) {\n charsFound = this.parseChars(a, b);\n\n if (charsFound) {\n var currChNr = this.currentChannel;\n\n if (currChNr && currChNr > 0) {\n var channel = this.channels[currChNr];\n channel.insertChars(charsFound);\n } else {\n this.logger.log(VerboseLevel.WARNING, 'No channel found yet. TEXT-MODE?');\n }\n }\n }\n\n if (!cmdFound && !charsFound) {\n this.logger.log(VerboseLevel.WARNING, \"Couldn't parse cleaned data \" + numArrayToHexArray([a, b]) + ' orig: ' + numArrayToHexArray([byteList[i], byteList[i + 1]]));\n }\n }\n }\n /**\n * Parse Command.\n * @returns {Boolean} Tells if a command was found\n */\n ;\n\n _proto7.parseCmd = function parseCmd(a, b) {\n var cmdHistory = this.cmdHistory;\n var cond1 = (a === 0x14 || a === 0x1c || a === 0x15 || a === 0x1d) && b >= 0x20 && b <= 0x2f;\n var cond2 = (a === 0x17 || a === 0x1f) && b >= 0x21 && b <= 0x23;\n\n if (!(cond1 || cond2)) {\n return false;\n }\n\n if (hasCmdRepeated(a, b, cmdHistory)) {\n setLastCmd(null, null, cmdHistory);\n this.logger.log(VerboseLevel.DEBUG, 'Repeated command (' + numArrayToHexArray([a, b]) + ') is dropped');\n return true;\n }\n\n var chNr = a === 0x14 || a === 0x15 || a === 0x17 ? 1 : 2;\n var channel = this.channels[chNr];\n\n if (a === 0x14 || a === 0x15 || a === 0x1c || a === 0x1d) {\n if (b === 0x20) {\n channel.ccRCL();\n } else if (b === 0x21) {\n channel.ccBS();\n } else if (b === 0x22) {\n channel.ccAOF();\n } else if (b === 0x23) {\n channel.ccAON();\n } else if (b === 0x24) {\n channel.ccDER();\n } else if (b === 0x25) {\n channel.ccRU(2);\n } else if (b === 0x26) {\n channel.ccRU(3);\n } else if (b === 0x27) {\n channel.ccRU(4);\n } else if (b === 0x28) {\n channel.ccFON();\n } else if (b === 0x29) {\n channel.ccRDC();\n } else if (b === 0x2a) {\n channel.ccTR();\n } else if (b === 0x2b) {\n channel.ccRTD();\n } else if (b === 0x2c) {\n channel.ccEDM();\n } else if (b === 0x2d) {\n channel.ccCR();\n } else if (b === 0x2e) {\n channel.ccENM();\n } else if (b === 0x2f) {\n channel.ccEOC();\n }\n } else {\n // a == 0x17 || a == 0x1F\n channel.ccTO(b - 0x20);\n }\n\n setLastCmd(a, b, cmdHistory);\n this.currentChannel = chNr;\n return true;\n }\n /**\n * Parse midrow styling command\n * @returns {Boolean}\n */\n ;\n\n _proto7.parseMidrow = function parseMidrow(a, b) {\n var chNr = 0;\n\n if ((a === 0x11 || a === 0x19) && b >= 0x20 && b <= 0x2f) {\n if (a === 0x11) {\n chNr = 1;\n } else {\n chNr = 2;\n }\n\n if (chNr !== this.currentChannel) {\n this.logger.log(VerboseLevel.ERROR, 'Mismatch channel in midrow parsing');\n return false;\n }\n\n var channel = this.channels[chNr];\n\n if (!channel) {\n return false;\n }\n\n channel.ccMIDROW(b);\n this.logger.log(VerboseLevel.DEBUG, 'MIDROW (' + numArrayToHexArray([a, b]) + ')');\n return true;\n }\n\n return false;\n }\n /**\n * Parse Preable Access Codes (Table 53).\n * @returns {Boolean} Tells if PAC found\n */\n ;\n\n _proto7.parsePAC = function parsePAC(a, b) {\n var row;\n var cmdHistory = this.cmdHistory;\n var case1 = (a >= 0x11 && a <= 0x17 || a >= 0x19 && a <= 0x1f) && b >= 0x40 && b <= 0x7f;\n var case2 = (a === 0x10 || a === 0x18) && b >= 0x40 && b <= 0x5f;\n\n if (!(case1 || case2)) {\n return false;\n }\n\n if (hasCmdRepeated(a, b, cmdHistory)) {\n setLastCmd(null, null, cmdHistory);\n return true; // Repeated commands are dropped (once)\n }\n\n var chNr = a <= 0x17 ? 1 : 2;\n\n if (b >= 0x40 && b <= 0x5f) {\n row = chNr === 1 ? rowsLowCh1[a] : rowsLowCh2[a];\n } else {\n // 0x60 <= b <= 0x7F\n row = chNr === 1 ? rowsHighCh1[a] : rowsHighCh2[a];\n }\n\n var channel = this.channels[chNr];\n\n if (!channel) {\n return false;\n }\n\n channel.setPAC(this.interpretPAC(row, b));\n setLastCmd(a, b, cmdHistory);\n this.currentChannel = chNr;\n return true;\n }\n /**\n * Interpret the second byte of the pac, and return the information.\n * @returns {Object} pacData with style parameters.\n */\n ;\n\n _proto7.interpretPAC = function interpretPAC(row, _byte3) {\n var pacIndex;\n var pacData = {\n color: null,\n italics: false,\n indent: null,\n underline: false,\n row: row\n };\n\n if (_byte3 > 0x5f) {\n pacIndex = _byte3 - 0x60;\n } else {\n pacIndex = _byte3 - 0x40;\n }\n\n pacData.underline = (pacIndex & 1) === 1;\n\n if (pacIndex <= 0xd) {\n pacData.color = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'white'][Math.floor(pacIndex / 2)];\n } else if (pacIndex <= 0xf) {\n pacData.italics = true;\n pacData.color = 'white';\n } else {\n pacData.indent = Math.floor((pacIndex - 0x10) / 2) * 4;\n }\n\n return pacData; // Note that row has zero offset. The spec uses 1.\n }\n /**\n * Parse characters.\n * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\n */\n ;\n\n _proto7.parseChars = function parseChars(a, b) {\n var channelNr;\n var charCodes = null;\n var charCode1 = null;\n\n if (a >= 0x19) {\n channelNr = 2;\n charCode1 = a - 8;\n } else {\n channelNr = 1;\n charCode1 = a;\n }\n\n if (charCode1 >= 0x11 && charCode1 <= 0x13) {\n // Special character\n var oneCode;\n\n if (charCode1 === 0x11) {\n oneCode = b + 0x50;\n } else if (charCode1 === 0x12) {\n oneCode = b + 0x70;\n } else {\n oneCode = b + 0x90;\n }\n\n this.logger.log(VerboseLevel.INFO, \"Special char '\" + getCharForByte(oneCode) + \"' in channel \" + channelNr);\n charCodes = [oneCode];\n } else if (a >= 0x20 && a <= 0x7f) {\n charCodes = b === 0 ? [a] : [a, b];\n }\n\n if (charCodes) {\n var hexCodes = numArrayToHexArray(charCodes);\n this.logger.log(VerboseLevel.DEBUG, 'Char codes = ' + hexCodes.join(','));\n setLastCmd(a, b, this.cmdHistory);\n }\n\n return charCodes;\n }\n /**\n * Parse extended background attributes as well as new foreground color black.\n * @returns {Boolean} Tells if background attributes are found\n */\n ;\n\n _proto7.parseBackgroundAttributes = function parseBackgroundAttributes(a, b) {\n var case1 = (a === 0x10 || a === 0x18) && b >= 0x20 && b <= 0x2f;\n var case2 = (a === 0x17 || a === 0x1f) && b >= 0x2d && b <= 0x2f;\n\n if (!(case1 || case2)) {\n return false;\n }\n\n var index;\n var bkgData = {};\n\n if (a === 0x10 || a === 0x18) {\n index = Math.floor((b - 0x20) / 2);\n bkgData.background = backgroundColors[index];\n\n if (b % 2 === 1) {\n bkgData.background = bkgData.background + '_semi';\n }\n } else if (b === 0x2d) {\n bkgData.background = 'transparent';\n } else {\n bkgData.foreground = 'black';\n\n if (b === 0x2f) {\n bkgData.underline = true;\n }\n }\n\n var chNr = a <= 0x17 ? 1 : 2;\n var channel = this.channels[chNr];\n channel.setBkgData(bkgData);\n setLastCmd(a, b, this.cmdHistory);\n return true;\n }\n /**\n * Reset state of parser and its channels.\n */\n ;\n\n _proto7.reset = function reset() {\n for (var i = 0; i < Object.keys(this.channels).length; i++) {\n var channel = this.channels[i];\n\n if (channel) {\n channel.reset();\n }\n }\n\n this.cmdHistory = createCmdHistory();\n }\n /**\n * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.\n */\n ;\n\n _proto7.cueSplitAtTime = function cueSplitAtTime(t) {\n for (var i = 0; i < this.channels.length; i++) {\n var channel = this.channels[i];\n\n if (channel) {\n channel.cueSplitAtTime(t);\n }\n }\n };\n\n return Cea608Parser;\n}();\n\nfunction setLastCmd(a, b, cmdHistory) {\n cmdHistory.a = a;\n cmdHistory.b = b;\n}\n\nfunction hasCmdRepeated(a, b, cmdHistory) {\n return cmdHistory.a === a && cmdHistory.b === b;\n}\n\nfunction createCmdHistory() {\n return {\n a: null,\n b: null\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Cea608Parser);\n\n/***/ }),\n\n/***/ \"./src/utils/codecs.ts\":\n/*!*****************************!*\\\n !*** ./src/utils/codecs.ts ***!\n \\*****************************/\n/*! exports provided: isCodecType, isCodecSupportedInMp4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCodecType\", function() { return isCodecType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCodecSupportedInMp4\", function() { return isCodecSupportedInMp4; });\n// from http://mp4ra.org/codecs.html\nvar sampleEntryCodesISO = {\n audio: {\n a3ds: true,\n 'ac-3': true,\n 'ac-4': true,\n alac: true,\n alaw: true,\n dra1: true,\n 'dts+': true,\n 'dts-': true,\n dtsc: true,\n dtse: true,\n dtsh: true,\n 'ec-3': true,\n enca: true,\n g719: true,\n g726: true,\n m4ae: true,\n mha1: true,\n mha2: true,\n mhm1: true,\n mhm2: true,\n mlpa: true,\n mp4a: true,\n 'raw ': true,\n Opus: true,\n samr: true,\n sawb: true,\n sawp: true,\n sevc: true,\n sqcp: true,\n ssmv: true,\n twos: true,\n ulaw: true\n },\n video: {\n avc1: true,\n avc2: true,\n avc3: true,\n avc4: true,\n avcp: true,\n av01: true,\n drac: true,\n dvav: true,\n dvhe: true,\n encv: true,\n hev1: true,\n hvc1: true,\n mjp2: true,\n mp4v: true,\n mvc1: true,\n mvc2: true,\n mvc3: true,\n mvc4: true,\n resv: true,\n rv60: true,\n s263: true,\n svc1: true,\n svc2: true,\n 'vc-1': true,\n vp08: true,\n vp09: true\n },\n text: {\n stpp: true,\n wvtt: true\n }\n};\nfunction isCodecType(codec, type) {\n var typeCodes = sampleEntryCodesISO[type];\n return !!typeCodes && typeCodes[codec.slice(0, 4)] === true;\n}\nfunction isCodecSupportedInMp4(codec, type) {\n return MediaSource.isTypeSupported((type || 'video') + \"/mp4;codecs=\\\"\" + codec + \"\\\"\");\n}\n\n/***/ }),\n\n/***/ \"./src/utils/cues.ts\":\n/*!***************************!*\\\n !*** ./src/utils/cues.ts ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _vttparser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vttparser */ \"./src/utils/vttparser.ts\");\n/* harmony import */ var _webvtt_parser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webvtt-parser */ \"./src/utils/webvtt-parser.ts\");\n/* harmony import */ var _texttrack_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./texttrack-utils */ \"./src/utils/texttrack-utils.ts\");\n\n\n\nvar WHITESPACE_CHAR = /\\s/;\nvar Cues = {\n newCue: function newCue(track, startTime, endTime, captionScreen) {\n var result = [];\n var row; // the type data states this is VTTCue, but it can potentially be a TextTrackCue on old browsers\n\n var cue;\n var indenting;\n var indent;\n var text;\n var Cue = self.VTTCue || self.TextTrackCue;\n\n for (var r = 0; r < captionScreen.rows.length; r++) {\n row = captionScreen.rows[r];\n indenting = true;\n indent = 0;\n text = '';\n\n if (!row.isEmpty()) {\n for (var c = 0; c < row.chars.length; c++) {\n if (WHITESPACE_CHAR.test(row.chars[c].uchar) && indenting) {\n indent++;\n } else {\n text += row.chars[c].uchar;\n indenting = false;\n }\n } // To be used for cleaning-up orphaned roll-up captions\n\n\n row.cueStartTime = startTime; // Give a slight bump to the endTime if it's equal to startTime to avoid a SyntaxError in IE\n\n if (startTime === endTime) {\n endTime += 0.0001;\n }\n\n if (indent >= 16) {\n indent--;\n } else {\n indent++;\n }\n\n var cueText = Object(_vttparser__WEBPACK_IMPORTED_MODULE_0__[\"fixLineBreaks\"])(text.trim());\n var id = Object(_webvtt_parser__WEBPACK_IMPORTED_MODULE_1__[\"generateCueId\"])(startTime, endTime, cueText); // If this cue already exists in the track do not push it\n\n if (!track || !track.cues || !track.cues.getCueById(id)) {\n cue = new Cue(startTime, endTime, cueText);\n cue.id = id;\n cue.line = r + 1;\n cue.align = 'left'; // Clamp the position between 10 and 80 percent (CEA-608 PAC indent code)\n // https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/608toVTT.html#positioning-in-cea-608\n // Firefox throws an exception and captions break with out of bounds 0-100 values\n\n cue.position = 10 + Math.min(80, Math.floor(indent * 8 / 32) * 10);\n result.push(cue);\n }\n }\n }\n\n if (track && result.length) {\n // Sort bottom cues in reverse order so that they render in line order when overlapping in Chrome\n result.sort(function (cueA, cueB) {\n if (cueA.line === 'auto' || cueB.line === 'auto') {\n return 0;\n }\n\n if (cueA.line > 8 && cueB.line > 8) {\n return cueB.line - cueA.line;\n }\n\n return cueA.line - cueB.line;\n });\n result.forEach(function (cue) {\n return Object(_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__[\"addCueToTrack\"])(track, cue);\n });\n }\n\n return result;\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Cues);\n\n/***/ }),\n\n/***/ \"./src/utils/discontinuities.ts\":\n/*!**************************************!*\\\n !*** ./src/utils/discontinuities.ts ***!\n \\**************************************/\n/*! exports provided: findFirstFragWithCC, shouldAlignOnDiscontinuities, findDiscontinuousReferenceFrag, adjustSlidingStart, alignStream, alignPDT, alignFragmentByPDTDelta, alignMediaPlaylistByPDT */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findFirstFragWithCC\", function() { return findFirstFragWithCC; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shouldAlignOnDiscontinuities\", function() { return shouldAlignOnDiscontinuities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findDiscontinuousReferenceFrag\", function() { return findDiscontinuousReferenceFrag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"adjustSlidingStart\", function() { return adjustSlidingStart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"alignStream\", function() { return alignStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"alignPDT\", function() { return alignPDT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"alignFragmentByPDTDelta\", function() { return alignFragmentByPDTDelta; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"alignMediaPlaylistByPDT\", function() { return alignMediaPlaylistByPDT; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _controller_level_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../controller/level-helper */ \"./src/controller/level-helper.ts\");\n\n\n\n\nfunction findFirstFragWithCC(fragments, cc) {\n var firstFrag = null;\n\n for (var i = 0, len = fragments.length; i < len; i++) {\n var currentFrag = fragments[i];\n\n if (currentFrag && currentFrag.cc === cc) {\n firstFrag = currentFrag;\n break;\n }\n }\n\n return firstFrag;\n}\nfunction shouldAlignOnDiscontinuities(lastFrag, lastLevel, details) {\n if (lastLevel.details) {\n if (details.endCC > details.startCC || lastFrag && lastFrag.cc < details.startCC) {\n return true;\n }\n }\n\n return false;\n} // Find the first frag in the previous level which matches the CC of the first frag of the new level\n\nfunction findDiscontinuousReferenceFrag(prevDetails, curDetails) {\n var prevFrags = prevDetails.fragments;\n var curFrags = curDetails.fragments;\n\n if (!curFrags.length || !prevFrags.length) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].log('No fragments to align');\n return;\n }\n\n var prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);\n\n if (!prevStartFrag || prevStartFrag && !prevStartFrag.startPTS) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].log('No frag in previous level to align on');\n return;\n }\n\n return prevStartFrag;\n}\n\nfunction adjustFragmentStart(frag, sliding) {\n if (frag) {\n var start = frag.start + sliding;\n frag.start = frag.startPTS = start;\n frag.endPTS = start + frag.duration;\n }\n}\n\nfunction adjustSlidingStart(sliding, details) {\n // Update segments\n var fragments = details.fragments;\n\n for (var i = 0, len = fragments.length; i < len; i++) {\n adjustFragmentStart(fragments[i], sliding);\n } // Update LL-HLS parts at the end of the playlist\n\n\n if (details.fragmentHint) {\n adjustFragmentStart(details.fragmentHint, sliding);\n }\n\n details.alignedSliding = true;\n}\n/**\n * Using the parameters of the last level, this function computes PTS' of the new fragments so that they form a\n * contiguous stream with the last fragments.\n * The PTS of a fragment lets Hls.js know where it fits into a stream - by knowing every PTS, we know which fragment to\n * download at any given time. PTS is normally computed when the fragment is demuxed, so taking this step saves us time\n * and an extra download.\n * @param lastFrag\n * @param lastLevel\n * @param details\n */\n\nfunction alignStream(lastFrag, lastLevel, details) {\n if (!lastLevel) {\n return;\n }\n\n alignDiscontinuities(lastFrag, details, lastLevel);\n\n if (!details.alignedSliding && lastLevel.details) {\n // If the PTS wasn't figured out via discontinuity sequence that means there was no CC increase within the level.\n // Aligning via Program Date Time should therefore be reliable, since PDT should be the same within the same\n // discontinuity sequence.\n alignPDT(details, lastLevel.details);\n }\n\n if (!details.alignedSliding && lastLevel.details && !details.skippedSegments) {\n // Try to align on sn so that we pick a better start fragment.\n // Do not perform this on playlists with delta updates as this is only to align levels on switch\n // and adjustSliding only adjusts fragments after skippedSegments.\n Object(_controller_level_helper__WEBPACK_IMPORTED_MODULE_2__[\"adjustSliding\"])(lastLevel.details, details);\n }\n}\n/**\n * Computes the PTS if a new level's fragments using the PTS of a fragment in the last level which shares the same\n * discontinuity sequence.\n * @param lastFrag - The last Fragment which shares the same discontinuity sequence\n * @param lastLevel - The details of the last loaded level\n * @param details - The details of the new level\n */\n\nfunction alignDiscontinuities(lastFrag, details, lastLevel) {\n if (shouldAlignOnDiscontinuities(lastFrag, lastLevel, details)) {\n var referenceFrag = findDiscontinuousReferenceFrag(lastLevel.details, details);\n\n if (referenceFrag && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(referenceFrag.start)) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].log(\"Adjusting PTS using last level due to CC increase within current level \" + details.url);\n adjustSlidingStart(referenceFrag.start, details);\n }\n }\n}\n/**\n * Computes the PTS of a new level's fragments using the difference in Program Date Time from the last level.\n * @param details - The details of the new level\n * @param lastDetails - The details of the last loaded level\n */\n\n\nfunction alignPDT(details, lastDetails) {\n // This check protects the unsafe \"!\" usage below for null program date time access.\n if (!lastDetails.fragments.length || !details.hasProgramDateTime || !lastDetails.hasProgramDateTime) {\n return;\n } // if last level sliding is 1000 and its first frag PROGRAM-DATE-TIME is 2017-08-20 1:10:00 AM\n // and if new details first frag PROGRAM DATE-TIME is 2017-08-20 1:10:08 AM\n // then we can deduce that playlist B sliding is 1000+8 = 1008s\n\n\n var lastPDT = lastDetails.fragments[0].programDateTime; // hasProgramDateTime check above makes this safe.\n\n var newPDT = details.fragments[0].programDateTime; // date diff is in ms. frag.start is in seconds\n\n var sliding = (newPDT - lastPDT) / 1000 + lastDetails.fragments[0].start;\n\n if (sliding && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(sliding)) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"logger\"].log(\"Adjusting PTS using programDateTime delta \" + (newPDT - lastPDT) + \"ms, sliding:\" + sliding.toFixed(3) + \" \" + details.url + \" \");\n adjustSlidingStart(sliding, details);\n }\n}\nfunction alignFragmentByPDTDelta(frag, delta) {\n var programDateTime = frag.programDateTime;\n if (!programDateTime) return;\n var start = (programDateTime - delta) / 1000;\n frag.start = frag.startPTS = start;\n frag.endPTS = start + frag.duration;\n}\n/**\n * Ensures appropriate time-alignment between renditions based on PDT. Unlike `alignPDT`, which adjusts\n * the timeline based on the delta between PDTs of the 0th fragment of two playlists/`LevelDetails`,\n * this function assumes the timelines represented in `refDetails` are accurate, including the PDTs,\n * and uses the \"wallclock\"/PDT timeline as a cross-reference to `details`, adjusting the presentation\n * times/timelines of `details` accordingly.\n * Given the asynchronous nature of fetches and initial loads of live `main` and audio/subtitle tracks,\n * the primary purpose of this function is to ensure the \"local timelines\" of audio/subtitle tracks\n * are aligned to the main/video timeline, using PDT as the cross-reference/\"anchor\" that should\n * be consistent across playlists, per the HLS spec.\n * @param details - The details of the rendition you'd like to time-align (e.g. an audio rendition).\n * @param refDetails - The details of the reference rendition with start and PDT times for alignment.\n */\n\nfunction alignMediaPlaylistByPDT(details, refDetails) {\n // This check protects the unsafe \"!\" usage below for null program date time access.\n if (!refDetails.fragments.length || !details.hasProgramDateTime || !refDetails.hasProgramDateTime) {\n return;\n }\n\n var refPDT = refDetails.fragments[0].programDateTime; // hasProgramDateTime check above makes this safe.\n\n var refStart = refDetails.fragments[0].start; // Use the delta between the reference details' presentation timeline's start time and its PDT\n // to align the other rendition's timeline.\n\n var delta = refPDT - refStart * 1000; // Per spec: \"If any Media Playlist in a Master Playlist contains an EXT-X-PROGRAM-DATE-TIME tag, then all\n // Media Playlists in that Master Playlist MUST contain EXT-X-PROGRAM-DATE-TIME tags with consistent mappings\n // of date and time to media timestamps.\"\n // So we should be able to use each rendition's PDT as a reference time and use the delta to compute our relevant\n // start and end times.\n // NOTE: This code assumes each level/details timelines have already been made \"internally consistent\"\n\n details.fragments.forEach(function (frag) {\n alignFragmentByPDTDelta(frag, delta);\n });\n\n if (details.fragmentHint) {\n alignFragmentByPDTDelta(details.fragmentHint, delta);\n }\n\n details.alignedSliding = true;\n}\n\n/***/ }),\n\n/***/ \"./src/utils/ewma-bandwidth-estimator.ts\":\n/*!***********************************************!*\\\n !*** ./src/utils/ewma-bandwidth-estimator.ts ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_ewma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/ewma */ \"./src/utils/ewma.ts\");\n/*\n * EWMA Bandwidth Estimator\n * - heavily inspired from shaka-player\n * Tracks bandwidth samples and estimates available bandwidth.\n * Based on the minimum of two exponentially-weighted moving averages with\n * different half-lives.\n */\n\n\nvar EwmaBandWidthEstimator = /*#__PURE__*/function () {\n function EwmaBandWidthEstimator(slow, fast, defaultEstimate) {\n this.defaultEstimate_ = void 0;\n this.minWeight_ = void 0;\n this.minDelayMs_ = void 0;\n this.slow_ = void 0;\n this.fast_ = void 0;\n this.defaultEstimate_ = defaultEstimate;\n this.minWeight_ = 0.001;\n this.minDelayMs_ = 50;\n this.slow_ = new _utils_ewma__WEBPACK_IMPORTED_MODULE_0__[\"default\"](slow);\n this.fast_ = new _utils_ewma__WEBPACK_IMPORTED_MODULE_0__[\"default\"](fast);\n }\n\n var _proto = EwmaBandWidthEstimator.prototype;\n\n _proto.update = function update(slow, fast) {\n var slow_ = this.slow_,\n fast_ = this.fast_;\n\n if (this.slow_.halfLife !== slow) {\n this.slow_ = new _utils_ewma__WEBPACK_IMPORTED_MODULE_0__[\"default\"](slow, slow_.getEstimate(), slow_.getTotalWeight());\n }\n\n if (this.fast_.halfLife !== fast) {\n this.fast_ = new _utils_ewma__WEBPACK_IMPORTED_MODULE_0__[\"default\"](fast, fast_.getEstimate(), fast_.getTotalWeight());\n }\n };\n\n _proto.sample = function sample(durationMs, numBytes) {\n durationMs = Math.max(durationMs, this.minDelayMs_);\n var numBits = 8 * numBytes; // weight is duration in seconds\n\n var durationS = durationMs / 1000; // value is bandwidth in bits/s\n\n var bandwidthInBps = numBits / durationS;\n this.fast_.sample(durationS, bandwidthInBps);\n this.slow_.sample(durationS, bandwidthInBps);\n };\n\n _proto.canEstimate = function canEstimate() {\n var fast = this.fast_;\n return fast && fast.getTotalWeight() >= this.minWeight_;\n };\n\n _proto.getEstimate = function getEstimate() {\n if (this.canEstimate()) {\n // console.log('slow estimate:'+ Math.round(this.slow_.getEstimate()));\n // console.log('fast estimate:'+ Math.round(this.fast_.getEstimate()));\n // Take the minimum of these two estimates. This should have the effect of\n // adapting down quickly, but up more slowly.\n return Math.min(this.fast_.getEstimate(), this.slow_.getEstimate());\n } else {\n return this.defaultEstimate_;\n }\n };\n\n _proto.destroy = function destroy() {};\n\n return EwmaBandWidthEstimator;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EwmaBandWidthEstimator);\n\n/***/ }),\n\n/***/ \"./src/utils/ewma.ts\":\n/*!***************************!*\\\n !*** ./src/utils/ewma.ts ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/*\n * compute an Exponential Weighted moving average\n * - https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average\n * - heavily inspired from shaka-player\n */\nvar EWMA = /*#__PURE__*/function () {\n // About half of the estimated value will be from the last |halfLife| samples by weight.\n function EWMA(halfLife, estimate, weight) {\n if (estimate === void 0) {\n estimate = 0;\n }\n\n if (weight === void 0) {\n weight = 0;\n }\n\n this.halfLife = void 0;\n this.alpha_ = void 0;\n this.estimate_ = void 0;\n this.totalWeight_ = void 0;\n this.halfLife = halfLife; // Larger values of alpha expire historical data more slowly.\n\n this.alpha_ = halfLife ? Math.exp(Math.log(0.5) / halfLife) : 0;\n this.estimate_ = estimate;\n this.totalWeight_ = weight;\n }\n\n var _proto = EWMA.prototype;\n\n _proto.sample = function sample(weight, value) {\n var adjAlpha = Math.pow(this.alpha_, weight);\n this.estimate_ = value * (1 - adjAlpha) + adjAlpha * this.estimate_;\n this.totalWeight_ += weight;\n };\n\n _proto.getTotalWeight = function getTotalWeight() {\n return this.totalWeight_;\n };\n\n _proto.getEstimate = function getEstimate() {\n if (this.alpha_) {\n var zeroFactor = 1 - Math.pow(this.alpha_, this.totalWeight_);\n\n if (zeroFactor) {\n return this.estimate_ / zeroFactor;\n }\n }\n\n return this.estimate_;\n };\n\n return EWMA;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EWMA);\n\n/***/ }),\n\n/***/ \"./src/utils/fetch-loader.ts\":\n/*!***********************************!*\\\n !*** ./src/utils/fetch-loader.ts ***!\n \\***********************************/\n/*! exports provided: fetchSupported, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchSupported\", function() { return fetchSupported; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _loader_load_stats__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../loader/load-stats */ \"./src/loader/load-stats.ts\");\n/* harmony import */ var _demux_chunk_cache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../demux/chunk-cache */ \"./src/demux/chunk-cache.ts\");\n\n\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\nfunction fetchSupported() {\n if ( // @ts-ignore\n self.fetch && self.AbortController && self.ReadableStream && self.Request) {\n try {\n new self.ReadableStream({}); // eslint-disable-line no-new\n\n return true;\n } catch (e) {\n /* noop */\n }\n }\n\n return false;\n}\n\nvar FetchLoader = /*#__PURE__*/function () {\n function FetchLoader(config\n /* HlsConfig */\n ) {\n this.fetchSetup = void 0;\n this.requestTimeout = void 0;\n this.request = void 0;\n this.response = void 0;\n this.controller = void 0;\n this.context = void 0;\n this.config = null;\n this.callbacks = null;\n this.stats = void 0;\n this.loader = null;\n this.fetchSetup = config.fetchSetup || getRequest;\n this.controller = new self.AbortController();\n this.stats = new _loader_load_stats__WEBPACK_IMPORTED_MODULE_1__[\"LoadStats\"]();\n }\n\n var _proto = FetchLoader.prototype;\n\n _proto.destroy = function destroy() {\n this.loader = this.callbacks = null;\n this.abortInternal();\n };\n\n _proto.abortInternal = function abortInternal() {\n var response = this.response;\n\n if (!response || !response.ok) {\n this.stats.aborted = true;\n this.controller.abort();\n }\n };\n\n _proto.abort = function abort() {\n var _this$callbacks;\n\n this.abortInternal();\n\n if ((_this$callbacks = this.callbacks) !== null && _this$callbacks !== void 0 && _this$callbacks.onAbort) {\n this.callbacks.onAbort(this.stats, this.context, this.response);\n }\n };\n\n _proto.load = function load(context, config, callbacks) {\n var _this = this;\n\n var stats = this.stats;\n\n if (stats.loading.start) {\n throw new Error('Loader can only be used once.');\n }\n\n stats.loading.start = self.performance.now();\n var initParams = getRequestParameters(context, this.controller.signal);\n var onProgress = callbacks.onProgress;\n var isArrayBuffer = context.responseType === 'arraybuffer';\n var LENGTH = isArrayBuffer ? 'byteLength' : 'length';\n this.context = context;\n this.config = config;\n this.callbacks = callbacks;\n this.request = this.fetchSetup(context, initParams);\n self.clearTimeout(this.requestTimeout);\n this.requestTimeout = self.setTimeout(function () {\n _this.abortInternal();\n\n callbacks.onTimeout(stats, context, _this.response);\n }, config.timeout);\n self.fetch(this.request).then(function (response) {\n _this.response = _this.loader = response;\n\n if (!response.ok) {\n var status = response.status,\n statusText = response.statusText;\n throw new FetchError(statusText || 'fetch, bad network response', status, response);\n }\n\n stats.loading.first = Math.max(self.performance.now(), stats.loading.start);\n stats.total = parseInt(response.headers.get('Content-Length') || '0');\n\n if (onProgress && Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(config.highWaterMark)) {\n return _this.loadProgressively(response, stats, context, config.highWaterMark, onProgress);\n }\n\n if (isArrayBuffer) {\n return response.arrayBuffer();\n }\n\n return response.text();\n }).then(function (responseData) {\n var response = _this.response;\n self.clearTimeout(_this.requestTimeout);\n stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n stats.loaded = stats.total = responseData[LENGTH];\n var loaderResponse = {\n url: response.url,\n data: responseData\n };\n\n if (onProgress && !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(config.highWaterMark)) {\n onProgress(stats, context, responseData, response);\n }\n\n callbacks.onSuccess(loaderResponse, stats, context, response);\n }).catch(function (error) {\n self.clearTimeout(_this.requestTimeout);\n\n if (stats.aborted) {\n return;\n } // CORS errors result in an undefined code. Set it to 0 here to align with XHR's behavior\n // when destroying, 'error' itself can be undefined\n\n\n var code = !error ? 0 : error.code || 0;\n var text = !error ? null : error.message;\n callbacks.onError({\n code: code,\n text: text\n }, context, error ? error.details : null);\n });\n };\n\n _proto.getCacheAge = function getCacheAge() {\n var result = null;\n\n if (this.response) {\n var ageHeader = this.response.headers.get('age');\n result = ageHeader ? parseFloat(ageHeader) : null;\n }\n\n return result;\n };\n\n _proto.loadProgressively = function loadProgressively(response, stats, context, highWaterMark, onProgress) {\n if (highWaterMark === void 0) {\n highWaterMark = 0;\n }\n\n var chunkCache = new _demux_chunk_cache__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n var reader = response.body.getReader();\n\n var pump = function pump() {\n return reader.read().then(function (data) {\n if (data.done) {\n if (chunkCache.dataLength) {\n onProgress(stats, context, chunkCache.flush(), response);\n }\n\n return Promise.resolve(new ArrayBuffer(0));\n }\n\n var chunk = data.value;\n var len = chunk.length;\n stats.loaded += len;\n\n if (len < highWaterMark || chunkCache.dataLength) {\n // The current chunk is too small to to be emitted or the cache already has data\n // Push it to the cache\n chunkCache.push(chunk);\n\n if (chunkCache.dataLength >= highWaterMark) {\n // flush in order to join the typed arrays\n onProgress(stats, context, chunkCache.flush(), response);\n }\n } else {\n // If there's nothing cached already, and the chache is large enough\n // just emit the progress event\n onProgress(stats, context, chunk, response);\n }\n\n return pump();\n }).catch(function () {\n /* aborted */\n return Promise.reject();\n });\n };\n\n return pump();\n };\n\n return FetchLoader;\n}();\n\nfunction getRequestParameters(context, signal) {\n var initParams = {\n method: 'GET',\n mode: 'cors',\n credentials: 'same-origin',\n signal: signal,\n headers: new self.Headers(_extends({}, context.headers))\n };\n\n if (context.rangeEnd) {\n initParams.headers.set('Range', 'bytes=' + context.rangeStart + '-' + String(context.rangeEnd - 1));\n }\n\n return initParams;\n}\n\nfunction getRequest(context, initParams) {\n return new self.Request(context.url, initParams);\n}\n\nvar FetchError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(FetchError, _Error);\n\n function FetchError(message, code, details) {\n var _this2;\n\n _this2 = _Error.call(this, message) || this;\n _this2.code = void 0;\n _this2.details = void 0;\n _this2.code = code;\n _this2.details = details;\n return _this2;\n }\n\n return FetchError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FetchLoader);\n\n/***/ }),\n\n/***/ \"./src/utils/imsc1-ttml-parser.ts\":\n/*!****************************************!*\\\n !*** ./src/utils/imsc1-ttml-parser.ts ***!\n \\****************************************/\n/*! exports provided: IMSC1_CODEC, parseIMSC1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IMSC1_CODEC\", function() { return IMSC1_CODEC; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseIMSC1\", function() { return parseIMSC1; });\n/* harmony import */ var _mp4_tools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mp4-tools */ \"./src/utils/mp4-tools.ts\");\n/* harmony import */ var _vttparser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vttparser */ \"./src/utils/vttparser.ts\");\n/* harmony import */ var _vttcue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./vttcue */ \"./src/utils/vttcue.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\n/* harmony import */ var _timescale_conversion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./timescale-conversion */ \"./src/utils/timescale-conversion.ts\");\n/* harmony import */ var _webvtt_parser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./webvtt-parser */ \"./src/utils/webvtt-parser.ts\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\n\n\nvar IMSC1_CODEC = 'stpp.ttml.im1t'; // Time format: h:m:s:frames(.subframes)\n\nvar HMSF_REGEX = /^(\\d{2,}):(\\d{2}):(\\d{2}):(\\d{2})\\.?(\\d+)?$/; // Time format: hours, minutes, seconds, milliseconds, frames, ticks\n\nvar TIME_UNIT_REGEX = /^(\\d*(?:\\.\\d*)?)(h|m|s|ms|f|t)$/;\nvar textAlignToLineAlign = {\n left: 'start',\n center: 'center',\n right: 'end',\n start: 'start',\n end: 'end'\n};\nfunction parseIMSC1(payload, initPTS, timescale, callBack, errorCallBack) {\n var results = Object(_mp4_tools__WEBPACK_IMPORTED_MODULE_0__[\"findBox\"])(new Uint8Array(payload), ['mdat']);\n\n if (results.length === 0) {\n errorCallBack(new Error('Could not parse IMSC1 mdat'));\n return;\n }\n\n var ttmlList = results.map(function (mdat) {\n return Object(_demux_id3__WEBPACK_IMPORTED_MODULE_3__[\"utf8ArrayToStr\"])(mdat);\n });\n var syncTime = Object(_timescale_conversion__WEBPACK_IMPORTED_MODULE_4__[\"toTimescaleFromScale\"])(initPTS, 1, timescale);\n\n try {\n ttmlList.forEach(function (ttml) {\n return callBack(parseTTML(ttml, syncTime));\n });\n } catch (error) {\n errorCallBack(error);\n }\n}\n\nfunction parseTTML(ttml, syncTime) {\n var parser = new DOMParser();\n var xmlDoc = parser.parseFromString(ttml, 'text/xml');\n var tt = xmlDoc.getElementsByTagName('tt')[0];\n\n if (!tt) {\n throw new Error('Invalid ttml');\n }\n\n var defaultRateInfo = {\n frameRate: 30,\n subFrameRate: 1,\n frameRateMultiplier: 0,\n tickRate: 0\n };\n var rateInfo = Object.keys(defaultRateInfo).reduce(function (result, key) {\n result[key] = tt.getAttribute(\"ttp:\" + key) || defaultRateInfo[key];\n return result;\n }, {});\n var trim = tt.getAttribute('xml:space') !== 'preserve';\n var styleElements = collectionToDictionary(getElementCollection(tt, 'styling', 'style'));\n var regionElements = collectionToDictionary(getElementCollection(tt, 'layout', 'region'));\n var cueElements = getElementCollection(tt, 'body', '[begin]');\n return [].map.call(cueElements, function (cueElement) {\n var cueText = getTextContent(cueElement, trim);\n\n if (!cueText || !cueElement.hasAttribute('begin')) {\n return null;\n }\n\n var startTime = parseTtmlTime(cueElement.getAttribute('begin'), rateInfo);\n var duration = parseTtmlTime(cueElement.getAttribute('dur'), rateInfo);\n var endTime = parseTtmlTime(cueElement.getAttribute('end'), rateInfo);\n\n if (startTime === null) {\n throw timestampParsingError(cueElement);\n }\n\n if (endTime === null) {\n if (duration === null) {\n throw timestampParsingError(cueElement);\n }\n\n endTime = startTime + duration;\n }\n\n var cue = new _vttcue__WEBPACK_IMPORTED_MODULE_2__[\"default\"](startTime - syncTime, endTime - syncTime, cueText);\n cue.id = Object(_webvtt_parser__WEBPACK_IMPORTED_MODULE_5__[\"generateCueId\"])(cue.startTime, cue.endTime, cue.text);\n var region = regionElements[cueElement.getAttribute('region')];\n var style = styleElements[cueElement.getAttribute('style')]; // TODO: Add regions to track and cue (origin and extend)\n // These values are hard-coded (for now) to simulate region settings in the demo\n\n cue.position = 10;\n cue.size = 80; // Apply styles to cue\n\n var styles = getTtmlStyles(region, style, styleElements);\n var textAlign = styles.textAlign;\n\n if (textAlign) {\n // cue.positionAlign not settable in FF~2016\n var lineAlign = textAlignToLineAlign[textAlign];\n\n if (lineAlign) {\n cue.lineAlign = lineAlign;\n }\n\n cue.align = textAlign;\n }\n\n _extends(cue, styles);\n\n return cue;\n }).filter(function (cue) {\n return cue !== null;\n });\n}\n\nfunction getElementCollection(fromElement, parentName, childName) {\n var parent = fromElement.getElementsByTagName(parentName)[0];\n\n if (parent) {\n return [].slice.call(parent.querySelectorAll(childName));\n }\n\n return [];\n}\n\nfunction collectionToDictionary(elementsWithId) {\n return elementsWithId.reduce(function (dict, element) {\n var id = element.getAttribute('xml:id');\n\n if (id) {\n dict[id] = element;\n }\n\n return dict;\n }, {});\n}\n\nfunction getTextContent(element, trim) {\n return [].slice.call(element.childNodes).reduce(function (str, node, i) {\n var _node$childNodes;\n\n if (node.nodeName === 'br' && i) {\n return str + '\\n';\n }\n\n if ((_node$childNodes = node.childNodes) !== null && _node$childNodes !== void 0 && _node$childNodes.length) {\n return getTextContent(node, trim);\n } else if (trim) {\n return str + node.textContent.trim().replace(/\\s+/g, ' ');\n }\n\n return str + node.textContent;\n }, '');\n}\n\nfunction getTtmlStyles(region, style, styleElements) {\n var ttsNs = 'http://www.w3.org/ns/ttml#styling';\n var regionStyle = null;\n var styleAttributes = ['displayAlign', 'textAlign', 'color', 'backgroundColor', 'fontSize', 'fontFamily' // 'fontWeight',\n // 'lineHeight',\n // 'wrapOption',\n // 'fontStyle',\n // 'direction',\n // 'writingMode'\n ];\n var regionStyleName = region !== null && region !== void 0 && region.hasAttribute('style') ? region.getAttribute('style') : null;\n\n if (regionStyleName && styleElements.hasOwnProperty(regionStyleName)) {\n regionStyle = styleElements[regionStyleName];\n }\n\n return styleAttributes.reduce(function (styles, name) {\n var value = getAttributeNS(style, ttsNs, name) || getAttributeNS(region, ttsNs, name) || getAttributeNS(regionStyle, ttsNs, name);\n\n if (value) {\n styles[name] = value;\n }\n\n return styles;\n }, {});\n}\n\nfunction getAttributeNS(element, ns, name) {\n if (!element) {\n return null;\n }\n\n return element.hasAttributeNS(ns, name) ? element.getAttributeNS(ns, name) : null;\n}\n\nfunction timestampParsingError(node) {\n return new Error(\"Could not parse ttml timestamp \" + node);\n}\n\nfunction parseTtmlTime(timeAttributeValue, rateInfo) {\n if (!timeAttributeValue) {\n return null;\n }\n\n var seconds = Object(_vttparser__WEBPACK_IMPORTED_MODULE_1__[\"parseTimeStamp\"])(timeAttributeValue);\n\n if (seconds === null) {\n if (HMSF_REGEX.test(timeAttributeValue)) {\n seconds = parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo);\n } else if (TIME_UNIT_REGEX.test(timeAttributeValue)) {\n seconds = parseTimeUnits(timeAttributeValue, rateInfo);\n }\n }\n\n return seconds;\n}\n\nfunction parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo) {\n var m = HMSF_REGEX.exec(timeAttributeValue);\n var frames = (m[4] | 0) + (m[5] | 0) / rateInfo.subFrameRate;\n return (m[1] | 0) * 3600 + (m[2] | 0) * 60 + (m[3] | 0) + frames / rateInfo.frameRate;\n}\n\nfunction parseTimeUnits(timeAttributeValue, rateInfo) {\n var m = TIME_UNIT_REGEX.exec(timeAttributeValue);\n var value = Number(m[1]);\n var unit = m[2];\n\n switch (unit) {\n case 'h':\n return value * 3600;\n\n case 'm':\n return value * 60;\n\n case 'ms':\n return value * 1000;\n\n case 'f':\n return value / rateInfo.frameRate;\n\n case 't':\n return value / rateInfo.tickRate;\n }\n\n return value;\n}\n\n/***/ }),\n\n/***/ \"./src/utils/logger.ts\":\n/*!*****************************!*\\\n !*** ./src/utils/logger.ts ***!\n \\*****************************/\n/*! exports provided: enableLogs, logger */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enableLogs\", function() { return enableLogs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"logger\", function() { return logger; });\nvar noop = function noop() {};\n\nvar fakeLogger = {\n trace: noop,\n debug: noop,\n log: noop,\n warn: noop,\n info: noop,\n error: noop\n};\nvar exportedLogger = fakeLogger; // let lastCallTime;\n// function formatMsgWithTimeInfo(type, msg) {\n// const now = Date.now();\n// const diff = lastCallTime ? '+' + (now - lastCallTime) : '0';\n// lastCallTime = now;\n// msg = (new Date(now)).toISOString() + ' | [' + type + '] > ' + msg + ' ( ' + diff + ' ms )';\n// return msg;\n// }\n\nfunction consolePrintFn(type) {\n var func = self.console[type];\n\n if (func) {\n return func.bind(self.console, \"[\" + type + \"] >\");\n }\n\n return noop;\n}\n\nfunction exportLoggerFunctions(debugConfig) {\n for (var _len = arguments.length, functions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n functions[_key - 1] = arguments[_key];\n }\n\n functions.forEach(function (type) {\n exportedLogger[type] = debugConfig[type] ? debugConfig[type].bind(debugConfig) : consolePrintFn(type);\n });\n}\n\nfunction enableLogs(debugConfig) {\n // check that console is available\n if (self.console && debugConfig === true || typeof debugConfig === 'object') {\n exportLoggerFunctions(debugConfig, // Remove out from list here to hard-disable a log-level\n // 'trace',\n 'debug', 'log', 'info', 'warn', 'error'); // Some browsers don't allow to use bind on console object anyway\n // fallback to default if needed\n\n try {\n exportedLogger.log();\n } catch (e) {\n exportedLogger = fakeLogger;\n }\n } else {\n exportedLogger = fakeLogger;\n }\n}\nvar logger = exportedLogger;\n\n/***/ }),\n\n/***/ \"./src/utils/mediakeys-helper.ts\":\n/*!***************************************!*\\\n !*** ./src/utils/mediakeys-helper.ts ***!\n \\***************************************/\n/*! exports provided: KeySystems, requestMediaKeySystemAccess */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KeySystems\", function() { return KeySystems; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"requestMediaKeySystemAccess\", function() { return requestMediaKeySystemAccess; });\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess\n */\nvar KeySystems;\n\n(function (KeySystems) {\n KeySystems[\"WIDEVINE\"] = \"com.widevine.alpha\";\n KeySystems[\"PLAYREADY\"] = \"com.microsoft.playready\";\n})(KeySystems || (KeySystems = {}));\n\nvar requestMediaKeySystemAccess = function () {\n if (typeof self !== 'undefined' && self.navigator && self.navigator.requestMediaKeySystemAccess) {\n return self.navigator.requestMediaKeySystemAccess.bind(self.navigator);\n } else {\n return null;\n }\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/utils/mediasource-helper.ts\":\n/*!*****************************************!*\\\n !*** ./src/utils/mediasource-helper.ts ***!\n \\*****************************************/\n/*! exports provided: getMediaSource */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMediaSource\", function() { return getMediaSource; });\n/**\n * MediaSource helper\n */\nfunction getMediaSource() {\n return self.MediaSource || self.WebKitMediaSource;\n}\n\n/***/ }),\n\n/***/ \"./src/utils/mp4-tools.ts\":\n/*!********************************!*\\\n !*** ./src/utils/mp4-tools.ts ***!\n \\********************************/\n/*! exports provided: RemuxerTrackIdConfig, bin2str, readUint16, readUint32, readSint32, writeUint32, findBox, parseSegmentIndex, parseInitSegment, getStartDTS, getDuration, computeRawDurationFromSamples, offsetStartDTS, segmentValidRange, appendUint8Array, parseSamples, parseSEIMessageFromNALu, parseEmsg */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RemuxerTrackIdConfig\", function() { return RemuxerTrackIdConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bin2str\", function() { return bin2str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"readUint16\", function() { return readUint16; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"readUint32\", function() { return readUint32; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"readSint32\", function() { return readSint32; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"writeUint32\", function() { return writeUint32; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findBox\", function() { return findBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSegmentIndex\", function() { return parseSegmentIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseInitSegment\", function() { return parseInitSegment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStartDTS\", function() { return getStartDTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDuration\", function() { return getDuration; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"computeRawDurationFromSamples\", function() { return computeRawDurationFromSamples; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"offsetStartDTS\", function() { return offsetStartDTS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"segmentValidRange\", function() { return segmentValidRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"appendUint8Array\", function() { return appendUint8Array; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSamples\", function() { return parseSamples; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSEIMessageFromNALu\", function() { return parseSEIMessageFromNALu; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseEmsg\", function() { return parseEmsg; });\n/* harmony import */ var _typed_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typed-array */ \"./src/utils/typed-array.ts\");\n/* harmony import */ var _loader_fragment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../loader/fragment */ \"./src/loader/fragment.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\n\n\n\nvar UINT32_MAX = Math.pow(2, 32) - 1;\nvar push = [].push; // We are using fixed track IDs for driving the MP4 remuxer\n// instead of following the TS PIDs.\n// There is no reason not to do this and some browsers/SourceBuffer-demuxers\n// may not like if there are TrackID \"switches\"\n// See https://github.com/video-dev/hls.js/issues/1331\n// Here we are mapping our internal track types to constant MP4 track IDs\n// With MSE currently one can only have one track of each, and we are muxing\n// whatever video/audio rendition in them.\n\nvar RemuxerTrackIdConfig = {\n video: 1,\n audio: 2,\n id3: 3,\n text: 4\n};\nfunction bin2str(data) {\n return String.fromCharCode.apply(null, data);\n}\nfunction readUint16(buffer, offset) {\n var val = buffer[offset] << 8 | buffer[offset + 1];\n return val < 0 ? 65536 + val : val;\n}\nfunction readUint32(buffer, offset) {\n var val = readSint32(buffer, offset);\n return val < 0 ? 4294967296 + val : val;\n}\nfunction readSint32(buffer, offset) {\n return buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3];\n}\nfunction writeUint32(buffer, offset, value) {\n buffer[offset] = value >> 24;\n buffer[offset + 1] = value >> 16 & 0xff;\n buffer[offset + 2] = value >> 8 & 0xff;\n buffer[offset + 3] = value & 0xff;\n} // Find the data for a box specified by its path\n\nfunction findBox(data, path) {\n var results = [];\n\n if (!path.length) {\n // short-circuit the search for empty paths\n return results;\n }\n\n var end = data.byteLength;\n\n for (var i = 0; i < end;) {\n var size = readUint32(data, i);\n var type = bin2str(data.subarray(i + 4, i + 8));\n var endbox = size > 1 ? i + size : end;\n\n if (type === path[0]) {\n if (path.length === 1) {\n // this is the end of the path and we've found the box we were\n // looking for\n results.push(data.subarray(i + 8, endbox));\n } else {\n // recursively search for the next box along the path\n var subresults = findBox(data.subarray(i + 8, endbox), path.slice(1));\n\n if (subresults.length) {\n push.apply(results, subresults);\n }\n }\n }\n\n i = endbox;\n } // we've finished searching all of data\n\n\n return results;\n}\nfunction parseSegmentIndex(sidx) {\n var references = [];\n var version = sidx[0]; // set initial offset, we skip the reference ID (not needed)\n\n var index = 8;\n var timescale = readUint32(sidx, index);\n index += 4; // TODO: parse earliestPresentationTime and firstOffset\n // usually zero in our case\n\n var earliestPresentationTime = 0;\n var firstOffset = 0;\n\n if (version === 0) {\n index += 8;\n } else {\n index += 16;\n } // skip reserved\n\n\n index += 2;\n var startByte = sidx.length + firstOffset;\n var referencesCount = readUint16(sidx, index);\n index += 2;\n\n for (var i = 0; i < referencesCount; i++) {\n var referenceIndex = index;\n var referenceInfo = readUint32(sidx, referenceIndex);\n referenceIndex += 4;\n var referenceSize = referenceInfo & 0x7fffffff;\n var referenceType = (referenceInfo & 0x80000000) >>> 31;\n\n if (referenceType === 1) {\n // eslint-disable-next-line no-console\n console.warn('SIDX has hierarchical references (not supported)');\n return null;\n }\n\n var subsegmentDuration = readUint32(sidx, referenceIndex);\n referenceIndex += 4;\n references.push({\n referenceSize: referenceSize,\n subsegmentDuration: subsegmentDuration,\n // unscaled\n info: {\n duration: subsegmentDuration / timescale,\n start: startByte,\n end: startByte + referenceSize - 1\n }\n });\n startByte += referenceSize; // Skipping 1 bit for |startsWithSap|, 3 bits for |sapType|, and 28 bits\n // for |sapDelta|.\n\n referenceIndex += 4; // skip to next ref\n\n index = referenceIndex;\n }\n\n return {\n earliestPresentationTime: earliestPresentationTime,\n timescale: timescale,\n version: version,\n referencesCount: referencesCount,\n references: references\n };\n}\n/**\n * Parses an MP4 initialization segment and extracts stream type and\n * timescale values for any declared tracks. Timescale values indicate the\n * number of clock ticks per second to assume for time-based values\n * elsewhere in the MP4.\n *\n * To determine the start time of an MP4, you need two pieces of\n * information: the timescale unit and the earliest base media decode\n * time. Multiple timescales can be specified within an MP4 but the\n * base media decode time is always expressed in the timescale from\n * the media header box for the track:\n * ```\n * moov > trak > mdia > mdhd.timescale\n * moov > trak > mdia > hdlr\n * ```\n * @param initSegment {Uint8Array} the bytes of the init segment\n * @return {InitData} a hash of track type to timescale values or null if\n * the init segment is malformed.\n */\n\nfunction parseInitSegment(initSegment) {\n var result = [];\n var traks = findBox(initSegment, ['moov', 'trak']);\n\n for (var i = 0; i < traks.length; i++) {\n var trak = traks[i];\n var tkhd = findBox(trak, ['tkhd'])[0];\n\n if (tkhd) {\n var version = tkhd[0];\n\n var _index = version === 0 ? 12 : 20;\n\n var trackId = readUint32(tkhd, _index);\n var mdhd = findBox(trak, ['mdia', 'mdhd'])[0];\n\n if (mdhd) {\n version = mdhd[0];\n _index = version === 0 ? 12 : 20;\n var timescale = readUint32(mdhd, _index);\n var hdlr = findBox(trak, ['mdia', 'hdlr'])[0];\n\n if (hdlr) {\n var hdlrType = bin2str(hdlr.subarray(8, 12));\n var type = {\n soun: _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].AUDIO,\n vide: _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].VIDEO\n }[hdlrType];\n\n if (type) {\n // Parse codec details\n var stsd = findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0];\n var codec = void 0;\n\n if (stsd) {\n codec = bin2str(stsd.subarray(12, 16)); // TODO: Parse codec details to be able to build MIME type.\n // stsd.start += 8;\n // const codecBox = findBox(stsd, [codec])[0];\n // if (codecBox) {\n // TODO: Codec parsing support for avc1, mp4a, hevc, av01...\n // }\n }\n\n result[trackId] = {\n timescale: timescale,\n type: type\n };\n result[type] = {\n timescale: timescale,\n id: trackId,\n codec: codec\n };\n }\n }\n }\n }\n }\n\n var trex = findBox(initSegment, ['moov', 'mvex', 'trex']);\n trex.forEach(function (trex) {\n var trackId = readUint32(trex, 4);\n var track = result[trackId];\n\n if (track) {\n track.default = {\n duration: readUint32(trex, 12),\n flags: readUint32(trex, 20)\n };\n }\n });\n return result;\n}\n/**\n * Determine the base media decode start time, in seconds, for an MP4\n * fragment. If multiple fragments are specified, the earliest time is\n * returned.\n *\n * The base media decode time can be parsed from track fragment\n * metadata:\n * ```\n * moof > traf > tfdt.baseMediaDecodeTime\n * ```\n * It requires the timescale value from the mdhd to interpret.\n *\n * @param initData {InitData} a hash of track type to timescale values\n * @param fmp4 {Uint8Array} the bytes of the mp4 fragment\n * @return {number} the earliest base media decode start time for the\n * fragment, in seconds\n */\n\nfunction getStartDTS(initData, fmp4) {\n // we need info from two children of each track fragment box\n return findBox(fmp4, ['moof', 'traf']).reduce(function (result, traf) {\n var tfdt = findBox(traf, ['tfdt'])[0];\n var version = tfdt[0];\n var start = findBox(traf, ['tfhd']).reduce(function (result, tfhd) {\n // get the track id from the tfhd\n var id = readUint32(tfhd, 4);\n var track = initData[id];\n\n if (track) {\n var baseTime = readUint32(tfdt, 4);\n\n if (version === 1) {\n baseTime *= Math.pow(2, 32);\n baseTime += readUint32(tfdt, 8);\n } // assume a 90kHz clock if no timescale was specified\n\n\n var scale = track.timescale || 90e3; // convert base time to seconds\n\n var startTime = baseTime / scale;\n\n if (isFinite(startTime) && (result === null || startTime < result)) {\n return startTime;\n }\n }\n\n return result;\n }, null);\n\n if (start !== null && isFinite(start) && (result === null || start < result)) {\n return start;\n }\n\n return result;\n }, null) || 0;\n}\n/*\n For Reference:\n aligned(8) class TrackFragmentHeaderBox\n extends FullBox(‘tfhd’, 0, tf_flags){\n unsigned int(32) track_ID;\n // all the following are optional fields\n unsigned int(64) base_data_offset;\n unsigned int(32) sample_description_index;\n unsigned int(32) default_sample_duration;\n unsigned int(32) default_sample_size;\n unsigned int(32) default_sample_flags\n }\n */\n\nfunction getDuration(data, initData) {\n var sidxDuration = 0;\n var sidxs = findBox(data, ['sidx']);\n\n for (var i = 0; i < sidxs.length; i++) {\n var sidx = parseSegmentIndex(sidxs[i]);\n\n if (sidx !== null && sidx !== void 0 && sidx.references) {\n sidxDuration += sidx.references.reduce(function (dur, ref) {\n return dur + ref.info.duration || 0;\n }, 0);\n }\n }\n\n if (sidxDuration) {\n return sidxDuration;\n }\n\n var rawDuration = 0;\n var videoDuration = 0;\n var audioDuration = 0;\n var trafs = findBox(data, ['moof', 'traf']);\n\n for (var _i = 0; _i < trafs.length; _i++) {\n var traf = trafs[_i]; // There is only one tfhd & trun per traf\n // This is true for CMAF style content, and we should perhaps check the ftyp\n // and only look for a single trun then, but for ISOBMFF we should check\n // for multiple track runs.\n\n var tfhd = findBox(traf, ['tfhd'])[0]; // get the track id from the tfhd\n\n var id = readUint32(tfhd, 4);\n var track = initData[id];\n\n if (!track) {\n continue;\n }\n\n var trackDefault = track.default;\n var tfhdFlags = readUint32(tfhd, 0) | (trackDefault === null || trackDefault === void 0 ? void 0 : trackDefault.flags);\n var sampleDuration = trackDefault === null || trackDefault === void 0 ? void 0 : trackDefault.duration;\n\n if (tfhdFlags & 0x000008) {\n // 0x000008 indicates the presence of the default_sample_duration field\n if (tfhdFlags & 0x000002) {\n // 0x000002 indicates the presence of the sample_description_index field, which precedes default_sample_duration\n // If present, the default_sample_duration exists at byte offset 12\n sampleDuration = readUint32(tfhd, 12);\n } else {\n // Otherwise, the duration is at byte offset 8\n sampleDuration = readUint32(tfhd, 8);\n }\n } // assume a 90kHz clock if no timescale was specified\n\n\n var timescale = track.timescale || 90e3;\n var truns = findBox(traf, ['trun']);\n\n for (var j = 0; j < truns.length; j++) {\n rawDuration = computeRawDurationFromSamples(truns[j]);\n\n if (!rawDuration && sampleDuration) {\n var sampleCount = readUint32(truns[j], 4);\n rawDuration = sampleDuration * sampleCount;\n }\n\n if (track.type === _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].VIDEO) {\n videoDuration += rawDuration / timescale;\n } else if (track.type === _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].AUDIO) {\n audioDuration += rawDuration / timescale;\n }\n }\n }\n\n if (videoDuration) {\n return videoDuration;\n }\n\n return audioDuration;\n}\n/*\n For Reference:\n aligned(8) class TrackRunBox\n extends FullBox(‘trun’, version, tr_flags) {\n unsigned int(32) sample_count;\n // the following are optional fields\n signed int(32) data_offset;\n unsigned int(32) first_sample_flags;\n // all fields in the following array are optional\n {\n unsigned int(32) sample_duration;\n unsigned int(32) sample_size;\n unsigned int(32) sample_flags\n if (version == 0)\n { unsigned int(32)\n else\n { signed int(32)\n }[ sample_count ]\n }\n */\n\nfunction computeRawDurationFromSamples(trun) {\n var flags = readUint32(trun, 0); // Flags are at offset 0, non-optional sample_count is at offset 4. Therefore we start 8 bytes in.\n // Each field is an int32, which is 4 bytes\n\n var offset = 8; // data-offset-present flag\n\n if (flags & 0x000001) {\n offset += 4;\n } // first-sample-flags-present flag\n\n\n if (flags & 0x000004) {\n offset += 4;\n }\n\n var duration = 0;\n var sampleCount = readUint32(trun, 4);\n\n for (var i = 0; i < sampleCount; i++) {\n // sample-duration-present flag\n if (flags & 0x000100) {\n var sampleDuration = readUint32(trun, offset);\n duration += sampleDuration;\n offset += 4;\n } // sample-size-present flag\n\n\n if (flags & 0x000200) {\n offset += 4;\n } // sample-flags-present flag\n\n\n if (flags & 0x000400) {\n offset += 4;\n } // sample-composition-time-offsets-present flag\n\n\n if (flags & 0x000800) {\n offset += 4;\n }\n }\n\n return duration;\n}\nfunction offsetStartDTS(initData, fmp4, timeOffset) {\n findBox(fmp4, ['moof', 'traf']).forEach(function (traf) {\n findBox(traf, ['tfhd']).forEach(function (tfhd) {\n // get the track id from the tfhd\n var id = readUint32(tfhd, 4);\n var track = initData[id];\n\n if (!track) {\n return;\n } // assume a 90kHz clock if no timescale was specified\n\n\n var timescale = track.timescale || 90e3; // get the base media decode time from the tfdt\n\n findBox(traf, ['tfdt']).forEach(function (tfdt) {\n var version = tfdt[0];\n var baseMediaDecodeTime = readUint32(tfdt, 4);\n\n if (version === 0) {\n baseMediaDecodeTime -= timeOffset * timescale;\n baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n writeUint32(tfdt, 4, baseMediaDecodeTime);\n } else {\n baseMediaDecodeTime *= Math.pow(2, 32);\n baseMediaDecodeTime += readUint32(tfdt, 8);\n baseMediaDecodeTime -= timeOffset * timescale;\n baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n var upper = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));\n var lower = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));\n writeUint32(tfdt, 4, upper);\n writeUint32(tfdt, 8, lower);\n }\n });\n });\n });\n} // TODO: Check if the last moof+mdat pair is part of the valid range\n\nfunction segmentValidRange(data) {\n var segmentedRange = {\n valid: null,\n remainder: null\n };\n var moofs = findBox(data, ['moof']);\n\n if (!moofs) {\n return segmentedRange;\n } else if (moofs.length < 2) {\n segmentedRange.remainder = data;\n return segmentedRange;\n }\n\n var last = moofs[moofs.length - 1]; // Offset by 8 bytes; findBox offsets the start by as much\n\n segmentedRange.valid = Object(_typed_array__WEBPACK_IMPORTED_MODULE_0__[\"sliceUint8\"])(data, 0, last.byteOffset - 8);\n segmentedRange.remainder = Object(_typed_array__WEBPACK_IMPORTED_MODULE_0__[\"sliceUint8\"])(data, last.byteOffset - 8);\n return segmentedRange;\n}\nfunction appendUint8Array(data1, data2) {\n var temp = new Uint8Array(data1.length + data2.length);\n temp.set(data1);\n temp.set(data2, data1.length);\n return temp;\n}\nfunction parseSamples(timeOffset, track) {\n var seiSamples = [];\n var videoData = track.samples;\n var timescale = track.timescale;\n var trackId = track.id;\n var isHEVCFlavor = false;\n var moofs = findBox(videoData, ['moof']);\n moofs.map(function (moof) {\n var moofOffset = moof.byteOffset - 8;\n var trafs = findBox(moof, ['traf']);\n trafs.map(function (traf) {\n // get the base media decode time from the tfdt\n var baseTime = findBox(traf, ['tfdt']).map(function (tfdt) {\n var version = tfdt[0];\n var result = readUint32(tfdt, 4);\n\n if (version === 1) {\n result *= Math.pow(2, 32);\n result += readUint32(tfdt, 8);\n }\n\n return result / timescale;\n })[0];\n\n if (baseTime !== undefined) {\n timeOffset = baseTime;\n }\n\n return findBox(traf, ['tfhd']).map(function (tfhd) {\n var id = readUint32(tfhd, 4);\n var tfhdFlags = readUint32(tfhd, 0) & 0xffffff;\n var baseDataOffsetPresent = (tfhdFlags & 0x000001) !== 0;\n var sampleDescriptionIndexPresent = (tfhdFlags & 0x000002) !== 0;\n var defaultSampleDurationPresent = (tfhdFlags & 0x000008) !== 0;\n var defaultSampleDuration = 0;\n var defaultSampleSizePresent = (tfhdFlags & 0x000010) !== 0;\n var defaultSampleSize = 0;\n var defaultSampleFlagsPresent = (tfhdFlags & 0x000020) !== 0;\n var tfhdOffset = 8;\n\n if (id === trackId) {\n if (baseDataOffsetPresent) {\n tfhdOffset += 8;\n }\n\n if (sampleDescriptionIndexPresent) {\n tfhdOffset += 4;\n }\n\n if (defaultSampleDurationPresent) {\n defaultSampleDuration = readUint32(tfhd, tfhdOffset);\n tfhdOffset += 4;\n }\n\n if (defaultSampleSizePresent) {\n defaultSampleSize = readUint32(tfhd, tfhdOffset);\n tfhdOffset += 4;\n }\n\n if (defaultSampleFlagsPresent) {\n tfhdOffset += 4;\n }\n\n if (track.type === 'video') {\n isHEVCFlavor = isHEVC(track.codec);\n }\n\n findBox(traf, ['trun']).map(function (trun) {\n var version = trun[0];\n var flags = readUint32(trun, 0) & 0xffffff;\n var dataOffsetPresent = (flags & 0x000001) !== 0;\n var dataOffset = 0;\n var firstSampleFlagsPresent = (flags & 0x000004) !== 0;\n var sampleDurationPresent = (flags & 0x000100) !== 0;\n var sampleDuration = 0;\n var sampleSizePresent = (flags & 0x000200) !== 0;\n var sampleSize = 0;\n var sampleFlagsPresent = (flags & 0x000400) !== 0;\n var sampleCompositionOffsetsPresent = (flags & 0x000800) !== 0;\n var compositionOffset = 0;\n var sampleCount = readUint32(trun, 4);\n var trunOffset = 8; // past version, flags, and sample count\n\n if (dataOffsetPresent) {\n dataOffset = readUint32(trun, trunOffset);\n trunOffset += 4;\n }\n\n if (firstSampleFlagsPresent) {\n trunOffset += 4;\n }\n\n var sampleOffset = dataOffset + moofOffset;\n\n for (var ix = 0; ix < sampleCount; ix++) {\n if (sampleDurationPresent) {\n sampleDuration = readUint32(trun, trunOffset);\n trunOffset += 4;\n } else {\n sampleDuration = defaultSampleDuration;\n }\n\n if (sampleSizePresent) {\n sampleSize = readUint32(trun, trunOffset);\n trunOffset += 4;\n } else {\n sampleSize = defaultSampleSize;\n }\n\n if (sampleFlagsPresent) {\n trunOffset += 4;\n }\n\n if (sampleCompositionOffsetsPresent) {\n if (version === 0) {\n compositionOffset = readUint32(trun, trunOffset);\n } else {\n compositionOffset = readSint32(trun, trunOffset);\n }\n\n trunOffset += 4;\n }\n\n if (track.type === _loader_fragment__WEBPACK_IMPORTED_MODULE_1__[\"ElementaryStreamTypes\"].VIDEO) {\n var naluTotalSize = 0;\n\n while (naluTotalSize < sampleSize) {\n var naluSize = readUint32(videoData, sampleOffset);\n sampleOffset += 4;\n var naluType = videoData[sampleOffset] & 0x1f;\n\n if (isSEIMessage(isHEVCFlavor, naluType)) {\n var data = videoData.subarray(sampleOffset, sampleOffset + naluSize);\n parseSEIMessageFromNALu(data, timeOffset + compositionOffset / timescale, seiSamples);\n }\n\n sampleOffset += naluSize;\n naluTotalSize += naluSize + 4;\n }\n }\n\n timeOffset += sampleDuration / timescale;\n }\n });\n }\n });\n });\n });\n return seiSamples;\n}\n\nfunction isHEVC(codec) {\n if (!codec) {\n return false;\n }\n\n var delimit = codec.indexOf('.');\n var baseCodec = delimit < 0 ? codec : codec.substring(0, delimit);\n return baseCodec === 'hvc1' || baseCodec === 'hev1' || // Dolby Vision\n baseCodec === 'dvh1' || baseCodec === 'dvhe';\n}\n\nfunction isSEIMessage(isHEVCFlavor, naluType) {\n return isHEVCFlavor ? naluType === 39 || naluType === 40 : naluType === 6;\n}\n\nfunction parseSEIMessageFromNALu(unescapedData, pts, samples) {\n var data = discardEPB(unescapedData);\n var seiPtr = 0; // skip frameType\n\n seiPtr++;\n var payloadType = 0;\n var payloadSize = 0;\n var endOfCaptions = false;\n var b = 0;\n\n while (seiPtr < data.length) {\n payloadType = 0;\n\n do {\n if (seiPtr >= data.length) {\n break;\n }\n\n b = data[seiPtr++];\n payloadType += b;\n } while (b === 0xff); // Parse payload size.\n\n\n payloadSize = 0;\n\n do {\n if (seiPtr >= data.length) {\n break;\n }\n\n b = data[seiPtr++];\n payloadSize += b;\n } while (b === 0xff);\n\n var leftOver = data.length - seiPtr;\n\n if (!endOfCaptions && payloadType === 4 && seiPtr < data.length) {\n endOfCaptions = true;\n var countryCode = data[seiPtr++];\n\n if (countryCode === 181) {\n var providerCode = readUint16(data, seiPtr);\n seiPtr += 2;\n\n if (providerCode === 49) {\n var userStructure = readUint32(data, seiPtr);\n seiPtr += 4;\n\n if (userStructure === 0x47413934) {\n var userDataType = data[seiPtr++]; // Raw CEA-608 bytes wrapped in CEA-708 packet\n\n if (userDataType === 3) {\n var firstByte = data[seiPtr++];\n var totalCCs = 0x1f & firstByte;\n var enabled = 0x40 & firstByte;\n var totalBytes = enabled ? 2 + totalCCs * 3 : 0;\n var byteArray = new Uint8Array(totalBytes);\n\n if (enabled) {\n byteArray[0] = firstByte;\n\n for (var i = 1; i < totalBytes; i++) {\n byteArray[i] = data[seiPtr++];\n }\n }\n\n samples.push({\n type: userDataType,\n payloadType: payloadType,\n pts: pts,\n bytes: byteArray\n });\n }\n }\n }\n }\n } else if (payloadType === 5 && payloadSize < leftOver) {\n endOfCaptions = true;\n\n if (payloadSize > 16) {\n var uuidStrArray = [];\n\n for (var _i2 = 0; _i2 < 16; _i2++) {\n var _b = data[seiPtr++].toString(16);\n\n uuidStrArray.push(_b.length == 1 ? '0' + _b : _b);\n\n if (_i2 === 3 || _i2 === 5 || _i2 === 7 || _i2 === 9) {\n uuidStrArray.push('-');\n }\n }\n\n var length = payloadSize - 16;\n var userDataBytes = new Uint8Array(length);\n\n for (var _i3 = 0; _i3 < length; _i3++) {\n userDataBytes[_i3] = data[seiPtr++];\n }\n\n samples.push({\n payloadType: payloadType,\n pts: pts,\n uuid: uuidStrArray.join(''),\n userData: Object(_demux_id3__WEBPACK_IMPORTED_MODULE_2__[\"utf8ArrayToStr\"])(userDataBytes),\n userDataBytes: userDataBytes\n });\n }\n } else if (payloadSize < leftOver) {\n seiPtr += payloadSize;\n } else if (payloadSize > leftOver) {\n break;\n }\n }\n}\n/**\n * remove Emulation Prevention bytes from a RBSP\n */\n\nfunction discardEPB(data) {\n var length = data.byteLength;\n var EPBPositions = [];\n var i = 1; // Find all `Emulation Prevention Bytes`\n\n while (i < length - 2) {\n if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n EPBPositions.push(i + 2);\n i += 2;\n } else {\n i++;\n }\n } // If no Emulation Prevention Bytes were found just return the original\n // array\n\n\n if (EPBPositions.length === 0) {\n return data;\n } // Create a new array to hold the NAL unit data\n\n\n var newLength = length - EPBPositions.length;\n var newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === EPBPositions[0]) {\n // Skip this byte\n sourceIndex++; // Remove this position index\n\n EPBPositions.shift();\n }\n\n newData[i] = data[sourceIndex];\n }\n\n return newData;\n}\n\nfunction parseEmsg(data) {\n var version = data[0];\n var schemeIdUri = '';\n var value = '';\n var timeScale = 0;\n var presentationTimeDelta = 0;\n var presentationTime = 0;\n var eventDuration = 0;\n var id = 0;\n var offset = 0;\n\n if (version === 0) {\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n timeScale = readUint32(data, 12);\n presentationTimeDelta = readUint32(data, 16);\n eventDuration = readUint32(data, 20);\n id = readUint32(data, 24);\n offset = 28;\n } else if (version === 1) {\n offset += 4;\n timeScale = readUint32(data, offset);\n offset += 4;\n var leftPresentationTime = readUint32(data, offset);\n offset += 4;\n var rightPresentationTime = readUint32(data, offset);\n offset += 4;\n presentationTime = Math.pow(2, 32) * leftPresentationTime + rightPresentationTime;\n\n if (!Number.isSafeInteger(presentationTime)) {\n presentationTime = Number.MAX_SAFE_INTEGER; // eslint-disable-next-line no-console\n\n console.warn('Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box');\n }\n\n eventDuration = readUint32(data, offset);\n offset += 4;\n id = readUint32(data, offset);\n offset += 4;\n\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n\n var payload = data.subarray(offset, data.byteLength);\n return {\n schemeIdUri: schemeIdUri,\n value: value,\n timeScale: timeScale,\n presentationTime: presentationTime,\n presentationTimeDelta: presentationTimeDelta,\n eventDuration: eventDuration,\n id: id,\n payload: payload\n };\n}\n\n/***/ }),\n\n/***/ \"./src/utils/output-filter.ts\":\n/*!************************************!*\\\n !*** ./src/utils/output-filter.ts ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return OutputFilter; });\nvar OutputFilter = /*#__PURE__*/function () {\n function OutputFilter(timelineController, trackName) {\n this.timelineController = void 0;\n this.cueRanges = [];\n this.trackName = void 0;\n this.startTime = null;\n this.endTime = null;\n this.screen = null;\n this.timelineController = timelineController;\n this.trackName = trackName;\n }\n\n var _proto = OutputFilter.prototype;\n\n _proto.dispatchCue = function dispatchCue() {\n if (this.startTime === null) {\n return;\n }\n\n this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen, this.cueRanges);\n this.startTime = null;\n };\n\n _proto.newCue = function newCue(startTime, endTime, screen) {\n if (this.startTime === null || this.startTime > startTime) {\n this.startTime = startTime;\n }\n\n this.endTime = endTime;\n this.screen = screen;\n this.timelineController.createCaptionsTrack(this.trackName);\n };\n\n _proto.reset = function reset() {\n this.cueRanges = [];\n this.startTime = null;\n };\n\n return OutputFilter;\n}();\n\n\n\n/***/ }),\n\n/***/ \"./src/utils/texttrack-utils.ts\":\n/*!**************************************!*\\\n !*** ./src/utils/texttrack-utils.ts ***!\n \\**************************************/\n/*! exports provided: sendAddTrackEvent, addCueToTrack, clearCurrentCues, removeCuesInRange, getCuesInRange */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sendAddTrackEvent\", function() { return sendAddTrackEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addCueToTrack\", function() { return addCueToTrack; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearCurrentCues\", function() { return clearCurrentCues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeCuesInRange\", function() { return removeCuesInRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCuesInRange\", function() { return getCuesInRange; });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logger */ \"./src/utils/logger.ts\");\n\nfunction sendAddTrackEvent(track, videoEl) {\n var event;\n\n try {\n event = new Event('addtrack');\n } catch (err) {\n // for IE11\n event = document.createEvent('Event');\n event.initEvent('addtrack', false, false);\n }\n\n event.track = track;\n videoEl.dispatchEvent(event);\n}\nfunction addCueToTrack(track, cue) {\n // Sometimes there are cue overlaps on segmented vtts so the same\n // cue can appear more than once in different vtt files.\n // This avoid showing duplicated cues with same timecode and text.\n var mode = track.mode;\n\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n\n if (track.cues && !track.cues.getCueById(cue.id)) {\n try {\n track.addCue(cue);\n\n if (!track.cues.getCueById(cue.id)) {\n throw new Error(\"addCue is failed for: \" + cue);\n }\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].debug(\"[texttrack-utils]: \" + err);\n var textTrackCue = new self.TextTrackCue(cue.startTime, cue.endTime, cue.text);\n textTrackCue.id = cue.id;\n track.addCue(textTrackCue);\n }\n }\n\n if (mode === 'disabled') {\n track.mode = mode;\n }\n}\nfunction clearCurrentCues(track) {\n // When track.mode is disabled, track.cues will be null.\n // To guarantee the removal of cues, we need to temporarily\n // change the mode to hidden\n var mode = track.mode;\n\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n\n if (track.cues) {\n for (var i = track.cues.length; i--;) {\n track.removeCue(track.cues[i]);\n }\n }\n\n if (mode === 'disabled') {\n track.mode = mode;\n }\n}\nfunction removeCuesInRange(track, start, end, predicate) {\n var mode = track.mode;\n\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n\n if (track.cues && track.cues.length > 0) {\n var cues = getCuesInRange(track.cues, start, end);\n\n for (var i = 0; i < cues.length; i++) {\n if (!predicate || predicate(cues[i])) {\n track.removeCue(cues[i]);\n }\n }\n }\n\n if (mode === 'disabled') {\n track.mode = mode;\n }\n} // Find first cue starting after given time.\n// Modified version of binary search O(log(n)).\n\nfunction getFirstCueIndexAfterTime(cues, time) {\n // If first cue starts after time, start there\n if (time < cues[0].startTime) {\n return 0;\n } // If the last cue ends before time there is no overlap\n\n\n var len = cues.length - 1;\n\n if (time > cues[len].endTime) {\n return -1;\n }\n\n var left = 0;\n var right = len;\n\n while (left <= right) {\n var mid = Math.floor((right + left) / 2);\n\n if (time < cues[mid].startTime) {\n right = mid - 1;\n } else if (time > cues[mid].startTime && left < len) {\n left = mid + 1;\n } else {\n // If it's not lower or higher, it must be equal.\n return mid;\n }\n } // At this point, left and right have swapped.\n // No direct match was found, left or right element must be the closest. Check which one has the smallest diff.\n\n\n return cues[left].startTime - time < time - cues[right].startTime ? left : right;\n}\n\nfunction getCuesInRange(cues, start, end) {\n var cuesFound = [];\n var firstCueInRange = getFirstCueIndexAfterTime(cues, start);\n\n if (firstCueInRange > -1) {\n for (var i = firstCueInRange, len = cues.length; i < len; i++) {\n var _cue = cues[i];\n\n if (_cue.startTime >= start && _cue.endTime <= end) {\n cuesFound.push(_cue);\n } else if (_cue.startTime > end) {\n return cuesFound;\n }\n }\n }\n\n return cuesFound;\n}\n\n/***/ }),\n\n/***/ \"./src/utils/time-ranges.ts\":\n/*!**********************************!*\\\n !*** ./src/utils/time-ranges.ts ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * TimeRanges to string helper\n */\nvar TimeRanges = {\n toString: function toString(r) {\n var log = '';\n var len = r.length;\n\n for (var i = 0; i < len; i++) {\n log += '[' + r.start(i).toFixed(3) + ',' + r.end(i).toFixed(3) + ']';\n }\n\n return log;\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (TimeRanges);\n\n/***/ }),\n\n/***/ \"./src/utils/timescale-conversion.ts\":\n/*!*******************************************!*\\\n !*** ./src/utils/timescale-conversion.ts ***!\n \\*******************************************/\n/*! exports provided: toTimescaleFromBase, toTimescaleFromScale, toMsFromMpegTsClock, toMpegTsClockFromTimescale */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toTimescaleFromBase\", function() { return toTimescaleFromBase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toTimescaleFromScale\", function() { return toTimescaleFromScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toMsFromMpegTsClock\", function() { return toMsFromMpegTsClock; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toMpegTsClockFromTimescale\", function() { return toMpegTsClockFromTimescale; });\nvar MPEG_TS_CLOCK_FREQ_HZ = 90000;\nfunction toTimescaleFromBase(value, destScale, srcBase, round) {\n if (srcBase === void 0) {\n srcBase = 1;\n }\n\n if (round === void 0) {\n round = false;\n }\n\n var result = value * destScale * srcBase; // equivalent to `(value * scale) / (1 / base)`\n\n return round ? Math.round(result) : result;\n}\nfunction toTimescaleFromScale(value, destScale, srcScale, round) {\n if (srcScale === void 0) {\n srcScale = 1;\n }\n\n if (round === void 0) {\n round = false;\n }\n\n return toTimescaleFromBase(value, destScale, 1 / srcScale, round);\n}\nfunction toMsFromMpegTsClock(value, round) {\n if (round === void 0) {\n round = false;\n }\n\n return toTimescaleFromBase(value, 1000, 1 / MPEG_TS_CLOCK_FREQ_HZ, round);\n}\nfunction toMpegTsClockFromTimescale(value, srcScale) {\n if (srcScale === void 0) {\n srcScale = 1;\n }\n\n return toTimescaleFromBase(value, MPEG_TS_CLOCK_FREQ_HZ, 1 / srcScale);\n}\n\n/***/ }),\n\n/***/ \"./src/utils/typed-array.ts\":\n/*!**********************************!*\\\n !*** ./src/utils/typed-array.ts ***!\n \\**********************************/\n/*! exports provided: sliceUint8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sliceUint8\", function() { return sliceUint8; });\nfunction sliceUint8(array, start, end) {\n // @ts-expect-error This polyfills IE11 usage of Uint8Array slice.\n // It always exists in the TypeScript definition so fails, but it fails at runtime on IE11.\n return Uint8Array.prototype.slice ? array.slice(start, end) : new Uint8Array(Array.prototype.slice.call(array, start, end));\n}\n\n/***/ }),\n\n/***/ \"./src/utils/vttcue.ts\":\n/*!*****************************!*\\\n !*** ./src/utils/vttcue.ts ***!\n \\*****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function () {\n if (typeof self !== 'undefined' && self.VTTCue) {\n return self.VTTCue;\n }\n\n var AllowedDirections = ['', 'lr', 'rl'];\n var AllowedAlignments = ['start', 'middle', 'end', 'left', 'right'];\n\n function isAllowedValue(allowed, value) {\n if (typeof value !== 'string') {\n return false;\n } // necessary for assuring the generic conforms to the Array interface\n\n\n if (!Array.isArray(allowed)) {\n return false;\n } // reset the type so that the next narrowing works well\n\n\n var lcValue = value.toLowerCase(); // use the allow list to narrow the type to a specific subset of strings\n\n if (~allowed.indexOf(lcValue)) {\n return lcValue;\n }\n\n return false;\n }\n\n function findDirectionSetting(value) {\n return isAllowedValue(AllowedDirections, value);\n }\n\n function findAlignSetting(value) {\n return isAllowedValue(AllowedAlignments, value);\n }\n\n function extend(obj) {\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n var i = 1;\n\n for (; i < arguments.length; i++) {\n var cobj = arguments[i];\n\n for (var p in cobj) {\n obj[p] = cobj[p];\n }\n }\n\n return obj;\n }\n\n function VTTCue(startTime, endTime, text) {\n var cue = this;\n var baseObj = {\n enumerable: true\n };\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n\n cue.hasBeenReset = false;\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = '';\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = '';\n var _snapToLines = true;\n var _line = 'auto';\n var _lineAlign = 'start';\n var _position = 50;\n var _positionAlign = 'middle';\n var _size = 50;\n var _align = 'middle';\n Object.defineProperty(cue, 'id', extend({}, baseObj, {\n get: function get() {\n return _id;\n },\n set: function set(value) {\n _id = '' + value;\n }\n }));\n Object.defineProperty(cue, 'pauseOnExit', extend({}, baseObj, {\n get: function get() {\n return _pauseOnExit;\n },\n set: function set(value) {\n _pauseOnExit = !!value;\n }\n }));\n Object.defineProperty(cue, 'startTime', extend({}, baseObj, {\n get: function get() {\n return _startTime;\n },\n set: function set(value) {\n if (typeof value !== 'number') {\n throw new TypeError('Start time must be set to a number.');\n }\n\n _startTime = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'endTime', extend({}, baseObj, {\n get: function get() {\n return _endTime;\n },\n set: function set(value) {\n if (typeof value !== 'number') {\n throw new TypeError('End time must be set to a number.');\n }\n\n _endTime = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'text', extend({}, baseObj, {\n get: function get() {\n return _text;\n },\n set: function set(value) {\n _text = '' + value;\n this.hasBeenReset = true;\n }\n })); // todo: implement VTTRegion polyfill?\n\n Object.defineProperty(cue, 'region', extend({}, baseObj, {\n get: function get() {\n return _region;\n },\n set: function set(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'vertical', extend({}, baseObj, {\n get: function get() {\n return _vertical;\n },\n set: function set(value) {\n var setting = findDirectionSetting(value); // Have to check for false because the setting an be an empty string.\n\n if (setting === false) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n\n _vertical = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'snapToLines', extend({}, baseObj, {\n get: function get() {\n return _snapToLines;\n },\n set: function set(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'line', extend({}, baseObj, {\n get: function get() {\n return _line;\n },\n set: function set(value) {\n if (typeof value !== 'number' && value !== 'auto') {\n throw new SyntaxError('An invalid number or illegal string was specified.');\n }\n\n _line = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'lineAlign', extend({}, baseObj, {\n get: function get() {\n return _lineAlign;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'position', extend({}, baseObj, {\n get: function get() {\n return _position;\n },\n set: function set(value) {\n if (value < 0 || value > 100) {\n throw new Error('Position must be between 0 and 100.');\n }\n\n _position = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'positionAlign', extend({}, baseObj, {\n get: function get() {\n return _positionAlign;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'size', extend({}, baseObj, {\n get: function get() {\n return _size;\n },\n set: function set(value) {\n if (value < 0 || value > 100) {\n throw new Error('Size must be between 0 and 100.');\n }\n\n _size = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'align', extend({}, baseObj, {\n get: function get() {\n return _align;\n },\n set: function set(value) {\n var setting = findAlignSetting(value);\n\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n\n _align = setting;\n this.hasBeenReset = true;\n }\n }));\n /**\n * Other <track> spec defined properties\n */\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n\n cue.displayState = undefined;\n }\n /**\n * VTTCue methods\n */\n\n\n VTTCue.prototype.getCueAsHTML = function () {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n var WebVTT = self.WebVTT;\n return WebVTT.convertCueToDOMTree(self, this.text);\n }; // this is a polyfill hack\n\n\n return VTTCue;\n})());\n\n/***/ }),\n\n/***/ \"./src/utils/vttparser.ts\":\n/*!********************************!*\\\n !*** ./src/utils/vttparser.ts ***!\n \\********************************/\n/*! exports provided: parseTimeStamp, fixLineBreaks, VTTParser */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseTimeStamp\", function() { return parseTimeStamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fixLineBreaks\", function() { return fixLineBreaks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VTTParser\", function() { return VTTParser; });\n/* harmony import */ var _vttcue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vttcue */ \"./src/utils/vttcue.ts\");\n/*\n * Source: https://github.com/mozilla/vtt.js/blob/master/dist/vtt.js\n */\n\n\nvar StringDecoder = /*#__PURE__*/function () {\n function StringDecoder() {}\n\n var _proto = StringDecoder.prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.decode = function decode(data, options) {\n if (!data) {\n return '';\n }\n\n if (typeof data !== 'string') {\n throw new Error('Error - expected string data.');\n }\n\n return decodeURIComponent(encodeURIComponent(data));\n };\n\n return StringDecoder;\n}(); // Try to parse input as a time stamp.\n\n\nfunction parseTimeStamp(input) {\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + parseFloat(f || 0);\n }\n\n var m = input.match(/^(?:(\\d+):)?(\\d{2}):(\\d{2})(\\.\\d+)?/);\n\n if (!m) {\n return null;\n }\n\n if (parseFloat(m[2]) > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[2], m[3], 0, m[4]);\n } // Timestamp takes the form of [hours (optional)]:[minutes]:[seconds].[milliseconds]\n\n\n return computeSeconds(m[1], m[2], m[3], m[4]);\n} // A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\n\nvar Settings = /*#__PURE__*/function () {\n function Settings() {\n this.values = Object.create(null);\n }\n\n var _proto2 = Settings.prototype;\n\n // Only accept the first assignment to any key.\n _proto2.set = function set(k, v) {\n if (!this.get(k) && v !== '') {\n this.values[k] = v;\n }\n } // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n ;\n\n _proto2.get = function get(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n\n return this.has(k) ? this.values[k] : dflt;\n } // Check whether we have a value for a key.\n ;\n\n _proto2.has = function has(k) {\n return k in this.values;\n } // Accept a setting if its one of the given alternatives.\n ;\n\n _proto2.alt = function alt(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n } // Accept a setting if its a valid (signed) integer.\n ;\n\n _proto2.integer = function integer(k, v) {\n if (/^-?\\d+$/.test(v)) {\n // integer\n this.set(k, parseInt(v, 10));\n }\n } // Accept a setting if its a valid percentage.\n ;\n\n _proto2.percent = function percent(k, v) {\n if (/^([\\d]{1,3})(\\.[\\d]*)?%$/.test(v)) {\n var percent = parseFloat(v);\n\n if (percent >= 0 && percent <= 100) {\n this.set(k, percent);\n return true;\n }\n }\n\n return false;\n };\n\n return Settings;\n}(); // Helper function to parse input into groups separated by 'groupDelim', and\n// interpret each group as a key/value pair separated by 'keyValueDelim'.\n\n\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n\n for (var i in groups) {\n if (typeof groups[i] !== 'string') {\n continue;\n }\n\n var kv = groups[i].split(keyValueDelim);\n\n if (kv.length !== 2) {\n continue;\n }\n\n var _k = kv[0];\n var _v = kv[1];\n callback(_k, _v);\n }\n}\n\nvar defaults = new _vttcue__WEBPACK_IMPORTED_MODULE_0__[\"default\"](0, 0, ''); // 'middle' was changed to 'center' in the spec: https://github.com/w3c/webvtt/pull/244\n// Safari doesn't yet support this change, but FF and Chrome do.\n\nvar center = defaults.align === 'middle' ? 'middle' : 'center';\n\nfunction parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n var oInput = input; // 4.1 WebVTT timestamp\n\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n\n if (ts === null) {\n throw new Error('Malformed timestamp: ' + oInput);\n } // Remove time stamp from input.\n\n\n input = input.replace(/^[^\\sa-zA-Z-]+/, '');\n return ts;\n } // 4.4.2 WebVTT cue settings\n\n\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n parseOptions(input, function (k, v) {\n var vals;\n\n switch (k) {\n case 'region':\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n\n break;\n\n case 'vertical':\n settings.alt(k, v, ['rl', 'lr']);\n break;\n\n case 'line':\n vals = v.split(',');\n settings.integer(k, vals[0]);\n\n if (settings.percent(k, vals[0])) {\n settings.set('snapToLines', false);\n }\n\n settings.alt(k, vals[0], ['auto']);\n\n if (vals.length === 2) {\n settings.alt('lineAlign', vals[1], ['start', center, 'end']);\n }\n\n break;\n\n case 'position':\n vals = v.split(',');\n settings.percent(k, vals[0]);\n\n if (vals.length === 2) {\n settings.alt('positionAlign', vals[1], ['start', center, 'end', 'line-left', 'line-right', 'auto']);\n }\n\n break;\n\n case 'size':\n settings.percent(k, v);\n break;\n\n case 'align':\n settings.alt(k, v, ['start', center, 'end', 'left', 'right']);\n break;\n }\n }, /:/, /\\s/); // Apply default values for any missing fields.\n\n cue.region = settings.get('region', null);\n cue.vertical = settings.get('vertical', '');\n var line = settings.get('line', 'auto');\n\n if (line === 'auto' && defaults.line === -1) {\n // set numeric line number for Safari\n line = -1;\n }\n\n cue.line = line;\n cue.lineAlign = settings.get('lineAlign', 'start');\n cue.snapToLines = settings.get('snapToLines', true);\n cue.size = settings.get('size', 100);\n cue.align = settings.get('align', center);\n var position = settings.get('position', 'auto');\n\n if (position === 'auto' && defaults.position === 50) {\n // set numeric position for Safari\n position = cue.align === 'start' || cue.align === 'left' ? 0 : cue.align === 'end' || cue.align === 'right' ? 100 : 50;\n }\n\n cue.position = position;\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, '');\n } // 4.1 WebVTT cue timings.\n\n\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n\n skipWhitespace();\n\n if (input.slice(0, 3) !== '-->') {\n // (3) next characters must match '-->'\n throw new Error(\"Malformed time stamp (time stamps must be separated by '-->'): \" + oInput);\n }\n\n input = input.slice(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n // 4.1 WebVTT cue settings list.\n\n skipWhitespace();\n consumeCueSettings(input, cue);\n}\n\nfunction fixLineBreaks(input) {\n return input.replace(/<br(?: \\/)?>/gi, '\\n');\n}\nvar VTTParser = /*#__PURE__*/function () {\n function VTTParser() {\n this.state = 'INITIAL';\n this.buffer = '';\n this.decoder = new StringDecoder();\n this.regionList = [];\n this.cue = null;\n this.oncue = void 0;\n this.onparsingerror = void 0;\n this.onflush = void 0;\n }\n\n var _proto3 = VTTParser.prototype;\n\n _proto3.parse = function parse(data) {\n var _this = this; // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n\n\n if (data) {\n // Try to decode the data that we received.\n _this.buffer += _this.decoder.decode(data, {\n stream: true\n });\n }\n\n function collectNextLine() {\n var buffer = _this.buffer;\n var pos = 0;\n buffer = fixLineBreaks(buffer);\n\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n\n var line = buffer.slice(0, pos); // Advance the buffer early in case we fail below.\n\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n\n _this.buffer = buffer.slice(pos);\n return line;\n } // 3.2 WebVTT metadata header syntax\n\n\n function parseHeader(input) {\n parseOptions(input, function (k, v) {// switch (k) {\n // case 'region':\n // 3.3 WebVTT region metadata header syntax\n // console.log('parse region', v);\n // parseRegion(v);\n // break;\n // }\n }, /:/);\n } // 5.1 WebVTT file parsing.\n\n\n try {\n var line = '';\n\n if (_this.state === 'INITIAL') {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(_this.buffer)) {\n return this;\n }\n\n line = collectNextLine(); // strip of UTF-8 BOM if any\n // https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8\n\n var m = line.match(/^()?WEBVTT([ \\t].*)?$/);\n\n if (!m || !m[0]) {\n throw new Error('Malformed WebVTT signature.');\n }\n\n _this.state = 'HEADER';\n }\n\n var alreadyCollectedLine = false;\n\n while (_this.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(_this.buffer)) {\n return this;\n }\n\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n\n switch (_this.state) {\n case 'HEADER':\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n _this.state = 'ID';\n }\n\n continue;\n\n case 'NOTE':\n // Ignore NOTE blocks.\n if (!line) {\n _this.state = 'ID';\n }\n\n continue;\n\n case 'ID':\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n _this.state = 'NOTE';\n break;\n } // 19-29 - Allow any number of line terminators, then initialize new cue values.\n\n\n if (!line) {\n continue;\n }\n\n _this.cue = new _vttcue__WEBPACK_IMPORTED_MODULE_0__[\"default\"](0, 0, '');\n _this.state = 'CUE'; // 30-39 - Check if self line contains an optional identifier or timing data.\n\n if (line.indexOf('-->') === -1) {\n _this.cue.id = line;\n continue;\n }\n\n // Process line as start of a cue.\n\n /* falls through */\n\n case 'CUE':\n // 40 - Collect cue timings and settings.\n if (!_this.cue) {\n _this.state = 'BADCUE';\n continue;\n }\n\n try {\n parseCue(line, _this.cue, _this.regionList);\n } catch (e) {\n // In case of an error ignore rest of the cue.\n _this.cue = null;\n _this.state = 'BADCUE';\n continue;\n }\n\n _this.state = 'CUETEXT';\n continue;\n\n case 'CUETEXT':\n {\n var hasSubstring = line.indexOf('-->') !== -1; // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n if (_this.oncue && _this.cue) {\n _this.oncue(_this.cue);\n }\n\n _this.cue = null;\n _this.state = 'ID';\n continue;\n }\n\n if (_this.cue === null) {\n continue;\n }\n\n if (_this.cue.text) {\n _this.cue.text += '\\n';\n }\n\n _this.cue.text += line;\n }\n continue;\n\n case 'BADCUE':\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n _this.state = 'ID';\n }\n\n }\n }\n } catch (e) {\n // If we are currently parsing a cue, report what we have.\n if (_this.state === 'CUETEXT' && _this.cue && _this.oncue) {\n _this.oncue(_this.cue);\n }\n\n _this.cue = null; // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n\n _this.state = _this.state === 'INITIAL' ? 'BADWEBVTT' : 'BADCUE';\n }\n\n return this;\n };\n\n _proto3.flush = function flush() {\n var _this = this;\n\n try {\n // Finish decoding the stream.\n // _this.buffer += _this.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (_this.cue || _this.state === 'HEADER') {\n _this.buffer += '\\n\\n';\n\n _this.parse();\n } // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n\n\n if (_this.state === 'INITIAL' || _this.state === 'BADWEBVTT') {\n throw new Error('Malformed WebVTT signature.');\n }\n } catch (e) {\n if (_this.onparsingerror) {\n _this.onparsingerror(e);\n }\n }\n\n if (_this.onflush) {\n _this.onflush();\n }\n\n return this;\n };\n\n return VTTParser;\n}();\n\n/***/ }),\n\n/***/ \"./src/utils/webvtt-parser.ts\":\n/*!************************************!*\\\n !*** ./src/utils/webvtt-parser.ts ***!\n \\************************************/\n/*! exports provided: generateCueId, parseWebVTT */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateCueId\", function() { return generateCueId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseWebVTT\", function() { return parseWebVTT; });\n/* harmony import */ var _home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/polyfills/number */ \"./src/polyfills/number.ts\");\n/* harmony import */ var _vttparser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vttparser */ \"./src/utils/vttparser.ts\");\n/* harmony import */ var _demux_id3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../demux/id3 */ \"./src/demux/id3.ts\");\n/* harmony import */ var _timescale_conversion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./timescale-conversion */ \"./src/utils/timescale-conversion.ts\");\n/* harmony import */ var _remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../remux/mp4-remuxer */ \"./src/remux/mp4-remuxer.ts\");\n\n\n\n\n\n\n\n\nvar LINEBREAKS = /\\r\\n|\\n\\r|\\n|\\r/g; // String.prototype.startsWith is not supported in IE11\n\nvar startsWith = function startsWith(inputString, searchString, position) {\n if (position === void 0) {\n position = 0;\n }\n\n return inputString.slice(position, position + searchString.length) === searchString;\n};\n\nvar cueString2millis = function cueString2millis(timeString) {\n var ts = parseInt(timeString.slice(-3));\n var secs = parseInt(timeString.slice(-6, -4));\n var mins = parseInt(timeString.slice(-9, -7));\n var hours = timeString.length > 9 ? parseInt(timeString.substring(0, timeString.indexOf(':'))) : 0;\n\n if (!Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(ts) || !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(secs) || !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(mins) || !Object(_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__[\"isFiniteNumber\"])(hours)) {\n throw Error(\"Malformed X-TIMESTAMP-MAP: Local:\" + timeString);\n }\n\n ts += 1000 * secs;\n ts += 60 * 1000 * mins;\n ts += 60 * 60 * 1000 * hours;\n return ts;\n}; // From https://github.com/darkskyapp/string-hash\n\n\nvar hash = function hash(text) {\n var hash = 5381;\n var i = text.length;\n\n while (i) {\n hash = hash * 33 ^ text.charCodeAt(--i);\n }\n\n return (hash >>> 0).toString();\n}; // Create a unique hash id for a cue based on start/end times and text.\n// This helps timeline-controller to avoid showing repeated captions.\n\n\nfunction generateCueId(startTime, endTime, text) {\n return hash(startTime.toString()) + hash(endTime.toString()) + hash(text);\n}\n\nvar calculateOffset = function calculateOffset(vttCCs, cc, presentationTime) {\n var currCC = vttCCs[cc];\n var prevCC = vttCCs[currCC.prevCC]; // This is the first discontinuity or cues have been processed since the last discontinuity\n // Offset = current discontinuity time\n\n if (!prevCC || !prevCC.new && currCC.new) {\n vttCCs.ccOffset = vttCCs.presentationOffset = currCC.start;\n currCC.new = false;\n return;\n } // There have been discontinuities since cues were last parsed.\n // Offset = time elapsed\n\n\n while ((_prevCC = prevCC) !== null && _prevCC !== void 0 && _prevCC.new) {\n var _prevCC;\n\n vttCCs.ccOffset += currCC.start - prevCC.start;\n currCC.new = false;\n currCC = prevCC;\n prevCC = vttCCs[currCC.prevCC];\n }\n\n vttCCs.presentationOffset = presentationTime;\n};\n\nfunction parseWebVTT(vttByteArray, initPTS, timescale, vttCCs, cc, timeOffset, callBack, errorCallBack) {\n var parser = new _vttparser__WEBPACK_IMPORTED_MODULE_1__[\"VTTParser\"](); // Convert byteArray into string, replacing any somewhat exotic linefeeds with \"\\n\", then split on that character.\n // Uint8Array.prototype.reduce is not implemented in IE11\n\n var vttLines = Object(_demux_id3__WEBPACK_IMPORTED_MODULE_2__[\"utf8ArrayToStr\"])(new Uint8Array(vttByteArray)).trim().replace(LINEBREAKS, '\\n').split('\\n');\n var cues = [];\n var initPTS90Hz = Object(_timescale_conversion__WEBPACK_IMPORTED_MODULE_3__[\"toMpegTsClockFromTimescale\"])(initPTS, timescale);\n var cueTime = '00:00.000';\n var timestampMapMPEGTS = 0;\n var timestampMapLOCAL = 0;\n var parsingError;\n var inHeader = true;\n\n parser.oncue = function (cue) {\n // Adjust cue timing; clamp cues to start no earlier than - and drop cues that don't end after - 0 on timeline.\n var currCC = vttCCs[cc];\n var cueOffset = vttCCs.ccOffset; // Calculate subtitle PTS offset\n\n var webVttMpegTsMapOffset = (timestampMapMPEGTS - initPTS90Hz) / 90000; // Update offsets for new discontinuities\n\n if (currCC !== null && currCC !== void 0 && currCC.new) {\n if (timestampMapLOCAL !== undefined) {\n // When local time is provided, offset = discontinuity start time - local time\n cueOffset = vttCCs.ccOffset = currCC.start;\n } else {\n calculateOffset(vttCCs, cc, webVttMpegTsMapOffset);\n }\n }\n\n if (webVttMpegTsMapOffset) {\n // If we have MPEGTS, offset = presentation time + discontinuity offset\n cueOffset = webVttMpegTsMapOffset - vttCCs.presentationOffset;\n }\n\n var duration = cue.endTime - cue.startTime;\n var startTime = Object(_remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_4__[\"normalizePts\"])((cue.startTime + cueOffset - timestampMapLOCAL) * 90000, timeOffset * 90000) / 90000;\n cue.startTime = Math.max(startTime, 0);\n cue.endTime = Math.max(startTime + duration, 0); //trim trailing webvtt block whitespaces\n\n var text = cue.text.trim(); // Fix encoding of special characters\n\n cue.text = decodeURIComponent(encodeURIComponent(text)); // If the cue was not assigned an id from the VTT file (line above the content), create one.\n\n if (!cue.id) {\n cue.id = generateCueId(cue.startTime, cue.endTime, text);\n }\n\n if (cue.endTime > 0) {\n cues.push(cue);\n }\n };\n\n parser.onparsingerror = function (error) {\n parsingError = error;\n };\n\n parser.onflush = function () {\n if (parsingError) {\n errorCallBack(parsingError);\n return;\n }\n\n callBack(cues);\n }; // Go through contents line by line.\n\n\n vttLines.forEach(function (line) {\n if (inHeader) {\n // Look for X-TIMESTAMP-MAP in header.\n if (startsWith(line, 'X-TIMESTAMP-MAP=')) {\n // Once found, no more are allowed anyway, so stop searching.\n inHeader = false; // Extract LOCAL and MPEGTS.\n\n line.slice(16).split(',').forEach(function (timestamp) {\n if (startsWith(timestamp, 'LOCAL:')) {\n cueTime = timestamp.slice(6);\n } else if (startsWith(timestamp, 'MPEGTS:')) {\n timestampMapMPEGTS = parseInt(timestamp.slice(7));\n }\n });\n\n try {\n // Convert cue time to seconds\n timestampMapLOCAL = cueString2millis(cueTime) / 1000;\n } catch (error) {\n parsingError = error;\n } // Return without parsing X-TIMESTAMP-MAP line.\n\n\n return;\n } else if (line === '') {\n inHeader = false;\n }\n } // Parse line by default.\n\n\n parser.parse(line + '\\n');\n });\n parser.flush();\n}\n\n/***/ }),\n\n/***/ \"./src/utils/xhr-loader.ts\":\n/*!*********************************!*\\\n !*** ./src/utils/xhr-loader.ts ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.ts\");\n/* harmony import */ var _loader_load_stats__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../loader/load-stats */ \"./src/loader/load-stats.ts\");\n\n\nvar AGE_HEADER_LINE_REGEX = /^age:\\s*[\\d.]+\\s*$/m;\n\nvar XhrLoader = /*#__PURE__*/function () {\n function XhrLoader(config\n /* HlsConfig */\n ) {\n this.xhrSetup = void 0;\n this.requestTimeout = void 0;\n this.retryTimeout = void 0;\n this.retryDelay = void 0;\n this.config = null;\n this.callbacks = null;\n this.context = void 0;\n this.loader = null;\n this.stats = void 0;\n this.xhrSetup = config ? config.xhrSetup : null;\n this.stats = new _loader_load_stats__WEBPACK_IMPORTED_MODULE_1__[\"LoadStats\"]();\n this.retryDelay = 0;\n }\n\n var _proto = XhrLoader.prototype;\n\n _proto.destroy = function destroy() {\n this.callbacks = null;\n this.abortInternal();\n this.loader = null;\n this.config = null;\n };\n\n _proto.abortInternal = function abortInternal() {\n var loader = this.loader;\n self.clearTimeout(this.requestTimeout);\n self.clearTimeout(this.retryTimeout);\n\n if (loader) {\n loader.onreadystatechange = null;\n loader.onprogress = null;\n\n if (loader.readyState !== 4) {\n this.stats.aborted = true;\n loader.abort();\n }\n }\n };\n\n _proto.abort = function abort() {\n var _this$callbacks;\n\n this.abortInternal();\n\n if ((_this$callbacks = this.callbacks) !== null && _this$callbacks !== void 0 && _this$callbacks.onAbort) {\n this.callbacks.onAbort(this.stats, this.context, this.loader);\n }\n };\n\n _proto.load = function load(context, config, callbacks) {\n if (this.stats.loading.start) {\n throw new Error('Loader can only be used once.');\n }\n\n this.stats.loading.start = self.performance.now();\n this.context = context;\n this.config = config;\n this.callbacks = callbacks;\n this.retryDelay = config.retryDelay;\n this.loadInternal();\n };\n\n _proto.loadInternal = function loadInternal() {\n var config = this.config,\n context = this.context;\n\n if (!config) {\n return;\n }\n\n var xhr = this.loader = new self.XMLHttpRequest();\n var stats = this.stats;\n stats.loading.first = 0;\n stats.loaded = 0;\n var xhrSetup = this.xhrSetup;\n\n try {\n if (xhrSetup) {\n try {\n xhrSetup(xhr, context.url);\n } catch (e) {\n // fix xhrSetup: (xhr, url) => {xhr.setRequestHeader(\"Content-Language\", \"test\");}\n // not working, as xhr.setRequestHeader expects xhr.readyState === OPEN\n xhr.open('GET', context.url, true);\n xhrSetup(xhr, context.url);\n }\n }\n\n if (!xhr.readyState) {\n xhr.open('GET', context.url, true);\n }\n\n var headers = this.context.headers;\n\n if (headers) {\n for (var header in headers) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n } catch (e) {\n // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS\n this.callbacks.onError({\n code: xhr.status,\n text: e.message\n }, context, xhr);\n return;\n }\n\n if (context.rangeEnd) {\n xhr.setRequestHeader('Range', 'bytes=' + context.rangeStart + '-' + (context.rangeEnd - 1));\n }\n\n xhr.onreadystatechange = this.readystatechange.bind(this);\n xhr.onprogress = this.loadprogress.bind(this);\n xhr.responseType = context.responseType; // setup timeout before we perform request\n\n self.clearTimeout(this.requestTimeout);\n this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.timeout);\n xhr.send();\n };\n\n _proto.readystatechange = function readystatechange() {\n var context = this.context,\n xhr = this.loader,\n stats = this.stats;\n\n if (!context || !xhr) {\n return;\n }\n\n var readyState = xhr.readyState;\n var config = this.config; // don't proceed if xhr has been aborted\n\n if (stats.aborted) {\n return;\n } // >= HEADERS_RECEIVED\n\n\n if (readyState >= 2) {\n // clear xhr timeout and rearm it if readyState less than 4\n self.clearTimeout(this.requestTimeout);\n\n if (stats.loading.first === 0) {\n stats.loading.first = Math.max(self.performance.now(), stats.loading.start);\n }\n\n if (readyState === 4) {\n xhr.onreadystatechange = null;\n xhr.onprogress = null;\n var status = xhr.status; // http status between 200 to 299 are all successful\n\n if (status >= 200 && status < 300) {\n stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n var data;\n var len;\n\n if (context.responseType === 'arraybuffer') {\n data = xhr.response;\n len = data.byteLength;\n } else {\n data = xhr.responseText;\n len = data.length;\n }\n\n stats.loaded = stats.total = len;\n\n if (!this.callbacks) {\n return;\n }\n\n var onProgress = this.callbacks.onProgress;\n\n if (onProgress) {\n onProgress(stats, context, data, xhr);\n }\n\n if (!this.callbacks) {\n return;\n }\n\n var response = {\n url: xhr.responseURL,\n data: data\n };\n this.callbacks.onSuccess(response, stats, context, xhr);\n } else {\n // if max nb of retries reached or if http status between 400 and 499 (such error cannot be recovered, retrying is useless), return error\n if (stats.retry >= config.maxRetry || status >= 400 && status < 499) {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].error(status + \" while loading \" + context.url);\n this.callbacks.onError({\n code: status,\n text: xhr.statusText\n }, context, xhr);\n } else {\n // retry\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].warn(status + \" while loading \" + context.url + \", retrying in \" + this.retryDelay + \"...\"); // abort and reset internal state\n\n this.abortInternal();\n this.loader = null; // schedule retry\n\n self.clearTimeout(this.retryTimeout);\n this.retryTimeout = self.setTimeout(this.loadInternal.bind(this), this.retryDelay); // set exponential backoff\n\n this.retryDelay = Math.min(2 * this.retryDelay, config.maxRetryDelay);\n stats.retry++;\n }\n }\n } else {\n // readyState >= 2 AND readyState !==4 (readyState = HEADERS_RECEIVED || LOADING) rearm timeout as xhr not finished yet\n self.clearTimeout(this.requestTimeout);\n this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.timeout);\n }\n }\n };\n\n _proto.loadtimeout = function loadtimeout() {\n _utils_logger__WEBPACK_IMPORTED_MODULE_0__[\"logger\"].warn(\"timeout while loading \" + this.context.url);\n var callbacks = this.callbacks;\n\n if (callbacks) {\n this.abortInternal();\n callbacks.onTimeout(this.stats, this.context, this.loader);\n }\n };\n\n _proto.loadprogress = function loadprogress(event) {\n var stats = this.stats;\n stats.loaded = event.loaded;\n\n if (event.lengthComputable) {\n stats.total = event.total;\n }\n };\n\n _proto.getCacheAge = function getCacheAge() {\n var result = null;\n\n if (this.loader && AGE_HEADER_LINE_REGEX.test(this.loader.getAllResponseHeaders())) {\n var ageHeader = this.loader.getResponseHeader('age');\n result = ageHeader ? parseFloat(ageHeader) : null;\n }\n\n return result;\n };\n\n return XhrLoader;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (XhrLoader);\n\n/***/ })\n\n/******/ })[\"default\"];\n});\n//# sourceMappingURL=hls.js.map","/*!\n * html-attributes\n * https://github.com/alexmingoia/html-attributes\n */\n\n'use strict';\n\n/**\n * @module html-attributes\n */\n\nmodule.exports = {\n \"abbr\": \"abbr\",\n \"accept\": \"accept\",\n \"acceptCharset\": \"accept-charset\",\n \"accessKey\": \"accesskey\",\n \"action\": \"action\",\n \"allowFullScreen\": \"allowfullscreen\",\n \"allowTransparency\": \"allowtransparency\",\n \"alt\": \"alt\",\n \"async\": \"async\",\n \"autoComplete\": \"autocomplete\",\n \"autoFocus\": \"autofocus\",\n \"autoPlay\": \"autoplay\",\n \"cellPadding\": \"cellpadding\",\n \"cellSpacing\": \"cellspacing\",\n \"challenge\": \"challenge\",\n \"charset\": \"charset\",\n \"checked\": \"checked\",\n \"cite\": \"cite\",\n \"class\": \"class\",\n \"className\": \"class\",\n \"cols\": \"cols\",\n \"colSpan\": \"colspan\",\n \"command\": \"command\",\n \"content\": \"content\",\n \"contentEditable\": \"contenteditable\",\n \"contextMenu\": \"contextmenu\",\n \"controls\": \"controls\",\n \"coords\": \"coords\",\n \"crossOrigin\": \"crossorigin\",\n \"data\": \"data\",\n \"dateTime\": \"datetime\",\n \"default\": \"default\",\n \"defer\": \"defer\",\n \"dir\": \"dir\",\n \"disabled\": \"disabled\",\n \"download\": \"download\",\n \"draggable\": \"draggable\",\n \"dropzone\": \"dropzone\",\n \"encType\": \"enctype\",\n \"for\": \"for\",\n \"form\": \"form\",\n \"formAction\": \"formaction\",\n \"formEncType\": \"formenctype\",\n \"formMethod\": \"formmethod\",\n \"formNoValidate\": \"formnovalidate\",\n \"formTarget\": \"formtarget\",\n \"frameBorder\": \"frameBorder\",\n \"headers\": \"headers\",\n \"height\": \"height\",\n \"hidden\": \"hidden\",\n \"high\": \"high\",\n \"href\": \"href\",\n \"hrefLang\": \"hreflang\",\n \"htmlFor\": \"for\",\n \"httpEquiv\": \"http-equiv\",\n \"icon\": \"icon\",\n \"id\": \"id\",\n \"inputMode\": \"inputmode\",\n \"isMap\": \"ismap\",\n \"itemId\": \"itemid\",\n \"itemProp\": \"itemprop\",\n \"itemRef\": \"itemref\",\n \"itemScope\": \"itemscope\",\n \"itemType\": \"itemtype\",\n \"kind\": \"kind\",\n \"label\": \"label\",\n \"lang\": \"lang\",\n \"list\": \"list\",\n \"loop\": \"loop\",\n \"manifest\": \"manifest\",\n \"max\": \"max\",\n \"maxLength\": \"maxlength\",\n \"media\": \"media\",\n \"mediaGroup\": \"mediagroup\",\n \"method\": \"method\",\n \"min\": \"min\",\n \"minLength\": \"minlength\",\n \"multiple\": \"multiple\",\n \"muted\": \"muted\",\n \"name\": \"name\",\n \"noValidate\": \"novalidate\",\n \"open\": \"open\",\n \"optimum\": \"optimum\",\n \"pattern\": \"pattern\",\n \"ping\": \"ping\",\n \"placeholder\": \"placeholder\",\n \"poster\": \"poster\",\n \"preload\": \"preload\",\n \"radioGroup\": \"radiogroup\",\n \"readOnly\": \"readonly\",\n \"rel\": \"rel\",\n \"required\": \"required\",\n \"role\": \"role\",\n \"rows\": \"rows\",\n \"rowSpan\": \"rowspan\",\n \"sandbox\": \"sandbox\",\n \"scope\": \"scope\",\n \"scoped\": \"scoped\",\n \"scrolling\": \"scrolling\",\n \"seamless\": \"seamless\",\n \"selected\": \"selected\",\n \"shape\": \"shape\",\n \"size\": \"size\",\n \"sizes\": \"sizes\",\n \"sortable\": \"sortable\",\n \"span\": \"span\",\n \"spellCheck\": \"spellcheck\",\n \"src\": \"src\",\n \"srcDoc\": \"srcdoc\",\n \"srcSet\": \"srcset\",\n \"start\": \"start\",\n \"step\": \"step\",\n \"style\": \"style\",\n \"tabIndex\": \"tabindex\",\n \"target\": \"target\",\n \"title\": \"title\",\n \"translate\": \"translate\",\n \"type\": \"type\",\n \"typeMustMatch\": \"typemustmatch\",\n \"useMap\": \"usemap\",\n \"value\": \"value\",\n \"width\": \"width\",\n \"wmode\": \"wmode\",\n \"wrap\": \"wrap\"\n};\n","import e from\"void-elements\";var t=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function n(n){var r={type:\"tag\",name:\"\",voidElement:!1,attrs:{},children:[]},i=n.match(/<\\/?([^\\s]+?)[/\\s>]/);if(i&&(r.name=i[1],(e[i[1]]||\"/\"===n.charAt(n.length-2))&&(r.voidElement=!0),r.name.startsWith(\"!--\"))){var s=n.indexOf(\"--\\x3e\");return{type:\"comment\",comment:-1!==s?n.slice(4,s):\"\"}}for(var a=new RegExp(t),c=null;null!==(c=a.exec(n));)if(c[0].trim())if(c[1]){var o=c[1].trim(),l=[o,\"\"];o.indexOf(\"=\")>-1&&(l=o.split(\"=\")),r.attrs[l[0]]=l[1],a.lastIndex--}else c[2]&&(r.attrs[c[2]]=c[3].trim().substring(1,c[3].length-1));return r}var r=/<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g,i=/^\\s*$/,s=Object.create(null);function a(e,t){switch(t.type){case\"text\":return e+t.content;case\"tag\":return e+=\"<\"+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+'=\"'+e[n]+'\"');return t.length?\" \"+t.join(\" \"):\"\"}(t.attrs):\"\")+(t.voidElement?\"/>\":\">\"),t.voidElement?e:e+t.children.reduce(a,\"\")+\"</\"+t.name+\">\";case\"comment\":return e+\"\\x3c!--\"+t.comment+\"--\\x3e\"}}var c={parse:function(e,t){t||(t={}),t.components||(t.components=s);var a,c=[],o=[],l=-1,m=!1;if(0!==e.indexOf(\"<\")){var u=e.indexOf(\"<\");c.push({type:\"text\",content:-1===u?e:e.substring(0,u)})}return e.replace(r,function(r,s){if(m){if(r!==\"</\"+a.name+\">\")return;m=!1}var u,f=\"/\"!==r.charAt(1),h=r.startsWith(\"\\x3c!--\"),p=s+r.length,d=e.charAt(p);if(h){var v=n(r);return l<0?(c.push(v),c):((u=o[l]).children.push(v),c)}if(f&&(l++,\"tag\"===(a=n(r)).type&&t.components[a.name]&&(a.type=\"component\",m=!0),a.voidElement||m||!d||\"<\"===d||a.children.push({type:\"text\",content:e.slice(p,e.indexOf(\"<\",p))}),0===l&&c.push(a),(u=o[l-1])&&u.children.push(a),o[l]=a),(!f||a.voidElement)&&(l>-1&&(a.voidElement||a.name===r.slice(2,-1))&&(l--,a=-1===l?c:o[l]),!m&&\"<\"!==d&&d)){u=-1===l?c:o[l].children;var x=e.indexOf(\"<\",p),g=e.slice(p,-1===x?void 0:x);i.test(g)&&(g=\" \"),(x>-1&&l+u.length>=0||\" \"!==g)&&u.push({type:\"text\",content:g})}}),c},stringify:function(e){return e.reduce(function(e,t){return e+a(\"\",t)},\"\")}};export default c;\n//# sourceMappingURL=html-parse-stringify.module.js.map\n","'use strict';\n\nvar _typeof = require('@babel/runtime/helpers/typeof');\nvar _classCallCheck = require('@babel/runtime/helpers/classCallCheck');\nvar _createClass = require('@babel/runtime/helpers/createClass');\nvar _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');\nvar _inherits = require('@babel/runtime/helpers/inherits');\nvar _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');\nvar _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');\nvar _defineProperty = require('@babel/runtime/helpers/defineProperty');\nvar _toArray = require('@babel/runtime/helpers/toArray');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);\nvar _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);\nvar _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);\nvar _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);\nvar _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);\nvar _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);\nvar _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);\nvar _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);\nvar _toArray__default = /*#__PURE__*/_interopDefaultLegacy(_toArray);\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck__default[\"default\"](this, Logger);\n this.init(concreteLogger, options);\n }\n _createClass__default[\"default\"](Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread$6(_objectSpread$6({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }, {\n key: \"clone\",\n value: function clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n }]);\n return Logger;\n}();\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck__default[\"default\"](this, EventEmitter);\n this.observers = {};\n }\n _createClass__default[\"default\"](EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$5(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n current = current[paths[i]];\n }\n return current;\n}\nvar ResourceStore = function (_EventEmitter) {\n _inherits__default[\"default\"](ResourceStore, _EventEmitter);\n var _super = _createSuper$3(ResourceStore);\n function ResourceStore(data) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n _classCallCheck__default[\"default\"](this, ResourceStore);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized__default[\"default\"](_this));\n }\n _this.data = data || {};\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n return _this;\n }\n _createClass__default[\"default\"](ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$5(_objectSpread$5({}, pack), resources);\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$5(_objectSpread$5({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$4(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar checkedLoadedFor = {};\nvar Translator = function (_EventEmitter) {\n _inherits__default[\"default\"](Translator, _EventEmitter);\n var _super = _createSuper$2(Translator);\n function Translator(services) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck__default[\"default\"](this, Translator);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized__default[\"default\"](_this));\n }\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized__default[\"default\"](_this));\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n _createClass__default[\"default\"](Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n if (_typeof__default[\"default\"](options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n resolved.res = \"\".concat(namespace).concat(nsSeparator).concat(key);\n return resolved;\n }\n return \"\".concat(namespace).concat(nsSeparator).concat(key);\n }\n if (returnDetails) {\n resolved.res = key;\n return resolved;\n }\n return key;\n }\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$4(_objectSpread$4({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$4(_objectSpread$4({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$4(_objectSpread$4({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n _this2.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$4(_objectSpread$4({}, options), {\n interpolation: _objectSpread$4(_objectSpread$4({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n var nestBef;\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n return null;\n }\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$4({\n i18nResolved: resolved\n }, options) : options, this);\n }\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n var extracted = _this4.extractFromKey(k, options);\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = \"\".concat(_this4.options.pluralSeparator, \"zero\");\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n var possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n }]);\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck__default[\"default\"](this, LanguageUtil);\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n _createClass__default[\"default\"](LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n var cleanedLng = _this.formatLanguageCode(code);\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n var lngOnly = _this.getLanguagePartFromCode(code);\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n var addCode = function addCode(c) {\n if (!c) return;\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck__default[\"default\"](this, PluralResolver);\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n _createClass__default[\"default\"](PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck__default[\"default\"](this, Interpolator);\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n this.init(options);\n }\n _createClass__default[\"default\"](Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n var matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && options.hasOwnProperty(matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n var clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n var matchedSingleQuotes = optionsString.match(/'/g);\n var matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n clonedOptions = _objectSpread$3({}, options);\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n var doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n }]);\n return Interpolator;\n}();\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n var _opt$split = opt.split(':'),\n _opt$split2 = _toArray__default[\"default\"](_opt$split),\n key = _opt$split2[0],\n rest = _opt$split2.slice(1);\n var val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n var cache = {};\n return function invokeFormatter(val, lng, options) {\n var key = lng + JSON.stringify(options);\n var formatter = cache[key];\n if (!formatter) {\n formatter = fn(lng, options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck__default[\"default\"](this, Formatter);\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.NumberFormat(lng, options);\n return function (val) {\n return formatter.format(val);\n };\n }),\n currency: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.NumberFormat(lng, _objectSpread$2(_objectSpread$2({}, options), {}, {\n style: 'currency'\n }));\n return function (val) {\n return formatter.format(val);\n };\n }),\n datetime: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.DateTimeFormat(lng, _objectSpread$2({}, options));\n return function (val) {\n return formatter.format(val);\n };\n }),\n relativetime: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.RelativeTimeFormat(lng, _objectSpread$2({}, options));\n return function (val) {\n return formatter.format(val, options.range || 'day');\n };\n }),\n list: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.ListFormat(lng, _objectSpread$2({}, options));\n return function (val) {\n return formatter.format(val);\n };\n })\n };\n this.init(options);\n }\n _createClass__default[\"default\"](Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n }, {\n key: \"addCached\",\n value: function addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng, options) {\n var _this = this;\n var formats = _format.split(this.formatSeparator);\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n if (_this.formats[formatName]) {\n var formatted = mem;\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$2(_objectSpread$2(_objectSpread$2({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n return mem;\n }, value);\n return result;\n }\n }]);\n return Formatter;\n}();\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nvar Connector = function (_EventEmitter) {\n _inherits__default[\"default\"](Connector, _EventEmitter);\n var _super = _createSuper$1(Connector);\n function Connector(backend, store, services) {\n var _this;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n _classCallCheck__default[\"default\"](this, Connector);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized__default[\"default\"](_this));\n }\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.waitingReads = [];\n _this.maxParallelReads = options.maxParallelReads || 10;\n _this.readingCalls = 0;\n _this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n _this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n _this.state = {};\n _this.queue = [];\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n return _this;\n }\n _createClass__default[\"default\"](Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n var toLoad = {};\n var pending = {};\n var toLoadLanguages = {};\n var toLoadNamespaces = {};\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending: pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = {};\n var loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(function (ns) {\n if (loaded[l][ns] === undefined) loaded[l][ns] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng: lng,\n ns: ns,\n fcName: fcName,\n tried: tried,\n wait: wait,\n callback: callback\n });\n return;\n }\n this.readingCalls++;\n var resolver = function resolver(err, data) {\n _this3.readingCalls--;\n if (_this3.waitingReads.length > 0) {\n var next = _this3.waitingReads.shift();\n _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < _this3.maxRetries) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n var fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n var r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(function (data) {\n return resolver(null, data);\n })[\"catch\"](resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n var clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : function () {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n var opts = _objectSpread$1(_objectSpread$1({}, options), {}, {\n isUpdate: isUpdate\n });\n var fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n var r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(function (data) {\n return clb(null, data);\n })[\"catch\"](clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof__default[\"default\"](args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (_typeof__default[\"default\"](args[2]) === 'object' || _typeof__default[\"default\"](args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nvar I18n = function (_EventEmitter) {\n _inherits__default[\"default\"](I18n, _EventEmitter);\n var _super = _createSuper(I18n);\n function I18n() {\n var _this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n _classCallCheck__default[\"default\"](this, I18n);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized__default[\"default\"](_this));\n }\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized__default[\"default\"](_this));\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n return _possibleConstructorReturn__default[\"default\"](_this, _assertThisInitialized__default[\"default\"](_this));\n }\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n return _this;\n }\n _createClass__default[\"default\"](I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n var defOpts = get();\n this.options = _objectSpread(_objectSpread(_objectSpread({}, defOpts), this.options), transformOptions(options));\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread(_objectSpread({}, defOpts.interpolation), this.options.interpolation);\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n var formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n return _this2;\n };\n });\n var deferred = defer();\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n _this2.emit('initialized', _this2.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n var append = function append(lng) {\n if (!lng) return;\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n }, {\n key: \"setResolvedLanguage\",\n value: function setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (var li = 0; li < this.languages.length; li++) {\n var lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n _this4.setResolvedLanguage(l);\n };\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n _this4.translator.changeLanguage(l);\n _this4.isLanguageChangingTo = undefined;\n _this4.emit('languageChanged', l);\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector && _this4.services.languageDetector.cacheUserLanguage) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n var fixedT = function fixedT(key, opts) {\n var options;\n if (_typeof__default[\"default\"](opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread({}, opts);\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey = options.keyPrefix ? \"\".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;\n return _this5.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n var lng = this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n var deferred = defer();\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n var languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var mergedOptions = _objectSpread(_objectSpread(_objectSpread({}, this.options), options), {\n isClone: true\n });\n var clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n return I18n;\n}(EventEmitter);\n_defineProperty__default[\"default\"](I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nmodule.exports = instance;\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","module.exports = [\n {\"name\":\"Abkhaz\", \"local\":\"Аҧсуа\", \"1\":\"ab\", \"2\":\"abk\", \"2T\":\"abk\", \"2B\":\"abk\", \"3\":\"abk\"},\n {\"name\":\"Afar\", \"local\":\"Afaraf\", \"1\":\"aa\", \"2\":\"aar\", \"2T\":\"aar\", \"2B\":\"aar\", \"3\":\"aar\"},\n {\"name\":\"Afrikaans\", \"local\":\"Afrikaans\", \"1\":\"af\", \"2\":\"afr\", \"2T\":\"afr\", \"2B\":\"afr\", \"3\":\"afr\"},\n {\"name\":\"Akan\", \"local\":\"Akan\", \"1\":\"ak\", \"2\":\"aka\", \"2T\":\"aka\", \"2B\":\"aka\", \"3\":\"aka\"},\n {\"name\":\"Albanian\", \"local\":\"Shqip\", \"1\":\"sq\", \"2\":\"sqi\", \"2T\":\"sqi\", \"2B\":\"alb\", \"3\":\"sqi\"},\n {\"name\":\"Amharic\", \"local\":\"አማርኛ\", \"1\":\"am\", \"2\":\"amh\", \"2T\":\"amh\", \"2B\":\"amh\", \"3\":\"amh\"},\n {\"name\":\"Arabic\", \"local\":\"العربية\", \"1\":\"ar\", \"2\":\"ara\", \"2T\":\"ara\", \"2B\":\"ara\", \"3\":\"ara\"},\n {\"name\":\"Aragonese\", \"local\":\"Aragonés\", \"1\":\"an\", \"2\":\"arg\", \"2T\":\"arg\", \"2B\":\"arg\", \"3\":\"arg\"},\n {\"name\":\"Armenian\", \"local\":\"Հայերեն\", \"1\":\"hy\", \"2\":\"hye\", \"2T\":\"hye\", \"2B\":\"arm\", \"3\":\"hye\"},\n {\"name\":\"Assamese\", \"local\":\"অসমীয়া\", \"1\":\"as\", \"2\":\"asm\", \"2T\":\"asm\", \"2B\":\"asm\", \"3\":\"asm\"},\n {\"name\":\"Avaric\", \"local\":\"Авар\", \"1\":\"av\", \"2\":\"ava\", \"2T\":\"ava\", \"2B\":\"ava\", \"3\":\"ava\"},\n {\"name\":\"Avestan\", \"local\":\"avesta\", \"1\":\"ae\", \"2\":\"ave\", \"2T\":\"ave\", \"2B\":\"ave\", \"3\":\"ave\"},\n {\"name\":\"Aymara\", \"local\":\"Aymar\", \"1\":\"ay\", \"2\":\"aym\", \"2T\":\"aym\", \"2B\":\"aym\", \"3\":\"aym\"},\n {\"name\":\"Azerbaijani\", \"local\":\"Azərbaycanca\", \"1\":\"az\", \"2\":\"aze\", \"2T\":\"aze\", \"2B\":\"aze\", \"3\":\"aze\"},\n {\"name\":\"Bambara\", \"local\":\"Bamanankan\", \"1\":\"bm\", \"2\":\"bam\", \"2T\":\"bam\", \"2B\":\"bam\", \"3\":\"bam\"},\n {\"name\":\"Bashkir\", \"local\":\"Башҡортса\", \"1\":\"ba\", \"2\":\"bak\", \"2T\":\"bak\", \"2B\":\"bak\", \"3\":\"bak\"},\n {\"name\":\"Basque\", \"local\":\"Euskara\", \"1\":\"eu\", \"2\":\"eus\", \"2T\":\"eus\", \"2B\":\"baq\", \"3\":\"eus\"},\n {\"name\":\"Belarusian\", \"local\":\"Беларуская\", \"1\":\"be\", \"2\":\"bel\", \"2T\":\"bel\", \"2B\":\"bel\", \"3\":\"bel\"},\n {\"name\":\"Bengali\", \"local\":\"বাংলা\", \"1\":\"bn\", \"2\":\"ben\", \"2T\":\"ben\", \"2B\":\"ben\", \"3\":\"ben\"},\n {\"name\":\"Bihari\", \"local\":\"भोजपुरी\", \"1\":\"bh\", \"2\":\"bih\", \"2T\":\"bih\", \"2B\":\"bih\", \"3\":\"bih\"},\n {\"name\":\"Bislama\", \"local\":\"Bislama\", \"1\":\"bi\", \"2\":\"bis\", \"2T\":\"bis\", \"2B\":\"bis\", \"3\":\"bis\"},\n {\"name\":\"Bosnian\", \"local\":\"Bosanski\", \"1\":\"bs\", \"2\":\"bos\", \"2T\":\"bos\", \"2B\":\"bos\", \"3\":\"bos\"},\n {\"name\":\"Breton\", \"local\":\"Brezhoneg\", \"1\":\"br\", \"2\":\"bre\", \"2T\":\"bre\", \"2B\":\"bre\", \"3\":\"bre\"},\n {\"name\":\"Bulgarian\", \"local\":\"Български\", \"1\":\"bg\", \"2\":\"bul\", \"2T\":\"bul\", \"2B\":\"bul\", \"3\":\"bul\"},\n {\"name\":\"Burmese\", \"local\":\"မြန်မာဘာသာ\", \"1\":\"my\", \"2\":\"mya\", \"2T\":\"mya\", \"2B\":\"bur\", \"3\":\"mya\"},\n {\"name\":\"Catalan\", \"local\":\"Català\", \"1\":\"ca\", \"2\":\"cat\", \"2T\":\"cat\", \"2B\":\"cat\", \"3\":\"cat\"},\n {\"name\":\"Chamorro\", \"local\":\"Chamoru\", \"1\":\"ch\", \"2\":\"cha\", \"2T\":\"cha\", \"2B\":\"cha\", \"3\":\"cha\"},\n {\"name\":\"Chechen\", \"local\":\"Нохчийн\", \"1\":\"ce\", \"2\":\"che\", \"2T\":\"che\", \"2B\":\"che\", \"3\":\"che\"},\n {\"name\":\"Chichewa\", \"local\":\"Chichewa\", \"1\":\"ny\", \"2\":\"nya\", \"2T\":\"nya\", \"2B\":\"nya\", \"3\":\"nya\"},\n {\"name\":\"Chinese\", \"local\":\"中文\", \"1\":\"zh\", \"2\":\"zho\", \"2T\":\"zho\", \"2B\":\"chi\", \"3\":\"zho\"},\n {\"name\":\"Chuvash\", \"local\":\"Чӑвашла\", \"1\":\"cv\", \"2\":\"chv\", \"2T\":\"chv\", \"2B\":\"chv\", \"3\":\"chv\"},\n {\"name\":\"Cornish\", \"local\":\"Kernewek\", \"1\":\"kw\", \"2\":\"cor\", \"2T\":\"cor\", \"2B\":\"cor\", \"3\":\"cor\"},\n {\"name\":\"Corsican\", \"local\":\"Corsu\", \"1\":\"co\", \"2\":\"cos\", \"2T\":\"cos\", \"2B\":\"cos\", \"3\":\"cos\"},\n {\"name\":\"Cree\", \"local\":\"ᓀᐦᐃᔭᐍᐏᐣ\", \"1\":\"cr\", \"2\":\"cre\", \"2T\":\"cre\", \"2B\":\"cre\", \"3\":\"cre\"},\n {\"name\":\"Croatian\", \"local\":\"Hrvatski\", \"1\":\"hr\", \"2\":\"hrv\", \"2T\":\"hrv\", \"2B\":\"hrv\", \"3\":\"hrv\"},\n {\"name\":\"Czech\", \"local\":\"Čeština\", \"1\":\"cs\", \"2\":\"ces\", \"2T\":\"ces\", \"2B\":\"cze\", \"3\":\"ces\"},\n {\"name\":\"Danish\", \"local\":\"Dansk\", \"1\":\"da\", \"2\":\"dan\", \"2T\":\"dan\", \"2B\":\"dan\", \"3\":\"dan\"},\n {\"name\":\"Divehi\", \"local\":\"Divehi\", \"1\":\"dv\", \"2\":\"div\", \"2T\":\"div\", \"2B\":\"div\", \"3\":\"div\"},\n {\"name\":\"Dutch\", \"local\":\"Nederlands\", \"1\":\"nl\", \"2\":\"nld\", \"2T\":\"nld\", \"2B\":\"dut\", \"3\":\"nld\"},\n {\"name\":\"Dzongkha\", \"local\":\"རྫོང་ཁ\", \"1\":\"dz\", \"2\":\"dzo\", \"2T\":\"dzo\", \"2B\":\"dzo\", \"3\":\"dzo\"},\n {\"name\":\"English\", \"local\":\"English\", \"1\":\"en\", \"2\":\"eng\", \"2T\":\"eng\", \"2B\":\"eng\", \"3\":\"eng\"},\n {\"name\":\"Esperanto\", \"local\":\"Esperanto\", \"1\":\"eo\", \"2\":\"epo\", \"2T\":\"epo\", \"2B\":\"epo\", \"3\":\"epo\"},\n {\"name\":\"Estonian\", \"local\":\"Eesti\", \"1\":\"et\", \"2\":\"est\", \"2T\":\"est\", \"2B\":\"est\", \"3\":\"est\"},\n {\"name\":\"Ewe\", \"local\":\"Eʋegbe\", \"1\":\"ee\", \"2\":\"ewe\", \"2T\":\"ewe\", \"2B\":\"ewe\", \"3\":\"ewe\"},\n {\"name\":\"Faroese\", \"local\":\"Føroyskt\", \"1\":\"fo\", \"2\":\"fao\", \"2T\":\"fao\", \"2B\":\"fao\", \"3\":\"fao\"},\n {\"name\":\"Fijian\", \"local\":\"Na Vosa Vaka-Viti\", \"1\":\"fj\", \"2\":\"fij\", \"2T\":\"fij\", \"2B\":\"fij\", \"3\":\"fij\"},\n {\"name\":\"Finnish\", \"local\":\"Suomi\", \"1\":\"fi\", \"2\":\"fin\", \"2T\":\"fin\", \"2B\":\"fin\", \"3\":\"fin\"},\n {\"name\":\"French\", \"local\":\"Français\", \"1\":\"fr\", \"2\":\"fra\", \"2T\":\"fra\", \"2B\":\"fre\", \"3\":\"fra\"},\n {\"name\":\"Fula\", \"local\":\"Fulfulde\", \"1\":\"ff\", \"2\":\"ful\", \"2T\":\"ful\", \"2B\":\"ful\", \"3\":\"ful\"},\n {\"name\":\"Galician\", \"local\":\"Galego\", \"1\":\"gl\", \"2\":\"glg\", \"2T\":\"glg\", \"2B\":\"glg\", \"3\":\"glg\"},\n {\"name\":\"Georgian\", \"local\":\"ქართული\", \"1\":\"ka\", \"2\":\"kat\", \"2T\":\"kat\", \"2B\":\"geo\", \"3\":\"kat\"},\n {\"name\":\"German\", \"local\":\"Deutsch\", \"1\":\"de\", \"2\":\"deu\", \"2T\":\"deu\", \"2B\":\"ger\", \"3\":\"deu\"},\n {\"name\":\"Greek\", \"local\":\"Ελληνικά\", \"1\":\"el\", \"2\":\"ell\", \"2T\":\"ell\", \"2B\":\"gre\", \"3\":\"ell\"},\n {\"name\":\"Guaraní\", \"local\":\"Avañe'ẽ\", \"1\":\"gn\", \"2\":\"grn\", \"2T\":\"grn\", \"2B\":\"grn\", \"3\":\"grn\"},\n {\"name\":\"Gujarati\", \"local\":\"ગુજરાતી\", \"1\":\"gu\", \"2\":\"guj\", \"2T\":\"guj\", \"2B\":\"guj\", \"3\":\"guj\"},\n {\"name\":\"Haitian\", \"local\":\"Kreyòl Ayisyen\", \"1\":\"ht\", \"2\":\"hat\", \"2T\":\"hat\", \"2B\":\"hat\", \"3\":\"hat\"},\n {\"name\":\"Hausa\", \"local\":\"هَوُسَ\", \"1\":\"ha\", \"2\":\"hau\", \"2T\":\"hau\", \"2B\":\"hau\", \"3\":\"hau\"},\n {\"name\":\"Hebrew\", \"local\":\"עברית\", \"1\":\"he\", \"2\":\"heb\", \"2T\":\"heb\", \"2B\":\"heb\", \"3\":\"heb\"},\n {\"name\":\"Herero\", \"local\":\"Otjiherero\", \"1\":\"hz\", \"2\":\"her\", \"2T\":\"her\", \"2B\":\"her\", \"3\":\"her\"},\n {\"name\":\"Hindi\", \"local\":\"हिन्दी\", \"1\":\"hi\", \"2\":\"hin\", \"2T\":\"hin\", \"2B\":\"hin\", \"3\":\"hin\"},\n {\"name\":\"Hiri Motu\", \"local\":\"Hiri Motu\", \"1\":\"ho\", \"2\":\"hmo\", \"2T\":\"hmo\", \"2B\":\"hmo\", \"3\":\"hmo\"},\n {\"name\":\"Hungarian\", \"local\":\"Magyar\", \"1\":\"hu\", \"2\":\"hun\", \"2T\":\"hun\", \"2B\":\"hun\", \"3\":\"hun\"},\n {\"name\":\"Interlingua\", \"local\":\"Interlingua\", \"1\":\"ia\", \"2\":\"ina\", \"2T\":\"ina\", \"2B\":\"ina\", \"3\":\"ina\"},\n {\"name\":\"Indonesian\", \"local\":\"Bahasa Indonesia\", \"1\":\"id\", \"2\":\"ind\", \"2T\":\"ind\", \"2B\":\"ind\", \"3\":\"ind\"},\n {\"name\":\"Interlingue\", \"local\":\"Interlingue\", \"1\":\"ie\", \"2\":\"ile\", \"2T\":\"ile\", \"2B\":\"ile\", \"3\":\"ile\"},\n {\"name\":\"Irish\", \"local\":\"Gaeilge\", \"1\":\"ga\", \"2\":\"gle\", \"2T\":\"gle\", \"2B\":\"gle\", \"3\":\"gle\"},\n {\"name\":\"Igbo\", \"local\":\"Igbo\", \"1\":\"ig\", \"2\":\"ibo\", \"2T\":\"ibo\", \"2B\":\"ibo\", \"3\":\"ibo\"},\n {\"name\":\"Inupiaq\", \"local\":\"Iñupiak\", \"1\":\"ik\", \"2\":\"ipk\", \"2T\":\"ipk\", \"2B\":\"ipk\", \"3\":\"ipk\"},\n {\"name\":\"Ido\", \"local\":\"Ido\", \"1\":\"io\", \"2\":\"ido\", \"2T\":\"ido\", \"2B\":\"ido\", \"3\":\"ido\"},\n {\"name\":\"Icelandic\", \"local\":\"Íslenska\", \"1\":\"is\", \"2\":\"isl\", \"2T\":\"isl\", \"2B\":\"ice\", \"3\":\"isl\"},\n {\"name\":\"Italian\", \"local\":\"Italiano\", \"1\":\"it\", \"2\":\"ita\", \"2T\":\"ita\", \"2B\":\"ita\", \"3\":\"ita\"},\n {\"name\":\"Inuktitut\", \"local\":\"ᐃᓄᒃᑎᑐᑦ\", \"1\":\"iu\", \"2\":\"iku\", \"2T\":\"iku\", \"2B\":\"iku\", \"3\":\"iku\"},\n {\"name\":\"Japanese\", \"local\":\"日本語\", \"1\":\"ja\", \"2\":\"jpn\", \"2T\":\"jpn\", \"2B\":\"jpn\", \"3\":\"jpn\"},\n {\"name\":\"Javanese\", \"local\":\"Basa Jawa\", \"1\":\"jv\", \"2\":\"jav\", \"2T\":\"jav\", \"2B\":\"jav\", \"3\":\"jav\"},\n {\"name\":\"Kalaallisut\", \"local\":\"Kalaallisut\", \"1\":\"kl\", \"2\":\"kal\", \"2T\":\"kal\", \"2B\":\"kal\", \"3\":\"kal\"},\n {\"name\":\"Kannada\", \"local\":\"ಕನ್ನಡ\", \"1\":\"kn\", \"2\":\"kan\", \"2T\":\"kan\", \"2B\":\"kan\", \"3\":\"kan\"},\n {\"name\":\"Kanuri\", \"local\":\"Kanuri\", \"1\":\"kr\", \"2\":\"kau\", \"2T\":\"kau\", \"2B\":\"kau\", \"3\":\"kau\"},\n {\"name\":\"Kashmiri\", \"local\":\"كشميري\", \"1\":\"ks\", \"2\":\"kas\", \"2T\":\"kas\", \"2B\":\"kas\", \"3\":\"kas\"},\n {\"name\":\"Kazakh\", \"local\":\"Қазақша\", \"1\":\"kk\", \"2\":\"kaz\", \"2T\":\"kaz\", \"2B\":\"kaz\", \"3\":\"kaz\"},\n {\"name\":\"Khmer\", \"local\":\"ភាសាខ្មែរ\", \"1\":\"km\", \"2\":\"khm\", \"2T\":\"khm\", \"2B\":\"khm\", \"3\":\"khm\"},\n {\"name\":\"Kikuyu\", \"local\":\"Gĩkũyũ\", \"1\":\"ki\", \"2\":\"kik\", \"2T\":\"kik\", \"2B\":\"kik\", \"3\":\"kik\"},\n {\"name\":\"Kinyarwanda\", \"local\":\"Kinyarwanda\", \"1\":\"rw\", \"2\":\"kin\", \"2T\":\"kin\", \"2B\":\"kin\", \"3\":\"kin\"},\n {\"name\":\"Kyrgyz\", \"local\":\"Кыргызча\", \"1\":\"ky\", \"2\":\"kir\", \"2T\":\"kir\", \"2B\":\"kir\", \"3\":\"kir\"},\n {\"name\":\"Komi\", \"local\":\"Коми\", \"1\":\"kv\", \"2\":\"kom\", \"2T\":\"kom\", \"2B\":\"kom\", \"3\":\"kom\"},\n {\"name\":\"Kongo\", \"local\":\"Kongo\", \"1\":\"kg\", \"2\":\"kon\", \"2T\":\"kon\", \"2B\":\"kon\", \"3\":\"kon\"},\n {\"name\":\"Korean\", \"local\":\"한국어\", \"1\":\"ko\", \"2\":\"kor\", \"2T\":\"kor\", \"2B\":\"kor\", \"3\":\"kor\"},\n {\"name\":\"Kurdish\", \"local\":\"Kurdî\", \"1\":\"ku\", \"2\":\"kur\", \"2T\":\"kur\", \"2B\":\"kur\", \"3\":\"kur\"},\n {\"name\":\"Kwanyama\", \"local\":\"Kuanyama\", \"1\":\"kj\", \"2\":\"kua\", \"2T\":\"kua\", \"2B\":\"kua\", \"3\":\"kua\"},\n {\"name\":\"Latin\", \"local\":\"Latina\", \"1\":\"la\", \"2\":\"lat\", \"2T\":\"lat\", \"2B\":\"lat\", \"3\":\"lat\"},\n {\"name\":\"Luxembourgish\", \"local\":\"Lëtzebuergesch\", \"1\":\"lb\", \"2\":\"ltz\", \"2T\":\"ltz\", \"2B\":\"ltz\", \"3\":\"ltz\"},\n {\"name\":\"Ganda\", \"local\":\"Luganda\", \"1\":\"lg\", \"2\":\"lug\", \"2T\":\"lug\", \"2B\":\"lug\", \"3\":\"lug\"},\n {\"name\":\"Limburgish\", \"local\":\"Limburgs\", \"1\":\"li\", \"2\":\"lim\", \"2T\":\"lim\", \"2B\":\"lim\", \"3\":\"lim\"},\n {\"name\":\"Lingala\", \"local\":\"Lingála\", \"1\":\"ln\", \"2\":\"lin\", \"2T\":\"lin\", \"2B\":\"lin\", \"3\":\"lin\"},\n {\"name\":\"Lao\", \"local\":\"ພາສາລາວ\", \"1\":\"lo\", \"2\":\"lao\", \"2T\":\"lao\", \"2B\":\"lao\", \"3\":\"lao\"},\n {\"name\":\"Lithuanian\", \"local\":\"Lietuvių\", \"1\":\"lt\", \"2\":\"lit\", \"2T\":\"lit\", \"2B\":\"lit\", \"3\":\"lit\"},\n {\"name\":\"Luba-Katanga\", \"local\":\"Tshiluba\", \"1\":\"lu\", \"2\":\"lub\", \"2T\":\"lub\", \"2B\":\"lub\", \"3\":\"lub\"},\n {\"name\":\"Latvian\", \"local\":\"Latviešu\", \"1\":\"lv\", \"2\":\"lav\", \"2T\":\"lav\", \"2B\":\"lav\", \"3\":\"lav\"},\n {\"name\":\"Manx\", \"local\":\"Gaelg\", \"1\":\"gv\", \"2\":\"glv\", \"2T\":\"glv\", \"2B\":\"glv\", \"3\":\"glv\"},\n {\"name\":\"Macedonian\", \"local\":\"Македонски\", \"1\":\"mk\", \"2\":\"mkd\", \"2T\":\"mkd\", \"2B\":\"mac\", \"3\":\"mkd\"},\n {\"name\":\"Malagasy\", \"local\":\"Malagasy\", \"1\":\"mg\", \"2\":\"mlg\", \"2T\":\"mlg\", \"2B\":\"mlg\", \"3\":\"mlg\"},\n {\"name\":\"Malay\", \"local\":\"Bahasa Melayu\", \"1\":\"ms\", \"2\":\"msa\", \"2T\":\"msa\", \"2B\":\"may\", \"3\":\"msa\"},\n {\"name\":\"Malayalam\", \"local\":\"മലയാളം\", \"1\":\"ml\", \"2\":\"mal\", \"2T\":\"mal\", \"2B\":\"mal\", \"3\":\"mal\"},\n {\"name\":\"Maltese\", \"local\":\"Malti\", \"1\":\"mt\", \"2\":\"mlt\", \"2T\":\"mlt\", \"2B\":\"mlt\", \"3\":\"mlt\"},\n {\"name\":\"Māori\", \"local\":\"Māori\", \"1\":\"mi\", \"2\":\"mri\", \"2T\":\"mri\", \"2B\":\"mao\", \"3\":\"mri\"},\n {\"name\":\"Marathi\", \"local\":\"मराठी\", \"1\":\"mr\", \"2\":\"mar\", \"2T\":\"mar\", \"2B\":\"mar\", \"3\":\"mar\"},\n {\"name\":\"Marshallese\", \"local\":\"Kajin M̧ajeļ\", \"1\":\"mh\", \"2\":\"mah\", \"2T\":\"mah\", \"2B\":\"mah\", \"3\":\"mah\"},\n {\"name\":\"Mongolian\", \"local\":\"Монгол\", \"1\":\"mn\", \"2\":\"mon\", \"2T\":\"mon\", \"2B\":\"mon\", \"3\":\"mon\"},\n {\"name\":\"Nauru\", \"local\":\"Dorerin Naoero\", \"1\":\"na\", \"2\":\"nau\", \"2T\":\"nau\", \"2B\":\"nau\", \"3\":\"nau\"},\n {\"name\":\"Navajo\", \"local\":\"Diné Bizaad\", \"1\":\"nv\", \"2\":\"nav\", \"2T\":\"nav\", \"2B\":\"nav\", \"3\":\"nav\"},\n {\"name\":\"Northern Ndebele\", \"local\":\"isiNdebele\", \"1\":\"nd\", \"2\":\"nde\", \"2T\":\"nde\", \"2B\":\"nde\", \"3\":\"nde\"},\n {\"name\":\"Nepali\", \"local\":\"नेपाली\", \"1\":\"ne\", \"2\":\"nep\", \"2T\":\"nep\", \"2B\":\"nep\", \"3\":\"nep\"},\n {\"name\":\"Ndonga\", \"local\":\"Owambo\", \"1\":\"ng\", \"2\":\"ndo\", \"2T\":\"ndo\", \"2B\":\"ndo\", \"3\":\"ndo\"},\n {\"name\":\"Norwegian Bokmål\", \"local\":\"Norsk (Bokmål)\", \"1\":\"nb\", \"2\":\"nob\", \"2T\":\"nob\", \"2B\":\"nob\", \"3\":\"nob\"},\n {\"name\":\"Norwegian Nynorsk\", \"local\":\"Norsk (Nynorsk)\", \"1\":\"nn\", \"2\":\"nno\", \"2T\":\"nno\", \"2B\":\"nno\", \"3\":\"nno\"},\n {\"name\":\"Norwegian\", \"local\":\"Norsk\", \"1\":\"no\", \"2\":\"nor\", \"2T\":\"nor\", \"2B\":\"nor\", \"3\":\"nor\"},\n {\"name\":\"Nuosu\", \"local\":\"ꆈꌠ꒿ Nuosuhxop\", \"1\":\"ii\", \"2\":\"iii\", \"2T\":\"iii\", \"2B\":\"iii\", \"3\":\"iii\"},\n {\"name\":\"Southern Ndebele\", \"local\":\"isiNdebele\", \"1\":\"nr\", \"2\":\"nbl\", \"2T\":\"nbl\", \"2B\":\"nbl\", \"3\":\"nbl\"},\n {\"name\":\"Occitan\", \"local\":\"Occitan\", \"1\":\"oc\", \"2\":\"oci\", \"2T\":\"oci\", \"2B\":\"oci\", \"3\":\"oci\"},\n {\"name\":\"Ojibwe\", \"local\":\"ᐊᓂᔑᓈᐯᒧᐎᓐ\", \"1\":\"oj\", \"2\":\"oji\", \"2T\":\"oji\", \"2B\":\"oji\", \"3\":\"oji\"},\n {\"name\":\"Old Church Slavonic\", \"local\":\"Словѣ́ньскъ\", \"1\":\"cu\", \"2\":\"chu\", \"2T\":\"chu\", \"2B\":\"chu\", \"3\":\"chu\"},\n {\"name\":\"Oromo\", \"local\":\"Afaan Oromoo\", \"1\":\"om\", \"2\":\"orm\", \"2T\":\"orm\", \"2B\":\"orm\", \"3\":\"orm\"},\n {\"name\":\"Oriya\", \"local\":\"ଓଡି଼ଆ\", \"1\":\"or\", \"2\":\"ori\", \"2T\":\"ori\", \"2B\":\"ori\", \"3\":\"ori\"},\n {\"name\":\"Ossetian\", \"local\":\"Ирон æвзаг\", \"1\":\"os\", \"2\":\"oss\", \"2T\":\"oss\", \"2B\":\"oss\", \"3\":\"oss\"},\n {\"name\":\"Panjabi\", \"local\":\"ਪੰਜਾਬੀ\", \"1\":\"pa\", \"2\":\"pan\", \"2T\":\"pan\", \"2B\":\"pan\", \"3\":\"pan\"},\n {\"name\":\"Pāli\", \"local\":\"पाऴि\", \"1\":\"pi\", \"2\":\"pli\", \"2T\":\"pli\", \"2B\":\"pli\", \"3\":\"pli\"},\n {\"name\":\"Persian\", \"local\":\"فارسی\", \"1\":\"fa\", \"2\":\"fas\", \"2T\":\"fas\", \"2B\":\"per\", \"3\":\"fas\"},\n {\"name\":\"Polish\", \"local\":\"Polski\", \"1\":\"pl\", \"2\":\"pol\", \"2T\":\"pol\", \"2B\":\"pol\", \"3\":\"pol\"},\n {\"name\":\"Pashto\", \"local\":\"پښتو\", \"1\":\"ps\", \"2\":\"pus\", \"2T\":\"pus\", \"2B\":\"pus\", \"3\":\"pus\"},\n {\"name\":\"Portuguese\", \"local\":\"Português\", \"1\":\"pt\", \"2\":\"por\", \"2T\":\"por\", \"2B\":\"por\", \"3\":\"por\"},\n {\"name\":\"Quechua\", \"local\":\"Runa Simi\", \"1\":\"qu\", \"2\":\"que\", \"2T\":\"que\", \"2B\":\"que\", \"3\":\"que\"},\n {\"name\":\"Romansh\", \"local\":\"Rumantsch\", \"1\":\"rm\", \"2\":\"roh\", \"2T\":\"roh\", \"2B\":\"roh\", \"3\":\"roh\"},\n {\"name\":\"Kirundi\", \"local\":\"Kirundi\", \"1\":\"rn\", \"2\":\"run\", \"2T\":\"run\", \"2B\":\"run\", \"3\":\"run\"},\n {\"name\":\"Romanian\", \"local\":\"Română\", \"1\":\"ro\", \"2\":\"ron\", \"2T\":\"ron\", \"2B\":\"rum\", \"3\":\"ron\"},\n {\"name\":\"Russian\", \"local\":\"Русский\", \"1\":\"ru\", \"2\":\"rus\", \"2T\":\"rus\", \"2B\":\"rus\", \"3\":\"rus\"},\n {\"name\":\"Sanskrit\", \"local\":\"संस्कृतम्\", \"1\":\"sa\", \"2\":\"san\", \"2T\":\"san\", \"2B\":\"san\", \"3\":\"san\"},\n {\"name\":\"Sardinian\", \"local\":\"Sardu\", \"1\":\"sc\", \"2\":\"srd\", \"2T\":\"srd\", \"2B\":\"srd\", \"3\":\"srd\"},\n {\"name\":\"Sindhi\", \"local\":\"سنڌي‎\", \"1\":\"sd\", \"2\":\"snd\", \"2T\":\"snd\", \"2B\":\"snd\", \"3\":\"snd\"},\n {\"name\":\"Northern Sami\", \"local\":\"Sámegiella\", \"1\":\"se\", \"2\":\"sme\", \"2T\":\"sme\", \"2B\":\"sme\", \"3\":\"sme\"},\n {\"name\":\"Samoan\", \"local\":\"Gagana Sāmoa\", \"1\":\"sm\", \"2\":\"smo\", \"2T\":\"smo\", \"2B\":\"smo\", \"3\":\"smo\"},\n {\"name\":\"Sango\", \"local\":\"Sängö\", \"1\":\"sg\", \"2\":\"sag\", \"2T\":\"sag\", \"2B\":\"sag\", \"3\":\"sag\"},\n {\"name\":\"Serbian\", \"local\":\"Српски\", \"1\":\"sr\", \"2\":\"srp\", \"2T\":\"srp\", \"2B\":\"srp\", \"3\":\"srp\"},\n {\"name\":\"Gaelic\", \"local\":\"Gàidhlig\", \"1\":\"gd\", \"2\":\"gla\", \"2T\":\"gla\", \"2B\":\"gla\", \"3\":\"gla\"},\n {\"name\":\"Shona\", \"local\":\"ChiShona\", \"1\":\"sn\", \"2\":\"sna\", \"2T\":\"sna\", \"2B\":\"sna\", \"3\":\"sna\"},\n {\"name\":\"Sinhala\", \"local\":\"සිංහල\", \"1\":\"si\", \"2\":\"sin\", \"2T\":\"sin\", \"2B\":\"sin\", \"3\":\"sin\"},\n {\"name\":\"Slovak\", \"local\":\"Slovenčina\", \"1\":\"sk\", \"2\":\"slk\", \"2T\":\"slk\", \"2B\":\"slo\", \"3\":\"slk\"},\n {\"name\":\"Slovene\", \"local\":\"Slovenščina\", \"1\":\"sl\", \"2\":\"slv\", \"2T\":\"slv\", \"2B\":\"slv\", \"3\":\"slv\"},\n {\"name\":\"Somali\", \"local\":\"Soomaaliga\", \"1\":\"so\", \"2\":\"som\", \"2T\":\"som\", \"2B\":\"som\", \"3\":\"som\"},\n {\"name\":\"Southern Sotho\", \"local\":\"Sesotho\", \"1\":\"st\", \"2\":\"sot\", \"2T\":\"sot\", \"2B\":\"sot\", \"3\":\"sot\"},\n {\"name\":\"Spanish\", \"local\":\"Español\", \"1\":\"es\", \"2\":\"spa\", \"2T\":\"spa\", \"2B\":\"spa\", \"3\":\"spa\"},\n {\"name\":\"Sundanese\", \"local\":\"Basa Sunda\", \"1\":\"su\", \"2\":\"sun\", \"2T\":\"sun\", \"2B\":\"sun\", \"3\":\"sun\"},\n {\"name\":\"Swahili\", \"local\":\"Kiswahili\", \"1\":\"sw\", \"2\":\"swa\", \"2T\":\"swa\", \"2B\":\"swa\", \"3\":\"swa\"},\n {\"name\":\"Swati\", \"local\":\"SiSwati\", \"1\":\"ss\", \"2\":\"ssw\", \"2T\":\"ssw\", \"2B\":\"ssw\", \"3\":\"ssw\"},\n {\"name\":\"Swedish\", \"local\":\"Svenska\", \"1\":\"sv\", \"2\":\"swe\", \"2T\":\"swe\", \"2B\":\"swe\", \"3\":\"swe\"},\n {\"name\":\"Tamil\", \"local\":\"தமிழ்\", \"1\":\"ta\", \"2\":\"tam\", \"2T\":\"tam\", \"2B\":\"tam\", \"3\":\"tam\"},\n {\"name\":\"Telugu\", \"local\":\"తెలుగు\", \"1\":\"te\", \"2\":\"tel\", \"2T\":\"tel\", \"2B\":\"tel\", \"3\":\"tel\"},\n {\"name\":\"Tajik\", \"local\":\"Тоҷикӣ\", \"1\":\"tg\", \"2\":\"tgk\", \"2T\":\"tgk\", \"2B\":\"tgk\", \"3\":\"tgk\"},\n {\"name\":\"Thai\", \"local\":\"ภาษาไทย\", \"1\":\"th\", \"2\":\"tha\", \"2T\":\"tha\", \"2B\":\"tha\", \"3\":\"tha\"},\n {\"name\":\"Tigrinya\", \"local\":\"ትግርኛ\", \"1\":\"ti\", \"2\":\"tir\", \"2T\":\"tir\", \"2B\":\"tir\", \"3\":\"tir\"},\n {\"name\":\"Tibetan Standard\", \"local\":\"བོད་ཡིག\", \"1\":\"bo\", \"2\":\"bod\", \"2T\":\"bod\", \"2B\":\"tib\", \"3\":\"bod\"},\n {\"name\":\"Turkmen\", \"local\":\"Türkmençe\", \"1\":\"tk\", \"2\":\"tuk\", \"2T\":\"tuk\", \"2B\":\"tuk\", \"3\":\"tuk\"},\n {\"name\":\"Tagalog\", \"local\":\"Tagalog\", \"1\":\"tl\", \"2\":\"tgl\", \"2T\":\"tgl\", \"2B\":\"tgl\", \"3\":\"tgl\"},\n {\"name\":\"Tswana\", \"local\":\"Setswana\", \"1\":\"tn\", \"2\":\"tsn\", \"2T\":\"tsn\", \"2B\":\"tsn\", \"3\":\"tsn\"},\n {\"name\":\"Tonga\", \"local\":\"faka Tonga\", \"1\":\"to\", \"2\":\"ton\", \"2T\":\"ton\", \"2B\":\"ton\", \"3\":\"ton\"},\n {\"name\":\"Turkish\", \"local\":\"Türkçe\", \"1\":\"tr\", \"2\":\"tur\", \"2T\":\"tur\", \"2B\":\"tur\", \"3\":\"tur\"},\n {\"name\":\"Tsonga\", \"local\":\"Xitsonga\", \"1\":\"ts\", \"2\":\"tso\", \"2T\":\"tso\", \"2B\":\"tso\", \"3\":\"tso\"},\n {\"name\":\"Tatar\", \"local\":\"Татарча\", \"1\":\"tt\", \"2\":\"tat\", \"2T\":\"tat\", \"2B\":\"tat\", \"3\":\"tat\"},\n {\"name\":\"Twi\", \"local\":\"Twi\", \"1\":\"tw\", \"2\":\"twi\", \"2T\":\"twi\", \"2B\":\"twi\", \"3\":\"twi\"},\n {\"name\":\"Tahitian\", \"local\":\"Reo Mā’ohi\", \"1\":\"ty\", \"2\":\"tah\", \"2T\":\"tah\", \"2B\":\"tah\", \"3\":\"tah\"},\n {\"name\":\"Uyghur\", \"local\":\"ئۇيغۇرچه\", \"1\":\"ug\", \"2\":\"uig\", \"2T\":\"uig\", \"2B\":\"uig\", \"3\":\"uig\"},\n {\"name\":\"Ukrainian\", \"local\":\"Українська\", \"1\":\"uk\", \"2\":\"ukr\", \"2T\":\"ukr\", \"2B\":\"ukr\", \"3\":\"ukr\"},\n {\"name\":\"Urdu\", \"local\":\"اردو\", \"1\":\"ur\", \"2\":\"urd\", \"2T\":\"urd\", \"2B\":\"urd\", \"3\":\"urd\"},\n {\"name\":\"Uzbek\", \"local\":\"O‘zbek\", \"1\":\"uz\", \"2\":\"uzb\", \"2T\":\"uzb\", \"2B\":\"uzb\", \"3\":\"uzb\"},\n {\"name\":\"Venda\", \"local\":\"Tshivenḓa\", \"1\":\"ve\", \"2\":\"ven\", \"2T\":\"ven\", \"2B\":\"ven\", \"3\":\"ven\"},\n {\"name\":\"Vietnamese\", \"local\":\"Tiếng Việt\", \"1\":\"vi\", \"2\":\"vie\", \"2T\":\"vie\", \"2B\":\"vie\", \"3\":\"vie\"},\n {\"name\":\"Volapük\", \"local\":\"Volapük\", \"1\":\"vo\", \"2\":\"vol\", \"2T\":\"vol\", \"2B\":\"vol\", \"3\":\"vol\"},\n {\"name\":\"Walloon\", \"local\":\"Walon\", \"1\":\"wa\", \"2\":\"wln\", \"2T\":\"wln\", \"2B\":\"wln\", \"3\":\"wln\"},\n {\"name\":\"Welsh\", \"local\":\"Cymraeg\", \"1\":\"cy\", \"2\":\"cym\", \"2T\":\"cym\", \"2B\":\"wel\", \"3\":\"cym\"},\n {\"name\":\"Wolof\", \"local\":\"Wolof\", \"1\":\"wo\", \"2\":\"wol\", \"2T\":\"wol\", \"2B\":\"wol\", \"3\":\"wol\"},\n {\"name\":\"Western Frisian\", \"local\":\"Frysk\", \"1\":\"fy\", \"2\":\"fry\", \"2T\":\"fry\", \"2B\":\"fry\", \"3\":\"fry\"},\n {\"name\":\"Xhosa\", \"local\":\"isiXhosa\", \"1\":\"xh\", \"2\":\"xho\", \"2T\":\"xho\", \"2B\":\"xho\", \"3\":\"xho\"},\n {\"name\":\"Yiddish\", \"local\":\"ייִדיש\", \"1\":\"yi\", \"2\":\"yid\", \"2T\":\"yid\", \"2B\":\"yid\", \"3\":\"yid\"},\n {\"name\":\"Yoruba\", \"local\":\"Yorùbá\", \"1\":\"yo\", \"2\":\"yor\", \"2T\":\"yor\", \"2B\":\"yor\", \"3\":\"yor\"},\n {\"name\":\"Zhuang\", \"local\":\"Cuengh\", \"1\":\"za\", \"2\":\"zha\", \"2T\":\"zha\", \"2B\":\"zha\", \"3\":\"zha\"},\n {\"name\":\"Zulu\", \"local\":\"isiZulu\", \"1\":\"zu\", \"2\":\"zul\", \"2T\":\"zul\", \"2B\":\"zul\", \"3\":\"zul\"}\n];\n","var data = require('./data');\n\nvar langs = {\n all: allLanguages,\n has: hasLanguage,\n codes: getCodes,\n names: getNames,\n where: findBy\n};\n\nmodule.exports = langs;\n\n// allLanguages :: -> Language[]\nfunction allLanguages() {\n return data;\n}\n\n// hasLanguage :: String, String -> Boolean\nfunction hasLanguage(crit, val) {\n return void(0) !== findBy(crit, val);\n}\n\n// getCodes :: String -> String[]\nfunction getCodes(type) {\n if (isValidType(type)) {\n return forAll(data, function getCodesIterator(row) {\n return row[type];\n });\n }\n}\n\n// getNames :: Boolean -> String[]\nfunction getNames(local) {\n return forAll(data, function getNamesIterator(row) {\n return local ? row.local : row.name;\n });\n}\n\n// findBy :: String, String -> Language\nfunction findBy(crit, val) {\n for (var i = 0; i < data.length; i++) {\n if (val === data[i][crit]) {\n return data[i];\n }\n }\n}\n\n// forAll :: Array, Function -> Array\nfunction forAll(arr, fn) {\n var out = [], i;\n for (i = 0; i < arr.length; i++) {\n out.push(fn(arr[i], i));\n }\n\n return out;\n}\n\n// isValidType :: String -> Boolean\nfunction isValidType(type) {\n var types = [1, 2, 3, '1', '2', '2B', '2T', '3'];\n return -1 !== types.indexOf(type);\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order of result values is determined by the\n * order they occur in the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = intersection;\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","/*! magnet-uri. MIT License. WebTorrent LLC <https://webtorrent.io/opensource> */\nmodule.exports = magnetURIDecode\nmodule.exports.decode = magnetURIDecode\nmodule.exports.encode = magnetURIEncode\n\nconst base32 = require('thirty-two')\nconst bep53Range = require('bep53-range')\n\n/**\n * Parse a magnet URI and return an object of keys/values\n *\n * @param {string} uri\n * @return {Object} parsed uri\n */\nfunction magnetURIDecode (uri) {\n const result = {}\n\n // Support 'magnet:' and 'stream-magnet:' uris\n const data = uri.split('magnet:?')[1]\n\n const params = (data && data.length >= 0)\n ? data.split('&')\n : []\n\n params.forEach(param => {\n const keyval = param.split('=')\n\n // This keyval is invalid, skip it\n if (keyval.length !== 2) return\n\n const key = keyval[0]\n let val = keyval[1]\n\n // Clean up torrent name\n if (key === 'dn') val = decodeURIComponent(val).replace(/\\+/g, ' ')\n\n // Address tracker (tr), exact source (xs), and acceptable source (as) are encoded\n // URIs, so decode them\n if (key === 'tr' || key === 'xs' || key === 'as' || key === 'ws') {\n val = decodeURIComponent(val)\n }\n\n // Return keywords as an array\n if (key === 'kt') val = decodeURIComponent(val).split('+')\n\n // Cast file index (ix) to a number\n if (key === 'ix') val = Number(val)\n\n // bep53\n if (key === 'so') val = bep53Range.parse(decodeURIComponent(val).split(','))\n\n // If there are repeated parameters, return an array of values\n if (result[key]) {\n if (!Array.isArray(result[key])) {\n result[key] = [result[key]]\n }\n\n result[key].push(val)\n } else {\n result[key] = val\n }\n })\n\n // Convenience properties for parity with `parse-torrent-file` module\n let m\n if (result.xt) {\n const xts = Array.isArray(result.xt) ? result.xt : [result.xt]\n xts.forEach(xt => {\n if ((m = xt.match(/^urn:btih:(.{40})/))) {\n result.infoHash = m[1].toLowerCase()\n } else if ((m = xt.match(/^urn:btih:(.{32})/))) {\n const decodedStr = base32.decode(m[1])\n result.infoHash = Buffer.from(decodedStr, 'binary').toString('hex')\n } else if ((m = xt.match(/^urn:btmh:1220(.{64})/))) {\n result.infoHashV2 = m[1].toLowerCase()\n }\n })\n }\n\n if (result.xs) {\n const xss = Array.isArray(result.xs) ? result.xs : [result.xs]\n xss.forEach(xs => {\n if ((m = xs.match(/^urn:btpk:(.{64})/))) {\n result.publicKey = m[1].toLowerCase()\n }\n })\n }\n\n if (result.infoHash) result.infoHashBuffer = Buffer.from(result.infoHash, 'hex')\n if (result.infoHashV2) result.infoHashV2Buffer = Buffer.from(result.infoHashV2, 'hex')\n if (result.publicKey) result.publicKeyBuffer = Buffer.from(result.publicKey, 'hex')\n\n if (result.dn) result.name = result.dn\n if (result.kt) result.keywords = result.kt\n\n result.announce = []\n if (typeof result.tr === 'string' || Array.isArray(result.tr)) {\n result.announce = result.announce.concat(result.tr)\n }\n\n result.urlList = []\n if (typeof result.as === 'string' || Array.isArray(result.as)) {\n result.urlList = result.urlList.concat(result.as)\n }\n if (typeof result.ws === 'string' || Array.isArray(result.ws)) {\n result.urlList = result.urlList.concat(result.ws)\n }\n\n result.peerAddresses = []\n if (typeof result['x.pe'] === 'string' || Array.isArray(result['x.pe'])) {\n result.peerAddresses = result.peerAddresses.concat(result['x.pe'])\n }\n\n // remove duplicates by converting to Set and back\n result.announce = Array.from(new Set(result.announce))\n result.urlList = Array.from(new Set(result.urlList))\n result.peerAddresses = Array.from(new Set(result.peerAddresses))\n\n return result\n}\n\nfunction magnetURIEncode (obj) {\n obj = Object.assign({}, obj) // clone obj, so we can mutate it\n\n // support using convenience names, in addition to spec names\n // (example: `infoHash` for `xt`, `name` for `dn`)\n\n // Deduplicate xt by using a set\n let xts = new Set()\n if (obj.xt && typeof obj.xt === 'string') xts.add(obj.xt)\n if (obj.xt && Array.isArray(obj.xt)) xts = new Set(obj.xt)\n if (obj.infoHashBuffer) xts.add(`urn:btih:${obj.infoHashBuffer.toString('hex')}`)\n if (obj.infoHash) xts.add(`urn:btih:${obj.infoHash}`)\n if (obj.infoHashV2Buffer) xts.add(obj.xt = `urn:btmh:1220${obj.infoHashV2Buffer.toString('hex')}`)\n if (obj.infoHashV2) xts.add(`urn:btmh:1220${obj.infoHashV2}`)\n const xtsDeduped = Array.from(xts)\n if (xtsDeduped.length === 1) obj.xt = xtsDeduped[0]\n if (xtsDeduped.length > 1) obj.xt = xtsDeduped\n\n if (obj.publicKeyBuffer) obj.xs = `urn:btpk:${obj.publicKeyBuffer.toString('hex')}`\n if (obj.publicKey) obj.xs = `urn:btpk:${obj.publicKey}`\n if (obj.name) obj.dn = obj.name\n if (obj.keywords) obj.kt = obj.keywords\n if (obj.announce) obj.tr = obj.announce\n if (obj.urlList) {\n obj.ws = obj.urlList\n delete obj.as\n }\n if (obj.peerAddresses) obj['x.pe'] = obj.peerAddresses\n\n let result = 'magnet:?'\n Object.keys(obj)\n .filter(key => key.length === 2 || key === 'x.pe')\n .forEach((key, i) => {\n const values = Array.isArray(obj[key]) ? obj[key] : [obj[key]]\n values.forEach((val, j) => {\n if ((i > 0 || j > 0) && ((key !== 'kt' && key !== 'so') || j === 0)) result += '&'\n\n if (key === 'dn') val = encodeURIComponent(val).replace(/%20/g, '+')\n if (key === 'tr' || key === 'as' || key === 'ws') {\n val = encodeURIComponent(val)\n }\n // Don't URI encode BEP46 keys\n if (key === 'xs' && !val.startsWith('urn:btpk:')) {\n val = encodeURIComponent(val)\n }\n if (key === 'kt') val = encodeURIComponent(val)\n if (key === 'so') return\n\n if (key === 'kt' && j > 0) result += `+${val}`\n else result += `${key}=${val}`\n })\n if (key === 'so') result += `${key}=${bep53Range.compose(values)}`\n })\n\n return result\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"error-container\":\"error-container-OJnoc\",\"error-image\":\"error-image-qU9Qo\",\"error-message\":\"error-message-kW59Z\",\"buttons-container\":\"buttons-container-tQonN\",\"button-container\":\"button-container-vLSQK\",\"label\":\"label-Up_te\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fade-in\":\"fade-in-pFkt_\",\"toasts-container\":\"toasts-container-oKECy\",\"router\":\"router-_65XU\",\"error-container\":\"error-container-VZXwH\",\"loader-container\":\"loader-container-vwvnb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addon-details-container\":\"addon-details-container-ZQqDB\",\"title-container\":\"title-container-fR02m\",\"icon\":\"icon-ScXNu\",\"logo\":\"logo-BujW_\",\"name-container\":\"name-container-Gfhqw\",\"name\":\"name-XNqfo\",\"version\":\"version-w_xoN\",\"section-container\":\"section-container-l3YaI\",\"section-header\":\"section-header-bs8iy\",\"section-label\":\"section-label-rYxQh\",\"transport-url-label\":\"transport-url-label-EW7I5\",\"disclaimer-label\":\"disclaimer-label-IGdd3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addon-details-modal-container\":\"addon-details-modal-container-_bwQ0\",\"addon-details-container\":\"addon-details-container-AmNx2\",\"addon-details-message-container\":\"addon-details-message-container-VEzeN\",\"cancel-button\":\"cancel-button-luYIO\",\"install-button\":\"install-button-XUzqz\",\"uninstall-button\":\"uninstall-button-X2JXr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button-container\":\"button-container-HNufV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkbox-container\":\"checkbox-container-heGq4\",\"icon\":\"icon-NUvac\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"color-picker-container\":\"color-picker-container-deFkW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"color-input-container\":\"color-input-container-jRZsi\",\"transparent-label-container\":\"transparent-label-container-Tx2fI\",\"transparent-label\":\"transparent-label-omLaY\",\"color-picker-container\":\"color-picker-container-C4puR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main-nav-bars-container\":\"main-nav-bars-container-fA7pO\",\"horizontal-nav-bar\":\"horizontal-nav-bar-x5sxp\",\"vertical-nav-bar\":\"vertical-nav-bar-JNw53\",\"nav-content-container\":\"nav-content-container-VHwOU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta-item-container\":\"meta-item-container-drt6V\",\"poster-shape-poster\":\"poster-shape-poster-F_CO5\",\"poster-container\":\"poster-container-Fruke\",\"poster-shape-square\":\"poster-shape-square-UCby3\",\"poster-shape-landscape\":\"poster-shape-landscape-BPmb1\",\"poster-image-layer\":\"poster-image-layer-CdxrT\",\"poster-image\":\"poster-image-lt9zC\",\"placeholder-icon\":\"placeholder-icon-uYwsv\",\"play-icon-layer\":\"play-icon-layer-_75Lo\",\"play-icon\":\"play-icon-d9_ll\",\"progress-bar-layer\":\"progress-bar-layer-r81Qx\",\"progress-bar\":\"progress-bar-E3QY9\",\"title-bar-container\":\"title-bar-container-DFXJK\",\"title-label\":\"title-label-dZZ_A\",\"menu-label-container\":\"menu-label-container-dlL1I\",\"icon\":\"icon-IfJ81\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"action-button-container\":\"action-button-container-TmbQ2\",\"icon-container\":\"icon-container-hvLw4\",\"icon\":\"icon-DG4TM\",\"label-container\":\"label-container-eh2bk\",\"label\":\"label-YhHvD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta-links-container\":\"meta-links-container-wSrm1\",\"label-container\":\"label-container-zWFke\",\"links-container\":\"links-container-o4RUG\",\"link-container\":\"link-container-HUDqV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta-preview-placeholder-container\":\"meta-preview-placeholder-container-AQ4ld\",\"meta-info-container\":\"meta-info-container-pEOFb\",\"logo-container\":\"logo-container-g5eNB\",\"duration-release-info-container\":\"duration-release-info-container-lNaI6\",\"duration-container\":\"duration-container-x2E01\",\"release-info-container\":\"release-info-container-PEmeu\",\"description-container\":\"description-container-yGOO4\",\"description-label-container\":\"description-label-container-G_0pj\",\"genres-container\":\"genres-container-v3H7A\",\"genres-header-container\":\"genres-header-container-lsPLU\",\"genre-label-container\":\"genre-label-container-z7kU8\",\"action-buttons-container\":\"action-buttons-container-U3sbl\",\"action-button-container\":\"action-button-container-xJmjB\",\"action-button-icon\":\"action-button-icon-E7Epc\",\"action-button-label\":\"action-button-label-R7UPL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta-preview-container\":\"meta-preview-container-bgBNf\",\"compact\":\"compact-Wbl4Q\",\"meta-info-container\":\"meta-info-container-tlmcb\",\"logo\":\"logo-X9v1A\",\"logo-placeholder\":\"logo-placeholder-kIy0x\",\"runtime-release-info-container\":\"runtime-release-info-container-lXo3K\",\"release-info-label\":\"release-info-label-XmqSY\",\"runtime-label\":\"runtime-label-B29EN\",\"description-container\":\"description-container-eSGft\",\"action-buttons-container\":\"action-buttons-container-qQrnO\",\"action-button\":\"action-button-R44aX\",\"background-image-layer\":\"background-image-layer-GstuA\",\"background-image\":\"background-image-B0d6i\",\"imdb-button-container\":\"imdb-button-container-qCbl7\",\"icon\":\"icon-MBu8k\",\"label\":\"label-_DfnK\",\"name-container\":\"name-container-HsS4c\",\"meta-links\":\"meta-links-mTHUo\",\"share-prompt\":\"share-prompt-F8qOC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta-row-placeholder-container\":\"meta-row-placeholder-container-wpHNk\",\"header-container\":\"header-container-GCHdB\",\"title-container\":\"title-container-Bjp93\",\"see-all-container\":\"see-all-container-FnlIf\",\"label\":\"label-dU3S2\",\"icon\":\"icon-FLhtv\",\"meta-items-container\":\"meta-items-container-dbGXx\",\"meta-item\":\"meta-item-IegjY\",\"poster-container\":\"poster-container-RlQMV\",\"title-bar-container\":\"title-bar-container-YJZrl\",\"title-label\":\"title-label-Ka1vs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"meta-row-container\":\"meta-row-container-ucOuu\",\"header-container\":\"header-container-RherZ\",\"title-container\":\"title-container-SJ0nR\",\"see-all-container\":\"see-all-container-HlJ4b\",\"label\":\"label-isJw8\",\"icon\":\"icon-PO0GH\",\"message-container\":\"message-container-bIcjN\",\"meta-items-container\":\"meta-items-container-TqzFs\",\"meta-item\":\"meta-item-x28TU\",\"poster-shape-poster\":\"poster-shape-poster-B1QR0\",\"poster-shape-square\":\"poster-shape-square-m5r_O\",\"poster-shape-landscape\":\"poster-shape-landscape-_FSOH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal-container\":\"modal-container-jZglc\",\"modal-dialog-container\":\"modal-dialog-container-QgsId\",\"close-button-container\":\"close-button-container-QrgQo\",\"icon\":\"icon-hRjWc\",\"title-container\":\"title-container-wqhp3\",\"modal-dialog-content\":\"modal-dialog-content-ChXwF\",\"buttons-container\":\"buttons-container-EJKJF\",\"action-button\":\"action-button-bi6FL\",\"label\":\"label-_ADoX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"label-container\":\"label-container-ZHk2S\",\"label\":\"label-kz1K0\",\"icon\":\"icon-YGvLz\",\"modal-container\":\"modal-container-BQwj3\",\"menu-container\":\"menu-container-Z1Pou\",\"option-container\":\"option-container-yVj1o\",\"no-options-container\":\"no-options-container-NYx9Z\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nav-menu-container\":\"nav-menu-container-VSzwW\",\"user-info-container\":\"user-info-container-BR8yb\",\"avatar-container\":\"avatar-container-jmlBM\",\"email-container\":\"email-container-fvFrL\",\"email-label\":\"email-label-WBX2T\",\"logout-button-container\":\"logout-button-container-hSW_i\",\"logout-label\":\"logout-label-dUa8B\",\"nav-menu-section\":\"nav-menu-section-oMELF\",\"nav-menu-option-container\":\"nav-menu-option-container-gZ1gT\",\"icon\":\"icon-OSgm6\",\"nav-menu-option-label\":\"nav-menu-option-label-XNuY6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"search-bar-container\":\"search-bar-container-TNPzI\",\"search-input\":\"search-input-aOiJ2\",\"placeholder-label\":\"placeholder-label-Irklk\",\"submit-button-container\":\"submit-button-container-jPP5J\",\"icon\":\"icon-FT4bG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"horizontal-nav-bar-container\":\"horizontal-nav-bar-container-jFw5Y\",\"logo-container\":\"logo-container-fnFzY\",\"logo\":\"logo-RVSxt\",\"spacing\":\"spacing-jzj7t\",\"title\":\"title-_UxXH\",\"search-bar\":\"search-bar-NopQ6\",\"button-container\":\"button-container-B23qB\",\"back-button-container\":\"back-button-container-K9AwF\",\"icon\":\"icon-wrBcp\",\"menu-button-container\":\"menu-button-container-WWcwa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"nav-tab-button-container\":\"nav-tab-button-container-r8HUb\",\"icon\":\"icon-vxKmB\",\"label\":\"label-mc9eB\",\"logo\":\"logo-ST06l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"vertical-nav-bar-container\":\"vertical-nav-bar-container-AsGLM\",\"nav-tab-button\":\"nav-tab-button-noMv6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pagination-input-container\":\"pagination-input-container-vXhi6\",\"next-button-container\":\"next-button-container-zNwG6\",\"prev-button-container\":\"prev-button-container-qmJ1m\",\"icon\":\"icon-UoyQ9\",\"label-container\":\"label-container-VwInD\",\"label\":\"label-cJKC1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"background\":\"background-FNyrF\",\"icon\":\"icon-XXj2q\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"label-container\":\"label-container-iBMb9\",\"menu-container\":\"menu-container-bfvDO\",\"menu-direction-top-left\":\"menu-direction-top-left-KpAQN\",\"menu-direction-bottom-left\":\"menu-direction-bottom-left-Uw06K\",\"menu-direction-top-right\":\"menu-direction-top-right-jOtwq\",\"menu-direction-bottom-right\":\"menu-direction-bottom-right-XZ9Ch\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"search-bar-container\":\"search-bar-container-Vb_fz\",\"search-input\":\"search-input-BWyeG\",\"icon\":\"icon-poa62\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"search-bar-container\":\"search-bar-container-MpNBA\",\"search-input\":\"search-input-ge2wu\",\"icon\":\"icon-Z_Hni\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"share-prompt-container\":\"share-prompt-container-YsJwl\",\"buttons-container\":\"buttons-container-Oc7PG\",\"button-container\":\"button-container-oMOnv\",\"icon\":\"icon-FVvQH\",\"label\":\"label-iOGrs\",\"facebook-button\":\"facebook-button-KaNwb\",\"twitter-button\":\"twitter-button-pJka2\",\"url-container\":\"url-container-fMSp4\",\"url-text-input\":\"url-text-input-Yka4x\",\"copy-button\":\"copy-button-ShwCB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"active-slider-within\":\"active-slider-within-lQFc1\",\"slider-container\":\"slider-container-aRzVq\",\"track-after\":\"track-after-iD0ee\",\"track\":\"track-jWhBI\",\"thumb\":\"thumb-tfDk6\",\"layer\":\"layer-FqnD7\",\"track-before\":\"track-before-FwOXh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"warning-container\":\"warning-container-FIITF\",\"warning-statement\":\"warning-statement-I7pdD\",\"warning-button\":\"warning-button-zlx_V\",\"warning-label\":\"warning-label-XJnBc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"text-input\":\"text-input-jR2Nr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"toast-item-container\":\"toast-item-container-nG0uk\",\"success\":\"success-eIDTa\",\"icon-container\":\"icon-container-rjAiH\",\"icon\":\"icon-Y4I_O\",\"error\":\"error-quyOd\",\"info-container\":\"info-container-xD9V6\",\"title-container\":\"title-container-VFReJ\",\"message-container\":\"message-container-znkCj\",\"close-button-container\":\"close-button-container-YtyYE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addon-container\":\"addon-container-lC5KN\",\"logo-container\":\"logo-container-ZcSSC\",\"logo\":\"logo-WrsGF\",\"icon\":\"icon-GxVbY\",\"info-container\":\"info-container-AdMB6\",\"name-container\":\"name-container-qIAg8\",\"version-container\":\"version-container-zdPyN\",\"types-container\":\"types-container-DaOrg\",\"description-container\":\"description-container-v7Jhe\",\"buttons-container\":\"buttons-container-g0xXr\",\"action-buttons-container\":\"action-buttons-container-xMVmz\",\"configure-button-container\":\"configure-button-container-VwVAQ\",\"install-button-container\":\"install-button-container-yfcq5\",\"share-button-container\":\"share-button-container-s3gwP\",\"uninstall-button-container\":\"uninstall-button-container-oV4Yo\",\"label\":\"label-OnWh2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addons-container\":\"addons-container-ogGYu\",\"addons-content\":\"addons-content-zhFBl\",\"selectable-inputs-container\":\"selectable-inputs-container-tUul1\",\"add-button-container\":\"add-button-container-SkafT\",\"icon\":\"icon-HsyZS\",\"add-button-label\":\"add-button-label-NN6bu\",\"select-input-container\":\"select-input-container-KqG8N\",\"spacing\":\"spacing-wH1w5\",\"search-bar\":\"search-bar-k7MXd\",\"filter-button\":\"filter-button-lLJ1X\",\"filter-icon\":\"filter-icon-LUDTS\",\"message-container\":\"message-container-GBw0P\",\"addons-list-container\":\"addons-list-container-Ovr2Z\",\"addon\":\"addon-whmdO\",\"filters-modal\":\"filters-modal-w6oWY\",\"add-addon-modal-container\":\"add-addon-modal-container-KR5ny\",\"notice\":\"notice-UQkO1\",\"addon-url-input\":\"addon-url-input-ucetZ\",\"cancel-button\":\"cancel-button-R2AxR\",\"share-modal-container\":\"share-modal-container-DkzPM\",\"title-container\":\"title-container-La49g\",\"logo\":\"logo-PmYDP\",\"name-container\":\"name-container-m_Sz0\",\"name\":\"name-YD0xd\",\"version\":\"version-wuAFB\",\"share-prompt-container\":\"share-prompt-container-vaK4P\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"board-container\":\"board-container-DTN_b\",\"board-content-container\":\"board-content-container-ToQTz\",\"board-content\":\"board-content-nPWv1\",\"board-row\":\"board-row-CoJrZ\",\"board-warning-container\":\"board-warning-container-a4m04\",\"board-row-landscape\":\"board-row-landscape-FRGXx\",\"board-row-poster\":\"board-row-poster-QPQqC\",\"board-row-square\":\"board-row-square-pgaZ3\",\"continue-watching-row\":\"continue-watching-row-ZiNSa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"discover-container\":\"discover-container-L6OGL\",\"discover-content\":\"discover-content-CRsRg\",\"catalog-container\":\"catalog-container-VNK_T\",\"selectable-inputs-container\":\"selectable-inputs-container-IRz50\",\"select-input\":\"select-input-CHDbe\",\"filter-container\":\"filter-container-BVkqT\",\"filter-icon\":\"filter-icon-zlFnX\",\"missing-addon-warning-container\":\"missing-addon-warning-container-IXGuv\",\"warning-label\":\"warning-label-f19Jg\",\"install-button\":\"install-button-SmJe1\",\"label\":\"label-ToW4S\",\"message-container\":\"message-container-Zv9eF\",\"image\":\"image-txC9E\",\"message-label\":\"message-label-mRyRX\",\"meta-items-container\":\"meta-items-container-n8vNz\",\"meta-item-placeholder\":\"meta-item-placeholder-wxG4I\",\"poster-container\":\"poster-container-Dch4R\",\"title-bar-container\":\"title-bar-container-dtDnk\",\"title-label\":\"title-label-vHdQd\",\"meta-preview-container\":\"meta-preview-container-CoWs5\",\"selectable-inputs-modal\":\"selectable-inputs-modal-ChpOa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"consent-checkbox-container\":\"consent-checkbox-container-WV60T\",\"label\":\"label-l3LSw\",\"link\":\"link-UppYg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"password-reset-modal-container\":\"password-reset-modal-container-KzJPQ\",\"credentials-text-input\":\"credentials-text-input-ncrIR\",\"error-message\":\"error-message-DkekN\",\"cancel-button\":\"cancel-button-AneJE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"intro-container\":\"intro-container-tkNS6\",\"form-container\":\"form-container-HMlEh\",\"logo-container\":\"logo-container-W49kt\",\"logo\":\"logo-WJ36F\",\"name\":\"name-BNo9R\",\"form-button\":\"form-button-vyqqj\",\"icon\":\"icon-L_6b6\",\"label\":\"label-uHD7L\",\"facebook-button\":\"facebook-button-LZ_kG\",\"login-form-button\":\"login-form-button-DqJUV\",\"login-label\":\"login-label-AelYq\",\"credentials-text-input\":\"credentials-text-input-QMCZz\",\"forgot-password-link-container\":\"forgot-password-link-container-ygZqb\",\"forgot-password-link\":\"forgot-password-link-NxNUD\",\"error-message\":\"error-message-cKdzB\",\"submit-button\":\"submit-button-x3L8z\",\"guest-login-button\":\"guest-login-button-D8DWZ\",\"signup-form-button\":\"signup-form-button-UGmSk\",\"loading-modal-container\":\"loading-modal-container-eLyTm\",\"loader-container\":\"loader-container-oe8rU\",\"flash\":\"flash-wUFXY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"library-container\":\"library-container-zM_bj\",\"library-content\":\"library-content-PgX4O\",\"selectable-inputs-container\":\"selectable-inputs-container-hR3or\",\"select-input-container\":\"select-input-container-H1VZ1\",\"filter-container\":\"filter-container-oRBlw\",\"filter-icon\":\"filter-icon-ZhMyS\",\"spacing\":\"spacing-Rdiyt\",\"pagination-input\":\"pagination-input-DvMtv\",\"pagination-input-placeholder\":\"pagination-input-placeholder-vZeuq\",\"message-container\":\"message-container-MhY5t\",\"no-user-message-container\":\"no-user-message-container-KMLpE\",\"login-button-container\":\"login-button-container-RoEh7\",\"label\":\"label-QqYmf\",\"image\":\"image-csRHm\",\"message-label\":\"message-label-UExl3\",\"meta-items-container\":\"meta-items-container-IKrND\",\"selectable-inputs-modal\":\"selectable-inputs-modal-rHlo7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stream-placeholder-container\":\"stream-placeholder-container-T1nxv\",\"addon-container\":\"addon-container-pm1P0\",\"addon-name\":\"addon-name-zAOKP\",\"info-container\":\"info-container-Z1Dl6\",\"description-container\":\"description-container-ZOMcn\",\"play-icon\":\"play-icon-MXqj3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stream-container\":\"stream-container-JPdah\",\"play-icon\":\"play-icon-w1yb5\",\"addon-name-container\":\"addon-name-container-IZ2De\",\"thumbnail-container\":\"thumbnail-container-ptbAk\",\"thumbnail\":\"thumbnail-whoms\",\"placeholder-icon\":\"placeholder-icon-znYz0\",\"addon-name\":\"addon-name-tC8PX\",\"info-container\":\"info-container-TihQo\",\"progress-bar-container\":\"progress-bar-container-ADRp_\",\"progress-bar\":\"progress-bar-XrEBL\",\"stream-containerfocus\":\"stream-containerfocus-xiWVj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"streams-list-container\":\"streams-list-container-xYMJo\",\"message-container\":\"message-container-f9_L4\",\"image\":\"image-rIyu6\",\"label\":\"label-luvnO\",\"select-input-container\":\"select-input-container-irGn_\",\"streams-container\":\"streams-container-bbSc4\",\"install-button-container\":\"install-button-container-Q60yJ\",\"icon\":\"icon-SoFgF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"seasons-bar-placeholder-container\":\"seasons-bar-placeholder-container-M81RN\",\"next-season-button\":\"next-season-button-oGnlT\",\"prev-season-button\":\"prev-season-button-TCbOq\",\"icon\":\"icon-UzQjF\",\"label\":\"label-lmBnj\",\"seasons-popup-label-container\":\"seasons-popup-label-container-r2UDB\",\"seasons-popup-label\":\"seasons-popup-label-xBinL\",\"seasons-popup-icon\":\"seasons-popup-icon-p1T5d\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"seasons-bar-container\":\"seasons-bar-container-nOZjG\",\"next-season-button\":\"next-season-button-RrYAq\",\"prev-season-button\":\"prev-season-button-bs1GQ\",\"label\":\"label-uJbfD\",\"icon\":\"icon-_ZBEE\",\"seasons-popup-label-container\":\"seasons-popup-label-container-fZcu4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"video-placeholder-container\":\"video-placeholder-container-uDsav\",\"info-container\":\"info-container-KTKtT\",\"name-container\":\"name-container-Jvesr\",\"released-container\":\"released-container-uoc4E\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"video-container\":\"video-container-UBBpR\",\"thumbnail-container\":\"thumbnail-container-n_jp7\",\"thumbnail\":\"thumbnail-MiS3K\",\"placeholder-icon\":\"placeholder-icon-LzVIO\",\"info-container\":\"info-container-szYxP\",\"title-container\":\"title-container-EMXpV\",\"flex-row-container\":\"flex-row-container-ExEua\",\"released-container\":\"released-container-zA91y\",\"upcoming-watched-container\":\"upcoming-watched-container-y_ijd\",\"upcoming-container\":\"upcoming-container-ASE1L\",\"watched-container\":\"watched-container-LCso2\",\"flag-label\":\"flag-label-dIdBb\",\"progress-bar-container\":\"progress-bar-container-gMpiB\",\"progress-bar\":\"progress-bar-Yhl4z\",\"context-menu-content\":\"context-menu-content-MGBhW\",\"context-menu-option-container\":\"context-menu-option-container-VlNjD\",\"context-menu-option-label\":\"context-menu-option-label-hOUnH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videos-list-container\":\"videos-list-container-NepX5\",\"message-container\":\"message-container-_hhmQ\",\"image\":\"image-_xAbP\",\"label\":\"label-Ff1_X\",\"seasons-bar\":\"seasons-bar-Ma8vp\",\"search-bar\":\"search-bar-mZHWa\",\"videos-container\":\"videos-container-msX8s\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"metadetails-container\":\"metadetails-container-K_Dqa\",\"nav-bar\":\"nav-bar-MH6Vk\",\"metadetails-content\":\"metadetails-content-Uz5EV\",\"vertical-nav-bar\":\"vertical-nav-bar-B39nq\",\"background-image-layer\":\"background-image-layer-wJa90\",\"background-image\":\"background-image-tSjYu\",\"meta-message-container\":\"meta-message-container-MJZN5\",\"image\":\"image-R1LcJ\",\"message-label\":\"message-label-Uz4_P\",\"meta-preview\":\"meta-preview-ES0h3\",\"spacing\":\"spacing-rgIYg\",\"streams-list\":\"streams-list-Y1lCM\",\"videos-list\":\"videos-list-nE0LJ\",\"meta-extension-modal-container\":\"meta-extension-modal-container-gHjqy\",\"meta-extension-modal-iframe\":\"meta-extension-modal-iframe-GGHlm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"not-found-container\":\"not-found-container-Q1qsP\",\"nav-bar\":\"nav-bar-Eu3_y\",\"not-found-content\":\"not-found-content-z_Eza\",\"not-found-image\":\"not-found-image-Qab4G\",\"not-found-label\":\"not-found-label-mmwyZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buffering-loader-container\":\"buffering-loader-container-P7S0m\",\"buffering-loader\":\"buffering-loader-fMSpb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"seek-bar-container\":\"seek-bar-container-JGGTa\",\"slider\":\"slider-hBDOf\",\"label\":\"label-QFbsS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"volume-slider\":\"volume-slider-G_xAt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"control-bar-container\":\"control-bar-container-xsWA7\",\"seek-bar\":\"seek-bar-I7WeY\",\"control-bar-buttons-container\":\"control-bar-buttons-container-SWhkU\",\"control-bar-button\":\"control-bar-button-FQUsj\",\"icon\":\"icon-qy6I6\",\"volume-slider\":\"volume-slider-U9jfo\",\"spacing\":\"spacing-p8NJQ\",\"control-bar-buttons-menu-button\":\"control-bar-buttons-menu-button-h0MWd\",\"control-bar-buttons-menu-container\":\"control-bar-buttons-menu-container-M6L0_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"info-menu-container\":\"info-menu-container-R1QKH\",\"stream\":\"stream-MY2Oy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"next-video-popup-container\":\"next-video-popup-container-H4wnL\",\"slide-fade-in\":\"slide-fade-in-rk2M8\",\"poster-container\":\"poster-container-tXZjA\",\"poster-image\":\"poster-image-2D6wg\",\"placeholder-icon\":\"placeholder-icon-fu1rK\",\"info-container\":\"info-container-KLOMx\",\"details-container\":\"details-container-bUOTZ\",\"name\":\"name-sIiDL\",\"description\":\"description-gIXiC\",\"buttons-container\":\"buttons-container-iYrpZ\",\"spacing\":\"spacing-iFwsN\",\"button-container\":\"button-container-i4F7t\",\"play-button\":\"play-button-Dluk6\",\"icon\":\"icon-N3Ewm\",\"label\":\"label-zOq_w\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"option-container\":\"option-container-m_jZq\",\"icon\":\"icon-krR0X\",\"label\":\"label-cmqqu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"options-menu-container\":\"options-menu-container-qlzLt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"option\":\"option-_O96j\",\"icon\":\"icon-kqaPF\",\"label\":\"label-FEOiu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"speed-menu-container\":\"speed-menu-container-ABjzc\",\"title\":\"title-Hu2Dm\",\"options-container\":\"options-container-DNn3D\",\"option\":\"option-GcPlB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"statistics-menu-container\":\"statistics-menu-container-DhiHn\",\"title\":\"title-NCwWH\",\"label\":\"label-h6nN_\",\"value\":\"value-E8Ftb\",\"stats\":\"stats-Tr37t\",\"stat\":\"stat-zoq5A\",\"info-hash\":\"info-hash-GT1Cv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"discrete-input-container\":\"discrete-input-container-CMThy\",\"header\":\"header-n0jWL\",\"input-container\":\"input-container-TNuI2\",\"button-container\":\"button-container-ciSB5\",\"icon\":\"icon-JDltr\",\"option-label\":\"option-label-tjeeT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"subtitles-menu-container\":\"subtitles-menu-container-PxBRZ\",\"languages-container\":\"languages-container-NS7H9\",\"subtitles-settings-container\":\"subtitles-settings-container-LhRGS\",\"variants-container\":\"variants-container-XglzH\",\"languages-header\":\"languages-header-jGNcK\",\"settings-header\":\"settings-header-eaWnm\",\"variants-header\":\"variants-header-TsVSR\",\"languages-list\":\"languages-list-sxIwI\",\"variants-list\":\"variants-list-yZo6B\",\"language-option\":\"language-option-O1Yr9\",\"variant-option\":\"variant-option-t7_LA\",\"language-label\":\"language-label-FjjqA\",\"variant-label\":\"variant-label-opjnP\",\"icon\":\"icon-I1Ruh\",\"no-variants-container\":\"no-variants-container-q6u1Q\",\"no-variants-label\":\"no-variants-label-RmDKZ\",\"spacing\":\"spacing-AWJpt\",\"discrete-input\":\"discrete-input-fXELp\",\"advanced-button\":\"advanced-button-YGN5T\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"video-container\":\"video-container-v9_vA\",\"video\":\"video-tkpQm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videos-menu-container\":\"videos-menu-container-ATzKq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"player-container\":\"player-container-wIELK\",\"immersed\":\"immersed-Y0hn1\",\"control-bar-layer\":\"control-bar-layer-m2jto\",\"menu-layer\":\"menu-layer-HZFG9\",\"nav-bar-layer\":\"nav-bar-layer-r9HT5\",\"layer\":\"layer-qalDW\",\"error-layer\":\"error-layer-RCEZC\",\"error-label\":\"error-label-FPIMw\",\"error-sub\":\"error-sub-Myxw2\",\"playlist-button\":\"playlist-button-CB2WC\",\"icon\":\"icon-aMPEE\",\"label\":\"label-njZqk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"search-container\":\"search-container-uXEFf\",\"search-content\":\"search-content-LX6un\",\"search-row\":\"search-row-EQLaD\",\"search-hints-container\":\"search-hints-container-FHpPM\",\"search-hint-container\":\"search-hint-container-kd8iX\",\"icon\":\"icon-fOZZl\",\"label\":\"label-l6wxz\",\"message-container\":\"message-container-YAunr\",\"image\":\"image-Xuwya\",\"message-label\":\"message-label-K8LPz\",\"search-row-landscape\":\"search-row-landscape-o3Lfv\",\"search-row-poster\":\"search-row-poster-m7CUE\",\"search-row-square\":\"search-row-square-VesJA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"settings-container\":\"settings-container-b0DCu\",\"settings-content\":\"settings-content-lLXmk\",\"side-menu-container\":\"side-menu-container-NG17D\",\"side-menu-button\":\"side-menu-button-vbkJ1\",\"selected\":\"selected-yhdng\",\"spacing\":\"spacing-fpLUM\",\"version-info-label\":\"version-info-label-uMkm7\",\"sections-container\":\"sections-container-EUKAe\",\"section-container\":\"section-container-twzKQ\",\"section-title\":\"section-title-Nt71Z\",\"option-container\":\"option-container-EGlcv\",\"user-info-option-container\":\"user-info-option-container-oRLJc\",\"avatar-container\":\"avatar-container-YWq9E\",\"email-logout-container\":\"email-logout-container-kYQDM\",\"email-label-container\":\"email-label-container-oVmiO\",\"logout-button-container\":\"logout-button-container-jLrU2\",\"email-label\":\"email-label-Q__sJ\",\"logout-label\":\"logout-label-zo4ES\",\"user-panel-container\":\"user-panel-container-kkrJG\",\"user-panel-label\":\"user-panel-label-beAQl\",\"option-input-container\":\"option-input-container-NPgpT\",\"option-name-container\":\"option-name-container-exGMI\",\"icon\":\"icon-REQkK\",\"label\":\"label-FFamJ\",\"button-container\":\"button-container-ENMae\",\"multiselect-container\":\"multiselect-container-w0c9l\",\"link-container\":\"link-container-ERYsD\",\"checkbox-container\":\"checkbox-container-R9LLN\",\"color-input-container\":\"color-input-container-WclA_\",\"info-container\":\"info-container-wfFcS\",\"selectable\":\"selectable-eucrJ\",\"configure-input-container\":\"configure-input-container-PMyIY\",\"configure-button-container\":\"configure-button-container-xGFgg\",\"shortcut-container\":\"shortcut-container-ZSm5O\",\"configure-server-url-modal-container\":\"configure-server-url-modal-container-vSL44\",\"server-url-input\":\"server-url-input-Dfazw\",\"cancel-button\":\"cancel-button-iydew\"};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=xh(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return\"function\"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Vh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);\"function\"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?(\"function\"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?(\"function\"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:\"visible\",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case \"together\":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d=\"\",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version=\"18.2.0-next-9e3b772b8-20220608\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","/**\n * defines a focus group\n */\nexport var FOCUS_GROUP = 'data-focus-lock';\n/**\n * disables element discovery inside a group marked by key\n */\nexport var FOCUS_DISABLED = 'data-focus-lock-disabled';\n/**\n * allows uncontrolled focus within the marked area, effectively disabling focus lock for it's content\n */\nexport var FOCUS_ALLOW = 'data-no-focus-lock';\n/**\n * instructs autofocus engine to pick default autofocus inside a given node\n * can be set on the element or container\n */\nexport var FOCUS_AUTO = 'data-autofocus-inside';\n/**\n * instructs autofocus to ignore elements within a given node\n * can be set on the element or container\n */\nexport var FOCUS_NO_AUTOFOCUS = 'data-no-autofocus';\n","import { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n return useCallbackRef(defaultValue || null, function (newValue) { return refs.forEach(function (ref) { return assignRef(ref, newValue); }); });\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nexport var hiddenGuard = {\n width: '1px',\n height: '0px',\n padding: 0,\n overflow: 'hidden',\n position: 'fixed',\n top: '1px',\n left: '1px'\n};\n\nvar InFocusGuard = function InFocusGuard(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-first\",\n \"data-focus-guard\": true,\n \"data-focus-auto-guard\": true,\n style: hiddenGuard\n }), children, children && /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-last\",\n \"data-focus-guard\": true,\n \"data-focus-auto-guard\": true,\n style: hiddenGuard\n }));\n};\n\nInFocusGuard.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.node\n} : {};\nInFocusGuard.defaultProps = {\n children: null\n};\nexport default InFocusGuard;","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { createMedium, createSidecarMedium } from 'use-sidecar';\nexport var mediumFocus = createMedium({}, function (_ref) {\n var target = _ref.target,\n currentTarget = _ref.currentTarget;\n return {\n target: target,\n currentTarget: currentTarget\n };\n});\nexport var mediumBlur = createMedium();\nexport var mediumEffect = createMedium();\nexport var mediumSidecar = createSidecarMedium({\n async: true\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { node, bool, string, any, arrayOf, oneOfType, object, func } from 'prop-types';\nimport * as constants from 'focus-lock/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { useEffect } from 'react';\nimport { hiddenGuard } from './FocusGuard';\nimport { mediumFocus, mediumBlur, mediumSidecar } from './medium';\nvar emptyArray = [];\nvar FocusLock = /*#__PURE__*/React.forwardRef(function FocusLockUI(props, parentRef) {\n var _extends2;\n\n var _React$useState = React.useState(),\n realObserved = _React$useState[0],\n setObserved = _React$useState[1];\n\n var observed = React.useRef();\n var isActive = React.useRef(false);\n var originalFocusedElement = React.useRef(null);\n var children = props.children,\n disabled = props.disabled,\n noFocusGuards = props.noFocusGuards,\n persistentFocus = props.persistentFocus,\n crossFrame = props.crossFrame,\n autoFocus = props.autoFocus,\n allowTextSelection = props.allowTextSelection,\n group = props.group,\n className = props.className,\n whiteList = props.whiteList,\n hasPositiveIndices = props.hasPositiveIndices,\n _props$shards = props.shards,\n shards = _props$shards === void 0 ? emptyArray : _props$shards,\n _props$as = props.as,\n Container = _props$as === void 0 ? 'div' : _props$as,\n _props$lockProps = props.lockProps,\n containerProps = _props$lockProps === void 0 ? {} : _props$lockProps,\n SideCar = props.sideCar,\n shouldReturnFocus = props.returnFocus,\n focusOptions = props.focusOptions,\n onActivationCallback = props.onActivation,\n onDeactivationCallback = props.onDeactivation;\n\n var _React$useState2 = React.useState({}),\n id = _React$useState2[0]; // SIDE EFFECT CALLBACKS\n\n\n var onActivation = React.useCallback(function () {\n originalFocusedElement.current = originalFocusedElement.current || document && document.activeElement;\n\n if (observed.current && onActivationCallback) {\n onActivationCallback(observed.current);\n }\n\n isActive.current = true;\n }, [onActivationCallback]);\n var onDeactivation = React.useCallback(function () {\n isActive.current = false;\n\n if (onDeactivationCallback) {\n onDeactivationCallback(observed.current);\n }\n }, [onDeactivationCallback]);\n useEffect(function () {\n if (!disabled) {\n // cleanup return focus on trap deactivation\n // sideEffect/returnFocus should happen by this time\n originalFocusedElement.current = null;\n }\n }, []);\n var returnFocus = React.useCallback(function (allowDefer) {\n var returnFocusTo = originalFocusedElement.current;\n\n if (returnFocusTo && returnFocusTo.focus) {\n var howToReturnFocus = typeof shouldReturnFocus === 'function' ? shouldReturnFocus(returnFocusTo) : shouldReturnFocus;\n\n if (howToReturnFocus) {\n var returnFocusOptions = typeof howToReturnFocus === 'object' ? howToReturnFocus : undefined;\n originalFocusedElement.current = null;\n\n if (allowDefer) {\n // React might return focus after update\n // it's safer to defer the action\n Promise.resolve().then(function () {\n return returnFocusTo.focus(returnFocusOptions);\n });\n } else {\n returnFocusTo.focus(returnFocusOptions);\n }\n }\n }\n }, [shouldReturnFocus]); // MEDIUM CALLBACKS\n\n var onFocus = React.useCallback(function (event) {\n if (isActive.current) {\n mediumFocus.useMedium(event);\n }\n }, []);\n var onBlur = mediumBlur.useMedium; // REF PROPAGATION\n // not using real refs due to race conditions\n\n var setObserveNode = React.useCallback(function (newObserved) {\n if (observed.current !== newObserved) {\n observed.current = newObserved;\n setObserved(newObserved);\n }\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof allowTextSelection !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn('React-Focus-Lock: allowTextSelection is deprecated and enabled by default');\n }\n\n React.useEffect(function () {\n if (!observed.current) {\n // eslint-disable-next-line no-console\n console.error('FocusLock: could not obtain ref to internal node');\n }\n }, []);\n }\n\n var lockProps = _extends((_extends2 = {}, _extends2[constants.FOCUS_DISABLED] = disabled && 'disabled', _extends2[constants.FOCUS_GROUP] = group, _extends2), containerProps);\n\n var hasLeadingGuards = noFocusGuards !== true;\n var hasTailingGuards = hasLeadingGuards && noFocusGuards !== 'tail';\n var mergedRef = useMergeRefs([parentRef, setObserveNode]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, hasLeadingGuards && [\n /*#__PURE__*/\n // nearest focus guard\n React.createElement(\"div\", {\n key: \"guard-first\",\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 0,\n style: hiddenGuard\n }), // first tabbed element guard\n hasPositiveIndices ? /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-nearest\",\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 1,\n style: hiddenGuard\n }) : null], !disabled && /*#__PURE__*/React.createElement(SideCar, {\n id: id,\n sideCar: mediumSidecar,\n observed: realObserved,\n disabled: disabled,\n persistentFocus: persistentFocus,\n crossFrame: crossFrame,\n autoFocus: autoFocus,\n whiteList: whiteList,\n shards: shards,\n onActivation: onActivation,\n onDeactivation: onDeactivation,\n returnFocus: returnFocus,\n focusOptions: focusOptions\n }), /*#__PURE__*/React.createElement(Container, _extends({\n ref: mergedRef\n }, lockProps, {\n className: className,\n onBlur: onBlur,\n onFocus: onFocus\n }), children), hasTailingGuards && /*#__PURE__*/React.createElement(\"div\", {\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 0,\n style: hiddenGuard\n }));\n});\nFocusLock.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: node,\n disabled: bool,\n returnFocus: oneOfType([bool, object, func]),\n focusOptions: object,\n noFocusGuards: bool,\n hasPositiveIndices: bool,\n allowTextSelection: bool,\n autoFocus: bool,\n persistentFocus: bool,\n crossFrame: bool,\n group: string,\n className: string,\n whiteList: func,\n shards: arrayOf(any),\n as: oneOfType([string, func, object]),\n lockProps: object,\n onActivation: func,\n onDeactivation: func,\n sideCar: any.isRequired\n} : {};\nFocusLock.defaultProps = {\n children: undefined,\n disabled: false,\n returnFocus: false,\n focusOptions: undefined,\n noFocusGuards: false,\n autoFocus: true,\n persistentFocus: false,\n crossFrame: true,\n hasPositiveIndices: undefined,\n allowTextSelection: undefined,\n group: undefined,\n className: undefined,\n whiteList: undefined,\n shards: undefined,\n as: 'div',\n lockProps: {},\n onActivation: undefined,\n onDeactivation: undefined\n};\nexport default FocusLock;","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { PureComponent } from 'react';\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n handleStateChangeOnClient(state);\n }\n\n var SideEffect = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n SideEffect.peek = function peek() {\n return state;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n return SideEffect;\n };\n}\n\nexport default withSideEffect;\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import { FOCUS_NO_AUTOFOCUS } from '../constants';\nvar isElementHidden = function (node) {\n // we can measure only \"elements\"\n // consider others as \"visible\"\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false;\n }\n var computedStyle = window.getComputedStyle(node, null);\n if (!computedStyle || !computedStyle.getPropertyValue) {\n return false;\n }\n return (computedStyle.getPropertyValue('display') === 'none' || computedStyle.getPropertyValue('visibility') === 'hidden');\n};\nvar getParentNode = function (node) {\n // DOCUMENT_FRAGMENT_NODE can also point on ShadowRoot. In this case .host will point on the next node\n return node.parentNode && node.parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node.parentNode.host\n : node.parentNode;\n};\nvar isTopNode = function (node) {\n // @ts-ignore\n return node === document || (node && node.nodeType === Node.DOCUMENT_NODE);\n};\nvar isVisibleUncached = function (node, checkParent) {\n return !node || isTopNode(node) || (!isElementHidden(node) && checkParent(getParentNode(node)));\n};\nexport var isVisibleCached = function (visibilityCache, node) {\n var cached = visibilityCache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isVisibleUncached(node, isVisibleCached.bind(undefined, visibilityCache));\n visibilityCache.set(node, result);\n return result;\n};\nvar isAutoFocusAllowedUncached = function (node, checkParent) {\n return node && !isTopNode(node) ? (isAutoFocusAllowed(node) ? checkParent(getParentNode(node)) : false) : true;\n};\nexport var isAutoFocusAllowedCached = function (cache, node) {\n var cached = cache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isAutoFocusAllowedUncached(node, isAutoFocusAllowedCached.bind(undefined, cache));\n cache.set(node, result);\n return result;\n};\nexport var getDataset = function (node) {\n // @ts-ignore\n return node.dataset;\n};\nexport var isHTMLButtonElement = function (node) { return node.tagName === 'BUTTON'; };\nexport var isHTMLInputElement = function (node) { return node.tagName === 'INPUT'; };\nexport var isRadioElement = function (node) {\n return isHTMLInputElement(node) && node.type === 'radio';\n};\nexport var notHiddenInput = function (node) {\n return !((isHTMLInputElement(node) || isHTMLButtonElement(node)) && (node.type === 'hidden' || node.disabled));\n};\nexport var isAutoFocusAllowed = function (node) {\n var attribute = node.getAttribute(FOCUS_NO_AUTOFOCUS);\n return ![true, 'true', ''].includes(attribute);\n};\nexport var isGuard = function (node) { var _a; return Boolean(node && ((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.focusGuard)); };\nexport var isNotAGuard = function (node) { return !isGuard(node); };\nexport var isDefined = function (x) { return Boolean(x); };\n","import { isRadioElement } from './is';\nvar findSelectedRadio = function (node, nodes) {\n return nodes\n .filter(isRadioElement)\n .filter(function (el) { return el.name === node.name; })\n .filter(function (el) { return el.checked; })[0] || node;\n};\nexport var correctNode = function (node, nodes) {\n if (isRadioElement(node) && node.name) {\n return findSelectedRadio(node, nodes);\n }\n return node;\n};\n/**\n * giving a set of radio inputs keeps only selected (tabbable) ones\n * @param nodes\n */\nexport var correctNodes = function (nodes) {\n // IE11 has no Set(array) constructor\n var resultSet = new Set();\n nodes.forEach(function (node) { return resultSet.add(correctNode(node, nodes)); });\n // using filter to support IE11\n return nodes.filter(function (node) { return resultSet.has(node); });\n};\n","import { correctNode } from './correctFocus';\nexport var pickFirstFocus = function (nodes) {\n if (nodes[0] && nodes.length > 1) {\n return correctNode(nodes[0], nodes);\n }\n return nodes[0];\n};\nexport var pickFocusable = function (nodes, index) {\n if (nodes.length > 1) {\n return nodes.indexOf(correctNode(nodes[index], nodes));\n }\n return index;\n};\n","import { correctNodes } from './utils/correctFocus';\nimport { pickFocusable } from './utils/firstFocus';\nimport { isGuard } from './utils/is';\nexport var NEW_FOCUS = 'NEW_FOCUS';\n/**\n * Main solver for the \"find next focus\" question\n * @param innerNodes\n * @param outerNodes\n * @param activeElement\n * @param lastNode\n * @returns {number|string|undefined|*}\n */\nexport var newFocus = function (innerNodes, outerNodes, activeElement, lastNode) {\n var cnt = innerNodes.length;\n var firstFocus = innerNodes[0];\n var lastFocus = innerNodes[cnt - 1];\n var isOnGuard = isGuard(activeElement);\n // focus is inside\n if (activeElement && innerNodes.indexOf(activeElement) >= 0) {\n return undefined;\n }\n var activeIndex = activeElement !== undefined ? outerNodes.indexOf(activeElement) : -1;\n var lastIndex = lastNode ? outerNodes.indexOf(lastNode) : activeIndex;\n var lastNodeInside = lastNode ? innerNodes.indexOf(lastNode) : -1;\n var indexDiff = activeIndex - lastIndex;\n var firstNodeIndex = outerNodes.indexOf(firstFocus);\n var lastNodeIndex = outerNodes.indexOf(lastFocus);\n var correctedNodes = correctNodes(outerNodes);\n var correctedIndex = activeElement !== undefined ? correctedNodes.indexOf(activeElement) : -1;\n var correctedIndexDiff = correctedIndex - (lastNode ? correctedNodes.indexOf(lastNode) : activeIndex);\n var returnFirstNode = pickFocusable(innerNodes, 0);\n var returnLastNode = pickFocusable(innerNodes, cnt - 1);\n // new focus\n if (activeIndex === -1 || lastNodeInside === -1) {\n return NEW_FOCUS;\n }\n // old focus\n if (!indexDiff && lastNodeInside >= 0) {\n return lastNodeInside;\n }\n // first element\n if (activeIndex <= firstNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnLastNode;\n }\n // last element\n if (activeIndex >= lastNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnFirstNode;\n }\n // jump out, but not on the guard\n if (indexDiff && Math.abs(correctedIndexDiff) > 1) {\n return lastNodeInside;\n }\n // focus above lock\n if (activeIndex <= firstNodeIndex) {\n return returnLastNode;\n }\n // focus below lock\n if (activeIndex > lastNodeIndex) {\n return returnFirstNode;\n }\n // index is inside tab order, but outside Lock\n if (indexDiff) {\n if (Math.abs(indexDiff) > 1) {\n return lastNodeInside;\n }\n return (cnt + lastNodeInside + indexDiff) % cnt;\n }\n // do nothing\n return undefined;\n};\n","/*\nIE11 support\n */\nexport var toArray = function (a) {\n var ret = Array(a.length);\n for (var i = 0; i < a.length; ++i) {\n ret[i] = a[i];\n }\n return ret;\n};\nexport var asArray = function (a) { return (Array.isArray(a) ? a : [a]); };\n","import { toArray } from './array';\nexport var tabSort = function (a, b) {\n var tabDiff = a.tabIndex - b.tabIndex;\n var indexDiff = a.index - b.index;\n if (tabDiff) {\n if (!a.tabIndex) {\n return 1;\n }\n if (!b.tabIndex) {\n return -1;\n }\n }\n return tabDiff || indexDiff;\n};\nexport var orderByTabIndex = function (nodes, filterNegative, keepGuards) {\n return toArray(nodes)\n .map(function (node, index) { return ({\n node: node,\n index: index,\n tabIndex: keepGuards && node.tabIndex === -1 ? ((node.dataset || {}).focusGuard ? 0 : -1) : node.tabIndex,\n }); })\n .filter(function (data) { return !filterNegative || data.tabIndex >= 0; })\n .sort(tabSort);\n};\n","import { FOCUS_AUTO } from '../constants';\nimport { toArray } from './array';\nimport { tabbables } from './tabbables';\nvar queryTabbables = tabbables.join(',');\nvar queryGuardTabbables = \"\".concat(queryTabbables, \", [data-focus-guard]\");\nvar getFocusablesWithShadowDom = function (parent, withGuards) {\n var _a;\n return toArray(((_a = parent.shadowRoot) === null || _a === void 0 ? void 0 : _a.children) || parent.children).reduce(function (acc, child) {\n return acc.concat(child.matches(withGuards ? queryGuardTabbables : queryTabbables) ? [child] : [], getFocusablesWithShadowDom(child));\n }, []);\n};\nexport var getFocusables = function (parents, withGuards) {\n return parents.reduce(function (acc, parent) {\n return acc.concat(\n // add all tabbables inside and within shadow DOMs in DOM order\n getFocusablesWithShadowDom(parent, withGuards), \n // add if node is tabbable itself\n parent.parentNode\n ? toArray(parent.parentNode.querySelectorAll(queryTabbables)).filter(function (node) { return node === parent; })\n : []);\n }, []);\n};\n/**\n * return a list of focusable nodes within an area marked as \"auto-focusable\"\n * @param parent\n */\nexport var getParentAutofocusables = function (parent) {\n var parentFocus = parent.querySelectorAll(\"[\".concat(FOCUS_AUTO, \"]\"));\n return toArray(parentFocus)\n .map(function (node) { return getFocusables([node]); })\n .reduce(function (acc, nodes) { return acc.concat(nodes); }, []);\n};\n","/**\n * list of the object to be considered as focusable\n */\nexport var tabbables = [\n 'button:enabled',\n 'select:enabled',\n 'textarea:enabled',\n 'input:enabled',\n // elements with explicit roles will also use explicit tabindex\n // '[role=\"button\"]',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[tabindex]',\n '[contenteditable]',\n '[autofocus]',\n];\n","import { toArray } from './array';\nimport { isAutoFocusAllowedCached, isVisibleCached, notHiddenInput } from './is';\nimport { orderByTabIndex } from './tabOrder';\nimport { getFocusables, getParentAutofocusables } from './tabUtils';\n/**\n * given list of focusable elements keeps the ones user can interact with\n * @param nodes\n * @param visibilityCache\n */\nexport var filterFocusable = function (nodes, visibilityCache) {\n return toArray(nodes)\n .filter(function (node) { return isVisibleCached(visibilityCache, node); })\n .filter(function (node) { return notHiddenInput(node); });\n};\nexport var filterAutoFocusable = function (nodes, cache) {\n if (cache === void 0) { cache = new Map(); }\n return toArray(nodes).filter(function (node) { return isAutoFocusAllowedCached(cache, node); });\n};\n/**\n * only tabbable ones\n * (but with guards which would be ignored)\n */\nexport var getTabbableNodes = function (topNodes, visibilityCache, withGuards) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes, withGuards), visibilityCache), true, withGuards);\n};\n/**\n * actually anything \"focusable\", not only tabbable\n * (without guards, as long as they are not expected to be focused)\n */\nexport var getAllTabbableNodes = function (topNodes, visibilityCache) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes), visibilityCache), false);\n};\n/**\n * return list of nodes which are expected to be auto-focused\n * @param topNode\n * @param visibilityCache\n */\nexport var parentAutofocusables = function (topNode, visibilityCache) {\n return filterFocusable(getParentAutofocusables(topNode), visibilityCache);\n};\n/*\n * Determines if element is contained in scope, including nested shadow DOMs\n */\nexport var contains = function (scope, element) {\n return ((scope.shadowRoot\n ? contains(scope.shadowRoot, element)\n : Object.getPrototypeOf(scope).contains.call(scope, element)) ||\n toArray(scope.children).some(function (child) { return contains(child, element); }));\n};\n","import { FOCUS_DISABLED, FOCUS_GROUP } from '../constants';\nimport { asArray, toArray } from './array';\n/**\n * in case of multiple nodes nested inside each other\n * keeps only top ones\n * this is O(nlogn)\n * @param nodes\n * @returns {*}\n */\nvar filterNested = function (nodes) {\n var contained = new Set();\n var l = nodes.length;\n for (var i = 0; i < l; i += 1) {\n for (var j = i + 1; j < l; j += 1) {\n var position = nodes[i].compareDocumentPosition(nodes[j]);\n /* eslint-disable no-bitwise */\n if ((position & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0) {\n contained.add(j);\n }\n if ((position & Node.DOCUMENT_POSITION_CONTAINS) > 0) {\n contained.add(i);\n }\n /* eslint-enable */\n }\n }\n return nodes.filter(function (_, index) { return !contained.has(index); });\n};\n/**\n * finds top most parent for a node\n * @param node\n * @returns {*}\n */\nvar getTopParent = function (node) {\n return node.parentNode ? getTopParent(node.parentNode) : node;\n};\n/**\n * returns all \"focus containers\" inside a given node\n * @param node\n * @returns {T}\n */\nexport var getAllAffectedNodes = function (node) {\n var nodes = asArray(node);\n return nodes.filter(Boolean).reduce(function (acc, currentNode) {\n var group = currentNode.getAttribute(FOCUS_GROUP);\n acc.push.apply(acc, (group\n ? filterNested(toArray(getTopParent(currentNode).querySelectorAll(\"[\".concat(FOCUS_GROUP, \"=\\\"\").concat(group, \"\\\"]:not([\").concat(FOCUS_DISABLED, \"=\\\"disabled\\\"])\"))))\n : [currentNode]));\n return acc;\n }, []);\n};\n","var getNestedShadowActiveElement = function (shadowRoot) {\n return shadowRoot.activeElement\n ? shadowRoot.activeElement.shadowRoot\n ? getNestedShadowActiveElement(shadowRoot.activeElement.shadowRoot)\n : shadowRoot.activeElement\n : undefined;\n};\n/**\n * returns active element from document or from nested shadowdoms\n */\nexport var getActiveElement = function () {\n return (document.activeElement\n ? document.activeElement.shadowRoot\n ? getNestedShadowActiveElement(document.activeElement.shadowRoot)\n : document.activeElement\n : undefined); // eslint-disable-next-line @typescript-eslint/no-explicit-any\n};\n","import { parentAutofocusables } from './DOMutils';\nimport { contains } from './DOMutils';\nimport { asArray } from './array';\nvar getParents = function (node, parents) {\n if (parents === void 0) { parents = []; }\n parents.push(node);\n if (node.parentNode) {\n getParents(node.parentNode.host || node.parentNode, parents);\n }\n return parents;\n};\n/**\n * finds a parent for both nodeA and nodeB\n * @param nodeA\n * @param nodeB\n * @returns {boolean|*}\n */\nexport var getCommonParent = function (nodeA, nodeB) {\n var parentsA = getParents(nodeA);\n var parentsB = getParents(nodeB);\n // tslint:disable-next-line:prefer-for-of\n for (var i = 0; i < parentsA.length; i += 1) {\n var currentParent = parentsA[i];\n if (parentsB.indexOf(currentParent) >= 0) {\n return currentParent;\n }\n }\n return false;\n};\nexport var getTopCommonParent = function (baseActiveElement, leftEntry, rightEntries) {\n var activeElements = asArray(baseActiveElement);\n var leftEntries = asArray(leftEntry);\n var activeElement = activeElements[0];\n var topCommon = false;\n leftEntries.filter(Boolean).forEach(function (entry) {\n topCommon = getCommonParent(topCommon || entry, entry) || topCommon;\n rightEntries.filter(Boolean).forEach(function (subEntry) {\n var common = getCommonParent(activeElement, subEntry);\n if (common) {\n if (!topCommon || contains(common, topCommon)) {\n topCommon = common;\n }\n else {\n topCommon = getCommonParent(common, topCommon);\n }\n }\n });\n });\n // TODO: add assert here?\n return topCommon;\n};\n/**\n * return list of nodes which are expected to be autofocused inside a given top nodes\n * @param entries\n * @param visibilityCache\n */\nexport var allParentAutofocusables = function (entries, visibilityCache) {\n return entries.reduce(function (acc, node) { return acc.concat(parentAutofocusables(node, visibilityCache)); }, []);\n};\n","import { NEW_FOCUS, newFocus } from './solver';\nimport { filterAutoFocusable, getAllTabbableNodes, getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { pickFirstFocus } from './utils/firstFocus';\nimport { getActiveElement } from './utils/getActiveElement';\nimport { getDataset, isDefined, isNotAGuard } from './utils/is';\nimport { allParentAutofocusables, getTopCommonParent } from './utils/parenting';\nvar findAutoFocused = function (autoFocusables) {\n return function (node) { var _a; \n // @ts-expect-error\n return node.autofocus || !!((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.autofocus) || autoFocusables.indexOf(node) >= 0; };\n};\nvar reorderNodes = function (srcNodes, dstNodes) {\n var remap = new Map();\n // no Set(dstNodes) for IE11 :(\n dstNodes.forEach(function (entity) { return remap.set(entity.node, entity); });\n // remap to dstNodes\n return srcNodes.map(function (node) { return remap.get(node); }).filter(isDefined);\n};\n/**\n * given top node(s) and the last active element return the element to be focused next\n * @param topNode\n * @param lastNode\n */\nexport var getFocusMerge = function (topNode, lastNode) {\n var activeElement = document && getActiveElement();\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(activeElement || topNode, topNode, entries);\n var visibilityCache = new Map();\n var anyFocusable = getAllTabbableNodes(entries, visibilityCache);\n var innerElements = getTabbableNodes(entries, visibilityCache).filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n });\n if (!innerElements[0]) {\n innerElements = anyFocusable;\n if (!innerElements[0]) {\n return undefined;\n }\n }\n var outerNodes = getAllTabbableNodes([commonParent], visibilityCache).map(function (_a) {\n var node = _a.node;\n return node;\n });\n var orderedInnerElements = reorderNodes(outerNodes, innerElements);\n var innerNodes = orderedInnerElements.map(function (_a) {\n var node = _a.node;\n return node;\n });\n var newId = newFocus(innerNodes, outerNodes, activeElement, lastNode);\n if (newId === NEW_FOCUS) {\n var autoFocusable = filterAutoFocusable(anyFocusable.map(function (_a) {\n var node = _a.node;\n return node;\n })).filter(findAutoFocused(allParentAutofocusables(entries, visibilityCache)));\n return {\n node: autoFocusable && autoFocusable.length\n ? pickFirstFocus(autoFocusable)\n : pickFirstFocus(filterAutoFocusable(innerNodes)),\n };\n }\n if (newId === undefined) {\n return newId;\n }\n return orderedInnerElements[newId];\n};\n","import { getFocusMerge } from './focusMerge';\nexport var focusOn = function (target, focusOptions) {\n if ('focus' in target) {\n target.focus(focusOptions);\n }\n if ('contentWindow' in target && target.contentWindow) {\n target.contentWindow.focus();\n }\n};\nvar guardCount = 0;\nvar lockDisabled = false;\n/**\n * Sets focus at a given node. The last focused element will help to determine which element(first or last) should be focused.\n * HTML markers (see {@link import('./constants').FOCUS_AUTO} constants) can control autofocus\n * @param topNode\n * @param lastNode\n * @param options\n */\nexport var setFocus = function (topNode, lastNode, options) {\n if (options === void 0) { options = {}; }\n var focusable = getFocusMerge(topNode, lastNode);\n if (lockDisabled) {\n return;\n }\n if (focusable) {\n if (guardCount > 2) {\n // tslint:disable-next-line:no-console\n console.error('FocusLock: focus-fighting detected. Only one focus management system could be active. ' +\n 'See https://github.com/theKashey/focus-lock/#focus-fighting');\n lockDisabled = true;\n setTimeout(function () {\n lockDisabled = false;\n }, 1);\n return;\n }\n guardCount++;\n focusOn(focusable.node, options.focusOptions);\n guardCount--;\n }\n};\n","import * as constants from './constants';\nimport { focusInside } from './focusInside';\nimport { focusIsHidden } from './focusIsHidden';\nimport { getFocusMerge as focusMerge } from './focusMerge';\nimport { getFocusabledIn, getFocusableIn } from './focusables';\nimport { setFocus } from './setFocus';\nimport { focusNextElement, focusPrevElement } from './sibling';\nimport tabHook from './tabHook';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { getActiveElement } from './utils/getActiveElement';\nexport { tabHook, focusInside, focusIsHidden, focusMerge, getFocusableIn, getFocusabledIn, constants, getAllAffectedNodes, focusNextElement, focusPrevElement, getActiveElement, };\nexport default setFocus;\n//\n","import { FOCUS_ALLOW } from './constants';\nimport { contains } from './utils/DOMutils';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\n/**\n * focus is hidden FROM the focus-lock\n * ie contained inside a node focus-lock shall ignore\n * @returns {boolean} focus is currently is in \"allow\" area\n */\nexport var focusIsHidden = function () {\n var activeElement = document && getActiveElement();\n if (!activeElement) {\n return false;\n }\n // this does not support setting FOCUS_ALLOW within shadow dom\n return toArray(document.querySelectorAll(\"[\".concat(FOCUS_ALLOW, \"]\"))).some(function (node) { return contains(node, activeElement); });\n};\n","import { contains } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\nvar focusInFrame = function (frame) { return frame === document.activeElement; };\nvar focusInsideIframe = function (topNode) {\n return Boolean(toArray(topNode.querySelectorAll('iframe')).some(function (node) { return focusInFrame(node); }));\n};\n/**\n * @returns {Boolean} true, if the current focus is inside given node or nodes\n */\nexport var focusInside = function (topNode) {\n var activeElement = document && getActiveElement();\n if (!activeElement || (activeElement.dataset && activeElement.dataset.focusGuard)) {\n return false;\n }\n return getAllAffectedNodes(topNode).some(function (node) { return contains(node, activeElement) || focusInsideIframe(node); });\n};\n","import { getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { isGuard, isNotAGuard } from './utils/is';\nimport { getTopCommonParent } from './utils/parenting';\n/**\n * return list of focusable elements inside a given top node\n * @deprecated use {@link getFocusableIn}. Yep, there is typo in the function name\n */\nexport var getFocusabledIn = function (topNode) {\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(topNode, topNode, entries);\n var visibilityCache = new Map();\n var outerNodes = getTabbableNodes([commonParent], visibilityCache, true);\n var innerElements = getTabbableNodes(entries, visibilityCache)\n .filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n })\n .map(function (_a) {\n var node = _a.node;\n return node;\n });\n return outerNodes.map(function (_a) {\n var node = _a.node, index = _a.index;\n return ({\n node: node,\n index: index,\n lockItem: innerElements.indexOf(node) >= 0,\n guard: isGuard(node),\n });\n });\n};\n/**\n * return list of focusable elements inside a given top node\n */\nexport var getFocusableIn = getFocusabledIn;\n","export function deferAction(action) {\n // Hidding setImmediate from Webpack to avoid inserting polyfill\n var _window = window,\n setImmediate = _window.setImmediate;\n\n if (typeof setImmediate !== 'undefined') {\n setImmediate(action);\n } else {\n setTimeout(action, 1);\n }\n}\nexport var inlineProp = function inlineProp(name, value) {\n var obj = {};\n obj[name] = value;\n return obj;\n};","/* eslint-disable no-mixed-operators */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport withSideEffect from 'react-clientside-effect';\nimport moveFocusInside, { focusInside, focusIsHidden, getFocusabledIn } from 'focus-lock';\nimport { deferAction } from './util';\nimport { mediumFocus, mediumBlur, mediumEffect } from './medium';\n\nvar focusOnBody = function focusOnBody() {\n return document && document.activeElement === document.body;\n};\n\nvar isFreeFocus = function isFreeFocus() {\n return focusOnBody() || focusIsHidden();\n};\n\nvar lastActiveTrap = null;\nvar lastActiveFocus = null;\nvar lastPortaledElement = null;\nvar focusWasOutsideWindow = false;\n\nvar defaultWhitelist = function defaultWhitelist() {\n return true;\n};\n\nvar focusWhitelisted = function focusWhitelisted(activeElement) {\n return (lastActiveTrap.whiteList || defaultWhitelist)(activeElement);\n};\n\nvar recordPortal = function recordPortal(observerNode, portaledElement) {\n lastPortaledElement = {\n observerNode: observerNode,\n portaledElement: portaledElement\n };\n};\n\nvar focusIsPortaledPair = function focusIsPortaledPair(element) {\n return lastPortaledElement && lastPortaledElement.portaledElement === element;\n};\n\nfunction autoGuard(startIndex, end, step, allNodes) {\n var lastGuard = null;\n var i = startIndex;\n\n do {\n var item = allNodes[i];\n\n if (item.guard) {\n if (item.node.dataset.focusAutoGuard) {\n lastGuard = item;\n }\n } else if (item.lockItem) {\n if (i !== startIndex) {\n // we will tab to the next element\n return;\n }\n\n lastGuard = null;\n } else {\n break;\n }\n } while ((i += step) !== end);\n\n if (lastGuard) {\n lastGuard.node.tabIndex = 0;\n }\n}\n\nvar extractRef = function extractRef(ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\n\nvar focusWasOutside = function focusWasOutside(crossFrameOption) {\n if (crossFrameOption) {\n // with cross frame return true for any value\n return Boolean(focusWasOutsideWindow);\n } // in other case return only of focus went a while aho\n\n\n return focusWasOutsideWindow === 'meanwhile';\n};\n\nvar checkInHost = function checkInHost(check, el, boundary) {\n return el && ( // find host equal to active element and check nested active element\n el.host === check && (!el.activeElement || boundary.contains(el.activeElement)) // dive up\n || el.parentNode && checkInHost(check, el.parentNode, boundary));\n};\n\nvar withinHost = function withinHost(activeElement, workingArea) {\n return workingArea.some(function (area) {\n return checkInHost(activeElement, area, area);\n });\n};\n\nvar activateTrap = function activateTrap() {\n var result = false;\n\n if (lastActiveTrap) {\n var _lastActiveTrap = lastActiveTrap,\n observed = _lastActiveTrap.observed,\n persistentFocus = _lastActiveTrap.persistentFocus,\n autoFocus = _lastActiveTrap.autoFocus,\n shards = _lastActiveTrap.shards,\n crossFrame = _lastActiveTrap.crossFrame,\n focusOptions = _lastActiveTrap.focusOptions;\n var workingNode = observed || lastPortaledElement && lastPortaledElement.portaledElement;\n var activeElement = document && document.activeElement;\n\n if (workingNode) {\n var workingArea = [workingNode].concat(shards.map(extractRef).filter(Boolean));\n\n if (!activeElement || focusWhitelisted(activeElement)) {\n if (persistentFocus || focusWasOutside(crossFrame) || !isFreeFocus() || !lastActiveFocus && autoFocus) {\n if (workingNode && !( // active element is \"inside\" working area\n focusInside(workingArea) || // check for shadow-dom contained elements\n activeElement && withinHost(activeElement, workingArea) || focusIsPortaledPair(activeElement, workingNode))) {\n if (document && !lastActiveFocus && activeElement && !autoFocus) {\n // Check if blur() exists, which is missing on certain elements on IE\n if (activeElement.blur) {\n activeElement.blur();\n }\n\n document.body.focus();\n } else {\n result = moveFocusInside(workingArea, lastActiveFocus, {\n focusOptions: focusOptions\n });\n lastPortaledElement = {};\n }\n }\n\n focusWasOutsideWindow = false;\n lastActiveFocus = document && document.activeElement;\n }\n }\n\n if (document) {\n var newActiveElement = document && document.activeElement;\n var allNodes = getFocusabledIn(workingArea);\n var focusedIndex = allNodes.map(function (_ref) {\n var node = _ref.node;\n return node;\n }).indexOf(newActiveElement);\n\n if (focusedIndex > -1) {\n // remove old focus\n allNodes.filter(function (_ref2) {\n var guard = _ref2.guard,\n node = _ref2.node;\n return guard && node.dataset.focusAutoGuard;\n }).forEach(function (_ref3) {\n var node = _ref3.node;\n return node.removeAttribute('tabIndex');\n });\n autoGuard(focusedIndex, allNodes.length, +1, allNodes);\n autoGuard(focusedIndex, -1, -1, allNodes);\n }\n }\n }\n }\n\n return result;\n};\n\nvar onTrap = function onTrap(event) {\n if (activateTrap() && event) {\n // prevent scroll jump\n event.stopPropagation();\n event.preventDefault();\n }\n};\n\nvar onBlur = function onBlur() {\n return deferAction(activateTrap);\n};\n\nvar onFocus = function onFocus(event) {\n // detect portal\n var source = event.target;\n var currentNode = event.currentTarget;\n\n if (!currentNode.contains(source)) {\n recordPortal(currentNode, source);\n }\n};\n\nvar FocusWatcher = function FocusWatcher() {\n return null;\n};\n\nvar FocusTrap = function FocusTrap(_ref4) {\n var children = _ref4.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n onBlur: onBlur,\n onFocus: onFocus\n }, children);\n};\n\nFocusTrap.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.node.isRequired\n} : {};\n\nvar onWindowBlur = function onWindowBlur() {\n focusWasOutsideWindow = 'just'; // using setTimeout to set this variable after React/sidecar reaction\n\n setTimeout(function () {\n focusWasOutsideWindow = 'meanwhile';\n }, 0);\n};\n\nvar attachHandler = function attachHandler() {\n document.addEventListener('focusin', onTrap);\n document.addEventListener('focusout', onBlur);\n window.addEventListener('blur', onWindowBlur);\n};\n\nvar detachHandler = function detachHandler() {\n document.removeEventListener('focusin', onTrap);\n document.removeEventListener('focusout', onBlur);\n window.removeEventListener('blur', onWindowBlur);\n};\n\nfunction reducePropsToState(propsList) {\n return propsList.filter(function (_ref5) {\n var disabled = _ref5.disabled;\n return !disabled;\n });\n}\n\nfunction handleStateChangeOnClient(traps) {\n var trap = traps.slice(-1)[0];\n\n if (trap && !lastActiveTrap) {\n attachHandler();\n }\n\n var lastTrap = lastActiveTrap;\n var sameTrap = lastTrap && trap && trap.id === lastTrap.id;\n lastActiveTrap = trap;\n\n if (lastTrap && !sameTrap) {\n lastTrap.onDeactivation(); // return focus only of last trap was removed\n\n if (!traps.filter(function (_ref6) {\n var id = _ref6.id;\n return id === lastTrap.id;\n }).length) {\n // allow defer is no other trap is awaiting restore\n lastTrap.returnFocus(!trap);\n }\n }\n\n if (trap) {\n lastActiveFocus = null;\n\n if (!sameTrap || lastTrap.observed !== trap.observed) {\n trap.onActivation();\n }\n\n activateTrap(true);\n deferAction(activateTrap);\n } else {\n detachHandler();\n lastActiveFocus = null;\n }\n} // bind medium\n\n\nmediumFocus.assignSyncMedium(onFocus);\nmediumBlur.assignMedium(onBlur);\nmediumEffect.assignMedium(function (cb) {\n return cb({\n moveFocusInside: moveFocusInside,\n focusInside: focusInside\n });\n});\nexport default withSideEffect(reducePropsToState, handleStateChangeOnClient)(FocusWatcher);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport FocusLockUI from './Lock';\nimport FocusTrap from './Trap';\n/* that would be a BREAKING CHANGE!\n// delaying sidecar execution till the first usage\nconst RequireSideCar = (props) => {\n // eslint-disable-next-line global-require\n const SideCar = require('./Trap').default;\n return <SideCar {...props} />;\n};\n*/\n\nvar FocusLockCombination = /*#__PURE__*/React.forwardRef(function FocusLockUICombination(props, ref) {\n return /*#__PURE__*/React.createElement(FocusLockUI, _extends({\n sideCar: FocusTrap,\n ref: ref\n }, props));\n});\n\nvar _ref = FocusLockUI.propTypes || {},\n sideCar = _ref.sideCar,\n propTypes = _objectWithoutPropertiesLoose(_ref, [\"sideCar\"]);\n\nFocusLockCombination.propTypes = process.env.NODE_ENV !== \"production\" ? propTypes : {};\nexport default FocusLockCombination;","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import FocusLock from './Combination';\nexport * from './UI';\nexport default FocusLock;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.I18nextProvider = I18nextProvider;\n\nvar _react = require(\"react\");\n\nvar _context = require(\"./context.js\");\n\nfunction I18nextProvider(_ref) {\n var i18n = _ref.i18n,\n defaultNS = _ref.defaultNS,\n children = _ref.children;\n var value = (0, _react.useMemo)(function () {\n return {\n i18n: i18n,\n defaultNS: defaultNS\n };\n }, [i18n, defaultNS]);\n return (0, _react.createElement)(_context.I18nContext.Provider, {\n value: value\n }, children);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Trans = Trans;\nObject.defineProperty(exports, \"nodesToString\", {\n enumerable: true,\n get: function get() {\n return _TransWithoutContext.nodesToString;\n }\n});\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _react = require(\"react\");\n\nvar _TransWithoutContext = require(\"./TransWithoutContext.js\");\n\nvar _context = require(\"./context.js\");\n\nvar _excluded = [\"children\", \"count\", \"parent\", \"i18nKey\", \"context\", \"tOptions\", \"values\", \"defaults\", \"components\", \"ns\", \"i18n\", \"t\", \"shouldUnescape\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction Trans(_ref) {\n var children = _ref.children,\n count = _ref.count,\n parent = _ref.parent,\n i18nKey = _ref.i18nKey,\n context = _ref.context,\n _ref$tOptions = _ref.tOptions,\n tOptions = _ref$tOptions === void 0 ? {} : _ref$tOptions,\n values = _ref.values,\n defaults = _ref.defaults,\n components = _ref.components,\n ns = _ref.ns,\n i18nFromProps = _ref.i18n,\n tFromProps = _ref.t,\n shouldUnescape = _ref.shouldUnescape,\n additionalProps = (0, _objectWithoutProperties2[\"default\"])(_ref, _excluded);\n\n var _ref2 = (0, _react.useContext)(_context.I18nContext) || {},\n i18nFromContext = _ref2.i18n,\n defaultNSFromContext = _ref2.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || (0, _context.getI18n)();\n\n var t = tFromProps || i18n.t.bind(i18n) || function (k) {\n return k;\n };\n\n return (0, _TransWithoutContext.Trans)(_objectSpread({\n children: children,\n count: count,\n parent: parent,\n i18nKey: i18nKey,\n context: context,\n tOptions: tOptions,\n values: values,\n defaults: defaults,\n components: components,\n ns: ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS,\n i18n: i18n,\n t: tFromProps,\n shouldUnescape: shouldUnescape\n }, additionalProps));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.nodesToString = nodesToString;\nexports.Trans = Trans;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _react = require(\"react\");\n\nvar _htmlParseStringify = _interopRequireDefault(require(\"html-parse-stringify\"));\n\nvar _utils = require(\"./utils.js\");\n\nvar _defaults = require(\"./defaults.js\");\n\nvar _i18nInstance = require(\"./i18nInstance.js\");\n\nvar _excluded = [\"format\"],\n _excluded2 = [\"children\", \"count\", \"parent\", \"i18nKey\", \"context\", \"tOptions\", \"values\", \"defaults\", \"components\", \"ns\", \"i18n\", \"t\", \"shouldUnescape\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction hasChildren(node, checkLength) {\n if (!node) return false;\n var base = node.props ? node.props.children : node.children;\n if (checkLength) return base.length > 0;\n return !!base;\n}\n\nfunction getChildren(node) {\n if (!node) return [];\n return node.props ? node.props.children : node.children;\n}\n\nfunction hasValidReactChildren(children) {\n if (Object.prototype.toString.call(children) !== '[object Array]') return false;\n return children.every(function (child) {\n return (0, _react.isValidElement)(child);\n });\n}\n\nfunction getAsArray(data) {\n return Array.isArray(data) ? data : [data];\n}\n\nfunction mergeProps(source, target) {\n var newTarget = _objectSpread({}, target);\n\n newTarget.props = Object.assign(source.props, target.props);\n return newTarget;\n}\n\nfunction nodesToString(children, i18nOptions) {\n if (!children) return '';\n var stringNode = '';\n var childrenArray = getAsArray(children);\n var keepArray = i18nOptions.transSupportBasicHtmlNodes && i18nOptions.transKeepBasicHtmlNodesFor ? i18nOptions.transKeepBasicHtmlNodesFor : [];\n childrenArray.forEach(function (child, childIndex) {\n if (typeof child === 'string') {\n stringNode += \"\".concat(child);\n } else if ((0, _react.isValidElement)(child)) {\n var childPropsCount = Object.keys(child.props).length;\n var shouldKeepChild = keepArray.indexOf(child.type) > -1;\n var childChildren = child.props.children;\n\n if (!childChildren && shouldKeepChild && childPropsCount === 0) {\n stringNode += \"<\".concat(child.type, \"/>\");\n } else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) {\n stringNode += \"<\".concat(childIndex, \"></\").concat(childIndex, \">\");\n } else if (child.props.i18nIsDynamicList) {\n stringNode += \"<\".concat(childIndex, \"></\").concat(childIndex, \">\");\n } else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === 'string') {\n stringNode += \"<\".concat(child.type, \">\").concat(childChildren, \"</\").concat(child.type, \">\");\n } else {\n var content = nodesToString(childChildren, i18nOptions);\n stringNode += \"<\".concat(childIndex, \">\").concat(content, \"</\").concat(childIndex, \">\");\n }\n } else if (child === null) {\n (0, _utils.warn)(\"Trans: the passed in value is invalid - seems you passed in a null child.\");\n } else if ((0, _typeof2[\"default\"])(child) === 'object') {\n var format = child.format,\n clone = (0, _objectWithoutProperties2[\"default\"])(child, _excluded);\n var keys = Object.keys(clone);\n\n if (keys.length === 1) {\n var value = format ? \"\".concat(keys[0], \", \").concat(format) : keys[0];\n stringNode += \"{{\".concat(value, \"}}\");\n } else {\n (0, _utils.warn)(\"react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.\", child);\n }\n } else {\n (0, _utils.warn)(\"Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.\", child);\n }\n });\n return stringNode;\n}\n\nfunction renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) {\n if (targetString === '') return [];\n var keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];\n var emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.join('|')).test(targetString);\n if (!children && !emptyChildrenButNeedsHandling) return [targetString];\n var data = {};\n\n function getData(childs) {\n var childrenArray = getAsArray(childs);\n childrenArray.forEach(function (child) {\n if (typeof child === 'string') return;\n if (hasChildren(child)) getData(getChildren(child));else if ((0, _typeof2[\"default\"])(child) === 'object' && !(0, _react.isValidElement)(child)) Object.assign(data, child);\n });\n }\n\n getData(children);\n\n var ast = _htmlParseStringify[\"default\"].parse(\"<0>\".concat(targetString, \"</0>\"));\n\n var opts = _objectSpread(_objectSpread({}, data), combinedTOpts);\n\n function renderInner(child, node, rootReactNode) {\n var childs = getChildren(child);\n var mappedChildren = mapAST(childs, node.children, rootReactNode);\n return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;\n }\n\n function pushTranslatedJSX(child, inner, mem, i, isVoid) {\n if (child.dummy) child.children = inner;\n mem.push((0, _react.cloneElement)(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n }), isVoid ? undefined : inner));\n }\n\n function mapAST(reactNode, astNode, rootReactNode) {\n var reactNodes = getAsArray(reactNode);\n var astNodes = getAsArray(astNode);\n return astNodes.reduce(function (mem, node, i) {\n var translationContent = node.children && node.children[0] && node.children[0].content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);\n\n if (node.type === 'tag') {\n var tmp = reactNodes[parseInt(node.name, 10)];\n if (!tmp && rootReactNode.length === 1 && rootReactNode[0][node.name]) tmp = rootReactNode[0][node.name];\n if (!tmp) tmp = {};\n var child = Object.keys(node.attrs).length !== 0 ? mergeProps({\n props: node.attrs\n }, tmp) : tmp;\n var isElement = (0, _react.isValidElement)(child);\n var isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;\n var isEmptyTransWithHTML = emptyChildrenButNeedsHandling && (0, _typeof2[\"default\"])(child) === 'object' && child.dummy && !isElement;\n var isKnownComponent = (0, _typeof2[\"default\"])(children) === 'object' && children !== null && Object.hasOwnProperty.call(children, node.name);\n\n if (typeof child === 'string') {\n var value = i18n.services.interpolator.interpolate(child, opts, i18n.language);\n mem.push(value);\n } else if (hasChildren(child) || isValidTranslationWithChildren) {\n var inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (isEmptyTransWithHTML) {\n var _inner = mapAST(reactNodes, node.children, rootReactNode);\n\n mem.push((0, _react.cloneElement)(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n }), _inner));\n } else if (Number.isNaN(parseFloat(node.name))) {\n if (isKnownComponent) {\n var _inner2 = renderInner(child, node, rootReactNode);\n\n pushTranslatedJSX(child, _inner2, mem, i, node.voidElement);\n } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {\n if (node.voidElement) {\n mem.push((0, _react.createElement)(node.name, {\n key: \"\".concat(node.name, \"-\").concat(i)\n }));\n } else {\n var _inner3 = mapAST(reactNodes, node.children, rootReactNode);\n\n mem.push((0, _react.createElement)(node.name, {\n key: \"\".concat(node.name, \"-\").concat(i)\n }, _inner3));\n }\n } else if (node.voidElement) {\n mem.push(\"<\".concat(node.name, \" />\"));\n } else {\n var _inner4 = mapAST(reactNodes, node.children, rootReactNode);\n\n mem.push(\"<\".concat(node.name, \">\").concat(_inner4, \"</\").concat(node.name, \">\"));\n }\n } else if ((0, _typeof2[\"default\"])(child) === 'object' && !isElement) {\n var content = node.children[0] ? translationContent : null;\n if (content) mem.push(content);\n } else if (node.children.length === 1 && translationContent) {\n mem.push((0, _react.cloneElement)(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n }), translationContent));\n } else {\n mem.push((0, _react.cloneElement)(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n })));\n }\n } else if (node.type === 'text') {\n var wrapTextNodes = i18nOptions.transWrapTextNodes;\n\n var _content = shouldUnescape ? i18nOptions.unescape(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);\n\n if (wrapTextNodes) {\n mem.push((0, _react.createElement)(wrapTextNodes, {\n key: \"\".concat(node.name, \"-\").concat(i)\n }, _content));\n } else {\n mem.push(_content);\n }\n }\n\n return mem;\n }, []);\n }\n\n var result = mapAST([{\n dummy: true,\n children: children || []\n }], ast, getAsArray(children || []));\n return getChildren(result[0]);\n}\n\nfunction Trans(_ref) {\n var children = _ref.children,\n count = _ref.count,\n parent = _ref.parent,\n i18nKey = _ref.i18nKey,\n context = _ref.context,\n _ref$tOptions = _ref.tOptions,\n tOptions = _ref$tOptions === void 0 ? {} : _ref$tOptions,\n values = _ref.values,\n defaults = _ref.defaults,\n components = _ref.components,\n ns = _ref.ns,\n i18nFromProps = _ref.i18n,\n tFromProps = _ref.t,\n shouldUnescape = _ref.shouldUnescape,\n additionalProps = (0, _objectWithoutProperties2[\"default\"])(_ref, _excluded2);\n var i18n = i18nFromProps || (0, _i18nInstance.getI18n)();\n\n if (!i18n) {\n (0, _utils.warnOnce)('You will need to pass in an i18next instance by using i18nextReactModule');\n return children;\n }\n\n var t = tFromProps || i18n.t.bind(i18n) || function (k) {\n return k;\n };\n\n if (context) tOptions.context = context;\n\n var reactI18nextOptions = _objectSpread(_objectSpread({}, (0, _defaults.getDefaults)()), i18n.options && i18n.options.react);\n\n var namespaces = ns || t.ns || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n var defaultValue = defaults || nodesToString(children, reactI18nextOptions) || reactI18nextOptions.transEmptyNodeValue || i18nKey;\n var hashTransKey = reactI18nextOptions.hashTransKey;\n var key = i18nKey || (hashTransKey ? hashTransKey(defaultValue) : defaultValue);\n var interpolationOverride = values ? tOptions.interpolation : {\n interpolation: _objectSpread(_objectSpread({}, tOptions.interpolation), {}, {\n prefix: '#$?',\n suffix: '?$#'\n })\n };\n\n var combinedTOpts = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, tOptions), {}, {\n count: count\n }, values), interpolationOverride), {}, {\n defaultValue: defaultValue,\n ns: namespaces\n });\n\n var translation = key ? t(key, combinedTOpts) : defaultValue;\n var content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape);\n var useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent;\n return useAsParent ? (0, _react.createElement)(useAsParent, additionalProps, content) : content;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Translation = Translation;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _useTranslation3 = require(\"./useTranslation.js\");\n\nvar _excluded = [\"ns\", \"children\"];\n\nfunction Translation(props) {\n var ns = props.ns,\n children = props.children,\n options = (0, _objectWithoutProperties2[\"default\"])(props, _excluded);\n\n var _useTranslation = (0, _useTranslation3.useTranslation)(ns, options),\n _useTranslation2 = (0, _slicedToArray2[\"default\"])(_useTranslation, 3),\n t = _useTranslation2[0],\n i18n = _useTranslation2[1],\n ready = _useTranslation2[2];\n\n return children(t, {\n i18n: i18n,\n lng: i18n.language\n }, ready);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.composeInitialProps = composeInitialProps;\nexports.getInitialProps = getInitialProps;\nObject.defineProperty(exports, \"getDefaults\", {\n enumerable: true,\n get: function get() {\n return _defaults.getDefaults;\n }\n});\nObject.defineProperty(exports, \"setDefaults\", {\n enumerable: true,\n get: function get() {\n return _defaults.setDefaults;\n }\n});\nObject.defineProperty(exports, \"getI18n\", {\n enumerable: true,\n get: function get() {\n return _i18nInstance.getI18n;\n }\n});\nObject.defineProperty(exports, \"setI18n\", {\n enumerable: true,\n get: function get() {\n return _i18nInstance.setI18n;\n }\n});\nObject.defineProperty(exports, \"initReactI18next\", {\n enumerable: true,\n get: function get() {\n return _initReactI18next.initReactI18next;\n }\n});\nexports.ReportNamespaces = exports.I18nContext = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _react = require(\"react\");\n\nvar _defaults = require(\"./defaults.js\");\n\nvar _i18nInstance = require(\"./i18nInstance.js\");\n\nvar _initReactI18next = require(\"./initReactI18next.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar I18nContext = (0, _react.createContext)();\nexports.I18nContext = I18nContext;\n\nvar ReportNamespaces = function () {\n function ReportNamespaces() {\n (0, _classCallCheck2[\"default\"])(this, ReportNamespaces);\n this.usedNamespaces = {};\n }\n\n (0, _createClass2[\"default\"])(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n return ReportNamespaces;\n}();\n\nexports.ReportNamespaces = ReportNamespaces;\n\nfunction composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n };\n}\n\nfunction getInitialProps() {\n var i18n = (0, _i18nInstance.getI18n)();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setDefaults = setDefaults;\nexports.getDefaults = getDefaults;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _unescape = require(\"./unescape.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape: _unescape.unescape\n};\n\nfunction setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\n\nfunction getDefaults() {\n return defaultOptions;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setI18n = setI18n;\nexports.getI18n = getI18n;\nvar i18nInstance;\n\nfunction setI18n(instance) {\n i18nInstance = instance;\n}\n\nfunction getI18n() {\n return i18nInstance;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Trans\", {\n enumerable: true,\n get: function get() {\n return _Trans.Trans;\n }\n});\nObject.defineProperty(exports, \"TransWithoutContext\", {\n enumerable: true,\n get: function get() {\n return _TransWithoutContext.Trans;\n }\n});\nObject.defineProperty(exports, \"useTranslation\", {\n enumerable: true,\n get: function get() {\n return _useTranslation.useTranslation;\n }\n});\nObject.defineProperty(exports, \"withTranslation\", {\n enumerable: true,\n get: function get() {\n return _withTranslation.withTranslation;\n }\n});\nObject.defineProperty(exports, \"Translation\", {\n enumerable: true,\n get: function get() {\n return _Translation.Translation;\n }\n});\nObject.defineProperty(exports, \"I18nextProvider\", {\n enumerable: true,\n get: function get() {\n return _I18nextProvider.I18nextProvider;\n }\n});\nObject.defineProperty(exports, \"withSSR\", {\n enumerable: true,\n get: function get() {\n return _withSSR.withSSR;\n }\n});\nObject.defineProperty(exports, \"useSSR\", {\n enumerable: true,\n get: function get() {\n return _useSSR.useSSR;\n }\n});\nObject.defineProperty(exports, \"I18nContext\", {\n enumerable: true,\n get: function get() {\n return _context.I18nContext;\n }\n});\nObject.defineProperty(exports, \"initReactI18next\", {\n enumerable: true,\n get: function get() {\n return _context.initReactI18next;\n }\n});\nObject.defineProperty(exports, \"setDefaults\", {\n enumerable: true,\n get: function get() {\n return _context.setDefaults;\n }\n});\nObject.defineProperty(exports, \"getDefaults\", {\n enumerable: true,\n get: function get() {\n return _context.getDefaults;\n }\n});\nObject.defineProperty(exports, \"setI18n\", {\n enumerable: true,\n get: function get() {\n return _context.setI18n;\n }\n});\nObject.defineProperty(exports, \"getI18n\", {\n enumerable: true,\n get: function get() {\n return _context.getI18n;\n }\n});\nObject.defineProperty(exports, \"composeInitialProps\", {\n enumerable: true,\n get: function get() {\n return _context.composeInitialProps;\n }\n});\nObject.defineProperty(exports, \"getInitialProps\", {\n enumerable: true,\n get: function get() {\n return _context.getInitialProps;\n }\n});\nexports.selectOrdinal = exports.plural = exports.select = exports.number = exports.time = exports.date = void 0;\n\nvar _Trans = require(\"./Trans.js\");\n\nvar _TransWithoutContext = require(\"./TransWithoutContext.js\");\n\nvar _useTranslation = require(\"./useTranslation.js\");\n\nvar _withTranslation = require(\"./withTranslation.js\");\n\nvar _Translation = require(\"./Translation.js\");\n\nvar _I18nextProvider = require(\"./I18nextProvider.js\");\n\nvar _withSSR = require(\"./withSSR.js\");\n\nvar _useSSR = require(\"./useSSR.js\");\n\nvar _context = require(\"./context.js\");\n\nvar date = function date() {\n return '';\n};\n\nexports.date = date;\n\nvar time = function time() {\n return '';\n};\n\nexports.time = time;\n\nvar number = function number() {\n return '';\n};\n\nexports.number = number;\n\nvar select = function select() {\n return '';\n};\n\nexports.select = select;\n\nvar plural = function plural() {\n return '';\n};\n\nexports.plural = plural;\n\nvar selectOrdinal = function selectOrdinal() {\n return '';\n};\n\nexports.selectOrdinal = selectOrdinal;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.initReactI18next = void 0;\n\nvar _defaults = require(\"./defaults.js\");\n\nvar _i18nInstance = require(\"./i18nInstance.js\");\n\nvar initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n (0, _defaults.setDefaults)(instance.options.react);\n (0, _i18nInstance.setI18n)(instance);\n }\n};\nexports.initReactI18next = initReactI18next;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.unescape = void 0;\nvar matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nvar htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\n\nvar unescapeHtmlEntity = function unescapeHtmlEntity(m) {\n return htmlEntities[m];\n};\n\nvar unescape = function unescape(text) {\n return text.replace(matchHtmlEntity, unescapeHtmlEntity);\n};\n\nexports.unescape = unescape;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.useSSR = useSSR;\n\nvar _react = require(\"react\");\n\nvar _context = require(\"./context.js\");\n\nfunction useSSR(initialI18nStore, initialLanguage) {\n var props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var i18nFromProps = props.i18n;\n\n var _ref = (0, _react.useContext)(_context.I18nContext) || {},\n i18nFromContext = _ref.i18n;\n\n var i18n = i18nFromProps || i18nFromContext || (0, _context.getI18n)();\n if (i18n.options && i18n.options.isClone) return;\n\n if (initialI18nStore && !i18n.initializedStoreOnce) {\n i18n.services.resourceStore.data = initialI18nStore;\n i18n.options.ns = Object.values(initialI18nStore).reduce(function (mem, lngResources) {\n Object.keys(lngResources).forEach(function (ns) {\n if (mem.indexOf(ns) < 0) mem.push(ns);\n });\n return mem;\n }, i18n.options.ns);\n i18n.initializedStoreOnce = true;\n i18n.isInitialized = true;\n }\n\n if (initialLanguage && !i18n.initializedLanguageOnce) {\n i18n.changeLanguage(initialLanguage);\n i18n.initializedLanguageOnce = true;\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.useTranslation = useTranslation;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _react = require(\"react\");\n\nvar _context = require(\"./context.js\");\n\nvar _utils = require(\"./utils.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar usePrevious = function usePrevious(value, ignore) {\n var ref = (0, _react.useRef)();\n (0, _react.useEffect)(function () {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\n\nfunction useTranslation(ns) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nFromProps = props.i18n;\n\n var _ref = (0, _react.useContext)(_context.I18nContext) || {},\n i18nFromContext = _ref.i18n,\n defaultNSFromContext = _ref.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || (0, _context.getI18n)();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new _context.ReportNamespaces();\n\n if (!i18n) {\n (0, _utils.warnOnce)('You will need to pass in an i18next instance by using initReactI18next');\n\n var notReadyT = function notReadyT(k) {\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n\n var retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n\n if (i18n.options.react && i18n.options.react.wait !== undefined) (0, _utils.warnOnce)('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n\n var i18nOptions = _objectSpread(_objectSpread(_objectSpread({}, (0, _context.getDefaults)()), i18n.options.react), props);\n\n var useSuspense = i18nOptions.useSuspense,\n keyPrefix = i18nOptions.keyPrefix;\n var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n return (0, _utils.hasLoadedNamespace)(n, i18n, i18nOptions);\n });\n\n function getT() {\n return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n }\n\n var _useState = (0, _react.useState)(getT),\n _useState2 = (0, _slicedToArray2[\"default\"])(_useState, 2),\n t = _useState2[0],\n setT = _useState2[1];\n\n var joinedNS = namespaces.join();\n var previousJoinedNS = usePrevious(joinedNS);\n var isMounted = (0, _react.useRef)(true);\n (0, _react.useEffect)(function () {\n var bindI18n = i18nOptions.bindI18n,\n bindI18nStore = i18nOptions.bindI18nStore;\n isMounted.current = true;\n\n if (!ready && !useSuspense) {\n (0, _utils.loadNamespaces)(i18n, namespaces, function () {\n if (isMounted.current) setT(getT);\n });\n }\n\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getT);\n }\n\n function boundReset() {\n if (isMounted.current) setT(getT);\n }\n\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return function () {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n return i18n.off(e, boundReset);\n });\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n return i18n.store.off(e, boundReset);\n });\n };\n }, [i18n, joinedNS]);\n var isInitial = (0, _react.useRef)(true);\n (0, _react.useEffect)(function () {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n\n isInitial.current = false;\n }, [i18n, keyPrefix]);\n var ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(function (resolve) {\n (0, _utils.loadNamespaces)(i18n, namespaces, function () {\n resolve();\n });\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.warn = warn;\nexports.warnOnce = warnOnce;\nexports.loadNamespaces = loadNamespaces;\nexports.hasLoadedNamespace = hasLoadedNamespace;\nexports.getDisplayName = getDisplayName;\n\nfunction warn() {\n if (console && console.warn) {\n var _console;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n (_console = console).warn.apply(_console, args);\n }\n}\n\nvar alreadyWarned = {};\n\nfunction warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn.apply(void 0, args);\n}\n\nfunction loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, function () {\n if (i18n.isInitialized) {\n cb();\n } else {\n var initialized = function initialized() {\n setTimeout(function () {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n\n i18n.on('initialized', initialized);\n }\n });\n}\n\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var lng = i18n.languages[0];\n var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n var lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\n\nfunction hasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n\n var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n\n if (!isNewerI18next) {\n return oldI18nextHasLoadedNamespace(ns, i18n, options);\n }\n\n return i18n.hasLoadedNamespace(ns, {\n precheck: function precheck(i18nInstance, loadNotPending) {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n}\n\nfunction getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.withSSR = withSSR;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _react = require(\"react\");\n\nvar _useSSR = require(\"./useSSR.js\");\n\nvar _context = require(\"./context.js\");\n\nvar _utils = require(\"./utils.js\");\n\nvar _excluded = [\"initialI18nStore\", \"initialLanguage\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction withSSR() {\n return function Extend(WrappedComponent) {\n function I18nextWithSSR(_ref) {\n var initialI18nStore = _ref.initialI18nStore,\n initialLanguage = _ref.initialLanguage,\n rest = (0, _objectWithoutProperties2[\"default\"])(_ref, _excluded);\n (0, _useSSR.useSSR)(initialI18nStore, initialLanguage);\n return (0, _react.createElement)(WrappedComponent, _objectSpread({}, rest));\n }\n\n I18nextWithSSR.getInitialProps = (0, _context.composeInitialProps)(WrappedComponent);\n I18nextWithSSR.displayName = \"withI18nextSSR(\".concat((0, _utils.getDisplayName)(WrappedComponent), \")\");\n I18nextWithSSR.WrappedComponent = WrappedComponent;\n return I18nextWithSSR;\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.withTranslation = withTranslation;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _react = require(\"react\");\n\nvar _useTranslation3 = require(\"./useTranslation.js\");\n\nvar _utils = require(\"./utils.js\");\n\nvar _excluded = [\"forwardedRef\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction withTranslation(ns) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function Extend(WrappedComponent) {\n function I18nextWithTranslation(_ref) {\n var forwardedRef = _ref.forwardedRef,\n rest = (0, _objectWithoutProperties2[\"default\"])(_ref, _excluded);\n\n var _useTranslation = (0, _useTranslation3.useTranslation)(ns, _objectSpread(_objectSpread({}, rest), {}, {\n keyPrefix: options.keyPrefix\n })),\n _useTranslation2 = (0, _slicedToArray2[\"default\"])(_useTranslation, 3),\n t = _useTranslation2[0],\n i18n = _useTranslation2[1],\n ready = _useTranslation2[2];\n\n var passDownProps = _objectSpread(_objectSpread({}, rest), {}, {\n t: t,\n i18n: i18n,\n tReady: ready\n });\n\n if (options.withRef && forwardedRef) {\n passDownProps.ref = forwardedRef;\n } else if (!options.withRef && forwardedRef) {\n passDownProps.forwardedRef = forwardedRef;\n }\n\n return (0, _react.createElement)(WrappedComponent, passDownProps);\n }\n\n I18nextWithTranslation.displayName = \"withI18nextTranslation(\".concat((0, _utils.getDisplayName)(WrappedComponent), \")\");\n I18nextWithTranslation.WrappedComponent = WrappedComponent;\n\n var forwardRef = function forwardRef(props, ref) {\n return (0, _react.createElement)(I18nextWithTranslation, Object.assign({}, props, {\n forwardedRef: ref\n }));\n };\n\n return options.withRef ? (0, _react.forwardRef)(forwardRef) : I18nextWithTranslation;\n };\n}","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","/* Spatial Navigation Polyfill\n *\n * It follows W3C official specification\n * https://drafts.csswg.org/css-nav-1/\n *\n * Copyright (c) 2018-2019 LG Electronics Inc.\n * https://github.com/WICG/spatial-navigation/polyfill\n *\n * Licensed under the MIT license (MIT)\n */\n\n(function () {\n\n // The polyfill must not be executed, if it's already enabled via browser engine or browser extensions.\n if (window.navigate !== undefined) {\n return;\n }\n\n const ARROW_KEY_CODE = {37: 'left', 38: 'up', 39: 'right', 40: 'down'};\n const TAB_KEY_CODE = 9;\n let mapOfBoundRect = null;\n let startingPoint = null; // Indicates global variables for spatnav (starting position)\n\n /**\n * Initiate the spatial navigation features of the polyfill.\n * This function defines which input methods trigger the spatial navigation behavior.\n * @function initiateSpatialNavigation\n */\n function initiateSpatialNavigation() {\n /*\n * Bind the standards APIs to be exposed to the window object for authors\n */\n window.navigate = navigate;\n window.Element.prototype.spatialNavigationSearch = spatialNavigationSearch;\n window.Element.prototype.focusableAreas = focusableAreas;\n window.Element.prototype.getSpatialNavigationContainer = getSpatialNavigationContainer;\n\n /*\n * CSS.registerProperty() from the Properties and Values API\n * Reference: https://drafts.css-houdini.org/css-properties-values-api/#the-registerproperty-function\n */\n if (window.CSS && CSS.registerProperty) {\n if (window.getComputedStyle(document.documentElement).getPropertyValue('--spatial-navigation-contain') === '') {\n CSS.registerProperty({\n name: '--spatial-navigation-contain',\n syntax: 'auto | contain',\n inherits: false,\n initialValue: 'auto'\n });\n }\n\n if (window.getComputedStyle(document.documentElement).getPropertyValue('--spatial-navigation-action') === '') {\n CSS.registerProperty({\n name: '--spatial-navigation-action',\n syntax: 'auto | focus | scroll',\n inherits: false,\n initialValue: 'auto'\n });\n }\n\n if (window.getComputedStyle(document.documentElement).getPropertyValue('--spatial-navigation-function') === '') {\n CSS.registerProperty({\n name: '--spatial-navigation-function',\n syntax: 'normal | euclidean | grid',\n inherits: true,\n initialValue: 'normal'\n });\n }\n }\n\n /*\n * keydown EventListener :\n * If arrow key pressed, get the next focusing element and send it to focusing controller\n */\n window.addEventListener('keydown', e => {\n const currentKeyMode = (parent && parent.__spatialNavigation__.keyMode) || window.__spatialNavigation__.keyMode;\n const eventTarget = document.activeElement;\n const dir = ARROW_KEY_CODE[e.keyCode];\n\n if (e.keyCode === TAB_KEY_CODE)\n startingPoint = null;\n\n if (!currentKeyMode ||\n (currentKeyMode === 'NONE') ||\n ((currentKeyMode === 'SHIFTARROW') && !e.shiftKey) ||\n ((currentKeyMode === 'ARROW') && e.shiftKey))\n return;\n\n if (!e.defaultPrevented && !e.spatialNavigationPrevented) {\n let focusNavigableArrowKey = {left: true, up: true, right: true, down: true};\n\n // Edge case (text input, area) : Don't move focus, just navigate cursor in text area\n if ((eventTarget.nodeName === 'INPUT') || eventTarget.nodeName === 'TEXTAREA')\n focusNavigableArrowKey = handlingEditableElement(e);\n\n if (focusNavigableArrowKey[dir]) {\n e.preventDefault();\n mapOfBoundRect = new Map();\n\n navigate(dir);\n\n mapOfBoundRect = null;\n startingPoint = null;\n }\n }\n });\n\n /*\n * mouseup EventListener :\n * If the mouse click a point in the page, the point will be the starting point.\n * NOTE: Let UA set the spatial navigation starting point based on click\n */\n // document.addEventListener('mouseup', e => {\n // startingPoint = {x: e.clientX, y: e.clientY};\n // });\n }\n\n /**\n * Enable the author to trigger spatial navigation programmatically, as if the user had done so manually.\n * @see {@link https://drafts.csswg.org/css-nav-1/#dom-window-navigate}\n * @function navigate\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n */\n function navigate(dir) {\n // spatial navigation steps\n\n // 1\n const searchOrigin = findSearchOrigin();\n let eventTarget = searchOrigin;\n\n let elementFromPosition = null;\n\n // 2 Optional step, UA defined starting point\n if (startingPoint) {\n // if there is a starting point, set eventTarget as the element from position for getting the spatnav container\n elementFromPosition = document.elementFromPoint(startingPoint.x, startingPoint.y);\n\n // Use starting point if the starting point isn't inside the focusable element (but not container)\n // * Starting point is meaningfull when:\n // 1) starting point is inside the spatnav container\n // 2) starting point is inside the non-focusable element\n if(elementFromPosition === null) {\n elementFromPosition = document.body;\n }\n if (isFocusable(elementFromPosition) && !isContainer(elementFromPosition)) {\n startingPoint = null;\n } else if (isContainer(elementFromPosition)) {\n eventTarget = elementFromPosition;\n } else {\n eventTarget = elementFromPosition.getSpatialNavigationContainer();\n }\n }\n\n // 4\n if (eventTarget === document || eventTarget === document.documentElement) {\n eventTarget = document.body || document.documentElement;\n }\n\n // 5\n // At this point, spatialNavigationSearch can be applied.\n // If startingPoint is either a scroll container or the document,\n // find the best candidate within startingPoint\n let container = null;\n if ((isContainer(eventTarget) || eventTarget.nodeName === 'BODY') && !(eventTarget.nodeName === 'INPUT')) {\n container = eventTarget;\n\n if (eventTarget.nodeName === 'IFRAME')\n eventTarget = eventTarget.contentDocument.documentElement;\n\n let bestInsideCandidate = null;\n\n // 5-2\n if (getCSSSpatNavAction(eventTarget) === 'scroll') {\n if (scrollingController(eventTarget, dir)) return;\n } else if (getCSSSpatNavAction(eventTarget) === 'focus') {\n bestInsideCandidate = eventTarget.spatialNavigationSearch(dir, {container: eventTarget, candidates: getSpatialNavigationCandidates(eventTarget, {mode: 'all'}), inside: true});\n if (focusingController(bestInsideCandidate, dir)) return;\n } else if (getCSSSpatNavAction(eventTarget) === 'auto') {\n bestInsideCandidate = eventTarget.spatialNavigationSearch(dir, {container: eventTarget, inside: true});\n if (focusingController(bestInsideCandidate, dir) || scrollingController(eventTarget, dir)) return;\n }\n }\n\n // 6\n // Let container be the nearest ancestor of eventTarget\n container = container || eventTarget.getSpatialNavigationContainer();\n let parentContainer = (container.parentElement) ? container.getSpatialNavigationContainer() : null;\n\n // When the container is the viewport of a browsing context\n if (!parentContainer && ( window.location !== window.parent.location)) {\n parentContainer = window.parent.document.documentElement;\n }\n\n if (getCSSSpatNavAction(eventTarget) === 'scroll') {\n if (scrollingController(container, dir)) return;\n }\n else if (getCSSSpatNavAction(eventTarget) === 'focus') {\n navigateChain(eventTarget, container, parentContainer, dir, 'all');\n }\n else if (getCSSSpatNavAction(eventTarget) === 'auto') {\n navigateChain(eventTarget, container, parentContainer, dir, 'visible');\n }\n }\n\n /**\n * Move the focus to the best candidate or do nothing.\n * @function focusingController\n * @param bestCandidate {Node} - The best candidate of the spatial navigation\n * @param dir {SpatialNavigationDirection}- The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function focusingController(bestCandidate, dir) {\n // 10 & 11\n // When bestCandidate is found\n if (bestCandidate) {\n const container = bestCandidate.getSpatialNavigationContainer();\n const elementStyle = window.getComputedStyle(container, null);\n const overflowX = elementStyle.getPropertyValue('overflow-x');\n const overflowY = elementStyle.getPropertyValue('overflow-y');\n\n // Scrolling container or document when the next focusing element isn't entirely visible\n // This is for the browser compatability\n if (isScrollable(container, dir) && !isEntirelyVisible(bestCandidate));\n bestCandidate.scrollIntoView();\n\n // When bestCandidate is a focusable element and not a container : move focus\n /*\n * [event] navbeforefocus : Fired before spatial or sequential navigation changes the focus.\n */\n if (!createSpatNavEvents('beforefocus', bestCandidate, null, dir))\n return true;\n\n bestCandidate.focus();\n return true;\n }\n\n // When bestCandidate is not found within the scrollport of a container: Nothing\n return false;\n }\n\n /**\n * Directionally scroll the scrollable spatial navigation container if it can be manually scrolled more.\n * @function scrollingController\n * @param container {Node} - The spatial navigation container which can scroll\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function scrollingController(container, dir) {\n\n // If there is any scrollable area among parent elements and it can be manually scrolled, scroll the document\n if (isScrollable(container, dir) && !isScrollBoundary(container, dir)) {\n moveScroll(container, dir);\n return true;\n }\n\n // If the spatnav container is document and it can be scrolled, scroll the document\n if (!container.parentElement && !isHTMLScrollBoundary(container, dir)) {\n moveScroll(document.documentElement, dir);\n return true;\n }\n return false;\n }\n\n /**\n * Find the candidates within a spatial navigation container include delegable container.\n * This function does not search inside delegable container or focusable container.\n * In other words, this return candidates set is not included focusable elements inside delegable container or focusable container.\n *\n * @function getSpatialNavigationCandidates\n * @param container {Node} - The spatial navigation container\n * @param option {FocusableAreasOptions} - 'mode' attribute takes 'visible' or 'all' for searching the boundary of focusable elements.\n * Default value is 'visible'.\n * @returns {sequence<Node>} candidate elements within the container\n */\n function getSpatialNavigationCandidates (container, option = {mode: 'visible'}) {\n let candidates = [];\n\n if (container.childElementCount > 0) {\n if (!container.parentElement) {\n container = container.getElementsByTagName('body')[0] || document.body;\n }\n const children = container.children;\n for (const elem of children) {\n if (isDelegableContainer(elem)) {\n candidates.push(elem);\n } else if(isFocusable(elem)) {\n candidates.push(elem);\n\n if(!isContainer(elem) && elem.childElementCount) {\n candidates = candidates.concat(getSpatialNavigationCandidates(elem, {mode: 'all'}));\n }\n } else if (elem.childElementCount) {\n candidates = candidates.concat(getSpatialNavigationCandidates(elem, {mode: 'all'}));\n }\n }\n }\n return (option.mode === 'all') ? candidates : candidates.filter(isVisible);\n }\n\n /**\n * Find the candidates among focusable elements within a spatial navigation container from the search origin (currently focused element)\n * depending on the directional information.\n * @function getFilteredSpatialNavigationCandidates\n * @param element {Node} - The currently focused element which is defined as 'search origin' in the spec\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @param candidates {sequence<Node>} - The candidates for spatial navigation without the directional information\n * @param container {Node} - The spatial navigation container\n * @returns {Node} The candidates for spatial navigation considering the directional information\n */\n function getFilteredSpatialNavigationCandidates (element, dir, candidates, container) {\n const targetElement = element;\n // Removed below line due to a bug. (iframe body rect is sometime weird.)\n // const targetElement = (element.nodeName === 'IFRAME') ? element.contentDocument.body : element;\n // If the container is unknown, get the closest container from the element\n container = container || targetElement.getSpatialNavigationContainer();\n\n // If the candidates is unknown, find candidates\n // 5-1\n candidates = (!candidates || candidates.length <= 0) ? getSpatialNavigationCandidates(container) : candidates;\n return filteredCandidates(targetElement, candidates, dir, container);\n }\n\n /**\n * Find the best candidate among the candidates within the container from the search origin (currently focused element)\n * @see {@link https://drafts.csswg.org/css-nav-1/#dom-element-spatialnavigationsearch}\n * @function spatialNavigationSearch\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @param candidates {sequence<Node>} - The candidates for spatial navigation\n * @param container {Node} - The spatial navigation container\n * @param inside {boolean} - Whether candidates should be elements outside of the target element or not.\n * @returns {Node} The best candidate which will gain the focus\n */\n function spatialNavigationSearch (dir, args) {\n const targetElement = this;\n let internalCandidates = [];\n let externalCandidates = [];\n let bestTarget;\n\n // Set default parameter value\n if (!args)\n args = {};\n const container = args.container || targetElement.getSpatialNavigationContainer();\n const candidates = (args.candidates && args.candidates.length > 0) ?\n args.candidates.filter((candidate) => container.contains(candidate)) : getSpatialNavigationCandidates(container);\n const inside = args.inside || false;\n\n // Find the best candidate\n // 5\n // If startingPoint is either a scroll container or the document,\n // find the best candidate within startingPoint\n if (candidates && candidates.length > 0) {\n\n // Divide internal or external candidates\n candidates.forEach(candidate => {\n (targetElement.contains(candidate) && targetElement !== candidate ? internalCandidates : externalCandidates).push(candidate);\n });\n if (!(args.candidates && args.candidates.length > 0) && (internalCandidates.length === 0)) {\n // If targetElement is focusable container or delegable container,\n // getFilteredSpatialNavigationCandidates not return internal candidate.\n internalCandidates = getSpatialNavigationCandidates(targetElement);\n }\n // Filter external Candidates\n if (externalCandidates.length > 0) {\n externalCandidates = getFilteredSpatialNavigationCandidates (targetElement, dir, externalCandidates, container);\n }\n\n if (inside && (isContainer(targetElement) || targetElement.nodeName === 'BODY') && !(targetElement.nodeName === 'INPUT')) {\n bestTarget = selectBestCandidateFromEdge(targetElement, internalCandidates, dir);\n }\n bestTarget = bestTarget || selectBestCandidate(targetElement, externalCandidates, dir);\n\n if (bestTarget && isDelegableContainer(bestTarget)) {\n // if best target is delegable container, then find descendants candidate inside delegable container.\n const innerTarget = getSpatialNavigationCandidates(bestTarget, {mode: 'all'});\n const descendantsBest = innerTarget.length > 0 ? targetElement.spatialNavigationSearch(dir, {candidates: innerTarget, container: bestTarget}) : null;\n if (descendantsBest) {\n bestTarget = descendantsBest;\n } else if (!isFocusable(bestTarget)) {\n // if there is no target inside bestTarget and delegable container is not focusable,\n // then try to find another best target without curren best target.\n candidates.splice(candidates.indexOf(bestTarget), 1);\n bestTarget = candidates.length ? targetElement.spatialNavigationSearch(dir, {candidates: candidates, container: container}) : null;\n }\n }\n return bestTarget;\n }\n\n return null;\n }\n\n /**\n * Get the filtered candidate among candidates.\n * @see {@link https://drafts.csswg.org/css-nav-1/#select-the-best-candidate}\n * @function filteredCandidates\n * @param currentElm {Node} - The currently focused element which is defined as 'search origin' in the spec\n * @param candidates {sequence<Node>} - The candidates for spatial navigation\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @param container {Node} - The spatial navigation container\n * @returns {sequence<Node>} The filtered candidates which are not the search origin and not in the given spatial navigation direction from the search origin\n */\n function filteredCandidates(currentElm, candidates, dir, container) {\n const originalContainer = currentElm.getSpatialNavigationContainer();\n let eventTargetRect;\n\n // If D(dir) is null, let candidates be the same as visibles\n if (dir === undefined)\n return candidates;\n\n // to do\n // Offscreen handling when originalContainer is not <HTML>\n if (originalContainer.parentElement && container !== originalContainer && !isVisible(currentElm))\n eventTargetRect = getBoundingClientRect(originalContainer);\n else eventTargetRect = getBoundingClientRect(currentElm);\n\n /*\n * Else, let candidates be the subset of the elements in visibles\n * whose principal box’s geometric center is within the closed half plane\n * whose boundary goes through the geometric center of starting point and is perpendicular to D.\n */\n if ((isContainer(currentElm) || currentElm.nodeName === 'BODY') && !(currentElm.nodeName === 'INPUT')) {\n return candidates.filter(candidate => {\n const candidateRect = getBoundingClientRect(candidate);\n return container.contains(candidate) &&\n ((currentElm.contains(candidate) && isInside(eventTargetRect, candidateRect) && candidate !== currentElm) ||\n isOutside(candidateRect, eventTargetRect, dir));\n });\n } else {\n return candidates.filter(candidate => {\n const candidateRect = getBoundingClientRect(candidate);\n const candidateBody = (candidate.nodeName === 'IFRAME') ? candidate.contentDocument.body : null;\n return container.contains(candidate) &&\n candidate !== currentElm && candidateBody !== currentElm &&\n isOutside(candidateRect, eventTargetRect, dir);\n });\n }\n }\n\n /**\n * Select the best candidate among given candidates.\n * @see {@link https://drafts.csswg.org/css-nav-1/#select-the-best-candidate}\n * @function selectBestCandidate\n * @param currentElm {Node} - The currently focused element which is defined as 'search origin' in the spec\n * @param candidates {sequence<Node>} - The candidates for spatial navigation\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Node} The best candidate which will gain the focus\n */\n function selectBestCandidate(currentElm, candidates, dir) {\n const spatialNavigationFunction = getComputedStyle(currentElm).getPropertyValue('--spatial-navigation-function');\n const currentElmRect = getBoundingClientRect(currentElm);\n let distanceFunction;\n let alignedCandidates;\n\n switch (spatialNavigationFunction) {\n case 'grid':\n alignedCandidates = candidates.filter(elm => isAligned(currentElmRect, getBoundingClientRect(elm), dir));\n if (alignedCandidates.length > 0) {\n candidates = alignedCandidates;\n }\n distanceFunction = getAbsoluteDistance;\n break;\n case 'euclidean':\n distanceFunction = getEuclideanDistance;\n break;\n default:\n distanceFunction = getDistance;\n break;\n }\n return getClosestElement(currentElm, candidates, dir, distanceFunction);\n }\n\n /**\n * Select the best candidate among candidates by finding the closet candidate from the edge of the currently focused element (search origin).\n * @see {@link https://drafts.csswg.org/css-nav-1/#select-the-best-candidate (Step 5)}\n * @function selectBestCandidateFromEdge\n * @param currentElm {Node} - The currently focused element which is defined as 'search origin' in the spec\n * @param candidates {sequence<Node>} - The candidates for spatial navigation\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Node} The best candidate which will gain the focus\n */\n function selectBestCandidateFromEdge(currentElm, candidates, dir) {\n if (startingPoint)\n return getClosestElement(currentElm, candidates, dir, getDistanceFromPoint);\n else\n return getClosestElement(currentElm, candidates, dir, getInnerDistance);\n }\n\n /**\n * Select the closest candidate from the currently focused element (search origin) among candidates by using the distance function.\n * @function getClosestElement\n * @param currentElm {Node} - The currently focused element which is defined as 'search origin' in the spec\n * @param candidates {sequence<Node>} - The candidates for spatial navigation\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @param distanceFunction {function} - The distance function which measures the distance from the search origin to each candidate\n * @returns {Node} The candidate which is the closest one from the search origin\n */\n function getClosestElement(currentElm, candidates, dir, distanceFunction) {\n let eventTargetRect = null;\n if (( window.location !== window.parent.location ) && (currentElm.nodeName === 'BODY' || currentElm.nodeName === 'HTML')) {\n // If the eventTarget is iframe, then get rect of it based on its containing document\n // Set the iframe's position as (0,0) because the rects of elements inside the iframe don't know the real iframe's position.\n eventTargetRect = window.frameElement.getBoundingClientRect();\n eventTargetRect.x = 0;\n eventTargetRect.y = 0;\n }\n else \n eventTargetRect = currentElm.getBoundingClientRect();\n\n let minDistance = Number.POSITIVE_INFINITY;\n let minDistanceElements = [];\n\n if (candidates) {\n for (let i = 0; i < candidates.length; i++) {\n const distance = distanceFunction(eventTargetRect, getBoundingClientRect(candidates[i]), dir);\n\n // If the same distance, the candidate will be selected in the DOM order\n if (distance < minDistance) {\n minDistance = distance;\n minDistanceElements = [candidates[i]];\n } else if (distance === minDistance) {\n minDistanceElements.push(candidates[i]);\n }\n }\n }\n if (minDistanceElements.length === 0)\n return null;\n\n return (minDistanceElements.length > 1 && distanceFunction === getAbsoluteDistance) ?\n getClosestElement(currentElm, minDistanceElements, dir, getEuclideanDistance) : minDistanceElements[0];\n }\n\n /**\n * Get container of an element.\n * @see {@link https://drafts.csswg.org/css-nav-1/#dom-element-getspatialnavigationcontainer}\n * @module Element\n * @function getSpatialNavigationContainer\n * @returns {Node} The spatial navigation container\n */\n function getSpatialNavigationContainer() {\n let container = this;\n\n do {\n if (!container.parentElement) {\n if (window.location !== window.parent.location)\n container = window.parent.document.documentElement;\n else\n container = window.document.documentElement;\n break;\n }\n else {\n container = container.parentElement;\n }\n } while (!isContainer(container));\n return container;\n }\n\n /**\n * Find focusable elements within the spatial navigation container.\n * @see {@link https://drafts.csswg.org/css-nav-1/#dom-element-focusableareas}\n * @function focusableAreas\n * @param option {FocusableAreasOptions} - 'mode' attribute takes 'visible' or 'all' for searching the boundary of focusable elements.\n * Default value is 'visible'.\n * @returns {sequence<Node>} All focusable elements or only visible focusable elements within the container\n */\n function focusableAreas(option = {mode: 'visible'}) {\n const container = this.parentElement ? this : document.body;\n const focusables = Array.prototype.filter.call(container.getElementsByTagName('*'), isFocusable);\n return (option.mode === 'all') ? focusables : focusables.filter(isVisible);\n }\n\n /**\n * Create the NavigationEvent: navbeforefocus, navnotarget\n * @see {@link https://drafts.csswg.org/css-nav-1/#events-navigationevent}\n * @function createSpatNavEvents\n * @param option {string} - Type of the navigation event (beforefocus, notarget)\n * @param element {Node} - The target element of the event\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n */\n function createSpatNavEvents(eventType, containerElement, currentElement, direction) {\n if(['beforefocus', 'notarget'].includes(eventType)) {\n const data = {\n causedTarget: currentElement,\n dir: direction\n };\n const triggeredEvent = new CustomEvent('nav' + eventType, {bubbles: true, cancelable: true, detail: data});\n return containerElement.dispatchEvent(triggeredEvent);\n }\n }\n\n /**\n * Get the value of the CSS custom property of the element\n * @function readCssVar\n * @param element {Node}\n * @param varName {string} - The name of the css custom property without '--'\n * @returns {string} The value of the css custom property\n */\n function readCssVar(element, varName) {\n return window.getComputedStyle(element).getPropertyValue(`--${varName}`).trim();\n }\n\n /**\n * Decide whether or not the 'contain' value is given to 'spatial-navigation-contain' css property of an element\n * @function isCSSSpatNavContain\n * @param element {Node}\n * @returns {boolean}\n */\n function isCSSSpatNavContain(element) {\n return readCssVar(element, 'spatial-navigation-contain') === 'contain';\n }\n\n /**\n * Return the value of 'spatial-navigation-action' css property of an element\n * @function getCSSSpatNavAction\n * @param element {Node} - would be the spatial navigation container\n * @returns {string} auto | focus | scroll\n */\n function getCSSSpatNavAction(element) {\n return readCssVar(element, 'spatial-navigation-action') || 'auto';\n }\n\n /**\n * Only move the focus with spatial navigation. Manually scrolling isn't available.\n * @function navigateChain\n * @param eventTarget {Node} - currently focused element\n * @param container {SpatialNavigationContainer} - container\n * @param parentContainer {SpatialNavigationContainer} - parent container\n * @param option - visible || all\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n */\n function navigateChain(eventTarget, container, parentContainer, dir, option) {\n let currentOption = {candidates: getSpatialNavigationCandidates(container, {mode: option}), container};\n\n while (parentContainer) {\n if (focusingController(eventTarget.spatialNavigationSearch(dir, currentOption), dir)) {\n return;\n }\n else {\n if ((option === 'visible') && scrollingController(container, dir)) return;\n else {\n if (!createSpatNavEvents('notarget', container, eventTarget, dir)) return;\n\n // find the container\n if (container === document || container === document.documentElement) {\n if ( window.location !== window.parent.location ) {\n // The page is in an iframe. eventTarget needs to be reset because the position of the element in the iframe\n eventTarget = window.frameElement;\n container = window.parent.document.documentElement;\n\n if (container.parentElement)\n parentContainer = container.getSpatialNavigationContainer();\n else {\n parentContainer = null;\n break;\n }\n }\n }\n else {\n container = parentContainer;\n currentOption = {candidates: getSpatialNavigationCandidates(container, {mode: option}), container};\n\n if (container.parentElement)\n parentContainer = container.getSpatialNavigationContainer();\n else {\n parentContainer = null;\n break;\n }\n }\n }\n }\n }\n\n currentOption = {candidates: getSpatialNavigationCandidates(container, {mode: option}), container};\n\n // Behavior after 'navnotarget' - Getting out from the current spatnav container\n if ((!parentContainer && container) && focusingController(eventTarget.spatialNavigationSearch(dir, currentOption), dir)) return;\n\n if (!createSpatNavEvents('notarget', currentOption.container, eventTarget, dir)) return;\n\n if ((getCSSSpatNavAction(container) === 'auto') && (option === 'visible'))\n if (scrollingController(container, dir)) return;\n }\n\n /**\n * Find search origin\n * @see {@link https://drafts.csswg.org/css-nav-1/#nav}\n * @function findSearchOrigin\n * @returns {Node} The search origin for the spatial navigation\n */\n function findSearchOrigin() {\n let searchOrigin = document.activeElement;\n if (!searchOrigin ||\n (searchOrigin === document.body && !document.querySelector(':focus')) /* body isn't actually focused*/\n ) {\n searchOrigin = document;\n }\n return searchOrigin;\n }\n\n /**\n * Move the scroll of an element depending on the given spatial navigation directrion\n * (Assume that User Agent defined distance is '40px')\n * @see {@link https://drafts.csswg.org/css-nav-1/#directionally-scroll-an-element}\n * @function moveScroll\n * @param element {Node} - The scrollable element\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @param offset {Number} - The explicit amount of offset for scrolling. Default value is 0.\n */\n function moveScroll(element, dir, offset = 0) {\n if (element) {\n switch (dir) {\n case 'left': element.scrollLeft -= (40 + offset); break;\n case 'right': element.scrollLeft += (40 + offset); break;\n case 'up': element.scrollTop -= (40 + offset); break;\n case 'down': element.scrollTop += (40 + offset); break;\n }\n }\n }\n\n /**\n * Decide whether an element is container or not.\n * @function isContainer\n * @param element {Node} element\n * @returns {boolean}\n */\n function isContainer(element) {\n return (!element.parentElement) ||\n (element.nodeName === 'IFRAME') ||\n (isScrollContainer(element)) ||\n (isCSSSpatNavContain(element));\n }\n\n /**\n * Decide whether an element is delegable container or not.\n * NOTE: THIS IS NON-NORMATIVE API. \n * @function isDelegableContainer\n * @param element {Node} element\n * @returns {boolean}\n */\n function isDelegableContainer(element) {\n return readCssVar(element, 'spatial-navigation-contain') === 'delegable';\n }\n\n /**\n * Decide whether an element is a scrollable container or not.\n * @see {@link https://drafts.csswg.org/css-overflow-3/#scroll-container}\n * @function isScrollContainer\n * @param element {Node}\n * @returns {boolean}\n */\n function isScrollContainer(element) {\n const elementStyle = window.getComputedStyle(element, null);\n const overflowX = elementStyle.getPropertyValue('overflow-x');\n const overflowY = elementStyle.getPropertyValue('overflow-y');\n\n return ((overflowX !== 'visible' && overflowX !== 'clip' && isOverflow(element, 'left')) ||\n (overflowY !== 'visible' && overflowY !== 'clip' && isOverflow(element, 'down'))) ?\n true : false;\n }\n\n /**\n * Decide whether this element is scrollable or not.\n * NOTE: If the value of 'overflow' is given to either 'visible', 'clip', or 'hidden', the element isn't scrollable.\n * If the value is 'hidden', the element can be only programmically scrollable. (https://drafts.csswg.org/css-overflow-3/#valdef-overflow-hidden)\n * @function isScrollable\n * @param element {Node}\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function isScrollable(element, dir) { // element, dir\n if (element && typeof element === 'object') {\n if (dir && typeof dir === 'string') { // parameter: dir, element\n if (isOverflow(element, dir)) {\n // style property\n const elementStyle = window.getComputedStyle(element, null);\n const overflowX = elementStyle.getPropertyValue('overflow-x');\n const overflowY = elementStyle.getPropertyValue('overflow-y');\n\n switch (dir) {\n case 'left':\n /* falls through */\n case 'right':\n return (overflowX !== 'visible' && overflowX !== 'clip' && overflowX !== 'hidden');\n case 'up':\n /* falls through */\n case 'down':\n return (overflowY !== 'visible' && overflowY !== 'clip' && overflowY !== 'hidden');\n }\n }\n return false;\n } else { // parameter: element\n return (element.nodeName === 'HTML' || element.nodeName === 'BODY') ||\n (isScrollContainer(element) && isOverflow(element));\n }\n }\n }\n\n /**\n * Decide whether an element is overflow or not.\n * @function isOverflow\n * @param element {Node}\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function isOverflow(element, dir) {\n if (element && typeof element === 'object') {\n if (dir && typeof dir === 'string') { // parameter: element, dir\n switch (dir) {\n case 'left':\n /* falls through */\n case 'right':\n return (element.scrollWidth > element.clientWidth);\n case 'up':\n /* falls through */\n case 'down':\n return (element.scrollHeight > element.clientHeight);\n }\n } else { // parameter: element\n return (element.scrollWidth > element.clientWidth || element.scrollHeight > element.clientHeight);\n }\n return false;\n }\n }\n\n /**\n * Decide whether the scrollbar of the browsing context reaches to the end or not.\n * @function isHTMLScrollBoundary\n * @param element {Node} - The top browsing context\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function isHTMLScrollBoundary(element, dir) {\n let result = false;\n switch (dir) {\n case 'left':\n result = window.scrollX === 0;\n break;\n case 'right':\n result = (element.scrollWidth - element.scrollLeft - element.clientWidth) === 0;\n break;\n case 'up':\n result = window.scrollY === 0;\n break;\n case 'down':\n result = (element.scrollHeight - element.scrollTop - element.clientHeight) === 0;\n break;\n }\n return result;\n }\n\n /**\n * Decide whether the scrollbar of an element reaches to the end or not.\n * @function isScrollBoundary\n * @param element {Node}\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function isScrollBoundary(element, dir) {\n if (isScrollable(element, dir)) {\n const winScrollY = element.scrollTop;\n const winScrollX = element.scrollLeft;\n\n const height = element.scrollHeight - element.clientHeight;\n const width = element.scrollWidth - element.clientWidth;\n\n switch (dir) {\n case 'left': return (winScrollX === 0);\n case 'right': return (Math.abs(winScrollX - width) <= 1);\n case 'up': return (winScrollY === 0);\n case 'down': return (Math.abs(winScrollY - height) <= 1);\n }\n }\n return false;\n }\n\n /**\n * Decide whether an element is focusable for spatial navigation.\n * 1. If element is the browsing context (document, iframe), then it's focusable,\n * 2. If the element is scrollable container (regardless of scrollable axis), then it's focusable,\n * 3. The value of tabIndex >= 0, then it's focusable,\n * 4. If the element is disabled, it isn't focusable,\n * 5. If the element is expressly inert, it isn't focusable,\n * 6. Whether the element is being rendered or not.\n *\n * @function isFocusable\n * @param element {Node}\n * @returns {boolean}\n *\n * @see {@link https://html.spec.whatwg.org/multipage/interaction.html#focusable-area}\n */\n function isFocusable(element) {\n if ((element.tabIndex < 0) || isAtagWithoutHref(element) || isActuallyDisabled(element) || isExpresslyInert(element) || !isBeingRendered(element))\n return false;\n else if ((!element.parentElement) || (isScrollable(element) && isOverflow(element)) || (element.tabIndex >= 0))\n return true;\n }\n\n /**\n * Decide whether an element is a tag without href attribute or not.\n *\n * @function isAtagWithoutHref\n * @param element {Node}\n * @returns {boolean}\n */\n function isAtagWithoutHref(element) {\n return (element.tagName === 'A' && element.getAttribute('href') === null && element.getAttribute('tabIndex') === null);\n }\n\n /**\n * Decide whether an element is actually disabled or not.\n *\n * @function isActuallyDisabled\n * @param element {Node}\n * @returns {boolean}\n *\n * @see {@link https://html.spec.whatwg.org/multipage/semantics-other.html#concept-element-disabled}\n */\n function isActuallyDisabled(element) {\n if (['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA', 'OPTGROUP', 'OPTION', 'FIELDSET'].includes(element.tagName))\n return (element.disabled);\n else\n return false;\n }\n\n /**\n * Decide whether the element is expressly inert or not.\n * @see {@link https://html.spec.whatwg.org/multipage/interaction.html#expressly-inert}\n * @function isExpresslyInert\n * @param element {Node}\n * @returns {boolean}\n */\n function isExpresslyInert(element) {\n return ((element.inert) && (!element.ownerDocument.documentElement.inert));\n }\n\n /**\n * Decide whether the element is being rendered or not.\n * 1. If an element has the style as \"visibility: hidden | collapse\" or \"display: none\", it is not being rendered.\n * 2. If an element has the style as \"opacity: 0\", it is not being rendered.(that is, invisible).\n * 3. If width and height of an element are explicitly set to 0, it is not being rendered.\n * 4. If a parent element is hidden, an element itself is not being rendered.\n * (CSS visibility property and display property are inherited.)\n * @see {@link https://html.spec.whatwg.org/multipage/rendering.html#being-rendered}\n * @function isBeingRendered\n * @param element {Node}\n * @returns {boolean}\n */\n function isBeingRendered(element) {\n if (!isVisibleStyleProperty(element.parentElement))\n return false;\n if (!isVisibleStyleProperty(element) || (element.style.opacity === 0) ||\n ((element.style.width === '0px' || element.style.width === 0) && (element.style.height === '0px' || element.style.height === 0)))\n return false;\n return true;\n }\n\n /**\n * Decide whether this element is partially or completely visible to user agent.\n * @function isVisible\n * @param element {Node}\n * @returns {boolean}\n */\n function isVisible(element) {\n return (!element.parentElement) || (isVisibleStyleProperty(element) && hitTest(element));\n }\n\n /**\n * Decide whether this element is completely visible in this viewport for the arrow direction.\n * @function isEntirelyVisible\n * @param element {Node}\n * @returns {boolean}\n */\n function isEntirelyVisible(element) {\n const rect = getBoundingClientRect(element);\n const containerRect = getBoundingClientRect(element.getSpatialNavigationContainer());\n\n // FIXME: when element is bigger than container?\n const entirelyVisible = !((rect.left < containerRect.left) ||\n (rect.right > containerRect.right) ||\n (rect.top < containerRect.top) ||\n (rect.bottom > containerRect.bottom));\n\n return entirelyVisible;\n }\n\n /**\n * Decide the style property of this element is specified whether it's visible or not.\n * @function isVisibleStyleProperty\n * @param element {CSSStyleDeclaration}\n * @returns {boolean}\n */\n function isVisibleStyleProperty(element) {\n const elementStyle = window.getComputedStyle(element, null);\n const thisVisibility = elementStyle.getPropertyValue('visibility');\n const thisDisplay = elementStyle.getPropertyValue('display');\n const invisibleStyle = ['hidden', 'collapse'];\n\n return (thisDisplay !== 'none' && !invisibleStyle.includes(thisVisibility));\n }\n\n /**\n * Decide whether this element is entirely or partially visible within the viewport.\n * @function hitTest\n * @param element {Node}\n * @returns {boolean}\n */\n function hitTest(element) {\n const elementRect = getBoundingClientRect(element);\n if (element.nodeName !== 'IFRAME' && (elementRect.top < 0 || elementRect.left < 0 ||\n elementRect.top > window.innerHeight || elementRect.left > window.innerWidth))\n return false;\n\n let offsetX = parseInt(element.offsetWidth) / 10;\n let offsetY = parseInt(element.offsetHeight) / 10;\n\n offsetX = isNaN(offsetX) ? 1 : offsetX;\n offsetY = isNaN(offsetY) ? 1 : offsetY;\n\n const hitTestPoint = {\n middle: [(elementRect.left + elementRect.right) / 2, (elementRect.top + elementRect.bottom) / 2],\n leftTop: [elementRect.left + offsetX, elementRect.top + offsetY],\n // For performance\n // leftBoottom: [elementRect.left + offsetX, elementRect.bottom - offsetY],\n // rightTop: [elementRect.right - offsetX, elementRect.top + offsetY],\n rightBottom: [elementRect.right - offsetX, elementRect.bottom - offsetY]\n };\n\n for(const point in hitTestPoint) {\n const elemFromPoint = document.elementFromPoint(...hitTestPoint[point]);\n if (element === elemFromPoint || element.contains(elemFromPoint)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Decide whether a child element is entirely or partially Included within container visually.\n * @function isInside\n * @param containerRect {DOMRect}\n * @param childRect {DOMRect}\n * @returns {boolean}\n */\n function isInside(containerRect, childRect) {\n const rightEdgeCheck = (containerRect.left <= childRect.right && containerRect.right >= childRect.right);\n const leftEdgeCheck = (containerRect.left <= childRect.left && containerRect.right >= childRect.left);\n const topEdgeCheck = (containerRect.top <= childRect.top && containerRect.bottom >= childRect.top);\n const bottomEdgeCheck = (containerRect.top <= childRect.bottom && containerRect.bottom >= childRect.bottom);\n return (rightEdgeCheck || leftEdgeCheck) && (topEdgeCheck || bottomEdgeCheck);\n }\n\n /**\n * Decide whether this element is entirely or partially visible within the viewport.\n * Note: rect1 is outside of rect2 for the dir\n * @function isOutside\n * @param rect1 {DOMRect}\n * @param rect2 {DOMRect}\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {boolean}\n */\n function isOutside(rect1, rect2, dir) {\n switch (dir) {\n case 'left':\n return isRightSide(rect2, rect1);\n case 'right':\n return isRightSide(rect1, rect2);\n case 'up':\n return isBelow(rect2, rect1);\n case 'down':\n return isBelow(rect1, rect2);\n default:\n return false;\n }\n }\n\n /* rect1 is right of rect2 */\n function isRightSide(rect1, rect2) {\n return rect1.left >= rect2.right || (rect1.left >= rect2.left && rect1.right > rect2.right && rect1.bottom > rect2.top && rect1.top < rect2.bottom);\n }\n\n /* rect1 is below of rect2 */\n function isBelow(rect1, rect2) {\n return rect1.top >= rect2.bottom || (rect1.top >= rect2.top && rect1.bottom > rect2.bottom && rect1.left < rect2.right && rect1.right > rect2.left);\n }\n\n /* rect1 is completely aligned or partially aligned for the direction */\n function isAligned(rect1, rect2, dir) {\n switch (dir) {\n case 'left' :\n /* falls through */\n case 'right' :\n return rect1.bottom > rect2.top && rect1.top < rect2.bottom;\n case 'up' :\n /* falls through */\n case 'down' :\n return rect1.right > rect2.left && rect1.left < rect2.right;\n default:\n return false;\n }\n }\n\n /**\n * Get distance between the search origin and a candidate element along the direction when candidate element is inside the search origin.\n * @see {@link https://drafts.csswg.org/css-nav-1/#find-the-shortest-distance}\n * @function getDistanceFromPoint\n * @param point {Point} - The search origin\n * @param element {DOMRect} - A candidate element\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Number} The euclidian distance between the spatial navigation container and an element inside it\n */\n function getDistanceFromPoint(point, element, dir) {\n point = startingPoint;\n // Get exit point, entry point -> {x: '', y: ''};\n const points = getEntryAndExitPoints(dir, point, element);\n\n // Find the points P1 inside the border box of starting point and P2 inside the border box of candidate\n // that minimize the distance between these two points\n const P1 = Math.abs(points.entryPoint.x - points.exitPoint.x);\n const P2 = Math.abs(points.entryPoint.y - points.exitPoint.y);\n\n // The result is euclidian distance between P1 and P2.\n return Math.sqrt(Math.pow(P1, 2) + Math.pow(P2, 2));\n }\n\n /**\n * Get distance between the search origin and a candidate element along the direction when candidate element is inside the search origin.\n * @see {@link https://drafts.csswg.org/css-nav-1/#find-the-shortest-distance}\n * @function getInnerDistance\n * @param rect1 {DOMRect} - The search origin\n * @param rect2 {DOMRect} - A candidate element\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Number} The euclidean distance between the spatial navigation container and an element inside it\n */\n function getInnerDistance(rect1, rect2, dir) {\n const baseEdgeForEachDirection = {left: 'right', right: 'left', up: 'bottom', down: 'top'};\n const baseEdge = baseEdgeForEachDirection[dir];\n\n return Math.abs(rect1[baseEdge] - rect2[baseEdge]);\n }\n\n /**\n * Get the distance between the search origin and a candidate element considering the direction.\n * @see {@link https://drafts.csswg.org/css-nav-1/#calculating-the-distance}\n * @function getDistance\n * @param searchOrigin {DOMRect || Point} - The search origin\n * @param candidateRect {DOMRect} - A candidate element\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Number} The distance scoring between two elements\n */\n function getDistance(searchOrigin, candidateRect, dir) {\n const kOrthogonalWeightForLeftRight = 30;\n const kOrthogonalWeightForUpDown = 2;\n\n let orthogonalBias = 0;\n let alignBias = 0;\n const alignWeight = 5.0;\n\n // Get exit point, entry point -> {x: '', y: ''};\n const points = getEntryAndExitPoints(dir, searchOrigin, candidateRect);\n\n // Find the points P1 inside the border box of starting point and P2 inside the border box of candidate\n // that minimize the distance between these two points\n const P1 = Math.abs(points.entryPoint.x - points.exitPoint.x);\n const P2 = Math.abs(points.entryPoint.y - points.exitPoint.y);\n\n // A: The euclidean distance between P1 and P2.\n const A = Math.sqrt(Math.pow(P1, 2) + Math.pow(P2, 2));\n let B, C;\n\n // B: The absolute distance in the direction which is orthogonal to dir between P1 and P2, or 0 if dir is null.\n // C: The intersection edges between a candidate and the starting point.\n\n // D: The square root of the area of intersection between the border boxes of candidate and starting point\n const intersectionRect = getIntersectionRect(searchOrigin, candidateRect);\n const D = intersectionRect.area;\n\n switch (dir) {\n case 'left':\n /* falls through */\n case 'right' :\n // If two elements are aligned, add align bias\n // else, add orthogonal bias\n if (isAligned(searchOrigin, candidateRect, dir))\n alignBias = Math.min(intersectionRect.height / searchOrigin.height , 1);\n else\n orthogonalBias = (searchOrigin.height / 2);\n\n B = (P2 + orthogonalBias) * kOrthogonalWeightForLeftRight;\n C = alignWeight * alignBias;\n break;\n\n case 'up' :\n /* falls through */\n case 'down' :\n // If two elements are aligned, add align bias\n // else, add orthogonal bias\n if (isAligned(searchOrigin, candidateRect, dir))\n alignBias = Math.min(intersectionRect.width / searchOrigin.width , 1);\n else\n orthogonalBias = (searchOrigin.width / 2);\n\n B = (P1 + orthogonalBias) * kOrthogonalWeightForUpDown;\n C = alignWeight * alignBias;\n break;\n\n default:\n B = 0;\n C = 0;\n break;\n }\n\n return (A + B - C - D);\n }\n\n /**\n * Get the euclidean distance between the search origin and a candidate element considering the direction.\n * @function getEuclideanDistance\n * @param rect1 {DOMRect} - The search origin\n * @param rect2 {DOMRect} - A candidate element\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Number} The distance scoring between two elements\n */\n function getEuclideanDistance(rect1, rect2, dir) {\n // Get exit point, entry point\n const points = getEntryAndExitPoints(dir, rect1, rect2);\n\n // Find the points P1 inside the border box of starting point and P2 inside the border box of candidate\n // that minimize the distance between these two points\n const P1 = Math.abs(points.entryPoint.x - points.exitPoint.x);\n const P2 = Math.abs(points.entryPoint.y - points.exitPoint.y);\n\n // Return the euclidean distance between P1 and P2.\n return Math.sqrt(Math.pow(P1, 2) + Math.pow(P2, 2));\n }\n\n /**\n * Get the absolute distance between the search origin and a candidate element considering the direction.\n * @function getAbsoluteDistance\n * @param rect1 {DOMRect} - The search origin\n * @param rect2 {DOMRect} - A candidate element\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD)\n * @returns {Number} The distance scoring between two elements\n */\n function getAbsoluteDistance(rect1, rect2, dir) {\n // Get exit point, entry point\n const points = getEntryAndExitPoints(dir, rect1, rect2);\n\n // Return the absolute distance in the dir direction between P1 and P.\n return ((dir === 'left') || (dir === 'right')) ?\n Math.abs(points.entryPoint.x - points.exitPoint.x) : Math.abs(points.entryPoint.y - points.exitPoint.y);\n }\n\n /**\n * Get entry point and exit point of two elements considering the direction.\n * @function getEntryAndExitPoints\n * @param dir {SpatialNavigationDirection} - The directional information for the spatial navigation (e.g. LRUD). Default value for dir is 'down'.\n * @param searchOrigin {DOMRect | Point} - The search origin which contains the exit point\n * @param candidateRect {DOMRect} - One of candidates which contains the entry point\n * @returns {Points} The exit point from the search origin and the entry point from a candidate\n */\n function getEntryAndExitPoints(dir = 'down', searchOrigin, candidateRect) {\n /**\n * User type definition for Point\n * @typeof {Object} Points\n * @property {Point} Points.entryPoint\n * @property {Point} Points.exitPoint\n */\n const points = {entryPoint: {x: 0, y: 0}, exitPoint:{x: 0, y: 0}};\n\n if (startingPoint) {\n points.exitPoint = searchOrigin;\n\n switch (dir) {\n case 'left':\n points.entryPoint.x = candidateRect.right;\n break;\n case 'up':\n points.entryPoint.y = candidateRect.bottom;\n break;\n case 'right':\n points.entryPoint.x = candidateRect.left;\n break;\n case 'down':\n points.entryPoint.y = candidateRect.top;\n break;\n }\n\n // Set orthogonal direction\n switch (dir) {\n case 'left':\n case 'right':\n if (startingPoint.y <= candidateRect.top) {\n points.entryPoint.y = candidateRect.top;\n } else if (startingPoint.y < candidateRect.bottom) {\n points.entryPoint.y = startingPoint.y;\n } else {\n points.entryPoint.y = candidateRect.bottom;\n }\n break;\n\n case 'up':\n case 'down':\n if (startingPoint.x <= candidateRect.left) {\n points.entryPoint.x = candidateRect.left;\n } else if (startingPoint.x < candidateRect.right) {\n points.entryPoint.x = startingPoint.x;\n } else {\n points.entryPoint.x = candidateRect.right;\n }\n break;\n }\n }\n else {\n // Set direction\n switch (dir) {\n case 'left':\n points.exitPoint.x = searchOrigin.left;\n points.entryPoint.x = (candidateRect.right < searchOrigin.left) ? candidateRect.right : searchOrigin.left;\n break;\n case 'up':\n points.exitPoint.y = searchOrigin.top;\n points.entryPoint.y = (candidateRect.bottom < searchOrigin.top) ? candidateRect.bottom : searchOrigin.top;\n break;\n case 'right':\n points.exitPoint.x = searchOrigin.right;\n points.entryPoint.x = (candidateRect.left > searchOrigin.right) ? candidateRect.left : searchOrigin.right;\n break;\n case 'down':\n points.exitPoint.y = searchOrigin.bottom;\n points.entryPoint.y = (candidateRect.top > searchOrigin.bottom) ? candidateRect.top : searchOrigin.bottom;\n break;\n }\n\n // Set orthogonal direction\n switch (dir) {\n case 'left':\n case 'right':\n if (isBelow(searchOrigin, candidateRect)) {\n points.exitPoint.y = searchOrigin.top;\n points.entryPoint.y = (candidateRect.bottom < searchOrigin.top) ? candidateRect.bottom : searchOrigin.top;\n } else if (isBelow(candidateRect, searchOrigin)) {\n points.exitPoint.y = searchOrigin.bottom;\n points.entryPoint.y = (candidateRect.top > searchOrigin.bottom) ? candidateRect.top : searchOrigin.bottom;\n } else {\n points.exitPoint.y = Math.max(searchOrigin.top, candidateRect.top);\n points.entryPoint.y = points.exitPoint.y;\n }\n break;\n\n case 'up':\n case 'down':\n if (isRightSide(searchOrigin, candidateRect)) {\n points.exitPoint.x = searchOrigin.left;\n points.entryPoint.x = (candidateRect.right < searchOrigin.left) ? candidateRect.right : searchOrigin.left;\n } else if (isRightSide(candidateRect, searchOrigin)) {\n points.exitPoint.x = searchOrigin.right;\n points.entryPoint.x = (candidateRect.left > searchOrigin.right) ? candidateRect.left : searchOrigin.right;\n } else {\n points.exitPoint.x = Math.max(searchOrigin.left, candidateRect.left);\n points.entryPoint.x = points.exitPoint.x;\n }\n break;\n }\n }\n\n return points;\n }\n\n /**\n * Find focusable elements within the container\n * @see {@link https://drafts.csswg.org/css-nav-1/#find-the-shortest-distance}\n * @function getIntersectionRect\n * @param rect1 {DOMRect} - The search origin which contains the exit point\n * @param rect2 {DOMRect} - One of candidates which contains the entry point\n * @returns {IntersectionArea} The intersection area between two elements.\n *\n * @typeof {Object} IntersectionArea\n * @property {Number} IntersectionArea.width\n * @property {Number} IntersectionArea.height\n */\n function getIntersectionRect(rect1, rect2) {\n const intersection_rect = {width: 0, height: 0, area: 0};\n\n const new_location = [Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)];\n const new_max_point = [Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom)];\n\n intersection_rect.width = Math.abs(new_location[0] - new_max_point[0]);\n intersection_rect.height = Math.abs(new_location[1] - new_max_point[1]);\n\n if (!(new_location[0] >= new_max_point[0] || new_location[1] >= new_max_point[1])) {\n // intersecting-cases\n intersection_rect.area = Math.sqrt(intersection_rect.width * intersection_rect.height);\n }\n\n return intersection_rect;\n }\n\n /**\n * Handle the spatial navigation behavior for HTMLInputElement, HTMLTextAreaElement\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input|HTMLInputElement (MDN)}\n * @function handlingEditableElement\n * @param e {Event} - keydownEvent\n * @returns {boolean}\n */\n function handlingEditableElement(e) {\n const SPINNABLE_INPUT_TYPES = ['email', 'date', 'month', 'number', 'time', 'week'],\n TEXT_INPUT_TYPES = ['password', 'text', 'search', 'tel', 'url', null];\n const eventTarget = document.activeElement;\n const startPosition = eventTarget.selectionStart;\n const endPosition = eventTarget.selectionEnd;\n const focusNavigableArrowKey = {left: false, up: false, right: false, down: false};\n\n const dir = ARROW_KEY_CODE[e.keyCode];\n if (dir === undefined) {\n return focusNavigableArrowKey;\n }\n\n if (SPINNABLE_INPUT_TYPES.includes(eventTarget.getAttribute('type')) &&\n (dir === 'up' || dir === 'down')) {\n focusNavigableArrowKey[dir] = true;\n } else if (TEXT_INPUT_TYPES.includes(eventTarget.getAttribute('type')) || eventTarget.nodeName === 'TEXTAREA') {\n if (startPosition === endPosition) { // if there isn't any selected text\n if (startPosition === 0) {\n focusNavigableArrowKey.left = true;\n focusNavigableArrowKey.up = true;\n }\n if (endPosition === eventTarget.value.length) {\n focusNavigableArrowKey.right = true;\n focusNavigableArrowKey.down = true;\n }\n }\n } else { // HTMLDataListElement, HTMLSelectElement, HTMLOptGroup\n focusNavigableArrowKey[dir] = true;\n }\n\n return focusNavigableArrowKey;\n }\n\n /**\n * Get the DOMRect of an element\n * @function getBoundingClientRect\n * @param element {Node}\n * @returns {DOMRect}\n */\n function getBoundingClientRect(element) {\n // memoization\n let rect = mapOfBoundRect && mapOfBoundRect.get(element);\n if (!rect) {\n const boundingClientRect = element.getBoundingClientRect();\n rect = {\n top: Number(boundingClientRect.top.toFixed(2)),\n right: Number(boundingClientRect.right.toFixed(2)),\n bottom: Number(boundingClientRect.bottom.toFixed(2)),\n left: Number(boundingClientRect.left.toFixed(2)),\n width: Number(boundingClientRect.width.toFixed(2)),\n height: Number(boundingClientRect.height.toFixed(2))\n };\n mapOfBoundRect && mapOfBoundRect.set(element, rect);\n }\n return rect;\n }\n\n /**\n * Get the list of the experimental APIs\n * @function getExperimentalAPI\n */\n function getExperimentalAPI() {\n function canScroll(container, dir) {\n return (isScrollable(container, dir) && !isScrollBoundary(container, dir)) ||\n (!container.parentElement && !isHTMLScrollBoundary(container, dir));\n }\n\n function findTarget(findCandidate, element, dir, option) {\n let eventTarget = element;\n let bestNextTarget = null;\n\n // 4\n if (eventTarget === document || eventTarget === document.documentElement) {\n eventTarget = document.body || document.documentElement;\n }\n\n // 5\n // At this point, spatialNavigationSearch can be applied.\n // If startingPoint is either a scroll container or the document,\n // find the best candidate within startingPoint\n if ((isContainer(eventTarget) || eventTarget.nodeName === 'BODY') && !(eventTarget.nodeName === 'INPUT')) {\n if (eventTarget.nodeName === 'IFRAME')\n eventTarget = eventTarget.contentDocument.body;\n\n const candidates = getSpatialNavigationCandidates(eventTarget, option);\n\n // 5-2\n if (Array.isArray(candidates) && candidates.length > 0) {\n return findCandidate ? getFilteredSpatialNavigationCandidates(eventTarget, dir, candidates) : eventTarget.spatialNavigationSearch(dir, {candidates});\n }\n if (canScroll(eventTarget, dir)) {\n return findCandidate ? [] : eventTarget;\n }\n }\n\n // 6\n // Let container be the nearest ancestor of eventTarget\n let container = eventTarget.getSpatialNavigationContainer();\n let parentContainer = (container.parentElement) ? container.getSpatialNavigationContainer() : null;\n\n // When the container is the viewport of a browsing context\n if (!parentContainer && ( window.location !== window.parent.location)) {\n parentContainer = window.parent.document.documentElement;\n }\n\n // 7\n while (parentContainer) {\n const candidates = filteredCandidates(eventTarget, getSpatialNavigationCandidates(container, option), dir, container);\n\n if (Array.isArray(candidates) && candidates.length > 0) {\n bestNextTarget = eventTarget.spatialNavigationSearch(dir, {candidates, container});\n if (bestNextTarget) {\n return findCandidate ? candidates : bestNextTarget;\n }\n }\n\n // If there isn't any candidate and the best candidate among candidate:\n // 1) Scroll or 2) Find candidates of the ancestor container\n // 8 - if\n else if (canScroll(container, dir)) {\n return findCandidate ? [] : eventTarget;\n } else if (container === document || container === document.documentElement) {\n container = window.document.documentElement;\n\n // The page is in an iframe\n if ( window.location !== window.parent.location ) {\n\n // eventTarget needs to be reset because the position of the element in the IFRAME\n // is unuseful when the focus moves out of the iframe\n eventTarget = window.frameElement;\n container = window.parent.document.documentElement;\n if (container.parentElement)\n parentContainer = container.getSpatialNavigationContainer();\n else {\n parentContainer = null;\n break;\n }\n }\n } else {\n // avoiding when spatnav container with tabindex=-1\n if (isFocusable(container)) {\n eventTarget = container;\n }\n\n container = parentContainer;\n if (container.parentElement)\n parentContainer = container.getSpatialNavigationContainer();\n else {\n parentContainer = null;\n break;\n }\n }\n }\n\n if (!parentContainer && container) {\n // Getting out from the current spatnav container\n const candidates = filteredCandidates(eventTarget, getSpatialNavigationCandidates(container, option), dir, container);\n\n // 9\n if (Array.isArray(candidates) && candidates.length > 0) {\n bestNextTarget = eventTarget.spatialNavigationSearch(dir, {candidates, container});\n if (bestNextTarget) {\n return findCandidate ? candidates : bestNextTarget;\n }\n }\n }\n\n if (canScroll(container, dir)) {\n bestNextTarget = eventTarget;\n return bestNextTarget;\n }\n }\n\n return {\n isContainer,\n isScrollContainer,\n findCandidates: findTarget.bind(null, true),\n findNextTarget: findTarget.bind(null, false),\n getDistanceFromTarget: (element, candidateElement, dir) => {\n if ((isContainer(element) || element.nodeName === 'BODY') && !(element.nodeName === 'INPUT')) {\n if (getSpatialNavigationCandidates(element).includes(candidateElement)) {\n return getInnerDistance(getBoundingClientRect(element), getBoundingClientRect(candidateElement), dir);\n }\n }\n return getDistance(getBoundingClientRect(element), getBoundingClientRect(candidateElement), dir);\n }\n };\n }\n\n /**\n * Makes to use the experimental APIs.\n * @function enableExperimentalAPIs\n * @param option {boolean} - If it is true, the experimental APIs can be used or it cannot.\n */\n function enableExperimentalAPIs (option) {\n const currentKeyMode = window.__spatialNavigation__ && window.__spatialNavigation__.keyMode;\n window.__spatialNavigation__ = (option === false) ? getInitialAPIs() : Object.assign(getInitialAPIs(), getExperimentalAPI());\n window.__spatialNavigation__.keyMode = currentKeyMode;\n Object.seal(window.__spatialNavigation__);\n }\n\n /**\n * Set the environment for using the spatial navigation polyfill.\n * @function getInitialAPIs\n */\n function getInitialAPIs() {\n return {\n enableExperimentalAPIs,\n get keyMode() { return this._keymode ? this._keymode : 'ARROW'; },\n set keyMode(mode) { this._keymode = (['SHIFTARROW', 'ARROW', 'NONE'].includes(mode)) ? mode : 'ARROW'; },\n setStartingPoint: function (x, y) {startingPoint = (x && y) ? {x, y} : null;}\n };\n }\n\n window.addEventListener('load', () => {\n initiateSpatialNavigation();\n enableExperimentalAPIs(false);\n });\n})();\n","// No automatic generation: we don't want to depend on fs, as we want to keep this universal\n// ls *-*.json | while read line; do printf \"\\\"`printf $line | cut -d '.' -f1`\\\": require(\\\"./$line\\\"),\\n\"; done\nmodule.exports = function() {\n\treturn {\n\t\t\"ar-AR\": require(\"./ar-AR.json\"),\n\t\t\"id-ID\": require(\"./id-ID.json\"),\n\t\t\"bg-BG\": require(\"./bg-BG.json\"),\n\t\t\"ca-CA\": require(\"./ca-CA.json\"),\n\t\t\"da-DK\": require(\"./da-DK.json\"),\n\t\t\"de-DE\": require(\"./de-DE.json\"),\n\t\t\"el-GR\": require(\"./el-GR.json\"),\n\t\t\"en-US\": require(\"./en-US.json\"),\n\t\t\"eo-EO\": require(\"./eo-EO.json\"),\n\t\t\"es-ES\": require(\"./es-ES.json\"),\n\t\t\"eu-ES\": require(\"./eu-ES.json\"),\n\t\t\"fa-IR\": require(\"./fa-IR.json\"),\n\t\t\"fr-FR\": require(\"./fr-FR.json\"),\n\t\t\"he-IL\": require(\"./he-IL.json\"),\n\t\t\"hi-IN\": require(\"./hi-IN.json\"),\n\t\t\"hr-HR\": require(\"./hr-HR.json\"),\n\t\t\"hu-HU\": require(\"./hu-HU.json\"),\n\t\t\"it-IT\": require(\"./it-IT.json\"),\n\t\t\"mk-MK\": require(\"./mk-MK.json\"),\n\t\t\"my-BM\": require(\"./my-BM.json\"),\n\t\t\"nb-NO\": require(\"./nb-NO.json\"),\n\t\t\"nl-NL\": require(\"./nl-NL.json\"),\n\t\t\"nn-NO\": require(\"./nn-NO.json\"),\n\t\t\"pl-PL\": require(\"./pl-PL.json\"),\n\t\t\"pt-BR\": require(\"./pt-BR.json\"),\n\t\t\"pt-PT\": require(\"./pt-PT.json\"),\n\t\t\"ru-RU\": require(\"./ru-RU.json\"),\n\t\t\"sv-SE\": require(\"./sv-SE.json\"),\n\t\t\"sr-RS\": require(\"./sr-RS.json\"),\n\t\t\"tr-TR\": require(\"./tr-TR.json\"),\n\t\t\"zh-CN\": require(\"./zh-CN.json\"),\n\t\t\"zh-HK\": require(\"./zh-HK.json\"),\n\t\t\"sl-SL\": require(\"./sl-SL.json\"),\n\t\t\"cs-CZ\": require(\"./cs-CZ.json\"),\n\t\t\"te-IN\": require(\"./te-IN.json\"),\n\t\t\"zh-TW\": require(\"./zh-TW.json\"),\n\t}\n};\n\n// ls *-*.json | while read line; do printf \"\\\"`printf $line | cut -d '.' -f1`\\\",\\n\"; done\nmodule.exports.all = [\n\t\"ar-AR\",\n\t\"id-ID\",\n\t\"bg-BG\",\n\t\"ca-CA\",\n\t\"da-DK\",\n\t\"de-DE\",\n\t\"el-GR\",\n\t\"en-US\",\n\t\"eo-EO\",\n\t\"es-ES\",\n\t\"eu-ES\",\n\t\"fa-IR\",\n\t\"fr-FR\",\n\t\"he-IL\",\n\t\"hi-IN\",\n\t\"hr-HR\",\n\t\"hu-HU\",\n\t\"it-IT\",\n\t\"mk-MK\",\n\t\"my-BM\",\n\t\"nb-NO\",\n\t\"nl-NL\",\n\t\"nn-NO\",\n\t\"pl-PL\",\n\t\"pt-BR\",\n\t\"pt-PT\",\n\t\"ru-RU\",\n\t\"sv-SE\",\n\t\"sr-RS\",\n\t\"tr-TR\",\n\t\"zh-CN\",\n\t\"zh-HK\",\n\t\"sl-SL\",\n\t\"cs-CZ\",\n\t\"te-IN\",\n\t\"zh-TW\"\n];\n","/* \nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in \nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN \nTHE SOFTWARE.\n*/\n\nvar base32 = require('./thirty-two');\n\nexports.encode = base32.encode;\nexports.decode = base32.decode;\n","/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n'use strict';\n\nvar charTable = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\nvar byteTable = [\n 0xff, 0xff, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,\n 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,\n 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,\n 0x17, 0x18, 0x19, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,\n 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,\n 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,\n 0x17, 0x18, 0x19, 0xff, 0xff, 0xff, 0xff, 0xff\n];\n\nfunction quintetCount(buff) {\n var quintets = Math.floor(buff.length / 5);\n return buff.length % 5 === 0 ? quintets: quintets + 1;\n}\n\nexports.encode = function(plain) {\n if(!Buffer.isBuffer(plain)){\n \tplain = new Buffer(plain);\n }\n var i = 0;\n var j = 0;\n var shiftIndex = 0;\n var digit = 0;\n var encoded = new Buffer(quintetCount(plain) * 8);\n\n /* byte by byte isn't as pretty as quintet by quintet but tests a bit\n faster. will have to revisit. */\n while(i < plain.length) {\n var current = plain[i];\n\n if(shiftIndex > 3) {\n digit = current & (0xff >> shiftIndex);\n shiftIndex = (shiftIndex + 5) % 8;\n digit = (digit << shiftIndex) | ((i + 1 < plain.length) ?\n plain[i + 1] : 0) >> (8 - shiftIndex);\n i++;\n } else {\n digit = (current >> (8 - (shiftIndex + 5))) & 0x1f;\n shiftIndex = (shiftIndex + 5) % 8;\n if(shiftIndex === 0) i++;\n }\n\n encoded[j] = charTable.charCodeAt(digit);\n j++;\n }\n\n for(i = j; i < encoded.length; i++) {\n encoded[i] = 0x3d; //'='.charCodeAt(0)\n }\n\n return encoded;\n};\n\nexports.decode = function(encoded) {\n var shiftIndex = 0;\n var plainDigit = 0;\n var plainChar;\n var plainPos = 0;\n if(!Buffer.isBuffer(encoded)){\n \tencoded = new Buffer(encoded);\n }\n var decoded = new Buffer(Math.ceil(encoded.length * 5 / 8));\n\n /* byte by byte isn't as pretty as octet by octet but tests a bit\n faster. will have to revisit. */\n for(var i = 0; i < encoded.length; i++) {\n \tif(encoded[i] === 0x3d){ //'='\n \t\tbreak;\n \t}\n\n var encodedByte = encoded[i] - 0x30;\n\n if(encodedByte < byteTable.length) {\n plainDigit = byteTable[encodedByte];\n\n if(shiftIndex <= 3) {\n shiftIndex = (shiftIndex + 5) % 8;\n\n if(shiftIndex === 0) {\n plainChar |= plainDigit;\n decoded[plainPos] = plainChar;\n plainPos++;\n plainChar = 0;\n } else {\n plainChar |= 0xff & (plainDigit << (8 - shiftIndex));\n }\n } else {\n shiftIndex = (shiftIndex + 5) % 8;\n plainChar |= 0xff & (plainDigit >>> shiftIndex);\n decoded[plainPos] = plainChar;\n plainPos++;\n\n plainChar = 0xff & (plainDigit << (8 - shiftIndex));\n }\n } else {\n \tthrow new Error('Invalid input - it is not base32 encoded string');\n }\n }\n\n return decoded.slice(0, plainPos);\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","\"use strict\";Object.defineProperty(exports,Symbol.toStringTag,{value:\"Module\"});const o=require(\"react\");var c=(e=>(e.Mouse=\"mouse\",e.Touch=\"touch\",e.Pointer=\"pointer\",e))(c||{}),a=(e=>(e.CancelledByMovement=\"cancelled-by-movement\",e.CancelledByRelease=\"cancelled-by-release\",e.CancelledOutsideElement=\"cancelled-outside-element\",e))(a||{});const j=()=>typeof window==\"object\"?window?.PointerEvent??null:null,Y=()=>typeof window==\"object\"?window?.TouchEvent??null:null;function D(e){const{nativeEvent:t}=e;if(!t)return!1;const s=Y();return s&&t instanceof s||\"touches\"in t}function A(e){const t=j();return e.nativeEvent instanceof MouseEvent&&!(t&&e.nativeEvent instanceof t)}function S(e){const{nativeEvent:t}=e;if(!t)return!1;const s=j();return s&&t instanceof s||\"pointerId\"in t}function R(e){return A(e)||D(e)||S(e)}function B(e){return D(e)?{x:e.touches[0].pageX,y:e.touches[0].pageY}:A(e)||S(e)?{x:e.pageX,y:e.pageY}:null}function q(e){return{target:e.target,currentTarget:e.currentTarget,nativeEvent:e,persist:()=>{}}}function I(e,{threshold:t=400,captureEvent:s=!1,detect:p=c.Pointer,cancelOnMovement:w=!1,cancelOutsideElement:P=!0,filterEvents:g,onStart:T,onMove:y,onFinish:M,onCancel:C}={}){const h=o.useRef(!1),f=o.useRef(!1),U=o.useRef(),l=o.useRef(),m=o.useRef(e),d=o.useRef(null),E=o.useCallback(n=>r=>{f.current||R(r)&&(g!==void 0&&!g(r)||(s&&r.persist(),T?.(r,{context:n}),d.current=B(r),f.current=!0,U.current=r.currentTarget,l.current=setTimeout(()=>{m.current&&(m.current(r,{context:n}),h.current=!0)},t)))},[s,g,T,t]),i=o.useCallback(n=>(r,u)=>{R(r)&&f.current&&(d.current=null,s&&r.persist(),h.current?M?.(r,{context:n}):f.current&&C?.(r,{context:n,reason:u??a.CancelledByRelease}),h.current=!1,f.current=!1,l.current!==void 0&&clearTimeout(l.current))},[s,M,C]),v=o.useCallback(n=>r=>{if(y?.(r,{context:n}),w&&d.current){const u=B(r);if(u){const b=w===!0?25:w,L={x:Math.abs(u.x-d.current.x),y:Math.abs(u.y-d.current.y)};(L.x>b||L.y>b)&&i(n)(r,a.CancelledByMovement)}}},[i,w,y]),X=o.useCallback(n=>{if(e===null)return{};switch(p){case c.Mouse:{const r={onMouseDown:E(n),onMouseMove:v(n),onMouseUp:i(n)};return P&&(r.onMouseLeave=u=>{i(n)(u,a.CancelledOutsideElement)}),r}case c.Touch:return{onTouchStart:E(n),onTouchMove:v(n),onTouchEnd:i(n)};case c.Pointer:{const r={onPointerDown:E(n),onPointerMove:v(n),onPointerUp:i(n)};return P&&(r.onPointerLeave=u=>i(n)(u,a.CancelledOutsideElement)),r}}},[e,i,P,p,v,E]);return o.useEffect(()=>{if(!window)return;function n(r){const u=q(r);i()(u)}return window.addEventListener(\"mouseup\",n),window.addEventListener(\"touchend\",n),window.addEventListener(\"pointerup\",n),()=>{window.removeEventListener(\"mouseup\",n),window.removeEventListener(\"touchend\",n),window.removeEventListener(\"pointerup\",n)}},[i]),o.useEffect(()=>()=>{l.current!==void 0&&clearTimeout(l.current)},[]),o.useEffect(()=>{m.current=e},[e]),X}exports.LongPressCallbackReason=a;exports.LongPressEventType=c;exports.useLongPress=I;\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default exports for Node. Export the extended versions of VTTCue and\n// VTTRegion in Node since we likely want the capability to convert back and\n// forth between JSON. If we don't then it's not that big of a deal since we're\n// off browser.\nmodule.exports = {\n WebVTT: require(\"./vtt.js\").WebVTT,\n VTTCue: require(\"./vttcue-extended.js\").VTTCue,\n VTTRegion: require(\"./vttregion-extended.js\").VTTRegion\n};\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\n\n(function(global) {\n function makeColorSet(color, opacity) {\n if(opacity === undefined) {\n opacity = 1;\n }\n return \"rgba(\" + [parseInt(color.substring(0, 2), 16),\n parseInt(color.substring(2, 4), 16),\n parseInt(color.substring(4, 6), 16),\n opacity].join(\",\") + \")\";\n }\n\n var WebVTTPrefs = ['webvtt.font.color', 'webvtt.font.opacity', 'webvtt.font.scale',\n 'webvtt.bg.color', 'webvtt.bg.opacity',\n 'webvtt.edge.color', 'webvtt.edge.type'];\n\n var fontScale = 1;\n\n function observe(subject, topic, data) {\n switch (data) {\n case \"webvtt.font.color\":\n case \"webvtt.font.opacity\":\n var fontColor = Services.prefs.getCharPref(\"webvtt.font.color\");\n var fontOpacity = Services.prefs.getIntPref(\"webvtt.font.opacity\") / 100;\n WebVTTSet.fontSet = makeColorSet(fontColor, fontOpacity);\n break;\n case \"webvtt.font.scale\":\n fontScale = Services.prefs.getIntPref(\"webvtt.font.scale\") / 100;\n break;\n case \"webvtt.bg.color\":\n case \"webvtt.bg.opacity\":\n var backgroundColor = Services.prefs.getCharPref(\"webvtt.bg.color\");\n var backgroundOpacity = Services.prefs.getIntPref(\"webvtt.bg.opacity\") / 100;\n WebVTTSet.backgroundSet = makeColorSet(backgroundColor, backgroundOpacity);\n break;\n case \"webvtt.edge.color\":\n case \"webvtt.edge.type\":\n var edgeTypeList = [\"\", \"0px 0px \", \"4px 4px 4px \", \"-2px -2px \", \"2px 2px \"];\n var edgeType = Services.prefs.getIntPref(\"webvtt.edge.type\");\n var edgeColor = Services.prefs.getCharPref(\"webvtt.edge.color\");\n WebVTTSet.edgeSet = edgeTypeList[edgeType] + makeColorSet(edgeColor);\n break;\n }\n }\n\n if(typeof Services !== \"undefined\") {\n var WebVTTSet = {};\n WebVTTPrefs.forEach(function (pref) {\n observe(undefined, undefined, pref);\n Services.prefs.addObserver(pref, observe, false);\n });\n }\n\n var _objCreate = Object.create || (function() {\n function F() {}\n return function(o) {\n if (arguments.length !== 1) {\n throw new Error('Object.create shim only accepts one parameter.');\n }\n F.prototype = o;\n return new F();\n };\n })();\n\n // Creates a new ParserError object from an errorData object. The errorData\n // object should have default code and message properties. The default message\n // property can be overriden by passing in a message parameter.\n // See ParsingError.Errors below for acceptable errors.\n function ParsingError(errorData, message) {\n this.name = \"ParsingError\";\n this.code = errorData.code;\n this.message = message || errorData.message;\n }\n ParsingError.prototype = _objCreate(Error.prototype);\n ParsingError.prototype.constructor = ParsingError;\n\n // ParsingError metadata for acceptable ParsingErrors.\n ParsingError.Errors = {\n BadSignature: {\n code: 0,\n message: \"Malformed WebVTT signature.\"\n },\n BadTimeStamp: {\n code: 1,\n message: \"Malformed time stamp.\"\n }\n };\n\n // Try to parse input as a time stamp.\n function parseTimeStamp(input) {\n\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000;\n }\n\n var m = input.match(/^(\\d+):(\\d{2})(:\\d{2})?\\.(\\d{3})/);\n if (!m) {\n return null;\n }\n\n if (m[3]) {\n // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(m[1], m[2], m[3].replace(\":\", \"\"), m[4]);\n } else if (m[1] > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[1], m[2], 0, m[4]);\n } else {\n // Timestamp takes the form of [minutes]:[seconds].[milliseconds]\n return computeSeconds(0, m[1], m[2], m[4]);\n }\n }\n\n // A settings object holds key/value pairs and will ignore anything but the first\n // assignment to a specific key.\n function Settings() {\n this.values = _objCreate(null);\n }\n\n Settings.prototype = {\n // Only accept the first assignment to any key.\n set: function(k, v) {\n if (!this.get(k) && v !== \"\") {\n this.values[k] = v;\n }\n },\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n get: function(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n return this.has(k) ? this.values[k] : dflt;\n },\n // Check whether we have a value for a key.\n has: function(k) {\n return k in this.values;\n },\n // Accept a setting if its one of the given alternatives.\n alt: function(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n },\n // Accept a setting if its a valid (signed) integer.\n integer: function(k, v) {\n if (/^-?\\d+$/.test(v)) { // integer\n this.set(k, parseInt(v, 10));\n }\n },\n // Accept a setting if its a valid percentage.\n percent: function(k, v) {\n var m;\n if ((m = v.match(/^([\\d]{1,3})(\\.[\\d]*)?%$/))) {\n v = parseFloat(v);\n if (v >= 0 && v <= 100) {\n this.set(k, v);\n return true;\n }\n }\n return false;\n }\n };\n\n // Helper function to parse input into groups separated by 'groupDelim', and\n // interprete each group as a key/value pair separated by 'keyValueDelim'.\n function parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n for (var i in groups) {\n if (typeof groups[i] !== \"string\") {\n continue;\n }\n var kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) {\n continue;\n }\n var k = kv[0];\n var v = kv[1];\n callback(k, v);\n }\n }\n\n function parseCue(input, cue, regionList, successCb, errCb) {\n // Remember the original input if we need to throw an error.\n var oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n if (ts === null) {\n if (errCb) {\n errCb(new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed timestamp: \" + oInput));\n return;\n }\n }\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, \"\");\n return ts;\n }\n\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"region\":\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n break;\n case \"vertical\":\n settings.alt(k, v, [\"rl\", \"lr\"]);\n break;\n case \"line\":\n var vals = v.split(\",\"),\n vals0 = vals[0];\n settings.integer(k, vals0);\n settings.percent(k, vals0) ? settings.set(\"snapToLines\", false) : null;\n settings.alt(k, vals0, [\"auto\"]);\n if (vals.length === 2) {\n settings.alt(\"lineAlign\", vals[1], [\"start\", \"middle\", \"end\"]);\n }\n break;\n case \"position\":\n vals = v.split(\",\");\n settings.percent(k, vals[0]);\n if (vals.length === 2) {\n settings.alt(\"positionAlign\", vals[1], [\"start\", \"middle\", \"end\"]);\n }\n break;\n case \"size\":\n settings.percent(k, v);\n break;\n case \"align\":\n settings.alt(k, v, [\"start\", \"middle\", \"end\", \"left\", \"right\"]);\n break;\n }\n }, /:/, /\\s/);\n\n // Apply default values for any missing fields.\n cue.region = settings.get(\"region\", null);\n cue.vertical = settings.get(\"vertical\", \"\");\n cue.line = settings.get(\"line\", \"auto\");\n cue.lineAlign = settings.get(\"lineAlign\", \"start\");\n cue.snapToLines = settings.get(\"snapToLines\", true);\n cue.size = settings.get(\"size\", 100);\n cue.align = settings.get(\"align\", \"center\");\n cue.position = settings.get(\"position\", \"auto\");\n cue.positionAlign = settings.get(\"positionAlign\", {\n start: \"start\",\n left: \"start\",\n middle: \"middle\",\n end: \"end\",\n right: \"end\"\n }, cue.align);\n\n successCb();\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, \"\");\n }\n\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n\n var timestamp = consumeTimeStamp()\n if (timestamp === undefined) return\n cue.startTime = timestamp; // (1) collect cue start time\n skipWhitespace();\n if (input.substr(0, 3) !== \"-->\") {\n // (3) next characters must match \"-->\"\n errCb(new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed time stamp (time stamps must be separated by '-->'): \" +\n oInput));\n return;\n }\n input = input.substr(3);\n skipWhitespace();\n var timestamp = consumeTimeStamp()\n if (timestamp === undefined) return\n cue.endTime = timestamp; // (5) collect cue end time\n\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n }\n\n var ESCAPE = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n \"‎\": \"\\u200e\",\n \"‏\": \"\\u200f\",\n \" \": \"\\u00a0\"\n };\n\n var TAG_NAME = {\n c: \"span\",\n i: \"i\",\n b: \"b\",\n u: \"u\",\n ruby: \"ruby\",\n rt: \"rt\",\n v: \"span\",\n lang: \"span\"\n };\n\n var TAG_ANNOTATION = {\n v: \"title\",\n lang: \"lang\"\n };\n\n var NEEDS_PARENT = {\n rt: \"ruby\"\n };\n\n // Parse content into a document fragment.\n function parseContent(window, input) {\n function nextToken() {\n // Check for end-of-string.\n if (!input) {\n return null;\n }\n\n // Consume 'n' characters from the input.\n function consume(result) {\n input = input.substr(result.length);\n return result;\n }\n\n var m = input.match(/^([^<]*)(<[^>]+>?)?/);\n // If there is some text before the next tag, return it, otherwise return\n // the tag.\n return consume(m[1] ? m[1] : m[2]);\n }\n\n // Unescape a string 's'.\n function unescape1(e) {\n return ESCAPE[e];\n }\n function unescape(s) {\n while ((m = s.match(/&(amp|lt|gt|lrm|rlm|nbsp);/))) {\n s = s.replace(m[0], unescape1);\n }\n return s;\n }\n\n function shouldAdd(current, element) {\n return !NEEDS_PARENT[element.localName] ||\n NEEDS_PARENT[element.localName] === current.localName;\n }\n\n // Create an element for this tag.\n function createElement(type, annotation) {\n var tagName = TAG_NAME[type];\n if (!tagName) {\n return null;\n }\n var element = window.document.createElement(tagName);\n element.localName = tagName;\n var name = TAG_ANNOTATION[type];\n if (name && annotation) {\n element[name] = annotation.trim();\n }\n return element;\n }\n\n var rootDiv = window.document.createElement(\"div\"),\n current = rootDiv,\n t,\n tagStack = [];\n\n while ((t = nextToken()) !== null) {\n if (t[0] === '<') {\n if (t[1] === \"/\") {\n // If the closing tag matches, move back up to the parent node.\n if (tagStack.length &&\n tagStack[tagStack.length - 1] === t.substr(2).replace(\">\", \"\")) {\n tagStack.pop();\n current = current.parentNode;\n }\n // Otherwise just ignore the end tag.\n continue;\n }\n var ts = parseTimeStamp(t.substr(1, t.length - 2));\n var node;\n if (ts) {\n // Timestamps are lead nodes as well.\n node = window.document.createProcessingInstruction(\"timestamp\", ts);\n current.appendChild(node);\n continue;\n }\n var m = t.match(/^<([^.\\s/0-9>]+)(\\.[^\\s\\\\>]+)?([^>\\\\]+)?(\\\\?)>?$/);\n // If we can't parse the tag, skip to the next tag.\n if (!m) {\n continue;\n }\n // Try to construct an element, and ignore the tag if we couldn't.\n node = createElement(m[1], m[3]);\n if (!node) {\n continue;\n }\n // Determine if the tag should be added based on the context of where it\n // is placed in the cuetext.\n if (!shouldAdd(current, node)) {\n continue;\n }\n // Set the class list (as a list of classes, separated by space).\n if (m[2]) {\n node.className = m[2].substr(1).replace('.', ' ');\n }\n // Append the node to the current node, and enter the scope of the new\n // node.\n tagStack.push(m[1]);\n current.appendChild(node);\n current = node;\n continue;\n }\n\n // Text nodes are leaf nodes.\n current.appendChild(window.document.createTextNode(unescape(t)));\n }\n\n return rootDiv;\n }\n\n // This is a list of all the Unicode characters that have a strong\n // right-to-left category. What this means is that these characters are\n // written right-to-left for sure. It was generated by pulling all the strong\n // right-to-left characters out of the Unicode data table. That table can\n // found at: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\n var strongRTLRanges = [[0x5be, 0x5be], [0x5c0, 0x5c0], [0x5c3, 0x5c3], [0x5c6, 0x5c6],\n [0x5d0, 0x5ea], [0x5f0, 0x5f4], [0x608, 0x608], [0x60b, 0x60b], [0x60d, 0x60d],\n [0x61b, 0x61b], [0x61e, 0x64a], [0x66d, 0x66f], [0x671, 0x6d5], [0x6e5, 0x6e6],\n [0x6ee, 0x6ef], [0x6fa, 0x70d], [0x70f, 0x710], [0x712, 0x72f], [0x74d, 0x7a5],\n [0x7b1, 0x7b1], [0x7c0, 0x7ea], [0x7f4, 0x7f5], [0x7fa, 0x7fa], [0x800, 0x815],\n [0x81a, 0x81a], [0x824, 0x824], [0x828, 0x828], [0x830, 0x83e], [0x840, 0x858],\n [0x85e, 0x85e], [0x8a0, 0x8a0], [0x8a2, 0x8ac], [0x200f, 0x200f],\n [0xfb1d, 0xfb1d], [0xfb1f, 0xfb28], [0xfb2a, 0xfb36], [0xfb38, 0xfb3c],\n [0xfb3e, 0xfb3e], [0xfb40, 0xfb41], [0xfb43, 0xfb44], [0xfb46, 0xfbc1],\n [0xfbd3, 0xfd3d], [0xfd50, 0xfd8f], [0xfd92, 0xfdc7], [0xfdf0, 0xfdfc],\n [0xfe70, 0xfe74], [0xfe76, 0xfefc], [0x10800, 0x10805], [0x10808, 0x10808],\n [0x1080a, 0x10835], [0x10837, 0x10838], [0x1083c, 0x1083c], [0x1083f, 0x10855],\n [0x10857, 0x1085f], [0x10900, 0x1091b], [0x10920, 0x10939], [0x1093f, 0x1093f],\n [0x10980, 0x109b7], [0x109be, 0x109bf], [0x10a00, 0x10a00], [0x10a10, 0x10a13],\n [0x10a15, 0x10a17], [0x10a19, 0x10a33], [0x10a40, 0x10a47], [0x10a50, 0x10a58],\n [0x10a60, 0x10a7f], [0x10b00, 0x10b35], [0x10b40, 0x10b55], [0x10b58, 0x10b72],\n [0x10b78, 0x10b7f], [0x10c00, 0x10c48], [0x1ee00, 0x1ee03], [0x1ee05, 0x1ee1f],\n [0x1ee21, 0x1ee22], [0x1ee24, 0x1ee24], [0x1ee27, 0x1ee27], [0x1ee29, 0x1ee32],\n [0x1ee34, 0x1ee37], [0x1ee39, 0x1ee39], [0x1ee3b, 0x1ee3b], [0x1ee42, 0x1ee42],\n [0x1ee47, 0x1ee47], [0x1ee49, 0x1ee49], [0x1ee4b, 0x1ee4b], [0x1ee4d, 0x1ee4f],\n [0x1ee51, 0x1ee52], [0x1ee54, 0x1ee54], [0x1ee57, 0x1ee57], [0x1ee59, 0x1ee59],\n [0x1ee5b, 0x1ee5b], [0x1ee5d, 0x1ee5d], [0x1ee5f, 0x1ee5f], [0x1ee61, 0x1ee62],\n [0x1ee64, 0x1ee64], [0x1ee67, 0x1ee6a], [0x1ee6c, 0x1ee72], [0x1ee74, 0x1ee77],\n [0x1ee79, 0x1ee7c], [0x1ee7e, 0x1ee7e], [0x1ee80, 0x1ee89], [0x1ee8b, 0x1ee9b],\n [0x1eea1, 0x1eea3], [0x1eea5, 0x1eea9], [0x1eeab, 0x1eebb], [0x10fffd, 0x10fffd]];\n\n function isStrongRTLChar(charCode) {\n for (var i = 0; i < strongRTLRanges.length; i++) {\n var currentRange = strongRTLRanges[i];\n if (charCode >= currentRange[0] && charCode <= currentRange[1]) {\n return true;\n }\n }\n\n return false;\n }\n\n function determineBidi(cueDiv) {\n var nodeStack = [],\n text = \"\",\n charCode;\n\n if (!cueDiv || !cueDiv.childNodes) {\n return \"ltr\";\n }\n\n function pushNodes(nodeStack, node) {\n for (var i = node.childNodes.length - 1; i >= 0; i--) {\n nodeStack.push(node.childNodes[i]);\n }\n }\n\n function nextTextNode(nodeStack) {\n if (!nodeStack || !nodeStack.length) {\n return null;\n }\n\n var node = nodeStack.pop(),\n text = node.textContent || node.innerText;\n if (text) {\n // TODO: This should match all unicode type B characters (paragraph\n // separator characters). See issue #115.\n var m = text.match(/^.*(\\n|\\r)/);\n if (m) {\n nodeStack.length = 0;\n return m[0];\n }\n return text;\n }\n if (node.tagName === \"ruby\") {\n return nextTextNode(nodeStack);\n }\n if (node.childNodes) {\n pushNodes(nodeStack, node);\n return nextTextNode(nodeStack);\n }\n }\n\n pushNodes(nodeStack, cueDiv);\n while ((text = nextTextNode(nodeStack))) {\n for (var i = 0; i < text.length; i++) {\n charCode = text.charCodeAt(i);\n if (isStrongRTLChar(charCode)) {\n return \"rtl\";\n }\n }\n }\n return \"ltr\";\n }\n\n function computeLinePos(cue) {\n if (typeof cue.line === \"number\" &&\n (cue.snapToLines || (cue.line >= 0 && cue.line <= 100))) {\n return cue.line;\n }\n if (!cue.track || !cue.track.textTrackList ||\n !cue.track.textTrackList.mediaElement) {\n return -1;\n }\n var track = cue.track,\n trackList = track.textTrackList,\n count = 0;\n for (var i = 0; i < trackList.length && trackList[i] !== track; i++) {\n if (trackList[i].mode === \"showing\") {\n count++;\n }\n }\n return ++count * -1;\n }\n\n function StyleBox() {\n }\n\n // Apply styles to a div. If there is no div passed then it defaults to the\n // div on 'this'.\n StyleBox.prototype.applyStyles = function(styles, div) {\n div = div || this.div;\n for (var prop in styles) {\n if (styles.hasOwnProperty(prop)) {\n div.style[prop] = styles[prop];\n }\n }\n };\n\n StyleBox.prototype.formatStyle = function(val, unit) {\n return val === 0 ? 0 : val + unit;\n };\n\n // Constructs the computed display state of the cue (a div). Places the div\n // into the overlay which should be a block level element (usually a div).\n function CueStyleBox(window, cue, styleOptions) {\n var isIE8 = (typeof navigator !== \"undefined\") &&\n (/MSIE\\s8\\.0/).test(navigator.userAgent);\n var color = \"rgba(255, 255, 255, 1)\";\n var backgroundColor = \"rgba(0, 0, 0, 0.8)\";\n var textShadow = \"\";\n\n if(typeof WebVTTSet !== \"undefined\") {\n color = WebVTTSet.fontSet;\n backgroundColor = WebVTTSet.backgroundSet;\n textShadow = WebVTTSet.edgeSet;\n }\n\n if (isIE8) {\n color = \"rgb(255, 255, 255)\";\n backgroundColor = \"rgb(0, 0, 0)\";\n }\n\n StyleBox.call(this);\n this.cue = cue;\n\n // Parse our cue's text into a DOM tree rooted at 'cueDiv'. This div will\n // have inline positioning and will function as the cue background box.\n this.cueDiv = parseContent(window, cue.text);\n var styles = {\n color: color,\n backgroundColor: backgroundColor,\n textShadow: textShadow,\n position: \"relative\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"inline\"\n };\n\n if (!isIE8) {\n styles.writingMode = cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\";\n styles.unicodeBidi = \"plaintext\";\n }\n this.applyStyles(styles, this.cueDiv);\n\n // Create an absolutely positioned div that will be used to position the cue\n // div. Note, all WebVTT cue-setting alignments are equivalent to the CSS\n // mirrors of them except \"middle\" which is \"center\" in CSS.\n this.div = window.document.createElement(\"div\");\n styles = {\n textAlign: cue.align === \"middle\" ? \"center\" : cue.align,\n font: styleOptions.font,\n whiteSpace: \"pre-line\",\n position: \"absolute\"\n };\n\n if (!isIE8) {\n styles.direction = determineBidi(this.cueDiv);\n styles.writingMode = cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\".\n stylesunicodeBidi = \"plaintext\";\n }\n\n this.applyStyles(styles);\n\n this.div.appendChild(this.cueDiv);\n\n // Calculate the distance from the reference edge of the viewport to the text\n // position of the cue box. The reference edge will be resolved later when\n // the box orientation styles are applied.\n var textPos = 0;\n switch (cue.positionAlign) {\n case \"start\":\n textPos = cue.position;\n break;\n case \"middle\":\n textPos = cue.position - (cue.size / 2);\n break;\n case \"end\":\n textPos = cue.position - cue.size;\n break;\n }\n\n // Horizontal box orientation; textPos is the distance from the left edge of the\n // area to the left edge of the box and cue.size is the distance extending to\n // the right from there.\n if (cue.vertical === \"\") {\n this.applyStyles({\n left: this.formatStyle(textPos, \"%\"),\n width: this.formatStyle(cue.size, \"%\")\n });\n // Vertical box orientation; textPos is the distance from the top edge of the\n // area to the top edge of the box and cue.size is the height extending\n // downwards from there.\n } else {\n this.applyStyles({\n top: this.formatStyle(textPos, \"%\"),\n height: this.formatStyle(cue.size, \"%\")\n });\n }\n\n this.move = function(box) {\n this.applyStyles({\n top: this.formatStyle(box.top, \"px\"),\n bottom: this.formatStyle(box.bottom, \"px\"),\n left: this.formatStyle(box.left, \"px\"),\n right: this.formatStyle(box.right, \"px\"),\n height: this.formatStyle(box.height, \"px\"),\n width: this.formatStyle(box.width, \"px\")\n });\n };\n }\n CueStyleBox.prototype = _objCreate(StyleBox.prototype);\n CueStyleBox.prototype.constructor = CueStyleBox;\n\n // Represents the co-ordinates of an Element in a way that we can easily\n // compute things with such as if it overlaps or intersects with another Element.\n // Can initialize it with either a StyleBox or another BoxPosition.\n function BoxPosition(obj) {\n var isIE8 = (typeof navigator !== \"undefined\") &&\n (/MSIE\\s8\\.0/).test(navigator.userAgent);\n\n // Either a BoxPosition was passed in and we need to copy it, or a StyleBox\n // was passed in and we need to copy the results of 'getBoundingClientRect'\n // as the object returned is readonly. All co-ordinate values are in reference\n // to the viewport origin (top left).\n var lh, height, width, top;\n if (obj.div) {\n height = obj.div.offsetHeight;\n width = obj.div.offsetWidth;\n top = obj.div.offsetTop;\n\n var rects = (rects = obj.div.childNodes) && (rects = rects[0]) &&\n rects.getClientRects && rects.getClientRects();\n obj = obj.div.getBoundingClientRect();\n // In certain cases the outter div will be slightly larger then the sum of\n // the inner div's lines. This could be due to bold text, etc, on some platforms.\n // In this case we should get the average line height and use that. This will\n // result in the desired behaviour.\n lh = rects ? Math.max((rects[0] && rects[0].height) || 0, obj.height / rects.length)\n : 0;\n\n }\n this.left = obj.left;\n this.right = obj.right;\n this.top = obj.top || top;\n this.height = obj.height || height;\n this.bottom = obj.bottom || (top + (obj.height || height));\n this.width = obj.width || width;\n this.lineHeight = lh !== undefined ? lh : obj.lineHeight;\n\n if (isIE8 && !this.lineHeight) {\n this.lineHeight = 13;\n }\n }\n\n // Move the box along a particular axis. Optionally pass in an amount to move\n // the box. If no amount is passed then the default is the line height of the\n // box.\n BoxPosition.prototype.move = function(axis, toMove) {\n toMove = toMove !== undefined ? toMove : this.lineHeight;\n switch (axis) {\n case \"+x\":\n this.left += toMove;\n this.right += toMove;\n break;\n case \"-x\":\n this.left -= toMove;\n this.right -= toMove;\n break;\n case \"+y\":\n this.top += toMove;\n this.bottom += toMove;\n break;\n case \"-y\":\n this.top -= toMove;\n this.bottom -= toMove;\n break;\n }\n };\n\n // Check if this box overlaps another box, b2.\n BoxPosition.prototype.overlaps = function(b2) {\n return this.left < b2.right &&\n this.right > b2.left &&\n this.top < b2.bottom &&\n this.bottom > b2.top;\n };\n\n // Check if this box overlaps any other boxes in boxes.\n BoxPosition.prototype.overlapsAny = function(boxes) {\n for (var i = 0; i < boxes.length; i++) {\n if (this.overlaps(boxes[i])) {\n return true;\n }\n }\n return false;\n };\n\n // Check if this box is within another box.\n BoxPosition.prototype.within = function(container) {\n return this.top >= container.top &&\n this.bottom <= container.bottom &&\n this.left >= container.left &&\n this.right <= container.right;\n };\n\n // Check if this box is entirely within the container or it is overlapping\n // on the edge opposite of the axis direction passed. For example, if \"+x\" is\n // passed and the box is overlapping on the left edge of the container, then\n // return true.\n BoxPosition.prototype.overlapsOppositeAxis = function(container, axis) {\n switch (axis) {\n case \"+x\":\n return this.left < container.left;\n case \"-x\":\n return this.right > container.right;\n case \"+y\":\n return this.top < container.top;\n case \"-y\":\n return this.bottom > container.bottom;\n }\n };\n\n // Find the percentage of the area that this box is overlapping with another\n // box.\n BoxPosition.prototype.intersectPercentage = function(b2) {\n var x = Math.max(0, Math.min(this.right, b2.right) - Math.max(this.left, b2.left)),\n y = Math.max(0, Math.min(this.bottom, b2.bottom) - Math.max(this.top, b2.top)),\n intersectArea = x * y;\n return intersectArea / (this.height * this.width);\n };\n\n // Convert the positions from this box to CSS compatible positions using\n // the reference container's positions. This has to be done because this\n // box's positions are in reference to the viewport origin, whereas, CSS\n // values are in referecne to their respective edges.\n BoxPosition.prototype.toCSSCompatValues = function(reference) {\n return {\n top: this.top - reference.top,\n bottom: reference.bottom - this.bottom,\n left: this.left - reference.left,\n right: reference.right - this.right,\n height: this.height,\n width: this.width\n };\n };\n\n // Get an object that represents the box's position without anything extra.\n // Can pass a StyleBox, HTMLElement, or another BoxPositon.\n BoxPosition.getSimpleBoxPosition = function(obj) {\n var height = obj.div ? obj.div.offsetHeight : obj.tagName ? obj.offsetHeight : 0;\n var width = obj.div ? obj.div.offsetWidth : obj.tagName ? obj.offsetWidth : 0;\n var top = obj.div ? obj.div.offsetTop : obj.tagName ? obj.offsetTop : 0;\n\n obj = obj.div ? obj.div.getBoundingClientRect() :\n obj.tagName ? obj.getBoundingClientRect() : obj;\n var ret = {\n left: obj.left,\n right: obj.right,\n top: obj.top || top,\n height: obj.height || height,\n bottom: obj.bottom || (top + (obj.height || height)),\n width: obj.width || width\n };\n return ret;\n };\n\n // Move a StyleBox to its specified, or next best, position. The containerBox\n // is the box that contains the StyleBox, such as a div. boxPositions are\n // a list of other boxes that the styleBox can't overlap with.\n function moveBoxToLinePosition(window, styleBox, containerBox, boxPositions) {\n\n // Find the best position for a cue box, b, on the video. The axis parameter\n // is a list of axis, the order of which, it will move the box along. For example:\n // Passing [\"+x\", \"-x\"] will move the box first along the x axis in the positive\n // direction. If it doesn't find a good position for it there it will then move\n // it along the x axis in the negative direction.\n function findBestPosition(b, axis) {\n var bestPosition,\n specifiedPosition = new BoxPosition(b),\n percentage = 1; // Highest possible so the first thing we get is better.\n\n for (var i = 0; i < axis.length; i++) {\n while (b.overlapsOppositeAxis(containerBox, axis[i]) ||\n (b.within(containerBox) && b.overlapsAny(boxPositions))) {\n b.move(axis[i]);\n }\n // We found a spot where we aren't overlapping anything. This is our\n // best position.\n if (b.within(containerBox)) {\n return b;\n }\n var p = b.intersectPercentage(containerBox);\n // If we're outside the container box less then we were on our last try\n // then remember this position as the best position.\n if (percentage > p) {\n bestPosition = new BoxPosition(b);\n percentage = p;\n }\n // Reset the box position to the specified position.\n b = new BoxPosition(specifiedPosition);\n }\n return bestPosition || specifiedPosition;\n }\n\n var boxPosition = new BoxPosition(styleBox),\n cue = styleBox.cue,\n linePos = computeLinePos(cue),\n axis = [];\n\n // If we have a line number to align the cue to.\n if (cue.snapToLines) {\n var size;\n switch (cue.vertical) {\n case \"\":\n axis = [ \"+y\", \"-y\" ];\n size = \"height\";\n break;\n case \"rl\":\n axis = [ \"+x\", \"-x\" ];\n size = \"width\";\n break;\n case \"lr\":\n axis = [ \"-x\", \"+x\" ];\n size = \"width\";\n break;\n }\n\n var step = boxPosition.lineHeight,\n position = step * Math.round(linePos),\n maxPosition = containerBox[size] + step,\n initialAxis = axis[0];\n\n // If the specified intial position is greater then the max position then\n // clamp the box to the amount of steps it would take for the box to\n // reach the max position.\n if (Math.abs(position) > maxPosition) {\n position = position < 0 ? -1 : 1;\n position *= Math.ceil(maxPosition / step) * step;\n }\n\n // If computed line position returns negative then line numbers are\n // relative to the bottom of the video instead of the top. Therefore, we\n // need to increase our initial position by the length or width of the\n // video, depending on the writing direction, and reverse our axis directions.\n if (linePos < 0) {\n position += cue.vertical === \"\" ? containerBox.height : containerBox.width;\n axis = axis.reverse();\n }\n\n // Move the box to the specified position. This may not be its best\n // position.\n boxPosition.move(initialAxis, position);\n\n } else {\n // If we have a percentage line value for the cue.\n var calculatedPercentage = (boxPosition.lineHeight / containerBox.height) * 100;\n\n switch (cue.lineAlign) {\n case \"middle\":\n linePos -= (calculatedPercentage / 2);\n break;\n case \"end\":\n linePos -= calculatedPercentage;\n break;\n }\n\n // Apply initial line position to the cue box.\n switch (cue.vertical) {\n case \"\":\n styleBox.applyStyles({\n top: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"rl\":\n styleBox.applyStyles({\n left: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"lr\":\n styleBox.applyStyles({\n right: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n }\n\n axis = [ \"+y\", \"-x\", \"+x\", \"-y\" ];\n\n // Get the box position again after we've applied the specified positioning\n // to it.\n boxPosition = new BoxPosition(styleBox);\n }\n\n var bestPosition = findBestPosition(boxPosition, axis);\n styleBox.move(bestPosition.toCSSCompatValues(containerBox));\n }\n\n function WebVTT() {\n // Nothing\n }\n\n // Helper to allow strings to be decoded instead of the default binary utf8 data.\n WebVTT.StringDecoder = function() {\n return {\n decode: function(data) {\n if (!data) {\n return \"\";\n }\n if (typeof data !== \"string\") {\n throw new Error(\"Error - expected string data.\");\n }\n return decodeURIComponent(encodeURIComponent(data));\n }\n };\n };\n\n WebVTT.convertCueToDOMTree = function(window, cuetext) {\n if (!window || !cuetext) {\n return null;\n }\n return parseContent(window, cuetext);\n };\n\n var FONT_SIZE_PERCENT = 0.05;\n var FONT_STYLE = \"sans-serif\";\n var CUE_BACKGROUND_PADDING = \"1.5%\";\n\n // Runs the processing model over the cues and regions passed to it.\n // @param overlay A block level element (usually a div) that the computed cues\n // and regions will be placed into.\n WebVTT.processCues = function(window, cues, overlay) {\n if (!window || !cues || !overlay) {\n return null;\n }\n\n // Remove all previous children.\n while (overlay.firstChild) {\n overlay.removeChild(overlay.firstChild);\n }\n\n var paddedOverlay = window.document.createElement(\"div\");\n paddedOverlay.style.position = \"absolute\";\n paddedOverlay.style.left = \"0\";\n paddedOverlay.style.right = \"0\";\n paddedOverlay.style.top = \"0\";\n paddedOverlay.style.bottom = \"0\";\n paddedOverlay.style.margin = CUE_BACKGROUND_PADDING;\n overlay.appendChild(paddedOverlay);\n\n // Determine if we need to compute the display states of the cues. This could\n // be the case if a cue's state has been changed since the last computation or\n // if it has not been computed yet.\n function shouldCompute(cues) {\n for (var i = 0; i < cues.length; i++) {\n if (cues[i].hasBeenReset || !cues[i].displayState) {\n return true;\n }\n }\n return false;\n }\n\n // We don't need to recompute the cues' display states. Just reuse them.\n if (!shouldCompute(cues)) {\n for (var i = 0; i < cues.length; i++) {\n paddedOverlay.appendChild(cues[i].displayState);\n }\n return;\n }\n\n var boxPositions = [],\n containerBox = BoxPosition.getSimpleBoxPosition(paddedOverlay),\n fontSize = Math.round(containerBox.height * FONT_SIZE_PERCENT * 100) / 100;\n var styleOptions = {\n font: (fontSize * fontScale) + \"px \" + FONT_STYLE\n };\n\n (function() {\n var styleBox, cue;\n\n for (var i = 0; i < cues.length; i++) {\n cue = cues[i];\n\n // Compute the intial position and styles of the cue div.\n styleBox = new CueStyleBox(window, cue, styleOptions);\n paddedOverlay.appendChild(styleBox.div);\n\n // Move the cue div to it's correct line position.\n moveBoxToLinePosition(window, styleBox, containerBox, boxPositions);\n\n // Remember the computed div so that we don't have to recompute it later\n // if we don't have too.\n cue.displayState = styleBox.div;\n\n boxPositions.push(BoxPosition.getSimpleBoxPosition(styleBox));\n }\n })();\n };\n\n WebVTT.Parser = function(window, decoder, VTTCue) {\n this.window = window;\n this.state = \"INITIAL\";\n this.buffer = \"\";\n this.decoder = decoder || new TextDecoder(\"utf8\");\n this.regionList = [];\n this.VTTCue = VTTCue\n };\n\n WebVTT.Parser.prototype = {\n // If the error is a ParsingError then report it to the consumer if\n // possible. If it's not a ParsingError then throw it like normal.\n reportOrThrowError: function(e) {\n if (e instanceof ParsingError) {\n this.onparsingerror && this.onparsingerror(e);\n } else {\n throw e;\n }\n },\n parse: function (data) {\n var self = this;\n\n // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n if (data) {\n // Try to decode the data that we received.\n self.buffer += self.decoder.decode(data, {stream: true});\n }\n\n function collectNextLine() {\n var buffer = self.buffer;\n var pos = 0;\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n var line = buffer.substr(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n self.buffer = buffer.substr(pos);\n return line;\n }\n\n // 3.4 WebVTT region and WebVTT region settings syntax\n function parseRegion(input) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"id\":\n settings.set(k, v);\n break;\n case \"width\":\n settings.percent(k, v);\n break;\n case \"lines\":\n settings.integer(k, v);\n break;\n case \"regionanchor\":\n case \"viewportanchor\":\n var xy = v.split(',');\n if (xy.length !== 2) {\n break;\n }\n // We have to make sure both x and y parse, so use a temporary\n // settings object here.\n var anchor = new Settings();\n anchor.percent(\"x\", xy[0]);\n anchor.percent(\"y\", xy[1]);\n if (!anchor.has(\"x\") || !anchor.has(\"y\")) {\n break;\n }\n settings.set(k + \"X\", anchor.get(\"x\"));\n settings.set(k + \"Y\", anchor.get(\"y\"));\n break;\n case \"scroll\":\n settings.alt(k, v, [\"up\"]);\n break;\n }\n }, /=/, /\\s/);\n\n // Create the region, using default values for any values that were not\n // specified.\n if (settings.has(\"id\")) {\n var region = new self.window.VTTRegion();\n region.width = settings.get(\"width\", 100);\n region.lines = settings.get(\"lines\", 3);\n region.regionAnchorX = settings.get(\"regionanchorX\", 0);\n region.regionAnchorY = settings.get(\"regionanchorY\", 100);\n region.viewportAnchorX = settings.get(\"viewportanchorX\", 0);\n region.viewportAnchorY = settings.get(\"viewportanchorY\", 100);\n region.scroll = settings.get(\"scroll\", \"\");\n // Register the region.\n self.onregion && self.onregion(region);\n // Remember the VTTRegion for later in case we parse any VTTCues that\n // reference it.\n self.regionList.push({\n id: settings.get(\"id\"),\n region: region\n });\n }\n }\n\n // draft-pantos-http-live-streaming-20\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.5\n // 3.5 WebVTT\n function parseTimestampMap(input) {\n var settings = new Settings();\n\n parseOptions(input, function(k, v) {\n switch (k) {\n case \"MPEGT\":\n settings.integer(k + 'S', v);\n break;\n case \"LOCA\":\n settings.set(k + 'L', parseTimeStamp(v));\n break;\n }\n }, /[^\\d]:/, /,/);\n\n self.ontimestampmap && self.ontimestampmap({\n \"MPEGTS\": settings.get(\"MPEGTS\"),\n \"LOCAL\": settings.get(\"LOCAL\")\n });\n }\n\n // 3.2 WebVTT metadata header syntax\n function parseHeader(input) {\n if (input.match(/X-TIMESTAMP-MAP/)) {\n // This line contains HLS X-TIMESTAMP-MAP metadata\n parseOptions(input, function(k, v) {\n switch (k) {\n case \"X-TIMESTAMP-MAP\":\n parseTimestampMap(v);\n break;\n }\n }, /=/);\n } else {\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"Region\":\n // 3.3 WebVTT region metadata header syntax\n parseRegion(v);\n break;\n }\n }, /:/);\n }\n }\n\n // 5.1 WebVTT file parsing.\n\n function fail(e) {\n\n self.reportOrThrowError(e);\n\n // If we are currently parsing a cue, report what we have.\n if (self.state === \"CUETEXT\" && self.cue && self.oncue) {\n self.oncue(self.cue);\n }\n self.cue = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n self.state = self.state === \"INITIAL\" ? \"BADWEBVTT\" : \"BADCUE\";\n\n }\n\n var line;\n\n if (self.state === \"INITIAL\") {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n line = collectNextLine();\n\n var m = line.match(/^WEBVTT([ \\t].*)?$/);\n if (!m || !m[0]) {\n fail(new ParsingError(ParsingError.Errors.BadSignature))\n return\n }\n\n self.state = \"HEADER\";\n }\n\n var alreadyCollectedLine = false;\n\n var lineparse = function() {\n // We can't parse a line until we have the full line.\n if (!self.buffer || !/\\r\\n|\\n/.test(self.buffer)) {\n self.flush()\n return\n }\n\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n\n switch (self.state) {\n case \"HEADER\":\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n self.state = \"ID\";\n }\n linebyline();\n break;\n case \"NOTE\":\n // Ignore NOTE blocks.\n if (!line) {\n self.state = \"ID\";\n }\n linebyline();\n break;\n case \"ID\":\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n self.state = \"NOTE\";\n linebyline();\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) {\n linebyline();\n break;\n }\n self.cue = new (self.VTTCue || self.window.VTTCue)(0, 0, \"\");\n self.state = \"CUE\";\n // 30-39 - Check if self line contains an optional identifier or timing data.\n if (line.indexOf(\"-->\") === -1) {\n self.cue.id = line;\n linebyline();\n break;\n }\n // Process line as start of a cue.\n /*falls through*/\n case \"CUE\":\n // 40 - Collect cue timings and settings.\n\n parseCue(line, self.cue, self.regionList, function successCb() {\n\n self.state = \"CUETEXT\";\n\n linebyline();\n\n }, function errCb(err) {\n\n self.reportOrThrowError(err);\n\n // In case of an error ignore rest of the cue.\n self.cue = null;\n self.state = \"BADCUE\";\n\n linebyline();\n\n });\n\n break;\n case \"CUETEXT\":\n var hasSubstring = line.indexOf(\"-->\") !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n self.oncue && self.oncue(self.cue);\n self.cue = null;\n self.state = \"ID\";\n linebyline();\n break;\n }\n if (self.cue.text) {\n self.cue.text += \"\\n\";\n }\n self.cue.text += line;\n linebyline();\n break;\n case \"BADCUE\":\n // BADCUE\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n self.state = \"ID\";\n }\n linebyline();\n break;\n }\n };\n\n var STACK_LIMIT = 1000;\n\n var count = 0\n\n function unwrapStack(fn) {\n return function() {\n count++\n if (count < STACK_LIMIT) return fn()\n setTimeout(function() {\n count = 0\n fn()\n })\n }\n }\n\n var linebyline = unwrapStack(lineparse)\n\n linebyline();\n\n return this;\n },\n flush: function () {\n var self = this;\n try {\n // Finish decoding the stream.\n self.buffer += self.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (self.cue || self.state === \"HEADER\") {\n self.buffer += \"\\n\\n\";\n self.parse();\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (self.state === \"INITIAL\") {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n } catch(e) {\n self.reportOrThrowError(e);\n }\n self.onflush && self.onflush();\n return this;\n }\n };\n\n global.WebVTT = WebVTT;\n\n}(this));\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// If we're in Node.js then require VTTCue so we can extend it, otherwise assume\n// VTTCue is on the global.\nif (typeof module !== \"undefined\" && module.exports) {\n this.VTTCue = this.VTTCue || require(\"./vttcue\").VTTCue;\n}\n\n// Extend VTTCue with methods to convert to JSON, from JSON, and construct a\n// VTTCue from an options object. The primary purpose of this is for use in the\n// vtt.js test suite (for testing only properties that we care about). It's also\n// useful if you need to work with VTTCues in JSON format.\n(function(root) {\n\n root.VTTCue.prototype.toJSON = function() {\n var cue = {},\n self = this;\n // Filter out getCueAsHTML as it's a function and hasBeenReset and displayState as\n // they're only used when running the processing model algorithm.\n Object.keys(this).forEach(function(key) {\n if (key !== \"getCueAsHTML\" && key !== \"hasBeenReset\" && key !== \"displayState\") {\n cue[key] = self[key];\n }\n });\n return cue;\n };\n\n root.VTTCue.create = function(options) {\n if (!options.hasOwnProperty(\"startTime\") || !options.hasOwnProperty(\"endTime\") ||\n !options.hasOwnProperty(\"text\")) {\n throw new Error(\"You must at least have start time, end time, and text.\");\n }\n var cue = new root.VTTCue(options.startTime, options.endTime, options.text);\n for (var key in options) {\n if (cue.hasOwnProperty(key)) {\n cue[key] = options[key];\n }\n }\n return cue;\n };\n\n root.VTTCue.fromJSON = function(json) {\n return this.create(JSON.parse(json));\n };\n\n}(this));\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function(root) {\n\n var autoKeyword = \"auto\";\n var directionSetting = {\n \"\": true,\n \"lr\": true,\n \"rl\": true\n };\n var alignSetting = {\n \"start\": true,\n \"middle\": true,\n \"end\": true,\n \"left\": true,\n \"right\": true\n };\n\n function findDirectionSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var dir = directionSetting[value.toLowerCase()];\n return dir ? value.toLowerCase() : false;\n }\n\n function findAlignSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var align = alignSetting[value.toLowerCase()];\n return align ? value.toLowerCase() : false;\n }\n\n function extend(obj) {\n var i = 1;\n for (; i < arguments.length; i++) {\n var cobj = arguments[i];\n for (var p in cobj) {\n obj[p] = cobj[p];\n }\n }\n\n return obj;\n }\n\n function VTTCue(startTime, endTime, text) {\n var cue = this;\n var isIE8 = (/MSIE\\s8\\.0/).test(navigator.userAgent);\n var baseObj = {};\n\n if (isIE8) {\n cue = document.createElement('custom');\n } else {\n baseObj.enumerable = true;\n }\n\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n cue.hasBeenReset = false;\n\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = \"\";\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = \"\";\n var _snapToLines = true;\n var _line = \"auto\";\n var _lineAlign = \"start\";\n var _position = 50;\n var _positionAlign = \"middle\";\n var _size = 50;\n var _align = \"middle\";\n\n Object.defineProperty(cue,\n \"id\", extend({}, baseObj, {\n get: function() {\n return _id;\n },\n set: function(value) {\n _id = \"\" + value;\n }\n }));\n\n Object.defineProperty(cue,\n \"pauseOnExit\", extend({}, baseObj, {\n get: function() {\n return _pauseOnExit;\n },\n set: function(value) {\n _pauseOnExit = !!value;\n }\n }));\n\n Object.defineProperty(cue,\n \"startTime\", extend({}, baseObj, {\n get: function() {\n return _startTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Start time must be set to a number.\");\n }\n _startTime = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"endTime\", extend({}, baseObj, {\n get: function() {\n return _endTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"End time must be set to a number.\");\n }\n _endTime = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"text\", extend({}, baseObj, {\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = \"\" + value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"region\", extend({}, baseObj, {\n get: function() {\n return _region;\n },\n set: function(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"vertical\", extend({}, baseObj, {\n get: function() {\n return _vertical;\n },\n set: function(value) {\n var setting = findDirectionSetting(value);\n // Have to check for false because the setting an be an empty string.\n if (setting === false) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _vertical = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"snapToLines\", extend({}, baseObj, {\n get: function() {\n return _snapToLines;\n },\n set: function(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"line\", extend({}, baseObj, {\n get: function() {\n return _line;\n },\n set: function(value) {\n if (typeof value !== \"number\" && value !== autoKeyword) {\n throw new SyntaxError(\"An invalid number or illegal string was specified.\");\n }\n _line = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"lineAlign\", extend({}, baseObj, {\n get: function() {\n return _lineAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"position\", extend({}, baseObj, {\n get: function() {\n return _position;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Position must be between 0 and 100.\");\n }\n _position = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"positionAlign\", extend({}, baseObj, {\n get: function() {\n return _positionAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"size\", extend({}, baseObj, {\n get: function() {\n return _size;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Size must be between 0 and 100.\");\n }\n _size = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"align\", extend({}, baseObj, {\n get: function() {\n return _align;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _align = setting;\n this.hasBeenReset = true;\n }\n }));\n\n /**\n * Other <track> spec defined properties\n */\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n cue.displayState = undefined;\n\n if (isIE8) {\n return cue;\n }\n }\n\n /**\n * VTTCue methods\n */\n\n VTTCue.prototype.getCueAsHTML = function() {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n return WebVTT.convertCueToDOMTree(window, this.text);\n };\n\n root.VTTCue = root.VTTCue || VTTCue;\n}(this));\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// If we're in Node.js then require VTTRegion so we can extend it, otherwise assume\n// VTTRegion is on the global.\nif (typeof module !== \"undefined\" && module.exports) {\n this.VTTRegion = require(\"./vttregion\").VTTRegion;\n}\n\n// Extend VTTRegion with methods to convert to JSON, from JSON, and construct a\n// VTTRegion from an options object. The primary purpose of this is for use in the\n// vtt.js test suite. It's also useful if you need to work with VTTRegions in\n// JSON format.\n(function(root) {\n\n root.VTTRegion.create = function(options) {\n var region = new root.VTTRegion();\n for (var key in options) {\n if (region.hasOwnProperty(key)) {\n region[key] = options[key];\n }\n }\n return region;\n };\n\n root.VTTRegion.fromJSON = function(json) {\n return this.create(JSON.parse(json));\n };\n\n}(this));\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function(root) {\n\n var scrollSetting = {\n \"\": true,\n \"up\": true\n };\n\n function findScrollSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var scroll = scrollSetting[value.toLowerCase()];\n return scroll ? value.toLowerCase() : false;\n }\n\n function isValidPercentValue(value) {\n return typeof value === \"number\" && (value >= 0 && value <= 100);\n }\n\n // VTTRegion shim http://dev.w3.org/html5/webvtt/#vttregion-interface\n function VTTRegion() {\n var _width = 100;\n var _lines = 3;\n var _regionAnchorX = 0;\n var _regionAnchorY = 100;\n var _viewportAnchorX = 0;\n var _viewportAnchorY = 100;\n var _scroll = \"\";\n\n Object.defineProperties(this, {\n \"width\": {\n enumerable: true,\n get: function() {\n return _width;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"Width must be between 0 and 100.\");\n }\n _width = value;\n }\n },\n \"lines\": {\n enumerable: true,\n get: function() {\n return _lines;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Lines must be set to a number.\");\n }\n _lines = value;\n }\n },\n \"regionAnchorY\": {\n enumerable: true,\n get: function() {\n return _regionAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorX must be between 0 and 100.\");\n }\n _regionAnchorY = value;\n }\n },\n \"regionAnchorX\": {\n enumerable: true,\n get: function() {\n return _regionAnchorX;\n },\n set: function(value) {\n if(!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorY must be between 0 and 100.\");\n }\n _regionAnchorX = value;\n }\n },\n \"viewportAnchorY\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorY must be between 0 and 100.\");\n }\n _viewportAnchorY = value;\n }\n },\n \"viewportAnchorX\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorX;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorX must be between 0 and 100.\");\n }\n _viewportAnchorX = value;\n }\n },\n \"scroll\": {\n enumerable: true,\n get: function() {\n return _scroll;\n },\n set: function(value) {\n var setting = findScrollSetting(value);\n // Have to check for false as an empty string is a legal value.\n if (setting === false) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _scroll = setting;\n }\n }\n });\n }\n\n root.VTTRegion = root.VTTRegion || VTTRegion;\n}(this));\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\nmodule.exports = _toArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl + \"../../\";","// Copyright (C) 2017-2023 Smart code 203358507\n\nif (typeof process.env.SENTRY_DSN === 'string') {\n const Sentry = require('@sentry/browser');\n Sentry.init({ dsn: process.env.SENTRY_DSN });\n}\n\nconst Bowser = require('bowser');\nconst browser = Bowser.parse(window.navigator?.userAgent || '');\nif (browser?.platform?.type === 'desktop') {\n document.querySelector('meta[name=\"viewport\"]')?.setAttribute('content', '');\n}\n\nconst React = require('react');\nconst ReactDOM = require('react-dom/client');\nconst i18n = require('i18next');\nconst { initReactI18next } = require('react-i18next');\nconst stremioTranslations = require('stremio-translations');\nconst App = require('./App');\n\nconst translations = Object.fromEntries(Object.entries(stremioTranslations()).map(([key, value]) => [key, {\n translation: value\n}]));\n\ni18n\n .use(initReactI18next)\n .init({\n resources: translations,\n lng: 'en-US',\n fallbackLng: 'en-US',\n interpolation: {\n escapeValue: false\n }\n });\n\nconst root = ReactDOM.createRoot(document.getElementById('app'));\nroot.render(<App />);\n\nif (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n window.addEventListener('load', () => {\n navigator.serviceWorker.register('service-worker.js')\n .catch((registrationError) => {\n console.error('SW registration failed: ', registrationError);\n });\n });\n}\n"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","isArray","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","fn","self","this","args","arguments","apply","err","undefined","instance","Constructor","TypeError","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","protoProps","staticProps","prototype","obj","_i","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","push","objectWithoutPropertiesLoose","source","excluded","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_typeof","constructor","arrayLikeToArray","o","minLen","n","toString","slice","name","from","test","_interopRequireDefault","_regenerator","_asyncToGenerator2","scope","handler","addEventListener","_ref2","mark","_callee","_ref","request","id","path","data","thisArg","wrap","_context","prev","abrupt","reduce","prop","sent","postMessage","response","result","t0","stop","_x","_ref3","_callee2","_context2","Math","random","onMessage","_ref4","removeEventListener","_x2","_x3","React","PropTypes","icons","Icon","forwardRef","ref","icon","createElement","assign","viewBox","paths","map","index","d","displayName","propTypes","oneOf","EventEmitter","ERROR","ChromecastSenderVideo","options","containerElement","HTMLElement","Error","chromecastTransport","device","getCastDevice","deviceNameContainerElement","document","style","display","flexDirection","alignItems","justifyContent","width","height","backgroundColor","deviceNameLabelElement","flex","maxWidth","fontSize","lineHeight","maxHeight","textAlign","color","innerText","friendlyName","appendChild","on","onMessageReceivedError","events","destroyed","observedProps","stream","loaded","paused","time","duration","buffering","buffered","audioTracks","selectedAudioTrackId","subtitlesTracks","selectedSubtitlesTrackId","subtitlesOffset","subtitlesSize","subtitlesTextColor","subtitlesBackgroundColor","subtitlesOutlineColor","volume","muted","playbackSpeed","extraSubtitlesTracks","selectedExtraSubtitlesTrackId","extraSubtitlesDelay","extraSubtitlesSize","extraSubtitlesOffset","extraSubtitlesTextColor","extraSubtitlesBackgroundColor","extraSubtitlesOutlineColor","onMessageSendError","action","emit","CHROMECAST_SENDER_VIDEO","MESSAGE_SEND_FAILED","INVALID_MESSAGE_RECEIVED","message","event","concat","onPropChanged","propName","propValue","eventName","listener","dispatch","type","hasOwnProperty","sendMessage","catch","commandName","commandArgs","removeAllListeners","off","removeChild","JSON","stringify","canPlayStream","manifest","external","commands","Hls","cloneDeep","deepFreeze","Color","getContentType","HLS_CONFIG","HTMLVideo","styleElement","sheet","insertRule","videoElement","controls","onerror","code","HTML_VIDEO","MEDIA_ERR_ABORTED","MEDIA_ERR_NETWORK","MEDIA_ERR_DECODE","MEDIA_ERR_SRC_NOT_SUPPORTED","UNKNOWN_ERROR","onError","critical","onVideoError","onended","onpause","onplay","ontimeupdate","ondurationchange","onwaiting","onseeking","onseeked","onstalled","onplaying","oncanplay","canplaythrough","onloadedmetadata","onloadeddata","onvolumechange","onratechange","textTracks","onchange","onCueChange","forEach","track","oncuechange","hls","getProp","readyState","HAVE_METADATA","currentTime","isFinite","floor","HAVE_FUTURE_DATA","start","end","freeze","String","lang","language","label","origin","embedded","mode","parseInt","cssRules","textShadow","audioTrack","playbackRate","cues","cue","snapToLines","line","command","url","autoplay","contentType","isSupported","Events","AUDIO_TRACKS_UPDATED","AUDIO_TRACK_SWITCHED","loadSource","attachMedia","src","UNSUPPORTED_STREAM","detachMedia","destroy","removeAttribute","load","pause","play","selecterdSubtitlesTrack","find","max","min","rgb","string","console","selecterdAudioTrack","split","pop","parseFloat","setProp","behaviorHints","notWebReady","canPlayType","proxyHeaders","fetch","method","resp","ok","headers","get","status","statusText","debug","enableWorker","lowLatencyMode","backBufferLength","maxBufferLength","maxMaxBufferLength","maxFragLookUpTolerance","maxBufferHole","appendErrorMaxRetry","nudgeMaxRetry","manifestLoadingTimeOut","manifestLoadingMaxRetry","IFrameVideo","iframeElement","border","allowFullscreen","allow","contentWindow","playerFrameUrl","window","onload","SUBS_SCALE_FACTOR","stremioToMPVProps","ShellVideo","ipc","shellTransport","stremioProps","send","continueFrom","avgDuration","setBackground","visible","bg","container","parentElement","background","last_time","log","windowRenderer","navigator","platform","videoOutput","mpvSeparateWindow","separateWindow","speed","aid","mute","sid","logProp","intDuration","round","embeddedProp","filter","x","title","current_time","actualId","argb","replace","selectVideoImplementation","StremioVideo","video","Video","TizenVideo","WebOsVideo","YouTubeVideo","withStreamingServer","withHTMLSubtitles","externalUrl","getCastState","cast","framework","CastState","CONNECTED","ytId","streamingServerURL","g","tizen","webOS","isBuffering","videoSpeed","currentSubTrack","currentAudioTrack","lastSub","promiseAudioTrackChange","size","offset","textColor","outlineColor","objElement","disabledSubs","refreshSubtitle","lastSubDurationDiff","now","renderSubtitle","text","subtitleTimeout","clearTimeout","subtitlesElement","hasChildNodes","lastChild","bottom","cueNode","innerHTML","padding","setTimeout","Listener","onbufferingstart","onbufferingprogress","onbufferingcomplete","oncurrentplaytime","onsubtitlechange","onstreamcompleted","webapis","avplay","setListener","position","right","left","zIndex","isPaused","getState","setSelectTrack","getCurrentTime","getDuration","totalTrackInfo","getTotalTrackInfo","textTrack","textTrackId","extra","parse","extra_info","e","textTrackLang","track_lang","trim","currentTracks","getCurrentStreamInfo","currentIndex","audioTrackId","audioTrackLang","open","setDisplayRect","innerWidth","innerHeight","setDisplayMethod","seekTo","prepare","willPause","lastKnownProp","selectedSubtitlesTrack","selectedAudioTrack","setSpeed","luna","params","fail","onSuccess","onFailure","service","runWebOS","failed","parameters","need","webOsColors","stremioColors","knownMediaId","subSize","subscribed","count_message","subscribe","cb","answered","sourceInfo","programInfo","numSubtitleTracks","subtitleTrackInfo","setSubs","numAudioTracks","audioTrackInfo","setTracks","unsubscribe","errorCode","unloadCompleted","mediaId","state","toggleSubtitles","startTime","lastSubColor","lastSubBgColor","lastSubBgOpacity","lastPlaybackSpeed","trackIndex","nextOffset","nextSubSize","nextColor","enabled","count","timer","setInterval","clearInterval","timeChangedTimeout","apiScriptElement","YT","ready","onAPIError","PlayerState","Player","videoContainerElement","playerVars","cc_load_policy","disablekb","enablejsapi","fs","iv_load_policy","loop","modestbranding","playsinline","rel","onReady","onVideoReady","onApiChange","onVideoAPIChange","onStateChange","onVideoStateChange","timeChangedIntervalId","pendingLoadArgs","YOUTUBE_VIDEO","API_LOAD_FAILED","videoError","INVALID_PARAMETER","HTML5_VIDEO","VIDEO_NOT_FOUND","VIDEO_NOT_EMBEDDABLE","loadModule","setOption","ENDED","CUED","UNSTARTED","PAUSED","PLAYING","getPlayerState","BUFFERING","getVolume","isMuted","getOption","languageCode","loadVideoById","videoId","startSeconds","cueVideoById","stopVideo","pauseVideo","playVideo","unMute","setVolume","selecterdTrack","WITH_HTML_SUBTITLES","LOAD_FAILED","WITH_STREAMING_SERVER","CONVERT_FAILED","mediaElement","VIDEO_CODEC_CONFIGS","codec","mime","aliases","AUDIO_CODEC_CONFIGS","canPlay","config","formats","videoCodecs","audioCodecs","maxAudioChannels","userAgent","AudioContext","maxChannelCount","destination","getMaxAudioChannels","array","middle","convertSrtCue","caption","s","splice","match","m","convert","includes","srt","cuelist","srt2webvtt","VTTJS","binarySearchUpperBound","parser","WebVTT","Parser","StringDecoder","errors","cuesByTime","oncue","c","endTime","onparsingerror","onflush","warn","times","sort","t1","t2","j","k","c1","c2","render","nodes","timeIndex","cuesForTime","node","convertCueToDOMTree","subtitlesParser","subtitlesRenderer","subtitlesConverter","VideoWithHTMLSubtitles","onVideoPropEvent","bind","onOtherVideoEvent","videoState","tracks","selectedTrackId","delay","renderSubtitles","videoPropValue","selectedTrack","findIndex","t","subtitles","exclusive","observeProp","magnet","createTorrent","seriesInfo","infoHash","fileIdx","announce","parsedMagnetURI","decode","sources","buildTorrentUrl","query","URLSearchParams","encodeURIComponent","body","torrent","peerSearch","guessFileIdx","season","episode","json","guessedFileIdx","hat","mediaCapabilities","convertStream","VideoWithStreamingServer","loadArgs","actionsQueue","mediaURL","canPlayStreamOptions","forceTranscoding","queryParams","set","videoCodec","append","audioCodec","shift","flushActionsQueue","probe","isFormatSupported","some","format","areStreamsSupported","streams","every","channels","r","l","toStringTag","create","default","p","VERSION","PALETTE_MATERIAL_CHROME","PALETTE_MATERIAL_500","COLOR_NAMES","getLuminance","intToRgb","rgbToInt","rgbToHsv","rgbToHsl","hslToRgb","rgbToHex","parseColor","parseColorToHsla","parseColorToHsl","parseColorToRgba","parseColorToRgb","createPicker","a","return","u","h","attachTo","showHSL","showRGB","showHEX","showAlpha","palette","paletteEditable","useAlphaInPalette","slBarSize","hueBarSize","alphaBarSize","f","b","v","NodeList","querySelector","jquery","getContext","createLinearGradient","addColorStop","setHue","fillStyle","fillRect","globalCompositeOperation","grabColor","getImageData","findColor","A","y","Number","nvl","hasAttribute","getAttribute","H","S","L","R","G","B","element","className","setupHueCanvas","hueBarHelper","huePointer","setupSlCanvas","slBarHelper","slPointer","preview","setupClipboard","setupInput","inputH","inputS","inputL","remove","inputR","inputG","inputB","inputRGBHEX","setPalette","paletteRow","setupAlphaCanvas","alphaPointer","onValueChanged","limit","clientX","getBoundingClientRect","clientY","top","toFixed","select","returnValue","execCommand","ensureArray","setAttribute","insertBefore","onPaletteColorAdd","onPaletteColorRemove","querySelectorAll","shiftKey","silent","updatePointerH","updateInputHSL","updateInputRGB","updateInputRGBHEX","updatePointerSL","F","E","updatePointerA","C","cssColorToRgb","w","T","I","P","D","oncoloradd","oncolorremove","listeners","change","coloradd","colorremove","hsl","rgbhex","all","hex","rgba","hsla","setColor","updatePalette","show","classList","hide","add","toggle","ctrl","cssHslaToHsla","cssHslToHsl","cssRgbaToRgba","cssRgbToRgb","cssColorToRgba","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","isNaN","toLowerCase","exec","pow","btoa","unescape","sourceRoot","join","require","useTranslation","Router","Core","Shell","Chromecast","DragAndDrop","KeyboardShortcuts","ServicesProvider","NotFound","ToastProvider","CONSTANTS","withCoreSuspender","ServicesToaster","DeepLinkHandler","ErrorDialog","withProtectedRoutes","routerViewsConfig","styles","RouterWithProtectedRoutes","i18n","onPathNotMatch","useCallback","services","useMemo","core","appVersion","process","shellVersion","shell","chromecast","keyboardShortcuts","dragAndDrop","useState","initialized","setInitialized","useEffect","prevPath","location","hash","onLocationHashChange","active","transport","analytics","onCoreStateChanged","onShellStateChanged","onChromecastStateChange","setOptions","receiverApplicationId","CHROMECAST_RECEIVER_APP_ID","autoJoinPolicy","chrome","AutoJoinPolicy","PAGE_SCOPED","resumeSavedSession","onCoreEvent","settings","interfaceLanguage","changeLanguage","onWindowFocus","profile","StrictMode","viewsConfig","useStreamingServer","streamingServer","content","deepLinks","metaDetailsVideos","classnames","Button","Image","dataCleared","setDataCleared","reload","clearData","localStorage","clear","alt","onClick","disabled","useServices","useToast","toast","uid","transport_url","startsWith","timeout","dataset","onDragAndDropError","file","App","routes","routesRegexp","board","component","Board","intro","Intro","discover","Discover","library","Library","continuewatching","search","Search","metadetails","MetaDetails","addons","Addons","Settings","player","useProfile","Component","previousAuthRef","useRef","auth","current","onRouteChange","routeConfig","AddonDetails","version","logo","description","types","transportUrl","official","renderLogoFallback","renderFallback","arrayOf","bool","ModalDialog","AddonDetailsWithRemoteAndLocalAddon","withRemoteAndLocalAddon","remoteAddon","localAddon","addon","flags","useAddonDetails","AddonDetailsModal","onCloseRequest","addonDetails","modalButtons","cancelButton","reactEvent","nativeEvent","configureButton","toggleButton","buttons","selected","func","AddonDetailsModalFallback","useModelState","model","useLongPress","href","children","onLongPress","longPress","detect","onKeyDown","preventDefault","buttonClickPrevented","currentTarget","click","onMouseDown","buttonBlurPrevented","activeElement","blur","tabIndex","TYPE_PRIORITIES","movie","series","channel","tv","music","radio","podcast","game","book","adult","other","Infinity","ICON_FOR_TYPE","Map","SUBTITLES_SIZES","SUBTITLES_FONTS","SEEK_TIME_DURATIONS","NEXT_VIDEO_POPUP_DURATIONS","CATALOG_PREVIEW_SIZE","CATALOG_PAGE_SIZE","NONE_EXTRA_VALUE","SKIP_EXTRA_NAME","META_LINK_CATEGORY","IMDB_LINK_CATEGORY","SHARE_LINK_CATEGORY","WRITERS_LINK_CATEGORY","Checkbox","checked","AColorPicker","useBinaryState","ColorPicker","ColorInput","onChange","modalOpen","openModal","closeModal","tempValue","setTempValue","labelButtonStyle","isTransparent","endsWith","labelButtonOnClick","openModalPrevented","modalDialogOnClick","colorPickerOnInput","useLayoutEffect","onInput","object","pickerRef","pickerElementRef","pickerClipboard","picker","nextValue","CoreSuspenderContext","createContext","wrapPromise","promise","suspender","read","useCoreSuspender","useContext","Fallback","parentSuspender","setRender","statesRef","streamsRef","decodeStream","Suspense","fallback","Provider","DelayedRenderer","fallbackSrc","broken","setBroken","MetaItem","OPTIONS","LibItem","_id","removable","metaDetailsStreams","progress","option","optionOnSelect","optionSelectPrevented","number","shape","VerticalNavBar","HorizontalNavBar","TABS","MainNavBars","memo","route","backButton","searchBar","addonsButton","fullscreenButton","navMenu","tabs","filterInvalidDOMProps","Multiselect","PlayIconCircleCentered","poster","posterShape","playIcon","menuOpen","onMenuOpen","onMenuClose","metaItemOnClick","selectPrevented","menuOnClick","menuOnSelect","renderPosterFallback","has","renderMenuLabelContent","renderLabelContent","onOpen","onClose","onSelect","ActionButton","MetaLinks","links","toUpperCase","UrlUtils","SharePrompt","MetaPreviewPlaceholder","ALLOWED_LINK_REDIRECTS","regexp","MetaPreview","compact","runtime","releaseInfo","released","trailerStreams","inLibrary","toggleInLibrary","shareModalOpen","openShareModal","closeShareModal","linksGroups","link","category","protocol","pathname","hostname","showHref","trailerHref","Date","getTime","getFullYear","Fragment","Placeholder","instanceOf","ReactIs","MetaRowPlaceholder","MetaRow","items","itemComponent","isValidElementType","item","fill","_","elementType","useRouteFocused","useModalsContainer","Modal","routeFocused","modalsContainer","modalContainerRef","closeButtonOnClick","onModalContainerMouseDown","closeModalDialogPrevented","onModalDialogContainerMouseDown","childNodes","childElementCount","oneOfType","Popup","direction","renderLabelText","closeMenu","toggleMenu","labelOnClick","toggleMenuPrevented","menuOnKeyDown","optionOnClick","closeMenuPrevented","mountedRef","renderLabel","renderMenu","renderPopupLabel","labelProps","any","isRequired","useFullscreen","SearchBar","NavMenu","backButtonOnClick","history","back","fullscreen","requestFullscreen","exitFullscreen","renderNavMenuLabel","NavMenuContent","popupLabelOnClick","togglePopupPrevented","popupMenuOnClick","useTorrent","createTorrentFromMagnet","logoutButtonOnClick","onPlayMagnetLinkClick","clipboard","readText","clipboardText","backgroundImage","user","avatar","email","TextInput","searchInputRef","searchBarOnClick","queryInputOnChange","queryInputOnSubmit","focus","placeholder","defaultValue","onSubmit","SearchBarFallback","NavTabButton","tab","PaginationInput","prevNextButtonOnClick","cx","cy","FocusLock","getAnchorElement","documentElement","getComputedStyle","overflowY","labelRef","menuRef","autoDirection","setAutoDirection","menuOnMouseDown","closePopupPrevented","onCloseEvent","closeEvent","contains","anchorRect","labelRect","menuRect","labelPosition","autoFocus","lockProps","SearchBarPlaceholder","inputRef","selectInputContent","copyToClipboard","readOnly","useAnimationFrame","useLiveRef","Slider","minimumValue","maximumValue","onSlide","onComplete","minimumValueRef","maximumValueRef","valueRef","bufferedRef","onSlideRef","onCompleteRef","sliderContainerRef","requestThumbAnimation","cancelThumbAnimation","calculateValueForMouseX","mouseX","sliderX","sliderWidth","retainThumb","onBlur","onMouseUp","onMouseMove","releaseThumb","classIndex","button","thumbPosition","bufferedPosition","marginLeft","StreamingServerWarning","onLaterClick","streamingServerWarningDismissed","setMonth","getMonth","onDismissClick","setFullYear","submitPrevented","autoCorrect","autoCapitalize","autoComplete","spellCheck","ToastContext","ToastItem","toastOnClick","selectToastPrevented","closeToastPrevented","setContainer","useReducer","itemOnClose","filters","addFilter","removeFilter","priorities","localeCompare","NEGATIVE_INFINITY","child","elementTop","offsetTop","elementBottom","clientHeight","containerTop","scrollTop","containerBottom","isChildVisible","comparatorWithPriorities","getVisibleChildrenRange","interfaceLanguages","languageNames","translateOption","useOnScrollToBottom","externalPlayerOptions","browser","os","isMobile","urlParamsNames","translateKeyPrefix","translateKey","translateValue","charAt","animationFrameId","cancel","cancelAnimationFrame","requestAnimationFrame","initialValue","setValue","fullscreenElement","setFullscreen","toggleFullscreen","onFullscreenChange","throttle","isEqual","intersection","deps","prevState","nextState","setState","useInsertionEffect","onNewState","models","onNewStateThrottled","threshold","triggeredRef","onScroll","scrollHeight","ctx","NaN","createTorrentTimeout","parsed","ReactDOM","createPortal","ModalsContainerContext","ModalsContainerProvider","Route","RouteFocusedContext","RouteFocusedProvider","routeConfigForPath","urlParamsForPath","views","setViews","urlParams","routeViewIndex","vc","routeIndex","rc","view","entries","exact","RegExp","matches","decodeURIComponent","Addon","installed","onToggle","onConfigure","onShare","toggleButtonOnClick","configureButtonOnClick","shareButtonOnClick","configurationRequired","p2p","useInstalledAddons","useRemoteAddons","useAddonDetailsTransportUrl","useSelectableInputs","installedAddons","remoteAddons","addonDetailsTransportUrl","setAddonDetailsTransportUrl","selectInputs","filtersModalOpen","openFiltersModal","closeFiltersModal","addAddonModalOpen","openAddAddonModal","closeAddAddonModal","addAddonUrlInputRef","addAddonOnSubmit","addAddonModalButtons","setSearch","searchInputOnChange","sharedAddon","setSharedAddon","clearSharedAddon","onAddonShare","onAddonToggle","onAddonConfigure","closeAddonDetails","searchFilterPredicate","selectInput","selectable","catalog","catalogId","setTransportUrl","nextQueryParams","base","resource","selectableInputs","catalogSelect","catalogs","selectableCatalog","typeSelect","mapSelectableInputs","debounce","useBoard","useContinueWatchingPreview","continueWatchingPreview","loadBoardRows","boardCatalogsOffset","libraryItems","scrollContainerRef","onVisibleRangeChange","range","loadRange","useDiscover","loadNextPage","hasNextPage","inputsModalOpen","openInputsModal","closeInputsModal","addonModalOpen","openAddonModal","closeAddonModal","selectedMetaItemIndex","setSelectedMetaItemIndex","metasContainerRef","selectedMetaItem","addToLibrary","removeFromLibrary","metaItemsOnFocusCapture","onScrollToBottom","onFocusCapture","metaItem","extraSelects","nextPage","ConsentCheckbox","checkboxOnClick","togglePrevented","linkOnClick","CredentialsTextInput","navigationPrevented","spatialNavigationPrevented","navigate","PasswordResetModal","useFacebookToken","SIGNUP_FORM","LOGIN_FORM","getFacebookToken","emailRef","passwordRef","confirmPasswordRef","termsRef","privacyPolicyRef","marketingRef","errorRef","passwordRestModalOpen","openPasswordRestModal","closePasswordResetModal","loaderModalOpen","openLoaderModal","closeLoaderModal","form","password","confirmPassword","termsAccepted","privacyPolicyAccepted","marketingAccepted","loginWithFacebook","accessToken","fbLoginToken","facebook","loginWithEmail","validity","valid","loginAsGuest","signup","gdpr_consent","tos","privacy","marketing","emailOnChange","emailOnSubmit","passwordOnChange","passwordOnSubmit","confirmPasswordOnChange","confirmPasswordOnSubmit","toggleTermsAccepted","togglePrivacyPolicyAccepted","toggleMarketingAccepted","switchFormOnClick","scrollIntoView","setError","goToPasswordReset","passwordResetModalButtons","getToken","FB","getLoginStatus","authResponse","login","fbAsyncInit","init","appId","xfbml","sdkScriptElement","async","defer","useLibrary","sortSelect","paginationInput","libItem","LibraryFallback","withModel","page","sorts","prevPage","StreamsList","VideosList","useMetaDetails","useSeason","useMetaExtensionTabs","metaDetails","setSeason","metaExtensions","metaExtension","clearMetaExtension","metaPath","streamPath","videos","seasonOnSelect","renderBackgroundImageFallback","overview","sandbox","StreamPlaceholder","Stream","addonName","thumbnail","haveStreamingServer","playerType","externalPlayer","openPlayer","streaming","forceDownload","fileName","renderThumbnailFallback","download","choose","ios","android","windows","macos","linux","vlc","outplayer","infuse","justplayer","mxplayer","ALL_ADDONS_KEY","selectedAddon","setSelectedAddon","onAddonSelected","streamsByAddon","filteredStreams","values","flat","selectableOptions","SeasonsBarPlaceholder","SeasonsBar","seasons","seasonIndex","valueIndex","VideoPlaceholder","upcoming","watched","scheduled","popupLabelOnMouseUp","ctrlKey","popupLabelOnContextMenu","popupLabelOnLongPress","pointerType","popupMenuOnPointerDown","popupMenuOnContextMenu","popupMenuOnKeyDown","toggleWatchedOnClick","toLocaleString","year","month","day","onPointerDown","onContextMenu","MAX_SAFE_INTEGER","selectedSeason","nonSpecialSeasons","videosForSeason","extension","setSelected","BufferingLoader","SeekBar","VolumeSlider","ControlBar","nextVideo","statistics","onPlayRequested","onPauseRequested","onMuteRequested","onUnmuteRequested","onVolumeChangeRequested","onSeekRequested","onToggleSubtitlesMenu","onToggleInfoMenu","onToggleSpeedMenu","onToggleVideosMenu","onToggleOptionsMenu","onToggleStatisticsMenu","chromecastServiceActive","setChromecastServiceActive","buttonsMenuOpen","toogleButtonsMenu","onSubtitlesButtonMouseDown","subtitlesMenuClosePrevented","onInfoButtonMouseDown","infoMenuClosePrevented","onSpeedButtonMouseDown","speedMenuClosePrevented","onVideosButtonMouseDown","videosMenuClosePrevented","onOptionsButtonMouseDown","optionsMenuClosePrevented","onStatisticsButtonMouseDown","statisticsMenuClosePrevented","onPlayPauseButtonClick","onNextVideoButtonClick","onMuteButtonClick","onSubtitlesButtonClick","onInfoButtonClick","onSpeedButtonClick","onVideosButtonClick","onOptionsButtonClick","onStatisticsButtonClick","onChromecastButtonClick","requestSession","onStateChanged","formatTime","seekTime","setSeekTime","resetTimeDebounced","formatUnit","hours","minutes","seconds","slidingVolume","setSlidingVolume","resetVolumeDebounced","InfoMenu","NextVideoPopup","onDismiss","onPlayNextVideoRequested","watchNowButtonRef","animationEnded","setAnimationEnded","videoName","onAnimationEnd","onDismissButtonClick","onWatchNowButtonClick","Option","deviceId","onButtonClick","OptionsMenu","playbackDevices","streamingUrl","downloadUrl","externalDevices","onCopyStreamButtonClick","writeText","onDownloadVideoButtonClick","onExternalDeviceRequested","langs","StatisticsMenu","VideosMenu","SubtitlesMenu","SpeedMenu","usePlayer","useSettings","nextVideoState","videoParams","setVideoState","timeChanged","pausedChanged","ended","updateSettings","casting","setCasting","immersed","setImmersed","setImmersedDebounced","optionsMenuOpen","closeOptionsMenu","toggleOptionsMenu","subtitlesMenuOpen","closeSubtitlesMenu","toggleSubtitlesMenu","infoMenuOpen","closeInfoMenu","toggleInfoMenu","speedMenuOpen","closeSpeedMenu","toggleSpeedMenu","videosMenuOpen","closeVideosMenu","toggleVideosMenu","nextVideoPopupOpen","openNextVideoPopup","closeNextVideoPopup","statisticsMenuOpen","closeStatisticsMenu","toggleStatisticsMenu","nextVideoPopupDismissed","defaultSubtitlesSelected","defaultAudioTrackSelected","videoRef","onImplementationChanged","onEnded","onSubtitlesTrackLoaded","onExtraSubtitlesTrackLoaded","onPlayRequestedDebounced","onPauseRequestedDebounced","onPlaybackSpeedChanged","rate","onSubtitlesTrackSelected","onExtraSubtitlesTrackSelected","onAudioTrackSelected","onExtraSubtitlesDelayChanged","onSubtitlesSizeChanged","onSubtitlesOffsetChanged","onDismissNextVideoPopup","onVideoClick","onVideoDoubleClick","onContainerMouseDown","onContainerMouseMove","immersePrevented","onContainerMouseLeave","onBarMouseMove","baseUrl","metaRequest","libraryItem","streamRequest","video_id","timeOffset","bingeWatching","nextVideoNotificationDuration","getStatistics","statisticsInterval","findTrackByLang","where","subtitlesTrack","subtitlesLanguage","extraSubtitlesTrack","audioLanguage","toastFilter","onCastStateChange","onChromecastServiceStateChange","CastContextEventType","CAST_STATE_CHANGED","seekTimeMultiplier","seekTimeDuration","onWheel","deltaY","onMouseOver","onMouseLeave","onPropValue","onDoubleClick","onExtraSubtitlesOffsetChanged","onExtraSubtitlesSizeChanged","streamTransportUrl","metaTransportUrl","OptionButton","RATES","reverse","onOptionSelect","classNames","peers","downloadSpeed","completed","streamProgress","DiscreteSelectInput","buttonOnClick","ORIGIN_PRIORITIES","LANGUAGE_PRIORITIES","subtitlesLanguages","selectedSubtitlesLanguage","subtitlesTracksForLanguage","subtitlesLanguageOnClick","subtitlesTrackOnClick","onSubtitlesDelayChanged","delta","extraDelay","sizeIndex","extraSizeIndex","extraSize","audioTrackOnClick","onEndedRef","onErrorRef","onPropValueRef","onPropChangedRef","onSubtitlesTrackLoadedRef","onExtraSubtitlesTrackLoadedRef","onImplementationChangedRef","videoElementRef","useImperativeHandle","subtitlesPath","useSearch","loadSearchRows","reduceRight","SearchFallback","useProfileSettingsInputs","useStreamingServerSettingsInputs","useDataExport","GENERAL_SECTION","PLAYER_SECTION","STREAMING_SECTION","SHORTCUTS_SECTION","dataExport","loadDataExport","interfaceLanguageSelect","subtitlesLanguageSelect","subtitlesSizeSelect","subtitlesTextColorInput","subtitlesBackgroundColorInput","subtitlesOutlineColorInput","audioLanguageSelect","seekTimeDurationSelect","playInExternalPlayerSelect","nextVideoPopupDurationSelect","bingeWatchingCheckbox","playInBackgroundCheckbox","hardwareDecodingCheckbox","streamingServerUrlInput","cacheSizeSelect","torrentProfileSelect","configureServerUrlModalOpen","openConfigureServerUrlModal","closeConfigureServerUrlModal","configureServerUrlInputRef","configureServerUrlOnSubmit","traktAuthStarted","setTraktAuthStarted","isTraktAuthenticated","trakt","created_at","expires_in","configureServerUrlModalButtons","toggleTraktOnClick","subscribeCalendarOnClick","exportDataOnClick","reloadStreamingServer","sectionsContainerRef","generalSectionRef","playerSectionRef","streamingServerSectionRef","shortcutsSectionRef","sections","selectedSectionId","setSelectedSectionId","updateSelectedSectionId","sideMenuButtonOnClick","section","scrollTo","behavior","sectionsContainerOnScorll","exportUrl","serverVersion","codes","opt","playInBackground","hardwareDecoding","streamingServerUrl","CACHE_SIZES","cacheSizeToString","ceil","EPSILON","TORRENT_PROFILES","btDownloadSpeedHardLimit","btDownloadSpeedSoftLimit","btHandshakeTimeout","btMaxConnections","btMinPeersForStable","btRequestTimeout","soft","fast","cacheSize","selectedTorrentProfile","isCustomTorrentProfileSelected","torrentProfile","profileName","ChromecastTransport","starting","onTransportInit","onTransportInitError","cause","defineProperties","MESSAGE_NAMESPACE","CHUNK_SIZE","castAPIAvailable","castAPIEvents","available","messages","chunk","parsedMessage","onApplicationStatusChanged","CastSession","APPLICATION_STATUS_CHANGED","onApplicationMetadataChanged","APPLICATION_METADATA_CHANGED","onActiveInputStateChanged","ACTIVE_INPUT_STATE_CHANGED","onVolumeChanged","VOLUME_CHANGED","onMediaSessionChanged","MEDIA_SESSION","onCastStateChanged","onSesstionStateChanged","SESSION_STATE_CHANGED","sessionState","SessionState","SESSION_STARTED","session","addMessageListener","SESSION_ENDED","removeMessageListener","onCastAPIAvailabilityChanged","CastContext","getInstance","getSessionState","getCurrentSession","endCurrentSession","stopCasting","castSession","serializedMessage","chunksCount","chunks","CoreTransport","onTransportError","Bridge","worker","Worker","bridge","field","getDebugState","onDragOver","onDrop","dataTransfer","files","FileList","arrayBuffer","Uint8Array","keyboardShortcutPrevented","tagName","altKey","metaKey","forward","ServicesContext","ShellTransport","shellAvailable","shellEvents","QtMsgTypes","QtObjId","initShellComm","qt","onShellAvailabilityChanged","webChannelTransport","msg","onmessage","properties","shellVersionArr","signals","sig","signal","onEvent","methods","ev","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","num","output","parseRange","acc","cur","idx","generateRange","compose","getFirstMatch","getSecondMatch","matchAndReturnConst","getWindowsVersionName","getMacOSVersionName","getAndroidVersionName","getVersionPrecision","compareVersions","getBrowserAlias","BROWSER_ALIASES_MAP","getBrowserTypeByAlias","BROWSER_MAP","ENGINE_MAP","OS_MAP","PLATFORMS_MAP","Bada","BlackBerry","Chrome","Chromium","Electron","Epiphany","Firefox","Focus","Generic","Googlebot","Maxthon","Opera","PhantomJS","Puffin","QupZilla","QQ","QQLite","Safari","Sailfish","SeaMonkey","Sleipnir","Swing","Tizen","Vivaldi","WeChat","Roku","amazon_silk","bada","blackberry","chromium","electron","epiphany","firefox","generic","googlebot","google_search","ie","k_meleon","maxthon","edge","mz","naver","opera","opera_coast","phantomjs","puffin","qupzilla","qq","qqlite","safari","sailfish","samsung_internet","seamonkey","sleipnir","swing","uc","vivaldi","webos","wechat","yandex","tablet","mobile","desktop","WindowsPhone","Windows","MacOS","iOS","Android","WebOS","Linux","ChromeOS","PlayStation4","EdgeHTML","Blink","Trident","Presto","Gecko","WebKit","getParser","getResult","_ua","parsedResult","getUA","parseBrowser","describe","getBrowser","getBrowserName","getBrowserVersion","getOS","parseOS","getOSName","getOSVersion","getPlatform","parsePlatform","getPlatformType","getEngine","engine","parseEngine","getEngineName","satisfies","isOS","isPlatform","isBrowser","compareVersion","substr","isEngine","is","versionName","vendor","base64","ieee754","customInspectSymbol","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","setPrototypeOf","encodingOrOffset","allocUnsafe","encoding","isEncoding","actual","write","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","buffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","isBuffer","numberIsNaN","fromObject","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","poolSize","allocUnsafeSlow","_isBuffer","compare","list","pos","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","toJSON","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","sym","getMessage","Base","super","stack","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","received","isInteger","abs","INVALID_BASE64_RE","leadSurrogate","base64clean","dst","alphabet","table","i16","BufferBigIntNotDefined","hasOwn","classes","argType","inner","colorNames","swizzle","reverseNames","cs","to","clamp","hexDouble","substring","hwb","hexAlpha","i2","alpha","percent","hwba","keyword","colorString","skippedModels","hashedModelKeys","labels","limiters","valpha","newArray","zeroArray","hashedKeys","places","percentString","unitArray","unitObject","roundToPlace","getset","maxfn","hue","saturationl","lightness","saturationv","chroma","wblack","z","hexa","rgbArray","alphaHex","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","isDark","isLight","negate","lighten","ratio","darken","saturate","desaturate","whiten","blacken","grayscale","fade","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w1","w2","raw","roundTo","modifier","cssKeywords","reverseKeywords","hsv","cmyk","xyz","lab","lch","ansi16","ansi256","hcg","apple","rdif","gdif","bdif","diff","diffc","reversed","currentClosestKeyword","currentClosestDistance","distance","t3","smin","lmin","q","vmin","sl","wh","bl","y2","x2","z2","atan2","PI","sqrt","hr","cos","sin","saturation","ansi","mult","rem","char","integer","pure","mg","conversions","fromModel","toModel","wrappedFn","arg0","conversion","wrapRounded","wrapRaw","deriveBFS","graph","parent","buildGraph","queue","adjacents","adjacent","unshift","wrapConversion","getOwnPropertyNames","isFrozen","prefix","EE","context","once","addListener","emitter","evt","_events","_eventsCount","clearEvent","__proto__","eventNames","names","handlers","ee","listenerCount","a1","a2","a3","a4","a5","removeListener","prefixed","domProps","isValidDOMProp","_htmlAttributes","_htmlAttributes2","eventProps","onCopy","onCut","onPaste","onLoad","onCompositionEnd","onCompositionStart","onCompositionUpdate","onKeyPress","onKeyUp","onFocus","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragStart","onMouseEnter","onMouseOut","onTouchCancel","onTouchEnd","onTouchMove","onTouchStart","onAnimationStart","onAnimationIteration","onTransitionEnd","bits","digits","rack","expandBy","iters","hats","factory","modules","installedModules","moduleId","getter","ns","property","__webpack_require__","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","URLToolkit","buildAbsoluteURL","baseURL","relativeURL","opts","alwaysNormalize","basePartsForNormalise","parseURL","normalizePath","buildURLFromParts","relativeParts","scheme","baseParts","netLoc","pathParts","builtParts","fragment","baseURLPath","newPath","webpackBootstrapFunc","oe","ENTRY_MODULE","moduleNameReqExp","dependencyRegExp","quoteRegExp","getModuleDependencies","queueName","retval","fnString","wrapperSignature","webpackRequireName","re","hasValuesInQueues","queues","hasValues","main","requiredModules","modulesQueue","seenModules","moduleToCheck","newModules","newModulesKeys","getRequiredModules","entryModule","blob","Blob","bare","workerUrl","URL","webkitURL","mozURL","msURL","createObjectURL","objectURL","__webpack_exports__","hlsDefaultConfig","mergeConfig","enableStreamingMode","_controller_abr_controller__WEBPACK_IMPORTED_MODULE_0__","_controller_audio_stream_controller__WEBPACK_IMPORTED_MODULE_1__","_controller_audio_track_controller__WEBPACK_IMPORTED_MODULE_2__","_controller_subtitle_stream_controller__WEBPACK_IMPORTED_MODULE_3__","_controller_subtitle_track_controller__WEBPACK_IMPORTED_MODULE_4__","_controller_buffer_controller__WEBPACK_IMPORTED_MODULE_5__","_controller_timeline_controller__WEBPACK_IMPORTED_MODULE_6__","_controller_cap_level_controller__WEBPACK_IMPORTED_MODULE_7__","_controller_fps_controller__WEBPACK_IMPORTED_MODULE_8__","_controller_eme_controller__WEBPACK_IMPORTED_MODULE_9__","_controller_cmcd_controller__WEBPACK_IMPORTED_MODULE_10__","_utils_xhr_loader__WEBPACK_IMPORTED_MODULE_11__","_utils_fetch_loader__WEBPACK_IMPORTED_MODULE_12__","_utils_cues__WEBPACK_IMPORTED_MODULE_13__","_utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_14__","_utils_logger__WEBPACK_IMPORTED_MODULE_15__","_extends","ownKeys","enumerableOnly","symbols","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","autoStartLoad","startPosition","defaultAudioCodec","capLevelOnFPSDrop","capLevelToPlayerSize","ignoreDevicePixelRatio","initialLiveManifestSize","maxBufferSize","highBufferWatchdogPeriod","nudgeOffset","liveSyncDurationCount","liveMaxLatencyDurationCount","liveSyncDuration","liveMaxLatencyDuration","maxLiveSyncPlaybackRate","liveDurationInfinity","liveBackBufferLength","enableSoftwareAES","manifestLoadingRetryDelay","manifestLoadingMaxRetryTimeout","startLevel","levelLoadingTimeOut","levelLoadingMaxRetry","levelLoadingRetryDelay","levelLoadingMaxRetryTimeout","fragLoadingTimeOut","fragLoadingMaxRetry","fragLoadingRetryDelay","fragLoadingMaxRetryTimeout","startFragPrefetch","fpsDroppedMonitoringPeriod","fpsDroppedMonitoringThreshold","loader","fLoader","pLoader","xhrSetup","licenseXhrSetup","licenseResponseCallback","abrController","bufferController","capLevelController","fpsController","stretchShortVideoTrack","maxAudioFramesDrift","forceKeyFrameOnDiscontinuity","abrEwmaFastLive","abrEwmaSlowLive","abrEwmaFastVoD","abrEwmaSlowVoD","abrEwmaDefaultEstimate","abrBandWidthFactor","abrBandWidthUpFactor","abrMaxWithRealBitrate","maxStarvationDelay","maxLoadingDelay","minAutoBitrate","emeEnabled","widevineLicenseUrl","drmSystemOptions","requestMediaKeySystemAccessFunc","testBandwidth","progressive","cmcd","enableDateRangeMetadataCues","enableEmsgMetadataCues","enableID3MetadataCues","cueHandler","enableWebVTT","enableIMSC1","enableCEA708Captions","captionsTextTrack1Label","captionsTextTrack1LanguageCode","captionsTextTrack2Label","captionsTextTrack2LanguageCode","captionsTextTrack3Label","captionsTextTrack3LanguageCode","captionsTextTrack4Label","captionsTextTrack4LanguageCode","renderTextTracksNatively","subtitleStreamController","subtitleTrackController","timelineController","audioStreamController","audioTrackController","emeController","cmcdController","defaultConfig","userConfig","currentLoader","_home_slim_stremio_hlsjs_src_polyfills_number__WEBPACK_IMPORTED_MODULE_0__","_utils_ewma_bandwidth_estimator__WEBPACK_IMPORTED_MODULE_1__","_events__WEBPACK_IMPORTED_MODULE_2__","_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_3__","_errors__WEBPACK_IMPORTED_MODULE_4__","_types_loader__WEBPACK_IMPORTED_MODULE_5__","_utils_logger__WEBPACK_IMPORTED_MODULE_6__","AbrController","lastLoadedFragLevel","_nextAutoLevel","onCheck","_abandonRulesCheck","fragCurrent","partCurrent","bitrateTestDelay","bwEstimator","registerListeners","_proto","FRAG_LOADING","onFragLoading","FRAG_LOADED","onFragLoaded","FRAG_BUFFERED","onFragBuffered","LEVEL_LOADED","onLevelLoaded","unregisterListeners","clearTimer","_data$part","frag","MAIN","part","details","live","update","autoLevelEnabled","media","stats","aborted","requestDelay","performance","loading","levels","minAutoLevel","expectedLen","total","maxBitrate","loadRate","bwEstimate","fragLoadedDelay","bufferStarvationDelay","bufferInfo","nextLoadLevel","fragLevelNextLoadedDelay","POSITIVE_INFINITY","getEstimate","sn","sample","abort","trigger","FRAG_LOAD_EMERGENCY_ABORTED","loadedBytes","loadedDuration","realBitrate","bitrateTest","fragBufferedData","processingMs","parsing","FRAG_LOAD_ERROR","FRAG_LOAD_TIMEOUT","getNextABRAutoLevel","maxAutoLevel","currentFragDuration","avgbw","bestLevel","findBestLevel","trace","bwFactor","bwUpFactor","currentBw","maxFetchDuration","_level$details","currentLevel","currentCodecSet","codecSet","levelInfo","levelDetails","partTarget","averagetargetduration","adjustedbw","bitrate","fetchDuration","forcedAutoLevel","canEstimate","nextABRAutoLevel","loadError","nextLevel","_base_stream_controller__WEBPACK_IMPORTED_MODULE_1__","_fragment_tracker__WEBPACK_IMPORTED_MODULE_4__","_types_level__WEBPACK_IMPORTED_MODULE_5__","_types_loader__WEBPACK_IMPORTED_MODULE_6__","_loader_fragment__WEBPACK_IMPORTED_MODULE_7__","_demux_chunk_cache__WEBPACK_IMPORTED_MODULE_8__","_demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_9__","_types_transmuxer__WEBPACK_IMPORTED_MODULE_10__","_fragment_finders__WEBPACK_IMPORTED_MODULE_11__","_utils_discontinuities__WEBPACK_IMPORTED_MODULE_12__","_errors__WEBPACK_IMPORTED_MODULE_13__","_setPrototypeOf","AudioStreamController","_BaseStreamController","subClass","superClass","fragmentTracker","_this","videoBuffer","videoTrackCC","waitingVideoCC","audioSwitch","trackId","waitingData","mainDetails","bufferFlushed","cachedTrackLoadedData","_registerListeners","onHandlerDestroying","_unregisterListeners","MEDIA_ATTACHED","onMediaAttached","MEDIA_DETACHING","onMediaDetaching","MANIFEST_LOADING","onManifestLoading","onAudioTracksUpdated","AUDIO_TRACK_SWITCHING","onAudioTrackSwitching","AUDIO_TRACK_LOADED","onAudioTrackLoaded","BUFFER_RESET","onBufferReset","BUFFER_CREATED","onBufferCreated","BUFFER_FLUSHED","onBufferFlushed","INIT_PTS_FOUND","onInitPtsFound","initPTS","cc","WAITING_INIT_PTS","tick","startLoad","STOPPED","lastCurrentTime","stopLoad","fragLoadError","IDLE","loadedmetadata","WAITING_TRACK","nextLoadPosition","doTick","doTickIdle","_levels$trackId","waitForCdnTuneIn","FRAG_LOADING_WAITING_RETRY","_this$media","retryDate","seeking","resetStartWhenNotLoaded","cache","complete","payload","flush","networkDetails","_handleFragmentLoadProgress","_handleFragmentLoadComplete","clearWaitingFragment","getLoadPosition","mediaBuffer","onTickEnd","removeFragment","resetLoadingState","_frag$decryptdata","_frag$decryptdata2","startFragRequested","trackDetails","levelLastLoaded","bufferable","afterBufferFlushed","AUDIO","getFwdBufferInfo","mainBufferInfo","bufferLen","maxBufLen","getMaxBufferLength","_streamEnded","BUFFER_EOS","fragments","targetBufferTime","PTSKnown","nextStart","targetduration","getNextFragment","decryptdata","keyFormat","loadFragment","loadKey","mainBufferLength","maxConfigBuffer","resetTransmuxer","mediaPlaylist","altAudio","removeAllFragments","_track$details","newDetails","startSN","endSN","totalduration","sliding","deltaUpdateFailed","hasProgramDateTime","alignPlaylists","setStartPosition","_frag$initSegment","assert","transmuxer","_handleTransmuxComplete","_handleTransmuxerFlush","initSegmentData","initSegment","partIndex","partial","chunkMeta","chunkCount","fragLoadedData","audio","fragContextChanged","fragPrevious","fragBufferedComplete","KEY_LOAD_ERROR","KEY_LOAD_TIMEOUT","onFragmentOrKeyLoadError","AUDIO_TRACK_LOAD_ERROR","AUDIO_TRACK_LOAD_TIMEOUT","fatal","BUFFER_FULL_ERROR","PARSING","PARSED","flushBuffer","bufferedInfo","reduceMaxBufferLength","flushMainBuffer","transmuxResult","_id3$samples","remuxResult","getCurrentContext","id3","completeAudioSwitch","_bufferInitSegment","FRAG_PARSING_INIT_SEGMENT","startPTS","endPTS","startDTS","endDTS","elementaryStreams","setElementaryStreamInfo","bufferFragmentData","samples","emittedID3","FRAG_PARSING_METADATA","emittedText","FRAG_PARSING_USERDATA","levelCodec","BUFFER_CODECS","segment","BUFFER_APPENDING","fragState","NOT_LOADED","PARTIAL","_loadInitSegment","_events__WEBPACK_IMPORTED_MODULE_0__","_errors__WEBPACK_IMPORTED_MODULE_1__","_base_playlist_controller__WEBPACK_IMPORTED_MODULE_2__","_types_loader__WEBPACK_IMPORTED_MODULE_3__","AudioTrackController","_BasePlaylistControll","groupId","tracksInGroup","trackName","selectDefaultTrack","MANIFEST_PARSED","onManifestParsed","LEVEL_LOADING","onLevelLoading","LEVEL_SWITCHING","onLevelSwitching","currentTrack","curDetails","retryCount","playlistLoaded","switchLevel","levelIndex","audioGroupIds","audioGroupId","urlId","audioTracksUpdated","selectInitialTrack","AUDIO_TRACK","retryLoadingOrFail","setAudioTrack","newId","lastTrack","_track$groupId","hlsUrlParameters","switchParams","loadPlaylist","currentAudioTrackName","findTrackId","MEDIA_ERROR","shouldLoadTrack","addDirectives","AUDIO_TRACK_LOADING","deliveryDirectives","BasePlaylistController","_types_level__WEBPACK_IMPORTED_MODULE_1__","_level_helper__WEBPACK_IMPORTED_MODULE_2__","_utils_logger__WEBPACK_IMPORTED_MODULE_3__","logPrefix","canLoad","NETWORK_ERROR","playlistUri","previous","renditionReports","attr","uri","URI","msn","currentGoal","age","No","previousDetails","elapsed","advancedDateTime","reloaded","advanced","lastPartSn","lastPartIndex","canBlockReload","endSn","lastPart","lastAdvanced","cdnAge","ageHeader","tuneInGoal","segments","getDeliveryDirectives","reloadInterval","previousDeliveryDirectives","skip","errorEvent","_errorEvent$context","_this2","retry","State","BaseStreamController","_task_loop__WEBPACK_IMPORTED_MODULE_1__","_fragment_tracker__WEBPACK_IMPORTED_MODULE_2__","_utils_logger__WEBPACK_IMPORTED_MODULE_4__","_events__WEBPACK_IMPORTED_MODULE_5__","_errors__WEBPACK_IMPORTED_MODULE_6__","_types_transmuxer__WEBPACK_IMPORTED_MODULE_7__","_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_8__","_utils_discontinuities__WEBPACK_IMPORTED_MODULE_9__","_fragment_finders__WEBPACK_IMPORTED_MODULE_10__","_level_helper__WEBPACK_IMPORTED_MODULE_11__","_loader_fragment_loader__WEBPACK_IMPORTED_MODULE_12__","_crypt_decrypter__WEBPACK_IMPORTED_MODULE_13__","_utils_time_ranges__WEBPACK_IMPORTED_MODULE_14__","_types_loader__WEBPACK_IMPORTED_MODULE_15__","_assertThisInitialized","ReferenceError","KEY_LOADING","WAITING_LEVEL","_TaskLoop","_state","fragmentLoader","decrypter","onvseeking","onvended","KEY_LOADED","onKeyLoaded","clearNextTick","partList","isBuffered","OK","onMediaSeeking","onMediaEnded","tolerance","fragStartOffset","pastFragment","tickImmediate","onHandlerDestroyed","_loadFragForPlayback","_doFragLoad","reason","resetFragmentLoading","startOffset","endOffset","flushScope","BUFFER_FLUSHING","_this3","decryptData","iv","webCryptoDecrypt","decryptedData","FRAG_DECRYPTED","tstart","tdecrypt","getBuffered","seekToStartPos","fragLoadedEndData","partsLoaded","fragLoaded","progressCallback","_this4","fragmentHint","getNextPart","doFragPartsLoad","handleFragLoadError","loadedEndOfParts","_this5","loadPartIndex","loadPart","partLoadedData","loadedPart","nextPart","INTERNAL_ABORTED","handleFragLoadAborted","updateLevelTiming","data1","data2","dropped","independent","flushBufferGap","fragDuration","segmentFraction","bufferedFragAtPos","getBufferedFrag","levelBitrate","minLength","fragLen","getInitialLiveFragment","liveSyncPosition","partEnd","fragmentEnd","getFragmentAtPosition","mapToInitFragWhenRequired","contiguous","independentAttrOmitted","programDateTime","endProgramDateTime","targetSN","fragNext","liveStart","bufferEnd","loadingParts","lookupTolerance","curSNIdx","nextFrag","synchronizeToLiveEdge","withinSlidingWindow","maxLatency","lastLevel","slidingStart","firstLevelLoad","aligned","alignedSliding","alignedSlidingStart","partHoldBack","startTimeOffset","filterType","levelRetry","bufferType","playlistType","bufferedTimeRanges","detectEvictedFragments","_this6","parsedDuration","drift","LEVEL_PTS_UPDATED","FRAG_PARSED","previousState","BufferController","_events__WEBPACK_IMPORTED_MODULE_1__","_utils_logger__WEBPACK_IMPORTED_MODULE_2__","_errors__WEBPACK_IMPORTED_MODULE_3__","_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_4__","_utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_5__","_loader_fragment__WEBPACK_IMPORTED_MODULE_6__","_buffer_operation_queue__WEBPACK_IMPORTED_MODULE_7__","MediaSource","VIDEO_CODEC_PROFILE_REPACE","_hls","_objectUrl","operationQueue","bufferCodecEventsExpected","_bufferCodecEventsTotal","mediaSource","appendError","pendingTracks","sourceBuffer","_onMediaSourceOpen","updateMediaElementDuration","checkPendingTracks","_onMediaSourceClose","_onMediaSourceEnded","_initSourceBuffer","hasSourceTypes","getSourceBufferTypes","MEDIA_ATTACHING","onMediaAttaching","onBufferAppending","onBufferCodecs","onBufferEos","onBufferFlushing","LEVEL_UPDATED","onLevelUpdated","onFragParsed","FRAG_CHANGED","onFragChanged","audiovideo","codecEvents","ms","endOfStream","revokeObjectURL","MEDIA_DETACHED","sb","removeBufferListeners","removeSourceBuffer","sourceBufferCount","changeType","_data$trackName","metadata","currentCodec","nextCodec","mimeType","appendChangeType","operation","execute","shiftAndExecuteNext","onStart","eventData","chunkStats","bufferAppendingStart","fragBuffering","partBuffering","checkTimestampOffset","executeStart","timestampOffset","appendExecutor","executeEnd","timeRanges","_type","BUFFER_APPENDED","BUFFER_APPEND_ERROR","DOMException","QUOTA_EXCEEDED_ERR","flushOperation","removeExecutor","_this7","buffersAppendedTo","AUDIOVIDEO","VIDEO","blockBuffers","flushBackBuffer","_this8","sourceBufferTypes","targetDuration","levelTargetDuration","maxBackBufferLength","targetBackBufferPosition","BACK_BUFFER_REACHED","LIVE_BACK_BUFFER_REACHED","levelDuration","mediaDuration","msDuration","updateSeekableRange","setLiveSeekableRange","pendingTracksCount","createSourceBuffers","buffers","BUFFER_INCOMPATIBLE_CODECS_ERROR","executeNext","tracksCreated","addSourceBuffer","sbName","addBufferListener","_onSBUpdateStart","_onSBUpdateEnd","_onSBUpdateError","BUFFER_ADD_CODEC_ERROR","BUFFER_APPENDING_ERROR","removeStart","removeEnd","updating","appendBuffer","onUnblocked","_this9","blockingOperations","appendBlocker","BufferOperationQueue","_utils_logger__WEBPACK_IMPORTED_MODULE_0__","sourceBufferReference","insertAbort","CapLevelController","autoLevelCapping","firstLevel","restrictedLevels","streamController","clientRect","setStreamController","unregisterListener","stopCapping","FPS_DROP_LEVEL_CAPPING","onFpsDropLevelCapping","isLevelAllowed","droppedLevel","HTMLVideoElement","startCapping","detectPlayerSize","mediaHeight","mediaWidth","getMaxLevel","nextLevelSwitch","capLevelIndex","validLevels","getMaxLevelByMediaSize","getDimensions","boundsRect","curLevel","maxLevelIndex","contentScaleFactor","pixelRatio","devicePixelRatio","CMCDController","_types_cmcd__WEBPACK_IMPORTED_MODULE_1__","_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_2__","_createClass","_createForOfIteratorHelperLoose","allowArrayLike","it","_arrayLikeToArray","_unsupportedIterableToArray","cid","useHeaders","starved","audioBuffer","onWaiting","onPlaying","applyPlaylistData","ot","MANIFEST","su","applyFragmentData","getObjectType","MUXED","br","tb","getTopBandwidth","getBufferLength","createPlaylistLoader","createFragmentLoader","sessionId","uuid","contentId","onMediaDetached","_data$tracks$audio","_data$tracks$video","createData","sf","HLS","pr","mtp","bandwidthEstimate","isVideo","INIT","bs","toHeaders","toQuery","appendQueryToUri","TIMED_TEXT","_step","_iterator","Ctor","CmcdPlaylistLoader","_proto2","callbacks","CmcdFragmentLoader","_proto3","serialize","_step2","results","isValid","toRounded","toHundred","formatters","dl","nor","rtp","_iterator2","formatter","headerNames","headerGroups","headerMap","nrr","st","_keys","separator","_utils_mediakeys_helper__WEBPACK_IMPORTED_MODULE_3__","EMEController","_widevineLicenseUrl","_licenseXhrSetup","_licenseResponseCallback","_emeEnabled","_requestMediaKeySystemAccess","_drmSystemOptions","_config","_mediaKeysList","_media","_hasSetMediaKeys","_requestLicenseFailureCount","mediaKeysPromise","_onMediaEncrypted","onMediaEncrypted","getLicenseServerUrl","keySystem","WIDEVINE","_attemptKeySystemAccess","mediaKeySystemConfigs","baseConfig","audioCapabilities","videoCapabilities","robustness","audioRobustness","videoRobustness","createWidevineMediaKeySystemConfigurations","getSupportedMediaKeySystemConfigurations","keySystemAccessPromise","requestMediaKeySystemAccess","mediaKeySystemAccess","_onMediaKeySystemAccessObtained","mediaKeysListItem","mediaKeysSessionInitialized","mediaKeySystemDomain","createMediaKeys","mediaKeys","_onMediaKeysCreated","mediaKeysSession","createSession","_onNewMediaKeySession","keySession","_onKeySessionMessage","_requestLicense","initDataType","KEY_SYSTEM_ERROR","KEY_SYSTEM_NO_KEYS","finallySetKeyAndStartSession","_attemptSetMediaKeys","_generateRequestWithPreferredKeySession","initData","keysListItem","setMediaKeys","KEY_SYSTEM_NO_ACCESS","KEY_SYSTEM_NO_SESSION","KEY_SYSTEM_NO_INIT_DATA","generateRequest","_createLicenseXhr","keyMessage","callback","xhr","XMLHttpRequest","responseType","onreadystatechange","_onLicenseRequestReadyStageChange","_data","KEY_SYSTEM_LICENSE_REQUEST_FAILED","attemptsLeft","_generateLicenseRequestChallenge","_url","_xhr","challenge","mediaKeysList","close","_utils_logger__WEBPACK_IMPORTED_MODULE_1__","FPSController","isVideoPlaybackQualityAvailable","lastTime","lastDroppedFrames","lastDecodedFrames","getVideoPlaybackQuality","checkFPSInterval","checkFPS","decodedFrames","droppedFrames","currentPeriod","currentDropped","currentDecoded","droppedFPS","FPS_DROP","totalDroppedFrames","videoPlaybackQuality","totalVideoFrames","droppedVideoFrames","webkitDecodedFrameCount","webkitDroppedFrameCount","findFragmentByPDT","findFragmentByPTS","fragmentWithinToleranceTest","pdtWithinToleranceTest","findFragWithCC","_utils_binary_search__WEBPACK_IMPORTED_MODULE_1__","PDTValue","seg","foundFragment","candidate","candidateLookupTolerance","deltaPTS","pdtBufferEnd","FragmentState","FragmentTracker","_types_loader__WEBPACK_IMPORTED_MODULE_1__","activeFragment","activeParts","bufferPadding","onBufferAppended","getAppendedFrag","levelType","activePart","appendedPTS","fragmentEntity","elementaryStream","timeRange","esData","isNotBuffered","isTimeBuffered","detectPartialFragments","fragKey","getFragmentKey","streamInfo","getBufferedTimes","fragBuffered","minEndPTS","maxStartPTS","getPartialFragment","timePadding","bestFragment","bestOverlap","isPartial","APPENDING","hasFragment","removeFragmentsInRange","clearElementaryStreamInfo","_fragmentEntity$range","_fragmentEntity$range2","STALL_MINIMUM_DURATION_MS","MAX_START_GAP_JUMP","SKIP_BUFFER_HOLE_STEP_SECONDS","SKIP_BUFFER_RANGE_START","GapController","_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_0__","nudgeRetry","stallReported","stalled","moved","poll","activeFrag","seeked","beginSeek","hasEnoughBuffer","noBufferGap","startJump","maxStartGapJump","_trySkipBufferHole","tnow","stalledDuration","_reportStall","bufferedWithHoles","_tryFixBufferStall","_stalledDuration","stalledDurationMs","_tryNudgeBuffer","BUFFER_STALLED_ERROR","lastEndTime","targetTime","BUFFER_SEEK_OVER_HOLE","BUFFER_NUDGE_ON_STALL","_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__","_demux_id3__WEBPACK_IMPORTED_MODULE_3__","_loader_date_range__WEBPACK_IMPORTED_MODULE_4__","_types_demuxer__WEBPACK_IMPORTED_MODULE_5__","getCueClass","WebKitDataCue","VTTCue","TextTrackCue","dateRangeDateToTimelineSeconds","date","ID3TrackController","id3Track","dateRangeCuesAppended","onFragParsingMetadata","createTrack","getID3Track","kind","addTextTrack","_this$hls$config","maxCueTime","Cue","updateCueRanges","frameTypesAdded","emsg","frames","pts","frame","addCue","updateId3CueEnds","_this$id3Track","_cue$value","frameType","predicate","_hls$config","audioId3","dateRanges","ids","idsToRemove","_loop","removeCue","lastFragment","dateTimeOffset","_loop2","dateRange","appendedDateRangeCues","durationKnown","startDate","endDate","endOnNext","nextDateRangeWithSameClass","filterMapArray","class","attributes","ID","CLASS","START_DATE","DURATION","END_DATE","END_ON_NEXT","SCTE35_OUT","SCTE35_IN","LatencyController","_errors__WEBPACK_IMPORTED_MODULE_0__","stallCount","_latency","timeupdateHandler","timeupdate","latency","computeLatency","_this$config","targetLatency","distanceFromTarget","inLiveRange","forwardBufferLength","exp","edgeStalled","estimateLiveEdge","liveEdge","holdBack","_this$config2","maxLiveSyncOnStallIncrease","syncPosition","maxLevelUpdateAge","bufferedRanges","LevelController","_types_level__WEBPACK_IMPORTED_MODULE_0__","_errors__WEBPACK_IMPORTED_MODULE_2__","_utils_codecs__WEBPACK_IMPORTED_MODULE_3__","_level_helper__WEBPACK_IMPORTED_MODULE_4__","_base_playlist_controller__WEBPACK_IMPORTED_MODULE_5__","chromeOrFirefox","_levels","_firstLevel","_startLevel","currentLevelIndex","manualLevelIndex","onParsedComplete","MANIFEST_LOADED","onManifestLoaded","onAudioTrackSwitched","bitrateStart","levelFromSet","subtitleTracks","levelSet","resolutionFound","videoCodecFound","audioCodecFound","levelParsed","attrs","levelKey","RESOLUTION","CODECS","SUBTITLES","audioOnly","edata","forceStartLoad","MANIFEST_INCOMPATIBLE_CODECS_ERROR","_data$level","SUBTITLE_TRACK","textGroupIds","redundantFailover","levelError","levelSwitch","variantLevelIndex","_level","fragmentError","LEVEL_LOAD_ERROR","LEVEL_LOAD_TIMEOUT","REMUX_ALLOC_ERROR","recoverLevel","errorDetails","redundantLevels","nextAutoLevel","newUrlId","_data$deliveryDirecti2","_data$deliveryDirecti","removeLevel","filterLevelAndGroupByIdIndex","LEVELS_UPDATED","newLevel","_levels$newLevel","OTHER_ERROR","LEVEL_SWITCH_ERROR","lastLevelIndex","levelSwitchingData","_urlId","configStartLevel","addGroupId","assignTrackIdsByGroup","updatePTS","updateFragPTSDTS","mergeDetails","mapPartIntersection","mapFragmentIntersection","adjustSliding","addSliding","computeReloadInterval","getFragmentWithSN","getPartWith","_loader_date_range__WEBPACK_IMPORTED_MODULE_2__","groups","fromIdx","toIdx","updateFromToPTS","fragFrom","fragTo","fragToPTS","fragStartPts","fragEndPts","fragIdx","oldDetails","currentInitSegment","oldFragments","oldInit","PTSFrag","oldDateRanges","deltaDateRanges","recentlyRemovedDateranges","ccOffset","oldFrag","newFrag","relurl","_currentInitSegment","skippedSegments","startCC","canSkipDateRanges","newFragments","_i2","oldPart","newPart","driftStartTime","driftStart","driftEndTime","driftEnd","oldParts","newParts","intersectionFn","_oldPart","_newPart","newFrags","oldFrags","_oldFrag","_newFrag","estimatedTimeUntilUpdate","reloadIntervalAfterMiss","timeSinceLastModified","useLastModified","roundTrip","availabilityDelay","updated","minRetry","misses","StreamController","_is_supported__WEBPACK_IMPORTED_MODULE_2__","_events__WEBPACK_IMPORTED_MODULE_3__","_fragment_tracker__WEBPACK_IMPORTED_MODULE_5__","_demux_transmuxer_interface__WEBPACK_IMPORTED_MODULE_8__","_types_transmuxer__WEBPACK_IMPORTED_MODULE_9__","_gap_controller__WEBPACK_IMPORTED_MODULE_10__","_errors__WEBPACK_IMPORTED_MODULE_11__","audioCodecSwap","gapController","_forceStartLoad","fragPlaying","onvplaying","onvseeked","fragLastKbps","couldBacktrack","backtrackFragment","audioCodecSwitch","onFragLoadEmergencyAborted","onLevelsUpdated","_levels$level","checkBuffer","checkFragmentChanged","getMainFwdBufferInfo","_this$backtrackFragme","backtrackFrag","_this$media2","_loadBitrateTestFrag","fragOrPart","followingBufferedFrag","immediateLevelSwitch","abortCurrentFrag","fetchdelay","fragPlayingCurrent","bufferedFrag","nextBufferedFrag","maxStart","startPts","onMediaPlaying","onMediaSeeked","aac","heaac","_curLevel$details","newLevelId","endCC","accurateTimeOffset","_getAudioCodec","fromAltAudio","mediaTrack","alternate","videoTrack","swapAudioCodec","timescale","firstKeyFrame","firstKeyFramePTS","backtrack","_startPTS","_endPTS","_startDTS","_endDTS","ua","channelCount","fragCurrentLevel","LEVEL_SWITCHED","currentFrag","epocMs","SubtitleStreamController","_utils_buffer_helper__WEBPACK_IMPORTED_MODULE_1__","_fragment_finders__WEBPACK_IMPORTED_MODULE_2__","_utils_discontinuities__WEBPACK_IMPORTED_MODULE_3__","_base_stream_controller__WEBPACK_IMPORTED_MODULE_6__","_types_loader__WEBPACK_IMPORTED_MODULE_7__","_types_level__WEBPACK_IMPORTED_MODULE_8__","currentTrackId","tracksBuffered","SUBTITLE_TRACKS_UPDATED","onSubtitleTracksUpdated","SUBTITLE_TRACK_SWITCH","onSubtitleTrackSwitch","SUBTITLE_TRACK_LOADED","onSubtitleTrackLoaded","SUBTITLE_FRAG_PROCESSED","onSubtitleFragProcessed","success","fragStart","fragEnd","endOffsetSubtitles","SUBTITLE","_this$fragCurrent","mediaBufferTimeRanges","mainSlidingStartFragment","foundFrag","encrypted","BufferableInstance","timeranges","getRange","_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_1__","SubtitleTrackController","queuedDefaultTrack","trackChangeListener","onTextTracksChanged","asyncPollTrackChange","pollTrackChange","useTextTrackPolling","subtitlePollingInterval","_subtitleDisplay","subtitleTrack","filterSubtitleTracks","textGroupId","initialTrackId","subtitleTracksUpdated","setSubtitleTrack","SUBTITLE_TRACK_LOADING","toggleTrackModes","groupTracks","oldTrack","nextTrack","subtitleDisplay","_tracks$newId","textTrackList","TimelineController","_utils_cea_608_parser__WEBPACK_IMPORTED_MODULE_2__","_utils_output_filter__WEBPACK_IMPORTED_MODULE_3__","_utils_webvtt_parser__WEBPACK_IMPORTED_MODULE_4__","_utils_texttrack_utils__WEBPACK_IMPORTED_MODULE_5__","_utils_imsc1_ttml_parser__WEBPACK_IMPORTED_MODULE_6__","_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_7__","_types_loader__WEBPACK_IMPORTED_MODULE_8__","_utils_logger__WEBPACK_IMPORTED_MODULE_9__","Cues","unparsedVttFrags","captionsTracks","nonNativeCaptionsTracks","cea608Parser1","cea608Parser2","lastSn","prevCC","vttCCs","presentationOffset","new","captionsProperties","textTrack1","textTrack2","textTrack3","textTrack4","channel1","channel2","channel3","channel4","onFragParsingUserdata","onFragDecrypted","SUBTITLE_TRACKS_CLEARED","onSubtitleTracksCleared","addCues","screen","cueRanges","x1","y1","merged","cueRange","overlap","newCue","CUES_PARSED","getExistingTrack","createCaptionsTrack","createNativeTrack","createNonNativeTrack","_captionsProperties$t","existingTrack","createTextTrack","trackProperties","closedCaptions","NON_NATIVE_TEXT_TRACKS_FOUND","_cleanTracks","reset","hasIMSC1","textCodec","sameTracks","inUseTracks","inUseTrack","canReuseVttTextTrack","textTrackKind","_captionsOrSubtitlesFromCharacteristics","tracksList","_track$attrs","CHARACTERISTICS","transcribesSpokenDialog","describesMusicAndSound","captions","captionsTrack","instreamIdMatch","instreamId","_data$part$index","decrypted","trackPlaylistMedia","_parseIMSC1","_parseVTTs","_appendCues","payloadWebVTT","_fallbackToIMSC1","fragLevel","ccBytes","ccdatas","extractCea608Data","addData","actualCCBytes","tmpByte","ccbyte1","ccbyte2","ccType","manifestTrack","AESCrypto","subtle","aesIV","decrypt","removePadding","AESDecryptor","_utils_typed_array__WEBPACK_IMPORTED_MODULE_0__","outputBytes","paddingBytes","DataView","getUint8","rcon","subMix","Uint32Array","invSubMix","sBox","invSBox","ksRows","keySize","keySchedule","invKeySchedule","initTable","uint8ArrayToUint32Array_","getUint32","subMix0","subMix1","subMix2","subMix3","invSubMix0","invSubMix1","invSubMix2","invSubMix3","xi","sx","x4","x8","expandKey","keyBuffer","sameKey","ksRow","invKsRow","sbox","networkToHostOrderSwap","word","inputArrayBuffer","s0","s1","s2","s3","inputWords0","inputWords1","inputWords2","inputWords3","nRounds","invSBOX","initVector","initVector0","initVector1","initVector2","initVector3","inputInt32","Int32Array","outputInt32","swapWord","Decrypter","_aes_crypto__WEBPACK_IMPORTED_MODULE_0__","_fast_aes_key__WEBPACK_IMPORTED_MODULE_1__","_aes_decryptor__WEBPACK_IMPORTED_MODULE_2__","_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_4__","_utils_typed_array__WEBPACK_IMPORTED_MODULE_5__","observer","_temp","_ref$removePKCS7Paddi","removePKCS7Padding","logEnabled","softwareDecrypter","fastAesKey","remainderData","currentIV","currentResult","browserCrypto","crypto","webkitSubtle","isSync","softwareDecrypt","decryptResult","logOnce","currentChunk","getValidChunk","aesKey","onWebCryptoError","splitPoint","FastAESKey","importKey","_base_audio_demuxer__WEBPACK_IMPORTED_MODULE_0__","_adts__WEBPACK_IMPORTED_MODULE_1__","AACDemuxer","_BaseAudioDemuxer","resetInitSegment","trackDuration","_audioTrack","pid","sequenceNumber","segmentCodec","manifestCodec","inputTimeScale","canParse","appendFrame","basePTS","frameIndex","missing","getAudioConfig","isHeaderPattern","getHeaderLength","getFullFrameLength","canGetFrameLength","isHeader","initTrackConfig","getFrameDuration","parseFrameHeader","adtsObjectType","adtsExtensionSamplingIndex","adtsChanelConfig","adtsSampleingRates","adtsSamplingIndex","samplerate","FRAG_PARSING_ERROR","headerLength","frameLength","newOffset","unit","stamp","header","_length","_sample","initPTSFn","_demux_id3__WEBPACK_IMPORTED_MODULE_1__","_types_demuxer__WEBPACK_IMPORTED_MODULE_2__","_dummy_demuxed_track__WEBPACK_IMPORTED_MODULE_3__","BaseAudioDemuxer","_id3Track","cachedData","resetTimeStamp","deaultTimestamp","resetContiguity","demux","lastDataIndex","id3Data","timestamp","dts","partialData","demuxSampleAes","keyData","ChunkCache","dataLength","concatUint8Arrays","dummyTrack","ExpGolomb","bytesAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","skipBytes","readBits","valu","skipLZ","leadingZeroCount","skipUEG","skipEG","readUEG","clz","readEG","readBoolean","readUByte","readUShort","readUInt","skipScalingList","lastScale","nextScale","readSPS","numRefFramesInPicOrderCntCycle","scalingListCount","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","profileIdc","chromaFormatIdc","picOrderCntType","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","readSliceType","isFooter","getID3Data","getTimeStamp","isTimeStampFrame","getID3Frames","decodeFrame","utf8ArrayToStr","testables","decoder","front","readSize","readTimeStamp","getFrameData","frameData","decodePrivFrame","decodeURLFrame","decodeTextFrame","owner","privateData","timeStampFrame","pts33Bit","exitOnNull","getTextDecoder","decoded","char2","char3","TextDecoder","_mpegaudio__WEBPACK_IMPORTED_MODULE_3__","MP3Demuxer","_types_demuxer__WEBPACK_IMPORTED_MODULE_1__","_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_2__","emsgSchemePattern","MP4Demuxer","txtTrack","captionTrack","_initData$video","_initData$audio","_timescale","_codec","sampleDuration","videoSamples","segmentedData","remainder","extractID3Track","emsgs","emsgInfo","schemeIdUri","presentationTime","timeScale","presentationTimeDelta","parseHeader","chromeVersion","BitratesMap","SamplingRateMap","SamplesCoefficients","BytesInSlot","samplesPerFrame","sampleRate","mpegVersion","mpegLayer","bitRateIndex","sampleRateIndex","paddingBit","channelMode","bitRate","sampleCoefficient","bytesInSlot","_crypt_decrypter__WEBPACK_IMPORTED_MODULE_0__","_tsdemuxer__WEBPACK_IMPORTED_MODULE_1__","SampleAesDecrypter","decryptBuffer","encryptedData","decryptAacSample","sampleIndex","sync","curUnit","encryptedBuffer","localthis","decryptedBuffer","decryptAacSamples","getAvcEncryptedData","decodedData","encryptedDataLen","Int8Array","outputPos","inputPos","getAvcDecryptedUnit","uint8DecryptedData","decryptAvcSample","unitIndex","decryptAvcSamples","curUnits","TransmuxerInterface","webworkify_webpack__WEBPACK_IMPORTED_MODULE_0__","_demux_transmuxer__WEBPACK_IMPORTED_MODULE_2__","eventemitter3__WEBPACK_IMPORTED_MODULE_6__","isTypeSupported","onTransmuxComplete","onFlush","onwmsg","forwardMessage","typeSupported","mp4","mpeg","mp3","onWorkerMessage","INTERNAL_EXCEPTION","filename","lineno","cmd","terminate","defaultInitPTS","_lastFrag$initSegment","transmuxing","lastFrag","discontinuity","trackSwitch","snDiff","partDiff","initSegmentChange","configureTransmuxer","_transmuxResult","handleTransmuxComplete","_transmuxResult2","handleFlushResult","logType","configure","TransmuxerWorker","_demux_transmuxer__WEBPACK_IMPORTED_MODULE_0__","eventemitter3__WEBPACK_IMPORTED_MODULE_3__","logFn","forwardWorkerLogs","emitTransmuxComplete","transferable","_transmuxResult$remux","addToTransferable","Transmuxer","isPromise","TransmuxConfig","TransmuxState","_crypt_decrypter__WEBPACK_IMPORTED_MODULE_2__","_demux_aacdemuxer__WEBPACK_IMPORTED_MODULE_3__","_demux_mp4demuxer__WEBPACK_IMPORTED_MODULE_4__","_demux_tsdemuxer__WEBPACK_IMPORTED_MODULE_5__","_demux_mp3demuxer__WEBPACK_IMPORTED_MODULE_6__","_remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_7__","_remux_passthrough_remuxer__WEBPACK_IMPORTED_MODULE_8__","muxConfig","remux","demuxer","remuxer","decryptionPromise","transmuxConfig","currentTransmuxState","uintData","defaultInitPts","resetInitialTimestamp","encryptionType","getEncryptionType","getDecrypter","emptyResult","needsProbing","transmux","currentState","transmuxResults","demuxResultOrPromise","demuxResult","flushRemux","_this$currentTransmux","resetNextTimestamp","transmuxSampleAes","transmuxUnencrypted","_demux","mux","Remuxer","Demuxer","Function","discardEPB","_adts__WEBPACK_IMPORTED_MODULE_0__","_mpegaudio__WEBPACK_IMPORTED_MODULE_1__","_exp_golomb__WEBPACK_IMPORTED_MODULE_2__","_sample_aes__WEBPACK_IMPORTED_MODULE_3__","_events__WEBPACK_IMPORTED_MODULE_4__","_utils_mp4_tools__WEBPACK_IMPORTED_MODULE_5__","_errors__WEBPACK_IMPORTED_MODULE_7__","_types_demuxer__WEBPACK_IMPORTED_MODULE_8__","TSDemuxer","sampleAes","pmtParsed","_duration","_pmtId","_avcTrack","_txtTrack","aacOverFlow","avcSample","pesData","isSampleAes","pes","avcId","avcData","audioId","id3Id","audioData","unknownPID","pmtId","tsPacketErrors","stt","parsePES","parseAVCPES","parseAACPES","parseMPEGPES","parseID3PES","parsePAT","parsedPIDs","parsePMT","avc","extractRemainingSamples","parseAVCNALu","spsfound","audFound","pushAccessUnit","createAVCSample","sliceType","sps","codecarray","codecstring","pps","getLastNalUnit","_avcSample","lastUnit","overflow","naluState","lastState","lastUnitStart","lastUnitType","_unit","_lastUnit","_tmp","frameMissingBytes","sampleLength","frameOverflowBytes","frameDuration","id3Sample","tableEnd","pesLen","pesHdrLen","pesPts","pesDts","newData","pesFlags","payloadStartOffset","dataLen","avcTrack","nbSamples","lastSample","EPBPositions","newLength","sourceIndex","ErrorTypes","ErrorDetails","url_toolkit__WEBPACK_IMPORTED_MODULE_0__","_loader_playlist_loader__WEBPACK_IMPORTED_MODULE_1__","_loader_key_loader__WEBPACK_IMPORTED_MODULE_2__","_controller_id3_track_controller__WEBPACK_IMPORTED_MODULE_3__","_controller_latency_controller__WEBPACK_IMPORTED_MODULE_4__","_controller_level_controller__WEBPACK_IMPORTED_MODULE_5__","_controller_fragment_tracker__WEBPACK_IMPORTED_MODULE_6__","_controller_stream_controller__WEBPACK_IMPORTED_MODULE_7__","_is_supported__WEBPACK_IMPORTED_MODULE_8__","_config__WEBPACK_IMPORTED_MODULE_10__","eventemitter3__WEBPACK_IMPORTED_MODULE_11__","_events__WEBPACK_IMPORTED_MODULE_12__","coreComponents","networkControllers","_emitter","_autoLevelCapping","latencyController","levelController","DefaultConfig","ConfigAbrController","ConfigBufferController","ConfigCapLevelController","ConfigFpsController","playListLoader","keyLoader","id3TrackController","createController","ControllerClass","components","controllerInstance","eventObject","DESTROYING","loadedSource","loadingSource","controller","recoverMediaError","loadLevel","manualLevel","shouldStartCapping","newCapLevelToPlayerSize","currentProgramDateTime","subtitleTrackId","changeTypeSupported","_utils_mediasource_helper__WEBPACK_IMPORTED_MODULE_0__","getSourceBuffer","SourceBuffer","WebKitSourceBuffer","sourceBufferValidAPI","_sourceBuffer$prototy","DateRangeAttribute","DateRange","_utils_attr_list__WEBPACK_IMPORTED_MODULE_1__","dateRangeAttr","dateRangeWithSameId","_startDate","_endDate","_badValueForSameId","previousAttr","decimalFloatingPoint","PLANNED_DURATION","FragmentLoader","LoadError","_wrapNativeSuper","Class","_cache","Wrapper","_construct","_getPrototypeOf","Parent","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","getPrototypeOf","MIN_CHUNK_SIZE","partLoadTimeout","_onProgress","FragmentILoader","DefaultILoader","loaderContext","createLoaderContext","loaderConfig","maxRetry","retryDelay","maxRetryDelay","highWaterMark","resetLoader","onAbort","onTimeout","onProgress","updateStatsFromPart","fragStats","partStats","partTotal","estTotalParts","estLoadedParts","estRemainingBytes","fragLoading","partLoading","rangeStart","rangeEnd","byteRangeStartOffset","byteRangeEndOffset","_Error","_len","_key","ElementaryStreamTypes","BaseSegment","Part","url_toolkit__WEBPACK_IMPORTED_MODULE_1__","_level_key__WEBPACK_IMPORTED_MODULE_3__","_load_stats__WEBPACK_IMPORTED_MODULE_4__","_inheritsLoose","baseurl","_this$elementaryStrea","_byteRange","setByteRange","byteRange","_BaseSegment","_decryptdata","rawProgramDateTime","tagList","levelkey","createInitializationVector","segmentNumber","uint8View","setDecryptDataFromLevelKey","fromURI","_this$decryptdata","_BaseSegment2","partAttrs","fragOffset","gap","enumeratedString","KeyLoader","loaders","decryptkey","decrypturl","destroyInternalLoaders","onKeyLoading","loaderName","Loader","fragLoader","loaderCallbacks","loadsuccess","loaderror","loadtimeout","LevelDetails","needSidxRanges","m3u8","canSkipUntil","preloadHint","partSnDiff","partIndexDiff","runTime","_this$partList","_this$fragments","_this$partList2","_this$partList3","LevelKey","absoluteOrBaseURI","_uri","keyFormatVersions","keyID","fromURL","relativeUrl","LoadStats","M3U8Parser","_date_range__WEBPACK_IMPORTED_MODULE_2__","_fragment__WEBPACK_IMPORTED_MODULE_3__","_level_details__WEBPACK_IMPORTED_MODULE_4__","_level_key__WEBPACK_IMPORTED_MODULE_5__","_utils_attr_list__WEBPACK_IMPORTED_MODULE_6__","_utils_logger__WEBPACK_IMPORTED_MODULE_7__","_utils_codecs__WEBPACK_IMPORTED_MODULE_8__","MASTER_PLAYLIST_REGEX","MASTER_PLAYLIST_MEDIA_REGEX","LEVEL_PLAYLIST_REGEX_FAST","LEVEL_PLAYLIST_REGEX_SLOW","MP4_REGEX_SUFFIX","findGroup","mediaGroupId","group","convertAVC1ToAVCOTI","avcdata","parseMasterPlaylist","sessionData","hasSessionData","lastIndex","decimalInteger","NAME","resolution","decimalResolution","setCodecs","sessionAttrs","parseMasterPlaylistMedia","medias","TYPE","LANGUAGE","autoselect","forced","groupCodec","assignCodec","parseLevelPlaylist","levelUrlId","currentSN","currentPart","discontinuityCounter","prevFrag","firstPdtIndex","createNextFrag","assignProgramDateTime","tag","value1","value2","skipAttrs","_keyAttrs$enumeratedS","keyAttrs","decryptmethod","decrypturi","decryptiv","hexadecimalInteger","decryptkeyformatversions","decryptkeyid","decryptkeyformat","mapAttrs","setInitSegment","serverControlAttrs","optionalFloat","partInfAttrs","previousFragmentPart","preloadHintAttrs","renditionReportAttrs","fragmentLength","firstFragment","_URLToolkit$parseURL$","_URLToolkit$parseURL","fragPrev","backfillProgramDateTimes","codecs","filtered","preferred","unknownCodecs","groupItem","codecProperty","codecValue","BYTERANGE","_m3u8_parser__WEBPACK_IMPORTED_MODULE_5__","_utils_attr_list__WEBPACK_IMPORTED_MODULE_7__","getResponseUrl","PlaylistLoader","onAudioTrackLoading","onSubtitleTrackLoading","createInternalLoader","PLoader","getInternalLoader","resetInternalLoader","contextType","LEVEL","_context$deliveryDire","isSidxRequest","handleSidxRequest","handlePlaylistLoaded","handleTrackOrLevelPlaylist","handleMasterPlaylist","handleManifestParsingError","handleNetworkError","_M3U8Parser$parseMast","audioGroups","subtitleGroups","levelId","mapContextToLevelType","singleLevel","_levelDetails$fragmen","sidxUrl","LEVEL_EMPTY_ERROR","sidxBox","sidxInfo","sidxReferences","references","segmentRef","segRefInfo","moovBox","moovEndOffset","MANIFEST_PARSING_ERROR","UNKNOWN","MANIFEST_LOAD_TIMEOUT","MANIFEST_LOAD_ERROR","SUBTITLE_TRACK_LOAD_TIMEOUT","SUBTITLE_LOAD_ERROR","errorData","getCacheAge","isFiniteNumber","AAC","getSilentFrame","UINT32_MAX","MP4","avc1","avcC","btrt","dinf","dref","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","pasp","sdtp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trun","trex","tkhd","vmhd","smhd","videoHdlr","audioHdlr","HDLR_TYPES","STTS","STSC","STCO","STSZ","VMHD","SMHD","STSD","majorBrand","avc1Brand","minorVersion","FTYP","box","DINF","upperWordDuration","lowerWordDuration","baseMediaDecodeTime","boxes","dependsOn","isDependedOn","hasRedundancy","avcc","hSpacing","vSpacing","configlen","sampleDependencyTable","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","cts","arraylen","isLeading","paddingValue","isNonSync","degradPrio","MP4Remuxer","normalizePts","flushTextTrackMetadataCueSamples","flushTextTrackUserdataCueSamples","_aac_helper__WEBPACK_IMPORTED_MODULE_1__","_mp4_generator__WEBPACK_IMPORTED_MODULE_2__","_utils_logger__WEBPACK_IMPORTED_MODULE_5__","_utils_timescale_conversion__WEBPACK_IMPORTED_MODULE_7__","safariWebkitVersion","ISGenerated","_initPTS","_initDTS","nextAvcDts","nextAudioPts","videoSampleDuration","isAudioContiguous","isVideoContiguous","_result","defaultTimeStamp","getVideoStartPts","rolloverDetected","minPTS","audioTimeOffset","videoTimeOffset","hasAudio","hasVideo","enoughAudioSamples","enoughVideoSamples","generateIS","firstKeyFrameIndex","findKeyframeIndex","audiovideoTimestampDelta","remuxAudio","audioTrackLength","remuxVideo","initDTS","audioSamples","computePTSDTS","firstDTS","lastDTS","inputSamples","outputSamples","mp4SampleDuration","maxPTS","sortSamples","deltadts","deltapts","inputDuration","averageSampleDuration","foundHole","firstPTS","nbNalu","naluLen","nbUnits","sampleLen","mdatSize","MUX_ERROR","setUint32","stretchedLastFrame","minDtsDelta","minPtsDelta","maxDtsDelta","maxPtsDelta","avcSampleUnits","mp4SampleLength","_j","_nbUnits","unitData","unitDataLen","ptsDelta","lastFrameDuration","gapTolerance","deltaToFrameEnd","compositionTimeOffset","Mp4Sample","_i3","nextDts","_pts","nextPts","nb","scaleFactor","inputSampleDuration","rawMPEG","alignedWithVideo","timeOffsetMpegTS","newStamp","fillFrame","lastPTS","_j2","_nbSamples","audioSample","_pts2","unitLen","remuxEmptyAudio","videoData","silentFrame","reference","isKeyframe","Mp4SampleFlags","_mp4_remuxer__WEBPACK_IMPORTED_MODULE_1__","_loader_fragment__WEBPACK_IMPORTED_MODULE_3__","PassThroughRemuxer","emitInitSegment","initTracks","generateInitSegment","getParsedTrackCodec","_this$initPTS","initPtsNum","parsedCodec","TaskLoop","_boundTick","_tickTimer","_tickInterval","_tickCallCount","hasInterval","hasNextTick","millis","CMCDVersion","CMCDObjectType","CMCDStreamingFormat","CMCDStreamType","MetadataSchema","HlsSkip","getSkipValue","v2","Yes","HlsUrlParameters","Level","searchParams","newValue","PlaylistContextType","PlaylistLevelType","ChunkMetadata","AttrList","DECIMAL_RESOLUTION_REGEX","ATTR_LIST_REGEX","parseAttrList","attrName","intValue","stringValue","hexadecimalIntegerAsNumber","comparisonFn","minIndex","maxIndex","currentElement","comparisonResult","BufferHelper","_logger__WEBPACK_IMPORTED_MODULE_0__","noopBuffered","maxHoleDuration","vbuffered","buffered2","buf2len","buf2end","bufferStartNext","bufferStart","Row","CaptionScreen","VerboseLevel","specialCea608CharsCodes","getCharForByte","_byte","charCode","NR_ROWS","NR_COLS","rowsLowCh1","rowsHighCh1","rowsLowCh2","rowsHighCh2","backgroundColors","CaptionsLogger","verboseLevel","severity","numArrayToHexArray","numArray","hexArray","PenState","foreground","underline","italics","flash","setStyles","attribs","isDefault","newPenState","StyledUnicodeChar","uchar","penState","setChar","setPenState","newChar","isEmpty","logger","chars","currPenState","cueStartTime","_proto4","equal","empty","setCursor","absPos","DEBUG","moveCursor","relPos","newPos","backSpace","insertChar","_byte2","_char","clearFromPos","startPos","clearToEndOfRow","getTextString","_char2","setPenStyles","rows","currRow","nrRollUpRows","lastOutputScreen","_proto5","_char3","setPen","INFO","setPAC","pacData","newRow","row","topRowIndex","prevLineTime","indent","prevPos","setBkgData","bkgData","setRollUpRows","nrRows","rollUp","TEXT","getDisplayText","topRow","asOneRow","displayText","rowNr","rowText","getTextAndFormat","Cea608Channel","channelNumber","outputFilter","chNr","verbose","displayedMemory","nonDisplayedMemory","currRollUpRow","writeScreen","_proto6","getHandler","setHandler","newHandler","setMode","newMode","insertChars","outputDataUpdate","ccRCL","ccBS","ccAOF","ccAON","ccDER","ccRU","ccFON","ccRDC","ccTR","ccRTD","ccEDM","ccCR","ccENM","ccEOC","ccTO","nrCols","ccMIDROW","colorIndex","dispatchCue","cueSplitAtTime","Cea608Parser","out1","out2","currentChannel","cmdHistory","_proto7","byteList","cmdFound","charsFound","DATA","parseCmd","parseMidrow","parsePAC","parseBackgroundAttributes","parseChars","currChNr","WARNING","hasCmdRepeated","setLastCmd","interpretPAC","_byte3","pacIndex","channelNr","oneCode","charCodes","charCode1","hexCodes","isCodecType","isCodecSupportedInMp4","sampleEntryCodesISO","a3ds","alac","alaw","dra1","dtsc","dtse","dtsh","enca","g719","g726","m4ae","mha1","mha2","mhm1","mhm2","mlpa","Opus","samr","sawb","sawp","sevc","sqcp","ssmv","twos","ulaw","avc2","avc3","avc4","avcp","av01","drac","dvav","dvhe","encv","hev1","hvc1","mjp2","mp4v","mvc1","mvc2","mvc3","mvc4","resv","rv60","s263","svc1","svc2","vp08","vp09","stpp","wvtt","typeCodes","_vttparser__WEBPACK_IMPORTED_MODULE_0__","_webvtt_parser__WEBPACK_IMPORTED_MODULE_1__","_texttrack_utils__WEBPACK_IMPORTED_MODULE_2__","WHITESPACE_CHAR","captionScreen","indenting","cueText","getCueById","align","cueA","cueB","findFirstFragWithCC","shouldAlignOnDiscontinuities","findDiscontinuousReferenceFrag","adjustSlidingStart","alignStream","alignPDT","alignFragmentByPDTDelta","alignMediaPlaylistByPDT","_logger__WEBPACK_IMPORTED_MODULE_1__","_controller_level_helper__WEBPACK_IMPORTED_MODULE_2__","firstFrag","prevDetails","prevFrags","curFrags","prevStartFrag","adjustFragmentStart","referenceFrag","alignDiscontinuities","lastDetails","lastPDT","newPDT","refDetails","_utils_ewma__WEBPACK_IMPORTED_MODULE_0__","EwmaBandWidthEstimator","slow","defaultEstimate","defaultEstimate_","minWeight_","minDelayMs_","slow_","fast_","halfLife","getTotalWeight","durationMs","numBytes","durationS","bandwidthInBps","EWMA","estimate","alpha_","estimate_","totalWeight_","adjAlpha","zeroFactor","fetchSupported","_loader_load_stats__WEBPACK_IMPORTED_MODULE_1__","_demux_chunk_cache__WEBPACK_IMPORTED_MODULE_2__","AbortController","ReadableStream","Request","FetchLoader","fetchSetup","requestTimeout","getRequest","abortInternal","_this$callbacks","initParams","credentials","Headers","getRequestParameters","isArrayBuffer","LENGTH","FetchError","loadProgressively","responseData","loaderResponse","chunkCache","reader","getReader","pump","IMSC1_CODEC","parseIMSC1","_mp4_tools__WEBPACK_IMPORTED_MODULE_0__","_vttparser__WEBPACK_IMPORTED_MODULE_1__","_vttcue__WEBPACK_IMPORTED_MODULE_2__","_timescale_conversion__WEBPACK_IMPORTED_MODULE_4__","_webvtt_parser__WEBPACK_IMPORTED_MODULE_5__","HMSF_REGEX","TIME_UNIT_REGEX","textAlignToLineAlign","center","callBack","errorCallBack","ttmlList","syncTime","ttml","tt","DOMParser","parseFromString","getElementsByTagName","defaultRateInfo","frameRate","subFrameRate","frameRateMultiplier","tickRate","rateInfo","styleElements","collectionToDictionary","getElementCollection","regionElements","cueElements","cueElement","getTextContent","parseTtmlTime","timestampParsingError","region","ttsNs","regionStyle","styleAttributes","regionStyleName","getAttributeNS","getTtmlStyles","lineAlign","parseTTML","fromElement","parentName","childName","elementsWithId","dict","_node$childNodes","nodeName","textContent","hasAttributeNS","timeAttributeValue","parseHoursMinutesSecondsFrames","parseTimeUnits","enableLogs","noop","fakeLogger","exportedLogger","consolePrintFn","debugConfig","functions","exportLoggerFunctions","KeySystems","getMediaSource","WebKitMediaSource","RemuxerTrackIdConfig","bin2str","readUint16","readUint32","readSint32","writeUint32","findBox","parseSegmentIndex","parseInitSegment","getStartDTS","computeRawDurationFromSamples","offsetStartDTS","segmentValidRange","appendUint8Array","parseSamples","parseSEIMessageFromNALu","parseEmsg","_typed_array__WEBPACK_IMPORTED_MODULE_0__","_loader_fragment__WEBPACK_IMPORTED_MODULE_1__","_demux_id3__WEBPACK_IMPORTED_MODULE_2__","endbox","subresults","sidx","startByte","referencesCount","referenceIndex","referenceInfo","referenceSize","subsegmentDuration","earliestPresentationTime","traks","_index","hdlrType","soun","vide","fmp4","baseTime","sidxDuration","sidxs","dur","rawDuration","videoDuration","audioDuration","trafs","trackDefault","tfhdFlags","truns","sampleCount","upper","lower","segmentedRange","moofs","temp","seiSamples","isHEVCFlavor","moofOffset","defaultSampleDuration","defaultSampleSizePresent","defaultSampleSize","defaultSampleFlagsPresent","tfhdOffset","delimit","baseCodec","isHEVC","dataOffsetPresent","dataOffset","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleSize","sampleFlagsPresent","sampleCompositionOffsetsPresent","compositionOffset","trunOffset","sampleOffset","ix","naluTotalSize","naluSize","naluType","isSEIMessage","unescapedData","seiPtr","payloadType","payloadSize","endOfCaptions","leftOver","providerCode","userStructure","userDataType","totalBytes","uuidStrArray","_b","userDataBytes","userData","eventDuration","leftPresentationTime","rightPresentationTime","isSafeInteger","OutputFilter","sendAddTrackEvent","addCueToTrack","clearCurrentCues","removeCuesInRange","getCuesInRange","videoEl","Event","createEvent","initEvent","dispatchEvent","textTrackCue","cuesFound","firstCueInRange","mid","getFirstCueIndexAfterTime","_cue","toTimescaleFromBase","destScale","srcBase","toTimescaleFromScale","srcScale","toMsFromMpegTsClock","toMpegTsClockFromTimescale","sliceUint8","AllowedDirections","AllowedAlignments","isAllowedValue","allowed","lcValue","findAlignSetting","extend","rest","cobj","baseObj","hasBeenReset","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","setting","findDirectionSetting","SyntaxError","displayState","getCueAsHTML","parseTimeStamp","fixLineBreaks","VTTParser","_vttcue__WEBPACK_IMPORTED_MODULE_0__","computeSeconds","dflt","defaultKey","parseOptions","keyValueDelim","groupDelim","kv","defaults","parseCue","regionList","oInput","consumeTimeStamp","ts","skipWhitespace","vals","vertical","consumeCueSettings","collectNextLine","alreadyCollectedLine","hasSubstring","generateCueId","parseWebVTT","_timescale_conversion__WEBPACK_IMPORTED_MODULE_3__","_remux_mp4_remuxer__WEBPACK_IMPORTED_MODULE_4__","LINEBREAKS","inputString","searchString","vttByteArray","parsingError","vttLines","initPTS90Hz","cueTime","timestampMapMPEGTS","timestampMapLOCAL","inHeader","currCC","cueOffset","webVttMpegTsMapOffset","_prevCC","calculateOffset","timeString","secs","mins","cueString2millis","AGE_HEADER_LINE_REGEX","XhrLoader","retryTimeout","onprogress","loadInternal","setRequestHeader","readystatechange","loadprogress","responseText","responseURL","lengthComputable","getAllResponseHeaders","getResponseHeader","voidElement","comment","_classCallCheck","_inherits","_possibleConstructorReturn","_toArray","_interopDefaultLegacy","_typeof__default","_classCallCheck__default","_createClass__default","_assertThisInitialized__default","_inherits__default","_possibleConstructorReturn__default","_getPrototypeOf__default","_defineProperty__default","_toArray__default","ownKeys$6","_objectSpread$6","consoleLogger","baseLogger","Logger","concreteLogger","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","observers","cloned","_cloned","rej","makeString","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","setPath","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","regexEscape","_entityMap","escape","isIE10","userAgentData","ownKeys$5","_objectSpread$5","_createSuper$3","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct$3","Super","NewTarget","deepFind","keySeparator","joinedPath","ResourceStore","_EventEmitter","_super","defaultNS","ignoreJSONStructure","lng","addNamespaces","resources","addResource","deep","pack","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","getDataByLanguage","postProcessor","processors","addPostProcessor","handle","translator","processor","ownKeys$4","_objectSpread$4","_createSuper$2","_isNativeReflectConstruct$2","checkedLoadedFor","Translator","interpolation","resolved","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","matched","ki","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","overloadTranslationOptionHandler","returnDetails","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","isValidLookup","missingKeyNoValueFallbackToKey","resForMissing","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","defaultVariables","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","interpolate","na","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","extracted","fallbackNS","needsZeroSuffixLookup","ordinal","shouldUseIntlApi","needsContextHandling","utils","hasLoadedNamespace","possibleKey","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","pluralSeparator","contextKey","contextSeparator","returnNull","returnEmptyString","resourceStore","capitalize","LanguageUtil","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","cleanCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","isSupportedCode","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","deprecatedJsonVersions","suffixesOrder","zero","one","two","few","many","createRules","rules","numbers","plurals","PluralResolver","compatibilityJSON","Intl","PluralRules","_unused","rule","getRule","resolvedOptions","pluralCategories","pluralCategory1","pluralCategory2","pluralCategory","prepend","getSuffixRetroCompatible","noAbs","simplifyPluralSuffix","returnSuffix","ownKeys$3","_objectSpread$3","Interpolator","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","regex","safeValue","todo","matchedVar","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","doReduce","elem","ownKeys$2","_objectSpread$2","createCachedFormatter","Formatter","NumberFormat","currency","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","ListFormat","_format","mem","_parseFormatStr","formatStr","formatName","formatOptions","optStr","_opt$split","_opt$split2","parseFormatStr","formatted","valOptions","formatParams","locale","ownKeys$1","_objectSpread$1","_createSuper$1","_isNativeReflectConstruct$1","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","languages","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","pendingCount","addResourceBundle","_getLastOfPath2","removePending","loadedKeys","fcName","tried","wait","resolver","queueLoad","loadOne","prepareLoading","fallbackValue","isUpdate","clb","initImmediate","preload","partialBundledLanguages","tDescription","transformOptions","_createSuper","bindMemberFunctions","inst","I18n","isInitialized","isClone","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","finish","initializedStoreOnce","usedCallback","resolvedLanguage","setResolvedLanguage","li","lngInLngs","hasLanguageSomeTranslations","isLanguageChangingTo","setLngProps","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","keyPrefix","fixedT","resultKey","_this$translator","_this$translator2","exists","lastLng","loadNotPending","loadState","precheck","preResult","preloaded","newLngs","mergedOptions","clone","membersToCopy","createInstance","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","crit","findBy","isValidType","forAll","local","HASH_UNDEFINED","argsTag","boolTag","dateTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reFlags","reIsHostCtor","reIsUint","cloneableTags","freeGlobal","freeSelf","root","freeExports","nodeType","freeModule","moduleExports","addMapEntry","pair","addSetEntry","arrayReduce","iteratee","accumulator","initAccum","isHostObject","mapToArray","overArg","transform","setToArray","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","objectToString","reIsNative","getPrototype","objectCreate","nativeGetSymbols","nativeIsBuffer","nativeKeys","getNative","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","entry","ListCache","MapCache","Stack","__data__","arrayLikeKeys","inherited","isObjectLike","isArrayLike","isArrayLikeObject","isArguments","baseTimes","skipIndexes","isIndex","assignValue","objValue","eq","assocIndexOf","baseClone","isDeep","isFull","customizer","isObject","isArr","initCloneArray","copyArray","getTag","isFunc","cloneBuffer","isPrototype","initCloneObject","copyObject","getSymbols","copySymbols","baseAssign","cloneFunc","cloneArrayBuffer","dataView","cloneDataView","typedArray","cloneTypedArray","cloneMap","cloneRegExp","cloneSet","symbol","initCloneByTag","stacked","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getAllKeys","arrayEach","subValue","baseIsNative","isFunction","getMapData","getValue","pairs","LARGE_ARRAY_SIZE","ctorString","isLength","baseKeys","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","nativeMax","nativeMin","toNumber","isSymbol","isBinary","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","arrayIncludes","fromIndex","fromRight","baseFindIndex","baseIsNaN","baseIndexOf","arrayIncludesWith","comparator","arrayMap","baseUnary","cacheHas","SetCache","pattern","castArrayLikeObject","arrays","mapped","othLength","othIndex","caches","maxLength","seen","outer","computed","baseIntersection","otherArgs","arrayTag","errorTag","typedArrayTags","freeProcess","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","nativeObjectToString","symToStringTag","isArg","isBuff","isType","baseGetTag","isOwn","unmasked","getRawTag","baseIsArguments","baseIsEqual","bitmask","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","isMasked","arrValue","resIndex","arrayFilter","FUNC_ERROR_TEXT","magnetURIDecode","encode","xts","xt","infoHashBuffer","infoHashV2Buffer","infoHashV2","xtsDeduped","publicKeyBuffer","xs","publicKey","dn","keywords","kt","tr","urlList","ws","as","peerAddresses","bep53Range","base32","param","keyval","decodedStr","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","componentName","propFullName","secret","getShim","ReactPropTypes","objectOf","checkPropTypes","global","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","ucs2decode","counter","ucs2encode","digitToBasic","digit","flag","adapt","numPoints","firstTime","baseMinusTMin","basic","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","qs","maxKeys","kstr","vstr","stringifyPrimitive","ks","aa","ca","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","setAttributeNS","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Pa","Qa","$$typeof","_payload","_init","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","controlled","ab","bb","db","ownerDocument","eb","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","namespaceURI","firstChild","MSApp","execUnsafeLocalFunction","ob","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","opacity","order","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","setProperty","menuitem","area","col","embed","img","keygen","meta","wbr","ub","vb","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","jc","unstable_LowPriority","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","sc","tc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","delete","pointerId","Tc","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","defaultPrevented","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","detail","vd","Ad","screenX","screenY","pageX","pageY","getModifierState","zd","relatedTarget","toElement","movementX","movementY","Bd","Dd","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","fe","ge","he","le","tel","week","me","ne","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","compareDocumentPosition","Me","HTMLIFrameElement","Ne","contentEditable","Oe","focusedElem","selectionRange","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","of","pf","qf","rf","capture","passive","J","tf","uf","parentWindow","vf","wf","xa","$a","ba","je","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","defaultProps","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","bh","ch","eventTime","lane","dh","K","eh","fh","gh","hh","ih","jh","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_owner","_stringRef","th","uh","vh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","gi","ii","ji","getSnapshot","mi","ni","lastEffect","stores","oi","pi","qi","ri","si","ti","ui","vi","wi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Cj","Dj","nj","oj","pj","qj","rj","tj","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onclick","createElementNS","createTextNode","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","isHidden","gk","hk","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","pk","Y","Z","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","rl","unmount","unstable_scheduleHydration","tl","usingClientEntryPoint","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","FOCUS_GROUP","FOCUS_DISABLED","useMergeRefs","assignRef","facade","hiddenGuard","InFocusGuard","__assign","ItoI","innerCreateMedium","middleware","assigned","useMedium","assignSyncMedium","cbs","assignMedium","pendingQueue","executeQueue","cycle","createMedium","mediumFocus","mediumBlur","mediumEffect","mediumSidecar","medium","ssr","createSidecarMedium","emptyArray","parentRef","_extends2","_React$useState","realObserved","setObserved","observed","isActive","originalFocusedElement","noFocusGuards","persistentFocus","crossFrame","allowTextSelection","whiteList","hasPositiveIndices","_props$shards","shards","_props$as","Container","_props$lockProps","containerProps","SideCar","sideCar","shouldReturnFocus","returnFocus","focusOptions","onActivationCallback","onActivation","onDeactivationCallback","onDeactivation","allowDefer","returnFocusTo","howToReturnFocus","returnFocusOptions","setObserveNode","newObserved","hasLeadingGuards","hasTailingGuards","mergedRef","reducePropsToState","handleStateChangeOnClient","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","peek","PureComponent","getDisplayName","getParentNode","Node","DOCUMENT_FRAGMENT_NODE","host","isTopNode","DOCUMENT_NODE","isVisibleUncached","checkParent","ELEMENT_NODE","computedStyle","getPropertyValue","isElementHidden","isVisibleCached","visibilityCache","cached","isAutoFocusAllowedCached","isAutoFocusAllowed","isAutoFocusAllowedUncached","getDataset","isHTMLInputElement","isRadioElement","attribute","isGuard","_a","focusGuard","isNotAGuard","isDefined","correctNode","findSelectedRadio","pickFirstFocus","pickFocusable","NEW_FOCUS","newFocus","innerNodes","outerNodes","lastNode","cnt","firstFocus","lastFocus","isOnGuard","resultSet","activeIndex","lastNodeInside","indexDiff","firstNodeIndex","lastNodeIndex","correctedNodes","correctedIndexDiff","returnFirstNode","returnLastNode","toArray","asArray","tabSort","tabDiff","orderByTabIndex","filterNegative","keepGuards","queryTabbables","queryGuardTabbables","getFocusablesWithShadowDom","withGuards","shadowRoot","getFocusables","parents","filterFocusable","isHTMLButtonElement","notHiddenInput","filterAutoFocusable","getTabbableNodes","topNodes","getAllTabbableNodes","parentAutofocusables","topNode","parentFocus","getParentAutofocusables","getTopParent","getAllAffectedNodes","currentNode","contained","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","filterNested","getNestedShadowActiveElement","getActiveElement","getParents","getCommonParent","nodeA","nodeB","parentsA","parentsB","currentParent","getTopCommonParent","baseActiveElement","leftEntry","rightEntries","activeElements","leftEntries","topCommon","subEntry","common","getFocusMerge","commonParent","anyFocusable","innerElements","srcNodes","dstNodes","remap","autoFocusables","orderedInnerElements","entity","autoFocusable","allParentAutofocusables","autofocus","guardCount","lockDisabled","focusable","focusInsideIframe","focusInside","getFocusabledIn","lockItem","guard","deferAction","setImmediate","isFreeFocus","lastActiveTrap","lastActiveFocus","lastPortaledElement","focusWasOutsideWindow","defaultWhitelist","autoGuard","startIndex","step","allNodes","lastGuard","focusAutoGuard","extractRef","checkInHost","check","boundary","activateTrap","_lastActiveTrap","workingNode","portaledElement","workingArea","focusWhitelisted","withinHost","newActiveElement","focusedIndex","onTrap","observerNode","onWindowBlur","moveFocusInside","propsList","_ref5","traps","trap","lastTrap","sameTrap","_ref6","FocusLockCombination","_objectWithoutPropertiesLoose","I18nextProvider","_react","I18nContext","Trans","i18nKey","_ref$tOptions","tOptions","i18nFromProps","tFromProps","shouldUnescape","additionalProps","_objectWithoutProperties2","_excluded","i18nFromContext","defaultNSFromContext","getI18n","_TransWithoutContext","_defineProperty2","nodesToString","_excluded2","_i18nInstance","_utils","warnOnce","reactI18nextOptions","_defaults","getDefaults","react","transEmptyNodeValue","hashTransKey","interpolationOverride","combinedTOpts","translation","targetString","i18nOptions","keepArray","transKeepBasicHtmlNodesFor","emptyChildrenButNeedsHandling","getData","childs","getAsArray","hasChildren","getChildren","_typeof2","isValidElement","ast","_htmlParseStringify","renderInner","rootReactNode","mappedChildren","mapAST","hasValidReactChildren","pushTranslatedJSX","isVoid","dummy","cloneElement","reactNode","astNode","reactNodes","newTarget","translationContent","isElement","isValidTranslationWithChildren","isEmptyTransWithHTML","isKnownComponent","_inner","transSupportBasicHtmlNodes","_inner3","_inner4","wrapTextNodes","transWrapTextNodes","_content","renderNodes","useAsParent","defaultTransParent","checkLength","stringNode","childrenArray","childIndex","childPropsCount","shouldKeepChild","childChildren","i18nIsDynamicList","Translation","_useTranslation","_useTranslation3","_useTranslation2","_slicedToArray2","composeInitialProps","ForComponent","i18nInitialProps","getInitialProps","componentsInitialProps","setDefaults","setI18n","_initReactI18next","initReactI18next","ReportNamespaces","_classCallCheck2","_createClass2","usedNamespaces","reportNamespaces","getUsedNamespaces","initialI18nStore","getResourceBundle","initialLanguage","defaultOptions","bindI18n","bindI18nStore","useSuspense","i18nInstance","_Trans","_withTranslation","withTranslation","_Translation","_I18nextProvider","_withSSR","withSSR","_useSSR","useSSR","selectOrdinal","plural","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","lngResources","initializedLanguageOnce","notReadyT","retNotReady","addUsedNamespaces","getT","getFixedT","nsMode","_useState","_useState2","setT","joinedNS","previousJoinedNS","usePrevious","boundReset","loadNamespaces","isInitial","ignore","_console","isNewerI18next","oldI18nextHasLoadedNamespace","alreadyWarned","I18nextWithSSR","I18nextWithTranslation","forwardedRef","passDownProps","tReady","withRef","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","SuspenseList","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isSuspenseList","getModuleId","typeOf","forceUpdate","__self","__source","_status","Children","only","_currentValue2","_threadCount","Consumer","_defaultValue","_globalName","createFactory","createRef","lazy","startTransition","unstable_act","Op","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","methodName","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","awrap","iter","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","sortIndex","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","isArrayish","ARROW_KEY_CODE","mapOfBoundRect","startingPoint","initiateSpatialNavigation","spatialNavigationSearch","focusableAreas","getSpatialNavigationContainer","CSS","registerProperty","syntax","inherits","currentKeyMode","__spatialNavigation__","keyMode","eventTarget","focusNavigableArrowKey","up","down","SPINNABLE_INPUT_TYPES","TEXT_INPUT_TYPES","endPosition","handlingEditableElement","searchOrigin","findSearchOrigin","elementFromPosition","elementFromPoint","isFocusable","isContainer","contentDocument","bestInsideCandidate","getCSSSpatNavAction","scrollingController","candidates","getSpatialNavigationCandidates","inside","focusingController","parentContainer","navigateChain","bestCandidate","elementStyle","isScrollable","rect","containerRect","isEntirelyVisible","createSpatNavEvents","isScrollBoundary","moveScroll","isHTMLScrollBoundary","isDelegableContainer","isVisible","getFilteredSpatialNavigationCandidates","targetElement","filteredCandidates","bestTarget","internalCandidates","externalCandidates","currentElm","getClosestElement","getDistanceFromPoint","getInnerDistance","selectBestCandidateFromEdge","spatialNavigationFunction","currentElmRect","distanceFunction","alignedCandidates","elm","isAligned","getAbsoluteDistance","getEuclideanDistance","getDistance","selectBestCandidate","innerTarget","descendantsBest","originalContainer","eventTargetRect","candidateRect","candidateBody","isOutside","childRect","rightEdgeCheck","leftEdgeCheck","topEdgeCheck","bottomEdgeCheck","isInside","frameElement","minDistance","minDistanceElements","focusables","eventType","triggeredEvent","CustomEvent","causedTarget","readCssVar","varName","currentOption","isScrollContainer","overflowX","isOverflow","scrollWidth","clientWidth","scrollX","scrollY","winScrollY","winScrollX","isAtagWithoutHref","isActuallyDisabled","inert","isExpresslyInert","isVisibleStyleProperty","isBeingRendered","elementRect","offsetX","offsetWidth","offsetY","offsetHeight","hitTestPoint","leftTop","rightBottom","point","elemFromPoint","hitTest","thisVisibility","rect1","rect2","isRightSide","isBelow","points","getEntryAndExitPoints","P1","entryPoint","exitPoint","P2","baseEdge","orthogonalBias","alignBias","intersectionRect","intersection_rect","new_location","new_max_point","getIntersectionRect","boundingClientRect","enableExperimentalAPIs","getInitialAPIs","canScroll","findTarget","findCandidate","bestNextTarget","findCandidates","findNextTarget","getDistanceFromTarget","candidateElement","getExperimentalAPI","seal","_keymode","setStartingPoint","byteTable","plain","buff","quintets","shiftIndex","encoded","plainChar","plainDigit","plainPos","encodedByte","util","Url","slashes","port","urlParse","relative","resolveObject","isString","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","esc","qm","tkeys","tkey","rkeys","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","hasTrailingSlash","isAbsolute","Mouse","Touch","Pointer","CancelledByMovement","CancelledByRelease","CancelledOutsideElement","PointerEvent","TouchEvent","MouseEvent","LongPressCallbackReason","LongPressEventType","captureEvent","cancelOnMovement","cancelOutsideElement","filterEvents","onMove","onFinish","onCancel","onPointerMove","onPointerUp","onPointerLeave","VTTRegion","makeColorSet","fontScale","observe","subject","topic","fontColor","Services","prefs","getCharPref","fontOpacity","getIntPref","WebVTTSet","fontSet","backgroundOpacity","backgroundSet","edgeType","edgeColor","edgeSet","pref","addObserver","_objCreate","ParsingError","Errors","BadSignature","BadTimeStamp","ESCAPE","TAG_NAME","ruby","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","unescape1","shouldAdd","localName","annotation","rootDiv","tagStack","createProcessingInstruction","strongRTLRanges","isStrongRTLChar","currentRange","StyleBox","CueStyleBox","styleOptions","isIE8","cueDiv","writingMode","unicodeBidi","applyStyles","div","font","whiteSpace","nodeStack","pushNodes","nextTextNode","determineBidi","stylesunicodeBidi","textPos","positionAlign","formatStyle","move","BoxPosition","rects","getClientRects","moveBoxToLinePosition","styleBox","containerBox","boxPositions","boxPosition","linePos","trackList","computeLinePos","axis","maxPosition","initialAxis","calculatedPercentage","bestPosition","specifiedPosition","percentage","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","findBestPosition","toCSSCompatValues","toMove","overlaps","b2","getSimpleBoxPosition","cuetext","processCues","overlay","paddedOverlay","margin","shouldCompute","reportOrThrowError","ontimestampmap","parseTimestampMap","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseRegion","linebyline","successCb","errCb","vals0","fromJSON","directionSetting","alignSetting","scrollSetting","isValidPercentValue","_width","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","findScrollSetting","toPropertyKey","assertThisInitialized","iterableToArray","hint","prim","__webpack_module_cache__","cachedModule","__webpack_modules__","definition","nmd","scriptUrl","importScripts","currentScript","scripts","stremioTranslations","translations","fromEntries","use","getElementById","serviceWorker","register","registrationError"],"sourceRoot":""} \ No newline at end of file diff --git a/development/f4f59074954b11898de7b384b6320863c5aa1fba/styles/main.css.map b/development/f4f59074954b11898de7b384b6320863c5aa1fba/styles/main.css.map deleted file mode 100644 index 2ec00d5ed..000000000 --- a/development/f4f59074954b11898de7b384b6320863c5aa1fba/styles/main.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"f4f59074954b11898de7b384b6320863c5aa1fba/styles/main.css","mappings":"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","sources":["webpack://stremio/./src/common/Button/styles.less","webpack://stremio/./src/common/ModalDialog/styles.less","webpack://stremio/./src/common/AddonDetailsModal/AddonDetails/styles.less","webpack://stremio/./src/common/AddonDetailsModal/styles.less","webpack://stremio/./src/common/Checkbox/styles.less","webpack://stremio/./src/common/ColorInput/ColorPicker/styles.less","webpack://stremio/./src/common/ColorInput/styles.less","webpack://stremio/./src/common/Popup/styles.less","webpack://stremio/./src/common/Multiselect/styles.less","webpack://stremio/./src/common/PlayIconCircleCentered/styles.less","webpack://stremio/./src/common/MetaItem/styles.less","webpack://stremio/./src/common/TextInput/styles.less","webpack://stremio/./src/common/NavBar/HorizontalNavBar/SearchBar/styles.less","webpack://stremio/./src/common/NavBar/HorizontalNavBar/NavMenu/styles.less","webpack://stremio/./src/common/NavBar/HorizontalNavBar/styles.less","webpack://stremio/./src/common/NavBar/VerticalNavBar/NavTabButton/styles.less","webpack://stremio/./src/common/NavBar/VerticalNavBar/styles.less","webpack://stremio/./src/common/MainNavBars/styles.less","webpack://stremio/./src/common/SharePrompt/styles.less","webpack://stremio/./src/common/MetaPreview/ActionButton/styles.less","webpack://stremio/./src/common/MetaPreview/MetaLinks/styles.less","webpack://stremio/./src/common/MetaPreview/MetaPreviewPlaceholder/styles.less","webpack://stremio/./src/common/MetaPreview/styles.less","webpack://stremio/./src/common/MetaRow/MetaRowPlaceholder/styles.less","webpack://stremio/./src/common/MetaRow/styles.less","webpack://stremio/./src/common/PaginationInput/styles.less","webpack://stremio/./src/common/SearchBar/SearchBarPlaceholder/styles.less","webpack://stremio/./src/common/SearchBar/styles.less","webpack://stremio/./src/common/StreamingServerWarning/styles.less","webpack://stremio/./src/common/Slider/styles.less","webpack://stremio/./src/common/Toast/ToastItem/styles.less","webpack://stremio/./src/routes/Addons/Addon/styles.less","webpack://stremio/./src/routes/Addons/styles.less","webpack://stremio/./src/routes/Board/styles.less","webpack://stremio/./src/routes/Discover/styles.less","webpack://stremio/./src/routes/NotFound/styles.less","webpack://stremio/./src/routes/Library/styles.less","webpack://stremio/./src/routes/MetaDetails/StreamsList/Stream/StreamPlaceholder/styles.less","webpack://stremio/./src/routes/MetaDetails/StreamsList/Stream/styles.less","webpack://stremio/./src/routes/MetaDetails/StreamsList/styles.less","webpack://stremio/./src/routes/MetaDetails/VideosList/SeasonsBar/SeasonsBarPlaceholder/styles.less","webpack://stremio/./src/routes/MetaDetails/VideosList/SeasonsBar/styles.less","webpack://stremio/./src/routes/MetaDetails/VideosList/Video/VideoPlaceholder/styles.less","webpack://stremio/./src/routes/MetaDetails/VideosList/Video/styles.less","webpack://stremio/./src/routes/MetaDetails/VideosList/styles.less","webpack://stremio/./src/routes/MetaDetails/styles.less","webpack://stremio/./src/routes/Search/styles.less","webpack://stremio/./src/routes/Settings/styles.less","webpack://stremio/./src/routes/Player/BufferingLoader/styles.less","webpack://stremio/./src/routes/Player/ControlBar/SeekBar/styles.less","webpack://stremio/./src/routes/Player/ControlBar/VolumeSlider/styles.less","webpack://stremio/./src/routes/Player/ControlBar/styles.less","webpack://stremio/./src/routes/Player/NextVideoPopup/styles.less","webpack://stremio/./src/routes/Player/StatisticsMenu/styles.less","webpack://stremio/./src/routes/Player/InfoMenu/styles.less","webpack://stremio/./src/routes/Player/OptionsMenu/Option/styles.less","webpack://stremio/./src/routes/Player/OptionsMenu/styles.less","webpack://stremio/./src/routes/Player/VideosMenu/styles.less","webpack://stremio/./src/routes/Player/SubtitlesMenu/DiscreteSelectInput/styles.less","webpack://stremio/./src/routes/Player/SubtitlesMenu/styles.less","webpack://stremio/./src/routes/Player/SpeedMenu/Option/styles.less","webpack://stremio/./src/routes/Player/SpeedMenu/styles.less","webpack://stremio/./src/routes/Player/Video/styles.less","webpack://stremio/./src/routes/Player/styles.less","webpack://stremio/./src/routes/Intro/ConsentCheckbox/styles.less","webpack://stremio/./src/routes/Intro/PasswordResetModal/styles.less","webpack://stremio/./src/routes/Intro/styles.less","webpack://stremio/./src/App/ErrorDialog/styles.less","webpack://stremio/./src/common/roboto.css","webpack://stremio/./src/App/styles.less","webpack://stremio/./src/common/animations.less","webpack://stremio/./src/router/styles.css"],"sourcesContent":["// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.button-container {\n outline-width: var(--focus-outline-size);\n outline-color: @color-surface-light5;\n outline-offset: calc(-1 * var(--focus-outline-size));\n cursor: pointer;\n\n &:focus {\n outline-style: solid;\n }\n\n &:global(.disabled) {\n pointer-events: none;\n opacity: 0.25;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.modal-container {\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: @color-background-dark5-40;\n\n .modal-dialog-container {\n flex: none;\n display: flex;\n flex-direction: column;\n max-width: 80%;\n max-height: 80%;\n background-color: @color-surface-light5;\n\n .close-button-container {\n flex: none;\n align-self: flex-end;\n width: 2rem;\n height: 2rem;\n margin: 0.2rem 0.2rem 0 0;\n padding: 0.5rem;\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n fill: @color-surface-dark1-90;\n }\n\n &:hover, &:focus {\n .icon {\n fill: @color-surface-light1-90;\n }\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n }\n\n .title-container {\n flex: 1 0 auto;\n max-height: 2.4em;\n margin: 0 2rem;\n font-size: 1.2rem;\n font-weight: 500;\n color: @color-background-dark5-90;\n }\n\n .modal-dialog-content {\n flex: 1;\n align-self: stretch;\n margin: 1.5rem 1rem 0;\n padding: 0 1rem;\n overflow-y: auto;\n\n &:last-child {\n margin-bottom: 2rem;\n }\n }\n\n .buttons-container {\n flex: none;\n align-self: stretch;\n margin: 2rem 2rem 0;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n &:last-child {\n margin-bottom: 2rem;\n }\n }\n }\n}\n\n.action-button {\n flex: 1;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 1.2rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n\n &:not(:last-child) {\n margin-right: 1rem;\n }\n\n .icon {\n flex: none;\n width: 1.2rem;\n height: 1.2rem;\n margin-right: .5rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 3.6em;\n font-size: 1.1rem;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .modal-container {\n .modal-dialog-container {\n position: relative;\n width: 90%;\n max-width: initial;\n z-index: 0;\n\n .close-button-container {\n position: absolute;\n top: 0;\n right: 0;\n margin: 0.75rem 0.75rem 0 0;\n padding: 0.25rem;\n }\n\n .title-container {\n max-height: 4.8em;\n margin: 1rem 3rem 1rem 1.5rem;\n }\n\n .modal-dialog-content {\n margin: 0 0.5rem;\n padding: 0 0.5rem;\n\n &:last-child {\n margin-bottom: 1rem;\n }\n }\n\n .buttons-container {\n margin: 1rem 1rem 0;\n\n &:last-child {\n margin-bottom: 1rem;\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.addon-details-container {\n .title-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .logo, .icon {\n float: left;\n width: 5rem;\n height: 5rem;\n margin-right: 1.5rem;\n padding: 0.5rem;\n background-color: @color-background-dark5;\n }\n\n .logo {\n object-fit: contain;\n object-position: center;\n }\n\n .icon {\n fill: @color-secondaryvariant1-light3;\n }\n\n .name-container {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: 0;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: baseline;\n \n .name {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n margin-right: 0.5rem;\n font-size: 1.6rem;\n color: @color-background-dark5-90;\n }\n \n .version {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: auto;\n margin-top: 0.5rem;\n color: @color-background-dark5-60;\n }\n }\n }\n\n .section-container {\n margin-top: 1rem;\n\n .section-header {\n font-size: 1.1rem;\n color: @color-background-dark5-90;\n }\n\n .section-label {\n font-size: 1.1rem;\n font-weight: 300;\n color: @color-background-dark5-90;\n\n &.transport-url-label {\n user-select: text;\n }\n\n &.disclaimer-label {\n font-style: italic;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n:import('~stremio/common/ModalDialog/styles.less') {\n label: label;\n}\n\n.addon-details-modal-container {\n .addon-details-container, .addon-details-message-container {\n width: 40rem;\n max-width: 100%;\n }\n\n .install-button, .uninstall-button, .cancel-button {\n .label {\n font-size: 1.2rem;\n font-weight: 500;\n }\n }\n\n .uninstall-button, .cancel-button {\n &:focus {\n outline-color: @color-background-dark5;\n }\n }\n\n .cancel-button {\n background-color: transparent;\n\n &:hover {\n background-color: @color-surface-light3;\n }\n\n .label {\n color: @color-surface-dark2;\n }\n }\n\n .uninstall-button {\n background-color: @color-accent2;\n\n &:hover {\n background-color: @color-accent2-light2;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.checkbox-container {\n &:global(.checked) {\n .icon {\n fill: @color-surface-light5;\n background-color: @color-primaryvariant1;\n }\n }\n\n .icon {\n display: block;\n width: 1rem;\n height: 1rem;\n fill: @color-surface-light5;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.color-picker-container {\n overflow: visible;\n text-align: center;\n\n * {\n overflow: visible;\n }\n\n :global(.a-color-picker-stack):not(:global(.a-color-picker-row-top)) canvas, :global(.a-color-picker-circle) {\n border: solid thin var(--color-surfacedark);\n }\n\n :global(.a-color-picker-circle) {\n box-shadow: 0 0 .2rem var(--color-surfacedark);\n }\n\n :global(.a-color-picker-clipbaord) {\n pointer-events: none;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.color-input-container {\n position: relative;\n z-index: 0;\n\n .transparent-label-container {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.5rem;\n border: thin solid @color-surface-light5-20;\n pointer-events: none;\n\n .transparent-label {\n flex: 1;\n text-align: center;\n color: @color-surface-light5;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n}\n\n.color-picker-container {\n margin: 1rem 0;\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.label-container {\n // IOS specific \n // prevents showing the default context-menu when long pressing an anchor in safari.\n -webkit-touch-callout: none !important;\n\n position: relative;\n overflow: visible;\n\n .menu-container {\n position: absolute;\n z-index: 1;\n overflow: visible;\n visibility: hidden;\n box-shadow: 0 1.35rem 2.7rem @color-background-dark5-40,\n 0 1.1rem 0.85rem @color-background-dark5-20;\n cursor: auto;\n\n &.menu-direction-top-left {\n top: initial;\n right: 0;\n bottom: 100%;\n left: initial;\n visibility: visible;\n }\n\n &.menu-direction-bottom-left {\n top: 100%;\n right: 0;\n bottom: initial;\n left: initial;\n visibility: visible;\n }\n\n &.menu-direction-top-right {\n top: initial;\n right: initial;\n bottom: 100%;\n left: 0;\n visibility: visible;\n }\n\n &.menu-direction-bottom-right {\n top: 100%;\n right: initial;\n bottom: initial;\n left: 0;\n visibility: visible;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Popup/styles.less') {\n popup-menu-container: menu-container;\n}\n\n.label-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0 1rem;\n background-color: @color-background;\n\n &:global(.active) {\n .label {\n color: @color-surface-light5-90;\n }\n\n .icon {\n fill: @color-surface-light5-90;\n }\n }\n\n >.label {\n flex: 1;\n max-height: 2.4em;\n font-weight: 500;\n color: @color-secondaryvariant1-90;\n }\n\n .icon {\n flex: none;\n width: 1rem;\n height: 1rem;\n margin-left: 1rem;\n fill: @color-secondaryvariant1-90;\n }\n\n .popup-menu-container {\n width: 100%;\n }\n}\n\n.modal-container, .popup-menu-container {\n .menu-container {\n .option-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 1rem;\n background-color: @color-background;\n\n &:global(.selected) {\n .icon {\n display: block;\n }\n }\n\n &:hover, &:focus {\n background-color: @color-background-light2;\n }\n\n .label {\n flex: 1;\n max-height: 4.8em;\n color: @color-surface-light5-90;\n }\n\n .icon {\n flex: none;\n display: none;\n width: 0.5rem;\n height: 0.5rem;\n border-radius: 100%;\n margin-left: 1rem;\n background-color: @color-accent3-90;\n }\n }\n\n .no-options-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 1rem;\n background-color: @color-background;\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n font-size: 1.2rem;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.background {\n fill: @color-surface-light5;\n}\n\n.icon {\n fill: @color-background-dark5;\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Popup/styles.less') {\n popup-menu-container: menu-container;\n}\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n multiselect-option-container: option-container;\n multiselect-option-label: label;\n}\n\n:import('~stremio/common/PlayIconCircleCentered/styles.less') {\n play-icon-circle-centered-background: background;\n play-icon-circle-centered-icon: icon;\n}\n\n.meta-item-container {\n padding: 1rem;\n overflow: visible;\n\n &:hover, &:focus, &:global(.active), &:global(.selected) {\n outline-style: none;\n background-color: @color-background-light3;\n transition: background-color 100ms ease-out;\n }\n\n &.poster-shape-poster {\n .poster-container {\n padding-top: calc(100% * var(--poster-shape-ratio));\n }\n }\n\n &.poster-shape-square {\n .poster-container {\n padding-top: 100%;\n }\n }\n\n &.poster-shape-landscape {\n .poster-container {\n padding-top: calc(100% * var(--landscape-shape-ratio));\n }\n }\n\n .poster-container {\n position: relative;\n z-index: 0;\n background-color: @color-background;\n\n .poster-image-layer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -3;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n\n .poster-image {\n flex: none;\n width: 100%;\n height: 100%;\n object-position: center;\n object-fit: cover;\n opacity: 0.9;\n }\n\n .placeholder-icon {\n flex: none;\n width: 80%;\n height: 50%;\n fill: @color-background-light3-90;\n }\n }\n\n .play-icon-layer {\n position: absolute;\n top: 30%;\n right: 0;\n bottom: 30%;\n left: 0;\n z-index: -2;\n overflow: visible;\n\n .play-icon {\n display: block;\n width: 100%;\n height: 100%;\n filter: drop-shadow(0 0 0.5rem @color-background);\n\n .play-icon-circle-centered-background {\n fill: @color-accent4-90;\n }\n\n .play-icon-circle-centered-icon {\n fill: @color-surface-light5-90;\n }\n }\n }\n\n .progress-bar-layer {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n background-color: @color-background-light2;\n\n .progress-bar {\n height: 0.4rem;\n background-color: @color-primaryvariant1;\n }\n }\n }\n\n .title-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 2.8rem;\n overflow: visible;\n\n .title-label {\n flex: 1;\n max-height: 2.4em;\n padding-left: 0.5rem;\n color: @color-surface-light5-90;\n\n &:only-child {\n padding-right: 0.5rem;\n }\n }\n\n .menu-label-container {\n flex: none;\n width: 1.5rem;\n height: 2.8rem;\n padding: 1rem 0;\n background-color: transparent;\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n fill: @color-surface-light1-90;\n }\n\n .popup-menu-container {\n width: auto;\n\n .multiselect-menu-container {\n min-width: 6rem;\n max-width: 12rem;\n\n .multiselect-option-container {\n padding: 0.5rem;\n background-color: @color-surface-light5;\n\n &:hover, &:focus {\n outline: none;\n background-color: @color-surface-light2;\n }\n\n .multiselect-option-label {\n color: @color-background-dark5-90;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .meta-item-container {\n padding: 0.5rem;\n\n .title-bar-container {\n margin-top: 0.5rem;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.text-input {\n user-select: text;\n\n &::-moz-focus-inner {\n border: none;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.search-bar-container {\n --search-bar-size: calc(var(--horizontal-nav-bar-size) - 1.2rem);\n display: flex;\n flex-direction: row;\n height: var(--search-bar-size);\n border-radius: var(--search-bar-size);\n background-color: @color-background-light2;\n\n &:hover {\n background-color: @color-background-light3;\n }\n\n .search-input {\n flex: 1;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0 0.5rem 0 1.5rem;\n font-weight: 500;\n color: @color-secondaryvariant1-light1;\n cursor: text;\n\n &::placeholder, .placeholder-label {\n max-height: 1.2em;\n opacity: 1;\n color: @color-secondaryvariant1-light1-90;\n }\n }\n\n .submit-button-container {\n flex: none;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: var(--search-bar-size);\n height: var(--search-bar-size);\n\n &:hover {\n .icon {\n fill: @color-secondaryvariant2-light1-90;\n }\n }\n\n .icon {\n flex: none;\n width: 1.7rem;\n height: 1.7rem;\n fill: @color-secondaryvariant1-90;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.nav-menu-container {\n width: 20rem;\n max-height: calc(100vh - var(--horizontal-nav-bar-size));\n overflow-y: auto;\n background-color: @color-background-dark1;\n\n .user-info-container {\n display: grid;\n height: 7rem;\n grid-template-columns: 7rem 1fr;\n grid-template-rows: 50% 50%;\n grid-template-areas:\n \"avatar-area email-area\"\n \"avatar-area logout-button-area\";\n\n .avatar-container {\n grid-area: avatar-area;\n padding: 1rem;\n border-radius: 50%;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n background-origin: content-box;\n background-clip: content-box;\n opacity: 0.9;\n }\n\n .email-container {\n grid-area: email-area;\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 1rem 1rem 0 0;\n\n .email-label {\n flex: 1;\n max-height: 2.4em;\n color: @color-surface-light5-90;\n }\n }\n\n .logout-button-container {\n grid-area: logout-button-area;\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0 1rem 1rem 0;\n\n &:hover, &:focus {\n outline: none;\n\n .logout-label {\n color: @color-surface-light5-90;\n text-decoration: underline;\n }\n }\n\n .logout-label {\n flex: 1;\n max-height: 2.4em;\n color: @color-surface-light3-90;\n }\n }\n }\n\n .nav-menu-section {\n border-top: thin solid @color-surface-light5-20;\n\n .nav-menu-option-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 4rem;\n\n &:hover {\n background-color: @color-background-light2;\n }\n\n .icon {\n flex: none;\n width: 1.4rem;\n height: 1.4rem;\n margin: 1.3rem;\n fill: @color-secondaryvariant2-light1-90;\n }\n\n .nav-menu-option-label {\n flex: 1;\n max-height: 2.4em;\n padding-right: 1.3rem;\n color: @color-surface-light5-90;\n\n &:only-child {\n padding-left: 1.3rem;\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .nav-menu-container {\n max-height: calc(100vh - var(--horizontal-nav-bar-size) - var(--vertical-nav-bar-size) - 1rem);\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.horizontal-nav-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: var(--horizontal-nav-bar-size);\n padding-right: 1rem;\n background-color: @color-background;\n overflow: visible;\n\n .logo-container {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--vertical-nav-bar-size);\n height: var(--horizontal-nav-bar-size);\n\n .logo {\n flex: none;\n width: 2.5rem;\n height: 2.5rem;\n object-position: center;\n object-fit: contain;\n opacity: 0.9;\n }\n }\n\n .spacing {\n flex: 1 0 0;\n }\n\n .title {\n flex: 4 0 0;\n padding: 0 1rem;\n font-size: 1.2rem;\n font-style: normal;\n font-weight: 500;\n letter-spacing: 0.01rem;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: @color-secondaryvariant2-light1-90;\n\n &+.spacing {\n display: none;\n }\n }\n\n .search-bar {\n flex: 2 0 9.5rem;\n max-width: 30rem;\n\n &+.spacing {\n max-width: 11rem;\n }\n }\n\n .button-container {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--horizontal-nav-bar-size);\n height: var(--horizontal-nav-bar-size);\n\n &.back-button-container {\n width: var(--vertical-nav-bar-size);\n height: var(--horizontal-nav-bar-size);\n }\n\n &:hover {\n background-color: @color-background-light2;\n }\n\n &:global(.active) {\n background-color: @color-background-light3;\n\n .icon {\n fill: @color-surface-light5-90;\n }\n }\n\n .icon {\n flex: none;\n width: 1.7rem;\n height: 1.7rem;\n fill: @color-secondaryvariant2-light1-90;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .horizontal-nav-bar-container {\n justify-content: space-between;\n padding-right: 0;\n\n .logo-container {\n width: var(--horizontal-nav-bar-size);\n }\n\n .search-bar {\n margin: 0 0.5rem;\n }\n\n .spacing {\n display: none;\n }\n\n .button-container:not(.back-button-container):not(.menu-button-container) {\n display: none;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.nav-tab-button-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background-color: @color-background-dark1;\n\n &:hover {\n background-color: @color-background-light2;\n }\n\n &:global(.selected) {\n background-color: @color-secondaryvariant1-dark5;\n\n &:hover {\n background-color: @color-secondaryvariant1-dark4;\n }\n\n .icon {\n fill: @color-surface-light5-90;\n }\n\n .label {\n color: @color-surface-light5-90;\n }\n }\n\n .icon, .logo {\n flex: none;\n width: 1.7rem;\n height: 1.7rem;\n margin-bottom: 0.5rem;\n fill: @color-secondary-light5-90;\n }\n\n .label {\n flex: none;\n max-height: 2.4em;\n padding: 0 0.2rem;\n font-size: 0.9rem;\n font-weight: 500;\n letter-spacing: 0.01rem;\n text-align: center;\n color: @color-secondaryvariant1-90;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.vertical-nav-bar-container {\n width: var(--vertical-nav-bar-size);\n background-color: @color-background-dark1;\n overflow-y: auto;\n scrollbar-width: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n .nav-tab-button {\n width: var(--vertical-nav-bar-size);\n height: var(--vertical-nav-bar-size);\n\n &:first-child {\n margin-top: 1rem;\n }\n\n &:last-child {\n margin-bottom: 1rem;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .vertical-nav-bar-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n height: var(--vertical-nav-bar-size);\n width: 100%;\n overflow-y: hidden;\n overflow-x: auto;\n\n .nav-tab-button {\n flex: none;\n\n &:first-child {\n margin-top: 0;\n }\n \n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.main-nav-bars-container {\n position: relative;\n z-index: 0;\n\n .horizontal-nav-bar {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n }\n\n .vertical-nav-bar {\n position: absolute;\n top: var(--horizontal-nav-bar-size);\n bottom: 0;\n left: 0;\n z-index: 1;\n }\n\n .nav-content-container {\n position: absolute;\n top: var(--horizontal-nav-bar-size);\n right: 0;\n bottom: 0;\n left: var(--vertical-nav-bar-size);\n z-index: 0;\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .main-nav-bars-container {\n .nav-content-container {\n left: 0;\n bottom: var(--vertical-nav-bar-size);\n }\n\n .vertical-nav-bar {\n top: initial;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.share-prompt-container {\n .buttons-container {\n display: flex;\n flex-direction: row;\n\n .button-container {\n flex: 1;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 1rem;\n\n &:not(:last-child) {\n margin-right: 1rem;\n }\n\n .icon {\n flex: none;\n height: 1.2rem;\n margin-right: 1rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 2.4em;\n font-size: 1.1rem;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n\n .facebook-button, .twitter-button {\n &:focus {\n outline-color: @color-background-dark5;\n }\n }\n\n .facebook-button {\n background-color: var(--color-facebook);\n }\n\n .twitter-button {\n background-color: var(--color-twitter);\n }\n }\n\n .url-container {\n display: flex;\n flex-direction: row;\n margin-top: 1rem;\n background-color: @color-surface-light2;\n\n .url-text-input {\n flex: 1;\n align-self: stretch;\n padding: 1rem;\n font-size: 1.1rem;\n text-align: center;\n color: @color-background-dark5;\n }\n\n .copy-button {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n width: 8rem;\n padding: 1rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n\n .icon {\n flex: none;\n width: 1.2rem;\n height: 1.2rem;\n margin-right: 0.5rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 2.4em;\n font-size: 1.1rem;\n color: @color-surface-light5-90;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.action-button-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n background-color: @color-surface-light5-20;\n\n &:hover, &:focus {\n background-color: @color-accent3;\n }\n\n .icon-container {\n flex: 0 0 50%;\n align-self: stretch;\n padding-top: 15%;\n\n &:only-child {\n padding: 5% 0;\n }\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n fill: @color-surface-light5-90;\n }\n }\n\n .label-container {\n flex: 0 0 50%;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .label {\n flex: 1;\n font-weight: 500;\n max-height: 2.4em;\n padding: 0 0.2rem;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .action-button-container {\n flex-direction: row;\n padding: 0 1rem;\n\n .icon-container {\n flex: none;\n align-self: center;\n height: 2rem;\n width: 2rem;\n padding-top: 0;\n margin-right: 0.5rem;\n\n &:only-child {\n padding: 0;\n margin-right: 0;\n }\n }\n\n .label-container {\n flex: 1;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.meta-links-container {\n .label-container {\n margin-bottom: 0.2rem;\n text-transform: uppercase;\n font-weight: 500;\n color: @color-surface-dark3-90;\n }\n\n .links-container {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n .link-container {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n margin-right: 0.5rem;\n margin-bottom: 0.2rem;\n padding: 0.3rem 0.5rem;\n white-space: nowrap;\n text-overflow: ellipsis;\n border-radius: 2rem;\n border: var(--focus-outline-size) solid transparent;\n color: @color-surface-light2-90;\n background-color: @color-surface-light5-20;\n\n &:hover, &:focus {\n background-color: @color-surface-light5-30;\n }\n\n &:focus {\n outline: none;\n border-color: @color-surface-light5;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.meta-preview-placeholder-container {\n display: flex;\n flex-direction: column;\n padding: 2rem;\n\n .meta-info-container {\n flex: 1;\n align-self: stretch;\n\n .logo-container {\n width: 20rem;\n height: 8rem;\n max-width: 100%;\n background-color: var(--color-placeholder-background);\n }\n\n .duration-release-info-container {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n margin: 1rem 0;\n\n .duration-container {\n flex-basis: 5rem;\n height: 1.4rem;\n margin-right: 1rem;\n background-color: var(--color-placeholder-background);\n }\n\n .release-info-container {\n flex-basis: 5rem;\n height: 1.4rem;\n background-color: var(--color-placeholder-background);\n }\n }\n\n .description-container {\n margin: 1rem 0;\n\n .description-label-container {\n background-color: var(--color-placeholder-background);\n\n &:nth-child(1) {\n width: 20rem;\n height: 1.4rem;\n max-width: 80%;\n }\n\n &:nth-child(2) {\n width: 26rem;\n height: 4.6rem;\n max-width: 80%;\n margin-top: 1rem;\n }\n }\n }\n\n .genres-container {\n margin: 1rem 0;\n\n .genres-header-container {\n width: 6.5rem;\n height: 1.6rem;\n max-width: 100%;\n background-color: var(--color-placeholder-background);\n }\n\n .genre-label-container {\n width: 10rem;\n height: 1.2rem;\n max-width: 100%;\n margin-top: 0.2rem;\n background-color: var(--color-placeholder-background);\n }\n }\n }\n\n .action-buttons-container {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n max-height: 6rem;\n\n .action-button-container {\n flex: none;\n width: 6rem;\n height: 6rem;\n margin-right: 2rem;\n background-color: var(--color-placeholder-background);\n\n &:last-child {\n margin-right: 0;\n }\n\n .action-button-icon {\n width: 2rem;\n height: 2rem;\n margin: 1rem 2rem 0 2rem;\n background-color: var(--color-placeholder-background);\n }\n\n .action-button-label {\n width: 4rem;\n height: 1.2rem;\n margin: 0.9rem 1rem;\n background-color: var(--color-placeholder-background);\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.meta-preview-container {\n position: relative;\n z-index: 0;\n display: flex;\n flex-direction: column;\n\n &.compact {\n .meta-info-container {\n .logo, .logo-placeholder {\n width: 100%;\n height: 8rem;\n background-color: @color-surface-dark5-10;\n }\n\n .runtime-release-info-container {\n justify-content: space-evenly;\n\n .runtime-label, .release-info-label {\n margin: 1rem 0.4rem;\n }\n }\n\n .description-container {\n max-height: none;\n }\n }\n\n .action-buttons-container {\n justify-content: space-evenly;\n padding: 0;\n\n .action-button:not(:last-child) {\n margin-right: 0;\n }\n }\n }\n\n .background-image-layer {\n position: absolute;\n top: -10px;\n right: -10px;\n bottom: -10px;\n left: -10px;\n z-index: -1;\n\n &::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n background: @color-background-dark2-60;\n content: \"\";\n }\n\n .background-image {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n opacity: 0.9;\n filter: blur(5px);\n }\n }\n\n .meta-info-container {\n flex: 1;\n align-self: stretch;\n padding: 0 2rem;\n overflow-y: auto;\n\n &:not(:hover) {\n scrollbar-color: transparent transparent;\n\n &::-webkit-scrollbar-thumb, &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n }\n\n .logo, .logo-placeholder {\n display: block;\n max-width: 100%;\n margin: 2rem 0;\n }\n\n .logo {\n height: 8rem;\n object-fit: contain;\n object-position: center;\n }\n\n .logo-placeholder {\n font-size: 1.7rem;\n color: @color-surface-light5-90;\n }\n\n .runtime-release-info-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-wrap: wrap;\n margin-top: 1rem;\n\n .runtime-label, .release-info-label {\n flex: 0 1 auto;\n margin-right: 2rem;\n margin-bottom: 0.5rem;\n font-size: 1.4rem;\n color: @color-surface-light5-90;\n }\n\n .imdb-button-container {\n flex: 0 1 auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5rem;\n padding: 0.3rem 1rem;\n border-radius: 2.5rem;\n border: var(--focus-outline-size) solid transparent;\n background-color: @color-surface-light5-20;\n\n &:hover, &:focus {\n background-color: @color-surface-light5-30;\n }\n\n &:focus {\n outline: none;\n border: var(--focus-outline-size) solid @color-surface-light5;\n }\n\n .icon {\n flex: none;\n width: 3rem;\n height: 1.1rem;\n margin-right: 1rem;\n fill: @color-surface-90;\n }\n\n .label {\n flex: 0 1 auto;\n max-height: 1.2em;\n font-size: 1.6rem;\n font-weight: 500;\n color: @color-surface-light5-90;\n }\n }\n }\n\n .name-container {\n margin-top: 1rem;\n font-size: 1.5rem;\n color: @color-surface-light5-90;\n }\n\n .description-container {\n max-height: 6em;\n margin-top: 1rem;\n font-size: 1.1rem;\n line-height: 1.5em;\n color: @color-surface-light5-90;\n }\n\n .meta-links {\n margin-top: 1rem;\n }\n }\n\n .action-buttons-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n max-height: 10rem;\n padding: 0 2rem;\n\n .action-button {\n flex: none;\n width: 6rem;\n height: 6rem;\n margin: 2rem 0;\n\n &:not(:last-child) {\n margin-right: 2rem;\n }\n }\n }\n}\n\n.share-prompt {\n width: 24rem;\n}\n\n@media only screen and (max-width: @minimum) {\n .meta-preview-container {\n .meta-info-container {\n padding: 0 1.5rem;\n\n .logo {\n margin: 1em 0;\n }\n }\n\n .action-buttons-container {\n flex-wrap: nowrap;\n padding: 0 1.5rem;\n overflow-x: visible;\n scrollbar-width: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n .action-button {\n width: auto;\n height: 4rem;\n max-width: 60%;\n margin: 1rem 0;\n\n &:not(:last-child) {\n margin-right: 1rem;\n }\n }\n }\n }\n\n .share-prompt {\n width: 100%;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.meta-row-placeholder-container {\n .header-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-end;\n padding: 0 1rem;\n margin-bottom: 1rem;\n\n .title-container {\n flex: 1;\n max-height: 2.4em;\n font-size: 1.8rem;\n color: var(--color-placeholder-text);\n\n &:empty {\n height: 1.2em;\n background: linear-gradient(to right, var(--color-placeholder-background) 0 40%, transparent 40% 100%);\n }\n }\n\n .see-all-container {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n max-width: 12rem;\n padding: 0.2rem;\n\n &:focus {\n outline: none;\n background-color: var(--color-placeholder-background);\n }\n\n .label {\n flex: 0 1 auto;\n max-height: 1.2em;\n font-size: 1.3rem;\n font-weight: 500;\n text-transform: uppercase;\n color: var(--color-placeholder-text);\n }\n\n .icon {\n flex: none;\n height: 1.3rem;\n margin-left: 0.5rem;\n fill: var(--color-placeholder-text);\n }\n }\n }\n\n .meta-items-container {\n display: flex;\n flex-direction: row;\n align-items: stretch;\n\n .meta-item {\n flex: 1;\n margin: 1rem;\n\n &:not(:first-child) {\n margin-left: 1.5rem;\n }\n\n .poster-container {\n padding-bottom: calc(100% * var(--poster-shape-ratio));\n background-color: var(--color-placeholder-background);\n }\n\n .title-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 2.8rem;\n\n .title-label {\n flex: none;\n width: 60%;\n height: 1.2rem;\n background-color: var(--color-placeholder-background);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .meta-row-placeholder-container {\n .meta-items-container {\n .meta-item {\n margin: 0.5rem;\n\n &:not(:first-child) {\n margin-left: 0.5rem;\n }\n\n .title-bar-container {\n margin-top: 0.5rem;\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.meta-row-container {\n overflow: visible;\n\n .header-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-end;\n padding: 0 1rem;\n margin-bottom: 1rem;\n\n .title-container {\n flex: 1;\n max-height: 2.4em;\n font-size: 1.8rem;\n color: @color-secondaryvariant2-light1-90;\n }\n\n .see-all-container {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n max-width: 12rem;\n padding: 0.2rem;\n\n &:focus {\n outline: none;\n background-color: @color-background-light3;\n }\n\n &:hover {\n .label {\n color: @color-secondaryvariant2-light2-90;\n }\n\n .icon {\n fill: @color-secondaryvariant2-light2-90;\n }\n }\n\n .label {\n flex: 0 1 auto;\n max-height: 1.2em;\n font-size: 1.3rem;\n font-weight: 500;\n text-transform: uppercase;\n color: @color-secondaryvariant2-light1-90;\n }\n\n .icon {\n flex: none;\n height: 1.3rem;\n margin-left: 0.5rem;\n fill: @color-secondaryvariant2-light1-90;\n }\n }\n }\n\n .message-container {\n max-height: 3.6em;\n padding: 0 1rem;\n font-size: 1.3rem;\n color: @color-secondaryvariant2-light1-90;\n }\n\n .meta-items-container {\n display: flex;\n flex-direction: row;\n align-items: stretch;\n overflow: visible;\n\n .meta-item {\n &:not(:first-child) {\n margin-left: 0.5rem;\n }\n\n &.poster-shape-poster {\n flex: calc(1 / var(--poster-shape-ratio));\n }\n\n &.poster-shape-square {\n flex: 1;\n }\n\n &.poster-shape-landscape {\n flex: calc(1 / var(--landscape-shape-ratio));\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .meta-row-container {\n .header-container {\n padding: 0 0.5rem;\n\n .title-container {\n margin-right: 0.5rem;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n\n .meta-items-container {\n .meta-item {\n &:not(:first-child) {\n margin-left: 0;\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.pagination-input-container {\n display: flex;\n flex-direction: row;\n\n .prev-button-container, .next-button-container {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: @color-background;\n\n .icon {\n display: block;\n fill: @color-secondaryvariant1-90;\n }\n }\n\n .label-container {\n flex: 1;\n align-self: stretch;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: @color-background-dark1;\n\n .label {\n flex: none;\n min-width: 1.2rem;\n max-width: 3rem;\n white-space: nowrap;\n text-overflow: ellipsis;\n text-align: center;\n font-weight: 500;\n color: @color-secondaryvariant1-90;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.search-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 3.5rem;\n padding: 0 1rem;\n border-radius: 3.5rem;\n border: var(--focus-outline-size) solid transparent;\n background-color: var(--color-placeholder-background);\n\n .search-input {\n flex: 1;\n max-height: 1.2em;\n margin-right: 1rem;\n font-size: 1.1rem;\n color: var(--color-placeholder-text);\n }\n\n .icon {\n flex: none;\n width: 1.5rem;\n height: 1.5rem;\n fill: var(--color-placeholder-background);\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.search-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 3.5rem;\n padding: 0 1rem;\n border-radius: 3.5rem;\n border: var(--focus-outline-size) solid transparent;\n background-color: @color-background;\n cursor: text;\n\n &:hover, &:focus-within {\n background-color: @color-background-light1;\n }\n\n &:focus-within {\n border: var(--focus-outline-size) solid @color-surface-light5;\n }\n\n .search-input {\n flex: 1;\n margin-right: 1rem;\n font-size: 1.1rem;\n color: @color-surface-light5;\n\n &::placeholder {\n max-height: 1.2em;\n opacity: 1;\n color: @color-secondaryvariant1-light1-90;\n }\n }\n\n .icon {\n flex: none;\n width: 1.5rem;\n height: 1.5rem;\n fill: @color-secondaryvariant1-90;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.warning-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 1rem;\n background-color: @color-accent5-dark3;\n\n .warning-statement {\n flex: 1;\n margin-right: 1rem;\n font-size: 1.2rem;\n max-height: 2.4em;\n color: @color-surface-light5-90;\n }\n\n .warning-button {\n flex: none;\n margin-left: 1rem;\n color: @color-surface-light5-90;\n\n &:first-child {\n margin-left: 0;\n }\n\n &:hover {\n .warning-label {\n text-decoration: underline;\n }\n }\n\n .warning-label {\n font-size: 1.2rem;\n max-height: 1.2em;\n color: @color-surface-light5-90;\n }\n }\n\n .warning-button:hover {\n text-decoration: underline;\n }\n}\n\n@media only screen and (max-width: 500px) {\n .warning-container {\n display: block;\n height: auto !important;\n text-align: center;\n .warning-statement {\n margin-bottom: 0.5rem;\n margin-right: 0;\n }\n .warning-button {\n display: inline-block;\n }\n }\n}\n","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\nhtml.active-slider-within {\n cursor: grabbing;\n\n body {\n pointer-events: none;\n }\n}\n\n.slider-container {\n position: relative;\n z-index: 0;\n overflow: visible;\n cursor: pointer;\n\n &:hover, &:global(.active) {\n .track-after {\n background-color: @color-primary-light5;\n }\n }\n\n &:global(.disabled) {\n pointer-events: none;\n\n .track {\n background-color: @color-surface-dark5;\n }\n\n .track-after {\n background-color: @color-surface;\n }\n\n .thumb {\n fill: @color-surface;\n }\n }\n\n .layer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 0;\n display: flex;\n flex-direction: row;\n align-items: center;\n overflow: visible;\n }\n\n .track {\n z-index: 0;\n flex: 1;\n height: var(--track-size);\n background-color: @color-surface-light5-20;\n }\n\n .track-before {\n z-index: 1;\n flex: none;\n height: var(--track-size);\n background-color: @color-surface-light5-10;\n }\n\n .track-after {\n z-index: 2;\n flex: none;\n height: var(--track-size);\n background-color: @color-primary-light3;\n }\n\n .thumb {\n z-index: 3;\n flex: none;\n width: var(--thumb-size);\n height: var(--thumb-size);\n transform: translateX(-50%);\n fill: @color-surface-light5;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.toast-item-container {\n display: flex;\n flex-direction: row;\n width: 25rem;\n margin-bottom: 1rem;\n background-color: @color-surface-light4;\n overflow: visible;\n box-shadow: 0 0.3rem 0.5rem @color-background-dark5-40,\n 0 0.6rem 1rem @color-background-dark5-20;\n pointer-events: auto;\n\n &.success {\n .icon-container {\n background-color: @color-accent3;\n\n .icon {\n fill: @color-surface-light5-90;\n }\n }\n }\n\n &.error {\n .icon-container {\n background-color: @color-accent2;\n\n .icon {\n fill: @color-surface-light5-90;\n }\n }\n }\n\n .icon-container {\n flex: none;\n align-self: stretch;\n width: 2.5rem;\n padding: 0.5rem;\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n fill: @color-background-dark5-90;\n }\n }\n\n .info-container {\n flex: 1;\n align-self: stretch;\n padding: 1rem;\n\n .title-container {\n font-size: 1.2rem;\n\n &:not(:last-child) {\n margin-bottom: 0.2rem;\n }\n }\n\n .message-container {\n font-size: 1.1rem;\n }\n }\n\n .close-button-container {\n flex: none;\n align-self: flex-start;\n width: 2rem;\n height: 2rem;\n margin: 0.2rem;\n padding: 0.5rem;\n\n &:hover {\n background-color: @color-surface-light2;\n }\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.addon-container {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n padding: 1.5rem;\n background-color: @color-background;\n cursor: inherit;\n\n .logo-container {\n flex: none;\n width: 6rem;\n height: 6rem;\n background-color: @color-background-light1;\n\n .logo {\n display: block;\n width: 100%;\n height: 100%;\n padding: 0.5rem;\n object-fit: contain;\n object-position: center;\n }\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n padding: 1rem;\n fill: @color-secondaryvariant1-light3;\n }\n }\n\n .info-container {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: 0;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: baseline;\n padding: 0 0.5rem;\n\n .name-container {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n padding: 0 0.5rem;\n max-height: 3.6em;\n font-size: 1.6rem;\n color: @color-surface-light5-90;\n }\n\n .version-container {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: auto;\n margin-top: 0.5rem;\n padding: 0 0.5rem;\n max-height: 2.4em;\n color: @color-surface-light5-60;\n }\n\n .types-container {\n flex-grow: 0;\n flex-shrink: 0;\n flex-basis: 100%;\n margin-top: 0.5rem;\n padding: 0 0.5rem;\n max-height: 2.4em;\n color: @color-surface-light5-40;\n text-transform: capitalize;\n }\n\n .description-container {\n flex-grow: 0;\n flex-shrink: 0;\n flex-basis: 100%;\n margin-top: 0.5rem;\n padding: 0 0.5rem;\n max-height: 4.8em;\n color: @color-surface-light5-90;\n }\n }\n\n .buttons-container {\n flex: none;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n width: 17rem;\n\n .action-buttons-container {\n flex: auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 1rem;\n }\n\n .install-button-container, .configure-button-container, .uninstall-button-container, .share-button-container {\n flex: auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 1rem;\n height: 4rem;\n padding: 0 1rem;\n\n .icon {\n flex: none;\n width: 2rem;\n height: 2rem;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 2.4em;\n font-size: 1.2rem;\n font-weight: 500;\n text-align: center;\n }\n }\n\n .install-button-container {\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light2;\n }\n\n .label {\n color: @color-surface-light5;\n }\n }\n\n .configure-button-container {\n flex: none;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light2;\n }\n\n .icon {\n fill: @color-surface-light5;\n }\n }\n\n .uninstall-button-container {\n outline-color: @color-background-light3;\n outline-style: solid;\n\n &:hover {\n background-color: @color-background-light2;\n }\n\n .label {\n color: @color-surface-light5-90;\n }\n }\n\n .share-button-container {\n &:hover {\n .icon {\n fill: @color-secondaryvariant1-light1;\n }\n\n .label {\n text-decoration: underline;\n color: @color-secondaryvariant1-light2;\n }\n }\n\n .icon {\n fill: @color-secondaryvariant1-dark1-60;\n }\n\n .label {\n color: @color-secondaryvariant1-90;\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .addon-container {\n flex-wrap: wrap;\n\n .info-container {\n margin-left: 0.5rem;\n padding: 0;\n }\n\n .buttons-container {\n flex: 0 1 100%;\n width: auto;\n margin-top: 1rem;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n .share-button-container {\n flex: none;\n\n .icon {\n margin-right: 0;\n }\n\n .label {\n display: none;\n }\n }\n\n .install-button-container, .uninstall-button-container {\n flex-basis: 100%;\n margin-right: 1rem;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n share-modal-content: modal-dialog-content;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n addon-modal-content: modal-dialog-content;\n cancel-button-label: label;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n filters-modal-container: modal-dialog-container;\n filters-modal-content: modal-dialog-content;\n}\n\n.addons-container {\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .addons-content {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-self: stretch;\n\n .selectable-inputs-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 1.5rem;\n overflow: visible;\n\n .add-button-container {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n width: 10rem;\n height: 3.5rem;\n margin-right: 1.5rem;\n padding: 0 1rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light2;\n }\n\n &:focus {\n outline-color: @color-surface-light5;\n }\n\n .icon {\n flex: none;\n width: 1.2rem;\n height: 1.2rem;\n margin-right: 1rem;\n fill: @color-surface-light5;\n }\n\n .add-button-label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 2.4em;\n font-size: 1.1rem;\n color: @color-surface-light5;\n }\n }\n\n .select-input-container {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: 15rem;\n height: 3.5rem;\n margin-right: 1.5rem;\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 7);\n overflow: auto;\n }\n }\n\n .spacing {\n flex: 1;\n }\n\n .search-bar {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: 18rem;\n }\n\n .filter-button {\n flex: none;\n display: none;\n align-items: center;\n justify-content: center;\n width: 3.5rem;\n height: 3.5rem;\n background-color: @color-background;\n\n .filter-icon {\n flex: none;\n width: 1.4rem;\n height: 1.4rem;\n fill: @color-secondaryvariant1-90;\n }\n }\n }\n\n .message-container {\n flex: 1;\n align-self: stretch;\n padding: 0 1.5rem;\n font-size: 2rem;\n color: @color-surface-light5;\n }\n\n .addons-list-container {\n flex: 1;\n align-self: stretch;\n padding: 0 1.5rem;\n overflow-y: auto;\n\n .addon {\n margin-bottom: 1.5rem;\n }\n }\n }\n}\n\n.filters-modal {\n .filters-modal-container {\n overflow: visible;\n\n .filters-modal-content {\n display: flex;\n flex-direction: column;\n overflow: visible;\n\n .select-input-container {\n height: 3.5rem;\n\n &:not(:last-child) {\n margin-bottom: 1rem;\n }\n }\n }\n }\n}\n\n.add-addon-modal-container {\n .addon-modal-content {\n width: 30rem;\n\n .notice {\n margin-bottom: 1.5rem;\n font-size: 1rem;\n color: @color-background-dark5-90;\n }\n\n .addon-url-input {\n width: 100%;\n padding: 1rem;\n color: @color-surface-dark5;\n outline: var(--focus-outline-size) solid @color-surface-light2;\n outline-offset: calc(-1 * var(--focus-outline-size));\n\n &:hover {\n outline-color: @color-surface-light4;\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n }\n }\n\n .cancel-button {\n background-color: transparent;\n\n &:hover {\n background-color: @color-surface-light3;\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n\n .cancel-button-label {\n color: @color-surface-dark2;\n }\n }\n}\n\n.share-modal-container {\n .share-modal-content {\n width: 30rem;\n\n .title-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .logo, .icon {\n float: left;\n width: 5rem;\n height: 5rem;\n margin-right: 1.5rem;\n padding: 0.5rem;\n }\n\n .logo {\n object-fit: contain;\n object-position: center;\n }\n\n .icon {\n fill: @color-secondaryvariant1-light3;\n }\n\n .name-container {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: 0;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: baseline;\n\n .name {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n margin-right: 0.5rem;\n font-size: 1.6rem;\n color: @color-background-dark5-90;\n }\n\n .version {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: auto;\n margin-top: 0.5rem;\n color: @color-background-dark5-60;\n }\n }\n }\n\n .share-prompt-container {\n margin-top: 1rem;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .addons-container {\n .addons-content {\n .selectable-inputs-container {\n .add-button-container {\n position: fixed;\n right: 0;\n bottom: calc(3rem + var(--horizontal-nav-bar-size));\n box-shadow: 0 1.35rem 2.7rem @color-background-dark5-40,\n 0 1.1rem 0.85rem @color-background-dark5-20;\n }\n\n .select-input-container {\n display: none;\n }\n\n .spacing {\n display: none;\n }\n\n .search-bar {\n flex-basis: 100%;\n margin-right: 1rem;\n }\n\n .filter-button {\n display: flex;\n }\n }\n }\n }\n\n .share-modal-container {\n .share-modal-content {\n width: auto;\n }\n }\n\n .add-addon-modal-container {\n .addon-modal-content {\n width: auto;\n\n .notice {\n margin-bottom: 1rem;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/MetaRow/styles.less') {\n meta-item: meta-item;\n}\n\n:import('~stremio/common/MetaRow/MetaRowPlaceholder/styles.less') {\n meta-item-placeholder: meta-item;\n}\n\n.board-container {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n\n .board-content-container {\n flex: 1;\n align-self: stretch;\n background-color: @color-background-dark2;\n\n .board-content {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n\n .board-row {\n margin: 4rem 2rem;\n }\n }\n }\n\n .board-warning-container {\n flex: none;\n align-self: stretch;\n }\n}\n\n@media only screen and (max-width: @large) {\n .board-container {\n .board-content-container {\n .board-content {\n .board-row-poster, .board-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+10) {\n display: none;\n }\n }\n }\n\n .board-row-landscape, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+9) {\n display: none;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @normal) {\n .board-container {\n .board-content-container {\n .board-content {\n .board-row-poster, .board-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+9) {\n display: none;\n }\n }\n }\n\n .board-row-landscape, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+8) {\n display: none;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @medium) {\n .board-container {\n .board-content-container {\n .board-content {\n .board-row-poster, .board-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+8) {\n display: none;\n }\n }\n }\n\n .board-row-landscape, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+7) {\n display: none;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @small) {\n .board-container {\n .board-content-container {\n .board-content {\n .board-row-poster, .board-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+7) {\n display: none;\n }\n }\n }\n\n .board-row-landscape, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+6) {\n display: none;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xsmall) {\n .board-container {\n .board-content-container {\n .board-content {\n .board-row-poster, .board-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+6) {\n display: none;\n }\n }\n }\n\n .board-row-landscape, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+5) {\n display: none;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xxsmall) {\n .board-container {\n .board-content-container {\n .board-content {\n .board-row-poster, .board-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+5) {\n display: none;\n }\n }\n }\n\n .board-row-landscape, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+4) {\n display: none;\n }\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .board-container {\n position: relative;\n z-index: 0;\n\n .board-content-container {\n &:only-child {\n .board-content {\n height: 100%;\n }\n }\n \n .board-content {\n height: calc(100% - 4rem);\n\n .board-row {\n margin: 2rem 1rem;\n }\n\n .board-row-poster, .board-row-square, .continue-watching-row {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+4) {\n display: none;\n }\n }\n }\n\n .board-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+3) {\n display: none;\n }\n }\n }\n }\n }\n \n .board-warning-container {\n position: absolute;\n left: 0;\n right: 0;\n bottom: var(--vertical-nav-bar-size);\n height: 4rem;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n multiselect-modal-container: modal-container;\n multiselect-option-container: option-container;\n multiselect-icon: icon;\n multiselect-label: label;\n}\n\n:import('~stremio/common/PaginationInput/styles.less') {\n pagination-prev-button-container: prev-button-container;\n pagination-next-button-container: next-button-container;\n pagination-button-icon: icon;\n pagination-label: label;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n selectable-inputs-modal-container: modal-dialog-container;\n selectable-inputs-modal-content: modal-dialog-content;\n}\n\n.discover-container {\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .discover-content {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row;\n\n .catalog-container {\n flex: 1;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n\n .selectable-inputs-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n padding: 1.5rem;\n overflow: visible;\n\n .select-input {\n flex: 0 1 15rem;\n height: 3.5rem;\n\n &:not(:first-child) {\n margin-left: 1.5rem;\n }\n\n &:nth-child(n+4) {\n display: none;\n\n &~.filter-container {\n display: flex;\n }\n }\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 7);\n overflow: auto;\n }\n }\n\n .filter-container {\n flex: none;\n display: none;\n align-items: center;\n justify-content: center;\n width: 3.5rem;\n height: 3.5rem;\n margin-left: 1.5rem;\n background-color: @color-background;\n\n .filter-icon {\n flex: none;\n width: 1.4rem;\n height: 1.4rem;\n fill: @color-secondaryvariant1-90;\n }\n }\n }\n\n .missing-addon-warning-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 0 1.5rem 1.5rem 1.5rem;\n\n .warning-label {\n flex: none;\n max-height: 2.4em;\n margin-bottom: 1rem;\n font-size: 1.4rem;\n text-align: center;\n color: @color-surface-light5-90;\n }\n\n .install-button {\n flex: none;\n min-width: 10rem;\n max-width: 15rem;\n padding: 1rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n .label {\n max-height: 2.4em;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n }\n\n .message-container {\n flex: 0 1 auto;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 0 1.5rem;\n overflow-y: auto;\n\n &:first-child {\n padding: 4rem;\n }\n\n .image {\n flex: none;\n width: 12rem;\n height: 12rem;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .message-label {\n flex: none;\n font-size: 2.5rem;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n\n .meta-items-container {\n flex: 1;\n align-self: stretch;\n display: grid;\n grid-auto-rows: max-content;\n align-items: center;\n grid-gap: 0.5rem;\n margin-right: 1.5rem;\n padding: 0 1.5rem;\n overflow-y: auto;\n\n .meta-item-placeholder {\n padding: 1rem;\n\n .poster-container {\n padding-bottom: calc(100% * var(--poster-shape-ratio));\n background-color: var(--color-placeholder-background);\n }\n\n .title-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 2.8rem;\n\n .title-label {\n flex: none;\n width: 60%;\n height: 1.2rem;\n background-color: var(--color-placeholder-background);\n }\n }\n }\n }\n }\n\n .meta-preview-container {\n flex: none;\n align-self: stretch;\n width: 28rem;\n background-color: @color-background-dark3;\n }\n }\n}\n\n.selectable-inputs-modal {\n .selectable-inputs-modal-container {\n overflow: visible;\n\n .selectable-inputs-modal-content {\n overflow: visible;\n\n .select-input {\n height: 3.5rem;\n\n &:not(:last-child) {\n margin-bottom: 1rem;\n }\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 4);\n overflow: auto;\n }\n }\n }\n }\n}\n\n.multiselect-modal-container {\n .multiselect-menu-container {\n width: 15rem;\n max-height: calc(3.2rem * 7);\n overflow-y: auto;\n scrollbar-color: @color-surface-light1 @color-surface-light4;\n\n ::-webkit-scrollbar-thumb {\n background-color: @color-surface-light1;\n\n &:hover {\n background-color: @color-surface-light2;\n }\n }\n\n ::-webkit-scrollbar-track {\n background-color: @color-surface-light4;\n }\n\n .multiselect-option-container {\n background: none;\n\n &:hover, &:focus {\n background-color: @color-surface-light3;\n }\n\n &:focus {\n outline-color: @color-background-dark2;\n }\n\n .multiselect-label {\n color: @color-background-dark2-90;\n }\n\n .multiselect-icon {\n fill: @color-background-dark2-90;\n }\n }\n }\n}\n\n@media only screen and (min-width: @xxlarge) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(10, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xxlarge) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(9, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xlarge) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(8, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @large) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(7, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @normal) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(6, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @medium) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(5, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @small) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(4, 1fr);\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xsmall) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(5, 1fr);\n margin-right: 0;\n }\n }\n\n .meta-preview-container {\n display: none;\n }\n }\n }\n}\n\n@media only screen and (max-width: @xxsmall) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .meta-items-container {\n grid-template-columns: repeat(4, 1fr);\n margin-right: 0;\n }\n }\n\n .meta-preview-container {\n display: none;\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .discover-container {\n .discover-content {\n .catalog-container {\n .selectable-inputs-container {\n justify-content: space-between;\n\n .select-input {\n &:nth-child(n+3) {\n display: none;\n\n &~.filter-container {\n display: flex;\n }\n }\n }\n }\n\n .meta-items-container {\n grid-template-columns: repeat(3, 1fr);\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.not-found-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .nav-bar {\n flex: none;\n align-self: stretch;\n }\n\n .not-found-content {\n flex: 1;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n .not-found-image {\n flex: none;\n width: 12rem;\n height: 12rem;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .not-found-label {\n flex: none;\n font-size: 2.5rem;\n max-height: 3.6em;\n max-width: 60%;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n}\n\n:import('~stremio/common/PaginationInput/styles.less') {\n pagination-prev-button-container: prev-button-container;\n pagination-next-button-container: next-button-container;\n pagination-button-icon: icon;\n pagination-label: label;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n selectable-inputs-modal-container: modal-dialog-container;\n selectable-inputs-modal-content: modal-dialog-content;\n}\n\n.library-container {\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .library-content {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n\n .selectable-inputs-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n padding: 1.5rem;\n overflow: visible;\n\n .select-input-container {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: 15rem;\n height: 3.5rem;\n\n &:not(:last-child) {\n margin-right: 1.5rem;\n }\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 7);\n overflow: auto;\n }\n }\n\n .filter-container {\n flex: none;\n display: none;\n align-items: center;\n justify-content: center;\n width: 3.5rem;\n height: 3.5rem;\n background-color: @color-background;\n\n .filter-icon {\n flex: none;\n width: 1.4rem;\n height: 1.4rem;\n fill: @color-secondaryvariant1-90;\n }\n }\n\n .spacing {\n flex: 1;\n }\n\n .pagination-input {\n flex: none;\n height: 3.5rem;\n margin-left: 1.5rem;\n\n &.pagination-input-placeholder {\n pointer-events: none;\n\n .pagination-prev-button-container, .pagination-next-button-container {\n .pagination-button-icon {\n fill: @color-surface-dark5-90;\n }\n }\n\n .pagination-label {\n color: @color-surface-dark5-90;\n }\n }\n\n .pagination-prev-button-container, .pagination-next-button-container {\n width: 3.5rem;\n height: 3.5rem;\n\n .pagination-button-icon {\n width: 1rem;\n height: 1rem;\n }\n }\n\n .pagination-label {\n width: 3rem;\n }\n }\n }\n\n .message-container {\n flex: 0 1 auto;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 0 1.5rem;\n overflow-y: auto;\n\n &:first-child {\n padding: 4rem;\n }\n\n &.no-user-message-container {\n .login-button-container {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n width: 20rem;\n min-height: 4rem;\n padding: 0.5rem 1rem;\n margin-bottom: 1rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 4.8em;\n font-size: 1.2rem;\n font-weight: 700;\n color: @color-surface-light5-90;\n text-align: center;\n }\n }\n }\n\n .image {\n flex: none;\n width: 12rem;\n height: 12rem;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .message-label {\n flex: none;\n font-size: 2.5rem;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n\n .meta-items-container {\n flex: 1;\n align-self: stretch;\n display: grid;\n grid-auto-rows: max-content;\n align-items: center;\n grid-gap: 0.5rem;\n padding: 0 1.5rem;\n overflow-y: auto;\n }\n }\n}\n\n.selectable-inputs-modal {\n .selectable-inputs-modal-container {\n overflow: visible;\n\n .selectable-inputs-modal-content {\n overflow: visible;\n\n .select-input-container {\n height: 3.5rem;\n\n &:not(:last-child) {\n margin-bottom: 1rem;\n }\n }\n }\n }\n}\n\n@media only screen and (min-width: @large) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(10, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @large) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(9, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @normal) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(8, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @medium) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(7, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @small) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(6, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @xsmall) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(5, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @xxsmall) {\n .library-container {\n .library-content {\n .meta-items-container {\n grid-template-columns: repeat(4, 1fr);\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .library-container {\n .library-content {\n .selectable-inputs-container {\n justify-content: space-between;\n\n .select-input-container {\n display: none;\n }\n\n .spacing {\n display: none;\n }\n\n .pagination-input {\n margin-left: 0;\n }\n\n .filter-container {\n display: flex;\n }\n }\n\n .meta-items-container {\n grid-template-columns: repeat(3, 1fr);\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n:import('~stremio/common/PlayIconCircleCentered/styles.less') {\n play-icon-circle-centered-background: background;\n play-icon-circle-centered-icon: icon;\n}\n\n.stream-placeholder-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0.5rem 1rem;\n\n .addon-container {\n flex: none;\n\n .addon-name {\n width: 5rem;\n height: 2rem;\n background-color: var(--color-placeholder-background);\n }\n }\n\n .info-container {\n flex: 1;\n margin: 0.5rem 1rem;\n\n .description-container {\n height: 1.2rem;\n background-color: var(--color-placeholder-background);\n\n &:nth-child(1) {\n width: 80%;\n }\n\n &:nth-child(2) {\n width: 40%;\n margin-top: 0.5rem;\n }\n }\n }\n\n .play-icon {\n flex: none;\n width: 3.5rem;\n height: 5rem;\n\n .play-icon-circle-centered-background {\n fill: none;\n }\n\n .play-icon-circle-centered-icon {\n fill: var(--color-placeholder-background);\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/PlayIconCircleCentered/styles.less') {\n play-icon-circle-centered-background: background;\n play-icon-circle-centered-icon: icon;\n}\n\n.stream-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-wrap: wrap;\n padding: 0.5rem 1rem;\n\n &:hover, &:focus {\n background-color: @color-background;\n }\n\n &:hover, &:focus, &:global(.selected) {\n .play-icon {\n .play-icon-circle-centered-background {\n fill: @color-accent4-90;\n }\n\n .play-icon-circle-centered-icon {\n fill: @color-surface-light5-90;\n }\n }\n }\n\n .thumbnail-container, .addon-name-container {\n flex: none;\n\n .thumbnail {\n display: block;\n width: 5rem;\n height: 5rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .placeholder-icon {\n display: block;\n width: 5rem;\n height: 5rem;\n padding: 0.5rem;\n fill: @color-secondaryvariant1-light3-90;\n }\n\n .addon-name {\n width: 5rem;\n max-height: 3.6em;\n font-size: 1.1rem;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n\n .info-container {\n flex: 1;\n max-height: 3.6em;\n margin: 0.5rem 1rem;\n white-space: pre;\n color: @color-surface-light5-90;\n }\n\n .play-icon {\n flex: none;\n width: 3.5rem;\n height: 5rem;\n\n .play-icon-circle-centered-background {\n fill: none;\n }\n\n .play-icon-circle-centered-icon {\n fill: @color-surface-dark5-90;\n }\n }\n\n .progress-bar-container {\n flex: 0 0 100%;\n background-color: @color-background-light2;\n\n .progress-bar {\n height: 0.5rem;\n background-color: @color-primaryvariant1;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .stream-container {\n &:hover, &focus {\n background-color: @color-surface-light5-20;\n }\n\n .thumbnail-container, .addon-name-container {\n .addon-name {\n font-weight: 500;\n }\n }\n\n .play-icon {\n .play-icon-circle-centered-icon {\n fill: @color-surface-light5-90;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n multiselect-label: label;\n multiselect-icon: icon;\n}\n\n.streams-list-container {\n display: flex;\n flex-direction: column;\n\n .message-container {\n flex: 0 1 auto;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 1rem 1rem 0;\n overflow-y: auto;\n\n .image {\n flex: none;\n width: 10rem;\n height: 10rem;\n max-width: 100%;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .label {\n flex: none;\n font-size: 1.4rem;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n\n .select-input-container {\n flex: 0 0 auto;\n height: 3.5rem;\n margin: 1em 1em 0 1em;\n background: none;\n\n &:hover, &:focus, &:global(.active) {\n background-color: @color-background;\n }\n\n & >.multiselect-label {\n color: @color-surface-light5-90;\n }\n\n & >.multiselect-icon {\n fill: @color-surface-light5-90;\n }\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 7);\n overflow: auto;\n }\n }\n\n .streams-container {\n flex: 0 1 auto;\n align-self: stretch;\n margin-top: 1rem;\n overflow-y: auto;\n }\n\n .install-button-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n margin: 1rem;\n padding: 1.5rem 1rem;\n background-color: @color-accent3;\n\n &:hover, &:focus {\n background-color: @color-accent3-light1;\n }\n\n .icon {\n flex: none;\n width: 2rem;\n height: 2rem;\n margin-right: 1rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex: 0 1 auto;\n font-size: 1.5rem;\n font-weight: 500;\n max-height: 3.6em;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .streams-list-container {\n overflow: visible;\n\n .streams-container {\n margin-top: 0;\n scrollbar-color: @color-surface-light5-20 transparent;\n\n &::-webkit-scrollbar-thumb {\n background-color: @color-surface-light5-20;\n }\n\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.seasons-bar-placeholder-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 1rem;\n\n .prev-season-button, .next-season-button {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 6.5rem;\n height: 3.5rem;\n padding: 0.5rem;\n\n &>:first-child {\n margin-right: 0.5rem;\n }\n\n .icon {\n flex: none;\n display: block;\n width: 1.5rem;\n height: 1.5rem;\n fill: var(--color-placeholder-background);\n }\n\n .label {\n flex: 1;\n max-height: 1.2em;\n font-weight: 500;\n text-align: center;\n color: var(--color-placeholder-text);\n }\n }\n\n .seasons-popup-label-container {\n flex: 0 1 auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n margin: 0 1rem;\n\n .seasons-popup-label {\n max-height: 1.2em;\n font-weight: 500;\n color: var(--color-placeholder-text);\n }\n\n .seasons-popup-icon {\n flex: none;\n width: 1rem;\n height: 1rem;\n margin-left: 1rem;\n fill: var(--color-placeholder-background);\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n multiselect-label: label;\n multiselect-icon: icon;\n}\n\n.seasons-bar-container {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 1rem;\n overflow: visible;\n\n .prev-season-button, .next-season-button {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 6.5rem;\n height: 3.5rem;\n padding: 0.5rem;\n\n &:hover, &:focus {\n .label {\n color: @color-surface-light2-90;\n }\n\n .icon {\n fill: @color-surface-light2-90;\n }\n }\n\n &:focus {\n background-color: @color-surface-light5-10;\n }\n\n &>:first-child {\n margin-right: 0.5rem;\n }\n\n .label {\n flex: 1;\n max-height: 1.2em;\n font-weight: 500;\n text-align: center;\n color: @color-surface-90;\n }\n\n .icon {\n flex: none;\n width: 1.5rem;\n height: 1.5rem;\n fill: @color-surface-90;\n }\n }\n\n .seasons-popup-label-container {\n flex: 0 1 auto;\n height: 3.5rem;\n background: none;\n\n &:hover, &:focus, &:global(.active) {\n background-color: @color-background;\n }\n\n &>.multiselect-label {\n color: @color-surface-light5-90;\n }\n\n &>.multiselect-icon {\n fill: @color-surface-light5-90;\n }\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 7);\n overflow: auto;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .seasons-bar-container {\n padding-top: 0;\n\n .seasons-popup-label-container {\n .multiselect-menu-container {\n max-height: calc(3.2rem * 3);\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.video-placeholder-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0.5rem 1rem;\n\n .info-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n height: 3rem;\n margin: 0.5rem 1rem;\n\n .name-container {\n width: 80%;\n height: 1.2rem;\n background: var(--color-placeholder-background);\n }\n\n .released-container {\n height: 1rem;\n background: var(--color-placeholder-background);\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Popup/styles.less') {\n context-menu-container: menu-container;\n menu-direction-top-left: menu-direction-top-left;\n menu-direction-bottom-left: menu-direction-bottom-left;\n menu-direction-top-right: menu-direction-top-right;\n menu-direction-bottom-right: menu-direction-bottom-right;\n}\n\n.video-container {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n padding: 0.5rem 1rem;\n\n &:hover,\n &:focus,\n &:global(.active) {\n background-color: @color-background;\n }\n\n .thumbnail-container {\n flex: none;\n\n .thumbnail {\n pointer-events: none;\n display: block;\n width: 7.5rem;\n height: 5rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .placeholder-icon {\n display: block;\n width: 7.5rem;\n height: 5rem;\n padding: 1rem;\n fill: @color-surface-light5;\n background-color: @color-surface-light5-40;\n opacity: 0.25;\n }\n }\n\n .info-container {\n flex: 1;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n margin: 0.5rem 1rem;\n\n &:first-child {\n height: 3rem;\n\n .title-container {\n max-height: 1.2em;\n }\n }\n\n .title-container {\n max-height: 2.4em;\n color: @color-surface-light5-90;\n }\n\n .flex-row-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-end;\n\n .released-container {\n flex: 1;\n margin-right: 0.5rem;\n padding: 0.2rem 0;\n font-size: 0.8rem;\n font-weight: 500;\n white-space: nowrap;\n text-overflow: ellipsis;\n text-transform: uppercase;\n color: @color-surface-dark5-90;\n }\n\n .upcoming-watched-container {\n flex: 0 1 auto;\n display: flex;\n flex-direction: row;\n\n &>:nth-child(2) {\n margin-left: 0.5rem;\n }\n\n .upcoming-container,\n .watched-container {\n flex: none;\n padding: 0.2rem 0.4rem;\n max-width: 10rem;\n\n &:not(:only-child) {\n max-width: 5rem;\n }\n\n .flag-label {\n font-size: 0.8rem;\n font-weight: 500;\n white-space: nowrap;\n text-overflow: ellipsis;\n text-transform: uppercase;\n color: @color-background-90;\n }\n }\n\n .upcoming-container {\n background-color: @color-accent4;\n }\n\n .watched-container {\n background-color: @color-accent5;\n }\n }\n }\n }\n\n .progress-bar-container {\n flex: 0 0 100%;\n background-color: @color-background-light2;\n\n .progress-bar {\n height: 0.5rem;\n background-color: @color-primaryvariant1;\n }\n }\n\n .context-menu-container {\n max-width: calc(90% - 1.5rem);\n\n .context-menu-content {\n --spatial-navigation-contain: contain;\n background-color: @color-background-dark1;\n\n .context-menu-option-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0.5rem 1rem;\n\n &:hover,\n &:focus {\n background-color: @color-background;\n }\n\n .context-menu-option-label {\n font-size: 1rem;\n max-height: 2.4em;\n color: @color-surface-light5-90;\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .video-container {\n\n &:hover,\n &:focus,\n &:global(.active) {\n background-color: @color-surface-light5-20;\n }\n\n .context-menu-container {\n\n &.menu-direction-top-left,\n &.menu-direction-bottom-left {\n right: 1.5rem;\n }\n\n &.menu-direction-top-right,\n &.menu-direction-bottom-right {\n left: 1.5rem;\n }\n\n &.menu-direction-top-left,\n &.menu-direction-top-right {\n bottom: 90%;\n }\n\n &.menu-direction-bottom-left,\n &.menu-direction-bottom-right {\n top: 90%;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.videos-list-container {\n display: flex;\n flex-direction: column;\n\n .message-container {\n flex: 1;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 2rem;\n overflow-y: auto;\n\n .image {\n flex: none;\n width: 10rem;\n height: 10rem;\n max-width: 100%;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .label {\n flex: none;\n font-size: 1.4rem;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n\n .seasons-bar {\n flex: none;\n align-self: stretch;\n }\n\n .search-bar {\n flex: none;\n align-self: stretch;\n margin: 0 1.5rem 1rem 1.5rem;\n\n &:first-child {\n margin-top: 1rem;\n }\n }\n\n .videos-container {\n flex: 1;\n align-self: stretch;\n overflow-y: auto;\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .videos-list-container {\n overflow: visible;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/MetaPreview/styles.less') {\n meta-info-container: meta-info-container;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n modal-dialog-container: modal-dialog-container;\n title-modal-container: title-container;\n}\n\n.metadetails-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .nav-bar {\n flex: none;\n align-self: stretch;\n }\n\n .metadetails-content {\n flex: 1;\n align-self: stretch;\n position: relative;\n z-index: 0;\n display: flex;\n flex-direction: row;\n\n .vertical-nav-bar {\n --vertical-nav-bar-size: 6rem;\n flex: none;\n }\n\n .background-image-layer {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n\n &::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n background: @color-background-dark2-70;\n content: \"\";\n }\n\n .background-image {\n pointer-events: none; \n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: top left;\n opacity: 0.9;\n }\n }\n\n .meta-message-container {\n flex: 0 1 30rem;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 2rem;\n\n .image {\n flex: none;\n width: 12rem;\n height: 12rem;\n max-width: 100%;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .message-label {\n flex: none;\n align-self: stretch;\n font-size: 2rem;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n\n .meta-preview {\n flex: 0 1 40rem;\n align-self: stretch;\n }\n\n .spacing {\n flex: 1;\n }\n\n .videos-list, .streams-list {\n flex: 0 0 26.5rem;\n align-self: stretch;\n background-color: @color-background-dark5-70;\n }\n }\n}\n\n.meta-extension-modal-container {\n .modal-dialog-container {\n width: 80%;\n height: 80%;\n\n .title-modal-container {\n max-height: 1.2em;\n }\n\n .meta-extension-modal-iframe {\n width: 100%;\n height: 100%;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .metadetails-container {\n position: relative;\n z-index: 0;\n\n .metadetails-content {\n display: block;\n position: static;\n z-index: initial;\n overflow-y: auto;\n\n .spacing {\n display: none;\n }\n\n .background-image-layer {\n top: var(--horizontal-nav-bar-size);\n }\n\n .videos-list, .streams-list {\n background-color: transparent;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/MetaRow/styles.less') {\n meta-item: meta-item;\n}\n\n:import('~stremio/common/MetaRow/MetaRowPlaceholder/styles.less') {\n meta-item-placeholder: meta-item;\n}\n\n.search-container {\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .search-content {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n\n .search-row {\n margin: 4rem 2rem;\n }\n\n .search-hints-container {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: flex-start;\n align-content: flex-start;\n flex-wrap: wrap;\n padding: 4rem;\n\n .search-hint-container {\n flex: 0 0 50%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 0 2rem;\n margin-bottom: 4rem;\n\n .icon {\n flex: none;\n width: 6rem;\n height: 6rem;\n margin-bottom: 2rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n font-size: 1.2rem;\n color: @color-surface-light5-90;\n text-align: center;\n }\n }\n }\n\n .message-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 4rem;\n\n .image {\n flex: none;\n width: 12rem;\n height: 12rem;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .message-label {\n flex: 0 1 auto;\n font-size: 2.5rem;\n text-align: center;\n color: @color-secondaryvariant2-light1-90;\n }\n }\n }\n}\n\n@media only screen and (max-width: @large) {\n .search-container {\n .search-content {\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+10) {\n display: none;\n }\n }\n }\n\n .search-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+9) {\n display: none;\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @normal) {\n .search-container {\n .search-content {\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+9) {\n display: none;\n }\n }\n }\n\n .search-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+8) {\n display: none;\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @medium) {\n .search-container {\n .search-content {\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+8) {\n display: none;\n }\n }\n }\n\n .search-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+7) {\n display: none;\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @small) {\n .search-container {\n .search-content {\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+7) {\n display: none;\n }\n }\n }\n\n .search-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+6) {\n display: none;\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xsmall) {\n .search-container {\n .search-content {\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+6) {\n display: none;\n }\n }\n }\n\n .search-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+5) {\n display: none;\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @xxsmall) {\n .search-container {\n .search-content {\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+5) {\n display: none;\n }\n }\n }\n\n .search-row-landscape {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+4) {\n display: none;\n }\n }\n }\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .search-container {\n .search-content {\n .search-row {\n margin: 2rem 1rem;\n }\n\n .search-row-poster, .search-row-square {\n .meta-item, .meta-item-placeholder {\n &:nth-child(n+4) {\n display: none;\n }\n }\n }\n\n .search-hints-container {\n padding: 4rem 2rem;\n\n .search-hint-container {\n padding: 0 1.5rem;\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/Checkbox/styles.less') {\n checkbox-icon: icon;\n}\n\n:import('~stremio/common/Multiselect/styles.less') {\n multiselect-menu-container: menu-container;\n multiselect-label: label;\n}\n\n:import('~stremio/common/ModalDialog/styles.less') {\n configure-server-url-modal-content: modal-dialog-content;\n cancel-button-label: label;\n}\n\n.settings-container {\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n\n .settings-content {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row;\n\n .side-menu-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n width: 20rem;\n padding: 3rem;\n\n .side-menu-button {\n flex: none;\n align-self: stretch;\n padding: 1rem;\n font-size: 1.1rem;\n color: @color-secondaryvariant1-90;\n\n &.selected {\n background-color: @color-background;\n color: @color-surface-light5-90;\n }\n\n &:hover {\n background-color: @color-background-light1;\n }\n }\n\n .spacing {\n flex: 1;\n }\n\n .version-info-label {\n flex: 0 1 auto;\n margin: 0.5rem 0;\n color: @color-secondaryvariant1-90;\n }\n }\n\n .sections-container {\n flex: 1;\n align-self: stretch;\n padding: 0 2rem;\n overflow-y: auto;\n\n .section-container {\n display: flex;\n flex-direction: column;\n padding: 3rem 0;\n overflow: visible;\n\n &:not(:last-child) {\n border-bottom: thin solid @color-secondaryvariant1-90;\n }\n\n .section-title {\n flex: none;\n align-self: stretch;\n font-size: 1.8rem;\n line-height: 3.4rem;\n margin-bottom: 1rem;\n color: @color-surface-light5-90;\n }\n\n .option-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: row;\n align-items: center;\n max-width: 35rem;\n margin-bottom: 2rem;\n overflow: visible;\n\n &:last-child {\n margin-bottom: 0;\n }\n\n &.user-info-option-container {\n height: 6rem;\n\n .avatar-container {\n flex: none;\n align-self: stretch;\n width: 6rem;\n margin-right: 1rem;\n border-radius: 50%;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n background-origin: content-box;\n background-clip: content-box;\n opacity: 0.9;\n }\n\n .email-logout-container {\n flex: 1;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n padding: 1rem 0;\n\n .email-label-container, .logout-button-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n\n .email-label-container {\n flex: 1 0 auto;\n\n .email-label {\n flex: 1;\n font-size: 1.1rem;\n max-height: 2.4em;\n color: @color-surface-light5-90;\n }\n }\n\n .logout-button-container {\n flex: 0 1 50%;\n\n &:hover, &:focus {\n outline: none;\n\n .logout-label {\n color: @color-surface-light5-90;\n text-decoration: underline;\n }\n }\n\n .logout-label {\n flex: 1;\n max-height: 1.2em;\n color: @color-surface-90;\n }\n }\n }\n\n .user-panel-container {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 10rem;\n height: 3.5rem;\n margin-left: 1rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n .user-panel-label {\n flex: 1;\n max-height: 2.4em;\n padding: 0 0.5rem;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n }\n\n .option-name-container, .option-input-container {\n flex: 1 1 50%;\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .icon {\n flex: none;\n width: 1.5rem;\n height: 1.5rem;\n margin-right: 0.5rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n line-height: 1.5rem;\n color: @color-surface-light5-90;\n }\n }\n\n .option-name-container {\n justify-content: flex-start;\n padding: 1rem 1rem 1rem 0;\n margin-right: 2rem;\n }\n\n .option-input-container {\n padding: 1rem;\n\n &.button-container {\n justify-content: center;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n .label {\n font-weight: 500;\n }\n }\n\n &.multiselect-container {\n >.multiselect-label {\n line-height: 1.5rem;\n max-height: 1.5rem;\n }\n\n .multiselect-menu-container {\n max-height: calc(3.2rem * 7);\n overflow: auto;\n }\n }\n\n &.link-container {\n flex: 0 1 auto;\n padding: 1rem 0;\n\n &:hover {\n .label {\n text-decoration: underline;\n }\n }\n }\n\n &.checkbox-container {\n justify-content: center;\n\n .checkbox-icon {\n width: 1.5rem;\n height: 1.5rem;\n }\n }\n\n &.color-input-container {\n padding: 1.75rem 1rem;\n }\n\n &.info-container {\n justify-content: center;\n\n &.selectable {\n user-select: text;\n\n .label {\n user-select: text;\n }\n }\n }\n\n &.configure-input-container {\n padding: 0;\n\n .label {\n flex-grow: 1;\n white-space: pre;\n text-overflow: ellipsis;\n padding: 0 1rem;\n }\n\n .configure-button-container {\n flex: none;\n width: 3rem;\n height: 3rem;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n .icon {\n flex: none;\n width: 1rem;\n height: 1rem;\n margin: 0;\n fill: @color-surface-light5-90;\n }\n }\n }\n\n &.shortcut-container {\n justify-content: center;\n padding: 0;\n overflow: visible;\n\n kbd {\n flex: 0 1 auto;\n height: 2.5rem;\n min-width: 2.5rem;\n line-height: 2.5rem;\n padding: 0 1rem;\n font-weight: 500;\n color: @color-secondaryvariant1-90;\n border-radius: 0.25em;\n box-shadow: 0 4px 0 1px @color-background-40;\n background-color: @color-background;\n }\n\n .label {\n margin: 0 1rem;\n white-space: nowrap;\n color: @color-secondaryvariant1-90;\n }\n }\n }\n }\n }\n }\n }\n}\n\n.configure-server-url-modal-container {\n .configure-server-url-modal-content {\n width: 30rem;\n\n .server-url-input {\n width: 100%;\n padding: 1rem;\n color: @color-surface-dark5;\n outline: var(--focus-outline-size) solid @color-surface-light2;\n outline-offset: calc(-1 * var(--focus-outline-size));\n\n &:hover {\n outline-color: @color-surface-light4;\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n }\n }\n\n .cancel-button {\n background-color: transparent;\n\n &:hover {\n background-color: @color-surface-light3;\n }\n\n &:focus {\n outline-color: @color-background-dark5;\n }\n\n .cancel-button-label {\n color: @color-surface-dark2;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .settings-container {\n .settings-content {\n flex-direction: column-reverse;\n\n .side-menu-container {\n width: 100%;\n padding: 0 1rem;\n\n .side-menu-button {\n display: none;\n }\n\n .version-info-label {\n width: 100%;\n text-align: end;\n }\n }\n }\n }\n\n .configure-server-url-modal-container {\n .configure-server-url-modal-content {\n width: auto;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.buffering-loader-container {\n display: flex;\n align-items: center;\n justify-content: center;\n\n .buffering-loader {\n flex: none;\n width: 17rem;\n height: 17rem;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n:import('~stremio/common/Slider/styles.less') {\n slider-track-after: track-after;\n slider-thumb: thumb;\n}\n\n.seek-bar-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n\n &:hover, &:global(.active) {\n .slider:not(:global(.disabled)) {\n .slider-thumb {\n fill: @color-surface-light5;\n }\n }\n }\n\n &:hover {\n .slider:not(:global(.disabled)) {\n .slider-track-after {\n transition: background-color 0s 100ms;\n }\n\n .slider-thumb {\n transition: fill 0s 100ms;\n }\n }\n }\n\n .label {\n flex: none;\n max-width: 5rem;\n white-space: nowrap;\n text-overflow: ellipsis;\n direction: rtl;\n text-align: left;\n color: @color-surface-light5;\n }\n\n .slider {\n flex: 1;\n align-self: stretch;\n margin: 0 var(--thumb-size);\n\n .slider-thumb {\n fill: transparent;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n:import('~stremio/common/Slider/styles.less') {\n slider-track: track;\n slider-track-after: track-after;\n}\n\n.volume-slider:not(:global(.disabled)) {\n .slider-track {\n background-color: @color-surface-dark5;\n }\n\n .slider-track-after {\n background-color: @color-surface-light3;\n }\n\n &:hover, &:global(.active) {\n .slider-track-after {\n background-color: @color-surface-light5;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.control-bar-container {\n padding: 0 1.5rem;\n\n .seek-bar {\n --track-size: 0.5rem;\n --thumb-size: 1.5rem;\n\n height: 2.5rem;\n }\n\n .control-bar-buttons-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .control-bar-button {\n flex: none;\n width: 4rem;\n height: 4rem;\n display: flex;\n justify-content: center;\n align-items: center;\n\n &:global(.disabled) {\n .icon {\n fill: @color-surface;\n }\n }\n\n .icon {\n flex: none;\n width: 3rem;\n height: 2rem;\n fill: @color-surface-light5;\n }\n }\n\n .volume-slider {\n --track-size: 0.4rem;\n --thumb-size: 1.3rem;\n\n flex: 0 1 16rem;\n min-width: 10rem;\n height: 4rem;\n margin: 0 1rem;\n }\n\n .spacing {\n flex: 1;\n }\n\n .control-bar-buttons-menu-button {\n flex: none;\n width: 4rem;\n height: 4rem;\n display: none;\n justify-content: center;\n align-items: center;\n\n .icon {\n flex: none;\n width: 3rem;\n height: 2rem;\n fill: @color-surface-light5;\n }\n }\n\n .control-bar-buttons-menu-container {\n flex: none;\n display: flex;\n flex-direction: row;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .control-bar-container {\n padding: 0;\n\n .seek-bar {\n margin: 0 1.5rem;\n }\n\n .control-bar-buttons-container {\n position: relative;\n padding: 0 0.5rem;\n overflow: visible;\n\n .volume-slider {\n display: none;\n }\n\n .control-bar-buttons-menu-button {\n display: flex;\n }\n\n .control-bar-buttons-menu-container {\n position: absolute;\n right: 0.15rem;\n bottom: 4.5rem;\n flex-direction: column;\n padding: 0.5rem;\n background-color: @color-background-dark1;\n box-shadow: 0 1.35rem 2.7rem @color-background-dark5-40,\n 0 1.1rem 0.85rem @color-background-dark5-20;\n\n &:not(:global(.open)) {\n display: none;\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.next-video-popup-container {\n display: flex;\n flex-direction: row;\n height: 16rem;\n width: 40rem;\n animation: slide-fade-in 0.5s ease-in;\n\n @keyframes slide-fade-in {\n 0% {\n opacity: 0;\n transform: translateX(calc(40rem + 2rem));\n }\n\n 100% {\n opacity: 1;\n transform: translateX(0);\n }\n }\n\n .poster-container {\n flex: 1 1 40%;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: @color-background;\n\n .poster-image {\n flex: none;\n width: 100%;\n height: 100%;\n object-position: center;\n object-fit: cover;\n }\n\n .placeholder-icon {\n flex: none;\n width: 80%;\n height: 50%;\n fill: @color-background-light3-90;\n }\n }\n\n .info-container {\n flex: 1 1 70%;\n display: flex;\n flex-direction: column;\n\n .details-container {\n flex: auto;\n padding: 1.5rem 1.5rem;\n\n .name {\n flex: none;\n align-self: stretch;\n max-height: 2.4em;\n font-weight: 600;\n margin-bottom: 0.5rem;\n color: @color-surface-light5-90;\n }\n\n .description {\n color: @color-surface-light5-50;\n }\n }\n\n .buttons-container {\n display: flex;\n flex-direction: row;\n\n .spacing {\n flex: 0 0 50%;\n }\n\n .button-container {\n flex: 0 0 50%;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n height: 3.5rem;\n\n &.play-button {\n background-color: @color-accent3;\n\n .icon {\n fill: @color-surface-light5-90;\n }\n\n .label {\n color: @color-surface-light5-90;\n }\n\n &:hover, &:focus {\n background-color: @color-accent3-light1;\n }\n }\n\n .icon {\n flex: none;\n width: 1.4rem;\n height: 1.4rem;\n margin-right: 1rem;\n fill: @color-secondaryvariant1-90;\n }\n\n .label {\n flex: none;\n max-height: 2.4em;\n font-size: 1.1rem;\n font-weight: 500;\n color: @color-secondaryvariant1-90;\n }\n\n &:hover, &:focus {\n background-color: @color-background-light2;\n }\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.statistics-menu-container {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n width: 30rem;\n padding: 1.5rem;\n\n .title {\n flex: none;\n font-weight: 600;\n color: @color-surface-light5-90;\n }\n\n .label {\n flex: none;\n font-weight: 500;\n color: @color-surface-light5-50;\n }\n\n .value {\n flex: none;\n font-weight: 500;\n color: @color-surface-light5-90;\n }\n\n .stats {\n flex: auto;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n gap: 1rem;\n\n .stat {\n flex: auto;\n display: flex;\n flex-direction: row;\n gap: 0.5rem;\n }\n }\n\n .info-hash {\n flex: auto;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.info-menu-container {\n width: 30rem;\n\n .stream {\n pointer-events: none;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.option-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 4rem;\n\n .icon {\n flex: none;\n width: 1.4rem;\n height: 1.4rem;\n margin: 1.3rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex: 1;\n max-height: 2.4em;\n font-weight: 400;\n color: @color-surface-light5-90;\n }\n\n &:hover {\n background-color: @color-background-light2;\n }\n\n &:global(.disabled) {\n opacity: 0.5;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.options-menu-container {\n width: 15rem;\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.videos-menu-container {\n width: 30rem;\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.discrete-input-container {\n &:global(.disabled) {\n .header {\n color: @color-surface-90;\n }\n\n .input-container {\n opacity: 0.4;\n }\n }\n\n .header {\n max-height: 2.4em;\n margin-bottom: 0.5rem;\n color: @color-surface-light5-90;\n }\n\n .input-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n background: @color-background;\n\n .button-container {\n flex: none;\n width: 3rem;\n height: 3rem;\n padding: 1rem;\n background-color: @color-background-light2;\n\n .icon {\n display: block;\n width: 100%;\n height: 100%;\n fill: @color-surface-light5-90;\n }\n }\n\n .option-label {\n flex: 1;\n max-height: 2.4em;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.subtitles-menu-container {\n height: 23rem;\n display: flex;\n flex-direction: row;\n\n .languages-container, .variants-container, .subtitles-settings-container {\n flex: none;\n align-self: stretch;\n display: flex;\n flex-direction: column;\n\n .languages-header, .variants-header, .settings-header {\n flex: none;\n align-self: stretch;\n max-height: 2.4em;\n margin: 1rem;\n font-weight: 600;\n color: @color-surface-light5-90;\n }\n\n .languages-list, .variants-list {\n flex: 1;\n align-self: stretch;\n overflow-y: auto;\n\n .language-option, .variant-option {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 1rem 1.5rem;\n\n &:global(.selected), &:hover {\n background-color: @color-background;\n }\n\n .language-label, .variant-label {\n flex: 1;\n max-height: 2.4em;\n font-size: 1.1rem;\n color: @color-surface-light5-90;\n }\n\n .icon {\n flex: none;\n width: 0.5rem;\n height: 0.5rem;\n border-radius: 100%;\n margin-left: 1rem;\n background-color: @color-accent3-90;\n }\n }\n }\n }\n\n .languages-container {\n width: 12rem;\n }\n\n .variants-container {\n width: 12rem;\n\n .no-variants-container {\n flex: 1;\n align-self: stretch;\n padding: 1rem;\n\n .no-variants-label {\n max-height: 4.8em;\n font-weight: 500;\n color: @color-surface-90;\n }\n }\n }\n\n .subtitles-settings-container {\n width: 16rem;\n\n .spacing {\n flex: 1;\n }\n\n .discrete-input {\n margin: 0 1.5rem 1rem;\n }\n\n .advanced-button {\n flex: none;\n align-self: flex-end;\n max-width: calc(100% - 3rem);\n margin: 0 1.5rem 1rem;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: @color-surface-light5-90;\n\n &:hover {\n text-decoration: underline;\n }\n\n &:global(.disabled) {\n color: @color-surface-90;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.option {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0 1.5em;\n \n &:global(.selected) {\n background-color: @color-background;\n\n .icon {\n display: block;\n }\n }\n\n &:hover, &:focus {\n background-color: @color-background-light2;\n }\n\n .label {\n flex: 1;\n font-weight: 400;\n color: @color-surface-light5-90;\n }\n\n .icon {\n flex: none;\n display: none;\n width: 0.5rem;\n height: 0.5rem;\n border-radius: 100%;\n margin-left: 1rem;\n background-color: @color-accent3-90;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.speed-menu-container {\n width: 12rem;\n overflow: visible !important;\n\n .title {\n flex: none;\n align-self: stretch;\n max-height: 2.4em;\n font-weight: 600;\n color: @color-surface-light5-90;\n margin: 1rem;\n }\n\n .options-container {\n flex: 0 1 auto;\n max-height: calc(3.2rem * 8);\n overflow-y: auto;\n \n .option {\n height: 3.2rem;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n.video-container {\n .video {\n width: 100%;\n height: 100%;\n\n * {\n font-size: inherit;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n:import('~stremio/common/Slider/styles.less') {\n active-slider-within: active-slider-within;\n}\n\n:import('~stremio/common/NavBar/HorizontalNavBar/styles.less') {\n nav-bar-button-container: button-container;\n nav-bar-title: title;\n nav-bar-icon: icon;\n}\n\nhtml:not(.active-slider-within) {\n .player-container.immersed {\n cursor: none;\n\n .nav-bar-layer, .control-bar-layer, .menu-layer {\n opacity: 0;\n transition: opacity 200ms;\n }\n }\n}\n\n.player-container {\n position: relative;\n z-index: 0;\n width: 100%;\n height: 100%;\n background-color: @color-background-dark5;\n\n .layer {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 0;\n\n &.error-layer {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background-color: @color-background-dark5;\n\n .error-label {\n flex: 0 1 auto;\n padding: 0 8rem;\n max-height: 4.8em;\n font-size: 2rem;\n color: @color-surface-light5-90;\n text-align: center;\n }\n\n .error-sub {\n flex: 0 1 auto;\n padding: 0 2rem;\n max-height: 4.8em;\n font-size: 1.3rem;\n margin-top: 0.8rem;\n color: @color-surface-light5-90;\n text-align: center; \n }\n\n .playlist-button {\n flex: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n height: 3.5rem;\n max-width: 16rem;\n margin-top: 1.5rem;\n padding: 0.5rem 1rem;\n background-color: @color-accent3;\n\n &:hover, &:focus {\n background-color: @color-accent3-light1;\n }\n\n .icon {\n flex: none;\n width: 1.5rem;\n height: 1.5rem;\n margin-right: 1rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex: 1;\n max-height: 2.4em;\n font-size: 1.1rem;\n font-weight: 500;\n color: @color-surface-light5-90;\n text-align: center;\n }\n }\n }\n\n &.nav-bar-layer {\n bottom: initial;\n background: transparent;\n overflow: visible;\n\n &::before {\n position: absolute;\n right: 0;\n top: 0;\n left: 0;\n z-index: -1;\n box-shadow: 0 0 8rem 6rem @color-background-dark5;\n content: \"\";\n }\n\n .nav-bar-button-container {\n &:hover {\n background: transparent;\n }\n\n .nav-bar-icon {\n fill: @color-surface-light5;\n }\n }\n\n .nav-bar-title {\n color: @color-surface-light5;\n }\n }\n\n &.control-bar-layer {\n top: initial;\n overflow: visible;\n\n &::before {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n box-shadow: 0 0 8rem 8rem @color-background-dark5;\n content: \"\";\n }\n }\n\n &.menu-layer {\n top: initial;\n left: initial;\n right: 2rem;\n bottom: 8rem;\n max-height: calc(100% - 13.5rem);\n max-width: calc(100% - 4rem);\n background-color: @color-background-dark1;\n box-shadow: 0 1.35rem 2.7rem @color-background-dark5-40,\n 0 1.1rem 0.85rem @color-background-dark5-20;\n overflow: auto;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n:import('~stremio/common/Checkbox/styles.less') {\n checkbox-icon: icon;\n}\n\n.consent-checkbox-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0.5rem 1rem;\n\n &:focus {\n outline: none;\n background-color: @color-surface-light5-20;\n }\n\n .checkbox-icon {\n flex: none;\n width: 1.2rem;\n height: 1.2rem;\n fill: @color-surface-dark5;\n }\n\n .label {\n flex: 1;\n margin-left: 0.5rem;\n font-size: 0.9rem;\n color: @color-surface-90;\n\n .link {\n font-size: 0.9rem;\n color: @color-surface-light5-90;\n\n &:hover {\n text-decoration: underline;\n }\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n:import('~stremio/common/ModalDialog/styles.less') {\n password-reset-modal-content: modal-dialog-content;\n cancel-button-label: label;\n}\n\n.password-reset-modal-container {\n .password-reset-modal-content {\n width: 30rem;\n\n .credentials-text-input {\n width: 100%;\n padding: 1rem;\n color: @color-surface-dark5;\n outline: var(--focus-outline-size) solid @color-surface-light2-90;\n outline-offset: calc(-1 * var(--focus-outline-size));\n\n &:hover {\n outline-color: @color-surface-light4-90;\n }\n\n &:focus {\n outline-color: @color-background-dark5-90;\n }\n }\n }\n\n .error-message {\n font-size: 1.1rem;\n margin-top: 2rem;\n text-align: center;\n color: @color-accent5-90;\n }\n\n .cancel-button {\n background-color: transparent;\n\n &:hover {\n background-color: @color-surface-light3;\n }\n\n &:focus {\n outline-color: @color-background-dark5-90;\n }\n\n .cancel-button-label {\n color: @color-surface-dark4-90;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .password-reset-modal-container {\n .password-reset-modal-content {\n width: auto;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n@import (reference) '~stremio/common/screen-sizes.less';\n\n.intro-container {\n display: flex;\n flex-direction: row;\n justify-content: center;\n width: 100%;\n height: 100%;\n background:\n linear-gradient(@color-background-dark3-80, @color-background-dark3-80),\n url('/images/intro_background.jpg');\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n background-origin: border-box;\n overflow-y: auto;\n\n .form-container {\n flex: none;\n width: 28rem;\n margin: auto;\n padding: 2rem 0;\n\n .logo-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n margin-bottom: 3rem;\n\n .logo {\n flex: none;\n width: 4rem;\n height: 4rem;\n margin-right: 1rem;\n opacity: 0.9;\n }\n\n .name {\n flex: none;\n width: 8rem;\n height: 4rem;\n fill: @color-surface-dark4-90;\n }\n }\n\n .form-button {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 0.5rem 1rem;\n\n .icon {\n flex: none;\n width: 1rem;\n height: 2rem;\n margin-right: 1rem;\n fill: @color-surface-light5-90;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n font-size: 1.1rem;\n font-weight: 500;\n color: @color-surface-light5-90;\n text-align: center;\n }\n }\n\n .facebook-button {\n min-height: 4.5rem;\n margin: 1rem 0;\n background: var(--color-facebook);\n\n .label {\n font-size: 1.2rem;\n }\n }\n\n .login-form-button {\n display: block;\n margin: 1rem 0;\n text-align: center;\n color: @color-surface-dark2-90;\n\n &:hover {\n .login-label {\n text-decoration: underline;\n }\n }\n\n &:focus {\n outline: none;\n background-color: @color-surface-light5-20;\n }\n\n .login-label {\n font-weight: 500;\n color: @color-accent4-light1-90;\n }\n }\n\n .credentials-text-input {\n display: block;\n width: 100%;\n margin: 1rem 0;\n padding: 1rem;\n border-bottom: thin solid @color-surface-90;\n color: @color-surface-light5;\n\n &:hover {\n background-color: @color-surface-light5-20;\n }\n\n &:focus {\n border-bottom-color: @color-secondaryvariant2-light1-90;\n\n &::placeholder {\n color: @color-secondaryvariant2-light1-90;\n }\n }\n\n &::placeholder {\n color: @color-surface-dark2-90;\n }\n }\n\n .forgot-password-link-container {\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n margin: 1rem 0;\n text-align: right;\n\n .forgot-password-link {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n padding: 0.5rem 1rem;\n color: @color-surface-light3-90;\n\n &:hover {\n text-decoration: underline;\n color: @color-secondaryvariant2-light1-90;\n }\n\n &:focus {\n outline: none;\n background-color: @color-surface-light5-20;\n }\n }\n }\n\n .error-message {\n margin: 1rem 0;\n padding: 0 1rem;\n text-align: center;\n color: @color-accent5-90;\n }\n\n .submit-button {\n min-height: 4rem;\n margin: 1rem 0;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n .label {\n font-size: 1.2rem;\n }\n }\n\n .guest-login-button, .signup-form-button {\n margin-top: 1rem;\n padding: 1rem;\n\n &:hover {\n .label {\n text-decoration: underline;\n }\n }\n\n &:focus {\n outline: none;\n background-color: @color-surface-light5-20;\n }\n }\n }\n}\n\n.loading-modal-container {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: @color-background-dark5-40;\n\n .loader-container {\n flex: none;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n background-color: @color-surface-light5;\n\n @keyframes flash {\n 0% {\n opacity: 0.4;\n }\n\n 100% {\n opacity: 1.0;\n }\n }\n\n .icon {\n flex: none;\n width: 5rem;\n height: 5rem;\n margin-bottom: 1rem;\n fill: @color-background-dark5-90;\n animation: 1s linear infinite alternate flash;\n }\n\n .label {\n font-size: 2rem;\n color: @color-background-dark5-90;\n animation: 1s linear infinite alternate flash;\n }\n }\n}\n\n@media only screen and (max-width: @minimum) {\n .intro-container {\n .form-container {\n flex: 0 1 auto;\n width: 100%;\n padding: 2rem 1.5rem;\n }\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n.error-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n .error-image {\n flex: none;\n width: 12rem;\n height: 12rem;\n margin-bottom: 1rem;\n object-fit: contain;\n object-position: center;\n opacity: 0.9;\n }\n\n .error-message {\n flex: none;\n padding: 0 3rem;\n font-size: 2rem;\n max-height: 3.6em;\n text-align: center;\n color: @color-surface-light5-90;\n }\n\n .buttons-container {\n flex: none;\n align-self: stretch;\n margin: 0 2rem;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n\n .button-container {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n margin: 2rem 1rem 0;\n padding: 0 1rem;\n min-width: 8rem;\n height: 3rem;\n background-color: @color-accent3;\n\n &:hover {\n background-color: @color-accent3-light1;\n }\n\n &:global(.disabled) {\n background-color: @color-surface-dark5;\n }\n\n .label {\n flex-grow: 0;\n flex-shrink: 1;\n flex-basis: auto;\n max-height: 2.4em;\n font-size: 1.1rem;\n font-weight: 500;\n text-align: center;\n color: @color-surface-light5-90;\n }\n }\n }\n}","@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-weight: 300;\n src: url('/fonts/Roboto-LightItalic.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-weight: 400;\n src: url('/fonts/Roboto-RegularItalic.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-weight: 500;\n src: url('/fonts/Roboto-MediumItalic.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-weight: 700;\n src: url('/fonts/Roboto-BoldItalic.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-weight: 300;\n src: url('/fonts/Roboto-Light.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-weight: 400;\n src: url('/fonts/Roboto-Regular.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-weight: 500;\n src: url('/fonts/Roboto-Medium.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-weight: 700;\n src: url('/fonts/Roboto-Bold.ttf') format('truetype');\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n@import (inline, once, css) '~stremio/common/roboto.css';\n@import (reference) '~stremio/common/screen-sizes.less';\n@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less';\n\n:global {\n @import (once, less) '~stremio/common/animations.less';\n @import (once, less) '~stremio-router/styles.css';\n}\n\n:root {\n --landscape-shape-ratio: 0.5625;\n --poster-shape-ratio: 1.464;\n --scroll-bar-size: 6px;\n --horizontal-nav-bar-size: 4rem;\n --vertical-nav-bar-size: 5.2rem;\n --focus-outline-size: 2px;\n --color-facebook: #4267b2;\n --color-twitter: #1DA1F2;\n --color-placeholder: #60606080;\n --color-placeholder-text: @color-surface-50;\n --color-placeholder-background: @color-surface-dark5-20;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n font-size: 1rem;\n line-height: 1.2em;\n font-family: inherit;\n border: none;\n outline: none;\n list-style: none;\n user-select: none;\n text-decoration: none;\n appearance: none;\n background: none;\n box-shadow: none;\n overflow: hidden;\n word-break: break-word;\n scrollbar-width: thin;\n scrollbar-color: @color-secondaryvariant2-light1 @color-background-dark2;\n}\n\n::-webkit-scrollbar {\n width: var(--scroll-bar-size);\n height: var(--scroll-bar-size);\n}\n\n::-webkit-scrollbar-thumb {\n background-color: @color-secondaryvariant2-light1;\n\n &:hover {\n background-color: @color-secondaryvariant2-light2;\n }\n}\n\n::-webkit-scrollbar-track {\n background-color: @color-background-dark2;\n}\n\nsvg {\n overflow: visible;\n}\n\nhtml {\n width: 100%;\n height: 100%;\n min-width: 640px;\n min-height: 480px;\n font-family: 'Roboto', 'sans-serif';\n overflow: auto;\n\n body {\n width: 100%;\n height: 100%;\n\n :global(#app) {\n position: relative;\n z-index: 0;\n width: 100%;\n height: 100%;\n\n .toasts-container {\n position: absolute;\n top: calc(1.2 * var(--horizontal-nav-bar-size));\n right: 0;\n bottom: calc(1.2 * var(--horizontal-nav-bar-size));\n left: auto;\n z-index: 1;\n padding: 0 calc(0.5 * var(--horizontal-nav-bar-size));\n overflow-y: auto;\n scrollbar-width: none;\n pointer-events: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n .router {\n width: 100%;\n height: 100%;\n }\n\n .loader-container, .error-container {\n width: 100%;\n height: 100%;\n background-color: @color-background-dark2;\n }\n }\n }\n}\n\n@media only screen and (min-width: @xxlarge) {\n html {\n font-size: 18px;\n }\n}\n\n@media only screen and (max-width: @xxlarge) {\n html {\n font-size: 16px;\n }\n}\n\n@media only screen and (max-width: @large) {\n html {\n font-size: 15px;\n }\n}\n\n@media only screen and (max-width: @medium) {\n html {\n font-size: 14px;\n }\n}\n\n@media only screen and (max-width: @xsmall) {\n html {\n min-width: inherit;\n min-height: inherit;\n }\n}","// Copyright (C) 2017-2023 Smart code 203358507\n\n:global(.animation-fade-in) {\n :local {\n animation-name: fade-in;\n }\n\n animation-timing-function: ease-in-out;\n animation-duration: 100ms;\n}\n\n@keyframes fade-in {\n 0% {\n opacity: 0.6;\n transform: translateY(0.2vh);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}","/* Copyright (C) 2017-2023 Smart code 203358507 */\n\n.routes-container {\n position: relative;\n z-index: 0;\n}\n\n.routes-container .route-container {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 0;\n}\n\n.routes-container .route-container:not(:last-child) {\n display: none;\n}\n\n.routes-container .route-container .route-content {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 0;\n overflow: hidden;\n}\n\n.routes-container .route-container .modals-container {\n width: 0;\n height: 0;\n}\n\n.routes-container .route-container .modals-container .modal-container {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n overflow: hidden;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/development/index.html b/development/index.html index 6ae36a4b5..cf9970363 100644 --- a/development/index.html +++ b/development/index.html @@ -1 +1 @@ -<!doctype html><html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-title" content="Stremio"><link rel="icon" type="image/png" sizes="96x96" href="f4f59074954b11898de7b384b6320863c5aa1fba/favicons/icon-96.png"><link rel="manifest" href="f4f59074954b11898de7b384b6320863c5aa1fba/manifest.json"/><meta name="theme-color" content="rgb(42, 40, 67)"><link rel="apple-touch-icon" href="f4f59074954b11898de7b384b6320863c5aa1fba/images/icon_x192.png"><title>Stremio - Freedom to Stream
    \ No newline at end of file +Stremio - Freedom to Stream
    \ No newline at end of file diff --git a/development/service-worker.js b/development/service-worker.js index 18bd85fde..e8b87419f 100644 --- a/development/service-worker.js +++ b/development/service-worker.js @@ -1,2 +1,2 @@ -if(!self.define){let b,a={};const f=(f,e)=>(f=new URL(f+".js",e).href,a[f]||new Promise((a=>{if("document"in self){const b=document.createElement("script");b.src=f,b.onload=a,document.head.appendChild(b)}else b=f,importScripts(f),a()})).then((()=>{let b=a[f];if(!b)throw new Error(`Module ${f} didn’t register its module`);return b})));self.define=(e,i)=>{const c=b||("document"in self?document.currentScript.src:"")||location.href;if(a[c])return;let o={};const d=b=>f(b,c),r={module:{uri:c},exports:o,require:d};a[c]=Promise.all(e.map((b=>r[b]||d(b)))).then((b=>(i(...b),o)))}}define(["./workbox-ad8011fb"],(function(b){"use strict";self.skipWaiting(),b.clientsClaim(),b.precacheAndRoute([{url:"f4f59074954b11898de7b384b6320863c5aa1fba/binaries/stremio_core_web_bg.wasm",revision:"7773d0138027530fa3f15a563cd25d8c"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/favicons/favicon.ico",revision:"73f6cce044fafd48bf447d80487f5a63"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/favicons/icon-96.png",revision:"de1c79ffc899cb64fbaf6a6d17d364a5"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Bold.ttf",revision:"e07df86cef2e721115583d61d1fb68a6"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-BoldItalic.ttf",revision:"5b44818d2b9eda3e23cd5edd7b49b7d5"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Light.ttf",revision:"88823c2015ffd5fa89d567e17297a137"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-LightItalic.ttf",revision:"a3ce4440f2abf76f4a1b14b83920138c"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Medium.ttf",revision:"58aef543c97bbaf6a9896e8484456d98"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-MediumItalic.ttf",revision:"cf23e1bb619029496260760b72aebd30"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Regular.ttf",revision:"11eabca2251325cfc5589c9c6fb57b46"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-RegularItalic.ttf",revision:"a720f17aa773e493a7ebf8b08459e66c"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/images/anonymous.png",revision:"3c24e42de8822c3e2dc0c20a04cb18c2"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/images/default_avatar.png",revision:"e574e5a876fb07bb28b07dd60bd63429"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/images/empty.png",revision:"ff850d70fd43d29b6d8c7055f33d8dbb"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/images/icon_x192.png",revision:"f91415b051185986aedf4187c90ea6f7"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/images/icon_x512.png",revision:"5a446747b1843c1aac2c386b1005ab78"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/images/intro_background.jpg",revision:"96ccc21bab56c04153a6400842b8a9dd"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/images/maskable_icon_x192.png",revision:"73f3a1cb7aeabde43ba2ed935fde06b1"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/images/maskable_icon_x512.png",revision:"88f79bb79e6039edee6367ffa081aa06"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/images/stremio_symbol.png",revision:"9d75b8169c82b11f5399be4129e7757f"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/manifest.json",revision:"1577e844d5f40d9886332544c3e3a684"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/scripts/main.js",revision:"28d3601aff0bd7af8613d30644b4853a"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/scripts/worker.js",revision:"66b2accce2b975bff43ec87f9306a183"},{url:"f4f59074954b11898de7b384b6320863c5aa1fba/styles/main.css",revision:"b3b33859fe88196b1c13d7a252272e2a"},{url:"index.html",revision:"98dca18167e20d4a2772e19100b391cf"}],{})})); +if(!self.define){let e,a={};const c=(c,f)=>(c=new URL(c+".js",f).href,a[c]||new Promise((a=>{if("document"in self){const e=document.createElement("script");e.src=c,e.onload=a,document.head.appendChild(e)}else e=c,importScripts(c),a()})).then((()=>{let e=a[c];if(!e)throw new Error(`Module ${c} didn’t register its module`);return e})));self.define=(f,d)=>{const i=e||("document"in self?document.currentScript.src:"")||location.href;if(a[i])return;let o={};const b=e=>c(e,i),r={module:{uri:i},exports:o,require:b};a[i]=Promise.all(f.map((e=>r[e]||b(e)))).then((e=>(d(...e),o)))}}define(["./workbox-ad8011fb"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/binaries/stremio_core_web_bg.wasm",revision:"9138451813c1bda1a43ec66d6c03e6c0"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/favicons/favicon.ico",revision:"73f6cce044fafd48bf447d80487f5a63"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/favicons/icon-96.png",revision:"de1c79ffc899cb64fbaf6a6d17d364a5"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Bold.ttf",revision:"e07df86cef2e721115583d61d1fb68a6"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-BoldItalic.ttf",revision:"5b44818d2b9eda3e23cd5edd7b49b7d5"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Light.ttf",revision:"88823c2015ffd5fa89d567e17297a137"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-LightItalic.ttf",revision:"a3ce4440f2abf76f4a1b14b83920138c"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Medium.ttf",revision:"58aef543c97bbaf6a9896e8484456d98"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-MediumItalic.ttf",revision:"cf23e1bb619029496260760b72aebd30"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Regular.ttf",revision:"11eabca2251325cfc5589c9c6fb57b46"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-RegularItalic.ttf",revision:"a720f17aa773e493a7ebf8b08459e66c"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/anonymous.png",revision:"3c24e42de8822c3e2dc0c20a04cb18c2"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/default_avatar.png",revision:"e574e5a876fb07bb28b07dd60bd63429"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/empty.png",revision:"ff850d70fd43d29b6d8c7055f33d8dbb"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/icon_x192.png",revision:"f91415b051185986aedf4187c90ea6f7"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/icon_x512.png",revision:"5a446747b1843c1aac2c386b1005ab78"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/intro_background.jpg",revision:"96ccc21bab56c04153a6400842b8a9dd"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/maskable_icon_x192.png",revision:"73f3a1cb7aeabde43ba2ed935fde06b1"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/maskable_icon_x512.png",revision:"88f79bb79e6039edee6367ffa081aa06"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/stremio_symbol.png",revision:"9d75b8169c82b11f5399be4129e7757f"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/manifest.json",revision:"1577e844d5f40d9886332544c3e3a684"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/main.js",revision:"2cc6abcc58f9028985e31432445d29fa"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/worker.js",revision:"1e24395d5e61a05c7f4ce199657905c2"},{url:"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/styles/main.css",revision:"0722f626cd55a4cd467700574977ac2d"},{url:"index.html",revision:"4fb9445201c505e0f1b5636fff044529"}],{})})); //# sourceMappingURL=service-worker.js.map diff --git a/development/service-worker.js.map b/development/service-worker.js.map index f21319e47..f733202b3 100644 --- a/development/service-worker.js.map +++ b/development/service-worker.js.map @@ -1 +1 @@ -{"version":3,"file":"service-worker.js","sources":["../../../../../tmp/09acc21370da0f69c98fcbd4ea39d929/service-worker.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/stremio-web/stremio-web/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/stremio-web/stremio-web/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/binaries/stremio_core_web_bg.wasm\",\n \"revision\": \"7773d0138027530fa3f15a563cd25d8c\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/favicons/favicon.ico\",\n \"revision\": \"73f6cce044fafd48bf447d80487f5a63\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/favicons/icon-96.png\",\n \"revision\": \"de1c79ffc899cb64fbaf6a6d17d364a5\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Bold.ttf\",\n \"revision\": \"e07df86cef2e721115583d61d1fb68a6\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-BoldItalic.ttf\",\n \"revision\": \"5b44818d2b9eda3e23cd5edd7b49b7d5\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Light.ttf\",\n \"revision\": \"88823c2015ffd5fa89d567e17297a137\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-LightItalic.ttf\",\n \"revision\": \"a3ce4440f2abf76f4a1b14b83920138c\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Medium.ttf\",\n \"revision\": \"58aef543c97bbaf6a9896e8484456d98\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-MediumItalic.ttf\",\n \"revision\": \"cf23e1bb619029496260760b72aebd30\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-Regular.ttf\",\n \"revision\": \"11eabca2251325cfc5589c9c6fb57b46\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/fonts/Roboto-RegularItalic.ttf\",\n \"revision\": \"a720f17aa773e493a7ebf8b08459e66c\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/images/anonymous.png\",\n \"revision\": \"3c24e42de8822c3e2dc0c20a04cb18c2\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/images/default_avatar.png\",\n \"revision\": \"e574e5a876fb07bb28b07dd60bd63429\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/images/empty.png\",\n \"revision\": \"ff850d70fd43d29b6d8c7055f33d8dbb\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/images/icon_x192.png\",\n \"revision\": \"f91415b051185986aedf4187c90ea6f7\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/images/icon_x512.png\",\n \"revision\": \"5a446747b1843c1aac2c386b1005ab78\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/images/intro_background.jpg\",\n \"revision\": \"96ccc21bab56c04153a6400842b8a9dd\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/images/maskable_icon_x192.png\",\n \"revision\": \"73f3a1cb7aeabde43ba2ed935fde06b1\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/images/maskable_icon_x512.png\",\n \"revision\": \"88f79bb79e6039edee6367ffa081aa06\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/images/stremio_symbol.png\",\n \"revision\": \"9d75b8169c82b11f5399be4129e7757f\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/manifest.json\",\n \"revision\": \"1577e844d5f40d9886332544c3e3a684\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/scripts/main.js\",\n \"revision\": \"28d3601aff0bd7af8613d30644b4853a\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/scripts/worker.js\",\n \"revision\": \"66b2accce2b975bff43ec87f9306a183\"\n },\n {\n \"url\": \"f4f59074954b11898de7b384b6320863c5aa1fba/styles/main.css\",\n \"revision\": \"b3b33859fe88196b1c13d7a252272e2a\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"98dca18167e20d4a2772e19100b391cf\"\n }\n], {});\n\n\n\n\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision"],"mappings":"0nBAoBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,6EACKC,SAAA,oCAEd,CACED,IAAO,gEACKC,SAAA,oCAEd,CACED,IAAO,gEACKC,SAAA,oCAEd,CACED,IAAO,iEACKC,SAAA,oCAEd,CACED,IAAO,uEACKC,SAAA,oCAEd,CACED,IAAO,kEACKC,SAAA,oCAEd,CACED,IAAO,wEACKC,SAAA,oCAEd,CACED,IAAO,mEACKC,SAAA,oCAEd,CACED,IAAO,yEACKC,SAAA,oCAEd,CACED,IAAO,oEACKC,SAAA,oCAEd,CACED,IAAO,0EACKC,SAAA,oCAEd,CACED,IAAO,gEACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,4DACKC,SAAA,oCAEd,CACED,IAAO,gEACKC,SAAA,oCAEd,CACED,IAAO,gEACKC,SAAA,oCAEd,CACED,IAAO,uEACKC,SAAA,oCAEd,CACED,IAAO,yEACKC,SAAA,oCAEd,CACED,IAAO,yEACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,yDACKC,SAAA,oCAEd,CACED,IAAO,2DACKC,SAAA,oCAEd,CACED,IAAO,6DACKC,SAAA,oCAEd,CACED,IAAO,2DACKC,SAAA,oCAEd,CACED,IAAO,aACKC,SAAA,qCAEb"} \ No newline at end of file +{"version":3,"file":"service-worker.js","sources":["../../../../../tmp/57914eac7602a6fbdbc2a0fdd8cae0db/service-worker.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/stremio-web/stremio-web/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/stremio-web/stremio-web/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/binaries/stremio_core_web_bg.wasm\",\n \"revision\": \"9138451813c1bda1a43ec66d6c03e6c0\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/favicons/favicon.ico\",\n \"revision\": \"73f6cce044fafd48bf447d80487f5a63\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/favicons/icon-96.png\",\n \"revision\": \"de1c79ffc899cb64fbaf6a6d17d364a5\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Bold.ttf\",\n \"revision\": \"e07df86cef2e721115583d61d1fb68a6\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-BoldItalic.ttf\",\n \"revision\": \"5b44818d2b9eda3e23cd5edd7b49b7d5\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Light.ttf\",\n \"revision\": \"88823c2015ffd5fa89d567e17297a137\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-LightItalic.ttf\",\n \"revision\": \"a3ce4440f2abf76f4a1b14b83920138c\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Medium.ttf\",\n \"revision\": \"58aef543c97bbaf6a9896e8484456d98\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-MediumItalic.ttf\",\n \"revision\": \"cf23e1bb619029496260760b72aebd30\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-Regular.ttf\",\n \"revision\": \"11eabca2251325cfc5589c9c6fb57b46\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/fonts/Roboto-RegularItalic.ttf\",\n \"revision\": \"a720f17aa773e493a7ebf8b08459e66c\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/anonymous.png\",\n \"revision\": \"3c24e42de8822c3e2dc0c20a04cb18c2\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/default_avatar.png\",\n \"revision\": \"e574e5a876fb07bb28b07dd60bd63429\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/empty.png\",\n \"revision\": \"ff850d70fd43d29b6d8c7055f33d8dbb\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/icon_x192.png\",\n \"revision\": \"f91415b051185986aedf4187c90ea6f7\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/icon_x512.png\",\n \"revision\": \"5a446747b1843c1aac2c386b1005ab78\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/intro_background.jpg\",\n \"revision\": \"96ccc21bab56c04153a6400842b8a9dd\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/maskable_icon_x192.png\",\n \"revision\": \"73f3a1cb7aeabde43ba2ed935fde06b1\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/maskable_icon_x512.png\",\n \"revision\": \"88f79bb79e6039edee6367ffa081aa06\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/images/stremio_symbol.png\",\n \"revision\": \"9d75b8169c82b11f5399be4129e7757f\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/manifest.json\",\n \"revision\": \"1577e844d5f40d9886332544c3e3a684\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/main.js\",\n \"revision\": \"2cc6abcc58f9028985e31432445d29fa\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/scripts/worker.js\",\n \"revision\": \"1e24395d5e61a05c7f4ce199657905c2\"\n },\n {\n \"url\": \"cbf28a4e1d85872d68ff921c80ae92c7a7957ee6/styles/main.css\",\n \"revision\": \"0722f626cd55a4cd467700574977ac2d\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"4fb9445201c505e0f1b5636fff044529\"\n }\n], {});\n\n\n\n\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision"],"mappings":"0nBAoBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,6EACKC,SAAA,oCAEd,CACED,IAAO,gEACKC,SAAA,oCAEd,CACED,IAAO,gEACKC,SAAA,oCAEd,CACED,IAAO,iEACKC,SAAA,oCAEd,CACED,IAAO,uEACKC,SAAA,oCAEd,CACED,IAAO,kEACKC,SAAA,oCAEd,CACED,IAAO,wEACKC,SAAA,oCAEd,CACED,IAAO,mEACKC,SAAA,oCAEd,CACED,IAAO,yEACKC,SAAA,oCAEd,CACED,IAAO,oEACKC,SAAA,oCAEd,CACED,IAAO,0EACKC,SAAA,oCAEd,CACED,IAAO,gEACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,4DACKC,SAAA,oCAEd,CACED,IAAO,gEACKC,SAAA,oCAEd,CACED,IAAO,gEACKC,SAAA,oCAEd,CACED,IAAO,uEACKC,SAAA,oCAEd,CACED,IAAO,yEACKC,SAAA,oCAEd,CACED,IAAO,yEACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,yDACKC,SAAA,oCAEd,CACED,IAAO,2DACKC,SAAA,oCAEd,CACED,IAAO,6DACKC,SAAA,oCAEd,CACED,IAAO,2DACKC,SAAA,oCAEd,CACED,IAAO,aACKC,SAAA,qCAEb"} \ No newline at end of file

    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

  • #rsEWyh8N6qcr&t{&<}pC$Km!G?TRAtKfLp=G zZ{p%JhOMx7X!c+oTh)3J^6r411lmKDLd3SF!urDfbx?~APTU;V{Si*@UA*Bm@Fq8b=uVL!ya8b)ZSTYQkagZk7;lY^sYZduZA5b1q}=GLhUeyI zxAn6eNrI_a+=Fw}xP#ClXAU7|X&uZdK)*?_7>^uF_oj68F|BS~Q|a ze-ax8%=Nl=<9&6#mG@Nn7HV6d@(ogF8l#1%ygzD@FhAyLG?jTc*vEEdd3~`6bc;Tb zNV%#j3@RUIA=Mz7kq5(u^KF(OVw|*8Q@cwk1fSYnN?@rm`i#Lu;8TP*hb-NsCxMA? zUTTigybnN=6=u|2YK&4?g6x2bkF7HUeKCm6?sQ9p&WxzVv%AyH@orNnOb5MYaW`@k zVTT*GfWlRFvr=r-8a61EH8xcvdT0r!a!s%r%3jG<@Bhz*{<0gM`v|d(wXRqNTj%^O zyHSD`*mT;EXK!%!=G|yVi)0V;?4h%XDT?a=`+F0SMmO#TUk7Q zFK6Zmd6GNd`8i*erE+91IwxP1LkYQ6Did0&mcP;6Vk+>6;89S$dDN@!4&DUQSf&qh z_7GoU3<_EJ)_kF4!PT9rx|tO7l~@(VPq8XFT4%Go4rC z3#szMoH=0}6;r`e`#X5RCd9e62Oon0iL1dq;c-%v_?urR&v?~EJU?M8hUM^ub)1=P zrh-Jpfh0BuAcr+J>N75zGj@$@%E*MiOh@2rR3!cbi@_s;CpM^nYw`J#k0X}(jL!*E6 z=49@%w$%0IxD*0@+(`bF{}z%nZ>#?y3`@R3jBYoYNgF|zi5+9G^Uqqxro|c zZrG&cE@iS5kD9;7Ftr?LGXhGS%ny2yJmrb7-y&TZUcu!mFMMcL!&7m{}FK2l$P=E}di0|@G zmcqzq6;89EQcF`@9Nw7K7OYrIPppFiW7|1Np}rvousdMCeYUjL_S=WrSb~dC0GwEe zPyk2=QYDZs{!kv_JpV3YcG55UoE-yHa?JOsZHRDH_yw&;K7!_I>a9qY@n)|>8L*z@ zYNmTz^?uM=19R)R%-9AV8{y)$^(CK9Z4-EVx*IombmImO_Qkup!2^4LIOIoY05s?x zyuu+1d@x*Z^{zHk^~W76ngWc|;Wx_8&<`vxx3x6{0ImT>M9OY9X5r!?|9a6|<~aEH zF(*=ch-&WdHTmMPbGZ+_H1-^|b)3UQ;+)>_uQ=|svvE>pq`=N5sGzK0XwJ3KDI4gN z*sbI#A?xj6E<5@DFX#qMgeM)O!Uo|3Q1V8NF!r(tMaTgqa4qJ(BB4N3zye*=fXr;; z0%BiwLY3xG1Q27yM-JQVS+^po>qSI@o_BwlZLOGk6ra+cj_n%JHlCT(@e4dy@Qg&a zH#rQGNiY({mtTwrH}(jA*PZ+87I%kbs7T21n#p z*Hndy1Xfo^G+DuA>M>vHKb_7#4O4HucPV}U{?P&+;~Ir{LFQQ4oLTK z{K(HK16rqXMI{iQH9yTsT7K>DUy(Kb=dg1AFBrLr;W`MtCqjSa1KyK_4q)YI6+Tpx zgnlJIfuo)65+t-BBec(pF^D?yo4RpALBz%HjQ^*WlF>p^(((!_pT7<&kCR9LAXHv7 z1q@#~K+Yr#S5i4PxmTd_;Z>+yYfMh%KjAPVZx14W2(k+r|G)4G!E7XNPE19_M5h2| zfplRB3lR(WHt-Q$_k*8DU~rrf2`U2)!6Brub{Ek(#0tPUCJAF@kRMjZApL>no4USz z(AMuo1P{|bcJ?qrbc-g6>^l7i>l)ie1=;r4O>N@!0!N{{uCpE_1n#rO#~PTwo#R_^ zBfb;2;33t?2VZjbCG?Cj;A%+nql5=RoEZxqQOhifhbyzC&Z$C)S;0wU`nx{%p-upe z-RZ2QKv}f=K4TZy&I7YS$^#<+_i0Fr*ZEfD zY@KgqS=RYhgl|SCRbA`Ff=m?oFq=LIgY<7sgh*EEf)UfaiD+Syc7p|J|-h<4_vIKj^_OkJMW0!V4jdPlbb%Ah&oDBAr{?DK@B5;cEydFuIOC|shKWE#y ziaSzVP@z_qx|$3WG#tpGk3u5WE?|kIYpheTB!i?<5rm~D^|WvWni|It=rr5oS!1UT zgk{fsq=umial{vap^Jgj$on`FOAP1H9{1&LAkSi7?t$cBQT3{;GiSGJVtBt0!|5Fs zzK~TqQXHl5T`9YP9lS zY9DbrqkX6QWQNO{Tv@2cqa1MO&`kM7A&dH%J(f=WpYNn|Z%5p0aOWA@FR7ee8q#Q_ z#BSajMi0OtVD-}eqi`&gk4O1K`OX^^7CQwho$SAIUD=ehI8IQM`>0x5WEk9_YfCs3 zxlc<`t@^a{v_UO>dC4`1t2BHAs3ax6oAP(+;eCvW19OjJSOkE}9l$%hg2M#$x7FiA zJZ1L6ra?>tjO7WNX}IX*PS}@z3hmv;9`lT|MFwl&M?d?~&o=I-CWO?77^C6XY(G}s zUqV|y)9mo`Q!4q!EP2$ybTs)z({QwdWfu~uvk8<57Iy?Zd`AfCAmKTn+vHYE$V&UW zBaaIp3O`hiqmS$bHXV?_Q;`?eaX}7v(&nMg-ZA^2BFuK$)&)}7CRH8PVgNdHw)s9=x}w{V#%%at@5CM!^MI#| zJ>rJT2$gb`%~53hUmi>_U65_N?h?cA8&(9;U5hMRA1@dL&6NI_>N@NlcI` z%T6$VxtW^gBj+eNV#t0|mFF3|p!tl!eox~f?*ht6y`!HW(-Y_{cYscwKG?x<%Ia`y zax@v;!uP+;X+_*>1W1gW=Trr2(ODJOQIWfnGfJ|iKbrt9)0zx#NpH&3%w65sy}`pk z$vk-w?CcGHY&~?+$0K%p!=rIwU}L-)TF8;y-Dmztf!gw z?#EWKk@khZ_e1aUM8s`@HiY5a2~7>0Y!Wt2zuAmqv-Z9oEhd;aA3+L)L=h>7YFurn zRxN&~F!PnwqFm(F(tNt^n$;p)FsT*1`0dohZ+`P{(|GfrEo+%(kN;BfCjKizJDwn1%xSr9(@8_d=nNjur5nVv+u8Hr z(>mP*Si)tPF5=eAPY_bNIbE#%G?(5emU|;jA3t6Upq;(wI&Q2LWLlr-Q1T`lxp~{K zx7cLi?Ijk`LAqJWC3Xw?n7v%|o%;#rvd7EH7a7;#;;md)7~k6e;1`LOl$msK4`ZK6 zZ{*0Ap2N3*0h{$ROA0=E<}K;mTXfGs%9ViKbmQK!Ol-`~LVCkH$1G`@+nd;L6tVU= zP^T%^V(-;-jQd^MgU!LIe|R1YS%^2X)|0{NW!VlR7@B8}?ptzn*P#__=I$4F$*s{Z zEp+M^T|xn8K5azu2UFDt;zlq@4TPQS;seIe&Bp-qEyf`H_T0AeSuFuE7c;K!U7>`r ze7L*0tSH2b+Gw?r%J3TFn?b4;+cVh5I@#V<6`9|z0G}5gy7ZOCs zf``@^z3stemLb!|W@d2!22&AHf5geg+h|$rfC3~rw~weJLw*xNqcf&zjg=TckFq#H z=KDrXzDF#R(h071GLDStmmUm&ex(+bKtzp+MGu!*ovxsEn!jHL?pY$y;em|;mClNu zw(v0&6D#7hS6qr@O&E`uILKj%JVlc7+-Xo5dp_w_F|f&DdL;9-O1+2|ZbbxGw83^3 zA}O-+0?pqKHq(df<%%Y*1*W6|6TXWE6I*Zvm~;|^fdD4K4lr3>2rvO5i3tHM*w;vo zR52LR19GDMp=w;B;yZFj?$Z%mhsIJUbWA?2s=3S z(Sp~A9UL#;nlRE!Vkh62ecfwS- zrjepJd71@POo1edKn1!O zQM7pE^Z;h`wTw6n@+|q_UywfsCYeY)eE{H;#Vzg6So%jJ5&o&#PL6x>dMm0#?%NxO z(C{ua0;>K2*uau@wwNKhjB8Ok&Hc@qT(=yul;SMWvf~0WgUIT1U_tY@kaB~rRyW$h zMZRyEXNDi17+%pA`N69%YYs1O1a|>dwuiO4rFKY@0WU{#)DLeK!X(j<0ccRxnTuFL zKJu8aHJFPP@TRGTr>&*|R}>wMKvVmzx`1X0o;h6HWTd{5ude23l%{?53g`%Eer6{D>@EGb=FxUL;*dabd9b zO0B?HC@llk;{d@>6k8127;zk0g#_G|i$gEt9HhLiv}6{AAxGdkQ5dta9l{*f<8jSD ztsUSg&1jjY;$iW3nGNcXPp{Ek2@={%i!L2O9i@|~qkN-iCzzD6AZ9Op_4DGLY;5UJ zr8H!w7Ap>dVs_wfFsY5Rqkqd*^7C8aE?1kPK^|P;m8S^3$#~++LAg{jJJZ&++>Ud> ze5t$WP2?G$tTZ_fK()@G1fK@J0@@|g3ST2-C&E9RPDWewek#Aa{bYjL!}~M3-I?c! z1nT7ZobGU^w(|)NkGx-yOBFS~n2b==(8gLQ(mY>I(9U>XAvPT#yb3ni{@2RRdMZ$6 z%W>iHW6e57gq_tATsfB01TQRwhdjYhw<;9RWXD9ZS0}TRn$2;~mlHX_6@)f<6c+x~dgj-lJ4$;!D)O zyQAuCYDc2x@bCuuX7n0lIye{IiVDllF}Yf?Cp(}i)D&0X5fIcLO{lSYW4dAZy;}KZ zAMy&0!%4D>RU8Eh$un!?0I&VzL~AW{$0&m<5!Vr_){wL16MtNs2?n5XS2HBXnQZlS zM{-058N&+BEyC?_bNK5Dr6{zcyRx;Y)cUa;pz@dD7{kE#DQh75Nqs7J28Qf@f0f-*Zs&U)CrS~o`FW(`1lw!IU#+dEwebfEi$0Ls4E0YB6A*>+t|9AMV`2mHMp7{tR%X7?B3cuPL{+VqmvYZZ~8H8vz+ zoXBRs%fV`7=JFgKQ4zwCW=Cs9us4Dg5&^*CH*aGk%)ctU0hyS`Wp((_DXYV*vKyck4Yng*U}q<*>KqWrRe4{YEK8pnnoHLYe-u*~R;x`i#oJ3x zgDckmbTHRyG+UVbmoHor5^v?C0mzMp$XK+P%4$hMmqV%J)981X!ivpYN~ z5>@QL8i~$oL#rUs-WcsoBx)k{?K%aKc89-jehzU`gV8e_k?3(*;jO~nn__8}sd(>b z8|U^0PNANeY{k$co*>U;FI~J^PvB}Rct%~q$<5ttO-K?H*B!Uh zZPrY@eI7P!_$0T82drfYXT2#Q%SUa=OT%Bi(ceRQHko%(H_(P$*pi&*41$C?L2a>A zB)eL>z>qe5oQj1)rXTG>GIS#2R0{=BS7M>Kwb5Ami_iSdzy9K%{K3C_sqyV**mT?K zWDPj&oEeK>sCf4-O_TyYHHM!sKJ6M?7QK%f9AIZsGL6r{F||G|?Ppd`M+`lUY3~@s zzfT&cRylQ@ZYxL?eVtg;`bA%}FKJOzcup@Y)uL8SVpsh{R+Xud@VuXU-xrE?f~z2T z+0kgY=Ww93tH?9vJzVAxV+eWrK4`MfC{pcUi_-zn7>5>#rS~(A3m%710nED_nOKet zRK^+*A@gUz&GlU!|)G*pp_gplR_auqKJ}&N8_e5$z}cY zMtd%VIk%O)j2&GI5?d3Byr~00*VpP|dc$O^^gD00U<&nCZ*Z%NrZ%DmacBl_ViCWD zSN2<+MtDv3D;?TOBf}Xwy-84ls*MWl;y1k8V_`oRFd90o$rz9W%baH=G6ye>bqD>D zBFNVHIcugievtc2&UKx^CXm#bGioU$@z&lPcyvQ##t+0ypf*Wt0amh}rylQqHzYvo zq>Z|bBl~lziS6N-{)TwW6=k8}YO9D+_H#!#)CY)#u-%3V;9BoKAub??NQF>bwCSH)@`nB~FFXO9O$nPfAOf_EyCU6gAJqB%5}?s9Yrs3vge zeBkQQ$ulA!op)XG(b>Kj8xku=hedzo=(JC;a&-OL=wOiE>(b~p#OS6OT~{`?yvMSw zlwDT5A9Yz5LD=};gi(Wr_9vFSIJ=K!N~TQ5DgdVJVW(a0LLfX7E)t`pusvZ)8tfG` zWLcb(008Uu6^k-=%Ny9SFNFtble(=_uG)gU{K>+ECtred z|F*D|7wBP*rBkR{q?S(?g~2Dqf09m(;F0V#W0?E~oK}_PH<};C#3(Z=n${phcQs5a z@XUN!)`PZ@AMj=GdKjiYp0P=Rvq72+jt$pl&w^7r?k`Ni2lX?ZbSO#AjXo=FfFH*qF#KQOkAn)vmy6D71XYPL$$EK#LIO=4u57w(W3 zgJ~ryT2H`>+Q>U^4y=V%%!@FKz>9M9gbwmyQ%tlZtO(pBu1(Nuj++cxxQV&}_bJ9s zSyT&Sr50k(E%LPxhJnnc;KYp5*1YBCO(eSL5aL>a%zf zhb3i*2{_?X%S=>+F;^!Hs{>vtX84$$J@Jxx2qTEEP99C^ndXgHq=k6qdj#zySk+rt z_H zxm+!x9WQ6kT7*NMt#R!X$uSQe0IfbSy$qa@`|RgLeWxa0Y$}nKv4@V>bh)R9J{X}gG{>>=aRXqoPO6T6PART zeAPu?&^&;PlIOrvVJ2&T1DMreX!}=A;ROum0)`7|2OoiM0Y$#zP+AE`q&~nw#MtcH~;n?$HqTTo1a`F-!V`WMX)#((~vWW5V~@)T4y|18rsm6j`UiJDyz)UCTb06Eh&uTP=xl|&VAsI zQ3BZ$%uW&0(R+n({p`wT5Yt{_FPP?Qi`XCEn5@sw2TRr44q*w17~x-L2NmkEay;(g z%P8Y&Pxif|O>phF5S5}p4Lye*Gk2-jtB{Ck<8Ft|m9#dQ;&b$BwZlry(ZjD2L%RLW zaa;I7#Lzdf8^+{5t}WInU0bDgRBJEe;CeLHlR}%fn@;&Ei5=QHxY8yX-+6l$+4od_ zyf|Wv=cqy=Ao8o^!uIfeo5CfvgBAdrfLrpPqF$23VT}8^Fpj0TA8Ro{Py(rVfI9S1 z4m<4N^*Hn`2n@+B$h-lq(QPeTsczV2v zsHZG%H_M(^)+fGJ@!JwR)3V1&o1i$LJc5;zv6bWPk-O} z-Ljxz*S=5d*IRT88{=4yH%?B0zUqo_L2{NuHOjLci%|PUXy9++1AfL;8d&mGxYxob z8DF?r3fY7XYGr*WGWw8iXd6VM1X_#&=$ZZW6!sLb<&y#dX$KZi4liu>NmN47ls`KE z=oW3aGbq`qwI+V!BhKi7HH5LnX^6?mo;d!Q@GU6Z8}@%3<)iM9{X~&LuW({~hM(<& zsipL#@(oC3r+zK33$BSJfsFS!gZ^gZWDwVX)th+=XiFWQ_$!rLyb1};2fBZ96QFN{m{F;|gJ39nLrt$v9 zYajpBHm-N~rtRoVyIQSf2b z`pQJu-eo=`xwrvVBl!+LE=?CxsCZ%STCDBiu4x>u)7GcKE}?2FyrbGGx9j2em{wDW6 z%pQ?&fQ7)E4=)VC5z|lL0!|z`An_0aN7hxckY+%RAX*TG{a)JwN6O*a5~*T3T#&7o z$)5?M`*Xc!tE2xEvTha?TG|K;h4{N(tfUimz%OmzurRCjiIpwuXvI)@T9upUG&l&) z6dpDAm32(Z9TrqnhV0#1Wh9gEGT5gb_&8BA%aWAW#Xx4H&8rcdhBYQ(M$Ch;XZRCa zAn2eCx&UD;LKx!zbBbS&;3OOq^{WnwdIr^nF}AOVRX0;D#y30(Zo6zz$URjtrc!(~g2a z@$cE9=}BtwZ*@wlQJDu{8Zx)f31BN?oNc?!q*OI0s{S z&D|}nUaVGP7g~&lm*(>MHa!5V-@tOZBY6ly;qi9NQN7`xq4@7e-ZAdtrmfO16T20u zRmtVf{bPd6HB-sd$?%UkB_zBuk_jo|JP=Zoj-2rmM*yKK;GfD5S$unk5pg=MXW;`3 zLPih&ipicLx2eeR!&^l2h{&n4!i!tqhoI8Swqq9LV_1yA{ai5>(V#bdX&A|o?|qdu zPhWA3w%8s1U3a|s$%mn+%}ZMjEPb`{-lccHXa9kNM@}y{{}sMpd1MtMd1*J@_GH$2C+$*d-*{*pYMvnpR)dt3Ju29Zyvb-T zv4{Nw)-!%#Wh+zx5dZ0P?rBA|7=BUy&2Df?hk3ihU+0ot6kym14_!0N(k%FJ63oj= z@V>wbtkG*A1jB3&_s_>BIA1r1A0)aosvfi(61|L97$`k0>NG&uvm6iw*M2KFa2@PFTy(W`>@Y1GS1>Y>=zf+gIkm57hm~4Y=oLU z1CAU{-iOV~8|`1?K5Se(M1;N%8)J!#L0l_m;B04VG3?xxoL86!G|~(C^La^bb{3)Y z`F+@%#{|>$XE#78xCKn_#j?_pEUNpkPcsKgvJr3}_6gE*wLY#V)|z9}tP(N|aL5wN zfIP&!sh-E4(j7nSCvCbPUX|1XLd`H<^k#8jnR%%31ZdsTec0-8b_{gDua+(nV8NCk z#&AN7>5>l3=@cQi!t*uCp4qxLJMav?(uCb=`xD=XtMC8#fjZGeTGRpiHCuE{rOQOB(dP9*yx_7c8}`b}IlF*$0I+9=Ht9z0nGq+t@JZzG z5g0lf6a;%kXq0t`={+_*TCB_2Yf)yE$56w@vLZCldg&6A0l?VbK`GWX)ZKajFhom< z!3cJ1%nCyWNBw&ZzD!W`myTEMg9NjI1haJ{knCSW0>E>1B#7pW$|}^&#+v+y7zV#} zETL7H!$<6;V774nRU&gHWgU&2>0u({CgGI#|P6 zjj$7fvBR83I7`9H8}?>L;-mq`2R-%Y7YW46(#s0@!k_)luXguvOBI?yJNtkFPFwh3 zjWxXKmSXj^S&nNx9UkUY{gWk#wLtxoUbaJQX5MunS1tYJXMX3$f9N;=@MC}3_~)3! zFl*gAz)(U(MXk~w>ec=qc@_47rFMV95($R{5fezdt2?zB)Mi z*n-##STy4&ZC%J(r?2zT5dz7_U!%A7OGaqTYX>gCj|nZmdcR^bIl8g~qU8m%4=CI5 z)Err~8WVon^&x%5o?X?9!h@(@Wi$p1P?+KJF~C<|f;h!1A=349B>#y6+ZKsq9DG{9 z&-LiV_e*=I-a|hz9SC%Mnq4qmLukuQ0RW;&ISz%O>j_vURK-FG%k08@&hc`*5&Y#g zk`Gy*BhSnYe{56A-HiwU_9+tDvD8fO9?7yKetB+d?Cl0=8QY;V@mXUqCb=~*xSTGj z!C=36@xe`dhe!J0)vBW?f3M4~`#J@k6EZMzB$O2x8Pn$#RWT@Y{FJ#4`R2;MeE|vb zFr1!f$OdWPlmKwWD;s>Zm_*O(O9~OiJYTk1UbUToxb!?eO_+_6x%SMoY;QnvxXQ{U z6GM$@f%?I;uCgq^Ys;}R+NlUfGv#nJVy(D)tuY@Gzxm7!sR6!3QmlG9<(@|D%Bw73 zsEt?Y=~`x5n*Mgu47vR1Ipd%6f zLjygUygs0-Yz^pU+ZDUc87olFxQ$?vMg$M960*`j*8CNX6ns1rD>7>=)+}-Um6d?W z)9D7gu)>2jJXtXze+uJ~GcHCaR;ir`jUaExj%J*3_qHZQ5~x-T;}zYAE=6ZXtU=jH z-{wo73QlMuz9=Tm<-gDCi7I-212da5)5NRhd8`1O?<065=lhUdkcIiO4ACa$`1lre zF-^cuGw5VDtW(C})tptkNv%DOe98DWh_PO4d~r$kRmP{W7}&M(!S7d(k7GF(G(OyY zt8rGNG>@;35}Nfz(!R!8Lz8S5>p(TsoToSVL0T3+6NJ-XQg_tlvl5P&5^Gx`Xl}Jm zLQFW)t$->dI*IIIG2|I7K&J8R3|~A>_;)of3{wrn9E;WP_PVvYU))+9G9AUr0$01X8mpSYpBI#-j*2c%&-~tMpe=s`oDfjo zWejX-VwrW%>^CfEMf(&{`(#AB5|_Az zPKQS&3}Amvu>EAs;YS9_WedjFn!5lOw!-XiGtfX7PJY~%4u~I(#W#q4M=tIN;jpH? z`{A!`(Ed@%nN)2fVL-&DwIjLH;fbcwZRouk!wrOK*BF52QJ(TXz$qVr@nbpzM1(BP z?m9jaPue@sWM2cv{8Rd2D!UV?pH^|50pcU>dH>nIpsc12pdy4;%jglZT`Id05wUZ? z>`2bg_u|BJAjKeLokNGciw;H)G#=Vl;Z@^V zZV}+U8qXdWF+HRUK1m9)z;jlhMUwJG8{$FK=aX)iD*6K4Pe=zVs$ zCEJOUy6YZv!fK))j>TIq-g1-?@qr0LDzhuVjzK!_{R~zyJ7%ZcCeKgd3`l2tMQ3ST97kv05sGw^$aa`x$^t;r z8|-7nlC`Cnt`WI==4G0~7&+5Ug_-UZ06tGx5wk8@7HTf5tOwHyoDNvi}`5-Vx?z*qyRUqv6Pf8$=!O4C4JugU>AL2pfdTC4|K zGdr^*Q&pZFk&DHP`u;NvVplRRDS>~8*&l}9*KjSgC~m?;FA#u`c5NRZN~zvlzD5RL zAf4~)u8qCd@p`<1b#&JWs344kNf;-u*2hF%bwCT$w)iqA3IMB~*Mzs%2CDbaTT-Sm>)lQ>Et8)2*(LLylaGlhnq`U-vWRVpu*0bt+Z!+I zmLdM8s{R>XHmkK1q8CeNRd{YGeSlauk%vTIQT(Pg90cDQF+=1kr(~n^2a)g}0lB0l zQDD5&oT0yHHql=+&rl<$o>p7XLJ;OPGWZBoh!ch-9GKG76VS2`?S?y<#?X@p(3-8& z=)mx5KH&3^2f`sUGyvD=;|3-QNl*@Al{^ zb~e_37nwj84Nh!8Bt1P*yl;az4o+d(XBx1=Ww(=WRSqM>02lFf`Qt;NQ&w}zKGvZ* zcn=bNJn#-B{1@=X!J=+;s*Zxp@Z!$7HMKyV}FajbJo=@wf zW3@U~9MJ7W9IzHNQS=lnSiwtpLoH*X;0ZqnpU2`>Om2cC4nLs@^X9xI8#j2i0e$gz zBbuii7AGo)eDyeI&fq-ReA*E;$ljboy!RuyJv1W=EA`lk%MgtPj)`nBCK$1uTp~2??Yf{~2v@ zJKNE~g6u#|R3&{p)cT=zz1C&S%Q|7aCg1GlpeWMVMc^<`^#qdWBoQMf0rj3B7QM~p zW!^j!B22*UNmQspocP@s}PIi+$oFe7{-^?9ID zk`3?3CG3-1R98^}gnveak7j!(g^28QpF-tzwFA{@zFoCirbR14UweuEQF6WcG%v8zQ+E*agZ0Sp0-F^E%?XkUCo>d9pp=z0MiK z+wJ?7lmWbzESnb-POVY=H{DDhn@;t)lq;$r3XnevicTK^z?ru8q|*s?VYN`qx3Un6 z41uZ`ttmqA)Pq?FZ^(-wb~4!29=|nrPr*<4a!on1pLA~3wU4nkP=*33#~)vM$09ZY zSD~Xho63nkNOV}ID&n4eZQ`w=K2$qWmXyg5%`aYJbgt%J+(9w8ZZ5jfls892u!|}R_3hv+)=a%UeRr}Q|d9~B3gV=e30NY_{ z63Pvh->0X%oAd)Pg#V{vHCcdkm>EM_Ai!Ax+%2@!ko&#UvZ}i#j6o92fTo+;dd?UK zZ;WFgPfi>|PVd|;oh!F&42sTKHU>;C8pE0}h9Zoi6UM+whA2r8U!GZAlO6)3-#r9y zRq1yF0lc{Q2Z;bFGYk`9odF?L&;As_6plE|c{UgEv?b*~Y6 z?nKuF1IGjQP6|O;Q4$PS4hQT-8I9OGtRJ0~5z|E2Z7{5Fhg5I}uS|i%s@kt!$tzPJ zaZtkE@qoS8gmRMsdxu%9GD7W|AnJz&1hlsis}~SOsni%Q%+=Gd^a%$PF+vsk0QNV7 zOgkN5ynqF!$WjiqgZunJ?X!>p5b=f@t1W6r#It#PN>?Ppym>f-@yT{+_5BKJa7Fv$ z3XwYbv80xHdMYaw>j|l@#E0{zgrOE6SA%TntiR#*5l1$%qLn>{;58TFM69|9x2|^3 zMKBDih$J1Y)OFjWG)fk#K~}v;)q?pRdA&Lan+105+oaM8p$P00X2G9?HywBZJCqd$ zC+;AwpgcEX)C!g6i8P;j(&P+=300a|st@7r&D^Lma&a+ma+rIHfESGuuFvFEv_AB( z)5wno1iuCZM?~yLIH%PQ+@)=G$#b3>Ovp2#g3bDqWD$^5EuKq>jYwQlIc&vx-^N98q$lw?iNUA%Uw~J za~r|LIQbbfEVb!;7I#gZk+naNF~W0n8sP~s0Q7L;kP8TZ8DV4wIwFGSjkQL&PJdLdGrnGICe(~(BKCw@RBjQ=XzL7U z!9JKCv_&3A$dDG*a(%3$mB5?Crk{O(&70%~={=1SR7ewGIng)Qn4OgqW4QftDRv{% zW^N=y7Zt4elgqNFn$;64*`(-KJ3H4ox;CU~6hqaG0=$aVDRkQX^SPzrj z5dN?=S1pYOtRJp*Ei#T9lZVPO01!U2Io`2y+DSwDdRWy>1=I`}Jv~jYcVPdaf5yzF zccVAw8VSs0k_*;A;XYZpHtFR)WU11?!EVfKh;i0*x1||xgf)xRC@Odw0NcJr=4~4=@q99G z+c1ZE!XfBw_;>>E7oXYIPy7>s&qTo-#q^-k#k=XzX7Yxc$zxepPoCg1JtnmYyoH2V z9hB2T1|r)g%aYejxaN<_k3S>@Rt(7j#0BKBmY+!jY!G_bRkE1>&!ijhIqoEWs#({*%| zp@94=(H#e^@SH^%xXjYX=swK_bSKz5>|2QFe4XVcKCKNbcs2xvD&yUT{blOams|*Z z$I{Hgt~+XRJ`%i?K({*Iu%c1QQ0nffX$^giW=Ld5KV&OqGDc;OW6Of}<*|yD79yrA zLB^QWkV;=yqx=StK6VK%rY?2Df{=NpD&^B3VMi;Kp^TXSag+ureT*8M^sL1)8V&zT zvl-_9F}>`TLm@_-&qjnihi|#7yHNokq~_-M)N0F*@^U5x0-(>>-G~sBnY$k8rc=^S zXs(ND+Mc2!4%N`jR*hsFu9rU6?e3r68W2yUUv`6)9(8ZnI8P@~g{1zCLE-H7g}K1c zWpG0=6BL*cV8UJZ8YYGR!=#Msc7HiOg%0IaHpRolbm=!J>#Xr=na--^t)XRUpZI&! z!$HG0_CW7D(`#v-q)Td^>={?pyjJ*>4Rf`%zimNF0(Y%;2&X`=eK&^4Kz-=G>zOUK zErNzfs=mVtkv9A)>DU}s2ods1nRS9RhJm4mn;7RY)Ap)i^LE*xPU?I7$GYoWbuD5f z$}N@j9e~xk#geIcMjw!LV%Q>1GzTJb;%Y?!bU&=-ua9+Dr?_5} zs0fWv3$0u)hEVszdd2m0rcs^6Bw4XoV)9q8L6D@G0 z?DB?rj&E3dK{yfLtrZ)iVYkfRI*Oz0vs=8Lbq&&rTx7o#+UUXJq+wi|X3zYD2i*v- zfiUcxxfk9c=m4fypgVX0sI7Lql6$JRs*y_I)$<&9@A|-duc=jybrB$g<;F(Aumi+E zm$WkQ!~qzg=m%;QFwhOa4puk&yK5Pk=~=^_4DD}>^#-)oLWB-ZEEyh&+3FE25ytZ2 z8|O5ER*=1>-eD!OJ4PJ{m~|SYEORt0r8D5e#xTf#FR3t4~qj8|$Qr0h7tw=7FtRszN9cm=&;A)bU9+%9c7Jlu! z$j_^db!ch(riIet1o}xDhcpX33j}QaTRViHDxNWw@?3VDZwP5Los7JJ)b9wVH?S8X zswFv8S>Q*wBthxz-;#rV`mj%ml08mPhK;ja(_((XrwRV2)kC2O>yc$*Ru*!umoQz^ zxjGc;q8|wZ*Hum{S++^=S}uOSqQoiv>F5GuemLlA`w<$Di= zP$-82(Zq2zaW0QdtQHCt+NX%x-y>6i+HGPjo{=AzI-nv&zr>IVvhJ%-DorB(39VL? zgs;Ch{oyhTD?*`SK+Dd2P%%*8t|FpT9ZKg>frk(%d8QQ-HK#EE&4XO`A}+{7ird4X zP%|omb!gt#7(*iyks|^Iz?KjsAo%hTPLJYG*43d<7jRbvcQB*JA?I1>g$@}oI#8eq zg)(5`zFxJA_bY}%NrB0##2{(npjw&`=&L)dszZnvaZs{1)p1bFkUickT4!We5|rJ| zUK|wr_hQN~_b(J;6slSyXyTwQ#5gDoMxHE&ykaot$fOhFpp0GMwnjlTQ>aGHGh7pK zmS^zzN@|htt#1IDSjqq~5S{Q2kPq?0&_x{#GsZy)^MoCJaZuXol!Z8`;X3XKYLJNqQ6zWUMP|Ir>4F`m<#@z9Nf!XT=K zA&>x&?w~`O*bu8TMPo?QfT9Kvad%cveFg`nGN1Dzgfy{M(1DQBMVJXHK?|bjTCZvp z&I^ChMxnltrXwMwi41tP@4F6Z8gfVzjV}*r@($%Xq)8?nLYi=K)gevjf)T>7c~0dC zaZK8-ycljL8R(GKJoE;@p`jo$>8#C*a(AJQx;qd@Jh08D9`N8yqzDXUcZdB7{Dd@- zuBHxY(nejGu))B=7}BJZwF8oA?!8mK4rvnc^oKMJ;RzG7ll?`^P7%Ed6p>9!Oi!LN z@tx|ucB$J5-WSpY?lvJ!2bz$k5Ii)~3s&05_=+7J%%)WSD1i8n#2Y)wbMfi zmBC0FLYkNcIG{qBY|t)bC3Q%XZQVTJsjoR@m^8Bv=?Q<+;~ib7x8@$*_N}QzxkB;y z3ogH8juC6?N2GRS6GIW9#3)yUG@Z-qkf!sFce$XGSl%X7f7JFVg)|{HJb59cNm_zT z!wP9q(zVq>ng9`r@Ep>lR!JNnT3-YSENG(W3E@c>^ft%JW8&*h@WKe%d(*YMEEUd0VF;bK{ z*Lx$9ogt)2<2Cu>ny~7~dk(U2XxEPHT#nVii0P0fCWy=m{UJ@qjD?IlhBPVorU_}1 z!n7=;Nd#dstYeSXOb?f%=tDa4S$4kgiM`y8Ke8`8>ot%r*;$g7tY-kDi;w>29L zflU`!S7-PmWi#s??PFz$SAzhm&S28Qcn>`=Q4-KN{MpCa4x8^eS^fhvGp&c&@kX`_ zfCgJ6=*64Buz#|7OMysPbwMeRm|ww_A}M8CIBq^L*+^wY5I(BRp*ymN2oPA?JD){6 zvPS8QO$_wcMv-d0cnK{M9e~dv@W%MJ$uxoh|MTRY)}9P)wCYNFcB)sdC5TnI1C_Ojh#k*lVINP+303U59|;*uUX8K8y$ z{*a)4x?{a=vCZ9(B#DvC8l=bEUtxY2(yFpuT}zL-V7X35*)`o(8U+w5q)}*ln=e}; zSz11fI3&G;HfQTeX|&=L_{0aOi45p;2(>ac$He7f;_}|a=_|fx6T2pkufoK6sV_08 zcX8g#OIOa@7WU;aZyN~+@Vs%fgHESn!jx;9YVn6^77L9>Kvw$f43xi$x?dCOzNxQn z?Y)k58z*Ajq|3;ve=S<583Y)@n%;~cd57jq)Ra~4=1iM#cuZEU-JKle7fK~F>CMT9 zQ>KzpDEEdy4Ji14#c2S7!E_lQC_f57DEm6PzSmKoN)kKDd>MVpwD<+u-bD{!N9(mP zr-Ea|gK0{$>g~)4hP|HR%}Upb_Y7aTAnWs;`SBEBO;$%8qK&*(Q!bGPZBD#8`Bw-IiV8VRw?BuTj^w4z@&zAK(2teabVC5-jy^zgN@zXftj%j|5{zI2oj$H@ghH9oAE|Qn-WlZT zaS1|geQbuQLgW__qe_auqB_o!OuOTI^M6k4&3k6ca{PnjqIyhGYoH}NXZv^|Z89Be z_lZxLF#_Sf3i*v-BzB_l8Fl8B4Pvfiy2d6HA1z_i4`Cu0V=~=YFeELG0gWFN6LzLD ze&$pJ)ug}+8zemn_vu)FpIig_b7cLi&-dC;SJB7yX{qM=j_Y7RE4jW-{jL61{GIDx zkhw=Q{8dPnS#02$Rv-L2){DHD9qFcHgViMC;%w9o5>~5;j#K_XZRGmfAF{sQ1>=`8 z@nTF5{1OO=_YF)BYX#oG(Cv0*ArC;s^f-AHq*&6ar}{dj1!}HDF8#fpSAkaOwFU9AV_SBewWkF{%SZ%>xAbKQq*9!56!Rjh1 ze=t=3=Dy0&Fzd=K|6=9LG{>;)%ylSig4lp^l|836{$LQs(4hH+cZ*lnyi=M?@#!gE zeAMER&uqT<*e`TLu-@T}IUXVtph2u_!T5#O9VfdCcGfjz>eh!n_D zt6%L(lc&mv;J=E&-xCIZXW!tJJTyYqdT|^)ERmLfh*O$-RFqXSbQzODU}h<^p8P?-z!X!hldPX@^pIAq;_i35b*e3cPEPipoW%_lV)FWZnNahOxkD= zVVu$e5HmrQ01YV33}X1`t`UBCZh-`Qi7_!4Tl}8rjqvj_Y*E9Kw47Xqx@cXcny1!* z;uo!F%tt-r2#SKnh^i$c%NhsaVW4Ho!<&h67lu;B+DJiM%Tj`)MZrDlnXns^bKgJxK|jRLe$W_-gawh*9nj% zB?!vPlHLj)m{+zZBj4DX<>ad5=lS&^G9>6cNp)<47#y>dR7ZX5U1@1?imZT1wcuCW zoD9E_nTBM-%_lpug$*vBREO6!^&IkTe1FEfqh0@L-|Bs)=FYpA4uNK9N&!PZ45;|! zkzS2YH8uLnOH00-S-to78A zT2C*l^#kBc^hsZ8Lm(LB90XS7O;bsA z{ME>eO`*3Z{YgN_6ZPjB#zNSppBamf`(awPgtYjwLZ46J{Db+)a*~B$mFgK63IIEP zQ$*+!H|;CFu29HBTlW<|r?}<0Z5(hd06%@LM#{}G-xS|u8$@-~_o0%fuWg3@sGC`jO<&jo8K2#7rpYL6GO-)%_#DKeK!UmjWpF2z(b`-8BBflE%+1 zY5e?(#xK^5FD_~P%#AP7_*oYZBR_Lv1mC$De8H5fJd{y1U2vx_i|3vD&Ab{#J*s3l)aR{?!S3aB|rzb@k$P z5m+9-j71@eTFxlLQ18svSn^<9^2t#0uMx7_0 zQA>}5eo~E=9>Tb6Pn8m#nkRd+AMdt4Shn`&|FUMUaOgGU4>QUU-L(P0#t&fTu4*+t zd3K`y2BdEq1nGUR9>!|e+qA&r7ik|u_< zkVe)Bry6ocM?yvD{Q`9UMzfBid8{UYBmAu-dGSSi(j@RO_EjyUP%F*yR-$^$8Up(v z4;41!L}NLj90BIQ`E;gY^vo=ZxEP-(LYad$+j&e2EjJM~D!z7+NDf5dv_vZ%Rd=dI za$M=Qp{+LEJE4xtE6lrNIh#nu=x{u9)MucUV|ifO48ryft~$@zmJorgC;ech41oQ? z)iGBpRUkAZkyfJ8F^ulVRfd&$UNSo$+r`g@tPDUm5*Zx(UJHil;G$HH=<8T-kO#$Gd$ML(H4 zob|2B(dgWOa9gbpgtq$itUi?PSAI_L&F^oN>`9BSd8sqMMr~2c5#JPlBVPQJ?*qi< z*EIclX1u>&XZ_@Uo$+n#*SX&N=bQJ2_^hj~`S(FTEuHlzmy|fPv;-Zy=n4aZRu}wG zD;5~Cls0F2DP~qLG`%6lY&>@HKxoEzUR}DHYG#_QfJB#EkB784+z*nAelkd2@NI1G z$Vi;3Gb7DZjYY<0m6$ys%T?kqO=#jHY9S8!tRG%v$cru%8Oqs_dRpj%1@qGggU?T@ z_k^PwBR!H3_txO#eM=^0NA{-Xmj{;o5(CegUmslZD^AVkm$xkWMHU>5t7csXdNd$9 zJ(xDX%=Lb8M;|voR3X?KOh`*(uJTo}^__%Uf3YRo_IR%Jjf-&gHcnn`P;?Ha>Fab) zRFp2GoTk#oqpW0wZDlFkuFFl+*9SZHNyWBrwwt!Sa|rRBO&MKVMyleE3XX>di`Wb^ zO94S6WFj1gavPU%Rme#!UyqGz7zyg2=%=xh$uM(7dlgP$rE;|x9i4&haSj#0dQT`M zNsrwoMbzdXRdH06!mDWWX$M5NwHHD=D2ktAyCfO&bvzgBgWFT?+G%wy{=$wVeK$Qt zt*&Ty{c>TFsVzAkY>&xfd1!jU+5RjPt4WIn9h(@xeo&AlR#6wxwR{Pc$6ggxAdc=^Hy z*@dlqmsrsTfw}J$0ak9^H%*X;Lt(U=l}*^fBGQ}^fR*Sl@L2ykHaIV-6gj93_BagL z&n;XTl1EvBw!cz3`jV;@(yypir!Xlv6ShZEd;+;}O=u+X4Q&u`s?g6NIogLvZGxqj z;~M4UA%^QQA~x7`4N&DD91}ixbc~hE?u<}&t2_i?puX&G6E88q{xEx_)8^Z!!jE;=xLmwfoz5^UdTHS_*2B-IVo(_DPgB5o;rYn7#9 zgac71c^4my`IBy5DIAVrynd=!uxd73Zo@L$LpLIp9u;1Bn>;xD==3(`WDV$?KME<3 z&+pgB`KA-O^o9Ug5e^#eV$?jlMp-CY%H;8K&uqssvb2+f@ zZq7f00I6TFSXP6K&rA~2tP&XqQ8!ZnGH4$Wc)&$Nqd)pS_Xsx7^^!kHcN*_Duid9E z8;M$7vi@M_74qa9Dhg(IA;xvW8X%^vMqToKnJ(pmB#dQ}jq#mw9eb0=bT_xxdEz(O_Hyy=l1=Rtlu zy}i3>N|yBjf3G)p@H|j%s`vj8d!k`0Jr_b?pj>;m?Ke4r{TO;VeHBAC9TcD;V0Uk# zT>H-+AzEg<)Y+qSPr)q~Ac?d8DK#9Jqi!iloFDtTwKjH(pM+IJQYmnpZBFW(fk0e*ItU#5*O!w;tSLy?i)|#J)>KAcr_;?^m(2y@x%G% z!*zh>XhX}2Cij!K3>BQ8$>0UH&VGrKvRm4@qmwG8akp!~`bIh4gkhxF0JDmZk>yst z5$IH)hC9^`*v zkUxu;y3DDjjEE_uacLuua(Z}F$-0;TVF*lffY-QluW{mHn#6z6;wAp1f-Vz!q@Y6u zIx?84;2cxPFq|M-=v!@PC#AT(6$AcKCjLqs=XAQ^9$ z9zrCp^b$&ZOgr^~5WE*4!iUs#sVqOYA=JVRWIgWTqK)&i=Yj=h!99B_f@~3#mL{Y* zn$s1&D~(8OSc;GAtg-&*g4UrD^9Z=MT+;?xBrDgg^q98*a&4B7+LIASa&Qg(VK9HL z!N5^l(>k2Z$GK~(CP4-t)~wP?HaFt2yN-uN9vmu-LdZT5rjW}<#82oycs``C=RJ!C|~Ca1^g6RH61Lf z=aUD!Xu6(K*l&Jv77-fo|Bj}%OMcQ-7b!}H+7NtCje?6e(iwAlQv5_^FL3b^S-tJe$OxfjG6(+jwC-3zB5#X^$R^W;2zW-ha7m?t3@p;3MF z)Kaw4lDxGj7?WU_x_!%^9Tb3%L*P zq*w47@{j3&hzGbpviFrqNp}^aQG5;hVHJr(bxk8*o_#vXt+Ve=^UW+Y)3<7=iIGoB zO(v1H(&D2--hRpS-AA~^h?YTLKKBLOyPDa1_f;eND{YKpVk0;6C*Z2_l`^m6vvCAr zb>PeOXM6Tl|%`B)Gc2xx2pw$_r%-0aWNBHTR!X5AKSD*arLwZ-)C#wS}T@(Pl zxhXKCY040L2J%}&3B1>DQKj42=GkVG2E=e&yT_>-aR(@OWUo~~i7V3KsfJJlqL>51fG9KliMqon$$ zb*0TCnjboXTt{$uJ8ZjJ@L&MA=d6jL>99P=M^N6CwDQU2#=mpz=g@n{kOq$Pe&lO9CCTb2u-`GqaPm~gX1V^>1 z`?;*E!!e)!JPV_=_ym#?JbFBQyB|2Vv}M*nq8i(RWueu$nJfu<$q6k#N5m~`3G&v( z>Xtwk$Cw%oT6p_(-~E%QovlEb`k7tEZ3Up)T=4?<7@!dP>CM-m0h@4xhNXL=y8=|W zhYo9l}LTB`}mCe zCjCsOerRs16Mm)X<-wB)2MYq#{DjGBR*cnruJxjm$!B|Ky~P}UMESs}B+M)-8opRP z^IM-wWI3-fbU_UT5_~4!0n^g+^qGLx#rXK&VE}h7OIQlz|Y9rI(wudZy}e ziYT}@(rV1ygQ8(7Oua&6z~osy-OOsmx2w**nELfIJD}5=t?kov+Tv z3Tb0W6V{SB&2%Zcaf)FzMO7>;3o|sh*f%q{0;P{;-I4vI7P5HgZgmja%*+A@AG2KN z_p@1dSl8oOcjJCc6I=IUL;ChlKJbp|Yf(thC$8aDIr~8=4H)<{Wroqg6d|P#hnZO4 zK9Nn+2XEsyx;@p?zjg5NKpq(HCMhx7_Hxo6iUXuI*z&#wXlW=U`N5duv#$~E`)){* z>USRhr()q)r&OkT=I;>>AKJ=Vg6I9n69`Y6WGUTkQ63w8q6~2vtG|aOeOtSdwE8Cx zW4_9&Yad3b>pc1hxBm)b!DjuK@gs{T-ckg{;a?v@F0jR*ntZgHnYoZWtb%z{@DZgF z9#aE~<)y?4q7KPCiP`LNmNL9a^?l_Z3*WLRa>>?RQ|K+|MRbi+GpYm4L3ino0bkO2 z+fu`l<{I&=A>}9=`_SHRr|%$$ue|mEi6;ovim-$cG3@V8lG(lKJMI-=m77U{#Tauy zpvQ0Tj!vPW4#OLV$=JkhWXfZd&8JaT#MjD6sq7M(qxzX~NjipKWYKEz8^0+2tkccu z5ynXjVVNv5s42>8hUG$9Fg<0srCoqDH!fEo8kyFf=)5E;1Y{h#({b=7X!Z2pF^@5i zDzn-=sXA4riZ}0LFQw{KgD_mGET?+)aw?eCbRd_j&SU}9u~76UDOo}QgQ4nhQ!@$g z>(T;^kcv~a)WHC1=BZw7bqPVlwuHH2V1My;Ypf{!WG@ne&!&M~=F;NBVEV4){V4$A zI+q6U350>6L2Qbxhcti1wEa^M{(lK4WZFdF+hlWS0_k}O>5CHg| z@YLdoQxxCrCt)1ZRy`4Z>+poZ;9Gy_7FCic>0deWMYZ4N2}8l(`!|2b;ckB&O6oU@ z6*7r4iD+Mi(nq(e_vV2fxMka(c%I&}6;HQTgrf^Vpjp+hFV>4=A-Vy$CF5l62{&AP9J6&U=(x0wO1#OR-;=dGTJe!_qDx0K8q(tDQ<&@l`6*MkFoRC8w0+ zAXB6*ciLybMag7!CfBq?mb47mcT0Z;i@&2InDz7NRP9L;cL%(tlW_K;8kNSoA^34r zx)fhwTw}X}tU+;QLs7&7c!TFeV?&Zy5VEJ=Qc!Ky;umpLe8Ov;)44k2*4@pM<^g(h zHt&wA7brFRp``paLf^@S%BmU55JW zMtRD#si#UD(bq%u?LQ1ogA$VFun;aS*bx+;7k{+DZ@s$@G$>)rq)TE4jl%CCahZ{^ zF-ft4?eIMef}ch+&vgxf;=Nu2p3I5GW*CB808R1B!#$m3#=a4pV2pJyyRp~2aMrE zSh|eP$i`OjyUIjynv4~^13|nKbgFpYgtyNY|7bd`7C(PJfh_5d?i5~+Ym_^n@2iL} zp$D17K{nPZ<~Je&(&9BBPIF{kabXB9P`jgg+8!h!6NqFm)u83=eGj_df_D<6;q$bB zeQPr>Ov?4?1#~i?k!$Ys9v)4T6zqgD9qz%HaI$RBHa|IBPVmYR()#epj3=&h4&|vX zeC4^s+aAS#|6Sz2^I3KHFPLH}Rd9vsEJC9?{1qhBZ%<&KdHy#5$juRQbDw;!|G0%# zMbeeeoQO%EOyJKlwMX*m=_7pgsxSxD%%}M3+}YZe z2e|j0V8AKNW6#Jk4-y|&Wfu|NU==(T{UwC#{XJN3i>!ZVBXwRacJ>wDB;sdRaaVzqVJ?A(uJszpC};VLqW&+2QC9u_!;o zsp0M!cib$v@Vp~Ml)6Ywo#$P=)dmWUh_()OuqUgnQvl+~Q4a3Xic!rxDG`cx^~dl0 zVmwG&LtyYLhfZ%g4leGI)lPvJex>YV3#xXf=N7F`zO}tCbDu{!$iLDH^2L+w~vO`WbQtqE#TA9VHLlq1+lOVn72{z^{OpZQg;XFgAAkG&N>V$7#Z>sbx|#= zXO}bv@U9Q24MxY7E)Q5{oiYnXXJd*m_c)llq*h_@mxO9HDLg3_0QD4KnFu%prATrU zyptAxIKhad{4-1l=qnS=SiBvf8H>Y7!WcmE$S@6>>fEo<*bB6177VF0S)z!8lOEZs zF1`!m8L}CchVZZ`&csussgYODLkQ6yf{jLY6a%PcQui{JGB=UYXw#u|JN24rKF0@I zS&NwWJ^_-?51<*S7I_`Gs?dS>EG&{5bO|h~c9SNf%}kTMN*Q5U#j#Q)6)dyQN|haZ zTIfP_2%6o1tW*3hs}`axS&isAuk9xY_*R8K8Yphg_f$ySvL&s#+RegcbIHabS)P1I zdWk{~x}hVm5@yMUXBFDx*MZxR9Yc4^^Gl{JeJ$QLr{woE55XZ^hWTkQNS5mSCxB-v z;WEJb6d_BVD4DrPLlu0vLwI(>ne6(Q^&clIQ5w!+{sF&*)EgXH>~z6Vb9E8C=xZxe zg2KWVu)6BNha*Q6j{F{D-v#HaI)U-hf*5b{QyYLv8cngB1@j;sLQ5D#XOglICT)9{ zh@)%|FbD0VT+7E|3#ar+d5$%R+8V4(Ob{w&LG)d%!)Zh(BdJan!JBnreC(2E(9$b>AqYu=#h34|lv%d|*QtHv&3uhyuYuPnVfvb(vxHx~!p5VRMd` z&WHgH^qiScmnrOS2@KKns$L`h#MIRE4EoI+XlZi~8{UkfViuYRl+la$mDH>`Pc_RT zQ%YL4BxeTLcrX(ZalaUAKM^uX}aoi+`4Q zv!hX5#1fH4d&azM;@EOVL>pkfEF*znbwjS_WkY;24pAoi0Az-U0=3!@``ZcqrME#q zoFgg2+L67vWQgRvXisoiK-ZunvmH%|M2hXyjPi}1qXkIqLylQx_zRusZNgL21M^zb z1DI8AGiF)xXihO)h^p(kl>i4X0?Y4_^HM^{#WhdqE3PNoJ)Ndj8`DDsu<@8qYl_ZZ4;Xq5ou+>I1Z2lk)FVQoI z@PXH=W*@-BJT0rEyY*h%jS%$Z*8lT^gbP%Q`NR8(CxQqDS(6^)djV0Z-wYVRL#x}8 z%|LyX5tZwVoCz&yaf9j-!k{D1sK;}}Vn0NgdODxhv?7F##Nj=qXNj{;ciYX`X+5#l zvWq0}r(;ZTP?s0suO>`F!x0O*o6tV z+nfG)x%C}FIPo6-qJ}pL_>A8m7V0+vUr8e=1VBX*5lV^R?k%hB7su`tbPtemK?4ZXMdhDlO z+{i+4<;4wMQ6erd9W_2KYl01sd3=E=5y6gl3XB}4X8;G6@?rs+ossGZby_pM+&U-# zO#TKQ6!-wD=@r(YC(Nhjm#Vs2=s%-sS%e{UENoiW%g$ zgrs>0G5{fEF9?dt5&%&f{po^6utP1I_df2`iWemsi{-Bx?F~V*d4=xxP-i$AX$14Z zebpah{8HwpMBV!|4?9Ets@!HeGIT6i-CspVYMy$9&d^m^O>BICbQ?a}7)@+Q(G>C9 z8I6-`zbm;$f0i&;r!gF+5+MZY0E|lVM_Mp<^iqFe(b1?RDLE!@V329E1C0c$W?Xir z_eL`9BBqkQnu07l)YKX&xmnu?Dy(gK)3IzQ^DxSWk`ME+f|C1(viEsZ9hn$x&RB^U zOL}v8-0tjkQ zQW2Movc!i)BVe!oR`u9f7?+I*6;2q0V9h<4piYH6GEcCX;Z5R2^9|7obFbok3{d5i=LRoxIU|DLnSj8EhUUvgJ3jrXCHk@eawRTX&it z)bMGEtFs|+=&#nvsuPd`BqOC(?I;O6gxxq!ZwNk4vcDMn6$@e^J1 zCZ+m!-vq$6+MuBkFPfU8@xy%m1ID4XG$E9D}=E;v@NUAN`JPAY%pecgQ^Gt2?+(pl{g_iCt%23nm zc7P@r>qV#q6~C+C*|eA~Y!>zQm|A>G;ch)r{P`Mr^#LMkB!w@r?G*acI$WBpUK(!A zti@76-?@lEK#>8~b{FZEq>k1OG6kB&vn#YZigD5cOL~MxtfaRZu}TXp{wiLj=kkWR z3by08+>j7>m*QY+_mYQEos`}4>EArxuTjrngSa3v1it5W1+M2b&BtwqLxV$f{h|g2 zZ$Pycl(a|*L1-unQR%tx5p`SrseT81ic2AP%*qkvyiCGx(5jib;BTBpHDpO?NMa&k zY%-ZB0s^{zVn8g8BvHg41YDL4<&Ah<^XgN$AoA+%KrKc-(EZ)XCjp5v@to9^<=FyP ztx4g$17SHzB$1wYdpy`HyrPQSOO}<2(7(#(9cQ7jB+!|_1`O1v#!UiJEoGD;f(`Uy!5)&YdB`UTJQSUBS}Pq5 z3Gl&YMXzD8BQI$tX%gLMG!T`J<1D!17>qP-8&nfKs^h^lkDr{#k70oVul<;=Ck(Cy zeEK2sBdZ3cF(R(^PxJCTDWSxhSBd-}Tgs(o{`swr{0QIGksskV)7=Xp!!O5EyBg7{=q3o}+CWMS>Mh#*= zfbYHa!u&q-S!I(OQ1Ayo-8n6+-m_o#_h`?G4LPry_IF?}_I%7ZQXVA&WbM%(2Y>Jd zNI0Yx#g0Po2e){Az#&Ec4#nzT8`d&J`XT{_sL;V5p{V4Yyh;li$}qtnx)PFcoU7Y3 zWpEF7Q1Ay|9pL;GU1^;{YP+_g9PEVP4-glv23vGF?BEZPoF_(RLxMj-(=xEqlD!}V zf5;1>9vsk>9+`O%{9(oduQI=69@J9@e{hXGRNn~x5Tgb-1o;b4Ud97Ifn_0`ttR**gn?Wx_yb4G6iAYejVbtpbvD5tX)jnq!5@9D*}y1qQ{!P1b`ZrR zNOAhv-gnAp?BI`9_`Ic<4)q4lRTE4ConV^^bEo$T{>W5tFq9b#!5`5wY9;rRePKPL zTH`XY@{nBk%jeuQofq=7)DaStoPSQt8G_3CJn=}fm&}}**GiTycu7)|! zG1E17)&`fC&Yrb5#ptZiJRm)j*8KT^?No}4Zy5AjM4{fXLdmx_9Gb%y^yx$235O== zzG2Z11{VG1@3H9b28*sG%oSNQ6ZkzAeU&VF^lDgi83TzhSuW$y@Az-Yp%u-rKwO@L z!%_}C_a$>^tO=O3-_;-Pfd&VaU%mQlJ?L`kbBg-x$oG{B^oyv^k97@*eGdUOetyZ7IceVN)e(P7CGpWy7{)t0-hhd{WOLj%|*;@7S ztK-m;#WjaM{<1jq(PbQ(9PrV#MdErXw?`;YtI*2f%d2^PLp~F7tVFfu)SFXsXYZK!CWU6$E_W4~`rAJ;0pKh<<(~iD` zViliY#reOcCe7&s)xw{z%BL@wPqQS+mIUf)QAO`;a$<=B(ZjcK^){BzsxhZ%frF!e zA=*(`jP$oMA61vaHgW}` z%07gAVQFcD5!VR-7xLQW)j{`A`8CE`JEmpT%s(Tl8GzqNnpxgejc=zvrSy(rpF< z)XGKA!dER!Q|;{`&zB5V1l$IH)65{LGL*T>Jogemt{Recunx6a>Rej3cPU-U_k(J; zGI(p*-lb?A?MW0FNtf?klAWB*RhY;}u<2vBQ}=I3tmbG_3#;!ajpU>zraz73nq_Gu2d|t)a!el8No9E3!lh0lneQRN z+(?r`l06^cUq~T2q7;%!OE{J=mI)@eFU2E|Nq1N*l|L&}NRBv#q!TZW5Ux&gzagnO z&i1I|6US*9bW!|1mjtZQnW%mB4au@JRy+~xzn&M_g6|sUsAOSbzV_z z$WJt`Y-o4^aboNXN6N%Ev_aNIWs(|sJ@ZOdHl>gps+>ZS?3Rx)s4XSXa|+3ckXtDZ z(xWwBkQYWut5ZnEF5n{w!JYDXE79D{92**)0ghHyO(8jQw>#jl2g=+-W&yr*@ zzESE_GsNMLgNP5b#b&f57b8g&MJEl?jg`Y>j|2uJ)l$|!p#+*8m{+HeR2$_OKgAT1 z=txQ-$?K3pa#XGXcV#~r7-I@a=jU?@NxB|VNV;4eQ%LGG%$Pz_6)~!1HE2saPAsR8 zB=aR1H~LdZj+PV3WyeKBa|%hhax{Wo3dycWX^bLz?G%#hl|qv9x<8L${-}I3U-fr1n@#`Sts$Xzl*)xZ0F=53HmV4#)1MlEQkvl`7{=pKV0!)1#x)4fe}4^E&iF6l=|A$g^4QCxHsbFh*u zL!C1anXr&TQoz$j^i43b|4u0+*E55?6p~E(@)VMQhw$T=Lh?GLR!+(d%y$>3cauU= z7`7yZq=@KBDI`bwQb>w9Fn;!bkxc)xDJ0j3C^ac-2vE9G3Q4Y%A{B4a-d8V5=@dEYefo4k~|Pd(n}$!H3d0S zE}uej(!)LDhKbIKTQu0fewh@KKu&2%#CMf}l&B(Ik;)1;6j6_NW7o{wuWe7&N2lL%ZeKQmBxh%O&oBYJ1Eo*FR*vshsq+E^!#G7GkSt7nOhQn- ze{Q3G*7WrfN77vcd~CZ=+b!B2>!pq4ozq5=C7mok#I4kAD`QEQ&`0g_cBj7^X(Mrz z{ewswIS_J1>R9%naQkx8Msf(}10WD&devzokLe8hOve)(Mf>ZJ4+Bl$hcfbD3t#Vq zc8KRHo*gEXj)>EHNMFX~&S~=4@~?M_`dD=~xr3>^@s5XCbTCVP0g7Qj-bm~gcjT`p zsKt5O$p15uAQ4d-LQ}*?^)-b^R#OnJno;#s7sp(_hx_VTxcyUpDcQ)*FWvL*X|DJsvio5AbXP(_ zS<+7)KM!YQ*0{$x`9m4UrB+WPROf&DJV<1;`JJ{^Q{obNfu}L5j2(v%c9hRGN>VCu zPQzSSAVLV={|SkBb|nwVEj*yye!ck=*CT!3c=2Tt_Yj1~oN{&s`FzN9D)a-YHw3if zZbx@w7xAPw-eGRZ=Jw$3n7AQH$(VN!aM$uLt~ix}lr(8Sl>G?9Rw{!F>{Wad!z2vt z{_x9v;YkC&F(585e2|x3hLG9do^k|aA-fOqk#u_@i9v_0P1TL8*9MitfNpIMXi&=j zp(r)h2TX3rU@$=bHTT&W49Ej71~|X~2wR*(Yw4T zRYn5p5C|XOfL*1#BNHe6DhXd?2~m!cFt0yX`EjTvY0!5MhOJ#9g3cp z>Ws4WJP)RNC!<+GA2SHgW!t>{IwhPLtNsZQ{9Kg%&ncu43(Q$NrfsyGSR1n5r`1Uj z?O-5UHhc-i2!;dLa3Z7}0vK}pG>(70u9$hyN`G3#e;(BJPU7F7XsC536bA}HVGtgY z^47E{S@|oxjs*XTL57y3=JVU`o9Fa zxB{=Wf%6rBZJ0t)lZK|IQA{8xFqg}Au!u`3{wVUM?+itf06R%pPi>2lo)eu3A_YoI%Da znNV&>l=|}??Zs#&9h8=}oSEO5z2@dj$o<+lADK1gM3Y5Zy(u%65Rxn+;j2*UayYLN zCDg@b2T4x@hM9WGYfLyIuu=&ym8Vv?dP?lY*+@Z}pcOLEdem2<1!p@Y^!IYKpiN{~ zNekv8KncKux!r*DOZWzu8gPUgIL9i?LK?id!OMf}Wq3%ak1YP%!`%%xXEz}D#J%r< z8XIBHYF0@kkuLRyune|QWypqdL?Yw!92)q$$^J@~pc28CISmeA-j%#YB2la;WXl~E z4AxGI?{IU2jueovj3*aa(-5xVWUQ`k17>V`rYE^&UaT=(-T4u7En zvWp(8=U-6;ctsUq;6#3~so&qA$3c=MfWzPdqEfnW>bD3#$3mBwcD0)<;`s;)b48w6+~YYJmNn@g$RVP};l`Fj=$Wjq`+1Ia!KFMW>N?2}GO1S(NhN9>R9ixj zh$LNZ-~$BIGNDxcW2s9~mjYy$ms04At720ouqX=`w&4KCPW25kw$yyPvom?ve0xxE zvF>Sr%5*lWth`ln$L{1I2|Yn>0I|UD$gUNWi#7LhliSfYkpN#QfG9vX(t$1j)qW8! zdo=GI?fmE!Q=yMon|^I5bPH?kY>&qI5a{2jZrX>!U{o7q#t(cH6#N?L^1v{9Nu{re z8_&7DNh&?+LD_aNOv%yC=CI@-=%Kunn=&joLOIAOmLn}mA14N+qiC(xR%CA$#JVth z-%AHUc9Ju~)Q8~Jb`DqNog}`~E(zqEs>RC2(KX`kWX=*T!1=4w45qrFnt6sX>ExQ~ zNxgV=bwYy-N7+c;MC^n-ze{*I8t^ixO4_aQo#LfjE~{`k;|hBcKxn4RXvc9tK2QGZ z+gj^bwWdEFPCH=bnr%;l-ua#VEmN^jc7Lr)(q7)*(XsJ0#l++_YdJI|{r)5+KX@iB z>H#Ka!_E1dd0GU}ne0E+**|(NDSl!cO^NIpyOURlAf+Rsey9H^&0f~G*YfQT;^KWd z?QY}So%!I)`gSYd-W11+;CV^o-NLs&5Xbvcza{T?`kFZ2m-?;9q#o}}{dN=Iejn{_ zVlLUOs_}06=nr4z1aIWyR{`kFy^l9v?YA5FRtB-OQaW@Vsu^;jYZuVWj8_6_HThWe z&?9W2A~yOlva44!k3T|K6QO#|Q_fTTAsrnO)7Mg(_X-j7YBtGhZb&Of(L7(2QtCtk6W%(nbxh5i!cQVMQjwtN)dzLOexM~qWHGLV<5Ive1`Hd_v=S*HCD~F5`H>tMLjsIuZ>R>% z=gTYTsDktg70@+cJDp<+B_CN@%M;hwMKN|ZPOj2ixr{1+LAkvO>!t(9jqYHz9u=5) zBl(={zEE}>$}s0BQ;9y{Qyqe&RTdVOok@CgGQl0#q!;Y=-B)}VsO(DcE=zfYc!ecQ zeI8c50e=uEZU`<#n7Kd=kg*OafeuDo!A_vxmE7LNA+CzDY5^M(I)_$#EV6H9olUO2 zo!M(iey3Sr3BjLb5E>~reo$undXFm=zgFjFZ{RH^dXcy$VOMg8RGmu4AhD8fDyQa~ zv$xU?So&`IQ_|me=?X5qh0Dg9^M|CA(S*L| zqpIeL%K+D*MQ4P zfQflAu;@_lcC_wrcSBII+CpM=i)u^CGaol`S+9vT?BUk#PL+y{t3BN*A=NM7xls?k zMr!JDuAkspNqS2%RdYFxR*^o!k&LoFcdTv5~;QL{&#q) zJ_tHw)$e2Ht((z47N)kb{AM;BDQTc=M8Zd*OpcYBdvtP>3UI`O4RINbnWy)fmqA)% zu{nP`rdIL-A3C+LkrH~lhTG)d_!d7L38&I*8PtFquKfMuYtkgilJK7ne1Mh$3_N$s z`}Y7pf?52P%6I&|Fr=T^3`0Ws$h2NOs?j4zcO}1-G8^oCdc)N2>ajv_J{(1+9Uyp?D00K&=c0Fzl20>mK-vOK?I zY_$63sV^keXz`P4;Xou5Nm--OVHV$KPdq2fu6~g10D{0CagB2-QaO4_tNJ~C+jfyr zi&osExjKAUtuvkWQ zT&E3C*~il^HQ$awJ>vi>C3tJ~IHY#fccE#cBv;G{o)jDseENxWdaYp2@LBO;TV)J! znD1klqZZKtQy9r75PUnbA5q_TWDj%&Gj86@K}G0fR6`X*;y{43sVzdpwHfU%SDQ_0 zu5LZmVdmhzqzhzUqOw74yi@PI4WHMe&0{@bZemy%AP1yD(XevN5BCLf~OToCbha=~TtIxYhrD%XFABY6(ooV}JucB_bIGYs)5vB4cm z+EAv&`zOT1+beiD>>U=4DG?q9BJvR=#)N8K|F=*Te?^IxTYLe690-HnR)zPVI>Shp zsKMAKl2BLZkG3YBI1V=6P@VcMf&rge2TM?iTVjW`KQRJS$Q@_jNQy-OE#S7Yz%_;7 z2K}+W-A0}ru>O&7=(OJr+y>eX##bS==nCmnf+Q2gXHleu_QLf5HAqw{fPpQr0*hO@ zu!BX3vXQet%mvL>u$CD?Lh@;)0*2=d1{M5jwRxe$q8Hv@+MJC&p2}T3!=jtx6EbK& z{%gF!dd|UYkcSA@He9a<15HSvxQ$+0@;RV=`=ykp#!BrpW7NO$3G_ zI#ss#>(QmXP(o*^7C|+m42Dw!U+`jpX$VZ3$Ixq&C8d`NxS`O^)6I ze~||3fGut|D)9u80#UD-glTEi9U$FRPFkOO;0j54-na=gY6nxuQ zrAuKtOePZ$W(82G(g)J-L&a=>T9V90{Za~-e<*;(EiJ$*epn%0%BC$D1rJl4fFCtW zUL^nz*>)6t%gvoP=Y;N+ECTLCIv~A8bk0%_5=3Hzq@pklKZQb~sVxsyTa=esYc7a# zTCyQ1{^XdM2D2Tzi#ga7Bc@PO3_Sy*y6`D@3&d`G!Rx_|7A=FtA`VQsNg0EjrshO9 zf!u>aBy=A6*4=gsSB%yLMl5)Yh$#vDhY^drfN*gnd>^=q#GsR*)hY2R@0wszMJ-pN z%Nqh+ibg;W8j>%F&`F)ZpbpoRNZ(9}H(ebi27A)AQIsNp1Vd1=>2 zSvqEcfqHg#nAb~WiNphmj!G+Ga>X>wCWX9#cRt$n5%yXDGlQfJkgQ=iDoX^!-GT{P z1I{fjNw<9$@d%k>WyL?SzmqAbZ10yBgR>ySf)vvxw<@2~AJO6i5Fy8L-48}6pAg#N z^e8PLxn;FqE+>E^hum6JghBKejmLLC;}gF{5VFfbmhXhVbkrpw{g8S&OxyXM9*^*$ zTZGSP*+@^jxYX|ATh@$-0}WWm1#+WIemIqxH9|e$n-vdJK1M(RM-a2gHHIlobulq-ryV$5al#9=rqptv&xP@N;np?Xzy z`b(dRj*VqVkQ)gs!kD6f1Wb@n01J&gE@Yq6R11gnC)r<5HUL#BanHHS#yP(!%=r$6 z@&BesV^~yzbQ;Rt!vt4VCs%}+5^&U#GQuD zlFApwwTRbX4HgQ^(wjcAJDCzq*EV6jKpyZSnuYaZlV4yz9(b5U+`QOWwX~Y*uci5D z(FK;*xvBCwGW}nKTCqhhgepUBI$8ocq&H zQR<=a0z%U__tUz01Xdv&)a(Id}IaZJiE4>w>0dexOM8gP#1O%dJKx#tSvddhRigp!(p>uh`zz(FS zay1mRoVHLJqzmdOA}lM&G*31=>kx(-vDGof(_B$~4ivhvPw>=grIz+?eAOSVTf*MK zR!bvIvlWv;qy^taeWKPdC?-WTD3*zogamy6Uar1s#{HB-*4pv;fh}1Xc6?r7)6r`F z%_R#i6AFq!(%n?8-9MhCvIb+;Lyp=eR~y)Z&*7Zb2j}>WzianZC*K(iSUC&Yuo#G% zP_qnzNqK=Fs)Iz2h}>B7&+Ce2bT~dA@-;{b!by1&FT}`4($(L_v?;aU9GLjoYEVIX zS#^}uk19s0JxtR!1z;hZ)XUSvfgDtRde~D%IKiGOsV@Eeb3GS8E9gfv<36R)b@l3a zc3gE(Q(cFQ5$p-8Yg!}T%^qNCIeasmj&Ry3F`Z_t*yGZQMzCrcVUjnP;Qo|5sn8R4hk z7}A~c3QJcS8k9b9&?RW_hA=>JS2BStg)+K11{M?~4teq?v9u@u46DWv3$9uZS+nG3 zzRhk8u1^sl0WC6va+QEFxv;bqd?i(DNmJ4cvTBi2j71NP{Vtb*Ir*&IMpSr2OT~zT zm^;q!It=s7+I_|6z-*QX-L6jh@i2=KW|D=qP@W+azdE6%2KOHL7Ntw+UT5obwdhyd zrCD|Xpg71SUR@{7fOBJrZuu=uWNY=&DJs>^FL2c&OyqHKSd$`@BuR--H>+m(k_G|t z#Tvn9TXw&E(Mft3g4-<3u>Wzb8d=db(&R2nzK}dC%l+%FY$>S;ygo*6@G$K z1dUL546PR*Ungp*7dbuBmg7bTy4bxDhkb%)q?d;MEVq(Uje~u0 zE5kfAzLj<5+KB4wgve|8vlR97lQP^jB=P$K;kV5wK0nzMbs|ni&YQ^Wea>fAo$9?2 zZJeA0o1}9xmQ#V0G>sVh>3eXoFelN+a-7M(CicfpmTT0rocYFawUc_}Ws$AD3wzm_ ze9g~jChWPJ?1QIa%ep|0mSkus9SZ*`#Kw#aRp^Y+(Ea%2B#a}k+H#qE*85n&wNPL$ z1=#;J*}bm3Zf{#I6AA>E$teK^`qr?Xos^@KjPjGkzn^dfE^1S7nKUIleElvNFHo%h z{bylkj7Q(AT(5=r{b%jbLCDlDlQRR-*h#!TzQGXZF6Qy5|2@~5z|P1VyH)aXGT;sYbHfD2;~TkJPBp?6mwmjHn)=O34$YI*I+)Q z1~!s-S6qwjNEdaT{vq>6=?UUyd*Np#?D>sT-N4txG{psi8vxL4>~aWol>|0z7Pkrt z2NuVtQeZB=J1Q`CQmHn1jqY>lKlm zDAEkeqD7`zXeUaTH;zrh-goBZ^ma}8mg$YUY?Rklk+sv}x170Lec&(gBa9U|Sn?1K z;yTsKCtz?A{g#x2I>%1D5$qjqz{+Hh$2i5hk;!ZeE8PYqMQIHRpn3#Usb2>A#%8EL=m0&eb6d^qf&qQ%!v-3v6(2lEw1kM0!8@RB_07NNjmy5N6%FFXzH)bE z)qLN4SmiKyUO;FaY@3=mrAvcb1vAy~WP_P<{jWeyGfdYgt>#}C&;gI`#Yh8}5krMO zyPS*BQ;LOMW9615Dlq_?0>ZWOEi)v7d^6tlsC);T&58l4$puI%*lTz|XSRoXwYxw^ zeS^;_jF)obZRNym&}jO<1kc!nSGaQa-d2v^W@p*8=xjBTGbWU#;^$a5HM|qW$}d2Y zFkzbP&j%0aLK{eywf}5|h@%e@A5EPw_*hv$nOI9yYQ2v6_<9{1*&Qi2Rofn})~dx+ z_@T9v`5G@;0L4B*0{9kvR{UnZRR&oQkTt59Fa`lBc3S$8ZqK?*KnpK9WjRP3Im%BL z*0Lg8!&3L(Uz?2w|JxiHLs%5@<2lxpY25g>LgXe=%r#FBqH&L4M5?}g?h8o?e&cuE zSB>n4Uwm{MeG(9KuqjI5T69G35GYO>H{YKzFmRL;H~Ef@dRe#7i4`KUpF%(2FWc?o zi4}H4z8~o;Pvo4gnCEA?N?n}e6Pbf%^{G@&x2Y2wkQ+PrS>Z4`M^%40MKzw-z`Rbk zmk%vGt6wj)iJL^T7*5h&%x?9*&paoaU2yw`6B{sK;smZwY(N3#sZKe|S&cm5(*4#S z`a6}ZQ_iCM@>Hjs4d3M>)nA8_`pv2Vr-*1}!|rRPoXx7gL(vT3+|?!P>@reG6P4}H zShvGD!3~-x1sdYKH1>F4gPuF1md(cO$SVr^Vxq(&BN^IR=UhiN`gBqGFO#J`RCr zT7Ga26Ja|HhO65QILbXIjc{B8UmZq?*Ok^ihB+Dxy?81QPFEH@`{_h}8=jX(M10ca zgzqd-+2Nrpy+lx{rKhMw_PTjp>A_)L)gxVzRZr@Q6rSTMj8;$O9O&zz`o?h$v>@Q1 z%4%I@i!n`eT!Y@C#p!C==ePzRQ7V4m;~IQE1hnsxUg{F>FVqp#1I4`8W1h>$>h7yM zknbwTHQ1q^?VZ65EZkD(O@5T_JFWpBaC$M*FS_dv`M3sQ2SYR(qPrbL{on+E95!U& z=>T5p^DkTp_HapnHph3+rA|`BXeY?fjwGq#kqzbGh!#_#-Ed?B-?Iw{Kf;rk zfE`Dp8EPP{p>bqGrXw2&z>zn?C=DZPE6;2mj%+Z9WTWUz74MsH)aJ`MvY~z1)OdqE zc77y_3Bln9nzz1ig?AFCumGEb&-NvnwTZv)1z6e%E6OK1AR`>v;Ec3+_$co`vVqZ} zE$YaIuRiC{Ps8R>pzvfn9%IBUQ;J{#u-Y1aP$+Zk55J%()a}8~=vFM)CmIOI$5DseOmMwEPC)f*m}YWr$dU;7^+e#vlS zTk*GES@g-soQZ9uyIx@ptHfht2_F`6JcNuqu==Cl%JB)=Qsc032)z%rtHRyZSv|<#k#5)|OD9 z!(NV|P_z|HC-&CW#^zd+aGwY3N2?q#oTzdzp8A)|!xsSdsT`VSF%r}bi;l~w8z|4= z^xSOE@_&J4T~^&7`2!Lk_lpmRV%slIwYovD8Bevk(MH{9HR?tvS*sgu)D5Yn)!$3O z2;bG}M)<8?-5@6B4OaD~Zuqo#QzzJCbc*VRtrU14bOs4T0-ptCE~9Te(9<`Fih1e! zhP*yTqo{CT>kk-qpLGE_|7(roPHP-{_6rT~X*7=41(7Zn`^(liZs}_$Lgk_qXu8V7Xx(ln0L8b?&Bu2SQOnvB#mYaG%XmS`O5l{F5caF%Es=w#OQ ztlM2y<4`;y8pqI;G>(vhm&E`Jkj2jvydYO^^*ndXfUhD!sd%j^XreXdWV|R691_*1 zA?T2(yienB7>KP9#1~29XsH@l=H7QT8b=zGhg4@jS>xz?fne%s9K0tj9ZgbjD10=u zy2ep2V0}mw>Lk*ynv23j&5)Of0+UwJMe|4HA8NAE{>11B#=Q4g}#FDJ8NjwEBNirT)Pahpch^$k^reANV8c ze-ib__18Z3APtwL`GqTLIY6~(o%6)3teW}Mb4hjXEPFfE$G-lfb1hBi`;{&Ey2nS~ zmcNxK*}3fUuG`go40hla{SI9C*ed?pn;<^oA5DQA_7aSrDZ#0zJ4wl`f)c?e)Crm>6N{>gW))U+k?S{p&cC^S5bI7^_Rdy|JuqAM$qPs-oNZCT5{xA8K5uf3QnIuKm6v>$TZE^ptq$oTzc$#Aviga%v- z=`Sp6`@NC`6l&={T03v}7KLTG8z%YL6wvT35iWp6z+*Es8J1AY3?lkjd=4&xVu6uL4lg6ALrlE^_NsMsE?Wo0?S4o{YwGyiYGWB#t&Ugaw7>mDza`!B zN;vr2>-)c5weLf#eQOw6L7@F%rgSq4Wz92;jHRabsAa6P#DgBrvUgdT*L81aO1xOp)vvTvd$|3JiWh~irt>~IjR83$M82$@Vo zvQpGeZ-RUnUqYj7b6f8F6+y%8cW}Xx0^~H?^`3|RpARPl+(xQ|UH1fs{hAnTH9Fn-@?Gtg!+t}{pT)GmXSoSZshd_cGr<0cj8#sPDaOTK@eL z(jJ74wF7rC4bts-Q4HA=7|?U+`0(h+@KA8#Vwu7_c?Z}%&{~47jyUx;tgZLb=9YUA zQycE3_fz*moty6^es|NoY>lse?+6OXHQMEtk7DG8?^YlC63mm*JZ~=0kBg6)3pkf+@q$N#?jWJ(Cv!XTnL*wxu@s#M@ed}BE>6>!4`opu__S5Yxv(-1f-I{Lq%~n5Z zh57B?+3KHoyO7>4&Q_lryWKNe{k%0##@nhrM~;Vx6^ZrIMU{r#XW2P0#>0OT9RLSw zTc`Fxx%90^+k@Tml|2uJ_$MqnH{rq@b&|hfto%n~@saWf{ovGZqx>Fs?<_XubB}ZR z*hbmNkfuCzo}>ij7hQ(j)s)Ww$mPl7FxGz4f9NavUs8UT3vYXy@)@4FJgFSkD-VK3 z`2pqkx=(LkQ$9~mE>Aj#b;`5pg6EkPliXlI@orB3UbXCWPRGhE;NxA|0obdtAlJ)_ zv3k>PLKu70ioO8q1q(UjrbK)@1VBga8MksJZsQyY=%$ijqEuqkG@YalQaF%#7jFjK zS>+pSkLoi14@Q%`)I*P9i9&3ZGyKa3(-FF4ba;6|}nxV}{1DI9w>C&_aGO56Btc=jV)1566$ zQiIwhbHs`(B}sO7Qj27_%+fCQ&aMuF*hs?_c1~}ouz$^va^MxpEqCzCz_bqT8$ zR0O4SxWa&{Sy`UGYt_C>j)!Me;Vy!4sUWRHry4iiRl?}=qo{JEXMwHgKMaM|nmw9? z4cslOLryb^3avdPOK6e9$qw$0-=t|EzPTHQJrS%ALc}dT#d3wBqUl$>qKBe4j9RVk)Z<(|NhSoM zW;!$+yWr!4rbn@DJ&t{eoOZ9U`317X*GN~OVbFkoXio=<4=zHkT$f~gk+l=f(mhtq z{aq$~_L#3uHm~4J`PIbi-HZKyOL)uyddH%egN=PZqzeWB`8kQf4-}{on4kpF6%P$p zpB+Oo{>M45-GwAl%#S=hOX2B3@ga!H)yqXLB!k#n^#?l{@)l0(n4;XU6B)mYP(sLc zFm-G=Z!??9d0aa*I>~Y?;UAN1J53PhLF@urdv45poEx)A9my=FEDvlFbvq>+)H=Y< z{N8B0ael>&5%(NgQ4&`>IA+3rVf;hg z;ZO_iwP5Bh;1T`iF&HH1VB2baC$4rNA}(yhiaX~?LSgjoE;O6AL#97uPaHc>hJLJb zo($jIA6<-q7rwcVE~fKj$ey^-c`{SgjH@yAc`|(I87k(^0~I<|8vrm+&Xc(@9Z`ej zPJ`F$h!o-tyN`)`NGULzHPxLQk^*^^bFd_C+K&x(62ry|d>3r}VlRu%y>LFl&z#q3 zlnnWV?S7?j74W5ey1 z7S(_#JGMOOWR`n-7!i`JN7eg(vbeS*;9NP-<49>eo=f(&t4U=x%F$g9UHNEa*{ z#x^CgN(&jDuX-{fNSJ{q$V|lvGLuo>C!Qcf*4V}2)EJHvLKyWW#O7!p5JHRwbY-7y zX%JcmKBo(oo^uGbowm!I7Dk5|R-7rbsU+^&Bc@onvD48*WLepb$>P^o_xjPj`B6tg z4vcjq_Px^<6z$nEf|vfJvtRqPi>g0vn|gk>r613bC<_g!0NJ7!)!{s6xa zU)8Bo_<~ z_Q!r>KWM{%_9CXL*1h~jQEI_1xO7?X?SNv_)lc!=eH{7%pX`5w2^le`4xDK=tdUS! zo>Lh>M>yk^Sd(XyKp(Y<$dRmidUBwYPXAMEL{)uP?1w$WypRG^Iwvs)%z)Db+=17t z{wH*TUUjR{Tj>EKf0$+nqWBOOp$D>=0gs#5!&>gSouu$_CwB4u6WsOQ-rD!B*2h#= zaPtgf?`#0ES6$%Vd=sycSGB-pW3vExNCIVpF6w8fM8(5|*UOIGp$-FqnC1lB6k+ym z_ocv{9_$Zu5+Zcmu@0&@`|3Ty6kYI|p~9pS^2e5#h6BPB#gA5oXq)sq z>3ejB={Q6;Z#_GlzK3r!LIuBJD-i?cG!uH_`6jZVuDHnflkzqnGTGO2{VO}L(l8qD zN|{#nFz;X&X%Emg_LO~;k2#|o-Hi(2$1G!ZS(d|ua*vkVcJET)wdbEP-gr4vkC)&~ z^DCE=fh_?L3{OEr>_yB1j66t1hN);8gAnsb+G^-@TDA}vd?)xtamNudjcJ8iAV{HHRVzD_LiE@e6yUu>b z9skx@ugh=J`y<-c+f$koJ+%N^rU(8%C`{Ycp@5f`sSk(S%Gu8z{i$C&`I(E)oc-qg zA3OTFr&z=-KhpegqZ9%Y_LXakd{NWxX(e@WQVSUD-(=8IG-6rh^RKsBO$}>*P-n`a z!Yq+IW-0`G8zv%VpazP0?}(e3a_iZ$`v~d@M^OwxT(vIFmbu^bJeYZKH@AeT1LV+L z#1l^CqG*HdY-ttSXWTSK9^{~2dkhLe*({%F$#wx(;=^(07`DCF=b+<{KowshMj`b-Tv2S&Y*lbwm^d6te&cRx|QOR97fhpDmsd=jjar!f7x9M0*{8c;{dy#sD(* z1pry|1t1tT01t~h>p(biQPEoB%rYV_OfMdn7OPX_aDiDS^4$91ankgVNG%b$s@Xl| zY_L+vawrYc$E^=KA|FiLeH?QD9xxY<%}HKyVAYdoL|cz874JhLA*%Sf)Q#Vr_`Nh0 zH*_lkCi`*M%Xdp<+%oQXX*^{-AfagUXlbeazQstl0I%y@ETFY87~Ea$`qae&*9s!- z-7Pr8(W#Sk8O2o2+YPytlCdcL{BpAY>uBzrW8^kyij!k!xb5ic?Wc}*U5Vaybm=2c zQNy;gc+WwpJTROEj5d#~G9WuT?9gxp<+~-vMr2!k8-uGRM)zrS)tbSX%5Lk?)_c(z zgZZ&G0l4w;P3xzCwdjeT8*B+KGvnx)wFLOhL0|H=`D5q?m>QfxgRvS@;c+x@HGU(> zF}dKrQ}-=$C@+X?l9j3Z2J?(jJOTzWgA6o)5L3uN(@o4F1I>5!Ky^jKoEwb<}nm^?7L#S6T{KS{ZlTOe~ zVBKa;wPer}q=*;|nxA8X_AUlZOPz#2W%1d;){I2!Vvihn1MHa^VNd9FW7zXv4d2#vyl$;)Yv_9BJGmHihF3IG(fC;0g|(83CdXT2 z*VyvsezjG7cl8pNWV0!7UhppLJVb7~GZ?C3O@ebYc;_rv*FW>+R&}s?#%T|8Z;U=+ z*<*LO=CQ}$tgDf`VvOKB<5hs1Z(+1=$TQG_W)R5v$OZg@$A>v@Q8@H72EGyUy;atQ zc0PuD--qa52@LX}woCRqU~6y?60W+$%>VK|fMF!|xfY2TJuXq$YFJHU{Za8o6Rnj= zh-5kvQdKw1{zDg8O3>MbCOFnXyndO!Ay_{8&q}P|3k&r^hK#NuE+do5OvN$7g^j_E zy2)OCBkW%b1RY3LYuZBCc}adQ9T%6r!TRT+>iG>YIamd>2OsPIA|92H0{|0!mk7&N zbO~*eSvR#9nxIO4W~GH{Bg`|VS!T&RtOS07To5n5A(}{>2w92{q)xWX7b7XS0+pz% zW@=TdoLk(8vt=FP4N!v&Qw&S?a-qf1;Bqr?RHJNVXH{I>OcWzUTmSUW0l6{eX>N~| zxZhq?1CEk6V+1kiF-EX<%<8_?1Z%PzjkwVw-l#kHcVft>B0#bormbFM7JsWF(dwG{`%b|CZ7 z5VrDPwp>8ywr5zO0it>xAMA3vco?UQLUvSgTUuOeyKF#;xv*rwEa;)GFH? zs0UZ+#9KWVti^QoYU2(xnv&BYhI`AsKgd0bQM%t(?)$;x%x8;}>-YWbhXyV1GwJI9 zPKOrN>eS~_UHLKmdUAe{u3f#<+~w+q-LVGHX*_$|C((pqyS5);s1(;-hwA5Erxs$EynTY#xU_s2%99}=@bie`&L4LgB@V*MW4%fla<7%l0| zrH3HdE?v*<>ik{RZjst;rFH=)Zg;4?Q?&;zt}vp4NutNV8Q;Bdj$x01;f>+kQ;CI> z-4}3185GVWaBd*WyLI3kP|XtwlK{>vfoC{VQv$O}0VB#_4r^gRTS8VSx;&ghfce%8xPf;;(}; z{LownS5-|%6zaoO6v|hGE`oP66pA@!u6qdODSEh%fFL$}6JEeA&WgYe&R<(mi5XeP zDkcQ(2g`ka3SAC2Ee>xjZ~Z~Iz8_(2uI-XyFS?j1dXA-qTmSZOJFQ)iwzF?wYWcdY0kbK-LIN}#dTbG;re(8C?kLuYcZ zbF7Dxm>%=Y&B`9m57-Kvd*~|V%2C6S>Srr^h=FGzB`2JG3;bZyV!7SqfYaDbbLEc3 za$ym0%-|el;`Wxed{EcuPS&rmwkC~W$&T$}mfRhXQ*56fo3q@fl`~-!U`(QwO#|TG z2;`|go7xm&j2NUfR{)+ z9L0tN=#7II_@M~JZ{x*7N`_P41u5udbEY4@5a8Dr{L7Rb_ zlK?Gx!18D?Ej-J#L6?RznQP4?PNf@t^pOh(aVK-1N?%a_1HlS$Wc7c>Xqi?mnpnUg zLKC!JIUc&=79kws!VAwW6Npiqbhn&-;1-W-QGf#YCMCK|sBpZr6(@3;T5W|TYUgfwZGaaK6R%mQ!Zqn_n zyG2=E4;`b18j52KaLKu5ezGtIYI)qfTJk#C&KxNx4|dqm%ui}M2F5r|a8YLi>=gr{ zkeDQ8!DNz{fykLCrqu%H5{pv9WKtTu4HgjW3GDq~gT0JCiMV8JMGj&!7jf=kB8I4? zCOTEBH8m1cmFP1nR!l-l!D*5R-joN3)T}`wpa$p|1k8{7&KE^!3=kAAnP7+h`=y2N3Pt!lwB_PwP0^x;&!3*l1F};dW7OAKw}OkzW8v-6UL&4cdSSzc!^QTP=OyQN>xb6LNgGJ(r0< znW(X5WH>`?y1k<5Q6sdNi)JC0RE21D*oHYbyoQnPlf$>m#iSMh%FvuaeLkvyy8#`^1&s!pYs|KDcw!_*Y0JWl{OSQ+wmkQoN zDd_VcrW36*Ng&zY~0^yDgH__+-#t>Z*@uH~#+J?HbOjPaVM5;2MpioWV9Yd}bM=E700frM?_P%G4(t9MriHcwiR8%&J zR=vAZ5+h>Rmg)Z8!$Ri+!)8Hc!u3AFez@;ML~*fLog%!Xz;VYbLm&906+J`s`@${e z5#Jyf!F?#vAl7aCGG&l4{8W&iL`4VaY{#lxffa3~pEx(TTRk&rN);O9=kFQvc1lP2 z$8naC*1x*6WIXqE12>Bln{j(_E!{;32NBoabq$RpqY*{`kd;2bc@UM7hMA5dWkGsyvnV3wMMUGEz#IOP49mR#}m1sFyqaz94(~k@YzP3 z9B*HWOc49O1wZF~Vre1S)2X4t0rJpie#8=69UA zAySS$GZeD>=#WSblI8p7!BiZBkf^r)CwKKv;9hkaFF9dcFLHHX>*dh|0^917pN59J zd4{ioF)khl!hp+Z&IpOivs_(Z`yf3!-1=y{e;)n=9u*0XE))a3lQeWnpCQ+iT-}Cn z8WV~qCrNrMloKwcmTch$#24)}t#Dpm(LGYaZEym`gfn&?(At%BAXm3~Zc-vk51&n2 zJEAJcy4(LF>m@mMlNAWunHtXu6v%S{$_vAxTb<{pi@7Q35fx1~NsqeK^`KC!if(m{ z=XKH}`pjLO^oVYbs=LCAI_VMUIsVyLE~4T!=b5BO7rC1B=$u#N&~rX#9pq^sZ4WQ` zoNI6f0W3~{^c6{*Ncw5VK=`9MrPB|GB-$$-Y1 ztUvBXS|#y=VTv#17IHdeyph|PWh(g4#i$LAX6he$#3rRKwj5X4-~pHwn=n6VzCgA= znLcj4fA;^?3H|-+W*S7C4BAcVA9O$N>eN3h-*Z=|{+S@?q1~kZNnf%A_S4UO&Gr$v zI4x4@pH!|+{gd7yNI=9%*WOUvN&O@A|AZ{pu?dAN0TY5g$mmA;i8r!~cfdVCU<$c- z1r2d=jy>=7N&G)D4K4v6r-n>}@a`z^5_83`b5Y%0_)y9JogP7s@PtB5yMVNa%;FEI zVB#O(%FgUWT>G7FY%usSnFe{o-Y*^yWXkWo;1HPx`L!Ll85d%M;XaXRFbN%GDwB+0 z?f*&49^%F%TYP%4!=}g7#!DfK;Da=hs+&V`<(nzI0_Zd%m?{oW_>^dbU}Wb3pW(!x z_e!MFIl-9(9r(iUbL^%f(;%f@Hs=l3B?PX>fjI7bA$;)OK zOid$&Z0QORFr%QX)E>O-71k=NH4*bmUSZ@xcTAf-4FVta(7usr5R?!&Xg>nV#X-d_ znFf8T*3K1WF9POcW0hoSI2M=i{l%tH!|Ti%Qb@851p5ClV0f{kP)m^GwaP(3u0a|~ z((R8S3;acVakY!0)YkIED}!C(FaBdNQXS?=dJ63vjAr$||H3bN#wnP;MjRj*2S(G>a$P&y)yii8H*9W|yir2=e^CFZd+ zQ1AY*|EUf%A`~+L*yrlXk(g&PeKR?pm?uH}|AN94hvWow4uat(LLg^vl6n7tcz)ns zeX)~P>S>_5&dkXoPm}06dAuO)x3?~mn=eEylz(bcwmBNyZ4QpKKYHjG6+M$b+-qQM z+q20%x4QdwiodJ1g(sK(!&mugFAqW9g;a(xUdvoXK9xKnq8e$_oWIwuwn4NoG%fWu ztg5zi*0SL$=>PrrJed=e9(4W5c1rq+*@66wN)sG@AcKMYxc$$l$6Sk-p8E(ceu%g3 z8k+NH(O{9OYy@k%i!XLmG*y~|fKu@|DHLm4qEdPVjN?`RGrPvxM5VVz9F=t^^(fUf z22;Nlk?E=LS8Kfm6|H|M4*DFG3q*<0jV38_GbIeH&iy~mfK1QTa=;X`)~)_D7}}48 z>_`C;Ks=(u1CT7M$z2V3|X2d(QF<Y6E_p2rkSDWKxJYX&TJs(<_kymJ23G*5n> zn;WQ`tG+uqG5QXwNZ*}2(|l(meQ73?1~4F$hRHgQQ_xg(<8xGgx-L}biAoKx$`jRI zk%)@!${XcJb=Ih0NvpC(*}Bjjwd&AUW{(1mH-aCMWP?{?)rBei>a%}(u(&k^ujkZL zOg{vLJ%L%-|AMD$fDLYbM<^V+y@0Fv3**w`%K0p^Jo*C$g>lOk6wSa_pl18N>=hw( zCEs7p$`Y=8#g2O{`d`|qm@Pn;s(6%TRa~!KB|zv1Z4ZUT)vS~<%XD(y;chzEF79ZH zTJ362efY8~z1(wrMZ4uoS6sNCsqg8^yV^F(#uKHVJSB6rqI!;J@MGmR zsLRSoq8ZRT|NYKENXYl&>yP{c@8^pn$NHb!SMbr>+h^K2tM~zc7528qIr_x!hJd{d z9}@t)(~Q31CK{w=?xEIafDh6?NJEQ0rbZ0>DK=C}H z&)T1J6H|QgEFL~|0>RIWz37$u3+NhtM+cATa7#Tz3HZI}V|0$!x9LK#PvP$0`*7&o zQNc@Agw~Z>r#$F%va2J3sm5JjSuL>4)QjHI7$WW(+u0f3bmp$?J}b)a+#Rp zPIRiY`E>MQ42jBOGZELc8D^^g6nye<>jFN|2%4q-7fIAmEfI7RQNsM}$4`TVxgmO% z>?V#UI`eGg!_#(@w^RCArowE;1!js)hvy@Y%^Bjz(?sH;nq|KmyID1BTWMCGvq^C{ z29&{_e9=^Srag=^LsRXAT6VAh3)=t!NFflG0fM#fH*hLQlbdpgZg*L*^z<^uY*na% z{jUa2TvlJ>vt>|=Wj($ijOH=-vZ55~9Aoi@DUbbULM?6i4t24ev_@gbCoFQhngV#- z7sg5{Za5vv)R;_aNRXlNVIJ9u6MRXy+F687=u6q6gVYZj!NEDfW%~D zECvb1fX}qSqE7#eEB5t<#?ycJ#nI`Ix6u^_cW3CHHc+DqEuWERvDM!p(_c5);TF|J zUGO9jM($+v4qQ-`bTrlM%5$ngM90f(w3alp%zJw@@9qBo5l}u8gew8}N@~FlMfNq5 z?vyiQ;4oCFu9nt2==hnK@=WnC1Nz6>1_%~V>Hj#JZdXtKoQ$KMe2jrS`4K}_Pky`q z`_ZlC+%1p*)w<1S@v~vr#eU^<8Z3Q_^^GCHg239CK`umE0ogp|Kuv6E>r;+31nRlD zDSzFmc?(kxkVaFU%$?g3`rZi!7R~G?Mi8S-75Bfoqc{=+M8w2Y!{n>a2F4cEZ*iUO zpnE&%xL+}3Jp;1a$g+?){jbN87cZu0Oqrx`)Ut(UA1mGSdh8J940~K=-Av85D;diKgA|z23S%c#rBrClP%{sgpvRo^BVVPUM@u9G`h;kZKA4nMjq0eyK<# z!?_v|eT`M(l0JG+C1X|Sek8gt^ett9Ib=zcd$(6iB}Tx!%#N{y2Gj6EzX7H>ziUw~ z*Z?lv6{z;d8={){l~L^)KS!trMu}?I-V&-^uZ0jMY{;Mys(qtDwE%LU+6KrH_*}Rn z+q4f2MR8<@Xe@6V%n|~{0(-rb#nTH6ZAOi}T@|_j_|2NJ=rN(>nZ`i&$)vy4$T_+` zW0zYg+vRi!EL>p4kxt+rA)kCZS8@=FK~F4N^ZQt}_wSa3#lkV*4~jV?P$)!b7N)Pr z$zg#ySt{5;Gfy3%lf%<(RyE7$#*RU7iQV*nGIE8)S4nEYWenM3L`h$nS9N9C)zlah z>`SALPSvKKNks47)xJ%0^c{$1 zE_WuU<-6@9eF?Kh!~rD&*_ar^o+IxAzmeoxi4^oqGA`jO44XmusaF<1ro&`qP!0Bd zT<~JD3sSDiUu>}cRVq}*#bvuV9nRjiHj^*JM6P&_tQiEvpYVak9>OD#Y_+{i4hgpWmfqcdQiQ!=C6PK(y;8W!a+>4@wL)m&og#WN*myZ_rW3D-livdue0 zV~;T_Mzj3szrY`GpgJQi#{Md3rvLefzefv702+;6F`52aa(jHX zhrv)b)sM_tL*!s<=bNM<2FvjPvplyS;ftYoqz7gvOrq4d)BZQe1v#lCC#bcSB(|%79@MK* zhztlMP(*3$v$n+9C$qzygI%2?)C<{{kaq_ngbe%QWw}TDxMxjXtVwwz4tL5u;?~I1 zcPQMkl!Ar4v-O?K+tzor_jB3yuJ(}2&Udv-F1y~2>ZHUWu|LDDR1 zFj%mXJ<@{(b8@s(;t7|X0v>k{*vX?nkQOQaofdZ?=I!*KKf?j1(7nA~5?{&X76PTX z>?OC-JpTw)y!C$Os7-u3;;3Zbs|~iGd1^EWuQK-&8T@$KB`$6=L2TvXV9xX{B|n(b z_-K|T$E}`1yRBS&lwChN%e}`rId)gMkBvWsX5I4WfV4d2tww~;BN0g4vp6vFsXds1 zNzhnuHTViJG2?=mWq8;WBPKt>qr>(hI0RfvezYS&4n>OUr$OFO5|Dr7U(K!%Ck8FU zwYT<9w8hp5d@E~s9)JQ8)G%kl#xp=cWM<=}<8R#+@T{WL+lBSMSgWU@KJETMiqAf6$p%F#lKrvQdg@> zxgGd+v`_0^2{h~wzBMc!r$Zfg_0Y!U^z8#E=Pl}~yV&x8>lU4C9XtM^6|G4RR!Hvy zbNfSyrY6b(Slo(Tro=So?{E_mLvQE}+{k4xNX;KGeM!8~z15?!plaehLw0ui|6DB< zXBpz0es&&}q3}D@dN!sc{z4=UXx6HSfv>2T+v5UQMBD*1EKUad7$d**?=!sgdc`mP`y~6m0;KPJEX91IGq zZaqFM+{(vbk3A|OK6adPd<;NY_NSKKs7n!pY>XFOBD5vC)H8%E)+y1x*LJDMT@roj z-WWhZ)6@;8$3)1Tf&(M2$H9cz%gJ#}V`^*As+JQT1V+~Q)2Z5g)OnohVoxFJ+XyP9 zjWV3sffLH&oLrv^;c+G0!3#4pHAnK|-kUXq!p}!G)LYXKcvCk7lB9+h&GgV2DFuk_Hn{xpW6Tm$GFjbv&*Eb`sz4lV75b}h+jUbe#`R&X0!8H& z>(NXj>+)?#4nv@w@Ro1<*m3N8yy_ljmrP>i_bmEikyf>db#MiKgBB+LpeD>^5N1-W zqOZpu1x?&tneJ8+Ur?9v+npm+8uSx=Wz_F+=+V>rjt_&lbn)|p*$6=jm9^JWnVhd- z0>jn=P9F8V=Qz)U1Pe)!rNsuzf&`iAh6HiCFdNKFaIrT1DEhw^x#2Qz5gFez->I%- zwnPJ@{RtR$s-InQj;j9SM-Y3}lWeP*Cu+3nLppcOZ{~;;kGlaFOG_U<&Tt?aA3-UU z5~HvAfq#yK(_9pX!rg{ z=RNdPpgFvPdn#wst7@g6#vh>^7|M%?{DzUCjplhMjuc0ji+0S0Y%b40O2KN)B6%}u z#SzgmCN4r8{2hS@S*lim z(7*&aK%INSgvBBd{~<&3E4rWX2NwgHxyDd+0dxwF18^&+?;tSv1)hWtGZXIQ53O|C_5o35tuNsnzA<_46_W&B{ z4HHN;BQx~&80sPhcqQt#L|qu%h>Zh{K;5=mD`-X3W$X?A&fI(|?OX_?p~HZm>9lJj zz5tFYoO>jftx2!UTM;rU8>cIGRr(!w8I9dcfEiv}52cOJXC8rB(u3irK+lPflbDIJ zwqrPSs7X7R zSS;|UvAB`?G{xwsLolb&N$|Bww03k3?IHP+Dq~P?mNZc_OXo+?4d!rB%b`dn>s#%uH0Yu;SXZ@f02o%j+r zH}V^=&1WC?%@Tj?o7d*EhBZ`A`}k!3#%ojH)cBicyzz-uogTk=)*GMr=FIrb^WONx zH_wgVeBK+M_~zXB%?sZ6#5d>1Z(j7qC%(Bbe)EzyKJm@P@tc>u@riG)cylS=cx~Ri z;?3p!#%uH0HE)*l8?Vi0uX=Mezwz39_L?`>^Bb?tXD7s~8~Kgb=ChCcW{E#`)NAwE z)83rSZ@f02J>$)({KjkZ*|Xl9&TqUnpFQu*nf%6U^V#RUc`m>4+I;qcH|O#jugzyK zdUHO%@!EX$k~bIf8?Vi0@|h&7E{=Z_+~}Epl#;!%|^!> zHbQB9%d)bRU!1cM4g@VEw@;@SF#4UG}QX4&OG*`nn(0O9B8pk3RXaqf7Pq%TGR)^Vc3Z zmd4)yUl)oa1w%Pd9Emf~nQpcMM~HZFq@p$AbYb}je>`34=v3Z)U~xz`9{$IwBRG}} z-bmcc=N`%0>pt1IAp!2sVx8a@Rv)_$hr{f!7n@}3$YSOP#HyI-b1|0NiDpV;!w=Po z?NS|&Nzu84bGM_*mcPqmPk=U0SeL86F?-4-JXlXuQ^b_DW5avLT`nJ?n=Ws?e zI8eNsUL&jwq{4~HSI<#nJUBHr{Qf_l_Zxz&+-I79Vn#;%RV0OQBCr=@NQ4&=#Sw$U z4g`kyPZ^=IkF!QvcuFIYHH~pl43M4bzf7HaSpyD~3^zs_B2{$asuh!ins&vx>I%4QIR4JSu$^ZI8nV;Y&7u=)npE)$-?68r z&4FFh;0!~yZrr7$+AsB+`fL+G!{y2=;tR!1|8>OC85SysT_VTK%E>~$ndgmgZ$B=~ zBRXP}di+j2ta1!%^OT05Jo?2DsA4!F;p@0a>)E84q@!EuN%eWm-JC<(-~B(>9x0~? z*0Fh1Qf9FzFpY#vlpDVTFTyb% zNI?hjU9h;3mNsl6wNzbb%Gd2Q4LfKDw<(Pg5HE)}g9Q=_vuNld1Q{{=KOM+>rH!+i zk6vjHuq*1R0B@7dAF)?4X9PvYoJ9;ztTNneT^!XU+A#lhT{A&A%nm>}(+r8Vx6vIC z&a-1`?{3UWJw45o03W{dC=A91&pa~(fPrkLChvkFMr6Quo?=ufs;XW@E^)7Z+nI=yl^fA^5R$8126 zi6fHC#k;^Vn5!kckx}`p+kb6hxby6B#Nf`OyH6f{z4g>+U)e_nD_)ZgS2^UG+|IwpQqRt#?H?+4 zJ_Thriq8D-=YQP$CDo?qPcW~reXnHX^iFQ5}}i! zEMb&h0s?dn6-g8IwKib-%%6ke?fyr>CR3`vFUH~E@nay8{Dq0f%hz0Je=u=x>mX?D zSvD6}fR{1;D(f6f7bAO+lAXh?_odVZ>T}gk)NLq**s%9LE-G5_@~oBg`hSGzJKTDr zGV6Uaaxwe~q}z7K1GFd0$)j*a60FD>Rl8Is72HwPuboF*PGgCwb7fU*8!K0SqQ+pPFrZQ;I81R3RuOnkcBl>ILkVj@c;6N_0>rrcCeU8?f zdnXSS73EeIrAEiJhXy?@-NwfagrVlHTmn{I^q-n`a-_kiBHYw9o8u#bp8dM+cojRQ zB6d3V5V1ym^dF%~E`zA9P$REgp+;2cvebLTC1e?Tn{1kidVA}MceVC01Gft1Ka0e` zDI)E6q`JxeYg^%bU=P>=U#OO^eH8#I^0QF$NWfQXGoskTDn^0>#xFqHH+CRB(ucof38! z?W1nC>FQ)+B?}K#X;74el|YRLJDf{wa89T|&0rua;q>5WD29Bj9gJgb29jnwO&sjV zAJ6fD`Y*TO4oExWYHKBGM6TZ0V>X)33*_=?yGhKM37=nEz0z5OUa0`Z|5+z5Y#vFhR(G7~XwaoO{-rq{!uPVjP-%inO z69iyA=`W8E!4blHFYEXd&7Y`@yf~LFgQ597= z%1?t$bSh3_q9C+Gqf6M{^cUoY`cP!J7+}F8G#K!TN+4J+NIzA7)QyJ@LB~h#MX|PE z;ym#cEfU}Acn}%!)vrAHz4I zEQwgND-BXdyV^p>5cXDj6hD&-l5vz$|0qXe9L0CUVdvIr0^w?!bk~3zx`ES^#UJU4 z9)Q(46RG_LYv^3q&h%Z-z~+aW%gN7vc-SvDe?Rh-(c2fAtgG!twJ|3Y?tZrHAD#Kg zhX;MTlObxkGzNNSP#20s4i^g1RGqs3HJtfZ83FzFnai1j`XdPRd44#Oo8z5zsS$zt z0hEtx8EFrM%CXo0=-0!ZjyImM1T$lR#ItZodyt}Rt^K+Gwtftnj`un0Dj_I z0(f0&1aP0c1%RJ||JVe~Y-Na^YGqYu~~!)JuKQfItW35kUG+&&9;lz^YZ zVYvju;!CuR>ZOzhClr+%bW#QBRXh7K#E+R@y~Gv!UiV?-B!oR)M-``up-bFctCthc z&5L3%hUFTTr27i3^UbY zX+B0JvX;DhjM$NR0=mzqo~tb~UBqV8VV2xj?Gr@nU|g9?4kwT`y?e_f&DwBmi8(J| zxgj3a+Co0SHVwPWs-R={ix+BPh#i?cYaB31rwIK4+@w>cPfVnMYh>I73{m=&#aS^D za+3@tKSdJ^@uet>>X2wegCLVaf>Pm22rcfc`%-dG8+^Mg)}X;(4(!ok&8|Lvi#s?2 zqd;{TKPH>?DY;ZA-|aZH1-hLq&a%3!=H~koAmk;BgZe2&7}j@e8N&H~@+-g^)a+Eh z$q!rMCv{^ar{9)pd@16`>n6tJoF6)@8HjwxVqwD1}QY)0NQu7Kf|X5gWKnV$!+x<7^s3lUKrrh+MY zG(M_VV3aw6LBuVzd`5_S?(a94_Qe`;0sb{Xx)On}iNMS0`ATGdzQ)NE(j9nkMpU9l z&!`qt(`nJtL^?b>(;i4u2MRX}290U{TMO#1Pz7N&p~Y6$!oZ>jDUl1R0l6z)+yi1h-IM)G?A59G86nW^ z>e*iY;Kg{Fs=3g7ks5fpS2u9EuBL9_m9b*WtBPH2`gJAxW#x6bi^&vB{3p@@e9{Ep zr#lbzKWQ?<>SBn-%%BiL>2dUWj**wKbEH$9X(T8RJcw3w2MHKYqPBz$?~hQ3PJc@Z zQC(`J5c%XSC`2!R3kp$G{cTf-PTs5r+CtsfNCU0T)d2QK0QkbU1mL>V2*5sh3jkhL z#lK1SNL2l81Mt(oe3L3Z@eCUS_{AE){s;iS{4D{vE;RzMPu>E6pJg~VYePlV-!=eW zxp@F{KsW4jJsYaJTm#r20pP3O5`gPcBLMs4EdcnM0RCwE=B(7H``ZTL>%Vf-D13cG z2$!ULzJqMgBuzI+qgCy9F5);;rCo6A+wLISSNuA12i_-K9ezXF9Yj_0(Svu8oTgR1 z+gDJ`_^Xp}`y;%g1TRlDq5w(xfh0LP?v6xUC`PX*7jT{R<2AgXX>TS6;{1Y0;HFYs zuUCHi_v<6xkVE_)Xa3BFkqe5cX1QWt8Tfien~Z$J(i`W2kCI4crr(toB#()2VcjY#ft4{v!rFF)p9T}yYEc@FngWQnrHg|wL2?`pbmX)rvG;KWG;Utyi}~i_$%!D>J@&` zP+W6w%dQ(Ox}5Mji*8?#&rf}o8bjlF9?k9rRerX&J*!U1{i|MI{JpP&V%PbpG4&c( z9zNSa$#j92-{-shzTq!$g}8b}y^$b3=M;7n=2?01)WCIXxn5VOMFFNI5#H<>t`;pQdmgLZD=CI6j81LD= z74x@0hRys<)bpp7tS_Py^GKvzdNaoYkQHMpO;ngXP6w073ACi?E8@)Uty)$S$ws%I zOl+EY4q_gg`FlL`1OK6)a1aFhjKp91F`0CIyv;;uRhRz(t9SdVO}v_9+oar;`H;px?8_u|emAAmm49tz-G>$VY#6kO11pXWogSaD{q|7lJ?ZdWP9Mmd%EM6?+0 zU=79VFq5=*GdiD=zMTe}l0z{}!F9iRss84zz$H@=7?#K@VO7OO-&V%3ifz6@P|3o< z!7|f_ZRtLWC4T)UV4oN)7K-$GBgFVHp97&kwcQd^X_=WqxZJMFb-TvBKlDRfYCcy z@m(?4r>nw#1$v!H{p!@JO_aPu$aPb_Hp{26|MoPy8o}29#IJU|F~B1HDa-8yQ$hlJ?itTu{6|)93}{Axm=o|u$_fVs ze0iNVV~By4n-SEsvDr$t%ltf5-hbalh6)i9cG4;d)0pD|BUKm00Y^|kh)3kfc0qd} zvv>hSj$5My_?1X|B@)7@NVV*wfJ8V){gsgF5?ti@2z?PPix89OEI8ZJ6r*|)m9Y+5 zT@4I85uzQW0<%S`2BpNySZ2jBS3P|eVRqsfIM7dTVM6pNiLW7I8;rY3nxthrCdNf& z32#VH&>QGbk~uk*ox{Pp9!ktNu;CTg4TBVLN`-D!EeH0|%4)0**DmWBsilmY3zXj_ zZX@Y>C8G9`wxGQ7Jz- zh&OXkQsfHe)$XJRjccAONti%sbt29dcypa7k!=J7841L&x?C6)heD+u zrT#F8CfUx@U%+lN*-o|mFJb?;S0{X++V|UwY!vCaQREzHijvtz!jxq1q4j|_*kIaZ zuB72AgAWJ8(5%}O&U6>e3Cd;M&i6OQTk~NmFtV~DRzW2f-DYH@g*AwJ&r%kUeghLN8%Xn8lZmEK zx{I4I(R$_P#zcz)H|A_S1Xr!%?`8hOL?bRym_wYX_FZ{SdNQ|7XuvLsD$9y`7gY@H zK5V~NanP?c(Yjd0X(1AnUSXo4=*T2@!=2PnG|?t8(I!@!XcL%d$uK+IA|~(+O*FzH zG|_tVGni;-E!jk)Mkx)`yk0`$>#>gF%w z&n6nIa{&nlCt?|@Cq+*r6K!J5L|f1wGFh8w=uaz5v@lxV)I@U*!$hm+umtQVFKm?+ zSsD|Kl}}CVY@&71gMul%3bdI=q;@vZFhIgYGdmA5lBsqQi2`p-G^G|V^LallHy@{& zpIR~V_smbBz0Dy!jwcN*9) z^&TP`aHVYq@eTJ#X1mT3L=Kr{<7@`dB;#zRHqOdDM+?3?+I~N{x9cpcR>?1dnf5(A z;c_InGd~PU=kmSv{SV0GdGP+s=Vy``cXYzxhPyHFBlj-gWnklV@|HJt9JWLx?_O=k zt@q8%+HsN^XqaelBReir-2{qW=;N4k6SX-Ph+ms?-e}Hw#m47!l-isF`D=3y&zF;g z6sa`ljAPK8yWlmObLTS#e%>pq)#r2!nT}~{%%qzO3y5eZ6Pkoc$6-4cU@m>@WY|ci2xWXh&;f~tG>q_q){xLG~x>cm0BED;KPUwrct2VG!zqv9kJP87ci7biB_872dF zekGOIOq%7Z5n)$7O_%5E4{!+PK4FXni%rJZIv@yRtm&)9m^T<>-DHe~HG95Ddg15M z9yP{tl8D3$Gt!*=U|9!^M1as>D#jYTbjOQzA8=)-qvXiP+90}ZcL*hg^ zTZubCoMS`?g8Uv%3gvAx)9X&mdn1D)pFz9p;dn7C5w5m}LN`frxt>iL_e(*Au_G~K z?7*5b2u5?B!2b%1+<2Lse2_pXFA`kuLO^-qi|GCNFsx7j>WS}0Gi7X;DbV*5LzN5t z#jfBNPGIWwn!co_v4bRr70pIBL9kIbqj&4~X7pWd$lkP30qBiZ!$8p$XSPp zh(QqOul8aeG_@Rh1pkPbSV=`P2c5ZI(<4H`V$jgm3$E*@fnTD;Uyv)@hBF>w^XMz* zy9-%CiSP6DAOOlah3jZ+(GPc3*bj6xwI158Ax_OC8pU!+?ARzMEiCG12MVJw!DFn# zxJ_tF7R2Z^nnj`a zr4?!x)1Jt-?*1;-poO!lUvH=efuVet)S!j`Y-$km!iqyH4W*Ta5?&X5FsQ*ToG&E) z4ChNy;zZJOli_`-lc#QM&wX*R(|>aABgKcY=$4H)+7FKcdr-?AL9@fH1@z7#XVs7t*saB(SdMkX=tiuw>G(yM?;&? zzWmGmW3&_N`JKz4-|E)niw>m(mK1(xPu>~xJ0s1e?7a*}-}4H9b>@bn*QP;r2kWM#?N0)A((DoA9Ut!u_ZjOt6JK}Jotd7R zoal8sMY{#}V!M~y{Ro^3+j}&FrRfKz#e=x&JDH`m101XOm+`ifB*Swuiw~MpYAD-p5pKf>0R^Rk?Yr0*S zt$y^m(Oa_S{S$8&(%YT0)#t`;cg$A5>Fu`kc6-{I$L>-h@X)(D^NV}H)*g2#GoATc z=eEMBA57lgZe0`&2C%!xo1xzSDg00X`>y%E_9LS-p>DTsIe*V$B0xwj<}T(pu$nzh zBY7~RSF0L9?IUICBZD1B+k-v2%om%Y87#Rdi;Sy_^2DM$DY~exy|*cv0i27XbF41P zlD9?oQFO1XO-$bR&0~Y>)NnSY`?)OcLcD(QB2VJzMP2DL0k0ZIhu}-Zu|8t(HwkUw zE}&6VkL`@VJm%jD<3YrHsWU`3(0VsO~8r1uOl~r z$2cp)0%y^bz!euw^B9AL_0JkGlK$mjkpPg&okPtTU#izWJ+{)&F&|u!GlH{>kYHBV z*8te!(^7hSb#dfFQ`}s^f_!E1z}|<4vlcH_7YDXYaXhOwNcwJkiHdqI-C?BP(7Bkh z@MI%a$ z*+EZ1SqTpOb;;t-a9SShd}z2$rqzL?Gf&;M1rHRDC9(Mk_&z?*>y_`VUmm}+Y^avV z8@E5PetCLoc@6gwo_%wj{!gwgFORtOO$$z~Ur;S!)Z&^EXA*miAhGD+CRyY3%Bo-; zyp!RG^Xb>r;B^P9US5g2z-dyHyY4XO5CKOi2e^(q){zPmz@PDY%XfE-YAG%QJarc;o~o$daF4)h#_rr&c9k&$4v12H0PmY=8~Wuw@H@7(fTe0d$V+ zeZl7dEr1WO1Nf+}=X}oO#3TUR=e*yQPr?D{0emJQfY0Ow(6JQ**!$v$gEdeN#gWmt zD6kgBh(|XdrIkw&D8UcZ9s_jNUo_)lj^^qq!Y&FE3hfjt$)dUJflT*T)8^=!m zWLfNda?-WAGwiU%lH<*37Hix6Ph=1AScKz|#Q#snHi*KF5w5p^)$X#umfF-UI^CWV z9*dXm5{Uj0m1z=}Lc5LR2j&HU0%9#A>`~0p6ekx5#McTFK<(1U!qM{N+2N!+PiV%N zB`#A;^dv4r77vM!(ozRwG$bO@!1`m|YypCtWGG1eKvy2JwJ9Vs`+y2Rx~(jZvWx!! zcgBnwwZ!mURGcAIS-UvWi9rWUii&N6{eL5KWrIAct$Y##!ytu59b)HRyLZ}C0ehYX zQ{a#{_Fy{g6LN)z@E8hvc+6Pg=_vdNa)*u5A&(DnRAI;y;?k!2zYIq;)jo{bosxjK zjn#L6%`AjHSgSeg;`~aX9Q-!U`Hf$Xn3}^=IwC_#d|)`R3s2FZs9Ko}o45_6(RF~p zi3-w8)f36EnQ?0<2;As@DuQJX31qvK;T(kzq-jQ~GwBHnZp)zo!Cu``Lc+9|1CBCf zxuQ74UCNinY}kSFj&OYP3!lZEzD+aZS*UliFx(kUO-9#vApA4GKhqu(cj=}u`p21^ zsGN~5F09LE(RT|}H^6}5+q>Ik-FxIcDwxus8fGwgR*;i7D2OY3L#~H|aRQrc&WpG!yR?l4jGV@_xA1ihL(+wZf<}+Sj z{qpbeT8`tcD#d^_!@joAo!HOjFAy|~2GC5~T0G}D#GY{9rFHJsp(z%My)1F?c7C~J)Qs)0mzOe5s;u~Sro?CI7_J!2A>YT8CKmi>3Z6=MFJ zF<8a;jM4sh55&3WFg@aNGijdYgzTY$keye@QrxV!JOT1evvzoDwNf>f`ol%YdW%`@ID|R+82fsVn zTs<>B4*-0RA3oEbMINxOPp5mj>PQVY_1L3>$#M_#!%{dBE|N5roM`tuPK2Rud9c_Q zFFV+j-l=JZ!clXs*c+NdG|As)ooJ6-RLuwu*86PP{_N56N2F8f97jWf_`v+%IzPn$7%+ zfW_(da4V7^jdIijdwRy)NL&fGBI21ZLeI3Wq&2X~22*!il@cEndAm!#<2ZHM28Dpu zpHJY+-+gkpcXdv_eb&!W-PN6>281Ps{5gaMv2b>{6-Es?y> zWu@cQy$=uP9vW^z_+jue9)7hLROIfH+LUt>C7-ZvV9fV{kN~}Mt4y_1?LWph7n=l8 z4Imx*>2}s@Lh$_LPA3>2je{M}LpXFms9hb#*5S2_R*V5~k(-Gw4%aK8{~*bZ+xTqZ z@5PAb9T8(c)G|c9_1}Tg6NJ=|A8su9ZhXo|hg+>)X^yPp!!2gpVS?sSh>tK*^x;k! zc{2+X9^D?KYvd6^nJM!hK5sQVFpl5h5AifY6qU~7)#StcoZ@H$9*`nYCq&1DPInq$ z6<-a7!z@QQPE;wkXr$%k2o!3?r@-+t6V)aX_v~>qdNuiXQL_IICloydwc!HrxMxqb z?*CMzNiHMJpzCl4uyZG%YJcyi_34NDzj%v5g-6dD4}xT7AGd}L3-ua_F1nzRvmRN_ zafpt4v0^AYt0xh~%!a-bbk_OE$^$s@#<)U?g5--i0Lum`^jWTa1u8K}mR7`|oVF6; zI6K^R92DDN(p3>i=6Hh3sgt%#ZGU*!w$=#h{zPRCkK*W@z1cHxFTXx)|YkCf$XaV%>8})wqM+G!)kc ziwwb>y`+rRHqa}z7+e zIdTkGCz}Kljt6&+j1+819^6(xNPC#A3H1t_SH*%1b_TB0otHoca7n?ZLhwx;ix_ZW=sso^9#NLPD&8SiBfpaU_W?{&9 z1dSS@k`vqR7j>rM6wpcVvx~+2lbvu9uwW`vjHOXCZh&Ib8cM7iB!2i-|90e^m<#YZ z;)|Ntv1=M!?BTV zV#luCi~EMmi({47eVz?ru)dToJ`lW zo;*Dg5#D#!c`TmJHQq)FkU7;nV#^s5Gy(=yueHWAmpsOkSAoav zh5nfre(v}A^&x)ovHgioq$A-YR=??9b>apTPYpS|G*Fr=&O{z-lShCLu4s0}9NRS6 zO8*0&jm{nRBI;{YE2xxqs@^q^x}9oO2ar(I4C1l1?pF6&T`OzFQ7hp|c=!QIuX@mVv;~N8qNT=G0+`2wXzMKNwe*$~pnq|D)0jNWbE3K6 z6s+bl+IwOXY~5(`7#Pe%VH!BU{D&)W9tE<)A*Y1BzZuLxH@^AL2(zLYM#`5B%uEV> zGcZF2t_L$73$y+#8zkVRu58nFrP)f*9ZH}(Fb2BmHvrw4|2Pi1zZwu@v-C|tj6E{z zL5#;jY||`a0jz8rSJA;nSq-uM31a0K#7I@JA+lY%{#OrTZvMC#9Al|)J&5sGh|Rg# zqM86=!FF(Gufnmt31SOl5F`2Mh7eo6`d1HPoUw6J5Sv*aVmuaNY)>J6XcCB_!e}I| zhS>H5F_P>z3{A^_BZhYAkN)aG%;XO@gJU?t*26I#3$dwLkgJ*kVxgg6Ev~{bH|8J$ zrp6$K+h9Y8UAP$>!{zEy)SGgCxVMxQ;&NPqAvMzKY!;V=;wwr99;leUAO!%oEmm!n<2M6YrAk`)S;FZIc2WU1FkD`#A*MV2K{ zuCYDV?6~~V#iIY@tOnbuw5qFSx86ThH#TB7J3@g8OGwq}Q{;vJS9=C+I-Hj9vz3_pSeEsmQQ2?O?iv_QtX~!wMlTsZd9XDq(D})D>4F_IqSd-MoCFc@ z+wgiWtySk2A~wT{3CEq_2mSE+P-S$d(|MA=J38T1-()9FQ^gEIhr`IAlVgE{^KG3)#(#kzds&7Y>s?s@#}#o=aW zFF-SAV1xfRkYIo2sfF4LsD<>t&=~N`PSUq z$PZmk{q)fdXy)e*}#cNyN=F&|KizL7Y%%rmGN0{w*EC!t|yoTkK;w;Bk={i zK4I{R5}!y(_{XbCB|c$Ahgq$hXCd%#>#G=DIOR6YuMSAxO3by9<(taw50VH4&ob$` z?wa3H?r1`sTd-O)JqOb9HwEA5R3TCv&%m0~BB zGo+$|SR)-u1pM*s#qp8{I~VYUUV^dfLXVIz{?Y_f8VIcKgeT+lWA48Zeb~u&_~7zb zp-)5~|L3;rFR_-GxYHfQ56Cj&yg*|@%Hr*>qyO(7}EF9K+DLlRx#GIKnf>~bTvEzW(%Z1vJ-h|iufEWfQAj#3a`2*&w^xxdCT z2K6zg33nul{{IWN3(VM=FoVExTy`N5wpUlIZj0gGZJ!dnytVq&Z`L8;ZM`L|arUd1 zQ?v0MUV?-zxi9s@u{OUR%h6yXZ3jPLF>tWMWCA!hs$aIUO{r0{W&}D%U%ye83sC_7 zft#l|@p;PqbIZ-8auMR*2&<+XBM)|qJCpEs9FW@sug_R=YbqHr?M=z1rv@~r7wo2| z+x1qY{S5!uk~66!)s6MFDTxXYCHGKrn~s33(dLg@ayFHux^+qtDXtX^3ZRx$OJmt_Z+HJTlMUDJfrF(E43%18+RV{oX*WpJs1Iv6KI8YfxL?S z-`dTrR=Ib9M{~1P9%kHP31oQ1Eqeqq;Nuq8ZJxilotmxw$d1RBfe;a*oFeF|O;M=S1u_?ri8v_zdS#c&Z(Y|k3YZCC(8icc)BC?{!oge{A2ORwt zXG2!TRV}p*>Y6U6TuVc28b3$KRtlnvd)G9O9?g5UxJ^N(>7GUfbqMI(b34cA z#En&r>%>c#F{Y;mZA$qt$7r}_f2m6_Ni`5^ih9#eZ8!arP%sasnPoSBW*mTq!HE>e znowb-whiF3ur`ZNU`j(EUxuWDeb^zq;QX!myHE7it&$P(WK2frX%Fs+i!it+Q%nBl zjy#iGb23sQVr8VT)%S5B9`->l7%Jb(1+ztd%F@yIaGALs0UaFl-CVHP@8m*Y@oijS z$FlKliODhnGFezQ%r&t-7Tz;M@2XcO)(c-&z2a~9akHWnM=n8mF**IOZi_QvR?z0z=vn3FoiL`on z=YFM!4%Nc5NyI!EG7k*5SER(*#G?zLpbkoYk|hTe9Sr!%ff)YWZG#Jl`)GI4qOHNu z%hX_N=Sb1~D`A)VeYbK@1p4@pU2uDT7OSv=A51Y1n=rd-LQ5gKcz-@HZCUw-XNM5{SM4Ca}8pvuKBL z=qrWpV?!So7X;An9v{5TPp5KeHkd_8R!*sH9wt!{Wm!FQZd5`0{)o}&RnIpMiRQk& zco?j1c|wVcM1`4boL7u!XY$f7#7v6#lBfrsIn#Pl3!Sb^tG}STsD@;%K)ZDhzJe&? zG16-*y|$*(H5Edhsb350*0A(3v+-P*W@IIApe)O8f=cj?ScR7g^=^+t92{Ay5b z+$VO)uUEx|w_F8zy4J$=N+P>Af(m>x!S&F(9eC}{YnVwj5c~j@JO<|Mmr!AY?M145 zqiJ7$)6uPBD$G`9C}&aKN_1?c9*x9AX z)`!r@2}wEJGP*IzT%uh<=8}uKmbpX+Ip$K)8}fNf#C8peJW?W%jprnSktl(X&zdp4 z>iQRI5gm#4l#oY}=>Q`ThaHMe4!%k# z(au^@z_HI^SCXH>p0(=hZWQ5@)Ec5N1I+=#bDp z=t6Frx|<@<9y)FfeAGGqC=`cI$ZtAKAXJ0rY-lV#!X|V&+%eAHX#3aOPYw4Uo%)dz z<^B^1;B3k-`vG0}2)s%*zAHW~`(vdnb7GdV#fqWg_n#f?1CDc+qO;Y-pJOzk z&Te5=amnCUB`JbzMWu9E+M=F8J4;vfc5Wt-V|p-q`}h ztC@taND=Xs3;3#mIHJeIwnLCS!n-6$;OZpG2~`;4-Otlgzp_T>bQt5EiX2AcEpOCh zYA2esA+|>yq6LV_hA#c`n>7@1yon(Ae#x~q!ofc|Bx`A**>+(f<+vG>BE=DDg`BOO zVP7a!%N@;~r{ShK-Z>epU7Zh|%h^ASgQ8uLDi;lpA84)o=wERc9Qf6)II1wcNrszm z+SSK9Ixq%1QhO&mX_r4PdQqwg&g*Ny{_x*_^2aA`Z;`C{WzJy|d;Q^#;OZrQ zfWlSeMRsmZ8jE|?Z%8sc=(%8MN}T;I2RQz(DT?sy6uma;p_QeRR$MEkp_H3c{flK| z9}!hw(Xirxi>5sn51zP)GlB)LU;T<{QN9E{9VqVA7K5PDTfT66Cv{@4`e*xqBeSh@ zMs+g1-ow^lN`*-uky)ur>3|ke)H#tM)jf7mlCTGG+VAC(4q?6*TB`ZS=s*(saJcoo zxTLGs?BNbRf94DPc=|<7!wdG&U8lx$2J^k}uWZFX$S(#ucAyEqgOe~qCE2T;e5xO) zLrRxC3HYORY*#OR%1vY^`I+X(;80S02Tot}x?JcPVa|pVc^}_09wMDjSIs6IJH2C# zhiXn)W2%mLFd#f7$o(`tTC6RJ2D!Rk1}(RjmQ-PG$P)RO9o(mRY}ZxYdER@@z3;wv->;+JPruK*7DP_lgOYe+$GEC>R0!O#yJFrhseFx3G&_Mueo;2_^5ePW}z zu=i9pm=t7&OPfKM#v;P%QRkt?BFELfkW1QDCZkifAK>kwp5a3Zllbkq=){7odg2en zfX}K5NW6OBiwzsboz6{8E=Y5V$BPq*4R=>z!}X^_Hmp0rhMh^6I7U$%_HnUcg|$Et z=FBkAc;X8|*6J32pZX-c?Rzy{V6ce|%Qhz76>OL~#fJH_5gVhMna5-`6^~)VX#2s2 z=R8piQm|oc1~nV*4w+^**l_oXY#1048~)ZQAS8ixu;KeZRkPvMYHZkWw_(H4mEpNk zjPTi z4}R%ut-Y-lOE15V4}ah>fHAFSD9R1|VO<|Kxu7bD-5xesb#)8(9zH(p33_JOc)z;D zkJN;zW-wRIl(Ui)x(D6~b2!5)r!a7)aEl8j{j-Q&idE*Y1(uB_vwv2dVwQ=Cad-ki znP=<$)1-|)S7(U^iGuAEEW**EIhy~5iEmIO??NhCl${W zjv7fIhsTklaF+w`qI=jxKv3?43_`26dC8Tc5}Ogcn-CL1+!$kMih6?svHwy!lXlOt z9ZoqhS$7L)26yzRWRixLZ`d%R^K6t*|?v1`2EBKcEj-4oa?ja+_j)XK)S z@C}x&WBEXw5)suTvDhn>XO}}t{ZoFxw%TRTdDN~*&aa|Il8?`3G74k%5jZz+;TP5) z783?ENGG*-9t#1PsXKr-+Z_`0 zxxOgc`!hhHN$qSFLT@a&?0q>8;R=!GM8KE4etC0Sy>cswE;1YXRl&%m8fB7&1X_J8u@u}}R;QY4!9 zmJkvU`u!eqOLfot`SA>QtZ-E4|2>QRjnskk_B0}P^$Vmt%-|AFIw+IBNIXREe*#RXq_xOk|Jp!PQWZC|*fY)+?Polwd76_e`W)IjZW5$6= zS#dDKP1=N(o6cg3`6@pxZTQgU;?p}RvM^{p(RNIWy|rGV>a4BM8e#?Qh&8*`VBLd} zTEz;L33z!`!P%RtK-;Ma^o;4RY|HlC-SIxqZj<&mahH0tCa5H!Sd4fiD3NiX2ZBNp zF&c_iW33f%TrCpd7mJO4?bU^j5kWlI>4ikLkxYAdzQaTV*lMZNwB3Wju1)!s+bc$L zFUeYq&m?W@R_b7E3H;j67tkVU4+w^132H0IQExqowL^mWIRyFLTsh7{xl<$zE%vz{ zVREzXjXr_=xPF)%`pI%<5f;^NU1Z}s}nU&$e%DwQ%3RP!|H-#HMxx>S0c&SX`=2 z+T98QA5VJrY3td#^H?^(T5^o165k%smEZU0Vje&OKqt6YZT1Y{8I?K4l!G_@^b%Jk z*W!#gZE(aM#Q!?uek$LesAlAv0!A%{wAK9a+!?g!pfpRs5NQQwgor=&+$X%J)pF;2 z{9C(P=NruUzVW7~{Mc4*P48`k7CBA{#*n^)^|Y{HaN3kcA>IFNepSEVt>M4#E%VXD z{l3HD>4~ebeEQBQXv<3xO_}yMAu5;kL;X0BgZ04G_3(;nvz8;1Sn-nzJ*tk zD_AhpNAePCyOw&?_!dY9&=lk0}{CC2E?!Oqn!xzeyme`3RXtk8yqWKLCqWSP4U5v zUQ93h{cn(|73lT77ux0Df59kWvIcUl2Oy^H)+E_Iq%?yL+j|!%Cl>?iS<=kNrsz2# zBNM5kc#+}UrgH_s;lrK97t)=#^HEXGHeX~fYTwg&aeE2dJ}+-REUP!Q&T3*SUCTOYB@9!Lzt>ngOz?Ta3Q$MX>7PGeFf8OFi#d&a_;A_FDqZad|A`MhNV zO`e_V?P{;%_VC9kBktTmP~j*hFbt1+5#2_K#UBbsDH@c(JUCg;Qs?8kLMiH_C|AIw z*>3(M0{ICK!=~XdV8S28k=03FEH`;@G$*djkLDVUz1h9;)N0=4DJSW zu+&M-@^Y`<_x$AC$`IZzIrArCarLgip7J&;K~g=!tO~{Nv24IBM@FV2j;39J3}}sa zf61-UFMoI0msWD9>rB45r_70`bU37ragxERrWn`6tt-}K1D9)h0X5ArGl8kAeRdEn zdVag?v%c)D!?ihcVlc%mTfqVkeQ7TF!|0_@;a4meKP^eYCqodJp*dv5pMB_u$|(&o z%h5cwYE6%|sr;TBbx@IG3^+O@EB9bX)Rn{@7j#8eJFhEJ)ib)j0L?~M0u+;6tE4G-PMqdg|1!FLhx&IbpK*DKc^zp@*d+CzSpj(9?NEE+8SUy8D<33ctZoVW zD)+R!+={5!*1#_hKh)4cV&79K-B!M+XlW8M<-FWNQ?Xir6htkJtjwhM6!uuqbNVFS zcIL-w-sZqmx)q(RyCZ>sekeC)@tb}31nx&;`_Xd2BAyQ`*XoZ%zzeRqIg;MO7`G!? zOTCaXO=~cUPxV81#Rl_LLMI~?EiBLA5K{j;o1l8}C=?3;BO*AT9SYA+(w{lg%mg0> z9*2|awa7bp4k{_Nc^)J~lKy4MAB_0WI!mf&xG#d>FQia>VS;g?muKC{xc6DflE~Y| z&(3NaI$)VGH}1NNZR!4PAtmbaU<&pF_tjJR4h1rFhn3%~O%w z!%H>E;iqeX$hMPY=yXGXznEjW7~@uvA-Gv38Oy0R9xO@fWgp=>t6A%vW_U8)i;NC) z62-geR&oewl7Psv_>b(Y@cJj2T*RVfz>=Ft+Z2AQ2oi{1VvWnq@N2JrS#|jgM-mtf z9rZ$G=t<9xb){GR^0sVexSE&h?V4pvK}+JTs~o8^!N_ASk>rEBnR7dOac)O%ZRd8J zY@6)Z9TW$(Wj+Zmh1vT2ZTihSD-THFJ}Q{=B#W+64M>;bcQO1JY7!$jfOv!|X3G?s zlcogP8>NlRiAf09Y5*M>9;o8zt+L~eIf49DbPQk6k+wUA@k58jD57x~`Ngar%OXD| zSfyz3!yhT=crI1(VJ*SXg{(MRj<7oT;NE#Tc9|IS)cQ`M{ zdiyFPZ$vThiJrpun%4(0kEn5j=sA3ME$9&wm{jh^0)@Y~VResf$#PSHW< z89POXj%tlcq?BvVQas1vGeYYzA_lhxVAW%En62Yqjhrd4yeX?UIGbM0pmaAI9=efNlZ{ZY+Ayl0$Nsa5SvbL({=JJG92&%hMj8muf>Ah7$#kSxJfhg3FGy zI56k_`}d~=6gmI~>uReP6;>B5=mwUfca}qBE$;8goS8y_6{{GV{N}9)yhTl`28ID8 zZO&>zd$FX=|H4;@z|98;@o#x?`wf*|O)8q)leLPLXKe;=O1f58={xC6&wPrpQzNe- z{Wh1^;f_bosW1#|M`5a4=X%6Bo3T5j9Z=)}#qI<9C)P^W``ELl>rrimW|Kh@k6%k8 z;SAdCK&^#x_k&o8)?*^tiaBV5j#MvEhJf{b;{zgpbaYbc0l zk7x@oYQI4mn)Y^-(+xh#8*|X4MOATGsO+*uxwGC#_6-)}G*YZr5{Le)5!#G^97F@L z>2kRI#-Q9qeMpNK&g$VoQb1kvxCn)~ZuVxc4fzz$73yTDYOhFjUG$K8?eChMziLT#Pp7xO$hHc$2g;X@*IUA8KV+s>&V~ z6V48*+Mr+~sftp|67g$EM3(R_bR&84k$DB{(>XU>>T_;{iKOl05wn=llWM;~ z<^d<(Mlf29(P%15m>g$nRuacWs@I4x80irj4+*KES!Aj{a}BYoKwg3&$$c2i0+xCmV!yhH_|-!KtJ-&tp5UD!s@!ZN0A?8eQvTPUUEBkZ|6=vpHY@(d7@TDJHGG|BWP?p50m9U;>7 zVevYWmm9OxkUN^ZgK7!qX>9Ku+1{1p6x;i(ZSM-`4wv;DrJ0Ch(N~zUrI^ZMpX;lf z09n48^H-Z@BbZuRpu=w9q7J*kGkgIw%4K|BSNQ!oT^T?}-mnax)$h%yB)VcXb_CA0 zAIu)t?=9(^3*?%|^c#EcDP6IyKdLLfIStd^?2a(%-5&EV1)>*) z$lE#I-D2Zs@u&$&d-oyg3Ohw!a0%;~R#69{EQRWPSxG}%PjlmUvncB5Zb~5(A>XtPs z+!>8(*pxD}^lU~?ep%;QQ zE0xSQgtH(EZb40>suG?MRHZL%&31&Ubgt!8q}l$<{S#5PY{hNm5)qX9!Oos9agsvS zE`Ej_$f2s_3SqpJUwaQ#7ynp$4>Wf%Ebik{YJmOXb#Y0bX;E|1ONANlW>Np=?;e!z zEX%i1Z2bt2NO1Mcq}UCIm&*{M!mR^r=a9P^S5M&#Xu1tNDH$SLy*rDuu(oz`%gesk zt-ky#U;f^gQ(@Nu6^gJYa<+4KLp#V4A8SiA`U)@JMyUPtfJ_oB3As!lEI~n@u)j$4 zjK+lJR2rs28O5quh{-xWnj;&8sVDNAP3EB5lWn*1j$_xz_XGW@{P1E}jBG<1aDQ1H zgWY$SB(Q$9>9*O)rWJm--wejo3Y@yRj~Jv|V2J#i#DgHSP3l;Y?N#Aj zph%R96ZDWI+r)Je!ZObW+n}|wUlI~dXqYyjk~bD{S{HK2B2#h2D8Nt93d_oF+fEb; z!%p!qNpm!88GVzP2@#w?{&M@F#muOjJgkoiyU`>iDJS1B+Antn*zU>Yz;B)-0#D2ET(vZ7Nj}V@DN&b7+<6kZ<9%YM~C5g8C?0NzoxC+4{?dDCDT>k)^s53lh<99@BuNAd;)NES-pM5 z_TtxiQmLoP4J@t=$#IB4=dMKUbeKq%4WxL7*bzv6wZo70U5gtQ3H+NypUIJ-xhzL6yS=?H#j_mEIeT8WZa(qSHzKw7< zH-}uJkM*hOwsYte^lXa!^1RR`#{~}n#J6Q}1weIu*{6$OpPn)JdLui$IAyhioM_0}t#@E*)&P#3L0`jv#7j%;Wh?jNv58|bE1GH|}xj!@IHnMsn_JStvM^Bwg(=C*9lI@dLQbE^4p&-FukgO^1p{+j=Is zqfI(T<^haS2^~0M6*=V{THW_%w-D6LNO4I6MH@38 zkXN9Uy|0h0!yE+VFdd8}*LSm0}xuJ-xg(+Zbn`X%{2As2NT5 z9&W-#8nD=?+N}X89-Noaw9x>5NGpWAmb~z@g8PRw(ru0<_z(Doj`oxpooB*qOFJN1 zO!t2AfrWBG$G$iSAeUc{y;0Dg9wO|r9uX|@#TpF^hVE+s8IPCfr>Uq!xx6KQ-ITHE zTIMv^h;njAsud;F@rlB^r-ZFs3dWDijK&X%?NCXqlyc&92DXgRKjHFLXXOXyY|Vgk zApkQ4B>>|~eNb0bjlS8dqd<+z+edK8F0O=3z~yB@+!Bd-VH&Nwekg#0b)=4S^Z7h^q!5`--lsl+uWPYD%=BmeVhBndmGzK7F$vW-Jp@$m>fQ*Ey zy0|XT*NE)nM;TFnl=f(3)BOq~8cNOi%_ud_5OWcwX6K$(xwB&1ApxG+0tY!(6L)FV zbGjBzRTR-~)nyW)mCMZHc3q0a9gI~Q&oM$(X6~PxniV|;B`@5?^k4c8`@=aEg5uJLzj3o*4d${D zODdNI45(ao5beQ*7%*Kri0WJ>gZa$hAIi(Ea)@)}x^fNVB^JV0bAcpT6~v)m&jmK~ zIxZMLUdv^&RGNa4`5&NSq?a6K!_cX38wgvVcajad2RL*@jEqod(^!9MmGlq zsR3d})Bwtn8o(N(24;xN+V!JuV;$?mXq660zf6_ToT?<&UsVz(tt$Ibr6m8$RJjHy z;UcOM(o>a?o}g3+{bj0L1C;PJ5IJ|}op)C4A7utM;L!o3?@f2!Sx)*9h*I0#l5m{n z{WKtK8{^&0sS*b3wTLL=2-|XnF~DdggiTTLEbYy^J>9RlzYh6N>$=I*4odXz?&97F=H?D%FP zroL{@-wEJ)(*&>_lr>-lo1MB?_Fc=!U<)gNID02ZPy>l7@VN*$zS7M^glLlL44~_# z31>MdYru-=gf5nC*Md+w#L9$fFYcrnHNbkJu@IdITN`~d(aMD2>)%;sz6n*;v@#r^ zHDE=QBE$qi%#YHFD23V+*>p!ffdsV=naBcl~#fR z8d?EQ3|!C(6e>_e$s(Yj0k$OLot!Wv= zte}-4C~KehM7Ze)tw2C4L0JPoC|K@sM1RAP=j9EUEYIIrvE z`rIT%YxBWbdB#uUM3Szgb2ycGu|D4HbbGM1!gOq<9S@H&4L;q1;;0e-!6LUv64`&V83+O7A2sQ%EoNTl_EEKqh@A-P9;aqtL*M_R6Z}RGkc7(mJ$wZBg@S@hy_KVwh2n|>s*jg$O;?0F& zush0$qgm_+eF?e}Xxfi<#N`%r9xgZ0eJ(eE2`>9U3YY5^sWYz>=pvPw<{>_VLc{Gl z2zDtq6rV5X6g{syMdoS77qwUCrsowal$J# zAhF{?;mcM(V;N5=d-X?h1Hs(&5y3UovtGR&b-NAJBX&)NHF~{VJ^B_ZB6bca2djM{ zyA;FgInR6B<0#zq>J|I1uLGY%eCR0LDF^V6wiid?I`9(h4jbni2R$8y8}tDmGi6Y- z#x=MJ!^W8PuMByACFHApVT)P=aeoN0yk%JWuEHAoXkUE-tHabm59a)%5~4!V$42^!}dP*xU?tbBa% zNy0@)<0aE>p|~e9X&kN={x`v+`yCOmauo0~RH>vz=CN2=G?{P@)h5Jw9!D%hUVT5t z!s}a~Cr%Qai~W2S_OmbX?U@+U;Nvx4ulf9w3QwaO=X7ue*Yl3^XDfp|SaH-6l@k&+ z;$*ccCR?6=mV?g^}+=lB`Q(}2=t6K+b`9f~OdC%R)VOnz_chE~7f}B)3 zhj7=hf6<#ryyEf}x3K4F?syTFd4>LzbN=jx#HnFw(ckuUFK)e2JqI9zdMCvvsb$y< z`Mua%6uuE3*XW5Em9q=?4SbEA`Ci6Urq(06vVPp7D~rpLuBGDzJ3ww92%`Yl%GA3c!5P>WoJtLw%`Ix%A(G_4h=1T|1w`8o&tMAnZY497GXlv1B z*ZO~&O(K+*c1-BifN>|D&KSdkzzNGSU~(#eD8c&bG<0Ah4PAF+=!CoH8am|06+`ze z)~M0Jiy%5Bi8i0-w3^P?;CW8kG|q~GZ@(ElCB3jufF3R%JY=FP3|@EH;ME{`@Z8?$ z;NkHZ4qnetdhozG8#`ehun9rs!6W&|l?E@|?54Dl!3%`k#fmZ8it<|rnS@38dmMtG zrrrR1NRx`mbWSwdcO;uEANCAQfNim491|KFc=l@3>U7)PM>;N^oTDA66y_}Vv<&Nr zEGo*|X1XG6Cvwk#4M9IDKe*r^4#N!DQxnQUTvd!r^*PUm?;T@>dtcmUd5~@ZNwXih z4e7DuX!)qVN3O#V_4USH79LWQYk83HHeGI`Zh3p)O~|qeC&KP80q-=YnS38bxYg}k zpwC;mz^h)u1y;463w-AmE^w-wxWJfh;KF)_a#MN6x2hk|gaK%PqiXfQAyPzMM`H~2 zii5#c93A$FZP`q?9?pbP#K+7^T)5Y_3WB{SDzTzVIm7I-GFj?F~Mtb(26Ji!`wSbT8V|VL|4je;H*W%j+Dho8uD$SAK z%8-Scg|n`BN;;1NnY)lcyXxv`_E8w$=9M^RAjDX+;%RGW7j>Y9gD`0787pPiW>3R3 z)mfvt>WFZ1hEOeO_*}owm)!^ucpwooTK4tn432odVklKtM|-nbceQS}if}_I$Ba4k z4s%8*>!M~BlkifyKFw8*PXk_nNFXgDGK$hhdzlFuKY+Lj0ar^%DOz5g*_lvDt)<|a zrBg)w270C8_5r)z*dcz^CHe$HWw_ZNk;QhUY;?QQ6dh${a12k>_ZE>flS9z@r0)RF zJA2Umyu`f)!ucciMM$pt`<4i)ewEE-)!C0n)M=*Z?HnmF;7%=B2#_9i0^7!7R<##d z1oaPaF=i-ggxn2$u*=wA3A;2F*cGe;alKBZ-6vWowEbi?0AV}1kZE~K zjRkr`#9$#MH1{iBn;?A)7#G=%n2Z>gU|32kI+^1hCnLq`EjS?>401cx1P0~=Nfx2@ z>4Oa2gQTh?ZyK8?NYFz%y5R;3lJIFQ;M-1hTyN#h2_-hfo%9`=ok2R0(Nz;r@r5b; z{C)lKsz3*d|3$5Ojm@i5nPv<7Dp}HEQgFfsci_Oy9p%rl2vpyRRaTjHv=5fbgbI=7 zG-6)5eR5t(;Qb)G}9BKF26 z8l6iugTZEnt*1WM{^CEt5gea!GJJi@`&pAVHffJ%j#j)ItdrfQhVNF0o0>j;pgt z<#H68l$jIfr*R6nOlVN*Q2|i1$gGLHL(ult$4NFAYDW-?=9AjBV&$^%-W!I z=f0|^V?-vYW(})IpUXH?v1lt15>yFUB;IPXDMd@7Cj}c5G+Ahwzd%t>Ht`GYj7&(0 zd0KoW18PcG&6N5we`9u^t_%?Ssc9v0bX{u4`r|0esMWgp? zuo>h>bY+kqPJ@4+t`NgfuBN3g%|`MB)O6NR%)AKIPKqI>vLtPt>szhQh;_E$WU0%`_i?B5FX6h3mmb_b7@!E3{w$3B3@KwEpNf6A`JQ;w%1=`>NXGfK6uH z%`HTEl$0u0#Ca__W2Y~8bB|tEQ+{1q7{JI)1kO>R1e5$j=vC-sGTQ2s`ehWubd(o? z^hnz%aEffKX&uXpXNL64U)`2XM@F=xoN<#8xkaZqj$4MvStiV}<^Pd!FY^QlHoUzt>0Ki1-fMU>~)A2zQ=E~S|sKGj~-&}ruE!>AHUM+aEn zLK}{XeyFXJ!1J+DnXDc$iAd|6Y)wsdrrLQ%^mtx<^gakfDr)S86C#Z?R#!1&h67$z zJ;__ML|3rf8Wc2C90}P(XJOuyO>6w4gt2 zW2GqaTgnHsaiW0c=~J+ea#kr|ZQuv}2ma#XC%^uIhyLW_|E2XWVhIW&(<(uL@klQ` z|3-UamQPnq$d}v~d}Gpcsv{qu?|q>=t!ARztF7`3m52}82~wR?l~bzHOrI$-Qsp=G za7MTW%2u;h3E%hR<6|5LSZO^1Nt&2}?La#-i=WK1;_U>R2m_}{zr8Bzg=Q#b$dZKL zCxl;U`3YDPIA+4+)p^*FmwoM?&a1x`sErg*13M1m15Az8=+HpY>PjjEUhb~}CQq%? zGC%+(p(}H&9!NMr$|D#ZQty?={XS2b(;@thBh)L|=;9t2WvgyN=qx@saN;V7FK1+=Svj(QPiIGjIA6A`#P^kH+-IMyn*q1ba88`cdw-q zF0YEq?Qz*37aS{kwl^+20K$5Ul>^kVmT&Iqok8|WXh{F-{LPiw++?v_Lw?EL%p4Ye6@a_MIM)-W%9q_GE7d)SD z;h*h&slRv+ud2T#-+q7U@6~?0n{RJO{k__6ca8M-YQNpdx8F;<8yHJisrtL&w|;1i z1H6Ne{~3rT^HTls#7QYd&Z7Hp1tNxh<;<=u+HG09lps#P2N$%K&9w$kaODTC`Mx` zf(&dTXpr*U)P8W5Xj|CDj4CI<&(s$mGh^77wT3!o7Ony?j4W#ej6f6twq*pc_;~Gr zk&Y3A%NkoGkr!{13nmTliae=kESIk=A99f-_!7?YlZ1h)4;xi8CaX2|T=BTi2?s%2 zt5ezl;1i{!Bno@!M`-hRq1lD1q;>JSz$lNb8g=*JSE^{v8HG4U_^7C&nJEyr|7 zxAV6jnp3FTK8ZE4ZE-z;m>fAMZ2J>9%D(~X^*83Pi>|zuOHj1da*(GAzK;kF@3*%oJ-l&z16!#(l#`RNuZQPw04!IT%9^YWeLzJ5@OpNdAq2vugOoLy z#fLjmd>2+yDf`Z@7W0{!8Iq7(GG*n~%KcvAZLpD5|C!MAKG)ymx9~*dAtP3uV0GgZ zf?1tHFlRxPmxTw=s_rvR3>jDa5LacycB|aXEbBGxqGenIGhkZ;Qn-!Z){$0e=No zzrOX$ZAJud`75{I-1<;5I;9s5@B+?UlH8Q*4&?u8`z?Aw-W$#y()aR3P{tksrR>G? zQ2f#+rSkWNalJQuBfjCe?IxG~{s|HVfCo)2+gF+v()UkbRW{KDhOeg|F)xp|>6~Wc z^}y&P`{-rb6w#aQRZl+lRSs{FFTV}Pt3H1QYqVYa_%}&Br>WzaetM(kS}xZqjuBVSJ?5uclIBf_lkmo7%!8$J3`z6#*Wg`Wt7{ZqgHqHc3nV)iH2H|lD>NJq7M7TwUbi|wf>pte z7y+bZ#)6L^BC$SX;veDHa|^?$1UX%>q=PuKA5o^t#>EowOsCm8t{`M)lxhvg=x+7R z80LgN=tpmGx{;k*MvYRw$tH*4Q0yr3`QbGuE}eU}c0~ToF)>|jYUlk-owwPHN+OYG zy69jXO9F};bW5wFBEG(zloik~e`d3FVvPXSN}=Wlg!G$R-_M0$u>^cB|d7r3fydgY0F+mrlnS ze}}DzZ8}UMqwQ7q@Z3b+?PlF}9deiLuawItIgfU{ay#El)j^BhY6}rQa$t0-BNI9l z%m=~oS9V^RgfRB0eXO}MA*#eE9tx*s@rRz1#VQLo=<7x$9jr@GX2`VlzL zU(I9LWFv(NQxqpuAodWq;$JDbMrsP#o62PB83j^EUEZiVFl^LsxKZ?62!}fDIw2L2 z>^TIxQ^g`i(2R*I!yZ2s)R(s=G&&P|TdnFZKKBRj!NEqaWCVG@3A=7?-Op8{_f`xG zx^=XWhC#4i_LOi4JGtPk zKAq}MnrgGpg`03Sh51-F^tOx3~)FzV%dm|BQIV_Lw0mR(d6g4^%4ka z;DzsUSdMy+>84Yi8Gm@1hdMG^gRMaqX$mROoCX)tfuvRFNJQ^c7so%pz~@BY@|s@~ z1tj7a4&+4jm3I;umW-WO7#|D)rr;Qxzf3`72*(;mAmXuzD;|Hkm)#v>Df)`}AVR7* z0jXHBaRavGN4lB z>ba>7O&yKH7g+IOf@B@l zXz28+4V@Zo=&_N8P7NE%c?oO{8}fPPf|rKCAolwECxk#6V$Bnv#d}ew1G%7CPG_Sc zq5Hk;qL_AKIc=5lmZxET^sg4bA zh)VCDz=~J3iGtCJB-TW2D!~@{ivS#XSNXaP%S$h?JgxGAm}7bYZF7|uMruIP zSmg!KZ)per5L<=lq#zbUdrTn-@ULzUriO=ID(raS! z$T7vI#m|B#pP=K4bAguJy@o5-ORUxanAgbK>bZPI93IvPinRLHZ}^$lUDzeh#PVse zUUtQ)#@-!raINF3EPP(t2*)``(5@#VP*SpR1~rVVIa=&xK#y4>+Q{Xp7NQA;b%8M$ zx?ZPKKE$lK1=f3qs`r2LYc1BzA7m{fa)TeC_~AXnRg3V4Kmw>oqh=fybVU&~IuDqXa3$+C>$TbhyPx>z0-*Q-^-U z6UKS?gn=DCDO?6qe1dF`d?Iy+fx#Hw*&lqcW~1VW8n>1t1bi+YEiP#kHNm~Q3cXN5 z@qds`iMqz-x0I{d;>+vZoFus7&(*Z%HL27z*v7ge4LaB~YAlGpy?U?CEhX*=aY9D7 z_yh4kTtBSyzqgg5{4gZ-3$BccPJ6zS7`N{n@twrExdT+@+a?^%LCk-d-b{bA^JkwN67&X5JTY&?VV0!4MSX+PqOp%*F6{&qf z=%S^%{X`88qjSe$S@8ygekEAE@L1c>M!3rkXC}AlWyV?~eP&9k$9J}6>tY+w68Q?G ze8}C${v6rfNG8UM%rGo?OBqSYw&nZdMoEuYFEm9pPCQjWGSAo}6<<6X(P4@liSmz1G|Ll^LQfEkW) zq8pq!Krk8u*Uy>#tN#Oc8^p><%K#s*6H}i39gI&7kmp?cxzbr&se8VhUTmu_Q}&=& zwJ`}UuNO(2mXBovd%O|MwR40E`Jv-gJ-(kC3>m^ayor>6-@#gzwOckIk*|;dM7dG= z<&^S>^8P7V6?yYB8GExKHlim9q9k%_7UK&E2dXE3m9GEldgzzxZ=-cX!Z!a`5^y32)JX6)L+}b> zbjYtHYR%M+Ug691%4FDdrm6=%HmtTyD1g-X>Y?Ul-Ca^vGZa(Rqr)e>cj?#o_+!At z)MN5J`q_Xm>S*AV%%`en>R%PmR`-syH-=;lnY#RD{*W@T z^|C|cyLAIB~CH3Dv`v4)|nBn;2kvOeBew z^@}nU<}er4cyd$vMdB;`Ibd4F-tG@H>v(NU7eiAE|_#9CV!V2_k>*WskWuu6K z3v@6LAls1EW71H;1H_^T4FHNr_=PP|=^}G5Ca5teGX=egXJ+r_Wi+xte6wpQN9xHg zTMs;Om3lhjjTcb1;uR_II{0Pr}kLN^55c9KqmT;1rds0Xw>%pj?55$#Q+&1T7zqAfE=t zjTId`td-IzeSS?Z!#p_`#kjng5_Ekx#z1@ELCP#Umwl9ptXdp#q`}bfOTsa!LSfM) z|1YnKc2*zr?-uP~1bkkD*0wq;8Whdc-SOen#4)J*Q@gHkIw5gjqOq4&#=X<)Ay4 zO|)A8OZ{koOK%~+OdMWoJ8MWe(cK{{y*vwC&Ptgcbcr4)F+@EKlZPcm1kz;BX^_UI zSfPvfz32zAgmgJ}Rcnz|SCnvusSMsc68c31twfwzIv2ZL&2X!GKJ|5|tU3=jHNUE! zd>G35r48<_KoVX#KViJrUhZ504vO;dpv6{~RE;C|T&)06uvt`0EKKCKNBL3!8|!Uz z;4tPSZ{f!l%Cn=7ozkUqs4n5cdP-3J-lU+ap6(o~g>qU( zcTQ-cICH!>+sS6y1bM7j|1Ljh2?tJ$?2nCG(S(N&?oswdl1XZ^Rxn-8Bd*SQ&umCy z7is|L3F10iY%^9h9RbFqK2opt@7&(b+AlhxPj;#Bq3y4WASJDnM!dTrrimceYMmV4ER0d2ld^4py980*TvkB zyBILI*u^fGUYHmb0|vhkFt`{nxEL_F7%=n&0|(Hzq%0W!>Kl%->svZ3Ar(6Y-FGom z)ORP0bl>e&U#ss<8fU&6_;;~CygOa}t>2~LLJhO%(OS#(V*C>xgeVtdEL_ZocRQ8n z#do{Lj@HVhOqJ=BQj6TG5&}EZ!U@*yD5M;B)j2>|-+@ZGs#6Z7ty-!0rXlgpkU zmmoN?7d9)xf56_~B$&e2CX6Q+d&ZNClS2@uj3?ji4+)(Zgu1dB zPawZAJFH=D*vt9h-NF;domfBYMDEJmiHeWz_g2#ZrH^sH{oL64Z9cv z@8XObc5&9@>f)U7@8Y~s;$q<*_e8xL1tcPbrleuOTwBj_7h{&Y7^rqJX1R+o%UzuC z#B(uF?c${2b#bcF#B(v2zJlSFCItg-c*F2zUU1Y|!0~PKh+ZomXPzJaJ|EVK2vFA= z@t# zS$ETSg8{iX?{2zS4BuVnZu;(echkiU<_<1y9DcURQ^a>Srw)OK1>r$T*iuZw+81{bG?4bK>KDcwuk1Q}+* z2D0`LG8eU2AU$+s;L}pG;{iy=k0I6H)VZV35~A>@HF zgWGY3U5sVH#gGSF40*uCkOy20dBDZK5$WQz5$R%p<6?m0Vt~^YB6kTKYicPG4Hxfnz2Vk`hI2LEueKWt*U`op@iAa%bmYwC1y z&gzDX^G1}5h4Jg+I^$Pr;?h7JQV<5#)U5bx>(7{Er5$67DBIi71RYUbo%yY=wyF)q zd)5)w-qMC2zL)!#FAtWP6Wl5eUpi(XH`t$S$uitvwZ0YC3M`@%R|8J?D;;~Qs5?b0 zqUvheL|#BOE_}OXhu>&R7W(JGt%>1-LYxDYZnjq{JEXV z2WO|G{-ix_q?)xME*#Dzf^zg|{cFMpXoX|@Ad7L@BNs*2#&FIz-PO?XsnfY0$lf-{ zA1w0&-G8-xt}_W@jMnR99EXRbo|zh2vB8kWxqX9PaIFyAKWq{B)y8TMPaNt}WiREF zKSqEcRp4pfZAIXVZ2#%as6+5TG%Padw!A0xR=-i$ha^FFsTQhGiV?dIafCR;>!@e5wWkaRvJ^ubitv5(gv3X2b!$;OpHD@~s zvBs1^=bi_9fbED3A>WeNRuZbfX;=yqaA7ar1@|4l0Ux=$xXYEoguVh}-RlH+)9V_z zM4U>Rv~u!X?hXOA9;Y@J0&M57>o5T~u?=w({|&byZr!kTqv_8F#2Lo3c7+`G{XjP}^{2vqg3PXrMomTaL_v*SXP(xk3 zu2QU-%W65qn6Q7J}i8BMS|gD-TP z0T8j{APqa?dSR;x03g2D7dJcs)}q7FG%!Stgn%btJ2<;R6+P5c1nhN98g^AR(sTDP z@tOKH?tOAr4eqPkyWvpr^M&6ca%KqDvbP+Imbz|^@EkqADLT$ZWA`e6xL^klL?;jt%A0ATQ50|RmHyFZIGuJU$Q^=K=v;T5ESlJ%1!-(g^eIBKV8OT9L!haQCZ$w)wvp{ z22zCjT$NmgQ+<@l+HfjX(uPxc!CDnp!S`mnvC13PK#(XlMgqR*)dHrT;JWNkRQBoChk4~qb97Y9=axl z4ei%&J{fO*NpGGVdGm>I29k52xmg{HcVn)e3!?WTEefaM;7x)+krDz+$7~`-EH2~E zPd3z~b7NB1&%5>zOUU7+&lBHk1*KFSCN=kU-VHPB9XP@{dDH}_JJf1N@Mx1BQ5q?@?8@{2w-MFa;c%S+gYZh zf$$IhXtAsFU6bxk9DSJYnhzBh7b&laWW_DW8%mwP7p6i^~_p!-Tac%czi|d6! zX`jVqa$Xbg_EMx8J|4|^&Bo{F%y}IfXH(AWQoP-#V(ei+2|pq=odSjlOm;d=uJ_6z zhO5$mr<~UdgZcE?4uS%C(msUW5%(p5*(i@k!T$mIMTzcTqO6d>`Zx)?HN}{dqYwvd z4-a2Q9%&A{N7hF*V@DVJt6pA#AGN7P{S!T0jnZnkYtHmmHs>f z_6ewBRzpP}aG1(14b{A5aouxG3VOWGJ?>V{gRSjlily_WN%pPXPEFlvR*^Hz-)>bZ z0dzO=V0WEj8k5{Cu`fMTl-$4> zw^!>3DF-&Yv#a}$e|2RJY+)}^LXXJ`R?hLQmLxB>ox!A{ zGQI2)uM7|ACmzBao`^X-vDzF~4s3!kj7xwFCZE7vkpmkpBUrn`9N6b0fil6|jKJ7u zI9mwR_Vb!wq_(~*fChITYZ105$mj|kA^-hyh@j^fg)AnOCX;5Kr}l(iUZ=4vV^-s_~U>u)4lhARVfLRY0uX1mVOEW|MLMB=wq zKk|}Su(W#|bO>Mtchi;C;pPLVnz`jJ3jZm~wNeEz*FBY~<6t>+(5bG6eIKT}h98JQ ztcC#6T@Mj}Vp?}ssHg3v5d^@xu805#yGFo8wjy0M0>=2h1};>JF$938K)@tD7xxh% zN)9!4jaQZ-4~|d1($=SXtcN+Ok@}HLn*7v9lUrxfu}bnel>kbj22TXWdL&cz9CQ&M=hc0T2P8;; zMS&6z6V*~r)PVE}gmAmDOx5>?SnIW+o-P4Ae=)2?HfaP`7%Dc+%Vny*PQa?ECQ~)^ zkJ(7%k2)^UFpkDX6d750`?}_3=qTl9n}FI#5*3-MYf{yQRU}cLg!HlP*^aw=I{ow% zL4jnd4pCfO82v)di;kF^db(J^h4a#OYPK(4h6`)-ktbQeSl-i$#^3`zONIp0b4)M9 z);7utvE^}P1^7(r=c9f6Zh^dFq;jW5Ny`v^q?Hg&%h)&C{-93=W4&I5QgZ1lJu5a!#2e@N2sbB*3_bm;q15D#SZfHTFM{ctU^tCd`9eopJJ4Dz z$x6~?67(rA^8X-4!(fk%{OBk>SGl2*sZevKlA7a$Ayc8|Oof_5rm-ohIh(lnxSuJj zIgstNfcDVC|CiGanbYd$BmGIJA0bnF>@w3KKg&TvQ9wdg zny;wa^GuVR--YxU1i14Vj#jSctj}zOSom?l8cn}D$A9_UT&rXK=)V8!YpqI$s^b1* z0{?pb6Scj(L;fN&5bO{i-X1k#oFuu*g>3Pf1MS69e#TWv6k7pW)60;)``Y=cf92o~ zt$K@hfbH@Qj2lE#M+$NbZEDA6bFnDpZ^_Q)H|9=Bua%mo@MiDyF8l1uTerBm+`@U! z8##@7J;y)KkgSAd80BQysXOPNg!6y?U1Xcc`~+GInF8$ zBpID@#hd2~q4@<6dX_JRN;Y1`dpRk6odBs*qX&H}$1I=~tM06CG14ADKS+qKAJl!R zi3Il{bP=tO*JyzY{q5ow%@0^F|fV;vO zyGv&sx5sKqU3iLJtZ6&|WCX6iz=)RskW9mXkJvv!0FOFLn5W?-9D@D3 z=v0v^Ny6ZR+u{jyiH@;~aF@&aqRy^6C@a9hH|YdwpDDDww`f-|DAB+fR6>q*kAL%SA-zr=b9UH<7GGbB6NS3 zv+^`p(5w*_=4&jVL#iWS0h|j9URGC#vk4R9*hw>6bz|N{;Cn;7r`EoYHGg6&bY{xiyvGsZ^bF zvSNbG8N(PB%Q?)2^_NaYqVLpA9%SWQ8gL)#DkaXnz?7SCfzZ%E&>mNhG%rqdoRVQ7 zE5lcHu~yhh(lP+TNP2AdxmMu1jRJ@FiXQeXmaneBX^h5YM9$}v>rGo`zsynhq?aa+Gn1{39d?gGt~Hq*{Y5_9P`y@VYXM1Vi5Ki)iJ7o>0*Yq z1C9;knkz=v5d8I`f#>=Mg4Y|tozU;pPr0$yNv`2I*HMJ3ygl(qpW zYHo2Cl2iu|S9R%pt)6wHbPN?RmMKNOIEO8=2Uel#T|b6)*6~@ga-*~sbKPdS@WH1u z6zuAmkqiUWNJ0Kg?+q0LPb~90-Va6VcrF3W(OmAVmiJ@iv54c&8-1xCu71DzNUlWo z>=8#<;%yL5ZpNaPS%f4R9*2t7{h;XxUrMq;R0u_@v$$LCFpymLrA7w|jOSJjXJ|ts zaB5&Y&WnUpb5OibH<{Ej$G|nUC4{*)sYBxO^m;{Ye3NQpH#nX)Tj_gJnS^%mhxw@~ zF4LIw+#1s)PE9QGs7*fCmoZp2lWge_6s);pG$=tj4WxzKMI7_#aJRh1)m-~$W z5(8AefK-fnZxQ)lS2UlebS>FFE=?xpaEV4s74jr?(^!WlGXeh4Wb#Inkqq<97K6!% zHJZ#At#KcB^Xx&nk0w!LG?wBq(Yu+0C9E&Bo5*V19v3yyZrmdr&$)6@^+WK5H8!)o z?)|Q$uc60TUkhx=<_%@loT9-6+TAniyL2L5r4#9jUUE@av>xLI{(S*=Na%PzKggKr z*O;+(W6Wr*N3@&eSU}Pp0gWWoa;DN)@smzP04rsRHs)KmV#87pRC{n8qns;JR zBNMw_J@_{)E_rcenvhkqMQuxfDeK_svK3AbW`?Xn;l~owV1iB+zk~TK)DA25RZFKQ zwZ~~ej#StJLLW3l;tNl2jFj-eR9icIKCx*8x9eMwOO z*a|I+VX^-4XIrvup?|Q8d(f4VhKGjr)uQ%Rs|DnmhtZOZqF~l+JT%yV%&nv{xY{rc zc1iPwOm4LdM}c|~{}@@q?>ci?)|$r zG8sDP-dyql_TX2t4p999s$;H@Jznnl%SVcX8(0yd;IrUU_2CdWm<^ zFl?rXlUl{8;+Y9rI~Ba#C~Yo$3y#9gC|XAYz4$2y~_uw8Z?L!~l4cO1$K45S$Oety^>pG|`Vy$dyUCtC+d2l1#n> z=lI_2I)^%{5xjSh*mY!J@;e*#bWc5Y;MdlO;%Ct184%Gj<0h7nD8${pWLl92IZz!JQ$I!SCPcMeHnAxL5_k;L|rQmfoDB#F6ElHg&X zp%Y1{l^}@@milERK~Bv7H%Vfm>|YH@kV?-aF;$ZUx$lA`ro@G+yFF3RZZ^LRp0fE? zf_5>Q-Oc2heVP6!iWd@NGTsK$<$_PiJc?Ncu6pI-p#06#f6W^Q_)$2H!p!(VW7F0j8 zI@R|f($tFkkJ18?H~JKUGqa4Y}clvoKfQ0Omn|gz)>LGh%cW^qBX4cfw6Sb^w zsHOMcf?6)SY|`$KTIQgZjiwf)1+Sg+rR0XuwX;|H4N(i2Y1m|%R%uBc;h6~+!)0_$ zJaZ+rU>m$FwSpI^vKs4TmJ{ z>C50-Q+N}CL(T?=oE_(oNvU9HSQavMpoloGRX-^aNWnx4qo!V@@~Wto#6XX4g6U4f>C?@l z%}p|SNr*u|m&sm-Bv6}xg=uybPo`Xa;@8S;C$@d6VaTJ*9{G%9zNwQ%2&)2r5pS@; z2C_-1)TFvyYnK{72TN|Q*E*CM|w4U_|WF?l3 zmRccj?$7`YUL!DfbL(7+kInE>krII9%E}*rJ;3%RBH<7MMAG0?9`qENaW&+gE`)f`zkUA_Q>Tivd zCuL8;Fn>13PdJh6Qb=^=3-KTeK_KiQU0-lxc3fB4E4fxj$Z-p0HwJLgGakXwQ9Fs9 z_Y$sEoi~VeO2fhUVPioHj)T>f51aaWJ`-;{Ex2gg-fazD&RPsy8qhO5(@}yC>mAuH zNh{7-37GzEpk+I<{^iT4o?IHDb~ZKUOk%E&W5f}CwUId8ptuP0F;V|}eO$%Jfr09A zyJ`*$Bu^T118rJVx~1H#Qi~GYqTI}%^qcyb7dpS(O{M#P!>{TOjly^5&8s?8i2F<2 zNyM*{7g$%IOjt#IN`t4wMW)0l84&5o8Mp*p5MHhaEA^Ry?6XdX2A*WvY)UYBPHi&W zAQ09)H#LZ(Vdw`!-kCTELz@kg-K_YHJqk*F}d1xhCa zYRq-y;H(@M(U7KnFg88>eMUT3i~GW<+!Zb@t#cjel-De_0LI9t-iATn#9gad7CliVR zCMbnAK!8(TQ?@zXkN_^3KQW~CMrs`Tc;c+Wk$$hJQD^q0D)&$&9%kx4CC(HFANHU@ zg9*3__z}c{eCR!E%W~>vb#f4Ins5mf^As7 zYT0(Z03pzPIP7rRi<#b+Y*KuipnI4mB9L%%KNaY43Ck6m;*IL~No3VuSvRe5y1sR( zQ?nlE%~PYTVM|fWY@Nxo>#dhviQ45bULRgsUyqk}mxjPsMSg0q6Kjaida zX@|6zZ;}gub+|~3S6pbK6V2m9=$?nTji<{Zrm^Fbw%Up~e-OEVIUdfJI4BZ_OgLV6 zJ9aMxY4U4VeO#otyqB*kad|C%#Pw9W-dJr6K|ww{of+#1E+!zHdH`y?IZR8wkAz$a z0xOY=GL8|+1G(=I{-N+?>|6ANxk+Xq#mOXJhLJ%ah?qh0WzcNhAS#8VKoECRIbd3~ zkn90TGM}?9*CJmmB*-MD9sX+dIQibRdXz0m0j-33Eft{l1rGwD#s*_D1aMM=7^2)~ zHbb5UGI=s?kRYIw4j9DIn)F>9DU9{F;4>=VoIVn6{nX7_H_n|Qr}R+ySSDd)SN*$M zP`-(l(p#}Rs~VtHu(mFiyLau}v3=Xtg)N&mZQQVaT`@m5J2Ty%n(R$ki9 z4FjQ$LlV{5KUc4zgx|^OFn8iBfJwbjHPuKj48Cu^?`wQI0r>wY&|OsnI*kF#=jkr6 z_|dT%fv^X9s{AK7t+eX2aLs9mu5V%6S~N8Z*5-qm%M3e9i+YcviIJ#>{jW9p^D*p; z3^4<r6~>n5;VX#h=pf7>Q;rz#iRWkgq2@)!Pa`qFppfxt zgjTYA8o?f$X~dR9=5$OWENyXCT0M=%X)$Ua@{D1NkNh$n>51~ci>;Zs>`!Aaz1v3C ze5{$%k$Z&rs)-ygl$N^g=(KEmMbOB$iubN7?LcLk$ddSWxicpq3hYbNZ|CXhombJw zud9*W(Fk>oH^L1!!a}>ECp)g9kuR!|4bh0ygt4A*!;N?|$1?7;{VE#yGc~e48lkT7 zM!4ZdknLCWgwuf5%mV*LjTF&Hm`X>+gd1+e+T*gGY`uy`-u)gLNo(2G`T&ZC!J5wy zYkb)iKFKLVcK1)mV3AEE-Jlx~yyFol{-85xAq&80wPb~4xF+#uDPjyr>4^CC`x^z zIZ$y~Q;6SdZtB<7)Lc-ZjN_{`#cem`EfmX|(w|;Uk;goRZHn0*npA_@^(kvSD$>0DCfj)a(E}& z$?xkHdM8*#T(U_m<}c4Z%1G%eI5!5-HMjYM8kmearNz_c=g)wz)!IzYpY$hyW1lEj zM@o%W!97eJ@9Q&1_{MOySAi29YRzz-HzJ}D>bfGF>G_r5Os{-1b%g{R#ebRuT<#lO zruK5QCSaS%w7L?=taAkfAuq2$=Djt~zI*Rw5Vl5t70_Hy@%L##;D#F^Jby(anC8~p z$cNR)mS{ww{$q`B!;RQ!xQtn`qh-yFJUY^oIrEVnm<$*~EC z#O58EXXv!SK>l#naQd^xWEEXu&zFqayc&~w^wle9!K+w9ARCj<>?$;hS7aG_Guhi# zwT66IS}28{hA2ea3g%VVj^f0D_t2`5-#7!H`GYdoTzKO5pK8YBWjt=Uk^U+@Q67V}_T}M#v+4 zpXLcS+z5`n6+KZT*;*TUcZgE9`cv0f30~vX8d=q~@P0LtdLj>GtNK~R zA+YFCBw5&hhi-;ss?@o?;<}gdH;fskvF{(7i1h?CSKk&=*k~fdr6m>C8QuSm?vpck z^gg3-6=rKtY}bIju?wPvM#Pb8eYIg*l~Mn^AW2FIb&b;oH%uGtRS1y9W6h0xWTX)e z4K)tXKTH>kU8ITqhX$?MMs8GFK);MML2OS*69gn1gcZuk!b(@u!t-%8E$g7A3C@L( zG(oyM#RYbn;a0e$<*gOM?FuBxJSOVa^#aAC5tQ=?de}U($208hv@&q-up+{bzOCy z_s9EHuU=KXl1frZrP%j9E1{G~NOZd+p?Gz4v?AHU4l%v*hZl<;JZm!3o+`J;Qnb7> zYXw{cbr7^6%AlrA<1{iTSaIw`far+CNrWRnF!`Y*N+Jf4$U!h72oS`8X&f@2@80LW z_v(j!*w8aQYuQTb-h1BpvClqx@3YT7`|NXtQ&)|3Nx94_6yTjjX5#VDFllDDp9;i5?6#*Ym*UA6m1a`dN#$!N9FZxRS5YF3)%jqmTp%k zD)^qA82%AAY%Hr%&KX&)t=XWHTjl|~F&W3%QWvZpl?p#^vIXmE6a%`XnjcB~ya zYjUHpe46o_m8T+3>55*`V9S(zpIfC;)3~AW*bJaJpWw(L??=vNlVpHDE*SRe~xv5V27Crn7t5@!;_` zP9($Y4v{5r{6Rl=Yn=U`3Hbvw)BeILZK9GqtxKp4)f=ExD+S!Tj7mRh(*^v>^V5cD zEf2as>5(rAVS97wIRU8a^XV-)w4`IrRe3=$>!}*TJQM`DOH@~h0^i!#%yZ%K-$~lX zI70$5paI*hQPcv37NmVVI^>p}Zb;Jb$%pUa)u3c6ct*d?wm*h~j{IP}4PIJVpRC`K zq>%iOApEZAJ{RmP0Y7g{)^DS-d>D}ACYFRBwTm4!v#EW6Jj6Cp`{`FfIt}AZLXG~l zIs<)6=-U9VC6Fk+n>4(g;%GJAXw=Rj1vcAqz2Stgy=au7)}fsp`1wuy5BK;Ngs%a{ zQ`ZRB&!514O$6Xc?fS!j#BzkbI17^C9eXdI%h+uJLEDnI6(UeJcZr81kKtwL{GHX= zcACX|DJg25)M%{I;XW{-5FhxEd@oqF@L5o~&}jSVx=HPgdq^QJ#GX!*#}6tzL^IU( z71h0#)7|Ug-He=U#?|&Iy%HYOu}9*6g_b3NS*x-cmhI#E?JLP1@q6AYvzJ}Ixw%us zW?@uWI^ujmhdDD&mEUPDE1WkD8+Yv)!Ew{lvtR*S@*PhTdgn}a3wJye`HmO(xG=IM zJEK7}E?`OyXPhkdX`B!d8c&1;zauX2*WxXl`GZsO&{CC99kbzoz7tec!?xM*&~C+x zNjVpQGtMwx`nrDr>A1|-Pz*T7a9V`jOggKDHO^tk@0kiV0U7;qqQnaPx6~ws?R`E zbISL}^gIv0MTp+iYY2aCDW6SeHl^l|&DF%zg{&5#=DN80yb5YCaPZYDPtd7)(@&&Z z(yzv}!?dp>xR2_IyV)VZLtcwAOKl4Kt8c|UR_*)a_gwsbG1i0UH^09jy<%+;{s_7K znDRV@)0ZX%2kh7QGCVn$+mdI<15DXIe2o2-E^kSmR?&-W@-F8|d@wkGq2P%VR^U#M zj)Ed*+4g+9bhXPVoSJW<&%WDyF@=vwzd%5AvCQB<`}wx;A7SYQpAa_>QU!=!gvSm4%d8wA|e&ZOD) zShZw2EUJ1_)r<2bz^1A;m3#$oA3nQ{R`<6fo$9b)W`qx0DjbKV#j`XbpSUyTjJUX6 z;9$f#Mst;-_PYf6;-W?@!W3YG$K#nD9G4aKXvPF)flx?4l65%NOw^Q&a|wJurpO39 z2|PTeC--VFjs$7IL5-2ZJ>So8#qk)35~UP!R6!2GGlU}?$*h+UsPyS>dJ^%5U!T&Y zO_0tdgnMX!pH0Al#qhQC&AL^CJh|uLN0VuFlWEFwB}EiimWpS|`qGTtCe1AOUIs`E z#HHhl3$!=T1-ZbaVWY(cYVqdMxyjpeh{rX%dD%Q0 zn!ERoNb<1))jmP{W5eCLa85`nq&5Ky#3%JNX|BVS3RD8c~k zZ`!2@iIgUzS+2_5$v6{1WS^#5j`_>(**=K=BcrIsk)UUo5{DJSQr6#3S03QzPka)H zfMcHzhP4lb=R73~YadjNIy&&gEp*$aW`hUuu@D}qyJ`D*1BqLI1fmXR*~LTVT3N!| z5WL6%&0Q8s{)Pe3rnCVf;8TD$d80rgH_~O0oJ%uKSb_-v3jFx+SC304b^FrW?} z$y_G{%oh;RM!v*cCmN-s_LY=b)qaYyw=yN+oA2Nh!5M(*WRNBtrwgEZ3Wnx`a&{Bs z{K{ED=|VbdLmxb#7GMqA0vYAtnG>g78&&2PQ-O-`5G(SclXQq4l+MdG4GBC4&Ot-b zFy5JxBeb7grEqxhICXwlr=+R#7-CKU#BP{l6F*oFnM0sFxk*&QBfmBP$bO(M0ji5! z{hvTnkO}cTpyB&uvxH<~R}r1SGOT~h$epHpz}BYFC< z#6lxc-)9Trr!#HB!p1`M1_7XmNOopHY$J@?xpV3amwR6l8|QmpbXk<7g@vPAD1k=Q z3!UX;j+8FaqqL&A8%>bZ*Mlm?L^|6sUg`*$U;34Q_Y?X3z)=ss{>?x5%m4lUw?Dn( zKh=MDM{(c@0#k-V=eWZUHESmRTBHNNXZynGKlVHRm@UM~jfXh#h%%sI6t?;_3xu}$ zD2CvLZb>7>G(DFhXQ%#W!2Dm^h%V5VO0l&7v@pH`4k9pDI+o(qjacop)P~;q|vBeN?nE*^}Lj7 zDYu+e;b%GAWxAMD3eLm8{e$K0H|mgfWLihyM#h4$ob7K8%?CsyrHZxAv5L%J8(~Pa zp;V_RMkF8efOom6+)7}HZ*y)xl{9J1HM|4f`ukZgm(bdl!m8t?*8(O zEpKpf<1nk|G{InPsJ?0C`vEk@!>T~az)TDkSxN_zYhlV)|XcM{hMct(0G)ahB@aQWl z1^xl!3z^!~>H{>tgM(9ZhGi|S9J`Wn_jX>bF@HmPTre`A$9M{}PpQz4$WVaQ;7I)O zaQx9OfFbjvN|%bP^zURRGGKWa=HT0S{5f2ZUC*ZeMF*$>k21D2Pj4)=h z&dUjJ|5veCm^ljU`~WHmGrWSITXj`EVpM@@q`C>6^-%;PNzw^rXfex%@02?1szdn~ z$}}p=IK&-ZIR9&ZqGg*7DOEY|i4RQLnP4hHoLet7vs6W$*@mPN&2dyPtLA#6B+c$Z z#Ie@4`j&Npj<6PClGmElMn$$9W`I0wv{h)8(9I=POJdMa_rRrPj(V%mJeHUFafH1 zOsvS5*^Z2SS_7ji0nBoZs)BaC14Fo7C#MB*h5uia5zN3NrTyh*XM#TR3%?c1ccH)v z0-D6OmkS}wHH*foz#NrGDXX9`vF@$t=Uz(!QA!==m$|gFg6IaFF~(q=|FbUZ3{fA4 z6tU}rr!gs^V_}V=8?WPZb_#J1OZUvTg9MEzv42>6${njIgw(@tu%Xbhgf&{G)dP#v zfdqBC9#+m;=xb?FmKRHYB|QB0B7NXaL0{DG2V>xn)ny>CJy*5yr~Q^G{*DnA0dhms0$8DDWmmK;NN;uITdG0d7eJj3#0>H)Ad z^Z=qC4e)d>?Gv*TaycA?D#GgUl!)Uqs}kKr(+t#!ZXUk!Vsa;sTOR1La5GG|!n*sz zi`a$e)@x?WLi7Mw#Xh74R?tNZPx^e2&XF+FT@mJvawY$=USE@EyFOV1#phW%+Vu30ZC-=tWH)r3fqec-&#o4t z4`U&j2D+)nC$4N5DD~HGQ7kB=fdoG~{;4{|0jecgTnlnwsamWOiiwYhXS!|4IzkUh zQODW@Xln5x#-T&}T?T-mY#Mac^=xYps)r-`nT01ziw#nuS*jpYdQBl=x|w7PlM^NZ z=;`Z8`q!b?GvUu)QdGxUw^#U5U@j|iWw})m^V{4}obVzl!88;o-D2hgNa~ z1j6yPs2^kYd!-;pf=SmI0I+%MOfe!HLZ9t+izZZ|Hi>9tzjdpin{>FP3NkuN^_suv%Lmv1q>ZRDVp3balF!$8g2$;Qjhy9(jpIvXP(!k z5ihae;a)*`cpmGq9)spzV!dLd18)j)vs3BXme(p$KvJv#2kRxp39e_34R)n(}U{ZFam0>xEN9;l`7LpVlSO|wu=;!Y4$P~Lg%Y9$7 z+$XSKs6`> znU=F05~}r0=VUe0xn(V_|GP$NnuSs<`fNsF%idQE?{!IkMrqcPGXLdTy09y=nl~s0H5TKGEed6XiHkz*7chOX3e+wkIm$&L1@$?wDExw_ z3@i#iPtSZ&*srFa%NB);tD#U_6!r^!zSo#73T27aqR{kZbrO@0R5hj$b#j=gpP`>% za6|#p8CJunzEWO#%~CMS+r=vcPT|UIvAJsSiqMJ_-Xr551T<#)AptIto$vrZ_101# z83>doJl|7%`JU~_$(oFISNOn^2gnGOX?ihyx-r?SKYR4&LH+sP^ydNn`M3IWzy8eX z4~xHz$$fjv|B$78|F8adI}a*FtAVte1?s!V98uI%%wM`d7&~=kseb@D%oHP15JAHn z+Qlcz7r2GU!7VyNkFw=m3#m&9v0eO%2y$ev<($8ZKVk&0{I-ja;4~^#mA;E#Sxos> zW^ZZhj%+gQy`j8zPb7dVrOi}I#|_y`v#Z!l=`8?aGp(>Nu|9W4(6s6MZhje=8fnqO z$=Ymph%15kA-jDKJ5^ki1x_pB>EbR>RS933^yinC`}3PMe||(y%lV!fH0YBNJSLXTLnlFO`Y$@d^9s1V1g;8GuT7-dbIb(OY4(D&gZRz0zNq@aI>Sla=(Z zEx&!FO>MmXD#6Su?Xj^o0;3W>u~J~Kz7v3%r}yc0p~*em&|w#fT)N3?c{V=3yvD!3 zJh_Xa&#vCJS2e65Oj`u!cc)a_ie7Dx&&_c;<1(-9Q#W~2v7rOcwsp(OsII!Gg!kR7 zAJ@K_Yx+=)D&hUlCf?RZ-{{Z3{FlnmdNY#FGJHYlhMbSRF?Pt1^E-UyW20k+jxWAZ zg(g)9Z3guGP42b5=lS^ZOV1|i%LjgooyLqE#xXw5e~Il>!DZDSd|nsHQ=@qZRl?!^ zH+kRpH~MvSWE4;IO8D>xDqjCD{X%^C#NQCbOO<}~@yagnYG6I_3l%l`iC?N12EU>w z!(&x^=z}V0Er0X_6?!&4Iy!DWJN5x;h`B!eL95}|uc+jhDdB4ZN_}{wuJeW$-rUZFTODCpQ!25O&0?P3M@7a-PmZ~ zj~{p!oXoyB%;zazdaaps6nM(y#=G`6_UMAfO87fty2_pY!wNBZRr@iO@S#Fv|7)*@ zX6u@wE8$N}CQQCL;Kyp!9C%k_&lGx7CH(Zwn8-ZWSJn^#Omiwcvr1KbWffJ}7A-rb z%Z!(nlVTEW?h00q|6JKkwvYW{eKyo~OGxhzehU`NKC7Fa4xGP9;izzh0?`*Z-hb7Mf7TU-9-+q|(+< zcv6yPD9oKqVEUo(=WkRae|?h`Q^NU`O8C7ATtlrMEC$J*aE{*b8@=N{1M}!Dvtdfr zKi8cND=h1mR;w10z9`310XGzm)l}Wn^18Gl?q0N?}W>2@N&cy6@=PZno4Q5sU1{ zk%#W;${$hoSZOclJS7=trGp1zp2hH2BkY@8ZpSq-FN9 z;6mLm9kYz}vQUS7U#LFR_o#2SVzNIy2aOzaC+e>5w)DF9rtW-ON9`_TglgF%_WLcVaI(pparuzMCCL#Z|Cm@SXs_1+D zse>)jt4|&Lcwunr;M?~6aO~1{pY~NT4zLra)oqTx6}Gcrj+2Md)a-Vq2}pPu`$6zL z^PjA1)7hJ_m9XOnx>8*MqK$SQw$VPyT!;BUsj{T-iTssMHYo|aEw<$;p`~xLD`AkN zF%^)f9eRg~V82w0_@C3f{8(i}>h~NkmTUF>D$}MmHTr#*prgvI^QX+M4g{UNjV56v zwG7V@r=uFaWiFt7Fs=y%KVBFd0KRPimI7k)d>}UWfVh2mK22%sSpk7}R;Y{q zM*Va0W-}7U(^I4!S;H)AqI3z8Q3z^)H3*5!J?aUPm+Ew4*nAMo+iM6O6kox&}~mzWIqD>;_3S;@G9f=;4M9o`fA@8D@uHifqDwYs@^#z1ZiZY?qLN%A7eX&eQ>*8 zJ7Y6kjGEog{&xq~^s9v#lErGe`~l{x>7r4FM2(wn)pVI3omot?m040O zp^VNLj_5)7ctveC(5)v*{}|m(D0lB-_Q?c0m}23deArO*C6l0N@MeNZ^6Oe z=s=DS(d)}*5pJ03ah#n2G>&6+O?Z8P>`g`zhq7hEskZz&h_nWGr4`@YtITX4-K!{X zjzmFXjp+dIR8VI7$?_;^-Pw6Hw5{D`V8_2eW>#*sBSLKPYI+=(kKu~^3%;98sOVpy z-b$LpzUh^|$<0)hu%K@*L7My{`j#F`It_Xi{-o+s6D-6GK*W-ix# z?0JvjMh?~MurFJ1f9=9-yjZihXzwjn?=6bG#m#$*oAws3+FPvLTP)wJm2c76Tdds+ zz^jV2+mPq0isjpqrY9kqEP4<|DP+~gSLTM;BY?$+d>BbuC7#q|LYNW7=h6xWa{Z=uF? z@^AF#e-aHa=YQ%|6lHga3_5GdpADqxNm%OXY%3oc2&#=WHn|W3j@OEiqn{Z!mFN}0 zr~_ooRLU!DZQ(y8DyzdpOBq=)<}Lhd#_NKT)u-tUTJa+uHUF4+v`s;*pUUatk(~2R z@Wh3`j=4xYDx-_Xf!#;S*o+mepS3t+!5tnp{ZJSj62IY(y+1^mJ5OeLOHN@(m*ahLYkd0;OGI%^Zsy4 zDbhfrt6<3u$F5j(Ykxn6b0MQVgqhE@B-<{jZ%8ue)x0**L)n4i{}+2_i0fKfY-SQJ z$mpk-l>vxD^}ynTzst^;~F35EY|XTuVx;xo%Xm-M+9q5@qRNtxy-p^Lww&q|MPF8wHW@vl zKG`?KkOR~D5jmiw;+9?@geX}6SZup+ueQU>9_uWO4+G(!dx5%G{|gd$fM&Mq;lQHL_JZkdF{s~&q=ri4nE z+_O(p1a6%HwR}vXw}-H!`=@nQ0N1u78LDCN`$$8$oGWCzP-FQ9jV$N7XDhG+Cx9QZ71D~w-g|hlNL>8uTRhokj;rA zsj%CWXy28Qh&jXlUq`o?3Ws_46>>G=aLlr>XP!W;)ui}P@<%xs#Sq$R*|xug^2u%@ z@yZ+F=ZWB>(St0wG@5p3mGxx0R1rqZijc=J)6j8wE=@SGD$O58aZ!X2?o8-8@MXwA z`S0m!ks{ymXV1Rxn_qt9eeZjtT@$wB0N(r@{?1xxy%shX)#g^Pu8=~vqHQZ2>bjX7 zcHwvyE@LYDj1(kNIf2!Cr=;R4pZE=_Q*yE2`ugk#q$N#vI7&9|i zar@g_X^LwnbauV4*9qS4v$wNKyw_fJbHY93!_=b7653~25n{;_pxC(#54^Pe+wN2+ z9|x9zM1~K8SU19KMw1)vp@y|U4>955`Bb}%>iAmotG^47-vxGxE!mq$rjOh8Pu*H8 zPPKk*^?q&Ea3f5tKSB)$DGf{O`bfft_X8Aq!H}fRfF#9vQisZZT9*q;+&=55v@V06 zvd?Br>-U<`QAGeg*sNErlj>^n!q=Vy1vJU~X4>)wgwx5v_BA9n6tO9z10=?^(95RP zAbz(?QzlTU%QE3ot!$nT91wrjhol7X?6q*R2;zlsE;Z~+z{LQG63Y<-wn@S6_s=M{ zkj{{|?l%Eu!wqSc0A4Bq)VRKlbaBBtp4T2jfewln0z40~xuT4SOR#0y-GvMAxmi$Q z$us#SW?W*p7mo8%U|koD^Psv4H!XqIrMc;E|G39Z(5{ZDT!WqNd4-*#w7OyZzR<_- zc8KGe=-vJbdS5Df|MXIid%46lRT2VcSN)v&86SsGgEdO`;kizL^YIOu?8j7Dq9 z0LB}sS*Ka=m1>r&bkfSCx_uHO=_2*i)b=qpg+ISC9g*gKMknvqsf_%PwZ$^2;7cj` zXlGoiC+af|H}Gqgi$|@CCC3aaZjtE@o8$AtGK(y*r!~zYA{~_lsI9h}Zcn2Iw+}RA zACUKfEz@I8TV^X}nbM;@4TF@evX#;8X^p;pfZENTW@WrG*#+1tE1LVl+@}-#9hzap z&o5Om1`wyOsLR8=%0h|7-5i0;x}z+INS^I9=q2~1sWh8jn1I({3gWeGuX(6gk;?9= z;qHhTv2+g7PX4m2?wu@^3rYVUMgFA(b~D_f0}aiviRSTc#$>rM!MjkGa|+1{R;Y~# z4AdB7n&FMS@i=dR)<&`LTYiqzu^bw3JC6Q7r8#IGmtr+J6dKuSV-ays( z1IkWX*N(fA@eE=8Hw;b$N!*Q5MOFdFO>o3&|0#ww?B@_ju#hCJaPcWo-Bt~m;GoS` zINMKag;V~a^UvI6c`FZ2_;04=7K?%Q*$Hr6?Q+w-2Y>{Uqzj#B$7hpPqH@r|IH21X zX&T!G$ma!%pKJ$1j(04%wr$H9D8sv1;f3^~F`8vs{5By#|1aLo{4bixkBzzq`%h}U}iy*dZGO^;=UiLxge23|JS zh$~nx;;I;;pnd@*0%jAC8Chw=f}hA1S(X-^b8W|8d;i)@vZ7)gM1zpwbZL}Q4&e=e zR+1>g*axlbh)kOp;TkgrAND~g2nH4FBMWZxudO_AZHM7)`{4?1sc#~~Cfjh(RKW-L zR&FZ5gTey9fB1VK2UHI>4v6pJUB>)H!@>e^!fmEILX$;nV{(UD#m=Wa?;&JX|KQM& z9~_c{r$%PP8UK4^=NIRJp71=w=)BA~a$Y0UkU&xGw0p~JcR9N)0efDtoDG)4*r@hQ z?F5+f$?bb!8=Qbm3Q>7VezpoU*oG5+BVV86B#x;zBb!*RZY+o04W@;%`6Y)LX|NvF z-br)yvN?8i%wr1UDanm+?n5Qa4VwjWj{Aw?=n`mA+jNu(02jCf32jb#G{PvUPs1m> zBN5DD%-oXJa(2TG?ojvgm;>f;a4$Xchf@ZAUhMYSh{8b;O>KG%KMX-O!nemTc7`7c z?^OC6(_=?eXmkmEYD~!G_Rv%dm-ZD-56Zx6lp1N2@pMXF!~~djan>E2x2z!YQ`5%a zq@mW}0p?Gf;;?omJ}-*DhC+4TyqKGLmD6Zu-Wt_*Qd1UD8Bj;buMeBYT|1&G2}2k6 zi4+C<$6lfdN4A(ngghkhk!Qr@Eg2nLkS?;-xpYVpgY$5lh9=lTg7ne3WXdDHF2yhk z6S0^{8EpVHNX=^W>{e-|bw^_11{s{yzaVQQ!CUtXBS>{_Sc1c11Wr#%OR4Vns4GbF`f^_j0cAYJ|Vhr zvT{E@A`FggY)86t>f6q6Rl;H93OndTFEa(O7JeRA8MaYXv+ahk38pxuxXl#`luR0U zhes4+)4WgQ=i*@u`0a5{E`Y#raKZp-3of;edk$JMoM;;?#KchjX1lb!Ma2McMUg}4 z1YKi>q++2KW&fe@Vto&SD;&hwZCgO)kG^RFH1I{05iDvfMTWVKel5;-=$HgrgCYZn zVY?=_>hMAMW8G?JBnKTFoMz`8w&A;|kaN_Pq?io-sS_%PK@)s8V!z~UVu=L~K1K)V z2r|>!>37@F>Efb?x(Z|?@OTY5O2jnwM@QL%3XMIim}(^+*0Bd9Jd79ZhkB^sz$?q6 zqW+eVdM~ICIHAYX!w+&OppZrg8Kn^tO1d0&SEGm{jn^myKF4-9`YOBIh3+vRzFbH< z+6gz;rut|$R0BwmOKtj7A(mSrKEYteECo?CY|{%&&^DW7oUx?)99^6pJh}>Y z$dsXF09Ch`njC6A%x^SiVTye-9Lc6)?9_<$hv~H#5(si#B+3e-NlsM_5|!RmdQ<6w z0Z5Q3ylz61V+29Vv49uno$(U?ak& zXn}zv)ID`D%NrHy=pR@nqGv!L&O-M5wvR~!3%(pDY@r^bP~g!5*j+|SbcRffqe|^Q zMv4PPt2D+Rr+2hjwyzKw8k|!-z_mO&+xw~^g2M4L5p(+Be@A-X=A#>-YRnqMTEhwz z$IB6kcA za*BaF;o8~mXi@tf<6$3EVRs*%28j}jy6dY{5}xn1qVWSV_*?aBz-pn;Vp1~-*6cj-M_-&M ztRn`7@|R#BCne&w+e^(l7hh2eg5Ij>?Ye_;V#b*)=vIxI(}IX3tU+-$?tuW!BhO(t z?;?AWnwjYU#suJI|J+6wBx`gduI;umc}Ux+qRfF^K4xqXR0H{D9F23T(Y+N03+0giGseWvN=1tX z?-+1DEGJ3DeH+?|Anstdkq3!nZ!s$UXsBqt8I6J8vV9yNe27mi=ob%5M9LRl*@al8Qkq%9IkIfn(}`ou~qkz$6SqIAJv7NXNwW0#~%?Lr;JY z5nUB6LR1H7br($(iBBU`AfDxQ75hc=zkzNjw?Fe0k9FXLzPL@3dz`XB|57hc(j zdf5ntt1M-A7HSB9PshYjRZ$^5kphCwdr+n{(~LxLLZmCQwjMNeSUvuDfD?^IyQz`*ro=U!xB2jRzLn5Q7B58Pv)}-@-m}Zd)Fh<-?$+h8SPQGPq^<1>H~?1UqljBJtj&~Sz8+v#jIWJx(0(t!WpX`izi+&g zf-J@}5pq$=;RhOi*zC@A-8G{&Wv9eq01<3UCczbW@twxW>r{raI|xRmmI$J~qv3wG z@RvgJ07<|B9zP$uc>obc&jGpDUkwvlPQSkm?{DJ<`pb%Ju)pX$LTvvZL%Kl{xvqOt zG^fM^Q(3@xI5iVf57FQkDLbneTYv(Kwzi%Eex-3-; zGZB#~LxV93--OtyYNzRKh)f>$21MZ48poaz?qfzC&66zEs$5ptKY#YuK4?dS?d!_3 zpZ^q*JkipSlCjSAW87V@i;%oV#lELKs$!j0!QT<`Cq}~IKP-*K@&!HciLaNRSjm!3 z&e(I*r2W|;+*mNKv_F;WMHID|hOuHp6Sw0MQ7xDgj^f?>@qwIFka577e1b03IjM<3pAc9I zP9rb@w;tYY_YQmQz_Uu8nPor9-u;xC=Eo9G?>9W%8xNrZ?Ld);A1i`UenAn$3$AJR zbtZSDot2oqdo9IIS~2hpK6*bz2+N}JC=xs2tU9ThOzN`x^<~P8W*R23_V3m;g&lxfi3$6Jh1KETU4n%XQ^pBv`pRY89V49v5Mh|ghnr+XxdMA z_}HNJ%2=AWpHPrj;jZP((UA1Rn{R%XW&TWiQzc%VlW+)Mx)XdhJxA0bw8i2C2l@%&3HTWug+H#uTeZWxBIflkB34Nd-n)m{B~(jGM7Vi4o6e zQ}On5(do1neFj;XBs|}tTjRiCOWRe9ycQ)x?N1PuOcrx{v}LRh)AzGWjv5I&B(NMs zC%0s1xm4DfEb4l2xLy2J@PNG(xw|z3Gbw+Vm?_AQ*^nLqAZBw(0Ja;E@M@`)9exjq zP$*U5=m$$x0jyvfZ~y#Cgo43_?QN)ic7?%Sj&w+dRZ-+08``vevFgT@B3Cx;6>#=K zCGEgUE|CO!4R2N9pO3`$L3z+wnV1nCF%BLq>|iX^c{LV?Q@K{ZZ)G;>*Ds#wE8$`a z2!x&eM1qRhh!d3YLoU6faLep3-=yxW)wBtQ<@K$FQx$^+i@?r^frjWo;Z5+~(&#X% zQhTF`#aoy(Q!-7pyO?nc5XC!6Oxph28UY$aRQ!KPsg16XB0zWt0{6Msx&OB8@p_q* z8D2Rwn6~_BwBL^@$5xyoH2)Fk&!LB_y&6?w>yXxu^EtaBUi~;#&`V=wuWeoxDs^pUU~A9V$nyZfGZFJ&Kx^<`#QEt4zk9 zol%HxDMT_=WMNKRgsG%I{{&rHCll7d9L3B4>yFYc{T0AjF>15aJ2+4B#btm%q&BA$ zJZwNQ2!M>>RbD2FhQ@M?jThvCe$knBp4_;ESir&}Y48q7gC^cbA{uL>DW5)9cT}%gMqJS3 z_lVL?yc^ALWjOs~Wh7O`oSPjjvn-`%qT;C)Qr`aAOJe10rT* z^;$MAOf9y7%&d_X@?XTPM9t$Obqby|mQ2rV3J&M0Dpa#8M`5r4^v z#yc*gcrOu6q-hwlaIAN0Os3Fmq#Wg9MV+gKZjB5~)Rrj>H`hoo-f>Y5jx#O|Oful+ zIPNq{k3>tL4I-{}VrNVTS-hw$yWPd(w0_*s%`GA>A=J?v9yeOw&;eQ%q^k&GazkDB zh}Ma1AlM+wNYz!*yMf$GfE%n=kt2{G8e54nvHS*5E3I0huZ%DD!WWtGv~L+M{5quj z`mq0FknZ_43Qq5nNVYv-AEQPae!$4z!nt#LoHig_N33jp%F4H$JpxF9z4Zgnj|7%!7HTdy^{l}W;ZP(EE$+CRIDHjroB{bN-SfE$q(KiGFI zlU0T*Y5}o=&_h5qfPoo}{>#=1^~GeZyV2q;jm;5F$Lo>CjH1Sk}{9XQU@|@KHh9|s3ZY6$BL4@1@_HvH(M8@Vgf`1 z#~9qn(mchGoQ5aA#ZXU&lm8HPH&tP^aj}VEJbXhs+5lshI z)6VofG%33Qqs&aTTD*|7!GQG|)-9}IK7h(T?cGUCg2gJNrW6ts$leVmvD-3om?p^n zkByrFw4gc|H80vv2syRb^~7|Zl6((IQklyI3lFKnMUFql5mG}poG!)KrB#&{>T&u* z={x1cyii5<@qKB3rSAjE?C1(8Ag@$w^~O+hxHU35)*fHBd}0MO_gxA5kn|a4^InK| z)K>VC-K24mP`Lah#O{xec0_F$s9%GOHg)b*l>O&v_Oi;ZrR=}J9`bV9oucgeyz#Qi zuA%Ja*k58jyrllFrtCk9{e7ur36zrF8vFZF%gTgQ_V=ZhT}j#3(yq1vI1a1+j(zOA zWx~0E0Tyw*4n%9Bh=toXS{7YhG6h*ahrc-==4{^5(<8-OVE6|;{7#Gs|FDMiQgmsJvmoxN7nS0mFPOz+}!Y0rSE)4j7@fQ4MaeMYq*% zpDhQN-wSF7xr zaL7>V!~*feA!EK*Lx@3Bn+j+MF^GXk(>-Tc^aZCBnkp;%P+>We>_<`CGwmZIZg|`( z3kPbzZG^Uy5jq_Bk0<%_u9IeVWQxwDcxv%x1cs6G-Lw}6QZ0xkSg-K6C}~;bJ=q@v zG#ZpZjRA;#wy79;==CMeCAs+tT5bP<#RnHK!wY4*K;(3OlbitmTPtPSE)fD6oVj4n zjEOR$-|NLsOa>u-*uW322|B;ga6vNMx0we4dn8r?lXh6CC8nYOCyhHgRrSUl zL{ec7aO*sl7G9J0*el1b36Y)(UrYTnm6OQzjYit=|D+qp=+1rUsWy$wW1E_fr8|;; z#h004=_wZl+ux_OEaB@o7w^e9nupJwdJZbn0Rt$6CCb}743n(;@bzG6&ri{((xu91 z*^`RN23yKNg|}tK2&pvB+s-Ymlu0Ot8^M8o`DKf~L7Zn7*_@k>y}y}eqbgdP0}M8wam zVI+`EMi!?hxWL=DoC=azE@S*p6^A{J1Y25mSyR;r2~qMtKsFp)0+%x0-o^vTB|(8S z5GTRw(N2-J-#aeBfsJc{;6SDzH`wrsjj(TMji6@QsLA#Sht1Uj4fWl{6G96W84DPd~_7xFUWH3*OckZo)%1RUEAXlS;752eQW z%a{3#&`*wOsbYIt!U>SSL8#f5Y~ukNeK!xVXS14k8WcRWj5N4|MfXclA~bTQ{SW`< zs%-q>T;3?hs;vFiB^i8b(`R>LNBv*fg3pdCjujI-sz20Wj~WSuCML0i^)(Nt5S83x z7p~xDjg@;DVv#d6#l#Z`k&sX-d+QWyz!WdziYj0H&$eW=O7s{jnsjKq@_m%ezi;n| zE-x_$Ev*$9kclT`LR(l(zY>!e=G@lYHNp~wO zOIc-UC9T|;5-qn`|FtS*c_?eQR+C!1HnqWL*I-{^V1UZI-)*%&z&C9$cks|*hCH0b zY^qy+tOc&l<95pUN*f6lp^R=wzr)PrQKVGv z1Fy`qe-WkLSiJp(rjnrPp<*1$2lGw|<7Vn*qZ=|kmUi*FmfFL|aqT8Tcqh1tQr{<2 zG^|`RRTq!UUU|QkJU?uzf@lxcNK(8pO4h)jHjg(sm}7*=vobO)myt3j0^{mAo0_-E zoF%{8lZkg;op!fJnbRCvkqk@b%(Nej0R>D@d-&y3SW|8er+yPti;Ti?BB+5oq=%>g z=2GmW1lLm+oTWq%X*`AEE|NHkZ3>_MWEd_v@OS7m-Eic;Vga!#<<*HSM8nq>8(SM# zvBJ5Zz-i}I;ljViB6&o&H06Zl(M5&|lt=+(MRbrP>m;ViBo1C>Q({35G4QTWCKS{O z47M33WU-<|^HuQ;S{J)ML9Adx=&p=%ex>BRh71Y0Vn_Z%e2(PGU95OQ$xM~nPm#oB zC1c}bPq0ozP#Z~wiDe1^mt{`Y-B-^k!*pSXmvX=V)(&9Q+m}}B2lFH->W1@lM@`7i z!%a+^Jv^Yuj?l7`Z@wwL>kTQ};Ud-T=(7UD<$WAC;sjY82OwNLX8I-9L$v0wQfdF{ zI0KuLuRl8#O|7(YR6hyhuO+^fJfSyq`7W#j5O?OvY+G{O-M(MWB;Kh&Xua!aV3 zaviE`P%a9!LB;brlshly%cI?6YhRi) zOyLr2GMdvILuJkgIwy%%+m9M^!7da=rH8kbPadRXl68afloAAIiPbaCD|2eWV`7VT zo!z{_@212g>uBH>Z*ep0W-F_rplqqgQ5;_sKxUIK*DZh9-5!^CcB#Vsq;ow)8V!GkQzh*v=r2pt-mSM0rUXt>}>?_q>|3a#b1q`4h zcbS*)IY;}qy_htkgHq(%r*g?V)9Dj0=6^NjjcyjW^hpby6}mWTYP89EofW$;)d#be z??E;cc74>+a&~=2lJRtWyfpip^|58^H*eU6s%oZN8vDS-zleZ%(h)fb#UE5aXouE~~j@NA^SA{0Y?3>i18LR))Z| z4U}yx8T*;?OL?_mbR-|%l=zNxNY%=M(*D*efdF5Ib^K;L4qb3lu;{^zaWS{8d2Q!X zEA5z7)gbx=6FtzR?N!*Za_@_>EOfKCZWsz6w%kde1qn2hG;8LSX0uu|6k88=jtIrQ zkp#t}T=i(#%pZfH{B#G%TrNN?|S$_%>{@ zavkz*e?x}RVy69{1Rct?y-c$*F}aGuPAPR+aTs@)zb5syyMA=0q$|2)STgvGnjX@$WtVZ?gCvTU5+m_K_EIdnT&iBr{6R+W_peAT7hFC&UC zG>z)<6%jQ#5)yhUtC9BK$voWBewW^V0|~e>*<3b!>rDGUxBbV>R;%q|#e51)^Q{Tn zQPS|ZFgCW^IU@SCA=RLmARLz2R^SzK{OJ%KzHg0R#O|Unom=a=d&ruhR#q|GN};lKwGklTSs*GGrz?v zqHRfzp)_|+IN_w>nI0#Rjua%FmouJmvMuvx_e_;0+pffh-8*naxwTSZI;4P&A+Kk=Zm?e8sL`wAy_tzfiX1)_zDv zcsFHd$+5I~NHaMORP8f%Y$oa(3o#Fg;7C>?9zp7Jz0?+3uu1ubT3{W24UR(}E7x30 zbDSmuu^zO=eoB-CHfv}Ntz=nR3&YLuH&@2BgMLVGl)%lHMF0T2vWOT^PG4C>KoKUE zURgxEvWU3Wl40?0uPh=E!vDQ2A~cP$HRZDu3Kt6qTVnXi<>jm&2G$w3X=0A+D6>Xf zXBo9s`FD<>X>m)1G)7yO_!7n3=l;7{kASIfG_R_C8&aiqN866Qm5Xjo=1Wie)875X z_ACbDXI3q(c>DOp1!Y{~%iLAA=A{6a3SLpWEq;N|TN;yB)NV6Ay`pyeGDAzV0mXhv zwOe+SMrlV`+N1{e!Ee}VZdmF5(5i|Kphge-lm8SR_EOokGPtgfy&N8KF2avUr*yXS zwKcj3hRe^gp%7i{ZDTUg&Pt_q6CzA5_AjHTyz}K@|1yfoIbR#lFQce@^EW4{6~$Nm zrSw&<`EsvUt1q#rJoDvU|1yfo-dXnbCAKQNqkQYf0T?$i^>rNI`WqTp85-qUj~`iC zcG(RUmC|4f%y1pgdUpEcQ5W6lw2{#Fte54y=U->KhkMp5eV|NO;8`E7m*@@#gIqw( z0ox}*?FHg{Vy=a98%3zQD}gBd4r?Hlpgi$(h+It z2BBcBeO)MUs9&;2*M!3KAybqf83}DD2rmWowv*B(;NJo1AoJj!(m9ncS}NEQcYpdf zk+JE1<957}t$?23T-Z7r-RcXjnmDhUG1FTY7kKM((p~Jlj$<7(?9S^I9cXl#29$zi zz}(CuI4|aLBH+ka84hhMNy(KU95!^~Rye_Ane0zVvCKutt z%*{Gz4@S(X9Y`oT;M881Q@h~%oVlzIIJL7mK-K}L_U*HL_k7w3t}1u&1b;%hPjJ3P zKJDg%F5FnY_h?Y$Id7irv1oY)`O&@ydpv`TrJo%#ZO)rlEZ*q(y?VXAOMB^EZ$-`T zo}GO8vE$$Zv>Y~FpZpuW5nNBu+z3SYY+mCUTG69ezE|jmI!^`ly{DaK%AIActKBuah`R>U}*2`#*r2VT?p1aphtmQAU ze`hk~o1;11n@drwfnYz~v?Dni>C$Lc$!QEbBYv6eiiY>1S%jtnFr|LF2Exd66k*|j z&132l|Ni6>-sU*a%c4)cblt@=lIC~K!M%5|#Uez?V@j~yMym`4`>EmG0%W*tPU#w- zUU_$rzfE%qw<6mma=dKsXnzgwC$FKG-95m$$^?>_&hC(tI#GDCa7e=v4e&jlHKHb- z1;@}iBF~tql;QBtx!J-?s+xOr^qI^!@2eJ&9FCm$x{l=NWDL08S{}zhpqQV(Z8(=w zm%_Mj%AvvbgtSpH;0Xhk)RJ~nWJOmcy5LLdqMS zIU7Yt{_-|g36BuRfTO&o@*7kNL>?zCV9eK7X5ZxjV-6D$F8ax5NKSJo^p$19Xok6j z7!VrGh6J)^7Db~tka7Ot+&5HR5LoRBl46Z)ExKSurZ47@Gybrm9)ep+3-AQo)J8Q-TEYg}Qh4F>rcLqO>LHy7r~hbJp%gnt!+ z5qsEUYsWlxw*z<1o-j=y4)Yyz{CAS~Y2NWjEWmD!n-}iajG`mr)Qr38MI6TD$#p?b zj&+=m-{*4oO5DJO(^N|gmV|aMt>Sz>EpOJJTf0?@>42L&KYbZ}_Bu6E&#}54H)!!X z$9y)$^FVE;qku*isxzHe@jOwpEJTV3mpM6b6VLNxQUA~IEO?&c+2MJSDn|9qv&-{x zt^hvdXBNFBR}V9KjN_;G&l%{<@lf7)E8zu|@4>CFTxxC>V-f!Pec7c!Yg^md8N z>=pSrfw#J2^gYlCogo&$E%EdVS&pSRPV(fK(>gtm5>QUhBPp{w&%ov6^JEiJxK#Fj~UEI zB?1~yJQR*kn9*&db))WOqHf&_adYRjB69JD$UFu`(5+Cgx^F>uUq`szI%l*j2^(K` z1638{o&_bMyHVe(i}5lKBhmd%rL{c|TWZ}+`kpM>WgfQQyPK8P^gL|rb-zpBt2l5I z+qz8JKT}$TlUp<0f3DY+#ftWS7&A#EM(nO3(HOCKt?iSUB*vL-nZjNu{ByT>9nha& zQH)Z}tuE9Nci@cg+xp+Ahm~-u@AJ#ow3EU)#+t9fzs~sAX2}33%)dNfMD~n-RlL^Y z$PzM{3qAA=P=+XBPw;dK!-){3&!VvI3n%)#xv-wA&+WgKL+?=l<~k{-W8zwc&7$a_ zIMBiYj(;PVi39h2X*jd(2&PPeX<4yMf=Mb*hF=$P`{@h(K^b1+-u};Vc{eW07H76! z8tJJ@%F^b7mHdgCqyjim`sNru}nFZ+SRblWXOPdZ|XhSDY2B zcW>R2pQshLa#TpU_?^(uJ&gyiW~1n1%x`)4G#qEBfFPWq!)Z&R6df|I@LIRzCy~TR z4`%1-@~3c`uk}%jvF48=Bu`4-65Zpxo;bFi)01AFtrikZaCyn&1u^T6BMXal^ia>0 z90Aai9v{{7)tnm9a}_5)^lWqTL(kW6T0>8w6CTo&z=#L+{0REe&n% z*eqXbpJUyMJ{xLfTKjj0!mWfv{m}kDL{X7b0`s2nu1!GOXEnMu$hUQCHi(D-1;n&$ zWyl)TcUz-!lny(KShp5%uUrv^$f<)|%;fF>%~TFVha}cDtN;2ZH0mI3S#m z)`3?eI)LtqQ+sObO+09U?)Y-tB*9j}dQytnCXwqXV4>4t<{R`A9mGF3+u?d4le@p~w!N}-5(va>ZZ2y(H zRf^lByjm|ggCyEZ?V=+q=wY#P^-_&Np^S<2!8nwVkjMMWrJCMW!lRa`A8j9eS=ErT z!6<~Zzlp&q4~K^ol<~-_Y|_u7o+18QjEwGN9fwfhDg2+0W6fuvs(GZs2yzPoR1*U{ zeLw6oiY#WQ5SR&;%<}!gAVA?l#3w(K*U~x@13{ zEK9kol;&JOZg)8XDDKPH1*Dw0HuKyd+ESiO{6|8$J``o~P6}EMCVib~zz1ImYfI%q zHUvs(9o2o0A5rk z0HsnCrUekQ+O^vH5aW|OAL5Go2b#q%jg?TN{`J5<0D&(7 z_F>%{Hwd@;*wUzb_YPtj7qJC!Ut9<`e!^uIsyI6j?$h(&W`#Ha_nCQcABp9JZj|kX zaKl3&{9@LPF$wAK3l?sRplMJP3>YrEv)cI;=HaO`zyp~Nn2RMd6;&&}!VJaN0n0ehg)1@i;uT7%3;4r3k-10fp@sQR#QbQ#mf!t^ ztrxmXMAU~$k!e-fm1Mt!rRx2%j2<;=e*vXgg5Ek9j$0Z^WVhK%JHct4ESxdqc&?K< z*8{0z{j>rj_zB5TEQD7$U3fUYpQvrgo{I0MISF`-9LjT!_Y+!0;ycM-mW5?|`t=gO zo|al{u?S(y$d07IKKzB``$j^z3%;7eLGdtcA<)gQ-4sH6;yXW^fZ zGIMFNyq5>EeUb-S1Sk;9C-N=XGrZY519mpPGmzQk_ zIB30}PEJ%_pS(9ONR=2poU2dLsFs{)K9Z3xrAcbRk~w~Eh;-mIRTsgaYt|$+jU@>$ z@SCWOV4x$`kX5JK)U?_PCy2bQ-9Hx6wv+c5<_;PE_hSj6h|voB0~pJ~qgXt!W`{YR z3VO!s1q%b$%<%#l8v1O5s;lVyfXNDo#OQce_cz>;$?Gzr*pix18@7IV=UZ}A0|+FK}7SrlCxs% zmi(M>Gqoi@qvskJNTlbo$7Kjb9xb6T+2fOXH<#X%NrM@bJ?K^i2BY45Z&TqN-ASKP zSh(;j6FC!+fW&0fn+&zcVa*z6i@KD;Tv}vI&>3&0y>eFM>q?yHj)@*~?OoXXanwKE z6v)wi|16b)NBk3w!0J83r(_(b3w`~LiIDX;Pdc2?Cv&Zvb@mx(wC``my*KL1!kU;vVRwb`U{FHRyvb-J=gWM_+;qa$ejyrTvpS zLn#RZS0-kVqQ`v+g>r6#i@jd-3kk&)wV7cMLOt;VnXk_gKh&aq9La0FYMhv6d)YFr zq=}axE&;KnaOJ82i|`;m8kEcuD_4kb4#0M*f~Wa-Ia--HZ&fRX(zI_A(kVUEwjM^= z^C#e{VUyQFix+4D*54el$SVu}M=cfqfGzpK_=*+rK!ea5&fQlOzeM5`9+lJ*`<`|Y z%l!)?$P-!n;|g`mi$aE`_C(EhbFwVBGAFa*N_Y^1wB>Ig2}1eO7uH&;J--ho>QWH(lXJu@G&&o3cJ}X%L0pERAzKqMdbn_ zKaQ7CR4yR$Sy9pG0&=5$6`JI;@-m9b14KS6FQceDK+3+pM1bY$A)gg-RrFa|zR+jo zY6B||4f(8yQDfPO1wJcRD=L>#&6`@;_oG2J;fA^S(I9WwXT=XQTQo>9)ir!p>{OdA zzzqiNGv27r%2m3fGjrx0qN?Q`qA`p$nmRnF@E`aUb1 z(}si=`>f>KWe>XAKWWC3W^Tf+)&)Z{^UC@}Rq|meY|82W|IdeII+~K%#%+{-07k8m z{+IA!;c821JpWi978&;Dz+^yX$)5$RS~%~X^Gcav2N~Aq2h(mF$Cdp1r*4yXi;SjM zbz1rH71wrJ`SBH6Eur|aYP`PF%JHi>t$f{B8KPU#X@v=eZsD|&SIui>>~0vKisuTU zX2KVK>g%k@+;K%2C9|*Zxbi|TOrpEr&9oIJ5oa(7Tw=vgg?S`0ehd9hgb(nwy))`g zE?D0`{Wvf*+-Joc>B_SICvzaieHd208e?`v+0iG-T=C4&`Ha?RC}!48aKt$3jPF3z zz&*a~q4{l?EX7c*!A6Dj+ak&+j00k-bTwfERAzpF%5jh(gh_1Od_t%@LS9B^Ox#2a zGj2-$#T$|ovAax{8?p7P&?!Ba5o9qobhkkxpe3=kM5S3sq0jQ@!J=zD(ay66%7QGf z;;!O1+K3jf=Mz(kMSv@(2K81&7yGOX<`7tuEG>IJD{!f=jg3pS(O^~xnM+Ve^@Yz0 zb{F}quw0kV3bN4$t8`d#^X?*tm8$?rozY?Cu~pd`cUYMl88oKb)nAK6r_00@1bR_K zLR0r;#gV{YFq>WwfY|i-`vP7kr++MZXn`%6*%>v%7L*t57PcfU=M9^+r1>x%ToNJ} z=?i)?d7O{m=j_Q8V$q8)wlX#vc7l7mK28hfHd35IxEg4SXC=Gx+)xqDK8|Boj9^SC zEQLS`XIRK+TXTJqnDd^3`gybK380(&j#^?2PV)?ho9feP;>6sekv!a_ZaZbe$B`y; zZ?A*W6y(h5KQI|m?kLyz9?n>VVI!C`3xIvCp?UmK_)DT^Ajx{m){Y2VJHysC+d{Pc z3n)+4cvI(a<#UQ5mA}WDzO+V9u??suh7WLIpuv2^plC8J^E}biCK64l)H6V3_Xps* zq1$Y=4;--8&PSED!8t08D-sL-X;9l`^9ZwaOQBfgrr-z$NiHbFwFpUN_dwW5 z_r)3zD_=Tk`aIjoQbO385lZ#S=1d{;MbCAXEHcK5@J{N9B63(y29qJM;YZUjgBRnV zS6S3Rqh4WB;nFN)|2HSjwe0>d-&(%B2VYaMM^VU6ZMqCUXLDq5&By-Elv{c+@!T z)FXGOhJ>Cwt~P0VzPJ;`@|bUeAtWqmZyc#s`HY1f8To*df=&mi+x-LWp*M%_L#GL>fpX~g1Nz-`A-xa&+AII$khbfsyy;A~*Dz52N%MDw9!o9g zjN&U$_gStA*AW8-YG6+0`6CT3ua*9y9@8IYAm0x}JE)XUqU2Qlkb`$eAb!r2C`3H) zo9LyOM6d1@w|UDXN--?srBSd6TdayEY_;YFHnvw*#;aO<+9^Xj0<6(%u1N-0923Wy zoiw|kUkbR>&z1UJl^!U`eWb6z1y-9`RmBF>b-IQBpa}3q`_-?9LG0wp+Z!J8;&*F1 zHn`zF57{z<=_)>M)2bEtp5ML)ilxVNv&HKfy)p@3q-ObDTu=)=9JwNhK%&pbn&z_1 z&lk;08M)X4j|wDA`R#bqjlDQP8C31)>8u~&|EBH(G^Z%5LtsZwXWiu`GHLdN0`rA@ zopBXjFb6A85pH|Siczu5vf&bsB1Od?KZWmf*bvTeNtZ>*GhCk$uB%dytJ0Z4s%(xXxRm~xe3q0$EwRFytk1RV{R-dG|!bBi+7L_2w8AD|#< z`KHPJ7M9f&;if%dLUVQ+C$_l}8PWe{McRD$7Qb4l!X-?0AzLm_DEX6?nse9Gnu;cr zt^9!IQZRrhJdG}}Y}UKUq-jrOpI{wt?26)WxYpm=a#>cblAf65*fisJ{4(`u$ZL#i zG64@<-$`FN#iD)GiE%~9L>`zXWBYumT+ULQ3DXT|9C=8-m+ZN&Jw~ozqnR;3Ds(wc z2y}$OoA=1mF8rWwZyyS^eMQsn%gM@|895R4wS7{r^6;SUcjJ6eXpx{QbIUjsmhHnh zdnMVUB}(2a!(E6ZpW>o-*>x&29FPF^oV=e-_Uxp-kvsS5CbN3L*|6*p#H}lVdC)cC z@P6KTa8I-SbTE|y0k+sdYk#^K8(?_mXX<5;9a%5{!Pmb1?PO2*{bV-$FS}`2;x?zQ zSRY$_)EBc$5TxNbvaZ?9%WovQA#%;`y}WN$fK8qob=m!1rM!;I=Y)-I?t3f^e5*o| zLuM7D2yHhrmiHlQc-*g%m5D<4{RO|zk>u_8eDS!WJJkNeaT_!+-KE#l*_-5!XhnwF zpIfDr?Wp6*+@TH5D9nUyGLXvphtZCGqC31>^ZzoE@&-;>I|_q#mPLeBi94n^xS7MG zp&FVzNHDx7FT-2p5VpTKEG7vILmVtST0=c|v0uy48WtajnxZSebCw=t>JU0uH0|4N z-SjO&YoVFj)@A?>rG`&Fd>5BfP&x}0yu!6=Nr*DcFMs@nU;bci*OX4y7$)yz{Iy-mcm#Ls7~ z>+&I{c+#n>vsK8A&2?rN@LB8DC2mSNlewJ9t|DiomLg|lPcS)?OU~4mk~1}vGsbtbr?ebxtKiBl72n_>&n6X|A z4P>Mow_KvK;<_-TGaZV7Pq#|urFVnODgox;&4xaNsi(Nd%&>8(rz^T&kd zIN9Z}PofJ(&~;HaKNZqHp>!!u#oMV$(RG(Aqq9ff(bA-%V}g zMZIF=fkw411m%z@OhU6)fs9OyN>$UKcZjdX0N?cVWX#y6g{~EVIt8FA&)6}_udYnT zrT5N__H5Fw&q4s&mmiW6$Qv%4IkK*3sLN^y6xMxJB&GWoaWKOl&+HI@^WcKqYWn zoy6F;P@$1)4fTcuwtW_2FIP~m^7p~cf^x>oKrR7bpc+0K|p+ zq1T+S96}se_zMnXEo{xr0v{MEZDU;ME!!9mU1wr+#@}8Y0<*iA^k^`j@@lU zQwd6G`?Evb9Z$#%(%#vD(2dGM&xUIvPjN&(=b_*ICdaRi0r)+?#D{ zcuW4MJXb-9NYrdHY~2BwXxH$~+yI%vPT+7 zRXWhK$1qo%2UfGk3}f}FmOr7jilHKEHF{q4QR>{7T(X<0dHF_Fy8|1OKdE+_%I}EF zWi&ysH5e>Oy3P>2h(bP(Q&eAu30J_efC>!_TG29$5WW2Ihq;&>cVM%~Af%AAEt$e> z?kI&722>dUU~dR=kbRM#=z~KpUL-$z!nbBTUHgBid;ciAuIkS7{&=tI)$c2*B+HVF z?|TR+ffNf+Y_;v~u2WgaDtLnhk`gncmz=rLj)0|0EY-#2?{vf>coNheD^;0zE?jal^p(yQ#XrthgD0D(}uo)xl389WxFd1?A6># ziX}E3@+PnZNo^4;!=9+1K);8H_Je6h>>DlJZ>6cqjWn|a65royCnRL-r z-bgkGnCys)XUDZnSi5vpJuM~53;UFT(CsZ=(!k4_sbO#emr5O>ETJnw=vl^g8H66Arqb{w-}@UkU2)L zhEw6o_qomGF$rx6-;tb*r6=Ia#s+D?ho($q9Z=8|Cb69f;RIIk;dP7US&iBBsPxLe zyf!PI$aJ0OVZ_viG|MJVcbJtE{)~EFT4FLvCAKJ`m|V}%V_MnDO2Klxhg~R#d>-^) z+LQ9@ozlu^TBhf0?pp==x=dB>a^OaDk)o|S$~3W%=Elny15~& zFFwWbcZA{E~5^@CBI>gY3?k=UbgkOF{2;+kY8be#(jVAh+zgoRxP?K=yRW@KlO}1 zOGPRQ;#7%l{?oX?U>GP>0eVJ+FuNws&f$R6gfg&@RBAxgmr)-r0kJ>@PmkMFmj!1+ zQ=Vf|#pkZ)p_)?^p&JImFc65G04z4$?t_fHcRIq>X$cN>#d@bxI-TJvtL*1V^!Ye_ z5ioi~XOvB6Y^?2jU^YT9==;1oK+gb({G`RQ4hi$f>H~%%=G%I7A2LnZcoE8=w|DxI z(d%~56f#z!2Gwgc&95Os#6rA2ez6FoFM6IuIzntuk%`uNCWD z59@CbfP*{;mEWo%Vi~pu`(cp>RbtT6l(I{ex|9W(bp?C;#twUDM8mS#w6cDt(d?zVLu zRwG8i;wMJI;wMJIFEI)RXDdmR7$6S~m5B>YBL|i(YM+qZT$4n@YTPk@&;S~LmUWRn zJVdB6%FE?UaHsYB(~8j<)M(Z7Pm4--N{W6K%s)*w=AW{ee?|cIz3~i2-?@j+zqkNk ztkIl{gKt68fD_)ahmr5$CMpm!Ylea_p~(X)8?_E|T$69M>%amIX%3ot?Z)?aF6j0C z|8Mph9sbf@TV~a3tpZS=tQvIQS*^0<9b#)8XN#j)K;O6IcWXiq7=8$^_kXMxy86ok zwJeq)C|J5*-K3|6(K#cVe(P<7_h?8qJtGw=vMH2Ye3OkbF-?TT?mq+uOc_+(6xvN= zqPQOnOf8wPkZ@7$1k|NN&!{qrPheAFPQ*IHB{Rrx7Y*j&`}Sj}q{6;!$^Rnveu-b& zqtilNY12+)K1e1YQ_+7P=8^Ch{Pn}Ll3&{(NNPciMKM-5O(xcG$=)X0ZvwkFs8Xtx1jt&K0FXRiN5W*0*&)2!+<6}D`U7U+QitIdD%_qWf$DS)(!53;A;mLx3E@MAmG7rim2XY-#l z8yGi3zyIVD_sfR@FU?z%O{`VgjmjV+ybnmi-)OX~bp?u79t6KZc^P?|6PC|#>5IQeIIeqM!sZxvs?s8{3RyfW;D zZmqzeE6gaz43bSkeO0Y{zKip{m-WE@TVV?%AAMP~J1)%!J)c#I#U&EiyB>P5N`Or`{guy&v zgUw0nJNf$(R#8Y!p5+|9-#4ldy~#i}kYvmzo9gY1X*3BtfGLUinXE7!O@B=Z?0ft( z^Gs~DFMLC-GH!oHea*bTzrVpgE75j^%BV%3C9F%A zk?KTgm!;5Z4G}Hc@k|sO^)Mh8*-%U?!qeu&vEBV^W5W=NryGwt11=@OiSJ@!o`kmz zg(tKZ;^dLUA59kY!^nri3x`UU4uvk9tGK=I5E=@45CN5Nlbx0`JYy>^ zN#(s&{gZ=0>$|m3IV&{tl{Kuz?HHWS%xto|0@9o$O(tuY{?ixWcxpYo@*gspb`Hf&j?;